@genexus/genexus-ide-ui 2.1.0 → 2.1.2

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.
@@ -5,12 +5,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-75aef097.js');
6
6
  const locale = require('./locale-ff30a5f3.js');
7
7
 
8
- const signInResultCss = ":host{display:grid;block-size:100%;overflow:auto;display:flex;align-items:center;justify-content:center}.content{display:flex;align-items:center;flex-direction:column;color:var(--color-neutral-300);gap:var(--spacing-gap-xl);text-align:center;padding:var(--spacing-padding-xxl)}.check-icon{block-size:64px;inline-size:64px;border-radius:50%;background-color:var(--color-accent-success-pressed);background-image:var(--icon__system_check_on-surface--enabled);background-repeat:no-repeat;background-position:center center;background-size:32px;margin-block-end:16px}.genexus-next-logo{inline-size:140px;margin-block-start:108px}";
8
+ const signInResultCss = ":host{display:grid;block-size:100%;overflow:auto;display:flex;align-items:center;justify-content:center}.content{display:flex;align-items:center;flex-direction:column;color:var(--color-text-neutral-default);gap:var(--spacing-gap-xl);text-align:center;padding:var(--spacing-padding-xxl)}.check-icon{block-size:64px;inline-size:64px;border-radius:50%;background-color:var(--color-accent-success-contrast);background-image:var(--icon__system_check_on-surface--enabled);background-repeat:no-repeat;background-position:center center;background-size:32px;margin-block-end:16px}.genexus-next-logo{inline-size:140px;block-size:30px;margin-block-start:108px;mask-size:contain;background-color:var(--color-icon-neutral-default)}";
9
9
 
10
10
  const ASSETS_DIR = "gx-ide-assets/sign-in-result";
11
11
  const LEFT_SIDE_ILLUSTRATION = index.getAssetPath(`./${ASSETS_DIR}/images/left-side-illustration.svg`);
12
12
  const RIGHT_SIDE_ILLUSTRATION = index.getAssetPath(`./${ASSETS_DIR}/images/right-side-illustration.svg`);
13
- const GENEXUS_NEXT_LOGO = index.getAssetPath(`./${ASSETS_DIR}/images/genexus-next-logo.svg`);
13
+ const GENEXUS_NEXT_LOGO_SRC = index.getAssetPath(`./${ASSETS_DIR}/images/genexus-next-logo.svg`);
14
14
  const CSS_BUNDLES = [
15
15
  // Use only the bundles that are needed for this component.
16
16
  "resets/box-sizing",
@@ -31,7 +31,9 @@ const GxIdeSignInResult = class {
31
31
  backgroundRepeat: "no-repeat, no-repeat",
32
32
  backgroundPosition: "left, right bottom",
33
33
  backgroundSize: "auto 100%, auto 55%"
34
- } }, index.h("ch-theme", { model: CSS_BUNDLES }), index.h("div", { class: "content" }, index.h("span", { class: "check-icon" }), index.h("h1", { class: "heading-3" }, this._componentLocale.title), index.h("p", { class: "subtitle-regular-s" }, this._componentLocale.description), index.h("img", { src: GENEXUS_NEXT_LOGO, alt: "", class: "genexus-next-logo" }))));
34
+ } }, index.h("ch-theme", { model: CSS_BUNDLES }), index.h("div", { class: "content" }, index.h("span", { class: "check-icon" }), index.h("h1", { class: "heading-3" }, this._componentLocale.title), index.h("p", { class: "subtitle-regular-s" }, this._componentLocale.description), index.h("div", { style: {
35
+ mask: `url(${GENEXUS_NEXT_LOGO_SRC}) no-repeat center / contain`
36
+ }, class: "genexus-next-logo" }))));
35
37
  }
36
38
  static get assetsDirs() { return ["gx-ide-assets/sign-in-result"]; }
37
39
  get el() { return index.getElement(this); }
@@ -1 +1 @@
1
- {"file":"gx-ide-sign-in-result.entry.cjs.js","mappings":";;;;;;;AAAA,MAAM,eAAe,GAAG,inBAAinB;;ACSzoB,MAAM,UAAU,GAAG,8BAA8B,CAAC;AAElD,MAAM,sBAAsB,GAAGA,kBAAY,CACzC,KAAK,UAAU,oCAAoC,CACpD,CAAC;AACF,MAAM,uBAAuB,GAAGA,kBAAY,CAC1C,KAAK,UAAU,qCAAqC,CACrD,CAAC;AACF,MAAM,iBAAiB,GAAGA,kBAAY,CACpC,KAAK,UAAU,+BAA+B,CAC/C,CAAC;AAEF,MAAM,WAAW,GAAmB;;IAElC,mBAAmB;IACnB,kBAAkB;IAClB,eAAe;CAChB,CAAC;MAQW,iBAAiB;;;;IAK5B,MAAM,iBAAiB;QACrB,IAAI,CAAC,gBAAgB,GAAG,MAAMC,aAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACnE;IAED,gBAAgB,MAAK;IAErB,MAAM;QACJ,QACEC,QAACC,UAAI,IACH,KAAK,EAAC,qBAAqB,EAC3B,KAAK,EAAE;gBACL,eAAe,EAAE,QAAQ,sBAAsB,YAAY,uBAAuB,IAAI;gBACtF,gBAAgB,EAAE,sBAAsB;gBACxC,kBAAkB,EAAE,oBAAoB;gBACxC,cAAc,EAAE,qBAAqB;aACtC,IAEDD,sBAAU,KAAK,EAAE,WAAW,GAAa,EACzCA,iBAAK,KAAK,EAAC,SAAS,IAClBA,kBAAM,KAAK,EAAC,YAAY,GAAQ,EAChCA,gBAAI,KAAK,EAAC,WAAW,IAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAM,EACxDA,eAAG,KAAK,EAAC,oBAAoB,IAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAK,EACrEA,iBAAK,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAC,EAAE,EAAC,KAAK,EAAC,mBAAmB,GAAG,CAC5D,CACD,EACP;KACH;;;;;;;;","names":["getAssetPath","Locale","h","Host"],"sources":["src/components/sign-in-result/sign-in-result.scss?tag=gx-ide-sign-in-result&encapsulation=shadow","src/components/sign-in-result/sign-in-result.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.content {\n display: flex;\n align-items: center;\n flex-direction: column;\n color: var(--color-neutral-300);\n gap: var(--spacing-gap-xl);\n text-align: center;\n padding: var(--spacing-padding-xxl);\n}\n\n.check-icon {\n $checkIconSize: 64px;\n block-size: $checkIconSize;\n inline-size: $checkIconSize;\n border-radius: 50%;\n background-color: var(--color-accent-success-pressed);\n background-image: var(--icon__system_check_on-surface--enabled);\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 32px;\n margin-block-end: 16px;\n}\n\n.genexus-next-logo {\n inline-size: 140px;\n margin-block-start: 108px;\n}\n","// This is a starting template. Do not edit this file directly.\n// Dupicate it and modify the new file as needed.\n\nimport { Component, Host, Element, getAssetPath, h } from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\n\nconst ASSETS_DIR = \"gx-ide-assets/sign-in-result\";\n\nconst LEFT_SIDE_ILLUSTRATION = getAssetPath(\n `./${ASSETS_DIR}/images/left-side-illustration.svg`\n);\nconst RIGHT_SIDE_ILLUSTRATION = getAssetPath(\n `./${ASSETS_DIR}/images/right-side-illustration.svg`\n);\nconst GENEXUS_NEXT_LOGO = getAssetPath(\n `./${ASSETS_DIR}/images/genexus-next-logo.svg`\n);\n\nconst CSS_BUNDLES: MercuryBundles = [\n // Use only the bundles that are needed for this component.\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\n@Component({\n tag: \"gx-ide-sign-in-result\",\n styleUrl: \"sign-in-result.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/sign-in-result\"]\n})\nexport class GxIdeSignInResult {\n _componentLocale: any;\n\n @Element() el: HTMLGxIdeSignInResultElement;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {}\n\n render() {\n return (\n <Host\n class=\"widget spacing-body\"\n style={{\n backgroundImage: `url('${LEFT_SIDE_ILLUSTRATION}'), url('${RIGHT_SIDE_ILLUSTRATION}')`,\n backgroundRepeat: \"no-repeat, no-repeat\",\n backgroundPosition: \"left, right bottom\",\n backgroundSize: \"auto 100%, auto 55%\"\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"content\">\n <span class=\"check-icon\"></span>\n <h1 class=\"heading-3\">{this._componentLocale.title}</h1>\n <p class=\"subtitle-regular-s\">{this._componentLocale.description}</p>\n <img src={GENEXUS_NEXT_LOGO} alt=\"\" class=\"genexus-next-logo\" />\n </div>\n </Host>\n );\n }\n}\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type SaveCallback = () => Promise<string>;\n"],"version":3}
1
+ {"file":"gx-ide-sign-in-result.entry.cjs.js","mappings":";;;;;;;AAAA,MAAM,eAAe,GAAG,gtBAAgtB;;ACSxuB,MAAM,UAAU,GAAG,8BAA8B,CAAC;AAElD,MAAM,sBAAsB,GAAGA,kBAAY,CACzC,KAAK,UAAU,oCAAoC,CACpD,CAAC;AACF,MAAM,uBAAuB,GAAGA,kBAAY,CAC1C,KAAK,UAAU,qCAAqC,CACrD,CAAC;AACF,MAAM,qBAAqB,GAAGA,kBAAY,CACxC,KAAK,UAAU,+BAA+B,CAC/C,CAAC;AAEF,MAAM,WAAW,GAAmB;;IAElC,mBAAmB;IACnB,kBAAkB;IAClB,eAAe;CAChB,CAAC;MAQW,iBAAiB;;;;IAK5B,MAAM,iBAAiB;QACrB,IAAI,CAAC,gBAAgB,GAAG,MAAMC,aAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACnE;IAED,gBAAgB,MAAK;IAErB,MAAM;QACJ,QACEC,QAACC,UAAI,IACH,KAAK,EAAC,qBAAqB,EAC3B,KAAK,EAAE;gBACL,eAAe,EAAE,QAAQ,sBAAsB,YAAY,uBAAuB,IAAI;gBACtF,gBAAgB,EAAE,sBAAsB;gBACxC,kBAAkB,EAAE,oBAAoB;gBACxC,cAAc,EAAE,qBAAqB;aACtC,IAEDD,sBAAU,KAAK,EAAE,WAAW,GAAa,EACzCA,iBAAK,KAAK,EAAC,SAAS,IAClBA,kBAAM,KAAK,EAAC,YAAY,GAAQ,EAChCA,gBAAI,KAAK,EAAC,WAAW,IAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAM,EACxDA,eAAG,KAAK,EAAC,oBAAoB,IAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAK,EACrEA,iBACE,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO,qBAAqB,8BAA8B;aACjE,EACD,KAAK,EAAC,mBAAmB,GACzB,CACE,CACD,EACP;KACH;;;;;;;;","names":["getAssetPath","Locale","h","Host"],"sources":["src/components/sign-in-result/sign-in-result.scss?tag=gx-ide-sign-in-result&encapsulation=shadow","src/components/sign-in-result/sign-in-result.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.content {\n display: flex;\n align-items: center;\n flex-direction: column;\n color: var(--color-text-neutral-default);\n gap: var(--spacing-gap-xl);\n text-align: center;\n padding: var(--spacing-padding-xxl);\n}\n\n.check-icon {\n $checkIconSize: 64px;\n block-size: $checkIconSize;\n inline-size: $checkIconSize;\n border-radius: 50%;\n background-color: var(--color-accent-success-contrast);\n background-image: var(--icon__system_check_on-surface--enabled);\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 32px;\n margin-block-end: 16px;\n}\n\n.genexus-next-logo {\n inline-size: 140px;\n block-size: 30px;\n margin-block-start: 108px;\n mask-size: contain;\n background-color: var(--color-icon-neutral-default);\n}\n","// This is a starting template. Do not edit this file directly.\n// Dupicate it and modify the new file as needed.\n\nimport { Component, Host, Element, getAssetPath, h } from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\n\nconst ASSETS_DIR = \"gx-ide-assets/sign-in-result\";\n\nconst LEFT_SIDE_ILLUSTRATION = getAssetPath(\n `./${ASSETS_DIR}/images/left-side-illustration.svg`\n);\nconst RIGHT_SIDE_ILLUSTRATION = getAssetPath(\n `./${ASSETS_DIR}/images/right-side-illustration.svg`\n);\nconst GENEXUS_NEXT_LOGO_SRC = getAssetPath(\n `./${ASSETS_DIR}/images/genexus-next-logo.svg`\n);\n\nconst CSS_BUNDLES: MercuryBundles = [\n // Use only the bundles that are needed for this component.\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\n@Component({\n tag: \"gx-ide-sign-in-result\",\n styleUrl: \"sign-in-result.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/sign-in-result\"]\n})\nexport class GxIdeSignInResult {\n _componentLocale: any;\n\n @Element() el: HTMLGxIdeSignInResultElement;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {}\n\n render() {\n return (\n <Host\n class=\"widget spacing-body\"\n style={{\n backgroundImage: `url('${LEFT_SIDE_ILLUSTRATION}'), url('${RIGHT_SIDE_ILLUSTRATION}')`,\n backgroundRepeat: \"no-repeat, no-repeat\",\n backgroundPosition: \"left, right bottom\",\n backgroundSize: \"auto 100%, auto 55%\"\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"content\">\n <span class=\"check-icon\"></span>\n <h1 class=\"heading-3\">{this._componentLocale.title}</h1>\n <p class=\"subtitle-regular-s\">{this._componentLocale.description}</p>\n <div\n style={{\n mask: `url(${GENEXUS_NEXT_LOGO_SRC}) no-repeat center / contain`\n }}\n class=\"genexus-next-logo\"\n />\n </div>\n </Host>\n );\n }\n}\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type SaveCallback = () => Promise<string>;\n"],"version":3}
@@ -27,7 +27,7 @@ const mapOptionsToComboBoxItemModel = (options) => {
27
27
  });
28
28
  };
29
29
 
30
- const wwImagesCss = "/*@container queries*/\n/* hiChar styles\nFound on /common/helpers.tsx hiChar function is used to add a span/class to every character that matches a search value. It is used to help the user see why the filter results are filtered. The span/class on the characters are useless without proper styling.\n*/\n:host {\n container-type: inline-size;\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n grid-template-areas: \"name module-folder\" \"advanced-filter-accordion advanced-filter-accordion\";\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: max-content max-content;\n}\n\n.name {\n grid-area: name;\n}\n\n.module-folder {\n grid-area: module-folder;\n}\n\n.advanced-filter-accordion {\n grid-area: advanced-filter-accordion;\n}\n\n.main {\n --sidebar-width: 400px;\n display: grid;\n grid-template-columns: 1fr var(--sidebar-width);\n overflow: auto;\n padding-block-start: var(--size-16);\n}\n\n.main__grid {\n overflow: auto;\n position: relative;\n}\n\n.tabular-grid-ww-images {\n overflow: auto;\n border-inline-end: var(--section-common-border);\n}\n\nch-tabular-grid-rowset-empty {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n inline-size: 100%;\n z-index: 1;\n}\n\n.main__aside {\n overflow: auto;\n display: grid;\n grid-template-rows: max-content 1fr;\n}\n\n.main__filter {\n display: grid;\n grid-auto-rows: max-content;\n grid-template-columns: 1fr 1fr 1fr;\n grid-template-areas: \"category options after\" \"style language user\" \"density layer date-time\" \"search-by-contents search-by-contents button-reset\";\n overflow: auto;\n}\n\n.category {\n grid-area: category;\n}\n\n.options {\n grid-area: options;\n}\n\n.after-date-time {\n grid-area: after;\n}\n\n.user {\n grid-area: user;\n}\n\n.date-time {\n grid-area: date-time;\n}\n\n.style {\n grid-area: style;\n}\n\n.language {\n grid-area: language;\n}\n\n.density {\n grid-area: density;\n}\n\n.layer {\n grid-area: layer;\n}\n\n.search-by-contents {\n grid-area: search-by-contents;\n}\n\n.button-reset {\n grid-area: button-reset;\n align-self: end;\n justify-self: end;\n}\n\n.main__images-container {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: var(--size-8);\n position: relative;\n z-index: 1;\n}\n.main__images-container .figure {\n margin: 0;\n background-color: var(--color-accent-surface-elevation-2);\n display: grid;\n gap: var(--size-4);\n padding: var(--size-8);\n border-radius: var(--size-4);\n opacity: 0;\n animation: fadeIn 300ms forwards;\n}\n.main__images-container .figure__picture {\n object-fit: contain;\n}\n.main__images-container .figure__img {\n block-size: auto;\n inline-size: 100%;\n}\n.main__images-container .figure__figcaption {\n text-align: center;\n font-size: var(--font-size-body-xs);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n inline-size: 100%;\n}\n\n.tabular-grid-ww-images ch-tabular-grid-cell:is(:nth-child(1), :nth-child(2), :nth-child(3), :nth-child(4), :nth-child(5), :nth-child(6), :nth-child(7)) {\n align-items: start;\n justify-content: start;\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n min-inline-size: 0;\n}\n@keyframes fadeIn {\n to {\n opacity: 1;\n }\n}\n@container (max-width: 992px) {\n .main {\n --sidebar-width: 300px;\n }\n\n .main__images-container {\n grid-template-columns: repeat(3, 1fr);\n }\n}\n@container (max-width: 768px) {\n .main {\n --sidebar-width: 200px;\n }\n\n .main__images-container {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n@container (max-width: 640px) {\n .main {\n --sidebar-width: 100px;\n }\n\n .main__images-container {\n grid-template-columns: 1fr;\n }\n}";
30
+ const wwImagesCss = "/*@container queries*/\n/* hiChar styles\nFound on /common/helpers.tsx hiChar function is used to add a span/class to every character that matches a search value. It is used to help the user see why the filter results are filtered. The span/class on the characters are useless without proper styling.\n*/\n:host {\n container-type: inline-size;\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n grid-template-areas: \"name module-folder\" \"advanced-filter-accordion advanced-filter-accordion\";\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: max-content max-content;\n}\n\n.name {\n grid-area: name;\n}\n\n.module-folder {\n grid-area: module-folder;\n}\n\n.advanced-filter-accordion {\n grid-area: advanced-filter-accordion;\n}\n\n.main {\n --sidebar-width: 376px;\n display: grid;\n grid-template-columns: 1fr var(--sidebar-width);\n overflow: auto;\n padding-block-start: var(--size-16);\n}\n\n.main__grid {\n overflow: auto;\n position: relative;\n}\n\n.tabular-grid-ww-images {\n overflow: auto;\n border-inline-end: var(--section-common-border);\n}\n\nch-tabular-grid-rowset-empty {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n inline-size: 100%;\n z-index: 1;\n}\n\n.main__aside {\n overflow: auto;\n display: grid;\n grid-template-rows: max-content 1fr;\n}\n\n.main__filter {\n display: grid;\n grid-auto-rows: max-content;\n grid-template-columns: 1fr 1fr 1fr;\n grid-template-areas: \"category options after\" \"style language user\" \"density layer date-time\" \"search-by-contents search-by-contents button-reset\";\n overflow: auto;\n}\n\n.category {\n grid-area: category;\n}\n\n.options {\n grid-area: options;\n}\n\n.after-date-time {\n grid-area: after;\n}\n\n.user {\n grid-area: user;\n}\n\n.date-time {\n grid-area: date-time;\n}\n\n.style {\n grid-area: style;\n}\n\n.language {\n grid-area: language;\n}\n\n.density {\n grid-area: density;\n}\n\n.layer {\n grid-area: layer;\n}\n\n.search-by-contents {\n grid-area: search-by-contents;\n}\n\n.button-reset {\n grid-area: button-reset;\n align-self: end;\n justify-self: end;\n}\n\n.main__images-container {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: var(--size-8);\n position: relative;\n z-index: 1;\n}\n.main__images-container .figure {\n margin: 0;\n background-color: var(--color-accent-surface-elevation-2);\n display: grid;\n grid-template-rows: minmax(0, 1fr) max-content;\n gap: var(--size-4);\n padding: var(--size-8);\n border-radius: var(--size-4);\n opacity: 0;\n animation: fadeIn 300ms forwards;\n aspect-ratio: 1/1;\n}\n.main__images-container .figure__picture {\n display: flex;\n align-items: center;\n justify-content: center;\n min-block-size: 0;\n}\n.main__images-container .figure__img {\n display: block;\n max-inline-size: 100%;\n max-block-size: 100%;\n inline-size: auto;\n block-size: auto;\n object-fit: contain;\n}\n.main__images-container .figure__figcaption {\n text-align: center;\n font-size: var(--font-size-body-xs);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n inline-size: 100%;\n}\n\n.tabular-grid-ww-images ch-tabular-grid-cell:is(:nth-child(1), :nth-child(2), :nth-child(3), :nth-child(4), :nth-child(5), :nth-child(6), :nth-child(7)) {\n align-items: start;\n justify-content: start;\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n min-inline-size: 0;\n}\n@keyframes fadeIn {\n to {\n opacity: 1;\n }\n}\n@container (max-width: 992px) {\n .main {\n --sidebar-width: 288px;\n }\n\n .main__images-container {\n grid-template-columns: repeat(3, 1fr);\n }\n}\n@container (max-width: 768px) {\n .main {\n --sidebar-width: 200px;\n }\n\n .main__images-container {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n@container (max-width: 640px) {\n .main {\n --sidebar-width: 112px;\n }\n\n .main__images-container {\n grid-template-columns: 1fr;\n }\n}";
31
31
 
32
32
  var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
33
33
  if (kind === "a" && !f)
@@ -1 +1 @@
1
- {"file":"gx-ide-ww-images.entry.cjs.js","mappings":"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","names":["getIconPath","h","config","FILTER_AFTER","formatDate","Locale","Host"],"sources":["src/components/ww-images/helpers.tsx","src/components/ww-images/ww-images.scss?tag=gx-ide-ww-images&encapsulation=shadow","src/components/ww-images/ww-images.tsx"],"sourcesContent":["import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../..\";\n\nexport const mapOptionsToComboBoxItemModel = (\n options: GxOption[]\n): ComboBoxModel => {\n if (!options) {\n return [];\n }\n return options.map(option => {\n return {\n value: option.id,\n caption: option.label,\n startImgSrc: option.iconName ?? \"\"\n };\n });\n};\n","@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n container-type: inline-size;\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - - -\n// Header\n// - - - - - - - - - - - -\n\n// First row\n.header {\n grid-template-areas:\n \"name module-folder\"\n \"advanced-filter-accordion advanced-filter-accordion\";\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: max-content max-content;\n}\n\n// Accordion Advanced Filter\n.name {\n grid-area: name;\n}\n.module-folder {\n grid-area: module-folder;\n}\n.advanced-filter-accordion {\n grid-area: advanced-filter-accordion;\n}\n\n// - - - - - - - - - - - -\n// Main\n// - - - - - - - - - - - -\n\n.main {\n --sidebar-width: 400px;\n display: grid;\n grid-template-columns: 1fr var(--sidebar-width);\n overflow: auto;\n padding-block-start: var(--size-16);\n}\n\n.main__grid {\n overflow: auto;\n position: relative;\n}\n.tabular-grid-ww-images {\n overflow: auto;\n border-inline-end: var(--section-common-border);\n}\n\nch-tabular-grid-rowset-empty {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n inline-size: 100%;\n z-index: 1;\n}\n\n// main aside\n.main__aside {\n overflow: auto;\n display: grid;\n grid-template-rows: max-content 1fr;\n}\n.main__filter {\n display: grid;\n grid-auto-rows: max-content;\n grid-template-columns: 1fr 1fr 1fr;\n grid-template-areas:\n \"category options after\"\n \"style language user\"\n \"density layer date-time\"\n \"search-by-contents search-by-contents button-reset\";\n overflow: auto;\n}\n.category {\n grid-area: category;\n}\n.options {\n grid-area: options;\n}\n.after-date-time {\n grid-area: after;\n}\n.user {\n grid-area: user;\n}\n.date-time {\n grid-area: date-time;\n}\n.style {\n grid-area: style;\n}\n.language {\n grid-area: language;\n}\n.density {\n grid-area: density;\n}\n.layer {\n grid-area: layer;\n}\n.search-by-contents {\n grid-area: search-by-contents;\n}\n.button-reset {\n grid-area: button-reset;\n align-self: end;\n justify-self: end;\n}\n\n// - - - - - - - - - - - -\n// Images Grid\n// - - - - - - - - - - - -\n\n.main__images-container {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: var(--size-8);\n position: relative;\n z-index: 1;\n\n .figure {\n margin: 0;\n background-color: var(--color-accent-surface-elevation-2);\n display: grid;\n gap: var(--size-4);\n padding: var(--size-8);\n border-radius: var(--size-4);\n opacity: 0;\n animation: fadeIn 300ms forwards;\n }\n .figure__picture {\n object-fit: contain;\n }\n .figure__img {\n block-size: auto;\n inline-size: 100%;\n }\n .figure__figcaption {\n text-align: center;\n font-size: var(--font-size-body-xs);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n inline-size: 100%;\n }\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid-ww-images\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7\n )\n);\n\n@keyframes fadeIn {\n to {\n opacity: 1;\n }\n}\n\n// - - - - - - - - - - - -\n// Responsive\n// - - - - - - - - - - - -\n\n@container (max-width: 992px) {\n .main {\n --sidebar-width: 300px;\n }\n .main__images-container {\n grid-template-columns: repeat(3, 1fr);\n }\n}\n\n@container (max-width: 768px) {\n .main {\n --sidebar-width: 200px;\n }\n .main__images-container {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@container (max-width: 640px) {\n .main {\n --sidebar-width: 100px;\n }\n .main__images-container {\n grid-template-columns: 1fr;\n }\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\n/* STENCIL IMPORTS */\nimport {\n Component,\n Element,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n h\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport {\n AccordionModel,\n ChGridRowContextMenuEvent,\n ComboBoxModel\n} from \"@genexus/chameleon-controls-library\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n/* CUSTOM IMPORTS */\nimport { FILTER_AFTER } from \"../../common/constants\";\nimport { config } from \"../../common/config\";\nimport { formatDate } from \"../../common/helpers\";\nimport { Locale } from \"../../common/locale\";\nimport { ContextMenuInfo, EntityData, GxOption } from \"../../common/types\";\nimport { mapOptionsToComboBoxItemModel } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/accordion\",\n \"components/button\",\n \"components/checkbox\",\n \"components/combo-box\",\n \"components/edit\",\n \"components/icon\",\n \"components/tabular-grid\",\n \"components/sidebar\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst ALL_DESCENDANTS_VALUE = \"all-descendants\";\nconst MODIFIED_VALUE = \"modified\";\n\nlet TODAY: string = null;\n\n// icons\nconst RESET_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"reset\",\n colorType: \"interactive\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"search\",\n colorType: \"neutral\"\n});\nconst NOTICE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"notice\",\n colorType: \"on-elevation\"\n});\n\n@Component({\n tag: \"gx-ide-ww-images\",\n styleUrl: \"ww-images.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ww-images\"]\n})\nexport class GxIdeWWImages {\n /**\n * The component hard-coded strings translations.\n */\n #componentLocale: any;\n #filterInitialData: FilerInitialData;\n #ACCORDION_MODEL: AccordionModel = [];\n #ACCORDION_FILTER_ID = \"advanced-filter\";\n\n #imagesMap: Map<string, ImageItemData[]> = new Map();\n\n @Element() el: HTMLGxIdeWwImagesElement;\n\n #chGridEl!: HTMLChTabularGridElement;\n // Only keep refs that are actually needed for operations (event listeners)\n #filterModuleEl!: HTMLGxIdeEntitySelectorElement;\n\n // representations of GxOption[] as ComboBoxModel.\n @State() categoriesComboBoxModel: ComboBoxModel = [];\n @State() densitiesComboBoxModel: ComboBoxModel = [];\n @State() languagesComboBoxModel: ComboBoxModel = [];\n @State() layersComboBoxModel: ComboBoxModel = [];\n @State() stylesComboBoxModel: ComboBoxModel = [];\n\n /**\n * The current value of the \"After\" combo box options.\n */\n @State() afterCurrentValue: string;\n\n /**\n * The options for the \"After\" combo-box\n */\n @State() filterAfterOptions: ComboBoxModel;\n\n /**\n * Image data to be displayed in the tabular grid (filtered from server and sorted)\n */\n @State() tabularGridData: ImageData[] = [];\n\n /**\n * Images rendered in the table\n */\n @State() images: ImageData[] = [];\n\n /**\n * Items of the selected image\n */\n @State() imagesSelectedItems: ImageItemData[] = [];\n\n /**\n * Selected images in the images table\n */\n @State() selectedObjectsIds: string[] = [];\n\n /**\n * When true, modified controls will be enabled, otherwise disabled.\n */\n @State() enabledModifiedControls: boolean = false;\n\n /**\n * Sorting order for images table\n */\n @State() order: { orderCriteria: string | null; ascending: boolean | null } =\n {\n orderCriteria: null,\n ascending: null\n };\n\n /**\n * Filter state variables\n */\n @State() filterNameValue = \"\";\n @State() filterSearchContentsValue = \"\";\n @State() filterCategoryValue: string;\n @State() filterAllDescendantsValue = false;\n @State() filterAfterTypeValue: string;\n @State() filterUserValue = \"\";\n @State() filterModifiedDateValue = \"\";\n @State() filterStyleValue: string;\n @State() filterLanguageValue: string;\n @State() filterDensityValue: string;\n @State() filterLayerValue: string;\n @State() filterModuleValue: EntityData;\n\n /**\n * Flag to prevent triggering #getImages on initial load\n */\n #isInitialLoad = true;\n\n /**\n * Categories rendered in the filter selector\n */\n @Prop() readonly categories!: GxOption[];\n @Watch(\"categories\")\n categoriesChanged(newCategories: GxOption[]) {\n this.categoriesComboBoxModel = mapOptionsToComboBoxItemModel(newCategories);\n this.#applyDefaultCategory();\n }\n\n /**\n * Function to expand data when right-click\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * Default value for the 'categories' filter\n */\n @Prop() readonly defaultCategory: string;\n @Watch(\"defaultCategory\")\n defaultCategoryChanged() {\n this.#applyDefaultCategory();\n }\n\n /**\n * Default value for the module/folder filter\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * Function to delete the selected images.\n */\n @Prop() readonly deleteSelectionCallback!: DeleteSelectionCallback;\n\n /**\n * Densities rendered in the filter selector\n */\n @Prop() readonly densities!: GxOption[];\n @Watch(\"densities\")\n densitiesChanged(newDensities: GxOption[]) {\n this.densitiesComboBoxModel = mapOptionsToComboBoxItemModel(newDensities);\n }\n\n /**\n * Languages rendered in the filter selector\n */\n @Prop() readonly languages!: GxOption[];\n @Watch(\"languages\")\n languagesChanged(newLanguages: GxOption[]) {\n this.languagesComboBoxModel = mapOptionsToComboBoxItemModel(newLanguages);\n }\n\n /**\n * Layers rendered in the filter selector\n */\n @Prop() readonly layers!: GxOption[];\n @Watch(\"layers\")\n layersChanged(newLayers: GxOption[]) {\n this.layersComboBoxModel = mapOptionsToComboBoxItemModel(newLayers);\n }\n\n /**\n * Function that returns a list of images for the table\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Function that returns a list of items for the selected image\n */\n @Prop() readonly loadImageItemsCallback!: LoadImageItemsCallback;\n\n /**\n * Callback invoked when user press New button.\n */\n @Prop() readonly newObjectCallback!: NewObjectCallback;\n\n /**\n * Function to expand data for double-clicked or entered images\n */\n @Prop() readonly openSelectionCallback!: OpenSelectionCallback;\n\n /**\n * Callback invoked when an action is executed on the Module/Folder filter.\n */\n @Prop() readonly selectModuleCallback!: SelectModuleCallback;\n\n /**\n * Callback invoked when an item is selected\n */\n @Prop() readonly selectionObjectChangedCallback!: SelectionObjectCallback;\n\n /**\n * Styles rendered in the filter style selector\n */\n @Prop() readonly styles!: GxOption[];\n @Watch(\"styles\")\n stylesChanged(newStyles: GxOption[]) {\n this.stylesComboBoxModel = mapOptionsToComboBoxItemModel(newStyles);\n }\n\n async connectedCallback() {\n TODAY = this.#getToday();\n }\n\n componentDidLoad() {\n this.#addEventListeners();\n this.#getImages();\n this.#saveInitialFilterData();\n this.#isInitialLoad = false;\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // initialize combo-box models\n this.categoriesChanged(this.categories);\n this.densitiesChanged(this.densities);\n this.languagesChanged(this.languages);\n this.layersChanged(this.layers);\n this.stylesChanged(this.styles);\n\n // initialize \"After\" combo-box options\n this.filterAfterOptions = [\n {\n caption: this.#componentLocale.filter.afterNone,\n value: FILTER_AFTER.NONE\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER.DATE_TIME],\n value: FILTER_AFTER.DATE_TIME\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER.IMPORT],\n value: FILTER_AFTER.IMPORT\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER.LAST_BUILD],\n value: FILTER_AFTER.LAST_BUILD\n }\n ];\n this.afterCurrentValue = this.filterAfterOptions[0].value;\n this.filterAfterTypeValue = this.filterAfterOptions[0].value;\n\n // Initialize filter state values\n this.#applyDefaultCategory();\n this.filterModuleValue = this.defaultModule;\n if (this.stylesComboBoxModel.length > 0) {\n this.filterStyleValue = this.stylesComboBoxModel[0].value;\n }\n if (this.languagesComboBoxModel.length > 0) {\n this.filterLanguageValue = this.languagesComboBoxModel[0].value;\n }\n if (this.densitiesComboBoxModel.length > 0) {\n this.filterDensityValue = this.densitiesComboBoxModel[0].value;\n }\n if (this.layersComboBoxModel.length > 0) {\n this.filterLayerValue = this.layersComboBoxModel[0].value;\n }\n\n this.#ACCORDION_MODEL = [\n {\n id: this.#ACCORDION_FILTER_ID,\n caption: this.#componentLocale.filter.accordionCaption,\n expanded: false\n }\n ];\n }\n\n @Listen(\"keydown\", { passive: true })\n keyDownHandler(eventInfo: KeyboardEvent) {\n if (document.activeElement === this.el) {\n switch (eventInfo.key) {\n case \"Enter\":\n this.#openSelectionCallBackHandler();\n break;\n case \"Delete\":\n this.#deleteSelectionCallbackHandler();\n break;\n }\n }\n }\n\n /**\n * Reloads the view, refreshing the filters and the images table.\n */\n @Method()\n async reload(): Promise<void> {\n this.#getImages();\n }\n\n #deleteSelectionCallbackHandler = (): void => {\n this.deleteSelectionCallback(this.selectedObjectsIds);\n };\n\n #deselectAll = (): void => {\n (this.#chGridEl as any).selectAllRows(false);\n };\n\n /**\n * Watch filter state variables and trigger #getImages when they change\n */\n @Watch(\"filterNameValue\")\n filterNameValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterSearchContentsValue\")\n filterSearchContentsValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterCategoryValue\")\n filterCategoryValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterAllDescendantsValue\")\n filterAllDescendantsValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterAfterTypeValue\")\n filterAfterTypeValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterUserValue\")\n filterUserValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterModifiedDateValue\")\n filterModifiedDateValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterStyleValue\")\n filterStyleValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterLanguageValue\")\n filterLanguageValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterDensityValue\")\n filterDensityValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterLayerValue\")\n filterLayerValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterModuleValue\")\n filterModuleValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n /**\n * Individual handler functions for each filter control\n */\n #handleNameChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterNameValue = (event.detail ||\n (event.target as HTMLInputElement).value) as string;\n };\n\n #handleSearchContentsChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterSearchContentsValue = (event.detail ||\n (event.target as HTMLInputElement).value) as string;\n };\n\n #applyDefaultCategory = () => {\n if (this.defaultCategory && this.categoriesComboBoxModel.length > 0) {\n const categoryExists = this.categoriesComboBoxModel.some(\n item => item.value === this.defaultCategory\n );\n if (categoryExists) {\n this.filterCategoryValue = this.defaultCategory;\n }\n }\n };\n\n #handleCategoryChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterCategoryValue = event.detail as string;\n };\n\n #handleAllDescendantsChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterAllDescendantsValue = event.detail === ALL_DESCENDANTS_VALUE;\n };\n\n #handleAfterTypeChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterAfterTypeValue = event.detail as string;\n this.afterCurrentValue = event.detail as string;\n };\n\n #handleUserChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterUserValue = (event.detail ||\n (event.target as HTMLInputElement).value) as string;\n };\n\n #handleModifiedDateChange = (event: InputEvent) => {\n this.filterModifiedDateValue = (event.target as HTMLInputElement).value;\n };\n\n #handleStyleChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterStyleValue = event.detail as string;\n };\n\n #handleLanguageChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterLanguageValue = event.detail as string;\n };\n\n #handleDensityChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterDensityValue = event.detail as string;\n };\n\n #handleLayerChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterLayerValue = event.detail as string;\n };\n\n #handleModuleChange = () => {\n // Module change is handled via event listener, but we update state\n if (this.#filterModuleEl) {\n this.filterModuleValue = this.#filterModuleEl.value;\n }\n };\n\n #filterImagesInformationHandler = () => {\n // Copy images from server to tabularGridData (will be sorted before rendering)\n this.tabularGridData = [...this.images];\n };\n\n #getImages = (): void => {\n this.#imagesMap.clear();\n\n const filters: ImageFiltersData = {\n name: this.filterNameValue,\n searchContents: this.filterSearchContentsValue,\n category: this.filterCategoryValue,\n parent: this.filterModuleValue ? this.filterModuleValue.id : null,\n allDescendants: this.filterAllDescendantsValue,\n modifiedAfter: this.filterAfterTypeValue,\n modifiedBy: this.filterUserValue,\n modifiedDate: this.filterModifiedDateValue\n ? new Date(this.filterModifiedDateValue)\n : undefined,\n style: this.filterStyleValue,\n language: this.filterLanguageValue,\n density: this.filterDensityValue,\n layer: this.filterLayerValue\n };\n\n this.loadCallback(filters).then((items: ImageData[]) => {\n this.images = items;\n this.selectedObjectsIds = [];\n this.#deselectAll();\n this.#filterImagesInformationHandler();\n });\n };\n\n #getToday = (): string => {\n const now = new Date();\n const date = now.toISOString().split(\"T\")[0];\n const time = now.toISOString().split(\"T\")[1].slice(0, 5); // Only take 'HH:MM' part\n return `${date}T${time}`;\n };\n #addEventListeners = (): void => {\n /* module/folder */\n this.#filterModuleEl.addEventListener(\"valueChanged\", () => {\n this.#handleModuleChange();\n });\n\n // for grid selection\n this.#chGridEl.addEventListener(\"selectionChanged\", (ev: any): void => {\n this.selectedObjectsIds = ev.detail.rowsId;\n this.selectionObjectChangedCallback(this.selectedObjectsIds);\n\n if (this.selectedObjectsIds.length === 0) {\n this.imagesSelectedItems = [];\n return;\n }\n\n // Collect cached items immediately\n const cachedItems: ImageItemData[] = [];\n const idsToLoad: string[] = [];\n\n this.selectedObjectsIds.forEach((selectedId: string) => {\n if (this.#imagesMap.has(selectedId)) {\n const items = this.#imagesMap.get(selectedId);\n if (items) {\n cachedItems.push(...items);\n }\n } else {\n idsToLoad.push(selectedId);\n }\n });\n\n // If all items were cached, update immediately\n if (idsToLoad.length === 0) {\n this.imagesSelectedItems = cachedItems;\n return;\n }\n\n // Store current selection to verify later (prevents race conditions)\n const currentSelection = [...this.selectedObjectsIds].sort().join(\",\");\n\n // Load missing items and combine with cached ones\n // loadImageItemsCallback must be invoked the first time a user selects an image\n const loadPromises = idsToLoad.map((selectedId: string) =>\n this.loadImageItemsCallback(selectedId).then(\n (items: ImageItemData[]) => {\n // Cache the items for future use\n this.#imagesMap.set(selectedId, items);\n return items;\n }\n )\n );\n\n Promise.all(loadPromises).then((loadedItemsArrays: ImageItemData[][]) => {\n // Verify that selection hasn't changed while loading\n const currentSelectionAfterLoad = [...this.selectedObjectsIds]\n .sort()\n .join(\",\");\n if (currentSelection !== currentSelectionAfterLoad) {\n // Selection changed, ignore this result\n return;\n }\n\n // Combine cached items with newly loaded items\n const allImageItems = [...cachedItems];\n loadedItemsArrays.forEach(items => {\n allImageItems.push(...items);\n });\n this.imagesSelectedItems = allImageItems;\n });\n });\n\n this.#chGridEl.addEventListener(\"rowDoubleClicked\", (): void => {\n this.#openSelectionCallBackHandler();\n });\n\n this.#chGridEl.addEventListener(\n \"rowContextMenu\",\n (ev: CustomEvent<ChGridRowContextMenuEvent>): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.contextMenuCallback({\n selection: ev.detail.selectedRowsId,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n }\n );\n };\n\n /**\n * Helper function to safely get image values for sorting\n */\n #getImageValue(image: ImageData, key: string): string {\n switch (key) {\n case \"name\":\n return image.name || \"\";\n case \"module\":\n return image.module || \"\";\n case \"description\":\n return image.description || \"\";\n case \"modifiedDate\":\n return image.modifiedDate\n ? formatDate(image.modifiedDate).toLowerCase()\n : \"\";\n case \"lastUser\":\n return image.lastUser?.toLowerCase() || \"\";\n case \"importDate\":\n return image.importDate\n ? formatDate(image.importDate).toLowerCase()\n : \"\";\n default:\n return \"\";\n }\n }\n\n /**\n * Sorts images based on the current order criteria\n */\n #sortImages = (a: ImageData, b: ImageData): number => {\n if (this.order.orderCriteria) {\n const valueA = this.#getImageValue(\n a,\n this.order.orderCriteria\n ).toUpperCase();\n const valueB = this.#getImageValue(\n b,\n this.order.orderCriteria\n ).toUpperCase();\n if (valueA < valueB) {\n return this.order.ascending ? -1 : 1;\n }\n if (valueA > valueB) {\n return this.order.ascending ? 1 : -1;\n }\n }\n return 0;\n };\n\n /**\n * Handles column sort changes\n */\n #handleColumnSortChanged = (e: CustomEvent) => {\n const { columnId, sortDirection } = e.detail;\n this.order = {\n orderCriteria: columnId,\n ascending: sortDirection === \"asc\"\n };\n };\n\n #newObjectCallbackHandler = (): void => {\n this.newObjectCallback();\n };\n #openSelectionCallBackHandler = (): void => {\n this.openSelectionCallback(this.selectedObjectsIds);\n };\n\n #toggleModifiedControls = (event: CustomEvent<string> | InputEvent) => {\n this.enabledModifiedControls = event.detail === MODIFIED_VALUE;\n };\n\n #renderHeader = (): Element[] => {\n return [\n <div\n // name\n class=\"field field-block name\"\n >\n <label class=\"label\" htmlFor=\"filter-name\">\n {this.#componentLocale.filter.name}\n </label>\n <ch-edit\n id=\"filter-name\"\n class=\"input\"\n autoFocus={true}\n value={this.filterNameValue}\n debounce={config.inputDebounce}\n onInput={this.#handleNameChange}\n ></ch-edit>\n </div>,\n\n <div class=\"field field-block module-folder\">\n <label class=\"label\" htmlFor=\"module-folder\">\n {this.#componentLocale.filter.moduleFolder}\n </label>\n\n <gx-ide-entity-selector\n // module/folder\n id=\"module/folder\"\n labelPosition=\"none\"\n value={this.filterModuleValue}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#filterModuleEl = el as HTMLGxIdeEntitySelectorElement)\n }\n ></gx-ide-entity-selector>\n </div>,\n\n <ch-accordion-render\n // modified\n class=\"accordion-outlined advanced-filter-accordion\"\n model={this.#ACCORDION_MODEL}\n >\n <div slot={this.#ACCORDION_FILTER_ID} class=\"spacing-body\">\n <div class=\"main__filter field-group scrollable\">\n <div\n // category\n class=\"field field-block category\"\n >\n <label class=\"label\" htmlFor=\"filter-category\">\n {this.#componentLocale.filter.category}\n </label>\n <ch-combo-box-render\n id=\"filter-category\"\n class=\"combo-box\"\n value={this.filterCategoryValue}\n disabled={!this.categories}\n model={this.categoriesComboBoxModel}\n onInput={this.#handleCategoryChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // category\n class=\"field-group options\"\n >\n <label class=\"label\" htmlFor=\"filter-category\">\n {this.#componentLocale.filter.options}\n </label>\n <div\n // options\n class=\"field field-inline\"\n >\n <ch-checkbox\n class=\"checkbox all-descendants\"\n caption={this.#componentLocale.filter.allDescendants}\n checkedValue={ALL_DESCENDANTS_VALUE}\n value={\n this.filterAllDescendantsValue\n ? ALL_DESCENDANTS_VALUE\n : undefined\n }\n onInput={this.#handleAllDescendantsChange}\n ></ch-checkbox>\n\n <ch-checkbox\n class=\"checkbox modified\"\n caption={this.#componentLocale.filter.modified}\n checkedValue={MODIFIED_VALUE}\n onInput={this.#toggleModifiedControls}\n ></ch-checkbox>\n </div>\n </div>\n\n <div\n // after\n class=\"field field-block after-date-time\"\n >\n <label\n class={{\n \"label\": true,\n \"label--disabled\": !this.enabledModifiedControls\n }}\n htmlFor=\"filter-after-type\"\n >\n {this.#componentLocale.filter.afterLabel}\n </label>\n <ch-combo-box-render\n id=\"filter-after-type\"\n class=\"combo-box\"\n value={this.filterAfterTypeValue}\n disabled={!this.enabledModifiedControls}\n model={this.filterAfterOptions}\n onInput={this.#handleAfterTypeChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // user\n class=\"field field-block user\"\n >\n <label\n class={{\n \"label\": true,\n \"label--disabled\": !this.enabledModifiedControls\n }}\n htmlFor=\"filter-user\"\n >\n {this.#componentLocale.filter.user}\n </label>\n <ch-edit\n id=\"filter-user\"\n value={this.filterUserValue}\n class=\"input\"\n disabled={!this.enabledModifiedControls}\n debounce={config.inputDebounce}\n onInput={this.#handleUserChange}\n ></ch-edit>\n </div>\n\n <div\n // date/time\n class=\"field field-block date-time\"\n >\n <label\n class={{\n \"label\": true,\n \"label--disabled\":\n this.afterCurrentValue !== FILTER_AFTER.DATE_TIME\n }}\n htmlFor=\"modified-date\"\n >\n {this.#componentLocale.filter.dateTime}\n </label>\n <input\n type=\"datetime-local\"\n class=\"input \"\n id=\"modified-date\"\n name=\"modifiedDate\"\n value={this.filterModifiedDateValue}\n max={TODAY}\n disabled={this.afterCurrentValue !== FILTER_AFTER.DATE_TIME}\n onInput={this.#handleModifiedDateChange}\n ></input>\n </div>\n\n <div\n // style\n class=\"field field-block style\"\n >\n <label class=\"label\" htmlFor=\"filter-style\">\n {this.#componentLocale.filter.style}\n </label>\n <ch-combo-box-render\n id=\"filter-style\"\n class=\"combo-box\"\n value={this.filterStyleValue}\n disabled={!this.styles}\n model={this.stylesComboBoxModel}\n onInput={this.#handleStyleChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // language\n class=\"field field-block language\"\n >\n <label class=\"label\" htmlFor=\"filter-language\">\n {this.#componentLocale.filter.language}\n </label>\n <ch-combo-box-render\n id=\"filter-language\"\n class=\"combo-box\"\n value={this.filterLanguageValue}\n disabled={!this.languages}\n model={this.languagesComboBoxModel}\n onInput={this.#handleLanguageChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // density\n class=\"field field-block\"\n >\n <label class=\"label\" htmlFor=\"filter-density\">\n {this.#componentLocale.filter.density}\n </label>\n <ch-combo-box-render\n id=\"filter-density\"\n class=\"combo-box\"\n value={this.filterDensityValue}\n disabled={!this.densities}\n model={this.densitiesComboBoxModel}\n onInput={this.#handleDensityChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // layer\n class=\"field field-block\"\n >\n <label class=\"label\" htmlFor=\"filter-layer\">\n {this.#componentLocale.filter.layer}\n </label>\n <ch-combo-box-render\n id=\"filter-layer\"\n class=\"combo-box\"\n value={this.filterLayerValue}\n disabled={!this.layers}\n model={this.layersComboBoxModel}\n onInput={this.#handleLayerChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // search contents\n class=\"field field-block search-by-contents\"\n >\n <label class=\"label\" htmlFor=\"search-input\">\n {this.#componentLocale.filter.search}\n </label>\n <ch-edit\n id=\"search-input\"\n debounce={config.inputDebounce}\n class=\"input\"\n value={this.filterSearchContentsValue}\n placeholder={\n this.#componentLocale.filter.searchContentsPlaceholder\n }\n onInput={this.#handleSearchContentsChange}\n startImgSrc={SEARCH_ICON}\n type=\"search\"\n ></ch-edit>\n </div>\n\n <button\n // reset filter button\n class=\"button-secondary button-icon-and-text button-reset\"\n onClick={this.#resetFilterHandler}\n >\n <ch-image class=\"icon-sm\" src={RESET_ICON} type=\"mask\"></ch-image>\n {this.#componentLocale.filter.resetFilters}\n </button>\n </div>\n </div>\n </ch-accordion-render>\n ];\n };\n\n #renderFilter = (): Element[] => {\n return (\n <div class=\"sidebar-container scrollable\">{this.#renderImages()}</div>\n );\n };\n\n #renderImages = (): Element => {\n return (\n /* tiles */\n\n <div class=\"main__images-container spacing-body-inline\">\n {this.imagesSelectedItems.map(item => (\n <figure class=\"figure\">\n <picture class=\"figure__picture\">\n <img class=\"figure__img\" src={item.url} alt={item.name} />\n </picture>\n <figcaption class=\"figure__figcaption\">{item.name}</figcaption>\n </figure>\n ))}\n </div>\n );\n };\n #renderTabularGrid = (): Element => {\n const commonColSize = \"minmax(max-content, auto)\";\n\n return (\n <div\n class={{\n \"field-group\": true,\n \"main__grid\": true\n }}\n >\n <ch-tabular-grid\n ref={(el: HTMLChTabularGridElement) => (this.#chGridEl = el)}\n rowSelectionMode=\"multiple\"\n class=\"tabular-grid tabular-grid-ww-images\"\n columnResizeMode=\"splitter\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnId=\"icon\"\n columnName=\"\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"name\"\n columnName={this.#componentLocale.tableHead.name}\n settingable={false}\n class=\"tabular-grid-column\"\n column-name-position=\"text\"\n size={commonColSize}\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"module\"\n columnName={this.#componentLocale.tableHead.module}\n settingable={false}\n size={commonColSize}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"description\"\n columnName={this.#componentLocale.tableHead.description}\n settingable={false}\n size=\"minmax(300px, 1fr)\"\n class=\"tabular-grid-column\"\n resizable={false}\n sortable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"modifiedDate\"\n columnName={this.#componentLocale.tableHead.modifiedDate}\n settingable={false}\n size={commonColSize}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"lastUser\"\n columnName={this.#componentLocale.tableHead.lastUser}\n settingable={false}\n size={commonColSize}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"importDate\"\n columnName={this.#componentLocale.tableHead.importDate}\n settingable={false}\n size={commonColSize}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {this.tabularGridData.length ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {[...this.tabularGridData]\n .sort(this.#sortImages)\n .map((obj: ImageData) => (\n <ch-tabular-grid-row rowid={obj.id} class=\"tabular-grid-row\">\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image src={obj.icon}></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.module}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-description\">\n {obj.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {formatDate(obj.modifiedDate)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.lastUser}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {formatDate(obj.importDate)}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n isAnimated={false}\n stateIconSrc={NOTICE_ICON}\n stateTitle={this.#componentLocale.emptyState.title}\n key=\"no-images-empty-state\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n </div>\n );\n };\n\n #resetFilterHandler = () => {\n if (this.#filterInitialData) {\n this.filterNameValue = this.#filterInitialData.name;\n this.filterModuleValue = this.#filterInitialData.module;\n this.filterSearchContentsValue = this.#filterInitialData.searchContents;\n this.filterCategoryValue = this.#filterInitialData.category;\n this.filterAllDescendantsValue =\n this.#filterInitialData.allDescendants === ALL_DESCENDANTS_VALUE;\n this.filterAfterTypeValue = this.#filterInitialData.modifiedAfter;\n this.filterModifiedDateValue = this.#filterInitialData.modifiedDateTime;\n this.filterUserValue = this.#filterInitialData.modifiedUser;\n this.filterStyleValue = this.#filterInitialData.style;\n this.filterLanguageValue = this.#filterInitialData.language;\n this.filterDensityValue = this.#filterInitialData.density;\n this.filterLayerValue = this.#filterInitialData.layer;\n this.afterCurrentValue = this.filterAfterTypeValue;\n }\n };\n\n #saveInitialFilterData = () => {\n this.#filterInitialData = {\n name: this.filterNameValue,\n module: this.filterModuleValue,\n searchContents: this.filterSearchContentsValue,\n category: this.filterCategoryValue,\n allDescendants: this.filterAllDescendantsValue\n ? ALL_DESCENDANTS_VALUE\n : \"\",\n modifiedAfter: this.filterAfterTypeValue,\n modifiedDateTime: this.filterModifiedDateValue,\n modifiedUser: this.filterUserValue,\n style: this.filterStyleValue,\n language: this.filterLanguageValue,\n density: this.filterDensityValue,\n layer: this.filterLayerValue\n };\n };\n\n #selectAll = (): void => {\n (this.#chGridEl as any).selectAllRows();\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border spacing-body-inline spacing-body-block-start field-group\">\n {this.#renderHeader()}\n </header>\n\n <div class=\"main\">\n {this.#renderTabularGrid()}\n <div class=\"main__aside field-group\">{this.#renderFilter()}</div>\n </div>\n\n <footer class=\"dialog-footer-with-border dialog-footer-space-between spacing-body\">\n <p\n // matching objects\n class=\"text-body\"\n >\n {`${this.tabularGridData.length} ${\n this.#componentLocale.objCount.matching\n }`}\n </p>\n\n <div class=\"buttons-spacer\">\n <button\n // select all button\n id=\"button-select-all\"\n class=\"button-secondary\"\n onClick={this.#selectAll}\n >\n {this.#componentLocale.footer.btnSelectAll}\n </button>\n\n <button\n // new image button\n id=\"button-new-file\"\n class=\"button-primary button-icon-and-text\"\n onClick={this.#newObjectCallbackHandler}\n >\n {this.#componentLocale.footer.btnNew}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\nexport type ContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type DeleteSelectionCallback = (ids: string[]) => Promise<void>;\n\nexport type FilerInitialData = {\n name: string;\n module: EntityData;\n searchContents: string;\n category: string;\n allDescendants: string;\n modifiedAfter: string;\n modifiedDateTime: string;\n modifiedUser: string;\n style: string;\n language: string;\n density: string;\n layer: string;\n};\n\nexport type ImageData = {\n id: string;\n icon: string;\n name: string;\n description: string;\n parent: string;\n module: string;\n modifiedDate?: Date;\n lastUser?: string;\n importDate?: Date;\n};\n\nexport type ImageFiltersData = {\n name?: string;\n searchContents?: string;\n category?: string;\n parent?: string;\n allDescendants?: boolean;\n modifiedAfter?: string;\n modifiedBy?: string;\n modifiedDate?: Date;\n style?: string;\n language?: string;\n density?: string;\n layer?: string;\n};\n\nexport type ImageItemData = {\n id: string;\n name: string;\n url: string;\n};\n\nexport type LoadCallback = (filters: ImageFiltersData) => Promise<ImageData[]>;\n\nexport type LoadImageItemsCallback = (id: string) => Promise<ImageItemData[]>;\n\nexport type NewObjectCallback = () => Promise<void>;\n\nexport type OpenSelectionCallback = (ids: string[]) => Promise<void>;\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\nexport type SelectionObjectCallback = (ids: string[]) => Promise<void>;\n"],"version":3}
1
+ {"file":"gx-ide-ww-images.entry.cjs.js","mappings":"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","names":["getIconPath","h","config","FILTER_AFTER","formatDate","Locale","Host"],"sources":["src/components/ww-images/helpers.tsx","src/components/ww-images/ww-images.scss?tag=gx-ide-ww-images&encapsulation=shadow","src/components/ww-images/ww-images.tsx"],"sourcesContent":["import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../..\";\n\nexport const mapOptionsToComboBoxItemModel = (\n options: GxOption[]\n): ComboBoxModel => {\n if (!options) {\n return [];\n }\n return options.map(option => {\n return {\n value: option.id,\n caption: option.label,\n startImgSrc: option.iconName ?? \"\"\n };\n });\n};\n","@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n container-type: inline-size;\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - - -\n// Header\n// - - - - - - - - - - - -\n\n// First row\n.header {\n grid-template-areas:\n \"name module-folder\"\n \"advanced-filter-accordion advanced-filter-accordion\";\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: max-content max-content;\n}\n\n// Accordion Advanced Filter\n.name {\n grid-area: name;\n}\n.module-folder {\n grid-area: module-folder;\n}\n.advanced-filter-accordion {\n grid-area: advanced-filter-accordion;\n}\n\n// - - - - - - - - - - - -\n// Main\n// - - - - - - - - - - - -\n\n.main {\n --sidebar-width: 376px;\n display: grid;\n grid-template-columns: 1fr var(--sidebar-width);\n overflow: auto;\n padding-block-start: var(--size-16);\n}\n\n.main__grid {\n overflow: auto;\n position: relative;\n}\n.tabular-grid-ww-images {\n overflow: auto;\n border-inline-end: var(--section-common-border);\n}\n\nch-tabular-grid-rowset-empty {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n inline-size: 100%;\n z-index: 1;\n}\n\n// main aside\n.main__aside {\n overflow: auto;\n display: grid;\n grid-template-rows: max-content 1fr;\n}\n.main__filter {\n display: grid;\n grid-auto-rows: max-content;\n grid-template-columns: 1fr 1fr 1fr;\n grid-template-areas:\n \"category options after\"\n \"style language user\"\n \"density layer date-time\"\n \"search-by-contents search-by-contents button-reset\";\n overflow: auto;\n}\n.category {\n grid-area: category;\n}\n.options {\n grid-area: options;\n}\n.after-date-time {\n grid-area: after;\n}\n.user {\n grid-area: user;\n}\n.date-time {\n grid-area: date-time;\n}\n.style {\n grid-area: style;\n}\n.language {\n grid-area: language;\n}\n.density {\n grid-area: density;\n}\n.layer {\n grid-area: layer;\n}\n.search-by-contents {\n grid-area: search-by-contents;\n}\n.button-reset {\n grid-area: button-reset;\n align-self: end;\n justify-self: end;\n}\n\n// - - - - - - - - - - - -\n// Images Grid\n// - - - - - - - - - - - -\n\n.main__images-container {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: var(--size-8);\n position: relative;\n z-index: 1;\n\n .figure {\n margin: 0;\n background-color: var(--color-accent-surface-elevation-2);\n display: grid;\n grid-template-rows: minmax(0, 1fr) max-content;\n gap: var(--size-4);\n padding: var(--size-8);\n border-radius: var(--size-4);\n opacity: 0;\n animation: fadeIn 300ms forwards;\n aspect-ratio: 1 / 1;\n }\n .figure__picture {\n display: flex;\n align-items: center;\n justify-content: center;\n min-block-size: 0;\n }\n .figure__img {\n display: block;\n max-inline-size: 100%;\n max-block-size: 100%;\n inline-size: auto;\n block-size: auto;\n object-fit: contain;\n }\n .figure__figcaption {\n text-align: center;\n font-size: var(--font-size-body-xs);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n inline-size: 100%;\n }\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid-ww-images\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7\n )\n);\n\n@keyframes fadeIn {\n to {\n opacity: 1;\n }\n}\n\n// - - - - - - - - - - - -\n// Responsive\n// - - - - - - - - - - - -\n\n@container (max-width: 992px) {\n .main {\n --sidebar-width: 288px;\n }\n .main__images-container {\n grid-template-columns: repeat(3, 1fr);\n }\n}\n\n@container (max-width: 768px) {\n .main {\n --sidebar-width: 200px;\n }\n .main__images-container {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@container (max-width: 640px) {\n .main {\n --sidebar-width: 112px;\n }\n .main__images-container {\n grid-template-columns: 1fr;\n }\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\n/* STENCIL IMPORTS */\nimport {\n Component,\n Element,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n h\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport {\n AccordionModel,\n ChGridRowContextMenuEvent,\n ComboBoxModel\n} from \"@genexus/chameleon-controls-library\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n/* CUSTOM IMPORTS */\nimport { FILTER_AFTER } from \"../../common/constants\";\nimport { config } from \"../../common/config\";\nimport { formatDate } from \"../../common/helpers\";\nimport { Locale } from \"../../common/locale\";\nimport { ContextMenuInfo, EntityData, GxOption } from \"../../common/types\";\nimport { mapOptionsToComboBoxItemModel } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/accordion\",\n \"components/button\",\n \"components/checkbox\",\n \"components/combo-box\",\n \"components/edit\",\n \"components/icon\",\n \"components/tabular-grid\",\n \"components/sidebar\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst ALL_DESCENDANTS_VALUE = \"all-descendants\";\nconst MODIFIED_VALUE = \"modified\";\n\nlet TODAY: string = null;\n\n// icons\nconst RESET_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"reset\",\n colorType: \"interactive\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"search\",\n colorType: \"neutral\"\n});\nconst NOTICE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"notice\",\n colorType: \"on-elevation\"\n});\n\n@Component({\n tag: \"gx-ide-ww-images\",\n styleUrl: \"ww-images.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ww-images\"]\n})\nexport class GxIdeWWImages {\n /**\n * The component hard-coded strings translations.\n */\n #componentLocale: any;\n #filterInitialData: FilerInitialData;\n #ACCORDION_MODEL: AccordionModel = [];\n #ACCORDION_FILTER_ID = \"advanced-filter\";\n\n #imagesMap: Map<string, ImageItemData[]> = new Map();\n\n @Element() el: HTMLGxIdeWwImagesElement;\n\n #chGridEl!: HTMLChTabularGridElement;\n // Only keep refs that are actually needed for operations (event listeners)\n #filterModuleEl!: HTMLGxIdeEntitySelectorElement;\n\n // representations of GxOption[] as ComboBoxModel.\n @State() categoriesComboBoxModel: ComboBoxModel = [];\n @State() densitiesComboBoxModel: ComboBoxModel = [];\n @State() languagesComboBoxModel: ComboBoxModel = [];\n @State() layersComboBoxModel: ComboBoxModel = [];\n @State() stylesComboBoxModel: ComboBoxModel = [];\n\n /**\n * The current value of the \"After\" combo box options.\n */\n @State() afterCurrentValue: string;\n\n /**\n * The options for the \"After\" combo-box\n */\n @State() filterAfterOptions: ComboBoxModel;\n\n /**\n * Image data to be displayed in the tabular grid (filtered from server and sorted)\n */\n @State() tabularGridData: ImageData[] = [];\n\n /**\n * Images rendered in the table\n */\n @State() images: ImageData[] = [];\n\n /**\n * Items of the selected image\n */\n @State() imagesSelectedItems: ImageItemData[] = [];\n\n /**\n * Selected images in the images table\n */\n @State() selectedObjectsIds: string[] = [];\n\n /**\n * When true, modified controls will be enabled, otherwise disabled.\n */\n @State() enabledModifiedControls: boolean = false;\n\n /**\n * Sorting order for images table\n */\n @State() order: { orderCriteria: string | null; ascending: boolean | null } =\n {\n orderCriteria: null,\n ascending: null\n };\n\n /**\n * Filter state variables\n */\n @State() filterNameValue = \"\";\n @State() filterSearchContentsValue = \"\";\n @State() filterCategoryValue: string;\n @State() filterAllDescendantsValue = false;\n @State() filterAfterTypeValue: string;\n @State() filterUserValue = \"\";\n @State() filterModifiedDateValue = \"\";\n @State() filterStyleValue: string;\n @State() filterLanguageValue: string;\n @State() filterDensityValue: string;\n @State() filterLayerValue: string;\n @State() filterModuleValue: EntityData;\n\n /**\n * Flag to prevent triggering #getImages on initial load\n */\n #isInitialLoad = true;\n\n /**\n * Categories rendered in the filter selector\n */\n @Prop() readonly categories!: GxOption[];\n @Watch(\"categories\")\n categoriesChanged(newCategories: GxOption[]) {\n this.categoriesComboBoxModel = mapOptionsToComboBoxItemModel(newCategories);\n this.#applyDefaultCategory();\n }\n\n /**\n * Function to expand data when right-click\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * Default value for the 'categories' filter\n */\n @Prop() readonly defaultCategory: string;\n @Watch(\"defaultCategory\")\n defaultCategoryChanged() {\n this.#applyDefaultCategory();\n }\n\n /**\n * Default value for the module/folder filter\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * Function to delete the selected images.\n */\n @Prop() readonly deleteSelectionCallback!: DeleteSelectionCallback;\n\n /**\n * Densities rendered in the filter selector\n */\n @Prop() readonly densities!: GxOption[];\n @Watch(\"densities\")\n densitiesChanged(newDensities: GxOption[]) {\n this.densitiesComboBoxModel = mapOptionsToComboBoxItemModel(newDensities);\n }\n\n /**\n * Languages rendered in the filter selector\n */\n @Prop() readonly languages!: GxOption[];\n @Watch(\"languages\")\n languagesChanged(newLanguages: GxOption[]) {\n this.languagesComboBoxModel = mapOptionsToComboBoxItemModel(newLanguages);\n }\n\n /**\n * Layers rendered in the filter selector\n */\n @Prop() readonly layers!: GxOption[];\n @Watch(\"layers\")\n layersChanged(newLayers: GxOption[]) {\n this.layersComboBoxModel = mapOptionsToComboBoxItemModel(newLayers);\n }\n\n /**\n * Function that returns a list of images for the table\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Function that returns a list of items for the selected image\n */\n @Prop() readonly loadImageItemsCallback!: LoadImageItemsCallback;\n\n /**\n * Callback invoked when user press New button.\n */\n @Prop() readonly newObjectCallback!: NewObjectCallback;\n\n /**\n * Function to expand data for double-clicked or entered images\n */\n @Prop() readonly openSelectionCallback!: OpenSelectionCallback;\n\n /**\n * Callback invoked when an action is executed on the Module/Folder filter.\n */\n @Prop() readonly selectModuleCallback!: SelectModuleCallback;\n\n /**\n * Callback invoked when an item is selected\n */\n @Prop() readonly selectionObjectChangedCallback!: SelectionObjectCallback;\n\n /**\n * Styles rendered in the filter style selector\n */\n @Prop() readonly styles!: GxOption[];\n @Watch(\"styles\")\n stylesChanged(newStyles: GxOption[]) {\n this.stylesComboBoxModel = mapOptionsToComboBoxItemModel(newStyles);\n }\n\n async connectedCallback() {\n TODAY = this.#getToday();\n }\n\n componentDidLoad() {\n this.#addEventListeners();\n this.#getImages();\n this.#saveInitialFilterData();\n this.#isInitialLoad = false;\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // initialize combo-box models\n this.categoriesChanged(this.categories);\n this.densitiesChanged(this.densities);\n this.languagesChanged(this.languages);\n this.layersChanged(this.layers);\n this.stylesChanged(this.styles);\n\n // initialize \"After\" combo-box options\n this.filterAfterOptions = [\n {\n caption: this.#componentLocale.filter.afterNone,\n value: FILTER_AFTER.NONE\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER.DATE_TIME],\n value: FILTER_AFTER.DATE_TIME\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER.IMPORT],\n value: FILTER_AFTER.IMPORT\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER.LAST_BUILD],\n value: FILTER_AFTER.LAST_BUILD\n }\n ];\n this.afterCurrentValue = this.filterAfterOptions[0].value;\n this.filterAfterTypeValue = this.filterAfterOptions[0].value;\n\n // Initialize filter state values\n this.#applyDefaultCategory();\n this.filterModuleValue = this.defaultModule;\n if (this.stylesComboBoxModel.length > 0) {\n this.filterStyleValue = this.stylesComboBoxModel[0].value;\n }\n if (this.languagesComboBoxModel.length > 0) {\n this.filterLanguageValue = this.languagesComboBoxModel[0].value;\n }\n if (this.densitiesComboBoxModel.length > 0) {\n this.filterDensityValue = this.densitiesComboBoxModel[0].value;\n }\n if (this.layersComboBoxModel.length > 0) {\n this.filterLayerValue = this.layersComboBoxModel[0].value;\n }\n\n this.#ACCORDION_MODEL = [\n {\n id: this.#ACCORDION_FILTER_ID,\n caption: this.#componentLocale.filter.accordionCaption,\n expanded: false\n }\n ];\n }\n\n @Listen(\"keydown\", { passive: true })\n keyDownHandler(eventInfo: KeyboardEvent) {\n if (document.activeElement === this.el) {\n switch (eventInfo.key) {\n case \"Enter\":\n this.#openSelectionCallBackHandler();\n break;\n case \"Delete\":\n this.#deleteSelectionCallbackHandler();\n break;\n }\n }\n }\n\n /**\n * Reloads the view, refreshing the filters and the images table.\n */\n @Method()\n async reload(): Promise<void> {\n this.#getImages();\n }\n\n #deleteSelectionCallbackHandler = (): void => {\n this.deleteSelectionCallback(this.selectedObjectsIds);\n };\n\n #deselectAll = (): void => {\n (this.#chGridEl as any).selectAllRows(false);\n };\n\n /**\n * Watch filter state variables and trigger #getImages when they change\n */\n @Watch(\"filterNameValue\")\n filterNameValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterSearchContentsValue\")\n filterSearchContentsValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterCategoryValue\")\n filterCategoryValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterAllDescendantsValue\")\n filterAllDescendantsValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterAfterTypeValue\")\n filterAfterTypeValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterUserValue\")\n filterUserValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterModifiedDateValue\")\n filterModifiedDateValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterStyleValue\")\n filterStyleValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterLanguageValue\")\n filterLanguageValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterDensityValue\")\n filterDensityValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterLayerValue\")\n filterLayerValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterModuleValue\")\n filterModuleValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n /**\n * Individual handler functions for each filter control\n */\n #handleNameChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterNameValue = (event.detail ||\n (event.target as HTMLInputElement).value) as string;\n };\n\n #handleSearchContentsChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterSearchContentsValue = (event.detail ||\n (event.target as HTMLInputElement).value) as string;\n };\n\n #applyDefaultCategory = () => {\n if (this.defaultCategory && this.categoriesComboBoxModel.length > 0) {\n const categoryExists = this.categoriesComboBoxModel.some(\n item => item.value === this.defaultCategory\n );\n if (categoryExists) {\n this.filterCategoryValue = this.defaultCategory;\n }\n }\n };\n\n #handleCategoryChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterCategoryValue = event.detail as string;\n };\n\n #handleAllDescendantsChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterAllDescendantsValue = event.detail === ALL_DESCENDANTS_VALUE;\n };\n\n #handleAfterTypeChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterAfterTypeValue = event.detail as string;\n this.afterCurrentValue = event.detail as string;\n };\n\n #handleUserChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterUserValue = (event.detail ||\n (event.target as HTMLInputElement).value) as string;\n };\n\n #handleModifiedDateChange = (event: InputEvent) => {\n this.filterModifiedDateValue = (event.target as HTMLInputElement).value;\n };\n\n #handleStyleChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterStyleValue = event.detail as string;\n };\n\n #handleLanguageChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterLanguageValue = event.detail as string;\n };\n\n #handleDensityChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterDensityValue = event.detail as string;\n };\n\n #handleLayerChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterLayerValue = event.detail as string;\n };\n\n #handleModuleChange = () => {\n // Module change is handled via event listener, but we update state\n if (this.#filterModuleEl) {\n this.filterModuleValue = this.#filterModuleEl.value;\n }\n };\n\n #filterImagesInformationHandler = () => {\n // Copy images from server to tabularGridData (will be sorted before rendering)\n this.tabularGridData = [...this.images];\n };\n\n #getImages = (): void => {\n this.#imagesMap.clear();\n\n const filters: ImageFiltersData = {\n name: this.filterNameValue,\n searchContents: this.filterSearchContentsValue,\n category: this.filterCategoryValue,\n parent: this.filterModuleValue ? this.filterModuleValue.id : null,\n allDescendants: this.filterAllDescendantsValue,\n modifiedAfter: this.filterAfterTypeValue,\n modifiedBy: this.filterUserValue,\n modifiedDate: this.filterModifiedDateValue\n ? new Date(this.filterModifiedDateValue)\n : undefined,\n style: this.filterStyleValue,\n language: this.filterLanguageValue,\n density: this.filterDensityValue,\n layer: this.filterLayerValue\n };\n\n this.loadCallback(filters).then((items: ImageData[]) => {\n this.images = items;\n this.selectedObjectsIds = [];\n this.#deselectAll();\n this.#filterImagesInformationHandler();\n });\n };\n\n #getToday = (): string => {\n const now = new Date();\n const date = now.toISOString().split(\"T\")[0];\n const time = now.toISOString().split(\"T\")[1].slice(0, 5); // Only take 'HH:MM' part\n return `${date}T${time}`;\n };\n #addEventListeners = (): void => {\n /* module/folder */\n this.#filterModuleEl.addEventListener(\"valueChanged\", () => {\n this.#handleModuleChange();\n });\n\n // for grid selection\n this.#chGridEl.addEventListener(\"selectionChanged\", (ev: any): void => {\n this.selectedObjectsIds = ev.detail.rowsId;\n this.selectionObjectChangedCallback(this.selectedObjectsIds);\n\n if (this.selectedObjectsIds.length === 0) {\n this.imagesSelectedItems = [];\n return;\n }\n\n // Collect cached items immediately\n const cachedItems: ImageItemData[] = [];\n const idsToLoad: string[] = [];\n\n this.selectedObjectsIds.forEach((selectedId: string) => {\n if (this.#imagesMap.has(selectedId)) {\n const items = this.#imagesMap.get(selectedId);\n if (items) {\n cachedItems.push(...items);\n }\n } else {\n idsToLoad.push(selectedId);\n }\n });\n\n // If all items were cached, update immediately\n if (idsToLoad.length === 0) {\n this.imagesSelectedItems = cachedItems;\n return;\n }\n\n // Store current selection to verify later (prevents race conditions)\n const currentSelection = [...this.selectedObjectsIds].sort().join(\",\");\n\n // Load missing items and combine with cached ones\n // loadImageItemsCallback must be invoked the first time a user selects an image\n const loadPromises = idsToLoad.map((selectedId: string) =>\n this.loadImageItemsCallback(selectedId).then(\n (items: ImageItemData[]) => {\n // Cache the items for future use\n this.#imagesMap.set(selectedId, items);\n return items;\n }\n )\n );\n\n Promise.all(loadPromises).then((loadedItemsArrays: ImageItemData[][]) => {\n // Verify that selection hasn't changed while loading\n const currentSelectionAfterLoad = [...this.selectedObjectsIds]\n .sort()\n .join(\",\");\n if (currentSelection !== currentSelectionAfterLoad) {\n // Selection changed, ignore this result\n return;\n }\n\n // Combine cached items with newly loaded items\n const allImageItems = [...cachedItems];\n loadedItemsArrays.forEach(items => {\n allImageItems.push(...items);\n });\n this.imagesSelectedItems = allImageItems;\n });\n });\n\n this.#chGridEl.addEventListener(\"rowDoubleClicked\", (): void => {\n this.#openSelectionCallBackHandler();\n });\n\n this.#chGridEl.addEventListener(\n \"rowContextMenu\",\n (ev: CustomEvent<ChGridRowContextMenuEvent>): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.contextMenuCallback({\n selection: ev.detail.selectedRowsId,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n }\n );\n };\n\n /**\n * Helper function to safely get image values for sorting\n */\n #getImageValue(image: ImageData, key: string): string {\n switch (key) {\n case \"name\":\n return image.name || \"\";\n case \"module\":\n return image.module || \"\";\n case \"description\":\n return image.description || \"\";\n case \"modifiedDate\":\n return image.modifiedDate\n ? formatDate(image.modifiedDate).toLowerCase()\n : \"\";\n case \"lastUser\":\n return image.lastUser?.toLowerCase() || \"\";\n case \"importDate\":\n return image.importDate\n ? formatDate(image.importDate).toLowerCase()\n : \"\";\n default:\n return \"\";\n }\n }\n\n /**\n * Sorts images based on the current order criteria\n */\n #sortImages = (a: ImageData, b: ImageData): number => {\n if (this.order.orderCriteria) {\n const valueA = this.#getImageValue(\n a,\n this.order.orderCriteria\n ).toUpperCase();\n const valueB = this.#getImageValue(\n b,\n this.order.orderCriteria\n ).toUpperCase();\n if (valueA < valueB) {\n return this.order.ascending ? -1 : 1;\n }\n if (valueA > valueB) {\n return this.order.ascending ? 1 : -1;\n }\n }\n return 0;\n };\n\n /**\n * Handles column sort changes\n */\n #handleColumnSortChanged = (e: CustomEvent) => {\n const { columnId, sortDirection } = e.detail;\n this.order = {\n orderCriteria: columnId,\n ascending: sortDirection === \"asc\"\n };\n };\n\n #newObjectCallbackHandler = (): void => {\n this.newObjectCallback();\n };\n #openSelectionCallBackHandler = (): void => {\n this.openSelectionCallback(this.selectedObjectsIds);\n };\n\n #toggleModifiedControls = (event: CustomEvent<string> | InputEvent) => {\n this.enabledModifiedControls = event.detail === MODIFIED_VALUE;\n };\n\n #renderHeader = (): Element[] => {\n return [\n <div\n // name\n class=\"field field-block name\"\n >\n <label class=\"label\" htmlFor=\"filter-name\">\n {this.#componentLocale.filter.name}\n </label>\n <ch-edit\n id=\"filter-name\"\n class=\"input\"\n autoFocus={true}\n value={this.filterNameValue}\n debounce={config.inputDebounce}\n onInput={this.#handleNameChange}\n ></ch-edit>\n </div>,\n\n <div class=\"field field-block module-folder\">\n <label class=\"label\" htmlFor=\"module-folder\">\n {this.#componentLocale.filter.moduleFolder}\n </label>\n\n <gx-ide-entity-selector\n // module/folder\n id=\"module/folder\"\n labelPosition=\"none\"\n value={this.filterModuleValue}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#filterModuleEl = el as HTMLGxIdeEntitySelectorElement)\n }\n ></gx-ide-entity-selector>\n </div>,\n\n <ch-accordion-render\n // modified\n class=\"accordion-outlined advanced-filter-accordion\"\n model={this.#ACCORDION_MODEL}\n >\n <div slot={this.#ACCORDION_FILTER_ID} class=\"spacing-body\">\n <div class=\"main__filter field-group scrollable\">\n <div\n // category\n class=\"field field-block category\"\n >\n <label class=\"label\" htmlFor=\"filter-category\">\n {this.#componentLocale.filter.category}\n </label>\n <ch-combo-box-render\n id=\"filter-category\"\n class=\"combo-box\"\n value={this.filterCategoryValue}\n disabled={!this.categories}\n model={this.categoriesComboBoxModel}\n onInput={this.#handleCategoryChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // category\n class=\"field-group options\"\n >\n <label class=\"label\" htmlFor=\"filter-category\">\n {this.#componentLocale.filter.options}\n </label>\n <div\n // options\n class=\"field field-inline\"\n >\n <ch-checkbox\n class=\"checkbox all-descendants\"\n caption={this.#componentLocale.filter.allDescendants}\n checkedValue={ALL_DESCENDANTS_VALUE}\n value={\n this.filterAllDescendantsValue\n ? ALL_DESCENDANTS_VALUE\n : undefined\n }\n onInput={this.#handleAllDescendantsChange}\n ></ch-checkbox>\n\n <ch-checkbox\n class=\"checkbox modified\"\n caption={this.#componentLocale.filter.modified}\n checkedValue={MODIFIED_VALUE}\n onInput={this.#toggleModifiedControls}\n ></ch-checkbox>\n </div>\n </div>\n\n <div\n // after\n class=\"field field-block after-date-time\"\n >\n <label\n class={{\n \"label\": true,\n \"label--disabled\": !this.enabledModifiedControls\n }}\n htmlFor=\"filter-after-type\"\n >\n {this.#componentLocale.filter.afterLabel}\n </label>\n <ch-combo-box-render\n id=\"filter-after-type\"\n class=\"combo-box\"\n value={this.filterAfterTypeValue}\n disabled={!this.enabledModifiedControls}\n model={this.filterAfterOptions}\n onInput={this.#handleAfterTypeChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // user\n class=\"field field-block user\"\n >\n <label\n class={{\n \"label\": true,\n \"label--disabled\": !this.enabledModifiedControls\n }}\n htmlFor=\"filter-user\"\n >\n {this.#componentLocale.filter.user}\n </label>\n <ch-edit\n id=\"filter-user\"\n value={this.filterUserValue}\n class=\"input\"\n disabled={!this.enabledModifiedControls}\n debounce={config.inputDebounce}\n onInput={this.#handleUserChange}\n ></ch-edit>\n </div>\n\n <div\n // date/time\n class=\"field field-block date-time\"\n >\n <label\n class={{\n \"label\": true,\n \"label--disabled\":\n this.afterCurrentValue !== FILTER_AFTER.DATE_TIME\n }}\n htmlFor=\"modified-date\"\n >\n {this.#componentLocale.filter.dateTime}\n </label>\n <input\n type=\"datetime-local\"\n class=\"input \"\n id=\"modified-date\"\n name=\"modifiedDate\"\n value={this.filterModifiedDateValue}\n max={TODAY}\n disabled={this.afterCurrentValue !== FILTER_AFTER.DATE_TIME}\n onInput={this.#handleModifiedDateChange}\n ></input>\n </div>\n\n <div\n // style\n class=\"field field-block style\"\n >\n <label class=\"label\" htmlFor=\"filter-style\">\n {this.#componentLocale.filter.style}\n </label>\n <ch-combo-box-render\n id=\"filter-style\"\n class=\"combo-box\"\n value={this.filterStyleValue}\n disabled={!this.styles}\n model={this.stylesComboBoxModel}\n onInput={this.#handleStyleChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // language\n class=\"field field-block language\"\n >\n <label class=\"label\" htmlFor=\"filter-language\">\n {this.#componentLocale.filter.language}\n </label>\n <ch-combo-box-render\n id=\"filter-language\"\n class=\"combo-box\"\n value={this.filterLanguageValue}\n disabled={!this.languages}\n model={this.languagesComboBoxModel}\n onInput={this.#handleLanguageChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // density\n class=\"field field-block\"\n >\n <label class=\"label\" htmlFor=\"filter-density\">\n {this.#componentLocale.filter.density}\n </label>\n <ch-combo-box-render\n id=\"filter-density\"\n class=\"combo-box\"\n value={this.filterDensityValue}\n disabled={!this.densities}\n model={this.densitiesComboBoxModel}\n onInput={this.#handleDensityChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // layer\n class=\"field field-block\"\n >\n <label class=\"label\" htmlFor=\"filter-layer\">\n {this.#componentLocale.filter.layer}\n </label>\n <ch-combo-box-render\n id=\"filter-layer\"\n class=\"combo-box\"\n value={this.filterLayerValue}\n disabled={!this.layers}\n model={this.layersComboBoxModel}\n onInput={this.#handleLayerChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // search contents\n class=\"field field-block search-by-contents\"\n >\n <label class=\"label\" htmlFor=\"search-input\">\n {this.#componentLocale.filter.search}\n </label>\n <ch-edit\n id=\"search-input\"\n debounce={config.inputDebounce}\n class=\"input\"\n value={this.filterSearchContentsValue}\n placeholder={\n this.#componentLocale.filter.searchContentsPlaceholder\n }\n onInput={this.#handleSearchContentsChange}\n startImgSrc={SEARCH_ICON}\n type=\"search\"\n ></ch-edit>\n </div>\n\n <button\n // reset filter button\n class=\"button-secondary button-icon-and-text button-reset\"\n onClick={this.#resetFilterHandler}\n >\n <ch-image class=\"icon-sm\" src={RESET_ICON} type=\"mask\"></ch-image>\n {this.#componentLocale.filter.resetFilters}\n </button>\n </div>\n </div>\n </ch-accordion-render>\n ];\n };\n\n #renderFilter = (): Element[] => {\n return (\n <div class=\"sidebar-container scrollable\">{this.#renderImages()}</div>\n );\n };\n\n #renderImages = (): Element => {\n return (\n /* tiles */\n\n <div class=\"main__images-container spacing-body-inline\">\n {this.imagesSelectedItems.map(item => (\n <figure class=\"figure\">\n <picture class=\"figure__picture\">\n <img class=\"figure__img\" src={item.url} alt={item.name} />\n </picture>\n <figcaption class=\"figure__figcaption\">{item.name}</figcaption>\n </figure>\n ))}\n </div>\n );\n };\n #renderTabularGrid = (): Element => {\n const commonColSize = \"minmax(max-content, auto)\";\n\n return (\n <div\n class={{\n \"field-group\": true,\n \"main__grid\": true\n }}\n >\n <ch-tabular-grid\n ref={(el: HTMLChTabularGridElement) => (this.#chGridEl = el)}\n rowSelectionMode=\"multiple\"\n class=\"tabular-grid tabular-grid-ww-images\"\n columnResizeMode=\"splitter\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnId=\"icon\"\n columnName=\"\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"name\"\n columnName={this.#componentLocale.tableHead.name}\n settingable={false}\n class=\"tabular-grid-column\"\n column-name-position=\"text\"\n size={commonColSize}\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"module\"\n columnName={this.#componentLocale.tableHead.module}\n settingable={false}\n size={commonColSize}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"description\"\n columnName={this.#componentLocale.tableHead.description}\n settingable={false}\n size=\"minmax(300px, 1fr)\"\n class=\"tabular-grid-column\"\n resizable={false}\n sortable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"modifiedDate\"\n columnName={this.#componentLocale.tableHead.modifiedDate}\n settingable={false}\n size={commonColSize}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"lastUser\"\n columnName={this.#componentLocale.tableHead.lastUser}\n settingable={false}\n size={commonColSize}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"importDate\"\n columnName={this.#componentLocale.tableHead.importDate}\n settingable={false}\n size={commonColSize}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {this.tabularGridData.length ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {[...this.tabularGridData]\n .sort(this.#sortImages)\n .map((obj: ImageData) => (\n <ch-tabular-grid-row rowid={obj.id} class=\"tabular-grid-row\">\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image src={obj.icon}></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.module}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-description\">\n {obj.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {formatDate(obj.modifiedDate)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.lastUser}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {formatDate(obj.importDate)}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n isAnimated={false}\n stateIconSrc={NOTICE_ICON}\n stateTitle={this.#componentLocale.emptyState.title}\n key=\"no-images-empty-state\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n </div>\n );\n };\n\n #resetFilterHandler = () => {\n if (this.#filterInitialData) {\n this.filterNameValue = this.#filterInitialData.name;\n this.filterModuleValue = this.#filterInitialData.module;\n this.filterSearchContentsValue = this.#filterInitialData.searchContents;\n this.filterCategoryValue = this.#filterInitialData.category;\n this.filterAllDescendantsValue =\n this.#filterInitialData.allDescendants === ALL_DESCENDANTS_VALUE;\n this.filterAfterTypeValue = this.#filterInitialData.modifiedAfter;\n this.filterModifiedDateValue = this.#filterInitialData.modifiedDateTime;\n this.filterUserValue = this.#filterInitialData.modifiedUser;\n this.filterStyleValue = this.#filterInitialData.style;\n this.filterLanguageValue = this.#filterInitialData.language;\n this.filterDensityValue = this.#filterInitialData.density;\n this.filterLayerValue = this.#filterInitialData.layer;\n this.afterCurrentValue = this.filterAfterTypeValue;\n }\n };\n\n #saveInitialFilterData = () => {\n this.#filterInitialData = {\n name: this.filterNameValue,\n module: this.filterModuleValue,\n searchContents: this.filterSearchContentsValue,\n category: this.filterCategoryValue,\n allDescendants: this.filterAllDescendantsValue\n ? ALL_DESCENDANTS_VALUE\n : \"\",\n modifiedAfter: this.filterAfterTypeValue,\n modifiedDateTime: this.filterModifiedDateValue,\n modifiedUser: this.filterUserValue,\n style: this.filterStyleValue,\n language: this.filterLanguageValue,\n density: this.filterDensityValue,\n layer: this.filterLayerValue\n };\n };\n\n #selectAll = (): void => {\n (this.#chGridEl as any).selectAllRows();\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border spacing-body-inline spacing-body-block-start field-group\">\n {this.#renderHeader()}\n </header>\n\n <div class=\"main\">\n {this.#renderTabularGrid()}\n <div class=\"main__aside field-group\">{this.#renderFilter()}</div>\n </div>\n\n <footer class=\"dialog-footer-with-border dialog-footer-space-between spacing-body\">\n <p\n // matching objects\n class=\"text-body\"\n >\n {`${this.tabularGridData.length} ${\n this.#componentLocale.objCount.matching\n }`}\n </p>\n\n <div class=\"buttons-spacer\">\n <button\n // select all button\n id=\"button-select-all\"\n class=\"button-secondary\"\n onClick={this.#selectAll}\n >\n {this.#componentLocale.footer.btnSelectAll}\n </button>\n\n <button\n // new image button\n id=\"button-new-file\"\n class=\"button-primary button-icon-and-text\"\n onClick={this.#newObjectCallbackHandler}\n >\n {this.#componentLocale.footer.btnNew}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\nexport type ContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type DeleteSelectionCallback = (ids: string[]) => Promise<void>;\n\nexport type FilerInitialData = {\n name: string;\n module: EntityData;\n searchContents: string;\n category: string;\n allDescendants: string;\n modifiedAfter: string;\n modifiedDateTime: string;\n modifiedUser: string;\n style: string;\n language: string;\n density: string;\n layer: string;\n};\n\nexport type ImageData = {\n id: string;\n icon: string;\n name: string;\n description: string;\n parent: string;\n module: string;\n modifiedDate?: Date;\n lastUser?: string;\n importDate?: Date;\n};\n\nexport type ImageFiltersData = {\n name?: string;\n searchContents?: string;\n category?: string;\n parent?: string;\n allDescendants?: boolean;\n modifiedAfter?: string;\n modifiedBy?: string;\n modifiedDate?: Date;\n style?: string;\n language?: string;\n density?: string;\n layer?: string;\n};\n\nexport type ImageItemData = {\n id: string;\n name: string;\n url: string;\n};\n\nexport type LoadCallback = (filters: ImageFiltersData) => Promise<ImageData[]>;\n\nexport type LoadImageItemsCallback = (id: string) => Promise<ImageItemData[]>;\n\nexport type NewObjectCallback = () => Promise<void>;\n\nexport type OpenSelectionCallback = (ids: string[]) => Promise<void>;\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\nexport type SelectionObjectCallback = (ids: string[]) => Promise<void>;\n"],"version":3}
@@ -11,7 +11,7 @@
11
11
  display: flex;
12
12
  align-items: center;
13
13
  flex-direction: column;
14
- color: var(--color-neutral-300);
14
+ color: var(--color-text-neutral-default);
15
15
  gap: var(--spacing-gap-xl);
16
16
  text-align: center;
17
17
  padding: var(--spacing-padding-xxl);
@@ -21,7 +21,7 @@
21
21
  block-size: 64px;
22
22
  inline-size: 64px;
23
23
  border-radius: 50%;
24
- background-color: var(--color-accent-success-pressed);
24
+ background-color: var(--color-accent-success-contrast);
25
25
  background-image: var(--icon__system_check_on-surface--enabled);
26
26
  background-repeat: no-repeat;
27
27
  background-position: center center;
@@ -31,5 +31,8 @@
31
31
 
32
32
  .genexus-next-logo {
33
33
  inline-size: 140px;
34
+ block-size: 30px;
34
35
  margin-block-start: 108px;
36
+ mask-size: contain;
37
+ background-color: var(--color-icon-neutral-default);
35
38
  }
@@ -5,7 +5,7 @@ import { Locale } from "../../common/locale";
5
5
  const ASSETS_DIR = "gx-ide-assets/sign-in-result";
6
6
  const LEFT_SIDE_ILLUSTRATION = getAssetPath(`./${ASSETS_DIR}/images/left-side-illustration.svg`);
7
7
  const RIGHT_SIDE_ILLUSTRATION = getAssetPath(`./${ASSETS_DIR}/images/right-side-illustration.svg`);
8
- const GENEXUS_NEXT_LOGO = getAssetPath(`./${ASSETS_DIR}/images/genexus-next-logo.svg`);
8
+ const GENEXUS_NEXT_LOGO_SRC = getAssetPath(`./${ASSETS_DIR}/images/genexus-next-logo.svg`);
9
9
  const CSS_BUNDLES = [
10
10
  // Use only the bundles that are needed for this component.
11
11
  "resets/box-sizing",
@@ -23,7 +23,9 @@ export class GxIdeSignInResult {
23
23
  backgroundRepeat: "no-repeat, no-repeat",
24
24
  backgroundPosition: "left, right bottom",
25
25
  backgroundSize: "auto 100%, auto 55%"
26
- } }, h("ch-theme", { model: CSS_BUNDLES }), h("div", { class: "content" }, h("span", { class: "check-icon" }), h("h1", { class: "heading-3" }, this._componentLocale.title), h("p", { class: "subtitle-regular-s" }, this._componentLocale.description), h("img", { src: GENEXUS_NEXT_LOGO, alt: "", class: "genexus-next-logo" }))));
26
+ } }, h("ch-theme", { model: CSS_BUNDLES }), h("div", { class: "content" }, h("span", { class: "check-icon" }), h("h1", { class: "heading-3" }, this._componentLocale.title), h("p", { class: "subtitle-regular-s" }, this._componentLocale.description), h("div", { style: {
27
+ mask: `url(${GENEXUS_NEXT_LOGO_SRC}) no-repeat center / contain`
28
+ }, class: "genexus-next-logo" }))));
27
29
  }
28
30
  static get is() { return "gx-ide-sign-in-result"; }
29
31
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"sign-in-result.js","sourceRoot":"","sources":["../../../src/components/sign-in-result/sign-in-result.tsx"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,iDAAiD;AAEjD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAI1E,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,UAAU,GAAG,8BAA8B,CAAC;AAElD,MAAM,sBAAsB,GAAG,YAAY,CACzC,KAAK,UAAU,oCAAoC,CACpD,CAAC;AACF,MAAM,uBAAuB,GAAG,YAAY,CAC1C,KAAK,UAAU,qCAAqC,CACrD,CAAC;AACF,MAAM,iBAAiB,GAAG,YAAY,CACpC,KAAK,UAAU,+BAA+B,CAC/C,CAAC;AAEF,MAAM,WAAW,GAAmB;IAClC,2DAA2D;IAC3D,mBAAmB;IACnB,kBAAkB;IAClB,eAAe;CAChB,CAAC;AAQF,MAAM,OAAO,iBAAiB;IAK5B,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC,gBAAgB,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,gBAAgB,KAAI,CAAC;IAErB,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,IACH,KAAK,EAAC,qBAAqB,EAC3B,KAAK,EAAE;gBACL,eAAe,EAAE,QAAQ,sBAAsB,YAAY,uBAAuB,IAAI;gBACtF,gBAAgB,EAAE,sBAAsB;gBACxC,kBAAkB,EAAE,oBAAoB;gBACxC,cAAc,EAAE,qBAAqB;aACtC;YAED,gBAAU,KAAK,EAAE,WAAW,GAAa;YACzC,WAAK,KAAK,EAAC,SAAS;gBAClB,YAAM,KAAK,EAAC,YAAY,GAAQ;gBAChC,UAAI,KAAK,EAAC,WAAW,IAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAM;gBACxD,SAAG,KAAK,EAAC,oBAAoB,IAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAK;gBACrE,WAAK,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAC,EAAE,EAAC,KAAK,EAAC,mBAAmB,GAAG,CAC5D,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;CACF","sourcesContent":["// This is a starting template. Do not edit this file directly.\n// Dupicate it and modify the new file as needed.\n\nimport { Component, Host, Element, getAssetPath, h } from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\n\nconst ASSETS_DIR = \"gx-ide-assets/sign-in-result\";\n\nconst LEFT_SIDE_ILLUSTRATION = getAssetPath(\n `./${ASSETS_DIR}/images/left-side-illustration.svg`\n);\nconst RIGHT_SIDE_ILLUSTRATION = getAssetPath(\n `./${ASSETS_DIR}/images/right-side-illustration.svg`\n);\nconst GENEXUS_NEXT_LOGO = getAssetPath(\n `./${ASSETS_DIR}/images/genexus-next-logo.svg`\n);\n\nconst CSS_BUNDLES: MercuryBundles = [\n // Use only the bundles that are needed for this component.\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\n@Component({\n tag: \"gx-ide-sign-in-result\",\n styleUrl: \"sign-in-result.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/sign-in-result\"]\n})\nexport class GxIdeSignInResult {\n _componentLocale: any;\n\n @Element() el: HTMLGxIdeSignInResultElement;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {}\n\n render() {\n return (\n <Host\n class=\"widget spacing-body\"\n style={{\n backgroundImage: `url('${LEFT_SIDE_ILLUSTRATION}'), url('${RIGHT_SIDE_ILLUSTRATION}')`,\n backgroundRepeat: \"no-repeat, no-repeat\",\n backgroundPosition: \"left, right bottom\",\n backgroundSize: \"auto 100%, auto 55%\"\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"content\">\n <span class=\"check-icon\"></span>\n <h1 class=\"heading-3\">{this._componentLocale.title}</h1>\n <p class=\"subtitle-regular-s\">{this._componentLocale.description}</p>\n <img src={GENEXUS_NEXT_LOGO} alt=\"\" class=\"genexus-next-logo\" />\n </div>\n </Host>\n );\n }\n}\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type SaveCallback = () => Promise<string>;\n"]}
1
+ {"version":3,"file":"sign-in-result.js","sourceRoot":"","sources":["../../../src/components/sign-in-result/sign-in-result.tsx"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,iDAAiD;AAEjD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAI1E,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,UAAU,GAAG,8BAA8B,CAAC;AAElD,MAAM,sBAAsB,GAAG,YAAY,CACzC,KAAK,UAAU,oCAAoC,CACpD,CAAC;AACF,MAAM,uBAAuB,GAAG,YAAY,CAC1C,KAAK,UAAU,qCAAqC,CACrD,CAAC;AACF,MAAM,qBAAqB,GAAG,YAAY,CACxC,KAAK,UAAU,+BAA+B,CAC/C,CAAC;AAEF,MAAM,WAAW,GAAmB;IAClC,2DAA2D;IAC3D,mBAAmB;IACnB,kBAAkB;IAClB,eAAe;CAChB,CAAC;AAQF,MAAM,OAAO,iBAAiB;IAK5B,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC,gBAAgB,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,gBAAgB,KAAI,CAAC;IAErB,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,IACH,KAAK,EAAC,qBAAqB,EAC3B,KAAK,EAAE;gBACL,eAAe,EAAE,QAAQ,sBAAsB,YAAY,uBAAuB,IAAI;gBACtF,gBAAgB,EAAE,sBAAsB;gBACxC,kBAAkB,EAAE,oBAAoB;gBACxC,cAAc,EAAE,qBAAqB;aACtC;YAED,gBAAU,KAAK,EAAE,WAAW,GAAa;YACzC,WAAK,KAAK,EAAC,SAAS;gBAClB,YAAM,KAAK,EAAC,YAAY,GAAQ;gBAChC,UAAI,KAAK,EAAC,WAAW,IAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAM;gBACxD,SAAG,KAAK,EAAC,oBAAoB,IAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAK;gBACrE,WACE,KAAK,EAAE;wBACL,IAAI,EAAE,OAAO,qBAAqB,8BAA8B;qBACjE,EACD,KAAK,EAAC,mBAAmB,GACzB,CACE,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;CACF","sourcesContent":["// This is a starting template. Do not edit this file directly.\n// Dupicate it and modify the new file as needed.\n\nimport { Component, Host, Element, getAssetPath, h } from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\n\nconst ASSETS_DIR = \"gx-ide-assets/sign-in-result\";\n\nconst LEFT_SIDE_ILLUSTRATION = getAssetPath(\n `./${ASSETS_DIR}/images/left-side-illustration.svg`\n);\nconst RIGHT_SIDE_ILLUSTRATION = getAssetPath(\n `./${ASSETS_DIR}/images/right-side-illustration.svg`\n);\nconst GENEXUS_NEXT_LOGO_SRC = getAssetPath(\n `./${ASSETS_DIR}/images/genexus-next-logo.svg`\n);\n\nconst CSS_BUNDLES: MercuryBundles = [\n // Use only the bundles that are needed for this component.\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\n@Component({\n tag: \"gx-ide-sign-in-result\",\n styleUrl: \"sign-in-result.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/sign-in-result\"]\n})\nexport class GxIdeSignInResult {\n _componentLocale: any;\n\n @Element() el: HTMLGxIdeSignInResultElement;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {}\n\n render() {\n return (\n <Host\n class=\"widget spacing-body\"\n style={{\n backgroundImage: `url('${LEFT_SIDE_ILLUSTRATION}'), url('${RIGHT_SIDE_ILLUSTRATION}')`,\n backgroundRepeat: \"no-repeat, no-repeat\",\n backgroundPosition: \"left, right bottom\",\n backgroundSize: \"auto 100%, auto 55%\"\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"content\">\n <span class=\"check-icon\"></span>\n <h1 class=\"heading-3\">{this._componentLocale.title}</h1>\n <p class=\"subtitle-regular-s\">{this._componentLocale.description}</p>\n <div\n style={{\n mask: `url(${GENEXUS_NEXT_LOGO_SRC}) no-repeat center / contain`\n }}\n class=\"genexus-next-logo\"\n />\n </div>\n </Host>\n );\n }\n}\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type SaveCallback = () => Promise<string>;\n"]}
@@ -33,7 +33,7 @@ Found on /common/helpers.tsx hiChar function is used to add a span/class to ever
33
33
  }
34
34
 
35
35
  .main {
36
- --sidebar-width: 400px;
36
+ --sidebar-width: 376px;
37
37
  display: grid;
38
38
  grid-template-columns: 1fr var(--sidebar-width);
39
39
  overflow: auto;
@@ -131,18 +131,27 @@ ch-tabular-grid-rowset-empty {
131
131
  margin: 0;
132
132
  background-color: var(--color-accent-surface-elevation-2);
133
133
  display: grid;
134
+ grid-template-rows: minmax(0, 1fr) max-content;
134
135
  gap: var(--size-4);
135
136
  padding: var(--size-8);
136
137
  border-radius: var(--size-4);
137
138
  opacity: 0;
138
139
  animation: fadeIn 300ms forwards;
140
+ aspect-ratio: 1/1;
139
141
  }
140
142
  .main__images-container .figure__picture {
141
- object-fit: contain;
143
+ display: flex;
144
+ align-items: center;
145
+ justify-content: center;
146
+ min-block-size: 0;
142
147
  }
143
148
  .main__images-container .figure__img {
149
+ display: block;
150
+ max-inline-size: 100%;
151
+ max-block-size: 100%;
152
+ inline-size: auto;
144
153
  block-size: auto;
145
- inline-size: 100%;
154
+ object-fit: contain;
146
155
  }
147
156
  .main__images-container .figure__figcaption {
148
157
  text-align: center;
@@ -169,7 +178,7 @@ ch-tabular-grid-rowset-empty {
169
178
  }
170
179
  @container (max-width: 992px) {
171
180
  .main {
172
- --sidebar-width: 300px;
181
+ --sidebar-width: 288px;
173
182
  }
174
183
 
175
184
  .main__images-container {
@@ -187,7 +196,7 @@ ch-tabular-grid-rowset-empty {
187
196
  }
188
197
  @container (max-width: 640px) {
189
198
  .main {
190
- --sidebar-width: 100px;
199
+ --sidebar-width: 112px;
191
200
  }
192
201
 
193
202
  .main__images-container {
@@ -1,12 +1,12 @@
1
1
  import { getAssetPath, proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
2
  import { L as Locale } from './locale.js';
3
3
 
4
- const signInResultCss = ":host{display:grid;block-size:100%;overflow:auto;display:flex;align-items:center;justify-content:center}.content{display:flex;align-items:center;flex-direction:column;color:var(--color-neutral-300);gap:var(--spacing-gap-xl);text-align:center;padding:var(--spacing-padding-xxl)}.check-icon{block-size:64px;inline-size:64px;border-radius:50%;background-color:var(--color-accent-success-pressed);background-image:var(--icon__system_check_on-surface--enabled);background-repeat:no-repeat;background-position:center center;background-size:32px;margin-block-end:16px}.genexus-next-logo{inline-size:140px;margin-block-start:108px}";
4
+ const signInResultCss = ":host{display:grid;block-size:100%;overflow:auto;display:flex;align-items:center;justify-content:center}.content{display:flex;align-items:center;flex-direction:column;color:var(--color-text-neutral-default);gap:var(--spacing-gap-xl);text-align:center;padding:var(--spacing-padding-xxl)}.check-icon{block-size:64px;inline-size:64px;border-radius:50%;background-color:var(--color-accent-success-contrast);background-image:var(--icon__system_check_on-surface--enabled);background-repeat:no-repeat;background-position:center center;background-size:32px;margin-block-end:16px}.genexus-next-logo{inline-size:140px;block-size:30px;margin-block-start:108px;mask-size:contain;background-color:var(--color-icon-neutral-default)}";
5
5
 
6
6
  const ASSETS_DIR = "gx-ide-assets/sign-in-result";
7
7
  const LEFT_SIDE_ILLUSTRATION = getAssetPath(`./${ASSETS_DIR}/images/left-side-illustration.svg`);
8
8
  const RIGHT_SIDE_ILLUSTRATION = getAssetPath(`./${ASSETS_DIR}/images/right-side-illustration.svg`);
9
- const GENEXUS_NEXT_LOGO = getAssetPath(`./${ASSETS_DIR}/images/genexus-next-logo.svg`);
9
+ const GENEXUS_NEXT_LOGO_SRC = getAssetPath(`./${ASSETS_DIR}/images/genexus-next-logo.svg`);
10
10
  const CSS_BUNDLES = [
11
11
  // Use only the bundles that are needed for this component.
12
12
  "resets/box-sizing",
@@ -29,7 +29,9 @@ const GxIdeSignInResult$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeSignInRe
29
29
  backgroundRepeat: "no-repeat, no-repeat",
30
30
  backgroundPosition: "left, right bottom",
31
31
  backgroundSize: "auto 100%, auto 55%"
32
- } }, h("ch-theme", { model: CSS_BUNDLES }), h("div", { class: "content" }, h("span", { class: "check-icon" }), h("h1", { class: "heading-3" }, this._componentLocale.title), h("p", { class: "subtitle-regular-s" }, this._componentLocale.description), h("img", { src: GENEXUS_NEXT_LOGO, alt: "", class: "genexus-next-logo" }))));
32
+ } }, h("ch-theme", { model: CSS_BUNDLES }), h("div", { class: "content" }, h("span", { class: "check-icon" }), h("h1", { class: "heading-3" }, this._componentLocale.title), h("p", { class: "subtitle-regular-s" }, this._componentLocale.description), h("div", { style: {
33
+ mask: `url(${GENEXUS_NEXT_LOGO_SRC}) no-repeat center / contain`
34
+ }, class: "genexus-next-logo" }))));
33
35
  }
34
36
  static get assetsDirs() { return ["gx-ide-assets/sign-in-result"]; }
35
37
  get el() { return this; }