@sd-angular/core 1.3.227 → 1.3.228

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.
@@ -40,7 +40,7 @@ export class SdSelectEditor extends SdSelect {
40
40
  SdSelectEditor.decorators = [
41
41
  { type: Component, args: [{
42
42
  selector: "sd-select-editor",
43
- template: "<ng-container *ngIf=\"!appearance && sdLabelDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"sdLabelDef.templateRef\"> </ng-container>\r\n</ng-container>\r\n<label *ngIf=\"!appearance && label && !sdLabelDef?.templateRef\" class=\"d-block mb-0 T14M\"\r\n >{{ label }} <span class=\"text-danger mb-2\" *ngIf=\"isRequired\">*</span></label\r\n>\r\n<div\r\n class=\"d-flex align-items-center\"\r\n [class.sd-view]=\"sdView?.templateRef\"\r\n [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\"\r\n (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef; context: { value: formControl.value, selectedItems: selectedItems | async }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field\r\n class=\"sd-md\"\r\n [ngClass]=\"{ 'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage }\"\r\n [appearance]=\"appearance || 'outline'\">\r\n <mat-label *ngIf=\"appearance && label\">{{ label }}</mat-label>\r\n <mat-select\r\n *ngIf=\"multiple\"\r\n #select\r\n [formControl]=\"formControl\"\r\n [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n multiple\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n disableOptionCentering=\"true\"\r\n panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{ 'sd-selected': !isRequired && (multiple ? formControl?.value?.length : formControl?.value != null) }\"\r\n [required]=\"isRequired\"\r\n (openedChange)=\"onOpenChange($event)\"\r\n [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\"\r\n matTooltipClass=\"sd-multiline-tooltip\"\r\n [matTooltipDisabled]=\"!formControl.disabled || !formControl?.value?.length\"\r\n [matTooltip]=\"tooltip\">\r\n <mat-select-trigger>\r\n {{ display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input\r\n #input\r\n placeholder=\"{{ 'Search' | sdTranslate }}\"\r\n matInput\r\n autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"searchTerm$.next($event.target.value)\" />\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"multiple && selectAll\">\r\n <mat-checkbox class=\"mat-option\" [(ngModel)]=\"allSelected\" [ngModelOptions]=\"{ standalone: true }\" (change)=\"onSelectAll()\">\r\n T\u1EA5t c\u1EA3</mat-checkbox\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <mat-option\r\n class=\"sd__option--add\"\r\n *ngIf=\"addable && sdAdd?.observers?.length\"\r\n (keyup.Space)=\"$event.stopPropagation()\"\r\n disabled=\"true\">\r\n <div (click)=\"onAdd($event)\">\r\n <mat-icon class=\"mr-1\">add</mat-icon>\r\n {{ 'New item' | sdTranslate }}\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n <mat-select\r\n #select\r\n [formControl]=\"formControl\"\r\n [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n disableOptionCentering=\"true\"\r\n panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{ 'sd-selected': !isRequired && formControl?.value != null }\"\r\n [required]=\"isRequired\"\r\n (openedChange)=\"onOpenChange($event)\"\r\n [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\"\r\n *ngIf=\"!multiple\">\r\n <mat-select-trigger>\r\n {{ display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input\r\n #input\r\n placeholder=\"{{ 'Search' | sdTranslate }}\"\r\n matInput\r\n autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"searchTerm$.next($event.target.value)\" />\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <mat-option\r\n class=\"sd__option--add\"\r\n *ngIf=\"addable && sdAdd?.observers?.length\"\r\n (keyup.Space)=\"$event.stopPropagation()\"\r\n disabled=\"true\">\r\n <div (click)=\"onAdd($event)\">\r\n <mat-icon class=\"mr-1\">add</mat-icon>\r\n {{ 'New item' | sdTranslate }}\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n <ng-content select=\"[sdSuffixIcon]\" matSuffix></ng-content>\r\n <mat-icon\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value != null) && !isRequired && !formControl.disabled\"\r\n class=\"pointer sd-suffix-icon\"\r\n (click)=\"clear($event)\"\r\n matSuffix\r\n >cancel\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors?.required && !disableErrorMessage\">\r\n {{ 'This field is required' | sdTranslate }}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl?.errors?.customValidator && !disableErrorMessage\">\r\n {{ formControl?.errors?.customValidator }}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.errors?.inlineError\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ inlineError }}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>\r\n",
43
+ template: "<ng-container *ngIf=\"!appearance && sdLabelDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"sdLabelDef.templateRef\"> </ng-container>\r\n</ng-container>\r\n<label *ngIf=\"!appearance && label && !sdLabelDef?.templateRef\" class=\"d-block mb-0 T14M\"\r\n >{{ label }} <span class=\"text-danger mb-2\" *ngIf=\"isRequired\">*</span></label\r\n>\r\n<div\r\n class=\"d-flex align-items-center\"\r\n [class.sd-view]=\"sdView?.templateRef\"\r\n [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\"\r\n (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef; context: { value: formControl.value, selectedItems: selectedItems | async }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field\r\n class=\"sd-md\"\r\n [ngClass]=\"{ 'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage }\"\r\n [appearance]=\"appearance || 'outline'\">\r\n <mat-label *ngIf=\"appearance && label\">{{ label }}</mat-label>\r\n <mat-select\r\n *ngIf=\"multiple\"\r\n #select\r\n [formControl]=\"formControl\"\r\n [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n multiple\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n disableOptionCentering=\"true\"\r\n panelClass=\"sd-select-panel\"\r\n [class.sd-selected]=\"!isRequired && formControl?.value?.length\"\r\n [required]=\"isRequired\"\r\n (openedChange)=\"onOpenedChange($event)\"\r\n [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\"\r\n matTooltipClass=\"sd-multiline-tooltip\"\r\n [matTooltipDisabled]=\"!formControl.disabled || !formControl?.value?.length\"\r\n [matTooltip]=\"tooltip\">\r\n <mat-select-trigger>\r\n {{ display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input\r\n #input\r\n placeholder=\"{{ 'Search' | sdTranslate }}\"\r\n matInput\r\n autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"searchTerm$.next($event.target.value)\" />\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"multiple && selectAll\">\r\n <mat-checkbox class=\"mat-option\" [(ngModel)]=\"allSelected\" [ngModelOptions]=\"{ standalone: true }\" (change)=\"onSelectAll()\">\r\n T\u1EA5t c\u1EA3</mat-checkbox\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <mat-option\r\n class=\"sd__option--add\"\r\n *ngIf=\"addable && sdAdd?.observers?.length\"\r\n (keyup.Space)=\"$event.stopPropagation()\"\r\n disabled=\"true\">\r\n <div (click)=\"onAdd($event)\">\r\n <mat-icon class=\"mr-1\">add</mat-icon>\r\n {{ 'New item' | sdTranslate }}\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n <mat-select\r\n #select\r\n [formControl]=\"formControl\"\r\n [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n disableOptionCentering=\"true\"\r\n panelClass=\"sd-select-panel\"\r\n [class.sd-selected]=\"!isRequired && formControl?.value != null\"\r\n [required]=\"isRequired\"\r\n (openedChange)=\"onOpenedChange($event)\"\r\n [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\"\r\n *ngIf=\"!multiple\">\r\n <mat-select-trigger>\r\n {{ display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input\r\n #input\r\n placeholder=\"{{ 'Search' | sdTranslate }}\"\r\n matInput\r\n autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"searchTerm$.next($event.target.value)\" />\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <mat-option\r\n class=\"sd__option--add\"\r\n *ngIf=\"addable && sdAdd?.observers?.length\"\r\n (keyup.Space)=\"$event.stopPropagation()\"\r\n disabled=\"true\">\r\n <div (click)=\"onAdd($event)\">\r\n <mat-icon class=\"mr-1\">add</mat-icon>\r\n {{ 'New item' | sdTranslate }}\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n <ng-content select=\"[sdSuffixIcon]\" matSuffix></ng-content>\r\n <mat-icon\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value != null) && !isRequired && !formControl.disabled\"\r\n class=\"pointer sd-suffix-icon\"\r\n (click)=\"clear($event)\"\r\n matSuffix\r\n >cancel\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors?.required && !disableErrorMessage\">\r\n {{ 'This field is required' | sdTranslate }}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl?.errors?.customValidator && !disableErrorMessage\">\r\n {{ formControl?.errors?.customValidator }}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.errors?.inlineError\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ inlineError }}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>\r\n",
44
44
  changeDetection: ChangeDetectionStrategy.OnPush,
45
45
  styles: [":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:none}:host ::ng-deep .sd-selected .mat-select-arrow{border:none}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field mat-select.mat-select-disabled .mat-select-value{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input{background-color:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:10}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline{width:100%}::ng-deep .sd-select-panel .mat-option.sd-filtered-input mat-pseudo-checkbox{display:none}::ng-deep .mat-select-panel .mat-option.sd-filtered-input{height:auto}::ng-deep .sd-select-panel .mat-option.sd-filtered-input input{color:#000}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field-prefix .mat-icon{margin-right:0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper{padding:10px 0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper .mat-form-field-outline{background-color:rgba(0,0,0,.04)}.sd__option--add{background-color:#fff;bottom:0;color:rgba(0,0,0,.87);cursor:pointer;position:-webkit-sticky;position:sticky;z-index:10}.sd__option--add ::ng-deep mat-pseudo-checkbox{display:none}"]
46
46
  },] }
@@ -59,4 +59,4 @@ SdSelectEditor.propDecorators = {
59
59
  sdDelete: [{ type: Output }],
60
60
  sdLabelDef: [{ type: ContentChild, args: [SdLabelDefDirective,] }]
61
61
  };
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3NlbGVjdC1lZGl0b3IvIiwic291cmNlcyI6WyJzcmMvbGliL3NlbGVjdC1lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFHakIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLHVCQUF1QixFQUN2QixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFDTCxXQUFXLEVBRVosTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFRbkQsTUFBTSxPQUFPLGNBQWUsU0FBUSxRQUFRO0lBWTFDLFlBQ1UsS0FBd0IsRUFHeEIsaUJBQXFDO1FBRTdDLEtBQUssQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUx4QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUd4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW9CO1FBYnRDLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFDeEIsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6QixjQUFTLEdBQVksSUFBSSxDQUFDO1FBRXpCLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBWTdDLFVBQUssR0FBRyxDQUFDLE1BQWEsRUFBRSxFQUFFOztZQUN4QixNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGNBQWMsR0FBRztZQUN6QixNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLEtBQUssR0FBRztZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQztRQUVGLFdBQU0sR0FBRyxDQUFDLE1BQWEsRUFBRSxJQUFTLEVBQUUsRUFBRTs7WUFDcEMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxjQUFjLEdBQUc7WUFDekIsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxLQUFLLEdBQUc7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDO1FBRUYsYUFBUSxHQUFHLENBQUMsTUFBYSxFQUFFLElBQVMsRUFBRSxFQUFFOztZQUN0QyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGNBQWMsR0FBRztZQUN6QixNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLEtBQUssR0FBRztZQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUM7SUFyQkYsQ0FBQzs7O1lBekJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1Qix3Z1ZBQTZDO2dCQUU3QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQXZCQyxpQkFBaUI7NENBc0NkLE1BQU0sU0FBQyxXQUFXLGNBQ2xCLFFBQVE7Ozt3QkFkVixTQUFTLFNBQUMsU0FBUztzQkFFbkIsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7b0JBRUwsTUFBTTtxQkFDTixNQUFNO3VCQUNOLE1BQU07eUJBQ04sWUFBWSxTQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbnRlbnRDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3QgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XHJcbmltcG9ydCB7IFNkTGFiZWxEZWZEaXJlY3RpdmUgfSBmcm9tIFwiQHNkLWFuZ3VsYXIvY29yZS9jb21tb25cIjtcclxuaW1wb3J0IHtcclxuICBGT1JNX0NPTkZJRyxcclxuICBJRm9ybUNvbmZpZ3VyYXRpb25cclxufSBmcm9tIFwiQHNkLWFuZ3VsYXIvY29yZS9jb21tb25cIjtcclxuaW1wb3J0IHsgU2RTZWxlY3QgfSBmcm9tIFwiQHNkLWFuZ3VsYXIvY29yZS9zZWxlY3RcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInNkLXNlbGVjdC1lZGl0b3JcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3NlbGVjdC1lZGl0b3IuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vc2VsZWN0LWVkaXRvci5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RTZWxlY3RFZGl0b3IgZXh0ZW5kcyBTZFNlbGVjdCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKE1hdFNlbGVjdCkgbWF0U2VsZWN0OiBNYXRTZWxlY3Q7XHJcblxyXG4gIEBJbnB1dCgpIGFkZGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGVkaXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkZWxldGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KCkgc2RBZGQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNkRWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzZERlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBDb250ZW50Q2hpbGQoU2RMYWJlbERlZkRpcmVjdGl2ZSkgc2RMYWJlbERlZjogU2RMYWJlbERlZkRpcmVjdGl2ZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoRk9STV9DT05GSUcpXHJcbiAgICBAT3B0aW9uYWwoKVxyXG4gICAgcHJpdmF0ZSBmb3JtQ29uZmlndXJhdGlvbjogSUZvcm1Db25maWd1cmF0aW9uXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjZFJlZiwgZm9ybUNvbmZpZ3VyYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgb25BZGQgPSAoJGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgJGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5tYXRTZWxlY3Q/LmNsb3NlKCk7XHJcbiAgICB0aGlzLnNkQWRkLmVtaXQoKTtcclxuICB9O1xyXG5cclxuICBvbkVkaXQgPSAoJGV2ZW50OiBFdmVudCwgaXRlbTogYW55KSA9PiB7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAkZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIHRoaXMuc2RFZGl0LmVtaXQoaXRlbSk7XHJcbiAgfTtcclxuXHJcbiAgb25EZWxldGUgPSAoJGV2ZW50OiBFdmVudCwgaXRlbTogYW55KSA9PiB7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAkZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIHRoaXMuc2REZWxldGUuZW1pdChpdGVtKTtcclxuICB9O1xyXG59XHJcbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3NlbGVjdC1lZGl0b3IvIiwic291cmNlcyI6WyJzcmMvbGliL3NlbGVjdC1lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFHakIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLHVCQUF1QixFQUN2QixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFDTCxXQUFXLEVBRVosTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFRbkQsTUFBTSxPQUFPLGNBQWUsU0FBUSxRQUFRO0lBWTFDLFlBQ1UsS0FBd0IsRUFHeEIsaUJBQXFDO1FBRTdDLEtBQUssQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUx4QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUd4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW9CO1FBYnRDLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFDeEIsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6QixjQUFTLEdBQVksSUFBSSxDQUFDO1FBRXpCLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBWTdDLFVBQUssR0FBRyxDQUFDLE1BQWEsRUFBRSxFQUFFOztZQUN4QixNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGNBQWMsR0FBRztZQUN6QixNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLEtBQUssR0FBRztZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQztRQUVGLFdBQU0sR0FBRyxDQUFDLE1BQWEsRUFBRSxJQUFTLEVBQUUsRUFBRTs7WUFDcEMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxjQUFjLEdBQUc7WUFDekIsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxLQUFLLEdBQUc7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDO1FBRUYsYUFBUSxHQUFHLENBQUMsTUFBYSxFQUFFLElBQVMsRUFBRSxFQUFFOztZQUN0QyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGNBQWMsR0FBRztZQUN6QixNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLEtBQUssR0FBRztZQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUM7SUFyQkYsQ0FBQzs7O1lBekJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixnOVVBQTZDO2dCQUU3QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQXZCQyxpQkFBaUI7NENBc0NkLE1BQU0sU0FBQyxXQUFXLGNBQ2xCLFFBQVE7Ozt3QkFkVixTQUFTLFNBQUMsU0FBUztzQkFFbkIsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7b0JBRUwsTUFBTTtxQkFDTixNQUFNO3VCQUNOLE1BQU07eUJBQ04sWUFBWSxTQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbnRlbnRDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3QgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XHJcbmltcG9ydCB7IFNkTGFiZWxEZWZEaXJlY3RpdmUgfSBmcm9tIFwiQHNkLWFuZ3VsYXIvY29yZS9jb21tb25cIjtcclxuaW1wb3J0IHtcclxuICBGT1JNX0NPTkZJRyxcclxuICBJRm9ybUNvbmZpZ3VyYXRpb25cclxufSBmcm9tIFwiQHNkLWFuZ3VsYXIvY29yZS9jb21tb25cIjtcclxuaW1wb3J0IHsgU2RTZWxlY3QgfSBmcm9tIFwiQHNkLWFuZ3VsYXIvY29yZS9zZWxlY3RcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInNkLXNlbGVjdC1lZGl0b3JcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3NlbGVjdC1lZGl0b3IuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vc2VsZWN0LWVkaXRvci5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RTZWxlY3RFZGl0b3IgZXh0ZW5kcyBTZFNlbGVjdCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKE1hdFNlbGVjdCkgbWF0U2VsZWN0OiBNYXRTZWxlY3Q7XHJcblxyXG4gIEBJbnB1dCgpIGFkZGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGVkaXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkZWxldGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KCkgc2RBZGQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNkRWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzZERlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBDb250ZW50Q2hpbGQoU2RMYWJlbERlZkRpcmVjdGl2ZSkgc2RMYWJlbERlZjogU2RMYWJlbERlZkRpcmVjdGl2ZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoRk9STV9DT05GSUcpXHJcbiAgICBAT3B0aW9uYWwoKVxyXG4gICAgcHJpdmF0ZSBmb3JtQ29uZmlndXJhdGlvbjogSUZvcm1Db25maWd1cmF0aW9uXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjZFJlZiwgZm9ybUNvbmZpZ3VyYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgb25BZGQgPSAoJGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgJGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5tYXRTZWxlY3Q/LmNsb3NlKCk7XHJcbiAgICB0aGlzLnNkQWRkLmVtaXQoKTtcclxuICB9O1xyXG5cclxuICBvbkVkaXQgPSAoJGV2ZW50OiBFdmVudCwgaXRlbTogYW55KSA9PiB7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAkZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIHRoaXMuc2RFZGl0LmVtaXQoaXRlbSk7XHJcbiAgfTtcclxuXHJcbiAgb25EZWxldGUgPSAoJGV2ZW50OiBFdmVudCwgaXRlbTogYW55KSA9PiB7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAkZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIHRoaXMuc2REZWxldGUuZW1pdChpdGVtKTtcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -49,7 +49,7 @@ class SdSelectEditor extends SdSelect {
49
49
  SdSelectEditor.decorators = [
50
50
  { type: Component, args: [{
51
51
  selector: "sd-select-editor",
52
- template: "<ng-container *ngIf=\"!appearance && sdLabelDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"sdLabelDef.templateRef\"> </ng-container>\r\n</ng-container>\r\n<label *ngIf=\"!appearance && label && !sdLabelDef?.templateRef\" class=\"d-block mb-0 T14M\"\r\n >{{ label }} <span class=\"text-danger mb-2\" *ngIf=\"isRequired\">*</span></label\r\n>\r\n<div\r\n class=\"d-flex align-items-center\"\r\n [class.sd-view]=\"sdView?.templateRef\"\r\n [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\"\r\n (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef; context: { value: formControl.value, selectedItems: selectedItems | async }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field\r\n class=\"sd-md\"\r\n [ngClass]=\"{ 'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage }\"\r\n [appearance]=\"appearance || 'outline'\">\r\n <mat-label *ngIf=\"appearance && label\">{{ label }}</mat-label>\r\n <mat-select\r\n *ngIf=\"multiple\"\r\n #select\r\n [formControl]=\"formControl\"\r\n [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n multiple\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n disableOptionCentering=\"true\"\r\n panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{ 'sd-selected': !isRequired && (multiple ? formControl?.value?.length : formControl?.value != null) }\"\r\n [required]=\"isRequired\"\r\n (openedChange)=\"onOpenChange($event)\"\r\n [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\"\r\n matTooltipClass=\"sd-multiline-tooltip\"\r\n [matTooltipDisabled]=\"!formControl.disabled || !formControl?.value?.length\"\r\n [matTooltip]=\"tooltip\">\r\n <mat-select-trigger>\r\n {{ display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input\r\n #input\r\n placeholder=\"{{ 'Search' | sdTranslate }}\"\r\n matInput\r\n autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"searchTerm$.next($event.target.value)\" />\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"multiple && selectAll\">\r\n <mat-checkbox class=\"mat-option\" [(ngModel)]=\"allSelected\" [ngModelOptions]=\"{ standalone: true }\" (change)=\"onSelectAll()\">\r\n T\u1EA5t c\u1EA3</mat-checkbox\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <mat-option\r\n class=\"sd__option--add\"\r\n *ngIf=\"addable && sdAdd?.observers?.length\"\r\n (keyup.Space)=\"$event.stopPropagation()\"\r\n disabled=\"true\">\r\n <div (click)=\"onAdd($event)\">\r\n <mat-icon class=\"mr-1\">add</mat-icon>\r\n {{ 'New item' | sdTranslate }}\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n <mat-select\r\n #select\r\n [formControl]=\"formControl\"\r\n [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n disableOptionCentering=\"true\"\r\n panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{ 'sd-selected': !isRequired && formControl?.value != null }\"\r\n [required]=\"isRequired\"\r\n (openedChange)=\"onOpenChange($event)\"\r\n [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\"\r\n *ngIf=\"!multiple\">\r\n <mat-select-trigger>\r\n {{ display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input\r\n #input\r\n placeholder=\"{{ 'Search' | sdTranslate }}\"\r\n matInput\r\n autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"searchTerm$.next($event.target.value)\" />\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <mat-option\r\n class=\"sd__option--add\"\r\n *ngIf=\"addable && sdAdd?.observers?.length\"\r\n (keyup.Space)=\"$event.stopPropagation()\"\r\n disabled=\"true\">\r\n <div (click)=\"onAdd($event)\">\r\n <mat-icon class=\"mr-1\">add</mat-icon>\r\n {{ 'New item' | sdTranslate }}\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n <ng-content select=\"[sdSuffixIcon]\" matSuffix></ng-content>\r\n <mat-icon\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value != null) && !isRequired && !formControl.disabled\"\r\n class=\"pointer sd-suffix-icon\"\r\n (click)=\"clear($event)\"\r\n matSuffix\r\n >cancel\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors?.required && !disableErrorMessage\">\r\n {{ 'This field is required' | sdTranslate }}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl?.errors?.customValidator && !disableErrorMessage\">\r\n {{ formControl?.errors?.customValidator }}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.errors?.inlineError\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ inlineError }}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>\r\n",
52
+ template: "<ng-container *ngIf=\"!appearance && sdLabelDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"sdLabelDef.templateRef\"> </ng-container>\r\n</ng-container>\r\n<label *ngIf=\"!appearance && label && !sdLabelDef?.templateRef\" class=\"d-block mb-0 T14M\"\r\n >{{ label }} <span class=\"text-danger mb-2\" *ngIf=\"isRequired\">*</span></label\r\n>\r\n<div\r\n class=\"d-flex align-items-center\"\r\n [class.sd-view]=\"sdView?.templateRef\"\r\n [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\"\r\n (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef; context: { value: formControl.value, selectedItems: selectedItems | async }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field\r\n class=\"sd-md\"\r\n [ngClass]=\"{ 'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage }\"\r\n [appearance]=\"appearance || 'outline'\">\r\n <mat-label *ngIf=\"appearance && label\">{{ label }}</mat-label>\r\n <mat-select\r\n *ngIf=\"multiple\"\r\n #select\r\n [formControl]=\"formControl\"\r\n [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n multiple\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n disableOptionCentering=\"true\"\r\n panelClass=\"sd-select-panel\"\r\n [class.sd-selected]=\"!isRequired && formControl?.value?.length\"\r\n [required]=\"isRequired\"\r\n (openedChange)=\"onOpenedChange($event)\"\r\n [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\"\r\n matTooltipClass=\"sd-multiline-tooltip\"\r\n [matTooltipDisabled]=\"!formControl.disabled || !formControl?.value?.length\"\r\n [matTooltip]=\"tooltip\">\r\n <mat-select-trigger>\r\n {{ display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input\r\n #input\r\n placeholder=\"{{ 'Search' | sdTranslate }}\"\r\n matInput\r\n autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"searchTerm$.next($event.target.value)\" />\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"multiple && selectAll\">\r\n <mat-checkbox class=\"mat-option\" [(ngModel)]=\"allSelected\" [ngModelOptions]=\"{ standalone: true }\" (change)=\"onSelectAll()\">\r\n T\u1EA5t c\u1EA3</mat-checkbox\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <mat-option\r\n class=\"sd__option--add\"\r\n *ngIf=\"addable && sdAdd?.observers?.length\"\r\n (keyup.Space)=\"$event.stopPropagation()\"\r\n disabled=\"true\">\r\n <div (click)=\"onAdd($event)\">\r\n <mat-icon class=\"mr-1\">add</mat-icon>\r\n {{ 'New item' | sdTranslate }}\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n <mat-select\r\n #select\r\n [formControl]=\"formControl\"\r\n [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n disableOptionCentering=\"true\"\r\n panelClass=\"sd-select-panel\"\r\n [class.sd-selected]=\"!isRequired && formControl?.value != null\"\r\n [required]=\"isRequired\"\r\n (openedChange)=\"onOpenedChange($event)\"\r\n [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\"\r\n *ngIf=\"!multiple\">\r\n <mat-select-trigger>\r\n {{ display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input\r\n #input\r\n placeholder=\"{{ 'Search' | sdTranslate }}\"\r\n matInput\r\n autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"searchTerm$.next($event.target.value)\" />\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\" class=\"d-flex justify-content-between\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n <div>\r\n <mat-icon *ngIf=\"editable && sdEdit?.observers?.length\" class=\"mr-1 c-fa-icon\" (click)=\"onEdit($event, item)\">\r\n edit</mat-icon\r\n >\r\n <mat-icon *ngIf=\"deletable && sdDelete?.observers?.length\" class=\"mr-0 c-fa-icon\" (click)=\"onDelete($event, item)\">\r\n delete</mat-icon\r\n >\r\n </div>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <mat-option\r\n class=\"sd__option--add\"\r\n *ngIf=\"addable && sdAdd?.observers?.length\"\r\n (keyup.Space)=\"$event.stopPropagation()\"\r\n disabled=\"true\">\r\n <div (click)=\"onAdd($event)\">\r\n <mat-icon class=\"mr-1\">add</mat-icon>\r\n {{ 'New item' | sdTranslate }}\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n <ng-content select=\"[sdSuffixIcon]\" matSuffix></ng-content>\r\n <mat-icon\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value != null) && !isRequired && !formControl.disabled\"\r\n class=\"pointer sd-suffix-icon\"\r\n (click)=\"clear($event)\"\r\n matSuffix\r\n >cancel\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors?.required && !disableErrorMessage\">\r\n {{ 'This field is required' | sdTranslate }}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl?.errors?.customValidator && !disableErrorMessage\">\r\n {{ formControl?.errors?.customValidator }}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.errors?.inlineError\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ inlineError }}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>\r\n",
53
53
  changeDetection: ChangeDetectionStrategy.OnPush,
54
54
  styles: [":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:none}:host ::ng-deep .sd-selected .mat-select-arrow{border:none}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field mat-select.mat-select-disabled .mat-select-value{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input{background-color:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:10}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline{width:100%}::ng-deep .sd-select-panel .mat-option.sd-filtered-input mat-pseudo-checkbox{display:none}::ng-deep .mat-select-panel .mat-option.sd-filtered-input{height:auto}::ng-deep .sd-select-panel .mat-option.sd-filtered-input input{color:#000}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field-prefix .mat-icon{margin-right:0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper{padding:10px 0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper .mat-form-field-outline{background-color:rgba(0,0,0,.04)}.sd__option--add{background-color:#fff;bottom:0;color:rgba(0,0,0,.87);cursor:pointer;position:-webkit-sticky;position:sticky;z-index:10}.sd__option--add ::ng-deep mat-pseudo-checkbox{display:none}"]
55
55
  },] }
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-select-editor.js","sources":["../../../../projects/sd-core/select-editor/src/lib/select-editor.component.ts","../../../../projects/sd-core/select-editor/src/lib/select-editor.module.ts","../../../../projects/sd-core/select-editor/src/public-api.ts","../../../../projects/sd-core/select-editor/sd-angular-core-select-editor.ts"],"sourcesContent":["import {\r\n Component,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n Optional,\r\n Inject,\r\n Input,\r\n ChangeDetectionStrategy,\r\n ContentChild,\r\n} from \"@angular/core\";\r\nimport { MatSelect } from \"@angular/material/select\";\r\nimport { SdLabelDefDirective } from \"@sd-angular/core/common\";\r\nimport {\r\n FORM_CONFIG,\r\n IFormConfiguration\r\n} from \"@sd-angular/core/common\";\r\nimport { SdSelect } from \"@sd-angular/core/select\";\r\n\r\n@Component({\r\n selector: \"sd-select-editor\",\r\n templateUrl: \"./select-editor.component.html\",\r\n styleUrls: [\"./select-editor.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdSelectEditor extends SdSelect implements OnInit, OnDestroy {\r\n @ViewChild(MatSelect) matSelect: MatSelect;\r\n\r\n @Input() addable: boolean = true;\r\n @Input() editable: boolean = true;\r\n @Input() deletable: boolean = true;\r\n\r\n @Output() sdAdd = new EventEmitter();\r\n @Output() sdEdit = new EventEmitter<any>();\r\n @Output() sdDelete = new EventEmitter<any>();\r\n @ContentChild(SdLabelDefDirective) sdLabelDef: SdLabelDefDirective;\r\n\r\n constructor(\r\n private cdRef: ChangeDetectorRef,\r\n @Inject(FORM_CONFIG)\r\n @Optional()\r\n private formConfiguration: IFormConfiguration\r\n ) {\r\n super(cdRef, formConfiguration);\r\n }\r\n\r\n onAdd = ($event: Event) => {\r\n $event.stopPropagation();\r\n $event?.preventDefault();\r\n this.matSelect?.close();\r\n this.sdAdd.emit();\r\n };\r\n\r\n onEdit = ($event: Event, item: any) => {\r\n $event.stopPropagation();\r\n $event?.preventDefault();\r\n this.matSelect?.close();\r\n this.sdEdit.emit(item);\r\n };\r\n\r\n onDelete = ($event: Event, item: any) => {\r\n $event.stopPropagation();\r\n $event?.preventDefault();\r\n this.matSelect?.close();\r\n this.sdDelete.emit(item);\r\n };\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdSelectEditor } from './select-editor.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdSelectModule } from '@sd-angular/core/select';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatSelectModule,\r\n SdTranslateModule,\r\n MatCheckboxModule,\r\n MatProgressSpinnerModule,\r\n SdCommonModule,\r\n SdSelectModule\r\n ],\r\n declarations: [\r\n SdSelectEditor\r\n ],\r\n exports: [\r\n SdSelectEditor\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdSelectEditorModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/select-editor.module';\r\nexport * from './lib/select-editor.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;MA4Ba,cAAe,SAAQ,QAAQ;IAY1C,YACU,KAAwB,EAGxB,iBAAqC;QAE7C,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QALxB,UAAK,GAAL,KAAK,CAAmB;QAGxB,sBAAiB,GAAjB,iBAAiB,CAAoB;QAbtC,YAAO,GAAY,IAAI,CAAC;QACxB,aAAQ,GAAY,IAAI,CAAC;QACzB,cAAS,GAAY,IAAI,CAAC;QAEzB,UAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QAC3B,WAAM,GAAG,IAAI,YAAY,EAAO,CAAC;QACjC,aAAQ,GAAG,IAAI,YAAY,EAAO,CAAC;QAY7C,UAAK,GAAG,CAAC,MAAa;;YACpB,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,GAAG;YACzB,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,GAAG;YACxB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SACnB,CAAC;QAEF,WAAM,GAAG,CAAC,MAAa,EAAE,IAAS;;YAChC,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,GAAG;YACzB,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,GAAG;YACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB,CAAC;QAEF,aAAQ,GAAG,CAAC,MAAa,EAAE,IAAS;;YAClC,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,GAAG;YACzB,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,GAAG;YACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1B,CAAC;KArBD;;;YAzBF,SAAS,SAAC;gBACT,QAAQ,EAAE,kBAAkB;gBAC5B,wgVAA6C;gBAE7C,eAAe,EAAE,uBAAuB,CAAC,MAAM;;aAChD;;;YAvBC,iBAAiB;4CAsCd,MAAM,SAAC,WAAW,cAClB,QAAQ;;;wBAdV,SAAS,SAAC,SAAS;sBAEnB,KAAK;uBACL,KAAK;wBACL,KAAK;oBAEL,MAAM;qBACN,MAAM;uBACN,MAAM;yBACN,YAAY,SAAC,mBAAmB;;;MCEtB,oBAAoB;;;YAzBhC,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,mBAAmB;oBACnB,cAAc;oBACd,gBAAgB;oBAChB,kBAAkB;oBAClB,aAAa;oBACb,eAAe;oBACf,iBAAiB;oBACjB,iBAAiB;oBACjB,wBAAwB;oBACxB,cAAc;oBACd,cAAc;iBACf;gBACD,YAAY,EAAE;oBACZ,cAAc;iBACf;gBACD,OAAO,EAAE;oBACP,cAAc;iBACf;gBACD,SAAS,EAAE,EACV;aACF;;;ACvCD;;;;ACAA;;;;;;"}
1
+ {"version":3,"file":"sd-angular-core-select-editor.js","sources":["../../../../projects/sd-core/select-editor/src/lib/select-editor.component.ts","../../../../projects/sd-core/select-editor/src/lib/select-editor.module.ts","../../../../projects/sd-core/select-editor/src/public-api.ts","../../../../projects/sd-core/select-editor/sd-angular-core-select-editor.ts"],"sourcesContent":["import {\r\n Component,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n Optional,\r\n Inject,\r\n Input,\r\n ChangeDetectionStrategy,\r\n ContentChild,\r\n} from \"@angular/core\";\r\nimport { MatSelect } from \"@angular/material/select\";\r\nimport { SdLabelDefDirective } from \"@sd-angular/core/common\";\r\nimport {\r\n FORM_CONFIG,\r\n IFormConfiguration\r\n} from \"@sd-angular/core/common\";\r\nimport { SdSelect } from \"@sd-angular/core/select\";\r\n\r\n@Component({\r\n selector: \"sd-select-editor\",\r\n templateUrl: \"./select-editor.component.html\",\r\n styleUrls: [\"./select-editor.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdSelectEditor extends SdSelect implements OnInit, OnDestroy {\r\n @ViewChild(MatSelect) matSelect: MatSelect;\r\n\r\n @Input() addable: boolean = true;\r\n @Input() editable: boolean = true;\r\n @Input() deletable: boolean = true;\r\n\r\n @Output() sdAdd = new EventEmitter();\r\n @Output() sdEdit = new EventEmitter<any>();\r\n @Output() sdDelete = new EventEmitter<any>();\r\n @ContentChild(SdLabelDefDirective) sdLabelDef: SdLabelDefDirective;\r\n\r\n constructor(\r\n private cdRef: ChangeDetectorRef,\r\n @Inject(FORM_CONFIG)\r\n @Optional()\r\n private formConfiguration: IFormConfiguration\r\n ) {\r\n super(cdRef, formConfiguration);\r\n }\r\n\r\n onAdd = ($event: Event) => {\r\n $event.stopPropagation();\r\n $event?.preventDefault();\r\n this.matSelect?.close();\r\n this.sdAdd.emit();\r\n };\r\n\r\n onEdit = ($event: Event, item: any) => {\r\n $event.stopPropagation();\r\n $event?.preventDefault();\r\n this.matSelect?.close();\r\n this.sdEdit.emit(item);\r\n };\r\n\r\n onDelete = ($event: Event, item: any) => {\r\n $event.stopPropagation();\r\n $event?.preventDefault();\r\n this.matSelect?.close();\r\n this.sdDelete.emit(item);\r\n };\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdSelectEditor } from './select-editor.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdSelectModule } from '@sd-angular/core/select';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatSelectModule,\r\n SdTranslateModule,\r\n MatCheckboxModule,\r\n MatProgressSpinnerModule,\r\n SdCommonModule,\r\n SdSelectModule\r\n ],\r\n declarations: [\r\n SdSelectEditor\r\n ],\r\n exports: [\r\n SdSelectEditor\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdSelectEditorModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/select-editor.module';\r\nexport * from './lib/select-editor.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;MA4Ba,cAAe,SAAQ,QAAQ;IAY1C,YACU,KAAwB,EAGxB,iBAAqC;QAE7C,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QALxB,UAAK,GAAL,KAAK,CAAmB;QAGxB,sBAAiB,GAAjB,iBAAiB,CAAoB;QAbtC,YAAO,GAAY,IAAI,CAAC;QACxB,aAAQ,GAAY,IAAI,CAAC;QACzB,cAAS,GAAY,IAAI,CAAC;QAEzB,UAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QAC3B,WAAM,GAAG,IAAI,YAAY,EAAO,CAAC;QACjC,aAAQ,GAAG,IAAI,YAAY,EAAO,CAAC;QAY7C,UAAK,GAAG,CAAC,MAAa;;YACpB,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,GAAG;YACzB,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,GAAG;YACxB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SACnB,CAAC;QAEF,WAAM,GAAG,CAAC,MAAa,EAAE,IAAS;;YAChC,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,GAAG;YACzB,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,GAAG;YACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB,CAAC;QAEF,aAAQ,GAAG,CAAC,MAAa,EAAE,IAAS;;YAClC,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,GAAG;YACzB,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,GAAG;YACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1B,CAAC;KArBD;;;YAzBF,SAAS,SAAC;gBACT,QAAQ,EAAE,kBAAkB;gBAC5B,g9UAA6C;gBAE7C,eAAe,EAAE,uBAAuB,CAAC,MAAM;;aAChD;;;YAvBC,iBAAiB;4CAsCd,MAAM,SAAC,WAAW,cAClB,QAAQ;;;wBAdV,SAAS,SAAC,SAAS;sBAEnB,KAAK;uBACL,KAAK;wBACL,KAAK;oBAEL,MAAM;qBACN,MAAM;uBACN,MAAM;yBACN,YAAY,SAAC,mBAAmB;;;MCEtB,oBAAoB;;;YAzBhC,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,mBAAmB;oBACnB,cAAc;oBACd,gBAAgB;oBAChB,kBAAkB;oBAClB,aAAa;oBACb,eAAe;oBACf,iBAAiB;oBACjB,iBAAiB;oBACjB,wBAAwB;oBACxB,cAAc;oBACd,cAAc;iBACf;gBACD,YAAY,EAAE;oBACZ,cAAc;iBACf;gBACD,OAAO,EAAE;oBACP,cAAc;iBACf;gBACD,SAAS,EAAE,EACV;aACF;;;ACvCD;;;;ACAA;;;;;;"}
@@ -139,7 +139,7 @@ class SdSelect {
139
139
  _onChange.set(this, (value) => __awaiter(this, void 0, void 0, function* () {
140
140
  if (Array.isArray(value)) {
141
141
  this.modelChange.emit(value);
142
- this.sdChange.emit(value);
142
+ // this.sdChange.emit(value);
143
143
  this.sdSelection.emit({
144
144
  value: value,
145
145
  items: value.map(val => __classPrivateFieldGet(this, _allItem)[val === null || val === void 0 ? void 0 : val.toString()]),
@@ -147,7 +147,7 @@ class SdSelect {
147
147
  }
148
148
  else {
149
149
  this.modelChange.emit(value);
150
- this.sdChange.emit(value);
150
+ // this.sdChange.emit(value);
151
151
  this.sdSelection.emit({
152
152
  value: value,
153
153
  item: __classPrivateFieldGet(this, _allItem)[value === null || value === void 0 ? void 0 : value.toString()],
@@ -215,7 +215,7 @@ class SdSelect {
215
215
  return null;
216
216
  });
217
217
  });
218
- this.onOpenChange = (isOpened) => {
218
+ this.onOpenedChange = (isOpened) => {
219
219
  if (isOpened) {
220
220
  this.isFocused = true;
221
221
  if (__classPrivateFieldGet(this, _input)) {
@@ -225,6 +225,8 @@ class SdSelect {
225
225
  }
226
226
  else {
227
227
  this.isFocused = false;
228
+ // Thực hiện sdChange khi panel close
229
+ this.sdChange.emit(this.formControl.value);
228
230
  }
229
231
  };
230
232
  this.onOptionChange = (tooltip) => {
@@ -467,7 +469,7 @@ _input = new WeakMap(), _name = new WeakMap(), _form = new WeakMap(), _itemsChan
467
469
  SdSelect.decorators = [
468
470
  { type: Component, args: [{
469
471
  selector: 'sd-select',
470
- template: "<ng-container *ngIf=\"!appearance && sdLabelDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"sdLabelDef.templateRef\"> </ng-container>\r\n</ng-container>\r\n<label *ngIf=\"!appearance && label && !sdLabelDef?.templateRef\" class=\"d-block mb-0 T14M\"\r\n >{{ label }} <span class=\"text-danger mb-2\" *ngIf=\"isRequired\">*</span></label\r\n>\r\n<div\r\n class=\"d-flex align-items-center\"\r\n [class.sd-view]=\"sdView?.templateRef\"\r\n [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\"\r\n (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef; context: { value: formControl.value, selectedItems: selectedItems | async }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field\r\n class=\"sd-md\"\r\n [ngClass]=\"{ 'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage }\"\r\n [appearance]=\"appearance || 'outline'\">\r\n <mat-label *ngIf=\"appearance && label\">{{ label }}</mat-label>\r\n <mat-select\r\n *ngIf=\"multiple\"\r\n #select\r\n [formControl]=\"formControl\"\r\n [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n multiple\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n disableOptionCentering=\"true\"\r\n panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{ 'sd-selected': !isRequired && (multiple ? formControl?.value?.length : formControl?.value != null) }\"\r\n [required]=\"isRequired\"\r\n (openedChange)=\"onOpenChange($event)\"\r\n [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\"\r\n matTooltipClass=\"sd-multiline-tooltip\"\r\n [matTooltipDisabled]=\"!formControl.disabled || !formControl?.value?.length\"\r\n [matTooltip]=\"tooltip\">\r\n <mat-select-trigger>\r\n {{ display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input\r\n aria-hidden=\"true\"\r\n #input\r\n placeholder=\"{{ 'Search' | sdTranslate }}\"\r\n matInput\r\n autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"searchTerm$.next($event.target.value)\" />\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"multiple && selectAll\">\r\n <mat-checkbox class=\"mat-option\" [(ngModel)]=\"allSelected\" [ngModelOptions]=\"{ standalone: true }\" (change)=\"onSelectAll()\">\r\n T\u1EA5t c\u1EA3</mat-checkbox\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-select\r\n *ngIf=\"!multiple\"\r\n #select\r\n [formControl]=\"formControl\"\r\n [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n disableOptionCentering=\"true\"\r\n panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{ 'sd-selected': !isRequired && formControl?.value != null }\"\r\n [required]=\"isRequired\"\r\n (openedChange)=\"onOpenChange($event)\"\r\n [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\">\r\n <mat-select-trigger>\r\n {{ display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input\r\n aria-hidden=\"true\"\r\n #input\r\n placeholder=\"{{ 'Search' | sdTranslate }}\"\r\n matInput\r\n autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"searchTerm$.next($event.target.value)\" />\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <ng-content select=\"[sdSuffixIcon]\" matSuffix></ng-content>\r\n <svg\r\n #copyTooltip=\"matTooltip\"\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value != null) && copyable\"\r\n matSuffix\r\n [matTooltip]=\"copied ? 'Copied' : 'Copy'\"\r\n class=\"icon-copy\"\r\n focusable=\"false\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\"\r\n (click)=\"onCopyText($event)\">\r\n <path\r\n d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"></path>\r\n </svg>\r\n \r\n <mat-icon\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value != null) && !isRequired && !formControl.disabled\"\r\n class=\"pointer sd-suffix-icon\"\r\n (click)=\"clear($event)\"\r\n matSuffix\r\n >cancel\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors?.required\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ 'This field is required' | sdTranslate }}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl?.errors?.customValidator\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ formControl?.errors?.customValidator }}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.errors?.inlineError\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ inlineError }}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>\r\n<!-- <sd-popover #popoverValues=\"sdPopover\" width=\"auto\">\r\n <ng-container *ngIf=\"formControl?.value?.length\">\r\n <ng-container *sdLet=\"selectedItems | async as items\">\r\n <div *ngFor=\"let item of items\">\r\n <strong>{{ item[valueField] }}</strong> - {{ item[displayField] }}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n</sd-popover> -->\r\n",
472
+ template: "<ng-container *ngIf=\"!appearance && sdLabelDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"sdLabelDef.templateRef\"> </ng-container>\r\n</ng-container>\r\n<label *ngIf=\"!appearance && label && !sdLabelDef?.templateRef\" class=\"d-block mb-0 T14M\"\r\n >{{ label }} <span class=\"text-danger mb-2\" *ngIf=\"isRequired\">*</span></label\r\n>\r\n<div\r\n class=\"d-flex align-items-center\"\r\n [class.sd-view]=\"sdView?.templateRef\"\r\n [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\"\r\n (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef; context: { value: formControl.value, selectedItems: selectedItems | async }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field\r\n class=\"sd-md\"\r\n [ngClass]=\"{ 'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage }\"\r\n [appearance]=\"appearance || 'outline'\">\r\n <mat-label *ngIf=\"appearance && label\">{{ label }}</mat-label>\r\n <mat-select\r\n *ngIf=\"multiple\"\r\n #select\r\n [formControl]=\"formControl\"\r\n [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n multiple\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n disableOptionCentering=\"true\"\r\n panelClass=\"sd-select-panel\"\r\n [class.sd-selected]=\"!isRequired && formControl?.value?.length\"\r\n [required]=\"isRequired\"\r\n (openedChange)=\"onOpenedChange($event)\"\r\n [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\"\r\n matTooltipClass=\"sd-multiline-tooltip\"\r\n [matTooltipDisabled]=\"!formControl.disabled || !formControl?.value?.length\"\r\n [matTooltip]=\"tooltip\">\r\n <mat-select-trigger>\r\n {{ display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input\r\n aria-hidden=\"true\"\r\n #input\r\n placeholder=\"{{ 'Search' | sdTranslate }}\"\r\n matInput\r\n autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"searchTerm$.next($event.target.value)\" />\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"multiple && selectAll\">\r\n <mat-checkbox class=\"mat-option\" [(ngModel)]=\"allSelected\" [ngModelOptions]=\"{ standalone: true }\" (change)=\"onSelectAll()\">\r\n T\u1EA5t c\u1EA3</mat-checkbox\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-select\r\n *ngIf=\"!multiple\"\r\n #select\r\n [formControl]=\"formControl\"\r\n [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n disableOptionCentering=\"true\"\r\n panelClass=\"sd-select-panel\"\r\n [class.sd-selected]=\"!isRequired && formControl?.value != null\"\r\n [required]=\"isRequired\"\r\n (openedChange)=\"onOpenedChange($event)\"\r\n [attr.data-qclabel]=\"label\"\r\n [attr.data-qcid]=\"qcId\">\r\n <mat-select-trigger>\r\n {{ display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input\r\n aria-hidden=\"true\"\r\n #input\r\n placeholder=\"{{ 'Search' | sdTranslate }}\"\r\n matInput\r\n autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (keyup)=\"searchTerm$.next($event.target.value)\" />\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item[valueField]\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item[displayField]\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async; trackBy: trackByKey\" [value]=\"item\">\r\n <div matTooltipPosition=\"above\" [matTooltip]=\"item\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <ng-content select=\"[sdSuffixIcon]\" matSuffix></ng-content>\r\n <svg\r\n #copyTooltip=\"matTooltip\"\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value != null) && copyable\"\r\n matSuffix\r\n [matTooltip]=\"copied ? 'Copied' : 'Copy'\"\r\n class=\"icon-copy\"\r\n focusable=\"false\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\"\r\n (click)=\"onCopyText($event)\">\r\n <path\r\n d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"></path>\r\n </svg>\r\n \r\n <mat-icon\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value != null) && !isRequired && !formControl.disabled\"\r\n class=\"pointer sd-suffix-icon\"\r\n (click)=\"clear($event)\"\r\n matSuffix\r\n >cancel\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors?.required\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ 'This field is required' | sdTranslate }}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl?.errors?.customValidator\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ formControl?.errors?.customValidator }}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.errors?.inlineError\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ inlineError }}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>\r\n<!-- <sd-popover #popoverValues=\"sdPopover\" width=\"auto\">\r\n <ng-container *ngIf=\"formControl?.value?.length\">\r\n <ng-container *sdLet=\"selectedItems | async as items\">\r\n <div *ngFor=\"let item of items\">\r\n <strong>{{ item[valueField] }}</strong> - {{ item[displayField] }}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n</sd-popover> -->\r\n",
471
473
  changeDetection: ChangeDetectionStrategy.OnPush,
472
474
  styles: [":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:none}:host ::ng-deep .sd-selected .mat-select-arrow{border:none}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field mat-select.mat-select-disabled .mat-select-value{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}:host ::ng-deep .mat-form-field:hover .icon-copy{opacity:1}:host ::ng-deep .mat-form-field .icon-copy{cursor:pointer;fill:rgba(0,0,0,.5);height:.9em;opacity:0;transition:opacity .2s linear;width:.9em}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input{background-color:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:10}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline{width:100%}::ng-deep .sd-select-panel .mat-option.sd-filtered-input mat-pseudo-checkbox{display:none}::ng-deep .mat-select-panel .mat-option.sd-filtered-input{height:auto}::ng-deep .sd-select-panel .mat-option.sd-filtered-input input{color:#000}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field-prefix .mat-icon{margin-right:0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper{padding:10px 0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper .mat-form-field-outline{background-color:rgba(0,0,0,.04)}::ng-deep .sd-multiline-tooltip{white-space:pre-line}"]
473
475
  },] }
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-select.js","sources":["../../../../projects/sd-core/select/src/lib/select-display-def.directive.ts","../../../../projects/sd-core/select/src/lib/select.component.ts","../../../../projects/sd-core/select/src/lib/select.module.ts","../../../../projects/sd-core/select/src/public-api.ts","../../../../projects/sd-core/select/sd-angular-core-select.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdSelectDisplayDef]'\r\n})\r\nexport class SdSelectDisplayDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n ContentChildren,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n QueryList,\r\n ViewChild,\r\n forwardRef,\r\n} from '@angular/core';\r\nimport { AbstractControl, AsyncValidatorFn, FormGroup, NgForm, ValidatorFn, Validators } from '@angular/forms';\r\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { MatSelect, MatSelectChange } from '@angular/material/select';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { FORM_CONFIG, IFormConfiguration, SdFormControl, SdLabelDefDirective, SdViewDefDirective } from '@sd-angular/core/common';\r\nimport hash from 'object-hash';\r\nimport { BehaviorSubject, Observable, Subject, Subscription, combineLatest } from 'rxjs';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport * as uuid from 'uuid';\r\nimport { SdSelectDisplayDefDirective } from './select-display-def.directive';\r\nimport { SdSuffixIconDirective } from '@sd-angular/core/common';\r\n@Component({\r\n selector: 'sd-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdSelect implements OnInit, AfterViewInit, OnDestroy {\r\n #input: MatInput;\r\n @ViewChild(MatInput) set input(input: MatInput) {\r\n if (this.#input !== input) {\r\n this.#input = input;\r\n this.#input.value = null;\r\n }\r\n }\r\n @ViewChild('select') select: MatSelect;\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() appearance: MatFormFieldAppearance;\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = val === '' || val;\r\n val = val === '' || val;\r\n }\r\n formControl = new SdFormControl();\r\n\r\n searchTerm$ = new Subject<string>();\r\n\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n qcId: string;\r\n label: string;\r\n @Input('label') set _label(val: string) {\r\n this.label = val;\r\n this.qcId = hash({\r\n selector: 'sd-select',\r\n label: val,\r\n });\r\n }\r\n @Input() placeholder: string;\r\n\r\n // Model\r\n display: Observable<string>;\r\n @Input() set model(value: undefined | boolean | number | string | (number | string)[]) {\r\n // if(this.formControl.disabled) {\r\n // this.formControl.enable({\r\n // emitEvent: false\r\n // });\r\n // this.formControl.setValue(value);\r\n // this.formControl.disable({\r\n // emitEvent: false\r\n // });\r\n // } else {\r\n // this.formControl.setValue(value);\r\n // }\r\n this.formControl.setValue(value);\r\n }\r\n // Items\r\n\r\n #itemsChanges = new BehaviorSubject<any[] | SearchFunc>([]);\r\n @Input() set items(items: undefined | any[] | SearchFunc) {\r\n this.#delay = 0;\r\n if (!items) {\r\n this.#itemsChanges.next([]);\r\n } else if (Array.isArray(items)) {\r\n this.#itemsChanges.next(items.filter(e => e !== null && e !== undefined));\r\n } else {\r\n this.#delay = 500;\r\n this.#itemsChanges.next(items);\r\n }\r\n this.searchTerm$.next('');\r\n }\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n @Input() cacheChecksum: any;\r\n\r\n // Server search\r\n loading = false;\r\n #delay = 200; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện gọi hàm\r\n\r\n // Validator\r\n isRequired = false;\r\n #validator: (value: any) => string | Promise<string>;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = val === '' || val;\r\n this.#updateValidator();\r\n }\r\n @Input() set validator(validator: (value: any) => string | Promise<string>) {\r\n this.#validator = validator;\r\n this.#updateValidator();\r\n }\r\n\r\n inlineError: string;\r\n @Input('inlineError') set _inlineError(val: string) {\r\n this.inlineError = val;\r\n this.#updateValidator();\r\n }\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = val === '' || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n multiple = false;\r\n @Input('multiple') set _multiple(val: boolean | '') {\r\n this.multiple = val === '' || val;\r\n }\r\n @Input() limit = 100;\r\n filtered = false;\r\n @Input('filtered') set _filtered(val: boolean | '') {\r\n this.filtered = val === '' || val;\r\n }\r\n @ContentChild(SdSelectDisplayDefDirective) selectDisplayDef: SdSelectDisplayDefDirective;\r\n selectAll = false;\r\n @Input('selectAll') set _selectAll(val: boolean | '') {\r\n this.selectAll = val === '' || val;\r\n }\r\n\r\n @ViewChild('copyTooltip') copyTooltip: MatTooltip;\r\n copyable = false;\r\n @Input('copyable') set _copyable(val: boolean | '') {\r\n this.copyable = val === '' || val;\r\n }\r\n copied = false;\r\n @Input() copyText: ((value: string | string[], items: any[]) => string) | string;\r\n\r\n @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = new EventEmitter();\r\n @Output() sdSelection = new EventEmitter<{ value: any | any[]; item?: any; items?: any[] }>();\r\n #subscription = new Subscription();\r\n selectedItems: Observable<any[]>;\r\n #allItems: Observable<any[]>;\r\n filteredItems: Observable<any[]>;\r\n #allItem: {\r\n [key: string]: any;\r\n } = {};\r\n allSelected = false;\r\n #cache: {\r\n [key: string]: any[];\r\n } = {};\r\n @ContentChild(SdLabelDefDirective) sdLabelDef: SdLabelDefDirective;\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n tooltip: string;\r\n constructor(private ref: ChangeDetectorRef, @Inject(FORM_CONFIG) @Optional() private formConfig: IFormConfiguration) {}\r\n\r\n ngOnInit() {\r\n this.appearance = this.appearance || this.formConfig?.appearance;\r\n this.#subscription.add(\r\n this.formControl.sdChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n })\r\n );\r\n this.#allItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.searchTerm$.asObservable().pipe(startWith(''), debounceTime(this.#delay)),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value)),\r\n ]).pipe(\r\n switchMap(async ([items, val, formValue]) => {\r\n formValue = this.formControl.value;\r\n if (typeof items === 'function') {\r\n return await this.#loadItems(val, items);\r\n }\r\n this.#allItem = items.toObject(this.valueField);\r\n const isArray = Array.isArray(formValue);\r\n const hasFields = !!this.valueField && !!this.displayField;\r\n const filteredItems = items.filter(item => {\r\n const value = hasFields ? item[this.valueField] : item;\r\n const display = hasFields ? item[this.displayField] : item;\r\n if (String.aliasIncludes(value, val) || String.aliasIncludes(display, val)) {\r\n return true;\r\n }\r\n if (isArray) {\r\n return formValue.some(e => e === value);\r\n }\r\n return formValue === value;\r\n });\r\n if (items.length <= this.limit) {\r\n return filteredItems;\r\n }\r\n // Đưa những selectedItems lên đầu nếu không mat-select-trigger sẽ không work\r\n return filteredItems.sort((current, next) => {\r\n const value1 = hasFields ? current[this.valueField] : current;\r\n const value2 = hasFields ? next[this.valueField] : next;\r\n let flag1 = 0;\r\n let flag2 = 0;\r\n if (isArray) {\r\n flag1 = formValue.some(e => e === value1) ? 1 : 0;\r\n flag2 = formValue.some(e => e === value2) ? 1 : 0;\r\n return flag2 - flag1;\r\n }\r\n flag1 = formValue === value1 ? 1 : 0;\r\n flag2 = formValue === value2 ? 1 : 0;\r\n return flag2 - flag1;\r\n });\r\n })\r\n );\r\n this.selectedItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value)),\r\n ]).pipe(\r\n switchMap(async ([items, val]) => {\r\n // Vì một số lý do chưa xác định mà khi sử dụng sdViewDef thì khi chuyển sang dạng view sẽ trigger val = null\r\n // Nhưng formControl.value vẫn có giá trị đúng nên thực hiện gán val = this.formControl.value;\r\n val = this.formControl.value;\r\n if (!val?.toString()) {\r\n return [];\r\n }\r\n const values = Array.isArray(val) ? val : [val];\r\n if (!this.valueField) {\r\n return values;\r\n }\r\n if (typeof items === 'function') {\r\n return await this.#loadSelectedItems(val, items);\r\n }\r\n return values.map(value => {\r\n return (\r\n items?.find(item => item[this.valueField] === value) || {\r\n [this.valueField]: value,\r\n [this.displayField]: value,\r\n }\r\n );\r\n });\r\n })\r\n );\r\n this.filteredItems = this.#allItems.pipe(map(allItems => allItems.paging(this.limit)));\r\n this.display = this.selectedItems.pipe(\r\n map(selectedItems => selectedItems?.map(item => (this.displayField ? item[this.displayField] : item))?.join(', '))\r\n );\r\n // Lấy dữ liệu cho tooltip\r\n this.#subscription.add(\r\n this.selectedItems.subscribe(\r\n selectedItems =>\r\n (this.tooltip = selectedItems\r\n ?.map(item => (this.valueField ? `• ${item[this.valueField]} - ${item[this.displayField]}` : `• ${item}`))\r\n ?.join('\\n'))\r\n )\r\n );\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.#validator) {\r\n asyncValidators.push(this.#customValidator(this.#validator));\r\n }\r\n if (this.inlineError) {\r\n validators.push(this.customInlineErrorValidator());\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n };\r\n\r\n // Hàm tạo Validators tùy chỉnh cho inlineError\r\n customInlineErrorValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n return { inlineError: true };\r\n };\r\n }\r\n\r\n #loadSelectedItems = async (value: string | string[], items: SearchFunc) => {\r\n if (!value?.toString()) {\r\n return [];\r\n }\r\n const values = Array.isArray(value) ? value : [value];\r\n if (!this.valueField && !this.displayField) {\r\n return values;\r\n }\r\n this.loading = true;\r\n if (values.some(val => this.#allItem[val] === undefined)) {\r\n const results = await items(value, true)\r\n .catch(() => [])\r\n .finally(() => (this.loading = false));\r\n const objItem = Array.toObject(results, this.valueField);\r\n const objValue = Array.toObject(\r\n values.map(val => ({ [val?.toString()]: { [this.valueField]: val, [this.displayField]: val } })),\r\n this.valueField\r\n );\r\n this.#allItem = {\r\n ...objValue,\r\n ...this.#allItem,\r\n ...objItem,\r\n };\r\n }\r\n return values.map(val => this.#allItem[val?.toString()] ?? { [this.valueField]: val, [this.displayField]: val });\r\n };\r\n\r\n #loadItems = async (searchText: string, items: SearchFunc) => {\r\n searchText = searchText?.toString() || '';\r\n const key = hash({\r\n checksum: this.cacheChecksum || null,\r\n searchText,\r\n });\r\n\r\n if (this.#cache[key] === undefined && this.isFocused) {\r\n this.loading = true;\r\n const results = await items(searchText)\r\n .catch(() => [])\r\n .finally(() => (this.loading = false));\r\n const objItem = Array.toObject(results, this.valueField);\r\n this.#allItem = {\r\n ...this.#allItem,\r\n ...objItem,\r\n };\r\n this.#cache[key] = results.union(this.valueField);\r\n }\r\n const selectedItems = await this.#loadSelectedItems(this.formControl.value, items);\r\n // Đưa những selectedItems lên đầu nếu không mat-select-trigger sẽ không work\r\n return [...selectedItems, ...(this.#cache[key] || [])].union(this.valueField);\r\n };\r\n\r\n onSelectionChange = (change: MatSelectChange) => {\r\n this.allSelected = !this.select.options.some(e => !e.selected);\r\n const value = change?.value ?? '';\r\n if (this.multiple) {\r\n this.#onChange(value || []);\r\n } else {\r\n this.searchTerm$.next('');\r\n this.#onChange(value);\r\n }\r\n };\r\n\r\n onSelectAll() {\r\n if (this.allSelected) {\r\n this.formControl.setValue(this.select.options.map(e => e.value));\r\n } else {\r\n this.formControl.setValue([]);\r\n }\r\n this.#onChange(this.formControl.value);\r\n }\r\n\r\n reValidate = () => {\r\n this.formControl.updateValueAndValidity({ emitEvent: true });\r\n };\r\n\r\n #onChange = async (value: boolean | number | string | (number | string)[]) => {\r\n if (Array.isArray(value)) {\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n this.sdSelection.emit({\r\n value: value,\r\n items: value.map(val => this.#allItem[val?.toString()]),\r\n });\r\n } else {\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n this.sdSelection.emit({\r\n value: value,\r\n item: this.#allItem[value?.toString()],\r\n });\r\n }\r\n };\r\n\r\n clear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n if (this.multiple) {\r\n this.formControl.setValue([]);\r\n this.modelChange.emit([]);\r\n this.sdChange.emit([]);\r\n this.sdSelection.emit({\r\n value: [],\r\n items: [],\r\n });\r\n } else {\r\n this.formControl.setValue(null);\r\n this.modelChange.emit(null);\r\n this.sdChange.emit(null);\r\n this.sdSelection.emit({\r\n value: null,\r\n item: null,\r\n });\r\n }\r\n };\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n };\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.select?.focus();\r\n this.select?.open();\r\n }, 100);\r\n };\r\n\r\n #customValidator = (func: (value: any) => string | Promise<string>): AsyncValidatorFn => {\r\n return async (c: AbstractControl): Promise<{ [key: string]: any } | null> => {\r\n const value = c.value || null;\r\n if (func && typeof func === 'function') {\r\n const result = func(value);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n return {\r\n customValidator: message,\r\n };\r\n }\r\n return null;\r\n }\r\n if (result) {\r\n return {\r\n customValidator: result,\r\n };\r\n }\r\n return null;\r\n }\r\n return null;\r\n };\r\n };\r\n\r\n onOpenChange = (isOpened: boolean) => {\r\n if (isOpened) {\r\n this.isFocused = true;\r\n if (this.#input) {\r\n this.#input.value = null;\r\n }\r\n this.searchTerm$.next('');\r\n } else {\r\n this.isFocused = false;\r\n }\r\n };\r\n\r\n onOptionChange = (tooltip: MatTooltip) => {\r\n tooltip?.hide();\r\n };\r\n\r\n trackByKey = (index, item) => {\r\n if (this.valueField) {\r\n return item?.[this.valueField];\r\n }\r\n return item;\r\n };\r\n\r\n onCopyText = (event: MouseEvent) => {\r\n event?.stopPropagation();\r\n const text: string = this.#getCopyText();\r\n SdUtility.copyToClipboard(text);\r\n this.copied = true;\r\n setTimeout(() => {\r\n this.copied = false;\r\n this.ref.markForCheck();\r\n }, 2000);\r\n };\r\n\r\n #getCopyText = () => {\r\n const value: string | string[] = this.formControl.value;\r\n let text = value?.toString() ?? '';\r\n if (typeof this.copyText === 'function') {\r\n if (Array.isArray(value)) {\r\n text = this.copyText(\r\n value,\r\n value.map(val => this.#allItem[val?.toString()])\r\n );\r\n } else {\r\n text = this.copyText(value, this.#allItem[value?.toString()]);\r\n }\r\n } else if (this.copyText) {\r\n text = this.copyText;\r\n }\r\n return text;\r\n };\r\n}\r\n// any tương ứng với string | string[], sử dụng any để tiện cho cả single và multiple và khi dev sử dụng sẽ đỡ bị lỗi compile\r\ntype SearchFunc = (searchText?: any, isFormValue?: boolean) => Promise<any[]>;\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdSelect } from './select.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdSelectDisplayDefDirective } from './select-display-def.directive';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdPopoverModule } from '@sd-angular/core/popover';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatSelectModule,\r\n MatProgressSpinnerModule,\r\n MatCheckboxModule,\r\n SdTranslateModule,\r\n SdCommonModule,\r\n SdPopoverModule\r\n ],\r\n declarations: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective\r\n ],\r\n exports: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective,\r\n SdCommonModule\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdSelectModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/select.module';\r\nexport * from './lib/select.component';\r\nexport * from './lib/select-display-def.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-select.js","sources":["../../../../projects/sd-core/select/src/lib/select-display-def.directive.ts","../../../../projects/sd-core/select/src/lib/select.component.ts","../../../../projects/sd-core/select/src/lib/select.module.ts","../../../../projects/sd-core/select/src/public-api.ts","../../../../projects/sd-core/select/sd-angular-core-select.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdSelectDisplayDef]'\r\n})\r\nexport class SdSelectDisplayDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n ContentChildren,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n QueryList,\r\n ViewChild,\r\n forwardRef,\r\n} from '@angular/core';\r\nimport { AbstractControl, AsyncValidatorFn, FormGroup, NgForm, ValidatorFn, Validators } from '@angular/forms';\r\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { MatSelect, MatSelectChange } from '@angular/material/select';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { FORM_CONFIG, IFormConfiguration, SdFormControl, SdLabelDefDirective, SdViewDefDirective } from '@sd-angular/core/common';\r\nimport hash from 'object-hash';\r\nimport { BehaviorSubject, Observable, Subject, Subscription, combineLatest } from 'rxjs';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport * as uuid from 'uuid';\r\nimport { SdSelectDisplayDefDirective } from './select-display-def.directive';\r\nimport { SdSuffixIconDirective } from '@sd-angular/core/common';\r\n@Component({\r\n selector: 'sd-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdSelect implements OnInit, AfterViewInit, OnDestroy {\r\n #input: MatInput;\r\n @ViewChild(MatInput) set input(input: MatInput) {\r\n if (this.#input !== input) {\r\n this.#input = input;\r\n this.#input.value = null;\r\n }\r\n }\r\n @ViewChild('select') select: MatSelect;\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() appearance: MatFormFieldAppearance;\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = val === '' || val;\r\n val = val === '' || val;\r\n }\r\n formControl = new SdFormControl();\r\n\r\n searchTerm$ = new Subject<string>();\r\n\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n qcId: string;\r\n label: string;\r\n @Input('label') set _label(val: string) {\r\n this.label = val;\r\n this.qcId = hash({\r\n selector: 'sd-select',\r\n label: val,\r\n });\r\n }\r\n @Input() placeholder: string;\r\n\r\n // Model\r\n display: Observable<string>;\r\n @Input() set model(value: undefined | boolean | number | string | (number | string)[]) {\r\n // if(this.formControl.disabled) {\r\n // this.formControl.enable({\r\n // emitEvent: false\r\n // });\r\n // this.formControl.setValue(value);\r\n // this.formControl.disable({\r\n // emitEvent: false\r\n // });\r\n // } else {\r\n // this.formControl.setValue(value);\r\n // }\r\n this.formControl.setValue(value);\r\n }\r\n // Items\r\n\r\n #itemsChanges = new BehaviorSubject<any[] | SearchFunc>([]);\r\n @Input() set items(items: undefined | any[] | SearchFunc) {\r\n this.#delay = 0;\r\n if (!items) {\r\n this.#itemsChanges.next([]);\r\n } else if (Array.isArray(items)) {\r\n this.#itemsChanges.next(items.filter(e => e !== null && e !== undefined));\r\n } else {\r\n this.#delay = 500;\r\n this.#itemsChanges.next(items);\r\n }\r\n this.searchTerm$.next('');\r\n }\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n @Input() cacheChecksum: any;\r\n\r\n // Server search\r\n loading = false;\r\n #delay = 200; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện gọi hàm\r\n\r\n // Validator\r\n isRequired = false;\r\n #validator: (value: any) => string | Promise<string>;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = val === '' || val;\r\n this.#updateValidator();\r\n }\r\n @Input() set validator(validator: (value: any) => string | Promise<string>) {\r\n this.#validator = validator;\r\n this.#updateValidator();\r\n }\r\n\r\n inlineError: string;\r\n @Input('inlineError') set _inlineError(val: string) {\r\n this.inlineError = val;\r\n this.#updateValidator();\r\n }\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = val === '' || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n multiple = false;\r\n @Input('multiple') set _multiple(val: boolean | '') {\r\n this.multiple = val === '' || val;\r\n }\r\n @Input() limit = 100;\r\n filtered = false;\r\n @Input('filtered') set _filtered(val: boolean | '') {\r\n this.filtered = val === '' || val;\r\n }\r\n @ContentChild(SdSelectDisplayDefDirective) selectDisplayDef: SdSelectDisplayDefDirective;\r\n selectAll = false;\r\n @Input('selectAll') set _selectAll(val: boolean | '') {\r\n this.selectAll = val === '' || val;\r\n }\r\n\r\n @ViewChild('copyTooltip') copyTooltip: MatTooltip;\r\n copyable = false;\r\n @Input('copyable') set _copyable(val: boolean | '') {\r\n this.copyable = val === '' || val;\r\n }\r\n copied = false;\r\n @Input() copyText: ((value: string | string[], items: any[]) => string) | string;\r\n\r\n @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = new EventEmitter();\r\n @Output() sdSelection = new EventEmitter<{ value: any | any[]; item?: any; items?: any[] }>();\r\n #subscription = new Subscription();\r\n selectedItems: Observable<any[]>;\r\n #allItems: Observable<any[]>;\r\n filteredItems: Observable<any[]>;\r\n #allItem: {\r\n [key: string]: any;\r\n } = {};\r\n allSelected = false;\r\n #cache: {\r\n [key: string]: any[];\r\n } = {};\r\n @ContentChild(SdLabelDefDirective) sdLabelDef: SdLabelDefDirective;\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n tooltip: string;\r\n constructor(private ref: ChangeDetectorRef, @Inject(FORM_CONFIG) @Optional() private formConfig: IFormConfiguration) {}\r\n\r\n ngOnInit() {\r\n this.appearance = this.appearance || this.formConfig?.appearance;\r\n this.#subscription.add(\r\n this.formControl.sdChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n })\r\n );\r\n this.#allItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.searchTerm$.asObservable().pipe(startWith(''), debounceTime(this.#delay)),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value)),\r\n ]).pipe(\r\n switchMap(async ([items, val, formValue]) => {\r\n formValue = this.formControl.value;\r\n if (typeof items === 'function') {\r\n return await this.#loadItems(val, items);\r\n }\r\n this.#allItem = items.toObject(this.valueField);\r\n const isArray = Array.isArray(formValue);\r\n const hasFields = !!this.valueField && !!this.displayField;\r\n const filteredItems = items.filter(item => {\r\n const value = hasFields ? item[this.valueField] : item;\r\n const display = hasFields ? item[this.displayField] : item;\r\n if (String.aliasIncludes(value, val) || String.aliasIncludes(display, val)) {\r\n return true;\r\n }\r\n if (isArray) {\r\n return formValue.some(e => e === value);\r\n }\r\n return formValue === value;\r\n });\r\n if (items.length <= this.limit) {\r\n return filteredItems;\r\n }\r\n // Đưa những selectedItems lên đầu nếu không mat-select-trigger sẽ không work\r\n return filteredItems.sort((current, next) => {\r\n const value1 = hasFields ? current[this.valueField] : current;\r\n const value2 = hasFields ? next[this.valueField] : next;\r\n let flag1 = 0;\r\n let flag2 = 0;\r\n if (isArray) {\r\n flag1 = formValue.some(e => e === value1) ? 1 : 0;\r\n flag2 = formValue.some(e => e === value2) ? 1 : 0;\r\n return flag2 - flag1;\r\n }\r\n flag1 = formValue === value1 ? 1 : 0;\r\n flag2 = formValue === value2 ? 1 : 0;\r\n return flag2 - flag1;\r\n });\r\n })\r\n );\r\n this.selectedItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value)),\r\n ]).pipe(\r\n switchMap(async ([items, val]) => {\r\n // Vì một số lý do chưa xác định mà khi sử dụng sdViewDef thì khi chuyển sang dạng view sẽ trigger val = null\r\n // Nhưng formControl.value vẫn có giá trị đúng nên thực hiện gán val = this.formControl.value;\r\n val = this.formControl.value;\r\n if (!val?.toString()) {\r\n return [];\r\n }\r\n const values = Array.isArray(val) ? val : [val];\r\n if (!this.valueField) {\r\n return values;\r\n }\r\n if (typeof items === 'function') {\r\n return await this.#loadSelectedItems(val, items);\r\n }\r\n return values.map(value => {\r\n return (\r\n items?.find(item => item[this.valueField] === value) || {\r\n [this.valueField]: value,\r\n [this.displayField]: value,\r\n }\r\n );\r\n });\r\n })\r\n );\r\n this.filteredItems = this.#allItems.pipe(map(allItems => allItems.paging(this.limit)));\r\n this.display = this.selectedItems.pipe(\r\n map(selectedItems => selectedItems?.map(item => (this.displayField ? item[this.displayField] : item))?.join(', '))\r\n );\r\n // Lấy dữ liệu cho tooltip\r\n this.#subscription.add(\r\n this.selectedItems.subscribe(\r\n selectedItems =>\r\n (this.tooltip = selectedItems\r\n ?.map(item => (this.valueField ? `• ${item[this.valueField]} - ${item[this.displayField]}` : `• ${item}`))\r\n ?.join('\\n'))\r\n )\r\n );\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.#validator) {\r\n asyncValidators.push(this.#customValidator(this.#validator));\r\n }\r\n if (this.inlineError) {\r\n validators.push(this.customInlineErrorValidator());\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n };\r\n\r\n // Hàm tạo Validators tùy chỉnh cho inlineError\r\n customInlineErrorValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n return { inlineError: true };\r\n };\r\n }\r\n\r\n #loadSelectedItems = async (value: string | string[], items: SearchFunc) => {\r\n if (!value?.toString()) {\r\n return [];\r\n }\r\n const values = Array.isArray(value) ? value : [value];\r\n if (!this.valueField && !this.displayField) {\r\n return values;\r\n }\r\n this.loading = true;\r\n if (values.some(val => this.#allItem[val] === undefined)) {\r\n const results = await items(value, true)\r\n .catch(() => [])\r\n .finally(() => (this.loading = false));\r\n const objItem = Array.toObject(results, this.valueField);\r\n const objValue = Array.toObject(\r\n values.map(val => ({ [val?.toString()]: { [this.valueField]: val, [this.displayField]: val } })),\r\n this.valueField\r\n );\r\n this.#allItem = {\r\n ...objValue,\r\n ...this.#allItem,\r\n ...objItem,\r\n };\r\n }\r\n return values.map(val => this.#allItem[val?.toString()] ?? { [this.valueField]: val, [this.displayField]: val });\r\n };\r\n\r\n #loadItems = async (searchText: string, items: SearchFunc) => {\r\n searchText = searchText?.toString() || '';\r\n const key = hash({\r\n checksum: this.cacheChecksum || null,\r\n searchText,\r\n });\r\n\r\n if (this.#cache[key] === undefined && this.isFocused) {\r\n this.loading = true;\r\n const results = await items(searchText)\r\n .catch(() => [])\r\n .finally(() => (this.loading = false));\r\n const objItem = Array.toObject(results, this.valueField);\r\n this.#allItem = {\r\n ...this.#allItem,\r\n ...objItem,\r\n };\r\n this.#cache[key] = results.union(this.valueField);\r\n }\r\n const selectedItems = await this.#loadSelectedItems(this.formControl.value, items);\r\n // Đưa những selectedItems lên đầu nếu không mat-select-trigger sẽ không work\r\n return [...selectedItems, ...(this.#cache[key] || [])].union(this.valueField);\r\n };\r\n\r\n onSelectionChange = (change: MatSelectChange) => {\r\n this.allSelected = !this.select.options.some(e => !e.selected);\r\n const value = change?.value ?? '';\r\n if (this.multiple) {\r\n this.#onChange(value || []);\r\n } else {\r\n this.searchTerm$.next('');\r\n this.#onChange(value);\r\n }\r\n };\r\n\r\n onSelectAll() {\r\n if (this.allSelected) {\r\n this.formControl.setValue(this.select.options.map(e => e.value));\r\n } else {\r\n this.formControl.setValue([]);\r\n }\r\n this.#onChange(this.formControl.value);\r\n }\r\n\r\n reValidate = () => {\r\n this.formControl.updateValueAndValidity({ emitEvent: true });\r\n };\r\n\r\n #onChange = async (value: boolean | number | string | (number | string)[]) => {\r\n if (Array.isArray(value)) {\r\n this.modelChange.emit(value);\r\n // this.sdChange.emit(value);\r\n this.sdSelection.emit({\r\n value: value,\r\n items: value.map(val => this.#allItem[val?.toString()]),\r\n });\r\n } else {\r\n this.modelChange.emit(value);\r\n // this.sdChange.emit(value);\r\n this.sdSelection.emit({\r\n value: value,\r\n item: this.#allItem[value?.toString()],\r\n });\r\n }\r\n };\r\n\r\n clear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n if (this.multiple) {\r\n this.formControl.setValue([]);\r\n this.modelChange.emit([]);\r\n this.sdChange.emit([]);\r\n this.sdSelection.emit({\r\n value: [],\r\n items: [],\r\n });\r\n } else {\r\n this.formControl.setValue(null);\r\n this.modelChange.emit(null);\r\n this.sdChange.emit(null);\r\n this.sdSelection.emit({\r\n value: null,\r\n item: null,\r\n });\r\n }\r\n };\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n };\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.select?.focus();\r\n this.select?.open();\r\n }, 100);\r\n };\r\n\r\n #customValidator = (func: (value: any) => string | Promise<string>): AsyncValidatorFn => {\r\n return async (c: AbstractControl): Promise<{ [key: string]: any } | null> => {\r\n const value = c.value || null;\r\n if (func && typeof func === 'function') {\r\n const result = func(value);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n return {\r\n customValidator: message,\r\n };\r\n }\r\n return null;\r\n }\r\n if (result) {\r\n return {\r\n customValidator: result,\r\n };\r\n }\r\n return null;\r\n }\r\n return null;\r\n };\r\n };\r\n\r\n onOpenedChange = (isOpened: boolean) => {\r\n if (isOpened) {\r\n this.isFocused = true;\r\n if (this.#input) {\r\n this.#input.value = null;\r\n }\r\n this.searchTerm$.next('');\r\n } else {\r\n this.isFocused = false;\r\n // Thực hiện sdChange khi panel close\r\n this.sdChange.emit(this.formControl.value);\r\n }\r\n };\r\n\r\n onOptionChange = (tooltip: MatTooltip) => {\r\n tooltip?.hide();\r\n };\r\n\r\n trackByKey = (index, item) => {\r\n if (this.valueField) {\r\n return item?.[this.valueField];\r\n }\r\n return item;\r\n };\r\n\r\n onCopyText = (event: MouseEvent) => {\r\n event?.stopPropagation();\r\n const text: string = this.#getCopyText();\r\n SdUtility.copyToClipboard(text);\r\n this.copied = true;\r\n setTimeout(() => {\r\n this.copied = false;\r\n this.ref.markForCheck();\r\n }, 2000);\r\n };\r\n\r\n #getCopyText = () => {\r\n const value: string | string[] = this.formControl.value;\r\n let text = value?.toString() ?? '';\r\n if (typeof this.copyText === 'function') {\r\n if (Array.isArray(value)) {\r\n text = this.copyText(\r\n value,\r\n value.map(val => this.#allItem[val?.toString()])\r\n );\r\n } else {\r\n text = this.copyText(value, this.#allItem[value?.toString()]);\r\n }\r\n } else if (this.copyText) {\r\n text = this.copyText;\r\n }\r\n return text;\r\n };\r\n}\r\n// any tương ứng với string | string[], sử dụng any để tiện cho cả single và multiple và khi dev sử dụng sẽ đỡ bị lỗi compile\r\ntype SearchFunc = (searchText?: any, isFormValue?: boolean) => Promise<any[]>;\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdSelect } from './select.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdSelectDisplayDefDirective } from './select-display-def.directive';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdPopoverModule } from '@sd-angular/core/popover';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatSelectModule,\r\n MatProgressSpinnerModule,\r\n MatCheckboxModule,\r\n SdTranslateModule,\r\n SdCommonModule,\r\n SdPopoverModule\r\n ],\r\n declarations: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective\r\n ],\r\n exports: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective,\r\n SdCommonModule\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdSelectModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/select.module';\r\nexport * from './lib/select.component';\r\nexport * from './lib/select-display-def.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sd-angular/core",
3
- "version": "1.3.227",
3
+ "version": "1.3.228",
4
4
  "homepage": "https://www.facebook.com/DarkP3ter",
5
5
  "author": {
6
6
  "name": "darkpeter",