dinocollab-core 2.1.28 → 2.1.29
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/dist/_virtual/_rollupPluginBabelHelpers.js +2 -2
- package/dist/src/api-context/alert-global.js +1 -1
- package/dist/src/api-context/alert-global.js.map +1 -1
- package/dist/src/api-context/drawer-global.js +1 -1
- package/dist/src/api-context/drawer-global.js.map +1 -1
- package/dist/src/api-context/global-modal.js +1 -1
- package/dist/src/api-context/global-modal.js.map +1 -1
- package/dist/src/api-context/popover-global.js +1 -1
- package/dist/src/api-context/popover-global.js.map +1 -1
- package/dist/src/api-context/popover.js +1 -1
- package/dist/src/api-context/popover.js.map +1 -1
- package/dist/src/components/breadcrumbs.js +1 -1
- package/dist/src/components/breadcrumbs.js.map +1 -1
- package/dist/src/components/copy-to-clipboard.js +1 -1
- package/dist/src/components/copy-to-clipboard.js.map +1 -1
- package/dist/src/components/create.multi-select-dropdown.js +1 -1
- package/dist/src/components/create.multi-select-dropdown.js.map +1 -1
- package/dist/src/components/help-tooltip.js +1 -1
- package/dist/src/components/help-tooltip.js.map +1 -1
- package/dist/src/components/image-with-fallback.js +1 -1
- package/dist/src/components/image-with-fallback.js.map +1 -1
- package/dist/src/components/rich-tooltip.js +1 -1
- package/dist/src/components/rich-tooltip.js.map +1 -1
- package/dist/src/components/text-editor.js +1 -1
- package/dist/src/components/text-editor.js.map +1 -1
- package/dist/src/components/text-editor.preview.js +1 -1
- package/dist/src/components/text-editor.preview.js.map +1 -1
- package/dist/src/data-view/animation-switch.js +1 -1
- package/dist/src/data-view/animation-switch.js.map +1 -1
- package/dist/src/data-view/convert-filter-to-graphql.js +1 -1
- package/dist/src/data-view/convert-filter-to-graphql.js.map +1 -1
- package/dist/src/data-view/create.active-filters-panel.js +1 -1
- package/dist/src/data-view/create.active-filters-panel.js.map +1 -1
- package/dist/src/data-view/create.data-view.js +1 -1
- package/dist/src/data-view/create.data-view.js.map +1 -1
- package/dist/src/data-view/create.filter-bar.js +1 -1
- package/dist/src/data-view/create.filter-bar.js.map +1 -1
- package/dist/src/data-view/create.filter-menu.js +1 -1
- package/dist/src/data-view/create.filter-menu.js.map +1 -1
- package/dist/src/data-view/create.pagination-bar.js +1 -1
- package/dist/src/data-view/create.pagination-bar.js.map +1 -1
- package/dist/src/data-view/create.popper-panel.js +1 -1
- package/dist/src/data-view/create.popper-panel.js.map +1 -1
- package/dist/src/data-view/create.search-match.js +1 -1
- package/dist/src/data-view/create.search-match.js.map +1 -1
- package/dist/src/data-view/create.sort-menu.js +1 -1
- package/dist/src/data-view/create.sort-menu.js.map +1 -1
- package/dist/src/data-view/create.view-mode.js +1 -1
- package/dist/src/data-view/create.view-mode.js.map +1 -1
- package/dist/src/data-view/dino.js +1 -1
- package/dist/src/data-view/dino.js.map +1 -1
- package/dist/src/data-view/filter-store.js +1 -1
- package/dist/src/data-view/filter-store.js.map +1 -1
- package/dist/src/data-view/helpers.js +1 -1
- package/dist/src/data-view/helpers.js.map +1 -1
- package/dist/src/data-view/scroll-tracking.js +1 -1
- package/dist/src/data-view/scroll-tracking.js.map +1 -1
- package/dist/src/data-view/ui.units.js +1 -1
- package/dist/src/data-view/ui.units.js.map +1 -1
- package/dist/src/data-view/view-mode.content.js +1 -1
- package/dist/src/data-view/view-mode.content.js.map +1 -1
- package/dist/src/data-view/view-mode.units.js +1 -1
- package/dist/src/data-view/view-mode.units.js.map +1 -1
- package/dist/src/form/create.autocomplete.chips.js +1 -1
- package/dist/src/form/create.autocomplete.chips.js.map +1 -1
- package/dist/src/form/create.color-picker.js +1 -1
- package/dist/src/form/create.color-picker.js.map +1 -1
- package/dist/src/form/create.date-expired.js +1 -1
- package/dist/src/form/create.date-expired.js.map +1 -1
- package/dist/src/form/create.date-picker.js +1 -1
- package/dist/src/form/create.date-picker.js.map +1 -1
- package/dist/src/form/create.form-base.js +1 -1
- package/dist/src/form/create.form-base.js.map +1 -1
- package/dist/src/form/create.form-comfirm.js +1 -1
- package/dist/src/form/create.form-comfirm.js.map +1 -1
- package/dist/src/form/create.form-grid-layout.js +1 -1
- package/dist/src/form/create.form-grid-layout.js.map +1 -1
- package/dist/src/form/create.input-file.csv-local-parser.js +1 -1
- package/dist/src/form/create.input-file.csv-local-parser.js.map +1 -1
- package/dist/src/form/create.input.file.js +1 -1
- package/dist/src/form/create.input.file.js.map +1 -1
- package/dist/src/form/create.input.image-file.js +1 -1
- package/dist/src/form/create.input.image-file.js.map +1 -1
- package/dist/src/form/create.input.js +1 -1
- package/dist/src/form/create.input.js.map +1 -1
- package/dist/src/form/create.select-simple.js +1 -1
- package/dist/src/form/create.select-simple.js.map +1 -1
- package/dist/src/form/create.select-with-api.js +1 -1
- package/dist/src/form/create.select-with-api.js.map +1 -1
- package/dist/src/form/create.text-editor.js +1 -1
- package/dist/src/form/create.text-editor.js.map +1 -1
- package/dist/src/form/decorator.form.js +1 -1
- package/dist/src/form/decorator.form.js.map +1 -1
- package/dist/src/form/decorator.js +1 -1
- package/dist/src/form/decorator.js.map +1 -1
- package/dist/src/form/dino-form.js +1 -1
- package/dist/src/form/dino-form.js.map +1 -1
- package/dist/src/form/helpers.js +1 -1
- package/dist/src/form/helpers.js.map +1 -1
- package/dist/src/form/modal-wrapper.js +1 -1
- package/dist/src/form/modal-wrapper.js.map +1 -1
- package/dist/src/form/validator.js +1 -1
- package/dist/src/form/validator.js.map +1 -1
- package/dist/src/hooks/check-scrolled.js +1 -1
- package/dist/src/hooks/check-scrolled.js.map +1 -1
- package/dist/src/hooks/debounce.js +1 -1
- package/dist/src/hooks/debounce.js.map +1 -1
- package/dist/src/hooks/use-fetch-data.js +1 -1
- package/dist/src/hooks/use-fetch-data.js.map +1 -1
- package/dist/src/http-service/base/crud-service-base.js +1 -1
- package/dist/src/http-service/base/crud-service-base.js.map +1 -1
- package/dist/src/http-service/base/helpers.js +1 -1
- package/dist/src/http-service/base/helpers.js.map +1 -1
- package/dist/src/http-service/base/service-base.js +1 -1
- package/dist/src/http-service/base/service-base.js.map +1 -1
- package/dist/src/http-service/graphql/app-profile.js +1 -1
- package/dist/src/http-service/graphql/app-profile.js.map +1 -1
- package/dist/src/http-service/graphql/graphql-request.js +1 -1
- package/dist/src/http-service/graphql/graphql-request.js.map +1 -1
- package/dist/src/http-service/graphql/request-param.js +1 -1
- package/dist/src/http-service/graphql/request-param.js.map +1 -1
- package/dist/src/lab/attach-widget/helpers.js +1 -1
- package/dist/src/lab/attach-widget/helpers.js.map +1 -1
- package/dist/src/lab/attach-widget/modal.js +1 -1
- package/dist/src/lab/attach-widget/modal.js.map +1 -1
- package/dist/src/lab/attach-widget/styled.js +1 -1
- package/dist/src/lab/attach-widget/styled.js.map +1 -1
- package/dist/src/lab/attach-widget/widget.js +1 -1
- package/dist/src/lab/attach-widget/widget.js.map +1 -1
- package/dist/src/lab/input.social-links/create.js +1 -1
- package/dist/src/lab/input.social-links/create.js.map +1 -1
- package/dist/src/lab/input.social-links/units.js +1 -1
- package/dist/src/lab/input.social-links/units.js.map +1 -1
- package/dist/src/mfe-shared/navigation.js +1 -1
- package/dist/src/mfe-shared/navigation.js.map +1 -1
- package/dist/src/redux/create.hoc-lazy.js +1 -1
- package/dist/src/redux/create.hoc-lazy.js.map +1 -1
- package/dist/src/redux/dino.js +1 -1
- package/dist/src/redux/dino.js.map +1 -1
- package/dist/src/redux/ui.error-page.js +1 -1
- package/dist/src/redux/ui.error-page.js.map +1 -1
- package/dist/src/table/create.action-row.js +1 -1
- package/dist/src/table/create.action-row.js.map +1 -1
- package/dist/src/table/create.table.js +1 -1
- package/dist/src/table/create.table.js.map +1 -1
- package/dist/src/table/custom.filter-operators.js +1 -1
- package/dist/src/table/custom.filter-operators.js.map +1 -1
- package/dist/src/table/dino.js +1 -1
- package/dist/src/table/dino.js.map +1 -1
- package/dist/src/table/helpers.js +1 -1
- package/dist/src/table/helpers.js.map +1 -1
- package/dist/src/table/toolbar-pannel.js +1 -1
- package/dist/src/table/toolbar-pannel.js.map +1 -1
- package/dist/src/table/ui.buttons.js +1 -1
- package/dist/src/table/ui.buttons.js.map +1 -1
- package/dist/src/table/ui.units.js +1 -1
- package/dist/src/table/ui.units.js.map +1 -1
- package/dist/src/table-grid/create.table-grid.js +1 -1
- package/dist/src/table-grid/create.table-grid.js.map +1 -1
- package/dist/src/table-grid/dino.js +1 -1
- package/dist/src/table-grid/dino.js.map +1 -1
- package/dist/src/table-grid/filter-bar/base.js +1 -1
- package/dist/src/table-grid/filter-bar/base.js.map +1 -1
- package/dist/src/table-grid/filter-bar/create.filter-bar.js +1 -1
- package/dist/src/table-grid/filter-bar/create.filter-bar.js.map +1 -1
- package/dist/src/table-grid/filter-bar/create.filter-menu.js +1 -1
- package/dist/src/table-grid/filter-bar/create.filter-menu.js.map +1 -1
- package/dist/src/table-grid/filter-bar/create.filter-panel.js +1 -1
- package/dist/src/table-grid/filter-bar/create.filter-panel.js.map +1 -1
- package/dist/src/table-grid/filter-bar/create.filtered.js +1 -1
- package/dist/src/table-grid/filter-bar/create.filtered.js.map +1 -1
- package/dist/src/table-grid/filter-bar/ui.units.js +1 -1
- package/dist/src/table-grid/filter-bar/ui.units.js.map +1 -1
- package/dist/src/table-grid/item-actions.js +1 -1
- package/dist/src/table-grid/item-actions.js.map +1 -1
- package/dist/src/table-grid/styled.js +1 -1
- package/dist/src/table-grid/styled.js.map +1 -1
- package/dist/src/table-grid/toolbar-pannel.js +1 -1
- package/dist/src/table-grid/toolbar-pannel.js.map +1 -1
- package/dist/src/table-grid/url-query-param.js +1 -1
- package/dist/src/table-grid/url-query-param.js.map +1 -1
- package/dist/src/utils/helpers.js +1 -1
- package/dist/src/utils/helpers.js.map +1 -1
- package/dist/src/utils/json-object.js +1 -1
- package/dist/src/utils/json-object.js.map +1 -1
- package/dist/src/utils/query-param.js +1 -1
- package/dist/src/utils/query-param.js.map +1 -1
- package/dist/types/mfe-shared/navigation.d.ts +5 -2
- package/dist/types/table-grid/styled.d.ts +1 -0
- package/dist/types/table-grid/types.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.sort-menu.js","sources":["../../../src/data-view/create.sort-menu.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, List, ListItem, ListItemButton, ListItemText, Typography, IconButton, styled, colors } from '@mui/material'\r\nimport { ISort, IFilterConfigs } from './types'\r\nimport { createFilterStore } from './filter-store'\r\nimport { ClearAllButton, mapSortConfigs } from './ui.units'\r\nimport { defaultDataViewContext, IDataViewContext, mapDataViewContext } from './context'\r\n\r\nconst sortMenuClasses = {\r\n root: 'SortMenu-root',\r\n header: 'SortMenu-header',\r\n list: 'SortMenu-list',\r\n item: 'SortMenu-item',\r\n activeItem: 'SortMenu-activeItem',\r\n itemText: 'SortMenu-itemText',\r\n directionButton: 'SortMenu-directionButton',\r\n clearButton: 'SortMenu-clearButton'\r\n}\r\n\r\nexport interface ISortMenuProps {}\r\n\r\nfunction createSortMenu<T>(): ComponentType<any> {\r\n class SortMenu extends Component {\r\n dataViewContext: IDataViewContext<T> = defaultDataViewContext\r\n constructor(props: ISortMenuProps) {\r\n super(props)\r\n this.dataViewContext = defaultDataViewContext\r\n }\r\n\r\n render() {\r\n return mapDataViewContext((context) => {\r\n this.dataViewContext = context\r\n return (\r\n <Wrapper className={sortMenuClasses.root}>\r\n <Box className={sortMenuClasses.header}>\r\n <Typography variant='subtitle2' sx={{ fontWeight: 600 }}>\r\n Sort By\r\n </Typography>\r\n {this.dataViewContext.filterState.sort && (\r\n <ClearAllButton className={sortMenuClasses.clearButton} onClick={() => this.handleClearSort()} title='Clear sort'>\r\n Clear\r\n </ClearAllButton>\r\n )}\r\n </Box>\r\n {this.renderSortList()}\r\n </Wrapper>\r\n )\r\n })\r\n }\r\n\r\n renderSortList = () => {\r\n const fields: IFilterConfigs<T> = this.dataViewContext.filterBarConfigs.fields || {}\r\n const fieldKeys = Object.keys(fields) as Array<keyof T>\r\n\r\n // Filter only sortable fields (default is true if not specified)\r\n const sortableFields = fieldKeys.filter((fieldKey) => {\r\n const fieldConfig = fields[fieldKey]\r\n return fieldConfig?.sortable !== false // true by default\r\n })\r\n\r\n const currentSort = this.dataViewContext.filterState.sort\r\n\r\n if (sortableFields.length === 0) {\r\n return (\r\n <Box sx={{ p: 2, textAlign: 'center' }}>\r\n <Typography variant='body2' color='text.secondary'>\r\n No sortable fields available\r\n </Typography>\r\n </Box>\r\n )\r\n }\r\n\r\n return (\r\n <ListStyled className={sortMenuClasses.list} disablePadding>\r\n {sortableFields.map((fieldKey) => {\r\n const fieldConfig = fields[fieldKey]\r\n const isActive = currentSort?.field === fieldKey\r\n const currentDirection = isActive ? currentSort.direction : undefined\r\n const sortConfig = mapSortConfigs[currentDirection || 'asc']\r\n\r\n return (\r\n <ListItem key={fieldKey.toString()} className={`${sortMenuClasses.item} ${isActive ? sortMenuClasses.activeItem : ''}`} disablePadding>\r\n <ListItemButton\r\n onClick={() => this.handleFieldClick(fieldKey, currentDirection)}\r\n className={isActive ? 'active' : ''}\r\n // sx={{\r\n // backgroundColor: isActive ? 'rgba(25, 118, 210, 0.08)' : 'transparent',\r\n // '&:hover': {\r\n // backgroundColor: isActive ? 'rgba(25, 118, 210, 0.12)' : 'rgba(0, 0, 0, 0.04)'\r\n // }\r\n // }}\r\n >\r\n <ListItemText\r\n primary={fieldConfig?.label || fieldKey.toString()}\r\n className={sortMenuClasses.itemText}\r\n primaryTypographyProps={{ className: sortMenuClasses.itemText, sx: { fontWeight: isActive ? 600 : 400 } }}\r\n />\r\n {isActive && (\r\n <IconButton\r\n size='small'\r\n className={sortMenuClasses.directionButton}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n this.handleDirectionToggle(fieldKey, currentDirection)\r\n }}\r\n title={`Sort ${sortConfig.title.toLocaleLowerCase()}`}\r\n >\r\n {sortConfig.icon}\r\n </IconButton>\r\n )}\r\n </ListItemButton>\r\n </ListItem>\r\n )\r\n })}\r\n </ListStyled>\r\n )\r\n }\r\n\r\n handleFieldClick = (field: keyof T, currentDirection?: 'asc' | 'desc') => {\r\n const newDirection: 'asc' | 'desc' = currentDirection ? (currentDirection === 'asc' ? 'desc' : 'asc') : 'asc'\r\n const newSort: ISort<T> = { field, direction: newDirection }\r\n\r\n const store = createFilterStore(this.dataViewContext.filterState).changeSort(newSort, { area: 'sortButton' })\r\n\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n handleDirectionToggle = (field: keyof T, currentDirection?: 'asc' | 'desc') => {\r\n if (!currentDirection) return\r\n\r\n const newDirection: 'asc' | 'desc' = currentDirection === 'asc' ? 'desc' : 'asc'\r\n const newSort: ISort<T> = { field, direction: newDirection }\r\n\r\n const store = createFilterStore(this.dataViewContext.filterState).changeSort(newSort, { area: 'sortButton' })\r\n\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n handleClearSort = () => {\r\n const store = createFilterStore(this.dataViewContext.filterState).removeSort({ area: 'sortButton' })\r\n\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n }\r\n\r\n return SortMenu\r\n}\r\n\r\nexport default createSortMenu\r\n\r\nconst Wrapper = styled(Box)(({ theme }) => ({\r\n minWidth: '240px',\r\n maxWidth: '360px',\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: '4px',\r\n overflow: 'hidden',\r\n border: `1px solid ${theme.palette.divider}`,\r\n\r\n [`.${sortMenuClasses.header}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n background: theme.palette.mode === 'dark' ? theme.palette.grey[800] : theme.palette.grey[900],\r\n padding: '8px',\r\n gap: '8px',\r\n '.MuiTypography-root': {\r\n color: theme.palette.common.white,\r\n flex: 1\r\n }\r\n },\r\n\r\n [`.${sortMenuClasses.list}`]: {\r\n maxHeight: '300px',\r\n overflowY: 'auto'\r\n },\r\n\r\n [`.${sortMenuClasses.item}`]: {\r\n '&:not(:last-child)': {\r\n borderBottom: `1px solid ${theme.palette.divider}`\r\n }\r\n },\r\n\r\n [`.${sortMenuClasses.directionButton}`]: {\r\n marginLeft: 'auto',\r\n color: theme.palette.primary.main\r\n },\r\n\r\n [`.${sortMenuClasses.clearButton}`]: {\r\n color: theme.palette.error.main\r\n }\r\n}))\r\n\r\nconst ListStyled = styled(List)(({ theme }) => ({\r\n '.MuiListItemButton-root': {\r\n backgroundColor: 'transparent',\r\n '&:hover': {\r\n backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.04)'\r\n },\r\n\r\n '&.active': {\r\n backgroundColor: theme.palette.mode === 'dark' ? 'rgba(144, 202, 249, 0.08)' : 'rgba(25, 118, 210, 0.08)',\r\n '&:hover': {\r\n backgroundColor: theme.palette.mode === 'dark' ? 'rgba(144, 202, 249, 0.12)' : 'rgba(25, 118, 210, 0.12)'\r\n }\r\n }\r\n }\r\n}))\r\n"],"names":["sortMenuClasses","createSortMenu","SortMenu","props","_this","_classCallCheck","_callSuper","_defineProperty","defaultDataViewContext","fields","dataViewContext","filterBarConfigs","sortableFields","Object","keys","filter","fieldKey","fieldConfig","sortable","currentSort","filterState","sort","length","_jsx","Box","sx","p","textAlign","children","Typography","variant","color","ListStyled","className","disablePadding","map","isActive","field","currentDirection","direction","undefined","sortConfig","mapSortConfigs","ListItem","concat","_jsxs","ListItemButton","onClick","handleFieldClick","ListItemText","primary","label","toString","primaryTypographyProps","fontWeight","IconButton","size","e","stopPropagation","handleDirectionToggle","title","toLocaleLowerCase","icon","newSort","store","createFilterStore","changeSort","area","onFilterStateChange","build","removeSort","_inherits","Component","_createClass","key","value","_this2","this","mapDataViewContext","context","Wrapper","ClearAllButton","handleClearSort","renderSortList","styled","_ref","theme","minWidth","maxWidth","backgroundColor","palette","background","paper","borderRadius","overflow","border","divider","display","alignItems","mode","grey","padding","gap","common","white","flex","maxHeight","overflowY","borderBottom","marginLeft","main","error","List","_ref3"],"mappings":"wjBAOA,IAAMA,EACE,gBADFA,EAEI,kBAFJA,EAGE,gBAHFA,EAIE,gBAJFA,EAKQ,sBALRA,EAMM,oBANNA,EAOa,2BAPbA,EAQS,uBAKf,SAASC,IA4HP,kBAzHE,SAAAC,EAAYC,GAAqB,IAAAC,EAEc,OAFdC,OAAAH,GAC/BE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EAAA,kBAFyBI,GAAsBD,EAAAH,EAAA,kBA2B5C,WACf,IAAMK,EAA4BL,EAAKM,gBAAgBC,iBAAiBF,QAAU,CAAE,EAI9EG,EAHYC,OAAOC,KAAKL,GAGGM,QAAO,SAACC,GACvC,IAAMC,EAAcR,EAAOO,GAC3B,OAAiC,KAA1BC,aAAW,EAAXA,EAAaC,SACtB,IAEMC,EAAcf,EAAKM,gBAAgBU,YAAYC,KAErD,OAA8B,IAA1BT,EAAeU,OAEfC,EAACC,EAAG,CAACC,GAAI,CAAEC,EAAG,EAAGC,UAAW,UAAUC,SACpCL,EAACM,EAAW,CAAAC,QAAQ,QAAQC,MAAM,iBAErBH,SAAA,mCAMjBL,EAACS,GAAWC,UAAWjC,EAAsBkC,gBAAc,EAAAN,SACxDhB,EAAeuB,KAAI,SAACnB,GACnB,IAAMC,EAAcR,EAAOO,GACrBoB,GAAWjB,aAAW,EAAXA,EAAakB,SAAUrB,EAClCsB,EAAmBF,EAAWjB,EAAYoB,eAAYC,EACtDC,EAAaC,EAAeJ,GAAoB,OAEtD,OACEf,EAACoB,EAAmC,CAAAV,aAASW,OAAK5C,EAAoB4C,KAAAA,OAAIR,EAAWpC,EAA6B,IAAMkC,gBACtH,EAAAN,SAAAiB,EAACC,EAAc,CACbC,QAAS,WAAF,OAAQ3C,EAAK4C,iBAAiBhC,EAAUsB,EAAiB,EAChEL,UAAWG,EAAW,SAAW,GAAER,SAAA,CAQnCL,EAAC0B,EACC,CAAAC,SAASjC,aAAAA,EAAAA,EAAakC,QAASnC,EAASoC,WACxCnB,UAAWjC,EACXqD,uBAAwB,CAAEpB,UAAWjC,EAA0ByB,GAAI,CAAE6B,WAAYlB,EAAW,IAAM,QAEnGA,GACCb,EAACgC,EACC,CAAAC,KAAK,QACLvB,UAAWjC,EACX+C,QAAS,SAACU,GACRA,EAAEC,kBACFtD,EAAKuD,sBAAsB3C,EAAUsB,EACtC,EACDsB,MAAK,QAAAhB,OAAUH,EAAWmB,MAAMC,qBAAqBjC,SAEpDa,EAAWqB,WA1BL9C,EAASoC,WAgC3B,SAGN7C,EAAAH,EAAA,oBAEkB,SAACiC,EAAgBC,GAClC,IACMyB,EAAoB,CAAE1B,MAAAA,EAAOE,UADED,GAAyC,QAArBA,EAA6B,OAAkB,OAGlG0B,EAAQC,EAAkB7D,EAAKM,gBAAgBU,aAAa8C,WAAWH,EAAS,CAAEI,KAAM,eAE9F/D,EAAKM,gBAAgB0D,oBAAoBJ,EAAMK,YAChD9D,EAAAH,EAAA,yBAEuB,SAACiC,EAAgBC,GACvC,GAAKA,EAAL,CAEA,IACMyB,EAAoB,CAAE1B,MAAAA,EAAOE,UADuB,QAArBD,EAA6B,OAAS,OAGrE0B,EAAQC,EAAkB7D,EAAKM,gBAAgBU,aAAa8C,WAAWH,EAAS,CAAEI,KAAM,eAE9F/D,EAAKM,gBAAgB0D,oBAAoBJ,EAAMK,QAPxB,KAQxB9D,EAAAH,EAAA,mBAEiB,WAChB,IAAM4D,EAAQC,EAAkB7D,EAAKM,gBAAgBU,aAAakD,WAAW,CAAEH,KAAM,eAErF/D,EAAKM,gBAAgB0D,oBAAoBJ,EAAMK,YAnH/CjE,EAAKM,gBAAkBF,EAAsBJ,CAC/C,CAAC,OAAAmE,EAAArE,EALoBsE,GAKpBC,EAAAvE,EAAA,CAAA,CAAAwE,IAAA,SAAAC,MAED,WAAM,IAAAC,EAAAC,KACJ,OAAOC,GAAmB,SAACC,GAEzB,OADAH,EAAKlE,gBAAkBqE,EAErBlC,EAACmC,EAAQ,CAAA/C,UAAWjC,EAAoB4B,SAAA,CACtCiB,EAACrB,EAAG,CAACS,UAAWjC,EACd4B,SAAA,CAAAL,EAACM,EAAW,CAAAC,QAAQ,YAAYL,GAAI,CAAE6B,WAAY,KAErC1B,SAAA,YACZgD,EAAKlE,gBAAgBU,YAAYC,MAChCE,EAAC0D,EAAe,CAAAhD,UAAWjC,EAA6B+C,QAAS,WAAF,OAAQ6B,EAAKM,iBAAiB,EAAEtB,MAAM,aAEpFhC,SAAA,aAGpBgD,EAAKO,mBAGZ,GACF,IAAC,GAkGL,CAIA,IAAMH,EAAUI,EAAO5D,EAAP4D,EAAY,SAAAC,GAAA,IAAGC,EAAKD,EAALC,MAAK,OAAA/E,EAAAA,EAAAA,EAAAA,EAAAA,EAAA,CAClCgF,SAAU,QACVC,SAAU,QACVC,gBAAiBH,EAAMI,QAAQC,WAAWC,MAC1CC,aAAc,MACdC,SAAU,SACVC,oBAAMnD,OAAe0C,EAAMI,QAAQM,UAAS,IAAApD,OAEvC5C,GAA2B,CAC9BiG,QAAS,OACTC,WAAY,SACZP,WAAmC,SAAvBL,EAAMI,QAAQS,KAAkBb,EAAMI,QAAQU,KAAK,KAAOd,EAAMI,QAAQU,KAAK,KACzFC,QAAS,MACTC,IAAK,MACL,sBAAuB,CACrBvE,MAAOuD,EAAMI,QAAQa,OAAOC,MAC5BC,KAAM,SAET7D,OAEI5C,GAAyB,CAC5B0G,UAAW,QACXC,UAAW,aACZ/D,OAEI5C,GAAyB,CAC5B,qBAAsB,CACpB4G,0BAAYhE,OAAe0C,EAAMI,QAAQM,gBAE5CpD,OAEI5C,GAAoC,CACvC6G,WAAY,OACZ9E,MAAOuD,EAAMI,QAAQxC,QAAQ4D,WAC9BlE,OAEI5C,GAAgC,CACnC+B,MAAOuD,EAAMI,QAAQqB,MAAMD,MAC5B,IAGG9E,EAAaoD,EAAO4B,EAAP5B,EAAa,SAAA6B,GAAA,IAAG3B,EAAK2B,EAAL3B,MAAK,MAAQ,CAC9C,0BAA2B,CACzBG,gBAAiB,cACjB,UAAW,CACTA,gBAAwC,SAAvBH,EAAMI,QAAQS,KAAkB,4BAA8B,uBAGjF,WAAY,CACVV,gBAAwC,SAAvBH,EAAMI,QAAQS,KAAkB,4BAA8B,2BAC/E,UAAW,CACTV,gBAAwC,SAAvBH,EAAMI,QAAQS,KAAkB,4BAA8B,8BAItF"}
|
|
1
|
+
{"version":3,"file":"create.sort-menu.js","sources":["../../../src/data-view/create.sort-menu.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, List, ListItem, ListItemButton, ListItemText, Typography, IconButton, styled, colors } from '@mui/material'\r\nimport { ISort, IFilterConfigs } from './types'\r\nimport { createFilterStore } from './filter-store'\r\nimport { ClearAllButton, mapSortConfigs } from './ui.units'\r\nimport { defaultDataViewContext, IDataViewContext, mapDataViewContext } from './context'\r\n\r\nconst sortMenuClasses = {\r\n root: 'SortMenu-root',\r\n header: 'SortMenu-header',\r\n list: 'SortMenu-list',\r\n item: 'SortMenu-item',\r\n activeItem: 'SortMenu-activeItem',\r\n itemText: 'SortMenu-itemText',\r\n directionButton: 'SortMenu-directionButton',\r\n clearButton: 'SortMenu-clearButton'\r\n}\r\n\r\nexport interface ISortMenuProps {}\r\n\r\nfunction createSortMenu<T>(): ComponentType<any> {\r\n class SortMenu extends Component {\r\n dataViewContext: IDataViewContext<T> = defaultDataViewContext\r\n constructor(props: ISortMenuProps) {\r\n super(props)\r\n this.dataViewContext = defaultDataViewContext\r\n }\r\n\r\n render() {\r\n return mapDataViewContext((context) => {\r\n this.dataViewContext = context\r\n return (\r\n <Wrapper className={sortMenuClasses.root}>\r\n <Box className={sortMenuClasses.header}>\r\n <Typography variant='subtitle2' sx={{ fontWeight: 600 }}>\r\n Sort By\r\n </Typography>\r\n {this.dataViewContext.filterState.sort && (\r\n <ClearAllButton className={sortMenuClasses.clearButton} onClick={() => this.handleClearSort()} title='Clear sort'>\r\n Clear\r\n </ClearAllButton>\r\n )}\r\n </Box>\r\n {this.renderSortList()}\r\n </Wrapper>\r\n )\r\n })\r\n }\r\n\r\n renderSortList = () => {\r\n const fields: IFilterConfigs<T> = this.dataViewContext.filterBarConfigs.fields || {}\r\n const fieldKeys = Object.keys(fields) as Array<keyof T>\r\n\r\n // Filter only sortable fields (default is true if not specified)\r\n const sortableFields = fieldKeys.filter((fieldKey) => {\r\n const fieldConfig = fields[fieldKey]\r\n return fieldConfig?.sortable !== false // true by default\r\n })\r\n\r\n const currentSort = this.dataViewContext.filterState.sort\r\n\r\n if (sortableFields.length === 0) {\r\n return (\r\n <Box sx={{ p: 2, textAlign: 'center' }}>\r\n <Typography variant='body2' color='text.secondary'>\r\n No sortable fields available\r\n </Typography>\r\n </Box>\r\n )\r\n }\r\n\r\n return (\r\n <ListStyled className={sortMenuClasses.list} disablePadding>\r\n {sortableFields.map((fieldKey) => {\r\n const fieldConfig = fields[fieldKey]\r\n const isActive = currentSort?.field === fieldKey\r\n const currentDirection = isActive ? currentSort.direction : undefined\r\n const sortConfig = mapSortConfigs[currentDirection || 'asc']\r\n\r\n return (\r\n <ListItem key={fieldKey.toString()} className={`${sortMenuClasses.item} ${isActive ? sortMenuClasses.activeItem : ''}`} disablePadding>\r\n <ListItemButton\r\n onClick={() => this.handleFieldClick(fieldKey, currentDirection)}\r\n className={isActive ? 'active' : ''}\r\n // sx={{\r\n // backgroundColor: isActive ? 'rgba(25, 118, 210, 0.08)' : 'transparent',\r\n // '&:hover': {\r\n // backgroundColor: isActive ? 'rgba(25, 118, 210, 0.12)' : 'rgba(0, 0, 0, 0.04)'\r\n // }\r\n // }}\r\n >\r\n <ListItemText\r\n primary={fieldConfig?.label || fieldKey.toString()}\r\n className={sortMenuClasses.itemText}\r\n primaryTypographyProps={{ className: sortMenuClasses.itemText, sx: { fontWeight: isActive ? 600 : 400 } }}\r\n />\r\n {isActive && (\r\n <IconButton\r\n size='small'\r\n className={sortMenuClasses.directionButton}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n this.handleDirectionToggle(fieldKey, currentDirection)\r\n }}\r\n title={`Sort ${sortConfig.title.toLocaleLowerCase()}`}\r\n >\r\n {sortConfig.icon}\r\n </IconButton>\r\n )}\r\n </ListItemButton>\r\n </ListItem>\r\n )\r\n })}\r\n </ListStyled>\r\n )\r\n }\r\n\r\n handleFieldClick = (field: keyof T, currentDirection?: 'asc' | 'desc') => {\r\n const newDirection: 'asc' | 'desc' = currentDirection ? (currentDirection === 'asc' ? 'desc' : 'asc') : 'asc'\r\n const newSort: ISort<T> = { field, direction: newDirection }\r\n\r\n const store = createFilterStore(this.dataViewContext.filterState).changeSort(newSort, { area: 'sortButton' })\r\n\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n handleDirectionToggle = (field: keyof T, currentDirection?: 'asc' | 'desc') => {\r\n if (!currentDirection) return\r\n\r\n const newDirection: 'asc' | 'desc' = currentDirection === 'asc' ? 'desc' : 'asc'\r\n const newSort: ISort<T> = { field, direction: newDirection }\r\n\r\n const store = createFilterStore(this.dataViewContext.filterState).changeSort(newSort, { area: 'sortButton' })\r\n\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n handleClearSort = () => {\r\n const store = createFilterStore(this.dataViewContext.filterState).removeSort({ area: 'sortButton' })\r\n\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n }\r\n\r\n return SortMenu\r\n}\r\n\r\nexport default createSortMenu\r\n\r\nconst Wrapper = styled(Box)(({ theme }) => ({\r\n minWidth: '240px',\r\n maxWidth: '360px',\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: '4px',\r\n overflow: 'hidden',\r\n border: `1px solid ${theme.palette.divider}`,\r\n\r\n [`.${sortMenuClasses.header}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n background: theme.palette.mode === 'dark' ? theme.palette.grey[800] : theme.palette.grey[900],\r\n padding: '8px',\r\n gap: '8px',\r\n '.MuiTypography-root': {\r\n color: theme.palette.common.white,\r\n flex: 1\r\n }\r\n },\r\n\r\n [`.${sortMenuClasses.list}`]: {\r\n maxHeight: '300px',\r\n overflowY: 'auto'\r\n },\r\n\r\n [`.${sortMenuClasses.item}`]: {\r\n '&:not(:last-child)': {\r\n borderBottom: `1px solid ${theme.palette.divider}`\r\n }\r\n },\r\n\r\n [`.${sortMenuClasses.directionButton}`]: {\r\n marginLeft: 'auto',\r\n color: theme.palette.primary.main\r\n },\r\n\r\n [`.${sortMenuClasses.clearButton}`]: {\r\n color: theme.palette.error.main\r\n }\r\n}))\r\n\r\nconst ListStyled = styled(List)(({ theme }) => ({\r\n '.MuiListItemButton-root': {\r\n backgroundColor: 'transparent',\r\n '&:hover': {\r\n backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.04)'\r\n },\r\n\r\n '&.active': {\r\n backgroundColor: theme.palette.mode === 'dark' ? 'rgba(144, 202, 249, 0.08)' : 'rgba(25, 118, 210, 0.08)',\r\n '&:hover': {\r\n backgroundColor: theme.palette.mode === 'dark' ? 'rgba(144, 202, 249, 0.12)' : 'rgba(25, 118, 210, 0.12)'\r\n }\r\n }\r\n }\r\n}))\r\n"],"names":["sortMenuClasses","createSortMenu","SortMenu","props","_this","_classCallCheck","_callSuper","_defineProperty","defaultDataViewContext","fields","dataViewContext","filterBarConfigs","sortableFields","Object","keys","filter","fieldKey","fieldConfig","sortable","currentSort","filterState","sort","length","_jsx","Box","sx","p","textAlign","children","Typography","variant","color","ListStyled","className","disablePadding","map","isActive","field","currentDirection","direction","undefined","sortConfig","mapSortConfigs","ListItem","concat","_jsxs","ListItemButton","onClick","handleFieldClick","ListItemText","primary","label","toString","primaryTypographyProps","fontWeight","IconButton","size","e","stopPropagation","handleDirectionToggle","title","toLocaleLowerCase","icon","newSort","store","createFilterStore","changeSort","area","onFilterStateChange","build","removeSort","_inherits","Component","_createClass","key","value","_this2","this","mapDataViewContext","context","Wrapper","ClearAllButton","handleClearSort","renderSortList","styled","_ref","theme","minWidth","maxWidth","backgroundColor","palette","background","paper","borderRadius","overflow","border","divider","display","alignItems","mode","grey","padding","gap","common","white","flex","maxHeight","overflowY","borderBottom","marginLeft","main","error","List","_ref3"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as t,createClass as o,objectSpread2 as e,classCallCheck as i,callSuper as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as r,jsx as s,Fragment as l}from"react/jsx-runtime";import{styled as a,Typography as d}from"@mui/material";import{memo as p,PureComponent as u}from"react";import{createViewModeModule as c,createViewModeList as h}from"./view-mode.content.js";import{EViewMode as v}from"./view-mode.types.js";import{LoadingError as g,LoadingWaiting as m,LoadingNoData as f,LoadingOverlay as k}from"./view-mode.units.js";import y from"./animation-switch.js";function C(a){var C=c(),M=h();return p(function(){function p(t){var o;return i(this,p),(o=n(this,p,[t])).state={currentMode:t.viewMode||v.Module},o}return t(p,u),o(p,[{key:"componentDidUpdate",value:function(t){t.viewMode!==this.props.viewMode&&this.props.viewMode&&this.setState({currentMode:this.props.viewMode})}},{key:"getInternalConfigs",value:function(){var t,o,e,i,n,r,s,l,d,p,u,c,h,v=Object.assign({},null==a||null===(t=a.list)||void 0===t?void 0:t.columns,null===(o=this.props.slots)||void 0===o||null===(o=o.list)||void 0===o?void 0:o.columns),k=Object.assign({},null==a?void 0:a.list,null===(e=this.props.slots)||void 0===e?void 0:e.list,{columns:v});return{NoData:null!==(i=null!==(n=null===(r=this.props.slots)||void 0===r?void 0:r.NoData)&&void 0!==n?n:null==a?void 0:a.NoData)&&void 0!==i?i:f,Skeleton:null!==(s=null!==(l=null===(d=this.props.slots)||void 0===d?void 0:d.Skeleton)&&void 0!==l?l:null==a?void 0:a.Skeleton)&&void 0!==s?s:m,ErrorData:null!==(p=null!==(u=null===(c=this.props.slots)||void 0===c?void 0:c.ErrorData)&&void 0!==u?u:null==a?void 0:a.ErrorData)&&void 0!==p?p:g,listConfigs:k,moduleConfigs:Object.assign({},null==a?void 0:a.module,null===(h=this.props.slots)||void 0===h?void 0:h.module)}}},{key:"getWrapperProps",value:function(){var t;return Object.assign({},null==a?void 0:a.wrapProps,null===(t=this.props.slots)||void 0===t?void 0:t.wrapProps)}},{key:"renderContentByMode",value:function(t){var o=this.getInternalConfigs();switch(t){case v.List:return s(M,{autoHeight:this.props.autoHeight,value:this.props.data,configs:o.listConfigs});case v.Module:return s(C,{autoHeight:this.props.autoHeight,data:this.props.data,configs:o.moduleConfigs});default:return r(d,{variant:"subtitle1",children:["Unsupported view mode: ",String(t)]})}}},{key:"getContentState",value:function(t){var o=this.getInternalConfigs(),e=o.NoData,i=o.ErrorData,n=o.Skeleton;return this.props.error?{key:"error",content:s(i,{error:this.props.error})}:this.props.loading&&0===this.props.data.length&&n?{key:"skeleton",content:s(n,{mode:t})}:0!==this.props.data.length||this.props.loading?this.props.data.length>0?{key:"content-".concat(t,"-").concat(this.props.data.length),content:r(l,{children:[this.props.loading&&s(k,{}),s(y,{autoHeight:this.props.autoHeight,mode:t,moduleNode:this.renderContentByMode(v.Module),listNode:this.renderContentByMode(v.List)})]})}:{key:"loading",content:s(k,{})}:{key:"no-data",content:s(e,{mode:t})}}},{key:"render",value:function(){var t=this.getWrapperProps(),o=this.getContentState(this.state.currentMode),i=o.key,n=o.content;return s(w,e(e({},t),{},{"data-key":i,children:n}))}}])}())}var w=a("div",{shouldForwardProp:function(t){return"color"!==t&&"bgcolor"!==t&&"sx"!==t}})(
|
|
1
|
+
import{inherits as t,createClass as o,objectSpread2 as e,classCallCheck as i,callSuper as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as r,jsx as s,Fragment as l}from"react/jsx-runtime";import{styled as a,Typography as d}from"@mui/material";import{memo as p,PureComponent as u}from"react";import{createViewModeModule as c,createViewModeList as h}from"./view-mode.content.js";import{EViewMode as v}from"./view-mode.types.js";import{LoadingError as g,LoadingWaiting as m,LoadingNoData as f,LoadingOverlay as k}from"./view-mode.units.js";import y from"./animation-switch.js";function C(a){var C=c(),M=h();return p(function(){function p(t){var o;return i(this,p),(o=n(this,p,[t])).state={currentMode:t.viewMode||v.Module},o}return t(p,u),o(p,[{key:"componentDidUpdate",value:function(t){t.viewMode!==this.props.viewMode&&this.props.viewMode&&this.setState({currentMode:this.props.viewMode})}},{key:"getInternalConfigs",value:function(){var t,o,e,i,n,r,s,l,d,p,u,c,h,v=Object.assign({},null==a||null===(t=a.list)||void 0===t?void 0:t.columns,null===(o=this.props.slots)||void 0===o||null===(o=o.list)||void 0===o?void 0:o.columns),k=Object.assign({},null==a?void 0:a.list,null===(e=this.props.slots)||void 0===e?void 0:e.list,{columns:v});return{NoData:null!==(i=null!==(n=null===(r=this.props.slots)||void 0===r?void 0:r.NoData)&&void 0!==n?n:null==a?void 0:a.NoData)&&void 0!==i?i:f,Skeleton:null!==(s=null!==(l=null===(d=this.props.slots)||void 0===d?void 0:d.Skeleton)&&void 0!==l?l:null==a?void 0:a.Skeleton)&&void 0!==s?s:m,ErrorData:null!==(p=null!==(u=null===(c=this.props.slots)||void 0===c?void 0:c.ErrorData)&&void 0!==u?u:null==a?void 0:a.ErrorData)&&void 0!==p?p:g,listConfigs:k,moduleConfigs:Object.assign({},null==a?void 0:a.module,null===(h=this.props.slots)||void 0===h?void 0:h.module)}}},{key:"getWrapperProps",value:function(){var t;return Object.assign({},null==a?void 0:a.wrapProps,null===(t=this.props.slots)||void 0===t?void 0:t.wrapProps)}},{key:"renderContentByMode",value:function(t){var o=this.getInternalConfigs();switch(t){case v.List:return s(M,{autoHeight:this.props.autoHeight,value:this.props.data,configs:o.listConfigs});case v.Module:return s(C,{autoHeight:this.props.autoHeight,data:this.props.data,configs:o.moduleConfigs});default:return r(d,{variant:"subtitle1",children:["Unsupported view mode: ",String(t)]})}}},{key:"getContentState",value:function(t){var o=this.getInternalConfigs(),e=o.NoData,i=o.ErrorData,n=o.Skeleton;return this.props.error?{key:"error",content:s(i,{error:this.props.error})}:this.props.loading&&0===this.props.data.length&&n?{key:"skeleton",content:s(n,{mode:t})}:0!==this.props.data.length||this.props.loading?this.props.data.length>0?{key:"content-".concat(t,"-").concat(this.props.data.length),content:r(l,{children:[this.props.loading&&s(k,{}),s(y,{autoHeight:this.props.autoHeight,mode:t,moduleNode:this.renderContentByMode(v.Module),listNode:this.renderContentByMode(v.List)})]})}:{key:"loading",content:s(k,{})}:{key:"no-data",content:s(e,{mode:t})}}},{key:"render",value:function(){var t=this.getWrapperProps(),o=this.getContentState(this.state.currentMode),i=o.key,n=o.content;return s(w,e(e({},t),{},{"data-key":i,children:n}))}}])}())}var w=a("div",{shouldForwardProp:function(t){return"color"!==t&&"bgcolor"!==t&&"sx"!==t}})(function(t){var o=t.theme;return{position:"relative",display:"flex",flexDirection:"column",height:"100%",minHeight:"100px",flex:1,paddingLeft:o.spacing(2),paddingRight:o.spacing(2),marginLeft:o.spacing(-2),marginRight:o.spacing(-2)}});export{C as createViewMode};
|
|
2
2
|
//# sourceMappingURL=create.view-mode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.view-mode.js","sources":["../../../src/data-view/create.view-mode.tsx"],"sourcesContent":["import { styled, Typography } from '@mui/material'\r\nimport { ComponentType, memo, PureComponent } from 'react'\r\nimport { createViewModeList, createViewModeModule } from './view-mode.content'\r\nimport { EViewMode, IViewModeConfigs, IViewModeValidModel } from './view-mode.types'\r\nimport { LoadingError, LoadingNoData, LoadingOverlay, LoadingWaiting } from './view-mode.units'\r\nimport AnimationSwitch from './animation-switch'\r\n\r\ninterface IViewModeSlots<T extends IViewModeValidModel> extends IViewModeConfigs<T> {}\r\n\r\n/**\r\n * Props for ViewMode component\r\n * @template T - Type extending IViewModeValidModel\r\n */\r\ninterface IViewModeProps<T extends IViewModeValidModel> {\r\n data: T[]\r\n viewMode?: EViewMode\r\n ready?: boolean\r\n autoHeight?: boolean\r\n loading?: boolean\r\n error?: string\r\n slots?: IViewModeSlots<T>\r\n}\r\n\r\nexport function createViewMode<T extends IViewModeValidModel>(configs?: IViewModeConfigs<T>): ComponentType<IViewModeProps<T>> {\r\n // Pre-memoized components for better performance\r\n const MemoizedContentModeModule = createViewModeModule<T>()\r\n const MemoizedContentModeList = createViewModeList<T>()\r\n\r\n type State = {\r\n currentMode: EViewMode\r\n }\r\n\r\n class ViewMode extends PureComponent<IViewModeProps<T>, State> {\r\n constructor(props: IViewModeProps<T>) {\r\n super(props)\r\n this.state = { currentMode: props.viewMode || EViewMode.Module }\r\n }\r\n\r\n componentDidUpdate(prevProps: IViewModeProps<T>) {\r\n if (prevProps.viewMode !== this.props.viewMode && this.props.viewMode) {\r\n this.setState({ currentMode: this.props.viewMode })\r\n }\r\n }\r\n\r\n getInternalConfigs() {\r\n const columns = Object.assign({}, configs?.list?.columns, this.props.slots?.list?.columns)\r\n const listConfigs = Object.assign({}, configs?.list, this.props.slots?.list, { columns })\r\n return {\r\n NoData: this.props.slots?.NoData ?? configs?.NoData ?? LoadingNoData,\r\n Skeleton: this.props.slots?.Skeleton ?? configs?.Skeleton ?? LoadingWaiting,\r\n ErrorData: this.props.slots?.ErrorData ?? configs?.ErrorData ?? LoadingError,\r\n listConfigs,\r\n moduleConfigs: Object.assign({}, configs?.module, this.props.slots?.module)\r\n }\r\n }\r\n\r\n getWrapperProps() {\r\n return Object.assign({}, configs?.wrapProps, this.props.slots?.wrapProps)\r\n }\r\n\r\n renderContentByMode(currentMode: EViewMode) {\r\n const internalConfigs = this.getInternalConfigs()\r\n\r\n switch (currentMode) {\r\n case EViewMode.List:\r\n return <MemoizedContentModeList autoHeight={this.props.autoHeight} value={this.props.data} configs={internalConfigs.listConfigs} />\r\n case EViewMode.Module:\r\n return <MemoizedContentModeModule autoHeight={this.props.autoHeight} data={this.props.data} configs={internalConfigs.moduleConfigs} />\r\n default:\r\n return <Typography variant='subtitle1'>Unsupported view mode: {String(currentMode)}</Typography>\r\n }\r\n }\r\n\r\n getContentState(currentMode: EViewMode) {\r\n const { NoData, ErrorData, Skeleton } = this.getInternalConfigs()\r\n\r\n if (this.props.error) {\r\n return { key: 'error', content: <ErrorData error={this.props.error} /> }\r\n }\r\n\r\n if (this.props.loading && this.props.data.length === 0 && Skeleton) {\r\n return { key: 'skeleton', content: <Skeleton mode={currentMode} /> }\r\n }\r\n\r\n if (this.props.data.length === 0 && !this.props.loading) {\r\n return { key: 'no-data', content: <NoData mode={currentMode} /> }\r\n }\r\n\r\n if (this.props.data.length > 0) {\r\n return {\r\n key: `content-${currentMode}-${this.props.data.length}`,\r\n content: (\r\n <>\r\n {this.props.loading && <LoadingOverlay />}\r\n {/* Use AnimationSwitch to handle crossfade + measurement */}\r\n <AnimationSwitch\r\n autoHeight={this.props.autoHeight}\r\n mode={currentMode}\r\n moduleNode={this.renderContentByMode(EViewMode.Module)}\r\n listNode={this.renderContentByMode(EViewMode.List)}\r\n />\r\n </>\r\n )\r\n }\r\n }\r\n\r\n return { key: 'loading', content: <LoadingOverlay /> }\r\n }\r\n\r\n render() {\r\n const wrapperProps = this.getWrapperProps()\r\n\r\n const { key, content } = this.getContentState(this.state.currentMode)\r\n\r\n return (\r\n <Wrap {...(wrapperProps as any)} data-key={key}>\r\n {content}\r\n </Wrap>\r\n )\r\n }\r\n }\r\n\r\n return memo(ViewMode as unknown as ComponentType<IViewModeProps<T>>)\r\n}\r\n\r\nconst Wrap = styled('div', {\r\n // Only forward specific props to prevent MUI system props from being passed to DOM\r\n shouldForwardProp: (prop) => prop !== 'color' && prop !== 'bgcolor' && prop !== 'sx'\r\n})(({ theme }) => ({\r\n position: 'relative',\r\n // Remove overflow hidden to allow natural animations\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n minHeight: '100px',\r\n flex: 1,\r\n paddingLeft: theme.spacing(2),\r\n paddingRight: theme.spacing(2),\r\n marginLeft: theme.spacing(-2),\r\n marginRight: theme.spacing(-2),\r\n // overflow: 'hidden'\r\n}))\r\n"],"names":["createViewMode","configs","MemoizedContentModeModule","createViewModeModule","MemoizedContentModeList","createViewModeList","memo","ViewMode","props","_this","_classCallCheck","_callSuper","state","currentMode","viewMode","EViewMode","Module","_inherits","PureComponent","_createClass","key","value","prevProps","this","setState","_configs$list","_this$props$slots","_this$props$slots2","_ref","_this$props$slots$NoD","_this$props$slots3","_ref2","_this$props$slots$Ske","_this$props$slots4","_ref3","_this$props$slots$Err","_this$props$slots5","_this$props$slots6","columns","Object","assign","list","slots","listConfigs","NoData","LoadingNoData","Skeleton","LoadingWaiting","ErrorData","LoadingError","moduleConfigs","module","_this$props$slots7","wrapProps","internalConfigs","getInternalConfigs","List","_jsx","autoHeight","data","_jsxs","Typography","variant","children","String","_this$getInternalConf","error","content","loading","length","mode","concat","_Fragment","LoadingOverlay","AnimationSwitch","moduleNode","renderContentByMode","listNode","wrapperProps","getWrapperProps","_this$getContentState","getContentState","Wrap","_objectSpread","styled","shouldForwardProp","prop","_ref4","theme","position","display","flexDirection","height","minHeight","flex","paddingLeft","spacing","paddingRight","marginLeft","marginRight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.view-mode.js","sources":["../../../src/data-view/create.view-mode.tsx"],"sourcesContent":["import { styled, Typography } from '@mui/material'\r\nimport { ComponentType, memo, PureComponent } from 'react'\r\nimport { createViewModeList, createViewModeModule } from './view-mode.content'\r\nimport { EViewMode, IViewModeConfigs, IViewModeValidModel } from './view-mode.types'\r\nimport { LoadingError, LoadingNoData, LoadingOverlay, LoadingWaiting } from './view-mode.units'\r\nimport AnimationSwitch from './animation-switch'\r\n\r\ninterface IViewModeSlots<T extends IViewModeValidModel> extends IViewModeConfigs<T> {}\r\n\r\n/**\r\n * Props for ViewMode component\r\n * @template T - Type extending IViewModeValidModel\r\n */\r\ninterface IViewModeProps<T extends IViewModeValidModel> {\r\n data: T[]\r\n viewMode?: EViewMode\r\n ready?: boolean\r\n autoHeight?: boolean\r\n loading?: boolean\r\n error?: string\r\n slots?: IViewModeSlots<T>\r\n}\r\n\r\nexport function createViewMode<T extends IViewModeValidModel>(configs?: IViewModeConfigs<T>): ComponentType<IViewModeProps<T>> {\r\n // Pre-memoized components for better performance\r\n const MemoizedContentModeModule = createViewModeModule<T>()\r\n const MemoizedContentModeList = createViewModeList<T>()\r\n\r\n type State = {\r\n currentMode: EViewMode\r\n }\r\n\r\n class ViewMode extends PureComponent<IViewModeProps<T>, State> {\r\n constructor(props: IViewModeProps<T>) {\r\n super(props)\r\n this.state = { currentMode: props.viewMode || EViewMode.Module }\r\n }\r\n\r\n componentDidUpdate(prevProps: IViewModeProps<T>) {\r\n if (prevProps.viewMode !== this.props.viewMode && this.props.viewMode) {\r\n this.setState({ currentMode: this.props.viewMode })\r\n }\r\n }\r\n\r\n getInternalConfigs() {\r\n const columns = Object.assign({}, configs?.list?.columns, this.props.slots?.list?.columns)\r\n const listConfigs = Object.assign({}, configs?.list, this.props.slots?.list, { columns })\r\n return {\r\n NoData: this.props.slots?.NoData ?? configs?.NoData ?? LoadingNoData,\r\n Skeleton: this.props.slots?.Skeleton ?? configs?.Skeleton ?? LoadingWaiting,\r\n ErrorData: this.props.slots?.ErrorData ?? configs?.ErrorData ?? LoadingError,\r\n listConfigs,\r\n moduleConfigs: Object.assign({}, configs?.module, this.props.slots?.module)\r\n }\r\n }\r\n\r\n getWrapperProps() {\r\n return Object.assign({}, configs?.wrapProps, this.props.slots?.wrapProps)\r\n }\r\n\r\n renderContentByMode(currentMode: EViewMode) {\r\n const internalConfigs = this.getInternalConfigs()\r\n\r\n switch (currentMode) {\r\n case EViewMode.List:\r\n return <MemoizedContentModeList autoHeight={this.props.autoHeight} value={this.props.data} configs={internalConfigs.listConfigs} />\r\n case EViewMode.Module:\r\n return <MemoizedContentModeModule autoHeight={this.props.autoHeight} data={this.props.data} configs={internalConfigs.moduleConfigs} />\r\n default:\r\n return <Typography variant='subtitle1'>Unsupported view mode: {String(currentMode)}</Typography>\r\n }\r\n }\r\n\r\n getContentState(currentMode: EViewMode) {\r\n const { NoData, ErrorData, Skeleton } = this.getInternalConfigs()\r\n\r\n if (this.props.error) {\r\n return { key: 'error', content: <ErrorData error={this.props.error} /> }\r\n }\r\n\r\n if (this.props.loading && this.props.data.length === 0 && Skeleton) {\r\n return { key: 'skeleton', content: <Skeleton mode={currentMode} /> }\r\n }\r\n\r\n if (this.props.data.length === 0 && !this.props.loading) {\r\n return { key: 'no-data', content: <NoData mode={currentMode} /> }\r\n }\r\n\r\n if (this.props.data.length > 0) {\r\n return {\r\n key: `content-${currentMode}-${this.props.data.length}`,\r\n content: (\r\n <>\r\n {this.props.loading && <LoadingOverlay />}\r\n {/* Use AnimationSwitch to handle crossfade + measurement */}\r\n <AnimationSwitch\r\n autoHeight={this.props.autoHeight}\r\n mode={currentMode}\r\n moduleNode={this.renderContentByMode(EViewMode.Module)}\r\n listNode={this.renderContentByMode(EViewMode.List)}\r\n />\r\n </>\r\n )\r\n }\r\n }\r\n\r\n return { key: 'loading', content: <LoadingOverlay /> }\r\n }\r\n\r\n render() {\r\n const wrapperProps = this.getWrapperProps()\r\n\r\n const { key, content } = this.getContentState(this.state.currentMode)\r\n\r\n return (\r\n <Wrap {...(wrapperProps as any)} data-key={key}>\r\n {content}\r\n </Wrap>\r\n )\r\n }\r\n }\r\n\r\n return memo(ViewMode as unknown as ComponentType<IViewModeProps<T>>)\r\n}\r\n\r\nconst Wrap = styled('div', {\r\n // Only forward specific props to prevent MUI system props from being passed to DOM\r\n shouldForwardProp: (prop) => prop !== 'color' && prop !== 'bgcolor' && prop !== 'sx'\r\n})(({ theme }) => ({\r\n position: 'relative',\r\n // Remove overflow hidden to allow natural animations\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n minHeight: '100px',\r\n flex: 1,\r\n paddingLeft: theme.spacing(2),\r\n paddingRight: theme.spacing(2),\r\n marginLeft: theme.spacing(-2),\r\n marginRight: theme.spacing(-2),\r\n // overflow: 'hidden'\r\n}))\r\n"],"names":["createViewMode","configs","MemoizedContentModeModule","createViewModeModule","MemoizedContentModeList","createViewModeList","memo","ViewMode","props","_this","_classCallCheck","_callSuper","state","currentMode","viewMode","EViewMode","Module","_inherits","PureComponent","_createClass","key","value","prevProps","this","setState","_configs$list","_this$props$slots","_this$props$slots2","_ref","_this$props$slots$NoD","_this$props$slots3","_ref2","_this$props$slots$Ske","_this$props$slots4","_ref3","_this$props$slots$Err","_this$props$slots5","_this$props$slots6","columns","Object","assign","list","slots","listConfigs","NoData","LoadingNoData","Skeleton","LoadingWaiting","ErrorData","LoadingError","moduleConfigs","module","_this$props$slots7","wrapProps","internalConfigs","getInternalConfigs","List","_jsx","autoHeight","data","_jsxs","Typography","variant","children","String","_this$getInternalConf","error","content","loading","length","mode","concat","_Fragment","LoadingOverlay","AnimationSwitch","moduleNode","renderContentByMode","listNode","wrapperProps","getWrapperProps","_this$getContentState","getContentState","Wrap","_objectSpread","styled","shouldForwardProp","prop","_ref4","theme","position","display","flexDirection","height","minHeight","flex","paddingLeft","spacing","paddingRight","marginLeft","marginRight"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createClass as t,classCallCheck as r,defineProperty as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import o from"dayjs";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{createFilterStore as i}from"./filter-store.js";import{createViewMode as a}from"./create.view-mode.js";import{createViewModeButtons as s}from"./view-mode.units.js";import{syncQueryToURL as m,getQueryFromURL as n,getSeedKeyFromURL as l,syncViewModeToURL as c,getViewModeFromURL as u,convertFilterToQueryParam as f}from"./query-param-url.js";import{createConvertFilterToGraphQL as h}from"./convert-filter-to-graphql.js";import{createKeyConverter as p}from"../http-service/graphql/key-converter.js";import{createPaginationBar as v}from"./create.pagination-bar.js";import d from"./create.data-view.js";var y=new(t(
|
|
1
|
+
import{createClass as t,classCallCheck as r,defineProperty as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import o from"dayjs";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{createFilterStore as i}from"./filter-store.js";import{createViewMode as a}from"./create.view-mode.js";import{createViewModeButtons as s}from"./view-mode.units.js";import{syncQueryToURL as m,getQueryFromURL as n,getSeedKeyFromURL as l,syncViewModeToURL as c,getViewModeFromURL as u,convertFilterToQueryParam as f}from"./query-param-url.js";import{createConvertFilterToGraphQL as h}from"./convert-filter-to-graphql.js";import{createKeyConverter as p}from"../http-service/graphql/key-converter.js";import{createPaginationBar as v}from"./create.pagination-bar.js";import d from"./create.data-view.js";var y=new(t(function t(){var y=this;r(this,t),e(this,"createDataView",d),e(this,"createKeyConverter",p),e(this,"createConvertFilterToGraphQL",h),e(this,"createFilterStore",i),e(this,"createPaginationBar",v),e(this,"createViewMode",a),e(this,"createViewModeButtons",s),e(this,"syncQueryToURL",m),e(this,"getQueryFromURL",n),e(this,"getSeedKeyFromURL",l),e(this,"syncViewModeToURL",c),e(this,"getViewModeFromURL",u),e(this,"convertFilterToQueryParam",f),e(this,"formatterDate",function(t,r){var e,i,a=null!==(e=null==r?void 0:r.formatString)&&void 0!==e?e:"MM/DD/YYYY HH:mm",s=null!==(i=null==r?void 0:r.showRelative)&&void 0!==i&&i;try{if(!t)return"";var m=o(t),n=m.format(a);return s?"".concat(n," (").concat(o().to(m),")"):n}catch(t){return""}}),e(this,"valueFormatterDate",function(t){return function(r){return y.formatterDate(r.value,t)}})}));export{y as DinoDataView,y as default};
|
|
2
2
|
//# sourceMappingURL=dino.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dino.js","sources":["../../../src/data-view/dino.tsx"],"sourcesContent":["import { GridValueFormatterParams } from '@mui/x-data-grid'\r\nimport { dayjsCustom } from '../utils'\r\nimport { createFilterStore } from './filter-store'\r\nimport { createViewMode } from './create.view-mode'\r\nimport { createViewModeButtons } from './view-mode.units'\r\nimport { getViewModeFromURL, syncViewModeToURL } from './query-param-url'\r\nimport { createConvertFilterToGraphQL } from './convert-filter-to-graphql'\r\nimport { createKeyConverter } from '../http-service/graphql/key-converter'\r\nimport { convertFilterToQueryParam, getQueryFromURL, getSeedKeyFromURL, syncQueryToURL } from './query-param-url'\r\nimport createPaginationBar from './create.pagination-bar'\r\nimport createDataView from './create.data-view'\r\n\r\nconst formatDateString = 'MM/DD/YYYY HH:mm'\r\n\r\nexport interface IFormatterDateOptions {\r\n formatString?: string\r\n showRelative?: boolean\r\n}\r\n\r\nclass DinoDataViewBase {\r\n createDataView = createDataView\r\n\r\n createKeyConverter = createKeyConverter\r\n\r\n createConvertFilterToGraphQL = createConvertFilterToGraphQL\r\n\r\n createFilterStore = createFilterStore\r\n\r\n createPaginationBar = createPaginationBar\r\n\r\n createViewMode = createViewMode\r\n\r\n createViewModeButtons = createViewModeButtons\r\n\r\n syncQueryToURL = syncQueryToURL\r\n\r\n getQueryFromURL = getQueryFromURL\r\n\r\n getSeedKeyFromURL = getSeedKeyFromURL\r\n\r\n syncViewModeToURL = syncViewModeToURL\r\n\r\n getViewModeFromURL = getViewModeFromURL\r\n\r\n convertFilterToQueryParam = convertFilterToQueryParam\r\n\r\n //#region Value Formatter\r\n formatterDate = (value: any, options?: IFormatterDateOptions): string => {\r\n const f = options?.formatString ?? formatDateString\r\n const showRelative = options?.showRelative ?? false\r\n try {\r\n if (!value) return ''\r\n\r\n const date = dayjsCustom(value)\r\n const formatted = date.format(f)\r\n\r\n return showRelative ? `${formatted} (${dayjsCustom().to(date)})` : formatted\r\n } catch (error) {\r\n return ''\r\n }\r\n }\r\n\r\n valueFormatterDate = (options?: IFormatterDateOptions) => {\r\n return (params: GridValueFormatterParams<any>) => this.formatterDate(params.value, options)\r\n }\r\n //#endregion\r\n}\r\nexport const DinoDataView = new DinoDataViewBase()\r\nexport default DinoDataView\r\n"],"names":["DinoDataView","_createClass","DinoDataViewBase","_this","this","_classCallCheck","_defineProperty","createDataView","createKeyConverter","createConvertFilterToGraphQL","createFilterStore","createPaginationBar","createViewMode","createViewModeButtons","syncQueryToURL","getQueryFromURL","getSeedKeyFromURL","syncViewModeToURL","getViewModeFromURL","convertFilterToQueryParam","value","options","_options$formatString","_options$showRelative","f","formatString","showRelative","date","dayjsCustom","formatted","format","concat","to","error","params","formatterDate"],"mappings":"oyBAYA,IAuDaA,EAAe,IAhDNC,
|
|
1
|
+
{"version":3,"file":"dino.js","sources":["../../../src/data-view/dino.tsx"],"sourcesContent":["import { GridValueFormatterParams } from '@mui/x-data-grid'\r\nimport { dayjsCustom } from '../utils'\r\nimport { createFilterStore } from './filter-store'\r\nimport { createViewMode } from './create.view-mode'\r\nimport { createViewModeButtons } from './view-mode.units'\r\nimport { getViewModeFromURL, syncViewModeToURL } from './query-param-url'\r\nimport { createConvertFilterToGraphQL } from './convert-filter-to-graphql'\r\nimport { createKeyConverter } from '../http-service/graphql/key-converter'\r\nimport { convertFilterToQueryParam, getQueryFromURL, getSeedKeyFromURL, syncQueryToURL } from './query-param-url'\r\nimport createPaginationBar from './create.pagination-bar'\r\nimport createDataView from './create.data-view'\r\n\r\nconst formatDateString = 'MM/DD/YYYY HH:mm'\r\n\r\nexport interface IFormatterDateOptions {\r\n formatString?: string\r\n showRelative?: boolean\r\n}\r\n\r\nclass DinoDataViewBase {\r\n createDataView = createDataView\r\n\r\n createKeyConverter = createKeyConverter\r\n\r\n createConvertFilterToGraphQL = createConvertFilterToGraphQL\r\n\r\n createFilterStore = createFilterStore\r\n\r\n createPaginationBar = createPaginationBar\r\n\r\n createViewMode = createViewMode\r\n\r\n createViewModeButtons = createViewModeButtons\r\n\r\n syncQueryToURL = syncQueryToURL\r\n\r\n getQueryFromURL = getQueryFromURL\r\n\r\n getSeedKeyFromURL = getSeedKeyFromURL\r\n\r\n syncViewModeToURL = syncViewModeToURL\r\n\r\n getViewModeFromURL = getViewModeFromURL\r\n\r\n convertFilterToQueryParam = convertFilterToQueryParam\r\n\r\n //#region Value Formatter\r\n formatterDate = (value: any, options?: IFormatterDateOptions): string => {\r\n const f = options?.formatString ?? formatDateString\r\n const showRelative = options?.showRelative ?? false\r\n try {\r\n if (!value) return ''\r\n\r\n const date = dayjsCustom(value)\r\n const formatted = date.format(f)\r\n\r\n return showRelative ? `${formatted} (${dayjsCustom().to(date)})` : formatted\r\n } catch (error) {\r\n return ''\r\n }\r\n }\r\n\r\n valueFormatterDate = (options?: IFormatterDateOptions) => {\r\n return (params: GridValueFormatterParams<any>) => this.formatterDate(params.value, options)\r\n }\r\n //#endregion\r\n}\r\nexport const DinoDataView = new DinoDataViewBase()\r\nexport default DinoDataView\r\n"],"names":["DinoDataView","_createClass","DinoDataViewBase","_this","this","_classCallCheck","_defineProperty","createDataView","createKeyConverter","createConvertFilterToGraphQL","createFilterStore","createPaginationBar","createViewMode","createViewModeButtons","syncQueryToURL","getQueryFromURL","getSeedKeyFromURL","syncViewModeToURL","getViewModeFromURL","convertFilterToQueryParam","value","options","_options$formatString","_options$showRelative","f","formatString","showRelative","date","dayjsCustom","formatted","format","concat","to","error","params","formatterDate"],"mappings":"oyBAYA,IAuDaA,EAAe,IAhDNC,EAAA,SAAAC,IAAA,IAAAC,EAAAC,KAAAC,OAAAH,GAAAI,wBACHC,GAAcD,4BAEVE,GAAkBF,sCAERG,GAA4BH,2BAEvCI,GAAiBJ,6BAEfK,GAAmBL,wBAExBM,GAAcN,+BAEPO,GAAqBP,wBAE5BQ,GAAcR,yBAEbS,GAAeT,2BAEbU,GAAiBV,2BAEjBW,GAAiBX,4BAEhBY,GAAkBZ,mCAEXa,GAE5Bb,EACgBF,KAAA,gBAAA,SAACgB,EAAYC,GAA2C,IAAAC,EAAAC,EAChEC,EAAyBF,QAAxBA,EAAGD,aAAO,EAAPA,EAASI,oBAAYH,IAAAA,EAAAA,EApCV,mBAqCfI,EAAoCH,QAAxBA,EAAGF,aAAO,EAAPA,EAASK,oBAAYH,IAAAA,GAAAA,EAC1C,IACE,IAAKH,EAAO,MAAO,GAEnB,IAAMO,EAAOC,EAAYR,GACnBS,EAAYF,EAAKG,OAAON,GAE9B,OAAOE,EAAYK,GAAAA,OAAMF,QAASE,OAAKH,IAAcI,GAAGL,QAAWE,CACpE,CAAC,MAAOI,GACP,MAAO,EACR,IACF3B,EAAAF,KAAA,qBAEoB,SAACiB,GACpB,OAAO,SAACa,GAAqC,OAAK/B,EAAKgC,cAAcD,EAAOd,MAAOC,EAAQ,GAC5F"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createClass as t,objectSpread2 as e,toConsumableArray as i,defineProperty as a,objectWithoutProperties as s,toPropertyKey as r,classCallCheck as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import"dayjs";import"../utils/dayjs-config.js";import{QueryParam as o}from"../utils/query-param.js";var h=function(){return t(
|
|
1
|
+
import{createClass as t,objectSpread2 as e,toConsumableArray as i,defineProperty as a,objectWithoutProperties as s,toPropertyKey as r,classCallCheck as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import"dayjs";import"../utils/dayjs-config.js";import{QueryParam as o}from"../utils/query-param.js";var h=function(){return t(function t(){var i=this,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;n(this,t),a(this,"converToQueryParam",function(t){var e=i.extractFilter();return t+o.stringify({filter:JSON.stringify(e)})});var h=e({},s);null!=h&&h.details&&delete h.details,this._state=h,this._defaultFilter=r},[{key:"state",get:function(){return e({},this._state)}},{key:"addFilterItem",value:function(t,s,r){var n,o,h=null!==(n=null===(o=this._state.filter)||void 0===o?void 0:o[t])&&void 0!==n?n:[];if(h.some(function(t){return t.value===s.value}))this._state=e(e({},this._state),{},{details:e(e({},r),{},{action:"add",reason:"filter",isChanged:!1})});else{var u=[].concat(i(h),[s]),l=e(e({},this._state.filter),{},a({},t,u));this._state=e(e({},this._state),{},{filter:l,details:e(e({},r),{},{action:"add",isChanged:!0})})}return this}},{key:"removeFilterField",value:function(t,i){var a=this._state.filter;if(a&&a[t]&&a[t].length>0){a[t];var n=s(a,[t].map(r)),o=Object.keys(n).length>0;this._state=e(e({},this._state),{},{filter:o?n:void 0,details:e(e({},i),{},{action:"remove",reason:"filter",isChanged:!0})})}return this}},{key:"removeFilterItem",value:function(t,i,n){var o=this._state.filter,h=e({action:"remove",reason:"filter"},n);if(!o||!o[t]||0===o[t].length)return this._state=e(e({},this._state),{},{details:e(e({},h),{},{isChanged:!1})}),this;var u=o[t],l=u.findIndex(function(t){return t.value===i});if(-1===l)return this._state=e(e({},this._state),{},{details:e(e({},h),{},{isChanged:!1})}),this;var c=u.filter(function(t,e){return e!==l});if(0===c.length){o[t];var d=s(o,[t].map(r)),v=Object.keys(d).length>0;this._state=e(e({},this._state),{},{filter:v?d:void 0,details:e(e({},h),{},{isChanged:!0})})}else{var f=e(e({},o),{},a({},t,c));this._state=e(e({},this._state),{},{filter:f,details:e(e({},h),{},{isChanged:!0})})}return this}},{key:"updateFilter",value:function(t,i){return this._state=e(e({},this._state),{},{filter:t,details:e(e({},i),{},{action:"change",reason:"filter",isChanged:!0})}),this}},{key:"addQuickSearch",value:function(t,a){var s,r=null!==(s=this._state.quickSearch)&&void 0!==s?s:[],n=null!=t?t:[],o=[].concat(i(Array.isArray(r)?r:[r]),i(Array.isArray(n)?n:[n])),h=Array.from(new Set(o)),u=new Set(Array.isArray(r)?r:[r]),l=h.length!==u.size||h.some(function(t){return!u.has(t)});return l&&(this._state=e(e({},this._state),{},{quickSearch:h,details:e(e({},a),{},{action:"add",reason:"quickSearch",isChanged:l})})),this}},{key:"removeQuickSearch",value:function(t){return this._state=e(e({},this._state),{},{quickSearch:void 0,details:e(e({},t),{},{action:"remove",reason:"quickSearch",isChanged:!0})}),this}},{key:"removeQuickSearchItem",value:function(t,i){var a=this._state.quickSearch,s=e({action:"remove",reason:"quickSearch"},i);if(!a)return this._state=e(e({},this._state),{},{details:e(e({},s),{},{isChanged:!1})}),this;var r=Array.isArray(a)?a:[a];if(-1===r.indexOf(t))return this._state=e(e({},this._state),{},{details:e(e({},s),{},{isChanged:!1})}),this;var n=r.filter(function(e){return e!==t});return 0===n.length?this._state=e(e({},this._state),{},{quickSearch:void 0,details:e(e({},s),{},{isChanged:!0})}):this._state=e(e({},this._state),{},{quickSearch:1===n.length?n[0]:n,details:e(e({},s),{},{isChanged:!0})}),this}},{key:"updateSearchInput",value:function(t){return this._state=e(e({},this._state),{},{quickSearch:t,details:{reason:"quickSearch",area:"input",action:"change",isChanged:!0}}),this}},{key:"changePagination",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"filterButton"};return this._state=e(e({},this._state),{},{pagination:t,details:e(e({},i),{},{action:"change",reason:"pagination",isChanged:!0})}),this}},{key:"removePagination",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"filterButton"};return this._state=e(e({},this._state),{},{pagination:void 0,details:e(e({},t),{},{action:"remove",reason:"pagination",isChanged:!0})}),this}},{key:"changeSort",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"sortButton"};return this._state=e(e({},this._state),{},{sort:t,details:e(e({},i),{},{action:"change",reason:"sort"})}),this}},{key:"removeSort",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"sortButton"};return this._state=e(e({},this._state),{},{sort:void 0,details:e(e({},t),{},{action:"remove",reason:"sort"})}),this}},{key:"toggleSortDirection",value:function(t){var i=this._state.sort;if(!i)return this;var a=e(e({},i),{},{direction:"asc"===i.direction?"desc":"asc"});return this._state=e(e({},this._state),{},{sort:a,details:e(e({},t),{},{action:"change",reason:"sort"})}),this}},{key:"updateState",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"filterButton"};return this._state=e(e(e({},this._state),t),{},{details:e(e({},i),{},{action:"change"})}),this}},{key:"reset",value:function(){return this._state=e(e({},this._defaultFilter),{},{details:{action:"reset",isChanged:!0}}),this}},{key:"resetFilter",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"filterButton"};return this._state=e(e({},this._state),{},{filter:void 0,details:e({action:"reset",reason:"filter"},t)}),this}},{key:"resetQuickSearch",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"input"};return this._state=e(e({},this._state),{},{quickSearch:void 0,details:e({action:"reset",reason:"quickSearch"},t)}),this}},{key:"resetPagination",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{reason:"pagination"};return this._state=e(e({},this._state),{},{pagination:void 0,details:e({action:"reset",reason:"pagination"},t)}),this}},{key:"resetSort",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{reason:"sort"};return this._state=e(e({},this._state),{},{sort:void 0,details:e({action:"reset",reason:"sort"},t)}),this}},{key:"isPaginationEqualToDefault",value:function(){var t,e=this._state.pagination,i=null===(t=this._defaultFilter)||void 0===t?void 0:t.pagination;return!e&&!i||!(!e||!i)&&(e.page===i.page&&e.pageSize===i.pageSize)}},{key:"isSortEqualToDefault",value:function(){var t,e=this._state.sort,i=null===(t=this._defaultFilter)||void 0===t?void 0:t.sort;return!e&&!i||!(!e||!i)&&(e.field===i.field&&e.direction===i.direction)}},{key:"extractFilter",value:function(){var t={};return this._state.filter&&(t.filter=this._state.filter),this._state.quickSearch&&(t.quickSearch=this._state.quickSearch),this._state.pagination&&!this.isPaginationEqualToDefault()&&(t.pagination=this._state.pagination),this._state.sort&&!this.isSortEqualToDefault()&&(t.sort=this._state.sort),t}},{key:"countFilterItems",value:function(){var t=this._state.filter;return t?Object.values(t).reduce(function(t,e){return t+(Array.isArray(e)?e.length:0)},0):0}},{key:"hasFilter",value:function(){return!!this._state.filter&&Object.keys(this._state.filter).length>0}},{key:"hasQuickSearch",value:function(){return!!this._state.quickSearch}},{key:"hasPagination",value:function(){return!this.isPaginationEqualToDefault()&&!!this._state.pagination}},{key:"hasSort",value:function(){return!this.isSortEqualToDefault()&&!!this._state.sort}},{key:"isEmpty",value:function(){return!(this.hasFilter()||this.hasQuickSearch()||this.hasPagination()||this.hasSort())}},{key:"build",value:function(){return e({},this._state)}}])}();function u(t,e){return new h(t,e)}export{h as FilterStore,u as createFilterStore,h as default};
|
|
2
2
|
//# sourceMappingURL=filter-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-store.js","sources":["../../../src/data-view/filter-store.ts"],"sourcesContent":["import { QueryParam } from '../utils'\r\nimport { IFilterState, IFilterMap, IPagination, ISort, IFilterChangeDetails, IFilterItem, SingleOrArray } from './types'\r\n\r\nexport class FilterStore<T> {\r\n private _state: IFilterState<T>\r\n private _defaultFilter: IFilterState<T> | undefined\r\n\r\n constructor(initialState: IFilterState<T> = {}, defaultFilter?: IFilterState<T>) {\r\n const obj = { ...initialState }\r\n if (obj?.details) delete obj.details // Ensure details are not included in the initial state\r\n this._state = obj\r\n this._defaultFilter = defaultFilter\r\n }\r\n\r\n // Static factory method\r\n // static initialize<T>(filterState: IFilterState<T>, defaultFilter?: IFilterState<T>): FilterStore<T> {\r\n // if (filterState?.details) delete filterState.details // Ensure details are not included in the initial state\r\n // return new FilterStore(filterState, defaultFilter)\r\n // }\r\n\r\n // Getter for current state\r\n get state(): IFilterState<T> {\r\n return { ...this._state }\r\n }\r\n\r\n // Filter operations\r\n addFilterItem(field: keyof T, filterItem: IFilterItem, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFieldItems = this._state.filter?.[field] ?? []\r\n\r\n // Check if item already exists to avoid duplicates\r\n const itemExists = existingFieldItems.some((item) => item.value === filterItem.value)\r\n\r\n if (!itemExists) {\r\n const newFieldItems = [...existingFieldItems, filterItem]\r\n const updatedFilter = { ...this._state.filter, [field]: newFieldItems } as IFilterMap<T>\r\n\r\n this._state = { ...this._state, filter: updatedFilter, details: { ...details, action: 'add', isChanged: true } }\r\n } else {\r\n // If item already exists, mark as not changed\r\n this._state = { ...this._state, details: { ...details, action: 'add', reason: 'filter', isChanged: false } }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeFilterField(field: keyof T, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFilter = this._state.filter\r\n\r\n // Check if field exists and has items\r\n const fieldExists = existingFilter && existingFilter[field] && existingFilter[field]!.length > 0\r\n\r\n if (fieldExists) {\r\n // Create new filter without the specified field\r\n const { [field]: removedField, ...remainingFilter } = existingFilter!\r\n\r\n // Check if there are any remaining fields\r\n const hasRemainingFields = Object.keys(remainingFilter).length > 0\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: hasRemainingFields ? (remainingFilter as IFilterMap<T>) : undefined,\r\n details: { ...details, action: 'remove', reason: 'filter', isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeFilterItem(field: keyof T, value: string, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFilter = this._state.filter\r\n const defaultDetails: IFilterChangeDetails = { action: 'remove', reason: 'filter', ...details }\r\n\r\n // Check if field exists and has items\r\n if (!existingFilter || !existingFilter[field] || existingFilter[field]!.length === 0) {\r\n // Field doesn't exist or is empty, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n const fieldItems = existingFilter[field]!\r\n\r\n // Find the item to remove\r\n const itemIndex = fieldItems.findIndex((item) => item.value === value)\r\n\r\n if (itemIndex === -1) {\r\n // Item not found, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Remove the specific item\r\n const updatedFieldItems = fieldItems.filter((_, index) => index !== itemIndex)\r\n\r\n // If no items left in the field, remove the field entirely\r\n if (updatedFieldItems.length === 0) {\r\n const { [field]: removedField, ...remainingFilter } = existingFilter\r\n const hasRemainingFields = Object.keys(remainingFilter).length > 0\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: hasRemainingFields ? (remainingFilter as IFilterMap<T>) : undefined,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n } else {\r\n // Update the field with remaining items\r\n const updatedFilter = { ...existingFilter, [field]: updatedFieldItems } as IFilterMap<T>\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: updatedFilter,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n updateFilter(filter?: IFilterMap<T>, details?: IFilterChangeDetails) {\r\n this._state = { ...this._state, filter, details: { ...details, action: 'change', reason: 'filter', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Quick search operations\r\n addQuickSearch(value?: SingleOrArray<string>, details?: IFilterChangeDetails): FilterStore<T> {\r\n const currentValues = this._state.quickSearch ?? []\r\n const newValues = value ?? []\r\n\r\n // Merge current and new values\r\n const allValues = [...(Array.isArray(currentValues) ? currentValues : [currentValues]), ...(Array.isArray(newValues) ? newValues : [newValues])]\r\n\r\n // Remove duplicates\r\n const uniqueValues = Array.from(new Set(allValues))\r\n\r\n // Check if changed\r\n const currentSet = new Set(Array.isArray(currentValues) ? currentValues : [currentValues])\r\n const isChanged = uniqueValues.length !== currentSet.size || uniqueValues.some((val) => !currentSet.has(val))\r\n\r\n if (isChanged) {\r\n this._state = { ...this._state, quickSearch: uniqueValues, details: { ...details, action: 'add', reason: 'quickSearch', isChanged } }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeQuickSearch(details?: IFilterChangeDetails): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch: undefined, details: { ...details, action: 'remove', reason: 'quickSearch', isChanged: true } }\r\n return this\r\n }\r\n\r\n removeQuickSearchItem(value: string, details?: IFilterChangeDetails): FilterStore<T> {\r\n const currentValues = this._state.quickSearch\r\n const defaultDetails: IFilterChangeDetails = { action: 'remove', reason: 'quickSearch', ...details }\r\n\r\n // Check if quickSearch exists and has values\r\n if (!currentValues) {\r\n // No quickSearch to remove from, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Convert to array for consistent handling\r\n const valuesArray = Array.isArray(currentValues) ? currentValues : [currentValues]\r\n\r\n // Check if the value exists\r\n const valueIndex = valuesArray.indexOf(value)\r\n\r\n if (valueIndex === -1) {\r\n // Value not found, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Remove the specific value\r\n const updatedValues = valuesArray.filter((val) => val !== value)\r\n\r\n // If no values left, remove quickSearch entirely\r\n if (updatedValues.length === 0) {\r\n this._state = {\r\n ...this._state,\r\n quickSearch: undefined,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n } else {\r\n // Update with remaining values\r\n this._state = {\r\n ...this._state,\r\n quickSearch: updatedValues.length === 1 ? updatedValues[0] : updatedValues,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n updateSearchInput(quickSearch: SingleOrArray<string>): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch, details: { reason: 'quickSearch', area: 'input', action: 'change', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Pagination operations\r\n changePagination(pagination: IPagination, details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination, details: { ...details, action: 'change', reason: 'pagination', isChanged: true } }\r\n return this\r\n }\r\n\r\n removePagination(details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination: undefined, details: { ...details, action: 'remove', reason: 'pagination', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Sort operations\r\n changeSort(sort: ISort<T>, details: IFilterChangeDetails = { area: 'sortButton' }): FilterStore<T> {\r\n this._state = { ...this._state, sort, details: { ...details, action: 'change', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n removeSort(details: IFilterChangeDetails = { area: 'sortButton' }): FilterStore<T> {\r\n this._state = { ...this._state, sort: undefined, details: { ...details, action: 'remove', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n toggleSortDirection(details: IFilterChangeDetails): FilterStore<T> {\r\n const currentSort = this._state.sort\r\n if (!currentSort) return this\r\n const finalSort: ISort<T> = { ...currentSort, direction: currentSort.direction === 'asc' ? 'desc' : 'asc' }\r\n this._state = { ...this._state, sort: finalSort, details: { ...details, action: 'change', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n // Batch operations\r\n updateState(updates: Partial<IFilterState<T>>, details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, ...updates, details: { ...details, action: 'change' } }\r\n return this\r\n }\r\n\r\n // Reset operations\r\n reset(): FilterStore<T> {\r\n this._state = { ...this._defaultFilter, details: { action: 'reset', isChanged: true } }\r\n return this\r\n }\r\n\r\n resetFilter(details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, filter: undefined, details: { action: 'reset', reason: 'filter', ...details } }\r\n return this\r\n }\r\n\r\n resetQuickSearch(details: IFilterChangeDetails = { area: 'input' }): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch: undefined, details: { action: 'reset', reason: 'quickSearch', ...details } }\r\n return this\r\n }\r\n\r\n resetPagination(details: IFilterChangeDetails = { reason: 'pagination' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination: undefined, details: { action: 'reset', reason: 'pagination', ...details } }\r\n return this\r\n }\r\n\r\n resetSort(details: IFilterChangeDetails = { reason: 'sort' }): FilterStore<T> {\r\n this._state = { ...this._state, sort: undefined, details: { action: 'reset', reason: 'sort', ...details } }\r\n return this\r\n }\r\n\r\n // Utility methods\r\n private isPaginationEqualToDefault(): boolean {\r\n const curentVal = this._state.pagination\r\n const defaultVal = this._defaultFilter?.pagination\r\n\r\n if (!curentVal && !defaultVal) return true\r\n if (!curentVal || !defaultVal) return false\r\n\r\n return curentVal.page === defaultVal.page && curentVal.pageSize === defaultVal.pageSize\r\n }\r\n\r\n private isSortEqualToDefault(): boolean {\r\n const currentVal = this._state.sort\r\n const defaultVal = this._defaultFilter?.sort\r\n\r\n if (!currentVal && !defaultVal) return true\r\n if (!currentVal || !defaultVal) return false\r\n\r\n return currentVal.field === defaultVal.field && currentVal.direction === defaultVal.direction\r\n }\r\n\r\n extractFilter(): IFilterState<T> {\r\n const result: IFilterState<T> = {}\r\n\r\n // Include filter if it exists\r\n if (this._state.filter) {\r\n result.filter = this._state.filter\r\n }\r\n\r\n // Include quickSearch if it exists\r\n if (this._state.quickSearch) {\r\n result.quickSearch = this._state.quickSearch\r\n }\r\n\r\n // Include pagination only if it's different from default\r\n if (this._state.pagination && !this.isPaginationEqualToDefault()) {\r\n result.pagination = this._state.pagination\r\n }\r\n\r\n // Include sort only if it's different from default\r\n if (this._state.sort && !this.isSortEqualToDefault()) {\r\n result.sort = this._state.sort\r\n }\r\n\r\n return result\r\n }\r\n\r\n countFilterItems(): number {\r\n const filter = this._state.filter\r\n if (!filter) return 0\r\n\r\n return Object.values(filter).reduce<number>((count, items) => {\r\n // If items is an array and return its length, otherwise return 0\r\n return count + (Array.isArray(items) ? items.length : 0)\r\n }, 0)\r\n }\r\n\r\n hasFilter(): boolean {\r\n return !!this._state.filter && Object.keys(this._state.filter).length > 0\r\n }\r\n\r\n hasQuickSearch(): boolean {\r\n return !!this._state.quickSearch\r\n }\r\n\r\n hasPagination(): boolean {\r\n if (this.isPaginationEqualToDefault()) return false\r\n return !!this._state.pagination\r\n }\r\n\r\n hasSort(): boolean {\r\n if (this.isSortEqualToDefault()) return false\r\n return !!this._state.sort\r\n }\r\n\r\n isEmpty(): boolean {\r\n return !this.hasFilter() && !this.hasQuickSearch() && !this.hasPagination() && !this.hasSort()\r\n }\r\n\r\n converToQueryParam = (base: string) => {\r\n const extractFilter = this.extractFilter()\r\n const queryString = QueryParam.stringify({ filter: JSON.stringify(extractFilter) })\r\n return base + queryString\r\n }\r\n\r\n // Build the final state\r\n build(): IFilterState<T> {\r\n return { ...this._state }\r\n }\r\n}\r\nexport default FilterStore\r\n\r\nexport function createFilterStore<T>(filterState: IFilterState<T>, defaultFilter?: IFilterState<T>): FilterStore<T> {\r\n return new FilterStore(filterState, defaultFilter)\r\n}\r\n"],"names":["FilterStore","_createClass","_this","this","initialState","arguments","length","undefined","defaultFilter","_classCallCheck","_defineProperty","base","extractFilter","QueryParam","stringify","filter","JSON","obj","_objectSpread","details","_state","_defaultFilter","key","get","value","field","filterItem","_this$_state$filter$f","_this$_state$filter","existingFieldItems","some","item","action","reason","isChanged","newFieldItems","concat","_toConsumableArray","updatedFilter","existingFilter","remainingFilter","_objectWithoutProperties","map","_toPropertyKey","hasRemainingFields","Object","keys","defaultDetails","fieldItems","itemIndex","findIndex","updatedFieldItems","_","index","_this$_state$quickSea","currentValues","quickSearch","newValues","allValues","Array","isArray","uniqueValues","from","Set","currentSet","size","val","has","valuesArray","indexOf","updatedValues","area","pagination","sort","currentSort","finalSort","direction","updates","_this$_defaultFilter","curentVal","defaultVal","page","pageSize","_this$_defaultFilter2","currentVal","result","isPaginationEqualToDefault","isSortEqualToDefault","values","reduce","count","items","hasFilter","hasQuickSearch","hasPagination","hasSort","createFilterStore","filterState"],"mappings":"gTAGA,IAAaA,EAAW,WAiBtB,OAAAC,GAbA,SAAAD,IAA+E,IAAAE,EAAAC,KAAnEC,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAgC,CAAE,EAAEG,EAA+BH,UAAAC,OAAAD,EAAAA,kBAAAE,EAAAE,OAAAT,GAAAU,EAAAP,KAAA,sBA6U1D,SAACQ,GACpB,IAAMC,EAAgBV,EAAKU,gBAE3B,OAAOD,EADaE,EAAWC,UAAU,CAAEC,OAAQC,KAAKF,UAAUF,QA9UlE,IAAMK,EAAGC,EAAA,CAAA,EAAQd,GACba,SAAAA,EAAKE,gBAAgBF,EAAIE,QAC7BhB,KAAKiB,OAASH,EACdd,KAAKkB,eAAiBb,CACxB,GAQA,CAAA,CAAAc,IAAA,QAAAC,IACA,WACE,OAAAL,EAAA,CAAA,EAAYf,KAAKiB,OACnB,GAEA,CAAAE,IAAA,gBAAAE,MACA,SAAcC,EAAgBC,EAAyBP,GAA8B,IAAAQ,EAAAC,EAC7EC,UAAkBF,UAAAC,EAAGzB,KAAKiB,OAAOL,cAAM,IAAAa,OAAA,EAAlBA,EAAqBH,UAAM,IAAAE,EAAAA,EAAI,GAK1D,GAFmBE,EAAmBC,MAAK,SAACC,GAAI,OAAKA,EAAKP,QAAUE,EAAWF,SAS7ErB,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAED,QAAOD,EAAAA,KAAOC,GAAO,CAAA,EAAA,CAAEa,OAAQ,MAAOC,OAAQ,SAAUC,WAAW,UAPpF,CACf,IAAMC,KAAaC,OAAAC,EAAOR,GAAoBH,CAAAA,IACxCY,EAAapB,EAAAA,KAAQf,KAAKiB,OAAOL,QAAML,CAAAA,EAAAA,KAAGe,EAAQU,IAExDhC,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAEL,OAAQuB,EAAenB,QAAOD,EAAAA,KAAOC,GAAO,CAAA,EAAA,CAAEa,OAAQ,MAAOE,WAAW,KACzG,CAKD,OAAO/B,IACT,GAAC,CAAAmB,IAAA,oBAAAE,MAED,SAAkBC,EAAgBN,GAChC,IAAMoB,EAAiBpC,KAAKiB,OAAOL,OAKnC,GAFoBwB,GAAkBA,EAAed,IAAUc,EAAed,GAAQnB,OAAS,EAE9E,CAEuCiC,EAA7Cd,OAAyBe,EAAeC,EAAKF,GAA7Cd,GAAKiB,IAAAC,IAGRC,EAAqBC,OAAOC,KAAKN,GAAiBlC,OAAS,EAEjEH,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EACNf,KAAKiB,QAAM,GAAA,CACdL,OAAQ6B,EAAsBJ,OAAoCjC,EAClEY,QAAOD,EAAAA,KAAOC,GAAO,CAAA,EAAA,CAAEa,OAAQ,SAAUC,OAAQ,SAAUC,WAAW,KAEzE,CAED,OAAO/B,IACT,GAAC,CAAAmB,IAAA,mBAAAE,MAED,SAAiBC,EAAgBD,EAAeL,GAC9C,IAAMoB,EAAiBpC,KAAKiB,OAAOL,OAC7BgC,EAAc7B,EAAA,CAA2Bc,OAAQ,SAAUC,OAAQ,UAAad,GAGtF,IAAKoB,IAAmBA,EAAed,IAA4C,IAAlCc,EAAed,GAAQnB,OAGtE,OADAH,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAED,QAAOD,EAAAA,KAAO6B,GAAc,CAAA,EAAA,CAAEb,WAAW,MAClE/B,KAGT,IAAM6C,EAAaT,EAAed,GAG5BwB,EAAYD,EAAWE,WAAU,SAACnB,GAAI,OAAKA,EAAKP,QAAUA,KAEhE,IAAkB,IAAdyB,EAGF,OADA9C,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAED,QAAOD,EAAAA,KAAO6B,GAAc,CAAA,EAAA,CAAEb,WAAW,MAClE/B,KAIT,IAAMgD,EAAoBH,EAAWjC,QAAO,SAACqC,EAAGC,GAAK,OAAKA,IAAUJ,KAGpE,GAAiC,IAA7BE,EAAkB7C,OAAc,CACoBiC,EAA7Cd,OAAyBe,EAAeC,EAAKF,GAA7Cd,GAAKiB,IAAAC,IACRC,EAAqBC,OAAOC,KAAKN,GAAiBlC,OAAS,EAEjEH,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EACNf,KAAKiB,QAAM,GAAA,CACdL,OAAQ6B,EAAsBJ,OAAoCjC,EAClEY,QAAOD,EAAAA,KAAO6B,GAAc,CAAA,EAAA,CAAEb,WAAW,KAE5C,KAAM,CAEL,IAAMI,EAAapB,EAAAA,EAAA,CAAA,EAAQqB,GAAc,CAAA,EAAA7B,EAAA,CAAA,EAAGe,EAAQ0B,IAEpDhD,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EACNf,KAAKiB,QAAM,GAAA,CACdL,OAAQuB,EACRnB,QAAOD,EAAAA,KAAO6B,GAAc,CAAA,EAAA,CAAEb,WAAW,KAE5C,CAED,OAAO/B,IACT,GAAC,CAAAmB,IAAA,eAAAE,MAED,SAAaT,EAAwBI,GAEnC,OADAhB,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAEL,OAAAA,EAAQI,QAAOD,EAAAA,KAAOC,GAAO,CAAA,EAAA,CAAEa,OAAQ,SAAUC,OAAQ,SAAUC,WAAW,MACvG/B,IACT,GAEA,CAAAmB,IAAA,iBAAAE,MACA,SAAeA,EAA+BL,GAA8B,IAAAmC,EACpEC,EAAuCD,QAA1BA,EAAGnD,KAAKiB,OAAOoC,mBAAWF,IAAAA,EAAAA,EAAI,GAC3CG,EAAYjC,QAAAA,EAAS,GAGrBkC,EAAS,GAAAtB,OAAAC,EAAQsB,MAAMC,QAAQL,GAAiBA,EAAgB,CAACA,IAAclB,EAAOsB,MAAMC,QAAQH,GAAaA,EAAY,CAACA,KAG9HI,EAAeF,MAAMG,KAAK,IAAIC,IAAIL,IAGlCM,EAAa,IAAID,IAAIJ,MAAMC,QAAQL,GAAiBA,EAAgB,CAACA,IACrErB,EAAY2B,EAAavD,SAAW0D,EAAWC,MAAQJ,EAAa/B,MAAK,SAACoC,GAAG,OAAMF,EAAWG,IAAID,MAMxG,OAJIhC,IACF/B,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAEoC,YAAaK,EAAc1C,QAAOD,EAAAA,KAAOC,GAAO,CAAA,EAAA,CAAEa,OAAQ,MAAOC,OAAQ,cAAeC,UAAAA,OAGnH/B,IACT,GAAC,CAAAmB,IAAA,oBAAAE,MAED,SAAkBL,GAEhB,OADAhB,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAEoC,iBAAajD,EAAWY,QAAOD,EAAAA,KAAOC,GAAO,CAAA,EAAA,CAAEa,OAAQ,SAAUC,OAAQ,cAAeC,WAAW,MAC5H/B,IACT,GAAC,CAAAmB,IAAA,wBAAAE,MAED,SAAsBA,EAAeL,GACnC,IAAMoC,EAAgBpD,KAAKiB,OAAOoC,YAC5BT,EAAc7B,EAAA,CAA2Bc,OAAQ,SAAUC,OAAQ,eAAkBd,GAG3F,IAAKoC,EAGH,OADApD,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAED,QAAOD,EAAAA,KAAO6B,GAAc,CAAA,EAAA,CAAEb,WAAW,MAClE/B,KAIT,IAAMiE,EAAcT,MAAMC,QAAQL,GAAiBA,EAAgB,CAACA,GAKpE,IAAmB,IAFAa,EAAYC,QAAQ7C,GAKrC,OADArB,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAED,QAAOD,EAAAA,KAAO6B,GAAc,CAAA,EAAA,CAAEb,WAAW,MAClE/B,KAIT,IAAMmE,EAAgBF,EAAYrD,QAAO,SAACmD,GAAG,OAAKA,IAAQ1C,KAkB1D,OAf6B,IAAzB8C,EAAchE,OAChBH,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EACNf,KAAKiB,QAAM,GAAA,CACdoC,iBAAajD,EACbY,QAAOD,EAAAA,KAAO6B,GAAc,CAAA,EAAA,CAAEb,WAAW,MAI3C/B,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EACNf,KAAKiB,QAAM,GAAA,CACdoC,YAAsC,IAAzBc,EAAchE,OAAegE,EAAc,GAAKA,EAC7DnD,QAAOD,EAAAA,KAAO6B,GAAc,CAAA,EAAA,CAAEb,WAAW,MAItC/B,IACT,GAAC,CAAAmB,IAAA,oBAAAE,MAED,SAAkBgC,GAEhB,OADArD,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAEoC,YAAAA,EAAarC,QAAS,CAAEc,OAAQ,cAAesC,KAAM,QAASvC,OAAQ,SAAUE,WAAW,KACpH/B,IACT,GAEA,CAAAmB,IAAA,mBAAAE,MACA,SAAiBgD,GAAiF,IAAxDrD,EAAAd,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAgC,GAAA,CAAEkE,KAAM,gBAEhF,OADApE,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAEoD,WAAAA,EAAYrD,QAAOD,EAAAA,KAAOC,GAAO,CAAA,EAAA,CAAEa,OAAQ,SAAUC,OAAQ,aAAcC,WAAW,MAC/G/B,IACT,GAAC,CAAAmB,IAAA,mBAAAE,MAED,WAAyE,IAAxDL,EAAgCd,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAA,GAAA,CAAEkE,KAAM,gBAEvD,OADApE,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAEoD,gBAAYjE,EAAWY,QAAOD,EAAAA,KAAOC,GAAO,CAAA,EAAA,CAAEa,OAAQ,SAAUC,OAAQ,aAAcC,WAAW,MAC1H/B,IACT,GAEA,CAAAmB,IAAA,aAAAE,MACA,SAAWiD,GAAsE,IAAtDtD,EAAAd,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAgC,GAAA,CAAEkE,KAAM,cAEjE,OADApE,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAEqD,KAAAA,EAAMtD,QAAOD,EAAAA,KAAOC,GAAO,CAAA,EAAA,CAAEa,OAAQ,SAAUC,OAAQ,WAChF9B,IACT,GAAC,CAAAmB,IAAA,aAAAE,MAED,WAAiE,IAAtDL,EAAgCd,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAA,GAAA,CAAEkE,KAAM,cAEjD,OADApE,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAEqD,UAAMlE,EAAWY,QAAOD,EAAAA,KAAOC,GAAO,CAAA,EAAA,CAAEa,OAAQ,SAAUC,OAAQ,WAC3F9B,IACT,GAAC,CAAAmB,IAAA,sBAAAE,MAED,SAAoBL,GAClB,IAAMuD,EAAcvE,KAAKiB,OAAOqD,KAChC,IAAKC,EAAa,OAAOvE,KACzB,IAAMwE,EAASzD,EAAAA,KAAkBwD,GAAW,GAAA,CAAEE,UAAqC,QAA1BF,EAAYE,UAAsB,OAAS,QAEpG,OADAzE,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAEqD,KAAME,EAAWxD,QAAOD,EAAAA,KAAOC,GAAO,CAAA,EAAA,CAAEa,OAAQ,SAAUC,OAAQ,WAC3F9B,IACT,GAEA,CAAAmB,IAAA,cAAAE,MACA,SAAYqD,GAA2F,IAAxD1D,EAAAd,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAgC,GAAA,CAAEkE,KAAM,gBAErF,OADApE,KAAKiB,OAAMF,EAAAA,EAAAA,EAAQ,GAAAf,KAAKiB,QAAWyD,GAAO,CAAA,EAAA,CAAE1D,QAAOD,EAAAA,KAAOC,GAAO,CAAA,EAAA,CAAEa,OAAQ,aACpE7B,IACT,GAEA,CAAAmB,IAAA,QAAAE,MACA,WAEE,OADArB,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKkB,gBAAc,GAAA,CAAEF,QAAS,CAAEa,OAAQ,QAASE,WAAW,KACxE/B,IACT,GAAC,CAAAmB,IAAA,cAAAE,MAED,WAAoE,IAAxDL,EAAgCd,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAA,GAAA,CAAEkE,KAAM,gBAElD,OADApE,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAEL,YAAQR,EAAWY,QAAOD,EAAA,CAAIc,OAAQ,QAASC,OAAQ,UAAad,KAC7FhB,IACT,GAAC,CAAAmB,IAAA,mBAAAE,MAED,WAAkE,IAAjDL,EAAgCd,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAA,GAAA,CAAEkE,KAAM,SAEvD,OADApE,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAEoC,iBAAajD,EAAWY,QAAOD,EAAA,CAAIc,OAAQ,QAASC,OAAQ,eAAkBd,KACvGhB,IACT,GAAC,CAAAmB,IAAA,kBAAAE,MAED,WAAwE,IAAxDL,EAAgCd,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAA,GAAA,CAAE4B,OAAQ,cAExD,OADA9B,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAEoD,gBAAYjE,EAAWY,QAAOD,EAAA,CAAIc,OAAQ,QAASC,OAAQ,cAAiBd,KACrGhB,IACT,GAAC,CAAAmB,IAAA,YAAAE,MAED,WAA4D,IAAlDL,EAAgCd,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAA,GAAA,CAAE4B,OAAQ,QAElD,OADA9B,KAAKiB,OAAMF,EAAAA,EAAA,CAAA,EAAQf,KAAKiB,QAAM,GAAA,CAAEqD,UAAMlE,EAAWY,QAAOD,EAAA,CAAIc,OAAQ,QAASC,OAAQ,QAAWd,KACzFhB,IACT,GAEA,CAAAmB,IAAA,6BAAAE,MACQ,WAA0B,IAAAsD,EAC1BC,EAAY5E,KAAKiB,OAAOoD,WACxBQ,EAAgC,QAAtBF,EAAG3E,KAAKkB,sBAAc,IAAAyD,OAAA,EAAnBA,EAAqBN,WAExC,OAAKO,IAAcC,MACdD,IAAcC,KAEZD,EAAUE,OAASD,EAAWC,MAAQF,EAAUG,WAAaF,EAAWE,SACjF,GAAC,CAAA5D,IAAA,uBAAAE,MAEO,WAAoB,IAAA2D,EACpBC,EAAajF,KAAKiB,OAAOqD,KACzBO,EAAgC,QAAtBG,EAAGhF,KAAKkB,sBAAc,IAAA8D,OAAA,EAAnBA,EAAqBV,KAExC,OAAKW,IAAeJ,MACfI,IAAeJ,KAEbI,EAAW3D,QAAUuD,EAAWvD,OAAS2D,EAAWR,YAAcI,EAAWJ,UACtF,GAAC,CAAAtD,IAAA,gBAAAE,MAED,WACE,IAAM6D,EAA0B,CAAE,EAsBlC,OAnBIlF,KAAKiB,OAAOL,SACdsE,EAAOtE,OAASZ,KAAKiB,OAAOL,QAI1BZ,KAAKiB,OAAOoC,cACd6B,EAAO7B,YAAcrD,KAAKiB,OAAOoC,aAI/BrD,KAAKiB,OAAOoD,aAAerE,KAAKmF,+BAClCD,EAAOb,WAAarE,KAAKiB,OAAOoD,YAI9BrE,KAAKiB,OAAOqD,OAAStE,KAAKoF,yBAC5BF,EAAOZ,KAAOtE,KAAKiB,OAAOqD,MAGrBY,CACT,GAAC,CAAA/D,IAAA,mBAAAE,MAED,WACE,IAAMT,EAASZ,KAAKiB,OAAOL,OAC3B,OAAKA,EAEE8B,OAAO2C,OAAOzE,GAAQ0E,QAAe,SAACC,EAAOC,GAElD,OAAOD,GAAS/B,MAAMC,QAAQ+B,GAASA,EAAMrF,OAAS,EACvD,GAAE,GALiB,CAMtB,GAAC,CAAAgB,IAAA,YAAAE,MAED,WACE,QAASrB,KAAKiB,OAAOL,QAAU8B,OAAOC,KAAK3C,KAAKiB,OAAOL,QAAQT,OAAS,CAC1E,GAAC,CAAAgB,IAAA,iBAAAE,MAED,WACE,QAASrB,KAAKiB,OAAOoC,WACvB,GAAC,CAAAlC,IAAA,gBAAAE,MAED,WACE,OAAIrB,KAAKmF,gCACAnF,KAAKiB,OAAOoD,UACvB,GAAC,CAAAlD,IAAA,UAAAE,MAED,WACE,OAAIrB,KAAKoF,0BACApF,KAAKiB,OAAOqD,IACvB,GAAC,CAAAnD,IAAA,UAAAE,MAED,WACE,QAAQrB,KAAKyF,aAAgBzF,KAAK0F,kBAAqB1F,KAAK2F,iBAAoB3F,KAAK4F,UACvF,GAAC,CAAAzE,IAAA,QAAAE,MASD,WACE,OAAAN,EAAA,CAAA,EAAYf,KAAKiB,OACnB,IAAC,CA1VqB,GA8VR,SAAA4E,EAAqBC,EAA8BzF,GACjE,OAAO,IAAIR,EAAYiG,EAAazF,EACtC"}
|
|
1
|
+
{"version":3,"file":"filter-store.js","sources":["../../../src/data-view/filter-store.ts"],"sourcesContent":["import { QueryParam } from '../utils'\r\nimport { IFilterState, IFilterMap, IPagination, ISort, IFilterChangeDetails, IFilterItem, SingleOrArray } from './types'\r\n\r\nexport class FilterStore<T> {\r\n private _state: IFilterState<T>\r\n private _defaultFilter: IFilterState<T> | undefined\r\n\r\n constructor(initialState: IFilterState<T> = {}, defaultFilter?: IFilterState<T>) {\r\n const obj = { ...initialState }\r\n if (obj?.details) delete obj.details // Ensure details are not included in the initial state\r\n this._state = obj\r\n this._defaultFilter = defaultFilter\r\n }\r\n\r\n // Static factory method\r\n // static initialize<T>(filterState: IFilterState<T>, defaultFilter?: IFilterState<T>): FilterStore<T> {\r\n // if (filterState?.details) delete filterState.details // Ensure details are not included in the initial state\r\n // return new FilterStore(filterState, defaultFilter)\r\n // }\r\n\r\n // Getter for current state\r\n get state(): IFilterState<T> {\r\n return { ...this._state }\r\n }\r\n\r\n // Filter operations\r\n addFilterItem(field: keyof T, filterItem: IFilterItem, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFieldItems = this._state.filter?.[field] ?? []\r\n\r\n // Check if item already exists to avoid duplicates\r\n const itemExists = existingFieldItems.some((item) => item.value === filterItem.value)\r\n\r\n if (!itemExists) {\r\n const newFieldItems = [...existingFieldItems, filterItem]\r\n const updatedFilter = { ...this._state.filter, [field]: newFieldItems } as IFilterMap<T>\r\n\r\n this._state = { ...this._state, filter: updatedFilter, details: { ...details, action: 'add', isChanged: true } }\r\n } else {\r\n // If item already exists, mark as not changed\r\n this._state = { ...this._state, details: { ...details, action: 'add', reason: 'filter', isChanged: false } }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeFilterField(field: keyof T, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFilter = this._state.filter\r\n\r\n // Check if field exists and has items\r\n const fieldExists = existingFilter && existingFilter[field] && existingFilter[field]!.length > 0\r\n\r\n if (fieldExists) {\r\n // Create new filter without the specified field\r\n const { [field]: removedField, ...remainingFilter } = existingFilter!\r\n\r\n // Check if there are any remaining fields\r\n const hasRemainingFields = Object.keys(remainingFilter).length > 0\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: hasRemainingFields ? (remainingFilter as IFilterMap<T>) : undefined,\r\n details: { ...details, action: 'remove', reason: 'filter', isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeFilterItem(field: keyof T, value: string, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFilter = this._state.filter\r\n const defaultDetails: IFilterChangeDetails = { action: 'remove', reason: 'filter', ...details }\r\n\r\n // Check if field exists and has items\r\n if (!existingFilter || !existingFilter[field] || existingFilter[field]!.length === 0) {\r\n // Field doesn't exist or is empty, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n const fieldItems = existingFilter[field]!\r\n\r\n // Find the item to remove\r\n const itemIndex = fieldItems.findIndex((item) => item.value === value)\r\n\r\n if (itemIndex === -1) {\r\n // Item not found, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Remove the specific item\r\n const updatedFieldItems = fieldItems.filter((_, index) => index !== itemIndex)\r\n\r\n // If no items left in the field, remove the field entirely\r\n if (updatedFieldItems.length === 0) {\r\n const { [field]: removedField, ...remainingFilter } = existingFilter\r\n const hasRemainingFields = Object.keys(remainingFilter).length > 0\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: hasRemainingFields ? (remainingFilter as IFilterMap<T>) : undefined,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n } else {\r\n // Update the field with remaining items\r\n const updatedFilter = { ...existingFilter, [field]: updatedFieldItems } as IFilterMap<T>\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: updatedFilter,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n updateFilter(filter?: IFilterMap<T>, details?: IFilterChangeDetails) {\r\n this._state = { ...this._state, filter, details: { ...details, action: 'change', reason: 'filter', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Quick search operations\r\n addQuickSearch(value?: SingleOrArray<string>, details?: IFilterChangeDetails): FilterStore<T> {\r\n const currentValues = this._state.quickSearch ?? []\r\n const newValues = value ?? []\r\n\r\n // Merge current and new values\r\n const allValues = [...(Array.isArray(currentValues) ? currentValues : [currentValues]), ...(Array.isArray(newValues) ? newValues : [newValues])]\r\n\r\n // Remove duplicates\r\n const uniqueValues = Array.from(new Set(allValues))\r\n\r\n // Check if changed\r\n const currentSet = new Set(Array.isArray(currentValues) ? currentValues : [currentValues])\r\n const isChanged = uniqueValues.length !== currentSet.size || uniqueValues.some((val) => !currentSet.has(val))\r\n\r\n if (isChanged) {\r\n this._state = { ...this._state, quickSearch: uniqueValues, details: { ...details, action: 'add', reason: 'quickSearch', isChanged } }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeQuickSearch(details?: IFilterChangeDetails): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch: undefined, details: { ...details, action: 'remove', reason: 'quickSearch', isChanged: true } }\r\n return this\r\n }\r\n\r\n removeQuickSearchItem(value: string, details?: IFilterChangeDetails): FilterStore<T> {\r\n const currentValues = this._state.quickSearch\r\n const defaultDetails: IFilterChangeDetails = { action: 'remove', reason: 'quickSearch', ...details }\r\n\r\n // Check if quickSearch exists and has values\r\n if (!currentValues) {\r\n // No quickSearch to remove from, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Convert to array for consistent handling\r\n const valuesArray = Array.isArray(currentValues) ? currentValues : [currentValues]\r\n\r\n // Check if the value exists\r\n const valueIndex = valuesArray.indexOf(value)\r\n\r\n if (valueIndex === -1) {\r\n // Value not found, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Remove the specific value\r\n const updatedValues = valuesArray.filter((val) => val !== value)\r\n\r\n // If no values left, remove quickSearch entirely\r\n if (updatedValues.length === 0) {\r\n this._state = {\r\n ...this._state,\r\n quickSearch: undefined,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n } else {\r\n // Update with remaining values\r\n this._state = {\r\n ...this._state,\r\n quickSearch: updatedValues.length === 1 ? updatedValues[0] : updatedValues,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n updateSearchInput(quickSearch: SingleOrArray<string>): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch, details: { reason: 'quickSearch', area: 'input', action: 'change', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Pagination operations\r\n changePagination(pagination: IPagination, details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination, details: { ...details, action: 'change', reason: 'pagination', isChanged: true } }\r\n return this\r\n }\r\n\r\n removePagination(details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination: undefined, details: { ...details, action: 'remove', reason: 'pagination', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Sort operations\r\n changeSort(sort: ISort<T>, details: IFilterChangeDetails = { area: 'sortButton' }): FilterStore<T> {\r\n this._state = { ...this._state, sort, details: { ...details, action: 'change', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n removeSort(details: IFilterChangeDetails = { area: 'sortButton' }): FilterStore<T> {\r\n this._state = { ...this._state, sort: undefined, details: { ...details, action: 'remove', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n toggleSortDirection(details: IFilterChangeDetails): FilterStore<T> {\r\n const currentSort = this._state.sort\r\n if (!currentSort) return this\r\n const finalSort: ISort<T> = { ...currentSort, direction: currentSort.direction === 'asc' ? 'desc' : 'asc' }\r\n this._state = { ...this._state, sort: finalSort, details: { ...details, action: 'change', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n // Batch operations\r\n updateState(updates: Partial<IFilterState<T>>, details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, ...updates, details: { ...details, action: 'change' } }\r\n return this\r\n }\r\n\r\n // Reset operations\r\n reset(): FilterStore<T> {\r\n this._state = { ...this._defaultFilter, details: { action: 'reset', isChanged: true } }\r\n return this\r\n }\r\n\r\n resetFilter(details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, filter: undefined, details: { action: 'reset', reason: 'filter', ...details } }\r\n return this\r\n }\r\n\r\n resetQuickSearch(details: IFilterChangeDetails = { area: 'input' }): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch: undefined, details: { action: 'reset', reason: 'quickSearch', ...details } }\r\n return this\r\n }\r\n\r\n resetPagination(details: IFilterChangeDetails = { reason: 'pagination' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination: undefined, details: { action: 'reset', reason: 'pagination', ...details } }\r\n return this\r\n }\r\n\r\n resetSort(details: IFilterChangeDetails = { reason: 'sort' }): FilterStore<T> {\r\n this._state = { ...this._state, sort: undefined, details: { action: 'reset', reason: 'sort', ...details } }\r\n return this\r\n }\r\n\r\n // Utility methods\r\n private isPaginationEqualToDefault(): boolean {\r\n const curentVal = this._state.pagination\r\n const defaultVal = this._defaultFilter?.pagination\r\n\r\n if (!curentVal && !defaultVal) return true\r\n if (!curentVal || !defaultVal) return false\r\n\r\n return curentVal.page === defaultVal.page && curentVal.pageSize === defaultVal.pageSize\r\n }\r\n\r\n private isSortEqualToDefault(): boolean {\r\n const currentVal = this._state.sort\r\n const defaultVal = this._defaultFilter?.sort\r\n\r\n if (!currentVal && !defaultVal) return true\r\n if (!currentVal || !defaultVal) return false\r\n\r\n return currentVal.field === defaultVal.field && currentVal.direction === defaultVal.direction\r\n }\r\n\r\n extractFilter(): IFilterState<T> {\r\n const result: IFilterState<T> = {}\r\n\r\n // Include filter if it exists\r\n if (this._state.filter) {\r\n result.filter = this._state.filter\r\n }\r\n\r\n // Include quickSearch if it exists\r\n if (this._state.quickSearch) {\r\n result.quickSearch = this._state.quickSearch\r\n }\r\n\r\n // Include pagination only if it's different from default\r\n if (this._state.pagination && !this.isPaginationEqualToDefault()) {\r\n result.pagination = this._state.pagination\r\n }\r\n\r\n // Include sort only if it's different from default\r\n if (this._state.sort && !this.isSortEqualToDefault()) {\r\n result.sort = this._state.sort\r\n }\r\n\r\n return result\r\n }\r\n\r\n countFilterItems(): number {\r\n const filter = this._state.filter\r\n if (!filter) return 0\r\n\r\n return Object.values(filter).reduce<number>((count, items) => {\r\n // If items is an array and return its length, otherwise return 0\r\n return count + (Array.isArray(items) ? items.length : 0)\r\n }, 0)\r\n }\r\n\r\n hasFilter(): boolean {\r\n return !!this._state.filter && Object.keys(this._state.filter).length > 0\r\n }\r\n\r\n hasQuickSearch(): boolean {\r\n return !!this._state.quickSearch\r\n }\r\n\r\n hasPagination(): boolean {\r\n if (this.isPaginationEqualToDefault()) return false\r\n return !!this._state.pagination\r\n }\r\n\r\n hasSort(): boolean {\r\n if (this.isSortEqualToDefault()) return false\r\n return !!this._state.sort\r\n }\r\n\r\n isEmpty(): boolean {\r\n return !this.hasFilter() && !this.hasQuickSearch() && !this.hasPagination() && !this.hasSort()\r\n }\r\n\r\n converToQueryParam = (base: string) => {\r\n const extractFilter = this.extractFilter()\r\n const queryString = QueryParam.stringify({ filter: JSON.stringify(extractFilter) })\r\n return base + queryString\r\n }\r\n\r\n // Build the final state\r\n build(): IFilterState<T> {\r\n return { ...this._state }\r\n }\r\n}\r\nexport default FilterStore\r\n\r\nexport function createFilterStore<T>(filterState: IFilterState<T>, defaultFilter?: IFilterState<T>): FilterStore<T> {\r\n return new FilterStore(filterState, defaultFilter)\r\n}\r\n"],"names":["FilterStore","_createClass","_this","this","initialState","arguments","length","undefined","defaultFilter","_classCallCheck","_defineProperty","base","extractFilter","QueryParam","stringify","filter","JSON","obj","_objectSpread","details","_state","_defaultFilter","key","get","value","field","filterItem","_this$_state$filter$f","_this$_state$filter","existingFieldItems","some","item","action","reason","isChanged","newFieldItems","concat","_toConsumableArray","updatedFilter","existingFilter","remainingFilter","_objectWithoutProperties","map","_toPropertyKey","hasRemainingFields","Object","keys","defaultDetails","fieldItems","itemIndex","findIndex","updatedFieldItems","_","index","_this$_state$quickSea","currentValues","quickSearch","newValues","allValues","Array","isArray","uniqueValues","from","Set","currentSet","size","val","has","valuesArray","indexOf","updatedValues","area","pagination","sort","currentSort","finalSort","direction","updates","_this$_defaultFilter","curentVal","defaultVal","page","pageSize","_this$_defaultFilter2","currentVal","result","isPaginationEqualToDefault","isSortEqualToDefault","values","reduce","count","items","hasFilter","hasQuickSearch","hasPagination","hasSort","createFilterStore","filterState"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{slicedToArray as r,createForOfIteratorHelper as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{EFieldValidate as t,EFieldMatch as a}from"./types.js";var i={list:"FilterMenu-list",item:"FilterMenu-item"},o=function(r){var e=Array.from(r).reduce(
|
|
1
|
+
import{slicedToArray as r,createForOfIteratorHelper as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{EFieldValidate as t,EFieldMatch as a}from"./types.js";var i={list:"FilterMenu-list",item:"FilterMenu-item"},o=function(r){var e=Array.from(r).reduce(function(r,e){return r[e[0]]?Array.isArray(r[e[0]])?r[e[0]].push(e[1]):r[e[0]]=[r[e[0]],e[1]]:r[e[0]]=e[1],r},{});return Object.keys(e).forEach(function(r){var t=e[r];"string"!=typeof t||"true"!==t.toString().toLocaleLowerCase()&&"false"!==t.toString().toLocaleLowerCase()||(e[r]="true"===t.toString().toLocaleLowerCase())}),e},n=function(r){return/^https?:\/\/(www\.)?(youtube\.com|youtu\.be)\//.test(r)},l=function(r){return/^https?:\/\/[^ ]+$/.test(r)},u=function(r){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r)},s=function(r,t){var i,o=null!==(i=null==t?void 0:t.trim().toLowerCase())&&void 0!==i?i:"";if(!o)return{};var s={};for(var c in r){var f,v=c,b=r[v];if(null!=b&&b.quickSearchMatch){var d,h=null!==(f=b.quickSearchMatch.rules)&&void 0!==f?f:[],y=Array.isArray(h)?h:[h],m=!1,k=e(y);try{for(k.s();!(d=k.n()).done;){var g=d.value;switch(g.rule){case a.AlwaysVisible:m=!0;break;case a.MatchOnly:"match"in g&&"function"==typeof g.match&&g.match(o)&&(m=!0);break;case a.LinkYoutube:n(o)&&(m=!0);break;case a.Link:l(o)&&(m=!0);break;case a.Guid:u(o)&&(m=!0)}if(m)break}}catch(r){k.e(r)}finally{k.f()}m&&(s[v]=b)}}return s},c=function(e){if(!e)return{};for(var t={},a=0,i=Object.entries(e);a<i.length;a++){var o=r(i[a],2),n=o[0],l=o[1];l&&!1!==l.filterable&&(t[n]=l)}return t},f=function(r,a,i){var o,u,s=r.trim().toLowerCase();if(!s)return{error:!0,message:"The ".concat(a.toString()," is required ")};var c,f=null!==(o=null==i||null===(u=i.validation)||void 0===u?void 0:u.rules)&&void 0!==o?o:[],v=Array.isArray(f)?f:[f],b={error:!1},d=e(v);try{for(d.s();!(c=d.n()).done;){var h=c.value;switch(h.rule){case t.LinkYoutube:var y;if(!n(s))b.error=!0,b.message="The ".concat(null!==(y=null==i?void 0:i.label)&&void 0!==y?y:a.toString()," must be a valid YouTube link");break;case t.Link:var m;if(!l(s))b.error=!0,b.message="The ".concat(null!==(m=null==i?void 0:i.label)&&void 0!==m?m:a.toString()," must be a valid URL link");break;case t.Custom:var k;if("function"==typeof h.validator&&!h.validator(s))b.error=!0,b.message="The ".concat(null!==(k=null==i?void 0:i.label)&&void 0!==k?k:a.toString()," is invalid")}if(b.error)break}}catch(r){d.e(r)}finally{d.f()}return b},v={before:"<",after:">"},b={before:"Before",after:"After"};export{o as convertFormDataToJson,f as filterFieldValidated,i as filterMenuClasses,s as getFieldsMatches,c as getFieldsValidation,v as mapDateLogic,b as mapDateLogicText};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../src/data-view/helpers.ts"],"sourcesContent":["import { EFieldMatch, EFieldValidate, IFieldMatchConfig, IFilterConfig, IFilterConfigs, IFilterDateLogic, SingleOrArray } from './types'\r\n\r\nexport const filterMenuClasses = {\r\n list: 'FilterMenu-list',\r\n item: 'FilterMenu-item'\r\n}\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nexport const convertFormDataToJson = function <TModel>(form: FormData): Partial<TModel> {\r\n const data = Array.from(form as any).reduce<Partial<TModel>>((a: unknown | any, b: any) => {\r\n if (!a[b[0]]) {\r\n a[b[0]] = b[1]\r\n } else if (Array.isArray(a[b[0]])) {\r\n a[b[0]].push(b[1])\r\n } else {\r\n a[b[0]] = [a[b[0]], b[1]]\r\n }\r\n return a\r\n }, {} as any) as any\r\n\r\n Object.keys(data).forEach((key) => {\r\n const value = data[key]\r\n if (typeof value === 'string' && (value.toString().toLocaleLowerCase() === 'true' || value.toString().toLocaleLowerCase() === 'false')) {\r\n data[key] = value.toString().toLocaleLowerCase() === 'true'\r\n }\r\n })\r\n return data\r\n}\r\n\r\nconst isYoutubeLink = (val: string) => /^https?:\\/\\/(www\\.)?(youtube\\.com|youtu\\.be)\\//.test(val)\r\n\r\nconst isGenericLink = (val: string) => /^https?:\\/\\/[^ ]+$/.test(val)\r\n\r\nconst isGuid = (val: string) => /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(val)\r\n\r\nexport const getFieldsMatches = <T>(fields?: IFilterConfigs<T>, keyword?: string): IFilterConfigs<T> => {\r\n const trimmed = keyword?.trim().toLowerCase() ?? ''\r\n if (!trimmed) return {}\r\n\r\n const matched: IFilterConfigs<T> = {}\r\n\r\n for (const key in fields) {\r\n const field = key as keyof IFilterConfigs<T>\r\n const config = fields[field]\r\n if (!config?.quickSearchMatch) continue\r\n const temp: SingleOrArray<IFieldMatchConfig> = config.quickSearchMatch.rules ?? []\r\n const rules = Array.isArray(temp) ? temp : [temp]\r\n\r\n let visible = false\r\n\r\n for (const rule of rules) {\r\n switch (rule.rule) {\r\n case EFieldMatch.AlwaysVisible:\r\n visible = true\r\n break\r\n case EFieldMatch.MatchOnly:\r\n if ('match' in rule && typeof rule.match === 'function') {\r\n if (rule.match(trimmed)) visible = true\r\n }\r\n break\r\n case EFieldMatch.LinkYoutube:\r\n if (isYoutubeLink(trimmed)) visible = true\r\n break\r\n case EFieldMatch.Link:\r\n if (isGenericLink(trimmed)) visible = true\r\n break\r\n case EFieldMatch.Guid:\r\n if (isGuid(trimmed)) visible = true\r\n break\r\n default:\r\n break\r\n }\r\n\r\n if (visible) break\r\n }\r\n\r\n if (visible) matched[field] = config\r\n }\r\n\r\n return matched\r\n}\r\n\r\nexport const getFieldsValidation = <T>(fields?: IFilterConfigs<T>): IFilterConfigs<T> => {\r\n if (!fields) return {} as IFilterConfigs<T>\r\n\r\n const filteredFields: IFilterConfigs<T> = {}\r\n\r\n for (const [key, config] of Object.entries(fields) as [keyof T, IFilterConfig][]) {\r\n // Default to true if no validation is provided\r\n if (config && config.filterable !== false) {\r\n filteredFields[key] = config\r\n }\r\n }\r\n\r\n return filteredFields\r\n}\r\n\r\nexport const filterFieldValidated = <T>(value: string, fieldKey: keyof T, filterField?: IFilterConfig): { error: boolean; message?: string } => {\r\n const trimmed = value.trim().toLowerCase()\r\n if (!trimmed) return { error: true, message: `The ${fieldKey.toString()} is required ` }\r\n const rules = filterField?.validation?.rules ?? []\r\n const rulesValidation = Array.isArray(rules) ? rules : [rules]\r\n const obj: { error: boolean; message?: string } = { error: false }\r\n for (const validateObj of rulesValidation) {\r\n switch (validateObj.rule) {\r\n case EFieldValidate.LinkYoutube:\r\n if (!isYoutubeLink(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} must be a valid YouTube link`\r\n }\r\n break\r\n\r\n case EFieldValidate.Link:\r\n if (!isGenericLink(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} must be a valid URL link`\r\n }\r\n break\r\n\r\n case EFieldValidate.Custom:\r\n if (typeof validateObj.validator === 'function' && !validateObj.validator(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} is invalid`\r\n }\r\n break\r\n default:\r\n break\r\n }\r\n if (obj.error) break\r\n }\r\n return obj\r\n}\r\n\r\nexport const mapDateLogic: { [key in IFilterDateLogic]: string } = {\r\n before: '<',\r\n after: '>'\r\n}\r\n\r\nexport const mapDateLogicText: { [key in IFilterDateLogic]: string } = {\r\n before: 'Before',\r\n after: 'After'\r\n}\r\n"],"names":["filterMenuClasses","list","item","convertFormDataToJson","form","data","Array","from","reduce","a","b","isArray","push","Object","keys","forEach","key","value","toString","toLocaleLowerCase","isYoutubeLink","val","test","isGenericLink","getFieldsMatches","fields","keyword","_keyword$trim$toLower","trimmed","trim","toLowerCase","matched","_config$quickSearchMa","field","config","quickSearchMatch","_step","temp","rules","visible","_iterator","_createForOfIteratorHelper","s","n","done","rule","EFieldMatch","AlwaysVisible","MatchOnly","match","LinkYoutube","Link","Guid","err","e","f","getFieldsValidation","filteredFields","_i","_Object$entries","entries","length","_Object$entries$_i","_slicedToArray","filterable","filterFieldValidated","fieldKey","filterField","_filterField$validati","_filterField$validati2","error","message","concat","_step2","validation","rulesValidation","obj","_iterator2","validateObj","EFieldValidate","_filterField$label","label","_filterField$label2","Custom","_filterField$label3","validator","mapDateLogic","before","after","mapDateLogicText"],"mappings":"wKAEO,IAAMA,EAAoB,CAC/BC,KAAM,kBACNC,KAAM,mBAIKC,EAAwB,SAAkBC,GACrD,IAAMC,EAAOC,MAAMC,KAAKH,GAAaI,
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../src/data-view/helpers.ts"],"sourcesContent":["import { EFieldMatch, EFieldValidate, IFieldMatchConfig, IFilterConfig, IFilterConfigs, IFilterDateLogic, SingleOrArray } from './types'\r\n\r\nexport const filterMenuClasses = {\r\n list: 'FilterMenu-list',\r\n item: 'FilterMenu-item'\r\n}\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nexport const convertFormDataToJson = function <TModel>(form: FormData): Partial<TModel> {\r\n const data = Array.from(form as any).reduce<Partial<TModel>>((a: unknown | any, b: any) => {\r\n if (!a[b[0]]) {\r\n a[b[0]] = b[1]\r\n } else if (Array.isArray(a[b[0]])) {\r\n a[b[0]].push(b[1])\r\n } else {\r\n a[b[0]] = [a[b[0]], b[1]]\r\n }\r\n return a\r\n }, {} as any) as any\r\n\r\n Object.keys(data).forEach((key) => {\r\n const value = data[key]\r\n if (typeof value === 'string' && (value.toString().toLocaleLowerCase() === 'true' || value.toString().toLocaleLowerCase() === 'false')) {\r\n data[key] = value.toString().toLocaleLowerCase() === 'true'\r\n }\r\n })\r\n return data\r\n}\r\n\r\nconst isYoutubeLink = (val: string) => /^https?:\\/\\/(www\\.)?(youtube\\.com|youtu\\.be)\\//.test(val)\r\n\r\nconst isGenericLink = (val: string) => /^https?:\\/\\/[^ ]+$/.test(val)\r\n\r\nconst isGuid = (val: string) => /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(val)\r\n\r\nexport const getFieldsMatches = <T>(fields?: IFilterConfigs<T>, keyword?: string): IFilterConfigs<T> => {\r\n const trimmed = keyword?.trim().toLowerCase() ?? ''\r\n if (!trimmed) return {}\r\n\r\n const matched: IFilterConfigs<T> = {}\r\n\r\n for (const key in fields) {\r\n const field = key as keyof IFilterConfigs<T>\r\n const config = fields[field]\r\n if (!config?.quickSearchMatch) continue\r\n const temp: SingleOrArray<IFieldMatchConfig> = config.quickSearchMatch.rules ?? []\r\n const rules = Array.isArray(temp) ? temp : [temp]\r\n\r\n let visible = false\r\n\r\n for (const rule of rules) {\r\n switch (rule.rule) {\r\n case EFieldMatch.AlwaysVisible:\r\n visible = true\r\n break\r\n case EFieldMatch.MatchOnly:\r\n if ('match' in rule && typeof rule.match === 'function') {\r\n if (rule.match(trimmed)) visible = true\r\n }\r\n break\r\n case EFieldMatch.LinkYoutube:\r\n if (isYoutubeLink(trimmed)) visible = true\r\n break\r\n case EFieldMatch.Link:\r\n if (isGenericLink(trimmed)) visible = true\r\n break\r\n case EFieldMatch.Guid:\r\n if (isGuid(trimmed)) visible = true\r\n break\r\n default:\r\n break\r\n }\r\n\r\n if (visible) break\r\n }\r\n\r\n if (visible) matched[field] = config\r\n }\r\n\r\n return matched\r\n}\r\n\r\nexport const getFieldsValidation = <T>(fields?: IFilterConfigs<T>): IFilterConfigs<T> => {\r\n if (!fields) return {} as IFilterConfigs<T>\r\n\r\n const filteredFields: IFilterConfigs<T> = {}\r\n\r\n for (const [key, config] of Object.entries(fields) as [keyof T, IFilterConfig][]) {\r\n // Default to true if no validation is provided\r\n if (config && config.filterable !== false) {\r\n filteredFields[key] = config\r\n }\r\n }\r\n\r\n return filteredFields\r\n}\r\n\r\nexport const filterFieldValidated = <T>(value: string, fieldKey: keyof T, filterField?: IFilterConfig): { error: boolean; message?: string } => {\r\n const trimmed = value.trim().toLowerCase()\r\n if (!trimmed) return { error: true, message: `The ${fieldKey.toString()} is required ` }\r\n const rules = filterField?.validation?.rules ?? []\r\n const rulesValidation = Array.isArray(rules) ? rules : [rules]\r\n const obj: { error: boolean; message?: string } = { error: false }\r\n for (const validateObj of rulesValidation) {\r\n switch (validateObj.rule) {\r\n case EFieldValidate.LinkYoutube:\r\n if (!isYoutubeLink(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} must be a valid YouTube link`\r\n }\r\n break\r\n\r\n case EFieldValidate.Link:\r\n if (!isGenericLink(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} must be a valid URL link`\r\n }\r\n break\r\n\r\n case EFieldValidate.Custom:\r\n if (typeof validateObj.validator === 'function' && !validateObj.validator(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} is invalid`\r\n }\r\n break\r\n default:\r\n break\r\n }\r\n if (obj.error) break\r\n }\r\n return obj\r\n}\r\n\r\nexport const mapDateLogic: { [key in IFilterDateLogic]: string } = {\r\n before: '<',\r\n after: '>'\r\n}\r\n\r\nexport const mapDateLogicText: { [key in IFilterDateLogic]: string } = {\r\n before: 'Before',\r\n after: 'After'\r\n}\r\n"],"names":["filterMenuClasses","list","item","convertFormDataToJson","form","data","Array","from","reduce","a","b","isArray","push","Object","keys","forEach","key","value","toString","toLocaleLowerCase","isYoutubeLink","val","test","isGenericLink","isGuid","getFieldsMatches","fields","keyword","_keyword$trim$toLower","trimmed","trim","toLowerCase","matched","_config$quickSearchMa","field","config","quickSearchMatch","_step","temp","rules","visible","_iterator","_createForOfIteratorHelper","s","n","done","rule","EFieldMatch","AlwaysVisible","MatchOnly","match","LinkYoutube","Link","Guid","err","e","f","getFieldsValidation","filteredFields","_i","_Object$entries","entries","length","_Object$entries$_i","_slicedToArray","filterable","filterFieldValidated","fieldKey","filterField","_filterField$validati","_filterField$validati2","error","message","concat","_step2","validation","rulesValidation","obj","_iterator2","validateObj","EFieldValidate","_filterField$label","label","_filterField$label2","Custom","_filterField$label3","validator","mapDateLogic","before","after","mapDateLogicText"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{slicedToArray as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,Fragment as r}from"react/jsx-runtime";import{useEffect as o,useState as t}from"react";var i=function(n){var r=n||{},i=r.elementId,l=r.threshold,d=t(!1),s=e(d,2),u=s[0],c=s[1],a=!!i,f="number"==typeof l?l:0;return o(
|
|
1
|
+
import{slicedToArray as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,Fragment as r}from"react/jsx-runtime";import{useEffect as o,useState as t}from"react";var i=function(n){var r=n||{},i=r.elementId,l=r.threshold,d=t(!1),s=e(d,2),u=s[0],c=s[1],a=!!i,f="number"==typeof l?l:0;return o(function(){if("undefined"!=typeof window){var e=function(){if(a){var e=document.getElementById(i);if(!e)return void c(!1);var n=e.getBoundingClientRect().top+window.scrollY,r=window.scrollY>=n-f;c(function(e){return e===r?e:r})}else{var o=window.scrollY>0;c(function(e){return e===o?e:o})}};return e(),window.addEventListener("scroll",e),window.addEventListener("resize",e),function(){window.removeEventListener("scroll",e),window.removeEventListener("resize",e)}}},[i,f,a]),{isScrolled:u}},l=function(e){var t=i({elementId:e.elementId,threshold:e.threshold}).isScrolled;return o(function(){e.onChange({isScrolled:t})},[t,e.onChange]),n(r,{})};export{l as default,i as useScrollTracking};
|
|
2
2
|
//# sourceMappingURL=scroll-tracking.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-tracking.js","sources":["../../../src/data-view/scroll-tracking.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps*/\r\nimport { FC, useEffect, useState } from 'react'\r\n\r\nexport interface IScrollTrackingOptions {\r\n elementId?: string\r\n threshold?: number\r\n}\r\n\r\nexport interface IScrollTrackingData {\r\n isScrolled: boolean\r\n}\r\n\r\nexport const useScrollTracking = (options?: IScrollTrackingOptions): IScrollTrackingData => {\r\n const { elementId, threshold } = options || {}\r\n const [isScrolled, setIsScrolled] = useState<boolean>(false)\r\n\r\n // enable element mode only when elementId provided (threshold optional)\r\n const useElementMode = !!elementId\r\n const thresholdNumber = typeof threshold === 'number' ? threshold : 0\r\n\r\n useEffect(() => {\r\n if (typeof window === 'undefined') return\r\n\r\n const check = () => {\r\n if (useElementMode) {\r\n const el = document.getElementById(elementId!)\r\n if (!el) {\r\n setIsScrolled(false)\r\n return\r\n }\r\n // compute element top relative to the whole document (robust when other elements exist above)\r\n const rect = el.getBoundingClientRect()\r\n const elementTopDocument = rect.top + window.scrollY\r\n // active only when the page scroll has reached (elementTop - threshold)\r\n const nearTop = window.scrollY >= elementTopDocument - thresholdNumber\r\n setIsScrolled((prev) => (prev === nearTop ? prev : nearTop))\r\n } else {\r\n // legacy/simple mode: active when page scrolled at all\r\n const scrolled = window.scrollY > 0\r\n setIsScrolled((prev) => (prev === scrolled ? prev : scrolled))\r\n }\r\n }\r\n\r\n // initial check\r\n check()\r\n\r\n window.addEventListener('scroll', check)\r\n window.addEventListener('resize', check)\r\n return () => {\r\n window.removeEventListener('scroll', check)\r\n window.removeEventListener('resize', check)\r\n }\r\n }, [elementId, thresholdNumber, useElementMode])\r\n\r\n return { isScrolled }\r\n}\r\n\r\nexport interface IScrollTrackingProps extends IScrollTrackingOptions {\r\n onChange: (data: IScrollTrackingData) => void\r\n}\r\n\r\nconst ScrollTracking: FC<IScrollTrackingProps> = (props) => {\r\n const { isScrolled } = useScrollTracking({\r\n elementId: props.elementId,\r\n threshold: props.threshold\r\n })\r\n\r\n useEffect(() => {\r\n props.onChange({ isScrolled })\r\n }, [isScrolled, props.onChange])\r\n\r\n return <></>\r\n}\r\n\r\nexport default ScrollTracking\r\n"],"names":["useScrollTracking","options","_ref","elementId","threshold","_useState","useState","_useState2","_slicedToArray","isScrolled","setIsScrolled","useElementMode","thresholdNumber","useEffect","window","check","el","document","getElementById","elementTopDocument","getBoundingClientRect","top","scrollY","nearTop","prev","scrolled","addEventListener","removeEventListener","ScrollTracking","props","onChange","_jsx"],"mappings":"sLAYaA,EAAoB,SAACC,GAChC,IAAAC,EAAiCD,GAAW,CAAE,EAAtCE,EAASD,EAATC,UAAWC,EAASF,EAATE,UACnBC,EAAoCC,GAAkB,GAAMC,EAAAC,EAAAH,EAAA,GAArDI,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAG1BI,IAAmBR,EACnBS,EAAuC,iBAAdR,EAAyBA,EAAY,EAoCpE,OAlCAS,
|
|
1
|
+
{"version":3,"file":"scroll-tracking.js","sources":["../../../src/data-view/scroll-tracking.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps*/\r\nimport { FC, useEffect, useState } from 'react'\r\n\r\nexport interface IScrollTrackingOptions {\r\n elementId?: string\r\n threshold?: number\r\n}\r\n\r\nexport interface IScrollTrackingData {\r\n isScrolled: boolean\r\n}\r\n\r\nexport const useScrollTracking = (options?: IScrollTrackingOptions): IScrollTrackingData => {\r\n const { elementId, threshold } = options || {}\r\n const [isScrolled, setIsScrolled] = useState<boolean>(false)\r\n\r\n // enable element mode only when elementId provided (threshold optional)\r\n const useElementMode = !!elementId\r\n const thresholdNumber = typeof threshold === 'number' ? threshold : 0\r\n\r\n useEffect(() => {\r\n if (typeof window === 'undefined') return\r\n\r\n const check = () => {\r\n if (useElementMode) {\r\n const el = document.getElementById(elementId!)\r\n if (!el) {\r\n setIsScrolled(false)\r\n return\r\n }\r\n // compute element top relative to the whole document (robust when other elements exist above)\r\n const rect = el.getBoundingClientRect()\r\n const elementTopDocument = rect.top + window.scrollY\r\n // active only when the page scroll has reached (elementTop - threshold)\r\n const nearTop = window.scrollY >= elementTopDocument - thresholdNumber\r\n setIsScrolled((prev) => (prev === nearTop ? prev : nearTop))\r\n } else {\r\n // legacy/simple mode: active when page scrolled at all\r\n const scrolled = window.scrollY > 0\r\n setIsScrolled((prev) => (prev === scrolled ? prev : scrolled))\r\n }\r\n }\r\n\r\n // initial check\r\n check()\r\n\r\n window.addEventListener('scroll', check)\r\n window.addEventListener('resize', check)\r\n return () => {\r\n window.removeEventListener('scroll', check)\r\n window.removeEventListener('resize', check)\r\n }\r\n }, [elementId, thresholdNumber, useElementMode])\r\n\r\n return { isScrolled }\r\n}\r\n\r\nexport interface IScrollTrackingProps extends IScrollTrackingOptions {\r\n onChange: (data: IScrollTrackingData) => void\r\n}\r\n\r\nconst ScrollTracking: FC<IScrollTrackingProps> = (props) => {\r\n const { isScrolled } = useScrollTracking({\r\n elementId: props.elementId,\r\n threshold: props.threshold\r\n })\r\n\r\n useEffect(() => {\r\n props.onChange({ isScrolled })\r\n }, [isScrolled, props.onChange])\r\n\r\n return <></>\r\n}\r\n\r\nexport default ScrollTracking\r\n"],"names":["useScrollTracking","options","_ref","elementId","threshold","_useState","useState","_useState2","_slicedToArray","isScrolled","setIsScrolled","useElementMode","thresholdNumber","useEffect","window","check","el","document","getElementById","elementTopDocument","getBoundingClientRect","top","scrollY","nearTop","prev","scrolled","addEventListener","removeEventListener","ScrollTracking","props","onChange","_jsx"],"mappings":"sLAYaA,EAAoB,SAACC,GAChC,IAAAC,EAAiCD,GAAW,CAAE,EAAtCE,EAASD,EAATC,UAAWC,EAASF,EAATE,UACnBC,EAAoCC,GAAkB,GAAMC,EAAAC,EAAAH,EAAA,GAArDI,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAG1BI,IAAmBR,EACnBS,EAAuC,iBAAdR,EAAyBA,EAAY,EAoCpE,OAlCAS,EAAU,WACR,GAAsB,oBAAXC,OAAX,CAEA,IAAMC,EAAQ,WACZ,GAAIJ,EAAgB,CAClB,IAAMK,EAAKC,SAASC,eAAef,GACnC,IAAKa,EAEH,YADAN,GAAc,GAIhB,IACMS,EADOH,EAAGI,wBACgBC,IAAMP,OAAOQ,QAEvCC,EAAUT,OAAOQ,SAAWH,EAAqBP,EACvDF,EAAc,SAACc,GAAI,OAAMA,IAASD,EAAUC,EAAOD,CAAO,EAC3D,KAAM,CAEL,IAAME,EAAWX,OAAOQ,QAAU,EAClCZ,EAAc,SAACc,GAAI,OAAMA,IAASC,EAAWD,EAAOC,CAAQ,EAC7D,CACF,EAOD,OAJAV,IAEAD,OAAOY,iBAAiB,SAAUX,GAClCD,OAAOY,iBAAiB,SAAUX,GAC3B,WACLD,OAAOa,oBAAoB,SAAUZ,GACrCD,OAAOa,oBAAoB,SAAUZ,EACtC,CA9BkC,CA+BpC,EAAE,CAACZ,EAAWS,EAAiBD,IAEzB,CAAEF,WAAAA,EACX,EAMMmB,EAA2C,SAACC,GAChD,IAAQpB,EAAeT,EAAkB,CACvCG,UAAW0B,EAAM1B,UACjBC,UAAWyB,EAAMzB,YAFXK,WASR,OAJAI,EAAU,WACRgB,EAAMC,SAAS,CAAErB,WAAAA,GAClB,EAAE,CAACA,EAAYoB,EAAMC,WAEfC,OACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{objectSpread2 as e,objectWithoutProperties as o,slicedToArray as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i,Fragment as r,jsxs as l}from"react/jsx-runtime";import t,{useRef as a,useState as d}from"react";import{styled as u,ToggleButtonGroup as s,Button as c,colors as f,Box as m,RadioGroup as v,FormGroup as p,ButtonGroup as h,IconButton as g,InputBase as b,InputAdornment as x,Typography as C,Tooltip as z,TextField as y,FormControlLabel as w,Checkbox as S,Radio as k,ToggleButton as T}from"@mui/material";import R from"@mui/icons-material/Close";import B from"@mui/icons-material/Shuffle";import P from"@mui/icons-material/ClearAll";import L from"@mui/icons-material/FilterList";import W from"@mui/icons-material/ArrowUpward";import M from"@mui/icons-material/ArrowDownward";import D from"@mui/icons-material/KeyboardReturn";import E from"@mui/icons-material/KeyboardArrowDown";import{mapDataViewContext as F}from"./context.js";import{RichTooltip as I,HelpOutlinePulseIcon as j}from"../components/rich-tooltip.js";import{createFilterStore as A}from"./filter-store.js";var N=["children"],H={asc:{title:"Ascending",icon:i(W,{fontSize:"small"})},desc:{title:"Descending",icon:i(M,{fontSize:"small"})}},_=function(e){return l(U,{size:"small",value:e.value||"and",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"and","aria-label":"and logic",children:"AND"}),i(T,{size:"small",value:"or","aria-label":"or logic",children:"OR"})]})},K=function(e){return l(U,{size:"small",value:e.value||"before",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"before","aria-label":"before date",children:"before"}),i(T,{size:"small",value:"after","aria-label":"after date",children:"after"})]})},O=function(e){return l(U,{size:"small",value:e.value||"between",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"between","aria-label":"between dates",children:"between"}),i(T,{size:"small",value:"not-between","aria-label":"not between dates",children:"not between"})]})},U=u(s)({"& .MuiToggleButton-root":{color:"#fff",borderColor:"rgba(255, 255, 255, 0.3)",fontSize:"0.65rem",fontWeight:600,lineHeight:1,minWidth:"40px",padding:"6px 8px","&.Mui-selected":{backgroundColor:"#1976d2",color:"#fff","&:hover":{backgroundColor:"#1565c0"}},"&:hover":{backgroundColor:"rgba(255, 255, 255, 0.08)"}}}),Y=function(e){return i(me,{children:e.items.map((function(e,o){return i(C,{component:"li",variant:"body2",children:e},o)}))})},$=function(e){var o,n;return i(fe,{className:!0===e.disabledSize?"disabled-size":"",children:i(I,{panel:{title:null!==(o=e.title)&&void 0!==o?o:"The search includes",content:e.renderContent?e.renderContent():i(Y,{items:null!==(n=e.items)&&void 0!==n?n:[]})},children:i(j,{fontSize:"small"})})})},q=t.forwardRef((function(o,n){return i(b,e(e({fullWidth:!0,autoComplete:"off",size:"small"},o),{},{inputRef:n}))})),G=function(o){return l(x,{position:"end",children:[o.keyword&&l(r,{children:[i(J,{size:"small",color:"primary",onClick:o.onEnterSearch,sx:{display:{xs:"none",md:"flex"}},children:l(C,{variant:"caption",children:["Type and hit ",i("b",{children:"Enter ⏎"})," to filter."]})}),i(z,{title:"Press Enter to filter",placement:"bottom",arrow:!0,children:i(g,{size:"small",color:"primary",sx:{display:{xs:"flex",md:"none"}},onClick:o.onEnterSearch,children:i(D,{fontSize:"small"})})})]}),o.keyword&&i(z,{title:"Press Esc to clear",placement:"bottom",arrow:!0,children:i(g,{size:"small",sx:{marginLeft:"8px",color:"text.error","&:hover":{color:"error.main"}},onClick:o.onClear,children:i(R,{fontSize:"small"})})}),o.notes&&i($,e({},o.notes))]})},J=u(c)({padding:"4px 6px",textTransform:"none",lineHeight:1,".MuiTypography-root":{fontWeight:600,b:{fontWeight:700,backgroundColor:f.blue[100],borderRadius:"4px",padding:"2px 4px"}}}),Q=t.forwardRef((function(n,r){var l=n.children,t=o(n,N);return i(V,e(e({size:"small",color:"error",startIcon:i(P,{}),ref:r},t),{},{children:l||"Clear all"}))})),V=u(c)({textTransform:"none",fontWeight:700}),X=t.forwardRef((function(o,n){return i(g,e(e({ref:n,size:"small",sx:{flex:"0 0 auto"}},o),{},{children:i(L,{})}))})),Z=function(o){var n=a(null);return i(r,{children:F((function(r){var t,a,d,u,s,c,f,m,v,p=r.filterState,g=r.filterBarConfigs,b=p.sort?H[null===(t=p.sort)||void 0===t?void 0:t.direction]:{},x=null===(a=g.fields)||void 0===a?void 0:a[null===(d=p.sort)||void 0===d?void 0:d.field],C=(null==x?void 0:x.label)||(null===(u=p.sort)||void 0===u||null===(u=u.field)||void 0===u?void 0:u.toString())||(null===(s=g.sortButton)||void 0===s?void 0:s.text);return C?l(h,{"aria-label":"Button Sort",size:"small",children:[i(ee,e(e(e({size:"small",color:"inherit",startIcon:b.icon||i(B,{fontSize:"small"}),onClick:function(e){e.stopPropagation(),n.current&&clearTimeout(n.current),n.current=setTimeout((function(){return function(){var e,o;if(null!==(e=p.sort)&&void 0!==e&&e.field){var n=null===(o=p.sort)||void 0===o?void 0:o.direction,i=n&&"asc"===n?"desc":"asc",l={field:p.sort.field,direction:i},t=A(p).changeSort(l,{area:"sortButton"});r.onFilterStateChange(t.build())}}()}),500)}},null===(v=g.sortButton)||void 0===v?void 0:v.wrapProps),o),{},{children:C})),i(ee,{size:"small",color:"inherit",sx:{p:0},onClick:function(e){return r.onPopperPanelChange(e.currentTarget,"sortButton")},children:i(E,{fontSize:"small"})})]}):i(ee,e(e(e({size:"small",color:"inherit",startIcon:b.icon||i(B,{fontSize:"small"}),endIcon:null!==(c=null===(f=g.sortButton)||void 0===f?void 0:f.icon)&&void 0!==c?c:i(E,{fontSize:"small"}),onClick:function(e){return r.onPopperPanelChange(e.currentTarget,"sortButton")}},null===(m=g.sortButton)||void 0===m?void 0:m.wrapProps),o),{},{children:C||"Sort"}))}))})},ee=u(c)((function(e){var o=e.theme;return{height:"var(--filter-bar-height, 40px)",padding:"0 16px",backgroundColor:"dark"===o.palette.mode?o.palette.background.paper:o.palette.grey[50],border:"1px solid var(--color-divider, rgba(145 158 171 / 20%))",textTransform:"none",fontWeight:600,":hover":{backgroundColor:"dark"===o.palette.mode?o.palette.grey[800]:f.grey[100]}}})),oe=function(e){var o=e.area;return i(m,{sx:{padding:"8px",textAlign:"center",border:"1px solid #ddd",borderRadius:"4px"},children:l(C,{variant:"body2",sx:{padding:"8px"},children:["No panel available for area: ",o]})})},ne=function(o){var n=o.label,r=o.notes,t=o.children,a=o.afterTopBar;return l(ie,{children:[l(m,{className:"top-bar",children:[i(C,{variant:"subtitle2",children:n}),a&&i(m,{className:"after-top-bar",children:a}),r&&i($,e({title:"The ".concat(n," includes"),disabledSize:!0},r))]}),i(m,{className:"content",children:t})]})},ie=u(m)({minWidth:"200px",borderRadius:"4px",overflow:"hidden",".top-bar":{display:"flex",alignItems:"center",background:f.grey[900],padding:"8px",gap:"8px",".MuiTypography-root":{color:f.common.white,flex:1}},".after-top-bar":{marginLeft:"8px"},".content":{padding:"8px"}}),re=function(e){var o,n,r,l,t,a=null!==(o=null===(n=e.fieldConfig)||void 0===n?void 0:n.label)&&void 0!==o?o:e.name;return i(ne,{label:a,notes:null===(r=e.fieldConfig)||void 0===r?void 0:r.notes,children:i(y,{autoFocus:!0,name:e.name,size:"small",fullWidth:!0,error:!(null===(l=e.validationResult)||void 0===l||!l.hasError),helperText:null===(t=e.validationResult)||void 0===t?void 0:t.message,sx:{".MuiInputBase-root":{minHeight:"42px"}}})})},le=function(e){var o,n,r,l,t,a=null!==(o=null===(n=e.fieldConfig)||void 0===n?void 0:n.label)&&void 0!==o?o:e.name;return i(ne,{label:a,notes:null===(r=e.fieldConfig)||void 0===r?void 0:r.notes,children:i(te,{name:e.name,className:null!==(l=e.validationResult)&&void 0!==l&&l.hasError?"error":"",onChange:e.onChange,children:null===(t=e.fieldConfig)||void 0===t?void 0:t.options.map((function(e,o){var n;return i(w,{value:e.value,control:i(k,{}),label:null!==(n=e.label)&&void 0!==n?n:e.value},e.value.toString()+o)}))})})},te=u(v)({marginLeft:"-8px",marginRight:"-8px","&.error .MuiRadio-root":{color:"#d32f2f"},".MuiFormControlLabel-root":{margin:0},".MuiFormControlLabel-root:hover":{backgroundColor:"rgba(25, 118, 210, 0.04)"}}),ae=function(e){var o,r,t,a,u,s=d("and"),c=n(s,2),f=c[0],m=c[1],v=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return l(ne,{label:v,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(_,{value:f,onChange:function(e,o){return m(o)}}),children:[i("input",{type:"hidden",name:"filterLogic",value:f}),i(de,{className:null!==(a=e.validationResult)&&void 0!==a&&a.hasError?"error":"",children:null===(u=e.fieldConfig)||void 0===u?void 0:u.options.map((function(o,n){var r;return i(w,{value:o.value,control:i(S,{name:e.name}),label:null!==(r=o.label)&&void 0!==r?r:o.value,onChange:e.onChange},o.value.toString()+n)}))})]})},de=u(p)({marginLeft:"-8px",marginRight:"-8px","&.error .MuiCheckbox-root":{color:"#d32f2f"},".MuiFormControlLabel-root":{margin:0},".MuiFormControlLabel-root:hover":{backgroundColor:"rgba(25, 118, 210, 0.04)"}});var ue=function(e){var o,r,t,a,u,s,c,f,v=d("before"),p=n(v,2),h=p[0],g=p[1],b=d(""),x=n(b,2),C=x[0],z=x[1],w=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return i(ne,{label:w,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(K,{value:h,onChange:function(e,o){return g(o)}}),children:l(m,{className:"content",children:[i("input",{type:"hidden",name:"dateLogic",value:h}),i("input",{hidden:!0,type:"text",name:e.name,readOnly:!0,value:(f=C,f&&/^\d{4}-\d{2}-\d{2}$/.test(f)?"".concat(f,"T00:00:00.0000000"):"")}),i(y,{autoFocus:!0,fullWidth:!0,type:"date",size:"small",value:C,onChange:function(e){return z(e.target.value)},error:!(null===(a=e.validationResult)||void 0===a||!a.hasError),helperText:null===(u=e.validationResult)||void 0===u?void 0:u.message,inputProps:{min:null===(s=e.fieldConfig)||void 0===s?void 0:s.minDate,max:null===(c=e.fieldConfig)||void 0===c?void 0:c.maxDate},sx:{".MuiInputBase-root":{minHeight:"42px"}}})]})})},se=function(e){var o,r,t,a,u,s,c,f,m,v,p=d("between"),h=n(p,2),g=h[0],b=h[1],x=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return l(ne,{label:x,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(O,{value:g,onChange:function(e,o){return b(o)}}),children:[i("input",{type:"hidden",name:"dateRangeLogic",value:g}),l(ce,{children:[i(y,{autoFocus:!0,fullWidth:!0,name:"".concat(e.name,"_start"),type:"date",size:"small",label:"From",error:!(null===(a=e.validationResult)||void 0===a||!a.hasError),sx:{marginBottom:1},InputLabelProps:{shrink:!0},inputProps:{min:null===(u=e.fieldConfig)||void 0===u?void 0:u.minDate,max:null===(s=e.fieldConfig)||void 0===s?void 0:s.maxDate}}),i(y,{fullWidth:!0,name:"".concat(e.name,"_end"),type:"date",size:"small",label:"To",error:!(null===(c=e.validationResult)||void 0===c||!c.hasError),helperText:null===(f=e.validationResult)||void 0===f?void 0:f.message,InputLabelProps:{shrink:!0},inputProps:{min:null===(m=e.fieldConfig)||void 0===m?void 0:m.minDate,max:null===(v=e.fieldConfig)||void 0===v?void 0:v.maxDate}})]})]})},ce=u(m)({display:"flex",flexDirection:"column",gap:"8px"}),fe=u(m)({display:"inline-flex",flex:"0 0 auto",justifyContent:"center",alignItems:"center","&:not(.disabled-size)":{width:"40px",height:"40px"}}),me=u("ul")({paddingLeft:"1.7rem",marginBottom:0,li:{position:"relative",textAlign:"justify","&::before":{content:'"►"',display:"block",position:"absolute",top:"50%",right:"calc(100% + 6px)",transform:"translateY(-50%)",fontSize:"0.9em"}}});export{Q as ClearAllButton,K as DateLogicToggle,O as DateRangeLogicToggle,X as FilterButton,q as FilterInput,G as FilterInputAdornment,_ as FilterLogicToggle,$ as FilterNotes,ue as MenuWithTypeDate,se as MenuWithTypeDateRange,le as MenuWithTypeSelect,ae as MenuWithTypeSelectMulti,re as MenuWithTypeString,oe as PanelNotFound,Z as SortButton,H as mapSortConfigs};
|
|
1
|
+
import{objectSpread2 as e,objectWithoutProperties as o,slicedToArray as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i,Fragment as r,jsxs as l}from"react/jsx-runtime";import t,{useRef as a,useState as d}from"react";import{styled as u,ToggleButtonGroup as s,Button as c,colors as f,Box as m,RadioGroup as v,FormGroup as p,ButtonGroup as h,IconButton as g,InputBase as b,InputAdornment as x,Typography as C,Tooltip as z,TextField as y,FormControlLabel as w,Checkbox as S,Radio as k,ToggleButton as T}from"@mui/material";import R from"@mui/icons-material/Close";import B from"@mui/icons-material/Shuffle";import P from"@mui/icons-material/ClearAll";import L from"@mui/icons-material/FilterList";import W from"@mui/icons-material/ArrowUpward";import M from"@mui/icons-material/ArrowDownward";import D from"@mui/icons-material/KeyboardReturn";import E from"@mui/icons-material/KeyboardArrowDown";import{mapDataViewContext as F}from"./context.js";import{RichTooltip as I,HelpOutlinePulseIcon as j}from"../components/rich-tooltip.js";import{createFilterStore as A}from"./filter-store.js";var N=["children"],H={asc:{title:"Ascending",icon:i(W,{fontSize:"small"})},desc:{title:"Descending",icon:i(M,{fontSize:"small"})}},_=function(e){return l(U,{size:"small",value:e.value||"and",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"and","aria-label":"and logic",children:"AND"}),i(T,{size:"small",value:"or","aria-label":"or logic",children:"OR"})]})},K=function(e){return l(U,{size:"small",value:e.value||"before",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"before","aria-label":"before date",children:"before"}),i(T,{size:"small",value:"after","aria-label":"after date",children:"after"})]})},O=function(e){return l(U,{size:"small",value:e.value||"between",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"between","aria-label":"between dates",children:"between"}),i(T,{size:"small",value:"not-between","aria-label":"not between dates",children:"not between"})]})},U=u(s)({"& .MuiToggleButton-root":{color:"#fff",borderColor:"rgba(255, 255, 255, 0.3)",fontSize:"0.65rem",fontWeight:600,lineHeight:1,minWidth:"40px",padding:"6px 8px","&.Mui-selected":{backgroundColor:"#1976d2",color:"#fff","&:hover":{backgroundColor:"#1565c0"}},"&:hover":{backgroundColor:"rgba(255, 255, 255, 0.08)"}}}),Y=function(e){return i(me,{children:e.items.map(function(e,o){return i(C,{component:"li",variant:"body2",children:e},o)})})},$=function(e){var o,n;return i(fe,{className:!0===e.disabledSize?"disabled-size":"",children:i(I,{panel:{title:null!==(o=e.title)&&void 0!==o?o:"The search includes",content:e.renderContent?e.renderContent():i(Y,{items:null!==(n=e.items)&&void 0!==n?n:[]})},children:i(j,{fontSize:"small"})})})},q=t.forwardRef(function(o,n){return i(b,e(e({fullWidth:!0,autoComplete:"off",size:"small"},o),{},{inputRef:n}))}),G=function(o){return l(x,{position:"end",children:[o.keyword&&l(r,{children:[i(J,{size:"small",color:"primary",onClick:o.onEnterSearch,sx:{display:{xs:"none",md:"flex"}},children:l(C,{variant:"caption",children:["Type and hit ",i("b",{children:"Enter ⏎"})," to filter."]})}),i(z,{title:"Press Enter to filter",placement:"bottom",arrow:!0,children:i(g,{size:"small",color:"primary",sx:{display:{xs:"flex",md:"none"}},onClick:o.onEnterSearch,children:i(D,{fontSize:"small"})})})]}),o.keyword&&i(z,{title:"Press Esc to clear",placement:"bottom",arrow:!0,children:i(g,{size:"small",sx:{marginLeft:"8px",color:"text.error","&:hover":{color:"error.main"}},onClick:o.onClear,children:i(R,{fontSize:"small"})})}),o.notes&&i($,e({},o.notes))]})},J=u(c)({padding:"4px 6px",textTransform:"none",lineHeight:1,".MuiTypography-root":{fontWeight:600,b:{fontWeight:700,backgroundColor:f.blue[100],borderRadius:"4px",padding:"2px 4px"}}}),Q=t.forwardRef(function(n,r){var l=n.children,t=o(n,N);return i(V,e(e({size:"small",color:"error",startIcon:i(P,{}),ref:r},t),{},{children:l||"Clear all"}))}),V=u(c)({textTransform:"none",fontWeight:700}),X=t.forwardRef(function(o,n){return i(g,e(e({ref:n,size:"small",sx:{flex:"0 0 auto"}},o),{},{children:i(L,{})}))}),Z=function(o){var n=a(null);return i(r,{children:F(function(r){var t,a,d,u,s,c,f,m,v,p=r.filterState,g=r.filterBarConfigs,b=p.sort?H[null===(t=p.sort)||void 0===t?void 0:t.direction]:{},x=null===(a=g.fields)||void 0===a?void 0:a[null===(d=p.sort)||void 0===d?void 0:d.field],C=(null==x?void 0:x.label)||(null===(u=p.sort)||void 0===u||null===(u=u.field)||void 0===u?void 0:u.toString())||(null===(s=g.sortButton)||void 0===s?void 0:s.text);return C?l(h,{"aria-label":"Button Sort",size:"small",children:[i(ee,e(e(e({size:"small",color:"inherit",startIcon:b.icon||i(B,{fontSize:"small"}),onClick:function(e){e.stopPropagation(),n.current&&clearTimeout(n.current),n.current=setTimeout(function(){return function(){var e,o;if(null!==(e=p.sort)&&void 0!==e&&e.field){var n=null===(o=p.sort)||void 0===o?void 0:o.direction,i=n&&"asc"===n?"desc":"asc",l={field:p.sort.field,direction:i},t=A(p).changeSort(l,{area:"sortButton"});r.onFilterStateChange(t.build())}}()},500)}},null===(v=g.sortButton)||void 0===v?void 0:v.wrapProps),o),{},{children:C})),i(ee,{size:"small",color:"inherit",sx:{p:0},onClick:function(e){return r.onPopperPanelChange(e.currentTarget,"sortButton")},children:i(E,{fontSize:"small"})})]}):i(ee,e(e(e({size:"small",color:"inherit",startIcon:b.icon||i(B,{fontSize:"small"}),endIcon:null!==(c=null===(f=g.sortButton)||void 0===f?void 0:f.icon)&&void 0!==c?c:i(E,{fontSize:"small"}),onClick:function(e){return r.onPopperPanelChange(e.currentTarget,"sortButton")}},null===(m=g.sortButton)||void 0===m?void 0:m.wrapProps),o),{},{children:C||"Sort"}))})})},ee=u(c)(function(e){var o=e.theme;return{height:"var(--filter-bar-height, 40px)",padding:"0 16px",backgroundColor:"dark"===o.palette.mode?o.palette.background.paper:o.palette.grey[50],border:"1px solid var(--color-divider, rgba(145 158 171 / 20%))",textTransform:"none",fontWeight:600,":hover":{backgroundColor:"dark"===o.palette.mode?o.palette.grey[800]:f.grey[100]}}}),oe=function(e){var o=e.area;return i(m,{sx:{padding:"8px",textAlign:"center",border:"1px solid #ddd",borderRadius:"4px"},children:l(C,{variant:"body2",sx:{padding:"8px"},children:["No panel available for area: ",o]})})},ne=function(o){var n=o.label,r=o.notes,t=o.children,a=o.afterTopBar;return l(ie,{children:[l(m,{className:"top-bar",children:[i(C,{variant:"subtitle2",children:n}),a&&i(m,{className:"after-top-bar",children:a}),r&&i($,e({title:"The ".concat(n," includes"),disabledSize:!0},r))]}),i(m,{className:"content",children:t})]})},ie=u(m)({minWidth:"200px",borderRadius:"4px",overflow:"hidden",".top-bar":{display:"flex",alignItems:"center",background:f.grey[900],padding:"8px",gap:"8px",".MuiTypography-root":{color:f.common.white,flex:1}},".after-top-bar":{marginLeft:"8px"},".content":{padding:"8px"}}),re=function(e){var o,n,r,l,t,a=null!==(o=null===(n=e.fieldConfig)||void 0===n?void 0:n.label)&&void 0!==o?o:e.name;return i(ne,{label:a,notes:null===(r=e.fieldConfig)||void 0===r?void 0:r.notes,children:i(y,{autoFocus:!0,name:e.name,size:"small",fullWidth:!0,error:!(null===(l=e.validationResult)||void 0===l||!l.hasError),helperText:null===(t=e.validationResult)||void 0===t?void 0:t.message,sx:{".MuiInputBase-root":{minHeight:"42px"}}})})},le=function(e){var o,n,r,l,t,a=null!==(o=null===(n=e.fieldConfig)||void 0===n?void 0:n.label)&&void 0!==o?o:e.name;return i(ne,{label:a,notes:null===(r=e.fieldConfig)||void 0===r?void 0:r.notes,children:i(te,{name:e.name,className:null!==(l=e.validationResult)&&void 0!==l&&l.hasError?"error":"",onChange:e.onChange,children:null===(t=e.fieldConfig)||void 0===t?void 0:t.options.map(function(e,o){var n;return i(w,{value:e.value,control:i(k,{}),label:null!==(n=e.label)&&void 0!==n?n:e.value},e.value.toString()+o)})})})},te=u(v)({marginLeft:"-8px",marginRight:"-8px","&.error .MuiRadio-root":{color:"#d32f2f"},".MuiFormControlLabel-root":{margin:0},".MuiFormControlLabel-root:hover":{backgroundColor:"rgba(25, 118, 210, 0.04)"}}),ae=function(e){var o,r,t,a,u,s=d("and"),c=n(s,2),f=c[0],m=c[1],v=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return l(ne,{label:v,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(_,{value:f,onChange:function(e,o){return m(o)}}),children:[i("input",{type:"hidden",name:"filterLogic",value:f}),i(de,{className:null!==(a=e.validationResult)&&void 0!==a&&a.hasError?"error":"",children:null===(u=e.fieldConfig)||void 0===u?void 0:u.options.map(function(o,n){var r;return i(w,{value:o.value,control:i(S,{name:e.name}),label:null!==(r=o.label)&&void 0!==r?r:o.value,onChange:e.onChange},o.value.toString()+n)})})]})},de=u(p)({marginLeft:"-8px",marginRight:"-8px","&.error .MuiCheckbox-root":{color:"#d32f2f"},".MuiFormControlLabel-root":{margin:0},".MuiFormControlLabel-root:hover":{backgroundColor:"rgba(25, 118, 210, 0.04)"}});var ue=function(e){var o,r,t,a,u,s,c,f,v=d("before"),p=n(v,2),h=p[0],g=p[1],b=d(""),x=n(b,2),C=x[0],z=x[1],w=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return i(ne,{label:w,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(K,{value:h,onChange:function(e,o){return g(o)}}),children:l(m,{className:"content",children:[i("input",{type:"hidden",name:"dateLogic",value:h}),i("input",{hidden:!0,type:"text",name:e.name,readOnly:!0,value:(f=C,f&&/^\d{4}-\d{2}-\d{2}$/.test(f)?"".concat(f,"T00:00:00.0000000"):"")}),i(y,{autoFocus:!0,fullWidth:!0,type:"date",size:"small",value:C,onChange:function(e){return z(e.target.value)},error:!(null===(a=e.validationResult)||void 0===a||!a.hasError),helperText:null===(u=e.validationResult)||void 0===u?void 0:u.message,inputProps:{min:null===(s=e.fieldConfig)||void 0===s?void 0:s.minDate,max:null===(c=e.fieldConfig)||void 0===c?void 0:c.maxDate},sx:{".MuiInputBase-root":{minHeight:"42px"}}})]})})},se=function(e){var o,r,t,a,u,s,c,f,m,v,p=d("between"),h=n(p,2),g=h[0],b=h[1],x=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return l(ne,{label:x,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(O,{value:g,onChange:function(e,o){return b(o)}}),children:[i("input",{type:"hidden",name:"dateRangeLogic",value:g}),l(ce,{children:[i(y,{autoFocus:!0,fullWidth:!0,name:"".concat(e.name,"_start"),type:"date",size:"small",label:"From",error:!(null===(a=e.validationResult)||void 0===a||!a.hasError),sx:{marginBottom:1},InputLabelProps:{shrink:!0},inputProps:{min:null===(u=e.fieldConfig)||void 0===u?void 0:u.minDate,max:null===(s=e.fieldConfig)||void 0===s?void 0:s.maxDate}}),i(y,{fullWidth:!0,name:"".concat(e.name,"_end"),type:"date",size:"small",label:"To",error:!(null===(c=e.validationResult)||void 0===c||!c.hasError),helperText:null===(f=e.validationResult)||void 0===f?void 0:f.message,InputLabelProps:{shrink:!0},inputProps:{min:null===(m=e.fieldConfig)||void 0===m?void 0:m.minDate,max:null===(v=e.fieldConfig)||void 0===v?void 0:v.maxDate}})]})]})},ce=u(m)({display:"flex",flexDirection:"column",gap:"8px"}),fe=u(m)({display:"inline-flex",flex:"0 0 auto",justifyContent:"center",alignItems:"center","&:not(.disabled-size)":{width:"40px",height:"40px"}}),me=u("ul")({paddingLeft:"1.7rem",marginBottom:0,li:{position:"relative",textAlign:"justify","&::before":{content:'"►"',display:"block",position:"absolute",top:"50%",right:"calc(100% + 6px)",transform:"translateY(-50%)",fontSize:"0.9em"}}});export{Q as ClearAllButton,K as DateLogicToggle,O as DateRangeLogicToggle,X as FilterButton,q as FilterInput,G as FilterInputAdornment,_ as FilterLogicToggle,$ as FilterNotes,ue as MenuWithTypeDate,se as MenuWithTypeDateRange,le as MenuWithTypeSelect,ae as MenuWithTypeSelectMulti,re as MenuWithTypeString,oe as PanelNotFound,Z as SortButton,H as mapSortConfigs};
|
|
2
2
|
//# sourceMappingURL=ui.units.js.map
|