VBtnGroup.mjs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { createVNode as _createVNode, resolveDirective as _resolveDirective } from "vue";
  2. // Styles
  3. import "./VBtnGroup.css";
  4. // Composables
  5. import { makeBorderProps, useBorder } from "../../composables/border.mjs";
  6. import { makeComponentProps } from "../../composables/component.mjs";
  7. import { provideDefaults } from "../../composables/defaults.mjs";
  8. import { makeDensityProps, useDensity } from "../../composables/density.mjs";
  9. import { makeElevationProps, useElevation } from "../../composables/elevation.mjs";
  10. import { makeRoundedProps, useRounded } from "../../composables/rounded.mjs";
  11. import { makeTagProps } from "../../composables/tag.mjs";
  12. import { makeThemeProps, provideTheme } from "../../composables/theme.mjs";
  13. import { makeVariantProps } from "../../composables/variant.mjs"; // Utilities
  14. import { toRef } from 'vue';
  15. import { genericComponent, propsFactory, useRender } from "../../util/index.mjs";
  16. export const makeVBtnGroupProps = propsFactory({
  17. baseColor: String,
  18. divided: Boolean,
  19. ...makeBorderProps(),
  20. ...makeComponentProps(),
  21. ...makeDensityProps(),
  22. ...makeElevationProps(),
  23. ...makeRoundedProps(),
  24. ...makeTagProps(),
  25. ...makeThemeProps(),
  26. ...makeVariantProps()
  27. }, 'VBtnGroup');
  28. export const VBtnGroup = genericComponent()({
  29. name: 'VBtnGroup',
  30. props: makeVBtnGroupProps(),
  31. setup(props, _ref) {
  32. let {
  33. slots
  34. } = _ref;
  35. const {
  36. themeClasses
  37. } = provideTheme(props);
  38. const {
  39. densityClasses
  40. } = useDensity(props);
  41. const {
  42. borderClasses
  43. } = useBorder(props);
  44. const {
  45. elevationClasses
  46. } = useElevation(props);
  47. const {
  48. roundedClasses
  49. } = useRounded(props);
  50. provideDefaults({
  51. VBtn: {
  52. height: 'auto',
  53. baseColor: toRef(props, 'baseColor'),
  54. color: toRef(props, 'color'),
  55. density: toRef(props, 'density'),
  56. flat: true,
  57. variant: toRef(props, 'variant')
  58. }
  59. });
  60. useRender(() => {
  61. return _createVNode(props.tag, {
  62. "class": ['v-btn-group', {
  63. 'v-btn-group--divided': props.divided
  64. }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
  65. "style": props.style
  66. }, slots);
  67. });
  68. }
  69. });
  70. //# sourceMappingURL=VBtnGroup.mjs.map