@genexus/genexus-ide-ui 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-container_2.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-empty-state.cjs.entry.js +3 -2
- package/dist/cjs/gx-ide-empty-state.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +272 -293
- package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-loader.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-recent-news.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-recent-news.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-start-page.cjs.entry.js +5 -4
- package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/_helpers/container/container.js.map +1 -1
- package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.css +5 -1
- package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js +20 -1
- package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js.map +1 -1
- package/dist/collection/components/_helpers/ide-loader/ide-loader.css +3 -2
- package/dist/collection/components/kb-manager-export/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +3 -3
- package/dist/collection/components/kb-manager-export/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.ja.json +4 -4
- package/dist/collection/components/kb-manager-export/helpers.js +64 -105
- package/dist/collection/components/kb-manager-export/helpers.js.map +1 -1
- package/dist/collection/components/kb-manager-export/kb-manager-export.css +19 -618
- package/dist/collection/components/kb-manager-export/kb-manager-export.js +345 -377
- package/dist/collection/components/kb-manager-export/kb-manager-export.js.map +1 -1
- package/dist/collection/components/kb-manager-export/types.js +2 -0
- package/dist/collection/components/kb-manager-export/types.js.map +1 -0
- package/dist/collection/components/start-page/recent-news.js +1 -1
- package/dist/collection/components/start-page/recent-news.js.map +1 -1
- package/dist/collection/components/start-page/start-page.js +5 -4
- package/dist/collection/components/start-page/start-page.js.map +1 -1
- package/dist/components/container.js.map +1 -1
- package/dist/components/gx-ide-empty-state2.js +4 -2
- package/dist/components/gx-ide-empty-state2.js.map +1 -1
- package/dist/components/gx-ide-kb-manager-export.js +294 -314
- package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
- package/dist/components/gx-ide-start-page.js +5 -4
- package/dist/components/gx-ide-start-page.js.map +1 -1
- package/dist/components/ide-loader.js +1 -1
- package/dist/components/ide-loader.js.map +1 -1
- package/dist/components/recent-news.js +1 -1
- package/dist/components/recent-news.js.map +1 -1
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-container_2.entry.js.map +1 -1
- package/dist/esm/gx-ide-empty-state.entry.js +3 -2
- package/dist/esm/gx-ide-empty-state.entry.js.map +1 -1
- package/dist/esm/gx-ide-kb-manager-export.entry.js +273 -294
- package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
- package/dist/esm/gx-ide-loader.entry.js +1 -1
- package/dist/esm/gx-ide-loader.entry.js.map +1 -1
- package/dist/esm/gx-ide-recent-news.entry.js +1 -1
- package/dist/esm/gx-ide-recent-news.entry.js.map +1 -1
- package/dist/esm/gx-ide-start-page.entry.js +5 -4
- package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +3 -3
- package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.ja.json +4 -4
- package/dist/genexus-ide-ui/p-2cb766ce.entry.js +493 -0
- package/dist/genexus-ide-ui/p-2cb766ce.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-f924f02a.entry.js → p-64101478.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-64101478.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-7ac25fc3.entry.js.map +1 -1
- package/dist/genexus-ide-ui/{p-f220c75a.entry.js → p-885302c2.entry.js} +11 -6
- package/dist/genexus-ide-ui/p-885302c2.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-bbb30314.entry.js → p-8ff5da93.entry.js} +37 -32
- package/dist/genexus-ide-ui/p-8ff5da93.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-cb0e11db.entry.js → p-a6b76120.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-a6b76120.entry.js.map +1 -0
- package/dist/types/components/_helpers/empty-state/gx-ide-empty-state.d.ts +4 -0
- package/dist/types/components/kb-manager-export/helpers.d.ts +33 -5
- package/dist/types/components/kb-manager-export/kb-manager-export.d.ts +36 -98
- package/dist/types/components/kb-manager-export/types.d.ts +21 -0
- package/dist/types/components.d.ts +16 -40
- package/package.json +6 -9
- package/dist/genexus-ide-ui/p-b3baa3d2.entry.js +0 -491
- package/dist/genexus-ide-ui/p-b3baa3d2.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-bbb30314.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-cb0e11db.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-f220c75a.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-f924f02a.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["containerCss","GxIdeContainer","this","headingClasses","heading","inactiveTitle","titleType","noHeadingBorder","hasOnlyHeading","headingJustify","noHeadingPadding","noHeadingPaddingBlockEnd","noHeadingGap","headingPaddingTop","_a","containerTitle","length","titleHeightAsInput","flexRow","contentClasses","content","flexContent","noContentPadding","noContentGap","noContentBorderTop","contentBorderEnd","alignItems","undefined","justifyContent","aboveFooter","hasAboveFooterSlot","h","class","noBorderAboveFooter","noAboveFooterPadding","slimmerFooter","name","footer","hasFooterSlot","hasOnlyFooter","hasSlottedContent","noBorderFooter","footerJustify","noFooterPadding","componentWillLoad","evaluateSlots","headerSlot","el","querySelectorAll","hasHeaderSlot","slottedContent","footerAboveSlot","footerStartSlot","footerEndSlot","evaluateSections","hasOnlyContent","render","result","type","alignment","titleAlignment","part","Host","container","sectionsPadding","displayBorder","displayBorderTop","displayBorderEnd","displayBorderBottom","displayBorderStart","titleCss","GxIdeTitle","geminiType"],"sources":["src/components/_helpers/container/container.scss?tag=gx-ide-container&encapsulation=shadow","src/components/_helpers/container/container.tsx","src/components/_helpers/title/title.scss?tag=gx-ide-title&encapsulation=shadow","src/components/_helpers/title/title.tsx"],"sourcesContent":["@import \"../../../../node_modules/@genexus/gemini/dist/gemini/globals/mixins.scss\";\n\n/*******************************\nHOST / GENERAL\n********************************/\n:host {\n --gx-ide-container-elements-spacing: var(--mer-spacing--xs);\n display: block;\n height: 100%;\n box-sizing: border-box;\n}\n.container {\n display: grid;\n height: 100%;\n grid-template-rows: auto 1fr auto;\n box-sizing: border-box;\n}\n.heading,\n.content,\n.footer,\n.footer-above {\n padding: var(--gx-ide-container__padding);\n}\n/*PADDING*/\n.container--padding-s {\n --gx-ide-container__padding: var(--mer-spacing--xs);\n}\n.container--padding-m {\n --gx-ide-container__padding: var(--mer-spacing--sm);\n}\n.container--padding-l {\n --gx-ide-container__padding: var(--mer-spacing--md);\n}\n/*BORDERS*/\n.container--display-border {\n border: 1px solid var(--gx-ide-container-border-color);\n}\n.container--display-border-top {\n border-top: 1px solid var(--gx-ide-container-border-color);\n}\n.container--display-border-end {\n border-inline-end: 1px solid var(--gx-ide-container-border-color);\n}\n.container--display-border-bottom {\n border-bottom: 1px solid var(--gx-ide-container-border-color);\n}\n.container--display-border-start {\n border-inline-start: 1px solid var(--gx-ide-container-border-color);\n}\n.container--overflow-hidden-y {\n overflow-y: hidden;\n}\n/*******************************\nHEADING\n********************************/\n.heading {\n // @include gxg-flex-justify();\n display: flex;\n flex-direction: column;\n gap: var(--gx-ide-container__padding);\n width: 100%;\n box-sizing: border-box;\n border-bottom: 1px solid var(--gx-ide-container-border-color);\n &--no-border {\n border-bottom: 0;\n }\n &--no-padding {\n padding: 0;\n }\n &--no-padding-block-end {\n padding-block-end: 0;\n }\n &--no-gap {\n gap: 0;\n }\n &--inactive {\n color: var(--gxg-color--disabled);\n }\n &--padding-top {\n padding: var(--gx-ide-container__padding) 0 0 0;\n }\n &--slimmer {\n padding-top: var(--mer-spacing--xs);\n padding-bottom: var(--mer-spacing--xs);\n }\n &--form-text-height {\n .heading__title {\n min-height: var(--gxg-form-text-height);\n justify-content: center;\n }\n }\n &--flex-row {\n flex-direction: row;\n align-items: center;\n justify-content: center;\n }\n}\n/*******************************\nCONTENT\n********************************/\n.content {\n overflow-x: auto;\n display: flex;\n flex-direction: column;\n gap: var(--gx-ide-form-items-gap);\n box-sizing: border-box;\n @include gxg-scrollbar();\n\n &--no-padding {\n padding: 0;\n }\n &--no-border-top {\n border-top: none;\n }\n &--flex {\n display: flex;\n }\n &--no-gap {\n gap: 0;\n }\n &--align-items-start {\n align-items: start;\n }\n &--align-items-center {\n align-items: center;\n }\n &--align-items-end {\n align-items: end;\n }\n &--justify-content-start {\n justify-content: start;\n }\n &--justify-content-center {\n justify-content: center;\n }\n &--justify-content-end {\n justify-content: end;\n }\n &--border-end {\n border-inline-end: 1px solid var(--gx-ide-container-border-color);\n }\n}\n/*only content*/\n.container--only-content {\n grid-template-rows: 1fr;\n}\n/*no header, but has footer*/\n.container--no-header:not(.container--only-content) {\n grid-template-rows: 1fr auto;\n}\n/*no footer, but has header*/\n.container--no-footer:not(.container--only-content) {\n grid-template-rows: auto 1fr;\n}\n/*******************************\nFOOTER\n********************************/\n/*ABOVE*/\n.footer-above {\n border-top: 1px solid var(--gx-ide-container-border-color);\n &--no-border-top {\n border-top: 0;\n }\n &--slimmer {\n padding-top: var(--mer-spacing--xs);\n padding-bottom: var(--mer-spacing--xs);\n }\n &--no-padding {\n padding: 0;\n }\n}\n/*START and END*/\n.footer {\n display: flex;\n gap: var(--gx-ide-container-elements-spacing);\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: center;\n border-top: 1px solid var(--gx-ide-container-border-color);\n &__start,\n &__end {\n display: flex;\n gap: var(--gx-ide-container-elements-spacing);\n }\n &--no-border {\n border-top: 0;\n }\n &--no-padding {\n padding: 0;\n }\n &--slimmer {\n padding-top: var(--mer-spacing--xs);\n padding-bottom: var(--mer-spacing--xs);\n }\n}\n","import { Component, Host, h, Prop, Element, State } from \"@stencil/core\";\nimport { TitleAlignment } from \"@genexus/gemini/dist/types/common/types\";\nimport { TitleType } from \"../title/title\";\n@Component({\n tag: \"gx-ide-container\",\n styleUrl: \"container.scss\",\n shadow: true\n})\nexport class GxIdeContainer {\n // 1.OWN PROPERTIES //\n\n /* GENERAL */\n\n /**\n * By setting the title to inactive, the color will be gray instead of black.\n */\n @Prop() readonly inactiveTitle: boolean = false;\n\n /**\n * The title of the container\n */\n @Prop() readonly containerTitle: string;\n\n /**\n * The title of the container\n */\n @Prop() readonly titleType: TitleType = \"primary\";\n\n /**\n * Displays a border all around the container\n */\n @Prop() readonly displayBorder: boolean = false;\n\n /**\n * Displays a border on the top\n */\n @Prop() readonly displayBorderTop: boolean = false;\n\n /**\n * Displays a border at the end\n */\n @Prop() readonly displayBorderEnd: boolean = false;\n\n /**\n * Displays a border at on the bottom\n */\n @Prop() readonly displayBorderBottom: boolean = false;\n\n /**\n * Displays a border at the start\n */\n @Prop() readonly displayBorderStart: boolean = false;\n\n /**\n * The container general padding (applies to .heading, .content, and .footer)\n */\n @Prop() readonly sectionsPadding: SectionsPadding = \"m\";\n\n /* HEADING*/\n\n /**\n * Title alignment\n */\n @Prop() readonly titleAlignment: TitleAlignment = \"center\";\n\n /**\n * Removes the border bottom from the heading\n */\n @Prop() readonly noHeadingBorder: boolean = false;\n\n /**\n * Removes the heading gap\n */\n @Prop() readonly noHeadingGap: boolean = false;\n\n /**\n * Removes the padding from the heading\n */\n @Prop() readonly noHeadingPadding: boolean = false;\n\n /**\n * Removes the padding block end from the heading\n */\n @Prop() readonly noHeadingPaddingBlockEnd: boolean = false;\n\n /**\n * Adds padding to the top of the heading\n */\n @Prop() readonly headingPaddingTop: boolean = false;\n\n /**\n * The heading justification\n */\n @Prop() readonly headingJustify: HeadingJustify = \"center\";\n\n /**\n * It forces the .heading__title min-height to be as tall as the gxg-form-text height. This is useful when you are displaying two gx-ide-container's on the same row, both of them display a title, and one of them displays a gxg-form-text in the header (usually used to filter content). Without this property set to true, the .heading without a gxg-from-text would be shorter. At the time of writing, this is used on ww-images.\n */\n @Prop() readonly titleHeightAsInput: boolean = false;\n\n /**\n * Makes the header (.heading) display flex:row, instad of the default flex:column.\n */\n @Prop() readonly flexRow: boolean = false;\n\n /* CONTENT */\n\n /**\n * Makes the content a flex container\n */\n @Prop() readonly flexContent: boolean = false;\n\n /**\n * Removes the border-top from the content\n */\n @Prop() readonly noContentBorderTop: boolean = false;\n\n /**\n * Removes the padding from the content\n */\n @Prop() readonly noContentPadding: boolean = false;\n\n /**\n * Removes the gap from the content\n */\n @Prop() readonly noContentGap: boolean = false;\n\n /**\n * Align items\n */\n @Prop() readonly alignItems: AlignItems = undefined;\n\n /**\n * Justify content\n */\n @Prop() readonly justifyContent: JustifyContent = undefined;\n\n /**\n * Display border end on the content\n */\n @Prop() readonly contentBorderEnd: boolean = false;\n\n /* FOOTER ABOVE */\n\n /**\n * Makes the above footer vertical padding slimmer\n */\n @Prop() readonly slimmerAboveFooter: boolean = false;\n\n /**\n * Removes the above padding from the footer\n */\n @Prop() readonly noAboveFooterPadding: boolean = false;\n\n /**\n * Removes the above border top\n */\n @Prop() readonly noBorderAboveFooter: boolean = false;\n\n /* FOOTER > START and FOOTER > END*/\n\n /**\n * Makes the footer vertical padding slimmer\n */\n @Prop() readonly slimmerFooter: boolean = false;\n\n /**\n * Removes the padding from the footer\n */\n @Prop() readonly noFooterPadding: boolean = false;\n\n /**\n * The footer justification\n */\n @Prop() readonly footerJustify: FooterJustify = \"end\";\n\n /**\n * Removes the border top from the footer\n */\n @Prop() readonly noBorderFooter: boolean = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeContainerElement;\n\n // 3.STATE() VARIABLES //\n\n /**\n * A boolean variable indicating if the component has or not any content for the 'header' slot\n */\n @State() hasHeaderSlot = false;\n\n /**\n * A boolean variable indicating if the component has or not any content slotted content (regular slotted content, without 'slot' attribute)\n */\n @State() hasSlottedContent = false;\n\n /**\n * A boolean variable indicating if the component has or not any content for the 'footer' slot\n */\n @State() hasFooterSlot = false;\n\n /**\n * A boolean variable indicating if the component has or not any content for the 'footer' slot\n */\n @State() hasAboveFooterSlot = false;\n\n /**\n * A boolean variable indicating that the container only has the heading section\n */\n @State() hasOnlyHeading = false;\n\n /**\n * A boolean variable indicating that the container only has the content section\n */\n @State() hasOnlyContent = false;\n\n /**\n * A boolean variable indicating that the container only has the footer section\n */\n @State() hasOnlyFooter = false;\n\n // 4.PUBLIC PROPERTY API //\n\n // 5.EVENTS (EMIT) //\n\n // 6.COMPONENT LIFECYCLE EVENTS //\n\n componentWillLoad() {\n this.evaluateSlots();\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n private evaluateSlots() {\n // header\n const headerSlot = this.el.querySelectorAll(':scope > [slot=\"header\"]');\n if (headerSlot.length) {\n this.hasHeaderSlot = true;\n }\n // content\n const slottedContent = this.el.querySelectorAll(\":scope > :not([slot])\");\n if (slottedContent.length) {\n this.hasSlottedContent = true;\n }\n // footer\n const footerAboveSlot = this.el.querySelectorAll(\n ':scope > [slot=\"footer-above\"]'\n );\n const footerStartSlot = this.el.querySelectorAll(\n ':scope > [slot=\"footer-start\"]'\n );\n const footerEndSlot = this.el.querySelectorAll(\n ':scope > [slot=\"footer-end\"]'\n );\n if (footerStartSlot.length || footerEndSlot.length) {\n this.hasFooterSlot = true;\n }\n if (footerAboveSlot.length) {\n this.hasAboveFooterSlot = true;\n }\n }\n\n private evaluateSections() {\n // has only heading\n if (\n !this.hasSlottedContent &&\n !this.hasFooterSlot &&\n !this.hasAboveFooterSlot\n ) {\n this.hasOnlyHeading = true;\n }\n // has only content\n if (\n this.hasSlottedContent &&\n !this.containerTitle &&\n !this.hasHeaderSlot &&\n !this.hasAboveFooterSlot &&\n !this.hasFooterSlot\n ) {\n this.hasOnlyContent = true;\n }\n // has only footer\n if (\n !this.hasSlottedContent &&\n !this.containerTitle &&\n !this.hasAboveFooterSlot\n ) {\n this.hasOnlyFooter = true;\n }\n }\n\n private headingClasses = (): string | { [className: string]: boolean } => {\n return {\n \"heading\": true,\n \"heading--inactive\": this.inactiveTitle,\n \"heading--slimmer\": this.titleType === \"secondary\",\n \"heading--no-border\": this.noHeadingBorder || this.hasOnlyHeading,\n [`heading--justify-${this.headingJustify}`]: true,\n \"heading--no-padding\": this.noHeadingPadding,\n \"heading--no-padding-block-end\": this.noHeadingPaddingBlockEnd,\n \"heading--no-gap\": this.noHeadingGap,\n \"heading--padding-top\":\n this.headingPaddingTop && this.containerTitle?.length > 0,\n \"heading--form-text-height\": this.titleHeightAsInput,\n \"heading--flex-row\": this.flexRow\n };\n };\n\n private contentClasses = (): string | { [className: string]: boolean } => {\n return {\n \"content\": true,\n \"content--flex\": this.flexContent,\n \"content--no-padding\": this.noContentPadding,\n \"content--no-gap\": this.noContentGap,\n \"content--no-border-top\": this.noContentBorderTop,\n \"content--border-end\": this.contentBorderEnd,\n [`content--align-items-${this.alignItems}`]:\n this.alignItems !== undefined,\n [`content--justify-content-${this.justifyContent}`]:\n this.justifyContent !== undefined\n };\n };\n\n private aboveFooter = (): JSX.Element | null => {\n return this.hasAboveFooterSlot ? (\n <footer\n class={{\n \"footer-above\": true,\n \"footer-above--no-border-top\": this.noBorderAboveFooter,\n \"footer-above--no-padding\": this.noAboveFooterPadding,\n \"footer-above--slimmer\": this.slimmerFooter\n }}\n >\n <slot name=\"footer-above\"></slot>\n </footer>\n ) : null;\n };\n\n private footer = (): JSX.Element | null => {\n return this.hasFooterSlot ? (\n <footer\n class={{\n \"footer\": true,\n \"footer--no-border\":\n this.hasOnlyFooter ||\n !this.hasSlottedContent ||\n this.noBorderFooter,\n [`footer--justify-${this.footerJustify}`]: true,\n [`footer--justify-${this.footerJustify}`]: true,\n \"footer--no-padding\": this.noFooterPadding,\n \"footer--slimmer\": this.slimmerFooter\n }}\n >\n <div class=\"footer__start\">\n <slot name=\"footer-start\"></slot>\n </div>\n <div class=\"footer__end\">\n <slot name=\"footer-end\"></slot>\n </div>\n </footer>\n ) : null;\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n this.evaluateSections();\n const result = [\n this.containerTitle || this.hasHeaderSlot ? (\n <header class={this.headingClasses()}>\n {this.containerTitle ? (\n <gx-ide-title\n class=\"heading__title\"\n type={this.titleType}\n alignment={this.titleAlignment as any}\n >\n {this.containerTitle}\n </gx-ide-title>\n ) : null}\n {this.hasHeaderSlot ? (\n <div class=\"heading__inner-wrapper\">\n <slot name=\"header\"></slot>\n </div>\n ) : null}\n </header>\n ) : null,\n this.hasSlottedContent ? (\n <div class={this.contentClasses()} part=\"content\">\n <slot></slot>\n </div>\n ) : null,\n this.aboveFooter(),\n this.footer()\n ];\n\n return (\n <Host>\n <div\n class={{\n \"container\": true,\n [`container--padding-${this.sectionsPadding}`]: true,\n \"container--display-border\": this.displayBorder,\n \"container--display-border-top\": this.displayBorderTop,\n \"container--display-border-end\": this.displayBorderEnd,\n \"container--display-border-bottom\": this.displayBorderBottom,\n \"container--display-border-start\": this.displayBorderStart,\n \"container--only-content\": this.hasOnlyContent,\n \"container--no-header\": !this.hasHeaderSlot && !this.containerTitle,\n \"container--no-footer\":\n !this.hasFooterSlot && !this.hasAboveFooterSlot\n }}\n >\n {result}\n </div>\n </Host>\n );\n }\n}\n\nexport type HeadingJustify = \"start\" | \"center\" | \"end\";\nexport type FooterJustify = \"start\" | \"center\" | \"end\";\nexport type SectionsPadding = \"s\" | \"m\" | \"l\";\nexport type AlignItems = \"start\" | \"center\" | \"end\";\nexport type JustifyContent = \"start\" | \"center\" | \"end\";\n",":host {\n --gx-ide-title-padding: var(--gx-ide-container--padding, --mer-spacing--sm);\n display: flex;\n flex-direction: column;\n color: var(--gx-ide-component-text-color);\n font-family: var(--mer-font-family--primary);\n line-height: 1.6em;\n background-color: transparent;\n padding: 0;\n}\n/*alignment*/\n:host(.alignment--start) {\n align-items: start;\n}\n:host(.alignment--center) {\n align-items: center;\n}\n/*padding*/\n:host(.alignment--start) {\n text-align: start;\n}\n:host([padding]) {\n padding: var(--gx-ide-title-padding);\n}\n:host([no-padding-bottom]) {\n padding-bottom: 0;\n}\n/*border*/\n:host([border]) {\n border-bottom: 1px solid var(--gx-ide-container-border-color);\n}\n/*type*/\n:host(.title-type--primary) {\n}\n:host(.title-type--secondary) {\n //a little subtle\n color: var(--gray-06);\n}\n","import { Component, Host, h, Prop } from \"@stencil/core\";\nimport { TitleType as GeminiTitleType } from \"@genexus/gemini/dist/types/components/title/title\";\n\n@Component({\n tag: \"gx-ide-title\",\n styleUrl: \"title.scss\",\n shadow: true\n})\nexport class GxIdeTitle {\n /**\n * Description: This helper component has been created for using as a title for the dialogs sections.\n */\n\n private geminiType: GeminiTitleType;\n\n /**\n * The title caption (the title)\n */\n @Prop() readonly titleCaption: string;\n\n /**\n * The title caption (the title)\n */\n @Prop() readonly type: TitleType = \"primary\";\n\n /**\n * The title alignment\n */\n @Prop() readonly alignment: TitleAlignment = \"start\";\n\n /**\n * Disables the padding\n */\n @Prop({ reflect: true }) readonly padding: boolean = false;\n\n /**\n * Disables the padding on the bottom\n */\n @Prop({ reflect: true }) readonly noPaddingBottom: boolean = false;\n\n /**\n * Displays a border on the bottom\n */\n @Prop({ reflect: true }) readonly border: boolean = false;\n\n componentWillLoad() {\n if (this.type === \"primary\") {\n this.geminiType = \"title-04\";\n } else if (this.type === \"secondary\") {\n this.geminiType = \"title-05\";\n }\n }\n\n render() {\n return (\n <Host\n class={{\n [`alignment--${this.alignment}`]: true,\n [`title-type--${this.type}`]: true\n }}\n >\n <gxg-title type={this.geminiType} alignment={this.alignment}>\n <slot></slot>\n </gxg-title>\n </Host>\n );\n }\n}\n\nexport type TitleType = \"primary\" | \"secondary\";\n\nexport type TitleAlignment = \"start\" | \"center\";\n"],"mappings":";;AAAA,MAAMA,IAAe;;MCQRC,IAAc;;;IAgSjBC,KAAAC,iBAAiB;;MACvB,OAAO;QACLC,SAAW;QACX,qBAAqBF,KAAKG;QAC1B,oBAAoBH,KAAKI,cAAc;QACvC,sBAAsBJ,KAAKK,mBAAmBL,KAAKM;QACnD,CAAC,oBAAoBN,KAAKO,mBAAmB;QAC7C,uBAAuBP,KAAKQ;QAC5B,iCAAiCR,KAAKS;QACtC,mBAAmBT,KAAKU;QACxB,wBACEV,KAAKW,uBAAqBC,IAAAZ,KAAKa,oBAAc,QAAAD,WAAA,aAAAA,EAAEE,UAAS;QAC1D,6BAA6Bd,KAAKe;QAClC,qBAAqBf,KAAKgB;;AAC3B;IAGKhB,KAAAiB,iBAAiB,OAChB;MACLC,SAAW;MACX,iBAAiBlB,KAAKmB;MACtB,uBAAuBnB,KAAKoB;MAC5B,mBAAmBpB,KAAKqB;MACxB,0BAA0BrB,KAAKsB;MAC/B,uBAAuBtB,KAAKuB;MAC5B,CAAC,wBAAwBvB,KAAKwB,eAC5BxB,KAAKwB,eAAeC;MACtB,CAAC,4BAA4BzB,KAAK0B,mBAChC1B,KAAK0B,mBAAmBD;;IAItBzB,KAAA2B,cAAc,MACb3B,KAAK4B,qBACVC,EAAA;MACEC,OAAO;QACL,gBAAgB;QAChB,+BAA+B9B,KAAK+B;QACpC,4BAA4B/B,KAAKgC;QACjC,yBAAyBhC,KAAKiC;;OAGhCJ,EAAA;MAAMK,MAAK;UAEX;IAGElC,KAAAmC,SAAS,MACRnC,KAAKoC,gBACVP,EAAA;MACEC,OAAO;QACLK,QAAU;QACV,qBACEnC,KAAKqC,kBACJrC,KAAKsC,qBACNtC,KAAKuC;QACP,CAAC,mBAAmBvC,KAAKwC,kBAAkB;QAC3C,CAAC,mBAAmBxC,KAAKwC,kBAAkB;QAC3C,sBAAsBxC,KAAKyC;QAC3B,mBAAmBzC,KAAKiC;;OAG1BJ,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAMK,MAAK;SAEbL,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAMK,MAAK;WAGb;yBA7VoC;;qBAUF;yBAKE;4BAKG;4BAKA;+BAKG;8BAKD;2BAKK;0BAOF;2BAKN;wBAKH;4BAKI;oCAKQ;6BAKP;0BAKI;8BAKH;mBAKX;uBAOI;8BAKO;4BAKF;wBAKJ;sBAKCT;0BAKQA;4BAKL;8BAOE;gCAKE;+BAKD;yBAON;2BAKE;yBAKI;0BAKL;yBAWlB;6BAKI;yBAKJ;8BAKK;0BAKJ;0BAKA;yBAKD;;;;;EAQzB,iBAAAiB;IACE1C,KAAK2C;;;;;EASC,aAAAA;;IAEN,MAAMC,IAAa5C,KAAK6C,GAAGC,iBAAiB;IAC5C,IAAIF,EAAW9B,QAAQ;MACrBd,KAAK+C,gBAAgB;;;QAGvB,MAAMC,IAAiBhD,KAAK6C,GAAGC,iBAAiB;IAChD,IAAIE,EAAelC,QAAQ;MACzBd,KAAKsC,oBAAoB;;;QAG3B,MAAMW,IAAkBjD,KAAK6C,GAAGC,iBAC9B;IAEF,MAAMI,IAAkBlD,KAAK6C,GAAGC,iBAC9B;IAEF,MAAMK,IAAgBnD,KAAK6C,GAAGC,iBAC5B;IAEF,IAAII,EAAgBpC,UAAUqC,EAAcrC,QAAQ;MAClDd,KAAKoC,gBAAgB;;IAEvB,IAAIa,EAAgBnC,QAAQ;MAC1Bd,KAAK4B,qBAAqB;;;EAItB,gBAAAwB;;IAEN,KACGpD,KAAKsC,sBACLtC,KAAKoC,kBACLpC,KAAK4B,oBACN;MACA5B,KAAKM,iBAAiB;;;QAGxB,IACEN,KAAKsC,sBACJtC,KAAKa,mBACLb,KAAK+C,kBACL/C,KAAK4B,uBACL5B,KAAKoC,eACN;MACApC,KAAKqD,iBAAiB;;;QAGxB,KACGrD,KAAKsC,sBACLtC,KAAKa,mBACLb,KAAK4B,oBACN;MACA5B,KAAKqC,gBAAgB;;;;EA8EzB,MAAAiB;IACEtD,KAAKoD;IACL,MAAMG,IAAS,EACbvD,KAAKa,kBAAkBb,KAAK+C,gBAC1BlB,EAAA;MAAQC,OAAO9B,KAAKC;OACjBD,KAAKa,iBACJgB,EAAA;MACEC,OAAM;MACN0B,MAAMxD,KAAKI;MACXqD,WAAWzD,KAAK0D;OAEf1D,KAAKa,kBAEN,MACHb,KAAK+C,gBACJlB,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAMK,MAAK;UAEX,QAEJ,MACJlC,KAAKsC,oBACHT,EAAA;MAAKC,OAAO9B,KAAKiB;MAAkB0C,MAAK;OACtC9B,EAAA,iBAEA,MACJ7B,KAAK2B,eACL3B,KAAKmC;IAGP,OACEN,EAAC+B,GAAI,MACH/B,EAAA;MACEC,OAAO;QACL+B,WAAa;QACb,CAAC,sBAAsB7D,KAAK8D,oBAAoB;QAChD,6BAA6B9D,KAAK+D;QAClC,iCAAiC/D,KAAKgE;QACtC,iCAAiChE,KAAKiE;QACtC,oCAAoCjE,KAAKkE;QACzC,mCAAmClE,KAAKmE;QACxC,2BAA2BnE,KAAKqD;QAChC,yBAAyBrD,KAAK+C,kBAAkB/C,KAAKa;QACrD,yBACGb,KAAKoC,kBAAkBpC,KAAK4B;;OAGhC2B;;;;;;;;;ACjaX,MAAMa,IAAW;;MCQJC,IAAU;;;;gBAec;qBAKU;mBAKQ;2BAKQ;kBAKT;;EAEpD,iBAAA3B;IACE,IAAI1C,KAAKwD,SAAS,WAAW;MAC3BxD,KAAKsE,aAAa;WACb,IAAItE,KAAKwD,SAAS,aAAa;MACpCxD,KAAKsE,aAAa;;;EAItB,MAAAhB;IACE,OACEzB,EAAC+B,GAAI;MACH9B,OAAO;QACL,CAAC,cAAc9B,KAAKyD,cAAc;QAClC,CAAC,eAAezD,KAAKwD,SAAS;;OAGhC3B,EAAA;MAAW2B,MAAMxD,KAAKsE;MAAYb,WAAWzD,KAAKyD;OAChD5B,EAAA"}
|
|
1
|
+
{"version":3,"names":["containerCss","GxIdeContainer","this","headingClasses","heading","inactiveTitle","titleType","noHeadingBorder","hasOnlyHeading","headingJustify","noHeadingPadding","noHeadingPaddingBlockEnd","noHeadingGap","headingPaddingTop","_a","containerTitle","length","titleHeightAsInput","flexRow","contentClasses","content","flexContent","noContentPadding","noContentGap","noContentBorderTop","contentBorderEnd","alignItems","undefined","justifyContent","aboveFooter","hasAboveFooterSlot","h","class","noBorderAboveFooter","noAboveFooterPadding","slimmerFooter","name","footer","hasFooterSlot","hasOnlyFooter","hasSlottedContent","noBorderFooter","footerJustify","noFooterPadding","componentWillLoad","evaluateSlots","headerSlot","el","querySelectorAll","hasHeaderSlot","slottedContent","footerAboveSlot","footerStartSlot","footerEndSlot","evaluateSections","hasOnlyContent","render","result","type","alignment","titleAlignment","part","Host","container","sectionsPadding","displayBorder","displayBorderTop","displayBorderEnd","displayBorderBottom","displayBorderStart","titleCss","GxIdeTitle","geminiType"],"sources":["src/components/_helpers/container/container.scss?tag=gx-ide-container&encapsulation=shadow","src/components/_helpers/container/container.tsx","src/components/_helpers/title/title.scss?tag=gx-ide-title&encapsulation=shadow","src/components/_helpers/title/title.tsx"],"sourcesContent":["@import \"../../../../node_modules/@genexus/gemini/dist/gemini/globals/mixins.scss\";\n\n/*******************************\nHOST / GENERAL\n********************************/\n:host {\n --gx-ide-container-elements-spacing: var(--mer-spacing--xs);\n display: block;\n height: 100%;\n box-sizing: border-box;\n}\n.container {\n display: grid;\n height: 100%;\n grid-template-rows: auto 1fr auto;\n box-sizing: border-box;\n}\n.heading,\n.content,\n.footer,\n.footer-above {\n padding: var(--gx-ide-container__padding);\n}\n/*PADDING*/\n.container--padding-s {\n --gx-ide-container__padding: var(--mer-spacing--xs);\n}\n.container--padding-m {\n --gx-ide-container__padding: var(--mer-spacing--sm);\n}\n.container--padding-l {\n --gx-ide-container__padding: var(--mer-spacing--md);\n}\n/*BORDERS*/\n.container--display-border {\n border: 1px solid var(--gx-ide-container-border-color);\n}\n.container--display-border-top {\n border-top: 1px solid var(--gx-ide-container-border-color);\n}\n.container--display-border-end {\n border-inline-end: 1px solid var(--gx-ide-container-border-color);\n}\n.container--display-border-bottom {\n border-bottom: 1px solid var(--gx-ide-container-border-color);\n}\n.container--display-border-start {\n border-inline-start: 1px solid var(--gx-ide-container-border-color);\n}\n.container--overflow-hidden-y {\n overflow-y: hidden;\n}\n/*******************************\nHEADING\n********************************/\n.heading {\n // @include gxg-flex-justify();\n display: flex;\n flex-direction: column;\n gap: var(--gx-ide-container__padding);\n width: 100%;\n box-sizing: border-box;\n border-bottom: 1px solid var(--gx-ide-container-border-color);\n &--no-border {\n border-bottom: 0;\n }\n &--no-padding {\n padding: 0;\n }\n &--no-padding-block-end {\n padding-block-end: 0;\n }\n &--no-gap {\n gap: 0;\n }\n &--inactive {\n color: var(--gxg-color--disabled);\n }\n &--padding-top {\n padding: var(--gx-ide-container__padding) 0 0 0;\n }\n &--slimmer {\n padding-top: var(--mer-spacing--xs);\n padding-bottom: var(--mer-spacing--xs);\n }\n &--form-text-height {\n .heading__title {\n min-height: var(--gxg-form-text-height);\n justify-content: center;\n }\n }\n &--flex-row {\n flex-direction: row;\n align-items: center;\n justify-content: center;\n }\n}\n/*******************************\nCONTENT\n********************************/\n.content {\n overflow-x: auto;\n display: flex;\n flex-direction: column;\n gap: var(--gx-ide-form-items-gap);\n box-sizing: border-box;\n @include gxg-scrollbar();\n\n &--no-padding {\n padding: 0;\n }\n &--no-border-top {\n border-top: none;\n }\n &--flex {\n display: flex;\n }\n &--no-gap {\n gap: 0;\n }\n &--align-items-start {\n align-items: start;\n }\n &--align-items-center {\n align-items: center;\n }\n &--align-items-end {\n align-items: end;\n }\n &--justify-content-start {\n justify-content: start;\n }\n &--justify-content-center {\n justify-content: center;\n }\n &--justify-content-end {\n justify-content: end;\n }\n &--border-end {\n border-inline-end: 1px solid var(--gx-ide-container-border-color);\n }\n}\n/*only content*/\n.container--only-content {\n grid-template-rows: 1fr;\n}\n/*no header, but has footer*/\n.container--no-header:not(.container--only-content) {\n grid-template-rows: 1fr auto;\n}\n/*no footer, but has header*/\n.container--no-footer:not(.container--only-content) {\n grid-template-rows: auto 1fr;\n}\n/*******************************\nFOOTER\n********************************/\n/*ABOVE*/\n.footer-above {\n border-top: 1px solid var(--gx-ide-container-border-color);\n &--no-border-top {\n border-top: 0;\n }\n &--slimmer {\n padding-top: var(--mer-spacing--xs);\n padding-bottom: var(--mer-spacing--xs);\n }\n &--no-padding {\n padding: 0;\n }\n}\n/*START and END*/\n.footer {\n display: flex;\n gap: var(--gx-ide-container-elements-spacing);\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: center;\n border-top: 1px solid var(--gx-ide-container-border-color);\n &__start,\n &__end {\n display: flex;\n gap: var(--gx-ide-container-elements-spacing);\n }\n &--no-border {\n border-top: 0;\n }\n &--no-padding {\n padding: 0;\n }\n &--slimmer {\n padding-top: var(--mer-spacing--xs);\n padding-bottom: var(--mer-spacing--xs);\n }\n}\n","import { Component, Host, h, Prop, Element, State } from \"@stencil/core\";\nimport { TitleAlignment } from \"@genexus/gemini/dist/types/common/types\";\nimport { TitleType } from \"../title/title\";\n@Component({\n tag: \"gx-ide-container\",\n styleUrl: \"container.scss\",\n shadow: true\n})\nexport class GxIdeContainer {\n // 1.OWN PROPERTIES //\n\n /* GENERAL */\n\n /**\n * By setting the title to inactive, the color will be gray instead of black.\n */\n @Prop() readonly inactiveTitle: boolean = false;\n\n /**\n * The title of the container\n */\n @Prop() readonly containerTitle: string;\n\n /**\n * The title of the container\n */\n @Prop() readonly titleType: TitleType = \"primary\";\n\n /**\n * Displays a border all around the container\n */\n @Prop() readonly displayBorder: boolean = false;\n\n /**\n * Displays a border on the top\n */\n @Prop() readonly displayBorderTop: boolean = false;\n\n /**\n * Displays a border at the end\n */\n @Prop() readonly displayBorderEnd: boolean = false;\n\n /**\n * Displays a border at on the bottom\n */\n @Prop() readonly displayBorderBottom: boolean = false;\n\n /**\n * Displays a border at the start\n */\n @Prop() readonly displayBorderStart: boolean = false;\n\n /**\n * The container general padding (applies to .heading, .content, and .footer)\n */\n @Prop() readonly sectionsPadding: SectionsPadding = \"m\";\n\n /* HEADING*/\n\n /**\n * Title alignment\n */\n @Prop() readonly titleAlignment: TitleAlignment = \"center\";\n\n /**\n * Removes the border bottom from the heading\n */\n @Prop() readonly noHeadingBorder: boolean = false;\n\n /**\n * Removes the heading gap\n */\n @Prop() readonly noHeadingGap: boolean = false;\n\n /**\n * Removes the padding from the heading\n */\n @Prop() readonly noHeadingPadding: boolean = false;\n\n /**\n * Removes the padding block end from the heading\n */\n @Prop() readonly noHeadingPaddingBlockEnd: boolean = false;\n\n /**\n * Adds padding to the top of the heading\n */\n @Prop() readonly headingPaddingTop: boolean = false;\n\n /**\n * The heading justification\n */\n @Prop() readonly headingJustify: HeadingJustify = \"center\";\n\n /**\n * It forces the .heading__title min-height to be as tall as the gxg-form-text height. This is useful when you are displaying two gx-ide-container's on the same row, both of them display a title, and one of them displays a gxg-form-text in the header (usually used to filter content). Without this property set to true, the .heading without a gxg-from-text would be shorter. At the time of writing, this is used on ww-images.\n */\n @Prop() readonly titleHeightAsInput: boolean = false;\n\n /**\n * Makes the header (.heading) display flex:row, instad of the default flex:column.\n */\n @Prop() readonly flexRow: boolean = false;\n\n /* CONTENT */\n\n /**\n * Makes the content a flex container\n */\n @Prop() readonly flexContent: boolean = false;\n\n /**\n * Removes the border-top from the content\n */\n @Prop() readonly noContentBorderTop: boolean = false;\n\n /**\n * Removes the padding from the content\n */\n @Prop() readonly noContentPadding: boolean = false;\n\n /**\n * Removes the gap from the content\n */\n @Prop() readonly noContentGap: boolean = false;\n\n /**\n * Align items\n */\n @Prop() readonly alignItems: AlignItems = undefined;\n\n /**\n * Justify content\n */\n @Prop() readonly justifyContent: JustifyContent = undefined;\n\n /**\n * Display border end on the content\n */\n @Prop() readonly contentBorderEnd: boolean = false;\n\n /* FOOTER ABOVE */\n\n /**\n * Makes the above footer vertical padding slimmer\n */\n @Prop() readonly slimmerAboveFooter: boolean = false;\n\n /**\n * Removes the above padding from the footer\n */\n @Prop() readonly noAboveFooterPadding: boolean = false;\n\n /**\n * Removes the above border top\n */\n @Prop() readonly noBorderAboveFooter: boolean = false;\n\n /* FOOTER > START and FOOTER > END*/\n\n /**\n * Makes the footer vertical padding slimmer\n */\n @Prop() readonly slimmerFooter: boolean = false;\n\n /**\n * Removes the padding from the footer\n */\n @Prop() readonly noFooterPadding: boolean = false;\n\n /**\n * The footer justification\n */\n @Prop() readonly footerJustify: FooterJustify = \"end\";\n\n /**\n * Removes the border top from the footer\n */\n @Prop() readonly noBorderFooter: boolean = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeContainerElement;\n\n // 3.STATE() VARIABLES //\n\n /**\n * A boolean variable indicating if the component has or not any content for the 'header' slot\n */\n @State() hasHeaderSlot = false;\n\n /**\n * A boolean variable indicating if the component has or not any content slotted content (regular slotted content, without 'slot' attribute)\n */\n @State() hasSlottedContent = false;\n\n /**\n * A boolean variable indicating if the component has or not any content for the 'footer' slot\n */\n @State() hasFooterSlot = false;\n\n /**\n * A boolean variable indicating if the component has or not any content for the 'footer' slot\n */\n @State() hasAboveFooterSlot = false;\n\n /**\n * A boolean variable indicating that the container only has the heading section\n */\n @State() hasOnlyHeading = false;\n\n /**\n * A boolean variable indicating that the container only has the content section\n */\n @State() hasOnlyContent = false;\n\n /**\n * A boolean variable indicating that the container only has the footer section\n */\n @State() hasOnlyFooter = false;\n\n // 4.PUBLIC PROPERTY API //\n\n // 5.EVENTS (EMIT) //\n\n // 6.COMPONENT LIFECYCLE EVENTS //\n\n componentWillLoad() {\n this.evaluateSlots();\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n private evaluateSlots() {\n // header\n const headerSlot = this.el.querySelectorAll(':scope > [slot=\"header\"]');\n if (headerSlot.length) {\n this.hasHeaderSlot = true;\n }\n // content\n const slottedContent = this.el.querySelectorAll(\":scope > :not([slot])\");\n if (slottedContent.length) {\n this.hasSlottedContent = true;\n }\n // footer\n const footerAboveSlot = this.el.querySelectorAll(\n ':scope > [slot=\"footer-above\"]'\n );\n const footerStartSlot = this.el.querySelectorAll(\n ':scope > [slot=\"footer-start\"]'\n );\n const footerEndSlot = this.el.querySelectorAll(\n ':scope > [slot=\"footer-end\"]'\n );\n if (footerStartSlot.length || footerEndSlot.length) {\n this.hasFooterSlot = true;\n }\n if (footerAboveSlot.length) {\n this.hasAboveFooterSlot = true;\n }\n }\n\n private evaluateSections() {\n // has only heading\n if (\n !this.hasSlottedContent &&\n !this.hasFooterSlot &&\n !this.hasAboveFooterSlot\n ) {\n this.hasOnlyHeading = true;\n }\n // has only content\n if (\n this.hasSlottedContent &&\n !this.containerTitle &&\n !this.hasHeaderSlot &&\n !this.hasAboveFooterSlot &&\n !this.hasFooterSlot\n ) {\n this.hasOnlyContent = true;\n }\n // has only footer\n if (\n !this.hasSlottedContent &&\n !this.containerTitle &&\n !this.hasAboveFooterSlot\n ) {\n this.hasOnlyFooter = true;\n }\n }\n\n private headingClasses = (): string | { [className: string]: boolean } => {\n return {\n \"heading\": true,\n \"heading--inactive\": this.inactiveTitle,\n \"heading--slimmer\": this.titleType === \"secondary\",\n \"heading--no-border\": this.noHeadingBorder || this.hasOnlyHeading,\n [`heading--justify-${this.headingJustify}`]: true,\n \"heading--no-padding\": this.noHeadingPadding,\n \"heading--no-padding-block-end\": this.noHeadingPaddingBlockEnd,\n \"heading--no-gap\": this.noHeadingGap,\n \"heading--padding-top\":\n this.headingPaddingTop && this.containerTitle?.length > 0,\n \"heading--form-text-height\": this.titleHeightAsInput,\n \"heading--flex-row\": this.flexRow\n };\n };\n\n private contentClasses = (): string | { [className: string]: boolean } => {\n return {\n \"content\": true,\n \"content--flex\": this.flexContent,\n \"content--no-padding\": this.noContentPadding,\n \"content--no-gap\": this.noContentGap,\n \"content--no-border-top\": this.noContentBorderTop,\n \"content--border-end\": this.contentBorderEnd,\n [`content--align-items-${this.alignItems}`]:\n this.alignItems !== undefined,\n [`content--justify-content-${this.justifyContent}`]:\n this.justifyContent !== undefined\n };\n };\n\n private aboveFooter = (): any | null => {\n return this.hasAboveFooterSlot ? (\n <footer\n class={{\n \"footer-above\": true,\n \"footer-above--no-border-top\": this.noBorderAboveFooter,\n \"footer-above--no-padding\": this.noAboveFooterPadding,\n \"footer-above--slimmer\": this.slimmerFooter\n }}\n >\n <slot name=\"footer-above\"></slot>\n </footer>\n ) : null;\n };\n\n private footer = (): any | null => {\n return this.hasFooterSlot ? (\n <footer\n class={{\n \"footer\": true,\n \"footer--no-border\":\n this.hasOnlyFooter ||\n !this.hasSlottedContent ||\n this.noBorderFooter,\n [`footer--justify-${this.footerJustify}`]: true,\n [`footer--justify-${this.footerJustify}`]: true,\n \"footer--no-padding\": this.noFooterPadding,\n \"footer--slimmer\": this.slimmerFooter\n }}\n >\n <div class=\"footer__start\">\n <slot name=\"footer-start\"></slot>\n </div>\n <div class=\"footer__end\">\n <slot name=\"footer-end\"></slot>\n </div>\n </footer>\n ) : null;\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n this.evaluateSections();\n const result = [\n this.containerTitle || this.hasHeaderSlot ? (\n <header class={this.headingClasses()}>\n {this.containerTitle ? (\n <gx-ide-title\n class=\"heading__title\"\n type={this.titleType}\n alignment={this.titleAlignment as any}\n >\n {this.containerTitle}\n </gx-ide-title>\n ) : null}\n {this.hasHeaderSlot ? (\n <div class=\"heading__inner-wrapper\">\n <slot name=\"header\"></slot>\n </div>\n ) : null}\n </header>\n ) : null,\n this.hasSlottedContent ? (\n <div class={this.contentClasses()} part=\"content\">\n <slot></slot>\n </div>\n ) : null,\n this.aboveFooter(),\n this.footer()\n ];\n\n return (\n <Host>\n <div\n class={{\n \"container\": true,\n [`container--padding-${this.sectionsPadding}`]: true,\n \"container--display-border\": this.displayBorder,\n \"container--display-border-top\": this.displayBorderTop,\n \"container--display-border-end\": this.displayBorderEnd,\n \"container--display-border-bottom\": this.displayBorderBottom,\n \"container--display-border-start\": this.displayBorderStart,\n \"container--only-content\": this.hasOnlyContent,\n \"container--no-header\": !this.hasHeaderSlot && !this.containerTitle,\n \"container--no-footer\":\n !this.hasFooterSlot && !this.hasAboveFooterSlot\n }}\n >\n {result}\n </div>\n </Host>\n );\n }\n}\n\nexport type HeadingJustify = \"start\" | \"center\" | \"end\";\nexport type FooterJustify = \"start\" | \"center\" | \"end\";\nexport type SectionsPadding = \"s\" | \"m\" | \"l\";\nexport type AlignItems = \"start\" | \"center\" | \"end\";\nexport type JustifyContent = \"start\" | \"center\" | \"end\";\n",":host {\n --gx-ide-title-padding: var(--gx-ide-container--padding, --mer-spacing--sm);\n display: flex;\n flex-direction: column;\n color: var(--gx-ide-component-text-color);\n font-family: var(--mer-font-family--primary);\n line-height: 1.6em;\n background-color: transparent;\n padding: 0;\n}\n/*alignment*/\n:host(.alignment--start) {\n align-items: start;\n}\n:host(.alignment--center) {\n align-items: center;\n}\n/*padding*/\n:host(.alignment--start) {\n text-align: start;\n}\n:host([padding]) {\n padding: var(--gx-ide-title-padding);\n}\n:host([no-padding-bottom]) {\n padding-bottom: 0;\n}\n/*border*/\n:host([border]) {\n border-bottom: 1px solid var(--gx-ide-container-border-color);\n}\n/*type*/\n:host(.title-type--primary) {\n}\n:host(.title-type--secondary) {\n //a little subtle\n color: var(--gray-06);\n}\n","import { Component, Host, h, Prop } from \"@stencil/core\";\nimport { TitleType as GeminiTitleType } from \"@genexus/gemini/dist/types/components/title/title\";\n\n@Component({\n tag: \"gx-ide-title\",\n styleUrl: \"title.scss\",\n shadow: true\n})\nexport class GxIdeTitle {\n /**\n * Description: This helper component has been created for using as a title for the dialogs sections.\n */\n\n private geminiType: GeminiTitleType;\n\n /**\n * The title caption (the title)\n */\n @Prop() readonly titleCaption: string;\n\n /**\n * The title caption (the title)\n */\n @Prop() readonly type: TitleType = \"primary\";\n\n /**\n * The title alignment\n */\n @Prop() readonly alignment: TitleAlignment = \"start\";\n\n /**\n * Disables the padding\n */\n @Prop({ reflect: true }) readonly padding: boolean = false;\n\n /**\n * Disables the padding on the bottom\n */\n @Prop({ reflect: true }) readonly noPaddingBottom: boolean = false;\n\n /**\n * Displays a border on the bottom\n */\n @Prop({ reflect: true }) readonly border: boolean = false;\n\n componentWillLoad() {\n if (this.type === \"primary\") {\n this.geminiType = \"title-04\";\n } else if (this.type === \"secondary\") {\n this.geminiType = \"title-05\";\n }\n }\n\n render() {\n return (\n <Host\n class={{\n [`alignment--${this.alignment}`]: true,\n [`title-type--${this.type}`]: true\n }}\n >\n <gxg-title type={this.geminiType} alignment={this.alignment}>\n <slot></slot>\n </gxg-title>\n </Host>\n );\n }\n}\n\nexport type TitleType = \"primary\" | \"secondary\";\n\nexport type TitleAlignment = \"start\" | \"center\";\n"],"mappings":"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"}
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import { r, h as e, H as a, g as t } from "./p-aaed592c.js";
|
|
2
2
|
|
|
3
|
-
const o = ":root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-01--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-02{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-02--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--color-on-primary)}.gxg-title-03{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-03--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-04{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-04--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-05{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-05--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable)}.gxg-text--negative{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text--gray{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--dimmed)}.gxg-quote{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);font-style:italic}.gxg-quote--negative{color:var(--ds-base-font-color--negative)}.gxg-link{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--ds-base-font-color--link-hover)}.gxg-link:active{color:var(--ds-base-font-color--link-active)}.gxg-link-gray{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed)}.gxg-link-gray:hover{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed);filter:brightness(1.4)}.gxg-alert-error{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--error);display:inline-block}.gxg-alert-warning{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--warning);display:inline-block}.gxg-alert-success{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--success);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--ds-base-font-family-primary);font-weight:var(--gxg-label-font-weight);font-size:var(--gxg-label-font-size);color:var(--gxg-label-color);text-align:center;line-height:1.455em;display:flex;align-items:center}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gxg-scrollbar::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}:host{display:grid;block-size:100%}.card-regular{background-color:var(--mer-surface__elevation--01);border:var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01);border-radius:var(--mer-border__radius--md);padding:var(--mer-spacing--md) var(--mer-spacing--md);display:grid}.card-small{background-color:var(--mer-surface__elevation--02);border-radius:var(--mer-border__radius--sm);padding:var(--mer-spacing--sm) var(--mer-spacing--sm)}.card-small--actionable:hover{background-color:var(--mer-color__neutral-gray--600)}.card-small--actionable:active{background-color:var(--mer-color__neutral-gray--650)}.card-small:focus-visible{outline:var(--focus__outline-width) var(--focus__outline-style) var(--focus__outline-color);outline-offset:var(--focus__outline-offset)}.empty-state{block-size:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--mer-spacing--sm);text-align:center}.empty-state__title,.empty-state__button,.empty-state__link{max-inline-size:300px}.opacity-0{opacity:0}.opacity-1{opacity:1}.display-contents{display:contents}.gxi-hidden{display:none !important}.gxi-full-height{height:100%}.gxi-overflow-auto{overflow:auto}.gxi-display-flex{display:flex}.align-start{display:flex;align-items:start}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}.justify-start{display:flex;justify-content:start}.justify-center{display:flex;justify-content:center}.justify-end{display:flex;justify-content:end}.grid{display:grid;grid-row-gap:var(--gx-ide-grid-row-gap);grid-column-gap:var(--gx-ide-grid-column-gap);grid-template-rows:auto}ch-grid-cell{display:flex}ch-grid{overflow:auto;height:100%}ch-grid-column{z-index:99;border-bottom:1px solid var(--mer-color__neutral-gray--800)}ch-grid-column:first-child{padding-inline-start:var(--gx-ide-container__padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gx-ide-container__padding) !important}ch-grid-cell{--mer-spacing--xs:var(--gx-ide-container__padding)}.layout{display:grid;gap:var(--mer-spacing--lg);box-sizing:border-box}.layout--two-cols{grid-template-columns:1fr 1fr}.layout--space-above{padding-block-start:var(--mer-spacing--lg)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}:host(:focus-within) gx-ide-top-bar::part(wrapper){background-color:var(--color-secondary-enabled)}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--mer-font__weight--regular);font-size:var(--mer-font__size--xs);font-family:var(--mer-font-family--primary);height:100%;background-color:var(--gx-ide-component-background-color);display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.gx-ide-main{flex-grow:1;overflow-y:auto;}.gx-ide-main::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-main::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-main::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-main::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-overflow::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.tree-view-primary{font-size:var(--mer-font__size--2xs)}p{margin:0;font-size:var(--mer-font__size--xxs)}.buttons-container{display:flex;gap:var(--mer-spacing--xs)}:host{display:flex;align-items:center;justify-content:center;text-align:center;animation:fadeIn var(--mer-timing--fast) forwards;inline-size:100%;position:relative;inset-block-start:0}.main-container{max-width:320px;margin:0 auto;gap:var(--mer-spacing--md);padding:var(--mer-spacing--md)}.main-container__icon-wrapper{border:var(--mer-border__width--sm) dashed var(--mer-accent__primary);border-radius:50%;min-width:40px;min-height:40px;display:flex;align-items:center;justify-content:center}.main-container__content{gap:var(--mer-spacing--sm)}.main-container,.main-container__content{display:flex;align-items:center;flex-direction:column}@keyframes fadeIn{0%{opacity:0;inset-block-start:5px}}";
|
|
3
|
+
const o = ":root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-01--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-02{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-02--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--color-on-primary)}.gxg-title-03{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-03--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-04{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-04--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-05{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-05--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable)}.gxg-text--negative{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text--gray{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--dimmed)}.gxg-quote{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);font-style:italic}.gxg-quote--negative{color:var(--ds-base-font-color--negative)}.gxg-link{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--ds-base-font-color--link-hover)}.gxg-link:active{color:var(--ds-base-font-color--link-active)}.gxg-link-gray{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed)}.gxg-link-gray:hover{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed);filter:brightness(1.4)}.gxg-alert-error{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--error);display:inline-block}.gxg-alert-warning{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--warning);display:inline-block}.gxg-alert-success{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--success);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--ds-base-font-family-primary);font-weight:var(--gxg-label-font-weight);font-size:var(--gxg-label-font-size);color:var(--gxg-label-color);text-align:center;line-height:1.455em;display:flex;align-items:center}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gxg-scrollbar::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}:host{display:grid;block-size:100%}.card-regular{background-color:var(--mer-surface__elevation--01);border:var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01);border-radius:var(--mer-border__radius--md);padding:var(--mer-spacing--md) var(--mer-spacing--md);display:grid}.card-small{background-color:var(--mer-surface__elevation--02);border-radius:var(--mer-border__radius--sm);padding:var(--mer-spacing--sm) var(--mer-spacing--sm)}.card-small--actionable:hover{background-color:var(--mer-color__neutral-gray--600)}.card-small--actionable:active{background-color:var(--mer-color__neutral-gray--650)}.card-small:focus-visible{outline:var(--focus__outline-width) var(--focus__outline-style) var(--focus__outline-color);outline-offset:var(--focus__outline-offset)}.empty-state{block-size:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--mer-spacing--sm);text-align:center}.empty-state__title,.empty-state__button,.empty-state__link{max-inline-size:300px}.opacity-0{opacity:0}.opacity-1{opacity:1}.display-contents{display:contents}.gxi-hidden{display:none !important}.gxi-full-height{height:100%}.gxi-overflow-auto{overflow:auto}.gxi-display-flex{display:flex}.align-start{display:flex;align-items:start}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}.justify-start{display:flex;justify-content:start}.justify-center{display:flex;justify-content:center}.justify-end{display:flex;justify-content:end}.grid{display:grid;grid-row-gap:var(--gx-ide-grid-row-gap);grid-column-gap:var(--gx-ide-grid-column-gap);grid-template-rows:auto}ch-grid-cell{display:flex}ch-grid{overflow:auto;height:100%}ch-grid-column{z-index:99;border-bottom:1px solid var(--mer-color__neutral-gray--800)}ch-grid-column:first-child{padding-inline-start:var(--gx-ide-container__padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gx-ide-container__padding) !important}ch-grid-cell{--mer-spacing--xs:var(--gx-ide-container__padding)}.layout{display:grid;gap:var(--mer-spacing--lg);box-sizing:border-box}.layout--two-cols{grid-template-columns:1fr 1fr}.layout--space-above{padding-block-start:var(--mer-spacing--lg)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}:host(:focus-within) gx-ide-top-bar::part(wrapper){background-color:var(--color-secondary-enabled)}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--mer-font__weight--regular);font-size:var(--mer-font__size--xs);font-family:var(--mer-font-family--primary);height:100%;background-color:var(--gx-ide-component-background-color);display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.gx-ide-main{flex-grow:1;overflow-y:auto;}.gx-ide-main::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-main::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-main::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-main::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-overflow::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.tree-view-primary{font-size:var(--mer-font__size--2xs)}p{margin:0;font-size:var(--mer-font__size--xxs)}.buttons-container{display:flex;gap:var(--mer-spacing--xs)}:host{display:flex;align-items:center;justify-content:center;text-align:center;inline-size:100%;position:relative}:host(.animate){animation:fadeIn var(--mer-timing--fast) forwards;inset-block-start:0}.main-container{max-width:320px;margin:0 auto;gap:var(--mer-spacing--md);padding:var(--mer-spacing--md)}.main-container__icon-wrapper{border:var(--mer-border__width--sm) dashed var(--mer-accent__primary);border-radius:50%;min-width:40px;min-height:40px;display:flex;align-items:center;justify-content:center;pointer-events:none}.main-container__content{gap:var(--mer-spacing--sm)}.main-container,.main-container__content{display:flex;align-items:center;flex-direction:column}@keyframes fadeIn{0%{opacity:0;inset-block-start:5px}}";
|
|
4
4
|
|
|
5
5
|
const i = [ "resets/box-sizing", "components/button", "components/icon", "utils/typography" ];
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const s = class {
|
|
8
8
|
constructor(e) {
|
|
9
9
|
r(this, e);
|
|
10
|
+
this.isAnimated = false;
|
|
10
11
|
this.stateDescription = undefined;
|
|
11
12
|
this.stateIconSrc = undefined;
|
|
12
13
|
this.stateTitle = undefined;
|
|
13
14
|
}
|
|
14
15
|
render() {
|
|
15
|
-
return e(a,
|
|
16
|
+
return e(a, {
|
|
17
|
+
class: {
|
|
18
|
+
animate: this.isAnimated
|
|
19
|
+
}
|
|
20
|
+
}, e("ch-theme", {
|
|
16
21
|
model: i
|
|
17
22
|
}), e("article", {
|
|
18
23
|
class: "main-container"
|
|
@@ -34,7 +39,7 @@ const l = class {
|
|
|
34
39
|
}
|
|
35
40
|
};
|
|
36
41
|
|
|
37
|
-
|
|
42
|
+
s.style = o;
|
|
38
43
|
|
|
39
|
-
export {
|
|
40
|
-
//# sourceMappingURL=p-
|
|
44
|
+
export { s as gx_ide_empty_state };
|
|
45
|
+
//# sourceMappingURL=p-885302c2.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["gxIdeEmptyStateCss","CSS_BUNDLES","GxIdeEmptyState","render","h","Host","class","animate","this","isAnimated","model","stateIconSrc","src","stateTitle","stateDescription"],"sources":["src/components/_helpers/empty-state/gx-ide-empty-state.scss?tag=gx-ide-empty-state&encapsulation=shadow","src/components/_helpers/empty-state/gx-ide-empty-state.tsx"],"sourcesContent":["@import \"../../../global/gx-ide-common.scss\";\n\n:host {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n inline-size: 100%;\n position: relative;\n}\n:host(.animate) {\n animation: fadeIn var(--mer-timing--fast) forwards;\n inset-block-start: 0;\n}\n.main-container {\n max-width: 320px;\n margin: 0 auto;\n gap: var(--mer-spacing--md);\n padding: var(--mer-spacing--md);\n\n &__icon-wrapper {\n border: var(--mer-border__width--sm) dashed var(--mer-accent__primary);\n border-radius: 50%;\n min-width: 40px;\n min-height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n }\n\n &__content {\n gap: var(--mer-spacing--sm);\n }\n}\n.main-container,\n.main-container__content {\n display: flex;\n align-items: center;\n flex-direction: column;\n}\n\n@keyframes fadeIn {\n 0% {\n opacity: 0;\n inset-block-start: 5px;\n }\n}\n","import { Component, Host, h, Prop, Element } from \"@stencil/core\";\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/icon\",\n \"utils/typography\"\n];\n\n@Component({\n tag: \"gx-ide-empty-state\",\n styleUrl: \"gx-ide-empty-state.scss\",\n shadow: true\n})\nexport class GxIdeEmptyState {\n @Element() el: HTMLGxIdeEmptyStateElement;\n\n /**\n * Includes a subtle entry animation\n */\n // eslint-disable-next-line @stencil-community/reserved-member-names\n @Prop() readonly isAnimated: boolean = false;\n\n /**\n * The state description\n */\n @Prop() readonly stateDescription?: string;\n\n /**\n * The state icon\n */\n @Prop() readonly stateIconSrc?: string;\n\n /**\n * The state title\n */\n @Prop() readonly stateTitle!: string;\n\n render() {\n return (\n <Host class={{ animate: this.isAnimated }}>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <article class=\"main-container\">\n {this.stateIconSrc && (\n <span class=\"main-container__icon-wrapper\">\n <ch-image src={this.stateIconSrc} class=\"icon-md\"></ch-image>\n </span>\n )}\n <div class=\"main-container__content\">\n {this.stateTitle && (\n <h2 class=\"text-body-regular-m\">{this.stateTitle}</h2>\n )}\n {this.stateDescription && (\n <p class=\"text-body-regular-s\">{this.stateDescription}</p>\n )}\n </div>\n <slot></slot>\n </article>\n </Host>\n );\n }\n}\n"],"mappings":";;AAAA,MAAMA,IAAqB;;ACG3B,MAAMC,IAA8B,EAClC,qBACA,qBACA,mBACA;;MAQWC,IAAe;;;sBAOa;;;;;EAiBvC,MAAAC;IACE,OACEC,EAACC,GAAI;MAACC,OAAO;QAAEC,SAASC,KAAKC;;OAC3BL,EAAA;MAAUM,OAAOT;QACjBG,EAAA;MAASE,OAAM;OACZE,KAAKG,gBACJP,EAAA;MAAME,OAAM;OACVF,EAAA;MAAUQ,KAAKJ,KAAKG;MAAcL,OAAM;SAG5CF,EAAA;MAAKE,OAAM;OACRE,KAAKK,cACJT,EAAA;MAAIE,OAAM;OAAuBE,KAAKK,aAEvCL,KAAKM,oBACJV,EAAA;MAAGE,OAAM;OAAuBE,KAAKM,oBAGzCV,EAAA"}
|
|
@@ -23,54 +23,56 @@ var g = undefined && undefined.__classPrivateFieldSet || function(n, e, t, r, a)
|
|
|
23
23
|
return r === "a" ? a.call(n, t) : a ? a.value = t : e.set(n, t), t;
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
var f, h, b, v, m, p, u, y, x, w;
|
|
26
|
+
var f, h, b, v, m, p, u, y, x, w, k;
|
|
27
27
|
|
|
28
|
-
const
|
|
28
|
+
const _ = [ "resets/box-sizing", "utils/typography", "utils/layout", "components/edit", "components/icon", "components/button", "chameleon/scrollbar" ];
|
|
29
29
|
|
|
30
|
-
const
|
|
30
|
+
const z = a({
|
|
31
31
|
category: "objects",
|
|
32
32
|
name: "knowledge-base"
|
|
33
33
|
});
|
|
34
34
|
|
|
35
|
-
const
|
|
35
|
+
const T = a({
|
|
36
36
|
category: "system",
|
|
37
37
|
name: "folder",
|
|
38
38
|
colorType: "on-elevation"
|
|
39
39
|
});
|
|
40
40
|
|
|
41
|
-
const
|
|
41
|
+
const M = class {
|
|
42
42
|
constructor(t) {
|
|
43
43
|
n(this, t);
|
|
44
44
|
f.set(this, void 0);
|
|
45
45
|
h.set(this, "");
|
|
46
|
-
b.set(this,
|
|
46
|
+
b.set(this, {});
|
|
47
|
+
// Object to store kbs refs
|
|
48
|
+
v.set(this, (() => {
|
|
47
49
|
var n;
|
|
48
50
|
if (((n = this.kbs) === null || n === void 0 ? void 0 : n.length) > 0) {
|
|
49
|
-
return d(this,
|
|
51
|
+
return d(this, x, "f").call(this);
|
|
50
52
|
} else {
|
|
51
53
|
return e("gx-ide-empty-state", {
|
|
52
54
|
class: "kbs-empty-state",
|
|
53
|
-
stateIconSrc:
|
|
55
|
+
stateIconSrc: T,
|
|
54
56
|
stateTitle: this._componentLocale.emptyState.title,
|
|
55
57
|
stateDescription: this._componentLocale.emptyState.description
|
|
56
58
|
});
|
|
57
59
|
}
|
|
58
60
|
}));
|
|
59
|
-
|
|
61
|
+
m.set(this, (() => {
|
|
60
62
|
this.filteredKbs = this.kbs.filter((n => {
|
|
61
63
|
var e;
|
|
62
64
|
return (e = n.name) === null || e === void 0 ? void 0 : e.toLowerCase().includes(d(this, h, "f"));
|
|
63
65
|
}));
|
|
64
66
|
}));
|
|
65
|
-
|
|
67
|
+
p.set(this, (async () => new Promise((async n => {
|
|
66
68
|
this.news = await this.getNewsCallback();
|
|
67
69
|
n(this.news);
|
|
68
70
|
}))));
|
|
69
|
-
|
|
70
|
-
const e = n.
|
|
71
|
+
u.set(this, (async n => {
|
|
72
|
+
const e = n.currentTarget.id;
|
|
71
73
|
await this.openKbCallback(e);
|
|
72
74
|
}));
|
|
73
|
-
|
|
75
|
+
y.set(this, (n => {
|
|
74
76
|
var t, r;
|
|
75
77
|
const a = s(n.lastOpenedDate, "pretty");
|
|
76
78
|
const o = a ? `${this._componentLocale.recentKbs.lastOpened} ${a}` : null;
|
|
@@ -86,35 +88,37 @@ const T = class {
|
|
|
86
88
|
id: n.id,
|
|
87
89
|
key: n.id,
|
|
88
90
|
type: "button",
|
|
89
|
-
|
|
91
|
+
ref: e => d(this, b, "f")[n.id] = e,
|
|
92
|
+
onClick: d(this, u, "f")
|
|
90
93
|
}, e("div", {
|
|
91
94
|
class: "card-kb__left-col"
|
|
92
95
|
}, e("ch-image", {
|
|
93
|
-
src:
|
|
94
|
-
class: "icon-md"
|
|
96
|
+
src: z,
|
|
97
|
+
class: "icon-md",
|
|
98
|
+
containerRef: d(this, b, "f")[n.id]
|
|
95
99
|
}), e("h2", {
|
|
96
100
|
class: i.headingsClasses.cardSmall
|
|
97
101
|
}, l(n.name, d(this, h, "f")))), o && e("div", {
|
|
98
102
|
class: "card-kb__right-col"
|
|
99
103
|
}, o)));
|
|
100
104
|
}));
|
|
101
|
-
|
|
105
|
+
x.set(this, (() => {
|
|
102
106
|
var n;
|
|
103
107
|
if (this.filteredKbs.length) {
|
|
104
108
|
return e("div", {
|
|
105
109
|
class: "kbs-container scrollable"
|
|
106
|
-
}, (n = this.filteredKbs) === null || n === void 0 ? void 0 : n.map(d(this,
|
|
110
|
+
}, (n = this.filteredKbs) === null || n === void 0 ? void 0 : n.map(d(this, y, "f")));
|
|
107
111
|
}
|
|
108
112
|
return e("gx-ide-empty-state", {
|
|
109
|
-
stateIconSrc:
|
|
113
|
+
stateIconSrc: z,
|
|
110
114
|
stateTitle: this._componentLocale.recentKbs.noKbsFiltered.title
|
|
111
115
|
});
|
|
112
116
|
}));
|
|
113
|
-
|
|
117
|
+
w.set(this, (n => {
|
|
114
118
|
g(this, h, n.target.value.toLowerCase(), "f");
|
|
115
|
-
d(this,
|
|
119
|
+
d(this, m, "f").call(this);
|
|
116
120
|
}));
|
|
117
|
-
|
|
121
|
+
k.set(this, (n => {
|
|
118
122
|
this.newsFilterValue = n.target.value.toLowerCase();
|
|
119
123
|
}));
|
|
120
124
|
this.displayKbsFilter = true;
|
|
@@ -141,7 +145,7 @@ const T = class {
|
|
|
141
145
|
}
|
|
142
146
|
kbsChanged(n) {
|
|
143
147
|
this.loadingKbs = false;
|
|
144
|
-
d(this,
|
|
148
|
+
d(this, m, "f").call(this);
|
|
145
149
|
if ((n === null || n === void 0 ? void 0 : n.length) >= this.kbsFilterThreshold) {
|
|
146
150
|
this.displayKbsFilter = true;
|
|
147
151
|
} else {
|
|
@@ -160,7 +164,7 @@ const T = class {
|
|
|
160
164
|
return e(t, {
|
|
161
165
|
class: "start-page-host"
|
|
162
166
|
}, e("ch-theme", {
|
|
163
|
-
model:
|
|
167
|
+
model: _
|
|
164
168
|
}), e("div", {
|
|
165
169
|
class: "layout layout-main layout--cols-2"
|
|
166
170
|
}, e("div", {
|
|
@@ -178,14 +182,14 @@ const T = class {
|
|
|
178
182
|
type: "text",
|
|
179
183
|
class: "form-input recent-kbs__name-filter",
|
|
180
184
|
placeholder: this._componentLocale.recentKbs.placeholder,
|
|
181
|
-
onInput: d(this,
|
|
185
|
+
onInput: d(this, w, "f"),
|
|
182
186
|
ref: n => g(this, f, n, "f"),
|
|
183
187
|
disabled: !(((n = this.kbs) === null || n === void 0 ? void 0 : n.length) > 0)
|
|
184
188
|
})), this.loadingKbs ? e("gx-ide-loader", {
|
|
185
189
|
loaderTitle: this._componentLocale.recentKbs.loader.title,
|
|
186
190
|
description: this._componentLocale.recentKbs.loader.description,
|
|
187
191
|
show: true
|
|
188
|
-
}) : d(this,
|
|
192
|
+
}) : d(this, v, "f").call(this))), e("div", {
|
|
189
193
|
class: "layout__panel panel-recent-news"
|
|
190
194
|
}, e("section", {
|
|
191
195
|
class: "card-regular recent-news"
|
|
@@ -197,10 +201,10 @@ const T = class {
|
|
|
197
201
|
type: "text",
|
|
198
202
|
class: "form-input recent-news__filter",
|
|
199
203
|
placeholder: this._componentLocale.recentNews.inputPlaceholder,
|
|
200
|
-
onInput: ((r = this.news) === null || r === void 0 ? void 0 : r.length) > 0 ? d(this,
|
|
204
|
+
onInput: ((r = this.news) === null || r === void 0 ? void 0 : r.length) > 0 ? d(this, k, "f") : null,
|
|
201
205
|
disabled: !(((a = this.news) === null || a === void 0 ? void 0 : a.length) > 0)
|
|
202
206
|
})), e("gx-ide-recent-news", {
|
|
203
|
-
getNewsCallback: d(this,
|
|
207
|
+
getNewsCallback: d(this, p, "f"),
|
|
204
208
|
openNewsCallback: this.openNewsCallback,
|
|
205
209
|
filterValue: this.newsFilterValue
|
|
206
210
|
})))));
|
|
@@ -220,9 +224,10 @@ const T = class {
|
|
|
220
224
|
};
|
|
221
225
|
|
|
222
226
|
f = new WeakMap, h = new WeakMap, b = new WeakMap, v = new WeakMap, m = new WeakMap,
|
|
223
|
-
p = new WeakMap, u = new WeakMap, y = new WeakMap, x = new WeakMap, w = new WeakMap
|
|
227
|
+
p = new WeakMap, u = new WeakMap, y = new WeakMap, x = new WeakMap, w = new WeakMap,
|
|
228
|
+
k = new WeakMap;
|
|
224
229
|
|
|
225
|
-
|
|
230
|
+
M.style = c;
|
|
226
231
|
|
|
227
|
-
export {
|
|
228
|
-
//# sourceMappingURL=p-
|
|
232
|
+
export { M as gx_ide_start_page };
|
|
233
|
+
//# sourceMappingURL=p-8ff5da93.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["startPageCss","CSS_BUNDLES","KB_ICON","getIconPath","category","name","FOLDER_ICON","colorType","GxIdeStartPage","_GxIdeStartPage_recentKbsFilter","set","this","_GxIdeStartPage_kbsFilterValue","_GxIdeStartPage_kbRefs","_GxIdeStartPage_evaluateRenderKbs","_a","kbs","length","__classPrivateFieldGet","_GxIdeStartPage_renderKbs","call","h","class","stateIconSrc","stateTitle","_componentLocale","emptyState","title","stateDescription","description","_GxIdeStartPage_filterKbs","filteredKbs","filter","kb","toLowerCase","includes","_GxIdeStartPage_getNewsCallbackRecentNews","async","Promise","resolve","news","getNewsCallback","_GxIdeStartPage_openKbHandler","e","kbId","currentTarget","id","openKbCallback","_GxIdeStartPage_renderKb","formattedDate","formatDate","lastOpenedDate","dateCaption","recentKbs","lastOpened","toLocaleLowerCase","_b","key","type","ref","el","onClick","src","containerRef","config","headingsClasses","cardSmall","hiChar","map","noKbsFiltered","_GxIdeStartPage_searchKbsInputHandler","event","__classPrivateFieldSet","target","value","_GxIdeStartPage_searchNewsInputHandler","newsFilterValue","watchNews","newsFilterThreshold","displayNewsFilter","kbsChanged","loadingKbs","kbsFilterThreshold","displayKbsFilter","componentWillLoad","Locale","getComponentStrings","componentDidLoad","focus","render","Host","model","cardRegular","placeholder","onInput","disabled","loaderTitle","loader","show","recentNews","inputPlaceholder","_c","openNewsCallback","filterValue"],"sources":["src/components/start-page/start-page.scss?tag=gx-ide-start-page&encapsulation=shadow","src/components/start-page/start-page.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../global/reset.scss\";\n\n@include hiChar();\n\n:host {\n overflow: auto;\n container-type: inline-size;\n container-name: host;\n}\n\n.layout-main,\n.layout__panel {\n block-size: 100%;\n overflow: auto;\n}\n@container host (max-width: 768px) {\n .layout.layout-main {\n grid-template-columns: 1fr;\n grid-template-rows: 1fr 1fr;\n }\n}\n\n// recent kb's\n.panel-recent-kbs {\n position: relative;\n}\n.recent-kbs,\n.recent-news {\n display: grid;\n grid-template-rows: auto 1fr;\n gap: var(--mer-spacing--md);\n overflow: auto;\n\n &__header {\n display: grid;\n gap: var(--mer-spacing--md);\n }\n}\n\n.kbs-container {\n display: grid;\n gap: var(--mer-spacing--xs);\n overflow: auto;\n grid-auto-rows: max-content;\n container-type: inline-size;\n container-name: kb-container;\n animation: fadeIn var(--mer-timing--super-fast) forwards linear;\n}\n\n.card-kb {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mer-spacing--lg);\n container-type: inline-size;\n container-name: card-kb;\n\n &__left-col {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--sm);\n }\n}\n@container kb-container (max-width: 360px) {\n .card-kb {\n align-items: center;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n justify-content: start;\n }\n}\n\n// recent news\ngx-ide-recent-news {\n overflow: auto;\n}\n.panel-recent-news {\n position: relative;\n}\n\n@keyframes exactMatchBright {\n 100% {\n filter: brightness(1.25);\n }\n}\n.exact-match-bright {\n animation: exactMatchBright var(--mer-timing--super-fast) ease-in-out 4\n alternate;\n}\n\ngx-ide-loader::part(loader-wrapper) {\n border: var(--mer-border__width--sm) solid\n var(--mer-border-color__on-elevation--01);\n border-radius: var(--mer-border__radius--md);\n}\n\n@keyframes fadeIn {\n 0% {\n opacity: 0;\n }\n}\n","/* STENCIL IMPORTS */\nimport { Component, Host, h, Prop, Element, State, Watch } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { config } from \"../../common/config\";\nimport { formatDate, hiChar } from \"../../common/helpers\";\nimport { ChEditCustomEvent } from \"@genexus/chameleon-controls-library\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/layout\",\n \"components/edit\",\n \"components/icon\",\n \"components/button\",\n \"chameleon/scrollbar\"\n];\n\nconst KB_ICON = getIconPath({\n category: \"objects\",\n name: \"knowledge-base\"\n});\nconst FOLDER_ICON = getIconPath({\n category: \"system\",\n name: \"folder\",\n colorType: \"on-elevation\"\n});\n\n@Component({\n tag: \"gx-ide-start-page\",\n styleUrl: \"start-page.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/start-page\"]\n})\nexport class GxIdeStartPage {\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n\n #recentKbsFilter: HTMLChEditElement;\n #kbsFilterValue: string = \"\";\n #kbRefs: { [key: string]: HTMLButtonElement | null } = {}; // Object to store kbs refs\n\n @Element() el: HTMLGxIdeStartPageElement;\n\n /**\n * The condition required to display the kbs filter\n */\n @State() displayKbsFilter: boolean = true;\n\n /**\n * The condition required to display the news filter\n */\n @State() displayNewsFilter: boolean = false;\n\n /**\n * The filtered KBs after user input\n */\n @State() filteredKbs: RecentKBData[] = [];\n\n /**\n * The filtered news after user input\n */\n @State() filteredNews: NewsData[] = [];\n\n /**\n * True if kbs have been not loaded yet.\n */\n @State() loadingKbs: boolean = true;\n\n /**\n * A list of recent news\n */\n @State() news: NewsData[];\n @Watch(\"news\")\n watchNews(news: NewsData[]) {\n if (news?.length >= this.newsFilterThreshold) {\n this.displayNewsFilter = true;\n } else {\n this.displayNewsFilter = false;\n }\n }\n\n /**\n * The filter value for the recent news set by the user input\n */\n @State() newsFilterValue: string;\n\n /**\n * True if the component has been rendered for the first time.\n */\n @State() renderedFirstTime = false;\n\n /**\n * Callback invoked to load the news feed (right panel \"Recent News\").\n */\n @Prop() readonly getNewsCallback!: GetNewsCallback;\n\n /**\n * Ann array of the user's KB's\n */\n @Prop() readonly kbs: RecentKBData[] = [];\n @Watch(\"kbs\")\n kbsChanged(kbs: RecentKBData[]) {\n this.loadingKbs = false;\n this.#filterKbs();\n if (kbs?.length >= this.kbsFilterThreshold) {\n this.displayKbsFilter = true;\n } else {\n this.displayKbsFilter = false;\n }\n }\n\n /**\n * The minimum number of \"kbs\" that is required to display the kb's filter.\n */\n @Prop() readonly kbsFilterThreshold: number = 6;\n\n /**\n * The minimum number of \"news\" that is required to display the news's filter.\n */\n @Prop() readonly newsFilterThreshold: number = 6;\n\n /**\n * Callback invoked to open a knowledge base when the user clicks on a KB card.\n */\n @Prop() readonly openKbCallback!: OpenKbCallback;\n\n /**\n * Callback invoked to open a news article.\n */\n @Prop() readonly openNewsCallback!: OpenNewsCallback;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.#recentKbsFilter?.focus();\n }\n\n #evaluateRenderKbs = () => {\n if (this.kbs?.length > 0) {\n return this.#renderKbs();\n } else {\n return (\n <gx-ide-empty-state\n class=\"kbs-empty-state\"\n stateIconSrc={FOLDER_ICON}\n stateTitle={this._componentLocale.emptyState.title}\n stateDescription={this._componentLocale.emptyState.description}\n ></gx-ide-empty-state>\n );\n }\n };\n\n #filterKbs = () => {\n this.filteredKbs = this.kbs.filter(kb =>\n kb.name?.toLowerCase().includes(this.#kbsFilterValue)\n );\n };\n\n #getNewsCallbackRecentNews = async (): Promise<NewsData[]> => {\n return new Promise(async resolve => {\n this.news = await this.getNewsCallback();\n resolve(this.news);\n });\n };\n\n #openKbHandler = async (e: MouseEvent) => {\n const kbId = (e.currentTarget as HTMLElement).id;\n await this.openKbCallback(kbId);\n };\n\n #renderKb = (kb: RecentKBData): HTMLButtonElement | null => {\n const formattedDate = formatDate(kb.lastOpenedDate, \"pretty\");\n const dateCaption = formattedDate\n ? `${this._componentLocale.recentKbs.lastOpened} ${formattedDate}`\n : null;\n return (\n <article class=\"display-contents\">\n <button\n class={{\n \"card-small\": true,\n \"card-small--actionable\": true,\n \"card-kb\": true,\n \"exact-match-bright\":\n kb.name?.toLocaleLowerCase() ===\n this.#kbsFilterValue?.toLowerCase()\n }}\n id={kb.id}\n key={kb.id}\n type=\"button\"\n ref={el => (this.#kbRefs[kb.id] = el as HTMLButtonElement)}\n onClick={this.#openKbHandler}\n >\n <div class=\"card-kb__left-col\">\n <ch-image\n src={KB_ICON}\n class=\"icon-md\"\n containerRef={this.#kbRefs[kb.id]}\n ></ch-image>\n <h2 class={config.headingsClasses.cardSmall}>\n {hiChar(kb.name, this.#kbsFilterValue)}\n </h2>\n </div>\n {dateCaption && <div class=\"card-kb__right-col\">{dateCaption}</div>}\n </button>\n </article>\n );\n };\n\n #renderKbs = () => {\n if (this.filteredKbs.length) {\n return (\n <div class=\"kbs-container scrollable\">\n {this.filteredKbs?.map(this.#renderKb)}\n </div>\n );\n }\n return (\n <gx-ide-empty-state\n stateIconSrc={KB_ICON}\n stateTitle={this._componentLocale.recentKbs.noKbsFiltered.title}\n ></gx-ide-empty-state>\n );\n };\n\n #searchKbsInputHandler = (event: Event | ChEditCustomEvent<InputEvent>) => {\n this.#kbsFilterValue = (\n event as ChEditCustomEvent<InputEvent>\n ).target.value.toLowerCase();\n this.#filterKbs();\n };\n\n #searchNewsInputHandler = (event: Event | ChEditCustomEvent<InputEvent>) => {\n this.newsFilterValue = (\n event as ChEditCustomEvent<InputEvent>\n ).target.value.toLowerCase();\n };\n\n render() {\n return (\n <Host class=\"start-page-host\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"layout layout-main layout--cols-2\">\n <div class=\"layout__panel panel-recent-kbs\">\n <section class=\"card-regular recent-kbs\">\n <header class=\"recent-kbs__header\">\n <h2\n class={{\n [config.headingsClasses.cardRegular]: true,\n \"recent-kbs__title\": true\n }}\n >\n {this._componentLocale.recentKbs.title}\n </h2>\n {this.displayKbsFilter && (\n <ch-edit\n type=\"text\"\n class=\"form-input recent-kbs__name-filter\"\n placeholder={this._componentLocale.recentKbs.placeholder}\n onInput={this.#searchKbsInputHandler}\n ref={el =>\n (this.#recentKbsFilter = el as HTMLChEditElement)\n }\n disabled={!(this.kbs?.length > 0)}\n ></ch-edit>\n )}\n </header>\n\n {this.loadingKbs ? (\n <gx-ide-loader\n loaderTitle={this._componentLocale.recentKbs.loader.title}\n description={\n this._componentLocale.recentKbs.loader.description\n }\n show={true}\n ></gx-ide-loader>\n ) : (\n this.#evaluateRenderKbs()\n )}\n </section>\n </div>\n\n <div class=\"layout__panel panel-recent-news\">\n <section class=\"card-regular recent-news\">\n <header class=\"recent-news__header\">\n <h2 class={config.headingsClasses.cardRegular}>\n {this._componentLocale.recentNews.title}\n </h2>\n {this.displayNewsFilter && (\n <ch-edit\n type=\"text\"\n class=\"form-input recent-news__filter\"\n placeholder={\n this._componentLocale.recentNews.inputPlaceholder\n }\n onInput={\n this.news?.length > 0\n ? this.#searchNewsInputHandler\n : null\n }\n disabled={!(this.news?.length > 0)}\n ></ch-edit>\n )}\n </header>\n\n <gx-ide-recent-news\n getNewsCallback={this.#getNewsCallbackRecentNews}\n openNewsCallback={this.openNewsCallback}\n filterValue={this.newsFilterValue}\n ></gx-ide-recent-news>\n </section>\n </div>\n </div>\n </Host>\n );\n }\n}\n\nexport type OpenKbCallback = (id: string) => Promise<void>;\nexport type GetNewsCallback = () => Promise<NewsData[]>;\nexport type OpenNewsCallback = (id: string) => Promise<void>;\n\nexport type RecentKBData = {\n id: string;\n name: string;\n lastOpenedDate?: Date;\n};\nexport type NewsData = {\n id: string;\n title: string;\n body: string;\n};\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as e, c as r, h as a, H as i } from "./p-aaed592c.js";
|
|
2
2
|
|
|
3
|
-
const o = ".loader__wrapper{position:absolute;border:none;opacity:0;transition:var(--show-transition) opacity;inline-size:100%;block-size:100%;display:flex;background-color:var(--gxg-ide-loader-wrapper__background-color--from);backdrop-filter:var(--gxg-ide-loader-wrapper__backdrop-filter);padding:var(--gxg-ide-loader-wrapper__padding);flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;color:var(--gxg-ide-loader-wrapper__color)}.loader__wrapper--visible{opacity:1}.loader__spinner{border:var(--gxg-ide-loader-spinner__border);border-block-start:var(--gxg-ide-loader-spinner__border-top);border-radius:50%;animation:spinner 0.6s infinite linear;inline-size:var(--gxg-ide-loader-spinner__width);block-size:var(--gxg-ide-loader-spinner__width);flex-shrink:0;opacity:1}.loader__content-wrapper{display:flex;text-align:center;flex-direction:column;margin-block-start:var(--gxg-ide-loader-content-wrapper__mbs);gap:var(--mer-spacing--
|
|
3
|
+
const o = ".loader__wrapper{position:absolute;border:none;opacity:0;transition:var(--show-transition) opacity;inline-size:100%;block-size:100%;display:flex;background-color:var(--gxg-ide-loader-wrapper__background-color--from);backdrop-filter:var(--gxg-ide-loader-wrapper__backdrop-filter);padding:var(--gxg-ide-loader-wrapper__padding);flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;color:var(--gxg-ide-loader-wrapper__color);z-index:99;animation:fadeIn var(--mer-timing--fast) forwards}.loader__wrapper--visible{opacity:1}.loader__spinner{border:var(--gxg-ide-loader-spinner__border);border-block-start:var(--gxg-ide-loader-spinner__border-top);border-radius:50%;animation:spinner 0.6s infinite linear;inline-size:var(--gxg-ide-loader-spinner__width);block-size:var(--gxg-ide-loader-spinner__width);flex-shrink:0;opacity:1}.loader__content-wrapper{display:flex;text-align:center;flex-direction:column;margin-block-start:var(--gxg-ide-loader-content-wrapper__mbs);gap:var(--mer-spacing--md);max-block-size:var(--gxg-ide-loader-content-wrapper__max-width);opacity:1}.loader__content-wrapper--hidden{display:none}@keyframes wrapper{0%{background-color:var(--gxg-ide-loader-wrapper__background-color--from)}100%{background-color:var(--gxg-ide-loader-wrapper__background-color--to)}}@keyframes spinner{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}:host([display-border]) .loader__wrapper{border:1px solid var(--mer-color__elevation--02)}@keyframes fadeIn{0%{opacity:0}}";
|
|
4
4
|
|
|
5
5
|
var t = undefined && undefined.__classPrivateFieldGet || function(e, r, a, i) {
|
|
6
6
|
if (a === "a" && !i) throw new TypeError("Private accessor was defined without a getter");
|
|
@@ -70,4 +70,4 @@ n = new WeakMap, s = new WeakMap, d = new WeakMap, p = new WeakMap, l = new Weak
|
|
|
70
70
|
h.style = o;
|
|
71
71
|
|
|
72
72
|
export { h as gx_ide_loader };
|
|
73
|
-
//# sourceMappingURL=p-
|
|
73
|
+
//# sourceMappingURL=p-a6b76120.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ideLoaderCss","CSS_BUNDLES","IdeLoader","_IdeLoader_timeoutReference","set","this","_IdeLoader_cancelProcess","cancelCallback","clearTimeout","__classPrivateFieldGet","show","_IdeLoader_renderCancelButton","cancelLabel","h","class","type","onClick","_IdeLoader_renderDescription","description","_IdeLoader_renderTitle","loaderTitle","render","Host","model","showWrapper","part","popover","call"],"sources":["src/components/_helpers/ide-loader/ide-loader.scss?tag=gx-ide-loader&encapsulation=shadow","src/components/_helpers/ide-loader/ide-loader.tsx"],"sourcesContent":[".loader {\n &__wrapper {\n position: absolute;\n border: none;\n opacity: 0;\n transition: var(--show-transition) opacity;\n inline-size: 100%;\n block-size: 100%;\n display: flex;\n background-color: var(--gxg-ide-loader-wrapper__background-color--from);\n backdrop-filter: var(--gxg-ide-loader-wrapper__backdrop-filter);\n padding: var(--gxg-ide-loader-wrapper__padding);\n flex-direction: column;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n color: var(--gxg-ide-loader-wrapper__color);\n z-index: 99; // WA to prevent tree-view chevron arrow to appear above.\n animation: fadeIn var(--mer-timing--fast) forwards;\n\n &--visible {\n opacity: 1;\n }\n }\n &__spinner {\n border: var(--gxg-ide-loader-spinner__border);\n border-block-start: var(--gxg-ide-loader-spinner__border-top);\n border-radius: 50%;\n animation: spinner 0.6s infinite linear;\n inline-size: var(--gxg-ide-loader-spinner__width);\n block-size: var(--gxg-ide-loader-spinner__width);\n flex-shrink: 0;\n opacity: 1;\n }\n\n &__content-wrapper {\n display: flex;\n text-align: center;\n flex-direction: column;\n margin-block-start: var(--gxg-ide-loader-content-wrapper__mbs);\n gap: var(--mer-spacing--md);\n max-block-size: var(--gxg-ide-loader-content-wrapper__max-width);\n &--hidden {\n display: none;\n }\n opacity: 1;\n }\n}\n\n/*background color animation*/\n@keyframes wrapper {\n 0% {\n background-color: var(--gxg-ide-loader-wrapper__background-color--from);\n }\n 100% {\n background-color: var(--gxg-ide-loader-wrapper__background-color--to);\n }\n}\n@keyframes spinner {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(359deg);\n }\n}\n\n:host([display-border]) {\n .loader {\n &__wrapper {\n border: 1px solid var(--mer-color__elevation--02);\n }\n }\n}\n\n@keyframes fadeIn {\n 0% {\n opacity: 0;\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n State,\n Event,\n EventEmitter\n} from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"utils/typography\"\n];\n@Component({\n tag: \"gx-ide-loader\",\n styleUrl: \"ide-loader.scss\",\n shadow: true\n})\nexport class IdeLoader {\n #timeoutReference: ReturnType<typeof setTimeout>;\n\n /**\n * shows the '.loader-wrapper'\n */\n @State() showWrapper = true;\n\n /**\n * The time the loader will await before abort.\n */\n @Prop() readonly abortTime: number = 5 * 60 * 1000; // 5 minutes\n\n /**\n * The cancel callback\n */\n @Prop() readonly cancelCallback: IdeLoaderCancelCallback;\n\n /**\n * The cancel button label (optional)\n */\n @Prop() readonly cancelLabel: string;\n\n /**\n * The loader description (optional)\n */\n @Prop() readonly description: string;\n\n /**\n * Displays a border all around\n */\n @Prop({ reflect: true }) readonly displayBorder: boolean = false;\n\n /**\n * The loader title (optional)\n */\n @Prop() readonly loaderTitle: string;\n\n /**\n * It shows the loader\n */\n @Prop({ mutable: true }) show = false;\n\n /**\n * This event is emitted when \"show\" is false.\n */\n @Event() loaderFinished: EventEmitter<void>;\n\n #cancelProcess = (): void => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n clearTimeout(this.#timeoutReference);\n this.show = false;\n };\n\n #renderCancelButton = (): HTMLButtonElement | null =>\n this.cancelLabel && (\n <div>\n <button\n class=\"button-secondary\"\n type=\"button\"\n onClick={this.#cancelProcess}\n >\n {this.cancelLabel}\n </button>\n </div>\n );\n\n #renderDescription = (): HTMLParagraphElement | null =>\n this.description && <p class=\"text-body-italic-s\">{this.description}</p>;\n\n #renderTitle = (): HTMLParagraphElement | null =>\n this.loaderTitle && <p class=\"text-body-regular-m\">{this.loaderTitle}</p>;\n\n render() {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n {this.show && (\n <div\n class={{\n [`loader__wrapper`]: true,\n \"loader__wrapper--visible\": this.showWrapper\n }}\n part=\"loader-wrapper\"\n popover=\"\"\n >\n <div class=\"loader__spinner\"></div>\n <div\n class={{\n \"loader__content-wrapper\": true,\n \"loader__content-wrapper--hidden\":\n !this.description && !this.loaderTitle && !this.cancelLabel\n }}\n >\n {this.#renderTitle()}\n {this.#renderDescription()}\n {this.#renderCancelButton()}\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n\nexport type IdeLoaderCancelCallback = () => void;\n"],"mappings":";;AAAA,MAAMA,IAAe;;;;;;;;;;ACYrB,MAAMC,IAA8B,EAClC,qBACA,qBACA;;MAOWC,IAAS;;;;IACpBC,EAAAC,IAAAC,WAAA;IA+CAC,EAAAF,IAAAC,OAAiB;MACf,IAAIA,KAAKE,gBAAgB;QACvBF,KAAKE;;MAEPC,aAAaC,EAAAJ,MAAIF,GAAA;MACjBE,KAAKK,OAAO;AAAK;IAGnBC,EAAAP,IAAAC,OAAsB,MACpBA,KAAKO,eACHC,EAAA,aACEA,EAAA;MACEC,OAAM;MACNC,MAAK;MACLC,SAASP,EAAAJ,MAAIC,GAAA;OAEZD,KAAKO;IAKdK,EAAAb,IAAAC,OAAqB,MACnBA,KAAKa,eAAeL,EAAA;MAAGC,OAAM;OAAsBT,KAAKa;IAE1DC,EAAAf,IAAAC,OAAe,MACbA,KAAKe,eAAeP,EAAA;MAAGC,OAAM;OAAuBT,KAAKe;uBAnEpC;qBAKc,IAAI,KAAK;;;;yBAoBa;;gBAU3B;;EAkChC,MAAAC;IACE,OACER,EAACS,GAAI,MACHT,EAAA;MAAUU,OAAOtB;QAChBI,KAAKK,QACJG,EAAA;MACEC,OAAO;QACL,CAAC,oBAAoB;QACrB,4BAA4BT,KAAKmB;;MAEnCC,MAAK;MACLC,SAAQ;OAERb,EAAA;MAAKC,OAAM;QACXD,EAAA;MACEC,OAAO;QACL,2BAA2B;QAC3B,oCACGT,KAAKa,gBAAgBb,KAAKe,gBAAgBf,KAAKO;;OAGnDH,EAAAJ,MAAIc,GAAA,KAAaQ,KAAjBtB,OACAI,EAAAJ,MAAIY,GAAA,KAAmBU,KAAvBtB,OACAI,EAAAJ,MAAIM,GAAA,KAAoBgB,KAAxBtB"}
|
|
@@ -1,8 +1,36 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ObjectData, KBPropertyData, KBPropertyType } from "./
|
|
1
|
+
import { TreeViewModel } from "@genexus/chameleon-controls-library";
|
|
2
|
+
import { ObjectData, KBPropertyData, KBPropertyType } from "./types";
|
|
3
3
|
import { ObjectType } from "../../common/types";
|
|
4
4
|
export declare const KB_PROPERTY = "property";
|
|
5
5
|
export declare const KB_OBJECT = "object";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Updates the tree model with the provided objects.
|
|
8
|
+
* Objects may already exist and are placed under their parent node.
|
|
9
|
+
* If the parent node doesn't exist (identified by typeId on ObjectTypes),
|
|
10
|
+
* it is created and added at the bottom.
|
|
11
|
+
*
|
|
12
|
+
* @param {ObjectData[] | undefined} objects - The array of objects to update.
|
|
13
|
+
* @param {Map<string, ObjectType>} objectTypesMap - A map of object types by ID.
|
|
14
|
+
* @param {Set<string>} objectsSet - A set of existing object IDs.
|
|
15
|
+
* @param {TreeViewModel} actualTreeState - The current tree state to be updated.
|
|
16
|
+
* @returns {TreeViewModel} - The updated tree view model.
|
|
17
|
+
*/
|
|
18
|
+
export declare const updateObjectsTreeModel: (objects: ObjectData[] | undefined, objectTypesMap: Map<string, ObjectType>, objectsSet: Set<string>, actualTreeState: TreeViewModel) => TreeViewModel;
|
|
19
|
+
/**
|
|
20
|
+
* Converts an array of KB properties data into tree item data for a tree view.
|
|
21
|
+
*
|
|
22
|
+
* @param {KBPropertyData[]} properties - The array of KB property data.
|
|
23
|
+
* @param {KBPropertyType[]} kbPropertiesTypes - The array of KB property types.
|
|
24
|
+
* @param {TreeViewModel} actualTreeState - The current state of the tree.
|
|
25
|
+
* @returns {TreeViewModel} - The updated tree view item models.
|
|
26
|
+
*/
|
|
27
|
+
export declare const convertKbPropertiesDataToTreeItemData: (properties: KBPropertyData[], kbPropertiesTypes: KBPropertyType[], actualTreeState: TreeViewModel) => TreeViewModel;
|
|
28
|
+
/**
|
|
29
|
+
* Removes properties from the tree model.
|
|
30
|
+
*
|
|
31
|
+
* @param {TreeViewModel} actualTreeState - The current state of the tree,
|
|
32
|
+
* containing various tree view items.
|
|
33
|
+
* @returns {TreeViewModel} - A new array of tree view items that excludes
|
|
34
|
+
* any items with metadata of type `KB_PROPERTY`.
|
|
35
|
+
*/
|
|
36
|
+
export declare const clearKbPropertiesFromTree: (actualTreeState: TreeViewModel) => TreeViewModel;
|