nexheal-lib 0.0.67 → 0.0.68
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/fesm2022/nexheal-lib.mjs +33 -11
- package/fesm2022/nexheal-lib.mjs.map +1 -1
- package/index.d.ts +3 -0
- package/package.json +1 -1
package/fesm2022/nexheal-lib.mjs
CHANGED
|
@@ -3130,12 +3130,15 @@ class PaginatedAutocompleteControl {
|
|
|
3130
3130
|
this._disabled = value;
|
|
3131
3131
|
if (this.inputControl) {
|
|
3132
3132
|
if (value) {
|
|
3133
|
-
this.inputControl.disable();
|
|
3133
|
+
this.inputControl.disable({ emitEvent: false });
|
|
3134
3134
|
}
|
|
3135
3135
|
else {
|
|
3136
|
-
this.inputControl.enable();
|
|
3136
|
+
this.inputControl.enable({ emitEvent: false });
|
|
3137
3137
|
}
|
|
3138
3138
|
}
|
|
3139
|
+
if (value) {
|
|
3140
|
+
this.onControlDisabled();
|
|
3141
|
+
}
|
|
3139
3142
|
}
|
|
3140
3143
|
pageChange = new EventEmitter();
|
|
3141
3144
|
optionSelected = new EventEmitter();
|
|
@@ -3177,6 +3180,10 @@ class PaginatedAutocompleteControl {
|
|
|
3177
3180
|
get pageRangeEnd() {
|
|
3178
3181
|
return Math.min((this.currentPage - 1) * this.pageSize + this._displayedOptions.length, this.totalCount);
|
|
3179
3182
|
}
|
|
3183
|
+
/** Disabled via @Input or reactive forms (ControlValueAccessor). */
|
|
3184
|
+
get controlDisabled() {
|
|
3185
|
+
return this._disabled || this.inputControl.disabled;
|
|
3186
|
+
}
|
|
3180
3187
|
constructor() { }
|
|
3181
3188
|
ngOnInit() {
|
|
3182
3189
|
this.inputControl.markAsPristine();
|
|
@@ -3188,7 +3195,7 @@ class PaginatedAutocompleteControl {
|
|
|
3188
3195
|
// A selection happened after this keystroke — drop the search
|
|
3189
3196
|
if (this.cancelPendingSearch)
|
|
3190
3197
|
return;
|
|
3191
|
-
if (this.readonly || !this.hasFocus)
|
|
3198
|
+
if (this.readonly || this.controlDisabled || !this.hasFocus)
|
|
3192
3199
|
return;
|
|
3193
3200
|
this.loadPage(1, value);
|
|
3194
3201
|
}));
|
|
@@ -3237,13 +3244,20 @@ class PaginatedAutocompleteControl {
|
|
|
3237
3244
|
this.onTouched = fn;
|
|
3238
3245
|
}
|
|
3239
3246
|
setDisabledState(isDisabled) {
|
|
3247
|
+
this._disabled = isDisabled;
|
|
3240
3248
|
if (isDisabled) {
|
|
3241
|
-
this.inputControl.disable();
|
|
3249
|
+
this.inputControl.disable({ emitEvent: false });
|
|
3250
|
+
this.onControlDisabled();
|
|
3242
3251
|
}
|
|
3243
3252
|
else {
|
|
3244
|
-
this.inputControl.enable();
|
|
3253
|
+
this.inputControl.enable({ emitEvent: false });
|
|
3245
3254
|
}
|
|
3246
3255
|
}
|
|
3256
|
+
onControlDisabled() {
|
|
3257
|
+
this.isPageLoading = false;
|
|
3258
|
+
this.isDropdownOpen = false;
|
|
3259
|
+
this.hasFocus = false;
|
|
3260
|
+
}
|
|
3247
3261
|
// paging
|
|
3248
3262
|
isSearchAllowed(search) {
|
|
3249
3263
|
if (this.minSearchLength <= 0) {
|
|
@@ -3267,6 +3281,10 @@ class PaginatedAutocompleteControl {
|
|
|
3267
3281
|
this.highlightedIndex = null;
|
|
3268
3282
|
}
|
|
3269
3283
|
loadPage(page, search) {
|
|
3284
|
+
if (this.readonly || this.controlDisabled) {
|
|
3285
|
+
this.isPageLoading = false;
|
|
3286
|
+
return;
|
|
3287
|
+
}
|
|
3270
3288
|
if (page === 1 && !this.isSearchAllowed(search)) {
|
|
3271
3289
|
this.handleSearchBelowMinLength();
|
|
3272
3290
|
return;
|
|
@@ -3386,7 +3404,7 @@ class PaginatedAutocompleteControl {
|
|
|
3386
3404
|
}
|
|
3387
3405
|
// events
|
|
3388
3406
|
onUserType(event) {
|
|
3389
|
-
if (this.readonly)
|
|
3407
|
+
if (this.readonly || this.controlDisabled)
|
|
3390
3408
|
return;
|
|
3391
3409
|
// A real keystroke re-arms searching after any selection cancelled it
|
|
3392
3410
|
this.cancelPendingSearch = false;
|
|
@@ -3394,12 +3412,12 @@ class PaginatedAutocompleteControl {
|
|
|
3394
3412
|
}
|
|
3395
3413
|
onFocus() {
|
|
3396
3414
|
this.hasFocus = true;
|
|
3397
|
-
if (this.readonly || this.isDropdownOpen)
|
|
3415
|
+
if (this.readonly || this.controlDisabled || this.isDropdownOpen)
|
|
3398
3416
|
return;
|
|
3399
3417
|
this.openWithSearch();
|
|
3400
3418
|
}
|
|
3401
3419
|
onInputClick() {
|
|
3402
|
-
if (this.readonly || this.isDropdownOpen)
|
|
3420
|
+
if (this.readonly || this.controlDisabled || this.isDropdownOpen)
|
|
3403
3421
|
return;
|
|
3404
3422
|
if (this.hasFocus) {
|
|
3405
3423
|
this.openWithSearch();
|
|
@@ -3408,7 +3426,7 @@ class PaginatedAutocompleteControl {
|
|
|
3408
3426
|
onSearchIconClick(event) {
|
|
3409
3427
|
event.preventDefault();
|
|
3410
3428
|
event.stopPropagation();
|
|
3411
|
-
if (this.readonly || this.
|
|
3429
|
+
if (this.readonly || this.controlDisabled) {
|
|
3412
3430
|
return;
|
|
3413
3431
|
}
|
|
3414
3432
|
this.cancelPendingSearch = false;
|
|
@@ -3427,11 +3445,15 @@ class PaginatedAutocompleteControl {
|
|
|
3427
3445
|
return value;
|
|
3428
3446
|
}
|
|
3429
3447
|
openWithSearch() {
|
|
3448
|
+
if (this.readonly || this.controlDisabled) {
|
|
3449
|
+
return;
|
|
3450
|
+
}
|
|
3430
3451
|
const term = this.openSearchTerm();
|
|
3431
3452
|
// Reuse cached results when reopening with the same search term
|
|
3432
3453
|
if (!this.refreshOnOpen &&
|
|
3433
3454
|
this.lastLoadedSearch === term &&
|
|
3434
3455
|
this._displayedOptions.length > 0) {
|
|
3456
|
+
this.isPageLoading = false;
|
|
3435
3457
|
this.openDropdown();
|
|
3436
3458
|
if (this.paginationType === 'arrow') {
|
|
3437
3459
|
this.showCachedPage(1);
|
|
@@ -3618,7 +3640,7 @@ class PaginatedAutocompleteControl {
|
|
|
3618
3640
|
useExisting: PaginatedAutocompleteControl,
|
|
3619
3641
|
multi: true,
|
|
3620
3642
|
},
|
|
3621
|
-
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }, { propertyName: "dropdownElement", first: true, predicate: ["dropdownElement"], descendants: true }], ngImport: i0, template: "<div class=\"form-group auto-complete paginated-autocomplete\" [ngClass]=\"customClass\" [class.readonly]=\"readonly\"\r\n [class.with-search-icon]=\"showSearchIcon\">\r\n @if (title) {\r\n <label class=\"inp-label\" [ngClass]=\"{ 'required': required }\">{{ title }}</label>\r\n }\r\n\r\n <input #inputElement type=\"text\" class=\"form-control\" [placeholder]=\"placeholder\" [formControl]=\"inputControl\"\r\n (input)=\"onUserType($event)\" (blur)=\"onBlur()\" (keydown)=\"onKeyDown($event)\" (focus)=\"onFocus()\" (click)=\"onInputClick()\"\r\n [ngClass]=\"{'is-invalid': error}\" [attr.autocomplete]=\"autocomplete || null\" [readonly]=\"readonly\" />\r\n\r\n <span class=\"focus-border\"></span>\r\n\r\n @if (!inputLoader && inputControl.value && clearVal && hasFocus) {\r\n <label class=\"clear\" (mousedown)=\"onOptionMouseDown()\" (click)=\"resetInput()\">\r\n <i class=\"he he-close\"></i>\r\n </label>\r\n }\r\n\r\n @if (showSearchIcon && !readonly) {\r\n <label class=\"rs-search\" (mousedown)=\"onOptionMouseDown()\" (click)=\"onSearchIconClick($event)\">\r\n <i class=\"he he-search\"></i>\r\n </label>\r\n }\r\n\r\n @if (isDropdownOpen) {\r\n <div #dropdownElement class=\"option-list\" [class.fixed-height]=\"paginationType === 'arrow' && totalPages > 1\"\r\n (mousedown)=\"onOptionMouseDown()\" (scroll)=\"onListScroll($event)\">\r\n @if (options.length === 0 && !isPageLoading && !loadErrorMessage) {\r\n <div class=\"no-results\">\r\n <div>No results found</div>\r\n @if (isAddNewItem) {\r\n <div (click)=\"onAddNewItemClick()\" class=\"btn-new\">\r\n Add New Item\r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n @for (suggestion of options; track suggestion.id; let i = $index) {\r\n <div class=\"list-item\" [ngClass]=\"{\r\n 'active': suggestion === selectedItems,\r\n 'highlighted': highlightedIndex === i\r\n }\" (click)=\"selectSuggestion(suggestion)\" (mouseover)=\"onMouseOver(i)\">\r\n {{ suggestion[optionDisplayProperty] }}\r\n </div>\r\n }\r\n\r\n @if (isPageLoading) {\r\n <div class=\"list-loading\">Loading...</div>\r\n }\r\n\r\n @if (loadErrorMessage) {\r\n <div class=\"load-error\" (click)=\"retryLoad($event)\">\r\n {{ loadErrorMessage }} \u00B7 <span class=\"retry\">Retry</span>\r\n </div>\r\n }\r\n\r\n @if (paginationType === 'click' && hasMore && !isPageLoading && !loadErrorMessage) {\r\n <div class=\"load-more\" (click)=\"onLoadMoreClick($event)\">\r\n Load more ({{ options.length }} of {{ totalCount }})\r\n </div>\r\n }\r\n\r\n @if (totalCount > 0 && options.length > 0 && !loadErrorMessage && !(paginationType === 'click' && hasMore)) {\r\n <div class=\"list-footer\" [class.pager-footer]=\"paginationType === 'arrow'\">\r\n @if (paginationType === 'arrow') {\r\n <span class=\"range\">{{ pageRangeStart }} - {{ pageRangeEnd }} of {{ totalCount }}</span>\r\n <span class=\"pager-nav\">\r\n <span class=\"pager-btn\" [class.disabled]=\"currentPage <= 1\" (click)=\"prevArrowPage()\">\u2039</span>\r\n <span class=\"pager-btn\" [class.disabled]=\"currentPage >= totalPages\" (click)=\"nextArrowPage()\">\u203A</span>\r\n </span>\r\n } @else {\r\n {{ options.length }} of {{ totalCount }}\r\n @if (hasMore && paginationType === 'scroll') {\r\n <span> \u00B7 scroll for more</span>\r\n }\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @if (inputLoader) {\r\n <label class=\"loader input-loader\"></label>\r\n }\r\n\r\n @if (error) {\r\n <div class=\"val-msg\">{{ errorMessage }}</div>\r\n }\r\n</div>\r\n", styles: [".form-group.paginated-autocomplete.with-search-icon .form-control{padding-right:4rem}.form-group.paginated-autocomplete.with-search-icon .rs-search{top:27px;right:7px;z-index:2;padding:5px;width:30px;height:30px;display:grid;cursor:pointer;position:absolute;border-radius:5px;place-items:center}.form-group.paginated-autocomplete.with-search-icon .rs-search i{font-size:16px;color:#807a7a}.form-group.paginated-autocomplete.with-search-icon .rs-search:hover{background:#ff7f5d1a}.form-group.paginated-autocomplete.with-search-icon .rs-search:hover i{color:#ff7f5d}.form-group.paginated-autocomplete.with-search-icon .clear{right:2.5rem}.form-group.paginated-autocomplete.with-search-icon.no-label .rs-search{top:7px}.form-group.paginated-autocomplete.with-search-icon.no-label .clear{top:10px}.form-group.paginated-autocomplete.with-search-icon.group-sm .rs-search{top:25px}.form-group.paginated-autocomplete.with-search-icon.group-sm.no-label .rs-search{top:4px;width:27px;height:27px}.form-group.paginated-autocomplete.with-search-icon.group-sm.no-label .rs-search i{font-size:14px}.form-group.paginated-autocomplete.with-search-icon.group-sm.no-label .clear{top:6px;right:2.25rem}.form-group.paginated-autocomplete .option-list{max-height:220px;overflow-y:auto}.form-group.paginated-autocomplete .option-list.fixed-height{height:220px;display:flex;flex-direction:column}.form-group.paginated-autocomplete .option-list.fixed-height .list-item,.form-group.paginated-autocomplete .option-list.fixed-height .no-results,.form-group.paginated-autocomplete .option-list.fixed-height .list-loading,.form-group.paginated-autocomplete .option-list.fixed-height .load-error{flex-shrink:0}.form-group.paginated-autocomplete .option-list.fixed-height .list-footer{margin-top:auto}.form-group.paginated-autocomplete .option-list .no-results{padding:10px;color:#9b9b9b;text-align:center}.form-group.paginated-autocomplete .option-list .list-loading{padding:8px 10px;color:#9b9b9b;text-align:center;font-size:12px}.form-group.paginated-autocomplete .option-list .load-more{padding:8px 10px;text-align:center;cursor:pointer;color:#0d6efd;font-size:13px;border-top:1px solid #eee;-webkit-user-select:none;user-select:none}.form-group.paginated-autocomplete .option-list .load-more:hover{background-color:#f5f5f5}.form-group.paginated-autocomplete .option-list .load-error{padding:8px 10px;text-align:center;font-size:12px;color:#dc3545;cursor:pointer;border-top:1px solid #eee;-webkit-user-select:none;user-select:none}.form-group.paginated-autocomplete .option-list .load-error .retry{color:#0d6efd;text-decoration:underline}.form-group.paginated-autocomplete .option-list .load-error:hover{background-color:#f5f5f5}.form-group.paginated-autocomplete .option-list .list-footer{position:sticky;bottom:0;padding:4px 10px;text-align:center;font-size:11px;color:#9b9b9b;background-color:#fff;border-top:1px solid #eee;-webkit-user-select:none;user-select:none}.form-group.paginated-autocomplete .option-list .list-footer .pager-nav{display:inline-flex;align-items:center;gap:6px}.form-group.paginated-autocomplete .option-list .list-footer .range{color:#5f6368;font-size:12px}.form-group.paginated-autocomplete .option-list .list-footer .pager-btn{width:24px;height:24px;border-radius:4px;border:1px solid #dadce0;display:inline-flex;align-items:center;justify-content:center;font-size:15px;line-height:1;color:#5f6368;cursor:pointer;background-color:#fff}.form-group.paginated-autocomplete .option-list .list-footer .pager-btn:hover{background-color:#f5f5f5}.form-group.paginated-autocomplete .option-list .list-footer .pager-btn.disabled{border-color:transparent;color:#ccc;cursor:default;pointer-events:none}.form-group.paginated-autocomplete .option-list .list-footer.pager-footer{display:flex;justify-content:space-between;align-items:center;padding:4px 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
3643
|
+
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }, { propertyName: "dropdownElement", first: true, predicate: ["dropdownElement"], descendants: true }], ngImport: i0, template: "<div class=\"form-group auto-complete paginated-autocomplete\" [ngClass]=\"customClass\" [class.readonly]=\"readonly\"\r\n [class.with-search-icon]=\"showSearchIcon\">\r\n @if (title) {\r\n <label class=\"inp-label\" [ngClass]=\"{ 'required': required }\">{{ title }}</label>\r\n }\r\n\r\n <input #inputElement type=\"text\" class=\"form-control\" [placeholder]=\"placeholder\" [formControl]=\"inputControl\"\r\n (input)=\"onUserType($event)\" (blur)=\"onBlur()\" (keydown)=\"onKeyDown($event)\" (focus)=\"onFocus()\" (click)=\"onInputClick()\"\r\n [ngClass]=\"{'is-invalid': error}\" [attr.autocomplete]=\"autocomplete || null\" [readonly]=\"readonly\" />\r\n\r\n <span class=\"focus-border\"></span>\r\n\r\n @if (!inputLoader && inputControl.value && clearVal && hasFocus) {\r\n <label class=\"clear\" (mousedown)=\"onOptionMouseDown()\" (click)=\"resetInput()\">\r\n <i class=\"he he-close\"></i>\r\n </label>\r\n }\r\n\r\n @if (showSearchIcon && !readonly && !controlDisabled) {\r\n <label class=\"rs-search\" (mousedown)=\"onOptionMouseDown()\" (click)=\"onSearchIconClick($event)\">\r\n <i class=\"he he-search\"></i>\r\n </label>\r\n }\r\n\r\n @if (isDropdownOpen) {\r\n <div #dropdownElement class=\"option-list\" [class.fixed-height]=\"paginationType === 'arrow' && totalPages > 1\"\r\n (mousedown)=\"onOptionMouseDown()\" (scroll)=\"onListScroll($event)\">\r\n @if (options.length === 0 && !isPageLoading && !loadErrorMessage) {\r\n <div class=\"no-results\">\r\n <div>No results found</div>\r\n @if (isAddNewItem) {\r\n <div (click)=\"onAddNewItemClick()\" class=\"btn-new\">\r\n Add New Item\r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n @for (suggestion of options; track suggestion.id; let i = $index) {\r\n <div class=\"list-item\" [ngClass]=\"{\r\n 'active': suggestion === selectedItems,\r\n 'highlighted': highlightedIndex === i\r\n }\" (click)=\"selectSuggestion(suggestion)\" (mouseover)=\"onMouseOver(i)\">\r\n {{ suggestion[optionDisplayProperty] }}\r\n </div>\r\n }\r\n\r\n @if (isPageLoading) {\r\n <div class=\"list-loading\">Loading...</div>\r\n }\r\n\r\n @if (loadErrorMessage) {\r\n <div class=\"load-error\" (click)=\"retryLoad($event)\">\r\n {{ loadErrorMessage }} \u00B7 <span class=\"retry\">Retry</span>\r\n </div>\r\n }\r\n\r\n @if (paginationType === 'click' && hasMore && !isPageLoading && !loadErrorMessage) {\r\n <div class=\"load-more\" (click)=\"onLoadMoreClick($event)\">\r\n Load more ({{ options.length }} of {{ totalCount }})\r\n </div>\r\n }\r\n\r\n @if (totalCount > 0 && options.length > 0 && !loadErrorMessage && !(paginationType === 'click' && hasMore)) {\r\n <div class=\"list-footer\" [class.pager-footer]=\"paginationType === 'arrow'\">\r\n @if (paginationType === 'arrow') {\r\n <span class=\"range\">{{ pageRangeStart }} - {{ pageRangeEnd }} of {{ totalCount }}</span>\r\n <span class=\"pager-nav\">\r\n <span class=\"pager-btn\" [class.disabled]=\"currentPage <= 1\" (click)=\"prevArrowPage()\">\u2039</span>\r\n <span class=\"pager-btn\" [class.disabled]=\"currentPage >= totalPages\" (click)=\"nextArrowPage()\">\u203A</span>\r\n </span>\r\n } @else {\r\n {{ options.length }} of {{ totalCount }}\r\n @if (hasMore && paginationType === 'scroll') {\r\n <span> \u00B7 scroll for more</span>\r\n }\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @if (inputLoader) {\r\n <label class=\"loader input-loader\"></label>\r\n }\r\n\r\n @if (error) {\r\n <div class=\"val-msg\">{{ errorMessage }}</div>\r\n }\r\n</div>\r\n", styles: [".form-group.paginated-autocomplete.with-search-icon .form-control{padding-right:4rem}.form-group.paginated-autocomplete.with-search-icon .rs-search{top:27px;right:7px;z-index:2;padding:5px;width:30px;height:30px;display:grid;cursor:pointer;position:absolute;border-radius:5px;place-items:center}.form-group.paginated-autocomplete.with-search-icon .rs-search i{font-size:16px;color:#807a7a}.form-group.paginated-autocomplete.with-search-icon .rs-search:hover{background:#ff7f5d1a}.form-group.paginated-autocomplete.with-search-icon .rs-search:hover i{color:#ff7f5d}.form-group.paginated-autocomplete.with-search-icon .clear{right:2.5rem}.form-group.paginated-autocomplete.with-search-icon.no-label .rs-search{top:7px}.form-group.paginated-autocomplete.with-search-icon.no-label .clear{top:10px}.form-group.paginated-autocomplete.with-search-icon.group-sm .rs-search{top:25px}.form-group.paginated-autocomplete.with-search-icon.group-sm.no-label .rs-search{top:4px;width:27px;height:27px}.form-group.paginated-autocomplete.with-search-icon.group-sm.no-label .rs-search i{font-size:14px}.form-group.paginated-autocomplete.with-search-icon.group-sm.no-label .clear{top:6px;right:2.25rem}.form-group.paginated-autocomplete .option-list{max-height:220px;overflow-y:auto}.form-group.paginated-autocomplete .option-list.fixed-height{height:220px;display:flex;flex-direction:column}.form-group.paginated-autocomplete .option-list.fixed-height .list-item,.form-group.paginated-autocomplete .option-list.fixed-height .no-results,.form-group.paginated-autocomplete .option-list.fixed-height .list-loading,.form-group.paginated-autocomplete .option-list.fixed-height .load-error{flex-shrink:0}.form-group.paginated-autocomplete .option-list.fixed-height .list-footer{margin-top:auto}.form-group.paginated-autocomplete .option-list .no-results{padding:10px;color:#9b9b9b;text-align:center}.form-group.paginated-autocomplete .option-list .list-loading{padding:8px 10px;color:#9b9b9b;text-align:center;font-size:12px}.form-group.paginated-autocomplete .option-list .load-more{padding:8px 10px;text-align:center;cursor:pointer;color:#0d6efd;font-size:13px;border-top:1px solid #eee;-webkit-user-select:none;user-select:none}.form-group.paginated-autocomplete .option-list .load-more:hover{background-color:#f5f5f5}.form-group.paginated-autocomplete .option-list .load-error{padding:8px 10px;text-align:center;font-size:12px;color:#dc3545;cursor:pointer;border-top:1px solid #eee;-webkit-user-select:none;user-select:none}.form-group.paginated-autocomplete .option-list .load-error .retry{color:#0d6efd;text-decoration:underline}.form-group.paginated-autocomplete .option-list .load-error:hover{background-color:#f5f5f5}.form-group.paginated-autocomplete .option-list .list-footer{position:sticky;bottom:0;padding:4px 10px;text-align:center;font-size:11px;color:#9b9b9b;background-color:#fff;border-top:1px solid #eee;-webkit-user-select:none;user-select:none}.form-group.paginated-autocomplete .option-list .list-footer .pager-nav{display:inline-flex;align-items:center;gap:6px}.form-group.paginated-autocomplete .option-list .list-footer .range{color:#5f6368;font-size:12px}.form-group.paginated-autocomplete .option-list .list-footer .pager-btn{width:24px;height:24px;border-radius:4px;border:1px solid #dadce0;display:inline-flex;align-items:center;justify-content:center;font-size:15px;line-height:1;color:#5f6368;cursor:pointer;background-color:#fff}.form-group.paginated-autocomplete .option-list .list-footer .pager-btn:hover{background-color:#f5f5f5}.form-group.paginated-autocomplete .option-list .list-footer .pager-btn.disabled{border-color:transparent;color:#ccc;cursor:default;pointer-events:none}.form-group.paginated-autocomplete .option-list .list-footer.pager-footer{display:flex;justify-content:space-between;align-items:center;padding:4px 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
3622
3644
|
}
|
|
3623
3645
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PaginatedAutocompleteControl, decorators: [{
|
|
3624
3646
|
type: Component,
|
|
@@ -3628,7 +3650,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
3628
3650
|
useExisting: PaginatedAutocompleteControl,
|
|
3629
3651
|
multi: true,
|
|
3630
3652
|
},
|
|
3631
|
-
], template: "<div class=\"form-group auto-complete paginated-autocomplete\" [ngClass]=\"customClass\" [class.readonly]=\"readonly\"\r\n [class.with-search-icon]=\"showSearchIcon\">\r\n @if (title) {\r\n <label class=\"inp-label\" [ngClass]=\"{ 'required': required }\">{{ title }}</label>\r\n }\r\n\r\n <input #inputElement type=\"text\" class=\"form-control\" [placeholder]=\"placeholder\" [formControl]=\"inputControl\"\r\n (input)=\"onUserType($event)\" (blur)=\"onBlur()\" (keydown)=\"onKeyDown($event)\" (focus)=\"onFocus()\" (click)=\"onInputClick()\"\r\n [ngClass]=\"{'is-invalid': error}\" [attr.autocomplete]=\"autocomplete || null\" [readonly]=\"readonly\" />\r\n\r\n <span class=\"focus-border\"></span>\r\n\r\n @if (!inputLoader && inputControl.value && clearVal && hasFocus) {\r\n <label class=\"clear\" (mousedown)=\"onOptionMouseDown()\" (click)=\"resetInput()\">\r\n <i class=\"he he-close\"></i>\r\n </label>\r\n }\r\n\r\n @if (showSearchIcon && !readonly) {\r\n <label class=\"rs-search\" (mousedown)=\"onOptionMouseDown()\" (click)=\"onSearchIconClick($event)\">\r\n <i class=\"he he-search\"></i>\r\n </label>\r\n }\r\n\r\n @if (isDropdownOpen) {\r\n <div #dropdownElement class=\"option-list\" [class.fixed-height]=\"paginationType === 'arrow' && totalPages > 1\"\r\n (mousedown)=\"onOptionMouseDown()\" (scroll)=\"onListScroll($event)\">\r\n @if (options.length === 0 && !isPageLoading && !loadErrorMessage) {\r\n <div class=\"no-results\">\r\n <div>No results found</div>\r\n @if (isAddNewItem) {\r\n <div (click)=\"onAddNewItemClick()\" class=\"btn-new\">\r\n Add New Item\r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n @for (suggestion of options; track suggestion.id; let i = $index) {\r\n <div class=\"list-item\" [ngClass]=\"{\r\n 'active': suggestion === selectedItems,\r\n 'highlighted': highlightedIndex === i\r\n }\" (click)=\"selectSuggestion(suggestion)\" (mouseover)=\"onMouseOver(i)\">\r\n {{ suggestion[optionDisplayProperty] }}\r\n </div>\r\n }\r\n\r\n @if (isPageLoading) {\r\n <div class=\"list-loading\">Loading...</div>\r\n }\r\n\r\n @if (loadErrorMessage) {\r\n <div class=\"load-error\" (click)=\"retryLoad($event)\">\r\n {{ loadErrorMessage }} \u00B7 <span class=\"retry\">Retry</span>\r\n </div>\r\n }\r\n\r\n @if (paginationType === 'click' && hasMore && !isPageLoading && !loadErrorMessage) {\r\n <div class=\"load-more\" (click)=\"onLoadMoreClick($event)\">\r\n Load more ({{ options.length }} of {{ totalCount }})\r\n </div>\r\n }\r\n\r\n @if (totalCount > 0 && options.length > 0 && !loadErrorMessage && !(paginationType === 'click' && hasMore)) {\r\n <div class=\"list-footer\" [class.pager-footer]=\"paginationType === 'arrow'\">\r\n @if (paginationType === 'arrow') {\r\n <span class=\"range\">{{ pageRangeStart }} - {{ pageRangeEnd }} of {{ totalCount }}</span>\r\n <span class=\"pager-nav\">\r\n <span class=\"pager-btn\" [class.disabled]=\"currentPage <= 1\" (click)=\"prevArrowPage()\">\u2039</span>\r\n <span class=\"pager-btn\" [class.disabled]=\"currentPage >= totalPages\" (click)=\"nextArrowPage()\">\u203A</span>\r\n </span>\r\n } @else {\r\n {{ options.length }} of {{ totalCount }}\r\n @if (hasMore && paginationType === 'scroll') {\r\n <span> \u00B7 scroll for more</span>\r\n }\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @if (inputLoader) {\r\n <label class=\"loader input-loader\"></label>\r\n }\r\n\r\n @if (error) {\r\n <div class=\"val-msg\">{{ errorMessage }}</div>\r\n }\r\n</div>\r\n", styles: [".form-group.paginated-autocomplete.with-search-icon .form-control{padding-right:4rem}.form-group.paginated-autocomplete.with-search-icon .rs-search{top:27px;right:7px;z-index:2;padding:5px;width:30px;height:30px;display:grid;cursor:pointer;position:absolute;border-radius:5px;place-items:center}.form-group.paginated-autocomplete.with-search-icon .rs-search i{font-size:16px;color:#807a7a}.form-group.paginated-autocomplete.with-search-icon .rs-search:hover{background:#ff7f5d1a}.form-group.paginated-autocomplete.with-search-icon .rs-search:hover i{color:#ff7f5d}.form-group.paginated-autocomplete.with-search-icon .clear{right:2.5rem}.form-group.paginated-autocomplete.with-search-icon.no-label .rs-search{top:7px}.form-group.paginated-autocomplete.with-search-icon.no-label .clear{top:10px}.form-group.paginated-autocomplete.with-search-icon.group-sm .rs-search{top:25px}.form-group.paginated-autocomplete.with-search-icon.group-sm.no-label .rs-search{top:4px;width:27px;height:27px}.form-group.paginated-autocomplete.with-search-icon.group-sm.no-label .rs-search i{font-size:14px}.form-group.paginated-autocomplete.with-search-icon.group-sm.no-label .clear{top:6px;right:2.25rem}.form-group.paginated-autocomplete .option-list{max-height:220px;overflow-y:auto}.form-group.paginated-autocomplete .option-list.fixed-height{height:220px;display:flex;flex-direction:column}.form-group.paginated-autocomplete .option-list.fixed-height .list-item,.form-group.paginated-autocomplete .option-list.fixed-height .no-results,.form-group.paginated-autocomplete .option-list.fixed-height .list-loading,.form-group.paginated-autocomplete .option-list.fixed-height .load-error{flex-shrink:0}.form-group.paginated-autocomplete .option-list.fixed-height .list-footer{margin-top:auto}.form-group.paginated-autocomplete .option-list .no-results{padding:10px;color:#9b9b9b;text-align:center}.form-group.paginated-autocomplete .option-list .list-loading{padding:8px 10px;color:#9b9b9b;text-align:center;font-size:12px}.form-group.paginated-autocomplete .option-list .load-more{padding:8px 10px;text-align:center;cursor:pointer;color:#0d6efd;font-size:13px;border-top:1px solid #eee;-webkit-user-select:none;user-select:none}.form-group.paginated-autocomplete .option-list .load-more:hover{background-color:#f5f5f5}.form-group.paginated-autocomplete .option-list .load-error{padding:8px 10px;text-align:center;font-size:12px;color:#dc3545;cursor:pointer;border-top:1px solid #eee;-webkit-user-select:none;user-select:none}.form-group.paginated-autocomplete .option-list .load-error .retry{color:#0d6efd;text-decoration:underline}.form-group.paginated-autocomplete .option-list .load-error:hover{background-color:#f5f5f5}.form-group.paginated-autocomplete .option-list .list-footer{position:sticky;bottom:0;padding:4px 10px;text-align:center;font-size:11px;color:#9b9b9b;background-color:#fff;border-top:1px solid #eee;-webkit-user-select:none;user-select:none}.form-group.paginated-autocomplete .option-list .list-footer .pager-nav{display:inline-flex;align-items:center;gap:6px}.form-group.paginated-autocomplete .option-list .list-footer .range{color:#5f6368;font-size:12px}.form-group.paginated-autocomplete .option-list .list-footer .pager-btn{width:24px;height:24px;border-radius:4px;border:1px solid #dadce0;display:inline-flex;align-items:center;justify-content:center;font-size:15px;line-height:1;color:#5f6368;cursor:pointer;background-color:#fff}.form-group.paginated-autocomplete .option-list .list-footer .pager-btn:hover{background-color:#f5f5f5}.form-group.paginated-autocomplete .option-list .list-footer .pager-btn.disabled{border-color:transparent;color:#ccc;cursor:default;pointer-events:none}.form-group.paginated-autocomplete .option-list .list-footer.pager-footer{display:flex;justify-content:space-between;align-items:center;padding:4px 8px}\n"] }]
|
|
3653
|
+
], template: "<div class=\"form-group auto-complete paginated-autocomplete\" [ngClass]=\"customClass\" [class.readonly]=\"readonly\"\r\n [class.with-search-icon]=\"showSearchIcon\">\r\n @if (title) {\r\n <label class=\"inp-label\" [ngClass]=\"{ 'required': required }\">{{ title }}</label>\r\n }\r\n\r\n <input #inputElement type=\"text\" class=\"form-control\" [placeholder]=\"placeholder\" [formControl]=\"inputControl\"\r\n (input)=\"onUserType($event)\" (blur)=\"onBlur()\" (keydown)=\"onKeyDown($event)\" (focus)=\"onFocus()\" (click)=\"onInputClick()\"\r\n [ngClass]=\"{'is-invalid': error}\" [attr.autocomplete]=\"autocomplete || null\" [readonly]=\"readonly\" />\r\n\r\n <span class=\"focus-border\"></span>\r\n\r\n @if (!inputLoader && inputControl.value && clearVal && hasFocus) {\r\n <label class=\"clear\" (mousedown)=\"onOptionMouseDown()\" (click)=\"resetInput()\">\r\n <i class=\"he he-close\"></i>\r\n </label>\r\n }\r\n\r\n @if (showSearchIcon && !readonly && !controlDisabled) {\r\n <label class=\"rs-search\" (mousedown)=\"onOptionMouseDown()\" (click)=\"onSearchIconClick($event)\">\r\n <i class=\"he he-search\"></i>\r\n </label>\r\n }\r\n\r\n @if (isDropdownOpen) {\r\n <div #dropdownElement class=\"option-list\" [class.fixed-height]=\"paginationType === 'arrow' && totalPages > 1\"\r\n (mousedown)=\"onOptionMouseDown()\" (scroll)=\"onListScroll($event)\">\r\n @if (options.length === 0 && !isPageLoading && !loadErrorMessage) {\r\n <div class=\"no-results\">\r\n <div>No results found</div>\r\n @if (isAddNewItem) {\r\n <div (click)=\"onAddNewItemClick()\" class=\"btn-new\">\r\n Add New Item\r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n @for (suggestion of options; track suggestion.id; let i = $index) {\r\n <div class=\"list-item\" [ngClass]=\"{\r\n 'active': suggestion === selectedItems,\r\n 'highlighted': highlightedIndex === i\r\n }\" (click)=\"selectSuggestion(suggestion)\" (mouseover)=\"onMouseOver(i)\">\r\n {{ suggestion[optionDisplayProperty] }}\r\n </div>\r\n }\r\n\r\n @if (isPageLoading) {\r\n <div class=\"list-loading\">Loading...</div>\r\n }\r\n\r\n @if (loadErrorMessage) {\r\n <div class=\"load-error\" (click)=\"retryLoad($event)\">\r\n {{ loadErrorMessage }} \u00B7 <span class=\"retry\">Retry</span>\r\n </div>\r\n }\r\n\r\n @if (paginationType === 'click' && hasMore && !isPageLoading && !loadErrorMessage) {\r\n <div class=\"load-more\" (click)=\"onLoadMoreClick($event)\">\r\n Load more ({{ options.length }} of {{ totalCount }})\r\n </div>\r\n }\r\n\r\n @if (totalCount > 0 && options.length > 0 && !loadErrorMessage && !(paginationType === 'click' && hasMore)) {\r\n <div class=\"list-footer\" [class.pager-footer]=\"paginationType === 'arrow'\">\r\n @if (paginationType === 'arrow') {\r\n <span class=\"range\">{{ pageRangeStart }} - {{ pageRangeEnd }} of {{ totalCount }}</span>\r\n <span class=\"pager-nav\">\r\n <span class=\"pager-btn\" [class.disabled]=\"currentPage <= 1\" (click)=\"prevArrowPage()\">\u2039</span>\r\n <span class=\"pager-btn\" [class.disabled]=\"currentPage >= totalPages\" (click)=\"nextArrowPage()\">\u203A</span>\r\n </span>\r\n } @else {\r\n {{ options.length }} of {{ totalCount }}\r\n @if (hasMore && paginationType === 'scroll') {\r\n <span> \u00B7 scroll for more</span>\r\n }\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @if (inputLoader) {\r\n <label class=\"loader input-loader\"></label>\r\n }\r\n\r\n @if (error) {\r\n <div class=\"val-msg\">{{ errorMessage }}</div>\r\n }\r\n</div>\r\n", styles: [".form-group.paginated-autocomplete.with-search-icon .form-control{padding-right:4rem}.form-group.paginated-autocomplete.with-search-icon .rs-search{top:27px;right:7px;z-index:2;padding:5px;width:30px;height:30px;display:grid;cursor:pointer;position:absolute;border-radius:5px;place-items:center}.form-group.paginated-autocomplete.with-search-icon .rs-search i{font-size:16px;color:#807a7a}.form-group.paginated-autocomplete.with-search-icon .rs-search:hover{background:#ff7f5d1a}.form-group.paginated-autocomplete.with-search-icon .rs-search:hover i{color:#ff7f5d}.form-group.paginated-autocomplete.with-search-icon .clear{right:2.5rem}.form-group.paginated-autocomplete.with-search-icon.no-label .rs-search{top:7px}.form-group.paginated-autocomplete.with-search-icon.no-label .clear{top:10px}.form-group.paginated-autocomplete.with-search-icon.group-sm .rs-search{top:25px}.form-group.paginated-autocomplete.with-search-icon.group-sm.no-label .rs-search{top:4px;width:27px;height:27px}.form-group.paginated-autocomplete.with-search-icon.group-sm.no-label .rs-search i{font-size:14px}.form-group.paginated-autocomplete.with-search-icon.group-sm.no-label .clear{top:6px;right:2.25rem}.form-group.paginated-autocomplete .option-list{max-height:220px;overflow-y:auto}.form-group.paginated-autocomplete .option-list.fixed-height{height:220px;display:flex;flex-direction:column}.form-group.paginated-autocomplete .option-list.fixed-height .list-item,.form-group.paginated-autocomplete .option-list.fixed-height .no-results,.form-group.paginated-autocomplete .option-list.fixed-height .list-loading,.form-group.paginated-autocomplete .option-list.fixed-height .load-error{flex-shrink:0}.form-group.paginated-autocomplete .option-list.fixed-height .list-footer{margin-top:auto}.form-group.paginated-autocomplete .option-list .no-results{padding:10px;color:#9b9b9b;text-align:center}.form-group.paginated-autocomplete .option-list .list-loading{padding:8px 10px;color:#9b9b9b;text-align:center;font-size:12px}.form-group.paginated-autocomplete .option-list .load-more{padding:8px 10px;text-align:center;cursor:pointer;color:#0d6efd;font-size:13px;border-top:1px solid #eee;-webkit-user-select:none;user-select:none}.form-group.paginated-autocomplete .option-list .load-more:hover{background-color:#f5f5f5}.form-group.paginated-autocomplete .option-list .load-error{padding:8px 10px;text-align:center;font-size:12px;color:#dc3545;cursor:pointer;border-top:1px solid #eee;-webkit-user-select:none;user-select:none}.form-group.paginated-autocomplete .option-list .load-error .retry{color:#0d6efd;text-decoration:underline}.form-group.paginated-autocomplete .option-list .load-error:hover{background-color:#f5f5f5}.form-group.paginated-autocomplete .option-list .list-footer{position:sticky;bottom:0;padding:4px 10px;text-align:center;font-size:11px;color:#9b9b9b;background-color:#fff;border-top:1px solid #eee;-webkit-user-select:none;user-select:none}.form-group.paginated-autocomplete .option-list .list-footer .pager-nav{display:inline-flex;align-items:center;gap:6px}.form-group.paginated-autocomplete .option-list .list-footer .range{color:#5f6368;font-size:12px}.form-group.paginated-autocomplete .option-list .list-footer .pager-btn{width:24px;height:24px;border-radius:4px;border:1px solid #dadce0;display:inline-flex;align-items:center;justify-content:center;font-size:15px;line-height:1;color:#5f6368;cursor:pointer;background-color:#fff}.form-group.paginated-autocomplete .option-list .list-footer .pager-btn:hover{background-color:#f5f5f5}.form-group.paginated-autocomplete .option-list .list-footer .pager-btn.disabled{border-color:transparent;color:#ccc;cursor:default;pointer-events:none}.form-group.paginated-autocomplete .option-list .list-footer.pager-footer{display:flex;justify-content:space-between;align-items:center;padding:4px 8px}\n"] }]
|
|
3632
3654
|
}], ctorParameters: () => [], propDecorators: { title: [{
|
|
3633
3655
|
type: Input
|
|
3634
3656
|
}], required: [{
|