@pega/lists-core 9.0.0-build.9.7 → 9.0.0-build.9.9

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.
@@ -85,7 +85,7 @@ function transformCondition(condition, meta, conditionBuilderFieldsConfig) {
85
85
  const { conditionBuilderFields: fields, conditionBuilderFieldsTypeMap: fieldsTypeMap } = conditionBuilderFieldsConfig;
86
86
  // cspell:ignore DDTHH
87
87
  const currentDateTimeWithTimeZone = dayjs().tz(meta.timezone).format('YYYY-MM-DDTHH:mm:ss.SSS');
88
- condition = transformComplexCondition(condition, fields, currentDateTimeWithTimeZone);
88
+ condition = transformComplexCondition(condition, fields, true, currentDateTimeWithTimeZone);
89
89
  const { logic, conditions } = splitConditionTree(condition);
90
90
  Object.entries(conditions).forEach(([, singleCondition]) => {
91
91
  transformConditionBasedOnType(singleCondition, fieldsTypeMap, meta);
@@ -1 +1 @@
1
- {"version":3,"file":"condition-utils.js","sourceRoot":"","sources":["../../../../src/core/utils/condition-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\nimport tZone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\n\nimport {\n evaluateCondition as evaluateConditionUtility,\n parseLogicString,\n splitConditionTree,\n transformComplexCondition,\n type Condition,\n type Field,\n type LeafCondition,\n type FieldType\n} from '@pega/cosmos-react-condition-builder';\n\nimport type { FieldDef, Meta } from '../../../types/Meta.types';\nimport type { RowData } from '../generators/RowGenerator.types';\nimport type { State } from '../../../types/State.types';\n\nimport { deepCopy } from './util';\n\ndayjs.extend(tZone);\ndayjs.extend(utc);\n\nexport const RsToCBFieldTypeMap: Record<string, FieldType> = {\n text: 'TEXT',\n number: 'DECIMAL',\n boolean: 'BOOLEAN',\n datetime: 'DATE_TIME',\n date: 'DATE_ONLY',\n time: 'TIME_ONLY'\n} as const;\n\nconst DateFunctionsWithRhsAsDateInput = ['HOURS', 'MINUTES'];\nconst DOT_DELIMITER = '.';\n\ntype ConditionBuilderFieldsConfig = {\n conditionBuilderFields: Field[];\n conditionBuilderFieldsTypeMap: Record<string, FieldType>;\n};\n\nfunction getUniqueFieldsFromCondition(condition: Condition, uniqueFields: Set<string> = new Set()) {\n if ('AND' in condition) {\n condition.AND.forEach(andCondition => getUniqueFieldsFromCondition(andCondition, uniqueFields));\n } else if ('OR' in condition) {\n condition.OR.forEach(orCondition => getUniqueFieldsFromCondition(orCondition, uniqueFields));\n } else if ('NOT' in condition) {\n getUniqueFieldsFromCondition(condition.NOT, uniqueFields);\n } else {\n const leaf = condition.condition;\n uniqueFields.add(leaf.lhs.field);\n if (leaf.rhs && 'field' in leaf.rhs) {\n uniqueFields.add(leaf.rhs.field);\n }\n }\n return uniqueFields;\n}\n\n/**\n * This api is used to transform the fields present in {@link condition} to a condition builder fields structure\n * @param condition\n * @param fieldDefs meta fieldDefs which needs to be transformed to condition builder fields structure\n * @returns condition builder fields structure\n */\nfunction getConditionBuilderFieldsContract(\n condition: Condition,\n fieldDefs: FieldDef[]\n): ConditionBuilderFieldsConfig {\n const uniqueFieldsInCondition = getUniqueFieldsFromCondition(condition);\n const fieldDefsForFieldInConditions = fieldDefs.filter(field =>\n uniqueFieldsInCondition.has(field.name)\n );\n const conditionBuilderFields = [] as Field[];\n const conditionBuilderFieldsTypeMap = {} as Record<string, FieldType>;\n\n fieldDefsForFieldInConditions.forEach(field => {\n const type = RsToCBFieldTypeMap[field.type.toLowerCase()] ?? 'TEXT';\n conditionBuilderFields.push({\n id: field.name ? field.name : field.label,\n primary: field.name ? field.name : field.label,\n type\n });\n conditionBuilderFieldsTypeMap[field.name] =\n RsToCBFieldTypeMap[field.type.toLowerCase()] ?? 'TEXT';\n });\n\n return { conditionBuilderFields, conditionBuilderFieldsTypeMap };\n}\n\nfunction transformConditionForDateTimeType(condition: LeafCondition, timezone: string) {\n const { rhs } = condition;\n\n if (!rhs || !('value' in rhs)) return;\n\n if ('dateFunction' in rhs && rhs.dateFunction === 'HOURS_OF_DAY') {\n rhs.value = Number(rhs.value).toString().padStart(2, '0');\n return;\n }\n // Adjusting the date inputs for timezone offset.\n // For dateFunctionsWithRhsAsDateInput(HOURS, MINUTES) a date input is present in rhs, so it also needs to be adjusted.\n if (!('dateFunction' in rhs) || DateFunctionsWithRhsAsDateInput.includes(rhs.dateFunction)) {\n const isoDateString = dayjs.tz(rhs.value, timezone).toISOString();\n rhs.value = isoDateString;\n }\n}\n\nfunction transformConditionBasedOnType(\n condition: LeafCondition,\n fieldTypeMap: Record<string, FieldType>,\n meta: Meta\n) {\n const {\n lhs: { field }\n } = condition;\n const type = fieldTypeMap[field];\n const { timezone } = meta;\n\n // For date time the rhs values need to be adjusted for timezone offset.\n if (type === 'DATE_TIME') {\n transformConditionForDateTimeType(condition, timezone!);\n }\n}\n\nfunction transformCondition(\n condition: Condition,\n meta: Meta,\n conditionBuilderFieldsConfig: ConditionBuilderFieldsConfig\n): Condition {\n const { conditionBuilderFields: fields, conditionBuilderFieldsTypeMap: fieldsTypeMap } =\n conditionBuilderFieldsConfig;\n // cspell:ignore DDTHH\n const currentDateTimeWithTimeZone = dayjs().tz(meta.timezone).format('YYYY-MM-DDTHH:mm:ss.SSS');\n\n condition = transformComplexCondition(condition, fields, currentDateTimeWithTimeZone);\n const { logic, conditions } = splitConditionTree(condition);\n\n Object.entries(conditions).forEach(([, singleCondition]) => {\n transformConditionBasedOnType(singleCondition, fieldsTypeMap, meta);\n });\n\n return (\n parseLogicString(logic, conditions) as {\n condition: Condition;\n }\n ).condition;\n}\n\n/**\n * Retrieves columns that are referenced in the given condition but are hidden.\n * @param condition - The condition\n * @param hiddenColumns - An array of hidden columns\n * @returns An array of hidden columns that are referenced in the condition.\n */\nexport const getHiddenColumnsReferredInCondition = (\n condition: Condition,\n hiddenColumns: State['hiddenColumns']\n): string[] => {\n const fields = getUniqueFieldsFromCondition(condition);\n return [...fields].filter(field => hiddenColumns?.includes(field));\n};\n\n/**\n * Evaluates whether the the `data` specified in {@link conditionConfig} satisfies the `condition`.\n * @param meta - Repeating structures meta\n * @param conditionConfig - condition config.\n * @returns true if the data satisfies condition, otherwise false.\n */\nexport default function evaluateCondition(\n meta: Meta,\n conditionConfig: { condition: Condition; data: RowData }\n): boolean {\n let { condition } = conditionConfig;\n const { data } = conditionConfig;\n const { fieldDefs } = meta;\n const { conditionBuilderFields, conditionBuilderFieldsTypeMap } =\n getConditionBuilderFieldsContract(condition, fieldDefs);\n\n // TODO: Remove this once evaluateCondition handles Timezone offset.\n condition = transformCondition(deepCopy(condition), meta, {\n conditionBuilderFields,\n conditionBuilderFieldsTypeMap\n });\n\n return evaluateConditionUtility(condition, data, conditionBuilderFields, DOT_DELIMITER);\n}\n"]}
1
+ {"version":3,"file":"condition-utils.js","sourceRoot":"","sources":["../../../../src/core/utils/condition-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\nimport tZone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\n\nimport {\n evaluateCondition as evaluateConditionUtility,\n parseLogicString,\n splitConditionTree,\n transformComplexCondition,\n type Condition,\n type Field,\n type LeafCondition,\n type FieldType\n} from '@pega/cosmos-react-condition-builder';\n\nimport type { FieldDef, Meta } from '../../../types/Meta.types';\nimport type { RowData } from '../generators/RowGenerator.types';\nimport type { State } from '../../../types/State.types';\n\nimport { deepCopy } from './util';\n\ndayjs.extend(tZone);\ndayjs.extend(utc);\n\nexport const RsToCBFieldTypeMap: Record<string, FieldType> = {\n text: 'TEXT',\n number: 'DECIMAL',\n boolean: 'BOOLEAN',\n datetime: 'DATE_TIME',\n date: 'DATE_ONLY',\n time: 'TIME_ONLY'\n} as const;\n\nconst DateFunctionsWithRhsAsDateInput = ['HOURS', 'MINUTES'];\nconst DOT_DELIMITER = '.';\n\ntype ConditionBuilderFieldsConfig = {\n conditionBuilderFields: Field[];\n conditionBuilderFieldsTypeMap: Record<string, FieldType>;\n};\n\nfunction getUniqueFieldsFromCondition(condition: Condition, uniqueFields: Set<string> = new Set()) {\n if ('AND' in condition) {\n condition.AND.forEach(andCondition => getUniqueFieldsFromCondition(andCondition, uniqueFields));\n } else if ('OR' in condition) {\n condition.OR.forEach(orCondition => getUniqueFieldsFromCondition(orCondition, uniqueFields));\n } else if ('NOT' in condition) {\n getUniqueFieldsFromCondition(condition.NOT, uniqueFields);\n } else {\n const leaf = condition.condition;\n uniqueFields.add(leaf.lhs.field);\n if (leaf.rhs && 'field' in leaf.rhs) {\n uniqueFields.add(leaf.rhs.field);\n }\n }\n return uniqueFields;\n}\n\n/**\n * This api is used to transform the fields present in {@link condition} to a condition builder fields structure\n * @param condition\n * @param fieldDefs meta fieldDefs which needs to be transformed to condition builder fields structure\n * @returns condition builder fields structure\n */\nfunction getConditionBuilderFieldsContract(\n condition: Condition,\n fieldDefs: FieldDef[]\n): ConditionBuilderFieldsConfig {\n const uniqueFieldsInCondition = getUniqueFieldsFromCondition(condition);\n const fieldDefsForFieldInConditions = fieldDefs.filter(field =>\n uniqueFieldsInCondition.has(field.name)\n );\n const conditionBuilderFields = [] as Field[];\n const conditionBuilderFieldsTypeMap = {} as Record<string, FieldType>;\n\n fieldDefsForFieldInConditions.forEach(field => {\n const type = RsToCBFieldTypeMap[field.type.toLowerCase()] ?? 'TEXT';\n conditionBuilderFields.push({\n id: field.name ? field.name : field.label,\n primary: field.name ? field.name : field.label,\n type\n });\n conditionBuilderFieldsTypeMap[field.name] =\n RsToCBFieldTypeMap[field.type.toLowerCase()] ?? 'TEXT';\n });\n\n return { conditionBuilderFields, conditionBuilderFieldsTypeMap };\n}\n\nfunction transformConditionForDateTimeType(condition: LeafCondition, timezone: string) {\n const { rhs } = condition;\n\n if (!rhs || !('value' in rhs)) return;\n\n if ('dateFunction' in rhs && rhs.dateFunction === 'HOURS_OF_DAY') {\n rhs.value = Number(rhs.value).toString().padStart(2, '0');\n return;\n }\n // Adjusting the date inputs for timezone offset.\n // For dateFunctionsWithRhsAsDateInput(HOURS, MINUTES) a date input is present in rhs, so it also needs to be adjusted.\n if (!('dateFunction' in rhs) || DateFunctionsWithRhsAsDateInput.includes(rhs.dateFunction)) {\n const isoDateString = dayjs.tz(rhs.value, timezone).toISOString();\n rhs.value = isoDateString;\n }\n}\n\nfunction transformConditionBasedOnType(\n condition: LeafCondition,\n fieldTypeMap: Record<string, FieldType>,\n meta: Meta\n) {\n const {\n lhs: { field }\n } = condition;\n const type = fieldTypeMap[field];\n const { timezone } = meta;\n\n // For date time the rhs values need to be adjusted for timezone offset.\n if (type === 'DATE_TIME') {\n transformConditionForDateTimeType(condition, timezone!);\n }\n}\n\nfunction transformCondition(\n condition: Condition,\n meta: Meta,\n conditionBuilderFieldsConfig: ConditionBuilderFieldsConfig\n): Condition {\n const { conditionBuilderFields: fields, conditionBuilderFieldsTypeMap: fieldsTypeMap } =\n conditionBuilderFieldsConfig;\n // cspell:ignore DDTHH\n const currentDateTimeWithTimeZone = dayjs().tz(meta.timezone).format('YYYY-MM-DDTHH:mm:ss.SSS');\n\n condition = transformComplexCondition(condition, fields, true, currentDateTimeWithTimeZone);\n const { logic, conditions } = splitConditionTree(condition);\n\n Object.entries(conditions).forEach(([, singleCondition]) => {\n transformConditionBasedOnType(singleCondition, fieldsTypeMap, meta);\n });\n\n return (\n parseLogicString(logic, conditions) as {\n condition: Condition;\n }\n ).condition;\n}\n\n/**\n * Retrieves columns that are referenced in the given condition but are hidden.\n * @param condition - The condition\n * @param hiddenColumns - An array of hidden columns\n * @returns An array of hidden columns that are referenced in the condition.\n */\nexport const getHiddenColumnsReferredInCondition = (\n condition: Condition,\n hiddenColumns: State['hiddenColumns']\n): string[] => {\n const fields = getUniqueFieldsFromCondition(condition);\n return [...fields].filter(field => hiddenColumns?.includes(field));\n};\n\n/**\n * Evaluates whether the the `data` specified in {@link conditionConfig} satisfies the `condition`.\n * @param meta - Repeating structures meta\n * @param conditionConfig - condition config.\n * @returns true if the data satisfies condition, otherwise false.\n */\nexport default function evaluateCondition(\n meta: Meta,\n conditionConfig: { condition: Condition; data: RowData }\n): boolean {\n let { condition } = conditionConfig;\n const { data } = conditionConfig;\n const { fieldDefs } = meta;\n const { conditionBuilderFields, conditionBuilderFieldsTypeMap } =\n getConditionBuilderFieldsContract(condition, fieldDefs);\n\n // TODO: Remove this once evaluateCondition handles Timezone offset.\n condition = transformCondition(deepCopy(condition), meta, {\n conditionBuilderFields,\n conditionBuilderFieldsTypeMap\n });\n\n return evaluateConditionUtility(condition, data, conditionBuilderFields, DOT_DELIMITER);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/lists-core",
3
- "version": "9.0.0-build.9.7",
3
+ "version": "9.0.0-build.9.9",
4
4
  "description": "Core headless UI library that the users can use to write their own UI and create repeating structures like table, gallery, timeline etc.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Pegasystems",
@@ -14,8 +14,8 @@
14
14
  "build": "tsc -b tsconfig.build.json"
15
15
  },
16
16
  "dependencies": {
17
- "@pega/cosmos-react-condition-builder": "9.0.0-build.9.7",
18
- "@pega/cosmos-react-core": "9.0.0-build.9.7",
17
+ "@pega/cosmos-react-condition-builder": "9.0.0-build.9.9",
18
+ "@pega/cosmos-react-core": "9.0.0-build.9.9",
19
19
  "@types/lodash.get": "^4.4.9",
20
20
  "@types/uuid": "^9.0.0",
21
21
  "dayjs": "^1.11.13",