@mittwald/flow-react-components 0.2.0-alpha.760 → 0.2.0-alpha.761
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 +6 -0
- package/dist/assets/doc-properties.json +1666 -1647
- package/dist/js/packages/components/src/components/List/model/List.mjs +3 -0
- package/dist/js/packages/components/src/components/List/model/List.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/ListViewMode.mjs +4 -1
- package/dist/js/packages/components/src/components/List/model/ListViewMode.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/filter/Filter.mjs +2 -2
- package/dist/js/packages/components/src/components/List/model/filter/Filter.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/search/Search.mjs +5 -1
- package/dist/js/packages/components/src/components/List/model/search/Search.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/sorting/Sorting.mjs +1 -1
- package/dist/js/packages/components/src/components/List/model/sorting/Sorting.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/types.mjs.map +1 -1
- package/dist/types/components/List/model/List.d.ts +2 -1
- package/dist/types/components/List/model/List.d.ts.map +1 -1
- package/dist/types/components/List/model/ListViewMode.d.ts.map +1 -1
- package/dist/types/components/List/model/search/Search.d.ts.map +1 -1
- package/dist/types/components/List/model/types.d.ts +16 -0
- package/dist/types/components/List/model/types.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -33,6 +33,7 @@ class List {
|
|
|
33
33
|
settingsStorage;
|
|
34
34
|
loadingItemsCount;
|
|
35
35
|
viewMode;
|
|
36
|
+
settingsStorageDefaults;
|
|
36
37
|
constructor(shape) {
|
|
37
38
|
const {
|
|
38
39
|
settingStorageKey,
|
|
@@ -49,6 +50,7 @@ class List {
|
|
|
49
50
|
defaultViewMode,
|
|
50
51
|
accordion = false,
|
|
51
52
|
loadingItemsCount = 5,
|
|
53
|
+
settingsStorageDefaults,
|
|
52
54
|
...componentProps
|
|
53
55
|
} = shape;
|
|
54
56
|
const generalSettingsStore = useSettings();
|
|
@@ -74,6 +76,7 @@ class List {
|
|
|
74
76
|
manualSorting: this.loader.manualSorting
|
|
75
77
|
});
|
|
76
78
|
this.viewMode = new ListViewMode(this, { defaultViewMode });
|
|
79
|
+
this.settingsStorageDefaults = settingsStorageDefaults;
|
|
77
80
|
useEffect(() => {
|
|
78
81
|
this.filters.forEach((f) => f.deleteUnknownFilterValues());
|
|
79
82
|
}, [this.filters]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.mjs","sources":["../../../../../../../../src/components/List/model/List.ts"],"sourcesContent":["import { ItemCollection } from \"@/components/List/model/item/ItemCollection\";\nimport { BatchesController } from \"@/components/List/model/pagination/BatchesController\";\nimport { Filter } from \"./filter/Filter\";\nimport { Sorting } from \"@/components/List/model/sorting/Sorting\";\nimport ReactTable from \"@/components/List/model/ReactTable\";\nimport type {\n GetItemId,\n ItemActionFn,\n ListShape,\n ListSupportedComponentProps,\n} from \"@/components/List/model/types\";\nimport { IncrementalLoader } from \"@/components/List/model/loading/IncrementalLoader\";\nimport invariant from \"invariant\";\nimport { Search } from \"@/components/List/model/search/Search\";\nimport { ItemView } from \"@/components/List/model/item/ItemView\";\nimport { Table } from \"@/components/List/model/table/Table\";\nimport { useEffect } from \"react\";\nimport { ListSettingsStore } from \"./ListSettingsStore\";\nimport { ListViewMode } from \"./ListViewMode\";\nimport { useSettings } from \"@/components/SettingsProvider/SettingsProvider\";\n\nexport class List<T = unknown, TMeta = unknown> {\n public readonly filters: Filter<T, never, never>[];\n public readonly itemView?: ItemView<T>;\n public readonly table?: Table<T>;\n public readonly search?: Search<T>;\n public readonly sorting: Sorting<T>[];\n public readonly items: ItemCollection<T>;\n public readonly reactTable: ReactTable<T>;\n public readonly batches: BatchesController<T>;\n public readonly loader: IncrementalLoader<T>;\n public readonly onAction?: ItemActionFn<T>;\n public readonly accordion: boolean;\n public readonly getItemId?: GetItemId<T>;\n public readonly componentProps: ListSupportedComponentProps;\n public metadata?: TMeta;\n public readonly settingsStorage?: ListSettingsStore<T>;\n public readonly loadingItemsCount;\n public readonly viewMode: ListViewMode<T>;\n\n public constructor(shape: ListShape<T, TMeta>) {\n const {\n settingStorageKey,\n itemView,\n table,\n filters = [],\n sorting = [],\n batchesController,\n onChange,\n loader,\n search,\n onAction,\n getItemId,\n defaultViewMode,\n accordion = false,\n loadingItemsCount = 5,\n ...componentProps\n } = shape;\n\n const generalSettingsStore = useSettings();\n\n this.settingsStorage =\n settingStorageKey && generalSettingsStore\n ? new ListSettingsStore(this, generalSettingsStore, {\n storageKey: settingStorageKey,\n })\n : undefined;\n\n this.items = new ItemCollection(this);\n this.filters = filters.map((shape) => new Filter(this, shape));\n this.sorting = sorting.map((shape) => new Sorting<T>(this, shape));\n this.search = search ? new Search(this, search) : undefined;\n this.itemView = itemView ? new ItemView(this, itemView) : undefined;\n this.accordion = accordion;\n this.table = table ? new Table(this, table) : undefined;\n this.batches = new BatchesController(this, batchesController);\n this.componentProps = componentProps;\n this.loader = IncrementalLoader.useNew<T>(this, loader);\n this.onAction = onAction;\n this.getItemId = getItemId;\n this.loadingItemsCount = loadingItemsCount;\n this.reactTable = ReactTable.useNew(this, onChange, {\n manualFiltering: this.loader.manualFiltering,\n manualPagination: this.loader.manualPagination,\n manualSorting: this.loader.manualSorting,\n });\n this.viewMode = new ListViewMode(this, { defaultViewMode });\n\n useEffect(() => {\n this.filters.forEach((f) => f.deleteUnknownFilterValues());\n }, [this.filters]);\n }\n\n public get isFiltered(): boolean {\n return (\n this.filters.some((f) => f.isActive()) ||\n (!!this.search && this.search.isSet)\n );\n }\n\n public get visibleSorting() {\n return this.sorting.filter((s) => s.initialEnabled !== \"hidden\");\n }\n\n public static useNew<T, TMeta = unknown>(\n shape: ListShape<T, TMeta>,\n ): List<T, TMeta> {\n return new List<T, TMeta>(shape);\n }\n\n public getSorting(id: string): Sorting<T> {\n const sorting = this.sorting.find((s) => s.id === id);\n invariant(!!sorting, `Could not get Sorting (ID: ${id})`);\n return sorting;\n }\n\n public clearSorting(): void {\n return this.sorting.forEach((s) => s.clear());\n }\n\n public resetFilters(): void {\n return this.filters.forEach((f) => f.resetValues());\n }\n\n public clearFilters(): void {\n return this.filters.forEach((f) => f.clear());\n }\n\n public useIsEmpty(): boolean {\n return !this.loader.useIsLoading() && this.items.entries.length === 0;\n }\n}\n\nexport default List;\n"],"names":["shape"],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"List.mjs","sources":["../../../../../../../../src/components/List/model/List.ts"],"sourcesContent":["import { ItemCollection } from \"@/components/List/model/item/ItemCollection\";\nimport { BatchesController } from \"@/components/List/model/pagination/BatchesController\";\nimport { Filter } from \"./filter/Filter\";\nimport { Sorting } from \"@/components/List/model/sorting/Sorting\";\nimport ReactTable from \"@/components/List/model/ReactTable\";\nimport type {\n GetItemId,\n ItemActionFn,\n ListSettingsStorageDefaults,\n ListShape,\n ListSupportedComponentProps,\n} from \"@/components/List/model/types\";\nimport { IncrementalLoader } from \"@/components/List/model/loading/IncrementalLoader\";\nimport invariant from \"invariant\";\nimport { Search } from \"@/components/List/model/search/Search\";\nimport { ItemView } from \"@/components/List/model/item/ItemView\";\nimport { Table } from \"@/components/List/model/table/Table\";\nimport { useEffect } from \"react\";\nimport { ListSettingsStore } from \"./ListSettingsStore\";\nimport { ListViewMode } from \"./ListViewMode\";\nimport { useSettings } from \"@/components/SettingsProvider/SettingsProvider\";\n\nexport class List<T = unknown, TMeta = unknown> {\n public readonly filters: Filter<T, never, never>[];\n public readonly itemView?: ItemView<T>;\n public readonly table?: Table<T>;\n public readonly search?: Search<T>;\n public readonly sorting: Sorting<T>[];\n public readonly items: ItemCollection<T>;\n public readonly reactTable: ReactTable<T>;\n public readonly batches: BatchesController<T>;\n public readonly loader: IncrementalLoader<T>;\n public readonly onAction?: ItemActionFn<T>;\n public readonly accordion: boolean;\n public readonly getItemId?: GetItemId<T>;\n public readonly componentProps: ListSupportedComponentProps;\n public metadata?: TMeta;\n public readonly settingsStorage?: ListSettingsStore<T>;\n public readonly loadingItemsCount;\n public readonly viewMode: ListViewMode<T>;\n public readonly settingsStorageDefaults?: ListSettingsStorageDefaults;\n\n public constructor(shape: ListShape<T, TMeta>) {\n const {\n settingStorageKey,\n itemView,\n table,\n filters = [],\n sorting = [],\n batchesController,\n onChange,\n loader,\n search,\n onAction,\n getItemId,\n defaultViewMode,\n accordion = false,\n loadingItemsCount = 5,\n settingsStorageDefaults,\n ...componentProps\n } = shape;\n\n const generalSettingsStore = useSettings();\n\n this.settingsStorage =\n settingStorageKey && generalSettingsStore\n ? new ListSettingsStore(this, generalSettingsStore, {\n storageKey: settingStorageKey,\n })\n : undefined;\n\n this.items = new ItemCollection(this);\n this.filters = filters.map((shape) => new Filter(this, shape));\n this.sorting = sorting.map((shape) => new Sorting<T>(this, shape));\n this.search = search ? new Search(this, search) : undefined;\n this.itemView = itemView ? new ItemView(this, itemView) : undefined;\n this.accordion = accordion;\n this.table = table ? new Table(this, table) : undefined;\n this.batches = new BatchesController(this, batchesController);\n this.componentProps = componentProps;\n this.loader = IncrementalLoader.useNew<T>(this, loader);\n this.onAction = onAction;\n this.getItemId = getItemId;\n this.loadingItemsCount = loadingItemsCount;\n this.reactTable = ReactTable.useNew(this, onChange, {\n manualFiltering: this.loader.manualFiltering,\n manualPagination: this.loader.manualPagination,\n manualSorting: this.loader.manualSorting,\n });\n this.viewMode = new ListViewMode(this, { defaultViewMode });\n this.settingsStorageDefaults = settingsStorageDefaults;\n\n useEffect(() => {\n this.filters.forEach((f) => f.deleteUnknownFilterValues());\n }, [this.filters]);\n }\n\n public get isFiltered(): boolean {\n return (\n this.filters.some((f) => f.isActive()) ||\n (!!this.search && this.search.isSet)\n );\n }\n\n public get visibleSorting() {\n return this.sorting.filter((s) => s.initialEnabled !== \"hidden\");\n }\n\n public static useNew<T, TMeta = unknown>(\n shape: ListShape<T, TMeta>,\n ): List<T, TMeta> {\n return new List<T, TMeta>(shape);\n }\n\n public getSorting(id: string): Sorting<T> {\n const sorting = this.sorting.find((s) => s.id === id);\n invariant(!!sorting, `Could not get Sorting (ID: ${id})`);\n return sorting;\n }\n\n public clearSorting(): void {\n return this.sorting.forEach((s) => s.clear());\n }\n\n public resetFilters(): void {\n return this.filters.forEach((f) => f.resetValues());\n }\n\n public clearFilters(): void {\n return this.filters.forEach((f) => f.clear());\n }\n\n public useIsEmpty(): boolean {\n return !this.loader.useIsLoading() && this.items.entries.length === 0;\n }\n}\n\nexport default List;\n"],"names":["shape"],"mappings":"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"}
|
|
@@ -7,7 +7,10 @@ class ListViewMode {
|
|
|
7
7
|
autosave;
|
|
8
8
|
state;
|
|
9
9
|
constructor(list, options = {}) {
|
|
10
|
-
const {
|
|
10
|
+
const {
|
|
11
|
+
defaultViewMode,
|
|
12
|
+
autosave = list.settingsStorageDefaults?.viewMode?.autosave ?? true
|
|
13
|
+
} = options;
|
|
11
14
|
this.list = list;
|
|
12
15
|
this.autosave = autosave;
|
|
13
16
|
this.state = useState(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListViewMode.mjs","sources":["../../../../../../../../src/components/List/model/ListViewMode.ts"],"sourcesContent":["import { useState } from \"react\";\nimport type { ListViewMode as RawListViewMode } from \"./types\";\nimport type { List } from \"./List\";\n\ninterface Options {\n defaultViewMode?: RawListViewMode;\n autosave?: boolean;\n}\n\nexport class ListViewMode<T = unknown> {\n public readonly list: List<T>;\n public readonly autosave: boolean;\n private readonly state: [\n RawListViewMode,\n React.Dispatch<React.SetStateAction<RawListViewMode>>,\n ];\n\n public constructor(list: List<T>, options: Options = {}) {\n const {
|
|
1
|
+
{"version":3,"file":"ListViewMode.mjs","sources":["../../../../../../../../src/components/List/model/ListViewMode.ts"],"sourcesContent":["import { useState } from \"react\";\nimport type { ListViewMode as RawListViewMode } from \"./types\";\nimport type { List } from \"./List\";\n\ninterface Options {\n defaultViewMode?: RawListViewMode;\n autosave?: boolean;\n}\n\nexport class ListViewMode<T = unknown> {\n public readonly list: List<T>;\n public readonly autosave: boolean;\n private readonly state: [\n RawListViewMode,\n React.Dispatch<React.SetStateAction<RawListViewMode>>,\n ];\n\n public constructor(list: List<T>, options: Options = {}) {\n const {\n defaultViewMode,\n autosave = list.settingsStorageDefaults?.viewMode?.autosave ?? true,\n } = options;\n\n this.list = list;\n this.autosave = autosave;\n this.state = useState(\n this.list.settingsStorage?.get(\"viewMode\", { autosave: this.autosave }) ??\n defaultViewMode ??\n \"list\",\n );\n }\n\n public get value() {\n return this.state[0];\n }\n\n public get isTiles() {\n return this.value === \"tiles\";\n }\n\n public get isTable() {\n return this.value === \"table\";\n }\n\n public get isList() {\n return this.value === \"list\";\n }\n\n public set(viewMode: RawListViewMode): void {\n this.state[1](viewMode);\n this.list.settingsStorage?.store(\"viewMode\", viewMode, {\n autosave: this.autosave,\n });\n }\n}\n"],"names":[],"mappings":";;AASO,MAAM,YAAA,CAA0B;AAAA,EACrB,IAAA;AAAA,EACA,QAAA;AAAA,EACC,KAAA;AAAA,EAKV,WAAA,CAAY,IAAA,EAAe,OAAA,GAAmB,EAAC,EAAG;AACvD,IAAA,MAAM;AAAA,MACJ,eAAA;AAAA,MACA,QAAA,GAAW,IAAA,CAAK,uBAAA,EAAyB,QAAA,EAAU,QAAA,IAAY;AAAA,KACjE,GAAI,OAAA;AAEJ,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,KAAA,GAAQ,QAAA;AAAA,MACX,IAAA,CAAK,IAAA,CAAK,eAAA,EAAiB,GAAA,CAAI,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA,CAAK,QAAA,EAAU,CAAA,IACpE,eAAA,IACA;AAAA,KACJ;AAAA,EACF;AAAA,EAEA,IAAW,KAAA,GAAQ;AACjB,IAAA,OAAO,IAAA,CAAK,MAAM,CAAC,CAAA;AAAA,EACrB;AAAA,EAEA,IAAW,OAAA,GAAU;AACnB,IAAA,OAAO,KAAK,KAAA,KAAU,OAAA;AAAA,EACxB;AAAA,EAEA,IAAW,OAAA,GAAU;AACnB,IAAA,OAAO,KAAK,KAAA,KAAU,OAAA;AAAA,EACxB;AAAA,EAEA,IAAW,MAAA,GAAS;AAClB,IAAA,OAAO,KAAK,KAAA,KAAU,MAAA;AAAA,EACxB;AAAA,EAEO,IAAI,QAAA,EAAiC;AAC1C,IAAA,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,CAAE,QAAQ,CAAA;AACtB,IAAA,IAAA,CAAK,IAAA,CAAK,eAAA,EAAiB,KAAA,CAAM,UAAA,EAAY,QAAA,EAAU;AAAA,MACrD,UAAU,IAAA,CAAK;AAAA,KAChB,CAAA;AAAA,EACH;AACF;;;;"}
|
|
@@ -25,8 +25,8 @@ class Filter {
|
|
|
25
25
|
storageKey;
|
|
26
26
|
constructor(list, shape) {
|
|
27
27
|
const {
|
|
28
|
-
autosave =
|
|
29
|
-
manualSave =
|
|
28
|
+
autosave = list.settingsStorageDefaults?.filters?.autosave ?? false,
|
|
29
|
+
manualSave = list.settingsStorageDefaults?.filters?.manualSave ?? true,
|
|
30
30
|
property,
|
|
31
31
|
mode = "some",
|
|
32
32
|
values,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filter.mjs","sources":["../../../../../../../../../src/components/List/model/filter/Filter.ts"],"sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnFilter,\n InitialTableState,\n} from \"@tanstack/react-table\";\nimport type List from \"@/components/List/model/List\";\nimport { getProperty } from \"dot-prop\";\nimport type {\n FilterMatcher,\n FilterMode,\n FilterShape,\n FilterUpdatedCallback,\n} from \"@/components/List/model/filter/types\";\nimport type {\n PropertyName,\n PropertyValueRenderMethod,\n} from \"@/components/List/model/types\";\nimport { customPropertyPrefix } from \"@/components/List/model/types\";\nimport { difference, unique } from \"remeda\";\nimport { FilterValue } from \"@/components/List/model/filter/FilterValue\";\nimport { toArray } from \"@/lib/array/toArray\";\nimport type { ListSettingsStoreOperationOptions } from \"../ListSettingsStore\";\n\nconst equalsPropertyMatcher: FilterMatcher<unknown, never, never> = (\n filterValue,\n propertyValue,\n) => filterValue === propertyValue;\n\nconst stringCastRenderMethod: PropertyValueRenderMethod<unknown> = (value) =>\n String(value);\n\nexport class Filter<T, TProp extends PropertyName<T>, TMatchValue> {\n private _values?: FilterValue[] | undefined;\n private _valuesFromTableState?: FilterValue[];\n public readonly list: List<T>;\n public readonly property: TProp;\n public readonly mode: FilterMode;\n public readonly matcher: FilterMatcher<T, never, never>;\n public readonly renderItem: PropertyValueRenderMethod<TMatchValue>;\n public readonly name?: string;\n public readonly autosave: boolean;\n public readonly manualSave: boolean;\n private onFilterChangeCallbacks = new Set<FilterUpdatedCallback>();\n private readonly defaultSelectedValues?: FilterValue[];\n public readonly priority: \"primary\" | \"secondary\";\n public readonly storageKey: string;\n\n public constructor(list: List<T>, shape: FilterShape<T, TProp, TMatchValue>) {\n const {\n autosave = true,\n manualSave = false,\n property,\n mode = \"some\",\n values,\n matcher = equalsPropertyMatcher,\n renderItem = stringCastRenderMethod,\n priority = \"primary\",\n name,\n defaultSelected,\n onChange,\n } = shape;\n\n this.list = list;\n this.autosave = autosave;\n this.manualSave = manualSave;\n this.property = property;\n this.storageKey = String(property);\n this.mode = mode;\n this._values = values?.map((v) => FilterValue.create(this, v));\n this.matcher = matcher;\n this.renderItem = renderItem;\n this.name = name;\n this.priority = priority;\n this.defaultSelectedValues = defaultSelected?.map((v) =>\n FilterValue.create(this, v),\n );\n if (onChange) {\n this.onFilterChangeCallbacks.add(onChange);\n }\n }\n\n public updateInitialState(initialState: InitialTableState) {\n const initialIds = this.getInitialSelectedIds();\n\n if (initialIds?.length) {\n initialState.columnFilters = [\n ...(initialState.columnFilters ?? []),\n {\n id: this.property as string,\n value: initialIds,\n },\n ];\n }\n }\n\n private getInitialSelectedIds() {\n return (\n this.getStoredSelectedIds({\n autosave: this.autosave,\n manualSave: this.manualSave,\n }) ?? this.defaultSelectedValues?.map((v) => v.id)\n );\n }\n\n private getStoredSelectedIds(options: ListSettingsStoreOperationOptions) {\n return this.list.settingsStorage?.get(\"activeFilters\", options)?.[\n this.storageKey\n ];\n }\n\n private getStoredSelectedValues(options: ListSettingsStoreOperationOptions) {\n return this.getStoredSelectedIds(options)\n ?.map((id) => this.values.find((v) => v.id === id))\n .filter((v): v is FilterValue => v !== undefined);\n }\n\n public static storeFilters<T>(\n list: List<T>,\n options: ListSettingsStoreOperationOptions,\n ) {\n const data = Object.fromEntries(\n list.filters.map((filter) => [\n filter.storageKey,\n filter.getArrayValue().map((v) => v.id),\n ]),\n );\n\n list.settingsStorage?.store(\"activeFilters\", data, options);\n }\n\n public updateTableColumnDef(def: ColumnDef<T>): void {\n def.enableColumnFilter = true;\n def.filterFn = this.getReactTableFilterFn();\n }\n\n private getReactTableFilterFn(): ColumnDef<T>[\"filterFn\"] {\n return (row, _, filterValue) => {\n const propertyAsString = this.property as string;\n\n const filterBy = propertyAsString.startsWith(customPropertyPrefix)\n ? row.original\n : getProperty(row.original, propertyAsString);\n\n return this.checkFilterMatches(filterBy, filterValue);\n };\n }\n\n private checkFilterMatches(\n property: unknown,\n filterValueInput: unknown,\n ): boolean {\n if (filterValueInput === null) {\n return true;\n }\n\n const predicate = (filterValue: FilterValue) =>\n this.matcher(filterValue.value as never, property as never);\n\n const toFilterValue = (something: unknown) =>\n FilterValue.create(this, something);\n\n if (this.mode === \"all\") {\n return toArray(filterValueInput).map(toFilterValue).every(predicate);\n } else if (this.mode === \"some\") {\n const filterArr = toArray(filterValueInput);\n return (\n filterArr.length === 0 || filterArr.map(toFilterValue).some(predicate)\n );\n } else if (this.mode === \"one\") {\n const oneValue = Array.isArray(filterValueInput)\n ? filterValueInput[0]\n : filterValueInput;\n return predicate(toFilterValue(oneValue));\n }\n\n throw new Error(`Unknown filter mode '${this.mode}'`);\n }\n\n protected getTableColumnFilter(): ColumnFilter | undefined {\n return this.list.reactTable.table\n .getState()\n .columnFilters.find((f) => f.id === this.property);\n }\n\n private getTableColumn(): Column<T> {\n return this.list.reactTable.getTableColumn(this.property);\n }\n\n public getValue(): unknown {\n return this.getTableColumnFilter()?.value ?? null;\n }\n\n private getValuesFromTableState() {\n return unique(\n Array.from(this.getTableColumn().getFacetedUniqueValues().keys())\n .flatMap((v) => v)\n .filter((v) => v !== undefined && v !== null),\n ).map((v) => FilterValue.create(this, v));\n }\n\n private checkIfValueIsUnknown(value: FilterValue) {\n const isKnown = this.values.some((v) => v.id === value.id);\n return !isKnown;\n }\n\n public deleteUnknownFilterValues() {\n if (this.values === this.valuesFromTableState) {\n return;\n }\n\n for (const currentValues of this.getArrayValue()) {\n if (this.checkIfValueIsUnknown(currentValues)) {\n this.deactivateValue(currentValues);\n }\n }\n }\n\n public get values(): FilterValue[] {\n return this._values ?? this.valuesFromTableState;\n }\n\n private get valuesFromTableState(): FilterValue[] {\n if (!this._valuesFromTableState) {\n this._valuesFromTableState = this.getValuesFromTableState();\n }\n return this._valuesFromTableState;\n }\n\n public getArrayValue(): FilterValue[] {\n const value = this.getValue();\n return value === null\n ? []\n : toArray(value).map((v) => FilterValue.create(this, v));\n }\n\n public isValueActive(value: FilterValue): boolean {\n return this.getArrayValue().some((v) => v.equals(value));\n }\n\n public isActive(): boolean {\n return this.getArrayValue().length > 0;\n }\n\n public deactivateValue(value: FilterValue): void {\n const currentValueAsArray = this.getArrayValue();\n\n let updatedValue: FilterValue[] | FilterValue | null;\n\n if (this.mode === \"all\" || this.mode === \"some\") {\n updatedValue = currentValueAsArray.filter((v) => !v.equals(value));\n } else {\n updatedValue = null;\n }\n\n this.list.reactTable\n .getTableColumn(this.property)\n .setFilterValue(updatedValue);\n\n this.callOnChangedHandlers(updatedValue);\n }\n\n private callOnChangedHandlers(\n newValue: FilterValue[] | FilterValue | null,\n ): void {\n const values = toArray(newValue).map((v) => v?.value);\n this.onFilterChangeCallbacks.forEach((cb) => cb(values));\n }\n\n public hasChanges(): boolean {\n const currentIds = this.getArrayValue().map((v) => v.id);\n\n const defaultIds =\n this.getStoredSelectedIds({ autosave: false }) ??\n this.defaultSelectedValues?.map((v) => v.id) ??\n [];\n\n return (\n currentIds.length !== defaultIds.length ||\n difference(currentIds, defaultIds).length > 0\n );\n }\n\n public isStoringAvailable(): boolean {\n return !!this.list.settingsStorage && this.manualSave;\n }\n\n public resetValues(): void {\n let resetTo: FilterValue[] | FilterValue | null;\n\n const storedValues =\n this.getStoredSelectedValues({ autosave: false }) ??\n this.defaultSelectedValues;\n\n if (storedValues) {\n resetTo = storedValues;\n } else {\n if (this.mode === \"all\" || this.mode === \"some\") {\n resetTo = [];\n } else {\n resetTo = null;\n }\n }\n\n this.list.reactTable.getTableColumn(this.property).setFilterValue(resetTo);\n this.callOnChangedHandlers(resetTo);\n }\n\n public clear(): void {\n this.list.reactTable.getTableColumn(this.property).setFilterValue(null);\n this.callOnChangedHandlers(null);\n }\n\n public toggleValue(newValue: FilterValue): void {\n const currentValueAsArray = this.getArrayValue();\n\n let updatedValue: FilterValue[] | FilterValue | null;\n\n if (this.mode === \"all\" || this.mode === \"some\") {\n if (newValue.isActive) {\n updatedValue = currentValueAsArray.filter((v) => !v.equals(newValue));\n } else {\n updatedValue = [...currentValueAsArray, newValue];\n }\n } else {\n updatedValue = newValue.isActive ? null : newValue;\n }\n\n this.list.reactTable\n .getTableColumn(this.property)\n .setFilterValue(updatedValue);\n this.callOnChangedHandlers(updatedValue);\n }\n\n public onFilterUpdated(cb: () => unknown): void {\n this.onFilterChangeCallbacks.add(cb);\n }\n}\n"],"names":[],"mappings":";;;;;;AAwBA,MAAM,qBAAA,GAA8D,CAClE,WAAA,EACA,aAAA,KACG,WAAA,KAAgB,aAAA;AAErB,MAAM,sBAAA,GAA6D,CAAC,KAAA,KAClE,MAAA,CAAO,KAAK,CAAA;AAEP,MAAM,MAAA,CAAsD;AAAA,EACzD,OAAA;AAAA,EACA,qBAAA;AAAA,EACQ,IAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACR,uBAAA,uBAA8B,GAAA,EAA2B;AAAA,EAChD,qBAAA;AAAA,EACD,QAAA;AAAA,EACA,UAAA;AAAA,EAET,WAAA,CAAY,MAAe,KAAA,EAA2C;AAC3E,IAAA,MAAM;AAAA,MACJ,QAAA,GAAW,IAAA;AAAA,MACX,UAAA,GAAa,KAAA;AAAA,MACb,QAAA;AAAA,MACA,IAAA,GAAO,MAAA;AAAA,MACP,MAAA;AAAA,MACA,OAAA,GAAU,qBAAA;AAAA,MACV,UAAA,GAAa,sBAAA;AAAA,MACb,QAAA,GAAW,SAAA;AAAA,MACX,IAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACF,GAAI,KAAA;AAEJ,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,UAAA,GAAa,OAAO,QAAQ,CAAA;AACjC,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,QAAQ,GAAA,CAAI,CAAC,MAAM,WAAA,CAAY,MAAA,CAAO,IAAA,EAAM,CAAC,CAAC,CAAA;AAC7D,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,wBAAwB,eAAA,EAAiB,GAAA;AAAA,MAAI,CAAC,CAAA,KACjD,WAAA,CAAY,MAAA,CAAO,MAAM,CAAC;AAAA,KAC5B;AACA,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,IAAA,CAAK,uBAAA,CAAwB,IAAI,QAAQ,CAAA;AAAA,IAC3C;AAAA,EACF;AAAA,EAEO,mBAAmB,YAAA,EAAiC;AACzD,IAAA,MAAM,UAAA,GAAa,KAAK,qBAAA,EAAsB;AAE9C,IAAA,IAAI,YAAY,MAAA,EAAQ;AACtB,MAAA,YAAA,CAAa,aAAA,GAAgB;AAAA,QAC3B,GAAI,YAAA,CAAa,aAAA,IAAiB,EAAC;AAAA,QACnC;AAAA,UACE,IAAI,IAAA,CAAK,QAAA;AAAA,UACT,KAAA,EAAO;AAAA;AACT,OACF;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,qBAAA,GAAwB;AAC9B,IAAA,OACE,KAAK,oBAAA,CAAqB;AAAA,MACxB,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,YAAY,IAAA,CAAK;AAAA,KAClB,KAAK,IAAA,CAAK,qBAAA,EAAuB,IAAI,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA;AAAA,EAErD;AAAA,EAEQ,qBAAqB,OAAA,EAA4C;AACvE,IAAA,OAAO,IAAA,CAAK,KAAK,eAAA,EAAiB,GAAA,CAAI,iBAAiB,OAAO,CAAA,GAC5D,KAAK,UACP,CAAA;AAAA,EACF;AAAA,EAEQ,wBAAwB,OAAA,EAA4C;AAC1E,IAAA,OAAO,IAAA,CAAK,qBAAqB,OAAO,CAAA,EACpC,IAAI,CAAC,EAAA,KAAO,KAAK,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAC,EACjD,MAAA,CAAO,CAAC,CAAA,KAAwB,CAAA,KAAM,MAAS,CAAA;AAAA,EACpD;AAAA,EAEA,OAAc,YAAA,CACZ,IAAA,EACA,OAAA,EACA;AACA,IAAA,MAAM,OAAO,MAAA,CAAO,WAAA;AAAA,MAClB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AAAA,QAC3B,MAAA,CAAO,UAAA;AAAA,QACP,OAAO,aAAA,EAAc,CAAE,IAAI,CAAC,CAAA,KAAM,EAAE,EAAE;AAAA,OACvC;AAAA,KACH;AAEA,IAAA,IAAA,CAAK,eAAA,EAAiB,KAAA,CAAM,eAAA,EAAiB,IAAA,EAAM,OAAO,CAAA;AAAA,EAC5D;AAAA,EAEO,qBAAqB,GAAA,EAAyB;AACnD,IAAA,GAAA,CAAI,kBAAA,GAAqB,IAAA;AACzB,IAAA,GAAA,CAAI,QAAA,GAAW,KAAK,qBAAA,EAAsB;AAAA,EAC5C;AAAA,EAEQ,qBAAA,GAAkD;AACxD,IAAA,OAAO,CAAC,GAAA,EAAK,CAAA,EAAG,WAAA,KAAgB;AAC9B,MAAA,MAAM,mBAAmB,IAAA,CAAK,QAAA;AAE9B,MAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,UAAA,CAAW,oBAAoB,CAAA,GAC7D,IAAI,QAAA,GACJ,WAAA,CAAY,GAAA,CAAI,QAAA,EAAU,gBAAgB,CAAA;AAE9C,MAAA,OAAO,IAAA,CAAK,kBAAA,CAAmB,QAAA,EAAU,WAAW,CAAA;AAAA,IACtD,CAAA;AAAA,EACF;AAAA,EAEQ,kBAAA,CACN,UACA,gBAAA,EACS;AACT,IAAA,IAAI,qBAAqB,IAAA,EAAM;AAC7B,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,YAAY,CAAC,WAAA,KACjB,KAAK,OAAA,CAAQ,WAAA,CAAY,OAAgB,QAAiB,CAAA;AAE5D,IAAA,MAAM,gBAAgB,CAAC,SAAA,KACrB,WAAA,CAAY,MAAA,CAAO,MAAM,SAAS,CAAA;AAEpC,IAAA,IAAI,IAAA,CAAK,SAAS,KAAA,EAAO;AACvB,MAAA,OAAO,QAAQ,gBAAgB,CAAA,CAAE,IAAI,aAAa,CAAA,CAAE,MAAM,SAAS,CAAA;AAAA,IACrE,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,MAAA,EAAQ;AAC/B,MAAA,MAAM,SAAA,GAAY,QAAQ,gBAAgB,CAAA;AAC1C,MAAA,OACE,SAAA,CAAU,WAAW,CAAA,IAAK,SAAA,CAAU,IAAI,aAAa,CAAA,CAAE,KAAK,SAAS,CAAA;AAAA,IAEzE,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,KAAA,EAAO;AAC9B,MAAA,MAAM,WAAW,KAAA,CAAM,OAAA,CAAQ,gBAAgB,CAAA,GAC3C,gBAAA,CAAiB,CAAC,CAAA,GAClB,gBAAA;AACJ,MAAA,OAAO,SAAA,CAAU,aAAA,CAAc,QAAQ,CAAC,CAAA;AAAA,IAC1C;AAEA,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,IAAA,CAAK,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,EACtD;AAAA,EAEU,oBAAA,GAAiD;AACzD,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,KAAA,CACzB,QAAA,EAAS,CACT,aAAA,CAAc,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,KAAK,QAAQ,CAAA;AAAA,EACrD;AAAA,EAEQ,cAAA,GAA4B;AAClC,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,cAAA,CAAe,KAAK,QAAQ,CAAA;AAAA,EAC1D;AAAA,EAEO,QAAA,GAAoB;AACzB,IAAA,OAAO,IAAA,CAAK,oBAAA,EAAqB,EAAG,KAAA,IAAS,IAAA;AAAA,EAC/C;AAAA,EAEQ,uBAAA,GAA0B;AAChC,IAAA,OAAO,MAAA;AAAA,MACL,KAAA,CAAM,KAAK,IAAA,CAAK,cAAA,GAAiB,sBAAA,EAAuB,CAAE,MAAM,CAAA,CAC7D,QAAQ,CAAC,CAAA,KAAM,CAAC,CAAA,CAChB,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,MAAA,IAAa,CAAA,KAAM,IAAI;AAAA,KAChD,CAAE,IAAI,CAAC,CAAA,KAAM,YAAY,MAAA,CAAO,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,EAC1C;AAAA,EAEQ,sBAAsB,KAAA,EAAoB;AAChD,IAAA,MAAM,OAAA,GAAU,KAAK,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,KAAA,CAAM,EAAE,CAAA;AACzD,IAAA,OAAO,CAAC,OAAA;AAAA,EACV;AAAA,EAEO,yBAAA,GAA4B;AACjC,IAAA,IAAI,IAAA,CAAK,MAAA,KAAW,IAAA,CAAK,oBAAA,EAAsB;AAC7C,MAAA;AAAA,IACF;AAEA,IAAA,KAAA,MAAW,aAAA,IAAiB,IAAA,CAAK,aAAA,EAAc,EAAG;AAChD,MAAA,IAAI,IAAA,CAAK,qBAAA,CAAsB,aAAa,CAAA,EAAG;AAC7C,QAAA,IAAA,CAAK,gBAAgB,aAAa,CAAA;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAW,MAAA,GAAwB;AACjC,IAAA,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,oBAAA;AAAA,EAC9B;AAAA,EAEA,IAAY,oBAAA,GAAsC;AAChD,IAAA,IAAI,CAAC,KAAK,qBAAA,EAAuB;AAC/B,MAAA,IAAA,CAAK,qBAAA,GAAwB,KAAK,uBAAA,EAAwB;AAAA,IAC5D;AACA,IAAA,OAAO,IAAA,CAAK,qBAAA;AAAA,EACd;AAAA,EAEO,aAAA,GAA+B;AACpC,IAAA,MAAM,KAAA,GAAQ,KAAK,QAAA,EAAS;AAC5B,IAAA,OAAO,KAAA,KAAU,IAAA,GACb,EAAC,GACD,QAAQ,KAAK,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,WAAA,CAAY,MAAA,CAAO,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,EAC3D;AAAA,EAEO,cAAc,KAAA,EAA6B;AAChD,IAAA,OAAO,IAAA,CAAK,eAAc,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EACzD;AAAA,EAEO,QAAA,GAAoB;AACzB,IAAA,OAAO,IAAA,CAAK,aAAA,EAAc,CAAE,MAAA,GAAS,CAAA;AAAA,EACvC;AAAA,EAEO,gBAAgB,KAAA,EAA0B;AAC/C,IAAA,MAAM,mBAAA,GAAsB,KAAK,aAAA,EAAc;AAE/C,IAAA,IAAI,YAAA;AAEJ,IAAA,IAAI,IAAA,CAAK,IAAA,KAAS,KAAA,IAAS,IAAA,CAAK,SAAS,MAAA,EAAQ;AAC/C,MAAA,YAAA,GAAe,mBAAA,CAAoB,OAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,IACnE,CAAA,MAAO;AACL,MAAA,YAAA,GAAe,IAAA;AAAA,IACjB;AAEA,IAAA,IAAA,CAAK,KAAK,UAAA,CACP,cAAA,CAAe,KAAK,QAAQ,CAAA,CAC5B,eAAe,YAAY,CAAA;AAE9B,IAAA,IAAA,CAAK,sBAAsB,YAAY,CAAA;AAAA,EACzC;AAAA,EAEQ,sBACN,QAAA,EACM;AACN,IAAA,MAAM,MAAA,GAAS,QAAQ,QAAQ,CAAA,CAAE,IAAI,CAAC,CAAA,KAAM,GAAG,KAAK,CAAA;AACpD,IAAA,IAAA,CAAK,wBAAwB,OAAA,CAAQ,CAAC,EAAA,KAAO,EAAA,CAAG,MAAM,CAAC,CAAA;AAAA,EACzD;AAAA,EAEO,UAAA,GAAsB;AAC3B,IAAA,MAAM,UAAA,GAAa,KAAK,aAAA,EAAc,CAAE,IAAI,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA;AAEvD,IAAA,MAAM,aACJ,IAAA,CAAK,oBAAA,CAAqB,EAAE,QAAA,EAAU,OAAO,CAAA,IAC7C,IAAA,CAAK,qBAAA,EAAuB,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,EAAE,KAC3C,EAAC;AAEH,IAAA,OACE,UAAA,CAAW,WAAW,UAAA,CAAW,MAAA,IACjC,WAAW,UAAA,EAAY,UAAU,EAAE,MAAA,GAAS,CAAA;AAAA,EAEhD;AAAA,EAEO,kBAAA,GAA8B;AACnC,IAAA,OAAO,CAAC,CAAC,IAAA,CAAK,IAAA,CAAK,mBAAmB,IAAA,CAAK,UAAA;AAAA,EAC7C;AAAA,EAEO,WAAA,GAAoB;AACzB,IAAA,IAAI,OAAA;AAEJ,IAAA,MAAM,YAAA,GACJ,KAAK,uBAAA,CAAwB,EAAE,UAAU,KAAA,EAAO,KAChD,IAAA,CAAK,qBAAA;AAEP,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,OAAA,GAAU,YAAA;AAAA,IACZ,CAAA,MAAO;AACL,MAAA,IAAI,IAAA,CAAK,IAAA,KAAS,KAAA,IAAS,IAAA,CAAK,SAAS,MAAA,EAAQ;AAC/C,QAAA,OAAA,GAAU,EAAC;AAAA,MACb,CAAA,MAAO;AACL,QAAA,OAAA,GAAU,IAAA;AAAA,MACZ;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,KAAK,UAAA,CAAW,cAAA,CAAe,KAAK,QAAQ,CAAA,CAAE,eAAe,OAAO,CAAA;AACzE,IAAA,IAAA,CAAK,sBAAsB,OAAO,CAAA;AAAA,EACpC;AAAA,EAEO,KAAA,GAAc;AACnB,IAAA,IAAA,CAAK,KAAK,UAAA,CAAW,cAAA,CAAe,KAAK,QAAQ,CAAA,CAAE,eAAe,IAAI,CAAA;AACtE,IAAA,IAAA,CAAK,sBAAsB,IAAI,CAAA;AAAA,EACjC;AAAA,EAEO,YAAY,QAAA,EAA6B;AAC9C,IAAA,MAAM,mBAAA,GAAsB,KAAK,aAAA,EAAc;AAE/C,IAAA,IAAI,YAAA;AAEJ,IAAA,IAAI,IAAA,CAAK,IAAA,KAAS,KAAA,IAAS,IAAA,CAAK,SAAS,MAAA,EAAQ;AAC/C,MAAA,IAAI,SAAS,QAAA,EAAU;AACrB,QAAA,YAAA,GAAe,mBAAA,CAAoB,OAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,MACtE,CAAA,MAAO;AACL,QAAA,YAAA,GAAe,CAAC,GAAG,mBAAA,EAAqB,QAAQ,CAAA;AAAA,MAClD;AAAA,IACF,CAAA,MAAO;AACL,MAAA,YAAA,GAAe,QAAA,CAAS,WAAW,IAAA,GAAO,QAAA;AAAA,IAC5C;AAEA,IAAA,IAAA,CAAK,KAAK,UAAA,CACP,cAAA,CAAe,KAAK,QAAQ,CAAA,CAC5B,eAAe,YAAY,CAAA;AAC9B,IAAA,IAAA,CAAK,sBAAsB,YAAY,CAAA;AAAA,EACzC;AAAA,EAEO,gBAAgB,EAAA,EAAyB;AAC9C,IAAA,IAAA,CAAK,uBAAA,CAAwB,IAAI,EAAE,CAAA;AAAA,EACrC;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"Filter.mjs","sources":["../../../../../../../../../src/components/List/model/filter/Filter.ts"],"sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnFilter,\n InitialTableState,\n} from \"@tanstack/react-table\";\nimport type List from \"@/components/List/model/List\";\nimport { getProperty } from \"dot-prop\";\nimport type {\n FilterMatcher,\n FilterMode,\n FilterShape,\n FilterUpdatedCallback,\n} from \"@/components/List/model/filter/types\";\nimport type {\n PropertyName,\n PropertyValueRenderMethod,\n} from \"@/components/List/model/types\";\nimport { customPropertyPrefix } from \"@/components/List/model/types\";\nimport { difference, unique } from \"remeda\";\nimport { FilterValue } from \"@/components/List/model/filter/FilterValue\";\nimport { toArray } from \"@/lib/array/toArray\";\nimport type { ListSettingsStoreOperationOptions } from \"../ListSettingsStore\";\n\nconst equalsPropertyMatcher: FilterMatcher<unknown, never, never> = (\n filterValue,\n propertyValue,\n) => filterValue === propertyValue;\n\nconst stringCastRenderMethod: PropertyValueRenderMethod<unknown> = (value) =>\n String(value);\n\nexport class Filter<T, TProp extends PropertyName<T>, TMatchValue> {\n private _values?: FilterValue[] | undefined;\n private _valuesFromTableState?: FilterValue[];\n public readonly list: List<T>;\n public readonly property: TProp;\n public readonly mode: FilterMode;\n public readonly matcher: FilterMatcher<T, never, never>;\n public readonly renderItem: PropertyValueRenderMethod<TMatchValue>;\n public readonly name?: string;\n public readonly autosave: boolean;\n public readonly manualSave: boolean;\n private onFilterChangeCallbacks = new Set<FilterUpdatedCallback>();\n private readonly defaultSelectedValues?: FilterValue[];\n public readonly priority: \"primary\" | \"secondary\";\n public readonly storageKey: string;\n\n public constructor(list: List<T>, shape: FilterShape<T, TProp, TMatchValue>) {\n const {\n autosave = list.settingsStorageDefaults?.filters?.autosave ?? false,\n manualSave = list.settingsStorageDefaults?.filters?.manualSave ?? true,\n property,\n mode = \"some\",\n values,\n matcher = equalsPropertyMatcher,\n renderItem = stringCastRenderMethod,\n priority = \"primary\",\n name,\n defaultSelected,\n onChange,\n } = shape;\n\n this.list = list;\n this.autosave = autosave;\n this.manualSave = manualSave;\n this.property = property;\n this.storageKey = String(property);\n this.mode = mode;\n this._values = values?.map((v) => FilterValue.create(this, v));\n this.matcher = matcher;\n this.renderItem = renderItem;\n this.name = name;\n this.priority = priority;\n this.defaultSelectedValues = defaultSelected?.map((v) =>\n FilterValue.create(this, v),\n );\n if (onChange) {\n this.onFilterChangeCallbacks.add(onChange);\n }\n }\n\n public updateInitialState(initialState: InitialTableState) {\n const initialIds = this.getInitialSelectedIds();\n\n if (initialIds?.length) {\n initialState.columnFilters = [\n ...(initialState.columnFilters ?? []),\n {\n id: this.property as string,\n value: initialIds,\n },\n ];\n }\n }\n\n private getInitialSelectedIds() {\n return (\n this.getStoredSelectedIds({\n autosave: this.autosave,\n manualSave: this.manualSave,\n }) ?? this.defaultSelectedValues?.map((v) => v.id)\n );\n }\n\n private getStoredSelectedIds(options: ListSettingsStoreOperationOptions) {\n return this.list.settingsStorage?.get(\"activeFilters\", options)?.[\n this.storageKey\n ];\n }\n\n private getStoredSelectedValues(options: ListSettingsStoreOperationOptions) {\n return this.getStoredSelectedIds(options)\n ?.map((id) => this.values.find((v) => v.id === id))\n .filter((v): v is FilterValue => v !== undefined);\n }\n\n public static storeFilters<T>(\n list: List<T>,\n options: ListSettingsStoreOperationOptions,\n ) {\n const data = Object.fromEntries(\n list.filters.map((filter) => [\n filter.storageKey,\n filter.getArrayValue().map((v) => v.id),\n ]),\n );\n\n list.settingsStorage?.store(\"activeFilters\", data, options);\n }\n\n public updateTableColumnDef(def: ColumnDef<T>): void {\n def.enableColumnFilter = true;\n def.filterFn = this.getReactTableFilterFn();\n }\n\n private getReactTableFilterFn(): ColumnDef<T>[\"filterFn\"] {\n return (row, _, filterValue) => {\n const propertyAsString = this.property as string;\n\n const filterBy = propertyAsString.startsWith(customPropertyPrefix)\n ? row.original\n : getProperty(row.original, propertyAsString);\n\n return this.checkFilterMatches(filterBy, filterValue);\n };\n }\n\n private checkFilterMatches(\n property: unknown,\n filterValueInput: unknown,\n ): boolean {\n if (filterValueInput === null) {\n return true;\n }\n\n const predicate = (filterValue: FilterValue) =>\n this.matcher(filterValue.value as never, property as never);\n\n const toFilterValue = (something: unknown) =>\n FilterValue.create(this, something);\n\n if (this.mode === \"all\") {\n return toArray(filterValueInput).map(toFilterValue).every(predicate);\n } else if (this.mode === \"some\") {\n const filterArr = toArray(filterValueInput);\n return (\n filterArr.length === 0 || filterArr.map(toFilterValue).some(predicate)\n );\n } else if (this.mode === \"one\") {\n const oneValue = Array.isArray(filterValueInput)\n ? filterValueInput[0]\n : filterValueInput;\n return predicate(toFilterValue(oneValue));\n }\n\n throw new Error(`Unknown filter mode '${this.mode}'`);\n }\n\n protected getTableColumnFilter(): ColumnFilter | undefined {\n return this.list.reactTable.table\n .getState()\n .columnFilters.find((f) => f.id === this.property);\n }\n\n private getTableColumn(): Column<T> {\n return this.list.reactTable.getTableColumn(this.property);\n }\n\n public getValue(): unknown {\n return this.getTableColumnFilter()?.value ?? null;\n }\n\n private getValuesFromTableState() {\n return unique(\n Array.from(this.getTableColumn().getFacetedUniqueValues().keys())\n .flatMap((v) => v)\n .filter((v) => v !== undefined && v !== null),\n ).map((v) => FilterValue.create(this, v));\n }\n\n private checkIfValueIsUnknown(value: FilterValue) {\n const isKnown = this.values.some((v) => v.id === value.id);\n return !isKnown;\n }\n\n public deleteUnknownFilterValues() {\n if (this.values === this.valuesFromTableState) {\n return;\n }\n\n for (const currentValues of this.getArrayValue()) {\n if (this.checkIfValueIsUnknown(currentValues)) {\n this.deactivateValue(currentValues);\n }\n }\n }\n\n public get values(): FilterValue[] {\n return this._values ?? this.valuesFromTableState;\n }\n\n private get valuesFromTableState(): FilterValue[] {\n if (!this._valuesFromTableState) {\n this._valuesFromTableState = this.getValuesFromTableState();\n }\n return this._valuesFromTableState;\n }\n\n public getArrayValue(): FilterValue[] {\n const value = this.getValue();\n return value === null\n ? []\n : toArray(value).map((v) => FilterValue.create(this, v));\n }\n\n public isValueActive(value: FilterValue): boolean {\n return this.getArrayValue().some((v) => v.equals(value));\n }\n\n public isActive(): boolean {\n return this.getArrayValue().length > 0;\n }\n\n public deactivateValue(value: FilterValue): void {\n const currentValueAsArray = this.getArrayValue();\n\n let updatedValue: FilterValue[] | FilterValue | null;\n\n if (this.mode === \"all\" || this.mode === \"some\") {\n updatedValue = currentValueAsArray.filter((v) => !v.equals(value));\n } else {\n updatedValue = null;\n }\n\n this.list.reactTable\n .getTableColumn(this.property)\n .setFilterValue(updatedValue);\n\n this.callOnChangedHandlers(updatedValue);\n }\n\n private callOnChangedHandlers(\n newValue: FilterValue[] | FilterValue | null,\n ): void {\n const values = toArray(newValue).map((v) => v?.value);\n this.onFilterChangeCallbacks.forEach((cb) => cb(values));\n }\n\n public hasChanges(): boolean {\n const currentIds = this.getArrayValue().map((v) => v.id);\n\n const defaultIds =\n this.getStoredSelectedIds({ autosave: false }) ??\n this.defaultSelectedValues?.map((v) => v.id) ??\n [];\n\n return (\n currentIds.length !== defaultIds.length ||\n difference(currentIds, defaultIds).length > 0\n );\n }\n\n public isStoringAvailable(): boolean {\n return !!this.list.settingsStorage && this.manualSave;\n }\n\n public resetValues(): void {\n let resetTo: FilterValue[] | FilterValue | null;\n\n const storedValues =\n this.getStoredSelectedValues({ autosave: false }) ??\n this.defaultSelectedValues;\n\n if (storedValues) {\n resetTo = storedValues;\n } else {\n if (this.mode === \"all\" || this.mode === \"some\") {\n resetTo = [];\n } else {\n resetTo = null;\n }\n }\n\n this.list.reactTable.getTableColumn(this.property).setFilterValue(resetTo);\n this.callOnChangedHandlers(resetTo);\n }\n\n public clear(): void {\n this.list.reactTable.getTableColumn(this.property).setFilterValue(null);\n this.callOnChangedHandlers(null);\n }\n\n public toggleValue(newValue: FilterValue): void {\n const currentValueAsArray = this.getArrayValue();\n\n let updatedValue: FilterValue[] | FilterValue | null;\n\n if (this.mode === \"all\" || this.mode === \"some\") {\n if (newValue.isActive) {\n updatedValue = currentValueAsArray.filter((v) => !v.equals(newValue));\n } else {\n updatedValue = [...currentValueAsArray, newValue];\n }\n } else {\n updatedValue = newValue.isActive ? null : newValue;\n }\n\n this.list.reactTable\n .getTableColumn(this.property)\n .setFilterValue(updatedValue);\n this.callOnChangedHandlers(updatedValue);\n }\n\n public onFilterUpdated(cb: () => unknown): void {\n this.onFilterChangeCallbacks.add(cb);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,11 @@ class Search {
|
|
|
8
8
|
initialValue;
|
|
9
9
|
autosave;
|
|
10
10
|
constructor(list, searchShape) {
|
|
11
|
-
const {
|
|
11
|
+
const {
|
|
12
|
+
autosave = list.settingsStorageDefaults?.search?.autosave ?? false,
|
|
13
|
+
render,
|
|
14
|
+
textFieldProps
|
|
15
|
+
} = searchShape;
|
|
12
16
|
this.autosave = autosave;
|
|
13
17
|
this.list = list;
|
|
14
18
|
this.render = render;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Search.mjs","sources":["../../../../../../../../../src/components/List/model/search/Search.ts"],"sourcesContent":["import type List from \"@/components/List/model/List\";\nimport type {\n SearchFieldRenderComponent,\n SearchShape,\n SearchValue,\n} from \"@/components/List/model/search/types\";\nimport type { InitialTableState } from \"@tanstack/react-table\";\n\nexport class Search<T> {\n public readonly list: List<T>;\n public readonly render?: SearchFieldRenderComponent;\n public readonly textFieldProps: SearchShape<T>[\"textFieldProps\"];\n private onUpdateCallbacks = new Set<() => unknown>();\n private readonly initialValue?: string;\n private readonly autosave: boolean;\n\n public constructor(list: List<T>, searchShape: SearchShape<T>) {\n const {
|
|
1
|
+
{"version":3,"file":"Search.mjs","sources":["../../../../../../../../../src/components/List/model/search/Search.ts"],"sourcesContent":["import type List from \"@/components/List/model/List\";\nimport type {\n SearchFieldRenderComponent,\n SearchShape,\n SearchValue,\n} from \"@/components/List/model/search/types\";\nimport type { InitialTableState } from \"@tanstack/react-table\";\n\nexport class Search<T> {\n public readonly list: List<T>;\n public readonly render?: SearchFieldRenderComponent;\n public readonly textFieldProps: SearchShape<T>[\"textFieldProps\"];\n private onUpdateCallbacks = new Set<() => unknown>();\n private readonly initialValue?: string;\n private readonly autosave: boolean;\n\n public constructor(list: List<T>, searchShape: SearchShape<T>) {\n const {\n autosave = list.settingsStorageDefaults?.search?.autosave ?? false,\n render,\n textFieldProps,\n } = searchShape;\n\n this.autosave = autosave;\n this.list = list;\n this.render = render;\n this.textFieldProps = textFieldProps;\n this.initialValue = this.getInitialValue(searchShape);\n }\n\n public get value(): SearchValue {\n return this.list.reactTable.searchString;\n }\n\n public get isSet() {\n return this.value !== undefined;\n }\n\n private callOnUpdateCallbacks(): void {\n this.onUpdateCallbacks.forEach((cb) => cb());\n }\n\n private getInitialValue(shape: SearchShape<T>) {\n return (\n this.list.settingsStorage?.get(\"search\", { autosave: shape.autosave })\n ?.value ?? shape.defaultValue\n );\n }\n\n public updateInitialState(initialState: InitialTableState) {\n initialState.globalFilter = this.initialValue;\n }\n\n public setValue(value: SearchValue): void {\n if (value === undefined || value.trim() === \"\") {\n if (this.list.reactTable.table.getState().globalFilter) {\n this.list.reactTable.table.setGlobalFilter(undefined);\n this.callOnUpdateCallbacks();\n }\n } else {\n this.list.reactTable.table.setGlobalFilter(value);\n this.callOnUpdateCallbacks();\n }\n\n this.list.settingsStorage?.store(\n \"search\",\n { value },\n { autosave: this.autosave },\n );\n }\n\n public clear(): void {\n this.setValue(undefined);\n }\n\n public onUpdated(cb: () => unknown): void {\n this.onUpdateCallbacks.add(cb);\n }\n}\n"],"names":[],"mappings":"AAQO,MAAM,MAAA,CAAU;AAAA,EACL,IAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACR,iBAAA,uBAAwB,GAAA,EAAmB;AAAA,EAClC,YAAA;AAAA,EACA,QAAA;AAAA,EAEV,WAAA,CAAY,MAAe,WAAA,EAA6B;AAC7D,IAAA,MAAM;AAAA,MACJ,QAAA,GAAW,IAAA,CAAK,uBAAA,EAAyB,MAAA,EAAQ,QAAA,IAAY,KAAA;AAAA,MAC7D,MAAA;AAAA,MACA;AAAA,KACF,GAAI,WAAA;AAEJ,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,cAAA,GAAiB,cAAA;AACtB,IAAA,IAAA,CAAK,YAAA,GAAe,IAAA,CAAK,eAAA,CAAgB,WAAW,CAAA;AAAA,EACtD;AAAA,EAEA,IAAW,KAAA,GAAqB;AAC9B,IAAA,OAAO,IAAA,CAAK,KAAK,UAAA,CAAW,YAAA;AAAA,EAC9B;AAAA,EAEA,IAAW,KAAA,GAAQ;AACjB,IAAA,OAAO,KAAK,KAAA,KAAU,MAAA;AAAA,EACxB;AAAA,EAEQ,qBAAA,GAA8B;AACpC,IAAA,IAAA,CAAK,iBAAA,CAAkB,OAAA,CAAQ,CAAC,EAAA,KAAO,IAAI,CAAA;AAAA,EAC7C;AAAA,EAEQ,gBAAgB,KAAA,EAAuB;AAC7C,IAAA,OACE,IAAA,CAAK,IAAA,CAAK,eAAA,EAAiB,GAAA,CAAI,QAAA,EAAU,EAAE,QAAA,EAAU,KAAA,CAAM,QAAA,EAAU,CAAA,EACjE,KAAA,IAAS,KAAA,CAAM,YAAA;AAAA,EAEvB;AAAA,EAEO,mBAAmB,YAAA,EAAiC;AACzD,IAAA,YAAA,CAAa,eAAe,IAAA,CAAK,YAAA;AAAA,EACnC;AAAA,EAEO,SAAS,KAAA,EAA0B;AACxC,IAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,CAAM,IAAA,OAAW,EAAA,EAAI;AAC9C,MAAA,IAAI,KAAK,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,QAAA,GAAW,YAAA,EAAc;AACtD,QAAA,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,eAAA,CAAgB,MAAS,CAAA;AACpD,QAAA,IAAA,CAAK,qBAAA,EAAsB;AAAA,MAC7B;AAAA,IACF,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,eAAA,CAAgB,KAAK,CAAA;AAChD,MAAA,IAAA,CAAK,qBAAA,EAAsB;AAAA,IAC7B;AAEA,IAAA,IAAA,CAAK,KAAK,eAAA,EAAiB,KAAA;AAAA,MACzB,QAAA;AAAA,MACA,EAAE,KAAA,EAAM;AAAA,MACR,EAAE,QAAA,EAAU,IAAA,CAAK,QAAA;AAAS,KAC5B;AAAA,EACF;AAAA,EAEO,KAAA,GAAc;AACnB,IAAA,IAAA,CAAK,SAAS,MAAS,CAAA;AAAA,EACzB;AAAA,EAEO,UAAU,EAAA,EAAyB;AACxC,IAAA,IAAA,CAAK,iBAAA,CAAkB,IAAI,EAAE,CAAA;AAAA,EAC/B;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sorting.mjs","sources":["../../../../../../../../../src/components/List/model/sorting/Sorting.ts"],"sourcesContent":["import type List from \"@/components/List/model/List\";\nimport type {\n SortingDefaultMode,\n SortingShape,\n} from \"@/components/List/model/sorting/types\";\nimport type { PropertyName } from \"@/components/List/model/types\";\nimport type {\n Column,\n ColumnDef,\n ColumnSort,\n SortDirection,\n SortingFn,\n} from \"@tanstack/react-table\";\n\nexport class Sorting<T> {\n public readonly list: List<T>;\n public readonly property: PropertyName<T>;\n public readonly name?: string;\n public readonly directionName?: string;\n public readonly direction: SortDirection;\n public readonly initialEnabled: SortingDefaultMode;\n public readonly customSortingFn?: SortingFn<T>;\n public readonly autosave: boolean;\n\n public constructor(list: List<T>, shape: SortingShape<T>) {\n const {\n property,\n name,\n directionName,\n direction = \"asc\",\n customSortingFn,\n autosave = true,\n } = shape;\n\n this.autosave = autosave;\n this.list = list;\n this.property = property;\n this.name = name;\n this.directionName = directionName;\n this.direction = direction;\n this.customSortingFn = customSortingFn;\n this.initialEnabled = this.getInitialEnabled(shape);\n }\n\n private getInitialEnabled(shape: SortingShape<T>): boolean {\n if (shape.defaultEnabled === \"hidden\") {\n return false;\n }\n\n const storedSorting = this.list.settingsStorage?.get(\"sorting\", {\n autosave: this.autosave,\n });\n\n const storedEnabled = storedSorting\n ? storedSorting.property === this.property &&\n storedSorting.direction === this.direction\n : undefined;\n\n return storedEnabled ?? shape.defaultEnabled ?? false;\n }\n\n public updateTableColumnDef(def: ColumnDef<T>): void {\n def.enableSorting = true;\n if (this.customSortingFn) {\n def.sortingFn = this.customSortingFn;\n }\n }\n\n public getReactTableColumnSort(): ColumnSort {\n return {\n id: this.property as string,\n desc: this.direction === \"desc\",\n };\n }\n\n public isSorted(): boolean {\n const col = this.getTableColumn();\n return col.getIsSorted() == this.direction;\n }\n\n public getTableColumn(): Column<T> {\n return this.list.reactTable.getTableColumn(this.property);\n }\n\n public enable(): void {\n this.list.reactTable\n .getTableColumn(this.property)\n .toggleSorting(this.direction === \"desc\", false);\n\n this.list.settingsStorage?.store(\n \"sorting\",\n {\n property: this.property,\n direction: this.direction,\n },\n {\n autosave: this.autosave,\n },\n );\n }\n\n public clear(): void {\n this.list.reactTable.getTableColumn(this.property).clearSorting();\n }\n\n public get id(): string {\n return `${this.getTableColumn().id}:${this.direction}`;\n }\n}\n"],"names":[],"mappings":"AAcO,MAAM,OAAA,CAAW;AAAA,EACN,IAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EAET,WAAA,CAAY,MAAe,KAAA,EAAwB;AACxD,IAAA,MAAM;AAAA,MACJ,QAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA,GAAY,KAAA;AAAA,MACZ,eAAA;AAAA,MACA,QAAA,GAAW;AAAA,
|
|
1
|
+
{"version":3,"file":"Sorting.mjs","sources":["../../../../../../../../../src/components/List/model/sorting/Sorting.ts"],"sourcesContent":["import type List from \"@/components/List/model/List\";\nimport type {\n SortingDefaultMode,\n SortingShape,\n} from \"@/components/List/model/sorting/types\";\nimport type { PropertyName } from \"@/components/List/model/types\";\nimport type {\n Column,\n ColumnDef,\n ColumnSort,\n SortDirection,\n SortingFn,\n} from \"@tanstack/react-table\";\n\nexport class Sorting<T> {\n public readonly list: List<T>;\n public readonly property: PropertyName<T>;\n public readonly name?: string;\n public readonly directionName?: string;\n public readonly direction: SortDirection;\n public readonly initialEnabled: SortingDefaultMode;\n public readonly customSortingFn?: SortingFn<T>;\n public readonly autosave: boolean;\n\n public constructor(list: List<T>, shape: SortingShape<T>) {\n const {\n property,\n name,\n directionName,\n direction = \"asc\",\n customSortingFn,\n autosave = list.settingsStorageDefaults?.sorting?.autosave ?? true,\n } = shape;\n\n this.autosave = autosave;\n this.list = list;\n this.property = property;\n this.name = name;\n this.directionName = directionName;\n this.direction = direction;\n this.customSortingFn = customSortingFn;\n this.initialEnabled = this.getInitialEnabled(shape);\n }\n\n private getInitialEnabled(shape: SortingShape<T>): boolean {\n if (shape.defaultEnabled === \"hidden\") {\n return false;\n }\n\n const storedSorting = this.list.settingsStorage?.get(\"sorting\", {\n autosave: this.autosave,\n });\n\n const storedEnabled = storedSorting\n ? storedSorting.property === this.property &&\n storedSorting.direction === this.direction\n : undefined;\n\n return storedEnabled ?? shape.defaultEnabled ?? false;\n }\n\n public updateTableColumnDef(def: ColumnDef<T>): void {\n def.enableSorting = true;\n if (this.customSortingFn) {\n def.sortingFn = this.customSortingFn;\n }\n }\n\n public getReactTableColumnSort(): ColumnSort {\n return {\n id: this.property as string,\n desc: this.direction === \"desc\",\n };\n }\n\n public isSorted(): boolean {\n const col = this.getTableColumn();\n return col.getIsSorted() == this.direction;\n }\n\n public getTableColumn(): Column<T> {\n return this.list.reactTable.getTableColumn(this.property);\n }\n\n public enable(): void {\n this.list.reactTable\n .getTableColumn(this.property)\n .toggleSorting(this.direction === \"desc\", false);\n\n this.list.settingsStorage?.store(\n \"sorting\",\n {\n property: this.property,\n direction: this.direction,\n },\n {\n autosave: this.autosave,\n },\n );\n }\n\n public clear(): void {\n this.list.reactTable.getTableColumn(this.property).clearSorting();\n }\n\n public get id(): string {\n return `${this.getTableColumn().id}:${this.direction}`;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","sources":["../../../../../../../../src/components/List/model/types.ts"],"sourcesContent":["import type { FilterShape } from \"@/components/List/model/filter/types\";\nimport type { ItemViewShape } from \"@/components/List/model/item/ItemView\";\nimport type List from \"@/components/List/model/List\";\nimport type { IncrementalLoaderShape } from \"@/components/List/model/loading/types\";\nimport type { BatchesControllerShape } from \"@/components/List/model/pagination/types\";\nimport type { SearchShape } from \"@/components/List/model/search/types\";\nimport type { SortingShape } from \"@/components/List/model/sorting/types\";\nimport type { TableShape } from \"@/components/List/model/table/types\";\nimport type { ItemType } from \"@/lib/types/array\";\nimport type { MultipleSelection, SelectionBehavior } from \"@react-types/shared\";\nimport type { DeepKeys, DeepValue } from \"@tanstack/react-table\";\nimport type { ReactNode } from \"react\";\n\nexport const customPropertyPrefix = \"$\" as const;\nexport type CustomPropertyName = `${typeof customPropertyPrefix}${string}`;\n\nexport type PropertyName<T> = DeepKeys<T> | CustomPropertyName;\nexport type PropertyValue<T, TProp> = TProp extends CustomPropertyName\n ? T\n : DeepValue<T, TProp>;\nexport type PropertyValueRenderMethod<TMatcherValue> = (\n prop: NonNullable<ItemType<TMatcherValue>>,\n) => ReactNode;\n\nexport type OnListChanged<T, TMeta = unknown> = (list: List<T, TMeta>) => void;\n\nexport interface ListSupportedComponentProps extends MultipleSelection {\n \"aria-labelledby\"?: string;\n \"aria-label\"?: string;\n selectionBehavior?: SelectionBehavior;\n}\n\nexport interface ListShape<\n T,\n TMeta = unknown,\n> extends ListSupportedComponentProps {\n settingStorageKey?: string;\n\n loader?: IncrementalLoaderShape<T>;\n filters?: FilterShape<T, never, never>[];\n itemView?: ItemViewShape<T>;\n search?: SearchShape<T>;\n sorting?: SortingShape<T>[];\n batchesController?: BatchesControllerShape;\n table?: TableShape<T>;\n\n onAction?: ItemActionFn<T>;\n accordion?: boolean;\n loadingItemsCount?: number;\n getItemId?: GetItemId<T>;\n onChange?: OnListChanged<T, TMeta>;\n defaultViewMode?: ListViewMode;\n}\n\nexport type PropertyRecord<T, TValue> = Partial<\n Record<PropertyName<T>, TValue>\n>;\n\nexport interface ListSettingsStorageShape {\n storageKey: string;\n}\n\nexport type ListViewMode = \"table\" | \"list\" | \"tiles\";\nexport type ItemActionFn<T> = (data: T) => void;\nexport type GetItemId<T> = (data: T) => string;\n"],"names":[],"mappings":"AAaO,MAAM,oBAAA,GAAuB;;;;"}
|
|
1
|
+
{"version":3,"file":"types.mjs","sources":["../../../../../../../../src/components/List/model/types.ts"],"sourcesContent":["import type { FilterShape } from \"@/components/List/model/filter/types\";\nimport type { ItemViewShape } from \"@/components/List/model/item/ItemView\";\nimport type List from \"@/components/List/model/List\";\nimport type { IncrementalLoaderShape } from \"@/components/List/model/loading/types\";\nimport type { BatchesControllerShape } from \"@/components/List/model/pagination/types\";\nimport type { SearchShape } from \"@/components/List/model/search/types\";\nimport type { SortingShape } from \"@/components/List/model/sorting/types\";\nimport type { TableShape } from \"@/components/List/model/table/types\";\nimport type { ItemType } from \"@/lib/types/array\";\nimport type { MultipleSelection, SelectionBehavior } from \"@react-types/shared\";\nimport type { DeepKeys, DeepValue } from \"@tanstack/react-table\";\nimport type { ReactNode } from \"react\";\n\nexport const customPropertyPrefix = \"$\" as const;\nexport type CustomPropertyName = `${typeof customPropertyPrefix}${string}`;\n\nexport type PropertyName<T> = DeepKeys<T> | CustomPropertyName;\nexport type PropertyValue<T, TProp> = TProp extends CustomPropertyName\n ? T\n : DeepValue<T, TProp>;\nexport type PropertyValueRenderMethod<TMatcherValue> = (\n prop: NonNullable<ItemType<TMatcherValue>>,\n) => ReactNode;\n\nexport type OnListChanged<T, TMeta = unknown> = (list: List<T, TMeta>) => void;\n\nexport interface ListSupportedComponentProps extends MultipleSelection {\n \"aria-labelledby\"?: string;\n \"aria-label\"?: string;\n selectionBehavior?: SelectionBehavior;\n}\n\nexport interface ListSettingsStorageDefaults {\n filters?: {\n autosave?: boolean;\n manualSave?: boolean;\n };\n\n sorting: {\n autosave?: boolean;\n };\n\n viewMode: {\n autosave?: boolean;\n };\n\n search: {\n autosave?: boolean;\n };\n}\n\nexport interface ListShape<\n T,\n TMeta = unknown,\n> extends ListSupportedComponentProps {\n settingStorageKey?: string;\n\n loader?: IncrementalLoaderShape<T>;\n filters?: FilterShape<T, never, never>[];\n itemView?: ItemViewShape<T>;\n search?: SearchShape<T>;\n sorting?: SortingShape<T>[];\n batchesController?: BatchesControllerShape;\n table?: TableShape<T>;\n\n onAction?: ItemActionFn<T>;\n accordion?: boolean;\n loadingItemsCount?: number;\n getItemId?: GetItemId<T>;\n onChange?: OnListChanged<T, TMeta>;\n defaultViewMode?: ListViewMode;\n settingsStorageDefaults?: ListSettingsStorageDefaults;\n}\n\nexport type PropertyRecord<T, TValue> = Partial<\n Record<PropertyName<T>, TValue>\n>;\n\nexport interface ListSettingsStorageShape {\n storageKey: string;\n}\n\nexport type ListViewMode = \"table\" | \"list\" | \"tiles\";\nexport type ItemActionFn<T> = (data: T) => void;\nexport type GetItemId<T> = (data: T) => string;\n"],"names":[],"mappings":"AAaO,MAAM,oBAAA,GAAuB;;;;"}
|
|
@@ -3,7 +3,7 @@ import { BatchesController } from './pagination/BatchesController';
|
|
|
3
3
|
import { Filter } from './filter/Filter';
|
|
4
4
|
import { Sorting } from './sorting/Sorting';
|
|
5
5
|
import { default as ReactTable } from './ReactTable';
|
|
6
|
-
import { GetItemId, ItemActionFn, ListShape, ListSupportedComponentProps } from './types';
|
|
6
|
+
import { GetItemId, ItemActionFn, ListSettingsStorageDefaults, ListShape, ListSupportedComponentProps } from './types';
|
|
7
7
|
import { IncrementalLoader } from './loading/IncrementalLoader';
|
|
8
8
|
import { Search } from './search/Search';
|
|
9
9
|
import { ItemView } from './item/ItemView';
|
|
@@ -28,6 +28,7 @@ export declare class List<T = unknown, TMeta = unknown> {
|
|
|
28
28
|
readonly settingsStorage?: ListSettingsStore<T>;
|
|
29
29
|
readonly loadingItemsCount: number;
|
|
30
30
|
readonly viewMode: ListViewMode<T>;
|
|
31
|
+
readonly settingsStorageDefaults?: ListSettingsStorageDefaults;
|
|
31
32
|
constructor(shape: ListShape<T, TMeta>);
|
|
32
33
|
get isFiltered(): boolean;
|
|
33
34
|
get visibleSorting(): Sorting<T>[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/model/List.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sDAAsD,CAAC;AACzF,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAClE,OAAO,UAAU,MAAM,oCAAoC,CAAC;AAC5D,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,SAAS,EACT,2BAA2B,EAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAEtF,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,qBAAa,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAC5C,SAAgB,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;IACnD,SAAgB,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvC,SAAgB,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,SAAgB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,SAAgB,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACzC,SAAgB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1C,SAAgB,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC9C,SAAgB,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC7C,SAAgB,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3C,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACzC,SAAgB,cAAc,EAAE,2BAA2B,CAAC;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC;IACxB,SAAgB,eAAe,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvD,SAAgB,iBAAiB,SAAC;IAClC,SAAgB,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/model/List.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sDAAsD,CAAC;AACzF,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAClE,OAAO,UAAU,MAAM,oCAAoC,CAAC;AAC5D,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,2BAA2B,EAC3B,SAAS,EACT,2BAA2B,EAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAEtF,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,qBAAa,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAC5C,SAAgB,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;IACnD,SAAgB,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvC,SAAgB,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,SAAgB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,SAAgB,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACzC,SAAgB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1C,SAAgB,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC9C,SAAgB,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC7C,SAAgB,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3C,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACzC,SAAgB,cAAc,EAAE,2BAA2B,CAAC;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC;IACxB,SAAgB,eAAe,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvD,SAAgB,iBAAiB,SAAC;IAClC,SAAgB,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1C,SAAgB,uBAAuB,CAAC,EAAE,2BAA2B,CAAC;gBAEnD,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;IAuD7C,IAAW,UAAU,IAAI,OAAO,CAK/B;IAED,IAAW,cAAc,iBAExB;WAEa,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,EACrC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GACzB,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC;IAIV,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAMlC,YAAY,IAAI,IAAI;IAIpB,YAAY,IAAI,IAAI;IAIpB,YAAY,IAAI,IAAI;IAIpB,UAAU,IAAI,OAAO;CAG7B;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListViewMode.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/model/ListViewMode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,IAAI,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,UAAU,OAAO;IACf,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,YAAY,CAAC,CAAC,GAAG,OAAO;IACnC,SAAgB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,SAAgB,QAAQ,EAAE,OAAO,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAGpB;gBAEiB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,OAAY;
|
|
1
|
+
{"version":3,"file":"ListViewMode.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/model/ListViewMode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,IAAI,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,UAAU,OAAO;IACf,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,YAAY,CAAC,CAAC,GAAG,OAAO;IACnC,SAAgB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,SAAgB,QAAQ,EAAE,OAAO,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAGpB;gBAEiB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,OAAY;IAevD,IAAW,KAAK,oBAEf;IAED,IAAW,OAAO,YAEjB;IAED,IAAW,OAAO,YAEjB;IAED,IAAW,MAAM,YAEhB;IAEM,GAAG,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;CAM5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Search.d.ts","sourceRoot":"","sources":["../../../../../../src/components/List/model/search/Search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AACrD,OAAO,KAAK,EACV,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,MAAM,CAAC,CAAC;IACnB,SAAgB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,SAAgB,MAAM,CAAC,EAAE,0BAA0B,CAAC;IACpD,SAAgB,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACjE,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;gBAEhB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Search.d.ts","sourceRoot":"","sources":["../../../../../../src/components/List/model/search/Search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AACrD,OAAO,KAAK,EACV,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,MAAM,CAAC,CAAC;IACnB,SAAgB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,SAAgB,MAAM,CAAC,EAAE,0BAA0B,CAAC;IACpD,SAAgB,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACjE,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;gBAEhB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;IAc7D,IAAW,KAAK,IAAI,WAAW,CAE9B;IAED,IAAW,KAAK,YAEf;IAED,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,eAAe;IAOhB,kBAAkB,CAAC,YAAY,EAAE,iBAAiB;IAIlD,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAkBlC,KAAK,IAAI,IAAI;IAIb,SAAS,CAAC,EAAE,EAAE,MAAM,OAAO,GAAG,IAAI;CAG1C"}
|
|
@@ -21,6 +21,21 @@ export interface ListSupportedComponentProps extends MultipleSelection {
|
|
|
21
21
|
"aria-label"?: string;
|
|
22
22
|
selectionBehavior?: SelectionBehavior;
|
|
23
23
|
}
|
|
24
|
+
export interface ListSettingsStorageDefaults {
|
|
25
|
+
filters?: {
|
|
26
|
+
autosave?: boolean;
|
|
27
|
+
manualSave?: boolean;
|
|
28
|
+
};
|
|
29
|
+
sorting: {
|
|
30
|
+
autosave?: boolean;
|
|
31
|
+
};
|
|
32
|
+
viewMode: {
|
|
33
|
+
autosave?: boolean;
|
|
34
|
+
};
|
|
35
|
+
search: {
|
|
36
|
+
autosave?: boolean;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
24
39
|
export interface ListShape<T, TMeta = unknown> extends ListSupportedComponentProps {
|
|
25
40
|
settingStorageKey?: string;
|
|
26
41
|
loader?: IncrementalLoaderShape<T>;
|
|
@@ -36,6 +51,7 @@ export interface ListShape<T, TMeta = unknown> extends ListSupportedComponentPro
|
|
|
36
51
|
getItemId?: GetItemId<T>;
|
|
37
52
|
onChange?: OnListChanged<T, TMeta>;
|
|
38
53
|
defaultViewMode?: ListViewMode;
|
|
54
|
+
settingsStorageDefaults?: ListSettingsStorageDefaults;
|
|
39
55
|
}
|
|
40
56
|
export type PropertyRecord<T, TValue> = Partial<Record<PropertyName<T>, TValue>>;
|
|
41
57
|
export interface ListSettingsStorageShape {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/model/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AACrD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,eAAO,MAAM,oBAAoB,EAAG,GAAY,CAAC;AACjD,MAAM,MAAM,kBAAkB,GAAG,GAAG,OAAO,oBAAoB,GAAG,MAAM,EAAE,CAAC;AAE3E,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC;AAC/D,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,SAAS,kBAAkB,GAClE,CAAC,GACD,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxB,MAAM,MAAM,yBAAyB,CAAC,aAAa,IAAI,CACrD,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,KACvC,SAAS,CAAC;AAEf,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;AAE/E,MAAM,WAAW,2BAA4B,SAAQ,iBAAiB;IACpE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,MAAM,WAAW,SAAS,CACxB,CAAC,EACD,KAAK,GAAG,OAAO,CACf,SAAQ,2BAA2B;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,MAAM,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;IACzC,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAEtB,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACnC,eAAe,CAAC,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/model/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mittwald/flow-react-components",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.761",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A React implementation of Flow, mittwald’s design system",
|
|
6
6
|
"homepage": "https://mittwald.github.io/flow",
|
|
@@ -60,9 +60,9 @@
|
|
|
60
60
|
"@codemirror/lint": "^6.9.5",
|
|
61
61
|
"@internationalized/string-compiler": "^3.2.6",
|
|
62
62
|
"@lezer/highlight": "^1.2.3",
|
|
63
|
-
"@mittwald/flow-icons": "0.2.0-alpha.
|
|
63
|
+
"@mittwald/flow-icons": "0.2.0-alpha.761",
|
|
64
64
|
"@mittwald/password-tools-js": "3.0.0-alpha.18",
|
|
65
|
-
"@mittwald/react-tunnel": "0.2.0-alpha.
|
|
65
|
+
"@mittwald/react-tunnel": "0.2.0-alpha.761",
|
|
66
66
|
"@mittwald/react-use-promise": "^4.2.2",
|
|
67
67
|
"@react-aria/form": "^3.1.3",
|
|
68
68
|
"@react-aria/live-announcer": "^3.4.4",
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"@lezer/generator": "^1.8.0",
|
|
113
113
|
"@lezer/lr": "^1.4.8",
|
|
114
114
|
"@mittwald/flow-core": "",
|
|
115
|
-
"@mittwald/flow-design-tokens": "0.2.0-alpha.
|
|
115
|
+
"@mittwald/flow-design-tokens": "0.2.0-alpha.761",
|
|
116
116
|
"@mittwald/flow-icons-base": "",
|
|
117
117
|
"@mittwald/react-use-promise": "^4.2.2",
|
|
118
118
|
"@mittwald/remote-dom-react": "1.2.2-mittwald.10",
|
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
},
|
|
166
166
|
"peerDependencies": {
|
|
167
167
|
"@internationalized/date": "^3.10.0",
|
|
168
|
-
"@mittwald/flow-icons-pro": "0.2.0-alpha.
|
|
168
|
+
"@mittwald/flow-icons-pro": "0.2.0-alpha.760",
|
|
169
169
|
"@mittwald/react-use-promise": "^4.2.2",
|
|
170
170
|
"next": "*",
|
|
171
171
|
"react": "^19.2.0",
|
|
@@ -186,5 +186,5 @@
|
|
|
186
186
|
"optional": true
|
|
187
187
|
}
|
|
188
188
|
},
|
|
189
|
-
"gitHead": "
|
|
189
|
+
"gitHead": "bbfabe467ad5e890b586834d83397f816611494d"
|
|
190
190
|
}
|