vuetify 3.2.3 → 3.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/json/attributes.json +9 -9
  2. package/dist/json/importMap.json +12 -12
  3. package/dist/json/web-types.json +11 -11
  4. package/dist/vuetify-labs.css +34 -35
  5. package/dist/vuetify-labs.d.ts +72 -72
  6. package/dist/vuetify-labs.esm.js +142 -124
  7. package/dist/vuetify-labs.esm.js.map +1 -1
  8. package/dist/vuetify-labs.js +142 -124
  9. package/dist/vuetify-labs.min.css +2 -2
  10. package/dist/vuetify.css +1 -2
  11. package/dist/vuetify.d.ts +75 -68
  12. package/dist/vuetify.esm.js +131 -115
  13. package/dist/vuetify.esm.js.map +1 -1
  14. package/dist/vuetify.js +131 -115
  15. package/dist/vuetify.js.map +1 -1
  16. package/dist/vuetify.min.css +2 -2
  17. package/dist/vuetify.min.js +469 -469
  18. package/dist/vuetify.min.js.map +1 -1
  19. package/lib/components/VAlert/VAlert.mjs +1 -2
  20. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  21. package/lib/components/VAppBar/VAppBar.mjs +2 -2
  22. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  23. package/lib/components/VAppBar/VAppBarNavIcon.mjs +1 -2
  24. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  25. package/lib/components/VAppBar/VAppBarTitle.mjs +1 -2
  26. package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
  27. package/lib/components/VAutocomplete/VAutocomplete.mjs +5 -5
  28. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  29. package/lib/components/VAutocomplete/index.d.ts +9 -9
  30. package/lib/components/VChip/VChip.css +0 -1
  31. package/lib/components/VChip/VChip.sass +0 -1
  32. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +5 -5
  33. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  34. package/lib/components/VCombobox/VCombobox.mjs +5 -5
  35. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  36. package/lib/components/VCombobox/index.d.ts +9 -9
  37. package/lib/components/VFooter/VFooter.mjs +2 -2
  38. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  39. package/lib/components/VForm/index.d.ts +3 -3
  40. package/lib/components/VImg/VImg.mjs +6 -6
  41. package/lib/components/VImg/VImg.mjs.map +1 -1
  42. package/lib/components/VImg/index.d.ts +12 -12
  43. package/lib/components/VList/VList.mjs +2 -2
  44. package/lib/components/VList/VList.mjs.map +1 -1
  45. package/lib/components/VList/index.d.ts +9 -9
  46. package/lib/components/VList/list.mjs +4 -4
  47. package/lib/components/VList/list.mjs.map +1 -1
  48. package/lib/components/VMenu/VMenu.mjs +3 -3
  49. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  50. package/lib/components/VMenu/index.d.ts +3 -3
  51. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +2 -2
  52. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  53. package/lib/components/VNavigationDrawer/index.d.ts +3 -3
  54. package/lib/components/VNavigationDrawer/sticky.mjs +5 -4
  55. package/lib/components/VNavigationDrawer/sticky.mjs.map +1 -1
  56. package/lib/components/VNavigationDrawer/touch.mjs +4 -4
  57. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  58. package/lib/components/VOverlay/locationStrategies.mjs +1 -1
  59. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  60. package/lib/components/VPagination/VPagination.mjs +2 -2
  61. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  62. package/lib/components/VRating/VRating.mjs +6 -3
  63. package/lib/components/VRating/VRating.mjs.map +1 -1
  64. package/lib/components/VSelect/VSelect.mjs +2 -2
  65. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  66. package/lib/components/VSelect/index.d.ts +9 -9
  67. package/lib/components/VSelectionControl/VSelectionControl.mjs +3 -3
  68. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  69. package/lib/components/VSelectionControl/index.d.ts +3 -3
  70. package/lib/components/VSlideGroup/VSlideGroup.mjs +7 -7
  71. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  72. package/lib/components/VSlideGroup/index.d.ts +3 -3
  73. package/lib/components/VSlider/slider.mjs +3 -3
  74. package/lib/components/VSlider/slider.mjs.map +1 -1
  75. package/lib/components/VSystemBar/VSystemBar.mjs +2 -2
  76. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  77. package/lib/components/VTabs/VTab.mjs +4 -5
  78. package/lib/components/VTabs/VTab.mjs.map +1 -1
  79. package/lib/components/VTextarea/VTextarea.mjs +6 -3
  80. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  81. package/lib/components/VTimeline/VTimelineItem.mjs +2 -2
  82. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  83. package/lib/components/VToolbar/VToolbar.mjs +2 -2
  84. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  85. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +3 -3
  86. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  87. package/lib/components/VWindow/VWindow.mjs +3 -3
  88. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  89. package/lib/components/VWindow/VWindowItem.mjs +3 -3
  90. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  91. package/lib/components/index.d.ts +63 -63
  92. package/lib/composables/display.mjs +3 -3
  93. package/lib/composables/display.mjs.map +1 -1
  94. package/lib/composables/form.mjs +4 -4
  95. package/lib/composables/form.mjs.map +1 -1
  96. package/lib/composables/hydration.mjs +6 -6
  97. package/lib/composables/hydration.mjs.map +1 -1
  98. package/lib/composables/intersectionObserver.mjs +2 -2
  99. package/lib/composables/intersectionObserver.mjs.map +1 -1
  100. package/lib/composables/layout.mjs +3 -3
  101. package/lib/composables/layout.mjs.map +1 -1
  102. package/lib/composables/lazy.mjs +2 -2
  103. package/lib/composables/lazy.mjs.map +1 -1
  104. package/lib/composables/nested/nested.mjs +5 -4
  105. package/lib/composables/nested/nested.mjs.map +1 -1
  106. package/lib/composables/scroll.mjs +6 -6
  107. package/lib/composables/scroll.mjs.map +1 -1
  108. package/lib/composables/ssrBoot.mjs +2 -2
  109. package/lib/composables/ssrBoot.mjs.map +1 -1
  110. package/lib/composables/stack.mjs +5 -4
  111. package/lib/composables/stack.mjs.map +1 -1
  112. package/lib/composables/transition.mjs +5 -2
  113. package/lib/composables/transition.mjs.map +1 -1
  114. package/lib/composables/validation.mjs +3 -3
  115. package/lib/composables/validation.mjs.map +1 -1
  116. package/lib/entry-bundler.mjs +1 -1
  117. package/lib/framework.mjs +1 -1
  118. package/lib/index.d.ts +12 -5
  119. package/lib/labs/VDataTable/VDataTable.mjs +2 -1
  120. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  121. package/lib/labs/VDataTable/VDataTableServer.mjs +2 -1
  122. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  123. package/lib/labs/VDataTable/VDataTableVirtual.mjs +6 -6
  124. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  125. package/lib/labs/VDataTable/composables/virtual.mjs +3 -3
  126. package/lib/labs/VDataTable/composables/virtual.mjs.map +1 -1
  127. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  128. package/lib/labs/VSkeletonLoader/index.d.ts +9 -9
  129. package/lib/labs/components.d.ts +9 -9
  130. package/lib/locale/adapters/vuetify.mjs +8 -5
  131. package/lib/locale/adapters/vuetify.mjs.map +1 -1
  132. package/package.json +2 -2
@@ -134,7 +134,6 @@ export const VAlert = genericComponent()({
134
134
  return () => {
135
135
  const hasPrepend = !!(slots.prepend || icon.value);
136
136
  const hasTitle = !!(slots.title || props.title);
137
- const hasText = !!(props.text || slots.text);
138
137
  const hasClose = !!(slots.close || props.closable);
139
138
  return isActive.value && _createVNode(props.tag, {
140
139
  "class": ['v-alert', props.border && {
@@ -174,7 +173,7 @@ export const VAlert = genericComponent()({
174
173
  "key": "title"
175
174
  }, {
176
175
  default: () => [slots.title?.() ?? props.title]
177
- }), hasText && (slots.text?.() ?? props.text), slots.default?.()]), slots.append && _createVNode("div", {
176
+ }), slots.text?.() ?? props.text, slots.default?.()]), slots.append && _createVNode("div", {
178
177
  "key": "append",
179
178
  "class": "v-alert__append"
180
179
  }, [slots.append()]), hasClose && _createVNode("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"VAlert.mjs","names":["VAlertTitle","VBtn","VDefaultsProvider","VIcon","genOverlays","makeVariantProps","useVariant","IconValue","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeLocationProps","useLocation","makePositionProps","usePosition","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","useLocale","useProxiedModel","useTextColor","computed","toRef","genericComponent","propsFactory","allowedTypes","makeVAlertProps","border","type","Boolean","String","validator","val","includes","borderColor","closable","closeIcon","default","closeLabel","icon","Function","Object","modelValue","prominent","title","text","variant","VAlert","name","props","emits","e","value","setup","_ref","emit","slots","isActive","undefined","variantProps","color","themeClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","locationStyles","positionClasses","roundedClasses","textColorClasses","textColorStyles","t","closeProps","onClick","hasPrepend","prepend","hasTitle","hasText","hasClose","close","_createVNode","tag","class","style","density","size","append","_mergeProps"],"sources":["../../../src/components/VAlert/VAlert.tsx"],"sourcesContent":["// Styles\nimport './VAlert.sass'\n\n// Components\nimport { VAlertTitle } from './VAlertTitle'\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\nimport { IconValue } from '@/composables/icons'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst allowedTypes = ['success', 'info', 'warning', 'error'] as const\n\ntype ContextualType = typeof allowedTypes[number]\n\nexport const makeVAlertProps = propsFactory({\n border: {\n type: [Boolean, String] as PropType<boolean | 'top' | 'end' | 'bottom' | 'start'>,\n validator: (val: boolean | string) => {\n return typeof val === 'boolean' || [\n 'top',\n 'end',\n 'bottom',\n 'start',\n ].includes(val)\n },\n },\n borderColor: String,\n closable: Boolean,\n closeIcon: {\n type: IconValue,\n default: '$close',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n icon: {\n type: [Boolean, String, Function, Object] as PropType<false | IconValue>,\n default: null,\n },\n modelValue: {\n type: Boolean,\n default: true,\n },\n prominent: Boolean,\n title: String,\n text: String,\n type: {\n type: String as PropType<ContextualType>,\n validator: (val: ContextualType) => allowedTypes.includes(val),\n },\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'flat' } as const),\n}, 'v-alert')\n\nexport type VAlertSlots = {\n default: []\n prepend: []\n title: []\n text: []\n append: []\n close: []\n}\n\nexport const VAlert = genericComponent<VAlertSlots>()({\n name: 'VAlert',\n\n props: makeVAlertProps(),\n\n emits: {\n 'click:close': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const icon = computed(() => {\n if (props.icon === false) return undefined\n if (!props.type) return props.icon\n\n return props.icon ?? `$${props.type}`\n })\n const variantProps = computed(() => ({\n color: props.color ?? props.type,\n variant: props.variant,\n }))\n\n const { themeClasses } = provideTheme(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'borderColor'))\n const { t } = useLocale()\n\n const closeProps = computed(() => ({\n 'aria-label': t(props.closeLabel),\n onClick (e: MouseEvent) {\n isActive.value = false\n\n emit('click:close', e)\n },\n }))\n\n return () => {\n const hasPrepend = !!(slots.prepend || icon.value)\n const hasTitle = !!(slots.title || props.title)\n const hasText = !!(props.text || slots.text)\n const hasClose = !!(slots.close || props.closable)\n\n return isActive.value && (\n <props.tag\n class={[\n 'v-alert',\n props.border && {\n 'v-alert--border': !!props.border,\n [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true,\n },\n {\n 'v-alert--prominent': props.prominent,\n },\n themeClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n positionClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n locationStyles.value,\n props.style,\n ]}\n role=\"alert\"\n >\n { genOverlays(false, 'v-alert') }\n\n { props.border && (\n <div\n key=\"border\"\n class={[\n 'v-alert__border',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n />\n )}\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-alert__prepend\">\n { !slots.prepend ? (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ icon.value }\n size={ props.prominent ? 44 : 28 }\n />\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !icon.value }\n defaults={{\n VIcon: {\n density: props.density,\n icon: icon.value,\n size: props.prominent ? 44 : 28,\n },\n }}\n v-slots:default={ slots.prepend }\n />\n )}\n </div>\n )}\n\n <div class=\"v-alert__content\">\n { hasTitle && (\n <VAlertTitle key=\"title\">\n { slots.title?.() ?? props.title }\n </VAlertTitle>\n )}\n\n { hasText && (slots.text?.() ?? props.text) }\n\n { slots.default?.() }\n </div>\n\n { slots.append && (\n <div key=\"append\" class=\"v-alert__append\">\n { slots.append() }\n </div>\n )}\n\n { hasClose && (\n <div key=\"close\" class=\"v-alert__close\">\n { !slots.close ? (\n <VBtn\n key=\"close-btn\"\n icon={ props.closeIcon }\n size=\"x-small\"\n variant=\"text\"\n { ...closeProps.value }\n />\n ) : (\n <VDefaultsProvider\n key=\"close-defaults\"\n defaults={{\n VBtn: {\n icon: props.closeIcon,\n size: 'x-small',\n variant: 'text',\n },\n }}\n >\n { slots.close?.({ props: closeProps.value }) }\n </VDefaultsProvider>\n )}\n </div>\n )}\n </props.tag>\n )\n }\n },\n})\n\nexport type VAlert = InstanceType<typeof VAlert>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VAlert.mjs","names":["VAlertTitle","VBtn","VDefaultsProvider","VIcon","genOverlays","makeVariantProps","useVariant","IconValue","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeLocationProps","useLocation","makePositionProps","usePosition","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","useLocale","useProxiedModel","useTextColor","computed","toRef","genericComponent","propsFactory","allowedTypes","makeVAlertProps","border","type","Boolean","String","validator","val","includes","borderColor","closable","closeIcon","default","closeLabel","icon","Function","Object","modelValue","prominent","title","text","variant","VAlert","name","props","emits","e","value","setup","_ref","emit","slots","isActive","undefined","variantProps","color","themeClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","locationStyles","positionClasses","roundedClasses","textColorClasses","textColorStyles","t","closeProps","onClick","hasPrepend","prepend","hasTitle","hasClose","close","_createVNode","tag","class","style","density","size","append","_mergeProps"],"sources":["../../../src/components/VAlert/VAlert.tsx"],"sourcesContent":["// Styles\nimport './VAlert.sass'\n\n// Components\nimport { VAlertTitle } from './VAlertTitle'\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\nimport { IconValue } from '@/composables/icons'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst allowedTypes = ['success', 'info', 'warning', 'error'] as const\n\ntype ContextualType = typeof allowedTypes[number]\n\nexport const makeVAlertProps = propsFactory({\n border: {\n type: [Boolean, String] as PropType<boolean | 'top' | 'end' | 'bottom' | 'start'>,\n validator: (val: boolean | string) => {\n return typeof val === 'boolean' || [\n 'top',\n 'end',\n 'bottom',\n 'start',\n ].includes(val)\n },\n },\n borderColor: String,\n closable: Boolean,\n closeIcon: {\n type: IconValue,\n default: '$close',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n icon: {\n type: [Boolean, String, Function, Object] as PropType<false | IconValue>,\n default: null,\n },\n modelValue: {\n type: Boolean,\n default: true,\n },\n prominent: Boolean,\n title: String,\n text: String,\n type: {\n type: String as PropType<ContextualType>,\n validator: (val: ContextualType) => allowedTypes.includes(val),\n },\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'flat' } as const),\n}, 'v-alert')\n\nexport type VAlertSlots = {\n default: []\n prepend: []\n title: []\n text: []\n append: []\n close: []\n}\n\nexport const VAlert = genericComponent<VAlertSlots>()({\n name: 'VAlert',\n\n props: makeVAlertProps(),\n\n emits: {\n 'click:close': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const icon = computed(() => {\n if (props.icon === false) return undefined\n if (!props.type) return props.icon\n\n return props.icon ?? `$${props.type}`\n })\n const variantProps = computed(() => ({\n color: props.color ?? props.type,\n variant: props.variant,\n }))\n\n const { themeClasses } = provideTheme(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'borderColor'))\n const { t } = useLocale()\n\n const closeProps = computed(() => ({\n 'aria-label': t(props.closeLabel),\n onClick (e: MouseEvent) {\n isActive.value = false\n\n emit('click:close', e)\n },\n }))\n\n return () => {\n const hasPrepend = !!(slots.prepend || icon.value)\n const hasTitle = !!(slots.title || props.title)\n const hasClose = !!(slots.close || props.closable)\n\n return isActive.value && (\n <props.tag\n class={[\n 'v-alert',\n props.border && {\n 'v-alert--border': !!props.border,\n [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true,\n },\n {\n 'v-alert--prominent': props.prominent,\n },\n themeClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n positionClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n locationStyles.value,\n props.style,\n ]}\n role=\"alert\"\n >\n { genOverlays(false, 'v-alert') }\n\n { props.border && (\n <div\n key=\"border\"\n class={[\n 'v-alert__border',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n />\n )}\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-alert__prepend\">\n { !slots.prepend ? (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ icon.value }\n size={ props.prominent ? 44 : 28 }\n />\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !icon.value }\n defaults={{\n VIcon: {\n density: props.density,\n icon: icon.value,\n size: props.prominent ? 44 : 28,\n },\n }}\n v-slots:default={ slots.prepend }\n />\n )}\n </div>\n )}\n\n <div class=\"v-alert__content\">\n { hasTitle && (\n <VAlertTitle key=\"title\">\n { slots.title?.() ?? props.title }\n </VAlertTitle>\n )}\n\n { slots.text?.() ?? props.text }\n\n { slots.default?.() }\n </div>\n\n { slots.append && (\n <div key=\"append\" class=\"v-alert__append\">\n { slots.append() }\n </div>\n )}\n\n { hasClose && (\n <div key=\"close\" class=\"v-alert__close\">\n { !slots.close ? (\n <VBtn\n key=\"close-btn\"\n icon={ props.closeIcon }\n size=\"x-small\"\n variant=\"text\"\n { ...closeProps.value }\n />\n ) : (\n <VDefaultsProvider\n key=\"close-defaults\"\n defaults={{\n VBtn: {\n icon: props.closeIcon,\n size: 'x-small',\n variant: 'text',\n },\n }}\n >\n { slots.close?.({ props: closeProps.value }) }\n </VDefaultsProvider>\n )}\n </div>\n )}\n </props.tag>\n )\n }\n },\n})\n\nexport type VAlert = InstanceType<typeof VAlert>\n"],"mappings":"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"}
@@ -8,7 +8,7 @@ import { makeLayoutItemProps, useLayoutItem } from "../../composables/layout.mjs
8
8
  import { makeScrollProps, useScroll } from "../../composables/scroll.mjs";
9
9
  import { useProxiedModel } from "../../composables/proxiedModel.mjs";
10
10
  import { useSsrBoot } from "../../composables/ssrBoot.mjs"; // Utilities
11
- import { computed, ref, toRef, watch } from 'vue';
11
+ import { computed, ref, shallowRef, toRef, watch } from 'vue';
12
12
  import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
13
13
  export const makeVAppBarProps = propsFactory({
14
14
  scrollBehavior: String,
@@ -104,7 +104,7 @@ export const VAppBar = genericComponent()({
104
104
  order: computed(() => parseInt(props.order, 10)),
105
105
  position: toRef(props, 'location'),
106
106
  layoutSize: height,
107
- elementSize: ref(undefined),
107
+ elementSize: shallowRef(undefined),
108
108
  active: isActive,
109
109
  absolute: toRef(props, 'absolute')
110
110
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VAppBar.mjs","names":["makeVToolbarProps","VToolbar","makeLayoutItemProps","useLayoutItem","makeScrollProps","useScroll","useProxiedModel","useSsrBoot","computed","ref","toRef","watch","genericComponent","propsFactory","useRender","makeVAppBarProps","scrollBehavior","String","modelValue","type","Boolean","default","location","validator","value","includes","height","Number","VAppBar","name","props","emits","setup","_ref","slots","vToolbarRef","isActive","behavior","Set","split","hide","has","inverted","collapse","elevate","fadeImage","canScroll","currentScroll","scrollThreshold","isScrollingUp","scrollRatio","isCollapsed","isFlat","flat","opacity","undefined","contentHeight","extensionHeight","setActive","immediate","ssrBootStyles","layoutItemStyles","id","order","parseInt","position","layoutSize","elementSize","active","absolute","toolbarProps","filterProps","_createVNode","_mergeProps","class","style"],"sources":["../../../src/components/VAppBar/VAppBar.tsx"],"sourcesContent":["// Styles\nimport './VAppBar.sass'\n\n// Components\nimport { makeVToolbarProps, VToolbar } from '@/components/VToolbar/VToolbar'\n\n// Composables\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeScrollProps, useScroll } from '@/composables/scroll'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useSsrBoot } from '@/composables/ssrBoot'\n\n// Utilities\nimport { computed, ref, toRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VToolbarSlots } from '@/components/VToolbar/VToolbar'\n\nexport const makeVAppBarProps = propsFactory({\n scrollBehavior: String,\n modelValue: {\n type: Boolean,\n default: true,\n },\n location: {\n type: String as PropType<'top' | 'bottom'>,\n default: 'top',\n validator: (value: any) => ['top', 'bottom'].includes(value),\n },\n\n ...makeVToolbarProps(),\n ...makeLayoutItemProps(),\n ...makeScrollProps(),\n\n height: {\n type: [Number, String],\n default: 64,\n },\n}, 'v-app-bar')\n\nexport const VAppBar = genericComponent<VToolbarSlots>()({\n name: 'VAppBar',\n\n props: makeVAppBarProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const vToolbarRef = ref<VToolbar>()\n const isActive = useProxiedModel(props, 'modelValue')\n const scrollBehavior = computed(() => {\n const behavior = new Set(props.scrollBehavior?.split(' ') ?? [])\n return {\n hide: behavior.has('hide'),\n // fullyHide: behavior.has('fully-hide'),\n inverted: behavior.has('inverted'),\n collapse: behavior.has('collapse'),\n elevate: behavior.has('elevate'),\n fadeImage: behavior.has('fade-image'),\n // shrink: behavior.has('shrink'),\n }\n })\n const canScroll = computed(() => {\n const behavior = scrollBehavior.value\n return (\n behavior.hide ||\n // behavior.fullyHide ||\n behavior.inverted ||\n behavior.collapse ||\n behavior.elevate ||\n behavior.fadeImage ||\n // behavior.shrink ||\n !isActive.value\n )\n })\n const {\n currentScroll,\n scrollThreshold,\n isScrollingUp,\n scrollRatio,\n } = useScroll(props, { canScroll })\n\n const isCollapsed = computed(() => props.collapse || (\n scrollBehavior.value.collapse &&\n (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0)\n ))\n const isFlat = computed(() => props.flat || (\n scrollBehavior.value.elevate &&\n (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0)\n ))\n const opacity = computed(() => (\n scrollBehavior.value.fadeImage\n ? (scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value)\n : undefined\n ))\n const height = computed(() => {\n if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0\n\n const height = vToolbarRef.value?.contentHeight ?? 0\n const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0\n\n return (height + extensionHeight)\n })\n function setActive () {\n if (scrollBehavior.value.hide) {\n if (scrollBehavior.value.inverted) {\n isActive.value = currentScroll.value > scrollThreshold.value\n } else {\n isActive.value = isScrollingUp.value || (currentScroll.value < scrollThreshold.value)\n }\n } else {\n isActive.value = true\n }\n }\n\n watch(currentScroll, setActive, { immediate: true })\n watch(scrollBehavior, setActive)\n\n const { ssrBootStyles } = useSsrBoot()\n const { layoutItemStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(props, 'location'),\n layoutSize: height,\n elementSize: ref(undefined),\n active: isActive,\n absolute: toRef(props, 'absolute'),\n })\n\n useRender(() => {\n const [toolbarProps] = VToolbar.filterProps(props)\n\n return (\n <VToolbar\n ref={ vToolbarRef }\n class={[\n 'v-app-bar',\n {\n 'v-app-bar--bottom': props.location === 'bottom',\n },\n props.class,\n ]}\n style={[\n {\n ...layoutItemStyles.value,\n '--v-toolbar-image-opacity': opacity.value,\n height: undefined,\n ...ssrBootStyles.value,\n },\n props.style,\n ]}\n { ...toolbarProps }\n collapse={ isCollapsed.value }\n flat={ isFlat.value }\n v-slots={ slots }\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VAppBar = InstanceType<typeof VAppBar>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VAppBar.mjs","names":["makeVToolbarProps","VToolbar","makeLayoutItemProps","useLayoutItem","makeScrollProps","useScroll","useProxiedModel","useSsrBoot","computed","ref","shallowRef","toRef","watch","genericComponent","propsFactory","useRender","makeVAppBarProps","scrollBehavior","String","modelValue","type","Boolean","default","location","validator","value","includes","height","Number","VAppBar","name","props","emits","setup","_ref","slots","vToolbarRef","isActive","behavior","Set","split","hide","has","inverted","collapse","elevate","fadeImage","canScroll","currentScroll","scrollThreshold","isScrollingUp","scrollRatio","isCollapsed","isFlat","flat","opacity","undefined","contentHeight","extensionHeight","setActive","immediate","ssrBootStyles","layoutItemStyles","id","order","parseInt","position","layoutSize","elementSize","active","absolute","toolbarProps","filterProps","_createVNode","_mergeProps","class","style"],"sources":["../../../src/components/VAppBar/VAppBar.tsx"],"sourcesContent":["// Styles\nimport './VAppBar.sass'\n\n// Components\nimport { makeVToolbarProps, VToolbar } from '@/components/VToolbar/VToolbar'\n\n// Composables\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeScrollProps, useScroll } from '@/composables/scroll'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useSsrBoot } from '@/composables/ssrBoot'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VToolbarSlots } from '@/components/VToolbar/VToolbar'\n\nexport const makeVAppBarProps = propsFactory({\n scrollBehavior: String,\n modelValue: {\n type: Boolean,\n default: true,\n },\n location: {\n type: String as PropType<'top' | 'bottom'>,\n default: 'top',\n validator: (value: any) => ['top', 'bottom'].includes(value),\n },\n\n ...makeVToolbarProps(),\n ...makeLayoutItemProps(),\n ...makeScrollProps(),\n\n height: {\n type: [Number, String],\n default: 64,\n },\n}, 'v-app-bar')\n\nexport const VAppBar = genericComponent<VToolbarSlots>()({\n name: 'VAppBar',\n\n props: makeVAppBarProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const vToolbarRef = ref<VToolbar>()\n const isActive = useProxiedModel(props, 'modelValue')\n const scrollBehavior = computed(() => {\n const behavior = new Set(props.scrollBehavior?.split(' ') ?? [])\n return {\n hide: behavior.has('hide'),\n // fullyHide: behavior.has('fully-hide'),\n inverted: behavior.has('inverted'),\n collapse: behavior.has('collapse'),\n elevate: behavior.has('elevate'),\n fadeImage: behavior.has('fade-image'),\n // shrink: behavior.has('shrink'),\n }\n })\n const canScroll = computed(() => {\n const behavior = scrollBehavior.value\n return (\n behavior.hide ||\n // behavior.fullyHide ||\n behavior.inverted ||\n behavior.collapse ||\n behavior.elevate ||\n behavior.fadeImage ||\n // behavior.shrink ||\n !isActive.value\n )\n })\n const {\n currentScroll,\n scrollThreshold,\n isScrollingUp,\n scrollRatio,\n } = useScroll(props, { canScroll })\n\n const isCollapsed = computed(() => props.collapse || (\n scrollBehavior.value.collapse &&\n (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0)\n ))\n const isFlat = computed(() => props.flat || (\n scrollBehavior.value.elevate &&\n (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0)\n ))\n const opacity = computed(() => (\n scrollBehavior.value.fadeImage\n ? (scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value)\n : undefined\n ))\n const height = computed(() => {\n if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0\n\n const height = vToolbarRef.value?.contentHeight ?? 0\n const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0\n\n return (height + extensionHeight)\n })\n function setActive () {\n if (scrollBehavior.value.hide) {\n if (scrollBehavior.value.inverted) {\n isActive.value = currentScroll.value > scrollThreshold.value\n } else {\n isActive.value = isScrollingUp.value || (currentScroll.value < scrollThreshold.value)\n }\n } else {\n isActive.value = true\n }\n }\n\n watch(currentScroll, setActive, { immediate: true })\n watch(scrollBehavior, setActive)\n\n const { ssrBootStyles } = useSsrBoot()\n const { layoutItemStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(props, 'location'),\n layoutSize: height,\n elementSize: shallowRef(undefined),\n active: isActive,\n absolute: toRef(props, 'absolute'),\n })\n\n useRender(() => {\n const [toolbarProps] = VToolbar.filterProps(props)\n\n return (\n <VToolbar\n ref={ vToolbarRef }\n class={[\n 'v-app-bar',\n {\n 'v-app-bar--bottom': props.location === 'bottom',\n },\n props.class,\n ]}\n style={[\n {\n ...layoutItemStyles.value,\n '--v-toolbar-image-opacity': opacity.value,\n height: undefined,\n ...ssrBootStyles.value,\n },\n props.style,\n ]}\n { ...toolbarProps }\n collapse={ isCollapsed.value }\n flat={ isFlat.value }\n v-slots={ slots }\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VAppBar = InstanceType<typeof VAppBar>\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from "vue";
2
2
  // Components
3
- import { VBtn } from "../VBtn/index.mjs";
4
- import { makeVBtnProps } from "../VBtn/VBtn.mjs"; // Utilities
3
+ import { makeVBtnProps, VBtn } from "../VBtn/VBtn.mjs"; // Utilities
5
4
  import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
6
5
  export const makeVAppBarNavIconProps = propsFactory({
7
6
  ...makeVBtnProps({
@@ -1 +1 @@
1
- {"version":3,"file":"VAppBarNavIcon.mjs","names":["VBtn","makeVBtnProps","genericComponent","propsFactory","useRender","makeVAppBarNavIconProps","icon","variant","VAppBarNavIcon","name","props","setup","_ref","slots","_createVNode","_mergeProps"],"sources":["../../../src/components/VAppBar/VAppBarNavIcon.tsx"],"sourcesContent":["// Components\nimport { VBtn } from '@/components/VBtn'\n\nimport { makeVBtnProps } from '@/components/VBtn/VBtn'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VBtnSlots } from '@/components/VBtn/VBtn'\n\nexport const makeVAppBarNavIconProps = propsFactory({\n ...makeVBtnProps({\n icon: '$menu',\n variant: 'text' as const,\n }),\n}, 'v-app-bar-nav-icon')\n\nexport const VAppBarNavIcon = genericComponent<VBtnSlots>()({\n name: 'VAppBarNavIcon',\n\n props: makeVAppBarNavIconProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n <VBtn\n { ...props }\n class={[\n 'v-app-bar-nav-icon',\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VAppBarNavIcon = InstanceType<typeof VAppBarNavIcon>\n"],"mappings":";AAAA;AAAA,SACSA,IAAI;AAAA,SAEJC,aAAa,4BAEtB;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAGA,OAAO,MAAMC,uBAAuB,GAAGF,YAAY,CAAC;EAClD,GAAGF,aAAa,CAAC;IACfK,IAAI,EAAE,OAAO;IACbC,OAAO,EAAE;EACX,CAAC;AACH,CAAC,EAAE,oBAAoB,CAAC;AAExB,OAAO,MAAMC,cAAc,GAAGN,gBAAgB,EAAa,CAAC;EAC1DO,IAAI,EAAE,gBAAgB;EAEtBC,KAAK,EAAEL,uBAAuB,EAAE;EAEhCM,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrBR,SAAS,CAAC,MAAAU,YAAA,CAAAd,IAAA,EAAAe,WAAA,CAEDL,KAAK;MAAA,SACH,CACL,oBAAoB;IACrB,IACSG,KAAK,CAElB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VAppBarNavIcon.mjs","names":["makeVBtnProps","VBtn","genericComponent","propsFactory","useRender","makeVAppBarNavIconProps","icon","variant","VAppBarNavIcon","name","props","setup","_ref","slots","_createVNode","_mergeProps"],"sources":["../../../src/components/VAppBar/VAppBarNavIcon.tsx"],"sourcesContent":["// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VBtnSlots } from '@/components/VBtn/VBtn'\n\nexport const makeVAppBarNavIconProps = propsFactory({\n ...makeVBtnProps({\n icon: '$menu',\n variant: 'text' as const,\n }),\n}, 'v-app-bar-nav-icon')\n\nexport const VAppBarNavIcon = genericComponent<VBtnSlots>()({\n name: 'VAppBarNavIcon',\n\n props: makeVAppBarNavIconProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n <VBtn\n { ...props }\n class={[\n 'v-app-bar-nav-icon',\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VAppBarNavIcon = InstanceType<typeof VAppBarNavIcon>\n"],"mappings":";AAAA;AAAA,SACSA,aAAa,EAAEC,IAAI,4BAE5B;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAGA,OAAO,MAAMC,uBAAuB,GAAGF,YAAY,CAAC;EAClD,GAAGH,aAAa,CAAC;IACfM,IAAI,EAAE,OAAO;IACbC,OAAO,EAAE;EACX,CAAC;AACH,CAAC,EAAE,oBAAoB,CAAC;AAExB,OAAO,MAAMC,cAAc,GAAGN,gBAAgB,EAAa,CAAC;EAC1DO,IAAI,EAAE,gBAAgB;EAEtBC,KAAK,EAAEL,uBAAuB,EAAE;EAEhCM,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrBR,SAAS,CAAC,MAAAU,YAAA,CAAAb,IAAA,EAAAc,WAAA,CAEDL,KAAK;MAAA,SACH,CACL,oBAAoB;IACrB,IACSG,KAAK,CAElB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from "vue";
2
2
  // Components
3
- import { VToolbarTitle } from "../VToolbar/index.mjs"; // Utilities
4
- import { makeVToolbarTitleProps } from "../VToolbar/VToolbarTitle.mjs";
3
+ import { makeVToolbarTitleProps, VToolbarTitle } from "../VToolbar/VToolbarTitle.mjs"; // Utilities
5
4
  import { genericComponent, useRender } from "../../util/index.mjs"; // Types
6
5
  export const VAppBarTitle = genericComponent()({
7
6
  name: 'VAppBarTitle',
@@ -1 +1 @@
1
- {"version":3,"file":"VAppBarTitle.mjs","names":["VToolbarTitle","makeVToolbarTitleProps","genericComponent","useRender","VAppBarTitle","name","props","setup","_ref","slots","_createVNode","_mergeProps"],"sources":["../../../src/components/VAppBar/VAppBarTitle.tsx"],"sourcesContent":["// Components\nimport { VToolbarTitle } from '@/components/VToolbar'\n\n// Utilities\nimport { makeVToolbarTitleProps } from '@/components/VToolbar/VToolbarTitle'\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { VToolbarTitleSlots } from '@/components/VToolbar/VToolbarTitle'\n\nexport const VAppBarTitle = genericComponent<VToolbarTitleSlots>()({\n name: 'VAppBarTitle',\n\n props: makeVToolbarTitleProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n <VToolbarTitle\n { ...props }\n class=\"v-app-bar-title\"\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VAppBarTitle = InstanceType<typeof VAppBarTitle>\n"],"mappings":";AAAA;AAAA,SACSA,aAAa,iCAEtB;AAAA,SACSC,sBAAsB;AAAA,SACtBC,gBAAgB,EAAEC,SAAS,gCAEpC;AAGA,OAAO,MAAMC,YAAY,GAAGF,gBAAgB,EAAsB,CAAC;EACjEG,IAAI,EAAE,cAAc;EAEpBC,KAAK,EAAEL,sBAAsB,EAAE;EAE/BM,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrBL,SAAS,CAAC,MAAAO,YAAA,CAAAV,aAAA,EAAAW,WAAA,CAEDL,KAAK;MAAA,SACJ;IAAiB,IACbG,KAAK,CAElB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VAppBarTitle.mjs","names":["makeVToolbarTitleProps","VToolbarTitle","genericComponent","useRender","VAppBarTitle","name","props","setup","_ref","slots","_createVNode","_mergeProps"],"sources":["../../../src/components/VAppBar/VAppBarTitle.tsx"],"sourcesContent":["// Components\nimport { makeVToolbarTitleProps, VToolbarTitle } from '@/components/VToolbar/VToolbarTitle'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { VToolbarTitleSlots } from '@/components/VToolbar/VToolbarTitle'\n\nexport const VAppBarTitle = genericComponent<VToolbarTitleSlots>()({\n name: 'VAppBarTitle',\n\n props: makeVToolbarTitleProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n <VToolbarTitle\n { ...props }\n class=\"v-app-bar-title\"\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VAppBarTitle = InstanceType<typeof VAppBarTitle>\n"],"mappings":";AAAA;AAAA,SACSA,sBAAsB,EAAEC,aAAa,yCAE9C;AAAA,SACSC,gBAAgB,EAAEC,SAAS,gCAEpC;AAGA,OAAO,MAAMC,YAAY,GAAGF,gBAAgB,EAAsB,CAAC;EACjEG,IAAI,EAAE,cAAc;EAEpBC,KAAK,EAAEN,sBAAsB,EAAE;EAE/BO,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrBL,SAAS,CAAC,MAAAO,YAAA,CAAAT,aAAA,EAAAU,WAAA,CAEDL,KAAK;MAAA,SACJ;IAAiB,IACbG,KAAK,CAElB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
@@ -19,7 +19,7 @@ import { useItems } from "../../composables/items.mjs";
19
19
  import { useLocale } from "../../composables/locale.mjs";
20
20
  import { useProxiedModel } from "../../composables/proxiedModel.mjs";
21
21
  import { useTextColor } from "../../composables/color.mjs"; // Utility
22
- import { computed, mergeProps, nextTick, ref, watch } from 'vue';
22
+ import { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue';
23
23
  import { genericComponent, omit, propsFactory, useRender, wrapInArray } from "../../util/index.mjs";
24
24
  import { makeVTextFieldProps } from "../VTextField/VTextField.mjs"; // Types
25
25
  function highlightResult(text, matches, length) {
@@ -65,8 +65,8 @@ export const VAutocomplete = genericComponent()({
65
65
  t
66
66
  } = useLocale();
67
67
  const vTextFieldRef = ref();
68
- const isFocused = ref(false);
69
- const isPristine = ref(true);
68
+ const isFocused = shallowRef(false);
69
+ const isPristine = shallowRef(true);
70
70
  const vMenuRef = ref();
71
71
  const _menu = useProxiedModel(props, 'menu');
72
72
  const menu = computed({
@@ -76,7 +76,7 @@ export const VAutocomplete = genericComponent()({
76
76
  _menu.value = v;
77
77
  }
78
78
  });
79
- const selectionIndex = ref(-1);
79
+ const selectionIndex = shallowRef(-1);
80
80
  const color = computed(() => vTextFieldRef.value?.color);
81
81
  const {
82
82
  items,
@@ -187,7 +187,7 @@ export const VAutocomplete = genericComponent()({
187
187
  function onFocusin(e) {
188
188
  isFocused.value = true;
189
189
  }
190
- const isSelecting = ref(false);
190
+ const isSelecting = shallowRef(false);
191
191
  function select(item) {
192
192
  if (props.multiple) {
193
193
  const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value));
@@ -1 +1 @@
1
- {"version":3,"file":"VAutocomplete.mjs","names":["makeSelectProps","VCheckboxBtn","VChip","VDefaultsProvider","VIcon","VList","VListItem","VMenu","VTextField","forwardRefs","makeFilterProps","useFilter","makeTransitionProps","useForm","useItems","useLocale","useProxiedModel","useTextColor","computed","mergeProps","nextTick","ref","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVTextFieldProps","highlightResult","text","matches","length","Array","isArray","Error","_createVNode","_Fragment","substr","makeVAutocompleteProps","search","String","filterKeys","modelValue","transition","VAutocomplete","name","props","emits","focused","val","setup","_ref","slots","t","vTextFieldRef","isFocused","isPristine","vMenuRef","_menu","menu","get","value","set","v","ΨopenChildren","selectionIndex","color","items","transformIn","transformOut","textColorClasses","textColorStyles","model","transformed","multiple","form","filteredItems","getMatches","undefined","selections","map","find","item","valueComparator","displayItems","hideSelected","filter","filteredItem","some","s","selected","selection","listRef","onClear","e","openOnClear","onMousedownControl","hideNoData","readonly","isReadonly","onKeydown","selectionStart","includes","key","preventDefault","focus","originalSelectionIndex","select","prev","setSelectionRange","next","onInput","target","onAfterLeave","onFocusin","isSelecting","index","findIndex","splice","title","at","hasChips","chips","chip","hasList","prepend","append","isDirty","textFieldProps","filterProps","_mergeProps","$event","externalValue","class","style","menuIcon","placeholder","default","eager","menuProps","noDataText","onClick","_ref2","isSelected","prependIcon","onChipClose","stopPropagation","slotProps","onMousedown","closableChips","closable","size","_createTextVNode"],"sources":["../../../src/components/VAutocomplete/VAutocomplete.tsx"],"sourcesContent":["// Styles\nimport './VAutocomplete.sass'\n\n// Components\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useForm } from '@/composables/form'\nimport { useItems } from '@/composables/items'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utility\nimport { computed, mergeProps, nextTick, ref, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\nimport { makeVTextFieldProps } from '@/components/VTextField/VTextField'\n\n// Types\nimport type { FilterMatch } from '@/composables/filter'\nimport type { InternalItem } from '@/composables/items'\nimport type { GenericProps } from '@/util'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nfunction highlightResult (text: string, matches: FilterMatch | undefined, length: number) {\n if (matches == null) return text\n\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented')\n\n return typeof matches === 'number' && ~matches\n ? (\n <>\n <span class=\"v-autocomplete__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-autocomplete__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-autocomplete__unmask\">{ text.substr(matches + length) }</span>\n </>\n )\n : text\n}\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = T extends Primitive\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const makeVAutocompleteProps = propsFactory({\n // TODO: implement post keyboard support\n // autoSelectFirst: Boolean,\n search: String,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: false }),\n}, 'v-autocomplete')\n\nexport const VAutocomplete = genericComponent<new <\n T,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value<T, ReturnObject, Multiple> = Value<T, ReturnObject, Multiple>\n>(props: {\n items?: readonly T[]\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V\n 'onUpdate:modelValue'?: (val: V) => void\n}) => GenericProps<typeof props, Omit<VInputSlots & VFieldSlots, 'default'> & {\n item: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n chip: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n selection: [{ item: InternalItem<T>, index: number }]\n 'prepend-item': []\n 'append-item': []\n 'no-data': []\n}>>()({\n name: 'VAutocomplete',\n\n props: makeVAutocompleteProps(),\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:search': (val: any) => true,\n 'update:modelValue': (val: any) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const isFocused = ref(false)\n const isPristine = ref(true)\n const vMenuRef = ref<VMenu>()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const selectionIndex = ref(-1)\n const color = computed(() => vTextFieldRef.value?.color)\n const { items, transformIn, transformOut } = useItems(props)\n const { textColorClasses, textColorStyles } = useTextColor(color)\n const search = useProxiedModel(props, 'search', '')\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const form = useForm()\n const { filteredItems, getMatches } = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value))\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => props.valueComparator(item.value, v.value)) || v\n })\n })\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !selections.value.some(s => s.value === filteredItem.value))\n }\n return filteredItems.value\n })\n\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const selection = computed(() => selections.value[selectionIndex.value])\n const listRef = ref<VList>()\n\n function onClear (e: MouseEvent) {\n if (props.openOnClear) {\n menu.value = true\n }\n\n search.value = ''\n }\n function onMousedownControl () {\n if (\n (props.hideNoData && !items.value.length) ||\n props.readonly || form?.isReadonly.value\n ) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly || form?.isReadonly.value) return\n\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = selected.value.length\n\n if (\n selectionIndex.value > -1 ||\n ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)\n ) {\n e.preventDefault()\n }\n\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape'].includes(e.key)) {\n menu.value = false\n }\n\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n isPristine.value = true\n }\n\n if (e.key === 'ArrowDown') {\n listRef.value?.focus('next')\n } else if (e.key === 'ArrowUp') {\n listRef.value?.focus('prev')\n }\n\n if (!props.multiple) return\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (selectionIndex.value < 0) {\n if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n\n return\n }\n\n const originalSelectionIndex = selectionIndex.value\n\n if (selection.value) select(selection.value)\n\n selectionIndex.value = originalSelectionIndex >= length - 1 ? (length - 2) : originalSelectionIndex\n }\n\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return\n\n const prev = selectionIndex.value > -1\n ? selectionIndex.value - 1\n : length - 1\n\n if (selections.value[prev]) {\n selectionIndex.value = prev\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(search.value?.length, search.value?.length)\n }\n }\n\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return\n\n const next = selectionIndex.value + 1\n\n if (selections.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\n }\n\n function onInput (e: InputEvent) {\n search.value = (e.target as HTMLInputElement).value\n }\n\n function onAfterLeave () {\n if (isFocused.value) {\n isPristine.value = true\n vTextFieldRef.value?.focus()\n }\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n\n const isSelecting = ref(false)\n\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value))\n\n if (index === -1) {\n model.value = [...model.value, item]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [item]\n\n isSelecting.value = true\n\n search.value = item.title\n\n menu.value = false\n isPristine.value = true\n\n nextTick(() => (isSelecting.value = false))\n }\n }\n\n watch(isFocused, val => {\n if (val) {\n isSelecting.value = true\n search.value = props.multiple ? '' : String(selections.value.at(-1)?.props.title ?? '')\n isPristine.value = true\n\n nextTick(() => isSelecting.value = false)\n } else {\n if (!props.multiple && !search.value) model.value = []\n menu.value = false\n search.value = ''\n selectionIndex.value = -1\n }\n })\n\n watch(search, val => {\n if (!isFocused.value || isSelecting.value) return\n\n if (val) menu.value = true\n\n isPristine.value = !val\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const hasList = !!((!props.hideNoData || displayItems.value.length) || slots.prepend || slots.append || slots['no-data'])\n const isDirty = model.value.length > 0\n const [textFieldProps] = VTextField.filterProps(props)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n modelValue={ search.value }\n onUpdate:modelValue={ v => { if (v == null) model.value = [] } }\n v-model:focused={ isFocused.value }\n validationValue={ model.externalValue }\n dirty={ isDirty }\n onInput={ onInput }\n class={[\n 'v-autocomplete',\n `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`,\n {\n 'v-autocomplete--active-menu': menu.value,\n 'v-autocomplete--chips': !!props.chips,\n 'v-autocomplete--selecting-index': selectionIndex.value > -1,\n },\n props.class,\n ]}\n style={ props.style }\n appendInnerIcon={ props.menuIcon }\n readonly={ props.readonly }\n placeholder={ isDirty ? undefined : props.placeholder }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n ref={ vMenuRef }\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-autocomplete__content\"\n eager={ props.eager }\n maxHeight={ 310 }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n { ...props.menuProps }\n >\n { hasList && (\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onFocusin={ onFocusin }\n >\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n ))}\n\n { slots['prepend-item']?.() }\n\n { displayItems.value.map(item => slots.item?.({\n item,\n props: mergeProps(item.props, { onClick: () => select(item) }),\n }) ?? (\n <VListItem\n key={ item.value }\n { ...item.props }\n onClick={ () => select(item) }\n >\n {{\n prepend: ({ isSelected }) => (\n <>\n { props.multiple && !props.hideSelected ? (\n <VCheckboxBtn\n modelValue={ isSelected }\n ripple={ false }\n tabindex=\"-1\"\n />\n ) : undefined }\n\n { item.props.prependIcon && (\n <VIcon icon={ item.props.prependIcon } />\n )}\n </>\n ),\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n ))}\n\n { slots['append-item']?.() }\n </VList>\n )}\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n onMousedown (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div\n key={ item.value }\n class={[\n 'v-autocomplete__selection',\n index === selectionIndex.value && [\n 'v-autocomplete__selection--selected',\n textColorClasses.value,\n ],\n ]}\n style={ index === selectionIndex.value ? textColorStyles.value : {} }\n >\n { hasChips ? (\n !slots.chip ? (\n <VChip\n key=\"chip\"\n closable={ props.closableChips }\n size=\"small\"\n text={ item.title }\n { ...slotProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"chip-defaults\"\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip?.({ item, index, props: slotProps }) }\n </VDefaultsProvider>\n )\n ) : (\n slots.selection?.({ item, index }) ?? (\n <span class=\"v-autocomplete__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-autocomplete__selection-comma\">,</span>\n )}\n </span>\n )\n )}\n </div>\n )\n })}\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VAutocomplete = InstanceType<typeof VAutocomplete>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VAutocomplete.mjs","names":["makeSelectProps","VCheckboxBtn","VChip","VDefaultsProvider","VIcon","VList","VListItem","VMenu","VTextField","forwardRefs","makeFilterProps","useFilter","makeTransitionProps","useForm","useItems","useLocale","useProxiedModel","useTextColor","computed","mergeProps","nextTick","ref","shallowRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVTextFieldProps","highlightResult","text","matches","length","Array","isArray","Error","_createVNode","_Fragment","substr","makeVAutocompleteProps","search","String","filterKeys","modelValue","transition","VAutocomplete","name","props","emits","focused","val","setup","_ref","slots","t","vTextFieldRef","isFocused","isPristine","vMenuRef","_menu","menu","get","value","set","v","ΨopenChildren","selectionIndex","color","items","transformIn","transformOut","textColorClasses","textColorStyles","model","transformed","multiple","form","filteredItems","getMatches","undefined","selections","map","find","item","valueComparator","displayItems","hideSelected","filter","filteredItem","some","s","selected","selection","listRef","onClear","e","openOnClear","onMousedownControl","hideNoData","readonly","isReadonly","onKeydown","selectionStart","includes","key","preventDefault","focus","originalSelectionIndex","select","prev","setSelectionRange","next","onInput","target","onAfterLeave","onFocusin","isSelecting","index","findIndex","splice","title","at","hasChips","chips","chip","hasList","prepend","append","isDirty","textFieldProps","filterProps","_mergeProps","$event","externalValue","class","style","menuIcon","placeholder","default","eager","menuProps","noDataText","onClick","_ref2","isSelected","prependIcon","onChipClose","stopPropagation","slotProps","onMousedown","closableChips","closable","size","_createTextVNode"],"sources":["../../../src/components/VAutocomplete/VAutocomplete.tsx"],"sourcesContent":["// Styles\nimport './VAutocomplete.sass'\n\n// Components\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useForm } from '@/composables/form'\nimport { useItems } from '@/composables/items'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utility\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\nimport { makeVTextFieldProps } from '@/components/VTextField/VTextField'\n\n// Types\nimport type { FilterMatch } from '@/composables/filter'\nimport type { InternalItem } from '@/composables/items'\nimport type { GenericProps } from '@/util'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nfunction highlightResult (text: string, matches: FilterMatch | undefined, length: number) {\n if (matches == null) return text\n\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented')\n\n return typeof matches === 'number' && ~matches\n ? (\n <>\n <span class=\"v-autocomplete__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-autocomplete__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-autocomplete__unmask\">{ text.substr(matches + length) }</span>\n </>\n )\n : text\n}\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = T extends Primitive\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject> | null\n\nexport const makeVAutocompleteProps = propsFactory({\n // TODO: implement post keyboard support\n // autoSelectFirst: Boolean,\n search: String,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: false }),\n}, 'v-autocomplete')\n\nexport const VAutocomplete = genericComponent<new <\n T extends readonly any[],\n Item = T extends (infer U)[] ? U : never,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value<Item, ReturnObject, Multiple> = Value<Item, ReturnObject, Multiple>\n>(props: {\n items?: T\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V | null\n 'onUpdate:modelValue'?: (val: V) => void\n}) => GenericProps<typeof props, Omit<VInputSlots & VFieldSlots, 'default'> & {\n item: [{ item: InternalItem<Item>, index: number, props: Record<string, unknown> }]\n chip: [{ item: InternalItem<Item>, index: number, props: Record<string, unknown> }]\n selection: [{ item: InternalItem<Item>, index: number }]\n 'prepend-item': []\n 'append-item': []\n 'no-data': []\n}>>()({\n name: 'VAutocomplete',\n\n props: makeVAutocompleteProps(),\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:search': (val: any) => true,\n 'update:modelValue': (val: any) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const isFocused = shallowRef(false)\n const isPristine = shallowRef(true)\n const vMenuRef = ref<VMenu>()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const selectionIndex = shallowRef(-1)\n const color = computed(() => vTextFieldRef.value?.color)\n const { items, transformIn, transformOut } = useItems(props)\n const { textColorClasses, textColorStyles } = useTextColor(color)\n const search = useProxiedModel(props, 'search', '')\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const form = useForm()\n const { filteredItems, getMatches } = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value))\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => props.valueComparator(item.value, v.value)) || v\n })\n })\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !selections.value.some(s => s.value === filteredItem.value))\n }\n return filteredItems.value\n })\n\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const selection = computed(() => selections.value[selectionIndex.value])\n const listRef = ref<VList>()\n\n function onClear (e: MouseEvent) {\n if (props.openOnClear) {\n menu.value = true\n }\n\n search.value = ''\n }\n function onMousedownControl () {\n if (\n (props.hideNoData && !items.value.length) ||\n props.readonly || form?.isReadonly.value\n ) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly || form?.isReadonly.value) return\n\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = selected.value.length\n\n if (\n selectionIndex.value > -1 ||\n ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)\n ) {\n e.preventDefault()\n }\n\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape'].includes(e.key)) {\n menu.value = false\n }\n\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n isPristine.value = true\n }\n\n if (e.key === 'ArrowDown') {\n listRef.value?.focus('next')\n } else if (e.key === 'ArrowUp') {\n listRef.value?.focus('prev')\n }\n\n if (!props.multiple) return\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (selectionIndex.value < 0) {\n if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n\n return\n }\n\n const originalSelectionIndex = selectionIndex.value\n\n if (selection.value) select(selection.value)\n\n selectionIndex.value = originalSelectionIndex >= length - 1 ? (length - 2) : originalSelectionIndex\n }\n\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return\n\n const prev = selectionIndex.value > -1\n ? selectionIndex.value - 1\n : length - 1\n\n if (selections.value[prev]) {\n selectionIndex.value = prev\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(search.value?.length, search.value?.length)\n }\n }\n\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return\n\n const next = selectionIndex.value + 1\n\n if (selections.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\n }\n\n function onInput (e: InputEvent) {\n search.value = (e.target as HTMLInputElement).value\n }\n\n function onAfterLeave () {\n if (isFocused.value) {\n isPristine.value = true\n vTextFieldRef.value?.focus()\n }\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n\n const isSelecting = shallowRef(false)\n\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value))\n\n if (index === -1) {\n model.value = [...model.value, item]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [item]\n\n isSelecting.value = true\n\n search.value = item.title\n\n menu.value = false\n isPristine.value = true\n\n nextTick(() => (isSelecting.value = false))\n }\n }\n\n watch(isFocused, val => {\n if (val) {\n isSelecting.value = true\n search.value = props.multiple ? '' : String(selections.value.at(-1)?.props.title ?? '')\n isPristine.value = true\n\n nextTick(() => isSelecting.value = false)\n } else {\n if (!props.multiple && !search.value) model.value = []\n menu.value = false\n search.value = ''\n selectionIndex.value = -1\n }\n })\n\n watch(search, val => {\n if (!isFocused.value || isSelecting.value) return\n\n if (val) menu.value = true\n\n isPristine.value = !val\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const hasList = !!((!props.hideNoData || displayItems.value.length) || slots.prepend || slots.append || slots['no-data'])\n const isDirty = model.value.length > 0\n const [textFieldProps] = VTextField.filterProps(props)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n modelValue={ search.value }\n onUpdate:modelValue={ v => { if (v == null) model.value = [] } }\n v-model:focused={ isFocused.value }\n validationValue={ model.externalValue }\n dirty={ isDirty }\n onInput={ onInput }\n class={[\n 'v-autocomplete',\n `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`,\n {\n 'v-autocomplete--active-menu': menu.value,\n 'v-autocomplete--chips': !!props.chips,\n 'v-autocomplete--selecting-index': selectionIndex.value > -1,\n },\n props.class,\n ]}\n style={ props.style }\n appendInnerIcon={ props.menuIcon }\n readonly={ props.readonly }\n placeholder={ isDirty ? undefined : props.placeholder }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n ref={ vMenuRef }\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-autocomplete__content\"\n eager={ props.eager }\n maxHeight={ 310 }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n { ...props.menuProps }\n >\n { hasList && (\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onFocusin={ onFocusin }\n >\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n ))}\n\n { slots['prepend-item']?.() }\n\n { displayItems.value.map(item => slots.item?.({\n item,\n props: mergeProps(item.props, { onClick: () => select(item) }),\n }) ?? (\n <VListItem\n key={ item.value }\n { ...item.props }\n onClick={ () => select(item) }\n >\n {{\n prepend: ({ isSelected }) => (\n <>\n { props.multiple && !props.hideSelected ? (\n <VCheckboxBtn\n modelValue={ isSelected }\n ripple={ false }\n tabindex=\"-1\"\n />\n ) : undefined }\n\n { item.props.prependIcon && (\n <VIcon icon={ item.props.prependIcon } />\n )}\n </>\n ),\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n ))}\n\n { slots['append-item']?.() }\n </VList>\n )}\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n onMousedown (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div\n key={ item.value }\n class={[\n 'v-autocomplete__selection',\n index === selectionIndex.value && [\n 'v-autocomplete__selection--selected',\n textColorClasses.value,\n ],\n ]}\n style={ index === selectionIndex.value ? textColorStyles.value : {} }\n >\n { hasChips ? (\n !slots.chip ? (\n <VChip\n key=\"chip\"\n closable={ props.closableChips }\n size=\"small\"\n text={ item.title }\n { ...slotProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"chip-defaults\"\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip?.({ item, index, props: slotProps }) }\n </VDefaultsProvider>\n )\n ) : (\n slots.selection?.({ item, index }) ?? (\n <span class=\"v-autocomplete__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-autocomplete__selection-comma\">,</span>\n )}\n </span>\n )\n )}\n </div>\n )\n })}\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VAutocomplete = InstanceType<typeof VAutocomplete>\n"],"mappings":"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"}
@@ -187,7 +187,7 @@ type VFieldSlots = {
187
187
 
188
188
  type Primitive = string | number | boolean | symbol;
189
189
  type Val<T, ReturnObject extends boolean> = T extends Primitive ? T : (ReturnObject extends true ? T : any);
190
- type Value<T, ReturnObject extends boolean, Multiple extends boolean> = Multiple extends true ? readonly Val<T, ReturnObject>[] : Val<T, ReturnObject>;
190
+ type Value<T, ReturnObject extends boolean, Multiple extends boolean> = Multiple extends true ? readonly Val<T, ReturnObject>[] : Val<T, ReturnObject> | null;
191
191
  declare const VAutocomplete: {
192
192
  new (...args: any[]): {
193
193
  $: vue.ComponentInternalInstance;
@@ -1474,31 +1474,31 @@ declare const VAutocomplete: {
1474
1474
  filterMode: FilterMode;
1475
1475
  noFilter: boolean;
1476
1476
  filterKeys: NonNullable<FilterKeys>;
1477
- }, {}, string> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new <T_1, ReturnObject extends boolean = false, Multiple extends boolean = false, V extends Value<T_1, ReturnObject, Multiple> = Value<T_1, ReturnObject, Multiple>>(props: {
1478
- items?: readonly T_1[] | undefined;
1477
+ }, {}, string> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new <T_1 extends readonly any[], Item = T_1 extends (infer U)[] ? U : never, ReturnObject extends boolean = false, Multiple extends boolean = false, V extends Value<Item, ReturnObject, Multiple> = Value<Item, ReturnObject, Multiple>>(props: {
1478
+ items?: T_1 | undefined;
1479
1479
  returnObject?: ReturnObject | undefined;
1480
1480
  multiple?: Multiple | undefined;
1481
- modelValue?: V | undefined;
1481
+ modelValue?: V | null | undefined;
1482
1482
  'onUpdate:modelValue'?: ((val: V) => void) | undefined;
1483
1483
  }) => GenericProps<{
1484
- items?: readonly T_1[] | undefined;
1484
+ items?: T_1 | undefined;
1485
1485
  returnObject?: ReturnObject | undefined;
1486
1486
  multiple?: Multiple | undefined;
1487
- modelValue?: V | undefined;
1487
+ modelValue?: V | null | undefined;
1488
1488
  'onUpdate:modelValue'?: ((val: V) => void) | undefined;
1489
1489
  }, Omit<VInputSlots & VFieldSlots, "default"> & {
1490
1490
  item: [{
1491
- item: InternalItem<T_1>;
1491
+ item: InternalItem<Item>;
1492
1492
  index: number;
1493
1493
  props: Record<string, unknown>;
1494
1494
  }];
1495
1495
  chip: [{
1496
- item: InternalItem<T_1>;
1496
+ item: InternalItem<Item>;
1497
1497
  index: number;
1498
1498
  props: Record<string, unknown>;
1499
1499
  }];
1500
1500
  selection: [{
1501
- item: InternalItem<T_1>;
1501
+ item: InternalItem<Item>;
1502
1502
  index: number;
1503
1503
  }];
1504
1504
  'prepend-item': [];
@@ -2,7 +2,6 @@
2
2
  align-items: center;
3
3
  cursor: default;
4
4
  display: inline-flex;
5
- flex: 1 0;
6
5
  font-weight: 400;
7
6
  max-width: 100%;
8
7
  min-width: 0;
@@ -6,7 +6,6 @@
6
6
  align-items: center
7
7
  cursor: default
8
8
  display: inline-flex
9
- flex: 1 0
10
9
  font-weight: $chip-font-weight
11
10
  max-width: $chip-max-width
12
11
  min-width: 0
@@ -6,7 +6,7 @@ import "./VColorPickerCanvas.css";
6
6
  import { makeComponentProps } from "../../composables/component.mjs";
7
7
  import { useResizeObserver } from "../../composables/resizeObserver.mjs"; // Utilities
8
8
  import { clamp, convertToUnit, defineComponent, getEventCoordinates, propsFactory, useRender } from "../../util/index.mjs";
9
- import { computed, onMounted, ref, watch } from 'vue';
9
+ import { computed, onMounted, ref, shallowRef, watch } from 'vue';
10
10
 
11
11
  // Types
12
12
 
@@ -40,8 +40,8 @@ export const VColorPickerCanvas = defineComponent({
40
40
  let {
41
41
  emit
42
42
  } = _ref;
43
- const isInteracting = ref(false);
44
- const isOutsideUpdate = ref(false);
43
+ const isInteracting = shallowRef(false);
44
+ const isOutsideUpdate = shallowRef(false);
45
45
  const dotPosition = ref({
46
46
  x: 0,
47
47
  y: 0
@@ -59,8 +59,8 @@ export const VColorPickerCanvas = defineComponent({
59
59
  };
60
60
  });
61
61
  const canvasRef = ref();
62
- const canvasWidth = ref(parseFloat(props.width));
63
- const canvasHeight = ref(parseFloat(props.height));
62
+ const canvasWidth = shallowRef(parseFloat(props.width));
63
+ const canvasHeight = shallowRef(parseFloat(props.height));
64
64
  const {
65
65
  resizeRef
66
66
  } = useResizeObserver(entries => {
@@ -1 +1 @@
1
- {"version":3,"file":"VColorPickerCanvas.mjs","names":["makeComponentProps","useResizeObserver","clamp","convertToUnit","defineComponent","getEventCoordinates","propsFactory","useRender","computed","onMounted","ref","watch","makeVColorPickerCanvasProps","color","type","Object","disabled","Boolean","dotSize","Number","String","default","height","width","VColorPickerCanvas","name","props","emits","hue","setup","_ref","emit","isInteracting","isOutsideUpdate","dotPosition","x","y","dotStyles","value","radius","parseInt","transform","canvasRef","canvasWidth","parseFloat","canvasHeight","resizeRef","entries","offsetParent","contentRect","updateDotPosition","rect","left","top","handleClick","e","clientX","clientY","getBoundingClientRect","handleMouseDown","preventDefault","window","addEventListener","handleMouseMove","handleMouseUp","coords","removeEventListener","h","s","v","a","updateCanvas","canvas","ctx","getContext","saturationGradient","createLinearGradient","addColorStop","fillStyle","fillRect","valueGradient","immediate","newVal","oldVal","flush","deep","_createVNode","class","style"],"sources":["../../../src/components/VColorPicker/VColorPickerCanvas.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerCanvas.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { clamp, convertToUnit, defineComponent, getEventCoordinates, propsFactory, useRender } from '@/util'\nimport { computed, onMounted, ref, watch } from 'vue'\n\n// Types\nimport type { HSV } from '@/util'\nimport type { PropType } from 'vue'\n\nexport const makeVColorPickerCanvasProps = propsFactory({\n color: {\n type: Object as PropType<HSV | null>,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n\n ...makeComponentProps(),\n}, 'v-color-picker-canvas')\n\nexport const VColorPickerCanvas = defineComponent({\n name: 'VColorPickerCanvas',\n\n props: makeVColorPickerCanvasProps(),\n\n emits: {\n 'update:color': (color: HSV) => true,\n 'update:position': (hue: any) => true,\n },\n\n setup (props, { emit }) {\n const isInteracting = ref(false)\n const isOutsideUpdate = ref(false)\n const dotPosition = ref({ x: 0, y: 0 })\n\n const dotStyles = computed(() => {\n const { x, y } = dotPosition.value\n const radius = parseInt(props.dotSize, 10) / 2\n\n return {\n width: convertToUnit(props.dotSize),\n height: convertToUnit(props.dotSize),\n transform: `translate(${convertToUnit(x - radius)}, ${convertToUnit(y - radius)})`,\n }\n })\n\n const canvasRef = ref<HTMLCanvasElement | null>()\n const canvasWidth = ref(parseFloat(props.width))\n const canvasHeight = ref(parseFloat(props.height))\n const { resizeRef } = useResizeObserver(entries => {\n if (!resizeRef.value?.offsetParent) return\n\n const { width, height } = entries[0].contentRect\n\n canvasWidth.value = width\n canvasHeight.value = height\n })\n\n function updateDotPosition (x: number, y: number, rect: DOMRect) {\n const { left, top, width, height } = rect\n dotPosition.value = {\n x: clamp(x - left, 0, width),\n y: clamp(y - top, 0, height),\n }\n }\n\n function handleClick (e: MouseEvent) {\n if (props.disabled || !canvasRef.value) return\n\n updateDotPosition(e.clientX, e.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseDown (e: MouseEvent | TouchEvent) {\n // To prevent selection while moving cursor\n e.preventDefault()\n\n if (props.disabled) return\n\n isInteracting.value = true\n\n window.addEventListener('mousemove', handleMouseMove)\n window.addEventListener('mouseup', handleMouseUp)\n window.addEventListener('touchmove', handleMouseMove)\n window.addEventListener('touchend', handleMouseUp)\n }\n\n function handleMouseMove (e: MouseEvent | TouchEvent) {\n if (props.disabled || !canvasRef.value) return\n\n isInteracting.value = true\n\n const coords = getEventCoordinates(e)\n\n updateDotPosition(coords.clientX, coords.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseUp () {\n window.removeEventListener('mousemove', handleMouseMove)\n window.removeEventListener('mouseup', handleMouseUp)\n window.removeEventListener('touchmove', handleMouseMove)\n window.removeEventListener('touchend', handleMouseUp)\n }\n\n watch(dotPosition, () => {\n if (isOutsideUpdate.value) {\n isOutsideUpdate.value = false\n return\n }\n\n if (!canvasRef.value) return\n\n const { x, y } = dotPosition.value\n\n emit('update:color', {\n h: props.color?.h ?? 0,\n s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,\n v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,\n a: props.color?.a ?? 1,\n })\n })\n\n function updateCanvas () {\n if (!canvasRef.value) return\n\n const canvas = canvasRef.value\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${props.color?.h ?? 0}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 100%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n }\n\n watch(() => props.color?.h, updateCanvas, { immediate: true })\n watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {\n updateCanvas()\n dotPosition.value = {\n x: dotPosition.value.x * newVal[0] / oldVal[0],\n y: dotPosition.value.y * newVal[1] / oldVal[1],\n }\n }, { flush: 'post' })\n\n watch(() => props.color, () => {\n if (isInteracting.value) {\n isInteracting.value = false\n return\n }\n\n isOutsideUpdate.value = true\n\n dotPosition.value = props.color ? {\n x: props.color.s * canvasWidth.value,\n y: (1 - props.color.v) * canvasHeight.value,\n } : { x: 0, y: 0 }\n }, { deep: true, immediate: true })\n\n onMounted(() => updateCanvas())\n\n useRender(() => (\n <div\n ref={ resizeRef }\n class={[\n 'v-color-picker-canvas',\n props.class,\n ]}\n style={ props.style }\n onClick={ handleClick }\n onMousedown={ handleMouseDown }\n onTouchstart={ handleMouseDown }\n >\n <canvas\n ref={ canvasRef }\n width={ canvasWidth.value }\n height={ canvasHeight.value }\n />\n { props.color && (\n <div\n class={[\n 'v-color-picker-canvas__dot',\n {\n 'v-color-picker-canvas__dot--disabled': props.disabled,\n },\n ]}\n style={ dotStyles.value }\n />\n )}\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerCanvas = InstanceType<typeof VColorPickerCanvas>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VColorPickerCanvas.mjs","names":["makeComponentProps","useResizeObserver","clamp","convertToUnit","defineComponent","getEventCoordinates","propsFactory","useRender","computed","onMounted","ref","shallowRef","watch","makeVColorPickerCanvasProps","color","type","Object","disabled","Boolean","dotSize","Number","String","default","height","width","VColorPickerCanvas","name","props","emits","hue","setup","_ref","emit","isInteracting","isOutsideUpdate","dotPosition","x","y","dotStyles","value","radius","parseInt","transform","canvasRef","canvasWidth","parseFloat","canvasHeight","resizeRef","entries","offsetParent","contentRect","updateDotPosition","rect","left","top","handleClick","e","clientX","clientY","getBoundingClientRect","handleMouseDown","preventDefault","window","addEventListener","handleMouseMove","handleMouseUp","coords","removeEventListener","h","s","v","a","updateCanvas","canvas","ctx","getContext","saturationGradient","createLinearGradient","addColorStop","fillStyle","fillRect","valueGradient","immediate","newVal","oldVal","flush","deep","_createVNode","class","style"],"sources":["../../../src/components/VColorPicker/VColorPickerCanvas.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerCanvas.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { clamp, convertToUnit, defineComponent, getEventCoordinates, propsFactory, useRender } from '@/util'\nimport { computed, onMounted, ref, shallowRef, watch } from 'vue'\n\n// Types\nimport type { HSV } from '@/util'\nimport type { PropType } from 'vue'\n\nexport const makeVColorPickerCanvasProps = propsFactory({\n color: {\n type: Object as PropType<HSV | null>,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n\n ...makeComponentProps(),\n}, 'v-color-picker-canvas')\n\nexport const VColorPickerCanvas = defineComponent({\n name: 'VColorPickerCanvas',\n\n props: makeVColorPickerCanvasProps(),\n\n emits: {\n 'update:color': (color: HSV) => true,\n 'update:position': (hue: any) => true,\n },\n\n setup (props, { emit }) {\n const isInteracting = shallowRef(false)\n const isOutsideUpdate = shallowRef(false)\n const dotPosition = ref({ x: 0, y: 0 })\n\n const dotStyles = computed(() => {\n const { x, y } = dotPosition.value\n const radius = parseInt(props.dotSize, 10) / 2\n\n return {\n width: convertToUnit(props.dotSize),\n height: convertToUnit(props.dotSize),\n transform: `translate(${convertToUnit(x - radius)}, ${convertToUnit(y - radius)})`,\n }\n })\n\n const canvasRef = ref<HTMLCanvasElement | null>()\n const canvasWidth = shallowRef(parseFloat(props.width))\n const canvasHeight = shallowRef(parseFloat(props.height))\n const { resizeRef } = useResizeObserver(entries => {\n if (!resizeRef.value?.offsetParent) return\n\n const { width, height } = entries[0].contentRect\n\n canvasWidth.value = width\n canvasHeight.value = height\n })\n\n function updateDotPosition (x: number, y: number, rect: DOMRect) {\n const { left, top, width, height } = rect\n dotPosition.value = {\n x: clamp(x - left, 0, width),\n y: clamp(y - top, 0, height),\n }\n }\n\n function handleClick (e: MouseEvent) {\n if (props.disabled || !canvasRef.value) return\n\n updateDotPosition(e.clientX, e.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseDown (e: MouseEvent | TouchEvent) {\n // To prevent selection while moving cursor\n e.preventDefault()\n\n if (props.disabled) return\n\n isInteracting.value = true\n\n window.addEventListener('mousemove', handleMouseMove)\n window.addEventListener('mouseup', handleMouseUp)\n window.addEventListener('touchmove', handleMouseMove)\n window.addEventListener('touchend', handleMouseUp)\n }\n\n function handleMouseMove (e: MouseEvent | TouchEvent) {\n if (props.disabled || !canvasRef.value) return\n\n isInteracting.value = true\n\n const coords = getEventCoordinates(e)\n\n updateDotPosition(coords.clientX, coords.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseUp () {\n window.removeEventListener('mousemove', handleMouseMove)\n window.removeEventListener('mouseup', handleMouseUp)\n window.removeEventListener('touchmove', handleMouseMove)\n window.removeEventListener('touchend', handleMouseUp)\n }\n\n watch(dotPosition, () => {\n if (isOutsideUpdate.value) {\n isOutsideUpdate.value = false\n return\n }\n\n if (!canvasRef.value) return\n\n const { x, y } = dotPosition.value\n\n emit('update:color', {\n h: props.color?.h ?? 0,\n s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,\n v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,\n a: props.color?.a ?? 1,\n })\n })\n\n function updateCanvas () {\n if (!canvasRef.value) return\n\n const canvas = canvasRef.value\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${props.color?.h ?? 0}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 100%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n }\n\n watch(() => props.color?.h, updateCanvas, { immediate: true })\n watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {\n updateCanvas()\n dotPosition.value = {\n x: dotPosition.value.x * newVal[0] / oldVal[0],\n y: dotPosition.value.y * newVal[1] / oldVal[1],\n }\n }, { flush: 'post' })\n\n watch(() => props.color, () => {\n if (isInteracting.value) {\n isInteracting.value = false\n return\n }\n\n isOutsideUpdate.value = true\n\n dotPosition.value = props.color ? {\n x: props.color.s * canvasWidth.value,\n y: (1 - props.color.v) * canvasHeight.value,\n } : { x: 0, y: 0 }\n }, { deep: true, immediate: true })\n\n onMounted(() => updateCanvas())\n\n useRender(() => (\n <div\n ref={ resizeRef }\n class={[\n 'v-color-picker-canvas',\n props.class,\n ]}\n style={ props.style }\n onClick={ handleClick }\n onMousedown={ handleMouseDown }\n onTouchstart={ handleMouseDown }\n >\n <canvas\n ref={ canvasRef }\n width={ canvasWidth.value }\n height={ canvasHeight.value }\n />\n { props.color && (\n <div\n class={[\n 'v-color-picker-canvas__dot',\n {\n 'v-color-picker-canvas__dot--disabled': props.disabled,\n },\n ]}\n style={ dotStyles.value }\n />\n )}\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerCanvas = InstanceType<typeof VColorPickerCanvas>\n"],"mappings":"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"}