@genexus/genexus-ide-ui 1.0.4 → 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 (78) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-empty-state.cjs.entry.js +3 -2
  3. package/dist/cjs/gx-ide-empty-state.cjs.entry.js.map +1 -1
  4. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +272 -293
  5. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
  7. package/dist/cjs/gx-ide-loader.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-recent-news.cjs.entry.js +1 -1
  9. package/dist/cjs/gx-ide-recent-news.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-start-page.cjs.entry.js +4 -3
  11. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  12. package/dist/cjs/loader.cjs.js +1 -1
  13. package/dist/collection/collection-manifest.json +1 -1
  14. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.css +5 -1
  15. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js +20 -1
  16. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js.map +1 -1
  17. package/dist/collection/components/_helpers/ide-loader/ide-loader.css +2 -2
  18. package/dist/collection/components/kb-manager-export/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +3 -3
  19. package/dist/collection/components/kb-manager-export/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.ja.json +4 -4
  20. package/dist/collection/components/kb-manager-export/helpers.js +64 -105
  21. package/dist/collection/components/kb-manager-export/helpers.js.map +1 -1
  22. package/dist/collection/components/kb-manager-export/kb-manager-export.css +19 -618
  23. package/dist/collection/components/kb-manager-export/kb-manager-export.js +345 -377
  24. package/dist/collection/components/kb-manager-export/kb-manager-export.js.map +1 -1
  25. package/dist/collection/components/kb-manager-export/types.js +2 -0
  26. package/dist/collection/components/kb-manager-export/types.js.map +1 -0
  27. package/dist/collection/components/start-page/recent-news.js +1 -1
  28. package/dist/collection/components/start-page/recent-news.js.map +1 -1
  29. package/dist/collection/components/start-page/start-page.js +4 -3
  30. package/dist/collection/components/start-page/start-page.js.map +1 -1
  31. package/dist/components/gx-ide-empty-state2.js +4 -2
  32. package/dist/components/gx-ide-empty-state2.js.map +1 -1
  33. package/dist/components/gx-ide-kb-manager-export.js +294 -314
  34. package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
  35. package/dist/components/gx-ide-start-page.js +4 -3
  36. package/dist/components/gx-ide-start-page.js.map +1 -1
  37. package/dist/components/ide-loader.js +1 -1
  38. package/dist/components/ide-loader.js.map +1 -1
  39. package/dist/components/recent-news.js +1 -1
  40. package/dist/components/recent-news.js.map +1 -1
  41. package/dist/esm/genexus-ide-ui.js +1 -1
  42. package/dist/esm/gx-ide-empty-state.entry.js +3 -2
  43. package/dist/esm/gx-ide-empty-state.entry.js.map +1 -1
  44. package/dist/esm/gx-ide-kb-manager-export.entry.js +273 -294
  45. package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
  46. package/dist/esm/gx-ide-loader.entry.js +1 -1
  47. package/dist/esm/gx-ide-loader.entry.js.map +1 -1
  48. package/dist/esm/gx-ide-recent-news.entry.js +1 -1
  49. package/dist/esm/gx-ide-recent-news.entry.js.map +1 -1
  50. package/dist/esm/gx-ide-start-page.entry.js +4 -3
  51. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  52. package/dist/esm/loader.js +1 -1
  53. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  54. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  55. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +3 -3
  56. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.ja.json +4 -4
  57. package/dist/genexus-ide-ui/p-2cb766ce.entry.js +493 -0
  58. package/dist/genexus-ide-ui/p-2cb766ce.entry.js.map +1 -0
  59. package/dist/genexus-ide-ui/{p-f924f02a.entry.js → p-64101478.entry.js} +2 -2
  60. package/dist/genexus-ide-ui/p-64101478.entry.js.map +1 -0
  61. package/dist/genexus-ide-ui/{p-f220c75a.entry.js → p-885302c2.entry.js} +11 -6
  62. package/dist/genexus-ide-ui/p-885302c2.entry.js.map +1 -0
  63. package/dist/genexus-ide-ui/{p-eb49e4f1.entry.js → p-8ff5da93.entry.js} +36 -31
  64. package/dist/genexus-ide-ui/p-8ff5da93.entry.js.map +1 -0
  65. package/dist/genexus-ide-ui/{p-dd07e68a.entry.js → p-a6b76120.entry.js} +2 -2
  66. package/dist/genexus-ide-ui/p-a6b76120.entry.js.map +1 -0
  67. package/dist/types/components/_helpers/empty-state/gx-ide-empty-state.d.ts +4 -0
  68. package/dist/types/components/kb-manager-export/helpers.d.ts +33 -5
  69. package/dist/types/components/kb-manager-export/kb-manager-export.d.ts +36 -98
  70. package/dist/types/components/kb-manager-export/types.d.ts +21 -0
  71. package/dist/types/components.d.ts +16 -40
  72. package/package.json +4 -4
  73. package/dist/genexus-ide-ui/p-b3baa3d2.entry.js +0 -491
  74. package/dist/genexus-ide-ui/p-b3baa3d2.entry.js.map +0 -1
  75. package/dist/genexus-ide-ui/p-dd07e68a.entry.js.map +0 -1
  76. package/dist/genexus-ide-ui/p-eb49e4f1.entry.js.map +0 -1
  77. package/dist/genexus-ide-ui/p-f220c75a.entry.js.map +0 -1
  78. package/dist/genexus-ide-ui/p-f924f02a.entry.js.map +0 -1
@@ -1,18 +1,23 @@
1
1
  import { r, h as e, H as a, g as t } from "./p-aaed592c.js";
2
2
 
3
- const o = ":root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-01--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-02{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-02--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--color-on-primary)}.gxg-title-03{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-03--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-04{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-04--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-05{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-05--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable)}.gxg-text--negative{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text--gray{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--dimmed)}.gxg-quote{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);font-style:italic}.gxg-quote--negative{color:var(--ds-base-font-color--negative)}.gxg-link{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--ds-base-font-color--link-hover)}.gxg-link:active{color:var(--ds-base-font-color--link-active)}.gxg-link-gray{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed)}.gxg-link-gray:hover{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed);filter:brightness(1.4)}.gxg-alert-error{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--error);display:inline-block}.gxg-alert-warning{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--warning);display:inline-block}.gxg-alert-success{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--success);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--ds-base-font-family-primary);font-weight:var(--gxg-label-font-weight);font-size:var(--gxg-label-font-size);color:var(--gxg-label-color);text-align:center;line-height:1.455em;display:flex;align-items:center}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gxg-scrollbar::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}:host{display:grid;block-size:100%}.card-regular{background-color:var(--mer-surface__elevation--01);border:var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01);border-radius:var(--mer-border__radius--md);padding:var(--mer-spacing--md) var(--mer-spacing--md);display:grid}.card-small{background-color:var(--mer-surface__elevation--02);border-radius:var(--mer-border__radius--sm);padding:var(--mer-spacing--sm) var(--mer-spacing--sm)}.card-small--actionable:hover{background-color:var(--mer-color__neutral-gray--600)}.card-small--actionable:active{background-color:var(--mer-color__neutral-gray--650)}.card-small:focus-visible{outline:var(--focus__outline-width) var(--focus__outline-style) var(--focus__outline-color);outline-offset:var(--focus__outline-offset)}.empty-state{block-size:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--mer-spacing--sm);text-align:center}.empty-state__title,.empty-state__button,.empty-state__link{max-inline-size:300px}.opacity-0{opacity:0}.opacity-1{opacity:1}.display-contents{display:contents}.gxi-hidden{display:none !important}.gxi-full-height{height:100%}.gxi-overflow-auto{overflow:auto}.gxi-display-flex{display:flex}.align-start{display:flex;align-items:start}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}.justify-start{display:flex;justify-content:start}.justify-center{display:flex;justify-content:center}.justify-end{display:flex;justify-content:end}.grid{display:grid;grid-row-gap:var(--gx-ide-grid-row-gap);grid-column-gap:var(--gx-ide-grid-column-gap);grid-template-rows:auto}ch-grid-cell{display:flex}ch-grid{overflow:auto;height:100%}ch-grid-column{z-index:99;border-bottom:1px solid var(--mer-color__neutral-gray--800)}ch-grid-column:first-child{padding-inline-start:var(--gx-ide-container__padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gx-ide-container__padding) !important}ch-grid-cell{--mer-spacing--xs:var(--gx-ide-container__padding)}.layout{display:grid;gap:var(--mer-spacing--lg);box-sizing:border-box}.layout--two-cols{grid-template-columns:1fr 1fr}.layout--space-above{padding-block-start:var(--mer-spacing--lg)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}:host(:focus-within) gx-ide-top-bar::part(wrapper){background-color:var(--color-secondary-enabled)}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--mer-font__weight--regular);font-size:var(--mer-font__size--xs);font-family:var(--mer-font-family--primary);height:100%;background-color:var(--gx-ide-component-background-color);display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.gx-ide-main{flex-grow:1;overflow-y:auto;}.gx-ide-main::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-main::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-main::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-main::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-overflow::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.tree-view-primary{font-size:var(--mer-font__size--2xs)}p{margin:0;font-size:var(--mer-font__size--xxs)}.buttons-container{display:flex;gap:var(--mer-spacing--xs)}:host{display:flex;align-items:center;justify-content:center;text-align:center;animation:fadeIn var(--mer-timing--fast) forwards;inline-size:100%;position:relative;inset-block-start:0}.main-container{max-width:320px;margin:0 auto;gap:var(--mer-spacing--md);padding:var(--mer-spacing--md)}.main-container__icon-wrapper{border:var(--mer-border__width--sm) dashed var(--mer-accent__primary);border-radius:50%;min-width:40px;min-height:40px;display:flex;align-items:center;justify-content:center}.main-container__content{gap:var(--mer-spacing--sm)}.main-container,.main-container__content{display:flex;align-items:center;flex-direction:column}@keyframes fadeIn{0%{opacity:0;inset-block-start:5px}}";
3
+ const o = ":root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-01--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-02{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-02--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--color-on-primary)}.gxg-title-03{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-03--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-04{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-04--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-05{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-05--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable)}.gxg-text--negative{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text--gray{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--dimmed)}.gxg-quote{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);font-style:italic}.gxg-quote--negative{color:var(--ds-base-font-color--negative)}.gxg-link{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--ds-base-font-color--link-hover)}.gxg-link:active{color:var(--ds-base-font-color--link-active)}.gxg-link-gray{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed)}.gxg-link-gray:hover{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed);filter:brightness(1.4)}.gxg-alert-error{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--error);display:inline-block}.gxg-alert-warning{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--warning);display:inline-block}.gxg-alert-success{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--success);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--ds-base-font-family-primary);font-weight:var(--gxg-label-font-weight);font-size:var(--gxg-label-font-size);color:var(--gxg-label-color);text-align:center;line-height:1.455em;display:flex;align-items:center}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gxg-scrollbar::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}:host{display:grid;block-size:100%}.card-regular{background-color:var(--mer-surface__elevation--01);border:var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01);border-radius:var(--mer-border__radius--md);padding:var(--mer-spacing--md) var(--mer-spacing--md);display:grid}.card-small{background-color:var(--mer-surface__elevation--02);border-radius:var(--mer-border__radius--sm);padding:var(--mer-spacing--sm) var(--mer-spacing--sm)}.card-small--actionable:hover{background-color:var(--mer-color__neutral-gray--600)}.card-small--actionable:active{background-color:var(--mer-color__neutral-gray--650)}.card-small:focus-visible{outline:var(--focus__outline-width) var(--focus__outline-style) var(--focus__outline-color);outline-offset:var(--focus__outline-offset)}.empty-state{block-size:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--mer-spacing--sm);text-align:center}.empty-state__title,.empty-state__button,.empty-state__link{max-inline-size:300px}.opacity-0{opacity:0}.opacity-1{opacity:1}.display-contents{display:contents}.gxi-hidden{display:none !important}.gxi-full-height{height:100%}.gxi-overflow-auto{overflow:auto}.gxi-display-flex{display:flex}.align-start{display:flex;align-items:start}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}.justify-start{display:flex;justify-content:start}.justify-center{display:flex;justify-content:center}.justify-end{display:flex;justify-content:end}.grid{display:grid;grid-row-gap:var(--gx-ide-grid-row-gap);grid-column-gap:var(--gx-ide-grid-column-gap);grid-template-rows:auto}ch-grid-cell{display:flex}ch-grid{overflow:auto;height:100%}ch-grid-column{z-index:99;border-bottom:1px solid var(--mer-color__neutral-gray--800)}ch-grid-column:first-child{padding-inline-start:var(--gx-ide-container__padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gx-ide-container__padding) !important}ch-grid-cell{--mer-spacing--xs:var(--gx-ide-container__padding)}.layout{display:grid;gap:var(--mer-spacing--lg);box-sizing:border-box}.layout--two-cols{grid-template-columns:1fr 1fr}.layout--space-above{padding-block-start:var(--mer-spacing--lg)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}:host(:focus-within) gx-ide-top-bar::part(wrapper){background-color:var(--color-secondary-enabled)}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--mer-font__weight--regular);font-size:var(--mer-font__size--xs);font-family:var(--mer-font-family--primary);height:100%;background-color:var(--gx-ide-component-background-color);display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.gx-ide-main{flex-grow:1;overflow-y:auto;}.gx-ide-main::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-main::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-main::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-main::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-overflow::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.tree-view-primary{font-size:var(--mer-font__size--2xs)}p{margin:0;font-size:var(--mer-font__size--xxs)}.buttons-container{display:flex;gap:var(--mer-spacing--xs)}:host{display:flex;align-items:center;justify-content:center;text-align:center;inline-size:100%;position:relative}:host(.animate){animation:fadeIn var(--mer-timing--fast) forwards;inset-block-start:0}.main-container{max-width:320px;margin:0 auto;gap:var(--mer-spacing--md);padding:var(--mer-spacing--md)}.main-container__icon-wrapper{border:var(--mer-border__width--sm) dashed var(--mer-accent__primary);border-radius:50%;min-width:40px;min-height:40px;display:flex;align-items:center;justify-content:center;pointer-events:none}.main-container__content{gap:var(--mer-spacing--sm)}.main-container,.main-container__content{display:flex;align-items:center;flex-direction:column}@keyframes fadeIn{0%{opacity:0;inset-block-start:5px}}";
4
4
 
5
5
  const i = [ "resets/box-sizing", "components/button", "components/icon", "utils/typography" ];
6
6
 
7
- const l = class {
7
+ const s = class {
8
8
  constructor(e) {
9
9
  r(this, e);
10
+ this.isAnimated = false;
10
11
  this.stateDescription = undefined;
11
12
  this.stateIconSrc = undefined;
12
13
  this.stateTitle = undefined;
13
14
  }
14
15
  render() {
15
- return e(a, null, e("ch-theme", {
16
+ return e(a, {
17
+ class: {
18
+ animate: this.isAnimated
19
+ }
20
+ }, e("ch-theme", {
16
21
  model: i
17
22
  }), e("article", {
18
23
  class: "main-container"
@@ -34,7 +39,7 @@ const l = class {
34
39
  }
35
40
  };
36
41
 
37
- l.style = o;
42
+ s.style = o;
38
43
 
39
- export { l as gx_ide_empty_state };
40
- //# sourceMappingURL=p-f220c75a.entry.js.map
44
+ export { s as gx_ide_empty_state };
45
+ //# sourceMappingURL=p-885302c2.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["gxIdeEmptyStateCss","CSS_BUNDLES","GxIdeEmptyState","render","h","Host","class","animate","this","isAnimated","model","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 inline-size: 100%;\n position: relative;\n}\n:host(.animate) {\n animation: fadeIn var(--mer-timing--fast) forwards;\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 pointer-events: none;\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 * Includes a subtle entry animation\n */\n // eslint-disable-next-line @stencil-community/reserved-member-names\n @Prop() readonly isAnimated: boolean = false;\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 class={{ animate: this.isAnimated }}>\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;;;sBAOa;;;;;EAiBvC,MAAAC;IACE,OACEC,EAACC,GAAI;MAACC,OAAO;QAAEC,SAASC,KAAKC;;OAC3BL,EAAA;MAAUM,OAAOT;QACjBG,EAAA;MAASE,OAAM;OACZE,KAAKG,gBACJP,EAAA;MAAME,OAAM;OACVF,EAAA;MAAUQ,KAAKJ,KAAKG;MAAcL,OAAM;SAG5CF,EAAA;MAAKE,OAAM;OACRE,KAAKK,cACJT,EAAA;MAAIE,OAAM;OAAuBE,KAAKK,aAEvCL,KAAKM,oBACJV,EAAA;MAAGE,OAAM;OAAuBE,KAAKM,oBAGzCV,EAAA"}
@@ -23,54 +23,56 @@ var g = undefined && undefined.__classPrivateFieldSet || function(n, e, t, r, a)
23
23
  return r === "a" ? a.call(n, t) : a ? a.value = t : e.set(n, t), t;
24
24
  };
25
25
 
26
- var f, h, b, v, m, p, u, y, x, w;
26
+ var f, h, b, v, m, p, u, y, x, w, k;
27
27
 
28
- const k = [ "resets/box-sizing", "utils/typography", "utils/layout", "components/edit", "components/icon", "components/button", "chameleon/scrollbar" ];
28
+ const _ = [ "resets/box-sizing", "utils/typography", "utils/layout", "components/edit", "components/icon", "components/button", "chameleon/scrollbar" ];
29
29
 
30
- const _ = a({
30
+ const z = a({
31
31
  category: "objects",
32
32
  name: "knowledge-base"
33
33
  });
34
34
 
35
- const z = a({
35
+ const T = a({
36
36
  category: "system",
37
37
  name: "folder",
38
38
  colorType: "on-elevation"
39
39
  });
40
40
 
41
- const T = class {
41
+ const M = class {
42
42
  constructor(t) {
43
43
  n(this, t);
44
44
  f.set(this, void 0);
45
45
  h.set(this, "");
46
- b.set(this, (() => {
46
+ b.set(this, {});
47
+ // Object to store kbs refs
48
+ v.set(this, (() => {
47
49
  var n;
48
50
  if (((n = this.kbs) === null || n === void 0 ? void 0 : n.length) > 0) {
49
- return d(this, y, "f").call(this);
51
+ return d(this, x, "f").call(this);
50
52
  } else {
51
53
  return e("gx-ide-empty-state", {
52
54
  class: "kbs-empty-state",
53
- stateIconSrc: z,
55
+ stateIconSrc: T,
54
56
  stateTitle: this._componentLocale.emptyState.title,
55
57
  stateDescription: this._componentLocale.emptyState.description
56
58
  });
57
59
  }
58
60
  }));
59
- v.set(this, (() => {
61
+ m.set(this, (() => {
60
62
  this.filteredKbs = this.kbs.filter((n => {
61
63
  var e;
62
64
  return (e = n.name) === null || e === void 0 ? void 0 : e.toLowerCase().includes(d(this, h, "f"));
63
65
  }));
64
66
  }));
65
- m.set(this, (async () => new Promise((async n => {
67
+ p.set(this, (async () => new Promise((async n => {
66
68
  this.news = await this.getNewsCallback();
67
69
  n(this.news);
68
70
  }))));
69
- p.set(this, (async n => {
71
+ u.set(this, (async n => {
70
72
  const e = n.currentTarget.id;
71
73
  await this.openKbCallback(e);
72
74
  }));
73
- u.set(this, (n => {
75
+ y.set(this, (n => {
74
76
  var t, r;
75
77
  const a = s(n.lastOpenedDate, "pretty");
76
78
  const o = a ? `${this._componentLocale.recentKbs.lastOpened} ${a}` : null;
@@ -86,35 +88,37 @@ const T = class {
86
88
  id: n.id,
87
89
  key: n.id,
88
90
  type: "button",
89
- onClick: d(this, p, "f")
91
+ ref: e => d(this, b, "f")[n.id] = e,
92
+ onClick: d(this, u, "f")
90
93
  }, e("div", {
91
94
  class: "card-kb__left-col"
92
95
  }, e("ch-image", {
93
- src: _,
94
- class: "icon-md"
96
+ src: z,
97
+ class: "icon-md",
98
+ containerRef: d(this, b, "f")[n.id]
95
99
  }), e("h2", {
96
100
  class: i.headingsClasses.cardSmall
97
101
  }, l(n.name, d(this, h, "f")))), o && e("div", {
98
102
  class: "card-kb__right-col"
99
103
  }, o)));
100
104
  }));
101
- y.set(this, (() => {
105
+ x.set(this, (() => {
102
106
  var n;
103
107
  if (this.filteredKbs.length) {
104
108
  return e("div", {
105
109
  class: "kbs-container scrollable"
106
- }, (n = this.filteredKbs) === null || n === void 0 ? void 0 : n.map(d(this, u, "f")));
110
+ }, (n = this.filteredKbs) === null || n === void 0 ? void 0 : n.map(d(this, y, "f")));
107
111
  }
108
112
  return e("gx-ide-empty-state", {
109
- stateIconSrc: _,
113
+ stateIconSrc: z,
110
114
  stateTitle: this._componentLocale.recentKbs.noKbsFiltered.title
111
115
  });
112
116
  }));
113
- x.set(this, (n => {
117
+ w.set(this, (n => {
114
118
  g(this, h, n.target.value.toLowerCase(), "f");
115
- d(this, v, "f").call(this);
119
+ d(this, m, "f").call(this);
116
120
  }));
117
- w.set(this, (n => {
121
+ k.set(this, (n => {
118
122
  this.newsFilterValue = n.target.value.toLowerCase();
119
123
  }));
120
124
  this.displayKbsFilter = true;
@@ -141,7 +145,7 @@ const T = class {
141
145
  }
142
146
  kbsChanged(n) {
143
147
  this.loadingKbs = false;
144
- d(this, v, "f").call(this);
148
+ d(this, m, "f").call(this);
145
149
  if ((n === null || n === void 0 ? void 0 : n.length) >= this.kbsFilterThreshold) {
146
150
  this.displayKbsFilter = true;
147
151
  } else {
@@ -160,7 +164,7 @@ const T = class {
160
164
  return e(t, {
161
165
  class: "start-page-host"
162
166
  }, e("ch-theme", {
163
- model: k
167
+ model: _
164
168
  }), e("div", {
165
169
  class: "layout layout-main layout--cols-2"
166
170
  }, e("div", {
@@ -178,14 +182,14 @@ const T = class {
178
182
  type: "text",
179
183
  class: "form-input recent-kbs__name-filter",
180
184
  placeholder: this._componentLocale.recentKbs.placeholder,
181
- onInput: d(this, x, "f"),
185
+ onInput: d(this, w, "f"),
182
186
  ref: n => g(this, f, n, "f"),
183
187
  disabled: !(((n = this.kbs) === null || n === void 0 ? void 0 : n.length) > 0)
184
188
  })), this.loadingKbs ? e("gx-ide-loader", {
185
189
  loaderTitle: this._componentLocale.recentKbs.loader.title,
186
190
  description: this._componentLocale.recentKbs.loader.description,
187
191
  show: true
188
- }) : d(this, b, "f").call(this))), e("div", {
192
+ }) : d(this, v, "f").call(this))), e("div", {
189
193
  class: "layout__panel panel-recent-news"
190
194
  }, e("section", {
191
195
  class: "card-regular recent-news"
@@ -197,10 +201,10 @@ const T = class {
197
201
  type: "text",
198
202
  class: "form-input recent-news__filter",
199
203
  placeholder: this._componentLocale.recentNews.inputPlaceholder,
200
- onInput: ((r = this.news) === null || r === void 0 ? void 0 : r.length) > 0 ? d(this, w, "f") : null,
204
+ onInput: ((r = this.news) === null || r === void 0 ? void 0 : r.length) > 0 ? d(this, k, "f") : null,
201
205
  disabled: !(((a = this.news) === null || a === void 0 ? void 0 : a.length) > 0)
202
206
  })), e("gx-ide-recent-news", {
203
- getNewsCallback: d(this, m, "f"),
207
+ getNewsCallback: d(this, p, "f"),
204
208
  openNewsCallback: this.openNewsCallback,
205
209
  filterValue: this.newsFilterValue
206
210
  })))));
@@ -220,9 +224,10 @@ const T = class {
220
224
  };
221
225
 
222
226
  f = new WeakMap, h = new WeakMap, b = new WeakMap, v = new WeakMap, m = new WeakMap,
223
- p = new WeakMap, u = new WeakMap, y = new WeakMap, x = new WeakMap, w = new WeakMap;
227
+ p = new WeakMap, u = new WeakMap, y = new WeakMap, x = new WeakMap, w = new WeakMap,
228
+ k = new WeakMap;
224
229
 
225
- T.style = c;
230
+ M.style = c;
226
231
 
227
- export { T as gx_ide_start_page };
228
- //# sourceMappingURL=p-eb49e4f1.entry.js.map
232
+ export { M as gx_ide_start_page };
233
+ //# sourceMappingURL=p-8ff5da93.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["startPageCss","CSS_BUNDLES","KB_ICON","getIconPath","category","name","FOLDER_ICON","colorType","GxIdeStartPage","_GxIdeStartPage_recentKbsFilter","set","this","_GxIdeStartPage_kbsFilterValue","_GxIdeStartPage_kbRefs","_GxIdeStartPage_evaluateRenderKbs","_a","kbs","length","__classPrivateFieldGet","_GxIdeStartPage_renderKbs","call","h","class","stateIconSrc","stateTitle","_componentLocale","emptyState","title","stateDescription","description","_GxIdeStartPage_filterKbs","filteredKbs","filter","kb","toLowerCase","includes","_GxIdeStartPage_getNewsCallbackRecentNews","async","Promise","resolve","news","getNewsCallback","_GxIdeStartPage_openKbHandler","e","kbId","currentTarget","id","openKbCallback","_GxIdeStartPage_renderKb","formattedDate","formatDate","lastOpenedDate","dateCaption","recentKbs","lastOpened","toLocaleLowerCase","_b","key","type","ref","el","onClick","src","containerRef","config","headingsClasses","cardSmall","hiChar","map","noKbsFiltered","_GxIdeStartPage_searchKbsInputHandler","event","__classPrivateFieldSet","target","value","_GxIdeStartPage_searchNewsInputHandler","newsFilterValue","watchNews","newsFilterThreshold","displayNewsFilter","kbsChanged","loadingKbs","kbsFilterThreshold","displayKbsFilter","componentWillLoad","Locale","getComponentStrings","componentDidLoad","focus","render","Host","model","cardRegular","placeholder","onInput","disabled","loaderTitle","loader","show","recentNews","inputPlaceholder","_c","openNewsCallback","filterValue"],"sources":["src/components/start-page/start-page.scss?tag=gx-ide-start-page&encapsulation=shadow","src/components/start-page/start-page.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../global/reset.scss\";\n\n@include hiChar();\n\n:host {\n overflow: auto;\n container-type: inline-size;\n container-name: host;\n}\n\n.layout-main,\n.layout__panel {\n block-size: 100%;\n overflow: auto;\n}\n@container host (max-width: 768px) {\n .layout.layout-main {\n grid-template-columns: 1fr;\n grid-template-rows: 1fr 1fr;\n }\n}\n\n// recent kb's\n.panel-recent-kbs {\n position: relative;\n}\n.recent-kbs,\n.recent-news {\n display: grid;\n grid-template-rows: auto 1fr;\n gap: var(--mer-spacing--md);\n overflow: auto;\n\n &__header {\n display: grid;\n gap: var(--mer-spacing--md);\n }\n}\n\n.kbs-container {\n display: grid;\n gap: var(--mer-spacing--xs);\n overflow: auto;\n grid-auto-rows: max-content;\n container-type: inline-size;\n container-name: kb-container;\n animation: fadeIn var(--mer-timing--super-fast) forwards linear;\n}\n\n.card-kb {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mer-spacing--lg);\n container-type: inline-size;\n container-name: card-kb;\n\n &__left-col {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--sm);\n }\n}\n@container kb-container (max-width: 360px) {\n .card-kb {\n align-items: center;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n justify-content: start;\n }\n}\n\n// recent news\ngx-ide-recent-news {\n overflow: auto;\n}\n.panel-recent-news {\n position: relative;\n}\n\n@keyframes exactMatchBright {\n 100% {\n filter: brightness(1.25);\n }\n}\n.exact-match-bright {\n animation: exactMatchBright var(--mer-timing--super-fast) ease-in-out 4\n alternate;\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@keyframes fadeIn {\n 0% {\n opacity: 0;\n }\n}\n","/* STENCIL IMPORTS */\nimport { Component, Host, h, Prop, Element, State, Watch } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { config } from \"../../common/config\";\nimport { formatDate, hiChar } from \"../../common/helpers\";\nimport { ChEditCustomEvent } from \"@genexus/chameleon-controls-library\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/layout\",\n \"components/edit\",\n \"components/icon\",\n \"components/button\",\n \"chameleon/scrollbar\"\n];\n\nconst KB_ICON = getIconPath({\n category: \"objects\",\n name: \"knowledge-base\"\n});\nconst FOLDER_ICON = getIconPath({\n category: \"system\",\n name: \"folder\",\n colorType: \"on-elevation\"\n});\n\n@Component({\n tag: \"gx-ide-start-page\",\n styleUrl: \"start-page.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/start-page\"]\n})\nexport class GxIdeStartPage {\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n\n #recentKbsFilter: HTMLChEditElement;\n #kbsFilterValue: string = \"\";\n #kbRefs: { [key: string]: HTMLButtonElement | null } = {}; // Object to store kbs refs\n\n @Element() el: HTMLGxIdeStartPageElement;\n\n /**\n * The condition required to display the kbs filter\n */\n @State() displayKbsFilter: boolean = true;\n\n /**\n * The condition required to display the news filter\n */\n @State() displayNewsFilter: boolean = false;\n\n /**\n * The filtered KBs after user input\n */\n @State() filteredKbs: RecentKBData[] = [];\n\n /**\n * The filtered news after user input\n */\n @State() filteredNews: NewsData[] = [];\n\n /**\n * True if kbs have been not loaded yet.\n */\n @State() loadingKbs: boolean = true;\n\n /**\n * A list of recent news\n */\n @State() news: NewsData[];\n @Watch(\"news\")\n watchNews(news: NewsData[]) {\n if (news?.length >= this.newsFilterThreshold) {\n this.displayNewsFilter = true;\n } else {\n this.displayNewsFilter = false;\n }\n }\n\n /**\n * The filter value for the recent news set by the user input\n */\n @State() newsFilterValue: string;\n\n /**\n * True if the component has been rendered for the first time.\n */\n @State() renderedFirstTime = false;\n\n /**\n * Callback invoked to load the news feed (right panel \"Recent News\").\n */\n @Prop() readonly getNewsCallback!: GetNewsCallback;\n\n /**\n * Ann array of the user's KB's\n */\n @Prop() readonly kbs: RecentKBData[] = [];\n @Watch(\"kbs\")\n kbsChanged(kbs: RecentKBData[]) {\n this.loadingKbs = false;\n this.#filterKbs();\n if (kbs?.length >= this.kbsFilterThreshold) {\n this.displayKbsFilter = true;\n } else {\n this.displayKbsFilter = false;\n }\n }\n\n /**\n * The minimum number of \"kbs\" that is required to display the kb's filter.\n */\n @Prop() readonly kbsFilterThreshold: number = 6;\n\n /**\n * The minimum number of \"news\" that is required to display the news's filter.\n */\n @Prop() readonly newsFilterThreshold: number = 6;\n\n /**\n * Callback invoked to open a knowledge base when the user clicks on a KB card.\n */\n @Prop() readonly openKbCallback!: OpenKbCallback;\n\n /**\n * Callback invoked to open a news article.\n */\n @Prop() readonly openNewsCallback!: OpenNewsCallback;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.#recentKbsFilter?.focus();\n }\n\n #evaluateRenderKbs = () => {\n if (this.kbs?.length > 0) {\n return this.#renderKbs();\n } else {\n return (\n <gx-ide-empty-state\n class=\"kbs-empty-state\"\n stateIconSrc={FOLDER_ICON}\n stateTitle={this._componentLocale.emptyState.title}\n stateDescription={this._componentLocale.emptyState.description}\n ></gx-ide-empty-state>\n );\n }\n };\n\n #filterKbs = () => {\n this.filteredKbs = this.kbs.filter(kb =>\n kb.name?.toLowerCase().includes(this.#kbsFilterValue)\n );\n };\n\n #getNewsCallbackRecentNews = async (): Promise<NewsData[]> => {\n return new Promise(async resolve => {\n this.news = await this.getNewsCallback();\n resolve(this.news);\n });\n };\n\n #openKbHandler = async (e: MouseEvent) => {\n const kbId = (e.currentTarget as HTMLElement).id;\n await this.openKbCallback(kbId);\n };\n\n #renderKb = (kb: RecentKBData): HTMLButtonElement | null => {\n const formattedDate = formatDate(kb.lastOpenedDate, \"pretty\");\n const dateCaption = formattedDate\n ? `${this._componentLocale.recentKbs.lastOpened} ${formattedDate}`\n : null;\n return (\n <article class=\"display-contents\">\n <button\n class={{\n \"card-small\": true,\n \"card-small--actionable\": true,\n \"card-kb\": true,\n \"exact-match-bright\":\n kb.name?.toLocaleLowerCase() ===\n this.#kbsFilterValue?.toLowerCase()\n }}\n id={kb.id}\n key={kb.id}\n type=\"button\"\n ref={el => (this.#kbRefs[kb.id] = el as HTMLButtonElement)}\n onClick={this.#openKbHandler}\n >\n <div class=\"card-kb__left-col\">\n <ch-image\n src={KB_ICON}\n class=\"icon-md\"\n containerRef={this.#kbRefs[kb.id]}\n ></ch-image>\n <h2 class={config.headingsClasses.cardSmall}>\n {hiChar(kb.name, this.#kbsFilterValue)}\n </h2>\n </div>\n {dateCaption && <div class=\"card-kb__right-col\">{dateCaption}</div>}\n </button>\n </article>\n );\n };\n\n #renderKbs = () => {\n if (this.filteredKbs.length) {\n return (\n <div class=\"kbs-container scrollable\">\n {this.filteredKbs?.map(this.#renderKb)}\n </div>\n );\n }\n return (\n <gx-ide-empty-state\n stateIconSrc={KB_ICON}\n stateTitle={this._componentLocale.recentKbs.noKbsFiltered.title}\n ></gx-ide-empty-state>\n );\n };\n\n #searchKbsInputHandler = (event: Event | ChEditCustomEvent<InputEvent>) => {\n this.#kbsFilterValue = (\n event as ChEditCustomEvent<InputEvent>\n ).target.value.toLowerCase();\n this.#filterKbs();\n };\n\n #searchNewsInputHandler = (event: Event | ChEditCustomEvent<InputEvent>) => {\n this.newsFilterValue = (\n event as ChEditCustomEvent<InputEvent>\n ).target.value.toLowerCase();\n };\n\n render() {\n return (\n <Host class=\"start-page-host\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"layout layout-main layout--cols-2\">\n <div class=\"layout__panel panel-recent-kbs\">\n <section class=\"card-regular recent-kbs\">\n <header class=\"recent-kbs__header\">\n <h2\n class={{\n [config.headingsClasses.cardRegular]: true,\n \"recent-kbs__title\": true\n }}\n >\n {this._componentLocale.recentKbs.title}\n </h2>\n {this.displayKbsFilter && (\n <ch-edit\n type=\"text\"\n class=\"form-input recent-kbs__name-filter\"\n placeholder={this._componentLocale.recentKbs.placeholder}\n onInput={this.#searchKbsInputHandler}\n ref={el =>\n (this.#recentKbsFilter = el as HTMLChEditElement)\n }\n disabled={!(this.kbs?.length > 0)}\n ></ch-edit>\n )}\n </header>\n\n {this.loadingKbs ? (\n <gx-ide-loader\n loaderTitle={this._componentLocale.recentKbs.loader.title}\n description={\n this._componentLocale.recentKbs.loader.description\n }\n show={true}\n ></gx-ide-loader>\n ) : (\n this.#evaluateRenderKbs()\n )}\n </section>\n </div>\n\n <div class=\"layout__panel panel-recent-news\">\n <section class=\"card-regular recent-news\">\n <header class=\"recent-news__header\">\n <h2 class={config.headingsClasses.cardRegular}>\n {this._componentLocale.recentNews.title}\n </h2>\n {this.displayNewsFilter && (\n <ch-edit\n type=\"text\"\n class=\"form-input recent-news__filter\"\n placeholder={\n this._componentLocale.recentNews.inputPlaceholder\n }\n onInput={\n this.news?.length > 0\n ? this.#searchNewsInputHandler\n : null\n }\n disabled={!(this.news?.length > 0)}\n ></ch-edit>\n )}\n </header>\n\n <gx-ide-recent-news\n getNewsCallback={this.#getNewsCallbackRecentNews}\n openNewsCallback={this.openNewsCallback}\n filterValue={this.newsFilterValue}\n ></gx-ide-recent-news>\n </section>\n </div>\n </div>\n </Host>\n );\n }\n}\n\nexport type OpenKbCallback = (id: string) => Promise<void>;\nexport type GetNewsCallback = () => Promise<NewsData[]>;\nexport type OpenNewsCallback = (id: string) => Promise<void>;\n\nexport type RecentKBData = {\n id: string;\n name: string;\n lastOpenedDate?: Date;\n};\nexport type NewsData = {\n id: string;\n title: string;\n body: string;\n};\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { r as e, c as r, h as a, H as i } from "./p-aaed592c.js";
2
2
 
3
- const o = ".loader__wrapper{position:absolute;border:none;opacity:0;transition:var(--show-transition) opacity;inline-size:100%;block-size:100%;display:flex;background-color:var(--gxg-ide-loader-wrapper__background-color--from);backdrop-filter:var(--gxg-ide-loader-wrapper__backdrop-filter);padding:var(--gxg-ide-loader-wrapper__padding);flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;color:var(--gxg-ide-loader-wrapper__color);z-index:99}.loader__wrapper--visible{opacity:1}.loader__spinner{border:var(--gxg-ide-loader-spinner__border);border-block-start:var(--gxg-ide-loader-spinner__border-top);border-radius:50%;animation:spinner 0.6s infinite linear;inline-size:var(--gxg-ide-loader-spinner__width);block-size:var(--gxg-ide-loader-spinner__width);flex-shrink:0;opacity:1}.loader__content-wrapper{display:flex;text-align:center;flex-direction:column;margin-block-start:var(--gxg-ide-loader-content-wrapper__mbs);gap:var(--mer-spacing--xs);max-block-size:var(--gxg-ide-loader-content-wrapper__max-width);animation:fadeIn var(--mer-timing--fast) forwards;opacity:1}.loader__content-wrapper--hidden{display:none}@keyframes wrapper{0%{background-color:var(--gxg-ide-loader-wrapper__background-color--from)}100%{background-color:var(--gxg-ide-loader-wrapper__background-color--to)}}@keyframes spinner{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}:host([display-border]) .loader__wrapper{border:1px solid var(--mer-color__elevation--02)}@keyframes fadeIn{0%{opacity:0}}";
3
+ const o = ".loader__wrapper{position:absolute;border:none;opacity:0;transition:var(--show-transition) opacity;inline-size:100%;block-size:100%;display:flex;background-color:var(--gxg-ide-loader-wrapper__background-color--from);backdrop-filter:var(--gxg-ide-loader-wrapper__backdrop-filter);padding:var(--gxg-ide-loader-wrapper__padding);flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;color:var(--gxg-ide-loader-wrapper__color);z-index:99;animation:fadeIn var(--mer-timing--fast) forwards}.loader__wrapper--visible{opacity:1}.loader__spinner{border:var(--gxg-ide-loader-spinner__border);border-block-start:var(--gxg-ide-loader-spinner__border-top);border-radius:50%;animation:spinner 0.6s infinite linear;inline-size:var(--gxg-ide-loader-spinner__width);block-size:var(--gxg-ide-loader-spinner__width);flex-shrink:0;opacity:1}.loader__content-wrapper{display:flex;text-align:center;flex-direction:column;margin-block-start:var(--gxg-ide-loader-content-wrapper__mbs);gap:var(--mer-spacing--md);max-block-size:var(--gxg-ide-loader-content-wrapper__max-width);opacity:1}.loader__content-wrapper--hidden{display:none}@keyframes wrapper{0%{background-color:var(--gxg-ide-loader-wrapper__background-color--from)}100%{background-color:var(--gxg-ide-loader-wrapper__background-color--to)}}@keyframes spinner{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}:host([display-border]) .loader__wrapper{border:1px solid var(--mer-color__elevation--02)}@keyframes fadeIn{0%{opacity:0}}";
4
4
 
5
5
  var t = undefined && undefined.__classPrivateFieldGet || function(e, r, a, i) {
6
6
  if (a === "a" && !i) throw new TypeError("Private accessor was defined without a getter");
@@ -70,4 +70,4 @@ n = new WeakMap, s = new WeakMap, d = new WeakMap, p = new WeakMap, l = new Weak
70
70
  h.style = o;
71
71
 
72
72
  export { h as gx_ide_loader };
73
- //# sourceMappingURL=p-dd07e68a.entry.js.map
73
+ //# sourceMappingURL=p-a6b76120.entry.js.map
@@ -0,0 +1 @@
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":[".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 z-index: 99; // WA to prevent tree-view chevron arrow to appear above.\n animation: fadeIn var(--mer-timing--fast) forwards;\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--md);\n max-block-size: var(--gxg-ide-loader-content-wrapper__max-width);\n &--hidden {\n display: none;\n }\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,5 +1,9 @@
1
1
  export declare class GxIdeEmptyState {
2
2
  el: HTMLGxIdeEmptyStateElement;
3
+ /**
4
+ * Includes a subtle entry animation
5
+ */
6
+ readonly isAnimated: boolean;
3
7
  /**
4
8
  * The state description
5
9
  */
@@ -1,8 +1,36 @@
1
- import { TreeViewItemModel } from "@genexus/chameleon-controls-library";
2
- import { ObjectData, KBPropertyData, KBPropertyType } from "./kb-manager-export";
1
+ import { TreeViewModel } from "@genexus/chameleon-controls-library";
2
+ import { ObjectData, KBPropertyData, KBPropertyType } from "./types";
3
3
  import { ObjectType } from "../../common/types";
4
4
  export declare const KB_PROPERTY = "property";
5
5
  export declare const KB_OBJECT = "object";
6
- export declare const updateTreeModelWithObjects: (objects: ObjectData[] | undefined, objectTypes: Map<string, ObjectType>, actualTreeState: TreeViewItemModel[]) => TreeViewItemModel[];
7
- export declare const convertKbPropertiesDataToTreeItemData: (properties: KBPropertyData[], kbPropertiesTypes: KBPropertyType[], actualTreeState: TreeViewItemModel[]) => TreeViewItemModel[];
8
- export declare const clearKbPropertiesFromTree: (kBPropertiesData: KBPropertyData[], actualTreeState: TreeViewItemModel[]) => TreeViewItemModel[];
6
+ /**
7
+ * Updates the tree model with the provided objects.
8
+ * Objects may already exist and are placed under their parent node.
9
+ * If the parent node doesn't exist (identified by typeId on ObjectTypes),
10
+ * it is created and added at the bottom.
11
+ *
12
+ * @param {ObjectData[] | undefined} objects - The array of objects to update.
13
+ * @param {Map<string, ObjectType>} objectTypesMap - A map of object types by ID.
14
+ * @param {Set<string>} objectsSet - A set of existing object IDs.
15
+ * @param {TreeViewModel} actualTreeState - The current tree state to be updated.
16
+ * @returns {TreeViewModel} - The updated tree view model.
17
+ */
18
+ export declare const updateObjectsTreeModel: (objects: ObjectData[] | undefined, objectTypesMap: Map<string, ObjectType>, objectsSet: Set<string>, actualTreeState: TreeViewModel) => TreeViewModel;
19
+ /**
20
+ * Converts an array of KB properties data into tree item data for a tree view.
21
+ *
22
+ * @param {KBPropertyData[]} properties - The array of KB property data.
23
+ * @param {KBPropertyType[]} kbPropertiesTypes - The array of KB property types.
24
+ * @param {TreeViewModel} actualTreeState - The current state of the tree.
25
+ * @returns {TreeViewModel} - The updated tree view item models.
26
+ */
27
+ export declare const convertKbPropertiesDataToTreeItemData: (properties: KBPropertyData[], kbPropertiesTypes: KBPropertyType[], actualTreeState: TreeViewModel) => TreeViewModel;
28
+ /**
29
+ * Removes properties from the tree model.
30
+ *
31
+ * @param {TreeViewModel} actualTreeState - The current state of the tree,
32
+ * containing various tree view items.
33
+ * @returns {TreeViewModel} - A new array of tree view items that excludes
34
+ * any items with metadata of type `KB_PROPERTY`.
35
+ */
36
+ export declare const clearKbPropertiesFromTree: (actualTreeState: TreeViewModel) => TreeViewModel;
@@ -1,61 +1,27 @@
1
- import { EventEmitter } from "../../stencil-public-runtime";
2
- import { TreeViewItemModel } from "@genexus/chameleon-controls-library";
1
+ import { TreeViewModel } from "@genexus/chameleon-controls-library";
3
2
  import { ObjectType } from "../../common/types";
3
+ import { KBPropertiesCallback, KBPropertyType, ExportFileDirectoryCallback, OptionsCallback, AddObjectsCallback, ExportCallback, AddReferencesCallback, CancelCallback } from "./types";
4
4
  export declare class GxIdeKbManagerExport {
5
- /**
6
- * The component hard-coded strings translations.
7
- */
8
- private _componentLocale;
9
- private checkedPropertiesIds;
10
- private renderedFirstTime;
11
- private flattenedObjectTypes;
5
+ #private;
12
6
  el: HTMLGxIdeKbManagerExportElement;
13
- private fileNameEl;
14
- private exportAllCheckboxEl;
15
- private objectsTreeEl;
16
- private loaderEl;
17
- private kBPropertiesData;
18
- exportAllIsChecked: boolean;
19
7
  addKbPropertiesIsChecked: boolean;
8
+ atLeastOnePropertyItemIsChecked: boolean;
9
+ atLeastOneObjectItemIsChecked: boolean;
20
10
  checkedObjectsIds: string[];
21
- noObjects: boolean;
22
- treeModel: TreeViewItemModel[];
23
- watchTreeModelHandler(newState: TreeViewItemModel[]): void;
11
+ checkedPropertiesIds: string[];
12
+ exportAllIsChecked: boolean;
24
13
  exportingIsInProcess: boolean;
25
- watchExportingIsInProcessHandler(isExporting: boolean): void;
26
- /**
27
- * If true it displays the component title on the header
28
- */
29
- readonly displayTitle = false;
30
- /**
31
- * It allows defining the default Export File Name
32
- */
33
- readonly fileName: string;
34
- /**
35
- * If true, it will display a loader when needed.
36
- */
37
- readonly loader = false;
38
- /**
39
- * Array with the possible types of KB properties
40
- */
41
- readonly kbPropertiesTypes: KBPropertyType[];
42
- /**
43
- * Array of possible object types
44
- */
45
- readonly objectTypes: ObjectType[];
46
- watchObjectTypesHandler(newState: ObjectType[]): void;
47
- /**
48
- * Callback invoked when the user wants to access the export options.
49
- */
50
- readonly exportFileDirectoryCallback: ExportFileDirectoryCallback;
51
- /**
52
- * Callback invoked when the user wants to access the export options.
53
- */
54
- readonly optionsCallback: OptionsCallback;
14
+ hasObjects: boolean;
15
+ objectsTreeViewModel: TreeViewModel;
16
+ objectsTreeViewModelChanged(newObjectsTreeViewModel: TreeViewModel): void;
55
17
  /**
56
18
  * Callback invoked when the user wants to include KB properties.
57
19
  */
58
20
  readonly addKBPropertiesCallback: KBPropertiesCallback;
21
+ /**
22
+ * Callback invoked when the user wants to add objects.
23
+ */
24
+ readonly addObjectsCallback: AddObjectsCallback;
59
25
  /**
60
26
  *Callback invoked when the user wants to add all the references for the selected objects.
61
27
  *@param itemIds:string[] The selected item ids
@@ -63,9 +29,10 @@ export declare class GxIdeKbManagerExport {
63
29
  */
64
30
  readonly addReferencesCallback: AddReferencesCallback;
65
31
  /**
66
- * Callback invoked when the user wants to add objects.
32
+ * Callback invoked when the user wants to cancel the export process.
33
+ * @returns It returns a boolean indicating whether the process could be canceled or not.
67
34
  */
68
- readonly addObjectsCallback: AddObjectsCallback;
35
+ readonly cancelCallback: CancelCallback;
69
36
  /**
70
37
  *Callback invoked when the user wants to initiate the export process.
71
38
  *@param fileName:string
@@ -74,59 +41,30 @@ export declare class GxIdeKbManagerExport {
74
41
  */
75
42
  readonly exportCallback: ExportCallback;
76
43
  /**
77
- * Callback invoked when the user wants to cancel the export process.
78
- * @returns It returns a boolean indicating whether the process could be canceled or not.
44
+ * Callback invoked when the user wants to access the export options.
79
45
  */
80
- readonly cancelCallback: CancelCallback;
46
+ readonly exportFileDirectoryCallback: ExportFileDirectoryCallback;
47
+ /**
48
+ * It allows defining the default Export File Name
49
+ */
50
+ readonly fileName: string;
81
51
  /**
82
- * This event is emitted once just after the component is fully loaded and the first render() occurs.
52
+ * Array with the possible types of KB properties
83
53
  */
84
- componentDidLoadEvent: EventEmitter<boolean>;
54
+ readonly kbPropertiesTypes: KBPropertyType[];
85
55
  /**
86
- * This event is emitted once just after the component is fully loaded and the first render() occurs
56
+ * If true, it will display a loader when needed.
87
57
  */
88
- componentDidRenderFirstTime: EventEmitter<boolean>;
58
+ readonly loader = false;
59
+ /**
60
+ * Array of possible object types
61
+ */
62
+ readonly objectTypes: ObjectType[];
63
+ objectTypesChanged(newObjectTypesArray: ObjectType[]): void;
64
+ /**
65
+ * Callback invoked when the user wants to access the export options.
66
+ */
67
+ readonly optionsCallback: OptionsCallback;
89
68
  componentWillLoad(): Promise<void>;
90
- componentDidLoad(): void;
91
- componentDidRender(): void;
92
- private evaluateObjects;
93
- private optionsCallbackHandler;
94
- private addKBPropertiesCallbackHandler;
95
- private addObjectsCallbackHandler;
96
- private addReferencesCallbackHandler;
97
- private updateObjects;
98
- private objectsTreeCheckedItemsChangedHandler;
99
- private exportCallbackHandler;
100
- private cancelCallbackHandler;
101
- private clearButtonHandler;
102
- private exportAllChangedHandler;
103
- private flattenObjectTypes;
104
- private evaluateTreeViewFilters;
105
- private evaluateContentToDisplay;
106
- private renderMessage;
107
- private clearButtonDisabledConditions;
108
- private loaderCancelCallbackHandler;
109
- private onClickCancelCallbackHandler;
110
69
  render(): void;
111
70
  }
112
- export type KBPropertiesCallback = () => Promise<KBPropertyData[]>;
113
- export type KBPropertyData = {
114
- typeId: string;
115
- id: string;
116
- name: string;
117
- };
118
- export type KBPropertyType = {
119
- id: string;
120
- icon: string;
121
- };
122
- export type ObjectData = {
123
- typeId: string;
124
- id: string;
125
- name: string;
126
- };
127
- export type ExportFileDirectoryCallback = () => Promise<string>;
128
- export type OptionsCallback = () => Promise<void>;
129
- export type AddObjectsCallback = () => Promise<ObjectData[]>;
130
- export type ExportCallback = (fileName: string, checkedKbPropertiesIds: string[], checkedObjectIds: string[]) => Promise<boolean>;
131
- export type AddReferencesCallback = (objectIds: string[]) => Promise<ObjectData[]>;
132
- export type CancelCallback = () => Promise<boolean>;
@@ -0,0 +1,21 @@
1
+ export type KBPropertiesCallback = () => Promise<KBPropertyData[]>;
2
+ export type KBPropertyData = {
3
+ typeId: string;
4
+ id: string;
5
+ name: string;
6
+ };
7
+ export type KBPropertyType = {
8
+ id: string;
9
+ icon: string;
10
+ };
11
+ export type ObjectData = {
12
+ typeId: string;
13
+ id: string;
14
+ name: string;
15
+ };
16
+ export type ExportFileDirectoryCallback = () => Promise<string>;
17
+ export type OptionsCallback = () => Promise<void>;
18
+ export type AddObjectsCallback = () => Promise<ObjectData[]>;
19
+ export type ExportCallback = (fileName: string, checkedKbPropertiesIds: string[], checkedObjectIds: string[]) => Promise<boolean>;
20
+ export type AddReferencesCallback = (objectIds: string[]) => Promise<ObjectData[]>;
21
+ export type CancelCallback = () => Promise<boolean>;