@mittwald/flow-react-components 0.2.0-alpha.756 → 0.2.0-alpha.758
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 +10 -0
- package/dist/assets/doc-properties.json +5303 -5284
- package/dist/css/all.css +1 -1
- package/dist/js/packages/components/src/components/List/List.mjs +2 -2
- package/dist/js/packages/components/src/components/List/List.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs +7 -5
- 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/ViewModeAccordion.mjs +2 -2
- 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/ViewModeContextMenu/ViewModeContextMenu.mjs +1 -1
- 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 +1 -1
- 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/Items/Items.mjs +2 -2
- 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/FallbackItems/FallbackItems.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/components/FallbackItems/FallbackItems.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/components/Item/Item.mjs +9 -3
- package/dist/js/packages/components/src/components/List/components/Items/components/Item/Item.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/ListItemView/ListItemView.mjs +2 -2
- package/dist/js/packages/components/src/components/List/components/ListItemView/ListItemView.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/List.mjs +11 -98
- package/dist/js/packages/components/src/components/List/model/List.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/ListSettingsStore.mjs +90 -0
- package/dist/js/packages/components/src/components/List/model/ListSettingsStore.mjs.map +1 -0
- package/dist/js/packages/components/src/components/List/model/ListViewMode.mjs +38 -0
- package/dist/js/packages/components/src/components/List/model/ListViewMode.mjs.map +1 -0
- package/dist/js/packages/components/src/components/List/model/ReactTable.mjs +4 -3
- package/dist/js/packages/components/src/components/List/model/ReactTable.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/filter/Filter.mjs +62 -46
- package/dist/js/packages/components/src/components/List/model/filter/Filter.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/search/Search.mjs +16 -5
- package/dist/js/packages/components/src/components/List/model/search/Search.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/sorting/Sorting.mjs +35 -20
- package/dist/js/packages/components/src/components/List/model/sorting/Sorting.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/types.mjs.map +1 -1
- package/dist/js/packages/components/src/components/SettingsProvider/SettingsProvider.mjs +5 -5
- package/dist/js/packages/components/src/components/SettingsProvider/SettingsProvider.mjs.map +1 -1
- package/dist/js/packages/components/src/components/SettingsProvider/middleware/defaultImplementations.mjs +9 -0
- package/dist/js/packages/components/src/components/SettingsProvider/middleware/defaultImplementations.mjs.map +1 -0
- package/dist/js/packages/components/src/components/SettingsProvider/models/SettingsStore.mjs +55 -13
- package/dist/js/packages/components/src/components/SettingsProvider/models/SettingsStore.mjs.map +1 -1
- package/dist/types/components/List/List.d.ts.map +1 -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/ViewModeAccordion.d.ts.map +1 -1
- package/dist/types/components/List/components/Items/components/Item/Item.d.ts.map +1 -1
- package/dist/types/components/List/model/List.d.ts +6 -28
- package/dist/types/components/List/model/List.d.ts.map +1 -1
- package/dist/types/components/List/model/ListSettingsStore.d.ts +63 -0
- package/dist/types/components/List/model/ListSettingsStore.d.ts.map +1 -0
- package/dist/types/components/List/model/ListViewMode.d.ts +19 -0
- package/dist/types/components/List/model/ListViewMode.d.ts.map +1 -0
- package/dist/types/components/List/model/ReactTable.d.ts.map +1 -1
- package/dist/types/components/List/model/filter/Filter.d.ts +9 -9
- package/dist/types/components/List/model/filter/Filter.d.ts.map +1 -1
- package/dist/types/components/List/model/filter/types.d.ts +1 -6
- package/dist/types/components/List/model/filter/types.d.ts.map +1 -1
- package/dist/types/components/List/model/search/Search.d.ts +3 -1
- package/dist/types/components/List/model/search/Search.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/sorting/Sorting.d.ts +3 -10
- package/dist/types/components/List/model/sorting/Sorting.d.ts.map +1 -1
- package/dist/types/components/List/model/sorting/types.d.ts +1 -0
- package/dist/types/components/List/model/sorting/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.map +1 -1
- package/dist/types/components/SettingsProvider/SettingsProvider.browser.test.d.ts +2 -0
- package/dist/types/components/SettingsProvider/SettingsProvider.browser.test.d.ts.map +1 -0
- package/dist/types/components/SettingsProvider/SettingsProvider.d.ts +2 -2
- package/dist/types/components/SettingsProvider/SettingsProvider.d.ts.map +1 -1
- package/dist/types/components/SettingsProvider/middleware/defaultImplementations.d.ts +4 -0
- package/dist/types/components/SettingsProvider/middleware/defaultImplementations.d.ts.map +1 -0
- package/dist/types/components/SettingsProvider/middleware/types.d.ts +6 -0
- package/dist/types/components/SettingsProvider/middleware/types.d.ts.map +1 -0
- package/dist/types/components/SettingsProvider/models/SettingsStore.d.ts +12 -3
- package/dist/types/components/SettingsProvider/models/SettingsStore.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -150,8 +150,8 @@ const List = flowComponent("List", (props) => {
|
|
|
150
150
|
/* @__PURE__ */ jsx(Header, {}),
|
|
151
151
|
/* @__PURE__ */ jsxs(DivView, { className: styles.listWrapper, children: [
|
|
152
152
|
listModel.items.entries.length > 0 && /* @__PURE__ */ jsx(TunnelExit, { id: "listSummary" }),
|
|
153
|
-
(listModel.viewMode
|
|
154
|
-
listModel.viewMode
|
|
153
|
+
(listModel.viewMode.isList || listModel.viewMode.isTiles) && /* @__PURE__ */ jsx(Items, {}),
|
|
154
|
+
listModel.viewMode.isTable && /* @__PURE__ */ jsx(Table, {})
|
|
155
155
|
] }),
|
|
156
156
|
!hidePagination && /* @__PURE__ */ jsx(Footer, {})
|
|
157
157
|
] })
|
|
@@ -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 }\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 === \"list\" ||\n listModel.viewMode === \"tiles\") && <Items />}\n {listModel.viewMode === \"table\" && <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 } 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 }\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,7 +1,6 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
/* */
|
|
3
3
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
|
-
import 'react';
|
|
5
4
|
import { useList } from '../../../../hooks/useList.mjs';
|
|
6
5
|
import styles from './ActiveFilters.module.scss.mjs';
|
|
7
6
|
import locales from '../../../../../../../../../_virtual/_.locale.json@8d5024994f97657f895a4e2a188d2d8a.mjs';
|
|
@@ -12,6 +11,7 @@ import { TooltipTrigger } from '../../../../../Tooltip/components/TooltipTrigger
|
|
|
12
11
|
import 'react-aria-components';
|
|
13
12
|
import 'clsx';
|
|
14
13
|
import '../../../../../../lib/propsContext/propsContext.mjs';
|
|
14
|
+
import 'react';
|
|
15
15
|
import '@mittwald/flow-icons';
|
|
16
16
|
import '../../../../../Icon/components/IconSetProvider.mjs';
|
|
17
17
|
import '../../../../../Icon/Icon.mjs';
|
|
@@ -25,14 +25,16 @@ import DivView from '../../../../../../views/DivView.mjs';
|
|
|
25
25
|
import BadgeView from '../../../../../../views/BadgeView.mjs';
|
|
26
26
|
import TooltipTriggerView from '../../../../../../views/TooltipTriggerView.mjs';
|
|
27
27
|
import TextView from '../../../../../../views/TextView.mjs';
|
|
28
|
+
import { Filter } from '../../../../model/filter/Filter.mjs';
|
|
28
29
|
|
|
29
30
|
const ActiveFilters = observer(() => {
|
|
30
31
|
const list = useList();
|
|
31
32
|
const formatter = useLocalizedStringFormatter(locales);
|
|
32
33
|
const activeFilterValues = list.filters.flatMap((f) => f.values).filter((v) => v.isActive);
|
|
33
34
|
const activeFilters = activeFilterValues.map((v) => /* @__PURE__ */ jsx(BadgeView, { onClose: () => v.deactivate(), children: /* @__PURE__ */ jsx(TextView, { children: v.render() }) }, v.id));
|
|
34
|
-
const
|
|
35
|
-
const
|
|
35
|
+
const storingAvailable = list.filters.some((f) => f.isStoringAvailable());
|
|
36
|
+
const hasChanges = list.filters.some((f) => f.hasChanges());
|
|
37
|
+
const storeFiltersButton = storingAvailable && hasChanges && /* @__PURE__ */ jsxs(TooltipTriggerView, { children: [
|
|
36
38
|
/* @__PURE__ */ jsx(TooltipView, { children: /* @__PURE__ */ jsx(Translate, { locales, children: "list.filters.store" }) }),
|
|
37
39
|
/* @__PURE__ */ jsx(
|
|
38
40
|
ButtonView,
|
|
@@ -40,13 +42,13 @@ const ActiveFilters = observer(() => {
|
|
|
40
42
|
size: "s",
|
|
41
43
|
variant: "plain",
|
|
42
44
|
color: "secondary",
|
|
43
|
-
onPress: () =>
|
|
45
|
+
onPress: () => Filter.storeFilters(list, { autosave: false, manualSave: true }),
|
|
44
46
|
"aria-label": formatter.format("list.filters.store"),
|
|
45
47
|
children: /* @__PURE__ */ jsx(IconSave, {})
|
|
46
48
|
}
|
|
47
49
|
)
|
|
48
50
|
] });
|
|
49
|
-
const resetFiltersButton =
|
|
51
|
+
const resetFiltersButton = hasChanges ? /* @__PURE__ */ jsxs(TooltipTrigger, { children: [
|
|
50
52
|
/* @__PURE__ */ jsx(TooltipView, { children: /* @__PURE__ */ jsx(Translate, { locales, children: "list.filters.reset" }) }),
|
|
51
53
|
/* @__PURE__ */ jsx(
|
|
52
54
|
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
|
|
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 { Translate } from \"@/lib/react/components/Translate\";\nimport { observer } from \"mobx-react-lite\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport { TooltipTrigger } from \"@/components/Tooltip\";\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\";\n\nexport const ActiveFilters: FC = observer(() => {\n const list = useList();\n const formatter = useLocalizedStringFormatter(locales);\n\n const activeFilterValues = list.filters\n .flatMap((f) => f.values)\n .filter((v) => v.isActive);\n\n const activeFilters = activeFilterValues.map((v) => (\n <BadgeView key={v.id} onClose={() => v.deactivate()}>\n <TextView>{v.render()}</TextView>\n </BadgeView>\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>\n <TooltipView>\n <Translate locales={locales}>list.filters.store</Translate>\n </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(\"list.filters.store\")}\n >\n <IconSave />\n </ButtonView>\n </TooltipTriggerView>\n );\n\n const resetFiltersButton = hasChanges ? (\n <TooltipTrigger>\n <TooltipView>\n <Translate locales={locales}>list.filters.reset</Translate>\n </TooltipView>\n <ButtonView\n size=\"s\"\n variant=\"plain\"\n color=\"secondary\"\n onPress={() => list.resetFilters()}\n aria-label={formatter.format(\"list.filters.reset\")}\n >\n <IconUndo />\n </ButtonView>\n </TooltipTrigger>\n ) : undefined;\n\n const removeAllFiltersButton =\n activeFilters.length > 1 ? (\n <TooltipTrigger>\n <TooltipView>\n <Translate locales={locales}>list.filters.clear</Translate>\n </TooltipView>\n <ButtonView\n size=\"s\"\n variant=\"plain\"\n color=\"secondary\"\n onPress={() => list.clearFilters()}\n >\n <IconClose />\n </ButtonView>\n </TooltipTrigger>\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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"}
|
|
@@ -37,13 +37,13 @@ const ViewModeAccordion = () => {
|
|
|
37
37
|
const list = useList();
|
|
38
38
|
const stringFormatter = useLocalizedStringFormatter(locales);
|
|
39
39
|
const availableViewModes = useAvailableViewModes();
|
|
40
|
-
const selectedViewMode = list.viewMode;
|
|
40
|
+
const selectedViewMode = list.viewMode.value;
|
|
41
41
|
if (availableViewModes.length <= 1) {
|
|
42
42
|
return null;
|
|
43
43
|
}
|
|
44
44
|
return /* @__PURE__ */ jsxs(AccordionView, { children: [
|
|
45
45
|
/* @__PURE__ */ jsx(HeadingView, { children: stringFormatter.format("list.settings.viewMode") }),
|
|
46
|
-
/* @__PURE__ */ jsx(ContentView, { children: /* @__PURE__ */ jsx(RadioGroupView, { value: selectedViewMode, m: [1, 1], children: availableViewModes.map((v) => /* @__PURE__ */ jsx(RadioView, { value: v, onPress: () => list.
|
|
46
|
+
/* @__PURE__ */ jsx(ContentView, { children: /* @__PURE__ */ jsx(RadioGroupView, { value: selectedViewMode, m: [1, 1], children: availableViewModes.map((v) => /* @__PURE__ */ jsx(RadioView, { value: v, onPress: () => list.viewMode.set(v), children: stringFormatter.format(`list.settings.viewMode.${v}`) }, v)) }) })
|
|
47
47
|
] });
|
|
48
48
|
};
|
|
49
49
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewModeAccordion.mjs","sources":["../../../../../../../../../../../src/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"ViewModeAccordion.mjs","sources":["../../../../../../../../../../../src/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion.tsx"],"sourcesContent":["import { type FC } from \"react\";\nimport AccordionView from \"@/views/AccordionView\";\nimport HeadingView from \"@/views/HeadingView\";\nimport ContentView from \"@/views/ContentView\";\nimport RadioGroupView from \"@/views/RadioGroupView\";\nimport RadioView from \"@/views/RadioView\";\nimport { useAvailableViewModes } from \"@/components/List/components/Header/lib\";\nimport { useList } from \"@/components/List\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport locales from \"../../../../locales/*.locale.json\";\n\nexport const ViewModeAccordion: FC = () => {\n const list = useList();\n const stringFormatter = useLocalizedStringFormatter(locales);\n\n const availableViewModes = useAvailableViewModes();\n const selectedViewMode = list.viewMode.value;\n\n if (availableViewModes.length <= 1) {\n return null;\n }\n\n return (\n <AccordionView>\n <HeadingView>\n {stringFormatter.format(\"list.settings.viewMode\")}\n </HeadingView>\n <ContentView>\n <RadioGroupView value={selectedViewMode} m={[1, 1]}>\n {availableViewModes.map((v) => (\n <RadioView key={v} value={v} onPress={() => list.viewMode.set(v)}>\n {stringFormatter.format(`list.settings.viewMode.${v}`)}\n </RadioView>\n ))}\n </RadioGroupView>\n </ContentView>\n </AccordionView>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAM,oBAAwB,MAAM;AACzC,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,eAAA,GAAkB,4BAA4B,OAAO,CAAA;AAE3D,EAAA,MAAM,qBAAqB,qBAAA,EAAsB;AACjD,EAAA,MAAM,gBAAA,GAAmB,KAAK,QAAA,CAAS,KAAA;AAEvC,EAAA,IAAI,kBAAA,CAAmB,UAAU,CAAA,EAAG;AAClC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,4BACG,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAA,EAAA,EACE,QAAA,EAAA,eAAA,CAAgB,MAAA,CAAO,wBAAwB,CAAA,EAClD,CAAA;AAAA,oBACA,GAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,OAAO,gBAAA,EAAkB,CAAA,EAAG,CAAC,CAAA,EAAG,CAAC,CAAA,EAC9C,QAAA,EAAA,kBAAA,CAAmB,GAAA,CAAI,CAAC,sBACvB,GAAA,CAAC,SAAA,EAAA,EAAkB,KAAA,EAAO,CAAA,EAAG,SAAS,MAAM,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,EAC5D,QAAA,EAAA,eAAA,CAAgB,MAAA,CAAO,CAAA,uBAAA,EAA0B,CAAC,CAAA,CAAE,CAAA,EAAA,EADvC,CAEhB,CACD,GACH,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -36,7 +36,7 @@ import ContextMenuView from '../../../../../../views/ContextMenuView.mjs';
|
|
|
36
36
|
const ViewModeContextMenu = () => {
|
|
37
37
|
const stringFormatter = useLocalizedStringFormatter(locales);
|
|
38
38
|
const list = useList();
|
|
39
|
-
const selectedViewMode = list.viewMode;
|
|
39
|
+
const selectedViewMode = list.viewMode.value;
|
|
40
40
|
const availableViewModes = useAvailableViewModes();
|
|
41
41
|
if (availableViewModes.length <= 1) {
|
|
42
42
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewModeContextMenu.mjs","sources":["../../../../../../../../../../../src/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport locales from \"../../../../locales/*.locale.json\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport { useList } from \"@/components/List\";\nimport { IconView } from \"@/components/Icon/components/icons\";\nimport ButtonView from \"@/views/ButtonView\";\nimport TextView from \"@/views/TextView\";\nimport { ViewModeMenuItem } from \"@/components/List/components/Header/components/ViewModeContextMenu/ViewModeMenuItem\";\nimport { useAvailableViewModes } from \"@/components/List/components/Header/lib\";\nimport styles from \"@/components/List/components/Header/Header.module.css\";\nimport ContextMenuTriggerView from \"@/views/ContextMenuTriggerView\";\nimport ContextMenuView from \"@/views/ContextMenuView\";\n\nexport const ViewModeContextMenu: FC = () => {\n const stringFormatter = useLocalizedStringFormatter(locales);\n const list = useList();\n const selectedViewMode = list.viewMode;\n\n const availableViewModes = useAvailableViewModes();\n\n if (availableViewModes.length <= 1) {\n return null;\n }\n\n return (\n <ContextMenuTriggerView>\n <ButtonView\n variant=\"outline\"\n color=\"secondary\"\n aria-label={stringFormatter.format(\"list.settings\")}\n className={styles.hideOnMobile}\n >\n <TextView>\n {stringFormatter.format(`list.settings.viewMode.${selectedViewMode}`)}\n </TextView>\n <IconView />\n </ButtonView>\n <ContextMenuView selectionMode=\"single\" selectedKeys={[selectedViewMode]}>\n {availableViewModes.map((viewMode) => (\n <ViewModeMenuItem viewMode={viewMode} key={viewMode} />\n ))}\n </ContextMenuView>\n </ContextMenuTriggerView>\n );\n};\n"],"names":["styles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaO,MAAM,sBAA0B,MAAM;AAC3C,EAAA,MAAM,eAAA,GAAkB,4BAA4B,OAAO,CAAA;AAC3D,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"ViewModeContextMenu.mjs","sources":["../../../../../../../../../../../src/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport locales from \"../../../../locales/*.locale.json\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport { useList } from \"@/components/List\";\nimport { IconView } from \"@/components/Icon/components/icons\";\nimport ButtonView from \"@/views/ButtonView\";\nimport TextView from \"@/views/TextView\";\nimport { ViewModeMenuItem } from \"@/components/List/components/Header/components/ViewModeContextMenu/ViewModeMenuItem\";\nimport { useAvailableViewModes } from \"@/components/List/components/Header/lib\";\nimport styles from \"@/components/List/components/Header/Header.module.css\";\nimport ContextMenuTriggerView from \"@/views/ContextMenuTriggerView\";\nimport ContextMenuView from \"@/views/ContextMenuView\";\n\nexport const ViewModeContextMenu: FC = () => {\n const stringFormatter = useLocalizedStringFormatter(locales);\n const list = useList();\n const selectedViewMode = list.viewMode.value;\n\n const availableViewModes = useAvailableViewModes();\n\n if (availableViewModes.length <= 1) {\n return null;\n }\n\n return (\n <ContextMenuTriggerView>\n <ButtonView\n variant=\"outline\"\n color=\"secondary\"\n aria-label={stringFormatter.format(\"list.settings\")}\n className={styles.hideOnMobile}\n >\n <TextView>\n {stringFormatter.format(`list.settings.viewMode.${selectedViewMode}`)}\n </TextView>\n <IconView />\n </ButtonView>\n <ContextMenuView selectionMode=\"single\" selectedKeys={[selectedViewMode]}>\n {availableViewModes.map((viewMode) => (\n <ViewModeMenuItem viewMode={viewMode} key={viewMode} />\n ))}\n </ContextMenuView>\n </ContextMenuTriggerView>\n );\n};\n"],"names":["styles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaO,MAAM,sBAA0B,MAAM;AAC3C,EAAA,MAAM,eAAA,GAAkB,4BAA4B,OAAO,CAAA;AAC3D,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,gBAAA,GAAmB,KAAK,QAAA,CAAS,KAAA;AAEvC,EAAA,MAAM,qBAAqB,qBAAA,EAAsB;AAEjD,EAAA,IAAI,kBAAA,CAAmB,UAAU,CAAA,EAAG;AAClC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,4BACG,sBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,SAAA;AAAA,QACR,KAAA,EAAM,WAAA;AAAA,QACN,YAAA,EAAY,eAAA,CAAgB,MAAA,CAAO,eAAe,CAAA;AAAA,QAClD,WAAWA,YAAA,CAAO,YAAA;AAAA,QAElB,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,YACE,QAAA,EAAA,eAAA,CAAgB,MAAA,CAAO,CAAA,uBAAA,EAA0B,gBAAgB,EAAE,CAAA,EACtE,CAAA;AAAA,8BACC,QAAA,EAAA,EAAS;AAAA;AAAA;AAAA,KACZ;AAAA,wBACC,eAAA,EAAA,EAAgB,aAAA,EAAc,QAAA,EAAS,YAAA,EAAc,CAAC,gBAAgB,CAAA,EACpE,QAAA,EAAA,kBAAA,CAAmB,GAAA,CAAI,CAAC,QAAA,qBACvB,GAAA,CAAC,oBAAiB,QAAA,EAAA,EAAyB,QAAU,CACtD,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewModeMenuItem.mjs","sources":["../../../../../../../../../../../src/components/List/components/Header/components/ViewModeContextMenu/ViewModeMenuItem.tsx"],"sourcesContent":["import { type FC } from \"react\";\nimport MenuItemView from \"@/views/MenuItemView\";\nimport type { ListViewMode } from \"@/components/List/model/types\";\nimport { useList } from \"@/components/List\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport locales from \"../../../../locales/*.locale.json\";\n\ninterface Props {\n viewMode: ListViewMode;\n}\n\nexport const ViewModeMenuItem: FC<Props> = (props) => {\n const { viewMode } = props;\n const list = useList();\n const stringFormatter = useLocalizedStringFormatter(locales);\n\n return (\n <MenuItemView\n id={viewMode}\n onAction={() => {\n list.
|
|
1
|
+
{"version":3,"file":"ViewModeMenuItem.mjs","sources":["../../../../../../../../../../../src/components/List/components/Header/components/ViewModeContextMenu/ViewModeMenuItem.tsx"],"sourcesContent":["import { type FC } from \"react\";\nimport MenuItemView from \"@/views/MenuItemView\";\nimport type { ListViewMode } from \"@/components/List/model/types\";\nimport { useList } from \"@/components/List\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport locales from \"../../../../locales/*.locale.json\";\n\ninterface Props {\n viewMode: ListViewMode;\n}\n\nexport const ViewModeMenuItem: FC<Props> = (props) => {\n const { viewMode } = props;\n const list = useList();\n const stringFormatter = useLocalizedStringFormatter(locales);\n\n return (\n <MenuItemView\n id={viewMode}\n onAction={() => {\n list.viewMode.set(viewMode);\n }}\n >\n {stringFormatter.format(`list.settings.viewMode.${viewMode}`)}\n </MenuItemView>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAM,gBAAA,GAA8B,CAAC,KAAA,KAAU;AACpD,EAAA,MAAM,EAAE,UAAS,GAAI,KAAA;AACrB,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,eAAA,GAAkB,4BAA4B,OAAO,CAAA;AAE3D,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,QAAA;AAAA,MACJ,UAAU,MAAM;AACd,QAAA,IAAA,CAAK,QAAA,CAAS,IAAI,QAAQ,CAAA;AAAA,MAC5B,CAAA;AAAA,MAEC,QAAA,EAAA,eAAA,CAAgB,MAAA,CAAO,CAAA,uBAAA,EAA0B,QAAQ,CAAA,CAAE;AAAA;AAAA,GAC9D;AAEJ;;;;"}
|
|
@@ -31,7 +31,7 @@ import { FallbackItems } from './components/FallbackItems/FallbackItems.mjs';
|
|
|
31
31
|
|
|
32
32
|
const Items = () => {
|
|
33
33
|
const list = useList();
|
|
34
|
-
const tiles = list.viewMode
|
|
34
|
+
const tiles = list.viewMode.isTiles;
|
|
35
35
|
const isLoading = list.loader.useIsLoading();
|
|
36
36
|
const isInitiallyLoading = list.loader.useIsInitiallyLoading();
|
|
37
37
|
if (!list.itemView) {
|
|
@@ -49,7 +49,7 @@ const Items = () => {
|
|
|
49
49
|
className: rootClassName,
|
|
50
50
|
...list.componentProps,
|
|
51
51
|
renderEmptyState: () => /* @__PURE__ */ jsx(EmptyView, {}),
|
|
52
|
-
layout:
|
|
52
|
+
layout: tiles ? "grid" : "stack",
|
|
53
53
|
tileMaxWidth: list.itemView.tileMaxWidth,
|
|
54
54
|
children: items.length === 0 && isInitiallyLoading ? /* @__PURE__ */ jsx(FallbackItems, {}) : items
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Items.mjs","sources":["../../../../../../../../../src/components/List/components/Items/Items.tsx"],"sourcesContent":["import { EmptyView } from \"@/components/List\";\nimport Item from \"@/components/List/components/Items/components/Item/Item\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport DivView from \"@/views/DivView\";\nimport ItemsGridListView from \"@/views/ItemsGridListView\";\nimport clsx from \"clsx\";\nimport type { FC } from \"react\";\nimport styles from \"./Items.module.scss\";\nimport { FallbackItems } from \"./components/FallbackItems\";\n\nexport const Items: FC = () => {\n const list = useList();\n const tiles = list.viewMode
|
|
1
|
+
{"version":3,"file":"Items.mjs","sources":["../../../../../../../../../src/components/List/components/Items/Items.tsx"],"sourcesContent":["import { EmptyView } from \"@/components/List\";\nimport Item from \"@/components/List/components/Items/components/Item/Item\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport DivView from \"@/views/DivView\";\nimport ItemsGridListView from \"@/views/ItemsGridListView\";\nimport clsx from \"clsx\";\nimport type { FC } from \"react\";\nimport styles from \"./Items.module.scss\";\nimport { FallbackItems } from \"./components/FallbackItems\";\n\nexport const Items: FC = () => {\n const list = useList();\n const tiles = list.viewMode.isTiles;\n const isLoading = list.loader.useIsLoading();\n const isInitiallyLoading = list.loader.useIsInitiallyLoading();\n\n if (!list.itemView) {\n return null;\n }\n\n const items = list.items.entries.map((item) => (\n <Item key={item.id} data={item.data} id={item.id} />\n ));\n\n const rootClassName = clsx(\n styles.items,\n isLoading && styles.isLoading,\n tiles && styles.tiles,\n );\n\n return (\n <DivView aria-hidden={isInitiallyLoading} aria-busy={isLoading}>\n <ItemsGridListView\n className={rootClassName}\n {...list.componentProps}\n renderEmptyState={() => <EmptyView />}\n layout={tiles ? \"grid\" : \"stack\"}\n tileMaxWidth={list.itemView.tileMaxWidth}\n >\n {items.length === 0 && isInitiallyLoading ? <FallbackItems /> : items}\n </ItemsGridListView>\n </DivView>\n );\n};\n\nexport default Items;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,MAAM,QAAY,MAAM;AAC7B,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,KAAA,GAAQ,KAAK,QAAA,CAAS,OAAA;AAC5B,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,YAAA,EAAa;AAC3C,EAAA,MAAM,kBAAA,GAAqB,IAAA,CAAK,MAAA,CAAO,qBAAA,EAAsB;AAE7D,EAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAQ,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,qBACpC,GAAA,CAAC,IAAA,EAAA,EAAmB,IAAA,EAAM,KAAK,IAAA,EAAM,EAAA,EAAI,KAAK,EAAA,EAAA,EAAnC,IAAA,CAAK,EAAkC,CACnD,CAAA;AAED,EAAA,MAAM,aAAA,GAAgB,IAAA;AAAA,IACpB,MAAA,CAAO,KAAA;AAAA,IACP,aAAa,MAAA,CAAO,SAAA;AAAA,IACpB,SAAS,MAAA,CAAO;AAAA,GAClB;AAEA,EAAA,uBACE,GAAA,CAAC,OAAA,EAAA,EAAQ,aAAA,EAAa,kBAAA,EAAoB,aAAW,SAAA,EACnD,QAAA,kBAAA,GAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,aAAA;AAAA,MACV,GAAG,IAAA,CAAK,cAAA;AAAA,MACT,gBAAA,EAAkB,sBAAM,GAAA,CAAC,SAAA,EAAA,EAAU,CAAA;AAAA,MACnC,MAAA,EAAQ,QAAQ,MAAA,GAAS,OAAA;AAAA,MACzB,YAAA,EAAc,KAAK,QAAA,CAAS,YAAA;AAAA,MAE3B,gBAAM,MAAA,KAAW,CAAA,IAAK,kBAAA,mBAAqB,GAAA,CAAC,iBAAc,CAAA,GAAK;AAAA;AAAA,GAClE,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -8,7 +8,7 @@ import { ListItemSkeletonView } from '../Item/components/ListItemSkeletonView/Li
|
|
|
8
8
|
|
|
9
9
|
const FallbackItems = () => {
|
|
10
10
|
const list = useList();
|
|
11
|
-
const fallback = list.itemView?.loadingView ?? /* @__PURE__ */ jsx(ListItemSkeletonView, { viewMode: list.viewMode });
|
|
11
|
+
const fallback = list.itemView?.loadingView ?? /* @__PURE__ */ jsx(ListItemSkeletonView, { viewMode: list.viewMode.value });
|
|
12
12
|
return Array.from(Array(list.loadingItemsCount)).map((_, i) => /* @__PURE__ */ jsx(ItemContainer, { id: i, data: i, children: cloneElement(fallback) }, i));
|
|
13
13
|
};
|
|
14
14
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FallbackItems.mjs","sources":["../../../../../../../../../../../src/components/List/components/Items/components/FallbackItems/FallbackItems.tsx"],"sourcesContent":["import { ItemContainer } from \"@/components/List/components/Items/components/Item/Item\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport type { FC } from \"react\";\nimport { cloneElement } from \"react\";\nimport { ListItemSkeletonView } from \"../Item/components/ListItemSkeletonView/ListItemSkeletonView\";\n\nexport type FallbackItemsProps = unknown;\n\nexport const FallbackItems: FC<FallbackItemsProps> = () => {\n const list = useList();\n const fallback = list.itemView?.loadingView ?? (\n <ListItemSkeletonView viewMode={list.viewMode} />\n );\n\n return Array.from(Array(list.loadingItemsCount)).map((_, i) => (\n <ItemContainer id={i} data={i as never} key={i}>\n {cloneElement(fallback)}\n </ItemContainer>\n ));\n};\n"],"names":[],"mappings":";;;;;;AAQO,MAAM,gBAAwC,MAAM;AACzD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,QAAA,GAAW,KAAK,QAAA,EAAU,WAAA,wBAC7B,oBAAA,EAAA,EAAqB,QAAA,EAAU,
|
|
1
|
+
{"version":3,"file":"FallbackItems.mjs","sources":["../../../../../../../../../../../src/components/List/components/Items/components/FallbackItems/FallbackItems.tsx"],"sourcesContent":["import { ItemContainer } from \"@/components/List/components/Items/components/Item/Item\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport type { FC } from \"react\";\nimport { cloneElement } from \"react\";\nimport { ListItemSkeletonView } from \"../Item/components/ListItemSkeletonView/ListItemSkeletonView\";\n\nexport type FallbackItemsProps = unknown;\n\nexport const FallbackItems: FC<FallbackItemsProps> = () => {\n const list = useList();\n const fallback = list.itemView?.loadingView ?? (\n <ListItemSkeletonView viewMode={list.viewMode.value} />\n );\n\n return Array.from(Array(list.loadingItemsCount)).map((_, i) => (\n <ItemContainer id={i} data={i as never} key={i}>\n {cloneElement(fallback)}\n </ItemContainer>\n ));\n};\n"],"names":[],"mappings":";;;;;;AAQO,MAAM,gBAAwC,MAAM;AACzD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,QAAA,GAAW,KAAK,QAAA,EAAU,WAAA,wBAC7B,oBAAA,EAAA,EAAqB,QAAA,EAAU,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,CAAA;AAGvD,EAAA,OAAO,KAAA,CAAM,KAAK,KAAA,CAAM,IAAA,CAAK,iBAAiB,CAAC,CAAA,CAAE,IAAI,CAAC,CAAA,EAAG,sBACvD,GAAA,CAAC,aAAA,EAAA,EAAc,IAAI,CAAA,EAAG,IAAA,EAAM,GACzB,QAAA,EAAA,YAAA,CAAa,QAAQ,CAAA,EAAA,EADqB,CAE7C,CACD,CAAA;AACH;;;;"}
|
package/dist/js/packages/components/src/components/List/components/Items/components/Item/Item.mjs
CHANGED
|
@@ -27,9 +27,15 @@ const Item = (props) => {
|
|
|
27
27
|
href,
|
|
28
28
|
target: itemView.target,
|
|
29
29
|
hasAction,
|
|
30
|
-
isTile: list.viewMode
|
|
30
|
+
isTile: list.viewMode.isTiles,
|
|
31
31
|
...gridItemProps,
|
|
32
|
-
children: /* @__PURE__ */ jsx(
|
|
32
|
+
children: /* @__PURE__ */ jsx(
|
|
33
|
+
Suspense,
|
|
34
|
+
{
|
|
35
|
+
fallback: /* @__PURE__ */ jsx(ListItemSkeletonView, { viewMode: list.viewMode.value }),
|
|
36
|
+
children
|
|
37
|
+
}
|
|
38
|
+
)
|
|
33
39
|
}
|
|
34
40
|
);
|
|
35
41
|
};
|
|
@@ -40,7 +46,7 @@ const ItemContainer = (props) => {
|
|
|
40
46
|
{
|
|
41
47
|
textValue: "-",
|
|
42
48
|
className: styles.item,
|
|
43
|
-
isTile: list.viewMode
|
|
49
|
+
isTile: list.viewMode.isTiles,
|
|
44
50
|
children: props.children
|
|
45
51
|
}
|
|
46
52
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Item.mjs","sources":["../../../../../../../../../../../src/components/List/components/Items/components/Item/Item.tsx"],"sourcesContent":["import { useGridItemProps } from \"@/components/List/components/Items/components/Item/hooks/useGridItemProps\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport ItemsGridListItemView from \"@/views/ItemsGridListItemView\";\nimport type { FC, PropsWithChildren } from \"react\";\nimport { Suspense } from \"react\";\nimport type { Key } from \"react-aria-components\";\nimport styles from \"./Item.module.scss\";\nimport { ListItemSkeletonView } from \"./components/ListItemSkeletonView/ListItemSkeletonView\";\n\ninterface Props extends PropsWithChildren {\n id: Key;\n data: never;\n}\n\nexport const Item = (props: Props) => {\n const { id, data } = props;\n const list = useList();\n\n const itemView = list.itemView;\n\n const { gridItemProps, children } = useGridItemProps(props);\n\n if (!itemView) {\n return null;\n }\n\n const textValue = itemView.textValue ? itemView.textValue(data) : undefined;\n const href = itemView.href ? itemView.href(data) : undefined;\n const hasAction = !!gridItemProps.onAction || !!href;\n\n return (\n <ItemsGridListItemView\n id={id}\n textValue={textValue}\n href={href}\n target={itemView.target}\n hasAction={hasAction}\n isTile={list.viewMode
|
|
1
|
+
{"version":3,"file":"Item.mjs","sources":["../../../../../../../../../../../src/components/List/components/Items/components/Item/Item.tsx"],"sourcesContent":["import { useGridItemProps } from \"@/components/List/components/Items/components/Item/hooks/useGridItemProps\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport ItemsGridListItemView from \"@/views/ItemsGridListItemView\";\nimport type { FC, PropsWithChildren } from \"react\";\nimport { Suspense } from \"react\";\nimport type { Key } from \"react-aria-components\";\nimport styles from \"./Item.module.scss\";\nimport { ListItemSkeletonView } from \"./components/ListItemSkeletonView/ListItemSkeletonView\";\n\ninterface Props extends PropsWithChildren {\n id: Key;\n data: never;\n}\n\nexport const Item = (props: Props) => {\n const { id, data } = props;\n const list = useList();\n\n const itemView = list.itemView;\n\n const { gridItemProps, children } = useGridItemProps(props);\n\n if (!itemView) {\n return null;\n }\n\n const textValue = itemView.textValue ? itemView.textValue(data) : undefined;\n const href = itemView.href ? itemView.href(data) : undefined;\n const hasAction = !!gridItemProps.onAction || !!href;\n\n return (\n <ItemsGridListItemView\n id={id}\n textValue={textValue}\n href={href}\n target={itemView.target}\n hasAction={hasAction}\n isTile={list.viewMode.isTiles}\n {...gridItemProps}\n >\n <Suspense\n fallback={<ListItemSkeletonView viewMode={list.viewMode.value} />}\n >\n {children}\n </Suspense>\n </ItemsGridListItemView>\n );\n};\n\nexport const ItemContainer: FC<Props> = (props) => {\n const list = useList();\n return (\n <ItemsGridListItemView\n textValue=\"-\"\n className={styles.item}\n isTile={list.viewMode.isTiles}\n >\n {props.children}\n </ItemsGridListItemView>\n );\n};\n\nexport default Item;\n"],"names":[],"mappings":";;;;;;;;AAcO,MAAM,IAAA,GAAO,CAAC,KAAA,KAAiB;AACpC,EAAA,MAAM,EAAE,EAAA,EAAI,IAAA,EAAK,GAAI,KAAA;AACrB,EAAA,MAAM,OAAO,OAAA,EAAQ;AAErB,EAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AAEtB,EAAA,MAAM,EAAE,aAAA,EAAe,QAAA,EAAS,GAAI,iBAAiB,KAAK,CAAA;AAE1D,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,YAAY,QAAA,CAAS,SAAA,GAAY,QAAA,CAAS,SAAA,CAAU,IAAI,CAAA,GAAI,MAAA;AAClE,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,GAAO,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA,GAAI,MAAA;AACnD,EAAA,MAAM,YAAY,CAAC,CAAC,aAAA,CAAc,QAAA,IAAY,CAAC,CAAC,IAAA;AAEhD,EAAA,uBACE,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAQ,QAAA,CAAS,MAAA;AAAA,MACjB,SAAA;AAAA,MACA,MAAA,EAAQ,KAAK,QAAA,CAAS,OAAA;AAAA,MACrB,GAAG,aAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,0BAAU,GAAA,CAAC,oBAAA,EAAA,EAAqB,QAAA,EAAU,IAAA,CAAK,SAAS,KAAA,EAAO,CAAA;AAAA,UAE9D;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AAEO,MAAM,aAAA,GAA2B,CAAC,KAAA,KAAU;AACjD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,uBACE,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,GAAA;AAAA,MACV,WAAW,MAAA,CAAO,IAAA;AAAA,MAClB,MAAA,EAAQ,KAAK,QAAA,CAAS,OAAA;AAAA,MAErB,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,GACT;AAEJ;;;;"}
|
package/dist/js/packages/components/src/components/List/components/ListItemView/ListItemView.mjs
CHANGED
|
@@ -38,7 +38,7 @@ const ListItemView = (props) => {
|
|
|
38
38
|
},
|
|
39
39
|
Button: {
|
|
40
40
|
tunnelId: "button",
|
|
41
|
-
size: dynamic(() => useList().viewMode
|
|
41
|
+
size: dynamic(() => useList().viewMode.isTiles ? "s" : "m")
|
|
42
42
|
},
|
|
43
43
|
ActionGroup: {
|
|
44
44
|
tunnelId: "button",
|
|
@@ -65,7 +65,7 @@ const ListItemView = (props) => {
|
|
|
65
65
|
return /* @__PURE__ */ jsx(TunnelProvider, { children: /* @__PURE__ */ jsx(
|
|
66
66
|
ListItemViewContentView,
|
|
67
67
|
{
|
|
68
|
-
viewMode: list.viewMode,
|
|
68
|
+
viewMode: list.viewMode.value,
|
|
69
69
|
title: /* @__PURE__ */ jsx(TunnelExit, { id: "title" }),
|
|
70
70
|
avatar: /* @__PURE__ */ jsx(TunnelExit, { id: "avatar" }),
|
|
71
71
|
button: /* @__PURE__ */ jsx(TunnelExit, { id: "button" }),
|
package/dist/js/packages/components/src/components/List/components/ListItemView/ListItemView.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItemView.mjs","sources":["../../../../../../../../../src/components/List/components/ListItemView/ListItemView.tsx"],"sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport styles from \"./ListItemView.module.scss\";\nimport { TunnelExit, TunnelProvider } from \"@mittwald/react-tunnel\";\nimport ListItemViewContentView from \"@/views/ListItemViewContentView\";\nimport {\n dynamic,\n type PropsContext,\n PropsContextProvider,\n} from \"@/lib/propsContext\";\nimport { OptionsButton } from \"@/components/List/components/Items/components/Item/components/OptionsButton\";\nimport { useList } from \"@/components/List\";\nimport type { ColumnLayoutProps } from \"@/components/ColumnLayout\";\n\nexport type ListItemViewProps = PropsWithChildren &\n Pick<ColumnLayoutProps, \"s\" | \"m\" | \"l\">;\n\nexport const ListItemView = (props: ListItemViewProps) => {\n const { children, s, m, l } = props;\n const list = useList();\n\n const propsContext: PropsContext = {\n ContextMenu: {\n tunnelId: \"button\",\n placement: \"bottom right\",\n wrapWith: <OptionsButton className={styles.action} />,\n },\n Button: {\n tunnelId: \"button\",\n size: dynamic(() => (useList().viewMode
|
|
1
|
+
{"version":3,"file":"ListItemView.mjs","sources":["../../../../../../../../../src/components/List/components/ListItemView/ListItemView.tsx"],"sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport styles from \"./ListItemView.module.scss\";\nimport { TunnelExit, TunnelProvider } from \"@mittwald/react-tunnel\";\nimport ListItemViewContentView from \"@/views/ListItemViewContentView\";\nimport {\n dynamic,\n type PropsContext,\n PropsContextProvider,\n} from \"@/lib/propsContext\";\nimport { OptionsButton } from \"@/components/List/components/Items/components/Item/components/OptionsButton\";\nimport { useList } from \"@/components/List\";\nimport type { ColumnLayoutProps } from \"@/components/ColumnLayout\";\n\nexport type ListItemViewProps = PropsWithChildren &\n Pick<ColumnLayoutProps, \"s\" | \"m\" | \"l\">;\n\nexport const ListItemView = (props: ListItemViewProps) => {\n const { children, s, m, l } = props;\n const list = useList();\n\n const propsContext: PropsContext = {\n ContextMenu: {\n tunnelId: \"button\",\n placement: \"bottom right\",\n wrapWith: <OptionsButton className={styles.action} />,\n },\n Button: {\n tunnelId: \"button\",\n size: dynamic(() => (useList().viewMode.isTiles ? \"s\" : \"m\")),\n },\n ActionGroup: {\n tunnelId: \"button\",\n Button: {\n tunnelId: null,\n },\n },\n Avatar: {\n tunnelId: \"avatar\",\n },\n Heading: {\n tunnelId: \"title\",\n },\n Text: {\n tunnelId: \"text\",\n },\n Content: {\n tunnelId: dynamic((p) => (p.slot === \"bottom\" ? \"bottom\" : undefined)),\n },\n Checkbox: {\n tunnelId: \"checkbox\",\n },\n };\n\n return (\n <TunnelProvider>\n <ListItemViewContentView\n viewMode={list.viewMode.value}\n title={<TunnelExit id=\"title\" />}\n avatar={<TunnelExit id=\"avatar\" />}\n button={<TunnelExit id=\"button\" />}\n subTitle={<TunnelExit id=\"text\" />}\n bottom={<TunnelExit id=\"bottom\" />}\n checkbox={<TunnelExit id=\"checkbox\" />}\n s={s}\n m={m}\n l={l}\n >\n <PropsContextProvider props={propsContext}>\n {children}\n </PropsContextProvider>\n </ListItemViewContentView>\n </TunnelProvider>\n );\n};\n\nexport default ListItemView;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBO,MAAM,YAAA,GAAe,CAAC,KAAA,KAA6B;AACxD,EAAA,MAAM,EAAE,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,GAAE,GAAI,KAAA;AAC9B,EAAA,MAAM,OAAO,OAAA,EAAQ;AAErB,EAAA,MAAM,YAAA,GAA6B;AAAA,IACjC,WAAA,EAAa;AAAA,MACX,QAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,cAAA;AAAA,MACX,QAAA,kBAAU,GAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAW,OAAO,MAAA,EAAQ;AAAA,KACrD;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,QAAA,EAAU,QAAA;AAAA,MACV,IAAA,EAAM,QAAQ,MAAO,OAAA,GAAU,QAAA,CAAS,OAAA,GAAU,MAAM,GAAI;AAAA,KAC9D;AAAA,IACA,WAAA,EAAa;AAAA,MACX,QAAA,EAAU,QAAA;AAAA,MACV,MAAA,EAAQ;AAAA,QACN,QAAA,EAAU;AAAA;AACZ,KACF;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,OAAA,EAAS;AAAA,MACP,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,OAAA,EAAS;AAAA,MACP,QAAA,EAAU,QAAQ,CAAC,CAAA,KAAO,EAAE,IAAA,KAAS,QAAA,GAAW,WAAW,MAAU;AAAA,KACvE;AAAA,IACA,QAAA,EAAU;AAAA,MACR,QAAA,EAAU;AAAA;AACZ,GACF;AAEA,EAAA,2BACG,cAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,KAAK,QAAA,CAAS,KAAA;AAAA,MACxB,KAAA,kBAAO,GAAA,CAAC,UAAA,EAAA,EAAW,EAAA,EAAG,OAAA,EAAQ,CAAA;AAAA,MAC9B,MAAA,kBAAQ,GAAA,CAAC,UAAA,EAAA,EAAW,EAAA,EAAG,QAAA,EAAS,CAAA;AAAA,MAChC,MAAA,kBAAQ,GAAA,CAAC,UAAA,EAAA,EAAW,EAAA,EAAG,QAAA,EAAS,CAAA;AAAA,MAChC,QAAA,kBAAU,GAAA,CAAC,UAAA,EAAA,EAAW,EAAA,EAAG,MAAA,EAAO,CAAA;AAAA,MAChC,MAAA,kBAAQ,GAAA,CAAC,UAAA,EAAA,EAAW,EAAA,EAAG,QAAA,EAAS,CAAA;AAAA,MAChC,QAAA,kBAAU,GAAA,CAAC,UAAA,EAAA,EAAW,EAAA,EAAG,UAAA,EAAW,CAAA;AAAA,MACpC,CAAA;AAAA,MACA,CAAA;AAAA,MACA,CAAA;AAAA,MAEA,QAAA,kBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,KAAA,EAAO,YAAA,EAC1B,QAAA,EACH;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -10,12 +10,12 @@ import invariant from 'invariant';
|
|
|
10
10
|
import { Search } from './search/Search.mjs';
|
|
11
11
|
import { ItemView } from './item/ItemView.mjs';
|
|
12
12
|
import { Table } from './table/Table.mjs';
|
|
13
|
-
import {
|
|
13
|
+
import { useEffect } from 'react';
|
|
14
|
+
import { ListSettingsStore } from './ListSettingsStore.mjs';
|
|
15
|
+
import { ListViewMode } from './ListViewMode.mjs';
|
|
14
16
|
import { useSettings } from '../../SettingsProvider/SettingsProvider.mjs';
|
|
15
|
-
import z from 'zod';
|
|
16
17
|
|
|
17
18
|
class List {
|
|
18
|
-
static viewModeSettingsStorageSchema = z.enum(["list", "table", "tiles"]).optional();
|
|
19
19
|
filters;
|
|
20
20
|
itemView;
|
|
21
21
|
table;
|
|
@@ -29,16 +29,10 @@ class List {
|
|
|
29
29
|
accordion;
|
|
30
30
|
getItemId;
|
|
31
31
|
componentProps;
|
|
32
|
-
viewMode;
|
|
33
|
-
setViewMode;
|
|
34
|
-
supportsSettingsStorage;
|
|
35
|
-
settingStorageKey;
|
|
36
32
|
metadata;
|
|
37
|
-
|
|
38
|
-
viewModeStorageKey;
|
|
39
|
-
filterSettingsStorageKey;
|
|
40
|
-
sortingStorageKey;
|
|
33
|
+
settingsStorage;
|
|
41
34
|
loadingItemsCount;
|
|
35
|
+
viewMode;
|
|
42
36
|
constructor(shape) {
|
|
43
37
|
const {
|
|
44
38
|
settingStorageKey,
|
|
@@ -57,12 +51,10 @@ class List {
|
|
|
57
51
|
loadingItemsCount = 5,
|
|
58
52
|
...componentProps
|
|
59
53
|
} = shape;
|
|
60
|
-
|
|
61
|
-
this.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
this.sortingStorageKey = settingStorageKey ? `${settingStorageKey}.sorting` : void 0;
|
|
65
|
-
this.supportsSettingsStorage = !!this.settingStorageKey;
|
|
54
|
+
const generalSettingsStore = useSettings();
|
|
55
|
+
this.settingsStorage = settingStorageKey && generalSettingsStore ? new ListSettingsStore(this, generalSettingsStore, {
|
|
56
|
+
storageKey: settingStorageKey
|
|
57
|
+
}) : void 0;
|
|
66
58
|
this.items = new ItemCollection(this);
|
|
67
59
|
this.filters = filters.map((shape2) => new Filter(this, shape2));
|
|
68
60
|
this.sorting = sorting.map((shape2) => new Sorting(this, shape2));
|
|
@@ -81,21 +73,7 @@ class List {
|
|
|
81
73
|
manualPagination: this.loader.manualPagination,
|
|
82
74
|
manualSorting: this.loader.manualSorting
|
|
83
75
|
});
|
|
84
|
-
|
|
85
|
-
this.getStoredViewModeDefaultSetting() ?? defaultViewMode ?? "list"
|
|
86
|
-
);
|
|
87
|
-
this.viewMode = viewMode;
|
|
88
|
-
this.setViewMode = (viewMode2) => {
|
|
89
|
-
setViewMode(viewMode2);
|
|
90
|
-
if (this.settingsStore && this.viewModeStorageKey) {
|
|
91
|
-
this.settingsStore.set(
|
|
92
|
-
"List",
|
|
93
|
-
this.viewModeStorageKey,
|
|
94
|
-
List.viewModeSettingsStorageSchema,
|
|
95
|
-
viewMode2
|
|
96
|
-
);
|
|
97
|
-
}
|
|
98
|
-
};
|
|
76
|
+
this.viewMode = new ListViewMode(this, { defaultViewMode });
|
|
99
77
|
useEffect(() => {
|
|
100
78
|
this.filters.forEach((f) => f.deleteUnknownFilterValues());
|
|
101
79
|
}, [this.filters]);
|
|
@@ -104,76 +82,11 @@ class List {
|
|
|
104
82
|
return this.filters.some((f) => f.isActive()) || !!this.search && this.search.isSet;
|
|
105
83
|
}
|
|
106
84
|
get visibleSorting() {
|
|
107
|
-
return this.sorting.filter((s) => s.
|
|
85
|
+
return this.sorting.filter((s) => s.initialEnabled !== "hidden");
|
|
108
86
|
}
|
|
109
87
|
static useNew(shape) {
|
|
110
88
|
return new List(shape);
|
|
111
89
|
}
|
|
112
|
-
storeFilterSettings(autosave = false) {
|
|
113
|
-
if (this.settingsStore && this.filterSettingsStorageKey) {
|
|
114
|
-
const data = Object.fromEntries(
|
|
115
|
-
this.filters.map((f) => [
|
|
116
|
-
f.property,
|
|
117
|
-
f.getArrayValue().filter((v) => v.isActive && (autosave ? f.autosave : true)).map((v) => v.id)
|
|
118
|
-
])
|
|
119
|
-
);
|
|
120
|
-
this.settingsStore.set(
|
|
121
|
-
"List",
|
|
122
|
-
this.filterSettingsStorageKey + (autosave ? ".autosave" : ""),
|
|
123
|
-
Filter.settingsStorageSchema,
|
|
124
|
-
data
|
|
125
|
-
);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
storeFilterDefaultSettings() {
|
|
129
|
-
this.storeFilterSettings();
|
|
130
|
-
}
|
|
131
|
-
autosaveFilterSettings() {
|
|
132
|
-
this.storeFilterSettings(true);
|
|
133
|
-
}
|
|
134
|
-
getStoredFilterSettings(autosaved = false) {
|
|
135
|
-
if (this.settingsStore && this.filterSettingsStorageKey) {
|
|
136
|
-
return this.settingsStore.get(
|
|
137
|
-
"List",
|
|
138
|
-
this.filterSettingsStorageKey + (autosaved ? ".autosave" : ""),
|
|
139
|
-
Filter.settingsStorageSchema
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
getStoredFilterDefaultSettings() {
|
|
144
|
-
return this.getStoredFilterSettings();
|
|
145
|
-
}
|
|
146
|
-
getAutosavedFilterSettings() {
|
|
147
|
-
return this.getStoredFilterSettings(true);
|
|
148
|
-
}
|
|
149
|
-
getStoredViewModeDefaultSetting() {
|
|
150
|
-
if (this.settingsStore && this.viewModeStorageKey) {
|
|
151
|
-
return this.settingsStore.get(
|
|
152
|
-
"List",
|
|
153
|
-
this.viewModeStorageKey,
|
|
154
|
-
List.viewModeSettingsStorageSchema
|
|
155
|
-
);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
storeSortingSettings(sorting) {
|
|
159
|
-
if (this.settingsStore && this.sortingStorageKey) {
|
|
160
|
-
this.settingsStore.set(
|
|
161
|
-
"List",
|
|
162
|
-
this.sortingStorageKey,
|
|
163
|
-
Sorting.storageSchema,
|
|
164
|
-
{ direction: sorting.direction, property: sorting.property }
|
|
165
|
-
);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
getStoredSortingDefaultSetting() {
|
|
169
|
-
if (this.settingsStore && this.sortingStorageKey) {
|
|
170
|
-
return this.settingsStore.get(
|
|
171
|
-
"List",
|
|
172
|
-
this.sortingStorageKey,
|
|
173
|
-
Sorting.storageSchema
|
|
174
|
-
);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
90
|
getSorting(id) {
|
|
178
91
|
const sorting = this.sorting.find((s) => s.id === id);
|
|
179
92
|
invariant(!!sorting, `Could not get Sorting (ID: ${id})`);
|
|
@@ -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 private storeFilterSettings(autosave = false) {\n if (this.settingsStore && this.filterSettingsStorageKey) {\n const data = Object.fromEntries(\n this.filters.map((f) => [\n f.property,\n f\n .getArrayValue()\n .filter((v) => v.isActive && (autosave ? f.autosave : true))\n .map((v) => v.id),\n ]),\n );\n\n this.settingsStore.set(\n \"List\",\n this.filterSettingsStorageKey + (autosave ? \".autosave\" : \"\"),\n Filter.settingsStorageSchema,\n data,\n );\n }\n }\n\n public storeFilterDefaultSettings() {\n this.storeFilterSettings();\n }\n\n public autosaveFilterSettings() {\n this.storeFilterSettings(true);\n }\n\n private getStoredFilterSettings(autosaved = false) {\n if (this.settingsStore && this.filterSettingsStorageKey) {\n return this.settingsStore.get(\n \"List\",\n this.filterSettingsStorageKey + (autosaved ? \".autosave\" : \"\"),\n Filter.settingsStorageSchema,\n );\n }\n }\n\n public getStoredFilterDefaultSettings() {\n return this.getStoredFilterSettings();\n }\n\n public getAutosavedFilterSettings() {\n return this.getStoredFilterSettings(true);\n }\n\n public getStoredViewModeDefaultSetting() {\n if (this.settingsStore && this.viewModeStorageKey) {\n return this.settingsStore.get(\n \"List\",\n this.viewModeStorageKey,\n List.viewModeSettingsStorageSchema,\n );\n }\n }\n\n public storeSortingSettings(sorting: Sorting<T>) {\n if (this.settingsStore && this.sortingStorageKey) {\n this.settingsStore.set(\n \"List\",\n this.sortingStorageKey,\n Sorting.storageSchema,\n { direction: sorting.direction, property: sorting.property },\n );\n }\n }\n\n public getStoredSortingDefaultSetting() {\n if (this.settingsStore && this.sortingStorageKey) {\n return this.settingsStore.get(\n \"List\",\n this.sortingStorageKey,\n Sorting.storageSchema,\n );\n }\n }\n\n public getSorting(id: string): Sorting<T> {\n const sorting = this.sorting.find((s) => s.id === id);\n invariant(!!sorting, `Could not get Sorting (ID: ${id})`);\n return sorting;\n }\n\n public clearSorting(): void {\n return this.sorting.forEach((s) => s.clear());\n }\n\n public resetFilters(): void {\n return this.filters.forEach((f) => f.resetValues());\n }\n\n public clearFilters(): void {\n return this.filters.forEach((f) => f.clear());\n }\n\n public useIsEmpty(): boolean {\n return !this.loader.useIsLoading() && this.items.entries.length === 0;\n }\n}\n\nexport default List;\n"],"names":["shape","viewMode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"List.mjs","sources":["../../../../../../../../src/components/List/model/List.ts"],"sourcesContent":["import { ItemCollection } from \"@/components/List/model/item/ItemCollection\";\nimport { BatchesController } from \"@/components/List/model/pagination/BatchesController\";\nimport { Filter } from \"./filter/Filter\";\nimport { Sorting } from \"@/components/List/model/sorting/Sorting\";\nimport ReactTable from \"@/components/List/model/ReactTable\";\nimport type {\n GetItemId,\n ItemActionFn,\n ListShape,\n ListSupportedComponentProps,\n} from \"@/components/List/model/types\";\nimport { IncrementalLoader } from \"@/components/List/model/loading/IncrementalLoader\";\nimport invariant from \"invariant\";\nimport { Search } from \"@/components/List/model/search/Search\";\nimport { ItemView } from \"@/components/List/model/item/ItemView\";\nimport { Table } from \"@/components/List/model/table/Table\";\nimport { useEffect } from \"react\";\nimport { ListSettingsStore } from \"./ListSettingsStore\";\nimport { ListViewMode } from \"./ListViewMode\";\nimport { useSettings } from \"@/components/SettingsProvider/SettingsProvider\";\n\nexport class List<T = unknown, TMeta = unknown> {\n public readonly filters: Filter<T, never, never>[];\n public readonly itemView?: ItemView<T>;\n public readonly table?: Table<T>;\n public readonly search?: Search<T>;\n public readonly sorting: Sorting<T>[];\n public readonly items: ItemCollection<T>;\n public readonly reactTable: ReactTable<T>;\n public readonly batches: BatchesController<T>;\n public readonly loader: IncrementalLoader<T>;\n public readonly onAction?: ItemActionFn<T>;\n public readonly accordion: boolean;\n public readonly getItemId?: GetItemId<T>;\n public readonly componentProps: ListSupportedComponentProps;\n public metadata?: TMeta;\n public readonly settingsStorage?: ListSettingsStore<T>;\n public readonly loadingItemsCount;\n public readonly viewMode: ListViewMode<T>;\n\n public constructor(shape: ListShape<T, TMeta>) {\n const {\n settingStorageKey,\n itemView,\n table,\n filters = [],\n sorting = [],\n batchesController,\n onChange,\n loader,\n search,\n onAction,\n getItemId,\n defaultViewMode,\n accordion = false,\n loadingItemsCount = 5,\n ...componentProps\n } = shape;\n\n const generalSettingsStore = useSettings();\n\n this.settingsStorage =\n settingStorageKey && generalSettingsStore\n ? new ListSettingsStore(this, generalSettingsStore, {\n storageKey: settingStorageKey,\n })\n : undefined;\n\n this.items = new ItemCollection(this);\n this.filters = filters.map((shape) => new Filter(this, shape));\n this.sorting = sorting.map((shape) => new Sorting<T>(this, shape));\n this.search = search ? new Search(this, search) : undefined;\n this.itemView = itemView ? new ItemView(this, itemView) : undefined;\n this.accordion = accordion;\n this.table = table ? new Table(this, table) : undefined;\n this.batches = new BatchesController(this, batchesController);\n this.componentProps = componentProps;\n this.loader = IncrementalLoader.useNew<T>(this, loader);\n this.onAction = onAction;\n this.getItemId = getItemId;\n this.loadingItemsCount = loadingItemsCount;\n this.reactTable = ReactTable.useNew(this, onChange, {\n manualFiltering: this.loader.manualFiltering,\n manualPagination: this.loader.manualPagination,\n manualSorting: this.loader.manualSorting,\n });\n this.viewMode = new ListViewMode(this, { defaultViewMode });\n\n useEffect(() => {\n this.filters.forEach((f) => f.deleteUnknownFilterValues());\n }, [this.filters]);\n }\n\n public get isFiltered(): boolean {\n return (\n this.filters.some((f) => f.isActive()) ||\n (!!this.search && this.search.isSet)\n );\n }\n\n public get visibleSorting() {\n return this.sorting.filter((s) => s.initialEnabled !== \"hidden\");\n }\n\n public static useNew<T, TMeta = unknown>(\n shape: ListShape<T, TMeta>,\n ): List<T, TMeta> {\n return new List<T, TMeta>(shape);\n }\n\n public getSorting(id: string): Sorting<T> {\n const sorting = this.sorting.find((s) => s.id === id);\n invariant(!!sorting, `Could not get Sorting (ID: ${id})`);\n return sorting;\n }\n\n public clearSorting(): void {\n return this.sorting.forEach((s) => s.clear());\n }\n\n public resetFilters(): void {\n return this.filters.forEach((f) => f.resetValues());\n }\n\n public clearFilters(): void {\n return this.filters.forEach((f) => f.clear());\n }\n\n public useIsEmpty(): boolean {\n return !this.loader.useIsLoading() && this.items.entries.length === 0;\n }\n}\n\nexport default List;\n"],"names":["shape"],"mappings":"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"}
|