@mittwald/flow-react-components 0.2.0-alpha.803 → 0.2.0-alpha.804
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/assets/doc-properties.json +866 -553
- package/dist/css/all.css +1 -1
- package/dist/js/_virtual/_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs +4 -0
- package/dist/js/_virtual/_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs.map +1 -1
- package/dist/js/default.mjs +1 -0
- package/dist/js/default.mjs.map +1 -1
- package/dist/js/flr-universal.mjs +3 -0
- package/dist/js/flr-universal.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/List.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/DataLoader/DataLoader.mjs +5 -1
- package/dist/js/packages/components/src/components/List/components/DataLoader/DataLoader.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/DataLoader/DataLoaderSuspense.mjs +5 -2
- package/dist/js/packages/components/src/components/List/components/DataLoader/DataLoaderSuspense.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/EmptySearchResultView/EmptySearchResultView.mjs +27 -0
- package/dist/js/packages/components/src/components/List/components/EmptySearchResultView/EmptySearchResultView.mjs.map +1 -0
- package/dist/js/packages/components/src/components/List/components/EmptyView/EmptyView.mjs +27 -0
- package/dist/js/packages/components/src/components/List/components/EmptyView/EmptyView.mjs.map +1 -0
- package/dist/js/packages/components/src/components/List/components/Footer/components/PaginationInfos/PaginationInfos.mjs +2 -2
- package/dist/js/packages/components/src/components/List/components/Footer/components/PaginationInfos/PaginationInfos.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/Header.mjs +13 -7
- package/dist/js/packages/components/src/components/List/components/Header/Header.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs +24 -11
- package/dist/js/packages/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs +13 -8
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/SortingAccordion.mjs +12 -8
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/SortingAccordion.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion.mjs +13 -9
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/DateRangeFilterPopover.mjs +2 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/DateRangeFilterPopover.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/FilterContextMenu.mjs +2 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/FilterContextMenu.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.mjs +34 -15
- package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/SearchField/SearchField.mjs +2 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/SearchField/SearchField.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/SortingContextMenu/SortingContextMenu.mjs +3 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/SortingContextMenu/SortingContextMenu.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/SortingContextMenu/SortingMenuItem.mjs +16 -12
- package/dist/js/packages/components/src/components/List/components/Header/components/SortingContextMenu/SortingMenuItem.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu.mjs +16 -10
- package/dist/js/packages/components/src/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/ViewModeContextMenu/ViewModeMenuItem.mjs +14 -9
- package/dist/js/packages/components/src/components/List/components/Header/components/ViewModeContextMenu/ViewModeMenuItem.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/lib.mjs +17 -13
- package/dist/js/packages/components/src/components/List/components/Header/lib.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/Items.mjs +11 -27
- package/dist/js/packages/components/src/components/List/components/Items/Items.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs +16 -12
- package/dist/js/packages/components/src/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/views/GridList/GridList.mjs +2 -3
- package/dist/js/packages/components/src/components/List/components/Items/views/GridList/GridList.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/ListItemView/ListItemView.mjs +10 -6
- package/dist/js/packages/components/src/components/List/components/ListItemView/ListItemView.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Table/Table.mjs +26 -15
- package/dist/js/packages/components/src/components/List/components/Table/Table.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/List.mjs +9 -2
- package/dist/js/packages/components/src/components/List/model/List.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/loading/IncrementalLoader.mjs +34 -1
- package/dist/js/packages/components/src/components/List/model/loading/IncrementalLoader.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/loading/IncrementalLoaderState.mjs +13 -1
- package/dist/js/packages/components/src/components/List/model/loading/IncrementalLoaderState.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/types.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/views/EmptyView/EmptyView.mjs +1 -1
- package/dist/js/packages/components/src/components/List/views/EmptyView/EmptyView.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/views/EmptyViewContainer/EmptyViewContainer.mjs +16 -0
- package/dist/js/packages/components/src/components/List/views/EmptyViewContainer/EmptyViewContainer.mjs.map +1 -0
- package/dist/js/packages/components/src/integrations/react-hook-form/flags.mjs +2 -1
- package/dist/js/packages/components/src/integrations/react-hook-form/flags.mjs.map +1 -1
- package/dist/js/packages/components/src/views/IllustratedMessageView.mjs +15 -0
- package/dist/js/packages/components/src/views/IllustratedMessageView.mjs.map +1 -0
- package/dist/js/packages/components/src/views/ListEmptyViewContainerView.mjs +17 -0
- package/dist/js/packages/components/src/views/ListEmptyViewContainerView.mjs.map +1 -0
- package/dist/types/components/List/List.d.ts +3 -1
- package/dist/types/components/List/List.d.ts.map +1 -1
- package/dist/types/components/List/components/DataLoader/DataLoader.d.ts.map +1 -1
- package/dist/types/components/List/components/DataLoader/DataLoaderSuspense.d.ts +1 -0
- package/dist/types/components/List/components/DataLoader/DataLoaderSuspense.d.ts.map +1 -1
- package/dist/types/components/List/components/EmptySearchResultView/EmptySearchResultView.d.ts +4 -0
- package/dist/types/components/List/components/EmptySearchResultView/EmptySearchResultView.d.ts.map +1 -0
- package/dist/types/components/List/components/EmptySearchResultView/index.d.ts +2 -0
- package/dist/types/components/List/components/EmptySearchResultView/index.d.ts.map +1 -0
- package/dist/types/components/List/components/EmptyView/EmptyView.d.ts +4 -0
- package/dist/types/components/List/components/EmptyView/EmptyView.d.ts.map +1 -0
- package/dist/types/components/List/components/EmptyView/index.d.ts +2 -0
- package/dist/types/components/List/components/EmptyView/index.d.ts.map +1 -0
- package/dist/types/components/List/components/Header/Header.d.ts.map +1 -1
- package/dist/types/components/List/components/Header/components/ActiveFilters/ActiveFilters.d.ts +4 -1
- package/dist/types/components/List/components/Header/components/ActiveFilters/ActiveFilters.d.ts.map +1 -1
- package/dist/types/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.d.ts +5 -1
- package/dist/types/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.d.ts.map +1 -1
- package/dist/types/components/List/components/Header/components/FilterContextMenu/DateRangeFilterPopover.d.ts +1 -0
- package/dist/types/components/List/components/Header/components/FilterContextMenu/DateRangeFilterPopover.d.ts.map +1 -1
- package/dist/types/components/List/components/Header/components/FilterContextMenu/FilterContextMenu.d.ts +1 -0
- package/dist/types/components/List/components/Header/components/FilterContextMenu/FilterContextMenu.d.ts.map +1 -1
- package/dist/types/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.d.ts +5 -1
- package/dist/types/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.d.ts.map +1 -1
- package/dist/types/components/List/components/Header/components/SearchField/SearchField.d.ts +1 -0
- package/dist/types/components/List/components/Header/components/SearchField/SearchField.d.ts.map +1 -1
- package/dist/types/components/List/components/Header/components/SortingContextMenu/SortingContextMenu.d.ts +5 -1
- package/dist/types/components/List/components/Header/components/SortingContextMenu/SortingContextMenu.d.ts.map +1 -1
- package/dist/types/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu.d.ts +5 -1
- package/dist/types/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu.d.ts.map +1 -1
- package/dist/types/components/List/components/Items/Items.d.ts.map +1 -1
- package/dist/types/components/List/components/Items/views/GridList/GridList.d.ts +2 -1
- package/dist/types/components/List/components/Items/views/GridList/GridList.d.ts.map +1 -1
- package/dist/types/components/List/components/Table/Table.d.ts.map +1 -1
- package/dist/types/components/List/index.d.ts +1 -0
- package/dist/types/components/List/index.d.ts.map +1 -1
- package/dist/types/components/List/model/List.d.ts +6 -2
- package/dist/types/components/List/model/List.d.ts.map +1 -1
- package/dist/types/components/List/model/loading/IncrementalLoader.d.ts +1 -0
- package/dist/types/components/List/model/loading/IncrementalLoader.d.ts.map +1 -1
- package/dist/types/components/List/model/loading/IncrementalLoaderState.d.ts +3 -0
- package/dist/types/components/List/model/loading/IncrementalLoaderState.d.ts.map +1 -1
- package/dist/types/components/List/model/loading/types.d.ts +6 -3
- package/dist/types/components/List/model/loading/types.d.ts.map +1 -1
- package/dist/types/components/List/model/search/types.d.ts +1 -0
- package/dist/types/components/List/model/search/types.d.ts.map +1 -1
- package/dist/types/components/List/model/types.d.ts +3 -0
- package/dist/types/components/List/model/types.d.ts.map +1 -1
- package/dist/types/components/List/stories/Default.stories.d.ts +3 -0
- package/dist/types/components/List/stories/Default.stories.d.ts.map +1 -1
- package/dist/types/components/List/views/EmptyView/EmptyView.d.ts +5 -1
- package/dist/types/components/List/views/EmptyView/EmptyView.d.ts.map +1 -1
- package/dist/types/components/List/views/EmptyViewContainer/EmptyViewContainer.d.ts +10 -0
- package/dist/types/components/List/views/EmptyViewContainer/EmptyViewContainer.d.ts.map +1 -0
- package/dist/types/components/List/views/EmptyViewContainer/index.d.ts +3 -0
- package/dist/types/components/List/views/EmptyViewContainer/index.d.ts.map +1 -0
- package/dist/types/components/List/views/EmptyViewContainer/view.d.ts +8 -0
- package/dist/types/components/List/views/EmptyViewContainer/view.d.ts.map +1 -0
- package/dist/types/integrations/react-hook-form/flags.d.ts +1 -0
- package/dist/types/integrations/react-hook-form/flags.d.ts.map +1 -1
- package/dist/types/views/ListEmptyViewContainerView.d.ts +5 -0
- package/dist/types/views/ListEmptyViewContainerView.d.ts.map +1 -0
- package/package.json +6 -6
- package/dist/js/packages/components/src/views/ListEmptyViewView.mjs +0 -15
- package/dist/js/packages/components/src/views/ListEmptyViewView.mjs.map +0 -1
|
@@ -8,6 +8,8 @@ const locales = {"de-DE":{
|
|
|
8
8
|
"filters.clearSelection": "Auswahl aufheben",
|
|
9
9
|
"filters.reset": "Filter zurücksetzen",
|
|
10
10
|
"filters.store": "Filter speichern",
|
|
11
|
+
"noItems.heading": "Keine Einträge gefunden",
|
|
12
|
+
"noItems.text": "Sobald es Einträge gibt, werden sie hier angezeigt.",
|
|
11
13
|
"noResult.heading": "Keine Suchergebnisse gefunden",
|
|
12
14
|
"noResult.text": "Deine Suche ergab keine Ergebnisse. Bitte passe die Suchanfrage oder deine Filter an.",
|
|
13
15
|
"options": "Optionen",
|
|
@@ -34,6 +36,8 @@ const locales = {"de-DE":{
|
|
|
34
36
|
"filters.clearSelection": "Clear selection",
|
|
35
37
|
"filters.reset": "Reset filters",
|
|
36
38
|
"filters.store": "Store filters",
|
|
39
|
+
"noItems.heading": "No items found",
|
|
40
|
+
"noItems.text": "Once there are items, they will be displayed here.",
|
|
37
41
|
"noResult.heading": "No search results found",
|
|
38
42
|
"noResult.text": "Your search did not return any results. Please adjust the search query or your filters.",
|
|
39
43
|
"options": "Options",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/js/default.mjs
CHANGED
|
@@ -223,6 +223,7 @@ export { GridListItem } from './packages/components/src/components/List/componen
|
|
|
223
223
|
export { ListItemView } from './packages/components/src/components/List/components/ListItemView/ListItemView.mjs';
|
|
224
224
|
export { ListItemViewContent } from './packages/components/src/components/List/components/ListItemView/components/ListItemViewContent/ListItemViewContent.mjs';
|
|
225
225
|
export { ListSummary } from './packages/components/src/components/List/components/ListSummary/ListSummary.mjs';
|
|
226
|
+
export { EmptyViewContainer } from './packages/components/src/components/List/views/EmptyViewContainer/EmptyViewContainer.mjs';
|
|
226
227
|
export { EmptyView } from './packages/components/src/components/List/views/EmptyView/EmptyView.mjs';
|
|
227
228
|
export { useList } from './packages/components/src/components/List/hooks/useList.mjs';
|
|
228
229
|
export { useListMetadata } from './packages/components/src/components/List/hooks/useListMetadata.mjs';
|
package/dist/js/default.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"default.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -215,6 +215,9 @@ export { LightBox } from './packages/components/src/components/LightBox/LightBox
|
|
|
215
215
|
import './packages/components/src/components/Link/Link.mjs';
|
|
216
216
|
export { ListItemView } from './packages/components/src/components/List/components/ListItemView/ListItemView.mjs';
|
|
217
217
|
import './packages/components/src/components/List/components/ListSummary/ListSummary.mjs';
|
|
218
|
+
import './packages/components/src/views/IllustratedMessageView.mjs';
|
|
219
|
+
import './packages/components/src/views/HeadingView.mjs';
|
|
220
|
+
import './packages/components/src/views/TextView.mjs';
|
|
218
221
|
import './packages/components/src/components/List/listContext.mjs';
|
|
219
222
|
import 'mobx';
|
|
220
223
|
export { List } from './packages/components/src/components/List/List.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flr-universal.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"flr-universal.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.mjs","sources":["../../../../../../../src/components/List/List.tsx"],"sourcesContent":["import { DataLoader } from \"@/components/List/components/DataLoader\";\nimport { Header } from \"@/components/List/components/Header/Header\";\nimport headerStyles from \"@/components/List/components/Header/Header.module.css\";\nimport { Items } from \"@/components/List/components/Items/Items\";\nimport { Table } from \"@/components/List/components/Table\";\nimport ListModel from \"@/components/List/model/List\";\nimport type { IncrementalLoaderShape } from \"@/components/List/model/loading/types\";\nimport type { ListShape } from \"@/components/List/model/types\";\nimport { ListFilter } from \"@/components/List/setupComponents/ListFilter\";\nimport { ListItem } from \"@/components/List/setupComponents/ListItem\";\nimport { ListLoaderAsync } from \"@/components/List/setupComponents/ListLoaderAsync\";\nimport { ListLoaderAsyncResource } from \"@/components/List/setupComponents/ListLoaderAsyncResource\";\nimport { ListSearch } from \"@/components/List/setupComponents/ListSearch\";\nimport { ListSorting } from \"@/components/List/setupComponents/ListSorting\";\nimport { ListStaticData } from \"@/components/List/setupComponents/ListStaticData\";\nimport { Table as TableSetupComponent } from \"@/components/List/setupComponents/Table\";\nimport { TableBody } from \"@/components/List/setupComponents/TableBody\";\nimport { TableCell } from \"@/components/List/setupComponents/TableCell\";\nimport { TableColumn } from \"@/components/List/setupComponents/TableColumn\";\nimport { TableHeader } from \"@/components/List/setupComponents/TableHeader\";\nimport { TableRow } from \"@/components/List/setupComponents/TableRow\";\nimport {\n flowComponent,\n type FlowComponentProps,\n} from \"@/lib/componentFactory/flowComponent\";\nimport { type PropsContext, PropsContextProvider } from \"@/lib/propsContext\";\nimport { deepFilterByType, deepFindOfType } from \"@/lib/react/deepFindOfType\";\nimport DivView from \"@/views/DivView\";\nimport { TunnelExit, TunnelProvider } from \"@mittwald/react-tunnel\";\nimport type { PropsWithChildren } from \"react\";\nimport Footer from \"./components/Footer\";\nimport styles from \"./List.module.css\";\nimport { listContext } from \"./listContext\";\nimport { ListLoaderHooks } from \"@/components/List/setupComponents/ListLoaderHooks\";\n\nexport interface ListProps<T, TMeta = unknown>\n extends\n PropsWithChildren,\n FlowComponentProps,\n Omit<\n ListShape<T, TMeta>,\n | \"search\"\n | \"loader\"\n | \"itemView\"\n | \"table\"\n | \"batchesController\"\n | \"filters\"\n | \"sorting\"\n > {\n /** The number of items to be displayed on one page. */\n batchSize?: number;\n hidePagination?: boolean;\n}\n\nexport const List = flowComponent(\"List\", (props) => {\n const {\n children,\n batchSize,\n loadingItemsCount = batchSize,\n onChange,\n ref,\n hidePagination,\n ...restProps\n } = props;\n\n const listLoaderAsync = deepFindOfType(\n children,\n ListLoaderAsync<never>,\n )?.props;\n const listLoaderHooks = deepFindOfType(\n children,\n ListLoaderHooks<never>,\n )?.props;\n const listLoaderAsyncResource = deepFindOfType(\n children,\n ListLoaderAsyncResource<never>,\n )?.props;\n const listStaticData = deepFindOfType(children, ListStaticData<never>)?.props;\n\n const loaderShape: IncrementalLoaderShape<never> = {\n source: listLoaderAsync\n ? {\n ...listLoaderAsync,\n asyncLoader: listLoaderAsync.children,\n }\n : listLoaderAsyncResource\n ? {\n ...listLoaderAsyncResource,\n asyncResourceFactory: listLoaderAsyncResource.children,\n }\n : listStaticData\n ? {\n staticData: listStaticData.data,\n }\n : listLoaderHooks\n ? {\n ...listLoaderHooks,\n useData: listLoaderHooks.children,\n }\n : undefined,\n };\n\n const searchProps = deepFindOfType(children, ListSearch)?.props;\n const itemViewProps = deepFindOfType(children, ListItem<never>)?.props;\n\n const tableProps = deepFindOfType(children, TableSetupComponent)?.props;\n const tableColumnProps = deepFilterByType(children, TableColumn<never>).map(\n (c) => ({\n ...c.props,\n name: c.props.children,\n }),\n );\n const tableCellProps = deepFilterByType(children, TableCell<never>).map(\n (c) => ({\n ...c.props,\n renderFn: c.props.children,\n }),\n );\n\n const tableRowProps = deepFindOfType(children, TableRow)?.props;\n const tableHeaderProps = deepFindOfType(children, TableHeader)?.props;\n const tableBodyProps = deepFindOfType(children, TableBody)?.props;\n\n const listModel = ListModel.useNew<never>({\n onChange,\n loader: loaderShape,\n filters: deepFilterByType(children, ListFilter<never, never, never>).map(\n (f) => ({\n ...f.props,\n renderItem: f.props.children,\n }),\n ),\n search: searchProps\n ? {\n render: searchProps.children,\n textFieldProps: searchProps,\n defaultValue: searchProps.defaultValue,\n autosave: searchProps.autosave,\n }\n : undefined,\n sorting: deepFilterByType(children, ListSorting<never>).map((s) => s.props),\n\n itemView: itemViewProps\n ? {\n ...itemViewProps,\n renderFn: itemViewProps.children,\n }\n : undefined,\n\n table:\n tableColumnProps.length > 0\n ? {\n header: {\n ...tableHeaderProps,\n columns: tableColumnProps,\n },\n body: {\n ...tableBodyProps,\n row: {\n ...tableRowProps,\n cells: tableCellProps,\n },\n },\n ...tableProps,\n }\n : undefined,\n\n batchesController: {\n batchSize,\n },\n loadingItemsCount,\n ...restProps,\n });\n\n const propsContext: PropsContext = {\n ActionGroup: {\n tunnelId: \"actions\",\n className: headerStyles.actions,\n Button: {\n className: headerStyles.action,\n },\n },\n ListSummary: {\n tunnelId: \"listSummary\",\n },\n };\n\n return (\n <PropsContextProvider props={propsContext}>\n <TunnelProvider>\n <listContext.Provider\n value={{\n list: listModel,\n }}\n >\n <DataLoader />\n <DivView className={styles.list} ref={ref}>\n {children}\n <Header />\n\n <DivView className={styles.listWrapper}>\n {listModel.items.entries.length > 0 && (\n <TunnelExit id=\"listSummary\" />\n )}\n {(listModel.viewMode.isList || listModel.viewMode.isTiles) && (\n <Items />\n )}\n {listModel.viewMode.isTable && <Table />}\n </DivView>\n {!hidePagination && <Footer />}\n </DivView>\n </listContext.Provider>\n </TunnelProvider>\n </PropsContextProvider>\n );\n});\n\nexport default List;\n"],"names":["TableSetupComponent","ListModel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"List.mjs","sources":["../../../../../../../src/components/List/List.tsx"],"sourcesContent":["import { DataLoader } from \"@/components/List/components/DataLoader\";\nimport { Header } from \"@/components/List/components/Header/Header\";\nimport headerStyles from \"@/components/List/components/Header/Header.module.css\";\nimport { Items } from \"@/components/List/components/Items/Items\";\nimport { Table } from \"@/components/List/components/Table\";\nimport ListModel from \"@/components/List/model/List\";\nimport type { IncrementalLoaderShape } from \"@/components/List/model/loading/types\";\nimport type { ListShape } from \"@/components/List/model/types\";\nimport { ListFilter } from \"@/components/List/setupComponents/ListFilter\";\nimport { ListItem } from \"@/components/List/setupComponents/ListItem\";\nimport { ListLoaderAsync } from \"@/components/List/setupComponents/ListLoaderAsync\";\nimport { ListLoaderAsyncResource } from \"@/components/List/setupComponents/ListLoaderAsyncResource\";\nimport { ListSearch } from \"@/components/List/setupComponents/ListSearch\";\nimport { ListSorting } from \"@/components/List/setupComponents/ListSorting\";\nimport { ListStaticData } from \"@/components/List/setupComponents/ListStaticData\";\nimport { Table as TableSetupComponent } from \"@/components/List/setupComponents/Table\";\nimport { TableBody } from \"@/components/List/setupComponents/TableBody\";\nimport { TableCell } from \"@/components/List/setupComponents/TableCell\";\nimport { TableColumn } from \"@/components/List/setupComponents/TableColumn\";\nimport { TableHeader } from \"@/components/List/setupComponents/TableHeader\";\nimport { TableRow } from \"@/components/List/setupComponents/TableRow\";\nimport {\n flowComponent,\n type FlowComponentProps,\n} from \"@/lib/componentFactory/flowComponent\";\nimport { type PropsContext, PropsContextProvider } from \"@/lib/propsContext\";\nimport { deepFilterByType, deepFindOfType } from \"@/lib/react/deepFindOfType\";\nimport DivView from \"@/views/DivView\";\nimport { TunnelExit, TunnelProvider } from \"@mittwald/react-tunnel\";\nimport type { PropsWithChildren, ReactNode } from \"react\";\nimport Footer from \"./components/Footer\";\nimport styles from \"./List.module.css\";\nimport { listContext } from \"./listContext\";\nimport { ListLoaderHooks } from \"@/components/List/setupComponents/ListLoaderHooks\";\n\nexport interface ListProps<T, TMeta = unknown>\n extends\n PropsWithChildren,\n FlowComponentProps,\n Omit<\n ListShape<T, TMeta>,\n | \"search\"\n | \"loader\"\n | \"itemView\"\n | \"table\"\n | \"batchesController\"\n | \"filters\"\n | \"sorting\"\n > {\n /** The number of items to be displayed on one page. */\n batchSize?: number;\n hidePagination?: boolean;\n emptySearchResultView?: ReactNode;\n emptyView?: ReactNode;\n}\n\nexport const List = flowComponent(\"List\", (props) => {\n const {\n children,\n batchSize,\n loadingItemsCount = batchSize,\n onChange,\n ref,\n hidePagination,\n ...restProps\n } = props;\n\n const listLoaderAsync = deepFindOfType(\n children,\n ListLoaderAsync<never>,\n )?.props;\n const listLoaderHooks = deepFindOfType(\n children,\n ListLoaderHooks<never>,\n )?.props;\n const listLoaderAsyncResource = deepFindOfType(\n children,\n ListLoaderAsyncResource<never>,\n )?.props;\n const listStaticData = deepFindOfType(children, ListStaticData<never>)?.props;\n\n const loaderShape: IncrementalLoaderShape<never> = {\n source: listLoaderAsync\n ? {\n ...listLoaderAsync,\n asyncLoader: listLoaderAsync.children,\n }\n : listLoaderAsyncResource\n ? {\n ...listLoaderAsyncResource,\n asyncResourceFactory: listLoaderAsyncResource.children,\n }\n : listStaticData\n ? {\n staticData: listStaticData.data,\n }\n : listLoaderHooks\n ? {\n ...listLoaderHooks,\n useData: listLoaderHooks.children,\n }\n : undefined,\n };\n\n const searchProps = deepFindOfType(children, ListSearch)?.props;\n const itemViewProps = deepFindOfType(children, ListItem<never>)?.props;\n\n const tableProps = deepFindOfType(children, TableSetupComponent)?.props;\n const tableColumnProps = deepFilterByType(children, TableColumn<never>).map(\n (c) => ({\n ...c.props,\n name: c.props.children,\n }),\n );\n const tableCellProps = deepFilterByType(children, TableCell<never>).map(\n (c) => ({\n ...c.props,\n renderFn: c.props.children,\n }),\n );\n\n const tableRowProps = deepFindOfType(children, TableRow)?.props;\n const tableHeaderProps = deepFindOfType(children, TableHeader)?.props;\n const tableBodyProps = deepFindOfType(children, TableBody)?.props;\n\n const listModel = ListModel.useNew<never>({\n onChange,\n loader: loaderShape,\n filters: deepFilterByType(children, ListFilter<never, never, never>).map(\n (f) => ({\n ...f.props,\n renderItem: f.props.children,\n }),\n ),\n search: searchProps\n ? {\n render: searchProps.children,\n textFieldProps: searchProps,\n defaultValue: searchProps.defaultValue,\n autosave: searchProps.autosave,\n }\n : undefined,\n sorting: deepFilterByType(children, ListSorting<never>).map((s) => s.props),\n\n itemView: itemViewProps\n ? {\n ...itemViewProps,\n renderFn: itemViewProps.children,\n }\n : undefined,\n\n table:\n tableColumnProps.length > 0\n ? {\n header: {\n ...tableHeaderProps,\n columns: tableColumnProps,\n },\n body: {\n ...tableBodyProps,\n row: {\n ...tableRowProps,\n cells: tableCellProps,\n },\n },\n ...tableProps,\n }\n : undefined,\n\n batchesController: {\n batchSize,\n },\n loadingItemsCount,\n ...restProps,\n });\n\n const propsContext: PropsContext = {\n ActionGroup: {\n tunnelId: \"actions\",\n className: headerStyles.actions,\n Button: {\n className: headerStyles.action,\n },\n },\n ListSummary: {\n tunnelId: \"listSummary\",\n },\n };\n\n return (\n <PropsContextProvider props={propsContext}>\n <TunnelProvider>\n <listContext.Provider\n value={{\n list: listModel,\n }}\n >\n <DataLoader />\n <DivView className={styles.list} ref={ref}>\n {children}\n <Header />\n\n <DivView className={styles.listWrapper}>\n {listModel.items.entries.length > 0 && (\n <TunnelExit id=\"listSummary\" />\n )}\n {(listModel.viewMode.isList || listModel.viewMode.isTiles) && (\n <Items />\n )}\n {listModel.viewMode.isTable && <Table />}\n </DivView>\n {!hidePagination && <Footer />}\n </DivView>\n </listContext.Provider>\n </TunnelProvider>\n </PropsContextProvider>\n );\n});\n\nexport default List;\n"],"names":["TableSetupComponent","ListModel"],"mappings":"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"}
|
package/dist/js/packages/components/src/components/List/components/DataLoader/DataLoader.mjs
CHANGED
|
@@ -6,11 +6,15 @@ import { useList } from '../../hooks/useList.mjs';
|
|
|
6
6
|
import { Render } from '../../../../lib/react/components/Render/Render.mjs';
|
|
7
7
|
|
|
8
8
|
const DataLoader = () => {
|
|
9
|
-
const
|
|
9
|
+
const loader = useList().loader;
|
|
10
|
+
const loaderHooks = loader.getLoaderInvocationHooks();
|
|
11
|
+
const isInitiallyLoading = loader.useIsInitiallyLoading();
|
|
12
|
+
const disableSuspense = loader.disableInitialSuspenseBoundary && isInitiallyLoading;
|
|
10
13
|
return loaderHooks.map((loaderHook, i) => /* @__PURE__ */ jsx(
|
|
11
14
|
DataLoaderSuspense,
|
|
12
15
|
{
|
|
13
16
|
useRenderSuspense: loaderHook.useRenderSuspense,
|
|
17
|
+
disabled: disableSuspense,
|
|
14
18
|
children: /* @__PURE__ */ jsx(Render, { children: () => {
|
|
15
19
|
loaderHook.useLoadBatch();
|
|
16
20
|
} })
|
package/dist/js/packages/components/src/components/List/components/DataLoader/DataLoader.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataLoader.mjs","sources":["../../../../../../../../../src/components/List/components/DataLoader/DataLoader.tsx"],"sourcesContent":["import { DataLoaderSuspense } from \"@/components/List/components/DataLoader/DataLoaderSuspense\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport { Render } from \"@/lib/react/components/Render\";\n\nexport const DataLoader = () => {\n const
|
|
1
|
+
{"version":3,"file":"DataLoader.mjs","sources":["../../../../../../../../../src/components/List/components/DataLoader/DataLoader.tsx"],"sourcesContent":["import { DataLoaderSuspense } from \"@/components/List/components/DataLoader/DataLoaderSuspense\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport { Render } from \"@/lib/react/components/Render\";\n\nexport const DataLoader = () => {\n const loader = useList().loader;\n const loaderHooks = loader.getLoaderInvocationHooks();\n const isInitiallyLoading = loader.useIsInitiallyLoading();\n\n const disableSuspense =\n loader.disableInitialSuspenseBoundary && isInitiallyLoading;\n\n return loaderHooks.map((loaderHook, i) => (\n <DataLoaderSuspense\n key={i}\n useRenderSuspense={loaderHook.useRenderSuspense}\n disabled={disableSuspense}\n >\n <Render>\n {() => {\n loaderHook.useLoadBatch();\n }}\n </Render>\n </DataLoaderSuspense>\n ));\n};\n\nexport default DataLoader;\n"],"names":[],"mappings":";;;;;AAIO,MAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,MAAA,GAAS,SAAQ,CAAE,MAAA;AACzB,EAAA,MAAM,WAAA,GAAc,OAAO,wBAAA,EAAyB;AACpD,EAAA,MAAM,kBAAA,GAAqB,OAAO,qBAAA,EAAsB;AAExD,EAAA,MAAM,eAAA,GACJ,OAAO,8BAAA,IAAkC,kBAAA;AAE3C,EAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,UAAA,EAAY,CAAA,qBAClC,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MAEC,mBAAmB,UAAA,CAAW,iBAAA;AAAA,MAC9B,QAAA,EAAU,eAAA;AAAA,MAEV,QAAA,kBAAA,GAAA,CAAC,UACE,QAAA,EAAA,MAAM;AACL,QAAA,UAAA,CAAW,YAAA,EAAa;AAAA,MAC1B,CAAA,EACF;AAAA,KAAA;AAAA,IARK;AAAA,GAUR,CAAA;AACH;;;;"}
|
package/dist/js/packages/components/src/components/List/components/DataLoader/DataLoaderSuspense.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
/* */
|
|
3
|
-
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
4
4
|
import { Suspense } from 'react';
|
|
5
5
|
|
|
6
6
|
const Fallback = (props) => {
|
|
@@ -9,7 +9,10 @@ const Fallback = (props) => {
|
|
|
9
9
|
return null;
|
|
10
10
|
};
|
|
11
11
|
const DataLoaderSuspense = (props) => {
|
|
12
|
-
const { useRenderSuspense, children } = props;
|
|
12
|
+
const { useRenderSuspense, children, disabled = false } = props;
|
|
13
|
+
if (disabled) {
|
|
14
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
15
|
+
}
|
|
13
16
|
const fallback = /* @__PURE__ */ jsx(Fallback, { useRenderSuspense });
|
|
14
17
|
return /* @__PURE__ */ jsx(Suspense, { fallback, children });
|
|
15
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataLoaderSuspense.mjs","sources":["../../../../../../../../../src/components/List/components/DataLoader/DataLoaderSuspense.tsx"],"sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport type { FC } from \"react\";\nimport { Suspense } from \"react\";\n\ninterface Props extends PropsWithChildren {\n useRenderSuspense: () => void;\n}\n\ninterface FallbackProps {\n useRenderSuspense: () => void;\n}\n\nconst Fallback: FC<FallbackProps> = (props) => {\n const { useRenderSuspense } = props;\n useRenderSuspense();\n return null;\n};\n\nexport const DataLoaderSuspense: FC<Props> = (props) => {\n const { useRenderSuspense, children } = props;\n const fallback = <Fallback useRenderSuspense={useRenderSuspense} />;\n return <Suspense fallback={fallback}>{children}</Suspense>;\n};\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"DataLoaderSuspense.mjs","sources":["../../../../../../../../../src/components/List/components/DataLoader/DataLoaderSuspense.tsx"],"sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport type { FC } from \"react\";\nimport { Suspense } from \"react\";\n\ninterface Props extends PropsWithChildren {\n useRenderSuspense: () => void;\n disabled?: boolean;\n}\n\ninterface FallbackProps {\n useRenderSuspense: () => void;\n}\n\nconst Fallback: FC<FallbackProps> = (props) => {\n const { useRenderSuspense } = props;\n useRenderSuspense();\n return null;\n};\n\nexport const DataLoaderSuspense: FC<Props> = (props) => {\n const { useRenderSuspense, children, disabled = false } = props;\n if (disabled) {\n return <>{children}</>;\n }\n const fallback = <Fallback useRenderSuspense={useRenderSuspense} />;\n return <Suspense fallback={fallback}>{children}</Suspense>;\n};\n"],"names":[],"mappings":";;;AAaA,MAAM,QAAA,GAA8B,CAAC,KAAA,KAAU;AAC7C,EAAA,MAAM,EAAE,mBAAkB,GAAI,KAAA;AAC9B,EAAA,iBAAA,EAAkB;AAClB,EAAA,OAAO,IAAA;AACT,CAAA;AAEO,MAAM,kBAAA,GAAgC,CAAC,KAAA,KAAU;AACtD,EAAA,MAAM,EAAE,iBAAA,EAAmB,QAAA,EAAU,QAAA,GAAW,OAAM,GAAI,KAAA;AAC1D,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,uCAAU,QAAA,EAAS,CAAA;AAAA,EACrB;AACA,EAAA,MAAM,QAAA,mBAAW,GAAA,CAAC,QAAA,EAAA,EAAS,iBAAA,EAAsC,CAAA;AACjE,EAAA,uBAAO,GAAA,CAAC,QAAA,EAAA,EAAS,QAAA,EAAqB,QAAA,EAAS,CAAA;AACjD;;;;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
/* */
|
|
3
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
|
+
import 'react';
|
|
5
|
+
import '@mittwald/flow-icons';
|
|
6
|
+
import '../../../Icon/components/IconSetProvider.mjs';
|
|
7
|
+
import '../../../Icon/Icon.mjs';
|
|
8
|
+
import '../../../../views/IconView.mjs';
|
|
9
|
+
import { IconSearch } from '../../../Icon/components/icons/IconSearch.mjs';
|
|
10
|
+
import locales from '../../../../../../../_virtual/_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs';
|
|
11
|
+
import IllustratedMessageView from '../../../../views/IllustratedMessageView.mjs';
|
|
12
|
+
import HeadingView from '../../../../views/HeadingView.mjs';
|
|
13
|
+
import TextView from '../../../../views/TextView.mjs';
|
|
14
|
+
import '../../../TranslationProvider/TranslationProvider.mjs';
|
|
15
|
+
import { useLocalizedStringFormatter } from '../../../TranslationProvider/useLocalizedStringFormatter.mjs';
|
|
16
|
+
|
|
17
|
+
const EmptySearchResultView = () => {
|
|
18
|
+
const stringFormatter = useLocalizedStringFormatter(locales, "List");
|
|
19
|
+
return /* @__PURE__ */ jsxs(IllustratedMessageView, { children: [
|
|
20
|
+
/* @__PURE__ */ jsx(IconSearch, {}),
|
|
21
|
+
/* @__PURE__ */ jsx(HeadingView, { children: stringFormatter.format("noResult.heading") }),
|
|
22
|
+
/* @__PURE__ */ jsx(TextView, { children: stringFormatter.format("noResult.text") })
|
|
23
|
+
] });
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export { EmptySearchResultView };
|
|
27
|
+
//# sourceMappingURL=EmptySearchResultView.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptySearchResultView.mjs","sources":["../../../../../../../../../src/components/List/components/EmptySearchResultView/EmptySearchResultView.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { IconSearch } from \"@/components/Icon/components/icons\";\nimport locales from \"../../locales/*.locale.json\";\nimport IllustratedMessageView from \"@/views/IllustratedMessageView\";\nimport HeadingView from \"@/views/HeadingView\";\nimport TextView from \"@/views/TextView\";\nimport { useLocalizedStringFormatter } from \"@/components/TranslationProvider\";\n\nexport type EmptySearchResultViewProps = Record<string, never>;\n\nexport const EmptySearchResultView: FC<EmptySearchResultViewProps> = () => {\n const stringFormatter = useLocalizedStringFormatter(locales, \"List\");\n\n return (\n <IllustratedMessageView>\n <IconSearch />\n <HeadingView>{stringFormatter.format(\"noResult.heading\")}</HeadingView>\n <TextView>{stringFormatter.format(\"noResult.text\")}</TextView>\n </IllustratedMessageView>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAUO,MAAM,wBAAwD,MAAM;AACzE,EAAA,MAAM,eAAA,GAAkB,2BAAA,CAA4B,OAAA,EAAS,MAAM,CAAA;AAEnE,EAAA,4BACG,sBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,CAAA;AAAA,oBACZ,GAAA,CAAC,WAAA,EAAA,EAAa,QAAA,EAAA,eAAA,CAAgB,MAAA,CAAO,kBAAkB,CAAA,EAAE,CAAA;AAAA,oBACzD,GAAA,CAAC,QAAA,EAAA,EAAU,QAAA,EAAA,eAAA,CAAgB,MAAA,CAAO,eAAe,CAAA,EAAE;AAAA,GAAA,EACrD,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
/* */
|
|
3
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
|
+
import locales from '../../../../../../../_virtual/_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs';
|
|
5
|
+
import IllustratedMessageView from '../../../../views/IllustratedMessageView.mjs';
|
|
6
|
+
import HeadingView from '../../../../views/HeadingView.mjs';
|
|
7
|
+
import TextView from '../../../../views/TextView.mjs';
|
|
8
|
+
import 'react';
|
|
9
|
+
import '@mittwald/flow-icons';
|
|
10
|
+
import '../../../Icon/components/IconSetProvider.mjs';
|
|
11
|
+
import '../../../Icon/Icon.mjs';
|
|
12
|
+
import '../../../../views/IconView.mjs';
|
|
13
|
+
import { IconClose } from '../../../Icon/components/icons/IconClose.mjs';
|
|
14
|
+
import '../../../TranslationProvider/TranslationProvider.mjs';
|
|
15
|
+
import { useLocalizedStringFormatter } from '../../../TranslationProvider/useLocalizedStringFormatter.mjs';
|
|
16
|
+
|
|
17
|
+
const EmptyView = () => {
|
|
18
|
+
const stringFormatter = useLocalizedStringFormatter(locales, "List");
|
|
19
|
+
return /* @__PURE__ */ jsxs(IllustratedMessageView, { children: [
|
|
20
|
+
/* @__PURE__ */ jsx(IconClose, {}),
|
|
21
|
+
/* @__PURE__ */ jsx(HeadingView, { children: stringFormatter.format("noItems.heading") }),
|
|
22
|
+
/* @__PURE__ */ jsx(TextView, { children: stringFormatter.format("noItems.text") })
|
|
23
|
+
] });
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export { EmptyView };
|
|
27
|
+
//# sourceMappingURL=EmptyView.mjs.map
|
package/dist/js/packages/components/src/components/List/components/EmptyView/EmptyView.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptyView.mjs","sources":["../../../../../../../../../src/components/List/components/EmptyView/EmptyView.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport locales from \"../../locales/*.locale.json\";\nimport IllustratedMessageView from \"@/views/IllustratedMessageView\";\nimport HeadingView from \"@/views/HeadingView\";\nimport TextView from \"@/views/TextView\";\nimport { IconClose } from \"@/components/Icon/components/icons\";\nimport { useLocalizedStringFormatter } from \"@/components/TranslationProvider\";\n\nexport type EmptyViewProps = Record<string, never>;\n\nexport const EmptyView: FC<EmptyViewProps> = () => {\n const stringFormatter = useLocalizedStringFormatter(locales, \"List\");\n\n return (\n <IllustratedMessageView>\n <IconClose />\n <HeadingView>{stringFormatter.format(\"noItems.heading\")}</HeadingView>\n <TextView>{stringFormatter.format(\"noItems.text\")}</TextView>\n </IllustratedMessageView>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAUO,MAAM,YAAgC,MAAM;AACjD,EAAA,MAAM,eAAA,GAAkB,2BAAA,CAA4B,OAAA,EAAS,MAAM,CAAA;AAEnE,EAAA,4BACG,sBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,CAAA;AAAA,oBACX,GAAA,CAAC,WAAA,EAAA,EAAa,QAAA,EAAA,eAAA,CAAgB,MAAA,CAAO,iBAAiB,CAAA,EAAE,CAAA;AAAA,oBACxD,GAAA,CAAC,QAAA,EAAA,EAAU,QAAA,EAAA,eAAA,CAAgB,MAAA,CAAO,cAAc,CAAA,EAAE;AAAA,GAAA,EACpD,CAAA;AAEJ;;;;"}
|
|
@@ -11,14 +11,14 @@ const PaginationInfos = (props) => {
|
|
|
11
11
|
const stringFormatter = useLocalizedStringFormatter(locales, "List");
|
|
12
12
|
const list = useList();
|
|
13
13
|
const pagination = list.batches;
|
|
14
|
-
const
|
|
14
|
+
const isLoading = list.loader.useIsLoading();
|
|
15
15
|
const isEmpty = list.useIsEmpty();
|
|
16
16
|
const totalItemsCount = pagination.getTotalItemsCount();
|
|
17
17
|
const visibleItemsCount = pagination.getVisibleItemsCount();
|
|
18
18
|
if (isEmpty) {
|
|
19
19
|
return null;
|
|
20
20
|
}
|
|
21
|
-
const text =
|
|
21
|
+
const text = isLoading ? /* @__PURE__ */ jsx(SkeletonView, { width: "200px" }) : stringFormatter.format("paginationInfo", {
|
|
22
22
|
visibleItemsCount,
|
|
23
23
|
totalItemsCount
|
|
24
24
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationInfos.mjs","sources":["../../../../../../../../../../../src/components/List/components/Footer/components/PaginationInfos/PaginationInfos.tsx"],"sourcesContent":["import { useList } from \"@/components/List/hooks/useList\";\nimport type { TextProps } from \"@/components/Text\";\nimport SkeletonView from \"@/views/SkeletonView\";\nimport TextView from \"@/views/TextView\";\nimport type { FC } from \"react\";\nimport { useLocalizedStringFormatter } from \"@/components/TranslationProvider/useLocalizedStringFormatter\";\nimport locales from \"../../../../locales/*.locale.json\";\n\nexport const PaginationInfos: FC<TextProps> = (props) => {\n const stringFormatter = useLocalizedStringFormatter(locales, \"List\");\n\n const list = useList();\n const pagination = list.batches;\n const
|
|
1
|
+
{"version":3,"file":"PaginationInfos.mjs","sources":["../../../../../../../../../../../src/components/List/components/Footer/components/PaginationInfos/PaginationInfos.tsx"],"sourcesContent":["import { useList } from \"@/components/List/hooks/useList\";\nimport type { TextProps } from \"@/components/Text\";\nimport SkeletonView from \"@/views/SkeletonView\";\nimport TextView from \"@/views/TextView\";\nimport type { FC } from \"react\";\nimport { useLocalizedStringFormatter } from \"@/components/TranslationProvider/useLocalizedStringFormatter\";\nimport locales from \"../../../../locales/*.locale.json\";\n\nexport const PaginationInfos: FC<TextProps> = (props) => {\n const stringFormatter = useLocalizedStringFormatter(locales, \"List\");\n\n const list = useList();\n const pagination = list.batches;\n const isLoading = list.loader.useIsLoading();\n const isEmpty = list.useIsEmpty();\n\n const totalItemsCount = pagination.getTotalItemsCount();\n const visibleItemsCount = pagination.getVisibleItemsCount();\n\n if (isEmpty) {\n return null;\n }\n\n const text = isLoading ? (\n <SkeletonView width=\"200px\" />\n ) : (\n stringFormatter.format(\"paginationInfo\", {\n visibleItemsCount,\n totalItemsCount,\n })\n );\n\n return <TextView {...props}>{text}</TextView>;\n};\n\nexport default PaginationInfos;\n"],"names":[],"mappings":";;;;;;;AAQO,MAAM,eAAA,GAAiC,CAAC,KAAA,KAAU;AACvD,EAAA,MAAM,eAAA,GAAkB,2BAAA,CAA4B,OAAA,EAAS,MAAM,CAAA;AAEnE,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,aAAa,IAAA,CAAK,OAAA;AACxB,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,YAAA,EAAa;AAC3C,EAAA,MAAM,OAAA,GAAU,KAAK,UAAA,EAAW;AAEhC,EAAA,MAAM,eAAA,GAAkB,WAAW,kBAAA,EAAmB;AACtD,EAAA,MAAM,iBAAA,GAAoB,WAAW,oBAAA,EAAqB;AAE1D,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,IAAA,GAAO,4BACX,GAAA,CAAC,YAAA,EAAA,EAAa,OAAM,OAAA,EAAQ,CAAA,GAE5B,eAAA,CAAgB,MAAA,CAAO,gBAAA,EAAkB;AAAA,IACvC,iBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAGH,EAAA,uBAAO,GAAA,CAAC,QAAA,EAAA,EAAU,GAAG,KAAA,EAAQ,QAAA,EAAA,IAAA,EAAK,CAAA;AACpC;;;;"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
/* */
|
|
3
3
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
|
-
import 'react';
|
|
5
4
|
import headerStyles from './Header.module.css.mjs';
|
|
6
5
|
import clsx from 'clsx';
|
|
7
6
|
import { ActiveFilters } from './components/ActiveFilters/ActiveFilters.mjs';
|
|
@@ -18,8 +17,15 @@ import { useAvailableViewModes } from './lib.mjs';
|
|
|
18
17
|
const Header = (props) => {
|
|
19
18
|
const { className } = props;
|
|
20
19
|
const list = useList();
|
|
20
|
+
const isEmpty = list.useIsEmpty();
|
|
21
|
+
const isInitiallyLoading = list.loader.useIsInitiallyLoading();
|
|
22
|
+
const noItemsAvailable = isEmpty && list.getEmptyViewType() === "list";
|
|
23
|
+
const isDisabled = isInitiallyLoading || noItemsAvailable;
|
|
21
24
|
const availableViewModes = useAvailableViewModes();
|
|
22
25
|
const hasOptions = list.filters.length > 0 || list.visibleSorting.length > 0 || list.search || availableViewModes.length > 1;
|
|
26
|
+
if (noItemsAvailable) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
23
29
|
return /* @__PURE__ */ jsxs(
|
|
24
30
|
DivView,
|
|
25
31
|
{
|
|
@@ -32,14 +38,14 @@ const Header = (props) => {
|
|
|
32
38
|
/* @__PURE__ */ jsxs(DivView, { className: headerStyles.headerContent, children: [
|
|
33
39
|
/* @__PURE__ */ jsx(TunnelExit, { id: "actions" }),
|
|
34
40
|
hasOptions && /* @__PURE__ */ jsxs(DivView, { className: headerStyles.options, children: [
|
|
35
|
-
/* @__PURE__ */ jsx(ViewModeContextMenu, {}),
|
|
36
|
-
/* @__PURE__ */ jsx(SortingContextMenu, {}),
|
|
37
|
-
/* @__PURE__ */ jsx(FilterContextMenus, {}),
|
|
38
|
-
/* @__PURE__ */ jsx(AllFiltersModal, {}),
|
|
39
|
-
list.search && /* @__PURE__ */ jsx(SearchField, { search: list.search })
|
|
41
|
+
/* @__PURE__ */ jsx(ViewModeContextMenu, { isDisabled }),
|
|
42
|
+
/* @__PURE__ */ jsx(SortingContextMenu, { isDisabled }),
|
|
43
|
+
/* @__PURE__ */ jsx(FilterContextMenus, { isDisabled }),
|
|
44
|
+
/* @__PURE__ */ jsx(AllFiltersModal, { isDisabled }),
|
|
45
|
+
list.search && /* @__PURE__ */ jsx(SearchField, { search: list.search, isDisabled })
|
|
40
46
|
] })
|
|
41
47
|
] }),
|
|
42
|
-
/* @__PURE__ */ jsx(ActiveFilters, {})
|
|
48
|
+
/* @__PURE__ */ jsx(ActiveFilters, { isDisabled })
|
|
43
49
|
]
|
|
44
50
|
}
|
|
45
51
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.mjs","sources":["../../../../../../../../../src/components/List/components/Header/Header.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport
|
|
1
|
+
{"version":3,"file":"Header.mjs","sources":["../../../../../../../../../src/components/List/components/Header/Header.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport styles from \"./Header.module.css\";\nimport clsx from \"clsx\";\nimport { ActiveFilters } from \"@/components/List/components/Header/components/ActiveFilters\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\nimport { SearchField } from \"@/components/List/components/Header/components/SearchField/SearchField\";\nimport { ViewModeContextMenu } from \"@/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu\";\nimport { TunnelExit } from \"@mittwald/react-tunnel\";\nimport DivView from \"@/views/DivView\";\nimport { SortingContextMenu } from \"@/components/List/components/Header/components/SortingContextMenu/SortingContextMenu\";\nimport { FilterContextMenus } from \"@/components/List/components/Header/components/FilterContextMenu/FilterContextMenus\";\nimport { AllFiltersModal } from \"@/components/List/components/Header/components/AllFiltersModal/AllFiltersModal\";\nimport { useAvailableViewModes } from \"@/components/List/components/Header/lib\";\n\nexport const Header: FC<PropsWithClassName> = (props) => {\n const { className } = props;\n const list = useList();\n\n const isEmpty = list.useIsEmpty();\n const isInitiallyLoading = list.loader.useIsInitiallyLoading();\n const noItemsAvailable = isEmpty && list.getEmptyViewType() === \"list\";\n const isDisabled = isInitiallyLoading || noItemsAvailable;\n\n const availableViewModes = useAvailableViewModes();\n\n const hasOptions =\n list.filters.length > 0 ||\n list.visibleSorting.length > 0 ||\n list.search ||\n availableViewModes.length > 1;\n\n if (noItemsAvailable) {\n return;\n }\n\n return (\n <DivView\n className={clsx(\n className,\n styles.header,\n list.search && styles.withSearch,\n )}\n >\n <DivView className={styles.headerContent}>\n <TunnelExit id=\"actions\" />\n {hasOptions && (\n <DivView className={styles.options}>\n <ViewModeContextMenu isDisabled={isDisabled} />\n <SortingContextMenu isDisabled={isDisabled} />\n <FilterContextMenus isDisabled={isDisabled} />\n <AllFiltersModal isDisabled={isDisabled} />\n\n {list.search && (\n <SearchField search={list.search} isDisabled={isDisabled} />\n )}\n </DivView>\n )}\n </DivView>\n <ActiveFilters isDisabled={isDisabled} />\n </DivView>\n );\n};\n\nexport default Header;\n"],"names":["styles"],"mappings":";;;;;;;;;;;;;;AAeO,MAAM,MAAA,GAAiC,CAAC,KAAA,KAAU;AACvD,EAAA,MAAM,EAAE,WAAU,GAAI,KAAA;AACtB,EAAA,MAAM,OAAO,OAAA,EAAQ;AAErB,EAAA,MAAM,OAAA,GAAU,KAAK,UAAA,EAAW;AAChC,EAAA,MAAM,kBAAA,GAAqB,IAAA,CAAK,MAAA,CAAO,qBAAA,EAAsB;AAC7D,EAAA,MAAM,gBAAA,GAAmB,OAAA,IAAW,IAAA,CAAK,gBAAA,EAAiB,KAAM,MAAA;AAChE,EAAA,MAAM,aAAa,kBAAA,IAAsB,gBAAA;AAEzC,EAAA,MAAM,qBAAqB,qBAAA,EAAsB;AAEjD,EAAA,MAAM,UAAA,GACJ,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,IACtB,IAAA,CAAK,cAAA,CAAe,MAAA,GAAS,CAAA,IAC7B,IAAA,CAAK,MAAA,IACL,kBAAA,CAAmB,MAAA,GAAS,CAAA;AAE9B,EAAA,IAAI,gBAAA,EAAkB;AACpB,IAAA;AAAA,EACF;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,IAAA;AAAA,QACT,SAAA;AAAA,QACAA,YAAA,CAAO,MAAA;AAAA,QACP,IAAA,CAAK,UAAUA,YAAA,CAAO;AAAA,OACxB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAWA,YAAA,CAAO,aAAA,EACzB,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,UAAA,EAAA,EAAW,IAAG,SAAA,EAAU,CAAA;AAAA,UACxB,UAAA,oBACC,IAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAWA,aAAO,OAAA,EACzB,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,uBAAoB,UAAA,EAAwB,CAAA;AAAA,4BAC7C,GAAA,CAAC,sBAAmB,UAAA,EAAwB,CAAA;AAAA,4BAC5C,GAAA,CAAC,sBAAmB,UAAA,EAAwB,CAAA;AAAA,4BAC5C,GAAA,CAAC,mBAAgB,UAAA,EAAwB,CAAA;AAAA,YAExC,KAAK,MAAA,oBACJ,GAAA,CAAC,eAAY,MAAA,EAAQ,IAAA,CAAK,QAAQ,UAAA,EAAwB;AAAA,WAAA,EAE9D;AAAA,SAAA,EAEJ,CAAA;AAAA,wBACA,GAAA,CAAC,iBAAc,UAAA,EAAwB;AAAA;AAAA;AAAA,GACzC;AAEJ;;;;"}
|
|
@@ -6,10 +6,6 @@ import styles from './ActiveFilters.module.scss.mjs';
|
|
|
6
6
|
import locales from '../../../../../../../../../_virtual/_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs';
|
|
7
7
|
import { observer } from 'mobx-react-lite';
|
|
8
8
|
import { useLocalizedStringFormatter } from '../../../../../TranslationProvider/useLocalizedStringFormatter.mjs';
|
|
9
|
-
import { TooltipTrigger } from '../../../../../Tooltip/components/TooltipTrigger/TooltipTrigger.mjs';
|
|
10
|
-
import 'react-aria-components';
|
|
11
|
-
import 'clsx';
|
|
12
|
-
import '../../../../../../lib/propsContext/propsContext.mjs';
|
|
13
9
|
import 'react';
|
|
14
10
|
import '@mittwald/flow-icons';
|
|
15
11
|
import '../../../../../Icon/components/IconSetProvider.mjs';
|
|
@@ -28,23 +24,40 @@ import { Filter } from '../../../../model/filter/Filter.mjs';
|
|
|
28
24
|
import { transformDateValueToFormattedDate } from '../../../../../../lib/date/transformDateValueToFormattedDate.mjs';
|
|
29
25
|
import { DateRangeFilter } from '../../../../model/filter/DateRangeFilter.mjs';
|
|
30
26
|
|
|
31
|
-
const ActiveFilters = observer(() => {
|
|
27
|
+
const ActiveFilters = observer((props) => {
|
|
28
|
+
const { isDisabled } = props;
|
|
32
29
|
const list = useList();
|
|
33
|
-
const formatter = useLocalizedStringFormatter(locales, "List
|
|
30
|
+
const formatter = useLocalizedStringFormatter(locales, "List");
|
|
34
31
|
const activeFilters = list.filters.flatMap((f) => {
|
|
35
32
|
if (f instanceof DateRangeFilter) {
|
|
36
33
|
const value = f.getValue();
|
|
37
34
|
if (value) {
|
|
38
35
|
return [
|
|
39
|
-
/* @__PURE__ */ jsx(
|
|
36
|
+
/* @__PURE__ */ jsx(
|
|
37
|
+
BadgeView,
|
|
38
|
+
{
|
|
39
|
+
onClose: () => f.clear(),
|
|
40
|
+
isDisabled,
|
|
41
|
+
children: /* @__PURE__ */ jsx(TextView, { children: `${transformDateValueToFormattedDate(value.start)} - ${transformDateValueToFormattedDate(value.end)}` })
|
|
42
|
+
},
|
|
43
|
+
f.name
|
|
44
|
+
)
|
|
40
45
|
];
|
|
41
46
|
}
|
|
42
47
|
}
|
|
43
|
-
return f.values.filter((v) => v.isActive).map((v) => /* @__PURE__ */ jsx(
|
|
48
|
+
return f.values.filter((v) => v.isActive).map((v) => /* @__PURE__ */ jsx(
|
|
49
|
+
BadgeView,
|
|
50
|
+
{
|
|
51
|
+
onClose: () => v.deactivate(),
|
|
52
|
+
isDisabled,
|
|
53
|
+
children: /* @__PURE__ */ jsx(TextView, { children: v.render() })
|
|
54
|
+
},
|
|
55
|
+
v.id
|
|
56
|
+
));
|
|
44
57
|
});
|
|
45
58
|
const storingAvailable = list.filters.some((f) => f.isStoringAvailable());
|
|
46
59
|
const hasChanges = list.filters.some((f) => f.hasChanges());
|
|
47
|
-
const storeFiltersButton = storingAvailable && hasChanges && /* @__PURE__ */ jsxs(TooltipTriggerView, { children: [
|
|
60
|
+
const storeFiltersButton = storingAvailable && hasChanges && /* @__PURE__ */ jsxs(TooltipTriggerView, { isDisabled, children: [
|
|
48
61
|
/* @__PURE__ */ jsx(TooltipView, { children: formatter.format("filters.store") }),
|
|
49
62
|
/* @__PURE__ */ jsx(
|
|
50
63
|
ButtonView,
|
|
@@ -58,7 +71,7 @@ const ActiveFilters = observer(() => {
|
|
|
58
71
|
}
|
|
59
72
|
)
|
|
60
73
|
] });
|
|
61
|
-
const resetFiltersButton = hasChanges ? /* @__PURE__ */ jsxs(
|
|
74
|
+
const resetFiltersButton = hasChanges ? /* @__PURE__ */ jsxs(TooltipTriggerView, { isDisabled, children: [
|
|
62
75
|
/* @__PURE__ */ jsx(TooltipView, { children: formatter.format("filters.reset") }),
|
|
63
76
|
/* @__PURE__ */ jsx(
|
|
64
77
|
ButtonView,
|
|
@@ -72,7 +85,7 @@ const ActiveFilters = observer(() => {
|
|
|
72
85
|
}
|
|
73
86
|
)
|
|
74
87
|
] }) : void 0;
|
|
75
|
-
const removeAllFiltersButton = activeFilters.length > 1 ? /* @__PURE__ */ jsxs(
|
|
88
|
+
const removeAllFiltersButton = activeFilters.length > 1 ? /* @__PURE__ */ jsxs(TooltipTriggerView, { isDisabled, children: [
|
|
76
89
|
/* @__PURE__ */ jsx(TooltipView, { children: formatter.format("filters.clear") }),
|
|
77
90
|
/* @__PURE__ */ jsx(
|
|
78
91
|
ButtonView,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActiveFilters.mjs","sources":["../../../../../../../../../../../src/components/List/components/Header/components/ActiveFilters/ActiveFilters.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport styles from \"./ActiveFilters.module.scss\";\nimport locales from \"../../../../locales/*.locale.json\";\nimport { observer } from \"mobx-react-lite\";\nimport { useLocalizedStringFormatter } from \"@/components/TranslationProvider/useLocalizedStringFormatter\";\nimport {
|
|
1
|
+
{"version":3,"file":"ActiveFilters.mjs","sources":["../../../../../../../../../../../src/components/List/components/Header/components/ActiveFilters/ActiveFilters.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport styles from \"./ActiveFilters.module.scss\";\nimport locales from \"../../../../locales/*.locale.json\";\nimport { observer } from \"mobx-react-lite\";\nimport { useLocalizedStringFormatter } from \"@/components/TranslationProvider/useLocalizedStringFormatter\";\nimport {\n IconClose,\n IconSave,\n IconUndo,\n} from \"@/components/Icon/components/icons\";\nimport ButtonView from \"@/views/ButtonView\";\nimport TooltipView from \"@/views/TooltipView\";\nimport DivView from \"@/views/DivView\";\nimport BadgeView from \"@/views/BadgeView\";\nimport TooltipTriggerView from \"@/views/TooltipTriggerView\";\nimport TextView from \"@/views/TextView\";\nimport { Filter } from \"@/components/List/model/filter/Filter\";\nimport { transformDateValueToFormattedDate } from \"@/lib/date/transformDateValueToFormattedDate\";\nimport { DateRangeFilter } from \"@/components/List/model/filter/DateRangeFilter\";\n\ninterface Props {\n isDisabled?: boolean;\n}\n\nexport const ActiveFilters: FC<Props> = observer((props) => {\n const { isDisabled } = props;\n const list = useList();\n const formatter = useLocalizedStringFormatter(locales, \"List\");\n\n const activeFilters = list.filters.flatMap((f) => {\n if (f instanceof DateRangeFilter) {\n const value = f.getValue();\n if (value) {\n return [\n <BadgeView\n key={f.name}\n onClose={() => f.clear()}\n isDisabled={isDisabled}\n >\n <TextView>\n {`${transformDateValueToFormattedDate(value.start)} - ${transformDateValueToFormattedDate(value.end)}`}\n </TextView>\n </BadgeView>,\n ];\n }\n }\n\n return f.values\n .filter((v) => v.isActive)\n .map((v) => (\n <BadgeView\n key={v.id}\n onClose={() => v.deactivate()}\n isDisabled={isDisabled}\n >\n <TextView>{v.render()}</TextView>\n </BadgeView>\n ));\n });\n\n const storingAvailable = list.filters.some((f) => f.isStoringAvailable());\n const hasChanges = list.filters.some((f) => f.hasChanges());\n\n const storeFiltersButton = storingAvailable && hasChanges && (\n <TooltipTriggerView isDisabled={isDisabled}>\n <TooltipView>{formatter.format(\"filters.store\")}</TooltipView>\n <ButtonView\n size=\"s\"\n variant=\"plain\"\n color=\"secondary\"\n onPress={() =>\n Filter.storeFilters(list, { autosave: false, manualSave: true })\n }\n aria-label={formatter.format(\"filters.store\")}\n >\n <IconSave />\n </ButtonView>\n </TooltipTriggerView>\n );\n\n const resetFiltersButton = hasChanges ? (\n <TooltipTriggerView isDisabled={isDisabled}>\n <TooltipView>{formatter.format(\"filters.reset\")}</TooltipView>\n <ButtonView\n size=\"s\"\n variant=\"plain\"\n color=\"secondary\"\n onPress={() => list.resetFilters()}\n aria-label={formatter.format(\"filters.reset\")}\n >\n <IconUndo />\n </ButtonView>\n </TooltipTriggerView>\n ) : undefined;\n\n const removeAllFiltersButton =\n activeFilters.length > 1 ? (\n <TooltipTriggerView isDisabled={isDisabled}>\n <TooltipView>{formatter.format(\"filters.clear\")}</TooltipView>\n <ButtonView\n size=\"s\"\n variant=\"plain\"\n color=\"secondary\"\n onPress={() => list.clearFilters()}\n >\n <IconClose />\n </ButtonView>\n </TooltipTriggerView>\n ) : undefined;\n\n if (\n activeFilters.length === 0 &&\n !storeFiltersButton &&\n !resetFiltersButton\n ) {\n return null;\n }\n\n return (\n <DivView className={styles.activeFilters}>\n {activeFilters}\n {storeFiltersButton}\n {resetFiltersButton}\n {removeAllFiltersButton}\n </DivView>\n );\n});\n\nexport default ActiveFilters;\n"],"names":[],"mappings":"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"}
|
|
@@ -10,19 +10,24 @@ import { IconFilter } from '../../../../../Icon/components/icons/IconFilter.mjs'
|
|
|
10
10
|
import ButtonView from '../../../../../../views/ButtonView.mjs';
|
|
11
11
|
import 'invariant';
|
|
12
12
|
import 'react-aria-components';
|
|
13
|
-
import '../../../../../IllustratedMessage/IllustratedMessage.mjs';
|
|
14
|
-
import '../../../../../Heading/Heading.mjs';
|
|
15
|
-
import '../../../../../Text/Text.mjs';
|
|
16
|
-
import locales from '../../../../../../../../../_virtual/_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs';
|
|
17
|
-
import { useLocalizedStringFormatter } from '../../../../../TranslationProvider/useLocalizedStringFormatter.mjs';
|
|
18
13
|
import clsx from 'clsx';
|
|
19
14
|
import '@mittwald/react-tunnel';
|
|
20
15
|
import '../../../../../../views/ListItemViewContentView.mjs';
|
|
21
16
|
import '../../../../../../lib/propsContext/propsContext.mjs';
|
|
22
17
|
import '../../../../../../lib/propsContext/components/PropsContextProvider.mjs';
|
|
18
|
+
import locales from '../../../../../../../../../_virtual/_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs';
|
|
19
|
+
import { useLocalizedStringFormatter } from '../../../../../TranslationProvider/useLocalizedStringFormatter.mjs';
|
|
23
20
|
import '../../../../../../views/ContextMenuTriggerView.mjs';
|
|
24
21
|
import '../../../../../ColumnLayout/ColumnLayout.mjs';
|
|
25
22
|
import '../../../ListSummary/ListSummary.mjs';
|
|
23
|
+
import '../../../../../../views/DivView.mjs';
|
|
24
|
+
import '../../../../../../views/IllustratedMessageView.mjs';
|
|
25
|
+
import HeadingView from '../../../../../../views/HeadingView.mjs';
|
|
26
|
+
import TextView from '../../../../../../views/TextView.mjs';
|
|
27
|
+
import '../../../../../TranslationProvider/TranslationProvider.mjs';
|
|
28
|
+
import '../../../../../IllustratedMessage/IllustratedMessage.mjs';
|
|
29
|
+
import '../../../../../Heading/Heading.mjs';
|
|
30
|
+
import '../../../../../Text/Text.mjs';
|
|
26
31
|
import { useList } from '../../../../hooks/useList.mjs';
|
|
27
32
|
import '../../../../listContext.mjs';
|
|
28
33
|
import 'mobx';
|
|
@@ -32,20 +37,19 @@ import ContentView from '../../../../../../views/ContentView.mjs';
|
|
|
32
37
|
import SectionView from '../../../../../../views/SectionView.mjs';
|
|
33
38
|
import { FilterAccordion } from './FilterAccordion.mjs';
|
|
34
39
|
import { ViewModeAccordion } from './ViewModeAccordion.mjs';
|
|
35
|
-
import TextView from '../../../../../../views/TextView.mjs';
|
|
36
40
|
import { SortingAccordion } from './SortingAccordion.mjs';
|
|
37
41
|
import ActionGroupView from '../../../../../../views/ActionGroupView.mjs';
|
|
38
42
|
import 'remeda';
|
|
39
43
|
import '@react-aria/utils';
|
|
40
44
|
import 'dot-prop';
|
|
41
45
|
import { useOverlayController } from '../../../../../../lib/controller/overlay/useOverlayController.mjs';
|
|
42
|
-
import HeadingView from '../../../../../../views/HeadingView.mjs';
|
|
43
46
|
import { ModalTrigger } from '../../../../../Modal/components/ModalTrigger/ModalTrigger.mjs';
|
|
44
47
|
import { Modal } from '../../../../../Modal/Modal.mjs';
|
|
45
48
|
import { SkeletonText } from '../../../../../SkeletonText/SkeletonText.mjs';
|
|
46
49
|
import { useAvailableViewModes } from '../../lib.mjs';
|
|
47
50
|
|
|
48
|
-
const AllFiltersModal = () => {
|
|
51
|
+
const AllFiltersModal = (props) => {
|
|
52
|
+
const { isDisabled } = props;
|
|
49
53
|
const list = useList();
|
|
50
54
|
const stringFormatter = useLocalizedStringFormatter(locales, "List");
|
|
51
55
|
const isInitiallyLoading = list.loader.useIsInitiallyLoading();
|
|
@@ -76,6 +80,7 @@ const AllFiltersModal = () => {
|
|
|
76
80
|
),
|
|
77
81
|
variant: "outline",
|
|
78
82
|
color: "secondary",
|
|
83
|
+
isDisabled,
|
|
79
84
|
children: [
|
|
80
85
|
/* @__PURE__ */ jsx(TextView, { children: stringFormatter.format("filters.all") }),
|
|
81
86
|
/* @__PURE__ */ jsx(IconFilter, {})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AllFiltersModal.mjs","sources":["../../../../../../../../../../../src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { IconFilter } from \"@/components/Icon/components/icons\";\nimport ButtonView from \"@/views/ButtonView\";\nimport { useList } from \"@/components/List\";\nimport styles from \"@/components/List/components/Header/Header.module.css\";\nimport { useLocalizedStringFormatter } from \"@/components/TranslationProvider/useLocalizedStringFormatter\";\nimport locales from \"../../../../locales/*.locale.json\";\nimport ContentView from \"@/views/ContentView\";\nimport SectionView from \"@/views/SectionView\";\nimport { FilterAccordion } from \"@/components/List/components/Header/components/AllFiltersModal/FilterAccordion\";\nimport { ViewModeAccordion } from \"@/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion\";\nimport TextView from \"@/views/TextView\";\nimport { SortingAccordion } from \"@/components/List/components/Header/components/AllFiltersModal/SortingAccordion\";\nimport ActionGroupView from \"@/views/ActionGroupView\";\nimport { useOverlayController } from \"@/lib/controller\";\nimport HeadingView from \"@/views/HeadingView\";\nimport clsx from \"clsx\";\nimport Modal, { ModalTrigger } from \"@/components/Modal\";\nimport { SkeletonText } from \"@/components/SkeletonText\";\nimport { useAvailableViewModes } from \"../../lib\";\n\nexport const AllFiltersModal: FC = () => {\n const list = useList();\n const stringFormatter = useLocalizedStringFormatter(locales, \"List\");\n\n const isInitiallyLoading = list.loader.useIsInitiallyLoading();\n const totalItemCount =\n list.batches.getTotalItemsCount() ?? list.items.entries.length;\n\n const filterAccordions = list.filters.map((f) => (\n <FilterAccordion filter={f} key={f.name} />\n ));\n\n const availableViewModes = useAvailableViewModes();\n\n const accordions = [\n availableViewModes.length > 1 && <ViewModeAccordion key=\"viewMode\" />,\n list.sorting.length > 0 && <SortingAccordion key=\"sorting\" />,\n ...filterAccordions,\n ].filter(Boolean);\n\n const hasSecondaryFilters = list.filters.some(\n (f) => f.priority === \"secondary\",\n );\n\n const controller = useOverlayController(\"Modal\", {\n reuseControllerFromContext: false,\n });\n\n if (accordions.length === 0) {\n return null;\n }\n\n return (\n <ModalTrigger controller={controller}>\n <ButtonView\n className={clsx(\n styles.hideOnMobile,\n hasSecondaryFilters ? undefined : styles.hideOnDesktop,\n )}\n variant=\"outline\"\n color=\"secondary\"\n >\n <TextView>{stringFormatter.format(\"filters.all\")}</TextView>\n <IconFilter />\n </ButtonView>\n\n <ButtonView\n className={styles.hideOnDesktop}\n variant=\"outline\"\n color=\"secondary\"\n aria-label={stringFormatter.format(\"filters.all\")}\n >\n <IconFilter />\n </ButtonView>\n\n <Modal offCanvas controller={controller}>\n <HeadingView>{stringFormatter.format(\"filters.all\")}</HeadingView>\n <ContentView>\n <SectionView>{...accordions}</SectionView>\n </ContentView>\n\n <ActionGroupView>\n <ButtonView onPress={() => controller.close()}>\n <TextView>\n {isInitiallyLoading ? (\n <SkeletonText width=\"16ch\" />\n ) : (\n stringFormatter.format(\"results.show\", {\n totalItemCount,\n })\n )}\n </TextView>\n </ButtonView>\n <ButtonView\n color=\"secondary\"\n variant=\"soft\"\n onPress={() => {\n list.resetFilters();\n controller.close();\n }}\n >\n {stringFormatter.format(\"reset\")}\n </ButtonView>\n </ActionGroupView>\n </Modal>\n </ModalTrigger>\n );\n};\n"],"names":["styles"],"mappings":"
|
|
1
|
+
{"version":3,"file":"AllFiltersModal.mjs","sources":["../../../../../../../../../../../src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { IconFilter } from \"@/components/Icon/components/icons\";\nimport ButtonView from \"@/views/ButtonView\";\nimport { useList } from \"@/components/List\";\nimport styles from \"@/components/List/components/Header/Header.module.css\";\nimport { useLocalizedStringFormatter } from \"@/components/TranslationProvider/useLocalizedStringFormatter\";\nimport locales from \"../../../../locales/*.locale.json\";\nimport ContentView from \"@/views/ContentView\";\nimport SectionView from \"@/views/SectionView\";\nimport { FilterAccordion } from \"@/components/List/components/Header/components/AllFiltersModal/FilterAccordion\";\nimport { ViewModeAccordion } from \"@/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion\";\nimport TextView from \"@/views/TextView\";\nimport { SortingAccordion } from \"@/components/List/components/Header/components/AllFiltersModal/SortingAccordion\";\nimport ActionGroupView from \"@/views/ActionGroupView\";\nimport { useOverlayController } from \"@/lib/controller\";\nimport HeadingView from \"@/views/HeadingView\";\nimport clsx from \"clsx\";\nimport Modal, { ModalTrigger } from \"@/components/Modal\";\nimport { SkeletonText } from \"@/components/SkeletonText\";\nimport { useAvailableViewModes } from \"../../lib\";\n\ninterface Props {\n isDisabled?: boolean;\n}\n\nexport const AllFiltersModal: FC<Props> = (props) => {\n const { isDisabled } = props;\n const list = useList();\n const stringFormatter = useLocalizedStringFormatter(locales, \"List\");\n\n const isInitiallyLoading = list.loader.useIsInitiallyLoading();\n const totalItemCount =\n list.batches.getTotalItemsCount() ?? list.items.entries.length;\n\n const filterAccordions = list.filters.map((f) => (\n <FilterAccordion filter={f} key={f.name} />\n ));\n\n const availableViewModes = useAvailableViewModes();\n\n const accordions = [\n availableViewModes.length > 1 && <ViewModeAccordion key=\"viewMode\" />,\n list.sorting.length > 0 && <SortingAccordion key=\"sorting\" />,\n ...filterAccordions,\n ].filter(Boolean);\n\n const hasSecondaryFilters = list.filters.some(\n (f) => f.priority === \"secondary\",\n );\n\n const controller = useOverlayController(\"Modal\", {\n reuseControllerFromContext: false,\n });\n\n if (accordions.length === 0) {\n return null;\n }\n\n return (\n <ModalTrigger controller={controller}>\n <ButtonView\n className={clsx(\n styles.hideOnMobile,\n hasSecondaryFilters ? undefined : styles.hideOnDesktop,\n )}\n variant=\"outline\"\n color=\"secondary\"\n isDisabled={isDisabled}\n >\n <TextView>{stringFormatter.format(\"filters.all\")}</TextView>\n <IconFilter />\n </ButtonView>\n\n <ButtonView\n className={styles.hideOnDesktop}\n variant=\"outline\"\n color=\"secondary\"\n aria-label={stringFormatter.format(\"filters.all\")}\n >\n <IconFilter />\n </ButtonView>\n\n <Modal offCanvas controller={controller}>\n <HeadingView>{stringFormatter.format(\"filters.all\")}</HeadingView>\n <ContentView>\n <SectionView>{...accordions}</SectionView>\n </ContentView>\n\n <ActionGroupView>\n <ButtonView onPress={() => controller.close()}>\n <TextView>\n {isInitiallyLoading ? (\n <SkeletonText width=\"16ch\" />\n ) : (\n stringFormatter.format(\"results.show\", {\n totalItemCount,\n })\n )}\n </TextView>\n </ButtonView>\n <ButtonView\n color=\"secondary\"\n variant=\"soft\"\n onPress={() => {\n list.resetFilters();\n controller.close();\n }}\n >\n {stringFormatter.format(\"reset\")}\n </ButtonView>\n </ActionGroupView>\n </Modal>\n </ModalTrigger>\n );\n};\n"],"names":["styles"],"mappings":"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"}
|