@pega/dx-component-builder-sdk 24.2.13 → 24.2.15
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/package.json +1 -1
- package/src/tasks/create/templates/SDK-React/field/Icon-Button-URL/index.tsx.mustache +1 -1
- package/src/tasks/create/templates/SDK-React/field/Picklist/index.tsx.mustache +7 -4
- package/src/tasks/create/templates/SDK-React/field/Picklist-RadioButtons/index.tsx.mustache +3 -2
- package/src/tasks/create/templates/SDK-React/widget/PAGE-CASE/index.tsx.mustache +1 -0
- package/src/tasks/publish/helper.js +1 -1
- package/tests/assets/sdk-r/components/create/custom-constellation/field/Pega_DXIL_MyTestText/demo.stories.tsx +0 -1
- package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/FieldValueList/FieldValueList.tsx +2 -2
- package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/RichTextEditor/RichTextEditor.tsx +4 -4
- package/tests/assets/sdk-r/components/create/override-sdk/field/CancelAlert/CancelAlert.tsx +1 -4
- package/tests/assets/sdk-r/components/create/override-sdk/field/Currency/Currency.tsx +8 -5
- package/tests/assets/sdk-r/components/create/override-sdk/field/Date/Date.tsx +5 -1
- package/tests/assets/sdk-r/components/create/override-sdk/field/DateTime/DateTime.tsx +13 -5
- package/tests/assets/sdk-r/components/create/override-sdk/field/Decimal/Decimal.tsx +7 -2
- package/tests/assets/sdk-r/components/create/override-sdk/field/Dropdown/Dropdown.tsx +34 -24
- package/tests/assets/sdk-r/components/create/override-sdk/field/Percentage/Percentage.tsx +6 -2
- package/tests/assets/sdk-r/components/create/override-sdk/field/RadioButtons/RadioButtons.tsx +3 -5
- package/tests/assets/sdk-r/components/create/override-sdk/field/ScalarList/ScalarList.tsx +1 -2
- package/tests/assets/sdk-r/components/create/override-sdk/field/Time/Time.tsx +1 -1
- package/tests/assets/sdk-r/components/create/override-sdk/field/UserReference/UserReference.tsx +1 -3
- package/tests/assets/sdk-r/components/create/override-sdk/infra/Assignment/Assignment.tsx +2 -6
- package/tests/assets/sdk-r/components/create/override-sdk/infra/DashboardFilter/DashboardFilter.tsx +2 -3
- package/tests/assets/sdk-r/components/create/override-sdk/infra/DashboardFilter/filterUtils.tsx +1 -3
- package/tests/assets/sdk-r/components/create/override-sdk/infra/DeferLoad/DeferLoad.tsx +5 -5
- package/tests/assets/sdk-r/components/create/override-sdk/infra/FlowContainer/FlowContainer.tsx +18 -108
- package/tests/assets/sdk-r/components/create/override-sdk/infra/FlowContainer/helpers.ts +1 -5
- package/tests/assets/sdk-r/components/create/override-sdk/infra/ModalViewContainer/ListViewActionButtons/ListViewActionButtons.tsx +3 -1
- package/tests/assets/sdk-r/components/create/override-sdk/infra/MultiStep/MultiStep.tsx +1 -6
- package/tests/assets/sdk-r/components/create/override-sdk/infra/RootContainer/RootContainer.tsx +1 -1
- package/tests/assets/sdk-r/components/create/override-sdk/infra/SimpleView/helper.ts +1 -1
- package/tests/assets/sdk-r/components/create/override-sdk/template/AppShell/AppShell.tsx +6 -6
- package/tests/assets/sdk-r/components/create/override-sdk/template/CaseView/CaseView.tsx +5 -4
- package/tests/assets/sdk-r/components/create/override-sdk/template/Confirmation/Confirmation.tsx +1 -1
- package/tests/assets/sdk-r/components/create/override-sdk/template/DynamicTabs/DynamicTabs.tsx +0 -1
- package/tests/assets/sdk-r/components/create/override-sdk/template/FieldGroupTemplate/FieldGroupTemplate.tsx +10 -5
- package/tests/assets/sdk-r/components/create/override-sdk/template/ListView/ListView.tsx +13 -9
- package/tests/assets/sdk-r/components/create/override-sdk/template/ListView/hooks.ts +2 -0
- package/tests/assets/sdk-r/components/create/override-sdk/template/ListView/utils.ts +0 -1
- package/tests/assets/sdk-r/components/create/override-sdk/template/PromotedFilters/PromotedFilters.tsx +0 -1
- package/tests/assets/sdk-r/components/create/override-sdk/template/SimpleTable/SimpleTable.tsx +0 -2
- package/tests/assets/sdk-r/components/create/override-sdk/template/SimpleTableManual/SimpleTableManual.tsx +111 -94
- package/tests/assets/sdk-r/components/create/override-sdk/template/SimpleTableSelect/SimpleTableSelect.tsx +2 -4
- package/tests/assets/sdk-r/components/create/override-sdk/widget/Attachment/Attachment.css +1 -0
- package/tests/assets/sdk-r/components/create/override-sdk/widget/Attachment/Attachment.tsx +91 -73
- package/tests/assets/sdk-r/components/create/override-sdk/widget/FileUtility/FileUtility.tsx +1 -1
- package/tests/assets/sdk-r/components/create/override-sdk/widget/QuickCreate/QuickCreate.tsx +0 -1
- package/tests/assets/sdk-r/components/create/override-sdk/widget/SummaryItem/SummaryItem.tsx +1 -1
- package/tests/assets/sdk-r/components/create/override-sdk/widget/ToDo/ToDo.tsx +1 -1
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyCurrency/demo.stories.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyDate/demo.stories.tsx +0 -16
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyDateTime/demo.stories.tsx +0 -17
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyDecimal/demo.stories.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyEmail/demo.stories.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyEmail/mock.ts +1 -0
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyIconButtonURL/demo.stories.tsx +9 -20
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyParagraph/demo.stories.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyPercentage/demo.stories.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyPercentage/mock.ts +1 -0
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyPhone/demo.stories.tsx +1 -2
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyPicklist/demo.stories.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyRadiobuttons/demo.stories.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MySearchbox/demo.stories.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyText/demo.stories.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyTextInput/demo.stories.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyTimeOfDay/demo.stories.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyURL/demo.stories.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/demo.stories.tsx +10 -0
- package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyPage/demo.stories.tsx +1 -13
- package/tests/assets/sdk-r/components/createAll/custom-constellation/widget/Pega_DXIL_MyCaseWidget/demo.stories.tsx +10 -32
- package/tests/assets/sdk-r/components/createAll/custom-constellation/widget/Pega_DXIL_MyPageCaseWidget/demo.stories.tsx +10 -22
- package/tests/assets/sdk-r/components/createAll/custom-constellation/widget/Pega_DXIL_MyPageWidget/demo.stories.tsx +10 -21
- package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyCurrency/demo.stories.tsx +0 -14
- package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDate/demo.stories.tsx +0 -24
- package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDateTime/demo.stories.tsx +0 -24
- package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDecimal/demo.stories.tsx +0 -14
- package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyIconButtonURL/demo.stories.tsx +2 -6
- package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyIconButtonURL/index.tsx +1 -1
- package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPercentage/demo.stories.tsx +0 -14
- package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPicklist/index.tsx +7 -4
- package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyRadiobuttons/index.tsx +3 -2
- package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyDetails/demo.stories.tsx +8 -28
- package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyForm/demo.stories.tsx +10 -16
- package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyTwoColumnDetails/demo.stories.tsx +8 -28
- package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyCaseWidget/demo.stories.tsx +10 -20
- package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageCaseWidget/demo.stories.tsx +10 -20
- package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageCaseWidget/index.tsx +1 -0
- package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageWidget/demo.stories.tsx +9 -19
- package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/FieldValueList/FieldValueList.tsx +2 -2
- package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/RichTextEditor/RichTextEditor.tsx +4 -4
- package/tests/assets/sdk-r/components/createAll/override-sdk/field/CancelAlert/CancelAlert.tsx +1 -4
- package/tests/assets/sdk-r/components/createAll/override-sdk/field/Currency/Currency.tsx +8 -5
- package/tests/assets/sdk-r/components/createAll/override-sdk/field/Date/Date.tsx +5 -1
- package/tests/assets/sdk-r/components/createAll/override-sdk/field/DateTime/DateTime.tsx +13 -5
- package/tests/assets/sdk-r/components/createAll/override-sdk/field/Decimal/Decimal.tsx +7 -2
- package/tests/assets/sdk-r/components/createAll/override-sdk/field/Dropdown/Dropdown.tsx +34 -24
- package/tests/assets/sdk-r/components/createAll/override-sdk/field/Percentage/Percentage.tsx +6 -2
- package/tests/assets/sdk-r/components/createAll/override-sdk/field/RadioButtons/RadioButtons.tsx +3 -5
- package/tests/assets/sdk-r/components/createAll/override-sdk/field/ScalarList/ScalarList.tsx +1 -2
- package/tests/assets/sdk-r/components/createAll/override-sdk/field/Time/Time.tsx +1 -1
- package/tests/assets/sdk-r/components/createAll/override-sdk/field/UserReference/UserReference.tsx +1 -3
- package/tests/assets/sdk-r/components/createAll/override-sdk/infra/Assignment/Assignment.tsx +2 -6
- package/tests/assets/sdk-r/components/createAll/override-sdk/infra/DashboardFilter/DashboardFilter.tsx +2 -3
- package/tests/assets/sdk-r/components/createAll/override-sdk/infra/DashboardFilter/filterUtils.tsx +1 -3
- package/tests/assets/sdk-r/components/createAll/override-sdk/infra/DeferLoad/DeferLoad.tsx +5 -5
- package/tests/assets/sdk-r/components/createAll/override-sdk/infra/FlowContainer/FlowContainer.tsx +18 -108
- package/tests/assets/sdk-r/components/createAll/override-sdk/infra/FlowContainer/helpers.ts +1 -5
- package/tests/assets/sdk-r/components/createAll/override-sdk/infra/ModalViewContainer/ListViewActionButtons/ListViewActionButtons.tsx +3 -1
- package/tests/assets/sdk-r/components/createAll/override-sdk/infra/MultiStep/MultiStep.tsx +1 -6
- package/tests/assets/sdk-r/components/createAll/override-sdk/infra/RootContainer/RootContainer.tsx +1 -1
- package/tests/assets/sdk-r/components/createAll/override-sdk/infra/SimpleView/helper.ts +1 -1
- package/tests/assets/sdk-r/components/createAll/override-sdk/template/AppShell/AppShell.tsx +6 -6
- package/tests/assets/sdk-r/components/createAll/override-sdk/template/CaseView/CaseView.tsx +5 -4
- package/tests/assets/sdk-r/components/createAll/override-sdk/template/Confirmation/Confirmation.tsx +1 -1
- package/tests/assets/sdk-r/components/createAll/override-sdk/template/DynamicTabs/DynamicTabs.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/override-sdk/template/FieldGroupTemplate/FieldGroupTemplate.tsx +10 -5
- package/tests/assets/sdk-r/components/createAll/override-sdk/template/ListView/ListView.tsx +13 -9
- package/tests/assets/sdk-r/components/createAll/override-sdk/template/ListView/hooks.ts +2 -0
- package/tests/assets/sdk-r/components/createAll/override-sdk/template/ListView/utils.ts +0 -1
- package/tests/assets/sdk-r/components/createAll/override-sdk/template/PromotedFilters/PromotedFilters.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/override-sdk/template/SimpleTable/SimpleTable.tsx +0 -2
- package/tests/assets/sdk-r/components/createAll/override-sdk/template/SimpleTableManual/SimpleTableManual.tsx +111 -94
- package/tests/assets/sdk-r/components/createAll/override-sdk/template/SimpleTableSelect/SimpleTableSelect.tsx +2 -4
- package/tests/assets/sdk-r/components/createAll/override-sdk/widget/Attachment/Attachment.css +1 -0
- package/tests/assets/sdk-r/components/createAll/override-sdk/widget/Attachment/Attachment.tsx +91 -73
- package/tests/assets/sdk-r/components/createAll/override-sdk/widget/FileUtility/FileUtility.tsx +1 -1
- package/tests/assets/sdk-r/components/createAll/override-sdk/widget/QuickCreate/QuickCreate.tsx +0 -1
- package/tests/assets/sdk-r/components/createAll/override-sdk/widget/SummaryItem/SummaryItem.tsx +1 -1
- package/tests/assets/sdk-r/components/createAll/override-sdk/widget/ToDo/ToDo.tsx +1 -1
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable no-nested-ternary */
|
|
2
1
|
import React, { PropsWithChildren, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
|
3
2
|
import Table from '@mui/material/Table';
|
|
4
3
|
import TableBody from '@mui/material/TableBody';
|
|
@@ -28,6 +27,7 @@ import createPConnectComponent from '@pega/react-sdk-components/lib/bridge/react
|
|
|
28
27
|
import { Utils } from '@pega/react-sdk-components/lib/components/helpers/utils';
|
|
29
28
|
import { getReferenceList } from '@pega/react-sdk-components/lib/components/helpers/field-group-utils';
|
|
30
29
|
import { getDataPage } from '@pega/react-sdk-components/lib/components/helpers/data_page';
|
|
30
|
+
import { getGenericFieldsLocalizedValue } from '@pega/react-sdk-components/lib/components/helpers/common-utils';
|
|
31
31
|
import { buildFieldsForTable, filterData, getContext } from '@pega/react-sdk-components/lib/components/helpers/simpleTableHelpers';
|
|
32
32
|
import { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
|
|
33
33
|
import { format } from '@pega/react-sdk-components/lib/components/helpers/formatters';
|
|
@@ -52,12 +52,27 @@ interface SimpleTableManualProps extends PConnProps {
|
|
|
52
52
|
displayMode?: string;
|
|
53
53
|
useSeparateViewForEdit: any;
|
|
54
54
|
viewForEditModal: any;
|
|
55
|
+
validatemessage?: string;
|
|
56
|
+
required?: boolean;
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
const useStyles = makeStyles((/* theme */) => ({
|
|
58
60
|
label: {
|
|
59
61
|
margin: '8px'
|
|
60
62
|
},
|
|
63
|
+
tableLabel: {
|
|
64
|
+
'&::after': {
|
|
65
|
+
display: 'inline',
|
|
66
|
+
content: '" *"',
|
|
67
|
+
verticalAlign: 'top',
|
|
68
|
+
color: 'var(--app-error-color)'
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
message: {
|
|
72
|
+
margin: '8px',
|
|
73
|
+
color: 'var(--app-error-color)',
|
|
74
|
+
fontSize: '14px'
|
|
75
|
+
},
|
|
61
76
|
header: {
|
|
62
77
|
background: '#f5f5f5'
|
|
63
78
|
},
|
|
@@ -85,9 +100,6 @@ let menuColumnId = '';
|
|
|
85
100
|
let menuColumnType = '';
|
|
86
101
|
let menuColumnLabel = '';
|
|
87
102
|
|
|
88
|
-
const filterByColumns: any[] = [];
|
|
89
|
-
let myRows: any[];
|
|
90
|
-
|
|
91
103
|
export default function SimpleTableManual(props: PropsWithChildren<SimpleTableManualProps>) {
|
|
92
104
|
const classes = useStyles();
|
|
93
105
|
const {
|
|
@@ -110,7 +122,9 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
110
122
|
editModeConfig,
|
|
111
123
|
displayMode,
|
|
112
124
|
useSeparateViewForEdit,
|
|
113
|
-
viewForEditModal
|
|
125
|
+
viewForEditModal,
|
|
126
|
+
required,
|
|
127
|
+
validatemessage
|
|
114
128
|
} = props;
|
|
115
129
|
const pConn = getPConnect();
|
|
116
130
|
const [rowData, setRowData] = useState([]);
|
|
@@ -130,7 +144,10 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
130
144
|
const [displayDialogDateFilter, setDisplayDialogDateFilter] = useState<string>('notequal');
|
|
131
145
|
const [displayDialogDateValue, setDisplayDialogDateValue] = useState<string>('');
|
|
132
146
|
const selectedRowIndex: any = useRef(null);
|
|
133
|
-
|
|
147
|
+
const myRowsRef = useRef<any[]>([]);
|
|
148
|
+
const filterByColumnsRef = useRef<any[]>([]);
|
|
149
|
+
const localizedVal = PCore.getLocaleUtils().getLocaleValue;
|
|
150
|
+
const localeCategory = 'SimpleTable';
|
|
134
151
|
const parameters = fieldMetadata?.datasource?.parameters;
|
|
135
152
|
const { referenceListStr } = getContext(getPConnect());
|
|
136
153
|
const label = labelProp || propertyLabel;
|
|
@@ -176,13 +193,8 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
176
193
|
});
|
|
177
194
|
|
|
178
195
|
useEffect(() => {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
buildElementsForTable();
|
|
182
|
-
}
|
|
183
|
-
}, [referenceList.length]);
|
|
184
|
-
|
|
185
|
-
useEffect(() => {
|
|
196
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
197
|
+
buildElementsForTable();
|
|
186
198
|
if (readOnlyMode || allowEditingInModal) {
|
|
187
199
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
188
200
|
generateRowsData();
|
|
@@ -201,10 +213,10 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
201
213
|
if (allowEditingInModal) {
|
|
202
214
|
getPConnect()
|
|
203
215
|
.getListActions()
|
|
204
|
-
// @ts-ignore - An argument for 'uniqueField' was not provided.
|
|
205
216
|
.initDefaultPageInstructions(
|
|
206
217
|
getPConnect().getReferenceList(),
|
|
207
|
-
|
|
218
|
+
// Temporary filter for attachments to align with constellation payload behavior.
|
|
219
|
+
fieldDefs.filter(item => item.name && item.meta?.type !== 'Attachment').map(item => item.name)
|
|
208
220
|
);
|
|
209
221
|
} else {
|
|
210
222
|
// @ts-ignore - An argument for 'fields' was not provided
|
|
@@ -238,8 +250,10 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
238
250
|
// See what data (if any) we have to display
|
|
239
251
|
const refKeys: string[] = inColKey?.split('.');
|
|
240
252
|
let valBuilder = inRowData;
|
|
253
|
+
let index = 0;
|
|
241
254
|
for (const key of refKeys) {
|
|
242
|
-
|
|
255
|
+
index += 1;
|
|
256
|
+
valBuilder = valBuilder[key] !== undefined || index === refKeys.length ? valBuilder[key] : valBuilder;
|
|
243
257
|
}
|
|
244
258
|
return getFormattedValue(valBuilder, inColKey);
|
|
245
259
|
}
|
|
@@ -247,21 +261,25 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
247
261
|
const formatRowsData = data => {
|
|
248
262
|
if (!data) return {};
|
|
249
263
|
|
|
250
|
-
return data.map(item => {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
return
|
|
254
|
-
}, {});
|
|
264
|
+
return data.map((item, idx) => {
|
|
265
|
+
const dataForRow = displayedColumns.reduce((acc, colKey) => {
|
|
266
|
+
acc[colKey] = getRowValue(item, colKey);
|
|
267
|
+
return acc;
|
|
268
|
+
}, {} as any);
|
|
269
|
+
dataForRow.__originalIndex = idx;
|
|
270
|
+
return dataForRow;
|
|
255
271
|
});
|
|
256
272
|
};
|
|
257
273
|
|
|
258
274
|
function generateRowsData() {
|
|
275
|
+
myRowsRef.current = [];
|
|
276
|
+
|
|
259
277
|
// if referenceList is empty and dataPageName property value exists then make a datapage fetch call and get the list of data.
|
|
260
278
|
if (!referenceList.length && dataPageName) {
|
|
261
279
|
getDataPage(dataPageName, parameters, context)
|
|
262
280
|
.then(listData => {
|
|
263
281
|
const data = formatRowsData(listData);
|
|
264
|
-
|
|
282
|
+
myRowsRef.current = data || [];
|
|
265
283
|
setRowData(data);
|
|
266
284
|
})
|
|
267
285
|
.catch(e => {
|
|
@@ -273,16 +291,19 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
273
291
|
// in the table. So, iterate over referenceList to create the dataRows that
|
|
274
292
|
// we're using as the table's dataSource
|
|
275
293
|
const data: any = [];
|
|
276
|
-
|
|
277
|
-
const dataForRow:
|
|
294
|
+
referenceList.forEach((row, idx) => {
|
|
295
|
+
const dataForRow: any = {};
|
|
278
296
|
for (const col of displayedColumns) {
|
|
279
297
|
const colKey: string = col;
|
|
280
298
|
const theVal = getRowValue(row, colKey);
|
|
281
299
|
dataForRow[colKey] = theVal || '';
|
|
282
300
|
}
|
|
301
|
+
// Preserve the original position so stableSort can look up the right
|
|
302
|
+
// entry in `elements` even after filtering shrinks rowData.
|
|
303
|
+
dataForRow.__originalIndex = idx;
|
|
283
304
|
data.push(dataForRow);
|
|
284
|
-
|
|
285
|
-
|
|
305
|
+
});
|
|
306
|
+
myRowsRef.current = data;
|
|
286
307
|
setRowData(data);
|
|
287
308
|
}
|
|
288
309
|
}
|
|
@@ -306,9 +327,9 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
306
327
|
if (allowEditingInModal && defaultView) {
|
|
307
328
|
pConn
|
|
308
329
|
.getActionsApi()
|
|
330
|
+
// @ts-ignore
|
|
309
331
|
.openEmbeddedDataModal(defaultView, pConn, referenceListStr, referenceList.length, PCore.getConstants().RESOURCE_STATUS.CREATE);
|
|
310
332
|
} else {
|
|
311
|
-
// @ts-ignore - An argument for 'pageRef' was not provided.
|
|
312
333
|
pConn.getListActions().insert({ classID: contextClass }, referenceList.length);
|
|
313
334
|
}
|
|
314
335
|
|
|
@@ -322,6 +343,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
322
343
|
if (typeof selectedRowIndex.current === 'number') {
|
|
323
344
|
pConn
|
|
324
345
|
.getActionsApi()
|
|
346
|
+
// @ts-ignore
|
|
325
347
|
.openEmbeddedDataModal(
|
|
326
348
|
bUseSeparateViewForEdit ? editView : defaultView,
|
|
327
349
|
pConn,
|
|
@@ -334,12 +356,10 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
334
356
|
|
|
335
357
|
const deleteRecord = () => {
|
|
336
358
|
setEditAnchorEl(null);
|
|
337
|
-
// @ts-ignore - An argument for 'pageRef' was not provided.
|
|
338
359
|
pConn.getListActions().deleteEntry(selectedRowIndex.current);
|
|
339
360
|
};
|
|
340
361
|
|
|
341
362
|
const deleteRecordFromInlineEditable = (index: number) => {
|
|
342
|
-
// @ts-ignore - An argument for 'pageRef' was not provided.
|
|
343
363
|
pConn.getListActions().deleteEntry(index);
|
|
344
364
|
};
|
|
345
365
|
|
|
@@ -349,7 +369,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
349
369
|
const data: any = [];
|
|
350
370
|
rawFields.forEach(item => {
|
|
351
371
|
// removing label field from config to hide title in the table cell
|
|
352
|
-
item = { ...item, config: { ...item.config, label: '' } };
|
|
372
|
+
item = { ...item, config: { ...item.config, label: '', displayMode: readOnlyMode || allowEditingInModal ? 'DISPLAY_ONLY' : undefined } };
|
|
353
373
|
const referenceListData = getReferenceList(pConn);
|
|
354
374
|
const isDatapage = referenceListData.startsWith('D_');
|
|
355
375
|
const pageReferenceValue = isDatapage
|
|
@@ -397,14 +417,15 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
397
417
|
|
|
398
418
|
type Order = 'asc' | 'desc';
|
|
399
419
|
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
orderedBy: Key
|
|
403
|
-
): (a: { [key in Key]: number | string }, b: { [key in Key]: number | string }) => number {
|
|
404
|
-
return theOrder === 'desc' ? (a, b) => descendingComparator(a, b, orderedBy) : (a, b) => -descendingComparator(a, b, orderedBy);
|
|
420
|
+
interface Comparator<T> {
|
|
421
|
+
(a: T, b: T): number;
|
|
405
422
|
}
|
|
406
423
|
|
|
407
|
-
function
|
|
424
|
+
function getComparator<Key extends keyof any, T extends Record<Key, any>>(theOrder: Order, orderedBy: Key): Comparator<T> {
|
|
425
|
+
return theOrder === 'desc' ? (a: T, b: T) => descendingComparator<T>(a, b, orderedBy) : (a: T, b: T) => -descendingComparator<T>(a, b, orderedBy);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
function stableSort<T>(array: T[], comparator: (a: T, b: T) => number): T[] {
|
|
408
429
|
const stabilizedThis = array.map((el, index) => [el, index] as [T, number]);
|
|
409
430
|
stabilizedThis.sort((a, b) => {
|
|
410
431
|
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
@@ -412,8 +433,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
412
433
|
if (order !== 0) return order;
|
|
413
434
|
return a[1] - b[1];
|
|
414
435
|
});
|
|
415
|
-
|
|
416
|
-
return stabilizedThis.map(el => el[0]);
|
|
436
|
+
return stabilizedThis.map(([el]) => el);
|
|
417
437
|
}
|
|
418
438
|
|
|
419
439
|
function _menuClick(event, columnId: string, columnType: string, labelValue: string) {
|
|
@@ -439,7 +459,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
439
459
|
|
|
440
460
|
let bFound = false;
|
|
441
461
|
|
|
442
|
-
for (const filterObj of
|
|
462
|
+
for (const filterObj of filterByColumnsRef.current) {
|
|
443
463
|
if (filterObj.ref === menuColumnId) {
|
|
444
464
|
setFilterBy(menuColumnLabel);
|
|
445
465
|
if (filterObj.type === 'Date' || filterObj.type === 'DateTime' || filterObj.type === 'Time') {
|
|
@@ -505,10 +525,10 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
505
525
|
|
|
506
526
|
function filterSortGroupBy() {
|
|
507
527
|
// get original data set
|
|
508
|
-
let theData: any =
|
|
528
|
+
let theData: any = myRowsRef.current?.slice();
|
|
509
529
|
|
|
510
530
|
// last filter config data is global
|
|
511
|
-
theData = theData
|
|
531
|
+
theData = theData?.filter(filterData(filterByColumnsRef.current));
|
|
512
532
|
|
|
513
533
|
// move data to array and then sort
|
|
514
534
|
setRowData(theData);
|
|
@@ -516,7 +536,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
516
536
|
|
|
517
537
|
function updateFilterWithInfo() {
|
|
518
538
|
let bFound = false;
|
|
519
|
-
for (const filterObj of
|
|
539
|
+
for (const filterObj of filterByColumnsRef.current) {
|
|
520
540
|
if (filterObj.ref === menuColumnId) {
|
|
521
541
|
filterObj.type = filterType;
|
|
522
542
|
if (containsDateOrTime) {
|
|
@@ -544,7 +564,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
544
564
|
filterObj.containsFilterValue = displayDialogContainsValue;
|
|
545
565
|
}
|
|
546
566
|
|
|
547
|
-
|
|
567
|
+
filterByColumnsRef.current.push(filterObj);
|
|
548
568
|
}
|
|
549
569
|
}
|
|
550
570
|
|
|
@@ -556,7 +576,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
556
576
|
}
|
|
557
577
|
|
|
558
578
|
function _showFilteredIcon(columnId) {
|
|
559
|
-
for (const filterObj of
|
|
579
|
+
for (const filterObj of filterByColumnsRef.current) {
|
|
560
580
|
if (filterObj.ref === columnId) {
|
|
561
581
|
// eslint-disable-next-line sonarjs/prefer-single-boolean-return
|
|
562
582
|
if (filterObj.containsFilterValue !== '') {
|
|
@@ -570,7 +590,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
570
590
|
}
|
|
571
591
|
|
|
572
592
|
function results() {
|
|
573
|
-
const len = editableMode ? elements
|
|
593
|
+
const len = editableMode ? elements?.length : rowData?.length;
|
|
574
594
|
|
|
575
595
|
return len ? (
|
|
576
596
|
<span style={{ fontSize: '0.9em', opacity: '0.7' }}>
|
|
@@ -583,19 +603,21 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
583
603
|
<>
|
|
584
604
|
<TableContainer component={Paper} style={{ margin: '4px 0px' }} id='simple-table-manual'>
|
|
585
605
|
{propsToUse.label && (
|
|
586
|
-
<h3 className={classes.label}>
|
|
606
|
+
<h3 className={`${classes.label} ${required ? classes.tableLabel : ''}`}>
|
|
587
607
|
{propsToUse.label} {results()}
|
|
588
608
|
</h3>
|
|
589
609
|
)}
|
|
610
|
+
{validatemessage && <div className={classes.message}>{validatemessage}</div>}
|
|
590
611
|
<Table>
|
|
591
612
|
<TableHead className={classes.header}>
|
|
592
613
|
<TableRow>
|
|
593
614
|
{fieldDefs.map((field: any, index) => {
|
|
594
615
|
return (
|
|
595
616
|
<TableCell key={`head-${displayedColumns[index]}`} className={classes.tableCell}>
|
|
596
|
-
{readOnlyMode ? (
|
|
597
|
-
<div>
|
|
617
|
+
{(readOnlyMode || allowEditingInModal) && field.cellRenderer !== 'DeleteIcon' ? (
|
|
618
|
+
<div style={{ display: 'flex' }}>
|
|
598
619
|
<TableSortLabel
|
|
620
|
+
style={{ width: '75%' }}
|
|
599
621
|
active={orderBy === displayedColumns[index]}
|
|
600
622
|
direction={orderBy === displayedColumns[index] ? order : 'asc'}
|
|
601
623
|
onClick={createSortHandler(displayedColumns[index])}
|
|
@@ -607,8 +629,8 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
607
629
|
) : null}
|
|
608
630
|
</TableSortLabel>
|
|
609
631
|
<MoreIcon
|
|
632
|
+
style={{ cursor: 'pointer', zIndex: 1000 }}
|
|
610
633
|
id='menu-icon'
|
|
611
|
-
className={classes.moreIcon}
|
|
612
634
|
onClick={event => {
|
|
613
635
|
_menuClick(event, field.name, field.meta.type, field.label);
|
|
614
636
|
}}
|
|
@@ -624,11 +646,12 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
624
646
|
</TableHead>
|
|
625
647
|
<TableBody>
|
|
626
648
|
{editableMode &&
|
|
649
|
+
!allowEditingInModal &&
|
|
627
650
|
elements.map((row: any, index) => {
|
|
628
651
|
const theKey = `row-${index}`;
|
|
629
652
|
return (
|
|
630
653
|
<TableRow key={theKey}>
|
|
631
|
-
{row
|
|
654
|
+
{row?.map((item, childIndex) => {
|
|
632
655
|
const theColKey = `data-${index}-${childIndex}`;
|
|
633
656
|
return (
|
|
634
657
|
<TableCell key={theColKey} className={classes.tableCell}>
|
|
@@ -655,59 +678,53 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
|
|
|
655
678
|
{(readOnlyMode || allowEditingInModal) &&
|
|
656
679
|
rowData &&
|
|
657
680
|
rowData.length > 0 &&
|
|
658
|
-
stableSort(rowData, getComparator(order, orderBy))
|
|
659
|
-
.
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
)
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
</TableRow>
|
|
692
|
-
);
|
|
693
|
-
})}
|
|
681
|
+
stableSort(rowData, getComparator(order, orderBy)).map((row: any, displayIndex) => {
|
|
682
|
+
const originalIndex = row.__originalIndex;
|
|
683
|
+
return (
|
|
684
|
+
// eslint-disable-next-line react/no-array-index-key
|
|
685
|
+
<TableRow key={displayIndex}>
|
|
686
|
+
{(elements as any[])[originalIndex]?.map((item, childIndex) => {
|
|
687
|
+
const theColKey = displayedColumns[childIndex];
|
|
688
|
+
return (
|
|
689
|
+
<TableCell key={theColKey} className={classes.tableCell}>
|
|
690
|
+
{item}
|
|
691
|
+
</TableCell>
|
|
692
|
+
);
|
|
693
|
+
})}
|
|
694
|
+
{showDeleteButton && (
|
|
695
|
+
<TableCell key='DeleteIcon' className={classes.tableCell}>
|
|
696
|
+
<div>
|
|
697
|
+
<MoreIcon
|
|
698
|
+
id='table-edit-menu-icon'
|
|
699
|
+
className={classes.moreIcon}
|
|
700
|
+
onClick={event => {
|
|
701
|
+
editMenuClick(event, originalIndex);
|
|
702
|
+
}}
|
|
703
|
+
/>
|
|
704
|
+
<Menu id='table-edit-menu' anchorEl={editAnchorEl} keepMounted open={Boolean(editAnchorEl)} onClose={_menuClose}>
|
|
705
|
+
<MenuItem onClick={() => editRecord()}>Edit</MenuItem>
|
|
706
|
+
<MenuItem onClick={() => deleteRecord()}>Delete</MenuItem>
|
|
707
|
+
</Menu>
|
|
708
|
+
</div>
|
|
709
|
+
</TableCell>
|
|
710
|
+
)}
|
|
711
|
+
</TableRow>
|
|
712
|
+
);
|
|
713
|
+
})}
|
|
694
714
|
</TableBody>
|
|
695
715
|
</Table>
|
|
696
|
-
{readOnlyMode && rowData
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
</div>
|
|
700
|
-
)}
|
|
701
|
-
{editableMode && referenceList && referenceList.length === 0 && (
|
|
716
|
+
{((readOnlyMode && (!rowData || rowData?.length === 0)) ||
|
|
717
|
+
(editableMode && (!referenceList || referenceList?.length === 0)) ||
|
|
718
|
+
(allowEditingInModal && (!rowData || rowData?.length === 0))) && (
|
|
702
719
|
<div className='no-records' id='no-records'>
|
|
703
|
-
No records found.
|
|
720
|
+
{getGenericFieldsLocalizedValue('CosmosFields.fields.lists', 'No records found.')}
|
|
704
721
|
</div>
|
|
705
722
|
)}
|
|
706
723
|
</TableContainer>
|
|
707
724
|
{showAddRowButton && (
|
|
708
725
|
<div style={{ fontSize: '1rem' }}>
|
|
709
726
|
<Link style={{ cursor: 'pointer' }} onClick={addRecord} underline='hover'>
|
|
710
|
-
+ Add
|
|
727
|
+
+ {localizedVal('Add', localeCategory)}
|
|
711
728
|
</Link>
|
|
712
729
|
</div>
|
|
713
730
|
)}
|
|
@@ -57,10 +57,8 @@ export default function SimpleTableSelect(props: SimpleTableSelectProps) {
|
|
|
57
57
|
|
|
58
58
|
// Need to get this written so typedefs work
|
|
59
59
|
const { datasource: { parameters: fieldParameters = {} } = {}, pageClass } = isMultiSelectMode
|
|
60
|
-
?
|
|
61
|
-
|
|
62
|
-
: // @ts-ignore - Property 'getCurrentPageFieldMetadata' is private and only accessible within class 'C11nEnv'.
|
|
63
|
-
pConn.getCurrentPageFieldMetadata(contextPageReference);
|
|
60
|
+
? pConn.getFieldMetadata(`@P .${referenceProp}`)
|
|
61
|
+
: pConn.getCurrentPageFieldMetadata(contextPageReference);
|
|
64
62
|
|
|
65
63
|
const compositeKeys: any[] = [];
|
|
66
64
|
Object.values(fieldParameters).forEach((param: any) => {
|