@datarailsshared/datarailsshared 1.5.338 → 1.5.343
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.
- package/datarailsshared-datarailsshared-1.5.343.tgz +0 -0
- package/esm2022/lib/dr-chat/dr-chat-form/chat-form.component.mjs +11 -3
- package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.component.mjs +1 -1
- package/esm2022/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.mjs +5 -3
- package/fesm2022/datarailsshared-datarailsshared.mjs +15 -5
- package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -1
- package/lib/dr-chat/dr-chat-form/chat-form.component.d.ts +7 -1
- package/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.d.ts +2 -1
- package/package.json +1 -1
- package/datarailsshared-datarailsshared-1.5.338.tgz +0 -0
|
Binary file
|
|
@@ -45,6 +45,12 @@ export class DrChatFormComponent {
|
|
|
45
45
|
* @type {boolean}
|
|
46
46
|
*/
|
|
47
47
|
this.waitForReply = false;
|
|
48
|
+
/**
|
|
49
|
+
* Parameter to check is send message function available
|
|
50
|
+
*
|
|
51
|
+
* @type {boolean}
|
|
52
|
+
*/
|
|
53
|
+
this.showDisabledButtonInsteadOfDotFlashing = false;
|
|
48
54
|
/**
|
|
49
55
|
*
|
|
50
56
|
* @type {EventEmitter<{ message: string, files: File[] }>}
|
|
@@ -131,11 +137,11 @@ export class DrChatFormComponent {
|
|
|
131
137
|
return `height: ${height}px;`;
|
|
132
138
|
}
|
|
133
139
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrChatFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
134
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrChatFormComponent, selector: "dr-chat-form", inputs: { message: "message", messagePlaceholder: "messagePlaceholder", dropFiles: "dropFiles", dropFilePlaceholder: "dropFilePlaceholder", waitForReply: "waitForReply" }, outputs: { send: "send", abort: "abort", inputChange: "inputChange" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)" }, properties: { "class.file-over": "this.fileOver" } }, ngImport: i0, template: "<div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n <div class=\"dropped-files__item\" *ngFor=\"let file of droppedFiles\">\n <div class=\"dropped-files__item__preview\" [style.background-image]=\"file.urlStyle || 'none'\">\n <i class=\"dr-icon-file\" *ngIf=\"!file.urlStyle\"></i>\n </div>\n <div class=\"dropped-files__item__name\">{{ file.name }}</div>\n <i class=\"dropped-files__item__remove dr-icon-exit\" (click)=\"removeFile(file)\"></i>\n </div>\n</div>\n<div class=\"message-row\">\n <div\n class=\"message-row__input\"\n [ngClass]=\"{ 'message-row__input--focused': inputFocus, 'message-row__input--filled': !!message?.length }\">\n <textarea\n #textAreaElement\n (focus)=\"inputFocus = true\"\n (blur)=\"inputFocus = false\"\n (mouseenter)=\"inputHover = true\"\n (mouseleave)=\"inputHover = false\"\n [(ngModel)]=\"message\"\n [rows]=\"1\"\n [style]=\"getTextAreaHeight(textAreaElement)\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"text\"\n placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n (keyup.enter)=\"sendMessage()\">\n </textarea>\n <i *ngIf=\"!waitForReply\" (click)=\"sendMessage()\" class=\"dr-icon-notify send-button\"></i>\n <dr-dot-flashing
|
|
140
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrChatFormComponent, selector: "dr-chat-form", inputs: { message: "message", messagePlaceholder: "messagePlaceholder", dropFiles: "dropFiles", dropFilePlaceholder: "dropFilePlaceholder", waitForReply: "waitForReply", showDisabledButtonInsteadOfDotFlashing: "showDisabledButtonInsteadOfDotFlashing" }, outputs: { send: "send", abort: "abort", inputChange: "inputChange" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)" }, properties: { "class.file-over": "this.fileOver" } }, ngImport: i0, template: "<div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n <div class=\"dropped-files__item\" *ngFor=\"let file of droppedFiles\">\n <div class=\"dropped-files__item__preview\" [style.background-image]=\"file.urlStyle || 'none'\">\n <i class=\"dr-icon-file\" *ngIf=\"!file.urlStyle\"></i>\n </div>\n <div class=\"dropped-files__item__name\">{{ file.name }}</div>\n <i class=\"dropped-files__item__remove dr-icon-exit\" (click)=\"removeFile(file)\"></i>\n </div>\n</div>\n<div class=\"message-row\">\n <div\n class=\"message-row__input\"\n [ngClass]=\"{ 'message-row__input--focused': inputFocus, 'message-row__input--filled': !!message?.length }\">\n <textarea\n #textAreaElement\n (focus)=\"inputFocus = true\"\n (blur)=\"inputFocus = false\"\n (mouseenter)=\"inputHover = true\"\n (mouseleave)=\"inputHover = false\"\n [(ngModel)]=\"message\"\n [rows]=\"1\"\n [style]=\"getTextAreaHeight(textAreaElement)\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"text\"\n placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n (keyup.enter)=\"sendMessage()\">\n </textarea>\n <i *ngIf=\"!waitForReply\" (click)=\"sendMessage()\" class=\"dr-icon-notify send-button\"></i>\n <i\n *ngIf=\"waitForReply && showDisabledButtonInsteadOfDotFlashing\"\n (click)=\"sendMessage()\"\n class=\"dr-icon-notify send-button-disabled\"></i>\n <dr-dot-flashing\n *ngIf=\"waitForReply && !showDisabledButtonInsteadOfDotFlashing\"\n class=\"wait-reply-dot-flashing\"></dr-dot-flashing>\n <dr-button *ngIf=\"waitForReply\" (click)=\"abortMessage()\" theme=\"ghost\" class=\"abort-button\">Stop generating</dr-button>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;align-items:center;padding:0 16px;margin-top:12px}:host .message-row{display:flex;justify-content:center;width:100%;padding:0 0 21px;max-width:956px}:host .message-row__input{position:relative;display:flex;align-items:center;flex-grow:1;flex-direction:row;height:auto;overflow:visible;min-width:265px;border-radius:24px;background:#dfe0e3 border-box;border:1.5px solid transparent;box-shadow:0 2px 16px -10px #603cff29}:host .message-row__input .send-button,:host .message-row__input .send-button-disabled{position:absolute;right:4px;top:2.5px;cursor:pointer;font-size:28px;width:68px;border-radius:100px;display:flex;align-items:center;justify-content:center;height:40px;background:#f0f1f4;color:#aeabac}:host .message-row__input--focused{background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input--filled{background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input--filled .send-button{color:#fff;background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input textarea{font-size:14px;color:#333;line-height:19px;flex-grow:1;resize:none;padding:14px 76px 12px 23px;margin:auto;border:none;border-radius:22.5px}:host .message-row__input textarea:focus{border:none}:host .message-row__input textarea::placeholder{color:#9ea1aa}:host .message-row__input .wait-reply-dot-flashing{position:absolute;right:20px}:host .message-row__input .abort-button{position:absolute;right:0;top:-44px}:host .message-row__input .abort-button::ng-deep button{background:#f2f2ff!important;border-radius:4px}:host input{flex:1}:host input.with-button{border-bottom-right-radius:0;border-top-right-radius:0}:host .dropped-files{display:flex;flex-direction:row;margin-bottom:.5rem;flex-wrap:wrap}:host .dropped-files__item{display:flex;flex-direction:column;justify-content:center;margin:0 10px 10px 0;position:relative}:host .dropped-files__item__preview{background-size:cover;background-position:center;width:64px;height:64px;border-radius:8px;border:1px solid #ccc}:host .dropped-files__item__preview i{font-size:62px}:host .dropped-files__item__name{white-space:nowrap;font-size:12px;color:#8f929e;margin-top:4px;max-width:64px;overflow:hidden;text-overflow:ellipsis}:host .dropped-files__item__remove{position:absolute;right:-4px;top:-4px;cursor:pointer;background:#fff;border-radius:12px;color:#8f929e;border:1px solid #8f929e;font-size:14px}\n"], dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DrButtonComponent, selector: "dr-button", inputs: ["theme", "icon", "iconColor", "iconSize", "iconAfter", "iconAfterColor", "iconAfterSize", "disabled", "isLoading", "isActive"] }, { kind: "component", type: i5.DrDotFlashingComponent, selector: "dr-dot-flashing" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
135
141
|
}
|
|
136
142
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrChatFormComponent, decorators: [{
|
|
137
143
|
type: Component,
|
|
138
|
-
args: [{ selector: 'dr-chat-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n <div class=\"dropped-files__item\" *ngFor=\"let file of droppedFiles\">\n <div class=\"dropped-files__item__preview\" [style.background-image]=\"file.urlStyle || 'none'\">\n <i class=\"dr-icon-file\" *ngIf=\"!file.urlStyle\"></i>\n </div>\n <div class=\"dropped-files__item__name\">{{ file.name }}</div>\n <i class=\"dropped-files__item__remove dr-icon-exit\" (click)=\"removeFile(file)\"></i>\n </div>\n</div>\n<div class=\"message-row\">\n <div\n class=\"message-row__input\"\n [ngClass]=\"{ 'message-row__input--focused': inputFocus, 'message-row__input--filled': !!message?.length }\">\n <textarea\n #textAreaElement\n (focus)=\"inputFocus = true\"\n (blur)=\"inputFocus = false\"\n (mouseenter)=\"inputHover = true\"\n (mouseleave)=\"inputHover = false\"\n [(ngModel)]=\"message\"\n [rows]=\"1\"\n [style]=\"getTextAreaHeight(textAreaElement)\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"text\"\n placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n (keyup.enter)=\"sendMessage()\">\n </textarea>\n <i *ngIf=\"!waitForReply\" (click)=\"sendMessage()\" class=\"dr-icon-notify send-button\"></i>\n <dr-dot-flashing
|
|
144
|
+
args: [{ selector: 'dr-chat-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n <div class=\"dropped-files__item\" *ngFor=\"let file of droppedFiles\">\n <div class=\"dropped-files__item__preview\" [style.background-image]=\"file.urlStyle || 'none'\">\n <i class=\"dr-icon-file\" *ngIf=\"!file.urlStyle\"></i>\n </div>\n <div class=\"dropped-files__item__name\">{{ file.name }}</div>\n <i class=\"dropped-files__item__remove dr-icon-exit\" (click)=\"removeFile(file)\"></i>\n </div>\n</div>\n<div class=\"message-row\">\n <div\n class=\"message-row__input\"\n [ngClass]=\"{ 'message-row__input--focused': inputFocus, 'message-row__input--filled': !!message?.length }\">\n <textarea\n #textAreaElement\n (focus)=\"inputFocus = true\"\n (blur)=\"inputFocus = false\"\n (mouseenter)=\"inputHover = true\"\n (mouseleave)=\"inputHover = false\"\n [(ngModel)]=\"message\"\n [rows]=\"1\"\n [style]=\"getTextAreaHeight(textAreaElement)\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"text\"\n placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n (keyup.enter)=\"sendMessage()\">\n </textarea>\n <i *ngIf=\"!waitForReply\" (click)=\"sendMessage()\" class=\"dr-icon-notify send-button\"></i>\n <i\n *ngIf=\"waitForReply && showDisabledButtonInsteadOfDotFlashing\"\n (click)=\"sendMessage()\"\n class=\"dr-icon-notify send-button-disabled\"></i>\n <dr-dot-flashing\n *ngIf=\"waitForReply && !showDisabledButtonInsteadOfDotFlashing\"\n class=\"wait-reply-dot-flashing\"></dr-dot-flashing>\n <dr-button *ngIf=\"waitForReply\" (click)=\"abortMessage()\" theme=\"ghost\" class=\"abort-button\">Stop generating</dr-button>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;align-items:center;padding:0 16px;margin-top:12px}:host .message-row{display:flex;justify-content:center;width:100%;padding:0 0 21px;max-width:956px}:host .message-row__input{position:relative;display:flex;align-items:center;flex-grow:1;flex-direction:row;height:auto;overflow:visible;min-width:265px;border-radius:24px;background:#dfe0e3 border-box;border:1.5px solid transparent;box-shadow:0 2px 16px -10px #603cff29}:host .message-row__input .send-button,:host .message-row__input .send-button-disabled{position:absolute;right:4px;top:2.5px;cursor:pointer;font-size:28px;width:68px;border-radius:100px;display:flex;align-items:center;justify-content:center;height:40px;background:#f0f1f4;color:#aeabac}:host .message-row__input--focused{background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input--filled{background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input--filled .send-button{color:#fff;background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input textarea{font-size:14px;color:#333;line-height:19px;flex-grow:1;resize:none;padding:14px 76px 12px 23px;margin:auto;border:none;border-radius:22.5px}:host .message-row__input textarea:focus{border:none}:host .message-row__input textarea::placeholder{color:#9ea1aa}:host .message-row__input .wait-reply-dot-flashing{position:absolute;right:20px}:host .message-row__input .abort-button{position:absolute;right:0;top:-44px}:host .message-row__input .abort-button::ng-deep button{background:#f2f2ff!important;border-radius:4px}:host input{flex:1}:host input.with-button{border-bottom-right-radius:0;border-top-right-radius:0}:host .dropped-files{display:flex;flex-direction:row;margin-bottom:.5rem;flex-wrap:wrap}:host .dropped-files__item{display:flex;flex-direction:column;justify-content:center;margin:0 10px 10px 0;position:relative}:host .dropped-files__item__preview{background-size:cover;background-position:center;width:64px;height:64px;border-radius:8px;border:1px solid #ccc}:host .dropped-files__item__preview i{font-size:62px}:host .dropped-files__item__name{white-space:nowrap;font-size:12px;color:#8f929e;margin-top:4px;max-width:64px;overflow:hidden;text-overflow:ellipsis}:host .dropped-files__item__remove{position:absolute;right:-4px;top:-4px;cursor:pointer;background:#fff;border-radius:12px;color:#8f929e;border:1px solid #8f929e;font-size:14px}\n"] }]
|
|
139
145
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.DomSanitizer }]; }, propDecorators: { message: [{
|
|
140
146
|
type: Input
|
|
141
147
|
}], messagePlaceholder: [{
|
|
@@ -146,6 +152,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
146
152
|
type: Input
|
|
147
153
|
}], waitForReply: [{
|
|
148
154
|
type: Input
|
|
155
|
+
}], showDisabledButtonInsteadOfDotFlashing: [{
|
|
156
|
+
type: Input
|
|
149
157
|
}], send: [{
|
|
150
158
|
type: Output
|
|
151
159
|
}], abort: [{
|
|
@@ -165,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
165
173
|
type: HostListener,
|
|
166
174
|
args: ['dragleave', ['$event']]
|
|
167
175
|
}] } });
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWNoYXQvZHItY2hhdC1mb3JtL2NoYXQtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jaGF0L2RyLWNoYXQtZm9ybS9jaGF0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7OztBQVFoRCxNQUFNLE9BQU8sbUJBQW1CO0lBMkQ1QixZQUNjLEdBQXNCLEVBQ3RCLFlBQTBCO1FBRDFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBNUR4QywyQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDOUIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBRXpCOzs7O1dBSUc7UUFDTSxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRXRCOzs7O1dBSUc7UUFDTSx1QkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUUvQzs7OztXQUlHO1FBQ00sY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUzQjs7OztXQUlHO1FBQ00sd0JBQW1CLEdBQUcsbUJBQW1CLENBQUM7UUFFbkQ7Ozs7V0FJRztRQUNNLGlC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RUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVcEMsV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgSU1BR0VfVFlQRVMgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2hhdCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItY2hhdC1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2NoYXQtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2hhdC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERyQ2hhdEZvcm1Db21wb25lbnQge1xuICAgIF90ZXh0YXJlYUluaXRpYWxIZWlnaHQgPSB0cnVlO1xuICAgIGlucHV0Rm9jdXMgPSBmYWxzZTtcbiAgICBpbnB1dEhvdmVyID0gZmFsc2U7XG5cbiAgICBkcm9wcGVkRmlsZXM6IGFueVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBQcmVkZWZpbmVkIG1lc3NhZ2UgdGV4dFxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICBASW5wdXQoKSBtZXNzYWdlID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBNZXNzYWdlIHBsYWNlaG9sZGVyIHRleHRcbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgQElucHV0KCkgbWVzc2FnZVBsYWNlaG9sZGVyID0gJ1R5cGUgYSBtZXNzYWdlJztcblxuICAgIC8qKlxuICAgICAqIFNob3cgc2VuZCBidXR0b25cbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIEBJbnB1dCgpIGRyb3BGaWxlcyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRmlsZSBkcm9wIHBsYWNlaG9sZGVyIHRleHRcbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgQElucHV0KCkgZHJvcEZpbGVQbGFjZWhvbGRlciA9ICdEcm9wIGZpbGUgdG8gc2VuZCc7XG5cbiAgICAvKipcbiAgICAgKiBQYXJhbWV0ZXIgdG8gY2hlY2sgaXMgc2VuZCBtZXNzYWdlIGZ1bmN0aW9uIGF2YWlsYWJsZVxuICAgICAqXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgQElucHV0KCkgd2FpdEZvclJlcGx5ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8eyBtZXNzYWdlOiBzdHJpbmcsIGZpbGVzOiBGaWxlW10gfT59XG4gICAgICovXG4gICAgQE91dHB1dCgpIHNlbmQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbWVzc2FnZTogc3RyaW5nOyBmaWxlczogRmlsZVtdIH0+KCk7XG4gICAgQE91dHB1dCgpIGFib3J0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyB3aGVuIG1lc3NhZ2UgaW5wdXQgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZFxuICAgICAqXG4gICAgICogQHR5cGUge0V2ZW50RW1pdHRlcjxzdHJpbmc+fVxuICAgICAqL1xuXG4gICAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZpbGUtb3ZlcicpIGZpbGVPdmVyID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICApIHt9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgICBvbkRyb3AoZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5kcm9wRmlsZXMpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgdGhpcy5maWxlT3ZlciA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGZpbGU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKElNQUdFX1RZUEVTLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuc3JjID0gZS50YXJnZXQucmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy51cmxTdHlsZSA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShgdXJsKCR7cmVzLnNyY30pYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZnIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3BwZWRGaWxlcy5wdXNoKHJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlRmlsZShmaWxlKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kcm9wcGVkRmlsZXMuaW5kZXhPZihmaWxlKTtcbiAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcHBlZEZpbGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gICAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAodGhpcy5kcm9wRmlsZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZU92ZXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcbiAgICBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAodGhpcy5kcm9wRmlsZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZU92ZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbmRNZXNzYWdlKCkge1xuICAgICAgICBpZiAodGhpcy53YWl0Rm9yUmVwbHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRyb3BwZWRGaWxlcy5sZW5ndGggfHwgU3RyaW5nKHRoaXMubWVzc2FnZSkudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fdGV4dGFyZWFJbml0aWFsSGVpZ2h0ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2VuZC5lbWl0KHsgbWVzc2FnZTogdGhpcy5tZXNzYWdlLCBmaWxlczogdGhpcy5kcm9wcGVkRmlsZXMgfSk7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIHRoaXMuZHJvcHBlZEZpbGVzID0gW107XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFib3J0TWVzc2FnZSgpIHtcbiAgICAgICAgdGhpcy5hYm9ydC5lbWl0KCk7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RleHRhcmVhSW5pdGlhbEhlaWdodCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIGdldFRleHRBcmVhSGVpZ2h0KHRleHRBcmVhRWxlbWVudDogSFRNTFRleHRBcmVhRWxlbWVudCkge1xuICAgICAgICBsZXQgaGVpZ2h0O1xuICAgICAgICBpZiAodGhpcy5fdGV4dGFyZWFJbml0aWFsSGVpZ2h0KSB7XG4gICAgICAgICAgICBoZWlnaHQgPSA0NTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhlaWdodCA9IHRleHRBcmVhRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGBoZWlnaHQ6ICR7aGVpZ2h0fXB4O2A7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRyb3BwZWQtZmlsZXNcIiAqbmdJZj1cImRyb3BwZWRGaWxlcz8ubGVuZ3RoXCI+XG4gICAgPGRpdiBjbGFzcz1cImRyb3BwZWQtZmlsZXNfX2l0ZW1cIiAqbmdGb3I9XCJsZXQgZmlsZSBvZiBkcm9wcGVkRmlsZXNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3BwZWQtZmlsZXNfX2l0ZW1fX3ByZXZpZXdcIiBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCJmaWxlLnVybFN0eWxlIHx8ICdub25lJ1wiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJkci1pY29uLWZpbGVcIiAqbmdJZj1cIiFmaWxlLnVybFN0eWxlXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3BwZWQtZmlsZXNfX2l0ZW1fX25hbWVcIj57eyBmaWxlLm5hbWUgfX08L2Rpdj5cbiAgICAgICAgPGkgY2xhc3M9XCJkcm9wcGVkLWZpbGVzX19pdGVtX19yZW1vdmUgZHItaWNvbi1leGl0XCIgKGNsaWNrKT1cInJlbW92ZUZpbGUoZmlsZSlcIj48L2k+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtZXNzYWdlLXJvd1wiPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJtZXNzYWdlLXJvd19faW5wdXRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdtZXNzYWdlLXJvd19faW5wdXQtLWZvY3VzZWQnOiBpbnB1dEZvY3VzLCAnbWVzc2FnZS1yb3dfX2lucHV0LS1maWxsZWQnOiAhIW1lc3NhZ2U/Lmxlbmd0aCB9XCI+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgI3RleHRBcmVhRWxlbWVudFxuICAgICAgICAgICAgKGZvY3VzKT1cImlucHV0Rm9jdXMgPSB0cnVlXCJcbiAgICAgICAgICAgIChibHVyKT1cImlucHV0Rm9jdXMgPSBmYWxzZVwiXG4gICAgICAgICAgICAobW91c2VlbnRlcik9XCJpbnB1dEhvdmVyID0gdHJ1ZVwiXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJpbnB1dEhvdmVyID0gZmFsc2VcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJtZXNzYWdlXCJcbiAgICAgICAgICAgIFtyb3dzXT1cIjFcIlxuICAgICAgICAgICAgW3N0eWxlXT1cImdldFRleHRBcmVhSGVpZ2h0KHRleHRBcmVhRWxlbWVudClcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgZmlsZU92ZXIgPyBkcm9wRmlsZVBsYWNlaG9sZGVyIDogbWVzc2FnZVBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZW5kTWVzc2FnZSgpXCI+XG4gICAgICAgIDwvdGV4dGFyZWE+XG4gICAgICAgIDxpICpuZ0lmPVwiIXdhaXRGb3JSZXBseVwiIChjbGljayk9XCJzZW5kTWVzc2FnZSgpXCIgY2xhc3M9XCJkci1pY29uLW5vdGlmeSBzZW5kLWJ1dHRvblwiPjwvaT5cbiAgICAgICAgPGRyLWRvdC1mbGFzaGluZyAqbmdJZj1cIndhaXRGb3JSZXBseVwiIGNsYXNzPVwid2FpdC1yZXBseS1kb3QtZmxhc2hpbmdcIj48L2RyLWRvdC1mbGFzaGluZz5cbiAgICAgICAgPGRyLWJ1dHRvbiAqbmdJZj1cIndhaXRGb3JSZXBseVwiIChjbGljayk9XCJhYm9ydE1lc3NhZ2UoKVwiIHRoZW1lPVwiZ2hvc3RcIiBjbGFzcz1cImFib3J0LWJ1dHRvblwiPlN0b3AgZ2VuZXJhdGluZzwvZHItYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWNoYXQvZHItY2hhdC1mb3JtL2NoYXQtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jaGF0L2RyLWNoYXQtZm9ybS9jaGF0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7OztBQVFoRCxNQUFNLE9BQU8sbUJBQW1CO0lBa0U1QixZQUNjLEdBQXNCLEVBQ3RCLFlBQTBCO1FBRDFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBbkV4QywyQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDOUIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBRXpCOzs7O1dBSUc7UUFDTSxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRXRCOzs7O1dBSUc7UUFDTSx1QkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUUvQzs7OztXQUlHO1FBQ00sY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUzQjs7OztXQUlHO1FBQ00sd0JBQW1CLEdBQUcsbUJBQW1CLENBQUM7UUFFbkQ7Ozs7V0FJRztRQUNNLGlC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WTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBbUNoQyxVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVVwQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBJTUFHRV9UWVBFUyB9IGZyb20gJy4uLy4uL21vZGVscy9jaGF0JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1jaGF0LWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnY2hhdC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jaGF0LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRHJDaGF0Rm9ybUNvbXBvbmVudCB7XG4gICAgX3RleHRhcmVhSW5pdGlhbEhlaWdodCA9IHRydWU7XG4gICAgaW5wdXRGb2N1cyA9IGZhbHNlO1xuICAgIGlucHV0SG92ZXIgPSBmYWxzZTtcblxuICAgIGRyb3BwZWRGaWxlczogYW55W10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFByZWRlZmluZWQgbWVzc2FnZSB0ZXh0XG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEBJbnB1dCgpIG1lc3NhZ2UgPSAnJztcblxuICAgIC8qKlxuICAgICAqIE1lc3NhZ2UgcGxhY2Vob2xkZXIgdGV4dFxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICBASW5wdXQoKSBtZXNzYWdlUGxhY2Vob2xkZXIgPSAnVHlwZSBhIG1lc3NhZ2UnO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyBzZW5kIGJ1dHRvblxuICAgICAqXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgQElucHV0KCkgZHJvcEZpbGVzID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBGaWxlIGRyb3AgcGxhY2Vob2xkZXIgdGV4dFxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICBASW5wdXQoKSBkcm9wRmlsZVBsYWNlaG9sZGVyID0gJ0Ryb3AgZmlsZSB0byBzZW5kJztcblxuICAgIC8qKlxuICAgICAqIFBhcmFtZXRlciB0byBjaGVjayBpcyBzZW5kIG1lc3NhZ2UgZnVuY3Rpb24gYXZhaWxhYmxlXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBASW5wdXQoKSB3YWl0Rm9yUmVwbHkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFBhcmFtZXRlciB0byBjaGVjayBpcyBzZW5kIG1lc3NhZ2UgZnVuY3Rpb24gYXZhaWxhYmxlXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93RGlzYWJsZWRCdXR0b25JbnN0ZWFkT2ZEb3RGbGFzaGluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAdHlwZSB7RXZlbnRFbWl0dGVyPHsgbWVzc2FnZTogc3RyaW5nLCBmaWxlczogRmlsZVtdIH0+fVxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBzZW5kID0gbmV3IEV2ZW50RW1pdHRlcjx7IG1lc3NhZ2U6IHN0cmluZzsgZmlsZXM6IEZpbGVbXSB9PigpO1xuICAgIEBPdXRwdXQoKSBhYm9ydCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiBtZXNzYWdlIGlucHV0IHZhbHVlIGhhcyBiZWVuIGNoYW5nZWRcbiAgICAgKlxuICAgICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8c3RyaW5nPn1cbiAgICAgKi9cblxuICAgIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5maWxlLW92ZXInKSBmaWxlT3ZlciA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgKSB7fVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pXG4gICAgb25Ecm9wKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcEZpbGVzKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgIHRoaXMuZmlsZU92ZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBmaWxlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChJTUFHRV9UWVBFUy5pbmNsdWRlcyhmaWxlLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNyYyA9IGUudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMudXJsU3R5bGUgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoYHVybCgke3Jlcy5zcmN9KWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wcGVkRmlsZXMucHVzaChyZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZUZpbGUoZmlsZSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZHJvcHBlZEZpbGVzLmluZGV4T2YoZmlsZSk7XG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3BwZWRGaWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKVxuICAgIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKHRoaXMuZHJvcEZpbGVzKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVPdmVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKHRoaXMuZHJvcEZpbGVzKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVPdmVyID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZW5kTWVzc2FnZSgpIHtcbiAgICAgICAgaWYgKHRoaXMud2FpdEZvclJlcGx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kcm9wcGVkRmlsZXMubGVuZ3RoIHx8IFN0cmluZyh0aGlzLm1lc3NhZ2UpLnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3RleHRhcmVhSW5pdGlhbEhlaWdodCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNlbmQuZW1pdCh7IG1lc3NhZ2U6IHRoaXMubWVzc2FnZSwgZmlsZXM6IHRoaXMuZHJvcHBlZEZpbGVzIH0pO1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gJyc7XG4gICAgICAgICAgICB0aGlzLmRyb3BwZWRGaWxlcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhYm9ydE1lc3NhZ2UoKSB7XG4gICAgICAgIHRoaXMuYWJvcnQuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl90ZXh0YXJlYUluaXRpYWxIZWlnaHQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXRUZXh0QXJlYUhlaWdodCh0ZXh0QXJlYUVsZW1lbnQ6IEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcbiAgICAgICAgbGV0IGhlaWdodDtcbiAgICAgICAgaWYgKHRoaXMuX3RleHRhcmVhSW5pdGlhbEhlaWdodCkge1xuICAgICAgICAgICAgaGVpZ2h0ID0gNDU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBoZWlnaHQgPSB0ZXh0QXJlYUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgaGVpZ2h0OiAke2hlaWdodH1weDtgO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkcm9wcGVkLWZpbGVzXCIgKm5nSWY9XCJkcm9wcGVkRmlsZXM/Lmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkcm9wcGVkLWZpbGVzX19pdGVtXCIgKm5nRm9yPVwibGV0IGZpbGUgb2YgZHJvcHBlZEZpbGVzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wcGVkLWZpbGVzX19pdGVtX19wcmV2aWV3XCIgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiZmlsZS51cmxTdHlsZSB8fCAnbm9uZSdcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZHItaWNvbi1maWxlXCIgKm5nSWY9XCIhZmlsZS51cmxTdHlsZVwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wcGVkLWZpbGVzX19pdGVtX19uYW1lXCI+e3sgZmlsZS5uYW1lIH19PC9kaXY+XG4gICAgICAgIDxpIGNsYXNzPVwiZHJvcHBlZC1maWxlc19faXRlbV9fcmVtb3ZlIGRyLWljb24tZXhpdFwiIChjbGljayk9XCJyZW1vdmVGaWxlKGZpbGUpXCI+PC9pPlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibWVzc2FnZS1yb3dcIj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibWVzc2FnZS1yb3dfX2lucHV0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnbWVzc2FnZS1yb3dfX2lucHV0LS1mb2N1c2VkJzogaW5wdXRGb2N1cywgJ21lc3NhZ2Utcm93X19pbnB1dC0tZmlsbGVkJzogISFtZXNzYWdlPy5sZW5ndGggfVwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICN0ZXh0QXJlYUVsZW1lbnRcbiAgICAgICAgICAgIChmb2N1cyk9XCJpbnB1dEZvY3VzID0gdHJ1ZVwiXG4gICAgICAgICAgICAoYmx1cik9XCJpbnB1dEZvY3VzID0gZmFsc2VcIlxuICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiaW5wdXRIb3ZlciA9IHRydWVcIlxuICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiaW5wdXRIb3ZlciA9IGZhbHNlXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibWVzc2FnZVwiXG4gICAgICAgICAgICBbcm93c109XCIxXCJcbiAgICAgICAgICAgIFtzdHlsZV09XCJnZXRUZXh0QXJlYUhlaWdodCh0ZXh0QXJlYUVsZW1lbnQpXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGZpbGVPdmVyID8gZHJvcEZpbGVQbGFjZWhvbGRlciA6IG1lc3NhZ2VQbGFjZWhvbGRlciB9fVwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2VuZE1lc3NhZ2UoKVwiPlxuICAgICAgICA8L3RleHRhcmVhPlxuICAgICAgICA8aSAqbmdJZj1cIiF3YWl0Rm9yUmVwbHlcIiAoY2xpY2spPVwic2VuZE1lc3NhZ2UoKVwiIGNsYXNzPVwiZHItaWNvbi1ub3RpZnkgc2VuZC1idXR0b25cIj48L2k+XG4gICAgICAgIDxpXG4gICAgICAgICAgICAqbmdJZj1cIndhaXRGb3JSZXBseSAmJiBzaG93RGlzYWJsZWRCdXR0b25JbnN0ZWFkT2ZEb3RGbGFzaGluZ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VuZE1lc3NhZ2UoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImRyLWljb24tbm90aWZ5IHNlbmQtYnV0dG9uLWRpc2FibGVkXCI+PC9pPlxuICAgICAgICA8ZHItZG90LWZsYXNoaW5nXG4gICAgICAgICAgICAqbmdJZj1cIndhaXRGb3JSZXBseSAmJiAhc2hvd0Rpc2FibGVkQnV0dG9uSW5zdGVhZE9mRG90Rmxhc2hpbmdcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3YWl0LXJlcGx5LWRvdC1mbGFzaGluZ1wiPjwvZHItZG90LWZsYXNoaW5nPlxuICAgICAgICA8ZHItYnV0dG9uICpuZ0lmPVwid2FpdEZvclJlcGx5XCIgKGNsaWNrKT1cImFib3J0TWVzc2FnZSgpXCIgdGhlbWU9XCJnaG9zdFwiIGNsYXNzPVwiYWJvcnQtYnV0dG9uXCI+U3RvcCBnZW5lcmF0aW5nPC9kci1idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -85,7 +85,7 @@ export class DrDynamicTagComponent {
|
|
|
85
85
|
return connectedTags.value;
|
|
86
86
|
}
|
|
87
87
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrDynamicTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrDynamicTagComponent, selector: "dr-dynamic-tag", inputs: { values: "values", tagConfig: "tagConfig", selectedTag: "selectedTag", lockedTags: "lockedTags", connectedTags: "connectedTags", isDynamicTagAddEnabled: "isDynamicTagAddEnabled", disabled: "disabled" }, outputs: { tagChange: "tagChange", tagAdd: "tagAdd" }, usesOnChanges: true, ngImport: i0, template: "<p class=\"dynamic-tag__label\">{{ tagConfig.name }}</p>\n<dr-select\n [(ngModel)]=\"selectedDynamicTag\"\n [class.dynamic-tag__locked]=\"isLockedTagSelected\"\n bindLabel=\"value\"\n bindValue=\"value\"\n [items]=\"currentValues\"\n [disabled]=\"disabled\"\n dropdownClass=\"dynamic-tag__select dr-tag__select\"\n (ngModelChange)=\"onTagChanged($event)\">\n <ng-template #optionHeaderTemplate *ngIf=\"isDynamicTagAddEnabled\">\n <dr-select-add-item\n bindValue=\"value\"\n [values]=\"currentValues\"\n [dynamicAddLabel]=\"' Add new ' + tagConfig.name\"\n (dynamicValueAdded)=\"onDynamicValueAdd($event)\"></dr-select-add-item>\n </ng-template>\n <ng-template #labelTemplate let-item=\"item\">\n <div class=\"dynamic-tag__field--label\">\n <p class=\"dynamic-tag__field__text\">{{ item?.value || item }}</p>\n <i *ngIf=\"item?.is_favorite\" class=\"dynamic-tag__field__icon dr-icon-star-fill\"></i>\n </div>\n </ng-template>\n <ng-template #optionTemplate let-item=\"item\">\n <div\n class=\"dynamic-tag__field--option\"\n [class.disabled]=\"lockedTags.includes(item?.value || item)\"\n (click)=\"onOptionClick($event, item?.value || item)\">\n <p class=\"dynamic-tag__field__text\">{{ item?.value || item }}</p>\n <i *ngIf=\"item?.is_favorite\" class=\"dynamic-tag__field__icon dr-icon-star-fill\"></i>\n </div>\n </ng-template>\n</dr-select>\n", styles: [".dynamic-tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.dynamic-tag__field{cursor:pointer;height:24px}.dynamic-tag__field--option{cursor:pointer;height:24px;padding:8px 12px;width:100%;display:flex;justify-content:space-between;align-items:center}.dynamic-tag__field--option.disabled{opacity:.5;box-sizing:content-box}.dynamic-tag__field--label{cursor:pointer;height:24px;display:flex;align-items:center}.dynamic-tag__field--label>.dynamic-tag__field__icon{position:absolute;right:25px}.dynamic-tag__field--label>dynamic-tag__field__text{margin:0}.dr-icon-star-fill{color:#f0bc57}::ng-deep dr-select.dynamic-tag__locked>ng-select>.ng-select-container{opacity:.4}::ng-deep .ng-option:has(.dynamic-tag__field--option){padding:0!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.DrSelectComponent, selector: "dr-select", inputs: ["type", "className", "items", "addTag", "appendTo", "bindLabel", "bindValue", "clearable", "searchable", "searchFn", "multiple", "hideSelected", "placeholder", "loading", "loadingText", "readonly", "disabled", "groupBy", "optionWithDescription", "id", "keyDownFn", "selectedItem", "dropdownClass", "closeOnSelect", "textView", "autofocus", "isOpen", "noValuePadding"], outputs: ["change", "open", "closeUp"] }, { kind: "component", type: i3.DrSelectAddItemComponent, selector: "dr-select-add-item", inputs: ["dynamicAddLabel", "bindValue", "values"], outputs: ["dynamicValueAdded"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
88
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrDynamicTagComponent, selector: "dr-dynamic-tag", inputs: { values: "values", tagConfig: "tagConfig", selectedTag: "selectedTag", lockedTags: "lockedTags", connectedTags: "connectedTags", isDynamicTagAddEnabled: "isDynamicTagAddEnabled", disabled: "disabled" }, outputs: { tagChange: "tagChange", tagAdd: "tagAdd" }, usesOnChanges: true, ngImport: i0, template: "<p class=\"dynamic-tag__label\">{{ tagConfig.name }}</p>\n<dr-select\n [(ngModel)]=\"selectedDynamicTag\"\n [class.dynamic-tag__locked]=\"isLockedTagSelected\"\n bindLabel=\"value\"\n bindValue=\"value\"\n [items]=\"currentValues\"\n [disabled]=\"disabled\"\n dropdownClass=\"dynamic-tag__select dr-tag__select\"\n (ngModelChange)=\"onTagChanged($event)\">\n <ng-template #optionHeaderTemplate *ngIf=\"isDynamicTagAddEnabled\">\n <dr-select-add-item\n bindValue=\"value\"\n [values]=\"currentValues\"\n [dynamicAddLabel]=\"' Add new ' + tagConfig.name\"\n (dynamicValueAdded)=\"onDynamicValueAdd($event)\"></dr-select-add-item>\n </ng-template>\n <ng-template #labelTemplate let-item=\"item\">\n <div class=\"dynamic-tag__field--label\">\n <p class=\"dynamic-tag__field__text\">{{ item?.value || item }}</p>\n <i *ngIf=\"item?.is_favorite\" class=\"dynamic-tag__field__icon dr-icon-star-fill\"></i>\n </div>\n </ng-template>\n <ng-template #optionTemplate let-item=\"item\">\n <div\n class=\"dynamic-tag__field--option\"\n [class.disabled]=\"lockedTags.includes(item?.value || item)\"\n (click)=\"onOptionClick($event, item?.value || item)\">\n <p class=\"dynamic-tag__field__text\">{{ item?.value || item }}</p>\n <i *ngIf=\"item?.is_favorite\" class=\"dynamic-tag__field__icon dr-icon-star-fill\"></i>\n </div>\n </ng-template>\n</dr-select>\n", styles: [".dynamic-tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.dynamic-tag__field{cursor:pointer;height:24px}.dynamic-tag__field--option{cursor:pointer;height:24px;padding:8px 12px;width:100%;display:flex;justify-content:space-between;align-items:center}.dynamic-tag__field--option.disabled{opacity:.5;box-sizing:content-box}.dynamic-tag__field--label{cursor:pointer;height:24px;display:flex;align-items:center}.dynamic-tag__field--label>.dynamic-tag__field__icon{position:absolute;right:25px}.dynamic-tag__field--label>dynamic-tag__field__text{margin:0}.dr-icon-star-fill{color:#f0bc57}::ng-deep dr-select.dynamic-tag__locked>ng-select>.ng-select-container{opacity:.4}::ng-deep .ng-option:has(.dynamic-tag__field--option){padding:0!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.DrSelectComponent, selector: "dr-select", inputs: ["type", "className", "items", "addTag", "appendTo", "bindLabel", "bindValue", "clearable", "searchable", "searchFn", "multiple", "hideSelected", "placeholder", "loading", "loadingText", "readonly", "disabled", "groupBy", "optionWithDescription", "id", "keyDownFn", "selectedItem", "dropdownClass", "closeOnSelect", "textView", "autofocus", "isOpen", "noValuePadding"], outputs: ["change", "open", "closeUp"] }, { kind: "component", type: i3.DrSelectAddItemComponent, selector: "dr-select-add-item", inputs: ["dynamicAddLabel", "bindValue", "values", "alertMsg"], outputs: ["dynamicValueAdded"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
89
89
|
}
|
|
90
90
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrDynamicTagComponent, decorators: [{
|
|
91
91
|
type: Component,
|
|
@@ -59,21 +59,23 @@ export class DrSelectAddItemComponent {
|
|
|
59
59
|
: this.values;
|
|
60
60
|
}
|
|
61
61
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrSelectAddItemComponent, deps: [{ token: i1.DrSelectComponent }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
62
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrSelectAddItemComponent, selector: "dr-select-add-item", inputs: { dynamicAddLabel: "dynamicAddLabel", bindValue: "bindValue", values: "values" }, outputs: { dynamicValueAdded: "dynamicValueAdded" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["dynamicInputRef"], descendants: true }], usesOnChanges: true, ngImport: i0, 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\n #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\n *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\" icon=\"dr-icon-exit\" iconSize=\"18px\" (click)=\"onDynamicAddingClose()\"></dr-button>\n </div>\n </div>\n</div>\n", 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"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DrButtonComponent, selector: "dr-button", inputs: ["theme", "icon", "iconColor", "iconSize", "iconAfter", "iconAfterColor", "iconAfterSize", "disabled", "isLoading", "isActive"] }, { kind: "component", type: i5.DrInputComponent, selector: "dr-input", inputs: ["disabled", "buttonOptions", "type", "name", "placeholder", "readonly", "clearable", "min", "max", "minLength", "maxlength", "step", "searchMini"], outputs: ["blur", "modelDebounceChange", "searchHandler", "clearHandler", "buttonHandler"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
62
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrSelectAddItemComponent, selector: "dr-select-add-item", inputs: { dynamicAddLabel: "dynamicAddLabel", bindValue: "bindValue", values: "values", alertMsg: "alertMsg" }, outputs: { dynamicValueAdded: "dynamicValueAdded" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["dynamicInputRef"], descendants: true }], usesOnChanges: true, ngImport: i0, 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 <p *ngIf=\"alertMsg && !isDynamicValueValid() && isDirty\"\n class=\"dynamic-add__field__alert\">{{ alertMsg }}</p>\n <dr-input\n #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\n *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\" icon=\"dr-icon-exit\" iconSize=\"18px\" (click)=\"onDynamicAddingClose()\"></dr-button>\n </div>\n </div>\n</div>\n", 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}.dynamic-add__field__alert{font-size:12px;position:absolute;color:#bf1d30;z-index:100;right:30px}::ng-deep .ng-dropdown-panel .ng-dropdown-footer:has(.dynamic-add),::ng-deep .ng-dropdown-panel .ng-dropdown-header:has(.dynamic-add){padding:0;border:none}::ng-deep .ng-dropdown-panel .ng-dropdown-footer .dynamic-add__add-item{border-bottom: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"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DrButtonComponent, selector: "dr-button", inputs: ["theme", "icon", "iconColor", "iconSize", "iconAfter", "iconAfterColor", "iconAfterSize", "disabled", "isLoading", "isActive"] }, { kind: "component", type: i5.DrInputComponent, selector: "dr-input", inputs: ["disabled", "buttonOptions", "type", "name", "placeholder", "readonly", "clearable", "min", "max", "minLength", "maxlength", "step", "searchMini"], outputs: ["blur", "modelDebounceChange", "searchHandler", "clearHandler", "buttonHandler"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
63
63
|
}
|
|
64
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrSelectAddItemComponent, decorators: [{
|
|
65
65
|
type: Component,
|
|
66
|
-
args: [{ selector: 'dr-select-add-item', changeDetection: ChangeDetectionStrategy.OnPush, 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\n #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\n *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\" icon=\"dr-icon-exit\" iconSize=\"18px\" (click)=\"onDynamicAddingClose()\"></dr-button>\n </div>\n </div>\n</div>\n", 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"] }]
|
|
66
|
+
args: [{ selector: 'dr-select-add-item', changeDetection: ChangeDetectionStrategy.OnPush, 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 <p *ngIf=\"alertMsg && !isDynamicValueValid() && isDirty\"\n class=\"dynamic-add__field__alert\">{{ alertMsg }}</p>\n <dr-input\n #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\n *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\" icon=\"dr-icon-exit\" iconSize=\"18px\" (click)=\"onDynamicAddingClose()\"></dr-button>\n </div>\n </div>\n</div>\n", 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}.dynamic-add__field__alert{font-size:12px;position:absolute;color:#bf1d30;z-index:100;right:30px}::ng-deep .ng-dropdown-panel .ng-dropdown-footer:has(.dynamic-add),::ng-deep .ng-dropdown-panel .ng-dropdown-header:has(.dynamic-add){padding:0;border:none}::ng-deep .ng-dropdown-panel .ng-dropdown-footer .dynamic-add__add-item{border-bottom: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"] }]
|
|
67
67
|
}], ctorParameters: function () { return [{ type: i1.DrSelectComponent }]; }, propDecorators: { dynamicAddLabel: [{
|
|
68
68
|
type: Input
|
|
69
69
|
}], bindValue: [{
|
|
70
70
|
type: Input
|
|
71
71
|
}], values: [{
|
|
72
72
|
type: Input
|
|
73
|
+
}], alertMsg: [{
|
|
74
|
+
type: Input
|
|
73
75
|
}], dynamicValueAdded: [{
|
|
74
76
|
type: Output
|
|
75
77
|
}], inputRef: [{
|
|
76
78
|
type: ViewChild,
|
|
77
79
|
args: ['dynamicInputRef']
|
|
78
80
|
}] } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kci1zZWxlY3QtYWRkLWl0ZW0vZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kci1zZWxlY3QtYWRkLWl0ZW0vZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxJQUFJLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7OztBQVFsRSxNQUFNLE9BQU8sd0JBQXdCO0lBWWpDLElBQWtDLFFBQVEsQ0FBQyxLQUF1QjtRQUM5RCxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFDbkIsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxZQUFvQixRQUEyQjtRQUEzQixhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQWR4QyxrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUdqQixvQkFBZSxHQUFHLFNBQVMsQ0FBQztRQUUzQixXQUFNLEdBQVUsRUFBRSxDQUFDO1FBRWxCLHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBTy9CLENBQUM7SUFFNUMsV0FBVyxDQUFDLE9BQXNCO1FBQ3JDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVNLG9CQUFvQjtRQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sbUJBQW1CO1FBQ3RCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFhLEVBQUUsWUFBNEI7UUFDM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUFFLE9BQU87UUFDeEMsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLEdBQUcsS0FBSyxPQUFPO1lBQUUsT0FBTztRQUV6RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLHNCQUFzQjtRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTO1lBQy9CLENBQUMsQ0FBQyxPQUFPLENBQ0gsSUFBSSxDQUFDLE1BQU0sRUFDWCxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDVixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDL0IsT0FBTyxHQUFHLENBQUM7WUFDZixDQUFDLEVBQ0QsRUFBRSxDQUNMO1lBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdEIsQ0FBQztrSUEvRFEsd0JBQXdCO3NIQUF4Qix3QkFBd0IsaVdDckJyQyxvd0NBMEJBOzs0RkRMYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0ksb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU07d0dBUS9CLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVyxNQUFNO3NCQUF0QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1ksaUJBQWlCO3NCQUFsQyxNQUFNO2dCQUUyQixRQUFRO3NCQUF6QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEclNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2RyLXNlbGVjdC9kci1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IHJlZHVjZSBhcyBfcmVkdWNlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERySW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9kci1pbnB1dC9kci1pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RyLXNlbGVjdC1hZGQtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyLXNlbGVjdC1hZGQtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERyU2VsZWN0QWRkSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBwdWJsaWMgaXNEeW5hbWljQWRkaW5nOiBib29sZWFuO1xuICAgIHB1YmxpYyBkeW5hbWljVmFsdWU6IHN0cmluZztcbiAgICBwdWJsaWMgY3VycmVudFZhbHVlczogYW55W10gPSBbXTtcbiAgICBwdWJsaWMgaXNEaXJ0eTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBkeW5hbWljQWRkTGFiZWwgPSAnQWRkIG5ldyc7XG4gICAgQElucHV0KCkgcHVibGljIGJpbmRWYWx1ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHByaXZhdGUgdmFsdWVzOiBhbnlbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhbGVydE1zZzogc3RyaW5nO1xuICAgIEBPdXRwdXQoKSBwcml2YXRlIGR5bmFtaWNWYWx1ZUFkZGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnZHluYW1pY0lucHV0UmVmJykgc2V0IGlucHV0UmVmKGlucHV0OiBEcklucHV0Q29tcG9uZW50KSB7XG4gICAgICAgIGlmICghaW5wdXQpIHJldHVybjtcbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRyU2VsZWN0OiBEclNlbGVjdENvbXBvbmVudCkge31cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlQ3VycmVudFZhbHVlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVDdXJyZW50VmFsdWVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHluYW1pY0FkZGluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0R5bmFtaWNBZGRpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkR5bmFtaWNBZGRpbmdDbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0R5bmFtaWNBZGRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5keW5hbWljVmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNEeW5hbWljVmFsdWVWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdHJpbW1lZFZhbHVlID0gdGhpcy5keW5hbWljVmFsdWU/LnRyaW0oKTtcbiAgICAgICAgaWYgKCF0cmltbWVkVmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuICF0aGlzLmN1cnJlbnRWYWx1ZXMuaW5jbHVkZXModHJpbW1lZFZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EeW5hbWljQWRkKHZhbHVlOiBzdHJpbmcsIGtleWRvd25FdmVudD86IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcbiAgICAgICAgaWYgKCF0aGlzLmlzRHluYW1pY1ZhbHVlVmFsaWQoKSkgcmV0dXJuO1xuICAgICAgICBpZiAoa2V5ZG93bkV2ZW50ICYmIGtleWRvd25FdmVudC5rZXkgIT09ICdFbnRlcicpIHJldHVybjtcblxuICAgICAgICB0aGlzLm9uRHluYW1pY0FkZGluZ0Nsb3NlKCk7XG4gICAgICAgIHRoaXMuZHJTZWxlY3QuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5keW5hbWljVmFsdWVBZGRlZC5lbWl0KHZhbHVlPy50cmltKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlQ3VycmVudFZhbHVlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VmFsdWVzID0gdGhpcy5iaW5kVmFsdWVcbiAgICAgICAgICAgID8gX3JlZHVjZShcbiAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzLFxuICAgICAgICAgICAgICAgICAgKGFjYywgY3VycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKGN1cnJbdGhpcy5iaW5kVmFsdWVdKTtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHRoaXMudmFsdWVzO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkci1zZWxlY3RfX2R5bmFtaWMtYWRkIGR5bmFtaWMtYWRkXCI+XG4gICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtYWRkX19hZGQtaXRlbVwiIChjbGljayk9XCJvbkR5bmFtaWNBZGRpbmcoKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImRyLWljb24tYWRkXCI+PC9pPlxuICAgICAgICA8cCBjbGFzcz1cImR5bmFtaWMtYWRkX19hZGQtaXRlbV9fdGV4dFwiPnt7IGR5bmFtaWNBZGRMYWJlbCB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNEeW5hbWljQWRkaW5nXCIgY2xhc3M9XCJkeW5hbWljLWFkZF9fZmllbGRcIj5cbiAgICAgICAgPHAgKm5nSWY9XCJhbGVydE1zZyAmJiAhaXNEeW5hbWljVmFsdWVWYWxpZCgpICYmIGlzRGlydHlcIlxuICAgICAgICAgICAgICBjbGFzcz1cImR5bmFtaWMtYWRkX19maWVsZF9fYWxlcnRcIj57eyBhbGVydE1zZyB9fTwvcD5cbiAgICAgICAgPGRyLWlucHV0XG4gICAgICAgICAgICAjZHluYW1pY0lucHV0UmVmXG4gICAgICAgICAgICBjbGFzcz1cImR5bmFtaWMtYWRkX19maWVsZF9faW5wdXRcIlxuICAgICAgICAgICAgW2NsYXNzLmR5bmFtaWMtYWRkX19maWVsZF9faW5wdXQtLWVycm9yXT1cIiFpc0R5bmFtaWNWYWx1ZVZhbGlkKCkgJiYgaXNEaXJ0eVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImR5bmFtaWNWYWx1ZVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJvbkR5bmFtaWNBZGQoZHluYW1pY1ZhbHVlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZS4uLlwiPjwvZHItaW5wdXQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWFkZF9fZmllbGRfX2J1dHRvbnNcIj5cbiAgICAgICAgICAgIDxkci1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cImR5bmFtaWNWYWx1ZSAmJiBpc0R5bmFtaWNWYWx1ZVZhbGlkKClcIlxuICAgICAgICAgICAgICAgIHRoZW1lPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgaWNvbj1cImRyLWljb24tYXBwcm92ZVwiXG4gICAgICAgICAgICAgICAgaWNvblNpemU9XCIxOHB4XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EeW5hbWljQWRkKGR5bmFtaWNWYWx1ZSlcIj48L2RyLWJ1dHRvbj5cbiAgICAgICAgICAgIDxkci1idXR0b24gdGhlbWU9XCJpY29uXCIgaWNvbj1cImRyLWljb24tZXhpdFwiIGljb25TaXplPVwiMThweFwiIChjbGljayk9XCJvbkR5bmFtaWNBZGRpbmdDbG9zZSgpXCI+PC9kci1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -2650,17 +2650,19 @@ class DrSelectAddItemComponent {
|
|
|
2650
2650
|
: this.values;
|
|
2651
2651
|
}
|
|
2652
2652
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrSelectAddItemComponent, deps: [{ token: DrSelectComponent }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2653
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrSelectAddItemComponent, selector: "dr-select-add-item", inputs: { dynamicAddLabel: "dynamicAddLabel", bindValue: "bindValue", values: "values" }, outputs: { dynamicValueAdded: "dynamicValueAdded" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["dynamicInputRef"], descendants: true }], usesOnChanges: true, ngImport: i0, 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\n #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\n *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\" icon=\"dr-icon-exit\" iconSize=\"18px\" (click)=\"onDynamicAddingClose()\"></dr-button>\n </div>\n </div>\n</div>\n", 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"], dependencies: [{ kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DrButtonComponent, selector: "dr-button", inputs: ["theme", "icon", "iconColor", "iconSize", "iconAfter", "iconAfterColor", "iconAfterSize", "disabled", "isLoading", "isActive"] }, { kind: "component", type: DrInputComponent, selector: "dr-input", inputs: ["disabled", "buttonOptions", "type", "name", "placeholder", "readonly", "clearable", "min", "max", "minLength", "maxlength", "step", "searchMini"], outputs: ["blur", "modelDebounceChange", "searchHandler", "clearHandler", "buttonHandler"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2653
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrSelectAddItemComponent, selector: "dr-select-add-item", inputs: { dynamicAddLabel: "dynamicAddLabel", bindValue: "bindValue", values: "values", alertMsg: "alertMsg" }, outputs: { dynamicValueAdded: "dynamicValueAdded" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["dynamicInputRef"], descendants: true }], usesOnChanges: true, ngImport: i0, 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 <p *ngIf=\"alertMsg && !isDynamicValueValid() && isDirty\"\n class=\"dynamic-add__field__alert\">{{ alertMsg }}</p>\n <dr-input\n #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\n *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\" icon=\"dr-icon-exit\" iconSize=\"18px\" (click)=\"onDynamicAddingClose()\"></dr-button>\n </div>\n </div>\n</div>\n", 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}.dynamic-add__field__alert{font-size:12px;position:absolute;color:#bf1d30;z-index:100;right:30px}::ng-deep .ng-dropdown-panel .ng-dropdown-footer:has(.dynamic-add),::ng-deep .ng-dropdown-panel .ng-dropdown-header:has(.dynamic-add){padding:0;border:none}::ng-deep .ng-dropdown-panel .ng-dropdown-footer .dynamic-add__add-item{border-bottom: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"], dependencies: [{ kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DrButtonComponent, selector: "dr-button", inputs: ["theme", "icon", "iconColor", "iconSize", "iconAfter", "iconAfterColor", "iconAfterSize", "disabled", "isLoading", "isActive"] }, { kind: "component", type: DrInputComponent, selector: "dr-input", inputs: ["disabled", "buttonOptions", "type", "name", "placeholder", "readonly", "clearable", "min", "max", "minLength", "maxlength", "step", "searchMini"], outputs: ["blur", "modelDebounceChange", "searchHandler", "clearHandler", "buttonHandler"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2654
2654
|
}
|
|
2655
2655
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrSelectAddItemComponent, decorators: [{
|
|
2656
2656
|
type: Component,
|
|
2657
|
-
args: [{ selector: 'dr-select-add-item', changeDetection: ChangeDetectionStrategy.OnPush, 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\n #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\n *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\" icon=\"dr-icon-exit\" iconSize=\"18px\" (click)=\"onDynamicAddingClose()\"></dr-button>\n </div>\n </div>\n</div>\n", 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"] }]
|
|
2657
|
+
args: [{ selector: 'dr-select-add-item', changeDetection: ChangeDetectionStrategy.OnPush, 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 <p *ngIf=\"alertMsg && !isDynamicValueValid() && isDirty\"\n class=\"dynamic-add__field__alert\">{{ alertMsg }}</p>\n <dr-input\n #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\n *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\" icon=\"dr-icon-exit\" iconSize=\"18px\" (click)=\"onDynamicAddingClose()\"></dr-button>\n </div>\n </div>\n</div>\n", 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}.dynamic-add__field__alert{font-size:12px;position:absolute;color:#bf1d30;z-index:100;right:30px}::ng-deep .ng-dropdown-panel .ng-dropdown-footer:has(.dynamic-add),::ng-deep .ng-dropdown-panel .ng-dropdown-header:has(.dynamic-add){padding:0;border:none}::ng-deep .ng-dropdown-panel .ng-dropdown-footer .dynamic-add__add-item{border-bottom: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"] }]
|
|
2658
2658
|
}], ctorParameters: function () { return [{ type: DrSelectComponent }]; }, propDecorators: { dynamicAddLabel: [{
|
|
2659
2659
|
type: Input
|
|
2660
2660
|
}], bindValue: [{
|
|
2661
2661
|
type: Input
|
|
2662
2662
|
}], values: [{
|
|
2663
2663
|
type: Input
|
|
2664
|
+
}], alertMsg: [{
|
|
2665
|
+
type: Input
|
|
2664
2666
|
}], dynamicValueAdded: [{
|
|
2665
2667
|
type: Output
|
|
2666
2668
|
}], inputRef: [{
|
|
@@ -2747,7 +2749,7 @@ class DrDynamicTagComponent {
|
|
|
2747
2749
|
return connectedTags.value;
|
|
2748
2750
|
}
|
|
2749
2751
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrDynamicTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2750
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrDynamicTagComponent, selector: "dr-dynamic-tag", inputs: { values: "values", tagConfig: "tagConfig", selectedTag: "selectedTag", lockedTags: "lockedTags", connectedTags: "connectedTags", isDynamicTagAddEnabled: "isDynamicTagAddEnabled", disabled: "disabled" }, outputs: { tagChange: "tagChange", tagAdd: "tagAdd" }, usesOnChanges: true, ngImport: i0, template: "<p class=\"dynamic-tag__label\">{{ tagConfig.name }}</p>\n<dr-select\n [(ngModel)]=\"selectedDynamicTag\"\n [class.dynamic-tag__locked]=\"isLockedTagSelected\"\n bindLabel=\"value\"\n bindValue=\"value\"\n [items]=\"currentValues\"\n [disabled]=\"disabled\"\n dropdownClass=\"dynamic-tag__select dr-tag__select\"\n (ngModelChange)=\"onTagChanged($event)\">\n <ng-template #optionHeaderTemplate *ngIf=\"isDynamicTagAddEnabled\">\n <dr-select-add-item\n bindValue=\"value\"\n [values]=\"currentValues\"\n [dynamicAddLabel]=\"' Add new ' + tagConfig.name\"\n (dynamicValueAdded)=\"onDynamicValueAdd($event)\"></dr-select-add-item>\n </ng-template>\n <ng-template #labelTemplate let-item=\"item\">\n <div class=\"dynamic-tag__field--label\">\n <p class=\"dynamic-tag__field__text\">{{ item?.value || item }}</p>\n <i *ngIf=\"item?.is_favorite\" class=\"dynamic-tag__field__icon dr-icon-star-fill\"></i>\n </div>\n </ng-template>\n <ng-template #optionTemplate let-item=\"item\">\n <div\n class=\"dynamic-tag__field--option\"\n [class.disabled]=\"lockedTags.includes(item?.value || item)\"\n (click)=\"onOptionClick($event, item?.value || item)\">\n <p class=\"dynamic-tag__field__text\">{{ item?.value || item }}</p>\n <i *ngIf=\"item?.is_favorite\" class=\"dynamic-tag__field__icon dr-icon-star-fill\"></i>\n </div>\n </ng-template>\n</dr-select>\n", styles: [".dynamic-tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.dynamic-tag__field{cursor:pointer;height:24px}.dynamic-tag__field--option{cursor:pointer;height:24px;padding:8px 12px;width:100%;display:flex;justify-content:space-between;align-items:center}.dynamic-tag__field--option.disabled{opacity:.5;box-sizing:content-box}.dynamic-tag__field--label{cursor:pointer;height:24px;display:flex;align-items:center}.dynamic-tag__field--label>.dynamic-tag__field__icon{position:absolute;right:25px}.dynamic-tag__field--label>dynamic-tag__field__text{margin:0}.dr-icon-star-fill{color:#f0bc57}::ng-deep dr-select.dynamic-tag__locked>ng-select>.ng-select-container{opacity:.4}::ng-deep .ng-option:has(.dynamic-tag__field--option){padding:0!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DrSelectComponent, selector: "dr-select", inputs: ["type", "className", "items", "addTag", "appendTo", "bindLabel", "bindValue", "clearable", "searchable", "searchFn", "multiple", "hideSelected", "placeholder", "loading", "loadingText", "readonly", "disabled", "groupBy", "optionWithDescription", "id", "keyDownFn", "selectedItem", "dropdownClass", "closeOnSelect", "textView", "autofocus", "isOpen", "noValuePadding"], outputs: ["change", "open", "closeUp"] }, { kind: "component", type: DrSelectAddItemComponent, selector: "dr-select-add-item", inputs: ["dynamicAddLabel", "bindValue", "values"], outputs: ["dynamicValueAdded"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
2752
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrDynamicTagComponent, selector: "dr-dynamic-tag", inputs: { values: "values", tagConfig: "tagConfig", selectedTag: "selectedTag", lockedTags: "lockedTags", connectedTags: "connectedTags", isDynamicTagAddEnabled: "isDynamicTagAddEnabled", disabled: "disabled" }, outputs: { tagChange: "tagChange", tagAdd: "tagAdd" }, usesOnChanges: true, ngImport: i0, template: "<p class=\"dynamic-tag__label\">{{ tagConfig.name }}</p>\n<dr-select\n [(ngModel)]=\"selectedDynamicTag\"\n [class.dynamic-tag__locked]=\"isLockedTagSelected\"\n bindLabel=\"value\"\n bindValue=\"value\"\n [items]=\"currentValues\"\n [disabled]=\"disabled\"\n dropdownClass=\"dynamic-tag__select dr-tag__select\"\n (ngModelChange)=\"onTagChanged($event)\">\n <ng-template #optionHeaderTemplate *ngIf=\"isDynamicTagAddEnabled\">\n <dr-select-add-item\n bindValue=\"value\"\n [values]=\"currentValues\"\n [dynamicAddLabel]=\"' Add new ' + tagConfig.name\"\n (dynamicValueAdded)=\"onDynamicValueAdd($event)\"></dr-select-add-item>\n </ng-template>\n <ng-template #labelTemplate let-item=\"item\">\n <div class=\"dynamic-tag__field--label\">\n <p class=\"dynamic-tag__field__text\">{{ item?.value || item }}</p>\n <i *ngIf=\"item?.is_favorite\" class=\"dynamic-tag__field__icon dr-icon-star-fill\"></i>\n </div>\n </ng-template>\n <ng-template #optionTemplate let-item=\"item\">\n <div\n class=\"dynamic-tag__field--option\"\n [class.disabled]=\"lockedTags.includes(item?.value || item)\"\n (click)=\"onOptionClick($event, item?.value || item)\">\n <p class=\"dynamic-tag__field__text\">{{ item?.value || item }}</p>\n <i *ngIf=\"item?.is_favorite\" class=\"dynamic-tag__field__icon dr-icon-star-fill\"></i>\n </div>\n </ng-template>\n</dr-select>\n", styles: [".dynamic-tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.dynamic-tag__field{cursor:pointer;height:24px}.dynamic-tag__field--option{cursor:pointer;height:24px;padding:8px 12px;width:100%;display:flex;justify-content:space-between;align-items:center}.dynamic-tag__field--option.disabled{opacity:.5;box-sizing:content-box}.dynamic-tag__field--label{cursor:pointer;height:24px;display:flex;align-items:center}.dynamic-tag__field--label>.dynamic-tag__field__icon{position:absolute;right:25px}.dynamic-tag__field--label>dynamic-tag__field__text{margin:0}.dr-icon-star-fill{color:#f0bc57}::ng-deep dr-select.dynamic-tag__locked>ng-select>.ng-select-container{opacity:.4}::ng-deep .ng-option:has(.dynamic-tag__field--option){padding:0!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DrSelectComponent, selector: "dr-select", inputs: ["type", "className", "items", "addTag", "appendTo", "bindLabel", "bindValue", "clearable", "searchable", "searchFn", "multiple", "hideSelected", "placeholder", "loading", "loadingText", "readonly", "disabled", "groupBy", "optionWithDescription", "id", "keyDownFn", "selectedItem", "dropdownClass", "closeOnSelect", "textView", "autofocus", "isOpen", "noValuePadding"], outputs: ["change", "open", "closeUp"] }, { kind: "component", type: DrSelectAddItemComponent, selector: "dr-select-add-item", inputs: ["dynamicAddLabel", "bindValue", "values", "alertMsg"], outputs: ["dynamicValueAdded"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
2751
2753
|
}
|
|
2752
2754
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrDynamicTagComponent, decorators: [{
|
|
2753
2755
|
type: Component,
|
|
@@ -3764,6 +3766,12 @@ class DrChatFormComponent {
|
|
|
3764
3766
|
* @type {boolean}
|
|
3765
3767
|
*/
|
|
3766
3768
|
this.waitForReply = false;
|
|
3769
|
+
/**
|
|
3770
|
+
* Parameter to check is send message function available
|
|
3771
|
+
*
|
|
3772
|
+
* @type {boolean}
|
|
3773
|
+
*/
|
|
3774
|
+
this.showDisabledButtonInsteadOfDotFlashing = false;
|
|
3767
3775
|
/**
|
|
3768
3776
|
*
|
|
3769
3777
|
* @type {EventEmitter<{ message: string, files: File[] }>}
|
|
@@ -3850,11 +3858,11 @@ class DrChatFormComponent {
|
|
|
3850
3858
|
return `height: ${height}px;`;
|
|
3851
3859
|
}
|
|
3852
3860
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrChatFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$5.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3853
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrChatFormComponent, selector: "dr-chat-form", inputs: { message: "message", messagePlaceholder: "messagePlaceholder", dropFiles: "dropFiles", dropFilePlaceholder: "dropFilePlaceholder", waitForReply: "waitForReply" }, outputs: { send: "send", abort: "abort", inputChange: "inputChange" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)" }, properties: { "class.file-over": "this.fileOver" } }, ngImport: i0, template: "<div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n <div class=\"dropped-files__item\" *ngFor=\"let file of droppedFiles\">\n <div class=\"dropped-files__item__preview\" [style.background-image]=\"file.urlStyle || 'none'\">\n <i class=\"dr-icon-file\" *ngIf=\"!file.urlStyle\"></i>\n </div>\n <div class=\"dropped-files__item__name\">{{ file.name }}</div>\n <i class=\"dropped-files__item__remove dr-icon-exit\" (click)=\"removeFile(file)\"></i>\n </div>\n</div>\n<div class=\"message-row\">\n <div\n class=\"message-row__input\"\n [ngClass]=\"{ 'message-row__input--focused': inputFocus, 'message-row__input--filled': !!message?.length }\">\n <textarea\n #textAreaElement\n (focus)=\"inputFocus = true\"\n (blur)=\"inputFocus = false\"\n (mouseenter)=\"inputHover = true\"\n (mouseleave)=\"inputHover = false\"\n [(ngModel)]=\"message\"\n [rows]=\"1\"\n [style]=\"getTextAreaHeight(textAreaElement)\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"text\"\n placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n (keyup.enter)=\"sendMessage()\">\n </textarea>\n <i *ngIf=\"!waitForReply\" (click)=\"sendMessage()\" class=\"dr-icon-notify send-button\"></i>\n <dr-dot-flashing
|
|
3861
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrChatFormComponent, selector: "dr-chat-form", inputs: { message: "message", messagePlaceholder: "messagePlaceholder", dropFiles: "dropFiles", dropFilePlaceholder: "dropFilePlaceholder", waitForReply: "waitForReply", showDisabledButtonInsteadOfDotFlashing: "showDisabledButtonInsteadOfDotFlashing" }, outputs: { send: "send", abort: "abort", inputChange: "inputChange" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)" }, properties: { "class.file-over": "this.fileOver" } }, ngImport: i0, template: "<div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n <div class=\"dropped-files__item\" *ngFor=\"let file of droppedFiles\">\n <div class=\"dropped-files__item__preview\" [style.background-image]=\"file.urlStyle || 'none'\">\n <i class=\"dr-icon-file\" *ngIf=\"!file.urlStyle\"></i>\n </div>\n <div class=\"dropped-files__item__name\">{{ file.name }}</div>\n <i class=\"dropped-files__item__remove dr-icon-exit\" (click)=\"removeFile(file)\"></i>\n </div>\n</div>\n<div class=\"message-row\">\n <div\n class=\"message-row__input\"\n [ngClass]=\"{ 'message-row__input--focused': inputFocus, 'message-row__input--filled': !!message?.length }\">\n <textarea\n #textAreaElement\n (focus)=\"inputFocus = true\"\n (blur)=\"inputFocus = false\"\n (mouseenter)=\"inputHover = true\"\n (mouseleave)=\"inputHover = false\"\n [(ngModel)]=\"message\"\n [rows]=\"1\"\n [style]=\"getTextAreaHeight(textAreaElement)\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"text\"\n placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n (keyup.enter)=\"sendMessage()\">\n </textarea>\n <i *ngIf=\"!waitForReply\" (click)=\"sendMessage()\" class=\"dr-icon-notify send-button\"></i>\n <i\n *ngIf=\"waitForReply && showDisabledButtonInsteadOfDotFlashing\"\n (click)=\"sendMessage()\"\n class=\"dr-icon-notify send-button-disabled\"></i>\n <dr-dot-flashing\n *ngIf=\"waitForReply && !showDisabledButtonInsteadOfDotFlashing\"\n class=\"wait-reply-dot-flashing\"></dr-dot-flashing>\n <dr-button *ngIf=\"waitForReply\" (click)=\"abortMessage()\" theme=\"ghost\" class=\"abort-button\">Stop generating</dr-button>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;align-items:center;padding:0 16px;margin-top:12px}:host .message-row{display:flex;justify-content:center;width:100%;padding:0 0 21px;max-width:956px}:host .message-row__input{position:relative;display:flex;align-items:center;flex-grow:1;flex-direction:row;height:auto;overflow:visible;min-width:265px;border-radius:24px;background:#dfe0e3 border-box;border:1.5px solid transparent;box-shadow:0 2px 16px -10px #603cff29}:host .message-row__input .send-button,:host .message-row__input .send-button-disabled{position:absolute;right:4px;top:2.5px;cursor:pointer;font-size:28px;width:68px;border-radius:100px;display:flex;align-items:center;justify-content:center;height:40px;background:#f0f1f4;color:#aeabac}:host .message-row__input--focused{background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input--filled{background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input--filled .send-button{color:#fff;background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input textarea{font-size:14px;color:#333;line-height:19px;flex-grow:1;resize:none;padding:14px 76px 12px 23px;margin:auto;border:none;border-radius:22.5px}:host .message-row__input textarea:focus{border:none}:host .message-row__input textarea::placeholder{color:#9ea1aa}:host .message-row__input .wait-reply-dot-flashing{position:absolute;right:20px}:host .message-row__input .abort-button{position:absolute;right:0;top:-44px}:host .message-row__input .abort-button::ng-deep button{background:#f2f2ff!important;border-radius:4px}:host input{flex:1}:host input.with-button{border-bottom-right-radius:0;border-top-right-radius:0}:host .dropped-files{display:flex;flex-direction:row;margin-bottom:.5rem;flex-wrap:wrap}:host .dropped-files__item{display:flex;flex-direction:column;justify-content:center;margin:0 10px 10px 0;position:relative}:host .dropped-files__item__preview{background-size:cover;background-position:center;width:64px;height:64px;border-radius:8px;border:1px solid #ccc}:host .dropped-files__item__preview i{font-size:62px}:host .dropped-files__item__name{white-space:nowrap;font-size:12px;color:#8f929e;margin-top:4px;max-width:64px;overflow:hidden;text-overflow:ellipsis}:host .dropped-files__item__remove{position:absolute;right:-4px;top:-4px;cursor:pointer;background:#fff;border-radius:12px;color:#8f929e;border:1px solid #8f929e;font-size:14px}\n"], dependencies: [{ kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DrButtonComponent, selector: "dr-button", inputs: ["theme", "icon", "iconColor", "iconSize", "iconAfter", "iconAfterColor", "iconAfterSize", "disabled", "isLoading", "isActive"] }, { kind: "component", type: DrDotFlashingComponent, selector: "dr-dot-flashing" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3854
3862
|
}
|
|
3855
3863
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrChatFormComponent, decorators: [{
|
|
3856
3864
|
type: Component,
|
|
3857
|
-
args: [{ selector: 'dr-chat-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n <div class=\"dropped-files__item\" *ngFor=\"let file of droppedFiles\">\n <div class=\"dropped-files__item__preview\" [style.background-image]=\"file.urlStyle || 'none'\">\n <i class=\"dr-icon-file\" *ngIf=\"!file.urlStyle\"></i>\n </div>\n <div class=\"dropped-files__item__name\">{{ file.name }}</div>\n <i class=\"dropped-files__item__remove dr-icon-exit\" (click)=\"removeFile(file)\"></i>\n </div>\n</div>\n<div class=\"message-row\">\n <div\n class=\"message-row__input\"\n [ngClass]=\"{ 'message-row__input--focused': inputFocus, 'message-row__input--filled': !!message?.length }\">\n <textarea\n #textAreaElement\n (focus)=\"inputFocus = true\"\n (blur)=\"inputFocus = false\"\n (mouseenter)=\"inputHover = true\"\n (mouseleave)=\"inputHover = false\"\n [(ngModel)]=\"message\"\n [rows]=\"1\"\n [style]=\"getTextAreaHeight(textAreaElement)\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"text\"\n placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n (keyup.enter)=\"sendMessage()\">\n </textarea>\n <i *ngIf=\"!waitForReply\" (click)=\"sendMessage()\" class=\"dr-icon-notify send-button\"></i>\n <dr-dot-flashing
|
|
3865
|
+
args: [{ selector: 'dr-chat-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n <div class=\"dropped-files__item\" *ngFor=\"let file of droppedFiles\">\n <div class=\"dropped-files__item__preview\" [style.background-image]=\"file.urlStyle || 'none'\">\n <i class=\"dr-icon-file\" *ngIf=\"!file.urlStyle\"></i>\n </div>\n <div class=\"dropped-files__item__name\">{{ file.name }}</div>\n <i class=\"dropped-files__item__remove dr-icon-exit\" (click)=\"removeFile(file)\"></i>\n </div>\n</div>\n<div class=\"message-row\">\n <div\n class=\"message-row__input\"\n [ngClass]=\"{ 'message-row__input--focused': inputFocus, 'message-row__input--filled': !!message?.length }\">\n <textarea\n #textAreaElement\n (focus)=\"inputFocus = true\"\n (blur)=\"inputFocus = false\"\n (mouseenter)=\"inputHover = true\"\n (mouseleave)=\"inputHover = false\"\n [(ngModel)]=\"message\"\n [rows]=\"1\"\n [style]=\"getTextAreaHeight(textAreaElement)\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"text\"\n placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n (keyup.enter)=\"sendMessage()\">\n </textarea>\n <i *ngIf=\"!waitForReply\" (click)=\"sendMessage()\" class=\"dr-icon-notify send-button\"></i>\n <i\n *ngIf=\"waitForReply && showDisabledButtonInsteadOfDotFlashing\"\n (click)=\"sendMessage()\"\n class=\"dr-icon-notify send-button-disabled\"></i>\n <dr-dot-flashing\n *ngIf=\"waitForReply && !showDisabledButtonInsteadOfDotFlashing\"\n class=\"wait-reply-dot-flashing\"></dr-dot-flashing>\n <dr-button *ngIf=\"waitForReply\" (click)=\"abortMessage()\" theme=\"ghost\" class=\"abort-button\">Stop generating</dr-button>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;align-items:center;padding:0 16px;margin-top:12px}:host .message-row{display:flex;justify-content:center;width:100%;padding:0 0 21px;max-width:956px}:host .message-row__input{position:relative;display:flex;align-items:center;flex-grow:1;flex-direction:row;height:auto;overflow:visible;min-width:265px;border-radius:24px;background:#dfe0e3 border-box;border:1.5px solid transparent;box-shadow:0 2px 16px -10px #603cff29}:host .message-row__input .send-button,:host .message-row__input .send-button-disabled{position:absolute;right:4px;top:2.5px;cursor:pointer;font-size:28px;width:68px;border-radius:100px;display:flex;align-items:center;justify-content:center;height:40px;background:#f0f1f4;color:#aeabac}:host .message-row__input--focused{background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input--filled{background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input--filled .send-button{color:#fff;background:linear-gradient(-90deg,#6969ff,#4eb7df) border-box}:host .message-row__input textarea{font-size:14px;color:#333;line-height:19px;flex-grow:1;resize:none;padding:14px 76px 12px 23px;margin:auto;border:none;border-radius:22.5px}:host .message-row__input textarea:focus{border:none}:host .message-row__input textarea::placeholder{color:#9ea1aa}:host .message-row__input .wait-reply-dot-flashing{position:absolute;right:20px}:host .message-row__input .abort-button{position:absolute;right:0;top:-44px}:host .message-row__input .abort-button::ng-deep button{background:#f2f2ff!important;border-radius:4px}:host input{flex:1}:host input.with-button{border-bottom-right-radius:0;border-top-right-radius:0}:host .dropped-files{display:flex;flex-direction:row;margin-bottom:.5rem;flex-wrap:wrap}:host .dropped-files__item{display:flex;flex-direction:column;justify-content:center;margin:0 10px 10px 0;position:relative}:host .dropped-files__item__preview{background-size:cover;background-position:center;width:64px;height:64px;border-radius:8px;border:1px solid #ccc}:host .dropped-files__item__preview i{font-size:62px}:host .dropped-files__item__name{white-space:nowrap;font-size:12px;color:#8f929e;margin-top:4px;max-width:64px;overflow:hidden;text-overflow:ellipsis}:host .dropped-files__item__remove{position:absolute;right:-4px;top:-4px;cursor:pointer;background:#fff;border-radius:12px;color:#8f929e;border:1px solid #8f929e;font-size:14px}\n"] }]
|
|
3858
3866
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$5.DomSanitizer }]; }, propDecorators: { message: [{
|
|
3859
3867
|
type: Input
|
|
3860
3868
|
}], messagePlaceholder: [{
|
|
@@ -3865,6 +3873,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3865
3873
|
type: Input
|
|
3866
3874
|
}], waitForReply: [{
|
|
3867
3875
|
type: Input
|
|
3876
|
+
}], showDisabledButtonInsteadOfDotFlashing: [{
|
|
3877
|
+
type: Input
|
|
3868
3878
|
}], send: [{
|
|
3869
3879
|
type: Output
|
|
3870
3880
|
}], abort: [{
|