diff options
| author | Robert Jaros <rjaros@finn.pl> | 2018-02-22 12:43:43 +0100 |
|---|---|---|
| committer | Robert Jaros <rjaros@finn.pl> | 2018-02-22 12:43:43 +0100 |
| commit | e40c13c62de806169368adc7c2c4212f7df6413b (patch) | |
| tree | 250e39d407cd2c6ef19c9a8ea0176a3215a4a818 /src/main/kotlin/pl/treksoft/kvision/form/select | |
| parent | 1aefed336f9ef305f59d3668abc8a39c550e921d (diff) | |
| download | kvision-e40c13c62de806169368adc7c2c4212f7df6413b.tar.gz kvision-e40c13c62de806169368adc7c2c4212f7df6413b.tar.bz2 kvision-e40c13c62de806169368adc7c2c4212f7df6413b.zip | |
Property values delegated to a map (idea by tieskedh)
Closes #2
Diffstat (limited to 'src/main/kotlin/pl/treksoft/kvision/form/select')
3 files changed, 29 insertions, 125 deletions
diff --git a/src/main/kotlin/pl/treksoft/kvision/form/select/SelectInput.kt b/src/main/kotlin/pl/treksoft/kvision/form/select/SelectInput.kt index f90401ce..b0b7f4b3 100644 --- a/src/main/kotlin/pl/treksoft/kvision/form/select/SelectInput.kt +++ b/src/main/kotlin/pl/treksoft/kvision/form/select/SelectInput.kt @@ -65,124 +65,68 @@ open class SelectInput( /** * A list of options (label to value pairs) for the select control. */ - internal var options = options - set(value) { - field = value - setChildrenFromOptions() - } + internal var options by refreshOnUpdate(options, { setChildrenFromOptions() }) /** * A value of the selected option. */ - var value: String? = value - set(value) { - field = value - refreshState() - } + var value by refreshOnUpdate(value, { refreshState() }) /** * The name attribute of the generated HTML select element. */ - var name: String? = null - set(value) { - field = value - refresh() - } + var name: String? by refreshOnUpdate() /** * Determines if multiple value selection is allowed. */ - var multiple: Boolean = multiple - set(value) { - field = value - refresh() - } + var multiple by refreshOnUpdate(multiple) /** * Additional options for remote (AJAX) data source. */ - var ajaxOptions: AjaxOptions? = ajaxOptions - set(value) { - field = value - if (value != null) liveSearch = true - refresh() + var ajaxOptions by refreshOnUpdate(ajaxOptions, { + if (it != null) { + liveSearch = true } + refresh() + }) /** * Maximal number of selected options. */ - var maxOptions: Int? = null - set(value) { - field = value - refresh() - } + var maxOptions: Int? by refreshOnUpdate() /** * Determines if live search is available. */ - var liveSearch: Boolean = false - set(value) { - field = value - refresh() - } + var liveSearch by refreshOnUpdate(false) /** * The placeholder for the select control. */ - var placeholder: String? = null - set(value) { - field = value - refresh() - } + var placeholder: String? by refreshOnUpdate() /** * The style of the select control. */ - var style: BUTTONSTYLE? = null - set(value) { - field = value - refresh() - } + var style: BUTTONSTYLE? by refreshOnUpdate() /** * The width of the select control. */ - var selectWidth: CssSize? = null - set(value) { - field = value - refresh() - } + var selectWidth: CssSize? by refreshOnUpdate() /** * The width type of the select control. */ - var selectWidthType: SELECTWIDTHTYPE? = null - set(value) { - field = value - refresh() - } + var selectWidthType: SELECTWIDTHTYPE? by refreshOnUpdate() /** * Determines if an empty option is automatically generated. */ - var emptyOption: Boolean = false - set(value) { - field = value - setChildrenFromOptions() - } + var emptyOption by refreshOnUpdate(false, { setChildrenFromOptions() }) /** * Determines if the field is disabled. */ - var disabled: Boolean = false - set(value) { - field = value - refresh() - } + var disabled by refreshOnUpdate(false) /** * Determines if the select is automatically focused. */ - var autofocus: Boolean? = null - set(value) { - field = value - refresh() - } + var autofocus: Boolean? by refreshOnUpdate() /** * The size of the input. */ - var size: INPUTSIZE? = null - set(value) { - field = value - refresh() - } + var size: INPUTSIZE? by refreshOnUpdate() init { setChildrenFromOptions() diff --git a/src/main/kotlin/pl/treksoft/kvision/form/select/SelectOptGroup.kt b/src/main/kotlin/pl/treksoft/kvision/form/select/SelectOptGroup.kt index 6819961f..95d8f178 100644 --- a/src/main/kotlin/pl/treksoft/kvision/form/select/SelectOptGroup.kt +++ b/src/main/kotlin/pl/treksoft/kvision/form/select/SelectOptGroup.kt @@ -45,35 +45,19 @@ open class SelectOptGroup( /** * A label for the group. */ - var label: String = label - set(value) { - field = value - refresh() - } + var label by refreshOnUpdate(label) /** * A list of options (label to value pairs) for the group. */ - var options = options - set(value) { - field = value - setChildrenFromOptions() - } + var options by refreshOnUpdate(options, { setChildrenFromOptions() }) /** * Maximal number of selected options in the group. */ - var maxOptions: Int? = maxOptions - set(value) { - field = value - refresh() - } + var maxOptions by refreshOnUpdate(maxOptions) /** * Determines if the group is disabled. */ - var disabled: Boolean = disabled - set(value) { - field = value - refresh() - } + var disabled by refreshOnUpdate(disabled) init { setChildrenFromOptions() diff --git a/src/main/kotlin/pl/treksoft/kvision/form/select/SelectOption.kt b/src/main/kotlin/pl/treksoft/kvision/form/select/SelectOption.kt index e7a49120..141eff28 100644 --- a/src/main/kotlin/pl/treksoft/kvision/form/select/SelectOption.kt +++ b/src/main/kotlin/pl/treksoft/kvision/form/select/SelectOption.kt @@ -46,51 +46,27 @@ open class SelectOption( /** * The value of the option. */ - var value: String? = value - set(value) { - field = value - refresh() - } + var value by refreshOnUpdate(value) /** * The label of the option. */ - var label: String? = label - set(value) { - field = value - refresh() - } + var label by refreshOnUpdate(label) /** * The subtext after the label of the option. */ - var subtext: String? = subtext - set(value) { - field = value - refresh() - } + var subtext by refreshOnUpdate(subtext) /** * The icon before the label of the option. */ - var icon: String? = icon - set(value) { - field = value - refresh() - } + var icon by refreshOnUpdate(icon) /** * Determines if the option should be rendered as divider. */ - var divider: Boolean = divider - set(value) { - field = value - refresh() - } + var divider by refreshOnUpdate(divider) /** * Determines if the option should be disabled. */ - var disabled: Boolean = disabled - set(value) { - field = value - refresh() - } + var disabled by refreshOnUpdate(disabled) override fun render(): VNode { return if (!divider) { |
