VBtnToggle.mjs 1.4 KB

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