{"version":3,"file":"pepperi-addons-ngx-lib-quantity-selector.mjs","sources":["../../../projects/ngx-lib/quantity-selector/quantity-selector-validation.directive.ts","../../../projects/ngx-lib/quantity-selector/quantity-selector.component.ts","../../../projects/ngx-lib/quantity-selector/quantity-selector.component.html","../../../projects/ngx-lib/quantity-selector/quantity-selector.pipes.ts","../../../projects/ngx-lib/quantity-selector/quantity-selector.module.ts","../../../projects/ngx-lib/quantity-selector/public-api.ts","../../../projects/ngx-lib/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.ts"],"sourcesContent":["import { getLocaleNumberSymbol, NumberSymbol } from '@angular/common';\nimport {\n    Directive,\n    ElementRef,\n    HostListener,\n    Input,\n    OnInit,\n} from '@angular/core';\nimport { PepUtilitiesService, PepValidatorService } from '@pepperi-addons/ngx-lib';\n\n@Directive({\n    selector: '[pepQsValidation]',\n})\nexport class PepQuantitySelectorValidationDirective implements OnInit {\n    @Input() allowDecimal: boolean;\n\n    previousValue = '';\n\n    constructor(\n        private hostElement: ElementRef,\n        private utilitiesService: PepUtilitiesService,\n        private validatorService: PepValidatorService\n    ) {}\n\n    ngOnInit() {\n        //\n    }\n\n    @HostListener('change', ['$event'])\n    onChange(e) {\n        this.validateValue(this.hostElement.nativeElement.value);\n    }\n\n    @HostListener('keydown', ['$event'])\n    onKeyDown(e: KeyboardEvent) {\n        const originalValue: string = e.target['value'];\n\n        // save value before keydown event\n        this.previousValue = originalValue;\n\n        const isNumber = this.validatorService.isNumber(e, this.allowDecimal);\n        if (isNumber) return;\n        else e.preventDefault();\n    }\n\n    validateValue(value: string): void {\n        const newValue = this.validatorService.validateNumber(\n            value,\n            this.allowDecimal\n        );\n        // this.hostElement.nativeElement['value'] = newValue ? newValue : 0;\n        this.hostElement.nativeElement['value'] = newValue ? this.utilitiesService.changeDecimalSeparatorWhenItsComma(newValue) : 0;\n    }\n}\n","import {\n    Component,\n    OnInit,\n    OnChanges,\n    OnDestroy,\n    Input,\n    Output,\n    EventEmitter,\n    ViewChild,\n    ElementRef,\n    ChangeDetectorRef,\n    ChangeDetectionStrategy,\n    Renderer2,\n    AfterViewInit,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n    trigger,\n    state,\n    style,\n    animate,\n    transition,\n} from '@angular/animations';\nimport {\n    PepLayoutType,\n    PepStyleType,\n    PepCustomizationService,\n    PepHorizontalAlignment,\n    DEFAULT_HORIZONTAL_ALIGNMENT,\n    IPepFieldClickEvent,\n    PepQuantitySelectorFieldType,\n    PepQuantitySelectorField,\n    PepUtilitiesService,\n} from '@pepperi-addons/ngx-lib';\nimport { BehaviorSubject, fromEvent, Observable, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n    selector: 'pep-quantity-selector',\n    templateUrl: './quantity-selector.component.html',\n    styleUrls: ['./quantity-selector.component.scss', './quantity-selector.component.theme.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations: [\n        trigger('showHide', [\n            state(\n                'show',\n                style({\n                    opacity: 1,\n                    transform: 'scale(1)',\n                })\n            ),\n            state(\n                'hide',\n                style({\n                    opacity: 0,\n                    transform: 'scale(0)',\n                })\n            ),\n            transition('show => hide', animate('250ms ease-out')),\n            transition('hide => show', animate('250ms ease-in')),\n        ]),\n    ],\n})\nexport class PepQuantitySelectorComponent\n    implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n    public static ENTER_CHILDREN = '[EnterChildren]';\n    public static ENTER_PACKAGE = '[EnterPackage]';\n    public static PLUS = '[+]';\n    public static MINUS = '[-]';\n\n    @Input() key = '';\n\n    private _value = null;\n    @Input()\n    set value(value: string) {\n        if (!value) {\n            value = '';\n        }\n\n        if (this.isDifferentValue(value)) {\n            this._value = value;\n        }\n\n        this.setFormattedValue(this.value);\n        this.changeDisplayValue();\n    }\n    get value(): string {\n        return this._value;\n    }\n    \n    get valueAsCurrentCulture(): string {\n        return this.utilitiesService.changeDecimalSeparatorWhenItsComma(this.value, true);\n        // let res = this.value;\n\n        // if (this.allowDecimal) {\n        //     res = this.utilitiesService.formatDecimal(this.value, this.minFractionDigits, this.maxFractionDigits, false);\n        // }\n        \n        // return res;\n    }\n\n    protected formattedValue = '';\n    // private _formattedValue = '';\n    // @Input()\n    // set formattedValue(value: string) {\n    //     // if (!value) {\n    //     //     value = '';\n    //     // }\n\n    //     // if (this._calculateFormattedValue) {\n    //     //     this._calculateFormattedValue = false;\n    //     // }\n\n    //     // this.setFormattedValue(value);\n    // }\n    // get formattedValue(): string {\n    //     return this._formattedValue;\n    // }\n    \n    private _minFractionDigits = NaN;\n    @Input()\n    set minFractionDigits(value: number) {\n        this._minFractionDigits = value;\n        this.setFormattedValue(this.value);\n        this.changeDisplayValue();\n    }\n    get minFractionDigits(): number {\n        return this._minFractionDigits;\n    }\n\n    private _maxFractionDigits = NaN;\n    @Input()\n    set maxFractionDigits(value: number) {\n        this._maxFractionDigits = value;\n        this.setFormattedValue(this.value);\n        this.changeDisplayValue();\n    }\n    get maxFractionDigits(): number {\n        return this._maxFractionDigits;\n    }\n\n    @Input() label = '';\n    @Input() type: PepQuantitySelectorFieldType = 'qs';\n    @Input() mandatory = false;\n    @Input() disabled = false;\n    @Input() readonly = false;\n\n    private _textColor = '';\n    @Input()\n    set textColor(value: string) {\n        this._textColor = value;\n        this.isCaution = value === '#FF0000';\n    }\n    get textColor(): string {\n        return this._textColor;\n    }\n\n    @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n    @Input() rowSpan = 1;\n    \n    private _allowDecimal = false;\n    @Input() \n    set allowDecimal(value: boolean) {\n        this._allowDecimal = value;\n\n        if (this.value) {\n            this.setFormattedValue(this.value);\n            this.changeDisplayValue();\n        }\n    }\n    get allowDecimal(): boolean {\n        return this._allowDecimal;\n    }\n\n    @Input() additionalValue = '';\n\n    private _notificationInfo: any;\n    @Input()\n    set notificationInfo(value: any) {\n        this._notificationInfo = value;\n\n        const messages = value && value > 0 ? JSON.parse(value).Messages : '';\n        if (messages && messages.length > 0) {\n            // Replace the msg keys.\n            for (const msg of messages) {\n                if (msg.Key === 'Inventory_Limit_Msg') {\n                    msg.Key = 'MESSAGES.ERROR_INVENTORY_LIMIT';\n                } else if (msg.Key === 'Case_Quantity_Limit_Msg') {\n                    msg.Key = 'MESSAGES.ERROR_CASE_QUANTITY_LIMIT';\n                } else if (msg.Key === 'Min_Quantity_Limit_Msg') {\n                    msg.Key = 'MESSAGES.ERROR_MIN_QUANTITY_LIMIT';\n                } else if (msg.Key === 'Max_Quantity_Limit_Msg') {\n                    msg.Key = 'MESSAGES.ERROR_MAX_QUANTITY_LIMIT';\n                }\n            }\n\n            this.messages = messages;\n\n            const fieldControl = this.form.controls[this.key];\n            fieldControl.setErrors({\n                serverError: 'Error',\n            });\n\n            this.sameElementInTheWantedRow = null;\n            setTimeout(() => {\n                if (this.QSInput && this.QSInput.nativeElement) {\n                    this.QSInput.nativeElement.focus();\n                }\n            }, 150);\n        }\n    }\n    get notificationInfo(): any {\n        return this._notificationInfo;\n    }\n\n    private _visible = true;\n    @Input()\n    set visible(visible: boolean) {\n        this._visible = visible;\n        if (visible) {\n            this.renderer.removeClass(\n                this.element.nativeElement,\n                'hidden-element'\n            );\n        } else {\n            this.renderer.addClass(\n                this.element.nativeElement,\n                'hidden-element'\n            );\n        }\n    }\n    get visible(): boolean {\n        return this._visible;\n    }\n\n    controlType = 'qs';\n\n    @Input() form: FormGroup = null;\n    @Input() showTitle = true;\n    @Input() renderTitle = true;\n    @Input() layoutType: PepLayoutType = 'form';\n    @Input() isActive = false;\n\n    // Get default style from theme.\n    @Input()\n    styleType: PepStyleType = document.documentElement.style.getPropertyValue(\n        PepCustomizationService.STYLE_QS_KEY\n    ) as PepStyleType; //'strong';\n\n    @Output()\n    valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n    @Output()\n    elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n\n    @ViewChild('QSCont') QSCont: ElementRef;\n    @ViewChild('QSInput') QSInput: ElementRef;\n\n    private _calculateFormattedValue = true;\n    get calculateFormattedValue(): boolean {\n        return this._calculateFormattedValue;\n    }\n\n    private readonly _destroyed: Subject<void>;\n    private qsWidthSubject: BehaviorSubject<number>;\n    lastQsContClientWidth = 0;\n    showQsBtn = true;\n\n    standAlone = false;\n    private _isInFocus = false;\n    @Input()\n    set isInFocus(isInFocus: boolean) {\n        this._isInFocus = isInFocus;\n        this.changeDisplayValue();\n    }\n    get isInFocus(): boolean {\n        return this._isInFocus;\n    }\n    isMatrixFocus = false;\n\n    isCaution = false;\n    messages: Array<any> = null;\n\n    sameElementInTheWantedRow = null;\n\n    isEmptyKey = false;\n\n    private _displayValueSubject: BehaviorSubject<string> = new BehaviorSubject<string>('');\n    get displayValue$(): Observable<string> {\n        return this._displayValueSubject.asObservable().pipe(distinctUntilChanged());\n    }\n\n    constructor(\n        private cd: ChangeDetectorRef,\n        private customizationService: PepCustomizationService,\n        private renderer: Renderer2,\n        private element: ElementRef,\n        private translate: TranslateService,\n        private utilitiesService: PepUtilitiesService\n    ) {\n        this._destroyed = new Subject();\n        this.qsWidthSubject = new BehaviorSubject(0);\n    }\n\n    setForm() {\n        const pepField = new PepQuantitySelectorField({\n            key: this.key,\n            value: this.valueAsCurrentCulture,\n            mandatory: this.mandatory,\n            readonly: this.readonly,\n            disabled: this.disabled,\n        });\n        this.form = this.customizationService.getDefaultFromGroup(pepField);\n    }\n\n    private setFormattedValue(value: string) {\n        if (this._calculateFormattedValue) {\n            if (this.allowDecimal) {\n                this.formattedValue = this.utilitiesService.formatDecimal(value, this.minFractionDigits, this.maxFractionDigits);\n            } else {\n                this.formattedValue = this.utilitiesService.formatNumber(value);\n            }\n        } else {\n            this.formattedValue = value;\n        }\n        \n        this.updateFormFieldValue();\n    }\n\n    private notifyDisplayValueChange(value: string) {\n        this._displayValueSubject.next(value);\n    }\n\n    private changeDisplayValue(): void {\n        let res = '';\n\n        if (this.allowDecimal) {\n            res = this.isInFocus ? this.valueAsCurrentCulture : this.formattedValue;\n        } else {\n            res = this.isInFocus ? this.value : this.formattedValue;\n        }\n\n        this.notifyDisplayValueChange(res);\n        // console.log('changeDisplayValue' + res);\n    }\n\n    private updateFormFieldValue(firstLoad = false) {\n        // Set the formatted value only for the first load cause it's not formatted if we set the value (I don't know why)\n        // Else we set the value - this is important to set the value only cause setting the formatted value will cause bug when the number is with thousand separator\n        this.customizationService.updateFormFieldValue(\n            this.form,\n            this.key,\n            firstLoad ? this.formattedValue : this.value,\n        );\n    }\n\n    // get displayValue(): string {\n    //     const res = this.isInFocus\n    //         ? this.utilitiesService.formatDecimal(this.value, this.minFractionDigits, this.maxFractionDigits)\n    //         : this.formattedValue;\n    //     return res;\n    // }\n\n    protected getDestroyer() {\n        return takeUntil(this._destroyed);\n    }\n\n    ngOnInit(): void {\n        if (this.form === null) {\n            if (this.key === '') {\n                this.isEmptyKey = true;\n            }\n\n            this.standAlone = true;\n            this.setForm();\n\n            this.renderer.addClass(\n                this.element.nativeElement,\n                PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\n            );\n\n            if (!this.renderTitle) {\n                this.renderer.addClass(\n                    this.element.nativeElement,\n                    PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME\n                );\n            }\n        }\n\n        this.qsWidthSubject\n            .asObservable()\n            .pipe(this.getDestroyer(), distinctUntilChanged())\n            .subscribe((qsWidth: number) => {\n                this.setupQsButtons(qsWidth);\n            });\n\n        this.updateFormFieldValue(true);\n    }\n\n    ngAfterViewInit() {\n        //\n    }\n\n    ngAfterViewChecked(): void {\n        this.setQsView();\n    }\n\n    ngOnChanges(changes: any): void {\n        // Bug fix for addons when the key is '' in the ngOnInit for some reson\n        if (this.isEmptyKey && this.key !== '') {\n            this.setForm();\n        }\n\n        setTimeout(() => {\n            this.focusToTheSameElementInTheWantedRow();\n        }, 150);\n    }\n\n    ngOnDestroy(): void {\n        this._destroyed.next();\n        this._destroyed.complete();\n    }\n\n    get getAdditionalValue(): string {\n        return this.additionalValue.length > 0 ? 'show' : 'hide';\n    }\n\n    getParentByClass(el, parentSelector /* optional */): any {\n        // If no parentSelector defined will bubble up all the way to *document*\n        if (parentSelector === undefined) {\n            parentSelector = document;\n        }\n\n        let p = el.parentNode;\n\n        while (\n            p &&\n            !p?.classList?.contains(parentSelector) &&\n            parentSelector !== document\n        ) {\n            const o = p;\n            p = o?.parentNode || null;\n        }\n\n        return p?.className.indexOf(parentSelector) > -1 ? p : null;\n    }\n\n    getSameElementInTheWantedRowByClassName(event: any, isNext = true): any {\n        const eventTarget = event.target || event.srcElement;\n        let sameElementInTheWantedRowByClassName;\n\n        let parentSelector;\n        if (this.layoutType === 'table') {\n            parentSelector = this.getParentByClass(eventTarget, 'table-row');\n        } else if (this.layoutType === 'card') {\n            parentSelector = this.getParentByClass(eventTarget, 'card-view');\n            if (!parentSelector) {\n                parentSelector = this.getParentByClass(\n                    eventTarget,\n                    'line-view'\n                );\n            }\n        }\n\n        if (\n            parentSelector.nextElementSibling === null &&\n            parentSelector.previousElementSibling === null\n        ) {\n            sameElementInTheWantedRowByClassName = null;\n        } else {\n            if (isNext) {\n                if (parentSelector.nextElementSibling === null) {\n                    sameElementInTheWantedRowByClassName = parentSelector.parentElement.querySelectorAll(\n                        '[name=' + this.key + ']'\n                    )[0];\n                } else {\n                    sameElementInTheWantedRowByClassName = parentSelector.nextElementSibling.querySelectorAll(\n                        '[name=' + this.key + ']'\n                    )[0];\n                }\n            } else {\n                if (parentSelector.previousElementSibling === null) {\n                    const elementsList = parentSelector.parentElement.querySelectorAll(\n                        '[name=' + this.key + ']'\n                    );\n                    sameElementInTheWantedRowByClassName =\n                        elementsList[elementsList.length - 1];\n                } else {\n                    sameElementInTheWantedRowByClassName = parentSelector.previousElementSibling.querySelectorAll(\n                        '[name=' + this.key + ']'\n                    )[0];\n                }\n            }\n        }\n\n        return sameElementInTheWantedRowByClassName;\n    }\n\n    setSameElementInTheWantedRow(event: any, isNext = true): void {\n        // Navigate to the QS in the next row.\n        if (this.layoutType === 'card' || this.layoutType === 'table') {\n            this.sameElementInTheWantedRow = this.getSameElementInTheWantedRowByClassName(\n                event,\n                isNext\n            );\n        }\n\n        this.QSInput.nativeElement.blur();\n    }\n\n    focusToTheSameElementInTheWantedRow(): void {\n        if (this.sameElementInTheWantedRow) {\n            const elem = this.sameElementInTheWantedRow;\n            // If this is regular item (qs and not button) .\n            if (elem instanceof HTMLInputElement && elem.type === 'text') {\n                elem.click();\n                elem.select();\n            } else {\n                const parentElem = elem.parentNode;\n                parentElem.click();\n                elem.focus();\n            }\n            this.sameElementInTheWantedRow = null;\n        }\n    }\n\n    cleanError(): void {\n        const fieldControl = this.form.controls[this.key];\n\n        // Clean the error message\n        if (this.messages && this.messages.length > 0) {\n            this.messages = this.notificationInfo = null;\n            fieldControl.setErrors(null);\n        }\n    }\n\n    onMatrixMouseEnter(event: any): void {\n        this.isMatrixFocus = true;\n    }\n\n    onMatrixMouseleave(event: any): void {\n        this.isMatrixFocus = false;\n    }\n\n    onMatrixClick(event: any): void {\n        this.isInFocus = true;\n\n        if (this.QSInput && this.QSInput.nativeElement) {\n            this.QSInput.nativeElement.focus();\n        }\n    }\n\n    onMatrixBlur(event: any): void {\n        if (\n            !event.relatedTarget ||\n            event.relatedTarget.className.indexOf('qs') < 0\n        ) {\n            this.isMatrixFocus = false;\n        }\n\n        this.onBlur(event);\n    }\n\n    onFocus(event: any): void {\n        this.isInFocus = true;\n\n        // setTimeout(() => {\n        //     if (this.isInFocus) {\n        //         const eventTarget = event.target || event.srcElement;\n        //         if (eventTarget) {\n        //             eventTarget.select();\n        //         }\n        //     }\n        // }, 0);\n    }\n\n    isDifferentValue(value: string): boolean {\n        const res = this.utilitiesService.isEqualNumber(this.valueAsCurrentCulture, value) === false;\n        return res;\n    }\n\n    onBlur(event: any): void {\n        this.isInFocus = false;\n        this.cleanError();\n        const value = event.target ? event.target.value : event;\n\n        // For decimal we need to replace the decimal separator back if it's comma (',').\n        const correctValue = this.allowDecimal ? this.utilitiesService.changeDecimalSeparatorWhenItsComma(value) : value;\n        \n        if (correctValue !== this.valueAsCurrentCulture && this.isDifferentValue(value)) {\n            this.value = correctValue;\n            this.valueChange.emit(this.value);\n        }\n        \n        this.focusToTheSameElementInTheWantedRow();\n    }\n\n    onKeydown(event): any {\n        const keyboardEvent = event as KeyboardEvent;\n\n        if (keyboardEvent.key === 'Enter') {\n            this.setSameElementInTheWantedRow(\n                keyboardEvent,\n                !keyboardEvent.shiftKey\n            );\n            return true;\n        }\n    }\n\n    increment(event): void {\n        if (this.standAlone) {\n            this.value = this.utilitiesService.incrementNumber(this.value);\n        }\n\n        this.elementClick.emit({\n            key: this.key,\n            value: PepQuantitySelectorComponent.PLUS,\n            controlType: this.controlType,\n            eventWhich: event.which,\n        });\n        event.stopPropagation();\n    }\n\n    decrement(event): void {\n        if (this.standAlone) {\n            this.value = this.utilitiesService.decrementNumber(this.value);\n        }\n\n        this.elementClick.emit({\n            key: this.key,\n            value: PepQuantitySelectorComponent.MINUS,\n            controlType: this.controlType,\n            eventWhich: event.which,\n        });\n        event.stopPropagation();\n    }\n\n    enterChildren(event): void {\n        this.elementClick.emit({\n            key: this.key,\n            value: PepQuantitySelectorComponent.ENTER_CHILDREN,\n            controlType: this.controlType,\n            eventWhich: event.which,\n        });\n    }\n\n    enterPackage(event): void {\n        this.elementClick.emit({\n            key: this.key,\n            value: PepQuantitySelectorComponent.ENTER_PACKAGE,\n            controlType: this.controlType,\n            eventWhich: event.which,\n            otherData: this.notificationInfo,\n        });\n    }\n\n    setupQsButtons(qsWidth: number) {\n        this.showQsBtn = qsWidth > 120;\n\n        if (!this.cd['destroyed']) {\n            this.cd.detectChanges();\n        }\n    }\n\n    setQsView(): void {\n        if (\n            this.QSCont &&\n            this.QSCont.nativeElement &&\n            this.QSCont.nativeElement.clientWidth > 0\n        ) {\n            setTimeout(() => {\n                this.qsWidthSubject.next(this.QSCont.nativeElement.clientWidth);\n            }, 0);\n        }\n    }\n}\n","<ng-container [formGroup]=\"form\">\n    <ng-template #pepTemplate>\n        <div #QSCont class=\"pep-quantity-selector-container {{ styleType }}\" [ngClass]=\"{\n                'hide-qs-actions' : layoutType === 'card' && rowSpan <= 1,\n                'pep-table-quantity-selector': layoutType === 'table',\n                'one-row': rowSpan === 1,\n                caution: isCaution,\n                'matrix-qs': type === 'qsForMatrix',\n                'zero-quantity': formattedValue === '0'\n            }\">\n            <pep-field-title *ngIf=\"renderTitle && layoutType !== 'table' && layoutType !== 'card'\" [label]=\"label\"\n                [mandatory]=\"mandatory\" [disabled]=\"disabled\" [showTitle]=\"showTitle\" [xAlignment]=\"xAlignment\">\n            </pep-field-title>\n\n            <ng-container *ngIf=\"type == 'qs'\">\n                <ng-container *ngIf=\"readonly; then readonlyBlock; else editableQSBlock\"></ng-container>\n                <ng-template #readonlyBlock>\n                    <button [id]=\"key\" mat-button class=\"pep-button {{ styleType }} disable \"\n                        [ngClass]=\"{caution: isCaution, md: rowSpan !== 1, xs: rowSpan === 1}\"\n                        title=\"{{ formattedValue }}\" disabled=\"true\">\n                        <span class=\"ellipsis\">\n                            {{ formattedValue }}\n                        </span>\n                    </button>\n                </ng-template>\n                <ng-template #editableQSBlock>\n                    <mat-form-field appearance=\"outline\">\n                        <input pepQsValidation [allowDecimal]=\"allowDecimal\" type=\"decimalNumber\" inputmode=\"decimal\"\n                            matInput #QSInput name=\"{{ key }}\" class=\"body-lg ellipsis\" title=\"{{ formattedValue }}\"\n                            autocomplete=\"off\" [id]=\"key\" [formControlName]=\"key\" [value]=\"displayValue$ | async\"\n                            (click)=\"$event.target.setSelectionRange(0, 999)\" (keydown)=\"onKeydown($event)\"\n                            (blur)=\"onBlur($event)\" (focus)=\"onFocus($event)\" />\n                        <button *ngIf=\"showQsBtn\" mat-button matPrefix (click)=\"decrement($event)\"\n                            class=\"pep-button icon-button sm weak qs-action\" [disabled]=\"disabled\" [ngClass]=\"{ disable: disabled, caution: isCaution && styleType !== 'strong',\n                                'keep-background-on-focus': styleType === 'strong'}\">\n                            <mat-icon>\n                                <pep-icon name=\"number_minus\">\n                                </pep-icon>\n                            </mat-icon>\n                        </button>\n                        <button *ngIf=\"showQsBtn\" mat-button matSuffix (click)=\"increment($event)\"\n                            class=\"pep-button icon-button sm weak qs-action\" [disabled]=\"disabled\" [ngClass]=\"{ disable: disabled, caution: isCaution && styleType !== 'strong',\n                                'keep-background-on-focus': styleType === 'strong'}\">\n                            <mat-icon>\n                                <pep-icon name=\"number_plus\">\n                                </pep-icon>\n                            </mat-icon>\n                        </button>\n                        <mat-error *ngIf=\"messages?.length > 0\">\n                            <span class=\"qs-error body-xs\" *ngFor=\"let msg of messages\"> {{ msg.Key | translate }} :\n                                {{ msg.Value }} </span>\n                        </mat-error>\n                    </mat-form-field>\n                </ng-template>\n            </ng-container>\n\n            <ng-container *ngIf=\"type == 'qsForMatrix'\">\n                <ng-container *ngIf=\"readonly; then readonlyBlock; else editableQSBlock\"></ng-container>\n                <ng-template #readonlyBlock>\n                    <button [id]=\"key\" mat-button class=\"pep-button {{ styleType }} disable\" disabled=\"true\"\n                        [ngClass]=\"{caution: isCaution, md: rowSpan !== 1, xs: rowSpan === 1}\">\n                        X\n                    </button>\n                </ng-template>\n                <ng-template #editableQSBlock>\n                    <span *ngIf=\" xAlignment=='right'\" class=\" body-sm additional-value prefix\"\n                        matBadge=\"{{ additionalValue }}\" matBadgePosition=\"before\"\n                        matBadgeSize=\"rowSpan === 1 ? small : medium\" [@showHide]=\"getAdditionalValue\"></span>\n\n                    <mat-form-field appearance=\"outline\" (mouseleave)=\"!isInFocus ? onMatrixMouseleave($event) : null\">\n                        <input pepQsValidation [allowDecimal]=\"allowDecimal\" type=\"decimalNumber\" inputmode=\"decimal\"\n                            matInput #QSInput name=\"{{ key }}\" title=\"{{ formattedValue }}\" class=\"body-sm ellipsis\"\n                            autocomplete=\"off\" [id]=\"key\" [formControlName]=\"key\" [value]=\"displayValue$ | async\"\n                            (click)=\"onMatrixClick($event); $event.target.setSelectionRange(0, 999)\"\n                            (keydown)=\"onKeydown($event)\" (blur)=\"onMatrixBlur($event)\"\n                            (focus)=\"onMatrixMouseEnter($event); onFocus($event)\"\n                            (mouseenter)=\"onMatrixMouseEnter($event)\" />\n\n                        <mat-error *ngIf=\"messages?.length > 0\">\n                            <span class=\"qs-error body-xs\" *ngFor=\"let msg of messages\"> {{ msg.Key | translate }} :\n                                {{ msg.Value }} </span>\n                        </mat-error>\n                    </mat-form-field>\n\n                    <span *ngIf=\"xAlignment != 'right'\" class=\"body-sm additional-value suffix\"\n                        matBadge=\"{{ additionalValue }}\" matBadgePosition=\"before\"\n                        matBadgeSize=\"rowSpan === 1 ? small : medium\" [@showHide]=\"getAdditionalValue\"></span>\n                </ng-template>\n            </ng-container>\n\n            <ng-container *ngIf=\"type == 'button'\">\n                <ng-container *ngIf=\"(value | pepToNumber) == 0; then regularBlock; else withBadgeBlock\">\n                </ng-container>\n                <ng-template #regularBlock>\n                    <button mat-button [disabled]=\"disabled\" class=\"pep-button {{ styleType }} \" [id]=\"key\"\n                        name=\"{{ key }}\"\n                        [ngClass]=\"{ disable: disabled, caution: isCaution, md: rowSpan !== 1, xs: rowSpan === 1}\"\n                        [title]=\"'QS.ORDER' | translate\" (click)=\"enterChildren($event)\">\n                        <span class=\"ellipsis\">\n                            {{ 'QS.ORDER' | translate }}\n                        </span>\n                    </button>\n                </ng-template>\n                <ng-template #withBadgeBlock>\n                    <button mat-button matBadge=\"{{ formattedValue }}\"\n                        matBadgePosition=\"{{xAlignment == 'right' ? 'before' : 'after'}}\"\n                        [matBadgeSize]=\"layoutType === 'card' && rowSpan === 1 ? 'small' : 'medium'\"\n                        class=\"pep-button {{ styleType }} \" [id]=\"key\" name=\"{{ key }}\" [ngClass]=\"{ disable: disabled, caution: isCaution, md: rowSpan !== 1, xs: rowSpan === 1,\n                            'right-alignment': xAlignment == 'right', 'left-alignment': xAlignment != 'right'}\"\n                        [title]=\"'QS.ORDER' | translate\" (click)=\"enterChildren($event)\" [disabled]=\"disabled\">\n                        <span class=\"ellipsis\">\n                            {{ 'QS.ORDER' | translate }}\n                        </span>\n                    </button>\n                </ng-template>\n            </ng-container>\n            <ng-container *ngIf=\"type == 'packageButton'\">\n                <button mat-button class=\"pep-button {{ styleType }} \" [id]=\"key\" name=\"{{ key }}\"\n                    [ngClass]=\"{ disable: disabled, caution: isCaution, md: rowSpan !== 1, xs: rowSpan === 1}\"\n                    [title]=\"'QS.ORDER' | translate\" (click)=\"enterPackage($event)\" [disabled]=\"disabled\">\n                    <span class=\"ellipsis\">\n                        {{ 'QS.ORDER' | translate }} &#40;{{ formattedValue }}&#41;\n                    </span>\n                </button>\n            </ng-container>\n        </div>\n    </ng-template>\n\n    <ng-container *ngIf=\"layoutType === 'form'\">\n        <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container>\n    </ng-container>\n\n    <ng-container *ngIf=\"layoutType === 'card'\">\n        <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container>\n    </ng-container>\n\n    <ng-container *ngIf=\"layoutType === 'table'\">\n        <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container>\n    </ng-container>\n</ng-container>","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'pepQuantitySelectorNumber' })\nexport class PepQuantitySelectorNumberPipe implements PipeTransform {\n    transform(value: string, allowDecimal: boolean): string {\n        const tmpValue = parseFloat(value);\n\n        if (tmpValue === 0) {\n            return '0';\n        } else if (allowDecimal) {\n            return tmpValue.toString();\n        } else {\n            return parseInt(value).toString();\n        }\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n    PepIconModule,\n    PepIconRegistry,\n    pepIconNumberMinus,\n    pepIconNumberPlus,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\n\nimport { PepQuantitySelectorComponent } from './quantity-selector.component';\nimport { PepQuantitySelectorValidationDirective } from './quantity-selector-validation.directive';\nimport { PepQuantitySelectorNumberPipe } from './quantity-selector.pipes';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        // Material modules\n        MatCommonModule,\n        MatFormFieldModule,\n        MatInputModule,\n        MatButtonModule,\n        MatBadgeModule,\n        MatIconModule,\n        // ngx-lib modules\n        PepNgxLibModule,\n        PepIconModule,\n        PepFieldTitleModule,\n    ],\n    exports: [PepQuantitySelectorComponent],\n    declarations: [\n        PepQuantitySelectorComponent,\n        PepQuantitySelectorNumberPipe,\n        PepQuantitySelectorValidationDirective,\n    ],\n})\nexport class PepQuantitySelectorModule {\n    constructor(private pepIconRegistry: PepIconRegistry) {\n        this.pepIconRegistry.registerIcons([\n            pepIconNumberMinus,\n            pepIconNumberPlus,\n        ]);\n    }\n}\n","/*\n * Public API Surface of ngx-lib/quantity-selector\n */\nexport * from './quantity-selector.module';\nexport * from './quantity-selector.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i10","i12.PepQuantitySelectorValidationDirective","i1"],"mappings":"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"}