@vuetify/nightly 3.0.0-beta.0 → 3.0.0-beta.2

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 (277) hide show
  1. package/CHANGELOG.md +53 -2
  2. package/dist/json/attributes.json +343 -195
  3. package/dist/json/importMap.json +20 -0
  4. package/dist/json/tags.json +106 -44
  5. package/dist/json/web-types.json +946 -549
  6. package/dist/vuetify.css +1486 -1085
  7. package/dist/vuetify.d.ts +9036 -8077
  8. package/dist/vuetify.esm.js +1511 -944
  9. package/dist/vuetify.esm.js.map +1 -1
  10. package/dist/vuetify.js +1510 -943
  11. package/dist/vuetify.js.map +1 -1
  12. package/dist/vuetify.min.css +3 -3
  13. package/dist/vuetify.min.js +825 -754
  14. package/dist/vuetify.min.js.map +1 -1
  15. package/lib/components/VAlert/VAlert.css +29 -8
  16. package/lib/components/VAlert/VAlert.mjs +31 -17
  17. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  18. package/lib/components/VAlert/VAlert.sass +27 -7
  19. package/lib/components/VAlert/VAlertTitle.mjs +1 -0
  20. package/lib/components/VAlert/VAlertTitle.mjs.map +1 -1
  21. package/lib/components/VAlert/_variables.scss +14 -7
  22. package/lib/components/VApp/VApp.css +1 -0
  23. package/lib/components/VApp/VApp.sass +1 -0
  24. package/lib/components/VAppBar/VAppBar.mjs +7 -3
  25. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  26. package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
  27. package/lib/components/VAutocomplete/VAutocomplete.mjs +82 -69
  28. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  29. package/lib/components/VAvatar/VAvatar.mjs +15 -14
  30. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  31. package/lib/components/VBanner/VBanner.css +82 -58
  32. package/lib/components/VBanner/VBanner.mjs +39 -43
  33. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  34. package/lib/components/VBanner/VBanner.sass +61 -54
  35. package/lib/components/VBanner/VBannerActions.mjs +34 -2
  36. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  37. package/lib/components/VBanner/VBannerAvatar.mjs +20 -0
  38. package/lib/components/VBanner/VBannerAvatar.mjs.map +1 -0
  39. package/lib/components/VBanner/VBannerIcon.mjs +20 -0
  40. package/lib/components/VBanner/VBannerIcon.mjs.map +1 -0
  41. package/lib/components/VBanner/_variables.scss +10 -14
  42. package/lib/components/VBanner/index.mjs +2 -0
  43. package/lib/components/VBanner/index.mjs.map +1 -1
  44. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +2 -0
  45. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  46. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +10 -9
  47. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  48. package/lib/components/VBtn/VBtn.css +20 -1
  49. package/lib/components/VBtn/VBtn.mjs +20 -7
  50. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  51. package/lib/components/VBtn/VBtn.sass +15 -2
  52. package/lib/components/VBtn/_variables.scss +3 -0
  53. package/lib/components/VBtnGroup/VBtnGroup.css +14 -6
  54. package/lib/components/VBtnGroup/VBtnGroup.sass +14 -6
  55. package/lib/components/VCard/VCard.css +13 -11
  56. package/lib/components/VCard/VCard.mjs +5 -2
  57. package/lib/components/VCard/VCard.mjs.map +1 -1
  58. package/lib/components/VCard/VCard.sass +12 -9
  59. package/lib/components/VCard/VCardActions.mjs +1 -2
  60. package/lib/components/VCard/VCardActions.mjs.map +1 -1
  61. package/lib/components/VCard/VCardContent.mjs +3 -0
  62. package/lib/components/VCard/VCardContent.mjs.map +1 -0
  63. package/lib/components/VCard/_variables.scss +11 -5
  64. package/lib/components/VCard/index.mjs +1 -0
  65. package/lib/components/VCard/index.mjs.map +1 -1
  66. package/lib/components/VCarousel/VCarousel.mjs +1 -1
  67. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  68. package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
  69. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  70. package/lib/components/VChip/VChip.css +3 -0
  71. package/lib/components/VChip/VChip.sass +3 -0
  72. package/lib/components/VChip/_variables.scss +3 -0
  73. package/lib/components/VColorPicker/VColorPickerCanvas.css +1 -1
  74. package/lib/components/VCombobox/VCombobox.mjs +92 -74
  75. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  76. package/lib/components/VDialog/VDialog.css +31 -11
  77. package/lib/components/VDialog/VDialog.mjs +6 -9
  78. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  79. package/lib/components/VDialog/VDialog.sass +27 -10
  80. package/lib/components/VDialog/_variables.scss +3 -6
  81. package/lib/components/VExpansionPanel/VExpansionPanel.css +3 -2
  82. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +6 -2
  83. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  84. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +5 -3
  85. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  86. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +4 -0
  87. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  88. package/lib/components/VField/VField.css +1 -1
  89. package/lib/components/VField/VField.mjs +3 -4
  90. package/lib/components/VField/VField.mjs.map +1 -1
  91. package/lib/components/VField/VField.sass +1 -1
  92. package/lib/components/VFileInput/VFileInput.mjs +2 -1
  93. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  94. package/lib/components/VFooter/VFooter.mjs +32 -15
  95. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  96. package/lib/components/VForm/VForm.mjs +25 -11
  97. package/lib/components/VForm/VForm.mjs.map +1 -1
  98. package/lib/components/VIcon/VIcon.css +27 -12
  99. package/lib/components/VIcon/VIcon.mjs +19 -16
  100. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  101. package/lib/components/VIcon/VIcon.sass +27 -16
  102. package/lib/components/VIcon/_variables.scss +1 -0
  103. package/lib/components/VInput/VInput.css +3 -1
  104. package/lib/components/VInput/VInput.mjs +3 -4
  105. package/lib/components/VInput/VInput.mjs.map +1 -1
  106. package/lib/components/VInput/VInput.sass +3 -1
  107. package/lib/components/VInput/_variables.scss +4 -0
  108. package/lib/components/VList/VList.css +7 -6
  109. package/lib/components/VList/VList.mjs +36 -17
  110. package/lib/components/VList/VList.mjs.map +1 -1
  111. package/lib/components/VList/VList.sass +3 -2
  112. package/lib/components/VList/VListChildren.mjs +1 -1
  113. package/lib/components/VList/VListChildren.mjs.map +1 -1
  114. package/lib/components/VList/VListGroup.mjs +28 -10
  115. package/lib/components/VList/VListGroup.mjs.map +1 -1
  116. package/lib/components/VList/VListItem.css +119 -42
  117. package/lib/components/VList/VListItem.mjs +36 -32
  118. package/lib/components/VList/VListItem.mjs.map +1 -1
  119. package/lib/components/VList/VListItem.sass +76 -28
  120. package/lib/components/VList/VListItemAction.mjs +29 -0
  121. package/lib/components/VList/VListItemAction.mjs.map +1 -0
  122. package/lib/components/VList/VListItemAvatar.mjs +10 -16
  123. package/lib/components/VList/VListItemAvatar.mjs.map +1 -1
  124. package/lib/components/VList/VListItemIcon.mjs +23 -0
  125. package/lib/components/VList/VListItemIcon.mjs.map +1 -0
  126. package/lib/components/VList/VListItemMedia.mjs +4 -4
  127. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  128. package/lib/components/VList/_variables.scss +12 -3
  129. package/lib/components/VList/index.mjs +2 -0
  130. package/lib/components/VList/index.mjs.map +1 -1
  131. package/lib/components/VMenu/VMenu.css +2 -12
  132. package/lib/components/VMenu/VMenu.mjs +61 -31
  133. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  134. package/lib/components/VMenu/VMenu.sass +3 -6
  135. package/lib/components/VMenu/shared.mjs +2 -0
  136. package/lib/components/VMenu/shared.mjs.map +1 -0
  137. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
  138. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  139. package/lib/components/VOverlay/VOverlay.css +8 -0
  140. package/lib/components/VOverlay/VOverlay.mjs +16 -15
  141. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  142. package/lib/components/VOverlay/VOverlay.sass +9 -0
  143. package/lib/components/VOverlay/_variables.scss +1 -0
  144. package/lib/components/VOverlay/positionStrategies.mjs +7 -3
  145. package/lib/components/VOverlay/positionStrategies.mjs.map +1 -1
  146. package/lib/components/VOverlay/scrollStrategies.mjs +9 -0
  147. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  148. package/lib/components/VOverlay/useActivator.mjs +50 -14
  149. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  150. package/lib/components/VPagination/VPagination.mjs +10 -12
  151. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  152. package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
  153. package/lib/components/VRadio/VRadio.mjs +1 -2
  154. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  155. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
  156. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  157. package/lib/components/VRangeSlider/VRangeSlider.mjs +5 -2
  158. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  159. package/lib/components/VRating/VRating.css +2 -2
  160. package/lib/components/VRating/VRating.mjs +13 -3
  161. package/lib/components/VRating/VRating.mjs.map +1 -1
  162. package/lib/components/VRating/VRating.sass +2 -2
  163. package/lib/components/VSelect/VSelect.mjs +70 -91
  164. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  165. package/lib/components/VSelectionControl/VSelectionControl.mjs +2 -1
  166. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  167. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +2 -2
  168. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  169. package/lib/components/VSlideGroup/VSlideGroup.css +0 -5
  170. package/lib/components/VSlideGroup/VSlideGroup.mjs +36 -14
  171. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  172. package/lib/components/VSlideGroup/VSlideGroup.sass +0 -4
  173. package/lib/components/VSlideGroup/VSlideGroupItem.mjs +3 -1
  174. package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
  175. package/lib/components/VSlider/VSlider.css +7 -2
  176. package/lib/components/VSlider/VSlider.sass +11 -5
  177. package/lib/components/VSlider/VSliderTrack.css +6 -6
  178. package/lib/components/VSlider/VSliderTrack.mjs +1 -1
  179. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  180. package/lib/components/VSlider/VSliderTrack.sass +7 -7
  181. package/lib/components/VSlider/_variables.scss +5 -2
  182. package/lib/components/VSnackbar/VSnackbar.css +14 -13
  183. package/lib/components/VSnackbar/VSnackbar.mjs +22 -10
  184. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  185. package/lib/components/VSnackbar/VSnackbar.sass +15 -16
  186. package/lib/components/VSnackbar/_variables.scss +0 -4
  187. package/lib/components/VSwitch/VSwitch.mjs +8 -5
  188. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  189. package/lib/components/VSystemBar/VSystemBar.css +0 -5
  190. package/lib/components/VSystemBar/VSystemBar.mjs +31 -14
  191. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  192. package/lib/components/VSystemBar/VSystemBar.sass +0 -5
  193. package/lib/components/VSystemBar/_variables.scss +0 -3
  194. package/lib/components/VTabs/VTab.mjs +28 -32
  195. package/lib/components/VTabs/VTab.mjs.map +1 -1
  196. package/lib/components/VTabs/VTabs.css +6 -2
  197. package/lib/components/VTabs/VTabs.mjs +7 -8
  198. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  199. package/lib/components/VTabs/VTabs.sass +6 -1
  200. package/lib/components/VTabs/shared.mjs +2 -0
  201. package/lib/components/VTabs/shared.mjs.map +1 -0
  202. package/lib/components/VTextField/VTextField.css +4 -4
  203. package/lib/components/VTextField/VTextField.mjs +5 -9
  204. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  205. package/lib/components/VTextField/VTextField.sass +5 -5
  206. package/lib/components/VTextarea/VTextarea.css +7 -4
  207. package/lib/components/VTextarea/VTextarea.sass +9 -5
  208. package/lib/components/VTimeline/VTimeline.css +187 -48
  209. package/lib/components/VTimeline/VTimeline.mjs +27 -11
  210. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  211. package/lib/components/VTimeline/VTimeline.sass +196 -51
  212. package/lib/components/VTimeline/VTimelineDivider.mjs +2 -1
  213. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  214. package/lib/components/VTimeline/_variables.scss +2 -1
  215. package/lib/components/VToolbar/VToolbar.css +8 -1
  216. package/lib/components/VToolbar/VToolbar.mjs +8 -11
  217. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  218. package/lib/components/VToolbar/VToolbar.sass +2 -1
  219. package/lib/components/VToolbar/VToolbarItems.mjs +0 -1
  220. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  221. package/lib/components/VToolbar/_variables.scss +13 -1
  222. package/lib/components/VWindow/VWindow.mjs +0 -8
  223. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  224. package/lib/components/index.d.ts +9025 -8077
  225. package/lib/composables/defaults.mjs +2 -2
  226. package/lib/composables/defaults.mjs.map +1 -1
  227. package/lib/composables/form.mjs +18 -5
  228. package/lib/composables/form.mjs.map +1 -1
  229. package/lib/composables/forwardRef.mjs +10 -6
  230. package/lib/composables/forwardRef.mjs.map +1 -1
  231. package/lib/composables/group.mjs +14 -6
  232. package/lib/composables/group.mjs.map +1 -1
  233. package/lib/composables/index.mjs.map +1 -1
  234. package/lib/composables/items.mjs +56 -0
  235. package/lib/composables/items.mjs.map +1 -0
  236. package/lib/composables/layout.mjs +7 -3
  237. package/lib/composables/layout.mjs.map +1 -1
  238. package/lib/composables/loader.mjs.map +1 -1
  239. package/lib/composables/nested/nested.mjs +27 -14
  240. package/lib/composables/nested/nested.mjs.map +1 -1
  241. package/lib/composables/nested/openStrategies.mjs +63 -36
  242. package/lib/composables/nested/openStrategies.mjs.map +1 -1
  243. package/lib/composables/nested/selectStrategies.mjs +163 -122
  244. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  245. package/lib/composables/overlay.mjs +5 -1
  246. package/lib/composables/overlay.mjs.map +1 -1
  247. package/lib/composables/proxiedModel.mjs.map +1 -1
  248. package/lib/composables/resizeObserver.mjs +1 -9
  249. package/lib/composables/resizeObserver.mjs.map +1 -1
  250. package/lib/composables/router.mjs +17 -5
  251. package/lib/composables/router.mjs.map +1 -1
  252. package/lib/composables/selectLink.mjs +19 -0
  253. package/lib/composables/selectLink.mjs.map +1 -0
  254. package/lib/composables/stack.mjs +7 -4
  255. package/lib/composables/stack.mjs.map +1 -1
  256. package/lib/composables/validation.mjs +6 -3
  257. package/lib/composables/validation.mjs.map +1 -1
  258. package/lib/composables/variant.mjs +0 -3
  259. package/lib/composables/variant.mjs.map +1 -1
  260. package/lib/directives/ripple/index.mjs +15 -3
  261. package/lib/directives/ripple/index.mjs.map +1 -1
  262. package/lib/entry-bundler.mjs +1 -1
  263. package/lib/framework.mjs +12 -7
  264. package/lib/framework.mjs.map +1 -1
  265. package/lib/index.d.ts +18 -2
  266. package/lib/locale/ca.mjs +9 -9
  267. package/lib/locale/ca.mjs.map +1 -1
  268. package/lib/styles/generic/_colors.scss +0 -1
  269. package/lib/styles/main.css +400 -392
  270. package/lib/styles/settings/_utilities.scss +54 -26
  271. package/lib/styles/tools/_states.sass +2 -1
  272. package/lib/util/defineComponent.mjs +37 -6
  273. package/lib/util/defineComponent.mjs.map +1 -1
  274. package/lib/util/getCurrentInstance.mjs +1 -1
  275. package/lib/util/getCurrentInstance.mjs.map +1 -1
  276. package/lib/util/helpers.mjs.map +1 -1
  277. package/package.json +31 -29
@@ -1,8 +1,8 @@
1
1
  import { useProxiedModel } from "../proxiedModel.mjs";
2
2
  import { getCurrentInstance, getUid, propsFactory } from "../../util/index.mjs";
3
3
  import { computed, inject, onBeforeUnmount, provide, ref } from 'vue';
4
- import { multipleOpenStrategy, singleOpenStrategy } from "./openStrategies.mjs";
5
- import { classicSelectStrategy, independentSelectStrategy, independentSingleSelectStrategy, leafSelectStrategy } from "./selectStrategies.mjs"; // Types
4
+ import { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from "./openStrategies.mjs";
5
+ import { classicSelectStrategy, independentSelectStrategy, independentSingleSelectStrategy, leafSelectStrategy, leafSingleSelectStrategy } from "./selectStrategies.mjs"; // Types
6
6
 
7
7
  export const VNestedSymbol = Symbol.for('vuetify:nested');
8
8
  export const emptyNested = {
@@ -36,26 +36,29 @@ export const useNested = props => {
36
36
 
37
37
  switch (props.selectStrategy) {
38
38
  case 'single-leaf':
39
- return leafSelectStrategy(true);
39
+ return leafSingleSelectStrategy(props.mandatory);
40
40
 
41
41
  case 'leaf':
42
- return leafSelectStrategy();
42
+ return leafSelectStrategy(props.mandatory);
43
43
 
44
44
  case 'independent':
45
- return independentSelectStrategy;
45
+ return independentSelectStrategy(props.mandatory);
46
46
 
47
47
  case 'single-independent':
48
- return independentSingleSelectStrategy;
48
+ return independentSingleSelectStrategy(props.mandatory);
49
49
 
50
50
  case 'classic':
51
51
  default:
52
- return classicSelectStrategy;
52
+ return classicSelectStrategy(props.mandatory);
53
53
  }
54
54
  });
55
55
  const openStrategy = computed(() => {
56
56
  if (typeof props.openStrategy === 'function') return props.openStrategy;
57
57
 
58
58
  switch (props.openStrategy) {
59
+ case 'list':
60
+ return listOpenStrategy;
61
+
59
62
  case 'single':
60
63
  return singleOpenStrategy;
61
64
 
@@ -126,7 +129,7 @@ export const useNested = props => {
126
129
  path: getPath(id),
127
130
  event
128
131
  });
129
- const newOpened = openStrategy.value({
132
+ const newOpened = openStrategy.value.open({
130
133
  id,
131
134
  value,
132
135
  opened: new Set(opened.value),
@@ -149,10 +152,19 @@ export const useNested = props => {
149
152
  selected: new Map(selected.value),
150
153
  children: children.value,
151
154
  parents: parents.value,
152
- event,
153
- mandatory: props.mandatory
155
+ event
154
156
  });
155
157
  newSelected && (selected.value = newSelected);
158
+ const newOpened = openStrategy.value.select({
159
+ id,
160
+ value,
161
+ selected: new Map(selected.value),
162
+ opened: new Set(opened.value),
163
+ children: children.value,
164
+ parents: parents.value,
165
+ event
166
+ });
167
+ newOpened && (opened.value = newOpened);
156
168
  },
157
169
  children,
158
170
  parents
@@ -176,11 +188,12 @@ export const useNestedItem = (id, isGroup) => {
176
188
  select: (selected, e) => parent.root.select(computedId.value, selected, e),
177
189
  isSelected: computed(() => parent.root.selected.value.get(computedId.value) === 'on'),
178
190
  isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
179
- isLeaf: computed(() => !parent.root.children.value.get(computedId.value))
191
+ isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),
192
+ isGroupActivator: parent.isGroupActivator
180
193
  };
181
- !parent.skipRegister && parent.root.register(computedId.value, parent.id.value, isGroup);
194
+ !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup);
182
195
  onBeforeUnmount(() => {
183
- !parent.skipRegister && parent.root.unregister(computedId.value);
196
+ !parent.isGroupActivator && parent.root.unregister(computedId.value);
184
197
  });
185
198
  isGroup && provide(VNestedSymbol, item);
186
199
  return item;
@@ -188,7 +201,7 @@ export const useNestedItem = (id, isGroup) => {
188
201
  export const useNestedGroupActivator = () => {
189
202
  const parent = inject(VNestedSymbol, emptyNested);
190
203
  provide(VNestedSymbol, { ...parent,
191
- skipRegister: true
204
+ isGroupActivator: true
192
205
  });
193
206
  };
194
207
  //# sourceMappingURL=nested.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/composables/nested/nested.ts"],"names":["useProxiedModel","getCurrentInstance","getUid","propsFactory","computed","inject","onBeforeUnmount","provide","ref","multipleOpenStrategy","singleOpenStrategy","classicSelectStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","VNestedSymbol","Symbol","for","emptyNested","id","root","register","unregister","parents","Map","children","open","select","opened","Set","selected","selectedValues","makeNestedProps","selectStrategy","String","Function","openStrategy","Array","mandatory","Boolean","useNested","props","isUnmounted","v","values","value","in","out","getPath","path","parent","unshift","get","vm","nested","arr","key","entries","push","parentId","isGroup","set","delete","list","filter","child","event","emit","newOpened","newSelected","useNestedItem","computedId","toString","item","e","isOpen","has","isSelected","isIndeterminate","isLeaf","skipRegister","useNestedGroupActivator"],"mappings":"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","sourcesContent":["import { useProxiedModel } from '@/composables/proxiedModel'\nimport { getCurrentInstance, getUid, propsFactory } from '@/util'\nimport { computed, inject, onBeforeUnmount, provide, ref } from 'vue'\nimport { multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport { classicSelectStrategy, independentSelectStrategy, independentSingleSelectStrategy, leafSelectStrategy } from './selectStrategies'\n\n// Types\nimport type { InjectionKey, Prop, Ref } from 'vue'\nimport type { SelectStrategyFn } from './selectStrategies'\nimport type { OpenStrategyFn } from './openStrategies'\n\nexport type SelectStrategy = 'single-leaf' | 'leaf' | 'independent' | 'single-independent' | 'classic' | SelectStrategyFn\nexport type OpenStrategy = 'single' | 'multiple' | OpenStrategyFn\n\nexport interface NestedProps {\n selectStrategy: SelectStrategy | undefined\n openStrategy: OpenStrategy | undefined\n selected: string[] | undefined\n opened: string[] | undefined\n mandatory: boolean\n 'onUpdate:selected': ((val: string[]) => void) | undefined\n 'onUpdate:opened': ((val: string[]) => void) | undefined\n}\n\ntype NestedProvide = {\n id: Ref<string | undefined>\n skipRegister?: boolean\n root: {\n children: Ref<Map<string, string[]>>\n parents: Ref<Map<string, string>>\n opened: Ref<Set<string>>\n selected: Ref<Map<string, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<string[]>\n register: (id: string, parentId: string | undefined, isGroup?: boolean) => void\n unregister: (id: string) => void\n open: (id: string, value: boolean, event?: Event) => void\n select: (id: string, value: boolean, event?: Event) => void\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: ref(),\n root: {\n register: () => null,\n unregister: () => null,\n parents: ref(new Map()),\n children: ref(new Map()),\n open: () => null,\n select: () => null,\n opened: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n },\n}\n\nexport const makeNestedProps = propsFactory({\n selectStrategy: [String, Function] as Prop<SelectStrategy>,\n openStrategy: [String, Function] as Prop<OpenStrategy>,\n opened: Array as Prop<string[]>,\n selected: Array as Prop<string[]>,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = ref(new Map<string, string[]>())\n const parents = ref(new Map<string, string>())\n\n const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()])\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single-leaf': return leafSelectStrategy(true)\n case 'leaf': return leafSelectStrategy()\n case 'independent': return independentSelectStrategy\n case 'single-independent': return independentSingleSelectStrategy\n case 'classic':\n default: return classicSelectStrategy\n }\n })\n\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'function') return props.openStrategy\n\n switch (props.openStrategy) {\n case 'single': return singleOpenStrategy\n case 'multiple':\n default: return multipleOpenStrategy\n }\n })\n\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value),\n v => selectStrategy.value.out(v, children.value, parents.value),\n )\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function getPath (id: string) {\n const path: string[] = []\n let parent: string | undefined = id\n\n while (parent != null) {\n path.unshift(parent)\n parent = parents.value.get(parent)\n }\n\n return path\n }\n\n const vm = getCurrentInstance('nested')\n\n const nested: NestedProvide = {\n id: ref(),\n root: {\n opened,\n selected,\n selectedValues: computed(() => {\n const arr = []\n\n for (const [key, value] of selected.value.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n }),\n register: (id, parentId, isGroup) => {\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isGroup && children.value.set(id, [])\n\n if (parentId != null) {\n children.value.set(parentId, [...children.value.get(parentId) || [], id])\n }\n },\n unregister: id => {\n if (isUnmounted) return\n\n children.value.delete(id)\n const parent = parents.value.get(id)\n if (parent) {\n const list = children.value.get(parent) ?? []\n children.value.set(parent, list.filter(child => child !== id))\n }\n parents.value.delete(id)\n opened.value.delete(id)\n },\n open: (id, value, event) => {\n vm.emit('click:open', { id, value, path: getPath(id), event })\n\n const newOpened = openStrategy.value({\n id,\n value,\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n newOpened && (opened.value = newOpened)\n },\n select: (id, value, event) => {\n vm.emit('click:select', { id, value, path: getPath(id), event })\n\n const newSelected = selectStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n children: children.value,\n parents: parents.value,\n event,\n mandatory: props.mandatory,\n })\n newSelected && (selected.value = newSelected)\n },\n children,\n parents,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: Ref<string | undefined>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const computedId = computed(() => id.value ?? getUid().toString())\n\n const item = {\n ...parent,\n id: computedId,\n open: (open: boolean, e: Event) => parent.root.open(computedId.value, open, e),\n isOpen: computed(() => parent.root.opened.value.has(computedId.value)),\n parent: computed(() => parent.root.parents.value.get(computedId.value)),\n select: (selected: boolean, e: Event) => parent.root.select(computedId.value, selected, e),\n isSelected: computed(() => parent.root.selected.value.get(computedId.value) === 'on'),\n isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),\n isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),\n }\n\n !parent.skipRegister && parent.root.register(computedId.value, parent.id.value, isGroup)\n\n onBeforeUnmount(() => {\n !parent.skipRegister && parent.root.unregister(computedId.value)\n })\n\n isGroup && provide(VNestedSymbol, item)\n\n return item\n}\n\nexport const useNestedGroupActivator = () => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n provide(VNestedSymbol, { ...parent, skipRegister: true })\n}\n"],"file":"nested.mjs"}
1
+ {"version":3,"sources":["../../../src/composables/nested/nested.ts"],"names":["useProxiedModel","getCurrentInstance","getUid","propsFactory","computed","inject","onBeforeUnmount","provide","ref","listOpenStrategy","multipleOpenStrategy","singleOpenStrategy","classicSelectStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","leafSingleSelectStrategy","VNestedSymbol","Symbol","for","emptyNested","id","root","register","unregister","parents","Map","children","open","select","opened","Set","selected","selectedValues","makeNestedProps","selectStrategy","String","Function","openStrategy","Array","mandatory","Boolean","useNested","props","isUnmounted","v","values","value","in","out","getPath","path","parent","unshift","get","vm","nested","arr","key","entries","push","parentId","isGroup","set","delete","list","filter","child","event","emit","newOpened","newSelected","useNestedItem","computedId","toString","item","e","isOpen","has","isSelected","isIndeterminate","isLeaf","isGroupActivator","useNestedGroupActivator"],"mappings":"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","sourcesContent":["import { useProxiedModel } from '@/composables/proxiedModel'\nimport { getCurrentInstance, getUid, propsFactory } from '@/util'\nimport { computed, inject, onBeforeUnmount, provide, ref } from 'vue'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n} from './selectStrategies'\n\n// Types\nimport type { InjectionKey, Prop, Ref } from 'vue'\nimport type { SelectStrategyFn } from './selectStrategies'\nimport type { OpenStrategy } from './openStrategies'\n\nexport type SelectStrategy = 'single-leaf' | 'leaf' | 'independent' | 'single-independent' | 'classic' | SelectStrategyFn\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\n\nexport interface NestedProps {\n selectStrategy: SelectStrategy | undefined\n openStrategy: OpenStrategyProp | undefined\n selected: string[] | undefined\n opened: string[] | undefined\n mandatory: boolean\n 'onUpdate:selected': ((val: string[]) => void) | undefined\n 'onUpdate:opened': ((val: string[]) => void) | undefined\n}\n\ntype NestedProvide = {\n id: Ref<string | undefined>\n isGroupActivator?: boolean\n root: {\n children: Ref<Map<string, string[]>>\n parents: Ref<Map<string, string>>\n opened: Ref<Set<string>>\n selected: Ref<Map<string, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<string[]>\n register: (id: string, parentId: string | undefined, isGroup?: boolean) => void\n unregister: (id: string) => void\n open: (id: string, value: boolean, event?: Event) => void\n select: (id: string, value: boolean, event?: Event) => void\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: ref(),\n root: {\n register: () => null,\n unregister: () => null,\n parents: ref(new Map()),\n children: ref(new Map()),\n open: () => null,\n select: () => null,\n opened: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n },\n}\n\nexport const makeNestedProps = propsFactory({\n selectStrategy: [String, Function] as Prop<SelectStrategy>,\n openStrategy: [String, Function] as Prop<OpenStrategyProp>,\n opened: Array as Prop<string[]>,\n selected: Array as Prop<string[]>,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = ref(new Map<string, string[]>())\n const parents = ref(new Map<string, string>())\n\n const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()])\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single-leaf': return leafSingleSelectStrategy(props.mandatory)\n case 'leaf': return leafSelectStrategy(props.mandatory)\n case 'independent': return independentSelectStrategy(props.mandatory)\n case 'single-independent': return independentSingleSelectStrategy(props.mandatory)\n case 'classic':\n default: return classicSelectStrategy(props.mandatory)\n }\n })\n\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'function') return props.openStrategy\n\n switch (props.openStrategy) {\n case 'list': return listOpenStrategy\n case 'single': return singleOpenStrategy\n case 'multiple':\n default: return multipleOpenStrategy\n }\n })\n\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value),\n v => selectStrategy.value.out(v, children.value, parents.value),\n )\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function getPath (id: string) {\n const path: string[] = []\n let parent: string | undefined = id\n\n while (parent != null) {\n path.unshift(parent)\n parent = parents.value.get(parent)\n }\n\n return path\n }\n\n const vm = getCurrentInstance('nested')\n\n const nested: NestedProvide = {\n id: ref(),\n root: {\n opened,\n selected,\n selectedValues: computed(() => {\n const arr = []\n\n for (const [key, value] of selected.value.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n }),\n register: (id, parentId, isGroup) => {\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isGroup && children.value.set(id, [])\n\n if (parentId != null) {\n children.value.set(parentId, [...children.value.get(parentId) || [], id])\n }\n },\n unregister: id => {\n if (isUnmounted) return\n\n children.value.delete(id)\n const parent = parents.value.get(id)\n if (parent) {\n const list = children.value.get(parent) ?? []\n children.value.set(parent, list.filter(child => child !== id))\n }\n parents.value.delete(id)\n opened.value.delete(id)\n },\n open: (id, value, event) => {\n vm.emit('click:open', { id, value, path: getPath(id), event })\n\n const newOpened = openStrategy.value.open({\n id,\n value,\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n newOpened && (opened.value = newOpened)\n },\n select: (id, value, event) => {\n vm.emit('click:select', { id, value, path: getPath(id), event })\n\n const newSelected = selectStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newSelected && (selected.value = newSelected)\n\n const newOpened = openStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newOpened && (opened.value = newOpened)\n },\n children,\n parents,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: Ref<string | undefined>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const computedId = computed(() => id.value ?? getUid().toString())\n\n const item = {\n ...parent,\n id: computedId,\n open: (open: boolean, e: Event) => parent.root.open(computedId.value, open, e),\n isOpen: computed(() => parent.root.opened.value.has(computedId.value)),\n parent: computed(() => parent.root.parents.value.get(computedId.value)),\n select: (selected: boolean, e?: Event) => parent.root.select(computedId.value, selected, e),\n isSelected: computed(() => parent.root.selected.value.get(computedId.value) === 'on'),\n isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),\n isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),\n isGroupActivator: parent.isGroupActivator,\n }\n\n !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup)\n\n onBeforeUnmount(() => {\n !parent.isGroupActivator && parent.root.unregister(computedId.value)\n })\n\n isGroup && provide(VNestedSymbol, item)\n\n return item\n}\n\nexport const useNestedGroupActivator = () => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n provide(VNestedSymbol, { ...parent, isGroupActivator: true })\n}\n"],"file":"nested.mjs"}
@@ -1,49 +1,76 @@
1
- export const singleOpenStrategy = _ref => {
2
- let {
3
- id,
4
- value,
5
- opened,
6
- parents
7
- } = _ref;
8
-
9
- if (value) {
10
- const newOpened = new Set();
11
- newOpened.add(id);
12
- let parent = parents.get(id);
1
+ export const singleOpenStrategy = {
2
+ open: _ref => {
3
+ let {
4
+ id,
5
+ value,
6
+ opened,
7
+ parents
8
+ } = _ref;
13
9
 
14
- while (parent != null) {
15
- newOpened.add(parent);
16
- parent = parents.get(parent);
10
+ if (value) {
11
+ const newOpened = new Set();
12
+ newOpened.add(id);
13
+ let parent = parents.get(id);
14
+
15
+ while (parent != null) {
16
+ newOpened.add(parent);
17
+ parent = parents.get(parent);
18
+ }
19
+
20
+ return newOpened;
21
+ } else {
22
+ opened.delete(id);
23
+ return opened;
24
+ }
25
+ },
26
+ select: () => null
27
+ };
28
+ export const multipleOpenStrategy = {
29
+ open: _ref2 => {
30
+ let {
31
+ id,
32
+ value,
33
+ opened,
34
+ parents
35
+ } = _ref2;
36
+
37
+ if (value) {
38
+ let parent = parents.get(id);
39
+ opened.add(id);
40
+
41
+ while (parent != null && parent !== id) {
42
+ opened.add(parent);
43
+ parent = parents.get(parent);
44
+ }
45
+
46
+ return opened;
47
+ } else {
48
+ opened.delete(id);
17
49
  }
18
50
 
19
- return newOpened;
20
- } else {
21
- opened.delete(id);
22
51
  return opened;
23
- }
52
+ },
53
+ select: () => null
24
54
  };
25
- export const multipleOpenStrategy = _ref2 => {
26
- let {
27
- id,
28
- value,
29
- opened,
30
- parents
31
- } = _ref2;
32
-
33
- if (value) {
55
+ export const listOpenStrategy = {
56
+ open: multipleOpenStrategy.open,
57
+ select: _ref3 => {
58
+ let {
59
+ id,
60
+ value,
61
+ opened,
62
+ parents
63
+ } = _ref3;
64
+ if (!value) return opened;
65
+ const path = [];
34
66
  let parent = parents.get(id);
35
- opened.add(id);
36
67
 
37
- while (parent != null && parent !== id) {
38
- opened.add(parent);
68
+ while (parent != null) {
69
+ path.push(parent);
39
70
  parent = parents.get(parent);
40
71
  }
41
72
 
42
- return opened;
43
- } else {
44
- opened.delete(id);
73
+ return new Set(path);
45
74
  }
46
-
47
- return opened;
48
75
  };
49
76
  //# sourceMappingURL=openStrategies.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/composables/nested/openStrategies.ts"],"names":["singleOpenStrategy","id","value","opened","parents","newOpened","Set","add","parent","get","delete","multipleOpenStrategy"],"mappings":"AASA,OAAO,MAAMA,kBAAkC,GAAG,QAAoC;AAAA,MAAnC;AAAEC,IAAAA,EAAF;AAAMC,IAAAA,KAAN;AAAaC,IAAAA,MAAb;AAAqBC,IAAAA;AAArB,GAAmC;;AACpF,MAAIF,KAAJ,EAAW;AACT,UAAMG,SAAS,GAAG,IAAIC,GAAJ,EAAlB;AACAD,IAAAA,SAAS,CAACE,GAAV,CAAcN,EAAd;AAEA,QAAIO,MAAM,GAAGJ,OAAO,CAACK,GAAR,CAAYR,EAAZ,CAAb;;AAEA,WAAOO,MAAM,IAAI,IAAjB,EAAuB;AACrBH,MAAAA,SAAS,CAACE,GAAV,CAAcC,MAAd;AACAA,MAAAA,MAAM,GAAGJ,OAAO,CAACK,GAAR,CAAYD,MAAZ,CAAT;AACD;;AAED,WAAOH,SAAP;AACD,GAZD,MAYO;AACLF,IAAAA,MAAM,CAACO,MAAP,CAAcT,EAAd;AACA,WAAOE,MAAP;AACD;AACF,CAjBM;AAmBP,OAAO,MAAMQ,oBAAoC,GAAG,SAAoC;AAAA,MAAnC;AAAEV,IAAAA,EAAF;AAAMC,IAAAA,KAAN;AAAaC,IAAAA,MAAb;AAAqBC,IAAAA;AAArB,GAAmC;;AACtF,MAAIF,KAAJ,EAAW;AACT,QAAIM,MAAM,GAAGJ,OAAO,CAACK,GAAR,CAAYR,EAAZ,CAAb;AACAE,IAAAA,MAAM,CAACI,GAAP,CAAWN,EAAX;;AAEA,WAAOO,MAAM,IAAI,IAAV,IAAkBA,MAAM,KAAKP,EAApC,EAAwC;AACtCE,MAAAA,MAAM,CAACI,GAAP,CAAWC,MAAX;AACAA,MAAAA,MAAM,GAAGJ,OAAO,CAACK,GAAR,CAAYD,MAAZ,CAAT;AACD;;AAED,WAAOL,MAAP;AACD,GAVD,MAUO;AACLA,IAAAA,MAAM,CAACO,MAAP,CAAcT,EAAd;AACD;;AACD,SAAOE,MAAP;AACD,CAfM","sourcesContent":["export type OpenStrategyFn = (data: {\n id: string\n value: boolean\n opened: Set<string>\n children: Map<string, string[]>\n parents: Map<string, string>\n event?: Event\n}) => Set<string>\n\nexport const singleOpenStrategy: OpenStrategyFn = ({ id, value, opened, parents }) => {\n if (value) {\n const newOpened = new Set<string>()\n newOpened.add(id)\n\n let parent = parents.get(id)\n\n while (parent != null) {\n newOpened.add(parent)\n parent = parents.get(parent)\n }\n\n return newOpened\n } else {\n opened.delete(id)\n return opened\n }\n}\n\nexport const multipleOpenStrategy: OpenStrategyFn = ({ id, value, opened, parents }) => {\n if (value) {\n let parent = parents.get(id)\n opened.add(id)\n\n while (parent != null && parent !== id) {\n opened.add(parent)\n parent = parents.get(parent)\n }\n\n return opened\n } else {\n opened.delete(id)\n }\n return opened\n}\n"],"file":"openStrategies.mjs"}
1
+ {"version":3,"sources":["../../../src/composables/nested/openStrategies.ts"],"names":["singleOpenStrategy","open","id","value","opened","parents","newOpened","Set","add","parent","get","delete","select","multipleOpenStrategy","listOpenStrategy","path","push"],"mappings":"AAwBA,OAAO,MAAMA,kBAAgC,GAAG;AAC9CC,EAAAA,IAAI,EAAE,QAAoC;AAAA,QAAnC;AAAEC,MAAAA,EAAF;AAAMC,MAAAA,KAAN;AAAaC,MAAAA,MAAb;AAAqBC,MAAAA;AAArB,KAAmC;;AACxC,QAAIF,KAAJ,EAAW;AACT,YAAMG,SAAS,GAAG,IAAIC,GAAJ,EAAlB;AACAD,MAAAA,SAAS,CAACE,GAAV,CAAcN,EAAd;AAEA,UAAIO,MAAM,GAAGJ,OAAO,CAACK,GAAR,CAAYR,EAAZ,CAAb;;AAEA,aAAOO,MAAM,IAAI,IAAjB,EAAuB;AACrBH,QAAAA,SAAS,CAACE,GAAV,CAAcC,MAAd;AACAA,QAAAA,MAAM,GAAGJ,OAAO,CAACK,GAAR,CAAYD,MAAZ,CAAT;AACD;;AAED,aAAOH,SAAP;AACD,KAZD,MAYO;AACLF,MAAAA,MAAM,CAACO,MAAP,CAAcT,EAAd;AACA,aAAOE,MAAP;AACD;AACF,GAlB6C;AAmB9CQ,EAAAA,MAAM,EAAE,MAAM;AAnBgC,CAAzC;AAsBP,OAAO,MAAMC,oBAAkC,GAAG;AAChDZ,EAAAA,IAAI,EAAE,SAAoC;AAAA,QAAnC;AAAEC,MAAAA,EAAF;AAAMC,MAAAA,KAAN;AAAaC,MAAAA,MAAb;AAAqBC,MAAAA;AAArB,KAAmC;;AACxC,QAAIF,KAAJ,EAAW;AACT,UAAIM,MAAM,GAAGJ,OAAO,CAACK,GAAR,CAAYR,EAAZ,CAAb;AACAE,MAAAA,MAAM,CAACI,GAAP,CAAWN,EAAX;;AAEA,aAAOO,MAAM,IAAI,IAAV,IAAkBA,MAAM,KAAKP,EAApC,EAAwC;AACtCE,QAAAA,MAAM,CAACI,GAAP,CAAWC,MAAX;AACAA,QAAAA,MAAM,GAAGJ,OAAO,CAACK,GAAR,CAAYD,MAAZ,CAAT;AACD;;AAED,aAAOL,MAAP;AACD,KAVD,MAUO;AACLA,MAAAA,MAAM,CAACO,MAAP,CAAcT,EAAd;AACD;;AACD,WAAOE,MAAP;AACD,GAhB+C;AAiBhDQ,EAAAA,MAAM,EAAE,MAAM;AAjBkC,CAA3C;AAoBP,OAAO,MAAME,gBAA8B,GAAG;AAC5Cb,EAAAA,IAAI,EAAEY,oBAAoB,CAACZ,IADiB;AAE5CW,EAAAA,MAAM,EAAE,SAAoC;AAAA,QAAnC;AAAEV,MAAAA,EAAF;AAAMC,MAAAA,KAAN;AAAaC,MAAAA,MAAb;AAAqBC,MAAAA;AAArB,KAAmC;AAC1C,QAAI,CAACF,KAAL,EAAY,OAAOC,MAAP;AAEZ,UAAMW,IAAc,GAAG,EAAvB;AAEA,QAAIN,MAAM,GAAGJ,OAAO,CAACK,GAAR,CAAYR,EAAZ,CAAb;;AAEA,WAAOO,MAAM,IAAI,IAAjB,EAAuB;AACrBM,MAAAA,IAAI,CAACC,IAAL,CAAUP,MAAV;AACAA,MAAAA,MAAM,GAAGJ,OAAO,CAACK,GAAR,CAAYD,MAAZ,CAAT;AACD;;AAED,WAAO,IAAIF,GAAJ,CAAQQ,IAAR,CAAP;AACD;AAf2C,CAAvC","sourcesContent":["export type OpenStrategyFn = (data: {\n id: string\n value: boolean\n opened: Set<string>\n children: Map<string, string[]>\n parents: Map<string, string>\n event?: Event\n}) => Set<string>\n\nexport type OpenSelectStrategyFn = (data: {\n id: string\n value: boolean\n opened: Set<string>\n selected: Map<string, 'on' | 'off' | 'indeterminate'>\n children: Map<string, string[]>\n parents: Map<string, string>\n event?: Event\n}) => Set<string> | null\n\nexport type OpenStrategy = {\n open: OpenStrategyFn\n select: OpenSelectStrategyFn\n}\n\nexport const singleOpenStrategy: OpenStrategy = {\n open: ({ id, value, opened, parents }) => {\n if (value) {\n const newOpened = new Set<string>()\n newOpened.add(id)\n\n let parent = parents.get(id)\n\n while (parent != null) {\n newOpened.add(parent)\n parent = parents.get(parent)\n }\n\n return newOpened\n } else {\n opened.delete(id)\n return opened\n }\n },\n select: () => null,\n}\n\nexport const multipleOpenStrategy: OpenStrategy = {\n open: ({ id, value, opened, parents }) => {\n if (value) {\n let parent = parents.get(id)\n opened.add(id)\n\n while (parent != null && parent !== id) {\n opened.add(parent)\n parent = parents.get(parent)\n }\n\n return opened\n } else {\n opened.delete(id)\n }\n return opened\n },\n select: () => null,\n}\n\nexport const listOpenStrategy: OpenStrategy = {\n open: multipleOpenStrategy.open,\n select: ({ id, value, opened, parents }) => {\n if (!value) return opened\n\n const path: string[] = []\n\n let parent = parents.get(id)\n\n while (parent != null) {\n path.push(parent)\n parent = parents.get(parent)\n }\n\n return new Set(path)\n },\n}\n"],"file":"openStrategies.mjs"}
@@ -1,87 +1,30 @@
1
- export const independentSelectStrategy = {
2
- select: _ref => {
3
- let {
4
- id,
5
- value,
6
- mandatory,
7
- selected
8
- } = _ref;
9
- selected.set(id, value ? 'on' : mandatory && !Array.from(selected.entries()).find(_ref2 => {
10
- let [key, value] = _ref2;
11
- return value === 'on' && key !== id;
12
- }) ? 'on' : 'off');
13
- return selected;
14
- },
15
- in: (v, children, parents) => {
16
- let map = new Map();
17
-
18
- for (const id of v || []) {
19
- map = independentSelectStrategy.select({
20
- id,
21
- value: true,
22
- selected: new Map(map),
23
- children,
24
- parents
25
- });
26
- }
27
-
28
- return map;
29
- },
30
- out: v => {
31
- const arr = [];
32
-
33
- for (const [key, value] of v.entries()) {
34
- if (value === 'on') arr.push(key);
35
- }
36
-
37
- return arr;
38
- }
39
- };
40
- export const independentSingleSelectStrategy = {
41
- select: _ref3 => {
42
- let {
43
- id,
44
- value,
45
- ...rest
46
- } = _ref3;
47
- return independentSelectStrategy.select({ ...rest,
48
- id,
49
- value,
50
- selected: new Map()
51
- });
52
- },
53
- in: (v, children, parents) => {
54
- let map = new Map();
55
-
56
- if (v != null && v.length) {
57
- map = independentSelectStrategy.in(v.slice(0, 1), children, parents);
58
- }
59
-
60
- return map;
61
- },
62
- out: (v, children, parents) => {
63
- return independentSelectStrategy.out(v, children, parents);
64
- }
65
- };
66
- export const leafSelectStrategy = function () {
67
- let single = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
1
+ /* eslint-disable sonarjs/no-identical-functions */
2
+ export const independentSelectStrategy = mandatory => {
68
3
  const strategy = {
69
- select: _ref4 => {
4
+ select: _ref => {
70
5
  let {
71
6
  id,
72
7
  value,
73
- selected,
74
- children
75
- } = _ref4;
76
- if (children.has(id)) return selected;
77
- if (single) return new Map([[id, value ? 'on' : 'off']]);
8
+ selected
9
+ } = _ref;
10
+
11
+ // When mandatory and we're trying to deselect when id
12
+ // is the only currently selected item then do nothing
13
+ if (mandatory && !value) {
14
+ const on = Array.from(selected.entries()).reduce((arr, _ref2) => {
15
+ let [key, value] = _ref2;
16
+ return value === 'on' ? [...arr, key] : arr;
17
+ }, []);
18
+ if (on.length === 1 && on[0] === id) return selected;
19
+ }
20
+
78
21
  selected.set(id, value ? 'on' : 'off');
79
22
  return selected;
80
23
  },
81
24
  in: (v, children, parents) => {
82
25
  let map = new Map();
83
26
 
84
- for (const id of v != null ? v : []) {
27
+ for (const id of v || []) {
85
28
  map = strategy.select({
86
29
  id,
87
30
  value: true,
@@ -93,65 +36,163 @@ export const leafSelectStrategy = function () {
93
36
 
94
37
  return map;
95
38
  },
96
- out: independentSelectStrategy.out
39
+ out: v => {
40
+ const arr = [];
41
+
42
+ for (const [key, value] of v.entries()) {
43
+ if (value === 'on') arr.push(key);
44
+ }
45
+
46
+ return arr;
47
+ }
97
48
  };
98
49
  return strategy;
99
50
  };
100
- export const classicSelectStrategy = {
101
- select: _ref5 => {
102
- let {
103
- id,
104
- value,
105
- selected,
106
- children,
107
- parents
108
- } = _ref5;
109
- const items = [id];
110
-
111
- while (items.length) {
112
- const item = items.shift();
113
- selected.set(item, value ? 'on' : 'off');
114
-
115
- if (children.has(item)) {
116
- items.push(...children.get(item));
117
- }
118
- }
51
+ export const independentSingleSelectStrategy = mandatory => {
52
+ const parentStrategy = independentSelectStrategy(mandatory);
53
+ const strategy = {
54
+ select: _ref3 => {
55
+ let {
56
+ selected,
57
+ id,
58
+ ...rest
59
+ } = _ref3;
60
+ const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)]]) : new Map();
61
+ return parentStrategy.select({ ...rest,
62
+ id,
63
+ selected: singleSelected
64
+ });
65
+ },
66
+ in: (v, children, parents) => {
67
+ let map = new Map();
119
68
 
120
- let parent = parents.get(id);
69
+ if (v != null && v.length) {
70
+ map = parentStrategy.in(v.slice(0, 1), children, parents);
71
+ }
121
72
 
122
- while (parent) {
123
- const childrenIds = children.get(parent);
124
- const everySelected = childrenIds.every(cid => selected.get(cid) === 'on');
125
- const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off');
126
- selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
127
- parent = parents.get(parent);
73
+ return map;
74
+ },
75
+ out: (v, children, parents) => {
76
+ return parentStrategy.out(v, children, parents);
128
77
  }
129
-
130
- return selected;
131
- },
132
- in: (v, children, parents) => {
133
- let map = new Map();
134
-
135
- for (const id of v || []) {
136
- map = classicSelectStrategy.select({
78
+ };
79
+ return strategy;
80
+ };
81
+ export const leafSelectStrategy = mandatory => {
82
+ const parentStrategy = independentSelectStrategy(mandatory);
83
+ const strategy = {
84
+ select: _ref4 => {
85
+ let {
137
86
  id,
138
- value: true,
139
- selected: new Map(map),
87
+ selected,
140
88
  children,
141
- parents
89
+ ...rest
90
+ } = _ref4;
91
+ if (children.has(id)) return selected;
92
+ return parentStrategy.select({
93
+ id,
94
+ selected,
95
+ children,
96
+ ...rest
142
97
  });
143
- }
98
+ },
99
+ in: parentStrategy.in,
100
+ out: parentStrategy.out
101
+ };
102
+ return strategy;
103
+ };
104
+ export const leafSingleSelectStrategy = mandatory => {
105
+ const parentStrategy = independentSingleSelectStrategy(mandatory);
106
+ const strategy = {
107
+ select: _ref5 => {
108
+ let {
109
+ id,
110
+ selected,
111
+ children,
112
+ ...rest
113
+ } = _ref5;
114
+ if (children.has(id)) return selected;
115
+ return parentStrategy.select({
116
+ id,
117
+ selected,
118
+ children,
119
+ ...rest
120
+ });
121
+ },
122
+ in: parentStrategy.in,
123
+ out: parentStrategy.out
124
+ };
125
+ return strategy;
126
+ };
127
+ export const classicSelectStrategy = mandatory => {
128
+ const strategy = {
129
+ select: _ref6 => {
130
+ let {
131
+ id,
132
+ value,
133
+ selected,
134
+ children,
135
+ parents
136
+ } = _ref6;
137
+ const original = new Map(selected);
138
+ const items = [id];
144
139
 
145
- return map;
146
- },
147
- out: (v, children) => {
148
- const arr = [];
140
+ while (items.length) {
141
+ const item = items.shift();
142
+ selected.set(item, value ? 'on' : 'off');
149
143
 
150
- for (const [key, value] of v.entries()) {
151
- if (value === 'on' && !children.has(key)) arr.push(key);
152
- }
144
+ if (children.has(item)) {
145
+ items.push(...children.get(item));
146
+ }
147
+ }
148
+
149
+ let parent = parents.get(id);
153
150
 
154
- return arr;
155
- }
151
+ while (parent) {
152
+ const childrenIds = children.get(parent);
153
+ const everySelected = childrenIds.every(cid => selected.get(cid) === 'on');
154
+ const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off');
155
+ selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
156
+ parent = parents.get(parent);
157
+ } // If mandatory and planned deselect results in no selected
158
+ // items then we can't do it, so return original state
159
+
160
+
161
+ if (mandatory && !value) {
162
+ const on = Array.from(selected.entries()).reduce((arr, _ref7) => {
163
+ let [key, value] = _ref7;
164
+ return value === 'on' ? [...arr, key] : arr;
165
+ }, []);
166
+ if (on.length === 0) return original;
167
+ }
168
+
169
+ return selected;
170
+ },
171
+ in: (v, children, parents) => {
172
+ let map = new Map();
173
+
174
+ for (const id of v || []) {
175
+ map = strategy.select({
176
+ id,
177
+ value: true,
178
+ selected: new Map(map),
179
+ children,
180
+ parents
181
+ });
182
+ }
183
+
184
+ return map;
185
+ },
186
+ out: (v, children) => {
187
+ const arr = [];
188
+
189
+ for (const [key, value] of v.entries()) {
190
+ if (value === 'on' && !children.has(key)) arr.push(key);
191
+ }
192
+
193
+ return arr;
194
+ }
195
+ };
196
+ return strategy;
156
197
  };
157
198
  //# sourceMappingURL=selectStrategies.mjs.map