@pega/custom-dx-components 0.23.30 → 0.23.31
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/Constellation/Field/Date/DateFormatter.js.mustache +0 -1
- package/src/tasks/create/templates/Constellation/Field/Date/FormattedText.jsx.mustache +0 -1
- package/src/tasks/create/templates/Constellation/Field/Date/date.js.mustache +0 -2
- package/src/tasks/create/templates/Constellation/Field/DateTime/date-time.js.mustache +0 -1
- package/src/tasks/create/templates/Constellation/Field/DateTime/date-utils.js.mustache +0 -1
- package/src/tasks/create/templates/Constellation/Field/DateTime/date.js.mustache +0 -1
- package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/date.js.mustache +0 -1
- package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/embed-utils.js.mustache +0 -1
- package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/repeat-utils.js.mustache +0 -1
- package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/textformat-utils.jsx.mustache +0 -1
- package/src/tasks/create/templates/Constellation/Field/Picklist-RadioButtons/textformat-utils.jsx.mustache +0 -1
- package/src/tasks/create/templates/Constellation/Field/Text-URL/text-url.jsx.mustache +0 -1
- package/src/tasks/create/templates/Constellation/Field/TimeofDay/time-of-day.js.mustache +0 -1
- package/src/tasks/create/templates/Constellation/Template/PAGE/utils.js.mustache +0 -1
- package/src/tasks/init/template/.eslintrc.json +10 -1
- package/src/tasks/init/template/package.json.mustache +1 -1
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyAutocomplete/date.js +0 -1
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyAutocomplete/embed-utils.js +22 -12
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyAutocomplete/repeat-utils.js +0 -1
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyAutocomplete/textformat-utils.jsx +0 -1
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDate/DateFormatter.js +0 -1
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDate/FormattedText.jsx +0 -1
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDate/date.js +0 -2
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDateTime/date-time.js +0 -1
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDateTime/date-utils.js +41 -48
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDateTime/date.js +54 -68
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPage/utils.js +12 -10
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyRadioButtons/textformat-utils.jsx +0 -1
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTimeOfDay/time-of-day.js +41 -48
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyURL/text-url.jsx +0 -1
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyAutocomplete/date.js +0 -1
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyAutocomplete/embed-utils.js +22 -12
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyAutocomplete/repeat-utils.js +0 -1
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyAutocomplete/textformat-utils.jsx +0 -1
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDate/DateFormatter.js +0 -1
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDate/FormattedText.jsx +0 -1
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDate/date.js +0 -2
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDateTime/date-time.js +0 -1
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDateTime/date-utils.js +41 -48
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDateTime/date.js +54 -68
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPage/utils.js +12 -10
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyRadioButtons/textformat-utils.jsx +0 -1
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTimeOfDay/time-of-day.js +41 -48
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyURL/text-url.jsx +0 -1
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable import/no-relative-packages */
|
|
2
1
|
import dayjs from 'dayjs';
|
|
3
2
|
import relativeTime from 'dayjs/plugin/relativeTime.js';
|
|
4
3
|
import localizedFormat from 'dayjs/plugin/localizedFormat.js';
|
|
@@ -10,26 +9,26 @@ dayjs.extend(localizedFormat);
|
|
|
10
9
|
dayjs.extend(utc);
|
|
11
10
|
dayjs.extend(timezone);
|
|
12
11
|
|
|
13
|
-
export const datetimedisplayformatter =
|
|
12
|
+
export const datetimedisplayformatter = formatter => {
|
|
14
13
|
const objectvalues = {};
|
|
15
14
|
switch (formatter) {
|
|
16
|
-
case
|
|
17
|
-
objectvalues.variantVal =
|
|
18
|
-
objectvalues.formatVal =
|
|
15
|
+
case 'DateTime-Long': {
|
|
16
|
+
objectvalues.variantVal = 'datetime';
|
|
17
|
+
objectvalues.formatVal = 'long';
|
|
19
18
|
break;
|
|
20
19
|
}
|
|
21
|
-
case
|
|
22
|
-
objectvalues.variantVal =
|
|
23
|
-
objectvalues.formatVal =
|
|
20
|
+
case 'DateTime-Short': {
|
|
21
|
+
objectvalues.variantVal = 'date';
|
|
22
|
+
objectvalues.formatVal = 'short';
|
|
24
23
|
break;
|
|
25
24
|
}
|
|
26
|
-
case
|
|
27
|
-
objectvalues.variantVal =
|
|
25
|
+
case 'DateTime-Since': {
|
|
26
|
+
objectvalues.variantVal = 'relative';
|
|
28
27
|
break;
|
|
29
28
|
}
|
|
30
|
-
case
|
|
31
|
-
objectvalues.variantVal =
|
|
32
|
-
objectvalues.formatVal =
|
|
29
|
+
case 'Time-Only': {
|
|
30
|
+
objectvalues.variantVal = 'time';
|
|
31
|
+
objectvalues.formatVal = 'short';
|
|
33
32
|
break;
|
|
34
33
|
}
|
|
35
34
|
// no default
|
|
@@ -37,13 +36,8 @@ export const datetimedisplayformatter = (formatter) => {
|
|
|
37
36
|
return objectvalues;
|
|
38
37
|
};
|
|
39
38
|
|
|
40
|
-
export const formatExists =
|
|
41
|
-
const formatterValues = [
|
|
42
|
-
"DateTime-Long",
|
|
43
|
-
"DateTime-Short",
|
|
44
|
-
"DateTime-Since",
|
|
45
|
-
"Time-Only"
|
|
46
|
-
];
|
|
39
|
+
export const formatExists = formatterVal => {
|
|
40
|
+
const formatterValues = ['DateTime-Long', 'DateTime-Short', 'DateTime-Since', 'Time-Only'];
|
|
47
41
|
let isformatter = false;
|
|
48
42
|
if (formatterValues.includes(formatterVal)) {
|
|
49
43
|
isformatter = true;
|
|
@@ -51,8 +45,6 @@ export const formatExists = (formatterVal) => {
|
|
|
51
45
|
return isformatter;
|
|
52
46
|
};
|
|
53
47
|
|
|
54
|
-
|
|
55
|
-
|
|
56
48
|
/**
|
|
57
49
|
* Return relative time in fromNow for the given datetime
|
|
58
50
|
* @description Convert and return the given datetime in dayJSObject
|
|
@@ -60,11 +52,11 @@ export const formatExists = (formatterVal) => {
|
|
|
60
52
|
* @param {string} text datetime
|
|
61
53
|
* @returns {object} datetime as a dayjs object
|
|
62
54
|
*/
|
|
63
|
-
export const getDayJSObject =
|
|
55
|
+
export const getDayJSObject = text => {
|
|
64
56
|
const momObj = dayjs(text);
|
|
65
57
|
if (momObj.isValid()) return momObj;
|
|
66
58
|
const timeStamp = text;
|
|
67
|
-
const isDateTime = timeStamp.indexOf(
|
|
59
|
+
const isDateTime = timeStamp.indexOf('GMT') !== -1;
|
|
68
60
|
const year = parseInt(timeStamp.substr(0, 4), 10);
|
|
69
61
|
const month = parseInt(timeStamp.substr(4, 2), 10) - 1;
|
|
70
62
|
const day = parseInt(timeStamp.substr(6, 2), 10);
|
|
@@ -90,7 +82,7 @@ export const getDayJSObject = (text) => {
|
|
|
90
82
|
}
|
|
91
83
|
|
|
92
84
|
mom = dayjs(
|
|
93
|
-
mom.toLocaleString(
|
|
85
|
+
mom.toLocaleString('en-US', {
|
|
94
86
|
timeZone: CurrentTz
|
|
95
87
|
})
|
|
96
88
|
);
|
|
@@ -104,8 +96,8 @@ export const getDayJSObject = (text) => {
|
|
|
104
96
|
* @param {string} time datetime
|
|
105
97
|
* @returns {object} relative time from now
|
|
106
98
|
*/
|
|
107
|
-
export const getRelativeTime =
|
|
108
|
-
let relativetime =
|
|
99
|
+
export const getRelativeTime = time => {
|
|
100
|
+
let relativetime = '';
|
|
109
101
|
if (dayjs(time).isUTC()) {
|
|
110
102
|
relativetime = dayjs(time).fromNow();
|
|
111
103
|
} else {
|
|
@@ -121,7 +113,7 @@ export const getRelativeTime = (time) => {
|
|
|
121
113
|
* @param {string} value from which Year needs to be taken out
|
|
122
114
|
* @returns {number} year for the date passed
|
|
123
115
|
*/
|
|
124
|
-
export const getFullYear =
|
|
116
|
+
export const getFullYear = value =>
|
|
125
117
|
value ? new Date(value).getFullYear() : new Date().getFullYear();
|
|
126
118
|
|
|
127
119
|
/**
|
|
@@ -171,8 +163,8 @@ export const getMinDate = (previousYears, currentYear, yearFromValue) => {
|
|
|
171
163
|
*
|
|
172
164
|
* @returns {number} clockFormat
|
|
173
165
|
*/
|
|
174
|
-
export const parseClockFormat =
|
|
175
|
-
typeof clockFormat ===
|
|
166
|
+
export const parseClockFormat = clockFormat =>
|
|
167
|
+
typeof clockFormat === 'string' ? parseInt(clockFormat, 10) : clockFormat;
|
|
176
168
|
|
|
177
169
|
/**
|
|
178
170
|
* Return datetime value string off to seconds
|
|
@@ -184,9 +176,9 @@ export const parseClockFormat = (clockFormat) =>
|
|
|
184
176
|
*/
|
|
185
177
|
export const correctDateTimeToSeconds = (datetime, withSeconds) => {
|
|
186
178
|
if (withSeconds) {
|
|
187
|
-
return `${datetime.substring(0, datetime.indexOf(
|
|
179
|
+
return `${datetime.substring(0, datetime.indexOf('Z'))}.000Z`;
|
|
188
180
|
}
|
|
189
|
-
return `${datetime.substring(0, datetime.lastIndexOf(
|
|
181
|
+
return `${datetime.substring(0, datetime.lastIndexOf(':'))}:00.000Z`;
|
|
190
182
|
};
|
|
191
183
|
|
|
192
184
|
/**
|
|
@@ -199,12 +191,9 @@ export const correctDateTimeToSeconds = (datetime, withSeconds) => {
|
|
|
199
191
|
*/
|
|
200
192
|
export const timeCorrectedToSeconds = (datetime, withSeconds) => {
|
|
201
193
|
if (withSeconds) {
|
|
202
|
-
return datetime.substring(datetime.indexOf(
|
|
194
|
+
return datetime.substring(datetime.indexOf('T') + 1, datetime.indexOf('.'));
|
|
203
195
|
}
|
|
204
|
-
return `${datetime.substring(
|
|
205
|
-
datetime.indexOf("T") + 1,
|
|
206
|
-
datetime.lastIndexOf(":")
|
|
207
|
-
)}:00`;
|
|
196
|
+
return `${datetime.substring(datetime.indexOf('T') + 1, datetime.lastIndexOf(':'))}:00`;
|
|
208
197
|
};
|
|
209
198
|
|
|
210
199
|
/**
|
|
@@ -227,14 +216,13 @@ export const datetimeFireChangeBlurEvents = (
|
|
|
227
216
|
propName,
|
|
228
217
|
pConn
|
|
229
218
|
) => {
|
|
230
|
-
|
|
231
219
|
// TODO - clean up, we should not rely on timestamp from cosmos to check InComplete validation
|
|
232
220
|
// above triggerFieldChange should have validated this
|
|
233
221
|
if (errorState) {
|
|
234
222
|
pConn.getValidationApi().validate(errorState);
|
|
235
223
|
}
|
|
236
224
|
// BUG-640834 In errorState presist old values avoiding store update & re-render.
|
|
237
|
-
else{
|
|
225
|
+
else {
|
|
238
226
|
if (formattedValue !== actualValue) {
|
|
239
227
|
actions.updateFieldValue(propName, formattedValue);
|
|
240
228
|
}
|
|
@@ -255,27 +243,27 @@ export const getDateFormat = (locale, options) => {
|
|
|
255
243
|
.formatToParts()
|
|
256
244
|
.map(({ type, value }) => {
|
|
257
245
|
switch (type) {
|
|
258
|
-
case
|
|
259
|
-
return
|
|
260
|
-
case
|
|
261
|
-
return
|
|
262
|
-
case
|
|
263
|
-
return
|
|
264
|
-
case
|
|
265
|
-
return
|
|
266
|
-
case
|
|
267
|
-
return
|
|
268
|
-
case
|
|
269
|
-
return
|
|
270
|
-
case
|
|
271
|
-
return
|
|
272
|
-
case
|
|
246
|
+
case 'day':
|
|
247
|
+
return 'DD';
|
|
248
|
+
case 'month':
|
|
249
|
+
return 'MM';
|
|
250
|
+
case 'year':
|
|
251
|
+
return 'YYYY';
|
|
252
|
+
case 'hour':
|
|
253
|
+
return 'hh';
|
|
254
|
+
case 'minute':
|
|
255
|
+
return 'mm';
|
|
256
|
+
case 'second':
|
|
257
|
+
return 'ss';
|
|
258
|
+
case 'dayPeriod':
|
|
259
|
+
return 'A';
|
|
260
|
+
case 'literal':
|
|
273
261
|
return value;
|
|
274
262
|
default:
|
|
275
|
-
return
|
|
263
|
+
return '';
|
|
276
264
|
}
|
|
277
265
|
})
|
|
278
|
-
.join(
|
|
266
|
+
.join('');
|
|
279
267
|
};
|
|
280
268
|
|
|
281
269
|
/**
|
|
@@ -285,15 +273,13 @@ export const getDateFormat = (locale, options) => {
|
|
|
285
273
|
* @returns {boolean} True or False for the locale
|
|
286
274
|
* Example : getDateFormat("pl-PL") returns false
|
|
287
275
|
*/
|
|
288
|
-
export const is12HClockFormat =
|
|
276
|
+
export const is12HClockFormat = locale => {
|
|
289
277
|
const meridiem = new Intl.DateTimeFormat(locale, {
|
|
290
|
-
hour:
|
|
278
|
+
hour: 'numeric'
|
|
291
279
|
})
|
|
292
280
|
.formatToParts()
|
|
293
|
-
.find(({ type }) => type ===
|
|
294
|
-
return !!(meridiem === null || meridiem === undefined
|
|
295
|
-
? undefined
|
|
296
|
-
: meridiem.value);
|
|
281
|
+
.find(({ type }) => type === 'dayPeriod');
|
|
282
|
+
return !!(meridiem === null || meridiem === undefined ? undefined : meridiem.value);
|
|
297
283
|
};
|
|
298
284
|
|
|
299
285
|
/**
|
|
@@ -306,9 +292,9 @@ export const is12HClockFormat = (locale) => {
|
|
|
306
292
|
*/
|
|
307
293
|
export const getTimeOptions = (withSeconds, is12h = false) => {
|
|
308
294
|
return {
|
|
309
|
-
hour:
|
|
310
|
-
minute:
|
|
311
|
-
...(withSeconds && { second:
|
|
295
|
+
hour: 'numeric',
|
|
296
|
+
minute: 'numeric',
|
|
297
|
+
...(withSeconds && { second: 'numeric' }),
|
|
312
298
|
hour12: is12h
|
|
313
299
|
};
|
|
314
300
|
};
|
|
@@ -323,9 +309,9 @@ export const getTimeOptions = (withSeconds, is12h = false) => {
|
|
|
323
309
|
*/
|
|
324
310
|
export const getDateTimeOptions = (withSeconds, is12h = false) => {
|
|
325
311
|
return {
|
|
326
|
-
year:
|
|
327
|
-
month:
|
|
328
|
-
day:
|
|
312
|
+
year: 'numeric',
|
|
313
|
+
month: 'numeric',
|
|
314
|
+
day: 'numeric',
|
|
329
315
|
...getTimeOptions(withSeconds, is12h)
|
|
330
316
|
};
|
|
331
317
|
};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable import/no-relative-packages */
|
|
2
1
|
import { createUID } from '@pega/cosmos-react-core';
|
|
3
2
|
|
|
4
3
|
// import { LazyMap as LazyComponentMap } from '../../components_map';
|
|
@@ -18,15 +17,15 @@ export function getAllFields(pConnect) {
|
|
|
18
17
|
|
|
19
18
|
let allFields = [];
|
|
20
19
|
|
|
21
|
-
const makeField =
|
|
20
|
+
const makeField = f => ({
|
|
22
21
|
...pConnect().resolveConfigProps(f.config),
|
|
23
22
|
type: f.type
|
|
24
23
|
});
|
|
25
24
|
|
|
26
25
|
const hasRegions = !!metadata.children[0]?.children;
|
|
27
26
|
if (hasRegions) {
|
|
28
|
-
allFields = metadata.children.map(
|
|
29
|
-
region.children.map(
|
|
27
|
+
allFields = metadata.children.map(region =>
|
|
28
|
+
region.children.map(field => {
|
|
30
29
|
// Do not resolve the config props if is status work, instead create component here as status badge and mark as status display
|
|
31
30
|
if (field.config?.value === '@P .pyStatusWork') {
|
|
32
31
|
field.type = 'TextInput';
|
|
@@ -111,7 +110,9 @@ export function prepareComponentInCaseSummary(configObject, getPConnect, display
|
|
|
111
110
|
// createdComponent.props.getPConnect().setInheritedProp("hideLabel", true);
|
|
112
111
|
caseSummaryComponentObject.value = createdComponent;
|
|
113
112
|
if (type === 'reference') {
|
|
114
|
-
caseSummaryComponentObject.name = createdComponent.props
|
|
113
|
+
caseSummaryComponentObject.name = createdComponent.props
|
|
114
|
+
.getPConnect()
|
|
115
|
+
.getInheritedProps().label;
|
|
115
116
|
}
|
|
116
117
|
|
|
117
118
|
return caseSummaryComponentObject;
|
|
@@ -130,12 +131,12 @@ export function getFilteredFields(getPConnect) {
|
|
|
130
131
|
}
|
|
131
132
|
|
|
132
133
|
// Filter out fields that are not visible and unsupported types for primary fields (for CaseSummary)
|
|
133
|
-
primaryFieldsRaw = primaryFieldsRaw.filter(
|
|
134
|
+
primaryFieldsRaw = primaryFieldsRaw.filter(item => {
|
|
134
135
|
const resolvedItem = getPConnect().resolveConfigProps(item.config);
|
|
135
136
|
return resolvedItem.visibility !== false && item.type !== 'TextContent';
|
|
136
137
|
});
|
|
137
138
|
|
|
138
|
-
secondaryFieldsRaw = secondaryFieldsRaw.filter(
|
|
139
|
+
secondaryFieldsRaw = secondaryFieldsRaw.filter(item => {
|
|
139
140
|
const resolvedItem = getPConnect().resolveConfigProps(item.config);
|
|
140
141
|
return resolvedItem.visibility !== false && item.type !== 'TextContent';
|
|
141
142
|
});
|
|
@@ -162,7 +163,9 @@ export function getLayoutDataFromRegion(regionData) {
|
|
|
162
163
|
const itemPConnect = item?.getPConnect();
|
|
163
164
|
|
|
164
165
|
return {
|
|
165
|
-
id: itemPConnect?.getComponentName()
|
|
166
|
+
id: itemPConnect?.getComponentName()
|
|
167
|
+
? `${itemPConnect.getComponentName()}--${index}`
|
|
168
|
+
: `item--${index}`,
|
|
166
169
|
content: itemPConnect?.getComponent(),
|
|
167
170
|
layoutConfig: {
|
|
168
171
|
...defaultLayoutConfig,
|
|
@@ -213,9 +216,8 @@ export function getInstructions(pConnect, instructions = 'casestep') {
|
|
|
213
216
|
|
|
214
217
|
// If the annotation wasn't processed correctly, don't return any instruction text
|
|
215
218
|
if (instructions?.startsWith('@PARAGRAPH')) {
|
|
216
|
-
/* eslint-disable no-console */
|
|
217
219
|
console.error('@PARAGRAPH annotation was not processed. Hiding custom instructions.');
|
|
218
|
-
|
|
220
|
+
|
|
219
221
|
return undefined;
|
|
220
222
|
}
|
|
221
223
|
|
package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTimeOfDay/time-of-day.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import dayjs from "dayjs";
|
|
1
|
+
import dayjs from 'dayjs';
|
|
3
2
|
import relativeTime from 'dayjs/plugin/relativeTime.js';
|
|
4
3
|
import localizedFormat from 'dayjs/plugin/localizedFormat.js';
|
|
5
4
|
import utc from 'dayjs/plugin/utc.js';
|
|
@@ -17,11 +16,11 @@ dayjs.extend(timezone);
|
|
|
17
16
|
* @param {string} text datetime
|
|
18
17
|
* @returns {object} datetime as a dayjs object
|
|
19
18
|
*/
|
|
20
|
-
export const getDayJSObject =
|
|
19
|
+
export const getDayJSObject = text => {
|
|
21
20
|
const momObj = dayjs(text);
|
|
22
21
|
if (momObj.isValid()) return momObj;
|
|
23
22
|
const timeStamp = text;
|
|
24
|
-
const isDateTime = timeStamp.indexOf(
|
|
23
|
+
const isDateTime = timeStamp.indexOf('GMT') !== -1;
|
|
25
24
|
const year = parseInt(timeStamp.substr(0, 4), 10);
|
|
26
25
|
const month = parseInt(timeStamp.substr(4, 2), 10) - 1;
|
|
27
26
|
const day = parseInt(timeStamp.substr(6, 2), 10);
|
|
@@ -47,7 +46,7 @@ export const getDayJSObject = (text) => {
|
|
|
47
46
|
}
|
|
48
47
|
|
|
49
48
|
mom = dayjs(
|
|
50
|
-
mom.toLocaleString(
|
|
49
|
+
mom.toLocaleString('en-US', {
|
|
51
50
|
timeZone: CurrentTz
|
|
52
51
|
})
|
|
53
52
|
);
|
|
@@ -61,8 +60,8 @@ export const getDayJSObject = (text) => {
|
|
|
61
60
|
* @param {string} time datetime
|
|
62
61
|
* @returns {object} relative time from now
|
|
63
62
|
*/
|
|
64
|
-
export const getRelativeTime =
|
|
65
|
-
let relativetime =
|
|
63
|
+
export const getRelativeTime = time => {
|
|
64
|
+
let relativetime = '';
|
|
66
65
|
if (dayjs(time).isUTC()) {
|
|
67
66
|
relativetime = dayjs(time).fromNow();
|
|
68
67
|
} else {
|
|
@@ -78,7 +77,7 @@ export const getRelativeTime = (time) => {
|
|
|
78
77
|
* @param {string} value from which Year needs to be taken out
|
|
79
78
|
* @returns {number} year for the date passed
|
|
80
79
|
*/
|
|
81
|
-
export const getFullYear =
|
|
80
|
+
export const getFullYear = value =>
|
|
82
81
|
value ? new Date(value).getFullYear() : new Date().getFullYear();
|
|
83
82
|
|
|
84
83
|
/**
|
|
@@ -128,8 +127,8 @@ export const getMinDate = (previousYears, currentYear, yearFromValue) => {
|
|
|
128
127
|
*
|
|
129
128
|
* @returns {number} clockFormat
|
|
130
129
|
*/
|
|
131
|
-
export const parseClockFormat =
|
|
132
|
-
typeof clockFormat ===
|
|
130
|
+
export const parseClockFormat = clockFormat =>
|
|
131
|
+
typeof clockFormat === 'string' ? parseInt(clockFormat, 10) : clockFormat;
|
|
133
132
|
|
|
134
133
|
/**
|
|
135
134
|
* Return datetime value string off to seconds
|
|
@@ -141,9 +140,9 @@ export const parseClockFormat = (clockFormat) =>
|
|
|
141
140
|
*/
|
|
142
141
|
export const correctDateTimeToSeconds = (datetime, withSeconds) => {
|
|
143
142
|
if (withSeconds) {
|
|
144
|
-
return `${datetime.substring(0, datetime.indexOf(
|
|
143
|
+
return `${datetime.substring(0, datetime.indexOf('Z'))}.000Z`;
|
|
145
144
|
}
|
|
146
|
-
return `${datetime.substring(0, datetime.lastIndexOf(
|
|
145
|
+
return `${datetime.substring(0, datetime.lastIndexOf(':'))}:00.000Z`;
|
|
147
146
|
};
|
|
148
147
|
|
|
149
148
|
/**
|
|
@@ -156,12 +155,9 @@ export const correctDateTimeToSeconds = (datetime, withSeconds) => {
|
|
|
156
155
|
*/
|
|
157
156
|
export const timeCorrectedToSeconds = (datetime, withSeconds) => {
|
|
158
157
|
if (withSeconds) {
|
|
159
|
-
return datetime.substring(datetime.indexOf(
|
|
158
|
+
return datetime.substring(datetime.indexOf('T') + 1, datetime.indexOf('.'));
|
|
160
159
|
}
|
|
161
|
-
return `${datetime.substring(
|
|
162
|
-
datetime.indexOf("T") + 1,
|
|
163
|
-
datetime.lastIndexOf(":")
|
|
164
|
-
)}:00`;
|
|
160
|
+
return `${datetime.substring(datetime.indexOf('T') + 1, datetime.lastIndexOf(':'))}:00`;
|
|
165
161
|
};
|
|
166
162
|
|
|
167
163
|
/**
|
|
@@ -184,14 +180,13 @@ export const datetimeFireChangeBlurEvents = (
|
|
|
184
180
|
propName,
|
|
185
181
|
pConn
|
|
186
182
|
) => {
|
|
187
|
-
|
|
188
183
|
// TODO - clean up, we should not rely on timestamp from cosmos to check InComplete validation
|
|
189
184
|
// above triggerFieldChange should have validated this
|
|
190
185
|
if (errorState) {
|
|
191
186
|
pConn.getValidationApi().validate(errorState);
|
|
192
187
|
}
|
|
193
188
|
// BUG-640834 In errorState presist old values avoiding store update & re-render.
|
|
194
|
-
else{
|
|
189
|
+
else {
|
|
195
190
|
if (formattedValue !== actualValue) {
|
|
196
191
|
actions.updateFieldValue(propName, formattedValue);
|
|
197
192
|
}
|
|
@@ -212,27 +207,27 @@ export const getDateFormat = (locale, options) => {
|
|
|
212
207
|
.formatToParts()
|
|
213
208
|
.map(({ type, value }) => {
|
|
214
209
|
switch (type) {
|
|
215
|
-
case
|
|
216
|
-
return
|
|
217
|
-
case
|
|
218
|
-
return
|
|
219
|
-
case
|
|
220
|
-
return
|
|
221
|
-
case
|
|
222
|
-
return
|
|
223
|
-
case
|
|
224
|
-
return
|
|
225
|
-
case
|
|
226
|
-
return
|
|
227
|
-
case
|
|
228
|
-
return
|
|
229
|
-
case
|
|
210
|
+
case 'day':
|
|
211
|
+
return 'DD';
|
|
212
|
+
case 'month':
|
|
213
|
+
return 'MM';
|
|
214
|
+
case 'year':
|
|
215
|
+
return 'YYYY';
|
|
216
|
+
case 'hour':
|
|
217
|
+
return 'hh';
|
|
218
|
+
case 'minute':
|
|
219
|
+
return 'mm';
|
|
220
|
+
case 'second':
|
|
221
|
+
return 'ss';
|
|
222
|
+
case 'dayPeriod':
|
|
223
|
+
return 'A';
|
|
224
|
+
case 'literal':
|
|
230
225
|
return value;
|
|
231
226
|
default:
|
|
232
|
-
return
|
|
227
|
+
return '';
|
|
233
228
|
}
|
|
234
229
|
})
|
|
235
|
-
.join(
|
|
230
|
+
.join('');
|
|
236
231
|
};
|
|
237
232
|
|
|
238
233
|
/**
|
|
@@ -242,15 +237,13 @@ export const getDateFormat = (locale, options) => {
|
|
|
242
237
|
* @returns {boolean} True or False for the locale
|
|
243
238
|
* Example : getDateFormat("pl-PL") returns false
|
|
244
239
|
*/
|
|
245
|
-
export const is12HClockFormat =
|
|
240
|
+
export const is12HClockFormat = locale => {
|
|
246
241
|
const meridiem = new Intl.DateTimeFormat(locale, {
|
|
247
|
-
hour:
|
|
242
|
+
hour: 'numeric'
|
|
248
243
|
})
|
|
249
244
|
.formatToParts()
|
|
250
|
-
.find(({ type }) => type ===
|
|
251
|
-
return !!(meridiem === null || meridiem === undefined
|
|
252
|
-
? undefined
|
|
253
|
-
: meridiem.value);
|
|
245
|
+
.find(({ type }) => type === 'dayPeriod');
|
|
246
|
+
return !!(meridiem === null || meridiem === undefined ? undefined : meridiem.value);
|
|
254
247
|
};
|
|
255
248
|
|
|
256
249
|
/**
|
|
@@ -263,9 +256,9 @@ export const is12HClockFormat = (locale) => {
|
|
|
263
256
|
*/
|
|
264
257
|
export const getTimeOptions = (withSeconds, is12h = false) => {
|
|
265
258
|
return {
|
|
266
|
-
hour:
|
|
267
|
-
minute:
|
|
268
|
-
...(withSeconds && { second:
|
|
259
|
+
hour: 'numeric',
|
|
260
|
+
minute: 'numeric',
|
|
261
|
+
...(withSeconds && { second: 'numeric' }),
|
|
269
262
|
hour12: is12h
|
|
270
263
|
};
|
|
271
264
|
};
|
|
@@ -280,9 +273,9 @@ export const getTimeOptions = (withSeconds, is12h = false) => {
|
|
|
280
273
|
*/
|
|
281
274
|
export const getDateTimeOptions = (withSeconds, is12h = false) => {
|
|
282
275
|
return {
|
|
283
|
-
year:
|
|
284
|
-
month:
|
|
285
|
-
day:
|
|
276
|
+
year: 'numeric',
|
|
277
|
+
month: 'numeric',
|
|
278
|
+
day: 'numeric',
|
|
286
279
|
...getTimeOptions(withSeconds, is12h)
|
|
287
280
|
};
|
|
288
281
|
};
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
isEmbeddedField,
|
|
3
|
+
isPageListInPath,
|
|
4
|
+
PAGE,
|
|
5
|
+
PAGELIST,
|
|
6
|
+
buildAggOrCalcId
|
|
7
|
+
} from './repeat-utils.js';
|
|
3
8
|
|
|
4
9
|
export const AT_FILTEREDLIST = '@FILTERED_LIST';
|
|
5
10
|
export const AT_PROPERTY = '@P';
|
|
@@ -53,7 +58,7 @@ export function getEmbeddedFieldName(propertyName, classID) {
|
|
|
53
58
|
* @param {Array} metaFields Fields metadata Array. Contains metadata of all the fields.
|
|
54
59
|
*/
|
|
55
60
|
export function updateMetaEmbeddedFieldID(metaFields) {
|
|
56
|
-
return metaFields.forEach(
|
|
61
|
+
return metaFields.forEach(metaField => {
|
|
57
62
|
if (metaField.fieldID?.startsWith(PAGE) || metaField.fieldID?.startsWith(PAGELIST)) {
|
|
58
63
|
metaField.fieldID = getFieldNameFromEmbeddedFieldName(metaField.fieldID);
|
|
59
64
|
}
|
|
@@ -70,7 +75,7 @@ export function updateMetaEmbeddedFieldID(metaFields) {
|
|
|
70
75
|
*/
|
|
71
76
|
export function getConfigEmbeddedFieldsMeta(configFields, classID) {
|
|
72
77
|
const configEmbeddedFieldsMeta = [];
|
|
73
|
-
configFields.forEach(
|
|
78
|
+
configFields.forEach(field => {
|
|
74
79
|
let value = field;
|
|
75
80
|
if (isEmbeddedField(value)) {
|
|
76
81
|
// conversion Page.PageList[].property => Page.PageList.property
|
|
@@ -94,8 +99,8 @@ export function getConfigEmbeddedFieldsMeta(configFields, classID) {
|
|
|
94
99
|
*/
|
|
95
100
|
export function mergeConfigEmbeddedFieldsMeta(configEmbeddedFieldsMeta, metaFields) {
|
|
96
101
|
const mergedMetaFields = [...metaFields];
|
|
97
|
-
configEmbeddedFieldsMeta.forEach(
|
|
98
|
-
const fieldMeta = metaFields.find(
|
|
102
|
+
configEmbeddedFieldsMeta.forEach(configFieldMeta => {
|
|
103
|
+
const fieldMeta = metaFields.find(metaField => metaField.fieldID === configFieldMeta.fieldID);
|
|
99
104
|
if (!fieldMeta) mergedMetaFields.push(configFieldMeta);
|
|
100
105
|
});
|
|
101
106
|
return mergedMetaFields;
|
|
@@ -153,7 +158,7 @@ export function preparePropertyValue(value) {
|
|
|
153
158
|
// FIXME #EmbeddedPropertyPatch
|
|
154
159
|
// TODO: Remove this utility when we have nested response for queryable pageList and supports scalarList component
|
|
155
160
|
export function updatePageListFieldsConfig(configFields) {
|
|
156
|
-
return configFields.forEach(
|
|
161
|
+
return configFields.forEach(item => {
|
|
157
162
|
if (item.type === 'ScalarList') {
|
|
158
163
|
if (!item.config.originalValue) {
|
|
159
164
|
item.config.originalValue = item.config.value;
|
|
@@ -167,7 +172,7 @@ export function updatePageListFieldsConfig(configFields) {
|
|
|
167
172
|
* Update the renderer type for the properties of type Page.
|
|
168
173
|
*/
|
|
169
174
|
export function updatePageFieldsConfig(configFields, parentClassID) {
|
|
170
|
-
return configFields.forEach(
|
|
175
|
+
return configFields.forEach(item => {
|
|
171
176
|
const {
|
|
172
177
|
type,
|
|
173
178
|
config: { value }
|
|
@@ -257,7 +262,7 @@ export function preparePropertyMaps(fields, classID, context) {
|
|
|
257
262
|
export function getPageListFields(fields) {
|
|
258
263
|
const parentPaths = new Set();
|
|
259
264
|
const pageListFields = [];
|
|
260
|
-
fields.forEach(
|
|
265
|
+
fields.forEach(field => {
|
|
261
266
|
const { name } = field;
|
|
262
267
|
if (isPageListProperty(name)) {
|
|
263
268
|
const parentPath = name.substring(0, name.lastIndexOf(':'));
|
|
@@ -270,7 +275,12 @@ export function getPageListFields(fields) {
|
|
|
270
275
|
return pageListFields;
|
|
271
276
|
}
|
|
272
277
|
|
|
273
|
-
export function mergePageListFieldAggregation(
|
|
278
|
+
export function mergePageListFieldAggregation(
|
|
279
|
+
pageListName,
|
|
280
|
+
select,
|
|
281
|
+
existingAggregations,
|
|
282
|
+
existingAggregationsName
|
|
283
|
+
) {
|
|
274
284
|
// Build a dummy genericAggregationId to check if any type of aggregation for that pagelist is included in existing aggregations.
|
|
275
285
|
const genericAggregationId = buildAggOrCalcId(pageListName, '');
|
|
276
286
|
if (existingAggregationsName.includes(genericAggregationId)) {
|
|
@@ -285,7 +295,7 @@ export function mergePageListFieldsAggregation(fields, select, existingAggregati
|
|
|
285
295
|
const parentPaths = new Set();
|
|
286
296
|
const existingAggregationsName = Object.keys(existingAggregations).toString();
|
|
287
297
|
const pageListFields = [];
|
|
288
|
-
fields.forEach(
|
|
298
|
+
fields.forEach(field => {
|
|
289
299
|
const { name } = field;
|
|
290
300
|
if (isPageListProperty(name)) {
|
|
291
301
|
const parentPath = name.substring(0, name.lastIndexOf(':'));
|
|
@@ -307,5 +317,5 @@ export function mergePageListFieldsAggregation(fields, select, existingAggregati
|
|
|
307
317
|
* @returns {object | undefined} value of first pageListProperty found
|
|
308
318
|
*/
|
|
309
319
|
export function hasPageListProperty(fieldDefs) {
|
|
310
|
-
return fieldDefs?.find(
|
|
320
|
+
return fieldDefs?.find(field => isPageListProperty(field.name));
|
|
311
321
|
}
|