@mittwald/flow-react-components 0.2.0-alpha.28 → 0.2.0-alpha.30
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 +184 -0
- package/MIGRATION.md +67 -0
- package/dist/assets/doc-properties.json +10388 -10388
- package/dist/css/all.css +1 -1
- package/dist/js/components/Action/context.mjs +1 -1
- package/dist/js/components/Action/context.mjs.map +1 -1
- package/dist/js/components/Action/hooks/useConfirmationModalButtonSlot.mjs +1 -1
- package/dist/js/components/Action/hooks/useConfirmationModalButtonSlot.mjs.map +1 -1
- package/dist/js/components/Action/models/ActionModel.mjs +1 -1
- package/dist/js/components/Action/models/ActionModel.mjs.map +1 -1
- package/dist/js/components/Action/models/ActionState.mjs +4 -4
- package/dist/js/components/Action/models/ActionState.mjs.map +1 -1
- package/dist/js/components/Action/models/ActionStateContext.mjs +5 -4
- package/dist/js/components/Action/models/ActionStateContext.mjs.map +1 -1
- package/dist/js/components/ActionGroup/lib/getActionGroupSlot.mjs +1 -1
- package/dist/js/components/ActionGroup/lib/getActionGroupSlot.mjs.map +1 -1
- package/dist/js/components/Align/Align.mjs +2 -1
- package/dist/js/components/Align/Align.mjs.map +1 -1
- package/dist/js/components/Align/Align.module.scss.mjs +4 -2
- package/dist/js/components/Align/Align.module.scss.mjs.map +1 -1
- package/dist/js/components/Button/Button.mjs +8 -8
- package/dist/js/components/Button/Button.mjs.map +1 -1
- package/dist/js/components/ColumnLayout/ColumnLayout.mjs +3 -3
- package/dist/js/components/ColumnLayout/ColumnLayout.mjs.map +1 -1
- package/dist/js/components/ContextMenu/ContextMenu.mjs +1 -1
- package/dist/js/components/ContextMenu/components/ContextMenuSection/ContextMenuSection.mjs +1 -1
- package/dist/js/components/ContextMenu/lib.mjs +1 -1
- package/dist/js/components/ContextMenu/lib.mjs.map +1 -1
- package/dist/js/components/FileCard/components/FileSizeText/FileSizeText.mjs +1 -1
- package/dist/js/components/FileCard/components/FileSizeText/FileSizeText.mjs.map +1 -1
- package/dist/js/components/FileField/FileField.mjs +4 -4
- package/dist/js/components/FileField/FileField.mjs.map +1 -1
- package/dist/js/components/IllustratedMessage/IllustratedMessage.mjs +1 -1
- package/dist/js/components/IllustratedMessage/IllustratedMessage.mjs.map +1 -1
- package/dist/js/components/Initials/lib/getInitialsFromString.mjs +1 -1
- package/dist/js/components/Initials/lib/getInitialsFromString.mjs.map +1 -1
- package/dist/js/components/List/List.mjs +4 -4
- package/dist/js/components/List/List.mjs.map +1 -1
- package/dist/js/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs +2 -2
- package/dist/js/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs.map +1 -1
- package/dist/js/components/List/components/Header/components/ActiveFilters/ActiveFilters.module.scss.mjs +2 -5
- package/dist/js/components/List/components/Header/components/ActiveFilters/ActiveFilters.module.scss.mjs.map +1 -1
- package/dist/js/components/List/components/Header/components/SearchField/SearchField.mjs +2 -2
- package/dist/js/components/List/components/Header/components/SearchField/SearchField.mjs.map +1 -1
- package/dist/js/components/List/components/Items/components/Item/Item.mjs +2 -2
- package/dist/js/components/List/components/Items/components/Item/Item.mjs.map +1 -1
- package/dist/js/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs +3 -3
- package/dist/js/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs.map +1 -1
- package/dist/js/components/List/components/Table/Table.mjs +2 -2
- package/dist/js/components/List/components/Table/Table.mjs.map +1 -1
- package/dist/js/components/List/model/List.mjs +5 -5
- package/dist/js/components/List/model/List.mjs.map +1 -1
- package/dist/js/components/List/model/ReactTable.mjs +1 -1
- package/dist/js/components/List/model/filter/Filter.mjs +1 -1
- package/dist/js/components/List/model/filter/Filter.mjs.map +1 -1
- package/dist/js/components/List/model/item/ItemView.mjs +1 -1
- package/dist/js/components/List/model/item/ItemView.mjs.map +1 -1
- package/dist/js/components/List/model/loading/IncrementalLoader.mjs +9 -9
- package/dist/js/components/List/model/loading/IncrementalLoader.mjs.map +1 -1
- package/dist/js/components/List/model/loading/IncrementalLoaderState.mjs +4 -4
- package/dist/js/components/List/model/loading/IncrementalLoaderState.mjs.map +1 -1
- package/dist/js/components/List/model/search/Search.mjs +4 -4
- package/dist/js/components/List/model/search/Search.mjs.map +1 -1
- package/dist/js/components/LoadingSpinner/LoadingSpinner.module.scss.mjs +2 -5
- package/dist/js/components/LoadingSpinner/LoadingSpinner.module.scss.mjs.map +1 -1
- package/dist/js/components/Markdown/Markdown.mjs +2 -2
- package/dist/js/components/Markdown/Markdown.mjs.map +1 -1
- package/dist/js/components/Navigation/Navigation.module.scss.mjs +2 -8
- package/dist/js/components/Navigation/Navigation.module.scss.mjs.map +1 -1
- package/dist/js/components/NotificationProvider/NotificationController.mjs +3 -3
- package/dist/js/components/NotificationProvider/NotificationController.mjs.map +1 -1
- package/dist/js/components/Option/Option.module.scss.mjs +2 -10
- package/dist/js/components/Option/Option.module.scss.mjs.map +1 -1
- package/dist/js/components/Overlay/Overlay.module.scss.mjs +1 -3
- package/dist/js/components/Overlay/Overlay.module.scss.mjs.map +1 -1
- package/dist/js/components/ProgressBar/ProgressBar.mjs +1 -1
- package/dist/js/components/ProgressBar/ProgressBar.mjs.map +1 -1
- package/dist/js/components/SettingsProvider/SettingsProvider.mjs +1 -1
- package/dist/js/components/SettingsProvider/SettingsProvider.mjs.map +1 -1
- package/dist/js/components/Skeleton/Skeleton.module.scss.mjs +2 -5
- package/dist/js/components/Skeleton/Skeleton.module.scss.mjs.map +1 -1
- package/dist/js/components/SkeletonText/SkeletonText.module.scss.mjs +2 -5
- package/dist/js/components/SkeletonText/SkeletonText.module.scss.mjs.map +1 -1
- package/dist/js/components/Tabs/Tabs.module.scss.mjs +2 -5
- package/dist/js/components/Tabs/Tabs.module.scss.mjs.map +1 -1
- package/dist/js/components/Tabs/components/TabList/TabList.mjs +1 -1
- package/dist/js/components/Tabs/components/TabList/TabList.mjs.map +1 -1
- package/dist/js/components/Tooltip/Tooltip.module.scss.mjs +2 -5
- package/dist/js/components/Tooltip/Tooltip.module.scss.mjs.map +1 -1
- package/dist/js/index.mjs +1 -0
- package/dist/js/index.mjs.map +1 -1
- package/dist/js/integrations/react-hook-form/components/ActionGroupWrapper/SubmitButtonStateProvider.mjs +1 -1
- package/dist/js/integrations/react-hook-form/components/ActionGroupWrapper/SubmitButtonStateProvider.mjs.map +1 -1
- package/dist/js/integrations/react-hook-form/components/AutoFormResetEffect/AutoFormResetEffect.mjs +1 -1
- package/dist/js/integrations/react-hook-form/components/AutoFormResetEffect/AutoFormResetEffect.mjs.map +1 -1
- package/dist/js/integrations/react-hook-form/components/Form/Form.mjs +2 -2
- package/dist/js/integrations/react-hook-form/components/Form/Form.mjs.map +1 -1
- package/dist/js/integrations/react-hook-form/components/context/formContext.mjs +1 -1
- package/dist/js/integrations/react-hook-form/components/context/formContext.mjs.map +1 -1
- package/dist/js/lib/componentFactory/flowComponent.mjs +1 -1
- package/dist/js/lib/componentFactory/flowComponent.mjs.map +1 -1
- package/dist/js/lib/controller/overlay/OverlayController.mjs +3 -3
- package/dist/js/lib/controller/overlay/OverlayController.mjs.map +1 -1
- package/dist/js/lib/hooks/useProps.mjs +2 -2
- package/dist/js/lib/hooks/useProps.mjs.map +1 -1
- package/dist/js/lib/hooks/useStatic.mjs +8 -0
- package/dist/js/lib/hooks/useStatic.mjs.map +1 -0
- package/dist/js/lib/timer/Timer.mjs +4 -4
- package/dist/js/lib/timer/Timer.mjs.map +1 -1
- package/dist/types/components/Action/models/ActionStateContext.d.ts.map +1 -1
- package/dist/types/components/Align/Align.d.ts.map +1 -1
- package/dist/types/components/Align/stories/IconText.stories.d.ts +7 -0
- package/dist/types/components/Align/stories/IconText.stories.d.ts.map +1 -0
- package/dist/types/components/List/model/loading/IncrementalLoaderState.d.ts +1 -1
- package/dist/types/components/List/model/loading/IncrementalLoaderState.d.ts.map +1 -1
- package/dist/types/components/NotificationProvider/NotificationController.d.ts.map +1 -1
- package/dist/types/components/public.d.ts +1 -0
- package/dist/types/components/public.d.ts.map +1 -1
- package/dist/types/integrations/react-hook-form/components/Form/Form.d.ts.map +1 -1
- package/dist/types/lib/childProps/ChildPropsStore.d.ts.map +1 -1
- package/dist/types/lib/hooks/useStatic.d.ts +2 -0
- package/dist/types/lib/hooks/useStatic.d.ts.map +1 -0
- package/package.json +13 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.mjs","sources":["../../../../src/components/List/List.tsx"],"sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport React from \"react\";\nimport { flowComponent } from \"@/lib/componentFactory/flowComponent\";\nimport { listContext } from \"./listContext\";\nimport { DataLoader } from \"@/components/List/components/DataLoader\";\nimport { Header } from \"@/components/List/components/Header\";\nimport styles from \"./List.module.css\";\nimport ListModel from \"@/components/List/model/List\";\nimport { Items } from \"@/components/List/components/Items\";\nimport { deepFilterByType, deepFindOfType } from \"@/lib/react/deepFindOfType\";\nimport { ListLoaderAsync } from \"@/components/List/setupComponents/ListLoaderAsync\";\nimport { ListFilter } from \"@/components/List/setupComponents/ListFilter\";\nimport { ListSorting } from \"@/components/List/setupComponents/ListSorting\";\nimport { ListItem } from \"@/components/List/setupComponents/ListItem\";\nimport { ListStaticData } from \"@/components/List/setupComponents/ListStaticData\";\nimport { ListLoaderAsyncResource } from \"@/components/List/setupComponents/ListLoaderAsyncResource\";\nimport type { IncrementalLoaderShape } from \"@/components/List/model/loading/types\";\nimport Footer from \"./components/Footer\";\nimport { ListSearch } from \"@/components/List/setupComponents/ListSearch\";\nimport type { ListShape } from \"@/components/List/model/types\";\nimport { TableColumn } from \"@/components/List/setupComponents/TableColumn\";\nimport { TableRow } from \"@/components/List/setupComponents/TableRow\";\nimport { TableCell } from \"@/components/List/setupComponents/TableCell\";\nimport { Table } from \"@/components/List/components/Table\";\nimport { Table as TableSetupComponent } from \"@/components/List/setupComponents/Table\";\nimport { TableHeader } from \"@/components/List/setupComponents/TableHeader\";\nimport { TableBody } from \"@/components/List/setupComponents/TableBody\";\nimport { TunnelExit, TunnelProvider } from \"@mittwald/react-tunnel\";\nimport { type PropsContext, PropsContextProvider } from \"@/lib/propsContext\";\nimport headerStyles from \"./components/Header/Header.module.css\";\nimport { ActionGroup } from \"@/components/ActionGroup\";\nimport { deepHas } from \"@/lib/react/deepHas\";\nimport DivView from \"@/views/DivView\";\n\nexport interface ListProps<T>\n extends PropsWithChildren,\n Omit<\n ListShape<T>,\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}\n\nexport const List = flowComponent(\"List\", (props) => {\n const { children, batchSize, onChange, ref, ...restProps } = props;\n\n const listLoaderAsync = deepFindOfType(\n children,\n ListLoaderAsync<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 : 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 ...restProps,\n });\n\n const propsContext: PropsContext = {\n ActionGroup: {\n className: headerStyles.actions,\n tunnelId: \"actions\",\n ignoreBreakpoint: true,\n },\n ListSummary: {\n tunnelId: \"listSummary\",\n },\n };\n\n const hasActionGroup = deepHas(children, ActionGroup);\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 hasActionGroup={hasActionGroup} />\n\n <DivView>\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 <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 type { PropsWithChildren } from \"react\";\nimport React from \"react\";\nimport { flowComponent } from \"@/lib/componentFactory/flowComponent\";\nimport { listContext } from \"./listContext\";\nimport { DataLoader } from \"@/components/List/components/DataLoader\";\nimport { Header } from \"@/components/List/components/Header\";\nimport styles from \"./List.module.css\";\nimport ListModel from \"@/components/List/model/List\";\nimport { Items } from \"@/components/List/components/Items\";\nimport { deepFilterByType, deepFindOfType } from \"@/lib/react/deepFindOfType\";\nimport { ListLoaderAsync } from \"@/components/List/setupComponents/ListLoaderAsync\";\nimport { ListFilter } from \"@/components/List/setupComponents/ListFilter\";\nimport { ListSorting } from \"@/components/List/setupComponents/ListSorting\";\nimport { ListItem } from \"@/components/List/setupComponents/ListItem\";\nimport { ListStaticData } from \"@/components/List/setupComponents/ListStaticData\";\nimport { ListLoaderAsyncResource } from \"@/components/List/setupComponents/ListLoaderAsyncResource\";\nimport type { IncrementalLoaderShape } from \"@/components/List/model/loading/types\";\nimport Footer from \"./components/Footer\";\nimport { ListSearch } from \"@/components/List/setupComponents/ListSearch\";\nimport type { ListShape } from \"@/components/List/model/types\";\nimport { TableColumn } from \"@/components/List/setupComponents/TableColumn\";\nimport { TableRow } from \"@/components/List/setupComponents/TableRow\";\nimport { TableCell } from \"@/components/List/setupComponents/TableCell\";\nimport { Table } from \"@/components/List/components/Table\";\nimport { Table as TableSetupComponent } from \"@/components/List/setupComponents/Table\";\nimport { TableHeader } from \"@/components/List/setupComponents/TableHeader\";\nimport { TableBody } from \"@/components/List/setupComponents/TableBody\";\nimport { TunnelExit, TunnelProvider } from \"@mittwald/react-tunnel\";\nimport { type PropsContext, PropsContextProvider } from \"@/lib/propsContext\";\nimport headerStyles from \"./components/Header/Header.module.css\";\nimport { ActionGroup } from \"@/components/ActionGroup\";\nimport { deepHas } from \"@/lib/react/deepHas\";\nimport DivView from \"@/views/DivView\";\n\nexport interface ListProps<T>\n extends PropsWithChildren,\n Omit<\n ListShape<T>,\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}\n\nexport const List = flowComponent(\"List\", (props) => {\n const { children, batchSize, onChange, ref, ...restProps } = props;\n\n const listLoaderAsync = deepFindOfType(\n children,\n ListLoaderAsync<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 : 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 ...restProps,\n });\n\n const propsContext: PropsContext = {\n ActionGroup: {\n className: headerStyles.actions,\n tunnelId: \"actions\",\n ignoreBreakpoint: true,\n },\n ListSummary: {\n tunnelId: \"listSummary\",\n },\n };\n\n const hasActionGroup = deepHas(children, ActionGroup);\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 hasActionGroup={hasActionGroup} />\n\n <DivView>\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 <Footer />\n </DivView>\n </listContext.Provider>\n </TunnelProvider>\n </PropsContextProvider>\n );\n});\n\nexport default List;\n"],"names":["TableSetupComponent","ListModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDO,MAAM,IAAO,GAAA,aAAA,CAAc,MAAQ,EAAA,CAAC,KAAU,KAAA;AACnD,EAAA,MAAM,EAAE,QAAU,EAAA,SAAA,EAAW,UAAU,GAAK,EAAA,GAAG,WAAc,GAAA,KAAA;AAE7D,EAAA,MAAM,eAAkB,GAAA,cAAA;AAAA,IACtB,QAAA;AAAA,IACA;AAAA,GACC,EAAA,KAAA;AACH,EAAA,MAAM,uBAA0B,GAAA,cAAA;AAAA,IAC9B,QAAA;AAAA,IACA;AAAA,GACC,EAAA,KAAA;AACH,EAAA,MAAM,cAAiB,GAAA,cAAA,CAAe,QAAU,EAAA,cAAqB,CAAG,EAAA,KAAA;AAExE,EAAA,MAAM,WAA6C,GAAA;AAAA,IACjD,QAAQ,eACJ,GAAA;AAAA,MACE,GAAG,eAAA;AAAA,MACH,aAAa,eAAgB,CAAA;AAAA,QAE/B,uBACE,GAAA;AAAA,MACE,GAAG,uBAAA;AAAA,MACH,sBAAsB,uBAAwB,CAAA;AAAA,QAEhD,cACE,GAAA;AAAA,MACE,YAAY,cAAe,CAAA;AAAA,KAE7B,GAAA;AAAA,GACV;AAEA,EAAA,MAAM,WAAc,GAAA,cAAA,CAAe,QAAU,EAAA,UAAU,CAAG,EAAA,KAAA;AAC1D,EAAA,MAAM,aAAgB,GAAA,cAAA,CAAe,QAAU,EAAA,QAAe,CAAG,EAAA,KAAA;AAEjE,EAAA,MAAM,UAAa,GAAA,cAAA,CAAe,QAAU,EAAAA,OAAmB,CAAG,EAAA,KAAA;AAClE,EAAA,MAAM,gBAAmB,GAAA,gBAAA,CAAiB,QAAU,EAAA,WAAkB,CAAE,CAAA,GAAA;AAAA,IACtE,CAAC,CAAO,MAAA;AAAA,MACN,GAAG,CAAE,CAAA,KAAA;AAAA,MACL,IAAA,EAAM,EAAE,KAAM,CAAA;AAAA,KAChB;AAAA,GACF;AACA,EAAA,MAAM,cAAiB,GAAA,gBAAA,CAAiB,QAAU,EAAA,SAAgB,CAAE,CAAA,GAAA;AAAA,IAClE,CAAC,CAAO,MAAA;AAAA,MACN,GAAG,CAAE,CAAA,KAAA;AAAA,MACL,QAAA,EAAU,EAAE,KAAM,CAAA;AAAA,KACpB;AAAA,GACF;AAEA,EAAA,MAAM,aAAgB,GAAA,cAAA,CAAe,QAAU,EAAA,QAAQ,CAAG,EAAA,KAAA;AAC1D,EAAA,MAAM,gBAAmB,GAAA,cAAA,CAAe,QAAU,EAAA,WAAW,CAAG,EAAA,KAAA;AAChE,EAAA,MAAM,cAAiB,GAAA,cAAA,CAAe,QAAU,EAAA,SAAS,CAAG,EAAA,KAAA;AAE5D,EAAM,MAAA,SAAA,GAAYC,OAAU,MAAc,CAAA;AAAA,IACxC,QAAA;AAAA,IACA,MAAQ,EAAA,WAAA;AAAA,IACR,OAAS,EAAA,gBAAA,CAAiB,QAAU,EAAA,UAA+B,CAAE,CAAA,GAAA;AAAA,MACnE,CAAC,CAAO,MAAA;AAAA,QACN,GAAG,CAAE,CAAA,KAAA;AAAA,QACL,UAAA,EAAY,EAAE,KAAM,CAAA;AAAA,OACtB;AAAA,KACF;AAAA,IACA,QAAQ,WACJ,GAAA;AAAA,MACE,QAAQ,WAAY,CAAA,QAAA;AAAA,MACpB,cAAgB,EAAA,WAAA;AAAA,MAChB,cAAc,WAAY,CAAA;AAAA,KAE5B,GAAA,MAAA;AAAA,IACJ,OAAA,EAAS,iBAAiB,QAAU,EAAA,WAAkB,EAAE,GAAI,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,KAAK,CAAA;AAAA,IAE1E,UAAU,aACN,GAAA;AAAA,MACE,GAAG,aAAA;AAAA,MACH,UAAU,aAAc,CAAA;AAAA,KAE1B,GAAA,MAAA;AAAA,IAEJ,KAAA,EACE,gBAAiB,CAAA,MAAA,GAAS,CACtB,GAAA;AAAA,MACE,MAAQ,EAAA;AAAA,QACN,GAAG,gBAAA;AAAA,QACH,OAAS,EAAA;AAAA,OACX;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,GAAG,cAAA;AAAA,QACH,GAAK,EAAA;AAAA,UACH,GAAG,aAAA;AAAA,UACH,KAAO,EAAA;AAAA;AACT,OACF;AAAA,MACA,GAAG;AAAA,KAEL,GAAA,MAAA;AAAA,IAEN,iBAAmB,EAAA;AAAA,MACjB;AAAA,KACF;AAAA,IACA,GAAG;AAAA,GACJ,CAAA;AAED,EAAA,MAAM,YAA6B,GAAA;AAAA,IACjC,WAAa,EAAA;AAAA,MACX,WAAW,YAAa,CAAA,OAAA;AAAA,MACxB,QAAU,EAAA,SAAA;AAAA,MACV,gBAAkB,EAAA;AAAA,KACpB;AAAA,IACA,WAAa,EAAA;AAAA,MACX,QAAU,EAAA;AAAA;AACZ,GACF;AAEA,EAAM,MAAA,cAAA,GAAiB,OAAQ,CAAA,QAAA,EAAU,WAAW,CAAA;AAEpD,EAAA,uBACG,GAAA,CAAA,oBAAA,EAAA,EAAqB,KAAO,EAAA,YAAA,EAC3B,8BAAC,cACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,WAAY,CAAA,QAAA;AAAA,IAAZ;AAAA,MACC,KAAO,EAAA;AAAA,QACL,IAAM,EAAA;AAAA,OACR;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,CAAA;AAAA,wBACX,IAAA,CAAA,OAAA,EAAA,EAAQ,SAAW,EAAA,MAAA,CAAO,MAAM,GAC9B,EAAA,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,0BACD,GAAA,CAAC,UAAO,cAAgC,EAAA,CAAA;AAAA,+BAEvC,OACE,EAAA,EAAA,QAAA,EAAA;AAAA,YAAA,SAAA,CAAU,MAAM,OAAQ,CAAA,MAAA,GAAS,qBAC/B,GAAA,CAAA,UAAA,EAAA,EAAW,IAAG,aAAc,EAAA,CAAA;AAAA,YAAA,CAE7B,UAAU,QAAa,KAAA,MAAA,IACvB,UAAU,QAAa,KAAA,OAAA,yBAAa,KAAM,EAAA,EAAA,CAAA;AAAA,YAC3C,SAAU,CAAA,QAAA,KAAa,OAAW,oBAAA,GAAA,CAAC,KAAM,EAAA,EAAA;AAAA,WAC5C,EAAA,CAAA;AAAA,8BACC,MAAO,EAAA,EAAA;AAAA,SACV,EAAA;AAAA;AAAA;AAAA,KAEJ,CACF,EAAA,CAAA;AAEJ,CAAC;;;;"}
|
package/dist/js/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs
CHANGED
|
@@ -62,7 +62,7 @@ const ActiveFilters = observer(() => {
|
|
|
62
62
|
children: /* @__PURE__ */ jsx(IconUndo, {})
|
|
63
63
|
}
|
|
64
64
|
)
|
|
65
|
-
] }) :
|
|
65
|
+
] }) : void 0;
|
|
66
66
|
const removeAllFiltersButton = activeFilters.length > 0 ? /* @__PURE__ */ jsxs(TooltipTrigger, { children: [
|
|
67
67
|
/* @__PURE__ */ jsx(TooltipView, { children: /* @__PURE__ */ jsx(Translate, { locales, children: "list.filters.clear" }) }),
|
|
68
68
|
/* @__PURE__ */ jsx(
|
|
@@ -75,7 +75,7 @@ const ActiveFilters = observer(() => {
|
|
|
75
75
|
children: /* @__PURE__ */ jsx(IconClose, {})
|
|
76
76
|
}
|
|
77
77
|
)
|
|
78
|
-
] }) :
|
|
78
|
+
] }) : void 0;
|
|
79
79
|
if (activeFilters.length === 0 && !storeFiltersButton && !resetFiltersButton) {
|
|
80
80
|
return null;
|
|
81
81
|
}
|
package/dist/js/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs.map
CHANGED
|
@@ -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 React 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\";\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 someFiltersChanged =\n list.filters.filter((f) => f.hasChanged()).length > 0;\n\n const storeFiltersButton = list.supportsSettingsStorage &&\n someFiltersChanged && (\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={() => list.storeFilterDefaultSettings()}\n aria-label={formatter.format(\"list.filters.store\")}\n >\n <IconSave />\n </ButtonView>\n </TooltipTriggerView>\n );\n\n const resetFiltersButton = someFiltersChanged ? (\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 > 0 ? (\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBa,MAAA,aAAA,GAAoB,SAAS,MAAM;AAC9C,EAAA,MAAM,OAAO,OAAQ,EAAA;AACrB,EAAM,MAAA,SAAA,GAAY,4BAA4B,OAAO,CAAA;AAErD,EAAA,MAAM,kBAAqB,GAAA,IAAA,CAAK,OAC7B,CAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAE,CAAA,MAAM,CACvB,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA;AAE3B,EAAM,MAAA,aAAA,GAAgB,mBAAmB,GAAI,CAAA,CAAC,sBAC3C,GAAA,CAAA,SAAA,EAAA,EAAqB,SAAS,MAAM,CAAA,CAAE,YACrC,EAAA,QAAA,kBAAA,GAAA,CAAC,YAAU,QAAE,EAAA,CAAA,CAAA,MAAA,IAAS,CADR,EAAA,EAAA,CAAA,CAAE,EAElB,CACD,CAAA;AAED,EAAM,MAAA,kBAAA,GACJ,IAAK,CAAA,OAAA,CAAQ,MAAO,CAAA,CAAC,MAAM,CAAE,CAAA,UAAA,EAAY,CAAA,CAAE,MAAS,GAAA,CAAA;AAEtD,EAAA,MAAM,kBAAqB,GAAA,IAAA,CAAK,uBAC9B,IAAA,kBAAA,yBACG,kBACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WACC,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,SAAU,EAAA,EAAA,OAAA,EAAkB,gCAAkB,CACjD,EAAA,CAAA;AAAA,oBACA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,IAAK,EAAA,GAAA;AAAA,QACL,OAAQ,EAAA,OAAA;AAAA,QACR,KAAM,EAAA,WAAA;AAAA,QACN,OAAA,EAAS,MAAM,IAAA,CAAK,0BAA2B,EAAA;AAAA,QAC/C,YAAA,EAAY,SAAU,CAAA,MAAA,CAAO,oBAAoB,CAAA;AAAA,QAEjD,8BAAC,QAAS,EAAA,EAAA;AAAA;AAAA;AACZ,GACF,EAAA,CAAA;AAGJ,EAAM,MAAA,kBAAA,GAAqB,kBACzB,mBAAA,IAAA,CAAC,cACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WACC,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,SAAU,EAAA,EAAA,OAAA,EAAkB,gCAAkB,CACjD,EAAA,CAAA;AAAA,oBACA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,IAAK,EAAA,GAAA;AAAA,QACL,OAAQ,EAAA,OAAA;AAAA,QACR,KAAM,EAAA,WAAA;AAAA,QACN,OAAA,EAAS,MAAM,IAAA,CAAK,YAAa,EAAA;AAAA,QACjC,YAAA,EAAY,SAAU,CAAA,MAAA,CAAO,oBAAoB,CAAA;AAAA,QAEjD,8BAAC,QAAS,EAAA,EAAA;AAAA;AAAA;AACZ,GAAA,EACF,CACE,GAAA,
|
|
1
|
+
{"version":3,"file":"ActiveFilters.mjs","sources":["../../../../../../../../src/components/List/components/Header/components/ActiveFilters/ActiveFilters.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React 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\";\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 someFiltersChanged =\n list.filters.filter((f) => f.hasChanged()).length > 0;\n\n const storeFiltersButton = list.supportsSettingsStorage &&\n someFiltersChanged && (\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={() => list.storeFilterDefaultSettings()}\n aria-label={formatter.format(\"list.filters.store\")}\n >\n <IconSave />\n </ButtonView>\n </TooltipTriggerView>\n );\n\n const resetFiltersButton = someFiltersChanged ? (\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 > 0 ? (\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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"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
/* */
|
|
3
3
|
const activeFilters = "flow--list--header--active-filters";
|
|
4
|
-
const clearButton = "flow--list--header--active-filters--clear-button";
|
|
5
4
|
const styles = {
|
|
6
|
-
activeFilters: activeFilters
|
|
7
|
-
clearButton: clearButton
|
|
8
|
-
};
|
|
5
|
+
activeFilters: activeFilters};
|
|
9
6
|
|
|
10
|
-
export { activeFilters,
|
|
7
|
+
export { activeFilters, styles as default };
|
|
11
8
|
//# sourceMappingURL=ActiveFilters.module.scss.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActiveFilters.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ActiveFilters.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -17,7 +17,7 @@ const DefaultSearchFieldRender = (props) => {
|
|
|
17
17
|
const [searchString, setSearchString] = useState(value ?? "");
|
|
18
18
|
const submitSearch = () => {
|
|
19
19
|
if (searchString.trim() === "") {
|
|
20
|
-
onChange(
|
|
20
|
+
onChange(void 0);
|
|
21
21
|
} else {
|
|
22
22
|
onChange(searchString);
|
|
23
23
|
}
|
|
@@ -32,7 +32,7 @@ const DefaultSearchFieldRender = (props) => {
|
|
|
32
32
|
setSearchString(value ?? "");
|
|
33
33
|
}, [searchString]);
|
|
34
34
|
const clearSearch = () => {
|
|
35
|
-
onChange(
|
|
35
|
+
onChange(void 0);
|
|
36
36
|
setSearchString("");
|
|
37
37
|
};
|
|
38
38
|
const handleKeyPress = (e) => {
|
package/dist/js/components/List/components/Header/components/SearchField/SearchField.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchField.mjs","sources":["../../../../../../../../src/components/List/components/Header/components/SearchField/SearchField.tsx"],"sourcesContent":["import type { FC, KeyboardEvent } from \"react\";\nimport React, { createElement, useEffect, useState } from \"react\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\nimport type { Search } from \"@/components/List/model/search/Search\";\nimport type { SearchFieldRenderComponent } from \"@/components/List/model/search/types\";\nimport { useOnChange } from \"@/lib/hooks\";\nimport SearchFieldView from \"@/views/SearchFieldView\";\n\ninterface Props extends PropsWithClassName {\n search: Search<never>;\n}\n\nconst autoSubmitTimeout = 800;\n\nconst DefaultSearchFieldRender: SearchFieldRenderComponent = (props) => {\n const { className, onChange, value, autoSubmit, ...searchFieldProps } = props;\n\n const [searchString, setSearchString] = useState(value ?? \"\");\n\n const submitSearch = () => {\n if (searchString.trim() === \"\") {\n onChange(undefined);\n } else {\n onChange(searchString);\n }\n };\n\n useEffect(() => {\n if (autoSubmit) {\n const timeout = setTimeout(() => submitSearch(), autoSubmitTimeout);\n return () => clearTimeout(timeout);\n }\n }, [searchString, autoSubmit]);\n\n useOnChange(value, () => {\n setSearchString(value ?? \"\");\n }, [searchString]);\n\n const clearSearch = () => {\n onChange(undefined);\n setSearchString(\"\");\n };\n\n const handleKeyPress = (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n submitSearch();\n } else if (e.key === \"Escape\") {\n clearSearch();\n }\n };\n\n return (\n <SearchFieldView\n className={className}\n value={searchString}\n onKeyUp={handleKeyPress}\n onChange={(value) => setSearchString(value)}\n onClear={clearSearch}\n {...searchFieldProps}\n />\n );\n};\n\nexport const SearchField: FC<Props> = (props) => {\n const { className, search } = props;\n const render = search.render ?? DefaultSearchFieldRender;\n\n return createElement(render, {\n className,\n value: search.value,\n onChange: search.setValue.bind(search),\n ...search.textFieldProps,\n });\n};\n"],"names":["value"],"mappings":";;;;;;;;;;;AAYA,MAAM,iBAAoB,GAAA,GAAA;AAE1B,MAAM,wBAAA,GAAuD,CAAC,KAAU,KAAA;AACtE,EAAA,MAAM,EAAE,SAAW,EAAA,QAAA,EAAU,OAAO,UAAY,EAAA,GAAG,kBAAqB,GAAA,KAAA;AAExE,EAAA,MAAM,CAAC,YAAc,EAAA,eAAe,CAAI,GAAA,QAAA,CAAS,SAAS,EAAE,CAAA;AAE5D,EAAA,MAAM,eAAe,MAAM;AACzB,IAAI,IAAA,YAAA,CAAa,IAAK,EAAA,KAAM,EAAI,EAAA;AAC9B,MAAA,QAAA,CAAS,
|
|
1
|
+
{"version":3,"file":"SearchField.mjs","sources":["../../../../../../../../src/components/List/components/Header/components/SearchField/SearchField.tsx"],"sourcesContent":["import type { FC, KeyboardEvent } from \"react\";\nimport React, { createElement, useEffect, useState } from \"react\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\nimport type { Search } from \"@/components/List/model/search/Search\";\nimport type { SearchFieldRenderComponent } from \"@/components/List/model/search/types\";\nimport { useOnChange } from \"@/lib/hooks\";\nimport SearchFieldView from \"@/views/SearchFieldView\";\n\ninterface Props extends PropsWithClassName {\n search: Search<never>;\n}\n\nconst autoSubmitTimeout = 800;\n\nconst DefaultSearchFieldRender: SearchFieldRenderComponent = (props) => {\n const { className, onChange, value, autoSubmit, ...searchFieldProps } = props;\n\n const [searchString, setSearchString] = useState(value ?? \"\");\n\n const submitSearch = () => {\n if (searchString.trim() === \"\") {\n onChange(undefined);\n } else {\n onChange(searchString);\n }\n };\n\n useEffect(() => {\n if (autoSubmit) {\n const timeout = setTimeout(() => submitSearch(), autoSubmitTimeout);\n return () => clearTimeout(timeout);\n }\n }, [searchString, autoSubmit]);\n\n useOnChange(value, () => {\n setSearchString(value ?? \"\");\n }, [searchString]);\n\n const clearSearch = () => {\n onChange(undefined);\n setSearchString(\"\");\n };\n\n const handleKeyPress = (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n submitSearch();\n } else if (e.key === \"Escape\") {\n clearSearch();\n }\n };\n\n return (\n <SearchFieldView\n className={className}\n value={searchString}\n onKeyUp={handleKeyPress}\n onChange={(value) => setSearchString(value)}\n onClear={clearSearch}\n {...searchFieldProps}\n />\n );\n};\n\nexport const SearchField: FC<Props> = (props) => {\n const { className, search } = props;\n const render = search.render ?? DefaultSearchFieldRender;\n\n return createElement(render, {\n className,\n value: search.value,\n onChange: search.setValue.bind(search),\n ...search.textFieldProps,\n });\n};\n"],"names":["value"],"mappings":";;;;;;;;;;;AAYA,MAAM,iBAAoB,GAAA,GAAA;AAE1B,MAAM,wBAAA,GAAuD,CAAC,KAAU,KAAA;AACtE,EAAA,MAAM,EAAE,SAAW,EAAA,QAAA,EAAU,OAAO,UAAY,EAAA,GAAG,kBAAqB,GAAA,KAAA;AAExE,EAAA,MAAM,CAAC,YAAc,EAAA,eAAe,CAAI,GAAA,QAAA,CAAS,SAAS,EAAE,CAAA;AAE5D,EAAA,MAAM,eAAe,MAAM;AACzB,IAAI,IAAA,YAAA,CAAa,IAAK,EAAA,KAAM,EAAI,EAAA;AAC9B,MAAA,QAAA,CAAS,MAAS,CAAA;AAAA,KACb,MAAA;AACL,MAAA,QAAA,CAAS,YAAY,CAAA;AAAA;AACvB,GACF;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,MAAM,OAAU,GAAA,UAAA,CAAW,MAAM,YAAA,IAAgB,iBAAiB,CAAA;AAClE,MAAO,OAAA,MAAM,aAAa,OAAO,CAAA;AAAA;AACnC,GACC,EAAA,CAAC,YAAc,EAAA,UAAU,CAAC,CAAA;AAE7B,EAAA,WAAA,CAAY,OAAO,MAAM;AACvB,IAAA,eAAA,CAAgB,SAAS,EAAE,CAAA;AAAA,GAC7B,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,QAAA,CAAS,MAAS,CAAA;AAClB,IAAA,eAAA,CAAgB,EAAE,CAAA;AAAA,GACpB;AAEA,EAAM,MAAA,cAAA,GAAiB,CAAC,CAAqB,KAAA;AAC3C,IAAI,IAAA,CAAA,CAAE,QAAQ,OAAS,EAAA;AACrB,MAAa,YAAA,EAAA;AAAA,KACf,MAAA,IAAW,CAAE,CAAA,GAAA,KAAQ,QAAU,EAAA;AAC7B,MAAY,WAAA,EAAA;AAAA;AACd,GACF;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,KAAO,EAAA,YAAA;AAAA,MACP,OAAS,EAAA,cAAA;AAAA,MACT,QAAU,EAAA,CAACA,MAAU,KAAA,eAAA,CAAgBA,MAAK,CAAA;AAAA,MAC1C,OAAS,EAAA,WAAA;AAAA,MACR,GAAG;AAAA;AAAA,GACN;AAEJ,CAAA;AAEa,MAAA,WAAA,GAAyB,CAAC,KAAU,KAAA;AAC/C,EAAM,MAAA,EAAE,SAAW,EAAA,MAAA,EAAW,GAAA,KAAA;AAC9B,EAAM,MAAA,MAAA,GAAS,OAAO,MAAU,IAAA,wBAAA;AAEhC,EAAA,OAAO,cAAc,MAAQ,EAAA;AAAA,IAC3B,SAAA;AAAA,IACA,OAAO,MAAO,CAAA,KAAA;AAAA,IACd,QAAU,EAAA,MAAA,CAAO,QAAS,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA,IACrC,GAAG,MAAO,CAAA;AAAA,GACX,CAAA;AACH;;;;"}
|
|
@@ -16,8 +16,8 @@ const Item = (props) => {
|
|
|
16
16
|
if (!itemView) {
|
|
17
17
|
return null;
|
|
18
18
|
}
|
|
19
|
-
const textValue = itemView.textValue ? itemView.textValue(data) :
|
|
20
|
-
const href = itemView.href ? itemView.href(data) :
|
|
19
|
+
const textValue = itemView.textValue ? itemView.textValue(data) : void 0;
|
|
20
|
+
const href = itemView.href ? itemView.href(data) : void 0;
|
|
21
21
|
const hasAction = !!gridItemProps.onAction || !!href;
|
|
22
22
|
return /* @__PURE__ */ jsx(
|
|
23
23
|
ItemsGridListItemView,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Item.mjs","sources":["../../../../../../../../src/components/List/components/Items/components/Item/Item.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport React, { Suspense } from \"react\";\nimport styles from \"./Item.module.scss\";\nimport type { Key } from \"react-aria-components\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport { SkeletonView } from \"@/components/List/components/Items/components/Item/components/SkeletonView/SkeletonView\";\nimport { useGridItemProps } from \"@/components/List/components/Items/components/Item/hooks/useGridItemProps\";\nimport ItemsGridListItemView from \"@/views/ItemsGridListItemView\";\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 hasAction={hasAction}\n isTile={list.viewMode === \"tiles\"}\n {...gridItemProps}\n >\n <Suspense fallback={<SkeletonView />}>{children}</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 === \"tiles\"}\n >\n {props.children}\n </ItemsGridListItemView>\n );\n};\n\nexport default Item;\n"],"names":[],"mappings":";;;;;;;;AAca,MAAA,IAAA,GAAO,CAAC,KAAiB,KAAA;AACpC,EAAM,MAAA,EAAE,EAAI,EAAA,IAAA,EAAS,GAAA,KAAA;AACrB,EAAA,MAAM,OAAO,OAAQ,EAAA;AAErB,EAAA,MAAM,WAAW,IAAK,CAAA,QAAA;AAEtB,EAAA,MAAM,EAAE,aAAA,EAAe,QAAS,EAAA,GAAI,iBAAiB,KAAK,CAAA;AAE1D,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,MAAM,YAAY,QAAS,CAAA,SAAA,GAAY,QAAS,CAAA,SAAA,CAAU,IAAI,CAAI,GAAA,
|
|
1
|
+
{"version":3,"file":"Item.mjs","sources":["../../../../../../../../src/components/List/components/Items/components/Item/Item.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport React, { Suspense } from \"react\";\nimport styles from \"./Item.module.scss\";\nimport type { Key } from \"react-aria-components\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport { SkeletonView } from \"@/components/List/components/Items/components/Item/components/SkeletonView/SkeletonView\";\nimport { useGridItemProps } from \"@/components/List/components/Items/components/Item/hooks/useGridItemProps\";\nimport ItemsGridListItemView from \"@/views/ItemsGridListItemView\";\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 hasAction={hasAction}\n isTile={list.viewMode === \"tiles\"}\n {...gridItemProps}\n >\n <Suspense fallback={<SkeletonView />}>{children}</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 === \"tiles\"}\n >\n {props.children}\n </ItemsGridListItemView>\n );\n};\n\nexport default Item;\n"],"names":[],"mappings":";;;;;;;;AAca,MAAA,IAAA,GAAO,CAAC,KAAiB,KAAA;AACpC,EAAM,MAAA,EAAE,EAAI,EAAA,IAAA,EAAS,GAAA,KAAA;AACrB,EAAA,MAAM,OAAO,OAAQ,EAAA;AAErB,EAAA,MAAM,WAAW,IAAK,CAAA,QAAA;AAEtB,EAAA,MAAM,EAAE,aAAA,EAAe,QAAS,EAAA,GAAI,iBAAiB,KAAK,CAAA;AAE1D,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,MAAM,YAAY,QAAS,CAAA,SAAA,GAAY,QAAS,CAAA,SAAA,CAAU,IAAI,CAAI,GAAA,MAAA;AAClE,EAAA,MAAM,OAAO,QAAS,CAAA,IAAA,GAAO,QAAS,CAAA,IAAA,CAAK,IAAI,CAAI,GAAA,MAAA;AACnD,EAAA,MAAM,YAAY,CAAC,CAAC,aAAc,CAAA,QAAA,IAAY,CAAC,CAAC,IAAA;AAEhD,EACE,uBAAA,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA,EAAQ,KAAK,QAAa,KAAA,OAAA;AAAA,MACzB,GAAG,aAAA;AAAA,MAEJ,8BAAC,QAAS,EAAA,EAAA,QAAA,kBAAW,GAAA,CAAA,YAAA,EAAA,EAAa,GAAK,QAAS,EAAA;AAAA;AAAA,GAClD;AAEJ;AAEa,MAAA,aAAA,GAA2B,CAAC,KAAU,KAAA;AACjD,EAAA,MAAM,OAAO,OAAQ,EAAA;AACrB,EACE,uBAAA,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,SAAU,EAAA,GAAA;AAAA,MACV,WAAW,MAAO,CAAA,IAAA;AAAA,MAClB,MAAA,EAAQ,KAAK,QAAa,KAAA,OAAA;AAAA,MAEzB,QAAM,EAAA,KAAA,CAAA;AAAA;AAAA,GACT;AAEJ;;;;"}
|
|
@@ -51,7 +51,7 @@ const useGridItemProps = (props) => {
|
|
|
51
51
|
gridItemProps: {
|
|
52
52
|
onAction: onAction ? () => {
|
|
53
53
|
onAction?.(data);
|
|
54
|
-
} :
|
|
54
|
+
} : void 0
|
|
55
55
|
},
|
|
56
56
|
children
|
|
57
57
|
};
|
|
@@ -62,7 +62,7 @@ const useGridItemProps = (props) => {
|
|
|
62
62
|
};
|
|
63
63
|
const propsContext = {
|
|
64
64
|
Content: {
|
|
65
|
-
id: dynamic((p) => p.slot === "bottom" ? contentElementId :
|
|
65
|
+
id: dynamic((p) => p.slot === "bottom" ? contentElementId : void 0),
|
|
66
66
|
wrapWith: dynamic(
|
|
67
67
|
(p) => p.slot === "bottom" ? /* @__PURE__ */ jsx(
|
|
68
68
|
AccordionButton,
|
|
@@ -71,7 +71,7 @@ const useGridItemProps = (props) => {
|
|
|
71
71
|
toggle: toggleAccordion,
|
|
72
72
|
isExpanded
|
|
73
73
|
}
|
|
74
|
-
) :
|
|
74
|
+
) : void 0
|
|
75
75
|
)
|
|
76
76
|
}
|
|
77
77
|
};
|
package/dist/js/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGridItemProps.mjs","sources":["../../../../../../../../../src/components/List/components/Items/components/Item/hooks/useGridItemProps.tsx"],"sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport React, { useEffect, useId, useRef, useState } from \"react\";\nimport { useList } from \"@/components/List\";\nimport type { PropsContext } from \"@/lib/propsContext\";\nimport { dynamic, PropsContextProvider } from \"@/lib/propsContext\";\nimport { AccordionButton } from \"@/components/List/components/Items/components/Item/components/AccordionButton\";\n\ninterface P extends PropsWithChildren {\n data: never;\n}\n\nexport const useGridItemProps = (props: P) => {\n const { data, children: childrenFromProps } = props;\n const list = useList();\n const itemView = list.itemView;\n const onAction = list.onAction;\n\n const [isExpanded, setIsExpanded] = useState(\n itemView?.defaultExpanded?.(data) ?? false,\n );\n const contentElementId = useId();\n const itemRef = useRef<HTMLDivElement>(null);\n\n const accordion = list.accordion;\n const children = childrenFromProps ?? itemView?.render(data);\n\n useEffect(() => {\n if (accordion) {\n itemRef.current?.setAttribute(\"aria-expanded\", String(isExpanded));\n itemRef.current?.setAttribute(\"aria-controls\", contentElementId);\n }\n }, [isExpanded, contentElementId, itemRef.current, accordion]);\n\n if (!accordion) {\n return {\n gridItemProps: {\n onAction: onAction\n ? () => {\n onAction?.(data);\n }\n : undefined,\n },\n children,\n };\n }\n\n const toggleAccordion = () => {\n setIsExpanded((current) => !current);\n onAction?.(data);\n };\n\n const propsContext: PropsContext = {\n Content: {\n id: dynamic((p) => (p.slot === \"bottom\" ? contentElementId : undefined)),\n wrapWith: dynamic((p) =>\n p.slot === \"bottom\" ? (\n <AccordionButton\n contentElementId={contentElementId}\n toggle={toggleAccordion}\n isExpanded={isExpanded}\n />\n ) : undefined,\n ),\n },\n };\n\n return {\n gridItemProps: {\n ref: itemRef,\n onAction: toggleAccordion,\n },\n children: (\n <PropsContextProvider\n props={propsContext}\n dependencies={[contentElementId, isExpanded]}\n >\n {children}\n </PropsContextProvider>\n ),\n };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWa,MAAA,gBAAA,GAAmB,CAAC,KAAa,KAAA;AAC5C,EAAA,MAAM,EAAE,IAAA,EAAM,QAAU,EAAA,iBAAA,EAAsB,GAAA,KAAA;AAC9C,EAAA,MAAM,OAAO,OAAQ,EAAA;AACrB,EAAA,MAAM,WAAW,IAAK,CAAA,QAAA;AACtB,EAAA,MAAM,WAAW,IAAK,CAAA,QAAA;AAEtB,EAAM,MAAA,CAAC,UAAY,EAAA,aAAa,CAAI,GAAA,QAAA;AAAA,IAClC,QAAA,EAAU,eAAkB,GAAA,IAAI,CAAK,IAAA;AAAA,GACvC;AACA,EAAA,MAAM,mBAAmB,KAAM,EAAA;AAC/B,EAAM,MAAA,OAAA,GAAU,OAAuB,IAAI,CAAA;AAE3C,EAAA,MAAM,YAAY,IAAK,CAAA,SAAA;AACvB,EAAA,MAAM,QAAW,GAAA,iBAAA,IAAqB,QAAU,EAAA,MAAA,CAAO,IAAI,CAAA;AAE3D,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAW,EAAA;AACb,MAAA,OAAA,CAAQ,OAAS,EAAA,YAAA,CAAa,eAAiB,EAAA,MAAA,CAAO,UAAU,CAAC,CAAA;AACjE,MAAQ,OAAA,CAAA,OAAA,EAAS,YAAa,CAAA,eAAA,EAAiB,gBAAgB,CAAA;AAAA;AACjE,KACC,CAAC,UAAA,EAAY,kBAAkB,OAAQ,CAAA,OAAA,EAAS,SAAS,CAAC,CAAA;AAE7D,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAO,OAAA;AAAA,MACL,aAAe,EAAA;AAAA,QACb,QAAA,EAAU,WACN,MAAM;AACJ,UAAA,QAAA,GAAW,IAAI,CAAA;AAAA,SAEjB,GAAA;AAAA,OACN;AAAA,MACA;AAAA,KACF;AAAA;AAGF,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAc,aAAA,CAAA,CAAC,OAAY,KAAA,CAAC,OAAO,CAAA;AACnC,IAAA,QAAA,GAAW,IAAI,CAAA;AAAA,GACjB;AAEA,EAAA,MAAM,YAA6B,GAAA;AAAA,IACjC,OAAS,EAAA;AAAA,MACP,EAAA,EAAI,QAAQ,CAAC,CAAA,KAAO,EAAE,IAAS,KAAA,QAAA,GAAW,mBAAmB,
|
|
1
|
+
{"version":3,"file":"useGridItemProps.mjs","sources":["../../../../../../../../../src/components/List/components/Items/components/Item/hooks/useGridItemProps.tsx"],"sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport React, { useEffect, useId, useRef, useState } from \"react\";\nimport { useList } from \"@/components/List\";\nimport type { PropsContext } from \"@/lib/propsContext\";\nimport { dynamic, PropsContextProvider } from \"@/lib/propsContext\";\nimport { AccordionButton } from \"@/components/List/components/Items/components/Item/components/AccordionButton\";\n\ninterface P extends PropsWithChildren {\n data: never;\n}\n\nexport const useGridItemProps = (props: P) => {\n const { data, children: childrenFromProps } = props;\n const list = useList();\n const itemView = list.itemView;\n const onAction = list.onAction;\n\n const [isExpanded, setIsExpanded] = useState(\n itemView?.defaultExpanded?.(data) ?? false,\n );\n const contentElementId = useId();\n const itemRef = useRef<HTMLDivElement>(null);\n\n const accordion = list.accordion;\n const children = childrenFromProps ?? itemView?.render(data);\n\n useEffect(() => {\n if (accordion) {\n itemRef.current?.setAttribute(\"aria-expanded\", String(isExpanded));\n itemRef.current?.setAttribute(\"aria-controls\", contentElementId);\n }\n }, [isExpanded, contentElementId, itemRef.current, accordion]);\n\n if (!accordion) {\n return {\n gridItemProps: {\n onAction: onAction\n ? () => {\n onAction?.(data);\n }\n : undefined,\n },\n children,\n };\n }\n\n const toggleAccordion = () => {\n setIsExpanded((current) => !current);\n onAction?.(data);\n };\n\n const propsContext: PropsContext = {\n Content: {\n id: dynamic((p) => (p.slot === \"bottom\" ? contentElementId : undefined)),\n wrapWith: dynamic((p) =>\n p.slot === \"bottom\" ? (\n <AccordionButton\n contentElementId={contentElementId}\n toggle={toggleAccordion}\n isExpanded={isExpanded}\n />\n ) : undefined,\n ),\n },\n };\n\n return {\n gridItemProps: {\n ref: itemRef,\n onAction: toggleAccordion,\n },\n children: (\n <PropsContextProvider\n props={propsContext}\n dependencies={[contentElementId, isExpanded]}\n >\n {children}\n </PropsContextProvider>\n ),\n };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWa,MAAA,gBAAA,GAAmB,CAAC,KAAa,KAAA;AAC5C,EAAA,MAAM,EAAE,IAAA,EAAM,QAAU,EAAA,iBAAA,EAAsB,GAAA,KAAA;AAC9C,EAAA,MAAM,OAAO,OAAQ,EAAA;AACrB,EAAA,MAAM,WAAW,IAAK,CAAA,QAAA;AACtB,EAAA,MAAM,WAAW,IAAK,CAAA,QAAA;AAEtB,EAAM,MAAA,CAAC,UAAY,EAAA,aAAa,CAAI,GAAA,QAAA;AAAA,IAClC,QAAA,EAAU,eAAkB,GAAA,IAAI,CAAK,IAAA;AAAA,GACvC;AACA,EAAA,MAAM,mBAAmB,KAAM,EAAA;AAC/B,EAAM,MAAA,OAAA,GAAU,OAAuB,IAAI,CAAA;AAE3C,EAAA,MAAM,YAAY,IAAK,CAAA,SAAA;AACvB,EAAA,MAAM,QAAW,GAAA,iBAAA,IAAqB,QAAU,EAAA,MAAA,CAAO,IAAI,CAAA;AAE3D,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAW,EAAA;AACb,MAAA,OAAA,CAAQ,OAAS,EAAA,YAAA,CAAa,eAAiB,EAAA,MAAA,CAAO,UAAU,CAAC,CAAA;AACjE,MAAQ,OAAA,CAAA,OAAA,EAAS,YAAa,CAAA,eAAA,EAAiB,gBAAgB,CAAA;AAAA;AACjE,KACC,CAAC,UAAA,EAAY,kBAAkB,OAAQ,CAAA,OAAA,EAAS,SAAS,CAAC,CAAA;AAE7D,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAO,OAAA;AAAA,MACL,aAAe,EAAA;AAAA,QACb,QAAA,EAAU,WACN,MAAM;AACJ,UAAA,QAAA,GAAW,IAAI,CAAA;AAAA,SAEjB,GAAA;AAAA,OACN;AAAA,MACA;AAAA,KACF;AAAA;AAGF,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAc,aAAA,CAAA,CAAC,OAAY,KAAA,CAAC,OAAO,CAAA;AACnC,IAAA,QAAA,GAAW,IAAI,CAAA;AAAA,GACjB;AAEA,EAAA,MAAM,YAA6B,GAAA;AAAA,IACjC,OAAS,EAAA;AAAA,MACP,EAAA,EAAI,QAAQ,CAAC,CAAA,KAAO,EAAE,IAAS,KAAA,QAAA,GAAW,mBAAmB,MAAU,CAAA;AAAA,MACvE,QAAU,EAAA,OAAA;AAAA,QAAQ,CAAC,CAAA,KACjB,CAAE,CAAA,IAAA,KAAS,QACT,mBAAA,GAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,gBAAA;AAAA,YACA,MAAQ,EAAA,eAAA;AAAA,YACR;AAAA;AAAA,SAEA,GAAA;AAAA;AACN;AACF,GACF;AAEA,EAAO,OAAA;AAAA,IACL,aAAe,EAAA;AAAA,MACb,GAAK,EAAA,OAAA;AAAA,MACL,QAAU,EAAA;AAAA,KACZ;AAAA,IACA,QACE,kBAAA,GAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA,YAAA;AAAA,QACP,YAAA,EAAc,CAAC,gBAAA,EAAkB,UAAU,CAAA;AAAA,QAE1C;AAAA;AAAA;AACH,GAEJ;AACF;;;;"}
|
|
@@ -74,9 +74,9 @@ const Table = () => {
|
|
|
74
74
|
props.isSelected && styles.isSelected
|
|
75
75
|
),
|
|
76
76
|
id: item.id,
|
|
77
|
-
onAction: rowAction ? () => rowAction(item.data) :
|
|
77
|
+
onAction: rowAction ? () => rowAction(item.data) : void 0,
|
|
78
78
|
...table.body.row.componentProps,
|
|
79
|
-
children: table.body.row?.cells.map((cell, i) => /* @__PURE__ */ jsx(TableCellView, { ...cell.componentProps, children: cell.renderFn ? cell.renderFn(item.data, list) :
|
|
79
|
+
children: table.body.row?.cells.map((cell, i) => /* @__PURE__ */ jsx(TableCellView, { ...cell.componentProps, children: cell.renderFn ? cell.renderFn(item.data, list) : void 0 }, i))
|
|
80
80
|
},
|
|
81
81
|
item.id
|
|
82
82
|
)) })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.mjs","sources":["../../../../../../src/components/List/components/Table/Table.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React from \"react\";\nimport { useList } from \"@/components/List\";\nimport { TableLoadingView } from \"@/components/List/components/Table/components/TableLoadingView\";\nimport styles from \"./Table.module.css\";\nimport clsx from \"clsx\";\nimport ListEmptyViewView from \"@/views/ListEmptyViewView\";\nimport TableView from \"@/views/TableView\";\nimport TableHeaderView from \"@/views/TableHeaderView\";\nimport TableBodyView from \"@/views/TableBodyView\";\nimport TableRowView from \"@/views/TableRowView\";\nimport TableCellView from \"@/views/TableCellView\";\nimport TableColumnView from \"@/views/TableColumnView\";\n\nexport const Table: FC = () => {\n const list = useList();\n const table = list.table;\n const listIsEmpty = list.useIsEmpty();\n\n const isLoading = list.loader.useIsLoading();\n const isInitiallyLoading = list.loader.useIsInitiallyLoading();\n\n if (!table) {\n return null;\n }\n\n if (isInitiallyLoading) {\n return <TableLoadingView {...table.componentProps} />;\n }\n\n if (listIsEmpty) {\n return <ListEmptyViewView />;\n }\n\n const rowAction = table.list.onAction;\n\n const tableClassName = clsx(\n styles.table,\n isLoading && styles.isLoading,\n table.componentProps.className,\n );\n\n return (\n <TableView\n {...list.componentProps}\n {...table.componentProps}\n className={tableClassName}\n >\n <TableHeaderView {...table.header.componentProps}>\n {table.header.columns.map((col, i) => (\n <TableColumnView key={i} {...col.componentProps} />\n ))}\n </TableHeaderView>\n <TableBodyView {...table.body.componentProps}>\n {list.items.entries.map((item) => (\n <TableRowView\n className={(props) =>\n clsx(\n styles.row,\n rowAction && styles.hasAction,\n table.body.row.componentProps.className,\n props.isSelected && styles.isSelected,\n )\n }\n key={item.id}\n id={item.id}\n onAction={rowAction ? () => rowAction(item.data) : undefined}\n {...table.body.row.componentProps}\n >\n {table.body.row?.cells.map((cell, i) => (\n <TableCellView key={i} {...cell.componentProps}>\n {cell.renderFn ? cell.renderFn(item.data, list) : undefined}\n </TableCellView>\n ))}\n </TableRowView>\n ))}\n </TableBodyView>\n </TableView>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,MAAM,QAAY,MAAM;AAC7B,EAAA,MAAM,OAAO,OAAQ,EAAA;AACrB,EAAA,MAAM,QAAQ,IAAK,CAAA,KAAA;AACnB,EAAM,MAAA,WAAA,GAAc,KAAK,UAAW,EAAA;AAEpC,EAAM,MAAA,SAAA,GAAY,IAAK,CAAA,MAAA,CAAO,YAAa,EAAA;AAC3C,EAAM,MAAA,kBAAA,GAAqB,IAAK,CAAA,MAAA,CAAO,qBAAsB,EAAA;AAE7D,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,IAAI,kBAAoB,EAAA;AACtB,IAAA,uBAAQ,GAAA,CAAA,gBAAA,EAAA,EAAkB,GAAG,KAAA,CAAM,cAAgB,EAAA,CAAA;AAAA;AAGrD,EAAA,IAAI,WAAa,EAAA;AACf,IAAA,2BAAQ,iBAAkB,EAAA,EAAA,CAAA;AAAA;AAG5B,EAAM,MAAA,SAAA,GAAY,MAAM,IAAK,CAAA,QAAA;AAE7B,EAAA,MAAM,cAAiB,GAAA,IAAA;AAAA,IACrB,MAAO,CAAA,KAAA;AAAA,IACP,aAAa,MAAO,CAAA,SAAA;AAAA,IACpB,MAAM,cAAe,CAAA;AAAA,GACvB;AAEA,EACE,uBAAA,IAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAK,CAAA,cAAA;AAAA,MACR,GAAG,KAAM,CAAA,cAAA;AAAA,MACV,SAAW,EAAA,cAAA;AAAA,MAEX,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,mBAAiB,GAAG,KAAA,CAAM,OAAO,cAC/B,EAAA,QAAA,EAAA,KAAA,CAAM,OAAO,OAAQ,CAAA,GAAA,CAAI,CAAC,GAAK,EAAA,CAAA,yBAC7B,eAAyB,EAAA,EAAA,GAAG,IAAI,cAAX,EAAA,EAAA,CAA2B,CAClD,CACH,EAAA,CAAA;AAAA,wBACA,GAAA,CAAC,aAAe,EAAA,EAAA,GAAG,KAAM,CAAA,IAAA,CAAK,cAC3B,EAAA,QAAA,EAAA,IAAA,CAAK,KAAM,CAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,IACvB,qBAAA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,CAAC,KACV,KAAA,IAAA;AAAA,cACE,MAAO,CAAA,GAAA;AAAA,cACP,aAAa,MAAO,CAAA,SAAA;AAAA,cACpB,KAAA,CAAM,IAAK,CAAA,GAAA,CAAI,cAAe,CAAA,SAAA;AAAA,cAC9B,KAAA,CAAM,cAAc,MAAO,CAAA;AAAA,aAC7B;AAAA,YAGF,IAAI,IAAK,CAAA,EAAA;AAAA,YACT,UAAU,SAAY,GAAA,MAAM,SAAU,CAAA,IAAA,CAAK,IAAI,CAAI,GAAA,
|
|
1
|
+
{"version":3,"file":"Table.mjs","sources":["../../../../../../src/components/List/components/Table/Table.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React from \"react\";\nimport { useList } from \"@/components/List\";\nimport { TableLoadingView } from \"@/components/List/components/Table/components/TableLoadingView\";\nimport styles from \"./Table.module.css\";\nimport clsx from \"clsx\";\nimport ListEmptyViewView from \"@/views/ListEmptyViewView\";\nimport TableView from \"@/views/TableView\";\nimport TableHeaderView from \"@/views/TableHeaderView\";\nimport TableBodyView from \"@/views/TableBodyView\";\nimport TableRowView from \"@/views/TableRowView\";\nimport TableCellView from \"@/views/TableCellView\";\nimport TableColumnView from \"@/views/TableColumnView\";\n\nexport const Table: FC = () => {\n const list = useList();\n const table = list.table;\n const listIsEmpty = list.useIsEmpty();\n\n const isLoading = list.loader.useIsLoading();\n const isInitiallyLoading = list.loader.useIsInitiallyLoading();\n\n if (!table) {\n return null;\n }\n\n if (isInitiallyLoading) {\n return <TableLoadingView {...table.componentProps} />;\n }\n\n if (listIsEmpty) {\n return <ListEmptyViewView />;\n }\n\n const rowAction = table.list.onAction;\n\n const tableClassName = clsx(\n styles.table,\n isLoading && styles.isLoading,\n table.componentProps.className,\n );\n\n return (\n <TableView\n {...list.componentProps}\n {...table.componentProps}\n className={tableClassName}\n >\n <TableHeaderView {...table.header.componentProps}>\n {table.header.columns.map((col, i) => (\n <TableColumnView key={i} {...col.componentProps} />\n ))}\n </TableHeaderView>\n <TableBodyView {...table.body.componentProps}>\n {list.items.entries.map((item) => (\n <TableRowView\n className={(props) =>\n clsx(\n styles.row,\n rowAction && styles.hasAction,\n table.body.row.componentProps.className,\n props.isSelected && styles.isSelected,\n )\n }\n key={item.id}\n id={item.id}\n onAction={rowAction ? () => rowAction(item.data) : undefined}\n {...table.body.row.componentProps}\n >\n {table.body.row?.cells.map((cell, i) => (\n <TableCellView key={i} {...cell.componentProps}>\n {cell.renderFn ? cell.renderFn(item.data, list) : undefined}\n </TableCellView>\n ))}\n </TableRowView>\n ))}\n </TableBodyView>\n </TableView>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,MAAM,QAAY,MAAM;AAC7B,EAAA,MAAM,OAAO,OAAQ,EAAA;AACrB,EAAA,MAAM,QAAQ,IAAK,CAAA,KAAA;AACnB,EAAM,MAAA,WAAA,GAAc,KAAK,UAAW,EAAA;AAEpC,EAAM,MAAA,SAAA,GAAY,IAAK,CAAA,MAAA,CAAO,YAAa,EAAA;AAC3C,EAAM,MAAA,kBAAA,GAAqB,IAAK,CAAA,MAAA,CAAO,qBAAsB,EAAA;AAE7D,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,IAAI,kBAAoB,EAAA;AACtB,IAAA,uBAAQ,GAAA,CAAA,gBAAA,EAAA,EAAkB,GAAG,KAAA,CAAM,cAAgB,EAAA,CAAA;AAAA;AAGrD,EAAA,IAAI,WAAa,EAAA;AACf,IAAA,2BAAQ,iBAAkB,EAAA,EAAA,CAAA;AAAA;AAG5B,EAAM,MAAA,SAAA,GAAY,MAAM,IAAK,CAAA,QAAA;AAE7B,EAAA,MAAM,cAAiB,GAAA,IAAA;AAAA,IACrB,MAAO,CAAA,KAAA;AAAA,IACP,aAAa,MAAO,CAAA,SAAA;AAAA,IACpB,MAAM,cAAe,CAAA;AAAA,GACvB;AAEA,EACE,uBAAA,IAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAK,CAAA,cAAA;AAAA,MACR,GAAG,KAAM,CAAA,cAAA;AAAA,MACV,SAAW,EAAA,cAAA;AAAA,MAEX,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,mBAAiB,GAAG,KAAA,CAAM,OAAO,cAC/B,EAAA,QAAA,EAAA,KAAA,CAAM,OAAO,OAAQ,CAAA,GAAA,CAAI,CAAC,GAAK,EAAA,CAAA,yBAC7B,eAAyB,EAAA,EAAA,GAAG,IAAI,cAAX,EAAA,EAAA,CAA2B,CAClD,CACH,EAAA,CAAA;AAAA,wBACA,GAAA,CAAC,aAAe,EAAA,EAAA,GAAG,KAAM,CAAA,IAAA,CAAK,cAC3B,EAAA,QAAA,EAAA,IAAA,CAAK,KAAM,CAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,IACvB,qBAAA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,CAAC,KACV,KAAA,IAAA;AAAA,cACE,MAAO,CAAA,GAAA;AAAA,cACP,aAAa,MAAO,CAAA,SAAA;AAAA,cACpB,KAAA,CAAM,IAAK,CAAA,GAAA,CAAI,cAAe,CAAA,SAAA;AAAA,cAC9B,KAAA,CAAM,cAAc,MAAO,CAAA;AAAA,aAC7B;AAAA,YAGF,IAAI,IAAK,CAAA,EAAA;AAAA,YACT,UAAU,SAAY,GAAA,MAAM,SAAU,CAAA,IAAA,CAAK,IAAI,CAAI,GAAA,MAAA;AAAA,YAClD,GAAG,KAAM,CAAA,IAAA,CAAK,GAAI,CAAA,cAAA;AAAA,YAElB,QAAA,EAAA,KAAA,CAAM,KAAK,GAAK,EAAA,KAAA,CAAM,IAAI,CAAC,IAAA,EAAM,CAChC,qBAAA,GAAA,CAAC,aAAuB,EAAA,EAAA,GAAG,KAAK,cAC7B,EAAA,QAAA,EAAA,IAAA,CAAK,QAAW,GAAA,IAAA,CAAK,QAAS,CAAA,IAAA,CAAK,MAAM,IAAI,CAAA,GAAI,MADhC,EAAA,EAAA,CAEpB,CACD;AAAA,WAAA;AAAA,UATI,IAAK,CAAA;AAAA,SAWb,CACH,EAAA;AAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -55,16 +55,16 @@ class List {
|
|
|
55
55
|
} = shape;
|
|
56
56
|
this.settingsStore = useSettings();
|
|
57
57
|
this.settingStorageKey = settingStorageKey;
|
|
58
|
-
this.filterSettingsStorageKey = settingStorageKey ? `${settingStorageKey}.activeFilters` :
|
|
59
|
-
this.viewModeStorageKey = settingStorageKey ? `${settingStorageKey}.viewMode` :
|
|
58
|
+
this.filterSettingsStorageKey = settingStorageKey ? `${settingStorageKey}.activeFilters` : void 0;
|
|
59
|
+
this.viewModeStorageKey = settingStorageKey ? `${settingStorageKey}.viewMode` : void 0;
|
|
60
60
|
this.supportsSettingsStorage = !!this.settingStorageKey;
|
|
61
61
|
this.items = new ItemCollection(this);
|
|
62
62
|
this.filters = filters.map((shape2) => new Filter(this, shape2));
|
|
63
63
|
this.sorting = sorting.map((shape2) => new Sorting(this, shape2));
|
|
64
|
-
this.search = search ? new Search(this, search) :
|
|
65
|
-
this.itemView = itemView ? new ItemView(this, itemView) :
|
|
64
|
+
this.search = search ? new Search(this, search) : void 0;
|
|
65
|
+
this.itemView = itemView ? new ItemView(this, itemView) : void 0;
|
|
66
66
|
this.accordion = accordion;
|
|
67
|
-
this.table = table ? new Table(this, table) :
|
|
67
|
+
this.table = table ? new Table(this, table) : void 0;
|
|
68
68
|
this.batches = new BatchesController(this, batchesController);
|
|
69
69
|
this.componentProps = componentProps;
|
|
70
70
|
this.loader = IncrementalLoader.useNew(this, loader);
|
|
@@ -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> {\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 private readonly settingsStore?: SettingsStore;\n private readonly viewModeStorageKey?: string;\n private readonly filterSettingsStorageKey?: string;\n\n public constructor(shape: ListShape<T>) {\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 ...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.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.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 defaultViewMode ?? this.getStoredViewModeDefaultSetting() ?? \"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>(shape: ListShape<T>): List<T> {\n return new List<T>(shape);\n }\n\n public storeFilterDefaultSettings() {\n if (this.settingsStore && this.filterSettingsStorageKey) {\n const data = Object.fromEntries(\n this.filters.map((f) => [\n f.property,\n f\n .getArrayValue()\n .filter((v) => v.isActive)\n .map((v) => v.id),\n ]),\n );\n\n this.settingsStore.set(\n \"List\",\n this.filterSettingsStorageKey,\n Filter.settingsStorageSchema,\n data,\n );\n }\n }\n\n public getStoredFilterDefaultSettings() {\n if (this.settingsStore && this.filterSettingsStorageKey) {\n return this.settingsStore.get(\n \"List\",\n this.filterSettingsStorageKey,\n Filter.settingsStorageSchema,\n );\n }\n }\n\n public getStoredViewModeDefaultSetting() {\n if (this.settingsStore && this.viewModeStorageKey) {\n return this.settingsStore.get(\n \"List\",\n this.viewModeStorageKey,\n List.viewModeSettingsStorageSchema,\n );\n }\n }\n\n public getSorting(id: string): Sorting<T> {\n const sorting = this.sorting.find((s) => s.id === id);\n invariant(!!sorting, `Could not get Sorting (ID: ${id})`);\n return sorting;\n }\n\n public clearSorting(): void {\n return this.sorting.forEach((s) => s.clear());\n }\n\n public resetFilters(): void {\n return this.filters.forEach((f) => f.resetValues());\n }\n\n public clearFilters(): void {\n return this.filters.forEach((f) => f.clear());\n }\n\n public useIsEmpty(): boolean {\n return !this.loader.useIsLoading() && this.items.entries.length === 0;\n }\n}\n\nexport default List;\n"],"names":["shape","viewMode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"List.mjs","sources":["../../../../../src/components/List/model/List.ts"],"sourcesContent":["import { ItemCollection } from \"@/components/List/model/item/ItemCollection\";\nimport { BatchesController } from \"@/components/List/model/pagination/BatchesController\";\nimport { Filter } from \"./filter/Filter\";\nimport { Sorting } from \"@/components/List/model/sorting/Sorting\";\nimport ReactTable from \"@/components/List/model/ReactTable\";\nimport type {\n GetItemId,\n ItemActionFn,\n ListShape,\n ListSupportedComponentProps,\n ListViewMode,\n} from \"@/components/List/model/types\";\nimport { IncrementalLoader } from \"@/components/List/model/loading/IncrementalLoader\";\nimport invariant from \"invariant\";\nimport { Search } from \"@/components/List/model/search/Search\";\nimport { ItemView } from \"@/components/List/model/item/ItemView\";\nimport { Table } from \"@/components/List/model/table/Table\";\nimport { useEffect, useState } from \"react\";\nimport { useSettings } from \"@/components/SettingsProvider/SettingsProvider\";\nimport type { SettingsStore } from \"@/components/SettingsProvider/models/SettingsStore\";\nimport z from \"zod\";\n\nexport class List<T> {\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 private readonly settingsStore?: SettingsStore;\n private readonly viewModeStorageKey?: string;\n private readonly filterSettingsStorageKey?: string;\n\n public constructor(shape: ListShape<T>) {\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 ...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.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.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 defaultViewMode ?? this.getStoredViewModeDefaultSetting() ?? \"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>(shape: ListShape<T>): List<T> {\n return new List<T>(shape);\n }\n\n public storeFilterDefaultSettings() {\n if (this.settingsStore && this.filterSettingsStorageKey) {\n const data = Object.fromEntries(\n this.filters.map((f) => [\n f.property,\n f\n .getArrayValue()\n .filter((v) => v.isActive)\n .map((v) => v.id),\n ]),\n );\n\n this.settingsStore.set(\n \"List\",\n this.filterSettingsStorageKey,\n Filter.settingsStorageSchema,\n data,\n );\n }\n }\n\n public getStoredFilterDefaultSettings() {\n if (this.settingsStore && this.filterSettingsStorageKey) {\n return this.settingsStore.get(\n \"List\",\n this.filterSettingsStorageKey,\n Filter.settingsStorageSchema,\n );\n }\n }\n\n public getStoredViewModeDefaultSetting() {\n if (this.settingsStore && this.viewModeStorageKey) {\n return this.settingsStore.get(\n \"List\",\n this.viewModeStorageKey,\n List.viewModeSettingsStorageSchema,\n );\n }\n }\n\n public 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,6 +1,6 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
/* */
|
|
3
|
-
import { useReactTable,
|
|
3
|
+
import { useReactTable, getFacetedUniqueValues, getPaginationRowModel, getFilteredRowModel, getSortedRowModel, getCoreRowModel } from '@tanstack/react-table';
|
|
4
4
|
import invariant from 'invariant';
|
|
5
5
|
import { useState, useEffect } from 'react';
|
|
6
6
|
|
|
@@ -84,7 +84,7 @@ class Filter {
|
|
|
84
84
|
}
|
|
85
85
|
getValuesFromTableState() {
|
|
86
86
|
return unique(
|
|
87
|
-
Array.from(this.getTableColumn().getFacetedUniqueValues().keys()).flatMap((v) => v).filter((v) => v !==
|
|
87
|
+
Array.from(this.getTableColumn().getFacetedUniqueValues().keys()).flatMap((v) => v).filter((v) => v !== void 0 && v !== null)
|
|
88
88
|
).map((v) => FilterValue.create(this, v));
|
|
89
89
|
}
|
|
90
90
|
checkIfValueIsUnknown(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filter.mjs","sources":["../../../../../../src/components/List/model/filter/Filter.ts"],"sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnFilter,\n InitialTableState,\n} from \"@tanstack/react-table\";\nimport type List from \"@/components/List/model/List\";\nimport { getProperty } from \"dot-prop\";\nimport type {\n FilterMatcher,\n FilterMode,\n FilterShape,\n} from \"@/components/List/model/filter/types\";\nimport type {\n PropertyName,\n PropertyValueRenderMethod,\n} from \"@/components/List/model/types\";\nimport { customPropertyPrefix } from \"@/components/List/model/types\";\nimport { difference, unique } from \"remeda\";\nimport { FilterValue } from \"@/components/List/model/filter/FilterValue\";\nimport z from \"zod\";\nimport { toArray } from \"@/lib/array/toArray\";\n\nconst equalsPropertyMatcher: FilterMatcher<unknown, never, never> = (\n filterValue,\n propertyValue,\n) => filterValue === propertyValue;\n\nconst stringCastRenderMethod: PropertyValueRenderMethod<unknown> = (value) =>\n String(value);\n\nexport class Filter<T, TProp extends PropertyName<T>, TMatchValue> {\n public static readonly settingsStorageSchema = z\n .record(z.array(z.string()))\n .optional();\n\n private _values?: FilterValue[] | undefined;\n private _valuesFromTableState?: FilterValue[];\n public readonly list: List<T>;\n public readonly property: PropertyName<T>;\n public readonly mode: FilterMode;\n public readonly matcher: FilterMatcher<T, never, never>;\n public readonly renderItem: PropertyValueRenderMethod<TMatchValue>;\n public readonly name?: string;\n private onFilterUpdateCallbacks = new Set<() => unknown>();\n private readonly defaultSelectedValues?: readonly NonNullable<TMatchValue>[];\n\n public constructor(list: List<T>, shape: FilterShape<T, TProp, TMatchValue>) {\n this.list = list;\n this.property = shape.property;\n this.mode = shape.mode ?? \"one\";\n this._values = shape.values?.map((v) => FilterValue.create(this, v));\n this.matcher = shape.matcher ?? equalsPropertyMatcher;\n this.renderItem = shape.renderItem ?? stringCastRenderMethod;\n this.name = shape.name;\n\n this.defaultSelectedValues = shape.defaultSelected;\n }\n\n private getStoredSelectedIds() {\n return this.list.getStoredFilterDefaultSettings()?.[String(this.property)];\n }\n\n public updateInitialState(initialState: InitialTableState) {\n const initialValues = this.getInitialValues();\n\n if (initialValues?.length) {\n initialState.columnFilters = [\n ...(initialState.columnFilters ?? []),\n {\n id: this.property as string,\n value: initialValues,\n },\n ];\n }\n }\n\n public updateTableColumnDef(def: ColumnDef<T>): void {\n def.enableColumnFilter = true;\n def.filterFn = this.getReactTableFilterFn();\n }\n\n private getReactTableFilterFn(): ColumnDef<T>[\"filterFn\"] {\n return (row, _, filterValue) => {\n const propertyAsString = this.property as string;\n\n const filterBy = propertyAsString.startsWith(customPropertyPrefix)\n ? row.original\n : getProperty(row.original, propertyAsString);\n\n return this.checkFilterMatches(filterBy, filterValue);\n };\n }\n\n private checkFilterMatches(\n property: unknown,\n filterValueInput: unknown,\n ): boolean {\n if (filterValueInput === null) {\n return true;\n }\n\n const predicate = (filterValue: FilterValue) =>\n this.matcher(filterValue.value as never, property as never);\n\n const toFilterValue = (something: unknown) =>\n FilterValue.create(this, something);\n\n if (this.mode === \"all\") {\n return toArray(filterValueInput).map(toFilterValue).every(predicate);\n } else if (this.mode === \"some\") {\n const filterArr = toArray(filterValueInput);\n return (\n filterArr.length === 0 || filterArr.map(toFilterValue).some(predicate)\n );\n } else if (this.mode === \"one\") {\n return predicate(toFilterValue(filterValueInput));\n }\n\n throw new Error(`Unknown filter mode '${this.mode}'`);\n }\n\n protected getTableColumnFilter(): ColumnFilter | undefined {\n return this.list.reactTable.table\n .getState()\n .columnFilters.find((f) => f.id === this.property);\n }\n\n private getTableColumn(): Column<T> {\n return this.list.reactTable.getTableColumn(this.property);\n }\n\n public getValue(): unknown {\n return this.getTableColumnFilter()?.value ?? null;\n }\n\n private getValuesFromTableState() {\n return unique(\n Array.from(this.getTableColumn().getFacetedUniqueValues().keys())\n .flatMap((v) => v)\n .filter((v) => v !== undefined && v !== null),\n ).map((v) => FilterValue.create(this, v));\n }\n\n private checkIfValueIsUnknown(value: FilterValue) {\n const isKnown = this.values.some((v) => v.id === value.id);\n return !isKnown;\n }\n\n public deleteUnknownFilterValues() {\n if (this.values === this.valuesFromTableState) {\n return;\n }\n\n for (const currentValues of this.getArrayValue()) {\n if (this.checkIfValueIsUnknown(currentValues)) {\n this.deactivateValue(currentValues);\n }\n }\n }\n\n public get values(): FilterValue[] {\n return this._values ?? this.valuesFromTableState;\n }\n\n private get valuesFromTableState(): FilterValue[] {\n if (!this._valuesFromTableState) {\n this._valuesFromTableState = this.getValuesFromTableState();\n }\n return this._valuesFromTableState;\n }\n\n public getArrayValue(): FilterValue[] {\n const value = this.getValue();\n return value === null\n ? []\n : toArray(value).map((v) => FilterValue.create(this, v));\n }\n\n public isValueActive(value: FilterValue): boolean {\n return this.getArrayValue().some((v) => v.equals(value));\n }\n\n public isActive(): boolean {\n return this.getArrayValue().length > 0;\n }\n\n public deactivateValue(value: FilterValue): void {\n const currentValueAsArray = this.getArrayValue();\n\n let updatedValue: unknown;\n\n if (this.mode === \"all\" || this.mode === \"some\") {\n updatedValue = currentValueAsArray.filter((v) => !v.equals(value));\n } else {\n updatedValue = null;\n }\n\n this.list.reactTable\n .getTableColumn(this.property)\n .setFilterValue(updatedValue);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public hasChanged(): boolean {\n const currentValues = this.getArrayValue().map((v) => v.value);\n const initialValues =\n this.getInitialFilterValues()?.map((v) => v.value) ?? [];\n\n return (\n currentValues.length !== initialValues.length ||\n difference(currentValues, initialValues).length > 0\n );\n }\n\n private getInitialValues() {\n return this.getStoredSelectedIds() ?? this.defaultSelectedValues;\n }\n\n private getInitialFilterValues() {\n return this.getInitialValues()?.map((v) => FilterValue.create(this, v));\n }\n\n public resetValues(): void {\n let resetTo: unknown;\n const initialValues = this.getInitialValues();\n\n if (initialValues) {\n resetTo = initialValues;\n } else {\n if (this.mode === \"all\" || this.mode === \"some\") {\n resetTo = [];\n } else {\n resetTo = null;\n }\n }\n\n this.list.reactTable.getTableColumn(this.property).setFilterValue(resetTo);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public clear(): void {\n this.list.reactTable.getTableColumn(this.property).setFilterValue(null);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public toggleValue(newValue: FilterValue): void {\n const currentValueAsArray = this.getArrayValue();\n\n let updatedValue: unknown;\n\n if (this.mode === \"all\" || this.mode === \"some\") {\n if (newValue.isActive) {\n updatedValue = currentValueAsArray.filter((v) => !v.equals(newValue));\n } else {\n updatedValue = [...currentValueAsArray, newValue];\n }\n } else {\n updatedValue = newValue.isActive ? null : newValue;\n }\n\n this.list.reactTable\n .getTableColumn(this.property)\n .setFilterValue(updatedValue);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public onFilterUpdated(cb: () => unknown): void {\n this.onFilterUpdateCallbacks.add(cb);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Filter.mjs","sources":["../../../../../../src/components/List/model/filter/Filter.ts"],"sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnFilter,\n InitialTableState,\n} from \"@tanstack/react-table\";\nimport type List from \"@/components/List/model/List\";\nimport { getProperty } from \"dot-prop\";\nimport type {\n FilterMatcher,\n FilterMode,\n FilterShape,\n} from \"@/components/List/model/filter/types\";\nimport type {\n PropertyName,\n PropertyValueRenderMethod,\n} from \"@/components/List/model/types\";\nimport { customPropertyPrefix } from \"@/components/List/model/types\";\nimport { difference, unique } from \"remeda\";\nimport { FilterValue } from \"@/components/List/model/filter/FilterValue\";\nimport z from \"zod\";\nimport { toArray } from \"@/lib/array/toArray\";\n\nconst equalsPropertyMatcher: FilterMatcher<unknown, never, never> = (\n filterValue,\n propertyValue,\n) => filterValue === propertyValue;\n\nconst stringCastRenderMethod: PropertyValueRenderMethod<unknown> = (value) =>\n String(value);\n\nexport class Filter<T, TProp extends PropertyName<T>, TMatchValue> {\n public static readonly settingsStorageSchema = z\n .record(z.array(z.string()))\n .optional();\n\n private _values?: FilterValue[] | undefined;\n private _valuesFromTableState?: FilterValue[];\n public readonly list: List<T>;\n public readonly property: PropertyName<T>;\n public readonly mode: FilterMode;\n public readonly matcher: FilterMatcher<T, never, never>;\n public readonly renderItem: PropertyValueRenderMethod<TMatchValue>;\n public readonly name?: string;\n private onFilterUpdateCallbacks = new Set<() => unknown>();\n private readonly defaultSelectedValues?: readonly NonNullable<TMatchValue>[];\n\n public constructor(list: List<T>, shape: FilterShape<T, TProp, TMatchValue>) {\n this.list = list;\n this.property = shape.property;\n this.mode = shape.mode ?? \"one\";\n this._values = shape.values?.map((v) => FilterValue.create(this, v));\n this.matcher = shape.matcher ?? equalsPropertyMatcher;\n this.renderItem = shape.renderItem ?? stringCastRenderMethod;\n this.name = shape.name;\n\n this.defaultSelectedValues = shape.defaultSelected;\n }\n\n private getStoredSelectedIds() {\n return this.list.getStoredFilterDefaultSettings()?.[String(this.property)];\n }\n\n public updateInitialState(initialState: InitialTableState) {\n const initialValues = this.getInitialValues();\n\n if (initialValues?.length) {\n initialState.columnFilters = [\n ...(initialState.columnFilters ?? []),\n {\n id: this.property as string,\n value: initialValues,\n },\n ];\n }\n }\n\n public updateTableColumnDef(def: ColumnDef<T>): void {\n def.enableColumnFilter = true;\n def.filterFn = this.getReactTableFilterFn();\n }\n\n private getReactTableFilterFn(): ColumnDef<T>[\"filterFn\"] {\n return (row, _, filterValue) => {\n const propertyAsString = this.property as string;\n\n const filterBy = propertyAsString.startsWith(customPropertyPrefix)\n ? row.original\n : getProperty(row.original, propertyAsString);\n\n return this.checkFilterMatches(filterBy, filterValue);\n };\n }\n\n private checkFilterMatches(\n property: unknown,\n filterValueInput: unknown,\n ): boolean {\n if (filterValueInput === null) {\n return true;\n }\n\n const predicate = (filterValue: FilterValue) =>\n this.matcher(filterValue.value as never, property as never);\n\n const toFilterValue = (something: unknown) =>\n FilterValue.create(this, something);\n\n if (this.mode === \"all\") {\n return toArray(filterValueInput).map(toFilterValue).every(predicate);\n } else if (this.mode === \"some\") {\n const filterArr = toArray(filterValueInput);\n return (\n filterArr.length === 0 || filterArr.map(toFilterValue).some(predicate)\n );\n } else if (this.mode === \"one\") {\n return predicate(toFilterValue(filterValueInput));\n }\n\n throw new Error(`Unknown filter mode '${this.mode}'`);\n }\n\n protected getTableColumnFilter(): ColumnFilter | undefined {\n return this.list.reactTable.table\n .getState()\n .columnFilters.find((f) => f.id === this.property);\n }\n\n private getTableColumn(): Column<T> {\n return this.list.reactTable.getTableColumn(this.property);\n }\n\n public getValue(): unknown {\n return this.getTableColumnFilter()?.value ?? null;\n }\n\n private getValuesFromTableState() {\n return unique(\n Array.from(this.getTableColumn().getFacetedUniqueValues().keys())\n .flatMap((v) => v)\n .filter((v) => v !== undefined && v !== null),\n ).map((v) => FilterValue.create(this, v));\n }\n\n private checkIfValueIsUnknown(value: FilterValue) {\n const isKnown = this.values.some((v) => v.id === value.id);\n return !isKnown;\n }\n\n public deleteUnknownFilterValues() {\n if (this.values === this.valuesFromTableState) {\n return;\n }\n\n for (const currentValues of this.getArrayValue()) {\n if (this.checkIfValueIsUnknown(currentValues)) {\n this.deactivateValue(currentValues);\n }\n }\n }\n\n public get values(): FilterValue[] {\n return this._values ?? this.valuesFromTableState;\n }\n\n private get valuesFromTableState(): FilterValue[] {\n if (!this._valuesFromTableState) {\n this._valuesFromTableState = this.getValuesFromTableState();\n }\n return this._valuesFromTableState;\n }\n\n public getArrayValue(): FilterValue[] {\n const value = this.getValue();\n return value === null\n ? []\n : toArray(value).map((v) => FilterValue.create(this, v));\n }\n\n public isValueActive(value: FilterValue): boolean {\n return this.getArrayValue().some((v) => v.equals(value));\n }\n\n public isActive(): boolean {\n return this.getArrayValue().length > 0;\n }\n\n public deactivateValue(value: FilterValue): void {\n const currentValueAsArray = this.getArrayValue();\n\n let updatedValue: unknown;\n\n if (this.mode === \"all\" || this.mode === \"some\") {\n updatedValue = currentValueAsArray.filter((v) => !v.equals(value));\n } else {\n updatedValue = null;\n }\n\n this.list.reactTable\n .getTableColumn(this.property)\n .setFilterValue(updatedValue);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public hasChanged(): boolean {\n const currentValues = this.getArrayValue().map((v) => v.value);\n const initialValues =\n this.getInitialFilterValues()?.map((v) => v.value) ?? [];\n\n return (\n currentValues.length !== initialValues.length ||\n difference(currentValues, initialValues).length > 0\n );\n }\n\n private getInitialValues() {\n return this.getStoredSelectedIds() ?? this.defaultSelectedValues;\n }\n\n private getInitialFilterValues() {\n return this.getInitialValues()?.map((v) => FilterValue.create(this, v));\n }\n\n public resetValues(): void {\n let resetTo: unknown;\n const initialValues = this.getInitialValues();\n\n if (initialValues) {\n resetTo = initialValues;\n } else {\n if (this.mode === \"all\" || this.mode === \"some\") {\n resetTo = [];\n } else {\n resetTo = null;\n }\n }\n\n this.list.reactTable.getTableColumn(this.property).setFilterValue(resetTo);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public clear(): void {\n this.list.reactTable.getTableColumn(this.property).setFilterValue(null);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public toggleValue(newValue: FilterValue): void {\n const currentValueAsArray = this.getArrayValue();\n\n let updatedValue: unknown;\n\n if (this.mode === \"all\" || this.mode === \"some\") {\n if (newValue.isActive) {\n updatedValue = currentValueAsArray.filter((v) => !v.equals(newValue));\n } else {\n updatedValue = [...currentValueAsArray, newValue];\n }\n } else {\n updatedValue = newValue.isActive ? null : newValue;\n }\n\n this.list.reactTable\n .getTableColumn(this.property)\n .setFilterValue(updatedValue);\n this.onFilterUpdateCallbacks.forEach((cb) => cb());\n }\n\n public onFilterUpdated(cb: () => unknown): void {\n this.onFilterUpdateCallbacks.add(cb);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ class ItemView {
|
|
|
33
33
|
this.showList = showList;
|
|
34
34
|
this.tileMaxWidth = tileMaxWidth;
|
|
35
35
|
}
|
|
36
|
-
static fallbackRenderItemFn = (item) => createElement("pre",
|
|
36
|
+
static fallbackRenderItemFn = (item) => createElement("pre", void 0, JSON.stringify(item));
|
|
37
37
|
render(data) {
|
|
38
38
|
const renderFn = this.renderFn ?? ItemView.fallbackRenderItemFn;
|
|
39
39
|
return renderFn(data, this.list);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemView.mjs","sources":["../../../../../../src/components/List/model/item/ItemView.ts"],"sourcesContent":["import type { ReactElement, ReactNode } from \"react\";\nimport { createElement } from \"react\";\nimport type { RenderItemFn } from \"@/components/List/model/item/types\";\nimport type List from \"@/components/List/model/List\";\n\nexport interface ItemViewShape<T> {\n textValue?: (data: T) => string;\n href?: (data: T) => string;\n defaultExpanded?: (data: T) => boolean;\n renderFn?: RenderItemFn<T>;\n fallback?: ReactElement;\n showList?: boolean;\n showTiles?: boolean;\n tileMaxWidth?: number;\n}\n\nexport class ItemView<T> {\n public readonly list: List<T>;\n public readonly textValue?: (data: T) => string;\n public readonly href?: (data: T) => string;\n public readonly defaultExpanded?: (data: T) => boolean;\n public readonly fallback?: ReactElement;\n public readonly showTiles?: boolean;\n public readonly showList?: boolean;\n public readonly tileMaxWidth: number;\n private readonly renderFn?: RenderItemFn<T>;\n\n public constructor(list: List<T>, shape: ItemViewShape<T> = {}) {\n const {\n fallback,\n textValue,\n href,\n defaultExpanded,\n renderFn,\n showTiles,\n showList = true,\n tileMaxWidth = 230,\n } = shape;\n this.list = list;\n this.textValue = textValue;\n this.renderFn = renderFn;\n this.href = href;\n this.defaultExpanded = defaultExpanded;\n this.fallback = fallback;\n this.showTiles = showTiles;\n this.showList = showList;\n this.tileMaxWidth = tileMaxWidth;\n }\n\n private static fallbackRenderItemFn: RenderItemFn<never> = (item) =>\n createElement(\"pre\", undefined, JSON.stringify(item));\n\n public render(data: T): ReactNode {\n const renderFn = (this.renderFn ??\n ItemView.fallbackRenderItemFn) as RenderItemFn<T>;\n return renderFn(data as never, this.list);\n }\n}\n"],"names":[],"mappings":";;AAgBO,MAAM,QAAY,CAAA;AAAA,EACP,IAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACC,QAAA;AAAA,EAEV,WAAY,CAAA,IAAA,EAAe,KAA0B,GAAA,EAAI,EAAA;AAC9D,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,eAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAW,GAAA,IAAA;AAAA,MACX,YAAe,GAAA;AAAA,KACb,GAAA,KAAA;AACJ,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA;AACZ,IAAA,IAAA,CAAK,SAAY,GAAA,SAAA;AACjB,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA;AAChB,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA;AACZ,IAAA,IAAA,CAAK,eAAkB,GAAA,eAAA;AACvB,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA;AAChB,IAAA,IAAA,CAAK,SAAY,GAAA,SAAA;AACjB,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA;AAChB,IAAA,IAAA,CAAK,YAAe,GAAA,YAAA;AAAA;AACtB,EAEA,OAAe,oBAA4C,GAAA,CAAC,IAC1D,KAAA,aAAA,CAAc,OAAO,
|
|
1
|
+
{"version":3,"file":"ItemView.mjs","sources":["../../../../../../src/components/List/model/item/ItemView.ts"],"sourcesContent":["import type { ReactElement, ReactNode } from \"react\";\nimport { createElement } from \"react\";\nimport type { RenderItemFn } from \"@/components/List/model/item/types\";\nimport type List from \"@/components/List/model/List\";\n\nexport interface ItemViewShape<T> {\n textValue?: (data: T) => string;\n href?: (data: T) => string;\n defaultExpanded?: (data: T) => boolean;\n renderFn?: RenderItemFn<T>;\n fallback?: ReactElement;\n showList?: boolean;\n showTiles?: boolean;\n tileMaxWidth?: number;\n}\n\nexport class ItemView<T> {\n public readonly list: List<T>;\n public readonly textValue?: (data: T) => string;\n public readonly href?: (data: T) => string;\n public readonly defaultExpanded?: (data: T) => boolean;\n public readonly fallback?: ReactElement;\n public readonly showTiles?: boolean;\n public readonly showList?: boolean;\n public readonly tileMaxWidth: number;\n private readonly renderFn?: RenderItemFn<T>;\n\n public constructor(list: List<T>, shape: ItemViewShape<T> = {}) {\n const {\n fallback,\n textValue,\n href,\n defaultExpanded,\n renderFn,\n showTiles,\n showList = true,\n tileMaxWidth = 230,\n } = shape;\n this.list = list;\n this.textValue = textValue;\n this.renderFn = renderFn;\n this.href = href;\n this.defaultExpanded = defaultExpanded;\n this.fallback = fallback;\n this.showTiles = showTiles;\n this.showList = showList;\n this.tileMaxWidth = tileMaxWidth;\n }\n\n private static fallbackRenderItemFn: RenderItemFn<never> = (item) =>\n createElement(\"pre\", undefined, JSON.stringify(item));\n\n public render(data: T): ReactNode {\n const renderFn = (this.renderFn ??\n ItemView.fallbackRenderItemFn) as RenderItemFn<T>;\n return renderFn(data as never, this.list);\n }\n}\n"],"names":[],"mappings":";;AAgBO,MAAM,QAAY,CAAA;AAAA,EACP,IAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACC,QAAA;AAAA,EAEV,WAAY,CAAA,IAAA,EAAe,KAA0B,GAAA,EAAI,EAAA;AAC9D,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,eAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAW,GAAA,IAAA;AAAA,MACX,YAAe,GAAA;AAAA,KACb,GAAA,KAAA;AACJ,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA;AACZ,IAAA,IAAA,CAAK,SAAY,GAAA,SAAA;AACjB,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA;AAChB,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA;AACZ,IAAA,IAAA,CAAK,eAAkB,GAAA,eAAA;AACvB,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA;AAChB,IAAA,IAAA,CAAK,SAAY,GAAA,SAAA;AACjB,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA;AAChB,IAAA,IAAA,CAAK,YAAe,GAAA,YAAA;AAAA;AACtB,EAEA,OAAe,oBAA4C,GAAA,CAAC,IAC1D,KAAA,aAAA,CAAc,OAAO,MAAW,EAAA,IAAA,CAAK,SAAU,CAAA,IAAI,CAAC,CAAA;AAAA,EAE/C,OAAO,IAAoB,EAAA;AAChC,IAAM,MAAA,QAAA,GAAY,IAAK,CAAA,QAAA,IACrB,QAAS,CAAA,oBAAA;AACX,IAAO,OAAA,QAAA,CAAS,IAAe,EAAA,IAAA,CAAK,IAAI,CAAA;AAAA;AAE5C;;;;"}
|
|
@@ -18,9 +18,9 @@ class IncrementalLoader {
|
|
|
18
18
|
constructor(list, shape = {}) {
|
|
19
19
|
const { source } = shape;
|
|
20
20
|
this.dataSource = source ?? { staticData: emptyData };
|
|
21
|
-
const manualPagination = "manualPagination" in this.dataSource ? this.dataSource.manualPagination :
|
|
22
|
-
const manualFiltering = "manualFiltering" in this.dataSource ? this.dataSource.manualFiltering :
|
|
23
|
-
const manualSorting = "manualSorting" in this.dataSource ? this.dataSource.manualSorting :
|
|
21
|
+
const manualPagination = "manualPagination" in this.dataSource ? this.dataSource.manualPagination : void 0;
|
|
22
|
+
const manualFiltering = "manualFiltering" in this.dataSource ? this.dataSource.manualFiltering : void 0;
|
|
23
|
+
const manualSorting = "manualSorting" in this.dataSource ? this.dataSource.manualSorting : void 0;
|
|
24
24
|
this.list = list;
|
|
25
25
|
this.loaderState = IncrementalLoaderState.useNew();
|
|
26
26
|
this.manualPagination = manualPagination ?? false;
|
|
@@ -88,7 +88,7 @@ class IncrementalLoader {
|
|
|
88
88
|
const setData = (loaderResult) => {
|
|
89
89
|
const { data, itemTotalCount } = loaderResult;
|
|
90
90
|
this.loaderState.setDataBatch(batchIndex, data);
|
|
91
|
-
if (itemTotalCount !==
|
|
91
|
+
if (itemTotalCount !== void 0) {
|
|
92
92
|
this.list.batches.updateItemTotalCount(itemTotalCount);
|
|
93
93
|
}
|
|
94
94
|
};
|
|
@@ -108,10 +108,10 @@ class IncrementalLoader {
|
|
|
108
108
|
pagination: this.manualPagination ? {
|
|
109
109
|
limit: this.list.batches.batchSize,
|
|
110
110
|
offset: this.list.batches.batchSize * batchIndex
|
|
111
|
-
} :
|
|
111
|
+
} : void 0,
|
|
112
112
|
sorting: this.manualSorting ? Object.fromEntries(
|
|
113
113
|
this.list.sorting.filter((s) => s.isSorted()).map((s) => [s.property, s.direction])
|
|
114
|
-
) :
|
|
114
|
+
) : void 0,
|
|
115
115
|
filtering: this.manualFiltering ? Object.fromEntries(
|
|
116
116
|
this.list.filters.filter((f) => f.getValue() !== null).map((f) => [
|
|
117
117
|
f.property,
|
|
@@ -120,8 +120,8 @@ class IncrementalLoader {
|
|
|
120
120
|
values: f.getArrayValue().map((v) => v.value)
|
|
121
121
|
}
|
|
122
122
|
])
|
|
123
|
-
) :
|
|
124
|
-
searchString: this.manualFiltering ? this.list.reactTable.searchString :
|
|
123
|
+
) : void 0,
|
|
124
|
+
searchString: this.manualFiltering ? this.list.reactTable.searchString : void 0
|
|
125
125
|
};
|
|
126
126
|
}
|
|
127
127
|
getBatchDataAsyncResource(batchIndex) {
|
|
@@ -139,7 +139,7 @@ class IncrementalLoader {
|
|
|
139
139
|
if ("asyncLoader" in dataSource) {
|
|
140
140
|
const asyncLoader = dataSource.asyncLoader;
|
|
141
141
|
const dependencies = dataSource.dependencies;
|
|
142
|
-
const loaderId = dependencies ? hash(dependencies).toString() :
|
|
142
|
+
const loaderId = dependencies ? hash(dependencies).toString() : void 0;
|
|
143
143
|
return getAsyncResource(asyncLoader, [loaderOptions], {
|
|
144
144
|
loaderId
|
|
145
145
|
});
|