UNPKG

@obliczeniowo/elementary

Version:
1 lines 23.1 kB
{"version":3,"file":"obliczeniowo-elementary-dropdown-select.mjs","sources":["../../../../projects/components/dropdown-select/components/drag-bar/drag-bar.component.ts","../../../../projects/components/dropdown-select/components/drag-bar/drag-bar.component.html","../../../../projects/components/dropdown-select/components/dropdown-select/dropdown-select.component.ts","../../../../projects/components/dropdown-select/components/dropdown-select/dropdown-select.component.html","../../../../projects/components/dropdown-select/dropdown-select.module.ts","../../../../projects/components/dropdown-select/obliczeniowo-elementary-dropdown-select.ts"],"sourcesContent":["import { Component, HostListener, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'obl-drag-bar',\n templateUrl: './drag-bar.component.html',\n styleUrls: ['./drag-bar.component.scss'],\n standalone: false\n})\nexport class DragBarComponent {\n touchedDragBar = false;\n\n // tslint:disable-next-line: no-output-on-prefix\n @Output() onTouched: EventEmitter<boolean> = new EventEmitter<boolean>();\n // tslint:disable-next-line: no-output-on-prefix\n @Output() onClose: EventEmitter<void> = new EventEmitter<void>();\n\n @HostListener('click', ['$event']) click(event: any): void {\n this.touchedDragBar = true;\n this.onTouched.emit(this.touchedDragBar);\n }\n}\n","<div [class.touched]=\"touchedDragBar\"></div>\n@if (touchedDragBar) {\n <button (click)=\"onClose.emit()\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 6.3499999 6.3500002\">\n <path\n d=\"M 6 3 L 4 5 L 10.5 11.5 L 4 18 L 6 20 L 12.5 13.5 L 19 20 L 21 18 L 14.5 11.5 L 21 5 L 19 3 L 12.5 9.5 L 6 3 z \"\n transform=\"scale(0.26458333)\"\n />\n </svg>\n </button>\n}\n","import { Subscription } from 'rxjs';\nimport { Animations } from '@obliczeniowo/elementary/animations';\nimport { DragBarComponent } from './../drag-bar/drag-bar.component';\nimport {\n Component,\n Input,\n OnInit,\n Output,\n TemplateRef,\n EventEmitter,\n HostBinding,\n OnDestroy,\n SimpleChanges,\n input,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n FormControl,\n} from '@angular/forms';\nimport { debounceTime } from 'rxjs/operators';\nimport { cloneDeep } from 'lodash';\n\nimport {\n AbstractSearchDomain,\n DefaultSearchDomain,\n} from '@obliczeniowo/elementary/classes';\nimport { InputWrappersDefaultSettingsService } from '@obliczeniowo/elementary/input';\n\nexport interface DropdownSelectItem<T> {\n id: string | number;\n text: string;\n templateData?: T;\n}\n\n@Component({\n selector: 'obl-dropdown-select',\n templateUrl: './dropdown-select.component.html',\n styleUrls: ['./dropdown-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: DropdownSelectComponent,\n },\n ],\n animations: [Animations.rotate180deg],\n standalone: false\n})\nexport class DropdownSelectComponent\n implements OnInit, OnDestroy, ControlValueAccessor\n{\n protected touchedDragBar = false;\n\n /**\n * Control the select items data flow.\n *\n * If you want to override this one for getting data from BE source for example just create\n * own class that extends AbstractSearchModel and do what you need to do to filter out items\n * list\n */\n model = input<AbstractSearchDomain<DropdownSelectItem<any>>>(new DefaultSearchDomain<DropdownSelectItem<any>>([]));\n\n @Input()\n items!: DropdownSelectItem<any>[];\n\n /** Label to display over the field (default undefined so it will have no label at all) */\n label = input<string>();\n\n /**\n * Enable type text animation for label\n */\n @Input() labelAnimation = false;\n\n /** Template for suffix, if exist display after select item */\n templateSuffix = input<TemplateRef<any>>();\n\n /** Template for prefix, if exist display before select item */\n templatePrefix = input<TemplateRef<any>>();\n\n /** Define if search control should shows up */\n @Input()\n search = false;\n\n @Input()\n regExp?: { on?: boolean };\n\n /** */\n @Input()\n select!: string | number;\n\n /** disable choosing element, search (if added) is available and dropdown list too */\n @Input()\n @HostBinding('class.disabled')\n disabled = false;\n\n /** emit when selected item is changed by user */\n @Output()\n changed: EventEmitter<DropdownSelectItem<any>> = new EventEmitter<\n DropdownSelectItem<any>\n >();\n\n /** search control */\n searchControl: FormControl = new FormControl('');\n\n /** selected item */\n selected: DropdownSelectItem<any> | undefined;\n\n /** define if list is opened */\n isOpen = false;\n /** define if element is touched */\n touched = false;\n\n protected subscription!: Subscription;\n\n constructor(private readonly settings: InputWrappersDefaultSettingsService) {\n this.subscription = this.searchControl.valueChanges\n .pipe(debounceTime(500))\n .subscribe((value) => {\n this.model().search(value);\n });\n this.labelAnimation = this.settings.labelAnimation.select;\n }\n\n onChange = (value: string | number) => {};\n\n onTouched = () => {};\n\n registerOnValidatorChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n toggleReg() {\n this.model().regExpOn = !this.model().regExpOn;\n this.model().search(this.searchControl.getRawValue());\n }\n\n writeValue(id: number | string): void {\n const select = this.model().filtered.find((item) => item.id === id);\n if (select) {\n this.selected = select;\n this.select = select.id;\n }\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n markAsTouched(): void {\n if (this.disabled) {\n return;\n }\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n ngOnInit(): void {\n if (!this.selected && this.model().filtered.length) {\n this.selected =\n this.select !== undefined\n // eslint-disable-next-line eqeqeq\n ? this.model().filtered.find((item) => item.id == this.select)\n : this.model().filtered[0];\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.items) {\n this.model().items = this.items;\n this.model().filtered = this.items;\n if (\n this.selected &&\n !this.model().items.find((item) => item.id === this.selected?.id)\n ) {\n this.selected = undefined;\n }\n }\n if (changes.select) {\n this.selected =\n this.select !== undefined\n // eslint-disable-next-line eqeqeq\n ? this.model().filtered.find((item) => item.id == this.select)\n : this.model().filtered[0];\n }\n if (changes.regExp) {\n if (this.regExp) {\n this.model().regExpOn = this.regExp.on || false;\n this.model().search(this.searchControl.getRawValue());\n }\n }\n if (changes.search && !changes.search.firstChange) {\n if (!this.search) {\n this.searchControl.setValue('');\n this.model().search(this.searchControl.getRawValue());\n }\n }\n }\n\n ngOnDestroy(): void {\n if (this.subscription?.closed) {\n this.subscription.unsubscribe();\n }\n }\n\n close(touched = this.touchedDragBar): void {\n if (!touched) {\n this.isOpen = false;\n this.touchedDragBar = false;\n } else {\n this.touchedDragBar = touched;\n }\n }\n\n open(): void {\n if (!this.isOpen) {\n this.isOpen = true;\n this.touchedDragBar = false;\n }\n }\n\n toggle(event: any, touched = this.touchedDragBar): void {\n if (touched) {\n return;\n }\n event.stopPropagation();\n this.touchedDragBar = false;\n this.isOpen = !this.isOpen;\n }\n\n onSelect(item: DropdownSelectItem<any>, dragBar: DragBarComponent): void {\n if (this.disabled) {\n return;\n }\n this.selected = item;\n this.onChange(this.selected.id);\n this.close(dragBar.touchedDragBar);\n this.changed.emit({\n ...this.selected,\n templateData: this.selected.templateData\n ? cloneDeep(this.selected.templateData)\n : undefined,\n });\n }\n\n onTouchedDragBar(touched: boolean, element: any): void {\n this.touchedDragBar = touched;\n element.parentElement.style.width = 0;\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n}\n","<obl-input-wrapper\n [label]=\"label() || ''\"\n [labelAnimation]=\"labelAnimation\"\n class=\"select-content\"\n cdkOverlayOrigin\n #dropDown=\"cdkOverlayOrigin\"\n #parent\n>\n @if (templatePrefix()) {\n <ng-container\n *ngTemplateOutlet=\"templatePrefix()!; context: { $implicit: selected }\"\n ></ng-container>\n }\n <input\n type=\"text\"\n readonly\n oblInput\n [value]=\"(selected && selected.text) || ''\"\n (click)=\"toggle($event, false)\"\n />\n @if (templateSuffix()) {\n <ng-container\n *ngTemplateOutlet=\"templateSuffix()!; context: { $implicit: selected }\"\n ></ng-container>\n }\n <ng-content select=\"[suffix]\"></ng-content>\n <obl-expand-button\n [isOpen]=\"isOpen\"\n class=\"dropdown\"\n (click)=\"toggle($event, false)\"\n ></obl-expand-button>\n</obl-input-wrapper>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"dropDown\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayOffsetX]=\"2\"\n (overlayOutsideClick)=\"toggle($event)\"\n>\n <div\n class=\"dropdown-list\"\n [class.disabled]=\"disabled\"\n [style.min-width.px]=\"parent.elementRef.nativeElement.clientWidth - 7\"\n #list\n cdkDrag\n >\n <obl-drag-bar\n (onTouched)=\"onTouchedDragBar($event, list)\"\n (onClose)=\"close(false)\"\n cdkDragHandle\n #dragBar\n ></obl-drag-bar>\n @if (search) {\n <obl-input-wrapper\n [display]=\"'underlined'\"\n [cancellable]=\"true\"\n >\n <input oblInput type=\"search\" [formControl]=\"searchControl\" />\n @if (regExp) {\n <button\n oblButton\n [selected]=\"model().regExpOn\"\n (click)=\"toggleReg()\"\n >\n Reg\n </button>\n }\n </obl-input-wrapper>\n }\n <div class=\"list\">\n @for (item of model().filtered; track item.id) {\n @if (item !== selected) {\n <div\n class=\"item-container\"\n (click)=\"onSelect(item, dragBar)\"\n >\n @if (templatePrefix()) {\n <ng-container\n *ngTemplateOutlet=\"templatePrefix()!; context: { $implicit: item }\"\n ></ng-container>\n }\n <div class=\"item\">{{ item.text }}</div>\n @if(templateSuffix()) {\n <ng-container\n *ngTemplateOutlet=\"templateSuffix()!; context: { $implicit: item }\"\n ></ng-container>\n }\n </div>\n }\n }\n </div>\n </div>\n</ng-template>\n","import { InputModule } from '@obliczeniowo/elementary/input';\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DropdownSelectComponent } from './components/dropdown-select/dropdown-select.component';\nimport { DragBarComponent } from './components/drag-bar/drag-bar.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [\n DropdownSelectComponent,\n DragBarComponent\n ],\n imports: [\n CommonModule,\n OverlayModule,\n DragDropModule,\n FormsModule,\n ButtonsModule,\n InputModule,\n ReactiveFormsModule\n ],\n exports: [\n DropdownSelectComponent,\n DragBarComponent\n ]\n})\nexport class DropdownSelectModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i7.DragBarComponent"],"mappings":"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"}