segmented.mjs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';
  2. import { useSizeProp } from '../../../hooks/use-size/index.mjs';
  3. import { useAriaProps } from '../../../hooks/use-aria/index.mjs';
  4. import { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';
  5. import { isString } from '@vue/shared';
  6. import { isNumber, isBoolean } from '../../../utils/types.mjs';
  7. const defaultProps = {
  8. label: "label",
  9. value: "value",
  10. disabled: "disabled"
  11. };
  12. const segmentedProps = buildProps({
  13. direction: {
  14. type: definePropType(String),
  15. default: "horizontal"
  16. },
  17. options: {
  18. type: definePropType(Array),
  19. default: () => []
  20. },
  21. modelValue: {
  22. type: [String, Number, Boolean],
  23. default: void 0
  24. },
  25. props: {
  26. type: definePropType(Object),
  27. default: () => defaultProps
  28. },
  29. block: Boolean,
  30. size: useSizeProp,
  31. disabled: Boolean,
  32. validateEvent: {
  33. type: Boolean,
  34. default: true
  35. },
  36. id: String,
  37. name: String,
  38. ...useAriaProps(["ariaLabel"])
  39. });
  40. const segmentedEmits = {
  41. [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val),
  42. [CHANGE_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val)
  43. };
  44. export { defaultProps, segmentedEmits, segmentedProps };
  45. //# sourceMappingURL=segmented.mjs.map