{"version":3,"file":"sinequa-components-action.mjs","sources":["../../../projects/components/action/action.ts","../../../projects/components/action/bootstrap/action-item-content/action-item-content.ts","../../../projects/components/action/bootstrap/action-item-content/action-item-content.html","../../../projects/components/action/bootstrap/dropdown-menu/dropdown-menu.ts","../../../projects/components/action/bootstrap/dropdown-menu/dropdown-menu.html","../../../projects/components/action/bootstrap/dropdown.service.ts","../../../projects/components/action/bootstrap/dropdown.directive.ts","../../../projects/components/action/bootstrap/action-item/action-item.ts","../../../projects/components/action/bootstrap/action-item/action-item.html","../../../projects/components/action/bootstrap/action-buttons/action-buttons.ts","../../../projects/components/action/bootstrap/action-buttons/action-buttons.html","../../../projects/components/action/bootstrap/action-menu/action-menu.ts","../../../projects/components/action/bootstrap/action-menu/action-menu.html","../../../projects/components/action/bootstrap/action.module.ts","../../../projects/components/action/sinequa-components-action.ts"],"sourcesContent":["import {Type} from \"@angular/core\";\nimport {Utils} from \"@sinequa/core/base\";\nimport {MessageParams} from \"@sinequa/core/intl\";\nimport { Placement } from \"@sinequa/components/utils\";\n\nexport abstract class IAction {\n    /**\n     * internal name of the `Action`\n     */\n    name?: string;\n    /**\n     * the display text of the `Action`\n     */\n    text?: string;\n    /**\n     * when set, `Action` element is a link <a> tag, otherwise it's a button tag\n     */\n    href?: string;\n    target?: string;\n    /**\n     * icon class name displayed before the `Action` text\n     */\n    icon?: string;\n    /**\n     * additional css styles to add\n     */\n    styles?: string | string[] | Set<string> | { [klass: string]: any };\n    /**\n     * icon class name displayed after the `Action` text\n     */\n    iconAfter?: string;\n    /**\n     * when true, `Action` is displayed as a menu separator\n     */\n    separator?: boolean;\n    /**\n     * The children are scrollable\n     */\n    scrollable?: boolean;\n    /**\n     * A separate item whose children are scrollable \"in place\"\n     */\n    scrollGroup?: boolean;\n    /**\n     * embedded component dynamically loaded\n     */\n    component?: Type<any>;\n    /**\n     * component's inputs. Work with `component`\n     */\n    componentInputs?: any;\n    /**\n     * any additional informations\n     */\n    data?: any;\n    /**\n     * tooltip's text\n     */\n    title?: string;\n    /**\n     * tooltip placement, when undefined default is\"bottom\"\n     */\n    titlePlacement?: Placement;\n    /**\n     * tooltip fallback placement(s)\n     */\n    fallbackPlacements?: Placement | Placement[];\n    /**\n     * when true, the display of the `Action` will start with a check icon\n     */\n    selected?: boolean;\n    /**\n     * when true, the `Action` is grayed out\n     */\n    disabled?: boolean;\n    /**\n     *  when true, the `Action` is not shown\n     */\n    hidden?: boolean;\n    /**\n     * A dropdown with only one child is flattened to show only the child at the top level\n     */\n    flattenable?: boolean;\n    /**\n     * i18n - passed to sqMessage in (eg) action-item-content\n     * work with the `text` property\n     */\n    messageParams?: MessageParams;\n    /**\n     * when true, display the `title` property as a dropdown header before children elements\n     */\n    headerGroup?: boolean;\n\n    action?: (item: Action, event: UIEvent) => void;\n    toggle?: (item: Action, open: boolean) => void;\n    updater?: (item: Action) => void;\n    init?: (item: Action) => void;\n    destroy?: (item: Action) => void;\n\n    /**\n     * children `Action` elements. Used with nested menus\n     */\n    children?: Action[];\n}\n\nexport class Action extends IAction {\n\n    constructor(options: IAction) {\n        super();\n        Utils.extend(this, options);\n    }\n\n    get hasChildren(): boolean {\n        return !!this.children && (this.children.length > 0);\n    }\n\n    get showSelected(): boolean {\n        return typeof this.selected !== 'undefined';\n    }\n\n    update(): void {\n        if (this.updater) {\n            this.updater(this);\n        }\n        if (this.children) {\n            for (const child of this.children) {\n                child.update();\n            }\n        }\n    }\n}\n\n/**\n * Creating a new Action object with the separator property set to true.\n **/\nexport const ActionSeparator = new Action({ separator: true });\n","import {Component, HostBinding, Input} from \"@angular/core\";\nimport {Action} from \"../../action\";\n\n@Component({\n    selector: \"[sq-action-item-content], sq-action-item-content\",\n    templateUrl: \"./action-item-content.html\",\n    styles: [`\n.sq-action-item-content-container span {\n    overflow: hidden;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n}\n\n.sq-action-item-content-container > div:not(:last-child) {\n    margin-right: 0.25rem;\n}\n    `],\n    standalone: false\n})\nexport class BsActionItemContent {\n    @HostBinding('class') klass = 'sq-action-item-content';\n\n    @Input() item: Action;\n    @Input() text: string;\n    @Input(\"in-dropdown-menu\") inDropdownMenu: boolean;\n\n    componentClick(event: UIEvent) {\n        if (this.item.action && !this.item.disabled) {\n            this.item.action(this.item, event);\n        }\n        event.stopPropagation();\n        return false;\n    }\n}","<ng-container *ngIf=\"inDropdownMenu; then in_dropdown_menu else not_in_dropdown_menu\"></ng-container>\n\n<ng-template #in_dropdown_menu>\n    <!-- embedded component -->\n    <ng-container *ngIf=\"!!item.component\" (click)=\"componentClick($event)\"[sqLoadComponent]=\"{component: item.component, inputs: item.componentInputs }\"></ng-container>\n\n    <div *ngIf=\"!!!item.component\" class=\"d-flex align-items-baseline sq-action-item-content-container {{item.styles}}\">\n        <i *ngIf=\"item.showSelected\" class=\"fas fa-check sq-icon-check {{item.selected ? '' : 'invisible'}}\" aria-hidden=\"true\"></i>\n        <i *ngIf=\"!!item.icon\" class=\"{{item.icon}} sq-icon\" aria-hidden=\"true\"></i>\n        <span class=\"mx-2\">{{text | sqMessage:item.messageParams}}</span>\n        <i *ngIf=\"!!item.iconAfter\" class=\"ms-auto\" class=\"{{item.iconAfter}} sq-icon-after\" aria-hidden=\"true\"></i>\n    </div>\n</ng-template>\n\n<ng-template #not_in_dropdown_menu>\n    <span [ngClass]=\"item.styles || ''\">\n        <i  *ngIf=\"!!item.icon\" class=\"{{item.icon}} sq-icon\" aria-hidden=\"true\"></i>\n        {{text | sqMessage:item.messageParams}}\n        <i *ngIf=\"!!item.iconAfter\" class=\"sq-icon-after {{item.iconAfter}}\" aria-hidden=\"true\"></i>\n    </span>\n</ng-template>\n","import {Component, Input, ElementRef, HostBinding, ChangeDetectionStrategy} from \"@angular/core\";\nimport {Action} from \"../../action\";\nimport { DropdownMenuOptions } from \"../../typings\";\n\n@Component({\n    selector: \"[sq-dropdown-menu]\",\n    templateUrl: \"./dropdown-menu.html\",\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class BsDropdownMenu {\n    item: Action;\n    /**\n     * all visibles `Action` elements\n     */\n    children: Action[];\n\n    private _options: DropdownMenuOptions;\n\n    @Input(\"sq-dropdown-menu\")\n    set options(opts: DropdownMenuOptions) {\n        this._options = {...opts};\n        this.children = opts.item.children?.filter(child => !child.hidden) || [];\n        this.item = opts.item;\n        this.rightAligned = opts.rightAligned;\n\n        const element: HTMLElement = this.elementRef.nativeElement;\n        element.classList.add(\"sq-dropdown-menu\");\n        if (opts.item.scrollable) {\n            element.classList.add(\"sq-scrollable-menu\");\n            element.classList.remove(\"sq-dropdown-menu\");\n        }\n        else if (opts.item.scrollGroup) {\n            element.classList.add(\"sq-scroll-menu\");\n            element.classList.remove(\"sq-dropdown-menu\");\n        }\n    }\n    get options(): DropdownMenuOptions {\n        return this._options;\n    }\n\n    @HostBinding(\"attr.role\") role = \"menu\";\n    @HostBinding(\"class.dropdown-menu\") dropdown = true;\n    @HostBinding(\"class.dropdown-menu-end\") rightAligned: boolean | undefined;\n\n    constructor(private elementRef: ElementRef) {}\n\n    private getLi(element: HTMLElement): HTMLElement | null {\n        let element1: HTMLElement | null = element;\n        while (element1 && element1.nodeName !== \"LI\") {\n            element1 = element1.parentElement;\n        }\n        return element1;\n    }\n\n    click(item: Action, event: UIEvent) {\n        if (!this.options.item.disabled) {\n            /**\n             * Nested dropdown structure\n             * -------------------------\n             *  ABC (1)\n             *    +--- 123\n             *    +--- 456\n             *  DEF\n             *  GHI\n             *  JKL (2)\n             *    +--- 789\n             *    +--- 321\n             *\n             *\n             * <ul dropdown-menu>               // nested dropdown container\n             *   <li dropdown-submenu> (1)      // first nested menu\n             *      <ul dropdown-menu>\n             *         <li>...</i>\n             *         <li>...</i>\n             *      </ul>\n             *   </li>\n             *   <li>...</li>\n             *   <li>...</li>\n             *   <li dropdown-submenu> (2)      // second nested menu\n             *      <ul dropdown-menu>\n             *         <li>...</i>\n             *         <li>...</i>\n             *      </ul>\n             *   </li>\n             * <ul>\n             *\n             */\n\n            let isOpen = false;\n            const li = this.getLi(<HTMLElement>event.target);\n            if (!!li && li.classList.contains(\"dropdown-submenu\")) {\n                event.preventDefault();\n                event.stopPropagation();\n\n                // get the current's submenu status: <ul class='... show'>\n                const ul = li.getElementsByTagName(\"ul\")[0];\n                if(ul !== undefined) isOpen = ul.classList.contains(this.options.showMenuClass);\n\n                // remove for each submenu the 'show' class\n                if (li.parentElement) {\n                    const els = li.parentElement.querySelectorAll('li > ul');\n                    els.forEach(el => el.classList.remove(this.options.showMenuClass));\n                }\n\n                if (!isOpen) {\n                    ul.classList.add(this.options.showMenuClass);\n                }\n            } else {\n                li?.parentElement?.classList.remove(this.options.showMenuClass);\n            }\n\n            if (item.action) {\n                item.action(item, event);\n            }\n            if (item.toggle) {\n                item.toggle(item, !isOpen);\n            }\n        }\n    }\n}","<h6 *ngIf=\"options.item.title && options.item.headerGroup\" class=\"dropdown-header\">{{ options.item.title | sqMessage:options.item.messageParams }}</h6>\n<ng-container *ngFor=\"let child of options.item.children\">\n    <li *ngIf=\"!child.hidden\" class=\"{{child.separator ? 'dropdown-divider' : child.scrollGroup ? 'sq-scroll-menu-item open' : child.hasChildren ? 'dropdown-submenu' : ''}}\" title=\"{{child.title | sqMessage:child.messageParams}}\" [attr.aria-label]=\"child.title | sqMessage:child.messageParams\">\n        <ng-container *ngIf=\"!child.separator\">\n            <span *ngIf=\"child.title && child.headerGroup\" class=\"ps-3 small text-muted pe-none\">{{ child.title | sqMessage:item.messageParams }}</span>\n            <a *ngIf=\"!child.scrollGroup && child.href\" [ngClass]=\"{'disabled': child.disabled}\" class=\"dropdown-item\" tabindex=\"-1\" [href]=\"child.href\" [attr.target]=\"child.target\">\n                <sq-action-item-content [item]=\"child\" [text]=\"child.text\" [in-dropdown-menu]=\"true\"></sq-action-item-content>\n            </a>\n            <a *ngIf=\"!child.scrollGroup && !child.href && !child.component\" href=\"javascript:void(0)\" [ngClass]=\"{'dropdown-toggle': child.hasChildren, 'disabled': child.disabled}\" class=\"pe-4 dropdown-item\" [attr.data-bs-toggle]=\"child.hasChildren ? 'dropdown' : ''\" tabindex=\"-1\" (click)=\"click(child, $event)\">\n                <sq-action-item-content [item]=\"child\" [text]=\"child.text\" [in-dropdown-menu]=\"true\"></sq-action-item-content>\n            </a>\n            <sq-action-item-content *ngIf=\"child.component\" [item]=\"child\" [text]=\"child.text\" [in-dropdown-menu]=\"true\"></sq-action-item-content>\n            <ul *ngIf=\"child.hasChildren\" [sq-dropdown-menu]=\"{item: child, showMenuClass: options.showMenuClass}\"></ul>\n        </ng-container>\n    </li>\n    <li *ngIf=\"child.scrollGroup\" class=\"dropdown-divider\"></li>\n</ng-container>","import {Injectable, OnDestroy, RendererFactory2, Renderer2, Inject} from \"@angular/core\";\nimport {Subject, Observable} from \"rxjs\";\nimport {Keys, StrictUnion} from \"@sinequa/core/base\";\nimport {DOCUMENT} from \"@angular/common\";\n\n// Based on  Bootstrap (v4.4.1): dropdown.js\n\nexport interface DropdownEvent {\n    type: \"clear\" | \"toggle\" | \"active\";\n}\n\nexport interface DropdownClearEvent extends DropdownEvent {\n    type: \"clear\";\n    sourceEvent: KeyboardEvent | MouseEvent | undefined;\n    source?: Element;\n}\n\nexport interface DropdownToggleEvent extends DropdownEvent {\n    type: \"toggle\";\n    element: Element;\n}\n\nexport interface DropdownActiveEvent extends DropdownEvent {\n    type: \"active\";\n    value: boolean;\n}\n\nexport type DropdownEvents = DropdownClearEvent | DropdownToggleEvent | DropdownActiveEvent;\n\nexport const gClassName = {\n    DISABLED        : 'disabled',\n    SHOW            : 'show',\n    DROPUP          : 'dropup',\n    DROPRIGHT       : 'dropend',\n    DROPLEFT        : 'dropstart',\n    MENURIGHT       : 'dropdown-menu-end',\n    MENULEFT        : 'dropdown-menu-start',\n    POSITION_STATIC : 'position-static'\n};\n\nexport const gSelector = {\n    DROPDOWN      : '.dropdown',\n    DATA_TOGGLE   : '[data-bs-toggle=\"dropdown\"]',\n    FORM_CHILD    : '.dropdown form',\n    MENU          : '.dropdown-menu',\n    NAVBAR_NAV    : '.navbar-nav',\n    VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n};\n\n@Injectable({\n    providedIn: \"root\"\n})\nexport class BsDropdownService implements OnDestroy {\n    protected _events: Subject<DropdownEvents>;\n    protected unlisteners: (() => void)[];\n    protected renderer: Renderer2;\n\n    constructor(\n        @Inject(DOCUMENT) public readonly document: Document,\n        rendererFactory: RendererFactory2\n    ) {\n        this._events = new Subject<DropdownEvents>();\n        this.renderer = rendererFactory.createRenderer(null, null);\n        this.unlisteners = [];\n        this.unlisteners.push(this.renderer.listen(this.document, \"keydown\", this.dataApiKeydownHandler));\n        this.unlisteners.push(this.renderer.listen(this.document, \"click\", this.clearMenus));\n        this.unlisteners.push(this.renderer.listen(this.document, \"keyup\", this.clearMenus));\n        this.unlisteners.push(this.renderer.listen(this.document, \"click\", this.toggle));\n        this.unlisteners.push(this.renderer.listen(this.document, \"click\", this.formChildClick));\n    }\n\n    ngOnDestroy() {\n        this._events.complete();\n        this.unlisteners.forEach((unlistener) => unlistener());\n    }\n\n    get events(): Observable<DropdownEvents> {\n        return this._events;\n    }\n\n    /**\n     * \"If the event target matches the selector, return it, otherwise return the\n     * first ancestor of the event target that matches the selector.\"\n     *\n     * The function starts by declaring a variable named element and assigning it\n     * the value of the event target. The event target is the element that the\n     * event was dispatched from\n     * @param {Element} base - The element that the event listener is attached to.\n     * @param {Event} event - The event that was triggered.\n     * @param {string} selector - The CSS selector to match.\n     * @returns The element that matches the selector.\n     */\n    private matchDescendant(base: Element, {target}: Event, selector: string): HTMLElement | null {\n        let element: HTMLElement | null = target as HTMLElement;\n        while (element && element !== base) {\n            if (element.matches(selector)) {\n                return element;\n            }\n            element = element.parentElement;\n        }\n        return null;\n    }\n\n    /**\n     * If the element has a data-target attribute, return it. Otherwise, if the\n     * element has an href attribute, return it. Otherwise, return null\n     * @param {HTMLElement} element - The element that triggered the event.\n     * @returns The selector is being returned.\n     */\n    private getSelectorFromElement(element: HTMLElement) {\n        let selector = element.getAttribute('data-target');\n\n        if (!selector || selector === '#') {\n            const hrefAttr = element.getAttribute('href');\n            selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n        }\n\n        try {\n            return document.querySelector(selector) ? selector : null;\n        }\n        catch (err) {\n            return null;\n        }\n    }\n\n    /**\n     * It returns the parent element of the element passed in as a parameter\n     * @param {HTMLElement} element - The element that was clicked.\n     * @returns The parent element of the element that was clicked.\n     */\n    getParentFromElement(element: HTMLElement): Node | null {\n        let parent: HTMLElement | null = null;\n        const selector = this.getSelectorFromElement(element);\n\n        if (selector) {\n            parent = document.querySelector(selector);\n        }\n        if (!parent) {\n            // Account for scroll menus and sub menus\n            parent = element.parentElement;\n            while (parent &&\n                (parent.classList.contains(\"sq-scroll-menu\") ||\n                parent.classList.contains(\"sq-scroll-menu-item\") ||\n                parent.classList.contains(\"dropdown-submenu\"))) {\n                parent = parent.parentElement;\n            }\n        }\n        return parent;\n    }\n\n    private dataApiKeydownHandler = (event: KeyboardEvent): boolean | void => {\n        const descendant = this.matchDescendant(this.document.documentElement, event, `${gSelector.DATA_TOGGLE},${gSelector.MENU}`);\n        if (descendant === null) {\n            return;\n        }\n        /*\n            If not input/textarea:\n            - And not a key in REGEXP_KEYDOWN => not a dropdown command\n            If input/textarea:\n            - If space key => not a dropdown command\n            - If key is other than escape\n            - If key is not up or down => not a dropdown command\n            - If trigger inside the menu => not a dropdown command\n        */\n        const isInput = /input|textarea/i.test((event.target as Element).tagName);\n        const isSpaceEvent = event.key === Keys.space;\n        const isEscapeEvent = event.key === Keys.esc;\n        const isUpOrDownEvent = [Keys.up.toString(), Keys.down.toString()].includes(event.key);\n        const isDropdownMenu = (event.target as Element).closest(\".dropdown-menu\") !== null;\n\n        if (isInput\n            ? (isSpaceEvent || !isEscapeEvent) && (!isUpOrDownEvent || isDropdownMenu)\n            : !isUpOrDownEvent || isEscapeEvent) {\n            return;\n        }\n\n        event.preventDefault();\n        event.stopPropagation();\n\n        if (descendant.classList.contains(\"disabled\")) {\n            return;\n        }\n\n        const parent = this.getParentFromElement(descendant);\n        const isActive = parent instanceof HTMLElement && parent.classList.contains(\"show\");\n\n        if (!isActive && event.key === Keys.esc) {\n            return;\n        }\n\n        if (!isActive || isActive && (event.key === Keys.esc || event.key === Keys.space)) {\n            if (event.key === Keys.esc) {\n                const toggle = parent instanceof Element && parent.querySelector(gSelector.DATA_TOGGLE);\n                if (toggle instanceof HTMLElement) {\n                    toggle.focus();\n                }\n            }\n\n            descendant.dispatchEvent(new Event(\"click\", {bubbles: true}));\n            return;\n        }\n\n        let items: HTMLElement[] = [];\n        if (parent instanceof Element) {\n            items = items.slice.call(parent.querySelectorAll(gSelector.VISIBLE_ITEMS))\n                .filter((item: Element) => item instanceof HTMLElement && (item.offsetWidth > 0 || item.offsetHeight > 0));\n        }\n\n        if (items.length === 0) {\n            return;\n        }\n\n        let index = items.indexOf(event.target as HTMLElement);\n\n        if (event.key === Keys.up && index > 0) { // Up\n            index--;\n        }\n\n        if (event.key === Keys.down && index < items.length - 1) { // Down\n            index++;\n        }\n\n        if (index < 0) {\n            index = 0;\n        }\n\n        items[index].focus();\n    }\n\n    private clearMenus = (event: StrictUnion<KeyboardEvent | MouseEvent>): boolean | void => {\n        if (event && (event.button === 2 /*RIGHT_MOUSE_BUTTON_WHICH*/ ||\n            event.type === 'keyup' && event.key !== Keys.tab)) {\n            return;\n        }\n        if (event?.type === 'click') {\n            const target = event.target as HTMLElement;\n            if (!this.document.body.contains(target) || target.closest('bs-datepicker-container, bs-daterangepicker-container')) {\n                return;\n            }\n        }\n        this._events.next({type: \"clear\", sourceEvent: event});\n    }\n\n    private toggle = (event: MouseEvent): boolean | void => {\n        const descendant = this.matchDescendant(this.document.documentElement, event, gSelector.DATA_TOGGLE);\n        if (!descendant) {\n            return;\n        }\n        event.preventDefault();\n        event.stopPropagation();\n        this._events.next({type: \"toggle\", element: descendant});\n    }\n\n    private formChildClick = (event: MouseEvent): boolean | void => {\n        this.raiseActive(false);\n        if (!this.matchDescendant(this.document.documentElement, event, \".dropdown form\")) {\n            return;\n        }\n        event.stopPropagation();\n    }\n\n    raiseClear(source?: Element) {\n        this._events.next({type: \"clear\", sourceEvent: undefined, source});\n    }\n\n    raiseActive(active: boolean) {\n        this._events.next({type: \"active\", value: active});\n    }\n}\n","import {Directive, OnInit, OnDestroy, AfterViewInit, ElementRef, HostListener} from \"@angular/core\";\nimport {Subscription} from 'rxjs';\nimport {createPopper} from '@popperjs/core';\nimport {Keys, StrictUnion} from \"@sinequa/core/base\";\nimport {BsDropdownService, gClassName, gSelector} from './dropdown.service';\n\n// Based on  Bootstrap (v4.4.1): dropdown.js\n\nfunction noop() {}\n\nconst gConfig = {\n    offset       : [0,2],\n    flip         : true,\n    boundary     : 'clippingParents',\n    reference    : 'toggle',\n    display      : 'dynamic',\n    popperConfig: null,\n    autoClose: true\n};\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: \"[data-bs-toggle='dropdown']\",\n    standalone: false\n})\nexport class BsDropdownDirective implements OnInit, OnDestroy, AfterViewInit {\n    private subscription: Subscription;\n    /**\n     * true if the dropdown is within a navbar element\n     */\n    private inNavbar: boolean;\n    /**\n     * the dropdown wrapper, often the parent of the `ElementRef` element\n     *\n     * @example\n     * <div class=\"dropdown\">\n     * ...\n     * </div>\n     * */\n    private dropdown: HTMLElement;\n    /**\n     * the `dropdown-toggle` element where the directive is set.\n     *\n     * @example\n     * <button class=\"dropdown-toggle\" [data-bs-toggle]=\"dropdown\">...</button>\n     */\n    private dropdownToggle: HTMLElement;\n    /**\n     * the `dropdown-menu` element attached to the `dropdown-toggle` element\n     *\n     * @example\n     * <div class=\"dropdown\">\n     *   <button class=\"dropdown-toggle\" [data-bs-toggle]=\"dropdown\">...</button>\n     *   <ul class=\"dropdown-menu\">\n     *   ...\n     *   </ul>\n     * </div>\n     */\n    private _dropdownMenu: HTMLElement | null;\n    private popper;\n\n    constructor(\n        private elementRef: ElementRef,\n        private dropdownService: BsDropdownService\n    ) {\n    }\n\n    /**\n     * @returns The first `.dropdown` descendant `.dropdown-menu` element.\n     */\n    get dropdownMenu(): HTMLElement | null {\n        if (!this._dropdownMenu && this.dropdown) {\n            this._dropdownMenu = this.dropdown.querySelector(\".dropdown-menu\");\n        }\n        return this._dropdownMenu;\n    }\n\n    ngOnInit() {\n        this.subscription = this.dropdownService.events.subscribe((event) => {\n            if (event.type === \"clear\") {\n                // Keep ancestor dropdowns open when a nested dropdown triggers the clear\n                if (event.source && this.dropdown?.contains(event.source) && event.source !== this.dropdown) {\n                    return;\n                }\n                this.clear(event.sourceEvent as StrictUnion<KeyboardEvent | MouseEvent | undefined>);\n            }\n            else if (event.type === \"toggle\") {\n                this.toggle(event.element);\n            }\n        });\n    }\n\n    ngAfterViewInit() {\n        this.dropdownToggle = this.elementRef.nativeElement;\n        this.dropdown = this.dropdownService.getParentFromElement(this.dropdownToggle) as HTMLElement;\n        this.inNavbar = !!this.dropdownToggle.closest('.navbar');\n    }\n\n    ngOnDestroy() {\n        this.subscription.unsubscribe();\n    }\n\n    @HostListener(\"click\", [\"$event\"])\n    clickHandler(event: Event) {\n        // before event.stopPropagation()\n        // needed to avoid dropdown menu list to stay opened,\n        // bubble event to his root parent first and once\n        const isActive = this.dropdownMenu && this.dropdownMenu.classList.contains(gClassName.SHOW);\n        if (!isActive) this.dropdown.dispatchEvent(new Event('click', {bubbles: true, cancelable: false}));\n\n        event.preventDefault();\n        event.stopPropagation();\n        this.toggle(this.dropdownToggle);\n    }\n\n    private toggle(element: Element) {\n        if (!element || this.dropdownToggle !== element || !this.dropdownMenu || !this.dropdown) {\n            return;\n        }\n\n        if (element.classList.contains(\"disabled\")) {\n            return;\n        }\n\n        const isActive = this.dropdownMenu && this.dropdownMenu.classList.contains(\"show\");\n\n        this.dropdownService.raiseClear(this.dropdown);\n        // send dropdown's active state to the service\n        this.dropdownService.raiseActive(!isActive);\n        if (isActive) {\n            // hide submenu if any on dropdown button\n            if (element.parentElement) {\n                this.closeSubmenus(element.parentElement)\n            }\n            return;\n        }\n\n        this.show(true);\n    }\n\n    /**\n     * * If the dropdown is a `dropup`, then the placement is `top-start` unless\n     *   if the dropdown menu is a `dropdown-menu-end`, then the placement is `top-end`.\n     * * If the dropdown is a `dropend`, then the placement is `right-start`.\n     * * If the dropdown is a `dropstart`, then the placement is `left-start`.\n     * * If the dropdown menu is a `dropdown-menu-end`, then the placement is `bottom-end`.\n     * Otherwise, the placement is `bottom-start`\n     *\n     * @returns The placement of the dropdown menu.\n     */\n    private getPlacement(): string {\n        let placement = \"bottom-start\";\n\n        // Handle dropup\n        if (this.dropdown.classList.contains(\"dropup\")) {\n            placement = \"top-start\";\n            if (this.dropdownMenu && this.dropdownMenu.classList.contains(\"dropdown-menu-end\")) {\n                placement = \"top-end\";\n            }\n        }\n        else if (this.dropdown.classList.contains(\"dropend\")) {\n            placement = \"right-start\";\n        }\n        else if (this.dropdown.classList.contains(\"dropstart\")) {\n            placement = \"left-start\";\n        }\n        else if (this.dropdownMenu && this.dropdownMenu.classList.contains(\"dropdown-menu-end\")) {\n            placement = \"bottom-end\";\n        }\n        return placement;\n    }\n\n    private getPopperConfig() {\n        const popperConfig: any = {\n            placement: this.getPlacement(),\n            modifiers: [\n                {\n                    name: 'preventOverflow',\n                    options: {\n                        boundary: document.querySelector(gConfig.boundary)\n                    }\n                },\n                {\n                    name: 'offset',\n                    options: {\n                        offset: gConfig.offset\n                    }\n                }\n            ]\n        };\n\n        // Disable Popper.js if we have a static display\n        if (gConfig.display === 'static') {\n            popperConfig.modifiers.push({\n                name: 'applyStyle',\n                enabled: false\n            });\n        }\n\n        return popperConfig;\n    }\n\n    /**\n     * If the dropdown menu is already visible, do nothing. Otherwise, if the\n     * dropdown menu is not visible, show it\n     * @param [usePopper=false] - boolean\n     */\n    show(usePopper = false) {\n        if (!this.dropdownToggle || !this.dropdownMenu || !this.dropdown) {\n            return;\n        }\n\n        if (this.dropdownToggle.classList.contains(\"disabled\") ||\n            this.dropdownMenu.classList.contains(\"show\")) {\n          return;\n        }\n\n        const parent = this.dropdown;\n\n        // Disable totally Popper.js for Dropdown in Navbar\n        if (!this.inNavbar || usePopper) {\n            let referenceElement = this.dropdownToggle;\n\n            if (gConfig.reference === 'parent') {\n                referenceElement = parent;\n            }\n\n            // If boundary is not `scrollParent`, then set position to `static`\n            // to allow the menu to \"escape\" the scroll parent's boundaries\n            // https://github.com/twbs/bootstrap/issues/24251\n            if (gConfig.boundary !== 'clippingParents') {\n                parent.classList.add(gClassName.POSITION_STATIC);\n            }\n            this.popper = createPopper(referenceElement, this.dropdownMenu, this.getPopperConfig());\n        }\n\n        // If this is a touch-enabled device we add extra\n        // empty mouseover listeners to the body's immediate children;\n        // only needed because of broken event delegation on iOS\n        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n        if ('ontouchstart' in document.documentElement &&\n            !parent.closest(gSelector.NAVBAR_NAV)) {\n            Array.from(document.body.children).forEach((element) => element.addEventListener('mouseover', noop));\n        }\n\n        this.dropdownToggle.focus();\n        this.dropdownToggle.setAttribute('aria-expanded', \"true\");\n\n        this.dropdownMenu.classList.toggle(\"show\");\n        parent.classList.toggle(\"show\");\n    }\n\n    /**\n     * If the dropdown is open, close it\n     * @param event - StrictUnion<KeyboardEvent | MouseEvent | undefined>\n     */\n    private clear(event: StrictUnion<KeyboardEvent | MouseEvent | undefined>) {\n        if (!this.dropdownToggle || !this.dropdownMenu || !this.dropdown) {\n            return;\n        }\n        const parent = this.dropdown;\n\n        if (!parent.classList.contains(\"show\")) {\n            return;\n        }\n\n        if (event && (event.type === 'click' &&\n            /input|textarea/i.test((event.target as Element).tagName) || event.type === 'keyup' && event.key === Keys.tab) &&\n            parent.contains(event.target as Node)) {\n            return;\n        }\n\n        // Keep this dropdown open when the click happens inside a nested dropdown\n        if (event?.target instanceof Element) {\n            const nestedDropdown = event.target.closest('.dropdown');\n            if (nestedDropdown && nestedDropdown !== parent && parent.contains(nestedDropdown)) {\n                return;\n            }\n        }\n\n        // If this is a touch-enabled device we remove the extra\n        // empty mouseover listeners we added for iOS support\n        if ('ontouchstart' in document.documentElement) {\n            Array.from(document.body.children).forEach((element) => element.removeEventListener('mouseover', noop));\n        }\n\n        this.dropdownToggle.setAttribute('aria-expanded', 'false');\n\n        if (this.popper) {\n            this.popper.destroy();\n        }\n\n        this.dropdownMenu.classList.remove(\"show\");\n        parent.classList.remove(\"show\");\n\n        // close all sub-menus with 'show' class where 'parent' is the dropdown element\n        this.closeSubmenus(parent);\n    }\n\n    /**\n     * It removes the class \"show\" from all submenus.\n     * @param {HTMLElement} element - HTMLElement - The element that was clicked.\n     */\n    private closeSubmenus(element: HTMLElement) {\n        const elements = element.querySelectorAll(\"ul\");\n        elements.forEach(el => el.classList.remove(\"show\"));\n    }\n}\n","import {Component, Input, OnInit, AfterViewInit, ElementRef, ChangeDetectionStrategy, ChangeDetectorRef, OnDestroy} from \"@angular/core\";\nimport {Action} from \"../../action\";\nimport {UIService} from \"@sinequa/components/utils\";\nimport { ActionItemOptions, ActionSize, DropdownMenuOptions } from \"../../typings\";\n\n@Component({\n    selector: \"[sq-action-item]\",\n    templateUrl: \"./action-item.html\",\n    standalone: false,\n    styles: `\n.dropdown-list-item {\n    max-width: 24rem;\n}\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BsActionItem implements OnInit, OnDestroy, AfterViewInit {\n    @Input(\"sq-action-item\")\n    set options(props: ActionItemOptions) {\n        this.props = props;\n        this.item = props.item;\n    }\n    get options() {\n        return this.props;\n    }\n    @Input() collapseBreakpoint: ActionSize = \"md\";\n\n    protected props: ActionItemOptions;\n    protected item: Action;\n\n    protected inListItem: boolean;\n    protected dropdownButton: Element;\n    protected dropdownListItem: Element;\n    protected autoAdjustBreakpoint?: string;\n    protected showDropdown: boolean;\n\n    constructor(\n        private uiService: UIService,\n        private elementRef: ElementRef,\n        private cdRef: ChangeDetectorRef\n    ) {}\n\n    get haveItem(): boolean {\n        return !!this.item;\n    }\n\n    get isVisible(): boolean {\n        return this.haveItem && !this.item.hidden;\n    }\n\n    get hasAction(): boolean {\n        return this.haveItem && !!this.item.action;\n    }\n\n    get isDropdownButton(): boolean {\n        return this.isVisible && !this.inListItem && this.item.hasChildren;\n    }\n\n    get isButton(): boolean {\n        return this.isVisible && !this.inListItem && !this.item.hasChildren && this.hasAction;\n    }\n\n    get isDropdownListItem(): boolean {\n        return this.isVisible && this.inListItem && this.item.hasChildren;\n    }\n\n    get isListItem(): boolean {\n        return this.isVisible && this.inListItem && !this.item.hasChildren && this.hasAction;\n    }\n\n    get haveSpace(): boolean {\n        if (this.uiService.screenSizeIsGreaterOrEqual(this.autoAdjustBreakpoint)) {\n            return true;\n        }\n        if (this.inListItem && this.uiService.screenSizeIsLess(this.collapseBreakpoint)) {\n            return true;\n        }\n        return false;\n    }\n\n    get haveIcon(): boolean {\n        return !!this.item.icon || !!this.item.iconAfter;\n    }\n\n    get itemText(): string {\n        if (!this.haveItem) {\n            return \"\";\n        }\n        const text = this.item.text || \"\";\n        if (this.options.autoAdjust && this.haveIcon) {\n            return this.haveSpace ? text : \"\";\n        }\n        else {\n            return text;\n        }\n    }\n\n    get itemTitle(): string {\n        if (!this.haveItem) {\n            return \"\";\n        }\n        const text = this.item.text || \"\";\n        const title = this.item.title || \"\";\n        if (this.options.autoAdjust && this.haveIcon) {\n            return this.haveSpace ? (title !== text ? title : \"\") : title || text;\n        }\n        else {\n            return title;\n        }\n    }\n\n    get itemMessageParams(): any {\n        if (!this.haveItem) {\n            return null;\n        }\n        return this.item.messageParams;\n    }\n\n    get sizeClass(): string {\n        return this.options.size ? `btn-${this.options.size}` : \"\";\n    }\n\n    get styleClass(): string {\n        return this.options.style ? `btn-${this.options.style}` : \"btn-light\";\n    }\n\n    get dropdownMenuOptions(): DropdownMenuOptions {\n        return ({...this.options, showMenuClass: 'show'});\n    }\n\n    ngAfterViewInit() {\n        this.dropdownButton = this.elementRef.nativeElement.querySelector(\"div.dropdown\");\n        this.dropdownListItem = this.elementRef.nativeElement.querySelector(\"li.dropdown-toggle\");\n    }\n\n    ngOnInit() {\n        this.inListItem = (this.elementRef.nativeElement.nodeName === \"LI\");\n        if (this.item.init) {\n            this.item.init(this.item);\n        }\n        this.autoAdjustBreakpoint = this.options.autoAdjustBreakpoint;\n        this.uiService.resizeEvent.subscribe(e => this.cdRef.detectChanges());\n    }\n\n    ngOnDestroy() {\n        if (this.item.destroy) {\n            this.item.destroy(this.item);\n        }\n    }\n\n    click(event: UIEvent) {\n        if (!this.item.disabled) {\n            if (this.item.action) {\n                this.item.action(this.item, event);\n            }\n            if (this.item.toggle && (this.isDropdownButton || this.isDropdownListItem)) {\n                const openElement = this.dropdownButton || (this.dropdownListItem ? this.dropdownListItem.parentElement : null);\n                if (openElement) {\n                    this.item.toggle(this.item, !openElement.classList.contains(\"open\"));\n                }\n            }\n        }\n    }\n\n    touchstart() {\n        this.showDropdown = true;\n    }\n\n    mousedown() {\n        this.showDropdown = true;\n    }\n\n    focusin() {\n        this.showDropdown = true;\n    }\n}\n","<ng-container *ngIf=\"isDropdownButton\">\n    <!-- dropdown button -->\n    <button *ngIf=\"hasAction\" class=\"btn {{styleClass}} {{sizeClass}} {{item.disabled ? 'disabled' : ''}}\" type=\"button\" (click)=\"click($event)\" sqTooltip=\"{{itemTitle | sqMessage:itemMessageParams}}\" [attr.aria-label]=\"itemTitle | sqMessage:itemMessageParams\"\n        sq-action-item-content [item]=\"item\" [text]=\"itemText\">\n    </button>\n\n    <!-- action flatenable or not -->\n    <ng-container *ngIf=\"!hasAction && (item.flattenable && item.children?.length === 1); then flattened else unflattened\"></ng-container>\n    <ng-template #flattened>\n        <!-- flattened -->\n        <div class=\"btn {{styleClass}} {{sizeClass}}\"\n            sq-action-item-content [item]=\"item\" [text]=\"itemText\">\n        </div>\n    </ng-template>\n    <ng-template #unflattened>\n        <!-- unflattened -->\n        <button class=\"btn {{styleClass}} dropdown-toggle {{sizeClass}}\" type=\"button\" data-bs-toggle=\"dropdown\"\n            sqTooltip=\"{{itemTitle | sqMessage:itemMessageParams}}\" [attr.aria-label]=\"itemTitle | sqMessage:itemMessageParams\"\n            (touchstart)=\"touchstart()\" (mousedown)=\"mousedown()\" (focusin)=\"focusin()\"\n            sq-action-item-content [item]=\"item\" [text]=\"itemText\">\n        </button>\n        <ul *ngIf=\"showDropdown\" [sq-dropdown-menu]=\"dropdownMenuOptions\"></ul>\n    </ng-template>\n</ng-container>\n\n<!-- button -->\n<sq-action-item-content *ngIf=\"isButton\" [item]=\"item\" [text]=\"itemText\"></sq-action-item-content>\n\n<ng-container *ngIf=\"isDropdownListItem\">\n    <!-- dropdown list item -->\n    <a href=\"javascript:void(0)\" (click)=\"click($event)\" [ngClass]=\"{'nav-link': options.inMenu, 'dropdown-item': !options.inMenu, 'disabled': options.item.disabled}\" class=\"dropdown-toggle\" data-bs-toggle=\"dropdown\" role=\"button\" title=\"{{itemTitle | sqMessage:itemMessageParams}}\" aria-haspopup=\"true\" aria-expanded=\"false\" [attr.aria-label]=\"itemTitle | sqMessage:itemMessageParams\"\n    sq-action-item-content [item]=\"item\" [text]=\"itemText\">\n    </a>\n    <ul [sq-dropdown-menu]=\"dropdownMenuOptions\" class=\"dropdown-list-item\"></ul>\n</ng-container>\n\n<!-- list item -->\n<a *ngIf=\"isListItem\" href=\"javascript:void(0)\" class=\"{{options.inMenu ? 'nav-link' : 'dropdown-item'}} {{item.disabled ? 'disabled' : ''}}\" role=\"button\" (click)=\"click($event)\" title=\"{{itemTitle | sqMessage:itemMessageParams}}\" [attr.aria-label]=\"itemTitle | sqMessage:itemMessageParams\"\n    sq-action-item-content [item]=\"item\" [text]=\"itemText\">\n</a>\n","import {Component, HostBinding, Input} from \"@angular/core\";\nimport { Utils } from \"@sinequa/core/base\";\nimport { Action } from \"../../action\";\nimport { ActionButtonsOptions, ActionItemOptions } from \"../../typings\";\n\n@Component({\n    selector: \"[sq-action-buttons]\",\n    templateUrl: \"./action-buttons.html\",\n    standalone: false\n})\nexport class BsActionButtons {\n    @HostBinding('class') klass = \"sq-action-buttons\";\n\n    private _options: ActionButtonsOptions;\n\n    @Input(\"sq-action-buttons\")\n    set options (opts: ActionButtonsOptions) {\n        this._options = opts;\n    }\n    get options(): ActionButtonsOptions {\n        return this._options;\n    }\n\n    get sizeClass(): string {\n        return this._options.size ? `btn-${this._options.size}` : \"\";\n    }\n\n    get styleClass(): string {\n        return this._options.style ? `btn-${this._options.style}` : \"btn-light\";\n    }\n\n    get itemsVisible(): Action[] {\n        // action without hidden property is always visible\n        return Utils.asArray(this._options.items)\n            .filter(item => !item?.hidden || true);\n    }\n\n    getActionItemOptions(item: Action): ActionItemOptions {\n        return ({...this._options, item, inMenu: false});\n    }\n\n    itemClick(item: Action, event: UIEvent) {\n        if (!item.disabled && item.action) {\n            item.action(item, event);\n        }\n        if (item.href === \"#\" || (!!item.href && item.disabled)) {\n            event.preventDefault();\n        }\n    }\n}\n","<ng-container *ngFor=\"let item of itemsVisible\">\n    <!-- action with href -->\n    <a *ngIf=\"item && item.href\"\n        class=\"btn {{styleClass}} {{sizeClass}}\"\n        [attr.href]=\"!item.disabled ? item.href : null\"\n        (click)=\"itemClick(item, $event)\"\n        sqTooltip=\"{{item.title | sqMessage:item.messageParams}}\"\n        placement=\"{{item?.titlePlacement}}\"\n        [fallbackPlacements]= \"item.fallbackPlacements\"\n        [sq-action-item]=\"getActionItemOptions(item)\">\n    </a>\n    <ng-container *ngIf=\"item && !item.href\">\n        <!-- action without href -->\n        <div *ngIf=\"item.hasChildren\" class=\"btn-group\" [sq-action-item]=\"getActionItemOptions(item)\"></div>\n        <button *ngIf=\"!item.hasChildren\"\n            type=\"button\"\n            class=\"btn {{styleClass}} {{sizeClass}}\"\n            [ngClass]=\"{'active': item.selected, 'disabled': item.disabled}\"\n            [sq-action-item]=\"getActionItemOptions(item)\"\n            (click)=\"itemClick(item, $event)\"\n            sqTooltip=\"{{item.title | sqMessage:item.messageParams}}\"\n            placement=\"{{item?.titlePlacement}}\"\n            [fallbackPlacements]= \"item.fallbackPlacements\"\n            [attr.aria-label]=\"item.title | sqMessage:item.messageParams\"></button>\n    </ng-container>\n</ng-container>\n","import {ChangeDetectionStrategy, Component, Input, OnInit} from \"@angular/core\";\nimport { Utils } from \"@sinequa/core/base\";\nimport {Action} from \"../../action\";\nimport { ActionSize } from \"../../typings\";\n\n@Component({\n    selector: \"sq-action-menu\",\n    templateUrl: \"./action-menu.html\",\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class BsActionMenu implements OnInit{\n    /**\n     * the children `Action` elements of the menu\n     */\n    @Input() items: Action[];\n    @Input() size: ActionSize;\n    @Input() autoAdjust: boolean;\n    @Input() autoAdjustBreakpoint: ActionSize;\n    @Input() collapseBreakpoint: ActionSize;\n    /**\n     * whether the menu elements are right-aligned\n     */\n    @Input() right: boolean;\n\n    ngOnInit() {\n        this.items = Utils.asArray(this.items);\n    }\n\n    identify(index:number, item: Action) {\n        return item.name || item.text || item.title || index;\n    }\n}\n","<ul class=\"navbar-nav {{right ? 'navbar-right' : ''}}\">\n    <ng-container *ngFor=\"let item of items; trackBy(identify)\">\n        <li *ngIf=\"!item.hidden\" class=\"nav-item {{item.hasChildren ? 'dropdown' : ''}}\"\n            [sq-action-item]=\"{item: item, size: size, autoAdjust: autoAdjust, autoAdjustBreakpoint: autoAdjustBreakpoint, inMenu: true}\"\n            [collapseBreakpoint]=\"collapseBreakpoint\"></li>\n    </ng-container>\n</ul>","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { IntlModule } from \"@sinequa/core/intl\";\nimport { LoadComponentModule } from \"@sinequa/core/load-component\";\nimport { UtilsModule } from \"@sinequa/components/utils\";\n\nimport { BsActionButtons } from \"./action-buttons/action-buttons\";\nimport { BsActionItemContent } from \"./action-item-content/action-item-content\";\nimport { BsActionItem } from \"./action-item/action-item\";\nimport { BsActionMenu } from \"./action-menu/action-menu\";\nimport { BsDropdownMenu } from \"./dropdown-menu/dropdown-menu\";\nimport { BsDropdownDirective } from \"./dropdown.directive\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        IntlModule,\n        LoadComponentModule,\n        UtilsModule\n    ],\n    declarations: [\n        BsActionButtons,\n        BsActionItemContent,\n        BsActionItem,\n        BsActionMenu,\n        BsDropdownMenu,\n        BsDropdownDirective\n    ],\n    exports: [\n        BsActionButtons,\n        BsActionMenu,\n        BsActionItem,\n        BsDropdownDirective\n    ]\n})\nexport class BsActionModule {\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.BsActionItemContent","i1.BsDropdownService","i1","i2","i3.BsActionItemContent","i4.BsDropdownMenu","i5.BsDropdownDirective","i6","i3.BsActionItem","i4","i2.BsActionItem"],"mappings":"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"}