useGroupable / useGroupableParent
Can be used to make a selectable group of items within a parent container. This is used to facilitate the functionality
of the v-item-group base component, and other groupable components like detail-group, button-group.
Usage
Use the useGroupableParent function in a parent component that will contain one or more components in it's slots
(deeply nested or not) that use the useGroupable composables.
useGroupableParent(state: GroupableParentState, options: GroupableParentOptions, group: string): void
The useGroupableParent composition accepts two paremeters: state and options. State includes a selection key that
can be used to pass an array of selected items, so you can manage this active state from the parent context. The
onSelectionChange property of state is a callback function that fires whenever the selection changes from a child
groupable item.
The options parameter can be used to set some behavioral options for the selection logic. These options include
multiple: boolean, max: number, mandatory: boolean.
import { defineComponent } from '@vue/composition-api';
import { useGroupableParent } from '@/composables/size-class/';
export default defineComponent({
props: {
...sizeProps,
},
setup(props) {
useGroupableParent(
{
selection: selection,
onSelectionChange: (newSelectionValues) => emit('input', newSelectionValues),
},
{
multiple: multiple,
max: max,
mandatory: mandatory,
}
);
},
});
The optional group parameter allows you to control to what group this parent is registered. This can be useful when you have complexly nested groups.
useGroupable(value: string | number | undefined, group: string): { active: Ref<boolean>; toggle: () => void; }
Registers this component as a child of the first parent component that uses the useGroupableParent component.
The useGroupable composition accepts a single parameter (value) that will be used in the selection state of the
groupable parent. The composition returns an object with the active state, and a function that will toggle this
component's active state in the parent's selection.
import { defineComponent } from '@vue/composition-api';
import { useGroupable } from '@/composables/groupable';
export default defineComponent({
setup(props) {
const { active, toggle } = useGroupable('unique-value-for-this-item');
return { active, toggle };
},
});
The optional group parameter allows you to control to what group this child is registered. This can be useful when you have complexly nested groups.