@genexus/genexus-ide-ui 3.2.10 → 3.2.11

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 (96) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-select-team-or-org.cjs.entry.js +128 -0
  3. package/dist/cjs/gx-ide-select-team-or-org.cjs.entry.js.map +1 -0
  4. package/dist/cjs/gx-ide-sign-in-organization.cjs.entry.js +187 -0
  5. package/dist/cjs/gx-ide-sign-in-organization.cjs.entry.js.map +1 -0
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/collection/collection-manifest.json +2 -2
  8. package/dist/collection/components/select-team-or-org/gx-ide-assets/select-team-or-org/langs/select-team-or-org.lang.en.json +18 -0
  9. package/dist/collection/components/select-team-or-org/gx-ide-assets/select-team-or-org/langs/select-team-or-org.lang.ja.json +18 -0
  10. package/dist/collection/components/select-team-or-org/gx-ide-assets/select-team-or-org/langs/select-team-or-org.lang.zh.json +18 -0
  11. package/dist/collection/components/select-team-or-org/helpers.js +9 -0
  12. package/dist/collection/components/select-team-or-org/helpers.js.map +1 -0
  13. package/dist/collection/components/{select-user-team/select-user-team.css → select-team-or-org/select-team-or-org.css} +7 -4
  14. package/dist/collection/components/select-team-or-org/select-team-or-org.js +220 -0
  15. package/dist/collection/components/select-team-or-org/select-team-or-org.js.map +1 -0
  16. package/dist/{genexus-ide-ui/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.en.json → collection/components/sign-in-organization/gx-ide-assets/sign-in-organization/langs/sign-in-organization.lang.en.json} +5 -5
  17. package/dist/{genexus-ide-ui/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.ja.json → collection/components/sign-in-organization/gx-ide-assets/sign-in-organization/langs/sign-in-organization.lang.ja.json} +5 -5
  18. package/dist/collection/components/{sign-in-team/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.en.json → sign-in-organization/gx-ide-assets/sign-in-organization/langs/sign-in-organization.lang.zh.json} +5 -5
  19. package/dist/collection/components/sign-in-organization/helpers.js +10 -0
  20. package/dist/collection/components/sign-in-organization/helpers.js.map +1 -0
  21. package/dist/collection/components/{sign-in-team/sign-in-team.js → sign-in-organization/sign-in-organization.js} +72 -72
  22. package/dist/collection/components/sign-in-organization/sign-in-organization.js.map +1 -0
  23. package/dist/collection/testing/locale.e2e.js +2 -2
  24. package/dist/collection/testing/locale.e2e.js.map +1 -1
  25. package/dist/components/gx-ide-select-team-or-org.d.ts +11 -0
  26. package/dist/components/gx-ide-select-team-or-org.js +157 -0
  27. package/dist/components/gx-ide-select-team-or-org.js.map +1 -0
  28. package/dist/components/gx-ide-sign-in-organization.d.ts +11 -0
  29. package/dist/components/gx-ide-sign-in-organization.js +221 -0
  30. package/dist/components/gx-ide-sign-in-organization.js.map +1 -0
  31. package/dist/esm/genexus-ide-ui.js +1 -1
  32. package/dist/esm/gx-ide-select-team-or-org.entry.js +124 -0
  33. package/dist/esm/gx-ide-select-team-or-org.entry.js.map +1 -0
  34. package/dist/esm/gx-ide-sign-in-organization.entry.js +183 -0
  35. package/dist/esm/gx-ide-sign-in-organization.entry.js.map +1 -0
  36. package/dist/esm/loader.js +1 -1
  37. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  38. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  39. package/dist/genexus-ide-ui/gx-ide-assets/select-team-or-org/langs/select-team-or-org.lang.en.json +18 -0
  40. package/dist/genexus-ide-ui/gx-ide-assets/select-team-or-org/langs/select-team-or-org.lang.ja.json +18 -0
  41. package/dist/genexus-ide-ui/gx-ide-assets/select-team-or-org/langs/select-team-or-org.lang.zh.json +18 -0
  42. package/dist/genexus-ide-ui/gx-ide-assets/{sign-in-team/langs/sign-in-team.lang.zh.json → sign-in-organization/langs/sign-in-organization.lang.en.json} +5 -5
  43. package/dist/{collection/components/sign-in-team/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.ja.json → genexus-ide-ui/gx-ide-assets/sign-in-organization/langs/sign-in-organization.lang.ja.json} +5 -5
  44. package/dist/{collection/components/sign-in-team/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.zh.json → genexus-ide-ui/gx-ide-assets/sign-in-organization/langs/sign-in-organization.lang.zh.json} +5 -5
  45. package/dist/genexus-ide-ui/{p-1d44dd0a.entry.js → p-15b1c9be.entry.js} +72 -72
  46. package/dist/genexus-ide-ui/p-15b1c9be.entry.js.map +1 -0
  47. package/dist/genexus-ide-ui/p-2129d0d2.entry.js +164 -0
  48. package/dist/genexus-ide-ui/p-2129d0d2.entry.js.map +1 -0
  49. package/dist/types/components/select-team-or-org/helpers.d.ts +3 -0
  50. package/dist/types/components/select-team-or-org/select-team-or-org.d.ts +38 -0
  51. package/dist/types/components/sign-in-organization/helpers.d.ts +3 -0
  52. package/dist/types/components/{sign-in-team/sign-in-team.d.ts → sign-in-organization/sign-in-organization.d.ts} +8 -8
  53. package/dist/types/components.d.ts +54 -46
  54. package/package.json +1 -1
  55. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js +0 -121
  56. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js.map +0 -1
  57. package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js +0 -187
  58. package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js.map +0 -1
  59. package/dist/collection/components/select-user-team/gx-ide-assets/select-user-team/langs/select-user-team.lang.en.json +0 -10
  60. package/dist/collection/components/select-user-team/gx-ide-assets/select-user-team/langs/select-user-team.lang.ja.json +0 -10
  61. package/dist/collection/components/select-user-team/gx-ide-assets/select-user-team/langs/select-user-team.lang.zh.json +0 -10
  62. package/dist/collection/components/select-user-team/helpers.js +0 -9
  63. package/dist/collection/components/select-user-team/helpers.js.map +0 -1
  64. package/dist/collection/components/select-user-team/select-user-team.js +0 -189
  65. package/dist/collection/components/select-user-team/select-user-team.js.map +0 -1
  66. package/dist/collection/components/sign-in-team/helpers.js +0 -10
  67. package/dist/collection/components/sign-in-team/helpers.js.map +0 -1
  68. package/dist/collection/components/sign-in-team/sign-in-team.js.map +0 -1
  69. package/dist/components/gx-ide-select-user-team.d.ts +0 -11
  70. package/dist/components/gx-ide-select-user-team.js +0 -149
  71. package/dist/components/gx-ide-select-user-team.js.map +0 -1
  72. package/dist/components/gx-ide-sign-in-team.d.ts +0 -11
  73. package/dist/components/gx-ide-sign-in-team.js +0 -221
  74. package/dist/components/gx-ide-sign-in-team.js.map +0 -1
  75. package/dist/esm/gx-ide-select-user-team.entry.js +0 -117
  76. package/dist/esm/gx-ide-select-user-team.entry.js.map +0 -1
  77. package/dist/esm/gx-ide-sign-in-team.entry.js +0 -183
  78. package/dist/esm/gx-ide-sign-in-team.entry.js.map +0 -1
  79. package/dist/genexus-ide-ui/gx-ide-assets/select-user-team/langs/select-user-team.lang.en.json +0 -10
  80. package/dist/genexus-ide-ui/gx-ide-assets/select-user-team/langs/select-user-team.lang.ja.json +0 -10
  81. package/dist/genexus-ide-ui/gx-ide-assets/select-user-team/langs/select-user-team.lang.zh.json +0 -10
  82. package/dist/genexus-ide-ui/p-1d44dd0a.entry.js.map +0 -1
  83. package/dist/genexus-ide-ui/p-2317ffcb.entry.js +0 -156
  84. package/dist/genexus-ide-ui/p-2317ffcb.entry.js.map +0 -1
  85. package/dist/types/components/select-user-team/helpers.d.ts +0 -3
  86. package/dist/types/components/select-user-team/select-user-team.d.ts +0 -32
  87. package/dist/types/components/sign-in-team/helpers.d.ts +0 -3
  88. /package/dist/collection/components/{select-user-team/gx-ide-assets/select-user-team → select-team-or-org/gx-ide-assets/select-team-or-org}/images/copyrights-illustration.png +0 -0
  89. /package/dist/collection/components/{select-user-team/gx-ide-assets/select-user-team → select-team-or-org/gx-ide-assets/select-team-or-org}/images/icon-next.svg +0 -0
  90. /package/dist/collection/components/{sign-in-team/gx-ide-assets/sign-in-team → sign-in-organization/gx-ide-assets/sign-in-organization}/images/copyrights-illustration.png +0 -0
  91. /package/dist/collection/components/{sign-in-team/gx-ide-assets/sign-in-team → sign-in-organization/gx-ide-assets/sign-in-organization}/images/icon-next.svg +0 -0
  92. /package/dist/collection/components/{sign-in-team/sign-in-team.css → sign-in-organization/sign-in-organization.css} +0 -0
  93. /package/dist/genexus-ide-ui/gx-ide-assets/{select-user-team → select-team-or-org}/images/copyrights-illustration.png +0 -0
  94. /package/dist/genexus-ide-ui/gx-ide-assets/{select-user-team → select-team-or-org}/images/icon-next.svg +0 -0
  95. /package/dist/genexus-ide-ui/gx-ide-assets/{sign-in-team → sign-in-organization}/images/copyrights-illustration.png +0 -0
  96. /package/dist/genexus-ide-ui/gx-ide-assets/{sign-in-team → sign-in-organization}/images/icon-next.svg +0 -0
@@ -0,0 +1,124 @@
1
+ import { g as getAssetPath, r as registerInstance, h, H as Host, a as getElement } from './index-b153bfd0.js';
2
+ import { L as Locale } from './locale-e5107fad.js';
3
+
4
+ const mapItemsToComboBoxItemModel = (items) => {
5
+ return items === null || items === void 0 ? void 0 : items.map(item => {
6
+ return {
7
+ value: item.id,
8
+ caption: item.name
9
+ };
10
+ });
11
+ };
12
+
13
+ const selectTeamOrOrgCss = "button.button-secondary {\n border-color: var(--color-border-neutral-default);\n}\n\n:host {\n display: grid;\n container-type: inline-size;\n container-name: host-container;\n block-size: 100%;\n inline-size: 100%;\n align-items: center;\n justify-content: center;\n}\n\n.slide {\n display: grid;\n grid-template-columns: 1fr 1fr;\n block-size: 100%;\n border-radius: var(--border-radius-m);\n max-block-size: 700px;\n max-inline-size: 1100px;\n background-color: var(--color-accent-surface-elevation-1);\n overflow: hidden;\n}\n.slide__illustration {\n overflow: hidden;\n object-fit: cover;\n object-position: left;\n block-size: 100%;\n inline-size: 100%;\n}\n.slide__main {\n display: grid;\n block-size: 100%;\n inline-size: 100%;\n padding: 48px;\n transform: translateY(4px);\n transition: var(--display-items-transtion-time) all;\n opacity: 0;\n position: relative;\n}\n.slide__main--visible {\n transform: translateY(0);\n opacity: 1;\n}\n.slide__main-container {\n display: grid;\n place-self: center;\n gap: var(--spacing-gap-xxl);\n inline-size: 100%;\n max-inline-size: 480px;\n}\n.slide__main-header {\n display: grid;\n gap: var(--spacing-gap-xxl);\n}\n.slide__main-title {\n display: flex;\n flex-direction: column;\n font-size: var(--font-size-header-h2);\n font-weight: var(--font-style-semi-bold);\n letter-spacing: 0.02em;\n line-height: var(--line-height-tight);\n color: var(--color-text-neutral-strawberry);\n}\n.slide__main-description {\n display: grid;\n gap: 40px;\n font-size: var(--font-size-body-l);\n font-weight: var(--font-style-regular);\n line-height: var(--line-height-spacious);\n color: var(--color-text-neutral-disabled);\n}\n\n.terms-conditions {\n text-decoration: underline;\n}\n\n.items-list {\n inline-size: 100%;\n --ch-combo-box__popover-max-inline-size: 100%;\n}\n\n.buttons-container {\n display: flex;\n inline-size: 100%;\n gap: var(--spacing-gap-xl);\n}\n\n.continue-btn,\n.cancel-btn {\n flex: 1;\n}\n\n@container host-container (max-width: 768px) {\n .slide {\n grid-template-columns: 1fr 2fr;\n }\n}\n@container host-container (max-width: 640px) {\n .slide {\n grid-template-columns: 1fr 5fr;\n }\n}";
14
+
15
+ var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
16
+ if (kind === "a" && !f)
17
+ throw new TypeError("Private accessor was defined without a getter");
18
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
19
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
20
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
21
+ };
22
+ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
23
+ if (kind === "m")
24
+ throw new TypeError("Private method is not writable");
25
+ if (kind === "a" && !f)
26
+ throw new TypeError("Private accessor was defined without a setter");
27
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
28
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
29
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
30
+ };
31
+ var _GxIdeSelectTeamOrOrg_componentLocale, _GxIdeSelectTeamOrOrg_itemsModel, _GxIdeSelectTeamOrOrg_chSelectItemEl, _GxIdeSelectTeamOrOrg_displayItemsTransitionTime, _GxIdeSelectTeamOrOrg_continueHandler, _GxIdeSelectTeamOrOrg_cancelHandler;
32
+ const COPYRIGHTS_ILLUSTRATION = getAssetPath(`./gx-ide-assets/welcome-page/images/copyrights-illustration.png`);
33
+ const ICON_NEXT = getAssetPath(`./gx-ide-assets/welcome-page/images/icon-next.svg`);
34
+ const CSS_BUNDLES = [
35
+ "resets/box-sizing",
36
+ "utils/typography",
37
+ "components/button",
38
+ "components/combo-box"
39
+ ];
40
+ const GxIdeSelectTeamOrOrg = class {
41
+ constructor(hostRef) {
42
+ registerInstance(this, hostRef);
43
+ /**
44
+ * The component hard-coded strings translations.
45
+ */
46
+ // eslint-disable-next-line @stencil-community/own-props-must-be-private
47
+ _GxIdeSelectTeamOrOrg_componentLocale.set(this, void 0);
48
+ _GxIdeSelectTeamOrOrg_itemsModel.set(this, []);
49
+ _GxIdeSelectTeamOrOrg_chSelectItemEl.set(this, void 0);
50
+ _GxIdeSelectTeamOrOrg_displayItemsTransitionTime.set(this, 100);
51
+ _GxIdeSelectTeamOrOrg_continueHandler.set(this, async () => {
52
+ await this.confirmCallback(__classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_chSelectItemEl, "f").value);
53
+ });
54
+ _GxIdeSelectTeamOrOrg_cancelHandler.set(this, async () => {
55
+ await this.cancelCallback();
56
+ });
57
+ this.slideIsVisible = false;
58
+ this.itemsModelReady = false;
59
+ this.cancelCallback = undefined;
60
+ this.confirmCallback = undefined;
61
+ this.selectionType = "team";
62
+ this.items = undefined;
63
+ }
64
+ itemsChanged(newItems) {
65
+ this.slideIsVisible = false;
66
+ if (!(newItems === null || newItems === void 0 ? void 0 : newItems.length)) {
67
+ this.itemsModelReady = false;
68
+ setTimeout(() => {
69
+ this.slideIsVisible = true;
70
+ }, __classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_displayItemsTransitionTime, "f"));
71
+ return;
72
+ }
73
+ // switch step
74
+ setTimeout(() => {
75
+ __classPrivateFieldSet(this, _GxIdeSelectTeamOrOrg_itemsModel, mapItemsToComboBoxItemModel(newItems), "f");
76
+ this.itemsModelReady = true;
77
+ }, __classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_displayItemsTransitionTime, "f"));
78
+ // show slide
79
+ setTimeout(() => {
80
+ this.slideIsVisible = true;
81
+ }, __classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_displayItemsTransitionTime, "f") * 2);
82
+ }
83
+ async componentWillLoad() {
84
+ var _a;
85
+ __classPrivateFieldSet(this, _GxIdeSelectTeamOrOrg_componentLocale, await Locale.getComponentStrings(this.el), "f");
86
+ if ((_a = this.items) === null || _a === void 0 ? void 0 : _a.length) {
87
+ __classPrivateFieldSet(this, _GxIdeSelectTeamOrOrg_itemsModel, mapItemsToComboBoxItemModel(this.items), "f");
88
+ this.itemsModelReady = true;
89
+ }
90
+ this.el.style.setProperty("--display-items-transtion-time", __classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_displayItemsTransitionTime, "f").toString() + "ms");
91
+ }
92
+ componentDidLoad() {
93
+ this.slideIsVisible = true;
94
+ }
95
+ render() {
96
+ var _a;
97
+ const kindLocale = __classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_componentLocale, "f")[this.selectionType];
98
+ return (h(Host, null, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "slide" }, h("img", { src: COPYRIGHTS_ILLUSTRATION, class: "slide__illustration", alt: "" // decorative
99
+ }), h("div", { class: {
100
+ "slide__main": true,
101
+ "slide__main--visible": this.slideIsVisible
102
+ } }, h("div", { class: "slide__main-container" }, this.itemsModelReady ? ([
103
+ h("header", { class: "slide__main-header" }, h("img", { src: ICON_NEXT, alt: "" // decorative
104
+ }), h("h2", {
105
+ // Split the title into two spans for better styling
106
+ class: "slide__main-title"
107
+ }, h("span", null, kindLocale.title))),
108
+ h("div", { class: "slide__select-item-description" }, h("p", { class: "body-semi-bold-l" }, kindLocale.infoMessage)),
109
+ h("div", { class: "field-group" }, h("div", { class: "field field-block" }, h("label", { htmlFor: "items" }, kindLocale.label), h("ch-combo-box-render", { id: "items", accessibleName: kindLocale.label, class: "combo-box items-list", model: __classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_itemsModel, "f"), value: __classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_itemsModel, "f") && ((_a = __classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_itemsModel, "f")[0]) === null || _a === void 0 ? void 0 : _a.value), ref: (el) => (__classPrivateFieldSet(this, _GxIdeSelectTeamOrOrg_chSelectItemEl, el, "f")) }))),
110
+ h("div", { class: "buttons-container" }, h("button", { class: "button-primary continue-btn", onClick: __classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_continueHandler, "f") }, __classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_componentLocale, "f").confirmButtonCaption), h("button", { class: "button-secondary cancel-btn", onClick: __classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_cancelHandler, "f") }, __classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_componentLocale, "f").cancelButtonCaption))
111
+ ]) : (h("gx-ide-loader", { show: true, loaderTitle: __classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_componentLocale, "f").loader.title, description: __classPrivateFieldGet(this, _GxIdeSelectTeamOrOrg_componentLocale, "f").loader.description })))))));
112
+ }
113
+ static get assetsDirs() { return ["gx-ide-assets/select-team-or-org"]; }
114
+ get el() { return getElement(this); }
115
+ static get watchers() { return {
116
+ "items": ["itemsChanged"]
117
+ }; }
118
+ };
119
+ _GxIdeSelectTeamOrOrg_componentLocale = new WeakMap(), _GxIdeSelectTeamOrOrg_itemsModel = new WeakMap(), _GxIdeSelectTeamOrOrg_chSelectItemEl = new WeakMap(), _GxIdeSelectTeamOrOrg_displayItemsTransitionTime = new WeakMap(), _GxIdeSelectTeamOrOrg_continueHandler = new WeakMap(), _GxIdeSelectTeamOrOrg_cancelHandler = new WeakMap();
120
+ GxIdeSelectTeamOrOrg.style = selectTeamOrOrgCss;
121
+
122
+ export { GxIdeSelectTeamOrOrg as gx_ide_select_team_or_org };
123
+
124
+ //# sourceMappingURL=gx-ide-select-team-or-org.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"gx-ide-select-team-or-org.entry.js","mappings":"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","names":[],"sources":["src/components/select-team-or-org/helpers.tsx","src/components/select-team-or-org/select-team-or-org.scss?tag=gx-ide-select-team-or-org&encapsulation=shadow","src/components/select-team-or-org/select-team-or-org.tsx"],"sourcesContent":["import { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { SelectableItem } from \"./select-team-or-org\";\n\nexport const mapItemsToComboBoxItemModel = (\n items: SelectableItem[]\n): ComboBoxItemModel[] => {\n return items?.map(item => {\n return {\n value: item.id,\n caption: item.name\n };\n });\n};\n","@import \"../../global/temporary-mercury-overrides/_button.scss\";\n\n:host {\n display: grid;\n container-type: inline-size;\n container-name: host-container;\n block-size: 100%;\n inline-size: 100%;\n align-items: center;\n justify-content: center;\n}\n\n.slide {\n display: grid;\n grid-template-columns: 1fr 1fr;\n block-size: 100%;\n border-radius: var(--border-radius-m);\n max-block-size: 700px;\n max-inline-size: 1100px;\n background-color: var(--color-accent-surface-elevation-1);\n overflow: hidden;\n\n &__illustration {\n overflow: hidden;\n object-fit: cover;\n object-position: left;\n block-size: 100%;\n inline-size: 100%;\n }\n\n &__main {\n display: grid;\n block-size: 100%;\n inline-size: 100%;\n padding: 48px;\n transform: translateY(4px);\n transition: var(--display-items-transtion-time) all;\n opacity: 0;\n\n position: relative;\n\n &--visible {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n &__main-container {\n display: grid;\n place-self: center;\n gap: var(--spacing-gap-xxl);\n inline-size: 100%;\n max-inline-size: 480px;\n }\n\n &__main-header {\n display: grid;\n gap: var(--spacing-gap-xxl);\n }\n\n &__main-title {\n display: flex;\n flex-direction: column;\n font-size: var(--font-size-header-h2);\n font-weight: var(--font-style-semi-bold);\n letter-spacing: 0.02em;\n line-height: var(--line-height-tight);\n color: var(--color-text-neutral-strawberry);\n }\n\n &__main-description {\n display: grid;\n gap: 40px;\n font-size: var(--font-size-body-l);\n font-weight: var(--font-style-regular);\n line-height: var(--line-height-spacious);\n color: var(--color-text-neutral-disabled);\n }\n}\n\n.terms-conditions {\n text-decoration: underline;\n}\n\n.items-list {\n inline-size: 100%;\n --ch-combo-box__popover-max-inline-size: 100%;\n}\n\n.buttons-container {\n display: flex;\n inline-size: 100%;\n gap: var(--spacing-gap-xl);\n}\n\n.continue-btn,\n.cancel-btn {\n flex: 1;\n}\n\n@container host-container (max-width: 768px) {\n .slide {\n grid-template-columns: 1fr 2fr;\n }\n}\n\n@container host-container (max-width: 640px) {\n .slide {\n grid-template-columns: 1fr 5fr;\n }\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n State,\n Watch,\n Element,\n getAssetPath\n} from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\n// Custom Imports\nimport { Locale } from \"../../common/locale\";\nimport { mapItemsToComboBoxItemModel } from \"./helpers\";\n\nconst COPYRIGHTS_ILLUSTRATION = getAssetPath(\n `./gx-ide-assets/welcome-page/images/copyrights-illustration.png`\n);\nconst ICON_NEXT = getAssetPath(\n `./gx-ide-assets/welcome-page/images/icon-next.svg`\n);\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"components/button\",\n \"components/combo-box\"\n];\n\n@Component({\n tag: \"gx-ide-select-team-or-org\",\n styleUrl: \"select-team-or-org.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/select-team-or-org\"]\n})\nexport class GxIdeSelectTeamOrOrg {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n #itemsModel: ComboBoxItemModel[] = [];\n #chSelectItemEl: HTMLChComboBoxRenderElement;\n #displayItemsTransitionTime: number = 100;\n\n @Element() el: HTMLGxIdeSelectTeamOrOrgElement;\n\n /**\n * Defines if the main slide is visible or not. Used for smooth transitions between slides.\n */\n @State() slideIsVisible: boolean = false;\n\n /**\n * Defines if the items model is ready to be rendered.\n */\n @State() itemsModelReady: boolean = false;\n\n /**\n * Callback executed when the user clicks the 'Cancel' button\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user clicks the 'Confirm' button\n */\n @Prop() readonly confirmCallback!: (itemId: string) => Promise<void>;\n\n /**\n * Whether the picker is selecting a team or an organization.\n * Drives the title, info message and combo label.\n */\n @Prop() readonly selectionType: SelectionType = \"team\";\n\n /**\n * Array that contains the selectable items (teams or organizations).\n */\n @Prop() readonly items!: SelectableItem[];\n @Watch(\"items\")\n itemsChanged(newItems: SelectableItem[]) {\n this.slideIsVisible = false;\n\n if (!newItems?.length) {\n this.itemsModelReady = false;\n setTimeout(() => {\n this.slideIsVisible = true;\n }, this.#displayItemsTransitionTime);\n return;\n }\n\n // switch step\n setTimeout(() => {\n this.#itemsModel = mapItemsToComboBoxItemModel(newItems);\n this.itemsModelReady = true;\n }, this.#displayItemsTransitionTime);\n // show slide\n setTimeout(() => {\n this.slideIsVisible = true;\n }, this.#displayItemsTransitionTime * 2);\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n if (this.items?.length) {\n this.#itemsModel = mapItemsToComboBoxItemModel(this.items);\n this.itemsModelReady = true;\n }\n\n this.el.style.setProperty(\n \"--display-items-transtion-time\",\n this.#displayItemsTransitionTime.toString() + \"ms\"\n );\n }\n\n componentDidLoad() {\n this.slideIsVisible = true;\n }\n\n #continueHandler = async () => {\n await this.confirmCallback(this.#chSelectItemEl.value);\n };\n\n #cancelHandler = async () => {\n await this.cancelCallback();\n };\n\n render() {\n const kindLocale = this.#componentLocale[this.selectionType];\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"slide\">\n <img\n src={COPYRIGHTS_ILLUSTRATION}\n class=\"slide__illustration\"\n alt=\"\" // decorative\n />\n\n <div\n class={{\n \"slide__main\": true,\n \"slide__main--visible\": this.slideIsVisible\n }}\n >\n <div class=\"slide__main-container\">\n {this.itemsModelReady ? (\n [\n <header class=\"slide__main-header\">\n <img\n src={ICON_NEXT}\n alt=\"\" // decorative\n />\n <h2\n // Split the title into two spans for better styling\n class=\"slide__main-title\"\n >\n <span>{kindLocale.title}</span>\n </h2>\n </header>,\n <div class=\"slide__select-item-description\">\n <p class=\"body-semi-bold-l\">{kindLocale.infoMessage}</p>\n </div>,\n <div class=\"field-group\">\n <div class=\"field field-block\">\n <label htmlFor=\"items\">{kindLocale.label}</label>\n <ch-combo-box-render\n id=\"items\"\n accessibleName={kindLocale.label}\n class=\"combo-box items-list\"\n model={this.#itemsModel}\n value={this.#itemsModel && this.#itemsModel[0]?.value}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#chSelectItemEl =\n el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n </div>,\n <div class=\"buttons-container\">\n <button\n class=\"button-primary continue-btn\"\n onClick={this.#continueHandler}\n >\n {this.#componentLocale.confirmButtonCaption}\n </button>\n <button\n class=\"button-secondary cancel-btn\"\n onClick={this.#cancelHandler}\n >\n {this.#componentLocale.cancelButtonCaption}\n </button>\n </div>\n ]\n ) : (\n <gx-ide-loader\n show\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n ></gx-ide-loader>\n )}\n </div>\n </div>\n </section>\n </Host>\n );\n }\n}\n\nexport type SelectableItem = {\n id: string;\n name: string;\n};\n\nexport type SelectionType = \"team\" | \"organization\";\n"],"version":3}
@@ -0,0 +1,183 @@
1
+ import { g as getAssetPath, r as registerInstance, h, H as Host, a as getElement } from './index-b153bfd0.js';
2
+ import { L as Locale } from './locale-e5107fad.js';
3
+
4
+ const mapOrganizationsToComboBoxItemModel = (organizations) => {
5
+ if (!organizations) {
6
+ return [];
7
+ }
8
+ return organizations.map(organization => ({
9
+ value: organization.id,
10
+ caption: organization.name
11
+ }));
12
+ };
13
+
14
+ const signInOrganizationCss = ":host {\n display: grid;\n container-type: inline-size;\n container-name: host-container;\n block-size: 100%;\n inline-size: 100%;\n align-items: center;\n justify-content: center;\n}\n\n.slide {\n display: grid;\n grid-template-columns: 1fr 1fr;\n block-size: 100%;\n max-block-size: 700px;\n max-inline-size: 1100px;\n background-color: var(--color-accent-surface-elevation-1);\n border-radius: var(--dialog-border-radius, 16px);\n overflow: hidden;\n}\n.slide__illustration {\n overflow: hidden;\n object-fit: cover;\n object-position: left;\n block-size: 100%;\n inline-size: 100%;\n}\n.slide__main {\n display: grid;\n block-size: 100%;\n inline-size: 100%;\n padding: 48px;\n transform: translateY(4px);\n transition: var(--switch-step-transtion-time) all;\n opacity: 0;\n}\n.slide__main--visible {\n transform: translateY(0);\n opacity: 1;\n}\n.slide__main-container {\n display: grid;\n place-self: center;\n gap: var(--spacing-gap-xxl);\n max-inline-size: 480px;\n}\n.slide__main-header {\n display: grid;\n gap: var(--spacing-gap-xxl);\n}\n.slide__main-title {\n display: flex;\n flex-direction: column;\n letter-spacing: 0.02em;\n}\n.slide__main-description {\n display: grid;\n gap: 40px;\n color: var(--color-text-neutral-disabled);\n max-inline-size: 370px;\n}\n\n.teams-list {\n inline-size: 100%;\n max-inline-size: 400px;\n --ch-combo-box__popover-max-inline-size: 400px;\n}\n\n.main-btn {\n inline-size: 100%;\n max-inline-size: 124px;\n}\n\n@container host-container (max-width: 768px) {\n .slide {\n grid-template-columns: 1fr 2fr;\n }\n}\n@container host-container (max-width: 640px) {\n .slide {\n grid-template-columns: 1fr 5fr;\n }\n}\n.hyperlink {\n text-decoration: underline;\n cursor: pointer;\n}\n\n.field-inline > .label-agreement {\n margin-block-start: 0 !important;\n}";
15
+
16
+ var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
17
+ if (kind === "a" && !f)
18
+ throw new TypeError("Private accessor was defined without a getter");
19
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
20
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
21
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
22
+ };
23
+ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
24
+ if (kind === "m")
25
+ throw new TypeError("Private method is not writable");
26
+ if (kind === "a" && !f)
27
+ throw new TypeError("Private accessor was defined without a setter");
28
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
29
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
30
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
31
+ };
32
+ var _GxIdeSignInOrganization_componentLocale, _GxIdeSignInOrganization_organizationsModel, _GxIdeSignInOrganization_chSelectOrganizationEl, _GxIdeSignInOrganization_switchStepTransitionTime, _GxIdeSignInOrganization_termsAndConditionsCheckboxEl, _GxIdeSignInOrganization_privacyPolicyCheckboxEl, _GxIdeSignInOrganization_authStepCallback, _GxIdeSignInOrganization_continueHandler, _GxIdeSignInOrganization_renderStepHeader, _GxIdeSignInOrganization_renderStepFooter, _GxIdeSignInOrganization_evaluateTermsConditionsAndPrivacyAccepted, _GxIdeSignInOrganization_termsAndConditionsClickedHandler, _GxIdeSignInOrganization_privacyPolicyClickedHandler, _GxIdeSignInOrganization_evaluateStepRender;
33
+ const COPYRIGHTS_ILLUSTRATION = getAssetPath(`./gx-ide-assets/welcome-page/images/copyrights-illustration.png`);
34
+ const ICON_NEXT = getAssetPath(`./gx-ide-assets/welcome-page/images/icon-next.svg`);
35
+ const CSS_BUNDLES = [
36
+ "resets/box-sizing",
37
+ "utils/typography",
38
+ "components/button",
39
+ "components/combo-box",
40
+ "components/checkbox",
41
+ "utils/form"
42
+ ];
43
+ const CHECKED_VALUE = "on";
44
+ const GxIdeSignInOrganization = class {
45
+ constructor(hostRef) {
46
+ registerInstance(this, hostRef);
47
+ /**
48
+ * The component hard-coded strings translations.
49
+ */
50
+ // eslint-disable-next-line @stencil-community/own-props-must-be-private
51
+ _GxIdeSignInOrganization_componentLocale.set(this, void 0);
52
+ // Select Organization References :
53
+ _GxIdeSignInOrganization_organizationsModel.set(this, []);
54
+ _GxIdeSignInOrganization_chSelectOrganizationEl.set(this, void 0);
55
+ _GxIdeSignInOrganization_switchStepTransitionTime.set(this, 100);
56
+ _GxIdeSignInOrganization_termsAndConditionsCheckboxEl.set(this, void 0);
57
+ _GxIdeSignInOrganization_privacyPolicyCheckboxEl.set(this, void 0);
58
+ _GxIdeSignInOrganization_authStepCallback.set(this, () => {
59
+ if (this.authStep === "signIn") {
60
+ this.signInCallback();
61
+ }
62
+ else if (this.authStep === "selectOrganization") {
63
+ __classPrivateFieldGet(this, _GxIdeSignInOrganization_continueHandler, "f").call(this);
64
+ }
65
+ });
66
+ _GxIdeSignInOrganization_continueHandler.set(this, async () => {
67
+ await this.continueCallback(__classPrivateFieldGet(this, _GxIdeSignInOrganization_chSelectOrganizationEl, "f").value);
68
+ });
69
+ _GxIdeSignInOrganization_renderStepHeader.set(this, () => {
70
+ return (h("header", { class: "slide__main-header" }, h("img", { src: ICON_NEXT, alt: "" // decorative
71
+ }), h("h2", {
72
+ // Split the title into two spans for better styling
73
+ class: "slide__main-title heading-2"
74
+ }, h("span", null, __classPrivateFieldGet(this, _GxIdeSignInOrganization_componentLocale, "f")[this.authStepInternal].titlePart1), h("span", null, __classPrivateFieldGet(this, _GxIdeSignInOrganization_componentLocale, "f")[this.authStepInternal].titlePart2))));
75
+ });
76
+ _GxIdeSignInOrganization_renderStepFooter.set(this, () => {
77
+ const signInDisabled = this.authStep === "signIn" &&
78
+ this.termsConfirmationRequired &&
79
+ !this.termsAndConditionsAccepted;
80
+ return (h("div", null, h("button", { class: "button-primary main-btn", onClick: __classPrivateFieldGet(this, _GxIdeSignInOrganization_authStepCallback, "f"), disabled: signInDisabled }, __classPrivateFieldGet(this, _GxIdeSignInOrganization_componentLocale, "f")[this.authStepInternal].buttonCaption)));
81
+ });
82
+ _GxIdeSignInOrganization_evaluateTermsConditionsAndPrivacyAccepted.set(this, () => {
83
+ const termsAndConditionsAccepted = __classPrivateFieldGet(this, _GxIdeSignInOrganization_termsAndConditionsCheckboxEl, "f").value === CHECKED_VALUE;
84
+ const privacyPolicyAccepted = __classPrivateFieldGet(this, _GxIdeSignInOrganization_privacyPolicyCheckboxEl, "f").value === CHECKED_VALUE;
85
+ this.termsAndConditionsAccepted =
86
+ termsAndConditionsAccepted && privacyPolicyAccepted;
87
+ });
88
+ _GxIdeSignInOrganization_termsAndConditionsClickedHandler.set(this, (event) => {
89
+ event.preventDefault();
90
+ this.termsCallback();
91
+ });
92
+ _GxIdeSignInOrganization_privacyPolicyClickedHandler.set(this, (event) => {
93
+ event.preventDefault();
94
+ this.privacyCallback();
95
+ });
96
+ _GxIdeSignInOrganization_evaluateStepRender.set(this, () => {
97
+ var _a;
98
+ if (this.authStepInternal === "signIn") {
99
+ return [
100
+ __classPrivateFieldGet(this, _GxIdeSignInOrganization_renderStepHeader, "f").call(this),
101
+ h("p", { class: "body-regular-l" }, __classPrivateFieldGet(this, _GxIdeSignInOrganization_componentLocale, "f").signIn.description),
102
+ this.termsConfirmationRequired && (h("div", { class: "field-group" }, h("div", {
103
+ // terms and conditions
104
+ class: "field field-inline"
105
+ }, h("ch-checkbox", { checkedValue: CHECKED_VALUE, id: "terms-and-conditions", class: "checkbox", ref: (el) => (__classPrivateFieldSet(this, _GxIdeSignInOrganization_termsAndConditionsCheckboxEl, el, "f")), onInput: __classPrivateFieldGet(this, _GxIdeSignInOrganization_evaluateTermsConditionsAndPrivacyAccepted, "f") }), h("span", null, h("label", { htmlFor: "terms-and-conditions", class: "label label-agreement" }, __classPrivateFieldGet(this, _GxIdeSignInOrganization_componentLocale, "f").agreement.termsAndConditionsLabel, h("span", { class: { hyperlink: !!this.termsCallback }, onClick: this.termsCallback &&
106
+ __classPrivateFieldGet(this, _GxIdeSignInOrganization_termsAndConditionsClickedHandler, "f") }, __classPrivateFieldGet(this, _GxIdeSignInOrganization_componentLocale, "f").agreement.termsAndConditionsLink)))), h("div", {
107
+ // privacy policy
108
+ class: "field field-inline"
109
+ }, h("ch-checkbox", { checkedValue: CHECKED_VALUE, id: "privacy-policy", class: "checkbox", ref: (el) => (__classPrivateFieldSet(this, _GxIdeSignInOrganization_privacyPolicyCheckboxEl, el, "f")), onInput: __classPrivateFieldGet(this, _GxIdeSignInOrganization_evaluateTermsConditionsAndPrivacyAccepted, "f") }), h("span", null, h("label", { htmlFor: "privacy-policy", class: "label label-agreement" }, __classPrivateFieldGet(this, _GxIdeSignInOrganization_componentLocale, "f").agreement.privacyAndPolicyLabel, h("span", { class: { hyperlink: !!this.privacyCallback }, onClick: this.privacyCallback && __classPrivateFieldGet(this, _GxIdeSignInOrganization_privacyPolicyClickedHandler, "f") }, __classPrivateFieldGet(this, _GxIdeSignInOrganization_componentLocale, "f").agreement.privacyAndPolicyLink)))))),
110
+ __classPrivateFieldGet(this, _GxIdeSignInOrganization_renderStepFooter, "f").call(this)
111
+ ];
112
+ }
113
+ else if (this.authStepInternal === "fetchOrganizations" ||
114
+ this.authStepInternal === "settingUpSession") {
115
+ const loaderTitle = this.authStepInternal === "fetchOrganizations"
116
+ ? __classPrivateFieldGet(this, _GxIdeSignInOrganization_componentLocale, "f").loader.fetchingOrganizationsTitle
117
+ : __classPrivateFieldGet(this, _GxIdeSignInOrganization_componentLocale, "f").loader.settingUpSessionTitle;
118
+ const loaderDescription = this.authStepInternal === "fetchOrganizations"
119
+ ? __classPrivateFieldGet(this, _GxIdeSignInOrganization_componentLocale, "f").loader.fetchingOrganizationsDescription
120
+ : __classPrivateFieldGet(this, _GxIdeSignInOrganization_componentLocale, "f").loader.settingUpDescription;
121
+ return (h("gx-ide-loader", { show: true, loaderTitle: loaderTitle, description: loaderDescription }));
122
+ }
123
+ else if (this.authStepInternal === "selectOrganization") {
124
+ return [
125
+ __classPrivateFieldGet(this, _GxIdeSignInOrganization_renderStepHeader, "f").call(this),
126
+ h("div", { class: "slide__select-organization-description" }, h("p", { class: "body-semi-bold-l" }, __classPrivateFieldGet(this, _GxIdeSignInOrganization_componentLocale, "f").selectOrganization.infoMessage)),
127
+ h("div", { class: "field-group" }, h("div", { class: "field field-block" }, h("label", { htmlFor: "organizations" }, __classPrivateFieldGet(this, _GxIdeSignInOrganization_componentLocale, "f").selectOrganization.label), h("ch-combo-box-render", { id: "organizations", accessibleName: "Organizations", class: "combo-box organizations-list", model: __classPrivateFieldGet(this, _GxIdeSignInOrganization_organizationsModel, "f"), value: (_a = __classPrivateFieldGet(this, _GxIdeSignInOrganization_organizationsModel, "f")[0]) === null || _a === void 0 ? void 0 : _a.value, ref: (el) => (__classPrivateFieldSet(this, _GxIdeSignInOrganization_chSelectOrganizationEl, el, "f")) }))),
128
+ __classPrivateFieldGet(this, _GxIdeSignInOrganization_renderStepFooter, "f").call(this)
129
+ ];
130
+ }
131
+ });
132
+ this.authStepInternal = undefined;
133
+ this.slideIsVisible = true;
134
+ this.termsAndConditionsAccepted = false;
135
+ this.authStep = "signIn";
136
+ this.continueCallback = undefined;
137
+ this.signInCallback = undefined;
138
+ this.termsConfirmationRequired = false;
139
+ this.organizations = undefined;
140
+ this.termsCallback = undefined;
141
+ this.privacyCallback = undefined;
142
+ }
143
+ authStepChanged(newAuthStep) {
144
+ this.slideIsVisible = false;
145
+ // switch step
146
+ setTimeout(() => {
147
+ this.authStepInternal = newAuthStep;
148
+ }, __classPrivateFieldGet(this, _GxIdeSignInOrganization_switchStepTransitionTime, "f"));
149
+ // show slide
150
+ setTimeout(() => {
151
+ this.slideIsVisible = true;
152
+ }, __classPrivateFieldGet(this, _GxIdeSignInOrganization_switchStepTransitionTime, "f") * 2);
153
+ }
154
+ organizationsChanged(newOrganizations) {
155
+ __classPrivateFieldSet(this, _GxIdeSignInOrganization_organizationsModel, mapOrganizationsToComboBoxItemModel(newOrganizations), "f");
156
+ }
157
+ async componentWillLoad() {
158
+ __classPrivateFieldSet(this, _GxIdeSignInOrganization_componentLocale, await Locale.getComponentStrings(this.el), "f");
159
+ this.el.style.setProperty("--switch-step-transtion-time", __classPrivateFieldGet(this, _GxIdeSignInOrganization_switchStepTransitionTime, "f").toString() + "ms");
160
+ // Initialize values
161
+ this.authStepInternal = this.authStep;
162
+ this.organizationsChanged(this.organizations);
163
+ }
164
+ render() {
165
+ return (h(Host, null, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "slide" }, h("img", { src: COPYRIGHTS_ILLUSTRATION, class: "slide__illustration", alt: "" // decorative
166
+ }), h("div", { class: {
167
+ "slide__main": true,
168
+ "slide__main--visible": this.slideIsVisible
169
+ } }, h("div", { class: "slide__main-container" }, __classPrivateFieldGet(this, _GxIdeSignInOrganization_evaluateStepRender, "f").call(this))))));
170
+ }
171
+ static get assetsDirs() { return ["gx-ide-assets/sign-in-organization"]; }
172
+ get el() { return getElement(this); }
173
+ static get watchers() { return {
174
+ "authStep": ["authStepChanged"],
175
+ "organizations": ["organizationsChanged"]
176
+ }; }
177
+ };
178
+ _GxIdeSignInOrganization_componentLocale = new WeakMap(), _GxIdeSignInOrganization_organizationsModel = new WeakMap(), _GxIdeSignInOrganization_chSelectOrganizationEl = new WeakMap(), _GxIdeSignInOrganization_switchStepTransitionTime = new WeakMap(), _GxIdeSignInOrganization_termsAndConditionsCheckboxEl = new WeakMap(), _GxIdeSignInOrganization_privacyPolicyCheckboxEl = new WeakMap(), _GxIdeSignInOrganization_authStepCallback = new WeakMap(), _GxIdeSignInOrganization_continueHandler = new WeakMap(), _GxIdeSignInOrganization_renderStepHeader = new WeakMap(), _GxIdeSignInOrganization_renderStepFooter = new WeakMap(), _GxIdeSignInOrganization_evaluateTermsConditionsAndPrivacyAccepted = new WeakMap(), _GxIdeSignInOrganization_termsAndConditionsClickedHandler = new WeakMap(), _GxIdeSignInOrganization_privacyPolicyClickedHandler = new WeakMap(), _GxIdeSignInOrganization_evaluateStepRender = new WeakMap();
179
+ GxIdeSignInOrganization.style = signInOrganizationCss;
180
+
181
+ export { GxIdeSignInOrganization as gx_ide_sign_in_organization };
182
+
183
+ //# sourceMappingURL=gx-ide-sign-in-organization.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"gx-ide-sign-in-organization.entry.js","mappings":"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","names":[],"sources":["src/components/sign-in-organization/helpers.ts","src/components/sign-in-organization/sign-in-organization.scss?tag=gx-ide-sign-in-organization&encapsulation=shadow","src/components/sign-in-organization/sign-in-organization.tsx"],"sourcesContent":["import { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { OrganizationData } from \"./sign-in-organization\";\n\nexport const mapOrganizationsToComboBoxItemModel = (\n organizations?: OrganizationData[]\n): ComboBoxItemModel[] | undefined => {\n if (!organizations) {\n return [];\n }\n return organizations.map(organization => ({\n value: organization.id,\n caption: organization.name\n }));\n};\n",":host {\n display: grid;\n container-type: inline-size;\n container-name: host-container;\n block-size: 100%;\n inline-size: 100%;\n align-items: center;\n justify-content: center;\n}\n\n.slide {\n display: grid;\n grid-template-columns: 1fr 1fr;\n block-size: 100%;\n max-block-size: 700px;\n max-inline-size: 1100px;\n background-color: var(--color-accent-surface-elevation-1);\n border-radius: var(--dialog-border-radius, 16px);\n overflow: hidden;\n\n &__illustration {\n overflow: hidden;\n object-fit: cover;\n object-position: left;\n block-size: 100%;\n inline-size: 100%;\n }\n\n &__main {\n display: grid;\n block-size: 100%;\n inline-size: 100%;\n padding: 48px;\n transform: translateY(4px);\n transition: var(--switch-step-transtion-time) all;\n opacity: 0;\n\n &--visible {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n &__main-container {\n display: grid;\n place-self: center;\n gap: var(--spacing-gap-xxl);\n max-inline-size: 480px;\n }\n\n &__main-header {\n display: grid;\n gap: var(--spacing-gap-xxl);\n }\n\n &__main-title {\n display: flex;\n flex-direction: column;\n letter-spacing: 0.02em;\n }\n\n &__main-description {\n display: grid;\n gap: 40px;\n color: var(--color-text-neutral-disabled);\n max-inline-size: 370px;\n }\n}\n\n.teams-list {\n inline-size: 100%;\n max-inline-size: 400px;\n --ch-combo-box__popover-max-inline-size: 400px;\n}\n\n.main-btn {\n inline-size: 100%;\n max-inline-size: 124px;\n}\n\n@container host-container (max-width: 768px) {\n .slide {\n grid-template-columns: 1fr 2fr;\n }\n}\n\n@container host-container (max-width: 640px) {\n .slide {\n grid-template-columns: 1fr 5fr;\n }\n}\n\n// WA (this class should be defined on Mercury\n.hyperlink {\n text-decoration: underline;\n cursor: pointer;\n}\n// WA checkboxes labels should not include margin-block-start when\n// placed inside a field-inline.\n.field-inline > .label-agreement {\n margin-block-start: 0 !important;\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n State,\n Watch,\n Element,\n getAssetPath\n} from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\n// Custom Imports\nimport { Locale } from \"../../common/locale\";\nimport { mapOrganizationsToComboBoxItemModel } from \"./helpers\";\n\nconst COPYRIGHTS_ILLUSTRATION = getAssetPath(\n `./gx-ide-assets/welcome-page/images/copyrights-illustration.png`\n);\nconst ICON_NEXT = getAssetPath(\n `./gx-ide-assets/welcome-page/images/icon-next.svg`\n);\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"components/button\",\n \"components/combo-box\",\n \"components/checkbox\",\n \"utils/form\"\n];\n\nconst CHECKED_VALUE = \"on\";\n\n@Component({\n tag: \"gx-ide-sign-in-organization\",\n styleUrl: \"sign-in-organization.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/sign-in-organization\"]\n})\nexport class GxIdeSignInOrganization {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n // Select Organization References :\n #organizationsModel: ComboBoxItemModel[] = [];\n #chSelectOrganizationEl: HTMLChComboBoxRenderElement;\n #switchStepTransitionTime: number = 100;\n #termsAndConditionsCheckboxEl!: HTMLChCheckboxElement;\n #privacyPolicyCheckboxEl!: HTMLChCheckboxElement;\n\n @Element() el: HTMLGxIdeSignInOrganizationElement;\n\n /**\n * This is a handover from \"authStep\" that allows updating descriptions once\n * the slide is hidden. This enables a smooth transition between descriptions.\n */\n\n @State() authStepInternal: AuthStep;\n\n /**\n * Defines if the main slide is visible or not. Used for smooth transitions\n * between slides.\n */\n @State() slideIsVisible: boolean = true;\n\n /**\n * True if terms and conditions are accepted.\n */\n @State() termsAndConditionsAccepted: boolean = false;\n\n /**\n * The authentication step to display\n */\n @Prop() readonly authStep: AuthStep = \"signIn\";\n @Watch(\"authStep\")\n authStepChanged(newAuthStep: AuthStep) {\n this.slideIsVisible = false;\n // switch step\n setTimeout(() => {\n this.authStepInternal = newAuthStep;\n }, this.#switchStepTransitionTime);\n // show slide\n setTimeout(() => {\n this.slideIsVisible = true;\n }, this.#switchStepTransitionTime * 2);\n }\n\n /**\n * Callback executed when the user clicks the 'Continue' button\n */\n @Prop() readonly continueCallback!: (organizationId: string) => Promise<void>;\n\n /**\n * Callback executed when the user click the \"Sign In\" button\n */\n @Prop() readonly signInCallback!: () => Promise<void>;\n\n /**\n * When true, it will diplay checkboxes for the user to confirm terms and conditions\n */\n @Prop() readonly termsConfirmationRequired: boolean = false;\n\n /**\n * Array that contains the user's organizations\n */\n @Prop() readonly organizations!: OrganizationData[];\n @Watch(\"organizations\")\n organizationsChanged(newOrganizations: OrganizationData[]) {\n this.#organizationsModel =\n mapOrganizationsToComboBoxItemModel(newOrganizations);\n }\n\n /**\n * Callback executed when the user clicks on the \"term and conditions\" link\n */\n @Prop() readonly termsCallback: () => Promise<void>;\n\n /**\n * Callback executed when the user clicks on the \"privacy policy\" link\n */\n @Prop() readonly privacyCallback: () => Promise<void>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.el.style.setProperty(\n \"--switch-step-transtion-time\",\n this.#switchStepTransitionTime.toString() + \"ms\"\n );\n // Initialize values\n this.authStepInternal = this.authStep;\n this.organizationsChanged(this.organizations);\n }\n\n #authStepCallback = () => {\n if (this.authStep === \"signIn\") {\n this.signInCallback();\n } else if (this.authStep === \"selectOrganization\") {\n this.#continueHandler();\n }\n };\n\n #continueHandler = async () => {\n await this.continueCallback(this.#chSelectOrganizationEl.value);\n };\n\n #renderStepHeader = (): HTMLElement => {\n return (\n <header class=\"slide__main-header\">\n <img\n src={ICON_NEXT}\n alt=\"\" // decorative\n />\n <h2\n // Split the title into two spans for better styling\n class=\"slide__main-title heading-2\"\n >\n <span>{this.#componentLocale[this.authStepInternal].titlePart1}</span>\n <span>{this.#componentLocale[this.authStepInternal].titlePart2}</span>\n </h2>\n </header>\n );\n };\n\n #renderStepFooter = (): HTMLElement => {\n const signInDisabled =\n this.authStep === \"signIn\" &&\n this.termsConfirmationRequired &&\n !this.termsAndConditionsAccepted;\n return (\n <div>\n <button\n class=\"button-primary main-btn\"\n onClick={this.#authStepCallback}\n disabled={signInDisabled}\n >\n {this.#componentLocale[this.authStepInternal].buttonCaption}\n </button>\n </div>\n );\n };\n\n #evaluateTermsConditionsAndPrivacyAccepted = () => {\n const termsAndConditionsAccepted =\n this.#termsAndConditionsCheckboxEl.value === CHECKED_VALUE;\n const privacyPolicyAccepted =\n this.#privacyPolicyCheckboxEl.value === CHECKED_VALUE;\n this.termsAndConditionsAccepted =\n termsAndConditionsAccepted && privacyPolicyAccepted;\n };\n\n #termsAndConditionsClickedHandler = (event: MouseEvent) => {\n event.preventDefault();\n this.termsCallback();\n };\n\n #privacyPolicyClickedHandler = (event: MouseEvent) => {\n event.preventDefault();\n this.privacyCallback();\n };\n\n #evaluateStepRender = () => {\n if (this.authStepInternal === \"signIn\") {\n return [\n this.#renderStepHeader(),\n <p class=\"body-regular-l\">\n {this.#componentLocale.signIn.description}\n </p>,\n this.termsConfirmationRequired && (\n <div class=\"field-group\">\n <div\n // terms and conditions\n class=\"field field-inline\"\n >\n <ch-checkbox\n checkedValue={CHECKED_VALUE}\n id=\"terms-and-conditions\"\n class=\"checkbox\"\n ref={(el: HTMLChCheckboxElement) =>\n (this.#termsAndConditionsCheckboxEl =\n el as HTMLChCheckboxElement)\n }\n onInput={this.#evaluateTermsConditionsAndPrivacyAccepted}\n ></ch-checkbox>\n <span>\n {/*\n WA: this span prevents field-inline applying padding-block-start on the label\n TODO: See how to ignore padding-block-start when using field-inline with a control\n that is not an input, combo-box, etc..\n */}\n <label\n htmlFor=\"terms-and-conditions\"\n class=\"label label-agreement\"\n >\n {this.#componentLocale.agreement.termsAndConditionsLabel}\n <span\n class={{ hyperlink: !!this.termsCallback }}\n onClick={\n this.termsCallback &&\n this.#termsAndConditionsClickedHandler\n }\n >\n {this.#componentLocale.agreement.termsAndConditionsLink}\n </span>\n </label>\n </span>\n </div>\n <div\n // privacy policy\n class=\"field field-inline\"\n >\n <ch-checkbox\n checkedValue={CHECKED_VALUE}\n id=\"privacy-policy\"\n class=\"checkbox\"\n ref={(el: HTMLChCheckboxElement) =>\n (this.#privacyPolicyCheckboxEl = el as HTMLChCheckboxElement)\n }\n onInput={this.#evaluateTermsConditionsAndPrivacyAccepted}\n ></ch-checkbox>\n <span>\n {/*\n WA: this span prevents field-inline applying padding-block-start on the label\n TODO: See how to ignore padding-block-start when using field-inline with a control\n that is not an input, combo-box, etc..\n */}\n <label htmlFor=\"privacy-policy\" class=\"label label-agreement\">\n {this.#componentLocale.agreement.privacyAndPolicyLabel}\n <span\n class={{ hyperlink: !!this.privacyCallback }}\n onClick={\n this.privacyCallback && this.#privacyPolicyClickedHandler\n }\n >\n {this.#componentLocale.agreement.privacyAndPolicyLink}\n </span>\n </label>\n </span>\n </div>\n </div>\n ),\n\n this.#renderStepFooter()\n ];\n } else if (\n this.authStepInternal === \"fetchOrganizations\" ||\n this.authStepInternal === \"settingUpSession\"\n ) {\n const loaderTitle =\n this.authStepInternal === \"fetchOrganizations\"\n ? this.#componentLocale.loader.fetchingOrganizationsTitle\n : this.#componentLocale.loader.settingUpSessionTitle;\n const loaderDescription =\n this.authStepInternal === \"fetchOrganizations\"\n ? this.#componentLocale.loader.fetchingOrganizationsDescription\n : this.#componentLocale.loader.settingUpDescription;\n return (\n <gx-ide-loader\n show\n loaderTitle={loaderTitle}\n description={loaderDescription}\n ></gx-ide-loader>\n );\n } else if (this.authStepInternal === \"selectOrganization\") {\n return [\n this.#renderStepHeader(),\n <div class=\"slide__select-organization-description\">\n <p class=\"body-semi-bold-l\">\n {this.#componentLocale.selectOrganization.infoMessage}\n </p>\n </div>,\n <div class=\"field-group\">\n <div class=\"field field-block\">\n <label htmlFor=\"organizations\">\n {this.#componentLocale.selectOrganization.label}\n </label>\n <ch-combo-box-render\n id=\"organizations\"\n accessibleName=\"Organizations\"\n class=\"combo-box organizations-list\"\n model={this.#organizationsModel}\n value={this.#organizationsModel[0]?.value}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#chSelectOrganizationEl =\n el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n </div>,\n this.#renderStepFooter()\n ];\n }\n };\n\n render() {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"slide\">\n <img\n src={COPYRIGHTS_ILLUSTRATION}\n class=\"slide__illustration\"\n alt=\"\" // decorative\n />\n\n <div\n class={{\n \"slide__main\": true,\n \"slide__main--visible\": this.slideIsVisible\n }}\n >\n <div class=\"slide__main-container\">\n {this.#evaluateStepRender()}\n </div>\n </div>\n </section>\n </Host>\n );\n }\n}\n\nexport type AuthStep =\n | \"signIn\"\n | \"fetchOrganizations\"\n | \"selectOrganization\"\n | \"settingUpSession\";\n\nexport type OrganizationData = {\n id: string;\n name: string;\n};\n"],"version":3}