1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The source code</title>
- <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
- <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
- <style type="text/css">
- .highlight { display: block; background-color: #ddd; }
- </style>
- <script type="text/javascript">
- function highlight() {
- document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
- }
- </script>
- </head>
- <body onload="prettyPrint(); highlight();">
- <pre class="prettyprint lang-js"><span id='Ext-dom-Element'>/**
- </span> * @class Ext.dom.Element
- */
- /* ================================
- * A Note About Wrapped Animations
- * ================================
- * A few of the effects below implement two different animations per effect, one wrapping
- * animation that performs the visual effect and a "no-op" animation on this Element where
- * no attributes of the element itself actually change. The purpose for this is that the
- * wrapper is required for the effect to work and so it does the actual animation work, but
- * we always animate `this` so that the element's events and callbacks work as expected to
- * the callers of this API.
- *
- * Because of this, we always want each wrap animation to complete first (we don't want to
- * cut off the visual effect early). To ensure that, we arbitrarily increase the duration of
- * the element's no-op animation, also ensuring that it has a decent minimum value -- on slow
- * systems, too-low durations can cause race conditions between the wrap animation and the
- * element animation being removed out of order. Note that in each wrap's `afteranimate`
- * callback it will explicitly terminate the element animation as soon as the wrap is complete,
- * so there's no real danger in making the duration too long.
- *
- * This applies to all effects that get wrapped, including slideIn, slideOut, switchOff and frame.
- */
- Ext.dom.Element.override({
- <span id='Ext-dom-Element-method-animate'> /**
- </span> * Performs custom animation on this Element.
- *
- * The following properties may be specified in `from`, `to`, and `keyframe` objects:
- *
- * - `x` - The page X position in pixels.
- *
- * - `y` - The page Y position in pixels
- *
- * - `left` - The element's CSS `left` value. Units must be supplied.
- *
- * - `top` - The element's CSS `top` value. Units must be supplied.
- *
- * - `width` - The element's CSS `width` value. Units must be supplied.
- *
- * - `height` - The element's CSS `height` value. Units must be supplied.
- *
- * - `scrollLeft` - The element's `scrollLeft` value.
- *
- * - `scrollTop` - The element's `scrollTop` value.
- *
- * - `opacity` - The element's `opacity` value. This must be a value between `0` and `1`.
- *
- * **Be aware** that animating an Element which is being used by an Ext Component without in some way informing the
- * Component about the changed element state will result in incorrect Component behaviour. This is because the
- * Component will be using the old state of the element. To avoid this problem, it is now possible to directly
- * animate certain properties of Components.
- *
- * @param {Object} config Configuration for {@link Ext.fx.Anim}.
- * Note that the {@link Ext.fx.Anim#to to} config is required.
- * @return {Ext.dom.Element} this
- */
- animate: function(config) {
- var me = this,
- listeners,
- anim,
- animId = me.dom.id || Ext.id(me.dom);
- if (!Ext.fx.Manager.hasFxBlock(animId)) {
- // Bit of gymnastics here to ensure our internal listeners get bound first
- if (config.listeners) {
- listeners = config.listeners;
- delete config.listeners;
- }
- if (config.internalListeners) {
- config.listeners = config.internalListeners;
- delete config.internalListeners;
- }
- anim = new Ext.fx.Anim(me.anim(config));
- if (listeners) {
- anim.on(listeners);
- }
- Ext.fx.Manager.queueFx(anim);
- }
- return me;
- },
- // @private - process the passed fx configuration.
- anim: function(config) {
- if (!Ext.isObject(config)) {
- return (config) ? {} : false;
- }
- var me = this,
- duration = config.duration || Ext.fx.Anim.prototype.duration,
- easing = config.easing || 'ease',
- animConfig;
- if (config.stopAnimation) {
- me.stopAnimation();
- }
- Ext.applyIf(config, Ext.fx.Manager.getFxDefaults(me.id));
- // Clear any 'paused' defaults.
- Ext.fx.Manager.setFxDefaults(me.id, {
- delay: 0
- });
- animConfig = {
- // Pass the DOM reference. That's tested first so will be converted to an Ext.fx.Target fastest.
- target: me.dom,
- remove: config.remove,
- alternate: config.alternate || false,
- duration: duration,
- easing: easing,
- callback: config.callback,
- listeners: config.listeners,
- iterations: config.iterations || 1,
- scope: config.scope,
- block: config.block,
- concurrent: config.concurrent,
- delay: config.delay || 0,
- paused: true,
- keyframes: config.keyframes,
- from: config.from || {},
- to: Ext.apply({}, config)
- };
- Ext.apply(animConfig.to, config.to);
- // Anim API properties - backward compat
- delete animConfig.to.to;
- delete animConfig.to.from;
- delete animConfig.to.remove;
- delete animConfig.to.alternate;
- delete animConfig.to.keyframes;
- delete animConfig.to.iterations;
- delete animConfig.to.listeners;
- delete animConfig.to.target;
- delete animConfig.to.paused;
- delete animConfig.to.callback;
- delete animConfig.to.scope;
- delete animConfig.to.duration;
- delete animConfig.to.easing;
- delete animConfig.to.concurrent;
- delete animConfig.to.block;
- delete animConfig.to.stopAnimation;
- delete animConfig.to.delay;
- return animConfig;
- },
- <span id='Ext-dom-Element-method-slideIn'> /**
- </span> * Slides the element into view. An anchor point can be optionally passed to set the point of origin for the slide
- * effect. This function automatically handles wrapping the element with a fixed-size container if needed. See the
- * Fx class overview for valid anchor point options. Usage:
- *
- * // default: slide the element in from the top
- * el.slideIn();
- *
- * // custom: slide the element in from the right with a 2-second duration
- * el.slideIn('r', { duration: 2000 });
- *
- * // common config options shown with default values
- * el.slideIn('t', {
- * easing: 'easeOut',
- * duration: 500
- * });
- *
- * @param {String} anchor (optional) One of the valid Fx anchor positions (defaults to top: 't')
- * @param {Object} options (optional) Object literal with any of the Fx config options
- * @param {Boolean} options.preserveScroll Set to true if preservation of any descendant elements'
- * `scrollTop` values is required. By default the DOM wrapping operation performed by `slideIn` and
- * `slideOut` causes the browser to lose all scroll positions.
- * @return {Ext.dom.Element} The Element
- */
- slideIn: function(anchor, obj, slideOut) {
- var me = this,
- elStyle = me.dom.style,
- beforeAnim,
- wrapAnim,
- restoreScroll,
- wrapDomParentNode;
- anchor = anchor || "t";
- obj = obj || {};
- beforeAnim = function() {
- var animScope = this,
- listeners = obj.listeners,
- box, originalStyles, anim, wrap;
- if (!slideOut) {
- me.fixDisplay();
- }
- box = me.getBox();
- if ((anchor == 't' || anchor == 'b') && box.height === 0) {
- box.height = me.dom.scrollHeight;
- }
- else if ((anchor == 'l' || anchor == 'r') && box.width === 0) {
- box.width = me.dom.scrollWidth;
- }
- originalStyles = me.getStyles('width', 'height', 'left', 'right', 'top', 'bottom', 'position', 'z-index', true);
- me.setSize(box.width, box.height);
- // Cache all descendants' scrollTop & scrollLeft values if configured to preserve scroll.
- if (obj.preserveScroll) {
- restoreScroll = me.cacheScrollValues();
- }
- wrap = me.wrap({
- id: Ext.id() + '-anim-wrap-for-' + me.id,
- style: {
- visibility: slideOut ? 'visible' : 'hidden'
- }
- });
- wrapDomParentNode = wrap.dom.parentNode;
- wrap.setPositioning(me.getPositioning());
- if (wrap.isStyle('position', 'static')) {
- wrap.position('relative');
- }
- me.clearPositioning('auto');
- wrap.clip();
- // The wrap will have reset all descendant scrollTops. Restore them if we cached them.
- if (restoreScroll) {
- restoreScroll();
- }
- // This element is temporarily positioned absolute within its wrapper.
- // Restore to its default, CSS-inherited visibility setting.
- // We cannot explicitly poke visibility:visible into its style because that overrides the visibility of the wrap.
- me.setStyle({
- visibility: '',
- position: 'absolute'
- });
- if (slideOut) {
- wrap.setSize(box.width, box.height);
- }
- switch (anchor) {
- case 't':
- anim = {
- from: {
- width: box.width + 'px',
- height: '0px'
- },
- to: {
- width: box.width + 'px',
- height: box.height + 'px'
- }
- };
- elStyle.bottom = '0px';
- break;
- case 'l':
- anim = {
- from: {
- width: '0px',
- height: box.height + 'px'
- },
- to: {
- width: box.width + 'px',
- height: box.height + 'px'
- }
- };
- elStyle.right = '0px';
- break;
- case 'r':
- anim = {
- from: {
- x: box.x + box.width,
- width: '0px',
- height: box.height + 'px'
- },
- to: {
- x: box.x,
- width: box.width + 'px',
- height: box.height + 'px'
- }
- };
- break;
- case 'b':
- anim = {
- from: {
- y: box.y + box.height,
- width: box.width + 'px',
- height: '0px'
- },
- to: {
- y: box.y,
- width: box.width + 'px',
- height: box.height + 'px'
- }
- };
- break;
- case 'tl':
- anim = {
- from: {
- x: box.x,
- y: box.y,
- width: '0px',
- height: '0px'
- },
- to: {
- width: box.width + 'px',
- height: box.height + 'px'
- }
- };
- elStyle.bottom = '0px';
- elStyle.right = '0px';
- break;
- case 'bl':
- anim = {
- from: {
- y: box.y + box.height,
- width: '0px',
- height: '0px'
- },
- to: {
- y: box.y,
- width: box.width + 'px',
- height: box.height + 'px'
- }
- };
- elStyle.bottom = '0px';
- break;
- case 'br':
- anim = {
- from: {
- x: box.x + box.width,
- y: box.y + box.height,
- width: '0px',
- height: '0px'
- },
- to: {
- x: box.x,
- y: box.y,
- width: box.width + 'px',
- height: box.height + 'px'
- }
- };
- break;
- case 'tr':
- anim = {
- from: {
- x: box.x + box.width,
- width: '0px',
- height: '0px'
- },
- to: {
- x: box.x,
- width: box.width + 'px',
- height: box.height + 'px'
- }
- };
- elStyle.right = '0px';
- break;
- }
- wrap.show();
- wrapAnim = Ext.apply({}, obj);
- delete wrapAnim.listeners;
- wrapAnim = new Ext.fx.Anim(Ext.applyIf(wrapAnim, {
- target: wrap,
- duration: 500,
- easing: 'ease-out',
- from: slideOut ? anim.to : anim.from,
- to: slideOut ? anim.from : anim.to
- }));
- // In the absence of a callback, this listener MUST be added first
- wrapAnim.on('afteranimate', function() {
- me.setStyle(originalStyles);
- if (slideOut) {
- if (obj.useDisplay) {
- me.setDisplayed(false);
- } else {
- me.hide();
- }
- }
- if (wrap.dom) {
- if (wrap.dom.parentNode) {
- wrap.dom.parentNode.insertBefore(me.dom, wrap.dom);
- } else {
- wrapDomParentNode.appendChild(me.dom);
- }
- wrap.remove();
- }
- // The unwrap will have reset all descendant scrollTops. Restore them if we cached them.
- if (restoreScroll) {
- restoreScroll();
- }
- // kill the no-op element animation created below
- animScope.end();
- });
- // Add configured listeners after
- if (listeners) {
- wrapAnim.on(listeners);
- }
- };
- me.animate({
- // See "A Note About Wrapped Animations" at the top of this class:
- duration: obj.duration ? Math.max(obj.duration, 500) * 2 : 1000,
- listeners: {
- beforeanimate: beforeAnim // kick off the wrap animation
- }
- });
- return me;
- },
- <span id='Ext-dom-Element-method-slideOut'> /**
- </span> * Slides the element out of view. An anchor point can be optionally passed to set the end point for the slide
- * effect. When the effect is completed, the element will be hidden (visibility = 'hidden') but block elements will
- * still take up space in the document. The element must be removed from the DOM using the 'remove' config option if
- * desired. This function automatically handles wrapping the element with a fixed-size container if needed. See the
- * Fx class overview for valid anchor point options. Usage:
- *
- * // default: slide the element out to the top
- * el.slideOut();
- *
- * // custom: slide the element out to the right with a 2-second duration
- * el.slideOut('r', { duration: 2000 });
- *
- * // common config options shown with default values
- * el.slideOut('t', {
- * easing: 'easeOut',
- * duration: 500,
- * remove: false,
- * useDisplay: false
- * });
- *
- * @param {String} anchor (optional) One of the valid Fx anchor positions (defaults to top: 't')
- * @param {Object} options (optional) Object literal with any of the Fx config options
- * @return {Ext.dom.Element} The Element
- */
- slideOut: function(anchor, o) {
- return this.slideIn(anchor, o, true);
- },
- <span id='Ext-dom-Element-method-puff'> /**
- </span> * Fades the element out while slowly expanding it in all directions. When the effect is completed, the element will
- * be hidden (visibility = 'hidden') but block elements will still take up space in the document. Usage:
- *
- * // default
- * el.puff();
- *
- * // common config options shown with default values
- * el.puff({
- * easing: 'easeOut',
- * duration: 500,
- * useDisplay: false
- * });
- *
- * @param {Object} options (optional) Object literal with any of the Fx config options
- * @return {Ext.dom.Element} The Element
- */
- puff: function(obj) {
- var me = this,
- beforeAnim,
- box = me.getBox(),
- originalStyles = me.getStyles('width', 'height', 'left', 'right', 'top', 'bottom', 'position', 'z-index', 'font-size', 'opacity', true);
- obj = Ext.applyIf(obj || {}, {
- easing: 'ease-out',
- duration: 500,
- useDisplay: false
- });
- beforeAnim = function() {
- me.clearOpacity();
- me.show();
- this.to = {
- width: box.width * 2,
- height: box.height * 2,
- x: box.x - (box.width / 2),
- y: box.y - (box.height /2),
- opacity: 0,
- fontSize: '200%'
- };
- this.on('afteranimate',function() {
- if (me.dom) {
- if (obj.useDisplay) {
- me.setDisplayed(false);
- } else {
- me.hide();
- }
- me.setStyle(originalStyles);
- obj.callback.call(obj.scope);
- }
- });
- };
- me.animate({
- duration: obj.duration,
- easing: obj.easing,
- listeners: {
- beforeanimate: {
- fn: beforeAnim
- }
- }
- });
- return me;
- },
- <span id='Ext-dom-Element-method-switchOff'> /**
- </span> * Blinks the element as if it was clicked and then collapses on its center (similar to switching off a television).
- * When the effect is completed, the element will be hidden (visibility = 'hidden') but block elements will still
- * take up space in the document. The element must be removed from the DOM using the 'remove' config option if
- * desired. Usage:
- *
- * // default
- * el.switchOff();
- *
- * // all config options shown with default values
- * el.switchOff({
- * easing: 'easeIn',
- * duration: .3,
- * remove: false,
- * useDisplay: false
- * });
- *
- * @param {Object} options (optional) Object literal with any of the Fx config options
- * @return {Ext.dom.Element} The Element
- */
- switchOff: function(obj) {
- var me = this,
- beforeAnim;
- obj = Ext.applyIf(obj || {}, {
- easing: 'ease-in',
- duration: 500,
- remove: false,
- useDisplay: false
- });
- beforeAnim = function() {
- var animScope = this,
- size = me.getSize(),
- xy = me.getXY(),
- keyframe, position;
- me.clearOpacity();
- me.clip();
- position = me.getPositioning();
- keyframe = new Ext.fx.Animator({
- target: me,
- duration: obj.duration,
- easing: obj.easing,
- keyframes: {
- 33: {
- opacity: 0.3
- },
- 66: {
- height: 1,
- y: xy[1] + size.height / 2
- },
- 100: {
- width: 1,
- x: xy[0] + size.width / 2
- }
- }
- });
- keyframe.on('afteranimate', function() {
- if (obj.useDisplay) {
- me.setDisplayed(false);
- } else {
- me.hide();
- }
- me.clearOpacity();
- me.setPositioning(position);
- me.setSize(size);
- // kill the no-op element animation created below
- animScope.end();
- });
- };
-
- me.animate({
- // See "A Note About Wrapped Animations" at the top of this class:
- duration: (Math.max(obj.duration, 500) * 2),
- listeners: {
- beforeanimate: {
- fn: beforeAnim
- }
- }
- });
- return me;
- },
- <span id='Ext-dom-Element-method-frame'> /**
- </span> * Shows a ripple of exploding, attenuating borders to draw attention to an Element. Usage:
- *
- * // default: a single light blue ripple
- * el.frame();
- *
- * // custom: 3 red ripples lasting 3 seconds total
- * el.frame("#ff0000", 3, { duration: 3000 });
- *
- * // common config options shown with default values
- * el.frame("#C3DAF9", 1, {
- * duration: 1000 // duration of each individual ripple.
- * // Note: Easing is not configurable and will be ignored if included
- * });
- *
- * @param {String} [color='#C3DAF9'] The hex color value for the border.
- * @param {Number} [count=1] The number of ripples to display.
- * @param {Object} [options] Object literal with any of the Fx config options
- * @return {Ext.dom.Element} The Element
- */
- frame : function(color, count, obj){
- var me = this,
- beforeAnim;
- color = color || '#C3DAF9';
- count = count || 1;
- obj = obj || {};
- beforeAnim = function() {
- me.show();
- var animScope = this,
- box = me.getBox(),
- proxy = Ext.getBody().createChild({
- id: me.id + '-anim-proxy',
- style: {
- position : 'absolute',
- 'pointer-events': 'none',
- 'z-index': 35000,
- border : '0px solid ' + color
- }
- }),
- proxyAnim;
- proxyAnim = new Ext.fx.Anim({
- target: proxy,
- duration: obj.duration || 1000,
- iterations: count,
- from: {
- top: box.y,
- left: box.x,
- borderWidth: 0,
- opacity: 1,
- height: box.height,
- width: box.width
- },
- to: {
- top: box.y - 20,
- left: box.x - 20,
- borderWidth: 10,
- opacity: 0,
- height: box.height + 40,
- width: box.width + 40
- }
- });
- proxyAnim.on('afteranimate', function() {
- proxy.remove();
- // kill the no-op element animation created below
- animScope.end();
- });
- };
- me.animate({
- // See "A Note About Wrapped Animations" at the top of this class:
- duration: (Math.max(obj.duration, 500) * 2) || 2000,
- listeners: {
- beforeanimate: {
- fn: beforeAnim
- }
- }
- });
- return me;
- },
- <span id='Ext-dom-Element-method-ghost'> /**
- </span> * Slides the element while fading it out of view. An anchor point can be optionally passed to set the ending point
- * of the effect. Usage:
- *
- * // default: slide the element downward while fading out
- * el.ghost();
- *
- * // custom: slide the element out to the right with a 2-second duration
- * el.ghost('r', { duration: 2000 });
- *
- * // common config options shown with default values
- * el.ghost('b', {
- * easing: 'easeOut',
- * duration: 500
- * });
- *
- * @param {String} anchor (optional) One of the valid Fx anchor positions (defaults to bottom: 'b')
- * @param {Object} options (optional) Object literal with any of the Fx config options
- * @return {Ext.dom.Element} The Element
- */
- ghost: function(anchor, obj) {
- var me = this,
- beforeAnim;
- anchor = anchor || "b";
- beforeAnim = function() {
- var width = me.getWidth(),
- height = me.getHeight(),
- xy = me.getXY(),
- position = me.getPositioning(),
- to = {
- opacity: 0
- };
- switch (anchor) {
- case 't':
- to.y = xy[1] - height;
- break;
- case 'l':
- to.x = xy[0] - width;
- break;
- case 'r':
- to.x = xy[0] + width;
- break;
- case 'b':
- to.y = xy[1] + height;
- break;
- case 'tl':
- to.x = xy[0] - width;
- to.y = xy[1] - height;
- break;
- case 'bl':
- to.x = xy[0] - width;
- to.y = xy[1] + height;
- break;
- case 'br':
- to.x = xy[0] + width;
- to.y = xy[1] + height;
- break;
- case 'tr':
- to.x = xy[0] + width;
- to.y = xy[1] - height;
- break;
- }
- this.to = to;
- this.on('afteranimate', function () {
- if (me.dom) {
- me.hide();
- me.clearOpacity();
- me.setPositioning(position);
- }
- });
- };
- me.animate(Ext.applyIf(obj || {}, {
- duration: 500,
- easing: 'ease-out',
- listeners: {
- beforeanimate: {
- fn: beforeAnim
- }
- }
- }));
- return me;
- },
- <span id='Ext-dom-Element-method-highlight'> /**
- </span> * Highlights the Element by setting a color (applies to the background-color by default, but can be changed using
- * the "attr" config option) and then fading back to the original color. If no original color is available, you
- * should provide the "endColor" config option which will be cleared after the animation. Usage:
- *
- * // default: highlight background to yellow
- * el.highlight();
- *
- * // custom: highlight foreground text to blue for 2 seconds
- * el.highlight("0000ff", { attr: 'color', duration: 2000 });
- *
- * // common config options shown with default values
- * el.highlight("ffff9c", {
- * attr: "backgroundColor", //can be any valid CSS property (attribute) that supports a color value
- * endColor: (current color) or "ffffff",
- * easing: 'easeIn',
- * duration: 1000
- * });
- *
- * @param {String} color (optional) The highlight color. Should be a 6 char hex color without the leading #
- * (defaults to yellow: 'ffff9c')
- * @param {Object} options (optional) Object literal with any of the Fx config options
- * @return {Ext.dom.Element} The Element
- */
- highlight: function(color, o) {
- var me = this,
- dom = me.dom,
- from = {},
- restore, to, attr, lns, event, fn;
- o = o || {};
- lns = o.listeners || {};
- attr = o.attr || 'backgroundColor';
- from[attr] = color || 'ffff9c';
- if (!o.to) {
- to = {};
- to[attr] = o.endColor || me.getColor(attr, 'ffffff', '');
- }
- else {
- to = o.to;
- }
- // Don't apply directly on lns, since we reference it in our own callbacks below
- o.listeners = Ext.apply(Ext.apply({}, lns), {
- beforeanimate: function() {
- restore = dom.style[attr];
- me.clearOpacity();
- me.show();
- event = lns.beforeanimate;
- if (event) {
- fn = event.fn || event;
- return fn.apply(event.scope || lns.scope || window, arguments);
- }
- },
- afteranimate: function() {
- if (dom) {
- dom.style[attr] = restore;
- }
- event = lns.afteranimate;
- if (event) {
- fn = event.fn || event;
- fn.apply(event.scope || lns.scope || window, arguments);
- }
- }
- });
- me.animate(Ext.apply({}, o, {
- duration: 1000,
- easing: 'ease-in',
- from: from,
- to: to
- }));
- return me;
- },
- <span id='Ext-dom-Element-method-pause'> /**
- </span> * Creates a pause before any subsequent queued effects begin. If there are no effects queued after the pause it will
- * have no effect. Usage:
- *
- * el.pause(1);
- *
- * @deprecated 4.0 Use the `delay` config to {@link #animate} instead.
- * @param {Number} seconds The length of time to pause (in seconds)
- * @return {Ext.Element} The Element
- */
- pause: function(ms) {
- var me = this;
- Ext.fx.Manager.setFxDefaults(me.id, {
- delay: ms
- });
- return me;
- },
- <span id='Ext-dom-Element-method-fadeIn'> /**
- </span> * Fade an element in (from transparent to opaque). The ending opacity can be specified using the `opacity`
- * config option. Usage:
- *
- * // default: fade in from opacity 0 to 100%
- * el.fadeIn();
- *
- * // custom: fade in from opacity 0 to 75% over 2 seconds
- * el.fadeIn({ opacity: .75, duration: 2000});
- *
- * // common config options shown with default values
- * el.fadeIn({
- * opacity: 1, //can be any value between 0 and 1 (e.g. .5)
- * easing: 'easeOut',
- * duration: 500
- * });
- *
- * @param {Object} options (optional) Object literal with any of the Fx config options
- * @return {Ext.Element} The Element
- */
- fadeIn: function(o) {
- var me = this;
- me.animate(Ext.apply({}, o, {
- opacity: 1,
- internalListeners: {
- beforeanimate: function(anim){
- // restore any visibility/display that may have
- // been applied by a fadeout animation
- if (me.isStyle('display', 'none')) {
- me.setDisplayed('');
- } else {
- me.show();
- }
- }
- }
- }));
- return this;
- },
- <span id='Ext-dom-Element-method-fadeOut'> /**
- </span> * Fade an element out (from opaque to transparent). The ending opacity can be specified using the `opacity`
- * config option. Note that IE may require `useDisplay:true` in order to redisplay correctly.
- * Usage:
- *
- * // default: fade out from the element's current opacity to 0
- * el.fadeOut();
- *
- * // custom: fade out from the element's current opacity to 25% over 2 seconds
- * el.fadeOut({ opacity: .25, duration: 2000});
- *
- * // common config options shown with default values
- * el.fadeOut({
- * opacity: 0, //can be any value between 0 and 1 (e.g. .5)
- * easing: 'easeOut',
- * duration: 500,
- * remove: false,
- * useDisplay: false
- * });
- *
- * @param {Object} options (optional) Object literal with any of the Fx config options
- * @return {Ext.Element} The Element
- */
- fadeOut: function(o) {
- var me = this;
- o = Ext.apply({
- opacity: 0,
- internalListeners: {
- afteranimate: function(anim){
- var dom = me.dom;
- if (dom && anim.to.opacity === 0) {
- if (o.useDisplay) {
- me.setDisplayed(false);
- } else {
- me.hide();
- }
- }
- }
- }
- }, o);
- me.animate(o);
- return me;
- },
- <span id='Ext-dom-Element-method-scale'> /**
- </span> * Animates the transition of an element's dimensions from a starting height/width to an ending height/width. This
- * method is a convenience implementation of {@link #shift}. Usage:
- *
- * // change height and width to 100x100 pixels
- * el.scale(100, 100);
- *
- * // common config options shown with default values. The height and width will default to
- * // the element's existing values if passed as null.
- * el.scale(
- * [element's width],
- * [element's height], {
- * easing: 'easeOut',
- * duration: 350
- * }
- * );
- *
- * @deprecated 4.0 Just use {@link #animate} instead.
- * @param {Number} width The new width (pass undefined to keep the original width)
- * @param {Number} height The new height (pass undefined to keep the original height)
- * @param {Object} options (optional) Object literal with any of the Fx config options
- * @return {Ext.Element} The Element
- */
- scale: function(w, h, o) {
- this.animate(Ext.apply({}, o, {
- width: w,
- height: h
- }));
- return this;
- },
- <span id='Ext-dom-Element-method-shift'> /**
- </span> * Animates the transition of any combination of an element's dimensions, xy position and/or opacity. Any of these
- * properties not specified in the config object will not be changed. This effect requires that at least one new
- * dimension, position or opacity setting must be passed in on the config object in order for the function to have
- * any effect. Usage:
- *
- * // slide the element horizontally to x position 200 while changing the height and opacity
- * el.shift({ x: 200, height: 50, opacity: .8 });
- *
- * // common config options shown with default values.
- * el.shift({
- * width: [element's width],
- * height: [element's height],
- * x: [element's x position],
- * y: [element's y position],
- * opacity: [element's opacity],
- * easing: 'easeOut',
- * duration: 350
- * });
- *
- * @deprecated 4.0 Just use {@link #animate} instead.
- * @param {Object} options Object literal with any of the Fx config options
- * @return {Ext.Element} The Element
- */
- shift: function(config) {
- this.animate(config);
- return this;
- }
- });
- </pre>
- </body>
- </html>
|