diff --git a/resources/js/components/FormField.vue b/resources/js/components/FormField.vue
index 0143598..943ef61 100644
--- a/resources/js/components/FormField.vue
+++ b/resources/js/components/FormField.vue
@@ -4,38 +4,38 @@
{{ __('novaMultiselect.maxElements', { max: String(currentField.max || '') }) }}
@@ -51,9 +51,9 @@
@@ -80,9 +80,9 @@
{{ __(reorderMode ? 'novaMultiselect.doneReordering' : 'novaMultiselect.reorder') }}
@@ -210,7 +210,12 @@ export default {
methods: {
setInitialValue() {
- if (this.isMultiselect) {
+ if (this.isOptionGroups) {
+ const valuesArray = this.options.map((option) => {
+ return option.values.filter((subOption) => { return subOption.selected }
+ )});
+ this.value = valuesArray.flat();
+ } else if (this.isMultiselect) {
const valuesArray = this.getInitialFieldValuesArray();
this.value = valuesArray && valuesArray.length ? valuesArray.map(this.getValueFromOptions).filter(Boolean) : [];
} else {
@@ -251,8 +256,8 @@ export default {
this.$nextTick(() => this.repositionDropdown());
Nova.$emit(`multiselect-${this.field.attribute}-input`, this.value);
this.emitFieldValueChange(
- this.field.attribute,
- !this.value ? '' : this.isMultiselect ? this.value.map(v => v.value) : this.value.value
+ this.field.attribute,
+ !this.value ? '' : this.isMultiselect ? this.value.map(v => v.value) : this.value.value
);
},
@@ -334,8 +339,8 @@ export default {
ms.$refs.list.style['border-radius'] = '5px 5px 0 0';
} else {
const adjustedTop = fixedModal
- ? top - (parseInt(window.getComputedStyle(fixedModal)['padding-top']) || 0)
- : top;
+ ? top - (parseInt(window.getComputedStyle(fixedModal)['padding-top']) || 0)
+ : top;
ms.$refs.list.style.bottom = 'auto';
ms.$refs.list.style.top = `${adjustedTop + height}px`;
ms.$refs.list.style['border-radius'] = '0 0 5px 5px';
diff --git a/src/Multiselect.php b/src/Multiselect.php
index 0c8dacd..889a75e 100644
--- a/src/Multiselect.php
+++ b/src/Multiselect.php
@@ -43,7 +43,7 @@ public function options($options = [])
})
->groupBy('group')
->map(function ($value, $key) {
- return ['label' => $key, 'values' => $value->map->only(['label', 'value'])->toArray()];
+ return ['label' => $key, 'values' => $value->map->only(['label', 'value', 'selected'])->toArray()];
})
->values()
->toArray();