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 57a500be56 flex and grid positioning
57a500be56 is described below
commit 57a500be561e8f1273910145a3044e9d1b91a85b
Author: Harbs <[email protected]>
AuthorDate: Mon Feb 23 15:13:37 2026 +0200
flex and grid positioning
---
.../Style/src/main/resources/basic-manifest.xml | 2 +
.../projects/Style/src/main/royale/StyleClasses.as | 1 +
.../royale/style/stylebeads/ContainerPosition.as | 229 +++++++++++++++++++++
.../apache/royale/style/stylebeads/SelfPosition.as | 147 +++++++++++++
.../royale/org/apache/royale/style/util/CSSUnit.as | 3 +
.../org/apache/royale/style/util/ContentAlign.as | 52 +++++
6 files changed, 434 insertions(+)
diff --git a/frameworks/projects/Style/src/main/resources/basic-manifest.xml
b/frameworks/projects/Style/src/main/resources/basic-manifest.xml
index 95e7330617..19021a19b0 100644
--- a/frameworks/projects/Style/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/Style/src/main/resources/basic-manifest.xml
@@ -20,6 +20,7 @@
<componentPackage>
+ <component id="ContainerPosition"
class="org.apache.royale.style.stylebeads.ContainerPosition"/>
<component id="FlexContainerStyle"
class="org.apache.royale.style.stylebeads.FlexContainerStyle"/>
<component id="FlexItemStyle"
class="org.apache.royale.style.stylebeads.FlexItemStyle"/>
<component id="HeightStyle"
class="org.apache.royale.style.stylebeads.HeightStyle"/>
@@ -33,6 +34,7 @@
<component id="OverflowStyle"
class="org.apache.royale.style.stylebeads.OverflowStyle"/>
<component id="PaddingStyle"
class="org.apache.royale.style.stylebeads.PaddingStyle"/>
<component id="PositionStyle"
class="org.apache.royale.style.stylebeads.PositionStyle"/>
+ <component id="SelfPosition"
class="org.apache.royale.style.stylebeads.SelfPosition"/>
<component id="SizeStyle"
class="org.apache.royale.style.stylebeads.SizeStyle"/>
<component id="WidthStyle"
class="org.apache.royale.style.stylebeads.WidthStyle"/>
</componentPackage>
diff --git a/frameworks/projects/Style/src/main/royale/StyleClasses.as
b/frameworks/projects/Style/src/main/royale/StyleClasses.as
index 5464cbe3aa..feb357d886 100644
--- a/frameworks/projects/Style/src/main/royale/StyleClasses.as
+++ b/frameworks/projects/Style/src/main/royale/StyleClasses.as
@@ -55,6 +55,7 @@ package
import org.apache.royale.style.colors.ZincSwatch; ZincSwatch;
import org.apache.royale.style.util.StyleManager; StyleManager;
import org.apache.royale.style.util.ThemeManager; ThemeManager;
+ import org.apache.royale.style.util.ContentAlign; ContentAlign;
}
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/ContainerPosition.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/ContainerPosition.as
new file mode 100644
index 0000000000..035a1ed2c0
--- /dev/null
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/ContainerPosition.as
@@ -0,0 +1,229 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.stylebeads
+{
+ public class ContainerPosition extends StyleBeadBase
+ {
+ public function ContainerPosition()
+ {
+ super();
+ }
+
+ private var _justifyContent:String;
+ /**
+ * Applicabale for both flex and grid containers.
+ * Defines the alignment along the main axis.
+ * The main axis is defined by the flex-direction or
grid-auto-flow property.
+ * By default, the main axis is the horizontal axis (row).
+ *
+ * @langversion 3.0
+ * @productversion Royale 0.9.13
+ */
+ [Inspectable(category="General",
enumeration="flex-start,flex-end,center,space-between,space-around,space-evenly,stretch,baseline,normal",
defaultValue="")]
+ public function get justifyContent():String
+ {
+ return _justifyContent;
+ }
+ public function set justifyContent(value:String):void
+ {
+ _justifyContent = value;
+ }
+
+ private var _alignItems:String;
+ /**
+ * Applicabale for both flex and grid containers.
+ * Defines the default alignment for items along the cross axis.
+ * The cross axis is perpendicular to the main axis.
+ * By default, the cross axis is the vertical axis (column).
+ *
+ * @langversion 3.0
+ * @productversion Royale 0.9.13
+ */
+ [Inspectable(category="General",
enumeration="flex-start,flex-end,center,baseline,last baseline,stretch",
defaultValue="")]
+ public function get alignItems():String
+ {
+ return _alignItems;
+ }
+ public function set alignItems(value:String):void
+ {
+ _alignItems = value;
+ }
+
+ private var _justifyItems:String;
+ [Inspectable(category="General",
enumeration="start,end,center,stretch,normal", defaultValue="")]
+ /**
+ * Applicabale for grid containers.
+ * Defines the default alignment for items along the main axis.
+ * The main axis is defined by the flex-direction or
grid-auto-flow property.
+ * By default, the main axis is the horizontal axis (row).
+ */
+ public function get justifyItems():String
+ {
+ return _justifyItems;
+ }
+ public function set justifyItems(value:String):void
+ {
+ _justifyItems = value;
+ }
+
+ private var _alignContent:String;
+ [Inspectable(category="General",
enumeration="normal,center,flex-start,flex-end,space-between,space-around,space-evenly,baseline,stretch",
defaultValue="")]
+ /**
+ * Applicabale for grid containers.
+ * Defines the alignment of the grid within the grid container
when the size of the grid is smaller than the size of the container.
+ * The main axis is defined by the flex-direction or
grid-auto-flow property.
+ *
+ * @langversion 3.0
+ * @productversion Royale 0.9.13
+ */
+ public function get alignContent():String
+ {
+ return _alignContent;
+ }
+
+ public function set alignContent(value:String):void
+ {
+ _alignContent = value;
+ }
+
+ private var _placeContent:String;
+
+ [Inspectable(category="General",
enumeration="center,start,end,space-between,space-around,space-evenly,baseline,stretch",
defaultValue="")]
+ /**
+ * Applicabale for grid containers.
+ * A shorthand property for align-content and justify-content.
+ * The main axis is defined by the flex-direction or
grid-auto-flow property.
+ * By default, the main axis is the horizontal axis (row).
+ *
+ * @langversion 3.0
+ * @productversion Royale 0.9.13
+ */
+ public function get placeContent():String
+ {
+ return _placeContent;
+ }
+
+ public function set placeContent(value:String):void
+ {
+ _placeContent = value;
+ }
+ private var _placeItems:String;
+
+ [Inspectable(category="General", enumeration="start,end,safe
end,center,safe center,baseline,stretch", defaultValue="")]
+ /**
+ * Applicabale for grid containers.
+ * A shorthand property for align-items and justify-items.
+ * The main axis is defined by the flex-direction or
grid-auto-flow property.
+ * By default, the main axis is the horizontal axis (row).
+ *
+ * @langversion 3.0
+ * @productversion Royale 0.9.13
+ */
+ public function get placeItems():String
+ {
+ return _placeItems;
+ }
+
+ public function set placeItems(value:String):void
+ {
+ _placeItems = value;
+ }
+
+ public var safe:Boolean = false;
+ private function needsSafe(val:String):Boolean
+ {
+ if(!safe)
+ return false;
+ return val == "end" || val == "center" || val ==
"flex-end";
+ }
+ private function safeSelector(val:String):String
+ {
+ if(!safe)
+ return "";
+ return needsSafe(val) ? "-safe" : "";
+ }
+ private function safeRule(val:String):String
+ {
+ if(!safe)
+ return "";
+ return needsSafe(val) ? ": safe " : ": ";
+ }
+ override public function get selectors():Array
+ {
+ var safeStr:String = safeSelector(justifyContent);
+ var jcStr:String = ".justify-" + justifyContent +
safeStr;
+ safeStr = safeSelector(alignItems);
+ var aiStr:String = ".align-" + alignItems + safeStr;
+ safeStr = safeSelector(justifyItems);
+ var jiStr:String = ".justify-items-" + justifyItems +
safeStr;
+ safeStr = safeSelector(alignContent);
+ var acStr:String = ".align-content-" + alignContent +
safeStr;
+ safeStr = safeSelector(placeContent);
+ var pcStr:String = ".place-content-" + placeContent +
safeStr;
+ safeStr = safeSelector(placeItems);
+ var piStr:String = ".place-items-" + placeItems +
safeStr;
+
+ var retVal:Array = [];
+ if(justifyContent)
+ retVal.push(jcStr);
+ if(alignItems)
+ retVal.push(aiStr);
+ if(justifyItems)
+ retVal.push(jiStr);
+ if(alignContent)
+ retVal.push(acStr);
+ if(placeContent)
+ retVal.push(pcStr);
+ if(placeItems)
+ retVal.push(piStr);
+ return retVal;
+ }
+
+ override public function get rules():Array
+ {
+ var safeStr:String = safeRule(justifyContent);
+ var jcStr:String = "justify-content" + safeStr +
justifyContent;
+ safeStr = safeRule(alignItems);
+ var aiStr:String = "align-items" + safeStr + alignItems;
+ safeStr = safeRule(justifyItems);
+ var jiStr:String = "justify-items" + safeStr +
justifyItems;
+ safeStr = safeRule(alignContent);
+ var acStr:String = "align-content" + safeStr +
alignContent;
+ safeStr = safeRule(placeContent);
+ var pcStr:String = "place-content" + safeStr +
placeContent;
+ safeStr = safeRule(placeItems);
+ var piStr:String = "place-items" + safeStr + placeItems;
+
+ var retVal:Array = [];
+ if(justifyContent)
+ retVal.push(jcStr);
+ if(alignItems)
+ retVal.push(aiStr);
+ if(justifyItems)
+ retVal.push(jiStr);
+ if(alignContent)
+ retVal.push(acStr);
+ if(placeContent)
+ retVal.push(pcStr);
+ if(placeItems)
+ retVal.push(piStr);
+ return retVal;
+ }
+ }
+}
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/SelfPosition.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/SelfPosition.as
new file mode 100644
index 0000000000..0244bbd307
--- /dev/null
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/SelfPosition.as
@@ -0,0 +1,147 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.stylebeads
+{
+ public class SelfPosition extends StyleBeadBase
+ {
+ public function SelfPosition()
+ {
+ super();
+ }
+
+ private var _justifySelf:String;
+ /**
+ * Applicabale for both flex and grid containers.
+ * Defines the alignment along the main axis.
+ * The main axis is defined by the flex-direction or
grid-auto-flow property.
+ * By default, the main axis is the horizontal axis (row).
+ *
+ * @langversion 3.0
+ * @productversion Royale 0.9.13
+ */
+ [Inspectable(category="General",
enumeration="auto,start,center,end,stretch", defaultValue="")]
+ public function get justifySelf():String
+ {
+ return _justifySelf;
+ }
+ public function set justifySelf(value:String):void
+ {
+ _justifySelf = value;
+ }
+
+ private var _alignSelf:String;
+ /**
+ * Applicabale for both flex and grid containers.
+ * Defines the default alignment for items along the cross axis.
+ * The cross axis is perpendicular to the main axis.
+ * By default, the cross axis is the vertical axis (column).
+ *
+ * @langversion 3.0
+ * @productversion Royale 0.9.13
+ */
+ [Inspectable(category="General",
enumeration="auto,flex-start,flex-end,center,stretch,baseline,last baseline",
defaultValue="")]
+ public function get alignSelf():String
+ {
+ return _alignSelf;
+ }
+ public function set alignSelf(value:String):void
+ {
+ _alignSelf = value;
+ }
+
+ private var _placeSelf:String;
+
+ [Inspectable(category="General",
enumeration="auto,start,center,end,stretch", defaultValue="")]
+ /**
+ * Applicabale for grid containers.
+ * A shorthand property for align-content and justify-content.
+ * The main axis is defined by the flex-direction or
grid-auto-flow property.
+ * By default, the main axis is the horizontal axis (row).
+ *
+ * @langversion 3.0
+ * @productversion Royale 0.9.13
+ */
+ public function get placeSelf():String
+ {
+ return _placeSelf;
+ }
+
+ public function set placeSelf(value:String):void
+ {
+ _placeSelf = value;
+ }
+
+ public var safe:Boolean = false;
+ private function needsSafe(val:String):Boolean
+ {
+ if(!safe)
+ return false;
+ return val == "end" || val == "center" || val ==
"flex-end";
+ }
+ private function safeSelector(val:String):String
+ {
+ if(!safe)
+ return "";
+ return needsSafe(val) ? "-safe" : "";
+ }
+ private function safeRule(val:String):String
+ {
+ if(!safe)
+ return "";
+ return needsSafe(val) ? ": safe " : ": ";
+ }
+ override public function get selectors():Array
+ {
+ var safeStr:String = safeSelector(justifySelf);
+ var jsStr:String = ".justify-" + justifySelf + safeStr;
+ safeStr = safeSelector(alignSelf);
+ var asStr:String = ".align-" + alignSelf + safeStr;
+ safeStr = safeSelector(placeSelf);
+ var psStr:String = ".place-self-" + placeSelf + safeStr;
+
+ var retVal:Array = [];
+ if(justifySelf)
+ retVal.push(jsStr);
+ if(alignSelf)
+ retVal.push(asStr);
+ if(placeSelf)
+ retVal.push(psStr);
+ return retVal;
+ }
+
+ override public function get rules():Array
+ {
+ var safeStr:String = safeRule(justifySelf);
+ var jcStr:String = "justify-self" + safeStr +
justifySelf;
+ safeStr = safeRule(alignSelf);
+ var aiStr:String = "align-self" + safeStr + alignSelf;
+ safeStr = safeRule(placeSelf);
+ var psStr:String = "place-self" + safeStr + placeSelf;
+
+ var retVal:Array = [];
+ if(justifySelf)
+ retVal.push(jcStr);
+ if(alignSelf)
+ retVal.push(aiStr);
+ if(placeSelf)
+ retVal.push(psStr);
+ return retVal;
+ }
+ }
+}
\ No newline at end of file
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/util/CSSUnit.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/util/CSSUnit.as
index df86682335..530427871b 100644
---
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/util/CSSUnit.as
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/util/CSSUnit.as
@@ -18,6 +18,9 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.style.util
{
+ /**
+ * @royalesuppressexport
+ */
public class CSSUnit
{
private function CSSUnit()
diff --git
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/util/ContentAlign.as
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/util/ContentAlign.as
new file mode 100644
index 0000000000..5796a8f2ef
--- /dev/null
+++
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/util/ContentAlign.as
@@ -0,0 +1,52 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.util
+{
+ /**
+ * @royalesuppressexport
+ */
+ public class ContentAlign
+ {
+ public static const NORMAL:String = "normal";
+ public static const STRETCH:String = "stretch";
+ public static const CENTER:String = "center";
+ public static const START:String = "start";
+ public static const END:String = "end";
+ public static const LEFT:String = "left";
+ public static const RIGHT:String = "right";
+ public static const FLEX_START:String = "flex-start";
+ public static const FLEX_END:String = "flex-end";
+ public static const SELF_START:String = "self-start";
+ public static const SELF_END:String = "self-end";
+ public static const ANCHOR_CENTER:String = "anchor-center";
+ public static const SAFE:String = "safe";
+ public static const BASELINE:String = "baseline";
+ public static const FIRST_BASELINE:String = "first-baseline";
+ public static const LAST_BASELINE:String = "last-baseline";
+ public static const SPACE_BETWEEN:String = "space-between";
+ public static const SPACE_AROUND:String = "space-around";
+ public static const SPACE_EVENLY:String = "space-evenly";
+
+ private function ContentAlign()
+ {
+
+ }
+
+ }
+}
\ No newline at end of file