@sankhyalabs/ezui 2.12.0 → 2.14.0-develop.1

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 (106) hide show
  1. package/dist/cjs/{ez-tree.cjs.entry.js → ez-filter-input_3.cjs.entry.js} +103 -16
  2. package/dist/cjs/ez-form.cjs.entry.js +325 -184
  3. package/dist/cjs/ez-guide-navigator.cjs.entry.js +339 -0
  4. package/dist/cjs/ezui.cjs.js +1 -1
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/collection/collection-manifest.json +1 -1
  7. package/dist/collection/components/ez-form/ez-form.css +1 -1
  8. package/dist/collection/components/ez-form/ez-form.js +20 -16
  9. package/dist/collection/components/ez-form/fieldbuilder/FieldBuilder.js +48 -0
  10. package/dist/collection/components/{ez-form-view/fieldbuilder/templates → ez-form/fieldbuilder/tpl}/CheckBox.tpl.js +4 -4
  11. package/dist/collection/components/{ez-form-view/fieldbuilder/templates → ez-form/fieldbuilder/tpl}/ComboBox.tpl.js +2 -2
  12. package/dist/collection/components/{ez-form-view/fieldbuilder/templates → ez-form/fieldbuilder/tpl}/DateInput.tpl.js +1 -1
  13. package/dist/collection/components/{ez-form-view/fieldbuilder/templates → ez-form/fieldbuilder/tpl}/NumberInput.tpl.js +3 -3
  14. package/dist/collection/components/ez-form/structure/FormItem.js +11 -0
  15. package/dist/collection/components/ez-form/{FormMetadata.js → structure/FormMetadata.js} +53 -38
  16. package/dist/collection/components/ez-form/structure/FormSheet.js +6 -0
  17. package/dist/collection/components/ez-guide-navigator/Guide.js +200 -0
  18. package/dist/collection/components/ez-guide-navigator/ez-guide-navigator.css +53 -0
  19. package/dist/collection/components/ez-guide-navigator/ez-guide-navigator.js +230 -0
  20. package/dist/collection/components/ez-tree/ez-tree.js +5 -5
  21. package/dist/collection/components/ez-tree/subcomponents/TreeItem.js +1 -1
  22. package/dist/collection/components/ez-tree/types/Tree.js +0 -11
  23. package/dist/custom-elements/index.d.ts +6 -6
  24. package/dist/custom-elements/index.js +667 -337
  25. package/dist/esm/{ez-tree.entry.js → ez-filter-input_3.entry.js} +103 -18
  26. package/dist/esm/ez-form.entry.js +327 -186
  27. package/dist/esm/ez-guide-navigator.entry.js +335 -0
  28. package/dist/esm/ezui.js +1 -1
  29. package/dist/esm/loader.js +1 -1
  30. package/dist/ezui/ezui.esm.js +1 -1
  31. package/dist/ezui/p-6500a260.entry.js +1 -0
  32. package/dist/ezui/p-6c45dc64.entry.js +1 -0
  33. package/dist/ezui/p-fa2f4ea5.entry.js +1 -0
  34. package/dist/types/components/ez-form/DataBinder.d.ts +1 -1
  35. package/dist/types/components/ez-form/ez-form.d.ts +3 -4
  36. package/dist/types/components/ez-form/fieldbuilder/FieldBuilder.d.ts +2 -0
  37. package/dist/types/components/ez-form/fieldbuilder/tpl/CheckBox.tpl.d.ts +3 -0
  38. package/dist/types/components/ez-form/fieldbuilder/tpl/ComboBox.tpl.d.ts +6 -0
  39. package/dist/types/components/ez-form/fieldbuilder/tpl/DateInput.tpl.d.ts +15 -0
  40. package/dist/types/components/ez-form/fieldbuilder/tpl/FileInput.tpl.d.ts +5 -0
  41. package/dist/types/components/ez-form/fieldbuilder/tpl/NumberInput.tpl.d.ts +7 -0
  42. package/dist/types/components/ez-form/fieldbuilder/tpl/SearchInput.tpl.d.ts +6 -0
  43. package/dist/types/components/ez-form/fieldbuilder/tpl/TextArea.tpl.d.ts +5 -0
  44. package/dist/types/components/ez-form/fieldbuilder/tpl/TextInput.tpl.d.ts +5 -0
  45. package/dist/types/components/ez-form/store/form.slice.d.ts +2 -2
  46. package/dist/types/components/ez-form/structure/FormItem.d.ts +9 -0
  47. package/dist/types/components/ez-form/{FormMetadata.d.ts → structure/FormMetadata.d.ts} +5 -2
  48. package/dist/types/components/ez-form/structure/FormSheet.d.ts +10 -0
  49. package/dist/types/components/ez-guide-navigator/Guide.d.ts +69 -0
  50. package/dist/types/components/ez-tree/types/Tree.d.ts +0 -1
  51. package/dist/types/components.d.ts +41 -26
  52. package/dist/types/interfaces/ez-form/IFieldMetadata.d.ts +6 -0
  53. package/dist/types/interfaces/ez-form/IFieldSetMetadata.d.ts +5 -0
  54. package/dist/types/{components/ez-form/interfaces → interfaces/ez-form}/IFormSheetMetadata.d.ts +3 -2
  55. package/dist/types/{components/ez-form/interfaces → interfaces/ez-form}/IRecordValidator.d.ts +1 -1
  56. package/dist/types/{components/ez-form/interfaces → interfaces/ez-form}/index.d.ts +2 -0
  57. package/package.json +2 -2
  58. package/react/components.d.ts +1 -1
  59. package/react/components.js +1 -1
  60. package/react/components.js.map +1 -1
  61. package/dist/cjs/ez-filter-input.cjs.entry.js +0 -81
  62. package/dist/cjs/ez-form-view.cjs.entry.js +0 -140
  63. package/dist/cjs/ez-sidebar-button.cjs.entry.js +0 -31
  64. package/dist/collection/components/ez-form-view/ez-form-view.css +0 -6
  65. package/dist/collection/components/ez-form-view/ez-form-view.js +0 -71
  66. package/dist/collection/components/ez-form-view/fieldbuilder/FieldBuilder.js +0 -26
  67. package/dist/esm/ez-filter-input.entry.js +0 -77
  68. package/dist/esm/ez-form-view.entry.js +0 -136
  69. package/dist/esm/ez-sidebar-button.entry.js +0 -27
  70. package/dist/ezui/p-36ed5c45.entry.js +0 -1
  71. package/dist/ezui/p-7799666d.entry.js +0 -1
  72. package/dist/ezui/p-81897c04.entry.js +0 -1
  73. package/dist/ezui/p-97d2d2f6.entry.js +0 -1
  74. package/dist/ezui/p-ba03ac61.entry.js +0 -1
  75. package/dist/types/components/ez-form-view/fieldbuilder/FieldBuilder.d.ts +0 -2
  76. package/dist/types/components/ez-form-view/fieldbuilder/templates/CheckBox.tpl.d.ts +0 -3
  77. package/dist/types/components/ez-form-view/fieldbuilder/templates/ComboBox.tpl.d.ts +0 -2
  78. package/dist/types/components/ez-form-view/fieldbuilder/templates/DateInput.tpl.d.ts +0 -4
  79. package/dist/types/components/ez-form-view/fieldbuilder/templates/FileInput.tpl.d.ts +0 -2
  80. package/dist/types/components/ez-form-view/fieldbuilder/templates/NumberInput.tpl.d.ts +0 -3
  81. package/dist/types/components/ez-form-view/fieldbuilder/templates/SearchInput.tpl.d.ts +0 -2
  82. package/dist/types/components/ez-form-view/fieldbuilder/templates/TextArea.tpl.d.ts +0 -2
  83. package/dist/types/components/ez-form-view/fieldbuilder/templates/TextInput.tpl.d.ts +0 -2
  84. package/dist/types/components/ez-form-view/interfaces/IFormViewField.d.ts +0 -10
  85. package/dist/types/components/ez-form-view/interfaces/index.d.ts +0 -1
  86. /package/dist/collection/components/{ez-form-view/fieldbuilder/templates → ez-form/fieldbuilder/tpl}/FileInput.tpl.js +0 -0
  87. /package/dist/collection/components/{ez-form-view/fieldbuilder/templates → ez-form/fieldbuilder/tpl}/SearchInput.tpl.js +0 -0
  88. /package/dist/collection/components/{ez-form-view/fieldbuilder/templates → ez-form/fieldbuilder/tpl}/TextArea.tpl.js +0 -0
  89. /package/dist/collection/components/{ez-form-view/fieldbuilder/templates → ez-form/fieldbuilder/tpl}/TextInput.tpl.js +0 -0
  90. /package/dist/collection/{components/ez-form/interfaces → interfaces/ez-form}/IDefaultConfig.js +0 -0
  91. /package/dist/collection/{components/ez-form/interfaces → interfaces/ez-form}/IFieldConfig.js +0 -0
  92. /package/dist/collection/{components/ez-form-view/interfaces/IFormViewField.js → interfaces/ez-form/IFieldMetadata.js} +0 -0
  93. /package/dist/collection/{components/ez-form-view/interfaces/index.js → interfaces/ez-form/IFieldSetMetadata.js} +0 -0
  94. /package/dist/collection/{components/ez-form/interfaces → interfaces/ez-form}/IFormConfig.js +0 -0
  95. /package/dist/collection/{components/ez-form/interfaces → interfaces/ez-form}/IFormSheetMetadata.js +0 -0
  96. /package/dist/collection/{components/ez-form/interfaces → interfaces/ez-form}/IInvalidField.js +0 -0
  97. /package/dist/collection/{components/ez-form/interfaces → interfaces/ez-form}/IRecordValidator.js +0 -0
  98. /package/dist/collection/{components/ez-form/interfaces → interfaces/ez-form}/ITabConfig.js +0 -0
  99. /package/dist/collection/{components/ez-form/interfaces → interfaces/ez-form}/IValidationResult.js +0 -0
  100. /package/dist/collection/{components/ez-form/interfaces → interfaces/ez-form}/index.js +0 -0
  101. /package/dist/types/{components/ez-form/interfaces → interfaces/ez-form}/IDefaultConfig.d.ts +0 -0
  102. /package/dist/types/{components/ez-form/interfaces → interfaces/ez-form}/IFieldConfig.d.ts +0 -0
  103. /package/dist/types/{components/ez-form/interfaces → interfaces/ez-form}/IFormConfig.d.ts +0 -0
  104. /package/dist/types/{components/ez-form/interfaces → interfaces/ez-form}/IInvalidField.d.ts +0 -0
  105. /package/dist/types/{components/ez-form/interfaces → interfaces/ez-form}/ITabConfig.d.ts +0 -0
  106. /package/dist/types/{components/ez-form/interfaces → interfaces/ez-form}/IValidationResult.d.ts +0 -0
@@ -1,10 +1,10 @@
1
1
  import { h } from "@stencil/core";
2
2
  import { CheckMode } from "../../../ez-check/CheckMode";
3
- export const buildSwitch = (field) => {
4
- return buildField(field.name, field.label, field.readOnly, true);
3
+ export const buildSwitch = (fieldConfig) => {
4
+ return buildField(fieldConfig.name, fieldConfig.label, fieldConfig.readOnly, true);
5
5
  };
6
- export const buildCheckBox = (field) => {
7
- return buildField(field.name, field.label, field.readOnly, false);
6
+ export const buildCheckBox = (fieldConfig) => {
7
+ return buildField(fieldConfig.name, fieldConfig.label, fieldConfig.readOnly, false);
8
8
  };
9
9
  function buildField(fieldName, fieldLabel, readOnly, switchMode = false) {
10
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" },
@@ -1,6 +1,6 @@
1
1
  import { h } from "@stencil/core";
2
- export const buildComboBox = ({ name, label, readOnly, required, props }) => {
3
- const prop = props === null || props === void 0 ? void 0 : props.options;
2
+ export const buildComboBox = ({ name, label, readOnly, required }, properties) => {
3
+ const prop = properties === null || properties === void 0 ? void 0 : properties.options;
4
4
  let options;
5
5
  if (typeof prop === "string") {
6
6
  const parsed = JSON.parse(prop);
@@ -7,7 +7,7 @@ export const buildTime = ({ name, label, readOnly }) => {
7
7
  return (h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-3 ez-padding-horizontal--small" },
8
8
  h("ez-time-input", { enabled: !readOnly, label: label, "data-field-name": name, key: name })));
9
9
  };
10
- export const buildDateTime = ({ name, label, readOnly }) => {
10
+ export const buildTimeDate = ({ name, label, readOnly }) => {
11
11
  return (h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-3 ez-padding-horizontal--small" },
12
12
  h("ez-date-time-input", { enabled: !readOnly, label: label, "data-field-name": name, key: name })));
13
13
  };
@@ -1,7 +1,7 @@
1
1
  import { h } from "@stencil/core";
2
- export const buildDecimal = ({ name, label, readOnly, props }) => {
3
- const precision = Number((props === null || props === void 0 ? void 0 : props.precision) || 2);
4
- const prettyPrecision = Number((props === null || props === void 0 ? void 0 : props.prettyPrecision) || precision);
2
+ export const buildDecimal = ({ name, label, readOnly }, properties) => {
3
+ const precision = Number((properties === null || properties === void 0 ? void 0 : properties.precision) || 2);
4
+ const prettyPrecision = Number((properties === null || properties === void 0 ? void 0 : properties.prettyPrecision) || precision);
5
5
  return buildNumeric(name, label, readOnly, precision, prettyPrecision);
6
6
  };
7
7
  export const buildInteger = ({ name, label, readOnly }) => {
@@ -0,0 +1,11 @@
1
+ import { h } from "@stencil/core";
2
+ import { buildField } from "../fieldbuilder/FieldBuilder";
3
+ export const FormItem = ({ source }) => {
4
+ if ("items" in source) {
5
+ const fieldSet = source;
6
+ return h("ez-collapsible-box", { label: source.label, "header-size": "large", key: source.label }, fieldSet.items.map(fi => buildField(fi)));
7
+ }
8
+ else {
9
+ return buildField(source);
10
+ }
11
+ };
@@ -1,4 +1,3 @@
1
- import { UserInterface } from "@sankhyalabs/core";
2
1
  export class FormMetadata {
3
2
  constructor() {
4
3
  this._sheets = new Map();
@@ -28,20 +27,40 @@ export class FormMetadata {
28
27
  return this._defaultValues;
29
28
  }
30
29
  }
30
+ export const isRequiredField = (descriptor, config) => {
31
+ if (descriptor.required) {
32
+ //Se for required pelo descritor não olha pra configuração.
33
+ return true;
34
+ }
35
+ return config === null || config === void 0 ? void 0 : config.required;
36
+ };
37
+ export const isReadOnlyField = (descriptor, config) => {
38
+ if (descriptor.readOnly) {
39
+ //Se for readOnly pelo descritor não olha pra configuração.
40
+ return true;
41
+ }
42
+ return config === null || config === void 0 ? void 0 : config.readOnly;
43
+ };
31
44
  export const buildFromDataUnit = (dataUnit) => {
45
+ var _a, _b;
32
46
  const unitMD = dataUnit.metadata;
33
47
  const metadata = new FormMetadata();
34
48
  if (unitMD) {
35
- const visibleFields = (unitMD.fields || []).filter(descriptor => descriptor.visible !== false);
36
- const fields = visibleFields.map(descriptor => buildFormField(descriptor));
49
+ const visibleFields = (_a = unitMD.fields) === null || _a === void 0 ? void 0 : _a.filter(descriptor => descriptor.visible !== false);
50
+ const items = new Map();
51
+ (_b = unitMD === null || unitMD === void 0 ? void 0 : unitMD.fields) === null || _b === void 0 ? void 0 : _b.forEach((descriptor) => {
52
+ if (descriptor.visible !== false) {
53
+ resolveFieldGroup(items, null, descriptor);
54
+ }
55
+ });
37
56
  let defaultValues = {};
38
57
  visibleFields
39
58
  .filter(descriptor => descriptor.defaultValue)
40
59
  .forEach((descriptor) => defaultValues[descriptor.name] = descriptor.defaultValue);
41
60
  metadata.addSheet({
42
- name: unitMD.name,
43
61
  label: unitMD.label,
44
- fields,
62
+ name: unitMD.name,
63
+ items: Array.from(items.values()),
45
64
  requiredFields: visibleFields
46
65
  .filter(descriptor => descriptor.required)
47
66
  .map(descriptor => descriptor.name),
@@ -53,6 +72,29 @@ export const buildFromDataUnit = (dataUnit) => {
53
72
  }
54
73
  return metadata;
55
74
  };
75
+ function getTabConfig(tab, sheets) {
76
+ const tabConfig = (typeof tab === "string" ? Array.from(sheets.keys()).find(t => t.label === tab) : tab);
77
+ return tabConfig || { label: tab, visible: true };
78
+ }
79
+ function sortTabs(a, b) {
80
+ return a[0].label == '__main' ? -1 : (a[0].order || 10000) - (b[0].order || 10000);
81
+ }
82
+ function resolveFieldGroup(items, field, descriptor) {
83
+ const fieldMD = { config: field, descriptor: descriptor };
84
+ let group = (field === null || field === void 0 ? void 0 : field.group) || descriptor.group;
85
+ if (group) {
86
+ const key = `group::${group}`;
87
+ if (!items.has(key)) {
88
+ items.set(key, { label: group, items: [fieldMD] });
89
+ }
90
+ else {
91
+ items.get(key).items.push(fieldMD);
92
+ }
93
+ }
94
+ else {
95
+ items.set((field === null || field === void 0 ? void 0 : field.name) || descriptor.name, fieldMD);
96
+ }
97
+ }
56
98
  export const buildFromConfig = (config, dataUnit) => {
57
99
  var _a, _b;
58
100
  const sheets = new Map();
@@ -75,11 +117,10 @@ export const buildFromConfig = (config, dataUnit) => {
75
117
  const descriptor = dataUnit.getField(field.name);
76
118
  if (descriptor && tabConfig.visible) {
77
119
  if (!sheets.has(tabConfig)) {
78
- sheets.set(tabConfig, []);
120
+ sheets.set(tabConfig, new Map());
79
121
  }
80
- const formField = buildFormField(descriptor, field);
81
- sheets.get(tabConfig).push(formField);
82
- if (formField.required) {
122
+ const tabItens = sheets.get(tabConfig);
123
+ if (isRequiredField(descriptor, field)) {
83
124
  requiredFields.push(field.name);
84
125
  }
85
126
  const cleanOnCopy = field.cleanOnCopy == undefined ? (_a = descriptor.properties) === null || _a === void 0 ? void 0 : _a.cleanOnCopy : field.cleanOnCopy;
@@ -90,17 +131,18 @@ export const buildFromConfig = (config, dataUnit) => {
90
131
  if (defaultValue) {
91
132
  defaultValues[field.name] = field.defaultValue;
92
133
  }
134
+ resolveFieldGroup(tabItens, field, descriptor);
93
135
  }
94
136
  }
95
137
  });
96
138
  const metadata = new FormMetadata();
97
139
  Array.from(sheets.entries())
98
140
  .sort(sortTabs)
99
- .forEach(([key, fields]) => {
141
+ .forEach(([key, value]) => {
100
142
  metadata.addSheet({
101
143
  label: (key.label === "__main") ? "Principal" : key.label,
102
144
  name: key.label,
103
- fields,
145
+ items: Array.from(value.values()),
104
146
  requiredFields,
105
147
  cleanOnCopyFields,
106
148
  defaultValues
@@ -108,30 +150,3 @@ export const buildFromConfig = (config, dataUnit) => {
108
150
  });
109
151
  return metadata;
110
152
  };
111
- const buildFormField = (descriptor, config) => {
112
- let { name, label, group } = Object.assign({}, config);
113
- let { readOnly, required } = Object.assign({}, config);
114
- let props;
115
- let userInterface;
116
- if (descriptor) {
117
- label = label || descriptor.label;
118
- name = name || descriptor.name;
119
- required = descriptor.required || (config === null || config === void 0 ? void 0 : config.required);
120
- readOnly = descriptor.readOnly || (config === null || config === void 0 ? void 0 : config.readOnly);
121
- props = descriptor.properties;
122
- userInterface = descriptor.userInterface;
123
- }
124
- return {
125
- name, label, group,
126
- readOnly, required,
127
- props,
128
- userInterface: userInterface || UserInterface.SHORTTEXT
129
- };
130
- };
131
- const getTabConfig = (tab, sheets) => {
132
- const tabConfig = (typeof tab === "string" ? Array.from(sheets.keys()).find(t => t.label === tab) : tab);
133
- return tabConfig || { label: tab, visible: true };
134
- };
135
- const sortTabs = (a, b) => {
136
- return a[0].label == '__main' ? -1 : (a[0].order || 10000) - (b[0].order || 10000);
137
- };
@@ -0,0 +1,6 @@
1
+ import { h } from "@stencil/core";
2
+ import { FormItem } from "./FormItem";
3
+ export const FormSheet = ({ store, source, dataElementId }) => {
4
+ return (h("div", { class: "dynamic-content ez-box__container", "data-element-id": dataElementId },
5
+ h("div", { class: "ez-row ez-padding-vertical--small" }, source.items.map(item => h(FormItem, { store: store, source: item })))));
6
+ };
@@ -0,0 +1,200 @@
1
+ import { ObjectUtils } from '@sankhyalabs/core';
2
+ export const HIERARCHY_SEPARATOR = '>>';
3
+ export class Guide {
4
+ constructor(list) {
5
+ this.originalList = [];
6
+ this.guideMap = new Map();
7
+ this.hierarchiesAlreadyLoaded = new Set();
8
+ if (list === null || list === void 0 ? void 0 : list.length)
9
+ this.setList(list);
10
+ }
11
+ /**
12
+ * Converte uma lista de objetos IGuideItem em um objeto IGuideMap com sua hierarquia.
13
+ * @param list Uma lista de objetos IGuideItem representando a lista de itens.
14
+ * @param hierarquiaList Uma lista opcional de strings que representa a hierarquia dos itens pai.
15
+ * @param indexReferences Uma lista opcional de números que representa as referências de índice da lista original.
16
+ * @returns Uma Promise que resolve para um objeto IGuideMap com os itens e sua hierarquia.
17
+ */
18
+ convertArrayToMap(list, hierarchyList = [], indexReferences = []) {
19
+ return new Promise(resolve => {
20
+ list.forEach(async (item, index) => {
21
+ const updatedHierarchyList = [...hierarchyList, item.id];
22
+ const key = updatedHierarchyList.join(HIERARCHY_SEPARATOR);
23
+ const currentIndexReferences = [...indexReferences, index];
24
+ const children = Array.isArray(item.children) ? item.children : [];
25
+ item = Object.assign(Object.assign({}, item), { parentId: hierarchyList[hierarchyList.length - 1], indexReferences: currentIndexReferences, hierarchy: updatedHierarchyList, hierarchyId: key });
26
+ delete item.children;
27
+ this.guideMap.set(key, item);
28
+ if (children.length)
29
+ await this.convertArrayToMap(children, updatedHierarchyList, currentIndexReferences);
30
+ });
31
+ resolve(this.guideMap);
32
+ });
33
+ }
34
+ /**
35
+ * Converte um objeto IGuideMap em uma lista de objetos IGuideItem com sua hierarquia.
36
+ * @param map Um objeto IGuideMap opcional que representa o mapa de itens com sua hierarquia.
37
+ * @returns Uma Promise que resolve para uma lista de objetos IGuideItem com sua hierarquia.
38
+ */
39
+ convertMapToArray(map = this.guideMap) {
40
+ return new Promise(resolve => {
41
+ const array = [];
42
+ const itemsById = {};
43
+ map.forEach(value => {
44
+ var _a;
45
+ const item = Object.assign({}, value);
46
+ if (((_a = item.children) === null || _a === void 0 ? void 0 : _a.length) === 0) {
47
+ delete item.children;
48
+ }
49
+ itemsById[item.id] = item;
50
+ });
51
+ Object.values(itemsById).forEach(item => {
52
+ if (item.parentId) {
53
+ const parent = itemsById[item.parentId];
54
+ if (Array.isArray(parent.children)) {
55
+ parent.children.push(item);
56
+ }
57
+ else {
58
+ parent.children = [item];
59
+ }
60
+ }
61
+ else {
62
+ array.push(item);
63
+ }
64
+ });
65
+ resolve(array);
66
+ });
67
+ }
68
+ /**
69
+ * Obtém a lista selecionada de itens com base na lista original e na lista de índice selecionada.
70
+ * @param originalList Uma lista de objetos IGuideItem representando a lista original de itens.
71
+ * @param selectedIndexList Uma matriz representando a lista de índices selecionada.
72
+ * @returns Uma lista de objetos IGuideItem representando a lista selecionada de itens.
73
+ */
74
+ getSelectedList(originalList, selectedIndexList) {
75
+ const selectedList = [];
76
+ selectedIndexList.forEach(selectedIndex => {
77
+ if (!selectedIndex.length)
78
+ return;
79
+ const [parentIndex, childIndex] = selectedIndex;
80
+ if (childIndex === undefined) {
81
+ selectedList.push(originalList[parentIndex]);
82
+ }
83
+ else {
84
+ const parent = originalList[parentIndex];
85
+ const child = parent.children[childIndex];
86
+ const selectedParent = selectedList.find(item => item.id === parent.id);
87
+ if (selectedParent) {
88
+ selectedParent.children.push(child);
89
+ }
90
+ else {
91
+ selectedList.push(Object.assign(Object.assign({}, parent), { children: [child] }));
92
+ }
93
+ }
94
+ });
95
+ return selectedList;
96
+ }
97
+ /**
98
+ * Define a lista de itens para o Map guideMap.
99
+ * @param list Uma lista de objetos IGuideItem representando a lista de itens.
100
+ * @returns Uma Promise que resolve quando a lista é convertida para o Map.
101
+ */
102
+ setList(list) {
103
+ return new Promise(async (resolve) => {
104
+ this.guideMap.clear();
105
+ if (!this.originalList.length) {
106
+ this.originalList = ObjectUtils.copy(list);
107
+ }
108
+ await this.convertArrayToMap(list);
109
+ resolve();
110
+ });
111
+ }
112
+ /**
113
+ * Obtém a lista de itens com sua hierarquia.
114
+ * @returns Uma Promise que resolve para uma lista de objetos IGuideItem com sua hierarquia.
115
+ */
116
+ getList() {
117
+ return this.convertMapToArray();
118
+ }
119
+ /**
120
+ * Adiciona filhos a um item pai no guia.
121
+ * @param parent Um objeto IGuideItem que representa o item pai.
122
+ * @param children Uma lista de objetos IGuideItem representando os itens filhos.
123
+ * @returns Uma Promise que resolve para uma lista de objetos IGuideItem com sua hierarquia.
124
+ */
125
+ addChildren(parent, children) {
126
+ return new Promise(async (resolve, reject) => {
127
+ if (parent.disabled)
128
+ return reject('Parent is disabled');
129
+ if (!parent.hierarchy || !parent.hierarchyId)
130
+ return reject('Hierarchy not found');
131
+ if (this.hierarchiesAlreadyLoaded.has(parent.hierarchyId))
132
+ return resolve([]);
133
+ await this.convertArrayToMap(children, parent.hierarchy);
134
+ const list = await this.getList();
135
+ this.originalList = ObjectUtils.copy(list);
136
+ this.hierarchiesAlreadyLoaded.add(parent.hierarchyId);
137
+ resolve(list);
138
+ });
139
+ }
140
+ /**
141
+ * Obtém os itens a partir de um campo corresponde à string de consulta.
142
+ * @param query Uma string que representa a consulta para corresponder ao rótulo.
143
+ * @param fieldName Uma string opcional que representa o nome do campo para corresponder à consulta.
144
+ * @returns Uma Promise que resolve para um objeto com o primeiro item encontrado e uma matriz de itens correspondentes com sua hierarquia.
145
+ */
146
+ getItemsByLabel(query, fieldName = 'label', selectedItem) {
147
+ return new Promise(async (resolve) => {
148
+ var _a;
149
+ const mapResults = [];
150
+ let firstOcorrence;
151
+ const itemFromMap = this.guideMap.get(selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.hierarchyId);
152
+ if (itemFromMap)
153
+ itemFromMap.expanded = true;
154
+ for (const item of this.guideMap.values()) {
155
+ const label = ((_a = item === null || item === void 0 ? void 0 : item[fieldName]) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
156
+ if (label.includes(query.toLowerCase())) {
157
+ if (!firstOcorrence)
158
+ firstOcorrence = item;
159
+ mapResults.push(item.indexReferences);
160
+ }
161
+ }
162
+ const updatedList = this.getSelectedList(this.originalList, mapResults);
163
+ resolve({
164
+ first: firstOcorrence,
165
+ list: updatedList,
166
+ });
167
+ });
168
+ }
169
+ /**
170
+ * Habilita todos os objetos IGuideItem.
171
+ * @returns Uma Promise que resolve com o array atualizado de objetos IGuideItem.
172
+ */
173
+ enableAllItems() {
174
+ return new Promise(async (resolve) => {
175
+ for (const item of this.guideMap.values())
176
+ item.disabled = false;
177
+ const list = await this.getList();
178
+ this.originalList = ObjectUtils.copy(list);
179
+ resolve(list);
180
+ });
181
+ }
182
+ /**
183
+ * Ativa somente objetos IGuideItem com base em uma matriz de IDs.
184
+ * @param ids Um array de IDs para habilitar.
185
+ * @param customTooltip Uma string para definir o tooltip de itens desabilitados.
186
+ * @returns Uma Promise que resolve com o array atualizado de objetos IGuideItem.
187
+ */
188
+ enableItemsById(ids = [], customTooltip = '') {
189
+ return new Promise(async (resolve) => {
190
+ for (const item of this.guideMap.values()) {
191
+ const isEnabled = ids.includes(item.id);
192
+ item.disabled = !isEnabled;
193
+ item.tooltip = isEnabled ? item.tooltip : customTooltip;
194
+ }
195
+ const list = await this.getList();
196
+ this.originalList = ObjectUtils.copy(list);
197
+ resolve(list);
198
+ });
199
+ }
200
+ }
@@ -0,0 +1,53 @@
1
+ :host {
2
+ /* Label Container */
3
+ /*@doc Define o espaçamento interno do container de label*/
4
+ --ez-guide-navigator--padding: 0 var(--space--large);
5
+ /*@doc Define a cor de shadow box do container de label*/
6
+ --ez-guide-navigator--box-shadow: var(--shadow, 0px 0px 24px 0px #000);
7
+ /*@doc Define a cor de fundo do container de label*/
8
+ --ez-guide-navigator--background-color: var(--color--inverted);
9
+ /*@doc Define o border radius do container de label*/
10
+ --ez-guide-navigator--border-radius: 0px var(--border--radius-medium) var(--border--radius-medium) 0px;
11
+
12
+
13
+ /*Labels Actions */
14
+ /*@doc Define o espaçamento entre as ações*/
15
+ --ez-guide-navigator--actions-gap: var(--space--medium);
16
+ /*@doc Define a margem vertical do elemento*/
17
+ --ez-guide-navigator--actions-margin: var(--space--medium) 0 var(--space--medium);
18
+ }
19
+
20
+ .inverted {
21
+ transform: rotate(180deg);
22
+ }
23
+
24
+ .ez-guide-navigator {
25
+ /* public */
26
+ display: -webkit-box;
27
+ display: -ms-flexbox;
28
+ display: flex;
29
+ -webkit-box-orient: vertical;
30
+ -webkit-box-direction: normal;
31
+ -ms-flex-direction: column;
32
+ flex-direction: column;
33
+ /* private */
34
+ padding: var(--ez-guide-navigator--padding);
35
+ background-color: var(--ez-guide-navigator--background-color);
36
+ -webkit-box-shadow: var(--ez-guide-navigator--box-shadow);
37
+ box-shadow: var(--ez-guide-navigator--box-shadow);
38
+ border-radius: var(--ez-guide-navigator--border-radius);
39
+
40
+ }
41
+
42
+ .ez-guide-navigator__actions {
43
+ /* public */
44
+ display: -webkit-box;
45
+ display: -ms-flexbox;
46
+ display: flex;
47
+ -webkit-box-align: center;
48
+ -ms-flex-align: center;
49
+ align-items: center;
50
+ /* private */
51
+ gap: var(--ez-guide-navigator--actions-gap);
52
+ margin: var(--ez-guide-navigator--actions-margin)
53
+ }