vuetify 3.3.12 → 3.4.0-alpha.0

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 (267) hide show
  1. package/dist/json/attributes.json +152 -16
  2. package/dist/json/importMap.json +4 -4
  3. package/dist/json/tags.json +34 -0
  4. package/dist/json/web-types.json +462 -48
  5. package/dist/vuetify-labs.css +1718 -606
  6. package/dist/vuetify-labs.d.ts +880 -276
  7. package/dist/vuetify-labs.esm.js +373 -189
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +372 -188
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +1591 -479
  12. package/dist/vuetify.d.ts +865 -267
  13. package/dist/vuetify.esm.js +373 -189
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +372 -188
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +920 -905
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  21. package/lib/components/VAppBar/index.d.mts +6 -6
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs +6 -2
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  24. package/lib/components/VAutocomplete/index.d.mts +62 -14
  25. package/lib/components/VAvatar/VAvatar.mjs +2 -1
  26. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  27. package/lib/components/VAvatar/index.d.mts +6 -0
  28. package/lib/components/VBanner/VBanner.mjs +5 -3
  29. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  30. package/lib/components/VBanner/index.d.mts +10 -0
  31. package/lib/components/VBottomNavigation/VBottomNavigation.css +1 -0
  32. package/lib/components/VBottomNavigation/VBottomNavigation.sass +1 -0
  33. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +9 -4
  34. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  35. package/lib/components/VBreadcrumbs/index.d.mts +28 -2
  36. package/lib/components/VBtn/VBtn.css +3 -0
  37. package/lib/components/VBtn/VBtn.sass +3 -0
  38. package/lib/components/VCarousel/index.d.mts +26 -0
  39. package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
  40. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  41. package/lib/components/VCheckbox/VCheckboxBtn.mjs +14 -11
  42. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  43. package/lib/components/VCheckbox/index.d.mts +15 -1
  44. package/lib/components/VColorPicker/VColorPickerEdit.css +4 -2
  45. package/lib/components/VColorPicker/VColorPickerPreview.css +16 -6
  46. package/lib/components/VColorPicker/VColorPickerPreview.mjs +28 -2
  47. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  48. package/lib/components/VColorPicker/VColorPickerPreview.sass +4 -0
  49. package/lib/components/VColorPicker/_variables.scss +1 -0
  50. package/lib/components/VCombobox/VCombobox.mjs +6 -2
  51. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  52. package/lib/components/VCombobox/index.d.mts +62 -14
  53. package/lib/components/VDialog/index.d.mts +41 -20
  54. package/lib/components/VField/VField.css +11 -6
  55. package/lib/components/VField/VField.mjs +5 -3
  56. package/lib/components/VField/VField.mjs.map +1 -1
  57. package/lib/components/VField/VField.sass +1 -0
  58. package/lib/components/VField/index.d.mts +4 -4
  59. package/lib/components/VFileInput/VFileInput.css +4 -0
  60. package/lib/components/VFileInput/VFileInput.sass +5 -1
  61. package/lib/components/VFileInput/_variables.scss +2 -1
  62. package/lib/components/VFileInput/index.d.mts +4 -4
  63. package/lib/components/VGrid/VGrid.css +153 -142
  64. package/lib/components/VImg/VImg.mjs +13 -1
  65. package/lib/components/VImg/VImg.mjs.map +1 -1
  66. package/lib/components/VImg/index.d.mts +26 -0
  67. package/lib/components/VList/VList.css +1 -1
  68. package/lib/components/VList/VList.sass +1 -1
  69. package/lib/components/VList/VListItem.css +15 -10
  70. package/lib/components/VList/VListItem.mjs +6 -3
  71. package/lib/components/VList/VListItem.mjs.map +1 -1
  72. package/lib/components/VList/VListItem.sass +17 -10
  73. package/lib/components/VList/index.d.mts +12 -12
  74. package/lib/components/VMenu/VMenu.mjs +4 -3
  75. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  76. package/lib/components/VMenu/index.d.mts +46 -25
  77. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +0 -1
  78. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +5 -3
  79. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  80. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +0 -1
  81. package/lib/components/VNavigationDrawer/_variables.scss +0 -1
  82. package/lib/components/VNavigationDrawer/index.d.mts +10 -0
  83. package/lib/components/VOverlay/VOverlay.mjs +9 -4
  84. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  85. package/lib/components/VOverlay/index.d.mts +17 -8
  86. package/lib/components/VOverlay/locationStrategies.mjs +9 -9
  87. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  88. package/lib/components/VOverlay/scrollStrategies.mjs +3 -3
  89. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  90. package/lib/components/VOverlay/useActivator.mjs +50 -21
  91. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  92. package/lib/components/VProgressLinear/VProgressLinear.css +3 -2
  93. package/lib/components/VRadio/index.d.mts +9 -1
  94. package/lib/components/VRadioGroup/VRadioGroup.css +6 -1
  95. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
  96. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  97. package/lib/components/VRadioGroup/VRadioGroup.sass +5 -0
  98. package/lib/components/VRadioGroup/_variables.scss +3 -1
  99. package/lib/components/VRadioGroup/index.d.mts +3 -1
  100. package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -2
  101. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  102. package/lib/components/VRangeSlider/index.d.mts +128 -33
  103. package/lib/components/VSelect/VSelect.mjs +14 -2
  104. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  105. package/lib/components/VSelect/index.d.mts +62 -14
  106. package/lib/components/VSelectionControl/VSelectionControl.mjs +27 -21
  107. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  108. package/lib/components/VSelectionControl/index.d.mts +33 -25
  109. package/lib/components/VSlideGroup/VSlideGroup.mjs +5 -3
  110. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  111. package/lib/components/VSlideGroup/index.d.mts +10 -0
  112. package/lib/components/VSlider/VSlider.mjs +2 -1
  113. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  114. package/lib/components/VSlider/VSliderThumb.css +8 -4
  115. package/lib/components/VSlider/VSliderTrack.css +22 -12
  116. package/lib/components/VSlider/index.d.mts +128 -33
  117. package/lib/components/VSlider/slider.mjs +5 -1
  118. package/lib/components/VSlider/slider.mjs.map +1 -1
  119. package/lib/components/VSnackbar/index.d.mts +41 -20
  120. package/lib/components/VSwitch/VSwitch.css +24 -17
  121. package/lib/components/VSwitch/VSwitch.mjs +37 -28
  122. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  123. package/lib/components/VSwitch/VSwitch.sass +20 -11
  124. package/lib/components/VSwitch/_variables.scss +18 -6
  125. package/lib/components/VSwitch/index.d.mts +9 -1
  126. package/lib/components/VTabs/index.d.mts +10 -0
  127. package/lib/components/VTextField/VTextField.css +9 -2
  128. package/lib/components/VTextField/VTextField.mjs +6 -3
  129. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  130. package/lib/components/VTextField/VTextField.sass +10 -3
  131. package/lib/components/VTextField/index.d.mts +22 -16
  132. package/lib/components/VTextarea/VTextarea.mjs +1 -2
  133. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  134. package/lib/components/VTextarea/index.d.mts +4 -4
  135. package/lib/components/VTimeline/VTimeline.css +21 -11
  136. package/lib/components/VTimeline/VTimeline.sass +6 -1
  137. package/lib/components/VToolbar/VToolbar.css +4 -2
  138. package/lib/components/VTooltip/index.d.mts +41 -20
  139. package/lib/components/index.d.mts +836 -265
  140. package/lib/components/transitions/dialog-transition.mjs +4 -3
  141. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  142. package/lib/components/transitions/index.d.mts +6 -6
  143. package/lib/composables/defaults.mjs +9 -9
  144. package/lib/composables/defaults.mjs.map +1 -1
  145. package/lib/composables/directiveComponent.mjs +69 -0
  146. package/lib/composables/directiveComponent.mjs.map +1 -0
  147. package/lib/composables/display.mjs +23 -3
  148. package/lib/composables/display.mjs.map +1 -1
  149. package/lib/composables/theme.mjs +7 -7
  150. package/lib/composables/theme.mjs.map +1 -1
  151. package/lib/entry-bundler.mjs +1 -1
  152. package/lib/entry-bundler.mjs.map +1 -1
  153. package/lib/framework.mjs +1 -1
  154. package/lib/framework.mjs.map +1 -1
  155. package/lib/iconsets/fa.mjs +2 -1
  156. package/lib/iconsets/fa.mjs.map +1 -1
  157. package/lib/iconsets/fa4.mjs +2 -1
  158. package/lib/iconsets/fa4.mjs.map +1 -1
  159. package/lib/iconsets/md.mjs +2 -1
  160. package/lib/iconsets/md.mjs.map +1 -1
  161. package/lib/iconsets/mdi-svg.mjs +2 -1
  162. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  163. package/lib/iconsets/mdi.mjs +2 -1
  164. package/lib/iconsets/mdi.mjs.map +1 -1
  165. package/lib/index.d.mts +33 -2
  166. package/lib/labs/VBottomSheet/index.d.mts +14 -8
  167. package/lib/labs/VDateInput/index.d.mts +10 -4
  168. package/lib/labs/VDatePicker/VDatePickerControls.css +1 -1
  169. package/lib/labs/VOtpInput/index.d.mts +4 -4
  170. package/lib/labs/components.d.mts +18 -12
  171. package/lib/locale/af.mjs +1 -0
  172. package/lib/locale/af.mjs.map +1 -1
  173. package/lib/locale/ar.mjs +1 -0
  174. package/lib/locale/ar.mjs.map +1 -1
  175. package/lib/locale/az.mjs +1 -0
  176. package/lib/locale/az.mjs.map +1 -1
  177. package/lib/locale/bg.mjs +1 -0
  178. package/lib/locale/bg.mjs.map +1 -1
  179. package/lib/locale/ca.mjs +1 -0
  180. package/lib/locale/ca.mjs.map +1 -1
  181. package/lib/locale/ckb.mjs +1 -0
  182. package/lib/locale/ckb.mjs.map +1 -1
  183. package/lib/locale/cs.mjs +1 -0
  184. package/lib/locale/cs.mjs.map +1 -1
  185. package/lib/locale/da.mjs +1 -0
  186. package/lib/locale/da.mjs.map +1 -1
  187. package/lib/locale/de.mjs +1 -0
  188. package/lib/locale/de.mjs.map +1 -1
  189. package/lib/locale/el.mjs +1 -0
  190. package/lib/locale/el.mjs.map +1 -1
  191. package/lib/locale/en.mjs +1 -0
  192. package/lib/locale/en.mjs.map +1 -1
  193. package/lib/locale/es.mjs +1 -0
  194. package/lib/locale/es.mjs.map +1 -1
  195. package/lib/locale/et.mjs +1 -0
  196. package/lib/locale/et.mjs.map +1 -1
  197. package/lib/locale/fa.mjs +1 -0
  198. package/lib/locale/fa.mjs.map +1 -1
  199. package/lib/locale/fi.mjs +1 -0
  200. package/lib/locale/fi.mjs.map +1 -1
  201. package/lib/locale/fr.mjs +1 -0
  202. package/lib/locale/fr.mjs.map +1 -1
  203. package/lib/locale/he.mjs +1 -0
  204. package/lib/locale/he.mjs.map +1 -1
  205. package/lib/locale/hr.mjs +1 -0
  206. package/lib/locale/hr.mjs.map +1 -1
  207. package/lib/locale/hu.mjs +1 -0
  208. package/lib/locale/hu.mjs.map +1 -1
  209. package/lib/locale/id.mjs +1 -0
  210. package/lib/locale/id.mjs.map +1 -1
  211. package/lib/locale/index.d.mts +42 -0
  212. package/lib/locale/it.mjs +1 -0
  213. package/lib/locale/it.mjs.map +1 -1
  214. package/lib/locale/ja.mjs +1 -0
  215. package/lib/locale/ja.mjs.map +1 -1
  216. package/lib/locale/ko.mjs +1 -0
  217. package/lib/locale/ko.mjs.map +1 -1
  218. package/lib/locale/lt.mjs +1 -0
  219. package/lib/locale/lt.mjs.map +1 -1
  220. package/lib/locale/lv.mjs +1 -0
  221. package/lib/locale/lv.mjs.map +1 -1
  222. package/lib/locale/nl.mjs +1 -0
  223. package/lib/locale/nl.mjs.map +1 -1
  224. package/lib/locale/no.mjs +1 -0
  225. package/lib/locale/no.mjs.map +1 -1
  226. package/lib/locale/pl.mjs +1 -0
  227. package/lib/locale/pl.mjs.map +1 -1
  228. package/lib/locale/pt.mjs +1 -0
  229. package/lib/locale/pt.mjs.map +1 -1
  230. package/lib/locale/ro.mjs +1 -0
  231. package/lib/locale/ro.mjs.map +1 -1
  232. package/lib/locale/ru.mjs +1 -0
  233. package/lib/locale/ru.mjs.map +1 -1
  234. package/lib/locale/sk.mjs +1 -0
  235. package/lib/locale/sk.mjs.map +1 -1
  236. package/lib/locale/sl.mjs +1 -0
  237. package/lib/locale/sl.mjs.map +1 -1
  238. package/lib/locale/sr-Cyrl.mjs +1 -0
  239. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  240. package/lib/locale/sr-Latn.mjs +1 -0
  241. package/lib/locale/sr-Latn.mjs.map +1 -1
  242. package/lib/locale/sv.mjs +1 -0
  243. package/lib/locale/sv.mjs.map +1 -1
  244. package/lib/locale/th.mjs +1 -0
  245. package/lib/locale/th.mjs.map +1 -1
  246. package/lib/locale/tr.mjs +1 -0
  247. package/lib/locale/tr.mjs.map +1 -1
  248. package/lib/locale/uk.mjs +1 -0
  249. package/lib/locale/uk.mjs.map +1 -1
  250. package/lib/locale/vi.mjs +1 -0
  251. package/lib/locale/vi.mjs.map +1 -1
  252. package/lib/locale/zh-Hans.mjs +1 -0
  253. package/lib/locale/zh-Hans.mjs.map +1 -1
  254. package/lib/locale/zh-Hant.mjs +1 -0
  255. package/lib/locale/zh-Hant.mjs.map +1 -1
  256. package/lib/styles/main.css +1026 -0
  257. package/lib/styles/settings/_utilities.scss +20 -0
  258. package/lib/styles/tools/_rtl.sass +4 -2
  259. package/lib/util/box.mjs +12 -0
  260. package/lib/util/box.mjs.map +1 -1
  261. package/lib/util/globals.mjs +1 -0
  262. package/lib/util/globals.mjs.map +1 -1
  263. package/lib/util/helpers.mjs +19 -5
  264. package/lib/util/helpers.mjs.map +1 -1
  265. package/lib/util/injectSelf.mjs +2 -1
  266. package/lib/util/injectSelf.mjs.map +1 -1
  267. package/package.json +2 -2
@@ -121,7 +121,7 @@ type VInputSlots = {
121
121
  interface ScrollStrategyData {
122
122
  root: Ref<HTMLElement | undefined>;
123
123
  contentEl: Ref<HTMLElement | undefined>;
124
- activatorEl: Ref<HTMLElement | undefined>;
124
+ targetEl: Ref<HTMLElement | undefined>;
125
125
  isActive: Ref<boolean>;
126
126
  updateLocation: Ref<((e: Event) => void) | undefined>;
127
127
  }
@@ -142,7 +142,7 @@ declare function repositionScrollStrategy(data: ScrollStrategyData, props: Strat
142
142
 
143
143
  interface LocationStrategyData {
144
144
  contentEl: Ref<HTMLElement | undefined>;
145
- activatorEl: Ref<HTMLElement | undefined>;
145
+ target: Ref<HTMLElement | [x: number, y: number] | undefined>;
146
146
  isActive: Ref<boolean>;
147
147
  isRtl: Ref<boolean>;
148
148
  }
@@ -207,6 +207,7 @@ declare const VSelect: {
207
207
  } | undefined;
208
208
  menu?: boolean | undefined;
209
209
  style?: vue.StyleValue | undefined;
210
+ role?: string | undefined;
210
211
  autofocus?: boolean | undefined;
211
212
  eager?: boolean | undefined;
212
213
  disabled?: boolean | undefined;
@@ -235,6 +236,8 @@ declare const VSelect: {
235
236
  persistentCounter?: boolean | undefined;
236
237
  chips?: boolean | undefined;
237
238
  closableChips?: boolean | undefined;
239
+ closeText?: string | undefined;
240
+ openText?: string | undefined;
238
241
  hideNoData?: boolean | undefined;
239
242
  hideSelected?: boolean | undefined;
240
243
  menuIcon?: IconValue | undefined;
@@ -295,6 +298,7 @@ declare const VSelect: {
295
298
  bgColor?: string | undefined;
296
299
  prependIcon?: IconValue | undefined;
297
300
  appendIcon?: IconValue | undefined;
301
+ baseColor?: string | undefined;
298
302
  prependInnerIcon?: IconValue | undefined;
299
303
  'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
300
304
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
@@ -305,7 +309,6 @@ declare const VSelect: {
305
309
  validateOn?: "lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined;
306
310
  hint?: string | undefined;
307
311
  hideDetails?: boolean | "auto" | undefined;
308
- baseColor?: string | undefined;
309
312
  suffix?: string | undefined;
310
313
  counterValue?: ((value: any) => number) | undefined;
311
314
  modelModifiers?: Record<string, boolean> | undefined;
@@ -347,6 +350,7 @@ declare const VSelect: {
347
350
  maxWidth?: string | number | undefined;
348
351
  minHeight?: string | number | undefined;
349
352
  minWidth?: string | number | undefined;
353
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
350
354
  class?: any;
351
355
  $children?: vue.VNodeChild | {
352
356
  default?: ((arg: {
@@ -415,7 +419,7 @@ declare const VSelect: {
415
419
  [key: string]: any;
416
420
  }>) => void)[] | undefined;
417
421
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
418
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
422
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
419
423
  "v-slot:activator"?: false | ((arg: {
420
424
  isActive: boolean;
421
425
  props: Record<string, any>;
@@ -511,6 +515,7 @@ declare const VSelect: {
511
515
  };
512
516
  menu: boolean;
513
517
  style: vue.StyleValue;
518
+ role: string;
514
519
  autofocus: boolean;
515
520
  eager: boolean;
516
521
  disabled: boolean;
@@ -537,6 +542,8 @@ declare const VSelect: {
537
542
  persistentCounter: boolean;
538
543
  chips: boolean;
539
544
  closableChips: boolean;
545
+ closeText: string;
546
+ openText: string;
540
547
  hideNoData: boolean;
541
548
  hideSelected: boolean;
542
549
  menuIcon: IconValue;
@@ -556,6 +563,7 @@ declare const VSelect: {
556
563
  bgColor?: string | undefined;
557
564
  prependIcon?: IconValue | undefined;
558
565
  appendIcon?: IconValue | undefined;
566
+ baseColor?: string | undefined;
559
567
  prependInnerIcon?: IconValue | undefined;
560
568
  'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
561
569
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
@@ -567,7 +575,6 @@ declare const VSelect: {
567
575
  centerAffix?: boolean | undefined;
568
576
  hint?: string | undefined;
569
577
  hideDetails?: boolean | "auto" | undefined;
570
- baseColor?: string | undefined;
571
578
  suffix?: string | undefined;
572
579
  counterValue?: ((value: any) => number) | undefined;
573
580
  modelModifiers?: Record<string, boolean> | undefined;
@@ -609,6 +616,7 @@ declare const VSelect: {
609
616
  maxWidth?: string | number | undefined;
610
617
  minHeight?: string | number | undefined;
611
618
  minWidth?: string | number | undefined;
619
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
612
620
  class?: any;
613
621
  $children?: vue.VNodeChild | {
614
622
  default?: ((arg: {
@@ -677,7 +685,7 @@ declare const VSelect: {
677
685
  [key: string]: any;
678
686
  }>) => void)[] | undefined;
679
687
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
680
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
688
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
681
689
  "v-slot:activator"?: false | ((arg: {
682
690
  isActive: boolean;
683
691
  props: Record<string, any>;
@@ -708,6 +716,7 @@ declare const VSelect: {
708
716
  };
709
717
  menu: boolean;
710
718
  style: vue.StyleValue;
719
+ role: string;
711
720
  autofocus: boolean;
712
721
  eager: boolean;
713
722
  disabled: boolean;
@@ -736,6 +745,8 @@ declare const VSelect: {
736
745
  persistentCounter: boolean;
737
746
  chips: boolean;
738
747
  closableChips: boolean;
748
+ closeText: string;
749
+ openText: string;
739
750
  hideNoData: boolean;
740
751
  hideSelected: boolean;
741
752
  menuIcon: IconValue;
@@ -834,6 +845,7 @@ declare const VSelect: {
834
845
  };
835
846
  menu: boolean;
836
847
  style: vue.StyleValue;
848
+ role: string;
837
849
  autofocus: boolean;
838
850
  eager: boolean;
839
851
  disabled: boolean;
@@ -860,6 +872,8 @@ declare const VSelect: {
860
872
  persistentCounter: boolean;
861
873
  chips: boolean;
862
874
  closableChips: boolean;
875
+ closeText: string;
876
+ openText: string;
863
877
  hideNoData: boolean;
864
878
  hideSelected: boolean;
865
879
  menuIcon: IconValue;
@@ -879,6 +893,7 @@ declare const VSelect: {
879
893
  bgColor?: string | undefined;
880
894
  prependIcon?: IconValue | undefined;
881
895
  appendIcon?: IconValue | undefined;
896
+ baseColor?: string | undefined;
882
897
  prependInnerIcon?: IconValue | undefined;
883
898
  'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
884
899
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
@@ -890,7 +905,6 @@ declare const VSelect: {
890
905
  centerAffix?: boolean | undefined;
891
906
  hint?: string | undefined;
892
907
  hideDetails?: boolean | "auto" | undefined;
893
- baseColor?: string | undefined;
894
908
  suffix?: string | undefined;
895
909
  counterValue?: ((value: any) => number) | undefined;
896
910
  modelModifiers?: Record<string, boolean> | undefined;
@@ -932,6 +946,7 @@ declare const VSelect: {
932
946
  maxWidth?: string | number | undefined;
933
947
  minHeight?: string | number | undefined;
934
948
  minWidth?: string | number | undefined;
949
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
935
950
  class?: any;
936
951
  $children?: vue.VNodeChild | {
937
952
  default?: ((arg: {
@@ -1000,7 +1015,7 @@ declare const VSelect: {
1000
1015
  [key: string]: any;
1001
1016
  }>) => void)[] | undefined;
1002
1017
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
1003
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
1018
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
1004
1019
  "v-slot:activator"?: false | ((arg: {
1005
1020
  isActive: boolean;
1006
1021
  props: Record<string, any>;
@@ -1031,6 +1046,7 @@ declare const VSelect: {
1031
1046
  };
1032
1047
  menu: boolean;
1033
1048
  style: vue.StyleValue;
1049
+ role: string;
1034
1050
  autofocus: boolean;
1035
1051
  eager: boolean;
1036
1052
  disabled: boolean;
@@ -1057,6 +1073,8 @@ declare const VSelect: {
1057
1073
  persistentCounter: boolean;
1058
1074
  chips: boolean;
1059
1075
  closableChips: boolean;
1076
+ closeText: string;
1077
+ openText: string;
1060
1078
  hideNoData: boolean;
1061
1079
  hideSelected: boolean;
1062
1080
  menuIcon: IconValue;
@@ -1076,6 +1094,7 @@ declare const VSelect: {
1076
1094
  bgColor?: string | undefined;
1077
1095
  prependIcon?: IconValue | undefined;
1078
1096
  appendIcon?: IconValue | undefined;
1097
+ baseColor?: string | undefined;
1079
1098
  prependInnerIcon?: IconValue | undefined;
1080
1099
  'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1081
1100
  'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
@@ -1087,7 +1106,6 @@ declare const VSelect: {
1087
1106
  centerAffix?: boolean | undefined;
1088
1107
  hint?: string | undefined;
1089
1108
  hideDetails?: boolean | "auto" | undefined;
1090
- baseColor?: string | undefined;
1091
1109
  suffix?: string | undefined;
1092
1110
  counterValue?: ((value: any) => number) | undefined;
1093
1111
  modelModifiers?: Record<string, boolean> | undefined;
@@ -1129,6 +1147,7 @@ declare const VSelect: {
1129
1147
  maxWidth?: string | number | undefined;
1130
1148
  minHeight?: string | number | undefined;
1131
1149
  minWidth?: string | number | undefined;
1150
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1132
1151
  class?: any;
1133
1152
  $children?: vue.VNodeChild | {
1134
1153
  default?: ((arg: {
@@ -1197,7 +1216,7 @@ declare const VSelect: {
1197
1216
  [key: string]: any;
1198
1217
  }>) => void)[] | undefined;
1199
1218
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
1200
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
1219
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
1201
1220
  "v-slot:activator"?: false | ((arg: {
1202
1221
  isActive: boolean;
1203
1222
  props: Record<string, any>;
@@ -1228,6 +1247,7 @@ declare const VSelect: {
1228
1247
  };
1229
1248
  menu: boolean;
1230
1249
  style: vue.StyleValue;
1250
+ role: string;
1231
1251
  autofocus: boolean;
1232
1252
  eager: boolean;
1233
1253
  disabled: boolean;
@@ -1256,6 +1276,8 @@ declare const VSelect: {
1256
1276
  persistentCounter: boolean;
1257
1277
  chips: boolean;
1258
1278
  closableChips: boolean;
1279
+ closeText: string;
1280
+ openText: string;
1259
1281
  hideNoData: boolean;
1260
1282
  hideSelected: boolean;
1261
1283
  menuIcon: IconValue;
@@ -1410,6 +1432,10 @@ declare const VSelect: {
1410
1432
  default: null;
1411
1433
  };
1412
1434
  prefix: StringConstructor;
1435
+ role: {
1436
+ type: PropType<string>;
1437
+ default: string;
1438
+ };
1413
1439
  autofocus: BooleanConstructor;
1414
1440
  disabled: {
1415
1441
  type: BooleanConstructor;
@@ -1448,6 +1474,7 @@ declare const VSelect: {
1448
1474
  bgColor: StringConstructor;
1449
1475
  prependIcon: PropType<IconValue>;
1450
1476
  appendIcon: PropType<IconValue>;
1477
+ baseColor: StringConstructor;
1451
1478
  clearIcon: {
1452
1479
  type: PropType<IconValue>;
1453
1480
  default: string;
@@ -1480,7 +1507,6 @@ declare const VSelect: {
1480
1507
  hint: StringConstructor;
1481
1508
  persistentHint: BooleanConstructor;
1482
1509
  hideDetails: PropType<boolean | "auto">;
1483
- baseColor: StringConstructor;
1484
1510
  clearable: BooleanConstructor;
1485
1511
  persistentClear: BooleanConstructor;
1486
1512
  singleLine: BooleanConstructor;
@@ -1515,6 +1541,14 @@ declare const VSelect: {
1515
1541
  returnObject: BooleanConstructor;
1516
1542
  chips: BooleanConstructor;
1517
1543
  closableChips: BooleanConstructor;
1544
+ closeText: {
1545
+ type: StringConstructor;
1546
+ default: string;
1547
+ };
1548
+ openText: {
1549
+ type: StringConstructor;
1550
+ default: string;
1551
+ };
1518
1552
  eager: BooleanConstructor;
1519
1553
  hideNoData: BooleanConstructor;
1520
1554
  hideSelected: BooleanConstructor;
@@ -1562,6 +1596,7 @@ declare const VSelect: {
1562
1596
  maxWidth?: string | number | undefined;
1563
1597
  minHeight?: string | number | undefined;
1564
1598
  minWidth?: string | number | undefined;
1599
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1565
1600
  class?: any;
1566
1601
  $children?: vue.VNodeChild | {
1567
1602
  default?: ((arg: {
@@ -1630,7 +1665,7 @@ declare const VSelect: {
1630
1665
  [key: string]: any;
1631
1666
  }>) => void)[] | undefined;
1632
1667
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
1633
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
1668
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
1634
1669
  "v-slot:activator"?: false | ((arg: {
1635
1670
  isActive: boolean;
1636
1671
  props: Record<string, any>;
@@ -1692,6 +1727,10 @@ declare const VSelect: {
1692
1727
  default: null;
1693
1728
  };
1694
1729
  prefix: StringConstructor;
1730
+ role: {
1731
+ type: PropType<string>;
1732
+ default: string;
1733
+ };
1695
1734
  autofocus: BooleanConstructor;
1696
1735
  disabled: {
1697
1736
  type: BooleanConstructor;
@@ -1730,6 +1769,7 @@ declare const VSelect: {
1730
1769
  bgColor: StringConstructor;
1731
1770
  prependIcon: PropType<IconValue>;
1732
1771
  appendIcon: PropType<IconValue>;
1772
+ baseColor: StringConstructor;
1733
1773
  clearIcon: {
1734
1774
  type: PropType<IconValue>;
1735
1775
  default: string;
@@ -1762,7 +1802,6 @@ declare const VSelect: {
1762
1802
  hint: StringConstructor;
1763
1803
  persistentHint: BooleanConstructor;
1764
1804
  hideDetails: PropType<boolean | "auto">;
1765
- baseColor: StringConstructor;
1766
1805
  clearable: BooleanConstructor;
1767
1806
  persistentClear: BooleanConstructor;
1768
1807
  singleLine: BooleanConstructor;
@@ -1797,6 +1836,14 @@ declare const VSelect: {
1797
1836
  returnObject: BooleanConstructor;
1798
1837
  chips: BooleanConstructor;
1799
1838
  closableChips: BooleanConstructor;
1839
+ closeText: {
1840
+ type: StringConstructor;
1841
+ default: string;
1842
+ };
1843
+ openText: {
1844
+ type: StringConstructor;
1845
+ default: string;
1846
+ };
1800
1847
  eager: BooleanConstructor;
1801
1848
  hideNoData: BooleanConstructor;
1802
1849
  hideSelected: BooleanConstructor;
@@ -1844,6 +1891,7 @@ declare const VSelect: {
1844
1891
  maxWidth?: string | number | undefined;
1845
1892
  minHeight?: string | number | undefined;
1846
1893
  minWidth?: string | number | undefined;
1894
+ target?: Element | "cursor" | "parent" | (string & {}) | vue.ComponentPublicInstance | [x: number, y: number] | undefined;
1847
1895
  class?: any;
1848
1896
  $children?: vue.VNodeChild | {
1849
1897
  default?: ((arg: {
@@ -1912,7 +1960,7 @@ declare const VSelect: {
1912
1960
  [key: string]: any;
1913
1961
  }>) => void)[] | undefined;
1914
1962
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
1915
- activator?: string | Element | vue.ComponentPublicInstance | undefined;
1963
+ activator?: Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined;
1916
1964
  "v-slot:activator"?: false | ((arg: {
1917
1965
  isActive: boolean;
1918
1966
  props: Record<string, any>;
@@ -1,4 +1,4 @@
1
- import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
1
+ import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
2
  // Styles
3
3
  import "./VSelectionControl.css";
4
4
 
@@ -15,6 +15,7 @@ import { computed, inject, nextTick, ref, shallowRef } from 'vue';
15
15
  import { filterInputAttrs, genericComponent, getUid, matchesSelector, propsFactory, useRender, wrapInArray } from "../../util/index.mjs"; // Types
16
16
  export const makeVSelectionControlProps = propsFactory({
17
17
  label: String,
18
+ baseColor: String,
18
19
  trueValue: null,
19
20
  falseValue: null,
20
21
  value: null,
@@ -53,7 +54,8 @@ export function useSelectionControl(props) {
53
54
  textColorClasses,
54
55
  textColorStyles
55
56
  } = useTextColor(computed(() => {
56
- return model.value && !props.error && !props.disabled ? props.color : undefined;
57
+ if (props.error || props.disabled) return undefined;
58
+ return model.value ? props.color : props.baseColor;
57
59
  }));
58
60
  const icon = computed(() => model.value ? props.trueIcon : props.falseIcon);
59
61
  return {
@@ -125,6 +127,20 @@ export const VSelectionControl = genericComponent()({
125
127
  }
126
128
  }) : props.label;
127
129
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
130
+ const inputNode = _createVNode("input", _mergeProps({
131
+ "ref": input,
132
+ "checked": model.value,
133
+ "disabled": !!(props.readonly || props.disabled),
134
+ "id": id.value,
135
+ "onBlur": onBlur,
136
+ "onFocus": onFocus,
137
+ "onInput": onInput,
138
+ "aria-disabled": !!(props.readonly || props.disabled),
139
+ "type": props.type,
140
+ "value": trueValue.value,
141
+ "name": props.name,
142
+ "aria-checked": props.type === 'checkbox' ? model.value : undefined
143
+ }, inputAttrs), null);
128
144
  return _createVNode("div", _mergeProps({
129
145
  "class": ['v-selection-control', {
130
146
  'v-selection-control--dirty': model.value,
@@ -141,34 +157,24 @@ export const VSelectionControl = genericComponent()({
141
157
  "style": textColorStyles.value
142
158
  }, [slots.default?.(), _withDirectives(_createVNode("div", {
143
159
  "class": ['v-selection-control__input']
144
- }, [icon.value && _createVNode(VIcon, {
145
- "key": "icon",
146
- "icon": icon.value
147
- }, null), _createVNode("input", _mergeProps({
148
- "ref": input,
149
- "checked": model.value,
150
- "disabled": !!(props.readonly || props.disabled),
151
- "id": id.value,
152
- "onBlur": onBlur,
153
- "onFocus": onFocus,
154
- "onInput": onInput,
155
- "aria-disabled": !!(props.readonly || props.disabled),
156
- "type": props.type,
157
- "value": trueValue.value,
158
- "name": props.name,
159
- "aria-checked": props.type === 'checkbox' ? model.value : undefined
160
- }, inputAttrs), null), slots.input?.({
160
+ }, [slots.input?.({
161
161
  model,
162
162
  textColorClasses,
163
163
  textColorStyles,
164
+ inputNode,
165
+ icon: icon.value,
164
166
  props: {
165
167
  onFocus,
166
168
  onBlur,
167
169
  id: id.value
168
170
  }
169
- })]), [[_resolveDirective("ripple"), props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), label && _createVNode(VLabel, {
171
+ }) ?? _createVNode(_Fragment, null, [icon.value && _createVNode(VIcon, {
172
+ "key": "icon",
173
+ "icon": icon.value
174
+ }, null), inputNode])]), [[_resolveDirective("ripple"), props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), label && _createVNode(VLabel, {
170
175
  "for": id.value,
171
- "clickable": true
176
+ "clickable": true,
177
+ "onClick": e => e.stopPropagation()
172
178
  }, {
173
179
  default: () => [label]
174
180
  })]);
@@ -1 +1 @@
1
- {"version":3,"file":"VSelectionControl.mjs","names":["VIcon","VLabel","makeSelectionControlGroupProps","VSelectionControlGroupSymbol","useTextColor","makeComponentProps","useDensity","useProxiedModel","Ripple","computed","inject","nextTick","ref","shallowRef","filterInputAttrs","genericComponent","getUid","matchesSelector","propsFactory","useRender","wrapInArray","makeVSelectionControlProps","label","String","trueValue","falseValue","value","useSelectionControl","props","group","undefined","densityClasses","modelValue","isMultiple","multiple","Array","isArray","model","get","val","some","v","valueComparator","set","readonly","currentValue","newVal","filter","item","textColorClasses","textColorStyles","error","disabled","color","icon","trueIcon","falseIcon","VSelectionControl","name","directives","inheritAttrs","emits","setup","_ref","attrs","slots","uid","id","isFocused","isFocusVisible","input","onForceUpdate","checked","onFocus","e","target","onBlur","onInput","forceUpdate","for","rootAttrs","inputAttrs","_createVNode","_mergeProps","inline","class","style","default","_withDirectives","type","_resolveDirective","ripple"],"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 { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject, nextTick, ref, shallowRef } from 'vue'\nimport {\n filterInputAttrs,\n genericComponent,\n getUid,\n matchesSelector,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { CSSProperties, ExtractPropTypes, Ref, WritableComputedRef } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<any>\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport type VSelectionControlSlots = {\n default: never\n label: { label: string | undefined, props: Record<string, unknown> }\n input: SelectionControlSlot\n}\n\nexport const makeVSelectionControlProps = propsFactory({\n label: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps(),\n}, 'VSelectionControl')\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeVSelectionControlProps>> & {\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 !!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(() => model.value ? props.trueIcon : props.falseIcon)\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: VSelectionControlSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeVSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n group,\n densityClasses,\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 = shallowRef(false)\n const isFocusVisible = shallowRef(false)\n const input = ref<HTMLInputElement>()\n\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value\n }\n })\n\n function onFocus (e: FocusEvent) {\n isFocused.value = true\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') !== false) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n function onInput (e: Event) {\n if (props.readonly && group) {\n nextTick(() => group.forceUpdate())\n }\n model.value = (e.target as HTMLInputElement).checked\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 [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': props.inline,\n },\n densityClasses.value,\n props.class,\n ]}\n { ...rootAttrs }\n style={ props.style }\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 key=\"icon\" icon={ icon.value } /> }\n\n <input\n ref={ input }\n checked={ model.value }\n disabled={ !!(props.readonly || props.disabled) }\n id={ id.value }\n onBlur={ onBlur }\n onFocus={ onFocus }\n onInput={ onInput }\n aria-disabled={ !!(props.readonly || props.disabled) }\n type={ props.type }\n value={ trueValue.value }\n name={ props.name }\n aria-checked={ props.type === 'checkbox' ? model.value : undefined }\n { ...inputAttrs }\n />\n\n { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } as SelectionControlSlot)}\n </div>\n </div>\n\n { label && (\n <VLabel for={ id.value } clickable>\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"],"mappings":"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"}
1
+ {"version":3,"file":"VSelectionControl.mjs","names":["VIcon","VLabel","makeSelectionControlGroupProps","VSelectionControlGroupSymbol","useTextColor","makeComponentProps","useDensity","useProxiedModel","Ripple","computed","inject","nextTick","ref","shallowRef","filterInputAttrs","genericComponent","getUid","matchesSelector","propsFactory","useRender","wrapInArray","makeVSelectionControlProps","label","String","baseColor","trueValue","falseValue","value","useSelectionControl","props","group","undefined","densityClasses","modelValue","isMultiple","multiple","Array","isArray","model","get","val","some","v","valueComparator","set","readonly","currentValue","newVal","filter","item","textColorClasses","textColorStyles","error","disabled","color","icon","trueIcon","falseIcon","VSelectionControl","name","directives","inheritAttrs","emits","setup","_ref","attrs","slots","uid","id","isFocused","isFocusVisible","input","onForceUpdate","checked","onFocus","e","target","onBlur","onInput","forceUpdate","for","rootAttrs","inputAttrs","inputNode","_createVNode","_mergeProps","type","inline","class","style","default","_withDirectives","_Fragment","_resolveDirective","ripple","stopPropagation"],"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 { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject, nextTick, ref, shallowRef } from 'vue'\nimport {\n filterInputAttrs,\n genericComponent,\n getUid,\n matchesSelector,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { CSSProperties, ExtractPropTypes, Ref, VNode, WritableComputedRef } from 'vue'\nimport type { IconValue } from '@/composables/icons'\nimport type { GenericProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<any>\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n inputNode: VNode\n icon: IconValue | undefined\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport type VSelectionControlSlots = {\n default: never\n label: { label: string | undefined, props: Record<string, unknown> }\n input: SelectionControlSlot\n}\n\nexport const makeVSelectionControlProps = propsFactory({\n label: String,\n baseColor: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps(),\n}, 'VSelectionControl')\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeVSelectionControlProps>> & {\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 !!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 if (props.error || props.disabled) return undefined\n\n return model.value ? props.color : props.baseColor\n }))\n const icon = computed(() => model.value ? props.trueIcon : props.falseIcon)\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: VSelectionControlSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeVSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n group,\n densityClasses,\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 = shallowRef(false)\n const isFocusVisible = shallowRef(false)\n const input = ref<HTMLInputElement>()\n\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value\n }\n })\n\n function onFocus (e: FocusEvent) {\n isFocused.value = true\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') !== false) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n function onInput (e: Event) {\n if (props.readonly && group) {\n nextTick(() => group.forceUpdate())\n }\n model.value = (e.target as HTMLInputElement).checked\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 [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n const inputNode = (\n <input\n ref={ input }\n checked={ model.value }\n disabled={ !!(props.readonly || props.disabled) }\n id={ id.value }\n onBlur={ onBlur }\n onFocus={ onFocus }\n onInput={ onInput }\n aria-disabled={ !!(props.readonly || props.disabled) }\n type={ props.type }\n value={ trueValue.value }\n name={ props.name }\n aria-checked={ props.type === 'checkbox' ? model.value : undefined }\n { ...inputAttrs }\n />\n )\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': props.inline,\n },\n densityClasses.value,\n props.class,\n ]}\n { ...rootAttrs }\n style={ props.style }\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 { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n inputNode,\n icon: icon.value,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } satisfies SelectionControlSlot) ?? (\n <>\n { icon.value && <VIcon key=\"icon\" icon={ icon.value } /> }\n\n { inputNode }\n </>\n )}\n </div>\n </div>\n\n { label && (\n <VLabel for={ id.value } clickable onClick={ (e: Event) => e.stopPropagation() }>\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"],"mappings":"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"}