{"version":3,"file":"ironsource-fusion-ui-components-dropdown-dual-multi-select-common-base.mjs","sources":["../../../projects/fusion-ui/components/dropdown-dual-multi-select/common/base/dropdown-dual-multi-select.base.component.ts","../../../projects/fusion-ui/components/dropdown-dual-multi-select/common/base/ironsource-fusion-ui-components-dropdown-dual-multi-select-common-base.ts"],"sourcesContent":["import {\n    Directive,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Injector,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    Renderer2,\n    TemplateRef,\n    ViewChild\n} from '@angular/core';\nimport {InputSize} from '@ironsource/fusion-ui/components/input/common/base';\nimport {ControlValueAccessor, FormControl} from '@angular/forms';\nimport {DynamicComponentConfiguration} from '@ironsource/fusion-ui/components/dynamic-components/common/entities';\nimport {DropdownOption} from '@ironsource/fusion-ui/components/dropdown-option/entities';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\nimport {ApiBase} from '@ironsource/fusion-ui/components/api-base';\nimport {UniqueIdService} from '@ironsource/fusion-ui/services/unique-id';\nimport {BackendPagination, SelectedItemName} from '@ironsource/fusion-ui/components/dropdown';\nimport {isNullOrUndefined} from '@ironsource/fusion-ui/utils';\nimport {IncludeExcludeTestIdModifiers} from '@ironsource/fusion-ui/entities';\nimport {TestIdsService} from '@ironsource/fusion-ui/services/test-ids';\n\nconst CLASS_LIST = [\n    'dual-select-button',\n    'fu-dual-multi-select-placeholder',\n    'dropdown-dual-multi-select-button',\n    'clear-all-btn',\n    'fu-custom-placeholder',\n    'fu-dual-multi-select-placeholder'\n];\n\n@Directive()\nexport abstract class DropdownDualMultiSelectBaseComponent extends ApiBase implements OnInit, ControlValueAccessor, OnDestroy {\n    @Input() isDisabled: boolean = false;\n    /** @internal */\n    @Input() dynamicPlaceholder: DynamicComponentConfiguration;\n    /** @internal */\n    @Input() totalItems: number;\n    /** @internal */\n    @Input() suppressClickButton: boolean = false;\n    /** @internal */\n    @Input() autoComplete: boolean = true;\n    @Input() title: string;\n    /** @internal */\n    @Input() testId: string;\n    /** @internal */\n    @Input() pendingItems: boolean = false;\n    /** @internal */\n    @Input() set hasSelectAll(value: boolean) {\n        if (!isNullOrUndefined(value)) {\n            this._hasSelectAll = value;\n        }\n    }\n    get hasSelectAll(): boolean {\n        return this._hasSelectAll;\n    }\n\n    /** @internal */\n    testIdIncludeExcludeModifiers: typeof IncludeExcludeTestIdModifiers = IncludeExcludeTestIdModifiers;\n    /** @internal */\n    testIdsService: TestIdsService = this.injector.get(TestIdsService);\n\n    @Input() set placeholder(data: string) {\n        this.placeholder$.next(data);\n        this.defaultPlaceHolder = data;\n    }\n\n    /** @internal */\n    @Input() set searchByProperties(value: string[]) {\n        this._searchByProperties = value;\n    }\n\n    get searchByProperties(): string[] {\n        return this._searchByProperties;\n    }\n\n    /** @internal */\n    @Input() set opened(data: boolean) {\n        this.opened$.next(data);\n    }\n\n    @Input() set items(data: DropdownOption[]) {\n        this.items$.next(data || []);\n    }\n\n    get items(): DropdownOption[] {\n        return this.items$.getValue();\n    }\n\n    /**\n     * item name for selected placeholder\n     * like \"2 Applications selected\" (singular)\n     * or \"1 Application selected\" (plural)\n     * @param value\n     */\n    @Input() selectedItemName: SelectedItemName;\n\n    // backend pagination same like in dropdown component\n    /** @internal */\n    @Input() set backendPagination(value: BackendPagination) {\n        this.onBackendPaginationChanged(value);\n        this.backendPaginationState = value;\n    }\n\n    get hasBackendPagination(): boolean {\n        return !isNullOrUndefined(this.backendPaginationState);\n    }\n\n    @HostBinding('attr.data-testid') get testAttribute(): string {\n        return this.testIdsService.getTestAttribute(this.testId, this.testIdIncludeExcludeModifiers.INCLUDE_EXCLUDE);\n    }\n\n    @Output() scrollDown = new EventEmitter();\n    @Output() searchChange = new EventEmitter();\n    @Output() viewChange = new EventEmitter();\n    /** @internal */\n    @ViewChild('chipContent', {static: true}) chipContent: TemplateRef<any>;\n    /** @internal */\n    @ViewChild('trigger') trigger: ElementRef;\n\n    /** @internal */\n    preSelectedItems = new FormControl();\n    /** @internal */\n    searchControlTerm = new FormControl('');\n    /** @internal */\n    items$ = new BehaviorSubject<DropdownOption[]>([]);\n    /** @internal */\n    opened$ = new BehaviorSubject<boolean>(false);\n    /** @internal */\n    placeholder$ = new BehaviorSubject<string>('');\n    /** @internal */\n    confirm: boolean = false;\n    /** @internal */\n    defaultPlaceHolder: string;\n    /** @internal */\n    isPositionLeft: boolean;\n    /** @internal */\n    inputSize = InputSize;\n    /** @internal */\n    dropdownDualMultiSelectionButtonOptions = {rounded: true, size: this.inputSize.Medium};\n    /** @internal */\n    selected$ = new BehaviorSubject<any>('');\n    /** @internal */\n    chipDefaultContent: string;\n    /** @internal */\n    uid: string;\n    /** @internal */\n    backendPaginationChanged$: Subject<any> = new Subject();\n\n    private selectedChange: DropdownOption[];\n    private parentWithOverflow: HTMLElement;\n    private onDestroy$ = new Subject<void>();\n\n    private _searchByProperties: string[];\n\n    private backendPaginationState: BackendPagination;\n    private backendPaginationTotalResult: number;\n    private backendPaginationPageNumber = 1;\n    private _hasSelectAll = true;\n\n    /** @internal */\n    loadingLeft$ = new BehaviorSubject<boolean>(false);\n\n    constructor(\n        protected element: ElementRef,\n        protected renderer: Renderer2,\n        protected uidService: UniqueIdService,\n        private injector: Injector\n    ) {\n        super();\n        this.uid = this.uidService.getUniqueId().toString();\n    }\n\n    ngOnInit(): void {\n        this.selected$.next(this.defaultPlaceHolder);\n        this.contentTemplate = this.chipContent;\n        this.initializeListeners();\n    }\n\n    ngOnDestroy() {\n        this.resetState$.complete();\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n        this.backendPaginationChanged$.next();\n        this.backendPaginationChanged$.complete();\n    }\n\n    /** @internal */\n    onScrollDown(): void {\n        if (this.hasBackendPagination && this.backendPaginationTotalResult && this.backendPaginationTotalResult > this.items.length) {\n            this.loadingLeft$.next(true);\n            this.backendPaginationState\n                .backendGetFunction({\n                    ...this.backendPaginationState.getOptions,\n                    pageNumber: this.backendPaginationPageNumber + 1\n                })\n                .pipe(take(1))\n                .subscribe(val => {\n                    const responseValue =\n                        val && Array.isArray(val[this.backendPaginationState.responseDataPropertyName])\n                            ? val[this.backendPaginationState.responseDataPropertyName]\n                            : [];\n                    const value = this.backendPaginationState.mappingFunction\n                        ? responseValue.map(this.backendPaginationState.mappingFunction)\n                        : responseValue;\n                    const dropdownOptions = this.sortOptions({\n                        backendPagination: this.backendPaginationState,\n                        leftSideItems: [...value]\n                    });\n                    this.items = [...this.items, ...dropdownOptions];\n                    this.backendPaginationPageNumber++;\n                });\n        } else {\n            this.scrollDown.emit();\n        }\n    }\n\n    /** @internal */\n    changeConfig(val: string) {\n        this.element.nativeElement.style.setProperty('--fu-chip-max-width', val);\n    }\n\n    /** @internal */\n    valueSelected(): Observable<{\n        value: string;\n        isSelected: boolean;\n        selectedCount?: number;\n        partialSelect?: {firstSelected?: DropdownOption; totalAmount?: number};\n    }> {\n        return this.selected$.pipe(\n            takeUntil(this.onDestroy$),\n            map(value => {\n                const partialSelect = {};\n                if (!isNullOrUndefined(value) && !value.toString().toLowerCase().startsWith('all ') && !!this.selectedChange?.length) {\n                    partialSelect['firstSelected'] = this.selectedChange[0];\n                    partialSelect['totalAmount'] = this.totalItems ?? this.items$.getValue().length;\n                }\n                return (value !== this.defaultPlaceHolder && value !== 'All selected') || this.selectedTypeObject\n                    ? {\n                          value,\n                          isSelected: !!this.selectedChange?.length,\n                          selectedCount: this.selectedChange?.length,\n                          partialSelect\n                      }\n                    : {value: null, isSelected: false};\n            })\n        );\n    }\n\n    /** @internal */\n    open() {\n        this.trigger.nativeElement.click();\n    }\n\n    /** @internal */\n    applySelect(apply: boolean = false): void {\n        this.opened$.next(!apply);\n        this.confirm = true;\n        this.setLabel();\n        this.propagateChange(this.preSelectedItems.value);\n        this.selectedChange = Array.isArray(this.preSelectedItems.value) ? [...this.preSelectedItems.value] : this.preSelectedItems.value;\n        this.selected$.next(\n            this.selectedChange?.length === 1\n                ? this.selectedTypeObject\n                    ? this.selectedChange[0]\n                    : this.selectedChange[0]?.displayText || this.selectedChange[0]?.title\n                : this.placeholder$.getValue()\n        );\n        this.searchControlTerm.setValue('');\n        this.viewChange.emit(this.opened$.getValue());\n    }\n\n    /** @internal */\n    closeDropdownDualSelect(): void {\n        this.opened$.next(false);\n        this.confirm = false;\n        this.writeValue(this.selectedChange);\n        this.searchControlTerm.setValue('');\n        this.viewChange.emit(this.opened$.getValue());\n    }\n\n    /** @internal */\n    onClickDualMultiSelectButton(): void {\n        if (!this.isDisabled && !this.suppressClickButton) {\n            this.opened$.next(true);\n            this.isPositionLeft = this.calcDualMultiSelectHolderPosition();\n            this.viewChange.emit(this.opened$.getValue());\n        }\n    }\n\n    /** @internal */\n    propagateChange = (_: DropdownOption[]) => {};\n    /** @internal */\n    propagateTouched = () => {};\n\n    /** @internal */\n    writeValue(value: DropdownOption[]): void {\n        this.preSelectedItems.setValue(value);\n        this.selectedChange = value;\n        this.selected$.next(\n            value?.length === 1\n                ? this.selectedTypeObject\n                    ? value[0]\n                    : value[0]?.displayText || value[0]?.title\n                : this.placeholder$.getValue()\n        );\n    }\n\n    /** @internal */\n    registerOnChange(fn: any): void {\n        this.propagateChange = fn;\n    }\n\n    /** @internal */\n    registerOnTouched(fn: any): void {\n        this.propagateTouched = fn;\n    }\n\n    /** @internal */\n    setDisabledState?(isDisabled: boolean): void {\n        this.isDisabled = isDisabled;\n    }\n\n    /** @internal */\n    onOutsideClick($event): void {\n        const regularButtonClicked = !this.dynamicPlaceholder\n            ? !($event.closest(`.dual-select-button`)?.id === `${this.uid}-button-regular`)\n            : !($event.closest(`.dual-select-button`)?.id === `${this.uid}-button-dynamic`);\n\n        const isClickOutSide = this.templateRef\n            ? !$event.closest('fusion-dropdown-dual-multi-select') || !($event.closest(`.is-dropdown-dual-multi-select`)?.id === this.uid)\n            : regularButtonClicked;\n\n        const addFilterOptionClicked = !$event.closest('fusion-dropdown-option');\n\n        if (isClickOutSide && addFilterOptionClicked && !$event.closest('.clear-all-btn') && !$event.closest('.icon-clear')) {\n            this.closeDropdownDualSelect();\n            this.viewChange.emit(this.opened$.getValue());\n        }\n    }\n\n    protected calcDualMultiSelectHolderPosition(): boolean {\n        const hostElement = this.element.nativeElement;\n        if (this.parentWithOverflow === undefined || !document.contains(this.parentWithOverflow)) {\n            this.parentWithOverflow = this.getParentWithOverflow(hostElement);\n        }\n        if (this.parentWithOverflow !== null) {\n            const parentOverflowRect = this.parentWithOverflow.getBoundingClientRect();\n            const hostHolderRect = hostElement.getBoundingClientRect();\n            const hasSpaceOnLeft = hostHolderRect.right - parentOverflowRect.left >= 528;\n\n            return hasSpaceOnLeft && parentOverflowRect.right - hostHolderRect.left < 528;\n        }\n        return false;\n    }\n\n    private getParentWithOverflow(childEl: HTMLElement): HTMLElement {\n        const parent = childEl.parentElement;\n        let retVal = null;\n        if (parent) {\n            const parentOverflow = window.getComputedStyle(parent).overflow;\n            retVal = ['auto', 'hidden', 'scroll'].includes(parentOverflow) ? parent : this.getParentWithOverflow(parent);\n        }\n        return retVal;\n    }\n\n    private changeTerm(term: string): void {\n        this.searchChange.emit(term);\n    }\n\n    private initializeListeners(): void {\n        this.searchControlTerm.valueChanges.pipe(takeUntil(this.onDestroy$)).subscribe(this.changeTerm.bind(this));\n        this.preSelectedItems.valueChanges.pipe(takeUntil(this.onDestroy$)).subscribe(this.checkSelectItemsChanged.bind(this));\n        this.resetState$\n            .asObservable()\n            .pipe(takeUntil(this.onDestroy$))\n            .subscribe(_ => {\n                this.writeValue(null);\n                this.propagateChange(null);\n            });\n        this.selected$\n            .asObservable()\n            .pipe(takeUntil(this.onDestroy$))\n            .subscribe(selected => (this.chipDefaultContent = this.title + ': ' + selected));\n    }\n\n    private checkSelectItemsChanged(item: any): void {\n        // commented bny fix https://ironsrc-mobile.atlassian.net/browse/FU-484\n        // if (JSON.stringify(item) !== JSON.stringify(this.selectedChange) && this.confirm) {\n        //     this.selectedChange = item;\n        // }\n        this.setLabel();\n    }\n\n    private setLabel(): void {\n        let placeholder = this.defaultPlaceHolder;\n        if (\n            this.preSelectedItems.value &&\n            this.preSelectedItems.value.length > 0 &&\n            (this.items$.getValue().length > 0 || this.hasBackendPagination)\n        ) {\n            const itemName = !!this.selectedItemName\n                ? this.preSelectedItems.value.length === 1\n                    ? this.selectedItemName.singular\n                    : this.selectedItemName.plural\n                : '';\n\n            const placeholderPrefix =\n                this.preSelectedItems.value.length === this.items$.getValue().length ? 'All' : `${this.preSelectedItems.value.length}`;\n\n            placeholder = `${placeholderPrefix + (itemName ? ' ' + itemName : '')} selected`;\n        }\n        this.placeholder$.next(placeholder);\n    }\n\n    private onBackendPaginationChanged(backendPagination: BackendPagination): void {\n        this.backendPaginationChanged$.next();\n        this.backendPaginationTotalResult = null;\n        this.backendPaginationPageNumber = 1;\n        this.items = null;\n        this.loadingLeft$.next(true);\n        if (backendPagination) {\n            backendPagination\n                .backendGetFunction(backendPagination.getOptions)\n                .pipe(takeUntil(this.backendPaginationChanged$))\n                .subscribe(val => {\n                    const value = val ? [...val[backendPagination.responseDataPropertyName]] : null;\n                    this.items = this.sortOptions({\n                        backendPagination,\n                        leftSideItems: value\n                            ? backendPagination.mappingFunction\n                                ? value.map(backendPagination.mappingFunction)\n                                : value\n                            : null\n                    });\n                    this.backendPaginationTotalResult = val ? val[backendPagination.responseTotalCountPropertyName] : null;\n                    this.totalItems = this.backendPaginationTotalResult;\n                    this.loadingLeft$.next(false);\n                });\n        }\n    }\n\n    private sortOptions({\n        backendPagination,\n        leftSideItems\n    }: {\n        backendPagination: BackendPagination;\n        leftSideItems: DropdownOption[];\n    }): DropdownOption[] {\n        if (backendPagination.sortingFunction) {\n            return leftSideItems.sort(backendPagination.sortingFunction);\n        }\n        return leftSideItems;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}