@sankhyalabs/ezui 1.1.74 → 1.1.77

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 (186) hide show
  1. package/dist/cjs/ApplicationUtils-d1c1db56.js +35 -0
  2. package/dist/cjs/AssetsUtils-dd585fba.js +24 -0
  3. package/dist/cjs/DataUnit-fdd7c70e.js +474 -0
  4. package/dist/cjs/DateUtils-716769e0.js +46 -0
  5. package/dist/cjs/ez-action-chip.cjs.entry.js +1 -1
  6. package/dist/cjs/ez-application.cjs.entry.js +28 -0
  7. package/dist/cjs/ez-button_11.cjs.entry.js +111771 -0
  8. package/dist/cjs/ez-calendar.cjs.entry.js +212 -0
  9. package/dist/cjs/ez-collapsible-box_6.cjs.entry.js +630 -0
  10. package/dist/cjs/ez-combo-box.cjs.entry.js +250 -0
  11. package/dist/cjs/ez-date-time-input.cjs.entry.js +144 -0
  12. package/dist/cjs/ez-dialog.cjs.entry.js +1 -1
  13. package/dist/cjs/ez-form.cjs.entry.js +1838 -0
  14. package/dist/cjs/ez-label-chip.cjs.entry.js +1 -1
  15. package/dist/cjs/ez-number-input.cjs.entry.js +61 -190
  16. package/dist/cjs/ez-popover.cjs.entry.js +3 -3
  17. package/dist/cjs/ez-popup.cjs.entry.js +2 -2
  18. package/dist/cjs/ez-time-input.cjs.entry.js +9 -8
  19. package/dist/cjs/ez-toast.cjs.entry.js +1 -1
  20. package/dist/cjs/ezui.cjs.js +3 -3
  21. package/dist/cjs/form-metadata.cjs.entry.js +129 -0
  22. package/dist/cjs/index-262d703b.js +7442 -0
  23. package/dist/cjs/{index-4d2896bb.js → index-4e4bae01.js} +3 -5
  24. package/dist/cjs/loader.cjs.js +3 -3
  25. package/dist/collection/collection-manifest.json +8 -3
  26. package/dist/collection/components/ez-application/ez-application.css +3 -0
  27. package/dist/collection/components/ez-application/ez-application.js +37 -0
  28. package/dist/collection/components/ez-button/ez-button.css +78 -44
  29. package/dist/collection/components/ez-button/ez-button.js +36 -4
  30. package/dist/collection/components/ez-calendar/ez-calendar.css +132 -65
  31. package/dist/collection/components/ez-calendar/ez-calendar.js +180 -33
  32. package/dist/collection/components/ez-check/ez-check.css +78 -78
  33. package/dist/collection/components/ez-check/ez-check.js +3 -3
  34. package/dist/collection/components/ez-collapsible-box/ez-collapsible-box.css +34 -34
  35. package/dist/collection/components/ez-collapsible-box/ez-collapsible-box.js +12 -12
  36. package/dist/collection/components/ez-combo-box/ez-combo-box.css +67 -51
  37. package/dist/collection/components/ez-combo-box/ez-combo-box.js +1 -0
  38. package/dist/collection/components/ez-date-input/ez-date-input.css +17 -3
  39. package/dist/collection/components/ez-date-input/ez-date-input.js +2 -2
  40. package/dist/collection/components/ez-date-time-input/ez-date-time-input.css +49 -0
  41. package/dist/collection/components/ez-date-time-input/ez-date-time-input.js +254 -0
  42. package/dist/collection/components/ez-form/ez-form.js +37 -35
  43. package/dist/collection/components/ez-form/store/Form.actions.js +16 -16
  44. package/dist/collection/components/ez-form/store/Form.reducer.js +17 -17
  45. package/dist/collection/components/ez-form/subcomponents/DataUnit.js +11 -11
  46. package/dist/collection/components/ez-form/subcomponents/form-metadata.js +12 -12
  47. package/dist/collection/components/ez-form/subcomponents/place-holder.js +1 -1
  48. package/dist/collection/components/ez-form/subcomponents/structure/Field.js +22 -22
  49. package/dist/collection/components/ez-form/subcomponents/structure/FormSheet.js +1 -1
  50. package/dist/collection/components/ez-form/subcomponents/structure/NavigationBar.js +9 -9
  51. package/dist/collection/components/ez-grid/controller/DataUnitBridge.js +21 -0
  52. package/dist/collection/components/ez-grid/controller/EzGridController.js +1 -0
  53. package/dist/collection/components/ez-grid/controller/ag-grid/AgGridController.js +203 -0
  54. package/dist/collection/components/ez-grid/controller/ag-grid/DataSource.js +41 -0
  55. package/dist/collection/components/ez-grid/controller/ag-grid/i18n/pt-BR.js +75 -0
  56. package/dist/collection/components/ez-grid/controller/ag-grid/mock/Server.js +69 -0
  57. package/dist/collection/components/ez-grid/controller/ag-grid/template/HeaderColumnTemplate.js +12 -0
  58. package/dist/collection/components/ez-grid/ez-grid.css +15 -0
  59. package/dist/collection/components/ez-grid/ez-grid.js +414 -0
  60. package/dist/collection/components/ez-grid/subcomponents/gridconfig/grid-config.css +105 -0
  61. package/dist/collection/components/ez-grid/subcomponents/gridconfig/grid-config.js +354 -0
  62. package/dist/collection/components/ez-grid/subcomponents/select-box/select-box.css +7 -0
  63. package/dist/collection/components/ez-grid/subcomponents/select-box/select-box.js +66 -0
  64. package/dist/collection/components/ez-icon/ez-icon.css +1 -1
  65. package/dist/collection/components/ez-list/ez-list.css +227 -44
  66. package/dist/collection/components/ez-list/ez-list.js +529 -149
  67. package/dist/collection/components/ez-modal/ez-modal.css +4 -4
  68. package/dist/collection/components/ez-modal/ez-modal.js +1 -1
  69. package/dist/collection/components/ez-number-input/ez-number-input.css +7 -162
  70. package/dist/collection/components/ez-number-input/ez-number-input.js +90 -281
  71. package/dist/collection/components/ez-popover/ez-popover.css +10 -6
  72. package/dist/collection/components/ez-popup/ez-popup.css +25 -27
  73. package/dist/collection/components/ez-tabselector/ez-tabselector.css +0 -1
  74. package/dist/collection/components/ez-tabselector/ez-tabselector.js +3 -3
  75. package/dist/collection/components/ez-text-area/ez-text-area.js +1 -0
  76. package/dist/collection/components/ez-text-input/ez-text-input.css +60 -60
  77. package/dist/collection/components/ez-text-input/ez-text-input.js +17 -16
  78. package/dist/collection/components/ez-time-input/ez-time-input.js +3 -2
  79. package/dist/collection/components/ez-upload/ez-upload.css +41 -41
  80. package/dist/collection/components/ez-upload/ez-upload.js +55 -52
  81. package/dist/collection/components/test-du/test-du.css +3 -0
  82. package/dist/collection/components/test-du/test-du.js +45 -0
  83. package/dist/collection/servidor.js +94 -94
  84. package/dist/collection/utils/{Application.js → ApplicationUtils.js} +4 -4
  85. package/dist/collection/utils/AssetsUtils.js +19 -0
  86. package/dist/custom-elements/index.d.ts +36 -6
  87. package/dist/custom-elements/index.js +121017 -3022
  88. package/dist/esm/ApplicationUtils-01280a9d.js +33 -0
  89. package/dist/esm/AssetsUtils-3803e935.js +22 -0
  90. package/dist/esm/DataUnit-1cd45202.js +464 -0
  91. package/dist/esm/DateUtils-0a1bbd7a.js +44 -0
  92. package/dist/esm/ez-action-chip.entry.js +1 -1
  93. package/dist/esm/ez-application.entry.js +24 -0
  94. package/dist/esm/ez-button_11.entry.js +111757 -0
  95. package/dist/esm/ez-calendar.entry.js +208 -0
  96. package/dist/esm/ez-collapsible-box_6.entry.js +621 -0
  97. package/dist/esm/ez-combo-box.entry.js +246 -0
  98. package/dist/esm/ez-date-time-input.entry.js +140 -0
  99. package/dist/esm/ez-dialog.entry.js +1 -1
  100. package/dist/esm/ez-form.entry.js +1834 -0
  101. package/dist/esm/ez-label-chip.entry.js +1 -1
  102. package/dist/esm/ez-number-input.entry.js +61 -190
  103. package/dist/esm/ez-popover.entry.js +3 -3
  104. package/dist/esm/ez-popup.entry.js +2 -2
  105. package/dist/esm/ez-time-input.entry.js +4 -3
  106. package/dist/esm/ez-toast.entry.js +1 -1
  107. package/dist/esm/ezui.js +3 -3
  108. package/dist/esm/form-metadata.entry.js +125 -0
  109. package/dist/esm/{index-33153059.js → index-1dacecd3.js} +3 -6
  110. package/dist/esm/index-cfd5e193.js +7433 -0
  111. package/dist/esm/loader.js +3 -3
  112. package/dist/ezui/ezui.esm.js +1 -1
  113. package/dist/ezui/p-1ea8187e.entry.js +369 -0
  114. package/dist/ezui/p-37a611ea.js +1 -0
  115. package/dist/ezui/p-45689464.entry.js +1 -0
  116. package/dist/ezui/{p-34d288d0.entry.js → p-516d0e0f.entry.js} +1 -1
  117. package/dist/ezui/p-57291f97.entry.js +1 -0
  118. package/dist/ezui/{p-0d476efb.entry.js → p-5a86e18a.entry.js} +1 -1
  119. package/dist/ezui/{p-47406a6e.entry.js → p-5da66d3e.entry.js} +1 -1
  120. package/dist/ezui/p-69416bec.entry.js +1 -0
  121. package/dist/ezui/p-7107d7ef.js +1 -0
  122. package/dist/ezui/p-7ef97c5f.entry.js +1 -0
  123. package/dist/ezui/p-88f45a83.entry.js +1 -0
  124. package/dist/ezui/p-8c51a6aa.entry.js +1 -0
  125. package/dist/ezui/p-8f4851a6.js +1 -0
  126. package/dist/ezui/p-9dfd537e.js +1 -0
  127. package/dist/ezui/{p-8818da66.entry.js → p-a18a2d7b.entry.js} +1 -1
  128. package/dist/ezui/p-a223eed8.entry.js +1 -0
  129. package/dist/ezui/p-b36308e7.js +1 -0
  130. package/dist/ezui/p-c0af195b.entry.js +1 -0
  131. package/dist/ezui/p-c6d469fc.entry.js +1 -0
  132. package/dist/ezui/p-c89629eb.js +1 -0
  133. package/dist/ezui/p-e7ee2836.entry.js +1 -0
  134. package/dist/ezui/p-f7b835cf.entry.js +1 -0
  135. package/dist/types/components/ez-application/ez-application.d.ts +12 -0
  136. package/dist/types/components/ez-button/ez-button.d.ts +5 -0
  137. package/dist/types/components/ez-calendar/ez-calendar.d.ts +25 -1
  138. package/dist/types/components/ez-check/ez-check.d.ts +1 -1
  139. package/dist/types/components/ez-collapsible-box/ez-collapsible-box.d.ts +3 -3
  140. package/dist/types/components/ez-date-time-input/ez-date-time-input.d.ts +42 -0
  141. package/dist/types/components/ez-form/ez-form.d.ts +9 -9
  142. package/dist/types/components/ez-form/subcomponents/DataUnit.d.ts +1 -1
  143. package/dist/types/components/ez-form/subcomponents/form-metadata.d.ts +1 -1
  144. package/dist/types/components/ez-grid/controller/DataUnitBridge.d.ts +8 -0
  145. package/dist/types/components/ez-grid/controller/EzGridController.d.ts +195 -0
  146. package/dist/types/components/ez-grid/controller/ag-grid/AgGridController.d.ts +34 -0
  147. package/dist/types/components/ez-grid/controller/ag-grid/DataSource.d.ts +11 -0
  148. package/dist/types/components/ez-grid/controller/ag-grid/i18n/pt-BR.d.ts +2 -0
  149. package/dist/types/components/ez-grid/controller/ag-grid/mock/Server.d.ts +8 -0
  150. package/dist/types/components/ez-grid/ez-grid.d.ts +78 -0
  151. package/dist/types/components/ez-grid/subcomponents/gridconfig/grid-config.d.ts +30 -0
  152. package/dist/types/components/ez-grid/subcomponents/select-box/select-box.d.ts +9 -0
  153. package/dist/types/components/ez-list/ez-list.d.ts +70 -17
  154. package/dist/types/components/ez-number-input/ez-number-input.d.ts +33 -50
  155. package/dist/types/components/ez-tabselector/ez-tabselector.d.ts +1 -1
  156. package/dist/types/components/ez-text-input/ez-text-input.d.ts +1 -1
  157. package/dist/types/components/ez-upload/ez-upload.d.ts +10 -7
  158. package/dist/types/components/test-du/test-du.d.ts +6 -0
  159. package/dist/types/components.d.ts +321 -149
  160. package/dist/types/stencil-public-runtime.d.ts +6 -4
  161. package/dist/types/utils/{Application.d.ts → ApplicationUtils.d.ts} +1 -1
  162. package/dist/types/utils/AssetsUtils.d.ts +1 -0
  163. package/package.json +10 -8
  164. package/react/components.d.ts +6 -1
  165. package/react/components.js +6 -1
  166. package/react/components.js.map +1 -1
  167. package/dist/cjs/RequestMetadata-2cd01e8a.js +0 -531
  168. package/dist/cjs/ez-button_16.cjs.entry.js +0 -4065
  169. package/dist/cjs/ez-list.cjs.entry.js +0 -174
  170. package/dist/cjs/ez-modal.cjs.entry.js +0 -65
  171. package/dist/collection/components/ez-numeric-input/ez-numeric-input.css +0 -13
  172. package/dist/collection/components/ez-numeric-input/ez-numeric-input.js +0 -185
  173. package/dist/esm/RequestMetadata-c265c9d5.js +0 -527
  174. package/dist/esm/ez-button_16.entry.js +0 -4046
  175. package/dist/esm/ez-list.entry.js +0 -170
  176. package/dist/esm/ez-modal.entry.js +0 -61
  177. package/dist/ezui/p-061d21ba.entry.js +0 -1
  178. package/dist/ezui/p-15743b09.entry.js +0 -1
  179. package/dist/ezui/p-25953d44.entry.js +0 -1
  180. package/dist/ezui/p-4df6f855.js +0 -1
  181. package/dist/ezui/p-50464bdf.entry.js +0 -1
  182. package/dist/ezui/p-67410dfa.entry.js +0 -1
  183. package/dist/ezui/p-7f3bc6d9.entry.js +0 -1
  184. package/dist/ezui/p-907de194.entry.js +0 -1
  185. package/dist/ezui/p-9dfccb16.js +0 -1
  186. package/dist/types/components/ez-numeric-input/ez-numeric-input.d.ts +0 -45
@@ -1,11 +1,11 @@
1
- import { Component, h, Element, forceUpdate, Prop, Method, Watch } from '@stencil/core';
2
- import { createStore, applyMiddleware, combineReducers } from 'redux';
3
- import thunk from 'redux-thunk';
4
- import { formLoad, invalidField, showHideNavigationButtons } from './store/Form.actions';
5
- import undoable from 'redux-undo';
6
- import formReducer, { formNonHistoricReducer } from './store/Form.reducer';
7
- import { FormSheet } from './subcomponents/structure/FormSheet';
8
- import DataUnit from './subcomponents/DataUnit';
1
+ import { Component, h, Element, forceUpdate, Prop, Method, Watch } from "@stencil/core";
2
+ import { createStore, applyMiddleware, combineReducers } from "redux";
3
+ import thunk from "redux-thunk";
4
+ import { formLoad, invalidField, showHideNavigationButtons } from "./store/Form.actions";
5
+ import undoable from "redux-undo";
6
+ import formReducer, { formNonHistoricReducer } from "./store/Form.reducer";
7
+ import { FormSheet } from "./subcomponents/structure/FormSheet";
8
+ import DataUnit from "./subcomponents/DataUnit";
9
9
  export class EzForm {
10
10
  constructor() {
11
11
  this.enabled = true;
@@ -19,8 +19,9 @@ export class EzForm {
19
19
  this._preparedMetadata = undefined;
20
20
  }
21
21
  async validate() {
22
+ const duSourcesNames = Array.from(this._duSources.keys());
22
23
  for (let i = 0; i < this._duSources.size; i++) {
23
- const duName = Array.from(this._duSources.keys())[i];
24
+ const duName = duSourcesNames[i];
24
25
  let du = this._dataUnits.get(duName);
25
26
  if (du === undefined) {
26
27
  const source = this._duSources.get(duName);
@@ -34,8 +35,9 @@ export class EzForm {
34
35
  }
35
36
  async getChanges() {
36
37
  let allChanges = [];
38
+ const dataUnits = Array.from(this._dataUnits.values());
37
39
  for (let i = 0; i < this._dataUnits.size; i++) {
38
- const du = Array.from(this._dataUnits.values())[i];
40
+ const du = dataUnits[i];
39
41
  //Só devemos buscar as alterações de DU raiz, pois os sub DUs serão enviados junto.
40
42
  if (!du.parentDU) {
41
43
  const duChanges = du.getChangesToSave();
@@ -53,15 +55,15 @@ export class EzForm {
53
55
  }
54
56
  }
55
57
  validateRecords(dataUnit, records, triggedBy) {
56
- const result = { isValid: true, message: '' };
57
- if (this.ignoresavevalidation && triggedBy === "SAVE") {
58
+ const result = { isValid: true, message: "" };
59
+ if (this.ignoreSaveValidation && triggedBy === "SAVE") {
58
60
  return result;
59
61
  }
60
62
  const validateField = (field) => {
61
63
  if (field.readOnly) {
62
64
  return false;
63
65
  }
64
- if (field.userInterface === 'SWITCH' || field.userInterface === 'CHECKBOX') {
66
+ if (field.userInterface === "SWITCH" || field.userInterface === "CHECKBOX") {
65
67
  return false;
66
68
  }
67
69
  return true;
@@ -72,7 +74,7 @@ export class EzForm {
72
74
  const recordIndex = record["record__index"];
73
75
  const fieldName = field.name;
74
76
  const fieldValue = record[fieldName];
75
- if (fieldValue === null || fieldValue === undefined || fieldValue === '') {
77
+ if (fieldValue === null || fieldValue === undefined || fieldValue === "") {
76
78
  const tabPosition = this._tabPositionByField.get(dataUnit.name + field.name);
77
79
  this._store.dispatch(invalidField(tabPosition.tabName, tabPosition.index, dataUnit.name, recordIndex, record.record__id, field.name, "Essa informação é obrigatória"));
78
80
  result.isValid = false;
@@ -99,7 +101,7 @@ export class EzForm {
99
101
  return result;
100
102
  }
101
103
  loadMDFromExecutor(callBack) {
102
- const loadMetadataFunction = this.parseExecutor(this.metadataexecutor);
104
+ const loadMetadataFunction = this.parseExecutor(this.metadataExecutor);
103
105
  if (loadMetadataFunction) {
104
106
  const result = loadMetadataFunction();
105
107
  if (result) {
@@ -179,7 +181,7 @@ export class EzForm {
179
181
  });
180
182
  this._store = createStore(rootReducer, applyMiddleware(thunk));
181
183
  this._store.subscribe(() => { forceUpdate(this); });
182
- if (this.slavemode) {
184
+ if (this.slaveMode) {
183
185
  this._store.dispatch(showHideNavigationButtons("saveVisible", false));
184
186
  this._store.dispatch(showHideNavigationButtons("cancelVisible", false));
185
187
  this._store.dispatch(showHideNavigationButtons("reloadVisible", false));
@@ -202,12 +204,12 @@ export class EzForm {
202
204
  this._duToLoad = [];
203
205
  }
204
206
  loadSearch(argument, context) {
205
- const fieldSearchExecutor = this.parseExecutor(this.fieldsearchexecutor);
207
+ const fieldSearchExecutor = this.parseExecutor(this.fieldSearchExecutor);
206
208
  if (fieldSearchExecutor) {
207
209
  return fieldSearchExecutor(argument, context);
208
210
  }
209
211
  else {
210
- return [{ value: 0, label: 'Sem resultados' }];
212
+ return [{ value: 0, label: "Sem resultados" }];
211
213
  }
212
214
  }
213
215
  buildDataUnit(dataUnit, parentDataUnit) {
@@ -234,9 +236,9 @@ export class EzForm {
234
236
  }
235
237
  decorateDU(dataUnit) {
236
238
  dataUnit.store = this._store;
237
- dataUnit.loadExecutor = this.parseExecutor(this.loadexecutor);
238
- dataUnit.saveExecutor = this.parseExecutor(this.saveexecutor);
239
- dataUnit.removeExecutor = this.parseExecutor(this.removeexecutor);
239
+ dataUnit.loadExecutor = this.parseExecutor(this.loadExecutor);
240
+ dataUnit.saveExecutor = this.parseExecutor(this.saveExecutor);
241
+ dataUnit.removeExecutor = this.parseExecutor(this.removeExecutor);
240
242
  dataUnit.recordsValidator = this;
241
243
  }
242
244
  render() {
@@ -256,7 +258,7 @@ export class EzForm {
256
258
  }; }
257
259
  static get assetsDirs() { return ["assets"]; }
258
260
  static get properties() { return {
259
- "metadataexecutor": {
261
+ "metadataExecutor": {
260
262
  "type": "string",
261
263
  "mutable": false,
262
264
  "complexType": {
@@ -274,10 +276,10 @@ export class EzForm {
274
276
  "tags": [],
275
277
  "text": ""
276
278
  },
277
- "attribute": "metadataexecutor",
279
+ "attribute": "metadata-executor",
278
280
  "reflect": false
279
281
  },
280
- "loadexecutor": {
282
+ "loadExecutor": {
281
283
  "type": "string",
282
284
  "mutable": false,
283
285
  "complexType": {
@@ -295,10 +297,10 @@ export class EzForm {
295
297
  "tags": [],
296
298
  "text": ""
297
299
  },
298
- "attribute": "loadexecutor",
300
+ "attribute": "load-executor",
299
301
  "reflect": false
300
302
  },
301
- "saveexecutor": {
303
+ "saveExecutor": {
302
304
  "type": "string",
303
305
  "mutable": false,
304
306
  "complexType": {
@@ -316,10 +318,10 @@ export class EzForm {
316
318
  "tags": [],
317
319
  "text": ""
318
320
  },
319
- "attribute": "saveexecutor",
321
+ "attribute": "save-executor",
320
322
  "reflect": false
321
323
  },
322
- "removeexecutor": {
324
+ "removeExecutor": {
323
325
  "type": "string",
324
326
  "mutable": false,
325
327
  "complexType": {
@@ -337,10 +339,10 @@ export class EzForm {
337
339
  "tags": [],
338
340
  "text": ""
339
341
  },
340
- "attribute": "removeexecutor",
342
+ "attribute": "remove-executor",
341
343
  "reflect": false
342
344
  },
343
- "fieldsearchexecutor": {
345
+ "fieldSearchExecutor": {
344
346
  "type": "string",
345
347
  "mutable": false,
346
348
  "complexType": {
@@ -358,10 +360,10 @@ export class EzForm {
358
360
  "tags": [],
359
361
  "text": ""
360
362
  },
361
- "attribute": "fieldsearchexecutor",
363
+ "attribute": "field-search-executor",
362
364
  "reflect": false
363
365
  },
364
- "ignoresavevalidation": {
366
+ "ignoreSaveValidation": {
365
367
  "type": "boolean",
366
368
  "mutable": false,
367
369
  "complexType": {
@@ -375,7 +377,7 @@ export class EzForm {
375
377
  "tags": [],
376
378
  "text": ""
377
379
  },
378
- "attribute": "ignoresavevalidation",
380
+ "attribute": "ignore-save-validation",
379
381
  "reflect": false
380
382
  },
381
383
  "metadata": {
@@ -401,7 +403,7 @@ export class EzForm {
401
403
  "text": ""
402
404
  }
403
405
  },
404
- "slavemode": {
406
+ "slaveMode": {
405
407
  "type": "boolean",
406
408
  "mutable": false,
407
409
  "complexType": {
@@ -415,7 +417,7 @@ export class EzForm {
415
417
  "tags": [],
416
418
  "text": ""
417
419
  },
418
- "attribute": "slavemode",
420
+ "attribute": "slave-mode",
419
421
  "reflect": false
420
422
  },
421
423
  "enabled": {
@@ -1,18 +1,18 @@
1
1
  export function changeFieldValue(dataUnit, recordId, fieldName, value) {
2
2
  return {
3
- type: 'FORM/CHANGEFIELD',
3
+ type: "FORM/CHANGEFIELD",
4
4
  payload: { dataUnit, recordId, fieldName, value }
5
5
  };
6
6
  }
7
7
  export function changeTab(formId, index) {
8
8
  return {
9
- type: 'FORM/CHANGETAB',
9
+ type: "FORM/CHANGETAB",
10
10
  payload: { formId, index }
11
11
  };
12
12
  }
13
13
  export function clearEdition(dataUnit, recordsLimit) {
14
14
  return {
15
- type: 'FORM/CLEAREDITION',
15
+ type: "FORM/CLEAREDITION",
16
16
  payload: {
17
17
  dataUnit,
18
18
  recordsLimit
@@ -21,13 +21,13 @@ export function clearEdition(dataUnit, recordsLimit) {
21
21
  }
22
22
  export function collapseExpandGroup(collapseId, collapsed) {
23
23
  return {
24
- type: 'FORM/COLLAPSEGROUP',
24
+ type: "FORM/COLLAPSEGROUP",
25
25
  payload: { collapseId, collapsed }
26
26
  };
27
27
  }
28
28
  export function previousRecord(dataUnit) {
29
29
  return {
30
- type: 'FORM/NAVIGATE',
30
+ type: "FORM/NAVIGATE",
31
31
  payload: {
32
32
  dataUnit,
33
33
  limit: 0,
@@ -37,7 +37,7 @@ export function previousRecord(dataUnit) {
37
37
  }
38
38
  export function nextRecord(dataUnit, limit) {
39
39
  return {
40
- type: 'FORM/NAVIGATE',
40
+ type: "FORM/NAVIGATE",
41
41
  payload: {
42
42
  dataUnit,
43
43
  limit,
@@ -47,7 +47,7 @@ export function nextRecord(dataUnit, limit) {
47
47
  }
48
48
  export function insertRecord(dataUnit, insertionIndex) {
49
49
  return {
50
- type: 'FORM/INSERT',
50
+ type: "FORM/INSERT",
51
51
  payload: {
52
52
  dataUnit,
53
53
  insertionIndex
@@ -56,12 +56,12 @@ export function insertRecord(dataUnit, insertionIndex) {
56
56
  }
57
57
  export function formLoad() {
58
58
  return {
59
- type: 'FORM/LOAD'
59
+ type: "FORM/LOAD"
60
60
  };
61
61
  }
62
62
  export function dataLoading(dataUnit) {
63
63
  return {
64
- type: 'FORM/DATALOADING',
64
+ type: "FORM/DATALOADING",
65
65
  payload: {
66
66
  dataUnit
67
67
  }
@@ -69,7 +69,7 @@ export function dataLoading(dataUnit) {
69
69
  }
70
70
  export function savingChanges(dataUnit) {
71
71
  return {
72
- type: 'FORM/SAVINGCHANGES',
72
+ type: "FORM/SAVINGCHANGES",
73
73
  payload: {
74
74
  dataUnit
75
75
  }
@@ -77,7 +77,7 @@ export function savingChanges(dataUnit) {
77
77
  }
78
78
  export function dataLoaded(dataUnit) {
79
79
  return {
80
- type: 'FORM/DATALOADED',
80
+ type: "FORM/DATALOADED",
81
81
  payload: {
82
82
  dataUnit
83
83
  }
@@ -85,7 +85,7 @@ export function dataLoaded(dataUnit) {
85
85
  }
86
86
  export function changesSaved(dataUnit) {
87
87
  return {
88
- type: 'FORM/CHANGESSAVED',
88
+ type: "FORM/CHANGESSAVED",
89
89
  payload: {
90
90
  dataUnit
91
91
  }
@@ -93,7 +93,7 @@ export function changesSaved(dataUnit) {
93
93
  }
94
94
  export function removingRecord(dataUnit) {
95
95
  return {
96
- type: 'FORM/REMOVINGRECORD',
96
+ type: "FORM/REMOVINGRECORD",
97
97
  payload: {
98
98
  dataUnit
99
99
  }
@@ -101,7 +101,7 @@ export function removingRecord(dataUnit) {
101
101
  }
102
102
  export function recordRemoved(dataUnit) {
103
103
  return {
104
- type: 'FORM/RECORDREMOVED',
104
+ type: "FORM/RECORDREMOVED",
105
105
  payload: {
106
106
  dataUnit
107
107
  }
@@ -109,7 +109,7 @@ export function recordRemoved(dataUnit) {
109
109
  }
110
110
  export function invalidField(tabController, tabIndex, dataUnit, recordIndex, recordId, fieldName, errorMessage) {
111
111
  return {
112
- type: 'FORM/INVALIDFIELD',
112
+ type: "FORM/INVALIDFIELD",
113
113
  payload: {
114
114
  tabController,
115
115
  tabIndex,
@@ -123,7 +123,7 @@ export function invalidField(tabController, tabIndex, dataUnit, recordIndex, rec
123
123
  }
124
124
  export function showHideNavigationButtons(buttonName, status) {
125
125
  return {
126
- type: 'FORM/SHOWHIDENAVBTN',
126
+ type: "FORM/SHOWHIDENAVBTN",
127
127
  payload: {
128
128
  buttonName,
129
129
  status
@@ -20,19 +20,19 @@ const inicialNonHistState = {
20
20
  };
21
21
  export default function formReducer(state = inicialHistState, action) {
22
22
  switch (action.type) {
23
- case 'FORM/COLLAPSEGROUP':
23
+ case "FORM/COLLAPSEGROUP":
24
24
  return collapseGroup(state, action.payload);
25
- case 'FORM/CHANGETAB':
25
+ case "FORM/CHANGETAB":
26
26
  return changeTab(state, action.payload.formId, action.payload.index);
27
- case 'FORM/NAVIGATE':
27
+ case "FORM/NAVIGATE":
28
28
  return navigate(state, action.payload);
29
- case 'FORM/INSERT':
29
+ case "FORM/INSERT":
30
30
  return insertRecord(state, action.payload);
31
- case 'FORM/CHANGEFIELD':
31
+ case "FORM/CHANGEFIELD":
32
32
  return changeFieldValue(state, action.payload);
33
- case 'FORM/CLEAREDITION':
33
+ case "FORM/CLEAREDITION":
34
34
  return clearEdition(state, action.payload);
35
- case 'FORM/INVALIDFIELD':
35
+ case "FORM/INVALIDFIELD":
36
36
  return navigateToInvalid(state, action.payload);
37
37
  default:
38
38
  return state;
@@ -40,25 +40,25 @@ export default function formReducer(state = inicialHistState, action) {
40
40
  }
41
41
  export function formNonHistoricReducer(state = inicialNonHistState, action) {
42
42
  switch (action.type) {
43
- case 'FORM/DATALOADING':
43
+ case "FORM/DATALOADING":
44
44
  return dataLoading(state, action.payload);
45
- case 'FORM/DATALOADED':
45
+ case "FORM/DATALOADED":
46
46
  return dataLoaded(state, action.payload);
47
- case 'FORM/SAVINGCHANGES':
47
+ case "FORM/SAVINGCHANGES":
48
48
  return savingChanges(state, action.payload);
49
- case 'FORM/CHANGESSAVED':
49
+ case "FORM/CHANGESSAVED":
50
50
  return changesSaved(state, action.payload);
51
- case 'FORM/REMOVINGRECORD':
51
+ case "FORM/REMOVINGRECORD":
52
52
  return removingRecord(state, action.payload);
53
- case 'FORM/RECORDREMOVED':
53
+ case "FORM/RECORDREMOVED":
54
54
  return recordRemoved(state, action.payload);
55
- case 'FORM/INVALIDFIELD':
55
+ case "FORM/INVALIDFIELD":
56
56
  return invalidField(state, action.payload);
57
- case 'FORM/CLEAREDITION':
57
+ case "FORM/CLEAREDITION":
58
58
  return clearAllInvalidFields(state, action.payload);
59
- case 'FORM/CHANGEFIELD':
59
+ case "FORM/CHANGEFIELD":
60
60
  return clearInvalidField(state, action.payload);
61
- case 'FORM/SHOWHIDENAVBTN':
61
+ case "FORM/SHOWHIDENAVBTN":
62
62
  return showHideNavBtn(state, action.payload);
63
63
  default:
64
64
  return state;
@@ -1,8 +1,8 @@
1
- import { changeFieldValue, changesSaved, clearEdition, dataLoaded, dataLoading, insertRecord, nextRecord, previousRecord, recordRemoved, removingRecord, savingChanges } from '../store/Form.actions';
2
- import { selectRecordChanges, selectCurrentRecordIndex, selectLoadingData, selectNewRecordIndex, selectDataUnitChanges, selectErrorMessage } from '../store/Form.selectors';
3
- import Application from '../../../utils/Application';
1
+ import { changeFieldValue, changesSaved, clearEdition, dataLoaded, dataLoading, insertRecord, nextRecord, previousRecord, recordRemoved, removingRecord, savingChanges } from "../store/Form.actions";
2
+ import { selectRecordChanges, selectCurrentRecordIndex, selectLoadingData, selectNewRecordIndex, selectDataUnitChanges, selectErrorMessage } from "../store/Form.selectors";
3
+ import ApplicationUtils from "../../../utils/ApplicationUtils";
4
4
  export default class DataUnit {
5
- constructor(name, unitLabel, cardinality = '1', parentDU = null) {
5
+ constructor(name, unitLabel, cardinality = "1", parentDU = null) {
6
6
  this.name = name;
7
7
  this.unitLabel = unitLabel;
8
8
  this.cardinality = cardinality;
@@ -85,13 +85,13 @@ export default class DataUnit {
85
85
  }, 100);
86
86
  }
87
87
  cancel() {
88
- this.records = this.records.filter(r => !r.record__id.startsWith('NEW_'));
88
+ this.records = this.records.filter(r => !r.record__id.startsWith("NEW_"));
89
89
  this._store.dispatch(clearEdition(this.name, this.records.length - 1));
90
90
  }
91
91
  insert() {
92
92
  const insertionIndex = this.records.length;
93
93
  const newRecordIndex = selectNewRecordIndex(this._store.getState(), this.name);
94
- const newRecord = { record__id: 'NEW_' + (newRecordIndex + 1) };
94
+ const newRecord = { record__id: "NEW_" + (newRecordIndex + 1) };
95
95
  this.bindToParent(newRecord);
96
96
  this.records.push(newRecord);
97
97
  this._store.dispatch(insertRecord(this.name, insertionIndex));
@@ -113,7 +113,7 @@ export default class DataUnit {
113
113
  "__sub__changes": subChanges
114
114
  };
115
115
  if (recordChanges) {
116
- Object.keys(recordChanges).forEach(fieldName => { change[fieldName] = recordChanges[fieldName]; });
116
+ Object.keys(recordChanges).forEach(fieldName => { [fieldName] = recordChanges[fieldName]; });
117
117
  }
118
118
  return change;
119
119
  }
@@ -157,7 +157,7 @@ export default class DataUnit {
157
157
  .then(r => this.processSaveResult(r))
158
158
  .catch(e => {
159
159
  this._store.dispatch(dataLoaded(this.name));
160
- Application.error("Falha ao tentar salvar", e);
160
+ ApplicationUtils.error("Falha ao tentar salvar", e);
161
161
  });
162
162
  }
163
163
  else {
@@ -204,7 +204,7 @@ export default class DataUnit {
204
204
  }
205
205
  else {
206
206
  if (result.__data__unit === this.name) {
207
- if (this.cardinality === '1') {
207
+ if (this.cardinality === "1") {
208
208
  this.records = [this.buildRecordFromSaveResult(this.records[0], result)];
209
209
  }
210
210
  else {
@@ -218,7 +218,7 @@ export default class DataUnit {
218
218
  this._store.dispatch(changesSaved(this.name));
219
219
  }
220
220
  buildRecordFromSaveResult(baseRecord, saveResult) {
221
- const newRecord = baseRecord ? Object.assign({}, baseRecord) : { record__id: '' };
221
+ const newRecord = baseRecord ? Object.assign({}, baseRecord) : { record__id: "" };
222
222
  Object.keys(saveResult).forEach(attrib => {
223
223
  if (!attrib.startsWith("__")) {
224
224
  newRecord[attrib] = saveResult[attrib];
@@ -282,7 +282,7 @@ export default class DataUnit {
282
282
  });
283
283
  const result = this.recordsValidator.validateRecords(this, recordsToValidate, triggedBy);
284
284
  if (result.message) {
285
- Application.info(result.message);
285
+ ApplicationUtils.info(result.message);
286
286
  }
287
287
  return result.isValid;
288
288
  }
@@ -1,5 +1,5 @@
1
- import { Component, Host, h, Element, Prop } from '@stencil/core';
2
- import DataUnit from './DataUnit';
1
+ import { Component, Host, h, Element, Prop } from "@stencil/core";
2
+ import DataUnit from "./DataUnit";
3
3
  export class FormMetadata {
4
4
  buildField(element) {
5
5
  let label = element.getAttribute("label");
@@ -11,7 +11,7 @@ export class FormMetadata {
11
11
  label = "Selecione uma das opções:";
12
12
  }
13
13
  const objOpts = {};
14
- Array.from(element.getElementsByTagName('OPTION')).forEach((optElem, index) => {
14
+ Array.from(element.getElementsByTagName("OPTION")).forEach((optElem, index) => {
15
15
  const optValue = optElem.getAttribute("value") || index;
16
16
  const optLabel = optElem.textContent;
17
17
  objOpts[optValue] = optLabel;
@@ -19,15 +19,15 @@ export class FormMetadata {
19
19
  properties.push({ name: "options", value: JSON.stringify(objOpts) });
20
20
  }
21
21
  else if (userInterface === "FILE") {
22
- const urlElement = element.querySelector('URL');
23
- const headersElement = element.querySelectorAll('HEADERS>HEADER');
22
+ const urlElement = element.querySelector("URL");
23
+ const headersElement = element.querySelectorAll("HEADERS>HEADER");
24
24
  if (urlElement) {
25
25
  properties.push({ name: "URL", value: urlElement.textContent });
26
26
  }
27
27
  if (headersElement && headersElement.length > 0) {
28
28
  const headers = {};
29
29
  headersElement.forEach(header => {
30
- headers[header.getAttribute('name')] = header.textContent;
30
+ headers[header.getAttribute("name")] = header.textContent;
31
31
  });
32
32
  properties.push({ name: "HEADERS", value: JSON.stringify(headers) });
33
33
  }
@@ -53,7 +53,7 @@ export class FormMetadata {
53
53
  }
54
54
  buildFieldSet(dataUnit, element) {
55
55
  const label = element.getAttribute("label");
56
- const fields = Array.from(element.getElementsByTagName('FIELD')).map(f => {
56
+ const fields = Array.from(element.getElementsByTagName("FIELD")).map(f => {
57
57
  const field = this.buildField(f);
58
58
  dataUnit.addFieldMetadata(field);
59
59
  return { name: field.name };
@@ -70,7 +70,7 @@ export class FormMetadata {
70
70
  Array.from(elements).forEach(child => {
71
71
  const tagName = child.tagName.toUpperCase();
72
72
  switch (tagName) {
73
- case 'FIELD':
73
+ case "FIELD":
74
74
  if (!form.items) {
75
75
  form.items = [];
76
76
  }
@@ -78,13 +78,13 @@ export class FormMetadata {
78
78
  dataUnit.addFieldMetadata(f);
79
79
  form.items.push({ name: f.name });
80
80
  break;
81
- case 'FIELD-SET':
81
+ case "FIELD-SET":
82
82
  if (!form.items) {
83
83
  form.items = [];
84
84
  }
85
85
  form.items.push(this.buildFieldSet(dataUnit, child));
86
86
  break;
87
- case 'SUB-FORM':
87
+ case "SUB-FORM":
88
88
  if (!form.subForms) {
89
89
  form.subForms = [];
90
90
  }
@@ -93,7 +93,7 @@ export class FormMetadata {
93
93
  const subDuName = child.getAttribute("dataunit");
94
94
  let subDu;
95
95
  if (subDuName) {
96
- subDu = new DataUnit(subDuName, 'noname', child.hasAttribute("many") ? 'N' : '1');
96
+ subDu = new DataUnit(subDuName, "noname", child.hasAttribute("many") ? "N" : "1");
97
97
  }
98
98
  else {
99
99
  subDu = dataUnit;
@@ -108,7 +108,7 @@ export class FormMetadata {
108
108
  if (!this.dataunit) {
109
109
  this.dataunit = "dataunit_" + (this.name || this.label || new Date().getTime());
110
110
  }
111
- const du = new DataUnit(this.dataunit, 'noname', this.many ? 'N' : '1');
111
+ const du = new DataUnit(this.dataunit, "noname", this.many ? "N" : "1");
112
112
  this.metadata = this.fromElements(this._host.children, this.label, this.name, du, this.autoload);
113
113
  }
114
114
  render() {
@@ -1,4 +1,4 @@
1
- import { Component, Host, h } from '@stencil/core';
1
+ import { Component, Host, h } from "@stencil/core";
2
2
  export class PlaceHolder {
3
3
  render() {
4
4
  return h(Host, null);
@@ -19,19 +19,19 @@ export const Field = ({ dataUnit, field, forceScroll, enabled }) => {
19
19
  dataUnit.changeValue(name, newValue);
20
20
  };
21
21
  switch (userInterface) {
22
- case 'LONGTEXT':
22
+ case "LONGTEXT":
23
23
  return h("div", { class: "col col--sd-12 padding--small" }, loadingData ? h("place-holder", null) :
24
- h("ez-text-area", { value: value || '', label: formattedLabel, onEzChange: evt => changeFieldHandler(evt.target['value']), errorMessage: errorMessage, ref: elem => scrollToView(forceScroll, elem), key: key, enabled: isEnabled }));
25
- case 'CHECKBOX':
26
- case 'SWITCH':
24
+ h("ez-text-area", { value: value || "", label: formattedLabel, onEzChange: evt => changeFieldHandler(evt.target["value"]), errorMessage: errorMessage, ref: elem => scrollToView(forceScroll, elem), key: key, enabled: isEnabled }));
25
+ case "CHECKBOX":
26
+ case "SWITCH":
27
27
  return h("div", { class: "col col--sd-12 col--tb-3 padding--small align--middle padding-bottom--large" }, loadingData ? h("place-holder", null) :
28
- h("ez-check", { value: value, label: label, enabled: isEnabled, mode: userInterface === "CHECKBOX" ? "regular" : "switch", onEzChange: (event) => changeFieldHandler(event.target['value']), ref: elem => scrollToView(forceScroll, elem), key: key }));
29
- case 'OPTIONSELECTOR':
30
- const optsObj = properties ? JSON.parse(getProp(properties, 'options')) : {};
28
+ h("ez-check", { value: value, label: label, enabled: isEnabled, mode: userInterface === "CHECKBOX" ? "regular" : "switch", onEzChange: (event) => changeFieldHandler(event.target["value"]), ref: elem => scrollToView(forceScroll, elem), key: key }));
29
+ case "OPTIONSELECTOR":
30
+ const optsObj = properties ? JSON.parse(getProp(properties, "options")) : {};
31
31
  const normalized = Object.keys(optsObj).map(key => { return { value: key, label: optsObj[key] }; });
32
32
  return h("div", { class: "col col--sd-12 col--tb-3 padding--small" }, loadingData ? h("place-holder", null) :
33
- h("ez-combo-box", { value: value, label: formattedLabel, enabled: isEnabled, onEzChange: (event) => changeFieldHandler(event.target['value']), errorMessage: errorMessage, ref: elem => scrollToView(forceScroll, elem), key: key, options: normalized }));
34
- case 'SEARCH':
33
+ h("ez-combo-box", { value: value, label: formattedLabel, enabled: isEnabled, onEzChange: (event) => changeFieldHandler(event.target["value"]), errorMessage: errorMessage, ref: elem => scrollToView(forceScroll, elem), key: key, options: normalized }));
34
+ case "SEARCH":
35
35
  const context = {
36
36
  __MAIN_FORM: form,
37
37
  __DATA_UNIT: dataUnit.name,
@@ -55,38 +55,38 @@ export const Field = ({ dataUnit, field, forceScroll, enabled }) => {
55
55
  }
56
56
  });
57
57
  if (criteriaList.length > 0) {
58
- context['CRITERIA'] = criteriaList;
58
+ context["CRITERIA"] = criteriaList;
59
59
  }
60
60
  return h("div", { class: "col col--sd-12 col--tb-3 padding--small" }, loadingData ? h("place-holder", null) :
61
- h("ez-search", { value: value, label: formattedLabel, enabled: isEnabled, onEzChange: (event) => changeFieldHandler(event.target['value']), errorMessage: errorMessage, optionLoader: (argument) => {
61
+ h("ez-search", { value: value, label: formattedLabel, enabled: isEnabled, onEzChange: (event) => changeFieldHandler(event.target["value"]), errorMessage: errorMessage, optionLoader: (argument) => {
62
62
  if (form) {
63
63
  return form.loadSearch(argument, context);
64
64
  }
65
65
  }, ref: elem => scrollToView(forceScroll, elem), key: key }));
66
- case 'FILE':
67
- const target = getProp(properties, 'URL');
68
- const strHeaders = getProp(properties, 'HEADERS');
66
+ case "FILE":
67
+ const target = getProp(properties, "URL");
68
+ const strHeaders = getProp(properties, "HEADERS");
69
69
  const headers = strHeaders ? JSON.parse(strHeaders) : {};
70
70
  const maxfiles = Number(getProp(properties, "maxfiles") || 0);
71
71
  return (h("div", { class: "col col--sd-12 padding--small" }, loadingData ? h("place-holder", null) :
72
- h("ez-upload", { value: value, label: formattedLabel, enabled: isEnabled, onEzChange: (event) => changeFieldHandler(event.detail), urlupload: target, requestheaders: headers, maxfiles: maxfiles })));
73
- case 'DATE':
72
+ h("ez-upload", { value: value, label: formattedLabel, enabled: isEnabled, onEzChange: (event) => changeFieldHandler(event.detail), urlUpload: target, requestHeaders: headers, maxFiles: maxfiles })));
73
+ case "DATE":
74
74
  return h("div", { class: "col col--sd-12 col--tb-3 padding--small" }, loadingData ? h("place-holder", null) :
75
- h("ez-date-input", { value: !value ? null : DateUtils.clearTime(value), label: formattedLabel, enabled: isEnabled, onEzChange: (event) => changeFieldHandler(event.target['value']), errorMessage: errorMessage, ref: elem => scrollToView(forceScroll, elem), key: key }));
76
- case 'DECIMALNUMBER':
77
- case 'INTEGERNUMBER':
75
+ h("ez-date-input", { value: !value ? null : DateUtils.clearTime(value), label: formattedLabel, enabled: isEnabled, onEzChange: (event) => changeFieldHandler(event.target["value"]), errorMessage: errorMessage, ref: elem => scrollToView(forceScroll, elem), key: key }));
76
+ case "DECIMALNUMBER":
77
+ case "INTEGERNUMBER":
78
78
  let precision = 0;
79
79
  let prettyPrecision = 0;
80
- if (userInterface === 'DECIMALNUMBER') {
80
+ if (userInterface === "DECIMALNUMBER") {
81
81
  precision = Number(getProp(properties, "precision") || 2);
82
82
  prettyPrecision = Number(getProp(properties, "prettyprecision") || precision);
83
83
  }
84
84
  return h("div", { class: "col col--sd-12 col--tb-3 padding--small" }, loadingData ? h("place-holder", null) :
85
- h("ez-numeric-input", { value: !value ? null : value, label: formattedLabel, enabled: isEnabled, onEzChange: (event) => changeFieldHandler(event.target['value']), errorMessage: errorMessage, precision: precision, prettyprecision: prettyPrecision, ref: elem => scrollToView(forceScroll, elem), key: key }));
85
+ h("ez-numeric-input", { value: !value ? null : value, label: formattedLabel, enabled: isEnabled, onEzChange: (event) => changeFieldHandler(event.target["value"]), errorMessage: errorMessage, precision: precision, prettyprecision: prettyPrecision, ref: elem => scrollToView(forceScroll, elem), key: key }));
86
86
  //IMAGE, DATETIME, ELAPSEDTIME, PASSWORD, MASKEDTEXT, HTML
87
87
  default:
88
88
  return h("div", { class: "col col--sd-12 col--tb-3 padding--small" }, loadingData ? h("place-holder", null) :
89
- h("ez-text-input", { value: value, label: formattedLabel, enabled: isEnabled, loading: loadingData, onInput: (event) => changeFieldHandler(event.target['value']), errorMessage: errorMessage, ref: elem => scrollToView(forceScroll, elem), key: key }));
89
+ h("ez-text-input", { value: value, label: formattedLabel, enabled: isEnabled, loading: loadingData, onInput: (event) => changeFieldHandler(event.target["value"]), errorMessage: errorMessage, ref: elem => scrollToView(forceScroll, elem), key: key }));
90
90
  }
91
91
  };
92
92
  function getProp(properties, name) {