@mittwald/flow-react-components 0.2.0-alpha.742 → 0.2.0-alpha.744

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.
@@ -109,31 +109,43 @@ class List {
109
109
  static useNew(shape) {
110
110
  return new List(shape);
111
111
  }
112
- storeFilterDefaultSettings() {
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
- getStoredFilterDefaultSettings() {
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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"}
@@ -67,6 +67,7 @@ class ReactTable {
67
67
  if (onChange) {
68
68
  onChange(this.list);
69
69
  }
70
+ this.list.autosaveFilterSettings();
70
71
  }, [this.list, onChange, table]);
71
72
  return table;
72
73
  }
@@ -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":"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"}
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":"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"}
@@ -19,12 +19,16 @@ class Filter {
19
19
  matcher;
20
20
  renderItem;
21
21
  name;
22
- onFilterUpdateCallbacks = /* @__PURE__ */ new Set();
22
+ autosave;
23
+ onFilterChangedCallbacks = /* @__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.onChanged) {
42
+ this.onFilterChangedCallbacks.add(shape.onChanged);
43
+ }
35
44
  }
36
45
  getStoredSelectedIds() {
37
- return this.list.getStoredFilterDefaultSettings()?.[String(this.property)];
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
- return predicate(toFilterValue(filterValueInput));
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,38 @@ class Filter {
131
149
  updatedValue = null;
132
150
  }
133
151
  this.list.reactTable.getTableColumn(this.property).setFilterValue(updatedValue);
134
- this.onFilterUpdateCallbacks.forEach((cb) => cb());
152
+ this.callOnChangedHandlers(updatedValue);
153
+ }
154
+ callOnChangedHandlers(newValue) {
155
+ this.onFilterChangedCallbacks.forEach(
156
+ (cb) => cb(
157
+ {
158
+ property: this.property
159
+ },
160
+ toArray(newValue).map((v) => v?.value)
161
+ )
162
+ );
135
163
  }
136
164
  hasChanged() {
137
165
  const currentValues = this.getArrayValue().map((v) => v.value);
138
- const initialValues = this.getInitialFilterValues()?.map((v) => v.value) ?? [];
139
- return currentValues.length !== initialValues.length || difference(currentValues, initialValues).length > 0;
166
+ const autosavedValues = this.getInitialFilterValues()?.map((v) => v.value) ?? [];
167
+ return currentValues.length !== autosavedValues.length || difference(currentValues, autosavedValues).length > 0;
140
168
  }
141
- getInitialValues() {
142
- return this.getStoredSelectedIds() ?? this.defaultSelectedValues;
169
+ getInitialValues(options = {}) {
170
+ const { includeAutosaved = false, includeInitialProp = false } = options;
171
+ return (includeInitialProp ? this.initialSelectedValues : void 0) ?? (includeAutosaved ? this.getAutosavedSelectedIds() : void 0) ?? this.getStoredSelectedIds() ?? this.defaultSelectedValues;
143
172
  }
144
- getInitialFilterValues() {
145
- return this.getInitialValues()?.map((v) => FilterValue.create(this, v));
173
+ getInitialFilterValues(options = {}) {
174
+ return this.getInitialValues(options)?.map((v) => FilterValue.create(this, v)) ?? [];
146
175
  }
147
176
  resetValues() {
148
177
  let resetTo;
149
- const initialValues = this.getInitialValues();
178
+ const initialValues = this.getInitialValues({
179
+ includeAutosaved: false,
180
+ includeInitialProp: false
181
+ });
150
182
  if (initialValues) {
151
- resetTo = initialValues;
183
+ resetTo = initialValues.map((v) => FilterValue.create(this, v));
152
184
  } else {
153
185
  if (this.mode === "all" || this.mode === "some") {
154
186
  resetTo = [];
@@ -157,11 +189,11 @@ class Filter {
157
189
  }
158
190
  }
159
191
  this.list.reactTable.getTableColumn(this.property).setFilterValue(resetTo);
160
- this.onFilterUpdateCallbacks.forEach((cb) => cb());
192
+ this.callOnChangedHandlers(resetTo);
161
193
  }
162
194
  clear() {
163
195
  this.list.reactTable.getTableColumn(this.property).setFilterValue(null);
164
- this.onFilterUpdateCallbacks.forEach((cb) => cb());
196
+ this.callOnChangedHandlers(null);
165
197
  }
166
198
  toggleValue(newValue) {
167
199
  const currentValueAsArray = this.getArrayValue();
@@ -176,10 +208,10 @@ class Filter {
176
208
  updatedValue = newValue.isActive ? null : newValue;
177
209
  }
178
210
  this.list.reactTable.getTableColumn(this.property).setFilterValue(updatedValue);
179
- this.onFilterUpdateCallbacks.forEach((cb) => cb());
211
+ this.callOnChangedHandlers(updatedValue);
180
212
  }
181
213
  onFilterUpdated(cb) {
182
- this.onFilterUpdateCallbacks.add(cb);
214
+ this.onFilterChangedCallbacks.add(cb);
183
215
  }
184
216
  }
185
217
 
@@ -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":";;;;;;;AAuBA,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,EACjE,OAAuB,qBAAA,GAAwB,CAAA,CAC5C,OAAO,CAAA,CAAE,MAAA,GAAS,EAAA,CAAG,CAAA,CAAE,QAAQ,CAAA,EAAG,EAAE,KAAA,CAAM,CAAA,CAAE,QAAQ,CAAC,EACrD,QAAA,EAAS;AAAA,EAEJ,OAAA;AAAA,EACA,qBAAA;AAAA,EACQ,IAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA;AAAA,EACR,uBAAA,uBAA8B,GAAA,EAAmB;AAAA,EACxC,qBAAA;AAAA,EACD,QAAA;AAAA,EAET,WAAA,CAAY,MAAe,KAAA,EAA2C;AAC3E,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,WAAW,KAAA,CAAM,QAAA;AACtB,IAAA,IAAA,CAAK,IAAA,GAAO,MAAM,IAAA,IAAQ,MAAA;AAC1B,IAAA,IAAA,CAAK,OAAA,GAAU,KAAA,CAAM,MAAA,EAAQ,GAAA,CAAI,CAAC,MAAM,WAAA,CAAY,MAAA,CAAO,IAAA,EAAM,CAAC,CAAC,CAAA;AACnE,IAAA,IAAA,CAAK,OAAA,GAAU,MAAM,OAAA,IAAW,qBAAA;AAChC,IAAA,IAAA,CAAK,UAAA,GAAa,MAAM,UAAA,IAAc,sBAAA;AACtC,IAAA,IAAA,CAAK,OAAO,KAAA,CAAM,IAAA;AAClB,IAAA,IAAA,CAAK,QAAA,GAAW,MAAM,QAAA,IAAY,SAAA;AAElC,IAAA,IAAA,CAAK,wBAAwB,KAAA,CAAM,eAAA;AAAA,EACrC;AAAA,EAEQ,oBAAA,GAAuB;AAC7B,IAAA,OAAO,KAAK,IAAA,CAAK,8BAAA,KAAmC,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAC,CAAA;AAAA,EAC3E;AAAA,EAEO,mBAAmB,YAAA,EAAiC;AACzD,IAAA,MAAM,aAAA,GAAgB,KAAK,gBAAA,EAAiB;AAE5C,IAAA,IAAI,eAAe,MAAA,EAAQ;AACzB,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,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,OAAO,SAAA,CAAU,aAAA,CAAc,gBAAgB,CAAC,CAAA;AAAA,IAClD;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;AAC9B,IAAA,IAAA,CAAK,uBAAA,CAAwB,OAAA,CAAQ,CAAC,EAAA,KAAO,IAAI,CAAA;AAAA,EACnD;AAAA,EAEO,UAAA,GAAsB;AAC3B,IAAA,MAAM,aAAA,GAAgB,KAAK,aAAA,EAAc,CAAE,IAAI,CAAC,CAAA,KAAM,EAAE,KAAK,CAAA;AAC7D,IAAA,MAAM,aAAA,GACJ,IAAA,CAAK,sBAAA,EAAuB,EAAG,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAA,IAAK,EAAC;AAEzD,IAAA,OACE,aAAA,CAAc,WAAW,aAAA,CAAc,MAAA,IACvC,WAAW,aAAA,EAAe,aAAa,EAAE,MAAA,GAAS,CAAA;AAAA,EAEtD;AAAA,EAEQ,gBAAA,GAAmB;AACzB,IAAA,OAAO,IAAA,CAAK,oBAAA,EAAqB,IAAK,IAAA,CAAK,qBAAA;AAAA,EAC7C;AAAA,EAEQ,sBAAA,GAAyB;AAC/B,IAAA,OAAO,IAAA,CAAK,gBAAA,EAAiB,EAAG,GAAA,CAAI,CAAC,MAAM,WAAA,CAAY,MAAA,CAAO,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,EACxE;AAAA,EAEO,WAAA,GAAoB;AACzB,IAAA,IAAI,OAAA;AACJ,IAAA,MAAM,aAAA,GAAgB,KAAK,gBAAA,EAAiB;AAE5C,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,OAAA,GAAU,aAAA;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,uBAAA,CAAwB,OAAA,CAAQ,CAAC,EAAA,KAAO,IAAI,CAAA;AAAA,EACnD;AAAA,EAEO,KAAA,GAAc;AACnB,IAAA,IAAA,CAAK,KAAK,UAAA,CAAW,cAAA,CAAe,KAAK,QAAQ,CAAA,CAAE,eAAe,IAAI,CAAA;AACtE,IAAA,IAAA,CAAK,uBAAA,CAAwB,OAAA,CAAQ,CAAC,EAAA,KAAO,IAAI,CAAA;AAAA,EACnD;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,uBAAA,CAAwB,OAAA,CAAQ,CAAC,EAAA,KAAO,IAAI,CAAA;AAAA,EACnD;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 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 onFilterChangedCallbacks = new Set<FilterUpdatedCallback<T, TProp>>();\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.onChanged) {\n this.onFilterChangedCallbacks.add(shape.onChanged);\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 this.onFilterChangedCallbacks.forEach((cb) =>\n cb(\n {\n property: this.property,\n },\n toArray(newValue).map((v) => v?.value),\n ),\n );\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.onFilterChangedCallbacks.add(cb);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -7,20 +7,7 @@ export { FormSettingsProvider } from './components/src/integrations/react-hook-f
7
7
  export { ResetButton } from './components/src/integrations/react-hook-form/components/ResetButton/ResetButton.mjs';
8
8
  export { FormRootError } from './components/src/integrations/react-hook-form/components/FormRootError/FormRootError.mjs';
9
9
  export { useFormContext, useOptionalFormContext } from './components/src/integrations/react-hook-form/components/FormContextProvider/FormContextProvider.mjs';
10
- import './components/src/components/Action/Action.mjs';
11
- import 'react/jsx-runtime';
12
- import 'react-aria';
13
- import 'react';
14
- import '@react-aria/live-announcer';
15
- import 'mobx';
16
- import './components/src/lib/propsContext/propsContext.mjs';
17
- import 'remeda';
18
- import '@react-aria/utils';
19
- import 'dot-prop';
20
- import './components/src/lib/controller/overlay/context.mjs';
21
- import 'invariant';
22
- import './components/src/components/Action/context.mjs';
23
- import './components/src/components/Action/models/ActionStateContext.mjs';
10
+ export { useFormSubmitAction } from './components/src/integrations/react-hook-form/components/FormContextProvider/useFormSubmitAction.mjs';
24
11
  export { FormAction } from './components/src/integrations/react-hook-form/components/FormAction/FormAction.mjs';
25
12
  export { flags } from './components/src/integrations/react-hook-form/flags.mjs';
26
13
  //# sourceMappingURL=react-hook-form.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-hook-form.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"react-hook-form.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -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;IAIV,0BAA0B;IAqB1B,8BAA8B;IAU9B,+BAA+B;IAU/B,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAWxC,8BAA8B;;;;IAU9B,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
+ {"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;IAgDrB,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,kBAAkB;CAkC3B;AAED,eAAe,UAAU,CAAC"}
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: PropertyName<T>;
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
- private onFilterUpdateCallbacks;
17
+ readonly autosave: boolean;
18
+ private onFilterChangedCallbacks;
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,EACZ,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;AAWpB,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,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1C,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,OAAO,CAAC,uBAAuB,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAsC;IAC7E,SAAgB,QAAQ,EAAE,SAAS,GAAG,WAAW,CAAC;gBAE/B,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC;IAa3E,OAAO,CAAC,oBAAoB;IAIrB,kBAAkB,CAAC,YAAY,EAAE,iBAAiB;IAclD,oBAAoB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IAKpD,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,kBAAkB;IA4B1B,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;IAiBzC,UAAU,IAAI,OAAO;IAW5B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,sBAAsB;IAIvB,WAAW,IAAI,IAAI;IAkBnB,KAAK,IAAI,IAAI;IAKb,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAqBxC,eAAe,CAAC,EAAE,EAAE,MAAM,OAAO,GAAG,IAAI;CAGhD"}
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,wBAAwB,CAA8C;IAC9E,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;IAatB,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,17 @@ 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
+ onChanged?: FilterUpdatedCallback<T, TProp>;
13
20
  priority?: "primary" | "secondary";
21
+ autosave?: boolean;
14
22
  }
23
+ export type FilterUpdatedCallback<T, TProp extends PropertyName<T>> = (filter: {
24
+ property: TProp;
25
+ }, values: unknown[]) => unknown;
15
26
  //# 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;CACpC"}
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,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,qBAAqB,CAAC,CAAC,EAAE,KAAK,SAAS,YAAY,CAAC,CAAC,CAAC,IAAI,CACpE,MAAM,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAA;CAAE,EAC3B,MAAM,EAAE,OAAO,EAAE,KACd,OAAO,CAAC"}
@@ -4,7 +4,7 @@ export * from './components/SubmitButton';
4
4
  export { FormSettingsProvider, type FormSettingsProviderProps, type SubmitInterceptor, type SubmitInterceptorContext, } from './components/FormSettingsProvider';
5
5
  export * from './components/ResetButton';
6
6
  export * from './components/FormRootError';
7
- export { useFormContext, useOptionalFormContext, } from './components/FormContextProvider';
7
+ export { useFormContext, useOptionalFormContext, useFormSubmitAction, } from './components/FormContextProvider';
8
8
  export * from './components/FormAction';
9
9
  export { flags } from './flags';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/integrations/react-hook-form/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EACL,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,mCAAmC,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,sBAAsB,GACvB,MAAM,kCAAkC,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/integrations/react-hook-form/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EACL,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,mCAAmC,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,kCAAkC,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mittwald/flow-react-components",
3
- "version": "0.2.0-alpha.742",
3
+ "version": "0.2.0-alpha.744",
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.742",
60
+ "@mittwald/flow-icons": "0.2.0-alpha.744",
61
61
  "@mittwald/password-tools-js": "3.0.0-alpha.18",
62
- "@mittwald/react-tunnel": "0.2.0-alpha.742",
62
+ "@mittwald/react-tunnel": "0.2.0-alpha.744",
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.742",
107
+ "@mittwald/flow-design-tokens": "0.2.0-alpha.744",
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.741",
160
+ "@mittwald/flow-icons-pro": "0.2.0-alpha.743",
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": "26c22db55c502bcd5848e20a2f338b78a7dbef32"
181
+ "gitHead": "a761bbf28ebc4609b433bdec77ee1033969b0861"
182
182
  }