tuain-ng-forms-lib 14.0.2 → 14.0.3

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 (99) hide show
  1. package/esm2020/lib/classes/forms/action.mjs +35 -0
  2. package/esm2020/lib/classes/forms/element.mjs +76 -0
  3. package/esm2020/lib/classes/forms/field.mjs +321 -0
  4. package/esm2020/lib/classes/forms/form.constants.mjs +26 -0
  5. package/esm2020/lib/classes/forms/form.mjs +422 -0
  6. package/esm2020/lib/classes/forms/section.mjs +132 -0
  7. package/esm2020/lib/classes/forms/subsection.mjs +70 -0
  8. package/esm2020/lib/classes/forms/table/action.mjs +22 -0
  9. package/esm2020/lib/classes/forms/table/column.mjs +61 -0
  10. package/esm2020/lib/classes/forms/table/row-data.mjs +111 -0
  11. package/esm2020/lib/classes/forms/table/table.mjs +372 -0
  12. package/esm2020/lib/components/elements/action.component.mjs +58 -0
  13. package/esm2020/lib/components/elements/field.component.mjs +90 -0
  14. package/esm2020/lib/components/elements/layout/element.component.mjs +31 -0
  15. package/esm2020/lib/components/elements/layout/form-error.component.mjs +20 -0
  16. package/esm2020/lib/components/elements/layout/form-header.component.mjs +30 -0
  17. package/esm2020/lib/components/elements/layout/section.component.mjs +22 -0
  18. package/esm2020/lib/components/elements/layout/sub-section.component.mjs +24 -0
  19. package/esm2020/lib/components/elements/tables/table-record-action.component.mjs +40 -0
  20. package/esm2020/lib/components/elements/tables/table-record-field.component.mjs +25 -0
  21. package/esm2020/lib/components/elements/tables/table.component.mjs +95 -0
  22. package/esm2020/lib/components/forms/basic-form.mjs +1425 -0
  23. package/esm2020/lib/services/event-manager.service.mjs +18 -0
  24. package/esm2020/lib/services/file-manager.service.mjs +6 -0
  25. package/esm2020/lib/services/form-manager.service.mjs +80 -0
  26. package/esm2020/lib/tuain-ng-forms-lib.module.mjs +71 -0
  27. package/esm2020/public-api.mjs +19 -0
  28. package/esm2020/tuain-ng-forms-lib.mjs +5 -0
  29. package/fesm2015/tuain-ng-forms-lib.mjs +3803 -0
  30. package/fesm2015/tuain-ng-forms-lib.mjs.map +1 -0
  31. package/fesm2020/tuain-ng-forms-lib.mjs +3634 -0
  32. package/fesm2020/tuain-ng-forms-lib.mjs.map +1 -0
  33. package/lib/classes/forms/action.d.ts +22 -0
  34. package/lib/classes/forms/element.d.ts +41 -0
  35. package/lib/classes/forms/field.d.ts +109 -0
  36. package/lib/classes/forms/form.constants.d.ts +25 -0
  37. package/lib/classes/forms/form.d.ts +134 -0
  38. package/lib/classes/forms/section.d.ts +39 -0
  39. package/lib/classes/forms/subsection.d.ts +26 -0
  40. package/lib/classes/forms/table/action.d.ts +20 -0
  41. package/lib/classes/forms/table/column.d.ts +33 -0
  42. package/lib/classes/forms/table/row-data.d.ts +14 -0
  43. package/lib/classes/forms/table/table.d.ts +100 -0
  44. package/lib/components/elements/action.component.d.ts +21 -0
  45. package/lib/components/elements/field.component.d.ts +43 -0
  46. package/lib/components/elements/layout/element.component.d.ts +14 -0
  47. package/lib/components/elements/layout/form-error.component.d.ts +8 -0
  48. package/lib/components/elements/layout/form-header.component.d.ts +12 -0
  49. package/lib/components/elements/layout/section.component.d.ts +10 -0
  50. package/lib/components/elements/layout/sub-section.component.d.ts +11 -0
  51. package/lib/components/elements/tables/table-record-action.component.d.ts +15 -0
  52. package/lib/components/elements/tables/table-record-field.component.d.ts +11 -0
  53. package/lib/components/elements/tables/table.component.d.ts +47 -0
  54. package/lib/components/forms/basic-form.d.ts +307 -0
  55. package/lib/services/event-manager.service.d.ts +9 -0
  56. package/lib/services/file-manager.service.d.ts +5 -0
  57. package/lib/services/form-manager.service.d.ts +28 -0
  58. package/lib/tuain-ng-forms-lib.module.d.ts +20 -0
  59. package/package.json +22 -2
  60. package/{src/public-api.ts → public-api.d.ts} +0 -5
  61. package/tuain-ng-forms-lib.d.ts +5 -0
  62. package/.browserslistrc +0 -16
  63. package/.yarn/cache/nanoid-npm-4.0.0-924f5c6312-7d5946df5c.zip +0 -0
  64. package/.yarn/cache/tslib-npm-2.4.0-9cb6dc5030-8c4aa6a3c5.zip +0 -0
  65. package/.yarn/cache/yn-npm-5.0.0-b001dab23c-f0ec7710d3.zip +0 -0
  66. package/.yarn/install-state.gz +0 -0
  67. package/karma.conf.js +0 -44
  68. package/ng-package.json +0 -11
  69. package/src/lib/classes/forms/action.ts +0 -55
  70. package/src/lib/classes/forms/element.ts +0 -98
  71. package/src/lib/classes/forms/field.ts +0 -408
  72. package/src/lib/classes/forms/form.constants.ts +0 -28
  73. package/src/lib/classes/forms/form.ts +0 -495
  74. package/src/lib/classes/forms/section.ts +0 -154
  75. package/src/lib/classes/forms/subsection.ts +0 -91
  76. package/src/lib/classes/forms/table/action.ts +0 -41
  77. package/src/lib/classes/forms/table/column.ts +0 -91
  78. package/src/lib/classes/forms/table/row-data.ts +0 -118
  79. package/src/lib/classes/forms/table/table.ts +0 -438
  80. package/src/lib/components/elements/action.component.ts +0 -53
  81. package/src/lib/components/elements/field.component.ts +0 -118
  82. package/src/lib/components/elements/layout/element.component.ts +0 -28
  83. package/src/lib/components/elements/layout/form-error.component.ts +0 -11
  84. package/src/lib/components/elements/layout/form-header.component.ts +0 -17
  85. package/src/lib/components/elements/layout/section.component.ts +0 -16
  86. package/src/lib/components/elements/layout/sub-section.component.ts +0 -17
  87. package/src/lib/components/elements/tables/table-record-action.component.ts +0 -37
  88. package/src/lib/components/elements/tables/table-record-field.component.ts +0 -19
  89. package/src/lib/components/elements/tables/table.component.ts +0 -102
  90. package/src/lib/components/forms/basic-form.ts +0 -1496
  91. package/src/lib/services/event-manager.service.ts +0 -21
  92. package/src/lib/services/file-manager.service.ts +0 -6
  93. package/src/lib/services/form-manager.service.ts +0 -89
  94. package/src/lib/services/icon-dictionary.service.ts +0 -159
  95. package/src/lib/tuain-ng-forms-lib.module.ts +0 -40
  96. package/src/test.ts +0 -27
  97. package/tsconfig.lib.json +0 -15
  98. package/tsconfig.lib.prod.json +0 -10
  99. package/tsconfig.spec.json +0 -17
@@ -1,91 +0,0 @@
1
- import { FormAction } from './action';
2
- import { elementTypes } from './form.constants';
3
-
4
- export class RecordFormSubSection {
5
- visible: boolean;
6
- _customRender: string;
7
- subsectionId: string;
8
- subsectionCode: string;
9
- subsectionTitle: string;
10
- visibleStates: string[];
11
-
12
- subSectionElements: any[];
13
- subSectionFields: any[];
14
- subSectionTables: any[];
15
- subSectionActions: any[];
16
- elementsArray: any;
17
-
18
- constructor(subsectionReceived, formObject) {
19
- if (!subsectionReceived) { return; }
20
- this._customRender = null;
21
- this.visible = true;
22
- this.subSectionElements = [];
23
- this.subSectionFields = [];
24
- this.subSectionTables = [];
25
- this.subSectionActions = [];
26
- this.elementsArray = {};
27
- this.subsectionId = (subsectionReceived.subsectionId) ? subsectionReceived.subsectionId.toString() : '';
28
- this.subsectionCode = (subsectionReceived.subsectionCode) ? subsectionReceived.subsectionCode : '';
29
- this.subsectionTitle = (subsectionReceived.subsectionTitle) ? subsectionReceived.subsectionTitle : '';
30
- this.visibleStates = subsectionReceived.visibleStates || [];
31
- if (subsectionReceived.elements) {
32
- for (const receivedElement of subsectionReceived.elements) {
33
- let elementObject = null;
34
- let arrayToAdd = null;
35
- const { type, code } = receivedElement;
36
- switch (type) {
37
- case elementTypes.field:
38
- elementObject = formObject.getField(code);
39
- arrayToAdd = this.subSectionFields;
40
- break;
41
- case elementTypes.table:
42
- elementObject = formObject.getTable(code);
43
- arrayToAdd = this.subSectionTables;
44
- break;
45
- case elementTypes.action:
46
- elementObject = formObject.getAction(code);
47
- arrayToAdd = this.subSectionActions;
48
- break;
49
- }
50
- if (elementObject) {
51
- elementObject.elementType = type;
52
- arrayToAdd.push(elementObject);
53
- this.subSectionElements.push(elementObject);
54
- this.elementsArray[code] = elementObject;
55
- }
56
- }
57
- }
58
- }
59
-
60
- show() { this.visible = true; }
61
- hide() { this.visible = false; }
62
-
63
- get customRender() { return this._customRender; }
64
- set customRender(customRenderName) { this._customRender = customRenderName; }
65
-
66
- getField(name) {
67
- return this.subSectionFields.find(fld => fld.name === name);
68
- }
69
-
70
- getFields() {
71
- return this.subSectionFields;
72
- }
73
-
74
- getFieldNames() {
75
- return this.subSectionFields.map(field => field.fieldCode);
76
- }
77
-
78
- getActions(): FormAction[] {
79
- return this.subSectionActions;
80
- }
81
-
82
- getActionNames(): string[] {
83
- return this.subSectionActions.map(action => action.actionCode);
84
- }
85
-
86
- viewOnState(state) {
87
- return this.visibleStates.includes(state);
88
- }
89
-
90
- supportMode(state) { return this.viewOnState(state); }
91
- }
@@ -1,41 +0,0 @@
1
- export class TableAction {
2
- visibleStates: string[];
3
- enabledStates: string[];
4
- newState: string;
5
-
6
- actionCode: string;
7
- actionTitle: string;
8
- iconName: string;
9
- actionType: string;
10
- actionClass: string;
11
- stateField: string;
12
-
13
- backend: boolean;
14
- restrictedOnField: string;
15
- restrictedOnValue: string;
16
- restrictedOnOperator: string;
17
- customAttributes: any;
18
-
19
- constructor(actionDefinition) {
20
- this.actionCode = actionDefinition.actionCode;
21
- this.actionTitle = actionDefinition.actionTitle;
22
- this.iconName = actionDefinition.iconName || this.actionCode;
23
- this.actionType = actionDefinition.actionType || 'STANDARD';
24
- this.actionClass = actionDefinition.actionClass || 'INLINE';
25
- this.newState = actionDefinition.newState;
26
- this.stateField = actionDefinition.stateField || '';
27
-
28
- this.visibleStates = actionDefinition.visibleStates || [];
29
- this.enabledStates = actionDefinition.enabledStates || [];
30
- this.backend = actionDefinition?.serverAction ?? false;
31
- this.restrictedOnField = actionDefinition.fieldRestrictedCode || '';
32
- this.restrictedOnValue = actionDefinition.valueRestricted ?? '';
33
- this.restrictedOnOperator = actionDefinition.operatorRestricted || '';
34
- this.customAttributes = actionDefinition?.customAttributes ?? {};
35
- }
36
-
37
- supportMode(state) { return this.viewOnState(state); }
38
-
39
- viewOnState(state) { return this.visibleStates.includes(state); }
40
- enabledOnState(state) { return this.enabledStates.includes(state); }
41
- }
@@ -1,91 +0,0 @@
1
- export interface FilterDef {
2
- operators: string[];
3
- options: any[];
4
- }
5
-
6
- export interface FilterSetup {
7
- fieldCode: string;
8
- operator: string;
9
- values: any[];
10
- }
11
- export class RecordTableColumn {
12
- _formConfig: any;
13
- fieldCode: string;
14
- fieldTitle: string;
15
- fieldType: string;
16
- fieldAlignment: string;
17
- fieldFormat: string;
18
- visible: boolean;
19
- sortable: boolean;
20
- sortDirections: string[];
21
- customAttributes: any;
22
- // Filtros
23
- filterVisible: boolean = false;
24
- filterDef: FilterDef;
25
- filterSetup: FilterSetup;
26
-
27
- constructor(recTableColReceived, formConfig) {
28
- this._formConfig = formConfig;
29
- this.filterDef = null;
30
- if (recTableColReceived) {
31
- this.fieldCode = recTableColReceived.fieldCode;
32
- this.fieldTitle = recTableColReceived.fieldTitle;
33
- this.fieldType = recTableColReceived.fieldTypeCode || this._formConfig.fieldTypes.text;
34
- const defaultTypeAlignment = (this._formConfig.tableFieldStyles[this.fieldType] != null) ? this._formConfig.tableFieldStyles[this.fieldType]['text-align'] : 'left';
35
- this.fieldAlignment = (recTableColReceived.alignment != null) ? recTableColReceived.alignment.toLowerCase() : defaultTypeAlignment;
36
- this.visible = recTableColReceived?.visible ?? true;
37
- this.sortable = recTableColReceived?.sortable ?? false;
38
- this.sortDirections = (this.sortable) ? ['ascend', 'descend'] : [null];
39
- this.fieldFormat = recTableColReceived.format || '';
40
- this.customAttributes = recTableColReceived?.customAttributes ?? {};
41
- }
42
- }
43
-
44
- hideFilter() {
45
- this.filterVisible = false;
46
- }
47
-
48
- addFilterDefinition(filterDefinition) {
49
- this.filterDef = {
50
- operators: filterDefinition.operators,
51
- options: filterDefinition.options ?? null,
52
- };
53
- }
54
-
55
- get filterDefinition() {
56
- return this.filterDef;
57
- }
58
-
59
- addFilter(columnValues, operator) {
60
- this.filterSetup = {
61
- fieldCode: this.fieldCode,
62
- operator: operator ?? this.filterDef.operators[0],
63
- values: columnValues,
64
- }
65
- }
66
-
67
- get filter() {
68
- return this.filterSetup;
69
- }
70
-
71
- removeFilter() {
72
- this.filterSetup = null;
73
- }
74
-
75
- get options() {
76
- if (this.filterDef?.operators?.length === 1 && this.filterDef?.operators[0] === 'IN') {
77
- return this.filterDef?.options;
78
- }
79
- return null;
80
- }
81
-
82
- serSortDirections(ascend: boolean, descend: boolean) {
83
- this.sortDirections = [];
84
- if (ascend) {
85
- this.sortDirections.unshift('ascend');
86
- }
87
- if (descend) {
88
- this.sortDirections.unshift('descend');
89
- }
90
- }
91
- }
@@ -1,118 +0,0 @@
1
- import { RecordTableColumn } from './column';
2
- import { operators } from '../form.constants';
3
-
4
- export class TableRecordData {
5
- recordId: string;
6
- selected: boolean;
7
- recordData: any = {};
8
-
9
- constructor(recordReceived, recordDefinition: RecordTableColumn[], selectionFieldName = null) {
10
- const { tableRecordId, recordData } = recordReceived;
11
- this.recordId = tableRecordId;
12
- this.selected = false;
13
- this.recordData = {};
14
- if (!recordDefinition || recordDefinition.length === 0 || !recordData || recordData.length === 0) {
15
- return;
16
- }
17
- const fieldNames = recordDefinition.map(column => column.fieldCode);
18
- if (Array.isArray(recordData)) {
19
- const rawRecordData = recordData.filter(fieldData => fieldData.fieldCode && fieldNames.includes(fieldData.fieldCode));
20
- rawRecordData.forEach(fieldData => {
21
- const { fieldCode, fieldValue } = fieldData;
22
- const fieldDef = recordDefinition.find(column => column.fieldCode === fieldCode);
23
- this.recordData[fieldCode] = fieldValue ?? '';
24
- if (fieldCode === selectionFieldName) {
25
- this.selected = fieldValue;
26
- }
27
- });
28
- } else {
29
- const fields = Object.keys(recordData);
30
- fields.forEach(fieldCode => {
31
- const fieldValue = recordData[fieldCode];
32
- const fieldDef = recordDefinition.find(column => column.fieldCode === fieldCode);
33
- this.recordData[fieldCode] = fieldValue ?? '';
34
- });
35
- }
36
- }
37
-
38
- toggleSelect() { this.selected = !this.selected; }
39
- select() { this.selected = true; }
40
- unselect() { this.selected = false; }
41
-
42
- get recordIdKey() {
43
- return (typeof this.recordId === 'object')
44
- ? JSON.stringify(this.recordId) : this.recordId;
45
- }
46
-
47
- getFieldValue(fieldCode): any {
48
- return (fieldCode && this.recordData) ? this.recordData[fieldCode] : null;
49
- }
50
-
51
- hasPattern(words, columnObj) {
52
- if (!words || words.length === 0) {
53
- return true;
54
- }
55
- for (const fieldCode in this.recordData) {
56
- const columnDef = columnObj?.[fieldCode];
57
- if (columnDef && columnDef?.visible && this.recordData.hasOwnProperty(fieldCode)) {
58
- for (const word of words) {
59
- const term = word.toUpperCase();
60
- let fieldValue;
61
- if (columnDef.fieldType.toUpperCase().includes('DATE')) {
62
- fieldValue = this.recordData[fieldCode].substring(0,16);
63
- }else {
64
- fieldValue = this.recordData[fieldCode];
65
- }
66
- if (fieldValue.toString().toUpperCase().includes(term)) {
67
- return true;
68
- }
69
- }
70
- }
71
- }
72
- return false;
73
- }
74
-
75
- hasCondition(columnFilters) {
76
- if (!columnFilters || columnFilters.length === 0) {
77
- return true;
78
- }
79
- for (const condition of columnFilters) {
80
- const { fieldCode, operator, values } = condition;
81
- if (this.recordData.hasOwnProperty(fieldCode)) {
82
- const fieldValue = this.recordData[fieldCode];
83
- const stringValue = fieldValue.toString().toUpperCase();
84
- if (operator === operators.G && fieldValue <= values[0]) {
85
- return false;
86
- }
87
- if (operator === operators.L && fieldValue >= values[0]) {
88
- return false;
89
- }
90
- if (operator === operators.GE && fieldValue < values[0]) {
91
- return false;
92
- }
93
- if (operator === operators.LE && fieldValue > values[0]) {
94
- return false;
95
- }
96
- if (operator === operators.IN && !values.includes(fieldValue)) {
97
- return false;
98
- }
99
- if (operator === operators.EQ) {
100
- return fieldValue === values[0];
101
- }
102
- if (operator === operators.NEQ && fieldValue === values[0]) {
103
- return false;
104
- }
105
- if (operator === operators.HAS && !stringValue.includes(values[0].toString().toUpperCase())) {
106
- return false;
107
- }
108
- if (operator === operators.NOTHAS && stringValue.includes(values[0].toString().toUpperCase())) {
109
- return false;
110
- }
111
- if (operator === operators.BETWEEN && (fieldValue < values[0] || fieldValue > values[1])) {
112
- return false;
113
- }
114
- }
115
- }
116
- return true;
117
- }
118
- }