nira-falcon 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -251,12 +251,17 @@ class CoreCheckboxComponent {
251
251
  change(event) {
252
252
  this.onChange.emit(event);
253
253
  }
254
+ handleKey(event) {
255
+ if (event.key === 'Enter') {
256
+ this.checked = !this.checked;
257
+ }
258
+ }
254
259
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
255
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: { label: "label", name: "name", checked: "checked", inputFormControl: "inputFormControl" }, outputs: { onChange: "onChange" }, ngImport: i0, template: "<div class=\"flex gap-3\">\r\n <input\r\n type=\"checkbox\"\r\n [name]=\"name\"\r\n [(ngModel)]=\"checked\"\r\n (change)=\"change($event)\"\r\n />\r\n <span class=\"checkmark\">{{ label }}</span>\r\n</div>\r\n", styles: [".container{display:inline;position:relative;padding-left:35px;margin-bottom:12px;cursor:pointer;font-size:18px;padding-inline:8px;-webkit-user-select:none;user-select:none}.label{padding-right:8px}.container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.container:hover input~.checkmark{background-color:var(--default-checkbox-input-hover-background-color)}.container input:checked~.checkmark{background-color:var(--default-checkbox-input-checked-background-color)}.checkmark:after{content:\"\";position:absolute;display:none}.container input:checked~.checkmark:after{display:block}.container .checkmark:after{left:10px;top:4px;width:4px;height:10px;border:solid white;border-width:0 3px 3px 0;transform:rotate(45deg)}.container{font-size:13px;font-weight:500}\n"], dependencies: [{ kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
260
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: { label: "label", name: "name", checked: "checked", inputFormControl: "inputFormControl" }, outputs: { onChange: "onChange" }, ngImport: i0, template: "<div class=\"flex gap-3\" (keydown)=\"handleKey($event)\">\r\n <input\r\n type=\"checkbox\"\r\n [name]=\"name\"\r\n [(ngModel)]=\"checked\"\r\n (change)=\"change($event)\"\r\n />\r\n <span class=\"checkmark\">{{ label }}</span>\r\n</div>\r\n", styles: [".container{display:inline;position:relative;padding-left:35px;margin-bottom:12px;cursor:pointer;font-size:18px;padding-inline:8px;-webkit-user-select:none;user-select:none}.label{padding-right:8px}.container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.container:hover input~.checkmark{background-color:var(--default-checkbox-input-hover-background-color)}.container input:checked~.checkmark{background-color:var(--default-checkbox-input-checked-background-color)}.checkmark:after{content:\"\";position:absolute;display:none}.container input:checked~.checkmark:after{display:block}.container .checkmark:after{left:10px;top:4px;width:4px;height:10px;border:solid white;border-width:0 3px 3px 0;transform:rotate(45deg)}.container{font-size:13px;font-weight:500}\n"], dependencies: [{ kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
256
261
  }
257
262
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreCheckboxComponent, decorators: [{
258
263
  type: Component,
259
- args: [{ selector: 'core-checkbox', template: "<div class=\"flex gap-3\">\r\n <input\r\n type=\"checkbox\"\r\n [name]=\"name\"\r\n [(ngModel)]=\"checked\"\r\n (change)=\"change($event)\"\r\n />\r\n <span class=\"checkmark\">{{ label }}</span>\r\n</div>\r\n", styles: [".container{display:inline;position:relative;padding-left:35px;margin-bottom:12px;cursor:pointer;font-size:18px;padding-inline:8px;-webkit-user-select:none;user-select:none}.label{padding-right:8px}.container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.container:hover input~.checkmark{background-color:var(--default-checkbox-input-hover-background-color)}.container input:checked~.checkmark{background-color:var(--default-checkbox-input-checked-background-color)}.checkmark:after{content:\"\";position:absolute;display:none}.container input:checked~.checkmark:after{display:block}.container .checkmark:after{left:10px;top:4px;width:4px;height:10px;border:solid white;border-width:0 3px 3px 0;transform:rotate(45deg)}.container{font-size:13px;font-weight:500}\n"] }]
264
+ args: [{ selector: 'core-checkbox', template: "<div class=\"flex gap-3\" (keydown)=\"handleKey($event)\">\r\n <input\r\n type=\"checkbox\"\r\n [name]=\"name\"\r\n [(ngModel)]=\"checked\"\r\n (change)=\"change($event)\"\r\n />\r\n <span class=\"checkmark\">{{ label }}</span>\r\n</div>\r\n", styles: [".container{display:inline;position:relative;padding-left:35px;margin-bottom:12px;cursor:pointer;font-size:18px;padding-inline:8px;-webkit-user-select:none;user-select:none}.label{padding-right:8px}.container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.container:hover input~.checkmark{background-color:var(--default-checkbox-input-hover-background-color)}.container input:checked~.checkmark{background-color:var(--default-checkbox-input-checked-background-color)}.checkmark:after{content:\"\";position:absolute;display:none}.container input:checked~.checkmark:after{display:block}.container .checkmark:after{left:10px;top:4px;width:4px;height:10px;border:solid white;border-width:0 3px 3px 0;transform:rotate(45deg)}.container{font-size:13px;font-weight:500}\n"] }]
260
265
  }], propDecorators: { label: [{
261
266
  type: Input
262
267
  }], name: [{
@@ -660,6 +665,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
660
665
  type: Input
661
666
  }] } });
662
667
 
668
+ class CalendarTodayIconComponent {
669
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CalendarTodayIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
670
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CalendarTodayIconComponent, selector: "calendar-today-icon", ngImport: i0, template: "<svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n height=\"100%\"\r\n viewBox=\"0 -960 960 960\"\r\n width=\"100%\"\r\n>\r\n <path\r\n d=\"M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Z\"\r\n />\r\n</svg>\r\n", styles: [""] }); }
671
+ }
672
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CalendarTodayIconComponent, decorators: [{
673
+ type: Component,
674
+ args: [{ selector: 'calendar-today-icon', template: "<svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n height=\"100%\"\r\n viewBox=\"0 -960 960 960\"\r\n width=\"100%\"\r\n>\r\n <path\r\n d=\"M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Z\"\r\n />\r\n</svg>\r\n" }]
675
+ }] });
676
+
663
677
  class CoreDatePickerComponent {
664
678
  set inputFormControl(value) {
665
679
  this._inputFormControl = value;
@@ -675,6 +689,20 @@ class CoreDatePickerComponent {
675
689
  this.date = '';
676
690
  }
677
691
  ngOnInit() { }
692
+ onInput(event) {
693
+ const raw = event.target.value.replace(/\D/g, '');
694
+ if (raw.length > 8)
695
+ return;
696
+ let formatted = raw;
697
+ if (raw.length > 4) {
698
+ formatted = raw.slice(0, 4) + '-' + raw.slice(4);
699
+ }
700
+ if (raw.length > 6) {
701
+ formatted = formatted.slice(0, 7) + '-' + formatted.slice(7);
702
+ }
703
+ this.date = formatted;
704
+ this._inputFormControl.setValue(formatted);
705
+ }
678
706
  ngAfterViewInit() {
679
707
  this.changeDetectorRef.detectChanges();
680
708
  }
@@ -687,11 +715,11 @@ class CoreDatePickerComponent {
687
715
  this._inputFormControl.setValue(todayDate);
688
716
  }
689
717
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreDatePickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
690
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreDatePickerComponent, selector: "core-date-picker", inputs: { canSelectToday: "canSelectToday", defaultDate: "defaultDate", label: "label", inputFormControl: "inputFormControl", size: "size" }, ngImport: i0, template: "<core-input\r\n [placeholder]=\"label\"\r\n [inputFormControl]=\"_inputFormControl\"\r\n (click)=\"isOpenCalendar = true\"\r\n>\r\n</core-input>\r\n<lib-nira-date-picker\r\n [(isOpenCalendar)]=\"isOpenCalendar\"\r\n [defaultDate]=\"date ? date : defaultDate\"\r\n (datePickerResult)=\"onDatePickerResult($event)\"\r\n [selectToday]=\"canSelectToday\"\r\n (todayDate)=\"onTodayDate($event)\"\r\n>\r\n</lib-nira-date-picker>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1$2.NiraDatePickerComponent, selector: "lib-nira-date-picker", inputs: ["selectToday", "disable", "changableYears", "theme", "defaultDate", "isOpenCalendar"], outputs: ["isOpenCalendarChange", "todayDate", "datePickerResult"] }, { kind: "component", type: CoreInputComponent, selector: "core-input", inputs: ["type", "canShowWordifyFa", "canSplitNumber", "canHighlightBackground", "maxLength", "size", "inputFormControl", "disable", "placeholder", "errorMessages"], outputs: ["onChange", "onBlurEmit"] }] }); }
718
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreDatePickerComponent, selector: "core-date-picker", inputs: { canSelectToday: "canSelectToday", defaultDate: "defaultDate", label: "label", inputFormControl: "inputFormControl", size: "size" }, ngImport: i0, template: "<div class=\"container\">\r\n <core-input\r\n [placeholder]=\"''\"\r\n (input)=\"onInput($event)\"\r\n [inputFormControl]=\"_inputFormControl\"\r\n >\r\n </core-input>\r\n <!-- <input type=\"text\" [value]=\"date\" (input)=\"onInput($event)\" /> -->\r\n <calendar-today-icon\r\n class=\"icon\"\r\n (click)=\"isOpenCalendar = true\"\r\n ></calendar-today-icon>\r\n</div>\r\n<lib-nira-date-picker\r\n [(isOpenCalendar)]=\"isOpenCalendar\"\r\n [defaultDate]=\"date ? date : defaultDate\"\r\n (datePickerResult)=\"onDatePickerResult($event)\"\r\n [selectToday]=\"canSelectToday\"\r\n (todayDate)=\"onTodayDate($event)\"\r\n>\r\n</lib-nira-date-picker>\r\n", styles: [".container{position:relative}.container .icon{position:absolute;cursor:pointer;left:8px;top:6px;width:24px;height:24px;fill:#383838}\n"], dependencies: [{ kind: "component", type: i1$2.NiraDatePickerComponent, selector: "lib-nira-date-picker", inputs: ["selectToday", "disable", "changableYears", "theme", "defaultDate", "isOpenCalendar"], outputs: ["isOpenCalendarChange", "todayDate", "datePickerResult"] }, { kind: "component", type: CoreInputComponent, selector: "core-input", inputs: ["type", "canShowWordifyFa", "canSplitNumber", "canHighlightBackground", "maxLength", "size", "inputFormControl", "disable", "placeholder", "errorMessages"], outputs: ["onChange", "onBlurEmit"] }, { kind: "component", type: CalendarTodayIconComponent, selector: "calendar-today-icon" }] }); }
691
719
  }
692
720
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreDatePickerComponent, decorators: [{
693
721
  type: Component,
694
- args: [{ selector: 'core-date-picker', template: "<core-input\r\n [placeholder]=\"label\"\r\n [inputFormControl]=\"_inputFormControl\"\r\n (click)=\"isOpenCalendar = true\"\r\n>\r\n</core-input>\r\n<lib-nira-date-picker\r\n [(isOpenCalendar)]=\"isOpenCalendar\"\r\n [defaultDate]=\"date ? date : defaultDate\"\r\n (datePickerResult)=\"onDatePickerResult($event)\"\r\n [selectToday]=\"canSelectToday\"\r\n (todayDate)=\"onTodayDate($event)\"\r\n>\r\n</lib-nira-date-picker>\r\n" }]
722
+ args: [{ selector: 'core-date-picker', template: "<div class=\"container\">\r\n <core-input\r\n [placeholder]=\"''\"\r\n (input)=\"onInput($event)\"\r\n [inputFormControl]=\"_inputFormControl\"\r\n >\r\n </core-input>\r\n <!-- <input type=\"text\" [value]=\"date\" (input)=\"onInput($event)\" /> -->\r\n <calendar-today-icon\r\n class=\"icon\"\r\n (click)=\"isOpenCalendar = true\"\r\n ></calendar-today-icon>\r\n</div>\r\n<lib-nira-date-picker\r\n [(isOpenCalendar)]=\"isOpenCalendar\"\r\n [defaultDate]=\"date ? date : defaultDate\"\r\n (datePickerResult)=\"onDatePickerResult($event)\"\r\n [selectToday]=\"canSelectToday\"\r\n (todayDate)=\"onTodayDate($event)\"\r\n>\r\n</lib-nira-date-picker>\r\n", styles: [".container{position:relative}.container .icon{position:absolute;cursor:pointer;left:8px;top:6px;width:24px;height:24px;fill:#383838}\n"] }]
695
723
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { canSelectToday: [{
696
724
  type: Input
697
725
  }], defaultDate: [{
@@ -770,12 +798,31 @@ class CoreRadioButtonsComponent {
770
798
  this.selectedItem = item;
771
799
  this.onChange.emit(String(item.value));
772
800
  }
801
+ handleKey(event) {
802
+ const currentIndex = this.newItems.findIndex((item) => item.value === this.selectedItem.value);
803
+ switch (event.key) {
804
+ case 'ArrowLeft':
805
+ event.preventDefault();
806
+ if (this.newItems.length - 1 > currentIndex) {
807
+ this.selectedItem = this.newItems[currentIndex + 1];
808
+ this.onChange.emit(String(this.selectedItem.value));
809
+ }
810
+ break;
811
+ case 'ArrowRight':
812
+ event.preventDefault();
813
+ if (currentIndex > 0) {
814
+ this.selectedItem = this.newItems[currentIndex - 1];
815
+ this.onChange.emit(String(this.selectedItem.value));
816
+ }
817
+ break;
818
+ }
819
+ }
773
820
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreRadioButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
774
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreRadioButtonsComponent, selector: "core-radio-buttons", inputs: { items: "items", defaultValue: "defaultValue", titleKey: "titleKey", valueKey: "valueKey", layout: "layout", name: "name" }, outputs: { onChange: "onChange" }, ngImport: i0, template: "<div class=\"root\" [ngClass]=\"{ 'container-row': layout == 'row' }\">\r\n <div\r\n class=\"radio-bottom\"\r\n [ngClass]=\"{ 'item-row-reverse': layout == 'row' }\"\r\n *ngFor=\"let item of newItems\"\r\n (click)=\"onItemClick(item)\"\r\n >\r\n <input\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [value]=\"item.value == selectedItem.value\"\r\n [checked]=\"item.value == selectedItem.value\"\r\n (click)=\"onItemClick(item)\"\r\n />\r\n <span class=\"label\">{{ item.title }}</span>\r\n </div>\r\n</div>\r\n", styles: [".root{display:flex;flex-direction:column;gap:6px}.container-row{flex-direction:row}.item-row-reverse{display:flex;flex-direction:row-reverse}.radio-bottom{display:inline-flex;flex-direction:row;align-items:center;margin-left:auto;cursor:pointer;-webkit-user-select:none;user-select:none}input[type=radio]{appearance:none;width:18px;height:18px;border-radius:50%;background-clip:content-box;border:1px solid var(--default-radio-buttons-input-border-color);background-color:var(--default-radio-buttons-input-background-color)}input[type=radio]:checked{background-color:var(--default-radio-buttons-background-color);padding:4px;border:2px solid var(--default-radio-buttons-border-color)}.label{font-size:small;font-weight:500;margin-inline:4px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
821
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreRadioButtonsComponent, selector: "core-radio-buttons", inputs: { items: "items", defaultValue: "defaultValue", titleKey: "titleKey", valueKey: "valueKey", layout: "layout", name: "name" }, outputs: { onChange: "onChange" }, ngImport: i0, template: "<div\r\n class=\"root\"\r\n (keydown)=\"handleKey($event)\"\r\n [ngClass]=\"{ 'container-row': layout == 'row' }\"\r\n>\r\n <div\r\n class=\"radio-bottom\"\r\n [ngClass]=\"{ 'item-row-reverse': layout == 'row' }\"\r\n *ngFor=\"let item of newItems\"\r\n (click)=\"onItemClick(item)\"\r\n >\r\n <input\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [value]=\"item.value == selectedItem.value\"\r\n [checked]=\"item.value == selectedItem.value\"\r\n (click)=\"onItemClick(item)\"\r\n />\r\n <span class=\"label\">{{ item.title }}</span>\r\n </div>\r\n</div>\r\n", styles: [".root{display:flex;flex-direction:column;gap:6px}.container-row{flex-direction:row}.item-row-reverse{display:flex;flex-direction:row-reverse}.radio-bottom{display:inline-flex;flex-direction:row;align-items:center;margin-left:auto;cursor:pointer;-webkit-user-select:none;user-select:none}input[type=radio]{appearance:none;width:18px;height:18px;border-radius:50%;background-clip:content-box;border:1px solid var(--default-radio-buttons-input-border-color);background-color:var(--default-radio-buttons-input-background-color)}input[type=radio]:checked{background-color:var(--default-radio-buttons-background-color);padding:4px;border:2px solid var(--default-radio-buttons-border-color)}.label{font-size:small;font-weight:500;margin-inline:4px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
775
822
  }
776
823
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreRadioButtonsComponent, decorators: [{
777
824
  type: Component,
778
- args: [{ selector: 'core-radio-buttons', template: "<div class=\"root\" [ngClass]=\"{ 'container-row': layout == 'row' }\">\r\n <div\r\n class=\"radio-bottom\"\r\n [ngClass]=\"{ 'item-row-reverse': layout == 'row' }\"\r\n *ngFor=\"let item of newItems\"\r\n (click)=\"onItemClick(item)\"\r\n >\r\n <input\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [value]=\"item.value == selectedItem.value\"\r\n [checked]=\"item.value == selectedItem.value\"\r\n (click)=\"onItemClick(item)\"\r\n />\r\n <span class=\"label\">{{ item.title }}</span>\r\n </div>\r\n</div>\r\n", styles: [".root{display:flex;flex-direction:column;gap:6px}.container-row{flex-direction:row}.item-row-reverse{display:flex;flex-direction:row-reverse}.radio-bottom{display:inline-flex;flex-direction:row;align-items:center;margin-left:auto;cursor:pointer;-webkit-user-select:none;user-select:none}input[type=radio]{appearance:none;width:18px;height:18px;border-radius:50%;background-clip:content-box;border:1px solid var(--default-radio-buttons-input-border-color);background-color:var(--default-radio-buttons-input-background-color)}input[type=radio]:checked{background-color:var(--default-radio-buttons-background-color);padding:4px;border:2px solid var(--default-radio-buttons-border-color)}.label{font-size:small;font-weight:500;margin-inline:4px}\n"] }]
825
+ args: [{ selector: 'core-radio-buttons', template: "<div\r\n class=\"root\"\r\n (keydown)=\"handleKey($event)\"\r\n [ngClass]=\"{ 'container-row': layout == 'row' }\"\r\n>\r\n <div\r\n class=\"radio-bottom\"\r\n [ngClass]=\"{ 'item-row-reverse': layout == 'row' }\"\r\n *ngFor=\"let item of newItems\"\r\n (click)=\"onItemClick(item)\"\r\n >\r\n <input\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [value]=\"item.value == selectedItem.value\"\r\n [checked]=\"item.value == selectedItem.value\"\r\n (click)=\"onItemClick(item)\"\r\n />\r\n <span class=\"label\">{{ item.title }}</span>\r\n </div>\r\n</div>\r\n", styles: [".root{display:flex;flex-direction:column;gap:6px}.container-row{flex-direction:row}.item-row-reverse{display:flex;flex-direction:row-reverse}.radio-bottom{display:inline-flex;flex-direction:row;align-items:center;margin-left:auto;cursor:pointer;-webkit-user-select:none;user-select:none}input[type=radio]{appearance:none;width:18px;height:18px;border-radius:50%;background-clip:content-box;border:1px solid var(--default-radio-buttons-input-border-color);background-color:var(--default-radio-buttons-input-background-color)}input[type=radio]:checked{background-color:var(--default-radio-buttons-background-color);padding:4px;border:2px solid var(--default-radio-buttons-border-color)}.label{font-size:small;font-weight:500;margin-inline:4px}\n"] }]
779
826
  }], propDecorators: { items: [{
780
827
  type: Input
781
828
  }], defaultValue: [{
@@ -854,6 +901,7 @@ class CoreSelectComponent {
854
901
  this.cdr = cdr;
855
902
  this.elRef = elRef;
856
903
  this.selectedItem = {};
904
+ this.focusItem = undefined;
857
905
  this.newItems = [];
858
906
  this.isOpenMenu = false;
859
907
  this._items = [];
@@ -887,31 +935,33 @@ class CoreSelectComponent {
887
935
  if (this.disabled)
888
936
  return;
889
937
  this.isOpenMenu = !this.isOpenMenu;
890
- if (this.isOpenMenu && canFocus) {
891
- setTimeout(() => {
892
- const element = this.focusableElements.toArray();
893
- element[0].nativeElement.focus();
894
- }, 50);
895
- }
896
938
  }
897
939
  handleKey(event) {
898
- const elements = this.focusableElements.toArray();
899
- if (event.key === 'ArrowDown') {
900
- this.currentIndex = (this.currentIndex + 1) % elements.length;
901
- elements[this.currentIndex].nativeElement.focus();
902
- }
903
- if (event.key === 'ArrowUp') {
904
- this.currentIndex =
905
- (this.currentIndex - 1 + elements.length) % elements.length;
906
- elements[this.currentIndex].nativeElement.focus();
907
- }
908
- }
909
- dropdownItemKeypress(event, item) {
910
- if (event.key === 'Enter') {
911
- this.onItemSelect(item, true);
912
- }
913
- else if (event.key === 'Escape') {
914
- this.isOpenMenu = false;
940
+ const currentItemIndex = this._items.findIndex((item) => item[this.valueKeyObject] === this.focusItem?.value);
941
+ switch (event.key) {
942
+ case 'Enter':
943
+ this.isOpenMenu = !this.isOpenMenu;
944
+ if (this.focusItem)
945
+ this.selectedItem = this.focusItem;
946
+ break;
947
+ case ' ':
948
+ this.isOpenMenu = !this.isOpenMenu;
949
+ break;
950
+ case 'Escape':
951
+ event.preventDefault();
952
+ this.isOpenMenu = false;
953
+ break;
954
+ case 'ArrowDown':
955
+ if (this.isOpenMenu && this._items.length - 1 > currentItemIndex)
956
+ this.focusItem = this._items[currentItemIndex + 1];
957
+ break;
958
+ case 'ArrowUp':
959
+ if (this.isOpenMenu && currentItemIndex > 0)
960
+ this.focusItem = this._items[currentItemIndex - 1];
961
+ break;
962
+ case 'Tab':
963
+ this.isOpenMenu = false;
964
+ break;
915
965
  }
916
966
  }
917
967
  onItemSelect(selectedItem, isFromUi) {
@@ -920,19 +970,16 @@ class CoreSelectComponent {
920
970
  this.isOpenMenu = false;
921
971
  if (!selectedItem) {
922
972
  this.selectedItem = {};
973
+ this.focusItem = undefined;
923
974
  this.inputFormControl.reset();
924
975
  return;
925
976
  }
926
977
  this.selectedItem = selectedItem;
978
+ this.focusItem = selectedItem;
927
979
  const mainItem = this._items.find((item) => item[this.valueKeyObject] === selectedItem.value);
928
980
  this.inputFormControl.setValue(selectedItem.value);
929
981
  this.onItemSelected.emit(mainItem);
930
982
  }
931
- onEnterPress(e) {
932
- if (e.key === 'Enter') {
933
- this.openMenuClick(true);
934
- }
935
- }
936
983
  focusOut(event) {
937
984
  const nextFocusedElement = event.relatedTarget;
938
985
  if (!nextFocusedElement ||
@@ -942,11 +989,11 @@ class CoreSelectComponent {
942
989
  }
943
990
  }
944
991
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
945
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreSelectComponent, selector: "core-select", inputs: { titleKey: "titleKey", valueKey: "valueKey", size: "size", canHighlightBackground: "canHighlightBackground", items: "items", defaultValue: "defaultValue", label: "label", disabled: "disabled", inputFormControl: "inputFormControl" }, outputs: { onItemSelected: "onItemSelected" }, viewQueries: [{ propertyName: "focusableElements", predicate: ["focusable"], descendants: true }], ngImport: i0, template: "<div class=\"dropdown\" (focusout)=\"focusOut($event)\">\r\n <div\r\n class=\"select\"\r\n [ngClass]=\"{\r\n 'select-clicked': isOpenMenu,\r\n 'highlight-background':\r\n canHighlightBackground &&\r\n (selectedItem | json) === ({} | json) &&\r\n !(inputFormControl.touched && inputFormControl.errors),\r\n selectError: inputFormControl.touched && inputFormControl.errors ,\r\n 'disable-selector': disabled,\r\n\r\n }\"\r\n tabindex=\"0\"\r\n (keypress)=\"onEnterPress($event)\"\r\n (click)=\"openMenuClick(false)\"\r\n >\r\n <span\r\n class=\"placeholder-top\"\r\n *ngIf=\"(selectedItem | json) != ({} | json)\"\r\n >{{ label }}</span\r\n >\r\n <arrow-down-icon\r\n class=\"caret fill-secondary-text-color h-6\"\r\n [ngClass]=\"{ 'caret-rotate': isOpenMenu }\"\r\n ></arrow-down-icon>\r\n\r\n <span\r\n [ngClass]=\"[\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? 'placeholder'\r\n : 'selected'\r\n ]\"\r\n >{{\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? label\r\n : selectedItem.title\r\n }}</span\r\n >\r\n </div>\r\n <div\r\n class=\"no-data\"\r\n *ngIf=\"newItems.length === 0\"\r\n [ngClass]=\"{ 'menu-open-no-data': isOpenMenu }\"\r\n >\r\n <warning-icon class=\"icon-color inline-block w-6\"></warning-icon>\r\n <b class=\"content block\">\u0645\u0648\u0631\u062F\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F</b>\r\n </div>\r\n <ul\r\n class=\"menu dropdown\"\r\n (keydown)=\"handleKey($event)\"\r\n [ngClass]=\"{ 'menu-open': isOpenMenu }\"\r\n >\r\n <li\r\n *ngFor=\"let item of newItems\"\r\n class=\"dropdown-item\"\r\n #focusable\r\n [ngClass]=\"{ active: item == selectedItem }\"\r\n (click)=\"onItemSelect(item, true)\"\r\n (keypress)=\"dropdownItemKeypress($event, item)\"\r\n tabindex=\"0\"\r\n >\r\n {{ item.title }}\r\n </li>\r\n </ul>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n *ngIf=\"\r\n inputFormControl.touched &&\r\n inputFormControl.errors?.['required']\"\r\n >\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u062E\u0627\u0644\u06CC \u0627\u0633\u062A</span\r\n >\r\n </div>\r\n</div>\r\n", styles: [".dropdown{min-width:15em;position:relative;width:100%;min-width:120px}.dropdown .disable-selector{background-color:#f7f7f7!important;border:1px dashed #ced4da!important;cursor:no-drop!important}.dropdown .highlight-background{background-color:#dcf6ff!important}.dropdown .select{background:#fff;color:#304050;display:flex;height:42px;justify-content:space-between;flex-direction:row-reverse;align-items:center;border:1px solid #ced4da;border-radius:4px;padding:8px;cursor:pointer;transition:background .3s;font-size:12px;-webkit-user-select:none;user-select:none}.dropdown .select:hover{background:#fbfbfb}.dropdown .select:focus{border:1px solid rgba(19,92,175,.397);outline:none}.dropdown .select .selected{padding-inline:12px;font-size:14px;color:#000000b3;-webkit-user-select:none;user-select:none}.dropdown .select .placeholder-top{position:absolute;right:13px;background:#fff;top:-8px;padding-inline:6px;font-size:11px;color:#888}.dropdown .select .caret{color:#595c5f;-webkit-user-select:none;user-select:none}.dropdown .select .caret-rotate{transform:rotate(180deg)}.dropdown .select .placeholder{color:#888;padding-inline:16px}.dropdown .select-clicked{border:1px solid rgba(19,92,175,.397)}.dropdown .no-data{display:none;justify-content:center;align-items:center;font-size:small;flex-direction:column;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);transition:0,2s;z-index:10;height:120px;overflow:auto}.dropdown .no-data .icon-color{fill:var(--default-table-warning-icon-color)}.dropdown .no-data .content{color:var(--default-table-warning-color)}.dropdown .menu{list-style:none;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);display:none;transition:0,2s;z-index:10;max-height:200px;overflow:auto}.dropdown .menu li{padding:.7em .5em;margin:.3em 0;border-radius:.5em;font-size:14px;text-align:start;cursor:pointer}.dropdown .menu li:hover{background:#f6f6f6;box-shadow:0 1px 2px #00000021,0 4px 4px #0000001a}.dropdown .menu li:focus{outline:none}.dropdown .menu .active{background:#ced4da!important}.dropdown .menu-open-no-data{display:flex!important;opacity:1}.dropdown .menu-open{display:block;opacity:1}.dropdown .label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.dropdown .selectError{border:1px solid #fe5f5f!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: WarningIconComponent, selector: "warning-icon" }, { kind: "component", type: ArrowDownIconComponent, selector: "arrow-down-icon" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
992
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreSelectComponent, selector: "core-select", inputs: { titleKey: "titleKey", valueKey: "valueKey", size: "size", canHighlightBackground: "canHighlightBackground", items: "items", defaultValue: "defaultValue", label: "label", disabled: "disabled", inputFormControl: "inputFormControl" }, outputs: { onItemSelected: "onItemSelected" }, viewQueries: [{ propertyName: "focusableElements", predicate: ["focusable"], descendants: true }], ngImport: i0, template: "<div class=\"dropdown\" (focusout)=\"focusOut($event)\">\r\n <div\r\n class=\"select\"\r\n [ngClass]=\"{\r\n 'select-clicked': isOpenMenu,\r\n 'highlight-background':\r\n canHighlightBackground &&\r\n (selectedItem | json) === ({} | json) &&\r\n !(inputFormControl.touched && inputFormControl.errors),\r\n selectError: inputFormControl.touched && inputFormControl.errors ,\r\n 'disable-selector': disabled,\r\n\r\n }\"\r\n tabindex=\"0\"\r\n (keydown)=\"handleKey($event)\"\r\n (click)=\"openMenuClick(false)\"\r\n >\r\n <span\r\n class=\"placeholder-top\"\r\n *ngIf=\"(selectedItem | json) != ({} | json)\"\r\n >{{ label }}</span\r\n >\r\n <arrow-down-icon\r\n class=\"caret fill-secondary-text-color h-6\"\r\n [ngClass]=\"{ 'caret-rotate': isOpenMenu }\"\r\n ></arrow-down-icon>\r\n\r\n <span\r\n [ngClass]=\"[\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? 'placeholder'\r\n : 'selected'\r\n ]\"\r\n >{{\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? label\r\n : selectedItem.title\r\n }}</span\r\n >\r\n </div>\r\n <div\r\n class=\"no-data\"\r\n *ngIf=\"newItems.length === 0\"\r\n [ngClass]=\"{ 'menu-open-no-data': isOpenMenu }\"\r\n >\r\n <warning-icon class=\"icon-color inline-block w-6\"></warning-icon>\r\n <b class=\"content block\">\u0645\u0648\u0631\u062F\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F</b>\r\n </div>\r\n <ul\r\n class=\"menu dropdown\"\r\n tabindex=\"0\"\r\n [ngClass]=\"{ 'menu-open': isOpenMenu }\"\r\n >\r\n <li\r\n *ngFor=\"let item of newItems\"\r\n class=\"dropdown-item\"\r\n #focusable\r\n [ngClass]=\"{ active: item.value === focusItem?.value }\"\r\n (click)=\"onItemSelect(item, true)\"\r\n >\r\n {{ item.title }}\r\n </li>\r\n </ul>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n *ngIf=\"\r\n inputFormControl.touched &&\r\n inputFormControl.errors?.['required']\"\r\n >\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u062E\u0627\u0644\u06CC \u0627\u0633\u062A</span\r\n >\r\n </div>\r\n</div>\r\n", styles: [".dropdown{min-width:15em;position:relative;width:100%;min-width:120px}.dropdown .disable-selector{background-color:#f7f7f7!important;border:1px dashed #ced4da!important;cursor:no-drop!important}.dropdown .highlight-background{background-color:#dcf6ff!important}.dropdown .select{background:#fff;color:#304050;display:flex;height:42px;justify-content:space-between;flex-direction:row-reverse;align-items:center;border:1px solid #ced4da;border-radius:4px;padding:8px;cursor:pointer;transition:background .3s;font-size:12px;-webkit-user-select:none;user-select:none}.dropdown .select:hover{background:#fbfbfb}.dropdown .select:focus{border:2px solid rgba(37,112,198,.473);outline:none}.dropdown .select .selected{padding-inline:12px;font-size:14px;color:#000000b3;-webkit-user-select:none;user-select:none}.dropdown .select .placeholder-top{position:absolute;right:13px;background:#fff;top:-8px;padding-inline:6px;font-size:11px;color:#888}.dropdown .select .caret{color:#595c5f;-webkit-user-select:none;user-select:none}.dropdown .select .caret-rotate{transform:rotate(180deg)}.dropdown .select .placeholder{color:#888;padding-inline:16px}.dropdown .select-clicked{border:1px solid rgba(19,92,175,.397)}.dropdown .no-data{display:none;justify-content:center;align-items:center;font-size:small;flex-direction:column;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);transition:0,2s;z-index:10;height:120px;overflow:auto}.dropdown .no-data .icon-color{fill:var(--default-table-warning-icon-color)}.dropdown .no-data .content{color:var(--default-table-warning-color)}.dropdown .menu{list-style:none;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);display:none;transition:0,2s;z-index:10;max-height:200px;overflow:auto}.dropdown .menu li{padding:.7em .5em;margin:.3em 0;border-radius:.5em;font-size:14px;text-align:start;cursor:pointer}.dropdown .menu li:hover{background:#f6f6f6;box-shadow:0 1px 2px #00000021,0 4px 4px #0000001a}.dropdown .menu li:focus{outline:none}.dropdown .menu .active{background:#ced4da!important}.dropdown .menu-open-no-data{display:flex!important;opacity:1}.dropdown .menu-open{display:block;opacity:1}.dropdown .label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.dropdown .selectError{border:1px solid #fe5f5f!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: WarningIconComponent, selector: "warning-icon" }, { kind: "component", type: ArrowDownIconComponent, selector: "arrow-down-icon" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
946
993
  }
947
994
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreSelectComponent, decorators: [{
948
995
  type: Component,
949
- args: [{ selector: 'core-select', template: "<div class=\"dropdown\" (focusout)=\"focusOut($event)\">\r\n <div\r\n class=\"select\"\r\n [ngClass]=\"{\r\n 'select-clicked': isOpenMenu,\r\n 'highlight-background':\r\n canHighlightBackground &&\r\n (selectedItem | json) === ({} | json) &&\r\n !(inputFormControl.touched && inputFormControl.errors),\r\n selectError: inputFormControl.touched && inputFormControl.errors ,\r\n 'disable-selector': disabled,\r\n\r\n }\"\r\n tabindex=\"0\"\r\n (keypress)=\"onEnterPress($event)\"\r\n (click)=\"openMenuClick(false)\"\r\n >\r\n <span\r\n class=\"placeholder-top\"\r\n *ngIf=\"(selectedItem | json) != ({} | json)\"\r\n >{{ label }}</span\r\n >\r\n <arrow-down-icon\r\n class=\"caret fill-secondary-text-color h-6\"\r\n [ngClass]=\"{ 'caret-rotate': isOpenMenu }\"\r\n ></arrow-down-icon>\r\n\r\n <span\r\n [ngClass]=\"[\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? 'placeholder'\r\n : 'selected'\r\n ]\"\r\n >{{\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? label\r\n : selectedItem.title\r\n }}</span\r\n >\r\n </div>\r\n <div\r\n class=\"no-data\"\r\n *ngIf=\"newItems.length === 0\"\r\n [ngClass]=\"{ 'menu-open-no-data': isOpenMenu }\"\r\n >\r\n <warning-icon class=\"icon-color inline-block w-6\"></warning-icon>\r\n <b class=\"content block\">\u0645\u0648\u0631\u062F\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F</b>\r\n </div>\r\n <ul\r\n class=\"menu dropdown\"\r\n (keydown)=\"handleKey($event)\"\r\n [ngClass]=\"{ 'menu-open': isOpenMenu }\"\r\n >\r\n <li\r\n *ngFor=\"let item of newItems\"\r\n class=\"dropdown-item\"\r\n #focusable\r\n [ngClass]=\"{ active: item == selectedItem }\"\r\n (click)=\"onItemSelect(item, true)\"\r\n (keypress)=\"dropdownItemKeypress($event, item)\"\r\n tabindex=\"0\"\r\n >\r\n {{ item.title }}\r\n </li>\r\n </ul>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n *ngIf=\"\r\n inputFormControl.touched &&\r\n inputFormControl.errors?.['required']\"\r\n >\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u062E\u0627\u0644\u06CC \u0627\u0633\u062A</span\r\n >\r\n </div>\r\n</div>\r\n", styles: [".dropdown{min-width:15em;position:relative;width:100%;min-width:120px}.dropdown .disable-selector{background-color:#f7f7f7!important;border:1px dashed #ced4da!important;cursor:no-drop!important}.dropdown .highlight-background{background-color:#dcf6ff!important}.dropdown .select{background:#fff;color:#304050;display:flex;height:42px;justify-content:space-between;flex-direction:row-reverse;align-items:center;border:1px solid #ced4da;border-radius:4px;padding:8px;cursor:pointer;transition:background .3s;font-size:12px;-webkit-user-select:none;user-select:none}.dropdown .select:hover{background:#fbfbfb}.dropdown .select:focus{border:1px solid rgba(19,92,175,.397);outline:none}.dropdown .select .selected{padding-inline:12px;font-size:14px;color:#000000b3;-webkit-user-select:none;user-select:none}.dropdown .select .placeholder-top{position:absolute;right:13px;background:#fff;top:-8px;padding-inline:6px;font-size:11px;color:#888}.dropdown .select .caret{color:#595c5f;-webkit-user-select:none;user-select:none}.dropdown .select .caret-rotate{transform:rotate(180deg)}.dropdown .select .placeholder{color:#888;padding-inline:16px}.dropdown .select-clicked{border:1px solid rgba(19,92,175,.397)}.dropdown .no-data{display:none;justify-content:center;align-items:center;font-size:small;flex-direction:column;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);transition:0,2s;z-index:10;height:120px;overflow:auto}.dropdown .no-data .icon-color{fill:var(--default-table-warning-icon-color)}.dropdown .no-data .content{color:var(--default-table-warning-color)}.dropdown .menu{list-style:none;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);display:none;transition:0,2s;z-index:10;max-height:200px;overflow:auto}.dropdown .menu li{padding:.7em .5em;margin:.3em 0;border-radius:.5em;font-size:14px;text-align:start;cursor:pointer}.dropdown .menu li:hover{background:#f6f6f6;box-shadow:0 1px 2px #00000021,0 4px 4px #0000001a}.dropdown .menu li:focus{outline:none}.dropdown .menu .active{background:#ced4da!important}.dropdown .menu-open-no-data{display:flex!important;opacity:1}.dropdown .menu-open{display:block;opacity:1}.dropdown .label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.dropdown .selectError{border:1px solid #fe5f5f!important}\n"] }]
996
+ args: [{ selector: 'core-select', template: "<div class=\"dropdown\" (focusout)=\"focusOut($event)\">\r\n <div\r\n class=\"select\"\r\n [ngClass]=\"{\r\n 'select-clicked': isOpenMenu,\r\n 'highlight-background':\r\n canHighlightBackground &&\r\n (selectedItem | json) === ({} | json) &&\r\n !(inputFormControl.touched && inputFormControl.errors),\r\n selectError: inputFormControl.touched && inputFormControl.errors ,\r\n 'disable-selector': disabled,\r\n\r\n }\"\r\n tabindex=\"0\"\r\n (keydown)=\"handleKey($event)\"\r\n (click)=\"openMenuClick(false)\"\r\n >\r\n <span\r\n class=\"placeholder-top\"\r\n *ngIf=\"(selectedItem | json) != ({} | json)\"\r\n >{{ label }}</span\r\n >\r\n <arrow-down-icon\r\n class=\"caret fill-secondary-text-color h-6\"\r\n [ngClass]=\"{ 'caret-rotate': isOpenMenu }\"\r\n ></arrow-down-icon>\r\n\r\n <span\r\n [ngClass]=\"[\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? 'placeholder'\r\n : 'selected'\r\n ]\"\r\n >{{\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? label\r\n : selectedItem.title\r\n }}</span\r\n >\r\n </div>\r\n <div\r\n class=\"no-data\"\r\n *ngIf=\"newItems.length === 0\"\r\n [ngClass]=\"{ 'menu-open-no-data': isOpenMenu }\"\r\n >\r\n <warning-icon class=\"icon-color inline-block w-6\"></warning-icon>\r\n <b class=\"content block\">\u0645\u0648\u0631\u062F\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F</b>\r\n </div>\r\n <ul\r\n class=\"menu dropdown\"\r\n tabindex=\"0\"\r\n [ngClass]=\"{ 'menu-open': isOpenMenu }\"\r\n >\r\n <li\r\n *ngFor=\"let item of newItems\"\r\n class=\"dropdown-item\"\r\n #focusable\r\n [ngClass]=\"{ active: item.value === focusItem?.value }\"\r\n (click)=\"onItemSelect(item, true)\"\r\n >\r\n {{ item.title }}\r\n </li>\r\n </ul>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n *ngIf=\"\r\n inputFormControl.touched &&\r\n inputFormControl.errors?.['required']\"\r\n >\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u062E\u0627\u0644\u06CC \u0627\u0633\u062A</span\r\n >\r\n </div>\r\n</div>\r\n", styles: [".dropdown{min-width:15em;position:relative;width:100%;min-width:120px}.dropdown .disable-selector{background-color:#f7f7f7!important;border:1px dashed #ced4da!important;cursor:no-drop!important}.dropdown .highlight-background{background-color:#dcf6ff!important}.dropdown .select{background:#fff;color:#304050;display:flex;height:42px;justify-content:space-between;flex-direction:row-reverse;align-items:center;border:1px solid #ced4da;border-radius:4px;padding:8px;cursor:pointer;transition:background .3s;font-size:12px;-webkit-user-select:none;user-select:none}.dropdown .select:hover{background:#fbfbfb}.dropdown .select:focus{border:2px solid rgba(37,112,198,.473);outline:none}.dropdown .select .selected{padding-inline:12px;font-size:14px;color:#000000b3;-webkit-user-select:none;user-select:none}.dropdown .select .placeholder-top{position:absolute;right:13px;background:#fff;top:-8px;padding-inline:6px;font-size:11px;color:#888}.dropdown .select .caret{color:#595c5f;-webkit-user-select:none;user-select:none}.dropdown .select .caret-rotate{transform:rotate(180deg)}.dropdown .select .placeholder{color:#888;padding-inline:16px}.dropdown .select-clicked{border:1px solid rgba(19,92,175,.397)}.dropdown .no-data{display:none;justify-content:center;align-items:center;font-size:small;flex-direction:column;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);transition:0,2s;z-index:10;height:120px;overflow:auto}.dropdown .no-data .icon-color{fill:var(--default-table-warning-icon-color)}.dropdown .no-data .content{color:var(--default-table-warning-color)}.dropdown .menu{list-style:none;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);display:none;transition:0,2s;z-index:10;max-height:200px;overflow:auto}.dropdown .menu li{padding:.7em .5em;margin:.3em 0;border-radius:.5em;font-size:14px;text-align:start;cursor:pointer}.dropdown .menu li:hover{background:#f6f6f6;box-shadow:0 1px 2px #00000021,0 4px 4px #0000001a}.dropdown .menu li:focus{outline:none}.dropdown .menu .active{background:#ced4da!important}.dropdown .menu-open-no-data{display:flex!important;opacity:1}.dropdown .menu-open{display:block;opacity:1}.dropdown .label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.dropdown .selectError{border:1px solid #fe5f5f!important}\n"] }]
950
997
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { titleKey: [{
951
998
  type: Input
952
999
  }], valueKey: [{
@@ -987,12 +1034,20 @@ class CoreSwitchComponent {
987
1034
  this.toggle = this.icon.iconActive;
988
1035
  this.value.emit(this.toggle);
989
1036
  }
1037
+ handleKey(event) {
1038
+ if (event.key === 'Enter') {
1039
+ if (this.toggle === this.icon.iconActive)
1040
+ this.toggle = this.icon.iconInactive;
1041
+ else
1042
+ this.toggle = this.icon.iconActive;
1043
+ }
1044
+ }
990
1045
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
991
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreSwitchComponent, selector: "core-switch", inputs: { icon: "icon", label: "label", defaultValue: "defaultValue" }, outputs: { value: "value" }, ngImport: i0, template: "<div class=\"switch-container\" (click)=\"change()\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"switch\"\r\n [checked]=\"toggle === icon.iconActive\"\r\n />\r\n <div class=\"switch-color\">\r\n <span>{{ label }} </span>\r\n </div>\r\n <label for=\"switch\" class=\"label\"\r\n ><span class=\"material-symbols-outlined\">{{ toggle }} </span>\r\n </label>\r\n</div>\r\n", styles: [".switch-container{min-width:55px;max-width:118px;height:30px;border-radius:10em;border:1px solid var(--default-switch-border-color);position:relative;cursor:pointer;text-align:end}.switch-container .switch{display:none}.switch-container .switch:checked~.label{transform:translate(87px) rotate(360deg)}.switch-container .switch~.label{transition:all 1s cubic-bezier(.34,1.36,.2,1)}.switch-container .switch-color{width:100%;height:30px;background:var(--default-switch-background-color);border-radius:10em;z-index:0;position:absolute;transition:all .5s cubic-bezier(.34,1.36,.2,1)}.switch-container .label{width:25px;height:25px;text-align:center;border-radius:10em;background:var(--default-switch-background-label-color);position:absolute;top:2px;left:3px;box-shadow:2px 2px 10px 2px var(--default-switch-box-shadow-color);z-index:2;cursor:pointer;-webkit-user-select:none;user-select:none}.switch-container .label span{font-size:20px;padding-block-start:3px;padding-inline-start:1px;color:var(--default-switch-text-color)}\n"] }); }
1046
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreSwitchComponent, selector: "core-switch", inputs: { icon: "icon", label: "label", defaultValue: "defaultValue" }, outputs: { value: "value" }, ngImport: i0, template: "<div class=\"switch-container\" (keydown)=\"handleKey($event)\" (click)=\"change()\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"switch\"\r\n [checked]=\"toggle === icon.iconActive\"\r\n />\r\n <div class=\"switch-color\">\r\n <span>{{ label }} </span>\r\n </div>\r\n <label for=\"switch\" class=\"label\"\r\n ><span class=\"material-symbols-outlined\">{{ toggle }} </span>\r\n </label>\r\n</div>\r\n", styles: [".switch-container{min-width:55px;max-width:118px;height:30px;border-radius:10em;border:1px solid var(--default-switch-border-color);position:relative;cursor:pointer;text-align:end}.switch-container .switch{display:none}.switch-container .switch:checked~.label{transform:translate(87px) rotate(360deg)}.switch-container .switch~.label{transition:all 1s cubic-bezier(.34,1.36,.2,1)}.switch-container .switch-color{width:100%;height:30px;background:var(--default-switch-background-color);border-radius:10em;z-index:0;position:absolute;transition:all .5s cubic-bezier(.34,1.36,.2,1)}.switch-container .label{width:25px;height:25px;text-align:center;border-radius:10em;background:var(--default-switch-background-label-color);position:absolute;top:2px;left:3px;box-shadow:2px 2px 10px 2px var(--default-switch-box-shadow-color);z-index:2;cursor:pointer;-webkit-user-select:none;user-select:none}.switch-container .label span{font-size:20px;padding-block-start:3px;padding-inline-start:1px;color:var(--default-switch-text-color)}\n"] }); }
992
1047
  }
993
1048
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreSwitchComponent, decorators: [{
994
1049
  type: Component,
995
- args: [{ selector: 'core-switch', template: "<div class=\"switch-container\" (click)=\"change()\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"switch\"\r\n [checked]=\"toggle === icon.iconActive\"\r\n />\r\n <div class=\"switch-color\">\r\n <span>{{ label }} </span>\r\n </div>\r\n <label for=\"switch\" class=\"label\"\r\n ><span class=\"material-symbols-outlined\">{{ toggle }} </span>\r\n </label>\r\n</div>\r\n", styles: [".switch-container{min-width:55px;max-width:118px;height:30px;border-radius:10em;border:1px solid var(--default-switch-border-color);position:relative;cursor:pointer;text-align:end}.switch-container .switch{display:none}.switch-container .switch:checked~.label{transform:translate(87px) rotate(360deg)}.switch-container .switch~.label{transition:all 1s cubic-bezier(.34,1.36,.2,1)}.switch-container .switch-color{width:100%;height:30px;background:var(--default-switch-background-color);border-radius:10em;z-index:0;position:absolute;transition:all .5s cubic-bezier(.34,1.36,.2,1)}.switch-container .label{width:25px;height:25px;text-align:center;border-radius:10em;background:var(--default-switch-background-label-color);position:absolute;top:2px;left:3px;box-shadow:2px 2px 10px 2px var(--default-switch-box-shadow-color);z-index:2;cursor:pointer;-webkit-user-select:none;user-select:none}.switch-container .label span{font-size:20px;padding-block-start:3px;padding-inline-start:1px;color:var(--default-switch-text-color)}\n"] }]
1050
+ args: [{ selector: 'core-switch', template: "<div class=\"switch-container\" (keydown)=\"handleKey($event)\" (click)=\"change()\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"switch\"\r\n [checked]=\"toggle === icon.iconActive\"\r\n />\r\n <div class=\"switch-color\">\r\n <span>{{ label }} </span>\r\n </div>\r\n <label for=\"switch\" class=\"label\"\r\n ><span class=\"material-symbols-outlined\">{{ toggle }} </span>\r\n </label>\r\n</div>\r\n", styles: [".switch-container{min-width:55px;max-width:118px;height:30px;border-radius:10em;border:1px solid var(--default-switch-border-color);position:relative;cursor:pointer;text-align:end}.switch-container .switch{display:none}.switch-container .switch:checked~.label{transform:translate(87px) rotate(360deg)}.switch-container .switch~.label{transition:all 1s cubic-bezier(.34,1.36,.2,1)}.switch-container .switch-color{width:100%;height:30px;background:var(--default-switch-background-color);border-radius:10em;z-index:0;position:absolute;transition:all .5s cubic-bezier(.34,1.36,.2,1)}.switch-container .label{width:25px;height:25px;text-align:center;border-radius:10em;background:var(--default-switch-background-label-color);position:absolute;top:2px;left:3px;box-shadow:2px 2px 10px 2px var(--default-switch-box-shadow-color);z-index:2;cursor:pointer;-webkit-user-select:none;user-select:none}.switch-container .label span{font-size:20px;padding-block-start:3px;padding-inline-start:1px;color:var(--default-switch-text-color)}\n"] }]
996
1051
  }], propDecorators: { value: [{
997
1052
  type: Output
998
1053
  }], icon: [{
@@ -2281,7 +2336,7 @@ class CoreTableComponent {
2281
2336
  }
2282
2337
  handleEnter(event) {
2283
2338
  const key = event;
2284
- if (document.activeElement === this.table.nativeElement) {
2339
+ if (document.activeElement === this.table?.nativeElement) {
2285
2340
  if (key.key === 'ArrowDown') {
2286
2341
  if (this.selectedItemIndex === this.sortedTableData.length - 1)
2287
2342
  return;
@@ -3191,14 +3246,15 @@ class CoreSelectSearchComponent {
3191
3246
  this._defaultValue = data;
3192
3247
  this.init();
3193
3248
  }
3194
- constructor(elementRef) {
3195
- this.elementRef = elementRef;
3249
+ constructor(elRef) {
3250
+ this.elRef = elRef;
3196
3251
  this.selectedItem = {};
3252
+ this.focusItem = undefined;
3197
3253
  this.newItems = [];
3198
3254
  this.isOpenMenu = false;
3199
3255
  this._items = [];
3200
3256
  this.keys = [];
3201
- this.searchText = '';
3257
+ this.currentItemIndex = 0;
3202
3258
  this.size = 'small';
3203
3259
  this.searchKeys = '';
3204
3260
  this.canAddValueKeyAndTitleKeyInSearchKeys = true;
@@ -3214,13 +3270,68 @@ class CoreSelectSearchComponent {
3214
3270
  this.valueKeyObject = this.valueKey;
3215
3271
  this.newItems = this.changeItemsType(this._items);
3216
3272
  this.inputFormControl.setValue(this._defaultValue);
3217
- this.onItemSelect(this.newItems.find((item) => item.value == this._defaultValue), false);
3218
- this.changeSearchText();
3273
+ this.itemSelect(this.newItems.find((item) => item.value == this._defaultValue), false);
3274
+ this.onChangeText();
3219
3275
  }
3220
3276
  ngOnInit() {
3221
3277
  this.keys = this.searchKeys.length > 0 ? this.searchKeys.split(',') : [];
3222
3278
  this.init();
3223
- this.changeSearchText();
3279
+ this.onChangeText();
3280
+ this.setInputFocus();
3281
+ }
3282
+ handleKey(event) {
3283
+ const items = this.filteredItems.getValue();
3284
+ this.currentItemIndex = items.findIndex((item) => item[this.valueKeyObject] === this.focusItem?.value);
3285
+ switch (event.key) {
3286
+ case 'Enter':
3287
+ this.isOpenMenu = !this.isOpenMenu;
3288
+ this.setInputFocus();
3289
+ if (this.focusItem) {
3290
+ this.selectedItem = this.focusItem;
3291
+ this.inputFormControl.setValue(this.selectedItem.title);
3292
+ this.searchText = this.selectedItem.title;
3293
+ }
3294
+ break;
3295
+ case 'Escape':
3296
+ event.preventDefault();
3297
+ this.isOpenMenu = false;
3298
+ break;
3299
+ case 'ArrowDown':
3300
+ event.preventDefault();
3301
+ if (this.isOpenMenu && items.length - 1 > this.currentItemIndex)
3302
+ this.focusItem = items[this.currentItemIndex + 1];
3303
+ this.scrollToActive();
3304
+ break;
3305
+ case 'ArrowUp':
3306
+ event.preventDefault();
3307
+ if (this.isOpenMenu && this.currentItemIndex > 0)
3308
+ this.focusItem = items[this.currentItemIndex - 1];
3309
+ this.scrollToActive();
3310
+ break;
3311
+ case 'Tab':
3312
+ this.isOpenMenu = false;
3313
+ break;
3314
+ }
3315
+ }
3316
+ itemSelect(selectedItem, isFromUi) {
3317
+ if (isFromUi)
3318
+ this.inputFormControl.markAsTouched();
3319
+ this.isOpenMenu = false;
3320
+ if (!selectedItem) {
3321
+ this.selectedItem = {};
3322
+ return;
3323
+ }
3324
+ this.selectedItem = selectedItem;
3325
+ const mainItem = this._items.find((item) => item[this.valueKeyObject] === selectedItem.value);
3326
+ this.inputFormControl.setValue(selectedItem.title);
3327
+ this.searchText = selectedItem.title;
3328
+ this.onItemSelected.emit(mainItem);
3329
+ this.onChangeText();
3330
+ }
3331
+ onItemSelect(event, selectedItem, isFromUi) {
3332
+ event.preventDefault();
3333
+ this.focusItem = selectedItem;
3334
+ this.itemSelect(selectedItem, isFromUi);
3224
3335
  }
3225
3336
  changeItemsType(items) {
3226
3337
  return items.map((item) => {
@@ -3234,70 +3345,51 @@ class CoreSelectSearchComponent {
3234
3345
  return result;
3235
3346
  });
3236
3347
  }
3237
- async changeSearchText() {
3238
- if (this.searchText.length > 0) {
3239
- this.filteredItems.next(this.newItems.filter((item) => {
3240
- let isMach = false;
3241
- if ((this.canAddValueKeyAndTitleKeyInSearchKeys ||
3242
- this.keys.length == 0) &&
3243
- (item.title.includes(this.searchText) ||
3244
- item.value.toLowerCase().includes(this.searchText.toLowerCase()))) {
3245
- isMach = true;
3246
- }
3247
- if (this.keys.length > 0) {
3248
- this.keys.forEach((key) => {
3249
- if (item[key]
3250
- .toString()
3251
- .toLowerCase()
3252
- .includes(this.searchText.toLowerCase())) {
3253
- isMach = true;
3254
- }
3255
- });
3256
- }
3257
- return isMach;
3258
- }));
3348
+ async onChangeText() {
3349
+ if (this.selectedItem.title === this.searchText) {
3350
+ this.filteredItems.next(this.newItems);
3351
+ }
3352
+ else if (this.searchText) {
3353
+ this.filteredItems.next(this.newItems.filter((item) => item.title.includes(this.searchText) ||
3354
+ item.value.toLowerCase().includes(this.searchText)));
3259
3355
  }
3260
3356
  else {
3261
3357
  this.filteredItems.next(this.newItems);
3262
3358
  }
3263
3359
  }
3360
+ setInputFocus() {
3361
+ if (this.inputElement) {
3362
+ setTimeout(() => {
3363
+ this.inputElement.nativeElement?.focus();
3364
+ });
3365
+ }
3366
+ }
3264
3367
  openMenuClick() {
3265
3368
  if (this.disabled)
3266
3369
  return;
3267
3370
  this.isOpenMenu = !this.isOpenMenu;
3268
3371
  }
3269
- onItemSelect(selectedItem, isFromUi) {
3270
- if (isFromUi)
3271
- this.inputFormControl.markAsTouched();
3272
- this.isOpenMenu = false;
3273
- if (!selectedItem) {
3274
- this.selectedItem = {};
3275
- return;
3276
- }
3277
- this.selectedItem = selectedItem;
3278
- const mainItem = this._items.find((item) => item[this.valueKeyObject] === selectedItem.value);
3279
- this.inputFormControl.setValue(selectedItem.value);
3280
- this.clearText();
3281
- this.onItemSelected.emit(mainItem);
3372
+ scrollToActive() {
3373
+ const element = document.getElementById('scroll' + this.currentItemIndex);
3374
+ element?.scrollIntoView({
3375
+ block: 'center',
3376
+ behavior: 'smooth',
3377
+ });
3282
3378
  }
3283
3379
  focusOut(event) {
3284
- const target = event.relatedTarget;
3285
- if (!this.elementRef.nativeElement.contains(target)) {
3380
+ const nextFocusedElement = event.relatedTarget;
3381
+ if (!nextFocusedElement ||
3382
+ !this.elRef.nativeElement.contains(nextFocusedElement)) {
3286
3383
  this.isOpenMenu = false;
3287
3384
  this.inputFormControl.markAsTouched();
3288
- this.clearText();
3289
3385
  }
3290
3386
  }
3291
- clearText() {
3292
- this.searchText = '';
3293
- this.changeSearchText();
3294
- }
3295
3387
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreSelectSearchComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
3296
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreSelectSearchComponent, selector: "core-select-search", inputs: { titleKey: "titleKey", valueKey: "valueKey", size: "size", searchKeys: "searchKeys", canAddValueKeyAndTitleKeyInSearchKeys: "canAddValueKeyAndTitleKeyInSearchKeys", canHighlightBackground: "canHighlightBackground", items: "items", defaultValue: "defaultValue", label: "label", disabled: "disabled", inputFormControl: "inputFormControl" }, outputs: { onItemSelected: "onItemSelected" }, ngImport: i0, template: "<div tabindex=\"-1\" class=\"dropdown\" (focusout)=\"focusOut($event)\">\r\n <div\r\n class=\"select\"\r\n [ngClass]=\"{\r\n 'select-clicked': isOpenMenu,\r\n 'highlight-background':\r\n canHighlightBackground &&\r\n (selectedItem | json) === ({} | json) &&\r\n !(inputFormControl.touched && inputFormControl.errors),\r\n selectError: inputFormControl.touched && inputFormControl.errors ,\r\n 'disable-selector': disabled,\r\n }\"\r\n (click)=\"openMenuClick()\"\r\n >\r\n <span\r\n class=\"placeholder-top\"\r\n *ngIf=\"(selectedItem | json) != ({} | json)\"\r\n >{{ label }}</span\r\n >\r\n <arrow-down-icon\r\n class=\"caret fill-secondary-text-color h-6\"\r\n [ngClass]=\"{ 'caret-rotate': isOpenMenu }\"\r\n ></arrow-down-icon>\r\n\r\n <span\r\n [ngClass]=\"[\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? 'placeholder'\r\n : 'selected'\r\n ]\"\r\n >{{\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? label\r\n : selectedItem.title\r\n }}</span\r\n >\r\n </div>\r\n <div\r\n class=\"no-data\"\r\n *ngIf=\"newItems.length === 0\"\r\n [ngClass]=\"{ 'menu-open-no-data': isOpenMenu }\"\r\n >\r\n <warning-icon class=\"icon-color inline-block w-6\"></warning-icon>\r\n <b class=\"content block\">\u0645\u0648\u0631\u062F\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F</b>\r\n </div>\r\n <ul\r\n class=\"menu\"\r\n *ngIf=\"newItems.length > 0\"\r\n [ngClass]=\"{ 'menu-open': isOpenMenu }\"\r\n >\r\n <div\r\n *ngIf=\"newItems.length > 4\"\r\n class=\"grid grid-cols-12 h-11 items-center pe-5 ps-5 bg-white shadow-md\"\r\n >\r\n <input\r\n placeholder=\"\u062C\u0633\u062A\u062C\u0648 \"\r\n class=\"col-span-11 bg-transparent focus:outline-none min-h-9\"\r\n [(ngModel)]=\"searchText\"\r\n (keyup)=\"changeSearchText()\"\r\n />\r\n <span class=\"md:h-7 flex justify-center\">\r\n <search-icon\r\n class=\"transform scale-x-[-1] fill-icon-color hover:fill-primary-color hover:cursor-pointer\"\r\n >\r\n </search-icon\r\n ></span>\r\n </div>\r\n <li\r\n *ngFor=\"let item of filteredItems | async\"\r\n [ngClass]=\"{ active: item.value === selectedItem.value }\"\r\n (click)=\"onItemSelect(item, true)\"\r\n >\r\n {{ item.title }}\r\n </li>\r\n </ul>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n *ngIf=\"\r\n inputFormControl.touched &&\r\n inputFormControl.errors?.['required']\"\r\n >\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u062E\u0627\u0644\u06CC \u0627\u0633\u062A</span\r\n >\r\n </div>\r\n</div>\r\n", styles: [".dropdown{min-width:15em;position:relative;width:100%;min-width:120px}.dropdown .disable-selector{background-color:#f7f7f7!important;border:1px dashed #ced4da!important;cursor:no-drop!important}.dropdown .highlight-background{background-color:#dcf6ff!important}.dropdown .select{background:#fff;color:#304050;display:flex;justify-content:space-between;flex-direction:row-reverse;align-items:center;border:1px solid #ced4da;border-radius:4px;padding:8px;cursor:pointer;transition:background .3s;font-size:12px;-webkit-user-select:none;user-select:none}.dropdown .select:hover{background:#fbfbfb}.dropdown .select .selected{padding-inline:12px;font-size:14px;color:#000000b3;-webkit-user-select:none;user-select:none}.dropdown .select .placeholder-top{position:absolute;right:13px;background:#fff;top:-8px;padding-inline:6px;font-size:11px;color:#888}.dropdown .select .caret{color:#595c5f;-webkit-user-select:none;user-select:none}.dropdown .select .caret-rotate{transform:rotate(180deg)}.dropdown .select .placeholder{color:#888;padding-inline:16px}.dropdown .select-clicked{border:1px solid rgba(19,92,175,.397)}.dropdown .menu-open-no-data{display:flex!important;opacity:1}.dropdown .no-data{display:none;justify-content:center;align-items:center;font-size:small;flex-direction:column;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);transition:0,2s;z-index:10;height:120px;overflow:auto}.dropdown .no-data .icon-color{fill:var(--default-table-warning-icon-color)}.dropdown .no-data .content{color:var(--default-table-warning-color)}.dropdown .menu{list-style:none;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);opacity:0;display:none;transition:0,2s;z-index:10;max-height:200px;overflow:auto}.dropdown .menu li{padding:.7em .5em;margin:.3em 0;margin-inline:4px;border-radius:.5em;font-size:14px;text-align:start;cursor:pointer}.dropdown .menu li:hover{background:#f6f6f6;box-shadow:0 1px 2px #00000021,0 4px 4px #0000001a}.dropdown .menu .active{background:#ced4da!important}.dropdown .menu-open{display:block;opacity:1}.dropdown .label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.dropdown .selectError{border:1px solid #fe5f5f!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SearchIconComponent, selector: "search-icon" }, { kind: "component", type: WarningIconComponent, selector: "warning-icon" }, { kind: "component", type: ArrowDownIconComponent, selector: "arrow-down-icon" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
3388
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreSelectSearchComponent, selector: "core-select-search", inputs: { titleKey: "titleKey", valueKey: "valueKey", size: "size", searchKeys: "searchKeys", canAddValueKeyAndTitleKeyInSearchKeys: "canAddValueKeyAndTitleKeyInSearchKeys", canHighlightBackground: "canHighlightBackground", items: "items", defaultValue: "defaultValue", label: "label", disabled: "disabled", inputFormControl: "inputFormControl" }, outputs: { onItemSelected: "onItemSelected" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputSearch"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"dropdown\"\r\n id=\"container\"\r\n (focusin)=\"setInputFocus()\"\r\n (focusout)=\"focusOut($event)\"\r\n>\r\n <div\r\n class=\"select\"\r\n [ngClass]=\"{\r\n 'select-clicked': isOpenMenu,\r\n 'highlight-background':\r\n canHighlightBackground &&\r\n (selectedItem | json) === ({} | json) &&\r\n !(inputFormControl.touched && inputFormControl.errors),\r\n selectError: inputFormControl.touched && inputFormControl.errors ,\r\n 'disable-selector': disabled,\r\n }\"\r\n (click)=\"openMenuClick()\"\r\n tabindex=\"0\"\r\n (keydown)=\"handleKey($event)\"\r\n >\r\n <span class=\"placeholder-top\" *ngIf=\"searchText\">{{ label }}</span>\r\n <arrow-down-icon\r\n class=\"caret fill-secondary-text-color h-6\"\r\n [ngClass]=\"{ 'caret-rotate': isOpenMenu }\"\r\n ></arrow-down-icon>\r\n <input\r\n #inputSearch\r\n autocomplete=\"off\"\r\n id=\"inputSearch\"\r\n class=\"col-span-11 bg-transparent focus:outline-none\"\r\n [(ngModel)]=\"searchText\"\r\n [placeholder]=\"label\"\r\n (keyup)=\"onChangeText()\"\r\n />\r\n <!-- <span\r\n [ngClass]=\"[\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? 'placeholder'\r\n : 'selected'\r\n ]\"\r\n >{{\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? label\r\n : selectedItem.title\r\n }}</span\r\n > -->\r\n </div>\r\n <div\r\n class=\"no-data\"\r\n *ngIf=\"newItems.length === 0\"\r\n [ngClass]=\"{ 'menu-open-no-data': isOpenMenu }\"\r\n >\r\n <warning-icon class=\"icon-color inline-block w-6\"></warning-icon>\r\n <b class=\"content block\">\u0645\u0648\u0631\u062F\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F</b>\r\n </div>\r\n <ul\r\n class=\"menu\"\r\n *ngIf=\"newItems.length > 0\"\r\n [ngClass]=\"{ 'menu-open': isOpenMenu }\"\r\n tabindex=\"0\"\r\n (keydown)=\"handleKey($event)\"\r\n >\r\n <li\r\n *ngFor=\"let item of filteredItems | async; let i = index\"\r\n [id]=\"'scroll' + i\"\r\n [ngClass]=\"{ active: item.value === focusItem?.value }\"\r\n (click)=\"onItemSelect($event, item, true)\"\r\n >\r\n {{ item.title }}\r\n </li>\r\n </ul>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n *ngIf=\"\r\n inputFormControl.touched &&\r\n inputFormControl.errors?.['required']\"\r\n >\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u062E\u0627\u0644\u06CC \u0627\u0633\u062A</span\r\n >\r\n </div>\r\n</div>\r\n", styles: [".dropdown{min-width:15em;position:relative;width:100%;min-width:120px}.dropdown .disable-selector{background-color:#f7f7f7!important;border:1px dashed #ced4da!important;cursor:no-drop!important}.dropdown .highlight-background{background-color:#dcf6ff!important}.dropdown .select{background:#fff;color:#304050;display:flex;justify-content:space-between;flex-direction:row-reverse;align-items:center;border:1px solid #ced4da;border-radius:4px;padding:8px;cursor:pointer;transition:background .3s;font-size:12px;-webkit-user-select:none;user-select:none}.dropdown .select:hover{background:#fbfbfb}.dropdown .select:focus{border:2px solid rgba(37,112,198,.473)!important;outline:none}.dropdown .select .selected{padding-inline:12px;font-size:14px;color:#000000b3;-webkit-user-select:none;user-select:none}.dropdown .select .placeholder-top{position:absolute;right:13px;background:#fff;top:-8px;padding-inline:6px;font-size:11px;color:#888}.dropdown .select .caret{color:#595c5f;-webkit-user-select:none;user-select:none}.dropdown .select .caret-rotate{transform:rotate(180deg)}.dropdown .select .placeholder{color:#888;padding-inline:16px}.dropdown .select-clicked{border:1px solid rgba(19,92,175,.397)}.dropdown .menu-open-no-data{display:flex!important;opacity:1}.dropdown .no-data{display:none;justify-content:center;align-items:center;font-size:small;flex-direction:column;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);transition:0,2s;z-index:10;height:120px;overflow:auto}.dropdown .no-data .icon-color{fill:var(--default-table-warning-icon-color)}.dropdown .no-data .content{color:var(--default-table-warning-color)}.dropdown .menu{list-style:none;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);opacity:0;display:none;transition:0,2s;z-index:10;max-height:200px;overflow:auto}.dropdown .menu li{padding:.7em .5em;margin:.3em 0;margin-inline:4px;border-radius:.5em;font-size:14px;text-align:start;cursor:pointer}.dropdown .menu li:hover{background:#f6f6f6;box-shadow:0 1px 2px #00000021,0 4px 4px #0000001a}.dropdown .menu .active{background:#ced4da!important}.dropdown .menu-open{display:block;opacity:1}.dropdown .label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.dropdown .selectError{border:1px solid #fe5f5f!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: WarningIconComponent, selector: "warning-icon" }, { kind: "component", type: ArrowDownIconComponent, selector: "arrow-down-icon" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
3297
3389
  }
3298
3390
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreSelectSearchComponent, decorators: [{
3299
3391
  type: Component,
3300
- args: [{ selector: 'core-select-search', template: "<div tabindex=\"-1\" class=\"dropdown\" (focusout)=\"focusOut($event)\">\r\n <div\r\n class=\"select\"\r\n [ngClass]=\"{\r\n 'select-clicked': isOpenMenu,\r\n 'highlight-background':\r\n canHighlightBackground &&\r\n (selectedItem | json) === ({} | json) &&\r\n !(inputFormControl.touched && inputFormControl.errors),\r\n selectError: inputFormControl.touched && inputFormControl.errors ,\r\n 'disable-selector': disabled,\r\n }\"\r\n (click)=\"openMenuClick()\"\r\n >\r\n <span\r\n class=\"placeholder-top\"\r\n *ngIf=\"(selectedItem | json) != ({} | json)\"\r\n >{{ label }}</span\r\n >\r\n <arrow-down-icon\r\n class=\"caret fill-secondary-text-color h-6\"\r\n [ngClass]=\"{ 'caret-rotate': isOpenMenu }\"\r\n ></arrow-down-icon>\r\n\r\n <span\r\n [ngClass]=\"[\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? 'placeholder'\r\n : 'selected'\r\n ]\"\r\n >{{\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? label\r\n : selectedItem.title\r\n }}</span\r\n >\r\n </div>\r\n <div\r\n class=\"no-data\"\r\n *ngIf=\"newItems.length === 0\"\r\n [ngClass]=\"{ 'menu-open-no-data': isOpenMenu }\"\r\n >\r\n <warning-icon class=\"icon-color inline-block w-6\"></warning-icon>\r\n <b class=\"content block\">\u0645\u0648\u0631\u062F\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F</b>\r\n </div>\r\n <ul\r\n class=\"menu\"\r\n *ngIf=\"newItems.length > 0\"\r\n [ngClass]=\"{ 'menu-open': isOpenMenu }\"\r\n >\r\n <div\r\n *ngIf=\"newItems.length > 4\"\r\n class=\"grid grid-cols-12 h-11 items-center pe-5 ps-5 bg-white shadow-md\"\r\n >\r\n <input\r\n placeholder=\"\u062C\u0633\u062A\u062C\u0648 \"\r\n class=\"col-span-11 bg-transparent focus:outline-none min-h-9\"\r\n [(ngModel)]=\"searchText\"\r\n (keyup)=\"changeSearchText()\"\r\n />\r\n <span class=\"md:h-7 flex justify-center\">\r\n <search-icon\r\n class=\"transform scale-x-[-1] fill-icon-color hover:fill-primary-color hover:cursor-pointer\"\r\n >\r\n </search-icon\r\n ></span>\r\n </div>\r\n <li\r\n *ngFor=\"let item of filteredItems | async\"\r\n [ngClass]=\"{ active: item.value === selectedItem.value }\"\r\n (click)=\"onItemSelect(item, true)\"\r\n >\r\n {{ item.title }}\r\n </li>\r\n </ul>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n *ngIf=\"\r\n inputFormControl.touched &&\r\n inputFormControl.errors?.['required']\"\r\n >\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u062E\u0627\u0644\u06CC \u0627\u0633\u062A</span\r\n >\r\n </div>\r\n</div>\r\n", styles: [".dropdown{min-width:15em;position:relative;width:100%;min-width:120px}.dropdown .disable-selector{background-color:#f7f7f7!important;border:1px dashed #ced4da!important;cursor:no-drop!important}.dropdown .highlight-background{background-color:#dcf6ff!important}.dropdown .select{background:#fff;color:#304050;display:flex;justify-content:space-between;flex-direction:row-reverse;align-items:center;border:1px solid #ced4da;border-radius:4px;padding:8px;cursor:pointer;transition:background .3s;font-size:12px;-webkit-user-select:none;user-select:none}.dropdown .select:hover{background:#fbfbfb}.dropdown .select .selected{padding-inline:12px;font-size:14px;color:#000000b3;-webkit-user-select:none;user-select:none}.dropdown .select .placeholder-top{position:absolute;right:13px;background:#fff;top:-8px;padding-inline:6px;font-size:11px;color:#888}.dropdown .select .caret{color:#595c5f;-webkit-user-select:none;user-select:none}.dropdown .select .caret-rotate{transform:rotate(180deg)}.dropdown .select .placeholder{color:#888;padding-inline:16px}.dropdown .select-clicked{border:1px solid rgba(19,92,175,.397)}.dropdown .menu-open-no-data{display:flex!important;opacity:1}.dropdown .no-data{display:none;justify-content:center;align-items:center;font-size:small;flex-direction:column;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);transition:0,2s;z-index:10;height:120px;overflow:auto}.dropdown .no-data .icon-color{fill:var(--default-table-warning-icon-color)}.dropdown .no-data .content{color:var(--default-table-warning-color)}.dropdown .menu{list-style:none;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);opacity:0;display:none;transition:0,2s;z-index:10;max-height:200px;overflow:auto}.dropdown .menu li{padding:.7em .5em;margin:.3em 0;margin-inline:4px;border-radius:.5em;font-size:14px;text-align:start;cursor:pointer}.dropdown .menu li:hover{background:#f6f6f6;box-shadow:0 1px 2px #00000021,0 4px 4px #0000001a}.dropdown .menu .active{background:#ced4da!important}.dropdown .menu-open{display:block;opacity:1}.dropdown .label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.dropdown .selectError{border:1px solid #fe5f5f!important}\n"] }]
3392
+ args: [{ selector: 'core-select-search', template: "<div\r\n class=\"dropdown\"\r\n id=\"container\"\r\n (focusin)=\"setInputFocus()\"\r\n (focusout)=\"focusOut($event)\"\r\n>\r\n <div\r\n class=\"select\"\r\n [ngClass]=\"{\r\n 'select-clicked': isOpenMenu,\r\n 'highlight-background':\r\n canHighlightBackground &&\r\n (selectedItem | json) === ({} | json) &&\r\n !(inputFormControl.touched && inputFormControl.errors),\r\n selectError: inputFormControl.touched && inputFormControl.errors ,\r\n 'disable-selector': disabled,\r\n }\"\r\n (click)=\"openMenuClick()\"\r\n tabindex=\"0\"\r\n (keydown)=\"handleKey($event)\"\r\n >\r\n <span class=\"placeholder-top\" *ngIf=\"searchText\">{{ label }}</span>\r\n <arrow-down-icon\r\n class=\"caret fill-secondary-text-color h-6\"\r\n [ngClass]=\"{ 'caret-rotate': isOpenMenu }\"\r\n ></arrow-down-icon>\r\n <input\r\n #inputSearch\r\n autocomplete=\"off\"\r\n id=\"inputSearch\"\r\n class=\"col-span-11 bg-transparent focus:outline-none\"\r\n [(ngModel)]=\"searchText\"\r\n [placeholder]=\"label\"\r\n (keyup)=\"onChangeText()\"\r\n />\r\n <!-- <span\r\n [ngClass]=\"[\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? 'placeholder'\r\n : 'selected'\r\n ]\"\r\n >{{\r\n label.length > 0 && (selectedItem | json) == ({} | json)\r\n ? label\r\n : selectedItem.title\r\n }}</span\r\n > -->\r\n </div>\r\n <div\r\n class=\"no-data\"\r\n *ngIf=\"newItems.length === 0\"\r\n [ngClass]=\"{ 'menu-open-no-data': isOpenMenu }\"\r\n >\r\n <warning-icon class=\"icon-color inline-block w-6\"></warning-icon>\r\n <b class=\"content block\">\u0645\u0648\u0631\u062F\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F</b>\r\n </div>\r\n <ul\r\n class=\"menu\"\r\n *ngIf=\"newItems.length > 0\"\r\n [ngClass]=\"{ 'menu-open': isOpenMenu }\"\r\n tabindex=\"0\"\r\n (keydown)=\"handleKey($event)\"\r\n >\r\n <li\r\n *ngFor=\"let item of filteredItems | async; let i = index\"\r\n [id]=\"'scroll' + i\"\r\n [ngClass]=\"{ active: item.value === focusItem?.value }\"\r\n (click)=\"onItemSelect($event, item, true)\"\r\n >\r\n {{ item.title }}\r\n </li>\r\n </ul>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n *ngIf=\"\r\n inputFormControl.touched &&\r\n inputFormControl.errors?.['required']\"\r\n >\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u062E\u0627\u0644\u06CC \u0627\u0633\u062A</span\r\n >\r\n </div>\r\n</div>\r\n", styles: [".dropdown{min-width:15em;position:relative;width:100%;min-width:120px}.dropdown .disable-selector{background-color:#f7f7f7!important;border:1px dashed #ced4da!important;cursor:no-drop!important}.dropdown .highlight-background{background-color:#dcf6ff!important}.dropdown .select{background:#fff;color:#304050;display:flex;justify-content:space-between;flex-direction:row-reverse;align-items:center;border:1px solid #ced4da;border-radius:4px;padding:8px;cursor:pointer;transition:background .3s;font-size:12px;-webkit-user-select:none;user-select:none}.dropdown .select:hover{background:#fbfbfb}.dropdown .select:focus{border:2px solid rgba(37,112,198,.473)!important;outline:none}.dropdown .select .selected{padding-inline:12px;font-size:14px;color:#000000b3;-webkit-user-select:none;user-select:none}.dropdown .select .placeholder-top{position:absolute;right:13px;background:#fff;top:-8px;padding-inline:6px;font-size:11px;color:#888}.dropdown .select .caret{color:#595c5f;-webkit-user-select:none;user-select:none}.dropdown .select .caret-rotate{transform:rotate(180deg)}.dropdown .select .placeholder{color:#888;padding-inline:16px}.dropdown .select-clicked{border:1px solid rgba(19,92,175,.397)}.dropdown .menu-open-no-data{display:flex!important;opacity:1}.dropdown .no-data{display:none;justify-content:center;align-items:center;font-size:small;flex-direction:column;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);transition:0,2s;z-index:10;height:120px;overflow:auto}.dropdown .no-data .icon-color{fill:var(--default-table-warning-icon-color)}.dropdown .no-data .content{color:var(--default-table-warning-color)}.dropdown .menu{list-style:none;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);opacity:0;display:none;transition:0,2s;z-index:10;max-height:200px;overflow:auto}.dropdown .menu li{padding:.7em .5em;margin:.3em 0;margin-inline:4px;border-radius:.5em;font-size:14px;text-align:start;cursor:pointer}.dropdown .menu li:hover{background:#f6f6f6;box-shadow:0 1px 2px #00000021,0 4px 4px #0000001a}.dropdown .menu .active{background:#ced4da!important}.dropdown .menu-open{display:block;opacity:1}.dropdown .label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.dropdown .selectError{border:1px solid #fe5f5f!important}\n"] }]
3301
3393
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { titleKey: [{
3302
3394
  type: Input
3303
3395
  }], valueKey: [{
@@ -3322,6 +3414,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3322
3414
  type: Output
3323
3415
  }], inputFormControl: [{
3324
3416
  type: Input
3417
+ }], inputElement: [{
3418
+ type: ViewChild,
3419
+ args: ['inputSearch']
3325
3420
  }] } });
3326
3421
 
3327
3422
  class FalconLibModule {
@@ -3389,7 +3484,8 @@ class FalconLibModule {
3389
3484
  CoreRowPelakComponent,
3390
3485
  CoreTableDetailViewerForReportComponent,
3391
3486
  CalendarIconComponent,
3392
- ArrowDownIconComponent], imports: [CommonModule,
3487
+ ArrowDownIconComponent,
3488
+ CalendarTodayIconComponent], imports: [CommonModule,
3393
3489
  ReactiveFormsModule,
3394
3490
  FormsModule,
3395
3491
  NiraSnackBarModule,
@@ -3492,6 +3588,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3492
3588
  CoreTableDetailViewerForReportComponent,
3493
3589
  CalendarIconComponent,
3494
3590
  ArrowDownIconComponent,
3591
+ CalendarTodayIconComponent,
3495
3592
  ],
3496
3593
  imports: [
3497
3594
  CommonModule,