2.9 KiB
2.9 KiB
import Pills from "~/components/ui/Pills.vue"
Pills
Show a dense list of pills representing tags, categories or options. Users can select a subset of given options and create new ones.
The model you provide will be mutated by this component:
currents
: these items are currently selectedothers
: these items are currently not selected (but can be selected by the user). This prop is optional. By adding it, you allow users to change the selection.
Each item has a label
of type string
as well as a type
of either:
custom
: the user can edit its label orpreset
: the user cannot edit its label
No pills
const nullModel = ref({
currents: []
}) as { currents: Item[] };
<Pills v-model="nullModel" />
Predefined list of pills
const staticModel = ref({
currents: [
{ label: "#Noise", type: 'preset' },
{ label: "#FieldRecording", type: 'preset' },
{ label: "#Experiment", type: 'preset' }
]
});
<Pills v-model="staticModel" label="Static Tags" />
Let users select and unselect pills
Select a set of pills from presets, and add and remove custom ones
const interactiveModel = ref({
...staticModel,
others: [
{ label: "#Melody", type: 'preset' },
{ label: "#Rhythm", type: 'preset' }
]
});
<Pills v-model="interactiveModel" label="Interactive Tags" />
Let users add, remove and edit custom pills
Use reactive methods such as computed(...)
and watch(...)
to query the model.
const customModel = ref({
...staticModel,
others: [
{ label: "#MyTag1", type: 'custom' },
{ label: "#MyTag2", type: 'custom' }
]
});
<Pills v-model="customModel" label="Custom Tags" />