This is an automated email from the ASF dual-hosted git repository.

carlosrovira pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new a54e23e  jewel-disabled-beads: add tabindex=-1
a54e23e is described below

commit a54e23ec668e568bc58a66adcb94982ed56f9359
Author: Carlos Rovira <[email protected]>
AuthorDate: Fri Mar 6 10:31:21 2020 +0100

    jewel-disabled-beads: add tabindex=-1
---
 .../apache/royale/jewel/beads/controls/Disabled.as | 42 ++++++++++++++--------
 .../beads/controls/combobox/ComboBoxDisabled.as    | 33 ++++++++++++++---
 .../beads/controls/datefield/DateFieldDisabled.as  | 30 ++++++++++------
 3 files changed, 75 insertions(+), 30 deletions(-)

diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/Disabled.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/Disabled.as
index 132adce..a831309 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/Disabled.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/Disabled.as
@@ -21,6 +21,7 @@ package org.apache.royale.jewel.beads.controls
        COMPILE::JS
        {
        import org.apache.royale.core.HTMLElementWrapper;
+       import org.apache.royale.core.IUIBase;
        }
        import org.apache.royale.core.Bead;
        import org.apache.royale.core.IStrand;
@@ -50,7 +51,7 @@ package org.apache.royale.jewel.beads.controls
                }
 
                COMPILE::JS
-               private var _lastTabVal:String;
+               protected var lastTabVal:String;
 
                private var _disabled:Boolean = true;
         /**
@@ -73,7 +74,7 @@ package org.apache.royale.jewel.beads.controls
                                COMPILE::JS
                                {
                                if(value && _strand)
-                                       _lastTabVal = (_strand as 
HTMLElementWrapper).element.getAttribute("tabindex");
+                                       lastTabVal = (_strand as 
HTMLElementWrapper).element.getAttribute("tabindex");
                                }
                                _disabled = value;
                                if(_strand)
@@ -99,7 +100,7 @@ package org.apache.royale.jewel.beads.controls
                        _strand = value;
                        COMPILE::JS
             {
-            _lastTabVal = (_strand as 
HTMLElementWrapper).element.getAttribute("tabindex");
+            lastTabVal = (_strand as 
HTMLElementWrapper).element.getAttribute("tabindex");
             }
                        updateHost();
                }
@@ -109,20 +110,33 @@ package org.apache.royale.jewel.beads.controls
                        COMPILE::JS
                        {
                        var elem:HTMLElement = (_strand as 
HTMLElementWrapper).element;
+                       var pos:HTMLElement = (_strand as IUIBase).positioner;
                        
-                       if(_disabled)
-                       {
-                               elem.setAttribute('disabled', '');
-                               // elem.setAttribute("tabindex", "-1");
-                       } else
-                       {
-                               elem.removeAttribute('disabled');
-                               
-                               // _lastTabVal ?
-                               //      elem.setAttribute("tabindex", 
_lastTabVal) :
-                               //      elem.removeAttribute("tabindex");
+                       if(_disabled) {
+                               setDisableAndTabIndex(elem);
+                               setDisableAndTabIndex(pos);
+                       } else {
+                               removeDisableAndTabIndex(elem);
+                               removeDisableAndTabIndex(pos);
                        }
                        }
                }
+
+               COMPILE::JS
+               protected function setDisableAndTabIndex(o:HTMLElement):void
+               {
+                       o.setAttribute("disabled", "");
+                       o.tabIndex = -1;
+               }
+
+               COMPILE::JS
+               protected function removeDisableAndTabIndex(o:*):void
+               {
+                       o.removeAttribute("disabled");
+                               
+                       lastTabVal ?
+                               o.tabIndex = lastTabVal :
+                               o.tabIndex = null;
+               }
        }
 }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/ComboBoxDisabled.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/ComboBoxDisabled.as
index 4212d99..34dbf03 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/ComboBoxDisabled.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/ComboBoxDisabled.as
@@ -18,11 +18,11 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel.beads.controls.combobox
 {
-COMPILE::JS
-{
+       COMPILE::JS
+       {
        import org.apache.royale.core.UIBase;
        import org.apache.royale.jewel.beads.views.ComboBoxView;
-}
+       }
        import org.apache.royale.jewel.beads.controls.Disabled;
        
        /**
@@ -47,22 +47,45 @@ COMPILE::JS
                {
                }
 
-               COMPILE::JS
                override protected function updateHost():void
                {
                        super.updateHost();
-
+                       
+                       COMPILE::JS
+                       {
                        var view:ComboBoxView = (_strand as UIBase).view as 
ComboBoxView;
 
                        if (view) {
                 if(disabled) {
                                        
view.textinput.element.setAttribute('disabled', '');
+                                       
view.textinput.positioner.setAttribute('disabled', '');
                                        
view.button.element.setAttribute('disabled', '');
+                                       
view.button.positioner.setAttribute('disabled', '');
+                                       
+                                       
view.textinput.element.setAttribute('tabindex', '-1');
+                                       
view.textinput.positioner.setAttribute('tabindex', '-1');
+                                       
view.button.element.setAttribute('tabindex', '-1');
+                                       
view.button.positioner.setAttribute('tabindex', '-1');
                                } else {
                                        
view.textinput.element.removeAttribute('disabled');
+                                       
view.textinput.positioner.removeAttribute('disabled');
                                        
view.button.element.removeAttribute('disabled');
+                                       
view.button.positioner.removeAttribute('disabled');
+
+                                       if(lastTabVal) {
+                                               
view.textinput.element.setAttribute('tabindex', lastTabVal);
+                                               
view.textinput.positioner.setAttribute('tabindex', lastTabVal);
+                                               
view.button.element.setAttribute('tabindex', lastTabVal);
+                                               
view.button.positioner.setAttribute('tabindex', lastTabVal);
+                                       } else {
+                                               
view.textinput.element.removeAttribute('tabindex');
+                                               
view.textinput.positioner.removeAttribute('tabindex');
+                                               
view.button.element.removeAttribute('tabindex');
+                                               
view.button.positioner.removeAttribute('tabindex');
+                                       }
                                }
             }
+                       }
                }
        }
 }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/DateFieldDisabled.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/DateFieldDisabled.as
index 395d5bb..e30bd50 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/DateFieldDisabled.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/DateFieldDisabled.as
@@ -20,7 +20,6 @@ package org.apache.royale.jewel.beads.controls.datefield
 {
        COMPILE::JS
        {
-       import org.apache.royale.core.IBeadView;
        import org.apache.royale.jewel.DateField;
        import org.apache.royale.jewel.beads.views.DateFieldView;
        }
@@ -49,26 +48,35 @@ package org.apache.royale.jewel.beads.controls.datefield
                {
                }
 
-               COMPILE::JS
                override protected function updateHost():void
                {
                        super.updateHost();
 
-                       var host :DateField = _strand as DateField;
+                       COMPILE::JS
+                       {
+                       var view:DateFieldView = (_strand as DateField).view as 
DateFieldView;
 
-                       if (host) {
-                               var view:DateFieldView = (_strand as 
DateField).view as DateFieldView;
+                       if (view) {
+                               if (disabled) {
+                                       
view.textInput.element.setAttribute('disabled', '');
+                                       
view.menuButton.element.setAttribute('disabled', '');
 
-                               if (view) {
-                                       if (disabled) {
-                                               
view.textInput.element.setAttribute('disabled', '');
-                                               
view.menuButton.element.setAttribute('disabled', '');
+                                       
view.textInput.element.setAttribute('tabindex', '-1');
+                                       
view.menuButton.element.setAttribute('tabindex', '-1');
+                               } else {
+                                       
view.textInput.element.removeAttribute('disabled');
+                                       
view.menuButton.element.removeAttribute('disabled');
+
+                                       if(lastTabVal) {
+                                               
view.textInput.element.setAttribute('tabindex', lastTabVal);
+                                               
view.menuButton.element.setAttribute('tabindex', lastTabVal);
                                        } else {
-                                               
view.textInput.element.removeAttribute('disabled');
-                                               
view.menuButton.element.removeAttribute('disabled');
+                                               
view.textInput.element.removeAttribute('tabindex');
+                                               
view.menuButton.element.removeAttribute('tabindex');
                                        }
                                }
                        }
+                       }
                }
        }
 }

Reply via email to