support multiselect fields
This commit is contained in:
parent
7a0b69c1c1
commit
0862dc44ba
3 changed files with 33 additions and 5 deletions
|
@ -7,6 +7,7 @@ export const FieldTypes = [
|
||||||
'image',
|
'image',
|
||||||
'number',
|
'number',
|
||||||
'dropdown',
|
'dropdown',
|
||||||
|
'multiselect',
|
||||||
'toggle',
|
'toggle',
|
||||||
] as const
|
] as const
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,11 @@ import { v7 as uuidv7 } from 'uuid'
|
||||||
import Button from 'primevue/button'
|
import Button from 'primevue/button'
|
||||||
import Checkbox from 'primevue/checkbox'
|
import Checkbox from 'primevue/checkbox'
|
||||||
import Column from 'primevue/column'
|
import Column from 'primevue/column'
|
||||||
|
import Chip from 'primevue/chip'
|
||||||
import DataTable from 'primevue/datatable'
|
import DataTable from 'primevue/datatable'
|
||||||
import Image from 'primevue/image'
|
import Image from 'primevue/image'
|
||||||
import InputText from 'primevue/inputtext'
|
import InputText from 'primevue/inputtext'
|
||||||
|
import MultiSelect from 'primevue/multiselect'
|
||||||
import Select from 'primevue/select'
|
import Select from 'primevue/select'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
@ -142,14 +144,27 @@ DataTable.data-editor(
|
||||||
disabled
|
disabled
|
||||||
)
|
)
|
||||||
div(
|
div(
|
||||||
|
v-else-if='col.type === "multiselect"'
|
||||||
|
)
|
||||||
|
span.empty(
|
||||||
|
v-if='!slotProps.data[col.name] || (Array.isArray(slotProps.data[col.name]) && slotProps.data[col.name].length === 0)'
|
||||||
|
) not set
|
||||||
|
.chips(
|
||||||
v-else
|
v-else
|
||||||
)
|
)
|
||||||
span(
|
Chip(
|
||||||
v-if='slotProps.data[col.name]'
|
v-for='chip in slotProps.data[col.name]'
|
||||||
) {{ slotProps.data[col.name] }}
|
:label='chip'
|
||||||
span.empty(
|
)
|
||||||
|
div(
|
||||||
v-else
|
v-else
|
||||||
|
)
|
||||||
|
span.empty(
|
||||||
|
v-if='!slotProps.data[col.name]'
|
||||||
) not set
|
) not set
|
||||||
|
span(
|
||||||
|
v-else
|
||||||
|
) {{ slotProps.data[col.name] }}
|
||||||
template(
|
template(
|
||||||
#editor='slotProps'
|
#editor='slotProps'
|
||||||
)
|
)
|
||||||
|
@ -185,6 +200,18 @@ DataTable.data-editor(
|
||||||
showClear
|
showClear
|
||||||
fluid
|
fluid
|
||||||
)
|
)
|
||||||
|
div(
|
||||||
|
v-else-if='col.type === "multiselect"'
|
||||||
|
)
|
||||||
|
MultiSelect(
|
||||||
|
v-model='slotProps.data[slotProps.field]'
|
||||||
|
:options='col.options'
|
||||||
|
placeholder='Select from Options'
|
||||||
|
filter
|
||||||
|
showClear
|
||||||
|
fluid
|
||||||
|
display='chip'
|
||||||
|
)
|
||||||
div(
|
div(
|
||||||
v-else
|
v-else
|
||||||
)
|
)
|
||||||
|
|
|
@ -167,7 +167,7 @@ DataTable.field-editor(
|
||||||
#expansion='slotProps'
|
#expansion='slotProps'
|
||||||
)
|
)
|
||||||
div(
|
div(
|
||||||
v-if='slotProps.data.type === "dropdown"'
|
v-if='slotProps.data.type === "dropdown" || slotProps.data.type === "multiselect"'
|
||||||
)
|
)
|
||||||
InputChips(
|
InputChips(
|
||||||
v-model='slotProps.data.options'
|
v-model='slotProps.data.options'
|
||||||
|
|
Loading…
Add table
Reference in a new issue