@sankhyalabs/sankhyablocks 0.0.0-bugfix-dev-KB-74224.0 → 0.0.0-bugfix-dev-KB-75070.0

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 (159) hide show
  1. package/dist/cjs/{ConfigStorage-ecc0ed20.js → ConfigStorage-f079f5fd.js} +2 -2
  2. package/dist/cjs/{ContinuousInsertUtils-29b65619.js → ContinuousInsertUtils-64e47516.js} +29 -20
  3. package/dist/cjs/{DataFetcher-cadeef8e.js → DataFetcher-e059eb72.js} +7 -5
  4. package/dist/cjs/{SnkFormConfigManager-f1c92f79.js → SnkFormConfigManager-63369164.js} +2 -2
  5. package/dist/cjs/{auth-fetcher-d68841bc.js → auth-fetcher-4f853233.js} +1 -1
  6. package/dist/cjs/{dataunit-fetcher-f89461c1.js → dataunit-fetcher-228016f4.js} +3 -3
  7. package/dist/cjs/{form-config-fetcher-ed497282.js → form-config-fetcher-39397ac5.js} +1 -1
  8. package/dist/cjs/index-f9e81701.js +8 -28
  9. package/dist/cjs/loader.cjs.js +1 -1
  10. package/dist/cjs/{pesquisa-fetcher-ca89181c.js → pesquisa-fetcher-a9bfeb22.js} +7 -2
  11. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  12. package/dist/cjs/snk-actions-button_4.cjs.entry.js +6 -6
  13. package/dist/cjs/snk-application.cjs.entry.js +111 -59
  14. package/dist/cjs/snk-attach.cjs.entry.js +5 -5
  15. package/dist/cjs/{snk-form-config.cjs.entry.js → snk-config-options_3.cjs.entry.js} +365 -3
  16. package/dist/cjs/snk-crud.cjs.entry.js +13 -7
  17. package/dist/cjs/snk-data-exporter.cjs.entry.js +5 -5
  18. package/dist/cjs/{snk-data-unit-668dc5e8.js → snk-data-unit-3d9b6ed4.js} +26 -14
  19. package/dist/cjs/snk-data-unit.cjs.entry.js +3 -3
  20. package/dist/cjs/snk-detail-view.cjs.entry.js +7 -7
  21. package/dist/cjs/{snk-filter-bar.cjs.entry.js → snk-filter-bar_4.cjs.entry.js} +691 -3
  22. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +3 -3
  23. package/dist/cjs/snk-grid.cjs.entry.js +16 -8
  24. package/dist/cjs/{snk-guides-viewer-4236cb9d.js → snk-guides-viewer-eee43c8b.js} +8 -5
  25. package/dist/cjs/snk-guides-viewer.cjs.entry.js +7 -7
  26. package/dist/cjs/snk-personalized-filter.cjs.entry.js +3 -3
  27. package/dist/cjs/snk-simple-crud.cjs.entry.js +45 -10
  28. package/dist/cjs/snk-taskbar.cjs.entry.js +37 -35
  29. package/dist/collection/collection-manifest.json +11 -31
  30. package/dist/collection/components/snk-actions-button/snk-actions-button.js +1 -1
  31. package/dist/collection/components/snk-application/request-listener/DebouncedRequestListener.js +28 -0
  32. package/dist/collection/components/snk-application/request-listener/RequestListenerFactory.js +16 -0
  33. package/dist/collection/components/snk-application/request-listener/RequestListenerLoadingBar.js +52 -0
  34. package/dist/collection/components/snk-application/snk-application.js +44 -54
  35. package/dist/collection/components/snk-crud/snk-crud.js +26 -2
  36. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +3 -0
  37. package/dist/collection/components/snk-data-unit/snk-data-unit.js +25 -13
  38. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +18 -0
  39. package/dist/collection/components/snk-grid/snk-grid.js +28 -2
  40. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +57 -4
  41. package/dist/collection/components/snk-taskbar/snk-taskbar.js +38 -36
  42. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +8 -6
  43. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/DataUnitDataLoader.js +2 -2
  44. package/dist/collection/lib/http/data-fetcher/fetchers/pesquisa-fetcher.js +6 -1
  45. package/dist/collection/lib/utils/CrudUtils.js +25 -16
  46. package/dist/collection/sw.js +46 -0
  47. package/dist/components/ContinuousInsertUtils.js +25 -16
  48. package/dist/components/DataFetcher.js +7 -5
  49. package/dist/components/dataunit-fetcher.js +2 -2
  50. package/dist/components/pesquisa-fetcher.js +6 -1
  51. package/dist/components/snk-actions-button2.js +1 -1
  52. package/dist/components/snk-application2.js +107 -54
  53. package/dist/components/snk-crud.js +9 -2
  54. package/dist/components/snk-data-unit2.js +25 -13
  55. package/dist/components/snk-detail-view2.js +3 -0
  56. package/dist/components/snk-filter-bar2.js +4 -0
  57. package/dist/components/snk-grid2.js +11 -2
  58. package/dist/components/snk-simple-crud2.js +40 -4
  59. package/dist/components/snk-taskbar2.js +38 -36
  60. package/dist/esm/{ConfigStorage-7b36d041.js → ConfigStorage-6514d66e.js} +2 -2
  61. package/dist/esm/{ContinuousInsertUtils-30caa626.js → ContinuousInsertUtils-b62906f9.js} +29 -20
  62. package/dist/esm/{DataFetcher-a9c598f2.js → DataFetcher-5034df59.js} +7 -5
  63. package/dist/esm/{SnkFormConfigManager-139f09fa.js → SnkFormConfigManager-b409c745.js} +3 -3
  64. package/dist/esm/{auth-fetcher-749d880f.js → auth-fetcher-ca5d3a49.js} +1 -1
  65. package/dist/esm/{constants-8457af36.js → constants-7302ee87.js} +1 -1
  66. package/dist/esm/{dataunit-fetcher-c24c76c6.js → dataunit-fetcher-56cb648b.js} +3 -3
  67. package/dist/esm/{form-config-fetcher-adbe5d34.js → form-config-fetcher-a7d3e277.js} +1 -1
  68. package/dist/esm/index-a7d3d3f1.js +8 -28
  69. package/dist/esm/loader.js +1 -1
  70. package/dist/esm/{pesquisa-fetcher-8edaa8cd.js → pesquisa-fetcher-6bc2e41a.js} +7 -2
  71. package/dist/esm/sankhyablocks.js +1 -1
  72. package/dist/esm/snk-actions-button_4.entry.js +7 -7
  73. package/dist/esm/snk-application.entry.js +111 -59
  74. package/dist/esm/snk-attach.entry.js +6 -6
  75. package/dist/esm/{snk-form-config.entry.js → snk-config-options_3.entry.js} +366 -6
  76. package/dist/esm/snk-configurator.entry.js +1 -1
  77. package/dist/esm/snk-crud.entry.js +14 -8
  78. package/dist/esm/snk-data-exporter.entry.js +6 -6
  79. package/dist/esm/{snk-data-unit-0fdfb6c2.js → snk-data-unit-9fa7d2b9.js} +26 -14
  80. package/dist/esm/snk-data-unit.entry.js +3 -3
  81. package/dist/esm/snk-detail-view.entry.js +8 -8
  82. package/dist/esm/snk-field-config.entry.js +1 -1
  83. package/dist/esm/{snk-filter-bar.entry.js → snk-filter-bar_4.entry.js} +690 -5
  84. package/dist/esm/snk-filter-modal-item.entry.js +3 -3
  85. package/dist/esm/snk-grid.entry.js +16 -8
  86. package/dist/esm/{snk-guides-viewer-8934c537.js → snk-guides-viewer-e8ca764a.js} +9 -6
  87. package/dist/esm/snk-guides-viewer.entry.js +8 -8
  88. package/dist/esm/snk-personalized-filter.entry.js +3 -3
  89. package/dist/esm/snk-simple-crud.entry.js +47 -12
  90. package/dist/esm/snk-tab-config.entry.js +1 -1
  91. package/dist/esm/snk-taskbar.entry.js +38 -36
  92. package/dist/sankhyablocks/{p-f3434fc4.js → p-00278e07.js} +1 -1
  93. package/dist/sankhyablocks/{p-b9c67e45.entry.js → p-0d2a2e9e.entry.js} +1 -1
  94. package/dist/sankhyablocks/{p-afbb070d.js → p-0e206e62.js} +1 -1
  95. package/dist/sankhyablocks/{p-06421fdb.js → p-126c58ea.js} +1 -1
  96. package/dist/sankhyablocks/p-200a5481.entry.js +11 -0
  97. package/dist/sankhyablocks/{p-8eb67fa4.entry.js → p-2d3f9482.entry.js} +1 -1
  98. package/dist/sankhyablocks/p-30ebcbe0.entry.js +1 -0
  99. package/dist/sankhyablocks/{p-1bf06cd3.js → p-341465ce.js} +2 -2
  100. package/dist/sankhyablocks/p-342eeb3b.js +1 -0
  101. package/dist/sankhyablocks/{p-7663f597.entry.js → p-41793e17.entry.js} +1 -1
  102. package/dist/sankhyablocks/p-42130213.entry.js +1 -0
  103. package/dist/sankhyablocks/{p-be5d8fcb.entry.js → p-43353d86.entry.js} +1 -1
  104. package/dist/sankhyablocks/{p-7ac7932c.js → p-47d24ac8.js} +2 -2
  105. package/dist/sankhyablocks/p-520c7c38.entry.js +1 -0
  106. package/dist/sankhyablocks/{p-430e4d3c.entry.js → p-7075b789.entry.js} +1 -1
  107. package/dist/sankhyablocks/p-83e71703.entry.js +1 -0
  108. package/dist/sankhyablocks/{p-95df461f.entry.js → p-8b4fc28f.entry.js} +1 -1
  109. package/dist/sankhyablocks/{p-b0ef4383.js → p-95ce311a.js} +1 -1
  110. package/dist/sankhyablocks/{p-4d9549cf.js → p-9ffd9fc7.js} +1 -1
  111. package/dist/sankhyablocks/{p-dcead955.entry.js → p-a2c790ac.entry.js} +1 -1
  112. package/dist/sankhyablocks/p-a3fadd0b.entry.js +1 -0
  113. package/dist/sankhyablocks/{p-212213d9.entry.js → p-aa003d4e.entry.js} +1 -1
  114. package/dist/sankhyablocks/p-aaf94476.js +1 -0
  115. package/dist/sankhyablocks/p-ac26df7a.entry.js +1 -0
  116. package/dist/sankhyablocks/{p-4f35399c.entry.js → p-af7f7b3e.entry.js} +1 -1
  117. package/dist/sankhyablocks/p-c51ad0e7.entry.js +1 -0
  118. package/dist/sankhyablocks/{p-16869f77.js → p-e3a285a2.js} +1 -1
  119. package/dist/sankhyablocks/p-e4391e16.js +1 -0
  120. package/dist/sankhyablocks/{p-fb34e0cf.entry.js → p-fca0e5cc.entry.js} +1 -1
  121. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  122. package/dist/types/components/snk-application/request-listener/DebouncedRequestListener.d.ts +11 -0
  123. package/dist/types/components/snk-application/request-listener/RequestListenerFactory.d.ts +12 -0
  124. package/dist/types/components/snk-application/request-listener/RequestListenerLoadingBar.d.ts +13 -0
  125. package/dist/types/components/snk-application/snk-application.d.ts +9 -13
  126. package/dist/types/components/snk-crud/snk-crud.d.ts +4 -0
  127. package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +4 -0
  128. package/dist/types/components/snk-grid/snk-grid.d.ts +4 -0
  129. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +2 -0
  130. package/dist/types/components.d.ts +30 -0
  131. package/dist/types/lib/http/data-fetcher/DataFetcher.d.ts +1 -0
  132. package/dist/types/lib/utils/CrudUtils.d.ts +1 -0
  133. package/package.json +3 -2
  134. package/dist/cjs/snk-config-options.cjs.entry.js +0 -239
  135. package/dist/cjs/snk-filter-item.cjs.entry.js +0 -312
  136. package/dist/cjs/snk-filter-list.cjs.entry.js +0 -152
  137. package/dist/cjs/snk-filter-modal.cjs.entry.js +0 -249
  138. package/dist/cjs/snk-form.cjs.entry.js +0 -144
  139. package/dist/esm/snk-config-options.entry.js +0 -235
  140. package/dist/esm/snk-filter-item.entry.js +0 -308
  141. package/dist/esm/snk-filter-list.entry.js +0 -148
  142. package/dist/esm/snk-filter-modal.entry.js +0 -245
  143. package/dist/esm/snk-form.entry.js +0 -140
  144. package/dist/sankhyablocks/p-01086ff7.entry.js +0 -1
  145. package/dist/sankhyablocks/p-2923c1b5.js +0 -1
  146. package/dist/sankhyablocks/p-2aae03a1.entry.js +0 -1
  147. package/dist/sankhyablocks/p-3b60db06.entry.js +0 -1
  148. package/dist/sankhyablocks/p-5dd8cf4f.js +0 -1
  149. package/dist/sankhyablocks/p-60b29483.entry.js +0 -1
  150. package/dist/sankhyablocks/p-70a4af56.entry.js +0 -1
  151. package/dist/sankhyablocks/p-92eadb1c.entry.js +0 -1
  152. package/dist/sankhyablocks/p-a42e7a1e.entry.js +0 -11
  153. package/dist/sankhyablocks/p-a724e798.entry.js +0 -1
  154. package/dist/sankhyablocks/p-a75d242d.entry.js +0 -1
  155. package/dist/sankhyablocks/p-b9679243.entry.js +0 -1
  156. package/dist/sankhyablocks/p-ca5ec380.js +0 -1
  157. package/dist/sankhyablocks/p-d3f53df2.entry.js +0 -1
  158. package/dist/sankhyablocks/p-e8763234.entry.js +0 -1
  159. package/dist/sankhyablocks/p-feba9d4b.entry.js +0 -1
@@ -1,14 +1,374 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-a7d3d3f1.js';
2
+ import { UserInterface, ObjectUtils, StringUtils, ApplicationContext, ElementIDUtils, ArrayUtils } from '@sankhyalabs/core';
3
+ import { DataType, getConvertedValue } from '@sankhyalabs/core/dist/dataunit/metadata/DataType';
4
+ import { CheckMode, ApplicationUtils, DialogType } from '@sankhyalabs/ezui/dist/collection/utils';
5
+ import { c as VARS_BY_TYPE, D as DEFAULT_TYPE, d as TAGS_BY_TYPE, C as CONFIG_EVENTS, a as CONFIG_SORTABLE_EVENTS, b as TAB_NAMES, A as ACTION_CONFIG } from './constants-7302ee87.js';
6
+ import { S as SnkFormConfigManager } from './SnkFormConfigManager-b409c745.js';
7
+ import { R as ResourceIDUtils } from './ResourceIDUtils-a114189a.js';
2
8
  import { S as Sortable } from './Sortable-83960219.js';
3
- import { ObjectUtils, ElementIDUtils, ArrayUtils, ApplicationContext } from '@sankhyalabs/core';
4
- import { ApplicationUtils, DialogType } from '@sankhyalabs/ezui/dist/collection/utils';
5
- import { C as CONFIG_EVENTS, a as CONFIG_SORTABLE_EVENTS, T as TAB_NAMES, A as ACTION_CONFIG, D as DEFAULT_TYPE } from './constants-8457af36.js';
6
- import { U as UserConfigType } from './form-config-fetcher-adbe5d34.js';
9
+ import { U as UserConfigType } from './form-config-fetcher-a7d3e277.js';
7
10
  import { buildFormConfigFromDataUnit } from '@sankhyalabs/ezui/dist/collection/utils/form';
8
- import './DataFetcher-a9c598f2.js';
11
+ import './ConfigStorage-6514d66e.js';
12
+ import './filter-item-type.enum-d45e026f.js';
13
+ import './DataFetcher-5034df59.js';
9
14
  import './PrintUtils-3e4ff0f5.js';
10
15
  import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
11
16
 
17
+ const snkConfigOptionsCss = ".sc-snk-config-options-h{--snk-config-options--border:2px solid var(--color--secondary-200, #D2D3DA);width:100%;border-radius:15px;border:var(--snk-config-options--border)}.config-options__switch-row.sc-snk-config-options{margin-top:-30px}";
18
+
19
+ const SnkConfigOptions = class {
20
+ constructor(hostRef) {
21
+ registerInstance(this, hostRef);
22
+ this.configOptionsChanged = createEvent(this, "configOptionsChanged", 7);
23
+ this._defaultType = undefined;
24
+ this.fieldConfig = {};
25
+ this.idConfig = undefined;
26
+ this.dataUnit = undefined;
27
+ this.messagesBuilder = undefined;
28
+ }
29
+ onConfigDefault(optionSelected) {
30
+ if (optionSelected != undefined) {
31
+ this._defaultType = optionSelected;
32
+ this.fieldConfig.defaultValue = {
33
+ type: this._defaultType
34
+ };
35
+ this.configOptionsChanged.emit(this.fieldConfig);
36
+ }
37
+ }
38
+ buildOptions() {
39
+ var _a, _b, _c;
40
+ let interfaceField = (_c = (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getField((_b = this.fieldConfig) === null || _b === void 0 ? void 0 : _b.name)) === null || _c === void 0 ? void 0 : _c.userInterface;
41
+ if (interfaceField === UserInterface.SEARCH) {
42
+ interfaceField = UserInterface.INTEGERNUMBER;
43
+ }
44
+ return VARS_BY_TYPE.UserInterface[interfaceField];
45
+ }
46
+ enabledValueDefault() {
47
+ var _a, _b, _c;
48
+ const field = (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getField((_b = this.fieldConfig) === null || _b === void 0 ? void 0 : _b.name);
49
+ const allowDefault = (_c = field === null || field === void 0 ? void 0 : field.properties) === null || _c === void 0 ? void 0 : _c.allowDefault;
50
+ const hasVariableVar = VARS_BY_TYPE.UserInterface.hasOwnProperty(field === null || field === void 0 ? void 0 : field.userInterface)
51
+ || (field === null || field === void 0 ? void 0 : field.userInterface) === UserInterface.SEARCH;
52
+ if ((allowDefault == undefined || allowDefault === "true") && hasVariableVar) {
53
+ return true;
54
+ }
55
+ return false;
56
+ }
57
+ isAllowDefault() {
58
+ var _a, _b;
59
+ const allowDefault = (_b = (_a = this._fieldProperties) === null || _a === void 0 ? void 0 : _a.properties) === null || _b === void 0 ? void 0 : _b.allowDefault;
60
+ if (allowDefault == undefined) {
61
+ return true;
62
+ }
63
+ return allowDefault === "true";
64
+ }
65
+ loadDefaultValue() {
66
+ var _a;
67
+ if (this.fieldConfig == undefined) {
68
+ this._defaultType = DEFAULT_TYPE.fixed;
69
+ this.fieldConfig = {
70
+ defaultValue: {
71
+ type: this._defaultType
72
+ }
73
+ };
74
+ }
75
+ else if (((_a = this.fieldConfig.defaultValue) === null || _a === void 0 ? void 0 : _a.type) == undefined) {
76
+ this._defaultType = DEFAULT_TYPE.fixed;
77
+ this.fieldConfig.defaultValue = {
78
+ type: this._defaultType
79
+ };
80
+ }
81
+ else {
82
+ this._defaultType = this.fieldConfig.defaultValue.type;
83
+ }
84
+ }
85
+ getFieldProperties(field) {
86
+ var _a;
87
+ if (field != undefined) {
88
+ return (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getField(field);
89
+ }
90
+ }
91
+ getMessage(key, params) {
92
+ return this.messagesBuilder.getMessage(key, params);
93
+ }
94
+ getDefaultType() {
95
+ var _a;
96
+ return (_a = this.fieldConfig.defaultValue.type) !== null && _a !== void 0 ? _a : DEFAULT_TYPE.fixed;
97
+ }
98
+ getEnabledByProperty(attribName, propertyName) {
99
+ const fieldDescriptor = this._fieldProperties;
100
+ if (fieldDescriptor == undefined) {
101
+ return true;
102
+ }
103
+ const fieldProperties = fieldDescriptor.properties || {};
104
+ return fieldProperties.hasOwnProperty(propertyName) ? fieldProperties[propertyName] !== "S" : fieldDescriptor[attribName] !== true;
105
+ }
106
+ getValueByProperty(property) {
107
+ const properties = this._fieldProperties;
108
+ if (properties != undefined && properties[property] === true) {
109
+ return true;
110
+ }
111
+ return this.fieldConfig[property];
112
+ }
113
+ getValidatedValue(fieldValue) {
114
+ var _a, _b;
115
+ if (fieldValue == undefined) {
116
+ return;
117
+ }
118
+ const field = (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getField((_b = this.fieldConfig) === null || _b === void 0 ? void 0 : _b.name);
119
+ const dataType = field === null || field === void 0 ? void 0 : field.dataType;
120
+ if (dataType == undefined) {
121
+ return;
122
+ }
123
+ const value = (fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.waitmessage) != undefined ? undefined :
124
+ dataType !== DataType.OBJECT && dataType !== DataType.DATE
125
+ && typeof fieldValue === "object"
126
+ ? fieldValue.value
127
+ : fieldValue;
128
+ return dataType === DataType.OBJECT ? JSON.stringify(value) : value;
129
+ }
130
+ buildInputDefault({ value, enabled, label, name, required, userInterface }, properties = undefined, mode = undefined) {
131
+ let options;
132
+ let precision = 0;
133
+ let prettyPrecision = 0;
134
+ const TagName = userInterface == undefined || TAGS_BY_TYPE[userInterface] == undefined
135
+ ? TAGS_BY_TYPE.DEFAULT
136
+ : TAGS_BY_TYPE[userInterface];
137
+ if (userInterface === UserInterface.OPTIONSELECTOR) {
138
+ const prop = properties === null || properties === void 0 ? void 0 : properties.options;
139
+ if (typeof prop === "string") {
140
+ const parsed = ObjectUtils.stringToObject(prop);
141
+ options = Object.keys(parsed).map(key => { return { value: key, label: parsed[key] }; });
142
+ }
143
+ else {
144
+ options = prop;
145
+ }
146
+ }
147
+ else if (userInterface === UserInterface.DECIMALNUMBER) {
148
+ precision = Number((properties === null || properties === void 0 ? void 0 : properties.precision) || 2);
149
+ prettyPrecision = Number((properties === null || properties === void 0 ? void 0 : properties.prettyPrecision) || precision);
150
+ }
151
+ return h(TagName, Object.assign({ value: value, enabled: enabled, label: label, "data-field-name": name, key: name, onEzChange: (evt) => this.onChange(evt === null || evt === void 0 ? void 0 : evt.detail) }, (this.getConditionalAttributes(userInterface, required, options, precision, prettyPrecision, mode))));
152
+ }
153
+ getConditionalAttributes(userInterface, required, options, precision, prettyPrecision, mode) {
154
+ switch (userInterface) {
155
+ case UserInterface.SEARCH:
156
+ return {
157
+ suppressEmptyOption: required,
158
+ optionLoader: (searchArgument) => this.onSearch(searchArgument)
159
+ };
160
+ case UserInterface.OPTIONSELECTOR:
161
+ return {
162
+ suppressEmptyOption: required,
163
+ options
164
+ };
165
+ case UserInterface.CHECKBOX:
166
+ case UserInterface.SWITCH:
167
+ return {
168
+ mode
169
+ };
170
+ case UserInterface.INTEGERNUMBER:
171
+ case UserInterface.DECIMALNUMBER:
172
+ return {
173
+ precision,
174
+ prettyPrecision,
175
+ onEzStartChange: (evt) => this.onChange(evt === null || evt === void 0 ? void 0 : evt.detail)
176
+ };
177
+ case UserInterface.DATE:
178
+ case UserInterface.DATETIME:
179
+ case UserInterface.TIME:
180
+ return {
181
+ onEzStartChange: (evt) => this.onChange(evt === null || evt === void 0 ? void 0 : evt.detail)
182
+ };
183
+ default:
184
+ return {};
185
+ }
186
+ }
187
+ onChange(fieldValue) {
188
+ this.fieldConfig.defaultValue.value = this.getValidatedValue(fieldValue);
189
+ this.configOptionsChanged.emit(this.fieldConfig);
190
+ }
191
+ onSearch(searchArgument) {
192
+ if (this._application != undefined && this.fieldConfig != undefined) {
193
+ return this._application.executeSearch(searchArgument, this.fieldConfig.name, this.dataUnit);
194
+ }
195
+ }
196
+ buildField(descriptor, config) {
197
+ const { name, label, readOnly, required, defaultValue } = config;
198
+ const { userInterface, properties } = descriptor;
199
+ const allowDefault = properties === null || properties === void 0 ? void 0 : properties.allowDefault;
200
+ let value;
201
+ let enabled = StringUtils.getBooleanValue(allowDefault, !readOnly);
202
+ if (userInterface === UserInterface.FILE) {
203
+ enabled = false;
204
+ }
205
+ if (enabled) {
206
+ value = defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.value;
207
+ if (value != undefined) {
208
+ value = getConvertedValue(descriptor === null || descriptor === void 0 ? void 0 : descriptor.dataType, value);
209
+ }
210
+ }
211
+ const configField = { value, enabled, label, name, required, userInterface };
212
+ switch (userInterface) {
213
+ case UserInterface.SWITCH:
214
+ return this.buildInputDefault(configField, undefined, CheckMode.SWITCH);
215
+ case UserInterface.CHECKBOX:
216
+ return this.buildInputDefault(configField, undefined, CheckMode.REGULAR);
217
+ case UserInterface.OPTIONSELECTOR:
218
+ case UserInterface.DECIMALNUMBER:
219
+ return this.buildInputDefault(configField, properties);
220
+ default:
221
+ return this.buildInputDefault(configField);
222
+ }
223
+ }
224
+ componentWillLoad() {
225
+ var _a;
226
+ this.loadDefaultValue();
227
+ this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
228
+ this._fieldProperties = this.getFieldProperties((_a = this.fieldConfig) === null || _a === void 0 ? void 0 : _a.name);
229
+ }
230
+ componentDidLoad() {
231
+ ElementIDUtils.addIDInfo(this._element, this.fieldConfig.name);
232
+ }
233
+ render() {
234
+ var _a, _b;
235
+ return (h(Host, null, h("div", { id: this.idConfig }, h("div", { class: "ez-row ez-padding--medium" }, h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, h("ez-text-input", { label: this.getMessage("snkConfigOptions.label.nameField"), value: (_a = this.fieldConfig) === null || _a === void 0 ? void 0 : _a.label, onEzChange: (evt) => { this.fieldConfig.label = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } })), h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, h("ez-combo-box", { label: this.getMessage("snkConfigOptions.label.typeValueDefault"), suppressEmptyOption: true, enabled: this.enabledValueDefault(), onEzChange: (evt) => { var _a; return this.onConfigDefault((_a = evt.detail) === null || _a === void 0 ? void 0 : _a.value); }, value: this.getDefaultType() }, h("option", { value: DEFAULT_TYPE.fixed }, this.getMessage("snkConfigOptions.options.valueFixed")), h("option", { value: DEFAULT_TYPE.variable }, this.getMessage("snkConfigOptions.options.variable")))), h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, this._defaultType === DEFAULT_TYPE.variable ?
236
+ h("ez-combo-box", { label: this.getMessage("snkConfigOptions.label.valueDefault"), enabled: this.isAllowDefault(), onEzChange: (evt) => { var _a; this.fieldConfig.defaultValue.value = (_a = evt.detail) === null || _a === void 0 ? void 0 : _a.value; this.configOptionsChanged.emit(this.fieldConfig); }, value: this.fieldConfig.defaultValue.value, options: this.buildOptions() })
237
+ :
238
+ ((_b = this._fieldProperties) === null || _b === void 0 ? void 0 : _b.userInterface) &&
239
+ this.buildField(this._fieldProperties, this.fieldConfig))), h("div", { class: "ez-row ez-padding--medium config-options__switch-row" }, h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, h("ez-check", { mode: CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.clearDuplicate"), value: this.fieldConfig.cleanOnCopy, onEzChange: (evt) => { this.fieldConfig.cleanOnCopy = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } })), h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, h("ez-check", { mode: CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.requiredField"), enabled: this.getEnabledByProperty("required", "systemRequired"), value: this.getValueByProperty("required"), onEzChange: (evt) => { this.fieldConfig.required = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } })), h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, h("ez-check", { mode: CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.protectedField"), enabled: this.getEnabledByProperty("readOnly", "systemReadOnly"), value: this.getValueByProperty("readOnly"), onEzChange: (evt) => { this.fieldConfig.readOnly = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } }))))));
240
+ }
241
+ get _element() { return getElement(this); }
242
+ };
243
+ SnkConfigOptions.style = snkConfigOptionsCss;
244
+
245
+ const snkFormCss = ".sc-snk-form-h{--snk-form__header--min-height:94px;display:block}.snk-form__form--hidden.sc-snk-form{display:none}";
246
+
247
+ const SnkForm = class {
248
+ constructor(hostRef) {
249
+ registerInstance(this, hostRef);
250
+ this.exit = createEvent(this, "exit", 7);
251
+ this.actionClick = createEvent(this, "actionClick", 7);
252
+ this.formItemsReady = createEvent(this, "formItemsReady", 7);
253
+ this._customEditors = new Map();
254
+ this._dataUnit = undefined;
255
+ this._dataState = undefined;
256
+ this._showFormConfig = false;
257
+ this._configManager = undefined;
258
+ this.configName = undefined;
259
+ this.recordsValidator = undefined;
260
+ this.messagesBuilder = undefined;
261
+ this.formLegacyConfigName = undefined;
262
+ this.resourceID = undefined;
263
+ }
264
+ /**
265
+ * Exibe a janela de configurações do formulário.
266
+ */
267
+ async showConfig() {
268
+ this._showFormConfig = true;
269
+ }
270
+ /**
271
+ * Fecha a janela de configurações do formulário.
272
+ */
273
+ async hideConfig() {
274
+ this._showFormConfig = false;
275
+ }
276
+ /**
277
+ * Registra um editor customizado para campos da grade e formulário.
278
+ */
279
+ async addCustomEditor(fieldName, customEditor) {
280
+ if (this._form) {
281
+ this._form.addCustomEditor(fieldName, customEditor);
282
+ return;
283
+ }
284
+ const newCustomEditors = new Map(this._customEditors);
285
+ newCustomEditors.set(fieldName, customEditor);
286
+ this._customEditors = newCustomEditors;
287
+ }
288
+ /**
289
+ * Altera/adiciona uma propriedade nos metadados do campo.
290
+ */
291
+ async setFieldProp(fieldName, propName, value) {
292
+ await this._form.setFieldProp(fieldName, propName, value);
293
+ }
294
+ closeConfig() {
295
+ this.hideConfig();
296
+ }
297
+ dataunitReady() {
298
+ const dataInfo = { dataUnit: this._dataUnit };
299
+ ElementIDUtils.addIDInfo(this._element, null, dataInfo);
300
+ }
301
+ setCustomEditors() {
302
+ if (!this._form) {
303
+ return;
304
+ }
305
+ for (const [fieldName, customEditor] of this._customEditors) {
306
+ this._form.addCustomEditor(fieldName, customEditor);
307
+ this._customEditors.delete(fieldName);
308
+ }
309
+ }
310
+ async componentDidRender() {
311
+ this.setCustomEditors();
312
+ }
313
+ async componentWillLoad() {
314
+ let parent = this._element.parentElement;
315
+ while (parent) {
316
+ if (parent.tagName.toUpperCase() === "SNK-DATA-UNIT") {
317
+ this._snkDataUnit = parent;
318
+ this._dataUnit = this._snkDataUnit.dataUnit;
319
+ this._dataState = this._snkDataUnit.dataState;
320
+ if (this._dataUnit) {
321
+ this.dataunitReady();
322
+ }
323
+ else {
324
+ this._snkDataUnit.addEventListener("dataUnitReady", (evt) => {
325
+ this._dataUnit = evt.detail;
326
+ });
327
+ }
328
+ this._snkDataUnit.addEventListener("dataStateChange", this.handleDataStateChange.bind(this));
329
+ break;
330
+ }
331
+ parent = parent.parentElement;
332
+ }
333
+ if (this.resourceID == undefined) {
334
+ this.resourceID = await ResourceIDUtils.getResourceID();
335
+ }
336
+ this._configManager = new SnkFormConfigManager(this.configName, this.resourceID, undefined, this._dataUnit);
337
+ this.addFormLegacyConfig();
338
+ await this._configManager.loadConfig();
339
+ }
340
+ async handleDataStateChange(evt) {
341
+ var _a;
342
+ this._dataState = evt.detail;
343
+ const fieldsWithRmPrecision = await this._snkDataUnit.getFieldsWithRmPrecision();
344
+ for (const field of fieldsWithRmPrecision || []) {
345
+ if (!field) {
346
+ continue;
347
+ }
348
+ const rmPrecision = (_a = this._dataState.rowMetadata) === null || _a === void 0 ? void 0 : _a.getProp('rm_precision', field);
349
+ if (!rmPrecision && rmPrecision !== 0) {
350
+ continue;
351
+ }
352
+ await this.setFieldProp(field, 'precision', rmPrecision);
353
+ await this.setFieldProp(field, 'prettyPrecision', rmPrecision);
354
+ }
355
+ }
356
+ addFormLegacyConfig() {
357
+ if (this.formLegacyConfigName) {
358
+ this._configManager.addFormLegacyConfig(this.formLegacyConfigName);
359
+ }
360
+ }
361
+ render() {
362
+ if (!this._dataUnit || !this._dataState) {
363
+ return undefined;
364
+ }
365
+ return (h("section", null, h("div", { class: "ez-row" }, h("div", { class: "ez-col ez-col--sd-12" }, h("ez-form", { ref: (ref) => this._form = ref, key: "ezForm" + this._snkDataUnit.entityName, "data-element-id": "embedded", dataUnit: this._dataUnit, config: this._configManager.getConfig(this._dataUnit), recordsValidator: this.recordsValidator, class: this._showFormConfig ? 'snk-form__form--hidden' : '' }), this._showFormConfig &&
366
+ h("snk-form-config", { messagesBuilder: this.messagesBuilder, dataUnit: this._dataUnit, configManager: this._configManager, onConfigClose: () => this.closeConfig() })))));
367
+ }
368
+ get _element() { return getElement(this); }
369
+ };
370
+ SnkForm.style = snkFormCss;
371
+
12
372
  const snkFormConfigCss = ".sc-snk-form-config-h{--snk-form-config--z-index:var(--more-visible, 2);--snk-form-config--background-color:var(--background--xlight, #fff);--snk-form-config__icon--color:var(--text--disable, #AFB6C0);--snk-form-config__label-counter--font-weight:var(--text-weight--extra-small, 200);--snk-form-config__add-group-container--border-radius:var(--border--radius-medium, 12px);--snk-form-config__add-group-container--background-color:var(--background--medium, #d2dce9);--snk-form-config__add-group-container--padding:var(--space--small, 6px);--snk-form-config__add-group-content--border:2px dashed var(--color-strokes, #DCE0E8);--snk-form-config__add-group-content--border-radius:var(--border--radius-small, 6px);--snk-form-config__add-group-label--padding:var(--space--large, 24px);--snk-form-config__btn-add-group--padding:var(--space--large, 24px) var(--space--medium, 12px) 0;--snk-form-config__btn-add-group-container--padding:var(--space--medium, 12px);--snk-form-config__btn-add-group-container--border-radius:var(--border--radius-medium, 12px);--snk-form-config__btn-add-group-container--border:2px solid var(--color-strokes, #DCE0E8);--snk-form-config__btn-add-group-container--background-color:var(--background--body, #fafcff);display:flex;flex-direction:column;position:fixed;top:0;left:0;width:100%;height:100%;z-index:var(--snk-form-config--z-index);background-color:var(--snk-form-config--background-color)}div.sc-snk-form-config:focus-visible,div.sc-snk-form-config:focus{outline:none}.form-config__header-container.sc-snk-form-config{display:flex}.form-config__field-container.sc-snk-form-config{width:32%;padding:6px}.form-config__hide-content.sc-snk-form-config{display:none}ez-icon.sc-snk-form-config .left-icon.sc-snk-form-config{--ez-icon--color:var(--snk-form-config__icon--color)}.ez-box__label-counter.sc-snk-form-config{margin-top:-7px;font-weight:var(--snk-form-config__label-counter--font-weight)}.form-config__btn-options.sc-snk-form-config{--ez-button--min-width:300px;--ez-button--background-color:var(--snk-form-config--background-color)}[data-draggable-parent].sc-snk-form-config{position:relative}.form-config__field-config--selected.sc-snk-form-config{position:static}.form-config__field-config--dragged.sc-snk-form-config .draggable-mirror.sc-snk-form-config{z-index:var(--snk-form-config--z-index)}.form-config__config-options.sc-snk-form-config{position:relative;margin-top:-3px;min-width:100%;z-index:1}.form-config__tab-container.sc-snk-form-config,.form-config__fields-available.sc-snk-form-config{position:relative;height:100%;max-height:calc(100vh - 92px)}.form-config__tab-container.sc-snk-form-config .ez-box__container.sc-snk-form-config,.form-config__fields-available.sc-snk-form-config .ez-box__container.sc-snk-form-config{align-content:flex-start;height:100%}.form-config__fields-available.sc-snk-form-config [data-draggable-parent].sc-snk-form-config{align-content:flex-start;overflow-y:auto;height:100%;max-height:calc(100% - 122px)}.form-config__tab-content.sc-snk-form-config{align-content:flex-start;overflow-y:auto;height:auto;max-height:calc(100% - 128px)}[data-draggable-element].sc-snk-form-config{cursor:grab}.form-config__actions-button.sc-snk-form-config{--ez-actions-button__btn-action--min-width:235px}.form-config__add-group.sc-snk-form-config{position:relative;min-height:120px;margin-bottom:10px}.form-config__add-group-container.sc-snk-form-config{position:absolute;display:flex;flex-wrap:wrap;width:100%;box-sizing:border-box;border-radius:var(--snk-form-config__add-group-container--border-radius);background-color:var(--snk-form-config__add-group-container--background-color);padding:var(--snk-form-config__add-group-container--padding)}.form-config__add-group-content.sc-snk-form-config{width:100%;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;box-sizing:border-box;border:var(--snk-form-config__add-group-content--border);border-radius:var(--snk-form-config__add-group-content--border-radius)}.form-config__add-group-label.sc-snk-form-config{display:flex;justify-content:center;box-sizing:border-box;padding:var(--snk-form-config__add-group-label--padding)}.form-config__btn-add-group.sc-snk-form-config{position:relative;padding:var(--snk-form-config__btn-add-group--padding)}.form-config__btn-add-group-container.sc-snk-form-config{padding:var(--snk-form-config__btn-add-group-container--padding);border-radius:var(--snk-form-config__btn-add-group-container--border-radius);border:var(--snk-form-config__btn-add-group-container--border);background-color:var(--snk-form-config__btn-add-group-container--background-color)}ez-collapsible-box.draggable-mirror.sc-snk-form-config{display:table;background-color:var(--snk-form-config--background-color)}ez-collapsible-box.sc-snk-form-config{margin-bottom:10px}@media screen and (min-width: 480px){.form-config__field-config--selected.sc-snk-form-config .ez-flex.form-config__config-options.sc-snk-form-config{min-width:calc(300% + 12px)}.form-config__field-config--selected.sc-snk-form-config:nth-child(3n+2) .ez-flex.form-config__config-options.sc-snk-form-config{left:calc(100% / 1 * -1)}.form-config__field-config--selected.sc-snk-form-config:nth-child(3n+3) .ez-flex.form-config__config-options.sc-snk-form-config{left:calc(100% / 1 * -2)}}";
13
373
 
14
374
  const CONTAINER_ID = {
@@ -1007,4 +1367,4 @@ const SnkFormConfig = class {
1007
1367
  };
1008
1368
  SnkFormConfig.style = snkFormConfigCss;
1009
1369
 
1010
- export { SnkFormConfig as snk_form_config };
1370
+ export { SnkConfigOptions as snk_config_options, SnkForm as snk_form, SnkFormConfig as snk_form_config };
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, c as createEvent, h, g as getElement } from './index-a7d3d3f1.js';
2
2
  import { ApplicationContext } from '@sankhyalabs/core';
3
- import { d as VIEW_MODE } from './constants-8457af36.js';
3
+ import { V as VIEW_MODE } from './constants-7302ee87.js';
4
4
  import { A as AuthorizationConfig } from './AuthorizationConfig-dcbd207a.js';
5
5
 
6
6
  const snkConfiguratorCss = ".sc-snk-configurator-h{--snk-configurator__button-close--padding-left:var(--space--medium, 12px);--snk-configurator__title--color:var(--title--primary, #2B3A54);--snk-configurator__title--font-family:var(--font-pattern, \"Roboto\");--snk-configurator__title--font-size:var(--title--large, 20px);--snk-configurator__title--font-weight:var(--text-weight--extra-large, 700);--snk-configurator__subtitle--color:var(--title--primary, #2B3A54);--snk-configurator__subtitle--font-family:var(--font-pattern, \"Roboto\");--snk-configurator__subtitle--font-size:var(--text--medium, 14px);--snk-configurator__subtitle--font-weight:var(--text-weight--large, 600);--snk-configurator__scrollbar--color-default:var(--scrollbar--default, #626e82);--snk-configurator__scrollbar--color-background:var(--scrollbar--background, #E5EAF0);--snk-configurator__scrollbar--color-hover:var(--scrollbar--hover, #2B3A54);--snk-configurator__scrollbar--color-clicked:var(--scrollbar--clicked, #a2abb9);--snk-configurator__scrollbar--border-radius:var(--border--radius-small, 6px);--snk-configurator__scrollbar--width:var(--space--medium, 12px)}.snk-configurator.sc-snk-configurator{display:grid;grid-template-rows:auto 1fr auto;max-height:100%;width:100%}.snk-configurator__collsable-box-action.sc-snk-configurator{width:100%}.snk-configurator__action-buttons.sc-snk-configurator{display:flex;flex-direction:row;justify-content:flex-end;gap:var(--space--medium)}.snk-configurator__outline.sc-snk-configurator{display:flex;flex-direction:column;gap:var(--space--small);margin-top:var(--space--small);margin-bottom:var(--space--large)}@media screen and (min-width: 480px){.snk-configurator.sc-snk-configurator{width:359px;max-width:359px}}.snk-configurator__button-config.sc-snk-configurator{--ez-button--min-width:100%}.snk-configurator__header.sc-snk-configurator{display:flex;justify-content:space-between;align-items:center;width:100%}.snk-configurator__title.sc-snk-configurator{display:flex;margin:0;line-height:normal;letter-spacing:0em;text-align:left;color:var(--snk-configurator__title--color);font-size:var(--snk-configurator__title--font-size);font-family:var(--snk-configurator__title--font-family);font-weight:var(--snk-configurator__title--font-weight)}.snk-configurator__subtitle.sc-snk-configurator{display:flex;margin:0;padding-top:var(--space--medium);padding-bottom:var(--space--small);color:var(--snk-configurator__subtitle--color);font-size:var(--snk-configurator__subtitle--font-size);font-family:var(--snk-configurator__subtitle--font-family);font-weight:var(--snk-configurator__subtitle--font-weight)}.snk-configurator__button-close.sc-snk-configurator{padding-left:var(--snk-configurator__button-close--padding-left)}.snk-configurator__main.sc-snk-configurator{overflow-y:auto;scrollbar-width:thin;margin:var(--space--medium) 0;scrollbar-color:var(--snk-configurator__scrollbar--color-clicked) var(--snk-configurator__scrollbar--color-background)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar{background-color:var(--snk-configurator__scrollbar--color-background);width:var(--snk-configurator__scrollbar--width);max-width:var(--snk-configurator__scrollbar--width);min-width:var(--snk-configurator__scrollbar--width)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-track{background-color:var(--snk-configurator__scrollbar--color-background);border-radius:var(--snk-configurator__scrollbar--border-radius)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb{background-color:var(--snk-configurator__scrollbar--color-default);border-radius:var(--snk-configurator__scrollbar--border-radius)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb:vertical:hover,.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb:horizontal:hover{background-color:var(--snk-configurator__scrollbar--color-hover)}.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb:vertical:active,.snk-configurator__main.sc-snk-configurator::-webkit-scrollbar-thumb:horizontal:active{background-color:var(--snk-configurator__scrollbar--color-clicked)}";
@@ -1,17 +1,17 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-a7d3d3f1.js';
2
2
  import { StringUtils, ElementIDUtils, ApplicationContext, JSUtils, FloatingManager } from '@sankhyalabs/core';
3
3
  import { T as TaskbarElement } from './taskbar-elements-d59867f1.js';
4
- import './DataFetcher-a9c598f2.js';
5
- import './pesquisa-fetcher-8edaa8cd.js';
4
+ import './DataFetcher-5034df59.js';
5
+ import './pesquisa-fetcher-6bc2e41a.js';
6
6
  import { P as PresentationMode } from './index-3aa4977a.js';
7
7
  import './ISave-d8c8bc59.js';
8
8
  import '@sankhyalabs/ezui/dist/collection/utils/constants';
9
9
  import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
10
- import './dataunit-fetcher-c24c76c6.js';
10
+ import './dataunit-fetcher-56cb648b.js';
11
11
  import './filter-item-type.enum-d45e026f.js';
12
- import './form-config-fetcher-adbe5d34.js';
13
- import { d as VIEW_MODE } from './constants-8457af36.js';
14
- import { A as AutorizationType } from './auth-fetcher-749d880f.js';
12
+ import './form-config-fetcher-a7d3e277.js';
13
+ import { V as VIEW_MODE } from './constants-7302ee87.js';
14
+ import { A as AutorizationType } from './auth-fetcher-ca5d3a49.js';
15
15
  import './index-bdf75557.js';
16
16
  import './PrintUtils-3e4ff0f5.js';
17
17
  import '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils';
@@ -59,6 +59,7 @@ const SnkCrud = class {
59
59
  this.enableGridInsert = false;
60
60
  this.domainMessagesBuilder = undefined;
61
61
  this.ignoreReadOnlyFormFields = undefined;
62
+ this.enableLockManger = false;
62
63
  this.setCustomFormTitle = undefined;
63
64
  this.customContainerId = `SNK-CRUD-CUSTOM-CONTAINER-${StringUtils.generateUUID()}`;
64
65
  }
@@ -299,11 +300,16 @@ const SnkCrud = class {
299
300
  if (!isDocumentBody)
300
301
  element.focus();
301
302
  }
303
+ async function handleAddRecord() {
304
+ if (!dataUnit.hasNewRecord()) {
305
+ dataUnit.addRecord();
306
+ }
307
+ }
302
308
  keyboardManager
303
309
  .bind("F6", this.toggleView.bind(this), { description: "Alterna entre modo formulário e grade.", element: this._element })
304
310
  .bind("F7", saveDataUnitHandlingFocus.bind(this), { description: "Salva os dados.", element: this._element })
305
311
  .bind("ctrl + \\", saveDataUnitHandlingFocus.bind(this), { description: "Salva os dados.", element: this._element })
306
- .bind("F8", dataUnit.addRecord.bind(dataUnit), { description: "Adiciona um novo registro.", element: this._element })
312
+ .bind("F8", handleAddRecord.bind(this), { description: "Adiciona um novo registro.", element: this._element })
307
313
  .bind("F9", dataUnit.removeSelectedRecords.bind(dataUnit), { description: "Remove o registro selecionado.", element: this._element })
308
314
  .bind("ctrl + F9", dataUnit.removeSelectedRecords.bind(dataUnit), { description: "Remove o registro selecionado.", element: this._element })
309
315
  .bind("ctrl + .", () => {
@@ -400,7 +406,7 @@ const SnkCrud = class {
400
406
  return;
401
407
  }
402
408
  this._snkDataUnit.ignoreSaveMessage = (this._currentViewMode === VIEW_MODE.GRID && !this.enableGridInsert);
403
- return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", null, h("snk-grid", { ref: (ref) => this._snkGrid = ref, filterBarTitle: this.filterBarTitle, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, recordsValidator: this.recordsValidator, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID, disablePersonalizedFilter: this.disablePersonalizedFilter, gridLegacyConfigName: this.gridLegacyConfigName, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: evt => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, recordsValidator: this.recordsValidator, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId, formLegacyConfigName: this.formLegacyConfigName, enableGridInsert: this.enableGridInsert, getCustomTitle: this.setCustomFormTitle, ignoreReadOnlyFormFields: this.ignoreReadOnlyFormFields }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this.customContainerId })), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }), h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
409
+ return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", null, h("snk-grid", { ref: (ref) => this._snkGrid = ref, filterBarTitle: this.filterBarTitle, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, recordsValidator: this.recordsValidator, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID, disablePersonalizedFilter: this.disablePersonalizedFilter, gridLegacyConfigName: this.gridLegacyConfigName, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableLockManger: this.enableLockManger }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: evt => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, recordsValidator: this.recordsValidator, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId, formLegacyConfigName: this.formLegacyConfigName, enableGridInsert: this.enableGridInsert, getCustomTitle: this.setCustomFormTitle, ignoreReadOnlyFormFields: this.ignoreReadOnlyFormFields }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this.customContainerId })), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }), h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
404
410
  }
405
411
  get _element() { return getElement(this); }
406
412
  static get watchers() { return {
@@ -2,16 +2,16 @@ import { r as registerInstance, h, H as Host, g as getElement } from './index-a7
2
2
  import { ApplicationContext, ObjectUtils, UserInterface, DataType, ElementIDUtils } from '@sankhyalabs/core';
3
3
  import { ApplicationUtils, DialogType } from '@sankhyalabs/ezui/dist/collection/utils';
4
4
  import { D as DataExporterOption, a as DataExporterType, b as DataExporterFormat } from './index-3aa4977a.js';
5
- import { R as REPORT_LAUNCHER_RESOURCE_ID } from './constants-8457af36.js';
6
- import { D as DataFetcher } from './DataFetcher-a9c598f2.js';
7
- import { S as SnkDataUnit } from './snk-data-unit-0fdfb6c2.js';
8
- import './pesquisa-fetcher-8edaa8cd.js';
5
+ import { R as REPORT_LAUNCHER_RESOURCE_ID } from './constants-7302ee87.js';
6
+ import { D as DataFetcher } from './DataFetcher-5034df59.js';
7
+ import { S as SnkDataUnit } from './snk-data-unit-9fa7d2b9.js';
8
+ import './pesquisa-fetcher-6bc2e41a.js';
9
9
  import './ISave-d8c8bc59.js';
10
10
  import '@sankhyalabs/ezui/dist/collection/utils/constants';
11
11
  import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
12
- import './dataunit-fetcher-c24c76c6.js';
12
+ import './dataunit-fetcher-56cb648b.js';
13
13
  import './filter-item-type.enum-d45e026f.js';
14
- import './form-config-fetcher-adbe5d34.js';
14
+ import './form-config-fetcher-a7d3e277.js';
15
15
  import './PrintUtils-3e4ff0f5.js';
16
16
  import './SnkMessageBuilder-6fff4a4c.js';
17
17
  import '@sankhyalabs/core/dist/dataunit/metadata/DataType';
@@ -2,7 +2,7 @@ import { r as registerInstance, c as createEvent, h, g as getElement, H as Host
2
2
  import { Action, ObjectUtils, DataUnitAction, StringUtils, ApplicationContext } from '@sankhyalabs/core';
3
3
  import { ApplicationUtils, DialogType } from '@sankhyalabs/ezui/dist/collection/utils';
4
4
  import { O as OperationMap, S as SnkMessageBuilder } from './SnkMessageBuilder-6fff4a4c.js';
5
- import { g as getRecordValue, a as DatasetStrategy } from './dataunit-fetcher-c24c76c6.js';
5
+ import { g as getRecordValue, a as DatasetStrategy } from './dataunit-fetcher-56cb648b.js';
6
6
  import { convertType } from '@sankhyalabs/core/dist/dataunit/metadata/DataType';
7
7
  import { g as getSelectedRecordsIDsInfo } from './GetSelectedRecordsIDsInfo-9fa41508.js';
8
8
 
@@ -23,7 +23,7 @@ const SnkDataUnit = class {
23
23
  this._rowMetadataCache = new Map();
24
24
  this.REGEX_DATAUNIT_NAME = /dd:\/\/(.+?)\//;
25
25
  this._dataUnitObserver = async (action) => {
26
- const duState = this.buildDataState(action.type);
26
+ const duState = await this.buildDataState(action.type);
27
27
  this.dataState = duState;
28
28
  this.messagesBuilder.currentOperation = this.getMessageOperation();
29
29
  switch (action.type) {
@@ -135,14 +135,22 @@ const SnkDataUnit = class {
135
135
  async getRowMetadata(record) {
136
136
  return this.doGetRowMetadata(record);
137
137
  }
138
- doGetRowMetadata(record) {
138
+ async doGetRowMetadata(record) {
139
139
  const selectedRecord = this.dataUnit.getSelectedRecord();
140
140
  if (!record && !selectedRecord) {
141
141
  return;
142
142
  }
143
143
  const currentRecord = record || selectedRecord;
144
144
  const recordId = typeof currentRecord === 'string' ? currentRecord : currentRecord.__record__id__;
145
- const rowMetadata = this._metadataByRow.get(recordId);
145
+ let rowMetadata = this._metadataByRow.get(recordId);
146
+ /*
147
+ Nao fazemos cache de metadataByRow pra registros novos, pois a chave do mesmo
148
+ muda ao ser salvo, por isso essa tratativa é necessária para que o dataState fique com metadados
149
+ corretos nao confiando apenas no _metadataByRow
150
+ */
151
+ if (this.dataUnit.isNewRecord(recordId) && !rowMetadata) {
152
+ rowMetadata = await this.handleLoadRowMetadata(selectedRecord);
153
+ }
146
154
  if (!rowMetadata) {
147
155
  return;
148
156
  }
@@ -336,7 +344,7 @@ const SnkDataUnit = class {
336
344
  case Action.RECORDS_COPIED:
337
345
  return this.interceptRecordsCopied(action);
338
346
  case Action.DATA_CHANGED:
339
- await this.handleLoadRowMetadata(action);
347
+ await this.handleLoadRowMetadata(action.payload);
340
348
  return await this.interceptDataChange(action);
341
349
  case Action.CHANGING_DATA:
342
350
  return await this.interceptDataChange(action);
@@ -356,8 +364,9 @@ const SnkDataUnit = class {
356
364
  return action;
357
365
  }
358
366
  }
359
- async handleLoadRowMetadata(action) {
360
- const record = action.type === Action.DATA_CHANGED ? action.payload : action.payload.changes[0].record;
367
+ async handleLoadRowMetadata(record) {
368
+ if (!record)
369
+ return;
361
370
  const keysPayload = Object.keys(record);
362
371
  const rmpField = keysPayload.find((field) => this._fieldsWithRmp.includes(field));
363
372
  if (rmpField) {
@@ -436,7 +445,7 @@ const SnkDataUnit = class {
436
445
  isAllowed(flag) {
437
446
  return this._permissions ? this._permissions.isSup || this._permissions[flag] : false;
438
447
  }
439
- buildDataState(actionType) {
448
+ async buildDataState(actionType) {
440
449
  var _a;
441
450
  const selectionInfo = this.dataUnit.getSelectionInfo();
442
451
  const isStartingInsertionMode = (this.dataUnit.hasDirtyRecords() || this.dataUnit.hasWaitingChanges()) && (selectionInfo === null || selectionInfo === void 0 ? void 0 : selectionInfo.isEmpty());
@@ -444,7 +453,7 @@ const SnkDataUnit = class {
444
453
  let rowMetadata = (_a = this.dataState) === null || _a === void 0 ? void 0 : _a.rowMetadata;
445
454
  const allowedOverwrite = [Action.SELECTION_CHANGED, Action.EDITION_CANCELED, Action.NEXT_SELECTED, Action.PREVIOUS_SELECTED];
446
455
  if (selectedRecord && (!rowMetadata || allowedOverwrite.includes(actionType))) {
447
- rowMetadata = this.doGetRowMetadata(selectedRecord);
456
+ rowMetadata = await this.doGetRowMetadata(selectedRecord);
448
457
  }
449
458
  else if (rowMetadata) {
450
459
  rowMetadata.getProp = this.buildGetPropRowMetadata(rowMetadata);
@@ -466,17 +475,20 @@ const SnkDataUnit = class {
466
475
  });
467
476
  }
468
477
  async handleDataSaved(action) {
469
- const newRowMetadata = await this.handleLoadRowMetadata(action);
478
+ var _a, _b, _c;
479
+ const newRowMetadata = await this.handleLoadRowMetadata((_c = (_b = (_a = action === null || action === void 0 ? void 0 : action.payload) === null || _a === void 0 ? void 0 : _a.changes) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.record);
470
480
  if (newRowMetadata) {
471
481
  newRowMetadata.getProp = this.buildGetPropRowMetadata(newRowMetadata);
472
482
  }
473
483
  const recordId = action.payload.records[0].__record__id__;
474
484
  this._metadataByRow.set(recordId, newRowMetadata);
475
- this.dataState = this.buildDataState();
476
- if (this.ignoreSaveMessage) {
485
+ this.dataState = await this.buildDataState();
486
+ let saveOperation = action.payload.changes[0]._operation.toLowerCase();
487
+ if (saveOperation == 'copy')
488
+ saveOperation = OperationMap.CLONE;
489
+ if (this.ignoreSaveMessage && ![OperationMap.CLONE, OperationMap.INSERT].includes(saveOperation)) {
477
490
  return;
478
491
  }
479
- const saveOperation = action.payload.changes[0]._operation.toLowerCase();
480
492
  const msg = this.getMessage("snkDataUnit.saveInfo", action.payload.records[0], saveOperation);
481
493
  if (msg != undefined) {
482
494
  this.showSuccessMessage(msg);
@@ -569,7 +581,7 @@ const SnkDataUnit = class {
569
581
  const { records } = this.getMetadataByRow(this.dataUnit);
570
582
  this.dataUnit.records = records;
571
583
  }
572
- this.dataState = this.buildDataState();
584
+ this.dataState = await this.buildDataState();
573
585
  let resolver;
574
586
  while (resolver = this._onDataUnitResolve.pop()) {
575
587
  resolver(this.dataUnit);
@@ -1,10 +1,10 @@
1
- export { S as snk_data_unit } from './snk-data-unit-0fdfb6c2.js';
1
+ export { S as snk_data_unit } from './snk-data-unit-9fa7d2b9.js';
2
2
  import './index-a7d3d3f1.js';
3
3
  import '@sankhyalabs/core';
4
4
  import '@sankhyalabs/ezui/dist/collection/utils';
5
5
  import './SnkMessageBuilder-6fff4a4c.js';
6
- import './dataunit-fetcher-c24c76c6.js';
7
- import './DataFetcher-a9c598f2.js';
6
+ import './dataunit-fetcher-56cb648b.js';
7
+ import './DataFetcher-5034df59.js';
8
8
  import './PrintUtils-3e4ff0f5.js';
9
9
  import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
10
10
  import '@sankhyalabs/ezui/dist/collection/utils/constants';