This is an automated email from the ASF dual-hosted git repository.
harbs 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 379e23c0c0 Fixed List
379e23c0c0 is described below
commit 379e23c0c0d9357a68343cd848a3b12ddd6d5790
Author: Harbs <[email protected]>
AuthorDate: Tue Mar 31 14:39:19 2026 +0300
Fixed List
---
.../projects/Style/src/main/resources/defaults.css | 28 ++-
.../Style/src/main/resources/style-manifest.xml | 6 +
.../org/apache/royale/style/DataItemRenderer.as | 1 -
.../main/royale/org/apache/royale/style/List.as | 20 ++
.../RowGap.as => beads/IKeyboardHandler.as} | 10 +-
.../apache/royale/style/beads/ListController.as | 129 +++++++++++++
.../org/apache/royale/style/beads/ListModel.as | 215 +++++++++++++++++++++
.../org/apache/royale/style/beads/ListView.as | 99 ++++++++++
.../org/apache/royale/style/colors/ColorSwatch.as | 28 +++
.../flexgrid/ColumnGap.as => data/IDataItem.as} | 17 +-
.../flexgrid/ColumnGap.as => data/IListItem.as} | 23 ++-
.../IListItemRenderer.as} | 17 +-
.../royale/style/renderers/ListItemRenderer.as | 185 ++++++++++++++++++
.../apache/royale/style/skins/ListRendererSkin.as | 163 ++++++++++++++++
.../royale/style/stylebeads/flexgrid/ColumnGap.as | 2 +-
.../apache/royale/style/stylebeads/flexgrid/Gap.as | 2 +-
.../style/stylebeads/flexgrid/JustifyContent.as | 4 +-
.../royale/style/stylebeads/flexgrid/RowGap.as | 2 +-
.../stylebeads/states/attribute/SelectedState.as | 5 +-
.../royale/style/support/UIItemRendererBase.as | 3 +
20 files changed, 910 insertions(+), 49 deletions(-)
diff --git a/frameworks/projects/Style/src/main/resources/defaults.css
b/frameworks/projects/Style/src/main/resources/defaults.css
index 297f33e72e..17ae0a005d 100644
--- a/frameworks/projects/Style/src/main/resources/defaults.css
+++ b/frameworks/projects/Style/src/main/resources/defaults.css
@@ -51,6 +51,12 @@ CheckBox
{
IStyleSkin:
ClassReference("org.apache.royale.style.skins.CheckBoxSkin");
}
+
+DataItemRenderer
+{
+ IBeadController:
ClassReference("org.apache.royale.html.beads.controllers.ItemRendererMouseController");
+}
+
DataContainer
{
IBeadModel:
ClassReference("org.apache.royale.html.beads.models.DataProviderModel");
@@ -75,8 +81,8 @@ MultiSelectionList
IBeadController:
ClassReference("org.apache.royale.html.beads.controllers.ListMultiSelectionMouseController");
IBeadLayout:
ClassReference("org.apache.royale.html.beads.layouts.VerticalLayout");
IDataProviderItemRendererMapper:
ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForArrayData");
- IItemRendererClassFactory:
ClassReference("org.apache.royale.html.beads.MultiSelectionItemRendererClassFactory");
- IItemRendererInitializer:
ClassReference("org.apache.royale.html.beads.ListItemRendererInitializer");
+ IItemRendererClassFactory:
ClassReference("org.apache.royale.core.OverridableSelectableItemRendererClassFactory");
+ IItemRendererInitializer:
ClassReference("org.apache.royale.html.beads.IndexedItemRendererInitializer");
IItemRenderer:
ClassReference("org.apache.royale.html.supportClasses.StringItemRenderer");
ISelectableItemRenderer:
ClassReference("org.apache.royale.html.beads.SolidBackgroundSelectableItemRendererBead");
IViewport:
ClassReference("org.apache.royale.html.supportClasses.ScrollingViewport");
@@ -84,18 +90,20 @@ MultiSelectionList
}
List
{
- IBeadModel:
ClassReference("org.apache.royale.html.beads.models.ArraySelectionModel");
- IBeadView: ClassReference("org.apache.royale.html.beads.ListView");
- IBeadController:
ClassReference("org.apache.royale.html.beads.controllers.ListSingleSelectionMouseController");
- IBeadLayout:
ClassReference("org.apache.royale.html.beads.layouts.VerticalLayout");
+ IBeadModel: ClassReference("org.apache.royale.style.beads.ListModel");
+ IBeadView: ClassReference("org.apache.royale.style.beads.ListView");
+ IBeadController:
ClassReference("org.apache.royale.style.beads.ListController");
+ IBeadLayout:
ClassReference("org.apache.royale.html.beads.layouts.NoLayout");
IDataProviderItemRendererMapper:
ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForArrayData");
- IItemRendererClassFactory:
ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory");
- IItemRendererInitializer:
ClassReference("org.apache.royale.html.beads.ListItemRendererInitializer");
- IItemRenderer:
ClassReference("org.apache.royale.html.supportClasses.StringItemRenderer");
- ISelectableItemRenderer:
ClassReference("org.apache.royale.html.beads.SolidBackgroundSelectableItemRendererBead");
+ IItemRendererInitializer:
ClassReference("org.apache.royale.html.beads.IndexedItemRendererInitializer");
+ IItemRenderer:
ClassReference("org.apache.royale.style.renderers.ListItemRenderer");
IViewport:
ClassReference("org.apache.royale.html.supportClasses.ScrollingViewport");
IViewportModel:
ClassReference("org.apache.royale.html.beads.models.ViewportModel");
}
+ListItemRenderer
+{
+ IStyleSkin:
ClassReference("org.apache.royale.style.skins.ListRendererSkin");
+}
Tree
{
IBeadModel:
ClassReference("org.apache.royale.html.beads.models.TreeModel");
diff --git a/frameworks/projects/Style/src/main/resources/style-manifest.xml
b/frameworks/projects/Style/src/main/resources/style-manifest.xml
index 297add2c05..1dd68b067c 100644
--- a/frameworks/projects/Style/src/main/resources/style-manifest.xml
+++ b/frameworks/projects/Style/src/main/resources/style-manifest.xml
@@ -40,6 +40,11 @@
<component id="MultiSelectionList"
class="org.apache.royale.style.MultiSelectionList"/>
<component id="Tree" class="org.apache.royale.style.Tree"/>
<component id="DataItemRenderer"
class="org.apache.royale.style.DataItemRenderer"/>
+ <component id="ListItemRenderer"
class="org.apache.royale.style.renderers.ListItemRenderer"/>
+
+ <component id="ListController"
class="org.apache.royale.style.beads.ListController"/>
+ <component id="ListModel" class="org.apache.royale.style.beads.ListModel"/>
+ <component id="ListView" class="org.apache.royale.style.beads.ListView"/>
<component id="DataState"
class="org.apache.royale.style.stylebeads.states.attribute.DataState"/>
<component id="AriaState"
class="org.apache.royale.style.stylebeads.states.attribute.AriaState"/>
@@ -314,5 +319,6 @@
<component id="AccordionSkin"
class="org.apache.royale.style.skins.AccordionSkin"/>
<component id="AccordionSectionSkin"
class="org.apache.royale.style.skins.AccordionSectionSkin"/>
<component id="AccordionContentSkin"
class="org.apache.royale.style.skins.AccordionContentSkin"/>
+ <component id="ListRendererSkin"
class="org.apache.royale.style.skins.ListRendererSkin"/>
</componentPackage>
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/DataItemRenderer.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/DataItemRenderer.as
index 542a389757..964bdc61d0 100644
---
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/DataItemRenderer.as
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/DataItemRenderer.as
@@ -39,7 +39,6 @@ package org.apache.royale.style
*
* @langversion 3.0
* @playerversion Flash 10.2
- * @playerversion AIR 2.6
* @productversion Royale 0.0
*/
public function DataItemRenderer()
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/List.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/List.as
index 5e4351cfe9..a721cc181d 100644
--- a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/List.as
+++ b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/List.as
@@ -21,6 +21,7 @@ package org.apache.royale.style
import org.apache.royale.core.IRollOverModel;
import org.apache.royale.core.ISelectionModel;
import org.apache.royale.html.IListPresentationModel;
+ import org.apache.royale.style.util.StyleManager;
/**
* Indicates that the initialization of the list is complete.
@@ -67,8 +68,18 @@ package org.apache.royale.style
public function List()
{
super();
+ register();
// typeNames += " List";
}
+ private static var _registered:Boolean = false;
+ private static function register():void
+ {
+ if(!_registered){
+ var sel:String = "menu, ol, ul";
+ StyleManager.addStyle(sel, sel, "list-style:
none; margin: 0; padding: 0;");
+ _registered = true;
+ }
+ }
/**
* The index of the currently selected item. Changing this
value
@@ -155,6 +166,15 @@ package org.apache.royale.style
{
(model as ISelectionModel).selectedItem = value;
}
+ override protected function getTag():String
+ {
+ return "ul";
+ }
+
+ public function get focusParent():IStyleUIBase
+ {
+ return this;
+ }
}
}
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/RowGap.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/beads/IKeyboardHandler.as
similarity index 85%
copy from
frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/RowGap.as
copy to
frameworks/projects/Style/src/main/royale/org/apache/royale/style/beads/IKeyboardHandler.as
index f5836ab9eb..73deb929c1 100644
---
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/RowGap.as
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/beads/IKeyboardHandler.as
@@ -16,14 +16,10 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.style.stylebeads.flexgrid
+package org.apache.royale.style.beads
{
-
- public class RowGap extends Gap
+ public interface IKeyboardHandler
{
- public function RowGap(value:* = null)
- {
- super("gap-y", "row-gap", value);
- }
+
}
}
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/beads/ListController.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/beads/ListController.as
new file mode 100644
index 0000000000..aa4b5d65b4
--- /dev/null
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/beads/ListController.as
@@ -0,0 +1,129 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.style.beads
+{
+ import org.apache.royale.core.IStrand;
+ import org.apache.royale.core.IBeadController;
+ import org.apache.royale.html.beads.IListView;
+ import org.apache.royale.core.IItemRendererOwnerView;
+ import org.apache.royale.events.IEventDispatcher;
+ import org.apache.royale.style.List;
+ import org.apache.royale.utils.loadBeadFromValuesManager;
+ import org.apache.royale.events.ItemAddedEvent;
+ import org.apache.royale.events.ItemRemovedEvent;
+ import org.apache.royale.events.ItemClickedEvent;
+ import org.apache.royale.utils.sendStrandEvent;
+ import org.apache.royale.style.renderers.IListItemRenderer;
+ import org.apache.royale.events.Event;
+
+ public class ListController implements IBeadController
+ {
+ public function ListController()
+ {
+ }
+ /**
+ * The model.
+ */
+ protected var listModel:ListModel;
+
+ /**
+ * The view.
+ *
+ */
+ protected var listView:IListView;
+
+ /**
+ * The parent of the item renderers.
+ */
+ protected var dataGroup:IItemRendererOwnerView;
+
+ protected var _strand:IStrand;
+
+ private var host:List;
+
+ /**
+ * @copy org.apache.royale.core.IBead#strand
+ * @royaleignorecoercion org.apache.royale.style.List
+ * @royaleignorecoercion org.apache.royale.style.beads.ListModel
+ * @royaleignorecoercion org.apache.royale.html.beads.IListView
+ */
+ public function set strand(value:IStrand):void
+ {
+ _strand = value;
+ host = value as List;
+ listModel = host.model as ListModel;
+ listView = host.view as IListView;
+ host.addEventListener("itemAdded", handleItemAdded);
+ host.addEventListener("itemRemoved", handleItemRemoved);
+ loadBeadFromValuesManager(IKeyboardHandler,
"iKeyboardHandler", _strand);
+ }
+
+ /**
+ * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+ */
+ protected function handleItemAdded(event:ItemAddedEvent):void
+ {
+ (event.item as
IEventDispatcher).addEventListener("itemClicked", selectedHandler);
+ (event.item as
IEventDispatcher).addEventListener("itemRollOver", rolloverHandler);
+ (event.item as
IEventDispatcher).addEventListener("itemRollOut", rolloutHandler);
+ }
+
+ /**
+ * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+ */
+ protected function
handleItemRemoved(event:ItemRemovedEvent):void
+ {
+ (event.item as
IEventDispatcher).removeEventListener("itemClicked", selectedHandler);
+ (event.item as
IEventDispatcher).removeEventListener("itemRollOver", rolloverHandler);
+ (event.item as
IEventDispatcher).removeEventListener("itemRollOut", rolloutHandler);
+ }
+
+ protected function selectedHandler(event:ItemClickedEvent):void
+ {
+ listModel.selectedIndex = event.index;
+ listModel.selectedItem = event.data;
+ sendStrandEvent(_strand,"change");
+ }
+
+ /**
+ * @royaleemitcoercion
org.apache.royale.style.renderers.IListItemRenderer
+ */
+ protected function rolloverHandler(event:Event):void
+ {
+ var renderer:IListItemRenderer = event.currentTarget as
IListItemRenderer;
+ if (renderer) {
+ listModel.rollOverIndex = renderer.index;
+ }
+ }
+
+ /**
+ * @royaleemitcoercion
org.apache.royale.style.renderers.IListItemRenderer
+ */
+ protected function rolloutHandler(event:Event):void
+ {
+ var renderer:IListItemRenderer = event.currentTarget
as IListItemRenderer;
+ if (renderer) {
+ renderer.hovered = false;
+ renderer.down = false;
+ listModel.rollOverIndex = -1;
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/beads/ListModel.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/beads/ListModel.as
new file mode 100644
index 0000000000..02a3718cf5
--- /dev/null
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/beads/ListModel.as
@@ -0,0 +1,215 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.style.beads
+{
+ import org.apache.royale.core.DispatcherBead;
+ import org.apache.royale.core.ISelectionModel;
+ import org.apache.royale.core.IRollOverModel;
+ import org.apache.royale.collections.IArrayList;
+ import org.apache.royale.html.util.getLabelFromData;
+ import org.apache.royale.events.Event;
+
+ public class ListModel extends DispatcherBead implements ISelectionModel,
IRollOverModel
+ {
+ public function ListModel()
+ {
+
+ }
+ private var _untypedProvider:Object;
+ private var hasArray:Boolean;
+ /**
+ * @copy org.apache.royale.core.ISelectionModel#dataProvider
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.0
+ */
+ public function get dataProvider():Object
+ {
+ return _untypedProvider;
+ }
+
+ /**
+ * @private
+ * @royaleignorecoercion
org.apache.royale.collections.IArrayList
+ */
+ public function set dataProvider(value:Object):void
+ {
+ COMPILE::JS
+ {
+ if (value == _untypedProvider) return;
+ hasArray = Array.isArray(value);
+ _untypedProvider = value;
+ if(!value || _selectedIndex >= value.length)
+ _selectedIndex = -1;
+
+ _selectedItem = getItemAt(_selectedIndex);
+
+ dispatchEvent(new Event("dataProviderChanged"));
+ }
+ }
+ /**
+ * @royaleignorecoercion Array
+ * @royaleignorecoercion
org.apache.royale.collections.IArrayList
+ */
+ public function getItemAt(index:int):Object{
+ if(index < 0 || !_untypedProvider){
+ return null;
+ }
+ if(index >= _untypedProvider.length){
+ return null
+ }
+ if(hasArray){
+ return (_untypedProvider as Array)[index];
+ }
+ return (_untypedProvider as
IArrayList).getItemAt(index);
+ }
+ /**
+ * @royaleignorecoercion Array
+ * @royaleignorecoercion
org.apache.royale.collections.IArrayList
+ */
+ private function getItemIndex(item:Object):int{
+ if(hasArray){
+ return (_untypedProvider as
Array).indexOf(item);
+ } else if(_untypedProvider){
+ return (_untypedProvider as
IArrayList).getItemIndex(item);
+ }
+ return -1;
+ }
+ private var _selectedIndex:int = -1;
+ private var _rollOverIndex:int = -1;
+ private var _labelField:String = null;
+
+ /**
+ * @copy org.apache.royale.core.ISelectionModel#labelField
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.0
+ */
+ public function get labelField():String
+ {
+ return _labelField;
+ }
+
+ /**
+ * @private
+ */
+ public function set labelField(value:String):void
+ {
+ if (value != _labelField) {
+ _labelField = value;
+ dispatchEvent(new Event("labelFieldChanged"));
+ }
+ }
+
+ /**
+ * @copy org.apache.royale.core.ISelectionModel#selectedIndex
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.0
+ */
+ public function get selectedIndex():int
+ {
+ return _selectedIndex;
+ }
+
+ /**
+ * @private
+ */
+ public function set selectedIndex(value:int):void
+ {
+ if (value == _selectedIndex) return;
+
+ _selectedIndex = value;
+ _selectedItem = getItemAt(value);
+ dispatchEvent(new Event("selectedIndexChanged"));
+ }
+
+ /**
+ * @copy org.apache.royale.core.IRollOverModel#rollOverIndex
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.0
+ */
+ public function get rollOverIndex():int
+ {
+ return _rollOverIndex;
+ }
+
+ /**
+ * @private
+ */
+ public function set rollOverIndex(value:int):void
+ {
+ if (value != _rollOverIndex) {
+ _rollOverIndex = value;
+ dispatchEvent(new
Event("rollOverIndexChanged"));
+ }
+ }
+
+ private var _selectedItem:Object;
+
+ /**
+ * @copy org.apache.royale.core.ISelectionModel#selectedItem
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.0
+ */
+ public function get selectedItem():Object
+ {
+ return _selectedItem;
+ }
+
+ /**
+ * @private
+ */
+ public function set selectedItem(value:Object):void
+ {
+ if (value == _selectedItem) return;
+
+ _selectedItem = value;
+ _selectedIndex = getItemIndex(value);
+ dispatchEvent(new Event("selectedItemChanged"));
+ dispatchEvent(new Event("selectedIndexChanged"));
+ }
+
+ public function refreshIndex():void{
+ _selectedIndex = getItemIndex(_selectedItem);
+ dispatchEvent(new Event("selectedItemChanged"));
+ dispatchEvent(new Event("selectedIndexChanged"));
+ }
+ public function getLabelForIndex(index:int):String{
+ var item:Object = getItemAt(index);
+ if(item){
+ return getLabelFromData(this,item);
+ }
+ return "";
+ }
+
+ }
+}
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/beads/ListView.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/beads/ListView.as
new file mode 100644
index 0000000000..0e37da1fb2
--- /dev/null
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/beads/ListView.as
@@ -0,0 +1,99 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.style.beads
+{
+ import org.apache.royale.html.beads.DataContainerView;
+ import org.apache.royale.events.Event;
+ import org.apache.royale.core.IRollOverModel;
+ import org.apache.royale.core.IParent;
+ import org.apache.royale.functional.decorator.debounceLong;
+ import org.apache.royale.style.DataItemRenderer;
+ import org.apache.royale.style.renderers.ListItemRenderer;
+
+ public class ListView extends DataContainerView
+ {
+ public function ListView()
+ {
+ super();
+ runChangeHandler = debounceLong(function():void{
+ selectionChangeHandler(null);
+ },0);
+ }
+
+ protected var listModel:ListModel;
+
+ protected var lastSelectedIndex:int = -1;
+ protected var lastFocusedIndex:int = -1;
+ // protected var lastKeyboardFocusedIndex:int = -1;
+
+ /**
+ * @private
+ * @royaleignorecoercion org.apache.royale.core.ISelectionModel
+ */
+ override protected function handleInitComplete(event:Event):void
+ {
+ listModel = dataModel as ListModel;
+ listModel.addEventListener("selectedIndexChanged",
selectionChangeHandler);
+ listModel.addEventListener("rollOverIndexChanged",
rollOverIndexChangeHandler);
+ // Don't call super because we don't need the overhead
of layout
+ // super.handleInitComplete(event);
+ }
+ private var focusableItemRenderer:ListItemRenderer;
+ override protected function
itemsCreatedHandler(event:Event):void
+ {
+ super.itemsCreatedHandler(event);
+ runChangeHandler();
+ }
+ private var runChangeHandler:Function;
+ /**
+ * @private
+ * @royaleignorecoercion
org.apache.royale.style.renderers.ListItemRenderer
+ */
+ protected function selectionChangeHandler(event:Event):void
+ {
+ var ir:ListItemRenderer =
dataGroup.getItemRendererForIndex(lastSelectedIndex) as ListItemRenderer;
+ if(ir)
+ ir.selected = false;
+ ir =
dataGroup.getItemRendererForIndex(listModel.selectedIndex) as ListItemRenderer;
+ if(ir)
+ ir.selected = true;
+
+ lastSelectedIndex = listModel.selectedIndex;
+ }
+
+ protected var lastRollOverIndex:int = -1;
+
+ /**
+ * @private
+ * @royaleignorecoercion
org.apache.royale.style.renderers.ListItemRenderer
+ * * @royaleignorecoercion org.apache.royale.core.IRollOverModel
+ */
+ protected function rollOverIndexChangeHandler(event:Event):void
+ {
+ var ir:ListItemRenderer =
dataGroup.getItemRendererForIndex(lastRollOverIndex) as ListItemRenderer;
+ if(ir)
+ ir.hovered = false;
+ ir = dataGroup.getItemRendererForIndex((listModel as
IRollOverModel).rollOverIndex) as ListItemRenderer;
+ if(ir)
+ ir.hovered = true;
+ lastRollOverIndex = (listModel as
IRollOverModel).rollOverIndex;
+ }
+ }
+
+}
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/colors/ColorSwatch.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/colors/ColorSwatch.as
index d17dcddf3a..75581ad554 100644
---
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/colors/ColorSwatch.as
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/colors/ColorSwatch.as
@@ -170,5 +170,33 @@ package org.apache.royale.style.colors
public function getRGB():Array{
return rgb;
}
+ /**
+ * Returns true if this color swatch is considered a "dark"
color,
+ * meaning that it would require light text for good contrast.
+ * This is based on the base color, shade, not the opacity.
+ */
+ public function isDark():Boolean
+ {
+ if (!rgb || rgb.length < 3)
+ {
+ return false;
+ }
+
+ var r:Number = Number(rgb[0]) / 255;
+ var g:Number = Number(rgb[1]) / 255;
+ var b:Number = Number(rgb[2]) / 255;
+
+ var rLinear:Number = toLinearChannel(r);
+ var gLinear:Number = toLinearChannel(g);
+ var bLinear:Number = toLinearChannel(b);
+
+ var luminance:Number = 0.2126 * rLinear + 0.7152 *
gLinear + 0.0722 * bLinear;
+ return luminance < 0.179;
+ }
+
+ private function toLinearChannel(channel:Number):Number
+ {
+ return (channel <= 0.04045) ? channel / 12.92 :
Math.pow((channel + 0.055) / 1.055, 2.4);
+ }
}
}
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/ColumnGap.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/data/IDataItem.as
similarity index 80%
copy from
frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/ColumnGap.as
copy to
frameworks/projects/Style/src/main/royale/org/apache/royale/style/data/IDataItem.as
index 5974f7e1f8..6cd7f553d3 100644
---
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/ColumnGap.as
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/data/IDataItem.as
@@ -16,14 +16,13 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.style.stylebeads.flexgrid
+package org.apache.royale.style.data
{
-
- public class ColumnGap extends Gap
- {
- public function ColumnGap(value:* = null)
- {
- super("gap-x", "column-gap", value);
- }
- }
+ public interface IDataItem
+ {
+ function get disabled():Boolean;
+ function set disabled(value:Boolean):void;
+ function get selected():Boolean;
+ function set selected(value:Boolean):void;
+ }
}
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/ColumnGap.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/data/IListItem.as
similarity index 69%
copy from
frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/ColumnGap.as
copy to
frameworks/projects/Style/src/main/royale/org/apache/royale/style/data/IListItem.as
index 5974f7e1f8..e9d0bfaa8f 100644
---
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/ColumnGap.as
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/data/IListItem.as
@@ -16,14 +16,21 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.style.stylebeads.flexgrid
+package org.apache.royale.style.data
{
+ public interface IListItem extends IDataItem
+ {
+ function get text():String;
+ function set text(value:String):void;
+ function get label():String;
+ function get icon():String;
+ function set icon(value:String):void;
- public class ColumnGap extends Gap
- {
- public function ColumnGap(value:* = null)
- {
- super("gap-x", "column-gap", value);
- }
- }
+ /**
+ * src of an icon to be rendered an an img
+ */
+ function get imageIcon():String;
+ function set imageIcon(value:String):void;
+
+ }
}
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/ColumnGap.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/renderers/IListItemRenderer.as
similarity index 65%
copy from
frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/ColumnGap.as
copy to
frameworks/projects/Style/src/main/royale/org/apache/royale/style/renderers/IListItemRenderer.as
index 5974f7e1f8..a2116ec8b9 100644
---
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/ColumnGap.as
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/renderers/IListItemRenderer.as
@@ -16,14 +16,19 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.style.stylebeads.flexgrid
+package org.apache.royale.style.renderers
{
+ import org.apache.royale.core.ILabelFieldItemRenderer;
+ import org.apache.royale.core.IHasLabelField;
+ import org.apache.royale.core.IHasDataField;
- public class ColumnGap extends Gap
+ public interface IListItemRenderer extends ILabelFieldItemRenderer,
IHasLabelField, IHasDataField
{
- public function ColumnGap(value:* = null)
- {
- super("gap-x", "column-gap", value);
- }
+ function get selected():Boolean;
+ function set selected(value:Boolean):void;
+ function get hovered():Boolean;
+ function set hovered(value:Boolean):void;
+ function get down():Boolean;
+ function set down(value:Boolean):void;
}
}
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/renderers/ListItemRenderer.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/renderers/ListItemRenderer.as
new file mode 100644
index 0000000000..a5e88d35cb
--- /dev/null
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/renderers/ListItemRenderer.as
@@ -0,0 +1,185 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.style.renderers
+{
+ import org.apache.royale.style.DataItemRenderer;
+ import org.apache.royale.html.util.getLabelFromData;
+ import org.apache.royale.core.IParent;
+ import org.apache.royale.style.Icon;
+ import org.apache.royale.style.data.IListItem;
+ import org.apache.royale.style.elements.Img;
+
+ public class ListItemRenderer extends DataItemRenderer implements
IListItemRenderer
+ {
+ public function ListItemRenderer()
+ {
+ super();
+ }
+ private var _listData:Object;
+
+ [Bindable("__NoChangeEvent__")]
+
+ /**
+ * Additional data about the list structure the itemRenderer
may
+ * find useful.
+ *
+ * @langversion 3.0
+ * @productversion Royale 0.9.13
+ */
+ public function get listData():Object
+ {
+ return _listData;
+ }
+ public function set listData(value:Object):void
+ {
+ _listData = value;
+ }
+ protected var firstElementPosition:Number = 0;
+ protected function get iconParent():IParent
+ {
+ return this;
+ }
+ override public function set data(value:Object):void
+ {
+ super.data = value;
+ setText(getLabelFromData(this, value));
+ COMPILE::JS
+ {
+ var iconSelector:String = getIconSelector();
+ if (iconSelector)
+ {
+ if (icon)
+ {
+ iconParent.removeElement(icon);
+ }
+ icon = new Icon(iconSelector);
+ // TODO apply styles to icon
+ iconParent.addElementAt(icon,
firstElementPosition);
+ }
+ else if (icon)
+ {
+ icon.setStyle("display", "none");
+ }
+
+ var iconSrc:String = getImageIcon();
+ if (iconSrc)
+ {
+ if (!imageIcon)
+ {
+ imageIcon = new Img();
+ imageIcon.src = iconSrc;
+ // TODO apply styles to
imageIcon
+
iconParent.addElementAt(imageIcon, firstElementPosition);
+ }
+ else
+ {
+ imageIcon.setStyle("display",
null);
+ imageIcon.src = iconSrc;
+ }
+ }
+ else if (imageIcon)
+ {
+ imageIcon.setStyle("display", "none");
+ }
+ }
+ }
+ COMPILE::JS
+ protected var textNode:Text;
+ protected function setText(value:String):void
+ {
+ COMPILE::JS
+ {
+ if (textNode == null)
+ {
+ textNode = document.createTextNode('')
as Text;
+ element.appendChild(textNode);
+ }
+
+ textNode.nodeValue = value;
+ }
+ }
+
+ /**
+ * @royaleignorecoercion org.apache.royale.style.data.IListItem
+ */
+ private function getIconSelector():String
+ {
+ if (data is IListItem)
+ {
+ return (data as IListItem).icon;
+ }
+ return data["icon"];
+ }
+ private function getImageIcon():String
+ {
+ if (data is IListItem)
+ {
+ return (data as IListItem).imageIcon;
+ }
+ return data["imageIcon"];
+ }
+ protected var icon:Icon;
+ protected var imageIcon:Img;
+
+ override protected function getTag():String
+ {
+ return "li";
+ }
+
+ public function get selected():Boolean
+ {
+ return getAttribute("data-selected") != null;
+ }
+
+ public function set selected(value:Boolean):void
+ {
+ toggleAttribute("data-selected", value);
+ }
+
+ public function get hovered():Boolean
+ {
+ return getAttribute("data-hovered") != null;
+ }
+
+ public function set hovered(value:Boolean):void
+ {
+ toggleAttribute("data-hovered", value);
+ }
+
+ public function get down():Boolean
+ {
+ return getAttribute("data-down") != null;
+ }
+
+ public function set down(value:Boolean):void
+ {
+ toggleAttribute("data-down", value);
+ }
+
+ public function get disabled():Boolean
+ {
+ return getAttribute("data-disabled") != null;
+ }
+
+ public function set disabled(value:Boolean):void
+ {
+ toggleAttribute("data-disabled", value);
+ }
+ }
+}
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/skins/ListRendererSkin.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/skins/ListRendererSkin.as
new file mode 100644
index 0000000000..50efacbd68
--- /dev/null
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/skins/ListRendererSkin.as
@@ -0,0 +1,163 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.style.skins
+{
+ import org.apache.royale.style.StyleSkin;
+ import org.apache.royale.core.IStrand;
+ import org.apache.royale.style.stylebeads.layout.Display;
+ import org.apache.royale.style.stylebeads.flexgrid.FlexDirection;
+ import org.apache.royale.style.stylebeads.flexgrid.AlignItems;
+ import org.apache.royale.style.stylebeads.flexgrid.Gap;
+ import org.apache.royale.style.stylebeads.flexgrid.JustifyContent;
+ import org.apache.royale.style.stylebeads.flexgrid.RowGap;
+ import org.apache.royale.style.stylebeads.typography.TextSize;
+ import org.apache.royale.style.stylebeads.typography.FontWeight;
+ import org.apache.royale.style.stylebeads.spacing.Margin;
+ import org.apache.royale.style.stylebeads.states.HoverState;
+ import org.apache.royale.style.stylebeads.interact.Cursor;
+ import org.apache.royale.style.stylebeads.background.BackgroundColor;
+ import
org.apache.royale.style.stylebeads.states.attribute.SelectedState;
+ import org.apache.royale.style.stylebeads.typography.TextColor;
+ import org.apache.royale.style.IStyleUIBase;
+ import org.apache.royale.style.colors.ThemeColorSet;
+ import org.apache.royale.style.util.ThemeManager;
+ import org.apache.royale.style.colors.ColorSwatch;
+ import org.apache.royale.style.stylebeads.spacing.Padding;
+
+ public class ListRendererSkin extends StyleSkin
+ {
+ public function ListRendererSkin()
+ {
+ super();
+ }
+ /**
+ * @royaleignorecoercion org.apache.royale.style.IStyleUIBase
+ */
+ override public function set strand(value:IStrand):void
+ {
+ super.strand = value;
+ if(_styles)
+ return;
+
+ var host:IStyleUIBase = value as IStyleUIBase;
+ // var colorSet:ThemeColorSet =
ThemeManager.instance.activeTheme.themeColorSet;
+ // var colorName:String = host ? host.theme :
ThemeColorSet.NEUTRAL;
+ // var selectedColor:ColorSwatch =
colorSet.getSwatch(ThemeColorSet.PRIMARY,500);
+ // var enabledBorder:ColorSwatch =
colorSet.getSwatch(ThemeColorSet.NEUTRAL,500);
+
+ var selectedColor:ColorSwatch = new
ColorSwatch("slate",800);
+ var hoverColor:ColorSwatch =
selectedColor.getVariant(100);
+ var textColor:ColorSwatch = new
ColorSwatch("slate",800);
+ var selectedTextColor:ColorSwatch =
selectedColor.isDark() ? textColor.getVariant(50) : textColor.getVariant(900);
+ var padding:Padding = new Padding();
+ padding.block = 1;
+ padding.inline = .75;
+ _styles = [
+ new Display("flex"),
+ new FlexDirection("row"),
+ new AlignItems("center"),
+ new JustifyContent("start"),
+ new RowGap(1),
+ padding,
+ new TextSize("sm"),
+ new FontWeight("normal"),
+ new Cursor("pointer"),
+ new BackgroundColor("transparent"),
+ new TextColor(textColor),
+ new HoverState([
+ new BackgroundColor(hoverColor),
+ ]),
+ new SelectedState([
+ new BackgroundColor(selectedColor),
+ new TextColor(selectedTextColor)
+ ])
+ ];
+ host.setStyles(styles);
+ }
+ }
+}
+/**
+ * border-radius: var(--radius-field);
+ text-align: start;
+ text-wrap: balance;
+ -webkit-user-select: none;
+ user-select: none;
+ grid-auto-columns: minmax(auto,max-content) auto max-content;
+ grid-auto-flow: column;
+ align-content: flex-start;
+ align-items: center;
+ gap: .5rem;
+ padding-block: .375rem;
+ padding-inline: .75rem;
+ transition-property: color,background-color,box-shadow;
+ transition-duration: .2s;
+ transition-timing-function: cubic-bezier(0,0,.2,1);
+ display: grid;
+ layer utilities {
+ @layer daisyui.l1.l2 {
+ :where(:not(ul, details, .menu-title, .btn)).menu-active {
+ color: var(--menu-active-fg);
+ background-color: var(--menu-active-bg);
+ background-size: auto,calc(var(--noise)*100%);
+ background-image: none,var(--fx-noise);
+ }
+ }
+@layer utilities {
+ @layer daisyui.l1.l2.l3 {
+ @supports (color:color-mix(in lab,red,red)) {
+ .menu :where(li:not(.menu-title, .disabled) > :not(ul, details,
.menu-title):not(.menu-active, :active, .btn):hover, li:not(.menu-title,
.disabled) > details > summary:not(.menu-title):not(.menu-active, :active,
.btn):hover) {
+ background-color: color-mix(in
oklab,var(--color-base-content)10%,transparent);
+ }
+ }
+ }
+}
+ list-style-type: none;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ margin-left: 0px;
+ margin-right: 0px;
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 1.5;
+ font-style: normal;
+ .spectrum--light, .spectrum--light .spectrum-Body {
+ color: rgb(75, 75, 75);
+
+ position: relative;
+ display: inline-flex;
+ align-items: center;
+ justify-content: left;
+ box-sizing: border-box;
+ width: 100%;
+ min-height: 32px;
+ padding-left: 12px;
+ padding-right: 12px;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ font-size: 14px;
+ font-weight: 400;
+ font-style: normal;
+ word-break: break-word;
+ hyphens: auto;
+ cursor: pointer;
+ border-radius: 4px;
+ text-decoration: none;
+ transition: background-color 130ms ease-out, color 130ms ease-out;
+}
+ */
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/ColumnGap.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/ColumnGap.as
index 5974f7e1f8..89786fd823 100644
---
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/ColumnGap.as
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/ColumnGap.as
@@ -23,7 +23,7 @@ package org.apache.royale.style.stylebeads.flexgrid
{
public function ColumnGap(value:* = null)
{
- super("gap-x", "column-gap", value);
+ super(value, "gap-x", "column-gap");
}
}
}
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/Gap.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/Gap.as
index b7cec29990..7c26685e3e 100644
---
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/Gap.as
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/Gap.as
@@ -25,7 +25,7 @@ package org.apache.royale.style.stylebeads.flexgrid
public class Gap extends LeafStyleBase
{
- public function Gap(selectorBase:String="gap",
ruleBase:String="gap", value:* = null)
+ public function Gap(value:* = null, selectorBase:String="gap",
ruleBase:String="gap")
{
super(selectorBase, ruleBase, value);
// TODO: Is this the correct default?
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/JustifyContent.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/JustifyContent.as
index 7b6efa1cfe..64404907b6 100644
---
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/JustifyContent.as
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/JustifyContent.as
@@ -40,10 +40,10 @@ package org.apache.royale.style.stylebeads.flexgrid
}
return [value];
}
- [Inspectable(category="General", enumeration="center,safe
center,start,flex-end,safe
flex-end,space-between,space-around,space-evenly,baseline,stretch,normal",
defaultValue="normal")]
+ [Inspectable(category="General", enumeration="center,safe
center,start,end,safe
end,space-between,space-around,space-evenly,baseline,stretch,normal",
defaultValue="normal")]
override public function set value(value:*):void
{
- assert(["center","center safe","safe
center","start","flex-end","flex-end safe","safe
flex-end","space-between","space-around","space-evenly","baseline","stretch","normal"].indexOf(value)
>= 0, "Invalid value for place-content: " + value);
+ assert(["center","center safe","safe
center","start","end","end safe","safe
end","space-between","space-around","space-evenly","baseline","stretch","normal"].indexOf(value)
>= 0, "Invalid value for place-content: " + value);
_value = value;
var vals:Array = normalizeSafeKeyword(value);
calculatedRuleValue = vals[0];
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/RowGap.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/RowGap.as
index f5836ab9eb..eba5d4cb1f 100644
---
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/RowGap.as
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/RowGap.as
@@ -23,7 +23,7 @@ package org.apache.royale.style.stylebeads.flexgrid
{
public function RowGap(value:* = null)
{
- super("gap-y", "row-gap", value);
+ super(value, "gap-y", "row-gap");
}
}
}
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/states/attribute/SelectedState.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/states/attribute/SelectedState.as
index 3ecac79862..36893b2f6c 100644
---
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/states/attribute/SelectedState.as
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/states/attribute/SelectedState.as
@@ -20,10 +20,9 @@ package org.apache.royale.style.stylebeads.states.attribute
{
public class SelectedState extends DataState
{
- public function SelectedState()
+ public function SelectedState(styles:Array = null)
{
- super();
- dataType = "selected";
+ super("selected", styles);
}
}
}
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/support/UIItemRendererBase.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/support/UIItemRendererBase.as
index aabf2941af..bdf53bcfaa 100644
---
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/support/UIItemRendererBase.as
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/support/UIItemRendererBase.as
@@ -132,7 +132,10 @@ package org.apache.royale.style.support
public function set data(value:Object):void
{
_data = value;
+ if(focusable)
+ tabFocusable = true;
}
+ public var focusable:Boolean = true;
private var _labelField:String = "label";