UNPKG

vuetify

Version:

Vue Material Component Framework

110 lines (109 loc) 3.48 kB
import { createVNode as _createVNode } from "vue"; // Styles import "./VSelectionControlGroup.css"; // Composables import { makeComponentProps } from "../../composables/component.js"; import { provideDefaults } from "../../composables/defaults.js"; import { makeDensityProps } from "../../composables/density.js"; import { IconValue } from "../../composables/icons.js"; import { useProxiedModel } from "../../composables/proxiedModel.js"; import { makeThemeProps } from "../../composables/theme.js"; // Utilities import { onScopeDispose, provide, toRef, useId } from 'vue'; import { deepEqual, genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types export const VSelectionControlGroupSymbol = Symbol.for('vuetify:selection-control-group'); export const makeSelectionControlGroupProps = propsFactory({ color: String, disabled: { type: Boolean, default: null }, defaultsTarget: String, error: Boolean, id: String, inline: Boolean, falseIcon: IconValue, trueIcon: IconValue, ripple: { type: [Boolean, Object], default: true }, multiple: { type: Boolean, default: null }, name: String, readonly: { type: Boolean, default: null }, modelValue: null, type: String, valueComparator: { type: Function, default: deepEqual }, ...makeComponentProps(), ...makeDensityProps(), ...makeThemeProps() }, 'SelectionControlGroup'); export const makeVSelectionControlGroupProps = propsFactory({ ...makeSelectionControlGroupProps({ defaultsTarget: 'VSelectionControl' }) }, 'VSelectionControlGroup'); export const VSelectionControlGroup = genericComponent()({ name: 'VSelectionControlGroup', props: makeVSelectionControlGroupProps(), emits: { 'update:modelValue': value => true }, setup(props, _ref) { let { slots } = _ref; const modelValue = useProxiedModel(props, 'modelValue'); const uid = useId(); const id = toRef(() => props.id || `v-selection-control-group-${uid}`); const name = toRef(() => props.name || id.value); const updateHandlers = new Set(); provide(VSelectionControlGroupSymbol, { modelValue, forceUpdate: () => { updateHandlers.forEach(fn => fn()); }, onForceUpdate: cb => { updateHandlers.add(cb); onScopeDispose(() => { updateHandlers.delete(cb); }); } }); provideDefaults({ [props.defaultsTarget]: { color: toRef(() => props.color), disabled: toRef(() => props.disabled), density: toRef(() => props.density), error: toRef(() => props.error), inline: toRef(() => props.inline), modelValue, multiple: toRef(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)), name, falseIcon: toRef(() => props.falseIcon), trueIcon: toRef(() => props.trueIcon), readonly: toRef(() => props.readonly), ripple: toRef(() => props.ripple), type: toRef(() => props.type), valueComparator: toRef(() => props.valueComparator) } }); useRender(() => _createVNode("div", { "class": ['v-selection-control-group', { 'v-selection-control-group--inline': props.inline }, props.class], "style": props.style, "role": props.type === 'radio' ? 'radiogroup' : undefined }, [slots.default?.()])); return {}; } }); //# sourceMappingURL=VSelectionControlGroup.js.map