@talxis/base-controls 1.2410.6 → 1.2411.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/DatasetControl/DatasetControl.js +5 -3
- package/dist/components/DatasetControl/DatasetControl.js.map +1 -1
- package/dist/components/Grid/Grid.js.map +1 -1
- package/dist/components/Grid/core/components/AgGrid/AgGrid.d.ts +2 -0
- package/dist/components/Grid/core/components/AgGrid/AgGrid.js +141 -27
- package/dist/components/Grid/core/components/AgGrid/AgGrid.js.map +1 -1
- package/dist/components/Grid/core/components/AgGrid/components/LoadingOverlay/LoadingOverlay.js +3 -4
- package/dist/components/Grid/core/components/AgGrid/components/LoadingOverlay/LoadingOverlay.js.map +1 -1
- package/dist/components/Grid/core/components/AgGrid/model/AgGrid.js +19 -7
- package/dist/components/Grid/core/components/AgGrid/model/AgGrid.js.map +1 -1
- package/dist/components/Grid/core/components/Cell/EditableCell/EditableCell.d.ts +3 -3
- package/dist/components/Grid/core/components/Cell/EditableCell/EditableCell.js +32 -96
- package/dist/components/Grid/core/components/Cell/EditableCell/EditableCell.js.map +1 -1
- package/dist/components/Grid/core/components/Cell/ReadOnlyCell/Notifications/Notifications.js +23 -22
- package/dist/components/Grid/core/components/Cell/ReadOnlyCell/Notifications/Notifications.js.map +1 -1
- package/dist/components/Grid/core/components/Cell/ReadOnlyCell/ReadOnlyCell.js +41 -36
- package/dist/components/Grid/core/components/Cell/ReadOnlyCell/ReadOnlyCell.js.map +1 -1
- package/dist/components/Grid/core/components/Cell/ReadOnlyCell/styles.d.ts +5 -0
- package/dist/components/Grid/core/components/Cell/ReadOnlyCell/styles.js +21 -3
- package/dist/components/Grid/core/components/Cell/ReadOnlyCell/styles.js.map +1 -1
- package/dist/components/Grid/core/components/Component/Component.d.ts +2 -2
- package/dist/components/Grid/core/components/Component/Component.js.map +1 -1
- package/dist/components/Grid/core/components/Component/model/Component.d.ts +1 -0
- package/dist/components/Grid/core/components/Component/model/Component.js +57 -20
- package/dist/components/Grid/core/components/Component/model/Component.js.map +1 -1
- package/dist/components/Grid/core/components/Save/Save.js +33 -20
- package/dist/components/Grid/core/components/Save/Save.js.map +1 -1
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/ChangeEditor.d.ts +5 -1
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/ChangeEditor.js +46 -15
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/ChangeEditor.js.map +1 -1
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/ChangeGrid.d.ts +10 -0
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/ChangeGrid.js +187 -0
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/ChangeGrid.js.map +1 -0
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/styles.d.ts +39 -0
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/styles.js +45 -0
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/styles.js.map +1 -0
- package/dist/components/Grid/core/components/Save/styles.d.ts +2 -4
- package/dist/components/Grid/core/components/Save/styles.js +2 -4
- package/dist/components/Grid/core/components/Save/styles.js.map +1 -1
- package/dist/components/Grid/core/controllers/useGridController.js +2 -2
- package/dist/components/Grid/core/controllers/useGridController.js.map +1 -1
- package/dist/components/Grid/core/model/Grid.d.ts +1 -2
- package/dist/components/Grid/core/model/Grid.js +11 -9
- package/dist/components/Grid/core/model/Grid.js.map +1 -1
- package/dist/components/Grid/core/services/KeyListener.d.ts +2 -0
- package/dist/components/Grid/core/services/KeyListener.js +6 -0
- package/dist/components/Grid/core/services/KeyListener.js.map +1 -1
- package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionOperator/ConditionOperator.js +0 -2
- package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionOperator/ConditionOperator.js.map +1 -1
- package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValue.js +45 -1
- package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/ConditionValue.js.map +1 -1
- package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/model/ConditionComponentValue.js +4 -1
- package/dist/components/Grid/filtering/components/FilterCallout/components/ConditionValue/model/ConditionComponentValue.js.map +1 -1
- package/dist/components/Grid/filtering/model/Condition.js +19 -4
- package/dist/components/Grid/filtering/model/Condition.js.map +1 -1
- package/dist/components/Grid/interfaces.d.ts +4 -1
- package/dist/components/Grid/paging/components/Paging/Paging.js +6 -5
- package/dist/components/Grid/paging/components/Paging/Paging.js.map +1 -1
- package/dist/components/Grid/translations.d.ts +36 -0
- package/dist/components/Grid/translations.js +11 -2
- package/dist/components/Grid/translations.js.map +1 -1
- package/dist/components/TextField/TextField.js +14 -5
- package/dist/components/TextField/TextField.js.map +1 -1
- package/dist/hooks/useControl.js +2 -2
- package/dist/hooks/useControl.js.map +1 -1
- package/dist/hooks/useRerender.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/package.json +4 -4
- package/dist/components/DatasetControl/hooks/useRerender.js.map +0 -1
- package/dist/components/Grid/core/components/AgGrid/components/LoadingOverlay/styles.d.ts +0 -44
- package/dist/components/Grid/core/components/AgGrid/components/LoadingOverlay/styles.js +0 -82
- package/dist/components/Grid/core/components/AgGrid/components/LoadingOverlay/styles.js.map +0 -1
- package/dist/components/Grid/core/components/AgGrid/controllers/useAgGridController.d.ts +0 -20
- package/dist/components/Grid/core/components/AgGrid/controllers/useAgGridController.js +0 -173
- package/dist/components/Grid/core/components/AgGrid/controllers/useAgGridController.js.map +0 -1
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/RecordGrids/RecordGrids.d.ts +0 -7
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/RecordGrids/RecordGrids.js +0 -144
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/RecordGrids/RecordGrids.js.map +0 -1
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/RecordGrids/styles.d.ts +0 -48
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/RecordGrids/styles.js +0 -54
- package/dist/components/Grid/core/components/Save/components/ChangeEditor/components/RecordGrids/styles.js.map +0 -1
- package/dist/components/Grid/core/components/Save/hooks/useSave.d.ts +0 -12
- package/dist/components/Grid/core/components/Save/hooks/useSave.js +0 -45
- package/dist/components/Grid/core/components/Save/hooks/useSave.js.map +0 -1
- package/dist/components/Grid/core/constants.d.ts +0 -1
- package/dist/components/Grid/core/constants.js +0 -4
- package/dist/components/Grid/core/constants.js.map +0 -1
- package/dist/components/Grid/core/hooks/useRerender.d.ts +0 -1
- package/dist/components/Grid/core/services/RecordUpdateService/controllers/useRecordUpdateServiceController.d.ts +0 -14
- package/dist/components/Grid/core/services/RecordUpdateService/controllers/useRecordUpdateServiceController.js +0 -25
- package/dist/components/Grid/core/services/RecordUpdateService/controllers/useRecordUpdateServiceController.js.map +0 -1
- package/dist/components/Grid/core/services/RecordUpdateService/model/RecordUpdateService.d.ts +0 -30
- package/dist/components/Grid/core/services/RecordUpdateService/model/RecordUpdateService.js +0 -186
- package/dist/components/Grid/core/services/RecordUpdateService/model/RecordUpdateService.js.map +0 -1
- package/dist/components/Grid/validation/controllers/useRecordValidationController.d.ts +0 -8
- package/dist/components/Grid/validation/controllers/useRecordValidationController.js +0 -25
- package/dist/components/Grid/validation/controllers/useRecordValidationController.js.map +0 -1
- package/dist/components/Grid/validation/model/ColumnValidation.d.ts +0 -11
- package/dist/components/Grid/validation/model/ColumnValidation.js +0 -90
- package/dist/components/Grid/validation/model/ColumnValidation.js.map +0 -1
- /package/dist/{components/DatasetControl/hooks → hooks}/useRerender.d.ts +0 -0
- /package/dist/{components/DatasetControl/hooks → hooks}/useRerender.js +0 -0
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { useRef, useMemo, useState, useEffect } from 'react';
|
|
2
|
-
import { useGridController } from '../../../controllers/useGridController.js';
|
|
3
|
-
import { useGridInstance } from '../../../hooks/useGridInstance.js';
|
|
4
|
-
import { EditableCell } from '../../Cell/EditableCell/EditableCell.js';
|
|
5
|
-
import { ReadOnlyCell } from '../../Cell/ReadOnlyCell/ReadOnlyCell.js';
|
|
6
|
-
import { ColumnHeader } from '../../ColumnHeader/ColumnHeader.js';
|
|
7
|
-
import { GlobalCheckBox } from '../../ColumnHeader/components/GlobalCheckbox/GlobalCheckbox.js';
|
|
8
|
-
import { AgGrid } from '../model/AgGrid.js';
|
|
9
|
-
import { ModuleRegistry } from '@ag-grid-community/core';
|
|
10
|
-
import { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';
|
|
11
|
-
import { useDebounce } from 'use-debounce';
|
|
12
|
-
import '@ag-grid-community/styles/ag-grid.css';
|
|
13
|
-
import '@ag-grid-community/styles/ag-theme-balham.css';
|
|
14
|
-
import { usePagingController } from '../../../../paging/controllers/usePagingController.js';
|
|
15
|
-
import { useStateValues } from '@talxis/react-components';
|
|
16
|
-
import { CHECKBOX_COLUMN_KEY } from '../../../../constants.js';
|
|
17
|
-
|
|
18
|
-
ModuleRegistry.registerModules([ClientSideRowModelModule]);
|
|
19
|
-
const useAgGridController = (gridApiRef) => {
|
|
20
|
-
const grid = useGridInstance();
|
|
21
|
-
const pagingController = usePagingController();
|
|
22
|
-
const agGridReadyRef = useRef(false);
|
|
23
|
-
const agGrid = useMemo(() => new AgGrid(grid, gridApiRef), []);
|
|
24
|
-
const { columns } = useGridController();
|
|
25
|
-
const [agColumns, setAgColumns] = useState([]);
|
|
26
|
-
const [stateValuesRef, getNewStateValues, setDefaultStateValues] = useStateValues(grid.state);
|
|
27
|
-
//this is to prevent AgGrid from throwing errors in some rerender edge cases - https://github.com/ag-grid/ag-grid/issues/6013
|
|
28
|
-
const [agRecords] = useDebounce(grid.records, 0);
|
|
29
|
-
setTimeout(() => {
|
|
30
|
-
//set timeout to prevent ag grid from refreshing when another refresh is in progress
|
|
31
|
-
//debounce
|
|
32
|
-
gridApiRef.current?.refreshCells({
|
|
33
|
-
rowNodes: gridApiRef.current?.getRenderedNodes(),
|
|
34
|
-
force: true
|
|
35
|
-
});
|
|
36
|
-
}, 0);
|
|
37
|
-
useEffect(() => {
|
|
38
|
-
if (!agGridReadyRef.current) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
agGrid.selectRows();
|
|
42
|
-
gridApiRef.current?.refreshHeader();
|
|
43
|
-
}, [grid.dataset.getSelectedRecordIds().join('')]);
|
|
44
|
-
useEffect(() => {
|
|
45
|
-
if (columns.length === 0) {
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
const _agColumns = agGrid.columns;
|
|
49
|
-
for (const agColumn of _agColumns) {
|
|
50
|
-
agColumn.cellRenderer = ReadOnlyCell;
|
|
51
|
-
agColumn.cellEditor = EditableCell;
|
|
52
|
-
agColumn.headerComponent = ColumnHeader;
|
|
53
|
-
if (agColumn.field === CHECKBOX_COLUMN_KEY) {
|
|
54
|
-
agColumn.lockPosition = 'left';
|
|
55
|
-
agColumn.headerComponent = GlobalCheckBox;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
setAgColumns(_agColumns);
|
|
59
|
-
}, [columns]);
|
|
60
|
-
//this might be very Portal centric
|
|
61
|
-
useEffect(() => {
|
|
62
|
-
if (!gridApiRef.current) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
if (grid.loading) {
|
|
66
|
-
gridApiRef.current.showLoadingOverlay();
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
gridApiRef.current.hideOverlay();
|
|
70
|
-
setTimeout(() => {
|
|
71
|
-
if (grid.records.length === 0) {
|
|
72
|
-
gridApiRef.current?.showNoRowsOverlay();
|
|
73
|
-
}
|
|
74
|
-
}, 0);
|
|
75
|
-
}, [grid.loading]);
|
|
76
|
-
useEffect(() => {
|
|
77
|
-
if (!gridApiRef.current) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
gridApiRef.current.ensureIndexVisible(0);
|
|
81
|
-
}, [pagingController.pageNumber]);
|
|
82
|
-
useEffect(() => {
|
|
83
|
-
const onBeforeUnload = (ev) => {
|
|
84
|
-
if (grid.recordUpdateService.isDirty) {
|
|
85
|
-
ev.preventDefault();
|
|
86
|
-
return 'Unsaved changes!';
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
window.addEventListener('beforeunload', onBeforeUnload);
|
|
90
|
-
return () => {
|
|
91
|
-
window.removeEventListener('beforeunload', onBeforeUnload);
|
|
92
|
-
if (!gridApiRef.current) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
stateValuesRef.current.__updatedRecords = grid.recordUpdateService.updatedRecords;
|
|
96
|
-
grid.pcfContext.mode.setControlState(getNewStateValues());
|
|
97
|
-
};
|
|
98
|
-
}, []);
|
|
99
|
-
//this can be replaced with native functionality if we decide to use ag grid enterprise
|
|
100
|
-
useEffect(() => {
|
|
101
|
-
const onKeyDownHandler = async (event) => {
|
|
102
|
-
// if control key(windows) or command key(iOS) + S key is clicked
|
|
103
|
-
if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'c') {
|
|
104
|
-
const cell = gridApiRef.current?.getFocusedCell();
|
|
105
|
-
if (!cell) {
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
const row = gridApiRef.current?.getDisplayedRowAtIndex(cell.rowIndex);
|
|
109
|
-
const formattedValue = gridApiRef.current?.getCellValue({
|
|
110
|
-
rowNode: row,
|
|
111
|
-
colKey: cell.column.getColId(),
|
|
112
|
-
useFormatter: true
|
|
113
|
-
});
|
|
114
|
-
navigator.clipboard.writeText(formattedValue ?? "");
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
window.addEventListener('keydown', onKeyDownHandler);
|
|
118
|
-
return () => {
|
|
119
|
-
window.removeEventListener('keydown', onKeyDownHandler);
|
|
120
|
-
};
|
|
121
|
-
}, []);
|
|
122
|
-
//TODO: find a better way to achieve this
|
|
123
|
-
useEffect(() => {
|
|
124
|
-
const globalClickHandler = (e) => {
|
|
125
|
-
const hasAncestorWithClass = (element, className) => {
|
|
126
|
-
let parent = element;
|
|
127
|
-
while (!parent.classList.contains('ag-theme-balham')) {
|
|
128
|
-
if (parent.classList.contains(className)) {
|
|
129
|
-
return true;
|
|
130
|
-
}
|
|
131
|
-
if (parent.tagName === 'HTML') {
|
|
132
|
-
return false;
|
|
133
|
-
}
|
|
134
|
-
parent = parent.parentElement;
|
|
135
|
-
if (!parent) {
|
|
136
|
-
return true;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return false;
|
|
140
|
-
};
|
|
141
|
-
try {
|
|
142
|
-
if (!hasAncestorWithClass(e.target, 'ag-cell')) {
|
|
143
|
-
gridApiRef.current?.stopEditing();
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
catch (err) {
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
document.addEventListener('click', globalClickHandler);
|
|
150
|
-
return () => {
|
|
151
|
-
document.removeEventListener('click', globalClickHandler);
|
|
152
|
-
};
|
|
153
|
-
}, []);
|
|
154
|
-
const onGridReady = () => {
|
|
155
|
-
agGridReadyRef.current = true;
|
|
156
|
-
setDefaultStateValues({
|
|
157
|
-
...gridApiRef.current.getState(),
|
|
158
|
-
initialPageSize: undefined,
|
|
159
|
-
__updatedRecords: []
|
|
160
|
-
});
|
|
161
|
-
agGrid.selectRows();
|
|
162
|
-
};
|
|
163
|
-
return {
|
|
164
|
-
agColumns: agColumns,
|
|
165
|
-
records: agRecords,
|
|
166
|
-
stateRef: stateValuesRef,
|
|
167
|
-
getTotalColumnsWidth: () => agGrid.getTotalColumnsWidth(),
|
|
168
|
-
onGridReady: onGridReady
|
|
169
|
-
};
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
export { useAgGridController };
|
|
173
|
-
//# sourceMappingURL=useAgGridController.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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 { 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\";\nimport { IRecord } from \"@talxis/client-libraries\";\nimport { CHECKBOX_COLUMN_KEY } from \"../../../../constants\";\nModuleRegistry.registerModules([ClientSideRowModelModule]);\n\ninterface IAgGridController {\n agColumns: ColDef[],\n records: IRecord[],\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 setTimeout(() => {\n //set timeout to prevent ag grid from refreshing when another refresh is in progress\n //debounce\n gridApiRef.current?.refreshCells({\n rowNodes: gridApiRef.current?.getRenderedNodes(),\n force: true\n });\n }, 0);\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_COLUMN_KEY) {\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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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { IUpdatedRecord } from '../../../../../../services/RecordUpdateService/model/RecordUpdateService';
|
|
3
|
-
interface IRecordGrids {
|
|
4
|
-
record: IUpdatedRecord;
|
|
5
|
-
}
|
|
6
|
-
export declare const RecordGrids: (props: IRecordGrids) => JSX.Element;
|
|
7
|
-
export {};
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { Grid } from '../../../../../../../Grid.js';
|
|
3
|
-
import { useGridInstance } from '../../../../../../hooks/useGridInstance.js';
|
|
4
|
-
import { useTheme, Text, Icon } from '@fluentui/react';
|
|
5
|
-
import { getRecordGridStyles } from './styles.js';
|
|
6
|
-
|
|
7
|
-
const RecordGrids = (props) => {
|
|
8
|
-
const grid = useGridInstance();
|
|
9
|
-
const record = { ...props.record };
|
|
10
|
-
const styles = getRecordGridStyles(useTheme());
|
|
11
|
-
const sharedProps = {
|
|
12
|
-
context: {
|
|
13
|
-
...grid.pcfContext,
|
|
14
|
-
mode: {
|
|
15
|
-
...grid.pcfContext.mode,
|
|
16
|
-
//needed so the nested grids to do not interfere with the state of parent grid
|
|
17
|
-
setControlState: (state) => false
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
state: {},
|
|
21
|
-
parameters: {
|
|
22
|
-
EnableFiltering: {
|
|
23
|
-
raw: false
|
|
24
|
-
},
|
|
25
|
-
EnablePagination: {
|
|
26
|
-
raw: false
|
|
27
|
-
},
|
|
28
|
-
EnableSorting: {
|
|
29
|
-
raw: false
|
|
30
|
-
},
|
|
31
|
-
EnableNavigation: {
|
|
32
|
-
raw: false
|
|
33
|
-
},
|
|
34
|
-
SelectableRows: {
|
|
35
|
-
type: 'static',
|
|
36
|
-
raw: 'none'
|
|
37
|
-
},
|
|
38
|
-
EnableOptionSetColors: {
|
|
39
|
-
raw: grid.parameters.EnableOptionSetColors?.raw ?? false
|
|
40
|
-
},
|
|
41
|
-
Grid: {
|
|
42
|
-
...grid.dataset,
|
|
43
|
-
sorting: [],
|
|
44
|
-
linking: grid.dataset.linking,
|
|
45
|
-
columns: [...record.columns.values()],
|
|
46
|
-
sortedRecordIds: [record.getRecordId()],
|
|
47
|
-
getTargetEntityType: () => grid.dataset.getTargetEntityType(),
|
|
48
|
-
filtering: {
|
|
49
|
-
...grid.dataset.filtering,
|
|
50
|
-
getFilter: () => {
|
|
51
|
-
return {
|
|
52
|
-
conditions: [],
|
|
53
|
-
filterOperator: 0,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
getSelectedRecordIds: () => [],
|
|
58
|
-
paging: {
|
|
59
|
-
...grid.dataset.paging,
|
|
60
|
-
pageSize: 1
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
const invalidColumns = (() => {
|
|
66
|
-
const columns = [];
|
|
67
|
-
for (const column of record.columns.values()) {
|
|
68
|
-
if (!record.isValid(column.name)) {
|
|
69
|
-
columns.push(column);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return columns;
|
|
73
|
-
})();
|
|
74
|
-
const hasInvalidColumn = invalidColumns.length > 0;
|
|
75
|
-
const getOriginalRecord = (record) => {
|
|
76
|
-
//@ts-ignore
|
|
77
|
-
return {
|
|
78
|
-
getFormattedValue: (columnKey) => record.getOriginalFormattedValue(columnKey),
|
|
79
|
-
getRecordId: () => record.getRecordId(),
|
|
80
|
-
getNamedReference: () => record.getNamedReference(),
|
|
81
|
-
getValue: (columnKey) => record.getOriginalValue(columnKey),
|
|
82
|
-
save: async () => {
|
|
83
|
-
await record.save();
|
|
84
|
-
grid.pcfContext.factory.requestRender();
|
|
85
|
-
},
|
|
86
|
-
//only comes when clear is called to return to the original value
|
|
87
|
-
setValue: (columnKey, value) => {
|
|
88
|
-
record.clear();
|
|
89
|
-
//TODO: the internal record id map wont get updated
|
|
90
|
-
//with the references to updated records until they appear
|
|
91
|
-
//in the grid => you cant see the changes
|
|
92
|
-
grid.pcfContext.factory.requestRender();
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
};
|
|
96
|
-
const getUpdatedRecord = (record) => {
|
|
97
|
-
//@ts-ignore
|
|
98
|
-
return {
|
|
99
|
-
getFormattedValue: (columnKey) => record.getFormattedValue(columnKey),
|
|
100
|
-
getRecordId: () => record.getRecordId(),
|
|
101
|
-
getNamedReference: () => record.getNamedReference(),
|
|
102
|
-
getValue: (columnKey) => record.getValue(columnKey),
|
|
103
|
-
save: () => { throw new Error('Should not be called!'); },
|
|
104
|
-
setValue: (columnKey, value) => {
|
|
105
|
-
record.setValue(columnKey, value);
|
|
106
|
-
grid.pcfContext.factory.requestRender();
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
};
|
|
110
|
-
return (jsxs("div", { className: styles.root, children: [jsxs("div", { className: styles.readOnlyGrid, children: [jsx("div", { className: styles.gridTitleWrapper, children: jsx(Text, { title: record.getOriginalFormattedPrimaryNameValue(), variant: 'large', children: record.getOriginalFormattedPrimaryNameValue() }) }), jsx(Grid, { ...sharedProps, parameters: {
|
|
111
|
-
...sharedProps.parameters,
|
|
112
|
-
ChangeEditorMode: {
|
|
113
|
-
raw: "read",
|
|
114
|
-
error: hasInvalidColumn,
|
|
115
|
-
},
|
|
116
|
-
Grid: {
|
|
117
|
-
...sharedProps.parameters.Grid,
|
|
118
|
-
error: hasInvalidColumn,
|
|
119
|
-
errorMessage: hasInvalidColumn ? grid.labels['saving-validation-error']({
|
|
120
|
-
columnDisplayNames: invalidColumns.map(x => x.displayName).join(', ')
|
|
121
|
-
}) : undefined,
|
|
122
|
-
records: {
|
|
123
|
-
[record.getRecordId()]: getOriginalRecord(record)
|
|
124
|
-
}
|
|
125
|
-
},
|
|
126
|
-
} })] }), jsx(Icon, { iconName: "DoubleChevronDown8" }), jsx("div", { className: styles.editableGrid, children: jsx(Grid, { ...sharedProps, parameters: {
|
|
127
|
-
...sharedProps.parameters,
|
|
128
|
-
ChangeEditorMode: {
|
|
129
|
-
raw: "edit"
|
|
130
|
-
},
|
|
131
|
-
EnableEditing: {
|
|
132
|
-
raw: true
|
|
133
|
-
},
|
|
134
|
-
Grid: {
|
|
135
|
-
...sharedProps.parameters.Grid,
|
|
136
|
-
records: {
|
|
137
|
-
[record.getRecordId()]: getUpdatedRecord(record)
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
} }) })] }));
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
export { RecordGrids };
|
|
144
|
-
//# sourceMappingURL=RecordGrids.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RecordGrids.js","sources":["../../../../../../../../../../src/components/Grid/core/components/Save/components/ChangeEditor/components/RecordGrids/RecordGrids.tsx"],"sourcesContent":["import React from 'react';\nimport { Grid } from '../../../../../../../Grid';\nimport { useGridInstance } from '../../../../../../hooks/useGridInstance';\nimport { IUpdatedRecord } from '../../../../../../services/RecordUpdateService/model/RecordUpdateService';\nimport { Text } from '@fluentui/react';\nimport { IGrid, IGridParameters } from '../../../../../../../interfaces';\nimport { Icon } from '@fluentui/react';\nimport { getRecordGridStyles } from './styles';\nimport { useTheme } from '@fluentui/react';\nimport { IColumn, IRecord } from '@talxis/client-libraries';\n\ninterface IRecordGrids {\n record: IUpdatedRecord;\n}\nexport const RecordGrids = (props: IRecordGrids) => {\n const grid = useGridInstance();\n const record = { ...props.record };\n const styles = getRecordGridStyles(useTheme());\n const sharedProps: IGrid = {\n context: {\n ...grid.pcfContext,\n mode: {\n ...grid.pcfContext.mode,\n //needed so the nested grids to do not interfere with the state of parent grid\n setControlState: (state: ComponentFramework.Dictionary) => false\n }\n },\n state: {},\n parameters: {\n EnableFiltering: {\n raw: false\n },\n EnablePagination: {\n raw: false\n },\n EnableSorting: {\n raw: false\n },\n EnableNavigation: {\n raw: false\n },\n SelectableRows: {\n type: 'static',\n raw: 'none'\n },\n EnableOptionSetColors: {\n raw: grid.parameters.EnableOptionSetColors?.raw ?? false\n },\n Grid: {\n ...grid.dataset,\n sorting: [],\n linking: grid.dataset.linking,\n columns: [...record.columns.values()],\n sortedRecordIds: [record.getRecordId()],\n getTargetEntityType: () => grid.dataset.getTargetEntityType(),\n filtering: {\n ...grid.dataset.filtering,\n getFilter: () => {\n return {\n conditions: [],\n filterOperator: 0,\n }\n }\n },\n getSelectedRecordIds: () => [],\n paging: {\n ...grid.dataset.paging,\n pageSize: 1\n }\n }\n } as IGridParameters\n }\n\n const invalidColumns = (() => {\n const columns: IColumn[] = [];\n for(const column of record.columns.values()) {\n if(!record.isValid(column.name)) {\n columns.push(column);\n }\n }\n return columns;\n })();\n\n const hasInvalidColumn = invalidColumns.length > 0;\n\n const getOriginalRecord = (record: IUpdatedRecord): IRecord => {\n //@ts-ignore\n return {\n getFormattedValue: (columnKey: string) => record.getOriginalFormattedValue(columnKey),\n getRecordId: () => record.getRecordId(),\n getNamedReference: () => record.getNamedReference(),\n getValue: (columnKey: string) => record.getOriginalValue(columnKey),\n save: async () => {\n const result = await record.save();\n grid.pcfContext.factory.requestRender();\n },\n //only comes when clear is called to return to the original value\n setValue: (columnKey: string, value: any) => {\n record.clear();\n //TODO: the internal record id map wont get updated\n //with the references to updated records until they appear \n //in the grid => you cant see the changes \n grid.pcfContext.factory.requestRender();\n }\n }\n }\n const getUpdatedRecord = (record: IUpdatedRecord): IRecord => {\n //@ts-ignore\n return {\n getFormattedValue: (columnKey: string) => record.getFormattedValue(columnKey),\n getRecordId: () => record.getRecordId(),\n getNamedReference: () => record.getNamedReference(),\n getValue: (columnKey: string) => record.getValue(columnKey),\n save: () => { throw new Error('Should not be called!') },\n setValue: (columnKey: string, value: any) => {\n record.setValue(columnKey, value)\n grid.pcfContext.factory.requestRender();\n }\n }\n }\n\n return (\n <div className={styles.root}>\n <div className={styles.readOnlyGrid}>\n <div className={styles.gridTitleWrapper}>\n <Text title={record.getOriginalFormattedPrimaryNameValue()} variant='large'>{record.getOriginalFormattedPrimaryNameValue()}</Text>\n </div>\n <Grid\n {...sharedProps}\n parameters={{\n ...sharedProps.parameters,\n ChangeEditorMode: {\n raw: \"read\",\n error: hasInvalidColumn,\n },\n Grid: {\n ...sharedProps.parameters.Grid,\n error: hasInvalidColumn,\n errorMessage: hasInvalidColumn ? grid.labels['saving-validation-error']({\n columnDisplayNames: invalidColumns.map( x => x.displayName).join(', ')\n }): undefined,\n records: {\n [record.getRecordId()]: getOriginalRecord(record)\n }\n },\n\n } as IGridParameters} />\n </div>\n <Icon iconName=\"DoubleChevronDown8\" />\n <div className={styles.editableGrid}>\n <Grid\n {...sharedProps}\n parameters={{\n ...sharedProps.parameters,\n ChangeEditorMode: {\n raw: \"edit\"\n },\n EnableEditing: {\n raw: true\n },\n Grid: {\n ...sharedProps.parameters.Grid,\n records: {\n [record.getRecordId()]: getUpdatedRecord(record)\n }\n }\n } as IGridParameters} />\n </div>\n </div>\n )\n}"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { ITheme } from "@fluentui/react";
|
|
2
|
-
export declare const getRecordGridStyles: (theme: ITheme) => import("@fluentui/react").IProcessedStyleSet<{
|
|
3
|
-
root: {
|
|
4
|
-
borderRadius: number;
|
|
5
|
-
padding: number;
|
|
6
|
-
paddingTop: number;
|
|
7
|
-
gap: number;
|
|
8
|
-
display: string;
|
|
9
|
-
flexDirection: string;
|
|
10
|
-
justifyContent: string;
|
|
11
|
-
backgroundColor: string;
|
|
12
|
-
boxShadow: string;
|
|
13
|
-
'>span': {
|
|
14
|
-
fontWeight: number;
|
|
15
|
-
};
|
|
16
|
-
'>i': {
|
|
17
|
-
alignSelf: string;
|
|
18
|
-
fontSize: number;
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
readOnlyGrid: {
|
|
22
|
-
'.ag-theme-balham > div > .ms-MessageBar': {
|
|
23
|
-
minHeight: number;
|
|
24
|
-
height: number;
|
|
25
|
-
'.ms-MessageBar-actionsSingleLine': {
|
|
26
|
-
position: string;
|
|
27
|
-
top: number;
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
gridTitleWrapper: {
|
|
32
|
-
borderBottom: string;
|
|
33
|
-
paddingBottom: number;
|
|
34
|
-
'>span': {
|
|
35
|
-
fontWeight: number;
|
|
36
|
-
fontSize: number;
|
|
37
|
-
overflow: string;
|
|
38
|
-
whiteSpace: string;
|
|
39
|
-
textOverflow: string;
|
|
40
|
-
display: string;
|
|
41
|
-
maxWidth: string;
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
editableGrid: {
|
|
45
|
-
position: string;
|
|
46
|
-
top: number;
|
|
47
|
-
};
|
|
48
|
-
}>;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { mergeStyleSets } from '@fluentui/react';
|
|
2
|
-
|
|
3
|
-
const getRecordGridStyles = (theme) => {
|
|
4
|
-
return mergeStyleSets({
|
|
5
|
-
root: {
|
|
6
|
-
borderRadius: 5,
|
|
7
|
-
padding: 8,
|
|
8
|
-
paddingTop: 10,
|
|
9
|
-
gap: 25,
|
|
10
|
-
display: 'flex',
|
|
11
|
-
flexDirection: 'column',
|
|
12
|
-
justifyContent: 'center',
|
|
13
|
-
backgroundColor: theme.semanticColors.bodyBackground,
|
|
14
|
-
boxShadow: theme.semanticColors.cardShadow,
|
|
15
|
-
'>span': {
|
|
16
|
-
fontWeight: 600
|
|
17
|
-
},
|
|
18
|
-
'>i': {
|
|
19
|
-
alignSelf: 'center',
|
|
20
|
-
fontSize: 22,
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
readOnlyGrid: {
|
|
24
|
-
'.ag-theme-balham > div > .ms-MessageBar': {
|
|
25
|
-
minHeight: 0,
|
|
26
|
-
height: 0,
|
|
27
|
-
'.ms-MessageBar-actionsSingleLine': {
|
|
28
|
-
position: 'relative',
|
|
29
|
-
top: -28
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
gridTitleWrapper: {
|
|
34
|
-
borderBottom: `1px solid ${theme.semanticColors.bodyDivider}`,
|
|
35
|
-
paddingBottom: 10,
|
|
36
|
-
'>span': {
|
|
37
|
-
fontWeight: 600,
|
|
38
|
-
fontSize: 15,
|
|
39
|
-
overflow: 'hidden',
|
|
40
|
-
whiteSpace: 'nowrap',
|
|
41
|
-
textOverflow: 'ellipsis',
|
|
42
|
-
display: 'block',
|
|
43
|
-
maxWidth: 'calc(100% - 130px)'
|
|
44
|
-
},
|
|
45
|
-
},
|
|
46
|
-
editableGrid: {
|
|
47
|
-
position: 'relative',
|
|
48
|
-
top: -5
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
export { getRecordGridStyles };
|
|
54
|
-
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sources":["../../../../../../../../../../src/components/Grid/core/components/Save/components/ChangeEditor/components/RecordGrids/styles.ts"],"sourcesContent":["import { ITheme, mergeStyleSets } from \"@fluentui/react\";\n\nexport const getRecordGridStyles = (theme: ITheme) => {\n return mergeStyleSets({\n root: {\n borderRadius: 5,\n padding: 8,\n paddingTop: 10,\n gap: 25,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n backgroundColor: theme.semanticColors.bodyBackground,\n boxShadow: theme.semanticColors.cardShadow,\n '>span': {\n fontWeight: 600\n },\n '>i': {\n alignSelf: 'center',\n fontSize: 22,\n }\n\n },\n readOnlyGrid: {\n '.ag-theme-balham > div > .ms-MessageBar': {\n minHeight: 0,\n height: 0,\n '.ms-MessageBar-actionsSingleLine': {\n position: 'relative',\n top: -28\n }\n }\n },\n gridTitleWrapper: {\n borderBottom: `1px solid ${theme.semanticColors.bodyDivider}`,\n paddingBottom: 10,\n '>span': {\n fontWeight: 600,\n fontSize: 15,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n display: 'block',\n maxWidth: 'calc(100% - 130px)'\n },\n },\n editableGrid: {\n position: 'relative',\n top: -5\n }\n })\n}"],"names":[],"mappings":";;AAEa,MAAA,mBAAmB,GAAG,CAAC,KAAa,KAAI;AACjD,IAAA,OAAO,cAAc,CAAC;AAClB,QAAA,IAAI,EAAE;AACF,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,GAAG,EAAE,EAAE;AACP,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,cAAc,EAAE,QAAQ;AACxB,YAAA,eAAe,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc;AACpD,YAAA,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU;AAC1C,YAAA,OAAO,EAAE;AACL,gBAAA,UAAU,EAAE,GAAG;AAClB,aAAA;AACD,YAAA,IAAI,EAAE;AACF,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA;AAEJ,SAAA;AACD,QAAA,YAAY,EAAE;AACV,YAAA,yCAAyC,EAAE;AACvC,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,kCAAkC,EAAE;AAChC,oBAAA,QAAQ,EAAE,UAAU;oBACpB,GAAG,EAAE,CAAC,EAAE;AACX,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,gBAAgB,EAAE;AACd,YAAA,YAAY,EAAE,CAAa,UAAA,EAAA,KAAK,CAAC,cAAc,CAAC,WAAW,CAAE,CAAA;AAC7D,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,OAAO,EAAE;AACL,gBAAA,UAAU,EAAE,GAAG;AACf,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,YAAY,EAAE,UAAU;AACxB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,QAAQ,EAAE,oBAAoB;AACjC,aAAA;AACJ,SAAA;AACD,QAAA,YAAY,EAAE;AACV,YAAA,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC,CAAC;AACV,SAAA;AACJ,KAAA,CAAC,CAAA;AACN;;;;"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { useState } from 'react';
|
|
2
|
-
import { useGridInstance } from '../../../hooks/useGridInstance.js';
|
|
3
|
-
import { useRecordUpdateServiceController } from '../../../services/RecordUpdateService/controllers/useRecordUpdateServiceController.js';
|
|
4
|
-
|
|
5
|
-
const useSave = () => {
|
|
6
|
-
const grid = useGridInstance();
|
|
7
|
-
const labels = grid.labels;
|
|
8
|
-
const controller = useRecordUpdateServiceController();
|
|
9
|
-
const [isSaving, setIsSaving] = useState(false);
|
|
10
|
-
const save = async () => {
|
|
11
|
-
setIsSaving(true);
|
|
12
|
-
const result = await controller.saveAll();
|
|
13
|
-
setIsSaving(false);
|
|
14
|
-
return result;
|
|
15
|
-
};
|
|
16
|
-
const getSaveBtnProps = () => {
|
|
17
|
-
if (isSaving) {
|
|
18
|
-
return {
|
|
19
|
-
disabled: true,
|
|
20
|
-
iconName: 'SaveInPropgre',
|
|
21
|
-
text: labels["saving-saving"](),
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
if (controller.isDirty) {
|
|
25
|
-
return {
|
|
26
|
-
disabled: (controller.hasInvalidRecords || grid.props.parameters.ChangeEditorMode?.error) ? true : false,
|
|
27
|
-
iconName: 'Save',
|
|
28
|
-
text: labels["saving-save"]()
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
return {
|
|
32
|
-
disabled: true,
|
|
33
|
-
iconName: 'Save',
|
|
34
|
-
text: labels["saving-save"]()
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
return {
|
|
38
|
-
isSaving: isSaving,
|
|
39
|
-
saveBtnProps: getSaveBtnProps(),
|
|
40
|
-
save: save
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
export { useSave };
|
|
45
|
-
//# sourceMappingURL=useSave.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSave.js","sources":["../../../../../../../src/components/Grid/core/components/Save/hooks/useSave.ts"],"sourcesContent":["import { useState } from \"react\";\nimport { useGridInstance } from \"../../../hooks/useGridInstance\";\nimport { useRecordUpdateServiceController } from \"../../../services/RecordUpdateService/controllers/useRecordUpdateServiceController\";\n\ninterface ISaveBtnProps {\n disabled: boolean,\n text: string,\n iconName: string\n}\n\ninterface ISave {\n isSaving: boolean,\n saveBtnProps: ISaveBtnProps,\n save: () => Promise<boolean>\n}\n\nexport const useSave = (): ISave => {\n const grid = useGridInstance();\n const labels = grid.labels;\n const controller = useRecordUpdateServiceController();\n const [isSaving, setIsSaving] = useState<boolean>(false);\n\n const save = async (): Promise<boolean> => {\n setIsSaving(true);\n const result = await controller.saveAll();\n setIsSaving(false);\n return result;\n }\n\n const getSaveBtnProps = (): ISaveBtnProps => {\n if (isSaving) {\n return {\n disabled: true,\n iconName: 'SaveInPropgre',\n text: labels[\"saving-saving\"](),\n }\n }\n if (controller.isDirty) {\n return {\n disabled: (controller.hasInvalidRecords || grid.props.parameters.ChangeEditorMode?.error) ? true : false,\n iconName: 'Save',\n text: labels[\"saving-save\"]()\n\n }\n }\n return {\n disabled: true,\n iconName: 'Save',\n text: labels[\"saving-save\"]()\n }\n }\n\n return {\n isSaving: isSaving,\n saveBtnProps: getSaveBtnProps(),\n save: save\n }\n\n}"],"names":[],"mappings":";;;;AAgBO,MAAM,OAAO,GAAG,MAAY;AAC/B,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,IAAA,MAAM,UAAU,GAAG,gCAAgC,EAAE,CAAC;IACtD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;AAEzD,IAAA,MAAM,IAAI,GAAG,YAA6B;QACtC,WAAW,CAAC,IAAI,CAAC,CAAC;AAClB,QAAA,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1C,WAAW,CAAC,KAAK,CAAC,CAAC;AACnB,QAAA,OAAO,MAAM,CAAC;AAClB,KAAC,CAAA;IAED,MAAM,eAAe,GAAG,MAAoB;AACxC,QAAA,IAAI,QAAQ,EAAE;YACV,OAAO;AACH,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,QAAQ,EAAE,eAAe;AACzB,gBAAA,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE;aAClC,CAAA;AACJ,SAAA;QACD,IAAI,UAAU,CAAC,OAAO,EAAE;YACpB,OAAO;gBACH,QAAQ,EAAE,CAAC,UAAU,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,EAAE,KAAK,IAAI,IAAI,GAAG,KAAK;AACxG,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE;aAEhC,CAAA;AACJ,SAAA;QACD,OAAO;AACH,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE;SAChC,CAAA;AACL,KAAC,CAAA;IAED,OAAO;AACH,QAAA,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,eAAe,EAAE;AAC/B,QAAA,IAAI,EAAE,IAAI;KACb,CAAA;AAEL;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const ROW_HEIGHT = 42;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../../../src/components/Grid/core/constants.ts"],"sourcesContent":["export const ROW_HEIGHT = 42;"],"names":[],"mappings":"AAAO,MAAM,UAAU,GAAG;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const useRerender: () => [number, (fn?: () => any | Promise<any>) => void];
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { IUpdatedRecord } from "../model/RecordUpdateService";
|
|
2
|
-
interface IRecordUpdateServiceController {
|
|
3
|
-
isDirty: boolean;
|
|
4
|
-
hasInvalidRecords: boolean;
|
|
5
|
-
updatedRecords: IUpdatedRecord[];
|
|
6
|
-
saveAll: () => Promise<boolean>;
|
|
7
|
-
clearAll: () => void;
|
|
8
|
-
record(recordId: string): {
|
|
9
|
-
get: () => IUpdatedRecord | undefined;
|
|
10
|
-
setValue: (columnName: string, value: any) => void;
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
export declare const useRecordUpdateServiceController: () => IRecordUpdateServiceController;
|
|
14
|
-
export {};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { useGridInstance } from '../../../hooks/useGridInstance.js';
|
|
2
|
-
|
|
3
|
-
const useRecordUpdateServiceController = () => {
|
|
4
|
-
const grid = useGridInstance();
|
|
5
|
-
const recordUpdateService = grid.recordUpdateService;
|
|
6
|
-
return {
|
|
7
|
-
isDirty: recordUpdateService.isDirty,
|
|
8
|
-
hasInvalidRecords: recordUpdateService.hasInvalidRecords,
|
|
9
|
-
updatedRecords: [...recordUpdateService.updatedRecords.values()],
|
|
10
|
-
saveAll: () => recordUpdateService.saveAll(),
|
|
11
|
-
clearAll: () => recordUpdateService.clearAll(),
|
|
12
|
-
record: (recordId) => {
|
|
13
|
-
const record = recordUpdateService.record(recordId);
|
|
14
|
-
return {
|
|
15
|
-
get: () => record.get(),
|
|
16
|
-
setValue: (columnName, value) => {
|
|
17
|
-
record.setValue(columnName, value);
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export { useRecordUpdateServiceController };
|
|
25
|
-
//# sourceMappingURL=useRecordUpdateServiceController.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRecordUpdateServiceController.js","sources":["../../../../../../../src/components/Grid/core/services/RecordUpdateService/controllers/useRecordUpdateServiceController.ts"],"sourcesContent":["import { useGridInstance } from \"../../../hooks/useGridInstance\";\nimport { IUpdatedRecord } from \"../model/RecordUpdateService\";\n\ninterface IRecordUpdateServiceController {\n isDirty: boolean,\n hasInvalidRecords: boolean\n updatedRecords: IUpdatedRecord[];\n saveAll: () => Promise<boolean>;\n clearAll: () => void,\n record(recordId: string): {\n get: () => IUpdatedRecord | undefined\n setValue: (columnName: string, value: any) => void\n }\n}\n\nexport const useRecordUpdateServiceController = (): IRecordUpdateServiceController => {\n const grid = useGridInstance();\n const recordUpdateService = grid.recordUpdateService;\n \n return {\n isDirty: recordUpdateService.isDirty,\n hasInvalidRecords: recordUpdateService.hasInvalidRecords,\n updatedRecords: [...recordUpdateService.updatedRecords.values()],\n saveAll: () => recordUpdateService.saveAll(),\n clearAll: () => recordUpdateService.clearAll(),\n record: (recordId: string) => {\n const record = recordUpdateService.record(recordId);\n return {\n get: () => record.get(),\n setValue: (columnName: string, value: any) => {\n record.setValue(columnName, value)\n } \n }\n }\n }\n}"],"names":[],"mappings":";;AAeO,MAAM,gCAAgC,GAAG,MAAqC;AACjF,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,IAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;IAErD,OAAO;QACH,OAAO,EAAE,mBAAmB,CAAC,OAAO;QACpC,iBAAiB,EAAE,mBAAmB,CAAC,iBAAiB;QACxD,cAAc,EAAE,CAAC,GAAG,mBAAmB,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;AAChE,QAAA,OAAO,EAAE,MAAM,mBAAmB,CAAC,OAAO,EAAE;AAC5C,QAAA,QAAQ,EAAE,MAAM,mBAAmB,CAAC,QAAQ,EAAE;AAC9C,QAAA,MAAM,EAAE,CAAC,QAAgB,KAAI;YACzB,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpD,OAAO;AACH,gBAAA,GAAG,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE;AACvB,gBAAA,QAAQ,EAAE,CAAC,UAAkB,EAAE,KAAU,KAAI;AACzC,oBAAA,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;iBACrC;aACJ,CAAA;SACJ;KACJ,CAAA;AACL;;;;"}
|