@mittwald/flow-react-components 0.2.0-alpha.743 → 0.2.0-alpha.745
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 +8 -0
- package/dist/assets/doc-properties.json +9672 -9672
- package/dist/js/components/src/components/List/model/List.mjs +17 -5
- package/dist/js/components/src/components/List/model/List.mjs.map +1 -1
- package/dist/js/components/src/components/List/model/ReactTable.mjs +1 -0
- package/dist/js/components/src/components/List/model/ReactTable.mjs.map +1 -1
- package/dist/js/components/src/components/List/model/filter/Filter.mjs +43 -17
- package/dist/js/components/src/components/List/model/filter/Filter.mjs.map +1 -1
- package/dist/types/components/List/model/List.d.ts +4 -0
- package/dist/types/components/List/model/List.d.ts.map +1 -1
- package/dist/types/components/List/model/ReactTable.d.ts.map +1 -1
- package/dist/types/components/List/model/filter/Filter.d.ts +7 -2
- package/dist/types/components/List/model/filter/Filter.d.ts.map +1 -1
- package/dist/types/components/List/model/filter/types.d.ts +9 -0
- package/dist/types/components/List/model/filter/types.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -109,31 +109,43 @@ class List {
|
|
|
109
109
|
static useNew(shape) {
|
|
110
110
|
return new List(shape);
|
|
111
111
|
}
|
|
112
|
-
|
|
112
|
+
storeFilterSettings(autosave = false) {
|
|
113
113
|
if (this.settingsStore && this.filterSettingsStorageKey) {
|
|
114
114
|
const data = Object.fromEntries(
|
|
115
115
|
this.filters.map((f) => [
|
|
116
116
|
f.property,
|
|
117
|
-
f.getArrayValue().filter((v) => v.isActive).map((v) => v.id)
|
|
117
|
+
f.getArrayValue().filter((v) => v.isActive && (autosave ? f.autosave : true)).map((v) => v.id)
|
|
118
118
|
])
|
|
119
119
|
);
|
|
120
120
|
this.settingsStore.set(
|
|
121
121
|
"List",
|
|
122
|
-
this.filterSettingsStorageKey,
|
|
122
|
+
this.filterSettingsStorageKey + (autosave ? ".autosave" : ""),
|
|
123
123
|
Filter.settingsStorageSchema,
|
|
124
124
|
data
|
|
125
125
|
);
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
|
-
|
|
128
|
+
storeFilterDefaultSettings() {
|
|
129
|
+
this.storeFilterSettings();
|
|
130
|
+
}
|
|
131
|
+
autosaveFilterSettings() {
|
|
132
|
+
this.storeFilterSettings(true);
|
|
133
|
+
}
|
|
134
|
+
getStoredFilterSettings(autosaved = false) {
|
|
129
135
|
if (this.settingsStore && this.filterSettingsStorageKey) {
|
|
130
136
|
return this.settingsStore.get(
|
|
131
137
|
"List",
|
|
132
|
-
this.filterSettingsStorageKey,
|
|
138
|
+
this.filterSettingsStorageKey + (autosaved ? ".autosave" : ""),
|
|
133
139
|
Filter.settingsStorageSchema
|
|
134
140
|
);
|
|
135
141
|
}
|
|
136
142
|
}
|
|
143
|
+
getStoredFilterDefaultSettings() {
|
|
144
|
+
return this.getStoredFilterSettings();
|
|
145
|
+
}
|
|
146
|
+
getAutosavedFilterSettings() {
|
|
147
|
+
return this.getStoredFilterSettings(true);
|
|
148
|
+
}
|
|
137
149
|
getStoredViewModeDefaultSetting() {
|
|
138
150
|
if (this.settingsStore && this.viewModeStorageKey) {
|
|
139
151
|
return this.settingsStore.get(
|
|
@@ -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 ListViewMode,\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, useState } from \"react\";\nimport { useSettings } from \"@/components/SettingsProvider/SettingsProvider\";\nimport type { SettingsStore } from \"@/components/SettingsProvider/models/SettingsStore\";\nimport z from \"zod\";\n\nexport class List<T, TMeta = unknown> {\n public static readonly viewModeSettingsStorageSchema = z\n .enum([\"list\", \"table\", \"tiles\"])\n .optional();\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 viewMode: ListViewMode;\n public readonly setViewMode: (viewMode: ListViewMode) => void;\n public readonly supportsSettingsStorage: boolean;\n public readonly settingStorageKey?: string;\n public metadata?: TMeta;\n private readonly settingsStore?: SettingsStore;\n private readonly viewModeStorageKey?: string;\n private readonly filterSettingsStorageKey?: string;\n private readonly sortingStorageKey?: string;\n public readonly loadingItemsCount;\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 this.settingsStore = useSettings();\n this.settingStorageKey = settingStorageKey;\n this.filterSettingsStorageKey = settingStorageKey\n ? `${settingStorageKey}.activeFilters`\n : undefined;\n this.viewModeStorageKey = settingStorageKey\n ? `${settingStorageKey}.viewMode`\n : undefined;\n this.sortingStorageKey = settingStorageKey\n ? `${settingStorageKey}.sorting`\n : undefined;\n this.supportsSettingsStorage = !!this.settingStorageKey;\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\n const [viewMode, setViewMode] = useState(\n this.getStoredViewModeDefaultSetting() ?? defaultViewMode ?? \"list\",\n );\n this.viewMode = viewMode;\n\n this.setViewMode = (viewMode) => {\n setViewMode(viewMode);\n if (this.settingsStore && this.viewModeStorageKey) {\n this.settingsStore.set(\n \"List\",\n this.viewModeStorageKey,\n List.viewModeSettingsStorageSchema,\n viewMode,\n );\n }\n };\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.defaultEnabled !== \"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 storeFilterDefaultSettings() {\n if (this.settingsStore && this.filterSettingsStorageKey) {\n const data = Object.fromEntries(\n this.filters.map((f) => [\n f.property,\n f\n .getArrayValue()\n .filter((v) => v.isActive)\n .map((v) => v.id),\n ]),\n );\n\n this.settingsStore.set(\n \"List\",\n this.filterSettingsStorageKey,\n Filter.settingsStorageSchema,\n data,\n );\n }\n }\n\n public getStoredFilterDefaultSettings() {\n if (this.settingsStore && this.filterSettingsStorageKey) {\n return this.settingsStore.get(\n \"List\",\n this.filterSettingsStorageKey,\n Filter.settingsStorageSchema,\n );\n }\n }\n\n public getStoredViewModeDefaultSetting() {\n if (this.settingsStore && this.viewModeStorageKey) {\n return this.settingsStore.get(\n \"List\",\n this.viewModeStorageKey,\n List.viewModeSettingsStorageSchema,\n );\n }\n }\n\n public storeSortingSettings(sorting: Sorting<T>) {\n if (this.settingsStore && this.sortingStorageKey) {\n this.settingsStore.set(\n \"List\",\n this.sortingStorageKey,\n Sorting.storageSchema,\n { direction: sorting.direction, property: sorting.property },\n );\n }\n }\n\n public getStoredSortingDefaultSetting() {\n if (this.settingsStore && this.sortingStorageKey) {\n return this.settingsStore.get(\n \"List\",\n this.sortingStorageKey,\n Sorting.storageSchema,\n );\n }\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","viewMode"],"mappings":"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"}
|
|
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 ListViewMode,\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, useState } from \"react\";\nimport { useSettings } from \"@/components/SettingsProvider/SettingsProvider\";\nimport type { SettingsStore } from \"@/components/SettingsProvider/models/SettingsStore\";\nimport z from \"zod\";\n\nexport class List<T, TMeta = unknown> {\n public static readonly viewModeSettingsStorageSchema = z\n .enum([\"list\", \"table\", \"tiles\"])\n .optional();\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 viewMode: ListViewMode;\n public readonly setViewMode: (viewMode: ListViewMode) => void;\n public readonly supportsSettingsStorage: boolean;\n public readonly settingStorageKey?: string;\n public metadata?: TMeta;\n private readonly settingsStore?: SettingsStore;\n private readonly viewModeStorageKey?: string;\n private readonly filterSettingsStorageKey?: string;\n private readonly sortingStorageKey?: string;\n public readonly loadingItemsCount;\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 this.settingsStore = useSettings();\n this.settingStorageKey = settingStorageKey;\n this.filterSettingsStorageKey = settingStorageKey\n ? `${settingStorageKey}.activeFilters`\n : undefined;\n this.viewModeStorageKey = settingStorageKey\n ? `${settingStorageKey}.viewMode`\n : undefined;\n this.sortingStorageKey = settingStorageKey\n ? `${settingStorageKey}.sorting`\n : undefined;\n this.supportsSettingsStorage = !!this.settingStorageKey;\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\n const [viewMode, setViewMode] = useState(\n this.getStoredViewModeDefaultSetting() ?? defaultViewMode ?? \"list\",\n );\n this.viewMode = viewMode;\n\n this.setViewMode = (viewMode) => {\n setViewMode(viewMode);\n if (this.settingsStore && this.viewModeStorageKey) {\n this.settingsStore.set(\n \"List\",\n this.viewModeStorageKey,\n List.viewModeSettingsStorageSchema,\n viewMode,\n );\n }\n };\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.defaultEnabled !== \"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 private storeFilterSettings(autosave = false) {\n if (this.settingsStore && this.filterSettingsStorageKey) {\n const data = Object.fromEntries(\n this.filters.map((f) => [\n f.property,\n f\n .getArrayValue()\n .filter((v) => v.isActive && (autosave ? f.autosave : true))\n .map((v) => v.id),\n ]),\n );\n\n this.settingsStore.set(\n \"List\",\n this.filterSettingsStorageKey + (autosave ? \".autosave\" : \"\"),\n Filter.settingsStorageSchema,\n data,\n );\n }\n }\n\n public storeFilterDefaultSettings() {\n this.storeFilterSettings();\n }\n\n public autosaveFilterSettings() {\n this.storeFilterSettings(true);\n }\n\n private getStoredFilterSettings(autosaved = false) {\n if (this.settingsStore && this.filterSettingsStorageKey) {\n return this.settingsStore.get(\n \"List\",\n this.filterSettingsStorageKey + (autosaved ? \".autosave\" : \"\"),\n Filter.settingsStorageSchema,\n );\n }\n }\n\n public getStoredFilterDefaultSettings() {\n return this.getStoredFilterSettings();\n }\n\n public getAutosavedFilterSettings() {\n return this.getStoredFilterSettings(true);\n }\n\n public getStoredViewModeDefaultSetting() {\n if (this.settingsStore && this.viewModeStorageKey) {\n return this.settingsStore.get(\n \"List\",\n this.viewModeStorageKey,\n List.viewModeSettingsStorageSchema,\n );\n }\n }\n\n public storeSortingSettings(sorting: Sorting<T>) {\n if (this.settingsStore && this.sortingStorageKey) {\n this.settingsStore.set(\n \"List\",\n this.sortingStorageKey,\n Sorting.storageSchema,\n { direction: sorting.direction, property: sorting.property },\n );\n }\n }\n\n public getStoredSortingDefaultSetting() {\n if (this.settingsStore && this.sortingStorageKey) {\n return this.settingsStore.get(\n \"List\",\n this.sortingStorageKey,\n Sorting.storageSchema,\n );\n }\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","viewMode"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactTable.mjs","sources":["../../../../../../../src/components/List/model/ReactTable.ts"],"sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnSort,\n InitialTableState,\n Table,\n TableOptions,\n Updater,\n} from \"@tanstack/react-table\";\nimport {\n getCoreRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport type List from \"@/components/List/model/List\";\nimport invariant from \"invariant\";\nimport type {\n OnListChanged,\n PropertyName,\n} from \"@/components/List/model/types\";\nimport type { SearchValue } from \"@/components/List/model/search/types\";\nimport type { Dispatch, SetStateAction } from \"react\";\nimport { useEffect, useState } from \"react\";\n\nexport class ReactTable<T, TMeta = unknown> {\n public readonly list: List<T, TMeta>;\n public readonly table: Table<T>;\n public readonly sortingState: ColumnSort[];\n public readonly updateSortingState: Dispatch<SetStateAction<ColumnSort[]>>;\n\n private constructor(\n list: List<T, TMeta>,\n onChange?: OnListChanged<T, TMeta>,\n tableOptions: Partial<TableOptions<T>> = {},\n ) {\n this.list = list;\n\n const defaultSorting = this.list.sorting.filter(\n (s) => s.defaultEnabled !== false,\n );\n\n const [sortingState, updateSortingState] = useState<ColumnSort[]>(\n defaultSorting.map((s) => s.getReactTableColumnSort()),\n );\n this.sortingState = sortingState;\n this.updateSortingState = updateSortingState;\n this.table = this.useReactTable(onChange, tableOptions);\n }\n\n public get searchString(): SearchValue {\n return this.table.getState().globalFilter;\n }\n\n public static useNew<T, TMeta = unknown>(\n list: List<T, TMeta>,\n onChange?: OnListChanged<T, TMeta>,\n tableOptions: Partial<TableOptions<T>> = {},\n ): ReactTable<T, TMeta> {\n return new ReactTable<T, TMeta>(list, onChange, tableOptions);\n }\n\n public getTableColumn(property: PropertyName<T>): Column<T> {\n const column = this.table.getColumn(property as string);\n invariant(!!column, `Column #${property} is not defined`);\n return column;\n }\n\n private useReactTable(\n onChange?: OnListChanged<T, TMeta>,\n tableOptions: Partial<TableOptions<T>> = {},\n ): Table<T> {\n const data = this.list.loader.useData();\n\n const initialState: InitialTableState = {\n pagination: {\n pageSize: this.list.batches.batchSize,\n },\n columnFilters: [],\n };\n\n for (const filter of this.list.filters) {\n filter.updateInitialState(initialState);\n }\n\n this.list.search?.updateInitialState(initialState);\n\n const table = useReactTable({\n data,\n state: {\n sorting: this.sortingState,\n },\n getRowId: this.list.getItemId,\n initialState,\n columns: this.getTableColumnDefs(),\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n onSortingChange: (updater) => {\n this.handleSortingStateUpdate(updater);\n },\n globalFilterFn: \"auto\",\n ...tableOptions,\n });\n\n useEffect(() => {\n if (onChange) {\n onChange(this.list);\n }\n }, [this.list, onChange, table]);\n\n return table;\n }\n\n private handleSortingStateUpdate(updater: Updater<ColumnSort[]>) {\n const newSortingState =\n typeof updater === \"function\" ? updater(this.sortingState) : updater;\n\n const additionalHiddenSorting = this.list.sorting\n .filter(\n (s) =>\n s.defaultEnabled === \"hidden\" &&\n !newSortingState.some((existing) => existing.id === s.property),\n )\n .map((s) => s.getReactTableColumnSort());\n\n this.updateSortingState([...additionalHiddenSorting, ...newSortingState]);\n }\n\n private getTableColumnDefs(): ColumnDef<T>[] {\n const columnDefsMap = new Map<PropertyName<T>, ColumnDef<T>>();\n\n const getOrCreateColumnDef = (p: PropertyName<T>): ColumnDef<T> => {\n const existing = columnDefsMap.get(p);\n if (existing) {\n return existing;\n }\n const newDef: ColumnDef<T> = {\n id: p as string,\n accessorKey: p as string,\n enableSorting: false,\n enableColumnFilter: false,\n sortingFn: \"alphanumeric\",\n };\n\n columnDefsMap.set(p, newDef);\n return newDef;\n };\n\n this.list.filters.forEach((f) =>\n f.updateTableColumnDef(getOrCreateColumnDef(f.property)),\n );\n\n this.list.sorting.forEach((s) =>\n s.updateTableColumnDef(getOrCreateColumnDef(s.property)),\n );\n\n this.list.loader.staticDataProperties.forEach((property) => {\n getOrCreateColumnDef(property);\n });\n\n return Array.from(columnDefsMap.values());\n }\n}\n\nexport default ReactTable;\n"],"names":[],"mappings":";;;;AA2BO,MAAM,UAAA,CAA+B;AAAA,EAC1B,IAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,kBAAA;AAAA,EAER,WAAA,CACN,IAAA,EACA,QAAA,EACA,YAAA,GAAyC,EAAC,EAC1C;AACA,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAEZ,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,MAAA;AAAA,MACvC,CAAC,CAAA,KAAM,CAAA,CAAE,cAAA,KAAmB;AAAA,KAC9B;AAEA,IAAA,MAAM,CAAC,YAAA,EAAc,kBAAkB,CAAA,GAAI,QAAA;AAAA,MACzC,eAAe,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,yBAAyB;AAAA,KACvD;AACA,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AACpB,IAAA,IAAA,CAAK,kBAAA,GAAqB,kBAAA;AAC1B,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,aAAA,CAAc,QAAA,EAAU,YAAY,CAAA;AAAA,EACxD;AAAA,EAEA,IAAW,YAAA,GAA4B;AACrC,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,QAAA,EAAS,CAAE,YAAA;AAAA,EAC/B;AAAA,EAEA,OAAc,MAAA,CACZ,IAAA,EACA,QAAA,EACA,YAAA,GAAyC,EAAC,EACpB;AACtB,IAAA,OAAO,IAAI,UAAA,CAAqB,IAAA,EAAM,QAAA,EAAU,YAAY,CAAA;AAAA,EAC9D;AAAA,EAEO,eAAe,QAAA,EAAsC;AAC1D,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,QAAkB,CAAA;AACtD,IAAA,SAAA,CAAU,CAAC,CAAC,MAAA,EAAQ,CAAA,QAAA,EAAW,QAAQ,CAAA,eAAA,CAAiB,CAAA;AACxD,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEQ,aAAA,CACN,QAAA,EACA,YAAA,GAAyC,EAAC,EAChC;AACV,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,OAAA,EAAQ;AAEtC,IAAA,MAAM,YAAA,GAAkC;AAAA,MACtC,UAAA,EAAY;AAAA,QACV,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ;AAAA,OAC9B;AAAA,MACA,eAAe;AAAC,KAClB;AAEA,IAAA,KAAA,MAAW,MAAA,IAAU,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS;AACtC,MAAA,MAAA,CAAO,mBAAmB,YAAY,CAAA;AAAA,IACxC;AAEA,IAAA,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,kBAAA,CAAmB,YAAY,CAAA;AAEjD,IAAA,MAAM,QAAQ,aAAA,CAAc;AAAA,MAC1B,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACL,SAAS,IAAA,CAAK;AAAA,OAChB;AAAA,MACA,QAAA,EAAU,KAAK,IAAA,CAAK,SAAA;AAAA,MACpB,YAAA;AAAA,MACA,OAAA,EAAS,KAAK,kBAAA,EAAmB;AAAA,MACjC,iBAAiB,eAAA,EAAgB;AAAA,MACjC,mBAAmB,iBAAA,EAAkB;AAAA,MACrC,qBAAqB,mBAAA,EAAoB;AAAA,MACzC,uBAAuB,qBAAA,EAAsB;AAAA,MAC7C,wBAAwB,sBAAA,EAAuB;AAAA,MAC/C,eAAA,EAAiB,CAAC,OAAA,KAAY;AAC5B,QAAA,IAAA,CAAK,yBAAyB,OAAO,CAAA;AAAA,MACvC,CAAA;AAAA,MACA,cAAA,EAAgB,MAAA;AAAA,MAChB,GAAG;AAAA,KACJ,CAAA;AAED,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,MACpB;AAAA,
|
|
1
|
+
{"version":3,"file":"ReactTable.mjs","sources":["../../../../../../../src/components/List/model/ReactTable.ts"],"sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnSort,\n InitialTableState,\n Table,\n TableOptions,\n Updater,\n} from \"@tanstack/react-table\";\nimport {\n getCoreRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport type List from \"@/components/List/model/List\";\nimport invariant from \"invariant\";\nimport type {\n OnListChanged,\n PropertyName,\n} from \"@/components/List/model/types\";\nimport type { SearchValue } from \"@/components/List/model/search/types\";\nimport type { Dispatch, SetStateAction } from \"react\";\nimport { useEffect, useState } from \"react\";\n\nexport class ReactTable<T, TMeta = unknown> {\n public readonly list: List<T, TMeta>;\n public readonly table: Table<T>;\n public readonly sortingState: ColumnSort[];\n public readonly updateSortingState: Dispatch<SetStateAction<ColumnSort[]>>;\n\n private constructor(\n list: List<T, TMeta>,\n onChange?: OnListChanged<T, TMeta>,\n tableOptions: Partial<TableOptions<T>> = {},\n ) {\n this.list = list;\n\n const defaultSorting = this.list.sorting.filter(\n (s) => s.defaultEnabled !== false,\n );\n\n const [sortingState, updateSortingState] = useState<ColumnSort[]>(\n defaultSorting.map((s) => s.getReactTableColumnSort()),\n );\n this.sortingState = sortingState;\n this.updateSortingState = updateSortingState;\n this.table = this.useReactTable(onChange, tableOptions);\n }\n\n public get searchString(): SearchValue {\n return this.table.getState().globalFilter;\n }\n\n public static useNew<T, TMeta = unknown>(\n list: List<T, TMeta>,\n onChange?: OnListChanged<T, TMeta>,\n tableOptions: Partial<TableOptions<T>> = {},\n ): ReactTable<T, TMeta> {\n return new ReactTable<T, TMeta>(list, onChange, tableOptions);\n }\n\n public getTableColumn(property: PropertyName<T>): Column<T> {\n const column = this.table.getColumn(property as string);\n invariant(!!column, `Column #${property} is not defined`);\n return column;\n }\n\n private useReactTable(\n onChange?: OnListChanged<T, TMeta>,\n tableOptions: Partial<TableOptions<T>> = {},\n ): Table<T> {\n const data = this.list.loader.useData();\n\n const initialState: InitialTableState = {\n pagination: {\n pageSize: this.list.batches.batchSize,\n },\n columnFilters: [],\n };\n\n for (const filter of this.list.filters) {\n filter.updateInitialState(initialState);\n }\n\n this.list.search?.updateInitialState(initialState);\n\n const table = useReactTable({\n data,\n state: {\n sorting: this.sortingState,\n },\n getRowId: this.list.getItemId,\n initialState,\n columns: this.getTableColumnDefs(),\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n onSortingChange: (updater) => {\n this.handleSortingStateUpdate(updater);\n },\n globalFilterFn: \"auto\",\n ...tableOptions,\n });\n\n useEffect(() => {\n if (onChange) {\n onChange(this.list);\n }\n this.list.autosaveFilterSettings();\n }, [this.list, onChange, table]);\n\n return table;\n }\n\n private handleSortingStateUpdate(updater: Updater<ColumnSort[]>) {\n const newSortingState =\n typeof updater === \"function\" ? updater(this.sortingState) : updater;\n\n const additionalHiddenSorting = this.list.sorting\n .filter(\n (s) =>\n s.defaultEnabled === \"hidden\" &&\n !newSortingState.some((existing) => existing.id === s.property),\n )\n .map((s) => s.getReactTableColumnSort());\n\n this.updateSortingState([...additionalHiddenSorting, ...newSortingState]);\n }\n\n private getTableColumnDefs(): ColumnDef<T>[] {\n const columnDefsMap = new Map<PropertyName<T>, ColumnDef<T>>();\n\n const getOrCreateColumnDef = (p: PropertyName<T>): ColumnDef<T> => {\n const existing = columnDefsMap.get(p);\n if (existing) {\n return existing;\n }\n const newDef: ColumnDef<T> = {\n id: p as string,\n accessorKey: p as string,\n enableSorting: false,\n enableColumnFilter: false,\n sortingFn: \"alphanumeric\",\n };\n\n columnDefsMap.set(p, newDef);\n return newDef;\n };\n\n this.list.filters.forEach((f) =>\n f.updateTableColumnDef(getOrCreateColumnDef(f.property)),\n );\n\n this.list.sorting.forEach((s) =>\n s.updateTableColumnDef(getOrCreateColumnDef(s.property)),\n );\n\n this.list.loader.staticDataProperties.forEach((property) => {\n getOrCreateColumnDef(property);\n });\n\n return Array.from(columnDefsMap.values());\n }\n}\n\nexport default ReactTable;\n"],"names":[],"mappings":";;;;AA2BO,MAAM,UAAA,CAA+B;AAAA,EAC1B,IAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,kBAAA;AAAA,EAER,WAAA,CACN,IAAA,EACA,QAAA,EACA,YAAA,GAAyC,EAAC,EAC1C;AACA,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAEZ,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,MAAA;AAAA,MACvC,CAAC,CAAA,KAAM,CAAA,CAAE,cAAA,KAAmB;AAAA,KAC9B;AAEA,IAAA,MAAM,CAAC,YAAA,EAAc,kBAAkB,CAAA,GAAI,QAAA;AAAA,MACzC,eAAe,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,yBAAyB;AAAA,KACvD;AACA,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AACpB,IAAA,IAAA,CAAK,kBAAA,GAAqB,kBAAA;AAC1B,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,aAAA,CAAc,QAAA,EAAU,YAAY,CAAA;AAAA,EACxD;AAAA,EAEA,IAAW,YAAA,GAA4B;AACrC,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,QAAA,EAAS,CAAE,YAAA;AAAA,EAC/B;AAAA,EAEA,OAAc,MAAA,CACZ,IAAA,EACA,QAAA,EACA,YAAA,GAAyC,EAAC,EACpB;AACtB,IAAA,OAAO,IAAI,UAAA,CAAqB,IAAA,EAAM,QAAA,EAAU,YAAY,CAAA;AAAA,EAC9D;AAAA,EAEO,eAAe,QAAA,EAAsC;AAC1D,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,QAAkB,CAAA;AACtD,IAAA,SAAA,CAAU,CAAC,CAAC,MAAA,EAAQ,CAAA,QAAA,EAAW,QAAQ,CAAA,eAAA,CAAiB,CAAA;AACxD,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEQ,aAAA,CACN,QAAA,EACA,YAAA,GAAyC,EAAC,EAChC;AACV,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,OAAA,EAAQ;AAEtC,IAAA,MAAM,YAAA,GAAkC;AAAA,MACtC,UAAA,EAAY;AAAA,QACV,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ;AAAA,OAC9B;AAAA,MACA,eAAe;AAAC,KAClB;AAEA,IAAA,KAAA,MAAW,MAAA,IAAU,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS;AACtC,MAAA,MAAA,CAAO,mBAAmB,YAAY,CAAA;AAAA,IACxC;AAEA,IAAA,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,kBAAA,CAAmB,YAAY,CAAA;AAEjD,IAAA,MAAM,QAAQ,aAAA,CAAc;AAAA,MAC1B,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACL,SAAS,IAAA,CAAK;AAAA,OAChB;AAAA,MACA,QAAA,EAAU,KAAK,IAAA,CAAK,SAAA;AAAA,MACpB,YAAA;AAAA,MACA,OAAA,EAAS,KAAK,kBAAA,EAAmB;AAAA,MACjC,iBAAiB,eAAA,EAAgB;AAAA,MACjC,mBAAmB,iBAAA,EAAkB;AAAA,MACrC,qBAAqB,mBAAA,EAAoB;AAAA,MACzC,uBAAuB,qBAAA,EAAsB;AAAA,MAC7C,wBAAwB,sBAAA,EAAuB;AAAA,MAC/C,eAAA,EAAiB,CAAC,OAAA,KAAY;AAC5B,QAAA,IAAA,CAAK,yBAAyB,OAAO,CAAA;AAAA,MACvC,CAAA;AAAA,MACA,cAAA,EAAgB,MAAA;AAAA,MAChB,GAAG;AAAA,KACJ,CAAA;AAED,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,MACpB;AACA,MAAA,IAAA,CAAK,KAAK,sBAAA,EAAuB;AAAA,IACnC,GAAG,CAAC,IAAA,CAAK,IAAA,EAAM,QAAA,EAAU,KAAK,CAAC,CAAA;AAE/B,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEQ,yBAAyB,OAAA,EAAgC;AAC/D,IAAA,MAAM,kBACJ,OAAO,OAAA,KAAY,aAAa,OAAA,CAAQ,IAAA,CAAK,YAAY,CAAA,GAAI,OAAA;AAE/D,IAAA,MAAM,uBAAA,GAA0B,IAAA,CAAK,IAAA,CAAK,OAAA,CACvC,MAAA;AAAA,MACC,CAAC,CAAA,KACC,CAAA,CAAE,cAAA,KAAmB,QAAA,IACrB,CAAC,eAAA,CAAgB,IAAA,CAAK,CAAC,QAAA,KAAa,QAAA,CAAS,EAAA,KAAO,EAAE,QAAQ;AAAA,MAEjE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,yBAAyB,CAAA;AAEzC,IAAA,IAAA,CAAK,mBAAmB,CAAC,GAAG,uBAAA,EAAyB,GAAG,eAAe,CAAC,CAAA;AAAA,EAC1E;AAAA,EAEQ,kBAAA,GAAqC;AAC3C,IAAA,MAAM,aAAA,uBAAoB,GAAA,EAAmC;AAE7D,IAAA,MAAM,oBAAA,GAAuB,CAAC,CAAA,KAAqC;AACjE,MAAA,MAAM,QAAA,GAAW,aAAA,CAAc,GAAA,CAAI,CAAC,CAAA;AACpC,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,OAAO,QAAA;AAAA,MACT;AACA,MAAA,MAAM,MAAA,GAAuB;AAAA,QAC3B,EAAA,EAAI,CAAA;AAAA,QACJ,WAAA,EAAa,CAAA;AAAA,QACb,aAAA,EAAe,KAAA;AAAA,QACf,kBAAA,EAAoB,KAAA;AAAA,QACpB,SAAA,EAAW;AAAA,OACb;AAEA,MAAA,aAAA,CAAc,GAAA,CAAI,GAAG,MAAM,CAAA;AAC3B,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAA,CAAK,KAAK,OAAA,CAAQ,OAAA;AAAA,MAAQ,CAAC,CAAA,KACzB,CAAA,CAAE,qBAAqB,oBAAA,CAAqB,CAAA,CAAE,QAAQ,CAAC;AAAA,KACzD;AAEA,IAAA,IAAA,CAAK,KAAK,OAAA,CAAQ,OAAA;AAAA,MAAQ,CAAC,CAAA,KACzB,CAAA,CAAE,qBAAqB,oBAAA,CAAqB,CAAA,CAAE,QAAQ,CAAC;AAAA,KACzD;AAEA,IAAA,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,oBAAA,CAAqB,OAAA,CAAQ,CAAC,QAAA,KAAa;AAC1D,MAAA,oBAAA,CAAqB,QAAQ,CAAA;AAAA,IAC/B,CAAC,CAAA;AAED,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,aAAA,CAAc,MAAA,EAAQ,CAAA;AAAA,EAC1C;AACF;;;;"}
|
|
@@ -19,12 +19,16 @@ class Filter {
|
|
|
19
19
|
matcher;
|
|
20
20
|
renderItem;
|
|
21
21
|
name;
|
|
22
|
-
|
|
22
|
+
autosave;
|
|
23
|
+
onFilterChangeCallbacks = /* @__PURE__ */ new Set();
|
|
23
24
|
defaultSelectedValues;
|
|
25
|
+
initialSelectedValues;
|
|
24
26
|
priority;
|
|
27
|
+
storageKey;
|
|
25
28
|
constructor(list, shape) {
|
|
26
29
|
this.list = list;
|
|
27
30
|
this.property = shape.property;
|
|
31
|
+
this.storageKey = String(shape.property);
|
|
28
32
|
this.mode = shape.mode ?? "some";
|
|
29
33
|
this._values = shape.values?.map((v) => FilterValue.create(this, v));
|
|
30
34
|
this.matcher = shape.matcher ?? equalsPropertyMatcher;
|
|
@@ -32,12 +36,25 @@ class Filter {
|
|
|
32
36
|
this.name = shape.name;
|
|
33
37
|
this.priority = shape.priority ?? "primary";
|
|
34
38
|
this.defaultSelectedValues = shape.defaultSelected;
|
|
39
|
+
this.initialSelectedValues = shape.initialSelected;
|
|
40
|
+
this.autosave = shape.autosave ?? false;
|
|
41
|
+
if (shape.onChange) {
|
|
42
|
+
this.onFilterChangeCallbacks.add(shape.onChange);
|
|
43
|
+
}
|
|
35
44
|
}
|
|
36
45
|
getStoredSelectedIds() {
|
|
37
|
-
return this.list.getStoredFilterDefaultSettings()?.[
|
|
46
|
+
return this.list.getStoredFilterDefaultSettings()?.[this.storageKey];
|
|
47
|
+
}
|
|
48
|
+
getAutosavedSelectedIds() {
|
|
49
|
+
if (this.autosave) {
|
|
50
|
+
return this.list.getAutosavedFilterSettings()?.[this.storageKey];
|
|
51
|
+
}
|
|
38
52
|
}
|
|
39
53
|
updateInitialState(initialState) {
|
|
40
|
-
const initialValues = this.getInitialValues(
|
|
54
|
+
const initialValues = this.getInitialValues({
|
|
55
|
+
includeAutosaved: true,
|
|
56
|
+
includeInitialProp: true
|
|
57
|
+
});
|
|
41
58
|
if (initialValues?.length) {
|
|
42
59
|
initialState.columnFilters = [
|
|
43
60
|
...initialState.columnFilters ?? [],
|
|
@@ -71,7 +88,8 @@ class Filter {
|
|
|
71
88
|
const filterArr = toArray(filterValueInput);
|
|
72
89
|
return filterArr.length === 0 || filterArr.map(toFilterValue).some(predicate);
|
|
73
90
|
} else if (this.mode === "one") {
|
|
74
|
-
|
|
91
|
+
const oneValue = Array.isArray(filterValueInput) ? filterValueInput[0] : filterValueInput;
|
|
92
|
+
return predicate(toFilterValue(oneValue));
|
|
75
93
|
}
|
|
76
94
|
throw new Error(`Unknown filter mode '${this.mode}'`);
|
|
77
95
|
}
|
|
@@ -131,24 +149,32 @@ class Filter {
|
|
|
131
149
|
updatedValue = null;
|
|
132
150
|
}
|
|
133
151
|
this.list.reactTable.getTableColumn(this.property).setFilterValue(updatedValue);
|
|
134
|
-
this.
|
|
152
|
+
this.callOnChangedHandlers(updatedValue);
|
|
153
|
+
}
|
|
154
|
+
callOnChangedHandlers(newValue) {
|
|
155
|
+
const values = toArray(newValue).map((v) => v?.value);
|
|
156
|
+
this.onFilterChangeCallbacks.forEach((cb) => cb(values));
|
|
135
157
|
}
|
|
136
158
|
hasChanged() {
|
|
137
159
|
const currentValues = this.getArrayValue().map((v) => v.value);
|
|
138
|
-
const
|
|
139
|
-
return currentValues.length !==
|
|
160
|
+
const autosavedValues = this.getInitialFilterValues()?.map((v) => v.value) ?? [];
|
|
161
|
+
return currentValues.length !== autosavedValues.length || difference(currentValues, autosavedValues).length > 0;
|
|
140
162
|
}
|
|
141
|
-
getInitialValues() {
|
|
142
|
-
|
|
163
|
+
getInitialValues(options = {}) {
|
|
164
|
+
const { includeAutosaved = false, includeInitialProp = false } = options;
|
|
165
|
+
return (includeInitialProp ? this.initialSelectedValues : void 0) ?? (includeAutosaved ? this.getAutosavedSelectedIds() : void 0) ?? this.getStoredSelectedIds() ?? this.defaultSelectedValues;
|
|
143
166
|
}
|
|
144
|
-
getInitialFilterValues() {
|
|
145
|
-
return this.getInitialValues()?.map((v) => FilterValue.create(this, v));
|
|
167
|
+
getInitialFilterValues(options = {}) {
|
|
168
|
+
return this.getInitialValues(options)?.map((v) => FilterValue.create(this, v)) ?? [];
|
|
146
169
|
}
|
|
147
170
|
resetValues() {
|
|
148
171
|
let resetTo;
|
|
149
|
-
const initialValues = this.getInitialValues(
|
|
172
|
+
const initialValues = this.getInitialValues({
|
|
173
|
+
includeAutosaved: false,
|
|
174
|
+
includeInitialProp: false
|
|
175
|
+
});
|
|
150
176
|
if (initialValues) {
|
|
151
|
-
resetTo = initialValues;
|
|
177
|
+
resetTo = initialValues.map((v) => FilterValue.create(this, v));
|
|
152
178
|
} else {
|
|
153
179
|
if (this.mode === "all" || this.mode === "some") {
|
|
154
180
|
resetTo = [];
|
|
@@ -157,11 +183,11 @@ class Filter {
|
|
|
157
183
|
}
|
|
158
184
|
}
|
|
159
185
|
this.list.reactTable.getTableColumn(this.property).setFilterValue(resetTo);
|
|
160
|
-
this.
|
|
186
|
+
this.callOnChangedHandlers(resetTo);
|
|
161
187
|
}
|
|
162
188
|
clear() {
|
|
163
189
|
this.list.reactTable.getTableColumn(this.property).setFilterValue(null);
|
|
164
|
-
this.
|
|
190
|
+
this.callOnChangedHandlers(null);
|
|
165
191
|
}
|
|
166
192
|
toggleValue(newValue) {
|
|
167
193
|
const currentValueAsArray = this.getArrayValue();
|
|
@@ -176,10 +202,10 @@ class Filter {
|
|
|
176
202
|
updatedValue = newValue.isActive ? null : newValue;
|
|
177
203
|
}
|
|
178
204
|
this.list.reactTable.getTableColumn(this.property).setFilterValue(updatedValue);
|
|
179
|
-
this.
|
|
205
|
+
this.callOnChangedHandlers(updatedValue);
|
|
180
206
|
}
|
|
181
207
|
onFilterUpdated(cb) {
|
|
182
|
-
this.
|
|
208
|
+
this.onFilterChangeCallbacks.add(cb);
|
|
183
209
|
}
|
|
184
210
|
}
|
|
185
211
|
|
|
@@ -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} 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 z from \"zod\";\nimport { toArray } from \"@/lib/array/toArray\";\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 public static readonly settingsStorageSchema = z\n .record(z.string().or(z.symbol()), z.array(z.string()))\n .optional();\n\n private _values?: FilterValue[] | undefined;\n private _valuesFromTableState?: FilterValue[];\n public readonly list: List<T>;\n public readonly property: PropertyName<T>;\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 private onFilterUpdateCallbacks = new Set<() => unknown>();\n private readonly defaultSelectedValues?: readonly NonNullable<TMatchValue>[];\n public readonly priority: \"primary\" | \"secondary\";\n\n public constructor(list: List<T>, shape: FilterShape<T, TProp, TMatchValue>) {\n this.list = list;\n this.property = shape.property;\n this.mode = shape.mode ?? \"some\";\n this._values = shape.values?.map((v) => FilterValue.create(this, v));\n this.matcher = shape.matcher ?? equalsPropertyMatcher;\n this.renderItem = shape.renderItem ?? stringCastRenderMethod;\n this.name = shape.name;\n this.priority = shape.priority ?? \"primary\";\n\n this.defaultSelectedValues = shape.defaultSelected;\n }\n\n private getStoredSelectedIds() {\n return this.list.getStoredFilterDefaultSettings()?.[String(this.property)];\n }\n\n public updateInitialState(initialState: InitialTableState) {\n const initialValues = this.getInitialValues();\n\n if (initialValues?.length) {\n initialState.columnFilters = [\n ...(initialState.columnFilters ?? []),\n {\n id: this.property as string,\n value: initialValues,\n },\n ];\n }\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 return predicate(toFilterValue(filterValueInput));\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: unknown;\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 this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public hasChanged(): boolean {\n const currentValues = this.getArrayValue().map((v) => v.value);\n const initialValues =\n this.getInitialFilterValues()?.map((v) => v.value) ?? [];\n\n return (\n currentValues.length !== initialValues.length ||\n difference(currentValues, initialValues).length > 0\n );\n }\n\n private getInitialValues() {\n return this.getStoredSelectedIds() ?? this.defaultSelectedValues;\n }\n\n private getInitialFilterValues() {\n return this.getInitialValues()?.map((v) => FilterValue.create(this, v));\n }\n\n public resetValues(): void {\n let resetTo: unknown;\n const initialValues = this.getInitialValues();\n\n if (initialValues) {\n resetTo = initialValues;\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.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public clear(): void {\n this.list.reactTable.getTableColumn(this.property).setFilterValue(null);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public toggleValue(newValue: FilterValue): void {\n const currentValueAsArray = this.getArrayValue();\n\n let updatedValue: unknown;\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.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public onFilterUpdated(cb: () => unknown): void {\n this.onFilterUpdateCallbacks.add(cb);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
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 z from \"zod\";\nimport { toArray } from \"@/lib/array/toArray\";\n\nconst equalsPropertyMatcher: FilterMatcher<unknown, never, never> = (\n filterValue,\n propertyValue,\n) => filterValue === propertyValue;\n\nconst stringCastRenderMethod: PropertyValueRenderMethod<unknown> = (value) =>\n String(value);\n\ninterface InitialValuesOptions {\n includeAutosaved?: boolean;\n includeInitialProp?: boolean;\n}\n\nexport class Filter<T, TProp extends PropertyName<T>, TMatchValue> {\n public static readonly settingsStorageSchema = z\n .record(z.string().or(z.symbol()), z.array(z.string()))\n .optional();\n\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 private onFilterChangeCallbacks = new Set<FilterUpdatedCallback>();\n private readonly defaultSelectedValues?: readonly NonNullable<TMatchValue>[];\n private readonly initialSelectedValues?: readonly NonNullable<TMatchValue>[];\n public readonly priority: \"primary\" | \"secondary\";\n private storageKey: string;\n\n public constructor(list: List<T>, shape: FilterShape<T, TProp, TMatchValue>) {\n this.list = list;\n this.property = shape.property;\n this.storageKey = String(shape.property);\n this.mode = shape.mode ?? \"some\";\n this._values = shape.values?.map((v) => FilterValue.create(this, v));\n this.matcher = shape.matcher ?? equalsPropertyMatcher;\n this.renderItem = shape.renderItem ?? stringCastRenderMethod;\n this.name = shape.name;\n this.priority = shape.priority ?? \"primary\";\n this.defaultSelectedValues = shape.defaultSelected;\n this.initialSelectedValues = shape.initialSelected;\n this.autosave = shape.autosave ?? false;\n if (shape.onChange) {\n this.onFilterChangeCallbacks.add(shape.onChange);\n }\n }\n\n private getStoredSelectedIds() {\n return this.list.getStoredFilterDefaultSettings()?.[this.storageKey];\n }\n\n private getAutosavedSelectedIds() {\n if (this.autosave) {\n return this.list.getAutosavedFilterSettings()?.[this.storageKey];\n }\n }\n\n public updateInitialState(initialState: InitialTableState) {\n const initialValues = this.getInitialValues({\n includeAutosaved: true,\n includeInitialProp: true,\n });\n\n if (initialValues?.length) {\n initialState.columnFilters = [\n ...(initialState.columnFilters ?? []),\n {\n id: this.property as string,\n value: initialValues,\n },\n ];\n }\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 hasChanged(): boolean {\n const currentValues = this.getArrayValue().map((v) => v.value);\n const autosavedValues =\n this.getInitialFilterValues()?.map((v) => v.value) ?? [];\n\n return (\n currentValues.length !== autosavedValues.length ||\n difference(currentValues, autosavedValues).length > 0\n );\n }\n\n private getInitialValues(options: InitialValuesOptions = {}) {\n const { includeAutosaved = false, includeInitialProp = false } = options;\n return (\n (includeInitialProp ? this.initialSelectedValues : undefined) ??\n (includeAutosaved ? this.getAutosavedSelectedIds() : undefined) ??\n this.getStoredSelectedIds() ??\n this.defaultSelectedValues\n );\n }\n\n private getInitialFilterValues(\n options: InitialValuesOptions = {},\n ): FilterValue[] {\n return (\n this.getInitialValues(options)?.map((v) => FilterValue.create(this, v)) ??\n []\n );\n }\n\n public resetValues(): void {\n let resetTo: FilterValue[] | FilterValue | null;\n\n const initialValues = this.getInitialValues({\n includeAutosaved: false,\n includeInitialProp: false,\n });\n\n if (initialValues) {\n resetTo = initialValues.map((v) => FilterValue.create(this, v));\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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"}
|
|
@@ -42,8 +42,12 @@ export declare class List<T, TMeta = unknown> {
|
|
|
42
42
|
get isFiltered(): boolean;
|
|
43
43
|
get visibleSorting(): Sorting<T>[];
|
|
44
44
|
static useNew<T, TMeta = unknown>(shape: ListShape<T, TMeta>): List<T, TMeta>;
|
|
45
|
+
private storeFilterSettings;
|
|
45
46
|
storeFilterDefaultSettings(): void;
|
|
47
|
+
autosaveFilterSettings(): void;
|
|
48
|
+
private getStoredFilterSettings;
|
|
46
49
|
getStoredFilterDefaultSettings(): Record<string | symbol, string[]> | undefined;
|
|
50
|
+
getAutosavedFilterSettings(): Record<string | symbol, string[]> | undefined;
|
|
47
51
|
getStoredViewModeDefaultSetting(): "table" | "list" | "tiles" | undefined;
|
|
48
52
|
storeSortingSettings(sorting: Sorting<T>): void;
|
|
49
53
|
getStoredSortingDefaultSetting(): {
|
|
@@ -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,EAC3B,YAAY,EACb,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;AAI5D,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,qBAAa,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO;IAClC,gBAAuB,6BAA6B;;;;QAEtC;IACd,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,EAAE,YAAY,CAAC;IAC9B,SAAgB,WAAW,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IAC9D,SAAgB,uBAAuB,EAAE,OAAO,CAAC;IACjD,SAAgB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,EAAE,KAAK,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAS;IACnD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAS;IAC5C,SAAgB,iBAAiB,SAAC;gBAEf,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;IAyE7C,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;
|
|
1
|
+
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/model/List.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactTable.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/model/ReactTable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAEN,UAAU,EAEV,KAAK,EACL,YAAY,EAEb,MAAM,uBAAuB,CAAC;AAS/B,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AAErD,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAGtD,qBAAa,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO;IACxC,SAAgB,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrC,SAAgB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,SAAgB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3C,SAAgB,kBAAkB,EAAE,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAE3E,OAAO;IAmBP,IAAW,YAAY,IAAI,WAAW,CAErC;WAEa,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,EACrC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EACpB,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,EAClC,YAAY,GAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAM,GAC1C,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC;IAIhB,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAM3D,OAAO,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"ReactTable.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/model/ReactTable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAEN,UAAU,EAEV,KAAK,EACL,YAAY,EAEb,MAAM,uBAAuB,CAAC;AAS/B,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AAErD,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAGtD,qBAAa,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO;IACxC,SAAgB,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrC,SAAgB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,SAAgB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3C,SAAgB,kBAAkB,EAAE,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAE3E,OAAO;IAmBP,IAAW,YAAY,IAAI,WAAW,CAErC;WAEa,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,EACrC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EACpB,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,EAClC,YAAY,GAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAM,GAC1C,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC;IAIhB,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAM3D,OAAO,CAAC,aAAa;IAiDrB,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,kBAAkB;CAkC3B;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -9,16 +9,20 @@ export declare class Filter<T, TProp extends PropertyName<T>, TMatchValue> {
|
|
|
9
9
|
private _values?;
|
|
10
10
|
private _valuesFromTableState?;
|
|
11
11
|
readonly list: List<T>;
|
|
12
|
-
readonly property:
|
|
12
|
+
readonly property: TProp;
|
|
13
13
|
readonly mode: FilterMode;
|
|
14
14
|
readonly matcher: FilterMatcher<T, never, never>;
|
|
15
15
|
readonly renderItem: PropertyValueRenderMethod<TMatchValue>;
|
|
16
16
|
readonly name?: string;
|
|
17
|
-
|
|
17
|
+
readonly autosave: boolean;
|
|
18
|
+
private onFilterChangeCallbacks;
|
|
18
19
|
private readonly defaultSelectedValues?;
|
|
20
|
+
private readonly initialSelectedValues?;
|
|
19
21
|
readonly priority: "primary" | "secondary";
|
|
22
|
+
private storageKey;
|
|
20
23
|
constructor(list: List<T>, shape: FilterShape<T, TProp, TMatchValue>);
|
|
21
24
|
private getStoredSelectedIds;
|
|
25
|
+
private getAutosavedSelectedIds;
|
|
22
26
|
updateInitialState(initialState: InitialTableState): void;
|
|
23
27
|
updateTableColumnDef(def: ColumnDef<T>): void;
|
|
24
28
|
private getReactTableFilterFn;
|
|
@@ -35,6 +39,7 @@ export declare class Filter<T, TProp extends PropertyName<T>, TMatchValue> {
|
|
|
35
39
|
isValueActive(value: FilterValue): boolean;
|
|
36
40
|
isActive(): boolean;
|
|
37
41
|
deactivateValue(value: FilterValue): void;
|
|
42
|
+
private callOnChangedHandlers;
|
|
38
43
|
hasChanged(): boolean;
|
|
39
44
|
private getInitialValues;
|
|
40
45
|
private getInitialFilterValues;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../../../../../../src/components/List/model/filter/Filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EACT,YAAY,EACZ,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AAErD,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,WAAW,
|
|
1
|
+
{"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../../../../../../src/components/List/model/filter/Filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EACT,YAAY,EACZ,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AAErD,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,WAAW,EAEZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EACV,YAAY,EACZ,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,CAAC,MAAM,KAAK,CAAC;AAgBpB,qBAAa,MAAM,CAAC,CAAC,EAAE,KAAK,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW;IAC/D,gBAAuB,qBAAqB,8FAE9B;IAEd,OAAO,CAAC,OAAO,CAAC,CAA4B;IAC5C,OAAO,CAAC,qBAAqB,CAAC,CAAgB;IAC9C,SAAgB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,SAAgB,QAAQ,EAAE,KAAK,CAAC;IAChC,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,SAAgB,OAAO,EAAE,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACxD,SAAgB,UAAU,EAAE,yBAAyB,CAAC,WAAW,CAAC,CAAC;IACnE,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,QAAQ,EAAE,OAAO,CAAC;IAClC,OAAO,CAAC,uBAAuB,CAAoC;IACnE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAsC;IAC7E,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAsC;IAC7E,SAAgB,QAAQ,EAAE,SAAS,GAAG,WAAW,CAAC;IAClD,OAAO,CAAC,UAAU,CAAS;gBAER,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC;IAkB3E,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,uBAAuB;IAMxB,kBAAkB,CAAC,YAAY,EAAE,iBAAiB;IAiBlD,oBAAoB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IAKpD,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,kBAAkB;IA+B1B,SAAS,CAAC,oBAAoB,IAAI,YAAY,GAAG,SAAS;IAM1D,OAAO,CAAC,cAAc;IAIf,QAAQ,IAAI,OAAO;IAI1B,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,qBAAqB;IAKtB,yBAAyB;IAYhC,IAAW,MAAM,IAAI,WAAW,EAAE,CAEjC;IAED,OAAO,KAAK,oBAAoB,GAK/B;IAEM,aAAa,IAAI,WAAW,EAAE;IAO9B,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAI1C,QAAQ,IAAI,OAAO;IAInB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAkBhD,OAAO,CAAC,qBAAqB;IAOtB,UAAU,IAAI,OAAO;IAW5B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,sBAAsB;IASvB,WAAW,IAAI,IAAI;IAsBnB,KAAK,IAAI,IAAI;IAKb,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAqBxC,eAAe,CAAC,EAAE,EAAE,MAAM,OAAO,GAAG,IAAI;CAGhD"}
|
|
@@ -10,6 +10,15 @@ export interface FilterShape<T, TProp extends PropertyName<T>, TMatcherValue> {
|
|
|
10
10
|
values?: readonly TMatcherValue[];
|
|
11
11
|
name?: string;
|
|
12
12
|
defaultSelected?: readonly NonNullable<TMatcherValue>[];
|
|
13
|
+
/**
|
|
14
|
+
* If provided, the filter will be initialized with these values instead of
|
|
15
|
+
* the defaultSelected and restored selections from any provided settings
|
|
16
|
+
* storage. It behaves like an initial user initiated selection.
|
|
17
|
+
*/
|
|
18
|
+
initialSelected?: readonly NonNullable<TMatcherValue>[];
|
|
19
|
+
onChange?: FilterUpdatedCallback;
|
|
13
20
|
priority?: "primary" | "secondary";
|
|
21
|
+
autosave?: boolean;
|
|
14
22
|
}
|
|
23
|
+
export type FilterUpdatedCallback = (values: unknown[]) => unknown;
|
|
15
24
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/List/model/filter/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhD,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,IAAI,CAC/C,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAC9C,UAAU,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,KAC5B,OAAO,CAAC;AAEb,MAAM,WAAW,WAAW,CAAC,CAAC,EAAE,KAAK,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa;IAC1E,QAAQ,EAAE,KAAK,CAAC;IAChB,UAAU,CAAC,EAAE,yBAAyB,CAAC,aAAa,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,SAAS,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;IACxD,QAAQ,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/List/model/filter/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhD,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,IAAI,CAC/C,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAC9C,UAAU,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,KAC5B,OAAO,CAAC;AAEb,MAAM,WAAW,WAAW,CAAC,CAAC,EAAE,KAAK,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa;IAC1E,QAAQ,EAAE,KAAK,CAAC;IAChB,UAAU,CAAC,EAAE,yBAAyB,CAAC,aAAa,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,SAAS,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;IACxD;;;;OAIG;IACH,eAAe,CAAC,EAAE,SAAS,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;IACxD,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,QAAQ,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC"}
|
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.745",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A React implementation of Flow, mittwald’s design system",
|
|
6
6
|
"homepage": "https://mittwald.github.io/flow",
|
|
@@ -57,9 +57,9 @@
|
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@internationalized/string-compiler": "^3.2.6",
|
|
60
|
-
"@mittwald/flow-icons": "0.2.0-alpha.
|
|
60
|
+
"@mittwald/flow-icons": "0.2.0-alpha.745",
|
|
61
61
|
"@mittwald/password-tools-js": "3.0.0-alpha.18",
|
|
62
|
-
"@mittwald/react-tunnel": "0.2.0-alpha.
|
|
62
|
+
"@mittwald/react-tunnel": "0.2.0-alpha.745",
|
|
63
63
|
"@mittwald/react-use-promise": "^4.2.2",
|
|
64
64
|
"@react-aria/form": "^3.1.3",
|
|
65
65
|
"@react-aria/live-announcer": "^3.4.4",
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"@faker-js/faker": "^10.2.0",
|
|
105
105
|
"@internationalized/date": "^3.10.1",
|
|
106
106
|
"@mittwald/flow-core": "",
|
|
107
|
-
"@mittwald/flow-design-tokens": "0.2.0-alpha.
|
|
107
|
+
"@mittwald/flow-design-tokens": "0.2.0-alpha.745",
|
|
108
108
|
"@mittwald/flow-icons-base": "",
|
|
109
109
|
"@mittwald/react-use-promise": "^4.2.2",
|
|
110
110
|
"@mittwald/remote-dom-react": "1.2.2-mittwald.10",
|
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
},
|
|
158
158
|
"peerDependencies": {
|
|
159
159
|
"@internationalized/date": "^3.10.0",
|
|
160
|
-
"@mittwald/flow-icons-pro": "0.2.0-alpha.
|
|
160
|
+
"@mittwald/flow-icons-pro": "0.2.0-alpha.744",
|
|
161
161
|
"@mittwald/react-use-promise": "^4.2.2",
|
|
162
162
|
"next": "*",
|
|
163
163
|
"react": "^19.2.0",
|
|
@@ -178,5 +178,5 @@
|
|
|
178
178
|
"optional": true
|
|
179
179
|
}
|
|
180
180
|
},
|
|
181
|
-
"gitHead": "
|
|
181
|
+
"gitHead": "48b341dc8cfb9e96fe1f3265e54df9d4a64357d4"
|
|
182
182
|
}
|