@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
@@ -1 +1 @@
1
- {"version":3,"file":"ww-files.js","sourceRoot":"","sources":["../../../src/components/ww-files/ww-files.tsx"],"names":[],"mappings":"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","sourcesContent":["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"]}
1
+ {"version":3,"file":"ww-files.js","sourceRoot":"","sources":["../../../src/components/ww-files/ww-files.tsx"],"names":[],"mappings":"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","sourcesContent":["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"]}
@@ -117,6 +117,7 @@ const allGeneXusIdeUIComponents = {
117
117
  "gx-ide-list-selector-item": 0,
118
118
  "gx-ide-loader": 0,
119
119
  "gx-ide-manage-module-references": 0,
120
+ "gx-ide-multi-select": 0,
120
121
  "gx-ide-name-picker": 0,
121
122
  "gx-ide-new-environment": 0,
122
123
  "gx-ide-new-kb": 0,
@@ -164,6 +165,7 @@ const allGeneXusIdeUIComponents = {
164
165
  "gx-ide-launchpad-api": 0,
165
166
  "gx-ide-comments-viewer": 0,
166
167
  "gx-ide-restore-version": 0,
168
+ "gx-ide-search": 0,
167
169
  "gx-ide-breadcrumb": 0,
168
170
  "gx-ide-breadcrumb-item": 0
169
171
  };
@@ -178,7 +180,8 @@ const componentsWithoutTranslations = new Set([
178
180
  "gx-ide-test",
179
181
  "gx-ide-file-item",
180
182
  "gx-ide-breadcrumb",
181
- "gx-ide-breadcrumb-item"
183
+ "gx-ide-breadcrumb-item",
184
+ "gx-ide-multi-select"
182
185
  ]);
183
186
  const componentsWithTranslations = Object.keys(allGeneXusIdeUIComponents).filter(component => !componentsWithoutTranslations.has(component));
184
187
  componentsWithTranslations.forEach(testLocale);
@@ -1 +1 @@
1
- {"version":3,"file":"locale.e2e.js","sourceRoot":"","sources":["../../src/testing/locale.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage, newE2EPage } from \"@stencil/core/testing\";\nimport { GeneXusIdeUIControlsTagName } from \"../common/types\";\nimport { haveSameStructure } from \"./same-structure.e2e\";\n\nconst COMPONENT_PREFIX = \"gx-ide-\";\nconst languages: { name: string; attr: string }[] = [\n { name: \"chinese\", attr: \"zh\" },\n { name: \"english\", attr: \"en\" },\n { name: \"japanese\", attr: \"ja\" }\n];\n\nconst testLocale = (componentNameWithPrefix: GeneXusIdeUIControlsTagName) => {\n describe(`[locale][${componentNameWithPrefix}]`, () => {\n let page: E2EPage;\n const componentName = componentNameWithPrefix.replace(COMPONENT_PREFIX, \"\");\n\n // This implementation is a WA since we can't evaluate JS classes in the page.\n // TODO: Implement the locale utility as a function, which can be evaluated\n // in the page\n const getTranslations = () =>\n page.evaluate(component => {\n const ASSETS_FOLDER = \"gx-ide-assets/\";\n const DEFAULT_LANGUAGE = \"en\";\n const LANGS_FOLDER = \"langs/\";\n const LANG_PREFIX = \".lang.\";\n const LANG_EXTENSION = \".json\";\n const lang =\n document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf() ?? DEFAULT_LANGUAGE;\n const folder = `${component}/`;\n\n const path =\n `/build/${ASSETS_FOLDER}${folder}${LANGS_FOLDER}${component}${LANG_PREFIX}${lang}${LANG_EXTENSION}` as const;\n\n return new Promise(resolve => {\n fetch(path)\n .then(async langFile => {\n if (langFile.ok) {\n const fileObject = await langFile.json();\n resolve(fileObject);\n } else {\n resolve(undefined);\n }\n })\n .catch(() => resolve(undefined));\n });\n }, componentName);\n\n beforeEach(async () => {\n page = await newE2EPage({\n failOnConsoleError: true,\n html: \"\" // Necessary\n });\n });\n\n it(\"should work without specifying the language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n\n it(\"should default to english language when there is no language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n\n await page.evaluate(() =>\n document.documentElement.setAttribute(\"lang\", \"en\")\n );\n\n const languageEnglishFile: any | undefined = await getTranslations();\n expect(languageEnglishFile).toBeTruthy();\n expect(languageFile).toEqual(languageEnglishFile);\n });\n\n languages.forEach(language => {\n it(`should work with ${language.name} language`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language.attr\n );\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n });\n\n for (let index = 0; index < languages.length - 1; index++) {\n const language1 = languages[index];\n const language2 = languages[index + 1];\n\n // TODO: Complete all translations. At this moment, Japanese and Chinese\n // translations have missing literals\n it(`should translate the same literals (${language1.name} and ${language2.name})`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language1.attr\n );\n const language1File: any | undefined = await getTranslations();\n\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language2.attr\n );\n const language2File: any | undefined = await getTranslations();\n\n expect(language1File).toBeTruthy();\n expect(language2File).toBeTruthy();\n expect(haveSameStructure(language1File, language2File)).toBe(true);\n });\n }\n });\n};\n\n// TypeScript does not have a built-in type to exhaust a list with union types\nconst allGeneXusIdeUIComponents: { [key in GeneXusIdeUIControlsTagName]: 0 } = {\n \"gx-ide-about\": 0,\n \"gx-ide-bpm-app-declaration\": 0,\n \"gx-ide-bpm-assign-roles\": 0,\n \"gx-ide-bpm-import-files\": 0,\n \"gx-ide-bpm-import-gxpm\": 0,\n \"gx-ide-bpm-objects-selector\": 0,\n \"gx-ide-bpm-sync-gam-roles\": 0,\n \"gx-ide-bpm-task-documents\": 0,\n \"gx-ide-bpm-timer-duration\": 0,\n \"gx-ide-chat-container\": 0,\n \"gx-ide-chat-welcome\": 0,\n \"gx-ide-sc-chat-container\": 0,\n \"gx-ide-connect-gx-server\": 0,\n \"gx-ide-container\": 0,\n \"gx-ide-create-kb-from-server\": 0,\n \"gx-ide-current-user-info\": 0,\n \"gx-ide-data-selector\": 0,\n \"gx-ide-data-type-selector\": 0,\n \"gx-ide-deployment-tool\": 0,\n \"gx-ide-details-acknowledgements\": 0,\n \"gx-ide-design-import\": 0,\n \"gx-ide-edit-module-server\": 0,\n \"gx-ide-empty-state\": 0,\n \"gx-ide-entity-selector\": 0,\n \"gx-ide-file-item\": 0,\n \"gx-ide-file-uploader\": 0,\n \"gx-ide-gam-installation-settings\": 0,\n \"gx-ide-json-import\": 0,\n \"gx-ide-kb-manager-export\": 0,\n \"gx-ide-kb-manager-import\": 0,\n \"gx-ide-list-selector\": 0,\n \"gx-ide-list-selector-item\": 0,\n \"gx-ide-loader\": 0,\n \"gx-ide-manage-module-references\": 0,\n \"gx-ide-name-picker\": 0,\n \"gx-ide-new-environment\": 0,\n \"gx-ide-new-kb\": 0,\n \"gx-ide-new-object\": 0,\n \"gx-ide-new-version\": 0,\n \"gx-ide-object-selector\": 0,\n \"gx-ide-open-api-import\": 0,\n \"gx-ide-progress-bar\": 0,\n \"gx-ide-plugin-explorer\": 0,\n \"gx-ide-plugin-details\": 0,\n \"gx-ide-references\": 0,\n \"gx-ide-server-selector\": 0,\n \"gx-ide-select-kb-items\": 0,\n \"gx-ide-select-user-team\": 0,\n \"gx-ide-sign-in\": 0,\n \"gx-ide-sign-in-team\": 0,\n \"gx-ide-share-kb\": 0,\n \"gx-ide-start-page\": 0,\n \"gx-ide-sign-in-result\": 0,\n \"gx-ide-status-buttons\": 0,\n \"gx-ide-team-dev-bring-changes\": 0,\n \"gx-ide-team-dev-bring-all-changes-selector\": 0,\n \"gx-ide-team-dev-commit\": 0,\n \"gx-ide-team-dev-history\": 0,\n \"gx-ide-team-dev-preview\": 0,\n \"gx-ide-team-dev-select-recent-comment\": 0,\n \"gx-ide-team-dev-update\": 0,\n \"gx-ide-team-dev-update-partial-selection\": 0,\n \"gx-ide-team-dev-update-to-revision\": 0,\n \"gx-ide-starting-template\": 0,\n \"gx-ide-test\": 0,\n \"gx-ide-wf-settings\": 0,\n \"gx-ide-ww-images\": 0,\n \"gx-ide-ww-attributes\": 0,\n \"gx-ide-ww-files\": 0,\n \"gx-ide-navigation-report\": 0,\n \"gx-ide-splash\": 0,\n \"gx-ide-welcome-page\": 0,\n \"gx-ide-bpm-export-xpdl\": 0,\n \"gx-ide-curl-inspector\": 0,\n \"gx-ide-launchpad\": 0,\n \"gx-ide-launchpad-web-apps\": 0,\n \"gx-ide-launchpad-native-apps\": 0,\n \"gx-ide-launchpad-apis\": 0,\n \"gx-ide-launchpad-api\": 0,\n \"gx-ide-comments-viewer\": 0,\n \"gx-ide-restore-version\": 0,\n \"gx-ide-breadcrumb\": 0,\n \"gx-ide-breadcrumb-item\": 0\n};\n\nconst componentsWithoutTranslations = new Set<GeneXusIdeUIControlsTagName>([\n \"gx-ide-chat-container\",\n \"gx-ide-container\",\n \"gx-ide-sc-chat-container\",\n \"gx-ide-empty-state\",\n \"gx-ide-list-selector\",\n \"gx-ide-list-selector-item\",\n \"gx-ide-loader\",\n \"gx-ide-test\",\n \"gx-ide-file-item\",\n \"gx-ide-breadcrumb\",\n \"gx-ide-breadcrumb-item\"\n]);\n\nconst componentsWithTranslations = Object.keys(\n allGeneXusIdeUIComponents\n).filter(\n component =>\n !componentsWithoutTranslations.has(component as GeneXusIdeUIControlsTagName)\n);\n\ncomponentsWithTranslations.forEach(testLocale);\n"]}
1
+ {"version":3,"file":"locale.e2e.js","sourceRoot":"","sources":["../../src/testing/locale.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage, newE2EPage } from \"@stencil/core/testing\";\nimport { GeneXusIdeUIControlsTagName } from \"../common/types\";\nimport { haveSameStructure } from \"./same-structure.e2e\";\n\nconst COMPONENT_PREFIX = \"gx-ide-\";\nconst languages: { name: string; attr: string }[] = [\n { name: \"chinese\", attr: \"zh\" },\n { name: \"english\", attr: \"en\" },\n { name: \"japanese\", attr: \"ja\" }\n];\n\nconst testLocale = (componentNameWithPrefix: GeneXusIdeUIControlsTagName) => {\n describe(`[locale][${componentNameWithPrefix}]`, () => {\n let page: E2EPage;\n const componentName = componentNameWithPrefix.replace(COMPONENT_PREFIX, \"\");\n\n // This implementation is a WA since we can't evaluate JS classes in the page.\n // TODO: Implement the locale utility as a function, which can be evaluated\n // in the page\n const getTranslations = () =>\n page.evaluate(component => {\n const ASSETS_FOLDER = \"gx-ide-assets/\";\n const DEFAULT_LANGUAGE = \"en\";\n const LANGS_FOLDER = \"langs/\";\n const LANG_PREFIX = \".lang.\";\n const LANG_EXTENSION = \".json\";\n const lang =\n document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf() ?? DEFAULT_LANGUAGE;\n const folder = `${component}/`;\n\n const path =\n `/build/${ASSETS_FOLDER}${folder}${LANGS_FOLDER}${component}${LANG_PREFIX}${lang}${LANG_EXTENSION}` as const;\n\n return new Promise(resolve => {\n fetch(path)\n .then(async langFile => {\n if (langFile.ok) {\n const fileObject = await langFile.json();\n resolve(fileObject);\n } else {\n resolve(undefined);\n }\n })\n .catch(() => resolve(undefined));\n });\n }, componentName);\n\n beforeEach(async () => {\n page = await newE2EPage({\n failOnConsoleError: true,\n html: \"\" // Necessary\n });\n });\n\n it(\"should work without specifying the language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n\n it(\"should default to english language when there is no language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n\n await page.evaluate(() =>\n document.documentElement.setAttribute(\"lang\", \"en\")\n );\n\n const languageEnglishFile: any | undefined = await getTranslations();\n expect(languageEnglishFile).toBeTruthy();\n expect(languageFile).toEqual(languageEnglishFile);\n });\n\n languages.forEach(language => {\n it(`should work with ${language.name} language`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language.attr\n );\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n });\n\n for (let index = 0; index < languages.length - 1; index++) {\n const language1 = languages[index];\n const language2 = languages[index + 1];\n\n // TODO: Complete all translations. At this moment, Japanese and Chinese\n // translations have missing literals\n it(`should translate the same literals (${language1.name} and ${language2.name})`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language1.attr\n );\n const language1File: any | undefined = await getTranslations();\n\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language2.attr\n );\n const language2File: any | undefined = await getTranslations();\n\n expect(language1File).toBeTruthy();\n expect(language2File).toBeTruthy();\n expect(haveSameStructure(language1File, language2File)).toBe(true);\n });\n }\n });\n};\n\n// TypeScript does not have a built-in type to exhaust a list with union types\nconst allGeneXusIdeUIComponents: { [key in GeneXusIdeUIControlsTagName]: 0 } = {\n \"gx-ide-about\": 0,\n \"gx-ide-bpm-app-declaration\": 0,\n \"gx-ide-bpm-assign-roles\": 0,\n \"gx-ide-bpm-import-files\": 0,\n \"gx-ide-bpm-import-gxpm\": 0,\n \"gx-ide-bpm-objects-selector\": 0,\n \"gx-ide-bpm-sync-gam-roles\": 0,\n \"gx-ide-bpm-task-documents\": 0,\n \"gx-ide-bpm-timer-duration\": 0,\n \"gx-ide-chat-container\": 0,\n \"gx-ide-chat-welcome\": 0,\n \"gx-ide-sc-chat-container\": 0,\n \"gx-ide-connect-gx-server\": 0,\n \"gx-ide-container\": 0,\n \"gx-ide-create-kb-from-server\": 0,\n \"gx-ide-current-user-info\": 0,\n \"gx-ide-data-selector\": 0,\n \"gx-ide-data-type-selector\": 0,\n \"gx-ide-deployment-tool\": 0,\n \"gx-ide-details-acknowledgements\": 0,\n \"gx-ide-design-import\": 0,\n \"gx-ide-edit-module-server\": 0,\n \"gx-ide-empty-state\": 0,\n \"gx-ide-entity-selector\": 0,\n \"gx-ide-file-item\": 0,\n \"gx-ide-file-uploader\": 0,\n \"gx-ide-gam-installation-settings\": 0,\n \"gx-ide-json-import\": 0,\n \"gx-ide-kb-manager-export\": 0,\n \"gx-ide-kb-manager-import\": 0,\n \"gx-ide-list-selector\": 0,\n \"gx-ide-list-selector-item\": 0,\n \"gx-ide-loader\": 0,\n \"gx-ide-manage-module-references\": 0,\n \"gx-ide-multi-select\": 0,\n \"gx-ide-name-picker\": 0,\n \"gx-ide-new-environment\": 0,\n \"gx-ide-new-kb\": 0,\n \"gx-ide-new-object\": 0,\n \"gx-ide-new-version\": 0,\n \"gx-ide-object-selector\": 0,\n \"gx-ide-open-api-import\": 0,\n \"gx-ide-progress-bar\": 0,\n \"gx-ide-plugin-explorer\": 0,\n \"gx-ide-plugin-details\": 0,\n \"gx-ide-references\": 0,\n \"gx-ide-server-selector\": 0,\n \"gx-ide-select-kb-items\": 0,\n \"gx-ide-select-user-team\": 0,\n \"gx-ide-sign-in\": 0,\n \"gx-ide-sign-in-team\": 0,\n \"gx-ide-share-kb\": 0,\n \"gx-ide-start-page\": 0,\n \"gx-ide-sign-in-result\": 0,\n \"gx-ide-status-buttons\": 0,\n \"gx-ide-team-dev-bring-changes\": 0,\n \"gx-ide-team-dev-bring-all-changes-selector\": 0,\n \"gx-ide-team-dev-commit\": 0,\n \"gx-ide-team-dev-history\": 0,\n \"gx-ide-team-dev-preview\": 0,\n \"gx-ide-team-dev-select-recent-comment\": 0,\n \"gx-ide-team-dev-update\": 0,\n \"gx-ide-team-dev-update-partial-selection\": 0,\n \"gx-ide-team-dev-update-to-revision\": 0,\n \"gx-ide-starting-template\": 0,\n \"gx-ide-test\": 0,\n \"gx-ide-wf-settings\": 0,\n \"gx-ide-ww-images\": 0,\n \"gx-ide-ww-attributes\": 0,\n \"gx-ide-ww-files\": 0,\n \"gx-ide-navigation-report\": 0,\n \"gx-ide-splash\": 0,\n \"gx-ide-welcome-page\": 0,\n \"gx-ide-bpm-export-xpdl\": 0,\n \"gx-ide-curl-inspector\": 0,\n \"gx-ide-launchpad\": 0,\n \"gx-ide-launchpad-web-apps\": 0,\n \"gx-ide-launchpad-native-apps\": 0,\n \"gx-ide-launchpad-apis\": 0,\n \"gx-ide-launchpad-api\": 0,\n \"gx-ide-comments-viewer\": 0,\n \"gx-ide-restore-version\": 0,\n \"gx-ide-search\": 0,\n \"gx-ide-breadcrumb\": 0,\n \"gx-ide-breadcrumb-item\": 0\n};\n\nconst componentsWithoutTranslations = new Set<GeneXusIdeUIControlsTagName>([\n \"gx-ide-chat-container\",\n \"gx-ide-container\",\n \"gx-ide-sc-chat-container\",\n \"gx-ide-empty-state\",\n \"gx-ide-list-selector\",\n \"gx-ide-list-selector-item\",\n \"gx-ide-loader\",\n \"gx-ide-test\",\n \"gx-ide-file-item\",\n \"gx-ide-breadcrumb\",\n \"gx-ide-breadcrumb-item\",\n \"gx-ide-multi-select\"\n]);\n\nconst componentsWithTranslations = Object.keys(\n allGeneXusIdeUIComponents\n).filter(\n component =>\n !componentsWithoutTranslations.has(component as GeneXusIdeUIControlsTagName)\n);\n\ncomponentsWithTranslations.forEach(testLocale);\n"]}
@@ -4,7 +4,7 @@ import 'lit';
4
4
  import 'lit/directives/when.js';
5
5
  import 'lit/directives/if-defined.js';
6
6
 
7
- const fileItemCss = ":host{display:block;inline-size:100%}.file-item{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto;gap:var(--spacing-gap-l);align-items:center;border:1px solid var(--mer-border__default);border-radius:4px}.file-item__icon{display:flex;align-items:center}.file-item__name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;inline-size:100%;font-weight:var(--font-style-regular)}.file-item__name ch-edit{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;inline-size:100%;font-weight:var(--font-style-regular)}.file-item__name .label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;inline-size:100%;font-weight:var(--font-style-regular)}.file-item__actions{display:flex;gap:var(--spacing-gap-m)}.file-item__actions button:active,.file-item__actions button:focus,.file-item__actions button:hover{background-color:var(--mer-surface__hover)}.file-item__actions button:active{background-color:var(--mer-surface__pressed)}.file-item__progress-container{grid-column:1/-1;display:flex;flex-direction:column;gap:var(--spacing-gap-xs);inline-size:100%;border:2px dashed var(--color-border-neutral-default);border-radius:8px;padding:var(--spacing-padding-l)}.file-item__progress-header{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-gap-l)}.file-item__uploading-text{font-style:italic;color:var(--color-text-neutral-disabled);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-inline-size:calc(100% - 40px)}.file-item__progress-bar{inline-size:100%}.file-item__progress-bar progress{inline-size:100%;height:8px;border:none;border-radius:4px;overflow:hidden}.file-item__progress-bar progress::-webkit-progress-bar{background-color:transparent}.file-item__progress-bar progress::-webkit-progress-value{background-color:var(--color-accent-primary-default)}.file-item__progress-bar progress::-moz-progress-bar{background-color:var(--color-accent-primary-default)}";
7
+ const fileItemCss = ":host{display:block}.file-item{display:grid;column-gap:var(--spacing-gap-l);row-gap:var(--spacing-gap-s);align-items:center;border-radius:var(--border-radius-s)}.file-item--without-actions{grid-template-columns:max-content 1fr;grid-template-areas:\"icon name\"}.file-item--with-actions{grid-template-columns:max-content 1fr max-content;grid-template-areas:\"icon name actions\"}.file-item__icon{display:flex;align-items:center;grid-area:icon;padding-block:calc(32px - var(--ch-image-size))}.file-item__name{grid-area:name;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-inline-size:0}.file-item__name ch-edit{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.file-item__name .label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.file-item__actions{grid-area:actions;display:flex}.file-item__cancel-upload{transform:translateX(7px)}.file-item__progress-container{grid-column:1/-1;display:flex;flex-direction:column;gap:var(--spacing-gap-xs);border:2px dashed var(--color-border-neutral-default);border-radius:var(--border-radius-m);padding:var(--spacing-padding-xxs) var(--spacing-padding-l) var(--spacing-padding-m) var(--spacing-padding-l)}.file-item__progress-header{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-gap-l)}.file-item__uploading-text{color:var(--color-text-neutral-disabled);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-inline-size:calc(100% - 40px)}.file-item__progress-bar progress{block-size:8px;line-height:0;border:none;border-radius:var(--border-radius-s);overflow:hidden}.file-item__progress-bar progress::-webkit-progress-bar{background-color:transparent}.file-item__progress-bar progress::-webkit-progress-value{background-color:var(--color-accent-primary-default)}.file-item__progress-bar progress::-moz-progress-bar{background-color:var(--color-accent-primary-default)}";
8
8
 
9
9
  var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
10
10
  if (kind === "a" && !f)
@@ -83,6 +83,7 @@ const FileItem = /*@__PURE__*/ proxyCustomElement(class FileItem extends HTMLEle
83
83
  });
84
84
  this.file = undefined;
85
85
  this.editable = false;
86
+ this.componentLocale = undefined;
86
87
  this.fileDeletedCallback = undefined;
87
88
  this.fileDeletionErrorCallback = undefined;
88
89
  this.isEditing = false;
@@ -96,7 +97,25 @@ const FileItem = /*@__PURE__*/ proxyCustomElement(class FileItem extends HTMLEle
96
97
  this.currentName = this.file.name;
97
98
  }
98
99
  render() {
99
- return (h("div", { class: "file-item" }, h("ch-theme", { model: CSS_BUNDLES }), h("div", { class: "file-item__icon" }, h("ch-image", { src: FILE_ICON, class: "icon-m" })), h("div", { class: "file-item__name" }, this.isEditing ? (h("ch-edit", { value: this.currentName, autoFocus: true, onInput: __classPrivateFieldGet(this, _FileItem_handleNameChange, "f"), onBlur: __classPrivateFieldGet(this, _FileItem_handleBlur, "f"), class: "input" })) : (h("label", { class: "label" }, this.currentName))), h("div", { class: "file-item__actions" }, !this.file.pending && this.editable && (h("button", { class: "button-tertiary button-icon-only", type: "button", onClick: __classPrivateFieldGet(this, _FileItem_startEditing, "f") }, h("ch-image", { src: EDIT_ICON, class: "icon-m" }))), !this.file.pending && (h("button", { class: "button-tertiary button-icon-only", type: "button", onClick: __classPrivateFieldGet(this, _FileItem_handleDelete, "f"), "aria-label": "Delete file" }, h("ch-image", { src: DELETE_ICON, class: "icon-m" })))), this.file.pending && (h("div", { class: "file-item__progress-container" }, h("div", { class: "file-item__progress-header" }, h("span", { class: "file-item__uploading-text" }, "Uploading ", this.currentName, "..."), h("button", { class: "button-tertiary button-icon-only", type: "button", onClick: __classPrivateFieldGet(this, _FileItem_handleCancelClick, "f") }, h("ch-image", { src: CANCEL_ICON, class: "icon-m" }))), h("div", { class: "file-item__progress-bar" }, h("progress", { class: "elevation-1", value: this.file.progress, max: "100" }))))));
100
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
101
+ const displayItemActions = !this.file.pending;
102
+ const displayProgressContainer = this.file.pending;
103
+ const labelId = "progress-label-" + this.file.id;
104
+ let liAriaLabel;
105
+ if (this.file.pending) {
106
+ liAriaLabel = ((_d = (_c = (_b = (_a = this.componentLocale) === null || _a === void 0 ? void 0 : _a.fileItem) === null || _b === void 0 ? void 0 : _b.uploadingAriaLabel) === null || _c === void 0 ? void 0 : _c.replace("{fileName}", this.currentName)) === null || _d === void 0 ? void 0 : _d.replace("{fileProgress}", this.file.progress.toString())) || this.currentName;
107
+ }
108
+ else if (this.file.remoteId) {
109
+ liAriaLabel = ((_g = (_f = (_e = this.componentLocale) === null || _e === void 0 ? void 0 : _e.fileItem) === null || _f === void 0 ? void 0 : _f.uploadedSuccessfullyAriaLabel) === null || _g === void 0 ? void 0 : _g.replace("{fileName}", this.currentName)) || this.currentName;
110
+ }
111
+ else {
112
+ liAriaLabel = this.currentName;
113
+ }
114
+ return (h("li", { class: {
115
+ "file-item": true,
116
+ "file-item--without-actions": !displayItemActions,
117
+ "file-item--with-actions": displayItemActions
118
+ }, "aria-label": liAriaLabel }, h("ch-theme", { model: CSS_BUNDLES }), h("div", { class: "file-item__icon" }, h("ch-image", { disabled: !this.file.pending, src: FILE_ICON, class: "icon-m" })), h("div", { class: "file-item__name" }, this.isEditing ? (h("ch-edit", { accessibleName: (_k = (_j = (_h = this.componentLocale) === null || _h === void 0 ? void 0 : _h.fileItem) === null || _j === void 0 ? void 0 : _j.editNamePlaceholderAriaLabel) === null || _k === void 0 ? void 0 : _k.replace("{fileName}", this.currentName), value: this.currentName, autoFocus: true, onInput: __classPrivateFieldGet(this, _FileItem_handleNameChange, "f"), onBlur: __classPrivateFieldGet(this, _FileItem_handleBlur, "f"), class: "input", id: labelId })) : (h("span", { class: "label", id: labelId }, this.currentName))), displayItemActions ? (h("div", { class: "file-item__actions" }, !this.file.pending && this.editable && (h("button", { class: "button-tertiary button-icon-only", type: "button", onClick: __classPrivateFieldGet(this, _FileItem_startEditing, "f") }, h("ch-image", { src: EDIT_ICON, class: "icon-m" }))), !this.file.pending && (h("button", { class: "button-tertiary button-icon-only", type: "button", onClick: __classPrivateFieldGet(this, _FileItem_handleDelete, "f"), "aria-label": "Delete file" }, h("ch-image", { src: DELETE_ICON, class: "icon-m" }))))) : (null), displayProgressContainer && (h("div", { class: "file-item__progress-container" }, h("div", { class: "file-item__progress-header" }, h("span", { class: "file-item__uploading-text typography-body-italic-s" }, "Uploading ", this.currentName, "..."), h("button", { "aria-label": ((_o = (_m = (_l = this.componentLocale) === null || _l === void 0 ? void 0 : _l.fileItem) === null || _m === void 0 ? void 0 : _m.cancelUploadButtonAriaLabel) === null || _o === void 0 ? void 0 : _o.replace("{fileName}", this.currentName)) || "Cancel upload", class: "button-tertiary button-icon-only file-item__cancel-upload", type: "button", onClick: __classPrivateFieldGet(this, _FileItem_handleCancelClick, "f") }, h("ch-image", { src: CANCEL_ICON, class: "icon-m" }))), h("div", { class: "file-item__progress-bar" }, h("progress", { class: "elevation-1", value: this.file.progress, max: "100", "aria-labelledby": labelId }))))));
100
119
  }
101
120
  static get watchers() { return {
102
121
  "file": ["handleFileChange"]
@@ -105,6 +124,7 @@ const FileItem = /*@__PURE__*/ proxyCustomElement(class FileItem extends HTMLEle
105
124
  }, [1, "gx-ide-file-item", {
106
125
  "file": [16],
107
126
  "editable": [4],
127
+ "componentLocale": [8, "component-locale"],
108
128
  "fileDeletedCallback": [16],
109
129
  "fileDeletionErrorCallback": [16],
110
130
  "isEditing": [32],
@@ -1 +1 @@
1
- {"file":"file-item.js","mappings":"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","names":[],"sources":["src/components/file-uploader/file-item/file-item.scss?tag=gx-ide-file-item&encapsulation=shadow","src/components/file-uploader/file-item/file-item.tsx"],"sourcesContent":["@import \"../../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n inline-size: 100%;\n}\n\n.file-item {\n display: grid;\n grid-template-columns: auto 1fr auto;\n grid-template-rows: auto;\n gap: var(--spacing-gap-l);\n align-items: center;\n border: 1px solid var(--mer-border__default);\n border-radius: 4px;\n\n &__icon {\n display: flex;\n align-items: center;\n }\n\n &__name {\n @include ellipsis;\n inline-size: 100%;\n font-weight: var(--font-style-regular);\n\n ch-edit {\n @include ellipsis;\n inline-size: 100%;\n font-weight: var(--font-style-regular);\n }\n\n .label {\n @include ellipsis;\n inline-size: 100%;\n font-weight: var(--font-style-regular);\n }\n }\n\n &__actions {\n display: flex;\n gap: var(--spacing-gap-m);\n\n button {\n &:active,\n &:focus,\n &:hover {\n background-color: var(--mer-surface__hover);\n }\n\n &:active {\n background-color: var(--mer-surface__pressed);\n }\n }\n }\n\n &__progress-container {\n grid-column: 1 / -1;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-xs);\n inline-size: 100%;\n border: 2px dashed var(--color-border-neutral-default);\n border-radius: 8px;\n padding: var(--spacing-padding-l);\n }\n\n &__progress-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--spacing-gap-l);\n }\n\n &__uploading-text {\n font-style: italic;\n color: var(--color-text-neutral-disabled);\n @include ellipsis;\n max-inline-size: calc(100% - 40px);\n }\n\n &__progress-bar {\n inline-size: 100%;\n\n progress {\n inline-size: 100%;\n height: 8px;\n border: none;\n border-radius: 4px;\n overflow: hidden;\n\n &::-webkit-progress-bar {\n background-color: transparent;\n }\n\n &::-webkit-progress-value {\n background-color: var(--color-accent-primary-default);\n }\n\n &::-moz-progress-bar {\n background-color: var(--color-accent-primary-default);\n }\n }\n }\n}\n","import {\n Component,\n h,\n Prop,\n State,\n Event,\n EventEmitter,\n Watch\n} from \"@stencil/core\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { ChEditCustomEvent } from \"@genexus/chameleon-controls-library\";\nimport { FileUploadState } from \"../types\";\n\nconst FILE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"file\",\n colorType: \"primary\"\n});\n\nconst EDIT_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"edit\",\n colorType: \"primary\"\n});\n\nconst DELETE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"delete\",\n colorType: \"primary\"\n});\n\nconst CANCEL_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"close\",\n colorType: \"primary\"\n});\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/icon\",\n \"components/edit\",\n \"utils/typography\",\n \"utils/spacing\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/elevation\"\n];\n\n@Component({\n tag: \"gx-ide-file-item\",\n styleUrl: \"file-item.scss\",\n shadow: true\n})\nexport class FileItem {\n /** File state containing upload information */\n @Prop() readonly file!: FileUploadState;\n\n /** Whether the file name can be edited */\n @Prop() readonly editable: boolean = false;\n\n /** Callback when a file is deleted */\n @Prop() readonly fileDeletedCallback?: (fileId: string) => Promise<void>;\n\n /** Callback when a file deletion error occurs */\n @Prop() readonly fileDeletionErrorCallback?: (data: {\n fileName: string;\n error: string;\n }) => Promise<void>;\n\n /** Updates current name when file prop changes */\n @Watch(\"file\")\n handleFileChange(newFile: FileUploadState) {\n this.currentName = newFile.name;\n }\n\n @State() isEditing: boolean = false;\n @State() currentName: string;\n\n /** Emitted when the file name is changed */\n @Event() fileNameChange: EventEmitter<{ id: string; name: string }>;\n\n /** Emitted when the file is deleted */\n @Event() fileDelete: EventEmitter<string>;\n\n /** Emitted when the file upload is cancelled */\n @Event() fileCancel: EventEmitter<string>;\n\n componentWillLoad() {\n this.currentName = this.file.name;\n }\n\n #handleNameChange = (event: ChEditCustomEvent<string> | InputEvent) => {\n const newName = (event as CustomEvent<string>).detail;\n\n if (newName && newName !== this.currentName) {\n this.currentName = newName;\n this.fileNameChange.emit({\n id: this.file.id,\n name: newName\n });\n }\n };\n\n #handleBlur = () => {\n this.isEditing = false;\n };\n\n /** Handles file deletion */\n #handleDelete = () => {\n this.fileDelete.emit(this.file.id);\n };\n\n /** Handles upload cancellation */\n #handleCancelClick = (e: MouseEvent) => {\n e.preventDefault();\n this.fileCancel.emit(this.file.id);\n };\n\n /** Starts file name editing */\n #startEditing = () => {\n if (this.editable) {\n this.isEditing = true;\n }\n };\n\n render() {\n return (\n <div class=\"file-item\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"file-item__icon\">\n <ch-image src={FILE_ICON} class=\"icon-m\" />\n </div>\n\n <div class=\"file-item__name\">\n {this.isEditing ? (\n <ch-edit\n value={this.currentName}\n autoFocus={true}\n onInput={this.#handleNameChange}\n onBlur={this.#handleBlur}\n class=\"input\"\n />\n ) : (\n <label class=\"label\">{this.currentName}</label>\n )}\n </div>\n\n <div class=\"file-item__actions\">\n {!this.file.pending && this.editable && (\n <button\n class=\"button-tertiary button-icon-only\"\n type=\"button\"\n onClick={this.#startEditing}\n >\n <ch-image src={EDIT_ICON} class=\"icon-m\" />\n </button>\n )}\n {!this.file.pending && (\n <button\n class=\"button-tertiary button-icon-only\"\n type=\"button\"\n onClick={this.#handleDelete}\n aria-label=\"Delete file\"\n >\n <ch-image src={DELETE_ICON} class=\"icon-m\" />\n </button>\n )}\n </div>\n\n {this.file.pending && (\n <div class=\"file-item__progress-container\">\n <div class=\"file-item__progress-header\">\n <span class=\"file-item__uploading-text\">\n Uploading {this.currentName}...\n </span>\n <button\n class=\"button-tertiary button-icon-only\"\n type=\"button\"\n onClick={this.#handleCancelClick}\n >\n <ch-image src={CANCEL_ICON} class=\"icon-m\" />\n </button>\n </div>\n <div class=\"file-item__progress-bar\">\n <progress\n class=\"elevation-1\"\n value={this.file.progress}\n max=\"100\"\n />\n </div>\n </div>\n )}\n </div>\n );\n }\n}\n"],"version":3}
1
+ {"file":"file-item.js","mappings":"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","names":[],"sources":["src/components/file-uploader/file-item/file-item.scss?tag=gx-ide-file-item&encapsulation=shadow","src/components/file-uploader/file-item/file-item.tsx"],"sourcesContent":["@import \"../../../global/gx-ide-mixins.scss\";\n\n$file-item-actions-inline-size: 40px;\n\n:host {\n display: block;\n}\n\n.file-item {\n display: grid;\n column-gap: var(--spacing-gap-l);\n row-gap: var(--spacing-gap-s);\n align-items: center;\n border-radius: var(--border-radius-s);\n \n &--without-actions {\n grid-template-columns: max-content 1fr;\n grid-template-areas: \"icon name\";\n }\n &--with-actions {\n grid-template-columns: max-content 1fr max-content;\n grid-template-areas: \"icon name actions\";\n }\n\n &__icon {\n display: flex;\n align-items: center;\n grid-area: icon;\n padding-block: calc(32px - var(--ch-image-size)); // prevent layout shift when file-item__actions are displayed\n }\n\n &__name {\n grid-area: name;\n @include ellipsis;\n min-inline-size: 0;\n\n ch-edit {\n @include ellipsis;\n }\n\n .label {\n @include ellipsis;\n }\n }\n\n &__actions {\n grid-area: actions;\n display: flex;\n }\n\n &__cancel-upload {\n transform: translateX(7px);\n }\n\n &__progress-container {\n grid-column: 1 / -1;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-xs);\n border: 2px dashed var(--color-border-neutral-default);\n border-radius: var(--border-radius-m);\n padding: var(--spacing-padding-xxs) var(--spacing-padding-l) var(--spacing-padding-m) var(--spacing-padding-l);\n }\n\n &__progress-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--spacing-gap-l);\n }\n\n &__uploading-text {\n color: var(--color-text-neutral-disabled);\n @include ellipsis;\n max-inline-size: calc(100% - #{$file-item-actions-inline-size});\n }\n\n &__progress-bar {\n progress {\n block-size: 8px;\n line-height: 0;\n border: none;\n border-radius: var(--border-radius-s);\n overflow: hidden;\n\n &::-webkit-progress-bar {\n background-color: transparent;\n }\n\n &::-webkit-progress-value {\n background-color: var(--color-accent-primary-default);\n }\n\n &::-moz-progress-bar {\n background-color: var(--color-accent-primary-default);\n }\n }\n }\n}\n","import {\n Component,\n h,\n Prop,\n State,\n Event,\n EventEmitter,\n Watch\n} from \"@stencil/core\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { ChEditCustomEvent } from \"@genexus/chameleon-controls-library\";\nimport { FileUploadState } from \"../types\";\n\nconst FILE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"file\",\n colorType: \"primary\"\n});\n\nconst EDIT_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"edit\",\n colorType: \"primary\"\n});\n\nconst DELETE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"delete\",\n colorType: \"primary\"\n});\n\nconst CANCEL_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"close\",\n colorType: \"primary\"\n});\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/icon\",\n \"components/edit\",\n \"utils/typography\",\n \"utils/spacing\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/elevation\"\n];\n\n@Component({\n tag: \"gx-ide-file-item\",\n styleUrl: \"file-item.scss\",\n shadow: true\n})\nexport class FileItem {\n /** File state containing upload information */\n @Prop() readonly file!: FileUploadState;\n\n /** Whether the file name can be edited */\n @Prop() readonly editable: boolean = false;\n\n /** Component locale strings */\n @Prop() readonly componentLocale?: any;\n\n /** Callback when a file is deleted */\n @Prop() readonly fileDeletedCallback?: (fileId: string) => Promise<void>;\n\n /** Callback when a file deletion error occurs */\n @Prop() readonly fileDeletionErrorCallback?: (data: {\n fileName: string;\n error: string;\n }) => Promise<void>;\n\n /** Updates current name when file prop changes */\n @Watch(\"file\")\n handleFileChange(newFile: FileUploadState) {\n this.currentName = newFile.name;\n }\n\n @State() isEditing: boolean = false;\n @State() currentName: string;\n\n /** Emitted when the file name is changed */\n @Event() fileNameChange: EventEmitter<{ id: string; name: string }>;\n\n /** Emitted when the file is deleted */\n @Event() fileDelete: EventEmitter<string>;\n\n /** Emitted when the file upload is cancelled */\n @Event() fileCancel: EventEmitter<string>;\n\n componentWillLoad() {\n this.currentName = this.file.name;\n }\n\n #handleNameChange = (event: ChEditCustomEvent<string> | InputEvent) => {\n const newName = (event as CustomEvent<string>).detail;\n\n if (newName && newName !== this.currentName) {\n this.currentName = newName;\n this.fileNameChange.emit({\n id: this.file.id,\n name: newName\n });\n }\n };\n\n #handleBlur = () => {\n this.isEditing = false;\n };\n\n /** Handles file deletion */\n #handleDelete = () => {\n this.fileDelete.emit(this.file.id);\n };\n\n /** Handles upload cancellation */\n #handleCancelClick = (e: MouseEvent) => {\n e.preventDefault();\n this.fileCancel.emit(this.file.id);\n };\n\n /** Starts file name editing */\n #startEditing = () => {\n if (this.editable) {\n this.isEditing = true;\n }\n };\n\n render() {\n\n const displayItemActions = !this.file.pending;\n const displayProgressContainer = this.file.pending;\n const labelId = \"progress-label-\" + this.file.id;\n\n let liAriaLabel: string;\n if (this.file.pending) {\n liAriaLabel = this.componentLocale?.fileItem?.uploadingAriaLabel\n ?.replace(\"{fileName}\", this.currentName)\n ?.replace(\"{fileProgress}\", this.file.progress.toString()) || this.currentName;\n } else if (this.file.remoteId) {\n liAriaLabel = this.componentLocale?.fileItem?.uploadedSuccessfullyAriaLabel\n ?.replace(\"{fileName}\", this.currentName) || this.currentName;\n } else {\n liAriaLabel = this.currentName;\n }\n\n return (\n <li class={{\n \"file-item\": true,\n \"file-item--without-actions\": !displayItemActions,\n \"file-item--with-actions\": displayItemActions\n }}\n aria-label={liAriaLabel}\n >\n\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <div class=\"file-item__icon\">\n <ch-image disabled={!this.file.pending} src={FILE_ICON} class=\"icon-m\" />\n </div>\n\n <div class=\"file-item__name\">\n {this.isEditing ? (\n <ch-edit\n accessibleName={this.componentLocale?.fileItem?.editNamePlaceholderAriaLabel\n ?.replace(\"{fileName}\", this.currentName)}\n value={this.currentName}\n autoFocus={true}\n onInput={this.#handleNameChange}\n onBlur={this.#handleBlur}\n class=\"input\"\n id={labelId}\n />\n ) : (\n <span class=\"label\" id={labelId}>{this.currentName}</span>\n )}\n </div>\n\n {displayItemActions ? (\n <div class=\"file-item__actions\">\n {!this.file.pending && this.editable && (\n <button\n class=\"button-tertiary button-icon-only\"\n type=\"button\"\n onClick={this.#startEditing}\n >\n <ch-image src={EDIT_ICON} class=\"icon-m\" />\n </button>\n )}\n {!this.file.pending && (\n <button\n class=\"button-tertiary button-icon-only\"\n type=\"button\"\n onClick={this.#handleDelete}\n aria-label=\"Delete file\"\n >\n <ch-image src={DELETE_ICON} class=\"icon-m\" />\n </button>\n )}\n </div>\n ) : (\n null\n )}\n\n {displayProgressContainer && (\n <div class=\"file-item__progress-container\">\n <div class=\"file-item__progress-header\">\n <span class=\"file-item__uploading-text typography-body-italic-s\">\n Uploading {this.currentName}...\n </span>\n <button\n aria-label={this.componentLocale?.fileItem?.cancelUploadButtonAriaLabel\n ?.replace(\"{fileName}\", this.currentName) || \"Cancel upload\"}\n class=\"button-tertiary button-icon-only file-item__cancel-upload\"\n type=\"button\"\n onClick={this.#handleCancelClick}\n >\n <ch-image src={CANCEL_ICON} class=\"icon-m\" />\n </button>\n </div>\n <div class=\"file-item__progress-bar\">\n <progress\n class=\"elevation-1\"\n value={this.file.progress}\n max=\"100\"\n aria-labelledby={labelId}\n />\n </div>\n </div>\n )}\n </li>\n );\n }\n}\n"],"version":3}
@@ -6,7 +6,7 @@ import 'lit/directives/if-defined.js';
6
6
  import { L as Locale } from './locale.js';
7
7
  import { d as defineCustomElement$2 } from './file-item.js';
8
8
 
9
- const fileUploaderCss = ":host{display:grid;block-size:100%}.opacity-0{opacity:0}.gxi-hidden{display:none !important}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--font-style-regular);font-size:var(--font-size-body-m);font-family:var(--font-family-body);height:100%;display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.buttons-container{display:flex;gap:var(--spacing-gap-m)}.giu-static-pill-icon-and-text,.giu-static-pill{background-color:var(--elevation-background-color, var(--color-accent-surface-elevation-1));padding-inline:var(--spacing-padding-m);color:var(--color-text-neutral-default);font-size:var(--font-size-body-s);line-height:var(--line-height-relaxed);font-weight:var(--font-style-regular);border-radius:4px;min-block-size:25px;display:inline-grid;align-items:center;pointer-events:none;inline-size:max-content}.giu-static-pill-icon-and-text{display:inline-grid;grid-auto-flow:column;grid-auto-columns:max-content;gap:var(--spacing-gap-m)}.tab-full-width-buttons::part(tab-list block-start),.tab-full-width-buttons::part(tab-list block-end){grid-auto-columns:1fr}.tab-full-width-buttons::part(tab block-start){justify-content:center}.tree-view::part(item__header){--icon__system_warning_warning--disabled:var(\n --icon__system_warning_warning--enabled\n )}.tabular-grid{--focus-outline-width:1px}button.button-secondary{border-color:var(--color-border-neutral-default)}:host{display:block;inline-size:100%;block-size:100%;padding-inline-end:0 !important}.file-uploader-dialog{display:flex;flex-direction:column;block-size:100%;position:relative}.file-uploader-dialog .dialog-content{flex:1;min-block-size:0;overflow:auto}.file-uploader-dialog .dialog-footer{padding-inline-end:var(--spacing-body-inline-end)}.file-uploader{display:flex;flex-direction:column;inline-size:100%;block-size:100%}.file-uploader__list{display:flex;flex-direction:column;inline-size:100%;block-size:100%}.file-uploader__list-header{position:sticky;top:0;z-index:1;background-color:var(--color-accent-surface-elevation-1);display:flex;justify-content:space-between;align-items:center;padding-inline-end:var(--spacing-body-inline-end)}.file-uploader__list-content{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--spacing-gap-m);padding-inline-end:var(--spacing-body-inline-end);padding-block-end:16px}.file-uploader__list-title-container{display:flex;align-items:center;gap:var(--spacing-gap-xs);white-space:nowrap}.file-uploader__drop-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;inline-size:calc(100% - var(--spacing-body-inline-end));block-size:calc(100% - 12px);min-block-size:200px;margin-block-end:12px;background:var(--color-accent-surface-elevation-1);border:2px dashed var(--color-border-neutral-default);border-radius:8px;transition:border-color 0.3s ease, background-color 0.3s ease, opacity 0.3s ease}.file-uploader__drop-zone--dragging{border-color:var(--color-accent-primary-default);background:var(--color-accent-primary-hover);opacity:0.7}.file-uploader__drop-zone .text-container{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-gap-xs);margin-block-start:8px}.hidden-input{display:none}.label-primary-row{display:flex;align-items:center;gap:var(--spacing-gap-m)}";
9
+ const fileUploaderCss = ":host{display:grid;block-size:100%}.opacity-0{opacity:0}.gxi-hidden{display:none !important}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--font-style-regular);font-size:var(--font-size-body-m);font-family:var(--font-family-body);height:100%;display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.buttons-container{display:flex;gap:var(--spacing-gap-m)}.giu-static-pill-icon-and-text,.giu-static-pill{background-color:var(--elevation-background-color, var(--color-accent-surface-elevation-1));padding-inline:var(--spacing-padding-m);color:var(--color-text-neutral-default);font-size:var(--font-size-body-s);line-height:var(--line-height-relaxed);font-weight:var(--font-style-regular);border-radius:4px;min-block-size:25px;display:inline-grid;align-items:center;pointer-events:none;inline-size:max-content}.giu-static-pill-icon-and-text{display:inline-grid;grid-auto-flow:column;grid-auto-columns:max-content;gap:var(--spacing-gap-m)}.tab-full-width-buttons::part(tab-list block-start),.tab-full-width-buttons::part(tab-list block-end){grid-auto-columns:1fr}.tab-full-width-buttons::part(tab block-start){justify-content:center}.tree-view::part(item__header){--icon__system_warning_warning--disabled:var(\n --icon__system_warning_warning--enabled\n )}.tabular-grid{--focus-outline-width:1px}button.button-secondary{border-color:var(--color-border-neutral-default)}:host{display:grid;inline-size:100%;block-size:100%}.file-uploader-dialog{display:grid;grid-template-rows:1fr max-content;block-size:100%;min-block-size:0;position:relative}.file-uploader-dialog .dialog-content{min-block-size:0;overflow:auto}.file-uploader{display:flex;flex-direction:column;inline-size:100%;block-size:100%}.file-uploader__list{display:flex;flex-direction:column;inline-size:100%;block-size:100%}.file-uploader__list-header{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;align-items:center}.file-uploader__list-content{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--spacing-gap-l);list-style:none;margin:0;padding:0;padding-block-end:var(--spacing-padding-l)}.file-uploader__list-title-container{display:flex;align-items:center;gap:var(--spacing-gap-xs);white-space:nowrap}.file-uploader__drop-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;inline-size:100%;block-size:100%;border:2px dashed var(--color-border-neutral-default);border-radius:8px;transition:border-color 0.3s ease, background-color 0.3s ease, opacity 0.3s ease}.file-uploader__drop-zone--dragging{border-color:var(--color-accent-primary-default);background:var(--color-accent-primary-hover);opacity:0.7}.file-uploader__drop-zone .text-container{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-gap-xs);margin-block-start:8px}.label-primary-row{display:flex;align-items:center;gap:var(--spacing-gap-m)}";
10
10
 
11
11
  var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
12
  if (kind === "a" && !f)
@@ -26,7 +26,7 @@ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) ||
26
26
  };
27
27
  var _FileUploader_instances, _FileUploader__componentLocale, _FileUploader_fileInputEl, _FileUploader_dragCounter, _FileUploader_generateId, _FileUploader_isValidFile, _FileUploader_getValidFiles, _FileUploader_handleDragEnter, _FileUploader_handleDragLeave, _FileUploader_handleDragOver, _FileUploader_handleDrop, _FileUploader_handleFileSelect, _FileUploader_handleFileInput, _FileUploader_handleFiles, _FileUploader_handleNameChange, _FileUploader_handleFileCancel, _FileUploader_handleConfirm, _FileUploader_handleCancel;
28
28
  const PLUS_ICON = getIconPath({
29
- category: "gemini-tools",
29
+ category: "system",
30
30
  name: "add",
31
31
  colorType: "primary"
32
32
  });
@@ -317,19 +317,22 @@ const FileUploader = /*@__PURE__*/ proxyCustomElement(class FileUploader extends
317
317
  this.fileStates.clear();
318
318
  }
319
319
  render() {
320
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
321
- return (h(Host, { class: "widget" }, h("ch-theme", { model: CSS_BUNDLES }), h("input", { type: "file", class: "hidden-input", multiple: this.multiple, accept: (_a = this.types) === null || _a === void 0 ? void 0 : _a.map(type => (type.startsWith(".") ? type : `.${type}`)).join(","), onChange: __classPrivateFieldGet(this, _FileUploader_handleFileInput, "f"), ref: el => (__classPrivateFieldSet(this, _FileUploader_fileInputEl, el, "f")), "aria-hidden": "true", tabIndex: -1, style: { display: "none" } }), h("div", { class: "file-uploader-dialog" }, h("div", { class: "dialog-content" }, this.isDragging || this.fileStates.size === 0 ? (h("div", { class: {
322
- "file-uploader__drop-zone": true,
320
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
321
+ return (h(Host, { class: "widget" }, h("ch-theme", { model: CSS_BUNDLES }), h("input", { type: "file", hidden: true, multiple: this.multiple, accept: (_a = this.types) === null || _a === void 0 ? void 0 : _a.map(type => (type.startsWith(".") ? type : `.${type}`)).join(","), onChange: __classPrivateFieldGet(this, _FileUploader_handleFileInput, "f"), ref: el => (__classPrivateFieldSet(this, _FileUploader_fileInputEl, el, "f")), "aria-hidden": "true", tabIndex: -1 }), h("div", { class: "file-uploader-dialog" }, h("div", { class: "dialog-content" }, this.isDragging || this.fileStates.size === 0 ? (h("div", { class: {
322
+ "file-uploader__drop-zone elevation-1": true,
323
323
  "file-uploader__drop-zone--dragging": this.isDragging
324
324
  }, onDragEnter: __classPrivateFieldGet(this, _FileUploader_handleDragEnter, "f"), onDragLeave: __classPrivateFieldGet(this, _FileUploader_handleDragLeave, "f"), onDragOver: __classPrivateFieldGet(this, _FileUploader_handleDragOver, "f"), onDrop: __classPrivateFieldGet(this, _FileUploader_handleDrop, "f") }, h("button", { class: "button-tertiary button-icon-and-text", type: "button", onClick: __classPrivateFieldGet(this, _FileUploader_handleFileSelect, "f") }, h("ch-image", { class: "icon-m", src: PLUS_ICON }), h("label", { class: "label" }, this.multiple
325
325
  ? (_b = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _b === void 0 ? void 0 : _b.header.uploadButtonMultiple
326
326
  : (_c = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _c === void 0 ? void 0 : _c.header.uploadButtonSingle)), h("div", { class: "text-container" }, h("div", { class: "label-primary-row" }, h("label", { class: "label" }, this.label || ((_d = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _d === void 0 ? void 0 : _d.header.orText)), h("label", { class: "label" }, (_e = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _e === void 0 ? void 0 : _e.header.dragAndDrop)), h("span", { class: "caption" }, this.types && this.types.length > 0
327
327
  ? (_f = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _f === void 0 ? void 0 : _f.header.acceptedFiles.replace("{0}", this.types.join(", "))
328
- : (_g = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _g === void 0 ? void 0 : _g.header.allFilesAccepted)))) : (h("div", { class: "file-uploader__list" }, h("div", { class: "file-uploader__list-header spacing-body-block-end" }, h("div", { class: "file-uploader__list-title-container" }, h("label", { class: "label" }, this.label ||
328
+ : (_g = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _g === void 0 ? void 0 : _g.header.allFilesAccepted)))) : (h("div", { class: "file-uploader__list" }, h("div", { class: "file-uploader__list-header elevation-1 spacing-body-block-end spacing-inline-end" }, h("div", { class: "file-uploader__list-title-container" }, h("label", { class: "label" }, this.label ||
329
329
  ((_h = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _h === void 0 ? void 0 : _h.fileList.attachedFiles)), h("span", { class: "caption" }, (_j = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _j === void 0 ? void 0 : _j.fileList.filesCount.replace("{0}", this.fileStates.size.toString()))), this.multiple && (h("button", { class: "button-tertiary button-icon-and-text", type: "button", onClick: __classPrivateFieldGet(this, _FileUploader_handleFileSelect, "f") }, h("ch-image", { class: "icon-m", src: PLUS_ICON }), h("label", { class: "label" }, this.multiple
330
330
  ? (_k = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _k === void 0 ? void 0 : _k.header.uploadButtonMultiple
331
- : (_l = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _l === void 0 ? void 0 : _l.header.uploadButtonSingle)))), h("div", { class: "file-uploader__list-content scrollable" }, Array.from(this.fileStates.values()).map(file => (h("gx-ide-file-item", { key: file.id, file: file, editable: this.canEditName, onFileNameChange: __classPrivateFieldGet(this, _FileUploader_handleNameChange, "f"), onFileDelete: __classPrivateFieldGet(this, _FileUploader_handleFileCancel, "f"), onFileCancel: __classPrivateFieldGet(this, _FileUploader_handleFileCancel, "f") }))))))), h("div", { class: "dialog-footer dialog-footer dialog-footer-with-border" }, h("div", { class: "buttons-spacer" }, h("button", { class: "button-secondary", type: "button", onClick: __classPrivateFieldGet(this, _FileUploader_handleCancel, "f") }, (_m = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _m === void 0 ? void 0 : _m.buttons.cancel), h("button", { class: "button-primary", type: "button", onClick: __classPrivateFieldGet(this, _FileUploader_handleConfirm, "f"), disabled: this.fileStates.size === 0 ||
332
- Array.from(this.fileStates.values()).some(file => file.pending) }, (_o = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _o === void 0 ? void 0 : _o.buttons.confirm))))));
331
+ : (_l = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _l === void 0 ? void 0 : _l.header.uploadButtonSingle)))), h("ul", { class: "file-uploader__list-content scrollable spacing-inline-end spacing-block-end", "aria-live": "polite", "aria-label": (_m = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _m === void 0 ? void 0 : _m.fileList.selectedFilesAriaLabel }, Array.from(this.fileStates.values()).map(file => (h("gx-ide-file-item", { key: file.id, file: file, editable: this.canEditName, componentLocale: __classPrivateFieldGet(this, _FileUploader__componentLocale, "f"), onFileNameChange: __classPrivateFieldGet(this, _FileUploader_handleNameChange, "f"), onFileDelete: __classPrivateFieldGet(this, _FileUploader_handleFileCancel, "f"), onFileCancel: __classPrivateFieldGet(this, _FileUploader_handleFileCancel, "f") }))))))), h("div", { class: {
332
+ "dialog-footer": true,
333
+ "dialog-footer-with-border": this.fileStates.size > 0
334
+ } }, h("div", { class: "buttons-spacer" }, h("button", { class: "button-secondary", type: "button", onClick: __classPrivateFieldGet(this, _FileUploader_handleCancel, "f") }, (_o = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _o === void 0 ? void 0 : _o.buttons.cancel), h("button", { class: "button-primary", type: "button", onClick: __classPrivateFieldGet(this, _FileUploader_handleConfirm, "f"), disabled: this.fileStates.size === 0 ||
335
+ Array.from(this.fileStates.values()).some(file => file.pending) }, (_p = __classPrivateFieldGet(this, _FileUploader__componentLocale, "f")) === null || _p === void 0 ? void 0 : _p.buttons.confirm))))));
333
336
  }
334
337
  static get assetsDirs() { return ["gx-ide-assets/file-uploader"]; }
335
338
  get el() { return this; }