@vuetify/nightly 3.0.0-beta.3 → 3.0.0-beta.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 (169) hide show
  1. package/CHANGELOG.md +32 -2
  2. package/dist/_component-variables.sass +61 -0
  3. package/dist/json/attributes.json +176 -20
  4. package/dist/json/importMap.json +208 -204
  5. package/dist/json/tags.json +48 -4
  6. package/dist/json/web-types.json +492 -46
  7. package/dist/vuetify.css +950 -932
  8. package/dist/vuetify.d.ts +2521 -341
  9. package/dist/vuetify.esm.js +2318 -2130
  10. package/dist/vuetify.esm.js.map +1 -1
  11. package/dist/vuetify.js +2317 -2129
  12. package/dist/vuetify.js.map +1 -1
  13. package/dist/vuetify.min.css +2 -2
  14. package/dist/vuetify.min.js +764 -740
  15. package/dist/vuetify.min.js.map +1 -1
  16. package/lib/components/VAlert/VAlert.css +5 -5
  17. package/lib/components/VAlert/VAlert.mjs +1 -1
  18. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  19. package/lib/components/VAlert/VAlert.sass +0 -2
  20. package/lib/components/VAppBar/VAppBar.sass +0 -1
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs +46 -17
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  23. package/lib/components/VAutocomplete/VAutocomplete.sass +0 -2
  24. package/lib/components/VAvatar/VAvatar.css +1 -1
  25. package/lib/components/VAvatar/VAvatar.sass +1 -2
  26. package/lib/components/VAvatar/_mixins.scss +0 -1
  27. package/lib/components/VBadge/VBadge.sass +0 -1
  28. package/lib/components/VBanner/VBanner.sass +0 -1
  29. package/lib/components/VBottomNavigation/VBottomNavigation.sass +0 -1
  30. package/lib/components/VBreadcrumbs/VBreadcrumbs.sass +0 -1
  31. package/lib/components/VBtn/VBtn.css +24 -7
  32. package/lib/components/VBtn/VBtn.mjs +20 -11
  33. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  34. package/lib/components/VBtn/VBtn.sass +17 -2
  35. package/lib/components/VBtnGroup/VBtnGroup.sass +0 -1
  36. package/lib/components/VBtnToggle/VBtnToggle.sass +0 -1
  37. package/lib/components/VCard/VCard.css +5 -5
  38. package/lib/components/VCard/VCard.mjs +1 -1
  39. package/lib/components/VCard/VCard.mjs.map +1 -1
  40. package/lib/components/VCard/VCard.sass +0 -1
  41. package/lib/components/VCarousel/VCarousel.sass +0 -1
  42. package/lib/components/VCheckbox/VCheckbox.mjs +13 -46
  43. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  44. package/lib/components/VCheckbox/VCheckbox.sass +0 -1
  45. package/lib/components/VCheckbox/VCheckboxBtn.mjs +67 -0
  46. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -0
  47. package/lib/components/VCheckbox/index.mjs +1 -0
  48. package/lib/components/VCheckbox/index.mjs.map +1 -1
  49. package/lib/components/VChip/VChip.css +5 -5
  50. package/lib/components/VChip/VChip.mjs +1 -1
  51. package/lib/components/VChip/VChip.mjs.map +1 -1
  52. package/lib/components/VChip/VChip.sass +0 -1
  53. package/lib/components/VChipGroup/VChipGroup.mjs +1 -1
  54. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  55. package/lib/components/VCode/VCode.sass +1 -2
  56. package/lib/components/VCode/_variables.scss +1 -1
  57. package/lib/components/VColorPicker/VColorPicker.sass +0 -1
  58. package/lib/components/VColorPicker/VColorPickerCanvas.sass +0 -1
  59. package/lib/components/VColorPicker/VColorPickerEdit.sass +0 -1
  60. package/lib/components/VColorPicker/VColorPickerPreview.sass +0 -1
  61. package/lib/components/VColorPicker/VColorPickerSwatches.sass +0 -1
  62. package/lib/components/VCombobox/VCombobox.mjs +47 -29
  63. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  64. package/lib/components/VCombobox/VCombobox.sass +0 -2
  65. package/lib/components/VCounter/VCounter.sass +0 -1
  66. package/lib/components/VDialog/VDialog.sass +0 -1
  67. package/lib/components/VDivider/VDivider.sass +0 -1
  68. package/lib/components/VExpansionPanel/VExpansionPanel.sass +0 -1
  69. package/lib/components/VField/VField.css +9 -9
  70. package/lib/components/VField/VField.mjs +2 -2
  71. package/lib/components/VField/VField.mjs.map +1 -1
  72. package/lib/components/VField/VField.sass +6 -8
  73. package/lib/components/VField/_variables.scss +3 -3
  74. package/lib/components/VFileInput/VFileInput.sass +0 -1
  75. package/lib/components/VFooter/VFooter.sass +0 -1
  76. package/lib/components/VIcon/VIcon.sass +0 -1
  77. package/lib/components/VImg/VImg.sass +0 -1
  78. package/lib/components/VInput/VInput.mjs +3 -3
  79. package/lib/components/VInput/VInput.mjs.map +1 -1
  80. package/lib/components/VInput/VInput.sass +0 -1
  81. package/lib/components/VItemGroup/VItemGroup.sass +0 -1
  82. package/lib/components/VKbd/VKbd.sass +0 -1
  83. package/lib/components/VKbd/_variables.scss +1 -1
  84. package/lib/components/VLabel/VLabel.sass +0 -1
  85. package/lib/components/VList/VList.mjs +1 -1
  86. package/lib/components/VList/VList.mjs.map +1 -1
  87. package/lib/components/VList/VList.sass +0 -1
  88. package/lib/components/VList/VListChildren.mjs +1 -1
  89. package/lib/components/VList/VListChildren.mjs.map +1 -1
  90. package/lib/components/VList/VListGroup.mjs +11 -2
  91. package/lib/components/VList/VListGroup.mjs.map +1 -1
  92. package/lib/components/VList/VListItem.css +6 -6
  93. package/lib/components/VList/VListItem.mjs +7 -7
  94. package/lib/components/VList/VListItem.mjs.map +1 -1
  95. package/lib/components/VList/VListItem.sass +1 -2
  96. package/lib/components/VMain/VMain.sass +0 -1
  97. package/lib/components/VMenu/VMenu.sass +0 -1
  98. package/lib/components/VMessages/VMessages.sass +0 -1
  99. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +5 -1
  100. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  101. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +0 -1
  102. package/lib/components/VOverlay/VOverlay.sass +0 -1
  103. package/lib/components/VPagination/VPagination.sass +0 -1
  104. package/lib/components/VProgressCircular/VProgressCircular.sass +0 -1
  105. package/lib/components/VProgressLinear/VProgressLinear.sass +0 -1
  106. package/lib/components/VRadioGroup/VRadioGroup.mjs +4 -1
  107. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  108. package/lib/components/VRating/VRating.sass +0 -1
  109. package/lib/components/VSelect/VSelect.mjs +54 -19
  110. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  111. package/lib/components/VSelect/VSelect.sass +0 -2
  112. package/lib/components/VSelectionControl/VSelectionControl.css +1 -0
  113. package/lib/components/VSelectionControl/VSelectionControl.mjs +6 -5
  114. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  115. package/lib/components/VSelectionControl/VSelectionControl.sass +1 -1
  116. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.sass +0 -1
  117. package/lib/components/VSheet/VSheet.sass +0 -1
  118. package/lib/components/VSlideGroup/VSlideGroup.sass +0 -1
  119. package/lib/components/VSlider/VSlider.sass +0 -2
  120. package/lib/components/VSlider/VSliderThumb.sass +0 -2
  121. package/lib/components/VSlider/VSliderTrack.sass +0 -2
  122. package/lib/components/VSnackbar/VSnackbar.css +5 -5
  123. package/lib/components/VSnackbar/VSnackbar.sass +0 -1
  124. package/lib/components/VSwitch/VSwitch.mjs +8 -2
  125. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  126. package/lib/components/VSwitch/VSwitch.sass +0 -1
  127. package/lib/components/VSystemBar/VSystemBar.sass +0 -1
  128. package/lib/components/VTable/VTable.sass +0 -1
  129. package/lib/components/VTabs/VTab.sass +0 -1
  130. package/lib/components/VTabs/VTabs.sass +0 -1
  131. package/lib/components/VTabs/_variables.scss +1 -1
  132. package/lib/components/VTextField/VTextField.mjs +2 -0
  133. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  134. package/lib/components/VTextField/VTextField.sass +0 -1
  135. package/lib/components/VTextarea/VTextarea.sass +0 -2
  136. package/lib/components/VTimeline/VTimeline.sass +0 -1
  137. package/lib/components/VToolbar/VToolbar.sass +0 -1
  138. package/lib/components/VToolbar/VToolbarItems.mjs +1 -1
  139. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  140. package/lib/components/VTooltip/VTooltip.sass +0 -1
  141. package/lib/components/VWindow/VWindow.sass +0 -2
  142. package/lib/components/VWindow/VWindowItem.mjs +9 -3
  143. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  144. package/lib/components/index.d.ts +2520 -342
  145. package/lib/composables/display.mjs +13 -11
  146. package/lib/composables/display.mjs.map +1 -1
  147. package/lib/composables/form.mjs +6 -6
  148. package/lib/composables/form.mjs.map +1 -1
  149. package/lib/composables/items.mjs +2 -2
  150. package/lib/composables/items.mjs.map +1 -1
  151. package/lib/composables/ssrBoot.mjs +3 -2
  152. package/lib/composables/ssrBoot.mjs.map +1 -1
  153. package/lib/composables/theme.mjs +6 -2
  154. package/lib/composables/theme.mjs.map +1 -1
  155. package/lib/composables/validation.mjs +14 -7
  156. package/lib/composables/validation.mjs.map +1 -1
  157. package/lib/composables/variant.mjs +3 -3
  158. package/lib/composables/variant.mjs.map +1 -1
  159. package/lib/directives/ripple/VRipple.sass +0 -1
  160. package/lib/entry-bundler.mjs +1 -1
  161. package/lib/framework.mjs +23 -6
  162. package/lib/framework.mjs.map +1 -1
  163. package/lib/index.d.ts +73 -67
  164. package/lib/styles/tools/_variant.sass +6 -6
  165. package/lib/util/getCurrentInstance.mjs +19 -0
  166. package/lib/util/getCurrentInstance.mjs.map +1 -1
  167. package/lib/util/helpers.mjs +0 -4
  168. package/lib/util/helpers.mjs.map +1 -1
  169. package/package.json +11 -3
@@ -1 +1 @@
1
- {"version":3,"file":"VNavigationDrawer.mjs","names":["makeBorderProps","useBorder","makeElevationProps","useElevation","makeLayoutItemProps","useLayoutItem","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","useBackgroundColor","useDisplay","useProxiedModel","useRouter","useTouch","computed","onBeforeMount","ref","toRef","Transition","watch","convertToUnit","defineComponent","VNavigationDrawer","name","props","color","String","disableResizeWatcher","Boolean","disableRouteWatcher","expandOnHover","floating","modelValue","type","default","permanent","rail","railWidth","Number","image","temporary","touchless","width","location","validator","value","includes","tag","emits","val","setup","attrs","slots","themeClasses","borderClasses","backgroundColorClasses","backgroundColorStyles","elevationClasses","mobile","roundedClasses","router","isActive","v","isHovering","isTemporary","currentRoute","rootEl","isDragging","dragProgress","dragStyles","position","layoutSize","size","layoutItemStyles","layoutRect","layoutItemScrimStyles","id","order","parseInt","elementSize","active","disableTransitions","absolute","scrimStyles","opacity","transition","undefined","left","right","top","bottom","hasImage","prepend","append"],"sources":["../../../src/components/VNavigationDrawer/VNavigationDrawer.tsx"],"sourcesContent":["// Styles\nimport './VNavigationDrawer.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useDisplay } from '@/composables/display'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRouter } from '@/composables/router'\nimport { useTouch } from './touch'\n\n// Utilities\nimport { computed, onBeforeMount, ref, toRef, Transition, watch } from 'vue'\nimport { convertToUnit, defineComponent } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VNavigationDrawer = defineComponent({\n name: 'VNavigationDrawer',\n\n props: {\n color: String,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n permanent: Boolean,\n rail: Boolean,\n railWidth: {\n type: [Number, String],\n default: 72,\n },\n image: String,\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n location: {\n type: String as PropType<'left' | 'right' | 'bottom'>,\n default: 'left',\n validator: (value: any) => ['left', 'right', 'bottom'].includes(value),\n },\n\n ...makeBorderProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n },\n\n emits: {\n 'update:modelValue': (val: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { elevationClasses } = useElevation(props)\n const { mobile } = useDisplay()\n const { roundedClasses } = useRounded(props)\n const router = useRouter()\n const isActive = useProxiedModel(props, 'modelValue', null, v => !!v)\n const isHovering = ref(false)\n const width = computed(() => {\n return (props.rail && props.expandOnHover && isHovering.value)\n ? Number(props.width)\n : Number(props.rail ? props.railWidth : props.width)\n })\n const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary))\n\n if (!props.disableResizeWatcher) {\n watch(isTemporary, val => !props.permanent && (isActive.value = !val))\n }\n\n if (!props.disableRouteWatcher && router) {\n watch(router.currentRoute, () => isTemporary.value && (isActive.value = false))\n }\n\n watch(() => props.permanent, val => {\n if (val) isActive.value = true\n })\n\n onBeforeMount(() => {\n if (props.modelValue != null || isTemporary.value) return\n\n isActive.value = props.permanent || !mobile.value\n })\n\n const rootEl = ref<HTMLElement>()\n\n const { isDragging, dragProgress, dragStyles } = useTouch({\n isActive,\n isTemporary,\n width,\n touchless: toRef(props, 'touchless'),\n position: toRef(props, 'location'),\n })\n\n const layoutSize = computed(() => {\n const size = isTemporary.value ? 0\n : props.rail && props.expandOnHover ? Number(props.railWidth)\n : width.value\n\n return isDragging.value ? size * dragProgress.value : size\n })\n const { layoutItemStyles, layoutRect, layoutItemScrimStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(props, 'location'),\n layoutSize,\n elementSize: width,\n active: computed(() => isActive.value || isDragging.value),\n disableTransitions: computed(() => isDragging.value),\n absolute: toRef(props, 'absolute'),\n })\n\n const scrimStyles = computed(() => ({\n ...isDragging.value ? {\n opacity: dragProgress.value * 0.2,\n transition: 'none',\n } : undefined,\n ...layoutRect.value ? {\n left: convertToUnit(layoutRect.value.left),\n right: convertToUnit(layoutRect.value.right),\n top: convertToUnit(layoutRect.value.top),\n bottom: convertToUnit(layoutRect.value.bottom),\n } : undefined,\n ...layoutItemScrimStyles.value,\n }))\n\n return () => {\n const hasImage = (slots.image || props.image)\n\n return (\n <>\n <props.tag\n ref={ rootEl }\n onMouseenter={ () => (isHovering.value = true) }\n onMouseleave={ () => (isHovering.value = false) }\n class={[\n 'v-navigation-drawer',\n {\n 'v-navigation-drawer--bottom': props.location === 'bottom',\n 'v-navigation-drawer--end': props.location === 'right',\n 'v-navigation-drawer--expand-on-hover': props.expandOnHover,\n 'v-navigation-drawer--floating': props.floating,\n 'v-navigation-drawer--is-hovering': isHovering.value,\n 'v-navigation-drawer--rail': props.rail,\n 'v-navigation-drawer--start': props.location === 'left',\n 'v-navigation-drawer--temporary': isTemporary.value,\n 'v-navigation-drawer--active': isActive.value,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n layoutItemStyles.value,\n dragStyles.value,\n ]}\n { ...attrs }\n >\n { hasImage && (\n <div class=\"v-navigation-drawer__img\">\n { slots.image\n ? slots.image?.({ image: props.image })\n : (<img src={ props.image } alt=\"\" />)\n }\n </div>\n )}\n\n { slots.prepend && (\n <div class=\"v-navigation-drawer__prepend\">\n { slots.prepend?.() }\n </div>\n )}\n\n <div class=\"v-navigation-drawer__content\">\n { slots.default?.() }\n </div>\n\n { slots.append && (\n <div class=\"v-navigation-drawer__append\">\n { slots.append?.() }\n </div>\n )}\n </props.tag>\n\n <Transition name=\"fade-transition\">\n { isTemporary.value && (isDragging.value || isActive.value) && (\n <div\n class=\"v-navigation-drawer__scrim\"\n style={ scrimStyles.value }\n onClick={ () => isActive.value = false }\n />\n )}\n </Transition>\n </>\n )\n }\n },\n})\n\nexport type VNavigationDrawer = InstanceType<typeof VNavigationDrawer>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VNavigationDrawer.mjs","names":["makeBorderProps","useBorder","makeElevationProps","useElevation","makeLayoutItemProps","useLayoutItem","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","useBackgroundColor","useDisplay","useProxiedModel","useRouter","useSsrBoot","useTouch","computed","onBeforeMount","ref","toRef","Transition","watch","convertToUnit","defineComponent","VNavigationDrawer","name","props","color","String","disableResizeWatcher","Boolean","disableRouteWatcher","expandOnHover","floating","modelValue","type","default","permanent","rail","railWidth","Number","image","temporary","touchless","width","location","validator","value","includes","tag","emits","val","setup","attrs","slots","themeClasses","borderClasses","backgroundColorClasses","backgroundColorStyles","elevationClasses","mobile","roundedClasses","router","isActive","v","isHovering","ssrBootStyles","isTemporary","currentRoute","rootEl","isDragging","dragProgress","dragStyles","position","layoutSize","size","layoutItemStyles","layoutRect","layoutItemScrimStyles","id","order","parseInt","elementSize","active","disableTransitions","absolute","scrimStyles","opacity","transition","undefined","left","right","top","bottom","hasImage","prepend","append"],"sources":["../../../src/components/VNavigationDrawer/VNavigationDrawer.tsx"],"sourcesContent":["// Styles\nimport './VNavigationDrawer.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useDisplay } from '@/composables/display'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRouter } from '@/composables/router'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { useTouch } from './touch'\n\n// Utilities\nimport { computed, onBeforeMount, ref, toRef, Transition, watch } from 'vue'\nimport { convertToUnit, defineComponent } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VNavigationDrawer = defineComponent({\n name: 'VNavigationDrawer',\n\n props: {\n color: String,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n permanent: Boolean,\n rail: Boolean,\n railWidth: {\n type: [Number, String],\n default: 72,\n },\n image: String,\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n location: {\n type: String as PropType<'left' | 'right' | 'bottom'>,\n default: 'left',\n validator: (value: any) => ['left', 'right', 'bottom'].includes(value),\n },\n\n ...makeBorderProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n },\n\n emits: {\n 'update:modelValue': (val: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { elevationClasses } = useElevation(props)\n const { mobile } = useDisplay()\n const { roundedClasses } = useRounded(props)\n const router = useRouter()\n const isActive = useProxiedModel(props, 'modelValue', null, v => !!v)\n const isHovering = ref(false)\n const { ssrBootStyles } = useSsrBoot()\n const width = computed(() => {\n return (props.rail && props.expandOnHover && isHovering.value)\n ? Number(props.width)\n : Number(props.rail ? props.railWidth : props.width)\n })\n const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary))\n\n if (!props.disableResizeWatcher) {\n watch(isTemporary, val => !props.permanent && (isActive.value = !val))\n }\n\n if (!props.disableRouteWatcher && router) {\n watch(router.currentRoute, () => isTemporary.value && (isActive.value = false))\n }\n\n watch(() => props.permanent, val => {\n if (val) isActive.value = true\n })\n\n onBeforeMount(() => {\n if (props.modelValue != null || isTemporary.value) return\n\n isActive.value = props.permanent || !mobile.value\n })\n\n const rootEl = ref<HTMLElement>()\n\n const { isDragging, dragProgress, dragStyles } = useTouch({\n isActive,\n isTemporary,\n width,\n touchless: toRef(props, 'touchless'),\n position: toRef(props, 'location'),\n })\n\n const layoutSize = computed(() => {\n const size = isTemporary.value ? 0\n : props.rail && props.expandOnHover ? Number(props.railWidth)\n : width.value\n\n return isDragging.value ? size * dragProgress.value : size\n })\n const { layoutItemStyles, layoutRect, layoutItemScrimStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(props, 'location'),\n layoutSize,\n elementSize: width,\n active: computed(() => isActive.value || isDragging.value),\n disableTransitions: computed(() => isDragging.value),\n absolute: toRef(props, 'absolute'),\n })\n\n const scrimStyles = computed(() => ({\n ...isDragging.value ? {\n opacity: dragProgress.value * 0.2,\n transition: 'none',\n } : undefined,\n ...layoutRect.value ? {\n left: convertToUnit(layoutRect.value.left),\n right: convertToUnit(layoutRect.value.right),\n top: convertToUnit(layoutRect.value.top),\n bottom: convertToUnit(layoutRect.value.bottom),\n } : undefined,\n ...layoutItemScrimStyles.value,\n }))\n\n return () => {\n const hasImage = (slots.image || props.image)\n\n return (\n <>\n <props.tag\n ref={ rootEl }\n onMouseenter={ () => (isHovering.value = true) }\n onMouseleave={ () => (isHovering.value = false) }\n class={[\n 'v-navigation-drawer',\n {\n 'v-navigation-drawer--bottom': props.location === 'bottom',\n 'v-navigation-drawer--end': props.location === 'right',\n 'v-navigation-drawer--expand-on-hover': props.expandOnHover,\n 'v-navigation-drawer--floating': props.floating,\n 'v-navigation-drawer--is-hovering': isHovering.value,\n 'v-navigation-drawer--rail': props.rail,\n 'v-navigation-drawer--start': props.location === 'left',\n 'v-navigation-drawer--temporary': isTemporary.value,\n 'v-navigation-drawer--active': isActive.value,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n layoutItemStyles.value,\n dragStyles.value,\n ssrBootStyles.value,\n ]}\n { ...attrs }\n >\n { hasImage && (\n <div class=\"v-navigation-drawer__img\">\n { slots.image\n ? slots.image?.({ image: props.image })\n : (<img src={ props.image } alt=\"\" />)\n }\n </div>\n )}\n\n { slots.prepend && (\n <div class=\"v-navigation-drawer__prepend\">\n { slots.prepend?.() }\n </div>\n )}\n\n <div class=\"v-navigation-drawer__content\">\n { slots.default?.() }\n </div>\n\n { slots.append && (\n <div class=\"v-navigation-drawer__append\">\n { slots.append?.() }\n </div>\n )}\n </props.tag>\n\n <Transition name=\"fade-transition\">\n { isTemporary.value && (isDragging.value || isActive.value) && (\n <div\n class=\"v-navigation-drawer__scrim\"\n style={ scrimStyles.value }\n onClick={ () => isActive.value = false }\n />\n )}\n </Transition>\n </>\n )\n }\n },\n})\n\nexport type VNavigationDrawer = InstanceType<typeof VNavigationDrawer>\n"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use '../../styles/tools'
3
2
  @use './variables' as *
4
3
 
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use 'sass:selector'
3
2
  @use './variables' as *
4
3
 
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use './variables' as *
3
2
 
4
3
  .v-pagination
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use 'sass:list'
3
2
  @use '../../styles/settings'
4
3
  @use './variables' as *
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use '../../styles/tools'
3
2
  @use './variables' as *
4
3
 
@@ -54,9 +54,12 @@ export const VRadioGroup = defineComponent({
54
54
  }) : props.label;
55
55
  return _createVNode(VInput, _mergeProps({
56
56
  "class": "v-radio-group"
57
- }, inputAttrs, inputProps), { ...slots,
57
+ }, inputAttrs, inputProps, {
58
+ "id": id.value
59
+ }), { ...slots,
58
60
  default: _ref2 => {
59
61
  let {
62
+ id,
60
63
  isDisabled,
61
64
  isReadonly
62
65
  } = _ref2;
@@ -1 +1 @@
1
- {"version":3,"file":"VRadioGroup.mjs","names":["filterInputProps","makeVInputProps","VInput","VLabel","VSelectionControlGroup","filterControlProps","makeSelectionControlProps","IconValue","computed","defineComponent","filterInputAttrs","getUid","useRender","VRadioGroup","name","inheritAttrs","props","height","type","Number","String","default","trueIcon","falseIcon","setup","attrs","slots","uid","id","inputAttrs","controlAttrs","inputProps","_1","controlProps","_2","label","for","value","isDisabled","isReadonly"],"sources":["../../../src/components/VRadioGroup/VRadioGroup.tsx"],"sourcesContent":["// Styles\nimport './VRadioGroup.sass'\n\n// Components\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { VSelectionControlGroup } from '@/components/VSelectionControlGroup'\nimport { filterControlProps, makeSelectionControlProps } from '@/components/VSelectionControl/VSelectionControl'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed } from 'vue'\nimport { defineComponent, filterInputAttrs, getUid, useRender } from '@/util'\n\nexport const VRadioGroup = defineComponent({\n name: 'VRadioGroup',\n\n inheritAttrs: false,\n\n props: {\n height: {\n type: [Number, String],\n default: 'auto',\n },\n\n ...makeVInputProps(),\n ...makeSelectionControlProps(),\n\n trueIcon: {\n type: IconValue,\n default: '$radioOn',\n },\n falseIcon: {\n type: IconValue,\n default: '$radioOff',\n },\n type: {\n type: String,\n default: 'radio',\n },\n },\n\n setup (props, { attrs, slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `radio-group-${uid}`)\n\n useRender(() => {\n const [inputAttrs, controlAttrs] = filterInputAttrs(attrs)\n const [inputProps, _1] = filterInputProps(props)\n const [controlProps, _2] = filterControlProps(props)\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n <VInput\n class=\"v-radio-group\"\n { ...inputAttrs }\n { ...inputProps }\n >\n {{\n ...slots,\n default: ({\n isDisabled,\n isReadonly,\n }) => (\n <>\n { label && (\n <VLabel for={ id.value }>\n { label }\n </VLabel>\n ) }\n\n <VSelectionControlGroup\n { ...controlProps }\n id={ id.value }\n trueIcon={ props.trueIcon }\n falseIcon={ props.falseIcon }\n type={ props.type }\n disabled={ isDisabled.value }\n readonly={ isReadonly.value }\n { ...controlAttrs }\n v-slots={ slots }\n />\n </>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n"],"mappings":";AAAA;AACA,2B,CAEA;;SACSA,gB,EAAkBC,e,EAAiBC,M;SACnCC,M;SACAC,sB;SACAC,kB,EAAoBC,yB,sDAE7B;;SACSC,S,uCAET;;AACA,SAASC,QAAT,QAAyB,KAAzB;SACSC,e,EAAiBC,gB,EAAkBC,M,EAAQC,S;AAEpD,OAAO,MAAMC,WAAW,GAAGJ,eAAe,CAAC;EACzCK,IAAI,EAAE,aADmC;EAGzCC,YAAY,EAAE,KAH2B;EAKzCC,KAAK,EAAE;IACLC,MAAM,EAAE;MACNC,IAAI,EAAE,CAACC,MAAD,EAASC,MAAT,CADA;MAENC,OAAO,EAAE;IAFH,CADH;IAML,GAAGpB,eAAe,EANb;IAOL,GAAGK,yBAAyB,EAPvB;IASLgB,QAAQ,EAAE;MACRJ,IAAI,EAAEX,SADE;MAERc,OAAO,EAAE;IAFD,CATL;IAaLE,SAAS,EAAE;MACTL,IAAI,EAAEX,SADG;MAETc,OAAO,EAAE;IAFA,CAbN;IAiBLH,IAAI,EAAE;MACJA,IAAI,EAAEE,MADF;MAEJC,OAAO,EAAE;IAFL;EAjBD,CALkC;;EA4BzCG,KAAK,CAAER,KAAF,QAA2B;IAAA,IAAlB;MAAES,KAAF;MAASC;IAAT,CAAkB;IAC9B,MAAMC,GAAG,GAAGhB,MAAM,EAAlB;IACA,MAAMiB,EAAE,GAAGpB,QAAQ,CAAC,MAAMQ,KAAK,CAACY,EAAN,IAAa,eAAcD,GAAI,EAAtC,CAAnB;IAEAf,SAAS,CAAC,MAAM;MACd,MAAM,CAACiB,UAAD,EAAaC,YAAb,IAA6BpB,gBAAgB,CAACe,KAAD,CAAnD;MACA,MAAM,CAACM,UAAD,EAAaC,EAAb,IAAmBhC,gBAAgB,CAACgB,KAAD,CAAzC;MACA,MAAM,CAACiB,YAAD,EAAeC,EAAf,IAAqB7B,kBAAkB,CAACW,KAAD,CAA7C;MACA,MAAMmB,KAAK,GAAGT,KAAK,CAACS,KAAN,GACVT,KAAK,CAACS,KAAN,CAAY;QACZA,KAAK,EAAEnB,KAAK,CAACmB,KADD;QAEZnB,KAAK,EAAE;UAAEoB,GAAG,EAAER,EAAE,CAACS;QAAV;MAFK,CAAZ,CADU,GAKVrB,KAAK,CAACmB,KALV;MAOA;QAAA,SAEU;MAFV,GAGSN,UAHT,EAISE,UAJT,KAOM,GAAGL,KAPT;QAQML,OAAO,EAAE;UAAA,IAAC;YACRiB,UADQ;YAERC;UAFQ,CAAD;UAAA,sCAKHJ,KAAK;YAAA,OACSP,EAAE,CAACS;UADZ;YAAA,gBAEDF,KAFC;UAAA,EALF,mDAYEF,YAZF;YAAA,MAaEL,EAAE,CAACS,KAbL;YAAA,YAcQrB,KAAK,CAACM,QAdd;YAAA,aAeSN,KAAK,CAACO,SAff;YAAA,QAgBIP,KAAK,CAACE,IAhBV;YAAA,YAiBQoB,UAAU,CAACD,KAjBnB;YAAA,YAkBQE,UAAU,CAACF;UAlBnB,GAmBEP,YAnBF,GAoBOJ,KApBP;QAAA;MARf;IAmCD,CA9CQ,CAAT;IAgDA,OAAO,EAAP;EACD;;AAjFwC,CAAD,CAAnC"}
1
+ {"version":3,"file":"VRadioGroup.mjs","names":["filterInputProps","makeVInputProps","VInput","VLabel","VSelectionControlGroup","filterControlProps","makeSelectionControlProps","IconValue","computed","defineComponent","filterInputAttrs","getUid","useRender","VRadioGroup","name","inheritAttrs","props","height","type","Number","String","default","trueIcon","falseIcon","setup","attrs","slots","uid","id","inputAttrs","controlAttrs","inputProps","_1","controlProps","_2","label","for","value","isDisabled","isReadonly"],"sources":["../../../src/components/VRadioGroup/VRadioGroup.tsx"],"sourcesContent":["// Styles\nimport './VRadioGroup.sass'\n\n// Components\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { VSelectionControlGroup } from '@/components/VSelectionControlGroup'\nimport { filterControlProps, makeSelectionControlProps } from '@/components/VSelectionControl/VSelectionControl'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed } from 'vue'\nimport { defineComponent, filterInputAttrs, getUid, useRender } from '@/util'\n\nexport const VRadioGroup = defineComponent({\n name: 'VRadioGroup',\n\n inheritAttrs: false,\n\n props: {\n height: {\n type: [Number, String],\n default: 'auto',\n },\n\n ...makeVInputProps(),\n ...makeSelectionControlProps(),\n\n trueIcon: {\n type: IconValue,\n default: '$radioOn',\n },\n falseIcon: {\n type: IconValue,\n default: '$radioOff',\n },\n type: {\n type: String,\n default: 'radio',\n },\n },\n\n setup (props, { attrs, slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `radio-group-${uid}`)\n\n useRender(() => {\n const [inputAttrs, controlAttrs] = filterInputAttrs(attrs)\n const [inputProps, _1] = filterInputProps(props)\n const [controlProps, _2] = filterControlProps(props)\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n <VInput\n class=\"v-radio-group\"\n { ...inputAttrs }\n { ...inputProps }\n id={ id.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isReadonly,\n }) => (\n <>\n { label && (\n <VLabel for={ id.value }>\n { label }\n </VLabel>\n ) }\n\n <VSelectionControlGroup\n { ...controlProps }\n id={ id.value }\n trueIcon={ props.trueIcon }\n falseIcon={ props.falseIcon }\n type={ props.type }\n disabled={ isDisabled.value }\n readonly={ isReadonly.value }\n { ...controlAttrs }\n v-slots={ slots }\n />\n </>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n"],"mappings":";AAAA;AACA,2B,CAEA;;SACSA,gB,EAAkBC,e,EAAiBC,M;SACnCC,M;SACAC,sB;SACAC,kB,EAAoBC,yB,sDAE7B;;SACSC,S,uCAET;;AACA,SAASC,QAAT,QAAyB,KAAzB;SACSC,e,EAAiBC,gB,EAAkBC,M,EAAQC,S;AAEpD,OAAO,MAAMC,WAAW,GAAGJ,eAAe,CAAC;EACzCK,IAAI,EAAE,aADmC;EAGzCC,YAAY,EAAE,KAH2B;EAKzCC,KAAK,EAAE;IACLC,MAAM,EAAE;MACNC,IAAI,EAAE,CAACC,MAAD,EAASC,MAAT,CADA;MAENC,OAAO,EAAE;IAFH,CADH;IAML,GAAGpB,eAAe,EANb;IAOL,GAAGK,yBAAyB,EAPvB;IASLgB,QAAQ,EAAE;MACRJ,IAAI,EAAEX,SADE;MAERc,OAAO,EAAE;IAFD,CATL;IAaLE,SAAS,EAAE;MACTL,IAAI,EAAEX,SADG;MAETc,OAAO,EAAE;IAFA,CAbN;IAiBLH,IAAI,EAAE;MACJA,IAAI,EAAEE,MADF;MAEJC,OAAO,EAAE;IAFL;EAjBD,CALkC;;EA4BzCG,KAAK,CAAER,KAAF,QAA2B;IAAA,IAAlB;MAAES,KAAF;MAASC;IAAT,CAAkB;IAC9B,MAAMC,GAAG,GAAGhB,MAAM,EAAlB;IACA,MAAMiB,EAAE,GAAGpB,QAAQ,CAAC,MAAMQ,KAAK,CAACY,EAAN,IAAa,eAAcD,GAAI,EAAtC,CAAnB;IAEAf,SAAS,CAAC,MAAM;MACd,MAAM,CAACiB,UAAD,EAAaC,YAAb,IAA6BpB,gBAAgB,CAACe,KAAD,CAAnD;MACA,MAAM,CAACM,UAAD,EAAaC,EAAb,IAAmBhC,gBAAgB,CAACgB,KAAD,CAAzC;MACA,MAAM,CAACiB,YAAD,EAAeC,EAAf,IAAqB7B,kBAAkB,CAACW,KAAD,CAA7C;MACA,MAAMmB,KAAK,GAAGT,KAAK,CAACS,KAAN,GACVT,KAAK,CAACS,KAAN,CAAY;QACZA,KAAK,EAAEnB,KAAK,CAACmB,KADD;QAEZnB,KAAK,EAAE;UAAEoB,GAAG,EAAER,EAAE,CAACS;QAAV;MAFK,CAAZ,CADU,GAKVrB,KAAK,CAACmB,KALV;MAOA;QAAA,SAEU;MAFV,GAGSN,UAHT,EAISE,UAJT;QAAA,MAKSH,EAAE,CAACS;MALZ,MAQM,GAAGX,KART;QASML,OAAO,EAAE;UAAA,IAAC;YACRO,EADQ;YAERU,UAFQ;YAGRC;UAHQ,CAAD;UAAA,sCAMHJ,KAAK;YAAA,OACSP,EAAE,CAACS;UADZ;YAAA,gBAEDF,KAFC;UAAA,EANF,mDAaEF,YAbF;YAAA,MAcEL,EAAE,CAACS,KAdL;YAAA,YAeQrB,KAAK,CAACM,QAfd;YAAA,aAgBSN,KAAK,CAACO,SAhBf;YAAA,QAiBIP,KAAK,CAACE,IAjBV;YAAA,YAkBQoB,UAAU,CAACD,KAlBnB;YAAA,YAmBQE,UAAU,CAACF;UAnBnB,GAoBEP,YApBF,GAqBOJ,KArBP;QAAA;MATf;IAqCD,CAhDQ,CAAT;IAkDA,OAAO,EAAP;EACD;;AAnFwC,CAAD,CAAnC"}
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use './variables' as *
3
2
 
4
3
  .v-rating
@@ -3,6 +3,7 @@ import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createV
3
3
  import "./VSelect.css"; // Components
4
4
 
5
5
  import { VDialogTransition } from "../transitions/index.mjs";
6
+ import { VCheckboxBtn } from "../VCheckbox/index.mjs";
6
7
  import { VChip } from "../VChip/index.mjs";
7
8
  import { VDefaultsProvider } from "../VDefaultsProvider/index.mjs";
8
9
  import { VList, VListItem } from "../VList/index.mjs";
@@ -16,7 +17,7 @@ import { useLocale } from "../../composables/locale.mjs";
16
17
  import { useProxiedModel } from "../../composables/proxiedModel.mjs";
17
18
  import { IconValue } from "../../composables/icons.mjs"; // Utility
18
19
 
19
- import { computed, ref } from 'vue';
20
+ import { computed, mergeProps, ref } from 'vue';
20
21
  import { genericComponent, propsFactory, useRender, wrapInArray } from "../../util/index.mjs"; // Types
21
22
 
22
23
  export const makeSelectProps = propsFactory({
@@ -25,10 +26,14 @@ export const makeSelectProps = propsFactory({
25
26
  eager: Boolean,
26
27
  hideNoData: Boolean,
27
28
  hideSelected: Boolean,
29
+ menu: Boolean,
28
30
  menuIcon: {
29
31
  type: IconValue,
30
32
  default: '$dropdown'
31
33
  },
34
+ menuProps: {
35
+ type: Object
36
+ },
32
37
  modelValue: {
33
38
  type: null,
34
39
  default: () => []
@@ -53,7 +58,8 @@ export const VSelect = genericComponent()({
53
58
  })
54
59
  },
55
60
  emits: {
56
- 'update:modelValue': val => true
61
+ 'update:modelValue': val => true,
62
+ 'update:menu': val => true
57
63
  },
58
64
 
59
65
  setup(props, _ref) {
@@ -64,15 +70,17 @@ export const VSelect = genericComponent()({
64
70
  t
65
71
  } = useLocale();
66
72
  const vTextFieldRef = ref();
67
- const menu = ref(false);
73
+ const menu = useProxiedModel(props, 'menu');
68
74
  const {
69
75
  items,
70
76
  transformIn,
71
77
  transformOut
72
78
  } = useItems(props);
73
79
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {
80
+ var _transformed$;
81
+
74
82
  const transformed = transformOut(v);
75
- return props.multiple ? transformed : transformed[0];
83
+ return props.multiple ? transformed : (_transformed$ = transformed[0]) != null ? _transformed$ : null;
76
84
  });
77
85
  const selections = computed(() => {
78
86
  return model.value.map(v => {
@@ -125,6 +133,11 @@ export const VSelect = genericComponent()({
125
133
  const hasChips = !!(props.chips || slots.chip);
126
134
  return _createVNode(VTextField, {
127
135
  "ref": vTextFieldRef,
136
+ "modelValue": model.value.map(v => v.props.value).join(', '),
137
+ "onUpdate:modelValue": v => {
138
+ if (v == null) model.value = [];
139
+ },
140
+ "validationValue": props.modelValue,
128
141
  "class": ['v-select', {
129
142
  'v-select--active-menu': menu.value,
130
143
  'v-select--chips': !!props.chips,
@@ -136,37 +149,56 @@ export const VSelect = genericComponent()({
136
149
  "onClick:input": onClickControl,
137
150
  "onClick:control": onClickControl,
138
151
  "onBlur": () => menu.value = false,
139
- "modelValue": model.value.map(v => v.props.value).join(', '),
140
152
  "onKeydown": onKeydown
141
153
  }, { ...slots,
142
154
  default: () => {
143
155
  var _slots$noData, _slots$noData2;
144
156
 
145
- return _createVNode(_Fragment, null, [_createVNode(VMenu, {
157
+ return _createVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({
146
158
  "modelValue": menu.value,
147
159
  "onUpdate:modelValue": $event => menu.value = $event,
148
160
  "activator": "parent",
149
161
  "contentClass": "v-select__content",
150
162
  "eager": props.eager,
151
163
  "openOnClick": false,
164
+ "closeOnContentClick": false,
152
165
  "transition": props.transition
153
- }, {
166
+ }, props.menuProps), {
154
167
  default: () => [_createVNode(VList, {
155
168
  "selected": selected.value,
156
- "selectStrategy": props.multiple ? 'independent' : 'single-independent'
169
+ "selectStrategy": props.multiple ? 'independent' : 'single-independent',
170
+ "onMousedown": e => e.preventDefault()
157
171
  }, {
158
172
  default: () => [!items.value.length && !props.hideNoData && ((_slots$noData = (_slots$noData2 = slots['no-data']) == null ? void 0 : _slots$noData2.call(slots)) != null ? _slots$noData : _createVNode(VListItem, {
159
173
  "title": t(props.noDataText)
160
- }, null)), items.value.map(item => _createVNode(VListItem, _mergeProps(item.props, {
161
- "onMousedown": e => e.preventDefault(),
162
- "onClick": () => select(item)
163
- }), null))]
174
+ }, null)), items.value.map(item => {
175
+ var _slots$item, _slots$item2;
176
+
177
+ return (_slots$item = (_slots$item2 = slots.item) == null ? void 0 : _slots$item2.call(slots, {
178
+ item,
179
+ props: mergeProps(item.props, {
180
+ onClick: () => select(item)
181
+ })
182
+ })) != null ? _slots$item : _createVNode(VListItem, _mergeProps(item.props, {
183
+ "onClick": () => select(item)
184
+ }), {
185
+ prepend: _ref2 => {
186
+ let {
187
+ isSelected
188
+ } = _ref2;
189
+ return props.multiple ? _createVNode(VCheckboxBtn, {
190
+ "modelValue": isSelected,
191
+ "ripple": false
192
+ }, null) : undefined;
193
+ }
194
+ });
195
+ })]
164
196
  })]
165
- }), selections.value.map((selection, index) => {
197
+ }), selections.value.map((item, index) => {
166
198
  function onChipClose(e) {
167
199
  e.stopPropagation();
168
200
  e.preventDefault();
169
- select(selection);
201
+ select(item);
170
202
  }
171
203
 
172
204
  const slotProps = {
@@ -180,28 +212,31 @@ export const VSelect = genericComponent()({
180
212
  VChip: {
181
213
  closable: props.closableChips,
182
214
  size: 'small',
183
- text: selection.props.title
215
+ text: item.title
184
216
  }
185
217
  }
186
218
  }, {
187
219
  default: () => [slots.chip ? slots.chip({
188
220
  props: slotProps,
189
- selection,
221
+ item,
190
222
  index
191
223
  }) : _createVNode(VChip, slotProps, null)]
192
224
  }) : slots.selection ? slots.selection({
193
- item: selection.originalItem,
225
+ item,
194
226
  index
195
227
  }) : _createVNode("span", {
196
228
  "class": "v-select__selection-text"
197
- }, [selection.props.title, props.multiple && index < selections.value.length - 1 && _createVNode("span", {
229
+ }, [item.title, props.multiple && index < selections.value.length - 1 && _createVNode("span", {
198
230
  "class": "v-select__selection-comma"
199
231
  }, [_createTextVNode(",")])])]);
200
232
  })]);
201
233
  }
202
234
  });
203
235
  });
204
- return useForwardRef({}, vTextFieldRef);
236
+ return useForwardRef({
237
+ menu,
238
+ select
239
+ }, vTextFieldRef);
205
240
  }
206
241
 
207
242
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VSelect.mjs","names":["VDialogTransition","VChip","VDefaultsProvider","VList","VListItem","VMenu","VTextField","makeItemsProps","useItems","makeTransitionProps","useForwardRef","useLocale","useProxiedModel","IconValue","computed","ref","genericComponent","propsFactory","useRender","wrapInArray","makeSelectProps","chips","Boolean","closableChips","eager","hideNoData","hideSelected","menuIcon","type","default","modelValue","multiple","noDataText","String","openOnClear","itemChildren","VSelect","name","props","transition","component","emits","val","setup","slots","t","vTextFieldRef","menu","items","transformIn","transformOut","model","v","transformed","selections","value","map","find","item","selected","selection","onClear","e","onClickControl","length","onKeydown","includes","key","select","index","findIndex","splice","hasChips","chip","join","preventDefault","onChipClose","stopPropagation","slotProps","closable","size","text","title","originalItem"],"sources":["../../../src/components/VSelect/VSelect.tsx"],"sourcesContent":["// Styles\nimport './VSelect.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { makeItemsProps, useItems } from '@/composables/items'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useForwardRef } from '@/composables/forwardRef'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { IconValue } from '@/composables/icons'\n\n// Utility\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { InternalItem } from '@/composables/items'\nimport type { MakeSlots } from '@/util'\n\nexport const makeSelectProps = propsFactory({\n chips: Boolean,\n closableChips: Boolean,\n eager: Boolean,\n hideNoData: Boolean,\n hideSelected: Boolean,\n menuIcon: {\n type: IconValue,\n default: '$dropdown',\n },\n modelValue: {\n type: null,\n default: () => ([]),\n },\n multiple: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n openOnClear: Boolean,\n\n ...makeItemsProps({ itemChildren: false }),\n}, 'select')\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 ? Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const VSelect = 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>() => {\n $props: {\n items?: readonly T[]\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: Readonly<V>\n 'onUpdate:modelValue'?: (val: V) => void\n }\n $slots: VInputSlots & VFieldSlots & MakeSlots<{\n chip: [{ item: T, index: number, props: Record<string, unknown> }]\n selection: [{ item: T, index: number }]\n 'no-data': []\n }>\n}>()({\n name: 'VSelect',\n\n props: {\n ...makeSelectProps(),\n ...makeTransitionProps({ transition: { component: VDialogTransition } }),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const menu = ref(false)\n const { items, transformIn, transformOut } = useItems(props)\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]\n }\n )\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => item.value === v.value) || v\n })\n })\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n\n function onClear (e: MouseEvent) {\n model.value = []\n\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onClickControl () {\n if (props.hideNoData && !items.value.length) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n if (['Enter', 'ArrowDown', ' '].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape', 'Tab'].includes(e.key)) {\n menu.value = false\n }\n }\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => 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 menu.value = false\n }\n }\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n class={[\n 'v-select',\n {\n 'v-select--active-menu': menu.value,\n 'v-select--chips': !!props.chips,\n [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,\n },\n ]}\n appendInnerIcon={ props.menuIcon }\n readonly\n onClick:clear={ onClear }\n onClick:input={ onClickControl }\n onClick:control={ onClickControl }\n onBlur={ () => menu.value = false }\n modelValue={ model.value.map(v => v.props.value).join(', ') }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-select__content\"\n eager={ props.eager }\n openOnClick={ false }\n transition={ props.transition }\n >\n <VList\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n >\n { !items.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n )) }\n\n { items.value.map(item => (\n <VListItem\n { ...item.props }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onClick={ () => select(item) }\n />\n )) }\n </VList>\n </VMenu>\n\n { selections.value.map((selection, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(selection)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n }\n\n return (\n <div class=\"v-select__selection\">\n { hasChips ? (\n <VDefaultsProvider\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: selection.props.title,\n },\n }}\n >\n { slots.chip\n ? slots.chip({ props: slotProps, selection, index })\n : (<VChip { ...slotProps } />)\n }\n </VDefaultsProvider>\n ) : (\n slots.selection\n ? slots.selection({ item: selection.originalItem, index })\n : (\n <span class=\"v-select__selection-text\">\n { selection.props.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-select__selection-comma\">,</span>\n ) }\n </span>\n )\n )}\n </div>\n )\n }) }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return useForwardRef({}, vTextFieldRef)\n },\n})\n\nexport type VSelect = InstanceType<typeof VSelect>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VSelect.mjs","names":["VDialogTransition","VCheckboxBtn","VChip","VDefaultsProvider","VList","VListItem","VMenu","VTextField","makeItemsProps","useItems","makeTransitionProps","useForwardRef","useLocale","useProxiedModel","IconValue","computed","mergeProps","ref","genericComponent","propsFactory","useRender","wrapInArray","makeSelectProps","chips","Boolean","closableChips","eager","hideNoData","hideSelected","menu","menuIcon","type","default","menuProps","Object","modelValue","multiple","noDataText","String","openOnClear","itemChildren","VSelect","name","props","transition","component","emits","val","setup","slots","t","vTextFieldRef","items","transformIn","transformOut","model","v","transformed","selections","value","map","find","item","selected","selection","onClear","e","onClickControl","length","onKeydown","includes","key","select","index","findIndex","splice","hasChips","chip","join","preventDefault","onClick","prepend","isSelected","undefined","onChipClose","stopPropagation","slotProps","closable","size","text","title"],"sources":["../../../src/components/VSelect/VSelect.tsx"],"sourcesContent":["// Styles\nimport './VSelect.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { makeItemsProps, useItems } from '@/composables/items'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useForwardRef } from '@/composables/forwardRef'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { IconValue } from '@/composables/icons'\n\n// Utility\nimport { computed, mergeProps, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { InternalItem } from '@/composables/items'\nimport type { MakeSlots } from '@/util'\nimport type { PropType } from 'vue'\n\nexport const makeSelectProps = propsFactory({\n chips: Boolean,\n closableChips: Boolean,\n eager: Boolean,\n hideNoData: Boolean,\n hideSelected: Boolean,\n menu: Boolean,\n menuIcon: {\n type: IconValue,\n default: '$dropdown',\n },\n menuProps: {\n type: Object as PropType<VMenu['$props']>,\n },\n modelValue: {\n type: null,\n default: () => ([]),\n },\n multiple: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n openOnClear: Boolean,\n\n ...makeItemsProps({ itemChildren: false }),\n}, 'select')\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 ? Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const VSelect = 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>() => {\n $props: {\n items?: readonly T[]\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: Readonly<V>\n 'onUpdate:modelValue'?: (val: V) => void\n }\n $slots: VInputSlots & VFieldSlots & MakeSlots<{\n chip: [{ item: T, index: number, props: Record<string, unknown> }]\n selection: [{ item: T, index: number }]\n 'no-data': []\n }>\n}>()({\n name: 'VSelect',\n\n props: {\n ...makeSelectProps(),\n ...makeTransitionProps({ transition: { component: VDialogTransition } }),\n },\n\n emits: {\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 menu = useProxiedModel(props, 'menu')\n const { items, transformIn, transformOut } = useItems(props)\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 selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => item.value === v.value) || v\n })\n })\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n\n function onClear (e: MouseEvent) {\n model.value = []\n\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onClickControl () {\n if (props.hideNoData && !items.value.length) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n if (['Enter', 'ArrowDown', ' '].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape', 'Tab'].includes(e.key)) {\n menu.value = false\n }\n }\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => 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 menu.value = false\n }\n }\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n modelValue={ model.value.map(v => v.props.value).join(', ') }\n onUpdate:modelValue={ v => { if (v == null) model.value = [] } }\n validationValue={ props.modelValue }\n class={[\n 'v-select',\n {\n 'v-select--active-menu': menu.value,\n 'v-select--chips': !!props.chips,\n [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,\n },\n ]}\n appendInnerIcon={ props.menuIcon }\n readonly\n onClick:clear={ onClear }\n onClick:input={ onClickControl }\n onClick:control={ onClickControl }\n onBlur={ () => menu.value = false }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-select__content\"\n eager={ props.eager }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n { ...props.menuProps }\n >\n <VList\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n { !items.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n )) }\n\n { items.value.map(item => slots.item?.({\n item,\n props: mergeProps(item.props, { onClick: () => select(item) }),\n }) ?? (\n <VListItem\n { ...item.props }\n onClick={ () => select(item) }\n >\n {{\n prepend: ({ isSelected }) => props.multiple ? (\n <VCheckboxBtn modelValue={ isSelected } ripple={ false } />\n ) : undefined,\n }}\n </VListItem>\n )) }\n </VList>\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 modelValue: true,\n }\n\n return (\n <div class=\"v-select__selection\">\n { hasChips ? (\n <VDefaultsProvider\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip\n ? slots.chip({ props: slotProps, item, index })\n : (<VChip { ...slotProps } />)\n }\n </VDefaultsProvider>\n ) : (\n slots.selection\n ? slots.selection({ item, index })\n : (\n <span class=\"v-select__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-select__selection-comma\">,</span>\n ) }\n </span>\n )\n )}\n </div>\n )\n }) }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return useForwardRef({\n menu,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VSelect = InstanceType<typeof VSelect>\n"],"mappings":"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"}
@@ -1,10 +1,8 @@
1
- @forward './variables'
2
1
  @use 'sass:selector'
3
2
  @use 'sass:math'
4
3
  @use '../../styles/settings'
5
4
  @use '../../styles/tools'
6
5
  @use './variables' as *
7
- @use '../VInput/variables' as *
8
6
 
9
7
  .v-select
10
8
  .v-field
@@ -23,6 +23,7 @@
23
23
  }
24
24
  .v-selection-control--inline {
25
25
  display: inline-flex;
26
+ flex: 0 0 auto;
26
27
  }
27
28
  .v-selection-control--inline .v-label {
28
29
  width: auto;
@@ -15,7 +15,7 @@ import { IconValue } from "../../composables/icons.mjs"; // Directives
15
15
  import { Ripple } from "../../directives/ripple/index.mjs"; // Utilities
16
16
 
17
17
  import { computed, inject, ref } from 'vue';
18
- import { deepEqual, genericComponent, getUid, pick, propsFactory, SUPPORTS_FOCUS_VISIBLE, useRender, wrapInArray } from "../../util/index.mjs"; // Types
18
+ import { deepEqual, filterInputAttrs, genericComponent, getUid, pick, propsFactory, SUPPORTS_FOCUS_VISIBLE, useRender, wrapInArray } from "../../util/index.mjs"; // Types
19
19
 
20
20
  export const makeSelectionControlProps = propsFactory({
21
21
  color: String,
@@ -156,7 +156,8 @@ export const VSelectionControl = genericComponent()({
156
156
  }
157
157
  }) : props.label;
158
158
  const type = (_group$type$value = group == null ? void 0 : group.type.value) != null ? _group$type$value : props.type;
159
- return _createVNode("div", {
159
+ const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
160
+ return _createVNode("div", _mergeProps({
160
161
  "class": ['v-selection-control', {
161
162
  'v-selection-control--dirty': model.value,
162
163
  'v-selection-control--disabled': props.disabled,
@@ -165,7 +166,7 @@ export const VSelectionControl = genericComponent()({
165
166
  'v-selection-control--focus-visible': isFocusVisible.value,
166
167
  'v-selection-control--inline': (group == null ? void 0 : group.inline.value) || props.inline
167
168
  }, densityClasses.value]
168
- }, [_createVNode("div", {
169
+ }, rootAttrs), [_createVNode("div", {
169
170
  "class": ['v-selection-control__wrapper', textColorClasses.value],
170
171
  "style": textColorStyles.value
171
172
  }, [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots), _withDirectives(_createVNode("div", {
@@ -184,7 +185,7 @@ export const VSelectionControl = genericComponent()({
184
185
  "value": trueValue.value,
185
186
  "name": (_group$name$value = group == null ? void 0 : group.name.value) != null ? _group$name$value : props.name,
186
187
  "aria-checked": type === 'checkbox' ? model.value : undefined
187
- }, attrs), null), [[_vModelDynamic, model.value]]), (_slots$input = slots.input) == null ? void 0 : _slots$input.call(slots, {
188
+ }, inputAttrs), null), [[_vModelDynamic, model.value]]), (_slots$input = slots.input) == null ? void 0 : _slots$input.call(slots, {
188
189
  model,
189
190
  textColorClasses,
190
191
  props: {
@@ -192,7 +193,7 @@ export const VSelectionControl = genericComponent()({
192
193
  onBlur,
193
194
  id: id.value
194
195
  }
195
- })]), [[_resolveDirective("ripple"), props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), _createVNode(VLabel, {
196
+ })]), [[_resolveDirective("ripple"), props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), label && _createVNode(VLabel, {
196
197
  "for": id.value
197
198
  }, {
198
199
  default: () => [label]
@@ -1 +1 @@
1
- {"version":3,"file":"VSelectionControl.mjs","names":["VIcon","VLabel","VSelectionControlGroupSymbol","makeDensityProps","useDensity","makeThemeProps","useProxiedModel","useTextColor","IconValue","Ripple","computed","inject","ref","deepEqual","genericComponent","getUid","pick","propsFactory","SUPPORTS_FOCUS_VISIBLE","useRender","wrapInArray","makeSelectionControlProps","color","String","disabled","Boolean","error","id","inline","label","falseIcon","trueIcon","ripple","type","default","multiple","name","readonly","trueValue","falseValue","modelValue","value","valueComparator","Function","useSelectionControl","props","group","undefined","densityClasses","isMultiple","Array","isArray","model","get","val","some","v","set","currentValue","newVal","filter","item","textColorClasses","textColorStyles","icon","VSelectionControl","directives","inheritAttrs","emits","setup","attrs","slots","uid","isFocused","isFocusVisible","input","onFocus","e","target","matches","onBlur","for","filterControlProps","Object","keys"],"sources":["../../../src/components/VSelectionControl/VSelectionControl.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControl.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VLabel } from '@/components/VLabel'\nimport { VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeThemeProps } from '@/composables/theme'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\nimport { IconValue } from '@/composables/icons'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject, ref } from 'vue'\nimport {\n deepEqual,\n genericComponent,\n getUid,\n pick,\n propsFactory,\n SUPPORTS_FOCUS_VISIBLE,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { ComputedRef, ExtractPropTypes, PropType, Ref, WritableComputedRef } from 'vue'\nimport type { MakeSlots } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<any>\n isReadonly: ComputedRef<boolean>\n isDisabled: ComputedRef<boolean>\n textColorClasses: Ref<string[]>\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport const makeSelectionControlProps = propsFactory({\n color: String,\n disabled: Boolean,\n error: Boolean,\n id: String,\n inline: Boolean,\n label: String,\n falseIcon: IconValue,\n trueIcon: IconValue,\n ripple: {\n type: Boolean,\n default: true,\n },\n multiple: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n name: String,\n readonly: Boolean,\n trueValue: null,\n falseValue: null,\n modelValue: null,\n type: String,\n value: null,\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n\n ...makeThemeProps(),\n ...makeDensityProps(),\n})\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeSelectionControlProps>> & {\n 'onUpdate:modelValue': ((val: any) => void) | undefined\n }\n) {\n const group = inject(VSelectionControlGroupSymbol, undefined)\n const { densityClasses } = useDensity(props)\n const modelValue = useProxiedModel(props, 'modelValue')\n const trueValue = computed(() => (\n props.trueValue !== undefined ? props.trueValue\n : props.value !== undefined ? props.value\n : true\n ))\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false)\n const isMultiple = computed(() => (\n group?.multiple.value ||\n !!props.multiple ||\n (props.multiple == null && Array.isArray(modelValue.value))\n ))\n const model = computed({\n get () {\n const val = group ? group.modelValue.value : modelValue.value\n\n return isMultiple.value\n ? val.some((v: any) => props.valueComparator(v, trueValue.value))\n : props.valueComparator(val, trueValue.value)\n },\n set (val: boolean) {\n if (props.readonly) return\n\n const currentValue = val ? trueValue.value : falseValue.value\n\n let newVal = currentValue\n\n if (isMultiple.value) {\n newVal = val\n ? [...wrapInArray(modelValue.value), currentValue]\n : wrapInArray(modelValue.value).filter((item: any) => !props.valueComparator(item, trueValue.value))\n }\n\n if (group) {\n group.modelValue.value = newVal\n } else {\n modelValue.value = newVal\n }\n },\n })\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : undefined\n }))\n const icon = computed(() => {\n return model.value\n ? group?.trueIcon.value ?? props.trueIcon\n : group?.falseIcon.value ?? props.falseIcon\n })\n\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n icon,\n }\n}\n\nexport const VSelectionControl = genericComponent<new <T>() => {\n $props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => any\n }\n $slots: MakeSlots<{\n default: []\n input: [SelectionControlSlot]\n }>\n}>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n densityClasses,\n group,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const isFocused = ref(false)\n const isFocusVisible = ref(false)\n const input = ref<HTMLInputElement>()\n\n function onFocus (e: FocusEvent) {\n isFocused.value = true\n if (\n !SUPPORTS_FOCUS_VISIBLE ||\n (SUPPORTS_FOCUS_VISIBLE && (e.target as HTMLElement).matches(':focus-visible'))\n ) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n useRender(() => {\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n const type = group?.type.value ?? props.type\n\n return (\n <div\n class={[\n 'v-selection-control',\n {\n 'v-selection-control--dirty': model.value,\n 'v-selection-control--disabled': props.disabled,\n 'v-selection-control--error': props.error,\n 'v-selection-control--focused': isFocused.value,\n 'v-selection-control--focus-visible': isFocusVisible.value,\n 'v-selection-control--inline': group?.inline.value || props.inline,\n },\n densityClasses.value,\n ]}\n >\n <div\n class={[\n 'v-selection-control__wrapper',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { slots.default?.() }\n\n <div\n class={[\n 'v-selection-control__input',\n ]}\n v-ripple={ props.ripple && [\n !props.disabled && !props.readonly,\n null,\n ['center', 'circle'],\n ]}\n >\n { icon.value && <VIcon icon={ icon.value } /> }\n\n <input\n v-model={ model.value }\n ref={ input }\n disabled={ props.disabled }\n id={ id.value }\n onBlur={ onBlur }\n onFocus={ onFocus }\n aria-readonly={ props.readonly }\n type={ type }\n value={ trueValue.value }\n name={ group?.name.value ?? props.name }\n aria-checked={ type === 'checkbox' ? model.value : undefined }\n { ...attrs }\n />\n\n { slots.input?.({\n model,\n textColorClasses,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n }) }\n </div>\n </div>\n\n <VLabel for={ id.value }>\n { label }\n </VLabel>\n </div>\n )\n })\n\n return {\n isFocused,\n input,\n }\n },\n})\n\nexport type VSelectionControl = InstanceType<typeof VSelectionControl>\n\nexport function filterControlProps (props: ExtractPropTypes<ReturnType<typeof makeSelectionControlProps>>) {\n return pick(props, Object.keys(VSelectionControl.props) as any)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"VSelectionControl.mjs","names":["VIcon","VLabel","VSelectionControlGroupSymbol","makeDensityProps","useDensity","makeThemeProps","useProxiedModel","useTextColor","IconValue","Ripple","computed","inject","ref","deepEqual","filterInputAttrs","genericComponent","getUid","pick","propsFactory","SUPPORTS_FOCUS_VISIBLE","useRender","wrapInArray","makeSelectionControlProps","color","String","disabled","Boolean","error","id","inline","label","falseIcon","trueIcon","ripple","type","default","multiple","name","readonly","trueValue","falseValue","modelValue","value","valueComparator","Function","useSelectionControl","props","group","undefined","densityClasses","isMultiple","Array","isArray","model","get","val","some","v","set","currentValue","newVal","filter","item","textColorClasses","textColorStyles","icon","VSelectionControl","directives","inheritAttrs","emits","setup","attrs","slots","uid","isFocused","isFocusVisible","input","onFocus","e","target","matches","onBlur","for","rootAttrs","inputAttrs","filterControlProps","Object","keys"],"sources":["../../../src/components/VSelectionControl/VSelectionControl.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControl.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VLabel } from '@/components/VLabel'\nimport { VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeThemeProps } from '@/composables/theme'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\nimport { IconValue } from '@/composables/icons'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject, ref } from 'vue'\nimport {\n deepEqual,\n filterInputAttrs,\n genericComponent,\n getUid,\n pick,\n propsFactory,\n SUPPORTS_FOCUS_VISIBLE,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { ComputedRef, ExtractPropTypes, PropType, Ref, WritableComputedRef } from 'vue'\nimport type { MakeSlots } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<any>\n isReadonly: ComputedRef<boolean>\n isDisabled: ComputedRef<boolean>\n textColorClasses: Ref<string[]>\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport const makeSelectionControlProps = propsFactory({\n color: String,\n disabled: Boolean,\n error: Boolean,\n id: String,\n inline: Boolean,\n label: String,\n falseIcon: IconValue,\n trueIcon: IconValue,\n ripple: {\n type: Boolean,\n default: true,\n },\n multiple: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n name: String,\n readonly: Boolean,\n trueValue: null,\n falseValue: null,\n modelValue: null,\n type: String,\n value: null,\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n\n ...makeThemeProps(),\n ...makeDensityProps(),\n})\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeSelectionControlProps>> & {\n 'onUpdate:modelValue': ((val: any) => void) | undefined\n }\n) {\n const group = inject(VSelectionControlGroupSymbol, undefined)\n const { densityClasses } = useDensity(props)\n const modelValue = useProxiedModel(props, 'modelValue')\n const trueValue = computed(() => (\n props.trueValue !== undefined ? props.trueValue\n : props.value !== undefined ? props.value\n : true\n ))\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false)\n const isMultiple = computed(() => (\n group?.multiple.value ||\n !!props.multiple ||\n (props.multiple == null && Array.isArray(modelValue.value))\n ))\n const model = computed({\n get () {\n const val = group ? group.modelValue.value : modelValue.value\n\n return isMultiple.value\n ? val.some((v: any) => props.valueComparator(v, trueValue.value))\n : props.valueComparator(val, trueValue.value)\n },\n set (val: boolean) {\n if (props.readonly) return\n\n const currentValue = val ? trueValue.value : falseValue.value\n\n let newVal = currentValue\n\n if (isMultiple.value) {\n newVal = val\n ? [...wrapInArray(modelValue.value), currentValue]\n : wrapInArray(modelValue.value).filter((item: any) => !props.valueComparator(item, trueValue.value))\n }\n\n if (group) {\n group.modelValue.value = newVal\n } else {\n modelValue.value = newVal\n }\n },\n })\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : undefined\n }))\n const icon = computed(() => {\n return model.value\n ? group?.trueIcon.value ?? props.trueIcon\n : group?.falseIcon.value ?? props.falseIcon\n })\n\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n icon,\n }\n}\n\nexport const VSelectionControl = genericComponent<new <T>() => {\n $props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => any\n }\n $slots: MakeSlots<{\n default: []\n input: [SelectionControlSlot]\n }>\n}>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n densityClasses,\n group,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const isFocused = ref(false)\n const isFocusVisible = ref(false)\n const input = ref<HTMLInputElement>()\n\n function onFocus (e: FocusEvent) {\n isFocused.value = true\n if (\n !SUPPORTS_FOCUS_VISIBLE ||\n (SUPPORTS_FOCUS_VISIBLE && (e.target as HTMLElement).matches(':focus-visible'))\n ) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n useRender(() => {\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n const type = group?.type.value ?? props.type\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-selection-control',\n {\n 'v-selection-control--dirty': model.value,\n 'v-selection-control--disabled': props.disabled,\n 'v-selection-control--error': props.error,\n 'v-selection-control--focused': isFocused.value,\n 'v-selection-control--focus-visible': isFocusVisible.value,\n 'v-selection-control--inline': group?.inline.value || props.inline,\n },\n densityClasses.value,\n ]}\n { ...rootAttrs }\n >\n <div\n class={[\n 'v-selection-control__wrapper',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { slots.default?.() }\n\n <div\n class={[\n 'v-selection-control__input',\n ]}\n v-ripple={ props.ripple && [\n !props.disabled && !props.readonly,\n null,\n ['center', 'circle'],\n ]}\n >\n { icon.value && <VIcon icon={ icon.value } /> }\n\n <input\n v-model={ model.value }\n ref={ input }\n disabled={ props.disabled }\n id={ id.value }\n onBlur={ onBlur }\n onFocus={ onFocus }\n aria-readonly={ props.readonly }\n type={ type }\n value={ trueValue.value }\n name={ group?.name.value ?? props.name }\n aria-checked={ type === 'checkbox' ? model.value : undefined }\n { ...inputAttrs }\n />\n\n { slots.input?.({\n model,\n textColorClasses,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n }) }\n </div>\n </div>\n\n { label && (\n <VLabel for={ id.value }>\n { label }\n </VLabel>\n ) }\n </div>\n )\n })\n\n return {\n isFocused,\n input,\n }\n },\n})\n\nexport type VSelectionControl = InstanceType<typeof VSelectionControl>\n\nexport function filterControlProps (props: ExtractPropTypes<ReturnType<typeof makeSelectionControlProps>>) {\n return pick(props, Object.keys(VSelectionControl.props) as any)\n}\n"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use 'sass:map'
3
2
  @use 'sass:list'
4
3
  @use '../../styles/settings'
@@ -33,6 +32,7 @@
33
32
 
34
33
  &--inline
35
34
  display: inline-flex
35
+ flex: 0 0 auto
36
36
 
37
37
  .v-label
38
38
  width: auto
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use 'sass:map'
3
2
  @use 'sass:list'
4
3
  @use '../../styles/settings'
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use '../../styles/tools'
3
2
  @use './variables' as *
4
3
 
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use 'sass:math'
3
2
  @use 'sass:map'
4
3
  @use '../../styles/settings'
@@ -1,5 +1,3 @@
1
- // Imports
2
- @forward './variables'
3
1
  @use 'sass:map'
4
2
  @use 'sass:selector'
5
3
  @use '../../styles/settings'
@@ -1,5 +1,3 @@
1
- // Imports
2
- @forward './variables'
3
1
  @use 'sass:map'
4
2
  @use 'sass:selector'
5
3
  @use 'sass:math'