diff options
Diffstat (limited to 'src/main/kotlin/pl/treksoft/kvision')
12 files changed, 61 insertions, 44 deletions
diff --git a/src/main/kotlin/pl/treksoft/kvision/Showcase.kt b/src/main/kotlin/pl/treksoft/kvision/Showcase.kt index 3bc6a348..aa97a026 100644 --- a/src/main/kotlin/pl/treksoft/kvision/Showcase.kt +++ b/src/main/kotlin/pl/treksoft/kvision/Showcase.kt @@ -4,6 +4,7 @@ import pl.treksoft.kvision.basic.Label import pl.treksoft.kvision.core.Container import pl.treksoft.kvision.core.Img import pl.treksoft.kvision.core.Root +import pl.treksoft.kvision.core.UNIT import pl.treksoft.kvision.dropdown.DD.* import pl.treksoft.kvision.dropdown.DropDown import pl.treksoft.kvision.html.* @@ -21,7 +22,7 @@ class Showcase : ApplicationBase() { val root = Root("showcase") val container = Container(setOf("abc", "def")) - val h1 = Tag(H1, "To jest <i>test pisania</i> tekstu", false, ALIGN.NONE, classes = setOf("test", "test2")) + val h1 = Tag(H1, "To jest <i>test pisania</i> tekstu", false, null, classes = setOf("test", "test2")) container.add(h1) val label = Label("KVLabel1") container.add(label) @@ -167,7 +168,7 @@ class Showcase : ApplicationBase() { pa.add(Label("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce nec fringilla turpis, vel molestie dolor. Vestibulum ut ex eget orci porta gravida eu sit amet tortor. Suspendisse vel fermentum purus, vel ornare tellus. Vivamus dictum, risus non viverra venenatis, magna mi pharetra purus, nec dignissim risus tortor a sem. Donec tincidunt dui ut eros laoreet consectetur. Nam dapibus vestibulum sem, eget accumsan ex vestibulum ac. Curabitur ac mi sit amet eros sodales dictum. Sed at felis at nunc aliquam finibus. Vestibulum lorem nulla, dictum ac libero non, mattis dictum nisl. Aenean semper lorem turpis. Praesent pellentesque ligula est, viverra molestie leo imperdiet ut. Nam vitae hendrerit justo. Nullam tincidunt et nibh ac volutpat. Aliquam vulputate mi aliquam fermentum rhoncus."),3) pa.add(Image(Img("kotlin.png")),1) pa.add(dock,2,alignSelf = FLEXALIGNITEMS.FLEXSTART) - dock.width = 400 + dock.width = 400 to UNIT.px root.add(pa) val modal = Modal("Test okienka") diff --git a/src/main/kotlin/pl/treksoft/kvision/core/Types.kt b/src/main/kotlin/pl/treksoft/kvision/core/Types.kt new file mode 100644 index 00000000..df0eb98b --- /dev/null +++ b/src/main/kotlin/pl/treksoft/kvision/core/Types.kt @@ -0,0 +1,21 @@ +package pl.treksoft.kvision.core + +@Suppress("EnumNaming", "EnumEntryName") +enum class UNIT(val unit: String) { + px("px"), + pt("pt"), + em("em"), + cm("cm"), + mm("mm"), + `in`("in"), + pc("pc"), + ch("ch"), + rem("rem"), + vw("vw"), + vh("vh"), + vmin("vmin"), + vmax("vmax"), + perc("%") +} + +typealias Length = Pair<Int, UNIT> diff --git a/src/main/kotlin/pl/treksoft/kvision/core/Widget.kt b/src/main/kotlin/pl/treksoft/kvision/core/Widget.kt index e2a4f09f..ff34186b 100644 --- a/src/main/kotlin/pl/treksoft/kvision/core/Widget.kt +++ b/src/main/kotlin/pl/treksoft/kvision/core/Widget.kt @@ -47,17 +47,12 @@ open class Widget(classes: Set<String> = setOf()) : KVObject { field = value refresh() } - var width: Int? = null + var width: Length? = null set(value) { field = value refresh() } - var widthPercent: Int? = null - set(value) { - field = value - refresh() - } - var height: Int? = null + var height: Length? = null set(value) { field = value refresh() @@ -139,13 +134,11 @@ open class Widget(classes: Set<String> = setOf()) : KVObject { protected open fun getSnStyle(): List<StringPair> { val snstyle = mutableListOf<StringPair>() - if (width != null) { - snstyle.add("width" to width.toString() + "px") - } else if (widthPercent != null) { - snstyle.add("width" to widthPercent.toString() + "%") + width?.let { + snstyle.add("width" to it.first.toString() + it.second.unit) } - if (height != null) { - snstyle.add("height" to height.toString() + "px") + height?.let { + snstyle.add("height" to it.first.toString() + it.second.unit) } return snstyle } @@ -157,14 +150,14 @@ open class Widget(classes: Set<String> = setOf()) : KVObject { protected open fun getSnAttrs(): List<StringPair> { val snattrs = mutableListOf<StringPair>() - if (id != null) { - snattrs.add("id" to id.orEmpty()) + id?.let { + snattrs.add("id" to it) } - if (title != null) { - snattrs.add("title" to title.orEmpty()) + title?.let { + snattrs.add("title" to it) } - if (role != null) { - snattrs.add("role" to role.orEmpty()) + role?.let { + snattrs.add("role" to it) } return snattrs } diff --git a/src/main/kotlin/pl/treksoft/kvision/html/Button.kt b/src/main/kotlin/pl/treksoft/kvision/html/Button.kt index 74822401..d10cb8cd 100644 --- a/src/main/kotlin/pl/treksoft/kvision/html/Button.kt +++ b/src/main/kotlin/pl/treksoft/kvision/html/Button.kt @@ -70,8 +70,8 @@ open class Button(text: String, icon: String? = null, style: BUTTONSTYLE = BUTTO val cl = super.getSnClass().toMutableList() cl.add("btn" to true) cl.add(style.className to true) - if (size != null) { - cl.add(size?.className.orEmpty() to true) + size?.let { + cl.add(it.className to true) } if (block) { cl.add("btn-block" to true) diff --git a/src/main/kotlin/pl/treksoft/kvision/html/Image.kt b/src/main/kotlin/pl/treksoft/kvision/html/Image.kt index c9566531..50840f71 100644 --- a/src/main/kotlin/pl/treksoft/kvision/html/Image.kt +++ b/src/main/kotlin/pl/treksoft/kvision/html/Image.kt @@ -47,7 +47,9 @@ open class Image(src: ResString, alt: String? = null, responsive: Boolean = fals override fun getSnAttrs(): List<StringPair> { val pr = super.getSnAttrs().toMutableList() pr.add("src" to src) - if (alt != null) pr.add("alt" to alt.orEmpty()) + alt?.let { + pr.add("alt" to it) + } return pr } @@ -59,8 +61,8 @@ open class Image(src: ResString, alt: String? = null, responsive: Boolean = fals if (centered) { cl.add("center-block" to true) } - if (shape != null) { - cl.add(shape?.className.orEmpty() to true) + shape?.let { + cl.add(it.className to true) } return cl } diff --git a/src/main/kotlin/pl/treksoft/kvision/html/Tag.kt b/src/main/kotlin/pl/treksoft/kvision/html/Tag.kt index cb8330ac..da964f6e 100644 --- a/src/main/kotlin/pl/treksoft/kvision/html/Tag.kt +++ b/src/main/kotlin/pl/treksoft/kvision/html/Tag.kt @@ -41,7 +41,6 @@ enum class TAG(val tagName: String) { } enum class ALIGN(val className: String) { - NONE(""), LEFT("text-left"), CENTER("text-center"), RIGHT("text-right"), @@ -49,7 +48,7 @@ enum class ALIGN(val className: String) { NOWRAP("text-nowrap") } -open class Tag(type: TAG, text: String? = null, rich: Boolean = false, align: ALIGN = ALIGN.NONE, +open class Tag(type: TAG, text: String? = null, rich: Boolean = false, align: ALIGN? = null, classes: Set<String> = setOf()) : Container(classes) { var type = type set(value) { @@ -86,8 +85,8 @@ open class Tag(type: TAG, text: String? = null, rich: Boolean = false, align: AL override fun getSnClass(): List<StringBoolPair> { val cl = super.getSnClass().toMutableList() - if (align != ALIGN.NONE) { - cl.add(align.className to true) + align?.let { + cl.add(it.className to true) } return cl } diff --git a/src/main/kotlin/pl/treksoft/kvision/modal/Alert.kt b/src/main/kotlin/pl/treksoft/kvision/modal/Alert.kt index c04449c2..39268ffa 100644 --- a/src/main/kotlin/pl/treksoft/kvision/modal/Alert.kt +++ b/src/main/kotlin/pl/treksoft/kvision/modal/Alert.kt @@ -8,7 +8,7 @@ import pl.treksoft.kvision.html.TAG import pl.treksoft.kvision.html.Tag open class Alert(caption: String? = null, text: String? = null, rich: Boolean = false, - align: ALIGN = ALIGN.NONE, size: MODALSIZE? = null, animation: Boolean = true, + align: ALIGN? = null, size: MODALSIZE? = null, animation: Boolean = true, private val callback: (() -> Unit)? = null) : Modal(caption, true, size, animation) { var text get() = content.text @@ -48,7 +48,7 @@ open class Alert(caption: String? = null, text: String? = null, rich: Boolean = companion object { @Suppress("LongParameterList") fun show(caption: String? = null, text: String? = null, rich: Boolean = false, - align: ALIGN = ALIGN.NONE, size: MODALSIZE? = null, animation: Boolean = true, + align: ALIGN? = null, size: MODALSIZE? = null, animation: Boolean = true, callback: (() -> Unit)? = null) { Alert(caption, text, rich, align, size, animation, callback).show() } diff --git a/src/main/kotlin/pl/treksoft/kvision/modal/Confirm.kt b/src/main/kotlin/pl/treksoft/kvision/modal/Confirm.kt index aa4e8b88..90766854 100644 --- a/src/main/kotlin/pl/treksoft/kvision/modal/Confirm.kt +++ b/src/main/kotlin/pl/treksoft/kvision/modal/Confirm.kt @@ -7,7 +7,7 @@ import pl.treksoft.kvision.html.TAG import pl.treksoft.kvision.html.Tag open class Confirm(caption: String? = null, text: String? = null, rich: Boolean = false, - align: ALIGN = ALIGN.NONE, size: MODALSIZE? = null, animation: Boolean = true, + align: ALIGN? = null, size: MODALSIZE? = null, animation: Boolean = true, cancelVisible: Boolean = false, private val noCallback: (() -> Unit)? = null, private val yesCallback: (() -> Unit)? = null) : Modal(caption, false, size, animation, false) { @@ -75,7 +75,7 @@ open class Confirm(caption: String? = null, text: String? = null, rich: Boolean companion object { @Suppress("LongParameterList") fun show(caption: String? = null, text: String? = null, rich: Boolean = false, - align: ALIGN = ALIGN.NONE, size: MODALSIZE? = null, animation: Boolean = true, + align: ALIGN? = null, size: MODALSIZE? = null, animation: Boolean = true, cancelVisible: Boolean = false, noCallback: (() -> Unit)? = null, yesCallback: (() -> Unit)? = null) { Confirm(caption, text, rich, align, size, animation, cancelVisible, noCallback, yesCallback).show() diff --git a/src/main/kotlin/pl/treksoft/kvision/modal/Modal.kt b/src/main/kotlin/pl/treksoft/kvision/modal/Modal.kt index 69a83dfb..94796326 100644 --- a/src/main/kotlin/pl/treksoft/kvision/modal/Modal.kt +++ b/src/main/kotlin/pl/treksoft/kvision/modal/Modal.kt @@ -180,8 +180,8 @@ open class ModalDialog(size: MODALSIZE?) : Container(setOf("modal-dialog")) { override fun getSnClass(): List<StringBoolPair> { val cl = super.getSnClass().toMutableList() - if (size != null) { - cl.add(size?.className.orEmpty() to true) + size?.let { + cl.add(it.className to true) } return cl } diff --git a/src/main/kotlin/pl/treksoft/kvision/panel/FlexPanel.kt b/src/main/kotlin/pl/treksoft/kvision/panel/FlexPanel.kt index 781f8dcd..10483a8d 100644 --- a/src/main/kotlin/pl/treksoft/kvision/panel/FlexPanel.kt +++ b/src/main/kotlin/pl/treksoft/kvision/panel/FlexPanel.kt @@ -124,7 +124,6 @@ open class FlexPanel(direction: FLEXDIR? = null, wrap: FLEXWRAP? = null, justify alignContent?.let { snstyle.add("align-content" to it.alignContent) } - println("abc") return snstyle } } diff --git a/src/main/kotlin/pl/treksoft/kvision/panel/ResponsiveGridPanel.kt b/src/main/kotlin/pl/treksoft/kvision/panel/ResponsiveGridPanel.kt index af4dd53f..17b3803f 100644 --- a/src/main/kotlin/pl/treksoft/kvision/panel/ResponsiveGridPanel.kt +++ b/src/main/kotlin/pl/treksoft/kvision/panel/ResponsiveGridPanel.kt @@ -19,7 +19,7 @@ const val MAX_COLUMNS = 12 internal data class WidgetParam(val widget: Widget, val size: Int, val offset: Int) open class ResponsiveGridPanel(private val gridsize: GRIDSIZE = GRIDSIZE.MD, - private var rows: Int = 0, private var cols: Int = 0, align: ALIGN = ALIGN.NONE, + private var rows: Int = 0, private var cols: Int = 0, align: ALIGN? = null, classes: Set<String> = setOf()) : Container(classes) { protected var align = align set(value) { @@ -87,8 +87,8 @@ open class ResponsiveGridPanel(private val gridsize: GRIDSIZE = GRIDSIZE.MD, val widget = wp?.widget?.let { WidgetWrapper(it, setOf("col-" + gridsize.size + "-" + num)) } ?: Tag(TAG.DIV, classes = setOf("col-" + gridsize.size + "-" + num)) - if (align != ALIGN.NONE) { - widget.addCssClass(align.className) + align?.let { + widget.addCssClass(it.className) } rowContainer.add(widget) } else { @@ -98,8 +98,8 @@ open class ResponsiveGridPanel(private val gridsize: GRIDSIZE = GRIDSIZE.MD, if (wp.offset > 0) { widget.addCssClass("col-" + gridsize.size + "-offset-" + wp.offset) } - if (align != ALIGN.NONE) { - widget.addCssClass(align.className) + align?.let { + widget.addCssClass(it.className) } rowContainer.add(widget) } diff --git a/src/main/kotlin/pl/treksoft/kvision/panel/SplitPanel.kt b/src/main/kotlin/pl/treksoft/kvision/panel/SplitPanel.kt index 569a5b85..06f9be59 100644 --- a/src/main/kotlin/pl/treksoft/kvision/panel/SplitPanel.kt +++ b/src/main/kotlin/pl/treksoft/kvision/panel/SplitPanel.kt @@ -4,6 +4,7 @@ import com.github.snabbdom.VNode import pl.treksoft.jquery.JQuery import pl.treksoft.jquery.JQueryEventObject import pl.treksoft.kvision.core.Container +import pl.treksoft.kvision.core.UNIT import pl.treksoft.kvision.html.TAG import pl.treksoft.kvision.html.Tag import pl.treksoft.kvision.snabbdom.obj @@ -23,6 +24,7 @@ open class SplitPanel(private val direction: DIRECTION = DIRECTION.VERTICAL, internal fun afterInsertSplitter() { if (children.size == 2) { val horizontal = direction == DIRECTION.HORIZONTAL + val px = UNIT.px val self = this children[0].getElementJQueryD().resizable(obj { handleSelector = "#" + splitter.id @@ -36,9 +38,9 @@ open class SplitPanel(private val direction: DIRECTION = DIRECTION.VERTICAL, } onDragEnd = { e: JQueryEventObject, el: JQuery, _: dynamic -> if (horizontal) { - children[0].height = el.height().toInt() + children[0].height = el.height().toInt() to px } else { - children[0].width = el.width().toInt() + children[0].width = el.width().toInt() to px } self.dispatchEvent("dragEndSplitPanel", obj({ detail = e })) } |