@vuetify/nightly 3.3.5-master.2023-06-21 → 3.3.5-pr-17265.042d482
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/CHANGELOG.md +21 -2
- package/dist/json/attributes.json +4 -0
- package/dist/json/importMap.json +4 -4
- package/dist/json/tags.json +1 -0
- package/dist/json/web-types.json +16 -14
- package/dist/vuetify-labs.css +57 -57
- package/dist/vuetify-labs.d.ts +80 -20
- package/dist/vuetify-labs.esm.js +460 -326
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +459 -325
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +19 -19
- package/dist/vuetify.d.ts +37 -15
- package/dist/vuetify.esm.js +448 -316
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +447 -315
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +675 -656
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +48 -35
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +48 -35
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.mjs +43 -31
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/useScrolling.mjs +69 -0
- package/lib/components/VSelect/useScrolling.mjs.map +1 -0
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs +50 -24
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs +13 -23
- package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
- package/lib/components/VVirtualScroll/index.d.mts +37 -15
- package/lib/components/index.d.mts +36 -14
- package/lib/composables/filter.mjs +6 -4
- package/lib/composables/filter.mjs.map +1 -1
- package/lib/composables/resizeObserver.mjs +6 -1
- package/lib/composables/resizeObserver.mjs.map +1 -1
- package/lib/composables/virtual.mjs +17 -17
- package/lib/composables/virtual.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/entry-bundler.mjs.map +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.mts +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +12 -10
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.mts +44 -6
- package/lib/labs/components.d.mts +44 -6
- package/lib/util/getScrollParent.mjs +7 -1
- package/lib/util/getScrollParent.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createVNode as _createVNode } from "vue";
|
|
1
|
+
import { Fragment as _Fragment, createVNode as _createVNode } from "vue";
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VVirtualScroll.css";
|
|
4
4
|
|
|
@@ -6,14 +6,16 @@ import "./VVirtualScroll.css";
|
|
|
6
6
|
import { VVirtualScrollItem } from "./VVirtualScrollItem.mjs"; // Composables
|
|
7
7
|
import { makeComponentProps } from "../../composables/component.mjs";
|
|
8
8
|
import { makeDimensionProps, useDimension } from "../../composables/dimensions.mjs";
|
|
9
|
+
import { useToggleScope } from "../../composables/toggleScope.mjs";
|
|
9
10
|
import { makeVirtualProps, useVirtual } from "../../composables/virtual.mjs"; // Utilities
|
|
10
|
-
import { toRef } from 'vue';
|
|
11
|
-
import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
11
|
+
import { onMounted, onScopeDispose, toRef } from 'vue';
|
|
12
|
+
import { convertToUnit, genericComponent, getCurrentInstance, getScrollParent, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
12
13
|
export const makeVVirtualScrollProps = propsFactory({
|
|
13
14
|
items: {
|
|
14
15
|
type: Array,
|
|
15
16
|
default: () => []
|
|
16
17
|
},
|
|
18
|
+
renderless: Boolean,
|
|
17
19
|
...makeVirtualProps(),
|
|
18
20
|
...makeComponentProps(),
|
|
19
21
|
...makeDimensionProps()
|
|
@@ -25,6 +27,7 @@ export const VVirtualScroll = genericComponent()({
|
|
|
25
27
|
let {
|
|
26
28
|
slots
|
|
27
29
|
} = _ref;
|
|
30
|
+
const vm = getCurrentInstance('VVirtualScroll');
|
|
28
31
|
const {
|
|
29
32
|
dimensionStyles
|
|
30
33
|
} = useDimension(props);
|
|
@@ -37,27 +40,50 @@ export const VVirtualScroll = genericComponent()({
|
|
|
37
40
|
paddingBottom,
|
|
38
41
|
computedItems
|
|
39
42
|
} = useVirtual(props, toRef(props, 'items'));
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
43
|
+
useToggleScope(() => props.renderless, () => {
|
|
44
|
+
onMounted(() => {
|
|
45
|
+
containerRef.value = getScrollParent(vm.vnode.el, true);
|
|
46
|
+
containerRef.value?.addEventListener('scroll', handleScroll);
|
|
47
|
+
});
|
|
48
|
+
onScopeDispose(() => {
|
|
49
|
+
containerRef.value?.removeEventListener('scroll', handleScroll);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
useRender(() => {
|
|
53
|
+
const children = computedItems.value.map(item => _createVNode(VVirtualScrollItem, {
|
|
54
|
+
"key": item.index,
|
|
55
|
+
"renderless": props.renderless,
|
|
56
|
+
"onUpdate:height": height => handleItemResize(item.index, height)
|
|
57
|
+
}, {
|
|
58
|
+
default: slotProps => slots.default?.({
|
|
59
|
+
item: item.raw,
|
|
60
|
+
index: item.index,
|
|
61
|
+
...slotProps
|
|
62
|
+
})
|
|
63
|
+
}));
|
|
64
|
+
return props.renderless ? _createVNode(_Fragment, null, [_createVNode("div", {
|
|
65
|
+
"class": "v-virtual-scroll__spacer",
|
|
66
|
+
"style": {
|
|
67
|
+
paddingTop: convertToUnit(paddingTop.value)
|
|
68
|
+
}
|
|
69
|
+
}, null), children, _createVNode("div", {
|
|
70
|
+
"class": "v-virtual-scroll__spacer",
|
|
71
|
+
"style": {
|
|
72
|
+
paddingBottom: convertToUnit(paddingBottom.value)
|
|
73
|
+
}
|
|
74
|
+
}, null)]) : _createVNode("div", {
|
|
75
|
+
"ref": containerRef,
|
|
76
|
+
"class": ['v-virtual-scroll', props.class],
|
|
77
|
+
"onScroll": handleScroll,
|
|
78
|
+
"style": [dimensionStyles.value, props.style]
|
|
79
|
+
}, [_createVNode("div", {
|
|
80
|
+
"class": "v-virtual-scroll__container",
|
|
81
|
+
"style": {
|
|
82
|
+
paddingTop: convertToUnit(paddingTop.value),
|
|
83
|
+
paddingBottom: convertToUnit(paddingBottom.value)
|
|
84
|
+
}
|
|
85
|
+
}, [children])]);
|
|
86
|
+
});
|
|
61
87
|
return {
|
|
62
88
|
scrollToIndex
|
|
63
89
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VVirtualScroll.mjs","names":["VVirtualScrollItem","makeComponentProps","makeDimensionProps","useDimension","makeVirtualProps","useVirtual","toRef","convertToUnit","genericComponent","propsFactory","useRender","makeVVirtualScrollProps","items","type","Array","default","VVirtualScroll","name","props","setup","_ref","slots","dimensionStyles","containerRef","handleScroll","handleItemResize","scrollToIndex","paddingTop","paddingBottom","computedItems","
|
|
1
|
+
{"version":3,"file":"VVirtualScroll.mjs","names":["VVirtualScrollItem","makeComponentProps","makeDimensionProps","useDimension","useToggleScope","makeVirtualProps","useVirtual","onMounted","onScopeDispose","toRef","convertToUnit","genericComponent","getCurrentInstance","getScrollParent","propsFactory","useRender","makeVVirtualScrollProps","items","type","Array","default","renderless","Boolean","VVirtualScroll","name","props","setup","_ref","slots","vm","dimensionStyles","containerRef","handleScroll","handleItemResize","scrollToIndex","paddingTop","paddingBottom","computedItems","value","vnode","el","addEventListener","removeEventListener","children","map","item","_createVNode","index","height","slotProps","raw","_Fragment","class","style"],"sources":["../../../src/components/VVirtualScroll/VVirtualScroll.tsx"],"sourcesContent":["// Styles\nimport './VVirtualScroll.sass'\n\n// Components\nimport { VVirtualScrollItem } from './VVirtualScrollItem'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeVirtualProps, useVirtual } from '@/composables/virtual'\n\n// Utilities\nimport { onMounted, onScopeDispose, toRef } from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n getCurrentInstance,\n getScrollParent,\n propsFactory,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport interface VVirtualScrollSlot<T> {\n item: T\n index: number\n}\n\nexport const makeVVirtualScrollProps = propsFactory({\n items: {\n type: Array as PropType<readonly unknown[]>,\n default: () => ([]),\n },\n renderless: Boolean,\n\n ...makeVirtualProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n}, 'VVirtualScroll')\n\nexport const VVirtualScroll = genericComponent<new <T, Renderless extends boolean = false>(\n props: {\n items?: readonly T[]\n renderless?: Renderless\n },\n slots: {\n default: VVirtualScrollSlot<T> & (Renderless extends true ? {\n itemRef: Ref<HTMLElement | undefined>\n } : {})\n }\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VVirtualScroll',\n\n props: makeVVirtualScrollProps(),\n\n setup (props, { slots }) {\n const vm = getCurrentInstance('VVirtualScroll')\n const { dimensionStyles } = useDimension(props)\n const {\n containerRef,\n handleScroll,\n handleItemResize,\n scrollToIndex,\n paddingTop,\n paddingBottom,\n computedItems,\n } = useVirtual(props, toRef(props, 'items'))\n\n useToggleScope(() => props.renderless, () => {\n onMounted(() => {\n containerRef.value = getScrollParent(vm.vnode.el as HTMLElement, true)\n containerRef.value?.addEventListener('scroll', handleScroll)\n })\n onScopeDispose(() => {\n containerRef.value?.removeEventListener('scroll', handleScroll)\n })\n })\n\n useRender(() => {\n const children = computedItems.value.map(item => (\n <VVirtualScrollItem\n key={ item.index }\n renderless={ props.renderless }\n onUpdate:height={ height => handleItemResize(item.index, height) }\n >\n { slotProps => slots.default?.({ item: item.raw, index: item.index, ...slotProps }) }\n </VVirtualScrollItem>\n ))\n\n return props.renderless ? (\n <>\n <div class=\"v-virtual-scroll__spacer\" style={{ paddingTop: convertToUnit(paddingTop.value) }} />\n { children }\n <div class=\"v-virtual-scroll__spacer\" style={{ paddingBottom: convertToUnit(paddingBottom.value) }} />\n </>\n ) : (\n <div\n ref={ containerRef }\n class={[\n 'v-virtual-scroll',\n props.class,\n ]}\n onScroll={ handleScroll }\n style={[\n dimensionStyles.value,\n props.style,\n ]}\n >\n <div\n class=\"v-virtual-scroll__container\"\n style={{\n paddingTop: convertToUnit(paddingTop.value),\n paddingBottom: convertToUnit(paddingBottom.value),\n }}\n >\n { children }\n </div>\n </div>\n )\n })\n\n return {\n scrollToIndex,\n }\n },\n})\n\nexport type VVirtualScroll = InstanceType<typeof VVirtualScroll>\n"],"mappings":"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"}
|
|
@@ -1,50 +1,40 @@
|
|
|
1
|
-
import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
|
|
1
|
+
import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from "vue";
|
|
2
2
|
// Composables
|
|
3
3
|
import { makeComponentProps } from "../../composables/component.mjs";
|
|
4
|
-
import { useResizeObserver } from "../../composables/resizeObserver.mjs";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs";
|
|
4
|
+
import { useResizeObserver } from "../../composables/resizeObserver.mjs"; // Utilities
|
|
5
|
+
import { watch } from 'vue';
|
|
6
|
+
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
8
7
|
export const makeVVirtualScrollItemProps = propsFactory({
|
|
9
|
-
dynamicHeight: Boolean,
|
|
10
8
|
renderless: Boolean,
|
|
11
9
|
...makeComponentProps()
|
|
12
10
|
}, 'VVirtualScrollItem');
|
|
13
11
|
export const VVirtualScrollItem = genericComponent()({
|
|
14
12
|
name: 'VVirtualScrollItem',
|
|
13
|
+
inheritAttrs: false,
|
|
15
14
|
props: makeVVirtualScrollItemProps(),
|
|
16
15
|
emits: {
|
|
17
16
|
'update:height': height => true
|
|
18
17
|
},
|
|
19
18
|
setup(props, _ref) {
|
|
20
19
|
let {
|
|
20
|
+
attrs,
|
|
21
21
|
emit,
|
|
22
22
|
slots
|
|
23
23
|
} = _ref;
|
|
24
24
|
const {
|
|
25
25
|
resizeRef,
|
|
26
26
|
contentRect
|
|
27
|
-
} = useResizeObserver();
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (height != null) emit('update:height', height);
|
|
31
|
-
});
|
|
27
|
+
} = useResizeObserver(undefined, 'border');
|
|
28
|
+
watch(() => contentRect.value?.height, height => {
|
|
29
|
+
if (height != null) emit('update:height', height);
|
|
32
30
|
});
|
|
33
|
-
function updateHeight() {
|
|
34
|
-
if (props.dynamicHeight && contentRect.value) {
|
|
35
|
-
emit('update:height', contentRect.value.height);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
onUpdated(updateHeight);
|
|
39
31
|
useRender(() => props.renderless ? _createVNode(_Fragment, null, [slots.default?.({
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
})]) : _createVNode("div", {
|
|
44
|
-
"ref": props.dynamicHeight ? resizeRef : undefined,
|
|
32
|
+
itemRef: resizeRef
|
|
33
|
+
})]) : _createVNode("div", _mergeProps({
|
|
34
|
+
"ref": resizeRef,
|
|
45
35
|
"class": ['v-virtual-scroll__item', props.class],
|
|
46
36
|
"style": props.style
|
|
47
|
-
}, [slots.default?.()]));
|
|
37
|
+
}, attrs), [slots.default?.()]));
|
|
48
38
|
}
|
|
49
39
|
});
|
|
50
40
|
//# sourceMappingURL=VVirtualScrollItem.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VVirtualScrollItem.mjs","names":["makeComponentProps","useResizeObserver","
|
|
1
|
+
{"version":3,"file":"VVirtualScrollItem.mjs","names":["makeComponentProps","useResizeObserver","watch","genericComponent","propsFactory","useRender","makeVVirtualScrollItemProps","renderless","Boolean","VVirtualScrollItem","name","inheritAttrs","props","emits","height","setup","_ref","attrs","emit","slots","resizeRef","contentRect","undefined","value","_createVNode","_Fragment","default","itemRef","_mergeProps","class","style"],"sources":["../../../src/components/VVirtualScroll/VVirtualScrollItem.tsx"],"sourcesContent":["// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport const makeVVirtualScrollItemProps = propsFactory({\n renderless: Boolean,\n\n ...makeComponentProps(),\n}, 'VVirtualScrollItem')\n\nexport const VVirtualScrollItem = genericComponent<new <Renderless extends boolean = false>(\n props: {\n renderless?: Renderless\n },\n slots: {\n default: Renderless extends true ? {\n itemRef: Ref<HTMLElement | undefined>\n } : never\n }\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VVirtualScrollItem',\n\n inheritAttrs: false,\n\n props: makeVVirtualScrollItemProps(),\n\n emits: {\n 'update:height': (height: number) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { resizeRef, contentRect } = useResizeObserver(undefined, 'border')\n\n watch(() => contentRect.value?.height, height => {\n if (height != null) emit('update:height', height)\n })\n\n useRender(() => props.renderless ? (\n <>\n { slots.default?.({ itemRef: resizeRef }) }\n </>\n ) : (\n <div\n ref={ resizeRef }\n class={[\n 'v-virtual-scroll__item',\n props.class,\n ]}\n style={ props.style }\n { ...attrs }\n >\n { (slots.default as any)?.() }\n </div>\n ))\n },\n})\n"],"mappings":";AAAA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,iBAAiB,gDAE1B;AACA,SAASC,KAAK,QAAQ,KAAK;AAAA,SAClBC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAIA,OAAO,MAAMC,2BAA2B,GAAGF,YAAY,CAAC;EACtDG,UAAU,EAAEC,OAAO;EAEnB,GAAGR,kBAAkB;AACvB,CAAC,EAAE,oBAAoB,CAAC;AAExB,OAAO,MAAMS,kBAAkB,GAAGN,gBAAgB,EASF,CAAC;EAC/CO,IAAI,EAAE,oBAAoB;EAE1BC,YAAY,EAAE,KAAK;EAEnBC,KAAK,EAAEN,2BAA2B,EAAE;EAEpCO,KAAK,EAAE;IACL,eAAe,EAAGC,MAAc,IAAK;EACvC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAH,IAAA;IAClC,MAAM;MAAEI,SAAS;MAAEC;IAAY,CAAC,GAAGpB,iBAAiB,CAACqB,SAAS,EAAE,QAAQ,CAAC;IAEzEpB,KAAK,CAAC,MAAMmB,WAAW,CAACE,KAAK,EAAET,MAAM,EAAEA,MAAM,IAAI;MAC/C,IAAIA,MAAM,IAAI,IAAI,EAAEI,IAAI,CAAC,eAAe,EAAEJ,MAAM,CAAC;IACnD,CAAC,CAAC;IAEFT,SAAS,CAAC,MAAMO,KAAK,CAACL,UAAU,GAAAiB,YAAA,CAAAC,SAAA,SAE1BN,KAAK,CAACO,OAAO,GAAG;MAAEC,OAAO,EAAEP;IAAU,CAAC,CAAC,KAAAI,YAAA,QAAAI,WAAA;MAAA,OAInCR,SAAS;MAAA,SACR,CACL,wBAAwB,EACxBR,KAAK,CAACiB,KAAK,CACZ;MAAA,SACOjB,KAAK,CAACkB;IAAK,GACdb,KAAK,IAEPE,KAAK,CAACO,OAAO,IAAY,EAE/B,CAAC;EACJ;AACF,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as vue from 'vue';
|
|
2
|
-
import { ComponentPropsOptions, ExtractPropTypes, VNodeChild, VNode, PropType } from 'vue';
|
|
2
|
+
import { ComponentPropsOptions, ExtractPropTypes, VNodeChild, VNode, Ref, PropType } from 'vue';
|
|
3
3
|
|
|
4
4
|
type SlotsToProps<U extends RawSlots, T = MakeInternalSlots<U>> = {
|
|
5
5
|
$children?: (VNodeChild | (T extends {
|
|
@@ -40,6 +40,7 @@ declare const VVirtualScroll: {
|
|
|
40
40
|
$data: {};
|
|
41
41
|
$props: {
|
|
42
42
|
style?: vue.StyleValue | undefined;
|
|
43
|
+
itemHeight?: string | number | undefined;
|
|
43
44
|
key?: string | number | symbol | undefined;
|
|
44
45
|
height?: string | number | undefined;
|
|
45
46
|
width?: string | number | undefined;
|
|
@@ -89,7 +90,6 @@ declare const VVirtualScroll: {
|
|
|
89
90
|
}>) => void) | ((vnode: vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
90
91
|
[key: string]: any;
|
|
91
92
|
}>) => void)[] | undefined;
|
|
92
|
-
itemHeight?: string | number | undefined;
|
|
93
93
|
};
|
|
94
94
|
$attrs: {
|
|
95
95
|
[x: string]: unknown;
|
|
@@ -98,7 +98,9 @@ declare const VVirtualScroll: {
|
|
|
98
98
|
[x: string]: unknown;
|
|
99
99
|
};
|
|
100
100
|
$slots: Readonly<{
|
|
101
|
-
default?: ((arg: VVirtualScrollSlot<unknown>
|
|
101
|
+
default?: ((arg: VVirtualScrollSlot<unknown> | (VVirtualScrollSlot<unknown> & {
|
|
102
|
+
itemRef: Ref<HTMLElement | undefined>;
|
|
103
|
+
})) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
102
104
|
[key: string]: any;
|
|
103
105
|
}>[]) | undefined;
|
|
104
106
|
}>;
|
|
@@ -108,6 +110,7 @@ declare const VVirtualScroll: {
|
|
|
108
110
|
$el: any;
|
|
109
111
|
$options: vue.ComponentOptionsBase<{
|
|
110
112
|
style: vue.StyleValue;
|
|
113
|
+
itemHeight: string | number;
|
|
111
114
|
} & {
|
|
112
115
|
height?: string | number | undefined;
|
|
113
116
|
width?: string | number | undefined;
|
|
@@ -116,13 +119,15 @@ declare const VVirtualScroll: {
|
|
|
116
119
|
minHeight?: string | number | undefined;
|
|
117
120
|
minWidth?: string | number | undefined;
|
|
118
121
|
class?: any;
|
|
119
|
-
itemHeight?: string | number | undefined;
|
|
120
122
|
}, {
|
|
121
123
|
scrollToIndex: (index: number) => void;
|
|
122
|
-
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<Record<string, any>, "$children" | "v-slot:default" | "items" | "v-slots">, string, {
|
|
124
|
+
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<Record<string, any>, "$children" | "v-slot:default" | "items" | "v-slots" | "renderless">, string, {
|
|
123
125
|
style: vue.StyleValue;
|
|
126
|
+
itemHeight: string | number;
|
|
124
127
|
}, {}, string, vue.SlotsType<Partial<{
|
|
125
|
-
default: (arg: VVirtualScrollSlot<unknown>
|
|
128
|
+
default: (arg: VVirtualScrollSlot<unknown> | (VVirtualScrollSlot<unknown> & {
|
|
129
|
+
itemRef: Ref<HTMLElement | undefined>;
|
|
130
|
+
})) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
126
131
|
[key: string]: any;
|
|
127
132
|
}>[];
|
|
128
133
|
}>>> & {
|
|
@@ -147,6 +152,7 @@ declare const VVirtualScroll: {
|
|
|
147
152
|
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => any : (...args: any) => any, options?: vue.WatchOptions<boolean> | undefined): vue.WatchStopHandle;
|
|
148
153
|
} & {
|
|
149
154
|
style: vue.StyleValue;
|
|
155
|
+
itemHeight: string | number;
|
|
150
156
|
} & {
|
|
151
157
|
height?: string | number | undefined;
|
|
152
158
|
width?: string | number | undefined;
|
|
@@ -155,7 +161,6 @@ declare const VVirtualScroll: {
|
|
|
155
161
|
minHeight?: string | number | undefined;
|
|
156
162
|
minWidth?: string | number | undefined;
|
|
157
163
|
class?: any;
|
|
158
|
-
itemHeight?: string | number | undefined;
|
|
159
164
|
} & vue.ShallowUnwrapRef<{
|
|
160
165
|
scrollToIndex: (index: number) => void;
|
|
161
166
|
}> & {} & vue.ComponentCustomProperties & {};
|
|
@@ -164,6 +169,7 @@ declare const VVirtualScroll: {
|
|
|
164
169
|
__isSuspense?: undefined;
|
|
165
170
|
} & vue.ComponentOptionsBase<{
|
|
166
171
|
style: vue.StyleValue;
|
|
172
|
+
itemHeight: string | number;
|
|
167
173
|
} & {
|
|
168
174
|
height?: string | number | undefined;
|
|
169
175
|
width?: string | number | undefined;
|
|
@@ -172,23 +178,31 @@ declare const VVirtualScroll: {
|
|
|
172
178
|
minHeight?: string | number | undefined;
|
|
173
179
|
minWidth?: string | number | undefined;
|
|
174
180
|
class?: any;
|
|
175
|
-
itemHeight?: string | number | undefined;
|
|
176
181
|
}, {
|
|
177
182
|
scrollToIndex: (index: number) => void;
|
|
178
|
-
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<Record<string, any>, "$children" | "v-slot:default" | "items" | "v-slots">, string, {
|
|
183
|
+
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<Record<string, any>, "$children" | "v-slot:default" | "items" | "v-slots" | "renderless">, string, {
|
|
179
184
|
style: vue.StyleValue;
|
|
185
|
+
itemHeight: string | number;
|
|
180
186
|
}, {}, string, vue.SlotsType<Partial<{
|
|
181
|
-
default: (arg: VVirtualScrollSlot<unknown>
|
|
187
|
+
default: (arg: VVirtualScrollSlot<unknown> | (VVirtualScrollSlot<unknown> & {
|
|
188
|
+
itemRef: Ref<HTMLElement | undefined>;
|
|
189
|
+
})) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
182
190
|
[key: string]: any;
|
|
183
191
|
}>[];
|
|
184
|
-
}>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new <T_1>(props: {
|
|
192
|
+
}>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new <T_1, Renderless extends boolean = false>(props: {
|
|
185
193
|
items?: readonly T_1[] | undefined;
|
|
194
|
+
renderless?: Renderless | undefined;
|
|
186
195
|
}, slots: {
|
|
187
|
-
default: VVirtualScrollSlot<T_1
|
|
196
|
+
default: VVirtualScrollSlot<T_1> & (Renderless extends true ? {
|
|
197
|
+
itemRef: Ref<HTMLElement | undefined>;
|
|
198
|
+
} : {});
|
|
188
199
|
}) => GenericProps<{
|
|
189
200
|
items?: readonly T_1[] | undefined;
|
|
201
|
+
renderless?: Renderless | undefined;
|
|
190
202
|
}, {
|
|
191
|
-
default: VVirtualScrollSlot<T_1
|
|
203
|
+
default: VVirtualScrollSlot<T_1> & (Renderless extends true ? {
|
|
204
|
+
itemRef: Ref<HTMLElement | undefined>;
|
|
205
|
+
} : {});
|
|
192
206
|
}>) & FilterPropsOptions<{
|
|
193
207
|
height: (StringConstructor | NumberConstructor)[];
|
|
194
208
|
maxHeight: (StringConstructor | NumberConstructor)[];
|
|
@@ -201,11 +215,15 @@ declare const VVirtualScroll: {
|
|
|
201
215
|
type: PropType<vue.StyleValue>;
|
|
202
216
|
default: null;
|
|
203
217
|
};
|
|
204
|
-
itemHeight:
|
|
218
|
+
itemHeight: {
|
|
219
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
220
|
+
default: number;
|
|
221
|
+
};
|
|
205
222
|
items: {
|
|
206
223
|
type: PropType<readonly unknown[]>;
|
|
207
224
|
default: () => never[];
|
|
208
225
|
};
|
|
226
|
+
renderless: BooleanConstructor;
|
|
209
227
|
}, vue.ExtractPropTypes<{
|
|
210
228
|
height: (StringConstructor | NumberConstructor)[];
|
|
211
229
|
maxHeight: (StringConstructor | NumberConstructor)[];
|
|
@@ -218,11 +236,15 @@ declare const VVirtualScroll: {
|
|
|
218
236
|
type: PropType<vue.StyleValue>;
|
|
219
237
|
default: null;
|
|
220
238
|
};
|
|
221
|
-
itemHeight:
|
|
239
|
+
itemHeight: {
|
|
240
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
241
|
+
default: number;
|
|
242
|
+
};
|
|
222
243
|
items: {
|
|
223
244
|
type: PropType<readonly unknown[]>;
|
|
224
245
|
default: () => never[];
|
|
225
246
|
};
|
|
247
|
+
renderless: BooleanConstructor;
|
|
226
248
|
}>>;
|
|
227
249
|
type VVirtualScroll = InstanceType<typeof VVirtualScroll>;
|
|
228
250
|
|
|
@@ -55166,6 +55166,7 @@ declare const VVirtualScroll: {
|
|
|
55166
55166
|
$data: {};
|
|
55167
55167
|
$props: {
|
|
55168
55168
|
style?: vue.StyleValue | undefined;
|
|
55169
|
+
itemHeight?: string | number | undefined;
|
|
55169
55170
|
key?: string | number | symbol | undefined;
|
|
55170
55171
|
height?: string | number | undefined;
|
|
55171
55172
|
width?: string | number | undefined;
|
|
@@ -55215,7 +55216,6 @@ declare const VVirtualScroll: {
|
|
|
55215
55216
|
}>) => void) | ((vnode: vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
55216
55217
|
[key: string]: any;
|
|
55217
55218
|
}>) => void)[] | undefined;
|
|
55218
|
-
itemHeight?: string | number | undefined;
|
|
55219
55219
|
};
|
|
55220
55220
|
$attrs: {
|
|
55221
55221
|
[x: string]: unknown;
|
|
@@ -55224,7 +55224,9 @@ declare const VVirtualScroll: {
|
|
|
55224
55224
|
[x: string]: unknown;
|
|
55225
55225
|
};
|
|
55226
55226
|
$slots: Readonly<{
|
|
55227
|
-
default?: ((arg: VVirtualScrollSlot<unknown>
|
|
55227
|
+
default?: ((arg: VVirtualScrollSlot<unknown> | (VVirtualScrollSlot<unknown> & {
|
|
55228
|
+
itemRef: Ref<HTMLElement | undefined>;
|
|
55229
|
+
})) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
55228
55230
|
[key: string]: any;
|
|
55229
55231
|
}>[]) | undefined;
|
|
55230
55232
|
}>;
|
|
@@ -55234,6 +55236,7 @@ declare const VVirtualScroll: {
|
|
|
55234
55236
|
$el: any;
|
|
55235
55237
|
$options: vue.ComponentOptionsBase<{
|
|
55236
55238
|
style: vue.StyleValue;
|
|
55239
|
+
itemHeight: string | number;
|
|
55237
55240
|
} & {
|
|
55238
55241
|
height?: string | number | undefined;
|
|
55239
55242
|
width?: string | number | undefined;
|
|
@@ -55242,13 +55245,15 @@ declare const VVirtualScroll: {
|
|
|
55242
55245
|
minHeight?: string | number | undefined;
|
|
55243
55246
|
minWidth?: string | number | undefined;
|
|
55244
55247
|
class?: any;
|
|
55245
|
-
itemHeight?: string | number | undefined;
|
|
55246
55248
|
}, {
|
|
55247
55249
|
scrollToIndex: (index: number) => void;
|
|
55248
|
-
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<Record<string, any>, "$children" | "v-slot:default" | "items" | "v-slots">, string, {
|
|
55250
|
+
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<Record<string, any>, "$children" | "v-slot:default" | "items" | "v-slots" | "renderless">, string, {
|
|
55249
55251
|
style: vue.StyleValue;
|
|
55252
|
+
itemHeight: string | number;
|
|
55250
55253
|
}, {}, string, vue.SlotsType<Partial<{
|
|
55251
|
-
default: (arg: VVirtualScrollSlot<unknown>
|
|
55254
|
+
default: (arg: VVirtualScrollSlot<unknown> | (VVirtualScrollSlot<unknown> & {
|
|
55255
|
+
itemRef: Ref<HTMLElement | undefined>;
|
|
55256
|
+
})) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
55252
55257
|
[key: string]: any;
|
|
55253
55258
|
}>[];
|
|
55254
55259
|
}>>> & {
|
|
@@ -55273,6 +55278,7 @@ declare const VVirtualScroll: {
|
|
|
55273
55278
|
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => any : (...args: any) => any, options?: vue.WatchOptions<boolean> | undefined): vue.WatchStopHandle;
|
|
55274
55279
|
} & {
|
|
55275
55280
|
style: vue.StyleValue;
|
|
55281
|
+
itemHeight: string | number;
|
|
55276
55282
|
} & {
|
|
55277
55283
|
height?: string | number | undefined;
|
|
55278
55284
|
width?: string | number | undefined;
|
|
@@ -55281,7 +55287,6 @@ declare const VVirtualScroll: {
|
|
|
55281
55287
|
minHeight?: string | number | undefined;
|
|
55282
55288
|
minWidth?: string | number | undefined;
|
|
55283
55289
|
class?: any;
|
|
55284
|
-
itemHeight?: string | number | undefined;
|
|
55285
55290
|
} & vue.ShallowUnwrapRef<{
|
|
55286
55291
|
scrollToIndex: (index: number) => void;
|
|
55287
55292
|
}> & {} & vue.ComponentCustomProperties & {};
|
|
@@ -55290,6 +55295,7 @@ declare const VVirtualScroll: {
|
|
|
55290
55295
|
__isSuspense?: undefined;
|
|
55291
55296
|
} & vue.ComponentOptionsBase<{
|
|
55292
55297
|
style: vue.StyleValue;
|
|
55298
|
+
itemHeight: string | number;
|
|
55293
55299
|
} & {
|
|
55294
55300
|
height?: string | number | undefined;
|
|
55295
55301
|
width?: string | number | undefined;
|
|
@@ -55298,23 +55304,31 @@ declare const VVirtualScroll: {
|
|
|
55298
55304
|
minHeight?: string | number | undefined;
|
|
55299
55305
|
minWidth?: string | number | undefined;
|
|
55300
55306
|
class?: any;
|
|
55301
|
-
itemHeight?: string | number | undefined;
|
|
55302
55307
|
}, {
|
|
55303
55308
|
scrollToIndex: (index: number) => void;
|
|
55304
|
-
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<Record<string, any>, "$children" | "v-slot:default" | "items" | "v-slots">, string, {
|
|
55309
|
+
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<Record<string, any>, "$children" | "v-slot:default" | "items" | "v-slots" | "renderless">, string, {
|
|
55305
55310
|
style: vue.StyleValue;
|
|
55311
|
+
itemHeight: string | number;
|
|
55306
55312
|
}, {}, string, vue.SlotsType<Partial<{
|
|
55307
|
-
default: (arg: VVirtualScrollSlot<unknown>
|
|
55313
|
+
default: (arg: VVirtualScrollSlot<unknown> | (VVirtualScrollSlot<unknown> & {
|
|
55314
|
+
itemRef: Ref<HTMLElement | undefined>;
|
|
55315
|
+
})) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
55308
55316
|
[key: string]: any;
|
|
55309
55317
|
}>[];
|
|
55310
|
-
}>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new <T_1>(props: {
|
|
55318
|
+
}>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new <T_1, Renderless extends boolean = false>(props: {
|
|
55311
55319
|
items?: readonly T_1[] | undefined;
|
|
55320
|
+
renderless?: Renderless | undefined;
|
|
55312
55321
|
}, slots: {
|
|
55313
|
-
default: VVirtualScrollSlot<T_1
|
|
55322
|
+
default: VVirtualScrollSlot<T_1> & (Renderless extends true ? {
|
|
55323
|
+
itemRef: Ref<HTMLElement | undefined>;
|
|
55324
|
+
} : {});
|
|
55314
55325
|
}) => GenericProps<{
|
|
55315
55326
|
items?: readonly T_1[] | undefined;
|
|
55327
|
+
renderless?: Renderless | undefined;
|
|
55316
55328
|
}, {
|
|
55317
|
-
default: VVirtualScrollSlot<T_1
|
|
55329
|
+
default: VVirtualScrollSlot<T_1> & (Renderless extends true ? {
|
|
55330
|
+
itemRef: Ref<HTMLElement | undefined>;
|
|
55331
|
+
} : {});
|
|
55318
55332
|
}>) & FilterPropsOptions<{
|
|
55319
55333
|
height: (StringConstructor | NumberConstructor)[];
|
|
55320
55334
|
maxHeight: (StringConstructor | NumberConstructor)[];
|
|
@@ -55327,11 +55341,15 @@ declare const VVirtualScroll: {
|
|
|
55327
55341
|
type: PropType<vue.StyleValue>;
|
|
55328
55342
|
default: null;
|
|
55329
55343
|
};
|
|
55330
|
-
itemHeight:
|
|
55344
|
+
itemHeight: {
|
|
55345
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
55346
|
+
default: number;
|
|
55347
|
+
};
|
|
55331
55348
|
items: {
|
|
55332
55349
|
type: PropType<readonly unknown[]>;
|
|
55333
55350
|
default: () => never[];
|
|
55334
55351
|
};
|
|
55352
|
+
renderless: BooleanConstructor;
|
|
55335
55353
|
}, vue.ExtractPropTypes<{
|
|
55336
55354
|
height: (StringConstructor | NumberConstructor)[];
|
|
55337
55355
|
maxHeight: (StringConstructor | NumberConstructor)[];
|
|
@@ -55344,11 +55362,15 @@ declare const VVirtualScroll: {
|
|
|
55344
55362
|
type: PropType<vue.StyleValue>;
|
|
55345
55363
|
default: null;
|
|
55346
55364
|
};
|
|
55347
|
-
itemHeight:
|
|
55365
|
+
itemHeight: {
|
|
55366
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
55367
|
+
default: number;
|
|
55368
|
+
};
|
|
55348
55369
|
items: {
|
|
55349
55370
|
type: PropType<readonly unknown[]>;
|
|
55350
55371
|
default: () => never[];
|
|
55351
55372
|
};
|
|
55373
|
+
renderless: BooleanConstructor;
|
|
55352
55374
|
}>>;
|
|
55353
55375
|
type VVirtualScroll = InstanceType<typeof VVirtualScroll>;
|
|
55354
55376
|
|
|
@@ -72,8 +72,6 @@ export function useFilter(props, items, query, options) {
|
|
|
72
72
|
const filteredMatches = ref(new Map());
|
|
73
73
|
const transformedItems = computed(() => options?.transform ? unref(items).map(options?.transform) : unref(items));
|
|
74
74
|
watchEffect(() => {
|
|
75
|
-
filteredItems.value = [];
|
|
76
|
-
filteredMatches.value = new Map();
|
|
77
75
|
const results = filterItems(transformedItems.value, strQuery.value, {
|
|
78
76
|
customKeyFilter: props.customKeyFilter,
|
|
79
77
|
default: props.customFilter,
|
|
@@ -82,15 +80,19 @@ export function useFilter(props, items, query, options) {
|
|
|
82
80
|
noFilter: props.noFilter
|
|
83
81
|
});
|
|
84
82
|
const originalItems = unref(items);
|
|
83
|
+
const _filteredItems = [];
|
|
84
|
+
const _filteredMatches = new Map();
|
|
85
85
|
results.forEach(_ref => {
|
|
86
86
|
let {
|
|
87
87
|
index,
|
|
88
88
|
matches
|
|
89
89
|
} = _ref;
|
|
90
90
|
const item = originalItems[index];
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
_filteredItems.push(item);
|
|
92
|
+
_filteredMatches.set(item.value, matches);
|
|
93
93
|
});
|
|
94
|
+
filteredItems.value = _filteredItems;
|
|
95
|
+
filteredMatches.value = _filteredMatches;
|
|
94
96
|
});
|
|
95
97
|
function getMatches(item) {
|
|
96
98
|
return filteredMatches.value.get(item.value);
|
|
@@ -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","customMatches","defaultMatches","match","key","keyFilter","title","defaultMatchesLength","customMatchesLength","push","index","matches","useFilter","props","strQuery","filteredItems","filteredMatches","Map","transformedItems","transform","map","results","originalItems","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?: any) => 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\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: any[],\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 = items[i]\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(item)\n\n for (const key of filterKeys) {\n const value = getPropertyFromItem(item as any, key, item)\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 { value: unknown }> (\n props: FilterProps,\n items: MaybeRef<T[]>,\n query: Ref<string | undefined>,\n options?: {\n transform?: (item: T) => any\n }\n) {\n const strQuery = computed(() => (\n typeof query?.value !== 'string' &&\n typeof query?.value !== 'number'\n ) ? '' : String(query.value))\n\n const filteredItems: Ref<T[]> = ref([])\n const filteredMatches: Ref<Map<unknown, Record<string, FilterMatch>>> = ref(new Map())\n const transformedItems = computed(() => options?.transform ? unref(items).map(options?.transform) : unref(items))\n\n watchEffect(() => {\n filteredItems.value = []\n filteredMatches.value = new Map()\n\n const results = filterItems(\n transformedItems.value,\n strQuery.value,\n {\n customKeyFilter: props.customKeyFilter,\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 results.forEach(({ index, matches }) => {\n const item = originalItems[index]\n filteredItems.value.push(item)\n filteredMatches.value.set(item.value, matches)\n })\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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"}
|
|
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","customMatches","defaultMatches","match","key","keyFilter","title","defaultMatchesLength","customMatchesLength","push","index","matches","useFilter","props","strQuery","filteredItems","filteredMatches","Map","transformedItems","transform","map","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?: any) => 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\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: any[],\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 = items[i]\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(item)\n\n for (const key of filterKeys) {\n const value = getPropertyFromItem(item as any, key, item)\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 { value: unknown }> (\n props: FilterProps,\n items: MaybeRef<T[]>,\n query: Ref<string | undefined>,\n options?: {\n transform?: (item: T) => any\n }\n) {\n const strQuery = computed(() => (\n typeof query?.value !== 'string' &&\n typeof query?.value !== 'number'\n ) ? '' : String(query.value))\n\n const filteredItems: Ref<T[]> = ref([])\n const filteredMatches: Ref<Map<unknown, Record<string, FilterMatch>>> = ref(new Map())\n const transformedItems = computed(() => options?.transform ? unref(items).map(options?.transform) : unref(items))\n\n watchEffect(() => {\n const results = filterItems(\n transformedItems.value,\n strQuery.value,\n {\n customKeyFilter: props.customKeyFilter,\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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"}
|
|
@@ -3,13 +3,18 @@ import { onBeforeUnmount, readonly, ref, watch } from 'vue';
|
|
|
3
3
|
import { refElement } from "../util/index.mjs";
|
|
4
4
|
import { IN_BROWSER } from "../util/globals.mjs"; // Types
|
|
5
5
|
export function useResizeObserver(callback) {
|
|
6
|
+
let box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'content';
|
|
6
7
|
const resizeRef = ref();
|
|
7
8
|
const contentRect = ref();
|
|
8
9
|
if (IN_BROWSER) {
|
|
9
10
|
const observer = new ResizeObserver(entries => {
|
|
10
11
|
callback?.(entries, observer);
|
|
11
12
|
if (!entries.length) return;
|
|
12
|
-
|
|
13
|
+
if (box === 'content') {
|
|
14
|
+
contentRect.value = entries[0].contentRect;
|
|
15
|
+
} else {
|
|
16
|
+
contentRect.value = entries[0].target.getBoundingClientRect();
|
|
17
|
+
}
|
|
13
18
|
});
|
|
14
19
|
onBeforeUnmount(() => {
|
|
15
20
|
observer.disconnect();
|