2021-09-07 17:36:50 +03:00
|
|
|
package rui
|
|
|
|
|
|
|
|
import (
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
// TopDownOrientation - subviews are arranged from top to bottom. Synonym of VerticalOrientation
|
|
|
|
TopDownOrientation = 0
|
|
|
|
// StartToEndOrientation - subviews are arranged from left to right. Synonym of HorizontalOrientation
|
|
|
|
StartToEndOrientation = 1
|
|
|
|
// BottomUpOrientation - subviews are arranged from bottom to top
|
|
|
|
BottomUpOrientation = 2
|
|
|
|
// EndToStartOrientation - subviews are arranged from right to left
|
|
|
|
EndToStartOrientation = 3
|
Added some properties and functions
* Added "resize", "grid-auto-flow", "caret-color", and "backdrop-filter" properties
* Added BlurView, BlurViewByID, GetResize, GetGridAutoFlow, GetCaretColor, GetBackdropFilter functions
* The "warp" property for ListView and ListLayout renamed to "list-warp"
* The "warp" property for EditView renamed to "edit-warp"
* Added CertFile and KeyFile optional fields to the AppParams struct.If they are set, then an https connection is created, otherwise http.
2022-06-07 13:07:10 +03:00
|
|
|
// ListWrapOff - subviews are scrolled and "true" if a new row/column starts
|
|
|
|
ListWrapOff = 0
|
|
|
|
// ListWrapOn - the new row/column starts at bottom/right
|
|
|
|
ListWrapOn = 1
|
|
|
|
// ListWrapReverse - the new row/column starts at top/left
|
|
|
|
ListWrapReverse = 2
|
2021-09-07 17:36:50 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
// ListLayout - list-container of View
|
|
|
|
type ListLayout interface {
|
|
|
|
ViewsContainer
|
|
|
|
}
|
|
|
|
|
|
|
|
type listLayoutData struct {
|
|
|
|
viewsContainerData
|
|
|
|
}
|
|
|
|
|
|
|
|
// NewListLayout create new ListLayout object and return it
|
|
|
|
func NewListLayout(session Session, params Params) ListLayout {
|
|
|
|
view := new(listLayoutData)
|
|
|
|
view.Init(session)
|
|
|
|
setInitParams(view, params)
|
|
|
|
return view
|
|
|
|
}
|
|
|
|
|
|
|
|
func newListLayout(session Session) View {
|
|
|
|
return NewListLayout(session, nil)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Init initialize fields of ViewsAlignContainer by default values
|
|
|
|
func (listLayout *listLayoutData) Init(session Session) {
|
|
|
|
listLayout.viewsContainerData.Init(session)
|
|
|
|
listLayout.tag = "ListLayout"
|
|
|
|
listLayout.systemClass = "ruiListLayout"
|
|
|
|
}
|
|
|
|
|
2022-05-22 12:54:02 +03:00
|
|
|
func (listLayout *listLayoutData) String() string {
|
|
|
|
return getViewString(listLayout)
|
|
|
|
}
|
|
|
|
|
Added some properties and functions
* Added "resize", "grid-auto-flow", "caret-color", and "backdrop-filter" properties
* Added BlurView, BlurViewByID, GetResize, GetGridAutoFlow, GetCaretColor, GetBackdropFilter functions
* The "warp" property for ListView and ListLayout renamed to "list-warp"
* The "warp" property for EditView renamed to "edit-warp"
* Added CertFile and KeyFile optional fields to the AppParams struct.If they are set, then an https connection is created, otherwise http.
2022-06-07 13:07:10 +03:00
|
|
|
func (listLayout *listLayoutData) normalizeTag(tag string) string {
|
|
|
|
tag = strings.ToLower(tag)
|
|
|
|
switch tag {
|
|
|
|
case "wrap":
|
|
|
|
tag = ListWrap
|
|
|
|
}
|
|
|
|
return tag
|
|
|
|
}
|
|
|
|
|
2022-07-26 18:36:00 +03:00
|
|
|
func (listLayout *listLayoutData) Get(tag string) any {
|
Added some properties and functions
* Added "resize", "grid-auto-flow", "caret-color", and "backdrop-filter" properties
* Added BlurView, BlurViewByID, GetResize, GetGridAutoFlow, GetCaretColor, GetBackdropFilter functions
* The "warp" property for ListView and ListLayout renamed to "list-warp"
* The "warp" property for EditView renamed to "edit-warp"
* Added CertFile and KeyFile optional fields to the AppParams struct.If they are set, then an https connection is created, otherwise http.
2022-06-07 13:07:10 +03:00
|
|
|
return listLayout.get(listLayout.normalizeTag(tag))
|
|
|
|
}
|
|
|
|
|
2021-09-07 17:36:50 +03:00
|
|
|
func (listLayout *listLayoutData) Remove(tag string) {
|
Added some properties and functions
* Added "resize", "grid-auto-flow", "caret-color", and "backdrop-filter" properties
* Added BlurView, BlurViewByID, GetResize, GetGridAutoFlow, GetCaretColor, GetBackdropFilter functions
* The "warp" property for ListView and ListLayout renamed to "list-warp"
* The "warp" property for EditView renamed to "edit-warp"
* Added CertFile and KeyFile optional fields to the AppParams struct.If they are set, then an https connection is created, otherwise http.
2022-06-07 13:07:10 +03:00
|
|
|
listLayout.remove(listLayout.normalizeTag(tag))
|
2021-09-07 17:36:50 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func (listLayout *listLayoutData) remove(tag string) {
|
|
|
|
listLayout.viewsContainerData.remove(tag)
|
2021-11-20 11:15:28 +03:00
|
|
|
if listLayout.created {
|
|
|
|
switch tag {
|
Added some properties and functions
* Added "resize", "grid-auto-flow", "caret-color", and "backdrop-filter" properties
* Added BlurView, BlurViewByID, GetResize, GetGridAutoFlow, GetCaretColor, GetBackdropFilter functions
* The "warp" property for ListView and ListLayout renamed to "list-warp"
* The "warp" property for EditView renamed to "edit-warp"
* Added CertFile and KeyFile optional fields to the AppParams struct.If they are set, then an https connection is created, otherwise http.
2022-06-07 13:07:10 +03:00
|
|
|
case Orientation, ListWrap, HorizontalAlign, VerticalAlign:
|
2021-11-20 11:15:28 +03:00
|
|
|
updateCSSStyle(listLayout.htmlID(), listLayout.session)
|
|
|
|
}
|
2021-09-07 17:36:50 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-07-26 18:36:00 +03:00
|
|
|
func (listLayout *listLayoutData) Set(tag string, value any) bool {
|
Added some properties and functions
* Added "resize", "grid-auto-flow", "caret-color", and "backdrop-filter" properties
* Added BlurView, BlurViewByID, GetResize, GetGridAutoFlow, GetCaretColor, GetBackdropFilter functions
* The "warp" property for ListView and ListLayout renamed to "list-warp"
* The "warp" property for EditView renamed to "edit-warp"
* Added CertFile and KeyFile optional fields to the AppParams struct.If they are set, then an https connection is created, otherwise http.
2022-06-07 13:07:10 +03:00
|
|
|
return listLayout.set(listLayout.normalizeTag(tag), value)
|
2021-09-07 17:36:50 +03:00
|
|
|
}
|
|
|
|
|
2022-07-26 18:36:00 +03:00
|
|
|
func (listLayout *listLayoutData) set(tag string, value any) bool {
|
2021-09-07 17:36:50 +03:00
|
|
|
if value == nil {
|
|
|
|
listLayout.remove(tag)
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
|
|
|
|
if listLayout.viewsContainerData.set(tag, value) {
|
2021-11-20 11:15:28 +03:00
|
|
|
if listLayout.created {
|
|
|
|
switch tag {
|
Added some properties and functions
* Added "resize", "grid-auto-flow", "caret-color", and "backdrop-filter" properties
* Added BlurView, BlurViewByID, GetResize, GetGridAutoFlow, GetCaretColor, GetBackdropFilter functions
* The "warp" property for ListView and ListLayout renamed to "list-warp"
* The "warp" property for EditView renamed to "edit-warp"
* Added CertFile and KeyFile optional fields to the AppParams struct.If they are set, then an https connection is created, otherwise http.
2022-06-07 13:07:10 +03:00
|
|
|
case Orientation, ListWrap, HorizontalAlign, VerticalAlign:
|
2021-11-20 11:15:28 +03:00
|
|
|
updateCSSStyle(listLayout.htmlID(), listLayout.session)
|
|
|
|
}
|
2021-09-07 17:36:50 +03:00
|
|
|
}
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
func (listLayout *listLayoutData) htmlSubviews(self View, buffer *strings.Builder) {
|
|
|
|
if listLayout.views != nil {
|
|
|
|
for _, view := range listLayout.views {
|
|
|
|
view.addToCSSStyle(map[string]string{`flex`: `0 0 auto`})
|
|
|
|
viewHTML(view, buffer)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetListVerticalAlign returns the vertical align of a ListLayout or ListView sibview:
|
|
|
|
// TopAlign (0), BottomAlign (1), CenterAlign (2), or StretchAlign (3)
|
|
|
|
// If the second argument (subviewID) is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetListVerticalAlign(view View, subviewID string) int {
|
|
|
|
if subviewID != "" {
|
|
|
|
view = ViewByID(view, subviewID)
|
|
|
|
}
|
|
|
|
if view == nil {
|
|
|
|
return LeftAlign
|
|
|
|
}
|
|
|
|
result, _ := enumProperty(view, VerticalAlign, view.Session(), 0)
|
|
|
|
return result
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetListHorizontalAlign returns the vertical align of a ListLayout or ListView subview:
|
|
|
|
// LeftAlign (0), RightAlign (1), CenterAlign (2), or StretchAlign (3)
|
|
|
|
// If the second argument (subviewID) is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetListHorizontalAlign(view View, subviewID string) int {
|
|
|
|
if subviewID != "" {
|
|
|
|
view = ViewByID(view, subviewID)
|
|
|
|
}
|
|
|
|
if view == nil {
|
|
|
|
return TopAlign
|
|
|
|
}
|
|
|
|
result, _ := enumProperty(view, HorizontalAlign, view.Session(), 0)
|
|
|
|
return result
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetListOrientation returns the orientation of a ListLayout or ListView subview:
|
|
|
|
// TopDownOrientation (0), StartToEndOrientation (1), BottomUpOrientation (2), or EndToStartOrientation (3)
|
|
|
|
// If the second argument (subviewID) is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetListOrientation(view View, subviewID string) int {
|
|
|
|
if subviewID != "" {
|
|
|
|
view = ViewByID(view, subviewID)
|
|
|
|
}
|
2021-11-11 13:23:41 +03:00
|
|
|
|
|
|
|
if view != nil {
|
|
|
|
if orientation, ok := valueToOrientation(view.Get(Orientation), view.Session()); ok {
|
|
|
|
return orientation
|
|
|
|
}
|
|
|
|
|
2022-05-23 15:22:14 +03:00
|
|
|
if value := valueFromStyle(view, Orientation); value != nil {
|
2021-11-11 13:23:41 +03:00
|
|
|
if orientation, ok := valueToOrientation(value, view.Session()); ok {
|
|
|
|
return orientation
|
|
|
|
}
|
|
|
|
}
|
2021-09-07 17:36:50 +03:00
|
|
|
}
|
2021-11-11 13:23:41 +03:00
|
|
|
|
|
|
|
return 0
|
2021-09-07 17:36:50 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
// GetListWrap returns the wrap type of a ListLayout or ListView subview:
|
2022-07-28 12:41:50 +03:00
|
|
|
// ListWrapOff (0), ListWrapOn (1), or ListWrapReverse (2)
|
2021-09-07 17:36:50 +03:00
|
|
|
// If the second argument (subviewID) is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetListWrap(view View, subviewID string) int {
|
2022-07-28 12:41:50 +03:00
|
|
|
return enumStyledProperty(view, subviewID, ListWrap, ListWrapOff, false)
|
2021-09-07 17:36:50 +03:00
|
|
|
}
|