@vuetify/nightly 3.9.0-beta.1-dev.2025-07-02 → 3.9.0-beta.1-dev.2025-07-04

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 (65) hide show
  1. package/CHANGELOG.md +15 -3
  2. package/dist/json/attributes.json +3406 -3414
  3. package/dist/json/importMap-labs.json +12 -12
  4. package/dist/json/importMap.json +166 -166
  5. package/dist/json/tags.json +2 -4
  6. package/dist/json/web-types.json +6709 -6730
  7. package/dist/vuetify-labs.cjs +121 -61
  8. package/dist/vuetify-labs.css +4732 -4721
  9. package/dist/vuetify-labs.d.ts +106 -116
  10. package/dist/vuetify-labs.esm.js +121 -61
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +121 -61
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +121 -61
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +3631 -3620
  17. package/dist/vuetify.d.ts +106 -116
  18. package/dist/vuetify.esm.js +121 -61
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +121 -61
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +73 -59
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VDataTable/VDataTable.css +12 -1
  26. package/lib/components/VDataTable/VDataTable.d.ts +20 -38
  27. package/lib/components/VDataTable/VDataTable.sass +12 -2
  28. package/lib/components/VDataTable/VDataTableColumn.d.ts +9 -3
  29. package/lib/components/VDataTable/VDataTableColumn.js +12 -3
  30. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  31. package/lib/components/VDataTable/VDataTableHeaders.d.ts +0 -13
  32. package/lib/components/VDataTable/VDataTableHeaders.js +5 -4
  33. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  34. package/lib/components/VDataTable/VDataTableRow.js +2 -0
  35. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  36. package/lib/components/VDataTable/VDataTableServer.d.ts +10 -23
  37. package/lib/components/VDataTable/VDataTableVirtual.d.ts +10 -23
  38. package/lib/components/VDataTable/composables/headers.d.ts +22 -14
  39. package/lib/components/VDataTable/composables/headers.js +51 -22
  40. package/lib/components/VDataTable/composables/headers.js.map +1 -1
  41. package/lib/components/VDataTable/types.d.ts +3 -1
  42. package/lib/components/VDataTable/types.js.map +1 -1
  43. package/lib/components/VList/VListGroup.d.ts +13 -0
  44. package/lib/components/VList/VListGroup.js +2 -1
  45. package/lib/components/VList/VListGroup.js.map +1 -1
  46. package/lib/components/VList/VListItem.d.ts +6 -3
  47. package/lib/components/VList/VListItem.js +1 -1
  48. package/lib/components/VList/VListItem.js.map +1 -1
  49. package/lib/components/VTreeview/VTreeview.d.ts +6 -21
  50. package/lib/components/VTreeview/VTreeview.js +6 -9
  51. package/lib/components/VTreeview/VTreeview.js.map +1 -1
  52. package/lib/components/VTreeview/VTreeviewGroup.d.ts +13 -0
  53. package/lib/components/VTreeview/VTreeviewItem.d.ts +18 -9
  54. package/lib/components/VTreeview/VTreeviewItem.js +1 -1
  55. package/lib/components/VTreeview/VTreeviewItem.js.map +1 -1
  56. package/lib/composables/nested/nested.d.ts +7 -4
  57. package/lib/composables/nested/nested.js +16 -6
  58. package/lib/composables/nested/nested.js.map +1 -1
  59. package/lib/composables/nested/selectStrategies.d.ts +2 -1
  60. package/lib/composables/nested/selectStrategies.js +22 -11
  61. package/lib/composables/nested/selectStrategies.js.map +1 -1
  62. package/lib/entry-bundler.js +1 -1
  63. package/lib/framework.d.ts +61 -58
  64. package/lib/framework.js +1 -1
  65. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"VTreeviewItem.js","names":["VBtn","VListItemAction","makeVListItemProps","VListItem","VProgressCircular","forwardRefs","IconValue","computed","inject","ref","toRaw","genericComponent","propsFactory","useRender","VTreeviewSymbol","makeVTreeviewItemProps","loading","Boolean","toggleIcon","slim","VTreeviewItem","name","props","emits","toggleExpand","value","setup","_ref","slots","emit","visibleIds","vListItemRef","isActivatableGroupActivator","root","activatable","isGroupActivator","vListItemRefIsClickable","link","isClickable","list","disabled","isFiltered","has","id","activateGroupActivator","e","activate","isActivated","onClickAction","preventDefault","stopPropagation","listItemProps","filterProps","hasPrepend","prepend","_createVNode","_mergeProps","class","slotProps","_createElementVNode","_Fragment","default","loader","undefined"],"sources":["../../../src/components/VTreeview/VTreeviewItem.tsx"],"sourcesContent":["// Styles\nimport './VTreeviewItem.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VListItemAction } from '@/components/VList'\nimport { makeVListItemProps, VListItem } from '@/components/VList/VListItem'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, inject, ref, toRaw } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VTreeviewSymbol } from './shared'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\n\nexport const makeVTreeviewItemProps = propsFactory({\n loading: Boolean,\n toggleIcon: IconValue,\n\n ...makeVListItemProps({ slim: true }),\n}, 'VTreeviewItem')\n\nexport const VTreeviewItem = genericComponent<VListItemSlots>()({\n name: 'VTreeviewItem',\n\n props: makeVTreeviewItemProps(),\n\n emits: {\n toggleExpand: (value: PointerEvent) => true,\n },\n\n setup (props, { slots, emit }) {\n const visibleIds = inject(VTreeviewSymbol, { visibleIds: ref() }).visibleIds\n\n const vListItemRef = ref<VListItem>()\n\n const isActivatableGroupActivator = computed(() =>\n (vListItemRef.value?.root.activatable.value) &&\n vListItemRef.value?.isGroupActivator\n )\n const vListItemRefIsClickable = computed(() => (\n vListItemRef.value?.link.isClickable.value ||\n (props.value != null && !!vListItemRef.value?.list)\n ))\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || vListItemRefIsClickable.value || isActivatableGroupActivator.value)\n )\n const isFiltered = computed(() => visibleIds.value && !visibleIds.value.has(toRaw(vListItemRef.value?.id)))\n\n function activateGroupActivator (e: MouseEvent | KeyboardEvent) {\n if (isClickable.value && isActivatableGroupActivator.value) {\n vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e)\n }\n }\n\n function onClickAction (e: PointerEvent) {\n e.preventDefault()\n e.stopPropagation()\n emit('toggleExpand', e)\n }\n\n useRender(() => {\n const listItemProps = VListItem.filterProps(props)\n const hasPrepend = slots.prepend || props.toggleIcon\n\n return (\n <VListItem\n ref={ vListItemRef }\n { ...listItemProps }\n active={ vListItemRef.value?.isActivated }\n class={[\n 'v-treeview-item',\n {\n 'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,\n 'v-treeview-item--filtered': isFiltered.value,\n },\n props.class,\n ]}\n ripple={ false }\n onClick={ activateGroupActivator }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => {\n return (\n <>\n <VListItemAction start>\n { props.toggleIcon ? (\n <VBtn\n density=\"compact\"\n icon={ props.toggleIcon }\n loading={ props.loading }\n variant=\"text\"\n onClick={ onClickAction }\n >\n {{\n loader: () => (\n <VProgressCircular\n indeterminate=\"disable-shrink\"\n size=\"20\"\n width=\"2\"\n />\n ),\n }}\n </VBtn>\n ) : (\n <div class=\"v-treeview-item__level\" />\n )}\n </VListItemAction>\n\n { slots.prepend?.(slotProps) }\n </>\n )\n } : undefined,\n }}\n </VListItem>\n )\n })\n\n return forwardRefs({}, vListItemRef)\n },\n})\n\nexport type VTreeviewItem = InstanceType<typeof VTreeviewItem>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VTreeviewItem.js","names":["VBtn","VListItemAction","makeVListItemProps","VListItem","VProgressCircular","forwardRefs","IconValue","computed","inject","ref","toRaw","genericComponent","propsFactory","useRender","VTreeviewSymbol","makeVTreeviewItemProps","loading","Boolean","toggleIcon","slim","VTreeviewItem","name","props","emits","toggleExpand","value","setup","_ref","slots","emit","visibleIds","vListItemRef","isActivatableGroupActivator","root","activatable","isGroupActivator","vListItemRefIsClickable","link","isClickable","list","disabled","isFiltered","has","id","activateGroupActivator","e","activate","isActivated","onClickAction","preventDefault","stopPropagation","listItemProps","filterProps","hasPrepend","prepend","_createVNode","_mergeProps","undefined","class","slotProps","_createElementVNode","_Fragment","default","loader"],"sources":["../../../src/components/VTreeview/VTreeviewItem.tsx"],"sourcesContent":["// Styles\nimport './VTreeviewItem.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VListItemAction } from '@/components/VList'\nimport { makeVListItemProps, VListItem } from '@/components/VList/VListItem'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, inject, ref, toRaw } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VTreeviewSymbol } from './shared'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\n\nexport const makeVTreeviewItemProps = propsFactory({\n loading: Boolean,\n toggleIcon: IconValue,\n\n ...makeVListItemProps({ slim: true }),\n}, 'VTreeviewItem')\n\nexport const VTreeviewItem = genericComponent<VListItemSlots>()({\n name: 'VTreeviewItem',\n\n props: makeVTreeviewItemProps(),\n\n emits: {\n toggleExpand: (value: PointerEvent) => true,\n },\n\n setup (props, { slots, emit }) {\n const visibleIds = inject(VTreeviewSymbol, { visibleIds: ref() }).visibleIds\n\n const vListItemRef = ref<VListItem>()\n\n const isActivatableGroupActivator = computed(() =>\n (vListItemRef.value?.root.activatable.value) &&\n vListItemRef.value?.isGroupActivator\n )\n const vListItemRefIsClickable = computed(() => (\n vListItemRef.value?.link.isClickable.value ||\n (props.value != null && !!vListItemRef.value?.list)\n ))\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || vListItemRefIsClickable.value || isActivatableGroupActivator.value)\n )\n const isFiltered = computed(() => visibleIds.value && !visibleIds.value.has(toRaw(vListItemRef.value?.id)))\n\n function activateGroupActivator (e: MouseEvent | KeyboardEvent) {\n if (isClickable.value && isActivatableGroupActivator.value) {\n vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e)\n }\n }\n\n function onClickAction (e: PointerEvent) {\n e.preventDefault()\n e.stopPropagation()\n emit('toggleExpand', e)\n }\n\n useRender(() => {\n const listItemProps = VListItem.filterProps(props)\n const hasPrepend = slots.prepend || props.toggleIcon\n\n return (\n <VListItem\n ref={ vListItemRef }\n { ...listItemProps }\n active={ vListItemRef.value?.isActivated || undefined }\n class={[\n 'v-treeview-item',\n {\n 'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,\n 'v-treeview-item--filtered': isFiltered.value,\n },\n props.class,\n ]}\n ripple={ false }\n onClick={ activateGroupActivator }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => {\n return (\n <>\n <VListItemAction start>\n { props.toggleIcon ? (\n <VBtn\n density=\"compact\"\n icon={ props.toggleIcon }\n loading={ props.loading }\n variant=\"text\"\n onClick={ onClickAction }\n >\n {{\n loader: () => (\n <VProgressCircular\n indeterminate=\"disable-shrink\"\n size=\"20\"\n width=\"2\"\n />\n ),\n }}\n </VBtn>\n ) : (\n <div class=\"v-treeview-item__level\" />\n )}\n </VListItemAction>\n\n { slots.prepend?.(slotProps) }\n </>\n )\n } : undefined,\n }}\n </VListItem>\n )\n })\n\n return forwardRefs({}, vListItemRef)\n },\n})\n\nexport type VTreeviewItem = InstanceType<typeof VTreeviewItem>\n"],"mappings":"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","ignoreList":[]}
@@ -26,13 +26,14 @@ type NestedProvide = {
26
26
  root: {
27
27
  children: Ref<Map<unknown, unknown[]>>;
28
28
  parents: Ref<Map<unknown, unknown>>;
29
+ disabled: Ref<Set<unknown>>;
29
30
  activatable: Ref<boolean>;
30
31
  selectable: Ref<boolean>;
31
32
  opened: Ref<Set<unknown>>;
32
33
  activated: Ref<Set<unknown>>;
33
34
  selected: Ref<Map<unknown, 'on' | 'off' | 'indeterminate'>>;
34
35
  selectedValues: Ref<unknown[]>;
35
- register: (id: unknown, parentId: unknown, isGroup?: boolean) => void;
36
+ register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void;
36
37
  unregister: (id: unknown) => void;
37
38
  open: (id: unknown, value: boolean, event?: Event) => void;
38
39
  activate: (id: unknown, value: boolean, event?: Event) => void;
@@ -94,13 +95,14 @@ export declare const makeNestedProps: <Defaults extends {
94
95
  export declare const useNested: (props: NestedProps) => {
95
96
  children: Ref<Map<unknown, unknown[]>>;
96
97
  parents: Ref<Map<unknown, unknown>>;
98
+ disabled: Ref<Set<unknown>>;
97
99
  activatable: Ref<boolean>;
98
100
  selectable: Ref<boolean>;
99
101
  opened: Ref<Set<unknown>>;
100
102
  activated: Ref<Set<unknown>>;
101
103
  selected: Ref<Map<unknown, "on" | "off" | "indeterminate">>;
102
104
  selectedValues: Ref<unknown[]>;
103
- register: (id: unknown, parentId: unknown, isGroup?: boolean) => void;
105
+ register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void;
104
106
  unregister: (id: unknown) => void;
105
107
  open: (id: unknown, value: boolean, event?: Event) => void;
106
108
  activate: (id: unknown, value: boolean, event?: Event) => void;
@@ -108,7 +110,7 @@ export declare const useNested: (props: NestedProps) => {
108
110
  openOnSelect: (id: unknown, value: boolean, event?: Event) => void;
109
111
  getPath: (id: unknown) => unknown[];
110
112
  };
111
- export declare const useNestedItem: (id: MaybeRefOrGetter<unknown>, isGroup: boolean) => {
113
+ export declare const useNestedItem: (id: MaybeRefOrGetter<unknown>, isDisabled: MaybeRefOrGetter<boolean>, isGroup: boolean) => {
112
114
  id: import("vue").ComputedRef<{}>;
113
115
  open: (open: boolean, e: Event) => void;
114
116
  openOnSelect: (open: boolean, e?: Event) => void;
@@ -124,13 +126,14 @@ export declare const useNestedItem: (id: MaybeRefOrGetter<unknown>, isGroup: boo
124
126
  root: {
125
127
  children: Ref<Map<unknown, unknown[]>>;
126
128
  parents: Ref<Map<unknown, unknown>>;
129
+ disabled: Ref<Set<unknown>>;
127
130
  activatable: Ref<boolean>;
128
131
  selectable: Ref<boolean>;
129
132
  opened: Ref<Set<unknown>>;
130
133
  activated: Ref<Set<unknown>>;
131
134
  selected: Ref<Map<unknown, "on" | "off" | "indeterminate">>;
132
135
  selectedValues: Ref<unknown[]>;
133
- register: (id: unknown, parentId: unknown, isGroup?: boolean) => void;
136
+ register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void;
134
137
  unregister: (id: unknown) => void;
135
138
  open: (id: unknown, value: boolean, event?: Event) => void;
136
139
  activate: (id: unknown, value: boolean, event?: Event) => void;
@@ -11,8 +11,9 @@ export const emptyNested = {
11
11
  root: {
12
12
  register: () => null,
13
13
  unregister: () => null,
14
- parents: ref(new Map()),
15
14
  children: ref(new Map()),
15
+ parents: ref(new Map()),
16
+ disabled: ref(new Set()),
16
17
  open: () => null,
17
18
  openOnSelect: () => null,
18
19
  activate: () => null,
@@ -41,6 +42,7 @@ export const useNested = props => {
41
42
  let isUnmounted = false;
42
43
  const children = shallowRef(new Map());
43
44
  const parents = shallowRef(new Map());
45
+ const disabled = shallowRef(new Set());
44
46
  const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(Array.isArray(v) ? v.map(i => toRaw(i)) : v), v => [...v.values()]);
45
47
  const activeStrategy = computed(() => {
46
48
  if (typeof props.activeStrategy === 'object') return props.activeStrategy;
@@ -89,7 +91,7 @@ export const useNested = props => {
89
91
  }
90
92
  });
91
93
  const activated = useProxiedModel(props, 'activated', props.activated, v => activeStrategy.value.in(v, children.value, parents.value), v => activeStrategy.value.out(v, children.value, parents.value));
92
- const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(v, children.value, parents.value), v => selectStrategy.value.out(v, children.value, parents.value));
94
+ const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(v, children.value, parents.value, disabled.value), v => selectStrategy.value.out(v, children.value, parents.value));
93
95
  onBeforeUnmount(() => {
94
96
  isUnmounted = true;
95
97
  });
@@ -119,7 +121,7 @@ export const useNested = props => {
119
121
  }
120
122
  return arr;
121
123
  }),
122
- register: (id, parentId, isGroup) => {
124
+ register: (id, parentId, isDisabled, isGroup) => {
123
125
  if (nodeIds.has(id)) {
124
126
  const path = getPath(id).map(String).join(' -> ');
125
127
  const newPath = getPath(parentId).concat(id).map(String).join(' -> ');
@@ -129,6 +131,7 @@ export const useNested = props => {
129
131
  nodeIds.add(id);
130
132
  }
131
133
  parentId && id !== parentId && parents.value.set(id, parentId);
134
+ isDisabled && disabled.value.add(id);
132
135
  isGroup && children.value.set(id, []);
133
136
  if (parentId != null) {
134
137
  children.value.set(parentId, [...(children.value.get(parentId) || []), id]);
@@ -138,6 +141,7 @@ export const useNested = props => {
138
141
  if (isUnmounted) return;
139
142
  nodeIds.delete(id);
140
143
  children.value.delete(id);
144
+ disabled.value.delete(id);
141
145
  const parent = parents.value.get(id);
142
146
  if (parent) {
143
147
  const list = children.value.get(parent) ?? [];
@@ -187,6 +191,7 @@ export const useNested = props => {
187
191
  selected: new Map(selected.value),
188
192
  children: children.value,
189
193
  parents: parents.value,
194
+ disabled: disabled.value,
190
195
  event
191
196
  });
192
197
  newSelected && (selected.value = newSelected);
@@ -229,13 +234,14 @@ export const useNested = props => {
229
234
  },
230
235
  children,
231
236
  parents,
237
+ disabled,
232
238
  getPath
233
239
  }
234
240
  };
235
241
  provide(VNestedSymbol, nested);
236
242
  return nested.root;
237
243
  };
238
- export const useNestedItem = (id, isGroup) => {
244
+ export const useNestedItem = (id, isDisabled, isGroup) => {
239
245
  const parent = inject(VNestedSymbol, emptyNested);
240
246
  const uidSymbol = Symbol('nested item');
241
247
  const computedId = computed(() => toRaw(toValue(id)) ?? uidSymbol);
@@ -255,10 +261,14 @@ export const useNestedItem = (id, isGroup) => {
255
261
  isGroupActivator: parent.isGroupActivator
256
262
  };
257
263
  onBeforeMount(() => {
258
- !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup);
264
+ if (!parent.isGroupActivator) {
265
+ parent.root.register(computedId.value, parent.id.value, toValue(isDisabled), isGroup);
266
+ }
259
267
  });
260
268
  onBeforeUnmount(() => {
261
- !parent.isGroupActivator && parent.root.unregister(computedId.value);
269
+ if (!parent.isGroupActivator) {
270
+ parent.root.unregister(computedId.value);
271
+ }
262
272
  });
263
273
  isGroup && provide(VNestedSymbol, item);
264
274
  return item;
@@ -1 +1 @@
1
- {"version":3,"file":"nested.js","names":["useProxiedModel","computed","inject","onBeforeMount","onBeforeUnmount","provide","ref","shallowRef","toRaw","toRef","toValue","independentActiveStrategy","independentSingleActiveStrategy","leafActiveStrategy","leafSingleActiveStrategy","listOpenStrategy","multipleOpenStrategy","singleOpenStrategy","classicSelectStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","leafSingleSelectStrategy","trunkSelectStrategy","consoleError","getCurrentInstance","propsFactory","VNestedSymbol","Symbol","for","emptyNested","id","root","register","unregister","parents","Map","children","open","openOnSelect","activate","select","activatable","selectable","opened","Set","activated","selected","selectedValues","getPath","makeNestedProps","Boolean","activeStrategy","String","Function","Object","selectStrategy","openStrategy","mandatory","useNested","props","isUnmounted","v","Array","isArray","map","i","values","value","in","out","path","parent","unshift","get","vm","nodeIds","nested","arr","key","entries","push","parentId","isGroup","has","join","newPath","concat","add","set","delete","list","filter","child","event","emit","newOpened","newSelected","newActivated","size","useNestedItem","uidSymbol","computedId","item","e","isOpen","isActivated","isSelected","isIndeterminate","isLeaf","isGroupActivator","useNestedGroupActivator"],"sources":["../../../src/composables/nested/nested.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport {\n computed,\n inject,\n onBeforeMount,\n onBeforeUnmount,\n provide,\n ref,\n shallowRef,\n toRaw,\n toRef,\n toValue,\n} from 'vue'\nimport {\n independentActiveStrategy,\n independentSingleActiveStrategy,\n leafActiveStrategy,\n leafSingleActiveStrategy,\n} from './activeStrategies'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n trunkSelectStrategy,\n} from './selectStrategies'\nimport { consoleError, getCurrentInstance, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, MaybeRefOrGetter, PropType, Ref } from 'vue'\nimport type { ActiveStrategy } from './activeStrategies'\nimport type { OpenStrategy } from './openStrategies'\nimport type { SelectStrategy } from './selectStrategies'\nimport type { EventProp } from '@/util'\n\nexport type ActiveStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | ActiveStrategy\n | ((mandatory: boolean) => ActiveStrategy)\nexport type SelectStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | 'classic'\n | 'trunk'\n | SelectStrategy\n | ((mandatory: boolean) => SelectStrategy)\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\n\nexport interface NestedProps {\n activatable: boolean\n selectable: boolean\n activeStrategy: ActiveStrategyProp | undefined\n selectStrategy: SelectStrategyProp | undefined\n openStrategy: OpenStrategyProp | undefined\n activated: any\n selected: any\n opened: any\n mandatory: boolean\n 'onUpdate:activated': EventProp<[any]> | undefined\n 'onUpdate:selected': EventProp<[any]> | undefined\n 'onUpdate:opened': EventProp<[any]> | undefined\n}\n\ntype NestedProvide = {\n id: Ref<unknown>\n isGroupActivator?: boolean\n root: {\n children: Ref<Map<unknown, unknown[]>>\n parents: Ref<Map<unknown, unknown>>\n activatable: Ref<boolean>\n selectable: Ref<boolean>\n opened: Ref<Set<unknown>>\n activated: Ref<Set<unknown>>\n selected: Ref<Map<unknown, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<unknown[]>\n register: (id: unknown, parentId: unknown, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n activate: (id: unknown, value: boolean, event?: Event) => void\n select: (id: unknown, value: boolean, event?: Event) => void\n openOnSelect: (id: unknown, value: boolean, event?: Event) => void\n getPath: (id: unknown) => unknown[]\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: shallowRef(),\n root: {\n register: () => null,\n unregister: () => null,\n parents: ref(new Map()),\n children: ref(new Map()),\n open: () => null,\n openOnSelect: () => null,\n activate: () => null,\n select: () => null,\n activatable: ref(false),\n selectable: ref(false),\n opened: ref(new Set()),\n activated: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n getPath: () => [],\n },\n}\n\nexport const makeNestedProps = propsFactory({\n activatable: Boolean,\n selectable: Boolean,\n activeStrategy: [String, Function, Object] as PropType<ActiveStrategyProp>,\n selectStrategy: [String, Function, Object] as PropType<SelectStrategyProp>,\n openStrategy: [String, Object] as PropType<OpenStrategyProp>,\n opened: null,\n activated: null,\n selected: null,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = shallowRef(new Map<unknown, unknown[]>())\n const parents = shallowRef(new Map<unknown, unknown>())\n\n const opened = useProxiedModel(\n props,\n 'opened',\n props.opened,\n v => new Set(Array.isArray(v) ? v.map(i => toRaw(i)) : v),\n v => [...v.values()],\n )\n\n const activeStrategy = computed(() => {\n if (typeof props.activeStrategy === 'object') return props.activeStrategy\n if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory)\n\n switch (props.activeStrategy) {\n case 'leaf': return leafActiveStrategy(props.mandatory)\n case 'single-leaf': return leafSingleActiveStrategy(props.mandatory)\n case 'independent': return independentActiveStrategy(props.mandatory)\n case 'single-independent':\n default: return independentSingleActiveStrategy(props.mandatory)\n }\n })\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n if (typeof props.selectStrategy === 'function') return props.selectStrategy(props.mandatory)\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 'trunk': return trunkSelectStrategy(props.mandatory)\n case 'classic':\n default: return classicSelectStrategy(props.mandatory)\n }\n })\n\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'object') 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 activated = useProxiedModel(\n props,\n 'activated',\n props.activated,\n v => activeStrategy.value.in(v, children.value, parents.value),\n v => activeStrategy.value.out(v, children.value, parents.value),\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: unknown) {\n const path: unknown[] = []\n let parent: unknown = toRaw(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 nodeIds = new Set<unknown>()\n\n const nested: NestedProvide = {\n id: shallowRef(),\n root: {\n opened,\n activatable: toRef(() => props.activatable),\n selectable: toRef(() => props.selectable),\n activated,\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 if (nodeIds.has(id)) {\n const path = getPath(id).map(String).join(' -> ')\n const newPath = getPath(parentId).concat(id).map(String).join(' -> ')\n consoleError(`Multiple nodes with the same ID\\n\\t${path}\\n\\t${newPath}`)\n return\n } else {\n nodeIds.add(id)\n }\n\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 nodeIds.delete(id)\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 },\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 openOnSelect: (id, value, event) => {\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 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 nested.root.openOnSelect(id, value, event)\n },\n activate: (id, value, event) => {\n if (!props.activatable) {\n return nested.root.select(id, true, event)\n }\n\n vm.emit('click:activate', { id, value, path: getPath(id), event })\n\n const newActivated = activeStrategy.value.activate({\n id,\n value,\n activated: new Set(activated.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n if (newActivated.size !== activated.value.size) {\n activated.value = newActivated\n } else {\n for (const value of newActivated) {\n if (!activated.value.has(value)) {\n activated.value = newActivated\n return\n }\n }\n for (const value of activated.value) {\n if (!newActivated.has(value)) {\n activated.value = newActivated\n return\n }\n }\n }\n },\n children,\n parents,\n getPath,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: MaybeRefOrGetter<unknown>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const uidSymbol = Symbol('nested item')\n const computedId = computed(() => toRaw(toValue(id)) ?? uidSymbol)\n\n const item = {\n ...parent,\n id: computedId,\n open: (open: boolean, e: Event) => parent.root.open(computedId.value, open, e),\n openOnSelect: (open: boolean, e?: Event) => parent.root.openOnSelect(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 activate: (activated: boolean, e?: Event) => parent.root.activate(computedId.value, activated, e),\n isActivated: computed(() => parent.root.activated.value.has(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 onBeforeMount(() => {\n !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup)\n })\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"nested.js","names":["useProxiedModel","computed","inject","onBeforeMount","onBeforeUnmount","provide","ref","shallowRef","toRaw","toRef","toValue","independentActiveStrategy","independentSingleActiveStrategy","leafActiveStrategy","leafSingleActiveStrategy","listOpenStrategy","multipleOpenStrategy","singleOpenStrategy","classicSelectStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","leafSingleSelectStrategy","trunkSelectStrategy","consoleError","getCurrentInstance","propsFactory","VNestedSymbol","Symbol","for","emptyNested","id","root","register","unregister","children","Map","parents","disabled","Set","open","openOnSelect","activate","select","activatable","selectable","opened","activated","selected","selectedValues","getPath","makeNestedProps","Boolean","activeStrategy","String","Function","Object","selectStrategy","openStrategy","mandatory","useNested","props","isUnmounted","v","Array","isArray","map","i","values","value","in","out","path","parent","unshift","get","vm","nodeIds","nested","arr","key","entries","push","parentId","isDisabled","isGroup","has","join","newPath","concat","add","set","delete","list","filter","child","event","emit","newOpened","newSelected","newActivated","size","useNestedItem","uidSymbol","computedId","item","e","isOpen","isActivated","isSelected","isIndeterminate","isLeaf","isGroupActivator","useNestedGroupActivator"],"sources":["../../../src/composables/nested/nested.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport {\n computed,\n inject,\n onBeforeMount,\n onBeforeUnmount,\n provide,\n ref,\n shallowRef,\n toRaw,\n toRef,\n toValue,\n} from 'vue'\nimport {\n independentActiveStrategy,\n independentSingleActiveStrategy,\n leafActiveStrategy,\n leafSingleActiveStrategy,\n} from './activeStrategies'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n trunkSelectStrategy,\n} from './selectStrategies'\nimport { consoleError, getCurrentInstance, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, MaybeRefOrGetter, PropType, Ref } from 'vue'\nimport type { ActiveStrategy } from './activeStrategies'\nimport type { OpenStrategy } from './openStrategies'\nimport type { SelectStrategy } from './selectStrategies'\nimport type { EventProp } from '@/util'\n\nexport type ActiveStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | ActiveStrategy\n | ((mandatory: boolean) => ActiveStrategy)\nexport type SelectStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | 'classic'\n | 'trunk'\n | SelectStrategy\n | ((mandatory: boolean) => SelectStrategy)\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\n\nexport interface NestedProps {\n activatable: boolean\n selectable: boolean\n activeStrategy: ActiveStrategyProp | undefined\n selectStrategy: SelectStrategyProp | undefined\n openStrategy: OpenStrategyProp | undefined\n activated: any\n selected: any\n opened: any\n mandatory: boolean\n 'onUpdate:activated': EventProp<[any]> | undefined\n 'onUpdate:selected': EventProp<[any]> | undefined\n 'onUpdate:opened': EventProp<[any]> | undefined\n}\n\ntype NestedProvide = {\n id: Ref<unknown>\n isGroupActivator?: boolean\n root: {\n children: Ref<Map<unknown, unknown[]>>\n parents: Ref<Map<unknown, unknown>>\n disabled: Ref<Set<unknown>>\n activatable: Ref<boolean>\n selectable: Ref<boolean>\n opened: Ref<Set<unknown>>\n activated: Ref<Set<unknown>>\n selected: Ref<Map<unknown, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<unknown[]>\n register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n activate: (id: unknown, value: boolean, event?: Event) => void\n select: (id: unknown, value: boolean, event?: Event) => void\n openOnSelect: (id: unknown, value: boolean, event?: Event) => void\n getPath: (id: unknown) => unknown[]\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: shallowRef(),\n root: {\n register: () => null,\n unregister: () => null,\n children: ref(new Map()),\n parents: ref(new Map()),\n disabled: ref(new Set()),\n open: () => null,\n openOnSelect: () => null,\n activate: () => null,\n select: () => null,\n activatable: ref(false),\n selectable: ref(false),\n opened: ref(new Set()),\n activated: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n getPath: () => [],\n },\n}\n\nexport const makeNestedProps = propsFactory({\n activatable: Boolean,\n selectable: Boolean,\n activeStrategy: [String, Function, Object] as PropType<ActiveStrategyProp>,\n selectStrategy: [String, Function, Object] as PropType<SelectStrategyProp>,\n openStrategy: [String, Object] as PropType<OpenStrategyProp>,\n opened: null,\n activated: null,\n selected: null,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = shallowRef(new Map<unknown, unknown[]>())\n const parents = shallowRef(new Map<unknown, unknown>())\n const disabled = shallowRef(new Set<unknown>())\n\n const opened = useProxiedModel(\n props,\n 'opened',\n props.opened,\n v => new Set(Array.isArray(v) ? v.map(i => toRaw(i)) : v),\n v => [...v.values()],\n )\n\n const activeStrategy = computed(() => {\n if (typeof props.activeStrategy === 'object') return props.activeStrategy\n if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory)\n\n switch (props.activeStrategy) {\n case 'leaf': return leafActiveStrategy(props.mandatory)\n case 'single-leaf': return leafSingleActiveStrategy(props.mandatory)\n case 'independent': return independentActiveStrategy(props.mandatory)\n case 'single-independent':\n default: return independentSingleActiveStrategy(props.mandatory)\n }\n })\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n if (typeof props.selectStrategy === 'function') return props.selectStrategy(props.mandatory)\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 'trunk': return trunkSelectStrategy(props.mandatory)\n case 'classic':\n default: return classicSelectStrategy(props.mandatory)\n }\n })\n\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'object') 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 activated = useProxiedModel(\n props,\n 'activated',\n props.activated,\n v => activeStrategy.value.in(v, children.value, parents.value),\n v => activeStrategy.value.out(v, children.value, parents.value),\n )\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value, disabled.value),\n v => selectStrategy.value.out(v, children.value, parents.value),\n )\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function getPath (id: unknown) {\n const path: unknown[] = []\n let parent: unknown = toRaw(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 nodeIds = new Set<unknown>()\n\n const nested: NestedProvide = {\n id: shallowRef(),\n root: {\n opened,\n activatable: toRef(() => props.activatable),\n selectable: toRef(() => props.selectable),\n activated,\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, isDisabled, isGroup) => {\n if (nodeIds.has(id)) {\n const path = getPath(id).map(String).join(' -> ')\n const newPath = getPath(parentId).concat(id).map(String).join(' -> ')\n consoleError(`Multiple nodes with the same ID\\n\\t${path}\\n\\t${newPath}`)\n return\n } else {\n nodeIds.add(id)\n }\n\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isDisabled && disabled.value.add(id)\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 nodeIds.delete(id)\n children.value.delete(id)\n disabled.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 },\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 openOnSelect: (id, value, event) => {\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 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 disabled: disabled.value,\n event,\n })\n newSelected && (selected.value = newSelected)\n\n nested.root.openOnSelect(id, value, event)\n },\n activate: (id, value, event) => {\n if (!props.activatable) {\n return nested.root.select(id, true, event)\n }\n\n vm.emit('click:activate', { id, value, path: getPath(id), event })\n\n const newActivated = activeStrategy.value.activate({\n id,\n value,\n activated: new Set(activated.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n if (newActivated.size !== activated.value.size) {\n activated.value = newActivated\n } else {\n for (const value of newActivated) {\n if (!activated.value.has(value)) {\n activated.value = newActivated\n return\n }\n }\n for (const value of activated.value) {\n if (!newActivated.has(value)) {\n activated.value = newActivated\n return\n }\n }\n }\n },\n children,\n parents,\n disabled,\n getPath,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: MaybeRefOrGetter<unknown>, isDisabled: MaybeRefOrGetter<boolean>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const uidSymbol = Symbol('nested item')\n const computedId = computed(() => toRaw(toValue(id)) ?? uidSymbol)\n\n const item = {\n ...parent,\n id: computedId,\n open: (open: boolean, e: Event) => parent.root.open(computedId.value, open, e),\n openOnSelect: (open: boolean, e?: Event) => parent.root.openOnSelect(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 activate: (activated: boolean, e?: Event) => parent.root.activate(computedId.value, activated, e),\n isActivated: computed(() => parent.root.activated.value.has(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 onBeforeMount(() => {\n if (!parent.isGroupActivator) {\n parent.root.register(computedId.value, parent.id.value, toValue(isDisabled), isGroup)\n }\n })\n\n onBeforeUnmount(() => {\n if (!parent.isGroupActivator) {\n parent.root.unregister(computedId.value)\n }\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"],"mappings":"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","ignoreList":[]}
@@ -4,9 +4,10 @@ type SelectStrategyFunction = (data: {
4
4
  selected: Map<unknown, 'on' | 'off' | 'indeterminate'>;
5
5
  children: Map<unknown, unknown[]>;
6
6
  parents: Map<unknown, unknown>;
7
+ disabled: Set<unknown>;
7
8
  event?: Event;
8
9
  }) => Map<unknown, 'on' | 'off' | 'indeterminate'>;
9
- type SelectStrategyTransformInFunction = (v: readonly unknown[] | undefined, children: Map<unknown, unknown[]>, parents: Map<unknown, unknown>) => Map<unknown, 'on' | 'off' | 'indeterminate'>;
10
+ type SelectStrategyTransformInFunction = (v: readonly unknown[] | undefined, children: Map<unknown, unknown[]>, parents: Map<unknown, unknown>, disabled: Set<unknown>) => Map<unknown, 'on' | 'off' | 'indeterminate'>;
10
11
  type SelectStrategyTransformOutFunction = (v: Map<unknown, 'on' | 'off' | 'indeterminate'>, children: Map<unknown, unknown[]>, parents: Map<unknown, unknown>) => unknown[];
11
12
  export type SelectStrategy = {
12
13
  select: SelectStrategyFunction;
@@ -24,7 +24,7 @@ export const independentSelectStrategy = mandatory => {
24
24
  selected.set(id, value ? 'on' : 'off');
25
25
  return selected;
26
26
  },
27
- in: (v, children, parents) => {
27
+ in: (v, children, parents, disabled) => {
28
28
  const map = new Map();
29
29
  for (const id of v || []) {
30
30
  strategy.select({
@@ -32,7 +32,8 @@ export const independentSelectStrategy = mandatory => {
32
32
  value: true,
33
33
  selected: map,
34
34
  children,
35
- parents
35
+ parents,
36
+ disabled
36
37
  });
37
38
  }
38
39
  return map;
@@ -64,9 +65,9 @@ export const independentSingleSelectStrategy = mandatory => {
64
65
  selected: singleSelected
65
66
  });
66
67
  },
67
- in: (v, children, parents) => {
68
+ in: (v, children, parents, disabled) => {
68
69
  if (v?.length) {
69
- return parentStrategy.in(v.slice(0, 1), children, parents);
70
+ return parentStrategy.in(v.slice(0, 1), children, parents, disabled);
70
71
  }
71
72
  return new Map();
72
73
  },
@@ -132,23 +133,32 @@ export const classicSelectStrategy = mandatory => {
132
133
  value,
133
134
  selected,
134
135
  children,
135
- parents
136
+ parents,
137
+ disabled
136
138
  } = _ref6;
137
139
  id = toRaw(id);
138
140
  const original = new Map(selected);
139
141
  const items = [id];
140
142
  while (items.length) {
141
143
  const item = items.shift();
142
- selected.set(toRaw(item), value ? 'on' : 'off');
144
+ if (!disabled.has(item)) {
145
+ selected.set(toRaw(item), value ? 'on' : 'off');
146
+ }
143
147
  if (children.has(item)) {
144
148
  items.push(...children.get(item));
145
149
  }
146
150
  }
147
151
  let parent = toRaw(parents.get(id));
148
152
  while (parent) {
149
- const childrenIds = children.get(parent);
150
- const everySelected = childrenIds.every(cid => selected.get(toRaw(cid)) === 'on');
151
- const noneSelected = childrenIds.every(cid => !selected.has(toRaw(cid)) || selected.get(toRaw(cid)) === 'off');
153
+ let everySelected = true;
154
+ let noneSelected = true;
155
+ for (const child of children.get(parent)) {
156
+ const cid = toRaw(child);
157
+ if (disabled.has(cid)) continue;
158
+ if (selected.get(cid) !== 'on') everySelected = false;
159
+ if (selected.has(cid) && selected.get(cid) !== 'off') noneSelected = false;
160
+ if (!everySelected && !noneSelected) break;
161
+ }
152
162
  selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
153
163
  parent = toRaw(parents.get(parent));
154
164
  }
@@ -165,7 +175,7 @@ export const classicSelectStrategy = mandatory => {
165
175
  }
166
176
  return selected;
167
177
  },
168
- in: (v, children, parents) => {
178
+ in: (v, children, parents, disabled) => {
169
179
  let map = new Map();
170
180
  for (const id of v || []) {
171
181
  map = strategy.select({
@@ -173,7 +183,8 @@ export const classicSelectStrategy = mandatory => {
173
183
  value: true,
174
184
  selected: map,
175
185
  children,
176
- parents
186
+ parents,
187
+ disabled
177
188
  });
178
189
  }
179
190
  return map;
@@ -1 +1 @@
1
- {"version":3,"file":"selectStrategies.js","names":["toRaw","independentSelectStrategy","mandatory","strategy","select","_ref","id","value","selected","on","Array","from","entries","reduce","arr","_ref2","key","push","length","set","in","v","children","parents","map","Map","out","independentSingleSelectStrategy","parentStrategy","_ref3","rest","singleSelected","has","get","slice","leafSelectStrategy","_ref4","leafSingleSelectStrategy","_ref5","classicSelectStrategy","_ref6","original","items","item","shift","parent","childrenIds","everySelected","every","cid","noneSelected","_ref7","trunkSelectStrategy"],"sources":["../../../src/composables/nested/selectStrategies.ts"],"sourcesContent":["/* eslint-disable sonarjs/no-identical-functions */\n// Utilities\nimport { toRaw } from 'vue'\n\ntype SelectStrategyFunction = (data: {\n id: unknown\n value: boolean\n selected: Map<unknown, 'on' | 'off' | 'indeterminate'>\n children: Map<unknown, unknown[]>\n parents: Map<unknown, unknown>\n event?: Event\n}) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\ntype SelectStrategyTransformInFunction = (\n v: readonly unknown[] | undefined,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\ntype SelectStrategyTransformOutFunction = (\n v: Map<unknown, 'on' | 'off' | 'indeterminate'>,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => unknown[]\n\nexport type SelectStrategy = {\n select: SelectStrategyFunction\n in: SelectStrategyTransformInFunction\n out: SelectStrategyTransformOutFunction\n}\n\nexport const independentSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected }) => {\n id = toRaw(id)\n\n // When mandatory and we're trying to deselect when id\n // is the only currently selected item then do nothing\n if (mandatory && !value) {\n const on = Array.from(selected.entries())\n .reduce((arr, [key, value]) => {\n if (value === 'on') arr.push(key)\n return arr\n }, [] as unknown[])\n if (on.length === 1 && on[0] === id) return selected\n }\n\n selected.set(id, value ? 'on' : 'off')\n\n return selected\n },\n in: (v, children, parents) => {\n const map = new Map()\n\n for (const id of (v || [])) {\n strategy.select({\n id,\n value: true,\n selected: map,\n children,\n parents,\n })\n }\n\n return map\n },\n out: v => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const independentSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ selected, id, ...rest }) => {\n id = toRaw(id)\n const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)!]]) : new Map()\n return parentStrategy.select({ ...rest, id, selected: singleSelected })\n },\n in: (v, children, parents) => {\n if (v?.length) {\n return parentStrategy.in(v.slice(0, 1), children, parents)\n }\n\n return new Map()\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents)\n },\n }\n\n return strategy\n}\n\nexport const leafSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const leafSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSingleSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const classicSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected, children, parents }) => {\n id = toRaw(id)\n const original = new Map(selected)\n\n const items = [id]\n\n while (items.length) {\n const item = items.shift()!\n\n selected.set(toRaw(item), value ? 'on' : 'off')\n\n if (children.has(item)) {\n items.push(...children.get(item)!)\n }\n }\n\n let parent = toRaw(parents.get(id))\n\n while (parent) {\n const childrenIds = children.get(parent)!\n const everySelected = childrenIds.every(cid => selected.get(toRaw(cid)) === 'on')\n const noneSelected = childrenIds.every(cid => !selected.has(toRaw(cid)) || selected.get(toRaw(cid)) === 'off')\n\n selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate')\n\n parent = toRaw(parents.get(parent))\n }\n\n // If mandatory and planned deselect results in no selected\n // items then we can't do it, so return original state\n if (mandatory && !value) {\n const on = Array.from(selected.entries())\n .reduce((arr, [key, value]) => {\n if (value === 'on') arr.push(key)\n return arr\n }, [] as unknown[])\n if (on.length === 0) return original\n }\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: map,\n children,\n parents,\n })\n }\n\n return map\n },\n out: (v, children) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on' && !children.has(key)) arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const trunkSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = classicSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: parentStrategy.select,\n in: parentStrategy.in,\n out: (v, children, parents) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') {\n if (parents.has(key)) {\n const parent = parents.get(key)\n if (v.get(parent) === 'on') continue\n }\n arr.push(key)\n }\n }\n\n return arr\n },\n }\n\n return strategy\n}\n"],"mappings":"AAAA;AACA;AACA,SAASA,KAAK,QAAQ,KAAK;AA6B3B,OAAO,MAAMC,yBAAyB,GAAIC,SAAmB,IAAqB;EAChF,MAAMC,QAAwB,GAAG;IAC/BC,MAAM,EAAEC,IAAA,IAA6B;MAAA,IAA5B;QAAEC,EAAE;QAAEC,KAAK;QAAEC;MAAS,CAAC,GAAAH,IAAA;MAC9BC,EAAE,GAAGN,KAAK,CAACM,EAAE,CAAC;;MAEd;MACA;MACA,IAAIJ,SAAS,IAAI,CAACK,KAAK,EAAE;QACvB,MAAME,EAAE,GAAGC,KAAK,CAACC,IAAI,CAACH,QAAQ,CAACI,OAAO,CAAC,CAAC,CAAC,CACtCC,MAAM,CAAC,CAACC,GAAG,EAAAC,KAAA,KAAmB;UAAA,IAAjB,CAACC,GAAG,EAAET,KAAK,CAAC,GAAAQ,KAAA;UACxB,IAAIR,KAAK,KAAK,IAAI,EAAEO,GAAG,CAACG,IAAI,CAACD,GAAG,CAAC;UACjC,OAAOF,GAAG;QACZ,CAAC,EAAE,EAAe,CAAC;QACrB,IAAIL,EAAE,CAACS,MAAM,KAAK,CAAC,IAAIT,EAAE,CAAC,CAAC,CAAC,KAAKH,EAAE,EAAE,OAAOE,QAAQ;MACtD;MAEAA,QAAQ,CAACW,GAAG,CAACb,EAAE,EAAEC,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;MAEtC,OAAOC,QAAQ;IACjB,CAAC;IACDY,EAAE,EAAEA,CAACC,CAAC,EAAEC,QAAQ,EAAEC,OAAO,KAAK;MAC5B,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAAC,CAAC;MAErB,KAAK,MAAMnB,EAAE,IAAKe,CAAC,IAAI,EAAE,EAAG;QAC1BlB,QAAQ,CAACC,MAAM,CAAC;UACdE,EAAE;UACFC,KAAK,EAAE,IAAI;UACXC,QAAQ,EAAEgB,GAAG;UACbF,QAAQ;UACRC;QACF,CAAC,CAAC;MACJ;MAEA,OAAOC,GAAG;IACZ,CAAC;IACDE,GAAG,EAAEL,CAAC,IAAI;MACR,MAAMP,GAAG,GAAG,EAAE;MAEd,KAAK,MAAM,CAACE,GAAG,EAAET,KAAK,CAAC,IAAIc,CAAC,CAACT,OAAO,CAAC,CAAC,EAAE;QACtC,IAAIL,KAAK,KAAK,IAAI,EAAEO,GAAG,CAACG,IAAI,CAACD,GAAG,CAAC;MACnC;MAEA,OAAOF,GAAG;IACZ;EACF,CAAC;EAED,OAAOX,QAAQ;AACjB,CAAC;AAED,OAAO,MAAMwB,+BAA+B,GAAIzB,SAAmB,IAAqB;EACtF,MAAM0B,cAAc,GAAG3B,yBAAyB,CAACC,SAAS,CAAC;EAE3D,MAAMC,QAAwB,GAAG;IAC/BC,MAAM,EAAEyB,KAAA,IAA+B;MAAA,IAA9B;QAAErB,QAAQ;QAAEF,EAAE;QAAE,GAAGwB;MAAK,CAAC,GAAAD,KAAA;MAChCvB,EAAE,GAAGN,KAAK,CAACM,EAAE,CAAC;MACd,MAAMyB,cAAc,GAAGvB,QAAQ,CAACwB,GAAG,CAAC1B,EAAE,CAAC,GAAG,IAAImB,GAAG,CAAC,CAAC,CAACnB,EAAE,EAAEE,QAAQ,CAACyB,GAAG,CAAC3B,EAAE,CAAC,CAAE,CAAC,CAAC,GAAG,IAAImB,GAAG,CAAC,CAAC;MACxF,OAAOG,cAAc,CAACxB,MAAM,CAAC;QAAE,GAAG0B,IAAI;QAAExB,EAAE;QAAEE,QAAQ,EAAEuB;MAAe,CAAC,CAAC;IACzE,CAAC;IACDX,EAAE,EAAEA,CAACC,CAAC,EAAEC,QAAQ,EAAEC,OAAO,KAAK;MAC5B,IAAIF,CAAC,EAAEH,MAAM,EAAE;QACb,OAAOU,cAAc,CAACR,EAAE,CAACC,CAAC,CAACa,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEZ,QAAQ,EAAEC,OAAO,CAAC;MAC5D;MAEA,OAAO,IAAIE,GAAG,CAAC,CAAC;IAClB,CAAC;IACDC,GAAG,EAAEA,CAACL,CAAC,EAAEC,QAAQ,EAAEC,OAAO,KAAK;MAC7B,OAAOK,cAAc,CAACF,GAAG,CAACL,CAAC,EAAEC,QAAQ,EAAEC,OAAO,CAAC;IACjD;EACF,CAAC;EAED,OAAOpB,QAAQ;AACjB,CAAC;AAED,OAAO,MAAMgC,kBAAkB,GAAIjC,SAAmB,IAAqB;EACzE,MAAM0B,cAAc,GAAG3B,yBAAyB,CAACC,SAAS,CAAC;EAE3D,MAAMC,QAAwB,GAAG;IAC/BC,MAAM,EAAEgC,KAAA,IAAyC;MAAA,IAAxC;QAAE9B,EAAE;QAAEE,QAAQ;QAAEc,QAAQ;QAAE,GAAGQ;MAAK,CAAC,GAAAM,KAAA;MAC1C9B,EAAE,GAAGN,KAAK,CAACM,EAAE,CAAC;MACd,IAAIgB,QAAQ,CAACU,GAAG,CAAC1B,EAAE,CAAC,EAAE,OAAOE,QAAQ;MAErC,OAAOoB,cAAc,CAACxB,MAAM,CAAC;QAAEE,EAAE;QAAEE,QAAQ;QAAEc,QAAQ;QAAE,GAAGQ;MAAK,CAAC,CAAC;IACnE,CAAC;IACDV,EAAE,EAAEQ,cAAc,CAACR,EAAE;IACrBM,GAAG,EAAEE,cAAc,CAACF;EACtB,CAAC;EAED,OAAOvB,QAAQ;AACjB,CAAC;AAED,OAAO,MAAMkC,wBAAwB,GAAInC,SAAmB,IAAqB;EAC/E,MAAM0B,cAAc,GAAGD,+BAA+B,CAACzB,SAAS,CAAC;EAEjE,MAAMC,QAAwB,GAAG;IAC/BC,MAAM,EAAEkC,KAAA,IAAyC;MAAA,IAAxC;QAAEhC,EAAE;QAAEE,QAAQ;QAAEc,QAAQ;QAAE,GAAGQ;MAAK,CAAC,GAAAQ,KAAA;MAC1ChC,EAAE,GAAGN,KAAK,CAACM,EAAE,CAAC;MACd,IAAIgB,QAAQ,CAACU,GAAG,CAAC1B,EAAE,CAAC,EAAE,OAAOE,QAAQ;MAErC,OAAOoB,cAAc,CAACxB,MAAM,CAAC;QAAEE,EAAE;QAAEE,QAAQ;QAAEc,QAAQ;QAAE,GAAGQ;MAAK,CAAC,CAAC;IACnE,CAAC;IACDV,EAAE,EAAEQ,cAAc,CAACR,EAAE;IACrBM,GAAG,EAAEE,cAAc,CAACF;EACtB,CAAC;EAED,OAAOvB,QAAQ;AACjB,CAAC;AAED,OAAO,MAAMoC,qBAAqB,GAAIrC,SAAmB,IAAqB;EAC5E,MAAMC,QAAwB,GAAG;IAC/BC,MAAM,EAAEoC,KAAA,IAAgD;MAAA,IAA/C;QAAElC,EAAE;QAAEC,KAAK;QAAEC,QAAQ;QAAEc,QAAQ;QAAEC;MAAQ,CAAC,GAAAiB,KAAA;MACjDlC,EAAE,GAAGN,KAAK,CAACM,EAAE,CAAC;MACd,MAAMmC,QAAQ,GAAG,IAAIhB,GAAG,CAACjB,QAAQ,CAAC;MAElC,MAAMkC,KAAK,GAAG,CAACpC,EAAE,CAAC;MAElB,OAAOoC,KAAK,CAACxB,MAAM,EAAE;QACnB,MAAMyB,IAAI,GAAGD,KAAK,CAACE,KAAK,CAAC,CAAE;QAE3BpC,QAAQ,CAACW,GAAG,CAACnB,KAAK,CAAC2C,IAAI,CAAC,EAAEpC,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;QAE/C,IAAIe,QAAQ,CAACU,GAAG,CAACW,IAAI,CAAC,EAAE;UACtBD,KAAK,CAACzB,IAAI,CAAC,GAAGK,QAAQ,CAACW,GAAG,CAACU,IAAI,CAAE,CAAC;QACpC;MACF;MAEA,IAAIE,MAAM,GAAG7C,KAAK,CAACuB,OAAO,CAACU,GAAG,CAAC3B,EAAE,CAAC,CAAC;MAEnC,OAAOuC,MAAM,EAAE;QACb,MAAMC,WAAW,GAAGxB,QAAQ,CAACW,GAAG,CAACY,MAAM,CAAE;QACzC,MAAME,aAAa,GAAGD,WAAW,CAACE,KAAK,CAACC,GAAG,IAAIzC,QAAQ,CAACyB,GAAG,CAACjC,KAAK,CAACiD,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;QACjF,MAAMC,YAAY,GAAGJ,WAAW,CAACE,KAAK,CAACC,GAAG,IAAI,CAACzC,QAAQ,CAACwB,GAAG,CAAChC,KAAK,CAACiD,GAAG,CAAC,CAAC,IAAIzC,QAAQ,CAACyB,GAAG,CAACjC,KAAK,CAACiD,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC;QAE9GzC,QAAQ,CAACW,GAAG,CAAC0B,MAAM,EAAEE,aAAa,GAAG,IAAI,GAAGG,YAAY,GAAG,KAAK,GAAG,eAAe,CAAC;QAEnFL,MAAM,GAAG7C,KAAK,CAACuB,OAAO,CAACU,GAAG,CAACY,MAAM,CAAC,CAAC;MACrC;;MAEA;MACA;MACA,IAAI3C,SAAS,IAAI,CAACK,KAAK,EAAE;QACvB,MAAME,EAAE,GAAGC,KAAK,CAACC,IAAI,CAACH,QAAQ,CAACI,OAAO,CAAC,CAAC,CAAC,CACtCC,MAAM,CAAC,CAACC,GAAG,EAAAqC,KAAA,KAAmB;UAAA,IAAjB,CAACnC,GAAG,EAAET,KAAK,CAAC,GAAA4C,KAAA;UACxB,IAAI5C,KAAK,KAAK,IAAI,EAAEO,GAAG,CAACG,IAAI,CAACD,GAAG,CAAC;UACjC,OAAOF,GAAG;QACZ,CAAC,EAAE,EAAe,CAAC;QACrB,IAAIL,EAAE,CAACS,MAAM,KAAK,CAAC,EAAE,OAAOuB,QAAQ;MACtC;MAEA,OAAOjC,QAAQ;IACjB,CAAC;IACDY,EAAE,EAAEA,CAACC,CAAC,EAAEC,QAAQ,EAAEC,OAAO,KAAK;MAC5B,IAAIC,GAAG,GAAG,IAAIC,GAAG,CAAC,CAAC;MAEnB,KAAK,MAAMnB,EAAE,IAAKe,CAAC,IAAI,EAAE,EAAG;QAC1BG,GAAG,GAAGrB,QAAQ,CAACC,MAAM,CAAC;UACpBE,EAAE;UACFC,KAAK,EAAE,IAAI;UACXC,QAAQ,EAAEgB,GAAG;UACbF,QAAQ;UACRC;QACF,CAAC,CAAC;MACJ;MAEA,OAAOC,GAAG;IACZ,CAAC;IACDE,GAAG,EAAEA,CAACL,CAAC,EAAEC,QAAQ,KAAK;MACpB,MAAMR,GAAG,GAAG,EAAE;MAEd,KAAK,MAAM,CAACE,GAAG,EAAET,KAAK,CAAC,IAAIc,CAAC,CAACT,OAAO,CAAC,CAAC,EAAE;QACtC,IAAIL,KAAK,KAAK,IAAI,IAAI,CAACe,QAAQ,CAACU,GAAG,CAAChB,GAAG,CAAC,EAAEF,GAAG,CAACG,IAAI,CAACD,GAAG,CAAC;MACzD;MAEA,OAAOF,GAAG;IACZ;EACF,CAAC;EAED,OAAOX,QAAQ;AACjB,CAAC;AAED,OAAO,MAAMiD,mBAAmB,GAAIlD,SAAmB,IAAqB;EAC1E,MAAM0B,cAAc,GAAGW,qBAAqB,CAACrC,SAAS,CAAC;EAEvD,MAAMC,QAAwB,GAAG;IAC/BC,MAAM,EAAEwB,cAAc,CAACxB,MAAM;IAC7BgB,EAAE,EAAEQ,cAAc,CAACR,EAAE;IACrBM,GAAG,EAAEA,CAACL,CAAC,EAAEC,QAAQ,EAAEC,OAAO,KAAK;MAC7B,MAAMT,GAAG,GAAG,EAAE;MAEd,KAAK,MAAM,CAACE,GAAG,EAAET,KAAK,CAAC,IAAIc,CAAC,CAACT,OAAO,CAAC,CAAC,EAAE;QACtC,IAAIL,KAAK,KAAK,IAAI,EAAE;UAClB,IAAIgB,OAAO,CAACS,GAAG,CAAChB,GAAG,CAAC,EAAE;YACpB,MAAM6B,MAAM,GAAGtB,OAAO,CAACU,GAAG,CAACjB,GAAG,CAAC;YAC/B,IAAIK,CAAC,CAACY,GAAG,CAACY,MAAM,CAAC,KAAK,IAAI,EAAE;UAC9B;UACA/B,GAAG,CAACG,IAAI,CAACD,GAAG,CAAC;QACf;MACF;MAEA,OAAOF,GAAG;IACZ;EACF,CAAC;EAED,OAAOX,QAAQ;AACjB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"selectStrategies.js","names":["toRaw","independentSelectStrategy","mandatory","strategy","select","_ref","id","value","selected","on","Array","from","entries","reduce","arr","_ref2","key","push","length","set","in","v","children","parents","disabled","map","Map","out","independentSingleSelectStrategy","parentStrategy","_ref3","rest","singleSelected","has","get","slice","leafSelectStrategy","_ref4","leafSingleSelectStrategy","_ref5","classicSelectStrategy","_ref6","original","items","item","shift","parent","everySelected","noneSelected","child","cid","_ref7","trunkSelectStrategy"],"sources":["../../../src/composables/nested/selectStrategies.ts"],"sourcesContent":["/* eslint-disable sonarjs/no-identical-functions */\n// Utilities\nimport { toRaw } from 'vue'\n\ntype SelectStrategyFunction = (data: {\n id: unknown\n value: boolean\n selected: Map<unknown, 'on' | 'off' | 'indeterminate'>\n children: Map<unknown, unknown[]>\n parents: Map<unknown, unknown>\n disabled: Set<unknown>\n event?: Event\n}) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\ntype SelectStrategyTransformInFunction = (\n v: readonly unknown[] | undefined,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n disabled: Set<unknown>,\n) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\ntype SelectStrategyTransformOutFunction = (\n v: Map<unknown, 'on' | 'off' | 'indeterminate'>,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => unknown[]\n\nexport type SelectStrategy = {\n select: SelectStrategyFunction\n in: SelectStrategyTransformInFunction\n out: SelectStrategyTransformOutFunction\n}\n\nexport const independentSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected }) => {\n id = toRaw(id)\n\n // When mandatory and we're trying to deselect when id\n // is the only currently selected item then do nothing\n if (mandatory && !value) {\n const on = Array.from(selected.entries())\n .reduce((arr, [key, value]) => {\n if (value === 'on') arr.push(key)\n return arr\n }, [] as unknown[])\n if (on.length === 1 && on[0] === id) return selected\n }\n\n selected.set(id, value ? 'on' : 'off')\n\n return selected\n },\n in: (v, children, parents, disabled) => {\n const map = new Map()\n\n for (const id of (v || [])) {\n strategy.select({\n id,\n value: true,\n selected: map,\n children,\n parents,\n disabled,\n })\n }\n\n return map\n },\n out: v => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const independentSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ selected, id, ...rest }) => {\n id = toRaw(id)\n const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)!]]) : new Map()\n return parentStrategy.select({ ...rest, id, selected: singleSelected })\n },\n in: (v, children, parents, disabled) => {\n if (v?.length) {\n return parentStrategy.in(v.slice(0, 1), children, parents, disabled)\n }\n\n return new Map()\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents)\n },\n }\n\n return strategy\n}\n\nexport const leafSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const leafSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSingleSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const classicSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected, children, parents, disabled }) => {\n id = toRaw(id)\n const original = new Map(selected)\n\n const items = [id]\n\n while (items.length) {\n const item = items.shift()!\n\n if (!disabled.has(item)) {\n selected.set(toRaw(item), value ? 'on' : 'off')\n }\n\n if (children.has(item)) {\n items.push(...children.get(item)!)\n }\n }\n\n let parent = toRaw(parents.get(id))\n\n while (parent) {\n let everySelected = true\n let noneSelected = true\n\n for (const child of children.get(parent)!) {\n const cid = toRaw(child)\n\n if (disabled.has(cid)) continue\n if (selected.get(cid) !== 'on') everySelected = false\n if (selected.has(cid) && selected.get(cid) !== 'off') noneSelected = false\n if (!everySelected && !noneSelected) break\n }\n\n selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate')\n\n parent = toRaw(parents.get(parent))\n }\n\n // If mandatory and planned deselect results in no selected\n // items then we can't do it, so return original state\n if (mandatory && !value) {\n const on = Array.from(selected.entries())\n .reduce((arr, [key, value]) => {\n if (value === 'on') arr.push(key)\n return arr\n }, [] as unknown[])\n if (on.length === 0) return original\n }\n\n return selected\n },\n in: (v, children, parents, disabled) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: map,\n children,\n parents,\n disabled,\n })\n }\n\n return map\n },\n out: (v, children) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on' && !children.has(key)) arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const trunkSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = classicSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: parentStrategy.select,\n in: parentStrategy.in,\n out: (v, children, parents) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') {\n if (parents.has(key)) {\n const parent = parents.get(key)\n if (v.get(parent) === 'on') continue\n }\n arr.push(key)\n }\n }\n\n return arr\n },\n }\n\n return strategy\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.9.0-beta.1-dev.2025-07-02";
19
+ export const version = "3.9.0-beta.1-dev.2025-07-04";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.js";