@vuetify/nightly 3.10.5-dev.2025-10-07 → 3.10.5-dev.2025-10-10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +21 -3
  2. package/dist/json/attributes.json +2024 -2040
  3. package/dist/json/importMap-labs.json +12 -12
  4. package/dist/json/importMap.json +180 -180
  5. package/dist/json/tags.json +5 -9
  6. package/dist/json/web-types.json +3964 -3985
  7. package/dist/vuetify-labs.cjs +233 -169
  8. package/dist/vuetify-labs.css +4520 -4520
  9. package/dist/vuetify-labs.d.ts +1444 -1390
  10. package/dist/vuetify-labs.esm.js +233 -169
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +233 -169
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +156 -92
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +3385 -3385
  17. package/dist/vuetify.d.ts +2289 -2200
  18. package/dist/vuetify.esm.js +156 -92
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +156 -92
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +959 -955
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.d.ts +0 -61
  26. package/lib/components/VAutocomplete/VAutocomplete.js +13 -11
  27. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  28. package/lib/components/VCombobox/VCombobox.d.ts +6 -67
  29. package/lib/components/VCombobox/VCombobox.js +22 -23
  30. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  31. package/lib/components/VDataTable/VDataTable.d.ts +7 -7
  32. package/lib/components/VDataTable/VDataTableFooter.d.ts +16 -3
  33. package/lib/components/VDataTable/VDataTableFooter.js +4 -2
  34. package/lib/components/VDataTable/VDataTableFooter.js.map +1 -1
  35. package/lib/components/VDataTable/VDataTableHeaders.js +10 -7
  36. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  37. package/lib/components/VDataTable/VDataTableRow.d.ts +10 -0
  38. package/lib/components/VDataTable/VDataTableRow.js +3 -0
  39. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  40. package/lib/components/VDataTable/VDataTableRows.d.ts +10 -0
  41. package/lib/components/VDataTable/VDataTableRows.js +2 -0
  42. package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
  43. package/lib/components/VDataTable/VDataTableServer.d.ts +7 -7
  44. package/lib/components/VNumberInput/VNumberInput.js +23 -8
  45. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  46. package/lib/components/VSlideGroup/VSlideGroup.d.ts +1 -1
  47. package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
  48. package/lib/components/VTabs/VTabs.d.ts +16 -2
  49. package/lib/components/VTabs/VTabs.js +4 -2
  50. package/lib/components/VTabs/VTabs.js.map +1 -1
  51. package/lib/components/VTextarea/VTextarea.css +2 -2
  52. package/lib/components/VTextarea/VTextarea.js +20 -1
  53. package/lib/components/VTextarea/VTextarea.js.map +1 -1
  54. package/lib/components/VTextarea/VTextarea.sass +4 -2
  55. package/lib/components/VTreeview/VTreeview.d.ts +192 -5
  56. package/lib/components/VTreeview/VTreeview.js +16 -3
  57. package/lib/components/VTreeview/VTreeview.js.map +1 -1
  58. package/lib/composables/icons.d.ts +0 -2
  59. package/lib/composables/icons.js +3 -36
  60. package/lib/composables/icons.js.map +1 -1
  61. package/lib/composables/virtual.js +2 -2
  62. package/lib/composables/virtual.js.map +1 -1
  63. package/lib/entry-bundler.js +1 -1
  64. package/lib/framework.d.ts +65 -65
  65. package/lib/framework.js +3 -2
  66. package/lib/framework.js.map +1 -1
  67. package/lib/icons.d.ts +3 -0
  68. package/lib/icons.js +34 -0
  69. package/lib/icons.js.map +1 -0
  70. package/lib/labs/VColorInput/VColorInput.d.ts +0 -40
  71. package/lib/labs/VColorInput/VColorInput.js +2 -2
  72. package/lib/labs/VColorInput/VColorInput.js.map +1 -1
  73. package/lib/labs/VDateInput/VDateInput.d.ts +0 -30
  74. package/lib/labs/VDateInput/VDateInput.js +2 -2
  75. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  76. package/lib/labs/VMaskInput/VMaskInput.js +1 -1
  77. package/lib/labs/VMaskInput/VMaskInput.js.map +1 -1
  78. package/package.json +1 -1
package/lib/icons.js ADDED
@@ -0,0 +1,34 @@
1
+ // Composables
2
+ import { VClassIcon, VSvgIcon } from "./composables/icons.js";
3
+ import { aliases, mdi } from "./iconsets/mdi.js"; // Utilities
4
+ import { mergeDeep } from "./util/index.js"; // Types
5
+ function genDefaults() {
6
+ return {
7
+ svg: {
8
+ component: VSvgIcon
9
+ },
10
+ class: {
11
+ component: VClassIcon
12
+ }
13
+ };
14
+ }
15
+ export function createIcons(options) {
16
+ const sets = genDefaults();
17
+ const defaultSet = options?.defaultSet ?? 'mdi';
18
+ if (defaultSet === 'mdi' && !sets.mdi) {
19
+ sets.mdi = mdi;
20
+ }
21
+ return mergeDeep({
22
+ defaultSet,
23
+ sets,
24
+ aliases: {
25
+ ...aliases,
26
+ /* eslint-disable max-len */
27
+ vuetify: ['M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z', ['M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z', 0.6]],
28
+ 'vuetify-outline': 'svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z',
29
+ 'vuetify-play': ['m6.376 13.184-4.11-7.192C1.505 4.66 2.467 3 4.003 3h8.532l-.953 1.576-.006.01-.396.677c-.429.732-.214 1.507.194 2.015.404.503 1.092.878 1.869.806a3.72 3.72 0 0 1 1.005.022c.276.053.434.143.523.237.138.146.38.635-.25 2.09-.893 1.63-1.553 1.722-1.847 1.677-.213-.033-.468-.158-.756-.406a4.95 4.95 0 0 1-.8-.927c-.39-.564-1.04-.84-1.66-.846-.625-.006-1.316.27-1.693.921l-.478.826-.911 1.506Z', ['M9.093 11.552c.046-.079.144-.15.32-.148a.53.53 0 0 1 .43.207c.285.414.636.847 1.046 1.2.405.35.914.662 1.516.754 1.334.205 2.502-.698 3.48-2.495l.014-.028.013-.03c.687-1.574.774-2.852-.005-3.675-.37-.391-.861-.586-1.333-.676a5.243 5.243 0 0 0-1.447-.044c-.173.016-.393-.073-.54-.257-.145-.18-.127-.316-.082-.392l.393-.672L14.287 3h5.71c1.536 0 2.499 1.659 1.737 2.992l-7.997 13.996c-.768 1.344-2.706 1.344-3.473 0l-3.037-5.314 1.377-2.278.004-.006.004-.007.481-.831Z', 0.6]]
30
+ /* eslint-enable max-len */
31
+ }
32
+ }, options);
33
+ }
34
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","names":["VClassIcon","VSvgIcon","aliases","mdi","mergeDeep","genDefaults","svg","component","class","createIcons","options","sets","defaultSet","vuetify"],"sources":["../src/icons.ts"],"sourcesContent":["// Composables\nimport { VClassIcon, VSvgIcon } from '@/composables/icons'\nimport { aliases, mdi } from '@/iconsets/mdi'\n\n// Utilities\nimport { mergeDeep } from '@/util'\n\n// Types\nimport type { IconOptions, IconSet, InternalIconOptions } from '@/composables/icons'\n\nfunction genDefaults (): Record<string, IconSet> {\n return {\n svg: {\n component: VSvgIcon,\n },\n class: {\n component: VClassIcon,\n },\n }\n}\n\nexport function createIcons (options?: IconOptions) {\n const sets = genDefaults()\n const defaultSet = options?.defaultSet ?? 'mdi'\n\n if (defaultSet === 'mdi' && !sets.mdi) {\n sets.mdi = mdi\n }\n\n return mergeDeep({\n defaultSet,\n sets,\n aliases: {\n ...aliases,\n /* eslint-disable max-len */\n vuetify: [\n 'M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z',\n ['M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z', 0.6],\n ],\n 'vuetify-outline': 'svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z',\n 'vuetify-play': [\n 'm6.376 13.184-4.11-7.192C1.505 4.66 2.467 3 4.003 3h8.532l-.953 1.576-.006.01-.396.677c-.429.732-.214 1.507.194 2.015.404.503 1.092.878 1.869.806a3.72 3.72 0 0 1 1.005.022c.276.053.434.143.523.237.138.146.38.635-.25 2.09-.893 1.63-1.553 1.722-1.847 1.677-.213-.033-.468-.158-.756-.406a4.95 4.95 0 0 1-.8-.927c-.39-.564-1.04-.84-1.66-.846-.625-.006-1.316.27-1.693.921l-.478.826-.911 1.506Z',\n ['M9.093 11.552c.046-.079.144-.15.32-.148a.53.53 0 0 1 .43.207c.285.414.636.847 1.046 1.2.405.35.914.662 1.516.754 1.334.205 2.502-.698 3.48-2.495l.014-.028.013-.03c.687-1.574.774-2.852-.005-3.675-.37-.391-.861-.586-1.333-.676a5.243 5.243 0 0 0-1.447-.044c-.173.016-.393-.073-.54-.257-.145-.18-.127-.316-.082-.392l.393-.672L14.287 3h5.71c1.536 0 2.499 1.659 1.737 2.992l-7.997 13.996c-.768 1.344-2.706 1.344-3.473 0l-3.037-5.314 1.377-2.278.004-.006.004-.007.481-.831Z', 0.6],\n ],\n /* eslint-enable max-len */\n },\n }, options) as InternalIconOptions\n}\n"],"mappings":"AAAA;AAAA,SACSA,UAAU,EAAEC,QAAQ;AAAA,SACpBC,OAAO,EAAEC,GAAG,6BAErB;AAAA,SACSC,SAAS,2BAElB;AAGA,SAASC,WAAWA,CAAA,EAA6B;EAC/C,OAAO;IACLC,GAAG,EAAE;MACHC,SAAS,EAAEN;IACb,CAAC;IACDO,KAAK,EAAE;MACLD,SAAS,EAAEP;IACb;EACF,CAAC;AACH;AAEA,OAAO,SAASS,WAAWA,CAAEC,OAAqB,EAAE;EAClD,MAAMC,IAAI,GAAGN,WAAW,CAAC,CAAC;EAC1B,MAAMO,UAAU,GAAGF,OAAO,EAAEE,UAAU,IAAI,KAAK;EAE/C,IAAIA,UAAU,KAAK,KAAK,IAAI,CAACD,IAAI,CAACR,GAAG,EAAE;IACrCQ,IAAI,CAACR,GAAG,GAAGA,GAAG;EAChB;EAEA,OAAOC,SAAS,CAAC;IACfQ,UAAU;IACVD,IAAI;IACJT,OAAO,EAAE;MACP,GAAGA,OAAO;MACV;MACAW,OAAO,EAAE,CACP,oDAAoD,EACpD,CAAC,wFAAwF,EAAE,GAAG,CAAC,CAChG;MACD,iBAAiB,EAAE,+IAA+I;MAClK,cAAc,EAAE,CACd,sYAAsY,EACtY,CAAC,odAAod,EAAE,GAAG,CAAC;MAE7d;IACF;EACF,CAAC,EAAEH,OAAO,CAAC;AACb","ignoreList":[]}
@@ -33,13 +33,9 @@ export declare const makeVColorInputProps: <Defaults extends {
33
33
  rounded?: unknown;
34
34
  tile?: unknown;
35
35
  tag?: unknown;
36
- height?: unknown;
37
- maxHeight?: unknown;
38
36
  maxWidth?: unknown;
39
- minHeight?: unknown;
40
37
  minWidth?: unknown;
41
38
  width?: unknown;
42
- location?: unknown;
43
39
  loading?: unknown;
44
40
  position?: unknown;
45
41
  id?: unknown;
@@ -244,22 +240,10 @@ export declare const makeVColorInputProps: <Defaults extends {
244
240
  type: PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
245
241
  default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
246
242
  };
247
- height: unknown extends Defaults["height"] ? (NumberConstructor | StringConstructor)[] : {
248
- type: PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
249
- default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
250
- };
251
- maxHeight: unknown extends Defaults["maxHeight"] ? (NumberConstructor | StringConstructor)[] : {
252
- type: PropType<unknown extends Defaults["maxHeight"] ? string | number : string | number | Defaults["maxHeight"]>;
253
- default: unknown extends Defaults["maxHeight"] ? string | number : Defaults["maxHeight"] | NonNullable<string | number>;
254
- };
255
243
  maxWidth: unknown extends Defaults["maxWidth"] ? (NumberConstructor | StringConstructor)[] : {
256
244
  type: PropType<unknown extends Defaults["maxWidth"] ? string | number : string | number | Defaults["maxWidth"]>;
257
245
  default: unknown extends Defaults["maxWidth"] ? string | number : Defaults["maxWidth"] | NonNullable<string | number>;
258
246
  };
259
- minHeight: unknown extends Defaults["minHeight"] ? (NumberConstructor | StringConstructor)[] : {
260
- type: PropType<unknown extends Defaults["minHeight"] ? string | number : string | number | Defaults["minHeight"]>;
261
- default: unknown extends Defaults["minHeight"] ? string | number : Defaults["minHeight"] | NonNullable<string | number>;
262
- };
263
247
  minWidth: unknown extends Defaults["minWidth"] ? (NumberConstructor | StringConstructor)[] : {
264
248
  type: PropType<unknown extends Defaults["minWidth"] ? string | number : string | number | Defaults["minWidth"]>;
265
249
  default: unknown extends Defaults["minWidth"] ? string | number : Defaults["minWidth"] | NonNullable<string | number>;
@@ -268,10 +252,6 @@ export declare const makeVColorInputProps: <Defaults extends {
268
252
  type: PropType<unknown extends Defaults["width"] ? string | number : string | number | Defaults["width"]>;
269
253
  default: unknown extends Defaults["width"] ? string | number : Defaults["width"] | NonNullable<string | number>;
270
254
  };
271
- location: unknown extends Defaults["location"] ? PropType<import("../../util/index.js").Anchor | null> : {
272
- type: PropType<unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : Defaults["location"] | import("../../util/index.js").Anchor | null>;
273
- default: unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : Defaults["location"] | NonNullable<import("../../util/index.js").Anchor | null>;
274
- };
275
255
  loading: unknown extends Defaults["loading"] ? (BooleanConstructor | StringConstructor)[] : {
276
256
  type: PropType<unknown extends Defaults["loading"] ? string | boolean : string | boolean | Defaults["loading"]>;
277
257
  default: unknown extends Defaults["loading"] ? string | boolean : Defaults["loading"] | NonNullable<string | boolean>;
@@ -841,13 +821,9 @@ export declare const VColorInput: {
841
821
  border?: string | number | boolean | undefined;
842
822
  elevation?: string | number | undefined;
843
823
  rounded?: string | number | boolean | undefined;
844
- height?: string | number | undefined;
845
- maxHeight?: string | number | undefined;
846
824
  maxWidth?: string | number | undefined;
847
- minHeight?: string | number | undefined;
848
825
  minWidth?: string | number | undefined;
849
826
  width?: string | number | undefined;
850
- location?: import("../../util/index.js").Anchor | null | undefined;
851
827
  loading?: string | boolean | undefined;
852
828
  position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
853
829
  id?: string | undefined;
@@ -1126,13 +1102,9 @@ export declare const VColorInput: {
1126
1102
  border?: string | number | boolean | undefined;
1127
1103
  elevation?: string | number | undefined;
1128
1104
  rounded?: string | number | boolean | undefined;
1129
- height?: string | number | undefined;
1130
- maxHeight?: string | number | undefined;
1131
1105
  maxWidth?: string | number | undefined;
1132
- minHeight?: string | number | undefined;
1133
1106
  minWidth?: string | number | undefined;
1134
1107
  width?: string | number | undefined;
1135
- location?: import("../../util/index.js").Anchor | null | undefined;
1136
1108
  loading?: string | boolean | undefined;
1137
1109
  position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
1138
1110
  id?: string | undefined;
@@ -1364,13 +1336,9 @@ export declare const VColorInput: {
1364
1336
  border?: string | number | boolean | undefined;
1365
1337
  elevation?: string | number | undefined;
1366
1338
  rounded?: string | number | boolean | undefined;
1367
- height?: string | number | undefined;
1368
- maxHeight?: string | number | undefined;
1369
1339
  maxWidth?: string | number | undefined;
1370
- minHeight?: string | number | undefined;
1371
1340
  minWidth?: string | number | undefined;
1372
1341
  width?: string | number | undefined;
1373
- location?: import("../../util/index.js").Anchor | null | undefined;
1374
1342
  loading?: string | boolean | undefined;
1375
1343
  position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
1376
1344
  id?: string | undefined;
@@ -1625,13 +1593,9 @@ export declare const VColorInput: {
1625
1593
  type: PropType<string | import("../../util/index.js").JSXComponent>;
1626
1594
  default: string;
1627
1595
  };
1628
- height: (NumberConstructor | StringConstructor)[];
1629
- maxHeight: (NumberConstructor | StringConstructor)[];
1630
1596
  maxWidth: (NumberConstructor | StringConstructor)[];
1631
- minHeight: (NumberConstructor | StringConstructor)[];
1632
1597
  minWidth: (NumberConstructor | StringConstructor)[];
1633
1598
  width: (NumberConstructor | StringConstructor)[];
1634
- location: PropType<import("../../util/index.js").Anchor | null>;
1635
1599
  loading: (BooleanConstructor | StringConstructor)[];
1636
1600
  position: {
1637
1601
  type: PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
@@ -1833,13 +1797,9 @@ export declare const VColorInput: {
1833
1797
  type: PropType<string | import("../../util/index.js").JSXComponent>;
1834
1798
  default: string;
1835
1799
  };
1836
- height: (NumberConstructor | StringConstructor)[];
1837
- maxHeight: (NumberConstructor | StringConstructor)[];
1838
1800
  maxWidth: (NumberConstructor | StringConstructor)[];
1839
- minHeight: (NumberConstructor | StringConstructor)[];
1840
1801
  minWidth: (NumberConstructor | StringConstructor)[];
1841
1802
  width: (NumberConstructor | StringConstructor)[];
1842
- location: PropType<import("../../util/index.js").Anchor | null>;
1843
1803
  loading: (BooleanConstructor | StringConstructor)[];
1844
1804
  position: {
1845
1805
  type: PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
@@ -32,7 +32,7 @@ export const makeVColorInputProps = propsFactory({
32
32
  ...makeFocusProps(),
33
33
  ...makeVConfirmEditProps(),
34
34
  ...makeVTextFieldProps(),
35
- ...omit(makeVColorPickerProps(), ['width'])
35
+ ...omit(makeVColorPickerProps(), ['location', 'height', 'minHeight', 'maxHeight'])
36
36
  }, 'VColorInput');
37
37
  export const VColorInput = genericComponent()({
38
38
  name: 'VColorInput',
@@ -71,7 +71,7 @@ export const VColorInput = genericComponent()({
71
71
  }
72
72
  useRender(() => {
73
73
  const confirmEditProps = VConfirmEdit.filterProps(props);
74
- const colorPickerProps = VColorPicker.filterProps(omit(props, ['active', 'color']));
74
+ const colorPickerProps = VColorPicker.filterProps(omit(props, ['active', 'bgColor', 'color', 'rounded', 'maxWidth', 'minWidth', 'width']));
75
75
  const textFieldProps = VTextField.filterProps(props);
76
76
  const slotWithPip = props.hidePip ? undefined : {
77
77
  [props.pipLocation]: arg => _createElementVNode(_Fragment, null, [_createVNode(VAvatar, {
@@ -1 +1 @@
1
- {"version":3,"file":"VColorInput.js","names":["VAvatar","makeVColorPickerProps","VColorPicker","makeVConfirmEditProps","VConfirmEdit","VMenu","makeVTextFieldProps","VTextField","makeFocusProps","useProxiedModel","computed","shallowRef","genericComponent","omit","propsFactory","useRender","availablePipLocations","makeVColorInputProps","hidePip","Boolean","colorPip","pipIcon","type","String","default","pipLocation","validator","v","includes","pipVariant","VColorInput","name","props","emits","val","setup","_ref","slots","model","menu","isFocused","focused","isInteractive","disabled","readonly","display","value","onKeydown","e","key","target","onClick","preventDefault","stopPropagation","onSave","onCancel","confirmEditProps","filterProps","colorPickerProps","textFieldProps","slotWithPip","undefined","arg","_createElementVNode","_Fragment","_createVNode","_mergeProps","class","style","event","$event","_ref2","actions","proxyModel","save","cancel","isPristine","onUpdateModel","hideActions"],"sources":["../../../src/labs/VColorInput/VColorInput.tsx"],"sourcesContent":["// Styles\nimport './VColorInput.sass'\n\n// Components\nimport { VAvatar } from '@/components/VAvatar'\nimport { makeVColorPickerProps, VColorPicker } from '@/components/VColorPicker/VColorPicker'\nimport { makeVConfirmEditProps, VConfirmEdit } from '@/components/VConfirmEdit/VConfirmEdit'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { makeFocusProps } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, shallowRef } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\nexport type VColorInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VColorInputSlots = Omit<VTextFieldSlots, 'default'> & {\n actions: VColorInputActionsSlot\n default: never\n}\n\nconst availablePipLocations = ['prepend', 'prepend-inner', 'append', 'append-inner'] as const\nexport type PipLocation = typeof availablePipLocations[number]\n\nexport const makeVColorInputProps = propsFactory({\n hidePip: Boolean,\n colorPip: Boolean,\n pipIcon: {\n type: String,\n default: '$color',\n },\n pipLocation: {\n type: String as PropType<PipLocation>,\n default: 'prepend',\n validator: (v: any) => availablePipLocations.includes(v),\n },\n pipVariant: {\n type: String as PropType<VAvatar['$props']['variant']>,\n default: 'text',\n },\n\n ...makeFocusProps(),\n ...makeVConfirmEditProps(),\n ...makeVTextFieldProps(),\n ...omit(makeVColorPickerProps(), ['width']),\n}, 'VColorInput')\n\nexport const VColorInput = genericComponent<VColorInputSlots>()({\n name: 'VColorInput',\n\n props: makeVColorInputProps(),\n\n emits: {\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const menu = shallowRef(false)\n const isFocused = shallowRef(props.focused)\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n const display = computed(() => model.value || null)\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter') return\n\n if (!menu.value || !isFocused.value) {\n menu.value = true\n\n return\n }\n\n const target = e.target as HTMLInputElement\n\n model.value = target.value\n }\n\n function onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n menu.value = true\n }\n\n function onSave () {\n menu.value = false\n }\n\n function onCancel () {\n menu.value = false\n }\n\n useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const colorPickerProps = VColorPicker.filterProps(omit(props, ['active', 'color']))\n const textFieldProps = VTextField.filterProps(props)\n\n const slotWithPip = props.hidePip\n ? undefined\n : {\n [props.pipLocation]: (arg: any) => (\n <>\n <VAvatar\n class=\"v-color-input__pip\"\n color={ props.colorPip ? model.value as string : undefined }\n variant={ props.pipVariant }\n icon={ props.pipIcon }\n />\n { slots[props.pipLocation]?.(arg) }\n </>\n ),\n }\n\n return (\n <VTextField\n { ...textFieldProps }\n class={[\n 'v-color-input',\n props.class,\n ]}\n style={ props.style }\n modelValue={ display.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prependInner={ isInteractive.value ? onClick : undefined }\n onUpdate:focused={ event => isFocused.value = event }\n onClick:appendInner={ isInteractive.value ? onClick : undefined }\n onUpdate:modelValue={ val => {\n model.value = val\n }}\n >\n {{\n ...slots,\n ...slotWithPip,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n minWidth=\"0\"\n closeOnContentClick={ false }\n openOnClick={ false }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n onSave={ onSave }\n onCancel={ onCancel }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n function onUpdateModel (value: string) {\n if (!props.hideActions) {\n proxyModel.value = value\n } else {\n model.value = value\n }\n }\n\n return (\n <VColorPicker\n { ...colorPickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ value => onUpdateModel(value) }\n >\n {{\n actions: !props.hideActions ? () => slots.actions?.({ save, cancel, isPristine }) ?? actions() : undefined,\n }}\n </VColorPicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </>\n ),\n }}\n </VTextField>\n )\n })\n },\n})\n\nexport type VColorInput = InstanceType<typeof VColorInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VColorInput.js","names":["VAvatar","makeVColorPickerProps","VColorPicker","makeVConfirmEditProps","VConfirmEdit","VMenu","makeVTextFieldProps","VTextField","makeFocusProps","useProxiedModel","computed","shallowRef","genericComponent","omit","propsFactory","useRender","availablePipLocations","makeVColorInputProps","hidePip","Boolean","colorPip","pipIcon","type","String","default","pipLocation","validator","v","includes","pipVariant","VColorInput","name","props","emits","val","setup","_ref","slots","model","menu","isFocused","focused","isInteractive","disabled","readonly","display","value","onKeydown","e","key","target","onClick","preventDefault","stopPropagation","onSave","onCancel","confirmEditProps","filterProps","colorPickerProps","textFieldProps","slotWithPip","undefined","arg","_createElementVNode","_Fragment","_createVNode","_mergeProps","class","style","event","$event","_ref2","actions","proxyModel","save","cancel","isPristine","onUpdateModel","hideActions"],"sources":["../../../src/labs/VColorInput/VColorInput.tsx"],"sourcesContent":["// Styles\nimport './VColorInput.sass'\n\n// Components\nimport { VAvatar } from '@/components/VAvatar'\nimport { makeVColorPickerProps, VColorPicker } from '@/components/VColorPicker/VColorPicker'\nimport { makeVConfirmEditProps, VConfirmEdit } from '@/components/VConfirmEdit/VConfirmEdit'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { makeFocusProps } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, shallowRef } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\nexport type VColorInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VColorInputSlots = Omit<VTextFieldSlots, 'default'> & {\n actions: VColorInputActionsSlot\n default: never\n}\n\nconst availablePipLocations = ['prepend', 'prepend-inner', 'append', 'append-inner'] as const\nexport type PipLocation = typeof availablePipLocations[number]\n\nexport const makeVColorInputProps = propsFactory({\n hidePip: Boolean,\n colorPip: Boolean,\n pipIcon: {\n type: String,\n default: '$color',\n },\n pipLocation: {\n type: String as PropType<PipLocation>,\n default: 'prepend',\n validator: (v: any) => availablePipLocations.includes(v),\n },\n pipVariant: {\n type: String as PropType<VAvatar['$props']['variant']>,\n default: 'text',\n },\n\n ...makeFocusProps(),\n ...makeVConfirmEditProps(),\n ...makeVTextFieldProps(),\n ...omit(makeVColorPickerProps(), [\n 'location',\n 'height',\n 'minHeight',\n 'maxHeight',\n ]),\n}, 'VColorInput')\n\nexport const VColorInput = genericComponent<VColorInputSlots>()({\n name: 'VColorInput',\n\n props: makeVColorInputProps(),\n\n emits: {\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const menu = shallowRef(false)\n const isFocused = shallowRef(props.focused)\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n const display = computed(() => model.value || null)\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter') return\n\n if (!menu.value || !isFocused.value) {\n menu.value = true\n\n return\n }\n\n const target = e.target as HTMLInputElement\n\n model.value = target.value\n }\n\n function onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n menu.value = true\n }\n\n function onSave () {\n menu.value = false\n }\n\n function onCancel () {\n menu.value = false\n }\n\n useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const colorPickerProps = VColorPicker.filterProps(omit(props, [\n 'active',\n 'bgColor',\n 'color',\n 'rounded',\n 'maxWidth',\n 'minWidth',\n 'width',\n ]))\n const textFieldProps = VTextField.filterProps(props)\n\n const slotWithPip = props.hidePip\n ? undefined\n : {\n [props.pipLocation]: (arg: any) => (\n <>\n <VAvatar\n class=\"v-color-input__pip\"\n color={ props.colorPip ? model.value as string : undefined }\n variant={ props.pipVariant }\n icon={ props.pipIcon }\n />\n { slots[props.pipLocation]?.(arg) }\n </>\n ),\n }\n\n return (\n <VTextField\n { ...textFieldProps }\n class={[\n 'v-color-input',\n props.class,\n ]}\n style={ props.style }\n modelValue={ display.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prependInner={ isInteractive.value ? onClick : undefined }\n onUpdate:focused={ event => isFocused.value = event }\n onClick:appendInner={ isInteractive.value ? onClick : undefined }\n onUpdate:modelValue={ val => {\n model.value = val\n }}\n >\n {{\n ...slots,\n ...slotWithPip,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n minWidth=\"0\"\n closeOnContentClick={ false }\n openOnClick={ false }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n onSave={ onSave }\n onCancel={ onCancel }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n function onUpdateModel (value: string) {\n if (!props.hideActions) {\n proxyModel.value = value\n } else {\n model.value = value\n }\n }\n\n return (\n <VColorPicker\n { ...colorPickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ value => onUpdateModel(value) }\n >\n {{\n actions: !props.hideActions ? () => slots.actions?.({ save, cancel, isPristine }) ?? actions() : undefined,\n }}\n </VColorPicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </>\n ),\n }}\n </VTextField>\n )\n })\n },\n})\n\nexport type VColorInput = InstanceType<typeof VColorInput>\n"],"mappings":"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","ignoreList":[]}
@@ -34,10 +34,7 @@ export declare const makeVDateInputProps: <Defaults extends {
34
34
  rounded?: unknown;
35
35
  tile?: unknown;
36
36
  tag?: unknown;
37
- height?: unknown;
38
- maxHeight?: unknown;
39
37
  maxWidth?: unknown;
40
- minHeight?: unknown;
41
38
  minWidth?: unknown;
42
39
  width?: unknown;
43
40
  loading?: unknown;
@@ -278,22 +275,10 @@ export declare const makeVDateInputProps: <Defaults extends {
278
275
  type: PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
279
276
  default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
280
277
  };
281
- height: unknown extends Defaults["height"] ? (NumberConstructor | StringConstructor)[] : {
282
- type: PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
283
- default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
284
- };
285
- maxHeight: unknown extends Defaults["maxHeight"] ? (NumberConstructor | StringConstructor)[] : {
286
- type: PropType<unknown extends Defaults["maxHeight"] ? string | number : string | number | Defaults["maxHeight"]>;
287
- default: unknown extends Defaults["maxHeight"] ? string | number : Defaults["maxHeight"] | NonNullable<string | number>;
288
- };
289
278
  maxWidth: unknown extends Defaults["maxWidth"] ? (NumberConstructor | StringConstructor)[] : {
290
279
  type: PropType<unknown extends Defaults["maxWidth"] ? string | number : string | number | Defaults["maxWidth"]>;
291
280
  default: unknown extends Defaults["maxWidth"] ? string | number : Defaults["maxWidth"] | NonNullable<string | number>;
292
281
  };
293
- minHeight: unknown extends Defaults["minHeight"] ? (NumberConstructor | StringConstructor)[] : {
294
- type: PropType<unknown extends Defaults["minHeight"] ? string | number : string | number | Defaults["minHeight"]>;
295
- default: unknown extends Defaults["minHeight"] ? string | number : Defaults["minHeight"] | NonNullable<string | number>;
296
- };
297
282
  minWidth: unknown extends Defaults["minWidth"] ? (NumberConstructor | StringConstructor)[] : {
298
283
  type: PropType<unknown extends Defaults["minWidth"] ? string | number : string | number | Defaults["minWidth"]>;
299
284
  default: unknown extends Defaults["minWidth"] ? string | number : Defaults["minWidth"] | NonNullable<string | number>;
@@ -917,10 +902,7 @@ export declare const VDateInput: {
917
902
  border?: string | number | boolean | undefined;
918
903
  elevation?: string | number | undefined;
919
904
  rounded?: string | number | boolean | undefined;
920
- height?: string | number | undefined;
921
- maxHeight?: string | number | undefined;
922
905
  maxWidth?: string | number | undefined;
923
- minHeight?: string | number | undefined;
924
906
  minWidth?: string | number | undefined;
925
907
  width?: string | number | undefined;
926
908
  loading?: string | boolean | undefined;
@@ -3346,10 +3328,7 @@ export declare const VDateInput: {
3346
3328
  border?: string | number | boolean | undefined;
3347
3329
  elevation?: string | number | undefined;
3348
3330
  rounded?: string | number | boolean | undefined;
3349
- height?: string | number | undefined;
3350
- maxHeight?: string | number | undefined;
3351
3331
  maxWidth?: string | number | undefined;
3352
- minHeight?: string | number | undefined;
3353
3332
  minWidth?: string | number | undefined;
3354
3333
  width?: string | number | undefined;
3355
3334
  loading?: string | boolean | undefined;
@@ -5677,10 +5656,7 @@ export declare const VDateInput: {
5677
5656
  border?: string | number | boolean | undefined;
5678
5657
  elevation?: string | number | undefined;
5679
5658
  rounded?: string | number | boolean | undefined;
5680
- height?: string | number | undefined;
5681
- maxHeight?: string | number | undefined;
5682
5659
  maxWidth?: string | number | undefined;
5683
- minHeight?: string | number | undefined;
5684
5660
  minWidth?: string | number | undefined;
5685
5661
  width?: string | number | undefined;
5686
5662
  loading?: string | boolean | undefined;
@@ -8097,10 +8073,7 @@ export declare const VDateInput: {
8097
8073
  type: PropType<string | import("../../util/index.js").JSXComponent>;
8098
8074
  default: string;
8099
8075
  };
8100
- height: (NumberConstructor | StringConstructor)[];
8101
- maxHeight: (NumberConstructor | StringConstructor)[];
8102
8076
  maxWidth: (NumberConstructor | StringConstructor)[];
8103
- minHeight: (NumberConstructor | StringConstructor)[];
8104
8077
  minWidth: (NumberConstructor | StringConstructor)[];
8105
8078
  width: (NumberConstructor | StringConstructor)[];
8106
8079
  loading: (BooleanConstructor | StringConstructor)[];
@@ -8342,10 +8315,7 @@ export declare const VDateInput: {
8342
8315
  type: PropType<string | import("../../util/index.js").JSXComponent>;
8343
8316
  default: string;
8344
8317
  };
8345
- height: (NumberConstructor | StringConstructor)[];
8346
- maxHeight: (NumberConstructor | StringConstructor)[];
8347
8318
  maxWidth: (NumberConstructor | StringConstructor)[];
8348
- minHeight: (NumberConstructor | StringConstructor)[];
8349
8319
  minWidth: (NumberConstructor | StringConstructor)[];
8350
8320
  width: (NumberConstructor | StringConstructor)[];
8351
8321
  loading: (BooleanConstructor | StringConstructor)[];
@@ -43,7 +43,7 @@ export const makeVDateInputProps = propsFactory({
43
43
  ...omit(makeVDatePickerProps({
44
44
  hideHeader: true,
45
45
  showAdjacentMonths: true
46
- }), ['active', 'location', 'rounded'])
46
+ }), ['active', 'location', 'rounded', 'height', 'minHeight', 'maxHeight'])
47
47
  }, 'VDateInput');
48
48
  export const VDateInput = genericComponent()({
49
49
  name: 'VDateInput',
@@ -185,7 +185,7 @@ export const VDateInput = genericComponent()({
185
185
  }
186
186
  useRender(() => {
187
187
  const confirmEditProps = VConfirmEdit.filterProps(props);
188
- const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
188
+ const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'bgColor', 'color', 'location', 'rounded', 'maxWidth', 'minWidth', 'width']));
189
189
  const datePickerSlots = pick(slots, ['title', 'header', 'day', 'month', 'year']);
190
190
  const textFieldProps = VTextField.filterProps(omit(props, ['placeholder']));
191
191
  return _createVNode(VTextField, _mergeProps({
@@ -1 +1 @@
1
- {"version":3,"file":"VDateInput.js","names":["makeVConfirmEditProps","VConfirmEdit","makeVDatePickerProps","VDatePicker","VMenu","makeVTextFieldProps","VTextField","useDate","createDateRange","makeDateFormatProps","useDateFormat","makeDisplayProps","useDisplay","makeFocusProps","forwardRefs","useLocale","useProxiedModel","computed","ref","shallowRef","watch","genericComponent","omit","pick","propsFactory","useRender","wrapInArray","makeVDateInputProps","displayFormat","type","Function","String","default","undefined","location","menu","Boolean","updateOn","Array","mobile","hideActions","prependIcon","hideHeader","showAdjacentMonths","VDateInput","name","props","emits","save","value","cancel","val","setup","_ref","emit","slots","t","current","currentLocale","adapter","isValid","parseDate","formatDate","parserFormat","emptyModelValue","multiple","model","isArray","map","item","toJsDate","date","isEditingInput","isFocused","focused","vTextFieldRef","disabledActions","format","display","length","start","end","inputmode","isInteractive","disabled","readonly","isReadonly","onKeydown","e","key","includes","onUserInput","target","onClick","preventDefault","stopPropagation","onCancel","onSave","onUpdateDisplayModel","onBlur","_ref2","trim","parts","split","every","stop","toSorted","a","b","isAfter","confirmEditProps","filterProps","datePickerProps","datePickerSlots","textFieldProps","_createVNode","_mergeProps","class","style","placeholder","event","_createElementVNode","_Fragment","$event","_ref3","actions","proxyModel","isPristine","onUpdateModel"],"sources":["../../../src/labs/VDateInput/VDateInput.tsx"],"sourcesContent":["// Components\nimport { makeVConfirmEditProps, VConfirmEdit } from '@/components/VConfirmEdit/VConfirmEdit'\nimport { makeVDatePickerProps, VDatePicker } from '@/components/VDatePicker/VDatePicker'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { createDateRange } from '@/composables/date/date'\nimport { makeDateFormatProps, useDateFormat } from '@/composables/dateFormat'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeFocusProps } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, pick, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VDatePickerSlots } from '@/components/VDatePicker/VDatePicker'\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\nimport type { GenericProps } from '@/util'\n\n// Types\nexport type VDateInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VDateInputSlots = Omit<VTextFieldSlots, 'default'> &\n Pick<VDatePickerSlots, 'title' | 'header' | 'day' | 'month' | 'year'> & {\n actions: VDateInputActionsSlot\n default: never\n }\n\nexport const makeVDateInputProps = propsFactory({\n displayFormat: {\n type: [Function, String] as PropType<string | ((date: unknown) => any)>,\n default: undefined,\n },\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom start',\n },\n menu: Boolean,\n updateOn: {\n type: Array as PropType<('blur' | 'enter')[]>,\n default: () => ['blur', 'enter'],\n },\n\n ...makeDateFormatProps(),\n ...makeDisplayProps({\n mobile: null,\n }),\n ...makeFocusProps(),\n ...makeVConfirmEditProps({\n hideActions: true,\n }),\n ...makeVTextFieldProps({\n prependIcon: '$calendar',\n }),\n ...omit(makeVDatePickerProps({\n hideHeader: true,\n showAdjacentMonths: true,\n }), ['active', 'location', 'rounded']),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent<new <\n T,\n Multiple extends boolean | 'range' | number | (string & {}) = false,\n TModel = Multiple extends true | number | string\n ? T[]\n : T,\n> (\n props: {\n modelValue?: TModel\n onSave?: (value: TModel) => void\n 'onUpdate:modelValue'?: (value: TModel) => void\n multiple?: Multiple\n },\n slots: VDateInputSlots\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n save: (value: unknown) => true,\n cancel: () => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: unknown) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t, current: currentLocale } = useLocale()\n const adapter = useDate()\n const { isValid, parseDate, formatDate, parserFormat } = useDateFormat(props, currentLocale)\n const { mobile } = useDisplay(props)\n\n const emptyModelValue = () => props.multiple ? [] : null\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n emptyModelValue(),\n val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val,\n val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val\n )\n\n const menu = useProxiedModel(props, 'menu')\n const isEditingInput = shallowRef(false)\n const isFocused = shallowRef(props.focused)\n const vTextFieldRef = ref<VTextField>()\n const disabledActions = ref<typeof VConfirmEdit['props']['disabled']>(['save'])\n\n function format (date: unknown) {\n if (typeof props.displayFormat === 'function') {\n return props.displayFormat(date)\n }\n if (props.displayFormat) {\n return adapter.format(date, props.displayFormat ?? 'keyboardDate')\n }\n return formatDate(date)\n }\n\n const display = computed(() => {\n const value = wrapInArray(model.value)\n\n if (!value.length) return null\n\n if (props.multiple === true) {\n return t('$vuetify.datePicker.itemsSelected', value.length)\n }\n\n if (props.multiple === 'range') {\n const start = value[0]\n const end = value[value.length - 1]\n\n if (!adapter.isValid(start) || !adapter.isValid(end)) return ''\n\n return `${format(adapter.date(start))} - ${format(adapter.date(end))}`\n }\n\n return adapter.isValid(model.value) ? format(adapter.date(model.value)) : ''\n })\n\n const inputmode = computed(() => {\n if (!mobile.value) return undefined\n if (isEditingInput.value) return 'text'\n\n return 'none'\n })\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n const isReadonly = computed(() => {\n if (!props.updateOn.length) return true\n\n return !(mobile.value && isEditingInput.value) && props.readonly\n })\n\n watch(menu, val => {\n if (val) return\n\n isEditingInput.value = false\n disabledActions.value = ['save']\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter') return\n\n if (!menu.value || !isFocused.value) {\n menu.value = true\n }\n\n if (props.updateOn.includes('enter')) {\n onUserInput(e.target as HTMLInputElement)\n }\n }\n\n function onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n if (menu.value && mobile.value) {\n isEditingInput.value = true\n } else {\n menu.value = true\n }\n }\n\n function onCancel () {\n emit('cancel')\n menu.value = false\n isEditingInput.value = false\n }\n\n function onSave (value: string) {\n emit('save', value)\n menu.value = false\n }\n\n function onUpdateDisplayModel (value: unknown) {\n if (value != null) return\n\n model.value = emptyModelValue()\n }\n\n function onBlur (e: FocusEvent) {\n if (props.updateOn.includes('blur')) {\n onUserInput(e.target as HTMLInputElement)\n }\n\n // When in mobile mode and editing is done (due to keyboard dismissal), close the menu\n if (mobile.value && isEditingInput.value && !isFocused.value) {\n menu.value = false\n isEditingInput.value = false\n }\n }\n\n function onUserInput ({ value }: HTMLInputElement) {\n if (!value.trim()) {\n model.value = emptyModelValue()\n } else if (!props.multiple) {\n if (isValid(value)) {\n model.value = parseDate(value)\n }\n } else {\n const parts = value.trim().split(/\\D+-\\D+|[^\\d\\-/.]+/)\n if (parts.every(isValid)) {\n if (props.multiple === 'range') {\n const [start, stop] = parts.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1)\n model.value = createDateRange(adapter, start, stop)\n } else {\n model.value = parts.map(parseDate)\n }\n }\n }\n }\n\n useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']))\n const datePickerSlots = pick(slots, ['title', 'header', 'day', 'month', 'year'])\n const textFieldProps = VTextField.filterProps(omit(props, ['placeholder']))\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n inputmode={ inputmode.value }\n placeholder={ props.placeholder ?? parserFormat.value }\n readonly={ isReadonly.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onBlur={ onBlur }\n validationValue={ model.value }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prepend={ isInteractive.value ? onClick : undefined }\n onUpdate:modelValue={ onUpdateDisplayModel }\n onUpdate:focused={ event => isFocused.value = event }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n minWidth=\"0\"\n eager={ isFocused.value }\n location={ props.location }\n closeOnContentClick={ false }\n openOnClick={ false }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n disabled={ disabledActions.value }\n onSave={ onSave }\n onCancel={ onCancel }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n function onUpdateModel (value: string) {\n if (!props.hideActions) {\n proxyModel.value = value\n } else {\n model.value = value\n\n if (!props.multiple) {\n menu.value = false\n }\n }\n\n emit('save', value)\n\n disabledActions.value = []\n }\n\n return (\n <VDatePicker\n { ...datePickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ value => onUpdateModel(value) }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n {{\n ...datePickerSlots,\n actions: !props.hideActions ? () => slots.actions?.({ save, cancel, isPristine }) ?? actions() : undefined,\n }}\n </VDatePicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VDateInput.js","names":["makeVConfirmEditProps","VConfirmEdit","makeVDatePickerProps","VDatePicker","VMenu","makeVTextFieldProps","VTextField","useDate","createDateRange","makeDateFormatProps","useDateFormat","makeDisplayProps","useDisplay","makeFocusProps","forwardRefs","useLocale","useProxiedModel","computed","ref","shallowRef","watch","genericComponent","omit","pick","propsFactory","useRender","wrapInArray","makeVDateInputProps","displayFormat","type","Function","String","default","undefined","location","menu","Boolean","updateOn","Array","mobile","hideActions","prependIcon","hideHeader","showAdjacentMonths","VDateInput","name","props","emits","save","value","cancel","val","setup","_ref","emit","slots","t","current","currentLocale","adapter","isValid","parseDate","formatDate","parserFormat","emptyModelValue","multiple","model","isArray","map","item","toJsDate","date","isEditingInput","isFocused","focused","vTextFieldRef","disabledActions","format","display","length","start","end","inputmode","isInteractive","disabled","readonly","isReadonly","onKeydown","e","key","includes","onUserInput","target","onClick","preventDefault","stopPropagation","onCancel","onSave","onUpdateDisplayModel","onBlur","_ref2","trim","parts","split","every","stop","toSorted","a","b","isAfter","confirmEditProps","filterProps","datePickerProps","datePickerSlots","textFieldProps","_createVNode","_mergeProps","class","style","placeholder","event","_createElementVNode","_Fragment","$event","_ref3","actions","proxyModel","isPristine","onUpdateModel"],"sources":["../../../src/labs/VDateInput/VDateInput.tsx"],"sourcesContent":["// Components\nimport { makeVConfirmEditProps, VConfirmEdit } from '@/components/VConfirmEdit/VConfirmEdit'\nimport { makeVDatePickerProps, VDatePicker } from '@/components/VDatePicker/VDatePicker'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { createDateRange } from '@/composables/date/date'\nimport { makeDateFormatProps, useDateFormat } from '@/composables/dateFormat'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeFocusProps } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, pick, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VDatePickerSlots } from '@/components/VDatePicker/VDatePicker'\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\nimport type { GenericProps } from '@/util'\n\n// Types\nexport type VDateInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VDateInputSlots = Omit<VTextFieldSlots, 'default'> &\n Pick<VDatePickerSlots, 'title' | 'header' | 'day' | 'month' | 'year'> & {\n actions: VDateInputActionsSlot\n default: never\n }\n\nexport const makeVDateInputProps = propsFactory({\n displayFormat: {\n type: [Function, String] as PropType<string | ((date: unknown) => any)>,\n default: undefined,\n },\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom start',\n },\n menu: Boolean,\n updateOn: {\n type: Array as PropType<('blur' | 'enter')[]>,\n default: () => ['blur', 'enter'],\n },\n\n ...makeDateFormatProps(),\n ...makeDisplayProps({\n mobile: null,\n }),\n ...makeFocusProps(),\n ...makeVConfirmEditProps({\n hideActions: true,\n }),\n ...makeVTextFieldProps({\n prependIcon: '$calendar',\n }),\n ...omit(makeVDatePickerProps({\n hideHeader: true,\n showAdjacentMonths: true,\n }), [\n 'active',\n 'location',\n 'rounded',\n 'height',\n 'minHeight',\n 'maxHeight',\n ]),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent<new <\n T,\n Multiple extends boolean | 'range' | number | (string & {}) = false,\n TModel = Multiple extends true | number | string\n ? T[]\n : T,\n> (\n props: {\n modelValue?: TModel\n onSave?: (value: TModel) => void\n 'onUpdate:modelValue'?: (value: TModel) => void\n multiple?: Multiple\n },\n slots: VDateInputSlots\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n save: (value: unknown) => true,\n cancel: () => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: unknown) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t, current: currentLocale } = useLocale()\n const adapter = useDate()\n const { isValid, parseDate, formatDate, parserFormat } = useDateFormat(props, currentLocale)\n const { mobile } = useDisplay(props)\n\n const emptyModelValue = () => props.multiple ? [] : null\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n emptyModelValue(),\n val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val,\n val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val\n )\n\n const menu = useProxiedModel(props, 'menu')\n const isEditingInput = shallowRef(false)\n const isFocused = shallowRef(props.focused)\n const vTextFieldRef = ref<VTextField>()\n const disabledActions = ref<typeof VConfirmEdit['props']['disabled']>(['save'])\n\n function format (date: unknown) {\n if (typeof props.displayFormat === 'function') {\n return props.displayFormat(date)\n }\n if (props.displayFormat) {\n return adapter.format(date, props.displayFormat ?? 'keyboardDate')\n }\n return formatDate(date)\n }\n\n const display = computed(() => {\n const value = wrapInArray(model.value)\n\n if (!value.length) return null\n\n if (props.multiple === true) {\n return t('$vuetify.datePicker.itemsSelected', value.length)\n }\n\n if (props.multiple === 'range') {\n const start = value[0]\n const end = value[value.length - 1]\n\n if (!adapter.isValid(start) || !adapter.isValid(end)) return ''\n\n return `${format(adapter.date(start))} - ${format(adapter.date(end))}`\n }\n\n return adapter.isValid(model.value) ? format(adapter.date(model.value)) : ''\n })\n\n const inputmode = computed(() => {\n if (!mobile.value) return undefined\n if (isEditingInput.value) return 'text'\n\n return 'none'\n })\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n const isReadonly = computed(() => {\n if (!props.updateOn.length) return true\n\n return !(mobile.value && isEditingInput.value) && props.readonly\n })\n\n watch(menu, val => {\n if (val) return\n\n isEditingInput.value = false\n disabledActions.value = ['save']\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter') return\n\n if (!menu.value || !isFocused.value) {\n menu.value = true\n }\n\n if (props.updateOn.includes('enter')) {\n onUserInput(e.target as HTMLInputElement)\n }\n }\n\n function onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n if (menu.value && mobile.value) {\n isEditingInput.value = true\n } else {\n menu.value = true\n }\n }\n\n function onCancel () {\n emit('cancel')\n menu.value = false\n isEditingInput.value = false\n }\n\n function onSave (value: string) {\n emit('save', value)\n menu.value = false\n }\n\n function onUpdateDisplayModel (value: unknown) {\n if (value != null) return\n\n model.value = emptyModelValue()\n }\n\n function onBlur (e: FocusEvent) {\n if (props.updateOn.includes('blur')) {\n onUserInput(e.target as HTMLInputElement)\n }\n\n // When in mobile mode and editing is done (due to keyboard dismissal), close the menu\n if (mobile.value && isEditingInput.value && !isFocused.value) {\n menu.value = false\n isEditingInput.value = false\n }\n }\n\n function onUserInput ({ value }: HTMLInputElement) {\n if (!value.trim()) {\n model.value = emptyModelValue()\n } else if (!props.multiple) {\n if (isValid(value)) {\n model.value = parseDate(value)\n }\n } else {\n const parts = value.trim().split(/\\D+-\\D+|[^\\d\\-/.]+/)\n if (parts.every(isValid)) {\n if (props.multiple === 'range') {\n const [start, stop] = parts.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1)\n model.value = createDateRange(adapter, start, stop)\n } else {\n model.value = parts.map(parseDate)\n }\n }\n }\n }\n\n useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const datePickerProps = VDatePicker.filterProps(omit(props, [\n 'active',\n 'bgColor',\n 'color',\n 'location',\n 'rounded',\n 'maxWidth',\n 'minWidth',\n 'width',\n ]))\n const datePickerSlots = pick(slots, ['title', 'header', 'day', 'month', 'year'])\n const textFieldProps = VTextField.filterProps(omit(props, ['placeholder']))\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n inputmode={ inputmode.value }\n placeholder={ props.placeholder ?? parserFormat.value }\n readonly={ isReadonly.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onBlur={ onBlur }\n validationValue={ model.value }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prepend={ isInteractive.value ? onClick : undefined }\n onUpdate:modelValue={ onUpdateDisplayModel }\n onUpdate:focused={ event => isFocused.value = event }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n minWidth=\"0\"\n eager={ isFocused.value }\n location={ props.location }\n closeOnContentClick={ false }\n openOnClick={ false }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n disabled={ disabledActions.value }\n onSave={ onSave }\n onCancel={ onCancel }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n function onUpdateModel (value: string) {\n if (!props.hideActions) {\n proxyModel.value = value\n } else {\n model.value = value\n\n if (!props.multiple) {\n menu.value = false\n }\n }\n\n emit('save', value)\n\n disabledActions.value = []\n }\n\n return (\n <VDatePicker\n { ...datePickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ value => onUpdateModel(value) }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n {{\n ...datePickerSlots,\n actions: !props.hideActions ? () => slots.actions?.({ save, cancel, isPristine }) ?? actions() : undefined,\n }}\n </VDatePicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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","ignoreList":[]}
@@ -31,7 +31,7 @@ export const VMaskInput = genericComponent()({
31
31
  // Always display masked value in input when mask is applied
32
32
  val => props.mask ? mask.mask(mask.unmask(val)) : val, val => {
33
33
  if (props.mask) {
34
- const valueWithoutDelimiters = removeMaskDelimiters(val);
34
+ const valueWithoutDelimiters = val ? removeMaskDelimiters(val) : '';
35
35
 
36
36
  // E.g. mask is #-# and the input value is '2-23'
37
37
  // model-value should be enforced to '2-2'
@@ -1 +1 @@
1
- {"version":3,"file":"VMaskInput.js","names":["makeVTextFieldProps","VTextField","forwardRefs","isMaskDelimiter","makeMaskProps","useMask","useProxiedModel","computed","nextTick","onBeforeMount","ref","shallowRef","toRef","genericComponent","propsFactory","useRender","makeVMaskInputProps","returnMaskedValue","Boolean","VMaskInput","name","props","emits","val","setup","_ref","slots","emit","vTextFieldRef","inputAction","caretPosition","mask","model","undefined","unmask","valueWithoutDelimiters","removeMaskDelimiters","newMaskedValue","newUnmaskedValue","newCaretPosition","getNewCaretPosition","oldValue","value","newValue","oldCaret","setSelectionRange","validationValue","split","filter","ch","join","_ref2","length","newCaret","onKeyDown","e","metaKey","inputElement","target","selectionStart","key","hasSelection","selectionEnd","preventDefault","deleteSelection","onCut","copySelectionToClipboard","onPaste","pastedString","clipboardData","getData","pastedCharacters","replaceSelection","insertCharacters","start","end","selectedText","substring","navigator","clipboard","writeText","curStart","success","simulateBackspace","slice","i","insertCharacter","character","replaceCharacter","index","targetIndex","textFieldProps","filterProps","_createVNode","_mergeProps","$event"],"sources":["../../../src/labs/VMaskInput/VMaskInput.tsx"],"sourcesContent":["// Components\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { isMaskDelimiter, makeMaskProps, useMask } from '@/composables/mask'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onBeforeMount, ref, shallowRef, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\nexport type VMaskInputSlots = VTextFieldSlots\n\nexport const makeVMaskInputProps = propsFactory({\n returnMaskedValue: Boolean,\n ...makeVTextFieldProps(),\n ...makeMaskProps(),\n}, 'VMaskInput')\n\nexport const VMaskInput = genericComponent<VMaskInputSlots>()({\n name: 'VMaskInput',\n\n props: makeVMaskInputProps(),\n\n emits: {\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { slots, emit }) {\n const vTextFieldRef = ref<VTextField>()\n\n const inputAction = shallowRef()\n const caretPosition = shallowRef(0)\n\n const mask = useMask(props)\n const returnMaskedValue = computed(() => props.mask && props.returnMaskedValue)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n // Always display masked value in input when mask is applied\n val => props.mask ? mask.mask(mask.unmask(val)) : val,\n val => {\n if (props.mask) {\n const valueWithoutDelimiters = removeMaskDelimiters(val)\n\n // E.g. mask is #-# and the input value is '2-23'\n // model-value should be enforced to '2-2'\n const newMaskedValue = mask.mask(valueWithoutDelimiters)\n const newUnmaskedValue = mask.unmask(newMaskedValue)\n\n const newCaretPosition = getNewCaretPosition({\n oldValue: model.value,\n newValue: newMaskedValue,\n oldCaret: caretPosition.value,\n })\n\n vTextFieldRef.value!.value = newMaskedValue\n vTextFieldRef.value!.setSelectionRange(newCaretPosition, newCaretPosition)\n\n return returnMaskedValue.value ? mask.mask(newUnmaskedValue) : newUnmaskedValue\n }\n return val\n },\n )\n\n const validationValue = toRef(() => returnMaskedValue.value ? model.value : mask.unmask(model.value))\n\n function removeMaskDelimiters (val: string): string {\n return val.split('').filter(ch => !isMaskDelimiter(ch)).join('')\n }\n\n function getNewCaretPosition ({\n oldValue,\n newValue,\n oldCaret,\n }: {\n oldValue: string\n newValue: string\n oldCaret: number\n }): number {\n if (!newValue) return 0\n if (!oldValue) return newValue.length\n\n let newCaret: number\n\n if (inputAction.value === 'Backspace') {\n newCaret = oldCaret - 1\n while (newCaret > 0 && isMaskDelimiter(newValue[newCaret - 1])) newCaret--\n } else if (inputAction.value === 'Delete') {\n newCaret = oldCaret\n } else { // insertion\n newCaret = oldCaret + 1\n while (isMaskDelimiter(newValue[newCaret])) newCaret++\n if (isMaskDelimiter(newValue[oldCaret])) newCaret++\n }\n\n return newCaret\n }\n\n onBeforeMount(() => {\n if (props.returnMaskedValue) {\n emit('update:modelValue', model.value)\n }\n })\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.metaKey) return\n\n const inputElement = e.target as HTMLInputElement\n\n caretPosition.value = inputElement.selectionStart || 0\n inputAction.value = e.key\n\n const hasSelection = inputElement.selectionStart !== inputElement.selectionEnd\n if (e.key === 'Backspace' && hasSelection) {\n e.preventDefault()\n deleteSelection(e)\n }\n }\n\n async function onCut (e: Event) {\n e.preventDefault()\n\n copySelectionToClipboard(e)\n deleteSelection(e)\n }\n\n async function onPaste (e: ClipboardEvent) {\n e.preventDefault()\n\n const inputElement = e.target as HTMLInputElement\n const pastedString = removeMaskDelimiters(e.clipboardData?.getData('text') || '')\n\n if (!pastedString) return\n\n const pastedCharacters = [...pastedString]\n\n const hasSelection = inputElement.selectionStart !== inputElement.selectionEnd\n\n if (hasSelection) {\n replaceSelection(inputElement, pastedCharacters)\n } else {\n insertCharacters(inputElement, pastedCharacters)\n }\n }\n\n function copySelectionToClipboard (e: Event) {\n const inputElement = e.target as HTMLInputElement\n const start = inputElement.selectionStart || 0\n const end = inputElement.selectionEnd || 0\n const selectedText = inputElement.value.substring(start, end)\n navigator.clipboard.writeText(selectedText)\n }\n\n async function deleteSelection (e: Event) {\n const inputElement = e.target as HTMLInputElement\n const curStart = inputElement.selectionStart || 0\n caretPosition.value = inputElement.selectionEnd || 0\n\n while (caretPosition.value > curStart) {\n const success = await simulateBackspace(inputElement)\n if (!success) break\n }\n }\n\n async function simulateBackspace (inputElement: HTMLInputElement) {\n inputAction.value = 'Backspace'\n model.value = inputElement.value.slice(0, caretPosition.value - 1) + inputElement.value.slice(caretPosition.value)\n inputAction.value = ''\n if (caretPosition.value === inputElement.selectionEnd) return false\n caretPosition.value = inputElement.selectionEnd || 0\n await nextTick()\n return true\n }\n\n async function insertCharacters (inputElement: HTMLInputElement, pastedCharacters: string[]) {\n for (let i = 0; i < pastedCharacters.length; i++) {\n await insertCharacter(inputElement, pastedCharacters[i])\n }\n }\n\n async function insertCharacter (inputElement: HTMLInputElement, character: string) {\n caretPosition.value = inputElement.selectionEnd || 0\n model.value = inputElement.value.slice(0, caretPosition.value) + character + inputElement.value.slice(caretPosition.value)\n await nextTick()\n }\n\n async function replaceSelection (inputElement: HTMLInputElement, pastedCharacters: string[]) {\n caretPosition.value = inputElement.selectionStart || 0\n for (let i = 0; i < pastedCharacters.length; i++) {\n await replaceCharacter(caretPosition.value, pastedCharacters[i])\n caretPosition.value++\n }\n }\n\n async function replaceCharacter (index: number, character: string) {\n let targetIndex = index\n\n // Find next non-delimiter position\n while (targetIndex < model.value.length && isMaskDelimiter(model.value[targetIndex])) targetIndex++\n\n model.value = model.value.slice(0, targetIndex) + character + model.value.slice(targetIndex + 1)\n await nextTick()\n }\n\n useRender(() => {\n const textFieldProps = VTextField.filterProps(props)\n\n return (\n <VTextField\n { ...textFieldProps }\n v-model={ model.value }\n ref={ vTextFieldRef }\n validationValue={ validationValue.value }\n onCut={ onCut }\n onPaste={ onPaste }\n onKeydown={ onKeyDown }\n >\n {{ ...slots }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VMaskInput = InstanceType<typeof VMaskInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VMaskInput.js","names":["makeVTextFieldProps","VTextField","forwardRefs","isMaskDelimiter","makeMaskProps","useMask","useProxiedModel","computed","nextTick","onBeforeMount","ref","shallowRef","toRef","genericComponent","propsFactory","useRender","makeVMaskInputProps","returnMaskedValue","Boolean","VMaskInput","name","props","emits","val","setup","_ref","slots","emit","vTextFieldRef","inputAction","caretPosition","mask","model","undefined","unmask","valueWithoutDelimiters","removeMaskDelimiters","newMaskedValue","newUnmaskedValue","newCaretPosition","getNewCaretPosition","oldValue","value","newValue","oldCaret","setSelectionRange","validationValue","split","filter","ch","join","_ref2","length","newCaret","onKeyDown","e","metaKey","inputElement","target","selectionStart","key","hasSelection","selectionEnd","preventDefault","deleteSelection","onCut","copySelectionToClipboard","onPaste","pastedString","clipboardData","getData","pastedCharacters","replaceSelection","insertCharacters","start","end","selectedText","substring","navigator","clipboard","writeText","curStart","success","simulateBackspace","slice","i","insertCharacter","character","replaceCharacter","index","targetIndex","textFieldProps","filterProps","_createVNode","_mergeProps","$event"],"sources":["../../../src/labs/VMaskInput/VMaskInput.tsx"],"sourcesContent":["// Components\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { isMaskDelimiter, makeMaskProps, useMask } from '@/composables/mask'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onBeforeMount, ref, shallowRef, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\nexport type VMaskInputSlots = VTextFieldSlots\n\nexport const makeVMaskInputProps = propsFactory({\n returnMaskedValue: Boolean,\n ...makeVTextFieldProps(),\n ...makeMaskProps(),\n}, 'VMaskInput')\n\nexport const VMaskInput = genericComponent<VMaskInputSlots>()({\n name: 'VMaskInput',\n\n props: makeVMaskInputProps(),\n\n emits: {\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { slots, emit }) {\n const vTextFieldRef = ref<VTextField>()\n\n const inputAction = shallowRef()\n const caretPosition = shallowRef(0)\n\n const mask = useMask(props)\n const returnMaskedValue = computed(() => props.mask && props.returnMaskedValue)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n // Always display masked value in input when mask is applied\n val => props.mask ? mask.mask(mask.unmask(val)) : val,\n val => {\n if (props.mask) {\n const valueWithoutDelimiters = val ? removeMaskDelimiters(val) : ''\n\n // E.g. mask is #-# and the input value is '2-23'\n // model-value should be enforced to '2-2'\n const newMaskedValue = mask.mask(valueWithoutDelimiters)\n const newUnmaskedValue = mask.unmask(newMaskedValue)\n\n const newCaretPosition = getNewCaretPosition({\n oldValue: model.value,\n newValue: newMaskedValue,\n oldCaret: caretPosition.value,\n })\n\n vTextFieldRef.value!.value = newMaskedValue\n vTextFieldRef.value!.setSelectionRange(newCaretPosition, newCaretPosition)\n\n return returnMaskedValue.value ? mask.mask(newUnmaskedValue) : newUnmaskedValue\n }\n return val\n },\n )\n\n const validationValue = toRef(() => returnMaskedValue.value ? model.value : mask.unmask(model.value))\n\n function removeMaskDelimiters (val: string): string {\n return val.split('').filter(ch => !isMaskDelimiter(ch)).join('')\n }\n\n function getNewCaretPosition ({\n oldValue,\n newValue,\n oldCaret,\n }: {\n oldValue: string\n newValue: string\n oldCaret: number\n }): number {\n if (!newValue) return 0\n if (!oldValue) return newValue.length\n\n let newCaret: number\n\n if (inputAction.value === 'Backspace') {\n newCaret = oldCaret - 1\n while (newCaret > 0 && isMaskDelimiter(newValue[newCaret - 1])) newCaret--\n } else if (inputAction.value === 'Delete') {\n newCaret = oldCaret\n } else { // insertion\n newCaret = oldCaret + 1\n while (isMaskDelimiter(newValue[newCaret])) newCaret++\n if (isMaskDelimiter(newValue[oldCaret])) newCaret++\n }\n\n return newCaret\n }\n\n onBeforeMount(() => {\n if (props.returnMaskedValue) {\n emit('update:modelValue', model.value)\n }\n })\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.metaKey) return\n\n const inputElement = e.target as HTMLInputElement\n\n caretPosition.value = inputElement.selectionStart || 0\n inputAction.value = e.key\n\n const hasSelection = inputElement.selectionStart !== inputElement.selectionEnd\n if (e.key === 'Backspace' && hasSelection) {\n e.preventDefault()\n deleteSelection(e)\n }\n }\n\n async function onCut (e: Event) {\n e.preventDefault()\n\n copySelectionToClipboard(e)\n deleteSelection(e)\n }\n\n async function onPaste (e: ClipboardEvent) {\n e.preventDefault()\n\n const inputElement = e.target as HTMLInputElement\n const pastedString = removeMaskDelimiters(e.clipboardData?.getData('text') || '')\n\n if (!pastedString) return\n\n const pastedCharacters = [...pastedString]\n\n const hasSelection = inputElement.selectionStart !== inputElement.selectionEnd\n\n if (hasSelection) {\n replaceSelection(inputElement, pastedCharacters)\n } else {\n insertCharacters(inputElement, pastedCharacters)\n }\n }\n\n function copySelectionToClipboard (e: Event) {\n const inputElement = e.target as HTMLInputElement\n const start = inputElement.selectionStart || 0\n const end = inputElement.selectionEnd || 0\n const selectedText = inputElement.value.substring(start, end)\n navigator.clipboard.writeText(selectedText)\n }\n\n async function deleteSelection (e: Event) {\n const inputElement = e.target as HTMLInputElement\n const curStart = inputElement.selectionStart || 0\n caretPosition.value = inputElement.selectionEnd || 0\n\n while (caretPosition.value > curStart) {\n const success = await simulateBackspace(inputElement)\n if (!success) break\n }\n }\n\n async function simulateBackspace (inputElement: HTMLInputElement) {\n inputAction.value = 'Backspace'\n model.value = inputElement.value.slice(0, caretPosition.value - 1) + inputElement.value.slice(caretPosition.value)\n inputAction.value = ''\n if (caretPosition.value === inputElement.selectionEnd) return false\n caretPosition.value = inputElement.selectionEnd || 0\n await nextTick()\n return true\n }\n\n async function insertCharacters (inputElement: HTMLInputElement, pastedCharacters: string[]) {\n for (let i = 0; i < pastedCharacters.length; i++) {\n await insertCharacter(inputElement, pastedCharacters[i])\n }\n }\n\n async function insertCharacter (inputElement: HTMLInputElement, character: string) {\n caretPosition.value = inputElement.selectionEnd || 0\n model.value = inputElement.value.slice(0, caretPosition.value) + character + inputElement.value.slice(caretPosition.value)\n await nextTick()\n }\n\n async function replaceSelection (inputElement: HTMLInputElement, pastedCharacters: string[]) {\n caretPosition.value = inputElement.selectionStart || 0\n for (let i = 0; i < pastedCharacters.length; i++) {\n await replaceCharacter(caretPosition.value, pastedCharacters[i])\n caretPosition.value++\n }\n }\n\n async function replaceCharacter (index: number, character: string) {\n let targetIndex = index\n\n // Find next non-delimiter position\n while (targetIndex < model.value.length && isMaskDelimiter(model.value[targetIndex])) targetIndex++\n\n model.value = model.value.slice(0, targetIndex) + character + model.value.slice(targetIndex + 1)\n await nextTick()\n }\n\n useRender(() => {\n const textFieldProps = VTextField.filterProps(props)\n\n return (\n <VTextField\n { ...textFieldProps }\n v-model={ model.value }\n ref={ vTextFieldRef }\n validationValue={ validationValue.value }\n onCut={ onCut }\n onPaste={ onPaste }\n onKeydown={ onKeyDown }\n >\n {{ ...slots }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VMaskInput = InstanceType<typeof VMaskInput>\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vuetify/nightly",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "3.10.5-dev.2025-10-07",
4
+ "version": "3.10.5-dev.2025-10-10",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"