]> git.proxmox.com Git - extjs.git/blob - extjs/modern/modern/src/util/Wrapper.js
add extjs 6.0.1 sources
[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(wrappedElement, wrappedElement.getStyleValue(sizeName));
25 },
26
27 onBoundSizeChange: function(size, args) {
28 var element = this.element;
29
30 if (typeof size === 'string' && size.substr(-1) === '%') {
31 args[0] = '100%';
32 }
33 else {
34 size = '';
35 }
36
37 element[this.boundMethodName].call(element, size);
38 },
39
40 wrap: function(wrappedElement) {
41 var element = this.element,
42 innerDom;
43
44 this.wrappedElement = wrappedElement;
45
46 innerDom = element.dom;
47
48 while (innerDom.firstElementChild !== null) {
49 innerDom = innerDom.firstElementChild;
50 }
51
52 innerDom.appendChild(wrappedElement.dom);
53 },
54
55 destroy: function() {
56 var me = this,
57 element = me.element,
58 dom = element.dom,
59 wrappedElement = me.wrappedElement,
60 boundMethodName = me.boundMethodName,
61 parentNode = dom.parentNode,
62 size;
63
64 if (boundMethodName) {
65 me.unbindHook(wrappedElement, boundMethodName, 'onBoundSizeChange');
66 size = element.getStyle(me.boundSizeName);
67
68 if (size) {
69 wrappedElement[boundMethodName].call(wrappedElement, size);
70 }
71 }
72
73 if (parentNode) {
74 if (!wrappedElement.destroyed) {
75 parentNode.replaceChild(dom.firstElementChild, dom);
76 }
77 delete me.wrappedElement;
78 }
79
80 me.callParent();
81 }
82 });