forked from mbk-lab/rui_orig
Added the "overflow" property
This commit is contained in:
parent
fdbb6cb00b
commit
ece1d04e4e
|
@ -1,5 +1,12 @@
|
|||
# v0.8.0
|
||||
|
||||
* Requared go 1.18
|
||||
* The "interface{}" type replaced by "any"
|
||||
* Added the "overflow" property
|
||||
* Added the GetOverflow function
|
||||
|
||||
# v0.8.0
|
||||
|
||||
* Added "loaded-event" and "error-event" events to ImageView
|
||||
* Added NaturalSize and CurrentSource methods to ImageView
|
||||
* Added "user-select" property and IsUserSelect function
|
||||
|
|
|
@ -45,6 +45,12 @@ const (
|
|||
// Opacity is the degree to which content behind an element is hidden, and is the opposite of transparency.
|
||||
Opacity = "opacity"
|
||||
|
||||
// Overflow is the constant for the "overflow" property tag.
|
||||
// The "overflow" int property sets the desired behavior for an element's overflow — i.e.
|
||||
// when an element's content is too big to fit in its block formatting context — in both directions.
|
||||
// Valid values: OverflowHidden (0), OverflowVisible (1), OverflowScroll (2), OverflowAuto (3)
|
||||
Overflow = "overflow"
|
||||
|
||||
// Row is the constant for the "row" property tag.
|
||||
Row = "row"
|
||||
|
||||
|
|
|
@ -179,6 +179,11 @@ var enumProperties = map[string]struct {
|
|||
"",
|
||||
[]string{"visible", "invisible", "gone"},
|
||||
},
|
||||
Overflow: {
|
||||
[]string{"hidden", "visible", "scroll", "auto"},
|
||||
Overflow,
|
||||
[]string{"hidden", "visible", "scroll", "auto"},
|
||||
},
|
||||
TextAlign: {
|
||||
[]string{"left", "right", "center", "justify"},
|
||||
TextAlign,
|
||||
|
|
|
@ -3,29 +3,57 @@ package rui
|
|||
const (
|
||||
// Visible - default value of the view Visibility property: View is visible
|
||||
Visible = 0
|
||||
|
||||
// Invisible - value of the view Visibility property: View is invisible but takes place
|
||||
Invisible = 1
|
||||
|
||||
// Gone - value of the view Visibility property: View is invisible and does not take place
|
||||
Gone = 2
|
||||
|
||||
// OverflowHidden - value of the view "overflow" property:
|
||||
// Content is clipped if necessary to fit the padding box. No scrollbars are provided,
|
||||
// and no support for allowing the user to scroll (such as by dragging or using a scroll wheel) is allowed.
|
||||
// The content can be scrolled programmatically, so the element is still a scroll container.
|
||||
OverflowHidden = 0
|
||||
|
||||
// OverflowVisible - value of the view "overflow" property:
|
||||
// Content is not clipped and may be rendered outside the padding box.
|
||||
OverflowVisible = 1
|
||||
|
||||
// OverflowScroll - value of the view "overflow" property:
|
||||
// Content is clipped if necessary to fit the padding box. Browsers always display scrollbars whether or
|
||||
// not any content is actually clipped, preventing scrollbars from appearing or disappearing as content changes.
|
||||
OverflowScroll = 2
|
||||
|
||||
// OverflowAuto - value of the view "overflow" property:
|
||||
// Depends on the browser user agent. If content fits inside the padding box, it looks the same as OverflowVisible,
|
||||
// but still establishes a new block formatting context. Desktop browsers provide scrollbars if content overflows.
|
||||
OverflowAuto = 3
|
||||
|
||||
// NoneTextTransform - not transform text
|
||||
NoneTextTransform = 0
|
||||
|
||||
// CapitalizeTextTransform - capitalize text
|
||||
CapitalizeTextTransform = 1
|
||||
|
||||
// LowerCaseTextTransform - transform text to lower case
|
||||
LowerCaseTextTransform = 2
|
||||
|
||||
// UpperCaseTextTransform - transform text to upper case
|
||||
UpperCaseTextTransform = 3
|
||||
|
||||
// HorizontalTopToBottom - content flows horizontally from left to right, vertically from top to bottom.
|
||||
// The next horizontal line is positioned below the previous line.
|
||||
HorizontalTopToBottom = 0
|
||||
|
||||
// HorizontalBottomToTop - content flows horizontally from left to right, vertically from bottom to top.
|
||||
// The next horizontal line is positioned above the previous line.
|
||||
HorizontalBottomToTop = 1
|
||||
|
||||
// VerticalRightToLeft - content flows vertically from top to bottom, horizontally from right to left.
|
||||
// The next vertical line is positioned to the left of the previous line.
|
||||
VerticalRightToLeft = 2
|
||||
|
||||
// VerticalLeftToRight - content flows vertically from top to bottom, horizontally from left to right.
|
||||
// The next vertical line is positioned to the right of the previous line.
|
||||
VerticalLeftToRight = 3
|
||||
|
@ -33,6 +61,7 @@ const (
|
|||
// MixedTextOrientation - rotates the characters of horizontal scripts 90° clockwise.
|
||||
// Lays out the characters of vertical scripts naturally. Default value.
|
||||
MixedTextOrientation = 0
|
||||
|
||||
// UprightTextOrientation - lays out the characters of horizontal scripts naturally (upright),
|
||||
// as well as the glyphs for vertical scripts. Note that this keyword causes all characters
|
||||
// to be considered as left-to-right: the used value of "text-direction" is forced to be "left-to-right".
|
||||
|
@ -40,62 +69,84 @@ const (
|
|||
|
||||
// SystemTextDirection - direction of a text and other elements defined by system. This is the default value.
|
||||
SystemTextDirection = 0
|
||||
|
||||
// LeftToRightDirection - text and other elements go from left to right.
|
||||
LeftToRightDirection = 1
|
||||
|
||||
//RightToLeftDirection - text and other elements go from right to left.
|
||||
RightToLeftDirection = 2
|
||||
|
||||
// ThinFont - the value of "text-weight" property: the thin (hairline) text weight
|
||||
ThinFont = 1
|
||||
|
||||
// ExtraLightFont - the value of "text-weight" property: the extra light (ultra light) text weight
|
||||
ExtraLightFont = 2
|
||||
|
||||
// LightFont - the value of "text-weight" property: the light text weight
|
||||
LightFont = 3
|
||||
|
||||
// NormalFont - the value of "text-weight" property (default value): the normal text weight
|
||||
NormalFont = 4
|
||||
|
||||
// MediumFont - the value of "text-weight" property: the medium text weight
|
||||
MediumFont = 5
|
||||
|
||||
// SemiBoldFont - the value of "text-weight" property: the semi bold (demi bold) text weight
|
||||
SemiBoldFont = 6
|
||||
|
||||
// BoldFont - the value of "text-weight" property: the bold text weight
|
||||
BoldFont = 7
|
||||
|
||||
// ExtraBoldFont - the value of "text-weight" property: the extra bold (ultra bold) text weight
|
||||
ExtraBoldFont = 8
|
||||
|
||||
// BlackFont - the value of "text-weight" property: the black (heavy) text weight
|
||||
BlackFont = 9
|
||||
|
||||
// TopAlign - top vertical-align for the "vertical-align" property
|
||||
TopAlign = 0
|
||||
|
||||
// BottomAlign - bottom vertical-align for the "vertical-align" property
|
||||
BottomAlign = 1
|
||||
|
||||
// LeftAlign - the left horizontal-align for the "horizontal-align" property
|
||||
LeftAlign = 0
|
||||
|
||||
// RightAlign - the right horizontal-align for the "horizontal-align" property
|
||||
RightAlign = 1
|
||||
|
||||
// CenterAlign - the center horizontal/vertical-align for the "horizontal-align"/"vertical-align" property
|
||||
CenterAlign = 2
|
||||
|
||||
// StretchAlign - the stretch horizontal/vertical-align for the "horizontal-align"/"vertical-align" property
|
||||
StretchAlign = 3
|
||||
|
||||
// JustifyAlign - the justify text align for "text-align" property
|
||||
JustifyAlign = 3
|
||||
|
||||
// BaselineAlign - the baseline cell-vertical-align for the "cell-vertical-align" property
|
||||
BaselineAlign = 4
|
||||
|
||||
// WhiteSpaceNormal - sequences of white space are collapsed. Newline characters in the source
|
||||
// are handled the same as other white space. Lines are broken as necessary to fill line boxes.
|
||||
WhiteSpaceNormal = 0
|
||||
|
||||
// WhiteSpaceNowrap - collapses white space as for normal, but suppresses line breaks (text wrapping)
|
||||
// within the source.
|
||||
WhiteSpaceNowrap = 1
|
||||
|
||||
// WhiteSpacePre - sequences of white space are preserved. Lines are only broken at newline
|
||||
// characters in the source and at <br> elements.
|
||||
WhiteSpacePre = 2
|
||||
|
||||
// WhiteSpacePreWrap - Sequences of white space are preserved. Lines are broken at newline
|
||||
// characters, at <br>, and as necessary to fill line boxes.
|
||||
WhiteSpacePreWrap = 3
|
||||
|
||||
// WhiteSpacePreLine - sequences of white space are collapsed. Lines are broken at newline characters,
|
||||
// at <br>, and as necessary to fill line boxes.
|
||||
WhiteSpacePreLine = 4
|
||||
|
||||
// WhiteSpaceBreakSpaces - the behavior is identical to that of WhiteSpacePreWrap, except that:
|
||||
// * Any sequence of preserved white space always takes up space, including at the end of the line.
|
||||
// * A line breaking opportunity exists after every preserved white space character, including between white space characters.
|
||||
|
@ -104,12 +155,15 @@ const (
|
|||
|
||||
// WordBreakNormal - use the default line break rule.
|
||||
WordBreakNormal = 0
|
||||
|
||||
// WordBreakAll - to prevent overflow, word breaks should be inserted between any two characters
|
||||
// (excluding Chinese/Japanese/Korean text).
|
||||
WordBreakAll = 1
|
||||
|
||||
// WordBreakKeepAll - word breaks should not be used for Chinese/Japanese/Korean (CJK) text.
|
||||
// Non-CJK text behavior is the same as for normal.
|
||||
WordBreakKeepAll = 2
|
||||
|
||||
// WordBreakWord - when the block boundaries are exceeded, the remaining whole words can be split
|
||||
// in an arbitrary place, unless a more suitable place for the line break is found.
|
||||
WordBreakWord = 3
|
||||
|
@ -117,6 +171,7 @@ const (
|
|||
// TextOverflowClip - truncate the text at the limit of the content area, therefore the truncation
|
||||
// can happen in the middle of a character.
|
||||
TextOverflowClip = 0
|
||||
|
||||
// TextOverflowEllipsis - display an ellipsis ('…', U+2026 HORIZONTAL ELLIPSIS) to represent clipped text.
|
||||
// The ellipsis is displayed inside the content area, decreasing the amount of text displayed.
|
||||
// If there is not enough space to display the ellipsis, it is clipped.
|
||||
|
@ -124,87 +179,111 @@ const (
|
|||
|
||||
// DefaultSemantics - default value of the view Semantic property
|
||||
DefaultSemantics = 0
|
||||
|
||||
// ArticleSemantics - value of the view Semantic property: view represents a self-contained
|
||||
// composition in a document, page, application, or site, which is intended to be
|
||||
// independently distributable or reusable (e.g., in syndication)
|
||||
ArticleSemantics = 1
|
||||
|
||||
// SectionSemantics - value of the view Semantic property: view represents
|
||||
// a generic standalone section of a document, which doesn't have a more specific
|
||||
// semantic element to represent it.
|
||||
SectionSemantics = 2
|
||||
|
||||
// AsideSemantics - value of the view Semantic property: view represents a portion
|
||||
// of a document whose content is only indirectly related to the document's main content.
|
||||
// Asides are frequently presented as sidebars or call-out boxes.
|
||||
AsideSemantics = 3
|
||||
|
||||
// HeaderSemantics - value of the view Semantic property: view represents introductory
|
||||
// content, typically a group of introductory or navigational aids. It may contain
|
||||
// some heading elements but also a logo, a search form, an author name, and other elements.
|
||||
HeaderSemantics = 4
|
||||
|
||||
// MainSemantics - value of the view Semantic property: view represents the dominant content
|
||||
// of the application. The main content area consists of content that is directly related
|
||||
// to or expands upon the central topic of a document, or the central functionality of an application.
|
||||
MainSemantics = 5
|
||||
|
||||
// FooterSemantics - value of the view Semantic property: view represents a footer for its
|
||||
// nearest sectioning content or sectioning root element. A footer view typically contains
|
||||
// information about the author of the section, copyright data or links to related documents.
|
||||
FooterSemantics = 6
|
||||
|
||||
// NavigationSemantics - value of the view Semantic property: view represents a section of
|
||||
// a page whose purpose is to provide navigation links, either within the current document
|
||||
// or to other documents. Common examples of navigation sections are menus, tables of contents,
|
||||
// and indexes.
|
||||
NavigationSemantics = 7
|
||||
|
||||
// FigureSemantics - value of the view Semantic property: view represents self-contained content,
|
||||
// potentially with an optional caption, which is specified using the FigureCaptionSemantics view.
|
||||
FigureSemantics = 8
|
||||
|
||||
// FigureCaptionSemantics - value of the view Semantic property: view represents a caption or
|
||||
// legend describing the rest of the contents of its parent FigureSemantics view.
|
||||
FigureCaptionSemantics = 9
|
||||
|
||||
// ButtonSemantics - value of the view Semantic property: view a clickable button
|
||||
ButtonSemantics = 10
|
||||
|
||||
// ParagraphSemantics - value of the view Semantic property: view represents a paragraph.
|
||||
// Paragraphs are usually represented in visual media as blocks of text separated
|
||||
// from adjacent blocks by blank lines and/or first-line indentation
|
||||
ParagraphSemantics = 11
|
||||
|
||||
// H1Semantics - value of the view Semantic property: view represent of first level section headings.
|
||||
// H1Semantics is the highest section level and H6Semantics is the lowest.
|
||||
H1Semantics = 12
|
||||
|
||||
// H2Semantics - value of the view Semantic property: view represent of second level section headings.
|
||||
// H1Semantics is the highest section level and H6Semantics is the lowest.
|
||||
H2Semantics = 13
|
||||
|
||||
// H3Semantics - value of the view Semantic property: view represent of third level section headings.
|
||||
// H1Semantics is the highest section level and H6Semantics is the lowest.
|
||||
H3Semantics = 14
|
||||
|
||||
// H4Semantics - value of the view Semantic property: view represent of fourth level section headings.
|
||||
// H1Semantics is the highest section level and H6Semantics is the lowest.
|
||||
H4Semantics = 15
|
||||
|
||||
// H5Semantics - value of the view Semantic property: view represent of fifth level section headings.
|
||||
// H1Semantics is the highest section level and H6Semantics is the lowest.
|
||||
H5Semantics = 16
|
||||
|
||||
// H6Semantics - value of the view Semantic property: view represent of sixth level section headings.
|
||||
// H1Semantics is the highest section level and H6Semantics is the lowest.
|
||||
H6Semantics = 17
|
||||
|
||||
// BlockquoteSemantics - value of the view Semantic property: view indicates that
|
||||
// the enclosed text is an extended quotation.
|
||||
BlockquoteSemantics = 18
|
||||
|
||||
// CodeSemantics - value of the view Semantic property: view displays its contents styled
|
||||
// in a fashion intended to indicate that the text is a short fragment of computer code
|
||||
CodeSemantics = 19
|
||||
|
||||
// NoneFloat - value of the view "float" property: the View must not float.
|
||||
NoneFloat = 0
|
||||
|
||||
// LeftFloat - value of the view "float" property: the View must float on the left side of its containing block.
|
||||
LeftFloat = 1
|
||||
|
||||
// RightFloat - value of the view "float" property: the View must float on the right side of its containing block.
|
||||
RightFloat = 2
|
||||
|
||||
// NoneResize - value of the view "resize" property: the View The offers no user-controllable method for resizing it.
|
||||
NoneResize = 0
|
||||
|
||||
// BothResize - value of the view "resize" property: the View displays a mechanism for allowing
|
||||
// the user to resize it, which may be resized both horizontally and vertically.
|
||||
BothResize = 1
|
||||
|
||||
// HorizontalResize - value of the view "resize" property: the View displays a mechanism for allowing
|
||||
// the user to resize it in the horizontal direction.
|
||||
HorizontalResize = 2
|
||||
|
||||
// VerticalResize - value of the view "resize" property: the View displays a mechanism for allowing
|
||||
// the user to resize it in the vertical direction.
|
||||
VerticalResize = 3
|
||||
|
@ -212,14 +291,17 @@ const (
|
|||
// RowAutoFlow - value of the "grid-auto-flow" property of the GridLayout:
|
||||
// Views are placed by filling each row in turn, adding new rows as necessary.
|
||||
RowAutoFlow = 0
|
||||
|
||||
// ColumnAutoFlow - value of the "grid-auto-flow" property of the GridLayout:
|
||||
// Views are placed by filling each column in turn, adding new columns as necessary.
|
||||
ColumnAutoFlow = 1
|
||||
|
||||
// RowDenseAutoFlow - value of the "grid-auto-flow" property of the GridLayout:
|
||||
// Views are placed by filling each row, adding new rows as necessary.
|
||||
// "dense" packing algorithm attempts to fill in holes earlier in the grid, if smaller items come up later.
|
||||
// This may cause views to appear out-of-order, when doing so would fill in holes left by larger views.
|
||||
RowDenseAutoFlow = 2
|
||||
|
||||
// ColumnDenseAutoFlow - value of the "grid-auto-flow" property of the GridLayout:
|
||||
// Views are placed by filling each column, adding new columns as necessary.
|
||||
// "dense" packing algorithm attempts to fill in holes earlier in the grid, if smaller items come up later.
|
||||
|
|
|
@ -235,7 +235,7 @@ func (style *viewStyle) cssViewStyle(builder cssBuilder, session Session) {
|
|||
|
||||
writingMode := 0
|
||||
for _, tag := range []string{
|
||||
TextAlign, TextTransform, TextWeight, TextLineStyle, WritingMode, TextDirection,
|
||||
Overflow, TextAlign, TextTransform, TextWeight, TextLineStyle, WritingMode, TextDirection,
|
||||
VerticalTextOrientation, CellVerticalAlign, CellHorizontalAlign, GridAutoFlow, Cursor,
|
||||
WhiteSpace, WordBreak, TextOverflow, Float, TableVerticalAlign, Resize} {
|
||||
|
||||
|
|
25
viewUtils.go
25
viewUtils.go
|
@ -156,6 +156,30 @@ func GetVisibility(view View, subviewID string) int {
|
|||
return result
|
||||
}
|
||||
|
||||
// GetOverflow returns a value of the subview "overflow" property. Returns one of next values:
|
||||
// OverflowHidden (0), OverflowVisible (1), OverflowScroll (2), OverflowAuto (3)
|
||||
// If the second argument (subviewID) is "" then a value of the first argument (view) is returned
|
||||
func GetOverflow(view View, subviewID string) int {
|
||||
if subviewID != "" {
|
||||
view = ViewByID(view, subviewID)
|
||||
}
|
||||
if view == nil {
|
||||
return OverflowHidden
|
||||
}
|
||||
|
||||
defaultOverflow := OverflowHidden
|
||||
switch view.(type) {
|
||||
case EditView:
|
||||
defaultOverflow = OverflowAuto
|
||||
|
||||
case ListView:
|
||||
defaultOverflow = OverflowAuto
|
||||
}
|
||||
|
||||
result, _ := enumStyledProperty(view, Overflow, defaultOverflow)
|
||||
return result
|
||||
}
|
||||
|
||||
// GetZIndex returns the subview z-order.
|
||||
// If the second argument (subviewID) is "" then a z-order of the first argument (view) is returned
|
||||
func GetZIndex(view View, subviewID string) int {
|
||||
|
@ -479,7 +503,6 @@ func GetTextSize(view View, subviewID string) SizeUnit {
|
|||
// GetTextWeight returns a text weight of the subview. Returns one of next values:
|
||||
// 1, 2, 3, 4 (normal text), 5, 6, 7 (bold text), 8 and 9
|
||||
// If the second argument (subviewID) is "" then a value from the first argument (view) is returned.
|
||||
// If the second argument (subviewID) is "" then a value from the first argument (view) is returned.
|
||||
func GetTextWeight(view View, subviewID string) int {
|
||||
if subviewID != "" {
|
||||
view = ViewByID(view, subviewID)
|
||||
|
|
Loading…
Reference in New Issue