@genexus/genexus-ide-ui 3.0.2 → 3.1.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 (100) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-file-item.cjs.entry.js +21 -2
  3. package/dist/cjs/gx-ide-file-item.cjs.entry.js.map +1 -1
  4. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +11 -8
  5. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-launchpad.cjs.entry.js +4 -16
  7. package/dist/cjs/gx-ide-launchpad.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-multi-select.cjs.entry.js +113 -0
  9. package/dist/cjs/gx-ide-multi-select.cjs.entry.js.map +1 -0
  10. package/dist/cjs/gx-ide-search.cjs.entry.js +171 -0
  11. package/dist/cjs/gx-ide-search.cjs.entry.js.map +1 -0
  12. package/dist/cjs/gx-ide-ww-files.cjs.entry.js +3 -4
  13. package/dist/cjs/gx-ide-ww-files.cjs.entry.js.map +1 -1
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/collection/collection-manifest.json +2 -0
  16. package/dist/collection/components/_helpers/multi-select/gx-ide-multi-select.css +193 -0
  17. package/dist/collection/components/_helpers/multi-select/gx-ide-multi-select.js +209 -0
  18. package/dist/collection/components/_helpers/multi-select/gx-ide-multi-select.js.map +1 -0
  19. package/dist/collection/components/file-uploader/file-item/file-item.css +23 -28
  20. package/dist/collection/components/file-uploader/file-item/file-item.js +37 -1
  21. package/dist/collection/components/file-uploader/file-item/file-item.js.map +1 -1
  22. package/dist/collection/components/file-uploader/file-uploader.css +11 -22
  23. package/dist/collection/components/file-uploader/file-uploader.js +10 -7
  24. package/dist/collection/components/file-uploader/file-uploader.js.map +1 -1
  25. package/dist/collection/components/file-uploader/gx-ide-assets/file-uploader/langs/file-uploader.lang.en.json +7 -3
  26. package/dist/collection/components/file-uploader/gx-ide-assets/file-uploader/langs/file-uploader.lang.ja.json +7 -3
  27. package/dist/collection/components/file-uploader/gx-ide-assets/file-uploader/langs/file-uploader.lang.zh.json +8 -3
  28. package/dist/collection/components/launchpad/root/gx-ide-assets/launchpad/shortcuts.json +1 -26
  29. package/dist/collection/components/launchpad/root/launchpad.js +5 -42
  30. package/dist/collection/components/launchpad/root/launchpad.js.map +1 -1
  31. package/dist/collection/components/search/gx-ide-assets/search/langs/search.lang.en.json +37 -0
  32. package/dist/collection/components/search/gx-ide-assets/search/langs/search.lang.ja.json +37 -0
  33. package/dist/collection/components/search/gx-ide-assets/search/langs/search.lang.zh.json +37 -0
  34. package/dist/collection/components/search/search.css +44 -0
  35. package/dist/collection/components/search/search.js +275 -0
  36. package/dist/collection/components/search/search.js.map +1 -0
  37. package/dist/collection/components/ww-files/ww-files.js +3 -4
  38. package/dist/collection/components/ww-files/ww-files.js.map +1 -1
  39. package/dist/collection/testing/locale.e2e.js +4 -1
  40. package/dist/collection/testing/locale.e2e.js.map +1 -1
  41. package/dist/components/file-item.js +22 -2
  42. package/dist/components/file-item.js.map +1 -1
  43. package/dist/components/gx-ide-file-uploader.js +11 -8
  44. package/dist/components/gx-ide-file-uploader.js.map +1 -1
  45. package/dist/components/gx-ide-launchpad.js +6 -19
  46. package/dist/components/gx-ide-launchpad.js.map +1 -1
  47. package/dist/components/gx-ide-multi-select.d.ts +11 -0
  48. package/dist/components/gx-ide-multi-select.js +132 -0
  49. package/dist/components/gx-ide-multi-select.js.map +1 -0
  50. package/dist/components/gx-ide-search.d.ts +11 -0
  51. package/dist/components/gx-ide-search.js +206 -0
  52. package/dist/components/gx-ide-search.js.map +1 -0
  53. package/dist/components/gx-ide-ww-files.js +3 -4
  54. package/dist/components/gx-ide-ww-files.js.map +1 -1
  55. package/dist/esm/genexus-ide-ui.js +1 -1
  56. package/dist/esm/gx-ide-file-item.entry.js +21 -2
  57. package/dist/esm/gx-ide-file-item.entry.js.map +1 -1
  58. package/dist/esm/gx-ide-file-uploader.entry.js +11 -8
  59. package/dist/esm/gx-ide-file-uploader.entry.js.map +1 -1
  60. package/dist/esm/gx-ide-launchpad.entry.js +5 -17
  61. package/dist/esm/gx-ide-launchpad.entry.js.map +1 -1
  62. package/dist/esm/gx-ide-multi-select.entry.js +109 -0
  63. package/dist/esm/gx-ide-multi-select.entry.js.map +1 -0
  64. package/dist/esm/gx-ide-search.entry.js +167 -0
  65. package/dist/esm/gx-ide-search.entry.js.map +1 -0
  66. package/dist/esm/gx-ide-ww-files.entry.js +3 -4
  67. package/dist/esm/gx-ide-ww-files.entry.js.map +1 -1
  68. package/dist/esm/loader.js +1 -1
  69. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  70. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  71. package/dist/genexus-ide-ui/gx-ide-assets/file-uploader/langs/file-uploader.lang.en.json +7 -3
  72. package/dist/genexus-ide-ui/gx-ide-assets/file-uploader/langs/file-uploader.lang.ja.json +7 -3
  73. package/dist/genexus-ide-ui/gx-ide-assets/file-uploader/langs/file-uploader.lang.zh.json +8 -3
  74. package/dist/genexus-ide-ui/gx-ide-assets/launchpad/shortcuts.json +1 -26
  75. package/dist/genexus-ide-ui/gx-ide-assets/search/langs/search.lang.en.json +37 -0
  76. package/dist/genexus-ide-ui/gx-ide-assets/search/langs/search.lang.ja.json +37 -0
  77. package/dist/genexus-ide-ui/gx-ide-assets/search/langs/search.lang.zh.json +37 -0
  78. package/dist/genexus-ide-ui/p-0745a565.entry.js +152 -0
  79. package/dist/genexus-ide-ui/p-0745a565.entry.js.map +1 -0
  80. package/dist/genexus-ide-ui/{p-6246204f.entry.js → p-25e749c7.entry.js} +44 -57
  81. package/dist/genexus-ide-ui/p-25e749c7.entry.js.map +1 -0
  82. package/dist/genexus-ide-ui/{p-50dae653.entry.js → p-7bdeae77.entry.js} +211 -213
  83. package/dist/genexus-ide-ui/p-7bdeae77.entry.js.map +1 -0
  84. package/dist/genexus-ide-ui/p-8b5c826b.entry.js +212 -0
  85. package/dist/genexus-ide-ui/p-8b5c826b.entry.js.map +1 -0
  86. package/dist/genexus-ide-ui/p-c460c9e7.entry.js +187 -0
  87. package/dist/genexus-ide-ui/p-c460c9e7.entry.js.map +1 -0
  88. package/dist/genexus-ide-ui/{p-aad714a5.entry.js → p-e2b88bea.entry.js} +70 -67
  89. package/dist/genexus-ide-ui/p-e2b88bea.entry.js.map +1 -0
  90. package/dist/types/components/_helpers/multi-select/gx-ide-multi-select.d.ts +29 -0
  91. package/dist/types/components/file-uploader/file-item/file-item.d.ts +2 -0
  92. package/dist/types/components/launchpad/root/launchpad.d.ts +0 -4
  93. package/dist/types/components/search/search.d.ts +60 -0
  94. package/dist/types/components.d.ts +121 -4
  95. package/package.json +1 -1
  96. package/dist/genexus-ide-ui/p-50dae653.entry.js.map +0 -1
  97. package/dist/genexus-ide-ui/p-6246204f.entry.js.map +0 -1
  98. package/dist/genexus-ide-ui/p-aad714a5.entry.js.map +0 -1
  99. package/dist/genexus-ide-ui/p-f3c3e830.entry.js +0 -163
  100. package/dist/genexus-ide-ui/p-f3c3e830.entry.js.map +0 -1
@@ -0,0 +1,206 @@
1
+ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
+ import { g as getIconPath } from './mer-animated-dots.js';
3
+ import 'lit';
4
+ import 'lit/directives/when.js';
5
+ import 'lit/directives/if-defined.js';
6
+ import { c as config } from './config.js';
7
+ import { L as Locale } from './locale.js';
8
+ import { d as defineCustomElement$3 } from './gx-ide-empty-state2.js';
9
+ import { d as defineCustomElement$2 } from './ide-loader.js';
10
+
11
+ const searchCss = ":host{display:grid;block-size:100%}.search{display:grid;grid-template-rows:max-content 1fr;gap:var(--spacing-gap-xl)}.search__header{display:grid;grid-template-columns:1fr}.search__results{position:relative}ch-tree-view-render::part(root-item item__header){padding-inline-start:0;font-weight:var(--font-style-semi-bold);font-size:var(--font-size-body-s);line-height:var(--line-height-relaxed);font-family:var(--font-family-body)}ch-tree-view-render::part(search-item item__header){padding-inline-start:0;font-weight:var(--font-style-regular);font-size:var(--font-size-body-s);line-height:var(--line-height-relaxed);font-family:var(--font-family-body);color:var(--color-text-neutral-neutral) !important}.input--loading::part(start-img){animation:spin 1s linear infinite}@keyframes spin{100%{transform:rotate(360deg)}}";
12
+
13
+ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
14
+ if (kind === "m")
15
+ throw new TypeError("Private method is not writable");
16
+ if (kind === "a" && !f)
17
+ throw new TypeError("Private accessor was defined without a setter");
18
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
19
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
20
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
21
+ };
22
+ var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
23
+ if (kind === "a" && !f)
24
+ throw new TypeError("Private accessor was defined without a getter");
25
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
26
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
27
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
28
+ };
29
+ var _GxIdeSearch_componentLocale, _GxIdeSearch_searchInputValue, _GxIdeSearch_searchInputHandler, _GxIdeSearch_searchInputKeyDownHandler, _GxIdeSearch_mapSearchResultToTreeViewModel, _GxIdeSearch_treeItemDoubleClickHandler, _GxIdeSearch_renderSearchResults;
30
+ const CSS_BUNDLES = [
31
+ "resets/box-sizing",
32
+ "components/edit",
33
+ "components/tree-view",
34
+ "utils/typography",
35
+ "utils/spacing",
36
+ "chameleon/scrollbar"
37
+ ];
38
+ const SEARCH_ICON = getIconPath({
39
+ category: "system",
40
+ name: "search",
41
+ colorType: "on-surface"
42
+ });
43
+ const INFORMATION_ICON = getIconPath({
44
+ category: "system",
45
+ name: "information",
46
+ colorType: "on-interactive"
47
+ });
48
+ const GxIdeSearch$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeSearch extends HTMLElement {
49
+ constructor() {
50
+ super();
51
+ this.__registerHost();
52
+ this.__attachShadow();
53
+ _GxIdeSearch_componentLocale.set(this, void 0);
54
+ _GxIdeSearch_searchInputValue.set(this, "");
55
+ _GxIdeSearch_searchInputHandler.set(this, async (event) => {
56
+ var _a;
57
+ if (!this.isKbOpen) {
58
+ return;
59
+ }
60
+ const inputElement = event.target;
61
+ const searchText = (_a = inputElement === null || inputElement === void 0 ? void 0 : inputElement.value) === null || _a === void 0 ? void 0 : _a.trim();
62
+ __classPrivateFieldSet(this, _GxIdeSearch_searchInputValue, searchText, "f");
63
+ if (!searchText) {
64
+ this.searchResultModel = [];
65
+ this.hasSearched = false;
66
+ this.isSearching = false;
67
+ return;
68
+ }
69
+ this.hasSearched = true;
70
+ this.isSearching = true;
71
+ this.searchResultModel = [];
72
+ try {
73
+ const searchResultData = await this.searchCallback({
74
+ text: searchText,
75
+ onlyTitles: false,
76
+ includeSubModules: true,
77
+ allBranches: false,
78
+ forLLM: false
79
+ });
80
+ this.searchResultModel =
81
+ __classPrivateFieldGet(this, _GxIdeSearch_mapSearchResultToTreeViewModel, "f").call(this, searchResultData);
82
+ }
83
+ finally {
84
+ this.isSearching = false;
85
+ }
86
+ });
87
+ _GxIdeSearch_searchInputKeyDownHandler.set(this, (event) => {
88
+ if (event.key === "Enter") {
89
+ __classPrivateFieldGet(this, _GxIdeSearch_searchInputHandler, "f").call(this, event);
90
+ }
91
+ });
92
+ _GxIdeSearch_mapSearchResultToTreeViewModel.set(this, (searchResultData) => {
93
+ if (!searchResultData || searchResultData.length === 0) {
94
+ return [];
95
+ }
96
+ return [
97
+ {
98
+ id: "root",
99
+ caption: `${__classPrivateFieldGet(this, _GxIdeSearch_componentLocale, "f").labels.results} (${searchResultData.length})`,
100
+ expanded: true,
101
+ parts: "root-item",
102
+ items: searchResultData.map((item) => ({
103
+ id: item.objectId,
104
+ startImgSrc: item.objectIcon,
105
+ caption: item.objectName,
106
+ leaf: true,
107
+ parts: "search-item"
108
+ }))
109
+ }
110
+ ];
111
+ });
112
+ _GxIdeSearch_treeItemDoubleClickHandler.set(this, async (event) => {
113
+ var _a;
114
+ const itemId = event.detail.id;
115
+ await ((_a = this.itemDoubleClickCallback) === null || _a === void 0 ? void 0 : _a.call(this, itemId));
116
+ });
117
+ _GxIdeSearch_renderSearchResults.set(this, () => {
118
+ if (!this.isKbOpen) {
119
+ return (h("gx-ide-empty-state", { stateTitle: __classPrivateFieldGet(this, _GxIdeSearch_componentLocale, "f").noKbOpenState.title, stateDescription: __classPrivateFieldGet(this, _GxIdeSearch_componentLocale, "f").noKbOpenState.description, stateIconSrc: INFORMATION_ICON, isAnimated: true }));
120
+ }
121
+ if (this.isSearching) {
122
+ return (h("gx-ide-loader", { loaderTitle: __classPrivateFieldGet(this, _GxIdeSearch_componentLocale, "f").loader.title, show: true }));
123
+ }
124
+ if (this.searchResultModel.length > 0) {
125
+ return (h("ch-tree-view-render", { class: "tree-view", model: this.searchResultModel, expandableButton: "no", expandOnClick: false, onItemOpenReference: __classPrivateFieldGet(this, _GxIdeSearch_treeItemDoubleClickHandler, "f") }));
126
+ }
127
+ if (this.hasSearched) {
128
+ return (h("gx-ide-empty-state", { stateTitle: __classPrivateFieldGet(this, _GxIdeSearch_componentLocale, "f").emptyState.title, stateDescription: __classPrivateFieldGet(this, _GxIdeSearch_componentLocale, "f").emptyState.description, stateIconSrc: INFORMATION_ICON, isAnimated: true }));
129
+ }
130
+ return null;
131
+ });
132
+ this.searchResultModel = [];
133
+ this.hasSearched = false;
134
+ this.isSearching = false;
135
+ this.isKbOpen = false;
136
+ this.searchCallback = undefined;
137
+ this.itemDoubleClickCallback = undefined;
138
+ }
139
+ valueChangeHandler(newValue) {
140
+ if (!newValue) {
141
+ __classPrivateFieldSet(this, _GxIdeSearch_searchInputValue, "", "f");
142
+ this.searchResultModel = [];
143
+ this.hasSearched = false;
144
+ this.isSearching = false;
145
+ }
146
+ }
147
+ /**
148
+ * Method to show or hide the settings panel, can be called from the outside to control the visibility of the settings
149
+ */
150
+ async showSettings(_show) {
151
+ return Promise.resolve();
152
+ }
153
+ async componentWillLoad() {
154
+ __classPrivateFieldSet(this, _GxIdeSearch_componentLocale, await Locale.getComponentStrings(this.el), "f");
155
+ }
156
+ render() {
157
+ return (h(Host, { class: "widget" }, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "spacing-body search" }, h("header", { class: "search__header" }, h("ch-edit", { id: "search-input", class: "input", accessibleName: __classPrivateFieldGet(this, _GxIdeSearch_componentLocale, "f").accessibleName, placeholder: __classPrivateFieldGet(this, _GxIdeSearch_componentLocale, "f").placeholders.search, debounce: config.inputDebounce, onInput: __classPrivateFieldGet(this, _GxIdeSearch_searchInputHandler, "f"), onKeyDown: __classPrivateFieldGet(this, _GxIdeSearch_searchInputKeyDownHandler, "f"), type: "search", startImgSrc: SEARCH_ICON, disabled: !this.isKbOpen, value: __classPrivateFieldGet(this, _GxIdeSearch_searchInputValue, "f") })), h("main", { class: "search__results" }, __classPrivateFieldGet(this, _GxIdeSearch_renderSearchResults, "f").call(this)))));
158
+ }
159
+ static get assetsDirs() { return ["gx-ide-assets/search"]; }
160
+ get el() { return this; }
161
+ static get watchers() { return {
162
+ "isKbOpen": ["valueChangeHandler"]
163
+ }; }
164
+ static get style() { return searchCss; }
165
+ }, [1, "gx-ide-search", {
166
+ "isKbOpen": [4, "is-kb-open"],
167
+ "searchCallback": [16],
168
+ "itemDoubleClickCallback": [16],
169
+ "searchResultModel": [32],
170
+ "hasSearched": [32],
171
+ "isSearching": [32],
172
+ "showSettings": [64]
173
+ }, undefined, {
174
+ "isKbOpen": ["valueChangeHandler"]
175
+ }]);
176
+ _GxIdeSearch_componentLocale = new WeakMap(), _GxIdeSearch_searchInputValue = new WeakMap(), _GxIdeSearch_searchInputHandler = new WeakMap(), _GxIdeSearch_searchInputKeyDownHandler = new WeakMap(), _GxIdeSearch_mapSearchResultToTreeViewModel = new WeakMap(), _GxIdeSearch_treeItemDoubleClickHandler = new WeakMap(), _GxIdeSearch_renderSearchResults = new WeakMap();
177
+ function defineCustomElement$1() {
178
+ if (typeof customElements === "undefined") {
179
+ return;
180
+ }
181
+ const components = ["gx-ide-search", "gx-ide-empty-state", "gx-ide-loader"];
182
+ components.forEach(tagName => { switch (tagName) {
183
+ case "gx-ide-search":
184
+ if (!customElements.get(tagName)) {
185
+ customElements.define(tagName, GxIdeSearch$1);
186
+ }
187
+ break;
188
+ case "gx-ide-empty-state":
189
+ if (!customElements.get(tagName)) {
190
+ defineCustomElement$3();
191
+ }
192
+ break;
193
+ case "gx-ide-loader":
194
+ if (!customElements.get(tagName)) {
195
+ defineCustomElement$2();
196
+ }
197
+ break;
198
+ } });
199
+ }
200
+
201
+ const GxIdeSearch = GxIdeSearch$1;
202
+ const defineCustomElement = defineCustomElement$1;
203
+
204
+ export { GxIdeSearch, defineCustomElement };
205
+
206
+ //# sourceMappingURL=gx-ide-search.js.map
@@ -0,0 +1 @@
1
+ {"file":"gx-ide-search.js","mappings":"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","names":["GxIdeSearch"],"sources":["src/components/search/search.scss?tag=gx-ide-search&encapsulation=shadow","src/components/search/search.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n}\n\n.search {\n display: grid;\n grid-template-rows: max-content 1fr;\n gap: var(--spacing-gap-xl);\n\n &__header {\n display: grid;\n grid-template-columns: 1fr;\n }\n\n &__results {\n position: relative;\n }\n}\nch-tree-view-render::part(root-item item__header) {\n padding-inline-start: 0;\n font-weight: var(--font-style-semi-bold);\n font-size: var(--font-size-body-s);\n line-height: var(--line-height-relaxed);\n font-family: var(--font-family-body);\n}\nch-tree-view-render::part(search-item item__header) {\n padding-inline-start: 0;\n font-weight: var(--font-style-regular);\n font-size: var(--font-size-body-s);\n line-height: var(--line-height-relaxed);\n font-family: var(--font-family-body);\n color: var(--color-text-neutral-neutral) !important;\n}\n.input--loading::part(start-img) {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 100% {\n transform: rotate(360deg);\n }\n}\n","import {\n Component,\n Element,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n\nimport {\n ChTreeViewRenderCustomEvent,\n TreeViewItemModel,\n TreeViewItemOpenReferenceInfo,\n TreeViewModel\n} from \"@genexus/chameleon-controls-library\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../common/config\";\nimport { Locale } from \"../../common/locale\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/edit\",\n \"components/tree-view\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n});\n\nconst INFORMATION_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-interactive\"\n});\n\n@Component({\n tag: \"gx-ide-search\",\n styleUrl: \"search.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/search\"]\n})\nexport class GxIdeSearch {\n #componentLocale: any;\n #searchInputValue: string = \"\";\n\n @Element() el: HTMLGxIdeSearchElement;\n\n /**\n * Holds the search results as a TreeViewModel\n */\n @State() searchResultModel: TreeViewModel = [];\n\n /**\n * Tracks if a search has been performed\n */\n @State() hasSearched = false;\n\n /**\n * Tracks if a search is currently in progress\n */\n @State() isSearching = false;\n\n /**\n * Indicates whether a Knowledge Base is currently open\n */\n @Prop() readonly isKbOpen: boolean = false;\n @Watch(\"isKbOpen\")\n valueChangeHandler(newValue: boolean) {\n if (!newValue) {\n this.#searchInputValue = \"\";\n this.searchResultModel = [];\n this.hasSearched = false;\n this.isSearching = false;\n }\n }\n\n /**\n * Callback to fetch search results\n */\n @Prop() readonly searchCallback!: (\n searchParams: SearchParamsData\n ) => Promise<SearchResultData[]>;\n\n /**\n * Callback invoked when a search result item is double-clicked\n */\n @Prop() readonly itemDoubleClickCallback?: ItemDoubleClickCallback;\n\n /**\n * Method to show or hide the settings panel, can be called from the outside to control the visibility of the settings\n */\n @Method()\n async showSettings(_show: boolean): Promise<void> {\n return Promise.resolve();\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #searchInputHandler = async (event: CustomEvent<string> | InputEvent) => {\n if (!this.isKbOpen) {\n return;\n }\n\n const inputElement = event.target as HTMLChEditElement;\n const searchText = inputElement?.value?.trim();\n this.#searchInputValue = searchText;\n\n if (!searchText) {\n this.searchResultModel = [];\n this.hasSearched = false;\n this.isSearching = false;\n return;\n }\n\n this.hasSearched = true;\n this.isSearching = true;\n this.searchResultModel = [];\n\n try {\n const searchResultData = await this.searchCallback({\n text: searchText,\n onlyTitles: false,\n includeSubModules: true,\n allBranches: false,\n forLLM: false\n });\n\n this.searchResultModel =\n this.#mapSearchResultToTreeViewModel(searchResultData);\n } finally {\n this.isSearching = false;\n }\n };\n\n #searchInputKeyDownHandler = (event: KeyboardEvent) => {\n if (event.key === \"Enter\") {\n this.#searchInputHandler(event as any);\n }\n };\n\n #mapSearchResultToTreeViewModel = (\n searchResultData: SearchResultData[]\n ): TreeViewModel => {\n if (!searchResultData || searchResultData.length === 0) {\n return [];\n }\n return [\n {\n id: \"root\",\n caption: `${this.#componentLocale.labels.results} (${searchResultData.length})`,\n expanded: true,\n parts: \"root-item\",\n items: searchResultData.map(\n (item): TreeViewItemModel => ({\n id: item.objectId,\n startImgSrc: item.objectIcon,\n caption: item.objectName,\n leaf: true,\n parts: \"search-item\"\n })\n )\n }\n ];\n };\n\n #treeItemDoubleClickHandler = async (\n event: ChTreeViewRenderCustomEvent<TreeViewItemOpenReferenceInfo>\n ) => {\n const itemId = event.detail.id;\n await this.itemDoubleClickCallback?.(itemId);\n };\n\n #renderSearchResults = () => {\n if (!this.isKbOpen) {\n return (\n <gx-ide-empty-state\n stateTitle={this.#componentLocale.noKbOpenState.title}\n stateDescription={this.#componentLocale.noKbOpenState.description}\n stateIconSrc={INFORMATION_ICON}\n isAnimated={true}\n ></gx-ide-empty-state>\n );\n }\n\n if (this.isSearching) {\n return (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.loader.title}\n show={true}\n ></gx-ide-loader>\n );\n }\n\n if (this.searchResultModel.length > 0) {\n return (\n <ch-tree-view-render\n class=\"tree-view\"\n model={this.searchResultModel}\n expandableButton=\"no\"\n expandOnClick={false}\n onItemOpenReference={this.#treeItemDoubleClickHandler}\n />\n );\n }\n\n if (this.hasSearched) {\n return (\n <gx-ide-empty-state\n stateTitle={this.#componentLocale.emptyState.title}\n stateDescription={this.#componentLocale.emptyState.description}\n stateIconSrc={INFORMATION_ICON}\n isAnimated={true}\n ></gx-ide-empty-state>\n );\n }\n\n return null;\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class={\"spacing-body search\"}>\n <header class=\"search__header\">\n <ch-edit\n id=\"search-input\"\n class=\"input\"\n accessibleName={this.#componentLocale.accessibleName}\n placeholder={this.#componentLocale.placeholders.search}\n debounce={config.inputDebounce}\n onInput={this.#searchInputHandler}\n onKeyDown={this.#searchInputKeyDownHandler}\n type=\"search\"\n startImgSrc={SEARCH_ICON}\n disabled={!this.isKbOpen}\n value={this.#searchInputValue}\n ></ch-edit>\n </header>\n\n <main class=\"search__results\">{this.#renderSearchResults()}</main>\n </section>\n </Host>\n );\n }\n}\n\nexport type SearchResultData = {\n objectId: string;\n objectName: string;\n objectTypeName: string;\n objectTypeId: string;\n objectModuleName: string;\n objectUri: string;\n objectIcon: string;\n content: string;\n preview: string;\n};\n\nexport type SearchParamsData = {\n moduleGuid?: string;\n objectTypeName?: string;\n text: string;\n tags?: string;\n count?: number;\n onlyTitles: boolean;\n includeSubModules: boolean;\n allBranches: boolean;\n forLLM: boolean;\n};\n\nexport type ItemDoubleClickCallback = (itemId: string) => Promise<void>;\n\nexport type SearchCallback = (\n searchParams: SearchParamsData\n) => Promise<SearchResultData[]>;\n"],"version":3}
@@ -29,7 +29,7 @@ var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) ||
29
29
  throw new TypeError("Cannot read private member from an object whose class did not declare it");
30
30
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
31
31
  };
32
- var _GxIdeWWFiles_componentLocale, _GxIdeWWFiles_ACCORDION_MODEL, _GxIdeWWFiles_nameValue, _GxIdeWWFiles_moduleValue, _GxIdeWWFiles_searchContentsValue, _GxIdeWWFiles_categoryValue, _GxIdeWWFiles_allDescendants, _GxIdeWWFiles_userValue, _GxIdeWWFiles_selectedObjectsIds, _GxIdeWWFiles_chGridEl, _GxIdeWWFiles_filterModuleEl, _GxIdeWWFiles_setFilterDefaultValues, _GxIdeWWFiles_allDescendantsCheckboxHandler, _GxIdeWWFiles_handleSelectionChanged, _GxIdeWWFiles_handleRowDoubleClicked, _GxIdeWWFiles_handleRowContextMenu, _GxIdeWWFiles_attachGridListeners, _GxIdeWWFiles_categoryInputHandler, _GxIdeWWFiles_clearDateTimeValue, _GxIdeWWFiles_dateTimeInputHandler, _GxIdeWWFiles_deleteSelectionCallbackHandler, _GxIdeWWFiles_deselectAll, _GxIdeWWFiles_evaluateModifiedDates, _GxIdeWWFiles_filterAfterTypeCallbackHandler, _GxIdeWWFiles_formatDate, _GxIdeWWFiles_getObjects, _GxIdeWWFiles_renderHeader, _GxIdeWWFiles_renderObjects, _GxIdeWWFiles_moduleValueChangedHandler, _GxIdeWWFiles_nameInputHandler, _GxIdeWWFiles_newFileCallbackHandler, _GxIdeWWFiles_openSelectionCallbackHandler, _GxIdeWWFiles_searchContentsInputHandler, _GxIdeWWFiles_setLoadingState, _GxIdeWWFiles_userInputHandler, _GxIdeWWFiles_showModifiedCheckboxHandler, _GxIdeWWFiles_selectAll;
32
+ var _GxIdeWWFiles_componentLocale, _GxIdeWWFiles_ACCORDION_MODEL, _GxIdeWWFiles_nameValue, _GxIdeWWFiles_moduleValue, _GxIdeWWFiles_searchContentsValue, _GxIdeWWFiles_categoryValue, _GxIdeWWFiles_allDescendants, _GxIdeWWFiles_userValue, _GxIdeWWFiles_selectedObjectsIds, _GxIdeWWFiles_chGridEl, _GxIdeWWFiles_setFilterDefaultValues, _GxIdeWWFiles_allDescendantsCheckboxHandler, _GxIdeWWFiles_handleSelectionChanged, _GxIdeWWFiles_handleRowDoubleClicked, _GxIdeWWFiles_handleRowContextMenu, _GxIdeWWFiles_attachGridListeners, _GxIdeWWFiles_categoryInputHandler, _GxIdeWWFiles_clearDateTimeValue, _GxIdeWWFiles_dateTimeInputHandler, _GxIdeWWFiles_deleteSelectionCallbackHandler, _GxIdeWWFiles_deselectAll, _GxIdeWWFiles_evaluateModifiedDates, _GxIdeWWFiles_filterAfterTypeCallbackHandler, _GxIdeWWFiles_formatDate, _GxIdeWWFiles_getObjects, _GxIdeWWFiles_renderHeader, _GxIdeWWFiles_renderObjects, _GxIdeWWFiles_moduleValueChangedHandler, _GxIdeWWFiles_nameInputHandler, _GxIdeWWFiles_newFileCallbackHandler, _GxIdeWWFiles_openSelectionCallbackHandler, _GxIdeWWFiles_searchContentsInputHandler, _GxIdeWWFiles_setLoadingState, _GxIdeWWFiles_userInputHandler, _GxIdeWWFiles_showModifiedCheckboxHandler, _GxIdeWWFiles_selectAll;
33
33
  const CSS_BUNDLES = [
34
34
  "resets/box-sizing",
35
35
  "components/button",
@@ -84,7 +84,6 @@ const GxIdeWWFiles = /*@__PURE__*/ proxyCustomElement(class GxIdeWWFiles extends
84
84
  // Other
85
85
  _GxIdeWWFiles_selectedObjectsIds.set(this, []);
86
86
  _GxIdeWWFiles_chGridEl.set(this, void 0);
87
- _GxIdeWWFiles_filterModuleEl.set(this, void 0);
88
87
  _GxIdeWWFiles_setFilterDefaultValues.set(this, () => {
89
88
  __classPrivateFieldSet(this, _GxIdeWWFiles_nameValue, "", "f");
90
89
  __classPrivateFieldSet(this, _GxIdeWWFiles_moduleValue, Object.assign({}, this.defaultModule), "f");
@@ -198,7 +197,7 @@ const GxIdeWWFiles = /*@__PURE__*/ proxyCustomElement(class GxIdeWWFiles extends
198
197
  h("div", {
199
198
  // Module
200
199
  class: "field field-block field-module-folder"
201
- }, h("label", { class: "label", htmlFor: "module-folder" }, __classPrivateFieldGet(this, _GxIdeWWFiles_componentLocale, "f").filter.moduleFolder), h("gx-ide-entity-selector", { part: "filter-module-folder", id: "module/folder", labelPosition: "none", value: __classPrivateFieldGet(this, _GxIdeWWFiles_moduleValue, "f"), defaultValue: this.defaultModule, selectEntityCallback: this.selectModuleCallback, ref: (el) => (__classPrivateFieldSet(this, _GxIdeWWFiles_filterModuleEl, el, "f")), onValueChanged: __classPrivateFieldGet(this, _GxIdeWWFiles_moduleValueChangedHandler, "f"), disabled: this.isLoading })),
200
+ }, h("label", { class: "label", htmlFor: "module-folder" }, __classPrivateFieldGet(this, _GxIdeWWFiles_componentLocale, "f").filter.moduleFolder), h("gx-ide-entity-selector", { part: "filter-module-folder", id: "module/folder", labelPosition: "none", value: __classPrivateFieldGet(this, _GxIdeWWFiles_moduleValue, "f"), defaultValue: this.defaultModule, selectEntityCallback: this.selectModuleCallback, onValueChanged: __classPrivateFieldGet(this, _GxIdeWWFiles_moduleValueChangedHandler, "f"), disabled: this.isLoading })),
202
201
  h("ch-accordion-render", { class: "accordion-outlined advanced-filter", model: __classPrivateFieldGet(this, _GxIdeWWFiles_ACCORDION_MODEL, "f") }, h("div", { slot: ACCORDION_FILTER_ID, class: "spacing-body field-group advanced-filter__container" }, this.showSearchContents && (h("div", {
203
202
  // Search contents
204
203
  class: "field field-block field-search-contents"
@@ -433,7 +432,7 @@ const GxIdeWWFiles = /*@__PURE__*/ proxyCustomElement(class GxIdeWWFiles extends
433
432
  "dateTimeValue": ["dateTimeValueChanged"],
434
433
  "categories": ["categoriesChanged"]
435
434
  }]);
436
- _GxIdeWWFiles_componentLocale = new WeakMap(), _GxIdeWWFiles_ACCORDION_MODEL = new WeakMap(), _GxIdeWWFiles_nameValue = new WeakMap(), _GxIdeWWFiles_moduleValue = new WeakMap(), _GxIdeWWFiles_searchContentsValue = new WeakMap(), _GxIdeWWFiles_categoryValue = new WeakMap(), _GxIdeWWFiles_allDescendants = new WeakMap(), _GxIdeWWFiles_userValue = new WeakMap(), _GxIdeWWFiles_selectedObjectsIds = new WeakMap(), _GxIdeWWFiles_chGridEl = new WeakMap(), _GxIdeWWFiles_filterModuleEl = new WeakMap(), _GxIdeWWFiles_setFilterDefaultValues = new WeakMap(), _GxIdeWWFiles_allDescendantsCheckboxHandler = new WeakMap(), _GxIdeWWFiles_handleSelectionChanged = new WeakMap(), _GxIdeWWFiles_handleRowDoubleClicked = new WeakMap(), _GxIdeWWFiles_handleRowContextMenu = new WeakMap(), _GxIdeWWFiles_attachGridListeners = new WeakMap(), _GxIdeWWFiles_categoryInputHandler = new WeakMap(), _GxIdeWWFiles_clearDateTimeValue = new WeakMap(), _GxIdeWWFiles_dateTimeInputHandler = new WeakMap(), _GxIdeWWFiles_deleteSelectionCallbackHandler = new WeakMap(), _GxIdeWWFiles_deselectAll = new WeakMap(), _GxIdeWWFiles_evaluateModifiedDates = new WeakMap(), _GxIdeWWFiles_filterAfterTypeCallbackHandler = new WeakMap(), _GxIdeWWFiles_formatDate = new WeakMap(), _GxIdeWWFiles_getObjects = new WeakMap(), _GxIdeWWFiles_renderHeader = new WeakMap(), _GxIdeWWFiles_renderObjects = new WeakMap(), _GxIdeWWFiles_moduleValueChangedHandler = new WeakMap(), _GxIdeWWFiles_nameInputHandler = new WeakMap(), _GxIdeWWFiles_newFileCallbackHandler = new WeakMap(), _GxIdeWWFiles_openSelectionCallbackHandler = new WeakMap(), _GxIdeWWFiles_searchContentsInputHandler = new WeakMap(), _GxIdeWWFiles_setLoadingState = new WeakMap(), _GxIdeWWFiles_userInputHandler = new WeakMap(), _GxIdeWWFiles_showModifiedCheckboxHandler = new WeakMap(), _GxIdeWWFiles_selectAll = new WeakMap();
435
+ _GxIdeWWFiles_componentLocale = new WeakMap(), _GxIdeWWFiles_ACCORDION_MODEL = new WeakMap(), _GxIdeWWFiles_nameValue = new WeakMap(), _GxIdeWWFiles_moduleValue = new WeakMap(), _GxIdeWWFiles_searchContentsValue = new WeakMap(), _GxIdeWWFiles_categoryValue = new WeakMap(), _GxIdeWWFiles_allDescendants = new WeakMap(), _GxIdeWWFiles_userValue = new WeakMap(), _GxIdeWWFiles_selectedObjectsIds = new WeakMap(), _GxIdeWWFiles_chGridEl = new WeakMap(), _GxIdeWWFiles_setFilterDefaultValues = new WeakMap(), _GxIdeWWFiles_allDescendantsCheckboxHandler = new WeakMap(), _GxIdeWWFiles_handleSelectionChanged = new WeakMap(), _GxIdeWWFiles_handleRowDoubleClicked = new WeakMap(), _GxIdeWWFiles_handleRowContextMenu = new WeakMap(), _GxIdeWWFiles_attachGridListeners = new WeakMap(), _GxIdeWWFiles_categoryInputHandler = new WeakMap(), _GxIdeWWFiles_clearDateTimeValue = new WeakMap(), _GxIdeWWFiles_dateTimeInputHandler = new WeakMap(), _GxIdeWWFiles_deleteSelectionCallbackHandler = new WeakMap(), _GxIdeWWFiles_deselectAll = new WeakMap(), _GxIdeWWFiles_evaluateModifiedDates = new WeakMap(), _GxIdeWWFiles_filterAfterTypeCallbackHandler = new WeakMap(), _GxIdeWWFiles_formatDate = new WeakMap(), _GxIdeWWFiles_getObjects = new WeakMap(), _GxIdeWWFiles_renderHeader = new WeakMap(), _GxIdeWWFiles_renderObjects = new WeakMap(), _GxIdeWWFiles_moduleValueChangedHandler = new WeakMap(), _GxIdeWWFiles_nameInputHandler = new WeakMap(), _GxIdeWWFiles_newFileCallbackHandler = new WeakMap(), _GxIdeWWFiles_openSelectionCallbackHandler = new WeakMap(), _GxIdeWWFiles_searchContentsInputHandler = new WeakMap(), _GxIdeWWFiles_setLoadingState = new WeakMap(), _GxIdeWWFiles_userInputHandler = new WeakMap(), _GxIdeWWFiles_showModifiedCheckboxHandler = new WeakMap(), _GxIdeWWFiles_selectAll = new WeakMap();
437
436
  function defineCustomElement$1() {
438
437
  if (typeof customElements === "undefined") {
439
438
  return;
@@ -1 +1 @@
1
- {"file":"gx-ide-ww-files.js","mappings":"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","names":[],"sources":["src/components/ww-files/ww-files.scss?tag=gx-ide-ww-files&encapsulation=shadow","src/components/ww-files/ww-files.tsx"],"sourcesContent":["@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../global/temporary-mercury-overrides/_button.scss\";\n@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n container-type: inline-size;\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - - -\n// Header\n// - - - - - - - - - - - -\n\n.header {\n grid-template-areas:\n \"name module-folder\"\n \"advanced-filter advanced-filter\";\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: max-content max-content;\n}\n.name {\n grid-area: name;\n}\n.module-folder {\n grid-area: module-folder;\n}\n.advanced-filter {\n grid-area: advanced-filter;\n}\n\n// Advanced Filter\n.advanced-filter {\n &__container {\n display: grid;\n grid-auto-rows: max-content;\n }\n &__first-row {\n grid-template-columns: 1fr 1fr;\n }\n &__second-row {\n grid-template-columns: 1fr 1fr 1fr;\n }\n .all-descendants__modified {\n display: flex;\n flex-direction: row;\n align-items: center;\n block-size: 32px;\n gap: var(--spacing-gap-xl);\n align-self: self-end;\n }\n}\n// date/time\n.field-date {\n grid-template-areas:\n \"label-date-time label-date-time\"\n \"input-date-time icon-clear-date-time\";\n grid-template-columns: 1fr max-content;\n column-gap: var(--spacing-gap-xs);\n}\n.label-date-time {\n // WA: There is no official way to use an icon (ch-image) within a label\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-m);\n .icon-s {\n // WA: Icon looks so small that it is not recognizable\n }\n grid-area: label-date-time;\n}\n.input-date-time {\n block-size: 32px;\n grid-area: input-date-time;\n}\n.icon-clear-date-time {\n grid-area: icon-clear-date-time;\n}\n\n// - - - - - - - - - - - -\n// Grid\n// - - - - - - - - - - - -\n\n.tabular-grid {\n overflow: auto;\n inline-size: 100%;\n border-inline-end: var(--section-common-border);\n}\n.tabular-grid.empty::part(main),\n.tabular-grid.loading::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\nch-tabular-grid-rowset-empty {\n position: relative;\n}\n.main__files-container {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: var(--spacing-gap-m);\n position: relative;\n z-index: 1;\n}\n\n@include hiChar;\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 4\n )\n);\n.tabular-grid-cell-description {\n min-inline-size: max-content !important; // TODO: See how to remove the !important\n}\n\n@include hiChar();\n\n// - - - - - - - - - - - -\n// Responsive\n// - - - - - - - - - - - -\n\n// @container (max-width: 992px) {\n// .main__files-container {\n// grid-template-columns: repeat(3, 1fr);\n// }\n// }\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n Listen,\n Watch\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\n\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport { GxOption } from \"../../common/types\";\nimport { EntityData, ContextMenuInfo } from \"../../common/types\";\nimport { config } from \"../../common/config\";\nimport { mapOptionsToComboBoxItemModel, hiChar } from \"./helpers\";\nimport {\n AccordionModel,\n ComboBoxModel\n} from \"@genexus/chameleon-controls-library\";\nimport { formatDate } from \"../../common/helpers\";\nimport { GxIdeEntitySelectorCustomEvent } from \"../..\";\n\ninterface TabularGridWithSelection extends HTMLChTabularGridElement {\n selectAllRows: (select?: boolean) => Promise<void>;\n}\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/combo-box\",\n \"components/accordion\",\n \"components/edit\",\n \"components/icon\",\n \"components/tooltip\",\n \"components/tabular-grid\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\nconst CLEAR_ICON = getIconPath({\n category: \"system\",\n name: \"close\",\n colorType: \"interactive\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-surface\"\n});\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\nconst ACCORDION_FILTER_ID = \"advanced-filter\";\nconst FILTER_AFTER_DATE_TIME = \"afterDateTime\";\nconst FILTER_AFTER_LAST_BUILD = \"afterLastBuild\";\nconst FILTER_AFTER_IMPORT = \"afterImport\";\n\nconst CHECKBOX_CHECKED_VALUE = \"checked\";\nconst CHECKBOX_UNCHECKED_VALUE = \"unchecked\";\n\n@Component({\n tag: \"gx-ide-ww-files\",\n styleUrl: \"ww-files.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ww-files\"]\n})\nexport class GxIdeWWFiles {\n #componentLocale: any;\n #ACCORDION_MODEL: AccordionModel = [];\n\n // Filter Values\n #nameValue: string;\n #moduleValue: EntityData;\n // Advanced Filter Values\n #searchContentsValue: string;\n #categoryValue: string;\n #allDescendants: CheckboxState;\n #userValue: string;\n // Other\n #selectedObjectsIds: string[] = [];\n\n @Element() el: HTMLGxIdeWwFilesElement;\n #chGridEl!: HTMLChTabularGridElement;\n #filterModuleEl!: HTMLGxIdeEntitySelectorElement;\n\n /**\n * The \"After\" control value. Controls the visibility of the \"Date/Time\" control.\n */\n @State() afterValue: string;\n\n /**\n * The \"Category\" options as combo box model\n */\n @State() categoriesComboBoxModel: ComboBoxModel = [];\n\n /**\n * Value of the Date/Time control\n */\n @State() dateTimeValue: string;\n @Watch(\"dateTimeValue\")\n dateTimeValueChanged() {\n this.#getObjects();\n }\n\n /**\n * A loader that is shown when the filter changes and the server has to retrieve new data.\n */\n @State() isLoading: boolean = true;\n\n /**\n * The options for the \"After\" combo-box\n */\n @State() filterAfterComboBoxModel: ComboBoxModel;\n\n /**\n * For show or hide the filters relative to modifiers\n */\n @State() showModified: CheckboxState = CHECKBOX_CHECKED_VALUE;\n\n /**\n * The files rendered in the table\n */\n @State() objects: ObjectData[] = [];\n\n /**\n * The categories render in the filter category selector\n */\n @Prop() readonly categories!: GxOption[];\n @Watch(\"categories\")\n categoriesChanged(newCategories: GxOption[]) {\n this.categoriesComboBoxModel = mapOptionsToComboBoxItemModel(newCategories);\n }\n\n /**\n * This is a function provided by the developer for show the context menu of the selected files.\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * The default value for the category filter\n */\n @Prop() readonly defaultCategory: string;\n\n /**\n * The default value for the module/folder filter\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * This is a function provided by the developer for delete the selected files.\n */\n @Prop() readonly deleteSelectionCallback!: DeleteSelectionCallback;\n\n /**\n * Controls the visibility of the tabular grid cell columns, and respective cells.\n */\n @Prop() readonly gridColumnsVisibility: GridColumnsVisibility = {\n description: true,\n importDate: true,\n lastBuildDate: true,\n lastUser: true,\n modifiedDate: true\n };\n\n /**\n * This is a function provided by the developer that return a list of files to populate the table of files.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n *\n */\n @Prop() readonly newFileCallback!: NewFileCallback;\n\n /**\n * This is a function provided by the developer to expand the data of files that is double-clicked or entered.\n */\n @Prop() readonly openSelectionCallback!: OpenSelectionCallback;\n\n /**\n * Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback!: SelectModuleCallback;\n\n /**\n * This is a function provided by the developer for expanded the data of files that is double-clicked or entered.\n */\n @Prop() readonly selectionChangeCallback!: SelectionChangeCallback;\n\n /**\n * Controls whether to show the Search contents field in the advanced filter section (Not available at the time of writting, since the server is not handling this feature yet.)\n */\n @Prop() readonly showSearchContents = false;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // initialize combo-box models∂\n this.categoriesChanged(this.categories);\n\n // initialize \"After\" combo-box options\n this.filterAfterComboBoxModel = [\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_DATE_TIME],\n value: FILTER_AFTER_DATE_TIME\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_LAST_BUILD],\n value: FILTER_AFTER_LAST_BUILD\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_IMPORT],\n value: FILTER_AFTER_IMPORT\n }\n ];\n\n // initialize accordion model with proper configuration\n this.#ACCORDION_MODEL = [\n {\n id: ACCORDION_FILTER_ID,\n caption: this.#componentLocale.filter.accordionCaption,\n expanded: false\n }\n ];\n\n this.#setFilterDefaultValues();\n }\n #setFilterDefaultValues = () => {\n this.#nameValue = \"\";\n this.#moduleValue = { ...this.defaultModule };\n this.#searchContentsValue = \"\";\n\n this.#categoryValue =\n this.defaultCategory ||\n (this.categoriesComboBoxModel && this.categoriesComboBoxModel.length > 0\n ? this.categoriesComboBoxModel[0].value\n : \"\");\n\n this.#allDescendants = CHECKBOX_UNCHECKED_VALUE;\n\n this.afterValue =\n this.filterAfterComboBoxModel && this.filterAfterComboBoxModel.length > 0\n ? this.filterAfterComboBoxModel[0].value\n : FILTER_AFTER_DATE_TIME;\n\n this.#userValue = \"\";\n this.dateTimeValue = undefined;\n };\n\n componentDidLoad() {\n this.#attachGridListeners();\n this.#getObjects();\n }\n\n @Listen(\"keydown\", { passive: true })\n keyDownHandler(eventInfo: KeyboardEvent) {\n if (document.activeElement === this.el) {\n switch (eventInfo.key) {\n case \"Enter\":\n eventInfo.preventDefault();\n this.#openSelectionCallbackHandler();\n break;\n case \"Delete\":\n eventInfo.preventDefault();\n this.#deleteSelectionCallbackHandler();\n break;\n case \"Escape\":\n eventInfo.preventDefault();\n this.#deselectAll();\n break;\n }\n }\n }\n\n /**\n * Reloads the view, refreshing the filters and the table of files.\n */\n @Method()\n async reload(): Promise<void> {\n try {\n if (this.#componentLocale && this.filterAfterComboBoxModel) {\n this.#setFilterDefaultValues();\n this.#getObjects();\n }\n } catch (error) {\n console.error(\"Error in reload method:\");\n // Fallback: try only getObjects if setFilterDefaultValues fails\n try {\n this.#getObjects();\n } catch (fallbackError) {\n console.error(\"Fallback also failed:\");\n }\n }\n }\n\n #allDescendantsCheckboxHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.#allDescendants =\n event.detail === CHECKBOX_CHECKED_VALUE\n ? CHECKBOX_CHECKED_VALUE\n : CHECKBOX_UNCHECKED_VALUE;\n this.#getObjects();\n };\n\n #handleSelectionChanged = (ev: CustomEvent<{ rowsId: string[] }>): void => {\n this.#selectedObjectsIds = ev.detail.rowsId;\n this.selectionChangeCallback(this.#selectedObjectsIds);\n };\n\n #handleRowDoubleClicked = (): void => {\n this.#openSelectionCallbackHandler();\n };\n\n #handleRowContextMenu = (\n ev: CustomEvent<TabularGridRowContextMenuEvent>\n ): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.contextMenuCallback({\n selection: ev.detail.selectedRowsId,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n };\n\n #attachGridListeners = (): void => {\n this.#chGridEl.addEventListener(\n \"selectionChanged\",\n this.#handleSelectionChanged\n );\n this.#chGridEl.addEventListener(\n \"rowDoubleClicked\",\n this.#handleRowDoubleClicked\n );\n this.#chGridEl.addEventListener(\n \"rowContextMenu\",\n this.#handleRowContextMenu\n );\n };\n\n #categoryInputHandler = async (event: CustomEvent<string> | InputEvent) => {\n this.#categoryValue = event.detail as string;\n this.#getObjects();\n };\n\n #clearDateTimeValue = () => {\n this.dateTimeValue = undefined;\n };\n\n #dateTimeInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.dateTimeValue = event.detail;\n this.#getObjects();\n };\n\n #deleteSelectionCallbackHandler = (): void => {\n this.deleteSelectionCallback(this.#selectedObjectsIds);\n };\n\n #deselectAll = (): void => {\n if (\n this.#chGridEl &&\n typeof (this.#chGridEl as TabularGridWithSelection).selectAllRows ===\n \"function\"\n ) {\n (this.#chGridEl as TabularGridWithSelection).selectAllRows(false);\n }\n };\n\n #evaluateModifiedDates = (\n objectModifiedDate: Date,\n filterSelectedModifiedDate: string\n ) => {\n const filterSelectedModifiedDateAsDate = new Date(\n filterSelectedModifiedDate\n );\n if (filterSelectedModifiedDateAsDate >= objectModifiedDate) {\n // Object modifed date matches with filter date, or was modified after that date.\n // Highlight to show that it matches.\n return <span class=\"hiChar\">{this.#formatDate(objectModifiedDate)}</span>;\n } else {\n return this.#formatDate(objectModifiedDate);\n }\n };\n\n #filterAfterTypeCallbackHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.afterValue = event.detail as string;\n this.#getObjects();\n };\n\n #formatDate = (date: Date): string => {\n return formatDate(date, \"date-time-short\");\n };\n\n #getObjects = () => {\n this.#setLoadingState();\n\n const parentId = this.#moduleValue ? this.#moduleValue.id : \"\";\n\n const filtersValues: ObjectFiltersData = {\n name: this.#nameValue,\n searchContents: this.#searchContentsValue,\n category: this.#categoryValue,\n parent: parentId,\n allDescendants: this.#allDescendants === CHECKBOX_CHECKED_VALUE,\n modifiedAfter: this.showModified ? this.afterValue : undefined,\n modifiedBy: this.showModified ? this.#userValue : undefined,\n modifiedDate: this.showModified ? new Date(this.dateTimeValue) : undefined\n };\n\n this.loadCallback(filtersValues).then((items: ObjectData[]) => {\n this.objects = items;\n this.#selectedObjectsIds = [];\n\n if (this.#chGridEl) {\n this.#deselectAll();\n }\n\n this.isLoading = false;\n });\n };\n\n #renderHeader = (): Element[] => {\n return [\n <div\n // Name\n class=\"field field-block field-name\"\n >\n <label class=\"label\" htmlFor=\"name\">\n {this.#componentLocale.filter.name}\n </label>\n <ch-edit\n id=\"name\"\n class=\"input\"\n value={this.#nameValue}\n onInput={this.#nameInputHandler}\n part=\"filter-files\"\n debounce={config.inputDebounce}\n disabled={this.isLoading}\n ></ch-edit>\n </div>,\n\n <div\n // Module\n class=\"field field-block field-module-folder\"\n >\n <label class=\"label\" htmlFor=\"module-folder\">\n {this.#componentLocale.filter.moduleFolder}\n </label>\n <gx-ide-entity-selector\n part=\"filter-module-folder\"\n id=\"module/folder\"\n labelPosition=\"none\"\n value={this.#moduleValue}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#filterModuleEl = el as HTMLGxIdeEntitySelectorElement)\n }\n onValueChanged={this.#moduleValueChangedHandler}\n disabled={this.isLoading}\n ></gx-ide-entity-selector>\n </div>,\n\n <ch-accordion-render\n class=\"accordion-outlined advanced-filter\"\n model={this.#ACCORDION_MODEL}\n >\n <div\n slot={ACCORDION_FILTER_ID}\n class=\"spacing-body field-group advanced-filter__container\"\n >\n {this.showSearchContents && (\n <div\n // Search contents\n class=\"field field-block field-search-contents\"\n >\n <label class=\"label\" htmlFor=\"filter-content\">\n {this.#componentLocale.filter.content}\n </label>\n <ch-edit\n id=\"filter-content\"\n class=\"input\"\n onInput={this.#searchContentsInputHandler}\n part=\"filter-content\"\n ></ch-edit>\n </div>\n )}\n\n <div class=\"field-group advanced-filter__first-row\">\n <div\n // Category\n class=\"field field-block field-category\"\n >\n <label class=\"label\" htmlFor=\"filter-category\">\n {this.#componentLocale.filter.category}\n </label>\n <ch-combo-box-render\n id=\"filter-category\"\n class=\"combo-box disabled\"\n value={this.#categoryValue}\n disabled={!this.categories || this.isLoading}\n model={this.categoriesComboBoxModel}\n part=\"filter-category\"\n onInput={this.#categoryInputHandler}\n ></ch-combo-box-render>\n </div>\n\n <div\n // All descendants / Modified\n class=\"all-descendants__modified field field-inline\"\n >\n <ch-checkbox\n // All descendants\n class=\"checkbox\"\n caption={this.#componentLocale.filter.allDescendants}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_UNCHECKED_VALUE}\n value={this.#allDescendants}\n onInput={this.#allDescendantsCheckboxHandler}\n part=\"filter-all-descendants\"\n disabled={this.isLoading}\n ></ch-checkbox>\n\n <ch-checkbox\n // Modified\n class=\"checkbox align-center\"\n caption={this.#componentLocale.filter.modified}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_UNCHECKED_VALUE}\n value={this.showModified}\n onInput={this.#showModifiedCheckboxHandler}\n part=\"filter-modified\"\n ></ch-checkbox>\n </div>\n </div>\n\n {this.showModified === CHECKBOX_CHECKED_VALUE && (\n <div class=\"field-group advanced-filter__second-row\">\n <div\n // After\n class=\"field field-block field-after\"\n >\n <label class=\"label\" htmlFor=\"filter-after-type\">\n {this.#componentLocale.filter.after}\n </label>\n <ch-combo-box-render\n id=\"filter-after-type\"\n class=\"combo-box\"\n value={this.afterValue}\n model={this.filterAfterComboBoxModel}\n onInput={this.#filterAfterTypeCallbackHandler}\n part=\"filter-after-type\"\n disabled={this.isLoading}\n ></ch-combo-box-render>\n </div>\n\n <div\n // User\n class=\"field field-block field-user\"\n >\n <label class=\"label\" htmlFor=\"filter-user\">\n {this.#componentLocale.filter.user}\n </label>\n <ch-edit\n id=\"filter-user\"\n class=\"input\"\n value={this.#userValue}\n onInput={this.#userInputHandler}\n part=\"filter-user\"\n debounce={config.inputDebounce}\n disabled={this.isLoading}\n ></ch-edit>\n </div>\n\n {this.afterValue === FILTER_AFTER_DATE_TIME && (\n <div\n // Date/Time\n class={{\n \"field field-block field-date\": true,\n \"hide\": this.afterValue !== FILTER_AFTER_DATE_TIME\n }}\n >\n <label\n class=\"label label-date-time\"\n htmlFor=\"filter-date-time\"\n >\n {this.#componentLocale.filter.dateTime}\n <ch-image\n class=\"icon-s icon-clear-date-time\"\n src={INFO_ICON}\n ></ch-image>\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-start\"\n inlineAlign=\"inside-start\"\n delay={config.tooltipSettings.delay}\n >\n {this.#componentLocale.filter.dateTimeTooltip}\n </ch-tooltip>\n </label>\n\n <ch-edit\n id=\"filter-date-time\"\n type=\"datetime-local\"\n class=\"input input-date-time\"\n value={this.dateTimeValue}\n onInput={this.#dateTimeInputHandler}\n part=\"filter-date-time\"\n disabled={this.isLoading}\n ></ch-edit>\n\n <button\n class=\"button-tertiary button-icon-only\"\n onClick={this.#clearDateTimeValue}\n disabled={this.isLoading}\n >\n <ch-image class=\"icon-m\" src={CLEAR_ICON} type=\"mask\" />\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n </ch-accordion-render>\n ];\n };\n\n #renderObjects = (): Element => {\n const gridIsEmpty = !this.objects.length;\n\n return (\n <ch-tabular-grid\n ref={(el: HTMLChTabularGridElement) => (this.#chGridEl = el)}\n class={{\n \"tabular-grid\": true,\n \"loading\": this.isLoading,\n \"empty\": this.objects.length === 0\n }}\n rowSelectionMode=\"multiple\"\n part=\"ch-grid-files\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnName=\"\"\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.name}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.module}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n {this.gridColumnsVisibility.description && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.description}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.auto}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.modifiedDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.modifiedDate}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.lastUser && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.lastUser}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.importDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.importDate}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.lastBuildDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.lastBuildDate}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n </ch-tabular-grid-columnset>\n\n {!gridIsEmpty ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objects?.map((object: ObjectData) => (\n <ch-tabular-grid-row rowid={object.id} class=\"tabular-grid-row\">\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image src={object.icon}></ch-image>\n </ch-tabular-grid-cell>\n\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.name.toLowerCase(),\n this.#nameValue.toLowerCase()\n )}\n </ch-tabular-grid-cell>\n\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {object.parent}\n </ch-tabular-grid-cell>\n\n {this.gridColumnsVisibility.description && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-description\">\n {object.description}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.modifiedDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#evaluateModifiedDates(\n object.modifiedDate,\n this.dateTimeValue\n )}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.lastUser && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(object.lastUser?.toLowerCase(), this.#userValue)}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.importDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.importDate\n ? this.#formatDate(object.importDate)\n : \"\",\n this.#nameValue\n )}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.lastBuildDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.lastBuildDate\n ? this.#formatDate(object.lastBuildDate)\n : \"\",\n this.#nameValue\n )}\n </ch-tabular-grid-cell>\n )}\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 {this.isLoading ? (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <gx-ide-empty-state\n isAnimated={true}\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 #moduleValueChangedHandler = (\n event: GxIdeEntitySelectorCustomEvent<EntityData>\n ) => {\n this.#moduleValue = event.detail;\n this.#getObjects();\n };\n\n #nameInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#nameValue = event.detail;\n this.#getObjects();\n };\n\n #newFileCallbackHandler = (): void => {\n this.newFileCallback();\n };\n\n #openSelectionCallbackHandler = (): void => {\n this.openSelectionCallback(this.#selectedObjectsIds);\n };\n\n #searchContentsInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#searchContentsValue = event.detail;\n this.#getObjects();\n };\n\n #setLoadingState = () => {\n // Only clear if no objects or first load\n if (!this.objects || this.objects.length === 0) {\n this.objects = [];\n }\n this.isLoading = true;\n };\n\n #userInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#userValue = event.detail;\n this.#getObjects();\n };\n\n #showModifiedCheckboxHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.showModified = event.detail;\n };\n\n #selectAll = (): void => {\n if (\n this.#chGridEl &&\n typeof (this.#chGridEl as TabularGridWithSelection).selectAllRows ===\n \"function\"\n ) {\n (this.#chGridEl as TabularGridWithSelection).selectAllRows();\n }\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header class=\"header dialog-header-with-border spacing-body-inline spacing-body-block-start field-group\">\n {this.#renderHeader()}\n </header>\n\n {this.#renderObjects()}\n\n <footer class=\"dialog-footer-with-border dialog-footer-space-between spacing-body\">\n <p\n // matching objects\n class=\"text-body\"\n part=\"objects-matching\"\n >\n {`${this.objects?.length} ${\n this.#componentLocale.objCount.matching\n }`}\n </p>\n\n <div class=\"buttons-spacer\">\n <button\n // select all button\n id=\"button-select-all\"\n class=\"button-secondary\"\n onClick={this.#selectAll}\n part=\"button button--select-all\"\n disabled={this.isLoading}\n >\n {this.#componentLocale.footer.btnSelectAll}\n </button>\n\n <button\n // new file button\n id=\"button-new-file\"\n class=\"button-primary button-icon-and-text\"\n onClick={this.#newFileCallbackHandler}\n part=\"button button--new-file\"\n disabled={this.isLoading}\n >\n {this.#componentLocale.footer.btnNew}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type SelectionChangeCallback = (ids: string[]) => Promise<void>;\nexport type OpenSelectionCallback = (ids: string[]) => Promise<void>;\nexport type DeleteSelectionCallback = (ids: string[]) => Promise<void>;\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n// export type ContextMenuCallback = (ids: string[]) => Promise<void>;\nexport type ContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\nexport type NewFileCallback = () => Promise<void>;\nexport type LoadCallback = (\n filters: ObjectFiltersData\n) => Promise<ObjectData[]>;\n\nexport interface ObjectFiltersData {\n name?: string;\n searchContents?: string;\n category?: string;\n parent?: string;\n allDescendants?: boolean;\n modifiedAfter?: string;\n modifiedBy?: string;\n modifiedDate?: Date;\n}\nexport interface ObjectData {\n id: string;\n icon: string;\n name: string;\n description: string;\n parent: string;\n modifiedDate?: Date;\n lastUser?: string;\n importDate?: Date;\n lastBuildDate: Date;\n}\n\nexport type GridColumnsVisibility = {\n description: boolean;\n importDate: boolean;\n lastBuildDate: boolean;\n lastUser: boolean;\n modifiedDate: boolean;\n};\n\ntype CheckboxState =\n | typeof CHECKBOX_CHECKED_VALUE\n | typeof CHECKBOX_UNCHECKED_VALUE;\n"],"version":3}
1
+ {"file":"gx-ide-ww-files.js","mappings":"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","names":[],"sources":["src/components/ww-files/ww-files.scss?tag=gx-ide-ww-files&encapsulation=shadow","src/components/ww-files/ww-files.tsx"],"sourcesContent":["@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../global/temporary-mercury-overrides/_button.scss\";\n@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n container-type: inline-size;\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - - -\n// Header\n// - - - - - - - - - - - -\n\n.header {\n grid-template-areas:\n \"name module-folder\"\n \"advanced-filter advanced-filter\";\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: max-content max-content;\n}\n.name {\n grid-area: name;\n}\n.module-folder {\n grid-area: module-folder;\n}\n.advanced-filter {\n grid-area: advanced-filter;\n}\n\n// Advanced Filter\n.advanced-filter {\n &__container {\n display: grid;\n grid-auto-rows: max-content;\n }\n &__first-row {\n grid-template-columns: 1fr 1fr;\n }\n &__second-row {\n grid-template-columns: 1fr 1fr 1fr;\n }\n .all-descendants__modified {\n display: flex;\n flex-direction: row;\n align-items: center;\n block-size: 32px;\n gap: var(--spacing-gap-xl);\n align-self: self-end;\n }\n}\n// date/time\n.field-date {\n grid-template-areas:\n \"label-date-time label-date-time\"\n \"input-date-time icon-clear-date-time\";\n grid-template-columns: 1fr max-content;\n column-gap: var(--spacing-gap-xs);\n}\n.label-date-time {\n // WA: There is no official way to use an icon (ch-image) within a label\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-m);\n .icon-s {\n // WA: Icon looks so small that it is not recognizable\n }\n grid-area: label-date-time;\n}\n.input-date-time {\n block-size: 32px;\n grid-area: input-date-time;\n}\n.icon-clear-date-time {\n grid-area: icon-clear-date-time;\n}\n\n// - - - - - - - - - - - -\n// Grid\n// - - - - - - - - - - - -\n\n.tabular-grid {\n overflow: auto;\n inline-size: 100%;\n border-inline-end: var(--section-common-border);\n}\n.tabular-grid.empty::part(main),\n.tabular-grid.loading::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\nch-tabular-grid-rowset-empty {\n position: relative;\n}\n.main__files-container {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: var(--spacing-gap-m);\n position: relative;\n z-index: 1;\n}\n\n@include hiChar;\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 4\n )\n);\n.tabular-grid-cell-description {\n min-inline-size: max-content !important; // TODO: See how to remove the !important\n}\n\n@include hiChar();\n\n// - - - - - - - - - - - -\n// Responsive\n// - - - - - - - - - - - -\n\n// @container (max-width: 992px) {\n// .main__files-container {\n// grid-template-columns: repeat(3, 1fr);\n// }\n// }\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n Listen,\n Watch\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\n\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport { GxOption } from \"../../common/types\";\nimport { EntityData, ContextMenuInfo } from \"../../common/types\";\nimport { config } from \"../../common/config\";\nimport { mapOptionsToComboBoxItemModel, hiChar } from \"./helpers\";\nimport {\n AccordionModel,\n ComboBoxModel\n} from \"@genexus/chameleon-controls-library\";\nimport { formatDate } from \"../../common/helpers\";\nimport { GxIdeEntitySelectorCustomEvent } from \"../..\";\n\ninterface TabularGridWithSelection extends HTMLChTabularGridElement {\n selectAllRows: (select?: boolean) => Promise<void>;\n}\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/combo-box\",\n \"components/accordion\",\n \"components/edit\",\n \"components/icon\",\n \"components/tooltip\",\n \"components/tabular-grid\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\nconst CLEAR_ICON = getIconPath({\n category: \"system\",\n name: \"close\",\n colorType: \"interactive\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-surface\"\n});\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\nconst ACCORDION_FILTER_ID = \"advanced-filter\";\nconst FILTER_AFTER_DATE_TIME = \"afterDateTime\";\nconst FILTER_AFTER_LAST_BUILD = \"afterLastBuild\";\nconst FILTER_AFTER_IMPORT = \"afterImport\";\n\nconst CHECKBOX_CHECKED_VALUE = \"checked\";\nconst CHECKBOX_UNCHECKED_VALUE = \"unchecked\";\n\n@Component({\n tag: \"gx-ide-ww-files\",\n styleUrl: \"ww-files.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ww-files\"]\n})\nexport class GxIdeWWFiles {\n #componentLocale: any;\n #ACCORDION_MODEL: AccordionModel = [];\n\n // Filter Values\n #nameValue: string;\n #moduleValue: EntityData;\n // Advanced Filter Values\n #searchContentsValue: string;\n #categoryValue: string;\n #allDescendants: CheckboxState;\n #userValue: string;\n // Other\n #selectedObjectsIds: string[] = [];\n\n @Element() el: HTMLGxIdeWwFilesElement;\n #chGridEl!: HTMLChTabularGridElement;\n\n /**\n * The \"After\" control value. Controls the visibility of the \"Date/Time\" control.\n */\n @State() afterValue: string;\n\n /**\n * The \"Category\" options as combo box model\n */\n @State() categoriesComboBoxModel: ComboBoxModel = [];\n\n /**\n * Value of the Date/Time control\n */\n @State() dateTimeValue: string;\n @Watch(\"dateTimeValue\")\n dateTimeValueChanged() {\n this.#getObjects();\n }\n\n /**\n * A loader that is shown when the filter changes and the server has to retrieve new data.\n */\n @State() isLoading: boolean = true;\n\n /**\n * The options for the \"After\" combo-box\n */\n @State() filterAfterComboBoxModel: ComboBoxModel;\n\n /**\n * For show or hide the filters relative to modifiers\n */\n @State() showModified: CheckboxState = CHECKBOX_CHECKED_VALUE;\n\n /**\n * The files rendered in the table\n */\n @State() objects: ObjectData[] = [];\n\n /**\n * The categories render in the filter category selector\n */\n @Prop() readonly categories!: GxOption[];\n @Watch(\"categories\")\n categoriesChanged(newCategories: GxOption[]) {\n this.categoriesComboBoxModel = mapOptionsToComboBoxItemModel(newCategories);\n }\n\n /**\n * This is a function provided by the developer for show the context menu of the selected files.\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * The default value for the category filter\n */\n @Prop() readonly defaultCategory: string;\n\n /**\n * The default value for the module/folder filter\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * This is a function provided by the developer for delete the selected files.\n */\n @Prop() readonly deleteSelectionCallback!: DeleteSelectionCallback;\n\n /**\n * Controls the visibility of the tabular grid cell columns, and respective cells.\n */\n @Prop() readonly gridColumnsVisibility: GridColumnsVisibility = {\n description: true,\n importDate: true,\n lastBuildDate: true,\n lastUser: true,\n modifiedDate: true\n };\n\n /**\n * This is a function provided by the developer that return a list of files to populate the table of files.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n *\n */\n @Prop() readonly newFileCallback!: NewFileCallback;\n\n /**\n * This is a function provided by the developer to expand the data of files that is double-clicked or entered.\n */\n @Prop() readonly openSelectionCallback!: OpenSelectionCallback;\n\n /**\n * Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback!: SelectModuleCallback;\n\n /**\n * This is a function provided by the developer for expanded the data of files that is double-clicked or entered.\n */\n @Prop() readonly selectionChangeCallback!: SelectionChangeCallback;\n\n /**\n * Controls whether to show the Search contents field in the advanced filter section (Not available at the time of writting, since the server is not handling this feature yet.)\n */\n @Prop() readonly showSearchContents = false;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // initialize combo-box models∂\n this.categoriesChanged(this.categories);\n\n // initialize \"After\" combo-box options\n this.filterAfterComboBoxModel = [\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_DATE_TIME],\n value: FILTER_AFTER_DATE_TIME\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_LAST_BUILD],\n value: FILTER_AFTER_LAST_BUILD\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_IMPORT],\n value: FILTER_AFTER_IMPORT\n }\n ];\n\n // initialize accordion model with proper configuration\n this.#ACCORDION_MODEL = [\n {\n id: ACCORDION_FILTER_ID,\n caption: this.#componentLocale.filter.accordionCaption,\n expanded: false\n }\n ];\n\n this.#setFilterDefaultValues();\n }\n #setFilterDefaultValues = () => {\n this.#nameValue = \"\";\n this.#moduleValue = { ...this.defaultModule };\n this.#searchContentsValue = \"\";\n\n this.#categoryValue =\n this.defaultCategory ||\n (this.categoriesComboBoxModel && this.categoriesComboBoxModel.length > 0\n ? this.categoriesComboBoxModel[0].value\n : \"\");\n\n this.#allDescendants = CHECKBOX_UNCHECKED_VALUE;\n\n this.afterValue =\n this.filterAfterComboBoxModel && this.filterAfterComboBoxModel.length > 0\n ? this.filterAfterComboBoxModel[0].value\n : FILTER_AFTER_DATE_TIME;\n\n this.#userValue = \"\";\n this.dateTimeValue = undefined;\n };\n\n componentDidLoad() {\n this.#attachGridListeners();\n this.#getObjects();\n }\n\n @Listen(\"keydown\", { passive: true })\n keyDownHandler(eventInfo: KeyboardEvent) {\n if (document.activeElement === this.el) {\n switch (eventInfo.key) {\n case \"Enter\":\n eventInfo.preventDefault();\n this.#openSelectionCallbackHandler();\n break;\n case \"Delete\":\n eventInfo.preventDefault();\n this.#deleteSelectionCallbackHandler();\n break;\n case \"Escape\":\n eventInfo.preventDefault();\n this.#deselectAll();\n break;\n }\n }\n }\n\n /**\n * Reloads the view, refreshing the filters and the table of files.\n */\n @Method()\n async reload(): Promise<void> {\n try {\n if (this.#componentLocale && this.filterAfterComboBoxModel) {\n this.#setFilterDefaultValues();\n this.#getObjects();\n }\n } catch (error) {\n console.error(\"Error in reload method:\");\n // Fallback: try only getObjects if setFilterDefaultValues fails\n try {\n this.#getObjects();\n } catch (fallbackError) {\n console.error(\"Fallback also failed:\");\n }\n }\n }\n\n #allDescendantsCheckboxHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.#allDescendants =\n event.detail === CHECKBOX_CHECKED_VALUE\n ? CHECKBOX_CHECKED_VALUE\n : CHECKBOX_UNCHECKED_VALUE;\n this.#getObjects();\n };\n\n #handleSelectionChanged = (ev: CustomEvent<{ rowsId: string[] }>): void => {\n this.#selectedObjectsIds = ev.detail.rowsId;\n this.selectionChangeCallback(this.#selectedObjectsIds);\n };\n\n #handleRowDoubleClicked = (): void => {\n this.#openSelectionCallbackHandler();\n };\n\n #handleRowContextMenu = (\n ev: CustomEvent<TabularGridRowContextMenuEvent>\n ): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.contextMenuCallback({\n selection: ev.detail.selectedRowsId,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n };\n\n #attachGridListeners = (): void => {\n this.#chGridEl.addEventListener(\n \"selectionChanged\",\n this.#handleSelectionChanged\n );\n this.#chGridEl.addEventListener(\n \"rowDoubleClicked\",\n this.#handleRowDoubleClicked\n );\n this.#chGridEl.addEventListener(\n \"rowContextMenu\",\n this.#handleRowContextMenu\n );\n };\n\n #categoryInputHandler = async (event: CustomEvent<string> | InputEvent) => {\n this.#categoryValue = event.detail as string;\n this.#getObjects();\n };\n\n #clearDateTimeValue = () => {\n this.dateTimeValue = undefined;\n };\n\n #dateTimeInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.dateTimeValue = event.detail;\n this.#getObjects();\n };\n\n #deleteSelectionCallbackHandler = (): void => {\n this.deleteSelectionCallback(this.#selectedObjectsIds);\n };\n\n #deselectAll = (): void => {\n if (\n this.#chGridEl &&\n typeof (this.#chGridEl as TabularGridWithSelection).selectAllRows ===\n \"function\"\n ) {\n (this.#chGridEl as TabularGridWithSelection).selectAllRows(false);\n }\n };\n\n #evaluateModifiedDates = (\n objectModifiedDate: Date,\n filterSelectedModifiedDate: string\n ) => {\n const filterSelectedModifiedDateAsDate = new Date(\n filterSelectedModifiedDate\n );\n if (filterSelectedModifiedDateAsDate >= objectModifiedDate) {\n // Object modifed date matches with filter date, or was modified after that date.\n // Highlight to show that it matches.\n return <span class=\"hiChar\">{this.#formatDate(objectModifiedDate)}</span>;\n } else {\n return this.#formatDate(objectModifiedDate);\n }\n };\n\n #filterAfterTypeCallbackHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.afterValue = event.detail as string;\n this.#getObjects();\n };\n\n #formatDate = (date: Date): string => {\n return formatDate(date, \"date-time-short\");\n };\n\n #getObjects = () => {\n this.#setLoadingState();\n\n const parentId = this.#moduleValue ? this.#moduleValue.id : \"\";\n\n const filtersValues: ObjectFiltersData = {\n name: this.#nameValue,\n searchContents: this.#searchContentsValue,\n category: this.#categoryValue,\n parent: parentId,\n allDescendants: this.#allDescendants === CHECKBOX_CHECKED_VALUE,\n modifiedAfter: this.showModified ? this.afterValue : undefined,\n modifiedBy: this.showModified ? this.#userValue : undefined,\n modifiedDate: this.showModified ? new Date(this.dateTimeValue) : undefined\n };\n\n this.loadCallback(filtersValues).then((items: ObjectData[]) => {\n this.objects = items;\n this.#selectedObjectsIds = [];\n\n if (this.#chGridEl) {\n this.#deselectAll();\n }\n\n this.isLoading = false;\n });\n };\n\n #renderHeader = (): Element[] => {\n return [\n <div\n // Name\n class=\"field field-block field-name\"\n >\n <label class=\"label\" htmlFor=\"name\">\n {this.#componentLocale.filter.name}\n </label>\n <ch-edit\n id=\"name\"\n class=\"input\"\n value={this.#nameValue}\n onInput={this.#nameInputHandler}\n part=\"filter-files\"\n debounce={config.inputDebounce}\n disabled={this.isLoading}\n ></ch-edit>\n </div>,\n\n <div\n // Module\n class=\"field field-block field-module-folder\"\n >\n <label class=\"label\" htmlFor=\"module-folder\">\n {this.#componentLocale.filter.moduleFolder}\n </label>\n <gx-ide-entity-selector\n part=\"filter-module-folder\"\n id=\"module/folder\"\n labelPosition=\"none\"\n value={this.#moduleValue}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectModuleCallback}\n onValueChanged={this.#moduleValueChangedHandler}\n disabled={this.isLoading}\n ></gx-ide-entity-selector>\n </div>,\n\n <ch-accordion-render\n class=\"accordion-outlined advanced-filter\"\n model={this.#ACCORDION_MODEL}\n >\n <div\n slot={ACCORDION_FILTER_ID}\n class=\"spacing-body field-group advanced-filter__container\"\n >\n {this.showSearchContents && (\n <div\n // Search contents\n class=\"field field-block field-search-contents\"\n >\n <label class=\"label\" htmlFor=\"filter-content\">\n {this.#componentLocale.filter.content}\n </label>\n <ch-edit\n id=\"filter-content\"\n class=\"input\"\n onInput={this.#searchContentsInputHandler}\n part=\"filter-content\"\n ></ch-edit>\n </div>\n )}\n\n <div class=\"field-group advanced-filter__first-row\">\n <div\n // Category\n class=\"field field-block field-category\"\n >\n <label class=\"label\" htmlFor=\"filter-category\">\n {this.#componentLocale.filter.category}\n </label>\n <ch-combo-box-render\n id=\"filter-category\"\n class=\"combo-box disabled\"\n value={this.#categoryValue}\n disabled={!this.categories || this.isLoading}\n model={this.categoriesComboBoxModel}\n part=\"filter-category\"\n onInput={this.#categoryInputHandler}\n ></ch-combo-box-render>\n </div>\n\n <div\n // All descendants / Modified\n class=\"all-descendants__modified field field-inline\"\n >\n <ch-checkbox\n // All descendants\n class=\"checkbox\"\n caption={this.#componentLocale.filter.allDescendants}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_UNCHECKED_VALUE}\n value={this.#allDescendants}\n onInput={this.#allDescendantsCheckboxHandler}\n part=\"filter-all-descendants\"\n disabled={this.isLoading}\n ></ch-checkbox>\n\n <ch-checkbox\n // Modified\n class=\"checkbox align-center\"\n caption={this.#componentLocale.filter.modified}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_UNCHECKED_VALUE}\n value={this.showModified}\n onInput={this.#showModifiedCheckboxHandler}\n part=\"filter-modified\"\n ></ch-checkbox>\n </div>\n </div>\n\n {this.showModified === CHECKBOX_CHECKED_VALUE && (\n <div class=\"field-group advanced-filter__second-row\">\n <div\n // After\n class=\"field field-block field-after\"\n >\n <label class=\"label\" htmlFor=\"filter-after-type\">\n {this.#componentLocale.filter.after}\n </label>\n <ch-combo-box-render\n id=\"filter-after-type\"\n class=\"combo-box\"\n value={this.afterValue}\n model={this.filterAfterComboBoxModel}\n onInput={this.#filterAfterTypeCallbackHandler}\n part=\"filter-after-type\"\n disabled={this.isLoading}\n ></ch-combo-box-render>\n </div>\n\n <div\n // User\n class=\"field field-block field-user\"\n >\n <label class=\"label\" htmlFor=\"filter-user\">\n {this.#componentLocale.filter.user}\n </label>\n <ch-edit\n id=\"filter-user\"\n class=\"input\"\n value={this.#userValue}\n onInput={this.#userInputHandler}\n part=\"filter-user\"\n debounce={config.inputDebounce}\n disabled={this.isLoading}\n ></ch-edit>\n </div>\n\n {this.afterValue === FILTER_AFTER_DATE_TIME && (\n <div\n // Date/Time\n class={{\n \"field field-block field-date\": true,\n \"hide\": this.afterValue !== FILTER_AFTER_DATE_TIME\n }}\n >\n <label\n class=\"label label-date-time\"\n htmlFor=\"filter-date-time\"\n >\n {this.#componentLocale.filter.dateTime}\n <ch-image\n class=\"icon-s icon-clear-date-time\"\n src={INFO_ICON}\n ></ch-image>\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-start\"\n inlineAlign=\"inside-start\"\n delay={config.tooltipSettings.delay}\n >\n {this.#componentLocale.filter.dateTimeTooltip}\n </ch-tooltip>\n </label>\n\n <ch-edit\n id=\"filter-date-time\"\n type=\"datetime-local\"\n class=\"input input-date-time\"\n value={this.dateTimeValue}\n onInput={this.#dateTimeInputHandler}\n part=\"filter-date-time\"\n disabled={this.isLoading}\n ></ch-edit>\n\n <button\n class=\"button-tertiary button-icon-only\"\n onClick={this.#clearDateTimeValue}\n disabled={this.isLoading}\n >\n <ch-image class=\"icon-m\" src={CLEAR_ICON} type=\"mask\" />\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n </ch-accordion-render>\n ];\n };\n\n #renderObjects = (): Element => {\n const gridIsEmpty = !this.objects.length;\n\n return (\n <ch-tabular-grid\n ref={(el: HTMLChTabularGridElement) => (this.#chGridEl = el)}\n class={{\n \"tabular-grid\": true,\n \"loading\": this.isLoading,\n \"empty\": this.objects.length === 0\n }}\n rowSelectionMode=\"multiple\"\n part=\"ch-grid-files\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnName=\"\"\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.name}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.module}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n {this.gridColumnsVisibility.description && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.description}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.auto}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.modifiedDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.modifiedDate}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.lastUser && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.lastUser}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.importDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.importDate}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.lastBuildDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.lastBuildDate}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n </ch-tabular-grid-columnset>\n\n {!gridIsEmpty ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objects?.map((object: ObjectData) => (\n <ch-tabular-grid-row rowid={object.id} class=\"tabular-grid-row\">\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image src={object.icon}></ch-image>\n </ch-tabular-grid-cell>\n\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.name.toLowerCase(),\n this.#nameValue.toLowerCase()\n )}\n </ch-tabular-grid-cell>\n\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {object.parent}\n </ch-tabular-grid-cell>\n\n {this.gridColumnsVisibility.description && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-description\">\n {object.description}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.modifiedDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#evaluateModifiedDates(\n object.modifiedDate,\n this.dateTimeValue\n )}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.lastUser && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(object.lastUser?.toLowerCase(), this.#userValue)}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.importDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.importDate\n ? this.#formatDate(object.importDate)\n : \"\",\n this.#nameValue\n )}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.lastBuildDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.lastBuildDate\n ? this.#formatDate(object.lastBuildDate)\n : \"\",\n this.#nameValue\n )}\n </ch-tabular-grid-cell>\n )}\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 {this.isLoading ? (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <gx-ide-empty-state\n isAnimated={true}\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 #moduleValueChangedHandler = (\n event: GxIdeEntitySelectorCustomEvent<EntityData>\n ) => {\n this.#moduleValue = event.detail;\n this.#getObjects();\n };\n\n #nameInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#nameValue = event.detail;\n this.#getObjects();\n };\n\n #newFileCallbackHandler = (): void => {\n this.newFileCallback();\n };\n\n #openSelectionCallbackHandler = (): void => {\n this.openSelectionCallback(this.#selectedObjectsIds);\n };\n\n #searchContentsInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#searchContentsValue = event.detail;\n this.#getObjects();\n };\n\n #setLoadingState = () => {\n // Only clear if no objects or first load\n if (!this.objects || this.objects.length === 0) {\n this.objects = [];\n }\n this.isLoading = true;\n };\n\n #userInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#userValue = event.detail;\n this.#getObjects();\n };\n\n #showModifiedCheckboxHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.showModified = event.detail;\n };\n\n #selectAll = (): void => {\n if (\n this.#chGridEl &&\n typeof (this.#chGridEl as TabularGridWithSelection).selectAllRows ===\n \"function\"\n ) {\n (this.#chGridEl as TabularGridWithSelection).selectAllRows();\n }\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header class=\"header dialog-header-with-border spacing-body-inline spacing-body-block-start field-group\">\n {this.#renderHeader()}\n </header>\n\n {this.#renderObjects()}\n\n <footer class=\"dialog-footer-with-border dialog-footer-space-between spacing-body\">\n <p\n // matching objects\n class=\"text-body\"\n part=\"objects-matching\"\n >\n {`${this.objects?.length} ${\n this.#componentLocale.objCount.matching\n }`}\n </p>\n\n <div class=\"buttons-spacer\">\n <button\n // select all button\n id=\"button-select-all\"\n class=\"button-secondary\"\n onClick={this.#selectAll}\n part=\"button button--select-all\"\n disabled={this.isLoading}\n >\n {this.#componentLocale.footer.btnSelectAll}\n </button>\n\n <button\n // new file button\n id=\"button-new-file\"\n class=\"button-primary button-icon-and-text\"\n onClick={this.#newFileCallbackHandler}\n part=\"button button--new-file\"\n disabled={this.isLoading}\n >\n {this.#componentLocale.footer.btnNew}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type SelectionChangeCallback = (ids: string[]) => Promise<void>;\nexport type OpenSelectionCallback = (ids: string[]) => Promise<void>;\nexport type DeleteSelectionCallback = (ids: string[]) => Promise<void>;\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n// export type ContextMenuCallback = (ids: string[]) => Promise<void>;\nexport type ContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\nexport type NewFileCallback = () => Promise<void>;\nexport type LoadCallback = (\n filters: ObjectFiltersData\n) => Promise<ObjectData[]>;\n\nexport interface ObjectFiltersData {\n name?: string;\n searchContents?: string;\n category?: string;\n parent?: string;\n allDescendants?: boolean;\n modifiedAfter?: string;\n modifiedBy?: string;\n modifiedDate?: Date;\n}\nexport interface ObjectData {\n id: string;\n icon: string;\n name: string;\n description: string;\n parent: string;\n modifiedDate?: Date;\n lastUser?: string;\n importDate?: Date;\n lastBuildDate: Date;\n}\n\nexport type GridColumnsVisibility = {\n description: boolean;\n importDate: boolean;\n lastBuildDate: boolean;\n lastUser: boolean;\n modifiedDate: boolean;\n};\n\ntype CheckboxState =\n | typeof CHECKBOX_CHECKED_VALUE\n | typeof CHECKBOX_UNCHECKED_VALUE;\n"],"version":3}