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