vuetify 3.1.15 → 3.1.16

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 (46) hide show
  1. package/dist/json/attributes.json +44 -44
  2. package/dist/json/importMap.json +72 -72
  3. package/dist/json/web-types.json +77 -77
  4. package/dist/vuetify-labs.css +370 -371
  5. package/dist/vuetify-labs.d.ts +3 -3
  6. package/dist/vuetify-labs.esm.js +101 -68
  7. package/dist/vuetify-labs.esm.js.map +1 -1
  8. package/dist/vuetify-labs.js +101 -68
  9. package/dist/vuetify-labs.min.css +2 -2
  10. package/dist/vuetify.css +7 -8
  11. package/dist/vuetify.d.ts +24 -24
  12. package/dist/vuetify.esm.js +63 -41
  13. package/dist/vuetify.esm.js.map +1 -1
  14. package/dist/vuetify.js +63 -41
  15. package/dist/vuetify.js.map +1 -1
  16. package/dist/vuetify.min.css +2 -2
  17. package/dist/vuetify.min.js +717 -714
  18. package/dist/vuetify.min.js.map +1 -1
  19. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +31 -16
  20. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  21. package/lib/components/VBreadcrumbs/index.d.ts +3 -3
  22. package/lib/components/VDialog/VDialog.mjs +2 -2
  23. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  24. package/lib/components/VField/VField.css +0 -1
  25. package/lib/components/VField/VField.sass +0 -1
  26. package/lib/components/VList/VList.mjs +3 -22
  27. package/lib/components/VList/VList.mjs.map +1 -1
  28. package/lib/components/VSlideGroup/VSlideGroup.mjs +2 -2
  29. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  30. package/lib/components/index.d.ts +3 -3
  31. package/lib/entry-bundler.mjs +1 -1
  32. package/lib/framework.mjs +1 -1
  33. package/lib/index.d.ts +21 -21
  34. package/lib/labs/VDataTable/VDataTable.mjs +1 -1
  35. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  36. package/lib/labs/VDataTable/VDataTableHeaders.mjs +34 -20
  37. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  38. package/lib/labs/VDataTable/VDataTableRow.mjs +2 -4
  39. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  40. package/lib/labs/VDataTable/VDataTableRows.mjs +2 -2
  41. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  42. package/lib/labs/VDataTable/VDataTableServer.mjs +1 -1
  43. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  44. package/lib/util/helpers.mjs +26 -0
  45. package/lib/util/helpers.mjs.map +1 -1
  46. package/package.json +3 -3
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.1.15
2
+ * Vuetify v3.1.16
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -360,6 +360,32 @@
360
360
  handler(...args);
361
361
  }
362
362
  }
363
+ function focusableChildren(el) {
364
+ const targets = ['button', '[href]', 'input:not([type="hidden"])', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex="-1"]):not([disabled])`).join(', ');
365
+ return [...el.querySelectorAll(targets)];
366
+ }
367
+ function focusChild(el, location) {
368
+ const focusable = focusableChildren(el);
369
+ const idx = focusable.indexOf(document.activeElement);
370
+ if (!location) {
371
+ if (!el.contains(document.activeElement)) {
372
+ focusable[0]?.focus();
373
+ }
374
+ } else if (location === 'first') {
375
+ focusable[0]?.focus();
376
+ } else if (location === 'last') {
377
+ focusable.at(-1)?.focus();
378
+ } else {
379
+ let _el;
380
+ let idxx = idx;
381
+ const inc = location === 'next' ? 1 : -1;
382
+ do {
383
+ idxx += inc;
384
+ _el = focusable[idxx];
385
+ } while ((!_el || _el.offsetParent == null) && idxx < focusable.length && idxx >= 0);
386
+ if (_el) _el.focus();else focusChild(el, location === 'next' ? 'first' : 'last');
387
+ }
388
+ }
363
389
 
364
390
  const block = ['top', 'bottom'];
365
391
  const inline = ['start', 'end', 'left', 'right'];
@@ -8231,27 +8257,8 @@
8231
8257
  e.preventDefault();
8232
8258
  }
8233
8259
  function focus(location) {
8234
- if (!contentRef.value) return;
8235
- const targets = ['button', '[href]', 'input', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex="-1"])`).join(', ');
8236
- const focusable = [...contentRef.value.querySelectorAll(targets)].filter(el => !el.hasAttribute('disabled'));
8237
- const idx = focusable.indexOf(document.activeElement);
8238
- if (!location) {
8239
- if (!contentRef.value.contains(document.activeElement)) {
8240
- focusable[0]?.focus();
8241
- }
8242
- } else if (location === 'first') {
8243
- focusable[0]?.focus();
8244
- } else if (location === 'last') {
8245
- focusable.at(-1)?.focus();
8246
- } else {
8247
- let el;
8248
- let idxx = idx;
8249
- const inc = location === 'next' ? 1 : -1;
8250
- do {
8251
- idxx += inc;
8252
- el = focusable[idxx];
8253
- } while ((!el || el.offsetParent == null) && idxx < focusable.length && idxx >= 0);
8254
- if (el) el.focus();else focus(location === 'next' ? 'first' : 'last');
8260
+ if (contentRef.value) {
8261
+ return focusChild(contentRef.value, location);
8255
8262
  }
8256
8263
  }
8257
8264
  useRender(() => {
@@ -11062,6 +11069,17 @@
11062
11069
  disabled: vue.toRef(props, 'disabled')
11063
11070
  }
11064
11071
  });
11072
+ const items = vue.computed(() => props.items.map(item => {
11073
+ return typeof item === 'string' ? {
11074
+ item: {
11075
+ title: item
11076
+ },
11077
+ raw: item
11078
+ } : {
11079
+ item,
11080
+ raw: item
11081
+ };
11082
+ }));
11065
11083
  useRender(() => {
11066
11084
  const hasPrepend = !!(slots.prepend || props.icon);
11067
11085
  return vue.createVNode(props.tag, {
@@ -11084,22 +11102,26 @@
11084
11102
  start: true
11085
11103
  }
11086
11104
  }
11087
- }, slots.prepend)]), props.items.map((item, index, array) => vue.createVNode(vue.Fragment, null, [vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
11088
- "key": index,
11089
- "disabled": index >= array.length - 1
11090
- }, typeof item === 'string' ? {
11091
- title: item
11092
- } : item), {
11093
- default: slots.title ? () => slots.title?.({
11094
- item,
11095
- index
11096
- }) : undefined
11097
- }), index < array.length - 1 && vue.createVNode(VBreadcrumbsDivider, null, {
11098
- default: slots.divider ? () => slots.divider?.({
11105
+ }, slots.prepend)]), items.value.map((_ref2, index, array) => {
11106
+ let {
11099
11107
  item,
11100
- index
11101
- }) : undefined
11102
- })])), slots.default?.()]
11108
+ raw
11109
+ } = _ref2;
11110
+ return vue.createVNode(vue.Fragment, null, [vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
11111
+ "key": item.title,
11112
+ "disabled": index >= array.length - 1
11113
+ }, item), {
11114
+ default: slots.title ? () => slots.title?.({
11115
+ item: raw,
11116
+ index
11117
+ }) : undefined
11118
+ }), index < array.length - 1 && vue.createVNode(VBreadcrumbsDivider, null, {
11119
+ default: slots.divider ? () => slots.divider?.({
11120
+ item: raw,
11121
+ index
11122
+ }) : undefined
11123
+ })]);
11124
+ }), slots.default?.()]
11103
11125
  });
11104
11126
  });
11105
11127
  return {};
@@ -14021,7 +14043,7 @@
14021
14043
  ![document, overlay.value.contentEl].includes(after) &&
14022
14044
  // It isn't inside the dialog body
14023
14045
  !overlay.value.contentEl.contains(after)) {
14024
- const focusable = [...overlay.value.contentEl.querySelectorAll('button, [href], input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled') && !el.matches('[tabindex="-1"]'));
14046
+ const focusable = focusableChildren(overlay.value.contentEl);
14025
14047
  if (!focusable.length) return;
14026
14048
  const firstElement = focusable[0];
14027
14049
  const lastElement = focusable[focusable.length - 1];
@@ -16866,7 +16888,7 @@
16866
16888
  function focus(location) {
16867
16889
  if (!contentRef.value) return;
16868
16890
  if (!location) {
16869
- const focusable = [...contentRef.value.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled'));
16891
+ const focusable = focusableChildren(contentRef.value);
16870
16892
  focusable[0]?.focus();
16871
16893
  } else if (location === 'next') {
16872
16894
  const el = contentRef.value.querySelector(':focus')?.nextElementSibling;
@@ -18542,6 +18564,17 @@
18542
18564
  backgroundColorClasses,
18543
18565
  backgroundColorStyles
18544
18566
  } = useBackgroundColor(props, 'color');
18567
+ const slotProps = vue.computed(() => ({
18568
+ headers: headers.value,
18569
+ columns: columns.value,
18570
+ toggleSort,
18571
+ sortBy: sortBy.value,
18572
+ someSelected: someSelected.value,
18573
+ allSelected: allSelected.value,
18574
+ selectAll,
18575
+ getSortIcon,
18576
+ getFixedStyles
18577
+ }));
18545
18578
  const VDataTableHeaderCell = _ref2 => {
18546
18579
  let {
18547
18580
  column,
@@ -18569,14 +18602,14 @@
18569
18602
  "noPadding": noPadding
18570
18603
  }, {
18571
18604
  default: () => {
18572
- const slotName = `column.${column.key}`;
18573
- const slotProps = {
18605
+ const columnSlotName = `column.${column.key}`;
18606
+ const columnSlotProps = {
18574
18607
  column,
18575
18608
  selectAll
18576
18609
  };
18577
- if (slots[slotName]) return slots[slotName](slotProps);
18610
+ if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);
18578
18611
  if (column.key === 'data-table-select') {
18579
- return slots['column.data-table-select']?.(slotProps) ?? vue.createVNode(VCheckboxBtn, {
18612
+ return slots['column.data-table-select']?.(columnSlotProps) ?? vue.createVNode(VCheckboxBtn, {
18580
18613
  "modelValue": allSelected.value,
18581
18614
  "indeterminate": someSelected.value && !allSelected.value,
18582
18615
  "onUpdate:modelValue": selectAll
@@ -18596,22 +18629,24 @@
18596
18629
  }
18597
18630
  });
18598
18631
  };
18599
- useRender(() => vue.createVNode(vue.Fragment, null, [headers.value.map((row, y) => vue.createVNode("tr", null, [row.map((column, x) => vue.createVNode(VDataTableHeaderCell, {
18600
- "column": column,
18601
- "x": x,
18602
- "y": y
18603
- }, null))])), props.loading && vue.createVNode("tr", {
18604
- "class": "v-data-table__progress"
18605
- }, [vue.createVNode("th", {
18606
- "colspan": columns.value.length
18607
- }, [vue.createVNode(LoaderSlot, {
18608
- "name": "v-data-table-headers",
18609
- "active": true,
18610
- "color": typeof props.loading === 'boolean' ? undefined : props.loading,
18611
- "indeterminate": true
18612
- }, {
18613
- default: slots.loader
18614
- })])])]));
18632
+ useRender(() => {
18633
+ return vue.createVNode(vue.Fragment, null, [slots.headers ? slots.headers(slotProps.value) : headers.value.map((row, y) => vue.createVNode("tr", null, [row.map((column, x) => vue.createVNode(VDataTableHeaderCell, {
18634
+ "column": column,
18635
+ "x": x,
18636
+ "y": y
18637
+ }, null))])), props.loading && vue.createVNode("tr", {
18638
+ "class": "v-data-table__progress"
18639
+ }, [vue.createVNode("th", {
18640
+ "colspan": columns.value.length
18641
+ }, [vue.createVNode(LoaderSlot, {
18642
+ "name": "v-data-table-headers",
18643
+ "active": true,
18644
+ "color": typeof props.loading === 'boolean' ? undefined : props.loading,
18645
+ "indeterminate": true
18646
+ }, {
18647
+ default: slots.loader
18648
+ })])])]);
18649
+ });
18615
18650
  }
18616
18651
  });
18617
18652
 
@@ -18910,9 +18945,7 @@
18910
18945
  'v-data-table__tr--clickable': !!props.onClick
18911
18946
  }],
18912
18947
  "onClick": props.onClick
18913
- }, [!columns.value.length && vue.createVNode(VDataTableColumn, {
18914
- "key": "no-data"
18915
- }, slots), props.item && columns.value.map((column, i) => vue.createVNode(VDataTableColumn, {
18948
+ }, [props.item && columns.value.map((column, i) => vue.createVNode(VDataTableColumn, {
18916
18949
  "align": column.align,
18917
18950
  "fixed": column.fixed,
18918
18951
  "fixedOffset": column.fixedOffset,
@@ -19002,13 +19035,13 @@
19002
19035
  useRender(() => {
19003
19036
  if (props.loading && slots.loading) {
19004
19037
  return vue.createVNode("tr", {
19005
- "class": "v-data-table-rows-no-data",
19038
+ "class": "v-data-table-rows-loading",
19006
19039
  "key": "loading"
19007
19040
  }, [vue.createVNode("td", {
19008
19041
  "colspan": columns.value.length
19009
19042
  }, [slots.loading()])]);
19010
19043
  }
19011
- if (!props.loading && !props.items.length && !props.hideNoData && slots['no-data']) {
19044
+ if (!props.loading && !props.items.length && !props.hideNoData) {
19012
19045
  return vue.createVNode("tr", {
19013
19046
  "class": "v-data-table-rows-no-data",
19014
19047
  "key": "no-data"
@@ -19487,7 +19520,7 @@
19487
19520
  top: slots.top,
19488
19521
  default: slots.default ?? (() => vue.createVNode(vue.Fragment, null, [slots.colgroup?.({
19489
19522
  columns
19490
- }), vue.createVNode("thead", null, [slots.headers ? slots.headers() : vue.createVNode(VDataTableHeaders, {
19523
+ }), vue.createVNode("thead", null, [vue.createVNode(VDataTableHeaders, {
19491
19524
  "sticky": props.fixedHeader,
19492
19525
  "multiSort": props.multiSort
19493
19526
  }, slots)]), slots.thead?.(), vue.createVNode("tbody", null, [slots.body ? slots.body() : vue.createVNode(VDataTableRows, {
@@ -19853,7 +19886,7 @@
19853
19886
  }), vue.createVNode("thead", {
19854
19887
  "class": "v-data-table__thead",
19855
19888
  "role": "rowgroup"
19856
- }, [slots.headers ? slots.headers() : vue.createVNode(VDataTableHeaders, {
19889
+ }, [vue.createVNode(VDataTableHeaders, {
19857
19890
  "sticky": props.fixedHeader,
19858
19891
  "loading": props.loading,
19859
19892
  "color": props.color
@@ -20526,7 +20559,7 @@
20526
20559
  locale
20527
20560
  };
20528
20561
  }
20529
- const version$1 = "3.1.15";
20562
+ const version$1 = "3.1.16";
20530
20563
  createVuetify$1.version = version$1;
20531
20564
 
20532
20565
  // Vue's inject() can only be used in setup
@@ -20538,7 +20571,7 @@
20538
20571
  }
20539
20572
  }
20540
20573
 
20541
- const version = "3.1.15";
20574
+ const version = "3.1.16";
20542
20575
 
20543
20576
  const createVuetify = function () {
20544
20577
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};