@vuetify/nightly 3.7.6-master.2024-12-26 → 3.7.6-master.2025-01-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 (61) hide show
  1. package/dist/json/attributes.json +1540 -1540
  2. package/dist/json/importMap-labs.json +18 -18
  3. package/dist/json/importMap.json +168 -168
  4. package/dist/json/web-types.json +2725 -2705
  5. package/dist/vuetify-labs.css +3281 -3277
  6. package/dist/vuetify-labs.d.ts +129 -104
  7. package/dist/vuetify-labs.esm.js +61 -27
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +61 -27
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +3686 -3682
  12. package/dist/vuetify.d.ts +65 -68
  13. package/dist/vuetify.esm.js +41 -22
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +41 -22
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +930 -924
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAutocomplete/VAutocomplete.mjs +7 -4
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  22. package/lib/components/VColorPicker/VColorPickerPreview.mjs +2 -2
  23. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  24. package/lib/components/VCombobox/VCombobox.mjs +7 -4
  25. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  26. package/lib/components/VDialog/VDialog.css +5 -2
  27. package/lib/components/VDialog/VDialog.sass +6 -2
  28. package/lib/components/VField/VField.mjs +1 -1
  29. package/lib/components/VField/VField.mjs.map +1 -1
  30. package/lib/components/VInput/VInput.css +1 -1
  31. package/lib/components/VInput/VInput.sass +1 -1
  32. package/lib/components/VProgressLinear/VProgressLinear.mjs +1 -1
  33. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  34. package/lib/components/VSlideGroup/VSlideGroup.mjs +12 -2
  35. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  36. package/lib/components/VSparkline/VBarline.mjs +3 -2
  37. package/lib/components/VSparkline/VBarline.mjs.map +1 -1
  38. package/lib/components/VSparkline/VTrendline.mjs +2 -1
  39. package/lib/components/VSparkline/VTrendline.mjs.map +1 -1
  40. package/lib/components/VSparkline/index.d.mts +7 -10
  41. package/lib/components/VSparkline/util/line.mjs +1 -1
  42. package/lib/components/VSparkline/util/line.mjs.map +1 -1
  43. package/lib/components/VStepper/VStepperItem.mjs +1 -0
  44. package/lib/components/VStepper/VStepperItem.mjs.map +1 -1
  45. package/lib/components/VTextarea/VTextarea.css +1 -0
  46. package/lib/components/VTextarea/VTextarea.sass +1 -0
  47. package/lib/components/index.d.mts +7 -10
  48. package/lib/composables/filter.mjs +3 -3
  49. package/lib/composables/filter.mjs.map +1 -1
  50. package/lib/entry-bundler.mjs +1 -1
  51. package/lib/framework.mjs +1 -1
  52. package/lib/index.d.mts +58 -58
  53. package/lib/labs/VDateInput/VDateInput.mjs +19 -5
  54. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
  55. package/lib/labs/VDateInput/index.d.mts +176 -97
  56. package/lib/labs/components.d.mts +227 -199
  57. package/lib/locale/az.mjs +28 -28
  58. package/lib/locale/az.mjs.map +1 -1
  59. package/lib/locale/nl.mjs +5 -5
  60. package/lib/locale/nl.mjs.map +1 -1
  61. package/package.json +1 -1
@@ -50841,7 +50841,7 @@ declare const VSnackbar: {
50841
50841
  }>>;
50842
50842
  type VSnackbar = InstanceType<typeof VSnackbar>;
50843
50843
 
50844
- type SparklineItem = number | {
50844
+ type SparklineItem = string | number | {
50845
50845
  value: number;
50846
50846
  };
50847
50847
 
@@ -50851,7 +50851,6 @@ declare const VSparkline: {
50851
50851
  type: "bar" | "trend";
50852
50852
  height: string | number;
50853
50853
  width: string | number;
50854
- smooth: boolean;
50855
50854
  padding: string | number;
50856
50855
  labels: SparklineItem[];
50857
50856
  modelValue: SparklineItem[];
@@ -50867,6 +50866,7 @@ declare const VSparkline: {
50867
50866
  } & {
50868
50867
  max?: string | number | undefined;
50869
50868
  id?: string | undefined;
50869
+ smooth?: string | number | boolean | undefined;
50870
50870
  min?: string | number | undefined;
50871
50871
  color?: string | undefined;
50872
50872
  autoDrawDuration?: string | number | undefined;
@@ -50896,7 +50896,6 @@ declare const VSparkline: {
50896
50896
  type: "bar" | "trend";
50897
50897
  height: string | number;
50898
50898
  width: string | number;
50899
- smooth: boolean;
50900
50899
  padding: string | number;
50901
50900
  labels: SparklineItem[];
50902
50901
  modelValue: SparklineItem[];
@@ -50912,6 +50911,7 @@ declare const VSparkline: {
50912
50911
  } & {
50913
50912
  max?: string | number | undefined;
50914
50913
  id?: string | undefined;
50914
+ smooth?: string | number | boolean | undefined;
50915
50915
  min?: string | number | undefined;
50916
50916
  color?: string | undefined;
50917
50917
  autoDrawDuration?: string | number | undefined;
@@ -50941,7 +50941,6 @@ declare const VSparkline: {
50941
50941
  type: "bar" | "trend";
50942
50942
  height: string | number;
50943
50943
  width: string | number;
50944
- smooth: boolean;
50945
50944
  padding: string | number;
50946
50945
  labels: SparklineItem[];
50947
50946
  modelValue: SparklineItem[];
@@ -50972,7 +50971,6 @@ declare const VSparkline: {
50972
50971
  type: "bar" | "trend";
50973
50972
  height: string | number;
50974
50973
  width: string | number;
50975
- smooth: boolean;
50976
50974
  padding: string | number;
50977
50975
  labels: SparklineItem[];
50978
50976
  modelValue: SparklineItem[];
@@ -50988,6 +50986,7 @@ declare const VSparkline: {
50988
50986
  } & {
50989
50987
  max?: string | number | undefined;
50990
50988
  id?: string | undefined;
50989
+ smooth?: string | number | boolean | undefined;
50991
50990
  min?: string | number | undefined;
50992
50991
  color?: string | undefined;
50993
50992
  autoDrawDuration?: string | number | undefined;
@@ -51017,7 +51016,6 @@ declare const VSparkline: {
51017
51016
  type: "bar" | "trend";
51018
51017
  height: string | number;
51019
51018
  width: string | number;
51020
- smooth: boolean;
51021
51019
  padding: string | number;
51022
51020
  labels: SparklineItem[];
51023
51021
  modelValue: SparklineItem[];
@@ -51039,7 +51037,6 @@ declare const VSparkline: {
51039
51037
  type: "bar" | "trend";
51040
51038
  height: string | number;
51041
51039
  width: string | number;
51042
- smooth: boolean;
51043
51040
  padding: string | number;
51044
51041
  labels: SparklineItem[];
51045
51042
  modelValue: SparklineItem[];
@@ -51055,6 +51052,7 @@ declare const VSparkline: {
51055
51052
  } & {
51056
51053
  max?: string | number | undefined;
51057
51054
  id?: string | undefined;
51055
+ smooth?: string | number | boolean | undefined;
51058
51056
  min?: string | number | undefined;
51059
51057
  color?: string | undefined;
51060
51058
  autoDrawDuration?: string | number | undefined;
@@ -51084,7 +51082,6 @@ declare const VSparkline: {
51084
51082
  type: "bar" | "trend";
51085
51083
  height: string | number;
51086
51084
  width: string | number;
51087
- smooth: boolean;
51088
51085
  padding: string | number;
51089
51086
  labels: SparklineItem[];
51090
51087
  modelValue: SparklineItem[];
@@ -51152,7 +51149,7 @@ declare const VSparkline: {
51152
51149
  default: number;
51153
51150
  };
51154
51151
  showLabels: BooleanConstructor;
51155
- smooth: BooleanConstructor;
51152
+ smooth: (StringConstructor | BooleanConstructor | NumberConstructor)[];
51156
51153
  width: {
51157
51154
  type: (StringConstructor | NumberConstructor)[];
51158
51155
  default: number;
@@ -51212,7 +51209,7 @@ declare const VSparkline: {
51212
51209
  default: number;
51213
51210
  };
51214
51211
  showLabels: BooleanConstructor;
51215
- smooth: BooleanConstructor;
51212
+ smooth: (StringConstructor | BooleanConstructor | NumberConstructor)[];
51216
51213
  width: {
51217
51214
  type: (StringConstructor | NumberConstructor)[];
51218
51215
  default: number;
@@ -2,7 +2,7 @@
2
2
  /* eslint-disable no-labels */
3
3
 
4
4
  // Utilities
5
- import { computed, ref, unref, watchEffect } from 'vue';
5
+ import { computed, shallowRef, unref, watchEffect } from 'vue';
6
6
  import { getPropertyFromItem, propsFactory, wrapInArray } from "../util/index.mjs"; // Types
7
7
  /**
8
8
  * - match without highlight
@@ -73,8 +73,8 @@ export function filterItems(items, query, options) {
73
73
  return array;
74
74
  }
75
75
  export function useFilter(props, items, query, options) {
76
- const filteredItems = ref([]);
77
- const filteredMatches = ref(new Map());
76
+ const filteredItems = shallowRef([]);
77
+ const filteredMatches = shallowRef(new Map());
78
78
  const transformedItems = computed(() => options?.transform ? unref(items).map(item => [item, options.transform(item)]) : unref(items));
79
79
  watchEffect(() => {
80
80
  const _query = typeof query === 'function' ? query() : unref(query);
@@ -1 +1 @@
1
- {"version":3,"file":"filter.mjs","names":["computed","ref","unref","watchEffect","getPropertyFromItem","propsFactory","wrapInArray","defaultFilter","value","query","item","toString","toLocaleLowerCase","indexOf","makeFilterProps","customFilter","Function","customKeyFilter","Object","filterKeys","Array","String","filterMode","type","default","noFilter","Boolean","filterItems","items","options","array","filter","keys","customFiltersLength","length","loop","i","transformed","customMatches","defaultMatches","match","key","keyFilter","title","defaultMatchesLength","customMatchesLength","push","index","matches","useFilter","props","filteredItems","filteredMatches","Map","transformedItems","transform","map","_query","strQuery","results","originalItems","_filteredItems","_filteredMatches","forEach","_ref","set","getMatches","get"],"sources":["../../src/composables/filter.ts"],"sourcesContent":["/* eslint-disable max-statements */\n/* eslint-disable no-labels */\n\n// Utilities\nimport { computed, ref, unref, watchEffect } from 'vue'\nimport { getPropertyFromItem, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { MaybeRef } from '@/util'\n\n/**\n * - match without highlight\n * - single match (index), length already known\n * - single match (start, end)\n * - multiple matches (start, end), probably shouldn't overlap\n */\nexport type FilterMatch = boolean | number | [number, number] | [number, number][]\nexport type FilterFunction = (value: string, query: string, item?: InternalItem) => FilterMatch\nexport type FilterKeyFunctions = Record<string, FilterFunction>\nexport type FilterKeys = string | string[]\nexport type FilterMode = 'some' | 'every' | 'union' | 'intersection'\n\nexport interface FilterProps {\n customFilter?: FilterFunction\n customKeyFilter?: FilterKeyFunctions\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n}\n\nexport interface InternalItem<T = any> {\n value: any\n raw: T\n}\n\n// Composables\nexport const defaultFilter: FilterFunction = (value, query, item) => {\n if (value == null || query == null) return -1\n\n return value.toString().toLocaleLowerCase().indexOf(query.toString().toLocaleLowerCase())\n}\n\nexport const makeFilterProps = propsFactory({\n customFilter: Function as PropType<FilterFunction>,\n customKeyFilter: Object as PropType<FilterKeyFunctions>,\n filterKeys: [Array, String] as PropType<FilterKeys>,\n filterMode: {\n type: String as PropType<FilterMode>,\n default: 'intersection',\n },\n noFilter: Boolean,\n}, 'filter')\n\nexport function filterItems (\n items: readonly (readonly [item: InternalItem, transformed: {}])[] | readonly InternalItem[],\n query: string,\n options?: {\n customKeyFilter?: FilterKeyFunctions\n default?: FilterFunction\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n },\n) {\n const array: { index: number, matches: Record<string, FilterMatch> }[] = []\n // always ensure we fall back to a functioning filter\n const filter = options?.default ?? defaultFilter\n const keys = options?.filterKeys ? wrapInArray(options.filterKeys) : false\n const customFiltersLength = Object.keys(options?.customKeyFilter ?? {}).length\n\n if (!items?.length) return array\n\n loop:\n for (let i = 0; i < items.length; i++) {\n const [item, transformed = item] = wrapInArray(items[i]) as readonly [InternalItem, {}]\n const customMatches: Record<string, FilterMatch> = {}\n const defaultMatches: Record<string, FilterMatch> = {}\n let match: FilterMatch = -1\n\n if ((query || customFiltersLength > 0) && !options?.noFilter) {\n if (typeof item === 'object') {\n const filterKeys = keys || Object.keys(transformed)\n\n for (const key of filterKeys) {\n const value = getPropertyFromItem(transformed, key)\n const keyFilter = options?.customKeyFilter?.[key]\n\n match = keyFilter\n ? keyFilter(value, query, item)\n : filter(value, query, item)\n\n if (match !== -1 && match !== false) {\n if (keyFilter) customMatches[key] = match\n else defaultMatches[key] = match\n } else if (options?.filterMode === 'every') {\n continue loop\n }\n }\n } else {\n match = filter(item, query, item)\n if (match !== -1 && match !== false) {\n defaultMatches.title = match\n }\n }\n\n const defaultMatchesLength = Object.keys(defaultMatches).length\n const customMatchesLength = Object.keys(customMatches).length\n\n if (!defaultMatchesLength && !customMatchesLength) continue\n\n if (\n options?.filterMode === 'union' &&\n customMatchesLength !== customFiltersLength &&\n !defaultMatchesLength\n ) continue\n\n if (\n options?.filterMode === 'intersection' &&\n (\n customMatchesLength !== customFiltersLength ||\n !defaultMatchesLength\n )\n ) continue\n }\n\n array.push({ index: i, matches: { ...defaultMatches, ...customMatches } })\n }\n\n return array\n}\n\nexport function useFilter <T extends InternalItem> (\n props: FilterProps,\n items: MaybeRef<T[]>,\n query: Ref<string | undefined> | (() => string | undefined),\n options?: {\n transform?: (item: T) => {}\n customKeyFilter?: MaybeRef<FilterKeyFunctions | undefined>\n }\n) {\n const filteredItems: Ref<T[]> = ref([])\n const filteredMatches: Ref<Map<unknown, Record<string, FilterMatch>>> = ref(new Map())\n const transformedItems = computed(() => (\n options?.transform\n ? unref(items).map(item => ([item, options.transform!(item)] as const))\n : unref(items)\n ))\n\n watchEffect(() => {\n const _query = typeof query === 'function' ? query() : unref(query)\n const strQuery = (\n typeof _query !== 'string' &&\n typeof _query !== 'number'\n ) ? '' : String(_query)\n\n const results = filterItems(\n transformedItems.value,\n strQuery,\n {\n customKeyFilter: {\n ...props.customKeyFilter,\n ...unref(options?.customKeyFilter),\n },\n default: props.customFilter,\n filterKeys: props.filterKeys,\n filterMode: props.filterMode,\n noFilter: props.noFilter,\n },\n )\n\n const originalItems = unref(items)\n\n const _filteredItems: typeof filteredItems['value'] = []\n const _filteredMatches: typeof filteredMatches['value'] = new Map()\n results.forEach(({ index, matches }) => {\n const item = originalItems[index]\n _filteredItems.push(item)\n _filteredMatches.set(item.value, matches)\n })\n filteredItems.value = _filteredItems\n filteredMatches.value = _filteredMatches\n })\n\n function getMatches (item: T) {\n return filteredMatches.value.get(item.value)\n }\n\n return { filteredItems, filteredMatches, getMatches }\n}\n"],"mappings":"AAAA;AACA;;AAEA;AACA,SAASA,QAAQ,EAAEC,GAAG,EAAEC,KAAK,EAAEC,WAAW,QAAQ,KAAK;AAAA,SAC9CC,mBAAmB,EAAEC,YAAY,EAAEC,WAAW,6BAEvD;AAIA;AACA;AACA;AACA;AACA;AACA;AAoBA;AACA,OAAO,MAAMC,aAA6B,GAAGA,CAACC,KAAK,EAAEC,KAAK,EAAEC,IAAI,KAAK;EACnE,IAAIF,KAAK,IAAI,IAAI,IAAIC,KAAK,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;EAE7C,OAAOD,KAAK,CAACG,QAAQ,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC,CAACC,OAAO,CAACJ,KAAK,CAACE,QAAQ,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED,OAAO,MAAME,eAAe,GAAGT,YAAY,CAAC;EAC1CU,YAAY,EAAEC,QAAoC;EAClDC,eAAe,EAAEC,MAAsC;EACvDC,UAAU,EAAE,CAACC,KAAK,EAAEC,MAAM,CAAyB;EACnDC,UAAU,EAAE;IACVC,IAAI,EAAEF,MAA8B;IACpCG,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAEC;AACZ,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,SAASC,WAAWA,CACzBC,KAA4F,EAC5FnB,KAAa,EACboB,OAMC,EACD;EACA,MAAMC,KAAgE,GAAG,EAAE;EAC3E;EACA,MAAMC,MAAM,GAAGF,OAAO,EAAEL,OAAO,IAAIjB,aAAa;EAChD,MAAMyB,IAAI,GAAGH,OAAO,EAAEV,UAAU,GAAGb,WAAW,CAACuB,OAAO,CAACV,UAAU,CAAC,GAAG,KAAK;EAC1E,MAAMc,mBAAmB,GAAGf,MAAM,CAACc,IAAI,CAACH,OAAO,EAAEZ,eAAe,IAAI,CAAC,CAAC,CAAC,CAACiB,MAAM;EAE9E,IAAI,CAACN,KAAK,EAAEM,MAAM,EAAE,OAAOJ,KAAK;EAEhCK,IAAI,EACJ,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGR,KAAK,CAACM,MAAM,EAAEE,CAAC,EAAE,EAAE;IACrC,MAAM,CAAC1B,IAAI,EAAE2B,WAAW,GAAG3B,IAAI,CAAC,GAAGJ,WAAW,CAACsB,KAAK,CAACQ,CAAC,CAAC,CAAgC;IACvF,MAAME,aAA0C,GAAG,CAAC,CAAC;IACrD,MAAMC,cAA2C,GAAG,CAAC,CAAC;IACtD,IAAIC,KAAkB,GAAG,CAAC,CAAC;IAE3B,IAAI,CAAC/B,KAAK,IAAIwB,mBAAmB,GAAG,CAAC,KAAK,CAACJ,OAAO,EAAEJ,QAAQ,EAAE;MAC5D,IAAI,OAAOf,IAAI,KAAK,QAAQ,EAAE;QAC5B,MAAMS,UAAU,GAAGa,IAAI,IAAId,MAAM,CAACc,IAAI,CAACK,WAAW,CAAC;QAEnD,KAAK,MAAMI,GAAG,IAAItB,UAAU,EAAE;UAC5B,MAAMX,KAAK,GAAGJ,mBAAmB,CAACiC,WAAW,EAAEI,GAAG,CAAC;UACnD,MAAMC,SAAS,GAAGb,OAAO,EAAEZ,eAAe,GAAGwB,GAAG,CAAC;UAEjDD,KAAK,GAAGE,SAAS,GACbA,SAAS,CAAClC,KAAK,EAAEC,KAAK,EAAEC,IAAI,CAAC,GAC7BqB,MAAM,CAACvB,KAAK,EAAEC,KAAK,EAAEC,IAAI,CAAC;UAE9B,IAAI8B,KAAK,KAAK,CAAC,CAAC,IAAIA,KAAK,KAAK,KAAK,EAAE;YACnC,IAAIE,SAAS,EAAEJ,aAAa,CAACG,GAAG,CAAC,GAAGD,KAAK,MACpCD,cAAc,CAACE,GAAG,CAAC,GAAGD,KAAK;UAClC,CAAC,MAAM,IAAIX,OAAO,EAAEP,UAAU,KAAK,OAAO,EAAE;YAC1C,SAASa,IAAI;UACf;QACF;MACF,CAAC,MAAM;QACLK,KAAK,GAAGT,MAAM,CAACrB,IAAI,EAAED,KAAK,EAAEC,IAAI,CAAC;QACjC,IAAI8B,KAAK,KAAK,CAAC,CAAC,IAAIA,KAAK,KAAK,KAAK,EAAE;UACnCD,cAAc,CAACI,KAAK,GAAGH,KAAK;QAC9B;MACF;MAEA,MAAMI,oBAAoB,GAAG1B,MAAM,CAACc,IAAI,CAACO,cAAc,CAAC,CAACL,MAAM;MAC/D,MAAMW,mBAAmB,GAAG3B,MAAM,CAACc,IAAI,CAACM,aAAa,CAAC,CAACJ,MAAM;MAE7D,IAAI,CAACU,oBAAoB,IAAI,CAACC,mBAAmB,EAAE;MAEnD,IACEhB,OAAO,EAAEP,UAAU,KAAK,OAAO,IAC/BuB,mBAAmB,KAAKZ,mBAAmB,IAC3C,CAACW,oBAAoB,EACrB;MAEF,IACEf,OAAO,EAAEP,UAAU,KAAK,cAAc,KAEpCuB,mBAAmB,KAAKZ,mBAAmB,IAC3C,CAACW,oBAAoB,CACtB,EACD;IACJ;IAEAd,KAAK,CAACgB,IAAI,CAAC;MAAEC,KAAK,EAAEX,CAAC;MAAEY,OAAO,EAAE;QAAE,GAAGT,cAAc;QAAE,GAAGD;MAAc;IAAE,CAAC,CAAC;EAC5E;EAEA,OAAOR,KAAK;AACd;AAEA,OAAO,SAASmB,SAASA,CACvBC,KAAkB,EAClBtB,KAAoB,EACpBnB,KAA2D,EAC3DoB,OAGC,EACD;EACA,MAAMsB,aAAuB,GAAGlD,GAAG,CAAC,EAAE,CAAC;EACvC,MAAMmD,eAA+D,GAAGnD,GAAG,CAAC,IAAIoD,GAAG,CAAC,CAAC,CAAC;EACtF,MAAMC,gBAAgB,GAAGtD,QAAQ,CAAC,MAChC6B,OAAO,EAAE0B,SAAS,GACdrD,KAAK,CAAC0B,KAAK,CAAC,CAAC4B,GAAG,CAAC9C,IAAI,IAAK,CAACA,IAAI,EAAEmB,OAAO,CAAC0B,SAAS,CAAE7C,IAAI,CAAC,CAAW,CAAC,GACrER,KAAK,CAAC0B,KAAK,CAChB,CAAC;EAEFzB,WAAW,CAAC,MAAM;IAChB,MAAMsD,MAAM,GAAG,OAAOhD,KAAK,KAAK,UAAU,GAAGA,KAAK,CAAC,CAAC,GAAGP,KAAK,CAACO,KAAK,CAAC;IACnE,MAAMiD,QAAQ,GACZ,OAAOD,MAAM,KAAK,QAAQ,IAC1B,OAAOA,MAAM,KAAK,QAAQ,GACxB,EAAE,GAAGpC,MAAM,CAACoC,MAAM,CAAC;IAEvB,MAAME,OAAO,GAAGhC,WAAW,CACzB2B,gBAAgB,CAAC9C,KAAK,EACtBkD,QAAQ,EACR;MACEzC,eAAe,EAAE;QACf,GAAGiC,KAAK,CAACjC,eAAe;QACxB,GAAGf,KAAK,CAAC2B,OAAO,EAAEZ,eAAe;MACnC,CAAC;MACDO,OAAO,EAAE0B,KAAK,CAACnC,YAAY;MAC3BI,UAAU,EAAE+B,KAAK,CAAC/B,UAAU;MAC5BG,UAAU,EAAE4B,KAAK,CAAC5B,UAAU;MAC5BG,QAAQ,EAAEyB,KAAK,CAACzB;IAClB,CACF,CAAC;IAED,MAAMmC,aAAa,GAAG1D,KAAK,CAAC0B,KAAK,CAAC;IAElC,MAAMiC,cAA6C,GAAG,EAAE;IACxD,MAAMC,gBAAiD,GAAG,IAAIT,GAAG,CAAC,CAAC;IACnEM,OAAO,CAACI,OAAO,CAACC,IAAA,IAAwB;MAAA,IAAvB;QAAEjB,KAAK;QAAEC;MAAQ,CAAC,GAAAgB,IAAA;MACjC,MAAMtD,IAAI,GAAGkD,aAAa,CAACb,KAAK,CAAC;MACjCc,cAAc,CAACf,IAAI,CAACpC,IAAI,CAAC;MACzBoD,gBAAgB,CAACG,GAAG,CAACvD,IAAI,CAACF,KAAK,EAAEwC,OAAO,CAAC;IAC3C,CAAC,CAAC;IACFG,aAAa,CAAC3C,KAAK,GAAGqD,cAAc;IACpCT,eAAe,CAAC5C,KAAK,GAAGsD,gBAAgB;EAC1C,CAAC,CAAC;EAEF,SAASI,UAAUA,CAAExD,IAAO,EAAE;IAC5B,OAAO0C,eAAe,CAAC5C,KAAK,CAAC2D,GAAG,CAACzD,IAAI,CAACF,KAAK,CAAC;EAC9C;EAEA,OAAO;IAAE2C,aAAa;IAAEC,eAAe;IAAEc;EAAW,CAAC;AACvD","ignoreList":[]}
1
+ {"version":3,"file":"filter.mjs","names":["computed","shallowRef","unref","watchEffect","getPropertyFromItem","propsFactory","wrapInArray","defaultFilter","value","query","item","toString","toLocaleLowerCase","indexOf","makeFilterProps","customFilter","Function","customKeyFilter","Object","filterKeys","Array","String","filterMode","type","default","noFilter","Boolean","filterItems","items","options","array","filter","keys","customFiltersLength","length","loop","i","transformed","customMatches","defaultMatches","match","key","keyFilter","title","defaultMatchesLength","customMatchesLength","push","index","matches","useFilter","props","filteredItems","filteredMatches","Map","transformedItems","transform","map","_query","strQuery","results","originalItems","_filteredItems","_filteredMatches","forEach","_ref","set","getMatches","get"],"sources":["../../src/composables/filter.ts"],"sourcesContent":["/* eslint-disable max-statements */\n/* eslint-disable no-labels */\n\n// Utilities\nimport { computed, shallowRef, unref, watchEffect } from 'vue'\nimport { getPropertyFromItem, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { MaybeRef } from '@/util'\n\n/**\n * - match without highlight\n * - single match (index), length already known\n * - single match (start, end)\n * - multiple matches (start, end), probably shouldn't overlap\n */\nexport type FilterMatch = boolean | number | [number, number] | [number, number][]\nexport type FilterFunction = (value: string, query: string, item?: InternalItem) => FilterMatch\nexport type FilterKeyFunctions = Record<string, FilterFunction>\nexport type FilterKeys = string | string[]\nexport type FilterMode = 'some' | 'every' | 'union' | 'intersection'\n\nexport interface FilterProps {\n customFilter?: FilterFunction\n customKeyFilter?: FilterKeyFunctions\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n}\n\nexport interface InternalItem<T = any> {\n value: any\n raw: T\n}\n\n// Composables\nexport const defaultFilter: FilterFunction = (value, query, item) => {\n if (value == null || query == null) return -1\n\n return value.toString().toLocaleLowerCase().indexOf(query.toString().toLocaleLowerCase())\n}\n\nexport const makeFilterProps = propsFactory({\n customFilter: Function as PropType<FilterFunction>,\n customKeyFilter: Object as PropType<FilterKeyFunctions>,\n filterKeys: [Array, String] as PropType<FilterKeys>,\n filterMode: {\n type: String as PropType<FilterMode>,\n default: 'intersection',\n },\n noFilter: Boolean,\n}, 'filter')\n\nexport function filterItems (\n items: readonly (readonly [item: InternalItem, transformed: {}])[] | readonly InternalItem[],\n query: string,\n options?: {\n customKeyFilter?: FilterKeyFunctions\n default?: FilterFunction\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n },\n) {\n const array: { index: number, matches: Record<string, FilterMatch> }[] = []\n // always ensure we fall back to a functioning filter\n const filter = options?.default ?? defaultFilter\n const keys = options?.filterKeys ? wrapInArray(options.filterKeys) : false\n const customFiltersLength = Object.keys(options?.customKeyFilter ?? {}).length\n\n if (!items?.length) return array\n\n loop:\n for (let i = 0; i < items.length; i++) {\n const [item, transformed = item] = wrapInArray(items[i]) as readonly [InternalItem, {}]\n const customMatches: Record<string, FilterMatch> = {}\n const defaultMatches: Record<string, FilterMatch> = {}\n let match: FilterMatch = -1\n\n if ((query || customFiltersLength > 0) && !options?.noFilter) {\n if (typeof item === 'object') {\n const filterKeys = keys || Object.keys(transformed)\n\n for (const key of filterKeys) {\n const value = getPropertyFromItem(transformed, key)\n const keyFilter = options?.customKeyFilter?.[key]\n\n match = keyFilter\n ? keyFilter(value, query, item)\n : filter(value, query, item)\n\n if (match !== -1 && match !== false) {\n if (keyFilter) customMatches[key] = match\n else defaultMatches[key] = match\n } else if (options?.filterMode === 'every') {\n continue loop\n }\n }\n } else {\n match = filter(item, query, item)\n if (match !== -1 && match !== false) {\n defaultMatches.title = match\n }\n }\n\n const defaultMatchesLength = Object.keys(defaultMatches).length\n const customMatchesLength = Object.keys(customMatches).length\n\n if (!defaultMatchesLength && !customMatchesLength) continue\n\n if (\n options?.filterMode === 'union' &&\n customMatchesLength !== customFiltersLength &&\n !defaultMatchesLength\n ) continue\n\n if (\n options?.filterMode === 'intersection' &&\n (\n customMatchesLength !== customFiltersLength ||\n !defaultMatchesLength\n )\n ) continue\n }\n\n array.push({ index: i, matches: { ...defaultMatches, ...customMatches } })\n }\n\n return array\n}\n\nexport function useFilter <T extends InternalItem> (\n props: FilterProps,\n items: MaybeRef<T[]>,\n query: Ref<string | undefined> | (() => string | undefined),\n options?: {\n transform?: (item: T) => {}\n customKeyFilter?: MaybeRef<FilterKeyFunctions | undefined>\n }\n) {\n const filteredItems: Ref<T[]> = shallowRef([])\n const filteredMatches: Ref<Map<unknown, Record<string, FilterMatch>>> = shallowRef(new Map())\n const transformedItems = computed(() => (\n options?.transform\n ? unref(items).map(item => ([item, options.transform!(item)] as const))\n : unref(items)\n ))\n\n watchEffect(() => {\n const _query = typeof query === 'function' ? query() : unref(query)\n const strQuery = (\n typeof _query !== 'string' &&\n typeof _query !== 'number'\n ) ? '' : String(_query)\n\n const results = filterItems(\n transformedItems.value,\n strQuery,\n {\n customKeyFilter: {\n ...props.customKeyFilter,\n ...unref(options?.customKeyFilter),\n },\n default: props.customFilter,\n filterKeys: props.filterKeys,\n filterMode: props.filterMode,\n noFilter: props.noFilter,\n },\n )\n\n const originalItems = unref(items)\n\n const _filteredItems: typeof filteredItems['value'] = []\n const _filteredMatches: typeof filteredMatches['value'] = new Map()\n results.forEach(({ index, matches }) => {\n const item = originalItems[index]\n _filteredItems.push(item)\n _filteredMatches.set(item.value, matches)\n })\n filteredItems.value = _filteredItems\n filteredMatches.value = _filteredMatches\n })\n\n function getMatches (item: T) {\n return filteredMatches.value.get(item.value)\n }\n\n return { filteredItems, filteredMatches, getMatches }\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.7.6-master.2024-12-26";
19
+ export const version = "3.7.6-master.2025-01-16";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.mjs";
package/lib/framework.mjs CHANGED
@@ -97,7 +97,7 @@ export function createVuetify() {
97
97
  goTo
98
98
  };
99
99
  }
100
- export const version = "3.7.6-master.2024-12-26";
100
+ export const version = "3.7.6-master.2025-01-16";
101
101
  createVuetify.version = version;
102
102
 
103
103
  // Vue's inject() can only be used in setup
package/lib/index.d.mts CHANGED
@@ -486,41 +486,42 @@ declare module 'vue' {
486
486
  $children?: VNodeChild
487
487
  }
488
488
  export interface GlobalComponents {
489
- VAlert: typeof import('vuetify/components')['VAlert']
490
- VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
491
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
492
- VApp: typeof import('vuetify/components')['VApp']
493
- VAvatar: typeof import('vuetify/components')['VAvatar']
494
- VBadge: typeof import('vuetify/components')['VBadge']
495
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
496
489
  VAppBar: typeof import('vuetify/components')['VAppBar']
497
490
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
498
491
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
499
- VBtn: typeof import('vuetify/components')['VBtn']
492
+ VApp: typeof import('vuetify/components')['VApp']
493
+ VAvatar: typeof import('vuetify/components')['VAvatar']
500
494
  VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
495
+ VBadge: typeof import('vuetify/components')['VBadge']
496
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
501
497
  VBanner: typeof import('vuetify/components')['VBanner']
502
498
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
503
499
  VBannerText: typeof import('vuetify/components')['VBannerText']
500
+ VAlert: typeof import('vuetify/components')['VAlert']
501
+ VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
504
502
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
505
503
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
506
504
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
507
- VCarousel: typeof import('vuetify/components')['VCarousel']
508
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
509
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
505
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
510
506
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
507
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
511
508
  VCard: typeof import('vuetify/components')['VCard']
512
509
  VCardActions: typeof import('vuetify/components')['VCardActions']
513
510
  VCardItem: typeof import('vuetify/components')['VCardItem']
514
511
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
515
512
  VCardText: typeof import('vuetify/components')['VCardText']
516
513
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
514
+ VCarousel: typeof import('vuetify/components')['VCarousel']
515
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
516
+ VBtn: typeof import('vuetify/components')['VBtn']
517
517
  VChip: typeof import('vuetify/components')['VChip']
518
- VCode: typeof import('vuetify/components')['VCode']
519
518
  VChipGroup: typeof import('vuetify/components')['VChipGroup']
520
- VCounter: typeof import('vuetify/components')['VCounter']
519
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
520
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
521
521
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
522
+ VCounter: typeof import('vuetify/components')['VCounter']
523
+ VCode: typeof import('vuetify/components')['VCode']
522
524
  VCombobox: typeof import('vuetify/components')['VCombobox']
523
- VDivider: typeof import('vuetify/components')['VDivider']
524
525
  VDataTable: typeof import('vuetify/components')['VDataTable']
525
526
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
526
527
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -528,36 +529,35 @@ declare module 'vue' {
528
529
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
529
530
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
530
531
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
532
+ VDialog: typeof import('vuetify/components')['VDialog']
533
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
534
+ VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
535
+ VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
536
+ VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
537
+ VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
538
+ VDivider: typeof import('vuetify/components')['VDivider']
531
539
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
532
540
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
533
541
  VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
534
542
  VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
535
543
  VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
536
544
  VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
537
- VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
538
- VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
539
- VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
540
- VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
541
- VDialog: typeof import('vuetify/components')['VDialog']
545
+ VFab: typeof import('vuetify/components')['VFab']
542
546
  VField: typeof import('vuetify/components')['VField']
543
547
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
544
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
545
- VFooter: typeof import('vuetify/components')['VFooter']
546
- VFab: typeof import('vuetify/components')['VFab']
548
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
547
549
  VFileInput: typeof import('vuetify/components')['VFileInput']
550
+ VFooter: typeof import('vuetify/components')['VFooter']
551
+ VImg: typeof import('vuetify/components')['VImg']
552
+ VInput: typeof import('vuetify/components')['VInput']
548
553
  VIcon: typeof import('vuetify/components')['VIcon']
549
554
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
550
555
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
551
556
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
552
557
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
553
- VImg: typeof import('vuetify/components')['VImg']
554
- VKbd: typeof import('vuetify/components')['VKbd']
555
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
556
- VInput: typeof import('vuetify/components')['VInput']
557
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
558
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
559
558
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
560
559
  VItem: typeof import('vuetify/components')['VItem']
560
+ VKbd: typeof import('vuetify/components')['VKbd']
561
561
  VLabel: typeof import('vuetify/components')['VLabel']
562
562
  VList: typeof import('vuetify/components')['VList']
563
563
  VListGroup: typeof import('vuetify/components')['VListGroup']
@@ -568,69 +568,70 @@ declare module 'vue' {
568
568
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
569
569
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
570
570
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
571
- VMain: typeof import('vuetify/components')['VMain']
572
- VMenu: typeof import('vuetify/components')['VMenu']
573
- VMessages: typeof import('vuetify/components')['VMessages']
574
571
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
572
+ VMenu: typeof import('vuetify/components')['VMenu']
573
+ VPagination: typeof import('vuetify/components')['VPagination']
575
574
  VOverlay: typeof import('vuetify/components')['VOverlay']
575
+ VMain: typeof import('vuetify/components')['VMain']
576
576
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
577
+ VMessages: typeof import('vuetify/components')['VMessages']
577
578
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
578
- VPagination: typeof import('vuetify/components')['VPagination']
579
579
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
580
- VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
581
580
  VRating: typeof import('vuetify/components')['VRating']
582
- VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
581
+ VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
583
582
  VSelect: typeof import('vuetify/components')['VSelect']
583
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
584
584
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
585
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
585
586
  VSheet: typeof import('vuetify/components')['VSheet']
586
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
587
+ VSlider: typeof import('vuetify/components')['VSlider']
588
+ VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
589
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
587
590
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
588
591
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
589
- VSlider: typeof import('vuetify/components')['VSlider']
590
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
592
+ VTable: typeof import('vuetify/components')['VTable']
593
+ VSwitch: typeof import('vuetify/components')['VSwitch']
594
+ VTimeline: typeof import('vuetify/components')['VTimeline']
595
+ VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
596
+ VTextField: typeof import('vuetify/components')['VTextField']
591
597
  VStepper: typeof import('vuetify/components')['VStepper']
592
598
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
593
599
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
594
600
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
595
601
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
596
602
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
597
- VSwitch: typeof import('vuetify/components')['VSwitch']
598
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
603
+ VTextarea: typeof import('vuetify/components')['VTextarea']
599
604
  VTab: typeof import('vuetify/components')['VTab']
600
605
  VTabs: typeof import('vuetify/components')['VTabs']
601
606
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
602
607
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
603
- VTable: typeof import('vuetify/components')['VTable']
604
- VTextField: typeof import('vuetify/components')['VTextField']
605
- VTextarea: typeof import('vuetify/components')['VTextarea']
606
- VTimeline: typeof import('vuetify/components')['VTimeline']
607
- VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
608
- VTooltip: typeof import('vuetify/components')['VTooltip']
609
- VWindow: typeof import('vuetify/components')['VWindow']
610
- VWindowItem: typeof import('vuetify/components')['VWindowItem']
611
608
  VToolbar: typeof import('vuetify/components')['VToolbar']
612
609
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
613
610
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
614
- VDataIterator: typeof import('vuetify/components')['VDataIterator']
611
+ VTooltip: typeof import('vuetify/components')['VTooltip']
612
+ VWindow: typeof import('vuetify/components')['VWindow']
613
+ VWindowItem: typeof import('vuetify/components')['VWindowItem']
615
614
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
616
615
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
616
+ VDataIterator: typeof import('vuetify/components')['VDataIterator']
617
+ VForm: typeof import('vuetify/components')['VForm']
617
618
  VHover: typeof import('vuetify/components')['VHover']
618
619
  VContainer: typeof import('vuetify/components')['VContainer']
619
620
  VCol: typeof import('vuetify/components')['VCol']
620
621
  VRow: typeof import('vuetify/components')['VRow']
621
622
  VSpacer: typeof import('vuetify/components')['VSpacer']
622
- VForm: typeof import('vuetify/components')['VForm']
623
623
  VLayout: typeof import('vuetify/components')['VLayout']
624
624
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
625
- VLazy: typeof import('vuetify/components')['VLazy']
626
625
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
627
- VNoSsr: typeof import('vuetify/components')['VNoSsr']
626
+ VLazy: typeof import('vuetify/components')['VLazy']
628
627
  VParallax: typeof import('vuetify/components')['VParallax']
629
- VRadio: typeof import('vuetify/components')['VRadio']
628
+ VNoSsr: typeof import('vuetify/components')['VNoSsr']
630
629
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
630
+ VRadio: typeof import('vuetify/components')['VRadio']
631
631
  VResponsive: typeof import('vuetify/components')['VResponsive']
632
632
  VSparkline: typeof import('vuetify/components')['VSparkline']
633
633
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
634
+ VValidation: typeof import('vuetify/components')['VValidation']
634
635
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
635
636
  VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
636
637
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
@@ -649,27 +650,26 @@ declare module 'vue' {
649
650
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
650
651
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
651
652
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
652
- VValidation: typeof import('vuetify/components')['VValidation']
653
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
654
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
653
655
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
654
656
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
655
657
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
656
658
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
657
659
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
658
660
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
659
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
660
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
661
+ VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
661
662
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
662
663
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
663
664
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
664
- VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
665
- VPicker: typeof import('vuetify/labs/components')['VPicker']
666
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
667
665
  VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
668
666
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
669
667
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
670
668
  VTreeview: typeof import('vuetify/labs/components')['VTreeview']
671
669
  VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
672
670
  VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
671
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
672
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
673
673
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
674
674
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
675
675
  VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
@@ -10,8 +10,13 @@ import { useLocale } from "../../composables/locale.mjs";
10
10
  import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
11
11
  import { computed, shallowRef } from 'vue';
12
12
  import { genericComponent, omit, propsFactory, useRender, wrapInArray } from "../../util/index.mjs"; // Types
13
+ // Types
13
14
  export const makeVDateInputProps = propsFactory({
14
15
  hideActions: Boolean,
16
+ location: {
17
+ type: String,
18
+ default: 'bottom start'
19
+ },
15
20
  ...makeFocusProps(),
16
21
  ...makeVConfirmEditProps(),
17
22
  ...makeVTextFieldProps({
@@ -21,7 +26,7 @@ export const makeVDateInputProps = propsFactory({
21
26
  ...omit(makeVDatePickerProps({
22
27
  weeksInMonth: 'dynamic',
23
28
  hideHeader: true
24
- }), ['active'])
29
+ }), ['active', 'location'])
25
30
  }, 'VDateInput');
26
31
  export const VDateInput = genericComponent()({
27
32
  name: 'VDateInput',
@@ -77,7 +82,7 @@ export const VDateInput = genericComponent()({
77
82
  }
78
83
  useRender(() => {
79
84
  const confirmEditProps = VConfirmEdit.filterProps(props);
80
- const datePickerProps = VDatePicker.filterProps(omit(props, ['active']));
85
+ const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location']));
81
86
  const textFieldProps = VTextField.filterProps(props);
82
87
  return _createVNode(VTextField, _mergeProps(textFieldProps, {
83
88
  "class": props.class,
@@ -95,18 +100,23 @@ export const VDateInput = genericComponent()({
95
100
  "onUpdate:modelValue": $event => menu.value = $event,
96
101
  "activator": "parent",
97
102
  "min-width": "0",
103
+ "location": props.location,
98
104
  "closeOnContentClick": false,
99
105
  "openOnClick": false
100
106
  }, {
101
107
  default: () => [_createVNode(VConfirmEdit, _mergeProps(confirmEditProps, {
102
108
  "modelValue": model.value,
103
109
  "onUpdate:modelValue": $event => model.value = $event,
104
- "onSave": onSave
110
+ "onSave": onSave,
111
+ "onCancel": () => menu.value = false
105
112
  }), {
106
113
  default: _ref2 => {
107
114
  let {
108
115
  actions,
109
- model: proxyModel
116
+ model: proxyModel,
117
+ save,
118
+ cancel,
119
+ isPristine
110
120
  } = _ref2;
111
121
  return _createVNode(VDatePicker, _mergeProps(datePickerProps, {
112
122
  "modelValue": props.hideActions ? model.value : proxyModel.value,
@@ -120,7 +130,11 @@ export const VDateInput = genericComponent()({
120
130
  },
121
131
  "onMousedown": e => e.preventDefault()
122
132
  }), {
123
- actions: !props.hideActions ? actions : undefined
133
+ actions: !props.hideActions ? () => slots.actions?.({
134
+ save,
135
+ cancel,
136
+ isPristine
137
+ }) ?? actions() : undefined
124
138
  });
125
139
  }
126
140
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"VDateInput.mjs","names":["makeVConfirmEditProps","VConfirmEdit","makeVDatePickerProps","VDatePicker","VMenu","makeVTextFieldProps","VTextField","useDate","makeFocusProps","useFocus","useLocale","useProxiedModel","computed","shallowRef","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDateInputProps","hideActions","Boolean","placeholder","prependIcon","weeksInMonth","hideHeader","VDateInput","name","props","emits","val","setup","_ref","slots","t","adapter","isFocused","focus","blur","model","multiple","menu","display","value","length","start","end","isValid","format","isInteractive","disabled","readonly","onKeydown","e","key","target","date","onClick","preventDefault","stopPropagation","onSave","confirmEditProps","filterProps","datePickerProps","textFieldProps","_createVNode","_mergeProps","class","style","undefined","default","$event","_ref2","actions","proxyModel"],"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 { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, shallowRef } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nexport interface VDateInputSlots {\n default: never\n}\n\nexport const makeVDateInputProps = propsFactory({\n hideActions: Boolean,\n\n ...makeFocusProps(),\n ...makeVConfirmEditProps(),\n ...makeVTextFieldProps({\n placeholder: 'mm/dd/yyyy',\n prependIcon: '$calendar',\n }),\n ...omit(makeVDatePickerProps({\n weeksInMonth: 'dynamic' as const,\n hideHeader: true,\n }), ['active']),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const adapter = useDate()\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(props, 'modelValue', props.multiple ? [] : null)\n const menu = shallowRef(false)\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 return adapter.isValid(start) && adapter.isValid(end)\n ? `${adapter.format(start, 'keyboardDate')} - ${adapter.format(end, 'keyboardDate')}`\n : ''\n }\n\n return adapter.isValid(model.value) ? adapter.format(model.value, 'keyboardDate') : ''\n })\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\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 = adapter.date(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 useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const datePickerProps = VDatePicker.filterProps(omit(props, ['active']))\n const textFieldProps = VTextField.filterProps(props)\n\n return (\n <VTextField\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onFocus={ focus }\n onBlur={ blur }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prepend={ isInteractive.value ? onClick : undefined }\n >\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n min-width=\"0\"\n closeOnContentClick={ false }\n openOnClick={ false }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n onSave={ onSave }\n >\n {{\n default: ({ actions, model: proxyModel }) => {\n return (\n <VDatePicker\n { ...datePickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ val => {\n if (!props.hideActions) {\n proxyModel.value = val\n } else {\n model.value = val\n\n if (!props.multiple) menu.value = false\n }\n }}\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n {{\n actions: !props.hideActions ? actions : undefined,\n }}\n </VDatePicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </VTextField>\n )\n })\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VDateInput.mjs","names":["makeVConfirmEditProps","VConfirmEdit","makeVDatePickerProps","VDatePicker","VMenu","makeVTextFieldProps","VTextField","useDate","makeFocusProps","useFocus","useLocale","useProxiedModel","computed","shallowRef","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDateInputProps","hideActions","Boolean","location","type","String","default","placeholder","prependIcon","weeksInMonth","hideHeader","VDateInput","name","props","emits","val","setup","_ref","slots","t","adapter","isFocused","focus","blur","model","multiple","menu","display","value","length","start","end","isValid","format","isInteractive","disabled","readonly","onKeydown","e","key","target","date","onClick","preventDefault","stopPropagation","onSave","confirmEditProps","filterProps","datePickerProps","textFieldProps","_createVNode","_mergeProps","class","style","undefined","$event","onCancel","_ref2","actions","proxyModel","save","cancel","isPristine"],"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 { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, shallowRef } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\n\n// Types\nexport type VDateInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VDateInputSlots = {\n actions: VDateInputActionsSlot\n default: never\n}\n\nexport const makeVDateInputProps = propsFactory({\n hideActions: Boolean,\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom start',\n },\n ...makeFocusProps(),\n ...makeVConfirmEditProps(),\n ...makeVTextFieldProps({\n placeholder: 'mm/dd/yyyy',\n prependIcon: '$calendar',\n }),\n ...omit(makeVDatePickerProps({\n weeksInMonth: 'dynamic' as const,\n hideHeader: true,\n }), ['active', 'location']),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent<VDateInputSlots>()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const adapter = useDate()\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(props, 'modelValue', props.multiple ? [] : null)\n const menu = shallowRef(false)\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 return adapter.isValid(start) && adapter.isValid(end)\n ? `${adapter.format(start, 'keyboardDate')} - ${adapter.format(end, 'keyboardDate')}`\n : ''\n }\n\n return adapter.isValid(model.value) ? adapter.format(model.value, 'keyboardDate') : ''\n })\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\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 = adapter.date(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 useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location']))\n const textFieldProps = VTextField.filterProps(props)\n\n return (\n <VTextField\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onFocus={ focus }\n onBlur={ blur }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prepend={ isInteractive.value ? onClick : undefined }\n >\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n min-width=\"0\"\n location={ props.location }\n closeOnContentClick={ false }\n openOnClick={ false }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n onSave={ onSave }\n onCancel={ () => menu.value = false }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n return (\n <VDatePicker\n { ...datePickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ val => {\n if (!props.hideActions) {\n proxyModel.value = val\n } else {\n model.value = val\n\n if (!props.multiple) menu.value = false\n }\n }}\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n {{\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 </VTextField>\n )\n })\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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","ignoreList":[]}