@genexus/genexus-ide-ui 0.0.99 → 0.0.100

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 (183) hide show
  1. package/dist/cjs/ch-icon_5.cjs.entry.js +3 -2
  2. package/dist/cjs/ch-icon_5.cjs.entry.js.map +1 -1
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +2 -2
  5. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js.map +1 -1
  6. package/dist/cjs/{gx-ide-recent-news.cjs.entry.js → gx-ide-empty-state_2.cjs.entry.js} +64 -2
  7. package/dist/cjs/gx-ide-empty-state_2.cjs.entry.js.map +1 -0
  8. package/dist/cjs/gx-ide-import-from-design.cjs.entry.js +2 -9
  9. package/dist/cjs/gx-ide-import-from-design.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-start-page.cjs.entry.js +9 -5
  11. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  12. package/dist/cjs/gx-ide-status-buttons_2.cjs.entry.js +41 -27
  13. package/dist/cjs/gx-ide-status-buttons_2.cjs.entry.js.map +1 -1
  14. package/dist/cjs/gxg-card_2.cjs.entry.js +10 -5
  15. package/dist/cjs/gxg-card_2.cjs.entry.js.map +1 -1
  16. package/dist/cjs/gxg-combo-box_2.cjs.entry.js +62 -24
  17. package/dist/cjs/gxg-combo-box_2.cjs.entry.js.map +1 -1
  18. package/dist/cjs/gxg-list-box_2.cjs.entry.js +28 -3
  19. package/dist/cjs/gxg-list-box_2.cjs.entry.js.map +1 -1
  20. package/dist/cjs/gxg-menu-item.cjs.entry.js +1 -1
  21. package/dist/cjs/gxg-menu-item.cjs.entry.js.map +1 -1
  22. package/dist/cjs/gxg-pill.cjs.entry.js +5 -5
  23. package/dist/cjs/gxg-pill.cjs.entry.js.map +1 -1
  24. package/dist/cjs/gxg-pills.cjs.entry.js +1 -1
  25. package/dist/cjs/gxg-pills.cjs.entry.js.map +1 -1
  26. package/dist/cjs/gxg-tab_4.cjs.entry.js +97 -17
  27. package/dist/cjs/gxg-tab_4.cjs.entry.js.map +1 -1
  28. package/dist/cjs/gxg-window-v2.cjs.entry.js +28 -0
  29. package/dist/cjs/gxg-window-v2.cjs.entry.js.map +1 -0
  30. package/dist/cjs/loader.cjs.js +1 -1
  31. package/dist/collection/collection-manifest.json +3 -1
  32. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.css +40 -0
  33. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js +180 -0
  34. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js.map +1 -0
  35. package/dist/collection/components/_helpers/list-selector/list-selector-item/list-selector-item.js +1 -1
  36. package/dist/collection/components/_helpers/list-selector/list-selector.js +1 -1
  37. package/dist/collection/components/dashboard-home/dashboard-home.css +5 -0
  38. package/dist/collection/components/dashboard-home/dashboard-home.js +1 -1
  39. package/dist/collection/components/dashboard-home/dashboard-home.js.map +1 -1
  40. package/dist/collection/components/import-from-design/import-from-design.js +3 -12
  41. package/dist/collection/components/import-from-design/import-from-design.js.map +1 -1
  42. package/dist/collection/components/start-page/recent-news.css +1 -1
  43. package/dist/collection/components/start-page/start-page.css +4 -0
  44. package/dist/collection/components/start-page/start-page.js +8 -4
  45. package/dist/collection/components/start-page/start-page.js.map +1 -1
  46. package/dist/components/card.js +11 -5
  47. package/dist/components/card.js.map +1 -1
  48. package/dist/components/combo-box.js +62 -24
  49. package/dist/components/combo-box.js.map +1 -1
  50. package/dist/components/gx-ide-dashboard-home.js +2 -2
  51. package/dist/components/gx-ide-dashboard-home.js.map +1 -1
  52. package/dist/components/gx-ide-empty-state.d.ts +11 -0
  53. package/dist/components/gx-ide-empty-state.js +8 -0
  54. package/dist/components/gx-ide-empty-state.js.map +1 -0
  55. package/dist/components/gx-ide-empty-state2.js +126 -0
  56. package/dist/components/gx-ide-empty-state2.js.map +1 -0
  57. package/dist/components/gx-ide-import-from-design.js +3 -11
  58. package/dist/components/gx-ide-import-from-design.js.map +1 -1
  59. package/dist/components/gx-ide-start-page.js +21 -11
  60. package/dist/components/gx-ide-start-page.js.map +1 -1
  61. package/dist/components/gxg-menu-item.js +1 -1
  62. package/dist/components/gxg-menu-item.js.map +1 -1
  63. package/dist/components/gxg-pills.js +1 -1
  64. package/dist/components/gxg-pills.js.map +1 -1
  65. package/dist/components/gxg-top-state-bar2.js +46 -30
  66. package/dist/components/gxg-top-state-bar2.js.map +1 -1
  67. package/dist/components/gxg-window-v2.js +44 -0
  68. package/dist/components/gxg-window-v2.js.map +1 -0
  69. package/dist/components/icon2.js +3 -2
  70. package/dist/components/icon2.js.map +1 -1
  71. package/dist/components/list-box.js +27 -1
  72. package/dist/components/list-box.js.map +1 -1
  73. package/dist/components/pill.js +5 -5
  74. package/dist/components/pill.js.map +1 -1
  75. package/dist/components/recent-news.js +1 -1
  76. package/dist/components/recent-news.js.map +1 -1
  77. package/dist/components/tab-bar.js +17 -9
  78. package/dist/components/tab-bar.js.map +1 -1
  79. package/dist/components/tab-button.js +11 -4
  80. package/dist/components/tab-button.js.map +1 -1
  81. package/dist/components/tab.js +6 -3
  82. package/dist/components/tab.js.map +1 -1
  83. package/dist/components/tabs.js +73 -4
  84. package/dist/components/tabs.js.map +1 -1
  85. package/dist/esm/ch-icon_5.entry.js +3 -2
  86. package/dist/esm/ch-icon_5.entry.js.map +1 -1
  87. package/dist/esm/genexus-ide-ui.js +1 -1
  88. package/dist/esm/gx-ide-dashboard-home.entry.js +2 -2
  89. package/dist/esm/gx-ide-dashboard-home.entry.js.map +1 -1
  90. package/dist/esm/{gx-ide-recent-news.entry.js → gx-ide-empty-state_2.entry.js} +64 -3
  91. package/dist/esm/gx-ide-empty-state_2.entry.js.map +1 -0
  92. package/dist/esm/gx-ide-import-from-design.entry.js +2 -9
  93. package/dist/esm/gx-ide-import-from-design.entry.js.map +1 -1
  94. package/dist/esm/gx-ide-start-page.entry.js +9 -5
  95. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  96. package/dist/esm/gx-ide-status-buttons_2.entry.js +41 -27
  97. package/dist/esm/gx-ide-status-buttons_2.entry.js.map +1 -1
  98. package/dist/esm/gxg-card_2.entry.js +10 -5
  99. package/dist/esm/gxg-card_2.entry.js.map +1 -1
  100. package/dist/esm/gxg-combo-box_2.entry.js +62 -24
  101. package/dist/esm/gxg-combo-box_2.entry.js.map +1 -1
  102. package/dist/esm/gxg-list-box_2.entry.js +27 -2
  103. package/dist/esm/gxg-list-box_2.entry.js.map +1 -1
  104. package/dist/esm/gxg-menu-item.entry.js +1 -1
  105. package/dist/esm/gxg-menu-item.entry.js.map +1 -1
  106. package/dist/esm/gxg-pill.entry.js +5 -5
  107. package/dist/esm/gxg-pill.entry.js.map +1 -1
  108. package/dist/esm/gxg-pills.entry.js +1 -1
  109. package/dist/esm/gxg-pills.entry.js.map +1 -1
  110. package/dist/esm/gxg-tab_4.entry.js +97 -17
  111. package/dist/esm/gxg-tab_4.entry.js.map +1 -1
  112. package/dist/esm/gxg-window-v2.entry.js +24 -0
  113. package/dist/esm/gxg-window-v2.entry.js.map +1 -0
  114. package/dist/esm/loader.js +1 -1
  115. package/dist/genexus-ide-ui/genexus-ide-ui.css +74 -7
  116. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  117. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  118. package/dist/genexus-ide-ui/icon-assets/mercury/tests/balanza-path.svg +3 -0
  119. package/dist/genexus-ide-ui/icon-assets/mercury/tests/balanza-stroke.svg +9 -0
  120. package/dist/genexus-ide-ui/icon-assets/mercury/tests/folder-2.svg +3 -0
  121. package/dist/genexus-ide-ui/{p-b8fc93f4.entry.js → p-2c8afaa6.entry.js} +147 -112
  122. package/dist/genexus-ide-ui/p-2c8afaa6.entry.js.map +1 -0
  123. package/dist/genexus-ide-ui/{p-5ca84a03.entry.js → p-4e155cd5.entry.js} +27 -4
  124. package/dist/genexus-ide-ui/p-4e155cd5.entry.js.map +1 -0
  125. package/dist/genexus-ide-ui/p-4fc6d6a7.entry.js +24 -0
  126. package/dist/genexus-ide-ui/p-4fc6d6a7.entry.js.map +1 -0
  127. package/dist/genexus-ide-ui/p-54e4b362.entry.js +270 -0
  128. package/dist/genexus-ide-ui/p-54e4b362.entry.js.map +1 -0
  129. package/dist/genexus-ide-ui/{p-73aa4e69.entry.js → p-71f8aba2.entry.js} +13 -13
  130. package/dist/genexus-ide-ui/{p-73aa4e69.entry.js.map → p-71f8aba2.entry.js.map} +1 -1
  131. package/dist/genexus-ide-ui/{p-545291ad.entry.js → p-7dc3a137.entry.js} +4 -3
  132. package/dist/genexus-ide-ui/{p-545291ad.entry.js.map → p-7dc3a137.entry.js.map} +1 -1
  133. package/dist/genexus-ide-ui/{p-f186adfd.entry.js → p-85639fa5.entry.js} +100 -22
  134. package/dist/genexus-ide-ui/p-85639fa5.entry.js.map +1 -0
  135. package/dist/genexus-ide-ui/{p-30365c44.entry.js → p-a3e07b86.entry.js} +6 -7
  136. package/dist/genexus-ide-ui/p-a3e07b86.entry.js.map +1 -0
  137. package/dist/genexus-ide-ui/{p-9c6c5a61.entry.js → p-a592930e.entry.js} +37 -32
  138. package/dist/genexus-ide-ui/p-a592930e.entry.js.map +1 -0
  139. package/dist/genexus-ide-ui/p-b0e539fe.entry.js +41 -0
  140. package/dist/genexus-ide-ui/p-b0e539fe.entry.js.map +1 -0
  141. package/dist/genexus-ide-ui/{p-a439149b.entry.js → p-bff2603a.entry.js} +8 -3
  142. package/dist/genexus-ide-ui/p-bff2603a.entry.js.map +1 -0
  143. package/dist/genexus-ide-ui/{p-050bc199.entry.js → p-e0924e3f.entry.js} +96 -6
  144. package/dist/genexus-ide-ui/p-e0924e3f.entry.js.map +1 -0
  145. package/dist/genexus-ide-ui/{p-58cad79d.entry.js → p-e240361a.entry.js} +58 -68
  146. package/dist/genexus-ide-ui/p-e240361a.entry.js.map +1 -0
  147. package/dist/genexus-ide-ui/{p-e585f550.entry.js → p-e3925761.entry.js} +4 -5
  148. package/dist/genexus-ide-ui/{p-e585f550.entry.js.map → p-e3925761.entry.js.map} +1 -1
  149. package/dist/node_modules/@genexus/gemini/dist/collection/components/card/card.css +13 -1
  150. package/dist/node_modules/@genexus/gemini/dist/collection/components/pills/pill.css +16 -51
  151. package/dist/node_modules/@genexus/gemini/dist/collection/components/pills/pills.css +1 -8
  152. package/dist/node_modules/@genexus/gemini/dist/collection/components/tab/tab.css +7 -0
  153. package/dist/node_modules/@genexus/gemini/dist/collection/components/tab-bar/tab-bar.css +18 -0
  154. package/dist/node_modules/@genexus/gemini/dist/collection/components/tab-button/tab-button.css +17 -0
  155. package/dist/node_modules/@genexus/gemini/dist/collection/components/tabs/tabs.css +64 -13
  156. package/dist/node_modules/@genexus/gemini/dist/collection/components/top-state-bar/gxg-top-state-bar.css +120 -43
  157. package/dist/node_modules/@genexus/gemini/dist/collection/components/window-v2/window.css +3 -0
  158. package/dist/types/components/_helpers/empty-state/gx-ide-empty-state.d.ts +34 -0
  159. package/dist/types/components/import-from-design/import-from-design.d.ts +1 -3
  160. package/dist/types/components.d.ts +61 -0
  161. package/package.json +3 -3
  162. package/dist/cjs/gx-ide-recent-news.cjs.entry.js.map +0 -1
  163. package/dist/cjs/reposition-scroll-86d8fac5.js +0 -33
  164. package/dist/cjs/reposition-scroll-86d8fac5.js.map +0 -1
  165. package/dist/components/reposition-scroll.js +0 -31
  166. package/dist/components/reposition-scroll.js.map +0 -1
  167. package/dist/esm/gx-ide-recent-news.entry.js.map +0 -1
  168. package/dist/esm/reposition-scroll-cfff7017.js +0 -31
  169. package/dist/esm/reposition-scroll-cfff7017.js.map +0 -1
  170. package/dist/genexus-ide-ui/p-050bc199.entry.js.map +0 -1
  171. package/dist/genexus-ide-ui/p-30365c44.entry.js.map +0 -1
  172. package/dist/genexus-ide-ui/p-3e87257c.entry.js +0 -41
  173. package/dist/genexus-ide-ui/p-3e87257c.entry.js.map +0 -1
  174. package/dist/genexus-ide-ui/p-58cad79d.entry.js.map +0 -1
  175. package/dist/genexus-ide-ui/p-5ca84a03.entry.js.map +0 -1
  176. package/dist/genexus-ide-ui/p-9c6c5a61.entry.js.map +0 -1
  177. package/dist/genexus-ide-ui/p-a439149b.entry.js.map +0 -1
  178. package/dist/genexus-ide-ui/p-b8fc93f4.entry.js.map +0 -1
  179. package/dist/genexus-ide-ui/p-efa273d7.js +0 -27
  180. package/dist/genexus-ide-ui/p-efa273d7.js.map +0 -1
  181. package/dist/genexus-ide-ui/p-f186adfd.entry.js.map +0 -1
  182. package/dist/genexus-ide-ui/p-f5034221.entry.js +0 -258
  183. package/dist/genexus-ide-ui/p-f5034221.entry.js.map +0 -1
@@ -357,6 +357,13 @@ FORM ELEMENTS
357
357
  :host .container::-webkit-scrollbar-corner {
358
358
  background: rgba(0, 0, 0, 0);
359
359
  }
360
+ :host .container--reduced {
361
+ font-size: var(--gxg-tab-font-size--reduced);
362
+ padding-block-start: var(--gxg-tab-vertical-padding--reduced);
363
+ padding-inline-end: var(--gxg-tab-horizontal-padding--reduced);
364
+ padding-block-end: var(--gxg-tab-vertical-padding--reduced);
365
+ padding-inline-start: var(--gxg-tab-horizontal-padding--reduced);
366
+ }
360
367
 
361
368
  :host(.not-selected) {
362
369
  display: none;
@@ -382,6 +382,24 @@ FORM ELEMENTS
382
382
  width: 0;
383
383
  }
384
384
 
385
+ /*Stacked*/
386
+ :host(.gxg-tab-bar--left-stacked),
387
+ :host(.gxg-tab-bar--right-stacked) {
388
+ height: 100%;
389
+ }
390
+ :host(.gxg-tab-bar--left-stacked) .tab-bar,
391
+ :host(.gxg-tab-bar--right-stacked) .tab-bar {
392
+ flex-direction: column;
393
+ }
394
+
395
+ :host(.gxg-tab-bar--left-stacked) {
396
+ border-inline-end: var(--ds-border-common-styles);
397
+ }
398
+
399
+ :host(.gxg-tab-bar--right-stacked) {
400
+ border-inline-start: var(--ds-border-common-styles);
401
+ }
402
+
385
403
  /*Scrollable*/
386
404
  :host([scrollable]) .nav {
387
405
  width: 100%;
@@ -344,6 +344,7 @@ FORM ELEMENTS
344
344
  -moz-box-shadow: none;
345
345
  box-shadow: none;
346
346
  background-color: transparent;
347
+ /*stacked style*/
347
348
  }
348
349
  :host .tab-button:focus-visible {
349
350
  outline: var(--ds-focus-border-width) solid var(--ds-border-color-control--focused);
@@ -404,10 +405,26 @@ FORM ELEMENTS
404
405
  :host .tab-button gxg-icon {
405
406
  --gxg-icon-color: var(--gxg-tab-button-icon-color);
406
407
  }
408
+ :host .tab-button--reduced {
409
+ padding-inline-end: var(--gxg-tab-button-horizontal-padding--reduced);
410
+ padding-inline-start: var(--gxg-tab-button-horizontal-padding--reduced);
411
+ font-size: var(--gxg-tab-button-font-size--reduced);
412
+ height: var(--gxg-tab-button-height--reduced);
413
+ }
414
+ :host .tab-button--stacked-style {
415
+ justify-content: flex-start;
416
+ }
417
+ :host .tab-button--stacked-style.tab-button--text-icon {
418
+ padding-inline-start: var(--gxg-tab-button-horizontal-padding--stacked);
419
+ }
407
420
  :host .tab-button__text {
408
421
  display: inline-block;
409
422
  }
410
423
 
424
+ :host(.stacked) {
425
+ width: 100%;
426
+ }
427
+
411
428
  :host([slot=tab-menu]) .tab-button {
412
429
  padding-left: 0;
413
430
  padding-right: 0;
@@ -344,26 +344,77 @@ FORM ELEMENTS
344
344
  overflow-y: auto;
345
345
  }
346
346
 
347
- :host([position=left]) .tab-bar-container {
348
- transform: rotate(-90deg) translate(-100%, 0);
349
- transform-origin: left top;
350
- position: absolute;
351
- z-index: 10;
347
+ :host([position=left-rotated]) .main-container,
348
+ :host([position=right-rotated]) .main-container {
349
+ flex-direction: row;
352
350
  }
353
- :host([position=left]) .tabs-container {
351
+ :host([position=left-rotated]) .tab-bar-container,
352
+ :host([position=right-rotated]) .tab-bar-container {
354
353
  height: 100%;
355
- width: calc(100% - 32px);
356
- margin-left: 32px;
354
+ overflow: auto;
355
+ width: 40px;
356
+ position: relative;
357
+ /* Track */
358
+ /* Handle */
359
+ /* Handle on hover */
357
360
  }
358
-
359
- :host([position=right]) .tab-bar-container {
361
+ :host([position=left-rotated]) .tab-bar-container::-webkit-scrollbar,
362
+ :host([position=right-rotated]) .tab-bar-container::-webkit-scrollbar {
363
+ width: var(--gxg-scrollbar-width);
364
+ height: var(--gxg-scrollbar-width);
365
+ }
366
+ :host([position=left-rotated]) .tab-bar-container::-webkit-scrollbar-track,
367
+ :host([position=right-rotated]) .tab-bar-container::-webkit-scrollbar-track {
368
+ background-color: var(--gxg-scrollbar-track-background);
369
+ border-radius: var(--gxg-scrollbar-track-border-radius);
370
+ }
371
+ :host([position=left-rotated]) .tab-bar-container::-webkit-scrollbar-thumb,
372
+ :host([position=right-rotated]) .tab-bar-container::-webkit-scrollbar-thumb {
373
+ background-color: var(--gxg-scrollbar-track-thumb-background);
374
+ border-radius: var(--gxg-scrollbar-track-thumb-radius);
375
+ }
376
+ :host([position=left-rotated]) .tab-bar-container::-webkit-scrollbar-thumb:hover,
377
+ :host([position=right-rotated]) .tab-bar-container::-webkit-scrollbar-thumb:hover {
378
+ background-color: var(--gxg-scrollbar-track-thumb-hover-background);
379
+ }
380
+ :host([position=left-rotated]) .tab-bar-container::-webkit-scrollbar-corner,
381
+ :host([position=right-rotated]) .tab-bar-container::-webkit-scrollbar-corner {
382
+ background: rgba(0, 0, 0, 0);
383
+ }
384
+ :host([position=left-rotated]) ::slotted(gxg-tab-bar),
385
+ :host([position=right-rotated]) ::slotted(gxg-tab-bar) {
360
386
  transform: rotate(-90deg) translate(-100%, 0);
361
387
  transform-origin: left top;
362
388
  position: absolute;
363
389
  z-index: 10;
364
- left: calc(100% - 32px);
365
390
  }
366
- :host([position=right]) .tabs-container {
367
- height: 100%;
391
+ :host([position=left-rotated]) ::slotted(gxg-tab),
392
+ :host([position=right-rotated]) ::slotted(gxg-tab) {
393
+ border-left-width: var(--gxg-tabs-border-width);
394
+ border-left-style: solid;
395
+ border-left-color: var(--gxg-tabs-border-color);
396
+ }
397
+ :host([position=left-rotated]) .tabs-container,
398
+ :host([position=right-rotated]) .tabs-container {
368
399
  width: calc(100% - 32px);
400
+ }
401
+ :host([position=left-rotated]) .main-container {
402
+ flex-direction: row;
403
+ }
404
+
405
+ :host([position=right-rotated]) .main-container {
406
+ flex-direction: row-reverse;
407
+ }
408
+
409
+ :host([position=left-stacked]) .main-container,
410
+ :host([position=right-stacked]) .main-container {
411
+ flex-direction: row;
412
+ }
413
+
414
+ :host([position=left-stacked]) .main-container {
415
+ flex-direction: row;
416
+ }
417
+
418
+ :host([position=right-stacked]) .main-container {
419
+ flex-direction: row-reverse;
369
420
  }
@@ -13,57 +13,118 @@
13
13
  }
14
14
 
15
15
  .top-state-bar {
16
+ position: relative;
17
+ border-radius: var(--mer-border__width--lg);
18
+ list-style: var(--mer-font__size--xxs);
19
+ display: flex;
20
+ opacity: 0;
21
+ transition: 150ms opacity;
16
22
  /*states*/
17
- /*with action*/
23
+ }
24
+ .top-state-bar:before {
25
+ content: "";
26
+ width: 100%;
27
+ height: 100%;
28
+ position: absolute;
29
+ background-color: var(--mer-color__elevation--04);
30
+ z-index: -1;
31
+ }
32
+ .top-state-bar:after {
33
+ content: "";
34
+ left: var(--mer-border__width--sm);
35
+ top: var(--mer-border__width--sm);
36
+ width: calc(100% - var(--mer-border__width--sm) * 2);
37
+ height: calc(100% - var(--mer-border__width--sm) * 2);
38
+ position: absolute;
39
+ background-color: var(--mer-color__surface);
40
+ z-index: 0;
41
+ border-radius: var(--mer-border__width--lg);
42
+ }
43
+ .top-state-bar > * {
44
+ position: relative;
45
+ z-index: 1;
18
46
  }
19
47
  .top-state-bar__wrapper {
20
- padding: 0 var(--mer-spacing--md);
48
+ flex: 1;
21
49
  display: flex;
22
- justify-content: center;
23
- align-items: center;
24
- height: var(--mer-spacing--xxl);
50
+ flex-direction: column;
51
+ gap: var(--mer-spacing--xs);
52
+ padding: var(--mer-spacing--sm) var(--mer-spacing--sm);
25
53
  }
26
54
  .top-state-bar__caption {
27
- opacity: 0;
28
- transition: 150ms opacity;
29
55
  color: var(--mer-text__on-message);
30
56
  font-family: var(--ds-base-font-family-primary);
31
- font-size: var(--mer-font__size--sm);
32
- font-weight: var(--mer-font__weight--semi-bold);
57
+ font-size: var(--mer-font__size--xxs);
58
+ line-height: var(--mer-font__size--xxs);
59
+ font-weight: var(--mer-font__weight--regular);
60
+ display: flex;
61
+ align-items: baseline;
62
+ font-style: italic;
33
63
  }
34
- .top-state-bar__caption--visible {
35
- opacity: 1;
64
+ .top-state-bar__progress-wrapper {
65
+ height: var(--mer-spacing--xxs);
66
+ background-color: var(--mer-color__elevation--04);
36
67
  }
37
- .top-state-bar__close {
38
- opacity: 0;
39
- transition: 200ms opacity;
68
+ .top-state-bar__close-wrapper {
40
69
  cursor: pointer;
70
+ border-inline-start: 1px solid var(--mer-color__elevation--04);
71
+ display: flex;
72
+ align-items: center;
73
+ transition: 200ms background-color;
41
74
  }
42
- .top-state-bar__close:hover {
75
+ .top-state-bar__close-wrapper:hover .top-state-bar__close {
43
76
  opacity: 0.75;
44
77
  }
45
- .top-state-bar__close--visible {
46
- opacity: 1;
78
+ .top-state-bar__close-wrapper:active .top-state-bar__close {
79
+ opacity: 0.5;
47
80
  }
48
- .top-state-bar--accent .top-state-bar__wrapper {
81
+ .top-state-bar--accent .progress-bar {
49
82
  background-color: var(--mer-accent__primary);
50
- color: var(--mer-text__on-primary);
51
83
  }
52
- .top-state-bar--success .top-state-bar__wrapper {
84
+ .top-state-bar--accent .top-state-bar__caption {
85
+ color: var(--mer-accent__primary);
86
+ }
87
+ .top-state-bar--success .progress-bar {
53
88
  background-color: var(--mer-color__message-green--100);
54
89
  }
55
- .top-state-bar--warning .top-state-bar__wrapper {
90
+ .top-state-bar--success .top-state-bar__caption {
91
+ color: var(--mer-color__message-green--100);
92
+ }
93
+ .top-state-bar--warning .progress-bar {
56
94
  background-color: var(--mer-color__message-yellow--100);
57
95
  }
58
- .top-state-bar--error .top-state-bar__wrapper {
96
+ .top-state-bar--warning .top-state-bar__caption {
97
+ color: var(--mer-color__message-yellow--100);
98
+ }
99
+ .top-state-bar--error .progress-bar {
59
100
  background-color: var(--mer-color__message-red--100);
60
101
  }
61
- .top-state-bar--in-progress .top-state-bar__wrapper {
102
+ .top-state-bar--error .top-state-bar__caption {
103
+ color: var(--mer-color__message-red--100);
104
+ }
105
+ .top-state-bar--in-progress:before {
106
+ height: 0;
107
+ width: 120%;
108
+ padding-top: 60%;
109
+ padding-bottom: 60%;
110
+ background: linear-gradient(90deg, #5ba7ff 0%, #3fa89b 100%);
111
+ top: 50%;
112
+ left: 50%;
113
+ transform: translate(-50%, -50%);
114
+ -webkit-animation: inProgressBackgroundColor 1s linear infinite;
115
+ animation: inProgressBackgroundColor 1s linear infinite;
116
+ }
117
+ .top-state-bar--in-progress .top-state-bar__close-wrapper {
118
+ border-inline-start-color: #3fa89b;
119
+ -webkit-animation: inProgressBorderColor 1s linear infinite;
120
+ animation: inProgressBorderColor 1s linear infinite;
121
+ }
122
+ .top-state-bar--in-progress .progress-bar {
62
123
  position: relative;
63
124
  overflow: hidden;
64
125
  z-index: 1;
65
126
  }
66
- .top-state-bar--in-progress .top-state-bar__wrapper:after {
127
+ .top-state-bar--in-progress .progress-bar:after {
67
128
  content: "";
68
129
  position: absolute;
69
130
  z-index: 0;
@@ -71,27 +132,35 @@
71
132
  height: 100%;
72
133
  left: 0;
73
134
  background: linear-gradient(90deg, #93f5eb 0%, #1aa3ff 33%, #93f5eb 66%, #1aa3ff 100%);
74
- animation-name: inProgress;
135
+ animation-name: inProgressBar;
75
136
  animation-duration: 2s;
76
137
  animation-iteration-count: infinite;
77
138
  }
78
139
  .top-state-bar--in-progress .top-state-bar__caption {
79
- display: flex;
80
- align-items: center;
81
- flex-direction: column;
82
- position: relative;
83
- z-index: 2;
140
+ color: #3fa89b;
84
141
  }
85
- .top-state-bar--with-action .top-state-bar__caption {
86
- flex: 1;
87
- text-align: center;
88
- }
89
- .top-state-bar--with-action .top-state-bar__wrapper {
90
- padding-inline-end: var(--mer-spacing--xxs);
142
+ .top-state-bar--visible {
143
+ opacity: 1;
91
144
  }
92
145
 
93
146
  /*in progress animation*/
94
- @-webkit-keyframes inProgress {
147
+ @-webkit-keyframes inProgressBorderColor {
148
+ 0% {
149
+ border-inline-start-color: #3fa89b;
150
+ }
151
+ 100% {
152
+ border-inline-start-color: #5ba7ff;
153
+ }
154
+ }
155
+ @-webkit-keyframes inProgressBackgroundColor {
156
+ 0% {
157
+ transform: translate(-50%, -50%) rotate(0);
158
+ }
159
+ 100% {
160
+ transform: translate(-50%, -50%) rotate(1turn);
161
+ }
162
+ }
163
+ @-webkit-keyframes inProgressBar {
95
164
  0% {
96
165
  left: 0%;
97
166
  }
@@ -99,7 +168,7 @@
99
168
  left: -200%;
100
169
  }
101
170
  }
102
- @-moz-keyframes inProgress {
171
+ @-moz-keyframes inProgressBar {
103
172
  0% {
104
173
  left: 0%;
105
174
  }
@@ -107,7 +176,7 @@
107
176
  left: 200%;
108
177
  }
109
178
  }
110
- @keyframes inProgress {
179
+ @keyframes inProgressBar {
111
180
  0% {
112
181
  left: 0%;
113
182
  }
@@ -116,11 +185,19 @@
116
185
  }
117
186
  }
118
187
  .progress-bar {
188
+ display: block;
119
189
  transition: all 200ms;
120
190
  width: var(--top-bar-progress);
121
- background-color: var(--mer-accent__primary);
122
- height: var(--mer-spacing--xxs);
191
+ border-radius: calc(var(--mer-spacing--xxs) / 2);
192
+ height: 100%;
123
193
  }
124
- .progress-bar--hidden {
125
- height: 0;
194
+
195
+ :host([no-border]) .top-state-bar {
196
+ position: relative;
197
+ }
198
+ :host([no-border]) .top-state-bar:before, :host([no-border]) .top-state-bar:after {
199
+ display: none;
200
+ }
201
+ :host([no-border]) .top-state-bar__close-wrapper {
202
+ border-inline-start: none;
126
203
  }
@@ -0,0 +1,34 @@
1
+ export declare class GxIdeEmptyState {
2
+ private transitionSpeed;
3
+ el: HTMLGxIdeEmptyStateElement;
4
+ private primaryButtonEl;
5
+ private secondaryButtonEl;
6
+ /**
7
+ * The state icon
8
+ */
9
+ readonly stateIcon?: string;
10
+ /**
11
+ * The state title
12
+ */
13
+ readonly stateTitle: string;
14
+ /**
15
+ * The state description
16
+ */
17
+ readonly stateDescription?: string;
18
+ /**
19
+ * The button primary label
20
+ */
21
+ readonly primaryButtonLabel?: string;
22
+ /**
23
+ * The button secondary label
24
+ */
25
+ readonly secondaryButtonLabel?: string;
26
+ /**
27
+ * If true, it will display the content
28
+ */
29
+ display: boolean;
30
+ watchDisplayHandler(display: boolean): void;
31
+ componentWillLoad(): void;
32
+ componentDidLoad(): void;
33
+ render(): any;
34
+ }
@@ -30,7 +30,6 @@ export declare class GxIdeImportFromDesign {
30
30
  private tokensFactoryRenderEl;
31
31
  private stylesFactoryRenderEl;
32
32
  private treeDataEl;
33
- private tabsEl;
34
33
  /**
35
34
  * The design data loaded from file
36
35
  */
@@ -75,8 +74,7 @@ export declare class GxIdeImportFromDesign {
75
74
  /**
76
75
  * Used to trigger a re-render after an item has been selected on renderDesignTree, in order to set the first tab as the active tab (setFirstActiveTab()), since calling this method inside objectsTreeSelectedItemsChangedHandler does not always work without a setTimeOut.
77
76
  */
78
- counter: number;
79
- watchCounterHandler(): void;
77
+ updateTabsActiveTab: boolean;
80
78
  /**
81
79
  * If true, images will be fitted in the container
82
80
  */
@@ -460,6 +460,32 @@ export namespace Components {
460
460
  */
461
461
  "value": string;
462
462
  }
463
+ interface GxIdeEmptyState {
464
+ /**
465
+ * If true, it will display the content
466
+ */
467
+ "display": boolean;
468
+ /**
469
+ * The button primary label
470
+ */
471
+ "primaryButtonLabel"?: string;
472
+ /**
473
+ * The button secondary label
474
+ */
475
+ "secondaryButtonLabel"?: string;
476
+ /**
477
+ * The state description
478
+ */
479
+ "stateDescription"?: string;
480
+ /**
481
+ * The state icon
482
+ */
483
+ "stateIcon"?: string;
484
+ /**
485
+ * The state title
486
+ */
487
+ "stateTitle": string;
488
+ }
463
489
  interface GxIdeEntitySelector {
464
490
  /**
465
491
  * This property provides the user a way to define custom aria-label descriptions.
@@ -1751,6 +1777,12 @@ declare global {
1751
1777
  prototype: HTMLGxIdeDirectorySelectorElement;
1752
1778
  new (): HTMLGxIdeDirectorySelectorElement;
1753
1779
  };
1780
+ interface HTMLGxIdeEmptyStateElement extends Components.GxIdeEmptyState, HTMLStencilElement {
1781
+ }
1782
+ var HTMLGxIdeEmptyStateElement: {
1783
+ prototype: HTMLGxIdeEmptyStateElement;
1784
+ new (): HTMLGxIdeEmptyStateElement;
1785
+ };
1754
1786
  interface HTMLGxIdeEntitySelectorElementEventMap {
1755
1787
  "valueChanged": EntityData;
1756
1788
  }
@@ -2173,6 +2205,7 @@ declare global {
2173
2205
  "gx-ide-dashboard-home": HTMLGxIdeDashboardHomeElement;
2174
2206
  "gx-ide-data-selector": HTMLGxIdeDataSelectorElement;
2175
2207
  "gx-ide-directory-selector": HTMLGxIdeDirectorySelectorElement;
2208
+ "gx-ide-empty-state": HTMLGxIdeEmptyStateElement;
2176
2209
  "gx-ide-entity-selector": HTMLGxIdeEntitySelectorElement;
2177
2210
  "gx-ide-file-selector": HTMLGxIdeFileSelectorElement;
2178
2211
  "gx-ide-import-from-design": HTMLGxIdeImportFromDesignElement;
@@ -2596,6 +2629,32 @@ declare namespace LocalJSX {
2596
2629
  */
2597
2630
  "value"?: string;
2598
2631
  }
2632
+ interface GxIdeEmptyState {
2633
+ /**
2634
+ * If true, it will display the content
2635
+ */
2636
+ "display"?: boolean;
2637
+ /**
2638
+ * The button primary label
2639
+ */
2640
+ "primaryButtonLabel"?: string;
2641
+ /**
2642
+ * The button secondary label
2643
+ */
2644
+ "secondaryButtonLabel"?: string;
2645
+ /**
2646
+ * The state description
2647
+ */
2648
+ "stateDescription"?: string;
2649
+ /**
2650
+ * The state icon
2651
+ */
2652
+ "stateIcon"?: string;
2653
+ /**
2654
+ * The state title
2655
+ */
2656
+ "stateTitle": string;
2657
+ }
2599
2658
  interface GxIdeEntitySelector {
2600
2659
  /**
2601
2660
  * This property provides the user a way to define custom aria-label descriptions.
@@ -3750,6 +3809,7 @@ declare namespace LocalJSX {
3750
3809
  "gx-ide-dashboard-home": GxIdeDashboardHome;
3751
3810
  "gx-ide-data-selector": GxIdeDataSelector;
3752
3811
  "gx-ide-directory-selector": GxIdeDirectorySelector;
3812
+ "gx-ide-empty-state": GxIdeEmptyState;
3753
3813
  "gx-ide-entity-selector": GxIdeEntitySelector;
3754
3814
  "gx-ide-file-selector": GxIdeFileSelector;
3755
3815
  "gx-ide-import-from-design": GxIdeImportFromDesign;
@@ -3793,6 +3853,7 @@ declare module "@stencil/core" {
3793
3853
  "gx-ide-dashboard-home": LocalJSX.GxIdeDashboardHome & JSXBase.HTMLAttributes<HTMLGxIdeDashboardHomeElement>;
3794
3854
  "gx-ide-data-selector": LocalJSX.GxIdeDataSelector & JSXBase.HTMLAttributes<HTMLGxIdeDataSelectorElement>;
3795
3855
  "gx-ide-directory-selector": LocalJSX.GxIdeDirectorySelector & JSXBase.HTMLAttributes<HTMLGxIdeDirectorySelectorElement>;
3856
+ "gx-ide-empty-state": LocalJSX.GxIdeEmptyState & JSXBase.HTMLAttributes<HTMLGxIdeEmptyStateElement>;
3796
3857
  "gx-ide-entity-selector": LocalJSX.GxIdeEntitySelector & JSXBase.HTMLAttributes<HTMLGxIdeEntitySelectorElement>;
3797
3858
  "gx-ide-file-selector": LocalJSX.GxIdeFileSelector & JSXBase.HTMLAttributes<HTMLGxIdeFileSelectorElement>;
3798
3859
  "gx-ide-import-from-design": LocalJSX.GxIdeImportFromDesign & JSXBase.HTMLAttributes<HTMLGxIdeImportFromDesignElement>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genexus/genexus-ide-ui",
3
3
  "license": "Apache-2.0",
4
- "version": "0.0.99",
4
+ "version": "0.0.100",
5
5
  "description": "GeneXus IDE UI components",
6
6
  "main": "dist/index.cjs.js",
7
7
  "module": "dist/index.js",
@@ -36,10 +36,10 @@
36
36
  "@types/react": "^18.2.8"
37
37
  },
38
38
  "peerDependencies": {
39
- "@genexus/gemini": "*0.2.104"
39
+ "@genexus/gemini": "*0.2.108"
40
40
  },
41
41
  "devDependencies": {
42
- "@genexus/gemini": "*0.2.104",
42
+ "@genexus/gemini": "*0.2.108",
43
43
  "@stencil-community/eslint-plugin": "^0.6.0",
44
44
  "@stencil/core": "~4.9.0",
45
45
  "@stencil/sass": "~1.4.0",
@@ -1 +0,0 @@
1
- {"file":"gx-ide-recent-news.entry.cjs.js","mappings":"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","names":["h","Locale","Host"],"sources":["src/components/start-page/recent-news.scss?tag=gx-ide-recent-news&encapsulation=shadow","src/components/start-page/recent-news.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n box-shadow: none;\n height: 100%;\n overflow: hidden;\n padding-bottom: 2px;\n box-sizing: border-box;\n}\n.news-container {\n display: flex;\n flex-direction: column;\n gap: var(--gx-ide-articles-gap);\n p:first-child {\n margin-top: 0;\n }\n p:last-child {\n margin-bottom: 0;\n }\n}\ngxg-card.section {\n height: 100% !important;\n overflow: auto;\n border-bottom: 2px solid var(--gray-00);\n}\ngxg-ide-loader::part(loader-wrapper) {\n border-radius: 8px;\n overflow: hidden;\n}\n.gxg-card-container {\n height: 100%;\n overflow: auto;\n}\n.gx-ide-message {\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n gap: var(--mer-spacing--sm);\n\n &--hidden {\n display: none;\n }\n}\ngx-ide-title {\n max-width: 250px;\n}\n.news-article {\n transition: 200ms opacity;\n opacity: 0;\n\n &.visible {\n opacity: 1;\n }\n}\n","/* STENCIL IMPORTS */\nimport { Component, Host, h, Prop, Element, State, Watch } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { NewsData, GetNewsCallback, OpenNewsCallback } from \"./start-page\";\n\n@Component({\n tag: \"gx-ide-recent-news\",\n styleUrl: \"recent-news.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/recent-news\"]\n})\nexport class GxIdeRecentNews {\n /*\nINDEX:\n1.OWN PROPERTIES \n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE METHODS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeRecentNewsElement;\n private loaderEl!: HTMLGxgIdeLoaderElement;\n private newsContainerEl: HTMLDivElement;\n private newsRendered = false;\n private setTimeOutNewsDelay = 75;\n\n // 3.STATE() VARIABLES //\n\n /**\n * The list of news\n */\n @State() news: NewsData[] = [];\n @Watch(\"news\")\n watchNewsHandler() {\n this.displayNews();\n }\n\n /**\n * True if news couldn't be loaded\n */\n @State() newsLoadFailed = false;\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * Callback invoked to load the news feed (right panel \"Recent News\").\n */\n @Prop() readonly getNewsCallback: GetNewsCallback;\n\n /**\n * Callback invoked to open a news article.\n */\n @Prop() readonly openNewsCallback: OpenNewsCallback;\n\n // 5.EVENTS (EMIT) //\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.getNews();\n this.attachLoaderEvents();\n }\n\n componentDidRender() {\n this.evaluateNewsDisplay();\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n private evaluateNewsDisplay = () => {\n if (\n !this.newsRendered &&\n this.news.length > 0 &&\n this.newsContainerEl !== undefined\n ) {\n this.displayNews();\n this.newsRendered = true;\n }\n };\n\n private displayNews = () => {\n if (this.newsContainerEl !== undefined) {\n const news = Array.from(\n this.newsContainerEl.querySelectorAll(\"gxg-card\")\n );\n news.forEach(news => {\n setTimeout(() => {\n news.classList.add(\"visible\");\n }, this.setTimeOutNewsDelay);\n this.setTimeOutNewsDelay += 75;\n });\n }\n };\n\n private attachLoaderEvents = () => {\n this.loaderEl.addEventListener(\"loaderFinished\", () => {\n if (this.news.length === 0) {\n this.newsLoadFailed = true;\n } else {\n this.newsLoadFailed = false;\n }\n });\n };\n\n private getNews = async () => {\n this.loaderEl.show = true;\n if (this.getNewsCallback) {\n const newsResult = await this.getNewsCallback();\n this.loaderEl.show = false;\n if (newsResult && newsResult.length > 0) {\n this.news = newsResult;\n this.newsLoadFailed = false;\n } else {\n this.newsLoadFailed = true;\n }\n }\n };\n\n private openNewsHandler = (newsId: string) => async () => {\n if (this.openNewsCallback) {\n await this.openNewsCallback(newsId);\n }\n };\n\n // 9.LOCAL METHODS -> RENDERS //\n\n private renderNews = (news: NewsData): HTMLGxgCardElement | null => {\n if (news.id && news.title) {\n return (\n <gxg-card\n id={news.id}\n key={news.id}\n cardType=\"article\"\n cardTitle={news.title}\n icon=\"gx-test/test-results\"\n iconColor=\"auto\"\n actionable\n onClick={this.openNewsHandler(news.id)}\n titleSemibold\n noHeaderBorder\n class=\"news-article\"\n >\n {news.body ? <p>{news.body}</p> : null}\n </gxg-card>\n );\n }\n return null;\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host>\n <gxg-card\n class=\"section\"\n cardType=\"section\"\n cardTitle={this._componentLocale.recentNews.title}\n >\n {this.news.length > 0 ? (\n <div\n class=\"news-container\"\n ref={el => (this.newsContainerEl = el as HTMLDivElement)}\n >\n {this.news?.map(singleNews => {\n return this.renderNews(singleNews);\n })}\n </div>\n ) : (\n <div\n class={{\n \"gx-ide-message\": true,\n \"gx-ide-message--hidden\": !this.newsLoadFailed\n }}\n >\n <gx-ide-title alignment=\"center\">\n {this._componentLocale.recentNews.newsNotFetched}\n </gx-ide-title>\n <gxg-button onClick={this.getNews}>\n {this._componentLocale.recentNews.tryAgainButtonLabel}\n </gxg-button>\n <gxg-text\n type=\"text-link\"\n href=\"https://www.genexus.com/en/news\"\n target=\"_blank\"\n >\n {this._componentLocale.recentNews.readThemOnline}\n </gxg-text>\n </div>\n )}\n </gxg-card>\n <gxg-ide-loader\n abortTime={8000}\n container={this.el}\n loaderTitle={this._componentLocale.loader.title}\n description=\"Hang on please\"\n ref={el => (this.loaderEl = el as HTMLGxgIdeLoaderElement)}\n ></gxg-ide-loader>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,33 +0,0 @@
1
- 'use strict';
2
-
3
- const types = require('./types-36efe32d.js');
4
-
5
- const repositionScroll = (scollableElementRef, activeItem, direction) => {
6
- const scrollableElement = scollableElementRef;
7
- const hasVerticalScrollbar = scrollableElement?.scrollHeight > scrollableElement?.clientHeight;
8
- if (hasVerticalScrollbar && activeItem) {
9
- const scrollableElementScrollTop = scrollableElement.scrollTop;
10
- if (direction === types.KeyboardKeys.ARROW_UP) {
11
- const scrollableElementTop = scrollableElement.getBoundingClientRect()
12
- .top;
13
- const selectedItemTop = activeItem.getBoundingClientRect().top;
14
- if (selectedItemTop < scrollableElementTop) {
15
- const offset = scrollableElementTop - selectedItemTop;
16
- scrollableElement.scrollTo(0, scrollableElementScrollTop - offset);
17
- }
18
- }
19
- else if (direction === types.KeyboardKeys.ARROW_DOWN) {
20
- const scrollableElementBottom = scrollableElement.getBoundingClientRect()
21
- .bottom;
22
- const selectedItemBottom = activeItem.getBoundingClientRect().bottom;
23
- if (selectedItemBottom > scrollableElementBottom) {
24
- const offset = selectedItemBottom - scrollableElementBottom;
25
- scrollableElement.scrollTo(0, scrollableElementScrollTop + offset);
26
- }
27
- }
28
- }
29
- };
30
-
31
- exports.repositionScroll = repositionScroll;
32
-
33
- //# sourceMappingURL=reposition-scroll-86d8fac5.js.map
@@ -1 +0,0 @@
1
- {"file":"reposition-scroll-86d8fac5.js","mappings":";;;;AACY,MAAC,gBAAgB,GAAG,CAAC,mBAAmB,EAAE,UAAU,EAAE,SAAS,KAAK;AAChF,IAAI,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAClD,IAAI,MAAM,oBAAoB,GAAG,iBAAiB,EAAE,YAAY,GAAG,iBAAiB,EAAE,YAAY,CAAC;AACnG,IAAI,IAAI,oBAAoB,IAAI,UAAU,EAAE;AAC5C,QAAQ,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,SAAS,CAAC;AACvE,QAAQ,IAAI,SAAS,KAAKA,kBAAE,CAAC,QAAQ,EAAE;AACvC,YAAY,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,qBAAqB,EAAE;AAClF,iBAAiB,GAAG,CAAC;AACrB,YAAY,MAAM,eAAe,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;AAC3E,YAAY,IAAI,eAAe,GAAG,oBAAoB,EAAE;AACxD,gBAAgB,MAAM,MAAM,GAAG,oBAAoB,GAAG,eAAe,CAAC;AACtE,gBAAgB,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,0BAA0B,GAAG,MAAM,CAAC,CAAC;AACnF,aAAa;AACb,SAAS;AACT,aAAa,IAAI,SAAS,KAAKA,kBAAE,CAAC,UAAU,EAAE;AAC9C,YAAY,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,qBAAqB,EAAE;AACrF,iBAAiB,MAAM,CAAC;AACxB,YAAY,MAAM,kBAAkB,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AACjF,YAAY,IAAI,kBAAkB,GAAG,uBAAuB,EAAE;AAC9D,gBAAgB,MAAM,MAAM,GAAG,kBAAkB,GAAG,uBAAuB,CAAC;AAC5E,gBAAgB,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,0BAA0B,GAAG,MAAM,CAAC,CAAC;AACnF,aAAa;AACb,SAAS;AACT,KAAK;AACL;;;;","names":["KK"],"sources":["node_modules/@genexus/gemini/dist/collection/common/reposition-scroll.js"],"sourcesContent":["import { KeyboardKeys as KK } from \"./types\";\nexport const repositionScroll = (scollableElementRef, activeItem, direction) => {\n const scrollableElement = scollableElementRef;\n const hasVerticalScrollbar = scrollableElement?.scrollHeight > scrollableElement?.clientHeight;\n if (hasVerticalScrollbar && activeItem) {\n const scrollableElementScrollTop = scrollableElement.scrollTop;\n if (direction === KK.ARROW_UP) {\n const scrollableElementTop = scrollableElement.getBoundingClientRect()\n .top;\n const selectedItemTop = activeItem.getBoundingClientRect().top;\n if (selectedItemTop < scrollableElementTop) {\n const offset = scrollableElementTop - selectedItemTop;\n scrollableElement.scrollTo(0, scrollableElementScrollTop - offset);\n }\n }\n else if (direction === KK.ARROW_DOWN) {\n const scrollableElementBottom = scrollableElement.getBoundingClientRect()\n .bottom;\n const selectedItemBottom = activeItem.getBoundingClientRect().bottom;\n if (selectedItemBottom > scrollableElementBottom) {\n const offset = selectedItemBottom - scrollableElementBottom;\n scrollableElement.scrollTo(0, scrollableElementScrollTop + offset);\n }\n }\n }\n};\n//# sourceMappingURL=reposition-scroll.js.map\n"],"version":3}