@talxis/base-controls 1.2410.5 → 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/ColumnHeader/styles.d.ts +2 -0
- package/dist/components/Grid/core/components/ColumnHeader/styles.js +2 -0
- package/dist/components/Grid/core/components/ColumnHeader/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
package/dist/components/Grid/core/components/Save/components/ChangeEditor/ChangeEditor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangeEditor.js","sources":["../../../../../../../../src/components/Grid/core/components/Save/components/ChangeEditor/ChangeEditor.tsx"],"sourcesContent":["import { DialogFooter, IDialogProps, PrimaryButton,
|
|
1
|
+
{"version":3,"file":"ChangeEditor.js","sources":["../../../../../../../../src/components/Grid/core/components/Save/components/ChangeEditor/ChangeEditor.tsx"],"sourcesContent":["import { DefaultButton, DialogFooter, IDialogProps, PrimaryButton, useTheme } from \"@fluentui/react\";\nimport { useGridInstance } from \"../../../../hooks/useGridInstance\";\nimport Dialog from \"../../../Dialog\";\nimport { getChangeEditorStyles } from \"./styles\";\nimport { ChangeGrid } from \"./components/ChangeGrid/ChangeGrid\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { IDataset } from \"@talxis/client-libraries\";\n\ninterface IChangeDialogProps extends IDialogProps {\n onDismiss: (ev?: React.MouseEvent<HTMLButtonElement>, shoulRefreshGrid?: boolean) => void;\n}\n\nexport const ChangeEditor = (props: IChangeDialogProps) => {\n const grid = useGridInstance();\n const recordChanges = grid.dataset.getChanges?.() ?? [];\n const labels = grid.labels;\n const [activeSaveOperationsCount, setActiveSaveOperationsCount] = useState(0);\n const styles = getChangeEditorStyles(useTheme());\n const datasetsRef = useRef<Set<IDataset>>(new Set());\n const shouldRefreshOnDismissRef = useRef(false);\n\n const onDismiss = (ev?: React.MouseEvent<HTMLButtonElement>) => {\n //do not close the dialog if we have pending save operations\n if (activeSaveOperationsCount > 0) {\n return;\n }\n props.onDismiss?.(ev, shouldRefreshOnDismissRef.current);\n }\n\n const isSaveDisabled = () => {\n if (activeSaveOperationsCount > 0) {\n return true;\n }\n if ([...datasetsRef.current.values()].find(x => x.hasInvalidChanges?.())) {\n return true;\n }\n return false;\n }\n\n useEffect(() => {\n return () => {\n props.onDismiss?.(undefined, shouldRefreshOnDismissRef.current);\n }\n }, []);\n\n useEffect(() => {\n if(activeSaveOperationsCount > 0) {\n shouldRefreshOnDismissRef.current = true;\n }\n }, [activeSaveOperationsCount])\n return <Dialog\n {...props}\n onDismiss={onDismiss}\n width={1000}\n minWidth={'80%'}\n modalProps={{\n isBlocking: true,\n className: styles.root,\n layerProps: {\n eventBubblingEnabled: true\n }\n }}\n dialogContentProps={{\n showCloseButton: true,\n title: labels[\"saving-changepreview-title\"]({\n numOfChanges: Object.keys(recordChanges).length\n })\n }}\n hidden={false}>\n <div className={styles.recordGrids}>\n {Object.values(recordChanges).map(recordChange => <ChangeGrid\n onDatasetDestroyed={(dataset) => datasetsRef.current.delete(dataset)}\n onDatasetReady={(dataset) => datasetsRef.current.add(dataset)}\n onIsSaving={(value) => {\n setActiveSaveOperationsCount(count => value ? count + 1 : count - 1);\n }}\n key={recordChange.record.getRecordId()}\n recordChange={recordChange} />)}\n </div>\n <DialogFooter>\n <PrimaryButton\n className={styles.saveBtn}\n disabled={isSaveDisabled()}\n text={activeSaveOperationsCount > 0 ? grid.labels['saving-saving']() : grid.labels['saving-save-all']()}\n onClick={async () => {\n setActiveSaveOperationsCount(count => count + 1);\n await Promise.all([...datasetsRef.current.values()].map(dataset => dataset.save?.()));\n grid.dataset.clearChanges?.();\n setActiveSaveOperationsCount(count => count - 1);\n }}\n />\n <DefaultButton\n text={grid.labels['saving-discard-all']()}\n disabled={activeSaveOperationsCount > 0}\n onClick={async () => {\n if (window.confirm(grid.labels['saving-discard-all-confirmation']())) {\n grid.dataset.clearChanges?.();\n grid.pcfContext.factory.requestRender();\n }\n }}\n />\n </DialogFooter>\n </Dialog>\n}"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;AAYa,MAAA,YAAY,GAAG,CAAC,KAAyB,KAAI;AACtD,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;AACxD,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,MAAM,CAAC,yBAAyB,EAAE,4BAA4B,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9E,IAAA,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,MAAM,CAAgB,IAAI,GAAG,EAAE,CAAC,CAAC;AACrD,IAAA,MAAM,yBAAyB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAEhD,IAAA,MAAM,SAAS,GAAG,CAAC,EAAwC,KAAI;;QAE3D,IAAI,yBAAyB,GAAG,CAAC,EAAE;YAC/B,OAAO;AACV,SAAA;QACD,KAAK,CAAC,SAAS,GAAG,EAAE,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAC7D,KAAC,CAAA;IAED,MAAM,cAAc,GAAG,MAAK;QACxB,IAAI,yBAAyB,GAAG,CAAC,EAAE;AAC/B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QACD,IAAI,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,IAAI,CAAC,EAAE;AACtE,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAA;IAED,SAAS,CAAC,MAAK;AACX,QAAA,OAAO,MAAK;YACR,KAAK,CAAC,SAAS,GAAG,SAAS,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACpE,SAAC,CAAA;KACJ,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,MAAK;QACX,IAAG,yBAAyB,GAAG,CAAC,EAAE;AAC9B,YAAA,yBAAyB,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5C,SAAA;AACL,KAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAA;AAC/B,IAAA,OAAOA,KAAC,MAAM,EAAA,EAAA,GACN,KAAK,EACT,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,KAAK,EACf,UAAU,EAAE;AACR,YAAA,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,MAAM,CAAC,IAAI;AACtB,YAAA,UAAU,EAAE;AACR,gBAAA,oBAAoB,EAAE,IAAI;AAC7B,aAAA;AACJ,SAAA,EACD,kBAAkB,EAAE;AAChB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,KAAK,EAAE,MAAM,CAAC,4BAA4B,CAAC,CAAC;gBACxC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM;aAClD,CAAC;AACL,SAAA,EACD,MAAM,EAAE,KAAK,EAAA,QAAA,EAAA,CACbC,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,WAAW,EAC7B,QAAA,EAAA,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,YAAY,IAAIA,GAAA,CAAC,UAAU,EAAA,EACzD,kBAAkB,EAAE,CAAC,OAAO,KAAK,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EACpE,cAAc,EAAE,CAAC,OAAO,KAAK,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAC7D,UAAU,EAAE,CAAC,KAAK,KAAI;AAClB,wBAAA,4BAA4B,CAAC,KAAK,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACzE,qBAAC,EAED,YAAY,EAAE,YAAY,EADrB,EAAA,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,CACR,CAAC,EAAA,CACjC,EACND,IAAA,CAAC,YAAY,EAAA,EAAA,QAAA,EAAA,CACTC,GAAC,CAAA,aAAa,EACV,EAAA,SAAS,EAAE,MAAM,CAAC,OAAO,EACzB,QAAQ,EAAE,cAAc,EAAE,EAC1B,IAAI,EAAE,yBAAyB,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,EACvG,OAAO,EAAE,YAAW;4BAChB,4BAA4B,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;4BACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;AACtF,4BAAA,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC;4BAC9B,4BAA4B,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;yBACpD,EAAA,CACH,EACFA,GAAA,CAAC,aAAa,EAAA,EACV,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,EACzC,QAAQ,EAAE,yBAAyB,GAAG,CAAC,EACvC,OAAO,EAAE,YAAW;AAChB,4BAAA,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,EAAE,CAAC,EAAE;AAClE,gCAAA,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC;AAC9B,gCAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AAC3C,6BAAA;yBACJ,EAAA,CACH,CACS,EAAA,CAAA,CAAA,EAAA,CACV,CAAA;AACb;;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IDataset, IRecordChange } from "@talxis/client-libraries";
|
|
3
|
+
interface IChangeGrid {
|
|
4
|
+
recordChange: IRecordChange;
|
|
5
|
+
onDatasetReady: (dataset: IDataset) => void;
|
|
6
|
+
onDatasetDestroyed: (dataset: IDataset) => void;
|
|
7
|
+
onIsSaving: (value: boolean) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const ChangeGrid: (props: IChangeGrid) => JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useRef, useMemo, useEffect } from 'react';
|
|
3
|
+
import { useGridInstance } from '../../../../../../hooks/useGridInstance.js';
|
|
4
|
+
import { DataTypes, MemoryDataProvider, Dataset } from '@talxis/client-libraries';
|
|
5
|
+
import { useTheme } from '@fluentui/react';
|
|
6
|
+
import { getChangeGridStyles } from './styles.js';
|
|
7
|
+
import { DatasetControl } from '../../../../../../../../DatasetControl/DatasetControl.js';
|
|
8
|
+
|
|
9
|
+
const ChangeGrid = (props) => {
|
|
10
|
+
const fieldChangesRef = useRef(props.recordChange.columns);
|
|
11
|
+
fieldChangesRef.current = props.recordChange.columns;
|
|
12
|
+
const baseRecord = props.recordChange.record;
|
|
13
|
+
const grid = useGridInstance();
|
|
14
|
+
const changedColumns = fieldChangesRef.current.map((change) => {
|
|
15
|
+
return grid.dataset.columns.find((x) => change.columnName === x.name);
|
|
16
|
+
});
|
|
17
|
+
const recordPrimaryName = (() => {
|
|
18
|
+
let result;
|
|
19
|
+
const primaryColumn = grid.dataset.columns.find((col) => col.isPrimary);
|
|
20
|
+
if (primaryColumn) {
|
|
21
|
+
result = baseRecord.getFormattedValue(primaryColumn.name);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
const firstTextColumn = grid.dataset.columns.find((col) => col.dataType === DataTypes.SingleLineText);
|
|
25
|
+
if (firstTextColumn) {
|
|
26
|
+
result = baseRecord.getFormattedValue(firstTextColumn.name);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return result ?? grid.labels["no-name"]();
|
|
30
|
+
})();
|
|
31
|
+
const theme = useTheme();
|
|
32
|
+
const styles = useMemo(() => getChangeGridStyles(theme, recordPrimaryName), [theme, recordPrimaryName]);
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
props.onDatasetReady(dataset);
|
|
35
|
+
return () => {
|
|
36
|
+
props.onDatasetDestroyed(dataset);
|
|
37
|
+
grid.pcfContext.factory.requestRender();
|
|
38
|
+
};
|
|
39
|
+
}, []);
|
|
40
|
+
const getColumns = () => {
|
|
41
|
+
const virtualColumns = [
|
|
42
|
+
{
|
|
43
|
+
name: "id__virtual",
|
|
44
|
+
alias: "id__virtual",
|
|
45
|
+
visualSizeFactor: 0,
|
|
46
|
+
dataType: DataTypes.SingleLineText,
|
|
47
|
+
displayName: "",
|
|
48
|
+
order: 0,
|
|
49
|
+
isHidden: true,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: "valueDesc__virtual",
|
|
53
|
+
alias: "valueDesc__virtual",
|
|
54
|
+
visualSizeFactor: 150,
|
|
55
|
+
dataType: DataTypes.SingleLineText,
|
|
56
|
+
displayName: "",
|
|
57
|
+
order: 1,
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
return [...virtualColumns, ...changedColumns];
|
|
61
|
+
};
|
|
62
|
+
const getDataset = () => {
|
|
63
|
+
const memoryProvider = new MemoryDataProvider([
|
|
64
|
+
{
|
|
65
|
+
id__virtual: "original",
|
|
66
|
+
'valueDesc__virtual': grid.labels["original-value"](),
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id__virtual: "new",
|
|
70
|
+
'valueDesc__virtual': grid.labels["new-value"](),
|
|
71
|
+
},
|
|
72
|
+
], getColumns(), {
|
|
73
|
+
entityMetadata: {
|
|
74
|
+
PrimaryIdAttribute: "id__virtual",
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
const dataset = new Dataset(memoryProvider);
|
|
78
|
+
grid.dataset.linking.getLinkedEntities().map(x => dataset.linking.addLinkedEntity(x));
|
|
79
|
+
dataset.addEventListener('onRecordLoaded', (record) => {
|
|
80
|
+
const recordId = record.getRecordId();
|
|
81
|
+
changedColumns.map(col => {
|
|
82
|
+
const change = fieldChangesRef.current.find(x => x.columnName === col.name);
|
|
83
|
+
record.expressions?.setCurrencySymbolExpression(col.name, () => baseRecord.getCurrencySymbol?.(col.name) ?? "");
|
|
84
|
+
record.expressions?.ui.setCellEditorParametersExpression(col.name, (parameters) => baseRecord.ui.getCellEditorParameters(col.name, parameters));
|
|
85
|
+
if (recordId === 'new') {
|
|
86
|
+
record.expressions?.setValueExpression?.(col.name, () => {
|
|
87
|
+
//this happens if we have removed a change
|
|
88
|
+
if (!change) {
|
|
89
|
+
return baseRecord.getValue(col.name);
|
|
90
|
+
}
|
|
91
|
+
return change.originalValue;
|
|
92
|
+
});
|
|
93
|
+
if (!change) {
|
|
94
|
+
record.setValue(col.name, record.getValue(col.name));
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
record.setValue(col.name, change.currentValue);
|
|
98
|
+
}
|
|
99
|
+
record.expressions?.ui.setNotificationsExpression?.(col.name, () => {
|
|
100
|
+
return [
|
|
101
|
+
{
|
|
102
|
+
uniqueId: "clear",
|
|
103
|
+
title: grid.labels["saving-discard"](),
|
|
104
|
+
iconName: "EraseTool",
|
|
105
|
+
compact: true,
|
|
106
|
+
messages: [],
|
|
107
|
+
actions: [
|
|
108
|
+
{
|
|
109
|
+
actions: [
|
|
110
|
+
() => {
|
|
111
|
+
baseRecord.clearChanges?.(col.name);
|
|
112
|
+
record.setValue(col.name, baseRecord.getValue(col.name));
|
|
113
|
+
grid.pcfContext.factory.requestRender();
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
}
|
|
119
|
+
];
|
|
120
|
+
});
|
|
121
|
+
record.expressions?.setValidationExpression?.(col.name, () => baseRecord.getColumnInfo(col.name));
|
|
122
|
+
}
|
|
123
|
+
else if (recordId === 'original') {
|
|
124
|
+
record.expressions?.setDisabledExpression?.(col.name, () => true);
|
|
125
|
+
record.expressions?.setValueExpression?.(col.name, () => {
|
|
126
|
+
//this happens if we have removed a change
|
|
127
|
+
if (!change) {
|
|
128
|
+
return baseRecord.getValue(col.name);
|
|
129
|
+
}
|
|
130
|
+
return change.originalValue;
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
dataset.addEventListener('onRecordValueChanged', (record, columnName) => {
|
|
136
|
+
baseRecord.setValue(columnName, record.getValue(columnName));
|
|
137
|
+
grid.pcfContext.factory.requestRender();
|
|
138
|
+
});
|
|
139
|
+
dataset.addEventListener('onChangesCleared', () => {
|
|
140
|
+
baseRecord.clearChanges?.();
|
|
141
|
+
grid.pcfContext.factory.requestRender();
|
|
142
|
+
});
|
|
143
|
+
dataset.addEventListener('onSave', async () => {
|
|
144
|
+
props.onIsSaving(true);
|
|
145
|
+
await baseRecord.save();
|
|
146
|
+
baseRecord.clearChanges?.();
|
|
147
|
+
props.onIsSaving(false);
|
|
148
|
+
grid.pcfContext.factory.requestRender();
|
|
149
|
+
});
|
|
150
|
+
return dataset;
|
|
151
|
+
};
|
|
152
|
+
const dataset = useMemo(() => getDataset(), []);
|
|
153
|
+
return (jsx("div", { className: styles.root, children: jsx(DatasetControl, { context: {
|
|
154
|
+
...grid.pcfContext,
|
|
155
|
+
parameters: {
|
|
156
|
+
...grid.pcfContext.parameters,
|
|
157
|
+
Grid: dataset,
|
|
158
|
+
},
|
|
159
|
+
}, parameters: {
|
|
160
|
+
Grid: dataset,
|
|
161
|
+
EnablePagination: {
|
|
162
|
+
raw: false,
|
|
163
|
+
},
|
|
164
|
+
EnableFiltering: {
|
|
165
|
+
raw: false,
|
|
166
|
+
},
|
|
167
|
+
EnableEditing: {
|
|
168
|
+
raw: true,
|
|
169
|
+
},
|
|
170
|
+
EnableNavigation: {
|
|
171
|
+
raw: false,
|
|
172
|
+
},
|
|
173
|
+
EnableOptionSetColors: grid.parameters.EnableOptionSetColors,
|
|
174
|
+
EnableSorting: {
|
|
175
|
+
raw: false,
|
|
176
|
+
},
|
|
177
|
+
EnableChangeEditor: {
|
|
178
|
+
raw: false
|
|
179
|
+
},
|
|
180
|
+
SelectableRows: {
|
|
181
|
+
raw: "none",
|
|
182
|
+
},
|
|
183
|
+
} }) }));
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
export { ChangeGrid };
|
|
187
|
+
//# sourceMappingURL=ChangeGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChangeGrid.js","sources":["../../../../../../../../../../src/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/ChangeGrid.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\nimport { useGridInstance } from \"../../../../../../hooks/useGridInstance\";\nimport {\n Dataset,\n DataTypes,\n IColumn,\n IDataset,\n IRecordChange,\n MemoryDataProvider,\n} from \"@talxis/client-libraries\";\nimport { DatasetControl } from \"../../../../../../../../DatasetControl\";\nimport { useTheme } from \"@fluentui/react\";\nimport { getChangeGridStyles } from \"./styles\";\n\ninterface IChangeGrid {\n recordChange: IRecordChange;\n onDatasetReady: (dataset: IDataset) => void;\n onDatasetDestroyed: (dataset: IDataset) => void;\n onIsSaving: (value: boolean) => void;\n}\n\nexport const ChangeGrid = (props: IChangeGrid) => {\n const fieldChangesRef = useRef(props.recordChange.columns);\n fieldChangesRef.current = props.recordChange.columns;\n const baseRecord = props.recordChange.record;\n const grid = useGridInstance();\n const changedColumns = fieldChangesRef.current.map((change) => {\n return grid.dataset.columns.find((x) => change.columnName === x.name)!;\n });\n\n const recordPrimaryName = (() => {\n let result;\n const primaryColumn = grid.dataset.columns.find((col) => col.isPrimary);\n if (primaryColumn) {\n result = baseRecord.getFormattedValue(primaryColumn.name);\n } else {\n const firstTextColumn = grid.dataset.columns.find(\n (col) => col.dataType === DataTypes.SingleLineText\n );\n if (firstTextColumn) {\n result = baseRecord.getFormattedValue(firstTextColumn.name);\n }\n }\n return result ?? grid.labels[\"no-name\"]();\n })();\n\n const theme = useTheme();\n const styles = useMemo(() => getChangeGridStyles(theme, recordPrimaryName), [theme, recordPrimaryName]);\n\n useEffect(() => {\n props.onDatasetReady(dataset);\n return () => {\n props.onDatasetDestroyed(dataset);\n grid.pcfContext.factory.requestRender()\n }\n }, []);\n\n const getColumns = (): IColumn[] => {\n const virtualColumns: IColumn[] = [\n {\n name: \"id__virtual\",\n alias: \"id__virtual\",\n visualSizeFactor: 0,\n dataType: DataTypes.SingleLineText,\n displayName: \"\",\n order: 0,\n isHidden: true,\n },\n {\n name: \"valueDesc__virtual\",\n alias: \"valueDesc__virtual\",\n visualSizeFactor: 150,\n dataType: DataTypes.SingleLineText,\n displayName: \"\",\n order: 1,\n },\n ];\n return [...virtualColumns, ...changedColumns];\n };\n\n const getDataset = () => {\n const memoryProvider = new MemoryDataProvider(\n [\n {\n id__virtual: \"original\",\n 'valueDesc__virtual': grid.labels[\"original-value\"](),\n },\n {\n id__virtual: \"new\",\n 'valueDesc__virtual': grid.labels[\"new-value\"](),\n },\n ],\n getColumns(),\n {\n entityMetadata: {\n PrimaryIdAttribute: \"id__virtual\",\n },\n }\n );\n const dataset = new Dataset(memoryProvider);\n grid.dataset.linking.getLinkedEntities().map(x => dataset.linking.addLinkedEntity(x))\n\n dataset.addEventListener('onRecordLoaded', (record) => {\n const recordId = record.getRecordId();\n changedColumns.map(col => {\n const change = fieldChangesRef.current.find(x => x.columnName === col.name);\n record.expressions?.setCurrencySymbolExpression(col.name, () => baseRecord.getCurrencySymbol?.(col.name) ?? \"\");\n record.expressions?.ui.setCellEditorParametersExpression(col.name, (parameters) => baseRecord.ui.getCellEditorParameters(col.name, parameters))\n if (recordId === 'new') {\n record.expressions?.setValueExpression?.(col.name, () => {\n //this happens if we have removed a change\n if (!change) {\n return baseRecord.getValue(col.name);\n }\n return change.originalValue;\n })\n if(!change) {\n record.setValue(col.name, record.getValue(col.name))\n }\n else {\n record.setValue(col.name, change.currentValue);\n }\n record.expressions?.ui.setNotificationsExpression?.(col.name, () => {\n return [\n {\n uniqueId: \"clear\",\n title: grid.labels[\"saving-discard\"](),\n iconName: \"EraseTool\",\n compact: true,\n messages: [],\n actions: [\n {\n actions: [\n () => {\n baseRecord.clearChanges?.(col.name);\n record.setValue(col.name, baseRecord.getValue(col.name))\n grid.pcfContext.factory.requestRender();\n },\n ],\n },\n ],\n }\n ]\n })\n record.expressions?.setValidationExpression?.(col.name, () => baseRecord.getColumnInfo(col.name))\n }\n else if (recordId === 'original') {\n record.expressions?.setDisabledExpression?.(col.name, () => true);\n record.expressions?.setValueExpression?.(col.name, () => {\n //this happens if we have removed a change\n if (!change) {\n return baseRecord.getValue(col.name);\n }\n return change.originalValue;\n })\n }\n });\n })\n\n dataset.addEventListener('onRecordValueChanged', (record, columnName) => {\n baseRecord.setValue(columnName, record.getValue(columnName)); \n grid.pcfContext.factory.requestRender(); \n })\n dataset.addEventListener('onChangesCleared', () => {\n baseRecord.clearChanges?.();\n grid.pcfContext.factory.requestRender();\n })\n dataset.addEventListener('onSave', async () => {\n props.onIsSaving(true);\n await baseRecord.save();\n baseRecord.clearChanges?.();\n props.onIsSaving(false);\n grid.pcfContext.factory.requestRender();\n })\n return dataset;\n };\n const dataset = useMemo(() => getDataset(), []);\n return (\n <div className={styles.root}>\n <DatasetControl\n context={{\n ...grid.pcfContext,\n parameters: {\n ...grid.pcfContext.parameters,\n Grid: dataset,\n },\n }}\n parameters={{\n Grid: dataset,\n EnablePagination: {\n raw: false,\n },\n EnableFiltering: {\n raw: false,\n },\n EnableEditing: {\n raw: true,\n },\n EnableNavigation: {\n raw: false,\n },\n EnableOptionSetColors: grid.parameters.EnableOptionSetColors,\n EnableSorting: {\n raw: false,\n },\n EnableChangeEditor: {\n raw: false\n },\n SelectableRows: {\n raw: \"none\",\n },\n }}\n />\n </div>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;;;;AAqBa,MAAA,UAAU,GAAG,CAAC,KAAkB,KAAI;IAC7C,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3D,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;AACrD,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;AAC7C,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,UAAU,KAAK,CAAC,CAAC,IAAI,CAAE,CAAC;AAC3E,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,iBAAiB,GAAG,CAAC,MAAK;AAC5B,QAAA,IAAI,MAAM,CAAC;AACX,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;AACxE,QAAA,IAAI,aAAa,EAAE;YACf,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7D,SAAA;AAAM,aAAA;YACH,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAC7C,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,cAAc,CACrD,CAAC;AACF,YAAA,IAAI,eAAe,EAAE;gBACjB,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/D,aAAA;AACJ,SAAA;QACD,OAAO,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;KAC7C,GAAG,CAAC;AAEL,IAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAExG,SAAS,CAAC,MAAK;AACX,QAAA,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAA,OAAO,MAAK;AACR,YAAA,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,CAAA;AAC3C,SAAC,CAAA;KACJ,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,MAAgB;AAC/B,QAAA,MAAM,cAAc,GAAc;AAC9B,YAAA;AACI,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,gBAAgB,EAAE,CAAC;gBACnB,QAAQ,EAAE,SAAS,CAAC,cAAc;AAClC,gBAAA,WAAW,EAAE,EAAE;AACf,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,QAAQ,EAAE,IAAI;AACjB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,KAAK,EAAE,oBAAoB;AAC3B,gBAAA,gBAAgB,EAAE,GAAG;gBACrB,QAAQ,EAAE,SAAS,CAAC,cAAc;AAClC,gBAAA,WAAW,EAAE,EAAE;AACf,gBAAA,KAAK,EAAE,CAAC;AACX,aAAA;SACJ,CAAC;AACF,QAAA,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC,CAAC;AAClD,KAAC,CAAC;IAEF,MAAM,UAAU,GAAG,MAAK;AACpB,QAAA,MAAM,cAAc,GAAG,IAAI,kBAAkB,CACzC;AACI,YAAA;AACI,gBAAA,WAAW,EAAE,UAAU;AACvB,gBAAA,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;AACxD,aAAA;AACD,YAAA;AACI,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AACnD,aAAA;SACJ,EACD,UAAU,EAAE,EACZ;AACI,YAAA,cAAc,EAAE;AACZ,gBAAA,kBAAkB,EAAE,aAAa;AACpC,aAAA;AACJ,SAAA,CACJ,CAAC;AACF,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;QAErF,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,MAAM,KAAI;AAClD,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;AACtC,YAAA,cAAc,CAAC,GAAG,CAAC,GAAG,IAAG;gBACrB,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5E,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,UAAU,CAAC,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAChH,gBAAA,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,iCAAiC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;gBAC/I,IAAI,QAAQ,KAAK,KAAK,EAAE;oBACpB,MAAM,CAAC,WAAW,EAAE,kBAAkB,GAAG,GAAG,CAAC,IAAI,EAAE,MAAK;;wBAEpD,IAAI,CAAC,MAAM,EAAE;4BACT,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,yBAAA;wBACD,OAAO,MAAM,CAAC,aAAa,CAAC;AAChC,qBAAC,CAAC,CAAA;oBACF,IAAG,CAAC,MAAM,EAAE;AACR,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;AACvD,qBAAA;AACI,yBAAA;wBACD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;AAClD,qBAAA;AACD,oBAAA,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,0BAA0B,GAAG,GAAG,CAAC,IAAI,EAAE,MAAK;wBAC/D,OAAO;AACH,4BAAA;AACI,gCAAA,QAAQ,EAAE,OAAO;AACjB,gCAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;AACtC,gCAAA,QAAQ,EAAE,WAAW;AACrB,gCAAA,OAAO,EAAE,IAAI;AACb,gCAAA,QAAQ,EAAE,EAAE;AACZ,gCAAA,OAAO,EAAE;AACL,oCAAA;AACI,wCAAA,OAAO,EAAE;AACL,4CAAA,MAAK;gDACD,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,gDAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;AACxD,gDAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;6CAC3C;AACJ,yCAAA;AACJ,qCAAA;AACJ,iCAAA;AACJ,6BAAA;yBACJ,CAAA;AACL,qBAAC,CAAC,CAAA;oBACF,MAAM,CAAC,WAAW,EAAE,uBAAuB,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;AACpG,iBAAA;qBACI,IAAI,QAAQ,KAAK,UAAU,EAAE;AAC9B,oBAAA,MAAM,CAAC,WAAW,EAAE,qBAAqB,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;oBAClE,MAAM,CAAC,WAAW,EAAE,kBAAkB,GAAG,GAAG,CAAC,IAAI,EAAE,MAAK;;wBAEpD,IAAI,CAAC,MAAM,EAAE;4BACT,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,yBAAA;wBACD,OAAO,MAAM,CAAC,aAAa,CAAC;AAChC,qBAAC,CAAC,CAAA;AACL,iBAAA;AACL,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAA;QAEF,OAAO,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAI;AACpE,YAAA,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AAC5C,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,MAAK;AAC9C,YAAA,UAAU,CAAC,YAAY,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AAC5C,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAW;AAC1C,YAAA,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvB,YAAA,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;AACxB,YAAA,UAAU,CAAC,YAAY,IAAI,CAAC;AAC5B,YAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AAC5C,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,OAAO,CAAC;AACnB,KAAC,CAAC;AACF,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;AAChD,IAAA,QACIA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,IAAI,EAAA,QAAA,EACvBA,GAAC,CAAA,cAAc,EACX,EAAA,OAAO,EAAE;gBACL,GAAG,IAAI,CAAC,UAAU;AAClB,gBAAA,UAAU,EAAE;AACR,oBAAA,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU;AAC7B,oBAAA,IAAI,EAAE,OAAO;AAChB,iBAAA;AACJ,aAAA,EACD,UAAU,EAAE;AACR,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,gBAAgB,EAAE;AACd,oBAAA,GAAG,EAAE,KAAK;AACb,iBAAA;AACD,gBAAA,eAAe,EAAE;AACb,oBAAA,GAAG,EAAE,KAAK;AACb,iBAAA;AACD,gBAAA,aAAa,EAAE;AACX,oBAAA,GAAG,EAAE,IAAI;AACZ,iBAAA;AACD,gBAAA,gBAAgB,EAAE;AACd,oBAAA,GAAG,EAAE,KAAK;AACb,iBAAA;AACD,gBAAA,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,qBAAqB;AAC5D,gBAAA,aAAa,EAAE;AACX,oBAAA,GAAG,EAAE,KAAK;AACb,iBAAA;AACD,gBAAA,kBAAkB,EAAE;AAChB,oBAAA,GAAG,EAAE,KAAK;AACb,iBAAA;AACD,gBAAA,cAAc,EAAE;AACZ,oBAAA,GAAG,EAAE,MAAM;AACd,iBAAA;aACJ,EACH,CAAA,EAAA,CACA,EACR;AACN;;;;"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ITheme } from "@fluentui/react";
|
|
2
|
+
export declare const getChangeGridStyles: (theme: ITheme, recordName: string) => import("@fluentui/react").IProcessedStyleSet<{
|
|
3
|
+
commandBar: {
|
|
4
|
+
borderBottom: string;
|
|
5
|
+
};
|
|
6
|
+
root: {
|
|
7
|
+
'[col-id="valueDesc__virtual"]': {
|
|
8
|
+
'.talxis-cell-text': {
|
|
9
|
+
fontWeight: number;
|
|
10
|
+
};
|
|
11
|
+
'[data-icon-name="Uneditable"]': {
|
|
12
|
+
display: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
'.talxis__grid-control__notification-bar': {
|
|
16
|
+
'.ms-MessageBar-icon': {
|
|
17
|
+
display: string;
|
|
18
|
+
};
|
|
19
|
+
'[class^="notificationText"]': {
|
|
20
|
+
display: string;
|
|
21
|
+
};
|
|
22
|
+
'.ms-MessageBar-innerText': {
|
|
23
|
+
fontWeight: number;
|
|
24
|
+
fontSize: number;
|
|
25
|
+
'::after': {
|
|
26
|
+
content: string;
|
|
27
|
+
display: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
recordName: {
|
|
33
|
+
'.ms-Button-label': {
|
|
34
|
+
fontSize: string | number | undefined;
|
|
35
|
+
fontWeight: number;
|
|
36
|
+
color: string;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
}>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { mergeStyleSets } from '@fluentui/react';
|
|
2
|
+
|
|
3
|
+
const getChangeGridStyles = (theme, recordName) => {
|
|
4
|
+
return mergeStyleSets({
|
|
5
|
+
commandBar: {
|
|
6
|
+
borderBottom: `1px solid ${theme.semanticColors.bodyDivider}`
|
|
7
|
+
},
|
|
8
|
+
root: {
|
|
9
|
+
'[col-id="valueDesc__virtual"]': {
|
|
10
|
+
'.talxis-cell-text': {
|
|
11
|
+
fontWeight: 600
|
|
12
|
+
},
|
|
13
|
+
'[data-icon-name="Uneditable"]': {
|
|
14
|
+
display: 'none'
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
'.talxis__grid-control__notification-bar': {
|
|
18
|
+
'.ms-MessageBar-icon': {
|
|
19
|
+
display: 'none'
|
|
20
|
+
},
|
|
21
|
+
'[class^="notificationText"]': {
|
|
22
|
+
display: 'none'
|
|
23
|
+
},
|
|
24
|
+
'.ms-MessageBar-innerText': {
|
|
25
|
+
fontWeight: 600,
|
|
26
|
+
fontSize: 16,
|
|
27
|
+
'::after': {
|
|
28
|
+
content: `"${recordName}"`,
|
|
29
|
+
display: 'block'
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
recordName: {
|
|
35
|
+
'.ms-Button-label': {
|
|
36
|
+
fontSize: theme.fonts.mediumPlus.fontSize,
|
|
37
|
+
fontWeight: 600,
|
|
38
|
+
color: theme.semanticColors.bodyText
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export { getChangeGridStyles };
|
|
45
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../../../../../../../src/components/Grid/core/components/Save/components/ChangeEditor/components/ChangeGrid/styles.ts"],"sourcesContent":["import { ITheme, mergeStyleSets } from \"@fluentui/react\";\n\nexport const getChangeGridStyles = (theme: ITheme, recordName: string) => {\n return mergeStyleSets({\n commandBar: {\n borderBottom: `1px solid ${theme.semanticColors.bodyDivider}`\n },\n root: {\n '[col-id=\"valueDesc__virtual\"]': {\n '.talxis-cell-text': {\n fontWeight: 600\n },\n '[data-icon-name=\"Uneditable\"]': {\n display: 'none'\n }\n },\n '.talxis__grid-control__notification-bar': {\n '.ms-MessageBar-icon': {\n display: 'none'\n },\n '[class^=\"notificationText\"]': {\n display: 'none'\n },\n '.ms-MessageBar-innerText': {\n fontWeight: 600,\n fontSize: 16,\n '::after': {\n content: `\"${recordName}\"`,\n display: 'block'\n }\n }\n }\n },\n recordName: {\n '.ms-Button-label': {\n fontSize: theme.fonts.mediumPlus.fontSize,\n fontWeight: 600,\n color: theme.semanticColors.bodyText\n }\n }\n })\n}"],"names":[],"mappings":";;MAEa,mBAAmB,GAAG,CAAC,KAAa,EAAE,UAAkB,KAAI;AACrE,IAAA,OAAO,cAAc,CAAC;AAClB,QAAA,UAAU,EAAE;AACR,YAAA,YAAY,EAAE,CAAa,UAAA,EAAA,KAAK,CAAC,cAAc,CAAC,WAAW,CAAE,CAAA;AAChE,SAAA;AACD,QAAA,IAAI,EAAE;AACF,YAAA,+BAA+B,EAAE;AAC7B,gBAAA,mBAAmB,EAAE;AACjB,oBAAA,UAAU,EAAE,GAAG;AAClB,iBAAA;AACD,gBAAA,+BAA+B,EAAE;AAC7B,oBAAA,OAAO,EAAE,MAAM;AAClB,iBAAA;AACJ,aAAA;AACD,YAAA,yCAAyC,EAAE;AACvC,gBAAA,qBAAqB,EAAE;AACnB,oBAAA,OAAO,EAAE,MAAM;AAClB,iBAAA;AACD,gBAAA,6BAA6B,EAAE;AAC3B,oBAAA,OAAO,EAAE,MAAM;AAClB,iBAAA;AACD,gBAAA,0BAA0B,EAAE;AACxB,oBAAA,UAAU,EAAE,GAAG;AACf,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,SAAS,EAAE;wBACP,OAAO,EAAE,CAAI,CAAA,EAAA,UAAU,CAAG,CAAA,CAAA;AAC1B,wBAAA,OAAO,EAAE,OAAO;AACnB,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,UAAU,EAAE;AACR,YAAA,kBAAkB,EAAE;AAChB,gBAAA,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ;AACzC,gBAAA,UAAU,EAAE,GAAG;AACf,gBAAA,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ;AACvC,aAAA;AACJ,SAAA;AACJ,KAAA,CAAC,CAAA;AACN;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const getSaveStyles: () => import("@fluentui/react").IProcessedStyleSet<{
|
|
1
|
+
export declare const getSaveStyles: (enableChangeEditor: boolean) => import("@fluentui/react").IProcessedStyleSet<{
|
|
2
2
|
root: {
|
|
3
3
|
'&[data-dirty="false"]': {
|
|
4
4
|
'.ms-MessageBar': {
|
|
@@ -17,9 +17,7 @@ export declare const getSaveStyles: () => import("@fluentui/react").IProcessedSt
|
|
|
17
17
|
'.ms-MessageBar-innerText': {
|
|
18
18
|
textAlign: string;
|
|
19
19
|
};
|
|
20
|
-
|
|
21
|
-
cursor: string;
|
|
22
|
-
};
|
|
20
|
+
cursor: string | undefined;
|
|
23
21
|
};
|
|
24
22
|
notificationText: {
|
|
25
23
|
whiteSpace: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mergeStyleSets } from '@fluentui/react';
|
|
2
2
|
|
|
3
|
-
const getSaveStyles = () => {
|
|
3
|
+
const getSaveStyles = (enableChangeEditor) => {
|
|
4
4
|
return mergeStyleSets({
|
|
5
5
|
root: {
|
|
6
6
|
'&[data-dirty="false"]': {
|
|
@@ -20,9 +20,7 @@ const getSaveStyles = () => {
|
|
|
20
20
|
'.ms-MessageBar-innerText': {
|
|
21
21
|
textAlign: 'left'
|
|
22
22
|
},
|
|
23
|
-
'
|
|
24
|
-
cursor: 'pointer'
|
|
25
|
-
}
|
|
23
|
+
cursor: enableChangeEditor ? 'pointer' : undefined
|
|
26
24
|
},
|
|
27
25
|
notificationText: {
|
|
28
26
|
whiteSpace: 'normal',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sources":["../../../../../../src/components/Grid/core/components/Save/styles.ts"],"sourcesContent":["import { mergeStyleSets } from \"@fluentui/react\"\n\nexport const getSaveStyles = () => {\n return mergeStyleSets({\n root: {\n '&[data-dirty=\"false\"]': {\n '.ms-MessageBar': {\n backgroundColor: 'transparent',\n '.ms-MessageBar-icon': {\n display: 'none'\n }\n }\n },\n '.ms-MessageBar-icon': {\n alignItems: 'center'\n },\n '.ms-MessageBar-actionsSingleLine': {\n marginRight: 0\n },\n '.ms-MessageBar-innerText': {\n textAlign: 'left'\n },\n
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../../../src/components/Grid/core/components/Save/styles.ts"],"sourcesContent":["import { mergeStyleSets } from \"@fluentui/react\"\n\nexport const getSaveStyles = (enableChangeEditor: boolean) => {\n return mergeStyleSets({\n root: {\n '&[data-dirty=\"false\"]': {\n '.ms-MessageBar': {\n backgroundColor: 'transparent',\n '.ms-MessageBar-icon': {\n display: 'none'\n }\n }\n },\n '.ms-MessageBar-icon': {\n alignItems: 'center'\n },\n '.ms-MessageBar-actionsSingleLine': {\n marginRight: 0\n },\n '.ms-MessageBar-innerText': {\n textAlign: 'left'\n },\n cursor: enableChangeEditor ? 'pointer' : undefined\n },\n notificationText: {\n whiteSpace: 'normal',\n },\n actions: {\n height: '100%',\n '.ms-Button': {\n height: '100%',\n backgroundColor: 'transparent',\n ':last-child': {\n marginLeft: 0\n }\n }\n }\n });\n}"],"names":[],"mappings":";;AAEa,MAAA,aAAa,GAAG,CAAC,kBAA2B,KAAI;AACzD,IAAA,OAAO,cAAc,CAAC;AAClB,QAAA,IAAI,EAAE;AACF,YAAA,uBAAuB,EAAE;AACrB,gBAAA,gBAAgB,EAAE;AACd,oBAAA,eAAe,EAAE,aAAa;AAC9B,oBAAA,qBAAqB,EAAE;AACnB,wBAAA,OAAO,EAAE,MAAM;AAClB,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA,qBAAqB,EAAE;AACnB,gBAAA,UAAU,EAAE,QAAQ;AACvB,aAAA;AACD,YAAA,kCAAkC,EAAE;AAChC,gBAAA,WAAW,EAAE,CAAC;AACjB,aAAA;AACD,YAAA,0BAA0B,EAAE;AACxB,gBAAA,SAAS,EAAE,MAAM;AACpB,aAAA;YACD,MAAM,EAAE,kBAAkB,GAAG,SAAS,GAAG,SAAS;AACrD,SAAA;AACD,QAAA,gBAAgB,EAAE;AACd,YAAA,UAAU,EAAE,QAAQ;AACvB,SAAA;AACD,QAAA,OAAO,EAAE;AACL,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,YAAY,EAAE;AACV,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,eAAe,EAAE,aAAa;AAC9B,gBAAA,aAAa,EAAE;AACX,oBAAA,UAAU,EAAE,CAAC;AAChB,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA,CAAC,CAAC;AACP;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useContext, useState, useEffect } from 'react';
|
|
2
|
-
import
|
|
2
|
+
import deepEqual from 'fast-deep-equal/es6';
|
|
3
3
|
import { GridContext } from '../../GridContext.js';
|
|
4
4
|
|
|
5
5
|
const useGridController = (gridInstance) => {
|
|
@@ -9,7 +9,7 @@ const useGridController = (gridInstance) => {
|
|
|
9
9
|
useEffect(() => {
|
|
10
10
|
(async () => {
|
|
11
11
|
const newColumns = await grid.refreshColumns();
|
|
12
|
-
if (!
|
|
12
|
+
if (!deepEqual(newColumns, columns)) {
|
|
13
13
|
setColumns(newColumns);
|
|
14
14
|
}
|
|
15
15
|
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGridController.js","sources":["../../../../../src/components/Grid/core/controllers/useGridController.ts"],"sourcesContent":["import { useContext, useEffect, useState } from \"react\"\nimport equal from 'fast-deep-equal/es6';\nimport { Grid } from \"../model/Grid\";\nimport { IGridColumn } from \"../interfaces/IGridColumn\";\nimport { GridContext } from \"../../GridContext\";\n\ninterface IGridController {\n columns: IGridColumn[]\n}\n\nexport const useGridController = (gridInstance?: Grid): IGridController => {\n const grid = gridInstance ?? useContext(GridContext).gridInstance;\n const [columns, setColumns] = useState<IGridColumn[]>(grid.columns);\n\n\n //only change columns and records reference if there is a change\n useEffect(() => {\n (async () => {\n const newColumns = await grid.refreshColumns();\n if(!equal(newColumns, columns)) {\n setColumns(newColumns);\n }\n })();\n }, [grid.shouldRerender]);\n return {\n columns\n }\n}"],"names":[],"mappings":";;;;AAUa,MAAA,iBAAiB,GAAG,CAAC,YAAmB,KAAqB;IACtE,MAAM,IAAI,GAAG,YAAY,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC;AAClE,IAAA,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,OAAO,CAAC,CAAC;;IAIpE,SAAS,CAAC,MAAK;QACX,CAAC,YAAW;AACR,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC/C,YAAA,IAAG,
|
|
1
|
+
{"version":3,"file":"useGridController.js","sources":["../../../../../src/components/Grid/core/controllers/useGridController.ts"],"sourcesContent":["import { useContext, useEffect, useState } from \"react\"\nimport equal from 'fast-deep-equal/es6';\nimport { Grid } from \"../model/Grid\";\nimport { IGridColumn } from \"../interfaces/IGridColumn\";\nimport { GridContext } from \"../../GridContext\";\n\ninterface IGridController {\n columns: IGridColumn[]\n}\n\nexport const useGridController = (gridInstance?: Grid): IGridController => {\n const grid = gridInstance ?? useContext(GridContext).gridInstance;\n const [columns, setColumns] = useState<IGridColumn[]>(grid.columns);\n\n\n //only change columns and records reference if there is a change\n useEffect(() => {\n (async () => {\n const newColumns = await grid.refreshColumns();\n if(!equal(newColumns, columns)) {\n setColumns(newColumns);\n }\n })();\n }, [grid.shouldRerender]);\n return {\n columns\n }\n}"],"names":["equal"],"mappings":";;;;AAUa,MAAA,iBAAiB,GAAG,CAAC,YAAmB,KAAqB;IACtE,MAAM,IAAI,GAAG,YAAY,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC;AAClE,IAAA,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,OAAO,CAAC,CAAC;;IAIpE,SAAS,CAAC,MAAK;QACX,CAAC,YAAW;AACR,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC/C,YAAA,IAAG,CAACA,SAAK,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;gBAC5B,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1B,aAAA;SACJ,GAAG,CAAC;AACT,KAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAC1B,OAAO;QACH,OAAO;KACV,CAAA;AACL;;;;"}
|
|
@@ -6,7 +6,6 @@ import { Paging } from "../../paging/model/Paging";
|
|
|
6
6
|
import { Selection } from "../../selection/model/Selection";
|
|
7
7
|
import { Sorting } from "../../sorting/Sorting";
|
|
8
8
|
import { KeyHoldListener } from "../services/KeyListener";
|
|
9
|
-
import { RecordUpdateService } from "../services/RecordUpdateService/model/RecordUpdateService";
|
|
10
9
|
import { Metadata } from "./Metadata";
|
|
11
10
|
import { IGridColumn } from "../interfaces/IGridColumn";
|
|
12
11
|
export declare class Grid {
|
|
@@ -35,7 +34,6 @@ export declare class Grid {
|
|
|
35
34
|
get props(): IGrid;
|
|
36
35
|
get columns(): IGridColumn[];
|
|
37
36
|
get records(): IRecord[];
|
|
38
|
-
get recordUpdateService(): RecordUpdateService;
|
|
39
37
|
get sorting(): Sorting;
|
|
40
38
|
get metadata(): Metadata;
|
|
41
39
|
get filtering(): Filtering;
|
|
@@ -48,6 +46,7 @@ export declare class Grid {
|
|
|
48
46
|
get enableOptionSetColors(): boolean;
|
|
49
47
|
get linking(): ComponentFramework.PropertyHelper.DataSetApi.Linking;
|
|
50
48
|
get inlineRibbonButtonIds(): string[] | undefined;
|
|
49
|
+
get rowHeight(): number;
|
|
51
50
|
get height(): string;
|
|
52
51
|
openDatasetItem(entityReference: ComponentFramework.EntityReference): void;
|
|
53
52
|
updateDependencies(props: IGrid): void;
|
|
@@ -3,12 +3,11 @@ import { Filtering } from '../../filtering/model/Filtering.js';
|
|
|
3
3
|
import { Paging } from '../../paging/model/Paging.js';
|
|
4
4
|
import { Selection } from '../../selection/model/Selection.js';
|
|
5
5
|
import { Sorting } from '../../sorting/Sorting.js';
|
|
6
|
-
import { ROW_HEIGHT } from '../constants.js';
|
|
7
6
|
import { DataType } from '../enums/DataType.js';
|
|
8
|
-
import { RecordUpdateService } from '../services/RecordUpdateService/model/RecordUpdateService.js';
|
|
9
7
|
import { Metadata } from './Metadata.js';
|
|
10
8
|
import { CHECKBOX_COLUMN_KEY } from '../../constants.js';
|
|
11
9
|
|
|
10
|
+
const DEFAULT_ROW_HEIGHT = 42;
|
|
12
11
|
class Grid {
|
|
13
12
|
constructor(props, labels, keyHoldListener) {
|
|
14
13
|
this._columns = [];
|
|
@@ -23,12 +22,11 @@ class Grid {
|
|
|
23
22
|
this._labels = labels;
|
|
24
23
|
this.keyHoldListener = keyHoldListener;
|
|
25
24
|
this._dependencies = {
|
|
26
|
-
recordUpdateService: new RecordUpdateService(this),
|
|
27
25
|
filtering: new Filtering(this),
|
|
28
26
|
selection: new Selection(this),
|
|
29
27
|
metadata: new Metadata(this),
|
|
30
28
|
sorting: new Sorting(this),
|
|
31
|
-
paging: new Paging(this)
|
|
29
|
+
paging: new Paging(this),
|
|
32
30
|
};
|
|
33
31
|
this._initialPageSize = this.paging.pageSize;
|
|
34
32
|
this._maxHeight = this._getMaxHeight();
|
|
@@ -68,9 +66,6 @@ class Grid {
|
|
|
68
66
|
get records() {
|
|
69
67
|
return this._records;
|
|
70
68
|
}
|
|
71
|
-
get recordUpdateService() {
|
|
72
|
-
return this._dependencies.recordUpdateService;
|
|
73
|
-
}
|
|
74
69
|
get sorting() {
|
|
75
70
|
return this._dependencies.sorting;
|
|
76
71
|
}
|
|
@@ -111,6 +106,13 @@ class Grid {
|
|
|
111
106
|
}
|
|
112
107
|
return idString.split(',');
|
|
113
108
|
}
|
|
109
|
+
get rowHeight() {
|
|
110
|
+
let height = this.parameters.RowHeight?.raw;
|
|
111
|
+
if (!height) {
|
|
112
|
+
height = DEFAULT_ROW_HEIGHT;
|
|
113
|
+
}
|
|
114
|
+
return height;
|
|
115
|
+
}
|
|
114
116
|
get height() {
|
|
115
117
|
let height = this._maxHeight;
|
|
116
118
|
if (this.parameters.Height?.raw) {
|
|
@@ -120,7 +122,7 @@ class Grid {
|
|
|
120
122
|
height = this._minHeight;
|
|
121
123
|
}
|
|
122
124
|
else if (this._records.length <= this._initialPageSize) {
|
|
123
|
-
height = this._records.length *
|
|
125
|
+
height = this._records.length * this.rowHeight;
|
|
124
126
|
}
|
|
125
127
|
if (height > this._maxHeight) {
|
|
126
128
|
height = this._maxHeight;
|
|
@@ -260,7 +262,7 @@ class Grid {
|
|
|
260
262
|
return metadata.Attributes.get(attributeName)?.attributeDescriptor?.isFilterable ?? true;
|
|
261
263
|
}
|
|
262
264
|
_getMaxHeight() {
|
|
263
|
-
let maxHeight = this._initialPageSize *
|
|
265
|
+
let maxHeight = this._initialPageSize * this.rowHeight;
|
|
264
266
|
if (maxHeight > 600) {
|
|
265
267
|
maxHeight = 600;
|
|
266
268
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grid.js","sources":["../../../../../src/components/Grid/core/model/Grid.ts"],"sourcesContent":["import { Attribute, Constants, DataTypes, IColumn, IDataset, IRecord } from \"@talxis/client-libraries\";\nimport { Filtering } from \"../../filtering/model/Filtering\";\nimport { IGrid } from \"../../interfaces\";\nimport { Paging } from \"../../paging/model/Paging\";\nimport { Selection } from \"../../selection/model/Selection\";\nimport { Sorting } from \"../../sorting/Sorting\";\nimport { ROW_HEIGHT } from \"../constants\";\nimport { DataType } from \"../enums/DataType\";\nimport { KeyHoldListener } from \"../services/KeyListener\";\nimport { RecordUpdateService } from \"../services/RecordUpdateService/model/RecordUpdateService\";\nimport { Metadata } from \"./Metadata\";\nimport { CHECKBOX_COLUMN_KEY } from \"../../constants\";\nimport { IGridColumn } from \"../interfaces/IGridColumn\";\n\nexport class Grid {\n private _props: IGrid;\n private _dataset: IDataset\n private _pcfContext: ComponentFramework.Context<any>;\n private _columns: IGridColumn[] = [];\n //used for optimization\n private _previousRecordsReference: {\n [id: string]: IRecord;\n } = {};\n //TODO: fix types\n private _labels: any;\n private _shouldRerender: boolean = false;\n private _records: IRecord[] = [];\n //TODO: the dependencies might not have fully loaded grid\n //need to make sure that the grid is initialized before creating them\n private _dependencies: {\n recordUpdateService: RecordUpdateService,\n filtering: Filtering,\n sorting: Sorting,\n metadata: Metadata,\n selection: Selection,\n paging: Paging\n };\n private _maxHeight: number;\n private _minHeight: number = 150;\n private _initialPageSize: number;\n public readonly keyHoldListener: KeyHoldListener;\n\n constructor(props: IGrid, labels: any, keyHoldListener: KeyHoldListener) {\n this._props = props;\n this._dataset = props.parameters.Grid;\n this._pcfContext = props.context;\n this._labels = labels;\n this.keyHoldListener = keyHoldListener;\n\n this._dependencies = {\n recordUpdateService: new RecordUpdateService(this),\n filtering: new Filtering(this),\n selection: new Selection(this),\n metadata: new Metadata(this),\n sorting: new Sorting(this),\n paging: new Paging(this)\n }\n this._initialPageSize = this.paging.pageSize;\n this._maxHeight = this._getMaxHeight();\n\n };\n public get isNavigationEnabled() {\n //enabled by default\n return this.parameters.EnableNavigation?.raw !== false;\n }\n public get isEditable() {\n return this._columns.find(x => x.isEditable) ? true : false;\n }\n public get parameters() {\n return this._props.parameters\n }\n public get error() {\n return this._dataset.error;\n }\n public get errorMessage() {\n return this._dataset.errorMessage\n }\n public get labels() {\n return this._labels;\n }\n public get dataset() {\n return this._dataset;\n }\n public get pcfContext() {\n return this._pcfContext;\n }\n public get props() {\n return this._props;\n }\n public get columns() {\n return this._columns;\n }\n public get records() {\n return this._records\n }\n public get recordUpdateService() {\n return this._dependencies.recordUpdateService;\n }\n public get sorting() {\n return this._dependencies.sorting;\n }\n public get metadata() {\n return this._dependencies.metadata;\n }\n public get filtering() {\n return this._dependencies.filtering;\n }\n public get selection() {\n return this._dependencies.selection;\n }\n public get paging() {\n return this._dependencies.paging;\n }\n public get shouldRerender() {\n return this._shouldRerender;\n }\n public get loading() {\n return this._dataset.loading;\n }\n public get state() {\n return this._props.state;\n }\n public get useContainerAsHeight() {\n return this.parameters.UseContainerAsHeight?.raw === true;\n }\n public get enableOptionSetColors() {\n return this.parameters.EnableOptionSetColors?.raw === true;\n }\n public get linking() {\n return this.dataset.linking;\n }\n public get inlineRibbonButtonIds() {\n const idString = this.parameters.InlineRibbonButtonIds?.raw;\n if (!idString) {\n return undefined;\n }\n return idString.split(',');\n }\n\n public get height() {\n let height = this._maxHeight;\n if (this.parameters.Height?.raw) {\n return this.parameters.Height?.raw;\n }\n if (this._records.length === 0) {\n height = this._minHeight;\n }\n else if (this._records.length <= this._initialPageSize) {\n height = this._records.length * ROW_HEIGHT;\n }\n if (height > this._maxHeight) {\n height = this._maxHeight;\n }\n return `${height}px`;\n\n }\n\n public openDatasetItem(entityReference: ComponentFramework.EntityReference) {\n this._dataset.openDatasetItem(entityReference);\n const clickedRecord = this.records.find(x => x.getRecordId() === entityReference.id.guid);\n //we need to make sure the item we are opening gets selected in order for the\n //OnOpenRecord ribbon scripts to work correctly\n //if no record found we have clicked a lookup, no selection should be happening in that case\n if (clickedRecord) {\n this.selection.toggle(clickedRecord, true, true, true);\n }\n }\n\n public updateDependencies(props: IGrid): void {\n this._props = props;\n this._dataset = props.parameters.Grid;\n this._pcfContext = props.context;\n //THIS COULD MAKE GRID STOP WORKING IN POWER APPS!\n if (this._previousRecordsReference !== this._dataset.records) {\n this._records = Object.values(this._dataset.records);\n this._previousRecordsReference = this._dataset.records;\n }\n Object.values(this._dependencies).map(dep => {\n dep.onDependenciesUpdated()\n })\n this._shouldRerender = !this.shouldRerender;\n }\n public async refreshColumns(): Promise<IGridColumn[]> {\n const gridColumns: IGridColumn[] = [];\n for (const column of this._dataset.columns) {\n const sorted = this._dataset.sorting?.find(sort => sort.name === column.name);\n const gridColumn: IGridColumn = {\n ...column,\n isEditable: await this._isColumnEditable(column),\n isRequired: await this._isColumnRequired(column),\n isFilterable: await this._isColumnFilterable(column),\n disableSorting: !this._isColumnSortable(column),\n isSortedDescending: sorted?.sortDirection === 1 ? true : false,\n isResizable: true,\n isSorted: sorted ? true : false,\n isFiltered: false\n }\n const condition = await this.filtering.condition(gridColumn);\n gridColumn.isFiltered = condition.isAppliedToDataset;\n gridColumns.push(gridColumn);\n }\n if (this.selection.type !== undefined) {\n gridColumns.unshift({\n name: CHECKBOX_COLUMN_KEY,\n alias: CHECKBOX_COLUMN_KEY,\n dataType: DataTypes.SingleLineText,\n displayName: '',\n isEditable: true,\n isFilterable: false,\n isFiltered: false,\n isRequired: false,\n isResizable: false,\n disableSorting: true,\n isSorted: false,\n isSortedDescending: false,\n order: 0,\n visualSizeFactor: 45,\n });\n }\n this._columns = gridColumns;\n return gridColumns;\n }\n\n private async _isColumnEditable(column: IColumn): Promise<boolean> {\n //only allow editing if specifically allowed\n if (!this._props.parameters.EnableEditing?.raw) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n //these field types do not support editing\n switch (column.dataType) {\n case DataType.FILE:\n case DataType.IMAGE: {\n return false;\n }\n }\n const attributeName = Attribute.GetNameFromAlias(column.name);\n const metadata = await this.metadata.get(column.name);\n return metadata.Attributes.get(attributeName)?.attributeDescriptor?.IsValidForUpdate ?? false;\n }\n\n private async _isColumnRequired(column: IColumn): Promise<boolean> {\n if (!this.parameters.EnableEditing?.raw) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n const metadata = await this.metadata.get(column.name);\n const attributeName = Attribute.GetNameFromAlias(column.name);\n const requiredLevel = metadata.Attributes.get(attributeName)?.attributeDescriptor?.RequiredLevel;\n if (requiredLevel === 1 || requiredLevel === 2) {\n return true;\n }\n return false;\n }\n private _isColumnSortable(column: IColumn): boolean {\n if (column.name.endsWith('__virtual')) {\n return false;\n }\n if (this._props.parameters.EnableSorting?.raw === false) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n switch (column.dataType) {\n case DataType.IMAGE: {\n return false;\n }\n }\n if(column.disableSorting === undefined) {\n return true;\n }\n return !column.disableSorting;\n }\n private async _isColumnFilterable(column: IColumn): Promise<boolean> {\n if (column.name.endsWith('__virtual')) {\n return false;\n }\n if (this.props.parameters.EnableFiltering?.raw === false) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n const metadata = await this.metadata.get(column.name);\n const attributeName = Attribute.GetNameFromAlias(column.name);\n return metadata.Attributes.get(attributeName)?.attributeDescriptor?.isFilterable ?? true;\n }\n private _getMaxHeight(): number {\n let maxHeight = this._initialPageSize * ROW_HEIGHT;\n if (maxHeight > 600) {\n maxHeight = 600;\n }\n return maxHeight;\n }\n}"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Grid.js","sources":["../../../../../src/components/Grid/core/model/Grid.ts"],"sourcesContent":["import { Attribute, Constants, DataTypes, IColumn, IDataset, IRecord } from \"@talxis/client-libraries\";\nimport { Filtering } from \"../../filtering/model/Filtering\";\nimport { IGrid } from \"../../interfaces\";\nimport { Paging } from \"../../paging/model/Paging\";\nimport { Selection } from \"../../selection/model/Selection\";\nimport { Sorting } from \"../../sorting/Sorting\";\nimport { DataType } from \"../enums/DataType\";\nimport { KeyHoldListener } from \"../services/KeyListener\";\nimport { Metadata } from \"./Metadata\";\nimport { CHECKBOX_COLUMN_KEY } from \"../../constants\";\nimport { IGridColumn } from \"../interfaces/IGridColumn\";\n\nconst DEFAULT_ROW_HEIGHT = 42;\n\nexport class Grid {\n private _props: IGrid;\n private _dataset: IDataset\n private _pcfContext: ComponentFramework.Context<any>;\n private _columns: IGridColumn[] = [];\n //used for optimization\n private _previousRecordsReference: {\n [id: string]: IRecord;\n } = {};\n //TODO: fix types\n private _labels: any;\n private _shouldRerender: boolean = false;\n private _records: IRecord[] = [];\n //TODO: the dependencies might not have fully loaded grid\n //need to make sure that the grid is initialized before creating them\n private _dependencies: {\n filtering: Filtering,\n sorting: Sorting,\n metadata: Metadata,\n selection: Selection,\n paging: Paging,\n };\n private _maxHeight: number;\n private _minHeight: number = 150;\n private _initialPageSize: number;\n public readonly keyHoldListener: KeyHoldListener;\n\n constructor(props: IGrid, labels: any, keyHoldListener: KeyHoldListener) {\n this._props = props;\n this._dataset = props.parameters.Grid;\n this._pcfContext = props.context;\n this._labels = labels;\n this.keyHoldListener = keyHoldListener;\n\n this._dependencies = {\n filtering: new Filtering(this),\n selection: new Selection(this),\n metadata: new Metadata(this),\n sorting: new Sorting(this),\n paging: new Paging(this),\n }\n this._initialPageSize = this.paging.pageSize;\n this._maxHeight = this._getMaxHeight();\n\n };\n public get isNavigationEnabled() {\n //enabled by default\n return this.parameters.EnableNavigation?.raw !== false;\n }\n public get isEditable() {\n return this._columns.find(x => x.isEditable) ? true : false;\n }\n public get parameters() {\n return this._props.parameters\n }\n public get error() {\n return this._dataset.error;\n }\n public get errorMessage() {\n return this._dataset.errorMessage\n }\n public get labels() {\n return this._labels;\n }\n public get dataset() {\n return this._dataset;\n }\n public get pcfContext() {\n return this._pcfContext;\n }\n public get props() {\n return this._props;\n }\n public get columns() {\n return this._columns;\n }\n public get records() {\n return this._records\n }\n public get sorting() {\n return this._dependencies.sorting;\n }\n public get metadata() {\n return this._dependencies.metadata;\n }\n public get filtering() {\n return this._dependencies.filtering;\n }\n public get selection() {\n return this._dependencies.selection;\n }\n public get paging() {\n return this._dependencies.paging;\n }\n public get shouldRerender() {\n return this._shouldRerender;\n }\n public get loading() {\n return this._dataset.loading;\n }\n public get state() {\n return this._props.state;\n }\n public get useContainerAsHeight() {\n return this.parameters.UseContainerAsHeight?.raw === true;\n }\n public get enableOptionSetColors() {\n return this.parameters.EnableOptionSetColors?.raw === true;\n }\n public get linking() {\n return this.dataset.linking;\n }\n public get inlineRibbonButtonIds() {\n const idString = this.parameters.InlineRibbonButtonIds?.raw;\n if (!idString) {\n return undefined;\n }\n return idString.split(',');\n }\n\n public get rowHeight() {\n let height = this.parameters.RowHeight?.raw;\n if(!height) {\n height = DEFAULT_ROW_HEIGHT;\n }\n return height;\n }\n\n public get height() {\n let height = this._maxHeight;\n if (this.parameters.Height?.raw) {\n return this.parameters.Height?.raw;\n }\n if (this._records.length === 0) {\n height = this._minHeight;\n }\n else if (this._records.length <= this._initialPageSize) {\n height = this._records.length * this.rowHeight;\n }\n if (height > this._maxHeight) {\n height = this._maxHeight;\n }\n return `${height}px`;\n\n }\n\n public openDatasetItem(entityReference: ComponentFramework.EntityReference) {\n this._dataset.openDatasetItem(entityReference);\n const clickedRecord = this.records.find(x => x.getRecordId() === entityReference.id.guid);\n //we need to make sure the item we are opening gets selected in order for the\n //OnOpenRecord ribbon scripts to work correctly\n //if no record found we have clicked a lookup, no selection should be happening in that case\n if (clickedRecord) {\n this.selection.toggle(clickedRecord, true, true, true);\n }\n }\n\n public updateDependencies(props: IGrid): void {\n this._props = props;\n this._dataset = props.parameters.Grid;\n this._pcfContext = props.context;\n //THIS COULD MAKE GRID STOP WORKING IN POWER APPS!\n if (this._previousRecordsReference !== this._dataset.records) {\n this._records = Object.values(this._dataset.records);\n this._previousRecordsReference = this._dataset.records;\n }\n Object.values(this._dependencies).map(dep => {\n dep.onDependenciesUpdated()\n })\n this._shouldRerender = !this.shouldRerender;\n }\n public async refreshColumns(): Promise<IGridColumn[]> {\n const gridColumns: IGridColumn[] = [];\n for (const column of this._dataset.columns) {\n const sorted = this._dataset.sorting?.find(sort => sort.name === column.name);\n const gridColumn: IGridColumn = {\n ...column,\n isEditable: await this._isColumnEditable(column),\n isRequired: await this._isColumnRequired(column),\n isFilterable: await this._isColumnFilterable(column),\n disableSorting: !this._isColumnSortable(column),\n isSortedDescending: sorted?.sortDirection === 1 ? true : false,\n isResizable: true,\n isSorted: sorted ? true : false,\n isFiltered: false\n }\n const condition = await this.filtering.condition(gridColumn);\n gridColumn.isFiltered = condition.isAppliedToDataset;\n gridColumns.push(gridColumn);\n }\n if (this.selection.type !== undefined) {\n gridColumns.unshift({\n name: CHECKBOX_COLUMN_KEY,\n alias: CHECKBOX_COLUMN_KEY,\n dataType: DataTypes.SingleLineText,\n displayName: '',\n isEditable: true,\n isFilterable: false,\n isFiltered: false,\n isRequired: false,\n isResizable: false,\n disableSorting: true,\n isSorted: false,\n isSortedDescending: false,\n order: 0,\n visualSizeFactor: 45,\n });\n }\n this._columns = gridColumns;\n return gridColumns;\n }\n\n private async _isColumnEditable(column: IColumn): Promise<boolean> {\n //only allow editing if specifically allowed\n if (!this._props.parameters.EnableEditing?.raw) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n //these field types do not support editing\n switch (column.dataType) {\n case DataType.FILE:\n case DataType.IMAGE: {\n return false;\n }\n }\n const attributeName = Attribute.GetNameFromAlias(column.name);\n const metadata = await this.metadata.get(column.name);\n return metadata.Attributes.get(attributeName)?.attributeDescriptor?.IsValidForUpdate ?? false;\n }\n\n private async _isColumnRequired(column: IColumn): Promise<boolean> {\n if (!this.parameters.EnableEditing?.raw) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n const metadata = await this.metadata.get(column.name);\n const attributeName = Attribute.GetNameFromAlias(column.name);\n const requiredLevel = metadata.Attributes.get(attributeName)?.attributeDescriptor?.RequiredLevel;\n if (requiredLevel === 1 || requiredLevel === 2) {\n return true;\n }\n return false;\n }\n private _isColumnSortable(column: IColumn): boolean {\n if (column.name.endsWith('__virtual')) {\n return false;\n }\n if (this._props.parameters.EnableSorting?.raw === false) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n switch (column.dataType) {\n case DataType.IMAGE: {\n return false;\n }\n }\n if(column.disableSorting === undefined) {\n return true;\n }\n return !column.disableSorting;\n }\n private async _isColumnFilterable(column: IColumn): Promise<boolean> {\n if (column.name.endsWith('__virtual')) {\n return false;\n }\n if (this.props.parameters.EnableFiltering?.raw === false) {\n return false;\n }\n if (column.name === Constants.RIBBON_BUTTONS_COLUMN_NAME) {\n return false;\n }\n const metadata = await this.metadata.get(column.name);\n const attributeName = Attribute.GetNameFromAlias(column.name);\n return metadata.Attributes.get(attributeName)?.attributeDescriptor?.isFilterable ?? true;\n }\n private _getMaxHeight(): number {\n let maxHeight = this._initialPageSize * this.rowHeight;\n if (maxHeight > 600) {\n maxHeight = 600;\n }\n return maxHeight;\n }\n}"],"names":[],"mappings":"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"}
|