@obliczeniowo/elementary
Version:
Library made in Angular version 20
297 lines (291 loc) • 32.1 kB
JavaScript
import * as i1 from '@obliczeniowo/elementary/input';
import { InputModule } from '@obliczeniowo/elementary/input';
import * as i6 from '@obliczeniowo/elementary/buttons';
import { ButtonsModule } from '@obliczeniowo/elementary/buttons';
import * as i3 from '@angular/cdk/overlay';
import { OverlayModule } from '@angular/cdk/overlay';
import * as i4 from '@angular/cdk/drag-drop';
import { DragDropModule } from '@angular/cdk/drag-drop';
import * as i0 from '@angular/core';
import { EventEmitter, HostListener, Output, Component, input, Input, HostBinding, NgModule } from '@angular/core';
import * as i2 from '@angular/common';
import { CommonModule } from '@angular/common';
import { Animations } from '@obliczeniowo/elementary/animations';
import * as i5 from '@angular/forms';
import { FormControl, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
import { debounceTime } from 'rxjs/operators';
import { cloneDeep } from 'lodash';
import { DefaultSearchDomain } from '@obliczeniowo/elementary/classes';
class DragBarComponent {
touchedDragBar = false;
// tslint:disable-next-line: no-output-on-prefix
onTouched = new EventEmitter();
// tslint:disable-next-line: no-output-on-prefix
onClose = new EventEmitter();
click(event) {
this.touchedDragBar = true;
this.onTouched.emit(this.touchedDragBar);
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: DragBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: DragBarComponent, isStandalone: false, selector: "obl-drag-bar", outputs: { onTouched: "onTouched", onClose: "onClose" }, host: { listeners: { "click": "click($event)" } }, ngImport: i0, template: "<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", styles: [":root{--obl-primary: #00afaf;--obl-secondary: #008caf;--default-border-color: gray;--default-focus-color: gray;--default-border-outline-color: #080808;--default-disabled-color: gray;--default-background-color: white;--default-hover-color: #eeeeee;--obl-default-error-color: red;--obl-dialog-background: #d3d3d3;--default-radio-color: black;--disabled-color: gray;--default-hex-button-border-color: #008caf;--default-hex-button-hover-border-color: #00afaf;--select-item-background-color: #e4e4e4;--select-item-text-color: #5a5a5a;--default-text-color: black;--obl-default-button-text-color: black;--obl-default-icon-color: black;--equalizer-background-bar-color: #575656;--equalizer-value-bar-color: #e6e6e6;--diagram-3d-background-color: black;--slider-value-container-color: gray;--slider-value-color: #d1d1d1;--slider-hover-value-color: white;--digit-fill-color: #cccccc;--digit-lighted-color: black;--horizontal-progress-bar-value-color: #504f4f;--horizontal-progress-bar-background-pattern-color: #dddddd;--horizontal-progress-bar-value-pattern-color: #b3b3b3;--horizontal-progress-bar-border-rect-color: #cccccc;--temperature-text-color: black;--temperature-path-stroke-color: black;--post-diagram-scale-line-color: #c8c8c8;--volume-channel-secondary-color: gray;--volume-channel-primary-color: #f2f2f2;--arch-progress-secondary-color: #eeeeee;--obl-linear-diagram-greed-color: gray;--obl-rating-selected-color: gold;--obl-rating-color: #cccccc}:root{--obl-spinner-width: 30px;--obl-font-size: 14px}:host{display:flex;align-items:center;height:15px;cursor:move;border-radius:5px 5px 0 0}:host div{margin:0 5px;border-top:1.5px solid var(--default-border-color);border-bottom:1.5px solid var(--default-border-color);width:100%;height:2px}:host div.touched{margin:0 0 0 5px}:host button{width:15px;height:15px;margin-left:5px}:host:hover{background-color:var(--default-hover-color)}path{fill:var(--default-text-color)}button{background:none;color:inherit;border:none;padding:0;font:inherit;cursor:pointer;display:flex;align-items:center}\n"] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: DragBarComponent, decorators: [{
type: Component,
args: [{ selector: 'obl-drag-bar', standalone: false, template: "<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", styles: [":root{--obl-primary: #00afaf;--obl-secondary: #008caf;--default-border-color: gray;--default-focus-color: gray;--default-border-outline-color: #080808;--default-disabled-color: gray;--default-background-color: white;--default-hover-color: #eeeeee;--obl-default-error-color: red;--obl-dialog-background: #d3d3d3;--default-radio-color: black;--disabled-color: gray;--default-hex-button-border-color: #008caf;--default-hex-button-hover-border-color: #00afaf;--select-item-background-color: #e4e4e4;--select-item-text-color: #5a5a5a;--default-text-color: black;--obl-default-button-text-color: black;--obl-default-icon-color: black;--equalizer-background-bar-color: #575656;--equalizer-value-bar-color: #e6e6e6;--diagram-3d-background-color: black;--slider-value-container-color: gray;--slider-value-color: #d1d1d1;--slider-hover-value-color: white;--digit-fill-color: #cccccc;--digit-lighted-color: black;--horizontal-progress-bar-value-color: #504f4f;--horizontal-progress-bar-background-pattern-color: #dddddd;--horizontal-progress-bar-value-pattern-color: #b3b3b3;--horizontal-progress-bar-border-rect-color: #cccccc;--temperature-text-color: black;--temperature-path-stroke-color: black;--post-diagram-scale-line-color: #c8c8c8;--volume-channel-secondary-color: gray;--volume-channel-primary-color: #f2f2f2;--arch-progress-secondary-color: #eeeeee;--obl-linear-diagram-greed-color: gray;--obl-rating-selected-color: gold;--obl-rating-color: #cccccc}:root{--obl-spinner-width: 30px;--obl-font-size: 14px}:host{display:flex;align-items:center;height:15px;cursor:move;border-radius:5px 5px 0 0}:host div{margin:0 5px;border-top:1.5px solid var(--default-border-color);border-bottom:1.5px solid var(--default-border-color);width:100%;height:2px}:host div.touched{margin:0 0 0 5px}:host button{width:15px;height:15px;margin-left:5px}:host:hover{background-color:var(--default-hover-color)}path{fill:var(--default-text-color)}button{background:none;color:inherit;border:none;padding:0;font:inherit;cursor:pointer;display:flex;align-items:center}\n"] }]
}], propDecorators: { onTouched: [{
type: Output
}], onClose: [{
type: Output
}], click: [{
type: HostListener,
args: ['click', ['$event']]
}] } });
class DropdownSelectComponent {
settings;
touchedDragBar = false;
/**
* Control the select items data flow.
*
* If you want to override this one for getting data from BE source for example just create
* own class that extends AbstractSearchModel and do what you need to do to filter out items
* list
*/
model = input(new DefaultSearchDomain([]));
items;
/** Label to display over the field (default undefined so it will have no label at all) */
label = input();
/**
* Enable type text animation for label
*/
labelAnimation = false;
/** Template for suffix, if exist display after select item */
templateSuffix = input();
/** Template for prefix, if exist display before select item */
templatePrefix = input();
/** Define if search control should shows up */
search = false;
regExp;
/** */
select;
/** disable choosing element, search (if added) is available and dropdown list too */
disabled = false;
/** emit when selected item is changed by user */
changed = new EventEmitter();
/** search control */
searchControl = new FormControl('');
/** selected item */
selected;
/** define if list is opened */
isOpen = false;
/** define if element is touched */
touched = false;
subscription;
constructor(settings) {
this.settings = settings;
this.subscription = this.searchControl.valueChanges
.pipe(debounceTime(500))
.subscribe((value) => {
this.model().search(value);
});
this.labelAnimation = this.settings.labelAnimation.select;
}
onChange = (value) => { };
onTouched = () => { };
registerOnValidatorChange(fn) {
this.onChange = fn;
}
toggleReg() {
this.model().regExpOn = !this.model().regExpOn;
this.model().search(this.searchControl.getRawValue());
}
writeValue(id) {
const select = this.model().filtered.find((item) => item.id === id);
if (select) {
this.selected = select;
this.select = select.id;
}
}
registerOnChange(onChange) {
this.onChange = onChange;
}
registerOnTouched(onTouched) {
this.onTouched = onTouched;
}
markAsTouched() {
if (this.disabled) {
return;
}
if (!this.touched) {
this.onTouched();
this.touched = true;
}
}
ngOnInit() {
if (!this.selected && this.model().filtered.length) {
this.selected =
this.select !== undefined
// eslint-disable-next-line eqeqeq
? this.model().filtered.find((item) => item.id == this.select)
: this.model().filtered[0];
}
}
ngOnChanges(changes) {
if (changes.items) {
this.model().items = this.items;
this.model().filtered = this.items;
if (this.selected &&
!this.model().items.find((item) => item.id === this.selected?.id)) {
this.selected = undefined;
}
}
if (changes.select) {
this.selected =
this.select !== undefined
// eslint-disable-next-line eqeqeq
? this.model().filtered.find((item) => item.id == this.select)
: this.model().filtered[0];
}
if (changes.regExp) {
if (this.regExp) {
this.model().regExpOn = this.regExp.on || false;
this.model().search(this.searchControl.getRawValue());
}
}
if (changes.search && !changes.search.firstChange) {
if (!this.search) {
this.searchControl.setValue('');
this.model().search(this.searchControl.getRawValue());
}
}
}
ngOnDestroy() {
if (this.subscription?.closed) {
this.subscription.unsubscribe();
}
}
close(touched = this.touchedDragBar) {
if (!touched) {
this.isOpen = false;
this.touchedDragBar = false;
}
else {
this.touchedDragBar = touched;
}
}
open() {
if (!this.isOpen) {
this.isOpen = true;
this.touchedDragBar = false;
}
}
toggle(event, touched = this.touchedDragBar) {
if (touched) {
return;
}
event.stopPropagation();
this.touchedDragBar = false;
this.isOpen = !this.isOpen;
}
onSelect(item, dragBar) {
if (this.disabled) {
return;
}
this.selected = item;
this.onChange(this.selected.id);
this.close(dragBar.touchedDragBar);
this.changed.emit({
...this.selected,
templateData: this.selected.templateData
? cloneDeep(this.selected.templateData)
: undefined,
});
}
onTouchedDragBar(touched, element) {
this.touchedDragBar = touched;
element.parentElement.style.width = 0;
}
setDisabledState(disabled) {
this.disabled = disabled;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: DropdownSelectComponent, deps: [{ token: i1.InputWrappersDefaultSettingsService }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: DropdownSelectComponent, isStandalone: false, selector: "obl-dropdown-select", inputs: { model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelAnimation: { classPropertyName: "labelAnimation", publicName: "labelAnimation", isSignal: false, isRequired: false, transformFunction: null }, templateSuffix: { classPropertyName: "templateSuffix", publicName: "templateSuffix", isSignal: true, isRequired: false, transformFunction: null }, templatePrefix: { classPropertyName: "templatePrefix", publicName: "templatePrefix", isSignal: true, isRequired: false, transformFunction: null }, search: { classPropertyName: "search", publicName: "search", isSignal: false, isRequired: false, transformFunction: null }, regExp: { classPropertyName: "regExp", publicName: "regExp", isSignal: false, isRequired: false, transformFunction: null }, select: { classPropertyName: "select", publicName: "select", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { changed: "changed" }, host: { properties: { "class.disabled": "this.disabled" } }, providers: [
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: DropdownSelectComponent,
},
], usesOnChanges: true, ngImport: i0, template: "<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", styles: [":root{--obl-primary: #00afaf;--obl-secondary: #008caf;--default-border-color: gray;--default-focus-color: gray;--default-border-outline-color: #080808;--default-disabled-color: gray;--default-background-color: white;--default-hover-color: #eeeeee;--obl-default-error-color: red;--obl-dialog-background: #d3d3d3;--default-radio-color: black;--disabled-color: gray;--default-hex-button-border-color: #008caf;--default-hex-button-hover-border-color: #00afaf;--select-item-background-color: #e4e4e4;--select-item-text-color: #5a5a5a;--default-text-color: black;--obl-default-button-text-color: black;--obl-default-icon-color: black;--equalizer-background-bar-color: #575656;--equalizer-value-bar-color: #e6e6e6;--diagram-3d-background-color: black;--slider-value-container-color: gray;--slider-value-color: #d1d1d1;--slider-hover-value-color: white;--digit-fill-color: #cccccc;--digit-lighted-color: black;--horizontal-progress-bar-value-color: #504f4f;--horizontal-progress-bar-background-pattern-color: #dddddd;--horizontal-progress-bar-value-pattern-color: #b3b3b3;--horizontal-progress-bar-border-rect-color: #cccccc;--temperature-text-color: black;--temperature-path-stroke-color: black;--post-diagram-scale-line-color: #c8c8c8;--volume-channel-secondary-color: gray;--volume-channel-primary-color: #f2f2f2;--arch-progress-secondary-color: #eeeeee;--obl-linear-diagram-greed-color: gray;--obl-rating-selected-color: gold;--obl-rating-color: #cccccc}:root{--obl-spinner-width: 30px;--obl-font-size: 14px}:host{font-size:var(--obl-font-size);display:flex}:host.disabled{color:var(--disabled-color)}.select-content{display:flex;width:100%}.select-content input{width:100%;outline:none}.select-content :focus{border:1px dotted var(--default-focus-color)}.dropdown-list{background-color:var(--default-background-color);border-radius:5px;border:1px solid var(--default-border-color);display:flex;flex-direction:column;width:100%;font-size:var(--obl-font-size)}.dropdown-list.disabled{color:var(--disabled-color)}.dropdown-list .list{display:flex;flex-direction:column;max-height:300px;overflow:auto;scrollbar-width:thin}.dropdown-list .list::-webkit-scrollbar{width:9px}.dropdown-list .list::-webkit-scrollbar-track{background:transparent}.dropdown-list .list::-webkit-scrollbar-thumb{background-color:#9b9b9b80;border-radius:20px;border:transparent}.dropdown-list .list .item-container{padding:5px;cursor:pointer;display:flex;align-items:center}.dropdown-list .list .item-container:hover{background-color:var(--default-hover-color)}.dropdown-list .list .item-container .item{width:100%}.dropdown-list obl-input-wrapper button{--obl-default-button-padding: 5.5px}.dropdown-list obl-input-wrapper::ng-deep button:first-of-type{border-top-left-radius:5px;border-bottom-left-radius:5px}.dropdown-list obl-input-wrapper::ng-deep button:last-of-type{border-top-right-radius:5px;border-bottom-right-radius:5px}\n"], dependencies: [{ kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i6.ExpandButtonComponent, selector: "obl-expand-button", inputs: ["isOpen"] }, { kind: "directive", type: i6.ButtonDirective, selector: "oblButton, [oblButton]", inputs: ["oblButton", "icon", "blockWhenLoading", "loading", "toggle", "selected", "link", "target"], exportAs: ["oblButton"] }, { kind: "directive", type: i1.InputDirective, selector: "input[oblInput]", inputs: ["outlined"], exportAs: ["oblInput"] }, { kind: "component", type: i1.InputWrapperComponent, selector: "obl-input-wrapper", inputs: ["label", "display", "cancellable", "step", "errors", "translations", "labelAnimation", "small"], outputs: ["loaded"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: DragBarComponent, selector: "obl-drag-bar", outputs: ["onTouched", "onClose"] }], animations: [Animations.rotate180deg] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: DropdownSelectComponent, decorators: [{
type: Component,
args: [{ selector: 'obl-dropdown-select', providers: [
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: DropdownSelectComponent,
},
], animations: [Animations.rotate180deg], standalone: false, template: "<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", styles: [":root{--obl-primary: #00afaf;--obl-secondary: #008caf;--default-border-color: gray;--default-focus-color: gray;--default-border-outline-color: #080808;--default-disabled-color: gray;--default-background-color: white;--default-hover-color: #eeeeee;--obl-default-error-color: red;--obl-dialog-background: #d3d3d3;--default-radio-color: black;--disabled-color: gray;--default-hex-button-border-color: #008caf;--default-hex-button-hover-border-color: #00afaf;--select-item-background-color: #e4e4e4;--select-item-text-color: #5a5a5a;--default-text-color: black;--obl-default-button-text-color: black;--obl-default-icon-color: black;--equalizer-background-bar-color: #575656;--equalizer-value-bar-color: #e6e6e6;--diagram-3d-background-color: black;--slider-value-container-color: gray;--slider-value-color: #d1d1d1;--slider-hover-value-color: white;--digit-fill-color: #cccccc;--digit-lighted-color: black;--horizontal-progress-bar-value-color: #504f4f;--horizontal-progress-bar-background-pattern-color: #dddddd;--horizontal-progress-bar-value-pattern-color: #b3b3b3;--horizontal-progress-bar-border-rect-color: #cccccc;--temperature-text-color: black;--temperature-path-stroke-color: black;--post-diagram-scale-line-color: #c8c8c8;--volume-channel-secondary-color: gray;--volume-channel-primary-color: #f2f2f2;--arch-progress-secondary-color: #eeeeee;--obl-linear-diagram-greed-color: gray;--obl-rating-selected-color: gold;--obl-rating-color: #cccccc}:root{--obl-spinner-width: 30px;--obl-font-size: 14px}:host{font-size:var(--obl-font-size);display:flex}:host.disabled{color:var(--disabled-color)}.select-content{display:flex;width:100%}.select-content input{width:100%;outline:none}.select-content :focus{border:1px dotted var(--default-focus-color)}.dropdown-list{background-color:var(--default-background-color);border-radius:5px;border:1px solid var(--default-border-color);display:flex;flex-direction:column;width:100%;font-size:var(--obl-font-size)}.dropdown-list.disabled{color:var(--disabled-color)}.dropdown-list .list{display:flex;flex-direction:column;max-height:300px;overflow:auto;scrollbar-width:thin}.dropdown-list .list::-webkit-scrollbar{width:9px}.dropdown-list .list::-webkit-scrollbar-track{background:transparent}.dropdown-list .list::-webkit-scrollbar-thumb{background-color:#9b9b9b80;border-radius:20px;border:transparent}.dropdown-list .list .item-container{padding:5px;cursor:pointer;display:flex;align-items:center}.dropdown-list .list .item-container:hover{background-color:var(--default-hover-color)}.dropdown-list .list .item-container .item{width:100%}.dropdown-list obl-input-wrapper button{--obl-default-button-padding: 5.5px}.dropdown-list obl-input-wrapper::ng-deep button:first-of-type{border-top-left-radius:5px;border-bottom-left-radius:5px}.dropdown-list obl-input-wrapper::ng-deep button:last-of-type{border-top-right-radius:5px;border-bottom-right-radius:5px}\n"] }]
}], ctorParameters: () => [{ type: i1.InputWrappersDefaultSettingsService }], propDecorators: { items: [{
type: Input
}], labelAnimation: [{
type: Input
}], search: [{
type: Input
}], regExp: [{
type: Input
}], select: [{
type: Input
}], disabled: [{
type: Input
}, {
type: HostBinding,
args: ['class.disabled']
}], changed: [{
type: Output
}] } });
class DropdownSelectModule {
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: DropdownSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.4", ngImport: i0, type: DropdownSelectModule, declarations: [DropdownSelectComponent,
DragBarComponent], imports: [CommonModule,
OverlayModule,
DragDropModule,
FormsModule,
ButtonsModule,
InputModule,
ReactiveFormsModule], exports: [DropdownSelectComponent,
DragBarComponent] });
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: DropdownSelectModule, imports: [CommonModule,
OverlayModule,
DragDropModule,
FormsModule,
ButtonsModule,
InputModule,
ReactiveFormsModule] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: DropdownSelectModule, decorators: [{
type: NgModule,
args: [{
declarations: [
DropdownSelectComponent,
DragBarComponent
],
imports: [
CommonModule,
OverlayModule,
DragDropModule,
FormsModule,
ButtonsModule,
InputModule,
ReactiveFormsModule
],
exports: [
DropdownSelectComponent,
DragBarComponent
]
}]
}] });
/**
* Generated bundle index. Do not edit.
*/
export { DragBarComponent, DropdownSelectComponent, DropdownSelectModule };
//# sourceMappingURL=obliczeniowo-elementary-dropdown-select.mjs.map