@datarailsshared/datarailsshared 1.4.137 → 1.4.138

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.
@@ -1,9 +1,10 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
2
  import { DrSelectComponent } from '../dr-select/dr-select.component';
3
3
  import { reduce as _reduce } from 'lodash';
4
4
  export class DrSelectAddItemComponent {
5
5
  constructor(drSelect) {
6
6
  this.drSelect = drSelect;
7
+ this.currentValues = [];
7
8
  this.dynamicAddLabel = 'Add new';
8
9
  this.values = [];
9
10
  this.dynamicValueAdded = new EventEmitter();
@@ -26,15 +27,22 @@ export class DrSelectAddItemComponent {
26
27
  this.isDynamicAdding = false;
27
28
  this.dynamicValue = '';
28
29
  }
30
+ isDynamicValueValid() {
31
+ var _a;
32
+ const trimmedValue = (_a = this.dynamicValue) === null || _a === void 0 ? void 0 : _a.trim();
33
+ if (!trimmedValue)
34
+ return false;
35
+ return !this.currentValues.includes(trimmedValue);
36
+ }
29
37
  onDynamicAdd(value, keydownEvent) {
30
- const trimmedValue = value === null || value === void 0 ? void 0 : value.trim();
31
- if (this.currentValues.includes(trimmedValue))
38
+ this.isDirty = true;
39
+ if (!this.isDynamicValueValid())
32
40
  return;
33
41
  if (keydownEvent && keydownEvent.key !== 'Enter')
34
42
  return;
35
43
  this.onDynamicAddingClose();
36
44
  this.drSelect.close();
37
- this.dynamicValueAdded.emit(trimmedValue);
45
+ this.dynamicValueAdded.emit(value === null || value === void 0 ? void 0 : value.trim());
38
46
  }
39
47
  calculateCurrentValues() {
40
48
  this.currentValues = this.bindValue
@@ -48,7 +56,8 @@ export class DrSelectAddItemComponent {
48
56
  DrSelectAddItemComponent.decorators = [
49
57
  { type: Component, args: [{
50
58
  selector: 'dr-select-add-item',
51
- template: "<div class=\"dr-select__dynamic-add dynamic-add\">\n <div class=\"dynamic-add__add-item\" (click)=\"onDynamicAdding()\">\n <i class=\"dr-icon-add\"></i>\n <p class=\"dynamic-add__add-item__text\">{{ dynamicAddLabel }}</p>\n </div>\n <div *ngIf=\"isDynamicAdding\" class=\"dynamic-add__field\">\n <dr-input #dynamicInputRef\n class=\"dynamic-add__field__input\"\n [class.dynamic-add__field__input--error]=\"currentValues.includes(dynamicValue)\"\n [(ngModel)]=\"dynamicValue\"\n (keydown)=\"onDynamicAdd(dynamicValue, $event)\"\n placeholder=\"Type...\"></dr-input>\n <div class=\"dynamic-add__field__buttons\">\n <dr-button *ngIf=\"dynamicValue && !currentValues.includes(dynamicValue)\"\n theme=\"icon\"\n icon=\"dr-icon-approve\"\n iconSize=\"18px\"\n (click)=\"onDynamicAdd(dynamicValue)\"></dr-button>\n <dr-button theme=\"icon\"\n icon=\"dr-icon-exit\"\n iconSize=\"18px\"\n (click)=\"onDynamicAddingClose()\"></dr-button>\n </div>\n </div>\n</div>\n",
59
+ template: "<div class=\"dr-select__dynamic-add dynamic-add\">\n <div class=\"dynamic-add__add-item\" (click)=\"onDynamicAdding()\">\n <i class=\"dr-icon-add\"></i>\n <p class=\"dynamic-add__add-item__text\">{{ dynamicAddLabel }}</p>\n </div>\n <div *ngIf=\"isDynamicAdding\" class=\"dynamic-add__field\">\n <dr-input #dynamicInputRef\n class=\"dynamic-add__field__input\"\n [class.dynamic-add__field__input--error]=\"!isDynamicValueValid() && isDirty\"\n [(ngModel)]=\"dynamicValue\"\n (keydown)=\"onDynamicAdd(dynamicValue, $event)\"\n placeholder=\"Type...\"></dr-input>\n <div class=\"dynamic-add__field__buttons\">\n <dr-button *ngIf=\"dynamicValue && isDynamicValueValid()\"\n theme=\"icon\"\n icon=\"dr-icon-approve\"\n iconSize=\"18px\"\n (click)=\"onDynamicAdd(dynamicValue)\"></dr-button>\n <dr-button theme=\"icon\"\n icon=\"dr-icon-exit\"\n iconSize=\"18px\"\n (click)=\"onDynamicAddingClose()\"></dr-button>\n </div>\n </div>\n</div>\n",
60
+ changeDetection: ChangeDetectionStrategy.OnPush,
52
61
  styles: [".dynamic-add__add-item{cursor:pointer;display:flex;align-items:center;border-bottom:1px solid #dfe0e3;padding:6px}.dynamic-add__add-item:hover{background:#f9f7ff}.dynamic-add__add-item__text{font-size:14px;line-height:22px;margin:0}.dynamic-add__field{position:relative}.dynamic-add__field__buttons{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center}::ng-deep .ng-dropdown-panel .ng-dropdown-header:has(.dynamic-add){padding:0;border:none}::ng-deep .dynamic-add__field__input{padding-left:12px!important;height:36px!important;border:none!important;background:#f9f7ff!important;border-radius:0!important}::ng-deep .dynamic-add__field__input>input{background:#f9f7ff}::ng-deep .dynamic-add__field__input>input::placeholder{line-height:22px;font-size:14px;font-weight:400;color:#9ea1aa}::ng-deep .dynamic-add__field__input--error{background:#ffdfe4!important}::ng-deep .dynamic-add__field__input--error>input{background:#ffdfe4}\n"]
53
62
  },] }
54
63
  ];
@@ -62,4 +71,4 @@ DrSelectAddItemComponent.propDecorators = {
62
71
  dynamicValueAdded: [{ type: Output }],
63
72
  inputRef: [{ type: ViewChild, args: ['dynamicInputRef',] }]
64
73
  };
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kci1zZWxlY3QtYWRkLWl0ZW0vZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxNQUFNLElBQUksT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBUTNDLE1BQU0sT0FBTyx3QkFBd0I7SUFlakMsWUFBb0IsUUFBMkI7UUFBM0IsYUFBUSxHQUFSLFFBQVEsQ0FBbUI7UUFWL0Isb0JBQWUsR0FBVyxTQUFTLENBQUM7UUFFbkMsV0FBTSxHQUFVLEVBQUUsQ0FBQztRQUNsQixzQkFBaUIsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQVFqRixDQUFDO0lBTkQsSUFBa0MsUUFBUSxDQUFDLEtBQXVCO1FBQzlELElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUNuQixLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUtNLFdBQVcsQ0FBQyxPQUFzQjtRQUNyQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxlQUFlO1FBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxvQkFBb0I7UUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFhLEVBQUUsWUFBNEI7UUFDM0QsTUFBTSxZQUFZLEdBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLElBQUksRUFBRSxDQUFDO1FBQ25DLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQUUsT0FBTztRQUN0RCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsR0FBRyxLQUFLLE9BQU87WUFBRSxPQUFPO1FBRXpELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU8sc0JBQXNCO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDL0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNqQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDL0IsT0FBTyxHQUFHLENBQUM7WUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdEIsQ0FBQzs7O1lBekRKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QiwydkNBQWtEOzthQUVyRDs7O1lBUlEsaUJBQWlCOzs7OEJBY3JCLEtBQUs7d0JBQ0wsS0FBSztxQkFDTCxLQUFLO2dDQUNMLE1BQU07dUJBRU4sU0FBUyxTQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEclNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2RyLXNlbGVjdC9kci1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IHJlZHVjZSBhcyBfcmVkdWNlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERySW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9kci1pbnB1dC9kci1pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RyLXNlbGVjdC1hZGQtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyLXNlbGVjdC1hZGQtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRHJTZWxlY3RBZGRJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIHB1YmxpYyBpc0R5bmFtaWNBZGRpbmc6IGJvb2xlYW47XG4gICAgcHVibGljIGR5bmFtaWNWYWx1ZTogc3RyaW5nO1xuICAgIHB1YmxpYyBjdXJyZW50VmFsdWVzOiBhbnlbXTtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBkeW5hbWljQWRkTGFiZWw6IHN0cmluZyA9ICdBZGQgbmV3JztcbiAgICBASW5wdXQoKSBwdWJsaWMgYmluZFZhbHVlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHJpdmF0ZSB2YWx1ZXM6IGFueVtdID0gW107XG4gICAgQE91dHB1dCgpIHByaXZhdGUgZHluYW1pY1ZhbHVlQWRkZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdkeW5hbWljSW5wdXRSZWYnKSBzZXQgaW5wdXRSZWYoaW5wdXQ6IERySW5wdXRDb21wb25lbnQpIHtcbiAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZHJTZWxlY3Q6IERyU2VsZWN0Q29tcG9uZW50KSB7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVDdXJyZW50VmFsdWVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZUN1cnJlbnRWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EeW5hbWljQWRkaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRHluYW1pY0FkZGluZyA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHluYW1pY0FkZGluZ0Nsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRHluYW1pY0FkZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmR5bmFtaWNWYWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkR5bmFtaWNBZGQodmFsdWU6IHN0cmluZywga2V5ZG93bkV2ZW50PzogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0cmltbWVkVmFsdWUgPSB2YWx1ZT8udHJpbSgpO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50VmFsdWVzLmluY2x1ZGVzKHRyaW1tZWRWYWx1ZSkpIHJldHVybjtcbiAgICAgICAgaWYgKGtleWRvd25FdmVudCAmJiBrZXlkb3duRXZlbnQua2V5ICE9PSAnRW50ZXInKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5vbkR5bmFtaWNBZGRpbmdDbG9zZSgpO1xuICAgICAgICB0aGlzLmRyU2VsZWN0LmNsb3NlKCk7XG4gICAgICAgIHRoaXMuZHluYW1pY1ZhbHVlQWRkZWQuZW1pdCh0cmltbWVkVmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlQ3VycmVudFZhbHVlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VmFsdWVzID0gdGhpcy5iaW5kVmFsdWVcbiAgICAgICAgICAgID8gX3JlZHVjZSh0aGlzLnZhbHVlcywgKGFjYywgY3VycikgPT4ge1xuICAgICAgICAgICAgICAgIGFjYy5wdXNoKGN1cnJbdGhpcy5iaW5kVmFsdWVdKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwgW10pXG4gICAgICAgICAgICA6IHRoaXMudmFsdWVzO1xuICAgIH1cbn1cbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kci1zZWxlY3QtYWRkLWl0ZW0vZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxNQUFNLElBQUksT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBUzNDLE1BQU0sT0FBTyx3QkFBd0I7SUFnQmpDLFlBQW9CLFFBQTJCO1FBQTNCLGFBQVEsR0FBUixRQUFRLENBQW1CO1FBYnhDLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBR2pCLG9CQUFlLEdBQUcsU0FBUyxDQUFDO1FBRTNCLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFDbEIsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFRakYsQ0FBQztJQU5ELElBQWtDLFFBQVEsQ0FBQyxLQUF1QjtRQUM5RCxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFDbkIsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFLTSxXQUFXLENBQUMsT0FBc0I7UUFDckMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVNLFFBQVE7UUFDWCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU0sZUFBZTtRQUNsQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRU0sb0JBQW9CO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxtQkFBbUI7O1FBQ3RCLE1BQU0sWUFBWSxHQUFHLE1BQUEsSUFBSSxDQUFDLFlBQVksMENBQUUsSUFBSSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFhLEVBQUUsWUFBNEI7UUFDM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUFFLE9BQU87UUFDeEMsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLEdBQUcsS0FBSyxPQUFPO1lBQUUsT0FBTztRQUV6RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLHNCQUFzQjtRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTO1lBQy9CLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDakMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLE9BQU8sR0FBRyxDQUFDO1lBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNOLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3RCLENBQUM7OztZQWpFSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsd3VDQUFrRDtnQkFFbEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2xEOzs7WUFUUSxpQkFBaUI7Ozs4QkFnQnJCLEtBQUs7d0JBQ0wsS0FBSztxQkFDTCxLQUFLO2dDQUNMLE1BQU07dUJBRU4sU0FBUyxTQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHJTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9kci1zZWxlY3QvZHItc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyByZWR1Y2UgYXMgX3JlZHVjZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBEcklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vZHItaW5wdXQvZHItaW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1zZWxlY3QtYWRkLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kci1zZWxlY3QtYWRkLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RyLXNlbGVjdC1hZGQtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEclNlbGVjdEFkZEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgcHVibGljIGlzRHluYW1pY0FkZGluZzogYm9vbGVhbjtcbiAgICBwdWJsaWMgZHluYW1pY1ZhbHVlOiBzdHJpbmc7XG4gICAgcHVibGljIGN1cnJlbnRWYWx1ZXM6IGFueVtdID0gW107XG4gICAgcHVibGljIGlzRGlydHk6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgZHluYW1pY0FkZExhYmVsID0gJ0FkZCBuZXcnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBiaW5kVmFsdWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBwcml2YXRlIHZhbHVlczogYW55W10gPSBbXTtcbiAgICBAT3V0cHV0KCkgcHJpdmF0ZSBkeW5hbWljVmFsdWVBZGRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2R5bmFtaWNJbnB1dFJlZicpIHNldCBpbnB1dFJlZihpbnB1dDogRHJJbnB1dENvbXBvbmVudCkge1xuICAgICAgICBpZiAoIWlucHV0KSByZXR1cm47XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkclNlbGVjdDogRHJTZWxlY3RDb21wb25lbnQpIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZUN1cnJlbnRWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlQ3VycmVudFZhbHVlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkR5bmFtaWNBZGRpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNEeW5hbWljQWRkaW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EeW5hbWljQWRkaW5nQ2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNEeW5hbWljQWRkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZHluYW1pY1ZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRHluYW1pY1ZhbHVlVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHRyaW1tZWRWYWx1ZSA9IHRoaXMuZHluYW1pY1ZhbHVlPy50cmltKCk7XG4gICAgICAgIGlmICghdHJpbW1lZFZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiAhdGhpcy5jdXJyZW50VmFsdWVzLmluY2x1ZGVzKHRyaW1tZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHluYW1pY0FkZCh2YWx1ZTogc3RyaW5nLCBrZXlkb3duRXZlbnQ/OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNEaXJ0eSA9IHRydWU7XG4gICAgICAgIGlmICghdGhpcy5pc0R5bmFtaWNWYWx1ZVZhbGlkKCkpIHJldHVybjtcbiAgICAgICAgaWYgKGtleWRvd25FdmVudCAmJiBrZXlkb3duRXZlbnQua2V5ICE9PSAnRW50ZXInKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5vbkR5bmFtaWNBZGRpbmdDbG9zZSgpO1xuICAgICAgICB0aGlzLmRyU2VsZWN0LmNsb3NlKCk7XG4gICAgICAgIHRoaXMuZHluYW1pY1ZhbHVlQWRkZWQuZW1pdCh2YWx1ZT8udHJpbSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZUN1cnJlbnRWYWx1ZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFZhbHVlcyA9IHRoaXMuYmluZFZhbHVlXG4gICAgICAgICAgICA/IF9yZWR1Y2UodGhpcy52YWx1ZXMsIChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgICAgICAgICBhY2MucHVzaChjdXJyW3RoaXMuYmluZFZhbHVlXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIFtdKVxuICAgICAgICAgICAgOiB0aGlzLnZhbHVlcztcbiAgICB9XG59XG4iXX0=
@@ -4412,6 +4412,7 @@ DrShowTimeframePipe.decorators = [
4412
4412
  class DrSelectAddItemComponent {
4413
4413
  constructor(drSelect) {
4414
4414
  this.drSelect = drSelect;
4415
+ this.currentValues = [];
4415
4416
  this.dynamicAddLabel = 'Add new';
4416
4417
  this.values = [];
4417
4418
  this.dynamicValueAdded = new EventEmitter();
@@ -4434,15 +4435,22 @@ class DrSelectAddItemComponent {
4434
4435
  this.isDynamicAdding = false;
4435
4436
  this.dynamicValue = '';
4436
4437
  }
4438
+ isDynamicValueValid() {
4439
+ var _a;
4440
+ const trimmedValue = (_a = this.dynamicValue) === null || _a === void 0 ? void 0 : _a.trim();
4441
+ if (!trimmedValue)
4442
+ return false;
4443
+ return !this.currentValues.includes(trimmedValue);
4444
+ }
4437
4445
  onDynamicAdd(value, keydownEvent) {
4438
- const trimmedValue = value === null || value === void 0 ? void 0 : value.trim();
4439
- if (this.currentValues.includes(trimmedValue))
4446
+ this.isDirty = true;
4447
+ if (!this.isDynamicValueValid())
4440
4448
  return;
4441
4449
  if (keydownEvent && keydownEvent.key !== 'Enter')
4442
4450
  return;
4443
4451
  this.onDynamicAddingClose();
4444
4452
  this.drSelect.close();
4445
- this.dynamicValueAdded.emit(trimmedValue);
4453
+ this.dynamicValueAdded.emit(value === null || value === void 0 ? void 0 : value.trim());
4446
4454
  }
4447
4455
  calculateCurrentValues() {
4448
4456
  this.currentValues = this.bindValue
@@ -4456,7 +4464,8 @@ class DrSelectAddItemComponent {
4456
4464
  DrSelectAddItemComponent.decorators = [
4457
4465
  { type: Component, args: [{
4458
4466
  selector: 'dr-select-add-item',
4459
- template: "<div class=\"dr-select__dynamic-add dynamic-add\">\n <div class=\"dynamic-add__add-item\" (click)=\"onDynamicAdding()\">\n <i class=\"dr-icon-add\"></i>\n <p class=\"dynamic-add__add-item__text\">{{ dynamicAddLabel }}</p>\n </div>\n <div *ngIf=\"isDynamicAdding\" class=\"dynamic-add__field\">\n <dr-input #dynamicInputRef\n class=\"dynamic-add__field__input\"\n [class.dynamic-add__field__input--error]=\"currentValues.includes(dynamicValue)\"\n [(ngModel)]=\"dynamicValue\"\n (keydown)=\"onDynamicAdd(dynamicValue, $event)\"\n placeholder=\"Type...\"></dr-input>\n <div class=\"dynamic-add__field__buttons\">\n <dr-button *ngIf=\"dynamicValue && !currentValues.includes(dynamicValue)\"\n theme=\"icon\"\n icon=\"dr-icon-approve\"\n iconSize=\"18px\"\n (click)=\"onDynamicAdd(dynamicValue)\"></dr-button>\n <dr-button theme=\"icon\"\n icon=\"dr-icon-exit\"\n iconSize=\"18px\"\n (click)=\"onDynamicAddingClose()\"></dr-button>\n </div>\n </div>\n</div>\n",
4467
+ template: "<div class=\"dr-select__dynamic-add dynamic-add\">\n <div class=\"dynamic-add__add-item\" (click)=\"onDynamicAdding()\">\n <i class=\"dr-icon-add\"></i>\n <p class=\"dynamic-add__add-item__text\">{{ dynamicAddLabel }}</p>\n </div>\n <div *ngIf=\"isDynamicAdding\" class=\"dynamic-add__field\">\n <dr-input #dynamicInputRef\n class=\"dynamic-add__field__input\"\n [class.dynamic-add__field__input--error]=\"!isDynamicValueValid() && isDirty\"\n [(ngModel)]=\"dynamicValue\"\n (keydown)=\"onDynamicAdd(dynamicValue, $event)\"\n placeholder=\"Type...\"></dr-input>\n <div class=\"dynamic-add__field__buttons\">\n <dr-button *ngIf=\"dynamicValue && isDynamicValueValid()\"\n theme=\"icon\"\n icon=\"dr-icon-approve\"\n iconSize=\"18px\"\n (click)=\"onDynamicAdd(dynamicValue)\"></dr-button>\n <dr-button theme=\"icon\"\n icon=\"dr-icon-exit\"\n iconSize=\"18px\"\n (click)=\"onDynamicAddingClose()\"></dr-button>\n </div>\n </div>\n</div>\n",
4468
+ changeDetection: ChangeDetectionStrategy.OnPush,
4460
4469
  styles: [".dynamic-add__add-item{cursor:pointer;display:flex;align-items:center;border-bottom:1px solid #dfe0e3;padding:6px}.dynamic-add__add-item:hover{background:#f9f7ff}.dynamic-add__add-item__text{font-size:14px;line-height:22px;margin:0}.dynamic-add__field{position:relative}.dynamic-add__field__buttons{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center}::ng-deep .ng-dropdown-panel .ng-dropdown-header:has(.dynamic-add){padding:0;border:none}::ng-deep .dynamic-add__field__input{padding-left:12px!important;height:36px!important;border:none!important;background:#f9f7ff!important;border-radius:0!important}::ng-deep .dynamic-add__field__input>input{background:#f9f7ff}::ng-deep .dynamic-add__field__input>input::placeholder{line-height:22px;font-size:14px;font-weight:400;color:#9ea1aa}::ng-deep .dynamic-add__field__input--error{background:#ffdfe4!important}::ng-deep .dynamic-add__field__input--error>input{background:#ffdfe4}\n"]
4461
4470
  },] }
4462
4471
  ];