@brickclay-org/ui 0.0.23 → 0.0.24
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/brickclay-org-ui.mjs +383 -2
- package/fesm2022/brickclay-org-ui.mjs.map +1 -1
- package/index.d.ts +86 -1
- package/package.json +1 -1
- package/src/lib/bk-select/bk-select.css +128 -0
- package/src/styles.css +2 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, EventEmitter, HostListener, ViewChildren, Output, Input, Injectable, NgModule, forwardRef, ViewEncapsulation, Optional, Self, ViewChild } from '@angular/core';
|
|
2
|
+
import { Component, EventEmitter, HostListener, ViewChildren, Output, Input, Injectable, NgModule, forwardRef, ViewEncapsulation, Optional, Self, ViewChild, input, model, output, signal, computed, effect, inject, ElementRef } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import * as i1$1 from '@angular/forms';
|
|
@@ -3025,6 +3025,387 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3025
3025
|
args: ['tableScrollContainer', { static: false }]
|
|
3026
3026
|
}] } });
|
|
3027
3027
|
|
|
3028
|
+
class BkSelect {
|
|
3029
|
+
// --- Inputs ---
|
|
3030
|
+
items = input([], ...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
3031
|
+
bindLabel = input('label', ...(ngDevMode ? [{ debugName: "bindLabel" }] : []));
|
|
3032
|
+
bindValue = input('', ...(ngDevMode ? [{ debugName: "bindValue" }] : []));
|
|
3033
|
+
placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
3034
|
+
notFoundText = input('No items found', ...(ngDevMode ? [{ debugName: "notFoundText" }] : []));
|
|
3035
|
+
loadingText = input('Loading...', ...(ngDevMode ? [{ debugName: "loadingText" }] : []));
|
|
3036
|
+
clearAllText = input('Clear all', ...(ngDevMode ? [{ debugName: "clearAllText" }] : []));
|
|
3037
|
+
// iconSrc = input<string>('Clear all');
|
|
3038
|
+
iconAlt = 'icon';
|
|
3039
|
+
label = 'Label';
|
|
3040
|
+
required = false;
|
|
3041
|
+
iconSrc; // optional icon
|
|
3042
|
+
// Config
|
|
3043
|
+
multiple = input(false, ...(ngDevMode ? [{ debugName: "multiple" }] : []));
|
|
3044
|
+
maxLabels = input(2, ...(ngDevMode ? [{ debugName: "maxLabels" }] : []));
|
|
3045
|
+
searchable = input(true, ...(ngDevMode ? [{ debugName: "searchable" }] : []));
|
|
3046
|
+
clearable = input(true, ...(ngDevMode ? [{ debugName: "clearable" }] : []));
|
|
3047
|
+
readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : []));
|
|
3048
|
+
disabled = model(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
3049
|
+
loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
3050
|
+
closeOnSelect = input(true, ...(ngDevMode ? [{ debugName: "closeOnSelect" }] : []));
|
|
3051
|
+
dropdownPosition = input('bottom', ...(ngDevMode ? [{ debugName: "dropdownPosition" }] : []));
|
|
3052
|
+
// 1. NEW INPUT: Toggle append-to-body behavior
|
|
3053
|
+
appendToBody = input(false, ...(ngDevMode ? [{ debugName: "appendToBody" }] : []));
|
|
3054
|
+
// --- Outputs ---
|
|
3055
|
+
open = output();
|
|
3056
|
+
close = output();
|
|
3057
|
+
focus = output();
|
|
3058
|
+
blur = output();
|
|
3059
|
+
search = output();
|
|
3060
|
+
clear = output();
|
|
3061
|
+
change = output();
|
|
3062
|
+
scrollToEnd = output();
|
|
3063
|
+
// --- Refs ---
|
|
3064
|
+
searchInput;
|
|
3065
|
+
optionsListContainer;
|
|
3066
|
+
optionsRef;
|
|
3067
|
+
controlWrapper;
|
|
3068
|
+
// --- State ---
|
|
3069
|
+
_value = null;
|
|
3070
|
+
isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
|
|
3071
|
+
selectedOptions = signal([], ...(ngDevMode ? [{ debugName: "selectedOptions" }] : []));
|
|
3072
|
+
searchTerm = signal('', ...(ngDevMode ? [{ debugName: "searchTerm" }] : []));
|
|
3073
|
+
markedIndex = signal(-1, ...(ngDevMode ? [{ debugName: "markedIndex" }] : []));
|
|
3074
|
+
dropdownStyle = signal({
|
|
3075
|
+
left: '0px',
|
|
3076
|
+
width: 'auto'
|
|
3077
|
+
}, ...(ngDevMode ? [{ debugName: "dropdownStyle" }] : []));
|
|
3078
|
+
filteredItems = computed(() => {
|
|
3079
|
+
const term = this.searchTerm().toLowerCase();
|
|
3080
|
+
const list = this.items();
|
|
3081
|
+
if (!term || !this.searchable())
|
|
3082
|
+
return list;
|
|
3083
|
+
return list.filter(item => {
|
|
3084
|
+
const label = this.resolveLabel(item).toLowerCase();
|
|
3085
|
+
return label.includes(term);
|
|
3086
|
+
});
|
|
3087
|
+
}, ...(ngDevMode ? [{ debugName: "filteredItems" }] : []));
|
|
3088
|
+
isAllSelected = computed(() => {
|
|
3089
|
+
const filtered = this.filteredItems();
|
|
3090
|
+
const current = this.selectedOptions();
|
|
3091
|
+
if (!filtered.length)
|
|
3092
|
+
return false;
|
|
3093
|
+
return filtered.every(item => this.isItemSelected(item));
|
|
3094
|
+
}, ...(ngDevMode ? [{ debugName: "isAllSelected" }] : []));
|
|
3095
|
+
constructor() {
|
|
3096
|
+
effect(() => {
|
|
3097
|
+
const currentItems = this.items();
|
|
3098
|
+
if (currentItems.length > 0 && this._value !== null) {
|
|
3099
|
+
this.resolveSelectedOptions(this._value);
|
|
3100
|
+
}
|
|
3101
|
+
});
|
|
3102
|
+
}
|
|
3103
|
+
// --- Helpers ---
|
|
3104
|
+
resolveLabel(item) {
|
|
3105
|
+
if (!item)
|
|
3106
|
+
return '';
|
|
3107
|
+
const labelProp = this.bindLabel();
|
|
3108
|
+
return labelProp && typeof item === 'object' ? item[labelProp] : String(item);
|
|
3109
|
+
}
|
|
3110
|
+
resolveValue(item) {
|
|
3111
|
+
const valueProp = this.bindValue();
|
|
3112
|
+
return valueProp && typeof item === 'object' ? item[valueProp] : item;
|
|
3113
|
+
}
|
|
3114
|
+
isItemSelected(item) {
|
|
3115
|
+
const current = this.selectedOptions();
|
|
3116
|
+
const compareFn = this.compareWith();
|
|
3117
|
+
const itemVal = this.resolveValue(item);
|
|
3118
|
+
return current.some(selected => compareFn(itemVal, this.resolveValue(selected)));
|
|
3119
|
+
}
|
|
3120
|
+
compareWith = input((a, b) => a === b, ...(ngDevMode ? [{ debugName: "compareWith" }] : []));
|
|
3121
|
+
// --- Actions ---
|
|
3122
|
+
toggleDropdown(event) {
|
|
3123
|
+
if (event) {
|
|
3124
|
+
event.preventDefault();
|
|
3125
|
+
event.stopPropagation();
|
|
3126
|
+
}
|
|
3127
|
+
if (this.disabled() || this.readonly())
|
|
3128
|
+
return;
|
|
3129
|
+
this.isOpen() ? this.closeDropdown() : this.openDropdown();
|
|
3130
|
+
}
|
|
3131
|
+
openDropdown() {
|
|
3132
|
+
if (this.isOpen())
|
|
3133
|
+
return;
|
|
3134
|
+
// Only calculate position if we are appending to body
|
|
3135
|
+
if (this.appendToBody()) {
|
|
3136
|
+
this.updatePosition();
|
|
3137
|
+
}
|
|
3138
|
+
this.isOpen.set(true);
|
|
3139
|
+
this.markedIndex.set(0);
|
|
3140
|
+
this.open.emit();
|
|
3141
|
+
this.focus.emit();
|
|
3142
|
+
setTimeout(() => this.searchInput?.nativeElement.focus());
|
|
3143
|
+
}
|
|
3144
|
+
closeDropdown() {
|
|
3145
|
+
if (!this.isOpen())
|
|
3146
|
+
return;
|
|
3147
|
+
this.isOpen.set(false);
|
|
3148
|
+
this.searchTerm.set('');
|
|
3149
|
+
this.onTouched();
|
|
3150
|
+
this.close.emit();
|
|
3151
|
+
this.blur.emit();
|
|
3152
|
+
}
|
|
3153
|
+
getTop() {
|
|
3154
|
+
if (this.appendToBody()) {
|
|
3155
|
+
return this.dropdownStyle().top ?? null;
|
|
3156
|
+
}
|
|
3157
|
+
// NOT appendToBody
|
|
3158
|
+
return this.dropdownPosition() === 'bottom' ? '100%' : null;
|
|
3159
|
+
}
|
|
3160
|
+
getBottom() {
|
|
3161
|
+
if (this.appendToBody()) {
|
|
3162
|
+
return this.dropdownStyle().bottom ?? null;
|
|
3163
|
+
}
|
|
3164
|
+
// NOT appendToBody
|
|
3165
|
+
return this.dropdownPosition() === 'top' ? '100%' : null;
|
|
3166
|
+
}
|
|
3167
|
+
updatePosition() {
|
|
3168
|
+
const rect = this.controlWrapper.nativeElement.getBoundingClientRect();
|
|
3169
|
+
if (this.dropdownPosition() === 'bottom') {
|
|
3170
|
+
this.dropdownStyle.set({
|
|
3171
|
+
top: `${rect.bottom + 4}px`,
|
|
3172
|
+
bottom: undefined,
|
|
3173
|
+
left: `${rect.left}px`,
|
|
3174
|
+
width: `${rect.width}px`
|
|
3175
|
+
});
|
|
3176
|
+
}
|
|
3177
|
+
else {
|
|
3178
|
+
this.dropdownStyle.set({
|
|
3179
|
+
top: undefined,
|
|
3180
|
+
bottom: `${window.innerHeight - rect.top + 4}px`,
|
|
3181
|
+
left: `${rect.left}px`,
|
|
3182
|
+
width: `${rect.width}px`
|
|
3183
|
+
});
|
|
3184
|
+
}
|
|
3185
|
+
}
|
|
3186
|
+
// 2. FIXED: Removed ['$event'] argument
|
|
3187
|
+
onWindowEvents() {
|
|
3188
|
+
// Only close on scroll if we are in "fixed" mode (append to body)
|
|
3189
|
+
if (this.isOpen() && this.appendToBody()) {
|
|
3190
|
+
this.closeDropdown();
|
|
3191
|
+
}
|
|
3192
|
+
}
|
|
3193
|
+
// ... (toggleSelectAll, handleSelection, removeOption, handleClear logic same as before) ...
|
|
3194
|
+
toggleSelectAll(event) {
|
|
3195
|
+
event.stopPropagation();
|
|
3196
|
+
event.preventDefault();
|
|
3197
|
+
const allSelected = this.isAllSelected();
|
|
3198
|
+
const filtered = this.filteredItems();
|
|
3199
|
+
let newSelection = [...this.selectedOptions()];
|
|
3200
|
+
const compareFn = this.compareWith();
|
|
3201
|
+
if (allSelected) {
|
|
3202
|
+
newSelection = newSelection.filter(sel => {
|
|
3203
|
+
const selVal = this.resolveValue(sel);
|
|
3204
|
+
return !filtered.some(fItem => compareFn(this.resolveValue(fItem), selVal));
|
|
3205
|
+
});
|
|
3206
|
+
}
|
|
3207
|
+
else {
|
|
3208
|
+
filtered.forEach(item => {
|
|
3209
|
+
if (!this.isItemSelected(item))
|
|
3210
|
+
newSelection.push(item);
|
|
3211
|
+
});
|
|
3212
|
+
}
|
|
3213
|
+
this.updateModel(newSelection);
|
|
3214
|
+
}
|
|
3215
|
+
handleSelection(item, event) {
|
|
3216
|
+
if (event)
|
|
3217
|
+
event.stopPropagation();
|
|
3218
|
+
if (this.multiple()) {
|
|
3219
|
+
const isSelected = this.isItemSelected(item);
|
|
3220
|
+
let newSelection = [...this.selectedOptions()];
|
|
3221
|
+
const compareFn = this.compareWith();
|
|
3222
|
+
if (isSelected) {
|
|
3223
|
+
const itemVal = this.resolveValue(item);
|
|
3224
|
+
newSelection = newSelection.filter(sel => !compareFn(this.resolveValue(sel), itemVal));
|
|
3225
|
+
}
|
|
3226
|
+
else {
|
|
3227
|
+
newSelection.push(item);
|
|
3228
|
+
}
|
|
3229
|
+
this.updateModel(newSelection);
|
|
3230
|
+
if (this.closeOnSelect())
|
|
3231
|
+
this.closeDropdown();
|
|
3232
|
+
}
|
|
3233
|
+
else {
|
|
3234
|
+
this.updateModel([item]);
|
|
3235
|
+
if (this.closeOnSelect())
|
|
3236
|
+
this.closeDropdown();
|
|
3237
|
+
}
|
|
3238
|
+
}
|
|
3239
|
+
removeOption(item, event) {
|
|
3240
|
+
event.stopPropagation();
|
|
3241
|
+
const newSelection = this.selectedOptions().filter(i => i !== item);
|
|
3242
|
+
this.updateModel(newSelection);
|
|
3243
|
+
}
|
|
3244
|
+
handleClear(event) {
|
|
3245
|
+
event.stopPropagation();
|
|
3246
|
+
this.updateModel([]);
|
|
3247
|
+
this.clear.emit();
|
|
3248
|
+
}
|
|
3249
|
+
updateModel(items) {
|
|
3250
|
+
this.selectedOptions.set(items);
|
|
3251
|
+
if (this.multiple()) {
|
|
3252
|
+
const values = items.map(i => this.resolveValue(i));
|
|
3253
|
+
this._value = values;
|
|
3254
|
+
this.onChange(values);
|
|
3255
|
+
this.change.emit(values);
|
|
3256
|
+
}
|
|
3257
|
+
else {
|
|
3258
|
+
const item = items[0] || null;
|
|
3259
|
+
const value = item ? this.resolveValue(item) : null;
|
|
3260
|
+
this._value = value;
|
|
3261
|
+
this.onChange(value);
|
|
3262
|
+
this.change.emit(value);
|
|
3263
|
+
}
|
|
3264
|
+
}
|
|
3265
|
+
onSearchInput(event) {
|
|
3266
|
+
const val = event.target.value;
|
|
3267
|
+
this.searchTerm.set(val);
|
|
3268
|
+
this.markedIndex.set(0);
|
|
3269
|
+
this.search.emit({ term: val, items: this.filteredItems() });
|
|
3270
|
+
}
|
|
3271
|
+
onKeyDown(event) {
|
|
3272
|
+
if (!this.isOpen())
|
|
3273
|
+
return;
|
|
3274
|
+
const list = this.filteredItems();
|
|
3275
|
+
const current = this.markedIndex();
|
|
3276
|
+
switch (event.key) {
|
|
3277
|
+
case 'ArrowDown':
|
|
3278
|
+
event.preventDefault();
|
|
3279
|
+
if (current < list.length - 1) {
|
|
3280
|
+
this.markedIndex.set(current + 1);
|
|
3281
|
+
this.scrollToMarked();
|
|
3282
|
+
}
|
|
3283
|
+
break;
|
|
3284
|
+
case 'ArrowUp':
|
|
3285
|
+
event.preventDefault();
|
|
3286
|
+
if (current > 0) {
|
|
3287
|
+
this.markedIndex.set(current - 1);
|
|
3288
|
+
this.scrollToMarked();
|
|
3289
|
+
}
|
|
3290
|
+
break;
|
|
3291
|
+
case 'Enter':
|
|
3292
|
+
event.preventDefault();
|
|
3293
|
+
if (current >= 0 && list[current])
|
|
3294
|
+
this.handleSelection(list[current]);
|
|
3295
|
+
break;
|
|
3296
|
+
case 'Escape':
|
|
3297
|
+
event.preventDefault();
|
|
3298
|
+
this.closeDropdown();
|
|
3299
|
+
break;
|
|
3300
|
+
}
|
|
3301
|
+
}
|
|
3302
|
+
onScroll(event) {
|
|
3303
|
+
const target = event.target;
|
|
3304
|
+
if (target.scrollHeight - target.scrollTop <= target.clientHeight + 10) {
|
|
3305
|
+
this.scrollToEnd.emit();
|
|
3306
|
+
}
|
|
3307
|
+
}
|
|
3308
|
+
scrollToMarked() {
|
|
3309
|
+
setTimeout(() => {
|
|
3310
|
+
const container = this.optionsListContainer?.nativeElement;
|
|
3311
|
+
const options = this.optionsRef?.toArray();
|
|
3312
|
+
const index = this.markedIndex();
|
|
3313
|
+
if (container && options && options[index]) {
|
|
3314
|
+
const el = options[index].nativeElement;
|
|
3315
|
+
if (el.offsetTop < container.scrollTop) {
|
|
3316
|
+
container.scrollTop = el.offsetTop;
|
|
3317
|
+
}
|
|
3318
|
+
else if ((el.offsetTop + el.clientHeight) > (container.scrollTop + container.clientHeight)) {
|
|
3319
|
+
container.scrollTop = (el.offsetTop + el.clientHeight) - container.clientHeight;
|
|
3320
|
+
}
|
|
3321
|
+
}
|
|
3322
|
+
});
|
|
3323
|
+
}
|
|
3324
|
+
onChange = () => { };
|
|
3325
|
+
onTouched = () => { };
|
|
3326
|
+
writeValue(value) { this._value = value; this.resolveSelectedOptions(value); }
|
|
3327
|
+
registerOnChange(fn) { this.onChange = fn; }
|
|
3328
|
+
registerOnTouched(fn) { this.onTouched = fn; }
|
|
3329
|
+
setDisabledState(d) { this.disabled.set(d); }
|
|
3330
|
+
resolveSelectedOptions(val) {
|
|
3331
|
+
const list = this.items();
|
|
3332
|
+
if (!list.length)
|
|
3333
|
+
return;
|
|
3334
|
+
if (val === null || val === undefined) {
|
|
3335
|
+
this.selectedOptions.set([]);
|
|
3336
|
+
return;
|
|
3337
|
+
}
|
|
3338
|
+
const valArray = Array.isArray(val) ? val : [val];
|
|
3339
|
+
const bindVal = this.bindValue();
|
|
3340
|
+
const compare = this.compareWith();
|
|
3341
|
+
const matchedItems = list.filter(item => {
|
|
3342
|
+
const itemVal = bindVal ? item[bindVal] : item;
|
|
3343
|
+
return valArray.some(v => compare(v, itemVal));
|
|
3344
|
+
});
|
|
3345
|
+
this.selectedOptions.set(matchedItems);
|
|
3346
|
+
}
|
|
3347
|
+
el = inject(ElementRef);
|
|
3348
|
+
onClickOutside(e) {
|
|
3349
|
+
if (!this.el.nativeElement.contains(e.target))
|
|
3350
|
+
this.closeDropdown();
|
|
3351
|
+
}
|
|
3352
|
+
openFromLabel(event) {
|
|
3353
|
+
event.preventDefault();
|
|
3354
|
+
event.stopPropagation();
|
|
3355
|
+
if (this.disabled() || this.readonly())
|
|
3356
|
+
return;
|
|
3357
|
+
this.controlWrapper.nativeElement.focus();
|
|
3358
|
+
this.openDropdown();
|
|
3359
|
+
}
|
|
3360
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BkSelect, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3361
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: BkSelect, isStandalone: true, selector: "bk-select", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, bindLabel: { classPropertyName: "bindLabel", publicName: "bindLabel", isSignal: true, isRequired: false, transformFunction: null }, bindValue: { classPropertyName: "bindValue", publicName: "bindValue", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, notFoundText: { classPropertyName: "notFoundText", publicName: "notFoundText", isSignal: true, isRequired: false, transformFunction: null }, loadingText: { classPropertyName: "loadingText", publicName: "loadingText", isSignal: true, isRequired: false, transformFunction: null }, clearAllText: { classPropertyName: "clearAllText", publicName: "clearAllText", isSignal: true, isRequired: false, transformFunction: null }, iconAlt: { classPropertyName: "iconAlt", publicName: "iconAlt", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, iconSrc: { classPropertyName: "iconSrc", publicName: "iconSrc", isSignal: false, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, maxLabels: { classPropertyName: "maxLabels", publicName: "maxLabels", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, closeOnSelect: { classPropertyName: "closeOnSelect", publicName: "closeOnSelect", isSignal: true, isRequired: false, transformFunction: null }, dropdownPosition: { classPropertyName: "dropdownPosition", publicName: "dropdownPosition", isSignal: true, isRequired: false, transformFunction: null }, appendToBody: { classPropertyName: "appendToBody", publicName: "appendToBody", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { disabled: "disabledChange", open: "open", close: "close", focus: "focus", blur: "blur", search: "search", clear: "clear", change: "change", scrollToEnd: "scrollToEnd" }, host: { listeners: { "window:scroll": "onWindowEvents()", "window:resize": "onWindowEvents()", "document:click": "onClickOutside($event)" } }, providers: [
|
|
3362
|
+
{
|
|
3363
|
+
provide: NG_VALUE_ACCESSOR,
|
|
3364
|
+
useExisting: forwardRef(() => BkSelect),
|
|
3365
|
+
multi: true
|
|
3366
|
+
}
|
|
3367
|
+
], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "optionsListContainer", first: true, predicate: ["optionsListContainer"], descendants: true }, { propertyName: "controlWrapper", first: true, predicate: ["controlWrapper"], descendants: true }, { propertyName: "optionsRef", predicate: ["optionsRef"], descendants: true }], ngImport: i0, template: "<div class=\"ng-select-container\">\r\n\r\n <label\r\n class=\"input-label\"\r\n (click)=\"openFromLabel($event)\">\r\n {{ label }}\r\n @if(required){\r\n <span class=\"input-label-required\">*</span>\r\n }\r\n </label>\r\n\r\n <div\r\n #controlWrapper\r\n class=\"ng-select-control\"\r\n [class.focused]=\"isOpen()\"\r\n [class.disabled]=\"disabled()\"\r\n (mousedown)=\"toggleDropdown($event)\"\r\n >\r\n <!-- Icon (Always visible if set) -->\r\n @if(iconSrc){\r\n <img [src]=\"iconSrc\" [alt]=\"iconAlt\" class=\"shrink-0\" />\r\n }\r\n <div class=\"ng-value-container\">\r\n @if (selectedOptions().length === 0)\r\n {\r\n <div class=\"ng-placeholder\">{{ placeholder() }}</div>\r\n }\r\n @if\r\n (multiple() && selectedOptions().length > 0) {\r\n <div class=\"ng-value-chips\">\r\n @for (opt of selectedOptions().slice(0, maxLabels()); track $index) {\r\n <div class=\"ng-value-chip\">\r\n <span class=\"ng-value-label\">{{ resolveLabel(opt) }}</span>\r\n <span class=\"ng-value-icon\" (mousedown)=\"removeOption(opt, $event)\">\u00D7</span>\r\n </div>\r\n }\r\n @if (selectedOptions().length > maxLabels()) {\r\n <div class=\"ng-value-chip remaining-count\"><span class=\"ng-value-label\">+{{ selectedOptions().length - maxLabels() }} more</span></div>\r\n }\r\n </div>\r\n }\r\n @if (!multiple() && selectedOptions().length > 0) {\r\n <div class=\"ng-value-label-single\">{{ resolveLabel(selectedOptions()[0]) }}</div>\r\n }\r\n </div>\r\n <div class=\"ng-actions\">\r\n @if (clearable() && selectedOptions().length > 0 && !disabled()) {\r\n <span class=\"ng-clear-wrapper\" (mousedown)=\"handleClear($event)\" title=\"Clear\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line></svg>\r\n </span>\r\n }\r\n <span class=\"ng-arrow-wrapper\" [class.open]=\"isOpen()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n @if (isOpen()) {\r\n <div\r\n #dropdownPanel\r\n class=\"custom-ng-dropdown-panel\"\r\n [attr.data-position]=\"dropdownPosition()\"\r\n (scroll)=\"onScroll($event)\"\r\n\r\n [style.position]=\"appendToBody() ? 'fixed' : 'absolute'\"\r\n [style.top]=\"getTop()\"\r\n [style.bottom]=\"getBottom()\"\r\n [style.left]=\"appendToBody() ? dropdownStyle().left : null\"\r\n [style.width]=\"appendToBody() ? dropdownStyle().width : '100%'\"\r\n >\r\n\r\n\r\n @if (searchable()) {\r\n <div class=\"ng-dropdown-search\">\r\n <div class=\"ng-search-wrapper\">\r\n <svg class=\"text-[#BBBDC5] mr-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line></svg>\r\n <input #searchInput type=\"text\" class=\"ng-search-input\" [value]=\"searchTerm()\" [placeholder]=\"'Search...'\" (input)=\"onSearchInput($event)\" (keydown)=\"onKeyDown($event)\" (click)=\"$event.stopPropagation()\">\r\n </div>\r\n </div>\r\n }\r\n @if (multiple() && filteredItems().length > 0) {\r\n <div class=\"ng-option select-all-option\" (mousedown)=\"toggleSelectAll($event)\">\r\n <div class=\"mr-2 flex items-center justify-center w-4 h-4 border border-gray-300 rounded bg-white\" [class.bg-blue-600]=\"isAllSelected()\" [class.border-blue-600]=\"isAllSelected()\">\r\n @if(isAllSelected()){ <svg class=\"text-white w-3 h-3\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\"><polyline points=\"20 6 9 17 4 12\"/></svg> }\r\n </div>\r\n <span class=\"font-semibold\">Select All</span>\r\n </div>\r\n }\r\n <div #optionsListContainer class=\"ng-options-list\">\r\n @if (loading()) { <div class=\"ng-option-disabled\">{{ loadingText() }}</div> }\r\n @else {\r\n @for (item of filteredItems(); track $index) {\r\n <div #optionsRef class=\"ng-option\" [class.selected]=\"isItemSelected(item)\" [class.marked]=\"$index === markedIndex()\" (mousedown)=\"handleSelection(item, $event)\" (mouseenter)=\"markedIndex.set($index)\">\r\n @if (multiple()) {\r\n <div class=\"mr-2 flex items-center justify-center w-4 h-4 border border-gray-300 rounded bg-white\" [class.bg-blue-600]=\"isItemSelected(item)\" [class.border-blue-600]=\"isItemSelected(item)\">\r\n @if(isItemSelected(item)){ <svg class=\"text-white w-3 h-3\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\"><polyline points=\"20 6 9 17 4 12\"/></svg> }\r\n </div>\r\n }\r\n <span class=\"flex-1\">{{ resolveLabel(item) }}</span>\r\n @if (!multiple() && isItemSelected(item)) {\r\n <svg class=\"text-[#141414]\" width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><polyline points=\"20 6 9 17 4 12\"/></svg>\r\n }\r\n </div>\r\n }\r\n @if (filteredItems().length === 0) { <div class=\"ng-option-disabled\">{{ notFoundText() }}</div> }\r\n }\r\n </div>\r\n\r\n </div>\r\n }\r\n</div>\r\n", styles: [".ng-select-container{@apply relative w-full box-border;}.ng-select-control{@apply flex items-center justify-between gap-2 w-full bg-white border border-[#E3E3E7] rounded transition-all duration-200 px-3 py-[9.2px] cursor-pointer;}.ng-select-control.focused{@apply border-[#6B7080] shadow-none z-10;}.ng-select-control.disabled{@apply bg-[#F4F4F6] cursor-not-allowed opacity-60;}.ng-value-container{@apply flex flex-1 items-center flex-wrap gap-1 relative overflow-hidden h-full;}.ng-placeholder{@apply text-[#6B7080] font-normal text-sm truncate w-full pointer-events-none;}.ng-value-label-single{@apply font-normal text-sm text-[#141414] truncate w-full;}.ng-value-chips{@apply flex flex-wrap gap-1 w-full;}.ng-value-chip{@apply flex items-center bg-gray-100 border border-gray-200 rounded px-2 py-0.5 max-w-full;}.ng-value-chip .ng-value-label{@apply text-[#15191E] truncate max-w-[150px];}.ng-value-chip .ng-value-icon{@apply ml-1 text-gray-500 hover:text-red-500 cursor-pointer text-base font-bold leading-none px-1;}.ng-actions{@apply flex items-center gap-0.5 flex-shrink-0;}.ng-clear-wrapper{@apply text-gray-400 hover:text-red-500 cursor-pointer;}.ng-arrow-wrapper{@apply text-gray-400 transition-transform duration-200;}.ng-arrow-wrapper.open{@apply rotate-180;}.custom-ng-dropdown-panel{@apply absolute left-0 w-full bg-white border border-[#E3E3E7] rounded-xl shadow-lg z-[99] overflow-hidden cursor-default;}.ng-dropdown-search{@apply px-2 pt-2;}.ng-search-wrapper{@apply flex items-center border border-[#E3E3E7] rounded-md px-3 py-[7px] bg-white transition-colors focus-within:border-[#E3E3E7];}.ng-search-input{@apply w-full outline-none font-normal text-sm text-[#141414] placeholder-[#A1A3AE] bg-transparent;}.ng-options-list{@apply max-h-60 overflow-auto relative p-2.5 mb-3.5;}.ng-option{@apply flex items-center p-2.5 cursor-pointer transition-colors font-normal text-sm text-[#141414];}.ng-option:hover,.ng-option.marked,.ng-option.selected{@apply bg-[#F8F8F8] rounded-md;}.ng-option-disabled{@apply px-3 py-2 text-gray-400 cursor-default;}.ng-value-chip.remaining-count{@apply bg-gray-200 text-gray-600 font-semibold cursor-default;}.select-all-option{@apply sticky top-0 z-20 flex items-center px-3 py-2 cursor-pointer border-b border-[#E3E6EE] bg-gray-50 text-[#15191E];}.select-all-option:hover{@apply bg-gray-100;}.custom-ng-dropdown-panel[data-position=top]{margin-top:0;margin-bottom:4px}.input-label{@apply text-sm font-medium text-[#141414] tracking-[-.28px] mb-1.5 inline-block;}.input-label-required{@apply text-[#E7000B];}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:transparent;border-radius:8px;width:8px}::-webkit-scrollbar-thumb{background:#d6d7dc;border-radius:8px;transition:.3s ease-in-out}::-webkit-scrollbar-thumb:hover{background:#909090}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }] });
|
|
3368
|
+
}
|
|
3369
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BkSelect, decorators: [{
|
|
3370
|
+
type: Component,
|
|
3371
|
+
args: [{ selector: 'bk-select', standalone: true, imports: [CommonModule, FormsModule], providers: [
|
|
3372
|
+
{
|
|
3373
|
+
provide: NG_VALUE_ACCESSOR,
|
|
3374
|
+
useExisting: forwardRef(() => BkSelect),
|
|
3375
|
+
multi: true
|
|
3376
|
+
}
|
|
3377
|
+
], template: "<div class=\"ng-select-container\">\r\n\r\n <label\r\n class=\"input-label\"\r\n (click)=\"openFromLabel($event)\">\r\n {{ label }}\r\n @if(required){\r\n <span class=\"input-label-required\">*</span>\r\n }\r\n </label>\r\n\r\n <div\r\n #controlWrapper\r\n class=\"ng-select-control\"\r\n [class.focused]=\"isOpen()\"\r\n [class.disabled]=\"disabled()\"\r\n (mousedown)=\"toggleDropdown($event)\"\r\n >\r\n <!-- Icon (Always visible if set) -->\r\n @if(iconSrc){\r\n <img [src]=\"iconSrc\" [alt]=\"iconAlt\" class=\"shrink-0\" />\r\n }\r\n <div class=\"ng-value-container\">\r\n @if (selectedOptions().length === 0)\r\n {\r\n <div class=\"ng-placeholder\">{{ placeholder() }}</div>\r\n }\r\n @if\r\n (multiple() && selectedOptions().length > 0) {\r\n <div class=\"ng-value-chips\">\r\n @for (opt of selectedOptions().slice(0, maxLabels()); track $index) {\r\n <div class=\"ng-value-chip\">\r\n <span class=\"ng-value-label\">{{ resolveLabel(opt) }}</span>\r\n <span class=\"ng-value-icon\" (mousedown)=\"removeOption(opt, $event)\">\u00D7</span>\r\n </div>\r\n }\r\n @if (selectedOptions().length > maxLabels()) {\r\n <div class=\"ng-value-chip remaining-count\"><span class=\"ng-value-label\">+{{ selectedOptions().length - maxLabels() }} more</span></div>\r\n }\r\n </div>\r\n }\r\n @if (!multiple() && selectedOptions().length > 0) {\r\n <div class=\"ng-value-label-single\">{{ resolveLabel(selectedOptions()[0]) }}</div>\r\n }\r\n </div>\r\n <div class=\"ng-actions\">\r\n @if (clearable() && selectedOptions().length > 0 && !disabled()) {\r\n <span class=\"ng-clear-wrapper\" (mousedown)=\"handleClear($event)\" title=\"Clear\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line></svg>\r\n </span>\r\n }\r\n <span class=\"ng-arrow-wrapper\" [class.open]=\"isOpen()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n @if (isOpen()) {\r\n <div\r\n #dropdownPanel\r\n class=\"custom-ng-dropdown-panel\"\r\n [attr.data-position]=\"dropdownPosition()\"\r\n (scroll)=\"onScroll($event)\"\r\n\r\n [style.position]=\"appendToBody() ? 'fixed' : 'absolute'\"\r\n [style.top]=\"getTop()\"\r\n [style.bottom]=\"getBottom()\"\r\n [style.left]=\"appendToBody() ? dropdownStyle().left : null\"\r\n [style.width]=\"appendToBody() ? dropdownStyle().width : '100%'\"\r\n >\r\n\r\n\r\n @if (searchable()) {\r\n <div class=\"ng-dropdown-search\">\r\n <div class=\"ng-search-wrapper\">\r\n <svg class=\"text-[#BBBDC5] mr-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line></svg>\r\n <input #searchInput type=\"text\" class=\"ng-search-input\" [value]=\"searchTerm()\" [placeholder]=\"'Search...'\" (input)=\"onSearchInput($event)\" (keydown)=\"onKeyDown($event)\" (click)=\"$event.stopPropagation()\">\r\n </div>\r\n </div>\r\n }\r\n @if (multiple() && filteredItems().length > 0) {\r\n <div class=\"ng-option select-all-option\" (mousedown)=\"toggleSelectAll($event)\">\r\n <div class=\"mr-2 flex items-center justify-center w-4 h-4 border border-gray-300 rounded bg-white\" [class.bg-blue-600]=\"isAllSelected()\" [class.border-blue-600]=\"isAllSelected()\">\r\n @if(isAllSelected()){ <svg class=\"text-white w-3 h-3\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\"><polyline points=\"20 6 9 17 4 12\"/></svg> }\r\n </div>\r\n <span class=\"font-semibold\">Select All</span>\r\n </div>\r\n }\r\n <div #optionsListContainer class=\"ng-options-list\">\r\n @if (loading()) { <div class=\"ng-option-disabled\">{{ loadingText() }}</div> }\r\n @else {\r\n @for (item of filteredItems(); track $index) {\r\n <div #optionsRef class=\"ng-option\" [class.selected]=\"isItemSelected(item)\" [class.marked]=\"$index === markedIndex()\" (mousedown)=\"handleSelection(item, $event)\" (mouseenter)=\"markedIndex.set($index)\">\r\n @if (multiple()) {\r\n <div class=\"mr-2 flex items-center justify-center w-4 h-4 border border-gray-300 rounded bg-white\" [class.bg-blue-600]=\"isItemSelected(item)\" [class.border-blue-600]=\"isItemSelected(item)\">\r\n @if(isItemSelected(item)){ <svg class=\"text-white w-3 h-3\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\"><polyline points=\"20 6 9 17 4 12\"/></svg> }\r\n </div>\r\n }\r\n <span class=\"flex-1\">{{ resolveLabel(item) }}</span>\r\n @if (!multiple() && isItemSelected(item)) {\r\n <svg class=\"text-[#141414]\" width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><polyline points=\"20 6 9 17 4 12\"/></svg>\r\n }\r\n </div>\r\n }\r\n @if (filteredItems().length === 0) { <div class=\"ng-option-disabled\">{{ notFoundText() }}</div> }\r\n }\r\n </div>\r\n\r\n </div>\r\n }\r\n</div>\r\n", styles: [".ng-select-container{@apply relative w-full box-border;}.ng-select-control{@apply flex items-center justify-between gap-2 w-full bg-white border border-[#E3E3E7] rounded transition-all duration-200 px-3 py-[9.2px] cursor-pointer;}.ng-select-control.focused{@apply border-[#6B7080] shadow-none z-10;}.ng-select-control.disabled{@apply bg-[#F4F4F6] cursor-not-allowed opacity-60;}.ng-value-container{@apply flex flex-1 items-center flex-wrap gap-1 relative overflow-hidden h-full;}.ng-placeholder{@apply text-[#6B7080] font-normal text-sm truncate w-full pointer-events-none;}.ng-value-label-single{@apply font-normal text-sm text-[#141414] truncate w-full;}.ng-value-chips{@apply flex flex-wrap gap-1 w-full;}.ng-value-chip{@apply flex items-center bg-gray-100 border border-gray-200 rounded px-2 py-0.5 max-w-full;}.ng-value-chip .ng-value-label{@apply text-[#15191E] truncate max-w-[150px];}.ng-value-chip .ng-value-icon{@apply ml-1 text-gray-500 hover:text-red-500 cursor-pointer text-base font-bold leading-none px-1;}.ng-actions{@apply flex items-center gap-0.5 flex-shrink-0;}.ng-clear-wrapper{@apply text-gray-400 hover:text-red-500 cursor-pointer;}.ng-arrow-wrapper{@apply text-gray-400 transition-transform duration-200;}.ng-arrow-wrapper.open{@apply rotate-180;}.custom-ng-dropdown-panel{@apply absolute left-0 w-full bg-white border border-[#E3E3E7] rounded-xl shadow-lg z-[99] overflow-hidden cursor-default;}.ng-dropdown-search{@apply px-2 pt-2;}.ng-search-wrapper{@apply flex items-center border border-[#E3E3E7] rounded-md px-3 py-[7px] bg-white transition-colors focus-within:border-[#E3E3E7];}.ng-search-input{@apply w-full outline-none font-normal text-sm text-[#141414] placeholder-[#A1A3AE] bg-transparent;}.ng-options-list{@apply max-h-60 overflow-auto relative p-2.5 mb-3.5;}.ng-option{@apply flex items-center p-2.5 cursor-pointer transition-colors font-normal text-sm text-[#141414];}.ng-option:hover,.ng-option.marked,.ng-option.selected{@apply bg-[#F8F8F8] rounded-md;}.ng-option-disabled{@apply px-3 py-2 text-gray-400 cursor-default;}.ng-value-chip.remaining-count{@apply bg-gray-200 text-gray-600 font-semibold cursor-default;}.select-all-option{@apply sticky top-0 z-20 flex items-center px-3 py-2 cursor-pointer border-b border-[#E3E6EE] bg-gray-50 text-[#15191E];}.select-all-option:hover{@apply bg-gray-100;}.custom-ng-dropdown-panel[data-position=top]{margin-top:0;margin-bottom:4px}.input-label{@apply text-sm font-medium text-[#141414] tracking-[-.28px] mb-1.5 inline-block;}.input-label-required{@apply text-[#E7000B];}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:transparent;border-radius:8px;width:8px}::-webkit-scrollbar-thumb{background:#d6d7dc;border-radius:8px;transition:.3s ease-in-out}::-webkit-scrollbar-thumb:hover{background:#909090}\n"] }]
|
|
3378
|
+
}], ctorParameters: () => [], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], bindLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindLabel", required: false }] }], bindValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindValue", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], notFoundText: [{ type: i0.Input, args: [{ isSignal: true, alias: "notFoundText", required: false }] }], loadingText: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingText", required: false }] }], clearAllText: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearAllText", required: false }] }], iconAlt: [{
|
|
3379
|
+
type: Input
|
|
3380
|
+
}], label: [{
|
|
3381
|
+
type: Input
|
|
3382
|
+
}], required: [{
|
|
3383
|
+
type: Input
|
|
3384
|
+
}], iconSrc: [{
|
|
3385
|
+
type: Input
|
|
3386
|
+
}], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], maxLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLabels", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }, { type: i0.Output, args: ["disabledChange"] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], closeOnSelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnSelect", required: false }] }], dropdownPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownPosition", required: false }] }], appendToBody: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendToBody", required: false }] }], open: [{ type: i0.Output, args: ["open"] }], close: [{ type: i0.Output, args: ["close"] }], focus: [{ type: i0.Output, args: ["focus"] }], blur: [{ type: i0.Output, args: ["blur"] }], search: [{ type: i0.Output, args: ["search"] }], clear: [{ type: i0.Output, args: ["clear"] }], change: [{ type: i0.Output, args: ["change"] }], scrollToEnd: [{ type: i0.Output, args: ["scrollToEnd"] }], searchInput: [{
|
|
3387
|
+
type: ViewChild,
|
|
3388
|
+
args: ['searchInput']
|
|
3389
|
+
}], optionsListContainer: [{
|
|
3390
|
+
type: ViewChild,
|
|
3391
|
+
args: ['optionsListContainer']
|
|
3392
|
+
}], optionsRef: [{
|
|
3393
|
+
type: ViewChildren,
|
|
3394
|
+
args: ['optionsRef']
|
|
3395
|
+
}], controlWrapper: [{
|
|
3396
|
+
type: ViewChild,
|
|
3397
|
+
args: ['controlWrapper']
|
|
3398
|
+
}], compareWith: [{ type: i0.Input, args: [{ isSignal: true, alias: "compareWith", required: false }] }], onWindowEvents: [{
|
|
3399
|
+
type: HostListener,
|
|
3400
|
+
args: ['window:scroll']
|
|
3401
|
+
}, {
|
|
3402
|
+
type: HostListener,
|
|
3403
|
+
args: ['window:resize']
|
|
3404
|
+
}], onClickOutside: [{
|
|
3405
|
+
type: HostListener,
|
|
3406
|
+
args: ['document:click', ['$event']]
|
|
3407
|
+
}] } });
|
|
3408
|
+
|
|
3028
3409
|
/*
|
|
3029
3410
|
* Public API Surface of brickclay-lib
|
|
3030
3411
|
*/
|
|
@@ -3034,5 +3415,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3034
3415
|
* Generated bundle index. Do not edit.
|
|
3035
3416
|
*/
|
|
3036
3417
|
|
|
3037
|
-
export { BadgeComponent, BrickclayIcons, BrickclayLib, ButtonGroup, CalendarManagerService, CalendarModule, CheckboxComponent, CustomCalendarComponent, GridComponent, PillComponent, RadioComponent, ScheduledDatePickerComponent, Spinner, Textarea, TimePickerComponent, ToggleComponent, UiButton, UiIconButton };
|
|
3418
|
+
export { BadgeComponent, BkSelect, BrickclayIcons, BrickclayLib, ButtonGroup, CalendarManagerService, CalendarModule, CheckboxComponent, CustomCalendarComponent, GridComponent, PillComponent, RadioComponent, ScheduledDatePickerComponent, Spinner, Textarea, TimePickerComponent, ToggleComponent, UiButton, UiIconButton };
|
|
3038
3419
|
//# sourceMappingURL=brickclay-org-ui.mjs.map
|