{"version":3,"file":"deja-js-component-chips.mjs","sources":["../../../../projects/deja-js/component/chips/chips.component.ts","../../../../projects/deja-js/component/chips/chips.component.html","../../../../projects/deja-js/component/chips/chips-close.event.ts","../../../../projects/deja-js/component/chips/index.ts","../../../../projects/deja-js/component/chips/deja-js-component-chips.ts"],"sourcesContent":["/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Component, ContentChild, EventEmitter, HostBinding, Input, Optional, Output, Self, TemplateRef } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport { IDejaChipsComponentCloseEvent } from './chips-close.event';\n\n@Component({\n    selector: 'deja-chips',\n    styleUrls: [\n        './chips.component.scss'\n    ],\n    templateUrl: './chips.component.html'\n})\nexport class DejaChipsComponent implements ControlValueAccessor {\n    // eslint-disable-next-line @angular-eslint/no-output-native\n    @Output() public readonly close = new EventEmitter<IDejaChipsComponentCloseEvent>();\n\n    /** Retourne ou definit la liste des éléments. */\n    @Input() public _items: unknown[];\n\n    /** Retourne ou definit le champ à utiliser comme texte. */\n    @Input() public textField: string;\n\n    /** Template d'élément si définit extérieurement au composant */\n    @Input() public itemTemplateExternal: TemplateRef<unknown>;\n\n    /** Template de control d'insertion si définit extérieurement au composant */\n    @Input() public insertTemplateExternal: TemplateRef<unknown>;\n\n    @HostBinding('attr.disabled') public _disabled: boolean = null;\n\n    @ContentChild('itemTemplate') private itemTemplateInternal: TemplateRef<unknown>;\n\n    @ContentChild('insertTemplate') private insertTemplateInternal: TemplateRef<unknown>;\n\n    private _readonly = false;\n\n    public constructor(@Self() @Optional() public control: NgControl) {\n        if (this.control) {\n            this.control.valueAccessor = this;\n        }\n    }\n\n    /** Lecture seule */\n    @Input()\n    public set readonly(value: BooleanInput) {\n        this._readonly = coerceBooleanProperty(value) || null;\n    }\n\n    public get readonly(): BooleanInput {\n        return this._readonly;\n    }\n\n    /** Retourne ou definit si le selecteur est desactivé. */\n    @Input()\n    public set disabled(value: BooleanInput) {\n        this._disabled = coerceBooleanProperty(value) || null;\n    }\n\n    public get disabled(): BooleanInput {\n        return this._disabled;\n    }\n\n    @Input()\n    public set items(value: unknown[]) {\n        this.writeValue(value);\n    }\n\n    public get items(): unknown[] {\n        return this._items;\n    }\n\n    public get itemTemplate(): TemplateRef<unknown> {\n        return this.itemTemplateExternal || this.itemTemplateInternal;\n    }\n\n    public get insertTemplate(): TemplateRef<unknown> {\n        return this.insertTemplateExternal || this.insertTemplateInternal;\n    }\n\n    // ************* ControlValueAccessor Implementation **************\n    // set accessor including call the onchange callback\n    public set value(value: unknown[]) {\n        this.writeValue(value);\n        this.onChangeCallback(value);\n    }\n\n    // get accessor\n    public get value(): unknown[] {\n        return this._items;\n    }\n\n    // From ControlValueAccessor interface\n    public writeValue(value: unknown[]): void {\n        this._items = value;\n    }\n\n    // From ControlValueAccessor interface\n    public registerOnChange(fn: (_a: unknown) => void): void {\n        this.onChangeCallback = fn;\n    }\n\n    // From ControlValueAccessor interface\n    public registerOnTouched(fn: () => void): void {\n        this.onTouchedCallback = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n    // ************* End of ControlValueAccessor Implementation **************\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n    public getTextValue(value: any): string {\n        if (!value) {\n            return '';\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        } else if (this.textField && value.model && value.model[this.textField] !== undefined) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n            return value.model[this.textField];\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        } else if (this.textField && value[this.textField] !== undefined) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n            return value[this.textField];\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        } else if (value.displayName) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n            return typeof value.displayName === 'string' ? value.displayName : value.displayName();\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        } else if (typeof value.toString === 'function') {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n            return value.toString();\n        } else {\n            return '';\n        }\n    }\n\n    public onClose(closeEvent: Event, item: unknown, index: number): boolean {\n        const newEvent = new CustomEvent('DejaChipsCloseEvent', {}) as IDejaChipsComponentCloseEvent;\n        newEvent.item = item;\n        newEvent.index = index;\n        this.items.splice(index, 1);\n        this.onChangeCallback(this.items);\n        this.close.emit(newEvent);\n        closeEvent.stopPropagation();\n        return false;\n    }\n\n    protected onChangeCallback = (_a: unknown): void => undefined;\n    protected onTouchedCallback = (): void => undefined;\n}\n","<span class=\"chips-item\" *ngFor=\"let item of items; let index = index\">\n    <span *ngIf=\"itemTemplate;else caption\">\n        <ng-template [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item, index: index }\"></ng-template>\n    </span>\n    <ng-template #caption>\n        <span>{{ getTextValue(item) }}</span>\n    </ng-template>\n    <mat-icon id=\"close-button\" *ngIf=\"!readonly && !disabled\" (click)=\"onClose($event, item, index)\">close</mat-icon>\n</span>\n<span class=\"insert-item\" *ngIf=\"insertTemplate\">\n    <ng-template [ngTemplateOutlet]=\"insertTemplate\" [ngTemplateOutletContext]=\"{ }\"></ng-template>\n</span>\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nexport interface IDejaChipsComponentCloseEvent extends CustomEvent {\n    item: unknown;\n    index: number;\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { DejaChipsComponent } from './chips.component';\n\n@NgModule({\n    declarations: [DejaChipsComponent],\n    exports: [DejaChipsComponent],\n    imports: [\n        CommonModule,\n        FormsModule,\n        MatIconModule\n    ]\n})\nexport class DejaChipsModule { }\n\nexport * from './chips-close.event';\nexport * from './chips.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}