@talxis/base-controls 1.2410.3 → 1.2410.4
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 +20 -11
- package/dist/components/DatasetControl/DatasetControl.d.ts +3 -0
- package/dist/components/DatasetControl/DatasetControl.js +63 -0
- package/dist/components/DatasetControl/DatasetControl.js.map +1 -0
- package/dist/components/DatasetControl/hooks/useRerender.d.ts +1 -0
- package/dist/components/DatasetControl/hooks/useRerender.js +9 -0
- package/dist/components/DatasetControl/hooks/useRerender.js.map +1 -0
- package/dist/components/DatasetControl/index.d.ts +2 -0
- package/dist/components/DatasetControl/index.js +2 -0
- package/dist/components/DatasetControl/index.js.map +1 -0
- package/dist/components/DatasetControl/interfaces.d.ts +10 -0
- package/dist/components/DatasetControl/styles.d.ts +8 -0
- package/dist/components/DatasetControl/styles.js +17 -0
- package/dist/components/DatasetControl/styles.js.map +1 -0
- package/dist/components/DatasetControl/translations.d.ts +10 -0
- package/dist/components/DatasetControl/translations.js +7 -0
- package/dist/components/DatasetControl/translations.js.map +1 -0
- package/dist/components/Decimal/Decimal.js +1 -1
- package/dist/components/Decimal/Decimal.js.map +1 -1
- package/dist/components/Duration/Duration.js +1 -1
- package/dist/components/Duration/Duration.js.map +1 -1
- package/dist/components/Grid/Grid.js +9 -2
- package/dist/components/Grid/Grid.js.map +1 -1
- package/dist/components/Grid/core/components/AgGrid/AgGrid.js +21 -46
- package/dist/components/Grid/core/components/AgGrid/AgGrid.js.map +1 -1
- package/dist/components/Grid/core/components/AgGrid/controllers/useAgGridController.d.ts +0 -1
- package/dist/components/Grid/core/components/AgGrid/controllers/useAgGridController.js +7 -7
- package/dist/components/Grid/core/components/AgGrid/controllers/useAgGridController.js.map +1 -1
- package/dist/components/Grid/core/components/AgGrid/model/AgGrid.d.ts +0 -2
- package/dist/components/Grid/core/components/AgGrid/model/AgGrid.js +0 -7
- package/dist/components/Grid/core/components/AgGrid/model/AgGrid.js.map +1 -1
- package/dist/components/Grid/core/components/AgGrid/styles.d.ts +1 -4
- package/dist/components/Grid/core/components/AgGrid/styles.js +6 -9
- package/dist/components/Grid/core/components/AgGrid/styles.js.map +1 -1
- package/dist/components/Grid/core/components/Cell/EditableCell/EditableCell.js +0 -2
- package/dist/components/Grid/core/components/Cell/EditableCell/EditableCell.js.map +1 -1
- package/dist/components/Grid/core/components/Cell/ReadOnlyCell/ReadOnlyCell.js +16 -4
- package/dist/components/Grid/core/components/Cell/ReadOnlyCell/ReadOnlyCell.js.map +1 -1
- package/dist/components/Grid/core/components/Component/model/Component.js +7 -2
- package/dist/components/Grid/core/components/Component/model/Component.js.map +1 -1
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/RecordGrids/RecordGrids.js +3 -0
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/RecordGrids/RecordGrids.js.map +1 -1
- package/dist/components/Grid/core/constants.d.ts +1 -0
- package/dist/components/Grid/core/constants.js +4 -0
- package/dist/components/Grid/core/constants.js.map +1 -0
- package/dist/components/Grid/core/controllers/useGridController.d.ts +0 -2
- package/dist/components/Grid/core/controllers/useGridController.js +1 -17
- package/dist/components/Grid/core/controllers/useGridController.js.map +1 -1
- package/dist/components/Grid/core/model/Grid.d.ts +10 -3
- package/dist/components/Grid/core/model/Grid.js +45 -16
- package/dist/components/Grid/core/model/Grid.js.map +1 -1
- package/dist/components/Grid/core/services/KeyListener.d.ts +8 -0
- package/dist/components/Grid/core/services/KeyListener.js +22 -0
- package/dist/components/Grid/core/services/KeyListener.js.map +1 -0
- package/dist/components/Grid/core/services/RecordUpdateService/model/RecordUpdateService.js +2 -2
- package/dist/components/Grid/core/services/RecordUpdateService/model/RecordUpdateService.js.map +1 -1
- package/dist/components/Grid/filtering/controller/useColumnFilterConditionController.js.map +1 -1
- package/dist/components/Grid/interfaces.d.ts +2 -2
- package/dist/components/Grid/paging/components/Paging/Paging.js +7 -1
- package/dist/components/Grid/paging/components/Paging/Paging.js.map +1 -1
- package/dist/components/Grid/paging/controllers/usePagingController.d.ts +2 -1
- package/dist/components/Grid/paging/controllers/usePagingController.js +1 -0
- package/dist/components/Grid/paging/controllers/usePagingController.js.map +1 -1
- package/dist/components/Grid/paging/model/Paging.d.ts +2 -1
- package/dist/components/Grid/paging/model/Paging.js +22 -4
- package/dist/components/Grid/paging/model/Paging.js.map +1 -1
- package/dist/components/Grid/selection/controllers/useSelectionController.js +7 -3
- package/dist/components/Grid/selection/controllers/useSelectionController.js.map +1 -1
- package/dist/components/Grid/selection/model/Selection.d.ts +1 -1
- package/dist/components/Grid/selection/model/Selection.js +7 -4
- package/dist/components/Grid/selection/model/Selection.js.map +1 -1
- package/dist/components/Grid/sorting/Sorting.js +2 -3
- package/dist/components/Grid/sorting/Sorting.js.map +1 -1
- package/dist/components/Grid/translations.d.ts +4 -0
- package/dist/components/Grid/translations.js +2 -1
- package/dist/components/Grid/translations.js.map +1 -1
- package/dist/index.d.ts +24 -7
- package/dist/index.js +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/components/Grid/core/hooks/useRerender.js +0 -13
- package/dist/components/Grid/core/hooks/useRerender.js.map +0 -1
- package/dist/utils/Numeral.d.ts +0 -6
- package/dist/utils/Numeral.js +0 -64
- package/dist/utils/Numeral.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgGrid.js","sources":["../../../../../../src/components/Grid/core/components/AgGrid/AgGrid.tsx"],"sourcesContent":["import { AgGridReact } from '@ag-grid-community/react';\nimport { MessageBar, MessageBarType, useTheme } from \"@fluentui/react\";\nimport { ColumnMovedEvent, ColumnResizedEvent, GridApi } from \"@ag-grid-community/core\";\nimport { useEffect, useRef } from \"react\";\nimport { useSelectionController } from \"../../../selection/controllers/useSelectionController\";\nimport { useGridInstance } from \"../../hooks/useGridInstance\";\nimport { getGridStyles } from \"./styles\";\nimport React from 'react';\nimport { useAgGridController } from \"./controllers/useAgGridController\";\nimport { Paging } from \"../../../paging/components/Paging/Paging\";\nimport { EmptyRecords } from \"./components/EmptyRecordsOverlay/EmptyRecords\";\nimport { Save } from \"../Save/Save\";\nimport { LoadingOverlay } from \"./components/LoadingOverlay/LoadingOverlay\";\nimport { usePagingController } from '../../../paging/controllers/usePagingController';\nimport { CHECKBOX_COLUMN_KEY } from '../../../constants';\nimport { IEntityRecord } from '../../../interfaces';\n\nexport const AgGrid = () => {\n const grid = useGridInstance();\n const selection = useSelectionController();\n const gridApiRef = useRef<GridApi<ComponentFramework.PropertyHelper.DataSetApi.EntityRecord>>();\n const containerRef = useRef<HTMLDivElement>(null);\n const theme = useTheme();\n let { agColumns, records, maxNumberOfVisibleRecords, stateRef, getTotalColumnsWidth, onGridReady } = useAgGridController(gridApiRef);\n const pagingController = usePagingController();\n const styles = getGridStyles(theme, maxNumberOfVisibleRecords, grid.useContainerAsHeight);\n const resizeTimeOutRef = useRef<NodeJS.Timeout>();\n\n const getAvailableWidth = () => {\n const rootWrapper = containerRef.current?.querySelector('.ag-root-wrapper');\n return rootWrapper?.clientWidth ?? 0;\n }\n\n const sizeColumnsIfSpaceAvailable = () => {\n const availableWidth = getAvailableWidth();\n if (availableWidth > getTotalColumnsWidth()) {\n gridApiRef.current!.sizeColumnsToFit();\n }\n }\n\n const updateColumnOrder = async (e: ColumnMovedEvent<IEntityRecord, any>) => {\n const columOrder = e.api.getState().columnOrder?.orderedColIds.filter(colId => {\n switch(colId) {\n case CHECKBOX_COLUMN_KEY:\n }\n return true;\n });\n if(!columOrder) {\n return;\n }\n //@ts-ignore - typings\n grid.pcfContext.factory.fireEvent('__updateColumnOrder', columOrder)\n /* //@ts-ignore - typings\n if (!window.TALXIS?.Portal) {\n //column order from Grid currently not supported in Power Apps\n return;\n }\n if(e.type === 'gridOptionsChanged') {\n return;\n }\n const sortedIds = e.api.getState().columnOrder?.orderedColIds;\n if (!sortedIds) {\n return;\n }\n const idIndexMap = new Map<string, number>();\n sortedIds.forEach((id, index) => {\n idIndexMap.set(id, index);\n });\n\n const orderedColumns = [...grid.dataset.columns].sort((a, b) => {\n const aIndex = idIndexMap.has(a.name) ? idIndexMap.get(a.name)! : sortedIds.length;\n const bIndex = idIndexMap.has(b.name) ? idIndexMap.get(b.name)! : sortedIds.length;\n return aIndex - bIndex;\n });\n //@ts-ignore: typings\n grid.pcfContext.factory.fireEvent('__clearColumns');\n for (const col of orderedColumns) {\n //@ts-ignore - portal accepts metadata\n await grid.dataset.addColumn!(col.name, col.alias, col)\n }\n grid.pcfContext.factory.requestRender(); */\n }\n\n const updateColumnVisualSizeFactor = async (e: ColumnResizedEvent<IEntityRecord, any>): Promise<void> => {\n /* if(e.source !== 'uiColumnResized') {\n return;\n }\n //@ts-ignore - typings\n if (!window.TALXIS?.Portal) {\n //column order from Grid currently not supported in Power Apps\n return;\n }\n clearTimeout(resizeTimeOutRef.current)\n resizeTimeOutRef.current = setTimeout(async () => {\n const resizedColumnKey = grid.dataset.columns.find(x => x.name === e.column?.getId())?.name;\n if (!resizedColumnKey) {\n return;\n }\n const columns = grid.dataset.columns;\n //@ts-ignore: typings\n grid.pcfContext.factory.fireEvent('__clearColumns');\n for (const { ...col } of columns) {\n if (col.name === resizedColumnKey) {\n col.visualSizeFactor = e.column?.getActualWidth()!\n }\n //@ts-ignore - portal accepts metadata\n await grid.dataset.addColumn!(col.name, col.alias, col);\n }\n grid.pcfContext.factory.requestRender();\n }, 200); */\n }\n return (\n <div\n ref={containerRef}\n className={`${styles.root} ag-theme-balham`}\n >\n {agColumns.length > 0 &&\n <>\n {((grid.isEditable && grid.parameters.ChangeEditorMode?.raw !== 'edit') || grid.parameters.ChangeEditorMode?.raw === 'read') &&\n <Save />\n }\n {grid.error &&\n <MessageBar messageBarType={MessageBarType.error}>\n <span dangerouslySetInnerHTML={{\n __html: grid.errorMessage!\n }} />\n </MessageBar>\n }\n <AgGridReact\n animateRows\n rowSelection={grid.selection.type}\n noRowsOverlayComponent={EmptyRecords}\n loadingOverlayComponent={LoadingOverlay}\n suppressDragLeaveHidesColumns\n onColumnResized={(e) => updateColumnVisualSizeFactor(e)}\n onColumnMoved={(e) => {\n if (e.finished) {\n updateColumnOrder(e);\n }\n }}\n reactiveCustomComponents\n onRowSelected={(e) => {\n //prevent infinite loop since we are also setting the rows\n //when the selection comes from above\n if (e.source.includes('api') || e.source === 'gridInitializing') {\n return;\n }\n selection.toggle(e.data!, e.node.isSelected()!)\n }}\n onCellDoubleClicked={(e) => {\n if (grid.isNavigationEnabled && !grid.isEditable) {\n grid.openDatasetItem(e.data!.getNamedReference())\n }\n }}\n onCellMouseOver={(e) => {\n if (e.colDef.colId === '__checkbox') {\n gridApiRef.current?.setGridOption('suppressRowClickSelection', true)\n }\n }}\n onCellMouseOut={(e) => {\n gridApiRef.current?.setGridOption('suppressRowClickSelection', false)\n }}\n getRowId={(params) => params.data.getRecordId()}\n onGridReady={(e) => {\n gridApiRef.current = e.api as any;\n if (grid.loading) {\n gridApiRef.current?.showLoadingOverlay();\n }\n sizeColumnsIfSpaceAvailable();\n onGridReady();\n }}\n initialState={stateRef.current}\n onStateUpdated={(e) => stateRef.current = {\n ...stateRef.current,\n ...e.state\n }}\n rowHeight={42}\n columnDefs={agColumns as any}\n rowData={records}\n >\n </AgGridReact>\n {pagingController.isEnabled &&\n <Paging />\n }\n </>\n }\n </div>\n );\n}"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AgGrid.js","sources":["../../../../../../src/components/Grid/core/components/AgGrid/AgGrid.tsx"],"sourcesContent":["import { AgGridReact } from '@ag-grid-community/react';\nimport { MessageBar, MessageBarType, useTheme } from \"@fluentui/react\";\nimport { ColumnMovedEvent, ColumnResizedEvent, GridApi } from \"@ag-grid-community/core\";\nimport { useEffect, useRef } from \"react\";\nimport { useSelectionController } from \"../../../selection/controllers/useSelectionController\";\nimport { useGridInstance } from \"../../hooks/useGridInstance\";\nimport { getGridStyles } from \"./styles\";\nimport React from 'react';\nimport { useAgGridController } from \"./controllers/useAgGridController\";\nimport { Paging } from \"../../../paging/components/Paging/Paging\";\nimport { EmptyRecords } from \"./components/EmptyRecordsOverlay/EmptyRecords\";\nimport { Save } from \"../Save/Save\";\nimport { LoadingOverlay } from \"./components/LoadingOverlay/LoadingOverlay\";\nimport { usePagingController } from '../../../paging/controllers/usePagingController';\nimport { CHECKBOX_COLUMN_KEY } from '../../../constants';\nimport { IEntityRecord } from '../../../interfaces';\nimport { ROW_HEIGHT } from '../../constants';\n\nexport const AgGrid = () => {\n const grid = useGridInstance();\n const selection = useSelectionController();\n const gridApiRef = useRef<GridApi<ComponentFramework.PropertyHelper.DataSetApi.EntityRecord>>();\n const containerRef = useRef<HTMLDivElement>(null);\n const theme = useTheme();\n let { agColumns, stateRef, getTotalColumnsWidth, onGridReady } = useAgGridController(gridApiRef);\n const pagingController = usePagingController();\n const styles = getGridStyles(theme, grid.height);\n const resizeTimeOutRef = useRef<NodeJS.Timeout>();\n\n const getAvailableWidth = () => {\n const rootWrapper = containerRef.current?.querySelector('.ag-root-wrapper');\n return rootWrapper?.clientWidth ?? 0;\n }\n\n const sizeColumnsIfSpaceAvailable = () => {\n const availableWidth = getAvailableWidth();\n if (availableWidth > getTotalColumnsWidth()) {\n gridApiRef.current!.sizeColumnsToFit();\n }\n }\n\n const updateColumnOrder = async (e: ColumnMovedEvent<IEntityRecord, any>) => {\n if(e.type === 'gridOptionsChanged') {\n return;\n }\n const sortedIds = e.api.getState().columnOrder?.orderedColIds;\n if (!sortedIds) {\n return;\n }\n const idIndexMap = new Map<string, number>();\n sortedIds.forEach((id, index) => {\n idIndexMap.set(id, index);\n });\n\n const orderedColumns = [...grid.dataset.columns].sort((a, b) => {\n const aIndex = idIndexMap.has(a.name) ? idIndexMap.get(a.name)! : sortedIds.length;\n const bIndex = idIndexMap.has(b.name) ? idIndexMap.get(b.name)! : sortedIds.length;\n return aIndex - bIndex;\n });\n //@ts-ignore\n grid.dataset.setColumns?.(orderedColumns);\n grid.dataset.paging.loadExactPage(grid.paging.pageNumber);\n }\n\n const updateColumnVisualSizeFactor = async (e: ColumnResizedEvent<IEntityRecord, any>): Promise<void> => {\n if(e.source !== 'uiColumnResized') {\n return;\n }\n clearTimeout(resizeTimeOutRef.current)\n resizeTimeOutRef.current = setTimeout(async () => {\n const resizedColumnKey = grid.dataset.columns.find(x => x.name === e.column?.getId())?.name;\n if (!resizedColumnKey) {\n return;\n }\n const columns = grid.dataset.columns;\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].name === resizedColumnKey) {\n columns[i].visualSizeFactor = e.column?.getActualWidth()!\n }\n }\n //@ts-ignore\n grid.dataset.setColumns?.(columns);\n }, 200);\n }\n return (\n <div\n ref={containerRef}\n className={`${styles.root} ag-theme-balham`}\n >\n {agColumns.length > 0 &&\n <>\n {((grid.isEditable && grid.parameters.ChangeEditorMode?.raw !== 'edit') || grid.parameters.ChangeEditorMode?.raw === 'read') &&\n <Save />\n }\n {grid.error &&\n <MessageBar messageBarType={MessageBarType.error}>\n <span dangerouslySetInnerHTML={{\n __html: grid.errorMessage!\n }} />\n </MessageBar>\n }\n <AgGridReact\n animateRows\n rowSelection={grid.selection.type}\n noRowsOverlayComponent={Object.keys(grid.dataset.sortedRecordIds.length === 0) && !grid.loading ? EmptyRecords : undefined}\n loadingOverlayComponent={grid.loading ? LoadingOverlay : undefined}\n suppressDragLeaveHidesColumns\n onColumnResized={(e) => updateColumnVisualSizeFactor(e)}\n onColumnMoved={(e) => {\n if (e.finished) {\n updateColumnOrder(e);\n }\n }}\n reactiveCustomComponents\n onRowSelected={(e) => {\n //prevent infinite loop since we are also setting the rows\n //when the selection comes from above\n if (e.source.includes('api') || e.source === 'gridInitializing') {\n return;\n }\n selection.toggle(e.data!, e.node.isSelected()!)\n }}\n onCellDoubleClicked={(e) => {\n if (grid.isNavigationEnabled && !grid.isEditable) {\n grid.openDatasetItem(e.data!.getNamedReference())\n }\n }}\n onCellMouseOver={(e) => {\n if (e.colDef.colId === '__checkbox') {\n gridApiRef.current?.setGridOption('suppressRowClickSelection', true)\n }\n }}\n onCellMouseOut={(e) => {\n gridApiRef.current?.setGridOption('suppressRowClickSelection', false)\n }}\n getRowId={(params) => params.data.getRecordId()}\n onGridReady={(e) => {\n gridApiRef.current = e.api as any;\n if (grid.loading) {\n gridApiRef.current?.showLoadingOverlay();\n }\n sizeColumnsIfSpaceAvailable();\n onGridReady();\n }}\n initialState={stateRef.current}\n onStateUpdated={(e) => stateRef.current = {\n ...stateRef.current,\n ...e.state\n }}\n rowHeight={ROW_HEIGHT}\n columnDefs={agColumns as any}\n rowData={grid.records}\n >\n </AgGridReact>\n {pagingController.isEnabled &&\n <Paging />\n }\n </>\n }\n </div>\n );\n}"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
@@ -8,7 +8,6 @@ import { IUpdatedRecord } from "../../../services/RecordUpdateService/model/Reco
|
|
|
8
8
|
interface IAgGridController {
|
|
9
9
|
agColumns: ColDef[];
|
|
10
10
|
records: IEntityRecord[];
|
|
11
|
-
maxNumberOfVisibleRecords: number;
|
|
12
11
|
stateRef: React.MutableRefObject<IAgGridState>;
|
|
13
12
|
getTotalColumnsWidth: () => number;
|
|
14
13
|
onGridReady: () => void;
|
|
@@ -20,12 +20,16 @@ const useAgGridController = (gridApiRef) => {
|
|
|
20
20
|
const pagingController = usePagingController();
|
|
21
21
|
const agGridReadyRef = useRef(false);
|
|
22
22
|
const agGrid = useMemo(() => new AgGrid(grid, gridApiRef), []);
|
|
23
|
-
const { columns
|
|
23
|
+
const { columns } = useGridController();
|
|
24
24
|
const [agColumns, setAgColumns] = useState([]);
|
|
25
25
|
const [stateValuesRef, getNewStateValues, setDefaultStateValues] = useStateValues(grid.state);
|
|
26
26
|
//this is to prevent AgGrid from throwing errors in some rerender edge cases - https://github.com/ag-grid/ag-grid/issues/6013
|
|
27
|
-
const [agRecords] = useDebounce(records, 0);
|
|
28
|
-
|
|
27
|
+
const [agRecords] = useDebounce(grid.records, 0);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
gridApiRef.current?.refreshCells({
|
|
30
|
+
rowNodes: gridApiRef.current?.getRenderedNodes()
|
|
31
|
+
});
|
|
32
|
+
}, [grid.records]);
|
|
29
33
|
useEffect(() => {
|
|
30
34
|
if (!agGridReadyRef.current) {
|
|
31
35
|
return;
|
|
@@ -85,9 +89,6 @@ const useAgGridController = (gridApiRef) => {
|
|
|
85
89
|
return;
|
|
86
90
|
}
|
|
87
91
|
stateValuesRef.current.__updatedRecords = grid.recordUpdateService.updatedRecords;
|
|
88
|
-
if (grid.paging.pageSize !== agGrid.initialPageSize) {
|
|
89
|
-
stateValuesRef.current.initialPageSize = agGrid.initialPageSize;
|
|
90
|
-
}
|
|
91
92
|
grid.pcfContext.mode.setControlState(getNewStateValues());
|
|
92
93
|
};
|
|
93
94
|
}, []);
|
|
@@ -158,7 +159,6 @@ const useAgGridController = (gridApiRef) => {
|
|
|
158
159
|
return {
|
|
159
160
|
agColumns: agColumns,
|
|
160
161
|
records: agRecords,
|
|
161
|
-
maxNumberOfVisibleRecords: agGrid.maxNumberOfVisibleRecords,
|
|
162
162
|
stateRef: stateValuesRef,
|
|
163
163
|
getTotalColumnsWidth: () => agGrid.getTotalColumnsWidth(),
|
|
164
164
|
onGridReady: onGridReady
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAgGridController.js","sources":["../../../../../../../src/components/Grid/core/components/AgGrid/controllers/useAgGridController.ts"],"sourcesContent":["import { ColDef, GridApi, GridState } from \"@ag-grid-community/core\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { IEntityRecord } from \"../../../../interfaces\";\nimport { useGridController } from \"../../../controllers/useGridController\"\nimport { useGridInstance } from \"../../../hooks/useGridInstance\";\nimport { EditableCell } from \"../../Cell/EditableCell/EditableCell\";\nimport { ReadOnlyCell } from \"../../Cell/ReadOnlyCell/ReadOnlyCell\";\nimport { ColumnHeader } from \"../../ColumnHeader/ColumnHeader\";\nimport { GlobalCheckBox } from \"../../ColumnHeader/components/GlobalCheckbox/GlobalCheckbox\";\nimport { AgGrid } from \"../model/AgGrid\";\nimport { ModuleRegistry } from '@ag-grid-community/core';\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { useDebounce } from 'use-debounce';\nimport \"@ag-grid-community/styles/ag-grid.css\";\nimport \"@ag-grid-community/styles/ag-theme-balham.css\";\nimport { usePagingController } from \"../../../../paging/controllers/usePagingController\";\nimport { useStateValues } from \"@talxis/react-components\";\nimport { IUpdatedRecord } from \"../../../services/RecordUpdateService/model/RecordUpdateService\";\nModuleRegistry.registerModules([ClientSideRowModelModule]);\n\ninterface IAgGridController {\n agColumns: ColDef[],\n records: IEntityRecord[],\n maxNumberOfVisibleRecords: number;\n stateRef: React.MutableRefObject<IAgGridState>\n getTotalColumnsWidth: () => number,\n onGridReady: () => void;\n}\n\ninterface IAgGridState extends GridState {\n '__updatedRecords'?: IUpdatedRecord[];\n initialPageSize?: number;\n}\n\nexport const useAgGridController = (gridApiRef: React.MutableRefObject<GridApi<ComponentFramework.PropertyHelper.DataSetApi.EntityRecord> | undefined>): IAgGridController => {\n const grid = useGridInstance();\n const pagingController = usePagingController();\n const agGridReadyRef = useRef<boolean>(false);\n const agGrid = useMemo(() => new AgGrid(grid, gridApiRef), [])\n const { columns, records } = useGridController();\n const [agColumns, setAgColumns] = useState<ColDef[]>([]);\n const [stateValuesRef, getNewStateValues, setDefaultStateValues] = useStateValues<IAgGridState>(grid.state as IAgGridState);\n //this is to prevent AgGrid from throwing errors in some rerender edge cases - https://github.com/ag-grid/ag-grid/issues/6013\n const [agRecords] = useDebounce(records, 0);\n gridApiRef.current?.refreshCells();\n\n useEffect(() => {\n if (!agGridReadyRef.current) {\n return;\n }\n agGrid.selectRows();\n gridApiRef.current?.refreshHeader();\n }, [grid.dataset.getSelectedRecordIds().join('')]);\n\n useEffect(() => {\n if (columns.length === 0) {\n return;\n }\n const _agColumns = agGrid.columns;\n for (const agColumn of _agColumns) {\n agColumn.cellRenderer = ReadOnlyCell;\n agColumn.cellEditor = EditableCell;\n agColumn.headerComponent = ColumnHeader;\n\n if (agColumn.field === '__checkbox') {\n agColumn.lockPosition = 'left';\n agColumn.headerComponent = GlobalCheckBox\n }\n }\n setAgColumns(_agColumns);\n }, [columns]);\n\n //this might be very Portal centric\n useEffect(() => {\n if (!gridApiRef.current) {\n return;\n }\n if (grid.loading) {\n gridApiRef.current.showLoadingOverlay();\n return;\n }\n gridApiRef.current.hideOverlay();\n setTimeout(() => {\n if (grid.records.length === 0) {\n gridApiRef.current?.showNoRowsOverlay();\n }\n }, 0);\n }, [grid.loading]);\n\n\n useEffect(() => {\n if (!gridApiRef.current) {\n return;\n }\n gridApiRef.current.ensureIndexVisible(0)\n }, [pagingController.pageNumber]);\n\n useEffect(() => {\n const onBeforeUnload = (ev: BeforeUnloadEvent) => {\n if (grid.recordUpdateService.isDirty) {\n ev.preventDefault();\n return 'Unsaved changes!'\n }\n }\n window.addEventListener('beforeunload', onBeforeUnload);\n return () => {\n window.removeEventListener('beforeunload', onBeforeUnload);\n if (!gridApiRef.current) {\n return;\n }\n stateValuesRef.current.__updatedRecords = grid.recordUpdateService.updatedRecords;\n if(grid.paging.pageSize !== agGrid.initialPageSize) {\n stateValuesRef.current.initialPageSize = agGrid.initialPageSize; \n }\n grid.pcfContext.mode.setControlState(getNewStateValues());\n }\n }, []);\n\n //this can be replaced with native functionality if we decide to use ag grid enterprise\n useEffect(() => {\n const onKeyDownHandler = async (event: KeyboardEvent) => {\n // if control key(windows) or command key(iOS) + S key is clicked\n if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'c') {\n const cell = gridApiRef.current?.getFocusedCell();\n if (!cell) {\n return;\n }\n const row = gridApiRef.current?.getDisplayedRowAtIndex(cell.rowIndex);\n const formattedValue = gridApiRef.current?.getCellValue({\n rowNode: row!,\n colKey: cell.column.getColId(),\n useFormatter: true\n })\n navigator.clipboard.writeText(formattedValue ?? \"\");\n }\n }\n window.addEventListener('keydown', onKeyDownHandler)\n return () => {\n window.removeEventListener('keydown', onKeyDownHandler);\n }\n }, []);\n\n //TODO: find a better way to achieve this\n useEffect(() => {\n const globalClickHandler = (e: MouseEvent) => {\n const hasAncestorWithClass = (element: HTMLElement, className: string): boolean => {\n let parent = element;\n while (!parent.classList.contains('ag-theme-balham')) {\n if (parent.classList.contains(className)) {\n return true;\n }\n if (parent.tagName === 'HTML') {\n return false;\n }\n parent = parent.parentElement!;\n if (!parent) {\n return true;\n }\n }\n return false;\n };\n try {\n if (!hasAncestorWithClass(e.target as HTMLElement, 'ag-cell')) {\n gridApiRef.current?.stopEditing();\n }\n }\n catch (err) {\n }\n }\n document.addEventListener('click', globalClickHandler)\n return () => {\n document.removeEventListener('click', globalClickHandler);\n }\n }, []);\n\n const onGridReady = () => {\n agGridReadyRef.current = true;\n setDefaultStateValues({\n ...gridApiRef.current!.getState(),\n initialPageSize: undefined,\n __updatedRecords: []\n });\n agGrid.selectRows();\n }\n\n return {\n agColumns: agColumns,\n records: agRecords,\n maxNumberOfVisibleRecords: agGrid.maxNumberOfVisibleRecords,\n stateRef: stateValuesRef,\n getTotalColumnsWidth: () => agGrid.getTotalColumnsWidth(),\n onGridReady: onGridReady\n }\n}"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useAgGridController.js","sources":["../../../../../../../src/components/Grid/core/components/AgGrid/controllers/useAgGridController.ts"],"sourcesContent":["import { ColDef, GridApi, GridState } from \"@ag-grid-community/core\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { IEntityRecord } from \"../../../../interfaces\";\nimport { useGridController } from \"../../../controllers/useGridController\"\nimport { useGridInstance } from \"../../../hooks/useGridInstance\";\nimport { EditableCell } from \"../../Cell/EditableCell/EditableCell\";\nimport { ReadOnlyCell } from \"../../Cell/ReadOnlyCell/ReadOnlyCell\";\nimport { ColumnHeader } from \"../../ColumnHeader/ColumnHeader\";\nimport { GlobalCheckBox } from \"../../ColumnHeader/components/GlobalCheckbox/GlobalCheckbox\";\nimport { AgGrid } from \"../model/AgGrid\";\nimport { ModuleRegistry } from '@ag-grid-community/core';\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { useDebounce } from 'use-debounce';\nimport \"@ag-grid-community/styles/ag-grid.css\";\nimport \"@ag-grid-community/styles/ag-theme-balham.css\";\nimport { usePagingController } from \"../../../../paging/controllers/usePagingController\";\nimport { useStateValues } from \"@talxis/react-components\";\nimport { IUpdatedRecord } from \"../../../services/RecordUpdateService/model/RecordUpdateService\";\nModuleRegistry.registerModules([ClientSideRowModelModule]);\n\ninterface IAgGridController {\n agColumns: ColDef[],\n records: IEntityRecord[],\n stateRef: React.MutableRefObject<IAgGridState>\n getTotalColumnsWidth: () => number,\n onGridReady: () => void;\n}\n\ninterface IAgGridState extends GridState {\n '__updatedRecords'?: IUpdatedRecord[];\n initialPageSize?: number;\n}\n\nexport const useAgGridController = (gridApiRef: React.MutableRefObject<GridApi<ComponentFramework.PropertyHelper.DataSetApi.EntityRecord> | undefined>): IAgGridController => {\n const grid = useGridInstance();\n const pagingController = usePagingController();\n const agGridReadyRef = useRef<boolean>(false);\n const agGrid = useMemo(() => new AgGrid(grid, gridApiRef), [])\n const { columns } = useGridController();\n const [agColumns, setAgColumns] = useState<ColDef[]>([]);\n const [stateValuesRef, getNewStateValues, setDefaultStateValues] = useStateValues<IAgGridState>(grid.state as IAgGridState);\n //this is to prevent AgGrid from throwing errors in some rerender edge cases - https://github.com/ag-grid/ag-grid/issues/6013\n const [agRecords] = useDebounce(grid.records, 0);\n\n useEffect(() => {\n gridApiRef.current?.refreshCells({\n rowNodes: gridApiRef.current?.getRenderedNodes()\n });\n }, [grid.records])\n\n useEffect(() => {\n if (!agGridReadyRef.current) {\n return;\n }\n agGrid.selectRows();\n gridApiRef.current?.refreshHeader();\n }, [grid.dataset.getSelectedRecordIds().join('')]);\n\n useEffect(() => {\n if (columns.length === 0) {\n return;\n }\n const _agColumns = agGrid.columns;\n for (const agColumn of _agColumns) {\n agColumn.cellRenderer = ReadOnlyCell;\n agColumn.cellEditor = EditableCell;\n agColumn.headerComponent = ColumnHeader;\n\n if (agColumn.field === '__checkbox') {\n agColumn.lockPosition = 'left';\n agColumn.headerComponent = GlobalCheckBox\n }\n }\n setAgColumns(_agColumns);\n }, [columns]);\n\n //this might be very Portal centric\n useEffect(() => {\n if (!gridApiRef.current) {\n return;\n }\n if (grid.loading) {\n gridApiRef.current.showLoadingOverlay();\n return;\n }\n gridApiRef.current.hideOverlay();\n setTimeout(() => {\n if (grid.records.length === 0) {\n gridApiRef.current?.showNoRowsOverlay();\n }\n }, 0);\n }, [grid.loading]);\n\n\n useEffect(() => {\n if (!gridApiRef.current) {\n return;\n }\n gridApiRef.current.ensureIndexVisible(0)\n }, [pagingController.pageNumber]);\n\n useEffect(() => {\n const onBeforeUnload = (ev: BeforeUnloadEvent) => {\n if (grid.recordUpdateService.isDirty) {\n ev.preventDefault();\n return 'Unsaved changes!'\n }\n }\n window.addEventListener('beforeunload', onBeforeUnload);\n return () => {\n window.removeEventListener('beforeunload', onBeforeUnload);\n if (!gridApiRef.current) {\n return;\n }\n stateValuesRef.current.__updatedRecords = grid.recordUpdateService.updatedRecords;\n grid.pcfContext.mode.setControlState(getNewStateValues());\n }\n }, []);\n\n //this can be replaced with native functionality if we decide to use ag grid enterprise\n useEffect(() => {\n const onKeyDownHandler = async (event: KeyboardEvent) => {\n // if control key(windows) or command key(iOS) + S key is clicked\n if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'c') {\n const cell = gridApiRef.current?.getFocusedCell();\n if (!cell) {\n return;\n }\n const row = gridApiRef.current?.getDisplayedRowAtIndex(cell.rowIndex);\n const formattedValue = gridApiRef.current?.getCellValue({\n rowNode: row!,\n colKey: cell.column.getColId(),\n useFormatter: true\n })\n navigator.clipboard.writeText(formattedValue ?? \"\");\n }\n }\n window.addEventListener('keydown', onKeyDownHandler)\n return () => {\n window.removeEventListener('keydown', onKeyDownHandler);\n }\n }, []);\n\n //TODO: find a better way to achieve this\n useEffect(() => {\n const globalClickHandler = (e: MouseEvent) => {\n const hasAncestorWithClass = (element: HTMLElement, className: string): boolean => {\n let parent = element;\n while (!parent.classList.contains('ag-theme-balham')) {\n if (parent.classList.contains(className)) {\n return true;\n }\n if (parent.tagName === 'HTML') {\n return false;\n }\n parent = parent.parentElement!;\n if (!parent) {\n return true;\n }\n }\n return false;\n };\n try {\n if (!hasAncestorWithClass(e.target as HTMLElement, 'ag-cell')) {\n gridApiRef.current?.stopEditing();\n }\n }\n catch (err) {\n }\n }\n document.addEventListener('click', globalClickHandler)\n return () => {\n document.removeEventListener('click', globalClickHandler);\n }\n }, []);\n\n const onGridReady = () => {\n agGridReadyRef.current = true;\n setDefaultStateValues({\n ...gridApiRef.current!.getState(),\n initialPageSize: undefined,\n __updatedRecords: []\n });\n agGrid.selectRows();\n }\n\n return {\n agColumns: agColumns,\n records: agRecords,\n stateRef: stateValuesRef,\n getTotalColumnsWidth: () => agGrid.getTotalColumnsWidth(),\n onGridReady: onGridReady\n }\n}"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,8 @@ import { Grid } from "../../../model/Grid";
|
|
|
5
5
|
import { GridDependency } from "../../../model/GridDependency";
|
|
6
6
|
export declare class AgGrid extends GridDependency {
|
|
7
7
|
private _gridApiRef;
|
|
8
|
-
readonly initialPageSize: number;
|
|
9
8
|
constructor(grid: Grid, gridApiRef: React.MutableRefObject<GridApi<ComponentFramework.PropertyHelper.DataSetApi.EntityRecord> | undefined>);
|
|
10
9
|
get columns(): ColDef<any, any>[];
|
|
11
|
-
get maxNumberOfVisibleRecords(): number;
|
|
12
10
|
getTotalColumnsWidth(): number;
|
|
13
11
|
selectRows(): void;
|
|
14
12
|
private get _gridApi();
|
|
@@ -5,7 +5,6 @@ class AgGrid extends GridDependency {
|
|
|
5
5
|
constructor(grid, gridApiRef) {
|
|
6
6
|
super(grid);
|
|
7
7
|
this._gridApiRef = gridApiRef;
|
|
8
|
-
this.initialPageSize = grid.state?.initialPageSize ?? grid.paging.pageSize;
|
|
9
8
|
}
|
|
10
9
|
get columns() {
|
|
11
10
|
const agColumns = [];
|
|
@@ -62,12 +61,6 @@ class AgGrid extends GridDependency {
|
|
|
62
61
|
}
|
|
63
62
|
return agColumns;
|
|
64
63
|
}
|
|
65
|
-
get maxNumberOfVisibleRecords() {
|
|
66
|
-
if (this.initialPageSize < this._grid.records.length) {
|
|
67
|
-
return this.initialPageSize;
|
|
68
|
-
}
|
|
69
|
-
return this._grid.records.length;
|
|
70
|
-
}
|
|
71
64
|
getTotalColumnsWidth() {
|
|
72
65
|
if (!this._gridApi) {
|
|
73
66
|
return 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgGrid.js","sources":["../../../../../../../src/components/Grid/core/components/AgGrid/model/AgGrid.ts"],"sourcesContent":["import { ColDef, GridApi, IRowNode } from \"@ag-grid-community/core\";\nimport { Grid } from \"../../../model/Grid\";\nimport { GridDependency } from \"../../../model/GridDependency\";\nimport { DataType } from \"../../../enums/DataType\";\nimport { IGridColumn } from \"../../../interfaces/IGridColumn\";\n\nexport class AgGrid extends GridDependency {\n private _gridApiRef: React.MutableRefObject<GridApi<ComponentFramework.PropertyHelper.DataSetApi.EntityRecord> | undefined>;\n
|
|
1
|
+
{"version":3,"file":"AgGrid.js","sources":["../../../../../../../src/components/Grid/core/components/AgGrid/model/AgGrid.ts"],"sourcesContent":["import { ColDef, GridApi, IRowNode } from \"@ag-grid-community/core\";\nimport { Grid } from \"../../../model/Grid\";\nimport { GridDependency } from \"../../../model/GridDependency\";\nimport { DataType } from \"../../../enums/DataType\";\nimport { IGridColumn } from \"../../../interfaces/IGridColumn\";\n\nexport class AgGrid extends GridDependency {\n private _gridApiRef: React.MutableRefObject<GridApi<ComponentFramework.PropertyHelper.DataSetApi.EntityRecord> | undefined>;\n\n constructor(grid: Grid, gridApiRef: React.MutableRefObject<GridApi<ComponentFramework.PropertyHelper.DataSetApi.EntityRecord> | undefined>) {\n super(grid);\n this._gridApiRef = gridApiRef;\n }\n public get columns() {\n const agColumns: ColDef[] = [];\n for (const column of this._grid.columns) {\n const agColumn: ColDef = {\n colId: column.key,\n field: column.key,\n headerName: column.displayName,\n hide: column.isHidden,\n initialWidth: column.width,\n sortable: column.isSortable,\n editable: column.isEditable,\n resizable: column.isResizable,\n suppressMovable: this._grid.props.parameters.ChangeEditorMode ? true : undefined,\n autoHeaderHeight: true,\n suppressSizeToFit: column.key === '__checkbox',\n cellClass: this._getCellClassName(column),\n valueFormatter: (p) => {\n return p.data.getFormattedValue(column.key)\n },\n valueGetter: (p) => {\n return p.data.getValue(column.key)\n },\n cellRendererParams: {\n baseColumn: column\n },\n cellEditorParams: {\n baseColumn: column,\n },\n headerComponentParams: {\n baseColumn: column\n }, \n suppressKeyboardEvent: (params) => {\n if (params.event.key !== 'Enter' || params.api.getEditingCells().length === 0) {\n return false;\n }\n switch (column.dataType) {\n case DataType.DATE_AND_TIME_DATE_AND_TIME:\n case DataType.DATE_AND_TIME_DATE_ONLY:\n case DataType.LOOKUP_OWNER:\n case DataType.LOOKUP_SIMPLE:\n case DataType.LOOKUP_CUSTOMER:\n case DataType.MULTI_SELECT_OPTIONSET:\n case DataType.OPTIONSET:\n case DataType.TWO_OPTIONS:\n case DataType.WHOLE_DURATION: {\n return true;\n }\n }\n return false;\n },\n }\n agColumns.push(agColumn)\n }\n return agColumns;\n }\n public getTotalColumnsWidth() {\n if(!this._gridApi) {\n return 0;\n }\n let width = 0;\n for (const column of this._gridApi.getAllGridColumns()) {\n width = width + column.getActualWidth();\n }\n return width;\n }\n public selectRows() {\n if (!this._gridApi) {\n return;\n }\n const nodesToSelect: IRowNode[] = [];\n this._gridApi.deselectAll();\n this._gridApi.forEachNode((node: IRowNode) => {\n if (this._grid.dataset.getSelectedRecordIds().includes(node.data.getRecordId())) {\n nodesToSelect.push(node);\n }\n });\n this._gridApi.setNodesSelected({\n nodes: nodesToSelect,\n newValue: true\n });\n this._gridApi.refreshCells({\n columns: ['__checkbox'],\n force: true\n })\n }\n private get _gridApi() {\n return this._gridApiRef.current;\n }\n private _getCellClassName(column: IGridColumn) {\n switch (column.dataType) {\n case DataType.CURRENCY:\n case DataType.DECIMAL:\n case DataType.WHOLE_NONE: {\n return 'talxis-cell-align-right';\n }\n }\n return 'talxis-cell-align-left';\n }\n}"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ITheme } from "@fluentui/react";
|
|
2
|
-
export declare const getGridStyles: (theme: ITheme,
|
|
2
|
+
export declare const getGridStyles: (theme: ITheme, height: string) => import("@fluentui/react").IProcessedStyleSet<{
|
|
3
3
|
root: {
|
|
4
4
|
height: string;
|
|
5
5
|
display: string;
|
|
@@ -15,9 +15,6 @@ export declare const getGridStyles: (theme: ITheme, numOfRecords: number, useCon
|
|
|
15
15
|
'--ag-selected-row-background-color': string;
|
|
16
16
|
'--ag-range-selection-border-color': string;
|
|
17
17
|
borderBottom: string;
|
|
18
|
-
':has(.ag-overlay:not(.ag-hidden) .TALXIS__grid__empty-records), :has(.ag-center-cols-container:empty)': {
|
|
19
|
-
minHeight: number;
|
|
20
|
-
};
|
|
21
18
|
};
|
|
22
19
|
'.ag-root-wrapper.ag-layout-normal': {
|
|
23
20
|
height: string;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { mergeStyleSets } from '@fluentui/react';
|
|
2
2
|
|
|
3
|
-
const getGridHeight = (
|
|
4
|
-
if (
|
|
5
|
-
return
|
|
3
|
+
const getGridHeight = (height) => {
|
|
4
|
+
if (height === '100%') {
|
|
5
|
+
return height;
|
|
6
6
|
}
|
|
7
|
-
return `calc(${
|
|
7
|
+
return `calc(${height} + var(--height-offset))`;
|
|
8
8
|
};
|
|
9
|
-
const getGridStyles = (theme,
|
|
9
|
+
const getGridStyles = (theme, height) => {
|
|
10
10
|
return mergeStyleSets({
|
|
11
11
|
root: {
|
|
12
12
|
height: '100%',
|
|
@@ -23,12 +23,9 @@ const getGridStyles = (theme, numOfRecords, useContainerAsHeight) => {
|
|
|
23
23
|
'--ag-selected-row-background-color': theme.palette.themeLighter,
|
|
24
24
|
'--ag-range-selection-border-color': theme.palette.themePrimary,
|
|
25
25
|
borderBottom: `1px solid ${theme.semanticColors.bodyDivider}`,
|
|
26
|
-
':has(.ag-overlay:not(.ag-hidden) .TALXIS__grid__empty-records), :has(.ag-center-cols-container:empty)': {
|
|
27
|
-
minHeight: 270
|
|
28
|
-
}
|
|
29
26
|
},
|
|
30
27
|
'.ag-root-wrapper.ag-layout-normal': {
|
|
31
|
-
height: getGridHeight(
|
|
28
|
+
height: getGridHeight(height)
|
|
32
29
|
},
|
|
33
30
|
'.ag-body': {
|
|
34
31
|
borderTop: `1px solid ${theme.semanticColors.bodyDivider}`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sources":["../../../../../../src/components/Grid/core/components/AgGrid/styles.ts"],"sourcesContent":["import { ITheme, mergeStyleSets } from \"@fluentui/react\";\n\nconst getGridHeight = (
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../../../src/components/Grid/core/components/AgGrid/styles.ts"],"sourcesContent":["import { ITheme, mergeStyleSets } from \"@fluentui/react\";\n\nconst getGridHeight = (height: string) => {\n if(height === '100%') {\n return height;\n }\n return `calc(${height} + var(--height-offset))`;\n}\n\nexport const getGridStyles = (theme: ITheme, height: string) => {\n return mergeStyleSets({\n root: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n '--height-offset': '64px',\n ':has(.ag-body-horizontal-scroll-viewport[style*=\"height: 0px\"])': {\n '--height-offset': '45px'\n } ,\n '--ag-borders': 'none !important',\n '.ag-root-wrapper': {\n maxHeight: '100%',\n '--ag-input-focus-border-color': 'transparent',\n '--ag-selected-row-background-color': theme.palette.themeLighter,\n '--ag-range-selection-border-color': theme.palette.themePrimary,\n borderBottom: `1px solid ${theme.semanticColors.bodyDivider}`,\n },\n '.ag-root-wrapper.ag-layout-normal': {\n height: getGridHeight(height)\n },\n '.ag-body': {\n borderTop: `1px solid ${theme.semanticColors.bodyDivider}`\n },\n '.ag-header-viewport': {\n backgroundColor: `${theme.semanticColors.bodyBackground}`\n },\n '.ag-center-cols-container': {\n minWidth: '100%',\n },\n '.ag-layout-auto-height .ag-center-cols-clipper, .ag-layout-auto-height .ag-center-cols-container, .ag-layout-print .ag-center-cols-clipper, .ag-layout-print .ag-center-cols-container': {\n minHeight: '42px !important'\n },\n '.ag-header-cell': {\n paddingLeft: 0,\n paddingRight: 0,\n backgroundColor: `${theme.semanticColors.bodyBackground} !important`\n },\n '.ag-cell-inline-editing': {\n overflow: 'visible',\n top: -1,\n backgroundColor: 'transparent',\n\n '*:not(.ms-ComboBox)>input': {\n paddingLeft: 10\n },\n '.ms-ComboBox>input': {\n paddingLeft: 2\n },\n '.talxis__lookupControl': {\n '.ms-BasePicker-itemsWrapper': {\n padding: 0,\n '.ms-CommandBar': {\n height: '100%'\n }\n },\n },\n '.TALXIS__error-message__root': {\n display: 'none'\n }\n },\n '.talxis-cell-align-right': {\n '[class^=\"cellContent\"]': {\n justifyContent: 'flex-end',\n },\n '.talxis-cell-text, input': {\n textAlign: 'right'\n },\n 'input': {\n paddingRight: 10\n }\n },\n '.ag-cell-focus:has([data-is-valid=\"false\"])': {\n border: '1px solid red !important;'\n },\n }\n })\n}"],"names":[],"mappings":";;AAEA,MAAM,aAAa,GAAG,CAAC,MAAc,KAAI;IACrC,IAAG,MAAM,KAAK,MAAM,EAAE;AAClB,QAAA,OAAO,MAAM,CAAC;AACjB,KAAA;IACD,OAAO,CAAA,KAAA,EAAQ,MAAM,CAAA,wBAAA,CAA0B,CAAC;AACpD,CAAC,CAAA;MAEY,aAAa,GAAG,CAAC,KAAa,EAAE,MAAc,KAAI;AAC3D,IAAA,OAAO,cAAc,CAAC;AAClB,QAAA,IAAI,EAAE;AACF,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,iBAAiB,EAAE,MAAM;AACzB,YAAA,iEAAiE,EAAE;AAC/D,gBAAA,iBAAiB,EAAE,MAAM;AAC5B,aAAA;AACD,YAAA,cAAc,EAAE,iBAAiB;AACjC,YAAA,kBAAkB,EAAE;AAChB,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,+BAA+B,EAAE,aAAa;AAC9C,gBAAA,oCAAoC,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;AAChE,gBAAA,mCAAmC,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;AAC/D,gBAAA,YAAY,EAAE,CAAa,UAAA,EAAA,KAAK,CAAC,cAAc,CAAC,WAAW,CAAE,CAAA;AAChE,aAAA;AACD,YAAA,mCAAmC,EAAE;AACjC,gBAAA,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;AAChC,aAAA;AACD,YAAA,UAAU,EAAE;AACR,gBAAA,SAAS,EAAE,CAAa,UAAA,EAAA,KAAK,CAAC,cAAc,CAAC,WAAW,CAAE,CAAA;AAC7D,aAAA;AACD,YAAA,qBAAqB,EAAE;AACnB,gBAAA,eAAe,EAAE,CAAG,EAAA,KAAK,CAAC,cAAc,CAAC,cAAc,CAAE,CAAA;AAC5D,aAAA;AACD,YAAA,2BAA2B,EAAE;AACzB,gBAAA,QAAQ,EAAE,MAAM;AACnB,aAAA;AACD,YAAA,wLAAwL,EAAE;AACtL,gBAAA,SAAS,EAAE,iBAAiB;AAC/B,aAAA;AACD,YAAA,iBAAiB,EAAE;AACf,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,YAAY,EAAE,CAAC;AACf,gBAAA,eAAe,EAAE,CAAG,EAAA,KAAK,CAAC,cAAc,CAAC,cAAc,CAAa,WAAA,CAAA;AACvE,aAAA;AACD,YAAA,yBAAyB,EAAE;AACvB,gBAAA,QAAQ,EAAE,SAAS;gBACnB,GAAG,EAAE,CAAC,CAAC;AACP,gBAAA,eAAe,EAAE,aAAa;AAE9B,gBAAA,2BAA2B,EAAE;AACzB,oBAAA,WAAW,EAAE,EAAE;AAClB,iBAAA;AACD,gBAAA,oBAAoB,EAAE;AAClB,oBAAA,WAAW,EAAE,CAAC;AACjB,iBAAA;AACD,gBAAA,wBAAwB,EAAE;AACtB,oBAAA,6BAA6B,EAAE;AAC3B,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,gBAAgB,EAAE;AACd,4BAAA,MAAM,EAAE,MAAM;AACjB,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACD,gBAAA,8BAA8B,EAAE;AAC5B,oBAAA,OAAO,EAAE,MAAM;AAClB,iBAAA;AACJ,aAAA;AACD,YAAA,0BAA0B,EAAE;AACxB,gBAAA,wBAAwB,EAAE;AACtB,oBAAA,cAAc,EAAE,UAAU;AAC7B,iBAAA;AACD,gBAAA,0BAA0B,EAAE;AACxB,oBAAA,SAAS,EAAE,OAAO;AACrB,iBAAA;AACD,gBAAA,OAAO,EAAE;AACL,oBAAA,YAAY,EAAE,EAAE;AACnB,iBAAA;AACJ,aAAA;AACD,YAAA,6CAA6C,EAAE;AAC3C,gBAAA,MAAM,EAAE,2BAA2B;AACtC,aAAA;AACJ,SAAA;AACJ,KAAA,CAAC,CAAA;AACN;;;;"}
|
|
@@ -4,7 +4,6 @@ import { DataType } from '../../../enums/DataType.js';
|
|
|
4
4
|
import { useGridInstance } from '../../../hooks/useGridInstance.js';
|
|
5
5
|
import { useRecordUpdateServiceController } from '../../../services/RecordUpdateService/controllers/useRecordUpdateServiceController.js';
|
|
6
6
|
import { Component } from '../../Component/Component.js';
|
|
7
|
-
import { useTheme } from '@fluentui/react';
|
|
8
7
|
|
|
9
8
|
const EditableCell = (props) => {
|
|
10
9
|
const grid = useGridInstance();
|
|
@@ -19,7 +18,6 @@ const EditableCell = (props) => {
|
|
|
19
18
|
})();
|
|
20
19
|
const valueRef = React.useRef(record.getValue(column.key));
|
|
21
20
|
const [value, setValue] = React.useState(valueRef.current);
|
|
22
|
-
useTheme();
|
|
23
21
|
React.useEffect(() => {
|
|
24
22
|
return () => {
|
|
25
23
|
mountedRef.current = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableCell.js","sources":["../../../../../../../src/components/Grid/core/components/Cell/EditableCell/EditableCell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { DataType } from '../../../enums/DataType';\nimport { useGridInstance } from '../../../hooks/useGridInstance';\nimport { IGridColumn } from '../../../interfaces/IGridColumn';\nimport { useRecordUpdateServiceController } from '../../../services/RecordUpdateService/controllers/useRecordUpdateServiceController';\nimport { Component } from '../../Component/Component';\nimport { ICellEditorParams } from '@ag-grid-community/core';\nimport { IEntityRecord } from '../../../../interfaces';\nimport { useTheme } from '@fluentui/react';\n\ninterface ICell extends ICellEditorParams {\n baseColumn: IGridColumn;\n data: ComponentFramework.PropertyHelper.DataSetApi.EntityRecord;\n}\n\nexport const EditableCell = (props: ICell) => {\n const grid = useGridInstance();\n const column = props.baseColumn;\n const recordUpdateService = useRecordUpdateServiceController();\n const mountedRef = React.useRef(true);\n const hasBeenUpdatedRef = React.useRef<boolean>(false);\n const record: IEntityRecord = (() => {\n //this is so we can load the updated record values from state\n const updatedRecord = grid.recordUpdateService.record(props.data.getRecordId()).get() as any;\n return updatedRecord ?? props.data;\n })();\n const valueRef = React.useRef(record.getValue(column.key));\n const [value, setValue] = React.useState(valueRef.current);\n const theme = useTheme();\n\n React.useEffect(() => {\n return () => {\n mountedRef.current = false;\n if (!hasBeenUpdatedRef.current) {\n return;\n }\n recordUpdateService.record(record.getRecordId()).setValue(column.key, getRecordValue(valueRef.current))\n }\n }, []);\n\n const getComponentValue = (value: any) => {\n //already is component value;\n if(hasBeenUpdatedRef.current) {\n return value;\n }\n switch(column.dataType) {\n case DataType.TWO_OPTIONS: {\n value = value === '1' ? true : false\n break;\n }\n case DataType.OPTIONSET: {\n value = value ? parseInt(value) : null;\n break;\n\n }\n case DataType.MULTI_SELECT_OPTIONSET: {\n value = value ? value.split(',').map((value: string) => parseInt(value)) : null;\n break;\n }\n case DataType.LOOKUP_SIMPLE:\n case DataType.LOOKUP_CUSTOMER:\n case DataType.LOOKUP_OWNER: {\n if(value && !Array.isArray(value)) {\n value = [value];\n }\n value = value?.map((x: any) => {\n return {\n entityType: x.etn,\n id: x.id.guid,\n name: x.name\n }\n })\n break;\n }\n }\n return value;\n }\n //this is just so the setValue API in Power Apps accepts the values that come from the components\n const getRecordValue = (value: any) => {\n switch (column.dataType) {\n case DataType.TWO_OPTIONS: {\n value = value === true ? '1' : '0';\n break;\n }\n case DataType.LOOKUP_SIMPLE:\n case DataType.LOOKUP_CUSTOMER:\n case DataType.LOOKUP_OWNER: {\n value = value?.map((x: any) => {\n return {\n entityName: x.entityType,\n name: x.name,\n id: x.id\n }\n })?.[0];\n break;\n }\n }\n return value;\n }\n\n const onNotifyOutputChanged = (value: any) => {\n valueRef.current = value;\n hasBeenUpdatedRef.current = true;\n if(!mountedRef.current) {\n recordUpdateService.record(record.getRecordId()).setValue(column.key, getRecordValue(valueRef.current))\n return;\n }\n switch(column.dataType) {\n case DataType.OPTIONSET:\n case DataType.DATE_AND_TIME_DATE_ONLY: {\n props.stopEditing();\n return;\n }\n case DataType.LOOKUP_OWNER:\n case DataType.LOOKUP_SIMPLE:\n case DataType.LOOKUP_CUSTOMER: {\n if(value?.length > 0) {\n props.stopEditing();\n return;\n }\n }\n }\n setValue(valueRef.current);\n }\n\n return <Component\n column={column}\n value={getComponentValue(value)}\n formattedValue={record.getFormattedValue(column.key)}\n onNotifyOutputChanged={onNotifyOutputChanged}\n onOverrideControlProps={(props) => {\n return {\n ...props,\n context: {\n ...props.context,\n mode: {\n ...props.context.mode,\n allocatedHeight: 41\n },\n fluentDesignLanguage: props.context.fluentDesignLanguage ? {\n ...props.context.fluentDesignLanguage,\n tokenTheme: {\n ...props.context.fluentDesignLanguage.tokenTheme,\n underlined: false,\n }\n } : undefined\n },\n parameters: {\n ...props.parameters,\n AutoFocus: {\n raw: true\n },\n EnableNavigation: {\n raw: false\n },\n IsInlineNewEnabled: {\n raw: false\n }\n }\n }\n }}\n />\n}"],"names":["_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditableCell.js","sources":["../../../../../../../src/components/Grid/core/components/Cell/EditableCell/EditableCell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { DataType } from '../../../enums/DataType';\nimport { useGridInstance } from '../../../hooks/useGridInstance';\nimport { IGridColumn } from '../../../interfaces/IGridColumn';\nimport { useRecordUpdateServiceController } from '../../../services/RecordUpdateService/controllers/useRecordUpdateServiceController';\nimport { Component } from '../../Component/Component';\nimport { ICellEditorParams } from '@ag-grid-community/core';\nimport { IEntityRecord } from '../../../../interfaces';\nimport { useTheme } from '@fluentui/react';\n\ninterface ICell extends ICellEditorParams {\n baseColumn: IGridColumn;\n data: ComponentFramework.PropertyHelper.DataSetApi.EntityRecord;\n}\n\nexport const EditableCell = (props: ICell) => {\n const grid = useGridInstance();\n const column = props.baseColumn;\n const recordUpdateService = useRecordUpdateServiceController();\n const mountedRef = React.useRef(true);\n const hasBeenUpdatedRef = React.useRef<boolean>(false);\n const record: IEntityRecord = (() => {\n //this is so we can load the updated record values from state\n const updatedRecord = grid.recordUpdateService.record(props.data.getRecordId()).get() as any;\n return updatedRecord ?? props.data;\n })();\n const valueRef = React.useRef(record.getValue(column.key));\n const [value, setValue] = React.useState(valueRef.current);\n\n React.useEffect(() => {\n return () => {\n mountedRef.current = false;\n if (!hasBeenUpdatedRef.current) {\n return;\n }\n recordUpdateService.record(record.getRecordId()).setValue(column.key, getRecordValue(valueRef.current))\n }\n }, []);\n\n const getComponentValue = (value: any) => {\n //already is component value;\n if(hasBeenUpdatedRef.current) {\n return value;\n }\n switch(column.dataType) {\n case DataType.TWO_OPTIONS: {\n value = value === '1' ? true : false\n break;\n }\n case DataType.OPTIONSET: {\n value = value ? parseInt(value) : null;\n break;\n\n }\n case DataType.MULTI_SELECT_OPTIONSET: {\n value = value ? value.split(',').map((value: string) => parseInt(value)) : null;\n break;\n }\n case DataType.LOOKUP_SIMPLE:\n case DataType.LOOKUP_CUSTOMER:\n case DataType.LOOKUP_OWNER: {\n if(value && !Array.isArray(value)) {\n value = [value];\n }\n value = value?.map((x: any) => {\n return {\n entityType: x.etn,\n id: x.id.guid,\n name: x.name\n }\n })\n break;\n }\n }\n return value;\n }\n //this is just so the setValue API in Power Apps accepts the values that come from the components\n const getRecordValue = (value: any) => {\n switch (column.dataType) {\n case DataType.TWO_OPTIONS: {\n value = value === true ? '1' : '0';\n break;\n }\n case DataType.LOOKUP_SIMPLE:\n case DataType.LOOKUP_CUSTOMER:\n case DataType.LOOKUP_OWNER: {\n value = value?.map((x: any) => {\n return {\n entityName: x.entityType,\n name: x.name,\n id: x.id\n }\n })?.[0];\n break;\n }\n }\n return value;\n }\n\n const onNotifyOutputChanged = (value: any) => {\n valueRef.current = value;\n hasBeenUpdatedRef.current = true;\n if(!mountedRef.current) {\n recordUpdateService.record(record.getRecordId()).setValue(column.key, getRecordValue(valueRef.current))\n return;\n }\n switch(column.dataType) {\n case DataType.OPTIONSET:\n case DataType.DATE_AND_TIME_DATE_ONLY: {\n props.stopEditing();\n return;\n }\n case DataType.LOOKUP_OWNER:\n case DataType.LOOKUP_SIMPLE:\n case DataType.LOOKUP_CUSTOMER: {\n if(value?.length > 0) {\n props.stopEditing();\n return;\n }\n }\n }\n setValue(valueRef.current);\n }\n\n return <Component\n column={column}\n value={getComponentValue(value)}\n formattedValue={record.getFormattedValue(column.key)}\n onNotifyOutputChanged={onNotifyOutputChanged}\n onOverrideControlProps={(props) => {\n return {\n ...props,\n context: {\n ...props.context,\n mode: {\n ...props.context.mode,\n allocatedHeight: 41\n },\n fluentDesignLanguage: props.context.fluentDesignLanguage ? {\n ...props.context.fluentDesignLanguage,\n tokenTheme: {\n ...props.context.fluentDesignLanguage.tokenTheme,\n underlined: false,\n }\n } : undefined\n },\n parameters: {\n ...props.parameters,\n AutoFocus: {\n raw: true\n },\n EnableNavigation: {\n raw: false\n },\n IsInlineNewEnabled: {\n raw: false\n }\n }\n }\n }}\n />\n}"],"names":["_jsx"],"mappings":"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"}
|
|
@@ -10,7 +10,6 @@ import { useColumnValidationController } from '../../../../validation/controller
|
|
|
10
10
|
import { useGridInstance } from '../../../hooks/useGridInstance.js';
|
|
11
11
|
import { useSelectionController } from '../../../../selection/controllers/useSelectionController.js';
|
|
12
12
|
import { RIBBON_COLUMN_KEY } from '../../../../constants.js';
|
|
13
|
-
import { useRerender } from '../../../hooks/useRerender.js';
|
|
14
13
|
|
|
15
14
|
const ReadOnlyCell = (props) => {
|
|
16
15
|
const grid = useGridInstance();
|
|
@@ -30,7 +29,6 @@ const ReadOnlyCell = (props) => {
|
|
|
30
29
|
}, iconName: 'Error' })] }) }));
|
|
31
30
|
};
|
|
32
31
|
const InternalReadOnlyCell = (props) => {
|
|
33
|
-
useRerender();
|
|
34
32
|
const grid = useGridInstance();
|
|
35
33
|
const column = props.baseColumn;
|
|
36
34
|
const theme = useTheme();
|
|
@@ -42,9 +40,23 @@ const InternalReadOnlyCell = (props) => {
|
|
|
42
40
|
return updatedRecord ?? props.data;
|
|
43
41
|
})();
|
|
44
42
|
const formattedValue = record.getFormattedValue(column.key);
|
|
43
|
+
const originalSetValue = record.setValue;
|
|
45
44
|
React.useEffect(() => {
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
record.setValue = (columnName, value) => {
|
|
46
|
+
originalSetValue(columnName, value);
|
|
47
|
+
grid.pcfContext.factory.requestRender();
|
|
48
|
+
//so changes propagate when changing values
|
|
49
|
+
//we cannot guarantee a rerender from above because of performance optimizations
|
|
50
|
+
const node = props.api.getRowNode(record.getRecordId());
|
|
51
|
+
if (!node) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
props.api.refreshCells({
|
|
55
|
+
rowNodes: [node],
|
|
56
|
+
force: true
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
}, []);
|
|
48
60
|
const renderLink = (props, formattedValue) => {
|
|
49
61
|
switch (column.dataType) {
|
|
50
62
|
case DataType.LOOKUP_OWNER:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadOnlyCell.js","sources":["../../../../../../../src/components/Grid/core/components/Cell/ReadOnlyCell/ReadOnlyCell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ILinkProps } from '@fluentui/react';\nimport { Link } from '@fluentui/react';\nimport { Text } from '@fluentui/react';\nimport { getReadOnlyCellStyles } from './styles';\nimport { Commands } from '../Commands/Commands';\nimport { Checkbox, Icon, TooltipHost, useTheme, Image } from '@fluentui/react';\nimport { FileAttribute } from '@talxis/client-libraries';\nimport { ReadOnlyOptionSet } from './ReadOnlyOptionSet/ReadOnlyOptionSet';\nimport { IGridColumn } from '../../../interfaces/IGridColumn';\nimport { DataType } from '../../../enums/DataType';\nimport { useColumnValidationController } from '../../../../validation/controllers/useRecordValidationController';\nimport { useGridInstance } from '../../../hooks/useGridInstance';\nimport { useSelectionController } from '../../../../selection/controllers/useSelectionController';\nimport { IEntityRecord } from '../../../../interfaces';\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { RIBBON_COLUMN_KEY } from '../../../../constants';\nimport { useRerender } from '../../../hooks/useRerender';\n\ninterface ICellProps extends ICellRendererParams {\n baseColumn: IGridColumn;\n data: IEntityRecord;\n [key: string]: any;\n}\n\nexport const ReadOnlyCell = (props: ICellProps) => {\n const grid = useGridInstance();\n const column = props.baseColumn;\n const record = props.data; \n const theme = useTheme();\n const styles = getReadOnlyCellStyles(theme);\n const tooltipId = React.useMemo(() => Math.random().toString(), []);\n\n const [isValid, errorMessage] = useColumnValidationController({\n column: column,\n record: record,\n })\n\n return (\n <TooltipHost\n id={tooltipId}\n content={!isValid && !grid.loading ? errorMessage : undefined}>\n <div className={styles.root} data-is-valid={isValid}>\n <div className={styles.cellContent}>\n <InternalReadOnlyCell {...props} />\n </div>\n {!isValid && <Icon styles={{\n root: {\n color: theme.semanticColors.errorIcon\n }\n }} iconName='Error' />}\n </div>\n </TooltipHost>\n )\n};\n\nconst InternalReadOnlyCell = (props: ICellProps) => {\n const [_, rerender] = useRerender();\n const grid = useGridInstance();\n const column = props.baseColumn;\n const theme = useTheme();\n const styles = getReadOnlyCellStyles(theme);\n const selection = useSelectionController();\n const record: IEntityRecord = (() => {\n //this is so we can load the updated record values from state\n const updatedRecord = grid.recordUpdateService.record(props.data.getRecordId()).get() as any;\n return updatedRecord ?? props.data;\n })();\n const formattedValue = record.getFormattedValue(column.key);\n\n React.useEffect(() => {\n //rerender();\n }, [record.getValue(column.key)])\n\n const renderLink = (props: ILinkProps, formattedValue: string): JSX.Element => {\n switch(column.dataType) {\n case DataType.LOOKUP_OWNER:\n case DataType.LOOKUP_SIMPLE:\n case DataType.LOOKUP_CUSTOMER: {\n if(!grid.isNavigationEnabled) {\n return renderText();\n }\n }\n }\n return (\n <Link {...props} className={styles.link} title={formattedValue}>\n {formattedValue}\n </Link>\n );\n };\n const renderText = (): JSX.Element => {\n if (column.isPrimary && grid.isNavigationEnabled) {\n return renderLink({\n onClick: () => grid.openDatasetItem(record.getNamedReference())\n }, formattedValue);\n }\n return <Text className={`${styles.text} talxis-cell-text`} title={formattedValue}>{formattedValue}</Text>\n }\n const downloadFile = () => {\n const storage = new FileAttribute(grid.pcfContext.webAPI);\n const namedReference = record.getNamedReference();\n storage.downloadFileFromAttribute({\n //@ts-ignore - PowerApps do not follow the typings\n entityName: namedReference.etn ?? namedReference.entityName,\n recordId: record.getRecordId(),\n fileAttribute: column.key,\n }, true)\n }\n\n switch (column.dataType) {\n case DataType.SINGLE_LINE_EMAIL: {\n return renderLink({ href: `mailto:${formattedValue}` }, formattedValue);\n }\n case DataType.SINGLE_LINE_PHONE: {\n return renderLink({ href: `tel:${formattedValue}` }, formattedValue);\n }\n case DataType.SINGLE_LINE_URL: {\n return renderLink({\n href: formattedValue,\n target: '_blank',\n rel: 'noopener noreferrer'\n }, formattedValue);\n }\n case DataType.LOOKUP_SIMPLE:\n case DataType.LOOKUP_OWNER:\n case DataType.LOOKUP_CUSTOMER: {\n return renderLink({\n onClick: () => grid.openDatasetItem(record.getValue(column.key) as any)\n }, formattedValue);\n }\n case DataType.FILE: {\n if (!formattedValue) {\n return <></>\n }\n return (\n <div className={styles.fileWrapper}>\n <Icon iconName='Attach' />\n {\n renderLink({\n onClick: downloadFile\n }, grid.labels.download())\n }\n </div>\n )\n }\n case DataType.IMAGE: {\n if (!formattedValue) {\n return <></>\n }\n return (\n <div className={styles.fileWrapper}>\n <Image className={styles.image} src={`data:image/png;base64,${formattedValue}`} />\n {\n renderLink({\n onClick: downloadFile\n }, 'Download')\n }\n </div>\n )\n }\n case DataType.OPTIONSET:\n case DataType.MULTI_SELECT_OPTIONSET:\n case DataType.TWO_OPTIONS: {\n if(grid.enableOptionSetColors) {\n return <ReadOnlyOptionSet\n column={column}\n record={record}\n defaultRender={renderText} />\n }\n return renderText();\n }\n default: {\n if(column.key === '__checkbox') {\n return <Checkbox\n checked={props.node.isSelected()}\n onChange={(e, checked) => {\n e?.stopPropagation()\n selection.toggle(record, checked!)\n }} />\n }\n if(column.key === RIBBON_COLUMN_KEY) {\n return <Commands record={record} />\n }\n return renderText()\n }\n\n }\n}"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReadOnlyCell.js","sources":["../../../../../../../src/components/Grid/core/components/Cell/ReadOnlyCell/ReadOnlyCell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ILinkProps } from '@fluentui/react';\nimport { Link } from '@fluentui/react';\nimport { Text } from '@fluentui/react';\nimport { getReadOnlyCellStyles } from './styles';\nimport { Commands } from '../Commands/Commands';\nimport { Checkbox, Icon, TooltipHost, useTheme, Image } from '@fluentui/react';\nimport { FileAttribute } from '@talxis/client-libraries';\nimport { ReadOnlyOptionSet } from './ReadOnlyOptionSet/ReadOnlyOptionSet';\nimport { IGridColumn } from '../../../interfaces/IGridColumn';\nimport { DataType } from '../../../enums/DataType';\nimport { useColumnValidationController } from '../../../../validation/controllers/useRecordValidationController';\nimport { useGridInstance } from '../../../hooks/useGridInstance';\nimport { useSelectionController } from '../../../../selection/controllers/useSelectionController';\nimport { IEntityRecord } from '../../../../interfaces';\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { RIBBON_COLUMN_KEY } from '../../../../constants';\nimport { useRerender } from '../../../hooks/useRerender';\n\ninterface ICellProps extends ICellRendererParams {\n baseColumn: IGridColumn;\n data: IEntityRecord;\n [key: string]: any;\n}\n\nexport const ReadOnlyCell = (props: ICellProps) => {\n const grid = useGridInstance();\n const column = props.baseColumn;\n const record = props.data;\n const theme = useTheme();\n const styles = getReadOnlyCellStyles(theme);\n const tooltipId = React.useMemo(() => Math.random().toString(), []);\n\n const [isValid, errorMessage] = useColumnValidationController({\n column: column,\n record: record,\n })\n\n return (\n <TooltipHost\n id={tooltipId}\n content={!isValid && !grid.loading ? errorMessage : undefined}>\n <div className={styles.root} data-is-valid={isValid}>\n <div className={styles.cellContent}>\n <InternalReadOnlyCell {...props} />\n </div>\n {!isValid && <Icon styles={{\n root: {\n color: theme.semanticColors.errorIcon\n }\n }} iconName='Error' />}\n </div>\n </TooltipHost>\n )\n};\n\nconst InternalReadOnlyCell = (props: ICellProps) => {\n const grid = useGridInstance();\n const column = props.baseColumn;\n const theme = useTheme();\n const styles = getReadOnlyCellStyles(theme);\n const selection = useSelectionController();\n const record: IEntityRecord = (() => {\n //this is so we can load the updated record values from state\n const updatedRecord = grid.recordUpdateService.record(props.data.getRecordId()).get() as any;\n return updatedRecord ?? props.data;\n })();\n const formattedValue = record.getFormattedValue(column.key);\n const originalSetValue = record.setValue\n\n React.useEffect(() => {\n record.setValue = (columnName, value) => {\n originalSetValue(columnName, value);\n grid.pcfContext.factory.requestRender();\n //so changes propagate when changing values\n //we cannot guarantee a rerender from above because of performance optimizations\n const node = props.api.getRowNode(record.getRecordId());\n if (!node) {\n return;\n }\n props.api.refreshCells({\n rowNodes: [node],\n force: true\n })\n }\n }, []);\n\n const renderLink = (props: ILinkProps, formattedValue: string): JSX.Element => {\n switch (column.dataType) {\n case DataType.LOOKUP_OWNER:\n case DataType.LOOKUP_SIMPLE:\n case DataType.LOOKUP_CUSTOMER: {\n if (!grid.isNavigationEnabled) {\n return renderText();\n }\n }\n }\n return (\n <Link {...props} className={styles.link} title={formattedValue}>\n {formattedValue}\n </Link>\n );\n };\n const renderText = (): JSX.Element => {\n if (column.isPrimary && grid.isNavigationEnabled) {\n return renderLink({\n onClick: () => grid.openDatasetItem(record.getNamedReference())\n }, formattedValue);\n }\n return <Text className={`${styles.text} talxis-cell-text`} title={formattedValue}>{formattedValue}</Text>\n }\n const downloadFile = () => {\n const storage = new FileAttribute(grid.pcfContext.webAPI);\n const namedReference = record.getNamedReference();\n storage.downloadFileFromAttribute({\n //@ts-ignore - PowerApps do not follow the typings\n entityName: namedReference.etn ?? namedReference.entityName,\n recordId: record.getRecordId(),\n fileAttribute: column.key,\n }, true)\n }\n\n switch (column.dataType) {\n case DataType.SINGLE_LINE_EMAIL: {\n return renderLink({ href: `mailto:${formattedValue}` }, formattedValue);\n }\n case DataType.SINGLE_LINE_PHONE: {\n return renderLink({ href: `tel:${formattedValue}` }, formattedValue);\n }\n case DataType.SINGLE_LINE_URL: {\n return renderLink({\n href: formattedValue,\n target: '_blank',\n rel: 'noopener noreferrer'\n }, formattedValue);\n }\n case DataType.LOOKUP_SIMPLE:\n case DataType.LOOKUP_OWNER:\n case DataType.LOOKUP_CUSTOMER: {\n return renderLink({\n onClick: () => grid.openDatasetItem(record.getValue(column.key) as any)\n }, formattedValue);\n }\n case DataType.FILE: {\n if (!formattedValue) {\n return <></>\n }\n return (\n <div className={styles.fileWrapper}>\n <Icon iconName='Attach' />\n {\n renderLink({\n onClick: downloadFile\n }, grid.labels.download())\n }\n </div>\n )\n }\n case DataType.IMAGE: {\n if (!formattedValue) {\n return <></>\n }\n return (\n <div className={styles.fileWrapper}>\n <Image className={styles.image} src={`data:image/png;base64,${formattedValue}`} />\n {\n renderLink({\n onClick: downloadFile\n }, 'Download')\n }\n </div>\n )\n }\n case DataType.OPTIONSET:\n case DataType.MULTI_SELECT_OPTIONSET:\n case DataType.TWO_OPTIONS: {\n if (grid.enableOptionSetColors) {\n return <ReadOnlyOptionSet\n column={column}\n record={record}\n defaultRender={renderText} />\n }\n return renderText();\n }\n default: {\n if (column.key === '__checkbox') {\n return <Checkbox\n checked={props.node.isSelected()}\n onChange={(e, checked) => {\n e?.stopPropagation()\n selection.toggle(record, checked!)\n }} />\n }\n if (column.key === RIBBON_COLUMN_KEY) {\n return <Commands record={record} />\n }\n return renderText()\n }\n\n }\n}"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -33,9 +33,14 @@ class Component extends GridDependency {
|
|
|
33
33
|
case DataType.LOOKUP_CUSTOMER: {
|
|
34
34
|
const columnMetadata = await this._grid.metadata.get(column);
|
|
35
35
|
const targets = columnMetadata.Attributes.get(column.attributeName).attributeDescriptor.Targets ?? [];
|
|
36
|
-
|
|
36
|
+
//@ts-ignore - typings
|
|
37
|
+
if (column.dataType === DataType.LOOKUP_OWNER && window.TALXIS.Portal) {
|
|
37
38
|
targets.push('systemuser', 'team');
|
|
38
39
|
}
|
|
40
|
+
let displayName = "";
|
|
41
|
+
if (targets.length === 1) {
|
|
42
|
+
displayName = (await this._pcfContext.utils.getEntityMetadata(targets[0])).DisplayName;
|
|
43
|
+
}
|
|
39
44
|
const result = {
|
|
40
45
|
context: this._pcfContext,
|
|
41
46
|
parameters: {
|
|
@@ -61,7 +66,7 @@ class Component extends GridDependency {
|
|
|
61
66
|
raw: await this._debouncedGetLookupValue(targets, value),
|
|
62
67
|
attributes: {
|
|
63
68
|
Targets: targets,
|
|
64
|
-
DisplayName:
|
|
69
|
+
DisplayName: displayName
|
|
65
70
|
},
|
|
66
71
|
error: !isValid,
|
|
67
72
|
errorMessage: validationErrorMessage,
|