@sankhyalabs/ezui 0.0.0-bugfix-dev-KB-77126.0 → 0.0.0-bugfix-dev-KB-77074.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 (149) hide show
  1. package/dist/cjs/RecordValidationProcessor-10846595.js +108 -0
  2. package/dist/cjs/ez-card-item_3.cjs.entry.js +19 -12
  3. package/dist/cjs/ez-chart.cjs.entry.js +1 -1
  4. package/dist/cjs/ez-combo-box.cjs.entry.js +10 -46
  5. package/dist/cjs/ez-date-input.cjs.entry.js +2 -8
  6. package/dist/cjs/ez-date-time-input.cjs.entry.js +2 -8
  7. package/dist/cjs/ez-dialog.cjs.entry.js +2 -10
  8. package/dist/cjs/ez-form-view.cjs.entry.js +2 -2
  9. package/dist/cjs/ez-form.cjs.entry.js +324 -4
  10. package/dist/cjs/ez-grid.cjs.entry.js +70542 -14645
  11. package/dist/cjs/ez-list.cjs.entry.js +100 -151
  12. package/dist/cjs/ez-number-input.cjs.entry.js +0 -7
  13. package/dist/cjs/ez-popover.cjs.entry.js +1 -1
  14. package/dist/cjs/ez-popup.cjs.entry.js +1 -1
  15. package/dist/cjs/ez-search.cjs.entry.js +12 -28
  16. package/dist/cjs/ez-text-area.cjs.entry.js +4 -66
  17. package/dist/cjs/ez-text-input.cjs.entry.js +7 -49
  18. package/dist/cjs/ez-time-input.cjs.entry.js +0 -6
  19. package/dist/cjs/ezui.cjs.js +1 -1
  20. package/dist/cjs/loader.cjs.js +1 -1
  21. package/dist/collection/collection-manifest.json +1 -1
  22. package/dist/collection/components/ez-card-item/ez-card-item.css +5 -14
  23. package/dist/collection/components/ez-combo-box/ez-combo-box.js +14 -75
  24. package/dist/collection/components/ez-date-input/ez-date-input.js +4 -35
  25. package/dist/collection/components/ez-date-time-input/ez-date-time-input.js +4 -35
  26. package/dist/collection/components/ez-dialog/ez-dialog.css +3 -3
  27. package/dist/collection/components/ez-dialog/ez-dialog.js +1 -9
  28. package/dist/collection/components/ez-filter-input/ez-filter-input.css +11 -0
  29. package/dist/collection/components/ez-filter-input/ez-filter-input.js +52 -22
  30. package/dist/collection/components/ez-form/ez-form.js +0 -1
  31. package/dist/collection/components/ez-form-view/fieldbuilder/templates/TextInput.tpl.js +2 -2
  32. package/dist/collection/components/ez-grid/controller/ag-grid/AgGridController.js +25 -80
  33. package/dist/collection/components/ez-grid/controller/ag-grid/DataSource.js +0 -8
  34. package/dist/collection/components/ez-grid/controller/ag-grid/GridEditionManager.js +46 -167
  35. package/dist/collection/components/ez-grid/controller/ag-grid/components/EzGridCustomCellEditor.js +0 -7
  36. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/ComboBox.tpl.js +0 -1
  37. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/DateInput.tpl.js +0 -1
  38. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/NumberInput.tpl.js +0 -1
  39. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/Search.tpl.js +0 -1
  40. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/TextInput.tpl.js +1 -4
  41. package/dist/collection/components/ez-grid/ez-grid.js +3 -90
  42. package/dist/collection/components/ez-list/ez-list.css +5 -5
  43. package/dist/collection/components/ez-list/ez-list.js +170 -152
  44. package/dist/collection/components/ez-number-input/ez-number-input.js +0 -25
  45. package/dist/collection/components/ez-popover/ez-popover.css +10 -3
  46. package/dist/collection/components/ez-popup/ez-popup.js +1 -1
  47. package/dist/collection/components/ez-search/ez-search.css +1 -1
  48. package/dist/collection/components/ez-search/ez-search.js +14 -55
  49. package/dist/collection/components/ez-text-area/ez-text-area.css +0 -49
  50. package/dist/collection/components/ez-text-area/ez-text-area.js +2 -102
  51. package/dist/collection/components/ez-text-input/ez-text-input.css +53 -27
  52. package/dist/collection/components/ez-text-input/ez-text-input.js +6 -84
  53. package/dist/collection/components/ez-time-input/ez-time-input.js +0 -24
  54. package/dist/collection/utils/form/DataBinder.js +3 -18
  55. package/dist/collection/utils/interfaces/AbstractFieldMetadata.js +1 -1
  56. package/dist/custom-elements/index.js +70890 -15272
  57. package/dist/esm/RecordValidationProcessor-9c6cc267.js +105 -0
  58. package/dist/esm/ez-card-item_3.entry.js +19 -12
  59. package/dist/esm/ez-chart.entry.js +1 -1
  60. package/dist/esm/ez-combo-box.entry.js +11 -47
  61. package/dist/esm/ez-date-input.entry.js +2 -8
  62. package/dist/esm/ez-date-time-input.entry.js +2 -8
  63. package/dist/esm/ez-dialog.entry.js +2 -10
  64. package/dist/esm/ez-form-view.entry.js +2 -2
  65. package/dist/esm/ez-form.entry.js +323 -3
  66. package/dist/esm/ez-grid.entry.js +70542 -14645
  67. package/dist/esm/ez-list.entry.js +101 -152
  68. package/dist/esm/ez-number-input.entry.js +0 -7
  69. package/dist/esm/ez-popover.entry.js +1 -1
  70. package/dist/esm/ez-popup.entry.js +1 -1
  71. package/dist/esm/ez-search.entry.js +12 -28
  72. package/dist/esm/ez-text-area.entry.js +4 -66
  73. package/dist/esm/ez-text-input.entry.js +7 -49
  74. package/dist/esm/ez-time-input.entry.js +0 -6
  75. package/dist/esm/ezui.js +1 -1
  76. package/dist/esm/loader.js +1 -1
  77. package/dist/ezui/ezui.esm.js +1 -1
  78. package/dist/ezui/p-188f1c4c.entry.js +1 -0
  79. package/dist/ezui/p-49456b34.entry.js +1 -0
  80. package/dist/ezui/p-5a90d7d1.entry.js +1 -0
  81. package/dist/ezui/p-5b205c80.entry.js +1 -0
  82. package/dist/ezui/p-62732269.entry.js +1 -0
  83. package/dist/ezui/p-86b6aa01.entry.js +1 -0
  84. package/dist/ezui/p-b3b94f72.entry.js +1 -0
  85. package/dist/ezui/p-b95632e8.entry.js +1 -0
  86. package/dist/ezui/p-bcd47eda.entry.js +1 -0
  87. package/dist/ezui/p-c3c3d640.entry.js +304 -0
  88. package/dist/ezui/p-cdc472cc.entry.js +1 -0
  89. package/dist/ezui/p-d2c06f38.entry.js +1 -0
  90. package/dist/ezui/p-d8f64bb7.entry.js +1 -0
  91. package/dist/ezui/p-dc4ada32.entry.js +1 -0
  92. package/dist/ezui/p-e85c48d7.entry.js +1 -0
  93. package/dist/ezui/p-f299c608.entry.js +1 -0
  94. package/dist/ezui/p-f42855b9.js +1 -0
  95. package/dist/ezui/p-f80ac647.entry.js +1 -0
  96. package/dist/types/components/ez-combo-box/ez-combo-box.d.ts +1 -7
  97. package/dist/types/components/ez-date-input/ez-date-input.d.ts +1 -6
  98. package/dist/types/components/ez-date-time-input/ez-date-time-input.d.ts +1 -6
  99. package/dist/types/components/ez-dialog/ez-dialog.d.ts +0 -2
  100. package/dist/types/components/ez-filter-input/ez-filter-input.d.ts +11 -4
  101. package/dist/types/components/ez-form-view/fieldbuilder/templates/TextInput.tpl.d.ts +1 -1
  102. package/dist/types/components/ez-grid/controller/EzGridController.d.ts +0 -12
  103. package/dist/types/components/ez-grid/controller/ag-grid/AgGridController.d.ts +2 -7
  104. package/dist/types/components/ez-grid/controller/ag-grid/DataSource.d.ts +1 -2
  105. package/dist/types/components/ez-grid/controller/ag-grid/GridEditionManager.d.ts +7 -19
  106. package/dist/types/components/ez-grid/controller/ag-grid/components/EzGridCustomCellEditor.d.ts +1 -3
  107. package/dist/types/components/ez-grid/controller/ag-grid/components/EzGridCustomCellRender.d.ts +1 -1
  108. package/dist/types/components/ez-grid/controller/ag-grid/components/EzGridCustomHeader.d.ts +1 -1
  109. package/dist/types/components/ez-grid/controller/ag-grid/components/cellRendererStatus.d.ts +1 -1
  110. package/dist/types/components/ez-grid/controller/ag-grid/components/selectionHeader.d.ts +1 -1
  111. package/dist/types/components/ez-grid/controller/ag-grid/editor/EzCellEditor.d.ts +1 -1
  112. package/dist/types/components/ez-grid/controller/ag-grid/editor/EzCellRender.d.ts +1 -1
  113. package/dist/types/components/ez-grid/controller/ag-grid/editor/IUICellEditor.d.ts +0 -1
  114. package/dist/types/components/ez-grid/controller/ag-grid/mock/Server.d.ts +1 -1
  115. package/dist/types/components/ez-grid/ez-grid.d.ts +1 -11
  116. package/dist/types/components/ez-list/ez-list.d.ts +26 -3
  117. package/dist/types/components/ez-number-input/ez-number-input.d.ts +0 -4
  118. package/dist/types/components/ez-search/ez-search.d.ts +1 -6
  119. package/dist/types/components/ez-text-area/ez-text-area.d.ts +0 -17
  120. package/dist/types/components/ez-text-input/ez-text-input.d.ts +0 -9
  121. package/dist/types/components/ez-time-input/ez-time-input.d.ts +0 -4
  122. package/dist/types/components.d.ts +42 -107
  123. package/dist/types/utils/form/DataBinder.d.ts +0 -3
  124. package/package.json +4 -11
  125. package/dist/cjs/DataBinder-3b083480.js +0 -445
  126. package/dist/cjs/FocusResolver-885f2173.js +0 -35
  127. package/dist/collection/utils/FocusResolver.js +0 -31
  128. package/dist/esm/DataBinder-02fa9bb9.js +0 -441
  129. package/dist/esm/FocusResolver-1ccbf850.js +0 -33
  130. package/dist/ezui/p-0a75bb05.entry.js +0 -1
  131. package/dist/ezui/p-0db68715.entry.js +0 -1
  132. package/dist/ezui/p-19098a3f.entry.js +0 -1
  133. package/dist/ezui/p-1f830a2f.entry.js +0 -1
  134. package/dist/ezui/p-2aa8e4b2.entry.js +0 -1
  135. package/dist/ezui/p-3dd919b7.entry.js +0 -1
  136. package/dist/ezui/p-455e737c.js +0 -1
  137. package/dist/ezui/p-8d0f02c7.entry.js +0 -309
  138. package/dist/ezui/p-91266ddd.entry.js +0 -1
  139. package/dist/ezui/p-97af4b13.entry.js +0 -1
  140. package/dist/ezui/p-a5b91a77.entry.js +0 -1
  141. package/dist/ezui/p-a80b1287.entry.js +0 -1
  142. package/dist/ezui/p-b54e17d2.entry.js +0 -1
  143. package/dist/ezui/p-bfad39eb.entry.js +0 -1
  144. package/dist/ezui/p-c27b2e17.entry.js +0 -1
  145. package/dist/ezui/p-cd2e78f0.entry.js +0 -1
  146. package/dist/ezui/p-d0ca26fe.entry.js +0 -1
  147. package/dist/ezui/p-dc628ed3.js +0 -1
  148. package/dist/ezui/p-ffd246f5.entry.js +0 -1
  149. package/dist/types/utils/FocusResolver.d.ts +0 -5
@@ -2,14 +2,12 @@ import { HTMLBuilder } from "@sankhyalabs/core";
2
2
  const MINIMIUM_WIDTH_TEXTAREA = 210;
3
3
  const PADDING_VALUE_TEXTAREA = 12;
4
4
  export const buildTextInput = ({ name, contextName }) => {
5
- const textInput = HTMLBuilder.parseElement(`<ez-text-input
5
+ return HTMLBuilder.parseElement(`<ez-text-input
6
6
  class="ez-grid grid_editor"
7
7
  data-field-name=${name}
8
8
  data-context-name=${contextName}
9
9
  mode="slim"
10
10
  />`);
11
- textInput.autoFocus = true;
12
- return textInput;
13
11
  };
14
12
  export const buildTextAreaInput = ({ eGridCell, editionManager }) => {
15
13
  const element = HTMLBuilder.parseElement(`<ez-text-area
@@ -19,7 +17,6 @@ export const buildTextAreaInput = ({ eGridCell, editionManager }) => {
19
17
  element.addEventListener('keydown', event => handlePressEnterEvent(event, element, editionManager));
20
18
  setElementInitialWidth(eGridCell, element);
21
19
  element.isPopUp = true;
22
- element.autoFocus = true;
23
20
  return element;
24
21
  };
25
22
  function setElementInitialWidth(eGridCell, element) {
@@ -39,7 +39,6 @@ export class EzGrid {
39
39
  this.paginationCounterMode = 'show';
40
40
  this.enableGridInsert = false;
41
41
  this.enableContinuousInsert = true;
42
- this.enableLockManger = true;
43
42
  }
44
43
  /**
45
44
  * Aplica a definição de colunas.
@@ -164,18 +163,6 @@ export class EzGrid {
164
163
  async setFocus() {
165
164
  this._gridController.setFocus();
166
165
  }
167
- /**
168
- * Para a edição da grade.
169
- */
170
- async stopEdit() {
171
- this._gridController.stopEdit();
172
- }
173
- async checkStopEditOutsideClick(event) {
174
- var _a;
175
- if ((_a = this._container) === null || _a === void 0 ? void 0 : _a.contains(event.target))
176
- return;
177
- this._gridController.stopEdit();
178
- }
179
166
  observeConfig(config) {
180
167
  this._gridController.setColumnsState(config === null || config === void 0 ? void 0 : config.columns);
181
168
  }
@@ -201,9 +188,6 @@ export class EzGrid {
201
188
  this.setSelection(this.dataUnit.getSelectionInfo());
202
189
  }
203
190
  }
204
- async handleClick(event) {
205
- this.checkStopEditOutsideClick(event);
206
- }
207
191
  setSelection(selectionInfo) {
208
192
  var _a;
209
193
  this._selectionCount = (_a = selectionInfo === null || selectionInfo === void 0 ? void 0 : selectionInfo.length) !== null && _a !== void 0 ? _a : 0;
@@ -359,7 +343,7 @@ export class EzGrid {
359
343
  resetPaginationState() {
360
344
  var _a;
361
345
  this._paginationChangedByKeyboard = false;
362
- (_a = this._gridController) === null || _a === void 0 ? void 0 : _a.resetPaginationState();
346
+ (_a = this._gridApi) === null || _a === void 0 ? void 0 : _a.clearRangeSelection();
363
347
  }
364
348
  resolvePaginationClassMode() {
365
349
  if (this.paginationCounterMode == 'show')
@@ -400,8 +384,7 @@ export class EzGrid {
400
384
  if (this.dataUnit) {
401
385
  this.setSelection(this.dataUnit.getSelectionInfo());
402
386
  }
403
- },
404
- enableLockManger: this.enableLockManger
387
+ }
405
388
  });
406
389
  if (this.config) {
407
390
  this.observeConfig(this.config);
@@ -473,13 +456,8 @@ export class EzGrid {
473
456
  this._refPaginationLabelTooltip.removeAttribute('data-tooltip');
474
457
  }
475
458
  disconnectedCallback() {
476
- var _a, _b;
477
- (_a = this._headerOverflowWatcher) === null || _a === void 0 ? void 0 : _a.destroy();
478
- (_b = this._gridController) === null || _b === void 0 ? void 0 : _b.destroy();
479
- }
480
- connectedCallback() {
481
459
  var _a;
482
- (_a = this._gridController) === null || _a === void 0 ? void 0 : _a.registryListeners();
460
+ (_a = this._headerOverflowWatcher) === null || _a === void 0 ? void 0 : _a.destroy();
483
461
  }
484
462
  componentWillRender() {
485
463
  this.configSelectionCounter();
@@ -800,24 +778,6 @@ export class EzGrid {
800
778
  "attribute": "enable-continuous-insert",
801
779
  "reflect": false,
802
780
  "defaultValue": "true"
803
- },
804
- "enableLockManger": {
805
- "type": "boolean",
806
- "mutable": false,
807
- "complexType": {
808
- "original": "boolean",
809
- "resolved": "boolean",
810
- "references": {}
811
- },
812
- "required": false,
813
- "optional": true,
814
- "docs": {
815
- "tags": [],
816
- "text": "Ativa inser\u00E7\u00E3o de registros no modo grade."
817
- },
818
- "attribute": "enable-lock-manger",
819
- "reflect": false,
820
- "defaultValue": "true"
821
781
  }
822
782
  };
823
783
  }
@@ -1322,47 +1282,6 @@ export class EzGrid {
1322
1282
  "text": "Atribui o foco para a grade.",
1323
1283
  "tags": []
1324
1284
  }
1325
- },
1326
- "stopEdit": {
1327
- "complexType": {
1328
- "signature": "() => Promise<void>",
1329
- "parameters": [],
1330
- "references": {
1331
- "Promise": {
1332
- "location": "global"
1333
- }
1334
- },
1335
- "return": "Promise<void>"
1336
- },
1337
- "docs": {
1338
- "text": "Para a edi\u00E7\u00E3o da grade.",
1339
- "tags": []
1340
- }
1341
- },
1342
- "checkStopEditOutsideClick": {
1343
- "complexType": {
1344
- "signature": "(event: MouseEvent) => Promise<void>",
1345
- "parameters": [{
1346
- "tags": [],
1347
- "text": ""
1348
- }],
1349
- "references": {
1350
- "Promise": {
1351
- "location": "global"
1352
- },
1353
- "MouseEvent": {
1354
- "location": "global"
1355
- },
1356
- "Node": {
1357
- "location": "global"
1358
- }
1359
- },
1360
- "return": "Promise<void>"
1361
- },
1362
- "docs": {
1363
- "text": "",
1364
- "tags": []
1365
- }
1366
1285
  }
1367
1286
  };
1368
1287
  }
@@ -1386,12 +1305,6 @@ export class EzGrid {
1386
1305
  "target": undefined,
1387
1306
  "capture": false,
1388
1307
  "passive": false
1389
- }, {
1390
- "name": "click",
1391
- "method": "handleClick",
1392
- "target": undefined,
1393
- "capture": true,
1394
- "passive": false
1395
1308
  }];
1396
1309
  }
1397
1310
  }
@@ -21,10 +21,10 @@
21
21
  --ez-list__item--color: var(--title--primary, #2b3a54);
22
22
 
23
23
  /* @doc Define o estilo borda inferior do item da lista. */
24
- --ez-list__item--border-bottom;
24
+ --ez-list__item--border-bottom: none;
25
25
 
26
26
  /* @doc Define a cor da borda inferior do item da lista. */
27
- --ez-list__item--border-bottom-color;
27
+ --ez-list__item--border-bottom-color: none;
28
28
 
29
29
  /* @doc Define o estilo do texto do item da lista. */
30
30
  --ez-list__item--font-family: var(--font-pattern, "Roboto");
@@ -110,7 +110,7 @@ p {
110
110
  display: grid;
111
111
  grid-template-columns: minmax(0px, auto) minmax(0px, auto);
112
112
  place-items: center;
113
- border-top: 1px dashed #fff;
113
+ border-top: 1px solid #fff;
114
114
  justify-content: space-between;
115
115
 
116
116
  /*public*/
@@ -177,7 +177,7 @@ p {
177
177
 
178
178
  .draggable-list li > div {
179
179
  /*public*/
180
- padding: var(--space--3xs, 4px) var(--space--3xs, 4px);
180
+ padding: var(--space--2xs, 8px) var(--space--3xs, 4px);
181
181
  margin: var(--ez-list__item--margin);
182
182
  }
183
183
 
@@ -347,7 +347,7 @@ p {
347
347
  max-height: 100%;
348
348
  outline: none;
349
349
  scrollbar-width: thin;
350
-
350
+ overflow: auto;
351
351
  /*public*/
352
352
  scrollbar-color: var(--ez-list__scrollbar--color-clicked) var(--ez-list__scrollbar--color-background);
353
353
  }
@@ -1,10 +1,11 @@
1
- import { ElementIDUtils, StringUtils } from '@sankhyalabs/core';
1
+ import { ElementIDUtils, KeyboardManager, StringUtils } from '@sankhyalabs/core';
2
2
  import { Fragment, Host, h } from '@stencil/core';
3
3
  export class EzList {
4
4
  constructor() {
5
5
  this._listItemsHistory = [];
6
6
  this._listItems = [];
7
7
  this._listGroupItems = [];
8
+ this._selectedItem = undefined;
8
9
  this.dataSource = [];
9
10
  this.listMode = 'regular';
10
11
  this.useGroups = false;
@@ -13,6 +14,19 @@ export class EzList {
13
14
  this.itemSlotBuilder = undefined;
14
15
  this.itemLeftSlotBuilder = undefined;
15
16
  this.hoverFeedback = false;
17
+ this.disableShortcuts = false;
18
+ }
19
+ /**
20
+ * Seleciona o próximo item.
21
+ */
22
+ async selectNextItem() {
23
+ this.nextOption();
24
+ }
25
+ /**
26
+ * Seleciona o item anterior.
27
+ */
28
+ async selectPreviousItem() {
29
+ this.previousOption();
16
30
  }
17
31
  /**
18
32
  * Limpa o histórico da lista.
@@ -36,23 +50,8 @@ export class EzList {
36
50
  */
37
51
  async setSelection(selectedItem, scrollToOption) {
38
52
  if (selectedItem && this.ezSelectable) {
53
+ this._selectedItem = Object.assign({}, selectedItem);
39
54
  this.ezSelectItem.emit(selectedItem);
40
- if (this.useGroups) {
41
- let newList = [...this._listGroupItems];
42
- newList.forEach(groupItem => {
43
- groupItem.items.forEach(item => {
44
- item.selected = item.id === selectedItem.id;
45
- });
46
- });
47
- this._listGroupItems = newList;
48
- }
49
- else {
50
- let newList = [...this._listItems];
51
- newList.forEach(item => {
52
- item.selected = item.id === selectedItem.id;
53
- });
54
- this._listItems = newList;
55
- }
56
55
  if (scrollToOption) {
57
56
  let liElem = this.useGroups
58
57
  ? this._groupContainer.querySelector('li#item_' + selectedItem.id)
@@ -70,21 +69,7 @@ export class EzList {
70
69
  * Obtém o item selecionado.
71
70
  */
72
71
  async getSelection() {
73
- let selectedItem;
74
- if (this.useGroups) {
75
- this._listGroupItems.every(group => {
76
- let item = group.items.find(item => item.selected == true);
77
- if (item) {
78
- selectedItem = item;
79
- return false;
80
- }
81
- return true;
82
- });
83
- }
84
- else {
85
- selectedItem = this._listItems.find(item => item.selected == true);
86
- }
87
- return selectedItem;
72
+ return this._selectedItem;
88
73
  }
89
74
  /**
90
75
  * Obtém a lista de items ou grupos.
@@ -99,22 +84,7 @@ export class EzList {
99
84
  * Limpa a seleção atual
100
85
  */
101
86
  async removeSelection() {
102
- if (this.useGroups) {
103
- let newList = [...this._listGroupItems];
104
- newList.forEach(groupItem => {
105
- groupItem.items.forEach(item => {
106
- item.selected = false;
107
- });
108
- });
109
- this._listGroupItems = newList;
110
- }
111
- else {
112
- let newList = [...this._listItems];
113
- newList.forEach(item => {
114
- item.selected = false;
115
- });
116
- this._listItems = newList;
117
- }
87
+ this._selectedItem = undefined;
118
88
  }
119
89
  applyUUID(item) {
120
90
  if (!item.id) {
@@ -174,6 +144,10 @@ export class EzList {
174
144
  }
175
145
  componentDidLoad() {
176
146
  ElementIDUtils.addIDInfo(this._element);
147
+ this.bindKeyboardManager();
148
+ }
149
+ disconnectCallback() {
150
+ this.unbindKeyboardManager();
177
151
  }
178
152
  onDrop(ev, dragEndItem) {
179
153
  this.removeOverClass();
@@ -366,92 +340,58 @@ export class EzList {
366
340
  if (this.useGroups) {
367
341
  this.setSelection(this._listGroupItems[0].items[0]);
368
342
  }
369
- {
343
+ else {
370
344
  this.setSelection(this._listItems[0]);
371
345
  }
372
346
  }
373
- nextOption(selectedItem) {
374
- let nextItem = undefined;
347
+ getFlatedItems() {
375
348
  if (this.useGroups) {
376
- this._listGroupItems.every((group, groupIndex, listGroupItems) => {
377
- let item = undefined;
378
- let itemIndex = group.items.findIndex(item => item.id == selectedItem.id);
379
- if (itemIndex != undefined && itemIndex != -1) {
380
- if (itemIndex === group.items.length - 1) {
381
- if (groupIndex + 1 <= listGroupItems.length - 1) {
382
- item = { label: listGroupItems[groupIndex + 1].items[0].label };
383
- }
384
- }
385
- else {
386
- item = { label: group.items[itemIndex + 1].label };
387
- }
388
- }
389
- if (item != undefined) {
390
- nextItem = item;
391
- return false;
392
- }
393
- return true;
394
- });
395
- }
396
- else {
397
- let itemIndex = this._listItems.findIndex(item => item.id === selectedItem.id);
398
- if (itemIndex >= 0 && itemIndex < this._listItems.length) {
399
- nextItem = this._listItems[itemIndex + 1];
400
- }
349
+ const itemsGroups = this._listGroupItems.map(({ items }) => items).flat();
350
+ return itemsGroups;
401
351
  }
402
- this.setSelection(nextItem, true);
352
+ return this._listItems;
403
353
  }
404
- previousOption(selectedItem) {
405
- let previousItem = undefined;
406
- if (this.useGroups) {
407
- this._listGroupItems.every((group, groupIndex, listGroupItems) => {
408
- let item = undefined;
409
- let itemIndex = group.items.findIndex(item => item.id === selectedItem.id);
410
- if (itemIndex != undefined && itemIndex != -1) {
411
- if (itemIndex === 0) {
412
- if (groupIndex - 1 >= 0) {
413
- item = { label: listGroupItems[groupIndex - 1].items[listGroupItems[groupIndex - 1].items.length - 1].label };
414
- }
415
- }
416
- else {
417
- item = { label: group.items[itemIndex - 1].label };
418
- }
419
- }
420
- if (item != undefined) {
421
- previousItem = item;
422
- return false;
423
- }
424
- return true;
425
- });
354
+ getSelectedIndex(items) {
355
+ const itemIndex = items.findIndex(item => { var _a; return item.id === ((_a = this._selectedItem) === null || _a === void 0 ? void 0 : _a.id); });
356
+ return itemIndex;
357
+ }
358
+ nextOption() {
359
+ if (!this._selectedItem) {
360
+ this.selectFirstItem();
361
+ return;
426
362
  }
427
- else {
428
- let itemIndex = this._listItems.findIndex(item => item.id === selectedItem.id);
429
- if (itemIndex > 0 && itemIndex < this._listItems.length) {
430
- previousItem = this._listItems[itemIndex - 1];
431
- }
363
+ const items = this.getFlatedItems();
364
+ const itemIndex = this.getSelectedIndex(items);
365
+ if (itemIndex < (items.length - 1)) {
366
+ const nextItem = items[itemIndex + 1];
367
+ this.setSelection(nextItem, true);
432
368
  }
433
- this.setSelection(previousItem, true);
434
369
  }
435
- keyDownHandler(event) {
436
- if (!event.ctrlKey) {
437
- event.preventDefault();
370
+ previousOption() {
371
+ const items = this.getFlatedItems();
372
+ const itemIndex = this.getSelectedIndex(items);
373
+ if (itemIndex > 0) {
374
+ const previousItem = items[itemIndex - 1];
375
+ this.setSelection(previousItem, true);
438
376
  }
439
- this.getSelection().then(selectedItem => {
440
- if (selectedItem) {
441
- switch (event.key) {
442
- case 'ArrowDown':
443
- this.nextOption(selectedItem);
444
- break;
445
- case 'ArrowUp':
446
- this.previousOption(selectedItem);
447
- break;
448
- }
449
- }
450
- else {
451
- this.selectFirstItem();
452
- }
453
- });
454
- event.stopPropagation();
377
+ }
378
+ bindKeyboardManager() {
379
+ this._keyboardManager = new KeyboardManager({ propagate: false, element: this._element });
380
+ if (this.disableShortcuts) {
381
+ return;
382
+ }
383
+ this._keyboardManager
384
+ .bind("ArrowDown", () => this.nextOption())
385
+ .bind("ArrowUp", () => this.previousOption())
386
+ .bind("shift+Tab", () => this.previousOption())
387
+ .bind("Tab", () => this.nextOption());
388
+ }
389
+ unbindKeyboardManager() {
390
+ this._keyboardManager
391
+ .unbind("ArrowDown")
392
+ .unbind("ArrowUp")
393
+ .unbind("shift+Tab")
394
+ .unbind("Tab");
455
395
  }
456
396
  getDivGroupId(groupName) {
457
397
  if (groupName) {
@@ -516,38 +456,46 @@ export class EzList {
516
456
  doubleClickItem(item) {
517
457
  this.ezDoubleClick.emit(item);
518
458
  }
459
+ onClickItem(item) {
460
+ this.setSelection(item);
461
+ this.ezClickItem.emit(item);
462
+ }
519
463
  render() {
520
- return (h(Host, { ref: el => (this._element = el) }, this.useGroups ? (h("div", { class: "group-container", ref: el => (this._groupContainer = el), tabIndex: 0, onKeyDown: event => {
521
- this.keyDownHandler(event);
522
- } }, this._listGroupItems.map(group => {
523
- return (h("div", { id: this.getDivGroupId(group.group), class: "group", key: group.group + group.items.length, onDrop: () => this.onDropGroup(group) }, h("label", { draggable: false, class: "group-name", title: group.group }, group.group), h("section", { class: "section-container", onDragOver: ev => ev.preventDefault() }, h("div", { class: "group-items-container" }, h("div", { class: "draggable-list" }, group.items.map((item, index) => (h("li", Object.assign({ id: 'item_' + item.id, class: {
464
+ return (h(Host, { ref: el => (this._element = el) }, this.useGroups ? (h("div", { class: "group-container", ref: el => (this._groupContainer = el), tabIndex: 0 }, this._listGroupItems.map(group => {
465
+ return (h("div", { id: this.getDivGroupId(group.group), class: "group", key: group.group + group.items.length, onDrop: () => this.onDropGroup(group) }, h("label", { draggable: false, class: "group-name", title: group.group }, group.group), h("section", { class: "section-container", onDragOver: ev => ev.preventDefault() }, h("div", { class: "group-items-container" }, h("div", { class: "draggable-list" }, group.items.map((item, index) => {
466
+ var _a;
467
+ return (h("li", Object.assign({ id: 'item_' + item.id, class: {
468
+ 'selectable-container': this.ezSelectable,
469
+ 'hover-feedback': this.hoverFeedback,
470
+ }, key: 'item_' + item.id }, {
471
+ [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: ElementIDUtils.getInternalIDInfo(`ezListItem__${StringUtils.replaceAccentuatedChars(item.label)}`),
472
+ }), h("div", { class: 'draggable' + (((_a = this._selectedItem) === null || _a === void 0 ? void 0 : _a.id) === item.id ? ' selected-item ' : '') + (this.ezSelectable == true ? ' selectable ' : ''), onDblClick: () => {
473
+ this.doubleClickItem(item);
474
+ }, onClick: () => {
475
+ this.onClickItem(item);
476
+ }, onDragLeave: () => {
477
+ group.sort ? undefined : this.removeOverClass();
478
+ }, onDragEnd: () => this.onDragEnd(), onDragStart: () => this.onDragStart(item, group, index), onDragOver: event => {
479
+ group.sort ? undefined : this.onDragOverItem(event);
480
+ }, onDrop: event => this.onDrop(event, { groupName: group.group, item: item, index: index }), draggable: this.ezDraggable }, h("div", { class: "item-content" }, this.ezDraggable ? h("span", { class: "draggable-icon" }) : undefined, this.listMode === 'regular' ? (h(Fragment, null, !!this.itemLeftSlotBuilder && this.getContainerItemBuilder('left', item, group), h("p", { title: item.label, class: "person-name text--ellipsis" }, item.label))) : (h("ez-check", { label: item.label, value: item.check, onEzChange: evt => this.ezCheckChange.emit({ id: item.id, label: item.label, check: evt.detail }) }))), !!this.itemSlotBuilder && this.getContainerItemBuilder('right', item, group, 'slot-item'))));
481
+ })), h("div", { class: "last-droppable-space", onDragLeave: () => this.removeOverClass(), onDragOver: event => {
482
+ this.onDragOverLastIndex(event);
483
+ }, onDragEnd: () => this.onDragEnd(), onDrop: event => this.onDropLastIndex(event, group) })), group.sort ? (h("div", { id: this.getGroupOverlayId(group.group), class: "group-overlay" }, "Mover para ", group.group)) : undefined)));
484
+ }))) : (h("div", { class: "items-container", ref: el => (this._itemContainer = el), tabIndex: 0 }, h("ul", { class: "draggable-list" }, this._listItems.map((item, index) => {
485
+ var _a, _b;
486
+ return (h("li", Object.assign({ id: 'item_' + item.id, class: {
524
487
  'selectable-container': this.ezSelectable,
525
- 'hover-feedback': this.hoverFeedback,
526
- }, key: 'item_' + item.id }, {
527
- [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: ElementIDUtils.getInternalIDInfo(`ezListItem__${StringUtils.replaceAccentuatedChars(item.label)}`),
528
- }), h("div", { class: 'draggable' + (item.selected == true ? ' selected-item ' : '') + (this.ezSelectable == true ? ' selectable ' : ''), onDblClick: () => {
488
+ 'selected-item': ((_a = this._selectedItem) === null || _a === void 0 ? void 0 : _a.id) === item.id,
489
+ 'hover-feedback': this.hoverFeedback && ((_b = this._selectedItem) === null || _b === void 0 ? void 0 : _b.id) !== item.id,
490
+ }, key: 'item_' + item.id }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: ElementIDUtils.getInternalIDInfo(`ezListItem__${StringUtils.replaceAccentuatedChars(item.label)}`) }), h("div", { class: 'draggable' + (this.ezSelectable == true ? ' selectable ' : ''), onDragStart: () => this.onDragStart({ item: item, index: index }), onDblClick: () => {
529
491
  this.doubleClickItem(item);
530
492
  }, onClick: () => {
531
- this.setSelection(item);
532
- }, onDragLeave: () => {
533
- group.sort ? undefined : this.removeOverClass();
534
- }, onDragEnd: () => this.onDragEnd(), onDragStart: () => this.onDragStart(item, group, index), onDragOver: event => {
535
- group.sort ? undefined : this.onDragOverItem(event);
536
- }, onDrop: event => this.onDrop(event, { groupName: group.group, item: item, index: index }), draggable: this.ezDraggable }, h("div", { class: "item-content" }, this.ezDraggable ? h("span", { class: "draggable-icon" }) : undefined, this.listMode === 'regular' ? (h(Fragment, null, !!this.itemLeftSlotBuilder && this.getContainerItemBuilder('left', item, group), h("p", { title: item.label, class: "person-name text--ellipsis" }, item.label))) : (h("ez-check", { label: item.label, value: item.check, onEzChange: evt => this.ezCheckChange.emit({ id: item.id, label: item.label, check: evt.detail }) }))), !!this.itemSlotBuilder && this.getContainerItemBuilder('right', item, group, 'slot-item')))))), h("div", { class: "last-droppable-space", onDragLeave: () => this.removeOverClass(), onDragOver: event => {
493
+ this.onClickItem(item);
494
+ }, onDragLeave: () => this.removeOverClass(), onDragOver: event => this.onDragOverItem(event), onDragEnd: () => this.onDragEnd(), onDrop: event => this.onDrop(event, { item: item, index: index }), draggable: this.ezDraggable }, h("div", { class: "item-content" }, this.listMode === 'regular' ? (h(Fragment, null, this.ezDraggable ? h("span", { class: "draggable-icon" }) : undefined, !!this.itemLeftSlotBuilder && this.getContainerItemBuilder('left', item), h("p", { title: item.label, class: "person-name text--ellipsis" }, item.label))) : (h(Fragment, null, this.ezDraggable ? h("span", { class: "draggable-icon" }) : undefined, h("ez-check", { label: item.label, value: item.check, onEzChange: evt => this.ezCheckChange.emit({ id: item.id, label: item.label, check: evt.detail }) })))), !!this.itemSlotBuilder && this.getContainerItemBuilder('right', item))));
495
+ }), this.ezDraggable &&
496
+ h("div", { class: "last-droppable-space", onDragLeave: () => this.removeOverClass(), onDragOver: event => {
537
497
  this.onDragOverLastIndex(event);
538
- }, onDragEnd: () => this.onDragEnd(), onDrop: event => this.onDropLastIndex(event, group) })), group.sort ? (h("div", { id: this.getGroupOverlayId(group.group), class: "group-overlay" }, "Mover para ", group.group)) : undefined)));
539
- }))) : (h("div", { class: "items-container", ref: el => (this._itemContainer = el), tabIndex: 0, onKeyDown: event => {
540
- this.keyDownHandler(event);
541
- } }, h("div", { class: "draggable-list" }, this._listItems.map((item, index) => (h("li", Object.assign({ id: 'item_' + item.id, class: {
542
- 'selectable-container': this.ezSelectable,
543
- 'hover-feedback': this.hoverFeedback,
544
- }, key: 'item_' + item.id }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: ElementIDUtils.getInternalIDInfo(`ezListItem__${StringUtils.replaceAccentuatedChars(item.label)}`) }), h("div", { class: 'draggable' + (item.selected == true ? ' selected-item ' : '') + (this.ezSelectable == true ? ' selectable ' : ''), onDragStart: () => this.onDragStart({ item: item, index: index }), onDblClick: () => {
545
- this.doubleClickItem(item);
546
- }, onClick: () => {
547
- this.setSelection(item);
548
- }, onDragLeave: () => this.removeOverClass(), onDragOver: event => this.onDragOverItem(event), onDragEnd: () => this.onDragEnd(), onDrop: event => this.onDrop(event, { item: item, index: index }), draggable: this.ezDraggable }, h("div", { class: "item-content" }, this.listMode === 'regular' ? (h(Fragment, null, this.ezDraggable ? h("span", { class: "draggable-icon" }) : undefined, !!this.itemLeftSlotBuilder && this.getContainerItemBuilder('left', item), h("p", { title: item.label, class: "person-name text--ellipsis" }, item.label))) : (h(Fragment, null, this.ezDraggable ? h("span", { class: "draggable-icon" }) : undefined, h("ez-check", { label: item.label, value: item.check, onEzChange: evt => this.ezCheckChange.emit({ id: item.id, label: item.label, check: evt.detail }) })))), !!this.itemSlotBuilder && this.getContainerItemBuilder('right', item))))), h("div", { class: "last-droppable-space", onDragLeave: () => this.removeOverClass(), onDragOver: event => {
549
- this.onDragOverLastIndex(event);
550
- }, onDragEnd: () => this.onDragEnd(), onDrop: event => this.onDropLastIndex(event) }))))));
498
+ }, onDragEnd: () => this.onDragEnd(), onDrop: event => this.onDropLastIndex(event) }))))));
551
499
  }
552
500
  static get is() { return "ez-list"; }
553
501
  static get encapsulation() { return "scoped"; }
@@ -720,13 +668,32 @@ export class EzList {
720
668
  "attribute": "hover-feedback",
721
669
  "reflect": false,
722
670
  "defaultValue": "false"
671
+ },
672
+ "disableShortcuts": {
673
+ "type": "boolean",
674
+ "mutable": false,
675
+ "complexType": {
676
+ "original": "boolean",
677
+ "resolved": "boolean",
678
+ "references": {}
679
+ },
680
+ "required": false,
681
+ "optional": false,
682
+ "docs": {
683
+ "tags": [],
684
+ "text": "Desabilita os atalhos de teclado."
685
+ },
686
+ "attribute": "disable-shortcuts",
687
+ "reflect": false,
688
+ "defaultValue": "false"
723
689
  }
724
690
  };
725
691
  }
726
692
  static get states() {
727
693
  return {
728
694
  "_listItems": {},
729
- "_listGroupItems": {}
695
+ "_listGroupItems": {},
696
+ "_selectedItem": {}
730
697
  };
731
698
  }
732
699
  static get events() {
@@ -774,6 +741,25 @@ export class EzList {
774
741
  }
775
742
  }
776
743
  }
744
+ }, {
745
+ "method": "ezClickItem",
746
+ "name": "ezClickItem",
747
+ "bubbles": true,
748
+ "cancelable": true,
749
+ "composed": true,
750
+ "docs": {
751
+ "tags": [],
752
+ "text": "Emitido sempre que um item da lista for clicado."
753
+ },
754
+ "complexType": {
755
+ "original": "ListItem",
756
+ "resolved": "ListItem",
757
+ "references": {
758
+ "ListItem": {
759
+ "location": "local"
760
+ }
761
+ }
762
+ }
777
763
  }, {
778
764
  "method": "ezCheckChange",
779
765
  "name": "ezCheckChange",
@@ -816,6 +802,38 @@ export class EzList {
816
802
  }
817
803
  static get methods() {
818
804
  return {
805
+ "selectNextItem": {
806
+ "complexType": {
807
+ "signature": "() => Promise<void>",
808
+ "parameters": [],
809
+ "references": {
810
+ "Promise": {
811
+ "location": "global"
812
+ }
813
+ },
814
+ "return": "Promise<void>"
815
+ },
816
+ "docs": {
817
+ "text": "Seleciona o pr\u00F3ximo item.",
818
+ "tags": []
819
+ }
820
+ },
821
+ "selectPreviousItem": {
822
+ "complexType": {
823
+ "signature": "() => Promise<void>",
824
+ "parameters": [],
825
+ "references": {
826
+ "Promise": {
827
+ "location": "global"
828
+ }
829
+ },
830
+ "return": "Promise<void>"
831
+ },
832
+ "docs": {
833
+ "text": "Seleciona o item anterior.",
834
+ "tags": []
835
+ }
836
+ },
819
837
  "clearHistory": {
820
838
  "complexType": {
821
839
  "signature": "() => Promise<void>",