@sankhyalabs/sankhyablocks 9.1.0-dev.6 → 9.1.0-dev.8

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 (89) hide show
  1. package/dist/cjs/{ClientSideExporterProvider-b4f112f5.js → ClientSideExporterProvider-6a4108c9.js} +1 -1
  2. package/dist/cjs/{dataunit-fetcher-05ed9547.js → dataunit-fetcher-c34a8217.js} +3 -0
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/pesquisa-grid_2.cjs.entry.js +1 -1
  5. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  6. package/dist/cjs/snk-actions-button_8.cjs.entry.js +4 -3
  7. package/dist/cjs/snk-application.cjs.entry.js +1 -1
  8. package/dist/cjs/snk-attach.cjs.entry.js +1 -1
  9. package/dist/cjs/snk-crud.cjs.entry.js +1 -1
  10. package/dist/cjs/snk-data-exporter.cjs.entry.js +2 -2
  11. package/dist/cjs/{snk-data-unit-8336edac.js → snk-data-unit-a4f9287b.js} +1 -1
  12. package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
  13. package/dist/cjs/snk-detail-view.cjs.entry.js +2 -2
  14. package/dist/cjs/snk-entity-list.cjs.entry.js +4 -2
  15. package/dist/cjs/snk-filter-bar_4.cjs.entry.js +41 -109
  16. package/dist/cjs/snk-filter-detail.cjs.entry.js +3 -1
  17. package/dist/cjs/snk-grid.cjs.entry.js +2 -2
  18. package/dist/cjs/{snk-guides-viewer-eb62127a.js → snk-guides-viewer-29298823.js} +1 -1
  19. package/dist/cjs/snk-guides-viewer.cjs.entry.js +2 -2
  20. package/dist/cjs/snk-personalized-filter-editor.cjs.entry.js +6 -4
  21. package/dist/cjs/snk-pesquisa.cjs.entry.js +1 -1
  22. package/dist/cjs/snk-simple-crud.cjs.entry.js +2 -2
  23. package/dist/collection/components/snk-entity-list/snk-entity-list.js +4 -2
  24. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-personalized-filter-editor/snk-personalized-filter-editor.js +6 -4
  25. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-detail.js +3 -1
  26. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.css +4 -0
  27. package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.js +49 -121
  28. package/dist/collection/components/snk-grid-config/snk-grid-config.js +1 -1
  29. package/dist/collection/components/snk-grid-config/snk-select-box/snk-select-box.js +20 -1
  30. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +3 -0
  31. package/dist/components/dataunit-fetcher.js +3 -0
  32. package/dist/components/snk-entity-list.js +4 -2
  33. package/dist/components/snk-filter-detail2.js +3 -1
  34. package/dist/components/snk-filter-item2.js +43 -111
  35. package/dist/components/snk-grid-config2.js +1 -1
  36. package/dist/components/snk-personalized-filter-editor.js +6 -4
  37. package/dist/components/snk-select-box2.js +4 -2
  38. package/dist/esm/{ClientSideExporterProvider-c56c2549.js → ClientSideExporterProvider-09dee1a3.js} +1 -1
  39. package/dist/esm/{dataunit-fetcher-41609933.js → dataunit-fetcher-1b78797a.js} +3 -0
  40. package/dist/esm/loader.js +1 -1
  41. package/dist/esm/pesquisa-grid_2.entry.js +1 -1
  42. package/dist/esm/sankhyablocks.js +1 -1
  43. package/dist/esm/snk-actions-button_8.entry.js +4 -3
  44. package/dist/esm/snk-application.entry.js +1 -1
  45. package/dist/esm/snk-attach.entry.js +1 -1
  46. package/dist/esm/snk-crud.entry.js +1 -1
  47. package/dist/esm/snk-data-exporter.entry.js +2 -2
  48. package/dist/esm/{snk-data-unit-a44c4cfd.js → snk-data-unit-330db397.js} +1 -1
  49. package/dist/esm/snk-data-unit.entry.js +2 -2
  50. package/dist/esm/snk-detail-view.entry.js +2 -2
  51. package/dist/esm/snk-entity-list.entry.js +4 -2
  52. package/dist/esm/snk-filter-bar_4.entry.js +42 -110
  53. package/dist/esm/snk-filter-detail.entry.js +3 -1
  54. package/dist/esm/snk-grid.entry.js +2 -2
  55. package/dist/esm/{snk-guides-viewer-68c32d00.js → snk-guides-viewer-9335318d.js} +1 -1
  56. package/dist/esm/snk-guides-viewer.entry.js +2 -2
  57. package/dist/esm/snk-personalized-filter-editor.entry.js +6 -4
  58. package/dist/esm/snk-pesquisa.entry.js +1 -1
  59. package/dist/esm/snk-simple-crud.entry.js +2 -2
  60. package/dist/sankhyablocks/{p-e9411bba.entry.js → p-02480593.entry.js} +1 -1
  61. package/dist/sankhyablocks/{p-117c76f4.entry.js → p-1079e61b.entry.js} +1 -1
  62. package/dist/sankhyablocks/p-162bddae.entry.js +1 -0
  63. package/dist/sankhyablocks/{p-4eafedb7.entry.js → p-1c69a957.entry.js} +1 -1
  64. package/dist/sankhyablocks/p-25209340.entry.js +1 -0
  65. package/dist/sankhyablocks/{p-a35114d4.js → p-37b4f642.js} +1 -1
  66. package/dist/sankhyablocks/{p-6e3b40fa.js → p-3b1d73f9.js} +1 -1
  67. package/dist/sankhyablocks/{p-8d61022c.entry.js → p-4119fd8b.entry.js} +1 -1
  68. package/dist/sankhyablocks/{p-ded76667.entry.js → p-5126b34e.entry.js} +1 -1
  69. package/dist/sankhyablocks/{p-0bc54da7.entry.js → p-5b31b239.entry.js} +1 -1
  70. package/dist/sankhyablocks/{p-48633f79.entry.js → p-60d3abf6.entry.js} +1 -1
  71. package/dist/sankhyablocks/{p-b5d46d99.entry.js → p-7c9815ea.entry.js} +1 -1
  72. package/dist/sankhyablocks/{p-67fe0ff3.entry.js → p-9a6fbf3d.entry.js} +1 -1
  73. package/dist/sankhyablocks/p-a2c6944d.entry.js +1 -0
  74. package/dist/sankhyablocks/{p-726563f9.entry.js → p-e56eb36b.entry.js} +1 -1
  75. package/dist/sankhyablocks/{p-0ea9dc32.entry.js → p-f442c8f6.entry.js} +1 -1
  76. package/dist/sankhyablocks/{p-e824d565.entry.js → p-f8b4cd80.entry.js} +1 -1
  77. package/dist/sankhyablocks/{p-344ee730.js → p-fa591f6f.js} +1 -1
  78. package/dist/sankhyablocks/{p-cfb29ae5.js → p-fc87708a.js} +1 -1
  79. package/dist/sankhyablocks/p-fd571197.entry.js +1 -0
  80. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  81. package/dist/types/components/snk-filter-bar/filter-item/snk-filter-detail.d.ts +1 -0
  82. package/dist/types/components/snk-filter-bar/filter-item/snk-filter-item.d.ts +10 -20
  83. package/dist/types/components/snk-grid-config/snk-select-box/snk-select-box.d.ts +4 -0
  84. package/dist/types/components.d.ts +8 -0
  85. package/package.json +1 -1
  86. package/dist/sankhyablocks/p-83c100f2.entry.js +0 -1
  87. package/dist/sankhyablocks/p-90805683.entry.js +0 -1
  88. package/dist/sankhyablocks/p-d53231ba.entry.js +0 -1
  89. package/dist/sankhyablocks/p-fe8c0d02.entry.js +0 -1
@@ -754,18 +754,13 @@ const SnkFilterBar = class {
754
754
  };
755
755
  SnkFilterBar.style = snkFilterBarCss;
756
756
 
757
+ const snkFilterItemCss = "ez-popover-core.sc-snk-filter-item{--ez-popover__box--z-index:var(--elevation--20, 20);--ez-popover__box--overlay-z-index:var(--elevation--16, 16)}";
758
+
757
759
  const SnkFilterItem = class {
758
760
  constructor(hostRef) {
759
761
  index$1.registerInstance(this, hostRef);
760
762
  this.visibleChanged = index$1.createEvent(this, "visibleChanged", 7);
761
763
  this.filterChange = index$1.createEvent(this, "filterChange", 3);
762
- this.innerClickCheck = (_floatingContainer, node) => {
763
- if (node.id != core.FloatingManager.MODAL_ELEMENT_ID) {
764
- return true;
765
- }
766
- this.detailIsVisible = false;
767
- return false;
768
- };
769
764
  this.detailIsVisible = undefined;
770
765
  this.config = undefined;
771
766
  this.getMessage = undefined;
@@ -774,57 +769,28 @@ const SnkFilterItem = class {
774
769
  observeDetailIsVisible(value) {
775
770
  this.visibleChanged.emit(value);
776
771
  }
772
+ /**
773
+ * Emitido quando o estado do filtro é alterado.
774
+ */
775
+ filterChangeListener() {
776
+ this.hideDetail();
777
+ }
777
778
  /**
778
779
  * Exibe os detalhes de um item da lista.
779
780
  */
780
781
  async showUp(open = false) {
781
- return new Promise(resolve => {
782
- var _a;
783
- this._filterItemElement.scrollIntoView({ behavior: "auto", block: "nearest", inline: "nearest" });
784
- if (open) {
785
- this._closeCallback = resolve;
786
- (_a = this._chipElement) === null || _a === void 0 ? void 0 : _a.blur();
787
- window.requestAnimationFrame(() => {
788
- this._floatingID = core.FloatingManager.float(this._popover, this._popoverContainer, this.getFloatOptions());
789
- this._popover.show();
790
- this.detailIsVisible = true;
791
- });
792
- }
793
- });
794
- }
795
- updatePosition() {
796
- if (this._floatingID == undefined) {
797
- return;
782
+ var _a;
783
+ this._filterItemElement.scrollIntoView({ behavior: "auto", block: "nearest", inline: "nearest" });
784
+ if (open) {
785
+ await ((_a = this._chipElement) === null || _a === void 0 ? void 0 : _a.setBlur());
786
+ await this._popover.showUnder(this._chipElement);
798
787
  }
799
- core.FloatingManager.updateFloatPosition(this._popover, this._popoverContainer, this.getFloatOptions());
800
- }
801
- getFloatOptions() {
802
- return {
803
- autoClose: true,
804
- innerClickTest: this.innerClickCheck,
805
- backClickListener: () => this.onDetailCloseCallback(),
806
- left: this.getOffsetLeft(),
807
- top: this.getOffsetTop(),
808
- useOverlay: true,
809
- overlayClassName: 'ez-scrim ez-scrim--light',
810
- isFixed: true
811
- };
812
788
  }
813
- getOffsetLeft() {
814
- const padding = getComputedStyle(this._filterItemElement).getPropertyValue("padding-left");
815
- const rect = this._filterItemElement.getBoundingClientRect();
816
- // Width baseado no conteudo do snk-filter-detail. Nesse momento ele retorna 0px pois ainda não foi criado em tela.
817
- const filterDetailWidth = 430;
818
- const adjustRightPosition = filterDetailWidth - (document.body.clientWidth - rect.left);
819
- return `calc(${rect.x}px + ${padding} - ${adjustRightPosition > 0 ? adjustRightPosition : 0}px)`;
820
- }
821
- getOffsetTop() {
822
- const rect = this._filterItemElement.getBoundingClientRect();
823
- return (rect.y + rect.height) + "px";
824
- }
825
- controlScrollPage() {
826
- window.removeEventListener("scroll", this.updatePosition.bind(this));
827
- window.addEventListener("scroll", this.updatePosition.bind(this));
789
+ /**
790
+ * Oculta os detalhes de um item da lista.
791
+ */
792
+ async hideDetail() {
793
+ await this._popover.hide();
828
794
  }
829
795
  getConfigChanges() {
830
796
  var _a;
@@ -837,51 +803,24 @@ const SnkFilterItem = class {
837
803
  const newValue = hasMultiValues ? configToBeCleared.value.map((valueItem) => (Object.assign(Object.assign({}, valueItem), { check: false }))) : undefined;
838
804
  return Object.assign(Object.assign({}, configToBeCleared), { value: newValue });
839
805
  }
840
- /**
841
- * Oculta os detalhes de um item da lista.
842
- */
843
- async hideDetail() {
844
- if (this.detailIsVisible) {
845
- if (this._floatingID != undefined) {
846
- core.FloatingManager.close(this._floatingID);
847
- }
806
+ clearFilter(event) {
807
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
808
+ if (this.canClearFilter()) {
809
+ const configChanged = this.getConfigChanges();
810
+ this.filterChange.emit(configChanged);
848
811
  }
849
- }
850
- onDetailCloseCallback() {
851
- this._floatingID = undefined;
852
- this.detailIsVisible = false;
853
- if (this._closeCallback) {
854
- this._closeCallback();
855
- this._closeCallback = undefined;
856
- }
857
- }
858
- //---------------------------------------------
859
- // Event handlers
860
- //---------------------------------------------
861
- clickListener(evt) {
862
- if ([this._chipElement, this._leftIconElement, this._rightIconElement].includes(evt.target)) {
863
- if (evt.target === this._rightIconElement && this.canClearFilter()) {
864
- const configChanged = this.getConfigChanges();
865
- this.filterChange.emit(configChanged);
866
- }
867
- else {
868
- if (this.detailIsVisible) {
869
- this.hideDetail();
870
- }
871
- else {
872
- this.showUp(true);
873
- }
874
- }
875
- evt.preventDefault();
876
- evt.stopImmediatePropagation();
877
- evt.stopPropagation();
812
+ else {
813
+ this.togglePopover();
878
814
  }
879
815
  }
880
- mouseDownListener(evt) {
881
- if (this.detailIsVisible && [this._chipElement, this._leftIconElement, this._rightIconElement].includes(evt.target)) {
882
- evt.preventDefault();
883
- evt.stopImmediatePropagation();
884
- evt.stopPropagation();
816
+ async togglePopover(event) {
817
+ event === null || event === void 0 ? void 0 : event.preventDefault();
818
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
819
+ if (this.detailIsVisible) {
820
+ await this.hideDetail();
821
+ }
822
+ else {
823
+ await this.showUp(true);
885
824
  }
886
825
  }
887
826
  getLabel(isTooltipLabel = false) {
@@ -1002,20 +941,6 @@ const SnkFilterItem = class {
1002
941
  core.ElementIDUtils.addIDInfo(this._filterItemElement);
1003
942
  this._idSnkFilterDetail = `filterDetail_${this.config.id}`;
1004
943
  }
1005
- this.controlScrollPage();
1006
- }
1007
- componentDidRender() {
1008
- if (this._floatingID == undefined) {
1009
- if (this._popover) {
1010
- this._popover.remove();
1011
- }
1012
- }
1013
- }
1014
- /**
1015
- * Emitido quando o estado do filtro é alterado.
1016
- */
1017
- filterChangeListener() {
1018
- this.hideDetail();
1019
944
  }
1020
945
  canClearFilter() {
1021
946
  const { value, groupedItems = [] } = this.config;
@@ -1046,21 +971,28 @@ const SnkFilterItem = class {
1046
971
  return (config.type !== filterItemType_enum.FilterItemType.MULTI_LIST && config.value !== undefined) || this.hasActiveElements(config.value);
1047
972
  }
1048
973
  getEnabledChip() {
974
+ if (this.detailIsVisible) {
975
+ return true;
976
+ }
1049
977
  if (this.config.type === filterItemType_enum.FilterItemType.PERSONALIZED) {
1050
978
  const { groupedItems = [] } = this.config;
1051
979
  return groupedItems.some(item => item.visible);
1052
980
  }
1053
981
  return this.hasActiveValue(this.config);
1054
982
  }
983
+ handleVisibilityPopover(event) {
984
+ this.detailIsVisible = event.detail;
985
+ }
1055
986
  render() {
1056
987
  const leftIcon = this.getLeftIconName();
1057
- return (index$1.h(index$1.Host, null, this.showChips && (index$1.h("ez-chip", { id: this.config.id, ref: ref => this._chipElement = ref, label: this.getLabel(), value: this.getEnabledChip() }, leftIcon && (index$1.h("ez-icon", { ref: ref => this._leftIconElement = ref, iconName: leftIcon, class: "ez-padding-right--small", slot: "leftIcon" })), index$1.h("ez-icon", { ref: ref => this._rightIconElement = ref, iconName: this.getRightIconName(), class: "ez-padding-left--small", slot: "rightIcon", id: "removeFilter" }))), index$1.h("section", { class: "ez-margin-top--small sc-snk-filter-bar snk-filter__popover-container", ref: elem => this._popoverContainer = elem }, index$1.h("snk-filter-detail", { config: this.config, getMessage: this.getMessage, class: "sc-snk-filter-bar snk-filter__popover ez-padding--small ez-elevation--16", ref: elem => this._popover = elem, key: this.config.id, "data-element-id": this._idSnkFilterDetail, showHardFixed: this.showChips }))));
988
+ return (index$1.h(index$1.Host, null, this.showChips && (index$1.h("ez-chip", { id: this.config.id, ref: ref => this._chipElement = ref, label: this.getLabel(), value: this.getEnabledChip(), onClick: (event) => this.togglePopover(event), disableAutoUpdateValue: true }, leftIcon && (index$1.h("ez-icon", { ref: ref => this._leftIconElement = ref, iconName: leftIcon, class: "ez-padding-right--small", slot: "leftIcon" })), index$1.h("ez-icon", { ref: ref => this._rightIconElement = ref, iconName: this.getRightIconName(), class: "ez-padding-left--small", slot: "rightIcon", id: "removeFilter", onClick: (event) => this.clearFilter(event) }))), index$1.h("ez-popover-core", { ref: elem => this._popover = elem, onEzVisibilityChange: (event) => this.handleVisibilityPopover(event) }, index$1.h("snk-filter-detail", { key: this.config.id, config: this.config, getMessage: this.getMessage, class: "sc-snk-filter-bar snk-filter__popover ez-padding--small ez-elevation--16", "data-element-id": this._idSnkFilterDetail, showHardFixed: this.showChips }))));
1058
989
  }
1059
990
  get _filterItemElement() { return index$1.getElement(this); }
1060
991
  static get watchers() { return {
1061
992
  "detailIsVisible": ["observeDetailIsVisible"]
1062
993
  }; }
1063
994
  };
995
+ SnkFilterItem.style = snkFilterItemCss;
1064
996
 
1065
997
  const SHOW_MORE_ITEM_NAME = "__SHOWMORE__";
1066
998
  const MAX_FILTERS = 5;
@@ -29,6 +29,7 @@ const SnkFilterDetail = class {
29
29
  var _a, _b;
30
30
  this._editor && (this._editor["config"] = newValue);
31
31
  (_b = (_a = this._editor) === null || _a === void 0 ? void 0 : _a["reloadList"]) === null || _b === void 0 ? void 0 : _b.call(_a);
32
+ this._customElementObject = this.getContentEditor();
32
33
  }
33
34
  componentDidLoad() {
34
35
  if (this._element) {
@@ -165,9 +166,10 @@ const SnkFilterDetail = class {
165
166
  }
166
167
  componentWillLoad() {
167
168
  this.originalConfig = core.ObjectUtils.copy(this.config);
169
+ this._customElementObject = this.getContentEditor();
168
170
  }
169
171
  render() {
170
- const { tag: CustomElement, props } = this.getContentEditor();
172
+ const { tag: CustomElement, props } = this._customElementObject;
171
173
  return (index.h(index.Host, null, index.h("div", { class: "col ez-col--sd-12 ez-align--right ez-padding-medium ez-flex--align-items-center" }, index.h("div", { class: "ez-text ez-title ez-title--small ez-padding--small sc-snk-filter-bar snk-filter-item__editor-header" }, this.config.detailTitle), this.getPopUpHeaderButtons()), index.h(CustomElement, Object.assign({ maxHeightList: '240px', ref: ref => this._editor = ref, value: this.config.value, config: this.config, onKeyDown: evt => this.onKeyDonwListener(evt), "data-element-id": this._idContentEditor, getMessage: this.getMessage, rightListSlotBuilder: item => this.buildRightSlot(item) }, props)), index.h("hr", { class: "sc-snk-filter-bar snk-filter__popover-rule" }), index.h("div", { class: "ez-col ez-col--sd-12 ez-align--right" }, this.filterCanBeCleared() && (index.h("ez-button", { label: this.getMessage("snkFilterBar.cleanFilter"), onClick: () => this.clear(), size: "small" })), index.h("ez-button", { ref: ref => this._applyButton = ref, label: this.getMessage("snkFilterBar.applyFilter"), onClick: () => this.apply(), size: "small", class: "ez-button--primary ez-padding-left--medium" }))));
172
174
  }
173
175
  get _element() { return index.getElement(this); }
@@ -9,13 +9,13 @@ const ConfigStorage = require('./ConfigStorage-34aa43d8.js');
9
9
  const index$1 = require('./index-e3e39724.js');
10
10
  const taskbarProcessor = require('./taskbar-processor-2fba34a8.js');
11
11
  const index$2 = require('./index-0ad2baeb.js');
12
- const ClientSideExporterProvider = require('./ClientSideExporterProvider-b4f112f5.js');
12
+ const ClientSideExporterProvider = require('./ClientSideExporterProvider-6a4108c9.js');
13
13
  const DataUnit = require('@sankhyalabs/core/dist/dataunit/DataUnit');
14
14
  require('./DataFetcher-e23a263b.js');
15
15
  require('./ISave-e0be2362.js');
16
16
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
17
17
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
18
- require('./dataunit-fetcher-05ed9547.js');
18
+ require('./dataunit-fetcher-c34a8217.js');
19
19
  require('./filter-item-type.enum-a7ffdaa6.js');
20
20
  require('./form-config-fetcher-d8b78403.js');
21
21
  require('./constants-6d82e405.js');
@@ -12,7 +12,7 @@ require('./ISave-e0be2362.js');
12
12
  const index$1 = require('./index-e3e39724.js');
13
13
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
14
14
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
15
- require('./dataunit-fetcher-05ed9547.js');
15
+ require('./dataunit-fetcher-c34a8217.js');
16
16
  require('./filter-item-type.enum-a7ffdaa6.js');
17
17
  require('./form-config-fetcher-d8b78403.js');
18
18
  const DataUnit = require('@sankhyalabs/core/dist/dataunit/DataUnit');
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const snkGuidesViewer = require('./snk-guides-viewer-eb62127a.js');
5
+ const snkGuidesViewer = require('./snk-guides-viewer-29298823.js');
6
6
  require('./index-1cf293c1.js');
7
7
  require('@sankhyalabs/core');
8
8
  require('./SnkFormConfigManager-61bf3266.js');
@@ -20,7 +20,7 @@ require('./index-e3e39724.js');
20
20
  require('./index-0ad2baeb.js');
21
21
  require('./ISave-e0be2362.js');
22
22
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
23
- require('./dataunit-fetcher-05ed9547.js');
23
+ require('./dataunit-fetcher-c34a8217.js');
24
24
  require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
25
25
  require('@sankhyalabs/core/dist/utils/SortingUtils');
26
26
  require('./ResourceIDUtils-5ff86aa7.js');
@@ -82,21 +82,23 @@ const SnkFilterPersonalized = class {
82
82
  var _a, _b;
83
83
  const params = (_b = (_a = parentItem === null || parentItem === void 0 ? void 0 : parentItem.props) === null || _a === void 0 ? void 0 : _a.personalizedFilter) === null || _b === void 0 ? void 0 : _b.parameters;
84
84
  return params.map((param, index$1) => {
85
- var _a, _b, _c;
85
+ var _a, _b, _c, _d;
86
86
  const formProp = Object.assign(Object.assign({}, param), { id: parentItem.id });
87
87
  const value = (_a = parentItem.value) === null || _a === void 0 ? void 0 : _a[index$1];
88
88
  const elemId = 'param_' + index$1;
89
89
  switch (param.userInterface) {
90
90
  case core.UserInterface.SEARCH:
91
- return index.h("ez-search", { id: elemId, suppressEmptyOption: true, value: value, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp), label: param.label, optionLoader: ({ mode, argument }) => this.doSearch(mode, argument, param) });
91
+ const isSearchPlus = ((_b = this.config.props) === null || _b === void 0 ? void 0 : _b["useSearchPlus"]) == true;
92
+ const TagName = isSearchPlus ? "ez-search-plus" : "ez-search";
93
+ return index.h(TagName, { id: elemId, suppressEmptyOption: true, value: value, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp), label: param.label, optionLoader: ({ mode, argument }) => this.doSearch(mode, argument, param) });
92
94
  case core.UserInterface.SWITCH:
93
95
  case core.UserInterface.CHECKBOX:
94
96
  const mode = core.UserInterface.SWITCH === param.userInterface ? utils.CheckMode.SWITCH : utils.CheckMode.REGULAR;
95
97
  return index.h("ez-check", { id: elemId, class: "ez-padding-bottom--medium", mode: mode, value: value, label: param.label, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp) });
96
98
  case core.UserInterface.DECIMALNUMBER:
97
- return index.h("ez-number-input", { id: elemId, label: param.label, value: value, precision: ((_b = param.props) === null || _b === void 0 ? void 0 : _b.precision) || 2, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp) });
99
+ return index.h("ez-number-input", { id: elemId, label: param.label, value: value, precision: ((_c = param.props) === null || _c === void 0 ? void 0 : _c.precision) || 2, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp) });
98
100
  case core.UserInterface.INTEGERNUMBER:
99
- return index.h("ez-number-input", { id: elemId, label: param.label, value: value, precision: (_c = param.props) === null || _c === void 0 ? void 0 : _c.precision, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp) });
101
+ return index.h("ez-number-input", { id: elemId, label: param.label, value: value, precision: (_d = param.props) === null || _d === void 0 ? void 0 : _d.precision, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp) });
100
102
  case core.UserInterface.OPTIONSELECTOR:
101
103
  return index.h("ez-combo-box", { id: elemId, label: param.label, value: value, options: param.options, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp) });
102
104
  case core.UserInterface.DATE:
@@ -9,7 +9,7 @@ require('./DataFetcher-e23a263b.js');
9
9
  require('./index-e3e39724.js');
10
10
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
11
11
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
12
- require('./dataunit-fetcher-05ed9547.js');
12
+ require('./dataunit-fetcher-c34a8217.js');
13
13
  require('./filter-item-type.enum-a7ffdaa6.js');
14
14
  require('./form-config-fetcher-d8b78403.js');
15
15
  require('./constants-6d82e405.js');
@@ -9,11 +9,11 @@ const constants = require('./constants-6d82e405.js');
9
9
  const taskbarElements = require('./taskbar-elements-3b74cd21.js');
10
10
  require('./DataFetcher-e23a263b.js');
11
11
  require('./ISave-e0be2362.js');
12
- const ClientSideExporterProvider = require('./ClientSideExporterProvider-b4f112f5.js');
12
+ const ClientSideExporterProvider = require('./ClientSideExporterProvider-6a4108c9.js');
13
13
  const index$1 = require('./index-e3e39724.js');
14
14
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
15
15
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
16
- const dataunitFetcher = require('./dataunit-fetcher-05ed9547.js');
16
+ const dataunitFetcher = require('./dataunit-fetcher-c34a8217.js');
17
17
  require('./filter-item-type.enum-a7ffdaa6.js');
18
18
  const formConfigFetcher = require('./form-config-fetcher-d8b78403.js');
19
19
  const taskbarProcessor = require('./taskbar-processor-2fba34a8.js');
@@ -90,8 +90,10 @@ export class SnkEntityList {
90
90
  return (_d = (_b = (_a = config.value) === null || _a === void 0 ? void 0 : _a.elements) !== null && _b !== void 0 ? _b : (_c = config === null || config === void 0 ? void 0 : config.value) === null || _c === void 0 ? void 0 : _c.members) !== null && _d !== void 0 ? _d : config === null || config === void 0 ? void 0 : config.value;
91
91
  }
92
92
  render() {
93
- var _a, _b;
94
- return (h(Host, null, h("ez-search", { ref: elem => this._searchElement = elem, optionLoader: argument => this.optionLoader(argument), value: this._searchValue, label: (_a = this.config) === null || _a === void 0 ? void 0 : _a.label, onEzChange: evt => this.onEzSearchChange(evt), suppressEmptyOption: true }), ((_b = this._ezListSource) === null || _b === void 0 ? void 0 : _b.length) > 0 && (h("label", { class: "label" }, this.getMessage("snkEntityList.selected"))), h("div", { style: this.maxHeightList ? { 'max-height': this.maxHeightList } : {}, class: { "snk-entity-list--overflow": !!this.maxHeightList } }, h("ez-list", { ref: (el) => this._ezList = el, id: "snkEntityList", listMode: "check", dataSource: this._ezListSource, hoverFeedback: true, itemSlotBuilder: this.rightListSlotBuilder, onEzCheckChange: evt => this.ezListChangeListener(evt) }))));
93
+ var _a, _b, _c;
94
+ const isSearchPlus = ((_a = this.config.props) === null || _a === void 0 ? void 0 : _a["useSearchPlus"]) == true;
95
+ const TagName = isSearchPlus ? "ez-search-plus" : "ez-search";
96
+ return (h(Host, null, h(TagName, { ref: elem => this._searchElement = elem, optionLoader: argument => this.optionLoader(argument), value: this._searchValue, label: (_b = this.config) === null || _b === void 0 ? void 0 : _b.label, onEzChange: evt => this.onEzSearchChange(evt), suppressEmptyOption: true }), ((_c = this._ezListSource) === null || _c === void 0 ? void 0 : _c.length) > 0 && (h("label", { class: "label" }, this.getMessage("snkEntityList.selected"))), h("div", { style: this.maxHeightList ? { 'max-height': this.maxHeightList } : {}, class: { "snk-entity-list--overflow": !!this.maxHeightList } }, h("ez-list", { ref: (el) => this._ezList = el, id: "snkEntityList", listMode: "check", dataSource: this._ezListSource, hoverFeedback: true, itemSlotBuilder: this.rightListSlotBuilder, onEzCheckChange: evt => this.ezListChangeListener(evt) }))));
95
97
  }
96
98
  static get is() { return "snk-entity-list"; }
97
99
  static get encapsulation() { return "scoped"; }
@@ -70,21 +70,23 @@ export class SnkFilterPersonalized {
70
70
  var _a, _b;
71
71
  const params = (_b = (_a = parentItem === null || parentItem === void 0 ? void 0 : parentItem.props) === null || _a === void 0 ? void 0 : _a.personalizedFilter) === null || _b === void 0 ? void 0 : _b.parameters;
72
72
  return params.map((param, index) => {
73
- var _a, _b, _c;
73
+ var _a, _b, _c, _d;
74
74
  const formProp = Object.assign(Object.assign({}, param), { id: parentItem.id });
75
75
  const value = (_a = parentItem.value) === null || _a === void 0 ? void 0 : _a[index];
76
76
  const elemId = 'param_' + index;
77
77
  switch (param.userInterface) {
78
78
  case UserInterface.SEARCH:
79
- return h("ez-search", { id: elemId, suppressEmptyOption: true, value: value, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp), label: param.label, optionLoader: ({ mode, argument }) => this.doSearch(mode, argument, param) });
79
+ const isSearchPlus = ((_b = this.config.props) === null || _b === void 0 ? void 0 : _b["useSearchPlus"]) == true;
80
+ const TagName = isSearchPlus ? "ez-search-plus" : "ez-search";
81
+ return h(TagName, { id: elemId, suppressEmptyOption: true, value: value, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp), label: param.label, optionLoader: ({ mode, argument }) => this.doSearch(mode, argument, param) });
80
82
  case UserInterface.SWITCH:
81
83
  case UserInterface.CHECKBOX:
82
84
  const mode = UserInterface.SWITCH === param.userInterface ? CheckMode.SWITCH : CheckMode.REGULAR;
83
85
  return h("ez-check", { id: elemId, class: "ez-padding-bottom--medium", mode: mode, value: value, label: param.label, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp) });
84
86
  case UserInterface.DECIMALNUMBER:
85
- return h("ez-number-input", { id: elemId, label: param.label, value: value, precision: ((_b = param.props) === null || _b === void 0 ? void 0 : _b.precision) || 2, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp) });
87
+ return h("ez-number-input", { id: elemId, label: param.label, value: value, precision: ((_c = param.props) === null || _c === void 0 ? void 0 : _c.precision) || 2, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp) });
86
88
  case UserInterface.INTEGERNUMBER:
87
- return h("ez-number-input", { id: elemId, label: param.label, value: value, precision: (_c = param.props) === null || _c === void 0 ? void 0 : _c.precision, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp) });
89
+ return h("ez-number-input", { id: elemId, label: param.label, value: value, precision: (_d = param.props) === null || _d === void 0 ? void 0 : _d.precision, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp) });
88
90
  case UserInterface.OPTIONSELECTOR:
89
91
  return h("ez-combo-box", { id: elemId, label: param.label, value: value, options: param.options, onEzChange: evt => this.handleFilterItemChange(evt.detail, formProp) });
90
92
  case UserInterface.DATE:
@@ -21,6 +21,7 @@ export class SnkFilterDetail {
21
21
  var _a, _b;
22
22
  this._editor && (this._editor["config"] = newValue);
23
23
  (_b = (_a = this._editor) === null || _a === void 0 ? void 0 : _a["reloadList"]) === null || _b === void 0 ? void 0 : _b.call(_a);
24
+ this._customElementObject = this.getContentEditor();
24
25
  }
25
26
  componentDidLoad() {
26
27
  if (this._element) {
@@ -157,9 +158,10 @@ export class SnkFilterDetail {
157
158
  }
158
159
  componentWillLoad() {
159
160
  this.originalConfig = ObjectUtils.copy(this.config);
161
+ this._customElementObject = this.getContentEditor();
160
162
  }
161
163
  render() {
162
- const { tag: CustomElement, props } = this.getContentEditor();
164
+ const { tag: CustomElement, props } = this._customElementObject;
163
165
  return (h(Host, null, h("div", { class: "col ez-col--sd-12 ez-align--right ez-padding-medium ez-flex--align-items-center" }, h("div", { class: "ez-text ez-title ez-title--small ez-padding--small sc-snk-filter-bar snk-filter-item__editor-header" }, this.config.detailTitle), this.getPopUpHeaderButtons()), h(CustomElement, Object.assign({ maxHeightList: '240px', ref: ref => this._editor = ref, value: this.config.value, config: this.config, onKeyDown: evt => this.onKeyDonwListener(evt), "data-element-id": this._idContentEditor, getMessage: this.getMessage, rightListSlotBuilder: item => this.buildRightSlot(item) }, props)), h("hr", { class: "sc-snk-filter-bar snk-filter__popover-rule" }), h("div", { class: "ez-col ez-col--sd-12 ez-align--right" }, this.filterCanBeCleared() && (h("ez-button", { label: this.getMessage("snkFilterBar.cleanFilter"), onClick: () => this.clear(), size: "small" })), h("ez-button", { ref: ref => this._applyButton = ref, label: this.getMessage("snkFilterBar.applyFilter"), onClick: () => this.apply(), size: "small", class: "ez-button--primary ez-padding-left--medium" }))));
164
166
  }
165
167
  static get is() { return "snk-filter-detail"; }
@@ -0,0 +1,4 @@
1
+ ez-popover-core {
2
+ --ez-popover__box--z-index: var(--elevation--20, 20);
3
+ --ez-popover__box--overlay-z-index: var(--elevation--16, 16);
4
+ }
@@ -1,16 +1,9 @@
1
- import { ElementIDUtils, FloatingManager, DateUtils, MaskFormatter } from '@sankhyalabs/core';
1
+ import { ElementIDUtils, DateUtils, MaskFormatter } from '@sankhyalabs/core';
2
2
  import { h, Host } from '@stencil/core';
3
3
  import FilterItemType from './filter-item-type.enum';
4
4
  import { FilterNumberVariation } from './editors/enum/filterNumberVariation';
5
5
  export class SnkFilterItem {
6
6
  constructor() {
7
- this.innerClickCheck = (_floatingContainer, node) => {
8
- if (node.id != FloatingManager.MODAL_ELEMENT_ID) {
9
- return true;
10
- }
11
- this.detailIsVisible = false;
12
- return false;
13
- };
14
7
  this.detailIsVisible = undefined;
15
8
  this.config = undefined;
16
9
  this.getMessage = undefined;
@@ -19,57 +12,28 @@ export class SnkFilterItem {
19
12
  observeDetailIsVisible(value) {
20
13
  this.visibleChanged.emit(value);
21
14
  }
15
+ /**
16
+ * Emitido quando o estado do filtro é alterado.
17
+ */
18
+ filterChangeListener() {
19
+ this.hideDetail();
20
+ }
22
21
  /**
23
22
  * Exibe os detalhes de um item da lista.
24
23
  */
25
24
  async showUp(open = false) {
26
- return new Promise(resolve => {
27
- var _a;
28
- this._filterItemElement.scrollIntoView({ behavior: "auto", block: "nearest", inline: "nearest" });
29
- if (open) {
30
- this._closeCallback = resolve;
31
- (_a = this._chipElement) === null || _a === void 0 ? void 0 : _a.blur();
32
- window.requestAnimationFrame(() => {
33
- this._floatingID = FloatingManager.float(this._popover, this._popoverContainer, this.getFloatOptions());
34
- this._popover.show();
35
- this.detailIsVisible = true;
36
- });
37
- }
38
- });
39
- }
40
- updatePosition() {
41
- if (this._floatingID == undefined) {
42
- return;
25
+ var _a;
26
+ this._filterItemElement.scrollIntoView({ behavior: "auto", block: "nearest", inline: "nearest" });
27
+ if (open) {
28
+ await ((_a = this._chipElement) === null || _a === void 0 ? void 0 : _a.setBlur());
29
+ await this._popover.showUnder(this._chipElement);
43
30
  }
44
- FloatingManager.updateFloatPosition(this._popover, this._popoverContainer, this.getFloatOptions());
45
- }
46
- getFloatOptions() {
47
- return {
48
- autoClose: true,
49
- innerClickTest: this.innerClickCheck,
50
- backClickListener: () => this.onDetailCloseCallback(),
51
- left: this.getOffsetLeft(),
52
- top: this.getOffsetTop(),
53
- useOverlay: true,
54
- overlayClassName: 'ez-scrim ez-scrim--light',
55
- isFixed: true
56
- };
57
- }
58
- getOffsetLeft() {
59
- const padding = getComputedStyle(this._filterItemElement).getPropertyValue("padding-left");
60
- const rect = this._filterItemElement.getBoundingClientRect();
61
- // Width baseado no conteudo do snk-filter-detail. Nesse momento ele retorna 0px pois ainda não foi criado em tela.
62
- const filterDetailWidth = 430;
63
- const adjustRightPosition = filterDetailWidth - (document.body.clientWidth - rect.left);
64
- return `calc(${rect.x}px + ${padding} - ${adjustRightPosition > 0 ? adjustRightPosition : 0}px)`;
65
31
  }
66
- getOffsetTop() {
67
- const rect = this._filterItemElement.getBoundingClientRect();
68
- return (rect.y + rect.height) + "px";
69
- }
70
- controlScrollPage() {
71
- window.removeEventListener("scroll", this.updatePosition.bind(this));
72
- window.addEventListener("scroll", this.updatePosition.bind(this));
32
+ /**
33
+ * Oculta os detalhes de um item da lista.
34
+ */
35
+ async hideDetail() {
36
+ await this._popover.hide();
73
37
  }
74
38
  getConfigChanges() {
75
39
  var _a;
@@ -82,51 +46,24 @@ export class SnkFilterItem {
82
46
  const newValue = hasMultiValues ? configToBeCleared.value.map((valueItem) => (Object.assign(Object.assign({}, valueItem), { check: false }))) : undefined;
83
47
  return Object.assign(Object.assign({}, configToBeCleared), { value: newValue });
84
48
  }
85
- /**
86
- * Oculta os detalhes de um item da lista.
87
- */
88
- async hideDetail() {
89
- if (this.detailIsVisible) {
90
- if (this._floatingID != undefined) {
91
- FloatingManager.close(this._floatingID);
92
- }
49
+ clearFilter(event) {
50
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
51
+ if (this.canClearFilter()) {
52
+ const configChanged = this.getConfigChanges();
53
+ this.filterChange.emit(configChanged);
93
54
  }
94
- }
95
- onDetailCloseCallback() {
96
- this._floatingID = undefined;
97
- this.detailIsVisible = false;
98
- if (this._closeCallback) {
99
- this._closeCallback();
100
- this._closeCallback = undefined;
55
+ else {
56
+ this.togglePopover();
101
57
  }
102
58
  }
103
- //---------------------------------------------
104
- // Event handlers
105
- //---------------------------------------------
106
- clickListener(evt) {
107
- if ([this._chipElement, this._leftIconElement, this._rightIconElement].includes(evt.target)) {
108
- if (evt.target === this._rightIconElement && this.canClearFilter()) {
109
- const configChanged = this.getConfigChanges();
110
- this.filterChange.emit(configChanged);
111
- }
112
- else {
113
- if (this.detailIsVisible) {
114
- this.hideDetail();
115
- }
116
- else {
117
- this.showUp(true);
118
- }
119
- }
120
- evt.preventDefault();
121
- evt.stopImmediatePropagation();
122
- evt.stopPropagation();
59
+ async togglePopover(event) {
60
+ event === null || event === void 0 ? void 0 : event.preventDefault();
61
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
62
+ if (this.detailIsVisible) {
63
+ await this.hideDetail();
123
64
  }
124
- }
125
- mouseDownListener(evt) {
126
- if (this.detailIsVisible && [this._chipElement, this._leftIconElement, this._rightIconElement].includes(evt.target)) {
127
- evt.preventDefault();
128
- evt.stopImmediatePropagation();
129
- evt.stopPropagation();
65
+ else {
66
+ await this.showUp(true);
130
67
  }
131
68
  }
132
69
  getLabel(isTooltipLabel = false) {
@@ -247,20 +184,6 @@ export class SnkFilterItem {
247
184
  ElementIDUtils.addIDInfo(this._filterItemElement);
248
185
  this._idSnkFilterDetail = `filterDetail_${this.config.id}`;
249
186
  }
250
- this.controlScrollPage();
251
- }
252
- componentDidRender() {
253
- if (this._floatingID == undefined) {
254
- if (this._popover) {
255
- this._popover.remove();
256
- }
257
- }
258
- }
259
- /**
260
- * Emitido quando o estado do filtro é alterado.
261
- */
262
- filterChangeListener() {
263
- this.hideDetail();
264
187
  }
265
188
  canClearFilter() {
266
189
  const { value, groupedItems = [] } = this.config;
@@ -291,17 +214,34 @@ export class SnkFilterItem {
291
214
  return (config.type !== FilterItemType.MULTI_LIST && config.value !== undefined) || this.hasActiveElements(config.value);
292
215
  }
293
216
  getEnabledChip() {
217
+ if (this.detailIsVisible) {
218
+ return true;
219
+ }
294
220
  if (this.config.type === FilterItemType.PERSONALIZED) {
295
221
  const { groupedItems = [] } = this.config;
296
222
  return groupedItems.some(item => item.visible);
297
223
  }
298
224
  return this.hasActiveValue(this.config);
299
225
  }
226
+ handleVisibilityPopover(event) {
227
+ this.detailIsVisible = event.detail;
228
+ }
300
229
  render() {
301
230
  const leftIcon = this.getLeftIconName();
302
- return (h(Host, null, this.showChips && (h("ez-chip", { id: this.config.id, ref: ref => this._chipElement = ref, label: this.getLabel(), value: this.getEnabledChip() }, leftIcon && (h("ez-icon", { ref: ref => this._leftIconElement = ref, iconName: leftIcon, class: "ez-padding-right--small", slot: "leftIcon" })), h("ez-icon", { ref: ref => this._rightIconElement = ref, iconName: this.getRightIconName(), class: "ez-padding-left--small", slot: "rightIcon", id: "removeFilter" }))), h("section", { class: "ez-margin-top--small sc-snk-filter-bar snk-filter__popover-container", ref: elem => this._popoverContainer = elem }, h("snk-filter-detail", { config: this.config, getMessage: this.getMessage, class: "sc-snk-filter-bar snk-filter__popover ez-padding--small ez-elevation--16", ref: elem => this._popover = elem, key: this.config.id, "data-element-id": this._idSnkFilterDetail, showHardFixed: this.showChips }))));
231
+ return (h(Host, null, this.showChips && (h("ez-chip", { id: this.config.id, ref: ref => this._chipElement = ref, label: this.getLabel(), value: this.getEnabledChip(), onClick: (event) => this.togglePopover(event), disableAutoUpdateValue: true }, leftIcon && (h("ez-icon", { ref: ref => this._leftIconElement = ref, iconName: leftIcon, class: "ez-padding-right--small", slot: "leftIcon" })), h("ez-icon", { ref: ref => this._rightIconElement = ref, iconName: this.getRightIconName(), class: "ez-padding-left--small", slot: "rightIcon", id: "removeFilter", onClick: (event) => this.clearFilter(event) }))), h("ez-popover-core", { ref: elem => this._popover = elem, onEzVisibilityChange: (event) => this.handleVisibilityPopover(event) }, h("snk-filter-detail", { key: this.config.id, config: this.config, getMessage: this.getMessage, class: "sc-snk-filter-bar snk-filter__popover ez-padding--small ez-elevation--16", "data-element-id": this._idSnkFilterDetail, showHardFixed: this.showChips }))));
303
232
  }
304
233
  static get is() { return "snk-filter-item"; }
234
+ static get encapsulation() { return "scoped"; }
235
+ static get originalStyleUrls() {
236
+ return {
237
+ "$": ["snk-filter-item.css"]
238
+ };
239
+ }
240
+ static get styleUrls() {
241
+ return {
242
+ "$": ["snk-filter-item.css"]
243
+ };
244
+ }
305
245
  static get properties() {
306
246
  return {
307
247
  "config": {
@@ -448,18 +388,6 @@ export class SnkFilterItem {
448
388
  }
449
389
  static get listeners() {
450
390
  return [{
451
- "name": "click",
452
- "method": "clickListener",
453
- "target": undefined,
454
- "capture": true,
455
- "passive": false
456
- }, {
457
- "name": "mousedown",
458
- "method": "mouseDownListener",
459
- "target": undefined,
460
- "capture": true,
461
- "passive": false
462
- }, {
463
391
  "name": "filterChange",
464
392
  "method": "filterChangeListener",
465
393
  "target": undefined,