dinocollab-core 1.0.19 → 1.0.21
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/README.md +1 -1
- package/dist/_virtual/_rollupPluginBabelHelpers.js +1 -1
- package/dist/filter-bar/base.js +1 -1
- package/dist/filter-bar/base.js.map +1 -1
- package/dist/filter-bar/create.filter-bar.js +1 -1
- package/dist/filter-bar/create.filter-bar.js.map +1 -1
- package/dist/filter-bar/create.filter-menu.js +1 -1
- package/dist/filter-bar/create.filter-menu.js.map +1 -1
- package/dist/filter-bar/create.filter-panel.js +1 -1
- package/dist/filter-bar/create.filter-panel.js.map +1 -1
- package/dist/filter-bar/create.filtered.js +1 -1
- package/dist/filter-bar/create.filtered.js.map +1 -1
- package/dist/filter-bar/types.js.map +1 -1
- package/dist/filter-bar/ui.units.js +1 -1
- package/dist/filter-bar/ui.units.js.map +1 -1
- package/dist/form/create.autocomplete.chips.js.map +1 -1
- package/dist/form/create.form-base.js +1 -1
- package/dist/form/create.form-base.js.map +1 -1
- package/dist/form/create.form-grid-layout.js +1 -1
- package/dist/form/create.form-grid-layout.js.map +1 -1
- package/dist/form/create.input-file.csv-local-parser.js.map +1 -1
- package/dist/form/create.input.js +1 -1
- package/dist/form/create.input.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/table/create.table.js +1 -1
- package/dist/table/create.table.js.map +1 -1
- package/dist/table-grid/create.table-grid.js +1 -1
- package/dist/table-grid/create.table-grid.js.map +1 -1
- package/dist/types/filter-bar/base.d.ts +10 -16
- package/dist/types/filter-bar/create.filter-bar.d.ts +3 -91
- package/dist/types/filter-bar/create.filter-menu.d.ts +6 -59
- package/dist/types/filter-bar/create.filter-panel.d.ts +7 -111
- package/dist/types/filter-bar/create.filtered.d.ts +11 -8
- package/dist/types/filter-bar/create.sort-menu.d.ts +1 -7
- package/dist/types/filter-bar/index.d.ts +0 -1
- package/dist/types/filter-bar/types.d.ts +42 -23
- package/dist/types/filter-bar/ui.units.d.ts +4 -3
- package/dist/types/form/create.autocomplete.chips.d.ts +3 -3
- package/dist/types/form/create.form-base.d.ts +15 -21
- package/dist/types/form/create.form-grid-layout.units.d.ts +6 -2
- package/dist/types/form/create.input-file.csv-local-parser.d.ts +1 -2
- package/dist/types/form/create.input.d.ts +1 -2
- package/dist/types/form/dino-form.d.ts +4 -2
- package/dist/types/form/types.d.ts +18 -7
- package/dist/types/table-grid/types.d.ts +2 -2
- package/dist/types/utils/helpers.d.ts +1 -0
- package/dist/utils/helpers.js +1 -1
- package/dist/utils/helpers.js.map +1 -1
- package/package.json +5 -2
- package/dist/filter-bar/create.sort-menu.js +0 -2
- package/dist/filter-bar/create.sort-menu.js.map +0 -1
- package/dist/types/filter-bar/demo.d.ts +0 -3
- package/dist/types/lab/create.autocomplete.simple.d.ts +0 -19
- package/dist/types/lab/create.dino-store.d.ts +0 -1
- package/dist/types/lab/grafana-dashboard/configs.d.ts +0 -4
- package/dist/types/lab/grafana-dashboard/date-time-range/absolute-time-rage.d.ts +0 -14
- package/dist/types/lab/grafana-dashboard/date-time-range/helpers.d.ts +0 -36
- package/dist/types/lab/grafana-dashboard/date-time-range/index.d.ts +0 -24
- package/dist/types/lab/grafana-dashboard/date-time-range/menu-wrap.d.ts +0 -19
- package/dist/types/lab/grafana-dashboard/date-time-range/quick-ranges.d.ts +0 -20
- package/dist/types/lab/grafana-dashboard/date-time-range/types.d.ts +0 -8
- package/dist/types/lab/grafana-dashboard/date-time-range/units.d.ts +0 -2
- package/dist/types/lab/grafana-dashboard/helper.d.ts +0 -7
- package/dist/types/lab/grafana-dashboard/hooks.d.ts +0 -10
- package/dist/types/lab/grafana-dashboard/icons.d.ts +0 -5
- package/dist/types/lab/grafana-dashboard/index.d.ts +0 -12
- package/dist/types/lab/grafana-dashboard/top-bar.d.ts +0 -19
- package/dist/types/lab/grafana-dashboard/top-bar.types.d.ts +0 -4
- package/dist/types/lab/grafana-dashboard/types.d.ts +0 -8
- package/dist/types/lab/media-player.core1.d.ts +0 -14
- package/dist/types/lab/media-player.muted.d.ts +0 -10
- package/dist/types/lab/media-player.units.d.ts +0 -36
- package/dist/types/lab/select-mul-with-api/create.select-mul-with-api.d.ts +0 -26
- package/dist/types/lab/select-mul-with-api/index.d.ts +0 -2
- package/dist/types/lab/select-mul-with-api/table-custom.d.ts +0 -43
- package/dist/types/lab/select-mul-with-api/types.d.ts +0 -21
- package/dist/types/lab/select-mul-with-api/ui.units.d.ts +0 -29
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.table.js","sources":["../../src/table/create.table.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, BoxProps, styled } from '@mui/material'\r\nimport { DataGrid, DataGridProps, GridColDef, GridFeatureMode, GridFilterOperator } from '@mui/x-data-grid'\r\nimport { GridSortModel, GridValidRowModel, GridRowIdGetter, GridRowSelectionModel } from '@mui/x-data-grid'\r\nimport { GridCallbackDetails, GridColumnVisibilityModel, GridDensity, GridFilterModel, GridPaginationModel } from '@mui/x-data-grid'\r\nimport { mergeObjects } from '../utils'\r\nimport { TableBaseContext } from './context'\r\nimport { IActionRowProps } from './create.action-row'\r\nimport { customFilterOperators } from './custom.filter-operators'\r\nimport { GlobalModal, mapGlobalModalContext } from '../api-context'\r\nimport { ICustomGridColDef, ICustomGridFilterModel, ICustomGridSortModel, ITableData, ITableQueryParams } from './types'\r\nimport TableHelper, { dinoTableClasses } from './helpers'\r\nimport ToolbarPannel, { IToolbarPannelProps } from './toolbar-pannel'\r\n\r\nexport interface ITableSlots<T> {\r\n maxSelection?: number\r\n density?: GridDensity\r\n toolbar?: React.ComponentType<IToolbarPannelProps>\r\n actionRow?: React.ComponentType<IActionRowProps<T>>\r\n toolbarProps?: IToolbarPannelProps\r\n dataGridProps?: DataGridProps\r\n}\r\n\r\nexport type ITableParamsSlots<T> = Pick<ITableSlots<T>, 'maxSelection' | 'toolbarProps' | 'dataGridProps'>\r\n\r\nexport interface ITableProps<T> {\r\n data?: ITableData<T>\r\n query?: ITableQueryParams<T>\r\n onChange?: (query: ITableQueryParams<T>) => void\r\n onRowSelectionChange?: DataGridProps['onRowSelectionModelChange']\r\n slots?: ITableSlots<T>\r\n}\r\n\r\nexport interface ITableParams<T extends GridValidRowModel> extends ITableParamsSlots<T> {\r\n featureMode?: GridFeatureMode\r\n getRowId: GridRowIdGetter<T>\r\n columns: ICustomGridColDef<T>\r\n filterOperators?: (config: GridColDef) => GridFilterOperator[]\r\n columnVisibilityModel?: Partial<Record<keyof T, boolean>>\r\n actionRow?: Omit<GridColDef, 'field'>\r\n}\r\n\r\nfunction CreateTable<T extends GridValidRowModel>(params: ITableParams<T>): ComponentType<ITableProps<T>> {\r\n const generateColumns = (extendColDefs?: GridColDef[]) => {\r\n const columns = Object.keys(params.columns).map<GridColDef>((key) => {\r\n const obj = { field: key, ...params.columns[key] }\r\n obj.filterOperators = params.filterOperators ? params.filterOperators(obj) : customFilterOperators(obj)\r\n return obj\r\n })\r\n\r\n if (!!extendColDefs && extendColDefs.length > 0) columns.push(...extendColDefs)\r\n return columns\r\n }\r\n\r\n class Table extends Component<ITableProps<T>> {\r\n private tableQueryParams: ITableQueryParams<T>\r\n private tableQueryParamsCache: ITableQueryParams<T> = {}\r\n private defaultTableQueryParams: ITableQueryParams<T>\r\n private columns: GridColDef<T>[]\r\n private rowSelecteds: GridRowSelectionModel\r\n constructor(props: ITableProps<T>) {\r\n super(props)\r\n this.columns = this.initialColumns()\r\n this.tableQueryParams = { ...props.query }\r\n this.defaultTableQueryParams = this.tableQueryParams\r\n this.rowSelecteds = []\r\n }\r\n\r\n get mergeConfig() {\r\n const toolbarPannelProps = mergeObjects({}, params?.toolbarProps, this.props.slots?.toolbarProps)\r\n return {\r\n toolbar: this.props.slots?.toolbar ?? (() => <ToolbarPannel {...toolbarPannelProps} />),\r\n ActionRow: this.props.slots?.actionRow,\r\n columnVisibilityModel: params.columnVisibilityModel,\r\n maxSelcion: this.props.slots?.maxSelection ?? params.maxSelection,\r\n dataGridProps: mergeObjects({}, params.dataGridProps, this.props.slots?.dataGridProps)\r\n }\r\n }\r\n\r\n setTableQueryParams = (value: Partial<ITableQueryParams<T>>) => {\r\n this.tableQueryParams = mergeObjects({}, this.tableQueryParams, value)\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<ITableProps<T>>): boolean {\r\n if (params.featureMode === 'server' && !TableHelper.equalTableQueryParams(nextProps.query, this.props.query)) {\r\n this.setTableQueryParams(nextProps.query ?? {})\r\n return true\r\n } else if (params.featureMode !== 'server') {\r\n return true\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n render() {\r\n return this.renderWrapContext(\r\n <Wrap>\r\n <DataGrid {...this.getDataGridProps()} />\r\n </Wrap>\r\n )\r\n }\r\n\r\n renderWrapContext = (children: React.ReactNode) => (\r\n <GlobalModal>\r\n {mapGlobalModalContext((context) => (\r\n <TableBaseContext.Provider value={{ showModal: context.show, closeModal: context.close }}>{children}</TableBaseContext.Provider>\r\n ))}\r\n </GlobalModal>\r\n )\r\n\r\n getDataGridProps = (): DataGridProps<T> => {\r\n const mergeConfig = this.mergeConfig\r\n const obj: DataGridProps<T> = {\r\n getRowId: params.getRowId,\r\n columns: this.columns,\r\n rows: this.props.data?.items ?? [],\r\n checkboxSelection: true,\r\n pagination: true,\r\n density: this.props.slots?.density ?? 'standard',\r\n initialState: TableHelper.mapInitialState(this.props.query, {\r\n columns: { columnVisibilityModel: params.columnVisibilityModel as GridColumnVisibilityModel }\r\n }),\r\n filterDebounceMs: 800,\r\n sx: { border: 0 },\r\n slots: { toolbar: mergeConfig.toolbar },\r\n rowSelectionModel: this.rowSelecteds,\r\n onRowSelectionModelChange: this.handleRowSelectionChange\r\n }\r\n if (params.featureMode === 'server') {\r\n const objServer: Partial<DataGridProps<T>> = {\r\n filterMode: 'server',\r\n sortingMode: 'server',\r\n paginationMode: 'server',\r\n onPaginationModelChange: this.onPaginationModelChange,\r\n onFilterModelChange: this.onFilterModelChange,\r\n onSortModelChange: this.onSortModelChange,\r\n rowCount: this.props.data?.rowTotal ?? 0,\r\n paginationModel: this.tableQueryParams.pagination,\r\n filterModel: this.tableQueryParams.filter as GridFilterModel,\r\n sortModel: TableHelper.mapSortModel(this.tableQueryParams.sort),\r\n loading: this.tableQueryParams.loading\r\n }\r\n Object.assign(obj, objServer)\r\n }\r\n return mergeObjects(obj, this.mergeConfig.dataGridProps)\r\n }\r\n\r\n initialColumns = (): GridColDef<T>[] => {\r\n const { ActionRow } = this.mergeConfig\r\n const list: GridColDef<T>[] = []\r\n if (!!ActionRow) {\r\n list.push({\r\n field: 'Actions',\r\n minWidth: 100,\r\n headerAlign: 'right',\r\n align: 'right',\r\n filterable: false,\r\n sortable: false,\r\n renderCell: (value) => <ActionRow value={value.row} />,\r\n ...params.actionRow\r\n })\r\n }\r\n return generateColumns(list)\r\n }\r\n\r\n onPaginationModelChange = (model: GridPaginationModel, details: GridCallbackDetails<'pagination'>) => {\r\n this.setTableQueryParams({ pagination: model, detail: 'pagination' })\r\n this.handleChange()\r\n }\r\n\r\n onFilterModelChange = (model: GridFilterModel, details: GridCallbackDetails<'filter'>) => {\r\n const { pagination } = this.tableQueryParams\r\n this.setTableQueryParams({\r\n filter: model as ICustomGridFilterModel<T>,\r\n pagination: { page: 0, pageSize: pagination?.pageSize ?? 25 },\r\n detail: TableHelper.detectSearchType(model)\r\n })\r\n this.handleChange()\r\n }\r\n\r\n onSortModelChange = (model: GridSortModel, details: GridCallbackDetails<any>) => {\r\n let sortValue = model as ICustomGridSortModel<T>\r\n const { sort } = this.tableQueryParams\r\n if (!!sort?.length && !sortValue.length) {\r\n if (sort?.[0]?.field === this.defaultTableQueryParams.sort?.[0]?.field) {\r\n sortValue = [{ field: sort[0]?.field, sort: sort[0]?.sort === 'desc' ? 'asc' : 'desc' }]\r\n } else {\r\n sortValue = this.defaultTableQueryParams.sort ?? []\r\n }\r\n }\r\n this.setTableQueryParams({ sort: sortValue, detail: 'sort' })\r\n this.handleChange()\r\n }\r\n\r\n handleChange = () => {\r\n // const check = TableHelper.isEmpty(this.tableQueryParams)\r\n // const checkCache = TableHelper.isEmpty(this.tableQueryParamsCache)\r\n // const isChange = this.props.onChange && this.props.onChange(this.tableQueryParams)\r\n this.tableQueryParamsCache = this.tableQueryParams\r\n }\r\n\r\n handleRowSelectionChange = (value: GridRowSelectionModel, details: GridCallbackDetails) => {\r\n if (this.mergeConfig.maxSelcion && value.length > this.mergeConfig.maxSelcion) {\r\n this.rowSelecteds = value.slice(0, this.mergeConfig.maxSelcion)\r\n } else {\r\n this.rowSelecteds = value\r\n }\r\n this.props.onRowSelectionChange && this.props.onRowSelectionChange(this.rowSelecteds, details)\r\n this.forceUpdate()\r\n }\r\n }\r\n\r\n return Table\r\n}\r\n\r\nexport default CreateTable\r\n\r\nconst Wrap = styled(({ children, ...p }: BoxProps) => (\r\n <Box {...p}>\r\n <div>{children}</div>\r\n </Box>\r\n))({\r\n flex: 1,\r\n position: 'relative',\r\n '& > div': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n overflowY: 'auto'\r\n },\r\n '& .MuiDataGrid-root': {\r\n '--unstable_DataGrid-radius': 0\r\n },\r\n [`& .MuiDataGrid-cell.${dinoTableClasses.whiteSpacePre} .MuiDataGrid-cellContent`]: {\r\n whiteSpace: 'pre'\r\n }\r\n})\r\n"],"names":["CreateTable","params","Table","props","_this","_classCallCheck","_callSuper","_defineProperty","value","tableQueryParams","mergeObjects","children","_jsx","GlobalModal","mapGlobalModalContext","context","TableBaseContext","Provider","showModal","show","closeModal","close","_this$props$data$item","_this$props$data","_this$props$slots$den","_this$props$slots","mergeConfig","obj","getRowId","columns","rows","data","items","checkboxSelection","pagination","density","slots","initialState","TableHelper","mapInitialState","query","columnVisibilityModel","filterDebounceMs","sx","border","toolbar","rowSelectionModel","rowSelecteds","onRowSelectionModelChange","handleRowSelectionChange","featureMode","_this$props$data$rowT","_this$props$data2","objServer","filterMode","sortingMode","paginationMode","onPaginationModelChange","onFilterModelChange","onSortModelChange","rowCount","rowTotal","paginationModel","filterModel","filter","sortModel","mapSortModel","sort","loading","Object","assign","dataGridProps","extendColDefs","ActionRow","list","push","_objectSpread","field","minWidth","headerAlign","align","filterable","sortable","renderCell","row","actionRow","keys","map","key","filterOperators","customFilterOperators","length","apply","_toConsumableArray","model","details","setTableQueryParams","detail","handleChange","_pagination$pageSize","page","pageSize","detectSearchType","_sort$","_this$defaultTableQue","_sort$2","_sort$3","_this$defaultTableQue2","sortValue","defaultTableQueryParams","tableQueryParamsCache","maxSelcion","slice","onRowSelectionChange","forceUpdate","initialColumns","_inherits","Component","_createClass","get","_this$props$slots2","_this$props$slots$too","_this$props$slots3","_this$props$slots4","_this$props$slots$max","_this$props$slots5","_this$props$slots6","toolbarPannelProps","toolbarProps","this","ToolbarPannel","maxSelection","nextProps","equalTableQueryParams","_nextProps$query","renderWrapContext","Wrap","DataGrid","getDataGridProps","styled","_ref","p","_objectWithoutProperties","_excluded","Box","flex","position","top","left","width","height","overflowY","concat","dinoTableClasses","whiteSpacePre","whiteSpace"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.table.js","sources":["../../src/table/create.table.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, BoxProps, styled } from '@mui/material'\r\nimport { DataGrid, DataGridProps, GridColDef, GridFeatureMode, GridFilterOperator } from '@mui/x-data-grid'\r\nimport { GridSortModel, GridValidRowModel, GridRowIdGetter, GridRowSelectionModel } from '@mui/x-data-grid'\r\nimport { GridCallbackDetails, GridColumnVisibilityModel, GridDensity, GridFilterModel, GridPaginationModel } from '@mui/x-data-grid'\r\nimport { mergeObjects } from '../utils'\r\nimport { TableBaseContext } from './context'\r\nimport { IActionRowProps } from './create.action-row'\r\nimport { customFilterOperators } from './custom.filter-operators'\r\nimport { GlobalModal, mapGlobalModalContext } from '../api-context'\r\nimport { ICustomGridColDef, ICustomGridFilterModel, ICustomGridSortModel, ITableData, ITableQueryParams } from './types'\r\nimport TableHelper, { dinoTableClasses } from './helpers'\r\nimport ToolbarPannel, { IToolbarPannelProps } from './toolbar-pannel'\r\n\r\nexport interface ITableSlots<T> {\r\n maxSelection?: number\r\n density?: GridDensity\r\n toolbar?: React.ComponentType<IToolbarPannelProps>\r\n actionRow?: React.ComponentType<IActionRowProps<T>>\r\n toolbarProps?: IToolbarPannelProps\r\n dataGridProps?: DataGridProps\r\n}\r\n\r\nexport type ITableParamsSlots<T> = Pick<ITableSlots<T>, 'maxSelection' | 'toolbarProps' | 'dataGridProps'>\r\n\r\nexport interface ITableProps<T> {\r\n data?: ITableData<T>\r\n query?: ITableQueryParams<T>\r\n onChange?: (query: ITableQueryParams<T>) => void\r\n onRowSelectionChange?: DataGridProps['onRowSelectionModelChange']\r\n slots?: ITableSlots<T>\r\n}\r\n\r\nexport interface ITableParams<T extends GridValidRowModel> extends ITableParamsSlots<T> {\r\n featureMode?: GridFeatureMode\r\n getRowId: GridRowIdGetter<T>\r\n columns: ICustomGridColDef<T>\r\n filterOperators?: (config: GridColDef) => GridFilterOperator[]\r\n columnVisibilityModel?: Partial<Record<keyof T, boolean>>\r\n actionRow?: Omit<GridColDef, 'field'>\r\n}\r\n\r\nfunction CreateTable<T extends GridValidRowModel>(params: ITableParams<T>): ComponentType<ITableProps<T>> {\r\n const generateColumns = (extendColDefs?: GridColDef[]) => {\r\n const columns = Object.keys(params.columns).map<GridColDef>((key) => {\r\n const obj = { field: key, ...params.columns[key] }\r\n obj.filterOperators = params.filterOperators ? params.filterOperators(obj) : customFilterOperators(obj)\r\n return obj\r\n })\r\n\r\n if (!!extendColDefs && extendColDefs.length > 0) columns.push(...extendColDefs)\r\n return columns\r\n }\r\n\r\n class Table extends Component<ITableProps<T>> {\r\n private tableQueryParams: ITableQueryParams<T>\r\n // private tableQueryParamsCache: ITableQueryParams<T> = {}\r\n private defaultTableQueryParams: ITableQueryParams<T>\r\n private columns: GridColDef<T>[]\r\n private rowSelecteds: GridRowSelectionModel\r\n constructor(props: ITableProps<T>) {\r\n super(props)\r\n this.columns = this.initialColumns()\r\n this.tableQueryParams = { ...props.query }\r\n this.defaultTableQueryParams = this.tableQueryParams\r\n this.rowSelecteds = []\r\n }\r\n\r\n get mergeConfig() {\r\n const toolbarPannelProps = mergeObjects({}, params?.toolbarProps, this.props.slots?.toolbarProps)\r\n return {\r\n toolbar: this.props.slots?.toolbar ?? (() => <ToolbarPannel {...toolbarPannelProps} />),\r\n ActionRow: this.props.slots?.actionRow,\r\n columnVisibilityModel: params.columnVisibilityModel,\r\n maxSelcion: this.props.slots?.maxSelection ?? params.maxSelection,\r\n dataGridProps: mergeObjects({}, params.dataGridProps, this.props.slots?.dataGridProps)\r\n }\r\n }\r\n\r\n setTableQueryParams = (value: Partial<ITableQueryParams<T>>) => {\r\n this.tableQueryParams = mergeObjects({}, this.tableQueryParams, value)\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<ITableProps<T>>): boolean {\r\n if (params.featureMode === 'server' && !TableHelper.equalTableQueryParams(nextProps.query, this.props.query)) {\r\n this.setTableQueryParams(nextProps.query ?? {})\r\n return true\r\n } else if (params.featureMode !== 'server') {\r\n return true\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n render() {\r\n return this.renderWrapContext(\r\n <Wrap>\r\n <DataGrid {...this.getDataGridProps()} />\r\n </Wrap>\r\n )\r\n }\r\n\r\n renderWrapContext = (children: React.ReactNode) => (\r\n <GlobalModal>\r\n {mapGlobalModalContext((context) => (\r\n <TableBaseContext.Provider value={{ showModal: context.show, closeModal: context.close }}>{children}</TableBaseContext.Provider>\r\n ))}\r\n </GlobalModal>\r\n )\r\n\r\n getDataGridProps = (): DataGridProps<T> => {\r\n const mergeConfig = this.mergeConfig\r\n const obj: DataGridProps<T> = {\r\n getRowId: params.getRowId,\r\n columns: this.columns,\r\n rows: this.props.data?.items ?? [],\r\n checkboxSelection: true,\r\n pagination: true,\r\n density: this.props.slots?.density ?? 'standard',\r\n initialState: TableHelper.mapInitialState(this.props.query, {\r\n columns: { columnVisibilityModel: params.columnVisibilityModel as GridColumnVisibilityModel }\r\n }),\r\n filterDebounceMs: 800,\r\n sx: { border: 0 },\r\n slots: { toolbar: mergeConfig.toolbar },\r\n rowSelectionModel: this.rowSelecteds,\r\n onRowSelectionModelChange: this.handleRowSelectionChange\r\n }\r\n if (params.featureMode === 'server') {\r\n const objServer: Partial<DataGridProps<T>> = {\r\n filterMode: 'server',\r\n sortingMode: 'server',\r\n paginationMode: 'server',\r\n onPaginationModelChange: this.onPaginationModelChange,\r\n onFilterModelChange: this.onFilterModelChange,\r\n onSortModelChange: this.onSortModelChange,\r\n rowCount: this.props.data?.rowTotal ?? 0,\r\n paginationModel: this.tableQueryParams.pagination,\r\n filterModel: this.tableQueryParams.filter as GridFilterModel,\r\n sortModel: TableHelper.mapSortModel(this.tableQueryParams.sort),\r\n loading: this.tableQueryParams.loading\r\n }\r\n Object.assign(obj, objServer)\r\n }\r\n return mergeObjects(obj, this.mergeConfig.dataGridProps)\r\n }\r\n\r\n initialColumns = (): GridColDef<T>[] => {\r\n const { ActionRow } = this.mergeConfig\r\n const list: GridColDef<T>[] = []\r\n if (!!ActionRow) {\r\n list.push({\r\n field: 'Actions',\r\n minWidth: 100,\r\n headerAlign: 'right',\r\n align: 'right',\r\n filterable: false,\r\n sortable: false,\r\n renderCell: (value) => <ActionRow value={value.row} />,\r\n ...params.actionRow\r\n })\r\n }\r\n return generateColumns(list)\r\n }\r\n\r\n onPaginationModelChange = (model: GridPaginationModel, details: GridCallbackDetails<'pagination'>) => {\r\n this.setTableQueryParams({ pagination: model, detail: 'pagination' })\r\n this.handleChange()\r\n }\r\n\r\n onFilterModelChange = (model: GridFilterModel, details: GridCallbackDetails<'filter'>) => {\r\n const { pagination } = this.tableQueryParams\r\n this.setTableQueryParams({\r\n filter: model as ICustomGridFilterModel<T>,\r\n pagination: { page: 0, pageSize: pagination?.pageSize ?? 25 },\r\n detail: TableHelper.detectSearchType(model)\r\n })\r\n this.handleChange()\r\n }\r\n\r\n onSortModelChange = (model: GridSortModel, details: GridCallbackDetails<any>) => {\r\n let sortValue = model as ICustomGridSortModel<T>\r\n const { sort } = this.tableQueryParams\r\n if (!!sort?.length && !sortValue.length) {\r\n if (sort?.[0]?.field === this.defaultTableQueryParams.sort?.[0]?.field) {\r\n sortValue = [{ field: sort[0]?.field, sort: sort[0]?.sort === 'desc' ? 'asc' : 'desc' }]\r\n } else {\r\n sortValue = this.defaultTableQueryParams.sort ?? []\r\n }\r\n }\r\n this.setTableQueryParams({ sort: sortValue, detail: 'sort' })\r\n this.handleChange()\r\n }\r\n\r\n handleChange = () => {\r\n this.props.onChange && this.props.onChange(this.tableQueryParams)\r\n }\r\n\r\n handleRowSelectionChange = (value: GridRowSelectionModel, details: GridCallbackDetails) => {\r\n if (this.mergeConfig.maxSelcion && value.length > this.mergeConfig.maxSelcion) {\r\n this.rowSelecteds = value.slice(0, this.mergeConfig.maxSelcion)\r\n } else {\r\n this.rowSelecteds = value\r\n }\r\n this.props.onRowSelectionChange && this.props.onRowSelectionChange(this.rowSelecteds, details)\r\n this.forceUpdate()\r\n }\r\n }\r\n\r\n return Table\r\n}\r\n\r\nexport default CreateTable\r\n\r\nconst Wrap = styled(({ children, ...p }: BoxProps) => (\r\n <Box {...p}>\r\n <div>{children}</div>\r\n </Box>\r\n))({\r\n flex: 1,\r\n position: 'relative',\r\n '& > div': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n overflowY: 'auto'\r\n },\r\n '& .MuiDataGrid-root': {\r\n '--unstable_DataGrid-radius': 0\r\n },\r\n [`& .MuiDataGrid-cell.${dinoTableClasses.whiteSpacePre} .MuiDataGrid-cellContent`]: {\r\n whiteSpace: 'pre'\r\n }\r\n})\r\n"],"names":["CreateTable","params","Table","props","_this","_classCallCheck","_callSuper","_defineProperty","value","tableQueryParams","mergeObjects","children","_jsx","GlobalModal","mapGlobalModalContext","context","TableBaseContext","Provider","showModal","show","closeModal","close","_this$props$data$item","_this$props$data","_this$props$slots$den","_this$props$slots","mergeConfig","obj","getRowId","columns","rows","data","items","checkboxSelection","pagination","density","slots","initialState","TableHelper","mapInitialState","query","columnVisibilityModel","filterDebounceMs","sx","border","toolbar","rowSelectionModel","rowSelecteds","onRowSelectionModelChange","handleRowSelectionChange","featureMode","_this$props$data$rowT","_this$props$data2","objServer","filterMode","sortingMode","paginationMode","onPaginationModelChange","onFilterModelChange","onSortModelChange","rowCount","rowTotal","paginationModel","filterModel","filter","sortModel","mapSortModel","sort","loading","Object","assign","dataGridProps","extendColDefs","ActionRow","list","push","_objectSpread","field","minWidth","headerAlign","align","filterable","sortable","renderCell","row","actionRow","keys","map","key","filterOperators","customFilterOperators","length","apply","_toConsumableArray","model","details","setTableQueryParams","detail","handleChange","_pagination$pageSize","page","pageSize","detectSearchType","_sort$","_this$defaultTableQue","_sort$2","_sort$3","_this$defaultTableQue2","sortValue","defaultTableQueryParams","onChange","maxSelcion","slice","onRowSelectionChange","forceUpdate","initialColumns","_inherits","Component","_createClass","get","_this$props$slots2","_this$props$slots$too","_this$props$slots3","_this$props$slots4","_this$props$slots$max","_this$props$slots5","_this$props$slots6","toolbarPannelProps","toolbarProps","this","ToolbarPannel","maxSelection","nextProps","equalTableQueryParams","_nextProps$query","renderWrapContext","Wrap","DataGrid","getDataGridProps","styled","_ref","p","_objectWithoutProperties","_excluded","Box","flex","position","top","left","width","height","overflowY","concat","dinoTableClasses","whiteSpacePre","whiteSpace"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as t,inherits as e,createClass as i,objectSpread2 as o,classCallCheck as n,callSuper as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as r,jsxs as l}from"react/jsx-runtime";import{Component as s}from"react";import{styled as c,Box as p,alpha as d,colors as g,Grid as u,Fade as m,CircularProgress as h,Typography as f,Divider as v,TablePagination as S}from"@mui/material";import{mergeObjects as
|
|
1
|
+
import{defineProperty as t,inherits as e,createClass as i,objectSpread2 as o,classCallCheck as n,callSuper as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as r,jsxs as l}from"react/jsx-runtime";import{Component as s}from"react";import{styled as c,Box as p,alpha as d,colors as g,Grid as u,Fade as m,CircularProgress as h,Typography as f,Divider as v,TablePagination as S}from"@mui/material";import{mergeObjects as b}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import{tableGridClasses as P}from"./helpers.js";import{CreateTableGridItemActions as j}from"./item-actions.js";import"../api-context/alert-global.js";import"../api-context/drawer-global.js";import C from"../api-context/global-modal.js";import x from"../api-context/popover-global.js";import y from"../filter-bar/create.filter-bar.js";import"../filter-bar/types.js";import I from"./toolbar-pannel.js";function z(c){var d,g=y(null!==(d=c.filterBarConfig)&&void 0!==d?d:{fields:{}}),z=j(),F=function(){function d(){var e;n(this,d);for(var i=arguments.length,s=new Array(i),c=0;c<i;c++)s[c]=arguments[c];return e=a(this,d,[].concat(s)),t(e,"defaultPagination",{page:0,pageSize:10}),t(e,"filterStateStore",{pagination:e.defaultPagination}),t(e,"setFilterState",(function(t){try{t.details?e.filterStateStore=o({pagination:e.filterStateStore.pagination},t):e.filterStateStore=b({},e.filterState,t),e.props.onFilterChange&&e.props.onFilterChange(e.filterStateStore),e.forceUpdate()}catch(t){console.log(t)}})),t(e,"preRender",(function(t){return l(C,{children:[r(x.Provider,{}),t]})})),t(e,"getRootClases",(function(){var t=[P.root];return e.filterState.loading&&t.push(P.loading),t.join(" ")})),t(e,"getItems",(function(){var t;return null!==(t=e.props.data.items)&&void 0!==t?t:[]})),t(e,"handleFilterChange",(function(t){e.setFilterState(t)})),t(e,"handleChangePage",(function(t,i){e.setFilterState({pagination:{page:i,pageSize:e.filterState.pagination.pageSize}})})),t(e,"handleChangeRowsPerPage",(function(t){e.setFilterState({pagination:{page:0,pageSize:parseInt(t.target.value,10)}})})),e}return e(d,s),i(d,[{key:"filterState",get:function(){var t;return null!==(t=this.props.filter)&&void 0!==t?t:this.filterStateStore}},{key:"slots",get:function(){var t,e,i,n,a,l,s;return o(o({},Object.assign({},c.slots,this.props.slots)),{},{TableGridItem:null!==(t=null!==(e=null===(i=this.props.slots)||void 0===i?void 0:i.item)&&void 0!==e?e:c.item)&&void 0!==t?t:function(){return r(k,{})},ToolbarPannel:null!==(n=null!==(a=null===(l=this.props.slots)||void 0===l?void 0:l.toolbar)&&void 0!==a?a:null===(s=c.slots)||void 0===s?void 0:s.toolbar)&&void 0!==n?n:I})}},{key:"mergeConfig",get:function(){var t;return{size:null!==(t=c.size)&&void 0!==t?t:{xs:12,sm:6,md:4}}}},{key:"render",value:function(){var t,e=this,i=this.slots,n=i.TableGridItem,a=i.ToolbarPannel,s=i.actionProps,d=this.getItems();return this.preRender(l(w,{className:this.getRootClases(),children:[r(a,o({title:c.title},this.slots.toolbarProps)),r(g,{value:this.filterState,onChange:this.handleFilterChange}),l("div",{className:P.content,children:[r("div",{className:[P.contentInner,P.contentPosition].join(" "),children:r(u,o(o({container:!0,spacing:2},this.slots.gridContainer),{},{children:d.map((function(t,i){return r(u,o(o(o({item:!0},e.mergeConfig.size),e.slots.gridItem),{},{children:l("div",{className:P.item,children:[r(n,{value:t}),r(p,{className:P.actions,children:r(z,o({value:t},s))})]})}),c.getSelecterId(t).toString()+i)}))}))}),r(m,{in:this.filterState.loading,unmountOnExit:!0,children:r("div",{className:[P.overlay,P.contentPosition].join(" "),children:r(h,{size:36})})}),r(m,{in:d.length<1&&!this.filterState.loading,unmountOnExit:!0,children:r("div",{className:[P.noItems,P.contentPosition].join(" "),children:r(f,{variant:"body2",children:"No items data"})})})]}),r(v,{}),r(S,{component:"div",count:null!==(t=this.props.data.totalItems)&&void 0!==t?t:0,page:this.filterState.pagination.page,onPageChange:this.handleChangePage,rowsPerPage:this.filterState.pagination.pageSize,onRowsPerPageChange:this.handleChangeRowsPerPage,slotProps:{select:{MenuProps:{disableScrollLock:!0}}}})]}))}}])}();return F}var w=c(p)(t(t(t(t(t(t(t({flex:1,height:"100%",display:"flex",flexDirection:"column"},".".concat(P.content),{position:"relative",flex:1}),".".concat(P.contentPosition),{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),".".concat(P.contentInner),{overflowY:"auto",padding:"10px 5px"}),".".concat(P.overlay),{display:"flex",alignItems:"center",justifyContent:"center",background:d(g.common.white,.4),zIndex:10}),".".concat(P.noItems),{display:"flex",alignItems:"center",justifyContent:"center"}),".".concat(P.item),{position:"relative"}),".".concat(P.actions),{position:"absolute",top:"5px",right:"5px",zIndex:5,display:"inline-block"})),k=c(p)({width:"100%",paddingBottom:"100%",background:g.grey[600]});export{z as default};
|
|
2
2
|
//# sourceMappingURL=create.table-grid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.table-grid.js","sources":["../../src/table-grid/create.table-grid.tsx"],"sourcesContent":["import React, { Component, ReactNode } from 'react'\r\nimport { alpha, Box, CircularProgress, colors, Divider, Fade, Grid, styled, TablePagination, Typography } from '@mui/material'\r\nimport { mergeObjects } from '../utils'\r\nimport { tableGridClasses } from './helpers'\r\nimport { CreateTableGridItemActions } from './item-actions'\r\nimport { GlobalModal, PopoverGlobal } from '../api-context'\r\nimport { CreateFilterBar, IFilterState } from '../filter-bar'\r\nimport { ITableGridFilter, IPaginationModel, ITableGridParams, ITableGridProps, ITableGridInnerSlots } from './types'\r\nimport ToolbarPannelDefault from './toolbar-pannel'\r\n\r\nfunction CreateTableGrid<T extends object>(params: ITableGridParams<T>): React.ComponentType<ITableGridProps<T>> {\r\n const FilterBarInstance = CreateFilterBar<T>(params.filterBarConfig ?? { fields: {} })\r\n const ItemActions = CreateTableGridItemActions<T>()\r\n\r\n class TableGrid extends Component<ITableGridProps<T>> {\r\n defaultPagination: IPaginationModel = { page: 0, pageSize: 10 }\r\n private filterStateStore: ITableGridFilter<T> = { pagination: this.defaultPagination }\r\n get filterState(): ITableGridFilter<T> {\r\n return this.props.filter ?? this.filterStateStore\r\n }\r\n\r\n get slots(): ITableGridInnerSlots<T> {\r\n const obj = mergeObjects(params.slots, this.props.slots)\r\n return {\r\n ...obj,\r\n TableGridItem: this.props.slots?.item ?? params.item ?? (() => <ItemDefault />),\r\n ToolbarPannel: this.props.slots?.toolbar ?? params.slots?.toolbar ?? ToolbarPannelDefault\r\n }\r\n }\r\n\r\n get mergeConfig() {\r\n return {\r\n size: params.size ?? { xs: 12, sm: 6, md: 4 }\r\n }\r\n }\r\n\r\n setFilterState = (value: Partial<ITableGridFilter<T>>) => {\r\n try {\r\n if (!!value.details) {\r\n this.filterStateStore = { pagination: this.filterStateStore.pagination, ...value }\r\n } else {\r\n this.filterStateStore = mergeObjects<any>({}, this.filterState, value)\r\n }\r\n this.props.onFilterChange && this.props.onFilterChange(this.filterStateStore)\r\n this.forceUpdate()\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n }\r\n\r\n render() {\r\n const { TableGridItem, ToolbarPannel, actionProps } = this.slots\r\n const items = this.getItems()\r\n return this.preRender(\r\n <Wrap className={this.getRootClases()}>\r\n <ToolbarPannel title={params.title} {...this.slots.toolbarProps} />\r\n <FilterBarInstance value={this.filterState} onChange={this.handleFilterChange} />\r\n <div className={tableGridClasses.content}>\r\n <div className={[tableGridClasses.contentInner, tableGridClasses.contentPosition].join(' ')}>\r\n <Grid container spacing={2} {...this.slots.gridContainer}>\r\n {items.map((item, index) => (\r\n <Grid key={params.getSelecterId(item).toString() + index} item {...this.mergeConfig.size} {...this.slots.gridItem}>\r\n <div className={tableGridClasses.item}>\r\n <TableGridItem value={item} />\r\n <Box className={tableGridClasses.actions}>\r\n <ItemActions value={item} {...actionProps} />\r\n </Box>\r\n </div>\r\n </Grid>\r\n ))}\r\n </Grid>\r\n </div>\r\n <Fade in={this.filterState.loading} unmountOnExit>\r\n <div className={[tableGridClasses.overlay, tableGridClasses.contentPosition].join(' ')}>\r\n <CircularProgress size={36} />\r\n </div>\r\n </Fade>\r\n <Fade in={items.length < 1 && !this.filterState.loading} unmountOnExit>\r\n <div className={[tableGridClasses.noItems, tableGridClasses.contentPosition].join(' ')}>\r\n <Typography variant='body2'>No items data</Typography>\r\n </div>\r\n </Fade>\r\n </div>\r\n <Divider />\r\n <TablePagination\r\n component='div'\r\n count={this.props.data.totalItems ?? 0}\r\n page={this.filterState.pagination.page}\r\n onPageChange={this.handleChangePage}\r\n rowsPerPage={this.filterState.pagination.pageSize}\r\n onRowsPerPageChange={this.handleChangeRowsPerPage}\r\n slotProps={{ select: { MenuProps: { disableScrollLock: true } } }}\r\n />\r\n </Wrap>\r\n )\r\n }\r\n\r\n preRender = (children?: ReactNode) => (\r\n <GlobalModal>\r\n <PopoverGlobal.Provider />\r\n {children}\r\n </GlobalModal>\r\n )\r\n\r\n getRootClases = () => {\r\n const classes = [tableGridClasses.root]\r\n if (this.filterState.loading) classes.push(tableGridClasses.loading)\r\n return classes.join(' ')\r\n }\r\n\r\n getItems = () => {\r\n return this.props.data.items ?? []\r\n }\r\n\r\n handleFilterChange = (filterStateChange: IFilterState<T>) => {\r\n this.setFilterState(filterStateChange)\r\n }\r\n\r\n handleChangePage = (_: React.MouseEvent<HTMLButtonElement, MouseEvent> | null, page: number) => {\r\n // this.setState((prev) => ({ pagination: { ...prev.pagination, page } }))\r\n this.setFilterState({ pagination: { page, pageSize: this.filterState.pagination.pageSize } })\r\n }\r\n\r\n handleChangeRowsPerPage: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement> = (event) => {\r\n // this.setState({ pagination: { page: 0, pageSize: parseInt(event.target.value, 10) } })\r\n this.setFilterState({ pagination: { page: 0, pageSize: parseInt(event.target.value, 10) } })\r\n }\r\n }\r\n\r\n return TableGrid\r\n}\r\n\r\nexport default CreateTableGrid\r\n\r\nconst Wrap = styled(Box)({\r\n flex: 1,\r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n [`.${tableGridClasses.content}`]: {\r\n position: 'relative',\r\n flex: 1\r\n },\r\n [`.${tableGridClasses.contentPosition}`]: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%'\r\n },\r\n [`.${tableGridClasses.contentInner}`]: {\r\n overflowY: 'auto',\r\n padding: '10px 5px'\r\n },\r\n [`.${tableGridClasses.overlay}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n background: alpha(colors.common.white, 0.4),\r\n zIndex: 10\r\n },\r\n [`.${tableGridClasses.noItems}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n [`.${tableGridClasses.item}`]: {\r\n position: 'relative'\r\n },\r\n [`.${tableGridClasses.actions}`]: {\r\n position: 'absolute',\r\n top: '5px',\r\n right: '5px',\r\n zIndex: 5,\r\n display: 'inline-block'\r\n }\r\n})\r\n\r\nconst ItemDefault = styled(Box)({\r\n width: '100%',\r\n paddingBottom: '100%',\r\n background: colors.grey[600]\r\n})\r\n"],"names":["CreateTableGrid","params","_params$filterBarConf","FilterBarInstance","CreateFilterBar","filterBarConfig","fields","ItemActions","CreateTableGridItemActions","TableGrid","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","page","pageSize","pagination","defaultPagination","value","details","filterStateStore","_objectSpread","mergeObjects","filterState","props","onFilterChange","forceUpdate","error","console","log","children","_jsxs","GlobalModal","_jsx","PopoverGlobal","Provider","classes","tableGridClasses","root","loading","push","join","_this$props$data$item","data","items","filterStateChange","setFilterState","_","event","parseInt","target","_inherits","Component","_createClass","key","get","_this$props$filter","filter","_ref","_this$props$slots$ite","_this$props$slots","_ref2","_this$props$slots$too","_this$props$slots2","_params$slots","obj","slots","TableGridItem","item","ItemDefault","ToolbarPannel","toolbar","ToolbarPannelDefault","_params$size","size","xs","sm","md","_this$props$data$tota","_this2","_this$slots","actionProps","getItems","preRender","Wrap","className","getRootClases","title","toolbarProps","onChange","handleFilterChange","content","contentInner","contentPosition","Grid","container","spacing","gridContainer","map","index","mergeConfig","gridItem","Box","actions","getSelecterId","toString","Fade","in","unmountOnExit","overlay","CircularProgress","noItems","Typography","variant","Divider","TablePagination","component","count","totalItems","onPageChange","handleChangePage","rowsPerPage","onRowsPerPageChange","handleChangeRowsPerPage","slotProps","select","MenuProps","disableScrollLock","styled","flex","height","display","flexDirection","position","top","left","width","overflowY","padding","alignItems","justifyContent","background","alpha","colors","common","white","zIndex","right","paddingBottom","grey"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.table-grid.js","sources":["../../src/table-grid/create.table-grid.tsx"],"sourcesContent":["import React, { Component, ReactNode } from 'react'\r\nimport { alpha, Box, CircularProgress, colors, Divider, Fade, Grid, styled, TablePagination, Typography } from '@mui/material'\r\nimport { mergeObjects } from '../utils'\r\nimport { tableGridClasses } from './helpers'\r\nimport { CreateTableGridItemActions } from './item-actions'\r\nimport { GlobalModal, PopoverGlobal } from '../api-context'\r\nimport { CreateFilterBar, IFilterState } from '../filter-bar'\r\nimport { ITableGridFilter, IPaginationModel, ITableGridParams, ITableGridProps, ITableGridInnerSlots } from './types'\r\nimport ToolbarPannelDefault from './toolbar-pannel'\r\n\r\nfunction CreateTableGrid<T extends object>(params: ITableGridParams<T>): React.ComponentType<ITableGridProps<T>> {\r\n const FilterBarInstance = CreateFilterBar<T>(params.filterBarConfig ?? { fields: {} })\r\n const ItemActions = CreateTableGridItemActions<T>()\r\n\r\n class TableGrid extends Component<ITableGridProps<T>> {\r\n defaultPagination: IPaginationModel = { page: 0, pageSize: 10 }\r\n private filterStateStore: ITableGridFilter<T> = { pagination: this.defaultPagination }\r\n get filterState(): ITableGridFilter<T> {\r\n return this.props.filter ?? this.filterStateStore\r\n }\r\n\r\n get slots(): ITableGridInnerSlots<T> {\r\n return {\r\n ...Object.assign({}, params.slots, this.props.slots),\r\n TableGridItem: this.props.slots?.item ?? params.item ?? (() => <ItemDefault />),\r\n ToolbarPannel: this.props.slots?.toolbar ?? params.slots?.toolbar ?? ToolbarPannelDefault\r\n }\r\n }\r\n\r\n get mergeConfig() {\r\n return {\r\n size: params.size ?? { xs: 12, sm: 6, md: 4 }\r\n }\r\n }\r\n\r\n setFilterState = (value: Partial<ITableGridFilter<T>>) => {\r\n try {\r\n if (!!value.details) {\r\n this.filterStateStore = { pagination: this.filterStateStore.pagination, ...value }\r\n } else {\r\n this.filterStateStore = mergeObjects<any>({}, this.filterState, value)\r\n }\r\n this.props.onFilterChange && this.props.onFilterChange(this.filterStateStore)\r\n this.forceUpdate()\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n }\r\n\r\n render() {\r\n const { TableGridItem, ToolbarPannel, actionProps } = this.slots\r\n const items = this.getItems()\r\n return this.preRender(\r\n <Wrap className={this.getRootClases()}>\r\n <ToolbarPannel title={params.title} {...this.slots.toolbarProps} />\r\n <FilterBarInstance value={this.filterState} onChange={this.handleFilterChange} />\r\n <div className={tableGridClasses.content}>\r\n <div className={[tableGridClasses.contentInner, tableGridClasses.contentPosition].join(' ')}>\r\n <Grid container spacing={2} {...this.slots.gridContainer}>\r\n {items.map((item, index) => (\r\n <Grid key={params.getSelecterId(item).toString() + index} item {...this.mergeConfig.size} {...this.slots.gridItem}>\r\n <div className={tableGridClasses.item}>\r\n <TableGridItem value={item} />\r\n <Box className={tableGridClasses.actions}>\r\n <ItemActions value={item} {...actionProps} />\r\n </Box>\r\n </div>\r\n </Grid>\r\n ))}\r\n </Grid>\r\n </div>\r\n <Fade in={this.filterState.loading} unmountOnExit>\r\n <div className={[tableGridClasses.overlay, tableGridClasses.contentPosition].join(' ')}>\r\n <CircularProgress size={36} />\r\n </div>\r\n </Fade>\r\n <Fade in={items.length < 1 && !this.filterState.loading} unmountOnExit>\r\n <div className={[tableGridClasses.noItems, tableGridClasses.contentPosition].join(' ')}>\r\n <Typography variant='body2'>No items data</Typography>\r\n </div>\r\n </Fade>\r\n </div>\r\n <Divider />\r\n <TablePagination\r\n component='div'\r\n count={this.props.data.totalItems ?? 0}\r\n page={this.filterState.pagination.page}\r\n onPageChange={this.handleChangePage}\r\n rowsPerPage={this.filterState.pagination.pageSize}\r\n onRowsPerPageChange={this.handleChangeRowsPerPage}\r\n slotProps={{ select: { MenuProps: { disableScrollLock: true } } }}\r\n />\r\n </Wrap>\r\n )\r\n }\r\n\r\n preRender = (children?: ReactNode) => (\r\n <GlobalModal>\r\n <PopoverGlobal.Provider />\r\n {children}\r\n </GlobalModal>\r\n )\r\n\r\n getRootClases = () => {\r\n const classes = [tableGridClasses.root]\r\n if (this.filterState.loading) classes.push(tableGridClasses.loading)\r\n return classes.join(' ')\r\n }\r\n\r\n getItems = () => {\r\n return this.props.data.items ?? []\r\n }\r\n\r\n handleFilterChange = (filterStateChange: IFilterState<T>) => {\r\n this.setFilterState(filterStateChange)\r\n }\r\n\r\n handleChangePage = (_: React.MouseEvent<HTMLButtonElement, MouseEvent> | null, page: number) => {\r\n // this.setState((prev) => ({ pagination: { ...prev.pagination, page } }))\r\n this.setFilterState({ pagination: { page, pageSize: this.filterState.pagination.pageSize } })\r\n }\r\n\r\n handleChangeRowsPerPage: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement> = (event) => {\r\n // this.setState({ pagination: { page: 0, pageSize: parseInt(event.target.value, 10) } })\r\n this.setFilterState({ pagination: { page: 0, pageSize: parseInt(event.target.value, 10) } })\r\n }\r\n }\r\n\r\n return TableGrid\r\n}\r\n\r\nexport default CreateTableGrid\r\n\r\nconst Wrap = styled(Box)({\r\n flex: 1,\r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n [`.${tableGridClasses.content}`]: {\r\n position: 'relative',\r\n flex: 1\r\n },\r\n [`.${tableGridClasses.contentPosition}`]: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%'\r\n },\r\n [`.${tableGridClasses.contentInner}`]: {\r\n overflowY: 'auto',\r\n padding: '10px 5px'\r\n },\r\n [`.${tableGridClasses.overlay}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n background: alpha(colors.common.white, 0.4),\r\n zIndex: 10\r\n },\r\n [`.${tableGridClasses.noItems}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n [`.${tableGridClasses.item}`]: {\r\n position: 'relative'\r\n },\r\n [`.${tableGridClasses.actions}`]: {\r\n position: 'absolute',\r\n top: '5px',\r\n right: '5px',\r\n zIndex: 5,\r\n display: 'inline-block'\r\n }\r\n})\r\n\r\nconst ItemDefault = styled(Box)({\r\n width: '100%',\r\n paddingBottom: '100%',\r\n background: colors.grey[600]\r\n})\r\n"],"names":["CreateTableGrid","params","_params$filterBarConf","FilterBarInstance","CreateFilterBar","filterBarConfig","fields","ItemActions","CreateTableGridItemActions","TableGrid","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","page","pageSize","pagination","defaultPagination","value","details","filterStateStore","_objectSpread","mergeObjects","filterState","props","onFilterChange","forceUpdate","error","console","log","children","_jsxs","GlobalModal","_jsx","PopoverGlobal","Provider","classes","tableGridClasses","root","loading","push","join","_this$props$data$item","data","items","filterStateChange","setFilterState","_","event","parseInt","target","_inherits","Component","_createClass","key","get","_this$props$filter","filter","_ref","_this$props$slots$ite","_this$props$slots","_ref2","_this$props$slots$too","_this$props$slots2","_params$slots","Object","assign","slots","TableGridItem","item","ItemDefault","ToolbarPannel","toolbar","ToolbarPannelDefault","_params$size","size","xs","sm","md","_this$props$data$tota","_this2","_this$slots","actionProps","getItems","preRender","Wrap","className","getRootClases","title","toolbarProps","onChange","handleFilterChange","content","contentInner","contentPosition","Grid","container","spacing","gridContainer","map","index","mergeConfig","gridItem","Box","actions","getSelecterId","toString","Fade","in","unmountOnExit","overlay","CircularProgress","noItems","Typography","variant","Divider","TablePagination","component","count","totalItems","onPageChange","handleChangePage","rowsPerPage","onRowsPerPageChange","handleChangeRowsPerPage","slotProps","select","MenuProps","disableScrollLock","styled","flex","height","display","flexDirection","position","top","left","width","overflowY","padding","alignItems","justifyContent","background","alpha","colors","common","white","zIndex","right","paddingBottom","grey"],"mappings":"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"}
|
|
@@ -1,26 +1,21 @@
|
|
|
1
1
|
import { Component } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { IFilterModel, IFilterState, IQuickSearchDef } from './types';
|
|
3
|
+
import { IFilterField, IFilterFields, IFilterItemChangeModel } from './types';
|
|
3
4
|
export declare const filterPanelClasses: {
|
|
4
5
|
root: string;
|
|
5
6
|
list: string;
|
|
6
7
|
item: string;
|
|
7
8
|
};
|
|
9
|
+
export interface IFilterChange<T> {
|
|
10
|
+
isChanged: boolean;
|
|
11
|
+
filterState: IFilterState<T>;
|
|
12
|
+
}
|
|
8
13
|
export default class FilterBarBase<P, S, T = any> extends Component<P, S> {
|
|
9
14
|
mergeFilter: (f1?: IFilterState<T>, f2?: IFilterState<T>) => IFilterState<T>;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
details?: "add" | "remove" | undefined;
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
deleteFilterWithKey: (filterState: IFilterState<T>, key: keyof IFilterModel<T>) => {
|
|
18
|
-
isChanged: boolean;
|
|
19
|
-
filterState: {
|
|
20
|
-
filter: IFilterModel<T>;
|
|
21
|
-
details?: "add" | "remove" | undefined;
|
|
22
|
-
};
|
|
23
|
-
};
|
|
15
|
+
addQuickSearch: (filterState: IFilterState<T>, def?: IQuickSearchDef<T>, value?: string) => IFilterChange<T>;
|
|
16
|
+
removeQuickSearch: (filterState: IFilterState<T>) => IFilterChange<T>;
|
|
17
|
+
patchFilterWithKey: (filterState: IFilterState<T>, data: IFilterItemChangeModel<T>) => IFilterChange<T>;
|
|
18
|
+
deleteFilterWithKey: (filterState: IFilterState<T>, data: IFilterItemChangeModel<T>) => IFilterChange<T>;
|
|
24
19
|
isFilterEmpty: (filterState: IFilterState<T>) => boolean;
|
|
25
20
|
isYoutubeLink: (val: string) => boolean;
|
|
26
21
|
isGenericLink: (val: string) => boolean;
|
|
@@ -30,5 +25,4 @@ export default class FilterBarBase<P, S, T = any> extends Component<P, S> {
|
|
|
30
25
|
error: boolean;
|
|
31
26
|
message?: string;
|
|
32
27
|
};
|
|
33
|
-
getSortFields: (fields: IFilterFields<T>) => IFilterFields<T>;
|
|
34
28
|
}
|
|
@@ -1,92 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import { FilterPanelState } from './create.filter-panel';
|
|
5
|
-
export interface IFilterBarParams<T> {
|
|
6
|
-
fields: IFilterFields<T>;
|
|
7
|
-
id?: string;
|
|
8
|
-
placeholder?: string;
|
|
9
|
-
helpNotes?: IFilterHelpNotesProps;
|
|
10
|
-
}
|
|
11
|
-
export interface IFilterBarProps<T> {
|
|
12
|
-
id?: string;
|
|
13
|
-
placeholder?: string;
|
|
14
|
-
value?: IFilterState<T>;
|
|
15
|
-
onChange?: (value: IFilterState<T>) => void;
|
|
16
|
-
}
|
|
17
|
-
export interface IFilterBarState {
|
|
18
|
-
panelState: FilterPanelState;
|
|
19
|
-
keyword: string;
|
|
20
|
-
}
|
|
21
|
-
declare function CreateFilterBar<T>(params: IFilterBarParams<T>): {
|
|
22
|
-
new (props: IFilterBarProps<T>): {
|
|
23
|
-
defaultState: IFilterBarState;
|
|
24
|
-
filterStateStore: IFilterState<T>;
|
|
25
|
-
readonly filterState: IFilterState<T>;
|
|
26
|
-
setFilterState: (filterState: IFilterState<T>) => void;
|
|
27
|
-
readonly configs: {
|
|
28
|
-
id: string;
|
|
29
|
-
placeholder: string;
|
|
30
|
-
helpNotes: IFilterHelpNotesProps | undefined;
|
|
31
|
-
};
|
|
32
|
-
refFilterButton: HTMLButtonElement | null;
|
|
33
|
-
refSortButton: HTMLButtonElement | null;
|
|
34
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
35
|
-
refInput: HTMLInputElement | null;
|
|
36
|
-
refBeforeInput: HTMLElement | null;
|
|
37
|
-
renderTextField: () => import("react/jsx-runtime").JSX.Element;
|
|
38
|
-
handleKeyDown: (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
|
39
|
-
handleAdd: (key: keyof IFilterModel<T>, value: IFilterItemModel) => void;
|
|
40
|
-
handleRemove: (key: keyof IFilterModel<T>) => void;
|
|
41
|
-
handleClear: () => void;
|
|
42
|
-
showPanel: (reason: FilterReason) => void;
|
|
43
|
-
closePanel: () => void;
|
|
44
|
-
mergeFilter: (f1?: IFilterState<T> | undefined, f2?: IFilterState<T> | undefined) => IFilterState<T>;
|
|
45
|
-
patchFilterWithKey: (filterState: IFilterState<T>, key: "Search" | keyof T, value: IFilterItemModel) => {
|
|
46
|
-
isChanged: boolean;
|
|
47
|
-
filterState: {
|
|
48
|
-
filter: IFilterModel<T>;
|
|
49
|
-
details?: "add" | "remove" | undefined;
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
deleteFilterWithKey: (filterState: IFilterState<T>, key: "Search" | keyof T) => {
|
|
53
|
-
isChanged: boolean;
|
|
54
|
-
filterState: {
|
|
55
|
-
filter: IFilterModel<T>;
|
|
56
|
-
details?: "add" | "remove" | undefined;
|
|
57
|
-
};
|
|
58
|
-
};
|
|
59
|
-
isFilterEmpty: (filterState: IFilterState<T>) => boolean;
|
|
60
|
-
isYoutubeLink: (val: string) => boolean;
|
|
61
|
-
isGenericLink: (val: string) => boolean;
|
|
62
|
-
isGuid: (val: string) => boolean;
|
|
63
|
-
getFieldsMatches: (fields: IFilterFields<T>, keyword: string, showAll?: boolean | undefined) => IFilterFields<T>;
|
|
64
|
-
validated: (value: string, fieldKey: "Search" | keyof T, filterField?: import("./types").IFilterField | undefined) => {
|
|
65
|
-
error: boolean;
|
|
66
|
-
message?: string | undefined;
|
|
67
|
-
};
|
|
68
|
-
getSortFields: (fields: IFilterFields<T>) => IFilterFields<T>;
|
|
69
|
-
context: unknown;
|
|
70
|
-
setState<K extends keyof IFilterBarState>(state: IFilterBarState | ((prevState: Readonly<IFilterBarState>, props: Readonly<IFilterBarProps<T>>) => IFilterBarState | Pick<IFilterBarState, K> | null) | Pick<IFilterBarState, K> | null, callback?: (() => void) | undefined): void;
|
|
71
|
-
forceUpdate(callback?: (() => void) | undefined): void;
|
|
72
|
-
readonly props: Readonly<IFilterBarProps<T>>;
|
|
73
|
-
state: Readonly<IFilterBarState>;
|
|
74
|
-
refs: {
|
|
75
|
-
[key: string]: React.ReactInstance;
|
|
76
|
-
};
|
|
77
|
-
componentDidMount?(): void;
|
|
78
|
-
shouldComponentUpdate?(nextProps: Readonly<IFilterBarProps<T>>, nextState: Readonly<IFilterBarState>, nextContext: any): boolean;
|
|
79
|
-
componentWillUnmount?(): void;
|
|
80
|
-
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
|
81
|
-
getSnapshotBeforeUpdate?(prevProps: Readonly<IFilterBarProps<T>>, prevState: Readonly<IFilterBarState>): any;
|
|
82
|
-
componentDidUpdate?(prevProps: Readonly<IFilterBarProps<T>>, prevState: Readonly<IFilterBarState>, snapshot?: any): void;
|
|
83
|
-
componentWillMount?(): void;
|
|
84
|
-
UNSAFE_componentWillMount?(): void;
|
|
85
|
-
componentWillReceiveProps?(nextProps: Readonly<IFilterBarProps<T>>, nextContext: any): void;
|
|
86
|
-
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<IFilterBarProps<T>>, nextContext: any): void;
|
|
87
|
-
componentWillUpdate?(nextProps: Readonly<IFilterBarProps<T>>, nextState: Readonly<IFilterBarState>, nextContext: any): void;
|
|
88
|
-
UNSAFE_componentWillUpdate?(nextProps: Readonly<IFilterBarProps<T>>, nextState: Readonly<IFilterBarState>, nextContext: any): void;
|
|
89
|
-
};
|
|
90
|
-
contextType?: React.Context<any> | undefined;
|
|
91
|
-
};
|
|
1
|
+
import { ComponentType } from 'react';
|
|
2
|
+
import { IFilterBarParams, IFilterBarProps } from './types';
|
|
3
|
+
declare function CreateFilterBar<T>(params: IFilterBarParams<T>): ComponentType<IFilterBarProps<T>>;
|
|
92
4
|
export default CreateFilterBar;
|
|
@@ -1,66 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ComponentType } from 'react';
|
|
2
2
|
import { ButtonProps } from '@mui/material';
|
|
3
|
-
import {
|
|
4
|
-
interface
|
|
5
|
-
onSubmit?:
|
|
3
|
+
import { IFilterBarParams, IFilterModel, IFilterSubmitFunc } from './types';
|
|
4
|
+
export interface IFilterMenuProps<T> {
|
|
5
|
+
onSubmit?: IFilterSubmitFunc<T>;
|
|
6
6
|
onCancel?: ButtonProps['onClick'];
|
|
7
7
|
}
|
|
8
|
-
interface
|
|
8
|
+
export interface IFilterMenuState<T> {
|
|
9
9
|
fieldSelected: keyof IFilterModel<T> | null;
|
|
10
10
|
messageError?: string;
|
|
11
11
|
}
|
|
12
|
-
declare function CreateFilterMenu<T>(params:
|
|
13
|
-
new (props: IProps<T>): {
|
|
14
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
15
|
-
renderFrom: (fieldSelected: keyof IFilterModel<T>) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
-
renderWithMode: (fieldSelected: keyof IFilterModel<T>) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
-
handleSubmit: (fieldSelected: keyof IFilterModel<T>, event: React.FormEvent<HTMLFormElement>) => void;
|
|
18
|
-
mergeFilter: (f1?: import("./types").IFilterState<T> | undefined, f2?: import("./types").IFilterState<T> | undefined) => import("./types").IFilterState<T>;
|
|
19
|
-
patchFilterWithKey: (filterState: import("./types").IFilterState<T>, key: "Search" | keyof T, value: import("./types").IFilterItemModel) => {
|
|
20
|
-
isChanged: boolean;
|
|
21
|
-
filterState: {
|
|
22
|
-
filter: IFilterModel<T>;
|
|
23
|
-
details?: "add" | "remove" | undefined;
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
deleteFilterWithKey: (filterState: import("./types").IFilterState<T>, key: "Search" | keyof T) => {
|
|
27
|
-
isChanged: boolean;
|
|
28
|
-
filterState: {
|
|
29
|
-
filter: IFilterModel<T>;
|
|
30
|
-
details?: "add" | "remove" | undefined;
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
isFilterEmpty: (filterState: import("./types").IFilterState<T>) => boolean;
|
|
34
|
-
isYoutubeLink: (val: string) => boolean;
|
|
35
|
-
isGenericLink: (val: string) => boolean;
|
|
36
|
-
isGuid: (val: string) => boolean;
|
|
37
|
-
getFieldsMatches: (fields: import("./types").IFilterFields<T>, keyword: string, showAll?: boolean | undefined) => import("./types").IFilterFields<T>;
|
|
38
|
-
validated: (value: string, fieldKey: "Search" | keyof T, filterField?: import("./types").IFilterField | undefined) => {
|
|
39
|
-
error: boolean;
|
|
40
|
-
message?: string | undefined;
|
|
41
|
-
};
|
|
42
|
-
getSortFields: (fields: import("./types").IFilterFields<T>) => import("./types").IFilterFields<T>;
|
|
43
|
-
context: unknown;
|
|
44
|
-
setState<K extends keyof IState<T>>(state: IState<T> | ((prevState: Readonly<IState<T>>, props: Readonly<IProps<T>>) => IState<T> | Pick<IState<T>, K> | null) | Pick<IState<T>, K> | null, callback?: (() => void) | undefined): void;
|
|
45
|
-
forceUpdate(callback?: (() => void) | undefined): void;
|
|
46
|
-
readonly props: Readonly<IProps<T>>;
|
|
47
|
-
state: Readonly<IState<T>>;
|
|
48
|
-
refs: {
|
|
49
|
-
[key: string]: React.ReactInstance;
|
|
50
|
-
};
|
|
51
|
-
componentDidMount?(): void;
|
|
52
|
-
shouldComponentUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<IState<T>>, nextContext: any): boolean;
|
|
53
|
-
componentWillUnmount?(): void;
|
|
54
|
-
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
|
55
|
-
getSnapshotBeforeUpdate?(prevProps: Readonly<IProps<T>>, prevState: Readonly<IState<T>>): any;
|
|
56
|
-
componentDidUpdate?(prevProps: Readonly<IProps<T>>, prevState: Readonly<IState<T>>, snapshot?: any): void;
|
|
57
|
-
componentWillMount?(): void;
|
|
58
|
-
UNSAFE_componentWillMount?(): void;
|
|
59
|
-
componentWillReceiveProps?(nextProps: Readonly<IProps<T>>, nextContext: any): void;
|
|
60
|
-
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<IProps<T>>, nextContext: any): void;
|
|
61
|
-
componentWillUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<IState<T>>, nextContext: any): void;
|
|
62
|
-
UNSAFE_componentWillUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<IState<T>>, nextContext: any): void;
|
|
63
|
-
};
|
|
64
|
-
contextType?: React.Context<any> | undefined;
|
|
65
|
-
};
|
|
12
|
+
declare function CreateFilterMenu<T>(params: IFilterBarParams<T>): ComponentType<IFilterMenuProps<T>>;
|
|
66
13
|
export default CreateFilterMenu;
|
|
@@ -1,117 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
export interface
|
|
1
|
+
import { ComponentType, PropsWithChildren } from 'react';
|
|
2
|
+
import { IFilterReason, IFilterSubmitFunc, IFilterBarParams } from './types';
|
|
3
|
+
export interface IFilterPanelState {
|
|
4
4
|
anchorEl: HTMLElement | null;
|
|
5
|
-
reason?:
|
|
5
|
+
reason?: IFilterReason;
|
|
6
6
|
}
|
|
7
|
-
interface
|
|
7
|
+
interface IFilterPanelProps<T> extends IFilterPanelState, PropsWithChildren {
|
|
8
8
|
keyword?: string;
|
|
9
|
-
onSubmit?:
|
|
9
|
+
onSubmit?: IFilterSubmitFunc<T>;
|
|
10
10
|
onClose?: () => void;
|
|
11
11
|
}
|
|
12
|
-
declare function CreateFilterPanel<T>(params:
|
|
13
|
-
new (props: IProps<T>): {
|
|
14
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
15
|
-
renderContent: () => import("react/jsx-runtime").JSX.Element | undefined;
|
|
16
|
-
renderSearchInput: () => import("react/jsx-runtime").JSX.Element;
|
|
17
|
-
handleClick: (key: keyof IFilterModel<T>) => void;
|
|
18
|
-
mergeFilter: (f1?: import("./types").IFilterState<T> | undefined, f2?: import("./types").IFilterState<T> | undefined) => import("./types").IFilterState<T>;
|
|
19
|
-
patchFilterWithKey: (filterState: import("./types").IFilterState<T>, key: "Search" | keyof T, value: import("./types").IFilterItemModel) => {
|
|
20
|
-
isChanged: boolean;
|
|
21
|
-
filterState: {
|
|
22
|
-
filter: IFilterModel<T>;
|
|
23
|
-
details?: "add" | "remove" | undefined;
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
deleteFilterWithKey: (filterState: import("./types").IFilterState<T>, key: "Search" | keyof T) => {
|
|
27
|
-
isChanged: boolean;
|
|
28
|
-
filterState: {
|
|
29
|
-
filter: IFilterModel<T>;
|
|
30
|
-
details?: "add" | "remove" | undefined;
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
isFilterEmpty: (filterState: import("./types").IFilterState<T>) => boolean;
|
|
34
|
-
isYoutubeLink: (val: string) => boolean;
|
|
35
|
-
isGenericLink: (val: string) => boolean;
|
|
36
|
-
isGuid: (val: string) => boolean;
|
|
37
|
-
getFieldsMatches: (fields: import("./types").IFilterFields<T>, keyword: string, showAll?: boolean | undefined) => import("./types").IFilterFields<T>;
|
|
38
|
-
validated: (value: string, fieldKey: "Search" | keyof T, filterField?: import("./types").IFilterField | undefined) => {
|
|
39
|
-
error: boolean;
|
|
40
|
-
message?: string | undefined;
|
|
41
|
-
};
|
|
42
|
-
getSortFields: (fields: import("./types").IFilterFields<T>) => import("./types").IFilterFields<T>;
|
|
43
|
-
context: unknown;
|
|
44
|
-
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<IProps<T>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
45
|
-
forceUpdate(callback?: (() => void) | undefined): void;
|
|
46
|
-
readonly props: Readonly<IProps<T>>;
|
|
47
|
-
state: Readonly<{}>;
|
|
48
|
-
refs: {
|
|
49
|
-
[key: string]: React.ReactInstance;
|
|
50
|
-
};
|
|
51
|
-
componentDidMount?(): void;
|
|
52
|
-
shouldComponentUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<{}>, nextContext: any): boolean;
|
|
53
|
-
componentWillUnmount?(): void;
|
|
54
|
-
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
|
55
|
-
getSnapshotBeforeUpdate?(prevProps: Readonly<IProps<T>>, prevState: Readonly<{}>): any;
|
|
56
|
-
componentDidUpdate?(prevProps: Readonly<IProps<T>>, prevState: Readonly<{}>, snapshot?: any): void;
|
|
57
|
-
componentWillMount?(): void;
|
|
58
|
-
UNSAFE_componentWillMount?(): void;
|
|
59
|
-
componentWillReceiveProps?(nextProps: Readonly<IProps<T>>, nextContext: any): void;
|
|
60
|
-
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<IProps<T>>, nextContext: any): void;
|
|
61
|
-
componentWillUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<{}>, nextContext: any): void;
|
|
62
|
-
UNSAFE_componentWillUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<{}>, nextContext: any): void;
|
|
63
|
-
};
|
|
64
|
-
new (props: IProps<T>, context: any): {
|
|
65
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
66
|
-
renderContent: () => import("react/jsx-runtime").JSX.Element | undefined;
|
|
67
|
-
renderSearchInput: () => import("react/jsx-runtime").JSX.Element;
|
|
68
|
-
handleClick: (key: keyof IFilterModel<T>) => void;
|
|
69
|
-
mergeFilter: (f1?: import("./types").IFilterState<T> | undefined, f2?: import("./types").IFilterState<T> | undefined) => import("./types").IFilterState<T>;
|
|
70
|
-
patchFilterWithKey: (filterState: import("./types").IFilterState<T>, key: "Search" | keyof T, value: import("./types").IFilterItemModel) => {
|
|
71
|
-
isChanged: boolean;
|
|
72
|
-
filterState: {
|
|
73
|
-
filter: IFilterModel<T>;
|
|
74
|
-
details?: "add" | "remove" | undefined;
|
|
75
|
-
};
|
|
76
|
-
};
|
|
77
|
-
deleteFilterWithKey: (filterState: import("./types").IFilterState<T>, key: "Search" | keyof T) => {
|
|
78
|
-
isChanged: boolean;
|
|
79
|
-
filterState: {
|
|
80
|
-
filter: IFilterModel<T>;
|
|
81
|
-
details?: "add" | "remove" | undefined;
|
|
82
|
-
};
|
|
83
|
-
};
|
|
84
|
-
isFilterEmpty: (filterState: import("./types").IFilterState<T>) => boolean;
|
|
85
|
-
isYoutubeLink: (val: string) => boolean;
|
|
86
|
-
isGenericLink: (val: string) => boolean;
|
|
87
|
-
isGuid: (val: string) => boolean;
|
|
88
|
-
getFieldsMatches: (fields: import("./types").IFilterFields<T>, keyword: string, showAll?: boolean | undefined) => import("./types").IFilterFields<T>;
|
|
89
|
-
validated: (value: string, fieldKey: "Search" | keyof T, filterField?: import("./types").IFilterField | undefined) => {
|
|
90
|
-
error: boolean;
|
|
91
|
-
message?: string | undefined;
|
|
92
|
-
};
|
|
93
|
-
getSortFields: (fields: import("./types").IFilterFields<T>) => import("./types").IFilterFields<T>;
|
|
94
|
-
context: unknown;
|
|
95
|
-
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<IProps<T>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
96
|
-
forceUpdate(callback?: (() => void) | undefined): void;
|
|
97
|
-
readonly props: Readonly<IProps<T>>;
|
|
98
|
-
state: Readonly<{}>;
|
|
99
|
-
refs: {
|
|
100
|
-
[key: string]: React.ReactInstance;
|
|
101
|
-
};
|
|
102
|
-
componentDidMount?(): void;
|
|
103
|
-
shouldComponentUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<{}>, nextContext: any): boolean;
|
|
104
|
-
componentWillUnmount?(): void;
|
|
105
|
-
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
|
106
|
-
getSnapshotBeforeUpdate?(prevProps: Readonly<IProps<T>>, prevState: Readonly<{}>): any;
|
|
107
|
-
componentDidUpdate?(prevProps: Readonly<IProps<T>>, prevState: Readonly<{}>, snapshot?: any): void;
|
|
108
|
-
componentWillMount?(): void;
|
|
109
|
-
UNSAFE_componentWillMount?(): void;
|
|
110
|
-
componentWillReceiveProps?(nextProps: Readonly<IProps<T>>, nextContext: any): void;
|
|
111
|
-
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<IProps<T>>, nextContext: any): void;
|
|
112
|
-
componentWillUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<{}>, nextContext: any): void;
|
|
113
|
-
UNSAFE_componentWillUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<{}>, nextContext: any): void;
|
|
114
|
-
};
|
|
115
|
-
contextType?: React.Context<any> | undefined;
|
|
116
|
-
};
|
|
12
|
+
declare function CreateFilterPanel<T>(params: IFilterBarParams<T>): ComponentType<IFilterPanelProps<T>>;
|
|
117
13
|
export default CreateFilterPanel;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { IFilterBarParams, IFilterState, IFilterSubmitFunc } from './types';
|
|
3
3
|
interface IProps<T> {
|
|
4
|
-
fields: IFilterFields<T>;
|
|
5
4
|
filterState: IFilterState<T>;
|
|
6
|
-
onRemove?:
|
|
5
|
+
onRemove?: IFilterSubmitFunc<T>;
|
|
7
6
|
}
|
|
8
|
-
declare function CreateFiltered<T>(): {
|
|
7
|
+
declare function CreateFiltered<T>(params: IFilterBarParams<T>): {
|
|
9
8
|
new (props: IProps<T>): {
|
|
10
|
-
render(): import("react/jsx-runtime").JSX.Element
|
|
11
|
-
|
|
9
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
renderQuickSearch: () => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
handleRemove: (field: keyof T) => void;
|
|
12
|
+
handleQuickSearchRemove: () => void;
|
|
12
13
|
context: unknown;
|
|
13
14
|
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<IProps<T>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
14
15
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
@@ -31,8 +32,10 @@ declare function CreateFiltered<T>(): {
|
|
|
31
32
|
UNSAFE_componentWillUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<{}>, nextContext: any): void;
|
|
32
33
|
};
|
|
33
34
|
new (props: IProps<T>, context: any): {
|
|
34
|
-
render(): import("react/jsx-runtime").JSX.Element
|
|
35
|
-
|
|
35
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
renderQuickSearch: () => import("react/jsx-runtime").JSX.Element;
|
|
37
|
+
handleRemove: (field: keyof T) => void;
|
|
38
|
+
handleQuickSearchRemove: () => void;
|
|
36
39
|
context: unknown;
|
|
37
40
|
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<IProps<T>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
38
41
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { IFilterPanelParams, IFilterPannelSubmitFunc } from './types';
|
|
3
|
-
interface IProps<T> {
|
|
4
|
-
onSubmit?: IFilterPannelSubmitFunc<T>;
|
|
5
|
-
}
|
|
6
|
-
declare function CreateFilterSort<T>(params: IFilterPanelParams<T>): React.ComponentType<IProps<T>>;
|
|
7
|
-
export default CreateFilterSort;
|
|
1
|
+
export {};
|