aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/pl/treksoft/kvision/form/select
diff options
context:
space:
mode:
authorRobert Jaros <rjaros@finn.pl>2018-02-22 12:43:43 +0100
committerRobert Jaros <rjaros@finn.pl>2018-02-22 12:43:43 +0100
commite40c13c62de806169368adc7c2c4212f7df6413b (patch)
tree250e39d407cd2c6ef19c9a8ea0176a3215a4a818 /src/main/kotlin/pl/treksoft/kvision/form/select
parent1aefed336f9ef305f59d3668abc8a39c550e921d (diff)
downloadkvision-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')
-rw-r--r--src/main/kotlin/pl/treksoft/kvision/form/select/SelectInput.kt94
-rw-r--r--src/main/kotlin/pl/treksoft/kvision/form/select/SelectOptGroup.kt24
-rw-r--r--src/main/kotlin/pl/treksoft/kvision/form/select/SelectOption.kt36
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) {