From f246fff378ae162204cd64ec6ae6038afe369688 Mon Sep 17 00:00:00 2001 From: Robert Jaros Date: Thu, 17 Jan 2019 13:41:57 +0100 Subject: Upgrade of touchspin component and removed default limits. --- kvision-modules/kvision-spinner/build.gradle | 2 +- .../pl/treksoft/kvision/form/spinner/Spinner.kt | 10 +++++----- .../treksoft/kvision/form/spinner/SpinnerInput.kt | 22 ++++++++++++++-------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/kvision-modules/kvision-spinner/build.gradle b/kvision-modules/kvision-spinner/build.gradle index ce88c117..0c3a2940 100644 --- a/kvision-modules/kvision-spinner/build.gradle +++ b/kvision-modules/kvision-spinner/build.gradle @@ -3,7 +3,7 @@ apply from: "../shared.gradle" kotlinFrontend { npm { - dependency("bootstrap-touchspin", "3.1.1") + dependency("bootstrap-touchspin", "4.2.5") } } diff --git a/kvision-modules/kvision-spinner/src/main/kotlin/pl/treksoft/kvision/form/spinner/Spinner.kt b/kvision-modules/kvision-spinner/src/main/kotlin/pl/treksoft/kvision/form/spinner/Spinner.kt index 4fa68e47..31c6ceb8 100644 --- a/kvision-modules/kvision-spinner/src/main/kotlin/pl/treksoft/kvision/form/spinner/Spinner.kt +++ b/kvision-modules/kvision-spinner/src/main/kotlin/pl/treksoft/kvision/form/spinner/Spinner.kt @@ -36,8 +36,8 @@ import pl.treksoft.kvision.utils.SnOn * @constructor * @param value spinner value * @param name the name attribute of the generated HTML input element - * @param min minimal value (default 0) - * @param max maximal value (default 100) + * @param min minimal value + * @param max maximal value * @param step step value (default 1) * @param decimals number of decimal digits (default 0) * @param buttonsType spinner buttons type @@ -46,7 +46,7 @@ import pl.treksoft.kvision.utils.SnOn * @param rich determines if [label] can contain HTML code */ open class Spinner( - value: Number? = null, name: String? = null, min: Int = 0, max: Int = DEFAULT_MAX, step: Double = DEFAULT_STEP, + value: Number? = null, name: String? = null, min: Int? = null, max: Int? = null, step: Double = DEFAULT_STEP, decimals: Int = 0, buttonsType: ButtonsType = ButtonsType.VERTICAL, forceType: ForceType = ForceType.NONE, label: String? = null, rich: Boolean = false @@ -241,8 +241,8 @@ open class Spinner( fun Container.spinner( value: Number? = null, name: String? = null, - min: Int = 0, - max: Int = DEFAULT_MAX, + min: Int? = null, + max: Int? = null, step: Double = DEFAULT_STEP, decimals: Int = 0, buttonsType: ButtonsType = ButtonsType.VERTICAL, diff --git a/kvision-modules/kvision-spinner/src/main/kotlin/pl/treksoft/kvision/form/spinner/SpinnerInput.kt b/kvision-modules/kvision-spinner/src/main/kotlin/pl/treksoft/kvision/form/spinner/SpinnerInput.kt index b4a8138a..5fc7470a 100644 --- a/kvision-modules/kvision-spinner/src/main/kotlin/pl/treksoft/kvision/form/spinner/SpinnerInput.kt +++ b/kvision-modules/kvision-spinner/src/main/kotlin/pl/treksoft/kvision/form/spinner/SpinnerInput.kt @@ -51,15 +51,14 @@ enum class ForceType(internal val value: String) { } internal const val DEFAULT_STEP = 1.0 -internal const val DEFAULT_MAX = 100 /** * The basic component for spinner control. * * @constructor * @param value spinner value - * @param min minimal value (default 0) - * @param max maximal value (default 100) + * @param min minimal value + * @param max maximal value * @param step step value (default 1) * @param decimals number of decimal digits (default 0) * @param buttonsType spinner buttons type @@ -68,7 +67,7 @@ internal const val DEFAULT_MAX = 100 */ @Suppress("TooManyFunctions") open class SpinnerInput( - value: Number? = null, min: Int = 0, max: Int = DEFAULT_MAX, step: Double = DEFAULT_STEP, + value: Number? = null, min: Int? = null, max: Int? = null, step: Double = DEFAULT_STEP, decimals: Int = 0, buttonsType: ButtonsType = ButtonsType.VERTICAL, forceType: ForceType = ForceType.NONE, classes: Set = setOf() @@ -205,6 +204,10 @@ open class SpinnerInput( val v = getElementJQuery()?.`val`() as String? if (v != null && v.isNotEmpty()) { this.value = v.toDoubleOrNull() + this.value?.let { + if (min != null && it.toInt() < min ?: 0) this.value = min + if (max != null && it.toInt() > max ?: 0) this.value = max + } } else { this.value = null } @@ -214,9 +217,6 @@ open class SpinnerInput( override fun afterInsert(node: VNode) { getElementJQueryD()?.TouchSpin(getSettingsObj()) siblings = getElementJQuery()?.parent(".bootstrap-touchspin")?.children("span") - size?.let { - siblings?.find("button")?.addClass(it.className) - } this.getElementJQuery()?.on("change") { e, _ -> if (e.asDynamic().isTrigger != null) { val event = org.w3c.dom.events.Event("change") @@ -280,6 +280,12 @@ open class SpinnerInput( this.decimals = decimals this.verticalbuttons = verticalbuttons this.forcestepdivisibility = forceType.value + if (verticalbuttons) { + this.verticalup = "" + this.verticaldown = "" + } + this.buttondown_class = "btn btn-default" + this.buttonup_class = "btn btn-default" } } @@ -306,7 +312,7 @@ open class SpinnerInput( * It takes the same parameters as the constructor of the built component. */ fun Container.spinnerInput( - value: Number? = null, min: Int = 0, max: Int = DEFAULT_MAX, step: Double = DEFAULT_STEP, + value: Number? = null, min: Int? = null, max: Int? = null, step: Double = DEFAULT_STEP, decimals: Int = 0, buttonsType: ButtonsType = ButtonsType.VERTICAL, forceType: ForceType = ForceType.NONE, classes: Set = setOf(), init: (SpinnerInput.() -> Unit)? = null -- cgit