@genexus/genexus-ide-ui 1.0.71 → 1.0.73

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 (47) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js +282 -0
  3. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js.map +1 -0
  4. package/dist/cjs/gx-ide-data-selector.cjs.entry.js +24 -11
  5. package/dist/cjs/gx-ide-data-selector.cjs.entry.js.map +1 -1
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/collection/collection-manifest.json +1 -0
  8. package/dist/collection/components/bpm/task-documents/gx-ide-assets/bpm-task-documents/langs/bpm-task-documents.lang.en.json +23 -0
  9. package/dist/collection/components/bpm/task-documents/gx-ide-assets/bpm-task-documents/langs/bpm-task-documents.lang.ja.json +23 -0
  10. package/dist/collection/components/bpm/task-documents/gx-ide-assets/bpm-task-documents/langs/bpm-task-documents.lang.zh.json +23 -0
  11. package/dist/collection/components/bpm/task-documents/gx-ide-assets/bpm-task-documents/shortcuts.json +15 -0
  12. package/dist/collection/components/bpm/task-documents/helpers.js +34 -0
  13. package/dist/collection/components/bpm/task-documents/helpers.js.map +1 -0
  14. package/dist/collection/components/bpm/task-documents/task-documents.css +26 -0
  15. package/dist/collection/components/bpm/task-documents/task-documents.js +440 -0
  16. package/dist/collection/components/bpm/task-documents/task-documents.js.map +1 -0
  17. package/dist/collection/components/data-selector/data-selector.js +26 -13
  18. package/dist/collection/components/data-selector/data-selector.js.map +1 -1
  19. package/dist/collection/testing/locale.e2e.js +1 -0
  20. package/dist/collection/testing/locale.e2e.js.map +1 -1
  21. package/dist/components/gx-ide-bpm-task-documents.d.ts +11 -0
  22. package/dist/components/gx-ide-bpm-task-documents.js +313 -0
  23. package/dist/components/gx-ide-bpm-task-documents.js.map +1 -0
  24. package/dist/components/gx-ide-data-selector.js +24 -11
  25. package/dist/components/gx-ide-data-selector.js.map +1 -1
  26. package/dist/esm/genexus-ide-ui.js +1 -1
  27. package/dist/esm/gx-ide-bpm-task-documents.entry.js +278 -0
  28. package/dist/esm/gx-ide-bpm-task-documents.entry.js.map +1 -0
  29. package/dist/esm/gx-ide-data-selector.entry.js +24 -11
  30. package/dist/esm/gx-ide-data-selector.entry.js.map +1 -1
  31. package/dist/esm/loader.js +1 -1
  32. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  33. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  34. package/dist/genexus-ide-ui/gx-ide-assets/bpm-task-documents/langs/bpm-task-documents.lang.en.json +23 -0
  35. package/dist/genexus-ide-ui/gx-ide-assets/bpm-task-documents/langs/bpm-task-documents.lang.ja.json +23 -0
  36. package/dist/genexus-ide-ui/gx-ide-assets/bpm-task-documents/langs/bpm-task-documents.lang.zh.json +23 -0
  37. package/dist/genexus-ide-ui/gx-ide-assets/bpm-task-documents/shortcuts.json +15 -0
  38. package/dist/genexus-ide-ui/p-a3361024.entry.js +419 -0
  39. package/dist/genexus-ide-ui/p-a3361024.entry.js.map +1 -0
  40. package/dist/genexus-ide-ui/{p-c624a8da.entry.js → p-eee8a8a9.entry.js} +61 -47
  41. package/dist/genexus-ide-ui/p-eee8a8a9.entry.js.map +1 -0
  42. package/dist/types/components/bpm/task-documents/helpers.d.ts +8 -0
  43. package/dist/types/components/bpm/task-documents/task-documents.d.ts +71 -0
  44. package/dist/types/components/data-selector/data-selector.d.ts +2 -2
  45. package/dist/types/components.d.ts +152 -64
  46. package/package.json +1 -1
  47. package/dist/genexus-ide-ui/p-c624a8da.entry.js.map +0 -1
@@ -0,0 +1,278 @@
1
+ import { r as registerInstance, c as createEvent, g as getAssetPath, h, H as Host, a as getElement } from './index-10af18cf.js';
2
+ import { L as Locale } from './locale-e5107fad.js';
3
+ import { g as getIconPath } from './assets-manager-0d129105.js';
4
+ import './MERCURY_ASSETS-2455138c.js';
5
+
6
+ const taskDocumentsToActionListItemModel = (objects, selectedDocument) => {
7
+ const actionListDocuments = [];
8
+ objects === null || objects === void 0 ? void 0 : objects.forEach((object, index) => {
9
+ const itemId = `task-${object.name}`;
10
+ const itemValue = object.name;
11
+ actionListDocuments.push({
12
+ id: itemId,
13
+ caption: itemValue,
14
+ selected: selectedDocument
15
+ ? selectedDocument.name === object.name
16
+ : index === 0,
17
+ type: "actionable"
18
+ });
19
+ });
20
+ return actionListDocuments;
21
+ };
22
+ /* References Types*/
23
+ /**
24
+ * @description This function converts string[] to ComboBoxItemModel[]
25
+ */
26
+ const convertSuggestedDocumentsToSuggestItems = (suggestedDocuments) => {
27
+ const suggestItems = [];
28
+ if (suggestedDocuments.length) {
29
+ suggestedDocuments.forEach((suggestedDocument) => {
30
+ const suggestItem = {
31
+ value: suggestedDocument,
32
+ caption: suggestedDocument
33
+ };
34
+ suggestItems.push(suggestItem);
35
+ });
36
+ }
37
+ return suggestItems;
38
+ };
39
+
40
+ const taskDocumentsCss = ":host{display:grid;grid-template-columns:1fr;grid-template-rows:1fr max-content;block-size:100%;overflow:auto}.section{display:contents}.main{display:grid;grid-template-rows:max-content 1fr max-content;block-size:100%;overflow:auto}.documents__header{grid-template-columns:1fr max-content}.documents__suggest{flex:1}";
41
+
42
+ var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
43
+ if (kind === "a" && !f)
44
+ throw new TypeError("Private accessor was defined without a getter");
45
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
46
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
47
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
48
+ };
49
+ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
50
+ if (kind === "m")
51
+ throw new TypeError("Private method is not writable");
52
+ if (kind === "a" && !f)
53
+ throw new TypeError("Private accessor was defined without a setter");
54
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
55
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
56
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
57
+ };
58
+ var _GxIdeBpmTaskDocuments_instances, _GxIdeBpmTaskDocuments__componentLocale, _GxIdeBpmTaskDocuments_renderedFirstTime, _GxIdeBpmTaskDocuments_shortcutsSrc, _GxIdeBpmTaskDocuments_chShortcutsEl, _GxIdeBpmTaskDocuments_deleteEnabledCheckboxEl, _GxIdeBpmTaskDocuments_deleteRequiredCheckboxEl, _GxIdeBpmTaskDocuments_newEnabledCheckboxEl, _GxIdeBpmTaskDocuments_newRequiredCheckboxEl, _GxIdeBpmTaskDocuments_readEnabledCheckboxEl, _GxIdeBpmTaskDocuments_readRequiredCheckboxEl, _GxIdeBpmTaskDocuments_updateEnabledCheckboxEl, _GxIdeBpmTaskDocuments_updateRequiredCheckboxEl, _GxIdeBpmTaskDocuments_getAllCheckboxes, _GxIdeBpmTaskDocuments_addDocument, _GxIdeBpmTaskDocuments_cancelCallbackHandler, _GxIdeBpmTaskDocuments_confirmCallbackHandler, _GxIdeBpmTaskDocuments_documentSuggestValueChangedHandler, _GxIdeBpmTaskDocuments_handleCheckboxChange, _GxIdeBpmTaskDocuments_handleDeleteButton, _GxIdeBpmTaskDocuments_listenDocumentSelected, _GxIdeBpmTaskDocuments_objectSelectionChangedHandler, _GxIdeBpmTaskDocuments_refreshDocumentsActionListState, _GxIdeBpmTaskDocuments_selectDocumentCallbackHandler, _GxIdeBpmTaskDocuments_renderActions, _GxIdeBpmTaskDocuments_renderEmptyState, _GxIdeBpmTaskDocuments_renderFooter, _GxIdeBpmTaskDocuments_renderMain;
59
+ const CHECKED_VALUE = "true";
60
+ const CSS_BUNDLES = [
61
+ "resets/box-sizing",
62
+ "components/list-box",
63
+ "components/tabular-grid",
64
+ "utils/form--full",
65
+ "utils/layout",
66
+ "utils/spacing",
67
+ "chameleon/scrollbar"
68
+ ];
69
+ const MODULE_ICON = getIconPath({
70
+ category: "objects",
71
+ name: "module"
72
+ });
73
+ const MORE_ICON = getIconPath({
74
+ category: "gemini-tools",
75
+ name: "show-more-horizontal",
76
+ colorType: "primary"
77
+ });
78
+ const DELETE_ICON = getIconPath({
79
+ category: "menus",
80
+ name: "delete",
81
+ colorType: "primary"
82
+ });
83
+ const NODENAME = "CH-CHECKBOX";
84
+ const GxIdeBpmTaskDocuments = class {
85
+ constructor(hostRef) {
86
+ registerInstance(this, hostRef);
87
+ this.componentDidRenderFirstTime = createEvent(this, "componentDidRenderFirstTime", 7);
88
+ _GxIdeBpmTaskDocuments_instances.add(this);
89
+ _GxIdeBpmTaskDocuments__componentLocale.set(this, void 0);
90
+ _GxIdeBpmTaskDocuments_renderedFirstTime.set(this, false);
91
+ _GxIdeBpmTaskDocuments_shortcutsSrc.set(this, getAssetPath(`./gx-ide-assets/bpm-task-documents/shortcuts.json`));
92
+ _GxIdeBpmTaskDocuments_chShortcutsEl.set(this, void 0);
93
+ _GxIdeBpmTaskDocuments_deleteEnabledCheckboxEl.set(this, void 0);
94
+ _GxIdeBpmTaskDocuments_deleteRequiredCheckboxEl.set(this, void 0);
95
+ _GxIdeBpmTaskDocuments_newEnabledCheckboxEl.set(this, void 0);
96
+ _GxIdeBpmTaskDocuments_newRequiredCheckboxEl.set(this, void 0);
97
+ _GxIdeBpmTaskDocuments_readEnabledCheckboxEl.set(this, void 0);
98
+ _GxIdeBpmTaskDocuments_readRequiredCheckboxEl.set(this, void 0);
99
+ _GxIdeBpmTaskDocuments_updateEnabledCheckboxEl.set(this, void 0);
100
+ _GxIdeBpmTaskDocuments_updateRequiredCheckboxEl.set(this, void 0);
101
+ _GxIdeBpmTaskDocuments_cancelCallbackHandler.set(this, () => {
102
+ this.cancelCallback();
103
+ });
104
+ _GxIdeBpmTaskDocuments_confirmCallbackHandler.set(this, () => {
105
+ this.confirmCallback(this.documents);
106
+ });
107
+ _GxIdeBpmTaskDocuments_documentSuggestValueChangedHandler.set(this, async (e) => {
108
+ const value = e.detail;
109
+ this.suggestDocumentsCallback(value)
110
+ .then(result => {
111
+ this.suggestedDocuments =
112
+ convertSuggestedDocumentsToSuggestItems(result);
113
+ })
114
+ .catch(() => {
115
+ // to do
116
+ });
117
+ });
118
+ _GxIdeBpmTaskDocuments_handleDeleteButton.set(this, () => {
119
+ this.documents = this.documents.filter(doc => doc.name !== this.selectedDocument.name);
120
+ this.selectedDocument = null;
121
+ __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_refreshDocumentsActionListState, "f").call(this);
122
+ });
123
+ _GxIdeBpmTaskDocuments_listenDocumentSelected.set(this, async (e) => {
124
+ if (e.detail) {
125
+ __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_instances, "m", _GxIdeBpmTaskDocuments_addDocument).call(this, e.detail);
126
+ }
127
+ });
128
+ _GxIdeBpmTaskDocuments_objectSelectionChangedHandler.set(this, (e) => {
129
+ this.selectedDocument = this.documents.find(doc => { var _a; return doc.name === ((_a = e.detail[0]) === null || _a === void 0 ? void 0 : _a.item.caption); });
130
+ });
131
+ _GxIdeBpmTaskDocuments_refreshDocumentsActionListState.set(this, () => {
132
+ var _a, _b;
133
+ (_a = this.documents) === null || _a === void 0 ? void 0 : _a.sort((a, b) => {
134
+ return a.name.localeCompare(b.name);
135
+ });
136
+ this.documentsActionListState = taskDocumentsToActionListItemModel(this.documents, this.selectedDocument);
137
+ this.selectedDocument =
138
+ this.selectedDocument || ((_b = this.documents) === null || _b === void 0 ? void 0 : _b[0]) || null;
139
+ });
140
+ _GxIdeBpmTaskDocuments_selectDocumentCallbackHandler.set(this, async () => {
141
+ const callbackResult = await this.selectDocumentCallback();
142
+ if (callbackResult) {
143
+ this.documentName = callbackResult;
144
+ __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_instances, "m", _GxIdeBpmTaskDocuments_addDocument).call(this, callbackResult);
145
+ }
146
+ });
147
+ _GxIdeBpmTaskDocuments_renderActions.set(this, () => {
148
+ var _a, _b, _c, _d, _e, _f, _g, _h;
149
+ return (h("ch-tabular-grid", { class: "tabular-grid scrollable", rowSelectionMode: "none", keyboardNavigationMode: "focus", columnResizeMode: "single" }, h("ch-tabular-grid-columnset", { class: "tabular-grid-column-set" }, h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: "code", columnName: "", settingable: false }), h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: "enabled", settingable: false, columnName: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").actions.enabledCheckbox }), h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: "required", settingable: false, columnName: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").actions.requiredCheckbox })), h("ch-tabular-grid-row", {
150
+ // read
151
+ class: "tabular-grid-row", rowid: "read"
152
+ }, h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").actions.readLabel), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, h("ch-checkbox", { class: "checkbox", checkedValue: CHECKED_VALUE, value: (_a = this.selectedDocument) === null || _a === void 0 ? void 0 : _a.readEnabled.toString(), ref: el => (__classPrivateFieldSet(this, _GxIdeBpmTaskDocuments_readEnabledCheckboxEl, el, "f")) })), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, h("ch-checkbox", { class: "checkbox", checkedValue: CHECKED_VALUE, value: (_b = this.selectedDocument) === null || _b === void 0 ? void 0 : _b.readRequired.toString(), ref: el => (__classPrivateFieldSet(this, _GxIdeBpmTaskDocuments_readRequiredCheckboxEl, el, "f")) }))), h("ch-tabular-grid-row", {
153
+ // new
154
+ class: "tabular-grid-row", rowid: "read"
155
+ }, h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").actions.newLabel), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, h("ch-checkbox", { class: "checkbox", checkedValue: CHECKED_VALUE, value: (_c = this.selectedDocument) === null || _c === void 0 ? void 0 : _c.newEnabled.toString(), ref: el => (__classPrivateFieldSet(this, _GxIdeBpmTaskDocuments_newEnabledCheckboxEl, el, "f")) })), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, h("ch-checkbox", { class: "checkbox", checkedValue: CHECKED_VALUE, value: (_d = this.selectedDocument) === null || _d === void 0 ? void 0 : _d.newRequired.toString(), ref: el => (__classPrivateFieldSet(this, _GxIdeBpmTaskDocuments_newRequiredCheckboxEl, el, "f")) }))), h("ch-tabular-grid-row", {
156
+ // update
157
+ class: "tabular-grid-row", rowid: "read"
158
+ }, h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").actions.updateLabel), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, h("ch-checkbox", { class: "checkbox", checkedValue: CHECKED_VALUE, value: (_e = this.selectedDocument) === null || _e === void 0 ? void 0 : _e.updateEnabled.toString(), ref: el => (__classPrivateFieldSet(this, _GxIdeBpmTaskDocuments_updateEnabledCheckboxEl, el, "f")) })), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, h("ch-checkbox", { class: "checkbox", checkedValue: CHECKED_VALUE, value: (_f = this.selectedDocument) === null || _f === void 0 ? void 0 : _f.updateRequired.toString(), ref: el => (__classPrivateFieldSet(this, _GxIdeBpmTaskDocuments_updateRequiredCheckboxEl, el, "f")) }))), h("ch-tabular-grid-row", {
159
+ // delete
160
+ class: "tabular-grid-row", rowid: "read"
161
+ }, h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").actions.deleteLabel), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, h("ch-checkbox", { class: "checkbox", checkedValue: CHECKED_VALUE, value: (_g = this.selectedDocument) === null || _g === void 0 ? void 0 : _g.deleteEnabled.toString(), ref: el => (__classPrivateFieldSet(this, _GxIdeBpmTaskDocuments_deleteEnabledCheckboxEl, el, "f")) })), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, h("ch-checkbox", { class: "checkbox", checkedValue: CHECKED_VALUE, value: (_h = this.selectedDocument) === null || _h === void 0 ? void 0 : _h.deleteRequired.toString(), ref: el => (__classPrivateFieldSet(this, _GxIdeBpmTaskDocuments_deleteRequiredCheckboxEl, el, "f")) })))));
162
+ });
163
+ _GxIdeBpmTaskDocuments_renderEmptyState.set(this, () => {
164
+ return (h("gx-ide-empty-state", { class: "recent-objects__empty-state", stateIconSrc: MODULE_ICON, isAnimated: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_renderedFirstTime, "f"), stateTitle: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").emptyRightPanelInfo.title }, h("button", { class: "button-secondary", onClick: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_selectDocumentCallbackHandler, "f") }, __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").emptyRightPanelInfo.buttonCaption)));
165
+ });
166
+ _GxIdeBpmTaskDocuments_renderFooter.set(this, () => {
167
+ return (h("footer", { class: "footer control-footer control-footer-with-border spacing-body-block-end spacing-body-inline" }, h("div", { class: "buttons-spacer" }, h("button", { class: "button-secondary", id: "button-cancel", onClick: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_cancelCallbackHandler, "f"), part: "button-cancel" }, __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").footer.cancelButton), h("button", { class: "button-primary", id: "button-create", onClick: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_confirmCallbackHandler, "f"), part: "button-create" }, __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").footer.confirmButton))));
168
+ });
169
+ _GxIdeBpmTaskDocuments_renderMain.set(this, () => {
170
+ return [
171
+ h("div", { class: "documents__list spacing-body-inline" }, h("ch-action-list-render", { selection: "single", class: "list-box", model: this.documentsActionListState, onSelectedItemsChange: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_objectSelectionChangedHandler, "f") })),
172
+ __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_renderActions, "f").call(this)
173
+ ];
174
+ });
175
+ this.documentsActionListState = [];
176
+ this.documentName = null;
177
+ this.selectedDocument = null;
178
+ this.suggestedDocuments = undefined;
179
+ this.documents = undefined;
180
+ this.cancelCallback = undefined;
181
+ this.confirmCallback = undefined;
182
+ this.selectDocumentCallback = undefined;
183
+ this.suggestDocumentsCallback = undefined;
184
+ }
185
+ async componentWillLoad() {
186
+ __classPrivateFieldSet(this, _GxIdeBpmTaskDocuments__componentLocale, await Locale.getComponentStrings(this.el), "f");
187
+ __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_refreshDocumentsActionListState, "f").call(this);
188
+ }
189
+ componentDidRender() {
190
+ if (!__classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_renderedFirstTime, "f")) {
191
+ this.componentDidRenderFirstTime.emit(__classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").componentName);
192
+ __classPrivateFieldSet(this, _GxIdeBpmTaskDocuments_renderedFirstTime, true, "f");
193
+ }
194
+ const shadowRoot = this.el.shadowRoot;
195
+ const checkboxes = __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_instances, "m", _GxIdeBpmTaskDocuments_getAllCheckboxes).call(this, shadowRoot);
196
+ if (checkboxes) {
197
+ checkboxes.forEach(checkbox => {
198
+ checkbox.addEventListener("input", __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_instances, "m", _GxIdeBpmTaskDocuments_handleCheckboxChange).bind(this));
199
+ });
200
+ }
201
+ }
202
+ /**
203
+ * Suspends or reactivates the shortcuts
204
+ */
205
+ async suspendShortcuts(suspendShortcuts) {
206
+ if (suspendShortcuts) {
207
+ __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_chShortcutsEl, "f").suspend = true;
208
+ }
209
+ else {
210
+ __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_chShortcutsEl, "f").suspend = false;
211
+ }
212
+ }
213
+ render() {
214
+ return (h(Host, { class: "widget" }, h("ch-theme", { model: CSS_BUNDLES }), h("ch-shortcuts", { src: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_shortcutsSrc, "f"), ref: (el) => (__classPrivateFieldSet(this, _GxIdeBpmTaskDocuments_chShortcutsEl, el, "f")) }), h("section", { class: "section" }, h("div", { class: "main field-group" }, h("div", { class: "documents__header buttons-spacer spacing-body-inline spacing-body-block-start" }, h("ch-combo-box-render", { class: "combo-box documents__suggest", model: this.suggestedDocuments, placeholder: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").documents.suggestPlaceholder, suggest: true, onInput: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_documentSuggestValueChangedHandler, "f"), onChange: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_listenDocumentSelected, "f"), suggestOptions: {
215
+ alreadyProcessed: false,
216
+ autoExpand: true,
217
+ hideMatchesAndShowNonMatches: false,
218
+ highlightMatchedItems: false,
219
+ matchCase: false,
220
+ regularExpression: false,
221
+ strict: false
222
+ } }), h("span", null, h("button", { class: "button-tertiary button-icon-only", "aria-label": __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").documents.addDocumentButtonLabel, title: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").documents.addDocumentButtonLabel, onClick: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_selectDocumentCallbackHandler, "f") }, h("ch-image", { class: "icon-sm", src: MORE_ICON })), h("button", { class: "button-tertiary button-icon-only", "aria-label": __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").documents.clearDocumentButtonLabel, title: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments__componentLocale, "f").documents.clearDocumentButtonLabel, onClick: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_handleDeleteButton, "f") }, h("ch-image", { class: "icon-sm", src: DELETE_ICON })))), this.documentsActionListState.length
223
+ ? __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_renderMain, "f").call(this)
224
+ : __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_renderEmptyState, "f").call(this)), __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_renderFooter, "f").call(this))));
225
+ }
226
+ static get assetsDirs() { return ["gx-ide-assets/bpm-task-documents"]; }
227
+ get el() { return getElement(this); }
228
+ };
229
+ _GxIdeBpmTaskDocuments__componentLocale = new WeakMap(), _GxIdeBpmTaskDocuments_renderedFirstTime = new WeakMap(), _GxIdeBpmTaskDocuments_shortcutsSrc = new WeakMap(), _GxIdeBpmTaskDocuments_chShortcutsEl = new WeakMap(), _GxIdeBpmTaskDocuments_deleteEnabledCheckboxEl = new WeakMap(), _GxIdeBpmTaskDocuments_deleteRequiredCheckboxEl = new WeakMap(), _GxIdeBpmTaskDocuments_newEnabledCheckboxEl = new WeakMap(), _GxIdeBpmTaskDocuments_newRequiredCheckboxEl = new WeakMap(), _GxIdeBpmTaskDocuments_readEnabledCheckboxEl = new WeakMap(), _GxIdeBpmTaskDocuments_readRequiredCheckboxEl = new WeakMap(), _GxIdeBpmTaskDocuments_updateEnabledCheckboxEl = new WeakMap(), _GxIdeBpmTaskDocuments_updateRequiredCheckboxEl = new WeakMap(), _GxIdeBpmTaskDocuments_cancelCallbackHandler = new WeakMap(), _GxIdeBpmTaskDocuments_confirmCallbackHandler = new WeakMap(), _GxIdeBpmTaskDocuments_documentSuggestValueChangedHandler = new WeakMap(), _GxIdeBpmTaskDocuments_handleDeleteButton = new WeakMap(), _GxIdeBpmTaskDocuments_listenDocumentSelected = new WeakMap(), _GxIdeBpmTaskDocuments_objectSelectionChangedHandler = new WeakMap(), _GxIdeBpmTaskDocuments_refreshDocumentsActionListState = new WeakMap(), _GxIdeBpmTaskDocuments_selectDocumentCallbackHandler = new WeakMap(), _GxIdeBpmTaskDocuments_renderActions = new WeakMap(), _GxIdeBpmTaskDocuments_renderEmptyState = new WeakMap(), _GxIdeBpmTaskDocuments_renderFooter = new WeakMap(), _GxIdeBpmTaskDocuments_renderMain = new WeakMap(), _GxIdeBpmTaskDocuments_instances = new WeakSet(), _GxIdeBpmTaskDocuments_getAllCheckboxes = function _GxIdeBpmTaskDocuments_getAllCheckboxes(node) {
230
+ const checkboxes = [];
231
+ node.childNodes.forEach(child => {
232
+ if (child.nodeName === NODENAME) {
233
+ checkboxes.push(child);
234
+ }
235
+ else if (child instanceof HTMLElement) {
236
+ checkboxes.push(...__classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_instances, "m", _GxIdeBpmTaskDocuments_getAllCheckboxes).call(this, child));
237
+ }
238
+ });
239
+ return checkboxes;
240
+ }, _GxIdeBpmTaskDocuments_addDocument = function _GxIdeBpmTaskDocuments_addDocument(documentName) {
241
+ const documentExists = this.documents.some(doc => doc.name === documentName);
242
+ if (!documentExists) {
243
+ this.documents = [
244
+ ...this.documents,
245
+ {
246
+ name: documentName,
247
+ deleteEnabled: false,
248
+ deleteRequired: false,
249
+ newEnabled: false,
250
+ newRequired: false,
251
+ readEnabled: false,
252
+ readRequired: false,
253
+ updateEnabled: false,
254
+ updateRequired: false
255
+ }
256
+ ];
257
+ __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_refreshDocumentsActionListState, "f").call(this);
258
+ }
259
+ }, _GxIdeBpmTaskDocuments_handleCheckboxChange = function _GxIdeBpmTaskDocuments_handleCheckboxChange() {
260
+ const data = {
261
+ name: this.selectedDocument.name,
262
+ readEnabled: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_readEnabledCheckboxEl, "f").value === CHECKED_VALUE,
263
+ readRequired: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_readRequiredCheckboxEl, "f").value === CHECKED_VALUE,
264
+ newEnabled: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_newEnabledCheckboxEl, "f").value === CHECKED_VALUE,
265
+ newRequired: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_newRequiredCheckboxEl, "f").value === CHECKED_VALUE,
266
+ updateEnabled: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_updateEnabledCheckboxEl, "f").value === CHECKED_VALUE,
267
+ updateRequired: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_updateRequiredCheckboxEl, "f").value === CHECKED_VALUE,
268
+ deleteEnabled: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_deleteEnabledCheckboxEl, "f").value === CHECKED_VALUE,
269
+ deleteRequired: __classPrivateFieldGet(this, _GxIdeBpmTaskDocuments_deleteRequiredCheckboxEl, "f").value === CHECKED_VALUE
270
+ };
271
+ this.selectedDocument = data;
272
+ this.documents = this.documents.map(doc => doc.name === this.selectedDocument.name ? this.selectedDocument : doc);
273
+ };
274
+ GxIdeBpmTaskDocuments.style = taskDocumentsCss;
275
+
276
+ export { GxIdeBpmTaskDocuments as gx_ide_bpm_task_documents };
277
+
278
+ //# sourceMappingURL=gx-ide-bpm-task-documents.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"gx-ide-bpm-task-documents.entry.js","mappings":"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","names":[],"sources":["src/components/bpm/task-documents/helpers.ts","src/components/bpm/task-documents/task-documents.scss?tag=gx-ide-bpm-task-documents&encapsulation=shadow","src/components/bpm/task-documents/task-documents.tsx"],"sourcesContent":["import { TaskDocumentData } from \"./task-documents\";\nimport { ActionListItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/action-list/types\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\n\nexport const taskDocumentsToActionListItemModel = (\n objects: TaskDocumentData[],\n selectedDocument?: TaskDocumentData\n): ActionListItemModel[] => {\n const actionListDocuments: ActionListItemModel[] = [];\n objects?.forEach((object, index) => {\n const itemId = `task-${object.name}`;\n const itemValue = object.name;\n actionListDocuments.push({\n id: itemId,\n caption: itemValue,\n selected: selectedDocument\n ? selectedDocument.name === object.name\n : index === 0,\n type: \"actionable\"\n });\n });\n return actionListDocuments;\n};\n\n/* References Types*/\n\n/**\n * @description This function converts string[] to ComboBoxItemModel[]\n */\nexport const convertSuggestedDocumentsToSuggestItems = (\n suggestedDocuments: string[]\n): ComboBoxItemModel[] => {\n const suggestItems: ComboBoxItemModel[] = [];\n if (suggestedDocuments.length) {\n suggestedDocuments.forEach((suggestedDocument: string) => {\n const suggestItem: ComboBoxItemModel = {\n value: suggestedDocument,\n caption: suggestedDocument\n };\n suggestItems.push(suggestItem);\n });\n }\n return suggestItems;\n};\n",":host {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: 1fr max-content;\n block-size: 100%;\n overflow: auto;\n}\n.section {\n display: contents;\n}\n.main {\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n block-size: 100%;\n overflow: auto;\n}\n\n.documents__header {\n grid-template-columns: 1fr max-content;\n}\n.documents__suggest {\n flex: 1;\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State,\n getAssetPath,\n Method\n} from \"@stencil/core\";\nimport { Locale } from \"../../../common/locale\";\nimport {\n convertSuggestedDocumentsToSuggestItems,\n taskDocumentsToActionListItemModel\n} from \"./helpers\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { ActionListItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/action-list/types\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { ChComboBoxRenderCustomEvent } from \"@genexus/chameleon-controls-library\";\n\nconst CHECKED_VALUE = \"true\";\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/list-box\",\n \"components/tabular-grid\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\nconst MODULE_ICON = getIconPath({\n category: \"objects\",\n name: \"module\"\n});\nconst MORE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"primary\"\n});\nconst DELETE_ICON = getIconPath({\n category: \"menus\",\n name: \"delete\",\n colorType: \"primary\"\n});\n\nconst NODENAME = \"CH-CHECKBOX\";\n@Component({\n tag: \"gx-ide-bpm-task-documents\",\n styleUrl: \"task-documents.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/bpm-task-documents\"]\n})\nexport class GxIdeBpmTaskDocuments {\n #_componentLocale: any;\n #renderedFirstTime = false;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/bpm-task-documents/shortcuts.json`\n );\n\n @Element() el: HTMLGxIdeBpmTaskDocumentsElement;\n\n #chShortcutsEl: HTMLChShortcutsElement;\n #deleteEnabledCheckboxEl: HTMLChCheckboxElement;\n #deleteRequiredCheckboxEl: HTMLChCheckboxElement;\n\n #newEnabledCheckboxEl: HTMLChCheckboxElement;\n #newRequiredCheckboxEl: HTMLChCheckboxElement;\n #readEnabledCheckboxEl: HTMLChCheckboxElement;\n #readRequiredCheckboxEl: HTMLChCheckboxElement;\n #updateEnabledCheckboxEl: HTMLChCheckboxElement;\n #updateRequiredCheckboxEl: HTMLChCheckboxElement;\n\n /**\n * Documents state for the action list\n */\n @State() documentsActionListState: ActionListItemModel[] = [];\n\n @State() documentName: string = null;\n\n /**\n * Document selected in the action list\n */\n @State() selectedDocument: TaskDocumentData = null;\n\n /**\n * Possible suggestions for the documents\n */\n @State() suggestedDocuments: ComboBoxItemModel[];\n\n /**\n * @property documents\n * @description The current value of the documents for the task\n */\n\n @Prop({ mutable: true }) documents: TaskDocumentData[];\n\n /**\n * @property cancelCallback\n * @description Callback invoked when the user cancels the application declaration (Cancel button)\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * @property confirmCallback\n * @description Callback invoked when the user confirms the application declaration (Ok button)\n */\n @Prop() readonly confirmCallback: ConfirmCallback;\n\n /**\n * @property selectDocumentCallback\n * @description Callback invoked when the user presses the '...' button to access the WorkflowDocuments selection dialog. Returns the name of the document to be inserted in the input or 'undefined' if it was canceled.\n */\n @Prop() readonly selectDocumentCallback: SelectDocumentCallback;\n\n /**\n * @property suggestDocumentsCallback\n * @description Callback that must be called to obtain options for the document input.\n */\n @Prop() readonly suggestDocumentsCallback: SuggestDocumentsCallback;\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#refreshDocumentsActionListState();\n }\n\n componentDidRender() {\n if (!this.#renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this.#_componentLocale.componentName\n );\n this.#renderedFirstTime = true;\n }\n const shadowRoot = this.el.shadowRoot;\n const checkboxes = this.#getAllCheckboxes(\n shadowRoot as unknown as HTMLElement\n );\n if (checkboxes) {\n checkboxes.forEach(checkbox => {\n checkbox.addEventListener(\n \"input\",\n this.#handleCheckboxChange.bind(this)\n );\n });\n }\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n #getAllCheckboxes(node: HTMLElement): HTMLChCheckboxElement[] {\n const checkboxes: HTMLChCheckboxElement[] = [];\n\n node.childNodes.forEach(child => {\n if (child.nodeName === NODENAME) {\n checkboxes.push(child as HTMLChCheckboxElement);\n } else if (child instanceof HTMLElement) {\n checkboxes.push(...this.#getAllCheckboxes(child));\n }\n });\n\n return checkboxes;\n }\n #addDocument(documentName: string) {\n const documentExists = this.documents.some(\n doc => doc.name === documentName\n );\n if (!documentExists) {\n this.documents = [\n ...this.documents,\n {\n name: documentName,\n deleteEnabled: false,\n deleteRequired: false,\n newEnabled: false,\n newRequired: false,\n readEnabled: false,\n readRequired: false,\n updateEnabled: false,\n updateRequired: false\n }\n ];\n this.#refreshDocumentsActionListState();\n }\n }\n\n #cancelCallbackHandler = () => {\n this.cancelCallback();\n };\n #confirmCallbackHandler = () => {\n this.confirmCallback(this.documents);\n };\n\n #documentSuggestValueChangedHandler = async (\n e: ChComboBoxRenderCustomEvent<string> & InputEvent\n ) => {\n const value = e.detail;\n this.suggestDocumentsCallback(value)\n .then(result => {\n this.suggestedDocuments =\n convertSuggestedDocumentsToSuggestItems(result);\n })\n .catch(() => {\n // to do\n });\n };\n\n #handleCheckboxChange() {\n const data: TaskDocumentData = {\n name: this.selectedDocument.name,\n readEnabled: this.#readEnabledCheckboxEl.value === CHECKED_VALUE,\n readRequired: this.#readRequiredCheckboxEl.value === CHECKED_VALUE,\n newEnabled: this.#newEnabledCheckboxEl.value === CHECKED_VALUE,\n newRequired: this.#newRequiredCheckboxEl.value === CHECKED_VALUE,\n updateEnabled: this.#updateEnabledCheckboxEl.value === CHECKED_VALUE,\n updateRequired: this.#updateRequiredCheckboxEl.value === CHECKED_VALUE,\n deleteEnabled: this.#deleteEnabledCheckboxEl.value === CHECKED_VALUE,\n deleteRequired: this.#deleteRequiredCheckboxEl.value === CHECKED_VALUE\n };\n\n this.selectedDocument = data;\n\n this.documents = this.documents.map(doc =>\n doc.name === this.selectedDocument.name ? this.selectedDocument : doc\n );\n }\n\n #handleDeleteButton = () => {\n this.documents = this.documents.filter(\n doc => doc.name !== this.selectedDocument.name\n );\n this.selectedDocument = null;\n this.#refreshDocumentsActionListState();\n };\n\n #listenDocumentSelected = async (e: CustomEvent<string>) => {\n if (e.detail) {\n this.#addDocument(e.detail);\n }\n };\n\n #objectSelectionChangedHandler = (e: CustomEvent) => {\n this.selectedDocument = this.documents.find(\n doc => doc.name === e.detail[0]?.item.caption\n );\n };\n\n #refreshDocumentsActionListState = () => {\n this.documents?.sort((a, b) => {\n return a.name.localeCompare(b.name);\n });\n this.documentsActionListState = taskDocumentsToActionListItemModel(\n this.documents,\n this.selectedDocument\n );\n\n this.selectedDocument =\n this.selectedDocument || this.documents?.[0] || null;\n };\n\n #selectDocumentCallbackHandler = async () => {\n const callbackResult = await this.selectDocumentCallback();\n if (callbackResult) {\n this.documentName = callbackResult;\n this.#addDocument(callbackResult);\n }\n };\n\n #renderActions = () => {\n return (\n <ch-tabular-grid\n class=\"tabular-grid scrollable\"\n rowSelectionMode=\"none\"\n keyboardNavigationMode=\"focus\"\n columnResizeMode=\"single\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"code\"\n columnName=\"\"\n settingable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"enabled\"\n settingable={false}\n columnName={this.#_componentLocale.actions.enabledCheckbox}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"required\"\n settingable={false}\n columnName={this.#_componentLocale.actions.requiredCheckbox}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n <ch-tabular-grid-row\n // read\n class=\"tabular-grid-row\"\n rowid=\"read\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#_componentLocale.actions.readLabel}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.readEnabled.toString()}\n ref={el =>\n (this.#readEnabledCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.readRequired.toString()}\n ref={el =>\n (this.#readRequiredCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n\n <ch-tabular-grid-row\n // new\n class=\"tabular-grid-row\"\n rowid=\"read\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#_componentLocale.actions.newLabel}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.newEnabled.toString()}\n ref={el =>\n (this.#newEnabledCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.newRequired.toString()}\n ref={el =>\n (this.#newRequiredCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n\n <ch-tabular-grid-row\n // update\n class=\"tabular-grid-row\"\n rowid=\"read\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#_componentLocale.actions.updateLabel}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.updateEnabled.toString()}\n ref={el =>\n (this.#updateEnabledCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.updateRequired.toString()}\n ref={el =>\n (this.#updateRequiredCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n\n <ch-tabular-grid-row\n // delete\n class=\"tabular-grid-row\"\n rowid=\"read\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#_componentLocale.actions.deleteLabel}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.deleteEnabled.toString()}\n ref={el =>\n (this.#deleteEnabledCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.deleteRequired.toString()}\n ref={el =>\n (this.#deleteRequiredCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n </ch-tabular-grid>\n );\n };\n\n #renderEmptyState = () => {\n return (\n <gx-ide-empty-state\n class=\"recent-objects__empty-state\"\n stateIconSrc={MODULE_ICON}\n isAnimated={this.#renderedFirstTime}\n stateTitle={this.#_componentLocale.emptyRightPanelInfo.title}\n >\n <button\n class=\"button-secondary\"\n onClick={this.#selectDocumentCallbackHandler}\n >\n {this.#_componentLocale.emptyRightPanelInfo.buttonCaption}\n </button>\n </gx-ide-empty-state>\n );\n };\n\n #renderFooter = () => {\n return (\n <footer class=\"footer control-footer control-footer-with-border spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n id=\"button-cancel\"\n onClick={this.#cancelCallbackHandler}\n part=\"button-cancel\"\n >\n {this.#_componentLocale.footer.cancelButton}\n </button>\n <button\n class=\"button-primary\"\n id=\"button-create\"\n onClick={this.#confirmCallbackHandler}\n part=\"button-create\"\n >\n {this.#_componentLocale.footer.confirmButton}\n </button>\n </div>\n </footer>\n );\n };\n\n #renderMain = () => {\n return [\n <div class=\"documents__list spacing-body-inline\">\n <ch-action-list-render\n selection=\"single\"\n class=\"list-box\"\n model={this.documentsActionListState}\n onSelectedItemsChange={this.#objectSelectionChangedHandler}\n ></ch-action-list-render>\n </div>,\n this.#renderActions()\n ];\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <div class=\"main field-group\">\n <div class=\"documents__header buttons-spacer spacing-body-inline spacing-body-block-start\">\n <ch-combo-box-render\n class=\"combo-box documents__suggest\"\n model={this.suggestedDocuments}\n placeholder={\n this.#_componentLocale.documents.suggestPlaceholder\n }\n suggest={true}\n onInput={this.#documentSuggestValueChangedHandler}\n onChange={this.#listenDocumentSelected}\n suggestOptions={{\n alreadyProcessed: false,\n autoExpand: true,\n hideMatchesAndShowNonMatches: false,\n highlightMatchedItems: false,\n matchCase: false,\n regularExpression: false,\n strict: false\n }}\n ></ch-combo-box-render>\n\n <span>\n <button\n class=\"button-tertiary button-icon-only\"\n aria-label={\n this.#_componentLocale.documents.addDocumentButtonLabel\n }\n title={\n this.#_componentLocale.documents.addDocumentButtonLabel\n }\n onClick={this.#selectDocumentCallbackHandler}\n >\n <ch-image class=\"icon-sm\" src={MORE_ICON}></ch-image>\n </button>\n\n <button\n class=\"button-tertiary button-icon-only\"\n aria-label={\n this.#_componentLocale.documents.clearDocumentButtonLabel\n }\n title={\n this.#_componentLocale.documents.clearDocumentButtonLabel\n }\n onClick={this.#handleDeleteButton}\n >\n <ch-image class=\"icon-sm\" src={DELETE_ICON}></ch-image>\n </button>\n </span>\n </div>\n\n {this.documentsActionListState.length\n ? this.#renderMain()\n : this.#renderEmptyState()}\n </div>\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type TaskDocumentData = {\n name: string;\n readEnabled: boolean;\n readRequired: boolean;\n newEnabled: boolean;\n newRequired: boolean;\n updateEnabled: boolean;\n updateRequired: boolean;\n deleteEnabled: boolean;\n deleteRequired: boolean;\n};\n\nexport type SuggestDocumentsCallback = (\n documentName: string\n) => Promise<string[] | undefined>;\nexport type SelectDocumentCallback = () => Promise<string | undefined>;\nexport type ConfirmCallback = (data: TaskDocumentData[]) => Promise<void>;\nexport type CancelCallback = () => Promise<void>;\n"],"version":3}
@@ -22,7 +22,7 @@ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) ||
22
22
  throw new TypeError("Cannot write private member to an object whose class did not declare it");
23
23
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
24
24
  };
25
- var _GxIdeDataSelector_firstGridObjectId, _GxIdeDataSelector_loadItemsCallbackJustCalled, _GxIdeDataSelector_componentLocale, _GxIdeDataSelector_animateEmptyState, _GxIdeDataSelector_shortcutsSrc, _GxIdeDataSelector_filterPatternEl, _GxIdeDataSelector_filterObjectEl, _GxIdeDataSelector_chShortcutsEl, _GxIdeDataSelector_chTabularGridObjectsEl, _GxIdeDataSelector_evaluateFirstRowSelection, _GxIdeDataSelector_chGridKeyDownHandler, _GxIdeDataSelector_confirmCallbackHandler, _GxIdeDataSelector_editCallbackHandler, _GxIdeDataSelector_hostKeyPressHandler, _GxIdeDataSelector_objectsSelectionChangedHandler, _GxIdeDataSelector_newVariableCallbackHandler, _GxIdeDataSelector_refreshUIWithNewConfiguration, _GxIdeDataSelector_renderFilter, _GxIdeDataSelector_renderObjects, _GxIdeDataSelector_sortObjectsByName;
25
+ var _GxIdeDataSelector_firstGridObjectId, _GxIdeDataSelector_loadItemsCallbackJustCalled, _GxIdeDataSelector_componentLocale, _GxIdeDataSelector_animateEmptyState, _GxIdeDataSelector_shortcutsSrc, _GxIdeDataSelector_filterPatternEl, _GxIdeDataSelector_filterObjectEl, _GxIdeDataSelector_chShortcutsEl, _GxIdeDataSelector_chTabularGridObjectsEl, _GxIdeDataSelector_evaluateFirstRowSelection, _GxIdeDataSelector_chGridKeyDownHandler, _GxIdeDataSelector_confirmCallbackHandler, _GxIdeDataSelector_editCallbackHandler, _GxIdeDataSelector_hostKeyPressHandler, _GxIdeDataSelector_objectsSelectionChangedHandler, _GxIdeDataSelector_newVariableCallbackHandler, _GxIdeDataSelector_refreshUIWithNewConfiguration, _GxIdeDataSelector_renderFilter, _GxIdeDataSelector_renderObjects, _GxIdeDataSelector_renderEditButtons, _GxIdeDataSelector_sortObjectsByName;
26
26
  // Best performance bundle
27
27
  const CSS_BUNDLES = [
28
28
  "resets/box-sizing",
@@ -133,6 +133,20 @@ const GxIdeDataSelector = class {
133
133
  ? "objects/attribute"
134
134
  : "objects-parts/variables", class: "icon-md" })), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, obj.name), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, obj.dataType), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, obj.description)))))) : (h("ch-tabular-grid-rowset", { class: "tabular-grid-rowset" }, h("ch-tabular-grid-rowset-empty", null, displayLoader ? (h("gx-ide-loader", { loaderTitle: __classPrivateFieldGet(this, _GxIdeDataSelector_componentLocale, "f").loader.title, show: true })) : (h("gx-ide-empty-state", { isAnimated: __classPrivateFieldGet(this, _GxIdeDataSelector_animateEmptyState, "f"), stateIconSrc: FILTER_ICON, stateTitle: __classPrivateFieldGet(this, _GxIdeDataSelector_componentLocale, "f").emptyState.title })))))));
135
135
  });
136
+ _GxIdeDataSelector_renderEditButtons.set(this, () => {
137
+ if (!this.editCallback && !this.newVariableCallback) {
138
+ return null;
139
+ }
140
+ const newVariableButtonEnabled = this.newVariableCallback && !this.loading;
141
+ const editButtonEnabled = this.editCallback && !this.loading && this.selectedObjectsIds.length;
142
+ return (h("div", { class: "buttons-spacer" }, this.newVariableCallback ? (h("button", {
143
+ // New Variable Button
144
+ class: "button-secondary", disabled: !newVariableButtonEnabled, part: "button button-new", type: "button", onClick: __classPrivateFieldGet(this, _GxIdeDataSelector_newVariableCallbackHandler, "f")
145
+ }, __classPrivateFieldGet(this, _GxIdeDataSelector_componentLocale, "f").footer.btnNew)) : ([]), this.editCallback ? (h("button", {
146
+ // Edit Button
147
+ class: "button-secondary", disabled: !editButtonEnabled, part: "button button-edit", type: "button", onClick: editButtonEnabled && __classPrivateFieldGet(this, _GxIdeDataSelector_editCallbackHandler, "f")
148
+ }, __classPrivateFieldGet(this, _GxIdeDataSelector_componentLocale, "f").footer.btnEdit)) : ([])));
149
+ });
136
150
  _GxIdeDataSelector_sortObjectsByName.set(this, (objects) =>
137
151
  // TODO (make this a common helper function
138
152
  // and use it in other dialog grids that
@@ -192,16 +206,15 @@ const GxIdeDataSelector = class {
192
206
  return isValid;
193
207
  }
194
208
  render() {
195
- const newVariableButtonEnabled = !this.loading;
196
- const editButtonEnabled = !this.loading && this.selectedObjectsIds.length;
197
209
  const okButtonEnabled = !this.loading;
198
- return (h(Host, { onKeyPress: __classPrivateFieldGet(this, _GxIdeDataSelector_hostKeyPressHandler, "f"), class: "widget" }, h("ch-theme", { model: CSS_BUNDLES }), h("ch-shortcuts", { src: __classPrivateFieldGet(this, _GxIdeDataSelector_shortcutsSrc, "f"), ref: (el) => (__classPrivateFieldSet(this, _GxIdeDataSelector_chShortcutsEl, el, "f")) }), h("section", { class: "section" }, h("header", { class: "header control-header-with-border spacing-body-block-start spacing-body-inline" }, __classPrivateFieldGet(this, _GxIdeDataSelector_renderFilter, "f").call(this)), __classPrivateFieldGet(this, _GxIdeDataSelector_renderObjects, "f").call(this), h("footer", { class: "footer control-footer-with-border control-footer-space-between spacing-body-inline spacing-body-block-end" }, h("div", { class: "buttons-spacer" }, h("button", {
199
- // New Variable Button
200
- class: "button-secondary", disabled: !newVariableButtonEnabled, part: "button button-new", type: "button", onClick: __classPrivateFieldGet(this, _GxIdeDataSelector_newVariableCallbackHandler, "f")
201
- }, __classPrivateFieldGet(this, _GxIdeDataSelector_componentLocale, "f").footer.btnNew), h("button", {
202
- // Edit Button
203
- class: "button-secondary", disabled: !editButtonEnabled, part: "button button-edit", type: "button", onClick: editButtonEnabled && __classPrivateFieldGet(this, _GxIdeDataSelector_editCallbackHandler, "f")
204
- }, __classPrivateFieldGet(this, _GxIdeDataSelector_componentLocale, "f").footer.btnEdit)), h("div", { class: "buttons-spacer" }, h("button", {
210
+ const footerJustifySpaceBetween = !!this.newVariableCallback || !!this.editCallback;
211
+ return (h(Host, { onKeyPress: __classPrivateFieldGet(this, _GxIdeDataSelector_hostKeyPressHandler, "f"), class: "widget" }, h("ch-theme", { model: CSS_BUNDLES }), h("ch-shortcuts", { src: __classPrivateFieldGet(this, _GxIdeDataSelector_shortcutsSrc, "f"), ref: (el) => (__classPrivateFieldSet(this, _GxIdeDataSelector_chShortcutsEl, el, "f")) }), h("section", { class: "section" }, h("header", { class: "header control-header-with-border spacing-body-block-start spacing-body-inline" }, __classPrivateFieldGet(this, _GxIdeDataSelector_renderFilter, "f").call(this)), __classPrivateFieldGet(this, _GxIdeDataSelector_renderObjects, "f").call(this), h("footer", { class: {
212
+ "footer": true,
213
+ "control-footer-with-border": true,
214
+ "control-footer-space-between": footerJustifySpaceBetween,
215
+ "spacing-body-inline": true,
216
+ "spacing-body-block-end": true
217
+ } }, __classPrivateFieldGet(this, _GxIdeDataSelector_renderEditButtons, "f").call(this), h("div", { class: "buttons-spacer" }, h("button", {
205
218
  // Cancel Button
206
219
  class: "button-secondary", part: "button button-cancel", type: "button", onClick: this.cancelCallback
207
220
  }, __classPrivateFieldGet(this, _GxIdeDataSelector_componentLocale, "f").footer.btnCancel), h("button", {
@@ -213,7 +226,7 @@ const GxIdeDataSelector = class {
213
226
  static get assetsDirs() { return ["gx-ide-assets/data-selector"]; }
214
227
  get el() { return getElement(this); }
215
228
  };
216
- _GxIdeDataSelector_firstGridObjectId = new WeakMap(), _GxIdeDataSelector_loadItemsCallbackJustCalled = new WeakMap(), _GxIdeDataSelector_componentLocale = new WeakMap(), _GxIdeDataSelector_animateEmptyState = new WeakMap(), _GxIdeDataSelector_shortcutsSrc = new WeakMap(), _GxIdeDataSelector_filterPatternEl = new WeakMap(), _GxIdeDataSelector_filterObjectEl = new WeakMap(), _GxIdeDataSelector_chShortcutsEl = new WeakMap(), _GxIdeDataSelector_chTabularGridObjectsEl = new WeakMap(), _GxIdeDataSelector_evaluateFirstRowSelection = new WeakMap(), _GxIdeDataSelector_chGridKeyDownHandler = new WeakMap(), _GxIdeDataSelector_confirmCallbackHandler = new WeakMap(), _GxIdeDataSelector_editCallbackHandler = new WeakMap(), _GxIdeDataSelector_hostKeyPressHandler = new WeakMap(), _GxIdeDataSelector_objectsSelectionChangedHandler = new WeakMap(), _GxIdeDataSelector_newVariableCallbackHandler = new WeakMap(), _GxIdeDataSelector_refreshUIWithNewConfiguration = new WeakMap(), _GxIdeDataSelector_renderFilter = new WeakMap(), _GxIdeDataSelector_renderObjects = new WeakMap(), _GxIdeDataSelector_sortObjectsByName = new WeakMap();
229
+ _GxIdeDataSelector_firstGridObjectId = new WeakMap(), _GxIdeDataSelector_loadItemsCallbackJustCalled = new WeakMap(), _GxIdeDataSelector_componentLocale = new WeakMap(), _GxIdeDataSelector_animateEmptyState = new WeakMap(), _GxIdeDataSelector_shortcutsSrc = new WeakMap(), _GxIdeDataSelector_filterPatternEl = new WeakMap(), _GxIdeDataSelector_filterObjectEl = new WeakMap(), _GxIdeDataSelector_chShortcutsEl = new WeakMap(), _GxIdeDataSelector_chTabularGridObjectsEl = new WeakMap(), _GxIdeDataSelector_evaluateFirstRowSelection = new WeakMap(), _GxIdeDataSelector_chGridKeyDownHandler = new WeakMap(), _GxIdeDataSelector_confirmCallbackHandler = new WeakMap(), _GxIdeDataSelector_editCallbackHandler = new WeakMap(), _GxIdeDataSelector_hostKeyPressHandler = new WeakMap(), _GxIdeDataSelector_objectsSelectionChangedHandler = new WeakMap(), _GxIdeDataSelector_newVariableCallbackHandler = new WeakMap(), _GxIdeDataSelector_refreshUIWithNewConfiguration = new WeakMap(), _GxIdeDataSelector_renderFilter = new WeakMap(), _GxIdeDataSelector_renderObjects = new WeakMap(), _GxIdeDataSelector_renderEditButtons = new WeakMap(), _GxIdeDataSelector_sortObjectsByName = new WeakMap();
217
230
  GxIdeDataSelector.style = dataSelectorCss;
218
231
 
219
232
  export { GxIdeDataSelector as gx_ide_data_selector };
@@ -1 +1 @@
1
- {"file":"gx-ide-data-selector.entry.js","mappings":"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","names":[],"sources":["src/components/data-selector/data-selector.scss?tag=gx-ide-data-selector&encapsulation=shadow","src/components/data-selector/data-selector.tsx"],"sourcesContent":["@import \"../../../node_modules/@genexus/mercury/dist/mercury.scss\"; // for the tabular-grid-cell-layout mixin\n\n:host {\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n overflow: auto;\n block-size: 100%;\n}\n\n.section {\n display: contents;\n}\n\n.header__field-group {\n display: grid;\n grid-template-columns: 1fr 1fr;\n}\n\n.tabular-grid {\n contain: size;\n}\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".data\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\nch-tabular-grid.empty-result::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\nch-tabular-grid-rowset-empty {\n // to make the loader be positioned relative to 'ch-tabular-grid-rowset-empty'\n position: relative;\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n getAssetPath\n} from \"@stencil/core\";\n\nimport { Locale } from \"../../common/locale\";\n\nimport { config } from \"../../common/config\";\nimport { EntityData } from \"../../common/types\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { TabularGridSelectionChangedEvent } from \"@genexus/chameleon-controls-library\";\n\n// Best performance bundle\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/edit\",\n \"components/tabular-grid\",\n \"components/icon\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\n\n@Component({\n tag: \"gx-ide-data-selector\",\n styleUrl: \"data-selector.scss\",\n shadow: { delegatesFocus: true },\n assetsDirs: [\"gx-ide-assets/data-selector\"]\n})\nexport class GxIdeDataSelector {\n #firstGridObjectId: string; // used to select the first item after \"loadItemsCallback\"\n #loadItemsCallbackJustCalled: boolean = false; // used to select the first item after \"loadItemsCallback\"\n\n #componentLocale: any;\n #animateEmptyState: boolean = false;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/data-selector/shortcuts.json`);\n /* References needed to collect data */\n #filterPatternEl!: HTMLChEditElement;\n #filterObjectEl!: HTMLGxIdeEntitySelectorElement;\n #chShortcutsEl: HTMLChShortcutsElement;\n #chTabularGridObjectsEl: HTMLChTabularGridElement;\n\n @Element() el: HTMLGxIdeDataSelectorElement;\n\n /**\n * True if loadItemsCallback has been called and has not been resolved yet.\n */\n @State() loading: boolean = true;\n\n /**\n * The objects rendered in the table\n */\n @State() objects: ItemData[] = [];\n\n /**\n * The selected objects in the table of objects\n */\n @State() selectedObjectsIds: string[] = [];\n\n /**\n * Callback invoked when the user wishes to cancel the selection of objects.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n * Callback invoked when the user presses the 'OK' button\n */\n @Prop() readonly confirmCallback!: ConfirmCallback;\n\n /**\n * The default value for the module/folder filter\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Callback invoked when user presses the edit button. Receives the first\n * selected element id as a parameter.\n */\n @Prop() readonly editCallback!: EditCallback;\n\n /**\n * Callback invoked when the component needs to reload the list of attributes.\n */\n @Prop() readonly loadItemsCallback!: LoadItemsCallback;\n\n /**\n * If true, it will display a loader when needed.\n */\n @Prop() readonly loader = false;\n\n /**\n * Callback invoked when the user presses the 'New' button.\n */\n @Prop() readonly newVariableCallback!: NewVariableCallback;\n\n /**\n * Callback invoked when the action is executed in the Object filter. It returns\n * the information of the selected object (id and name) or 'undefined' if it was\n * canceled.\n */\n @Prop() readonly selectObjectCallback: SelectObjectCallback;\n\n /**\n * Single if multiple object selection is not allowed. Default is multiple\n */\n @Prop() readonly selectionType: \"single\" | \"multiple\" = \"multiple\";\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n connectedCallback() {\n this.#refreshUIWithNewConfiguration();\n }\n\n componentDidLoad() {\n this.#filterPatternEl.focus();\n }\n\n componentDidRender() {\n this.#evaluateFirstRowSelection();\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n /**\n * Validate necessary data input\n */\n @Method()\n async validate(): Promise<boolean> {\n const isValid = true;\n return isValid;\n }\n\n /**\n * After items have been loaded and rendered, the first row should be selected.\n */\n #evaluateFirstRowSelection = () => {\n if (this.#loadItemsCallbackJustCalled) {\n this.#chTabularGridObjectsEl.selectRow(this.#firstGridObjectId);\n }\n this.#loadItemsCallbackJustCalled = false;\n };\n\n #chGridKeyDownHandler = (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n this.#confirmCallbackHandler(e);\n }\n };\n\n #confirmCallbackHandler = (e: MouseEvent | KeyboardEvent): void => {\n e.stopPropagation();\n this.confirmCallback(this.selectedObjectsIds);\n };\n\n #editCallbackHandler = async (e: MouseEvent): Promise<void> => {\n e.stopPropagation();\n if (this.selectedObjectsIds[0]) {\n const result = await this.editCallback(this.selectedObjectsIds[0]);\n if (result) {\n this.#refreshUIWithNewConfiguration();\n }\n }\n };\n\n #hostKeyPressHandler = (e: KeyboardEvent) => {\n // TODO : revise why this is necessary\n // just prevent keypress propagation\n if (e.key === \"Enter\") {\n e.stopPropagation();\n }\n };\n\n #objectsSelectionChangedHandler = (\n event: CustomEvent<TabularGridSelectionChangedEvent>\n ) => {\n this.selectedObjectsIds = event.detail.rowsId;\n };\n\n #newVariableCallbackHandler = async () => {\n const response = await this.newVariableCallback();\n if (response) {\n this.#refreshUIWithNewConfiguration();\n }\n };\n #refreshUIWithNewConfiguration = (): void => {\n this.objects = [];\n const filters: FiltersData = {\n pattern: this.#filterPatternEl?.value,\n object: this.#filterObjectEl?.value?.id\n };\n this.loading = true;\n this.loadItemsCallback(filters).then((items: ItemData[]) => {\n if (items.length) {\n this.objects = this.#sortObjectsByName(items);\n this.#firstGridObjectId = this.objects[0].id;\n this.#loadItemsCallbackJustCalled = true;\n }\n this.selectedObjectsIds = [];\n this.loading = false;\n });\n };\n\n #renderFilter = (): Element[] => {\n return [\n <div class=\"header__field-group field-group\">\n <div class=\"field field-block pattern-field\">\n <label class=\"label\" htmlFor=\"filter-pattern\">\n {this.#componentLocale.filter.pattern}\n </label>\n <ch-edit\n autoFocus\n id=\"filter-pattern\"\n name=\"filter-pattern\"\n class=\"input pattern-input\"\n part=\"filter-pattern\"\n debounce={config.inputDebounce}\n onInput={this.#refreshUIWithNewConfiguration}\n ref={(el: HTMLChEditElement) =>\n (this.#filterPatternEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n <gx-ide-entity-selector\n id=\"object-selector\"\n value={this.defaultModule}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectObjectCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#filterObjectEl = el as HTMLGxIdeEntitySelectorElement)\n }\n class=\"entity\"\n onValueChanged={this.#refreshUIWithNewConfiguration}\n ></gx-ide-entity-selector>\n </div>\n ];\n };\n\n #renderObjects = (): Element => {\n const gridIsEmpty = !this.objects.length;\n const displayLoader = this.loader && this.loading;\n if (!gridIsEmpty || displayLoader) {\n this.#animateEmptyState = true; // improve performance if is first render\n }\n return (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"empty-result\": this.objects.length === 0,\n \"data\": true\n }}\n rowSelectionMode={this.selectionType}\n onKeyDown={this.#chGridKeyDownHandler}\n part=\"ch-grid-objects\"\n onSelectionChanged={\n this.objects.length ? this.#objectsSelectionChangedHandler : undefined\n }\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chTabularGridObjectsEl = el as HTMLChTabularGridElement)\n }\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#componentLocale.tableHead.name}\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.common}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#componentLocale.tableHead.dataType}\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.common}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#componentLocale.tableHead.description}\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.common}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {!gridIsEmpty ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objects.map((obj: ItemData) => (\n <ch-tabular-grid-row\n rowid={obj.id}\n onDblClick={this.#confirmCallbackHandler}\n class=\"tabular-grid-row\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image\n src={\n obj.type === \"attribute\"\n ? \"objects/attribute\"\n : \"objects-parts/variables\"\n }\n class=\"icon-md\"\n ></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.dataType}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.description}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n {displayLoader ? (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.loader.title}\n show\n ></gx-ide-loader>\n ) : (\n <gx-ide-empty-state\n isAnimated={this.#animateEmptyState}\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#componentLocale.emptyState.title}\n ></gx-ide-empty-state>\n )}\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #sortObjectsByName = (objects: ItemData[]): ItemData[] =>\n // TODO (make this a common helper function\n // and use it in other dialog grids that\n // require filter by name).\n objects.sort((a, b) => {\n const nameA = a.name.toLowerCase(),\n nameB = b.name.toLowerCase();\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n return 0;\n });\n\n render() {\n const newVariableButtonEnabled = !this.loading;\n const editButtonEnabled = !this.loading && this.selectedObjectsIds.length;\n const okButtonEnabled = !this.loading;\n\n return (\n <Host onKeyPress={this.#hostKeyPressHandler} class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border spacing-body-block-start spacing-body-inline\">\n {this.#renderFilter()}\n </header>\n {this.#renderObjects()}\n <footer class=\"footer control-footer-with-border control-footer-space-between spacing-body-inline spacing-body-block-end\">\n <div class=\"buttons-spacer\">\n <button\n // New Variable Button\n class=\"button-secondary\"\n disabled={!newVariableButtonEnabled}\n part=\"button button-new\"\n type=\"button\"\n onClick={this.#newVariableCallbackHandler}\n >\n {this.#componentLocale.footer.btnNew}\n </button>\n <button\n // Edit Button\n class=\"button-secondary\"\n disabled={!editButtonEnabled}\n part=\"button button-edit\"\n type=\"button\"\n onClick={editButtonEnabled && this.#editCallbackHandler}\n >\n {this.#componentLocale.footer.btnEdit}\n </button>\n </div>\n\n <div class=\"buttons-spacer\">\n <button\n // Cancel Button\n class=\"button-secondary\"\n part=\"button button-cancel\"\n type=\"button\"\n onClick={this.cancelCallback}\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n // Confirm Button\n class=\"button-primary\"\n part=\"button button-ok\"\n disabled={!okButtonEnabled}\n type=\"button\"\n onClick={okButtonEnabled && this.#confirmCallbackHandler}\n >\n {this.#componentLocale.footer.btnConfirm}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type NewVariableCallback = () => Promise<boolean>;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type SelectObjectCallback = () => Promise<EntityData | undefined>;\n\nexport type EditCallback = (id: string) => Promise<boolean>;\n\nexport type ConfirmCallback = (ids: string[]) => Promise<void>;\n\nexport type LoadItemsCallback = (filters: FiltersData) => Promise<ItemData[]>;\n\nexport type FiltersData = {\n pattern?: string;\n object?: string;\n};\n\nexport type ItemData = {\n type: ItemType;\n id: string;\n name: string;\n dataType: string;\n description: string;\n};\n\nexport type ItemType = \"variable\" | \"attribute\";\n"],"version":3}
1
+ {"file":"gx-ide-data-selector.entry.js","mappings":"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","names":[],"sources":["src/components/data-selector/data-selector.scss?tag=gx-ide-data-selector&encapsulation=shadow","src/components/data-selector/data-selector.tsx"],"sourcesContent":["@import \"../../../node_modules/@genexus/mercury/dist/mercury.scss\"; // for the tabular-grid-cell-layout mixin\n\n:host {\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n overflow: auto;\n block-size: 100%;\n}\n\n.section {\n display: contents;\n}\n\n.header__field-group {\n display: grid;\n grid-template-columns: 1fr 1fr;\n}\n\n.tabular-grid {\n contain: size;\n}\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".data\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\nch-tabular-grid.empty-result::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\nch-tabular-grid-rowset-empty {\n // to make the loader be positioned relative to 'ch-tabular-grid-rowset-empty'\n position: relative;\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n getAssetPath,\n JSX\n} from \"@stencil/core\";\n\nimport { Locale } from \"../../common/locale\";\n\nimport { config } from \"../../common/config\";\nimport { EntityData } from \"../../common/types\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { TabularGridSelectionChangedEvent } from \"@genexus/chameleon-controls-library\";\n\n// Best performance bundle\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/edit\",\n \"components/tabular-grid\",\n \"components/icon\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\n\n@Component({\n tag: \"gx-ide-data-selector\",\n styleUrl: \"data-selector.scss\",\n shadow: { delegatesFocus: true },\n assetsDirs: [\"gx-ide-assets/data-selector\"]\n})\nexport class GxIdeDataSelector {\n #firstGridObjectId: string; // used to select the first item after \"loadItemsCallback\"\n #loadItemsCallbackJustCalled: boolean = false; // used to select the first item after \"loadItemsCallback\"\n\n #componentLocale: any;\n #animateEmptyState: boolean = false;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/data-selector/shortcuts.json`);\n /* References needed to collect data */\n #filterPatternEl!: HTMLChEditElement;\n #filterObjectEl!: HTMLGxIdeEntitySelectorElement;\n #chShortcutsEl: HTMLChShortcutsElement;\n #chTabularGridObjectsEl: HTMLChTabularGridElement;\n\n @Element() el: HTMLGxIdeDataSelectorElement;\n\n /**\n * True if loadItemsCallback has been called and has not been resolved yet.\n */\n @State() loading: boolean = true;\n\n /**\n * The objects rendered in the table\n */\n @State() objects: ItemData[] = [];\n\n /**\n * The selected objects in the table of objects\n */\n @State() selectedObjectsIds: string[] = [];\n\n /**\n * Callback invoked when the user wishes to cancel the selection of objects.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n * Callback invoked when the user presses the 'OK' button\n */\n @Prop() readonly confirmCallback!: ConfirmCallback;\n\n /**\n * The default value for the module/folder filter\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Callback invoked when user presses the edit button. Receives the first\n * selected element id as a parameter.\n */\n @Prop() readonly editCallback: EditCallback;\n\n /**\n * Callback invoked when the component needs to reload the list of attributes.\n */\n @Prop() readonly loadItemsCallback!: LoadItemsCallback;\n\n /**\n * If true, it will display a loader when needed.\n */\n @Prop() readonly loader = false;\n\n /**\n * Callback invoked when the user presses the 'New' button.\n */\n @Prop() readonly newVariableCallback: NewVariableCallback;\n\n /**\n * Callback invoked when the action is executed in the Object filter. It returns\n * the information of the selected object (id and name) or 'undefined' if it was\n * canceled.\n */\n @Prop() readonly selectObjectCallback: SelectObjectCallback;\n\n /**\n * Single if multiple object selection is not allowed. Default is multiple\n */\n @Prop() readonly selectionType: \"single\" | \"multiple\" = \"multiple\";\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n connectedCallback() {\n this.#refreshUIWithNewConfiguration();\n }\n\n componentDidLoad() {\n this.#filterPatternEl.focus();\n }\n\n componentDidRender() {\n this.#evaluateFirstRowSelection();\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n /**\n * Validate necessary data input\n */\n @Method()\n async validate(): Promise<boolean> {\n const isValid = true;\n return isValid;\n }\n\n /**\n * After items have been loaded and rendered, the first row should be selected.\n */\n #evaluateFirstRowSelection = () => {\n if (this.#loadItemsCallbackJustCalled) {\n this.#chTabularGridObjectsEl.selectRow(this.#firstGridObjectId);\n }\n this.#loadItemsCallbackJustCalled = false;\n };\n\n #chGridKeyDownHandler = (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n this.#confirmCallbackHandler(e);\n }\n };\n\n #confirmCallbackHandler = (e: MouseEvent | KeyboardEvent): void => {\n e.stopPropagation();\n this.confirmCallback(this.selectedObjectsIds);\n };\n\n #editCallbackHandler = async (e: MouseEvent): Promise<void> => {\n e.stopPropagation();\n if (this.selectedObjectsIds[0]) {\n const result = await this.editCallback(this.selectedObjectsIds[0]);\n if (result) {\n this.#refreshUIWithNewConfiguration();\n }\n }\n };\n\n #hostKeyPressHandler = (e: KeyboardEvent) => {\n // TODO : revise why this is necessary\n // just prevent keypress propagation\n if (e.key === \"Enter\") {\n e.stopPropagation();\n }\n };\n\n #objectsSelectionChangedHandler = (\n event: CustomEvent<TabularGridSelectionChangedEvent>\n ) => {\n this.selectedObjectsIds = event.detail.rowsId;\n };\n\n #newVariableCallbackHandler = async () => {\n const response = await this.newVariableCallback();\n if (response) {\n this.#refreshUIWithNewConfiguration();\n }\n };\n #refreshUIWithNewConfiguration = (): void => {\n this.objects = [];\n const filters: FiltersData = {\n pattern: this.#filterPatternEl?.value,\n object: this.#filterObjectEl?.value?.id\n };\n this.loading = true;\n this.loadItemsCallback(filters).then((items: ItemData[]) => {\n if (items.length) {\n this.objects = this.#sortObjectsByName(items);\n this.#firstGridObjectId = this.objects[0].id;\n this.#loadItemsCallbackJustCalled = true;\n }\n this.selectedObjectsIds = [];\n this.loading = false;\n });\n };\n\n #renderFilter = (): Element[] => {\n return [\n <div class=\"header__field-group field-group\">\n <div class=\"field field-block pattern-field\">\n <label class=\"label\" htmlFor=\"filter-pattern\">\n {this.#componentLocale.filter.pattern}\n </label>\n <ch-edit\n autoFocus\n id=\"filter-pattern\"\n name=\"filter-pattern\"\n class=\"input pattern-input\"\n part=\"filter-pattern\"\n debounce={config.inputDebounce}\n onInput={this.#refreshUIWithNewConfiguration}\n ref={(el: HTMLChEditElement) =>\n (this.#filterPatternEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n <gx-ide-entity-selector\n id=\"object-selector\"\n value={this.defaultModule}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectObjectCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#filterObjectEl = el as HTMLGxIdeEntitySelectorElement)\n }\n class=\"entity\"\n onValueChanged={this.#refreshUIWithNewConfiguration}\n ></gx-ide-entity-selector>\n </div>\n ];\n };\n\n #renderObjects = (): Element => {\n const gridIsEmpty = !this.objects.length;\n const displayLoader = this.loader && this.loading;\n if (!gridIsEmpty || displayLoader) {\n this.#animateEmptyState = true; // improve performance if is first render\n }\n return (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"empty-result\": this.objects.length === 0,\n \"data\": true\n }}\n rowSelectionMode={this.selectionType}\n onKeyDown={this.#chGridKeyDownHandler}\n part=\"ch-grid-objects\"\n onSelectionChanged={\n this.objects.length ? this.#objectsSelectionChangedHandler : undefined\n }\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chTabularGridObjectsEl = el as HTMLChTabularGridElement)\n }\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#componentLocale.tableHead.name}\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.common}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#componentLocale.tableHead.dataType}\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.common}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#componentLocale.tableHead.description}\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.common}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {!gridIsEmpty ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objects.map((obj: ItemData) => (\n <ch-tabular-grid-row\n rowid={obj.id}\n onDblClick={this.#confirmCallbackHandler}\n class=\"tabular-grid-row\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image\n src={\n obj.type === \"attribute\"\n ? \"objects/attribute\"\n : \"objects-parts/variables\"\n }\n class=\"icon-md\"\n ></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.dataType}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.description}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n {displayLoader ? (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.loader.title}\n show\n ></gx-ide-loader>\n ) : (\n <gx-ide-empty-state\n isAnimated={this.#animateEmptyState}\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#componentLocale.emptyState.title}\n ></gx-ide-empty-state>\n )}\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #renderEditButtons = (): JSX.Element | null => {\n if (!this.editCallback && !this.newVariableCallback) {\n return null;\n }\n\n const newVariableButtonEnabled = this.newVariableCallback && !this.loading;\n const editButtonEnabled =\n this.editCallback && !this.loading && this.selectedObjectsIds.length;\n\n return (\n <div class=\"buttons-spacer\">\n {this.newVariableCallback ? (\n <button\n // New Variable Button\n class=\"button-secondary\"\n disabled={!newVariableButtonEnabled}\n part=\"button button-new\"\n type=\"button\"\n onClick={this.#newVariableCallbackHandler}\n >\n {this.#componentLocale.footer.btnNew}\n </button>\n ) : (\n []\n )}\n {this.editCallback ? (\n <button\n // Edit Button\n class=\"button-secondary\"\n disabled={!editButtonEnabled}\n part=\"button button-edit\"\n type=\"button\"\n onClick={editButtonEnabled && this.#editCallbackHandler}\n >\n {this.#componentLocale.footer.btnEdit}\n </button>\n ) : (\n []\n )}\n </div>\n );\n };\n\n #sortObjectsByName = (objects: ItemData[]): ItemData[] =>\n // TODO (make this a common helper function\n // and use it in other dialog grids that\n // require filter by name).\n objects.sort((a, b) => {\n const nameA = a.name.toLowerCase(),\n nameB = b.name.toLowerCase();\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n return 0;\n });\n\n render() {\n const okButtonEnabled = !this.loading;\n const footerJustifySpaceBetween: boolean =\n !!this.newVariableCallback || !!this.editCallback;\n\n return (\n <Host onKeyPress={this.#hostKeyPressHandler} class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border spacing-body-block-start spacing-body-inline\">\n {this.#renderFilter()}\n </header>\n {this.#renderObjects()}\n <footer\n class={{\n \"footer\": true,\n \"control-footer-with-border\": true,\n \"control-footer-space-between\": footerJustifySpaceBetween,\n \"spacing-body-inline\": true,\n \"spacing-body-block-end\": true\n }}\n >\n {this.#renderEditButtons()}\n <div class=\"buttons-spacer\">\n <button\n // Cancel Button\n class=\"button-secondary\"\n part=\"button button-cancel\"\n type=\"button\"\n onClick={this.cancelCallback}\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n // Confirm Button\n class=\"button-primary\"\n part=\"button button-ok\"\n disabled={!okButtonEnabled}\n type=\"button\"\n onClick={okButtonEnabled && this.#confirmCallbackHandler}\n >\n {this.#componentLocale.footer.btnConfirm}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type NewVariableCallback = () => Promise<boolean> | undefined;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type SelectObjectCallback = () => Promise<EntityData | undefined>;\n\nexport type EditCallback = (id: string) => Promise<boolean> | undefined;\n\nexport type ConfirmCallback = (ids: string[]) => Promise<void>;\n\nexport type LoadItemsCallback = (filters: FiltersData) => Promise<ItemData[]>;\n\nexport type FiltersData = {\n pattern?: string;\n object?: string;\n};\n\nexport type ItemData = {\n type: ItemType;\n id: string;\n name: string;\n dataType: string;\n description: string;\n};\n\nexport type ItemType = \"variable\" | \"attribute\";\n"],"version":3}