]> git.proxmox.com Git - extjs.git/blob - extjs/modern/modern/src/util/Wrapper.js
bump version to 7.0.0-4
[extjs.git] / extjs / modern / modern / src / util / Wrapper.js
1 /**
2 *
3 */
4 Ext.define('Ext.util.Wrapper', {
5 mixins: ['Ext.mixin.Hookable'],
6
7 constructor: function(elementConfig, wrappedElement) {
8 var element = this.link('element', Ext.Element.create(elementConfig));
9
10 if (wrappedElement) {
11 element.insertBefore(wrappedElement);
12 this.wrap(wrappedElement);
13 }
14 },
15
16 bindSize: function(sizeName) {
17 var wrappedElement = this.wrappedElement,
18 boundMethodName;
19
20 this.boundSizeName = sizeName;
21 this.boundMethodName = boundMethodName = sizeName === 'width' ? 'setWidth' : 'setHeight';
22
23 this.bindHook(wrappedElement, boundMethodName, 'onBoundSizeChange');
24 wrappedElement[boundMethodName].call(
25 wrappedElement, wrappedElement.getStyleValue(sizeName)
26 );
27 },
28
29 onBoundSizeChange: function(size, args) {
30 var element = this.element;
31
32 if (typeof size === 'string' && size.substr(-1) === '%') {
33 args[0] = '100%';
34 }
35 else {
36 size = '';
37 }
38
39 element[this.boundMethodName].call(element, size);
40 },
41
42 wrap: function(wrappedElement) {
43 var element = this.element,
44 innerDom;
45
46 this.wrappedElement = wrappedElement;
47
48 innerDom = element.dom;
49
50 while (innerDom.firstElementChild !== null) {
51 innerDom = innerDom.firstElementChild;
52 }
53
54 innerDom.appendChild(wrappedElement.dom);
55 },
56
57 destroy: function() {
58 var me = this,
59 element = me.element,
60 dom = element.dom,
61 wrappedElement = me.wrappedElement,
62 boundMethodName = me.boundMethodName,
63 parentNode = dom.parentNode,
64 size;
65
66 if (boundMethodName) {
67 me.unbindHook(wrappedElement, boundMethodName, 'onBoundSizeChange');
68 size = element.getStyle(me.boundSizeName);
69
70 if (size) {
71 wrappedElement[boundMethodName].call(wrappedElement, size);
72 }
73 }
74
75 if (parentNode) {
76 if (!wrappedElement.destroyed) {
77 parentNode.replaceChild(dom.firstElementChild, dom);
78 }
79
80 delete me.wrappedElement;
81 }
82
83 me.callParent();
84 }
85 });