@genexus/genexus-ide-ui 1.0.12 → 1.0.14

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 (155) hide show
  1. package/dist/cjs/form-validation-df39cabb.js +56 -0
  2. package/dist/cjs/form-validation-df39cabb.js.map +1 -0
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-ai-message.cjs.entry.js +1 -1
  5. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +2 -2
  6. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js.map +1 -1
  7. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +3 -3
  8. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  9. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +1 -1
  10. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +11 -11
  11. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
  12. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
  13. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +274 -147
  14. package/dist/cjs/gx-ide-new-environment.cjs.entry.js.map +1 -1
  15. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +41 -87
  16. package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
  17. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
  18. package/dist/cjs/gx-ide-recent-news.cjs.entry.js +1 -1
  19. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +2 -2
  20. package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
  21. package/dist/cjs/gx-ide-start-page.cjs.entry.js +1 -1
  22. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +1 -1
  23. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -1
  24. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
  25. package/dist/cjs/{helpers-be14ea67.js → helpers-74cf5c16.js} +9 -35
  26. package/dist/cjs/helpers-74cf5c16.js.map +1 -0
  27. package/dist/cjs/loader.cjs.js +1 -1
  28. package/dist/collection/common/helpers.js +6 -18
  29. package/dist/collection/common/helpers.js.map +1 -1
  30. package/dist/collection/components/connect-gx-server/connect-gx-server.js +1 -1
  31. package/dist/collection/components/connect-gx-server/connect-gx-server.js.map +1 -1
  32. package/dist/collection/components/create-kb-from-server/create-kb-from-server.js +1 -1
  33. package/dist/collection/components/create-kb-from-server/create-kb-from-server.js.map +1 -1
  34. package/dist/collection/components/kb-manager-export/kb-manager-export.js +11 -11
  35. package/dist/collection/components/kb-manager-export/kb-manager-export.js.map +1 -1
  36. package/dist/collection/components/new-environment/gx-ide-assets/new-environment/langs/new-environment.lang.en.json +4 -1
  37. package/dist/collection/components/new-environment/gx-ide-assets/new-environment/langs/new-environment.lang.ja.json +5 -2
  38. package/dist/collection/components/new-environment/helpers.js +11 -0
  39. package/dist/collection/components/new-environment/helpers.js.map +1 -0
  40. package/dist/collection/components/new-environment/new-environment.css +37 -658
  41. package/dist/collection/components/new-environment/new-environment.js +316 -214
  42. package/dist/collection/components/new-environment/new-environment.js.map +1 -1
  43. package/dist/collection/components/new-kb/helpers.js +0 -5
  44. package/dist/collection/components/new-kb/helpers.js.map +1 -1
  45. package/dist/collection/components/new-kb/new-kb.css +34 -11
  46. package/dist/collection/components/new-kb/new-kb.js +33 -40
  47. package/dist/collection/components/new-kb/new-kb.js.map +1 -1
  48. package/dist/collection/components/share-kb/share-kb.js +1 -1
  49. package/dist/collection/components/share-kb/share-kb.js.map +1 -1
  50. package/dist/components/form-validation.js +53 -0
  51. package/dist/components/form-validation.js.map +1 -0
  52. package/dist/components/gx-ide-connect-gx-server.js +1 -1
  53. package/dist/components/gx-ide-connect-gx-server.js.map +1 -1
  54. package/dist/components/gx-ide-create-kb-from-server.js +1 -1
  55. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  56. package/dist/components/gx-ide-dashboard-home.js +1 -1
  57. package/dist/components/gx-ide-kb-manager-export.js +11 -11
  58. package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
  59. package/dist/components/gx-ide-new-environment.js +289 -164
  60. package/dist/components/gx-ide-new-environment.js.map +1 -1
  61. package/dist/components/gx-ide-new-kb.js +35 -81
  62. package/dist/components/gx-ide-new-kb.js.map +1 -1
  63. package/dist/components/gx-ide-object-selector.js +1 -1
  64. package/dist/components/gx-ide-share-kb.js +1 -1
  65. package/dist/components/gx-ide-share-kb.js.map +1 -1
  66. package/dist/components/gx-ide-start-page.js +1 -1
  67. package/dist/components/gx-ide-team-dev-commit.js +1 -1
  68. package/dist/components/gx-ide-team-dev-update.js +1 -1
  69. package/dist/components/gx-ide-ww-images.js +1 -1
  70. package/dist/components/helpers.js +7 -33
  71. package/dist/components/helpers.js.map +1 -1
  72. package/dist/esm/form-validation-8b3f527c.js +53 -0
  73. package/dist/esm/form-validation-8b3f527c.js.map +1 -0
  74. package/dist/esm/genexus-ide-ui.js +1 -1
  75. package/dist/esm/gx-ide-ai-message.entry.js +1 -1
  76. package/dist/esm/gx-ide-connect-gx-server.entry.js +1 -1
  77. package/dist/esm/gx-ide-connect-gx-server.entry.js.map +1 -1
  78. package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
  79. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  80. package/dist/esm/gx-ide-dashboard-home.entry.js +1 -1
  81. package/dist/esm/gx-ide-kb-manager-export.entry.js +11 -11
  82. package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
  83. package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
  84. package/dist/esm/gx-ide-new-environment.entry.js +276 -149
  85. package/dist/esm/gx-ide-new-environment.entry.js.map +1 -1
  86. package/dist/esm/gx-ide-new-kb.entry.js +35 -81
  87. package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
  88. package/dist/esm/gx-ide-object-selector.entry.js +1 -1
  89. package/dist/esm/gx-ide-recent-news.entry.js +1 -1
  90. package/dist/esm/gx-ide-share-kb.entry.js +1 -1
  91. package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
  92. package/dist/esm/gx-ide-start-page.entry.js +1 -1
  93. package/dist/esm/gx-ide-team-dev-commit.entry.js +1 -1
  94. package/dist/esm/gx-ide-team-dev-update.entry.js +1 -1
  95. package/dist/esm/gx-ide-ww-images.entry.js +1 -1
  96. package/dist/esm/{helpers-05c62775.js → helpers-97d0509d.js} +8 -34
  97. package/dist/esm/helpers-97d0509d.js.map +1 -0
  98. package/dist/esm/loader.js +1 -1
  99. package/dist/genexus-ide-ui/genexus-ide-ui.css +2 -0
  100. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  101. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  102. package/dist/genexus-ide-ui/gx-ide-assets/new-environment/langs/new-environment.lang.en.json +4 -1
  103. package/dist/genexus-ide-ui/gx-ide-assets/new-environment/langs/new-environment.lang.ja.json +5 -2
  104. package/dist/genexus-ide-ui/{p-176e8d55.entry.js → p-3663c45f.entry.js} +2 -2
  105. package/dist/genexus-ide-ui/{p-ca842e11.entry.js → p-3c7371a8.entry.js} +2 -2
  106. package/dist/genexus-ide-ui/p-41ea711a.js +56 -0
  107. package/dist/genexus-ide-ui/p-41ea711a.js.map +1 -0
  108. package/dist/genexus-ide-ui/{p-55304f04.entry.js → p-4a8910cd.entry.js} +2 -2
  109. package/dist/genexus-ide-ui/p-4b6e1cf2.js +158 -0
  110. package/dist/genexus-ide-ui/p-4b6e1cf2.js.map +1 -0
  111. package/dist/genexus-ide-ui/{p-5c5abefc.entry.js → p-4bf55012.entry.js} +2 -2
  112. package/dist/genexus-ide-ui/p-4bf55012.entry.js.map +1 -0
  113. package/dist/genexus-ide-ui/p-51d5cc3d.entry.js +436 -0
  114. package/dist/genexus-ide-ui/p-51d5cc3d.entry.js.map +1 -0
  115. package/dist/genexus-ide-ui/{p-03a88768.entry.js → p-58409610.entry.js} +2 -2
  116. package/dist/genexus-ide-ui/{p-0fced96c.entry.js → p-7f08a5f8.entry.js} +2 -2
  117. package/dist/genexus-ide-ui/p-7f08a5f8.entry.js.map +1 -0
  118. package/dist/genexus-ide-ui/{p-6d0037f1.entry.js → p-7f4d8db5.entry.js} +2 -2
  119. package/dist/genexus-ide-ui/{p-6fa9ea04.entry.js → p-7f7d93b8.entry.js} +2 -2
  120. package/dist/genexus-ide-ui/{p-a2dad270.entry.js → p-89a7d88f.entry.js} +2 -2
  121. package/dist/genexus-ide-ui/p-89a7d88f.entry.js.map +1 -0
  122. package/dist/genexus-ide-ui/{p-e629ab16.entry.js → p-8ad301c4.entry.js} +2 -2
  123. package/dist/genexus-ide-ui/{p-aa38604e.entry.js → p-8b9cf93c.entry.js} +62 -62
  124. package/dist/genexus-ide-ui/p-8b9cf93c.entry.js.map +1 -0
  125. package/dist/genexus-ide-ui/{p-a787b331.entry.js → p-90deeaa8.entry.js} +2 -2
  126. package/dist/genexus-ide-ui/{p-ab29274c.entry.js → p-92681e48.entry.js} +249 -295
  127. package/dist/genexus-ide-ui/p-92681e48.entry.js.map +1 -0
  128. package/dist/genexus-ide-ui/{p-de18e865.entry.js → p-f9a00f85.entry.js} +2 -2
  129. package/dist/types/common/helpers.d.ts +4 -3
  130. package/dist/types/components/new-environment/helpers.d.ts +4 -0
  131. package/dist/types/components/new-environment/new-environment.d.ts +33 -65
  132. package/dist/types/components/new-kb/helpers.d.ts +0 -2
  133. package/dist/types/components/new-kb/new-kb.d.ts +1 -2
  134. package/dist/types/components.d.ts +18 -45
  135. package/package.json +3 -3
  136. package/dist/cjs/helpers-be14ea67.js.map +0 -1
  137. package/dist/esm/helpers-05c62775.js.map +0 -1
  138. package/dist/genexus-ide-ui/p-0fced96c.entry.js.map +0 -1
  139. package/dist/genexus-ide-ui/p-14e6ef41.js +0 -171
  140. package/dist/genexus-ide-ui/p-14e6ef41.js.map +0 -1
  141. package/dist/genexus-ide-ui/p-5c5abefc.entry.js.map +0 -1
  142. package/dist/genexus-ide-ui/p-a2dad270.entry.js.map +0 -1
  143. package/dist/genexus-ide-ui/p-aa38604e.entry.js.map +0 -1
  144. package/dist/genexus-ide-ui/p-ab29274c.entry.js.map +0 -1
  145. package/dist/genexus-ide-ui/p-e146e456.entry.js +0 -342
  146. package/dist/genexus-ide-ui/p-e146e456.entry.js.map +0 -1
  147. /package/dist/genexus-ide-ui/{p-176e8d55.entry.js.map → p-3663c45f.entry.js.map} +0 -0
  148. /package/dist/genexus-ide-ui/{p-ca842e11.entry.js.map → p-3c7371a8.entry.js.map} +0 -0
  149. /package/dist/genexus-ide-ui/{p-55304f04.entry.js.map → p-4a8910cd.entry.js.map} +0 -0
  150. /package/dist/genexus-ide-ui/{p-03a88768.entry.js.map → p-58409610.entry.js.map} +0 -0
  151. /package/dist/genexus-ide-ui/{p-6d0037f1.entry.js.map → p-7f4d8db5.entry.js.map} +0 -0
  152. /package/dist/genexus-ide-ui/{p-6fa9ea04.entry.js.map → p-7f7d93b8.entry.js.map} +0 -0
  153. /package/dist/genexus-ide-ui/{p-e629ab16.entry.js.map → p-8ad301c4.entry.js.map} +0 -0
  154. /package/dist/genexus-ide-ui/{p-a787b331.entry.js.map → p-90deeaa8.entry.js.map} +0 -0
  155. /package/dist/genexus-ide-ui/{p-de18e865.entry.js.map → p-f9a00f85.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"file":"helpers-05c62775.js","mappings":"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","names":[],"sources":["src/common/helpers.tsx"],"sourcesContent":["/* STENCIL IMPORTS */\nimport { h } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\nimport { FormComponent } from \"@genexus/gemini/dist/types/common/interfaces\";\n/* CUSTOM IMPORTS */\nimport { GxOption } from \"./types\";\nimport { FormSubmitResult, ConnectionResultData } from \"../common/types\";\n\nconst daysOfWeek = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n];\n\n/**\n * @param element an HTMLElement\n * @returns an alphabetically ordered array of all the parts and exportparts the element contains.\n */\nexport const getElementSelectorParts = (element: HTMLElement) => {\n const queries: string[] = [];\n const elementParts = element.shadowRoot?.querySelectorAll(`[part]`);\n const elementExportParts =\n element.shadowRoot?.querySelectorAll(`[exportparts]`);\n\n elementParts?.forEach(el => {\n queries.push(\n `${element.tagName.toLowerCase()}::part(${el.getAttribute(\"part\")})`\n );\n });\n elementExportParts?.forEach(el => {\n queries.push(\n ...[\n ...el.getAttribute(\"exportparts\").matchAll(/(?:[\\w-]+:)?([\\w-]+)/g)\n ].map(item => `${element.tagName.toLowerCase()}::part(${item[1]})`)\n );\n });\n\n return queries.sort();\n};\n\n/**\n * @param selector a part selector\n * @returns A reference to the element the part belongs to.\n */\nexport const querySelectorPart = (selector: string) => {\n const querySelectorDeep = (\n element: HTMLElement,\n parts: string\n ): HTMLElement => {\n const shadow = element.shadowRoot;\n const partList = parts.split(\" \");\n\n const partElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[part~=\"${partName}\"]`).join(\"\")\n );\n if (partElement) {\n return partElement;\n }\n\n const exportPartElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[exportparts*=\"${partName}\"]`).join(\"\")\n );\n if (exportPartElement) {\n const exportPartList: string[] = [];\n const exportparts = exportPartElement.getAttribute(\"exportparts\");\n\n partList.forEach(partItem => {\n const exportPartName = exportparts.match(\n `(?:([\\\\w-]+):)?(${partItem})`\n )[1];\n if (exportPartName) {\n exportPartList.push(exportPartName);\n }\n });\n\n if (partList.length === exportPartList.length) {\n return querySelectorDeep(exportPartElement, exportPartList.join(\" \"));\n }\n }\n\n return null;\n };\n\n const selectorItems = selector.match(\"(.*)::part\\\\(([^)]+)\\\\)\");\n const entity = selectorItems[1];\n const partName = selectorItems[2];\n\n return querySelectorDeep(document.querySelector(entity), partName);\n};\n\nconst daysFromToday = (date: Date): number => {\n const today = new Date();\n // To calculate the time difference of two dates\n const timeDifference = today.getTime() - date.getTime();\n // To calculate the no. of days between two dates\n const daysDifference = timeDifference / (1000 * 3600 * 24);\n return Math.floor(daysDifference);\n};\n\n// - - - - - - - - - - - -\n// Date Functions\n// - - - - - - - - - - - -\n\nconst isToday = (date: Date): boolean => {\n const today = new Date();\n if (today.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nconst isYesterday = (date: Date): boolean => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n if (yesterday.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nexport const formatDate = (\n date: Date,\n type: FormatDateType = \"date-time\"\n): string => {\n let formattedDate;\n // validate date\n // undefined or null\n if (date === undefined || date === null) {\n return \"\";\n }\n // If the date object is invalid it will return 'NaN' on getTime() and NaN is never equal to itself\n const dateIsValid = date.getTime() === date.getTime();\n if (!dateIsValid) {\n return \"Invalid date\";\n }\n let locale = \"en-US\";\n const lang = document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf();\n if (lang === \"es\") {\n locale = \"es-ES\";\n }\n formattedDate = date.toLocaleDateString(locale);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n const time = `${hours}:${minutes}`;\n if (type === \"date-time\") {\n formattedDate += ` / ${date.toLocaleTimeString()}`;\n } else if (type === \"date-time-short\") {\n // No seconds\n if (locale === \"es-ES\") {\n formattedDate = `${year}-${month}-${day} ${time}`;\n } else {\n formattedDate = `${month}/${day}/${year} ${time}`;\n }\n } else if (\"pretty\") {\n const daysPassedFromToday = daysFromToday(date);\n const today = new Date();\n const currentYear = today.getFullYear();\n if (isToday(date)) {\n return `Today ${time}`;\n } else if (isYesterday(date)) {\n return `Yesterday ${time}`;\n } else if (daysPassedFromToday <= 7) {\n // If one week or less, just show the day of the week, and the time\n const day = daysOfWeek[date.getDay()];\n return `${day} ${time}`;\n } else if (currentYear === year) {\n // If current year, show day number and month name. Example: November 17th\n if (locale === \"es-ES\") {\n formattedDate = `${day} de ${date.toLocaleString(\"es-ES\", {\n month: \"long\"\n })} ${time}`;\n } else {\n formattedDate = `${date.toLocaleString(\"en-US\", {\n month: \"long\"\n })} ${day} ${time}`;\n }\n } else {\n // Display date as usual\n formattedDate = formatDate(date, \"date-time-short\");\n }\n }\n return formattedDate;\n};\n\nexport type FormatDateType =\n | \"date\"\n | \"date-time\"\n | \"date-time-short\"\n | \"pretty\";\n\n// - - - - - - - - - - - -\n// /End of Date Functions\n// - - - - - - - - - - - -\n\n/* Count the total tree nodes (by default it does not count the first level nodes)*/\nexport const countTreeItems = (\n treeModel: TreeViewItemModel[],\n children = false\n): number => {\n let totalNodes = 0;\n treeModel.forEach(node => {\n children && totalNodes++;\n if (node.items) {\n totalNodes += countTreeItems(node.items, true);\n }\n });\n return totalNodes;\n};\n\n/**\n * @description it evaluates the initial selected combo item\n * @param options an array of GxOption\n * @returns the initial combo value, which in this case is the id\n */\nexport const setInitialComboValue = (options: GxOption[]): string => {\n const selected = options.find(option => option.selected);\n if (selected) {\n return selected.value || selected.id;\n } else {\n return options[0].value || options[0].id;\n }\n};\n\nexport const escapeRegExp = (str: string) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n};\n\n/**\n * @description this function highlights the character(s) that match(es) the filter value.\n * hiChar comes from (hi)light (Char)acters\n * @param text the string to find the filter value on\n * @param filterValue the filter value\n * @returns a span element\n */\nexport const hiChar = function (text: string, filterValue: string) {\n // console.log(text, filterValue);\n if (text && filterValue) {\n const escapedFilterValue = escapeRegExp(filterValue);\n const re = new RegExp(escapedFilterValue, \"gi\");\n return (\n <span\n innerHTML={text.replace(re, '<span class=\"hiChar\">$&</span>')}\n ></span>\n );\n } else {\n return text;\n }\n};\n\nexport const closeOnOutsideClickHandler = (\n eventInfo: PointerEvent,\n ref: HTMLElement\n): true | void => {\n if (!eventInfo.composedPath().includes(ref)) {\n return true;\n }\n};\n\nexport const formSubmitValidation = (\n result: FormSubmitResult | ConnectionResultData,\n ref: any\n) => {\n result.fieldErrors?.forEach(element => {\n const key = element.key;\n const message = element.message;\n const hasError = element.hasError;\n\n const reference: FormComponent = ref[`${key}El`];\n if (reference && hasError && message.trim()) {\n reference.validationStatus = \"error\";\n reference.validationMessage = message;\n } else if (reference && !hasError) {\n reference.validationStatus = \"indeterminate\";\n reference.validationMessage = null;\n }\n });\n};\n"],"version":3}
@@ -1 +0,0 @@
1
- {"version":3,"names":["createKbFromServerCss","GxIdeCreateKbFromServer","this","renderedFirstTime","shortcutsSrc","getAssetPath","kbIdSelected","authenticationTypes","setAuthenticationTypes","id","value","label","_componentLocale","genexusAccount","local","addEventListeners","serverUrlsEl","addEventListener","reset","searchKBEl","e","kbNameEl","kbSearchText","detail","listBoxEl","ev","selectedItems","items","selectedItem","length","kbSelected","kbs","find","kb","name","createKbHandler","createKBCallback","createKBCallbackPromise","then","formSubmitResult","formSubmitValidation","connectCallbackHandler","connectCallback","connectCallbackPromise","serverUrl","authenticationType","authenticationTypeEl","user","_a","userNameEl","password","_b","passwordEl","connectionResultData","formResult","success","selectionKbDisabled","watchPropHandler","newKbs","kbName","componentWillLoad","Locale","getComponentStrings","el","componentDidLoad","focus","componentDidRender","componentDidRenderFirstTime","emit","componentName","render","h","Host","class","containerTitle","displayTitle","labelPosition","disableFilter","enableCustomServer","ref","part","serverUrls","renderFormItems","map","sUrl","onValueChanged","evaluateAuthenticationType","userName","type","onClick","buttons","connect","disabled","placeholder","searchKbs","singleSelection","filter","toLowerCase","includes","key","localKb","create","src"],"sources":["src/components/create-kb-from-server/create-kb-from-server.scss?tag=gx-ide-create-kb-from-server&encapsulation=shadow","src/components/create-kb-from-server/create-kb-from-server.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n border: 1px solid var(--gxg-border-color--regular);\n background-color: var(--mer-color__surface);\n}\n:host(.gxi-create-kb-from-server--shadow) {\n}\n\n.grid-data {\n grid-template-columns: repeat(2, 1fr);\n}\n.grid-data-account {\n grid-template-columns: auto 1fr;\n > :nth-child(1) {\n grid-area: 1 / 1 / 2 / 3;\n }\n > :nth-child(6) {\n grid-area: 4 / 2 / 5 / 3;\n }\n}\n.grid-data-kbs {\n display: flex;\n flex-direction: column;\n gap: var(--gx-ide-grid-row-gap);\n .search-kbs {\n width: 100%;\n display: flex;\n }\n .box-kbs {\n height: 150px;\n }\n}\n.grid-data-kbs-footer {\n display: flex;\n}\n.flex {\n display: flex;\n > :nth-child(2) {\n flex: 1;\n }\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element,\n State,\n getAssetPath,\n Watch\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { SelectionChangedEvent } from \"@genexus/gemini/dist/types/components/list-box/list-box\";\n/* CUSTOM IMPORTS */\nimport { GxOption } from \"../../common/types\";\nimport { Locale } from \"../../common/locale\";\nimport { renderFormItems } from \"../../common/common\";\nimport {\n FormSubmitResult,\n GxServerAuthenticationType\n} from \"../../common/types\";\nimport { formSubmitValidation } from \"../../common/helpers\";\n\n@Component({\n tag: \"gx-ide-create-kb-from-server\",\n styleUrl: \"create-kb-from-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/create-kb-from-server\"]\n})\nexport class GxIdeCreateKbFromServer {\n [key: string]: any;\n\n /*\nINDEX:\n1.OWN PROPERTIES\n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.METHODS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n private shortcutsSrc = getAssetPath(\n `./gx-ide-assets/create-kb-from-server/shortcuts.json`\n );\n\n /* References needed to collect data with \"Connect\" and \"Create\" buttons submit*/\n private authenticationTypeEl!: HTMLGxgComboBoxElement;\n private serverUrlsEl!: HTMLGxgComboBoxElement;\n private kbNameEl!: HTMLGxgFormTextElement;\n private passwordEl!: HTMLGxgFormTextElement;\n private userNameEl!: HTMLGxgFormTextElement;\n private searchKBEl!: HTMLGxgFormTextElement;\n private listBoxEl!: HTMLElement;\n private kbIdSelected: string = null;\n private authenticationTypes: GxOption[] = [];\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeCreateKbFromServerElement;\n\n // 3.STATE() VARIABLES //\n\n /**\n * Disabled or not the part for select and create the KB\n */\n @State() selectionKbDisabled = true;\n\n /**\n * KBs that return from connect to the server\n */\n\n @State() kbs: KBData[] = [];\n @Watch(\"kbs\")\n watchPropHandler(newKbs: KBData[]) {\n /* When the list of servers are updated, the first server is selected by default */\n this.kbIdSelected = newKbs[0].id;\n this.kbName = newKbs[0].name;\n }\n\n /**\n * KBs search text\n */\n @State() kbSearchText = \"\";\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Callback that will be invoked when the user connect to the kb server (‘Connect’ button)\n */\n @Prop() readonly connectCallback: (\n data: GXServerConnectionData\n ) => Promise<ConnectionResultData>;\n\n /**\n * Callback that will be invoked when the user confirms KB creation (‘Create’ button)\n */\n @Prop() readonly createKBCallback: (\n data: CreateKBData\n ) => Promise<FormSubmitResult>;\n\n /**\n * If is true then the user can specify a server url that don't be in the combo box of server urls.\n */\n @Prop() readonly enableCustomServer: boolean = true;\n\n /**\n * The knowledge base default suggested name\n */\n // eslint-disable-next-line @stencil-community/strict-mutable\n @Prop({ mutable: true }) kbName: string;\n\n /**\n * Password for the database connection.\n */\n @Prop() readonly password: string;\n\n /**\n * Array of URLs of cataloged servers to be displayed in the combo\n */\n @Prop() readonly serverUrls!: string[];\n\n /**\n * Username for the database connection.\n */\n @Prop() readonly userName: string;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * This event is emitted once just after the component is fully loaded and the first render() occurs\n */\n @Event() componentDidRenderFirstTime: EventEmitter<boolean>;\n\n // 6.METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n this.setAuthenticationTypes();\n }\n\n componentDidLoad() {\n (this.serverUrlsEl as HTMLElement).focus();\n this.addEventListeners();\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n private setAuthenticationTypes = () => {\n this.authenticationTypes = [\n {\n id: \"genexus\",\n value: \"genexus\",\n label: this._componentLocale.authenticationTypes.genexusAccount\n },\n {\n id: \"local\",\n value: \"local\",\n label: this._componentLocale.authenticationTypes.local\n }\n ];\n };\n\n private addEventListeners = () => {\n this.serverUrlsEl.addEventListener(\"valueChanged\", () => {\n this.reset();\n });\n\n this.searchKBEl.addEventListener(\n \"valueChanged\",\n (e: CustomEvent<string>) => {\n this.kbNameEl.value = \"\";\n this.kbIdSelected = null;\n this.kbSearchText = e.detail;\n }\n );\n\n this.listBoxEl.addEventListener(\n \"selectionChanged\",\n (ev: CustomEvent<SelectionChangedEvent>): void => {\n const selectedItems = ev.detail.items;\n let selectedItem;\n if (selectedItems.length > 0) {\n selectedItem = ev.detail.items[0];\n }\n if (selectedItem) {\n this.kbIdSelected = selectedItem.value;\n const kbSelected = this.kbs.find(kb => kb.id === this.kbIdSelected);\n if (kbSelected) {\n this.kbNameEl.value = kbSelected.name;\n }\n }\n }\n );\n };\n\n private reset() {\n this.kbs = [];\n this.kbIdSelected = null;\n this.selectionKbDisabled = true;\n this.searchKBEl.value = \"\";\n this.kbSearchText = \"\";\n }\n\n private createKbHandler = (): void => {\n if (this.createKBCallback) {\n const createKBCallbackPromise = this.createKBCallback({\n id: this.kbIdSelected,\n name: this.kbNameEl.value\n });\n createKBCallbackPromise.then((formSubmitResult: FormSubmitResult) => {\n formSubmitValidation(formSubmitResult, this);\n });\n }\n };\n\n private connectCallbackHandler = (): void => {\n if (this.connectCallback) {\n const connectCallbackPromise = this.connectCallback({\n serverUrl: this.serverUrlsEl.value,\n authenticationType: this.authenticationTypeEl.value,\n user: this.userNameEl?.value,\n password: this.passwordEl?.value\n });\n connectCallbackPromise.then(\n (connectionResultData: ConnectionResultData) => {\n formSubmitValidation(connectionResultData.formResult, this);\n if (\n connectionResultData.formResult.success &&\n connectionResultData.kbs\n ) {\n this.kbs = connectionResultData.kbs;\n this.selectionKbDisabled = false;\n }\n }\n );\n }\n };\n\n // 10.RENDER() FUNCTION //\n\n // 11.RENDER() FUNCTION //\n\n render(): void {\n return (\n <Host class=\"gx-ide-component\">\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n >\n <div class=\"flex\">\n {/* #kb name */}\n <gxg-label labelPosition=\"start\" class=\"kb-label\">\n {this._componentLocale.label.serverUrl}\n </gxg-label>\n <gxg-combo-box\n disableFilter={!this.enableCustomServer}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.serverUrlsEl = el as HTMLGxgComboBoxElement)\n }\n class=\"server-urls-combo-box\"\n part=\"server-urls\"\n >\n {this.serverUrls\n ? renderFormItems(\n \"gxg-combo-box-item\",\n this.serverUrls.map(sUrl => ({\n id: sUrl,\n label: sUrl,\n value: sUrl\n })),\n \"server-urls\"\n )\n : null}\n </gxg-combo-box>\n </div>\n <div class=\"grid grid-data\">\n <div>\n <div class=\"grid grid-data-account\">\n {/* #authentication type */}\n <gxg-combo-box\n tool-tip\n disableFilter\n value={this.authenticationTypes[0].id}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.authenticationTypeEl = el as HTMLGxgComboBoxElement)\n }\n class=\"authentication-type\"\n part=\"authentication-type\"\n onValueChanged={this.evaluateAuthenticationType}\n >\n {renderFormItems(\n \"gxg-combo-box-item\",\n this.authenticationTypes,\n \"authentication-type\"\n )}\n </gxg-combo-box>\n\n {/* #user name */}\n <gxg-label labelPosition=\"start\" class=\"kb-label\">\n {`${this._componentLocale.label.userName}:`}\n </gxg-label>\n <gxg-form-text\n ref={(el: HTMLGxgFormTextElement) =>\n (this.userNameEl = el as HTMLGxgFormTextElement)\n }\n tool-tip\n value={this.userName}\n class=\"user-name\"\n part=\"user-name\"\n ></gxg-form-text>\n\n {/* #password */}\n <gxg-label labelPosition=\"start\" class=\"kb-label\">\n {`${this._componentLocale.label.password}:`}\n </gxg-label>\n <gxg-form-text\n tool-tip\n password\n ref={(el: HTMLGxgFormTextElement) =>\n (this.passwordEl = el as HTMLGxgFormTextElement)\n }\n value={this.password}\n class=\"password\"\n part=\"password\"\n ></gxg-form-text>\n\n {/* #connect */}\n <div>\n <gxg-button\n id=\"button-connect\"\n type=\"primary-text-only\"\n onClick={this.connectCallbackHandler}\n part=\"button-connect\"\n >\n {this._componentLocale.buttons.connect}\n </gxg-button>\n </div>\n </div>\n </div>\n\n <div class=\"grid\">\n <div class=\"grid-data-kbs\">\n <div class=\"search-kbs\">\n <gxg-form-text\n ref={(el: HTMLGxgFormTextElement) =>\n (this.searchKBEl = el as HTMLGxgFormTextElement)\n }\n class=\"search-kb-input\"\n part=\"search-kb\"\n disabled={this.selectionKbDisabled}\n placeholder={this._componentLocale.label.searchKbs}\n ></gxg-form-text>\n </div>\n <div class=\"box-kbs\">\n <gxg-list-box\n singleSelection\n disabled={this.selectionKbDisabled}\n ref={(el: HTMLElement) => (this.listBoxEl = el)}\n part=\"kbs\"\n >\n {this.kbs\n .filter(kb =>\n kb.name\n .toLowerCase()\n .includes(this.kbSearchText.toLowerCase())\n )\n .map(kb => (\n <gxg-list-box-item value={kb.id} key={kb.id}>\n {kb.name}\n </gxg-list-box-item>\n ))}\n </gxg-list-box>\n </div>\n </div>\n <div class=\"grid grid-data-kbs-footer\">\n {/* #kbName */}\n <gxg-form-text\n ref={(el: HTMLGxgFormTextElement) =>\n (this.kbNameEl = el as HTMLGxgFormTextElement)\n }\n label={this._componentLocale.localKb}\n value={this.kbName}\n class=\"kb-name\"\n part=\"kb-name\"\n disabled={this.selectionKbDisabled}\n ></gxg-form-text>\n\n {/* #create button */}\n <div>\n <gxg-button\n id=\"button-create\"\n type=\"primary-text-only\"\n onClick={this.createKbHandler}\n part=\"button-create\"\n disabled={this.selectionKbDisabled}\n >\n {this._componentLocale.buttons.create}\n </gxg-button>\n </div>\n </div>\n </div>\n </div>\n </gx-ide-container>\n </div>\n <gxg-shortcuts src={this.shortcutsSrc}></gxg-shortcuts>\n </Host>\n );\n }\n}\n\nexport interface GXServerConnectionData {\n serverUrl: string;\n authenticationType: GxServerAuthenticationType;\n user: string;\n password: string;\n}\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n kbs: KBData[];\n};\nexport interface KBData {\n id: string;\n name: string;\n}\nexport interface CreateKBData {\n id: string;\n name: string;\n}\n"],"mappings":"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"}
@@ -1,171 +0,0 @@
1
- import { h as e } from "./p-aaed592c.js";
2
-
3
- /* STENCIL IMPORTS */ const t = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
4
-
5
- const daysFromToday = e => {
6
- const t = new Date;
7
- // To calculate the time difference of two dates
8
- const n = t.getTime() - e.getTime();
9
- // To calculate the no. of days between two dates
10
- const s = n / (1e3 * 3600 * 24);
11
- return Math.floor(s);
12
- };
13
-
14
- // - - - - - - - - - - - -
15
- // Date Functions
16
- // - - - - - - - - - - - -
17
- const isToday = e => {
18
- const t = new Date;
19
- if (t.toDateString() === e.toDateString()) {
20
- return true;
21
- }
22
- return false;
23
- };
24
-
25
- const isYesterday = e => {
26
- const t = new Date;
27
- t.setDate(t.getDate() - 1);
28
- if (t.toDateString() === e.toDateString()) {
29
- return true;
30
- }
31
- return false;
32
- };
33
-
34
- const formatDate = (e, n = "date-time") => {
35
- var s;
36
- let r;
37
- // validate date
38
- // undefined or null
39
- if (e === undefined || e === null) {
40
- return "";
41
- }
42
- // If the date object is invalid it will return 'NaN' on getTime() and NaN is never equal to itself
43
- const o = e.getTime() === e.getTime();
44
- if (!o) {
45
- return "Invalid date";
46
- }
47
- let a = "en-US";
48
- const i = (s = document.getElementsByTagName("html")[0].getAttribute("lang")) === null || s === void 0 ? void 0 : s.valueOf();
49
- if (i === "es") {
50
- a = "es-ES";
51
- }
52
- r = e.toLocaleDateString(a);
53
- const c = e.getFullYear();
54
- const l = String(e.getMonth() + 1).padStart(2, "0");
55
- const u = String(e.getDate()).padStart(2, "0");
56
- const d = String(e.getHours()).padStart(2, "0");
57
- const f = String(e.getMinutes()).padStart(2, "0");
58
- const $ = `${d}:${f}`;
59
- if (n === "date-time") {
60
- r += ` / ${e.toLocaleTimeString()}`;
61
- } else if (n === "date-time-short") {
62
- // No seconds
63
- if (a === "es-ES") {
64
- r = `${c}-${l}-${u} ${$}`;
65
- } else {
66
- r = `${l}/${u}/${c} ${$}`;
67
- }
68
- } else {
69
- const n = daysFromToday(e);
70
- const s = new Date;
71
- const o = s.getFullYear();
72
- if (isToday(e)) {
73
- return `Today ${$}`;
74
- } else if (isYesterday(e)) {
75
- return `Yesterday ${$}`;
76
- } else if (n <= 7) {
77
- // If one week or less, just show the day of the week, and the time
78
- const n = t[e.getDay()];
79
- return `${n} ${$}`;
80
- } else if (o === c) {
81
- // If current year, show day number and month name. Example: November 17th
82
- if (a === "es-ES") {
83
- r = `${u} de ${e.toLocaleString("es-ES", {
84
- month: "long"
85
- })} ${$}`;
86
- } else {
87
- r = `${e.toLocaleString("en-US", {
88
- month: "long"
89
- })} ${u} ${$}`;
90
- }
91
- } else {
92
- // Display date as usual
93
- r = formatDate(e, "date-time-short");
94
- }
95
- }
96
- return r;
97
- };
98
-
99
- // - - - - - - - - - - - -
100
- // /End of Date Functions
101
- // - - - - - - - - - - - -
102
- /* Count the total tree nodes (by default it does not count the first level nodes)*/ const countTreeItems = (e, t = false) => {
103
- let n = 0;
104
- e.forEach((e => {
105
- t && n++;
106
- if (e.items) {
107
- n += countTreeItems(e.items, true);
108
- }
109
- }));
110
- return n;
111
- };
112
-
113
- /**
114
- * @description it evaluates the initial selected combo item
115
- * @param options an array of GxOption
116
- * @returns the initial combo value, which in this case is the id
117
- */ const setInitialComboValue = e => {
118
- const t = e.find((e => e.selected));
119
- if (t) {
120
- return t.value || t.id;
121
- } else {
122
- return e[0].value || e[0].id;
123
- }
124
- };
125
-
126
- const escapeRegExp = e => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
127
-
128
- /**
129
- * @description this function highlights the character(s) that match(es) the filter value.
130
- * hiChar comes from (hi)light (Char)acters
131
- * @param text the string to find the filter value on
132
- * @param filterValue the filter value
133
- * @returns a span element
134
- */ const hiChar = function(t, n) {
135
- // console.log(text, filterValue);
136
- if (t && n) {
137
- const s = escapeRegExp(n);
138
- const r = new RegExp(s, "gi");
139
- return e("span", {
140
- innerHTML: t.replace(r, '<span class="hiChar">$&</span>')
141
- });
142
- } else {
143
- return t;
144
- }
145
- };
146
-
147
- const closeOnOutsideClickHandler = (e, t) => {
148
- if (!e.composedPath().includes(t)) {
149
- return true;
150
- }
151
- };
152
-
153
- const formSubmitValidation = (e, t) => {
154
- var n;
155
- (n = e.fieldErrors) === null || n === void 0 ? void 0 : n.forEach((e => {
156
- const n = e.key;
157
- const s = e.message;
158
- const r = e.hasError;
159
- const o = t[`${n}El`];
160
- if (o && r && s.trim()) {
161
- o.validationStatus = "error";
162
- o.validationMessage = s;
163
- } else if (o && !r) {
164
- o.validationStatus = "indeterminate";
165
- o.validationMessage = null;
166
- }
167
- }));
168
- };
169
-
170
- export { formatDate as a, closeOnOutsideClickHandler as b, countTreeItems as c, formSubmitValidation as f, hiChar as h, setInitialComboValue as s };
171
- //# sourceMappingURL=p-14e6ef41.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["daysOfWeek","daysFromToday","date","today","Date","timeDifference","getTime","daysDifference","Math","floor","isToday","toDateString","isYesterday","yesterday","setDate","getDate","formatDate","type","formattedDate","undefined","dateIsValid","locale","lang","_a","document","getElementsByTagName","getAttribute","valueOf","toLocaleDateString","year","getFullYear","month","String","getMonth","padStart","day","hours","getHours","minutes","getMinutes","time","toLocaleTimeString","daysPassedFromToday","currentYear","getDay","toLocaleString","countTreeItems","treeModel","children","totalNodes","forEach","node","items","setInitialComboValue","options","selected","find","option","value","id","escapeRegExp","str","replace","hiChar","text","filterValue","escapedFilterValue","re","RegExp","h","innerHTML","closeOnOutsideClickHandler","eventInfo","ref","composedPath","includes","formSubmitValidation","result","fieldErrors","element","key","message","hasError","reference","trim","validationStatus","validationMessage"],"sources":["src/common/helpers.tsx"],"sourcesContent":["/* STENCIL IMPORTS */\nimport { h } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\nimport { FormComponent } from \"@genexus/gemini/dist/types/common/interfaces\";\n/* CUSTOM IMPORTS */\nimport { GxOption } from \"./types\";\nimport { FormSubmitResult, ConnectionResultData } from \"../common/types\";\n\nconst daysOfWeek = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n];\n\n/**\n * @param element an HTMLElement\n * @returns an alphabetically ordered array of all the parts and exportparts the element contains.\n */\nexport const getElementSelectorParts = (element: HTMLElement) => {\n const queries: string[] = [];\n const elementParts = element.shadowRoot?.querySelectorAll(`[part]`);\n const elementExportParts =\n element.shadowRoot?.querySelectorAll(`[exportparts]`);\n\n elementParts?.forEach(el => {\n queries.push(\n `${element.tagName.toLowerCase()}::part(${el.getAttribute(\"part\")})`\n );\n });\n elementExportParts?.forEach(el => {\n queries.push(\n ...[\n ...el.getAttribute(\"exportparts\").matchAll(/(?:[\\w-]+:)?([\\w-]+)/g)\n ].map(item => `${element.tagName.toLowerCase()}::part(${item[1]})`)\n );\n });\n\n return queries.sort();\n};\n\n/**\n * @param selector a part selector\n * @returns A reference to the element the part belongs to.\n */\nexport const querySelectorPart = (selector: string) => {\n const querySelectorDeep = (\n element: HTMLElement,\n parts: string\n ): HTMLElement => {\n const shadow = element.shadowRoot;\n const partList = parts.split(\" \");\n\n const partElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[part~=\"${partName}\"]`).join(\"\")\n );\n if (partElement) {\n return partElement;\n }\n\n const exportPartElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[exportparts*=\"${partName}\"]`).join(\"\")\n );\n if (exportPartElement) {\n const exportPartList: string[] = [];\n const exportparts = exportPartElement.getAttribute(\"exportparts\");\n\n partList.forEach(partItem => {\n const exportPartName = exportparts.match(\n `(?:([\\\\w-]+):)?(${partItem})`\n )[1];\n if (exportPartName) {\n exportPartList.push(exportPartName);\n }\n });\n\n if (partList.length === exportPartList.length) {\n return querySelectorDeep(exportPartElement, exportPartList.join(\" \"));\n }\n }\n\n return null;\n };\n\n const selectorItems = selector.match(\"(.*)::part\\\\(([^)]+)\\\\)\");\n const entity = selectorItems[1];\n const partName = selectorItems[2];\n\n return querySelectorDeep(document.querySelector(entity), partName);\n};\n\nconst daysFromToday = (date: Date): number => {\n const today = new Date();\n // To calculate the time difference of two dates\n const timeDifference = today.getTime() - date.getTime();\n // To calculate the no. of days between two dates\n const daysDifference = timeDifference / (1000 * 3600 * 24);\n return Math.floor(daysDifference);\n};\n\n// - - - - - - - - - - - -\n// Date Functions\n// - - - - - - - - - - - -\n\nconst isToday = (date: Date): boolean => {\n const today = new Date();\n if (today.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nconst isYesterday = (date: Date): boolean => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n if (yesterday.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nexport const formatDate = (\n date: Date,\n type: FormatDateType = \"date-time\"\n): string => {\n let formattedDate;\n // validate date\n // undefined or null\n if (date === undefined || date === null) {\n return \"\";\n }\n // If the date object is invalid it will return 'NaN' on getTime() and NaN is never equal to itself\n const dateIsValid = date.getTime() === date.getTime();\n if (!dateIsValid) {\n return \"Invalid date\";\n }\n let locale = \"en-US\";\n const lang = document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf();\n if (lang === \"es\") {\n locale = \"es-ES\";\n }\n formattedDate = date.toLocaleDateString(locale);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n const time = `${hours}:${minutes}`;\n if (type === \"date-time\") {\n formattedDate += ` / ${date.toLocaleTimeString()}`;\n } else if (type === \"date-time-short\") {\n // No seconds\n if (locale === \"es-ES\") {\n formattedDate = `${year}-${month}-${day} ${time}`;\n } else {\n formattedDate = `${month}/${day}/${year} ${time}`;\n }\n } else if (\"pretty\") {\n const daysPassedFromToday = daysFromToday(date);\n const today = new Date();\n const currentYear = today.getFullYear();\n if (isToday(date)) {\n return `Today ${time}`;\n } else if (isYesterday(date)) {\n return `Yesterday ${time}`;\n } else if (daysPassedFromToday <= 7) {\n // If one week or less, just show the day of the week, and the time\n const day = daysOfWeek[date.getDay()];\n return `${day} ${time}`;\n } else if (currentYear === year) {\n // If current year, show day number and month name. Example: November 17th\n if (locale === \"es-ES\") {\n formattedDate = `${day} de ${date.toLocaleString(\"es-ES\", {\n month: \"long\"\n })} ${time}`;\n } else {\n formattedDate = `${date.toLocaleString(\"en-US\", {\n month: \"long\"\n })} ${day} ${time}`;\n }\n } else {\n // Display date as usual\n formattedDate = formatDate(date, \"date-time-short\");\n }\n }\n return formattedDate;\n};\n\nexport type FormatDateType =\n | \"date\"\n | \"date-time\"\n | \"date-time-short\"\n | \"pretty\";\n\n// - - - - - - - - - - - -\n// /End of Date Functions\n// - - - - - - - - - - - -\n\n/* Count the total tree nodes (by default it does not count the first level nodes)*/\nexport const countTreeItems = (\n treeModel: TreeViewItemModel[],\n children = false\n): number => {\n let totalNodes = 0;\n treeModel.forEach(node => {\n children && totalNodes++;\n if (node.items) {\n totalNodes += countTreeItems(node.items, true);\n }\n });\n return totalNodes;\n};\n\n/**\n * @description it evaluates the initial selected combo item\n * @param options an array of GxOption\n * @returns the initial combo value, which in this case is the id\n */\nexport const setInitialComboValue = (options: GxOption[]): string => {\n const selected = options.find(option => option.selected);\n if (selected) {\n return selected.value || selected.id;\n } else {\n return options[0].value || options[0].id;\n }\n};\n\nexport const escapeRegExp = (str: string) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n};\n\n/**\n * @description this function highlights the character(s) that match(es) the filter value.\n * hiChar comes from (hi)light (Char)acters\n * @param text the string to find the filter value on\n * @param filterValue the filter value\n * @returns a span element\n */\nexport const hiChar = function (text: string, filterValue: string) {\n // console.log(text, filterValue);\n if (text && filterValue) {\n const escapedFilterValue = escapeRegExp(filterValue);\n const re = new RegExp(escapedFilterValue, \"gi\");\n return (\n <span\n innerHTML={text.replace(re, '<span class=\"hiChar\">$&</span>')}\n ></span>\n );\n } else {\n return text;\n }\n};\n\nexport const closeOnOutsideClickHandler = (\n eventInfo: PointerEvent,\n ref: HTMLElement\n): true | void => {\n if (!eventInfo.composedPath().includes(ref)) {\n return true;\n }\n};\n\nexport const formSubmitValidation = (\n result: FormSubmitResult | ConnectionResultData,\n ref: any\n) => {\n result.fieldErrors?.forEach(element => {\n const key = element.key;\n const message = element.message;\n const hasError = element.hasError;\n\n const reference: FormComponent = ref[`${key}El`];\n if (reference && hasError && message.trim()) {\n reference.validationStatus = \"error\";\n reference.validationMessage = message;\n } else if (reference && !hasError) {\n reference.validationStatus = \"indeterminate\";\n reference.validationMessage = null;\n }\n });\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["connectGxServerCss","GxIdeConnectGxServer","this","renderedFirstTime","renderServerUrls","_a","serverUrls","length","map","serverUrl","h","continueWithGxServerHandler","event","displayLoginControls","detail","value","evaluateDisplayLoginControls","enableUserLogged","connectHandler","connectCallback","serverURLEl","continueWithGeneXusAccount","continueWithGeneXusAccountEl","checked","user","userNameEl","password","passwordEl","then","formSubmitResult","console","log","formSubmitValidation","componentWillLoad","_componentLocale","Locale","getComponentStrings","el","componentDidRender","componentDidRenderFirstTime","emit","componentName","render","Host","class","containerTitle","displayTitle","slimmerFooter","config","gxIdeContainer","label","main","disableFilter","enableCustomServer","defaultConnectionData","ref","toolTip","tooltip","continueWithGxAccount","onChange","disabled","userName","labelPosition","_b","_c","slot","type","cancel","onClick","connect"],"sources":["src/components/connect-gx-server/connect-gx-server.scss?tag=gx-ide-connect-gx-server&encapsulation=shadow","src/components/connect-gx-server/connect-gx-server.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n}\n\n.user-details-container {\n display: flex;\n gap: var(--gx-ide-form-items-gap);\n}\n\n.wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--md);\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { config } from \"../../common/config\";\nimport { Locale } from \"../../common/locale\";\nimport { formSubmitValidation } from \"../../common/helpers\";\nimport { ConnectionResultData } from \"../../common/types\";\n\n@Component({\n tag: \"gx-ide-connect-gx-server\",\n styleUrl: \"connect-gx-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/connect-gx-server\"]\n})\nexport class GxIdeConnectGxServer {\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeConnectGxServerElement;\n\n private serverURLEl!: HTMLGxgComboBoxElement;\n private userNameEl!: HTMLGxgFormTextElement;\n private passwordEl!: HTMLGxgFormTextElement;\n private continueWithGeneXusAccountEl!: HTMLGxgFormCheckboxElement;\n\n // 3.STATE() VARIABLES //\n\n //\n @State() displayLoginControls: boolean = false;\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Array of cataloged server URLs\n */\n @Prop() readonly serverUrls: string[];\n\n /**\n * 'true' if the user should be allowed to manually enter a server URL in serverUrls.\n */\n @Prop() readonly enableCustomServer: boolean = false;\n\n /**\n * Initial user values for the case in which the user returns to the login modal after a successful authentication.\n */\n @Prop() readonly defaultConnectionData?: GXServerConnectionDefault;\n\n /**\n * If 'true', shows the enabled and checked 'Continue with GX Account' checkbox. If 'false', shows the checkbox unchecked and disabled, and displays the options to enter username and password directly. Even if 'true', allow the user to deselect the checkbox and enter username and password.\n */\n @Prop() readonly enableUserLogged: boolean = false;\n\n /**\n * If 'true', shows the enabled and checked 'Continue with GX Account' checkbox. If 'false', shows the checkbox unchecked and disabled, and displays the options to enter username and password directly. Even if 'true', allow the user to deselect the checkbox and enter username and password.\n */\n @Prop() readonly connectCallback: (\n data: GXServerConnectionData\n ) => Promise<ConnectionResultData>;\n\n /**\n * Callback that allows canceling the server connection process.\n */\n @Prop() readonly cancelCallback: () => Promise<void>;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n this.evaluateDisplayLoginControls();\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n private renderServerUrls = (): HTMLGxgComboBoxItemElement[] => {\n if (this.serverUrls?.length) {\n return this.serverUrls.map(serverUrl => {\n return <gxg-combo-box-item>{serverUrl}</gxg-combo-box-item>;\n });\n }\n return [];\n };\n\n private continueWithGxServerHandler = (\n event: CustomEvent<{ id: string; value: boolean; disabled?: boolean }>\n ) => {\n this.displayLoginControls = !event.detail.value;\n };\n\n private evaluateDisplayLoginControls = () => {\n if (this.enableUserLogged) {\n this.displayLoginControls = false;\n } else {\n this.displayLoginControls = true;\n }\n };\n\n private connectHandler = () => {\n if (this.connectCallback) {\n this.connectCallback({\n serverUrl: this.serverURLEl.value,\n continueWithGeneXusAccount: this.continueWithGeneXusAccountEl.checked,\n user: this.userNameEl.value,\n password: this.passwordEl.value\n }).then((formSubmitResult: ConnectionResultData) => {\n console.log(formSubmitResult);\n formSubmitValidation(formSubmitResult, this);\n });\n }\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host class=\"gx-ide-component\">\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n slimmerFooter={config.gxIdeContainer.slimmerFooter}\n >\n <div class=\"wrapper\">\n {/* server url */}\n <gxg-combo-box\n label={this._componentLocale.main.serverUrl}\n disableFilter={!this.enableCustomServer}\n value={this.defaultConnectionData?.serverUrl}\n ref={el => (this.serverURLEl = el as HTMLGxgComboBoxElement)}\n toolTip={config.tooltip}\n >\n {this.renderServerUrls()}\n </gxg-combo-box>\n\n {/* continue with GeneXus account */}\n <gxg-form-checkbox\n label={this._componentLocale.main.continueWithGxAccount}\n onChange={this.continueWithGxServerHandler}\n checked={this.enableUserLogged}\n disabled={!this.enableUserLogged}\n ref={el =>\n (this.continueWithGeneXusAccountEl =\n el as HTMLGxgFormCheckboxElement)\n }\n ></gxg-form-checkbox>\n\n {this.displayLoginControls ? (\n <div class=\"user-details-container\">\n {/* username */}\n <gxg-form-text\n label={this._componentLocale.main.userName}\n labelPosition=\"above\"\n disabled={!this.displayLoginControls}\n value={this.defaultConnectionData?.user}\n ref={el => (this.userNameEl = el as HTMLGxgFormTextElement)}\n toolTip={config.tooltip}\n ></gxg-form-text>\n {/* password */}\n <gxg-form-text\n label={this._componentLocale.main.password}\n labelPosition=\"above\"\n disabled={!this.displayLoginControls}\n value={this.defaultConnectionData?.password}\n ref={el => (this.passwordEl = el as HTMLGxgFormTextElement)}\n password\n toolTip={config.tooltip}\n ></gxg-form-text>\n </div>\n ) : null}\n </div>\n\n {/* cancel and connect buttons */}\n <gxg-button slot=\"footer-end\" type=\"outlined\">\n {this._componentLocale.main.cancel}\n </gxg-button>\n <gxg-button slot=\"footer-end\" onClick={this.connectHandler}>\n {this._componentLocale.main.connect}\n </gxg-button>\n </gx-ide-container>\n </div>\n </Host>\n );\n }\n}\n\nexport type GXServerConnectionDefault = {\n serverUrl: string;\n user: string;\n password: string;\n};\n\nexport type GXServerConnectionData = GXServerConnectionDefault & {\n continueWithGeneXusAccount: boolean;\n};\n"],"mappings":";;;;;;;;AAAA,MAAMA,IAAqB;;MCwBdC,IAAoB;;;;IAOvBC,KAAAC,oBAAoB;;;;QAoFpBD,KAAAE,mBAAmB;;MACzB,KAAIC,IAAAH,KAAKI,gBAAU,QAAAD,WAAA,aAAAA,EAAEE,QAAQ;QAC3B,OAAOL,KAAKI,WAAWE,KAAIC,KAClBC,EAAA,4BAAqBD;;MAGhC,OAAO;AAAE;IAGHP,KAAAS,8BACNC;MAEAV,KAAKW,wBAAwBD,EAAME,OAAOC;AAAK;IAGzCb,KAAAc,+BAA+B;MACrC,IAAId,KAAKe,kBAAkB;QACzBf,KAAKW,uBAAuB;aACvB;QACLX,KAAKW,uBAAuB;;;IAIxBX,KAAAgB,iBAAiB;MACvB,IAAIhB,KAAKiB,iBAAiB;QACxBjB,KAAKiB,gBAAgB;UACnBV,WAAWP,KAAKkB,YAAYL;UAC5BM,4BAA4BnB,KAAKoB,6BAA6BC;UAC9DC,MAAMtB,KAAKuB,WAAWV;UACtBW,UAAUxB,KAAKyB,WAAWZ;WACzBa,MAAMC;UACPC,QAAQC,IAAIF;UACZG,EAAqBH,GAAkB3B;AAAK;;;gCAtGT;wBAOT;;8BAUe;;4BAUF;;;;;EAuB7C,uBAAM+B;IACJ/B,KAAKgC,yBAAyBC,EAAOC,oBAAoBlC,KAAKmC;IAC9DnC,KAAKc;;EAGP,kBAAAsB;IACE,KAAKpC,KAAKC,mBAAmB;MAC3BD,KAAKqC,4BAA4BC,KAC/BtC,KAAKgC,iBAAiBO;MAExBvC,KAAKC,oBAAoB;;;;EAiD7B,MAAAuC;;IACE,OACEhC,EAACiC,GAAI;MAACC,OAAM;OACVlC,EAAA;MAAKkC,OAAM;OACTlC,EAAA;MACEmC,gBACE3C,KAAK4C,eAAe5C,KAAKgC,iBAAiBO,gBAAgB;MAE5DM,eAAeC,EAAOC,eAAeF;OAErCrC,EAAA;MAAKkC,OAAM;OAETlC,EAAA;MACEwC,OAAOhD,KAAKgC,iBAAiBiB,KAAK1C;MAClC2C,gBAAgBlD,KAAKmD;MACrBtC,QAAOV,IAAAH,KAAKoD,2BAAqB,QAAAjD,WAAA,aAAAA,EAAEI;MACnC8C,KAAKlB,KAAOnC,KAAKkB,cAAciB;MAC/BmB,SAASR,EAAOS;OAEfvD,KAAKE,qBAIRM,EAAA;MACEwC,OAAOhD,KAAKgC,iBAAiBiB,KAAKO;MAClCC,UAAUzD,KAAKS;MACfY,SAASrB,KAAKe;MACd2C,WAAW1D,KAAKe;MAChBsC,KAAKlB,KACFnC,KAAKoB,+BACJe;QAILnC,KAAKW,uBACJH,EAAA;MAAKkC,OAAM;OAETlC,EAAA;MACEwC,OAAOhD,KAAKgC,iBAAiBiB,KAAKU;MAClCC,eAAc;MACdF,WAAW1D,KAAKW;MAChBE,QAAOgD,IAAA7D,KAAKoD,2BAAqB,QAAAS,WAAA,aAAAA,EAAEvC;MACnC+B,KAAKlB,KAAOnC,KAAKuB,aAAaY;MAC9BmB,SAASR,EAAOS;QAGlB/C,EAAA;MACEwC,OAAOhD,KAAKgC,iBAAiBiB,KAAKzB;MAClCoC,eAAc;MACdF,WAAW1D,KAAKW;MAChBE,QAAOiD,IAAA9D,KAAKoD,2BAAqB,QAAAU,WAAA,aAAAA,EAAEtC;MACnC6B,KAAKlB,KAAOnC,KAAKyB,aAAaU;MAC9BX,UAAQ;MACR8B,SAASR,EAAOS;UAGlB,OAIN/C,EAAA;MAAYuD,MAAK;MAAaC,MAAK;OAChChE,KAAKgC,iBAAiBiB,KAAKgB,SAE9BzD,EAAA;MAAYuD,MAAK;MAAaG,SAASlE,KAAKgB;OACzChB,KAAKgC,iBAAiBiB,KAAKkB"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["shareKbCss","AUTHENTICATION_TYPE","GxIdeShareKb","this","renderedFirstTime","shortcutsSrc","getAssetPath","createKBCallbackHandler","async","kbData","name","kbNameEl","value","serverUrl","serverUrlEl","authenticationType","authTypeEl","user","userNameEl","password","passwordEl","createCallbackPromise","createKBCallback","then","formSubmitResult","formSubmitValidation","componentWillLoad","_componentLocale","Locale","getComponentStrings","el","componentDidLoad","focus","componentDidRender","componentDidRenderFirstTime","emit","componentName","render","h","Host","class","containerTitle","displayTitle","slimmerFooter","config","gxIdeContainer","labelPosition","noMargin","main","kbName","placeholder","toolTip","tooltip","ref","part","disableFilter","enableCustomServer","strict","serverUrls","renderFormItems","map","item","id","label","authentication","userName","slot","type","icon","onClick","footer","shareBtn","src"],"sources":["src/components/share-kb/share-kb.scss?tag=gx-ide-share-kb&encapsulation=shadow","src/components/share-kb/share-kb.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n}\n\n.main {\n display: grid;\n column-gap: var(--gx-ide-grid-column-gap);\n row-gap: var(--gx-ide-grid-row-gap);\n grid-template-columns: auto 1fr;\n grid-template-areas:\n \"kb-label kb-input \"\n \"server-label server-input\"\n \"auth-type-label auth-type-input\"\n \"user-name-label user-name-input\"\n \"password-label password-input\";\n\n .kb-name-label {\n grid-area: kb-label;\n }\n .kb-input {\n grid-area: kb-input;\n }\n .server-url-label {\n grid-area: server-label;\n }\n .server-url-input {\n grid-area: server-input;\n }\n .auth-type-label {\n grid-area: auth-type-label;\n }\n .auth-type-input {\n grid-area: auth-type-input;\n }\n .user-name-label {\n grid-area: user-name-label;\n }\n .user-name-input {\n grid-area: user-name-input;\n }\n .password-label {\n grid-area: password-label;\n }\n .password-input {\n grid-area: password-input;\n }\n}\n","// Define your constants\nconst AUTHENTICATION_TYPE = [\"GeneXus Account\", \"Local\"];\n\n/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n getAssetPath\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport {\n FormSubmitResult,\n GxServerAuthenticationType\n} from \"../../common/types\";\nimport { config } from \"../../common/config\";\nimport { formSubmitValidation } from \"../../common/helpers\";\nimport { renderFormItems } from \"../../common/common\";\n\n@Component({\n tag: \"gx-ide-share-kb\",\n styleUrl: \"share-kb.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/share-kb\"]\n})\nexport class GxIdeShareKb {\n /*\nINDEX:\n1.OWN PROPERTIES \n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE METHODS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n\n private _componentLocale: any;\n private renderedFirstTime = false;\n private shortcutsSrc = getAssetPath(\n `./gx-ide-assets/share-kb/shortcuts.json`\n );\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeShareKbElement;\n private kbNameEl: HTMLGxgFormTextElement;\n private serverUrlEl: HTMLGxgComboBoxElement;\n private authTypeEl: HTMLGxgComboBoxElement;\n private userNameEl: HTMLGxgFormTextElement;\n private passwordEl: HTMLGxgFormTextElement;\n\n // 3.STATE() VARIABLES //\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * The name of the kb\n */\n @Prop() readonly kbName!: string;\n\n /**\n * Urls array of cataloged servers to be shown on combo\n */\n @Prop() readonly serverUrls!: string[];\n\n /**\n * True if user can introduce server url manually\n */\n @Prop() readonly enableCustomServer: boolean = true;\n\n /**\n * Callback invoked when Share button is pressed\n */\n @Prop() readonly createKBCallback!: CreateKBCallback;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.kbNameEl.focus();\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n private createKBCallbackHandler = async () => {\n const kbData: ShareKBData = {\n name: this.kbNameEl.value,\n serverUrl: this.serverUrlEl.value,\n authenticationType: this.authTypeEl.value,\n user: this.userNameEl.value,\n password: this.passwordEl.value\n };\n const createCallbackPromise = this.createKBCallback(kbData);\n createCallbackPromise.then(formSubmitResult => {\n formSubmitValidation(formSubmitResult, this);\n });\n };\n\n // 9.LOCAL METHODS //\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host class=\"gx-ide-component\">\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n slimmerFooter={config.gxIdeContainer.slimmerFooter}\n >\n <main class=\"main\">\n {/* #kb name */}\n <gxg-label labelPosition=\"start\" class=\"kb-label\" noMargin>\n {this._componentLocale.main.kbName}\n </gxg-label>\n <gxg-form-text\n labelPosition=\"start\"\n placeholder=\"SalesInventory\"\n max-width=\"100%\"\n value={this.kbName}\n toolTip={config.tooltip}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.kbNameEl = el as HTMLGxgFormTextElement)\n }\n part=\"kb-name\"\n class=\"kb-input\"\n ></gxg-form-text>\n\n {/* #server url */}\n <gxg-label\n labelPosition=\"start\"\n class=\"server-url-label\"\n noMargin\n >\n {this._componentLocale.main.serverUrl}\n </gxg-label>\n <gxg-combo-box\n disableFilter={!this.enableCustomServer}\n labelPosition=\"start\"\n placeholder=\"https://myexampleserver.com\"\n strict\n toolTip={config.tooltip}\n value={this.serverUrls[0]}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.serverUrlEl = el as HTMLGxgComboBoxElement)\n }\n part=\"server-url\"\n class=\"server-url-input\"\n >\n {renderFormItems(\n \"gxg-combo-box-item\",\n this.serverUrls.map((item: string) => ({\n id: item,\n label: item\n })),\n \"server-url\"\n )}\n </gxg-combo-box>\n\n {/* #authentication type */}\n <gxg-label labelPosition=\"start\" class=\"auth-type-label\" noMargin>\n {this._componentLocale.main.authentication}\n </gxg-label>\n <gxg-combo-box\n labelPosition=\"start\"\n placeholder=\"https://myexampleserver.com\"\n max-width=\"100%\"\n value={AUTHENTICATION_TYPE[0]}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.authTypeEl = el as HTMLGxgComboBoxElement)\n }\n part=\"auth-type\"\n class=\"auth-type-input\"\n >\n {renderFormItems(\n \"gxg-combo-box-item\",\n AUTHENTICATION_TYPE.map((item: string) => ({\n id: item,\n label: item\n })),\n \"auth-type\"\n )}\n </gxg-combo-box>\n\n {/* #user name */}\n <gxg-label labelPosition=\"start\" class=\"user-name-label\" noMargin>\n {this._componentLocale.main.userName}\n </gxg-label>\n <gxg-form-text\n labelPosition=\"start\"\n placeholder=\"My User\"\n max-width=\"100%\"\n toolTip={config.tooltip}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.userNameEl = el as HTMLGxgFormTextElement)\n }\n part=\"user-name\"\n class=\"user-name-input\"\n ></gxg-form-text>\n\n {/* #password */}\n <gxg-label labelPosition=\"start\" class=\"password-label\" noMargin>\n {this._componentLocale.main.password}\n </gxg-label>\n <gxg-form-text\n labelPosition=\"start\"\n password\n toolTip={config.tooltip}\n max-width=\"100%\"\n ref={(el: HTMLGxgFormTextElement) =>\n (this.passwordEl = el as HTMLGxgFormTextElement)\n }\n part=\"password\"\n class=\"password-input\"\n ></gxg-form-text>\n </main>\n <gxg-button\n slot=\"footer-end\"\n type=\"primary-text-icon\"\n icon=\"gemini-tools/share\"\n onClick={this.createKBCallbackHandler}\n part=\"share-kb\"\n >\n {this._componentLocale.footer.shareBtn}\n </gxg-button>\n </gx-ide-container>\n </div>\n <gxg-shortcuts src={this.shortcutsSrc}></gxg-shortcuts>\n </Host>\n );\n }\n}\n\nexport type CreateKBCallback = (data: ShareKBData) => Promise<FormSubmitResult>;\nexport type ShareKBData = {\n name: string;\n serverUrl: string;\n authenticationType: GxServerAuthenticationType;\n user: string;\n password: string;\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["KB_PROPERTY","KB_OBJECT","getPropertyIcon","typeId","kbPropertiesTypes","find","propertyType","id","icon","convertObjectTypeToTreeItem","objectType","caption","name","startImgSrc","leaf","parts","expanded","items","convertObjectToTreeItem","object","objectTypes","get","metadata","convertPropertyToTreeItem","property","updateObjectsTreeModel","objects","objectTypesMap","objectsSet","actualTreeState","updatedTreeData","forEach","has","objectTreeItem","objectTypeTreeItemIndex","findIndex","treeItem","objectTypeTreeItem","push","add","convertKbPropertiesDataToTreeItemData","properties","propertyAlreadyExists","node","undefined","propertyTreeItem","unshift","clearKbPropertiesFromTree","filter","item","kbManagerExportCss","FILE_ICON","getIconPath","category","colorType","SETTINGS_ICON","GENERAL_REFERENCES_ICON","MENUS_NEW_OBJECT_ICON","TREE_VIEW_ICON","CHECKBOX_CHECKED_VALUE","CSS_BUNDLES","GxIdeKbManagerExport","_GxIdeKbManagerExport_addKbDescriptionEl","set","this","_GxIdeKbManagerExport_componentLocale","_GxIdeKbManagerExport_animateEmptyState","_GxIdeKbManagerExport_exportAllEl","_GxIdeKbManagerExport_fileNameEl","_GxIdeKbManagerExport_kBPropertiesData","_GxIdeKbManagerExport_objectTypesMap","Map","_GxIdeKbManagerExport_objectsSet","Set","_GxIdeKbManagerExport_addKBPropertiesCallbackHandler","async","e","addKbPropertiesIsChecked","detail","__classPrivateFieldSet","addKBPropertiesCallback","__classPrivateFieldGet","length","objectsTreeViewModel","_GxIdeKbManagerExport_addObjectsCallbackHandler","value","exportAllIsChecked","addedObjects","addObjectsCallback","_GxIdeKbManagerExport_updateObjects","call","_GxIdeKbManagerExport_addReferencesCallbackHandler","addReferencesCallback","checkedObjectsIds","_GxIdeKbManagerExport_cancelCallbackHandler","cancelled","cancelCallback","exportingIsInProcess","_GxIdeKbManagerExport_clearButtonHandler","clear","_GxIdeKbManagerExport_evaluateContentToDisplay","hasObjects","h","isAnimated","stateTitle","main","noObjectsToDisplay","key","class","onClick","beginByADdingSomeObjects","stateIconSrc","exportAllMessage","checkbox","checked","dragDisabled","dropDisabled","_GxIdeKbManagerExport_evaluateTreeViewFilters","filterType","model","showLines","toggleCheckboxes","sortItemsCallback","_GxIdeKbManagerExport_sortTreeItems","onCheckedItemsChange","_GxIdeKbManagerExport_objectsTreeCheckedItemsChangedHandler","_GxIdeKbManagerExport_evaluateObjects","_GxIdeKbManagerExport_exportAllChangedHandler","event","_GxIdeKbManagerExport_exportCallbackHandler","fileName","checkedKbPropertiesIds","checkedPropertiesIds","checkedObjectIds","exportCallback","then","allItemsWithCheckbox","values","atLeastOnePropertyItemIsChecked","atLeastOneObjectItemIsChecked","subModel","sort","a","b","localeCompare","_GxIdeKbManagerExport_renderFooter","referencesButtonEnabled","clearButtonEnabled","disabled","part","footer","clearButton","src","addReferencesButton","addButton","objectsDataArray","newObjectsTreeModel","objectsTreeViewModelChanged","newObjectsTreeViewModel","objectTypesChanged","newObjectTypesArray","_GxIdeKbManagerExport_instances","_GxIdeKbManagerExport_objectsTypesArrayToMap","componentWillLoad","Locale","getComponentStrings","el","render","exportButtonEnabled","cancelButtonEnabled","Host","htmlFor","header","exportFileName","autoFocus","ref","exportButton","cancelButton","optionsButton","title","optionsCallback","addKnowledgeBaseDescription","checkedValue","onInput","exportAll","loader","cancelLabel","loaderTitle","show","objectTypesArray"],"sources":["src/components/kb-manager-export/helpers.ts","src/components/kb-manager-export/kb-manager-export.scss?tag=gx-ide-kb-manager-export&encapsulation=shadow","src/components/kb-manager-export/kb-manager-export.tsx"],"sourcesContent":["// /* Tree View */\nimport {\n TreeViewItemModel,\n TreeViewModel\n} from \"@genexus/chameleon-controls-library\";\nimport { ObjectData, KBPropertyData, KBPropertyType } from \"./types\";\nimport { ObjectType } from \"../../common/types\";\nexport const KB_PROPERTY = \"property\";\nexport const KB_OBJECT = \"object\";\n\nconst getPropertyIcon = (\n typeId: string,\n kbPropertiesTypes: KBPropertyType[]\n): string =>\n // The object icon has to be retrieved from the ObjectTypes array, by\n // matching the ObjectData typeId with the ObjectType id\n kbPropertiesTypes.find(propertyType => propertyType.id === typeId).icon;\n\nconst convertObjectTypeToTreeItem = (\n objectType: ObjectType\n): TreeViewItemModel => ({\n caption: objectType.name,\n id: objectType.id,\n startImgSrc: objectType.icon,\n leaf: false,\n parts: \"object-type tree-view-item\",\n expanded: true,\n items: []\n});\n\nconst convertObjectToTreeItem = (\n object: ObjectData,\n objectTypes: Map<string, ObjectType>\n): TreeViewItemModel => ({\n caption: object.name,\n id: object.id,\n startImgSrc: objectTypes.get(object.typeId).icon,\n parts: \"object tree-view-item\",\n metadata: KB_OBJECT,\n leaf: true\n});\n\nconst convertPropertyToTreeItem = (\n property: KBPropertyData,\n kbPropertiesTypes: KBPropertyType[]\n): TreeViewItemModel => ({\n caption: property.name,\n id: property.id,\n startImgSrc: getPropertyIcon(property.typeId, kbPropertiesTypes),\n parts: \"property tree-view-item\",\n metadata: KB_PROPERTY,\n leaf: true\n});\n\n/**\n * Updates the tree model with the provided objects.\n * Objects may already exist and are placed under their parent node.\n * If the parent node doesn't exist (identified by typeId on ObjectTypes),\n * it is created and added at the bottom.\n *\n * @param {ObjectData[] | undefined} objects - The array of objects to update.\n * @param {Map<string, ObjectType>} objectTypesMap - A map of object types by ID.\n * @param {Set<string>} objectsSet - A set of existing object IDs.\n * @param {TreeViewModel} actualTreeState - The current tree state to be updated.\n * @returns {TreeViewModel} - The updated tree view model.\n */\nexport const updateObjectsTreeModel = (\n objects: ObjectData[] | undefined,\n objectTypesMap: Map<string, ObjectType>,\n objectsSet: Set<string>,\n actualTreeState: TreeViewModel\n): TreeViewModel => {\n if (!objects) {\n return [...actualTreeState];\n }\n\n const updatedTreeData: TreeViewModel = [...actualTreeState];\n objects.forEach(object => {\n // objects that already exists in the actual actualTreeState should not be added.\n\n if (objectsSet.has(object.id)) {\n // object already exists\n return;\n }\n\n const objectTreeItem = convertObjectToTreeItem(object, objectTypesMap);\n\n // TODO: Improve the algorithm efficiency. This check visits potentially all nodes\n // from the TreeViewModel on each iteration. Using a Map to pre-store the TreeView\n // nodes would improve efficiency.\n const objectTypeTreeItemIndex = updatedTreeData.findIndex(\n treeItem => treeItem.id === object.typeId\n );\n\n if (objectTypeTreeItemIndex === -1) {\n // Create and add new object type tree item\n const objectType = objectTypesMap.get(object.typeId);\n if (objectType) {\n const objectTypeTreeItem = convertObjectTypeToTreeItem(objectType);\n objectTypeTreeItem.items.push(objectTreeItem);\n updatedTreeData.push(objectTypeTreeItem);\n }\n } else {\n // objectType exists already. insert object as children of the object type tree item.\n updatedTreeData[objectTypeTreeItemIndex].items.push(objectTreeItem);\n }\n\n objectsSet.add(object.id);\n });\n\n return updatedTreeData;\n};\n\n/**\n * Converts an array of KB properties data into tree item data for a tree view.\n *\n * @param {KBPropertyData[]} properties - The array of KB property data.\n * @param {KBPropertyType[]} kbPropertiesTypes - The array of KB property types.\n * @param {TreeViewModel} actualTreeState - The current state of the tree.\n * @returns {TreeViewModel} - The updated tree view item models.\n */\nexport const convertKbPropertiesDataToTreeItemData = (\n properties: KBPropertyData[],\n kbPropertiesTypes: KBPropertyType[],\n actualTreeState: TreeViewModel\n): TreeViewModel => {\n if (!properties) {\n return [...actualTreeState];\n }\n\n const updatedTreeData: TreeViewModel = [...actualTreeState];\n properties.forEach(property => {\n // properties have no parent node, and they should be added at the beginning of the tree\n const propertyAlreadyExists =\n updatedTreeData.find(node => node.id === property.id) !== undefined;\n if (propertyAlreadyExists) {\n return;\n }\n const propertyTreeItem = convertPropertyToTreeItem(\n property,\n kbPropertiesTypes\n );\n updatedTreeData.unshift(propertyTreeItem);\n });\n return updatedTreeData;\n};\n\n/**\n * Removes properties from the tree model.\n *\n * @param {TreeViewModel} actualTreeState - The current state of the tree,\n * containing various tree view items.\n * @returns {TreeViewModel} - A new array of tree view items that excludes\n * any items with metadata of type `KB_PROPERTY`.\n */\nexport const clearKbPropertiesFromTree = (\n actualTreeState: TreeViewModel\n): TreeViewModel =>\n actualTreeState.filter(item => item.metadata !== KB_PROPERTY);\n","section {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.header__field-group {\n grid-template:\n \"export-file-name buttons-container\" max-content\n \"checkboxes checkboxes\" max-content\n / 1fr max-content;\n}\n.export-file-name {\n grid-area: export-file-name;\n}\n.header__buttons-container {\n grid-area: buttons-container;\n}\n.header__checkboxes {\n grid-area: checkboxes;\n grid-template-columns: max-content 1fr;\n}\n\n.main {\n position: relative;\n padding-block: var(--content-block-spacing);\n}\n","import { Component, Host, h, Prop, Element, State, Watch } from \"@stencil/core\";\n\nimport { ChCheckboxCustomEvent } from \"@genexus/chameleon-controls-library\";\nimport {\n TreeViewItemModelExtended,\n TreeViewModel\n} from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport {\n updateObjectsTreeModel,\n convertKbPropertiesDataToTreeItemData,\n clearKbPropertiesFromTree\n} from \"./helpers\";\nimport { ObjectType } from \"../../common/types\";\n\nimport { KB_PROPERTY, KB_OBJECT } from \"./helpers\";\nimport {\n KBPropertiesCallback,\n KBPropertyData,\n KBPropertyType,\n ObjectData,\n ExportFileDirectoryCallback,\n OptionsCallback,\n AddObjectsCallback,\n ExportCallback,\n AddReferencesCallback,\n CancelCallback\n} from \"./types\";\n\nimport { getIconPath } from \"@genexus/mercury\";\n\nconst FILE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"file\",\n colorType: \"on-elevation\"\n});\nconst SETTINGS_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"settings\",\n colorType: \"primary\"\n});\nconst GENERAL_REFERENCES_ICON = getIconPath({\n category: \"window-tools\",\n name: \"references\",\n colorType: \"neutral\"\n});\nconst MENUS_NEW_OBJECT_ICON = getIconPath({\n category: \"menus\",\n name: \"new-object\",\n colorType: \"on-primary\"\n});\nconst TREE_VIEW_ICON = getIconPath({\n category: \"controls\",\n name: \"treeview\"\n});\nconst CHECKBOX_CHECKED_VALUE = \"true\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/edit\",\n \"components/icon\",\n \"components/tree-view\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\"\n];\n@Component({\n tag: \"gx-ide-kb-manager-export\",\n styleUrl: \"kb-manager-export.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/kb-manager-export\"]\n})\nexport class GxIdeKbManagerExport {\n #addKbDescriptionEl!: HTMLChCheckboxElement;\n #componentLocale: any;\n #animateEmptyState: boolean = false;\n #exportAllEl!: HTMLChCheckboxElement;\n #fileNameEl!: HTMLChEditElement;\n #kBPropertiesData!: KBPropertyData[];\n /**\n * Stores the object types information (name, and icon)\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #objectTypesMap: Map<string, ObjectType> = new Map();\n /**\n * Stores the object's id that have been added.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #objectsSet: Set<string> = new Set();\n\n @Element() el: HTMLGxIdeKbManagerExportElement;\n\n @State() addKbPropertiesIsChecked = false;\n @State() atLeastOnePropertyItemIsChecked = false;\n @State() atLeastOneObjectItemIsChecked = false;\n @State() checkedObjectsIds: string[] = [];\n @State() checkedPropertiesIds: string[] = [];\n @State() exportAllIsChecked = false;\n @State() exportingIsInProcess = false;\n @State() hasObjects: boolean;\n @State() objectsTreeViewModel: TreeViewModel = [];\n @Watch(\"objectsTreeViewModel\")\n objectsTreeViewModelChanged(newObjectsTreeViewModel: TreeViewModel) {\n this.hasObjects =\n newObjectsTreeViewModel && newObjectsTreeViewModel.length > 0;\n if (!this.hasObjects) {\n this.atLeastOnePropertyItemIsChecked = false;\n this.atLeastOneObjectItemIsChecked = false;\n }\n }\n\n /**\n * Callback invoked when the user wants to include KB properties.\n */\n @Prop() readonly addKBPropertiesCallback!: KBPropertiesCallback;\n\n /**\n * Callback invoked when the user wants to add objects.\n */\n @Prop() readonly addObjectsCallback!: AddObjectsCallback;\n\n /**\n *Callback invoked when the user wants to add all the references for the selected objects.\n *@param itemIds:string[] The selected item ids\n *@returns : Returns an object with the items and its references\n */\n @Prop() readonly addReferencesCallback!: AddReferencesCallback;\n\n /**\n * Callback invoked when the user wants to cancel the export process.\n * @returns It returns a boolean indicating whether the process could be canceled or not.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n *Callback invoked when the user wants to initiate the export process.\n *@param fileName:string\n *@param itemIds:string[] The selected item ids\n *@returns : It returns a boolean indicating whether the process was successful\n */\n @Prop() readonly exportCallback!: ExportCallback;\n\n /**\n * Callback invoked when the user wants to access the export options.\n */\n @Prop() readonly exportFileDirectoryCallback!: ExportFileDirectoryCallback;\n\n /**\n * It allows defining the default Export File Name\n */\n @Prop() readonly fileName: string;\n\n /**\n * Array with the possible types of KB properties\n */\n @Prop() readonly kbPropertiesTypes: KBPropertyType[];\n\n /**\n * If true, it will display a loader when needed.\n */\n @Prop() readonly loader = false;\n\n /**\n * Array of possible object types\n */\n @Prop() readonly objectTypes: ObjectType[];\n @Watch(\"objectTypes\")\n objectTypesChanged(newObjectTypesArray: ObjectType[]) {\n this.#objectsTypesArrayToMap(newObjectTypesArray);\n }\n\n /**\n * Callback invoked when the user wants to access the export options.\n */\n @Prop() readonly optionsCallback: OptionsCallback;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#evaluateObjects();\n this.#objectsTypesArrayToMap(this.objectTypes);\n }\n\n #addKBPropertiesCallbackHandler = async (\n e: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.addKbPropertiesIsChecked = e.detail === CHECKBOX_CHECKED_VALUE;\n if (this.addKbPropertiesIsChecked) {\n this.#kBPropertiesData = await this.addKBPropertiesCallback();\n if (this.#kBPropertiesData.length) {\n this.objectsTreeViewModel = convertKbPropertiesDataToTreeItemData(\n this.#kBPropertiesData,\n this.kbPropertiesTypes,\n this.objectsTreeViewModel\n );\n }\n } else {\n // previous properties (if any) should be removed\n this.objectsTreeViewModel = clearKbPropertiesFromTree(\n this.objectsTreeViewModel\n );\n }\n };\n\n #addObjectsCallbackHandler = async () => {\n this.#exportAllEl.value = undefined;\n this.exportAllIsChecked = false;\n const addedObjects = await this.addObjectsCallback();\n this.#updateObjects(addedObjects);\n };\n\n #addReferencesCallbackHandler = async () => {\n const objects: ObjectData[] = await this.addReferencesCallback(\n this.checkedObjectsIds\n );\n this.#updateObjects(objects);\n };\n\n #cancelCallbackHandler = async () => {\n const cancelled = await this.cancelCallback();\n if (cancelled) {\n this.exportingIsInProcess = false;\n }\n };\n\n #clearButtonHandler = () => {\n this.objectsTreeViewModel = [];\n this.#objectsSet.clear();\n this.#addKbDescriptionEl.value = undefined;\n this.#exportAllEl.value = undefined;\n };\n\n #evaluateContentToDisplay = () => {\n // Nothing to display on the tree-view\n if (!this.hasObjects && !this.exportAllIsChecked) {\n return (\n <gx-ide-empty-state\n isAnimated={this.#animateEmptyState}\n stateTitle={this.#componentLocale.main.noObjectsToDisplay}\n key=\"no-objects-empty-state\"\n >\n <button\n class=\"button-primary\"\n onClick={this.#addObjectsCallbackHandler}\n >\n {this.#componentLocale.main.beginByADdingSomeObjects}\n </button>\n </gx-ide-empty-state>\n );\n } else {\n this.#animateEmptyState = true; // improve performance if is first render\n }\n\n if (this.exportAllIsChecked) {\n return (\n <gx-ide-empty-state\n isAnimated={this.#animateEmptyState}\n stateIconSrc={TREE_VIEW_ICON}\n stateTitle={this.#componentLocale.main.exportAllMessage}\n key=\"exporting-all-empty-state\"\n ></gx-ide-empty-state>\n );\n } else {\n this.#animateEmptyState = true; // improve performance if is first render\n }\n\n return (\n <ch-tree-view-render\n class=\"tree-view\"\n checkbox\n checked\n dragDisabled\n dropDisabled\n filter={this.#evaluateTreeViewFilters()}\n filterType={\n this.addKbPropertiesIsChecked && !this.exportAllIsChecked\n ? \"none\"\n : \"metadata\"\n }\n model={this.objectsTreeViewModel}\n showLines=\"last\"\n toggleCheckboxes\n sortItemsCallback={this.#sortTreeItems}\n onCheckedItemsChange={this.#objectsTreeCheckedItemsChangedHandler}\n ></ch-tree-view-render>\n );\n };\n\n #evaluateObjects = () => {\n this.hasObjects =\n this.objectsTreeViewModel && this.objectsTreeViewModel.length > 0;\n };\n\n #evaluateTreeViewFilters = (): string => {\n if (this.addKbPropertiesIsChecked && this.exportAllIsChecked) {\n return KB_PROPERTY; // only show properties\n }\n if (!this.addKbPropertiesIsChecked && !this.exportAllIsChecked) {\n return KB_OBJECT; // only show objects\n }\n return \"none\";\n };\n\n #exportAllChangedHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.exportAllIsChecked = event.detail;\n };\n\n #exportCallbackHandler = async () => {\n this.exportingIsInProcess = true;\n const fileName: string = this.#fileNameEl.value;\n const checkedKbPropertiesIds = this.addKbPropertiesIsChecked\n ? this.checkedPropertiesIds\n : [];\n const checkedObjectIds = this.exportAllIsChecked\n ? undefined\n : this.checkedObjectsIds;\n this.exportCallback(\n fileName,\n checkedKbPropertiesIds,\n checkedObjectIds\n ).then(() => {\n this.exportingIsInProcess = false;\n });\n // returns Promise<boolean> but no procedure was detailed on the spec.\n };\n\n #objectsTypesArrayToMap(objectTypesArray: ObjectType[]) {\n objectTypesArray.forEach(objectType => {\n this.#objectTypesMap.set(objectType.id, objectType);\n });\n }\n\n #objectsTreeCheckedItemsChangedHandler = (\n event: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n // filter 'checked objects' and 'checked properties' ids\n const checkedObjectsIds: string[] = [];\n const checkedPropertiesIds: string[] = [];\n const allItemsWithCheckbox = [...event.detail.values()];\n allItemsWithCheckbox.forEach(node => {\n if (node.item.checked && node.item.metadata === KB_OBJECT) {\n checkedObjectsIds.push(node.item.id);\n } else if (node.item.checked && node.item.metadata === KB_PROPERTY) {\n checkedPropertiesIds.push(node.item.id);\n }\n });\n this.checkedObjectsIds = checkedObjectsIds;\n this.checkedPropertiesIds = checkedPropertiesIds;\n\n this.atLeastOnePropertyItemIsChecked = this.checkedPropertiesIds.length > 0;\n this.atLeastOneObjectItemIsChecked = this.checkedObjectsIds.length > 0;\n };\n\n #sortTreeItems = (subModel: TreeViewModel) => {\n // \"property\" items should be added on top.\n // else sort alphabetically by \"caption\" value.\n return subModel.sort((a, b) => {\n if (a.metadata === \"property\" && b.metadata !== \"property\") {\n return -1;\n }\n if (b.metadata === \"property\" && a.metadata !== \"property\") {\n return 1;\n }\n\n return a.caption.localeCompare(b.caption);\n });\n };\n\n #renderFooter = (): HTMLElement => {\n const referencesButtonEnabled = this.atLeastOneObjectItemIsChecked;\n const clearButtonEnabled = this.objectsTreeViewModel.length > 0;\n return (\n <footer class=\"footer control-footer-with-border control-footer-space-between space-body spacing-body-inline spacing-body-block-end\">\n <button\n class=\"button-tertiary clear-btn\"\n disabled={!clearButtonEnabled}\n part=\"clear-button\"\n onClick={clearButtonEnabled && this.#clearButtonHandler}\n >\n {this.#componentLocale.footer.clearButton}\n </button>\n\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary button-icon-and-text\"\n part=\"references-button\"\n disabled={!referencesButtonEnabled}\n onClick={\n referencesButtonEnabled && this.#addReferencesCallbackHandler\n }\n >\n <ch-image\n class=\"icon-sm\"\n disabled={!referencesButtonEnabled}\n src={GENERAL_REFERENCES_ICON}\n ></ch-image>\n {this.#componentLocale.footer.addReferencesButton}\n </button>\n\n <button\n // Add button\n class=\"button-primary button-icon-and-text\"\n disabled={this.exportAllIsChecked}\n part=\"add-button\"\n onClick={\n !this.exportAllIsChecked && this.#addObjectsCallbackHandler\n }\n >\n <ch-image\n class=\"icon-sm\"\n disabled={this.exportAllIsChecked}\n src={MENUS_NEW_OBJECT_ICON}\n ></ch-image>\n {this.#componentLocale.footer.addButton}\n </button>\n </div>\n </footer>\n );\n };\n\n #updateObjects = (objectsDataArray: ObjectData[]) => {\n if (objectsDataArray.length) {\n const newObjectsTreeModel = updateObjectsTreeModel(\n objectsDataArray,\n this.#objectTypesMap,\n this.#objectsSet,\n this.objectsTreeViewModel\n );\n this.objectsTreeViewModel = newObjectsTreeModel;\n }\n };\n\n render(): void {\n const exportButtonEnabled =\n this.atLeastOnePropertyItemIsChecked ||\n this.atLeastOneObjectItemIsChecked ||\n this.exportAllIsChecked;\n\n const cancelButtonEnabled = this.exportingIsInProcess;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section>\n <header class=\"header control-header-with-border space-body spacing-body-inline spacing-body-block-start\">\n <div class=\"field-group header__field-group\">\n <div class=\"field field-inline export-file-name\">\n <label class=\"label\" htmlFor=\"xpz-file\">\n {this.#componentLocale.header.exportFileName}\n </label>\n <ch-edit\n autoFocus\n id=\"xpz-file\"\n class=\"form-input\"\n part=\"xpz-file\"\n value={this.fileName}\n startImgSrc={FILE_ICON}\n ref={(el: HTMLChEditElement) =>\n (this.#fileNameEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div class=\"header__buttons-container buttons-spacer\">\n <button\n id=\"export-kb-btn\"\n class=\"button-primary export-btn\"\n part=\"export-btn\"\n disabled={!exportButtonEnabled}\n onClick={exportButtonEnabled && this.#exportCallbackHandler}\n >\n {this.#componentLocale.header.exportButton}\n </button>\n <button\n id=\"cancel-kb-export-btn\"\n class=\"button-secondary cancel-btn\"\n part=\"cancel-button\"\n disabled={!cancelButtonEnabled}\n onClick={cancelButtonEnabled && this.#cancelCallbackHandler}\n >\n {this.#componentLocale.header.cancelButton}\n </button>\n\n <button\n aria-label={this.#componentLocale.header.optionsButton}\n title={this.#componentLocale.header.optionsButton}\n class=\"button-tertiary button-icon-only options-btn\"\n part=\"select-kb-btn\"\n onClick={this.optionsCallback}\n >\n <ch-image class=\"icon-md\" src={SETTINGS_ICON}></ch-image>\n </button>\n </div>\n\n <div class=\"header__checkboxes field-group\">\n <ch-checkbox\n class=\"checkbox add-kb-description\"\n part=\"add-kb-description\"\n caption={\n this.#componentLocale.main.addKnowledgeBaseDescription\n }\n checkedValue={CHECKBOX_CHECKED_VALUE}\n onInput={this.#addKBPropertiesCallbackHandler}\n ref={(el: HTMLChCheckboxElement) =>\n (this.#addKbDescriptionEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n\n <ch-checkbox\n class=\"checkbox export-all\"\n part=\"export-all-checkbox\"\n checkedValue={CHECKBOX_CHECKED_VALUE}\n caption={this.#componentLocale.main.exportAll}\n onInput={this.#exportAllChangedHandler}\n ref={(el: HTMLChCheckboxElement) =>\n (this.#exportAllEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </div>\n </div>\n </header>\n\n <div class=\"main spacing-body-inline\">\n {this.#evaluateContentToDisplay()}\n {this.loader && this.exportingIsInProcess && (\n <gx-ide-loader\n cancelLabel={this.#componentLocale.loader.cancelLabel}\n loaderTitle={this.#componentLocale.loader.title}\n cancelCallback={this.#cancelCallbackHandler}\n show\n class=\"loader\"\n ></gx-ide-loader>\n )}\n </div>\n\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n"],"mappings":"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"}