From abe087eb5d13aca14bd2b6c4ff037f3a691ad21c Mon Sep 17 00:00:00 2001 From: Hui Yang Date: Wed, 14 Sep 2022 22:33:49 +0800 Subject: [PATCH 1/8] fix bug for Select when allow multiple value --- resources/js/ui/Select/Select.vue | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/resources/js/ui/Select/Select.vue b/resources/js/ui/Select/Select.vue index c2c6db81..5df81e75 100644 --- a/resources/js/ui/Select/Select.vue +++ b/resources/js/ui/Select/Select.vue @@ -20,7 +20,7 @@ + @click="removeSelection(option)"> @@ -115,7 +115,7 @@ search: '', highlighted: 0, // assuming selection is a string or a number only - selection: _.isString(this.value) ? this.value.split(',') : [ _.toString(this.value) ], + selection: _.isString(this.value) ? this.value.split(',') : this.value, } }, @@ -237,16 +237,12 @@ watch: { value(value) { - if (_.isString(this.value)) { - this.selection = this.value.split(',') - } else if (_.isNumber(this.value)) { - this.selection = [ _.toString(this.value) ] - } + this.selection = _.isString(value) ? value.split(',') : value this.resetHighlighted(); }, selection(value) { - this.$emit('input', _.isArray(value) ? _.join(value, ',') : value) + this.$emit('input', value) }, search(value) { @@ -302,13 +298,17 @@ } }, - removeSelection(index) { + removeSelection(option) { + let index = _.findIndex(this.selection, (item) => { + return option.value == item + }) + console.log('remove', index, this.selection, option) this.selection.splice(index, 1) }, toggleSelection(option) { if (this.inSelection(option)) { - this.removeSelection(_.indexOf(this.selection, option)) + this.removeSelection(option) } else { this.addSelection(option) } From 86578fe25aef4e54aad33f06119bbd9c428015ae Mon Sep 17 00:00:00 2001 From: Hui Yang Date: Fri, 16 Sep 2022 16:46:44 +0800 Subject: [PATCH 2/8] return single value when Select is not multiple value --- resources/js/ui/Select/Select.vue | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/resources/js/ui/Select/Select.vue b/resources/js/ui/Select/Select.vue index 5df81e75..a6091858 100644 --- a/resources/js/ui/Select/Select.vue +++ b/resources/js/ui/Select/Select.vue @@ -242,7 +242,11 @@ }, selection(value) { - this.$emit('input', value) + if (!this.multiple) { + this.$emit('input', value.length ? value[0] : null) + } else { + this.$emit('input', value) + } }, search(value) { From 55b50ff265518c820b783200c8b19534455f37c9 Mon Sep 17 00:00:00 2001 From: Hui Yang Date: Mon, 26 Sep 2022 23:04:22 +0800 Subject: [PATCH 3/8] fix issue where data loaded with integer value cannot match with string value of options ( 1 not matched with '1' ) --- resources/js/ui/Select/Select.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/js/ui/Select/Select.vue b/resources/js/ui/Select/Select.vue index a6091858..a80c1244 100644 --- a/resources/js/ui/Select/Select.vue +++ b/resources/js/ui/Select/Select.vue @@ -115,7 +115,7 @@ search: '', highlighted: 0, // assuming selection is a string or a number only - selection: _.isString(this.value) ? this.value.split(',') : this.value, + selection: _.isString(this.value) ? this.value.split(',') : (this.value ? this.value.toString() : null), } }, From 1f464d34b88c4e1210ae70b04a8b15e013089c40 Mon Sep 17 00:00:00 2001 From: Hui Yang Date: Thu, 13 Oct 2022 00:46:32 +0800 Subject: [PATCH 4/8] fix select field width issue at admin panel --- resources/scss/ui/forms/_fields.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/scss/ui/forms/_fields.scss b/resources/scss/ui/forms/_fields.scss index 83ecd1f5..15f12be2 100644 --- a/resources/scss/ui/forms/_fields.scss +++ b/resources/scss/ui/forms/_fields.scss @@ -97,7 +97,7 @@ } .field-select { - @apply flex justify-between items-center w-full px-3 py-2; + @apply flex justify-between items-center px-3 py-2; &--sm { @apply p-1; From 454385c65500f3627a025b39fdf11826da309739 Mon Sep 17 00:00:00 2001 From: Hui Yang Date: Wed, 19 Oct 2022 10:21:24 +0800 Subject: [PATCH 5/8] fix error when value passed in is a single value (not array, and without ",") --- resources/js/ui/Select/Select.vue | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/resources/js/ui/Select/Select.vue b/resources/js/ui/Select/Select.vue index a80c1244..bf1a2ba7 100644 --- a/resources/js/ui/Select/Select.vue +++ b/resources/js/ui/Select/Select.vue @@ -243,7 +243,7 @@ selection(value) { if (!this.multiple) { - this.$emit('input', value.length ? value[0] : null) + this.$emit('input', _.isArray(value) && value.length ? value[0] : value) } else { this.$emit('input', value) } @@ -319,7 +319,11 @@ }, inSelection(option) { - return _.includes(this.selection, option.value) + if (this.multiple) { + return _.includes(this.selection, option.value) + } else { + return this.selection == option.value + } }, resetSearch() { From 8755f9cf20be5f86fc9a9faf345af59eb48a13b5 Mon Sep 17 00:00:00 2001 From: Hui Yang Date: Wed, 19 Oct 2022 15:02:01 +0800 Subject: [PATCH 6/8] fix error when value passed in as array --- resources/js/ui/Select/Select.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/js/ui/Select/Select.vue b/resources/js/ui/Select/Select.vue index bf1a2ba7..14f79975 100644 --- a/resources/js/ui/Select/Select.vue +++ b/resources/js/ui/Select/Select.vue @@ -115,7 +115,7 @@ search: '', highlighted: 0, // assuming selection is a string or a number only - selection: _.isString(this.value) ? this.value.split(',') : (this.value ? this.value.toString() : null), + selection: _.isString(this.value) && this.multiple ? this.value.split(',') : this.value, } }, From b1316e58623d3d813a8241b0c705d30c3f8ca619 Mon Sep 17 00:00:00 2001 From: Hui Yang Date: Thu, 18 May 2023 18:27:40 +0800 Subject: [PATCH 7/8] add footer slot for Select component, so that can add action button such as "Add New" --- resources/js/ui/Select/Select.vue | 2 ++ resources/js/ui/Select/SelectGroup.vue | 2 ++ 2 files changed, 4 insertions(+) diff --git a/resources/js/ui/Select/Select.vue b/resources/js/ui/Select/Select.vue index 14f79975..377ccc84 100644 --- a/resources/js/ui/Select/Select.vue +++ b/resources/js/ui/Select/Select.vue @@ -95,6 +95,8 @@

No results found for "{{ search }}"

+ + diff --git a/resources/js/ui/Select/SelectGroup.vue b/resources/js/ui/Select/SelectGroup.vue index 95919cfc..579ce3ef 100644 --- a/resources/js/ui/Select/SelectGroup.vue +++ b/resources/js/ui/Select/SelectGroup.vue @@ -26,6 +26,8 @@ :message="hasMessage" :value="value" @input="onInput($event)"> + + From 2c57ad89c39c80a5418308ca0a8edfce7a05174b Mon Sep 17 00:00:00 2001 From: Hui Yang Date: Sat, 6 Dec 2025 18:42:56 +0800 Subject: [PATCH 8/8] fix select field not working when there is multiple instance with the same name --- resources/js/mixins/fields.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/js/mixins/fields.js b/resources/js/mixins/fields.js index e862d431..9804ca31 100644 --- a/resources/js/mixins/fields.js +++ b/resources/js/mixins/fields.js @@ -9,7 +9,7 @@ export default { }, formattedId() { - return this.id ? this.id : this.name + '-field' + return (this.id ? this.id : this.name + '-field-') + this._uid }, computedValue: {