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