{"version":3,"file":"fundamental-ngx-core-facets.mjs","sources":["../../../../libs/core/facets/constants.ts","../../../../libs/core/facets/utils.ts","../../../../libs/core/facets/content/facet-content.component.ts","../../../../libs/core/facets/facet-container.component.ts","../../../../libs/core/facets/facet-group.component.ts","../../../../libs/core/facets/facet/facet.component.ts","../../../../libs/core/facets/facet/facet.component.html","../../../../libs/core/facets/facet.module.ts","../../../../libs/core/facets/fundamental-ngx-core-facets.ts"],"sourcesContent":["export const FACET_CLASS_NAME = {\n    facetContainer: 'fd-facet__container',\n    facetRatingIndicatorContainer: 'fd-facet__rating-container',\n    facetRatingIndicatorDynamicText: 'fd-facet__rating-dynamic-text',\n    facetObjectStatus: 'fd-facet__object-status',\n    facetObjectStatusText: 'fd-facet__object-status-text',\n    marginTopTiny: 'fd-margin-top--tiny',\n    marginBottomTiny: 'fd-margin-bottom--tiny',\n    marginEndTiny: 'fd-margin-end--tiny',\n    paddingNone: 'fd-padding--none'\n} as const;\n\nexport type FacetType = 'form' | 'key-value' | 'image' | 'rating-indicator' | 'custom';\n","import { Renderer2 } from '@angular/core';\n\nexport const addClassNameToFacetElement = (renderer: Renderer2, element: Element, className: string): void => {\n    renderer.addClass(element, className);\n};\n","import { ChangeDetectionStrategy, Component, ElementRef, OnInit, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { FACET_CLASS_NAME } from '../constants';\nimport { addClassNameToFacetElement } from '../utils';\n\n@Component({\n    selector: 'fd-facet-content',\n    template: `<ng-content></ng-content>`,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    standalone: true\n})\nexport class FacetContentComponent implements OnInit {\n    /** @hidden */\n    constructor(\n        public readonly elementRef: ElementRef<HTMLElement>,\n        private _renderer: Renderer2\n    ) {}\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._addClassNameToHostElement(FACET_CLASS_NAME.facetContainer);\n    }\n\n    /** @hidden */\n    private _addClassNameToHostElement(className: string): void {\n        addClassNameToFacetElement(this._renderer, this.elementRef.nativeElement, className);\n    }\n}\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\nexport type ContainerFlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse';\n\nexport type ContainerFlexJustify =\n    | 'start'\n    | 'center'\n    | 'end'\n    | 'flex-start'\n    | 'flex-end'\n    | 'space-between'\n    | 'space-around'\n    | 'space-evenly'\n    | 'stretch';\n\nexport type ContainerFlexAlign =\n    | 'start'\n    | 'center'\n    | 'end'\n    | 'flex-start'\n    | 'flex-end'\n    | 'space-between'\n    | 'space-around'\n    | 'space-evenly'\n    | 'stretch'\n    | 'self-start'\n    | 'self-end'\n    | 'baseline';\n\n@Component({\n    selector: 'fd-facet-container',\n    template: ` <ng-content></ng-content> `,\n    styleUrl: './facet-container.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        '[class.fd-facet-container]': 'true',\n        '[style.gap.rem]': 'flexGap()',\n        '[style.flex-direction]': 'flexDirection()',\n        '[style.align-items]': 'alignItems()',\n        '[style.justify-content]': 'justifyContent()'\n    },\n    standalone: true\n})\nexport class FacetContainerComponent {\n    /**\n     * Value for the direction of the flex container.\n     * Possible values: 'row' | 'row-reverse' | 'column' | 'column-reverse'\n     * Default: 'column'\n     */\n    flexDirection = input<ContainerFlexDirection>('column');\n\n    /**\n     * Value for align-items of the flex container.\n     * Possible values:\n     * 'start', 'center', 'end', 'flex-start', 'flex-end', 'space-between', 'space-around',\n     * 'space-evenly', 'stretch', 'self-start', 'self-end', 'baseline'\n     * Default: 'start'\n     */\n    alignItems = input<ContainerFlexJustify>('start');\n\n    /**\n     * Value for justify-content of the flex container.\n     * Possible values:\n     * 'start', 'center', 'end', 'flex-start', 'flex-end', 'space-between', 'space-around',\n     * 'space-evenly', 'stretch'\n     * Default: 'start'\n     */\n    justifyContent = input<ContainerFlexAlign>('start');\n\n    /**\n     * Value for the flex container gap in rem.\n     * An integer number\n     * Default: 1\n     */\n    flexGap = input(1);\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\n@Component({\n    selector: 'fd-facet-group',\n    template: ` <ng-content select=\"fd-facet\"></ng-content> `,\n    styleUrl: './facet-group.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        '[class.fd-facet-group]': 'true',\n        '[attr.aria-label]': 'ariaLabel',\n        role: 'group'\n    },\n    standalone: true\n})\nexport class FacetGroupComponent {\n    /**\n     * the aria label for the facet group\n     */\n    @Input()\n    ariaLabel: Nullable<string>;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    HostBinding,\n    Input,\n    Renderer2,\n    ViewEncapsulation\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { HeadingLevel } from '@fundamental-ngx/core/shared';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FACET_CLASS_NAME, FacetType } from '../constants';\nimport { addClassNameToFacetElement } from '../utils';\n\nlet randomId = 0;\nlet randomTitleId = 0;\n\n@Component({\n    selector: 'fd-facet',\n    templateUrl: './facet.component.html',\n    styleUrl: './facet.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        '[class.fd-facet]': 'true'\n    },\n    imports: [NgTemplateOutlet, TitleComponent, FormLabelComponent]\n})\nexport class FacetComponent implements AfterViewInit {\n    /** the type of Facet: form, key-value, image, rating-indicator */\n    @Input()\n    type: FacetType;\n\n    /** The facet title.\n     * For eg: for key-value facet, facetTitle is the key and the underlying object status or object number\n     * component is the value.\n     */\n    @Input()\n    facetTitle: string;\n\n    /** An optional subtitle to display in the rating-indicator facet */\n    @Input()\n    subtitle: string;\n\n    /**\n     * Heading level of the facet title.\n     */\n    @Input()\n    set headingLevel(level: Nullable<HeadingLevel>) {\n        if (typeof level === 'number') {\n            this._headingLevel = level;\n        } else if (typeof level === 'string') {\n            this._headingLevel = Number.parseInt(level.replace(/\\D/g, ''), 10);\n        }\n    }\n\n    /**\n     * id for the facet\n     */\n    @Input()\n    @HostBinding('attr.role')\n    id = `fd-facet-id-${randomId++}`;\n\n    /**\n     * property that allows the facet to be aligned to the end of the facet group, right-aligned.\n     */\n    @Input()\n    alignEnd = false;\n\n    /** @hidden\n     * the appropriate role for each facet type\n     */\n    @HostBinding('attr.role')\n    get role(): string {\n        return this.type !== 'image' ? 'group' : '';\n    }\n\n    /** @hidden\n     * the appropriate aria-labelledby to associate with the role\n     */\n    @HostBinding('attr.aria-labelledby')\n    get ariaLabelledby(): string {\n        return this.type !== 'image' ? this.titleId : '';\n    }\n\n    /** @hidden */\n    _headingLevel: number;\n\n    /** @hidden\n     * the internal id for the title to be associated with the aria-labelledby\n     */\n    titleId = `fd-facet-title-id-${randomTitleId++}`;\n\n    /** @hidden */\n    constructor(\n        public readonly elementRef: ElementRef<HTMLElement>,\n        private _renderer: Renderer2\n    ) {}\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._setupAdditionalStyles();\n        this._addAlignmentModifier();\n    }\n\n    /**\n     * @hidden\n     * set up common styles and specific styles based on each facet type\n     */\n    private _setupAdditionalStyles(): void {\n        if (!this.type) {\n            return;\n        }\n        // add type modifier class to host\n        this.elementRef.nativeElement.classList.add(`fd-facet--${this.type}`);\n\n        // add margin end and bottom spacings\n        this.elementRef.nativeElement.classList.add(`fd-margin-end--md`);\n        if (this.type !== 'image') {\n            // add bottom margin to non-image facets\n            this.elementRef.nativeElement.classList.add(`fd-margin-bottom--sm`);\n        }\n\n        switch (this.type) {\n            case 'image':\n                // image should always be on the left\n                this._setStyleToHostElement('order', '-1');\n                break;\n            case 'rating-indicator': {\n                const ratingIndicatorComponent = this.elementRef.nativeElement.querySelector('.fd-rating-indicator');\n\n                if (!ratingIndicatorComponent) {\n                    return;\n                }\n                this._addClassNameToCustomElement(ratingIndicatorComponent, FACET_CLASS_NAME.facetContainer);\n                const ratingIndicatorContainer = ratingIndicatorComponent.querySelector(\n                    '.fd-rating-indicator__container'\n                );\n                if (!ratingIndicatorContainer) {\n                    return;\n                }\n                this._addClassNameToCustomElement(\n                    ratingIndicatorContainer,\n                    FACET_CLASS_NAME.facetRatingIndicatorContainer\n                );\n\n                const ratingIndicatorDynamicText = ratingIndicatorComponent.querySelector(\n                    '.fd-rating-indicator__dynamic-text'\n                );\n                if (!ratingIndicatorDynamicText) {\n                    return;\n                }\n                this._addClassNameToCustomElement(\n                    ratingIndicatorDynamicText,\n                    FACET_CLASS_NAME.facetRatingIndicatorDynamicText\n                );\n                this._addClassNameToCustomElement(ratingIndicatorDynamicText, FACET_CLASS_NAME.marginTopTiny);\n                break;\n            }\n            case 'form': {\n                const formFacetContainer = this.elementRef.nativeElement.querySelectorAll('.fd-facet__container');\n                if (!formFacetContainer) {\n                    return;\n                }\n                formFacetContainer.forEach((container, index) => {\n                    if (index !== formFacetContainer.length - 1) {\n                        this._addClassNameToCustomElement(container, FACET_CLASS_NAME.marginBottomTiny);\n                    }\n                    // if icon+link is presented, add spacing to the icon\n                    const iconComponent = container.querySelector('fd-icon');\n                    if (!iconComponent) {\n                        return;\n                    }\n                    this._addClassNameToCustomElement(iconComponent, FACET_CLASS_NAME.marginEndTiny);\n                });\n\n                break;\n            }\n            case 'key-value': {\n                // add class to object status\n                const objectStatusComponent = this.elementRef.nativeElement.querySelector('.fd-object-status');\n                if (!objectStatusComponent) {\n                    return;\n                }\n                this._addClassNameToCustomElement(objectStatusComponent, FACET_CLASS_NAME.facetObjectStatus);\n\n                // add class to override font-family value\n                const objectStatusText = objectStatusComponent.querySelector('.fd-object-status__text');\n                if (!objectStatusText) {\n                    return;\n                }\n                this._addClassNameToCustomElement(objectStatusText, FACET_CLASS_NAME.facetObjectStatusText);\n\n                // add spacing to object status icon, if present\n                const objectStatusIcon = objectStatusComponent.querySelector('.fd-object-status__icon');\n                if (!objectStatusIcon) {\n                    return;\n                }\n                this._addClassNameToCustomElement(objectStatusIcon, FACET_CLASS_NAME.paddingNone);\n                this._addClassNameToCustomElement(objectStatusIcon, FACET_CLASS_NAME.marginEndTiny);\n                break;\n            }\n            default:\n                break;\n        }\n    }\n\n    /** @hidden\n     * adds the logic for `alignEnd` modifier\n     */\n    private _addAlignmentModifier(): void {\n        if (!this.alignEnd) {\n            return;\n        }\n        addClassNameToFacetElement(this._renderer, this.elementRef.nativeElement, 'fd-facet-align-end');\n\n        // add margins to the left after removing existing right margin\n        this.elementRef.nativeElement.classList.remove(`fd-margin-end--md`);\n        this.elementRef.nativeElement.classList.add(`fd-margin-begin--md`);\n    }\n\n    /** @hidden */\n    private _setStyleToHostElement(attribute: string, value: any): void {\n        this._renderer.setStyle(this.elementRef.nativeElement, attribute, value);\n    }\n\n    /** @hidden */\n    private _addClassNameToCustomElement(element: Element, className: string): void {\n        addClassNameToFacetElement(this._renderer, element, className);\n    }\n}\n","@if (type === 'image') {\n    <ng-template [ngTemplateOutlet]=\"customContentTemplate\"></ng-template>\n} @else {\n    @if (facetTitle) {\n        <div\n            [attr.role]=\"!!_headingLevel ? 'heading' : null\"\n            [attr.aria-level]=\"_headingLevel\"\n            fd-title\n            [headerSize]=\"5\"\n            class=\"fd-margin-bottom--sm\"\n            [id]=\"titleId\"\n        >\n            {{ facetTitle }}\n        </div>\n    }\n    @if (type === 'form') {\n        <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n    }\n    @if (type === 'key-value' || 'custom') {\n        <ng-template [ngTemplateOutlet]=\"customContentTemplate\"></ng-template>\n    }\n    @if (type === 'rating-indicator') {\n        <span fd-form-label>{{ subtitle }}</span>\n        <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n    }\n}\n<ng-template #contentTemplate>\n    <ng-content select=\"fd-facet-content\"></ng-content>\n</ng-template>\n<ng-template #customContentTemplate>\n    <ng-content></ng-content>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { FacetContentComponent } from './content/facet-content.component';\nimport { FacetContainerComponent } from './facet-container.component';\nimport { FacetGroupComponent } from './facet-group.component';\nimport { FacetComponent } from './facet/facet.component';\n\nconst components = [FacetComponent, FacetGroupComponent, FacetContentComponent, FacetContainerComponent];\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [...components],\n    exports: [...components]\n})\nexport class FacetModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}