vuetify 3.5.5 → 3.5.7
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.
- package/dist/_component-variables-labs.sass +2 -0
- package/dist/json/attributes.json +352 -40
- package/dist/json/importMap-labs.json +16 -8
- package/dist/json/importMap.json +122 -118
- package/dist/json/tags.json +93 -0
- package/dist/json/web-types.json +1084 -52
- package/dist/vuetify-labs.css +2121 -1996
- package/dist/vuetify-labs.d.ts +1336 -128
- package/dist/vuetify-labs.esm.js +332 -81
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +332 -81
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +838 -839
- package/dist/vuetify.d.ts +320 -145
- package/dist/vuetify.esm.js +87 -75
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +87 -75
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +60 -58
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VApp/index.d.mts +8 -6
- package/lib/components/VAutocomplete/VAutocomplete.css +4 -4
- package/lib/components/VAutocomplete/VAutocomplete.mjs +33 -29
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
- package/lib/components/VCheckbox/VCheckbox.mjs +3 -1
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.css +4 -4
- package/lib/components/VCombobox/VCombobox.mjs +22 -23
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +1 -1
- package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
- package/lib/components/VDataIterator/index.d.mts +50 -94
- package/lib/components/VDataTable/index.d.mts +214 -1
- package/lib/components/VDataTable/index.mjs +1 -0
- package/lib/components/VDataTable/index.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.css +4 -7
- package/lib/components/VExpansionPanel/VExpansionPanel.sass +4 -3
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +2 -0
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs +2 -0
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
- package/lib/components/VExpansionPanel/index.d.mts +27 -0
- package/lib/components/VLayout/index.d.mts +8 -6
- package/lib/components/VSelect/VSelect.mjs +20 -18
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbar.css +3 -1
- package/lib/components/VToolbar/VToolbar.sass +2 -1
- package/lib/components/index.d.mts +279 -106
- package/lib/composables/filter.mjs +1 -1
- package/lib/composables/filter.mjs.map +1 -1
- package/lib/composables/goto.mjs +2 -2
- package/lib/composables/goto.mjs.map +1 -1
- package/lib/composables/layout.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +42 -39
- package/lib/labs/VEmptyState/VEmptyState.css +59 -0
- package/lib/labs/VEmptyState/VEmptyState.mjs +145 -0
- package/lib/labs/VEmptyState/VEmptyState.mjs.map +1 -0
- package/lib/labs/VEmptyState/VEmptyState.sass +53 -0
- package/lib/labs/VEmptyState/_variables.scss +22 -0
- package/lib/labs/VEmptyState/index.d.mts +415 -0
- package/lib/labs/VEmptyState/index.mjs +2 -0
- package/lib/labs/VEmptyState/index.mjs.map +1 -0
- package/lib/labs/VFab/VFab.css +69 -0
- package/lib/labs/VFab/VFab.mjs +114 -0
- package/lib/labs/VFab/VFab.mjs.map +1 -0
- package/lib/labs/VFab/VFab.sass +82 -0
- package/lib/labs/VFab/_mixins.scss +22 -0
- package/lib/labs/VFab/_variables.scss +33 -0
- package/lib/labs/VFab/index.d.mts +656 -0
- package/lib/labs/VFab/index.mjs +2 -0
- package/lib/labs/VFab/index.mjs.map +1 -0
- package/lib/labs/VSparkline/VBarline.mjs +4 -4
- package/lib/labs/VSparkline/VBarline.mjs.map +1 -1
- package/lib/labs/VSparkline/VTrendline.mjs +6 -2
- package/lib/labs/VSparkline/VTrendline.mjs.map +1 -1
- package/lib/labs/VSparkline/index.d.mts +12 -0
- package/lib/labs/VSparkline/util/line.mjs +2 -0
- package/lib/labs/VSparkline/util/line.mjs.map +1 -1
- package/lib/labs/components.d.mts +1066 -2
- package/lib/labs/components.mjs +2 -0
- package/lib/labs/components.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -41,7 +41,7 @@ export function filterItems(items, query, options) {
|
|
|
41
41
|
if (typeof item === 'object') {
|
|
42
42
|
const filterKeys = keys || Object.keys(transformed);
|
|
43
43
|
for (const key of filterKeys) {
|
|
44
|
-
const value = getPropertyFromItem(transformed, key
|
|
44
|
+
const value = getPropertyFromItem(transformed, key);
|
|
45
45
|
const keyFilter = options?.customKeyFilter?.[key];
|
|
46
46
|
match = keyFilter ? keyFilter(value, query, item) : filter(value, query, item);
|
|
47
47
|
if (match !== -1 && match !== false) {
|
|
@@ -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 && !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, transformed)\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/B,KAAK,IAAI,CAACoB,OAAO,EAAEJ,QAAQ,EAAE;MAC/B,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,EAAEJ,WAAW,CAAC;UAChE,MAAMK,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"}
|
|
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 && !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/B,KAAK,IAAI,CAACoB,OAAO,EAAEJ,QAAQ,EAAE;MAC/B,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"}
|
package/lib/composables/goto.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Utilities
|
|
2
2
|
import { inject } from 'vue';
|
|
3
|
-
import { consoleWarn, mergeDeep, refElement } from "../util/index.mjs"; // Types
|
|
3
|
+
import { clamp, consoleWarn, mergeDeep, refElement } from "../util/index.mjs"; // Types
|
|
4
4
|
export const GoToSymbol = Symbol.for('vuetify:goto');
|
|
5
5
|
function genDefaults() {
|
|
6
6
|
return {
|
|
@@ -74,7 +74,7 @@ export async function scrollTo(_target, _options, horizontal, goTo) {
|
|
|
74
74
|
return new Promise(resolve => requestAnimationFrame(function step(currentTime) {
|
|
75
75
|
const timeElapsed = currentTime - startTime;
|
|
76
76
|
const progress = timeElapsed / options.duration;
|
|
77
|
-
const location = Math.floor(startLocation + (targetLocation - startLocation) * ease(
|
|
77
|
+
const location = Math.floor(startLocation + (targetLocation - startLocation) * ease(clamp(progress, 0, 1)));
|
|
78
78
|
container[property] = location;
|
|
79
79
|
|
|
80
80
|
// Allow for some jitter if target time has elapsed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goto.mjs","names":["inject","consoleWarn","mergeDeep","refElement","GoToSymbol","Symbol","for","genDefaults","container","undefined","duration","layout","offset","easing","patterns","linear","t","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","getContainer","el","getTarget","document","scrollingElement","body","querySelector","getOffset","target","horizontal","rtl","totalOffset","offsetLeft","offsetTop","offsetParent","createGoTo","options","locale","isRtl","scrollTo","_target","_options","goTo","property","value","HTMLElement","parentElement","ease","TypeError","targetLocation","styles","window","getComputedStyle","layoutOffset","getPropertyValue","parseInt","startLocation","Promise","resolve","startTime","performance","now","requestAnimationFrame","step","currentTime","timeElapsed","progress","location","Math","floor","max","abs","useGoTo","arguments","length","Error","go"],"sources":["../../src/composables/goto.ts"],"sourcesContent":["// Utilities\nimport { inject } from 'vue'\nimport { consoleWarn, mergeDeep, refElement } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance, InjectionKey, Ref } from 'vue'\nimport type { LocaleInstance, RtlInstance } from './locale'\n\nexport interface GoToInstance {\n rtl: Ref<boolean>\n options: GoToOptions\n}\n\nexport interface GoToOptions {\n container: ComponentPublicInstance | HTMLElement | string\n duration: number\n layout: boolean\n offset: number\n easing: string | ((t: number) => number)\n patterns: Record<string, (t: number) => number>\n}\n\nexport const GoToSymbol: InjectionKey<GoToInstance> = Symbol.for('vuetify:goto')\n\nfunction genDefaults () {\n return {\n container: undefined,\n duration: 300,\n layout: false,\n offset: 0,\n easing: 'easeInOutCubic',\n patterns: {\n linear: (t: number) => t,\n easeInQuad: (t: number) => t ** 2,\n easeOutQuad: (t: number) => t * (2 - t),\n easeInOutQuad: (t: number) => (t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t),\n easeInCubic: (t: number) => t ** 3,\n easeOutCubic: (t: number) => --t ** 3 + 1,\n easeInOutCubic: (t: number) => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,\n easeInQuart: (t: number) => t ** 4,\n easeOutQuart: (t: number) => 1 - --t ** 4,\n easeInOutQuart: (t: number) => (t < 0.5 ? 8 * t ** 4 : 1 - 8 * --t ** 4),\n easeInQuint: (t: number) => t ** 5,\n easeOutQuint: (t: number) => 1 + --t ** 5,\n easeInOutQuint: (t: number) => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5,\n },\n }\n}\n\nfunction getContainer (el?: ComponentPublicInstance | HTMLElement | string) {\n return getTarget(el) ?? (document.scrollingElement || document.body) as HTMLElement\n}\n\nfunction getTarget (el: ComponentPublicInstance | HTMLElement | string | undefined) {\n return (typeof el === 'string') ? document.querySelector<HTMLElement>(el) : refElement(el)\n}\n\nfunction getOffset (target: any, horizontal?: boolean, rtl?: boolean): number {\n if (typeof target === 'number') return horizontal && rtl ? -target : target\n\n let el = getTarget(target)\n let totalOffset = 0\n while (el) {\n totalOffset += horizontal ? el.offsetLeft : el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function createGoTo (options: Partial<GoToOptions> | undefined, locale: LocaleInstance & RtlInstance) {\n return {\n rtl: locale.isRtl,\n options: mergeDeep(genDefaults(), options),\n }\n}\n\nexport async function scrollTo (\n _target: ComponentPublicInstance | HTMLElement | number | string,\n _options: Partial<GoToOptions>,\n horizontal?: boolean,\n goTo?: GoToInstance,\n) {\n const property = horizontal ? 'scrollLeft' : 'scrollTop'\n const options = mergeDeep(goTo?.options ?? genDefaults(), _options)\n const rtl = goTo?.rtl.value\n const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0\n const container = options.container === 'parent' && target instanceof HTMLElement\n ? target.parentElement!\n : getContainer(options.container)\n const ease = typeof options.easing === 'function' ? options.easing : options.patterns[options.easing]\n\n if (!ease) throw new TypeError(`Easing function \"${options.easing}\" not found.`)\n\n let targetLocation: number\n if (typeof target === 'number') {\n targetLocation = getOffset(target, horizontal, rtl)\n } else {\n targetLocation = getOffset(target, horizontal, rtl) - getOffset(container, horizontal, rtl)\n\n if (options.layout) {\n const styles = window.getComputedStyle(target)\n const layoutOffset = styles.getPropertyValue('--v-layout-top')\n\n if (layoutOffset) targetLocation -= parseInt(layoutOffset, 10)\n }\n }\n\n targetLocation += options.offset\n\n const startLocation = container[property] ?? 0\n\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const startTime = performance.now()\n\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = timeElapsed / options.duration\n const location = Math.floor(\n startLocation +\n (targetLocation - startLocation) *\n ease(Math.max(progress, 1))\n )\n\n container[property] = location\n\n // Allow for some jitter if target time has elapsed\n if (progress >= 1 && Math.abs(location - container[property]) < 10) {\n return resolve(targetLocation)\n } else if (progress > 2) {\n // The target might not be reachable\n consoleWarn('Scroll target is not reachable')\n return resolve(container[property])\n }\n\n requestAnimationFrame(step)\n }))\n}\n\nexport function useGoTo (_options: Partial<GoToOptions> = {}) {\n const goTo = inject(GoToSymbol)\n\n if (!goTo) throw new Error('[Vuetify] Could not find injected goto instance')\n\n async function go (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) {\n return scrollTo(target, mergeDeep(_options, options), false, goTo)\n }\n\n go.horizontal = async (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) => {\n return scrollTo(target, mergeDeep(_options, options), true, goTo)\n }\n\n return go\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"goto.mjs","names":["inject","clamp","consoleWarn","mergeDeep","refElement","GoToSymbol","Symbol","for","genDefaults","container","undefined","duration","layout","offset","easing","patterns","linear","t","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","getContainer","el","getTarget","document","scrollingElement","body","querySelector","getOffset","target","horizontal","rtl","totalOffset","offsetLeft","offsetTop","offsetParent","createGoTo","options","locale","isRtl","scrollTo","_target","_options","goTo","property","value","HTMLElement","parentElement","ease","TypeError","targetLocation","styles","window","getComputedStyle","layoutOffset","getPropertyValue","parseInt","startLocation","Promise","resolve","startTime","performance","now","requestAnimationFrame","step","currentTime","timeElapsed","progress","location","Math","floor","abs","useGoTo","arguments","length","Error","go"],"sources":["../../src/composables/goto.ts"],"sourcesContent":["// Utilities\nimport { inject } from 'vue'\nimport { clamp, consoleWarn, mergeDeep, refElement } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance, InjectionKey, Ref } from 'vue'\nimport type { LocaleInstance, RtlInstance } from './locale'\n\nexport interface GoToInstance {\n rtl: Ref<boolean>\n options: GoToOptions\n}\n\nexport interface GoToOptions {\n container: ComponentPublicInstance | HTMLElement | string\n duration: number\n layout: boolean\n offset: number\n easing: string | ((t: number) => number)\n patterns: Record<string, (t: number) => number>\n}\n\nexport const GoToSymbol: InjectionKey<GoToInstance> = Symbol.for('vuetify:goto')\n\nfunction genDefaults () {\n return {\n container: undefined,\n duration: 300,\n layout: false,\n offset: 0,\n easing: 'easeInOutCubic',\n patterns: {\n linear: (t: number) => t,\n easeInQuad: (t: number) => t ** 2,\n easeOutQuad: (t: number) => t * (2 - t),\n easeInOutQuad: (t: number) => (t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t),\n easeInCubic: (t: number) => t ** 3,\n easeOutCubic: (t: number) => --t ** 3 + 1,\n easeInOutCubic: (t: number) => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,\n easeInQuart: (t: number) => t ** 4,\n easeOutQuart: (t: number) => 1 - --t ** 4,\n easeInOutQuart: (t: number) => (t < 0.5 ? 8 * t ** 4 : 1 - 8 * --t ** 4),\n easeInQuint: (t: number) => t ** 5,\n easeOutQuint: (t: number) => 1 + --t ** 5,\n easeInOutQuint: (t: number) => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5,\n },\n }\n}\n\nfunction getContainer (el?: ComponentPublicInstance | HTMLElement | string) {\n return getTarget(el) ?? (document.scrollingElement || document.body) as HTMLElement\n}\n\nfunction getTarget (el: ComponentPublicInstance | HTMLElement | string | undefined) {\n return (typeof el === 'string') ? document.querySelector<HTMLElement>(el) : refElement(el)\n}\n\nfunction getOffset (target: any, horizontal?: boolean, rtl?: boolean): number {\n if (typeof target === 'number') return horizontal && rtl ? -target : target\n\n let el = getTarget(target)\n let totalOffset = 0\n while (el) {\n totalOffset += horizontal ? el.offsetLeft : el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function createGoTo (options: Partial<GoToOptions> | undefined, locale: LocaleInstance & RtlInstance) {\n return {\n rtl: locale.isRtl,\n options: mergeDeep(genDefaults(), options),\n }\n}\n\nexport async function scrollTo (\n _target: ComponentPublicInstance | HTMLElement | number | string,\n _options: Partial<GoToOptions>,\n horizontal?: boolean,\n goTo?: GoToInstance,\n) {\n const property = horizontal ? 'scrollLeft' : 'scrollTop'\n const options = mergeDeep(goTo?.options ?? genDefaults(), _options)\n const rtl = goTo?.rtl.value\n const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0\n const container = options.container === 'parent' && target instanceof HTMLElement\n ? target.parentElement!\n : getContainer(options.container)\n const ease = typeof options.easing === 'function' ? options.easing : options.patterns[options.easing]\n\n if (!ease) throw new TypeError(`Easing function \"${options.easing}\" not found.`)\n\n let targetLocation: number\n if (typeof target === 'number') {\n targetLocation = getOffset(target, horizontal, rtl)\n } else {\n targetLocation = getOffset(target, horizontal, rtl) - getOffset(container, horizontal, rtl)\n\n if (options.layout) {\n const styles = window.getComputedStyle(target)\n const layoutOffset = styles.getPropertyValue('--v-layout-top')\n\n if (layoutOffset) targetLocation -= parseInt(layoutOffset, 10)\n }\n }\n\n targetLocation += options.offset\n\n const startLocation = container[property] ?? 0\n\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const startTime = performance.now()\n\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = timeElapsed / options.duration\n const location = Math.floor(\n startLocation +\n (targetLocation - startLocation) *\n ease(clamp(progress, 0, 1))\n )\n\n container[property] = location\n\n // Allow for some jitter if target time has elapsed\n if (progress >= 1 && Math.abs(location - container[property]) < 10) {\n return resolve(targetLocation)\n } else if (progress > 2) {\n // The target might not be reachable\n consoleWarn('Scroll target is not reachable')\n return resolve(container[property])\n }\n\n requestAnimationFrame(step)\n }))\n}\n\nexport function useGoTo (_options: Partial<GoToOptions> = {}) {\n const goTo = inject(GoToSymbol)\n\n if (!goTo) throw new Error('[Vuetify] Could not find injected goto instance')\n\n async function go (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) {\n return scrollTo(target, mergeDeep(_options, options), false, goTo)\n }\n\n go.horizontal = async (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) => {\n return scrollTo(target, mergeDeep(_options, options), true, goTo)\n }\n\n return go\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.mjs","names":["useResizeObserver","computed","inject","onActivated","onBeforeUnmount","onDeactivated","onMounted","provide","reactive","ref","shallowRef","convertToUnit","findChildrenWithProvide","getCurrentInstance","getUid","propsFactory","VuetifyLayoutKey","Symbol","for","VuetifyLayoutItemKey","ROOT_ZINDEX","makeLayoutProps","overlaps","type","Array","default","fullHeight","Boolean","makeLayoutItemProps","name","String","order","Number","absolute","useLayout","layout","Error","getLayoutItem","mainRect","mainStyles","useLayoutItem","options","id","vm","isKeptAlive","value","layoutItemStyles","layoutItemScrimStyles","register","active","unregister","layoutRect","generateLayers","positions","layoutSizes","activeItems","previousLayer","top","left","right","bottom","layers","layer","position","get","amount","parseInt","push","createLayout","props","parentLayout","rootZIndex","registered","Map","priorities","disabledTransitions","resizeRef","contentRect","computedOverlaps","map","overlap","filter","item","includes","split","topPosition","bottomPosition","topAmount","bottomAmount","set","uniquePriorities","Set","values","p","sort","a","b","items","transitionsEnabled","from","some","length","undefined","transition","slice","_ref","index","size","find","rootVm","isMounted","_ref2","layoutSize","elementSize","disableTransitions","instances","vnode","instanceIndex","indexOf","splice","findIndex","i","zIndex","isHorizontal","isOppositeHorizontal","isOppositeVertical","styles","transform","height","width","delete","v","layoutClasses","layoutStyles","overflow","layoutRef"],"sources":["../../src/composables/layout.ts"],"sourcesContent":["// Composables\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport {\n computed,\n inject,\n onActivated,\n onBeforeUnmount,\n onDeactivated,\n onMounted,\n provide,\n reactive,\n ref,\n shallowRef,\n} from 'vue'\nimport { convertToUnit, findChildrenWithProvide, getCurrentInstance, getUid, propsFactory } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, CSSProperties, InjectionKey, Prop, Ref } from 'vue'\n\ntype Position = 'top' | 'left' | 'right' | 'bottom'\n\ninterface Layer {\n top: number\n bottom: number\n left: number\n right: number\n}\n\ninterface LayoutItem extends Layer {\n id: string\n size: number\n position: Position\n}\n\ninterface LayoutProvide {\n register: (\n vm: ComponentInternalInstance,\n options: {\n id: string\n order: Ref<number>\n position: Ref<Position>\n layoutSize: Ref<number | string>\n elementSize: Ref<number | string | undefined>\n active: Ref<boolean>\n disableTransitions?: Ref<boolean>\n absolute: Ref<boolean | undefined>\n }\n ) => {\n layoutItemStyles: Ref<CSSProperties>\n layoutItemScrimStyles: Ref<CSSProperties>\n zIndex: Ref<number>\n }\n unregister: (id: string) => void\n mainRect: Ref<Layer>\n mainStyles: Ref<CSSProperties>\n getLayoutItem: (id: string) => LayoutItem | undefined\n items: Ref<LayoutItem[]>\n layoutRect: Ref<DOMRectReadOnly | undefined>\n rootZIndex: Ref<number>\n}\n\nexport const VuetifyLayoutKey: InjectionKey<LayoutProvide> = Symbol.for('vuetify:layout')\nexport const VuetifyLayoutItemKey: InjectionKey<{ id: string }> = Symbol.for('vuetify:layout-item')\n\nconst ROOT_ZINDEX = 1000\n\nexport const makeLayoutProps = propsFactory({\n overlaps: {\n type: Array,\n default: () => ([]),\n } as Prop<string[]>,\n fullHeight: Boolean,\n}, 'layout')\n\n// Composables\nexport const makeLayoutItemProps = propsFactory({\n name: {\n type: String,\n },\n order: {\n type: [Number, String],\n default: 0,\n },\n absolute: Boolean,\n}, 'layout-item')\n\nexport function useLayout () {\n const layout = inject(VuetifyLayoutKey)\n\n if (!layout) throw new Error('[Vuetify] Could not find injected layout')\n\n return {\n getLayoutItem: layout.getLayoutItem,\n mainRect: layout.mainRect,\n mainStyles: layout.mainStyles,\n }\n}\n\nexport function useLayoutItem (options: {\n id: string | undefined\n order: Ref<number>\n position: Ref<Position>\n layoutSize: Ref<number | string>\n elementSize: Ref<number | string | undefined>\n active: Ref<boolean>\n disableTransitions?: Ref<boolean>\n absolute: Ref<boolean | undefined>\n}) {\n const layout = inject(VuetifyLayoutKey)\n\n if (!layout) throw new Error('[Vuetify] Could not find injected layout')\n\n const id = options.id ?? `layout-item-${getUid()}`\n\n const vm = getCurrentInstance('useLayoutItem')\n\n provide(VuetifyLayoutItemKey, { id })\n\n const isKeptAlive = shallowRef(false)\n onDeactivated(() => isKeptAlive.value = true)\n onActivated(() => isKeptAlive.value = false)\n\n const {\n layoutItemStyles,\n layoutItemScrimStyles,\n } = layout.register(vm, {\n ...options,\n active: computed(() => isKeptAlive.value ? false : options.active.value),\n id,\n })\n\n onBeforeUnmount(() => layout.unregister(id))\n\n return { layoutItemStyles, layoutRect: layout.layoutRect, layoutItemScrimStyles }\n}\n\nconst generateLayers = (\n layout: string[],\n positions: Map<string, Ref<Position>>,\n layoutSizes: Map<string, Ref<number | string>>,\n activeItems: Map<string, Ref<boolean>>,\n): { id: string, layer: Layer }[] => {\n let previousLayer: Layer = { top: 0, left: 0, right: 0, bottom: 0 }\n const layers = [{ id: '', layer: { ...previousLayer } }]\n for (const id of layout) {\n const position = positions.get(id)\n const amount = layoutSizes.get(id)\n const active = activeItems.get(id)\n if (!position || !amount || !active) continue\n\n const layer = {\n ...previousLayer,\n [position.value]: parseInt(previousLayer[position.value], 10) + (active.value ? parseInt(amount.value, 10) : 0),\n }\n\n layers.push({\n id,\n layer,\n })\n\n previousLayer = layer\n }\n\n return layers\n}\n\nexport function createLayout (props: { overlaps?: string[], fullHeight?: boolean }) {\n const parentLayout = inject(VuetifyLayoutKey, null)\n const rootZIndex = computed(() => parentLayout ? parentLayout.rootZIndex.value - 100 : ROOT_ZINDEX)\n const registered = ref<string[]>([])\n const positions = reactive(new Map<string, Ref<Position>>())\n const layoutSizes = reactive(new Map<string, Ref<number | string>>())\n const priorities = reactive(new Map<string, Ref<number>>())\n const activeItems = reactive(new Map<string, Ref<boolean>>())\n const disabledTransitions = reactive(new Map<string, Ref<boolean>>())\n const { resizeRef, contentRect: layoutRect } = useResizeObserver()\n\n const computedOverlaps = computed(() => {\n const map = new Map<string, { position: Position, amount: number }>()\n const overlaps = props.overlaps ?? []\n for (const overlap of overlaps.filter(item => item.includes(':'))) {\n const [top, bottom] = overlap.split(':')\n if (!registered.value.includes(top) || !registered.value.includes(bottom)) continue\n\n const topPosition = positions.get(top)\n const bottomPosition = positions.get(bottom)\n const topAmount = layoutSizes.get(top)\n const bottomAmount = layoutSizes.get(bottom)\n\n if (!topPosition || !bottomPosition || !topAmount || !bottomAmount) continue\n\n map.set(bottom, { position: topPosition.value, amount: parseInt(topAmount.value, 10) })\n map.set(top, { position: bottomPosition.value, amount: -parseInt(bottomAmount.value, 10) })\n }\n\n return map\n })\n\n const layers = computed(() => {\n const uniquePriorities = [...new Set([...priorities.values()].map(p => p.value))].sort((a, b) => a - b)\n const layout = []\n for (const p of uniquePriorities) {\n const items = registered.value.filter(id => priorities.get(id)?.value === p)\n layout.push(...items)\n }\n return generateLayers(layout, positions, layoutSizes, activeItems)\n })\n\n const transitionsEnabled = computed(() => {\n return !Array.from(disabledTransitions.values()).some(ref => ref.value)\n })\n\n const mainRect = computed(() => {\n return layers.value[layers.value.length - 1].layer\n })\n\n const mainStyles = computed<CSSProperties>(() => {\n return {\n '--v-layout-left': convertToUnit(mainRect.value.left),\n '--v-layout-right': convertToUnit(mainRect.value.right),\n '--v-layout-top': convertToUnit(mainRect.value.top),\n '--v-layout-bottom': convertToUnit(mainRect.value.bottom),\n ...(transitionsEnabled.value ? undefined : { transition: 'none' }),\n }\n })\n\n const items = computed(() => {\n return layers.value.slice(1).map(({ id }, index) => {\n const { layer } = layers.value[index]\n const size = layoutSizes.get(id)\n const position = positions.get(id)\n\n return {\n id,\n ...layer,\n size: Number(size!.value),\n position: position!.value,\n }\n })\n })\n\n const getLayoutItem = (id: string) => {\n return items.value.find(item => item.id === id)\n }\n\n const rootVm = getCurrentInstance('createLayout')\n\n const isMounted = shallowRef(false)\n onMounted(() => {\n isMounted.value = true\n })\n\n provide(VuetifyLayoutKey, {\n register: (\n vm: ComponentInternalInstance,\n {\n id,\n order,\n position,\n layoutSize,\n elementSize,\n active,\n disableTransitions,\n absolute,\n }\n ) => {\n priorities.set(id, order)\n positions.set(id, position)\n layoutSizes.set(id, layoutSize)\n activeItems.set(id, active)\n disableTransitions && disabledTransitions.set(id, disableTransitions)\n\n const instances = findChildrenWithProvide(VuetifyLayoutItemKey, rootVm?.vnode)\n const instanceIndex = instances.indexOf(vm)\n\n if (instanceIndex > -1) registered.value.splice(instanceIndex, 0, id)\n else registered.value.push(id)\n\n const index = computed(() => items.value.findIndex(i => i.id === id))\n const zIndex = computed(() => rootZIndex.value + (layers.value.length * 2) - (index.value * 2))\n\n const layoutItemStyles = computed<CSSProperties>(() => {\n const isHorizontal = position.value === 'left' || position.value === 'right'\n const isOppositeHorizontal = position.value === 'right'\n const isOppositeVertical = position.value === 'bottom'\n\n const styles = {\n [position.value]: 0,\n zIndex: zIndex.value,\n transform: `translate${isHorizontal ? 'X' : 'Y'}(${(active.value ? 0 : -110) * (isOppositeHorizontal || isOppositeVertical ? -1 : 1)}%)`,\n position: absolute.value || rootZIndex.value !== ROOT_ZINDEX ? 'absolute' : 'fixed',\n ...(transitionsEnabled.value ? undefined : { transition: 'none' }),\n } as const\n\n if (!isMounted.value) return styles\n\n const item = items.value[index.value]\n\n if (!item) throw new Error(`[Vuetify] Could not find layout item \"${id}\"`)\n\n const overlap = computedOverlaps.value.get(id)\n if (overlap) {\n item[overlap.position] += overlap.amount\n }\n\n return {\n ...styles,\n height:\n isHorizontal ? `calc(100% - ${item.top}px - ${item.bottom}px)`\n : elementSize.value ? `${elementSize.value}px`\n : undefined,\n left: isOppositeHorizontal ? undefined : `${item.left}px`,\n right: isOppositeHorizontal ? `${item.right}px` : undefined,\n top: position.value !== 'bottom' ? `${item.top}px` : undefined,\n bottom: position.value !== 'top' ? `${item.bottom}px` : undefined,\n width:\n !isHorizontal ? `calc(100% - ${item.left}px - ${item.right}px)`\n : elementSize.value ? `${elementSize.value}px`\n : undefined,\n }\n })\n\n const layoutItemScrimStyles = computed<CSSProperties>(() => ({\n zIndex: zIndex.value - 1,\n }))\n\n return { layoutItemStyles, layoutItemScrimStyles, zIndex }\n },\n unregister: (id: string) => {\n priorities.delete(id)\n positions.delete(id)\n layoutSizes.delete(id)\n activeItems.delete(id)\n disabledTransitions.delete(id)\n registered.value = registered.value.filter(v => v !== id)\n },\n mainRect,\n mainStyles,\n getLayoutItem,\n items,\n layoutRect,\n rootZIndex,\n })\n\n const layoutClasses = computed(() => [\n 'v-layout',\n { 'v-layout--full-height': props.fullHeight },\n ])\n\n const layoutStyles = computed(() => ({\n zIndex: parentLayout ? rootZIndex.value : undefined,\n position: parentLayout ? 'relative' as const : undefined,\n overflow: parentLayout ? 'hidden' : undefined,\n }))\n\n return {\n layoutClasses,\n layoutStyles,\n getLayoutItem,\n items,\n layoutRect,\n layoutRef: resizeRef,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"layout.mjs","names":["useResizeObserver","computed","inject","onActivated","onBeforeUnmount","onDeactivated","onMounted","provide","reactive","ref","shallowRef","convertToUnit","findChildrenWithProvide","getCurrentInstance","getUid","propsFactory","VuetifyLayoutKey","Symbol","for","VuetifyLayoutItemKey","ROOT_ZINDEX","makeLayoutProps","overlaps","type","Array","default","fullHeight","Boolean","makeLayoutItemProps","name","String","order","Number","absolute","useLayout","layout","Error","getLayoutItem","mainRect","mainStyles","useLayoutItem","options","id","vm","isKeptAlive","value","layoutItemStyles","layoutItemScrimStyles","register","active","unregister","layoutRect","generateLayers","positions","layoutSizes","activeItems","previousLayer","top","left","right","bottom","layers","layer","position","get","amount","parseInt","push","createLayout","props","parentLayout","rootZIndex","registered","Map","priorities","disabledTransitions","resizeRef","contentRect","computedOverlaps","map","overlap","filter","item","includes","split","topPosition","bottomPosition","topAmount","bottomAmount","set","uniquePriorities","Set","values","p","sort","a","b","items","transitionsEnabled","from","some","length","undefined","transition","slice","_ref","index","size","find","rootVm","isMounted","_ref2","layoutSize","elementSize","disableTransitions","instances","vnode","instanceIndex","indexOf","splice","findIndex","i","zIndex","isHorizontal","isOppositeHorizontal","isOppositeVertical","styles","transform","height","width","delete","v","layoutClasses","layoutStyles","overflow","layoutRef"],"sources":["../../src/composables/layout.ts"],"sourcesContent":["// Composables\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport {\n computed,\n inject,\n onActivated,\n onBeforeUnmount,\n onDeactivated,\n onMounted,\n provide,\n reactive,\n ref,\n shallowRef,\n} from 'vue'\nimport { convertToUnit, findChildrenWithProvide, getCurrentInstance, getUid, propsFactory } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, CSSProperties, InjectionKey, Prop, Ref } from 'vue'\n\nexport type Position = 'top' | 'left' | 'right' | 'bottom'\n\ninterface Layer {\n top: number\n bottom: number\n left: number\n right: number\n}\n\ninterface LayoutItem extends Layer {\n id: string\n size: number\n position: Position\n}\n\ninterface LayoutProvide {\n register: (\n vm: ComponentInternalInstance,\n options: {\n id: string\n order: Ref<number>\n position: Ref<Position>\n layoutSize: Ref<number | string>\n elementSize: Ref<number | string | undefined>\n active: Ref<boolean>\n disableTransitions?: Ref<boolean>\n absolute: Ref<boolean | undefined>\n }\n ) => {\n layoutItemStyles: Ref<CSSProperties>\n layoutItemScrimStyles: Ref<CSSProperties>\n zIndex: Ref<number>\n }\n unregister: (id: string) => void\n mainRect: Ref<Layer>\n mainStyles: Ref<CSSProperties>\n getLayoutItem: (id: string) => LayoutItem | undefined\n items: Ref<LayoutItem[]>\n layoutRect: Ref<DOMRectReadOnly | undefined>\n rootZIndex: Ref<number>\n}\n\nexport const VuetifyLayoutKey: InjectionKey<LayoutProvide> = Symbol.for('vuetify:layout')\nexport const VuetifyLayoutItemKey: InjectionKey<{ id: string }> = Symbol.for('vuetify:layout-item')\n\nconst ROOT_ZINDEX = 1000\n\nexport const makeLayoutProps = propsFactory({\n overlaps: {\n type: Array,\n default: () => ([]),\n } as Prop<string[]>,\n fullHeight: Boolean,\n}, 'layout')\n\n// Composables\nexport const makeLayoutItemProps = propsFactory({\n name: {\n type: String,\n },\n order: {\n type: [Number, String],\n default: 0,\n },\n absolute: Boolean,\n}, 'layout-item')\n\nexport function useLayout () {\n const layout = inject(VuetifyLayoutKey)\n\n if (!layout) throw new Error('[Vuetify] Could not find injected layout')\n\n return {\n getLayoutItem: layout.getLayoutItem,\n mainRect: layout.mainRect,\n mainStyles: layout.mainStyles,\n }\n}\n\nexport function useLayoutItem (options: {\n id: string | undefined\n order: Ref<number>\n position: Ref<Position>\n layoutSize: Ref<number | string>\n elementSize: Ref<number | string | undefined>\n active: Ref<boolean>\n disableTransitions?: Ref<boolean>\n absolute: Ref<boolean | undefined>\n}) {\n const layout = inject(VuetifyLayoutKey)\n\n if (!layout) throw new Error('[Vuetify] Could not find injected layout')\n\n const id = options.id ?? `layout-item-${getUid()}`\n\n const vm = getCurrentInstance('useLayoutItem')\n\n provide(VuetifyLayoutItemKey, { id })\n\n const isKeptAlive = shallowRef(false)\n onDeactivated(() => isKeptAlive.value = true)\n onActivated(() => isKeptAlive.value = false)\n\n const {\n layoutItemStyles,\n layoutItemScrimStyles,\n } = layout.register(vm, {\n ...options,\n active: computed(() => isKeptAlive.value ? false : options.active.value),\n id,\n })\n\n onBeforeUnmount(() => layout.unregister(id))\n\n return { layoutItemStyles, layoutRect: layout.layoutRect, layoutItemScrimStyles }\n}\n\nconst generateLayers = (\n layout: string[],\n positions: Map<string, Ref<Position>>,\n layoutSizes: Map<string, Ref<number | string>>,\n activeItems: Map<string, Ref<boolean>>,\n): { id: string, layer: Layer }[] => {\n let previousLayer: Layer = { top: 0, left: 0, right: 0, bottom: 0 }\n const layers = [{ id: '', layer: { ...previousLayer } }]\n for (const id of layout) {\n const position = positions.get(id)\n const amount = layoutSizes.get(id)\n const active = activeItems.get(id)\n if (!position || !amount || !active) continue\n\n const layer = {\n ...previousLayer,\n [position.value]: parseInt(previousLayer[position.value], 10) + (active.value ? parseInt(amount.value, 10) : 0),\n }\n\n layers.push({\n id,\n layer,\n })\n\n previousLayer = layer\n }\n\n return layers\n}\n\nexport function createLayout (props: { overlaps?: string[], fullHeight?: boolean }) {\n const parentLayout = inject(VuetifyLayoutKey, null)\n const rootZIndex = computed(() => parentLayout ? parentLayout.rootZIndex.value - 100 : ROOT_ZINDEX)\n const registered = ref<string[]>([])\n const positions = reactive(new Map<string, Ref<Position>>())\n const layoutSizes = reactive(new Map<string, Ref<number | string>>())\n const priorities = reactive(new Map<string, Ref<number>>())\n const activeItems = reactive(new Map<string, Ref<boolean>>())\n const disabledTransitions = reactive(new Map<string, Ref<boolean>>())\n const { resizeRef, contentRect: layoutRect } = useResizeObserver()\n\n const computedOverlaps = computed(() => {\n const map = new Map<string, { position: Position, amount: number }>()\n const overlaps = props.overlaps ?? []\n for (const overlap of overlaps.filter(item => item.includes(':'))) {\n const [top, bottom] = overlap.split(':')\n if (!registered.value.includes(top) || !registered.value.includes(bottom)) continue\n\n const topPosition = positions.get(top)\n const bottomPosition = positions.get(bottom)\n const topAmount = layoutSizes.get(top)\n const bottomAmount = layoutSizes.get(bottom)\n\n if (!topPosition || !bottomPosition || !topAmount || !bottomAmount) continue\n\n map.set(bottom, { position: topPosition.value, amount: parseInt(topAmount.value, 10) })\n map.set(top, { position: bottomPosition.value, amount: -parseInt(bottomAmount.value, 10) })\n }\n\n return map\n })\n\n const layers = computed(() => {\n const uniquePriorities = [...new Set([...priorities.values()].map(p => p.value))].sort((a, b) => a - b)\n const layout = []\n for (const p of uniquePriorities) {\n const items = registered.value.filter(id => priorities.get(id)?.value === p)\n layout.push(...items)\n }\n return generateLayers(layout, positions, layoutSizes, activeItems)\n })\n\n const transitionsEnabled = computed(() => {\n return !Array.from(disabledTransitions.values()).some(ref => ref.value)\n })\n\n const mainRect = computed(() => {\n return layers.value[layers.value.length - 1].layer\n })\n\n const mainStyles = computed<CSSProperties>(() => {\n return {\n '--v-layout-left': convertToUnit(mainRect.value.left),\n '--v-layout-right': convertToUnit(mainRect.value.right),\n '--v-layout-top': convertToUnit(mainRect.value.top),\n '--v-layout-bottom': convertToUnit(mainRect.value.bottom),\n ...(transitionsEnabled.value ? undefined : { transition: 'none' }),\n }\n })\n\n const items = computed(() => {\n return layers.value.slice(1).map(({ id }, index) => {\n const { layer } = layers.value[index]\n const size = layoutSizes.get(id)\n const position = positions.get(id)\n\n return {\n id,\n ...layer,\n size: Number(size!.value),\n position: position!.value,\n }\n })\n })\n\n const getLayoutItem = (id: string) => {\n return items.value.find(item => item.id === id)\n }\n\n const rootVm = getCurrentInstance('createLayout')\n\n const isMounted = shallowRef(false)\n onMounted(() => {\n isMounted.value = true\n })\n\n provide(VuetifyLayoutKey, {\n register: (\n vm: ComponentInternalInstance,\n {\n id,\n order,\n position,\n layoutSize,\n elementSize,\n active,\n disableTransitions,\n absolute,\n }\n ) => {\n priorities.set(id, order)\n positions.set(id, position)\n layoutSizes.set(id, layoutSize)\n activeItems.set(id, active)\n disableTransitions && disabledTransitions.set(id, disableTransitions)\n\n const instances = findChildrenWithProvide(VuetifyLayoutItemKey, rootVm?.vnode)\n const instanceIndex = instances.indexOf(vm)\n\n if (instanceIndex > -1) registered.value.splice(instanceIndex, 0, id)\n else registered.value.push(id)\n\n const index = computed(() => items.value.findIndex(i => i.id === id))\n const zIndex = computed(() => rootZIndex.value + (layers.value.length * 2) - (index.value * 2))\n\n const layoutItemStyles = computed<CSSProperties>(() => {\n const isHorizontal = position.value === 'left' || position.value === 'right'\n const isOppositeHorizontal = position.value === 'right'\n const isOppositeVertical = position.value === 'bottom'\n\n const styles = {\n [position.value]: 0,\n zIndex: zIndex.value,\n transform: `translate${isHorizontal ? 'X' : 'Y'}(${(active.value ? 0 : -110) * (isOppositeHorizontal || isOppositeVertical ? -1 : 1)}%)`,\n position: absolute.value || rootZIndex.value !== ROOT_ZINDEX ? 'absolute' : 'fixed',\n ...(transitionsEnabled.value ? undefined : { transition: 'none' }),\n } as const\n\n if (!isMounted.value) return styles\n\n const item = items.value[index.value]\n\n if (!item) throw new Error(`[Vuetify] Could not find layout item \"${id}\"`)\n\n const overlap = computedOverlaps.value.get(id)\n if (overlap) {\n item[overlap.position] += overlap.amount\n }\n\n return {\n ...styles,\n height:\n isHorizontal ? `calc(100% - ${item.top}px - ${item.bottom}px)`\n : elementSize.value ? `${elementSize.value}px`\n : undefined,\n left: isOppositeHorizontal ? undefined : `${item.left}px`,\n right: isOppositeHorizontal ? `${item.right}px` : undefined,\n top: position.value !== 'bottom' ? `${item.top}px` : undefined,\n bottom: position.value !== 'top' ? `${item.bottom}px` : undefined,\n width:\n !isHorizontal ? `calc(100% - ${item.left}px - ${item.right}px)`\n : elementSize.value ? `${elementSize.value}px`\n : undefined,\n }\n })\n\n const layoutItemScrimStyles = computed<CSSProperties>(() => ({\n zIndex: zIndex.value - 1,\n }))\n\n return { layoutItemStyles, layoutItemScrimStyles, zIndex }\n },\n unregister: (id: string) => {\n priorities.delete(id)\n positions.delete(id)\n layoutSizes.delete(id)\n activeItems.delete(id)\n disabledTransitions.delete(id)\n registered.value = registered.value.filter(v => v !== id)\n },\n mainRect,\n mainStyles,\n getLayoutItem,\n items,\n layoutRect,\n rootZIndex,\n })\n\n const layoutClasses = computed(() => [\n 'v-layout',\n { 'v-layout--full-height': props.fullHeight },\n ])\n\n const layoutStyles = computed(() => ({\n zIndex: parentLayout ? rootZIndex.value : undefined,\n position: parentLayout ? 'relative' as const : undefined,\n overflow: parentLayout ? 'hidden' : undefined,\n }))\n\n return {\n layoutClasses,\n layoutStyles,\n getLayoutItem,\n items,\n layoutRect,\n layoutRef: resizeRef,\n }\n}\n"],"mappings":"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"}
|
package/lib/entry-bundler.mjs
CHANGED
package/lib/framework.mjs
CHANGED
package/lib/index.d.mts
CHANGED
|
@@ -515,26 +515,25 @@ declare module '@vue/runtime-core' {
|
|
|
515
515
|
}
|
|
516
516
|
|
|
517
517
|
export interface GlobalComponents {
|
|
518
|
-
VApp: typeof import('vuetify/components')['VApp']
|
|
519
518
|
VAppBar: typeof import('vuetify/components')['VAppBar']
|
|
520
519
|
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
|
521
520
|
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
|
521
|
+
VApp: typeof import('vuetify/components')['VApp']
|
|
522
522
|
VAlert: typeof import('vuetify/components')['VAlert']
|
|
523
523
|
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
|
524
524
|
VAvatar: typeof import('vuetify/components')['VAvatar']
|
|
525
|
-
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
|
526
525
|
VBadge: typeof import('vuetify/components')['VBadge']
|
|
526
|
+
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
|
527
|
+
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
|
528
|
+
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
|
527
529
|
VBanner: typeof import('vuetify/components')['VBanner']
|
|
528
530
|
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
|
529
531
|
VBannerText: typeof import('vuetify/components')['VBannerText']
|
|
530
|
-
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
|
531
|
-
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
|
532
|
-
VBtn: typeof import('vuetify/components')['VBtn']
|
|
533
532
|
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
|
534
533
|
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
|
535
534
|
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
|
536
|
-
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
|
537
535
|
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
|
536
|
+
VBtn: typeof import('vuetify/components')['VBtn']
|
|
538
537
|
VCarousel: typeof import('vuetify/components')['VCarousel']
|
|
539
538
|
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
|
540
539
|
VCard: typeof import('vuetify/components')['VCard']
|
|
@@ -543,48 +542,49 @@ declare module '@vue/runtime-core' {
|
|
|
543
542
|
VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
|
|
544
543
|
VCardText: typeof import('vuetify/components')['VCardText']
|
|
545
544
|
VCardTitle: typeof import('vuetify/components')['VCardTitle']
|
|
546
|
-
|
|
547
|
-
VCode: typeof import('vuetify/components')['VCode']
|
|
545
|
+
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
|
548
546
|
VCheckbox: typeof import('vuetify/components')['VCheckbox']
|
|
549
547
|
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
|
|
550
|
-
|
|
548
|
+
VChip: typeof import('vuetify/components')['VChip']
|
|
551
549
|
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
|
552
|
-
|
|
550
|
+
VCode: typeof import('vuetify/components')['VCode']
|
|
553
551
|
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
|
554
|
-
|
|
555
|
-
VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
|
|
556
|
-
VDataTableRows: typeof import('vuetify/components')['VDataTableRows']
|
|
557
|
-
VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
|
|
558
|
-
VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
|
|
559
|
-
VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
|
|
552
|
+
VCombobox: typeof import('vuetify/components')['VCombobox']
|
|
560
553
|
VDatePicker: typeof import('vuetify/components')['VDatePicker']
|
|
561
554
|
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
|
|
562
555
|
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
|
|
563
556
|
VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
|
|
564
557
|
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
|
|
565
558
|
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
|
|
559
|
+
VDataTable: typeof import('vuetify/components')['VDataTable']
|
|
560
|
+
VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
|
|
561
|
+
VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
|
|
562
|
+
VDataTableRows: typeof import('vuetify/components')['VDataTableRows']
|
|
563
|
+
VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
|
|
564
|
+
VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
|
|
565
|
+
VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
|
|
566
|
+
VCounter: typeof import('vuetify/components')['VCounter']
|
|
566
567
|
VDialog: typeof import('vuetify/components')['VDialog']
|
|
568
|
+
VField: typeof import('vuetify/components')['VField']
|
|
569
|
+
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
|
567
570
|
VDivider: typeof import('vuetify/components')['VDivider']
|
|
571
|
+
VFileInput: typeof import('vuetify/components')['VFileInput']
|
|
572
|
+
VFooter: typeof import('vuetify/components')['VFooter']
|
|
568
573
|
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
|
569
574
|
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
|
570
575
|
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
|
|
571
576
|
VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
|
|
572
|
-
VField: typeof import('vuetify/components')['VField']
|
|
573
|
-
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
|
574
|
-
VFileInput: typeof import('vuetify/components')['VFileInput']
|
|
575
577
|
VIcon: typeof import('vuetify/components')['VIcon']
|
|
576
578
|
VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
|
|
577
579
|
VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
|
|
578
580
|
VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
|
|
579
581
|
VClassIcon: typeof import('vuetify/components')['VClassIcon']
|
|
580
|
-
VFooter: typeof import('vuetify/components')['VFooter']
|
|
581
582
|
VImg: typeof import('vuetify/components')['VImg']
|
|
582
|
-
|
|
583
|
+
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
|
583
584
|
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
|
584
585
|
VItem: typeof import('vuetify/components')['VItem']
|
|
585
|
-
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
|
586
586
|
VKbd: typeof import('vuetify/components')['VKbd']
|
|
587
|
-
|
|
587
|
+
VInput: typeof import('vuetify/components')['VInput']
|
|
588
588
|
VList: typeof import('vuetify/components')['VList']
|
|
589
589
|
VListGroup: typeof import('vuetify/components')['VListGroup']
|
|
590
590
|
VListImg: typeof import('vuetify/components')['VListImg']
|
|
@@ -594,45 +594,46 @@ declare module '@vue/runtime-core' {
|
|
|
594
594
|
VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
|
|
595
595
|
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
|
|
596
596
|
VListSubheader: typeof import('vuetify/components')['VListSubheader']
|
|
597
|
-
|
|
598
|
-
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
|
597
|
+
VLabel: typeof import('vuetify/components')['VLabel']
|
|
599
598
|
VMenu: typeof import('vuetify/components')['VMenu']
|
|
599
|
+
VMain: typeof import('vuetify/components')['VMain']
|
|
600
600
|
VMessages: typeof import('vuetify/components')['VMessages']
|
|
601
|
-
|
|
601
|
+
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
|
602
602
|
VOverlay: typeof import('vuetify/components')['VOverlay']
|
|
603
|
+
VOtpInput: typeof import('vuetify/components')['VOtpInput']
|
|
603
604
|
VPagination: typeof import('vuetify/components')['VPagination']
|
|
604
605
|
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
|
605
|
-
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
|
606
606
|
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
|
607
|
-
|
|
607
|
+
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
|
608
608
|
VSelect: typeof import('vuetify/components')['VSelect']
|
|
609
609
|
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
|
610
|
-
|
|
610
|
+
VRating: typeof import('vuetify/components')['VRating']
|
|
611
611
|
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
|
612
|
-
VSlider: typeof import('vuetify/components')['VSlider']
|
|
613
612
|
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
|
614
613
|
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
|
615
614
|
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
|
615
|
+
VSlider: typeof import('vuetify/components')['VSlider']
|
|
616
616
|
VStepper: typeof import('vuetify/components')['VStepper']
|
|
617
617
|
VStepperActions: typeof import('vuetify/components')['VStepperActions']
|
|
618
618
|
VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
|
|
619
619
|
VStepperItem: typeof import('vuetify/components')['VStepperItem']
|
|
620
620
|
VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
|
|
621
621
|
VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
|
|
622
|
+
VSheet: typeof import('vuetify/components')['VSheet']
|
|
622
623
|
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
|
623
|
-
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
|
624
624
|
VSwitch: typeof import('vuetify/components')['VSwitch']
|
|
625
625
|
VTable: typeof import('vuetify/components')['VTable']
|
|
626
|
-
VTextarea: typeof import('vuetify/components')['VTextarea']
|
|
627
|
-
VTextField: typeof import('vuetify/components')['VTextField']
|
|
628
626
|
VTabs: typeof import('vuetify/components')['VTabs']
|
|
629
627
|
VTab: typeof import('vuetify/components')['VTab']
|
|
628
|
+
VTextField: typeof import('vuetify/components')['VTextField']
|
|
629
|
+
VTextarea: typeof import('vuetify/components')['VTextarea']
|
|
630
|
+
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
|
630
631
|
VToolbar: typeof import('vuetify/components')['VToolbar']
|
|
631
632
|
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
|
|
632
633
|
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
|
|
634
|
+
VTooltip: typeof import('vuetify/components')['VTooltip']
|
|
633
635
|
VTimeline: typeof import('vuetify/components')['VTimeline']
|
|
634
636
|
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
|
635
|
-
VTooltip: typeof import('vuetify/components')['VTooltip']
|
|
636
637
|
VWindow: typeof import('vuetify/components')['VWindow']
|
|
637
638
|
VWindowItem: typeof import('vuetify/components')['VWindowItem']
|
|
638
639
|
VDataIterator: typeof import('vuetify/components')['VDataIterator']
|
|
@@ -643,18 +644,18 @@ declare module '@vue/runtime-core' {
|
|
|
643
644
|
VSpacer: typeof import('vuetify/components')['VSpacer']
|
|
644
645
|
VForm: typeof import('vuetify/components')['VForm']
|
|
645
646
|
VHover: typeof import('vuetify/components')['VHover']
|
|
647
|
+
VLazy: typeof import('vuetify/components')['VLazy']
|
|
646
648
|
VLayout: typeof import('vuetify/components')['VLayout']
|
|
647
649
|
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
|
|
648
|
-
VLazy: typeof import('vuetify/components')['VLazy']
|
|
649
650
|
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
|
650
651
|
VNoSsr: typeof import('vuetify/components')['VNoSsr']
|
|
651
652
|
VParallax: typeof import('vuetify/components')['VParallax']
|
|
652
653
|
VRadio: typeof import('vuetify/components')['VRadio']
|
|
653
|
-
VResponsive: typeof import('vuetify/components')['VResponsive']
|
|
654
654
|
VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
|
|
655
|
+
VResponsive: typeof import('vuetify/components')['VResponsive']
|
|
656
|
+
VValidation: typeof import('vuetify/components')['VValidation']
|
|
655
657
|
VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
|
|
656
658
|
VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
|
|
657
|
-
VValidation: typeof import('vuetify/components')['VValidation']
|
|
658
659
|
VFabTransition: typeof import('vuetify/components')['VFabTransition']
|
|
659
660
|
VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
|
|
660
661
|
VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
|
|
@@ -671,14 +672,16 @@ declare module '@vue/runtime-core' {
|
|
|
671
672
|
VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
|
|
672
673
|
VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
|
|
673
674
|
VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
|
|
674
|
-
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
|
675
|
-
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
|
676
675
|
VCalendar: typeof import('vuetify/labs/components')['VCalendar']
|
|
677
676
|
VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
|
|
678
677
|
VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
|
|
679
678
|
VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
|
|
680
679
|
VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
|
|
681
680
|
VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
|
|
681
|
+
VFab: typeof import('vuetify/labs/components')['VFab']
|
|
682
|
+
VEmptyState: typeof import('vuetify/labs/components')['VEmptyState']
|
|
683
|
+
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
|
684
|
+
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
|
682
685
|
VConfirmEdit: typeof import('vuetify/labs/components')['VConfirmEdit']
|
|
683
686
|
VSparkline: typeof import('vuetify/labs/components')['VSparkline']
|
|
684
687
|
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
.v-empty-state {
|
|
2
|
+
align-items: center;
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
justify-content: center;
|
|
6
|
+
min-height: 100%;
|
|
7
|
+
padding: 16px;
|
|
8
|
+
}
|
|
9
|
+
.v-empty-state--start {
|
|
10
|
+
align-items: flex-start;
|
|
11
|
+
}
|
|
12
|
+
.v-empty-state--center {
|
|
13
|
+
align-items: center;
|
|
14
|
+
}
|
|
15
|
+
.v-empty-state--end {
|
|
16
|
+
align-items: flex-end;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.v-empty-state__media {
|
|
20
|
+
text-align: center;
|
|
21
|
+
width: 100%;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.v-empty-state__headline {
|
|
25
|
+
color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
|
|
26
|
+
font-size: 3.75rem;
|
|
27
|
+
font-weight: 300;
|
|
28
|
+
line-height: 3.75rem;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.v-empty-state__title {
|
|
32
|
+
font-size: 1.25rem;
|
|
33
|
+
font-weight: 500;
|
|
34
|
+
line-height: 2rem;
|
|
35
|
+
text-align: center;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.v-empty-state__text {
|
|
39
|
+
font-size: 1rem;
|
|
40
|
+
font-weight: 400;
|
|
41
|
+
line-height: 1.5rem;
|
|
42
|
+
padding: 0 16px;
|
|
43
|
+
text-align: center;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.v-empty-state__content {
|
|
47
|
+
padding: 24px 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.v-empty-state__actions {
|
|
51
|
+
display: flex;
|
|
52
|
+
gap: 8px;
|
|
53
|
+
padding: 16px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.v-empty-state__action-btn.v-btn {
|
|
57
|
+
background-color: rgb(var(--v-theme-surface-variant));
|
|
58
|
+
color: rgb(var(--v-theme-on-surface-variant));
|
|
59
|
+
}
|