@genexus/genexus-ide-ui 0.0.139 → 0.0.141

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 (81) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js +103 -0
  3. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js.map +1 -0
  4. package/dist/cjs/gx-ide-design-import.cjs.entry.js +567 -0
  5. package/dist/cjs/gx-ide-design-import.cjs.entry.js.map +1 -0
  6. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +1 -1
  7. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js.map +1 -1
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/collection/collection-manifest.json +4 -4
  10. package/dist/collection/components/_helpers/entity-selector/entity-selector.css +2 -2
  11. package/dist/collection/components/_helpers/entity-selector/entity-selector.js.map +1 -1
  12. package/dist/collection/components/bpm/import-files/gx-ide-assets/bpm-import-files/langs/bpm-import-files.lang.en.json +18 -0
  13. package/dist/collection/components/bpm/import-files/helpers.js.map +1 -0
  14. package/dist/collection/components/bpm/{files-selector/files-selector.css → import-files/import-files.css} +27 -0
  15. package/dist/collection/components/bpm/{files-selector/files-selector.js → import-files/import-files.js} +32 -33
  16. package/dist/collection/components/bpm/import-files/import-files.js.map +1 -0
  17. package/dist/collection/components/{import-from-design/import-from-design.js → design-import/design-import.js} +115 -64
  18. package/dist/collection/components/design-import/design-import.js.map +1 -0
  19. package/dist/collection/components/{import-from-design/gx-ide-assets/import-from-design/langs/import-from-design.lang.en.json → design-import/gx-ide-assets/design-import/langs/design-import.lang.en.json} +2 -1
  20. package/dist/components/entity-selector.js +1 -1
  21. package/dist/components/entity-selector.js.map +1 -1
  22. package/dist/components/gx-ide-bpm-import-files.d.ts +11 -0
  23. package/dist/components/gx-ide-bpm-import-files.js +172 -0
  24. package/dist/components/gx-ide-bpm-import-files.js.map +1 -0
  25. package/dist/components/gx-ide-design-import.d.ts +11 -0
  26. package/dist/components/{gx-ide-import-from-design.js → gx-ide-design-import.js} +95 -49
  27. package/dist/components/gx-ide-design-import.js.map +1 -0
  28. package/dist/esm/genexus-ide-ui.js +1 -1
  29. package/dist/esm/gx-ide-bpm-import-files.entry.js +99 -0
  30. package/dist/esm/gx-ide-bpm-import-files.entry.js.map +1 -0
  31. package/dist/esm/gx-ide-design-import.entry.js +563 -0
  32. package/dist/esm/gx-ide-design-import.entry.js.map +1 -0
  33. package/dist/esm/gx-ide-entity-selector.entry.js +1 -1
  34. package/dist/esm/gx-ide-entity-selector.entry.js.map +1 -1
  35. package/dist/esm/loader.js +1 -1
  36. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  37. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  38. package/dist/genexus-ide-ui/gx-ide-assets/bpm-import-files/langs/bpm-import-files.lang.en.json +18 -0
  39. package/dist/genexus-ide-ui/gx-ide-assets/{import-from-design/langs/import-from-design.lang.en.json → design-import/langs/design-import.lang.en.json} +2 -1
  40. package/dist/genexus-ide-ui/{p-82291acd.entry.js → p-03b2a741.entry.js} +43 -19
  41. package/dist/genexus-ide-ui/p-03b2a741.entry.js.map +1 -0
  42. package/dist/genexus-ide-ui/{p-9bf62c5c.entry.js → p-c46c7974.entry.js} +244 -175
  43. package/dist/genexus-ide-ui/p-c46c7974.entry.js.map +1 -0
  44. package/dist/genexus-ide-ui/{p-3345a1bc.entry.js → p-e07809d0.entry.js} +2 -2
  45. package/dist/genexus-ide-ui/p-e07809d0.entry.js.map +1 -0
  46. package/dist/types/components/bpm/{files-selector/files-selector.d.ts → import-files/import-files.d.ts} +11 -5
  47. package/dist/types/components/{import-from-design/import-from-design.d.ts → design-import/design-import.d.ts} +24 -10
  48. package/dist/types/components.d.ts +202 -200
  49. package/package.json +1 -1
  50. package/dist/cjs/gx-ide-bpm-files-selector.cjs.entry.js +0 -101
  51. package/dist/cjs/gx-ide-bpm-files-selector.cjs.entry.js.map +0 -1
  52. package/dist/cjs/gx-ide-import-from-design.cjs.entry.js +0 -522
  53. package/dist/cjs/gx-ide-import-from-design.cjs.entry.js.map +0 -1
  54. package/dist/collection/components/bpm/files-selector/files-selector.js.map +0 -1
  55. package/dist/collection/components/bpm/files-selector/gx-ide-assets/bpm-files-selector/langs/bpm-files-selector.lang.en.json +0 -14
  56. package/dist/collection/components/bpm/files-selector/helpers.js.map +0 -1
  57. package/dist/collection/components/import-from-design/import-from-design.js.map +0 -1
  58. package/dist/components/gx-ide-bpm-files-selector.d.ts +0 -11
  59. package/dist/components/gx-ide-bpm-files-selector.js +0 -164
  60. package/dist/components/gx-ide-bpm-files-selector.js.map +0 -1
  61. package/dist/components/gx-ide-import-from-design.d.ts +0 -11
  62. package/dist/components/gx-ide-import-from-design.js.map +0 -1
  63. package/dist/esm/gx-ide-bpm-files-selector.entry.js +0 -97
  64. package/dist/esm/gx-ide-bpm-files-selector.entry.js.map +0 -1
  65. package/dist/esm/gx-ide-import-from-design.entry.js +0 -518
  66. package/dist/esm/gx-ide-import-from-design.entry.js.map +0 -1
  67. package/dist/genexus-ide-ui/gx-ide-assets/bpm-files-selector/langs/bpm-files-selector.lang.en.json +0 -14
  68. package/dist/genexus-ide-ui/p-3345a1bc.entry.js.map +0 -1
  69. package/dist/genexus-ide-ui/p-82291acd.entry.js.map +0 -1
  70. package/dist/genexus-ide-ui/p-9bf62c5c.entry.js.map +0 -1
  71. /package/dist/collection/components/bpm/{files-selector/gx-ide-assets/bpm-files-selector/langs/bpm-files-selector.lang.ja.json → import-files/gx-ide-assets/bpm-import-files/langs/bpm-import-files.lang.ja.json} +0 -0
  72. /package/dist/collection/components/bpm/{files-selector/gx-ide-assets/bpm-files-selector/langs/bpm-files-selector.lang.zh.json → import-files/gx-ide-assets/bpm-import-files/langs/bpm-import-files.lang.zh.json} +0 -0
  73. /package/dist/collection/components/bpm/{files-selector → import-files}/helpers.js +0 -0
  74. /package/dist/collection/components/{import-from-design/import-from-design.css → design-import/design-import.css} +0 -0
  75. /package/dist/collection/components/{import-from-design/gx-ide-assets/import-from-design/langs/import-from-design.lang.ja.json → design-import/gx-ide-assets/design-import/langs/design-import.lang.ja.json} +0 -0
  76. /package/dist/collection/components/{import-from-design/gx-ide-assets/import-from-design/langs/import-from-design.lang.zh.json → design-import/gx-ide-assets/design-import/langs/design-import.lang.zh.json} +0 -0
  77. /package/dist/genexus-ide-ui/gx-ide-assets/{bpm-files-selector/langs/bpm-files-selector.lang.ja.json → bpm-import-files/langs/bpm-import-files.lang.ja.json} +0 -0
  78. /package/dist/genexus-ide-ui/gx-ide-assets/{bpm-files-selector/langs/bpm-files-selector.lang.zh.json → bpm-import-files/langs/bpm-import-files.lang.zh.json} +0 -0
  79. /package/dist/genexus-ide-ui/gx-ide-assets/{import-from-design/langs/import-from-design.lang.ja.json → design-import/langs/design-import.lang.ja.json} +0 -0
  80. /package/dist/genexus-ide-ui/gx-ide-assets/{import-from-design/langs/import-from-design.lang.zh.json → design-import/langs/design-import.lang.zh.json} +0 -0
  81. /package/dist/types/components/bpm/{files-selector → import-files}/helpers.d.ts +0 -0
@@ -0,0 +1,18 @@
1
+ {
2
+ "componentName": "BPM Import Files",
3
+ "header": {},
4
+ "main": {
5
+ "listLabel": "Path List",
6
+ "addFilesButton": "Add Files",
7
+ "removeFilesButton": "Remove",
8
+ "automaticBackupLabel": "Automatic backup"
9
+ },
10
+ "footer": {
11
+ "confirmButton": "OK",
12
+ "cancelButton": "Cancel"
13
+ },
14
+ "loader": {
15
+ "title": "Loading...",
16
+ "cancelLabel": "Cancel"
17
+ }
18
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/components/bpm/import-files/helpers.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAwB,EAAc,EAAE;IAC3E,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,MAAM,MAAM,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3D,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9D,MAAM,QAAQ,GAAW,SAAS,CAAC;QACnC,MAAM,WAAW,GAAY,KAAK,CAAC;QACnC,SAAS,CAAC,IAAI,CAAC;YACb,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,WAAW;SACzB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC","sourcesContent":["import { ItemData } from \"../../_helpers/list-selector/list-selector-item/list-selector-item\";\n\nexport const filesToListItemsData = (files: string[] | File[]): ItemData[] => {\n const itemsData: ItemData[] = [];\n files.forEach(file => {\n const itemId = typeof file === \"string\" ? file : file.name;\n const itemValue = typeof file === \"string\" ? file : file.name;\n const itemIcon: string = undefined;\n const itemChecked: boolean = false;\n itemsData.push({\n itemId: itemId,\n itemValue: itemValue,\n itemIcon: itemIcon,\n itemChecked: itemChecked\n });\n });\n return itemsData;\n};\n"]}
@@ -554,6 +554,33 @@ Found on /common/helpers.tsx hiChar function is used to add a span/class to ever
554
554
  display: block;
555
555
  }
556
556
 
557
+ .main {
558
+ display: grid;
559
+ grid-template-rows: 1fr auto;
560
+ height: 100%;
561
+ gap: var(--gx-ide-form-items-gap);
562
+ }
563
+
564
+ .path-list {
565
+ width: 100%;
566
+ height: 100%;
567
+ }
568
+
569
+ gx-ide-list-selector::part(list) {
570
+ height: 100%;
571
+ }
572
+
557
573
  .hidden-input {
558
574
  display: none;
575
+ }
576
+
577
+ .checkbox-container {
578
+ display: flex;
579
+ gap: 0.5rem;
580
+ }
581
+
582
+ .footer {
583
+ display: flex;
584
+ flex-direction: column;
585
+ gap: var(--gx-ide-form-items-gap);
559
586
  }
@@ -21,26 +21,28 @@ export class GxIdeTemplate {
21
21
  this.loadFileHandle = async () => {
22
22
  this.fileInput.click();
23
23
  };
24
- this.handleFileInputChange = async (event) => {
24
+ this.handleFileInputChange = (event) => {
25
25
  const fileInput = event.target;
26
26
  if (fileInput.files && fileInput.files.length > 0) {
27
27
  const newFiles = Array.from(fileInput.files);
28
28
  const uniqueFiles = newFiles.filter(newFile => !this.files.some(existingFile => existingFile.name === newFile.name));
29
29
  this.files = [...this.files, ...uniqueFiles];
30
30
  }
31
- if (this.addCallback) {
32
- await this.addCallback(this.files);
33
- }
34
31
  this.fileInput.value = null;
35
32
  };
33
+ this.confirmCallbackHandle = async () => {
34
+ if (this.confirmCallback && this.files.length > 0) {
35
+ const data = {
36
+ automaticBackup: this.automaticBackupEl.checked,
37
+ files: this.files
38
+ };
39
+ await this.confirmCallback(data);
40
+ }
41
+ };
36
42
  this.removeFiles = (filesToRemove) => {
37
- const removedFiles = this.files.filter(file => filesToRemove.includes(file.name));
38
43
  this.files = this.files.filter(file => !filesToRemove.includes(file.name));
39
- if (this.removeCallback) {
40
- this.removeCallback(removedFiles);
41
- this.selectedFiles = [];
42
- this.fileInput.value = null;
43
- }
44
+ this.selectedFiles = [];
45
+ this.fileInput.value = null;
44
46
  };
45
47
  this.handleRemoveButtonClick = () => {
46
48
  this.removeFiles(this.selectedFiles);
@@ -49,8 +51,8 @@ export class GxIdeTemplate {
49
51
  this.selectedFiles = [];
50
52
  this.displayTitle = false;
51
53
  this.allowedExtensions = undefined;
52
- this.addCallback = undefined;
53
- this.removeCallback = undefined;
54
+ this.confirmCallback = undefined;
55
+ this.cancelCallback = undefined;
54
56
  }
55
57
  // 6.COMPONENT LIFECYCLE METHODS //
56
58
  async componentWillLoad() {
@@ -65,21 +67,21 @@ export class GxIdeTemplate {
65
67
  // 10.RENDER() FUNCTION //
66
68
  render() {
67
69
  var _a;
68
- return (h(Host, { class: "gx-ide-component" }, h("div", { class: "gx-ide-main-wrapper" }, h("gx-ide-container", { containerTitle: this.displayTitle ? this._componentLocale.componentName : null, slimmerFooter: config.gxIdeContainer.slimmerFooter }, h("label", { htmlFor: "path-list" }, this._componentLocale.main.listLabel), h("gx-ide-list-selector", { id: "path-list", type: "multi-selection", listName: "path-list", noListBorder: true, ordered: true, onSelectionChanged: this.fileSelectionChangedHandler, class: "path-list" }, renderListItems(filesToListItemsData(this.files))), h("div", { class: "controls-wrapper" }, h("input", { type: "file", id: "input_file", accept: (_a = this.allowedExtensions) === null || _a === void 0 ? void 0 : _a.join(", "), ref: el => (this.fileInput = el), onChange: this.handleFileInputChange, class: "hidden-input", multiple: true }), h("button", { onClick: this.loadFileHandle }, this._componentLocale.main.addFilesButton), h("button", { onClick: this.handleRemoveButtonClick, disabled: this.selectedFiles.length === 0 }, this._componentLocale.main.removeFilesButton, " (", this.selectedFiles.length, ")"))))));
70
+ return (h(Host, { class: "gx-ide-component" }, h("div", { class: "gx-ide-main-wrapper" }, h("gx-ide-container", { containerTitle: this.displayTitle ? this._componentLocale.componentName : null, slimmerFooter: config.gxIdeContainer.slimmerFooter }, h("div", { class: "main" }, h("div", { class: "controls-wrapper controls-wrapper--vertical" }, h("label", { htmlFor: "path-list" }, this._componentLocale.main.listLabel), h("gx-ide-list-selector", { id: "path-list", type: "multi-selection", listName: "path-list", ordered: true, onSelectionChanged: this.fileSelectionChangedHandler, class: "path-list" }, renderListItems(filesToListItemsData(this.files)))), h("div", { class: "footer" }, h("div", { class: "checkbox-container" }, h("ch-checkbox", { id: "automatic-backup", accessibleName: this._componentLocale.main.automaticBackupLabel, checkedValue: "true", unCheckedValue: "false", value: "checked", ref: el => (this.automaticBackupEl = el) }), h("label", { htmlFor: "automatic-backup" }, this._componentLocale.main.automaticBackupLabel)), h("div", { class: "controls-wrapper" }, h("input", { type: "file", id: "input_file", accept: (_a = this.allowedExtensions) === null || _a === void 0 ? void 0 : _a.join(", "), ref: el => (this.fileInput = el), onChange: this.handleFileInputChange, class: "hidden-input", multiple: true }), h("button", { onClick: this.loadFileHandle }, this._componentLocale.main.addFilesButton), h("button", { onClick: this.handleRemoveButtonClick, disabled: this.selectedFiles.length === 0 }, this._componentLocale.main.removeFilesButton, " (", this.selectedFiles.length, ")")))), h("button", { slot: "footer-end", onClick: this.confirmCallbackHandle }, this._componentLocale.footer.confirmButton), h("button", { slot: "footer-end", onClick: this.cancelCallback }, this._componentLocale.footer.cancelButton)))));
69
71
  }
70
- static get is() { return "gx-ide-bpm-files-selector"; }
72
+ static get is() { return "gx-ide-bpm-import-files"; }
71
73
  static get encapsulation() { return "shadow"; }
72
74
  static get originalStyleUrls() {
73
75
  return {
74
- "$": ["files-selector.scss"]
76
+ "$": ["import-files.scss"]
75
77
  };
76
78
  }
77
79
  static get styleUrls() {
78
80
  return {
79
- "$": ["files-selector.css"]
81
+ "$": ["import-files.css"]
80
82
  };
81
83
  }
82
- static get assetsDirs() { return ["gx-ide-assets/bpm-files-selector"]; }
84
+ static get assetsDirs() { return ["gx-ide-assets/bpm-import-files"]; }
83
85
  static get properties() {
84
86
  return {
85
87
  "displayTitle": {
@@ -115,16 +117,17 @@ export class GxIdeTemplate {
115
117
  "text": "Allowed extensions when 'Add files' button is pressed"
116
118
  }
117
119
  },
118
- "addCallback": {
120
+ "confirmCallback": {
119
121
  "type": "unknown",
120
122
  "mutable": false,
121
123
  "complexType": {
122
- "original": "(files: File[]) => Promise<void>",
123
- "resolved": "(files: File[]) => Promise<void>",
124
+ "original": "(data: ImportData) => Promise<boolean>",
125
+ "resolved": "(data: ImportData) => Promise<boolean>",
124
126
  "references": {
125
- "File": {
126
- "location": "global",
127
- "id": "global::File"
127
+ "ImportData": {
128
+ "location": "local",
129
+ "path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/bpm/import-files/import-files.tsx",
130
+ "id": "src/components/bpm/import-files/import-files.tsx::ImportData"
128
131
  },
129
132
  "Promise": {
130
133
  "location": "global",
@@ -136,20 +139,16 @@ export class GxIdeTemplate {
136
139
  "optional": false,
137
140
  "docs": {
138
141
  "tags": [],
139
- "text": "Callback invoked when user press 'Add files' button. Returns a list with selected files."
142
+ "text": "Callback invoked when user press 'OK' button"
140
143
  }
141
144
  },
142
- "removeCallback": {
145
+ "cancelCallback": {
143
146
  "type": "unknown",
144
147
  "mutable": false,
145
148
  "complexType": {
146
- "original": "(files: File[] | string[]) => Promise<void>",
147
- "resolved": "(files: string[] | File[]) => Promise<void>",
149
+ "original": "() => Promise<void>",
150
+ "resolved": "() => Promise<void>",
148
151
  "references": {
149
- "File": {
150
- "location": "global",
151
- "id": "global::File"
152
- },
153
152
  "Promise": {
154
153
  "location": "global",
155
154
  "id": "global::Promise"
@@ -160,7 +159,7 @@ export class GxIdeTemplate {
160
159
  "optional": false,
161
160
  "docs": {
162
161
  "tags": [],
163
- "text": "Callback invoked when remove button is pressed."
162
+ "text": "Callback invoked when user press 'Cancel' button."
164
163
  }
165
164
  }
166
165
  };
@@ -212,4 +211,4 @@ export class GxIdeTemplate {
212
211
  }
213
212
  static get elementRef() { return "el"; }
214
213
  }
215
- //# sourceMappingURL=files-selector.js.map
214
+ //# sourceMappingURL=import-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-files.js","sourceRoot":"","sources":["../../../../src/components/bpm/import-files/import-files.tsx"],"names":[],"mappings":"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","sourcesContent":["/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { CheckedItemsInfo } from \"../../_helpers/list-selector/list-selector\";\n/* CUSTOM IMPORTS */\nimport { config } from \"../../../common/config\";\nimport { Locale } from \"../../../common/locale\";\nimport { renderListItems } from \"../../../common/render-list-item\";\nimport { filesToListItemsData } from \"./helpers\";\n\n@Component({\n tag: \"gx-ide-bpm-import-files\",\n styleUrl: \"import-files.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/bpm-import-files\"]\n})\nexport class GxIdeTemplate {\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n\n private renderedFirstTime = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeBpmImportFilesElement;\n\n private fileInput: HTMLInputElement;\n private automaticBackupEl: HTMLChCheckboxElement;\n\n // 3.STATE() VARIABLES //\n /**\n * Contains the list of files\n */\n @State() files: File[] = [];\n\n /**\n * Contains the list of selected files\n */\n @State() selectedFiles: string[] = [];\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Allowed extensions when 'Add files' button is pressed\n */\n @Prop() readonly allowedExtensions: string[];\n\n /**\n * Callback invoked when user press 'OK' button\n */\n @Prop() readonly confirmCallback: (data: ImportData) => Promise<boolean>;\n\n /**\n * Callback invoked when user press 'Cancel' button.\n */\n @Prop() readonly cancelCallback: () => Promise<void>;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n /**\n * @description Gets fired when something changes on items section.\n */\n @Event() selectionChanged: EventEmitter<void>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n private fileSelectionChangedHandler = (\n selectedItem: CustomEvent<CheckedItemsInfo>\n ) => {\n this.selectionChanged.emit();\n\n const selectedFiles = Array.isArray(selectedItem.detail)\n ? selectedItem.detail\n : [selectedItem.detail];\n\n this.selectedFiles = selectedFiles.map(item => item.itemValue);\n };\n\n private loadFileHandle = async () => {\n this.fileInput.click();\n };\n\n private handleFileInputChange = (event: Event) => {\n const fileInput = event.target as HTMLInputElement;\n\n if (fileInput.files && fileInput.files.length > 0) {\n const newFiles: File[] = Array.from(fileInput.files);\n const uniqueFiles = newFiles.filter(\n newFile =>\n !this.files.some(existingFile => existingFile.name === newFile.name)\n );\n this.files = [...this.files, ...uniqueFiles];\n }\n\n this.fileInput.value = null;\n };\n\n private confirmCallbackHandle = async () => {\n if (this.confirmCallback && this.files.length > 0) {\n const data: ImportData = {\n automaticBackup: this.automaticBackupEl.checked,\n files: this.files\n };\n\n await this.confirmCallback(data);\n }\n };\n\n private removeFiles = (filesToRemove: string[]) => {\n this.files = this.files.filter(file => !filesToRemove.includes(file.name));\n\n this.selectedFiles = [];\n this.fileInput.value = null;\n };\n\n private handleRemoveButtonClick = () => {\n this.removeFiles(this.selectedFiles);\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host class=\"gx-ide-component\">\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n slimmerFooter={config.gxIdeContainer.slimmerFooter}\n >\n <div class=\"main\">\n {/* path list*/}\n <div class=\"controls-wrapper controls-wrapper--vertical\">\n <label htmlFor=\"path-list\">\n {this._componentLocale.main.listLabel}\n </label>\n <gx-ide-list-selector\n id=\"path-list\"\n type=\"multi-selection\"\n listName=\"path-list\"\n ordered\n onSelectionChanged={this.fileSelectionChangedHandler}\n class=\"path-list\"\n >\n {renderListItems(filesToListItemsData(this.files))}\n </gx-ide-list-selector>\n </div>\n\n <div class=\"footer\">\n <div class=\"checkbox-container\">\n <ch-checkbox\n id=\"automatic-backup\"\n accessibleName={\n this._componentLocale.main.automaticBackupLabel\n }\n checkedValue=\"true\"\n unCheckedValue=\"false\"\n value=\"checked\"\n ref={el =>\n (this.automaticBackupEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n <label htmlFor=\"automatic-backup\">\n {this._componentLocale.main.automaticBackupLabel}\n </label>\n </div>\n <div class=\"controls-wrapper\">\n <input\n type=\"file\"\n id=\"input_file\"\n accept={this.allowedExtensions?.join(\", \")}\n ref={el => (this.fileInput = el as HTMLInputElement)}\n onChange={this.handleFileInputChange}\n class=\"hidden-input\"\n multiple\n />\n <button onClick={this.loadFileHandle}>\n {this._componentLocale.main.addFilesButton}\n </button>\n <button\n onClick={this.handleRemoveButtonClick}\n disabled={this.selectedFiles.length === 0}\n >\n {this._componentLocale.main.removeFilesButton} (\n {this.selectedFiles.length})\n </button>\n </div>\n </div>\n </div>\n\n <button slot=\"footer-end\" onClick={this.confirmCallbackHandle}>\n {this._componentLocale.footer.confirmButton}\n </button>\n <button slot=\"footer-end\" onClick={this.cancelCallback}>\n {this._componentLocale.footer.cancelButton}\n </button>\n </gx-ide-container>\n </div>\n </Host>\n );\n }\n}\n\nexport type ImportData = {\n files: File[];\n automaticBackup: boolean;\n};\n"]}