@genexus/genexus-ide-ui 1.0.3 → 1.0.5

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 (83) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-container_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/gx-ide-empty-state.cjs.entry.js +3 -2
  4. package/dist/cjs/gx-ide-empty-state.cjs.entry.js.map +1 -1
  5. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +272 -293
  6. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
  7. package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
  8. package/dist/cjs/gx-ide-loader.cjs.entry.js.map +1 -1
  9. package/dist/cjs/gx-ide-recent-news.cjs.entry.js +1 -1
  10. package/dist/cjs/gx-ide-recent-news.cjs.entry.js.map +1 -1
  11. package/dist/cjs/gx-ide-start-page.cjs.entry.js +5 -4
  12. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  13. package/dist/cjs/loader.cjs.js +1 -1
  14. package/dist/collection/collection-manifest.json +1 -1
  15. package/dist/collection/components/_helpers/container/container.js.map +1 -1
  16. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.css +5 -1
  17. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js +20 -1
  18. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js.map +1 -1
  19. package/dist/collection/components/_helpers/ide-loader/ide-loader.css +3 -2
  20. package/dist/collection/components/kb-manager-export/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +3 -3
  21. package/dist/collection/components/kb-manager-export/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.ja.json +4 -4
  22. package/dist/collection/components/kb-manager-export/helpers.js +64 -105
  23. package/dist/collection/components/kb-manager-export/helpers.js.map +1 -1
  24. package/dist/collection/components/kb-manager-export/kb-manager-export.css +19 -618
  25. package/dist/collection/components/kb-manager-export/kb-manager-export.js +345 -377
  26. package/dist/collection/components/kb-manager-export/kb-manager-export.js.map +1 -1
  27. package/dist/collection/components/kb-manager-export/types.js +2 -0
  28. package/dist/collection/components/kb-manager-export/types.js.map +1 -0
  29. package/dist/collection/components/start-page/recent-news.js +1 -1
  30. package/dist/collection/components/start-page/recent-news.js.map +1 -1
  31. package/dist/collection/components/start-page/start-page.js +5 -4
  32. package/dist/collection/components/start-page/start-page.js.map +1 -1
  33. package/dist/components/container.js.map +1 -1
  34. package/dist/components/gx-ide-empty-state2.js +4 -2
  35. package/dist/components/gx-ide-empty-state2.js.map +1 -1
  36. package/dist/components/gx-ide-kb-manager-export.js +294 -314
  37. package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
  38. package/dist/components/gx-ide-start-page.js +5 -4
  39. package/dist/components/gx-ide-start-page.js.map +1 -1
  40. package/dist/components/ide-loader.js +1 -1
  41. package/dist/components/ide-loader.js.map +1 -1
  42. package/dist/components/recent-news.js +1 -1
  43. package/dist/components/recent-news.js.map +1 -1
  44. package/dist/esm/genexus-ide-ui.js +1 -1
  45. package/dist/esm/gx-ide-container_2.entry.js.map +1 -1
  46. package/dist/esm/gx-ide-empty-state.entry.js +3 -2
  47. package/dist/esm/gx-ide-empty-state.entry.js.map +1 -1
  48. package/dist/esm/gx-ide-kb-manager-export.entry.js +273 -294
  49. package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
  50. package/dist/esm/gx-ide-loader.entry.js +1 -1
  51. package/dist/esm/gx-ide-loader.entry.js.map +1 -1
  52. package/dist/esm/gx-ide-recent-news.entry.js +1 -1
  53. package/dist/esm/gx-ide-recent-news.entry.js.map +1 -1
  54. package/dist/esm/gx-ide-start-page.entry.js +5 -4
  55. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  56. package/dist/esm/loader.js +1 -1
  57. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  58. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  59. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +3 -3
  60. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.ja.json +4 -4
  61. package/dist/genexus-ide-ui/p-2cb766ce.entry.js +493 -0
  62. package/dist/genexus-ide-ui/p-2cb766ce.entry.js.map +1 -0
  63. package/dist/genexus-ide-ui/{p-f924f02a.entry.js → p-64101478.entry.js} +2 -2
  64. package/dist/genexus-ide-ui/p-64101478.entry.js.map +1 -0
  65. package/dist/genexus-ide-ui/p-7ac25fc3.entry.js.map +1 -1
  66. package/dist/genexus-ide-ui/{p-f220c75a.entry.js → p-885302c2.entry.js} +11 -6
  67. package/dist/genexus-ide-ui/p-885302c2.entry.js.map +1 -0
  68. package/dist/genexus-ide-ui/{p-bbb30314.entry.js → p-8ff5da93.entry.js} +37 -32
  69. package/dist/genexus-ide-ui/p-8ff5da93.entry.js.map +1 -0
  70. package/dist/genexus-ide-ui/{p-cb0e11db.entry.js → p-a6b76120.entry.js} +2 -2
  71. package/dist/genexus-ide-ui/p-a6b76120.entry.js.map +1 -0
  72. package/dist/types/components/_helpers/empty-state/gx-ide-empty-state.d.ts +4 -0
  73. package/dist/types/components/kb-manager-export/helpers.d.ts +33 -5
  74. package/dist/types/components/kb-manager-export/kb-manager-export.d.ts +36 -98
  75. package/dist/types/components/kb-manager-export/types.d.ts +21 -0
  76. package/dist/types/components.d.ts +16 -40
  77. package/package.json +6 -9
  78. package/dist/genexus-ide-ui/p-b3baa3d2.entry.js +0 -491
  79. package/dist/genexus-ide-ui/p-b3baa3d2.entry.js.map +0 -1
  80. package/dist/genexus-ide-ui/p-bbb30314.entry.js.map +0 -1
  81. package/dist/genexus-ide-ui/p-cb0e11db.entry.js.map +0 -1
  82. package/dist/genexus-ide-ui/p-f220c75a.entry.js.map +0 -1
  83. package/dist/genexus-ide-ui/p-f924f02a.entry.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"names":["ideLoaderCss","CSS_BUNDLES","IdeLoader","_IdeLoader_timeoutReference","set","this","_IdeLoader_cancelProcess","cancelCallback","clearTimeout","__classPrivateFieldGet","show","_IdeLoader_renderCancelButton","cancelLabel","h","class","type","onClick","_IdeLoader_renderDescription","description","_IdeLoader_renderTitle","loaderTitle","render","Host","model","showWrapper","part","popover","call"],"sources":["src/components/_helpers/ide-loader/ide-loader.scss?tag=gx-ide-loader&encapsulation=shadow","src/components/_helpers/ide-loader/ide-loader.tsx"],"sourcesContent":["$animation: fadeIn var(--mer-timing--fast) forwards;\n\n.loader {\n &__wrapper {\n position: absolute;\n border: none;\n opacity: 0;\n transition: var(--show-transition) opacity;\n inline-size: 100%;\n block-size: 100%;\n display: flex;\n background-color: var(--gxg-ide-loader-wrapper__background-color--from);\n backdrop-filter: var(--gxg-ide-loader-wrapper__backdrop-filter);\n padding: var(--gxg-ide-loader-wrapper__padding);\n flex-direction: column;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n color: var(--gxg-ide-loader-wrapper__color);\n\n &--visible {\n opacity: 1;\n }\n }\n &__spinner {\n border: var(--gxg-ide-loader-spinner__border);\n border-block-start: var(--gxg-ide-loader-spinner__border-top);\n border-radius: 50%;\n animation: spinner 0.6s infinite linear;\n inline-size: var(--gxg-ide-loader-spinner__width);\n block-size: var(--gxg-ide-loader-spinner__width);\n flex-shrink: 0;\n opacity: 1;\n }\n\n &__content-wrapper {\n display: flex;\n text-align: center;\n flex-direction: column;\n margin-block-start: var(--gxg-ide-loader-content-wrapper__mbs);\n gap: var(--mer-spacing--xs);\n max-block-size: var(--gxg-ide-loader-content-wrapper__max-width);\n &--hidden {\n display: none;\n }\n animation: $animation;\n opacity: 1;\n }\n}\n\n/*background color animation*/\n@keyframes wrapper {\n 0% {\n background-color: var(--gxg-ide-loader-wrapper__background-color--from);\n }\n 100% {\n background-color: var(--gxg-ide-loader-wrapper__background-color--to);\n }\n}\n@keyframes spinner {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(359deg);\n }\n}\n\n:host([display-border]) {\n .loader {\n &__wrapper {\n border: 1px solid var(--mer-color__elevation--02);\n }\n }\n}\n\n@keyframes fadeIn {\n 0% {\n opacity: 0;\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n State,\n Event,\n EventEmitter\n} from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"utils/typography\"\n];\n@Component({\n tag: \"gx-ide-loader\",\n styleUrl: \"ide-loader.scss\",\n shadow: true\n})\nexport class IdeLoader {\n #timeoutReference: ReturnType<typeof setTimeout>;\n\n /**\n * shows the '.loader-wrapper'\n */\n @State() showWrapper = true;\n\n /**\n * The time the loader will await before abort.\n */\n @Prop() readonly abortTime: number = 5 * 60 * 1000; // 5 minutes\n\n /**\n * The cancel callback\n */\n @Prop() readonly cancelCallback: IdeLoaderCancelCallback;\n\n /**\n * The cancel button label (optional)\n */\n @Prop() readonly cancelLabel: string;\n\n /**\n * The loader description (optional)\n */\n @Prop() readonly description: string;\n\n /**\n * Displays a border all around\n */\n @Prop({ reflect: true }) readonly displayBorder: boolean = false;\n\n /**\n * The loader title (optional)\n */\n @Prop() readonly loaderTitle: string;\n\n /**\n * It shows the loader\n */\n @Prop({ mutable: true }) show = false;\n\n /**\n * This event is emitted when \"show\" is false.\n */\n @Event() loaderFinished: EventEmitter<void>;\n\n #cancelProcess = (): void => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n clearTimeout(this.#timeoutReference);\n this.show = false;\n };\n\n #renderCancelButton = (): HTMLButtonElement | null =>\n this.cancelLabel && (\n <div>\n <button\n class=\"button-secondary\"\n type=\"button\"\n onClick={this.#cancelProcess}\n >\n {this.cancelLabel}\n </button>\n </div>\n );\n\n #renderDescription = (): HTMLParagraphElement | null =>\n this.description && <p class=\"text-body-italic-s\">{this.description}</p>;\n\n #renderTitle = (): HTMLParagraphElement | null =>\n this.loaderTitle && <p class=\"text-body-regular-m\">{this.loaderTitle}</p>;\n\n render() {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n {this.show && (\n <div\n class={{\n [`loader__wrapper`]: true,\n \"loader__wrapper--visible\": this.showWrapper\n }}\n part=\"loader-wrapper\"\n popover=\"\"\n >\n <div class=\"loader__spinner\"></div>\n <div\n class={{\n \"loader__content-wrapper\": true,\n \"loader__content-wrapper--hidden\":\n !this.description && !this.loaderTitle && !this.cancelLabel\n }}\n >\n {this.#renderTitle()}\n {this.#renderDescription()}\n {this.#renderCancelButton()}\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n\nexport type IdeLoaderCancelCallback = () => void;\n"],"mappings":";;AAAA,MAAMA,IAAe;;;;;;;;;;ACYrB,MAAMC,IAA8B,EAClC,qBACA,qBACA;;MAOWC,IAAS;;;;IACpBC,EAAAC,IAAAC,WAAA;IA+CAC,EAAAF,IAAAC,OAAiB;MACf,IAAIA,KAAKE,gBAAgB;QACvBF,KAAKE;;MAEPC,aAAaC,EAAAJ,MAAIF,GAAA;MACjBE,KAAKK,OAAO;AAAK;IAGnBC,EAAAP,IAAAC,OAAsB,MACpBA,KAAKO,eACHC,EAAA,aACEA,EAAA;MACEC,OAAM;MACNC,MAAK;MACLC,SAASP,EAAAJ,MAAIC,GAAA;OAEZD,KAAKO;IAKdK,EAAAb,IAAAC,OAAqB,MACnBA,KAAKa,eAAeL,EAAA;MAAGC,OAAM;OAAsBT,KAAKa;IAE1DC,EAAAf,IAAAC,OAAe,MACbA,KAAKe,eAAeP,EAAA;MAAGC,OAAM;OAAuBT,KAAKe;uBAnEpC;qBAKc,IAAI,KAAK;;;;yBAoBa;;gBAU3B;;EAkChC,MAAAC;IACE,OACER,EAACS,GAAI,MACHT,EAAA;MAAUU,OAAOtB;QAChBI,KAAKK,QACJG,EAAA;MACEC,OAAO;QACL,CAAC,oBAAoB;QACrB,4BAA4BT,KAAKmB;;MAEnCC,MAAK;MACLC,SAAQ;OAERb,EAAA;MAAKC,OAAM;QACXD,EAAA;MACEC,OAAO;QACL,2BAA2B;QAC3B,oCACGT,KAAKa,gBAAgBb,KAAKe,gBAAgBf,KAAKO;;OAGnDH,EAAAJ,MAAIc,GAAA,KAAaQ,KAAjBtB,OACAI,EAAAJ,MAAIY,GAAA,KAAmBU,KAAvBtB,OACAI,EAAAJ,MAAIM,GAAA,KAAoBgB,KAAxBtB"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["gxIdeEmptyStateCss","CSS_BUNDLES","GxIdeEmptyState","render","h","Host","model","class","this","stateIconSrc","src","stateTitle","stateDescription"],"sources":["src/components/_helpers/empty-state/gx-ide-empty-state.scss?tag=gx-ide-empty-state&encapsulation=shadow","src/components/_helpers/empty-state/gx-ide-empty-state.tsx"],"sourcesContent":["@import \"../../../global/gx-ide-common.scss\";\n\n:host {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n animation: fadeIn var(--mer-timing--fast) forwards;\n inline-size: 100%;\n position: relative;\n inset-block-start: 0;\n}\n.main-container {\n max-width: 320px;\n margin: 0 auto;\n gap: var(--mer-spacing--md);\n padding: var(--mer-spacing--md);\n\n &__icon-wrapper {\n border: var(--mer-border__width--sm) dashed var(--mer-accent__primary);\n border-radius: 50%;\n min-width: 40px;\n min-height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n &__content {\n gap: var(--mer-spacing--sm);\n }\n}\n.main-container,\n.main-container__content {\n display: flex;\n align-items: center;\n flex-direction: column;\n}\n\n@keyframes fadeIn {\n 0% {\n opacity: 0;\n inset-block-start: 5px;\n }\n}\n","import { Component, Host, h, Prop, Element } from \"@stencil/core\";\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/icon\",\n \"utils/typography\"\n];\n\n@Component({\n tag: \"gx-ide-empty-state\",\n styleUrl: \"gx-ide-empty-state.scss\",\n shadow: true\n})\nexport class GxIdeEmptyState {\n @Element() el: HTMLGxIdeEmptyStateElement;\n\n /**\n * The state description\n */\n @Prop() readonly stateDescription?: string;\n\n /**\n * The state icon\n */\n @Prop() readonly stateIconSrc?: string;\n\n /**\n * The state title\n */\n @Prop() readonly stateTitle!: string;\n\n render() {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <article class=\"main-container\">\n {this.stateIconSrc && (\n <span class=\"main-container__icon-wrapper\">\n <ch-image src={this.stateIconSrc} class=\"icon-md\"></ch-image>\n </span>\n )}\n <div class=\"main-container__content\">\n {this.stateTitle && (\n <h2 class=\"text-body-regular-m\">{this.stateTitle}</h2>\n )}\n {this.stateDescription && (\n <p class=\"text-body-regular-s\">{this.stateDescription}</p>\n )}\n </div>\n <slot></slot>\n </article>\n </Host>\n );\n }\n}\n"],"mappings":";;AAAA,MAAMA,IAAqB;;ACG3B,MAAMC,IAA8B,EAClC,qBACA,qBACA,mBACA;;MAQWC,IAAe;;;;;;;EAkB1B,MAAAC;IACE,OACEC,EAACC,GAAI,MACHD,EAAA;MAAUE,OAAOL;QACjBG,EAAA;MAASG,OAAM;OACZC,KAAKC,gBACJL,EAAA;MAAMG,OAAM;OACVH,EAAA;MAAUM,KAAKF,KAAKC;MAAcF,OAAM;SAG5CH,EAAA;MAAKG,OAAM;OACRC,KAAKG,cACJP,EAAA;MAAIG,OAAM;OAAuBC,KAAKG,aAEvCH,KAAKI,oBACJR,EAAA;MAAGG,OAAM;OAAuBC,KAAKI,oBAGzCR,EAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["recentNewsCss","NEWS_ICON","getIconPath","category","name","colorType","CSS_BUNDLES","GxIdeRecentNews","_GxIdeRecentNews_NEWS_ITEM_CLASS_SELECTOR","set","this","_GxIdeRecentNews_newsRendered","_GxIdeRecentNews_setTimeOutNewsDelay","_GxIdeRecentNews_newsContainerEl","_GxIdeRecentNews_displayNews","__classPrivateFieldGet","undefined","news","Array","from","querySelectorAll","forEach","setTimeout","classList","add","__classPrivateFieldSet","_GxIdeRecentNews_evaluateNewsDisplay","length","call","_GxIdeRecentNews_evaluateNewsRender","newsLoadFailed","h","stateIconSrc","stateTitle","_componentLocale","recentNews","newsNotFetched","title","class","onClick","_GxIdeRecentNews_getNews","tryAgainButtonLabel","href","onlineNewsURL","target","readThemOnline","noNewsToDisplay","_a","filteredNews","noNewsFiltered","_GxIdeRecentNews_renderNewsList","async","loadingNews","newsResult","getNewsCallback","_GxIdeRecentNews_openNewsHandler","newsId","openNewsCallback","_GxIdeRecentNews_refreshFilteredNews","filterValue","filter","singleNews","toLowerCase","includes","_b","body","_GxIdeRecentNews_renderNewsItem","id","visible","key","type","src","config","headingsClasses","cardSmall","hiChar","ref","el","map","newsChanged","watchNews","newFilterValue","componentWillLoad","Locale","getComponentStrings","componentDidRender","componentDidLoad","render","Host","empty","scrollable","model","abortTime","loaderTitle","loader","description","show"],"sources":["src/components/start-page/recent-news.scss?tag=gx-ide-recent-news&encapsulation=shadow","src/components/start-page/recent-news.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n@include hiChar();\n\n:host(.empty) {\n overflow: hidden !important; // WA to avoid scrollbar \"flickering\"\n}\n.news-container {\n display: grid;\n gap: var(--mer-spacing--xs);\n grid-auto-rows: max-content;\n // padding-inline-end: var(--mer-spacing--xs);\n}\n.news-item {\n opacity: 0;\n transition: 150ms opacity;\n\n &.visible {\n opacity: 1;\n }\n}\n.card-news {\n display: flex;\n flex-direction: column;\n align-items: start;\n gap: var(--mer-spacing--xs);\n\n &__header {\n display: flex;\n gap: var(--mer-spacing--sm);\n align-items: center;\n }\n}\n\ngx-ide-loader::part(loader-wrapper) {\n border: var(--mer-border__width--sm) solid\n var(--mer-border-color__on-elevation--01);\n border-radius: var(--mer-border__radius--md);\n}\n\n.text-link {\n color: var(--mer-accent__primary);\n\n &:hover {\n text-decoration: underline;\n }\n}\n","import { Component, Host, h, Prop, Element, State, Watch } from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport { config } from \"../../common/config\";\nimport { hiChar } from \"../../common/helpers\";\nimport { NewsData, GetNewsCallback, OpenNewsCallback } from \"./start-page\";\n\nconst NEWS_ICON = getIconPath({\n category: \"system\",\n name: \"news\",\n colorType: \"on-surface\"\n});\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/icon\",\n \"utils/typography\",\n \"utils/layout\",\n \"chameleon/scrollbar\"\n];\n@Component({\n tag: \"gx-ide-recent-news\",\n styleUrl: \"recent-news.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/recent-news\"]\n})\nexport class GxIdeRecentNews {\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n\n #NEWS_ITEM_CLASS_SELECTOR = \"news-item\";\n #newsRendered = false;\n #setTimeOutNewsDelay = 75;\n\n @Element() el: HTMLGxIdeRecentNewsElement;\n\n #newsContainerEl: HTMLDivElement;\n\n /**\n * The list of news after the filter\n */\n @State() filteredNews: NewsData[] = [];\n\n /**\n * True if news are being requested\n */\n @State() loadingNews = true;\n\n /**\n * The list of news\n */\n @State() news: NewsData[] = [];\n @Watch(\"news\")\n newsChanged(news: NewsData[]) {\n this.#refreshFilteredNews(this.filterValue, news);\n this.#displayNews();\n }\n\n /**\n * True if news couldn't be loaded\n */\n @State() newsLoadFailed = false;\n\n /**\n * Callback invoked to load the news feed (right panel \"Recent News\").\n */\n @Prop() readonly getNewsCallback!: GetNewsCallback;\n\n /**\n * Callback invoked to open a news article.\n */\n @Prop() readonly openNewsCallback!: OpenNewsCallback;\n\n /**\n * The news filter value inserted by the user on the news input filter\n */\n @Prop() readonly filterValue: string = \"\";\n @Watch(\"filterValue\")\n watchNews(newFilterValue: string) {\n this.#refreshFilteredNews(newFilterValue, this.news);\n }\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidRender() {\n this.#evaluateNewsDisplay();\n }\n\n componentDidLoad() {\n this.#getNews();\n }\n\n #displayNews = () => {\n if (this.#newsContainerEl !== undefined) {\n const news = Array.from(\n this.#newsContainerEl.querySelectorAll(\n `.${this.#NEWS_ITEM_CLASS_SELECTOR}`\n )\n );\n news.forEach(news => {\n // display news with a cascade effect\n setTimeout(() => {\n news.classList.add(\"visible\");\n }, this.#setTimeOutNewsDelay);\n this.#setTimeOutNewsDelay += 45;\n });\n }\n };\n\n #evaluateNewsDisplay = () => {\n if (\n !this.#newsRendered &&\n this.news.length > 0 &&\n this.#newsContainerEl !== undefined\n ) {\n this.#displayNews();\n this.#newsRendered = true;\n }\n };\n\n #evaluateNewsRender = (): HTMLElement => {\n if (this.newsLoadFailed) {\n return (\n <gx-ide-empty-state\n stateIconSrc={NEWS_ICON}\n stateTitle={this._componentLocale.recentNews.newsNotFetched.title}\n >\n <button\n class=\"empty-state__button button-primary\"\n onClick={this.#getNews}\n >\n {\n this._componentLocale.recentNews.newsNotFetched\n .tryAgainButtonLabel\n }\n </button>\n <a\n class=\"text-link text-body-regular-s\"\n href={this._componentLocale.recentNews.newsNotFetched.onlineNewsURL}\n target=\"_blank\"\n >\n {this._componentLocale.recentNews.newsNotFetched.readThemOnline}\n </a>\n </gx-ide-empty-state>\n );\n }\n if (this.news.length === 0) {\n return (\n <gx-ide-empty-state\n stateIconSrc={NEWS_ICON}\n stateTitle={this._componentLocale.recentNews.noNewsToDisplay.title}\n >\n <a\n class=\"empty-state__link text-body-regular-s\"\n href={this._componentLocale.recentNews.onlineNewsURL}\n target=\"_blank\"\n >\n {this._componentLocale.recentNews.readThemOnline}\n </a>\n </gx-ide-empty-state>\n );\n }\n if (this.filteredNews?.length === 0) {\n return (\n <gx-ide-empty-state\n class=\"news-empty-state\"\n stateIconSrc={NEWS_ICON}\n stateTitle={this._componentLocale.recentNews.noNewsFiltered.title}\n ></gx-ide-empty-state>\n );\n }\n return this.#renderNewsList();\n };\n\n #getNews = async () => {\n this.loadingNews = true;\n const newsResult = await this.getNewsCallback();\n this.loadingNews = false;\n if (newsResult && newsResult.length > 0) {\n this.news = newsResult;\n this.newsLoadFailed = false;\n } else {\n this.newsLoadFailed = true;\n }\n };\n\n #openNewsHandler = (newsId: string) => async () => {\n await this.openNewsCallback(newsId);\n };\n\n #refreshFilteredNews = (filterValue: string, news: NewsData[]) => {\n this.filteredNews = news.filter(\n singleNews =>\n singleNews.title?.toLowerCase().includes(filterValue) ||\n singleNews.body?.toLowerCase().includes(filterValue)\n );\n };\n\n #renderNewsItem = (news: NewsData): HTMLGxgCardElement | null => {\n if (news.id && news.title) {\n return (\n <article>\n <button\n class={{\n \"card-small\": true,\n \"card-small--actionable\": true,\n \"card-news\": true,\n [this.#NEWS_ITEM_CLASS_SELECTOR]: true,\n \"visible\": this.#newsRendered\n }}\n id={news.id}\n key={news.id}\n type=\"button\"\n onClick={this.#openNewsHandler(news.id)}\n >\n <header class=\"card-news__header\">\n <ch-image src={NEWS_ICON} class=\"icon-md\"></ch-image>\n <h2 class={config.headingsClasses.cardSmall}>\n {hiChar(news.title, this.filterValue)}\n </h2>\n </header>\n {news.body && (\n <p class=\"text-body-regular-s\">\n {hiChar(news.body, this.filterValue)}\n </p>\n )}\n </button>\n </article>\n );\n }\n return null;\n };\n\n #renderNewsList = (): HTMLElement => (\n <div\n class=\"news-container\"\n ref={el => (this.#newsContainerEl = el as HTMLDivElement)}\n >\n {this.filteredNews?.map(this.#renderNewsItem)}\n </div>\n );\n\n render() {\n return (\n <Host\n // Improve accessibility by announcing live changes\n aria-live=\"polite\"\n // Wait until all changes are made to prevents assistive\n // technologies from announcing changes before updates are done\n aria-busy={this.loadingNews ? \"true\" : \"false\"}\n class={{ empty: this.filteredNews.length === 0, scrollable: true }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n {this.loadingNews ? (\n <gx-ide-loader\n abortTime={8000}\n loaderTitle={this._componentLocale.loader.title}\n description={this._componentLocale.loader.description}\n show={true}\n ></gx-ide-loader>\n ) : (\n this.#evaluateNewsRender()\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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"}