vuetify 3.5.8 → 3.5.10

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 (189) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +525 -13
  3. package/dist/json/importMap-labs.json +24 -8
  4. package/dist/json/importMap.json +130 -130
  5. package/dist/json/tags.json +148 -0
  6. package/dist/json/web-types.json +2021 -147
  7. package/dist/vuetify-labs.css +2819 -2760
  8. package/dist/vuetify-labs.d.ts +5860 -2816
  9. package/dist/vuetify-labs.esm.js +1286 -248
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +1286 -247
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +553 -547
  14. package/dist/vuetify.d.ts +2835 -2281
  15. package/dist/vuetify.esm.js +883 -408
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +882 -406
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +1137 -1109
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAlert/index.d.mts +15 -15
  23. package/lib/components/VApp/index.d.mts +8 -8
  24. package/lib/components/VAppBar/index.d.mts +7 -7
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs +9 -7
  26. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  27. package/lib/components/VAutocomplete/index.d.mts +232 -100
  28. package/lib/components/VAvatar/index.d.mts +8 -8
  29. package/lib/components/VBadge/index.d.mts +7 -7
  30. package/lib/components/VBanner/index.d.mts +20 -20
  31. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  32. package/lib/components/VBreadcrumbs/index.d.mts +27 -26
  33. package/lib/components/VBtnGroup/index.d.mts +8 -8
  34. package/lib/components/VCard/index.d.mts +32 -32
  35. package/lib/components/VCarousel/index.d.mts +6 -6
  36. package/lib/components/VCheckbox/index.d.mts +44 -44
  37. package/lib/components/VChip/index.d.mts +7 -7
  38. package/lib/components/VCode/index.d.mts +8 -8
  39. package/lib/components/VColorPicker/VColorPickerPreview.css +1 -0
  40. package/lib/components/VColorPicker/VColorPickerPreview.sass +1 -0
  41. package/lib/components/VColorPicker/_variables.scss +1 -0
  42. package/lib/components/VCombobox/VCombobox.mjs +10 -7
  43. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  44. package/lib/components/VCombobox/index.d.mts +232 -100
  45. package/lib/components/VDataTable/index.d.mts +6 -6
  46. package/lib/components/VDatePicker/VDatePickerControls.mjs +1 -0
  47. package/lib/components/VDatePicker/VDatePickerControls.mjs.map +1 -1
  48. package/lib/components/VDatePicker/VDatePickerMonth.mjs +10 -4
  49. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  50. package/lib/components/VDatePicker/index.d.mts +10 -10
  51. package/lib/components/VDefaultsProvider/index.d.mts +8 -8
  52. package/lib/components/VDialog/index.d.mts +12 -6
  53. package/lib/components/VDivider/index.d.mts +8 -8
  54. package/lib/components/VExpansionPanel/index.d.mts +19 -19
  55. package/lib/components/VField/VField.css +2 -0
  56. package/lib/components/VField/VField.mjs +1 -1
  57. package/lib/components/VField/VField.mjs.map +1 -1
  58. package/lib/components/VField/VField.sass +2 -0
  59. package/lib/components/VField/index.d.mts +28 -28
  60. package/lib/components/VFileInput/index.d.mts +133 -133
  61. package/lib/components/VFooter/index.d.mts +8 -8
  62. package/lib/components/VGrid/index.d.mts +32 -32
  63. package/lib/components/VIcon/VIcon.css +4 -0
  64. package/lib/components/VIcon/VIcon.mjs +7 -3
  65. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  66. package/lib/components/VIcon/VIcon.sass +4 -0
  67. package/lib/components/VIcon/_variables.scss +1 -0
  68. package/lib/components/VIcon/index.d.mts +25 -16
  69. package/lib/components/VImg/index.d.mts +4 -4
  70. package/lib/components/VInput/index.d.mts +21 -21
  71. package/lib/components/VKbd/index.d.mts +8 -8
  72. package/lib/components/VLabel/index.d.mts +8 -8
  73. package/lib/components/VLayout/index.d.mts +16 -16
  74. package/lib/components/VLazy/index.d.mts +8 -8
  75. package/lib/components/VList/VList.mjs +8 -2
  76. package/lib/components/VList/VList.mjs.map +1 -1
  77. package/lib/components/VList/VListGroup.mjs +3 -1
  78. package/lib/components/VList/VListGroup.mjs.map +1 -1
  79. package/lib/components/VList/VListItem.mjs +17 -4
  80. package/lib/components/VList/VListItem.mjs.map +1 -1
  81. package/lib/components/VList/index.d.mts +156 -54
  82. package/lib/components/VLocaleProvider/index.d.mts +12 -12
  83. package/lib/components/VMain/index.d.mts +8 -8
  84. package/lib/components/VMenu/VMenu.mjs +3 -0
  85. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  86. package/lib/components/VMenu/index.d.mts +14 -8
  87. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +1 -1
  88. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +22 -8
  89. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  90. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +2 -1
  91. package/lib/components/VNavigationDrawer/index.d.mts +11 -11
  92. package/lib/components/VOtpInput/VOtpInput.mjs +7 -2
  93. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  94. package/lib/components/VOtpInput/index.d.mts +31 -31
  95. package/lib/components/VOverlay/VOverlay.mjs +8 -3
  96. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  97. package/lib/components/VOverlay/index.d.mts +3 -0
  98. package/lib/components/VOverlay/scrollStrategies.mjs +2 -2
  99. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  100. package/lib/components/VPagination/index.d.mts +7 -7
  101. package/lib/components/VProgressLinear/VProgressLinear.css +0 -1
  102. package/lib/components/VProgressLinear/VProgressLinear.sass +0 -1
  103. package/lib/components/VProgressLinear/index.d.mts +7 -7
  104. package/lib/components/VRadioGroup/index.d.mts +44 -44
  105. package/lib/components/VRangeSlider/index.d.mts +47 -47
  106. package/lib/components/VRating/index.d.mts +7 -7
  107. package/lib/components/VResponsive/index.d.mts +8 -8
  108. package/lib/components/VSelect/VSelect.mjs +5 -3
  109. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  110. package/lib/components/VSelect/index.d.mts +232 -100
  111. package/lib/components/VSheet/index.d.mts +8 -8
  112. package/lib/components/VSkeletonLoader/index.d.mts +8 -8
  113. package/lib/components/VSlider/index.d.mts +47 -47
  114. package/lib/components/VSnackbar/index.d.mts +25 -19
  115. package/lib/components/VStepper/index.d.mts +41 -41
  116. package/lib/components/VSwitch/index.d.mts +39 -39
  117. package/lib/components/VSystemBar/index.d.mts +8 -8
  118. package/lib/components/VTabs/index.d.mts +15 -15
  119. package/lib/components/VTextField/index.d.mts +173 -173
  120. package/lib/components/VTextarea/index.d.mts +119 -119
  121. package/lib/components/VThemeProvider/index.d.mts +8 -8
  122. package/lib/components/VTimeline/index.d.mts +8 -8
  123. package/lib/components/VToolbar/index.d.mts +8 -8
  124. package/lib/components/VTooltip/index.d.mts +14 -8
  125. package/lib/components/VWindow/index.d.mts +10 -10
  126. package/lib/components/index.d.mts +2478 -1943
  127. package/lib/components/transitions/index.d.mts +128 -128
  128. package/lib/composables/date/adapters/vuetify.mjs +1 -1
  129. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  130. package/lib/composables/nested/activeStrategies.mjs +121 -0
  131. package/lib/composables/nested/activeStrategies.mjs.map +1 -0
  132. package/lib/composables/nested/nested.mjs +50 -1
  133. package/lib/composables/nested/nested.mjs.map +1 -1
  134. package/lib/composables/nested/selectStrategies.mjs +4 -2
  135. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  136. package/lib/composables/theme.mjs +1 -1
  137. package/lib/composables/theme.mjs.map +1 -1
  138. package/lib/entry-bundler.mjs +3 -2
  139. package/lib/entry-bundler.mjs.map +1 -1
  140. package/lib/framework.mjs +1 -1
  141. package/lib/framework.mjs.map +1 -1
  142. package/lib/iconsets/fa.mjs +2 -0
  143. package/lib/iconsets/fa.mjs.map +1 -1
  144. package/lib/iconsets/fa4.mjs +2 -0
  145. package/lib/iconsets/fa4.mjs.map +1 -1
  146. package/lib/iconsets/md.mjs +2 -0
  147. package/lib/iconsets/md.mjs.map +1 -1
  148. package/lib/iconsets/mdi-svg.mjs +2 -0
  149. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  150. package/lib/iconsets/mdi.mjs +2 -0
  151. package/lib/iconsets/mdi.mjs.map +1 -1
  152. package/lib/index.d.mts +48 -44
  153. package/lib/labs/VCalendar/index.d.mts +32 -32
  154. package/lib/labs/VFab/index.d.mts +15 -15
  155. package/lib/labs/VNumberInput/VNumberInput.css +38 -0
  156. package/lib/labs/VNumberInput/VNumberInput.mjs +209 -0
  157. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -0
  158. package/lib/labs/VNumberInput/VNumberInput.sass +47 -0
  159. package/lib/labs/VNumberInput/_variables.scss +1 -0
  160. package/lib/labs/VNumberInput/index.d.mts +607 -0
  161. package/lib/labs/VNumberInput/index.mjs +2 -0
  162. package/lib/labs/VNumberInput/index.mjs.map +1 -0
  163. package/lib/labs/VPicker/index.d.mts +8 -8
  164. package/lib/labs/VSparkline/index.d.mts +7 -7
  165. package/lib/labs/VSpeedDial/VSpeedDial.mjs +9 -5
  166. package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +1 -1
  167. package/lib/labs/VSpeedDial/index.d.mts +120 -24
  168. package/lib/labs/VTreeview/VTreeview.mjs +154 -0
  169. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -0
  170. package/lib/labs/VTreeview/VTreeviewChildren.mjs +98 -0
  171. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -0
  172. package/lib/labs/VTreeview/VTreeviewGroup.mjs +48 -0
  173. package/lib/labs/VTreeview/VTreeviewGroup.mjs.map +1 -0
  174. package/lib/labs/VTreeview/VTreeviewItem.css +17 -0
  175. package/lib/labs/VTreeview/VTreeviewItem.mjs +86 -0
  176. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -0
  177. package/lib/labs/VTreeview/VTreeviewItem.sass +19 -0
  178. package/lib/labs/VTreeview/index.d.mts +1975 -0
  179. package/lib/labs/VTreeview/index.mjs +4 -0
  180. package/lib/labs/VTreeview/index.mjs.map +1 -0
  181. package/lib/labs/VTreeview/shared.mjs +4 -0
  182. package/lib/labs/VTreeview/shared.mjs.map +1 -0
  183. package/lib/labs/VTreeview/variables.scss +8 -0
  184. package/lib/labs/components.d.mts +4553 -1925
  185. package/lib/labs/components.mjs +4 -2
  186. package/lib/labs/components.mjs.map +1 -1
  187. package/lib/locale/no.mjs +1 -1
  188. package/lib/locale/no.mjs.map +1 -1
  189. package/package.json +2 -2
@@ -18,8 +18,8 @@ declare const VSparkline: {
18
18
  smooth: boolean;
19
19
  padding: string | number;
20
20
  labels: SparklineItem[];
21
- gradient: string[];
22
21
  modelValue: SparklineItem[];
22
+ gradient: string[];
23
23
  itemValue: string;
24
24
  autoDraw: boolean;
25
25
  autoDrawEasing: string;
@@ -63,8 +63,8 @@ declare const VSparkline: {
63
63
  smooth: boolean;
64
64
  padding: string | number;
65
65
  labels: SparklineItem[];
66
- gradient: string[];
67
66
  modelValue: SparklineItem[];
67
+ gradient: string[];
68
68
  itemValue: string;
69
69
  autoDraw: boolean;
70
70
  autoDrawEasing: string;
@@ -108,8 +108,8 @@ declare const VSparkline: {
108
108
  smooth: boolean;
109
109
  padding: string | number;
110
110
  labels: SparklineItem[];
111
- gradient: string[];
112
111
  modelValue: SparklineItem[];
112
+ gradient: string[];
113
113
  itemValue: string;
114
114
  autoDraw: boolean;
115
115
  autoDrawEasing: string;
@@ -143,8 +143,8 @@ declare const VSparkline: {
143
143
  smooth: boolean;
144
144
  padding: string | number;
145
145
  labels: SparklineItem[];
146
- gradient: string[];
147
146
  modelValue: SparklineItem[];
147
+ gradient: string[];
148
148
  itemValue: string;
149
149
  autoDraw: boolean;
150
150
  autoDrawEasing: string;
@@ -188,8 +188,8 @@ declare const VSparkline: {
188
188
  smooth: boolean;
189
189
  padding: string | number;
190
190
  labels: SparklineItem[];
191
- gradient: string[];
192
191
  modelValue: SparklineItem[];
192
+ gradient: string[];
193
193
  itemValue: string;
194
194
  autoDraw: boolean;
195
195
  autoDrawEasing: string;
@@ -210,8 +210,8 @@ declare const VSparkline: {
210
210
  smooth: boolean;
211
211
  padding: string | number;
212
212
  labels: SparklineItem[];
213
- gradient: string[];
214
213
  modelValue: SparklineItem[];
214
+ gradient: string[];
215
215
  itemValue: string;
216
216
  autoDraw: boolean;
217
217
  autoDrawEasing: string;
@@ -255,8 +255,8 @@ declare const VSparkline: {
255
255
  smooth: boolean;
256
256
  padding: string | number;
257
257
  labels: SparklineItem[];
258
- gradient: string[];
259
258
  modelValue: SparklineItem[];
259
+ gradient: string[];
260
260
  itemValue: string;
261
261
  autoDraw: boolean;
262
262
  autoDrawEasing: string;
@@ -7,7 +7,8 @@ import { VDefaultsProvider } from "../../components/VDefaultsProvider/index.mjs"
7
7
  import { makeVMenuProps, VMenu } from "../../components/VMenu/VMenu.mjs"; // Composables
8
8
  import { makeComponentProps } from "../../composables/component.mjs";
9
9
  import { makeTransitionProps, MaybeTransition } from "../../composables/transition.mjs"; // Utilities
10
- import { genericComponent, propsFactory, useRender } from "../../util/index.mjs";
10
+ import { ref } from 'vue';
11
+ import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
11
12
  export const makeVSpeedDialProps = propsFactory({
12
13
  ...makeComponentProps(),
13
14
  ...makeVMenuProps({
@@ -26,14 +27,17 @@ export const VSpeedDial = genericComponent()({
26
27
  let {
27
28
  slots
28
29
  } = _ref;
30
+ const menuRef = ref();
29
31
  useRender(() => {
30
32
  const menuProps = VMenu.filterProps(props);
31
33
  return _createVNode(VMenu, _mergeProps(menuProps, {
32
34
  "class": props.class,
33
35
  "style": props.style,
34
- "contentClass": "v-speed-dial__content"
36
+ "contentClass": "v-speed-dial__content",
37
+ "ref": menuRef
35
38
  }), {
36
- default: () => [_createVNode(VDefaultsProvider, {
39
+ ...slots,
40
+ default: slotProps => _createVNode(VDefaultsProvider, {
37
41
  "defaults": {
38
42
  VBtn: {
39
43
  size: 'small'
@@ -45,9 +49,9 @@ export const VSpeedDial = genericComponent()({
45
49
  "group": true,
46
50
  "transition": props.transition
47
51
  }, {
48
- default: () => [slots.default?.()]
52
+ default: () => [slots.default?.(slotProps)]
49
53
  })]
50
- })]
54
+ })
51
55
  });
52
56
  });
53
57
  return {};
@@ -1 +1 @@
1
- {"version":3,"file":"VSpeedDial.mjs","names":["VDefaultsProvider","makeVMenuProps","VMenu","makeComponentProps","makeTransitionProps","MaybeTransition","genericComponent","propsFactory","useRender","makeVSpeedDialProps","offset","minWidth","location","transition","VSpeedDial","name","props","setup","_ref","slots","menuProps","filterProps","_createVNode","_mergeProps","class","style","default","VBtn","size"],"sources":["../../../src/labs/VSpeedDial/VSpeedDial.tsx"],"sourcesContent":["// Styles\nimport './VSpeedDial.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { makeVMenuProps, VMenu } from '@/components/VMenu/VMenu'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVSpeedDialProps = propsFactory({\n ...makeComponentProps(),\n ...makeVMenuProps({ offset: 8, minWidth: 0, location: 'top center' as const }),\n ...makeTransitionProps({ transition: 'fade-transition' }),\n}, 'VSpeedDial')\n\nexport const VSpeedDial = genericComponent()({\n name: 'VSpeedDial',\n\n props: makeVSpeedDialProps(),\n\n setup (props, { slots }) {\n useRender(() => {\n const menuProps = VMenu.filterProps(props)\n\n return (\n <VMenu\n { ...menuProps }\n class={ props.class }\n style={ props.style }\n contentClass=\"v-speed-dial__content\"\n >\n <VDefaultsProvider\n defaults={{\n VBtn: {\n size: 'small',\n },\n }}\n >\n <MaybeTransition\n appear\n group\n transition={ props.transition }\n >\n { slots.default?.() }\n </MaybeTransition>\n </VDefaultsProvider>\n </VMenu>\n )\n })\n\n return {}\n },\n})\n\nexport type VSpeedDial = InstanceType<typeof VSpeedDial>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB;AAAA,SACjBC,cAAc,EAAEC,KAAK,4CAE9B;AAAA,SACSC,kBAAkB;AAAA,SAClBC,mBAAmB,EAAEC,eAAe,4CAE7C;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAElD,OAAO,MAAMC,mBAAmB,GAAGF,YAAY,CAAC;EAC9C,GAAGJ,kBAAkB,CAAC,CAAC;EACvB,GAAGF,cAAc,CAAC;IAAES,MAAM,EAAE,CAAC;IAAEC,QAAQ,EAAE,CAAC;IAAEC,QAAQ,EAAE;EAAsB,CAAC,CAAC;EAC9E,GAAGR,mBAAmB,CAAC;IAAES,UAAU,EAAE;EAAkB,CAAC;AAC1D,CAAC,EAAE,YAAY,CAAC;AAEhB,OAAO,MAAMC,UAAU,GAAGR,gBAAgB,CAAC,CAAC,CAAC;EAC3CS,IAAI,EAAE,YAAY;EAElBC,KAAK,EAAEP,mBAAmB,CAAC,CAAC;EAE5BQ,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrBV,SAAS,CAAC,MAAM;MACd,MAAMY,SAAS,GAAGlB,KAAK,CAACmB,WAAW,CAACL,KAAK,CAAC;MAE1C,OAAAM,YAAA,CAAApB,KAAA,EAAAqB,WAAA,CAESH,SAAS;QAAA,SACNJ,KAAK,CAACQ,KAAK;QAAA,SACXR,KAAK,CAACS,KAAK;QAAA;MAAA;QAAAC,OAAA,EAAAA,CAAA,MAAAJ,YAAA,CAAAtB,iBAAA;UAAA,YAIP;YACR2B,IAAI,EAAE;cACJC,IAAI,EAAE;YACR;UACF;QAAC;UAAAF,OAAA,EAAAA,CAAA,MAAAJ,YAAA,CAAAjB,eAAA;YAAA;YAAA;YAAA,cAKcW,KAAK,CAACH;UAAU;YAAAa,OAAA,EAAAA,CAAA,MAE3BP,KAAK,CAACO,OAAO,GAAG,CAAC;UAAA;QAAA;MAAA;IAK7B,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VSpeedDial.mjs","names":["VDefaultsProvider","makeVMenuProps","VMenu","makeComponentProps","makeTransitionProps","MaybeTransition","ref","genericComponent","propsFactory","useRender","makeVSpeedDialProps","offset","minWidth","location","transition","VSpeedDial","name","props","setup","_ref","slots","menuRef","menuProps","filterProps","_createVNode","_mergeProps","class","style","default","slotProps","VBtn","size"],"sources":["../../../src/labs/VSpeedDial/VSpeedDial.tsx"],"sourcesContent":["// Styles\nimport './VSpeedDial.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { makeVMenuProps, VMenu } from '@/components/VMenu/VMenu'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVSpeedDialProps = propsFactory({\n ...makeComponentProps(),\n ...makeVMenuProps({ offset: 8, minWidth: 0, location: 'top center' as const }),\n ...makeTransitionProps({ transition: 'fade-transition' }),\n}, 'VSpeedDial')\n\nexport const VSpeedDial = genericComponent<OverlaySlots>()({\n name: 'VSpeedDial',\n\n props: makeVSpeedDialProps(),\n\n setup (props, { slots }) {\n const menuRef = ref<VMenu>()\n\n useRender(() => {\n const menuProps = VMenu.filterProps(props)\n\n return (\n <VMenu\n { ...menuProps }\n class={ props.class }\n style={ props.style }\n contentClass=\"v-speed-dial__content\"\n ref={ menuRef }\n >\n {{\n ...slots,\n default: slotProps => (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n size: 'small',\n },\n }}\n >\n <MaybeTransition\n appear\n group\n transition={ props.transition }\n >\n { slots.default?.(slotProps) }\n </MaybeTransition>\n </VDefaultsProvider>\n ),\n }}\n </VMenu>\n )\n })\n\n return {}\n },\n})\n\nexport type VSpeedDial = InstanceType<typeof VSpeedDial>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB;AAAA,SACjBC,cAAc,EAAEC,KAAK,4CAE9B;AAAA,SACSC,kBAAkB;AAAA,SAClBC,mBAAmB,EAAEC,eAAe,4CAE7C;AACA,SAASC,GAAG,QAAQ,KAAK;AAAA,SAChBC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAGA,OAAO,MAAMC,mBAAmB,GAAGF,YAAY,CAAC;EAC9C,GAAGL,kBAAkB,CAAC,CAAC;EACvB,GAAGF,cAAc,CAAC;IAAEU,MAAM,EAAE,CAAC;IAAEC,QAAQ,EAAE,CAAC;IAAEC,QAAQ,EAAE;EAAsB,CAAC,CAAC;EAC9E,GAAGT,mBAAmB,CAAC;IAAEU,UAAU,EAAE;EAAkB,CAAC;AAC1D,CAAC,EAAE,YAAY,CAAC;AAEhB,OAAO,MAAMC,UAAU,GAAGR,gBAAgB,CAAe,CAAC,CAAC;EACzDS,IAAI,EAAE,YAAY;EAElBC,KAAK,EAAEP,mBAAmB,CAAC,CAAC;EAE5BQ,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAME,OAAO,GAAGf,GAAG,CAAQ,CAAC;IAE5BG,SAAS,CAAC,MAAM;MACd,MAAMa,SAAS,GAAGpB,KAAK,CAACqB,WAAW,CAACN,KAAK,CAAC;MAE1C,OAAAO,YAAA,CAAAtB,KAAA,EAAAuB,WAAA,CAESH,SAAS;QAAA,SACNL,KAAK,CAACS,KAAK;QAAA,SACXT,KAAK,CAACU,KAAK;QAAA;QAAA,OAEbN;MAAO;QAGX,GAAGD,KAAK;QACRQ,OAAO,EAAEC,SAAS,IAAAL,YAAA,CAAAxB,iBAAA;UAAA,YAEJ;YACR8B,IAAI,EAAE;cACJC,IAAI,EAAE;YACR;UACF;QAAC;UAAAH,OAAA,EAAAA,CAAA,MAAAJ,YAAA,CAAAnB,eAAA;YAAA;YAAA;YAAA,cAKcY,KAAK,CAACH;UAAU;YAAAc,OAAA,EAAAA,CAAA,MAE3BR,KAAK,CAACQ,OAAO,GAAGC,SAAS,CAAC;UAAA;QAAA;MAGjC;IAIT,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
@@ -130,14 +130,34 @@ declare const VSpeedDial: {
130
130
  contentProps?: any;
131
131
  attach?: string | boolean | Element | undefined;
132
132
  } & {
133
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
134
- default?: (() => vue.VNodeChild) | undefined;
135
- };
133
+ $children?: vue.VNodeChild | {
134
+ default?: ((arg: {
135
+ isActive: vue.Ref<boolean>;
136
+ }) => vue.VNodeChild) | undefined;
137
+ activator?: ((arg: {
138
+ isActive: boolean;
139
+ props: Record<string, any>;
140
+ }) => vue.VNodeChild) | undefined;
141
+ } | ((arg: {
142
+ isActive: vue.Ref<boolean>;
143
+ }) => vue.VNodeChild);
136
144
  'v-slots'?: {
137
- default?: false | (() => vue.VNodeChild) | undefined;
145
+ default?: false | ((arg: {
146
+ isActive: vue.Ref<boolean>;
147
+ }) => vue.VNodeChild) | undefined;
148
+ activator?: false | ((arg: {
149
+ isActive: boolean;
150
+ props: Record<string, any>;
151
+ }) => vue.VNodeChild) | undefined;
138
152
  } | undefined;
139
153
  } & {
140
- "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
154
+ "v-slot:default"?: false | ((arg: {
155
+ isActive: vue.Ref<boolean>;
156
+ }) => vue.VNodeChild) | undefined;
157
+ "v-slot:activator"?: false | ((arg: {
158
+ isActive: boolean;
159
+ props: Record<string, any>;
160
+ }) => vue.VNodeChild) | undefined;
141
161
  }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
142
162
  offset: NonNullable<string | number | number[] | undefined>;
143
163
  location: NonNullable<Anchor>;
@@ -183,14 +203,34 @@ declare const VSpeedDial: {
183
203
  contentProps?: any;
184
204
  attach?: string | boolean | Element | undefined;
185
205
  } & {
186
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
187
- default?: (() => vue.VNodeChild) | undefined;
188
- };
206
+ $children?: vue.VNodeChild | {
207
+ default?: ((arg: {
208
+ isActive: vue.Ref<boolean>;
209
+ }) => vue.VNodeChild) | undefined;
210
+ activator?: ((arg: {
211
+ isActive: boolean;
212
+ props: Record<string, any>;
213
+ }) => vue.VNodeChild) | undefined;
214
+ } | ((arg: {
215
+ isActive: vue.Ref<boolean>;
216
+ }) => vue.VNodeChild);
189
217
  'v-slots'?: {
190
- default?: false | (() => vue.VNodeChild) | undefined;
218
+ default?: false | ((arg: {
219
+ isActive: vue.Ref<boolean>;
220
+ }) => vue.VNodeChild) | undefined;
221
+ activator?: false | ((arg: {
222
+ isActive: boolean;
223
+ props: Record<string, any>;
224
+ }) => vue.VNodeChild) | undefined;
191
225
  } | undefined;
192
226
  } & {
193
- "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
227
+ "v-slot:default"?: false | ((arg: {
228
+ isActive: vue.Ref<boolean>;
229
+ }) => vue.VNodeChild) | undefined;
230
+ "v-slot:activator"?: false | ((arg: {
231
+ isActive: boolean;
232
+ props: Record<string, any>;
233
+ }) => vue.VNodeChild) | undefined;
194
234
  }, {
195
235
  offset: NonNullable<string | number | number[] | undefined>;
196
236
  location: NonNullable<Anchor>;
@@ -221,7 +261,15 @@ declare const VSpeedDial: {
221
261
  persistent: boolean;
222
262
  scrim: NonNullable<string | boolean>;
223
263
  }, true, {}, vue.SlotsType<Partial<{
224
- default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
264
+ default: (arg: {
265
+ isActive: vue.Ref<boolean>;
266
+ }) => vue.VNode<vue.RendererNode, vue.RendererElement, {
267
+ [key: string]: any;
268
+ }>[];
269
+ activator: (arg: {
270
+ isActive: boolean;
271
+ props: Record<string, any>;
272
+ }) => vue.VNode<vue.RendererNode, vue.RendererElement, {
225
273
  [key: string]: any;
226
274
  }>[];
227
275
  }>>, {
@@ -276,14 +324,34 @@ declare const VSpeedDial: {
276
324
  contentProps?: any;
277
325
  attach?: string | boolean | Element | undefined;
278
326
  } & {
279
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
280
- default?: (() => vue.VNodeChild) | undefined;
281
- };
327
+ $children?: vue.VNodeChild | {
328
+ default?: ((arg: {
329
+ isActive: vue.Ref<boolean>;
330
+ }) => vue.VNodeChild) | undefined;
331
+ activator?: ((arg: {
332
+ isActive: boolean;
333
+ props: Record<string, any>;
334
+ }) => vue.VNodeChild) | undefined;
335
+ } | ((arg: {
336
+ isActive: vue.Ref<boolean>;
337
+ }) => vue.VNodeChild);
282
338
  'v-slots'?: {
283
- default?: false | (() => vue.VNodeChild) | undefined;
339
+ default?: false | ((arg: {
340
+ isActive: vue.Ref<boolean>;
341
+ }) => vue.VNodeChild) | undefined;
342
+ activator?: false | ((arg: {
343
+ isActive: boolean;
344
+ props: Record<string, any>;
345
+ }) => vue.VNodeChild) | undefined;
284
346
  } | undefined;
285
347
  } & {
286
- "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
348
+ "v-slot:default"?: false | ((arg: {
349
+ isActive: vue.Ref<boolean>;
350
+ }) => vue.VNodeChild) | undefined;
351
+ "v-slot:activator"?: false | ((arg: {
352
+ isActive: boolean;
353
+ props: Record<string, any>;
354
+ }) => vue.VNodeChild) | undefined;
287
355
  }, {}, {}, {}, {}, {
288
356
  offset: NonNullable<string | number | number[] | undefined>;
289
357
  location: NonNullable<Anchor>;
@@ -362,14 +430,34 @@ declare const VSpeedDial: {
362
430
  contentProps?: any;
363
431
  attach?: string | boolean | Element | undefined;
364
432
  } & {
365
- $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
366
- default?: (() => vue.VNodeChild) | undefined;
367
- };
433
+ $children?: vue.VNodeChild | {
434
+ default?: ((arg: {
435
+ isActive: vue.Ref<boolean>;
436
+ }) => vue.VNodeChild) | undefined;
437
+ activator?: ((arg: {
438
+ isActive: boolean;
439
+ props: Record<string, any>;
440
+ }) => vue.VNodeChild) | undefined;
441
+ } | ((arg: {
442
+ isActive: vue.Ref<boolean>;
443
+ }) => vue.VNodeChild);
368
444
  'v-slots'?: {
369
- default?: false | (() => vue.VNodeChild) | undefined;
445
+ default?: false | ((arg: {
446
+ isActive: vue.Ref<boolean>;
447
+ }) => vue.VNodeChild) | undefined;
448
+ activator?: false | ((arg: {
449
+ isActive: boolean;
450
+ props: Record<string, any>;
451
+ }) => vue.VNodeChild) | undefined;
370
452
  } | undefined;
371
453
  } & {
372
- "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
454
+ "v-slot:default"?: false | ((arg: {
455
+ isActive: vue.Ref<boolean>;
456
+ }) => vue.VNodeChild) | undefined;
457
+ "v-slot:activator"?: false | ((arg: {
458
+ isActive: boolean;
459
+ props: Record<string, any>;
460
+ }) => vue.VNodeChild) | undefined;
373
461
  }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, {
374
462
  offset: NonNullable<string | number | number[] | undefined>;
375
463
  location: NonNullable<Anchor>;
@@ -400,7 +488,15 @@ declare const VSpeedDial: {
400
488
  persistent: boolean;
401
489
  scrim: NonNullable<string | boolean>;
402
490
  }, {}, string, vue.SlotsType<Partial<{
403
- default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
491
+ default: (arg: {
492
+ isActive: vue.Ref<boolean>;
493
+ }) => vue.VNode<vue.RendererNode, vue.RendererElement, {
494
+ [key: string]: any;
495
+ }>[];
496
+ activator: (arg: {
497
+ isActive: boolean;
498
+ props: Record<string, any>;
499
+ }) => vue.VNode<vue.RendererNode, vue.RendererElement, {
404
500
  [key: string]: any;
405
501
  }>[];
406
502
  }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
@@ -456,8 +552,8 @@ declare const VSpeedDial: {
456
552
  disabled: BooleanConstructor;
457
553
  class: vue.PropType<any>;
458
554
  theme: StringConstructor;
459
- contentClass: null;
460
555
  modelValue: BooleanConstructor;
556
+ contentClass: null;
461
557
  activator: vue.PropType<Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined>;
462
558
  locationStrategy: Omit<{
463
559
  type: vue.PropType<"connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
@@ -576,8 +672,8 @@ declare const VSpeedDial: {
576
672
  disabled: BooleanConstructor;
577
673
  class: vue.PropType<any>;
578
674
  theme: StringConstructor;
579
- contentClass: null;
580
675
  modelValue: BooleanConstructor;
676
+ contentClass: null;
581
677
  activator: vue.PropType<Element | "parent" | (string & {}) | vue.ComponentPublicInstance | undefined>;
582
678
  locationStrategy: Omit<{
583
679
  type: vue.PropType<"connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
@@ -0,0 +1,154 @@
1
+ import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from "vue";
2
+ // Components
3
+ import { makeVTreeviewChildrenProps, VTreeviewChildren } from "./VTreeviewChildren.mjs";
4
+ import { makeVListProps, useListItems, VList } from "../../components/VList/VList.mjs"; // Composables
5
+ import { provideDefaults } from "../../composables/defaults.mjs";
6
+ import { makeFilterProps, useFilter } from "../../composables/filter.mjs";
7
+ import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
8
+ import { computed, provide, ref, toRef, watch } from 'vue';
9
+ import { genericComponent, omit, propsFactory, useRender } from "../../util/index.mjs"; // Types
10
+ import { VTreeviewSymbol } from "./shared.mjs";
11
+ function flatten(items) {
12
+ let flat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
13
+ for (const item of items) {
14
+ flat.push(item);
15
+ if (item.children) flatten(item.children, flat);
16
+ }
17
+ return flat;
18
+ }
19
+ export const makeVTreeviewProps = propsFactory({
20
+ openAll: Boolean,
21
+ search: String,
22
+ ...makeFilterProps({
23
+ filterKeys: ['title']
24
+ }),
25
+ ...makeVTreeviewChildrenProps(),
26
+ ...omit(makeVListProps({
27
+ collapseIcon: '$treeviewCollapse',
28
+ expandIcon: '$treeviewExpand',
29
+ selectStrategy: 'independent',
30
+ openStrategy: 'multiple',
31
+ slim: true
32
+ }), ['nav'])
33
+ }, 'VTreeview');
34
+ export const VTreeview = genericComponent()({
35
+ name: 'VTreeview',
36
+ props: makeVTreeviewProps(),
37
+ emits: {
38
+ 'update:opened': val => true,
39
+ 'update:activated': val => true,
40
+ 'update:selected': val => true,
41
+ 'click:open': value => true,
42
+ 'click:select': value => true
43
+ },
44
+ setup(props, _ref) {
45
+ let {
46
+ slots
47
+ } = _ref;
48
+ const {
49
+ items
50
+ } = useListItems(props);
51
+ const activeColor = toRef(props, 'activeColor');
52
+ const baseColor = toRef(props, 'baseColor');
53
+ const color = toRef(props, 'color');
54
+ const opened = useProxiedModel(props, 'opened');
55
+ const activated = useProxiedModel(props, 'activated');
56
+ const selected = useProxiedModel(props, 'selected');
57
+ const vListRef = ref();
58
+ const flatItems = computed(() => flatten(items.value));
59
+ const search = toRef(props, 'search');
60
+ const {
61
+ filteredItems
62
+ } = useFilter(props, flatItems, search);
63
+ const visibleIds = computed(() => {
64
+ if (!search.value) {
65
+ return null;
66
+ }
67
+ return new Set(filteredItems.value.flatMap(item => {
68
+ return [...getPath(item.props.value), ...getChildren(item.props.value)];
69
+ }));
70
+ });
71
+ function getPath(id) {
72
+ const path = [];
73
+ let parent = id;
74
+ while (parent != null) {
75
+ path.unshift(parent);
76
+ parent = vListRef.value?.parents.get(parent);
77
+ }
78
+ return path;
79
+ }
80
+ function getChildren(id) {
81
+ const arr = [];
82
+ const queue = (vListRef.value?.children.get(id) ?? []).slice();
83
+ while (queue.length) {
84
+ const child = queue.shift();
85
+ if (!child) continue;
86
+ arr.push(child);
87
+ queue.push(...(vListRef.value?.children.get(child) ?? []).slice());
88
+ }
89
+ return arr;
90
+ }
91
+ watch(() => props.openAll, val => {
92
+ opened.value = val ? openAll(items.value) : [];
93
+ }, {
94
+ immediate: true
95
+ });
96
+ function openAll(item) {
97
+ let ids = [];
98
+ for (const i of item) {
99
+ if (!i.children) continue;
100
+ ids.push(i.value);
101
+ if (i.children) {
102
+ ids = ids.concat(openAll(i.children));
103
+ }
104
+ }
105
+ return ids;
106
+ }
107
+ provide(VTreeviewSymbol, {
108
+ visibleIds
109
+ });
110
+ provideDefaults({
111
+ VTreeviewGroup: {
112
+ activeColor,
113
+ baseColor,
114
+ color,
115
+ collapseIcon: toRef(props, 'collapseIcon'),
116
+ expandIcon: toRef(props, 'expandIcon')
117
+ },
118
+ VTreeviewItem: {
119
+ activeClass: toRef(props, 'activeClass'),
120
+ activeColor,
121
+ baseColor,
122
+ color,
123
+ density: toRef(props, 'density'),
124
+ disabled: toRef(props, 'disabled'),
125
+ lines: toRef(props, 'lines'),
126
+ variant: toRef(props, 'variant')
127
+ }
128
+ });
129
+ useRender(() => {
130
+ const listProps = VList.filterProps(props);
131
+ const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
132
+ return _createVNode(VList, _mergeProps({
133
+ "ref": vListRef
134
+ }, listProps, {
135
+ "class": ['v-treeview', props.class],
136
+ "style": props.style,
137
+ "opened": opened.value,
138
+ "onUpdate:opened": $event => opened.value = $event,
139
+ "activated": activated.value,
140
+ "onUpdate:activated": $event => activated.value = $event,
141
+ "selected": selected.value,
142
+ "onUpdate:selected": $event => selected.value = $event
143
+ }), {
144
+ default: () => [_createVNode(VTreeviewChildren, _mergeProps(treeviewChildrenProps, {
145
+ "items": items.value
146
+ }), slots)]
147
+ });
148
+ });
149
+ return {
150
+ open
151
+ };
152
+ }
153
+ });
154
+ //# sourceMappingURL=VTreeview.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VTreeview.mjs","names":["makeVTreeviewChildrenProps","VTreeviewChildren","makeVListProps","useListItems","VList","provideDefaults","makeFilterProps","useFilter","useProxiedModel","computed","provide","ref","toRef","watch","genericComponent","omit","propsFactory","useRender","VTreeviewSymbol","flatten","items","flat","arguments","length","undefined","item","push","children","makeVTreeviewProps","openAll","Boolean","search","String","filterKeys","collapseIcon","expandIcon","selectStrategy","openStrategy","slim","VTreeview","name","props","emits","val","value","setup","_ref","slots","activeColor","baseColor","color","opened","activated","selected","vListRef","flatItems","filteredItems","visibleIds","Set","flatMap","getPath","getChildren","id","path","parent","unshift","parents","get","arr","queue","slice","child","shift","immediate","ids","i","concat","VTreeviewGroup","VTreeviewItem","activeClass","density","disabled","lines","variant","listProps","filterProps","treeviewChildrenProps","_createVNode","_mergeProps","class","style","$event","default","open"],"sources":["../../../src/labs/VTreeview/VTreeview.tsx"],"sourcesContent":["// Components\nimport { makeVTreeviewChildrenProps, VTreeviewChildren } from './VTreeviewChildren'\nimport { makeVListProps, useListItems, VList } from '@/components/VList/VList'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, provide, ref, toRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VTreeviewSymbol } from './shared'\nimport type { VListChildrenSlots } from '@/components/VList/VListChildren'\nimport type { ListItem } from '@/composables/list-items'\nimport type { GenericProps } from '@/util'\n\nfunction flatten (items: ListItem[], flat: ListItem[] = []) {\n for (const item of items) {\n flat.push(item)\n if (item.children) flatten(item.children, flat)\n }\n return flat\n}\n\nexport const makeVTreeviewProps = propsFactory({\n openAll: Boolean,\n search: String,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeVTreeviewChildrenProps(),\n ...omit(makeVListProps({\n collapseIcon: '$treeviewCollapse',\n expandIcon: '$treeviewExpand',\n selectStrategy: 'independent' as const,\n openStrategy: 'multiple' as const,\n slim: true,\n }), ['nav']),\n}, 'VTreeview')\n\nexport const VTreeview = genericComponent<new <T>(\n props: {\n items?: T[]\n },\n slots: VListChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeview',\n\n props: makeVTreeviewProps(),\n\n emits: {\n 'update:opened': (val: unknown[]) => true,\n 'update:activated': (val: unknown[]) => true,\n 'update:selected': (val: unknown[]) => true,\n 'click:open': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:select': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n },\n\n setup (props, { slots }) {\n const { items } = useListItems(props)\n const activeColor = toRef(props, 'activeColor')\n const baseColor = toRef(props, 'baseColor')\n const color = toRef(props, 'color')\n const opened = useProxiedModel(props, 'opened')\n const activated = useProxiedModel(props, 'activated')\n const selected = useProxiedModel(props, 'selected')\n\n const vListRef = ref<VList>()\n\n const flatItems = computed(() => flatten(items.value))\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter(props, flatItems, search)\n const visibleIds = computed(() => {\n if (!search.value) {\n return null\n }\n return new Set(filteredItems.value.flatMap(item => {\n return [...getPath(item.props.value), ...getChildren(item.props.value)]\n }))\n })\n\n function getPath (id: unknown) {\n const path: unknown[] = []\n let parent: unknown = id\n while (parent != null) {\n path.unshift(parent)\n parent = vListRef.value?.parents.get(parent)\n }\n return path\n }\n\n function getChildren (id: unknown) {\n const arr: unknown[] = []\n const queue = ((vListRef.value?.children.get(id) ?? []).slice())\n while (queue.length) {\n const child = queue.shift()\n if (!child) continue\n arr.push(child)\n queue.push(...((vListRef.value?.children.get(child) ?? []).slice()))\n }\n return arr\n }\n\n watch(() => props.openAll, val => {\n opened.value = val ? openAll(items.value) : []\n }, { immediate: true })\n\n function openAll (item: any) {\n let ids: number[] = []\n\n for (const i of item) {\n if (!i.children) continue\n\n ids.push(i.value)\n\n if (i.children) {\n ids = ids.concat(openAll(i.children))\n }\n }\n\n return ids\n }\n\n provide(VTreeviewSymbol, { visibleIds })\n\n provideDefaults({\n VTreeviewGroup: {\n activeColor,\n baseColor,\n color,\n collapseIcon: toRef(props, 'collapseIcon'),\n expandIcon: toRef(props, 'expandIcon'),\n },\n VTreeviewItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor,\n baseColor,\n color,\n density: toRef(props, 'density'),\n disabled: toRef(props, 'disabled'),\n lines: toRef(props, 'lines'),\n variant: toRef(props, 'variant'),\n },\n })\n\n useRender(() => {\n const listProps = VList.filterProps(props)\n const treeviewChildrenProps = VTreeviewChildren.filterProps(props)\n\n return (\n <VList\n ref={ vListRef }\n { ...listProps }\n class={[\n 'v-treeview',\n props.class,\n ]}\n style={ props.style }\n v-model:opened={ opened.value }\n v-model:activated={ activated.value }\n v-model:selected={ selected.value }\n >\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n items={ items.value }\n v-slots={ slots }\n ></VTreeviewChildren>\n </VList>\n )\n })\n\n return {\n open,\n }\n },\n})\n\nexport type VTreeview = InstanceType<typeof VTreeview>\n"],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
2
+ // Components
3
+ import { VTreeviewGroup } from "./VTreeviewGroup.mjs";
4
+ import { VTreeviewItem } from "./VTreeviewItem.mjs";
5
+ import { VCheckboxBtn } from "../../components/VCheckbox/index.mjs"; // Utilities
6
+ import { shallowRef } from 'vue';
7
+ import { genericComponent, propsFactory } from "../../util/index.mjs"; // Types
8
+ export const makeVTreeviewChildrenProps = propsFactory({
9
+ loadChildren: Function,
10
+ loadingIcon: {
11
+ type: String,
12
+ default: '$loading'
13
+ },
14
+ items: Array,
15
+ selectable: Boolean
16
+ }, 'VTreeviewChildren');
17
+ export const VTreeviewChildren = genericComponent()({
18
+ name: 'VTreeviewChildren',
19
+ props: makeVTreeviewChildrenProps(),
20
+ setup(props, _ref) {
21
+ let {
22
+ emit,
23
+ slots
24
+ } = _ref;
25
+ const isLoading = shallowRef(false);
26
+ const hasLoaded = shallowRef(false);
27
+ function checkChildren(item) {
28
+ return new Promise(resolve => {
29
+ if (!props.items?.length || !props.loadChildren || hasLoaded.value) return resolve();
30
+ isLoading.value = true;
31
+ props.loadChildren(item).then(resolve);
32
+ }).then(() => {
33
+ hasLoaded.value = true;
34
+ }).finally(() => {
35
+ isLoading.value = false;
36
+ });
37
+ }
38
+ function onClick(e, item) {
39
+ e.stopPropagation();
40
+ checkChildren(item);
41
+ }
42
+ return () => slots.default?.() ?? props.items?.map(_ref2 => {
43
+ let {
44
+ children,
45
+ props: itemProps,
46
+ raw: item
47
+ } = _ref2;
48
+ const slotsWithItem = {
49
+ prepend: slots.prepend ? slotProps => slots.prepend?.({
50
+ ...slotProps,
51
+ item
52
+ }) : props.selectable ? _ref3 => {
53
+ let {
54
+ isSelected,
55
+ isIndeterminate
56
+ } = _ref3;
57
+ return _createVNode(VCheckboxBtn, {
58
+ "key": item.value,
59
+ "tabindex": "-1",
60
+ "modelValue": isSelected,
61
+ "loading": isLoading.value,
62
+ "indeterminate": isIndeterminate,
63
+ "onClick": e => onClick(e, item)
64
+ }, null);
65
+ } : undefined,
66
+ append: slots.append ? slotProps => slots.append?.({
67
+ ...slotProps,
68
+ item
69
+ }) : undefined,
70
+ title: slots.title ? slotProps => slots.title?.({
71
+ ...slotProps,
72
+ item
73
+ }) : undefined
74
+ };
75
+ const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
76
+ const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
77
+ return children ? _createVNode(VTreeviewGroup, _mergeProps({
78
+ "value": itemProps?.value
79
+ }, treeviewGroupProps), {
80
+ activator: _ref4 => {
81
+ let {
82
+ props: activatorProps
83
+ } = _ref4;
84
+ return _createVNode(VTreeviewItem, _mergeProps(itemProps, activatorProps, {
85
+ "loading": isLoading.value,
86
+ "onClick": e => onClick(e, item)
87
+ }), slotsWithItem);
88
+ },
89
+ default: () => _createVNode(VTreeviewChildren, _mergeProps(treeviewChildrenProps, {
90
+ "items": children
91
+ }), slots)
92
+ }) : slots.item?.({
93
+ props: itemProps
94
+ }) ?? _createVNode(VTreeviewItem, itemProps, slotsWithItem);
95
+ });
96
+ }
97
+ });
98
+ //# sourceMappingURL=VTreeviewChildren.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VTreeviewChildren.mjs","names":["VTreeviewGroup","VTreeviewItem","VCheckboxBtn","shallowRef","genericComponent","propsFactory","makeVTreeviewChildrenProps","loadChildren","Function","loadingIcon","type","String","default","items","Array","selectable","Boolean","VTreeviewChildren","name","props","setup","_ref","emit","slots","isLoading","hasLoaded","checkChildren","item","Promise","resolve","length","value","then","finally","onClick","e","stopPropagation","map","_ref2","children","itemProps","raw","slotsWithItem","prepend","slotProps","_ref3","isSelected","isIndeterminate","_createVNode","undefined","append","title","treeviewGroupProps","filterProps","treeviewChildrenProps","_mergeProps","activator","_ref4","activatorProps"],"sources":["../../../src/labs/VTreeview/VTreeviewChildren.tsx"],"sourcesContent":["// Components\nimport { VTreeviewGroup } from './VTreeviewGroup'\nimport { VTreeviewItem } from './VTreeviewItem'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Utilities\nimport { shallowRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalListItem } from '@/components/VList/VList'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\nimport type { GenericProps } from '@/util'\n\nexport type VTreeviewChildrenSlots<T> = {\n [K in keyof Omit<VListItemSlots, 'default'>]: VListItemSlots[K] & { item: T }\n} & {\n default: never\n item: { props: InternalListItem['props'] }\n}\n\nexport const makeVTreeviewChildrenProps = propsFactory({\n loadChildren: Function as PropType<(item: unknown) => Promise<void>>,\n loadingIcon: {\n type: String,\n default: '$loading',\n },\n items: Array as PropType<readonly InternalListItem[]>,\n selectable: Boolean,\n}, 'VTreeviewChildren')\n\nexport const VTreeviewChildren = genericComponent<new <T extends InternalListItem>(\n props: {\n items?: readonly T[]\n },\n slots: VTreeviewChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeviewChildren',\n\n props: makeVTreeviewChildrenProps(),\n\n setup (props, { emit, slots }) {\n const isLoading = shallowRef(false)\n const hasLoaded = shallowRef(false)\n\n function checkChildren (item: unknown) {\n return new Promise<void>(resolve => {\n if (!props.items?.length || !props.loadChildren || hasLoaded.value) return resolve()\n\n isLoading.value = true\n props.loadChildren(item).then(resolve)\n }).then(() => {\n hasLoaded.value = true\n }).finally(() => {\n isLoading.value = false\n })\n }\n\n function onClick (e: MouseEvent | KeyboardEvent, item: any) {\n e.stopPropagation()\n\n checkChildren(item)\n }\n\n return () => slots.default?.() ?? props.items?.map(({ children, props: itemProps, raw: item }) => {\n const slotsWithItem = {\n prepend: slots.prepend\n ? slotProps => slots.prepend?.({ ...slotProps, item })\n : props.selectable\n ? ({ isSelected, isIndeterminate }) => (\n <VCheckboxBtn\n key={ item.value }\n tabindex=\"-1\"\n modelValue={ isSelected }\n loading={ isLoading.value }\n indeterminate={ isIndeterminate }\n onClick={ (e: MouseEvent) => onClick(e, item) }\n />\n )\n : undefined,\n append: slots.append ? slotProps => slots.append?.({ ...slotProps, item }) : undefined,\n title: slots.title ? slotProps => slots.title?.({ ...slotProps, item }) : undefined,\n } satisfies VTreeviewItem['$props']['$children']\n\n const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps)\n const treeviewChildrenProps = VTreeviewChildren.filterProps(props)\n\n return children ? (\n <VTreeviewGroup\n value={ itemProps?.value }\n { ...treeviewGroupProps }\n >\n {{\n activator: ({ props: activatorProps }) => (\n <VTreeviewItem\n { ...itemProps }\n { ...activatorProps }\n loading={ isLoading.value }\n v-slots={ slotsWithItem }\n onClick={ (e: MouseEvent | KeyboardEvent) => onClick(e, item) }\n />\n ),\n default: () => (\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n items={ children }\n v-slots={ slots }\n />\n ),\n }}\n </VTreeviewGroup>\n ) : (\n slots.item?.({ props: itemProps }) ?? (\n <VTreeviewItem\n { ...itemProps }\n v-slots={ slotsWithItem }\n />\n ))\n })\n },\n})\n"],"mappings":"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"}