@genexus/genexus-ide-ui 0.0.101 → 0.0.103

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 (87) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/{gx-ide-container_3.cjs.entry.js → gx-ide-container_2.cjs.entry.js} +3 -42
  3. package/dist/cjs/gx-ide-container_2.cjs.entry.js.map +1 -0
  4. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +53 -8
  5. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-empty-state_2.cjs.entry.js +107 -97
  7. package/dist/cjs/gx-ide-empty-state_2.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-new-object.cjs.entry.js +57 -7
  9. package/dist/cjs/gx-ide-new-object.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-recent-news.cjs.entry.js +113 -0
  11. package/dist/cjs/gx-ide-recent-news.cjs.entry.js.map +1 -0
  12. package/dist/cjs/gxg-list-box_2.cjs.entry.js +9 -0
  13. package/dist/cjs/gxg-list-box_2.cjs.entry.js.map +1 -1
  14. package/dist/cjs/gxg-title-editable.cjs.entry.js +128 -0
  15. package/dist/cjs/gxg-title-editable.cjs.entry.js.map +1 -0
  16. package/dist/cjs/gxg-title.cjs.entry.js +47 -0
  17. package/dist/cjs/gxg-title.cjs.entry.js.map +1 -0
  18. package/dist/cjs/loader.cjs.js +1 -1
  19. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js +4 -4
  20. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js.map +1 -1
  21. package/dist/collection/components/dashboard-home/dashboard-home.css +23 -11
  22. package/dist/collection/components/dashboard-home/dashboard-home.js +75 -9
  23. package/dist/collection/components/dashboard-home/dashboard-home.js.map +1 -1
  24. package/dist/collection/components/dashboard-home/gx-ide-assets/dashboard-home/langs/dashboard-home.lang.en.json +16 -1
  25. package/dist/collection/components/new-object/new-object.js +74 -7
  26. package/dist/collection/components/new-object/new-object.js.map +1 -1
  27. package/dist/components/gx-ide-dashboard-home.js +104 -20
  28. package/dist/components/gx-ide-dashboard-home.js.map +1 -1
  29. package/dist/components/gx-ide-empty-state2.js +4 -4
  30. package/dist/components/gx-ide-empty-state2.js.map +1 -1
  31. package/dist/components/gx-ide-new-object.js +58 -7
  32. package/dist/components/gx-ide-new-object.js.map +1 -1
  33. package/dist/components/list-box.js +12 -1
  34. package/dist/components/list-box.js.map +1 -1
  35. package/dist/esm/genexus-ide-ui.js +1 -1
  36. package/dist/esm/{gx-ide-container_3.entry.js → gx-ide-container_2.entry.js} +4 -42
  37. package/dist/esm/gx-ide-container_2.entry.js.map +1 -0
  38. package/dist/esm/gx-ide-dashboard-home.entry.js +53 -8
  39. package/dist/esm/gx-ide-dashboard-home.entry.js.map +1 -1
  40. package/dist/esm/gx-ide-empty-state_2.entry.js +107 -97
  41. package/dist/esm/gx-ide-empty-state_2.entry.js.map +1 -1
  42. package/dist/esm/gx-ide-new-object.entry.js +57 -7
  43. package/dist/esm/gx-ide-new-object.entry.js.map +1 -1
  44. package/dist/esm/gx-ide-recent-news.entry.js +109 -0
  45. package/dist/esm/gx-ide-recent-news.entry.js.map +1 -0
  46. package/dist/esm/gxg-list-box_2.entry.js +9 -0
  47. package/dist/esm/gxg-list-box_2.entry.js.map +1 -1
  48. package/dist/esm/gxg-title-editable.entry.js +124 -0
  49. package/dist/esm/gxg-title-editable.entry.js.map +1 -0
  50. package/dist/esm/gxg-title.entry.js +43 -0
  51. package/dist/esm/gxg-title.entry.js.map +1 -0
  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/dashboard-home/langs/dashboard-home.lang.en.json +16 -1
  56. package/dist/genexus-ide-ui/{p-1346991a.entry.js → p-01f66e53.entry.js} +93 -39
  57. package/dist/genexus-ide-ui/p-01f66e53.entry.js.map +1 -0
  58. package/dist/genexus-ide-ui/p-3457226c.entry.js +146 -0
  59. package/dist/genexus-ide-ui/p-3457226c.entry.js.map +1 -0
  60. package/dist/genexus-ide-ui/{p-bff2603a.entry.js → p-5270ef52.entry.js} +120 -172
  61. package/dist/genexus-ide-ui/p-5270ef52.entry.js.map +1 -0
  62. package/dist/genexus-ide-ui/{p-40f21d2d.entry.js → p-95cd2572.entry.js} +9 -76
  63. package/dist/genexus-ide-ui/p-95cd2572.entry.js.map +1 -0
  64. package/dist/genexus-ide-ui/{p-4a5ad686.entry.js → p-ac1a72d9.entry.js} +62 -11
  65. package/dist/genexus-ide-ui/p-ac1a72d9.entry.js.map +1 -0
  66. package/dist/genexus-ide-ui/{p-4e155cd5.entry.js → p-bf7c17a8.entry.js} +10 -1
  67. package/dist/genexus-ide-ui/p-bf7c17a8.entry.js.map +1 -0
  68. package/dist/genexus-ide-ui/p-ce89cbcb.entry.js +71 -0
  69. package/dist/genexus-ide-ui/p-ce89cbcb.entry.js.map +1 -0
  70. package/dist/genexus-ide-ui/{p-2e6da0ef.entry.js → p-e9456041.entry.js} +6 -96
  71. package/dist/genexus-ide-ui/p-e9456041.entry.js.map +1 -0
  72. package/dist/types/components/dashboard-home/dashboard-home.d.ts +12 -2
  73. package/dist/types/components/new-object/new-object.d.ts +15 -1
  74. package/dist/types/components.d.ts +18 -2
  75. package/package.json +3 -3
  76. package/dist/cjs/gx-ide-container_3.cjs.entry.js.map +0 -1
  77. package/dist/cjs/gxg-card_2.cjs.entry.js +0 -243
  78. package/dist/cjs/gxg-card_2.cjs.entry.js.map +0 -1
  79. package/dist/esm/gx-ide-container_3.entry.js.map +0 -1
  80. package/dist/esm/gxg-card_2.entry.js +0 -238
  81. package/dist/esm/gxg-card_2.entry.js.map +0 -1
  82. package/dist/genexus-ide-ui/p-1346991a.entry.js.map +0 -1
  83. package/dist/genexus-ide-ui/p-2e6da0ef.entry.js.map +0 -1
  84. package/dist/genexus-ide-ui/p-40f21d2d.entry.js.map +0 -1
  85. package/dist/genexus-ide-ui/p-4a5ad686.entry.js.map +0 -1
  86. package/dist/genexus-ide-ui/p-4e155cd5.entry.js.map +0 -1
  87. package/dist/genexus-ide-ui/p-bff2603a.entry.js.map +0 -1
@@ -1,21 +1,35 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
2
  import { L as Locale } from './locale.js';
3
3
  import { f as formatDate } from './helpers2.js';
4
- import { d as defineCustomElement$8 } from './icon.js';
5
- import { d as defineCustomElement$7 } from './button.js';
6
- import { d as defineCustomElement$6 } from './card.js';
7
- import { d as defineCustomElement$5 } from './icon2.js';
8
- import { d as defineCustomElement$4 } from './pill.js';
9
- import { d as defineCustomElement$3 } from './text.js';
4
+ import { d as defineCustomElement$e } from './icon.js';
5
+ import { d as defineCustomElement$d } from './ch-window2.js';
6
+ import { d as defineCustomElement$c } from './ch-window-close2.js';
7
+ import { d as defineCustomElement$b } from './gx-ide-empty-state2.js';
8
+ import { d as defineCustomElement$a } from './title2.js';
9
+ import { d as defineCustomElement$9 } from './button.js';
10
+ import { d as defineCustomElement$8 } from './card.js';
11
+ import { d as defineCustomElement$7 } from './icon2.js';
12
+ import { d as defineCustomElement$6 } from './ide-loader.js';
13
+ import { d as defineCustomElement$5 } from './pill.js';
14
+ import { d as defineCustomElement$4 } from './text.js';
15
+ import { d as defineCustomElement$3 } from './title.js';
10
16
  import { d as defineCustomElement$2 } from './title-editable.js';
11
17
 
12
- const dashboardHomeCss = ":root {\n --ui-animaton-speed: 0.2s;\n}\n\n/*ALIGNMENT*/\n/*Ellipsis*/\n/*****************************************************\nTYPOGRAPHY\n*****************************************************/\n/*Title 01 (Positive)*/\n.gxg-title-01 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-01-font-weight);\n font-size: var(--ds-title-01-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n/*Title 01 (Negative)*/\n.gxg-title-01--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-01-font-weight);\n font-size: var(--ds-title-01-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Title 02 (Positive)*/\n.gxg-title-02 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-02-font-weight);\n font-size: var(--ds-title-02-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-02--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-02-font-weight);\n font-size: var(--ds-title-02-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--color-on-primary);\n}\n\n/*Title 03*/\n.gxg-title-03 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-03-font-weight);\n font-size: var(--ds-title-03-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-03--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-03-font-weight);\n font-size: var(--ds-title-03-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Title 04*/\n.gxg-title-04 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-04-font-weight);\n font-size: var(--ds-title-04-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-04--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-04-font-weight);\n font-size: var(--ds-title-04-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Title 05*/\n.gxg-title-05 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-05-font-weight);\n font-size: var(--ds-title-05-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-05--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-05-font-weight);\n font-size: var(--ds-title-05-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Text*/\n.gxg-text {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-text--negative {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n.gxg-text--gray {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--dimmed);\n}\n\n/*Quote*/\n.gxg-quote {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n font-style: italic;\n}\n\n.gxg-quote--negative {\n color: var(--ds-base-font-color--negative);\n}\n\n/*Link*/\n.gxg-link {\n line-height: unset;\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--link);\n text-decoration: underline;\n cursor: pointer;\n display: inline-block;\n}\n.gxg-link:hover {\n color: var(--ds-base-font-color--link-hover);\n}\n.gxg-link:active {\n color: var(--ds-base-font-color--link-active);\n}\n\n.gxg-link-gray {\n line-height: unset;\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--link);\n text-decoration: underline;\n cursor: pointer;\n display: inline-block;\n color: var(--ds-base-font-color--dimmed);\n}\n.gxg-link-gray:hover {\n line-height: unset;\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--link);\n text-decoration: underline;\n cursor: pointer;\n display: inline-block;\n color: var(--ds-base-font-color--dimmed);\n filter: brightness(1.4);\n}\n\n/*Alerts*/\n.gxg-alert-error {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--error);\n display: inline-block;\n}\n\n.gxg-alert-warning {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--warning);\n display: inline-block;\n}\n\n.gxg-alert-success {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--success);\n display: inline-block;\n}\n\n/*Tab*/\n.gxg-tab--disabled {\n color: var(--color-primary-disabled);\n pointer-events: none;\n}\n.gxg-tab--disabled[disabled] {\n color: var(--color-primary-disabled);\n pointer-events: none;\n}\n\n/*Label*/\n.gxg-label {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--gxg-label-font-weight);\n font-size: var(--gxg-label-font-size);\n color: var(--gxg-label-color);\n text-align: center;\n line-height: 1.455em;\n display: flex;\n align-items: center;\n}\n.gxg-label:hover {\n color: var(--color-primary-hover);\n}\n.gxg-label:focus {\n color: var(--color-primary-active);\n}\n.gxg-label:active {\n color: var(--color-primary-active);\n}\n.gxg-label[disabled] {\n color: var(--color-primary-disabled);\n}\n\n.gxg-label--negative {\n color: var(--color-on-primary);\n}\n.gxg-label--negative[disabled] {\n color: var(--color-on-disabled);\n}\n\n/*****************************************************\nGXG-BUTTON and GXG-BUTTON-GROUP COMMON STYLES\n*****************************************************/\n/*****************************************************\nFORM ELEMENTS\n*****************************************************/\n.gxg-scrollbar {\n /* Track */\n /* Handle */\n /* Handle on hover */\n}\n.gxg-scrollbar::-webkit-scrollbar {\n width: var(--gxg-scrollbar-width);\n height: var(--gxg-scrollbar-width);\n}\n.gxg-scrollbar::-webkit-scrollbar-track {\n background-color: var(--gxg-scrollbar-track-background);\n border-radius: var(--gxg-scrollbar-track-border-radius);\n}\n.gxg-scrollbar::-webkit-scrollbar-thumb {\n background-color: var(--gxg-scrollbar-track-thumb-background);\n border-radius: var(--gxg-scrollbar-track-thumb-radius);\n}\n.gxg-scrollbar::-webkit-scrollbar-thumb:hover {\n background-color: var(--gxg-scrollbar-track-thumb-hover-background);\n}\n.gxg-scrollbar::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0);\n}\n\n:root {\n --ui-animaton-speed: 0.2s;\n}\n\n/*ALIGNMENT*/\n/*Ellipsis*/\n/*****************************************************\nTYPOGRAPHY\n*****************************************************/\n/*Title 01 (Positive)*/\n.gxg-title-01 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-01-font-weight);\n font-size: var(--ds-title-01-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n/*Title 01 (Negative)*/\n.gxg-title-01--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-01-font-weight);\n font-size: var(--ds-title-01-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Title 02 (Positive)*/\n.gxg-title-02 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-02-font-weight);\n font-size: var(--ds-title-02-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-02--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-02-font-weight);\n font-size: var(--ds-title-02-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--color-on-primary);\n}\n\n/*Title 03*/\n.gxg-title-03 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-03-font-weight);\n font-size: var(--ds-title-03-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-03--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-03-font-weight);\n font-size: var(--ds-title-03-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Title 04*/\n.gxg-title-04 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-04-font-weight);\n font-size: var(--ds-title-04-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-04--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-04-font-weight);\n font-size: var(--ds-title-04-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Title 05*/\n.gxg-title-05 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-05-font-weight);\n font-size: var(--ds-title-05-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-05--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-05-font-weight);\n font-size: var(--ds-title-05-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Text*/\n.gxg-text {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-text--negative {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n.gxg-text--gray {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--dimmed);\n}\n\n/*Quote*/\n.gxg-quote {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n font-style: italic;\n}\n\n.gxg-quote--negative {\n color: var(--ds-base-font-color--negative);\n}\n\n/*Link*/\n.gxg-link {\n line-height: unset;\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--link);\n text-decoration: underline;\n cursor: pointer;\n display: inline-block;\n}\n.gxg-link:hover {\n color: var(--ds-base-font-color--link-hover);\n}\n.gxg-link:active {\n color: var(--ds-base-font-color--link-active);\n}\n\n.gxg-link-gray {\n line-height: unset;\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--link);\n text-decoration: underline;\n cursor: pointer;\n display: inline-block;\n color: var(--ds-base-font-color--dimmed);\n}\n.gxg-link-gray:hover {\n line-height: unset;\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--link);\n text-decoration: underline;\n cursor: pointer;\n display: inline-block;\n color: var(--ds-base-font-color--dimmed);\n filter: brightness(1.4);\n}\n\n/*Alerts*/\n.gxg-alert-error {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--error);\n display: inline-block;\n}\n\n.gxg-alert-warning {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--warning);\n display: inline-block;\n}\n\n.gxg-alert-success {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--success);\n display: inline-block;\n}\n\n/*Tab*/\n.gxg-tab--disabled {\n color: var(--color-primary-disabled);\n pointer-events: none;\n}\n.gxg-tab--disabled[disabled] {\n color: var(--color-primary-disabled);\n pointer-events: none;\n}\n\n/*Label*/\n.gxg-label {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--gxg-label-font-weight);\n font-size: var(--gxg-label-font-size);\n color: var(--gxg-label-color);\n text-align: center;\n line-height: 1.455em;\n display: flex;\n align-items: center;\n}\n.gxg-label:hover {\n color: var(--color-primary-hover);\n}\n.gxg-label:focus {\n color: var(--color-primary-active);\n}\n.gxg-label:active {\n color: var(--color-primary-active);\n}\n.gxg-label[disabled] {\n color: var(--color-primary-disabled);\n}\n\n.gxg-label--negative {\n color: var(--color-on-primary);\n}\n.gxg-label--negative[disabled] {\n color: var(--color-on-disabled);\n}\n\n/*****************************************************\nGXG-BUTTON and GXG-BUTTON-GROUP COMMON STYLES\n*****************************************************/\n/*****************************************************\nFORM ELEMENTS\n*****************************************************/\n.gxg-scrollbar {\n /* Track */\n /* Handle */\n /* Handle on hover */\n}\n.gxg-scrollbar::-webkit-scrollbar {\n width: var(--gxg-scrollbar-width);\n height: var(--gxg-scrollbar-width);\n}\n.gxg-scrollbar::-webkit-scrollbar-track {\n background-color: var(--gxg-scrollbar-track-background);\n border-radius: var(--gxg-scrollbar-track-border-radius);\n}\n.gxg-scrollbar::-webkit-scrollbar-thumb {\n background-color: var(--gxg-scrollbar-track-thumb-background);\n border-radius: var(--gxg-scrollbar-track-thumb-radius);\n}\n.gxg-scrollbar::-webkit-scrollbar-thumb:hover {\n background-color: var(--gxg-scrollbar-track-thumb-hover-background);\n}\n.gxg-scrollbar::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0);\n}\n\n/*Gx Ide*/\n/*@container queries*/\n/* hiChar styles\nFound on /common/helpers.tsx hiChar function is used to add a span/class to every character that matches a search value. It is used to help the user see why the filter results are filtered. The span/class on the characters are useless without proper styling.\n*/\n/* Helper Classes */\n.gxi-hidden {\n display: none !important;\n}\n\n.gxi-full-height {\n height: 100%;\n}\n\n.gxi-overflow-auto {\n overflow: auto;\n}\n\n.gxi-display-flex {\n display: flex;\n}\n\n.align-start {\n display: flex;\n align-items: start;\n}\n\n.align-center {\n display: flex;\n align-items: center;\n}\n\n.align-end {\n display: flex;\n align-items: end;\n}\n\n.overflow-auto {\n overflow: auto;\n}\n\n.justify-start {\n display: flex;\n justify-content: start;\n}\n\n.justify-center {\n display: flex;\n justify-content: center;\n}\n\n.justify-end {\n display: flex;\n justify-content: end;\n}\n\n/* Grids */\n.grid {\n display: grid;\n grid-row-gap: var(--gx-ide-grid-row-gap);\n grid-column-gap: var(--gx-ide-grid-column-gap);\n grid-template-rows: auto;\n}\n\nch-grid-cell {\n display: flex;\n}\n\nch-grid {\n overflow: auto;\n height: 100%;\n}\n\nch-grid-column {\n /*to be removed when this works inside a component with shadow: true*/\n z-index: 99;\n border-bottom: 1px solid var(--mer-color__neutral-gray--800);\n}\n\nch-grid-column:first-child {\n padding-inline-start: var(--gx-ide-container__padding) !important;\n}\n\nch-grid-column:last-child {\n padding-inline-end: var(--gx-ide-container__padding) !important;\n}\n\nch-grid-cell {\n --mer-spacing--xs: var(--gx-ide-container__padding);\n}\n\n/*--- Layout ---*/\n.layout {\n display: grid;\n gap: var(--mer-spacing--lg);\n box-sizing: border-box;\n}\n.layout--two-cols {\n grid-template-columns: 1fr 1fr;\n}\n.layout--space-above {\n padding-block-start: var(--mer-spacing--lg);\n}\n\n/*Gxg Tabs*/\ngxg-tabs {\n box-shadow: none;\n}\n\n/*All components Host should have this class set. !important is set on every rule, since this styles could be overridden by the host user, since they are applied on the host component*/\n:host(.gx-ide-component) {\n height: 100% !important;\n display: flex !important;\n flex-direction: column !important;\n}\n\n/*stylize the top bar*/\n:host(:focus-within) gx-ide-top-bar::part(wrapper) {\n background-color: var(--color-secondary-enabled);\n}\n\n/* Main wrapper (should be the first element inside the host. Everything should be inside .gx-ide-main-wrapper) */\n.gx-ide-main-wrapper {\n color: var(--gx-ide-component-text-color);\n font-weight: var(--mer-font__weight--regular);\n font-size: var(--mer-font__size--xs);\n font-family: var(--mer-font-family--primary);\n height: 100%;\n background-color: var(--gx-ide-component-background-color);\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n box-sizing: border-box;\n}\n\n/*This is the main element. This is the one that take the remaining vertical space*/\n.gx-ide-main {\n flex-grow: 1;\n overflow-y: auto;\n /* Track */\n /* Handle */\n /* Handle on hover */\n}\n.gx-ide-main::-webkit-scrollbar {\n width: var(--gxg-scrollbar-width);\n height: var(--gxg-scrollbar-width);\n}\n.gx-ide-main::-webkit-scrollbar-track {\n background-color: var(--gxg-scrollbar-track-background);\n border-radius: var(--gxg-scrollbar-track-border-radius);\n}\n.gx-ide-main::-webkit-scrollbar-thumb {\n background-color: var(--gxg-scrollbar-track-thumb-background);\n border-radius: var(--gxg-scrollbar-track-thumb-radius);\n}\n.gx-ide-main::-webkit-scrollbar-thumb:hover {\n background-color: var(--gxg-scrollbar-track-thumb-hover-background);\n}\n.gx-ide-main::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0);\n}\n\n.gx-ide-overflow {\n overflow-y: auto;\n /* Track */\n /* Handle */\n /* Handle on hover */\n}\n.gx-ide-overflow::-webkit-scrollbar {\n width: var(--gxg-scrollbar-width);\n height: var(--gxg-scrollbar-width);\n}\n.gx-ide-overflow::-webkit-scrollbar-track {\n background-color: var(--gxg-scrollbar-track-background);\n border-radius: var(--gxg-scrollbar-track-border-radius);\n}\n.gx-ide-overflow::-webkit-scrollbar-thumb {\n background-color: var(--gxg-scrollbar-track-thumb-background);\n border-radius: var(--gxg-scrollbar-track-thumb-radius);\n}\n.gx-ide-overflow::-webkit-scrollbar-thumb:hover {\n background-color: var(--gxg-scrollbar-track-thumb-hover-background);\n}\n.gx-ide-overflow::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0);\n}\n\n/*gxg-tree-view*/\n.tree-container {\n display: flex;\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n}\n\n/*Gx Ide*/\n/*@container queries*/\n/* hiChar styles\nFound on /common/helpers.tsx hiChar function is used to add a span/class to every character that matches a search value. It is used to help the user see why the filter results are filtered. The span/class on the characters are useless without proper styling.\n*/\n:host {\n display: block;\n height: 100%;\n overflow: auto;\n}\n\n:host,\n.gx-ide-main-wrapper,\n.grid--basic,\n.project,\n.recent-objects {\n height: 100%;\n overflow: auto;\n}\n\n.gx-ide-main-wrapper {\n container-name: dashboard-main-wrapper;\n container-type: inline-size;\n}\n\n.kb {\n grid-area: kb;\n align-self: center;\n}\n.kb .version-pill {\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.kb .kb-detail {\n display: flex;\n flex-direction: column;\n align-items: start;\n flex-wrap: wrap;\n margin-block-start: var(--mer-spacing--md);\n gap: var(--mer-spacing--md);\n}\n.kb .kb-detail .display-inline {\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n font-style: italic;\n opacity: 0.5;\n}\n\n.environment {\n grid-area: environment;\n}\n.environment__environments {\n padding-block-end: var(--gx-ide-grid-column-gap);\n display: flex;\n flex-direction: row;\n gap: var(--gx-ide-grid-column-gap);\n /* Track */\n /* Handle */\n /* Handle on hover */\n overflow-x: auto;\n}\n.environment__environments::-webkit-scrollbar {\n width: var(--gxg-scrollbar-width);\n height: var(--gxg-scrollbar-width);\n}\n.environment__environments::-webkit-scrollbar-track {\n background-color: var(--gxg-scrollbar-track-background);\n border-radius: var(--gxg-scrollbar-track-border-radius);\n}\n.environment__environments::-webkit-scrollbar-thumb {\n background-color: var(--gxg-scrollbar-track-thumb-background);\n border-radius: var(--gxg-scrollbar-track-thumb-radius);\n}\n.environment__environments::-webkit-scrollbar-thumb:hover {\n background-color: var(--gxg-scrollbar-track-thumb-hover-background);\n}\n.environment__environments::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0);\n}\n.environment__environments .environment-card {\n min-width: 180px;\n flex-grow: 1;\n}\n.environment__environments .environment-container {\n display: flex;\n flex-direction: column;\n gap: var(--gx-ide-cards-vertical-spacing);\n}\n.environment__environments .environment-item {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--xxs);\n}\n\n.environment-title {\n margin-block-end: var(--mer-spacing--xs);\n display: block;\n}\n\n.project {\n grid-area: project;\n}\n.project .project-buttons {\n margin-block-start: var(--mer-spacing--md);\n gap: var(--mer-spacing--md);\n}\n.project .project-description > *:first-child {\n margin-block-start: 0;\n}\n.project .project-description > *:last-child {\n margin-block-end: 0;\n}\n\n.recent-objects {\n grid-area: recent-objects;\n}\n.recent-objects .recent-objects-card {\n margin-block-end: var(--gx-ide-cards-vertical-spacing);\n}\n.recent-objects .recent-objects-card:last-child {\n margin-block-end: 0;\n}\n.recent-objects .recent-objects-card .grid--recent-objects {\n flex-grow: 1;\n grid-template-columns: 1fr 10fr 12fr 1fr;\n gap: var(--gx-ide-cards-horizontal-spacing);\n height: 100%;\n align-items: center;\n}\n.recent-objects .recent-objects-card .grid--recent-objects .obj-name {\n color: var(--gray-06);\n}\n\n.grid--basic {\n flex-grow: 1;\n grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n gap: var(--mer-spacing--xl);\n grid-template-areas: \"kb environment\" \"project recent-objects\";\n grid-template-rows: auto 1fr;\n}\n\n@container (width < 768px) {\n .grid--basic {\n grid-template-rows: auto auto auto;\n grid-template-areas: \"kb environment\" \"project project\" \"recent-objects recent-objects\";\n }\n}\ngxg-title-editable {\n width: 100%;\n}\n\ngx-ide-card {\n height: 100%;\n}";
18
+ const dashboardHomeCss = ":root {\n --ui-animaton-speed: 0.2s;\n}\n\n/*ALIGNMENT*/\n/*Ellipsis*/\n/*****************************************************\nTYPOGRAPHY\n*****************************************************/\n/*Title 01 (Positive)*/\n.gxg-title-01 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-01-font-weight);\n font-size: var(--ds-title-01-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n/*Title 01 (Negative)*/\n.gxg-title-01--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-01-font-weight);\n font-size: var(--ds-title-01-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Title 02 (Positive)*/\n.gxg-title-02 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-02-font-weight);\n font-size: var(--ds-title-02-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-02--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-02-font-weight);\n font-size: var(--ds-title-02-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--color-on-primary);\n}\n\n/*Title 03*/\n.gxg-title-03 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-03-font-weight);\n font-size: var(--ds-title-03-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-03--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-03-font-weight);\n font-size: var(--ds-title-03-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Title 04*/\n.gxg-title-04 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-04-font-weight);\n font-size: var(--ds-title-04-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-04--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-04-font-weight);\n font-size: var(--ds-title-04-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Title 05*/\n.gxg-title-05 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-05-font-weight);\n font-size: var(--ds-title-05-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-05--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-05-font-weight);\n font-size: var(--ds-title-05-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Text*/\n.gxg-text {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-text--negative {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n.gxg-text--gray {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--dimmed);\n}\n\n/*Quote*/\n.gxg-quote {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n font-style: italic;\n}\n\n.gxg-quote--negative {\n color: var(--ds-base-font-color--negative);\n}\n\n/*Link*/\n.gxg-link {\n line-height: unset;\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--link);\n text-decoration: underline;\n cursor: pointer;\n display: inline-block;\n}\n.gxg-link:hover {\n color: var(--ds-base-font-color--link-hover);\n}\n.gxg-link:active {\n color: var(--ds-base-font-color--link-active);\n}\n\n.gxg-link-gray {\n line-height: unset;\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--link);\n text-decoration: underline;\n cursor: pointer;\n display: inline-block;\n color: var(--ds-base-font-color--dimmed);\n}\n.gxg-link-gray:hover {\n line-height: unset;\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--link);\n text-decoration: underline;\n cursor: pointer;\n display: inline-block;\n color: var(--ds-base-font-color--dimmed);\n filter: brightness(1.4);\n}\n\n/*Alerts*/\n.gxg-alert-error {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--error);\n display: inline-block;\n}\n\n.gxg-alert-warning {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--warning);\n display: inline-block;\n}\n\n.gxg-alert-success {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--success);\n display: inline-block;\n}\n\n/*Tab*/\n.gxg-tab--disabled {\n color: var(--color-primary-disabled);\n pointer-events: none;\n}\n.gxg-tab--disabled[disabled] {\n color: var(--color-primary-disabled);\n pointer-events: none;\n}\n\n/*Label*/\n.gxg-label {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--gxg-label-font-weight);\n font-size: var(--gxg-label-font-size);\n color: var(--gxg-label-color);\n text-align: center;\n line-height: 1.455em;\n display: flex;\n align-items: center;\n}\n.gxg-label:hover {\n color: var(--color-primary-hover);\n}\n.gxg-label:focus {\n color: var(--color-primary-active);\n}\n.gxg-label:active {\n color: var(--color-primary-active);\n}\n.gxg-label[disabled] {\n color: var(--color-primary-disabled);\n}\n\n.gxg-label--negative {\n color: var(--color-on-primary);\n}\n.gxg-label--negative[disabled] {\n color: var(--color-on-disabled);\n}\n\n/*****************************************************\nGXG-BUTTON and GXG-BUTTON-GROUP COMMON STYLES\n*****************************************************/\n/*****************************************************\nFORM ELEMENTS\n*****************************************************/\n.gxg-scrollbar {\n /* Track */\n /* Handle */\n /* Handle on hover */\n}\n.gxg-scrollbar::-webkit-scrollbar {\n width: var(--gxg-scrollbar-width);\n height: var(--gxg-scrollbar-width);\n}\n.gxg-scrollbar::-webkit-scrollbar-track {\n background-color: var(--gxg-scrollbar-track-background);\n border-radius: var(--gxg-scrollbar-track-border-radius);\n}\n.gxg-scrollbar::-webkit-scrollbar-thumb {\n background-color: var(--gxg-scrollbar-track-thumb-background);\n border-radius: var(--gxg-scrollbar-track-thumb-radius);\n}\n.gxg-scrollbar::-webkit-scrollbar-thumb:hover {\n background-color: var(--gxg-scrollbar-track-thumb-hover-background);\n}\n.gxg-scrollbar::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0);\n}\n\n:root {\n --ui-animaton-speed: 0.2s;\n}\n\n/*ALIGNMENT*/\n/*Ellipsis*/\n/*****************************************************\nTYPOGRAPHY\n*****************************************************/\n/*Title 01 (Positive)*/\n.gxg-title-01 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-01-font-weight);\n font-size: var(--ds-title-01-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n/*Title 01 (Negative)*/\n.gxg-title-01--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-01-font-weight);\n font-size: var(--ds-title-01-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Title 02 (Positive)*/\n.gxg-title-02 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-02-font-weight);\n font-size: var(--ds-title-02-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-02--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-02-font-weight);\n font-size: var(--ds-title-02-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--color-on-primary);\n}\n\n/*Title 03*/\n.gxg-title-03 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-03-font-weight);\n font-size: var(--ds-title-03-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-03--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-03-font-weight);\n font-size: var(--ds-title-03-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n text-transform: uppercase;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Title 04*/\n.gxg-title-04 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-04-font-weight);\n font-size: var(--ds-title-04-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-04--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-04-font-weight);\n font-size: var(--ds-title-04-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--comfortable);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Title 05*/\n.gxg-title-05 {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-05-font-weight);\n font-size: var(--ds-title-05-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-title-05--negative {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--ds-title-05-font-weight);\n font-size: var(--ds-title-05-font-size);\n letter-spacing: var(--ds-base-font-letter-spacing--regular);\n color: var(--ds-base-font-color);\n text-align: start;\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n/*Text*/\n.gxg-text {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n}\n\n.gxg-text--negative {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--negative);\n}\n\n.gxg-text--gray {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--dimmed);\n}\n\n/*Quote*/\n.gxg-quote {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n font-style: italic;\n}\n\n.gxg-quote--negative {\n color: var(--ds-base-font-color--negative);\n}\n\n/*Link*/\n.gxg-link {\n line-height: unset;\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--link);\n text-decoration: underline;\n cursor: pointer;\n display: inline-block;\n}\n.gxg-link:hover {\n color: var(--ds-base-font-color--link-hover);\n}\n.gxg-link:active {\n color: var(--ds-base-font-color--link-active);\n}\n\n.gxg-link-gray {\n line-height: unset;\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--link);\n text-decoration: underline;\n cursor: pointer;\n display: inline-block;\n color: var(--ds-base-font-color--dimmed);\n}\n.gxg-link-gray:hover {\n line-height: unset;\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--link);\n text-decoration: underline;\n cursor: pointer;\n display: inline-block;\n color: var(--ds-base-font-color--dimmed);\n filter: brightness(1.4);\n}\n\n/*Alerts*/\n.gxg-alert-error {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--error);\n display: inline-block;\n}\n\n.gxg-alert-warning {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--warning);\n display: inline-block;\n}\n\n.gxg-alert-success {\n font-family: var(--ds-base-font-family-primary);\n font-size: var(--ds-base-font-size);\n color: var(--ds-base-font-size-color);\n font-weight: var(--ds-base-font-size-weight);\n line-height: var(--ds-base-font-line-height--comfortable);\n color: var(--ds-base-font-color--success);\n display: inline-block;\n}\n\n/*Tab*/\n.gxg-tab--disabled {\n color: var(--color-primary-disabled);\n pointer-events: none;\n}\n.gxg-tab--disabled[disabled] {\n color: var(--color-primary-disabled);\n pointer-events: none;\n}\n\n/*Label*/\n.gxg-label {\n font-family: var(--ds-base-font-family-primary);\n font-weight: var(--gxg-label-font-weight);\n font-size: var(--gxg-label-font-size);\n color: var(--gxg-label-color);\n text-align: center;\n line-height: 1.455em;\n display: flex;\n align-items: center;\n}\n.gxg-label:hover {\n color: var(--color-primary-hover);\n}\n.gxg-label:focus {\n color: var(--color-primary-active);\n}\n.gxg-label:active {\n color: var(--color-primary-active);\n}\n.gxg-label[disabled] {\n color: var(--color-primary-disabled);\n}\n\n.gxg-label--negative {\n color: var(--color-on-primary);\n}\n.gxg-label--negative[disabled] {\n color: var(--color-on-disabled);\n}\n\n/*****************************************************\nGXG-BUTTON and GXG-BUTTON-GROUP COMMON STYLES\n*****************************************************/\n/*****************************************************\nFORM ELEMENTS\n*****************************************************/\n.gxg-scrollbar {\n /* Track */\n /* Handle */\n /* Handle on hover */\n}\n.gxg-scrollbar::-webkit-scrollbar {\n width: var(--gxg-scrollbar-width);\n height: var(--gxg-scrollbar-width);\n}\n.gxg-scrollbar::-webkit-scrollbar-track {\n background-color: var(--gxg-scrollbar-track-background);\n border-radius: var(--gxg-scrollbar-track-border-radius);\n}\n.gxg-scrollbar::-webkit-scrollbar-thumb {\n background-color: var(--gxg-scrollbar-track-thumb-background);\n border-radius: var(--gxg-scrollbar-track-thumb-radius);\n}\n.gxg-scrollbar::-webkit-scrollbar-thumb:hover {\n background-color: var(--gxg-scrollbar-track-thumb-hover-background);\n}\n.gxg-scrollbar::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0);\n}\n\n/*Gx Ide*/\n/*@container queries*/\n/* hiChar styles\nFound on /common/helpers.tsx hiChar function is used to add a span/class to every character that matches a search value. It is used to help the user see why the filter results are filtered. The span/class on the characters are useless without proper styling.\n*/\n/* Helper Classes */\n.gxi-hidden {\n display: none !important;\n}\n\n.gxi-full-height {\n height: 100%;\n}\n\n.gxi-overflow-auto {\n overflow: auto;\n}\n\n.gxi-display-flex {\n display: flex;\n}\n\n.align-start {\n display: flex;\n align-items: start;\n}\n\n.align-center {\n display: flex;\n align-items: center;\n}\n\n.align-end {\n display: flex;\n align-items: end;\n}\n\n.overflow-auto {\n overflow: auto;\n}\n\n.justify-start {\n display: flex;\n justify-content: start;\n}\n\n.justify-center {\n display: flex;\n justify-content: center;\n}\n\n.justify-end {\n display: flex;\n justify-content: end;\n}\n\n/* Grids */\n.grid {\n display: grid;\n grid-row-gap: var(--gx-ide-grid-row-gap);\n grid-column-gap: var(--gx-ide-grid-column-gap);\n grid-template-rows: auto;\n}\n\nch-grid-cell {\n display: flex;\n}\n\nch-grid {\n overflow: auto;\n height: 100%;\n}\n\nch-grid-column {\n /*to be removed when this works inside a component with shadow: true*/\n z-index: 99;\n border-bottom: 1px solid var(--mer-color__neutral-gray--800);\n}\n\nch-grid-column:first-child {\n padding-inline-start: var(--gx-ide-container__padding) !important;\n}\n\nch-grid-column:last-child {\n padding-inline-end: var(--gx-ide-container__padding) !important;\n}\n\nch-grid-cell {\n --mer-spacing--xs: var(--gx-ide-container__padding);\n}\n\n/*--- Layout ---*/\n.layout {\n display: grid;\n gap: var(--mer-spacing--lg);\n box-sizing: border-box;\n}\n.layout--two-cols {\n grid-template-columns: 1fr 1fr;\n}\n.layout--space-above {\n padding-block-start: var(--mer-spacing--lg);\n}\n\n/*Gxg Tabs*/\ngxg-tabs {\n box-shadow: none;\n}\n\n/*All components Host should have this class set. !important is set on every rule, since this styles could be overridden by the host user, since they are applied on the host component*/\n:host(.gx-ide-component) {\n height: 100% !important;\n display: flex !important;\n flex-direction: column !important;\n}\n\n/*stylize the top bar*/\n:host(:focus-within) gx-ide-top-bar::part(wrapper) {\n background-color: var(--color-secondary-enabled);\n}\n\n/* Main wrapper (should be the first element inside the host. Everything should be inside .gx-ide-main-wrapper) */\n.gx-ide-main-wrapper {\n color: var(--gx-ide-component-text-color);\n font-weight: var(--mer-font__weight--regular);\n font-size: var(--mer-font__size--xs);\n font-family: var(--mer-font-family--primary);\n height: 100%;\n background-color: var(--gx-ide-component-background-color);\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n box-sizing: border-box;\n}\n\n/*This is the main element. This is the one that take the remaining vertical space*/\n.gx-ide-main {\n flex-grow: 1;\n overflow-y: auto;\n /* Track */\n /* Handle */\n /* Handle on hover */\n}\n.gx-ide-main::-webkit-scrollbar {\n width: var(--gxg-scrollbar-width);\n height: var(--gxg-scrollbar-width);\n}\n.gx-ide-main::-webkit-scrollbar-track {\n background-color: var(--gxg-scrollbar-track-background);\n border-radius: var(--gxg-scrollbar-track-border-radius);\n}\n.gx-ide-main::-webkit-scrollbar-thumb {\n background-color: var(--gxg-scrollbar-track-thumb-background);\n border-radius: var(--gxg-scrollbar-track-thumb-radius);\n}\n.gx-ide-main::-webkit-scrollbar-thumb:hover {\n background-color: var(--gxg-scrollbar-track-thumb-hover-background);\n}\n.gx-ide-main::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0);\n}\n\n.gx-ide-overflow {\n overflow-y: auto;\n /* Track */\n /* Handle */\n /* Handle on hover */\n}\n.gx-ide-overflow::-webkit-scrollbar {\n width: var(--gxg-scrollbar-width);\n height: var(--gxg-scrollbar-width);\n}\n.gx-ide-overflow::-webkit-scrollbar-track {\n background-color: var(--gxg-scrollbar-track-background);\n border-radius: var(--gxg-scrollbar-track-border-radius);\n}\n.gx-ide-overflow::-webkit-scrollbar-thumb {\n background-color: var(--gxg-scrollbar-track-thumb-background);\n border-radius: var(--gxg-scrollbar-track-thumb-radius);\n}\n.gx-ide-overflow::-webkit-scrollbar-thumb:hover {\n background-color: var(--gxg-scrollbar-track-thumb-hover-background);\n}\n.gx-ide-overflow::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0);\n}\n\n/*gxg-tree-view*/\n.tree-container {\n display: flex;\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n}\n\n/*Gx Ide*/\n/*@container queries*/\n/* hiChar styles\nFound on /common/helpers.tsx hiChar function is used to add a span/class to every character that matches a search value. It is used to help the user see why the filter results are filtered. The span/class on the characters are useless without proper styling.\n*/\n:host {\n display: block;\n height: 100%;\n overflow: auto;\n margin: var(--mer-spacing--lg);\n}\n\n:host,\n.gx-ide-main-wrapper,\n.grid--basic,\n.project,\n.recent-objects {\n height: 100%;\n overflow: auto;\n}\n\n.gx-ide-main-wrapper {\n container-name: dashboard-main-wrapper;\n container-type: inline-size;\n}\n\n.kb {\n grid-area: kb;\n align-self: center;\n}\n.kb .version-pill {\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.kb .kb-detail {\n display: flex;\n flex-direction: column;\n align-items: start;\n flex-wrap: wrap;\n margin-block-start: var(--mer-spacing--md);\n gap: var(--mer-spacing--md);\n}\n.kb .kb-detail .display-inline {\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n font-style: italic;\n opacity: 0.5;\n}\n\n.environment {\n grid-area: environment;\n}\n.environment__environments {\n padding-block-end: var(--gx-ide-grid-column-gap);\n display: flex;\n flex-direction: row;\n gap: var(--gx-ide-grid-column-gap);\n /* Track */\n /* Handle */\n /* Handle on hover */\n overflow-x: auto;\n}\n.environment__environments::-webkit-scrollbar {\n width: var(--gxg-scrollbar-width);\n height: var(--gxg-scrollbar-width);\n}\n.environment__environments::-webkit-scrollbar-track {\n background-color: var(--gxg-scrollbar-track-background);\n border-radius: var(--gxg-scrollbar-track-border-radius);\n}\n.environment__environments::-webkit-scrollbar-thumb {\n background-color: var(--gxg-scrollbar-track-thumb-background);\n border-radius: var(--gxg-scrollbar-track-thumb-radius);\n}\n.environment__environments::-webkit-scrollbar-thumb:hover {\n background-color: var(--gxg-scrollbar-track-thumb-hover-background);\n}\n.environment__environments::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0);\n}\n.environment__environments .environment-card {\n min-width: 180px;\n flex-grow: 1;\n}\n.environment__environments .environment-container {\n display: flex;\n flex-direction: column;\n gap: var(--gx-ide-cards-vertical-spacing);\n}\n.environment__environments .environment-item {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--xxs);\n}\n\n.environment-title {\n margin-block-end: var(--mer-spacing--xs);\n display: block;\n}\n\n.project {\n grid-area: project;\n}\n.project .project-buttons {\n margin-block-start: var(--mer-spacing--md);\n gap: var(--mer-spacing--md);\n}\n.project .project-description > *:first-child {\n margin-block-start: 0;\n}\n.project .project-description > *:last-child {\n margin-block-end: 0;\n}\n\n.recent-objects {\n grid-area: recent-objects;\n}\n.recent-objects__container {\n height: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--gx-ide-cards-vertical-spacing);\n}\n.recent-objects__object {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--gx-ide-cards-horizontal-spacing);\n}\n.recent-objects__object .obj-name {\n color: var(--gray-06);\n}\n.recent-objects__object .col {\n display: flex;\n gap: var(--gx-ide-cards-horizontal-spacing);\n}\n.recent-objects__empty-state {\n height: 100%;\n}\n\n.grid--basic {\n flex-grow: 1;\n grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n gap: var(--mer-spacing--xl);\n grid-template-areas: \"kb environment\" \"project recent-objects\";\n grid-template-rows: auto 1fr;\n}\n\n@container (width < 768px) {\n .grid--basic {\n grid-template-rows: auto auto auto;\n grid-template-areas: \"kb environment\" \"project project\" \"recent-objects recent-objects\";\n }\n}\ngxg-title-editable {\n width: 100%;\n}\n\ngx-ide-card {\n height: 100%;\n}\n\ngxg-ide-loader::part(loader-wrapper) {\n border: var(--mer-elevation__border-01);\n border-radius: var(--gxg-card-section_border-radius);\n}";
13
19
 
14
20
  const mapStatusToIcons = {
15
- new: "gx-server/new",
16
- modified: "patterns-default-associated/modified",
17
- conflicted: "patterns-default-associated/synchronized",
18
- unmodified: "gx-server/delete"
21
+ "new": "gx-server/new",
22
+ "modified": "patterns-default-associated/modified",
23
+ "conflicted": "patterns-default-associated/synchronized",
24
+ "unmodified": null,
25
+ "not-connected": null
26
+ };
27
+ const mapStatusToLocale = {
28
+ "new": "new",
29
+ "modified": "modified",
30
+ "conflicted": "conflicted",
31
+ "unmodified": "unmodified",
32
+ "not-connected": "notConnected"
19
33
  };
20
34
  const GxIdeDashboardHome$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeDashboardHome extends HTMLElement {
21
35
  constructor() {
@@ -27,6 +41,12 @@ const GxIdeDashboardHome$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeDashboa
27
41
  // 7.LISTENERS //
28
42
  // 8.PUBLIC METHODS API //
29
43
  // 9.LOCAL METHODS //
44
+ this.evaluateLoader = () => {
45
+ if (this.recentObjects === undefined) {
46
+ this.loaderEl.container = this.recentObjectsContainerEl;
47
+ this.loaderEl.show = true;
48
+ }
49
+ };
30
50
  // Kb Name
31
51
  this.handleKbNameChange = async (updatedTitle) => {
32
52
  const updatedKbName = updatedTitle.detail;
@@ -74,7 +94,7 @@ const GxIdeDashboardHome$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeDashboa
74
94
  };
75
95
  // 10.RENDER() FUNCTIONS //
76
96
  this.renderProjectContent = () => {
77
- return this.projectDescription ? (h("div", { class: "project-description", innerHTML: this.projectDescription }, h("gxg-button", { type: "secondary-text-icon", icon: "gemini-tools/edit", onClick: this.handleDescriptionChange }, this._componentLocale.edit))) : null;
97
+ return this.projectDescription ? (h("div", { class: "project-description", innerHTML: this.projectDescription }, this.enableEditDescription ? (h("gxg-button", { type: "secondary-text-icon", icon: "gemini-tools/edit", onClick: this.handleDescriptionChange }, this._componentLocale.edit)) : null)) : null;
78
98
  };
79
99
  this.editingEnvName = false;
80
100
  this.editingProjectDescription = false;
@@ -83,16 +103,25 @@ const GxIdeDashboardHome$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeDashboa
83
103
  this.environment = undefined;
84
104
  this.enableEditEnvironmentName = false;
85
105
  this.projectDescription = undefined;
106
+ this.enableEditDescription = false;
86
107
  this.recentObjects = undefined;
87
108
  this.renameKBCallback = undefined;
88
109
  this.renameEnvironmentCallback = undefined;
89
110
  this.editDescriptionCallback = undefined;
90
111
  this.openObjectCallback = undefined;
91
112
  }
113
+ recentObjectsHandler(newRecentObjects) {
114
+ if (newRecentObjects) {
115
+ this.loaderEl.show = false;
116
+ }
117
+ }
92
118
  // 6.COMPONENT LIFECYCLE METHODS //
93
119
  async componentWillLoad() {
94
120
  this._componentLocale = await Locale.getComponentStrings(this.el);
95
121
  }
122
+ componentDidLoad() {
123
+ this.evaluateLoader();
124
+ }
96
125
  componentDidRender() {
97
126
  if (!this.renderedFirstTime) {
98
127
  this.componentDidRenderFirstTime.emit(this._componentLocale.componentName);
@@ -104,18 +133,40 @@ const GxIdeDashboardHome$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeDashboa
104
133
  ? this._componentLocale.environment.frontEndLang
105
134
  : this._componentLocale.environment.frontEndLangs;
106
135
  }
136
+ renderKbDates() {
137
+ return this.kb.created || this.kb.lastBuild ? (h("gxg-text", { class: "display-inline", type: "text-gray", padding: "s" },
138
+ /* created*/
139
+ this.kb.created
140
+ ? `${this._componentLocale.created}: ${formatDate(this.kb.created, "date-time-short")}`
141
+ : null, this.kb.created && this.kb.lastBuild ? " - " : null,
142
+ /* last build date */
143
+ this.kb.lastBuild
144
+ ? `${this._componentLocale.lastBuild}: ${formatDate(this.kb.lastBuild, "date-time-short")}`
145
+ : null)) : null;
146
+ }
107
147
  // 11.RENDER() MAIN FUNCTION //
108
148
  render() {
109
- return (h(Host, null, h("div", { class: "gx-ide-main-wrapper" }, h("div", { class: "grid grid--basic" }, h("div", { class: "kb gxi-overflow-auto" }, h("gxg-title-editable", { value: this.kb.name, "disable-edition": !this.enableEditKBName, "click-to-edit": true, fluid: true, onValueChanged: this.handleKbNameChange, focusType: "text", debounce: true, ref: el => (this.kbNameEl = el) }), h("div", { class: "align-center kb-detail" }, h("gxg-pill", { id: "pill", type: "static", icon: "objects/procedure" }, this._componentLocale.version, ": ", this.kb.currentVersion), h("gxg-text", { class: "display-inline", type: "text-gray", padding: "s" }, this._componentLocale.created, ":", " ", formatDate(this.kb.created, "date-time-short"), " -", " ", this._componentLocale.lastBuild, ":", " ", formatDate(this.kb.lastBuild, "date-time-short")))), h("div", { class: "environment" }, h("gxg-title-editable", { class: "environment-title", value: this.environment.name, "disable-edition": !this.enableEditEnvironmentName, "click-to-edit": true, "title-type": "h3", ref: el => (this.envNameEl = el), onValueChanged: this.handleEnvNameChange, focusType: "text", debounce: true }), h("div", { class: "environment__environments" }, h("gxg-card", { cardType: "mini", class: "environment-card", cardTitle: this.renderFrontEndTitle() }, h("div", { class: "environment-container" }, this.environment.frontEnd.map((obj) => (h("div", { class: "environment-item" }, h("gxg-icon", { type: obj.icon, color: "onbackground", style: {
149
+ var _a, _b, _c, _d;
150
+ return (h(Host, null, h("div", { class: "gx-ide-main-wrapper" }, h("div", { class: "grid grid--basic" }, h("div", { class: "kb gxi-overflow-auto" }, h("gxg-title-editable", { value: this.kb.name, "disable-edition": !this.enableEditKBName, "click-to-edit": true, fluid: true, onValueChanged: this.handleKbNameChange, focusType: "text", debounce: true, ref: el => (this.kbNameEl = el) }), h("div", { class: "align-center kb-detail" }, h("gxg-pill", { id: "pill", type: "static", icon: "objects/procedure" }, this._componentLocale.version, ": ", this.kb.currentVersion), this.renderKbDates())), h("div", { class: "environment" }, h("gxg-title-editable", { class: "environment-title", value: this.environment.name, "disable-edition": !this.enableEditEnvironmentName, "click-to-edit": true, "title-type": "h3", ref: el => (this.envNameEl = el), onValueChanged: this.handleEnvNameChange, focusType: "text", debounce: true }), h("div", { class: "environment__environments" }, h("gxg-card", { cardType: "mini", class: "environment-card", cardTitle: this.renderFrontEndTitle() }, h("div", { class: "environment-container" }, (_b = (_a = this.environment) === null || _a === void 0 ? void 0 : _a.frontEnd) === null || _b === void 0 ? void 0 : _b.map((obj) => (h("div", { class: "environment-item" }, h("gxg-icon", { type: obj.icon, color: "onbackground", style: {
110
151
  "--mer-text__on-surface": "var(--gray-05);"
111
152
  } }), obj.name))))), h("gxg-card", { cardType: "mini", class: "environment-card", cardTitle: this._componentLocale.environment.backEnd }, h("div", { class: "environment-container" }, h("div", { class: "environment-item" }, h("gxg-icon", { type: this.environment.backEnd.icon, color: "onbackground", style: {
112
153
  "--mer-text__on-surface": "var(--gray-05);"
113
154
  } }), this.environment.backEnd.name))), h("gxg-card", { cardType: "mini", class: "environment-card", cardTitle: this._componentLocale.environment.dataStore }, h("div", { class: "environment-container" }, h("div", { class: "environment-item" }, h("gxg-icon", { type: this.environment.dataStore.icon, color: "onbackground", style: {
114
155
  "--mer-text__on-surface": "var(--gray-05);"
115
- } }), this.environment.dataStore.name))))), h("gxg-card", { editableTitle: false, cardTitle: this._componentLocale.project.title, class: "project" }, this.renderProjectContent()), h("gxg-card", { editableTitle: false, cardTitle: this._componentLocale.recent.title, class: "recent-objects", cardType: "section", "no-padding-top": true }, this.recentObjects.map((obj, index) => (h("gxg-card", { background: "gray-01", padding: "m", cardType: "article", class: "recent-objects-card", actionable: true, onClick: () => this.openObject(index) }, h("div", { class: "grid grid--recent-objects" }, h("gxg-icon", { type: obj.typeIcon, color: "auto" }), h("gxg-text", { type: "text-regular", class: "obj-name" }, obj.name), h("gxg-text", { italic: true, class: "justify-end" }, this._componentLocale.recent.modified, ":", " ", `${formatDate(obj.modificationDate, "date")}`), h("div", { class: " justify-end" }, h("gxg-icon", { type: mapStatusToIcons[obj.status], color: "auto" })))))))))));
156
+ } }), this.environment.dataStore.name))))), h("gxg-card", { editableTitle: false, cardTitle: this._componentLocale.project.title, class: "project" }, this.renderProjectContent()), h("gxg-card", { editableTitle: false, cardTitle: this._componentLocale.recentObjects.title, class: "recent-objects", cardType: "section", noPaddingTop: true, ref: el => (this.recentObjectsContainerEl = el) }, h("div", { class: "recent-objects__container" }, ((_c = this.recentObjects) === null || _c === void 0 ? void 0 : _c.length) === 0 ? (h("gx-ide-empty-state", { class: "recent-objects__empty-state", stateIcon: "mercury/folder", stateTitle: this._componentLocale.recentObjects.emptyState.title, stateDescription: this._componentLocale.recentObjects.emptyState.description })) : ((_d = this.recentObjects) === null || _d === void 0 ? void 0 : _d.map((obj) => {
157
+ const statusLocale = mapStatusToLocale[obj.status];
158
+ const statusDescription = this._componentLocale.recentObjects.status[statusLocale];
159
+ return (h("gxg-card", { background: "gray-01", padding: "m", cardType: "article", class: "recent-objects__card", actionable: true, onClick: () => this.openObject(obj.id) }, h("div", { class: "recent-objects__object" }, h("div", { class: "col col-left" }, h("gxg-icon", { type: obj.typeIcon, color: "auto" }), h("gxg-text", { type: "text-regular", class: "obj-name" }, obj.name)), h("div", { class: "col col-right" }, h("gxg-text", { italic: true }, statusDescription, obj.status === "modified"
160
+ ? formatDate(obj.modificationDate, "date")
161
+ : null), obj.status !== "unmodified" &&
162
+ obj.status !== "not-connected" ? (h("gxg-icon", { type: mapStatusToIcons[obj.status], color: "auto" })) : null))));
163
+ })))))), h("gxg-ide-loader", { loaderTitle: this._componentLocale.loader.title, description: this._componentLocale.loader.description, ref: el => (this.loaderEl = el) })));
116
164
  }
117
165
  static get assetsDirs() { return ["gx-ide-assets/dashboard-home"]; }
118
166
  get el() { return this; }
167
+ static get watchers() { return {
168
+ "recentObjects": ["recentObjectsHandler"]
169
+ }; }
119
170
  static get style() { return dashboardHomeCss; }
120
171
  }, [1, "gx-ide-dashboard-home", {
121
172
  "kb": [16],
@@ -123,6 +174,7 @@ const GxIdeDashboardHome$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeDashboa
123
174
  "environment": [16],
124
175
  "enableEditEnvironmentName": [4, "enable-edit-environment-name"],
125
176
  "projectDescription": [1, "project-description"],
177
+ "enableEditDescription": [4, "enable-edit-description"],
126
178
  "recentObjects": [16],
127
179
  "renameKBCallback": [16],
128
180
  "renameEnvironmentCallback": [16],
@@ -130,12 +182,14 @@ const GxIdeDashboardHome$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeDashboa
130
182
  "openObjectCallback": [16],
131
183
  "editingEnvName": [32],
132
184
  "editingProjectDescription": [32]
185
+ }, undefined, {
186
+ "recentObjects": ["recentObjectsHandler"]
133
187
  }]);
134
188
  function defineCustomElement$1() {
135
189
  if (typeof customElements === "undefined") {
136
190
  return;
137
191
  }
138
- const components = ["gx-ide-dashboard-home", "ch-icon", "gxg-button", "gxg-card", "gxg-icon", "gxg-pill", "gxg-text", "gxg-title-editable"];
192
+ const components = ["gx-ide-dashboard-home", "ch-icon", "ch-window", "ch-window-close", "gx-ide-empty-state", "gx-ide-title", "gxg-button", "gxg-card", "gxg-icon", "gxg-ide-loader", "gxg-pill", "gxg-text", "gxg-title", "gxg-title-editable"];
139
193
  components.forEach(tagName => { switch (tagName) {
140
194
  case "gx-ide-dashboard-home":
141
195
  if (!customElements.get(tagName)) {
@@ -144,30 +198,60 @@ function defineCustomElement$1() {
144
198
  break;
145
199
  case "ch-icon":
146
200
  if (!customElements.get(tagName)) {
147
- defineCustomElement$8();
201
+ defineCustomElement$e();
202
+ }
203
+ break;
204
+ case "ch-window":
205
+ if (!customElements.get(tagName)) {
206
+ defineCustomElement$d();
207
+ }
208
+ break;
209
+ case "ch-window-close":
210
+ if (!customElements.get(tagName)) {
211
+ defineCustomElement$c();
212
+ }
213
+ break;
214
+ case "gx-ide-empty-state":
215
+ if (!customElements.get(tagName)) {
216
+ defineCustomElement$b();
217
+ }
218
+ break;
219
+ case "gx-ide-title":
220
+ if (!customElements.get(tagName)) {
221
+ defineCustomElement$a();
148
222
  }
149
223
  break;
150
224
  case "gxg-button":
151
225
  if (!customElements.get(tagName)) {
152
- defineCustomElement$7();
226
+ defineCustomElement$9();
153
227
  }
154
228
  break;
155
229
  case "gxg-card":
156
230
  if (!customElements.get(tagName)) {
157
- defineCustomElement$6();
231
+ defineCustomElement$8();
158
232
  }
159
233
  break;
160
234
  case "gxg-icon":
161
235
  if (!customElements.get(tagName)) {
162
- defineCustomElement$5();
236
+ defineCustomElement$7();
237
+ }
238
+ break;
239
+ case "gxg-ide-loader":
240
+ if (!customElements.get(tagName)) {
241
+ defineCustomElement$6();
163
242
  }
164
243
  break;
165
244
  case "gxg-pill":
166
245
  if (!customElements.get(tagName)) {
167
- defineCustomElement$4();
246
+ defineCustomElement$5();
168
247
  }
169
248
  break;
170
249
  case "gxg-text":
250
+ if (!customElements.get(tagName)) {
251
+ defineCustomElement$4();
252
+ }
253
+ break;
254
+ case "gxg-title":
171
255
  if (!customElements.get(tagName)) {
172
256
  defineCustomElement$3();
173
257
  }
@@ -1 +1 @@
1
- {"file":"gx-ide-dashboard-home.js","mappings":";;;;;;;;;;;AAAA,MAAM,gBAAgB,GAAG,u33BAAu33B;;ACgBh53B,MAAM,gBAAgB,GAElB;IACF,GAAG,EAAE,eAAe;IACpB,QAAQ,EAAE,sCAAsC;IAChD,UAAU,EAAE,0CAA0C;IACtD,UAAU,EAAE,kBAAkB;CAC/B,CAAC;MAQWA,oBAAkB;;;;;;QAsBrB,sBAAiB,GAAG,KAAK,CAAC;;;;;QAgH1B,uBAAkB,GAAG,OAAO,YAAiC;YACnE,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC;YAC1C,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBACtD,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAkB;oBAC/B,IAAI,MAAM,CAAC,OAAO,EAAE;wBAClB,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,aAAa,CAAC;qBAC9B;oBACD,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC5C,CAAC,CAAC;aACJ;SACF,CAAC;;QAGM,wBAAmB,GAAG;YAC5B,IAAI,IAAI,CAAC,yBAAyB,EAAE;gBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACtE,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAkB;oBAC/B,IAAI,MAAM,CAAC,OAAO,EAAE;wBAClB,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;qBAC9C;oBACD,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;iBAC7C,CAAC,CAAC;aACJ;SACF,CAAC;QAEM,4BAAuB,GAAG;YAChC,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAChC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;aACtC;SACF,CAAC;;QAIM,eAAU,GAAG,CAAC,EAAU;YAC9B,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;SAC7B,CAAC;;QAIM,mBAAc,GAAG,CACvB,MAAkB,EAClB,EAA+B;YAE/B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACnB,EAAE,CAAC,gBAAgB,GAAG,OAAO,CAAC;gBAC9B,EAAE,CAAC,iBAAiB,GAAG,MAAM,CAAC,YAAY,CAAC;aAC5C;iBAAM;gBACL,EAAE,CAAC,gBAAgB,GAAG,eAAe,CAAC;gBACtC,EAAE,CAAC,iBAAiB,GAAG,EAAE,CAAC;aAC3B;SACF,CAAC;;QAIM,yBAAoB,GAAG;YAC7B,OAAO,IAAI,CAAC,kBAAkB,IAC5B,WAAK,KAAK,EAAC,qBAAqB,EAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,IACjE,kBACE,IAAI,EAAC,qBAAqB,EAC1B,IAAI,EAAC,mBAAmB,EACxB,OAAO,EAAE,IAAI,CAAC,uBAAuB,IAEpC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAChB,CACT,IACJ,IAAI,CAAC;SACV,CAAC;8BApKwB,KAAK;yCAKM,KAAK;;gCAYG,KAAK;;yCAUI,KAAK;;;;;;;;;IAiD3D,MAAM,iBAAiB;QACrB,IAAI,CAAC,gBAAgB,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACnE;IAED,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,2BAA2B,CAAC,IAAI,CACnC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CACpC,CAAC;YACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SAC/B;KACF;IA+EO,mBAAmB;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC;cACxC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,YAAY;cAC9C,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC;KACrD;;IAID,MAAM;QACJ,QACE,EAAC,IAAI,QACH,WAAK,KAAK,EAAC,qBAAqB,IAC9B,WAAK,KAAK,EAAC,kBAAkB,IAC3B,WAAK,KAAK,EAAC,sBAAsB,IAC/B,0BACE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,qBACF,CAAC,IAAI,CAAC,gBAAgB,mBACxB,IAAI,EACnB,KAAK,QACL,cAAc,EAAE,IAAI,CAAC,kBAAkB,EACvC,SAAS,EAAC,MAAM,EAChB,QAAQ,QACR,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,QAAQ,GAAG,EAAiC,CAAC,GAC1C,EACtB,WAAK,KAAK,EAAC,wBAAwB,IACjC,gBAAU,EAAE,EAAC,MAAM,EAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,mBAAmB,IACvD,IAAI,CAAC,gBAAgB,CAAC,OAAO,QAAI,IAAI,CAAC,EAAE,CAAC,cAAc,CAC/C,EACX,gBAAU,KAAK,EAAC,gBAAgB,EAAC,IAAI,EAAC,WAAW,EAAC,OAAO,EAAC,GAAG,IAC1D,IAAI,CAAC,gBAAgB,CAAC,OAAO,OAAG,GAAG,EACnC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC,QAAI,GAAG,EACrD,IAAI,CAAC,gBAAgB,CAAC,SAAS,OAAG,GAAG,EACrC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC,CACxC,CACP,CACF,EAEN,WAAK,KAAK,EAAC,aAAa,IACtB,0BACE,KAAK,EAAC,mBAAmB,EACzB,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,qBACX,CAAC,IAAI,CAAC,yBAAyB,mBACjC,IAAI,gBACR,IAAI,EACf,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,SAAS,GAAG,EAAiC,CAAC,EAC/D,cAAc,EAAE,IAAI,CAAC,mBAAmB,EACxC,SAAS,EAAC,MAAM,EAChB,QAAQ,SACY,EACtB,WAAK,KAAK,EAAC,2BAA2B,IACpC,gBACE,QAAQ,EAAC,MAAM,EACf,KAAK,EAAC,kBAAkB,EACxB,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAErC,WAAK,KAAK,EAAC,uBAAuB,IAC/B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAC5B,CAAC,GAAwB,MACvB,WAAK,KAAK,EAAC,kBAAkB,IAC3B,gBACE,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,KAAK,EAAC,cAAc,EACpB,KAAK,EAAE;gBACL,wBAAwB,EAAE,iBAAiB;aAC5C,GACS,EACX,GAAG,CAAC,IAAI,CACL,CACP,CACF,CACG,CACG,EACX,gBACE,QAAQ,EAAC,MAAM,EACf,KAAK,EAAC,kBAAkB,EACxB,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAO,IAEpD,WAAK,KAAK,EAAC,uBAAuB,IAChC,WAAK,KAAK,EAAC,kBAAkB,IAC3B,gBACE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EACnC,KAAK,EAAC,cAAc,EACpB,KAAK,EAAE;gBACL,wBAAwB,EAAE,iBAAiB;aAC5C,GACS,EACX,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAC1B,CACF,CACG,EAEX,gBACE,QAAQ,EAAC,MAAM,EACf,KAAK,EAAC,kBAAkB,EACxB,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,IAEtD,WAAK,KAAK,EAAC,uBAAuB,IAChC,WAAK,KAAK,EAAC,kBAAkB,IAC3B,gBACE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EACrC,KAAK,EAAC,cAAc,EACpB,KAAK,EAAE;gBACL,wBAAwB,EAAE,iBAAiB;aAC5C,GACS,EACX,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAC5B,CACF,CACG,CACP,CACF,EAEN,gBACE,aAAa,EAAE,KAAK,EACpB,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAC9C,KAAK,EAAC,SAAS,IA2Bd,IAAI,CAAC,oBAAoB,EAAE,CACnB,EAEX,gBACE,aAAa,EAAE,KAAK,EACpB,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAC7C,KAAK,EAAC,gBAAgB,EACtB,QAAQ,EAAC,SAAS,4BAGjB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAqB,EAAE,KAAK,MACnD,gBACE,UAAU,EAAC,SAAS,EACpB,OAAO,EAAC,GAAG,EACX,QAAQ,EAAC,SAAS,EAClB,KAAK,EAAC,qBAAqB,EAC3B,UAAU,QACV,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAErC,WAAK,KAAK,EAAC,2BAA2B,IACpC,gBAAU,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,GAAY,EACtD,gBAAU,IAAI,EAAC,cAAc,EAAC,KAAK,EAAC,UAAU,IAC3C,GAAG,CAAC,IAAI,CACA,EACX,gBAAU,MAAM,QAAC,KAAK,EAAC,aAAa,IACjC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,OAAG,GAAG,EAC3C,GAAG,UAAU,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,CACrC,EACX,WAAK,KAAK,EAAC,cAAc,IACvB,gBACE,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAClC,KAAK,EAAC,MAAM,GACF,CACR,CACF,CACG,CACZ,CAAC,CACO,CACP,CACF,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["GxIdeDashboardHome"],"sources":["src/components/dashboard-home/dashboard-home.scss?tag=gx-ide-dashboard-home&encapsulation=shadow","src/components/dashboard-home/dashboard-home.tsx"],"sourcesContent":["@import \"../../../node_modules/@genexus/gemini/dist/gemini/globals/mixins.scss\";\n@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n height: 100%;\n overflow: auto;\n}\n\n// Manage height and overflow\n:host,\n.gx-ide-main-wrapper,\n.grid--basic,\n.project,\n.recent-objects {\n height: 100%;\n overflow: auto;\n}\n\n.gx-ide-main-wrapper {\n container-name: dashboard-main-wrapper;\n container-type: inline-size;\n}\n\n.kb {\n grid-area: kb;\n align-self: center;\n .version-pill {\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n .kb-detail {\n display: flex;\n flex-direction: column;\n align-items: start;\n flex-wrap: wrap;\n margin-block-start: var(--mer-spacing--md);\n gap: var(--mer-spacing--md);\n .display-inline {\n @include line-clamp;\n font-style: italic;\n opacity: 0.5;\n }\n }\n}\n\n.environment {\n grid-area: environment;\n &__environments {\n padding-block-end: var(--gx-ide-grid-column-gap);\n display: flex;\n flex-direction: row;\n gap: var(--gx-ide-grid-column-gap);\n @include gxg-scrollbar;\n overflow-x: auto;\n .environment-card {\n min-width: 180px;\n flex-grow: 1;\n }\n .environment-container {\n display: flex;\n flex-direction: column;\n gap: var(--gx-ide-cards-vertical-spacing);\n }\n .environment-item {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--xxs);\n }\n }\n}\n.environment-title {\n margin-block-end: var(--mer-spacing--xs);\n display: block;\n}\n\n.project {\n grid-area: project;\n .project-buttons {\n margin-block-start: var(--mer-spacing--md);\n gap: var(--mer-spacing--md);\n }\n .project-description {\n > *:first-child {\n margin-block-start: 0;\n }\n > *:last-child {\n margin-block-end: 0;\n }\n }\n}\n\n.recent-objects {\n grid-area: recent-objects;\n\n .recent-objects-card {\n margin-block-end: var(--gx-ide-cards-vertical-spacing);\n &:last-child {\n margin-block-end: 0;\n }\n .grid--recent-objects {\n flex-grow: 1;\n grid-template-columns: 1fr 10fr 12fr 1fr;\n gap: var(--gx-ide-cards-horizontal-spacing);\n height: 100%;\n align-items: center;\n .obj-name {\n color: var(--gray-06);\n }\n }\n }\n}\n\n.grid--basic {\n flex-grow: 1;\n grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n gap: var(--mer-spacing--xl);\n grid-template-areas:\n \"kb environment\"\n \"project recent-objects\";\n grid-template-rows: auto 1fr;\n}\n@container (width < 768px) {\n .grid--basic {\n grid-template-rows: auto auto auto;\n grid-template-areas:\n \"kb environment\"\n \"project project\"\n \"recent-objects recent-objects\";\n }\n}\n\ngxg-title-editable {\n width: 100%;\n}\n\ngx-ide-card {\n height: 100%;\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n State,\n Element,\n Event,\n EventEmitter\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { formatDate } from \"../../common/helpers\";\n\nconst mapStatusToIcons: {\n [key in RecentObjectStatus]: StatusIcons;\n} = {\n new: \"gx-server/new\",\n modified: \"patterns-default-associated/modified\",\n conflicted: \"patterns-default-associated/synchronized\",\n unmodified: \"gx-server/delete\"\n};\n\n@Component({\n tag: \"gx-ide-dashboard-home\",\n styleUrl: \"dashboard-home.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/dashboard-home\"]\n})\nexport class GxIdeDashboardHome {\n /*\n INDEX:\n 1.OWN PROPERTIES \n 2.REFERENCE TO ELEMENTS\n 3.STATE() VARIABLES\n 4.PUBLIC PROPERTY API | WATCH'S\n 5.EVENTS (EMIT)\n 6.COMPONENT LIFECYCLE METHODS\n 7.LISTENERS\n 8.PUBLIC METHODS API\n 9.LOCAL METHODS\n 10.RENDER() FUNCTIONS\n 11.RENDER() MAIN FUNCTION\n */\n\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeDashboardHomeElement;\n\n private kbNameEl!: HTMLGxgTitleEditableElement;\n private envNameEl!: HTMLGxgTitleEditableElement;\n /* private projectDescriptionEl!: HTMLGxgFormTextareaElement;*/\n\n // 3.STATE() VARIABLES //\n\n /**\n * The editing state for the environment name.\n */\n @State() editingEnvName = false;\n\n /**\n * The editing state for the project details.\n */\n @State() editingProjectDescription = false;\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * The KB basic properties.\n */\n @Prop() readonly kb: KBData;\n\n /**\n * This allows the kb to be editable by the user.\n */\n @Prop() readonly enableEditKBName: boolean = false;\n\n /**\n * Information of the current environment.\n */\n @Prop() readonly environment: EnvironmentData;\n\n /**\n * This allows the environment name to be editable by the user.\n */\n @Prop() readonly enableEditEnvironmentName: boolean = false;\n\n /**\n * Project Detail description.\n */\n @Prop() readonly projectDescription: string;\n\n /**\n * Recently edited objects.\n */\n @Prop() readonly recentObjects: recentObjectData[];\n\n /**\n * Callback invoked when user tries to rename the KB.\n * Receives the new name as a parameter\n * and returns a promise with the result of the operation.\n */\n @Prop() readonly renameKBCallback: (name: string) => Promise<EditResult>;\n\n /**\n * Callback invoked when user tries to rename the KB environment.\n * Receives the new name as a parameter\n * and returns a promise with the result of the operation.\n */\n @Prop() readonly renameEnvironmentCallback: (\n name: string\n ) => Promise<EditResult>;\n\n /**\n * Callback invoked when user tries to edit the Project Description.\n * The edition is resolved by the host.\n */\n @Prop() readonly editDescriptionCallback: () => Promise<void>;\n\n /**\n * Callback invoked when user tries to open one of the listed Recent Objects\n * Receives the internal ID of the object\n */\n @Prop() readonly openObjectCallback: (id: number) => Promise<void>;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n // Kb Name\n\n private handleKbNameChange = async (updatedTitle: CustomEvent<string>) => {\n const updatedKbName = updatedTitle.detail;\n if (this.renameKBCallback) {\n const response = this.renameKBCallback(updatedKbName);\n response.then((result: EditResult) => {\n if (result.success) {\n this.kb.name = updatedKbName;\n }\n this.editValidation(result, this.kbNameEl);\n });\n }\n };\n\n // Environment Name\n private handleEnvNameChange = async () => {\n if (this.renameEnvironmentCallback) {\n const response = this.renameEnvironmentCallback(this.envNameEl.value);\n response.then((result: EditResult) => {\n if (result.success) {\n this.environment.name = this.envNameEl.value;\n }\n this.editValidation(result, this.envNameEl);\n });\n }\n };\n\n private handleDescriptionChange = async () => {\n if (this.editDescriptionCallback) {\n await this.editDescriptionCallback();\n }\n };\n\n // Recent Objects\n\n private openObject = (id: number) => {\n this.openObjectCallback(id);\n };\n\n // Validation\n\n private editValidation = (\n result: EditResult,\n el: HTMLGxgTitleEditableElement\n ) => {\n if (!result.success) {\n el.validationStatus = \"error\";\n el.validationMessage = result.errorMessage;\n } else {\n el.validationStatus = \"indeterminate\";\n el.validationMessage = \"\";\n }\n };\n\n // 10.RENDER() FUNCTIONS //\n\n private renderProjectContent = (): Element => {\n return this.projectDescription ? (\n <div class=\"project-description\" innerHTML={this.projectDescription}>\n <gxg-button\n type=\"secondary-text-icon\"\n icon=\"gemini-tools/edit\"\n onClick={this.handleDescriptionChange}\n >\n {this._componentLocale.edit}\n </gxg-button>\n </div>\n ) : null;\n };\n\n private renderFrontEndTitle() {\n return this.environment.frontEnd.length <= 1\n ? this._componentLocale.environment.frontEndLang\n : this._componentLocale.environment.frontEndLangs;\n }\n\n // 11.RENDER() MAIN FUNCTION //\n\n render() {\n return (\n <Host>\n <div class=\"gx-ide-main-wrapper\">\n <div class=\"grid grid--basic\">\n <div class=\"kb gxi-overflow-auto\">\n <gxg-title-editable\n value={this.kb.name}\n disable-edition={!this.enableEditKBName}\n click-to-edit={true}\n fluid\n onValueChanged={this.handleKbNameChange}\n focusType=\"text\"\n debounce\n ref={el => (this.kbNameEl = el as HTMLGxgTitleEditableElement)}\n ></gxg-title-editable>\n <div class=\"align-center kb-detail\">\n <gxg-pill id=\"pill\" type=\"static\" icon=\"objects/procedure\">\n {this._componentLocale.version}: {this.kb.currentVersion}\n </gxg-pill>\n <gxg-text class=\"display-inline\" type=\"text-gray\" padding=\"s\">\n {this._componentLocale.created}:{\" \"}\n {formatDate(this.kb.created, \"date-time-short\")} -{\" \"}\n {this._componentLocale.lastBuild}:{\" \"}\n {formatDate(this.kb.lastBuild, \"date-time-short\")}\n </gxg-text>\n </div>\n </div>\n\n <div class=\"environment\">\n <gxg-title-editable\n class=\"environment-title\"\n value={this.environment.name}\n disable-edition={!this.enableEditEnvironmentName}\n click-to-edit={true}\n title-type=\"h3\"\n ref={el => (this.envNameEl = el as HTMLGxgTitleEditableElement)}\n onValueChanged={this.handleEnvNameChange}\n focusType=\"text\"\n debounce\n ></gxg-title-editable>\n <div class=\"environment__environments\">\n <gxg-card\n cardType=\"mini\"\n class=\"environment-card\"\n cardTitle={this.renderFrontEndTitle()}\n >\n <div class=\"environment-container\">\n {this.environment.frontEnd.map(\n (obj: EnvironmentItemData) => (\n <div class=\"environment-item\">\n <gxg-icon\n type={obj.icon}\n color=\"onbackground\"\n style={{\n \"--mer-text__on-surface\": \"var(--gray-05);\"\n }}\n ></gxg-icon>\n {obj.name}\n </div>\n )\n )}\n </div>\n </gxg-card>\n <gxg-card\n cardType=\"mini\"\n class=\"environment-card\"\n cardTitle={this._componentLocale.environment.backEnd}\n >\n <div class=\"environment-container\">\n <div class=\"environment-item\">\n <gxg-icon\n type={this.environment.backEnd.icon}\n color=\"onbackground\"\n style={{\n \"--mer-text__on-surface\": \"var(--gray-05);\"\n }}\n ></gxg-icon>\n {this.environment.backEnd.name}\n </div>\n </div>\n </gxg-card>\n\n <gxg-card\n cardType=\"mini\"\n class=\"environment-card\"\n cardTitle={this._componentLocale.environment.dataStore}\n >\n <div class=\"environment-container\">\n <div class=\"environment-item\">\n <gxg-icon\n type={this.environment.dataStore.icon}\n color=\"onbackground\"\n style={{\n \"--mer-text__on-surface\": \"var(--gray-05);\"\n }}\n ></gxg-icon>\n {this.environment.dataStore.name}\n </div>\n </div>\n </gxg-card>\n </div>\n </div>\n\n <gxg-card\n editableTitle={false}\n cardTitle={this._componentLocale.project.title}\n class=\"project\"\n >\n {/* <gxg-tabs height=\"auto\" minWidth=\"100%\">\n <gxg-tab-bar slot=\"tab-bar-container\" displayBorder>\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.project.tabs.description}\n tab=\"description\"\n is-selected\n ></gxg-tab-button>\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.project.tabs.lookFeel}\n tab=\"lookFeel\"\n ></gxg-tab-button>\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.project.tabs.architecture}\n tab=\"architecture\"\n ></gxg-tab-button>\n </gxg-tab-bar>\n <gxg-tab noPadding tab=\"description\" flexContainer>\n {this.renderProjectContent()}\n </gxg-tab>\n <gxg-tab noPadding tab=\"lookFeel\" flexContainer></gxg-tab>\n <gxg-tab noPadding tab=\"architecture\" flexContainer></gxg-tab>\n </gxg-tabs> */}\n {this.renderProjectContent()}\n </gxg-card>\n\n <gxg-card\n editableTitle={false}\n cardTitle={this._componentLocale.recent.title}\n class=\"recent-objects\"\n cardType=\"section\"\n no-padding-top\n >\n {this.recentObjects.map((obj: recentObjectData, index) => (\n <gxg-card\n background=\"gray-01\"\n padding=\"m\"\n cardType=\"article\"\n class=\"recent-objects-card\"\n actionable\n onClick={() => this.openObject(index)}\n >\n <div class=\"grid grid--recent-objects\">\n <gxg-icon type={obj.typeIcon} color=\"auto\"></gxg-icon>\n <gxg-text type=\"text-regular\" class=\"obj-name\">\n {obj.name}\n </gxg-text>\n <gxg-text italic class=\"justify-end\">\n {this._componentLocale.recent.modified}:{\" \"}\n {`${formatDate(obj.modificationDate, \"date\")}`}\n </gxg-text>\n <div class=\" justify-end\">\n <gxg-icon\n type={mapStatusToIcons[obj.status]}\n color=\"auto\"\n ></gxg-icon>\n </div>\n </div>\n </gxg-card>\n ))}\n </gxg-card>\n </div>\n </div>\n </Host>\n );\n }\n}\n\nexport type KBData = {\n name: string;\n currentVersion: string;\n created: Date;\n lastBuild?: Date;\n};\n\nexport type EnvironmentData = {\n name: string;\n frontEnd: EnvironmentItemData[];\n backEnd: EnvironmentItemData;\n dataStore: EnvironmentItemData;\n};\n\nexport type EnvironmentItemData = {\n icon: string;\n name: string;\n};\n\nexport type recentObjectData = {\n id: string;\n typeIcon: string;\n name: string;\n modificationDate: Date;\n status: RecentObjectStatus;\n};\n\nexport type RecentObjectStatus =\n | \"new\"\n | \"modified\"\n | \"conflicted\"\n | \"unmodified\";\n\nexport type StatusIcons =\n // toDo: Add proper icons!!\n | \"gx-server/new\"\n | \"patterns-default-associated/modified\"\n | \"patterns-default-associated/synchronized\"\n | \"gx-server/delete\";\n\nexport type EditResult = {\n success: boolean;\n errorMessage: string;\n};\n"],"version":3}
1
+ {"file":"gx-ide-dashboard-home.js","mappings":"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","names":["GxIdeDashboardHome"],"sources":["src/components/dashboard-home/dashboard-home.scss?tag=gx-ide-dashboard-home&encapsulation=shadow","src/components/dashboard-home/dashboard-home.tsx"],"sourcesContent":["@import \"../../../node_modules/@genexus/gemini/dist/gemini/globals/mixins.scss\";\n@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n height: 100%;\n overflow: auto;\n margin: var(--mer-spacing--lg);\n}\n\n// Manage height and overflow\n:host,\n.gx-ide-main-wrapper,\n.grid--basic,\n.project,\n.recent-objects {\n height: 100%;\n overflow: auto;\n}\n\n.gx-ide-main-wrapper {\n container-name: dashboard-main-wrapper;\n container-type: inline-size;\n}\n\n.kb {\n grid-area: kb;\n align-self: center;\n .version-pill {\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n .kb-detail {\n display: flex;\n flex-direction: column;\n align-items: start;\n flex-wrap: wrap;\n margin-block-start: var(--mer-spacing--md);\n gap: var(--mer-spacing--md);\n .display-inline {\n @include line-clamp;\n font-style: italic;\n opacity: 0.5;\n }\n }\n}\n\n.environment {\n grid-area: environment;\n &__environments {\n padding-block-end: var(--gx-ide-grid-column-gap);\n display: flex;\n flex-direction: row;\n gap: var(--gx-ide-grid-column-gap);\n @include gxg-scrollbar;\n overflow-x: auto;\n .environment-card {\n min-width: 180px;\n flex-grow: 1;\n }\n .environment-container {\n display: flex;\n flex-direction: column;\n gap: var(--gx-ide-cards-vertical-spacing);\n }\n .environment-item {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--xxs);\n }\n }\n}\n.environment-title {\n margin-block-end: var(--mer-spacing--xs);\n display: block;\n}\n\n.project {\n grid-area: project;\n .project-buttons {\n margin-block-start: var(--mer-spacing--md);\n gap: var(--mer-spacing--md);\n }\n .project-description {\n > *:first-child {\n margin-block-start: 0;\n }\n > *:last-child {\n margin-block-end: 0;\n }\n }\n}\n\n.recent-objects {\n grid-area: recent-objects;\n &__container {\n height: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--gx-ide-cards-vertical-spacing);\n }\n &__object {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--gx-ide-cards-horizontal-spacing);\n .obj-name {\n color: var(--gray-06);\n }\n .col {\n display: flex;\n gap: var(--gx-ide-cards-horizontal-spacing);\n }\n }\n &__empty-state {\n height: 100%;\n }\n}\n\n.grid--basic {\n flex-grow: 1;\n grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n gap: var(--mer-spacing--xl);\n grid-template-areas:\n \"kb environment\"\n \"project recent-objects\";\n grid-template-rows: auto 1fr;\n}\n@container (width < 768px) {\n .grid--basic {\n grid-template-rows: auto auto auto;\n grid-template-areas:\n \"kb environment\"\n \"project project\"\n \"recent-objects recent-objects\";\n }\n}\n\ngxg-title-editable {\n width: 100%;\n}\n\ngx-ide-card {\n height: 100%;\n}\n\ngxg-ide-loader::part(loader-wrapper) {\n border: var(--mer-elevation__border-01);\n border-radius: var(--gxg-card-section_border-radius);\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n State,\n Element,\n Event,\n EventEmitter,\n Watch\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { formatDate } from \"../../common/helpers\";\n\nconst mapStatusToIcons: {\n [key in RecentObjectStatus]: StatusIcons;\n} = {\n \"new\": \"gx-server/new\",\n \"modified\": \"patterns-default-associated/modified\",\n \"conflicted\": \"patterns-default-associated/synchronized\",\n \"unmodified\": null,\n \"not-connected\": null\n};\n\nconst mapStatusToLocale: {\n [key in RecentObjectStatus]: string;\n} = {\n \"new\": \"new\",\n \"modified\": \"modified\",\n \"conflicted\": \"conflicted\",\n \"unmodified\": \"unmodified\",\n \"not-connected\": \"notConnected\"\n};\n\n@Component({\n tag: \"gx-ide-dashboard-home\",\n styleUrl: \"dashboard-home.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/dashboard-home\"]\n})\nexport class GxIdeDashboardHome {\n /*\n INDEX:\n 1.OWN PROPERTIES \n 2.REFERENCE TO ELEMENTS\n 3.STATE() VARIABLES\n 4.PUBLIC PROPERTY API | WATCH'S\n 5.EVENTS (EMIT)\n 6.COMPONENT LIFECYCLE METHODS\n 7.LISTENERS\n 8.PUBLIC METHODS API\n 9.LOCAL METHODS\n 10.RENDER() FUNCTIONS\n 11.RENDER() MAIN FUNCTION\n */\n\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeDashboardHomeElement;\n private loaderEl!: HTMLGxgIdeLoaderElement;\n private kbNameEl!: HTMLGxgTitleEditableElement;\n private envNameEl!: HTMLGxgTitleEditableElement;\n private recentObjectsContainerEl!: HTMLGxgCardElement;\n /* private projectDescriptionEl!: HTMLGxgFormTextareaElement;*/\n\n // 3.STATE() VARIABLES //\n\n /**\n * The editing state for the environment name.\n */\n @State() editingEnvName = false;\n\n /**\n * The editing state for the project details.\n */\n @State() editingProjectDescription = false;\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * The KB basic properties.\n */\n @Prop() readonly kb: KBData;\n\n /**\n * This allows the kb to be editable by the user.\n */\n @Prop() readonly enableEditKBName: boolean = false;\n\n /**\n * Information of the current environment.\n */\n @Prop() readonly environment: EnvironmentData;\n\n /**\n * This allows the environment name to be editable by the user.\n */\n @Prop() readonly enableEditEnvironmentName: boolean = false;\n\n /**\n * Project Detail description.\n */\n @Prop() readonly projectDescription: string;\n\n /**\n * This allows the project description to be modified by the user.\n */\n @Prop() readonly enableEditDescription: boolean = false;\n\n /**\n * Recently edited objects.\n */\n @Prop() readonly recentObjects: recentObjectData[];\n @Watch(\"recentObjects\")\n recentObjectsHandler(newRecentObjects: recentObjectData[]) {\n if (newRecentObjects) {\n this.loaderEl.show = false;\n }\n }\n\n /**\n * Callback invoked when user tries to rename the KB.\n * Receives the new name as a parameter\n * and returns a promise with the result of the operation.\n */\n @Prop() readonly renameKBCallback: (name: string) => Promise<EditResult>;\n\n /**\n * Callback invoked when user tries to rename the KB environment.\n * Receives the new name as a parameter\n * and returns a promise with the result of the operation.\n */\n @Prop() readonly renameEnvironmentCallback: (\n name: string\n ) => Promise<EditResult>;\n\n /**\n * Callback invoked when user tries to edit the Project Description.\n * The edition is resolved by the host.\n */\n @Prop() readonly editDescriptionCallback: () => Promise<void>;\n\n /**\n * Callback invoked when user tries to open one of the listed Recent Objects\n * Receives the internal ID of the object\n */\n @Prop() readonly openObjectCallback: (id: string) => Promise<void>;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.evaluateLoader();\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n private evaluateLoader = () => {\n if (this.recentObjects === undefined) {\n this.loaderEl.container = this.recentObjectsContainerEl;\n this.loaderEl.show = true;\n }\n };\n\n // Kb Name\n\n private handleKbNameChange = async (updatedTitle: CustomEvent<string>) => {\n const updatedKbName = updatedTitle.detail;\n if (this.renameKBCallback) {\n const response = this.renameKBCallback(updatedKbName);\n response.then((result: EditResult) => {\n if (result.success) {\n this.kb.name = updatedKbName;\n }\n this.editValidation(result, this.kbNameEl);\n });\n }\n };\n\n // Environment Name\n private handleEnvNameChange = async () => {\n if (this.renameEnvironmentCallback) {\n const response = this.renameEnvironmentCallback(this.envNameEl.value);\n response.then((result: EditResult) => {\n if (result.success) {\n this.environment.name = this.envNameEl.value;\n }\n this.editValidation(result, this.envNameEl);\n });\n }\n };\n\n private handleDescriptionChange = async () => {\n if (this.editDescriptionCallback) {\n await this.editDescriptionCallback();\n }\n };\n\n // Recent Objects\n\n private openObject = (id: string) => {\n this.openObjectCallback(id);\n };\n\n // Validation\n\n private editValidation = (\n result: EditResult,\n el: HTMLGxgTitleEditableElement\n ) => {\n if (!result.success) {\n el.validationStatus = \"error\";\n el.validationMessage = result.errorMessage;\n } else {\n el.validationStatus = \"indeterminate\";\n el.validationMessage = \"\";\n }\n };\n\n // 10.RENDER() FUNCTIONS //\n\n private renderProjectContent = (): Element => {\n return this.projectDescription ? (\n <div class=\"project-description\" innerHTML={this.projectDescription}>\n {this.enableEditDescription ? (\n <gxg-button\n type=\"secondary-text-icon\"\n icon=\"gemini-tools/edit\"\n onClick={this.handleDescriptionChange}\n >\n {this._componentLocale.edit}\n </gxg-button>\n ) : null}\n </div>\n ) : null;\n };\n\n private renderFrontEndTitle() {\n return this.environment.frontEnd.length <= 1\n ? this._componentLocale.environment.frontEndLang\n : this._componentLocale.environment.frontEndLangs;\n }\n\n private renderKbDates() {\n return this.kb.created || this.kb.lastBuild ? (\n <gxg-text class=\"display-inline\" type=\"text-gray\" padding=\"s\">\n {\n /* created*/\n this.kb.created\n ? `${this._componentLocale.created}: ${formatDate(\n this.kb.created,\n \"date-time-short\"\n )}`\n : null\n }\n {this.kb.created && this.kb.lastBuild ? \" - \" : null}\n {\n /* last build date */\n this.kb.lastBuild\n ? `${this._componentLocale.lastBuild}: ${formatDate(\n this.kb.lastBuild,\n \"date-time-short\"\n )}`\n : null\n }\n </gxg-text>\n ) : null;\n }\n\n // 11.RENDER() MAIN FUNCTION //\n\n render() {\n return (\n <Host>\n <div class=\"gx-ide-main-wrapper\">\n <div class=\"grid grid--basic\">\n <div class=\"kb gxi-overflow-auto\">\n <gxg-title-editable\n value={this.kb.name}\n disable-edition={!this.enableEditKBName}\n click-to-edit={true}\n fluid\n onValueChanged={this.handleKbNameChange}\n focusType=\"text\"\n debounce\n ref={el => (this.kbNameEl = el as HTMLGxgTitleEditableElement)}\n ></gxg-title-editable>\n <div class=\"align-center kb-detail\">\n <gxg-pill id=\"pill\" type=\"static\" icon=\"objects/procedure\">\n {this._componentLocale.version}: {this.kb.currentVersion}\n </gxg-pill>\n\n {this.renderKbDates()}\n </div>\n </div>\n\n <div class=\"environment\">\n <gxg-title-editable\n class=\"environment-title\"\n value={this.environment.name}\n disable-edition={!this.enableEditEnvironmentName}\n click-to-edit={true}\n title-type=\"h3\"\n ref={el => (this.envNameEl = el as HTMLGxgTitleEditableElement)}\n onValueChanged={this.handleEnvNameChange}\n focusType=\"text\"\n debounce\n ></gxg-title-editable>\n <div class=\"environment__environments\">\n <gxg-card\n cardType=\"mini\"\n class=\"environment-card\"\n cardTitle={this.renderFrontEndTitle()}\n >\n <div class=\"environment-container\">\n {this.environment?.frontEnd?.map(\n (obj: EnvironmentItemData) => (\n <div class=\"environment-item\">\n <gxg-icon\n type={obj.icon}\n color=\"onbackground\"\n style={{\n \"--mer-text__on-surface\": \"var(--gray-05);\"\n }}\n ></gxg-icon>\n {obj.name}\n </div>\n )\n )}\n </div>\n </gxg-card>\n <gxg-card\n cardType=\"mini\"\n class=\"environment-card\"\n cardTitle={this._componentLocale.environment.backEnd}\n >\n <div class=\"environment-container\">\n <div class=\"environment-item\">\n <gxg-icon\n type={this.environment.backEnd.icon}\n color=\"onbackground\"\n style={{\n \"--mer-text__on-surface\": \"var(--gray-05);\"\n }}\n ></gxg-icon>\n {this.environment.backEnd.name}\n </div>\n </div>\n </gxg-card>\n\n <gxg-card\n cardType=\"mini\"\n class=\"environment-card\"\n cardTitle={this._componentLocale.environment.dataStore}\n >\n <div class=\"environment-container\">\n <div class=\"environment-item\">\n <gxg-icon\n type={this.environment.dataStore.icon}\n color=\"onbackground\"\n style={{\n \"--mer-text__on-surface\": \"var(--gray-05);\"\n }}\n ></gxg-icon>\n {this.environment.dataStore.name}\n </div>\n </div>\n </gxg-card>\n </div>\n </div>\n\n <gxg-card\n editableTitle={false}\n cardTitle={this._componentLocale.project.title}\n class=\"project\"\n >\n {/* <gxg-tabs height=\"auto\" minWidth=\"100%\">\n <gxg-tab-bar slot=\"tab-bar-container\" displayBorder>\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.project.tabs.description}\n tab=\"description\"\n is-selected\n ></gxg-tab-button>\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.project.tabs.lookFeel}\n tab=\"lookFeel\"\n ></gxg-tab-button>\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.project.tabs.architecture}\n tab=\"architecture\"\n ></gxg-tab-button>\n </gxg-tab-bar>\n <gxg-tab noPadding tab=\"description\" flexContainer>\n {this.renderProjectContent()}\n </gxg-tab>\n <gxg-tab noPadding tab=\"lookFeel\" flexContainer></gxg-tab>\n <gxg-tab noPadding tab=\"architecture\" flexContainer></gxg-tab>\n </gxg-tabs> */}\n {this.renderProjectContent()}\n </gxg-card>\n\n <gxg-card\n editableTitle={false}\n cardTitle={this._componentLocale.recentObjects.title}\n class=\"recent-objects\"\n cardType=\"section\"\n noPaddingTop\n ref={el =>\n (this.recentObjectsContainerEl = el as HTMLGxgCardElement)\n }\n >\n <div class=\"recent-objects__container\">\n {this.recentObjects?.length === 0 ? (\n <gx-ide-empty-state\n class=\"recent-objects__empty-state\"\n stateIcon=\"mercury/folder\"\n stateTitle={\n this._componentLocale.recentObjects.emptyState.title\n }\n stateDescription={\n this._componentLocale.recentObjects.emptyState.description\n }\n ></gx-ide-empty-state>\n ) : (\n this.recentObjects?.map((obj: recentObjectData) => {\n const statusLocale = mapStatusToLocale[obj.status];\n const statusDescription =\n this._componentLocale.recentObjects.status[statusLocale];\n return (\n <gxg-card\n background=\"gray-01\"\n padding=\"m\"\n cardType=\"article\"\n class=\"recent-objects__card\"\n actionable\n onClick={() => this.openObject(obj.id)}\n >\n <div class=\"recent-objects__object\">\n <div class=\"col col-left\">\n <gxg-icon\n type={obj.typeIcon}\n color=\"auto\"\n ></gxg-icon>\n <gxg-text type=\"text-regular\" class=\"obj-name\">\n {obj.name}\n </gxg-text>\n </div>\n <div class=\"col col-right\">\n <gxg-text italic>\n {statusDescription}\n {obj.status === \"modified\"\n ? formatDate(obj.modificationDate, \"date\")\n : null}\n </gxg-text>\n {obj.status !== \"unmodified\" &&\n obj.status !== \"not-connected\" ? (\n <gxg-icon\n type={mapStatusToIcons[obj.status]}\n color=\"auto\"\n ></gxg-icon>\n ) : null}\n </div>\n </div>\n </gxg-card>\n );\n })\n )}\n </div>\n </gxg-card>\n </div>\n </div>\n <gxg-ide-loader\n loaderTitle={this._componentLocale.loader.title}\n description={this._componentLocale.loader.description}\n ref={el => (this.loaderEl = el as HTMLGxgIdeLoaderElement)}\n ></gxg-ide-loader>\n </Host>\n );\n }\n}\n\nexport type KBData = {\n name: string;\n currentVersion: string;\n created: Date;\n lastBuild?: Date;\n};\n\nexport type EnvironmentData = {\n name: string;\n frontEnd: EnvironmentItemData[];\n backEnd: EnvironmentItemData;\n dataStore: EnvironmentItemData;\n};\n\nexport type EnvironmentItemData = {\n icon: string;\n name: string;\n};\n\nexport type recentObjectData = {\n id: string;\n typeIcon: string;\n name: string;\n modificationDate: Date;\n status: RecentObjectStatus;\n};\n\nexport type RecentObjectStatus =\n | \"new\"\n | \"modified\"\n | \"conflicted\"\n | \"unmodified\"\n | \"not-connected\";\n\nexport type StatusIcons =\n // toDo: Add proper icons!!\n | \"gx-server/new\"\n | \"patterns-default-associated/modified\"\n | \"patterns-default-associated/synchronized\"\n | \"gx-server/delete\";\n\nexport type EditResult = {\n success: boolean;\n errorMessage: string;\n};\n"],"version":3}
@@ -37,13 +37,13 @@ const GxIdeEmptyState = /*@__PURE__*/ proxyCustomElement(class GxIdeEmptyState e
37
37
  }
38
38
  watchDisplayHandler(display) {
39
39
  if (display) {
40
- this.primaryButtonEl.disabled = false;
41
- this.secondaryButtonEl.disabled = false;
40
+ this.primaryButtonLabel && (this.primaryButtonEl.disabled = false);
41
+ this.secondaryButtonLabel && (this.secondaryButtonEl.disabled = false);
42
42
  }
43
43
  else {
44
44
  setTimeout(() => {
45
- this.primaryButtonEl.disabled = true;
46
- this.secondaryButtonEl.disabled = true;
45
+ this.primaryButtonLabel && (this.primaryButtonEl.disabled = true);
46
+ this.secondaryButtonLabel && (this.secondaryButtonEl.disabled = true);
47
47
  }, this.transitionSpeed);
48
48
  }
49
49
  }
@@ -1 +1 @@
1
- {"file":"gx-ide-empty-state2.js","mappings":";;;;;;;;AAAA,MAAM,kBAAkB,GAAG,moBAAmoB;;MCOjpB,eAAe;;;;;;;;;;;;;;;;;;;QAiBlB,oBAAe,GAAW,GAAG,CAAC;;;;;;uBAwCM,KAAK;;IAEjD,mBAAmB,CAAC,OAAgB;QAClC,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,KAAK,CAAC;SACzC;aAAM;YACL,UAAU,CAAC;gBACT,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC;aACxC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;SAC1B;KACF;;;IAMD,iBAAiB;QACf,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CACvB,0BAA0B,EAC1B,GAAG,IAAI,CAAC,eAAe,IAAI,CAC5B,CAAC;KACH;IAED,gBAAgB;QACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACrB;;;;;IAUD,MAAM;QACJ,QACE,EAAC,IAAI,QACH,WAAK,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,OAAO,EAAE,IAClE,IAAI,CAAC,SAAS,IACb,YAAM,KAAK,EAAC,cAAc,IACxB,gBACE,KAAK,EAAC,MAAM,EACZ,IAAI,EAAE,IAAI,CAAC,SAAS,EACpB,KAAK,EAAC,iBAAiB,IAEtB,IAAI,CAAC,UAAU,CACP,CACN,IACL,IAAI,EACR,YAAM,KAAK,EAAC,iBAAiB,IAC1B,IAAI,CAAC,UAAU,IACd,oBAAc,SAAS,EAAC,QAAQ,IAAE,IAAI,CAAC,UAAU,CAAgB,IAC/D,IAAI,EACP,IAAI,CAAC,gBAAgB,IACpB,gBAAU,SAAS,EAAC,QAAQ,IAAE,IAAI,CAAC,gBAAgB,CAAY,IAC7D,IAAI,CACH,EACP,WAAK,KAAK,EAAC,oBAAoB,IAC5B,IAAI,CAAC,kBAAkB,IACtB,kBACE,IAAI,EAAC,mBAAmB,EACxB,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,eAAe,GAAG,EAA0B,CAAC,IAE7D,IAAI,CAAC,kBAAkB,CACb,IACX,IAAI,EACP,IAAI,CAAC,oBAAoB,IACxB,kBACE,IAAI,EAAC,qBAAqB,EAC1B,GAAG,EAAE,EAAE,KACJ,IAAI,CAAC,iBAAiB,GAAG,EAA0B,CAAC,IAGtD,IAAI,CAAC,oBAAoB,CACf,IACX,IAAI,CACJ,CACF,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"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":[":host {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.container {\n max-width: 520px;\n margin: 0 auto;\n gap: var(--mer-spacing--xl);\n opacity: 0;\n transition: opacity var(--state-transition-speed);\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 &__main {\n gap: var(--mer-spacing--sm);\n }\n &__buttons {\n gap: var(--mer-spacing--xs);\n }\n &--visible {\n opacity: 1;\n }\n}\n.container,\n.container__main,\n.container__buttons {\n display: flex;\n align-items: center;\n flex-direction: column;\n}\n","import { Component, Host, h, Prop, Watch, Element } from \"@stencil/core\";\n\n@Component({\n tag: \"gx-ide-empty-state\",\n styleUrl: \"gx-ide-empty-state.scss\",\n shadow: true\n})\nexport class GxIdeEmptyState {\n /*\nINDEX:\n1.OWN PROPERTIES \n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE METHODS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES //\n\n private transitionSpeed: number = 200;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeEmptyStateElement;\n private primaryButtonEl!: HTMLGxgButtonElement;\n private secondaryButtonEl!: HTMLGxgButtonElement;\n\n // 3.STATE() VARIABLES //\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * The state icon\n */\n @Prop() readonly stateIcon?: string;\n\n /**\n * The state title\n */\n @Prop() readonly stateTitle!: string;\n\n /**\n * The state description\n */\n @Prop() readonly stateDescription?: string;\n\n /**\n * The button primary label\n */\n @Prop() readonly primaryButtonLabel?: string;\n\n /**\n * The button secondary label\n */\n @Prop() readonly secondaryButtonLabel?: string;\n\n /**\n * If true, it will display the content\n */\n @Prop({ mutable: true }) display: boolean = false;\n @Watch(\"display\")\n watchDisplayHandler(display: boolean) {\n if (display) {\n this.primaryButtonEl.disabled = false;\n this.secondaryButtonEl.disabled = false;\n } else {\n setTimeout(() => {\n this.primaryButtonEl.disabled = true;\n this.secondaryButtonEl.disabled = true;\n }, this.transitionSpeed);\n }\n }\n\n // 5.EVENTS (EMIT) //\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n componentWillLoad() {\n this.el.style.setProperty(\n \"--state-transition-speed\",\n `${this.transitionSpeed}ms`\n );\n }\n\n componentDidLoad() {\n this.display = true;\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host>\n <div class={{ \"container\": true, \"container--visible\": this.display }}>\n {this.stateIcon ? (\n <span class=\"icon-wrapper\">\n <gxg-icon\n class=\"icon\"\n type={this.stateIcon}\n color=\"mercury-primary\"\n >\n {this.stateTitle}\n </gxg-icon>\n </span>\n ) : null}\n <main class=\"container__main\">\n {this.stateTitle ? (\n <gx-ide-title alignment=\"center\">{this.stateTitle}</gx-ide-title>\n ) : null}\n {this.stateDescription ? (\n <gxg-text textAlign=\"center\">{this.stateDescription}</gxg-text>\n ) : null}\n </main>\n <div class=\"container__buttons\">\n {this.primaryButtonLabel ? (\n <gxg-button\n type=\"primary-text-only\"\n ref={el => (this.primaryButtonEl = el as HTMLGxgButtonElement)}\n >\n {this.primaryButtonLabel}\n </gxg-button>\n ) : null}\n {this.secondaryButtonLabel ? (\n <gxg-button\n type=\"secondary-text-only\"\n ref={el =>\n (this.secondaryButtonEl = el as HTMLGxgButtonElement)\n }\n >\n {this.secondaryButtonLabel}\n </gxg-button>\n ) : null}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"gx-ide-empty-state2.js","mappings":";;;;;;;;AAAA,MAAM,kBAAkB,GAAG,moBAAmoB;;MCOjpB,eAAe;;;;;;;;;;;;;;;;;;;QAiBlB,oBAAe,GAAW,GAAG,CAAC;;;;;;uBAwCM,KAAK;;IAEjD,mBAAmB,CAAC,OAAgB;QAClC,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;YACnE,IAAI,CAAC,oBAAoB,KAAK,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;SACxE;aAAM;YACL,UAAU,CAAC;gBACT,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;gBAClE,IAAI,CAAC,oBAAoB,KAAK,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;aACvE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;SAC1B;KACF;;;IAMD,iBAAiB;QACf,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CACvB,0BAA0B,EAC1B,GAAG,IAAI,CAAC,eAAe,IAAI,CAC5B,CAAC;KACH;IAED,gBAAgB;QACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACrB;;;;;IAUD,MAAM;QACJ,QACE,EAAC,IAAI,QACH,WAAK,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,OAAO,EAAE,IAClE,IAAI,CAAC,SAAS,IACb,YAAM,KAAK,EAAC,cAAc,IACxB,gBACE,KAAK,EAAC,MAAM,EACZ,IAAI,EAAE,IAAI,CAAC,SAAS,EACpB,KAAK,EAAC,iBAAiB,IAEtB,IAAI,CAAC,UAAU,CACP,CACN,IACL,IAAI,EACR,YAAM,KAAK,EAAC,iBAAiB,IAC1B,IAAI,CAAC,UAAU,IACd,oBAAc,SAAS,EAAC,QAAQ,IAAE,IAAI,CAAC,UAAU,CAAgB,IAC/D,IAAI,EACP,IAAI,CAAC,gBAAgB,IACpB,gBAAU,SAAS,EAAC,QAAQ,IAAE,IAAI,CAAC,gBAAgB,CAAY,IAC7D,IAAI,CACH,EACP,WAAK,KAAK,EAAC,oBAAoB,IAC5B,IAAI,CAAC,kBAAkB,IACtB,kBACE,IAAI,EAAC,mBAAmB,EACxB,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,eAAe,GAAG,EAA0B,CAAC,IAE7D,IAAI,CAAC,kBAAkB,CACb,IACX,IAAI,EACP,IAAI,CAAC,oBAAoB,IACxB,kBACE,IAAI,EAAC,qBAAqB,EAC1B,GAAG,EAAE,EAAE,KACJ,IAAI,CAAC,iBAAiB,GAAG,EAA0B,CAAC,IAGtD,IAAI,CAAC,oBAAoB,CACf,IACX,IAAI,CACJ,CACF,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"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":[":host {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.container {\n max-width: 520px;\n margin: 0 auto;\n gap: var(--mer-spacing--xl);\n opacity: 0;\n transition: opacity var(--state-transition-speed);\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 &__main {\n gap: var(--mer-spacing--sm);\n }\n &__buttons {\n gap: var(--mer-spacing--xs);\n }\n &--visible {\n opacity: 1;\n }\n}\n.container,\n.container__main,\n.container__buttons {\n display: flex;\n align-items: center;\n flex-direction: column;\n}\n","import { Component, Host, h, Prop, Watch, Element } from \"@stencil/core\";\n\n@Component({\n tag: \"gx-ide-empty-state\",\n styleUrl: \"gx-ide-empty-state.scss\",\n shadow: true\n})\nexport class GxIdeEmptyState {\n /*\nINDEX:\n1.OWN PROPERTIES \n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE METHODS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES //\n\n private transitionSpeed: number = 200;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeEmptyStateElement;\n private primaryButtonEl!: HTMLGxgButtonElement;\n private secondaryButtonEl!: HTMLGxgButtonElement;\n\n // 3.STATE() VARIABLES //\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * The state icon\n */\n @Prop() readonly stateIcon?: string;\n\n /**\n * The state title\n */\n @Prop() readonly stateTitle!: string;\n\n /**\n * The state description\n */\n @Prop() readonly stateDescription?: string;\n\n /**\n * The button primary label\n */\n @Prop() readonly primaryButtonLabel?: string;\n\n /**\n * The button secondary label\n */\n @Prop() readonly secondaryButtonLabel?: string;\n\n /**\n * If true, it will display the content\n */\n @Prop({ mutable: true }) display: boolean = false;\n @Watch(\"display\")\n watchDisplayHandler(display: boolean) {\n if (display) {\n this.primaryButtonLabel && (this.primaryButtonEl.disabled = false);\n this.secondaryButtonLabel && (this.secondaryButtonEl.disabled = false);\n } else {\n setTimeout(() => {\n this.primaryButtonLabel && (this.primaryButtonEl.disabled = true);\n this.secondaryButtonLabel && (this.secondaryButtonEl.disabled = true);\n }, this.transitionSpeed);\n }\n }\n\n // 5.EVENTS (EMIT) //\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n componentWillLoad() {\n this.el.style.setProperty(\n \"--state-transition-speed\",\n `${this.transitionSpeed}ms`\n );\n }\n\n componentDidLoad() {\n this.display = true;\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host>\n <div class={{ \"container\": true, \"container--visible\": this.display }}>\n {this.stateIcon ? (\n <span class=\"icon-wrapper\">\n <gxg-icon\n class=\"icon\"\n type={this.stateIcon}\n color=\"mercury-primary\"\n >\n {this.stateTitle}\n </gxg-icon>\n </span>\n ) : null}\n <main class=\"container__main\">\n {this.stateTitle ? (\n <gx-ide-title alignment=\"center\">{this.stateTitle}</gx-ide-title>\n ) : null}\n {this.stateDescription ? (\n <gxg-text textAlign=\"center\">{this.stateDescription}</gxg-text>\n ) : null}\n </main>\n <div class=\"container__buttons\">\n {this.primaryButtonLabel ? (\n <gxg-button\n type=\"primary-text-only\"\n ref={el => (this.primaryButtonEl = el as HTMLGxgButtonElement)}\n >\n {this.primaryButtonLabel}\n </gxg-button>\n ) : null}\n {this.secondaryButtonLabel ? (\n <gxg-button\n type=\"secondary-text-only\"\n ref={el =>\n (this.secondaryButtonEl = el as HTMLGxgButtonElement)\n }\n >\n {this.secondaryButtonLabel}\n </gxg-button>\n ) : null}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}