]> git.proxmox.com Git - extjs.git/blob - extjs/classic/classic/src/fx/target/Element.js
import ExtJS 7.0.0 GPL
[extjs.git] / extjs / classic / classic / src / fx / target / Element.js
1 /**
2 * @class Ext.fx.target.Element
3 *
4 * This class represents a animation target for an {@link Ext.dom.Element}. In general this class
5 * will not be created directly, the {@link Ext.dom.Element} will be passed to the animation and
6 * and the appropriate target will be created.
7 */
8 Ext.define('Ext.fx.target.Element', {
9 extend: 'Ext.fx.target.Target',
10
11 type: 'element',
12
13 constructor: function(target) {
14 this.callParent([target]);
15
16 // Allow simple local left/top style setting for top level absolute positioned elements.
17 this.isAbsoluteOnPage = this.target.dom.parentNode === document.body &&
18 this.target.isStyle('position', 'absolute');
19 },
20
21 getElVal: function(el, attr, val) {
22 if (val === undefined) {
23 if (attr === 'x') {
24 val = el.getX();
25 }
26 else if (attr === 'y') {
27 val = el.getY();
28 }
29 else if (attr === 'scrollTop') {
30 val = el.getScroll().top;
31 }
32 else if (attr === 'scrollLeft') {
33 val = el.getScroll().left;
34 }
35 else if (attr === 'height') {
36 val = el.getHeight();
37 }
38 else if (attr === 'width') {
39 val = el.getWidth();
40 }
41 else {
42 val = el.getStyle(attr);
43 }
44 }
45
46 return val;
47 },
48
49 getAttr: function(attr, val) {
50 var el = this.target;
51
52 return [[ el, this.getElVal(el, attr, val)]];
53 },
54
55 setAttr: function(targetData) {
56 var ln = targetData.length,
57 attrs, attr, o, i, j, ln2;
58
59 for (i = 0; i < ln; i++) {
60 attrs = targetData[i].attrs;
61
62 for (attr in attrs) {
63 if (attrs.hasOwnProperty(attr)) {
64 ln2 = attrs[attr].length;
65
66 for (j = 0; j < ln2; j++) {
67 o = attrs[attr][j];
68 this.setElVal(o[0], attr, o[1]);
69 }
70 }
71 }
72 }
73 },
74
75 setElVal: function(element, attr, value) {
76 if (attr === 'x') {
77 if (this.isAbsoluteOnPage) {
78 element.setLocalX(value);
79 }
80 else {
81 element.setXY([value, null]);
82 }
83 }
84 else if (attr === 'y') {
85 if (this.isAbsoluteOnPage) {
86 element.setLocalY(value);
87 }
88 else {
89 element.setXY([null, value]);
90 }
91 }
92 else if (attr === 'scrollTop') {
93 element.scrollTo('top', value);
94 }
95 else if (attr === 'scrollLeft') {
96 element.scrollTo('left', value);
97 }
98 else if (attr === 'width') {
99 element.setWidth(value);
100 }
101 else if (attr === 'height') {
102 element.setHeight(value);
103 }
104 else {
105 element.setStyle(attr, value);
106 }
107 }
108 });