tuain-ng-forms-lib 17.2.22 → 17.2.23

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.
Files changed (106) hide show
  1. package/esm2022/lib/classes/forms/action.mjs +106 -0
  2. package/esm2022/lib/classes/forms/element.mjs +25 -0
  3. package/esm2022/lib/classes/forms/field.mjs +474 -0
  4. package/esm2022/lib/classes/forms/form.constants.mjs +26 -0
  5. package/esm2022/lib/classes/forms/form.mjs +608 -0
  6. package/esm2022/lib/classes/forms/piece-propagate.mjs +39 -0
  7. package/esm2022/lib/classes/forms/piece.mjs +134 -0
  8. package/esm2022/lib/classes/forms/section.mjs +151 -0
  9. package/esm2022/lib/classes/forms/subsection.mjs +99 -0
  10. package/esm2022/lib/classes/forms/table/action.mjs +38 -0
  11. package/esm2022/lib/classes/forms/table/column.mjs +74 -0
  12. package/esm2022/lib/classes/forms/table/row-data.mjs +116 -0
  13. package/esm2022/lib/classes/forms/table/table.mjs +535 -0
  14. package/esm2022/lib/components/elements/action.component.mjs +70 -0
  15. package/esm2022/lib/components/elements/field.component.mjs +115 -0
  16. package/esm2022/lib/components/elements/layout/element.component.mjs +21 -0
  17. package/esm2022/lib/components/elements/layout/form-error.component.mjs +23 -0
  18. package/esm2022/lib/components/elements/layout/form-header.component.mjs +23 -0
  19. package/esm2022/lib/components/elements/layout/piece.component.mjs +64 -0
  20. package/esm2022/lib/components/elements/layout/section.component.mjs +56 -0
  21. package/esm2022/lib/components/elements/layout/sub-section.component.mjs +56 -0
  22. package/esm2022/lib/components/elements/tables/table-record-action.component.mjs +72 -0
  23. package/esm2022/lib/components/elements/tables/table-record-field.component.mjs +31 -0
  24. package/esm2022/lib/components/elements/tables/table.component.mjs +109 -0
  25. package/esm2022/lib/components/forms/basic-form.mjs +1408 -0
  26. package/esm2022/lib/services/event-manager.service.mjs +43 -0
  27. package/esm2022/lib/services/file-manager.service.mjs +7 -0
  28. package/esm2022/lib/services/form-manager.service.mjs +81 -0
  29. package/esm2022/lib/tuain-ng-forms-lib.module.mjs +71 -0
  30. package/esm2022/public-api.mjs +19 -0
  31. package/esm2022/tuain-ng-forms-lib.mjs +5 -0
  32. package/fesm2022/tuain-ng-forms-lib.mjs +4602 -0
  33. package/fesm2022/tuain-ng-forms-lib.mjs.map +1 -0
  34. package/index.d.ts +5 -0
  35. package/lib/classes/forms/action.d.ts +40 -0
  36. package/lib/classes/forms/element.d.ts +9 -0
  37. package/lib/classes/forms/field.d.ts +206 -0
  38. package/lib/classes/forms/form.constants.d.ts +25 -0
  39. package/lib/classes/forms/form.d.ts +232 -0
  40. package/lib/classes/forms/piece-propagate.d.ts +13 -0
  41. package/lib/classes/forms/piece.d.ts +51 -0
  42. package/lib/classes/forms/section.d.ts +43 -0
  43. package/lib/classes/forms/subsection.d.ts +42 -0
  44. package/lib/classes/forms/table/action.d.ts +16 -0
  45. package/lib/classes/forms/table/column.d.ts +33 -0
  46. package/lib/classes/forms/table/row-data.d.ts +14 -0
  47. package/lib/classes/forms/table/table.d.ts +145 -0
  48. package/lib/components/elements/action.component.d.ts +22 -0
  49. package/lib/components/elements/field.component.d.ts +47 -0
  50. package/lib/components/elements/layout/element.component.d.ts +8 -0
  51. package/lib/components/elements/layout/form-error.component.d.ts +8 -0
  52. package/lib/components/elements/layout/form-header.component.d.ts +9 -0
  53. package/lib/components/elements/layout/piece.component.d.ts +18 -0
  54. package/lib/components/elements/layout/section.component.d.ts +13 -0
  55. package/lib/components/elements/layout/sub-section.component.d.ts +13 -0
  56. package/lib/components/elements/tables/table-record-action.component.d.ts +18 -0
  57. package/lib/components/elements/tables/table-record-field.component.d.ts +12 -0
  58. package/lib/components/elements/tables/table.component.d.ts +44 -0
  59. package/lib/components/forms/basic-form.d.ts +257 -0
  60. package/lib/services/event-manager.service.d.ts +11 -0
  61. package/lib/services/file-manager.service.d.ts +6 -0
  62. package/lib/services/form-manager.service.d.ts +28 -0
  63. package/lib/tuain-ng-forms-lib.module.d.ts +20 -0
  64. package/package.json +16 -2
  65. package/{src/public-api.ts → public-api.d.ts} +0 -5
  66. package/.browserslistrc +0 -16
  67. package/.yarn/cache/nanoid-npm-4.0.0-924f5c6312-7d5946df5c.zip +0 -0
  68. package/.yarn/cache/tslib-npm-2.4.1-36f0ed04db-19480d6e03.zip +0 -0
  69. package/.yarn/cache/yn-npm-5.0.0-b001dab23c-f0ec7710d3.zip +0 -0
  70. package/.yarn/install-state.gz +0 -0
  71. package/karma.conf.js +0 -44
  72. package/ng-package.json +0 -11
  73. package/src/lib/classes/forms/action.ts +0 -117
  74. package/src/lib/classes/forms/element.ts +0 -26
  75. package/src/lib/classes/forms/field.ts +0 -522
  76. package/src/lib/classes/forms/form.constants.ts +0 -28
  77. package/src/lib/classes/forms/form.ts +0 -692
  78. package/src/lib/classes/forms/piece-propagate.ts +0 -47
  79. package/src/lib/classes/forms/piece.ts +0 -164
  80. package/src/lib/classes/forms/section.ts +0 -165
  81. package/src/lib/classes/forms/subsection.ts +0 -109
  82. package/src/lib/classes/forms/table/action.ts +0 -41
  83. package/src/lib/classes/forms/table/column.ts +0 -94
  84. package/src/lib/classes/forms/table/row-data.ts +0 -121
  85. package/src/lib/classes/forms/table/table.ts +0 -582
  86. package/src/lib/components/elements/action.component.ts +0 -70
  87. package/src/lib/components/elements/field.component.ts +0 -115
  88. package/src/lib/components/elements/layout/element.component.ts +0 -14
  89. package/src/lib/components/elements/layout/form-error.component.ts +0 -11
  90. package/src/lib/components/elements/layout/form-header.component.ts +0 -14
  91. package/src/lib/components/elements/layout/piece.component.ts +0 -60
  92. package/src/lib/components/elements/layout/section.component.ts +0 -52
  93. package/src/lib/components/elements/layout/sub-section.component.ts +0 -52
  94. package/src/lib/components/elements/tables/table-record-action.component.ts +0 -66
  95. package/src/lib/components/elements/tables/table-record-field.component.ts +0 -20
  96. package/src/lib/components/elements/tables/table.component.ts +0 -112
  97. package/src/lib/components/forms/basic-form.ts +0 -1464
  98. package/src/lib/services/event-manager.service.ts +0 -45
  99. package/src/lib/services/file-manager.service.ts +0 -7
  100. package/src/lib/services/form-manager.service.ts +0 -89
  101. package/src/lib/services/icon-dictionary.service.ts +0 -159
  102. package/src/lib/tuain-ng-forms-lib.module.ts +0 -40
  103. package/src/test.ts +0 -27
  104. package/tsconfig.lib.json +0 -15
  105. package/tsconfig.lib.prod.json +0 -10
  106. package/tsconfig.spec.json +0 -17
@@ -0,0 +1,74 @@
1
+ import { FormPiece } from '../piece';
2
+ export class RecordTableColumn extends FormPiece {
3
+ fieldCode = '';
4
+ fieldTitle = '';
5
+ fieldType = '';
6
+ fieldAlignment = '';
7
+ fieldFormat = '';
8
+ sortable = true;
9
+ searchable = true;
10
+ sortDirections = [];
11
+ // Filtros
12
+ filterVisible = false;
13
+ filterDef = null;
14
+ filterSetup = null;
15
+ constructor(recTableColReceived, formConfig) {
16
+ super(recTableColReceived, formConfig);
17
+ this.filterDef = null;
18
+ if (recTableColReceived) {
19
+ this.fieldCode = recTableColReceived.fieldCode;
20
+ this.fieldTitle = recTableColReceived.fieldTitle;
21
+ this.fieldType = recTableColReceived.fieldTypeCode || this._formConfig.fieldTypes.text;
22
+ const defaultTypeAlignment = (this._formConfig.tableFieldStyles[this.fieldType] != null) ? this._formConfig.tableFieldStyles[this.fieldType]['text-align'] : 'left';
23
+ this.fieldAlignment = (recTableColReceived.alignment != null) ? recTableColReceived.alignment.toLowerCase() : defaultTypeAlignment;
24
+ this._absoluteVisible = recTableColReceived?.visible ?? true;
25
+ this.sortable = recTableColReceived?.sortable ?? false;
26
+ this.searchable = recTableColReceived?.searchable ?? true;
27
+ this.sortDirections = (this.sortable) ? ['ascend', 'descend'] : [];
28
+ this.fieldFormat = recTableColReceived.format || '';
29
+ this.customAttributes = recTableColReceived?.customAttributes ?? {};
30
+ }
31
+ }
32
+ setSearchable(searchable = true) { this.searchable = searchable; }
33
+ hideFilter() {
34
+ this.filterVisible = false;
35
+ }
36
+ addFilterDefinition(filterDefinition) {
37
+ this.filterDef = {
38
+ operators: filterDefinition.operators,
39
+ options: filterDefinition.options ?? null,
40
+ };
41
+ }
42
+ get filterDefinition() {
43
+ return this.filterDef;
44
+ }
45
+ addFilter(columnValues, operator) {
46
+ this.filterSetup = {
47
+ fieldCode: this.fieldCode,
48
+ operator: operator ?? this.filterDef?.operators[0] ?? 'IN',
49
+ values: columnValues,
50
+ };
51
+ }
52
+ get filter() {
53
+ return this.filterSetup;
54
+ }
55
+ removeFilter() {
56
+ this.filterSetup = null;
57
+ }
58
+ get options() {
59
+ if (this.filterDef?.operators?.length === 1 && this.filterDef?.operators[0] === 'IN') {
60
+ return this.filterDef?.options;
61
+ }
62
+ return null;
63
+ }
64
+ serSortDirections(ascend, descend) {
65
+ this.sortDirections = [];
66
+ if (ascend) {
67
+ this.sortDirections.unshift('ascend');
68
+ }
69
+ if (descend) {
70
+ this.sortDirections.unshift('descend');
71
+ }
72
+ }
73
+ }
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy90YWJsZS9jb2x1bW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQVlyQyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsU0FBUztJQUM5QyxTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3ZCLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDeEIsU0FBUyxHQUFXLEVBQUUsQ0FBQztJQUN2QixjQUFjLEdBQVcsRUFBRSxDQUFDO0lBQzVCLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsUUFBUSxHQUFZLElBQUksQ0FBQztJQUN6QixVQUFVLEdBQVksSUFBSSxDQUFDO0lBQzNCLGNBQWMsR0FBYSxFQUFFLENBQUM7SUFDOUIsVUFBVTtJQUNWLGFBQWEsR0FBWSxLQUFLLENBQUM7SUFDL0IsU0FBUyxHQUFxQixJQUFJLENBQUM7SUFDbkMsV0FBVyxHQUF1QixJQUFJLENBQUM7SUFFdkMsWUFBWSxtQkFBbUIsRUFBRSxVQUFVO1FBQ3pDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7WUFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7WUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ3ZGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxJQUFJLENBQUMs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LGNBQWMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1QaWVjZSB9IGZyb20gJy4uL3BpZWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJEZWYge1xuICBvcGVyYXRvcnM6IHN0cmluZ1tdO1xuICBvcHRpb25zOiBhbnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJTZXR1cCB7XG4gIGZpZWxkQ29kZTogc3RyaW5nO1xuICBvcGVyYXRvcjogc3RyaW5nO1xuICB2YWx1ZXM6IGFueVtdO1xufVxuZXhwb3J0IGNsYXNzIFJlY29yZFRhYmxlQ29sdW1uIGV4dGVuZHMgRm9ybVBpZWNlIHtcbiAgZmllbGRDb2RlOiBzdHJpbmcgPSAnJztcbiAgZmllbGRUaXRsZTogc3RyaW5nID0gJyc7XG4gIGZpZWxkVHlwZTogc3RyaW5nID0gJyc7XG4gIGZpZWxkQWxpZ25tZW50OiBzdHJpbmcgPSAnJztcbiAgZmllbGRGb3JtYXQ6IHN0cmluZyA9ICcnO1xuICBzb3J0YWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIHNlYXJjaGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBzb3J0RGlyZWN0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgLy8gRmlsdHJvc1xuICBmaWx0ZXJWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGZpbHRlckRlZjogRmlsdGVyRGVmIHwgbnVsbCA9IG51bGw7XG4gIGZpbHRlclNldHVwOiBGaWx0ZXJTZXR1cCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHJlY1RhYmxlQ29sUmVjZWl2ZWQsIGZvcm1Db25maWcpIHtcbiAgICBzdXBlcihyZWNUYWJsZUNvbFJlY2VpdmVkLCBmb3JtQ29uZmlnKTtcbiAgICB0aGlzLmZpbHRlckRlZiA9IG51bGw7XG4gICAgaWYgKHJlY1RhYmxlQ29sUmVjZWl2ZWQpIHtcbiAgICAgIHRoaXMuZmllbGRDb2RlID0gcmVjVGFibGVDb2xSZWNlaXZlZC5maWVsZENvZGU7XG4gICAgICB0aGlzLmZpZWxkVGl0bGUgPSByZWNUYWJsZUNvbFJlY2VpdmVkLmZpZWxkVGl0bGU7XG4gICAgICB0aGlzLmZpZWxkVHlwZSA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQuZmllbGRUeXBlQ29kZSB8fCB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMudGV4dDtcbiAgICAgIGNvbnN0IGRlZmF1bHRUeXBlQWxpZ25tZW50ID0gKHRoaXMuX2Zvcm1Db25maWcudGFibGVGaWVsZFN0eWxlc1t0aGlzLmZpZWxkVHlwZV0gIT0gbnVsbCkgPyB0aGlzLl9mb3JtQ29uZmlnLnRhYmxlRmllbGRTdHlsZXNbdGhpcy5maWVsZFR5cGVdWyd0ZXh0LWFsaWduJ10gOiAnbGVmdCc7XG4gICAgICB0aGlzLmZpZWxkQWxpZ25tZW50ID0gKHJlY1RhYmxlQ29sUmVjZWl2ZWQuYWxpZ25tZW50ICE9IG51bGwpID8gcmVjVGFibGVDb2xSZWNlaXZlZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgICAgdGhpcy5fYWJzb2x1dGVWaXNpYmxlID0gcmVjVGFibGVDb2xSZWNlaXZlZD8udmlzaWJsZSA/PyB0cnVlO1xuICAgICAgdGhpcy5zb3J0YWJsZSA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQ/LnNvcnRhYmxlID8/IGZhbHNlO1xuICAgICAgdGhpcy5zZWFyY2hhYmxlID0gcmVjVGFibGVDb2xSZWNlaXZlZD8uc2VhcmNoYWJsZSA/PyB0cnVlO1xuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9ucyA9ICh0aGlzLnNvcnRhYmxlKSA/IFsnYXNjZW5kJywgJ2Rlc2NlbmQnXSA6IFtdO1xuICAgICAgdGhpcy5maWVsZEZvcm1hdCA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQuZm9ybWF0IHx8ICcnO1xuICAgICAgdGhpcy5jdXN0b21BdHRyaWJ1dGVzID0gcmVjVGFibGVDb2xSZWNlaXZlZD8uY3VzdG9tQXR0cmlidXRlcyA/PyB7fTtcbiAgICB9XG4gIH1cblxuICBzZXRTZWFyY2hhYmxlKHNlYXJjaGFibGUgPSB0cnVlKSB7IHRoaXMuc2VhcmNoYWJsZSA9IHNlYXJjaGFibGU7IH1cblxuICBoaWRlRmlsdGVyKCkge1xuICAgIHRoaXMuZmlsdGVyVmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgYWRkRmlsdGVyRGVmaW5pdGlvbihmaWx0ZXJEZWZpbml0aW9uKSB7XG4gICAgdGhpcy5maWx0ZXJEZWYgPSB7XG4gICAgICBvcGVyYXRvcnM6IGZpbHRlckRlZmluaXRpb24ub3BlcmF0b3JzLFxuICAgICAgb3B0aW9uczogZmlsdGVyRGVmaW5pdGlvbi5vcHRpb25zID8/IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJEZWZpbml0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckRlZjtcbiAgfVxuXG4gIGFkZEZpbHRlcihjb2x1bW5WYWx1ZXMsIG9wZXJhdG9yKSB7XG4gICAgdGhpcy5maWx0ZXJTZXR1cCA9IHtcbiAgICAgIGZpZWxkQ29kZTogdGhpcy5maWVsZENvZGUsXG4gICAgICBvcGVyYXRvcjogb3BlcmF0b3IgPz8gdGhpcy5maWx0ZXJEZWY/Lm9wZXJhdG9yc1swXSA/PyAnSU4nLFxuICAgICAgdmFsdWVzOiBjb2x1bW5WYWx1ZXMsXG4gICAgfVxuICB9XG5cbiAgZ2V0IGZpbHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJTZXR1cDtcbiAgfVxuXG4gIHJlbW92ZUZpbHRlcigpIHtcbiAgICB0aGlzLmZpbHRlclNldHVwID0gbnVsbDtcbiAgfVxuXG4gIGdldCBvcHRpb25zKCkge1xuICAgIGlmICh0aGlzLmZpbHRlckRlZj8ub3BlcmF0b3JzPy5sZW5ndGggPT09IDEgJiYgdGhpcy5maWx0ZXJEZWY/Lm9wZXJhdG9yc1swXSA9PT0gJ0lOJykge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyRGVmPy5vcHRpb25zO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHNlclNvcnREaXJlY3Rpb25zKGFzY2VuZDogYm9vbGVhbiwgZGVzY2VuZDogYm9vbGVhbikge1xuICAgIHRoaXMuc29ydERpcmVjdGlvbnMgPSBbXTtcbiAgICBpZiAoYXNjZW5kKSB7XG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb25zLnVuc2hpZnQoJ2FzY2VuZCcpO1xuICAgIH1cbiAgICBpZiAoZGVzY2VuZCkge1xuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9ucy51bnNoaWZ0KCdkZXNjZW5kJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,116 @@
1
+ import { operators } from '../form.constants';
2
+ export class TableRecordData {
3
+ recordId = null;
4
+ selected = false;
5
+ recordData = {};
6
+ constructor(recordReceived, recordDefinition, selectionFieldName = null) {
7
+ const { tableRecordId, recordData } = recordReceived;
8
+ this.recordId = tableRecordId;
9
+ if (!recordDefinition || recordDefinition.length === 0 || !recordData || recordData.length === 0) {
10
+ return;
11
+ }
12
+ const fieldNames = recordDefinition.map(column => column.fieldCode);
13
+ if (Array.isArray(recordData)) {
14
+ const rawRecordData = recordData.filter(fieldData => fieldData.fieldCode && fieldNames.includes(fieldData.fieldCode));
15
+ rawRecordData.forEach(fieldData => {
16
+ const { fieldCode, fieldValue } = fieldData;
17
+ const fieldDef = recordDefinition.find(column => column.fieldCode === fieldCode);
18
+ this.recordData[fieldCode] = fieldValue ?? '';
19
+ if (fieldCode === selectionFieldName) {
20
+ this.selected = fieldValue;
21
+ }
22
+ });
23
+ }
24
+ else {
25
+ const fields = Object.keys(recordData);
26
+ fields.forEach(fieldCode => {
27
+ const fieldValue = recordData[fieldCode];
28
+ const fieldDef = recordDefinition.find(column => column.fieldCode === fieldCode);
29
+ this.recordData[fieldCode] = fieldValue ?? '';
30
+ });
31
+ }
32
+ }
33
+ toggleSelect() { this.selected = !this.selected; }
34
+ select() { this.selected = true; }
35
+ unselect() { this.selected = false; }
36
+ get recordIdKey() {
37
+ return (typeof this.recordId === 'object')
38
+ ? JSON.stringify(this.recordId) : this.recordId;
39
+ }
40
+ getFieldValue(fieldCode) {
41
+ return (fieldCode && this.recordData) ? this.recordData[fieldCode] : null;
42
+ }
43
+ hasPattern(words, columnObj) {
44
+ if (!words || words.length === 0) {
45
+ return true;
46
+ }
47
+ for (const word of words) {
48
+ let wordIsPresent = false;
49
+ for (const fieldCode in this.recordData) {
50
+ const columnDef = columnObj?.[fieldCode];
51
+ if (columnDef?.searchable && this.recordData.hasOwnProperty(fieldCode)) {
52
+ const term = word.toUpperCase();
53
+ let fieldValue;
54
+ if (columnDef.fieldType.toUpperCase().includes('DATE')) {
55
+ fieldValue = this.recordData[fieldCode].substring(0, 16);
56
+ }
57
+ else {
58
+ fieldValue = this.recordData[fieldCode];
59
+ }
60
+ if (fieldValue.toString().toUpperCase().includes(term)) {
61
+ wordIsPresent = true;
62
+ break;
63
+ }
64
+ }
65
+ }
66
+ if (!wordIsPresent) {
67
+ return false;
68
+ }
69
+ }
70
+ return true;
71
+ }
72
+ hasCondition(columnFilters) {
73
+ if (!columnFilters || columnFilters.length === 0) {
74
+ return true;
75
+ }
76
+ for (const condition of columnFilters) {
77
+ const { fieldCode, operator, values } = condition;
78
+ if (this.recordData.hasOwnProperty(fieldCode)) {
79
+ const fieldValue = this.recordData[fieldCode];
80
+ const stringValue = fieldValue.toString().toUpperCase();
81
+ if (operator === operators.G && fieldValue <= values[0]) {
82
+ return false;
83
+ }
84
+ if (operator === operators.L && fieldValue >= values[0]) {
85
+ return false;
86
+ }
87
+ if (operator === operators.GE && fieldValue < values[0]) {
88
+ return false;
89
+ }
90
+ if (operator === operators.LE && fieldValue > values[0]) {
91
+ return false;
92
+ }
93
+ if (operator === operators.IN && !values.includes(fieldValue)) {
94
+ return false;
95
+ }
96
+ if (operator === operators.EQ) {
97
+ return fieldValue === values[0];
98
+ }
99
+ if (operator === operators.NEQ && fieldValue === values[0]) {
100
+ return false;
101
+ }
102
+ if (operator === operators.HAS && !stringValue.includes(values[0].toString().toUpperCase())) {
103
+ return false;
104
+ }
105
+ if (operator === operators.NOTHAS && stringValue.includes(values[0].toString().toUpperCase())) {
106
+ return false;
107
+ }
108
+ if (operator === operators.BETWEEN && (fieldValue < values[0] || fieldValue > values[1])) {
109
+ return false;
110
+ }
111
+ }
112
+ }
113
+ return true;
114
+ }
115
+ }
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3Jvdy1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxNQUFNLE9BQU8sZUFBZTtJQUMxQixRQUFRLEdBQWtCLElBQUksQ0FBQztJQUMvQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFVBQVUsR0FBUSxFQUFFLENBQUM7SUFFckIsWUFBWSxjQUFjLEVBQUUsZ0JBQXFDLEVBQUUscUJBQW9DLElBQUk7UUFDekcsTUFBTSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsR0FBRyxjQUFjLENBQUM7UUFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqRyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3RILGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ2hDLE1B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QztvQkFDOUYsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztnQkFDRCxJQUFJLFFBQVEsS0FBSyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDekYsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWNvcmRUYWJsZUNvbHVtbiB9IGZyb20gJy4vY29sdW1uJztcbmltcG9ydCB7IG9wZXJhdG9ycyB9IGZyb20gJy4uL2Zvcm0uY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlUmVjb3JkRGF0YSB7XG4gIHJlY29yZElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVjb3JkRGF0YTogYW55ID0ge307XG5cbiAgY29uc3RydWN0b3IocmVjb3JkUmVjZWl2ZWQsIHJlY29yZERlZmluaXRpb246IFJlY29yZFRhYmxlQ29sdW1uW10sIHNlbGVjdGlvbkZpZWxkTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICBjb25zdCB7IHRhYmxlUmVjb3JkSWQsIHJlY29yZERhdGEgfSA9IHJlY29yZFJlY2VpdmVkO1xuICAgIHRoaXMucmVjb3JkSWQgPSB0YWJsZVJlY29yZElkO1xuICAgIGlmICghcmVjb3JkRGVmaW5pdGlvbiB8fCByZWNvcmREZWZpbml0aW9uLmxlbmd0aCA9PT0gMCB8fCAhcmVjb3JkRGF0YSB8fCByZWNvcmREYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZE5hbWVzID0gcmVjb3JkRGVmaW5pdGlvbi5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZENvZGUpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlY29yZERhdGEpKSB7XG4gICAgICBjb25zdCByYXdSZWNvcmREYXRhID0gcmVjb3JkRGF0YS5maWx0ZXIoZmllbGREYXRhID0+IGZpZWxkRGF0YS5maWVsZENvZGUgJiYgZmllbGROYW1lcy5pbmNsdWRlcyhmaWVsZERhdGEuZmllbGRDb2RlKSk7XG4gICAgICByYXdSZWNvcmREYXRhLmZvckVhY2goZmllbGREYXRhID0+IHtcbiAgICAgICAgY29uc3QgeyBmaWVsZENvZGUsIGZpZWxkVmFsdWUgfSA9IGZpZWxkRGF0YTtcbiAgICAgICAgY29uc3QgZmllbGREZWYgPSByZWNvcmREZWZpbml0aW9uLmZpbmQoY29sdW1uID0+IGNvbHVtbi5maWVsZENvZGUgPT09IGZpZWxkQ29kZSk7XG4gICAgICAgIHRoaXMucmVjb3JkRGF0YVtmaWVsZENvZGVdID0gZmllbGRWYWx1ZSA/PyAnJztcbiAgICAgICAgaWYgKGZpZWxkQ29kZSA9PT0gc2VsZWN0aW9uRmllbGROYW1lKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGZpZWxkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaWVsZHMgPSBPYmplY3Qua2V5cyhyZWNvcmREYXRhKTtcbiAgICAgIGZpZWxkcy5mb3JFYWNoKGZpZWxkQ29kZSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSByZWNvcmREYXRhW2ZpZWxkQ29kZV07XG4gICAgICAgIGNvbnN0IGZpZWxkRGVmID0gcmVjb3JkRGVmaW5pdGlvbi5maW5kKGNvbHVtbiA9PiBjb2x1bW4uZmllbGRDb2RlID09PSBmaWVsZENvZGUpO1xuICAgICAgICB0aGlzLnJlY29yZERhdGFbZmllbGRDb2RlXSA9IGZpZWxkVmFsdWUgPz8gJyc7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVTZWxlY3QoKSB7IHRoaXMuc2VsZWN0ZWQgPSAhdGhpcy5zZWxlY3RlZDsgfVxuICBzZWxlY3QoKSB7IHRoaXMuc2VsZWN0ZWQgPSB0cnVlOyB9XG4gIHVuc2VsZWN0KCkgeyB0aGlzLnNlbGVjdGVkID0gZmFsc2U7IH1cblxuICBnZXQgcmVjb3JkSWRLZXkoKSB7XG4gICAgcmV0dXJuICh0eXBlb2YgdGhpcy5yZWNvcmRJZCA9PT0gJ29iamVjdCcpXG4gICAgICA/IEpTT04uc3RyaW5naWZ5KHRoaXMucmVjb3JkSWQpIDogdGhpcy5yZWNvcmRJZDtcbiAgfVxuXG4gIGdldEZpZWxkVmFsdWUoZmllbGRDb2RlKTogYW55IHtcbiAgICByZXR1cm4gKGZpZWxkQ29kZSAmJiB0aGlzLnJlY29yZERhdGEpID8gdGhpcy5yZWNvcmREYXRhW2ZpZWxkQ29kZV0gOiBudWxsO1xuICB9XG5cbiAgaGFzUGF0dGVybih3b3JkcywgY29sdW1uT2JqKSB7XG4gICAgaWYgKCF3b3JkcyB8fCB3b3Jkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHdvcmQgb2Ygd29yZHMpIHtcbiAgICAgIGxldCB3b3JkSXNQcmVzZW50ID0gZmFsc2U7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkQ29kZSBpbiB0aGlzLnJlY29yZERhdGEpIHtcbiAgICAgICAgY29uc3QgY29sdW1uRGVmID0gY29sdW1uT2JqPy5bZmllbGRDb2RlXTtcbiAgICAgICAgaWYgKGNvbHVtbkRlZj8uc2VhcmNoYWJsZSAmJiB0aGlzLnJlY29yZERhdGEuaGFzT3duUHJvcGVydHkoZmllbGRDb2RlKSkge1xuICAgICAgICAgIGNvbnN0IHRlcm0gPSB3b3JkLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgbGV0IGZpZWxkVmFsdWU7XG4gICAgICAgICAgaWYgKGNvbHVtbkRlZi5maWVsZFR5cGUudG9VcHBlckNhc2UoKS5pbmNsdWRlcygnREFURScpKSB7XG4gICAgICAgICAgICBmaWVsZFZhbHVlID0gdGhpcy5yZWNvcmREYXRhW2ZpZWxkQ29kZV0uc3Vic3RyaW5nKDAsIDE2KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmllbGRWYWx1ZSA9IHRoaXMucmVjb3JkRGF0YVtmaWVsZENvZGVdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmllbGRWYWx1ZS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXModGVybSkpIHtcbiAgICAgICAgICAgIHdvcmRJc1ByZXNlbnQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXdvcmRJc1ByZXNlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGhhc0NvbmRpdGlvbihjb2x1bW5GaWx0ZXJzKSB7XG4gICAgaWYgKCFjb2x1bW5GaWx0ZXJzIHx8IGNvbHVtbkZpbHRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgY29sdW1uRmlsdGVycykge1xuICAgICAgY29uc3QgeyBmaWVsZENvZGUsIG9wZXJhdG9yLCB2YWx1ZXMgfSA9IGNvbmRpdGlvbjtcbiAgICAgIGlmICh0aGlzLnJlY29yZERhdGEuaGFzT3duUHJvcGVydHkoZmllbGRDb2RlKSkge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5yZWNvcmREYXRhW2ZpZWxkQ29kZV07XG4gICAgICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gZmllbGRWYWx1ZS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLkcgJiYgZmllbGRWYWx1ZSA8PSB2YWx1ZXNbMF0pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuTCAmJiBmaWVsZFZhbHVlID49IHZhbHVlc1swXSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5HRSAmJiBmaWVsZFZhbHVlIDwgdmFsdWVzWzBdKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLkxFICYmIGZpZWxkVmFsdWUgPiB2YWx1ZXNbMF0pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuSU4gJiYgIXZhbHVlcy5pbmNsdWRlcyhmaWVsZFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5FUSkge1xuICAgICAgICAgIHJldHVybiBmaWVsZFZhbHVlID09PSB2YWx1ZXNbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBvcGVyYXRvcnMuTkVRICYmIGZpZWxkVmFsdWUgPT09IHZhbHVlc1swXSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5IQVMgJiYgIXN0cmluZ1ZhbHVlLmluY2x1ZGVzKHZhbHVlc1swXS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gb3BlcmF0b3JzLk5PVEhBUyAmJiBzdHJpbmdWYWx1ZS5pbmNsdWRlcyh2YWx1ZXNbMF0udG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3BlcmF0b3IgPT09IG9wZXJhdG9ycy5CRVRXRUVOICYmIChmaWVsZFZhbHVlIDwgdmFsdWVzWzBdIHx8IGZpZWxkVmFsdWUgPiB2YWx1ZXNbMV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=