From 134cb687c4e05fd81a03b682505f9fb9d741a8d7 Mon Sep 17 00:00:00 2001 From: Robert Jaros Date: Sat, 9 May 2020 23:53:57 +0200 Subject: Add new className parameter to all DSL builder functions. --- .../pl/treksoft/kvision/dropdown/ContextMenu.kt | 7 ++- .../pl/treksoft/kvision/dropdown/DropDown.kt | 51 +++++++++++++++++----- .../kotlin/pl/treksoft/kvision/dropdown/Header.kt | 17 ++++++-- .../pl/treksoft/kvision/dropdown/Separator.kt | 15 +++++-- .../main/kotlin/pl/treksoft/kvision/navbar/Nav.kt | 26 ++++++++--- .../kotlin/pl/treksoft/kvision/navbar/NavForm.kt | 8 +++- .../kotlin/pl/treksoft/kvision/navbar/Navbar.kt | 19 ++++++-- .../treksoft/kvision/panel/ResponsiveGridPanel.kt | 7 ++- .../kotlin/pl/treksoft/kvision/panel/TabPanel.kt | 6 ++- .../pl/treksoft/kvision/progress/ProgressBar.kt | 15 ++++++- .../pl/treksoft/kvision/toolbar/ButtonGroup.kt | 14 ++++-- .../kotlin/pl/treksoft/kvision/toolbar/Toolbar.kt | 7 ++- .../kotlin/pl/treksoft/kvision/window/Window.kt | 15 ++++++- 13 files changed, 161 insertions(+), 46 deletions(-) (limited to 'kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision') diff --git a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/ContextMenu.kt b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/ContextMenu.kt index 656b63b5..4d4a579c 100644 --- a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/ContextMenu.kt +++ b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/ContextMenu.kt @@ -27,6 +27,7 @@ import pl.treksoft.kvision.core.Widget import pl.treksoft.kvision.html.Div import pl.treksoft.kvision.panel.Root import pl.treksoft.kvision.utils.px +import pl.treksoft.kvision.utils.set /** * Context menu component. @@ -103,9 +104,11 @@ fun Widget.setContextMenu(contextMenu: ContextMenu): Widget { */ fun Widget.contextMenu( fixedPosition: Boolean = false, - classes: Set = setOf(), init: (ContextMenu.() -> Unit)? = null + classes: Set? = null, + className: String? = null, + init: (ContextMenu.() -> Unit)? = null ): ContextMenu { - val contextMenu = ContextMenu(this, fixedPosition, classes).apply { init?.invoke(this) } + val contextMenu = ContextMenu(this, fixedPosition, classes ?: className.set).apply { init?.invoke(this) } this.setContextMenu(contextMenu) return contextMenu } diff --git a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/DropDown.kt b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/DropDown.kt index 3fa6cd36..ed9a917c 100644 --- a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/DropDown.kt +++ b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/DropDown.kt @@ -35,6 +35,7 @@ import pl.treksoft.kvision.html.Div import pl.treksoft.kvision.html.Link import pl.treksoft.kvision.panel.SimplePanel import pl.treksoft.kvision.utils.obj +import pl.treksoft.kvision.utils.set /** * Useful options for use in DropDown's *elements* parameter. @@ -84,6 +85,7 @@ open class DropDown( button.text = value } private var elements by refreshOnUpdate(elements) { setChildrenFromElements() } + /** * The icon of the dropdown button. */ @@ -92,6 +94,7 @@ open class DropDown( set(value) { button.icon = value } + /** * The style of the dropdown button. */ @@ -100,6 +103,7 @@ open class DropDown( set(value) { button.style = value } + /** * The size of the dropdown button. */ @@ -108,6 +112,7 @@ open class DropDown( set(value) { button.size = value } + /** * Determines if the dropdown button takes all the space horizontally. */ @@ -116,6 +121,7 @@ open class DropDown( set(value) { button.block = value } + /** * Determines if the dropdown is disabled. */ @@ -124,6 +130,7 @@ open class DropDown( set(value) { button.disabled = value } + /** * The image on the dropdown button. */ @@ -132,10 +139,12 @@ open class DropDown( set(value) { button.image = value } + /** * The direction of the dropdown. */ var direction by refreshOnUpdate(direction) + /** * Width of the dropdown button. */ @@ -254,7 +263,9 @@ fun Container.dropDown( text: String, elements: List? = null, icon: String? = null, style: ButtonStyle = ButtonStyle.PRIMARY, direction: Direction = Direction.DROPDOWN, disabled: Boolean = false, forNavbar: Boolean = false, forDropDown: Boolean = false, - classes: Set = setOf(), init: (DropDown.() -> Unit)? = null + classes: Set? = null, + className: String? = null, + init: (DropDown.() -> Unit)? = null ): DropDown { val dropDown = DropDown( @@ -266,7 +277,7 @@ fun Container.dropDown( disabled, forNavbar, forDropDown, - classes + classes ?: className.set ).apply { init?.invoke(this) } this.add(dropDown) return dropDown @@ -279,9 +290,11 @@ fun Container.dropDown( */ fun DropDown.ddLink( label: String, url: String? = null, icon: String? = null, image: ResString? = null, - classes: Set = setOf(), init: (Link.() -> Unit)? = null + classes: Set? = null, + className: String? = null, + init: (Link.() -> Unit)? = null ): Link { - val link = Link(label, url, icon, image, classes + "dropdown-item").apply { + val link = Link(label, url, icon, image, null, true, (classes ?: className.set) + "dropdown-item").apply { init?.invoke(this) } this.add(link) @@ -295,9 +308,11 @@ fun DropDown.ddLink( */ fun ContextMenu.cmLink( label: String, url: String? = null, icon: String? = null, image: ResString? = null, - classes: Set = setOf(), init: (Link.() -> Unit)? = null + classes: Set? = null, + className: String? = null, + init: (Link.() -> Unit)? = null ): Link { - val link = Link(label, url, icon, image, classes + "dropdown-item").apply { + val link = Link(label, url, icon, image, null, true, (classes ?: className.set) + "dropdown-item").apply { init?.invoke(this) } this.add(link) @@ -311,9 +326,17 @@ fun ContextMenu.cmLink( */ fun DropDown.ddLinkDisabled( label: String, icon: String? = null, image: ResString? = null, - classes: Set = setOf(), init: (Link.() -> Unit)? = null + classes: Set? = null, + className: String? = null, + init: (Link.() -> Unit)? = null ): Link { - val link = Link(label, "javascript:void(0)", icon, image, classes + "dropdown-item" + "disabled").apply { + val link = Link( + label, + "javascript:void(0)", + icon, + image, null, true, + (classes ?: className.set) + "dropdown-item" + "disabled" + ).apply { tabindex = -1 setAttribute("aria-disabled", "true") init?.invoke(this) @@ -329,9 +352,17 @@ fun DropDown.ddLinkDisabled( */ fun ContextMenu.cmLinkDisabled( label: String, icon: String? = null, image: ResString? = null, - classes: Set = setOf(), init: (Link.() -> Unit)? = null + classes: Set? = null, + className: String? = null, + init: (Link.() -> Unit)? = null ): Link { - val link = Link(label, "javascript:void(0)", icon, image, classes + "dropdown-item" + "disabled").apply { + val link = Link( + label, + "javascript:void(0)", + icon, + image, null, true, + (classes ?: className.set) + "dropdown-item" + "disabled" + ).apply { tabindex = -1 setAttribute("aria-disabled", "true") init?.invoke(this) diff --git a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/Header.kt b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/Header.kt index b88a5955..1d489afc 100644 --- a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/Header.kt +++ b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/Header.kt @@ -23,6 +23,7 @@ package pl.treksoft.kvision.dropdown import pl.treksoft.kvision.html.TAG import pl.treksoft.kvision.html.Tag +import pl.treksoft.kvision.utils.set /** * Menu header component. @@ -39,8 +40,12 @@ open class Header(content: String? = null, classes: Set = setOf()) : * * It takes the same parameters as the constructor of the built component. */ -fun ContextMenu.header(content: String? = null, classes: Set = setOf()): Header { - val header = Header(content, classes) +fun ContextMenu.header( + content: String? = null, + classes: Set? = null, + className: String? = null +): Header { + val header = Header(content, classes ?: className.set) this.add(header) return header } @@ -50,8 +55,12 @@ fun ContextMenu.header(content: String? = null, classes: Set = setOf()): * * It takes the same parameters as the constructor of the built component. */ -fun DropDown.header(content: String? = null, classes: Set = setOf()): Header { - val header = Header(content, classes) +fun DropDown.header( + content: String? = null, + classes: Set? = null, + className: String? = null +): Header { + val header = Header(content, classes ?: className.set) this.add(header) return header } diff --git a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/Separator.kt b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/Separator.kt index 62abe588..f5d289f6 100644 --- a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/Separator.kt +++ b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/dropdown/Separator.kt @@ -22,6 +22,7 @@ package pl.treksoft.kvision.dropdown import pl.treksoft.kvision.html.Div +import pl.treksoft.kvision.utils.set /** * Menu separator component. @@ -36,8 +37,11 @@ open class Separator(classes: Set = setOf()) : Div(classes = classes + " * * It takes the same parameters as the constructor of the built component. */ -fun ContextMenu.separator(classes: Set = setOf()): Separator { - val separator = Separator(classes) +fun ContextMenu.separator( + classes: Set? = null, + className: String? = null +): Separator { + val separator = Separator(classes ?: className.set) this.add(separator) return separator } @@ -47,8 +51,11 @@ fun ContextMenu.separator(classes: Set = setOf()): Separator { * * It takes the same parameters as the constructor of the built component. */ -fun DropDown.separator(classes: Set = setOf()): Separator { - val separator = Separator(classes) +fun DropDown.separator( + classes: Set? = null, + className: String? = null +): Separator { + val separator = Separator(classes ?: className.set) this.add(separator) return separator } diff --git a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/navbar/Nav.kt b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/navbar/Nav.kt index 1254e0c9..98383141 100644 --- a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/navbar/Nav.kt +++ b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/navbar/Nav.kt @@ -25,6 +25,7 @@ import pl.treksoft.kvision.core.ResString import pl.treksoft.kvision.core.StringBoolPair import pl.treksoft.kvision.html.Div import pl.treksoft.kvision.html.Link +import pl.treksoft.kvision.utils.set /** * The Bootstrap Nav container. @@ -63,9 +64,12 @@ open class Nav(rightAlign: Boolean = false, classes: Set = setOf(), init * It takes the same parameters as the constructor of the built component. */ fun Navbar.nav( - rightAlign: Boolean = false, classes: Set = setOf(), init: (Nav.() -> Unit)? = null + rightAlign: Boolean = false, + classes: Set? = null, + className: String? = null, + init: (Nav.() -> Unit)? = null ): Nav { - val nav = Nav(rightAlign, classes).apply { init?.invoke(this) } + val nav = Nav(rightAlign, classes ?: className.set).apply { init?.invoke(this) } this.add(nav) return nav } @@ -77,9 +81,11 @@ fun Navbar.nav( */ fun Nav.navLink( label: String, url: String? = null, icon: String? = null, image: ResString? = null, - classes: Set = setOf(), init: (Link.() -> Unit)? = null + classes: Set? = null, + className: String? = null, + init: (Link.() -> Unit)? = null ): Link { - val link = Link(label, url, icon, image, classes + "nav-item" + "nav-link").apply { + val link = Link(label, url, icon, image, null, true, (classes ?: className.set) + "nav-item" + "nav-link").apply { init?.invoke(this) } this.add(link) @@ -93,10 +99,18 @@ fun Nav.navLink( */ fun Nav.navLinkDisabled( label: String, icon: String? = null, image: ResString? = null, - classes: Set = setOf(), init: (Link.() -> Unit)? = null + classes: Set? = null, + className: String? = null, + init: (Link.() -> Unit)? = null ): Link { val link = - Link(label, "javascript:void(0)", icon, image, classes + "nav-item" + "nav-link" + "disabled").apply { + Link( + label, + "javascript:void(0)", + icon, + image, null, true, + (classes ?: className.set) + "nav-item" + "nav-link" + "disabled" + ).apply { tabindex = -1 setAttribute("aria-disabled", "true") init?.invoke(this) diff --git a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/navbar/NavForm.kt b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/navbar/NavForm.kt index 6cbf6274..37bd566e 100644 --- a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/navbar/NavForm.kt +++ b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/navbar/NavForm.kt @@ -24,6 +24,7 @@ package pl.treksoft.kvision.navbar import pl.treksoft.kvision.core.StringBoolPair import pl.treksoft.kvision.html.TAG import pl.treksoft.kvision.html.Tag +import pl.treksoft.kvision.utils.set /** * The Bootstrap Nav form container. @@ -62,9 +63,12 @@ open class NavForm(rightAlign: Boolean = false, classes: Set = setOf(), * It takes the same parameters as the constructor of the built component. */ fun Navbar.navForm( - rightAlign: Boolean = false, classes: Set = setOf(), init: (NavForm.() -> Unit)? = null + rightAlign: Boolean = false, + classes: Set? = null, + className: String? = null, + init: (NavForm.() -> Unit)? = null ): NavForm { - val navForm = NavForm(rightAlign, classes).apply { init?.invoke(this) } + val navForm = NavForm(rightAlign, classes ?: className.set).apply { init?.invoke(this) } this.add(navForm) return navForm } diff --git a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/navbar/Navbar.kt b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/navbar/Navbar.kt index 81e061e8..6ba85b63 100644 --- a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/navbar/Navbar.kt +++ b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/navbar/Navbar.kt @@ -32,6 +32,7 @@ import pl.treksoft.kvision.html.Link import pl.treksoft.kvision.html.Span import pl.treksoft.kvision.html.span import pl.treksoft.kvision.panel.SimplePanel +import pl.treksoft.kvision.utils.set /** * Navbar types. @@ -99,6 +100,7 @@ open class Navbar( brandLink.hide() } } + /** * The navbar header link. */ @@ -112,14 +114,17 @@ open class Navbar( * The navbar type. */ var type by refreshOnUpdate(type) + /** * The navbar responsive behavior. */ var expand by refreshOnUpdate(expand) + /** * The navbar color. */ var nColor by refreshOnUpdate(nColor) + /** * The navbar background color. */ @@ -215,15 +220,21 @@ fun Container.navbar( nColor: NavbarColor = NavbarColor.LIGHT, bgColor: BsBgColor = BsBgColor.LIGHT, collapseOnClick: Boolean = false, - classes: Set = setOf(), init: (Navbar.() -> Unit)? = null + classes: Set? = null, + className: String? = null, + init: (Navbar.() -> Unit)? = null ): Navbar { - val navbar = Navbar(label, link, type, expand, nColor, bgColor, collapseOnClick, classes, init) + val navbar = Navbar(label, link, type, expand, nColor, bgColor, collapseOnClick, classes ?: className.set, init) this.add(navbar) return navbar } -fun Navbar.navText(label: String, classes: Set = setOf()): Span { - val text = Span(label, classes = classes + "navbar-text") +fun Navbar.navText( + label: String, + classes: Set? = null, + className: String? = null +): Span { + val text = Span(label, classes = (classes ?: className.set) + "navbar-text") this.add(text) return text } diff --git a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/panel/ResponsiveGridPanel.kt b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/panel/ResponsiveGridPanel.kt index ec4cbc29..9d21f61f 100644 --- a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/panel/ResponsiveGridPanel.kt +++ b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/panel/ResponsiveGridPanel.kt @@ -27,6 +27,7 @@ import pl.treksoft.kvision.core.WidgetWrapper import pl.treksoft.kvision.html.Align import pl.treksoft.kvision.html.TAG import pl.treksoft.kvision.html.Tag +import pl.treksoft.kvision.utils.set /** * Bootstrap grid sizes. @@ -175,9 +176,11 @@ open class ResponsiveGridPanel( fun Container.responsiveGridPanel( gridSize: GridSize = GridSize.MD, rows: Int = 0, cols: Int = 0, align: Align? = null, - classes: Set = setOf(), init: (ResponsiveGridPanel.() -> Unit)? = null + classes: Set? = null, + className: String? = null, + init: (ResponsiveGridPanel.() -> Unit)? = null ): ResponsiveGridPanel { - val responsiveGridPanel = ResponsiveGridPanel(gridSize, rows, cols, align, classes, init) + val responsiveGridPanel = ResponsiveGridPanel(gridSize, rows, cols, align, classes ?: className.set, init) this.add(responsiveGridPanel) return responsiveGridPanel } diff --git a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/panel/TabPanel.kt b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/panel/TabPanel.kt index 36967e2b..3b2accad 100644 --- a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/panel/TabPanel.kt +++ b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/panel/TabPanel.kt @@ -31,6 +31,7 @@ import pl.treksoft.kvision.html.Tag import pl.treksoft.kvision.html.link import pl.treksoft.kvision.routing.routing import pl.treksoft.kvision.utils.obj +import pl.treksoft.kvision.utils.set import pl.treksoft.kvision.html.icon as cicon /** @@ -273,10 +274,11 @@ fun Container.tabPanel( tabPosition: TabPosition = TabPosition.TOP, sideTabSize: SideTabSize = SideTabSize.SIZE_3, scrollableTabs: Boolean = false, - classes: Set = setOf(), + classes: Set? = null, + className: String? = null, init: (TabPanel.() -> Unit)? = null ): TabPanel { - val tabPanel = TabPanel(tabPosition, sideTabSize, scrollableTabs, classes, init) + val tabPanel = TabPanel(tabPosition, sideTabSize, scrollableTabs, classes ?: className.set, init) this.add(tabPanel) return tabPanel } diff --git a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/progress/ProgressBar.kt b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/progress/ProgressBar.kt index 45ea316c..f9dd0617 100644 --- a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/progress/ProgressBar.kt +++ b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/progress/ProgressBar.kt @@ -24,6 +24,7 @@ package pl.treksoft.kvision.progress import pl.treksoft.kvision.core.Container import pl.treksoft.kvision.html.Align import pl.treksoft.kvision.panel.SimplePanel +import pl.treksoft.kvision.utils.set /** * The Bootstrap progress bar. @@ -57,6 +58,7 @@ open class ProgressBar( set(value) { indicator.progress = value } + /** * The minimal progress. */ @@ -65,6 +67,7 @@ open class ProgressBar( set(value) { indicator.min = value } + /** * The maximal progress. */ @@ -73,6 +76,7 @@ open class ProgressBar( set(value) { indicator.max = value } + /** * The style of the progress bar. */ @@ -81,6 +85,7 @@ open class ProgressBar( set(value) { indicator.style = value } + /** * Determines if the progress bar is striped. */ @@ -89,6 +94,7 @@ open class ProgressBar( set(value) { indicator.striped = value } + /** * Determines if the progress bar is animated. */ @@ -97,6 +103,7 @@ open class ProgressBar( set(value) { indicator.animated = value } + /** * Text content of the progress bar. */ @@ -105,6 +112,7 @@ open class ProgressBar( set(value) { indicator.content = value } + /** * Determines if [content] can contain HTML code. */ @@ -113,6 +121,7 @@ open class ProgressBar( set(value) { indicator.rich = value } + /** * Text align of the progress bar. */ @@ -141,7 +150,9 @@ fun Container.progressBar( progress: Int, min: Int = DEFAULT_MIN, max: Int = DEFAULT_MAX, style: ProgressBarStyle? = null, striped: Boolean = false, animated: Boolean = false, content: String? = null, rich: Boolean = false, align: Align? = null, - classes: Set = setOf(), init: (ProgressBar.() -> Unit)? = null + classes: Set? = null, + className: String? = null, + init: (ProgressBar.() -> Unit)? = null ): ProgressBar { val progressBar = ProgressBar( progress, @@ -153,7 +164,7 @@ fun Container.progressBar( content, rich, align, - classes + classes ?: className.set ).apply { init?.invoke(this) } this.add(progressBar) return progressBar diff --git a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/toolbar/ButtonGroup.kt b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/toolbar/ButtonGroup.kt index 5d871a1c..70652fb7 100644 --- a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/toolbar/ButtonGroup.kt +++ b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/toolbar/ButtonGroup.kt @@ -25,6 +25,7 @@ import pl.treksoft.kvision.core.Container import pl.treksoft.kvision.core.StringBoolPair import pl.treksoft.kvision.panel.SimplePanel import pl.treksoft.kvision.utils.px +import pl.treksoft.kvision.utils.set /** * Button group sizes. @@ -52,6 +53,7 @@ open class ButtonGroup( * Button group size. */ var size by refreshOnUpdate(size) + /** * Vertical alignment. */ @@ -84,9 +86,11 @@ open class ButtonGroup( */ fun Container.buttonGroup( size: ButtonGroupSize? = null, vertical: Boolean = false, - classes: Set = setOf(), init: (ButtonGroup.() -> Unit)? = null + classes: Set? = null, + className: String? = null, + init: (ButtonGroup.() -> Unit)? = null ): ButtonGroup { - val group = ButtonGroup(size, vertical, classes).apply { init?.invoke(this) } + val group = ButtonGroup(size, vertical, classes ?: className.set).apply { init?.invoke(this) } this.add(group) return group } @@ -97,9 +101,11 @@ fun Container.buttonGroup( * It creates button groups with size and vertical parameters of the toolbar. */ fun Toolbar.buttonGroup( - classes: Set = setOf(), init: (ButtonGroup.() -> Unit)? = null + classes: Set? = null, + className: String? = null, + init: (ButtonGroup.() -> Unit)? = null ): ButtonGroup { - val group = ButtonGroup(this.size, this.vertical, classes).apply { + val group = ButtonGroup(this.size, this.vertical, classes ?: className.set).apply { marginRight = this@buttonGroup.spacing.px init?.invoke(this) } diff --git a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/toolbar/Toolbar.kt b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/toolbar/Toolbar.kt index b942d1d5..eefd10b1 100644 --- a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/toolbar/Toolbar.kt +++ b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/toolbar/Toolbar.kt @@ -23,6 +23,7 @@ package pl.treksoft.kvision.toolbar import pl.treksoft.kvision.core.Container import pl.treksoft.kvision.panel.SimplePanel +import pl.treksoft.kvision.utils.set /** * The Bootstrap toolbar. @@ -53,9 +54,11 @@ open class Toolbar( */ fun Container.toolbar( size: ButtonGroupSize? = null, spacing: Int = 2, vertical: Boolean = false, - classes: Set = setOf(), init: (Toolbar.() -> Unit)? = null + classes: Set? = null, + className: String? = null, + init: (Toolbar.() -> Unit)? = null ): Toolbar { - val toolbar = Toolbar(size, spacing, vertical, classes).apply { init?.invoke(this) } + val toolbar = Toolbar(size, spacing, vertical, classes ?: className.set).apply { init?.invoke(this) } this.add(toolbar) return toolbar } diff --git a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/window/Window.kt b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/window/Window.kt index b34de18d..0cceb672 100644 --- a/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/window/Window.kt +++ b/kvision-modules/kvision-bootstrap/src/main/kotlin/pl/treksoft/kvision/window/Window.kt @@ -39,6 +39,7 @@ import pl.treksoft.kvision.modal.CloseIcon import pl.treksoft.kvision.panel.SimplePanel import pl.treksoft.kvision.utils.obj import pl.treksoft.kvision.utils.px +import pl.treksoft.kvision.utils.set internal const val DEFAULT_Z_INDEX = 900 internal const val WINDOW_HEADER_HEIGHT = 40 @@ -84,6 +85,7 @@ open class Window( captionTag.content = value checkHeaderVisibility() } + /** * Window content width. */ @@ -92,6 +94,7 @@ open class Window( set(value) { width = value } + /** * Window content height. */ @@ -100,6 +103,7 @@ open class Window( set(value) { content.height = value } + /** * Window content height. */ @@ -108,14 +112,17 @@ open class Window( set(value) { content.overflow = value } + /** * Determines if the window is resizable. */ var isResizable by refreshOnUpdate(isResizable) { checkIsResizable() } + /** * Determines if the window is draggable. */ var isDraggable by refreshOnUpdate(isDraggable) { checkIsDraggable(); checkHeaderVisibility() } + /** * Determines if Close button is visible. */ @@ -125,6 +132,7 @@ open class Window( closeIcon.visible = value checkHeaderVisibility() } + /** * Determines if Maximize button is visible. */ @@ -134,6 +142,7 @@ open class Window( maximizeIcon.visible = value checkHeaderVisibility() } + /** * Determines if Maximize button is visible. */ @@ -143,6 +152,7 @@ open class Window( minimizeIcon.visible = value checkHeaderVisibility() } + /** * Window icon. */ @@ -426,7 +436,8 @@ fun Container.window( maximizeButton: Boolean = false, minimizeButton: Boolean = false, icon: String? = null, - classes: Set = setOf(), + classes: Set? = null, + className: String? = null, init: (Window.() -> Unit)? = null ): Window { val window = @@ -440,7 +451,7 @@ fun Container.window( maximizeButton, minimizeButton, icon, - classes, + classes ?: className.set, init ) this.add(window) -- cgit