@sankhyalabs/ezui 5.20.0-dev.2 → 5.20.0-dev.21

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 (139) hide show
  1. package/README.md +4 -5
  2. package/dist/cjs/{CSSVarsUtils-b136a156.js → CSSVarsUtils-10c9d5b4.js} +13 -0
  3. package/dist/cjs/ez-actions-button.cjs.entry.js +1 -1
  4. package/dist/cjs/ez-alert-list.cjs.entry.js +33 -28
  5. package/dist/cjs/ez-card-item_3.cjs.entry.js +6 -5
  6. package/dist/cjs/ez-combo-box.cjs.entry.js +8 -7
  7. package/dist/cjs/ez-date-input.cjs.entry.js +4 -1
  8. package/dist/cjs/ez-date-time-input.cjs.entry.js +4 -1
  9. package/dist/cjs/ez-form-view.cjs.entry.js +34 -15
  10. package/dist/cjs/ez-grid.cjs.entry.js +91 -30
  11. package/dist/cjs/ez-icon.cjs.entry.js +1 -1
  12. package/dist/cjs/ez-multi-selection-list.cjs.entry.js +2 -10
  13. package/dist/cjs/ez-number-input.cjs.entry.js +4 -1
  14. package/dist/cjs/ez-popup.cjs.entry.js +1 -1
  15. package/dist/cjs/ez-search.cjs.entry.js +7 -8
  16. package/dist/cjs/ez-split-button.cjs.entry.js +147 -0
  17. package/dist/cjs/ez-split-item.cjs.entry.js +20 -2
  18. package/dist/cjs/ez-split-panel.cjs.entry.js +15 -12
  19. package/dist/cjs/ez-time-input.cjs.entry.js +1 -1
  20. package/dist/cjs/ezui.cjs.js +1 -1
  21. package/dist/cjs/filter-column.cjs.entry.js +16 -5
  22. package/dist/cjs/index-a7b0c73d.js +8 -4
  23. package/dist/cjs/loader.cjs.js +1 -1
  24. package/dist/collection/collection-manifest.json +2 -1
  25. package/dist/collection/components/ez-alert-list/ez-alert-list.js +33 -28
  26. package/dist/collection/components/ez-card-item/ez-card-item.css +39 -6
  27. package/dist/collection/components/ez-card-item/ez-card-item.js +22 -3
  28. package/dist/collection/components/ez-collapsible-box/ez-collapsible-box.css +1 -0
  29. package/dist/collection/components/ez-combo-box/ez-combo-box.js +7 -6
  30. package/dist/collection/components/ez-date-input/ez-date-input.js +3 -0
  31. package/dist/collection/components/ez-date-time-input/ez-date-time-input.js +3 -0
  32. package/dist/collection/components/ez-form-view/ez-form-view.css +17 -1
  33. package/dist/collection/components/ez-form-view/ez-form-view.js +22 -5
  34. package/dist/collection/components/ez-form-view/fieldbuilder/templates/CheckBox.tpl.js +1 -1
  35. package/dist/collection/components/ez-form-view/fieldbuilder/templates/ComboBox.tpl.js +1 -1
  36. package/dist/collection/components/ez-form-view/fieldbuilder/templates/DateInput.tpl.js +3 -3
  37. package/dist/collection/components/ez-form-view/fieldbuilder/templates/FileInput.tpl.js +4 -2
  38. package/dist/collection/components/ez-form-view/fieldbuilder/templates/NumberInput.tpl.js +1 -1
  39. package/dist/collection/components/ez-form-view/fieldbuilder/templates/SearchInput.tpl.js +1 -1
  40. package/dist/collection/components/ez-form-view/fieldbuilder/templates/TextInput.tpl.js +1 -1
  41. package/dist/collection/components/ez-grid/controller/ag-grid/AgGridController.js +12 -11
  42. package/dist/collection/components/ez-grid/controller/ag-grid/DataSource.js +15 -1
  43. package/dist/collection/components/ez-grid/controller/ag-grid/components/EzGridCustomHeader.js +1 -3
  44. package/dist/collection/components/ez-grid/ez-grid.css +25 -1
  45. package/dist/collection/components/ez-grid/ez-grid.js +67 -10
  46. package/dist/collection/components/ez-grid/subcomponents/filter-column.js +16 -5
  47. package/dist/collection/components/ez-icon/ez-icon.css +1 -1
  48. package/dist/collection/components/ez-multi-selection-list/ez-multi-selection-list.js +2 -10
  49. package/dist/collection/components/ez-number-input/ez-number-input.js +3 -0
  50. package/dist/collection/components/ez-popup/ez-popup.css +2 -5
  51. package/dist/collection/components/ez-search/ez-search.css +2 -1
  52. package/dist/collection/components/ez-search/ez-search.js +5 -6
  53. package/dist/collection/components/ez-split-button/ez-split-button.css +229 -0
  54. package/dist/collection/components/ez-split-button/ez-split-button.js +436 -0
  55. package/dist/collection/components/ez-split-button/test/dropdownItems.js +42 -0
  56. package/dist/collection/components/ez-split-panel/ez-split-panel.css +6 -7
  57. package/dist/collection/components/ez-split-panel/ez-split-panel.js +35 -14
  58. package/dist/collection/components/ez-split-panel/structure/item/ez-split-item.css +47 -12
  59. package/dist/collection/components/ez-split-panel/structure/item/ez-split-item.js +82 -2
  60. package/dist/collection/utils/CSSVarsUtils.js +13 -0
  61. package/dist/collection/utils/form/test/DataBinder.test.js +9 -0
  62. package/dist/custom-elements/index.d.ts +6 -0
  63. package/dist/custom-elements/index.js +394 -124
  64. package/dist/esm/{CSSVarsUtils-a97cfa29.js → CSSVarsUtils-71ce76be.js} +13 -0
  65. package/dist/esm/ez-actions-button.entry.js +1 -1
  66. package/dist/esm/ez-alert-list.entry.js +33 -28
  67. package/dist/esm/ez-card-item_3.entry.js +6 -5
  68. package/dist/esm/ez-combo-box.entry.js +8 -7
  69. package/dist/esm/ez-date-input.entry.js +4 -1
  70. package/dist/esm/ez-date-time-input.entry.js +4 -1
  71. package/dist/esm/ez-form-view.entry.js +35 -16
  72. package/dist/esm/ez-grid.entry.js +92 -31
  73. package/dist/esm/ez-icon.entry.js +1 -1
  74. package/dist/esm/ez-multi-selection-list.entry.js +2 -10
  75. package/dist/esm/ez-number-input.entry.js +4 -1
  76. package/dist/esm/ez-popup.entry.js +1 -1
  77. package/dist/esm/ez-search.entry.js +7 -8
  78. package/dist/esm/ez-split-button.entry.js +143 -0
  79. package/dist/esm/ez-split-item.entry.js +20 -2
  80. package/dist/esm/ez-split-panel.entry.js +15 -12
  81. package/dist/esm/ez-time-input.entry.js +1 -1
  82. package/dist/esm/ezui.js +1 -1
  83. package/dist/esm/filter-column.entry.js +16 -5
  84. package/dist/esm/index-baa5e267.js +8 -4
  85. package/dist/esm/loader.js +1 -1
  86. package/dist/ezui/ezui.esm.js +1 -1
  87. package/dist/ezui/{p-f56dd1da.entry.js → p-07cbffce.entry.js} +1 -1
  88. package/dist/ezui/p-13dbad96.entry.js +1 -0
  89. package/dist/ezui/p-2eb8f73b.entry.js +1 -0
  90. package/dist/ezui/{p-40f72de4.entry.js → p-784fe207.entry.js} +1 -1
  91. package/dist/ezui/p-7af81663.entry.js +1 -0
  92. package/dist/ezui/p-801fd0f8.entry.js +1 -0
  93. package/dist/ezui/p-807560f0.entry.js +1 -0
  94. package/dist/ezui/p-940ed30b.entry.js +1 -0
  95. package/dist/ezui/{p-eb36f072.entry.js → p-99ead599.entry.js} +1 -1
  96. package/dist/ezui/{p-7eb3e1a5.js → p-9e11fc7b.js} +1 -1
  97. package/dist/ezui/p-9f1e89c9.entry.js +1 -0
  98. package/dist/ezui/{p-6e2f8e6b.entry.js → p-a2704c1a.entry.js} +2 -2
  99. package/dist/ezui/{p-51c5e071.entry.js → p-abc23d6f.entry.js} +1 -1
  100. package/dist/ezui/p-af95cd16.entry.js +1 -0
  101. package/dist/ezui/{p-c0f1715f.entry.js → p-b567fa8c.entry.js} +1 -1
  102. package/dist/ezui/p-b9fbf4e7.entry.js +1 -0
  103. package/dist/ezui/p-baf80b13.entry.js +1 -0
  104. package/dist/ezui/p-db77a984.entry.js +1 -0
  105. package/dist/ezui/{p-9cad9b6e.entry.js → p-e85c48d7.entry.js} +1 -1
  106. package/dist/types/components/ez-alert-list/ez-alert-list.d.ts +1 -1
  107. package/dist/types/components/ez-card-item/ez-card-item.d.ts +4 -0
  108. package/dist/types/components/ez-combo-box/ez-combo-box.d.ts +1 -0
  109. package/dist/types/components/ez-form-view/ez-form-view.d.ts +3 -0
  110. package/dist/types/components/ez-grid/controller/EzGridController.d.ts +1 -0
  111. package/dist/types/components/ez-grid/controller/ag-grid/AgGridController.d.ts +1 -0
  112. package/dist/types/components/ez-grid/controller/ag-grid/DataSource.d.ts +2 -1
  113. package/dist/types/components/ez-grid/controller/ag-grid/components/EzGridCustomHeader.d.ts +1 -1
  114. package/dist/types/components/ez-grid/ez-grid.d.ts +15 -2
  115. package/dist/types/components/ez-grid/subcomponents/filter-column.d.ts +4 -1
  116. package/dist/types/components/ez-multi-selection-list/ez-multi-selection-list.d.ts +0 -1
  117. package/dist/types/components/ez-split-button/ez-split-button.d.ts +89 -0
  118. package/dist/types/components/ez-split-button/test/dropdownItems.d.ts +2 -0
  119. package/dist/types/components/ez-split-panel/ez-split-panel.d.ts +23 -0
  120. package/dist/types/components/ez-split-panel/structure/item/ez-split-item.d.ts +27 -0
  121. package/dist/types/components.d.ts +155 -0
  122. package/dist/types/utils/CSSVarsUtils.d.ts +1 -0
  123. package/dist/types/utils/form/test/DataBinder.test.d.ts +1 -0
  124. package/package.json +13 -5
  125. package/react/components.d.ts +1 -0
  126. package/react/components.js +1 -0
  127. package/react/components.js.map +1 -1
  128. package/dist/collection/components/ez-grid/controller/ag-grid/AgGridUtils.js +0 -8
  129. package/dist/ezui/p-133fae4a.entry.js +0 -1
  130. package/dist/ezui/p-24d3fede.entry.js +0 -1
  131. package/dist/ezui/p-43b03119.entry.js +0 -1
  132. package/dist/ezui/p-4a7f113d.entry.js +0 -1
  133. package/dist/ezui/p-596634e9.entry.js +0 -1
  134. package/dist/ezui/p-76ba9d67.entry.js +0 -1
  135. package/dist/ezui/p-796c1a88.entry.js +0 -1
  136. package/dist/ezui/p-af15c277.entry.js +0 -1
  137. package/dist/ezui/p-ba875f37.entry.js +0 -1
  138. package/dist/ezui/p-d6ffe679.entry.js +0 -1
  139. package/dist/types/components/ez-grid/controller/ag-grid/AgGridUtils.d.ts +0 -1
@@ -3,6 +3,7 @@ import { h, Host } from '@stencil/core';
3
3
  export class EzCardItem {
4
4
  constructor() {
5
5
  this.item = undefined;
6
+ this.enableKey = true;
6
7
  }
7
8
  componentWillRender() {
8
9
  this.createDetailList();
@@ -30,11 +31,11 @@ export class EzCardItem {
30
31
  }
31
32
  render() {
32
33
  return (h(Host, null, this.item &&
33
- h("div", { class: "card-item", onClick: () => { this.ezClick.emit(this.item); } }, h("label", { class: "card-item__title" }, h("span", { class: "card-item__key", innerHTML: this.item.key }), h("span", { innerHTML: this.item.title })), h("div", { class: "card-item__details" }, h("div", { class: "card-item__details-left" }, this._details.detailsLeft.map(detail => {
34
+ h("div", { class: "card-item", onClick: () => { this.ezClick.emit(this.item); } }, h("div", { class: "ez-row card-item__content" }, h("div", { class: "ez-col ez-col--sd-11 card-item__details" }, h("label", { class: "card-item__title" }, this.enableKey && (h("span", { class: "card-item__key", innerHTML: this.item.key })), h("span", { innerHTML: this.item.title })), h("div", { class: "card-item__details-container" }, h("div", { class: "card-item__details-container__left" }, this._details.detailsLeft.map(detail => {
34
35
  return this.buildDetailContent(detail);
35
- })), h("div", { class: "card-item__details-right" }, this._details.detailsRight.map(detail => {
36
+ })), h("div", { class: "card-item__details-container__right" }, this._details.detailsRight.map(detail => {
36
37
  return this.buildDetailContent(detail);
37
- }))))));
38
+ })))), h("div", { class: "ez-col ez-col--sd-1 card-item__details-slot" }, h("slot", { name: "rightSlot" }))))));
38
39
  }
39
40
  static get is() { return "ez-card-item"; }
40
41
  static get encapsulation() { return "shadow"; }
@@ -68,6 +69,24 @@ export class EzCardItem {
68
69
  "tags": [],
69
70
  "text": "Determina o conte\u00FAdo do card. Deve conter um objeto no formato:\n`{title: string, key: string, details: any}`."
70
71
  }
72
+ },
73
+ "enableKey": {
74
+ "type": "boolean",
75
+ "mutable": false,
76
+ "complexType": {
77
+ "original": "boolean",
78
+ "resolved": "boolean",
79
+ "references": {}
80
+ },
81
+ "required": false,
82
+ "optional": false,
83
+ "docs": {
84
+ "tags": [],
85
+ "text": "Determina se a chave do item deve ser exibida."
86
+ },
87
+ "attribute": "enable-key",
88
+ "reflect": false,
89
+ "defaultValue": "true"
71
90
  }
72
91
  };
73
92
  }
@@ -207,6 +207,7 @@ ez-icon {
207
207
  /*private*/
208
208
  display: flex;
209
209
  flex-wrap: wrap;
210
+
210
211
  width: 100%;
211
212
  height: 0px;
212
213
  max-height: 0px;
@@ -210,14 +210,15 @@ export class EzComboBox {
210
210
  const upperCriteria = this._criteria.toUpperCase();
211
211
  opts = opts.filter(opt => opt.label.toLocaleUpperCase().indexOf(upperCriteria) > -1);
212
212
  }
213
- if (this.suppressEmptyOption) {
214
- this._visibleOptions = opts;
215
- }
216
- else {
217
- this._visibleOptions = [{ value: undefined, label: "" }].concat(opts);
213
+ if (this.hasToAddEmptyoption(opts)) {
214
+ opts = [{ value: undefined, label: "" }].concat(opts);
218
215
  }
216
+ this._visibleOptions = opts;
219
217
  this._maxWidthValue = this.getMaxWidthValue();
220
218
  }
219
+ hasToAddEmptyoption(opts) {
220
+ return !this.suppressEmptyOption && !opts.filter(opt => !opt.value).length;
221
+ }
221
222
  getMaxWidthValue() {
222
223
  var _a;
223
224
  if (this.showOptionValue) {
@@ -358,7 +359,7 @@ export class EzComboBox {
358
359
  }
359
360
  else {
360
361
  window.setTimeout(() => {
361
- this.setInputValue();
362
+ this.setInputValue(false);
362
363
  }, this._deboucingTime);
363
364
  }
364
365
  this.resetOptions();
@@ -100,6 +100,9 @@ export class EzDateInput {
100
100
  this._calendar.hide();
101
101
  }
102
102
  handleBlur() {
103
+ if (!this._changePending) {
104
+ return;
105
+ }
103
106
  try {
104
107
  const strValue = this._textInput.value;
105
108
  const newValue = DateUtils.strToDate(strValue);
@@ -152,6 +152,9 @@ export class EzDateTimeInput {
152
152
  }
153
153
  handleBlur() {
154
154
  var _a, _b;
155
+ if (!this._changePending) {
156
+ return;
157
+ }
155
158
  try {
156
159
  const strValue = ((_b = (_a = this._textInput) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.trim()) || "";
157
160
  const newValue = this.getParsedDateTime();
@@ -1,6 +1,22 @@
1
1
  :host {
2
2
  display: flex;
3
- flex-direction: row;
4
3
  flex-wrap: wrap;
5
4
  width: 100%;
5
+
6
+ /*@doc Define o tamanho mínimo dos itens do formulário.*/
7
+ --ez-form-view__item--min-width: 220px;
8
+ /*@doc Define o espaçamento entre itens do formulário.*/
9
+ --ez-form-view__item--sapce-width: 5px;
10
+ }
11
+
12
+ .form-view__content{
13
+ display: grid;
14
+ grid-template-columns: repeat(auto-fill, minmax(var(--ez-form-view__item--min-width), 1fr));
15
+ gap: var(--ez-form-view__item--sapce-width);
16
+ width: 100%;
17
+ }
18
+
19
+ .input-full_width {
20
+ grid-column: 1 / -1;
21
+ width: 100%;
6
22
  }
@@ -1,6 +1,6 @@
1
1
  import { Host, h } from '@stencil/core';
2
2
  import { fieldBuilder } from './fieldbuilder/FieldBuilder';
3
- import { ElementIDUtils } from '@sankhyalabs/core';
3
+ import { ElementIDUtils, UserInterface } from '@sankhyalabs/core';
4
4
  import { FormItems } from './structure';
5
5
  export class EzFormView {
6
6
  constructor() {
@@ -32,19 +32,36 @@ export class EzFormView {
32
32
  const formItems = new FormItems(Array.from(this._element.querySelectorAll("[data-form-item]")));
33
33
  this.formItemsReady.emit(formItems);
34
34
  }
35
+ isItemFullWidth(userInterface) {
36
+ return [
37
+ UserInterface.FILE,
38
+ UserInterface.LONGTEXT
39
+ ].includes(userInterface);
40
+ }
41
+ buildFormItemElement(item, classItem = "") {
42
+ if (this.isItemFullWidth(item.userInterface)) {
43
+ classItem += " input-full_width";
44
+ }
45
+ return h("div", { class: classItem }, fieldBuilder(item));
46
+ }
35
47
  render() {
36
48
  ElementIDUtils.addIDInfoIfNotExists(this._element, 'ezFormView');
37
49
  if (this.fields == undefined) {
38
50
  return;
39
51
  }
40
- return (h(Host, null, Array.from(this.groupFields(this.fields).entries()).map(([label, value]) => {
52
+ let nonArrayGrup = [];
53
+ let formContent = Array.from(this.groupFields(this.fields).entries()).map(([label, value]) => {
41
54
  if (Array.isArray(value)) {
42
- return (h("ez-collapsible-box", { id: `group-${label}`, label: label, "header-size": "large", key: label }, value.map(fi => fieldBuilder(fi))));
55
+ return (h("ez-collapsible-box", { id: `group-${label}`, label: label, "header-size": "large", key: label }, h("div", { class: "form-view__content" }, value.map(fi => (this.buildFormItemElement(fi))))));
43
56
  }
44
57
  else {
45
- return fieldBuilder(value);
58
+ nonArrayGrup.push(value);
46
59
  }
47
- })));
60
+ });
61
+ // Filtra os elementos que não são arrays e os coloca dentro de uma única div
62
+ let nonArrayElements = nonArrayGrup.map((value) => this.buildFormItemElement(value));
63
+ let groupedNonArrayElements = h("div", { class: "form-view__content" }, nonArrayElements);
64
+ return (h(Host, null, groupedNonArrayElements, formContent));
48
65
  }
49
66
  static get is() { return "ez-form-view"; }
50
67
  static get encapsulation() { return "scoped"; }
@@ -7,5 +7,5 @@ export const buildCheckBox = (field) => {
7
7
  return buildField(field.name, field.label, field.readOnly, field.contextName, false);
8
8
  };
9
9
  function buildField(fieldName, fieldLabel, readOnly, contextName, switchMode) {
10
- return (h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-3 ez-align--middle ez-padding-horizontal--small ez-padding-bottom--large" }, h("ez-check", { enabled: !readOnly, label: fieldLabel, mode: switchMode ? CheckMode.SWITCH : CheckMode.REGULAR, "data-field-name": fieldName, "data-context-name": contextName, key: fieldName })));
10
+ return (h("div", { class: "ez-col ez-col--sd-12 ez-align--middle ez-padding-horizontal--small ez-padding-bottom--large" }, h("ez-check", { enabled: !readOnly, label: fieldLabel, mode: switchMode ? CheckMode.SWITCH : CheckMode.REGULAR, "data-field-name": fieldName, "data-context-name": contextName, key: fieldName })));
11
11
  }
@@ -9,5 +9,5 @@ export const buildComboBox = ({ name, label, readOnly, required, props, contextN
9
9
  else {
10
10
  options = prop;
11
11
  }
12
- return (h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-3 ez-padding-horizontal--small" }, h("ez-combo-box", { enabled: !readOnly, suppressEmptyOption: required, label: label, "data-field-name": name, "data-context-name": contextName, key: name, options: options, canShowError: canShowError })));
12
+ return (h("div", { class: "ez-col ez-col--sd-12 ez-padding-horizontal--small" }, h("ez-combo-box", { enabled: !readOnly, suppressEmptyOption: required, label: label, "data-field-name": name, "data-context-name": contextName, key: name, options: options, canShowError: canShowError })));
13
13
  };
@@ -1,10 +1,10 @@
1
1
  import { h } from "@stencil/core";
2
2
  export const buildDate = ({ name, label, readOnly, canShowError }) => {
3
- return (h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-3 ez-padding-horizontal--small" }, h("ez-date-input", { enabled: !readOnly, label: label, "data-field-name": name, key: name, canShowError: canShowError })));
3
+ return (h("div", { class: "ez-col ez-col--sd-12 ez-padding-horizontal--small" }, h("ez-date-input", { enabled: !readOnly, label: label, "data-field-name": name, key: name, canShowError: canShowError })));
4
4
  };
5
5
  export const buildTime = ({ name, label, readOnly, canShowError }) => {
6
- return (h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-3 ez-padding-horizontal--small" }, h("ez-time-input", { enabled: !readOnly, label: label, "data-field-name": name, key: name, canShowError: canShowError })));
6
+ return (h("div", { class: "ez-col ez-col--sd-12 ez-padding-horizontal--small" }, h("ez-time-input", { enabled: !readOnly, label: label, "data-field-name": name, key: name, canShowError: canShowError })));
7
7
  };
8
8
  export const buildDateTime = ({ name, label, readOnly, contextName, canShowError }) => {
9
- return (h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-3 ez-padding-horizontal--small" }, h("ez-date-time-input", { enabled: !readOnly, label: label, "data-field-name": name, "data-context-name": contextName, key: name, canShowError: canShowError })));
9
+ return (h("div", { class: "ez-col ez-col--sd-12 ez-padding-horizontal--small" }, h("ez-date-time-input", { enabled: !readOnly, label: label, "data-field-name": name, "data-context-name": contextName, key: name, canShowError: canShowError })));
10
10
  };
@@ -3,9 +3,11 @@ import { ObjectUtils } from "@sankhyalabs/core";
3
3
  export const buildFile = ({ name, label, readOnly, contextName, props }) => {
4
4
  const uploadProps = ObjectUtils.removeEmptyValues({
5
5
  subTitle: props.subTitle,
6
- requestHeaders: props.STORAGESTRATEGY ? {
6
+ requestHeaders: Object.assign(Object.assign({}, (props.STORAGESTRATEGY && {
7
7
  STORAGESTRATEGY: props.STORAGESTRATEGY
8
- } : null
8
+ })), (props.INTERNAL_FILENAME && {
9
+ INTERNAL_FILENAME: props.INTERNAL_FILENAME
10
+ })),
9
11
  });
10
12
  return (h("div", { class: "ez-col ez-col--sd-12 ez-padding-horizontal--small" }, h("ez-upload", Object.assign({ enabled: !readOnly, label: label, "data-field-name": name, "data-context-name": contextName, key: name }, uploadProps))));
11
13
  };
@@ -8,5 +8,5 @@ export const buildInteger = ({ name, label, readOnly, contextName, canShowError
8
8
  return buildNumeric(name, label, readOnly, 0, 0, contextName, canShowError);
9
9
  };
10
10
  function buildNumeric(fieldName, fieldLabel, readOnly, precision, prettyPrecision, contextName, canShowError) {
11
- return (h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-3 ez-padding-horizontal--small" }, h("ez-number-input", { enabled: !readOnly, label: fieldLabel, precision: precision, prettyPrecision: prettyPrecision, "data-field-name": fieldName, "data-context-name": contextName, key: fieldName, canShowError: canShowError })));
11
+ return (h("div", { class: "ez-col ez-col--sd-12 ez-padding-horizontal--small" }, h("ez-number-input", { enabled: !readOnly, label: fieldLabel, precision: precision, prettyPrecision: prettyPrecision, "data-field-name": fieldName, "data-context-name": contextName, key: fieldName, canShowError: canShowError })));
12
12
  }
@@ -1,4 +1,4 @@
1
1
  import { h } from "@stencil/core";
2
2
  export const buildSearch = ({ name, label, readOnly, required, contextName, canShowError, optionLoader }) => {
3
- return (h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-3 ez-padding-horizontal--small" }, h("ez-search", { enabled: !readOnly, suppressEmptyOption: required, label: label, "data-field-name": name, "data-context-name": contextName, key: name, canShowError: canShowError, optionLoader: optionLoader })));
3
+ return (h("div", { class: "ez-col ez-col--sd-12 ez-padding-horizontal--small" }, h("ez-search", { enabled: !readOnly, suppressEmptyOption: required, label: label, "data-field-name": name, "data-context-name": contextName, key: name, canShowError: canShowError, optionLoader: optionLoader })));
4
4
  };
@@ -1,4 +1,4 @@
1
1
  import { h } from "@stencil/core";
2
2
  export const buildTextInput = ({ name, label, readOnly, contextName, canShowError }) => {
3
- return (h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-3 ez-padding-horizontal--small" }, h("ez-text-input", { label: label, "data-field-name": name, "data-context-name": contextName, key: name, enabled: !readOnly, canShowError: canShowError })));
3
+ return (h("div", { class: "ez-col ez-col--sd-12 ez-padding-horizontal--small" }, h("ez-text-input", { label: label, "data-field-name": name, "data-context-name": contextName, key: name, enabled: !readOnly, canShowError: canShowError })));
4
4
  };
@@ -1,4 +1,4 @@
1
- import { ApplicationContext, DataType, MaskFormatter, NumberUtils, SortMode, StringUtils, UserInterface } from '@sankhyalabs/core';
1
+ import { ApplicationContext, DataType, MaskFormatter, NumberUtils, SortMode, StringUtils, UserInterface, } from '@sankhyalabs/core';
2
2
  import { Grid, } from 'ag-grid-community';
3
3
  import { Grid as EnterpriseGrid, LicenseManager } from 'ag-grid-enterprise';
4
4
  import DataSource from './DataSource';
@@ -6,8 +6,7 @@ import { EzGridCustomHeader } from './components/EzGridCustomHeader';
6
6
  import { CellRendererStatus } from './components/cellRendererStatus';
7
7
  import SelectionHeader from './components/selectionHeader';
8
8
  import gridTerms from './i18n/pt-BR.js';
9
- import { EZ_GRID_LOADING_SOURCE, DISTINCT_FILTER_NAME_PREFIX } from '../../../../utils/constants';
10
- import { calcFilterColumnLeftPosition } from './AgGridUtils';
9
+ import { DISTINCT_FILTER_NAME_PREFIX, EZ_GRID_LOADING_SOURCE } from '../../../../utils/constants';
11
10
  import GridEditionManager from './GridEditionManager';
12
11
  export default class AgGridController {
13
12
  configFilterColumn(filterColumn) {
@@ -20,6 +19,10 @@ export default class AgGridController {
20
19
  this._gridOptions.api.refreshHeader();
21
20
  this._dataUnit.loadData(undefined, undefined, undefined, EZ_GRID_LOADING_SOURCE);
22
21
  }
22
+ clearFilter() {
23
+ this._filteredColumns.clear();
24
+ this._gridOptions.api.refreshHeader();
25
+ }
23
26
  showFilterColumn(configs) {
24
27
  var _a;
25
28
  (_a = this._filterColumn) === null || _a === void 0 ? void 0 : _a.show(configs);
@@ -38,7 +41,7 @@ export default class AgGridController {
38
41
  this._idAttribName = '__record__id__';
39
42
  this._gridConfig = [];
40
43
  this._filteredColumns = new Map();
41
- this._filterColumnleftPosition = '0px';
44
+ this._filterColumnleftPosition = 0;
42
45
  this._enterprise = enterprise;
43
46
  }
44
47
  getGridConfig() {
@@ -164,11 +167,9 @@ export default class AgGridController {
164
167
  this._gridOptions.api.setHeaderHeight(this.getHeaderRowHeight());
165
168
  }
166
169
  }
167
- setFilterColumnLeftPosition(params) {
168
- if (params.type === 'columnMenu') {
169
- const ePopup = params.ePopup;
170
- const leftString = ePopup.style.left.replace('px', '');
171
- this._filterColumnleftPosition = `${calcFilterColumnLeftPosition(parseInt(leftString))}px`;
170
+ setFilterColumnLeftPosition({ type, ePopup }) {
171
+ if (type === 'columnMenu') {
172
+ this._filterColumnleftPosition = ePopup.getBoundingClientRect().left;
172
173
  return;
173
174
  }
174
175
  }
@@ -608,10 +609,10 @@ export default class AgGridController {
608
609
  tooltip: tooltip,
609
610
  isSortable: propSortable,
610
611
  hasFilter: () => this.hasFilterColumn(source.name),
611
- showColumnFilter: (leftPosition, fromIcon) => this.showFilterColumn({ columnName: source.name, columnLabel: source.label, leftPosition, filteredOptions: this._filteredColumns.get(source.name), fromIcon }),
612
+ showColumnFilter: (leftPosition) => this.showFilterColumn({ columnName: source.name, columnLabel: source.label, leftPosition, filteredOptions: this._filteredColumns.get(source.name), fromIcon: true }),
612
613
  },
613
614
  valueFormatter: params => {
614
- if (params.value == undefined) {
615
+ if (params.value === undefined) {
615
616
  return "";
616
617
  }
617
618
  if (params.value instanceof Promise) {
@@ -1,6 +1,14 @@
1
- import { Action, ObjectUtils } from "@sankhyalabs/core";
1
+ import { Action, ObjectUtils } from '@sankhyalabs/core';
2
2
  import { EZ_GRID_LOADING_SOURCE } from "../../../../utils/constants";
3
3
  export default class DataSource {
4
+ updateLoadedRecords(action) {
5
+ const records = action.payload;
6
+ if ((records === null || records === void 0 ? void 0 : records.length) > 0) {
7
+ records.forEach(record => {
8
+ this._controller.changeValues(record, [record.__record__id__]);
9
+ });
10
+ }
11
+ }
4
12
  isSilentChange(action) {
5
13
  //TODO: Provisorio p/ não atualizar a grade quando a alteração for apenas de campos transisntes
6
14
  var _a, _b;
@@ -23,6 +31,9 @@ export default class DataSource {
23
31
  break;
24
32
  case Action.LOADING_DATA:
25
33
  this._waitingForLoad = true;
34
+ if (EZ_GRID_LOADING_SOURCE !== action.payload.source) {
35
+ this._controller.clearFilter();
36
+ }
26
37
  this._controller.refresh();
27
38
  break;
28
39
  case Action.DATA_LOADED:
@@ -53,6 +64,9 @@ export default class DataSource {
53
64
  case Action.PREVIOUS_SELECTED:
54
65
  this.updateSelection();
55
66
  break;
67
+ case Action.RECORD_LOADED:
68
+ this.updateLoadedRecords(action);
69
+ break;
56
70
  }
57
71
  };
58
72
  this._dataUnit = dataUnit;
@@ -1,4 +1,3 @@
1
- import { calcFilterColumnLeftPosition } from '../AgGridUtils';
2
1
  export class EzGridCustomHeader {
3
2
  init(agParams) {
4
3
  var _a;
@@ -35,8 +34,7 @@ export class EzGridCustomHeader {
35
34
  }
36
35
  onClickFilter() {
37
36
  var _a;
38
- const iconLeft = (_a = this.filterButton) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().left;
39
- this.params.showColumnFilter(`${calcFilterColumnLeftPosition(iconLeft)}px`, true);
37
+ this.params.showColumnFilter((_a = this.filterButton) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().left);
40
38
  }
41
39
  configSortIcon() {
42
40
  this.sortDownIcon.style.display = this.params.column.isSortDescending() ? 'flex' : 'none';
@@ -4,7 +4,7 @@
4
4
  grid-template-rows: auto 1fr auto;
5
5
  height: 100%;
6
6
  width: 100%;
7
-
7
+
8
8
  /*public*/
9
9
  /*@doc Define a cor de fundo do header do componente.*/
10
10
  --ez-grid__header--background-color: var(--background--xlight, #FFF);
@@ -12,6 +12,10 @@
12
12
  --ez-grid__selection-counter--z-index: var(--visible, 1);
13
13
  /*@doc Define o sombreamento usado como borda.*/
14
14
  --ez-grid__container--shadow: 0 0 16px 0 rgb(0 38 111 / 12%);
15
+ /*@doc Define altura mínima da grid */
16
+ --ez-grid--min-height: 300px;
17
+
18
+ min-height: var(--ez-grid--min-height);
15
19
  }
16
20
 
17
21
  .grid-header {
@@ -92,3 +96,23 @@
92
96
  height: 0;
93
97
  padding: 0;
94
98
  }
99
+
100
+ .grid-header__pagination{
101
+ width: 30%;
102
+ min-width: 100px;
103
+ justify-content: end;
104
+ flex-wrap: wrap;
105
+ }
106
+
107
+ .grid-header__left-container{
108
+ width: 70%
109
+ }
110
+
111
+ .grid-header__pagination-label {
112
+ width: 100%;
113
+ white-space: nowrap
114
+ }
115
+
116
+ .overflowed {
117
+ display: none;
118
+ }
@@ -1,15 +1,15 @@
1
- import { ElementIDUtils, JSUtils, StringUtils, } from '@sankhyalabs/core';
1
+ import { ElementIDUtils, JSUtils, OverflowWatcher, OVERFLOWED_CLASS_NAME, StringUtils, } from '@sankhyalabs/core';
2
2
  import { SelectionMode } from '@sankhyalabs/core/dist/dataunit/DataUnit';
3
- import { h, Host } from '@stencil/core';
3
+ import { Host, h } from '@stencil/core';
4
+ import { ApplicationUtils } from '../../utils';
4
5
  import AgGridController from './controller/ag-grid/AgGridController';
5
6
  import { SelectionCounter } from './subcomponents/selection-counter';
6
- import { ApplicationUtils } from '../../utils';
7
7
  import InMemoryFilterColumnDataSource from './utils/InMemoryFilterColumnDataSource';
8
8
  const windowInstace = window;
9
9
  const matches = (text, filter) => {
10
- const normalizedText = StringUtils.replaceAccentuatedCharsLower(text.toLocaleLowerCase());
10
+ const normalizedText = StringUtils.replaceAccentuatedCharsLower(text === null || text === void 0 ? void 0 : text.toLocaleLowerCase());
11
11
  const normalizedFilter = StringUtils.replaceAccentuatedCharsLower(filter.toLocaleLowerCase());
12
- return normalizedText.includes(normalizedFilter);
12
+ return normalizedText === null || normalizedText === void 0 ? void 0 : normalizedText.includes(normalizedFilter);
13
13
  };
14
14
  export class EzGrid {
15
15
  constructor() {
@@ -96,6 +96,14 @@ export class EzGrid {
96
96
  observeConfig(config) {
97
97
  this._gridController.setColumnsState(config.columns);
98
98
  }
99
+ updatePaginationTooltip() {
100
+ if (this._refPaginationLabelTooltip) {
101
+ const tooltip = this._getPaginationTooltip();
102
+ if (tooltip) {
103
+ this._refPaginationLabelTooltip.setAttribute('data-tooltip', tooltip);
104
+ }
105
+ }
106
+ }
99
107
  onSelectionChange(evt) {
100
108
  this._currentPageSelected = evt.detail.selectionHeaderStatus === true;
101
109
  if (this.dataUnit) {
@@ -251,11 +259,10 @@ export class EzGrid {
251
259
  }
252
260
  getPaginationControl() {
253
261
  if (this._paginationInfo) {
254
- const { firstRecord, lastRecord, total, count, currentPage, hasMore } = this._paginationInfo;
262
+ const { currentPage, hasMore } = this._paginationInfo;
255
263
  return [
256
- h("div", { class: "ez-text ez-text--primary ez-text--medium ez-margin-right--medium" }, h("strong", { class: "ez-text ez-text--primary ez-text--medium" }, `${firstRecord}-${lastRecord}`), total == undefined ? ` de ${count + 1} ou mais` : ` de ${total}`),
257
- h("ez-button", { size: "small", iconName: "chevron-left", class: "ez-margin-right--medium", mode: "icon", enabled: currentPage > 0, onClick: () => this.previousPage(), label: "P\u00E1gina anterior" }),
258
- h("ez-button", { size: "small", iconName: "chevron-right", class: "ez-margin-right--medium", mode: "icon", enabled: hasMore, onClick: () => this.nextPage(), label: "Pr\u00F3xima P\u00E1gina" }),
264
+ h("div", { class: "ez-text ez-text--primary ez-text--medium ez-margin-right--medium", ref: (element) => (this._refPaginationLabel = element) }, h("span", { class: "grid-header__pagination-label" }, h("strong", { class: "ez-text ez-text--primary ez-text--medium" }, this._getActualPageLabel()), this._getRemainingPageLabel())),
265
+ h("div", { id: "grid-pagination-tooltip", ref: (element) => (this._refPaginationLabelTooltip = element), class: "ez-flex ez-margin-right--medium" }, h("ez-button", { size: "small", class: "ez-margin-right--medium", iconName: "chevron-left", mode: "icon", enabled: currentPage > 0, onClick: () => this.previousPage(), label: "P\u00E1gina anterior" }), h("ez-button", { size: "small", iconName: "chevron-right", mode: "icon", enabled: hasMore, onClick: () => this.nextPage(), label: "Pr\u00F3xima P\u00E1gina" })),
259
266
  ];
260
267
  }
261
268
  return null;
@@ -299,6 +306,53 @@ export class EzGrid {
299
306
  this.setEvents();
300
307
  this.componentReady.emit();
301
308
  this._gridController.configFilterColumn(this._filterColumn);
309
+ this._initHeaderOverflowWatcher();
310
+ }
311
+ _getActualPageLabel() {
312
+ const { firstRecord, lastRecord } = this._paginationInfo;
313
+ return `${firstRecord}-${lastRecord}`;
314
+ }
315
+ _getRemainingPageLabel() {
316
+ const { total, count } = this._paginationInfo;
317
+ return `${total == undefined ? ` de ${count + 1} ou mais` : ` de ${total}`}`;
318
+ }
319
+ _getPaginationTooltip() {
320
+ return this._getActualPageLabel() + this._getRemainingPageLabel();
321
+ }
322
+ _initHeaderOverflowWatcher() {
323
+ this._headerOverflowWatcher = new OverflowWatcher(this.buildOverFlowWatcherParams());
324
+ }
325
+ buildOverFlowWatcherParams() {
326
+ return {
327
+ element: this._refPaginationControl,
328
+ callback: this.handleOverFlow.bind(this),
329
+ notOverFlow: ["grid-pagination-tooltip"]
330
+ };
331
+ }
332
+ handleOverFlow(elementsOverflow) {
333
+ if (!this._refPaginationLabel)
334
+ return;
335
+ if (elementsOverflow.length > 0) {
336
+ this._hidePaginationDescription();
337
+ }
338
+ else {
339
+ this._showPaginationDescription();
340
+ }
341
+ }
342
+ _hidePaginationDescription() {
343
+ this._refPaginationLabel.classList.add(OVERFLOWED_CLASS_NAME);
344
+ this._refPaginationLabelTooltip.setAttribute('data-flow', 'bottom');
345
+ this._refPaginationLabelTooltip.setAttribute('data-tooltip', this._getPaginationTooltip());
346
+ }
347
+ ;
348
+ _showPaginationDescription() {
349
+ this._refPaginationLabel.classList.remove(OVERFLOWED_CLASS_NAME);
350
+ this._refPaginationLabelTooltip.removeAttribute('data-flow');
351
+ this._refPaginationLabelTooltip.removeAttribute('data-tooltip');
352
+ }
353
+ disconnectedCallback() {
354
+ var _a;
355
+ (_a = this._headerOverflowWatcher) === null || _a === void 0 ? void 0 : _a.destroy();
302
356
  }
303
357
  componentWillRender() {
304
358
  this.configSelectionCounter();
@@ -322,7 +376,7 @@ export class EzGrid {
322
376
  }
323
377
  render() {
324
378
  var _a;
325
- return (h(Host, { "no-header": this.hideHeader() }, h("div", { class: "grid__container ez-grid", ref: elem => (this._container = elem) }), h("div", { class: "ez-box ez-box--shadow ez-padding--medium grid-header" }, h("filter-column", { class: "grid-header__popover", noHeaderTaskBar: !this._hasLeftButtons, dataSource: this.getDataSource(), dataUnit: this.dataUnit, gridHeaderHidden: this.hideHeader(), ref: (element) => (this._filterColumn = element) }), h("div", { class: "grid-header__position" }, h("div", { class: "grid-header__container" }, h("slot", { name: "leftButtons" })), h("div", { class: "grid-header__container", ref: ref => (this._refPaginationControl = ref) }, this.getPaginationControl()))), h("div", { ref: (ref) => (this._gridSelectionCounter = ref), class: `grid__selection-counter ez-elevation--4
379
+ return (h(Host, { "no-header": this.hideHeader() }, h("div", { class: "grid__container ez-grid", ref: elem => (this._container = elem) }), h("div", { class: "ez-box ez-box--shadow ez-padding--medium grid-header" }, h("filter-column", { class: "grid-header__popover", noHeaderTaskBar: !this._hasLeftButtons, dataSource: this.getDataSource(), dataUnit: this.dataUnit, gridHeaderHidden: this.hideHeader(), ref: (element) => (this._filterColumn = element) }), h("div", { class: "grid-header__position" }, h("div", { class: "grid-header__container grid-header__left-container" }, h("slot", { name: "leftButtons" })), h("div", { class: "grid-header__container grid-header__pagination", ref: ref => (this._refPaginationControl = ref) }, this.getPaginationControl()))), h("div", { ref: (ref) => (this._gridSelectionCounter = ref), class: `grid__selection-counter ez-elevation--4
326
380
  ${this._showSelectionCounter ? 'grid__selection-counter--opened' : ''}
327
381
  ` }, h(SelectionCounter, { selectionCount: this._selectionCount, currentPageSelected: this._currentPageSelected, paginationInfo: this._paginationInfo, canSelectAll: (_a = this.selectionToastConfig) === null || _a === void 0 ? void 0 : _a.canSelectAll, allRecordSelected: this._isAllSelection, onSelectAll: () => this.onSelectAllRecords(), onSelectPage: () => this.onSelectPageRecords(), onClearAll: () => this.onClearSelectedRecords(), onClose: () => (this._showSelectionCounter = false) })), h("div", { class: "grid__footer" }, h("slot", { name: "footer" }))));
328
382
  }
@@ -887,6 +941,9 @@ export class EzGrid {
887
941
  return [{
888
942
  "propName": "config",
889
943
  "methodName": "observeConfig"
944
+ }, {
945
+ "propName": "_paginationInfo",
946
+ "methodName": "updatePaginationTooltip"
890
947
  }];
891
948
  }
892
949
  static get listeners() {
@@ -13,6 +13,8 @@ export class FilterColumn {
13
13
  this.TOP_POSITION_NO_TASKBAR = '32';
14
14
  this.TOP_POSITION_NO_TASKBAR_HEADER_HIDDEN = '20';
15
15
  this.DEFAULT_HEIGHT = 430;
16
+ this.FIX_MARGIN = 60;
17
+ this.FILTER_COLUMN_WIDTH = 330;
16
18
  this.opened = true;
17
19
  this.columnName = undefined;
18
20
  this.columnLabel = undefined;
@@ -45,15 +47,24 @@ export class FilterColumn {
45
47
  await this.ezPopoverElement.show(this.calcTopPosition(), this.calculateLeftPosition(configs));
46
48
  }
47
49
  }
48
- calculateLeftPosition(configs) {
49
- if (!configs.fromIcon) {
50
- return configs.leftPosition;
50
+ calculateLeftPosition({ leftPosition, fromIcon }) {
51
+ const leftPositionCalculated = this.calcFilterColumnLeftPosition(leftPosition);
52
+ if (!fromIcon) {
53
+ return `${leftPositionCalculated}px`;
51
54
  }
52
55
  const difference = this.ezPopoverElement.getBoundingClientRect().left;
53
- const leftReference = parseInt(configs.leftPosition.replace('px', ''));
54
- const leftResolved = (leftReference + 16) - difference;
56
+ const leftResolved = (leftPositionCalculated + 16) - difference;
55
57
  return `${(leftResolved > 0 ? leftResolved : 0)}px`;
56
58
  }
59
+ calcFilterColumnLeftPosition(leftReference) {
60
+ var _a, _b;
61
+ const gridReference = this.ezPopoverElement.closest("ez-grid");
62
+ const gridLimit = (_a = gridReference.getBoundingClientRect()) === null || _a === void 0 ? void 0 : _a.right;
63
+ const popoverDiff = (_b = this.ezPopoverElement.getBoundingClientRect()) === null || _b === void 0 ? void 0 : _b.left;
64
+ const maxLeft = gridLimit - (this.FILTER_COLUMN_WIDTH + popoverDiff);
65
+ const leftInt = leftReference - (this.FIX_MARGIN + popoverDiff);
66
+ return leftInt > maxLeft ? maxLeft : leftInt;
67
+ }
57
68
  buildIsTextSearch() {
58
69
  var _a, _b;
59
70
  const userInterface = (_b = (_a = this.fieldDescriptor) === null || _a === void 0 ? void 0 : _a.userInterface) !== null && _b !== void 0 ? _b : UserInterface.SHORTTEXT;
@@ -64,7 +64,7 @@ svg {
64
64
  .ez-icon-alert-mail:before { content: "\ea08"; }
65
65
  .ez-icon-alert-popup:before { content: "\ea09"; }
66
66
  .ez-icon-anexo:before { content: "\ea0a"; }
67
- .ez-icon-antecipação:before { content: "\ea0b"; }
67
+ .ez-icon-antecipacao:before { content: "\ea0b"; }
68
68
  .ez-icon-apps:before { content: "\ea0c"; }
69
69
  .ez-icon-arrow-forward:before { content: "\ea0d"; }
70
70
  .ez-icon-arrow-upward:before { content: "\ea0e"; }
@@ -137,16 +137,8 @@ export class EzMuiltiSelectionList {
137
137
  }
138
138
  handleChangeSelectedItem(event) {
139
139
  const { detail: itemCheckSelected } = event;
140
- this.filteredOptions = this.filteredOptions.map(item => {
141
- if (item.label === itemCheckSelected.label) {
142
- return Object.assign(Object.assign({}, item), { check: itemCheckSelected.check });
143
- }
144
- return item;
145
- });
146
- this.clearInputs();
147
- }
148
- clearInputs() {
149
- this.filterInput ? (this.filterInput.value = '') : (this.searchInput.value = '');
140
+ const itemSelected = this.filteredOptions.find(item => item.label === itemCheckSelected.label);
141
+ itemSelected.check = itemCheckSelected.check;
150
142
  }
151
143
  buildViewList(hasDelete) {
152
144
  return (h(Fragment, null, this.displayOptionToCheckAllItems && (h("ez-check", { ref: (element) => (this.checkInput = element), label: "Selecionar todos", class: "multi-selection__select-all", onEzChange: this.handleChangeSelectAllItems.bind(this) })), h("ez-list", { class: "multi-selection__list", dataSource: this.displayOptions, listMode: "check", hoverFeedback: true, onEzCheckChange: this.handleChangeSelectedItem.bind(this), itemSlotBuilder: hasDelete ? this.buildDeleteIconSlot.bind(this) : null })));
@@ -107,6 +107,9 @@ export class EzNumberInput {
107
107
  this.ezCancelWaitingChange.emit();
108
108
  }
109
109
  handleBlur() {
110
+ if (!this._changePending) {
111
+ return;
112
+ }
110
113
  try {
111
114
  const parsedNumber = this.getParsedNumber();
112
115
  if (parsedNumber !== undefined && isNaN(parsedNumber)) {
@@ -77,17 +77,14 @@
77
77
 
78
78
  .popup__content {
79
79
  box-sizing: border-box;
80
- max-height: 100%;
80
+ height: 100%;
81
81
  width: 100%;
82
- display: grid;
83
- grid-template-rows: auto 1fr;
84
82
  }
85
83
 
86
84
  .popup__expandable-content {
87
85
  box-sizing: border-box;
88
86
  width: 100%;
89
- min-height: 100%;
90
- height: 100%;
87
+ height: calc(100% - 44px);
91
88
  }
92
89
 
93
90
  .popup__header {