VItemGroup.mjs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { createVNode as _createVNode } from "vue";
  2. // Styles
  3. import "./VItemGroup.css";
  4. // Composables
  5. import { makeComponentProps } from "../../composables/component.mjs";
  6. import { makeGroupProps, useGroup } from "../../composables/group.mjs";
  7. import { makeTagProps } from "../../composables/tag.mjs";
  8. import { makeThemeProps, provideTheme } from "../../composables/theme.mjs"; // Utilities
  9. import { genericComponent, propsFactory } from "../../util/index.mjs"; // Types
  10. export const VItemGroupSymbol = Symbol.for('vuetify:v-item-group');
  11. export const makeVItemGroupProps = propsFactory({
  12. ...makeComponentProps(),
  13. ...makeGroupProps({
  14. selectedClass: 'v-item--selected'
  15. }),
  16. ...makeTagProps(),
  17. ...makeThemeProps()
  18. }, 'VItemGroup');
  19. export const VItemGroup = genericComponent()({
  20. name: 'VItemGroup',
  21. props: makeVItemGroupProps(),
  22. emits: {
  23. 'update:modelValue': value => true
  24. },
  25. setup(props, _ref) {
  26. let {
  27. slots
  28. } = _ref;
  29. const {
  30. themeClasses
  31. } = provideTheme(props);
  32. const {
  33. isSelected,
  34. select,
  35. next,
  36. prev,
  37. selected
  38. } = useGroup(props, VItemGroupSymbol);
  39. return () => _createVNode(props.tag, {
  40. "class": ['v-item-group', themeClasses.value, props.class],
  41. "style": props.style
  42. }, {
  43. default: () => [slots.default?.({
  44. isSelected,
  45. select,
  46. next,
  47. prev,
  48. selected: selected.value
  49. })]
  50. });
  51. }
  52. });
  53. //# sourceMappingURL=VItemGroup.mjs.map