@filip.mazev/blocks 1.4.16 → 1.4.17
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/core/styles/_field-actions.scss +36 -0
- package/core/styles/_helpers.scss +2 -0
- package/core/styles/_slider-rail.scss +11 -0
- package/core/styles/_slider.scss +3 -5
- package/fesm2022/filip.mazev-blocks-forms.mjs +340 -77
- package/fesm2022/filip.mazev-blocks-forms.mjs.map +1 -1
- package/fesm2022/filip.mazev-blocks.mjs +1 -1
- package/fesm2022/filip.mazev-blocks.mjs.map +1 -1
- package/package.json +1 -1
- package/types/filip.mazev-blocks-forms.d.ts +77 -3
- package/types/filip.mazev-blocks.d.ts +1 -1
|
@@ -339,6 +339,139 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
339
339
|
}]
|
|
340
340
|
}
|
|
341
341
|
});
|
|
342
|
+
var CheckboxIndicator = class CheckboxIndicator {
|
|
343
|
+
checked = input(false, ...ngDevMode ? [{ debugName: "checked" }] : /* istanbul ignore next */ []);
|
|
344
|
+
indeterminate = input(false, ...ngDevMode ? [{ debugName: "indeterminate" }] : /* istanbul ignore next */ []);
|
|
345
|
+
invalid = input(false, ...ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []);
|
|
346
|
+
disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
|
|
347
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
348
|
+
minVersion: "12.0.0",
|
|
349
|
+
version: "22.2.3",
|
|
350
|
+
ngImport: i0,
|
|
351
|
+
type: CheckboxIndicator,
|
|
352
|
+
deps: [],
|
|
353
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
354
|
+
});
|
|
355
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
356
|
+
minVersion: "17.0.0",
|
|
357
|
+
version: "22.2.3",
|
|
358
|
+
type: CheckboxIndicator,
|
|
359
|
+
isStandalone: true,
|
|
360
|
+
selector: "bx-checkbox-indicator",
|
|
361
|
+
inputs: {
|
|
362
|
+
checked: {
|
|
363
|
+
classPropertyName: "checked",
|
|
364
|
+
publicName: "checked",
|
|
365
|
+
isSignal: true,
|
|
366
|
+
isRequired: false,
|
|
367
|
+
transformFunction: null
|
|
368
|
+
},
|
|
369
|
+
indeterminate: {
|
|
370
|
+
classPropertyName: "indeterminate",
|
|
371
|
+
publicName: "indeterminate",
|
|
372
|
+
isSignal: true,
|
|
373
|
+
isRequired: false,
|
|
374
|
+
transformFunction: null
|
|
375
|
+
},
|
|
376
|
+
invalid: {
|
|
377
|
+
classPropertyName: "invalid",
|
|
378
|
+
publicName: "invalid",
|
|
379
|
+
isSignal: true,
|
|
380
|
+
isRequired: false,
|
|
381
|
+
transformFunction: null
|
|
382
|
+
},
|
|
383
|
+
disabled: {
|
|
384
|
+
classPropertyName: "disabled",
|
|
385
|
+
publicName: "disabled",
|
|
386
|
+
isSignal: true,
|
|
387
|
+
isRequired: false,
|
|
388
|
+
transformFunction: null
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
host: { attributes: { "aria-hidden": "true" } },
|
|
392
|
+
ngImport: i0,
|
|
393
|
+
template: "<span class=\"bx-checkbox-box\" bxSurface [bxSurfaceEmission]=\"invalid() ? 'var(--bx-text-danger)' : 'var(--bx-accent)'\"\n [class.is-checked]=\"checked() || indeterminate()\" [class.is-invalid]=\"invalid()\" [class.is-disabled]=\"disabled()\">\n @if (indeterminate()) { <bx-icon name=\"minus\" size=\"16\" /> } @else if (checked()) { <bx-icon name=\"check\" size=\"16\" /> }\n</span>\n",
|
|
394
|
+
styles: [":host{display:inline-flex;flex:0 0 auto;vertical-align:middle;pointer-events:none;border-radius:var(--bx-rounded-sm)}.bx-checkbox-box{box-sizing:border-box;flex-shrink:0;display:flex;align-items:center;justify-content:center;inline-size:var(--bx-checkbox-size, 1.125rem);block-size:var(--bx-checkbox-size, 1.125rem);line-height:0;background-color:var(--bx-bg-surface);border:1px solid var(--bx-border-strong);border-radius:var(--bx-rounded-sm);color:var(--bx-text-primary);transition-property:border-color;transition-duration:calc(.15s * (1 - var(--bx-reduced-motion, 0)));transition-timing-function:ease}.bx-checkbox-box.is-invalid{border-color:var(--bx-border-danger);background-color:var(--bx-bg-danger-subtle)}.bx-checkbox-box.is-checked{background-color:var(--bx-accent);border-color:var(--bx-accent);color:var(--bx-on-accent)}.bx-checkbox-box.is-checked.is-invalid{background-color:var(--bx-bg-danger);border-color:var(--bx-border-danger)}.bx-checkbox-box[data-bx-surface]{--bx-glass-shadow: none;--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-edge: var(--bx-border-strong);--bx-glass-min-opacity: .65;border:1px solid var(--bx-glass-edge);box-sizing:border-box;--bx-glass-text: var(--bx-text-primary)}.bx-checkbox-box[data-bx-surface].is-checked{--bx-glass-surface: var(--bx-accent);--bx-glass-min-opacity: 1;--bx-glass-edge: var(--bx-border-accent);--bx-glass-text: var(--bx-on-accent)}.bx-checkbox-box[data-bx-surface].is-invalid{--bx-glass-surface: var(--bx-bg-danger-subtle);--bx-glass-edge: var(--bx-border-danger);--bx-glass-text: var(--bx-text-danger)}.bx-checkbox-box[data-bx-surface]:not(.is-disabled,.is-invalid){background-image:linear-gradient(180deg,color-mix(in srgb,var(--bx-border-strong) 24%,var(--bx-glass-surface)),var(--bx-glass-surface) 55%,color-mix(in srgb,var(--bx-border-strong) 10%,var(--bx-glass-surface)))!important;border-top-color:var(--bx-border-strong);border-bottom-color:var(--bx-border-default)}.bx-checkbox-box[data-bx-surface]:not(.is-disabled,.is-invalid).is-checked{background-image:linear-gradient(180deg,color-mix(in srgb,var(--bx-color-accent-50) 24%,var(--bx-accent)),var(--bx-accent) 42%,var(--bx-accent) 65%,color-mix(in srgb,var(--bx-border-accent) 18%,var(--bx-accent)))!important;border-top-color:color-mix(in srgb,var(--bx-color-accent-100) 60%,var(--bx-accent));border-inline-color:var(--bx-accent);border-bottom-color:var(--bx-border-accent)}:host-context(.high-contrast) .bx-checkbox-box[data-bx-surface]:not(.is-disabled,.is-invalid),:host-context(.bx-high-contrast-scope) .bx-checkbox-box[data-bx-surface]:not(.is-disabled,.is-invalid){background-image:none!important;border-color:var(--bx-glass-edge)}@media(forced-colors:active){.bx-checkbox-box[data-bx-surface]:not(.is-disabled,.is-invalid){background-image:none!important;border-color:ButtonText}}\n"],
|
|
395
|
+
dependencies: [{
|
|
396
|
+
kind: "directive",
|
|
397
|
+
type: BxSurfaceDirective,
|
|
398
|
+
selector: "[bxSurface]",
|
|
399
|
+
inputs: [
|
|
400
|
+
"bxSurfaceInteractive",
|
|
401
|
+
"bxSurfaceGlassiness",
|
|
402
|
+
"bxSurfaceEmission",
|
|
403
|
+
"bxSurfaceFocusEmission",
|
|
404
|
+
"bxReducedTransparency"
|
|
405
|
+
],
|
|
406
|
+
exportAs: ["bxSurface"]
|
|
407
|
+
}, {
|
|
408
|
+
kind: "component",
|
|
409
|
+
type: Icon,
|
|
410
|
+
selector: "bx-icon",
|
|
411
|
+
inputs: [
|
|
412
|
+
"name",
|
|
413
|
+
"size",
|
|
414
|
+
"color",
|
|
415
|
+
"bgColor",
|
|
416
|
+
"strokeWidth",
|
|
417
|
+
"decorative",
|
|
418
|
+
"ariaLabel"
|
|
419
|
+
]
|
|
420
|
+
}],
|
|
421
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
422
|
+
});
|
|
423
|
+
};
|
|
424
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
425
|
+
minVersion: "12.0.0",
|
|
426
|
+
version: "22.2.3",
|
|
427
|
+
ngImport: i0,
|
|
428
|
+
type: CheckboxIndicator,
|
|
429
|
+
decorators: [{
|
|
430
|
+
type: Component,
|
|
431
|
+
args: [{
|
|
432
|
+
selector: "bx-checkbox-indicator",
|
|
433
|
+
imports: [BxSurfaceDirective, Icon],
|
|
434
|
+
host: { "aria-hidden": "true" },
|
|
435
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
436
|
+
template: "<span class=\"bx-checkbox-box\" bxSurface [bxSurfaceEmission]=\"invalid() ? 'var(--bx-text-danger)' : 'var(--bx-accent)'\"\n [class.is-checked]=\"checked() || indeterminate()\" [class.is-invalid]=\"invalid()\" [class.is-disabled]=\"disabled()\">\n @if (indeterminate()) { <bx-icon name=\"minus\" size=\"16\" /> } @else if (checked()) { <bx-icon name=\"check\" size=\"16\" /> }\n</span>\n",
|
|
437
|
+
styles: [":host{display:inline-flex;flex:0 0 auto;vertical-align:middle;pointer-events:none;border-radius:var(--bx-rounded-sm)}.bx-checkbox-box{box-sizing:border-box;flex-shrink:0;display:flex;align-items:center;justify-content:center;inline-size:var(--bx-checkbox-size, 1.125rem);block-size:var(--bx-checkbox-size, 1.125rem);line-height:0;background-color:var(--bx-bg-surface);border:1px solid var(--bx-border-strong);border-radius:var(--bx-rounded-sm);color:var(--bx-text-primary);transition-property:border-color;transition-duration:calc(.15s * (1 - var(--bx-reduced-motion, 0)));transition-timing-function:ease}.bx-checkbox-box.is-invalid{border-color:var(--bx-border-danger);background-color:var(--bx-bg-danger-subtle)}.bx-checkbox-box.is-checked{background-color:var(--bx-accent);border-color:var(--bx-accent);color:var(--bx-on-accent)}.bx-checkbox-box.is-checked.is-invalid{background-color:var(--bx-bg-danger);border-color:var(--bx-border-danger)}.bx-checkbox-box[data-bx-surface]{--bx-glass-shadow: none;--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-edge: var(--bx-border-strong);--bx-glass-min-opacity: .65;border:1px solid var(--bx-glass-edge);box-sizing:border-box;--bx-glass-text: var(--bx-text-primary)}.bx-checkbox-box[data-bx-surface].is-checked{--bx-glass-surface: var(--bx-accent);--bx-glass-min-opacity: 1;--bx-glass-edge: var(--bx-border-accent);--bx-glass-text: var(--bx-on-accent)}.bx-checkbox-box[data-bx-surface].is-invalid{--bx-glass-surface: var(--bx-bg-danger-subtle);--bx-glass-edge: var(--bx-border-danger);--bx-glass-text: var(--bx-text-danger)}.bx-checkbox-box[data-bx-surface]:not(.is-disabled,.is-invalid){background-image:linear-gradient(180deg,color-mix(in srgb,var(--bx-border-strong) 24%,var(--bx-glass-surface)),var(--bx-glass-surface) 55%,color-mix(in srgb,var(--bx-border-strong) 10%,var(--bx-glass-surface)))!important;border-top-color:var(--bx-border-strong);border-bottom-color:var(--bx-border-default)}.bx-checkbox-box[data-bx-surface]:not(.is-disabled,.is-invalid).is-checked{background-image:linear-gradient(180deg,color-mix(in srgb,var(--bx-color-accent-50) 24%,var(--bx-accent)),var(--bx-accent) 42%,var(--bx-accent) 65%,color-mix(in srgb,var(--bx-border-accent) 18%,var(--bx-accent)))!important;border-top-color:color-mix(in srgb,var(--bx-color-accent-100) 60%,var(--bx-accent));border-inline-color:var(--bx-accent);border-bottom-color:var(--bx-border-accent)}:host-context(.high-contrast) .bx-checkbox-box[data-bx-surface]:not(.is-disabled,.is-invalid),:host-context(.bx-high-contrast-scope) .bx-checkbox-box[data-bx-surface]:not(.is-disabled,.is-invalid){background-image:none!important;border-color:var(--bx-glass-edge)}@media(forced-colors:active){.bx-checkbox-box[data-bx-surface]:not(.is-disabled,.is-invalid){background-image:none!important;border-color:ButtonText}}\n"]
|
|
438
|
+
}]
|
|
439
|
+
}],
|
|
440
|
+
propDecorators: {
|
|
441
|
+
checked: [{
|
|
442
|
+
type: i0.Input,
|
|
443
|
+
args: [{
|
|
444
|
+
isSignal: true,
|
|
445
|
+
alias: "checked",
|
|
446
|
+
required: false
|
|
447
|
+
}]
|
|
448
|
+
}],
|
|
449
|
+
indeterminate: [{
|
|
450
|
+
type: i0.Input,
|
|
451
|
+
args: [{
|
|
452
|
+
isSignal: true,
|
|
453
|
+
alias: "indeterminate",
|
|
454
|
+
required: false
|
|
455
|
+
}]
|
|
456
|
+
}],
|
|
457
|
+
invalid: [{
|
|
458
|
+
type: i0.Input,
|
|
459
|
+
args: [{
|
|
460
|
+
isSignal: true,
|
|
461
|
+
alias: "invalid",
|
|
462
|
+
required: false
|
|
463
|
+
}]
|
|
464
|
+
}],
|
|
465
|
+
disabled: [{
|
|
466
|
+
type: i0.Input,
|
|
467
|
+
args: [{
|
|
468
|
+
isSignal: true,
|
|
469
|
+
alias: "disabled",
|
|
470
|
+
required: false
|
|
471
|
+
}]
|
|
472
|
+
}]
|
|
473
|
+
}
|
|
474
|
+
});
|
|
342
475
|
var BxError = class BxError {
|
|
343
476
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
344
477
|
minVersion: "12.0.0",
|
|
@@ -1805,59 +1938,40 @@ var Checkbox = class Checkbox extends BxCheckedControl {
|
|
|
1805
1938
|
outputs: { indeterminate: "indeterminateChange" },
|
|
1806
1939
|
usesInheritance: true,
|
|
1807
1940
|
ngImport: i0,
|
|
1808
|
-
template: "<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [loading]=\"loading()\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <label class=\"bx-inline-wrapper\" [class.is-disabled]=\"disabled()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\" [class.label-before]=\"labelPosition() === 'before'\">\n <input type=\"checkbox\" class=\"bx-visually-hidden\" [id]=\"controlId()\" [attr.name]=\"name() || null\" [attr.data-testid]=\"dataTestId()\"\n [attr.aria-label]=\"ariaLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\" [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"showError()\" [attr.aria-readonly]=\"isReadonly()\" [disabled]=\"disabled()\" [required]=\"effectiveRequired()\" [checked]=\"displayedChecked()\" [indeterminate]=\"indeterminate()\"\n (click)=\"onReadonlyClick($event)\" (change)=\"onToggle($event)\" (blur)=\"onBlur()\">\n <
|
|
1809
|
-
styles: [":host{display:block}.bx-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.bx-inline-wrapper{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none;min-height:1.5rem;vertical-align:middle}.bx-inline-wrapper.is-disabled{opacity:.5;cursor:not-allowed}.bx-inline-wrapper.is-readonly:not(.is-disabled){cursor:default}.bx-inline-label{font-size:.875rem;color:var(--bx-text-primary);line-height:1.5}.bx-inline-required{color:var(--bx-text-danger);margin-left:.125rem}.bx-
|
|
1810
|
-
dependencies: [
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
"forId",
|
|
1843
|
-
"subscriptSizing"
|
|
1844
|
-
]
|
|
1845
|
-
},
|
|
1846
|
-
{
|
|
1847
|
-
kind: "component",
|
|
1848
|
-
type: Icon,
|
|
1849
|
-
selector: "bx-icon",
|
|
1850
|
-
inputs: [
|
|
1851
|
-
"name",
|
|
1852
|
-
"size",
|
|
1853
|
-
"color",
|
|
1854
|
-
"bgColor",
|
|
1855
|
-
"strokeWidth",
|
|
1856
|
-
"decorative",
|
|
1857
|
-
"ariaLabel"
|
|
1858
|
-
]
|
|
1859
|
-
}
|
|
1860
|
-
],
|
|
1941
|
+
template: "<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [loading]=\"loading()\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <label class=\"bx-inline-wrapper\" [class.is-disabled]=\"disabled()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\" [class.label-before]=\"labelPosition() === 'before'\">\n <input type=\"checkbox\" class=\"bx-visually-hidden\" [id]=\"controlId()\" [attr.name]=\"name() || null\" [attr.data-testid]=\"dataTestId()\"\n [attr.aria-label]=\"ariaLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\" [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"showError()\" [attr.aria-readonly]=\"isReadonly()\" [disabled]=\"disabled()\" [required]=\"effectiveRequired()\" [checked]=\"displayedChecked()\" [indeterminate]=\"indeterminate()\"\n (click)=\"onReadonlyClick($event)\" (change)=\"onToggle($event)\" (blur)=\"onBlur()\">\n <bx-checkbox-indicator [checked]=\"displayedChecked()\" [indeterminate]=\"indeterminate()\" [invalid]=\"showError()\" [disabled]=\"disabled()\" />\n <span class=\"bx-inline-label\"><ng-content />{{ resolvedLabel() }}\n @if (effectiveRequired() && !resolvedHideRequiredMarker()) { <span class=\"bx-inline-required\" aria-hidden=\"true\">*</span> }\n </span>\n </label>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n",
|
|
1942
|
+
styles: [":host{display:block}.bx-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.bx-inline-wrapper{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none;min-height:1.5rem;vertical-align:middle}.bx-inline-wrapper.is-disabled{opacity:.5;cursor:not-allowed}.bx-inline-wrapper.is-readonly:not(.is-disabled){cursor:default}.bx-inline-label{font-size:.875rem;color:var(--bx-text-primary);line-height:1.5}.bx-inline-required{color:var(--bx-text-danger);margin-left:.125rem}.bx-inline-wrapper:not(.is-readonly) input:focus-visible~bx-checkbox-indicator,.bx-inline-wrapper.is-readonly.is-keyboard-focused input:focus-visible~bx-checkbox-indicator{outline:2px solid var(--bx-border-accent);outline-offset:2px}.bx-inline-wrapper.label-before .bx-inline-label{order:-1}\n"],
|
|
1943
|
+
dependencies: [{
|
|
1944
|
+
kind: "component",
|
|
1945
|
+
type: FormField,
|
|
1946
|
+
selector: "bx-form-field",
|
|
1947
|
+
inputs: [
|
|
1948
|
+
"inline",
|
|
1949
|
+
"control",
|
|
1950
|
+
"label",
|
|
1951
|
+
"tooltip",
|
|
1952
|
+
"tooltipLabel",
|
|
1953
|
+
"error",
|
|
1954
|
+
"errors",
|
|
1955
|
+
"hint",
|
|
1956
|
+
"hintEnd",
|
|
1957
|
+
"required",
|
|
1958
|
+
"hideRequiredMarker",
|
|
1959
|
+
"loading",
|
|
1960
|
+
"showLoadingIndicator",
|
|
1961
|
+
"forId",
|
|
1962
|
+
"subscriptSizing"
|
|
1963
|
+
]
|
|
1964
|
+
}, {
|
|
1965
|
+
kind: "component",
|
|
1966
|
+
type: CheckboxIndicator,
|
|
1967
|
+
selector: "bx-checkbox-indicator",
|
|
1968
|
+
inputs: [
|
|
1969
|
+
"checked",
|
|
1970
|
+
"indeterminate",
|
|
1971
|
+
"invalid",
|
|
1972
|
+
"disabled"
|
|
1973
|
+
]
|
|
1974
|
+
}],
|
|
1861
1975
|
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
1862
1976
|
});
|
|
1863
1977
|
};
|
|
@@ -1870,14 +1984,10 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
1870
1984
|
type: Component,
|
|
1871
1985
|
args: [{
|
|
1872
1986
|
selector: "bx-checkbox",
|
|
1873
|
-
imports: [
|
|
1874
|
-
BxSurfaceDirective,
|
|
1875
|
-
FormField,
|
|
1876
|
-
Icon
|
|
1877
|
-
],
|
|
1987
|
+
imports: [FormField, CheckboxIndicator],
|
|
1878
1988
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1879
|
-
template: "<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [loading]=\"loading()\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <label class=\"bx-inline-wrapper\" [class.is-disabled]=\"disabled()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\" [class.label-before]=\"labelPosition() === 'before'\">\n <input type=\"checkbox\" class=\"bx-visually-hidden\" [id]=\"controlId()\" [attr.name]=\"name() || null\" [attr.data-testid]=\"dataTestId()\"\n [attr.aria-label]=\"ariaLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\" [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"showError()\" [attr.aria-readonly]=\"isReadonly()\" [disabled]=\"disabled()\" [required]=\"effectiveRequired()\" [checked]=\"displayedChecked()\" [indeterminate]=\"indeterminate()\"\n (click)=\"onReadonlyClick($event)\" (change)=\"onToggle($event)\" (blur)=\"onBlur()\">\n <
|
|
1880
|
-
styles: [":host{display:block}.bx-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.bx-inline-wrapper{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none;min-height:1.5rem;vertical-align:middle}.bx-inline-wrapper.is-disabled{opacity:.5;cursor:not-allowed}.bx-inline-wrapper.is-readonly:not(.is-disabled){cursor:default}.bx-inline-label{font-size:.875rem;color:var(--bx-text-primary);line-height:1.5}.bx-inline-required{color:var(--bx-text-danger);margin-left:.125rem}.bx-
|
|
1989
|
+
template: "<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [loading]=\"loading()\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <label class=\"bx-inline-wrapper\" [class.is-disabled]=\"disabled()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\" [class.label-before]=\"labelPosition() === 'before'\">\n <input type=\"checkbox\" class=\"bx-visually-hidden\" [id]=\"controlId()\" [attr.name]=\"name() || null\" [attr.data-testid]=\"dataTestId()\"\n [attr.aria-label]=\"ariaLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\" [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"showError()\" [attr.aria-readonly]=\"isReadonly()\" [disabled]=\"disabled()\" [required]=\"effectiveRequired()\" [checked]=\"displayedChecked()\" [indeterminate]=\"indeterminate()\"\n (click)=\"onReadonlyClick($event)\" (change)=\"onToggle($event)\" (blur)=\"onBlur()\">\n <bx-checkbox-indicator [checked]=\"displayedChecked()\" [indeterminate]=\"indeterminate()\" [invalid]=\"showError()\" [disabled]=\"disabled()\" />\n <span class=\"bx-inline-label\"><ng-content />{{ resolvedLabel() }}\n @if (effectiveRequired() && !resolvedHideRequiredMarker()) { <span class=\"bx-inline-required\" aria-hidden=\"true\">*</span> }\n </span>\n </label>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n",
|
|
1990
|
+
styles: [":host{display:block}.bx-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.bx-inline-wrapper{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none;min-height:1.5rem;vertical-align:middle}.bx-inline-wrapper.is-disabled{opacity:.5;cursor:not-allowed}.bx-inline-wrapper.is-readonly:not(.is-disabled){cursor:default}.bx-inline-label{font-size:.875rem;color:var(--bx-text-primary);line-height:1.5}.bx-inline-required{color:var(--bx-text-danger);margin-left:.125rem}.bx-inline-wrapper:not(.is-readonly) input:focus-visible~bx-checkbox-indicator,.bx-inline-wrapper.is-readonly.is-keyboard-focused input:focus-visible~bx-checkbox-indicator{outline:2px solid var(--bx-border-accent);outline-offset:2px}.bx-inline-wrapper.label-before .bx-inline-label{order:-1}\n"]
|
|
1881
1991
|
}]
|
|
1882
1992
|
}],
|
|
1883
1993
|
propDecorators: {
|
|
@@ -2847,7 +2957,7 @@ var SearchInput = class SearchInput extends BxValueControl {
|
|
|
2847
2957
|
usesInheritance: true,
|
|
2848
2958
|
ngImport: i0,
|
|
2849
2959
|
template: "<bx-form-field [control]=\"fieldControl\" [label]=\"label()\" [tooltip]=\"tooltip()\" [showLoadingIndicator]=\"false\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [hideRequiredMarker]=\"resolvedHideRequiredMarker()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <div class=\"bx-search-input-wrapper\" bxSurface [class.is-invalid]=\"showError()\" [class.is-disabled]=\"disabled()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\"\n [bxTooltip]=\"searchOverflow.text() | bxTruncatedText: searchOverflow.truncated(): resolvedTooltipOnTruncate()\" bxTooltipTouch=\"longpress\" placement=\"top\">\n <span class=\"bx-search-icon-left\" aria-hidden=\"true\">\n @if (isBusy() && !showRetry()) { <bx-loading-spinner [size]=\"16\" [decorative]=\"true\" /> }\n @else { <bx-icon name=\"search\" size=\"16\" /> }\n </span>\n <input class=\"bx-native-search-input\" type=\"search\" bxTruncate #searchOverflow=\"bxTruncate\" [id]=\"controlId()\" [attr.name]=\"name() || null\"\n [placeholder]=\"resolvedPlaceholder()\" [attr.data-testid]=\"dataTestId()\" [attr.autocomplete]=\"autocomplete()\"\n [attr.aria-label]=\"ariaLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\" [attr.aria-describedby]=\"searchDescribedBy()\" [attr.aria-busy]=\"isBusy()\"\n [attr.aria-invalid]=\"showError()\" [required]=\"effectiveRequired()\" [readOnly]=\"isReadonly()\" [disabled]=\"disabled()\"\n [value]=\"internalValue() ?? ''\" (input)=\"onInput($event)\" (blur)=\"onBlur()\"\n (compositionstart)=\"onCompositionStart()\" (compositionend)=\"onCompositionEnd($event)\">\n @if (internalValue() && !isReadonly()) {\n <button type=\"button\" class=\"bx-search-clear-btn\" [attr.aria-label]=\"resolvedClearLabel()\" [disabled]=\"disabled() || isReadonly()\" (click)=\"clear()\"><bx-icon name=\"x\" size=\"16\" /></button>\n }\n </div>\n <div class=\"bx-search-feedback\" [class.has-status]=\"showStatus()\">\n <div class=\"bx-search-status\" [class.cdk-visually-hidden]=\"!showStatus()\">\n @if (showRetry()) {\n <span class=\"bx-search-status-reserve\" aria-hidden=\"true\">{{ resolvedRetainedError() }}</span>\n <span class=\"bx-search-status-reserve\" aria-hidden=\"true\">{{ resolvedLoadingLabel() || resolvedLoadingAriaLabel() }}</span>\n }\n <span [id]=\"controlId() + '-search-status'\" role=\"status\" [class.bx-search-error]=\"!isBusy() && !!resolvedLoadError()\">{{ isBusy() ? (resolvedLoadingLabel() || resolvedLoadingAriaLabel()) : resolvedLoadError() }}</span>\n </div>\n @if (showRetry()) {\n <button bx-button type=\"button\" [variant]=\"retryConfig().variant ?? 'text'\" [color]=\"retryConfig().color ?? 'primary'\"\n [outlined]=\"retryConfig().outlined ?? false\" [class]=\"retryConfig().buttonClass ?? ''\" [attr.aria-label]=\"resolvedRetryAriaLabel()\"\n [disabled]=\"disabled() || isReadonly()\" [loading]=\"isBusy()\" (click)=\"retrySearch()\"><bx-icon name=\"rotate-cw\" size=\"16\" />{{ resolvedRetryLabel() }}</button>\n }\n </div>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n",
|
|
2850
|
-
styles: [":host{display:block;width:100%;min-inline-size:0}.bx-search-input-wrapper{display:flex;align-items:center;width:100%;box-sizing:border-box;background-color:var(--bx-bg-surface);border:1px solid var(--bx-border-default);border-radius:.25rem;transition:border-color .15s ease,box-shadow .15s ease;min-height:2.5rem;padding:.25rem .5rem .25rem .75rem;gap:.5rem}.bx-search-input-wrapper:hover:not(.is-disabled,.is-readonly){border-color:var(--bx-border-strong)}.bx-search-input-wrapper:focus-within:not(.is-disabled,.is-readonly){border-color:var(--bx-border-brand);box-shadow:0 0 0 3px var(--bx-primary-subtle)}.bx-search-input-wrapper.is-invalid{border-color:var(--bx-border-danger)}.bx-search-input-wrapper.is-invalid:focus-within:not(.is-readonly){box-shadow:0 0 0 3px var(--bx-bg-danger-subtle)}.bx-search-input-wrapper.is-disabled{background-color:var(--bx-bg-element);opacity:.7;cursor:not-allowed}.bx-search-icon-left{display:inline-flex;align-items:center;justify-content:center;inline-size:1rem;block-size:1rem;color:var(--bx-text-secondary);flex-shrink:0}.bx-native-search-input{flex:1 1 0;min-width:0;width:0;box-sizing:border-box;padding:.5rem 0;background:transparent;border:none;outline:none;appearance:none;font-family:inherit;font-size:.875rem;color:var(--bx-text-heading)}.bx-native-search-input::-webkit-search-cancel-button,.bx-native-search-input::-webkit-search-decoration{appearance:none;display:none}.bx-native-search-input::placeholder{color:var(--bx-text-secondary)}.bx-native-search-input:disabled{color:var(--bx-text-secondary);cursor:not-allowed}.bx-native-search-input[readonly]:not(:disabled){cursor:default}.bx-search-clear-btn{display:flex;align-items:center;justify-content:center;background:transparent;border:none;padding:.25rem;
|
|
2960
|
+
styles: [":host{display:block;width:100%;min-inline-size:0}.bx-search-input-wrapper{display:flex;align-items:center;width:100%;box-sizing:border-box;background-color:var(--bx-bg-surface);border:1px solid var(--bx-border-default);border-radius:.25rem;transition:border-color .15s ease,box-shadow .15s ease;min-height:2.5rem;padding:.25rem .5rem .25rem .75rem;gap:.5rem}.bx-search-input-wrapper:hover:not(.is-disabled,.is-readonly){border-color:var(--bx-border-strong)}.bx-search-input-wrapper:focus-within:not(.is-disabled,.is-readonly){border-color:var(--bx-border-brand);box-shadow:0 0 0 3px var(--bx-primary-subtle)}.bx-search-input-wrapper.is-invalid{border-color:var(--bx-border-danger)}.bx-search-input-wrapper.is-invalid:focus-within:not(.is-readonly){box-shadow:0 0 0 3px var(--bx-bg-danger-subtle)}.bx-search-input-wrapper.is-disabled{background-color:var(--bx-bg-element);opacity:.7;cursor:not-allowed}.bx-search-icon-left{display:inline-flex;align-items:center;justify-content:center;inline-size:1rem;block-size:1rem;color:var(--bx-text-secondary);flex-shrink:0}.bx-native-search-input{flex:1 1 0;min-width:0;width:0;box-sizing:border-box;padding:.5rem 0;background:transparent;border:none;outline:none;appearance:none;font-family:inherit;font-size:.875rem;color:var(--bx-text-heading)}.bx-native-search-input::-webkit-search-cancel-button,.bx-native-search-input::-webkit-search-decoration{appearance:none;display:none}.bx-native-search-input::placeholder{color:var(--bx-text-secondary)}.bx-native-search-input:disabled{color:var(--bx-text-secondary);cursor:not-allowed}.bx-native-search-input[readonly]:not(:disabled){cursor:default}.bx-search-clear-btn{transition-property:color;transition-duration:calc(.15s * (1 - var(--bx-reduced-motion, 0)));transition-timing-function:ease;display:flex;align-items:center;justify-content:center;box-sizing:border-box;background:transparent;border:none;padding:.25rem;inline-size:1.5rem;block-size:1.5rem;border-radius:.25rem;color:var(--bx-text-secondary);cursor:pointer;flex-shrink:0}.bx-search-clear-btn:focus-visible{outline:2px solid var(--bx-border-brand);outline-offset:0}.bx-search-clear-btn:hover:not(:disabled){color:var(--bx-text-primary);background:var(--bx-bg-element-hover)}.bx-search-clear-btn:disabled{cursor:not-allowed;opacity:.5}.bx-search-clear-btn.hidden{opacity:0;pointer-events:none;-webkit-user-select:none;user-select:none}.bx-search-feedback{display:grid;grid-template-columns:minmax(0,1fr);justify-items:start;gap:.5rem;color:var(--bx-text-secondary);font-size:.875rem}.bx-search-feedback.has-status{padding-block-start:var(--bx-search-feedback-gap, .5rem)}:host(.bx-readonly):not(:has(input:disabled)) button:disabled{cursor:default}.bx-search-status{display:grid;inline-size:100%;min-inline-size:0;line-height:1.5}.bx-search-status>span{grid-area:1/1;overflow-wrap:anywhere}.bx-search-status-reserve{visibility:hidden}.bx-search-error{color:var(--bx-text-danger)}.bx-search-input-wrapper[data-bx-surface]{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-shadow: none}.bx-search-input-wrapper[data-bx-surface].is-invalid{--bx-glass-edge: var(--bx-border-danger)}.bx-search-input-wrapper[data-bx-surface]{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-min-opacity: .45;--bx-glass-edge: var(--bx-border-default);--bx-glass-shadow: none;border:1px solid var(--bx-glass-edge);border-radius:.75rem}.bx-search-input-wrapper[data-bx-surface]:after{display:none}.bx-search-input-wrapper[data-bx-surface]:focus-within:not(.is-disabled,:disabled,.is-readonly,[readonly],[aria-readonly=true],:has([readonly],[aria-readonly=true])),.bx-search-input-wrapper[data-bx-surface]:focus-visible:not(:disabled,[readonly],[aria-readonly=true]),.bx-search-input-wrapper[data-bx-surface].is-open:not(:disabled),.bx-search-input-wrapper[data-bx-surface].is-readonly.is-keyboard-focused:focus-within,.bx-search-input-wrapper[data-bx-surface]:has(.bx-readonly.is-keyboard-focused):focus-within{--bx-glass-edge: var(--bx-border-brand);outline:2px solid var(--bx-border-brand);outline-offset:-2px;--bx-glass-shadow: none}.bx-search-input-wrapper[data-bx-surface].is-invalid{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-min-opacity: .45;--bx-glass-edge: color-mix(in srgb, var(--bx-text-danger) 40%, var(--bx-border-default));border-block-end-color:var(--bx-glass-edge);--bx-glass-shadow: 0 8px 18px -10px color-mix(in srgb, var(--bx-text-danger) 65%, transparent);outline-color:var(--bx-border-danger)}\n"],
|
|
2851
2961
|
dependencies: [
|
|
2852
2962
|
{
|
|
2853
2963
|
kind: "directive",
|
|
@@ -2972,7 +3082,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2972
3082
|
],
|
|
2973
3083
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2974
3084
|
template: "<bx-form-field [control]=\"fieldControl\" [label]=\"label()\" [tooltip]=\"tooltip()\" [showLoadingIndicator]=\"false\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [hideRequiredMarker]=\"resolvedHideRequiredMarker()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <div class=\"bx-search-input-wrapper\" bxSurface [class.is-invalid]=\"showError()\" [class.is-disabled]=\"disabled()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\"\n [bxTooltip]=\"searchOverflow.text() | bxTruncatedText: searchOverflow.truncated(): resolvedTooltipOnTruncate()\" bxTooltipTouch=\"longpress\" placement=\"top\">\n <span class=\"bx-search-icon-left\" aria-hidden=\"true\">\n @if (isBusy() && !showRetry()) { <bx-loading-spinner [size]=\"16\" [decorative]=\"true\" /> }\n @else { <bx-icon name=\"search\" size=\"16\" /> }\n </span>\n <input class=\"bx-native-search-input\" type=\"search\" bxTruncate #searchOverflow=\"bxTruncate\" [id]=\"controlId()\" [attr.name]=\"name() || null\"\n [placeholder]=\"resolvedPlaceholder()\" [attr.data-testid]=\"dataTestId()\" [attr.autocomplete]=\"autocomplete()\"\n [attr.aria-label]=\"ariaLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\" [attr.aria-describedby]=\"searchDescribedBy()\" [attr.aria-busy]=\"isBusy()\"\n [attr.aria-invalid]=\"showError()\" [required]=\"effectiveRequired()\" [readOnly]=\"isReadonly()\" [disabled]=\"disabled()\"\n [value]=\"internalValue() ?? ''\" (input)=\"onInput($event)\" (blur)=\"onBlur()\"\n (compositionstart)=\"onCompositionStart()\" (compositionend)=\"onCompositionEnd($event)\">\n @if (internalValue() && !isReadonly()) {\n <button type=\"button\" class=\"bx-search-clear-btn\" [attr.aria-label]=\"resolvedClearLabel()\" [disabled]=\"disabled() || isReadonly()\" (click)=\"clear()\"><bx-icon name=\"x\" size=\"16\" /></button>\n }\n </div>\n <div class=\"bx-search-feedback\" [class.has-status]=\"showStatus()\">\n <div class=\"bx-search-status\" [class.cdk-visually-hidden]=\"!showStatus()\">\n @if (showRetry()) {\n <span class=\"bx-search-status-reserve\" aria-hidden=\"true\">{{ resolvedRetainedError() }}</span>\n <span class=\"bx-search-status-reserve\" aria-hidden=\"true\">{{ resolvedLoadingLabel() || resolvedLoadingAriaLabel() }}</span>\n }\n <span [id]=\"controlId() + '-search-status'\" role=\"status\" [class.bx-search-error]=\"!isBusy() && !!resolvedLoadError()\">{{ isBusy() ? (resolvedLoadingLabel() || resolvedLoadingAriaLabel()) : resolvedLoadError() }}</span>\n </div>\n @if (showRetry()) {\n <button bx-button type=\"button\" [variant]=\"retryConfig().variant ?? 'text'\" [color]=\"retryConfig().color ?? 'primary'\"\n [outlined]=\"retryConfig().outlined ?? false\" [class]=\"retryConfig().buttonClass ?? ''\" [attr.aria-label]=\"resolvedRetryAriaLabel()\"\n [disabled]=\"disabled() || isReadonly()\" [loading]=\"isBusy()\" (click)=\"retrySearch()\"><bx-icon name=\"rotate-cw\" size=\"16\" />{{ resolvedRetryLabel() }}</button>\n }\n </div>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n",
|
|
2975
|
-
styles: [":host{display:block;width:100%;min-inline-size:0}.bx-search-input-wrapper{display:flex;align-items:center;width:100%;box-sizing:border-box;background-color:var(--bx-bg-surface);border:1px solid var(--bx-border-default);border-radius:.25rem;transition:border-color .15s ease,box-shadow .15s ease;min-height:2.5rem;padding:.25rem .5rem .25rem .75rem;gap:.5rem}.bx-search-input-wrapper:hover:not(.is-disabled,.is-readonly){border-color:var(--bx-border-strong)}.bx-search-input-wrapper:focus-within:not(.is-disabled,.is-readonly){border-color:var(--bx-border-brand);box-shadow:0 0 0 3px var(--bx-primary-subtle)}.bx-search-input-wrapper.is-invalid{border-color:var(--bx-border-danger)}.bx-search-input-wrapper.is-invalid:focus-within:not(.is-readonly){box-shadow:0 0 0 3px var(--bx-bg-danger-subtle)}.bx-search-input-wrapper.is-disabled{background-color:var(--bx-bg-element);opacity:.7;cursor:not-allowed}.bx-search-icon-left{display:inline-flex;align-items:center;justify-content:center;inline-size:1rem;block-size:1rem;color:var(--bx-text-secondary);flex-shrink:0}.bx-native-search-input{flex:1 1 0;min-width:0;width:0;box-sizing:border-box;padding:.5rem 0;background:transparent;border:none;outline:none;appearance:none;font-family:inherit;font-size:.875rem;color:var(--bx-text-heading)}.bx-native-search-input::-webkit-search-cancel-button,.bx-native-search-input::-webkit-search-decoration{appearance:none;display:none}.bx-native-search-input::placeholder{color:var(--bx-text-secondary)}.bx-native-search-input:disabled{color:var(--bx-text-secondary);cursor:not-allowed}.bx-native-search-input[readonly]:not(:disabled){cursor:default}.bx-search-clear-btn{display:flex;align-items:center;justify-content:center;background:transparent;border:none;padding:.25rem;
|
|
3085
|
+
styles: [":host{display:block;width:100%;min-inline-size:0}.bx-search-input-wrapper{display:flex;align-items:center;width:100%;box-sizing:border-box;background-color:var(--bx-bg-surface);border:1px solid var(--bx-border-default);border-radius:.25rem;transition:border-color .15s ease,box-shadow .15s ease;min-height:2.5rem;padding:.25rem .5rem .25rem .75rem;gap:.5rem}.bx-search-input-wrapper:hover:not(.is-disabled,.is-readonly){border-color:var(--bx-border-strong)}.bx-search-input-wrapper:focus-within:not(.is-disabled,.is-readonly){border-color:var(--bx-border-brand);box-shadow:0 0 0 3px var(--bx-primary-subtle)}.bx-search-input-wrapper.is-invalid{border-color:var(--bx-border-danger)}.bx-search-input-wrapper.is-invalid:focus-within:not(.is-readonly){box-shadow:0 0 0 3px var(--bx-bg-danger-subtle)}.bx-search-input-wrapper.is-disabled{background-color:var(--bx-bg-element);opacity:.7;cursor:not-allowed}.bx-search-icon-left{display:inline-flex;align-items:center;justify-content:center;inline-size:1rem;block-size:1rem;color:var(--bx-text-secondary);flex-shrink:0}.bx-native-search-input{flex:1 1 0;min-width:0;width:0;box-sizing:border-box;padding:.5rem 0;background:transparent;border:none;outline:none;appearance:none;font-family:inherit;font-size:.875rem;color:var(--bx-text-heading)}.bx-native-search-input::-webkit-search-cancel-button,.bx-native-search-input::-webkit-search-decoration{appearance:none;display:none}.bx-native-search-input::placeholder{color:var(--bx-text-secondary)}.bx-native-search-input:disabled{color:var(--bx-text-secondary);cursor:not-allowed}.bx-native-search-input[readonly]:not(:disabled){cursor:default}.bx-search-clear-btn{transition-property:color;transition-duration:calc(.15s * (1 - var(--bx-reduced-motion, 0)));transition-timing-function:ease;display:flex;align-items:center;justify-content:center;box-sizing:border-box;background:transparent;border:none;padding:.25rem;inline-size:1.5rem;block-size:1.5rem;border-radius:.25rem;color:var(--bx-text-secondary);cursor:pointer;flex-shrink:0}.bx-search-clear-btn:focus-visible{outline:2px solid var(--bx-border-brand);outline-offset:0}.bx-search-clear-btn:hover:not(:disabled){color:var(--bx-text-primary);background:var(--bx-bg-element-hover)}.bx-search-clear-btn:disabled{cursor:not-allowed;opacity:.5}.bx-search-clear-btn.hidden{opacity:0;pointer-events:none;-webkit-user-select:none;user-select:none}.bx-search-feedback{display:grid;grid-template-columns:minmax(0,1fr);justify-items:start;gap:.5rem;color:var(--bx-text-secondary);font-size:.875rem}.bx-search-feedback.has-status{padding-block-start:var(--bx-search-feedback-gap, .5rem)}:host(.bx-readonly):not(:has(input:disabled)) button:disabled{cursor:default}.bx-search-status{display:grid;inline-size:100%;min-inline-size:0;line-height:1.5}.bx-search-status>span{grid-area:1/1;overflow-wrap:anywhere}.bx-search-status-reserve{visibility:hidden}.bx-search-error{color:var(--bx-text-danger)}.bx-search-input-wrapper[data-bx-surface]{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-shadow: none}.bx-search-input-wrapper[data-bx-surface].is-invalid{--bx-glass-edge: var(--bx-border-danger)}.bx-search-input-wrapper[data-bx-surface]{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-min-opacity: .45;--bx-glass-edge: var(--bx-border-default);--bx-glass-shadow: none;border:1px solid var(--bx-glass-edge);border-radius:.75rem}.bx-search-input-wrapper[data-bx-surface]:after{display:none}.bx-search-input-wrapper[data-bx-surface]:focus-within:not(.is-disabled,:disabled,.is-readonly,[readonly],[aria-readonly=true],:has([readonly],[aria-readonly=true])),.bx-search-input-wrapper[data-bx-surface]:focus-visible:not(:disabled,[readonly],[aria-readonly=true]),.bx-search-input-wrapper[data-bx-surface].is-open:not(:disabled),.bx-search-input-wrapper[data-bx-surface].is-readonly.is-keyboard-focused:focus-within,.bx-search-input-wrapper[data-bx-surface]:has(.bx-readonly.is-keyboard-focused):focus-within{--bx-glass-edge: var(--bx-border-brand);outline:2px solid var(--bx-border-brand);outline-offset:-2px;--bx-glass-shadow: none}.bx-search-input-wrapper[data-bx-surface].is-invalid{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-min-opacity: .45;--bx-glass-edge: color-mix(in srgb, var(--bx-text-danger) 40%, var(--bx-border-default));border-block-end-color:var(--bx-glass-edge);--bx-glass-shadow: 0 8px 18px -10px color-mix(in srgb, var(--bx-text-danger) 65%, transparent);outline-color:var(--bx-border-danger)}\n"]
|
|
2976
3086
|
}]
|
|
2977
3087
|
}],
|
|
2978
3088
|
ctorParameters: () => [],
|
|
@@ -3553,6 +3663,10 @@ var BxSelectBase = class BxSelectBase extends BxValueControl {
|
|
|
3553
3663
|
debouncing = signal(false, ...ngDevMode ? [{ debugName: "debouncing" }] : /* istanbul ignore next */ []);
|
|
3554
3664
|
searchRequest = signal(false, ...ngDevMode ? [{ debugName: "searchRequest" }] : /* istanbul ignore next */ []);
|
|
3555
3665
|
knownOptions = signal([], ...ngDevMode ? [{ debugName: "knownOptions" }] : /* istanbul ignore next */ []);
|
|
3666
|
+
hasSelection = computed(() => this.internalValue() !== null && this.internalValue() !== void 0, ...ngDevMode ? [{ debugName: "hasSelection" }] : /* istanbul ignore next */ []);
|
|
3667
|
+
showClear = computed(() => this.clearable() && this.hasSelection() && !this.isReadonly(), ...ngDevMode ? [{ debugName: "showClear" }] : /* istanbul ignore next */ []);
|
|
3668
|
+
resolvedClearLabel = computed(() => resolveText(this.clearLabel(), this.i18n), ...ngDevMode ? [{ debugName: "resolvedClearLabel" }] : /* istanbul ignore next */ []);
|
|
3669
|
+
resolvedClearTooltip = computed(() => resolveText(this.clearTooltip() ?? this.clearLabel(), this.i18n), ...ngDevMode ? [{ debugName: "resolvedClearTooltip" }] : /* istanbul ignore next */ []);
|
|
3556
3670
|
panelScrollStrategy = this.overlay.scrollStrategies.noop();
|
|
3557
3671
|
isPanelAttached = signal(false, ...ngDevMode ? [{ debugName: "isPanelAttached" }] : /* istanbul ignore next */ []);
|
|
3558
3672
|
searchTerm = computed(() => this.searchValue(), ...ngDevMode ? [{ debugName: "searchTerm" }] : /* istanbul ignore next */ []);
|
|
@@ -3601,6 +3715,9 @@ var BxSelectBase = class BxSelectBase extends BxValueControl {
|
|
|
3601
3715
|
overflowTagTooltip = computed(() => this.selectedOptions().slice(this.visibleTagCount()).map((option) => resolveText(option.label, this.i18n)).join(", "), ...ngDevMode ? [{ debugName: "overflowTagTooltip" }] : /* istanbul ignore next */ []);
|
|
3602
3716
|
resolvedLoadingAriaLabel = computed(() => resolveText(this.loadingAriaLabel(), this.i18n), ...ngDevMode ? [{ debugName: "resolvedLoadingAriaLabel" }] : /* istanbul ignore next */ []);
|
|
3603
3717
|
resolvedLoadingLabel = computed(() => resolveText(this.loadingLabel(), this.i18n), ...ngDevMode ? [{ debugName: "resolvedLoadingLabel" }] : /* istanbul ignore next */ []);
|
|
3718
|
+
clearable = input(true, ...ngDevMode ? [{ debugName: "clearable" }] : /* istanbul ignore next */ []);
|
|
3719
|
+
clearLabel = input("Clear selection", ...ngDevMode ? [{ debugName: "clearLabel" }] : /* istanbul ignore next */ []);
|
|
3720
|
+
clearTooltip = input(void 0, ...ngDevMode ? [{ debugName: "clearTooltip" }] : /* istanbul ignore next */ []);
|
|
3604
3721
|
selectionDisplay = input("text", ...ngDevMode ? [{ debugName: "selectionDisplay" }] : /* istanbul ignore next */ []);
|
|
3605
3722
|
tagConfig = input({}, ...ngDevMode ? [{ debugName: "tagConfig" }] : /* istanbul ignore next */ []);
|
|
3606
3723
|
overflowTagConfig = input({}, ...ngDevMode ? [{ debugName: "overflowTagConfig" }] : /* istanbul ignore next */ []);
|
|
@@ -3807,6 +3924,14 @@ var BxSelectBase = class BxSelectBase extends BxValueControl {
|
|
|
3807
3924
|
if (this.originRef?.nativeElement.contains(clickTarget)) return;
|
|
3808
3925
|
this.close();
|
|
3809
3926
|
}
|
|
3927
|
+
clearSelectedValue(value) {
|
|
3928
|
+
if (this.disabled() || this.isReadonly()) return false;
|
|
3929
|
+
this.updateValue(value);
|
|
3930
|
+
this.close();
|
|
3931
|
+
this.markAsTouched();
|
|
3932
|
+
this.focus({ preventScroll: true });
|
|
3933
|
+
return true;
|
|
3934
|
+
}
|
|
3810
3935
|
onSearchChange(value) {
|
|
3811
3936
|
clearTimeout(this.searchTimeout);
|
|
3812
3937
|
this.debouncing.set(true);
|
|
@@ -3851,6 +3976,27 @@ var BxSelectBase = class BxSelectBase extends BxValueControl {
|
|
|
3851
3976
|
type: BxSelectBase,
|
|
3852
3977
|
isStandalone: true,
|
|
3853
3978
|
inputs: {
|
|
3979
|
+
clearable: {
|
|
3980
|
+
classPropertyName: "clearable",
|
|
3981
|
+
publicName: "clearable",
|
|
3982
|
+
isSignal: true,
|
|
3983
|
+
isRequired: false,
|
|
3984
|
+
transformFunction: null
|
|
3985
|
+
},
|
|
3986
|
+
clearLabel: {
|
|
3987
|
+
classPropertyName: "clearLabel",
|
|
3988
|
+
publicName: "clearLabel",
|
|
3989
|
+
isSignal: true,
|
|
3990
|
+
isRequired: false,
|
|
3991
|
+
transformFunction: null
|
|
3992
|
+
},
|
|
3993
|
+
clearTooltip: {
|
|
3994
|
+
classPropertyName: "clearTooltip",
|
|
3995
|
+
publicName: "clearTooltip",
|
|
3996
|
+
isSignal: true,
|
|
3997
|
+
isRequired: false,
|
|
3998
|
+
transformFunction: null
|
|
3999
|
+
},
|
|
3854
4000
|
selectionDisplay: {
|
|
3855
4001
|
classPropertyName: "selectionDisplay",
|
|
3856
4002
|
publicName: "selectionDisplay",
|
|
@@ -4067,6 +4213,30 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4067
4213
|
type: i0.ViewChild,
|
|
4068
4214
|
args: ["labelOverflow", { isSignal: true }]
|
|
4069
4215
|
}],
|
|
4216
|
+
clearable: [{
|
|
4217
|
+
type: i0.Input,
|
|
4218
|
+
args: [{
|
|
4219
|
+
isSignal: true,
|
|
4220
|
+
alias: "clearable",
|
|
4221
|
+
required: false
|
|
4222
|
+
}]
|
|
4223
|
+
}],
|
|
4224
|
+
clearLabel: [{
|
|
4225
|
+
type: i0.Input,
|
|
4226
|
+
args: [{
|
|
4227
|
+
isSignal: true,
|
|
4228
|
+
alias: "clearLabel",
|
|
4229
|
+
required: false
|
|
4230
|
+
}]
|
|
4231
|
+
}],
|
|
4232
|
+
clearTooltip: [{
|
|
4233
|
+
type: i0.Input,
|
|
4234
|
+
args: [{
|
|
4235
|
+
isSignal: true,
|
|
4236
|
+
alias: "clearTooltip",
|
|
4237
|
+
required: false
|
|
4238
|
+
}]
|
|
4239
|
+
}],
|
|
4070
4240
|
selectionDisplay: [{
|
|
4071
4241
|
type: i0.Input,
|
|
4072
4242
|
args: [{
|
|
@@ -4274,6 +4444,13 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4274
4444
|
});
|
|
4275
4445
|
var Select = class Select extends BxSelectBase {
|
|
4276
4446
|
selectionChange = output();
|
|
4447
|
+
clearSelection() {
|
|
4448
|
+
if (!this.clearSelectedValue(null)) return;
|
|
4449
|
+
this.selectionChange.emit({
|
|
4450
|
+
value: null,
|
|
4451
|
+
source: "clear"
|
|
4452
|
+
});
|
|
4453
|
+
}
|
|
4277
4454
|
isSelected(value) {
|
|
4278
4455
|
const selected = this.internalValue();
|
|
4279
4456
|
return selected !== null && this.compareWith()(selected, value);
|
|
@@ -4304,8 +4481,8 @@ var Select = class Select extends BxSelectBase {
|
|
|
4304
4481
|
outputs: { selectionChange: "selectionChange" },
|
|
4305
4482
|
usesInheritance: true,
|
|
4306
4483
|
ngImport: i0,
|
|
4307
|
-
template: "<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [showLoadingIndicator]=\"false\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <button type=\"button\" role=\"combobox\" aria-haspopup=\"listbox\" [bxTooltip]=\"resolvedTooltipOnTruncate() ? (selectionDisplay() === 'tags' ? selectedOptionLabel() : truncatedSelectionTooltip()) : ''\" [bxTooltipHover]=\"selectionDisplay() !== 'tags'\" [bxTooltipTouch]=\"selectionDisplay() === 'tags' ? 'none' : 'longpress'\" cdkOverlayOrigin bxSurface #origin=\"cdkOverlayOrigin\" class=\"bx-select-trigger\"\n [class.is-invalid]=\"showError()\" [class.is-outline]=\"resolvedAppearance() === 'outline'\" [class.is-open]=\"isOpen()\" [class.is-floating]=\"isFloating()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\"\n [id]=\"controlId()\" [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"describedBy()\" [attr.aria-invalid]=\"showError()\" [attr.aria-required]=\"required()\" [attr.aria-readonly]=\"isReadonly()\" [attr.aria-busy]=\"loading() || pending() || isSearching()\"\n [disabled]=\"disabled()\" (click)=\"toggleOpen()\" (keydown)=\"onTriggerKey($event)\" (blur)=\"onTriggerBlur()\"\n [attr.aria-expanded]=\"isOpen()\" [attr.aria-controls]=\"isPanelAttached() ? controlId() + '-options' : null\">\n <div class=\"bx-select-container\">\n @if (label()) {\n <span class=\"bx-floating-label\"><span [bxTruncate]=\"!isFloating()\" #labelOverflow=\"bxTruncate\">{{ resolvedLabel() }}</span>\n @if (required() && !resolvedHideRequiredMarker()) { <span class=\"bx-field-required\" aria-hidden=\"true\">*</span> }\n </span>\n }\n <span class=\"bx-select-value\" [class.is-placeholder]=\"!selectedOptionLabel()\" [bxTruncate]=\"!(selectionDisplay() === 'tags' && selectedOptions().length) && !triggerTemplate()\" #valueOverflow=\"bxTruncate\">\n @if (triggerTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"triggerContext()\" />\n } @else if (selectionDisplay() === 'tags' && selectedOptions().length) {\n <span class=\"bx-selected-tags\">\n @for (option of visibleTags(); track option.value) {\n <bx-tag [text]=\"option.label\" [config]=\"selectionTagConfig(option)\" [disabled]=\"disabled() || !!option.disabled\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n @if (selectedOptions().length > visibleTagCount()) {\n <bx-tag class=\"bx-overflow-tag\" [text]=\"overflowTagLabel()\" [config]=\"overflowTagConfig()\" [tooltip]=\"overflowTagTooltip()\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n </span>\n } @else { {{ selectedOptionLabel() || (isFloating() || !label() ? resolvedPlaceholder() : '') }} }\n </span>\n </div>\n <ng-content select=\"[bxSuffix]\" />\n <span class=\"bx-select-caret\" aria-hidden=\"true\">\n @if (loading() || pending() || isSearching()) { <bx-loading-spinner [size]=\"16\" [decorative]=\"true\" /> }\n @else { <bx-icon name=\"chevron-down\" size=\"16\" /> }\n </span>\n </button>\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"origin\" [cdkConnectedOverlayOpen]=\"isPanelAttached()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\" [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayScrollStrategy]=\"panelScrollStrategy\" [cdkConnectedOverlayUsePopover]=\"overlayPopoverLocation(origin.elementRef.nativeElement)\"\n [cdkConnectedOverlayWidth]=\"origin.elementRef.nativeElement.offsetWidth\"\n (overlayOutsideClick)=\"onOutsideClick($event)\" (attach)=\"onPanelAttach()\" (detach)=\"onPanelDetach()\" (positionChange)=\"refreshPanel()\">\n <div class=\"bx-select-panel\" [class]=\"panelClass()\" data-bx-surface=\"solid\" tabindex=\"-1\" (keydown)=\"onPanelKey($event)\">\n @if (isSearchable()) {\n <div class=\"bx-select-search-container\">\n <bx-search-input #searchInput [value]=\"searchValue()\" [placeholder]=\"resolvedSearchPlaceholder()\" [ariaLabel]=\"resolvedSearchPlaceholder()\"\n (search)=\"onSearchChange($event)\" (keydown.enter)=\"$event.preventDefault()\" />\n </div>\n }\n\n <div class=\"bx-select-menu-container\" bxLoadMore #pagination=\"bxLoadMore\" [loadMoreHasMore]=\"hasMore()\" [loadMoreSuppressed]=\"isSearching()\" [loadMoreLoading]=\"loading()\"\n [loadMoreDisabled]=\"disabled() || isReadonly()\" [loadMoreError]=\"loadError()\" [loadMoreConfig]=\"loadMoreConfig()\"\n [loadMoreTemplate]=\"loadMoreTemplate()\" [loadMoreRevision]=\"options()\" (loadMore)=\"requestMore($event)\">\n <div role=\"listbox\" [hidden]=\"isSearching()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [id]=\"controlId() + '-options'\">\n @for (option of filteredOptions(); track option.value; let index = $index) {\n @if (option.resolvedGroup && (index === 0 || filteredOptions()[index - 1].resolvedGroup !== option.resolvedGroup)) {\n <div class=\"bx-select-group\" [id]=\"controlId() + '-group-' + index\">{{ option.resolvedGroup }}</div>\n }\n <button type=\"button\" class=\"bx-select-option\" role=\"option\" tabindex=\"-1\" [attr.aria-selected]=\"isSelected(option.value)\"\n [disabled]=\"option.disabled || option.groupDisabled || false\" (click)=\"selectOption(option)\">\n <span class=\"bx-select-check-placeholder\" aria-hidden=\"true\">\n @if (isSelected(option.value)) { <bx-icon name=\"check\" size=\"16\" /> }\n </span>\n @if (option.icon) { <bx-icon [name]=\"option.icon\" size=\"16\" /> }\n @if (optionTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: option, selected: isSelected(option.value), index: index }\" />\n } @else { <span>{{ option.resolvedStr }}</span> }\n </button>\n } @empty {\n @if (!loading()) { <div class=\"bx-select-empty\" role=\"status\">{{ resolvedEmptyMessage() }}</div> }\n }\n </div>\n @if (isSearching()) {\n <div class=\"bx-select-search-state\" role=\"status\" [attr.aria-label]=\"resolvedLoadingLabel() || resolvedLoadingAriaLabel()\">\n @if (resolvedLoadingLabel()) { <span>{{ resolvedLoadingLabel() }}</span> }\n @else { <bx-loading-spinner [size]=\"20\" [decorative]=\"true\" /> }\n </div>\n } @else if (loading() && !pagination.actionVisible()) { <div class=\"bx-select-loading\"><bx-loading-indicator [size]=\"16\" [label]=\"loadingLabel() ?? loadingAriaLabel()\" /></div> }\n </div>\n </div>\n </ng-template>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n",
|
|
4308
|
-
styles: [":host{display:block;width:100%}.bx-select-trigger{position:relative;display:flex;align-items:center;width:100%;box-sizing:border-box;background-color:var(--bx-bg-neutral);border-radius:.25rem .25rem 0 0;border:none;border-bottom:1px solid var(--bx-border-strong);padding:0
|
|
4484
|
+
template: "<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [showLoadingIndicator]=\"false\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <div class=\"bx-select-control\" [class.has-clear]=\"showClear()\">\n <button type=\"button\" role=\"combobox\" aria-haspopup=\"listbox\" [bxTooltip]=\"resolvedTooltipOnTruncate() ? (selectionDisplay() === 'tags' ? selectedOptionLabel() : truncatedSelectionTooltip()) : ''\" [bxTooltipHover]=\"selectionDisplay() !== 'tags'\" [bxTooltipTouch]=\"selectionDisplay() === 'tags' ? 'none' : 'longpress'\" cdkOverlayOrigin bxSurface #origin=\"cdkOverlayOrigin\" class=\"bx-select-trigger\"\n [class.is-invalid]=\"showError()\" [class.is-outline]=\"resolvedAppearance() === 'outline'\" [class.is-open]=\"isOpen()\" [class.is-floating]=\"isFloating()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\"\n [id]=\"controlId()\" [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"describedBy()\" [attr.aria-invalid]=\"showError()\" [attr.aria-required]=\"required()\" [attr.aria-readonly]=\"isReadonly()\" [attr.aria-busy]=\"loading() || pending() || isSearching()\"\n [disabled]=\"disabled()\" (click)=\"toggleOpen()\" (keydown)=\"onTriggerKey($event)\" (blur)=\"onTriggerBlur()\"\n [attr.aria-expanded]=\"isOpen()\" [attr.aria-controls]=\"isPanelAttached() ? controlId() + '-options' : null\">\n <div class=\"bx-select-container\">\n @if (label()) {\n <span class=\"bx-floating-label\"><span [bxTruncate]=\"!isFloating()\" #labelOverflow=\"bxTruncate\">{{ resolvedLabel() }}</span>\n @if (required() && !resolvedHideRequiredMarker()) { <span class=\"bx-field-required\" aria-hidden=\"true\">*</span> }\n </span>\n }\n <span class=\"bx-select-value\" [class.is-placeholder]=\"!selectedOptionLabel()\" [bxTruncate]=\"!(selectionDisplay() === 'tags' && selectedOptions().length) && !triggerTemplate()\" #valueOverflow=\"bxTruncate\">\n @if (triggerTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"triggerContext()\" />\n } @else if (selectionDisplay() === 'tags' && selectedOptions().length) {\n <span class=\"bx-selected-tags\">\n @for (option of visibleTags(); track option.value) {\n <bx-tag [text]=\"option.label\" [config]=\"selectionTagConfig(option)\" [disabled]=\"disabled() || !!option.disabled\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n @if (selectedOptions().length > visibleTagCount()) {\n <bx-tag class=\"bx-overflow-tag\" [text]=\"overflowTagLabel()\" [config]=\"overflowTagConfig()\" [tooltip]=\"overflowTagTooltip()\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n </span>\n } @else { {{ selectedOptionLabel() || (isFloating() || !label() ? resolvedPlaceholder() : '') }} }\n </span>\n </div>\n <ng-content select=\"[bxSuffix]\" />\n <span class=\"bx-select-caret\" aria-hidden=\"true\">\n @if (loading() || pending() || isSearching()) { <bx-loading-spinner [size]=\"16\" [decorative]=\"true\" /> }\n @else { <bx-icon name=\"chevron-down\" size=\"16\" /> }\n </span>\n </button>\n @if (showClear()) {\n <button bx-button type=\"button\" variant=\"text\" class=\"bx-select-clear\" [surfaceEffects]=\"false\" [disabled]=\"disabled()\"\n [attr.aria-label]=\"resolvedClearLabel()\" [bxTooltip]=\"resolvedClearTooltip()\" (click)=\"clearSelection()\">\n <bx-icon name=\"x\" size=\"16\" />\n </button>\n }\n </div>\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"origin\" [cdkConnectedOverlayOpen]=\"isPanelAttached()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\" [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayScrollStrategy]=\"panelScrollStrategy\" [cdkConnectedOverlayUsePopover]=\"overlayPopoverLocation(origin.elementRef.nativeElement)\"\n [cdkConnectedOverlayWidth]=\"origin.elementRef.nativeElement.offsetWidth\"\n (overlayOutsideClick)=\"onOutsideClick($event)\" (attach)=\"onPanelAttach()\" (detach)=\"onPanelDetach()\" (positionChange)=\"refreshPanel()\">\n <div class=\"bx-select-panel\" [class]=\"panelClass()\" data-bx-surface=\"solid\" tabindex=\"-1\" (keydown)=\"onPanelKey($event)\">\n @if (isSearchable()) {\n <div class=\"bx-select-search-container\">\n <bx-search-input #searchInput [value]=\"searchValue()\" [placeholder]=\"resolvedSearchPlaceholder()\" [ariaLabel]=\"resolvedSearchPlaceholder()\"\n (search)=\"onSearchChange($event)\" (keydown.enter)=\"$event.preventDefault()\" />\n </div>\n }\n\n <div class=\"bx-select-menu-container\" bxLoadMore #pagination=\"bxLoadMore\" [loadMoreHasMore]=\"hasMore()\" [loadMoreSuppressed]=\"isSearching()\" [loadMoreLoading]=\"loading()\"\n [loadMoreDisabled]=\"disabled() || isReadonly()\" [loadMoreError]=\"loadError()\" [loadMoreConfig]=\"loadMoreConfig()\"\n [loadMoreTemplate]=\"loadMoreTemplate()\" [loadMoreRevision]=\"options()\" (loadMore)=\"requestMore($event)\">\n <div role=\"listbox\" [hidden]=\"isSearching()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [id]=\"controlId() + '-options'\">\n @for (option of filteredOptions(); track option.value; let index = $index) {\n @if (option.resolvedGroup && (index === 0 || filteredOptions()[index - 1].resolvedGroup !== option.resolvedGroup)) {\n <div class=\"bx-select-group\" [id]=\"controlId() + '-group-' + index\">{{ option.resolvedGroup }}</div>\n }\n <button type=\"button\" class=\"bx-select-option\" role=\"option\" tabindex=\"-1\" [attr.aria-selected]=\"isSelected(option.value)\"\n [disabled]=\"option.disabled || option.groupDisabled || false\" (click)=\"selectOption(option)\">\n <span class=\"bx-select-check-placeholder\" aria-hidden=\"true\">\n @if (isSelected(option.value)) { <bx-icon name=\"check\" size=\"16\" /> }\n </span>\n @if (option.icon) { <bx-icon [name]=\"option.icon\" size=\"16\" /> }\n @if (optionTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: option, selected: isSelected(option.value), index: index }\" />\n } @else { <span>{{ option.resolvedStr }}</span> }\n </button>\n } @empty {\n @if (!loading()) { <div class=\"bx-select-empty\" role=\"status\">{{ resolvedEmptyMessage() }}</div> }\n }\n </div>\n @if (isSearching()) {\n <div class=\"bx-select-search-state\" role=\"status\" [attr.aria-label]=\"resolvedLoadingLabel() || resolvedLoadingAriaLabel()\">\n @if (resolvedLoadingLabel()) { <span>{{ resolvedLoadingLabel() }}</span> }\n @else { <bx-loading-spinner [size]=\"20\" [decorative]=\"true\" /> }\n </div>\n } @else if (loading() && !pagination.actionVisible()) { <div class=\"bx-select-loading\"><bx-loading-indicator [size]=\"16\" [label]=\"loadingLabel() ?? loadingAriaLabel()\" /></div> }\n </div>\n </div>\n </ng-template>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n",
|
|
4485
|
+
styles: [":host{display:block;width:100%}.bx-select-trigger{position:relative;display:flex;align-items:center;width:100%;box-sizing:border-box;background-color:var(--bx-bg-neutral);border-radius:.25rem .25rem 0 0;border:none;border-bottom:1px solid var(--bx-border-strong);padding:0;padding-inline-end:.75rem;cursor:pointer;text-align:left;font-family:inherit;outline:none}.bx-select-trigger:hover:not(:disabled,.is-readonly){background-color:var(--bx-bg-neutral-hover)}.bx-select-trigger:disabled{background-color:var(--bx-bg-element);opacity:.7;border-bottom-style:dotted;cursor:not-allowed}.bx-select-trigger.is-readonly{cursor:default}.bx-select-trigger:after{content:\"\";position:absolute;bottom:-1px;left:0;right:0;height:2px;background-color:var(--bx-primary);transform:scaleX(0);transition:transform .2s cubic-bezier(.25,.8,.25,1);transform-origin:center;z-index:2}.bx-select-trigger.is-open:after,.bx-select-trigger:focus-visible:not(:disabled):after{transform:scaleX(1)}.bx-select-trigger.is-invalid{border-bottom-color:var(--bx-border-danger)}.bx-select-trigger.is-invalid:after{background-color:var(--bx-border-danger);transform:scaleX(1)}.bx-select-container{flex:1;min-width:0;position:relative;display:flex;flex-direction:column;overflow:hidden}.bx-select-value{width:100%;box-sizing:border-box;padding:1.5rem 0 .5rem .75rem;min-height:3rem;display:block;font-size:1rem;color:var(--bx-text-heading);line-height:1.4;z-index:1}.bx-select-value.is-placeholder{color:var(--bx-text-secondary)}.bx-floating-label{display:flex;align-items:baseline;position:absolute;left:.75rem;top:50%;transform:translateY(-50%);font-size:1rem;color:var(--bx-text-secondary);pointer-events:none;z-index:2;transition:top .2s cubic-bezier(.25,.8,.25,1),transform .2s cubic-bezier(.25,.8,.25,1),font-size .2s cubic-bezier(.25,.8,.25,1),color .15s ease}.bx-select-trigger.is-floating .bx-floating-label{top:.5rem;transform:translateY(0);font-size:.75rem;font-weight:500}.bx-select-trigger.is-floating.is-open .bx-floating-label,.bx-select-trigger.is-floating:focus-visible:not(.is-readonly) .bx-floating-label{color:var(--bx-primary)}.bx-select-trigger.is-invalid .bx-floating-label{color:var(--bx-text-danger)!important}.bx-field-required{color:var(--bx-text-secondary);margin-left:.125rem}.bx-select-caret{flex-shrink:0;color:var(--bx-text-secondary);transition:transform .2s ease;margin-inline-start:.5rem;transform-origin:center}.is-open .bx-select-caret{transform:rotate(180deg)}.bx-select-panel{display:flex;flex-direction:column;box-sizing:border-box;min-width:100%;width:100%;max-width:100%;background-color:var(--bx-glass-surface, var(--bx-bg-surface));border:1px solid var(--bx-glass-edge, var(--bx-border-default));border-radius:.75rem;box-shadow:0 2px 4px #0000001a,0 1px 2px -1px #0000001a;overflow:hidden;max-height:18rem}.bx-select-search-container{display:flex;align-items:center;padding:.25rem;flex-shrink:0;border-bottom:1px solid var(--bx-border-subtle)}.bx-select-menu-container{min-height:0;overflow:hidden auto;padding:.25rem}.bx-select-menu-container::-webkit-scrollbar{width:6px}.bx-select-menu-container::-webkit-scrollbar-track{background:var(--bx-scroll-bg)}.bx-select-menu-container::-webkit-scrollbar-thumb{background:var(--bx-scroll-thumb);border-radius:9999px}.bx-select-menu-container::-webkit-scrollbar-thumb:hover{background:var(--bx-scroll-thumb-hover)}.bx-select-option{display:flex;width:100%;padding:.5rem .75rem;border:0;border-radius:.25rem;background:transparent;color:var(--bx-text-primary);font:inherit;font-size:.875rem;line-height:1.4;text-align:start;cursor:pointer}.bx-select-option[aria-selected=true]{background:var(--bx-accent-subtle);color:var(--bx-text-accent)}.bx-select-option:hover:not(:disabled),.bx-select-option:active:not(:disabled){background:var(--bx-bg-element-hover)}.bx-select-option[aria-selected=true]:hover:not(:disabled){background:var(--bx-accent-subtle)}.bx-select-option:focus-visible{outline:2px solid var(--bx-border-accent);outline-offset:-2px}.bx-select-option:disabled{opacity:.4;cursor:not-allowed}.bx-select-item-inner{display:flex;align-items:center;gap:.5rem;width:100%}.bx-select-check-placeholder{width:16px;height:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--bx-text-accent)}.bx-select-empty{padding:.75rem;text-align:center;color:var(--bx-text-secondary);font-size:.875rem;font-style:italic}.bx-select-trigger[data-bx-surface]{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-shadow: none}.bx-select-trigger[data-bx-surface].is-invalid{--bx-glass-edge: var(--bx-border-danger)}.bx-select-panel[data-bx-surface]{--bx-glass-radius: var(--bx-rounded-lg, .75rem);--bx-glass-surface: var(--bx-bg-surface);--bx-glass-text: var(--bx-text-primary);--bx-glass-edge: var(--bx-border-default);--bx-glass-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);background:var(--bx-glass-surface)!important;-webkit-backdrop-filter:none;backdrop-filter:none}.bx-select-trigger[data-bx-surface]{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-min-opacity: .45;--bx-glass-edge: var(--bx-border-default);--bx-glass-shadow: none;border:1px solid var(--bx-glass-edge);border-radius:.75rem}.bx-select-trigger[data-bx-surface]:after{display:none}.bx-select-trigger[data-bx-surface]:focus-within:not(.is-disabled,:disabled,.is-readonly,[readonly],[aria-readonly=true],:has([readonly],[aria-readonly=true])),.bx-select-trigger[data-bx-surface]:focus-visible:not(:disabled,[readonly],[aria-readonly=true]),.bx-select-trigger[data-bx-surface].is-open:not(:disabled),.bx-select-trigger[data-bx-surface].is-readonly.is-keyboard-focused:focus-within,.bx-select-trigger[data-bx-surface]:has(.bx-readonly.is-keyboard-focused):focus-within{--bx-glass-edge: var(--bx-border-brand);outline:2px solid var(--bx-border-brand);outline-offset:-2px;--bx-glass-shadow: none}.bx-select-trigger[data-bx-surface].is-invalid{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-min-opacity: .45;--bx-glass-edge: color-mix(in srgb, var(--bx-text-danger) 40%, var(--bx-border-default));border-block-end-color:var(--bx-glass-edge);--bx-glass-shadow: 0 8px 18px -10px color-mix(in srgb, var(--bx-text-danger) 65%, transparent);outline-color:var(--bx-border-danger)}.bx-select-trigger.is-floating .bx-floating-label{position:static;transform:none;padding:.5rem 0 0 .75rem;overflow-wrap:anywhere}.bx-select-trigger.is-floating .bx-select-value{padding-top:.25rem;min-height:2rem}.bx-select-trigger:not(.is-floating) .bx-floating-label{right:0}.bx-select-item-inner>span:last-child{flex:1 1 auto;min-width:0;white-space:normal;overflow-wrap:anywhere}.bx-select-group{padding:.5rem .75rem;font-weight:600;color:var(--bx-text-secondary);font-size:.75rem}.bx-select-option{align-items:center;gap:.5rem}.bx-select-panel{max-block-size:min(var(--bx-select-panel-height, 22rem),70dvh)}.bx-select-menu-container{flex:1 1 auto}.bx-select-trigger.is-outline{border:1px solid var(--bx-border-strong);border-radius:var(--bx-field-radius, .5rem)}.bx-select-trigger.is-outline.is-invalid{border-color:var(--bx-border-danger)}.bx-select-panel{background:var(--bx-select-panel-background, var(--bx-bg-surface-alt));border-color:var(--bx-select-panel-border, var(--bx-border-strong));box-shadow:var(--bx-select-panel-shadow, 0 12px 20px -3px rgba(0, 0, 0, .2), 0 4px 6px -2px rgba(0, 0, 0, .1));isolation:isolate}.bx-select-measure{position:absolute;visibility:hidden;pointer-events:none;inset-inline:0;box-sizing:border-box;padding-inline-start:.75rem;font:inherit;font-size:1rem}.bx-select-caret{display:inline-flex;align-items:center;justify-content:center;inline-size:1rem;block-size:1rem}.bx-select-loading{padding:.5rem .75rem}.bx-select-menu-container{--bx-load-more-padding: .5rem .75rem}.bx-select-search-state{display:flex;justify-content:center;align-items:center;min-block-size:4rem;padding:.75rem;color:var(--bx-text-secondary)}[role=listbox][hidden]{display:none}.bx-selected-tags{display:flex;align-items:center;gap:var(--bx-select-tag-gap, .25rem);min-inline-size:0;max-inline-size:100%;overflow:hidden}.bx-selected-tags>bx-tag{min-inline-size:0}.bx-selected-tags>.bx-overflow-tag{flex:0 0 auto}[role=listbox]{display:flex;flex-direction:column;gap:var(--bx-select-option-gap, .25rem)}.bx-select-option>span:last-child{min-inline-size:0;overflow-wrap:anywhere}.bx-select-control{position:relative;inline-size:100%;min-inline-size:0}.bx-select-control.has-clear .bx-select-container{padding-inline-end:2rem}.bx-select-control.has-clear .bx-select-measure{inset-inline-end:2rem}.bx-select-clear.bx-btn{transition-property:color;transition-duration:calc(.15s * (1 - var(--bx-reduced-motion, 0)));transition-timing-function:ease;display:flex;align-items:center;justify-content:center;box-sizing:border-box;background:transparent;border:none;padding:.25rem;inline-size:1.5rem;block-size:1.5rem;border-radius:.25rem;color:var(--bx-text-secondary);cursor:pointer;flex-shrink:0}.bx-select-clear.bx-btn:focus-visible{outline:2px solid var(--bx-border-brand);outline-offset:0}.bx-select-clear.bx-btn:hover:not(:disabled){color:var(--bx-text-primary);background:var(--bx-bg-element-hover)}.bx-select-clear.bx-btn:disabled{cursor:not-allowed;opacity:.5}.bx-select-clear.bx-btn{position:absolute;inset-block-start:50%;inset-inline-end:calc(1px + 2.25rem);transform:translateY(-50%);z-index:3}\n"],
|
|
4309
4486
|
dependencies: [
|
|
4310
4487
|
{
|
|
4311
4488
|
kind: "directive",
|
|
@@ -4393,6 +4570,21 @@ var Select = class Select extends BxSelectBase {
|
|
|
4393
4570
|
"subscriptSizing"
|
|
4394
4571
|
]
|
|
4395
4572
|
},
|
|
4573
|
+
{
|
|
4574
|
+
kind: "component",
|
|
4575
|
+
type: Button,
|
|
4576
|
+
selector: "bx-button, button[bx-button], a[bx-button]",
|
|
4577
|
+
inputs: [
|
|
4578
|
+
"variant",
|
|
4579
|
+
"color",
|
|
4580
|
+
"outlined",
|
|
4581
|
+
"elevated",
|
|
4582
|
+
"disabled",
|
|
4583
|
+
"loading",
|
|
4584
|
+
"interactive",
|
|
4585
|
+
"surfaceEffects"
|
|
4586
|
+
]
|
|
4587
|
+
},
|
|
4396
4588
|
{
|
|
4397
4589
|
kind: "component",
|
|
4398
4590
|
type: Icon,
|
|
@@ -4525,6 +4717,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4525
4717
|
BxSurfaceDirective,
|
|
4526
4718
|
OverlayModule,
|
|
4527
4719
|
FormField,
|
|
4720
|
+
Button,
|
|
4528
4721
|
Icon,
|
|
4529
4722
|
SearchInput,
|
|
4530
4723
|
LoadMoreDirective,
|
|
@@ -4536,8 +4729,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4536
4729
|
TruncateDirective
|
|
4537
4730
|
],
|
|
4538
4731
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4539
|
-
template: "<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [showLoadingIndicator]=\"false\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <button type=\"button\" role=\"combobox\" aria-haspopup=\"listbox\" [bxTooltip]=\"resolvedTooltipOnTruncate() ? (selectionDisplay() === 'tags' ? selectedOptionLabel() : truncatedSelectionTooltip()) : ''\" [bxTooltipHover]=\"selectionDisplay() !== 'tags'\" [bxTooltipTouch]=\"selectionDisplay() === 'tags' ? 'none' : 'longpress'\" cdkOverlayOrigin bxSurface #origin=\"cdkOverlayOrigin\" class=\"bx-select-trigger\"\n [class.is-invalid]=\"showError()\" [class.is-outline]=\"resolvedAppearance() === 'outline'\" [class.is-open]=\"isOpen()\" [class.is-floating]=\"isFloating()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\"\n [id]=\"controlId()\" [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"describedBy()\" [attr.aria-invalid]=\"showError()\" [attr.aria-required]=\"required()\" [attr.aria-readonly]=\"isReadonly()\" [attr.aria-busy]=\"loading() || pending() || isSearching()\"\n [disabled]=\"disabled()\" (click)=\"toggleOpen()\" (keydown)=\"onTriggerKey($event)\" (blur)=\"onTriggerBlur()\"\n [attr.aria-expanded]=\"isOpen()\" [attr.aria-controls]=\"isPanelAttached() ? controlId() + '-options' : null\">\n <div class=\"bx-select-container\">\n @if (label()) {\n <span class=\"bx-floating-label\"><span [bxTruncate]=\"!isFloating()\" #labelOverflow=\"bxTruncate\">{{ resolvedLabel() }}</span>\n @if (required() && !resolvedHideRequiredMarker()) { <span class=\"bx-field-required\" aria-hidden=\"true\">*</span> }\n </span>\n }\n <span class=\"bx-select-value\" [class.is-placeholder]=\"!selectedOptionLabel()\" [bxTruncate]=\"!(selectionDisplay() === 'tags' && selectedOptions().length) && !triggerTemplate()\" #valueOverflow=\"bxTruncate\">\n @if (triggerTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"triggerContext()\" />\n } @else if (selectionDisplay() === 'tags' && selectedOptions().length) {\n <span class=\"bx-selected-tags\">\n @for (option of visibleTags(); track option.value) {\n <bx-tag [text]=\"option.label\" [config]=\"selectionTagConfig(option)\" [disabled]=\"disabled() || !!option.disabled\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n @if (selectedOptions().length > visibleTagCount()) {\n <bx-tag class=\"bx-overflow-tag\" [text]=\"overflowTagLabel()\" [config]=\"overflowTagConfig()\" [tooltip]=\"overflowTagTooltip()\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n </span>\n } @else { {{ selectedOptionLabel() || (isFloating() || !label() ? resolvedPlaceholder() : '') }} }\n </span>\n </div>\n <ng-content select=\"[bxSuffix]\" />\n <span class=\"bx-select-caret\" aria-hidden=\"true\">\n @if (loading() || pending() || isSearching()) { <bx-loading-spinner [size]=\"16\" [decorative]=\"true\" /> }\n @else { <bx-icon name=\"chevron-down\" size=\"16\" /> }\n </span>\n </button>\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"origin\" [cdkConnectedOverlayOpen]=\"isPanelAttached()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\" [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayScrollStrategy]=\"panelScrollStrategy\" [cdkConnectedOverlayUsePopover]=\"overlayPopoverLocation(origin.elementRef.nativeElement)\"\n [cdkConnectedOverlayWidth]=\"origin.elementRef.nativeElement.offsetWidth\"\n (overlayOutsideClick)=\"onOutsideClick($event)\" (attach)=\"onPanelAttach()\" (detach)=\"onPanelDetach()\" (positionChange)=\"refreshPanel()\">\n <div class=\"bx-select-panel\" [class]=\"panelClass()\" data-bx-surface=\"solid\" tabindex=\"-1\" (keydown)=\"onPanelKey($event)\">\n @if (isSearchable()) {\n <div class=\"bx-select-search-container\">\n <bx-search-input #searchInput [value]=\"searchValue()\" [placeholder]=\"resolvedSearchPlaceholder()\" [ariaLabel]=\"resolvedSearchPlaceholder()\"\n (search)=\"onSearchChange($event)\" (keydown.enter)=\"$event.preventDefault()\" />\n </div>\n }\n\n <div class=\"bx-select-menu-container\" bxLoadMore #pagination=\"bxLoadMore\" [loadMoreHasMore]=\"hasMore()\" [loadMoreSuppressed]=\"isSearching()\" [loadMoreLoading]=\"loading()\"\n [loadMoreDisabled]=\"disabled() || isReadonly()\" [loadMoreError]=\"loadError()\" [loadMoreConfig]=\"loadMoreConfig()\"\n [loadMoreTemplate]=\"loadMoreTemplate()\" [loadMoreRevision]=\"options()\" (loadMore)=\"requestMore($event)\">\n <div role=\"listbox\" [hidden]=\"isSearching()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [id]=\"controlId() + '-options'\">\n @for (option of filteredOptions(); track option.value; let index = $index) {\n @if (option.resolvedGroup && (index === 0 || filteredOptions()[index - 1].resolvedGroup !== option.resolvedGroup)) {\n <div class=\"bx-select-group\" [id]=\"controlId() + '-group-' + index\">{{ option.resolvedGroup }}</div>\n }\n <button type=\"button\" class=\"bx-select-option\" role=\"option\" tabindex=\"-1\" [attr.aria-selected]=\"isSelected(option.value)\"\n [disabled]=\"option.disabled || option.groupDisabled || false\" (click)=\"selectOption(option)\">\n <span class=\"bx-select-check-placeholder\" aria-hidden=\"true\">\n @if (isSelected(option.value)) { <bx-icon name=\"check\" size=\"16\" /> }\n </span>\n @if (option.icon) { <bx-icon [name]=\"option.icon\" size=\"16\" /> }\n @if (optionTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: option, selected: isSelected(option.value), index: index }\" />\n } @else { <span>{{ option.resolvedStr }}</span> }\n </button>\n } @empty {\n @if (!loading()) { <div class=\"bx-select-empty\" role=\"status\">{{ resolvedEmptyMessage() }}</div> }\n }\n </div>\n @if (isSearching()) {\n <div class=\"bx-select-search-state\" role=\"status\" [attr.aria-label]=\"resolvedLoadingLabel() || resolvedLoadingAriaLabel()\">\n @if (resolvedLoadingLabel()) { <span>{{ resolvedLoadingLabel() }}</span> }\n @else { <bx-loading-spinner [size]=\"20\" [decorative]=\"true\" /> }\n </div>\n } @else if (loading() && !pagination.actionVisible()) { <div class=\"bx-select-loading\"><bx-loading-indicator [size]=\"16\" [label]=\"loadingLabel() ?? loadingAriaLabel()\" /></div> }\n </div>\n </div>\n </ng-template>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n",
|
|
4540
|
-
styles: [":host{display:block;width:100%}.bx-select-trigger{position:relative;display:flex;align-items:center;width:100%;box-sizing:border-box;background-color:var(--bx-bg-neutral);border-radius:.25rem .25rem 0 0;border:none;border-bottom:1px solid var(--bx-border-strong);padding:0
|
|
4732
|
+
template: "<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [showLoadingIndicator]=\"false\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <div class=\"bx-select-control\" [class.has-clear]=\"showClear()\">\n <button type=\"button\" role=\"combobox\" aria-haspopup=\"listbox\" [bxTooltip]=\"resolvedTooltipOnTruncate() ? (selectionDisplay() === 'tags' ? selectedOptionLabel() : truncatedSelectionTooltip()) : ''\" [bxTooltipHover]=\"selectionDisplay() !== 'tags'\" [bxTooltipTouch]=\"selectionDisplay() === 'tags' ? 'none' : 'longpress'\" cdkOverlayOrigin bxSurface #origin=\"cdkOverlayOrigin\" class=\"bx-select-trigger\"\n [class.is-invalid]=\"showError()\" [class.is-outline]=\"resolvedAppearance() === 'outline'\" [class.is-open]=\"isOpen()\" [class.is-floating]=\"isFloating()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\"\n [id]=\"controlId()\" [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"describedBy()\" [attr.aria-invalid]=\"showError()\" [attr.aria-required]=\"required()\" [attr.aria-readonly]=\"isReadonly()\" [attr.aria-busy]=\"loading() || pending() || isSearching()\"\n [disabled]=\"disabled()\" (click)=\"toggleOpen()\" (keydown)=\"onTriggerKey($event)\" (blur)=\"onTriggerBlur()\"\n [attr.aria-expanded]=\"isOpen()\" [attr.aria-controls]=\"isPanelAttached() ? controlId() + '-options' : null\">\n <div class=\"bx-select-container\">\n @if (label()) {\n <span class=\"bx-floating-label\"><span [bxTruncate]=\"!isFloating()\" #labelOverflow=\"bxTruncate\">{{ resolvedLabel() }}</span>\n @if (required() && !resolvedHideRequiredMarker()) { <span class=\"bx-field-required\" aria-hidden=\"true\">*</span> }\n </span>\n }\n <span class=\"bx-select-value\" [class.is-placeholder]=\"!selectedOptionLabel()\" [bxTruncate]=\"!(selectionDisplay() === 'tags' && selectedOptions().length) && !triggerTemplate()\" #valueOverflow=\"bxTruncate\">\n @if (triggerTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"triggerContext()\" />\n } @else if (selectionDisplay() === 'tags' && selectedOptions().length) {\n <span class=\"bx-selected-tags\">\n @for (option of visibleTags(); track option.value) {\n <bx-tag [text]=\"option.label\" [config]=\"selectionTagConfig(option)\" [disabled]=\"disabled() || !!option.disabled\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n @if (selectedOptions().length > visibleTagCount()) {\n <bx-tag class=\"bx-overflow-tag\" [text]=\"overflowTagLabel()\" [config]=\"overflowTagConfig()\" [tooltip]=\"overflowTagTooltip()\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n </span>\n } @else { {{ selectedOptionLabel() || (isFloating() || !label() ? resolvedPlaceholder() : '') }} }\n </span>\n </div>\n <ng-content select=\"[bxSuffix]\" />\n <span class=\"bx-select-caret\" aria-hidden=\"true\">\n @if (loading() || pending() || isSearching()) { <bx-loading-spinner [size]=\"16\" [decorative]=\"true\" /> }\n @else { <bx-icon name=\"chevron-down\" size=\"16\" /> }\n </span>\n </button>\n @if (showClear()) {\n <button bx-button type=\"button\" variant=\"text\" class=\"bx-select-clear\" [surfaceEffects]=\"false\" [disabled]=\"disabled()\"\n [attr.aria-label]=\"resolvedClearLabel()\" [bxTooltip]=\"resolvedClearTooltip()\" (click)=\"clearSelection()\">\n <bx-icon name=\"x\" size=\"16\" />\n </button>\n }\n </div>\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"origin\" [cdkConnectedOverlayOpen]=\"isPanelAttached()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\" [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayScrollStrategy]=\"panelScrollStrategy\" [cdkConnectedOverlayUsePopover]=\"overlayPopoverLocation(origin.elementRef.nativeElement)\"\n [cdkConnectedOverlayWidth]=\"origin.elementRef.nativeElement.offsetWidth\"\n (overlayOutsideClick)=\"onOutsideClick($event)\" (attach)=\"onPanelAttach()\" (detach)=\"onPanelDetach()\" (positionChange)=\"refreshPanel()\">\n <div class=\"bx-select-panel\" [class]=\"panelClass()\" data-bx-surface=\"solid\" tabindex=\"-1\" (keydown)=\"onPanelKey($event)\">\n @if (isSearchable()) {\n <div class=\"bx-select-search-container\">\n <bx-search-input #searchInput [value]=\"searchValue()\" [placeholder]=\"resolvedSearchPlaceholder()\" [ariaLabel]=\"resolvedSearchPlaceholder()\"\n (search)=\"onSearchChange($event)\" (keydown.enter)=\"$event.preventDefault()\" />\n </div>\n }\n\n <div class=\"bx-select-menu-container\" bxLoadMore #pagination=\"bxLoadMore\" [loadMoreHasMore]=\"hasMore()\" [loadMoreSuppressed]=\"isSearching()\" [loadMoreLoading]=\"loading()\"\n [loadMoreDisabled]=\"disabled() || isReadonly()\" [loadMoreError]=\"loadError()\" [loadMoreConfig]=\"loadMoreConfig()\"\n [loadMoreTemplate]=\"loadMoreTemplate()\" [loadMoreRevision]=\"options()\" (loadMore)=\"requestMore($event)\">\n <div role=\"listbox\" [hidden]=\"isSearching()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [id]=\"controlId() + '-options'\">\n @for (option of filteredOptions(); track option.value; let index = $index) {\n @if (option.resolvedGroup && (index === 0 || filteredOptions()[index - 1].resolvedGroup !== option.resolvedGroup)) {\n <div class=\"bx-select-group\" [id]=\"controlId() + '-group-' + index\">{{ option.resolvedGroup }}</div>\n }\n <button type=\"button\" class=\"bx-select-option\" role=\"option\" tabindex=\"-1\" [attr.aria-selected]=\"isSelected(option.value)\"\n [disabled]=\"option.disabled || option.groupDisabled || false\" (click)=\"selectOption(option)\">\n <span class=\"bx-select-check-placeholder\" aria-hidden=\"true\">\n @if (isSelected(option.value)) { <bx-icon name=\"check\" size=\"16\" /> }\n </span>\n @if (option.icon) { <bx-icon [name]=\"option.icon\" size=\"16\" /> }\n @if (optionTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: option, selected: isSelected(option.value), index: index }\" />\n } @else { <span>{{ option.resolvedStr }}</span> }\n </button>\n } @empty {\n @if (!loading()) { <div class=\"bx-select-empty\" role=\"status\">{{ resolvedEmptyMessage() }}</div> }\n }\n </div>\n @if (isSearching()) {\n <div class=\"bx-select-search-state\" role=\"status\" [attr.aria-label]=\"resolvedLoadingLabel() || resolvedLoadingAriaLabel()\">\n @if (resolvedLoadingLabel()) { <span>{{ resolvedLoadingLabel() }}</span> }\n @else { <bx-loading-spinner [size]=\"20\" [decorative]=\"true\" /> }\n </div>\n } @else if (loading() && !pagination.actionVisible()) { <div class=\"bx-select-loading\"><bx-loading-indicator [size]=\"16\" [label]=\"loadingLabel() ?? loadingAriaLabel()\" /></div> }\n </div>\n </div>\n </ng-template>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n",
|
|
4733
|
+
styles: [":host{display:block;width:100%}.bx-select-trigger{position:relative;display:flex;align-items:center;width:100%;box-sizing:border-box;background-color:var(--bx-bg-neutral);border-radius:.25rem .25rem 0 0;border:none;border-bottom:1px solid var(--bx-border-strong);padding:0;padding-inline-end:.75rem;cursor:pointer;text-align:left;font-family:inherit;outline:none}.bx-select-trigger:hover:not(:disabled,.is-readonly){background-color:var(--bx-bg-neutral-hover)}.bx-select-trigger:disabled{background-color:var(--bx-bg-element);opacity:.7;border-bottom-style:dotted;cursor:not-allowed}.bx-select-trigger.is-readonly{cursor:default}.bx-select-trigger:after{content:\"\";position:absolute;bottom:-1px;left:0;right:0;height:2px;background-color:var(--bx-primary);transform:scaleX(0);transition:transform .2s cubic-bezier(.25,.8,.25,1);transform-origin:center;z-index:2}.bx-select-trigger.is-open:after,.bx-select-trigger:focus-visible:not(:disabled):after{transform:scaleX(1)}.bx-select-trigger.is-invalid{border-bottom-color:var(--bx-border-danger)}.bx-select-trigger.is-invalid:after{background-color:var(--bx-border-danger);transform:scaleX(1)}.bx-select-container{flex:1;min-width:0;position:relative;display:flex;flex-direction:column;overflow:hidden}.bx-select-value{width:100%;box-sizing:border-box;padding:1.5rem 0 .5rem .75rem;min-height:3rem;display:block;font-size:1rem;color:var(--bx-text-heading);line-height:1.4;z-index:1}.bx-select-value.is-placeholder{color:var(--bx-text-secondary)}.bx-floating-label{display:flex;align-items:baseline;position:absolute;left:.75rem;top:50%;transform:translateY(-50%);font-size:1rem;color:var(--bx-text-secondary);pointer-events:none;z-index:2;transition:top .2s cubic-bezier(.25,.8,.25,1),transform .2s cubic-bezier(.25,.8,.25,1),font-size .2s cubic-bezier(.25,.8,.25,1),color .15s ease}.bx-select-trigger.is-floating .bx-floating-label{top:.5rem;transform:translateY(0);font-size:.75rem;font-weight:500}.bx-select-trigger.is-floating.is-open .bx-floating-label,.bx-select-trigger.is-floating:focus-visible:not(.is-readonly) .bx-floating-label{color:var(--bx-primary)}.bx-select-trigger.is-invalid .bx-floating-label{color:var(--bx-text-danger)!important}.bx-field-required{color:var(--bx-text-secondary);margin-left:.125rem}.bx-select-caret{flex-shrink:0;color:var(--bx-text-secondary);transition:transform .2s ease;margin-inline-start:.5rem;transform-origin:center}.is-open .bx-select-caret{transform:rotate(180deg)}.bx-select-panel{display:flex;flex-direction:column;box-sizing:border-box;min-width:100%;width:100%;max-width:100%;background-color:var(--bx-glass-surface, var(--bx-bg-surface));border:1px solid var(--bx-glass-edge, var(--bx-border-default));border-radius:.75rem;box-shadow:0 2px 4px #0000001a,0 1px 2px -1px #0000001a;overflow:hidden;max-height:18rem}.bx-select-search-container{display:flex;align-items:center;padding:.25rem;flex-shrink:0;border-bottom:1px solid var(--bx-border-subtle)}.bx-select-menu-container{min-height:0;overflow:hidden auto;padding:.25rem}.bx-select-menu-container::-webkit-scrollbar{width:6px}.bx-select-menu-container::-webkit-scrollbar-track{background:var(--bx-scroll-bg)}.bx-select-menu-container::-webkit-scrollbar-thumb{background:var(--bx-scroll-thumb);border-radius:9999px}.bx-select-menu-container::-webkit-scrollbar-thumb:hover{background:var(--bx-scroll-thumb-hover)}.bx-select-option{display:flex;width:100%;padding:.5rem .75rem;border:0;border-radius:.25rem;background:transparent;color:var(--bx-text-primary);font:inherit;font-size:.875rem;line-height:1.4;text-align:start;cursor:pointer}.bx-select-option[aria-selected=true]{background:var(--bx-accent-subtle);color:var(--bx-text-accent)}.bx-select-option:hover:not(:disabled),.bx-select-option:active:not(:disabled){background:var(--bx-bg-element-hover)}.bx-select-option[aria-selected=true]:hover:not(:disabled){background:var(--bx-accent-subtle)}.bx-select-option:focus-visible{outline:2px solid var(--bx-border-accent);outline-offset:-2px}.bx-select-option:disabled{opacity:.4;cursor:not-allowed}.bx-select-item-inner{display:flex;align-items:center;gap:.5rem;width:100%}.bx-select-check-placeholder{width:16px;height:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--bx-text-accent)}.bx-select-empty{padding:.75rem;text-align:center;color:var(--bx-text-secondary);font-size:.875rem;font-style:italic}.bx-select-trigger[data-bx-surface]{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-shadow: none}.bx-select-trigger[data-bx-surface].is-invalid{--bx-glass-edge: var(--bx-border-danger)}.bx-select-panel[data-bx-surface]{--bx-glass-radius: var(--bx-rounded-lg, .75rem);--bx-glass-surface: var(--bx-bg-surface);--bx-glass-text: var(--bx-text-primary);--bx-glass-edge: var(--bx-border-default);--bx-glass-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);background:var(--bx-glass-surface)!important;-webkit-backdrop-filter:none;backdrop-filter:none}.bx-select-trigger[data-bx-surface]{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-min-opacity: .45;--bx-glass-edge: var(--bx-border-default);--bx-glass-shadow: none;border:1px solid var(--bx-glass-edge);border-radius:.75rem}.bx-select-trigger[data-bx-surface]:after{display:none}.bx-select-trigger[data-bx-surface]:focus-within:not(.is-disabled,:disabled,.is-readonly,[readonly],[aria-readonly=true],:has([readonly],[aria-readonly=true])),.bx-select-trigger[data-bx-surface]:focus-visible:not(:disabled,[readonly],[aria-readonly=true]),.bx-select-trigger[data-bx-surface].is-open:not(:disabled),.bx-select-trigger[data-bx-surface].is-readonly.is-keyboard-focused:focus-within,.bx-select-trigger[data-bx-surface]:has(.bx-readonly.is-keyboard-focused):focus-within{--bx-glass-edge: var(--bx-border-brand);outline:2px solid var(--bx-border-brand);outline-offset:-2px;--bx-glass-shadow: none}.bx-select-trigger[data-bx-surface].is-invalid{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-min-opacity: .45;--bx-glass-edge: color-mix(in srgb, var(--bx-text-danger) 40%, var(--bx-border-default));border-block-end-color:var(--bx-glass-edge);--bx-glass-shadow: 0 8px 18px -10px color-mix(in srgb, var(--bx-text-danger) 65%, transparent);outline-color:var(--bx-border-danger)}.bx-select-trigger.is-floating .bx-floating-label{position:static;transform:none;padding:.5rem 0 0 .75rem;overflow-wrap:anywhere}.bx-select-trigger.is-floating .bx-select-value{padding-top:.25rem;min-height:2rem}.bx-select-trigger:not(.is-floating) .bx-floating-label{right:0}.bx-select-item-inner>span:last-child{flex:1 1 auto;min-width:0;white-space:normal;overflow-wrap:anywhere}.bx-select-group{padding:.5rem .75rem;font-weight:600;color:var(--bx-text-secondary);font-size:.75rem}.bx-select-option{align-items:center;gap:.5rem}.bx-select-panel{max-block-size:min(var(--bx-select-panel-height, 22rem),70dvh)}.bx-select-menu-container{flex:1 1 auto}.bx-select-trigger.is-outline{border:1px solid var(--bx-border-strong);border-radius:var(--bx-field-radius, .5rem)}.bx-select-trigger.is-outline.is-invalid{border-color:var(--bx-border-danger)}.bx-select-panel{background:var(--bx-select-panel-background, var(--bx-bg-surface-alt));border-color:var(--bx-select-panel-border, var(--bx-border-strong));box-shadow:var(--bx-select-panel-shadow, 0 12px 20px -3px rgba(0, 0, 0, .2), 0 4px 6px -2px rgba(0, 0, 0, .1));isolation:isolate}.bx-select-measure{position:absolute;visibility:hidden;pointer-events:none;inset-inline:0;box-sizing:border-box;padding-inline-start:.75rem;font:inherit;font-size:1rem}.bx-select-caret{display:inline-flex;align-items:center;justify-content:center;inline-size:1rem;block-size:1rem}.bx-select-loading{padding:.5rem .75rem}.bx-select-menu-container{--bx-load-more-padding: .5rem .75rem}.bx-select-search-state{display:flex;justify-content:center;align-items:center;min-block-size:4rem;padding:.75rem;color:var(--bx-text-secondary)}[role=listbox][hidden]{display:none}.bx-selected-tags{display:flex;align-items:center;gap:var(--bx-select-tag-gap, .25rem);min-inline-size:0;max-inline-size:100%;overflow:hidden}.bx-selected-tags>bx-tag{min-inline-size:0}.bx-selected-tags>.bx-overflow-tag{flex:0 0 auto}[role=listbox]{display:flex;flex-direction:column;gap:var(--bx-select-option-gap, .25rem)}.bx-select-option>span:last-child{min-inline-size:0;overflow-wrap:anywhere}.bx-select-control{position:relative;inline-size:100%;min-inline-size:0}.bx-select-control.has-clear .bx-select-container{padding-inline-end:2rem}.bx-select-control.has-clear .bx-select-measure{inset-inline-end:2rem}.bx-select-clear.bx-btn{transition-property:color;transition-duration:calc(.15s * (1 - var(--bx-reduced-motion, 0)));transition-timing-function:ease;display:flex;align-items:center;justify-content:center;box-sizing:border-box;background:transparent;border:none;padding:.25rem;inline-size:1.5rem;block-size:1.5rem;border-radius:.25rem;color:var(--bx-text-secondary);cursor:pointer;flex-shrink:0}.bx-select-clear.bx-btn:focus-visible{outline:2px solid var(--bx-border-brand);outline-offset:0}.bx-select-clear.bx-btn:hover:not(:disabled){color:var(--bx-text-primary);background:var(--bx-bg-element-hover)}.bx-select-clear.bx-btn:disabled{cursor:not-allowed;opacity:.5}.bx-select-clear.bx-btn{position:absolute;inset-block-start:50%;inset-inline-end:calc(1px + 2.25rem);transform:translateY(-50%);z-index:3}\n"]
|
|
4541
4734
|
}]
|
|
4542
4735
|
}],
|
|
4543
4736
|
propDecorators: { selectionChange: [{
|
|
@@ -4961,8 +5154,15 @@ function summaryThreshold(value) {
|
|
|
4961
5154
|
var MultiSelect = class MultiSelect extends BxSelectBase {
|
|
4962
5155
|
summaryOverflow = viewChild("summaryOverflow", ...ngDevMode ? [{ debugName: "summaryOverflow" }] : /* istanbul ignore next */ []);
|
|
4963
5156
|
labelsAdapter = inject(BX_I18N, { optional: true });
|
|
5157
|
+
hasSelection = computed(() => !!this.internalValue()?.length || this.selectAll(), ...ngDevMode ? [{ debugName: "hasSelection" }] : /* istanbul ignore next */ []);
|
|
4964
5158
|
resolvedSelectAllLabel = computed(() => resolveText(this.selectAllLabel(), this.labelsAdapter), ...ngDevMode ? [{ debugName: "resolvedSelectAllLabel" }] : /* istanbul ignore next */ []);
|
|
4965
|
-
|
|
5159
|
+
selectableOptions = computed(() => this.filteredOptions().filter((option) => !option.disabled && !option.groupDisabled), ...ngDevMode ? [{ debugName: "selectableOptions" }] : /* istanbul ignore next */ []);
|
|
5160
|
+
allLoadedSelected = computed(() => {
|
|
5161
|
+
const options = this.selectableOptions();
|
|
5162
|
+
return options.length > 0 && options.every((option) => this.isSelected(option.value));
|
|
5163
|
+
}, ...ngDevMode ? [{ debugName: "allLoadedSelected" }] : /* istanbul ignore next */ []);
|
|
5164
|
+
selectAllChecked = computed(() => this.selectAll() || this.allLoadedSelected(), ...ngDevMode ? [{ debugName: "selectAllChecked" }] : /* istanbul ignore next */ []);
|
|
5165
|
+
someSelected = computed(() => this.selectableOptions().some((option) => this.isSelected(option.value)), ...ngDevMode ? [{ debugName: "someSelected" }] : /* istanbul ignore next */ []);
|
|
4966
5166
|
usesSummary = computed(() => {
|
|
4967
5167
|
const count = this.internalValue()?.length ?? 0;
|
|
4968
5168
|
return this.selectionDisplay() === "tags" && this.selectedOptions().length > this.visibleTagCount() || !!(this.selectAll() && this.allSelectedText()) || count > this.summaryThreshold() || count >= 2 && (this.summaryOverflow()?.truncated() ?? false);
|
|
@@ -4973,10 +5173,19 @@ var MultiSelect = class MultiSelect extends BxSelectBase {
|
|
|
4973
5173
|
const count = this.internalValue()?.length ?? 0;
|
|
4974
5174
|
return resolveText(this.selectedCountText(), this.labelsAdapter, { count }).replaceAll("{count}", String(count));
|
|
4975
5175
|
}, ...ngDevMode ? [{ debugName: "displayedSelection" }] : /* istanbul ignore next */ []);
|
|
5176
|
+
resolvedAllSelectedTooltip = computed(() => {
|
|
5177
|
+
const text = this.allSelectedTooltip();
|
|
5178
|
+
if (text === false) return "";
|
|
5179
|
+
if (text === void 0) return this.resolvedTooltipOnTruncate() ? this.selectedOptionLabel() : "";
|
|
5180
|
+
return resolveText(text, this.labelsAdapter);
|
|
5181
|
+
}, ...ngDevMode ? [{ debugName: "resolvedAllSelectedTooltip" }] : /* istanbul ignore next */ []);
|
|
4976
5182
|
selectionTooltip = computed(() => {
|
|
4977
|
-
if (
|
|
5183
|
+
if (this.isOpen()) return "";
|
|
5184
|
+
if (this.selectAll()) return this.resolvedAllSelectedTooltip();
|
|
5185
|
+
if (!this.resolvedTooltipOnTruncate()) return "";
|
|
4978
5186
|
return this.selectionDisplay() === "tags" || this.usesSummary() ? this.selectedOptionLabel() : this.truncatedSelectionTooltip();
|
|
4979
5187
|
}, ...ngDevMode ? [{ debugName: "selectionTooltip" }] : /* istanbul ignore next */ []);
|
|
5188
|
+
allSelectedTooltip = input(void 0, ...ngDevMode ? [{ debugName: "allSelectedTooltip" }] : /* istanbul ignore next */ []);
|
|
4980
5189
|
allSelectedText = input(void 0, ...ngDevMode ? [{ debugName: "allSelectedText" }] : /* istanbul ignore next */ []);
|
|
4981
5190
|
selectedCountText = input("{count} selected", ...ngDevMode ? [{ debugName: "selectedCountText" }] : /* istanbul ignore next */ []);
|
|
4982
5191
|
summaryThreshold = input(2, {
|
|
@@ -5014,13 +5223,24 @@ var MultiSelect = class MultiSelect extends BxSelectBase {
|
|
|
5014
5223
|
this.scope = scope;
|
|
5015
5224
|
});
|
|
5016
5225
|
}
|
|
5226
|
+
clearSelection() {
|
|
5227
|
+
if (this.disabled() || this.isReadonly()) return;
|
|
5228
|
+
const hadIntent = this.selectAll();
|
|
5229
|
+
this.selectAll.set(false);
|
|
5230
|
+
this.clearSelectedValue([]);
|
|
5231
|
+
this.selectionChange.emit({
|
|
5232
|
+
value: [],
|
|
5233
|
+
source: "clear"
|
|
5234
|
+
});
|
|
5235
|
+
if (hadIntent) this.emitIntent(false, "clear");
|
|
5236
|
+
}
|
|
5017
5237
|
isSelected(value) {
|
|
5018
5238
|
return (this.internalValue() ?? []).some((item) => this.compareWith()(item, value));
|
|
5019
5239
|
}
|
|
5020
5240
|
toggleSelectAll() {
|
|
5021
5241
|
if (this.disabled() || this.isReadonly()) return;
|
|
5022
|
-
const enabled = !this.
|
|
5023
|
-
const eligible = this.
|
|
5242
|
+
const enabled = !this.selectAllChecked();
|
|
5243
|
+
const eligible = this.selectableOptions();
|
|
5024
5244
|
const current = this.internalValue() ?? [];
|
|
5025
5245
|
const values = enabled ? [...current, ...eligible.filter((option) => !this.isSelected(option.value)).map((option) => option.value)] : current.filter((value) => !eligible.some((option) => this.compareWith()(value, option.value)));
|
|
5026
5246
|
this.selectAll.set(enabled);
|
|
@@ -5075,6 +5295,13 @@ var MultiSelect = class MultiSelect extends BxSelectBase {
|
|
|
5075
5295
|
isStandalone: true,
|
|
5076
5296
|
selector: "bx-multi-select",
|
|
5077
5297
|
inputs: {
|
|
5298
|
+
allSelectedTooltip: {
|
|
5299
|
+
classPropertyName: "allSelectedTooltip",
|
|
5300
|
+
publicName: "allSelectedTooltip",
|
|
5301
|
+
isSignal: true,
|
|
5302
|
+
isRequired: false,
|
|
5303
|
+
transformFunction: null
|
|
5304
|
+
},
|
|
5078
5305
|
allSelectedText: {
|
|
5079
5306
|
classPropertyName: "allSelectedText",
|
|
5080
5307
|
publicName: "allSelectedText",
|
|
@@ -5139,8 +5366,8 @@ var MultiSelect = class MultiSelect extends BxSelectBase {
|
|
|
5139
5366
|
}],
|
|
5140
5367
|
usesInheritance: true,
|
|
5141
5368
|
ngImport: i0,
|
|
5142
|
-
template: "<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [showLoadingIndicator]=\"false\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <button type=\"button\" role=\"combobox\" aria-haspopup=\"listbox\" [bxTooltip]=\"selectionTooltip()\" [bxTooltipHover]=\"selectionDisplay() !== 'tags'\" [bxTooltipTouch]=\"selectionDisplay() === 'tags' ? 'none' : 'longpress'\" cdkOverlayOrigin bxSurface #origin=\"cdkOverlayOrigin\" class=\"bx-select-trigger\"\n [class.is-invalid]=\"showError()\" [class.is-outline]=\"resolvedAppearance() === 'outline'\" [class.is-open]=\"isOpen()\" [class.is-floating]=\"isFloating()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\"\n [id]=\"controlId()\" [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"describedBy()\" [attr.aria-invalid]=\"showError()\" [attr.aria-required]=\"required()\" [attr.aria-readonly]=\"isReadonly()\" [attr.aria-busy]=\"loading() || pending() || isSearching()\"\n [disabled]=\"disabled()\" (click)=\"toggleOpen()\" (keydown)=\"onTriggerKey($event)\" (blur)=\"onTriggerBlur()\"\n [attr.aria-expanded]=\"isOpen()\" [attr.aria-controls]=\"isPanelAttached() ? controlId() + '-options' : null\">\n <div class=\"bx-select-container\">\n @if (label()) {\n <span class=\"bx-floating-label\"><span [bxTruncate]=\"!isFloating()\" #labelOverflow=\"bxTruncate\">{{ resolvedLabel() }}</span>\n @if (required() && !resolvedHideRequiredMarker()) { <span class=\"bx-field-required\" aria-hidden=\"true\">*</span> }\n </span>\n }\n <span class=\"bx-select-value\" [class.is-placeholder]=\"!selectedOptionLabel()\" [bxTruncate]=\"!(selectionDisplay() === 'tags' && selectedOptions().length) && !triggerTemplate()\" #valueOverflow=\"bxTruncate\">\n @if (triggerTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"triggerContext()\" />\n } @else if (selectionDisplay() === 'tags' && selectedOptions().length) {\n <span class=\"bx-selected-tags\">\n @if (selectAll() && allSelectedText()) {\n <bx-tag [text]=\"allSelectedText()\" [config]=\"tagConfig()\" [focusable]=\"false\" [tooltipOnTruncate]=\"
|
|
5143
|
-
styles: [":host{display:block;width:100%}.bx-select-trigger{position:relative;display:flex;align-items:center;width:100%;box-sizing:border-box;background-color:var(--bx-bg-neutral);border-radius:.25rem .25rem 0 0;border:none;border-bottom:1px solid var(--bx-border-strong);padding:0
|
|
5369
|
+
template: "<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [showLoadingIndicator]=\"false\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <div class=\"bx-select-control\" [class.has-clear]=\"showClear()\">\n <button type=\"button\" role=\"combobox\" aria-haspopup=\"listbox\" [bxTooltip]=\"selectionTooltip()\" [bxTooltipHover]=\"selectionDisplay() !== 'tags' || (selectAll() && !!allSelectedText())\" [bxTooltipTouch]=\"selectionDisplay() === 'tags' && !(selectAll() && allSelectedText()) ? 'none' : 'longpress'\" cdkOverlayOrigin bxSurface #origin=\"cdkOverlayOrigin\" class=\"bx-select-trigger\"\n [class.is-invalid]=\"showError()\" [class.is-outline]=\"resolvedAppearance() === 'outline'\" [class.is-open]=\"isOpen()\" [class.is-floating]=\"isFloating()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\"\n [id]=\"controlId()\" [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"describedBy()\" [attr.aria-invalid]=\"showError()\" [attr.aria-required]=\"required()\" [attr.aria-readonly]=\"isReadonly()\" [attr.aria-busy]=\"loading() || pending() || isSearching()\"\n [disabled]=\"disabled()\" (click)=\"toggleOpen()\" (keydown)=\"onTriggerKey($event)\" (blur)=\"onTriggerBlur()\"\n [attr.aria-expanded]=\"isOpen()\" [attr.aria-controls]=\"isPanelAttached() ? controlId() + '-options' : null\">\n <div class=\"bx-select-container\">\n @if (label()) {\n <span class=\"bx-floating-label\"><span [bxTruncate]=\"!isFloating()\" #labelOverflow=\"bxTruncate\">{{ resolvedLabel() }}</span>\n @if (required() && !resolvedHideRequiredMarker()) { <span class=\"bx-field-required\" aria-hidden=\"true\">*</span> }\n </span>\n }\n <span class=\"bx-select-value\" [class.is-placeholder]=\"!selectedOptionLabel()\" [bxTruncate]=\"!(selectionDisplay() === 'tags' && selectedOptions().length) && !triggerTemplate()\" #valueOverflow=\"bxTruncate\">\n @if (triggerTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"triggerContext()\" />\n } @else if (selectionDisplay() === 'tags' && selectedOptions().length) {\n <span class=\"bx-selected-tags\">\n @if (selectAll() && allSelectedText()) {\n <bx-tag [text]=\"allSelectedText()\" [config]=\"tagConfig()\" [focusable]=\"false\" [tooltip]=\"''\" [tooltipOnTruncate]=\"false\" />\n } @else {\n @for (option of visibleTags(); track option.value) {\n <bx-tag [text]=\"option.label\" [config]=\"selectionTagConfig(option)\" [disabled]=\"disabled() || !!option.disabled\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n @if (selectedOptions().length > visibleTagCount()) {\n <bx-tag class=\"bx-overflow-tag\" [text]=\"overflowTagLabel()\" [config]=\"overflowTagConfig()\" [tooltip]=\"overflowTagTooltip()\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n }\n </span>\n } @else { {{ displayedSelection() || (isFloating() || !label() ? resolvedPlaceholder() : '') }} }\n </span>\n <span class=\"bx-select-measure\" bxTruncate #summaryOverflow=\"bxTruncate\" aria-hidden=\"true\">{{ selectedOptionLabel() }}</span>\n </div>\n <ng-content select=\"[bxSuffix]\" />\n <span class=\"bx-select-caret\" aria-hidden=\"true\">\n @if (loading() || pending() || isSearching()) { <bx-loading-spinner [size]=\"16\" [decorative]=\"true\" /> }\n @else { <bx-icon name=\"chevron-down\" size=\"16\" /> }\n </span>\n </button>\n @if (showClear()) {\n <button bx-button type=\"button\" variant=\"text\" class=\"bx-select-clear\" [surfaceEffects]=\"false\" [disabled]=\"disabled()\"\n [attr.aria-label]=\"resolvedClearLabel()\" [bxTooltip]=\"resolvedClearTooltip()\" (click)=\"clearSelection()\">\n <bx-icon name=\"x\" size=\"16\" />\n </button>\n }\n </div>\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"origin\" [cdkConnectedOverlayOpen]=\"isPanelAttached()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\" [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayScrollStrategy]=\"panelScrollStrategy\" [cdkConnectedOverlayUsePopover]=\"overlayPopoverLocation(origin.elementRef.nativeElement)\"\n [cdkConnectedOverlayWidth]=\"origin.elementRef.nativeElement.offsetWidth\"\n (overlayOutsideClick)=\"onOutsideClick($event)\" (attach)=\"onPanelAttach()\" (detach)=\"onPanelDetach()\" (positionChange)=\"refreshPanel()\">\n <div class=\"bx-select-panel\" [class]=\"panelClass()\" data-bx-surface=\"solid\" tabindex=\"-1\" (keydown)=\"onPanelKey($event)\">\n @if (isSearchable()) {\n <div class=\"bx-select-search-container\">\n <bx-search-input #searchInput [value]=\"searchValue()\" [placeholder]=\"resolvedSearchPlaceholder()\" [ariaLabel]=\"resolvedSearchPlaceholder()\"\n (search)=\"onSearchChange($event)\" (keydown.enter)=\"$event.preventDefault()\" />\n </div>\n }\n @if (showSelectAll()) {\n <button type=\"button\" class=\"bx-select-all\" role=\"checkbox\" [attr.aria-checked]=\"selectAllChecked() ? 'true' : someSelected() ? 'mixed' : 'false'\"\n [disabled]=\"disabled() || isReadonly()\" (click)=\"toggleSelectAll()\">\n <bx-checkbox-indicator [checked]=\"selectAllChecked()\" [indeterminate]=\"!selectAllChecked() && someSelected()\" [disabled]=\"disabled()\" />\n {{ resolvedSelectAllLabel() }}\n </button>\n }\n <div class=\"bx-select-menu-container\" bxLoadMore #pagination=\"bxLoadMore\" [loadMoreHasMore]=\"hasMore()\" [loadMoreSuppressed]=\"isSearching()\" [loadMoreLoading]=\"loading()\"\n [loadMoreDisabled]=\"disabled() || isReadonly()\" [loadMoreError]=\"loadError()\" [loadMoreConfig]=\"loadMoreConfig()\"\n [loadMoreTemplate]=\"loadMoreTemplate()\" [loadMoreRevision]=\"options()\" (loadMore)=\"requestMore($event)\">\n <div role=\"listbox\" [hidden]=\"isSearching()\" [attr.aria-multiselectable]=\"true\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [id]=\"controlId() + '-options'\">\n @for (option of filteredOptions(); track option.value; let index = $index) {\n @if (option.resolvedGroup && (index === 0 || filteredOptions()[index - 1].resolvedGroup !== option.resolvedGroup)) {\n <div class=\"bx-select-group\" [id]=\"controlId() + '-group-' + index\">{{ option.resolvedGroup }}</div>\n }\n <button type=\"button\" class=\"bx-select-option\" role=\"option\" tabindex=\"-1\" [attr.aria-selected]=\"isSelected(option.value)\"\n [disabled]=\"option.disabled || option.groupDisabled || false\" (click)=\"selectOption(option)\">\n <bx-checkbox-indicator [checked]=\"isSelected(option.value)\" [disabled]=\"disabled() || !!option.disabled || !!option.groupDisabled\" />\n @if (option.icon) { <bx-icon [name]=\"option.icon\" size=\"16\" /> }\n @if (optionTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: option, selected: isSelected(option.value), index: index }\" />\n } @else { <span>{{ option.resolvedStr }}</span> }\n </button>\n } @empty {\n @if (!loading()) { <div class=\"bx-select-empty\" role=\"status\">{{ resolvedEmptyMessage() }}</div> }\n }\n </div>\n @if (isSearching()) {\n <div class=\"bx-select-search-state\" role=\"status\" [attr.aria-label]=\"resolvedLoadingLabel() || resolvedLoadingAriaLabel()\">\n @if (resolvedLoadingLabel()) { <span>{{ resolvedLoadingLabel() }}</span> }\n @else { <bx-loading-spinner [size]=\"20\" [decorative]=\"true\" /> }\n </div>\n } @else if (loading() && !pagination.actionVisible()) { <div class=\"bx-select-loading\"><bx-loading-indicator [size]=\"16\" [label]=\"loadingLabel() ?? loadingAriaLabel()\" /></div> }\n </div>\n </div>\n </ng-template>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n",
|
|
5370
|
+
styles: [":host{display:block;width:100%}.bx-select-trigger{position:relative;display:flex;align-items:center;width:100%;box-sizing:border-box;background-color:var(--bx-bg-neutral);border-radius:.25rem .25rem 0 0;border:none;border-bottom:1px solid var(--bx-border-strong);padding:0;padding-inline-end:.75rem;cursor:pointer;text-align:left;font-family:inherit;outline:none}.bx-select-trigger:hover:not(:disabled,.is-readonly){background-color:var(--bx-bg-neutral-hover)}.bx-select-trigger:disabled{background-color:var(--bx-bg-element);opacity:.7;border-bottom-style:dotted;cursor:not-allowed}.bx-select-trigger.is-readonly{cursor:default}.bx-select-trigger:after{content:\"\";position:absolute;bottom:-1px;left:0;right:0;height:2px;background-color:var(--bx-primary);transform:scaleX(0);transition:transform .2s cubic-bezier(.25,.8,.25,1);transform-origin:center;z-index:2}.bx-select-trigger.is-open:after,.bx-select-trigger:focus-visible:not(:disabled):after{transform:scaleX(1)}.bx-select-trigger.is-invalid{border-bottom-color:var(--bx-border-danger)}.bx-select-trigger.is-invalid:after{background-color:var(--bx-border-danger);transform:scaleX(1)}.bx-select-container{flex:1;min-width:0;position:relative;display:flex;flex-direction:column;overflow:hidden}.bx-select-value{width:100%;box-sizing:border-box;padding:1.5rem 0 .5rem .75rem;min-height:3rem;display:block;font-size:1rem;color:var(--bx-text-heading);line-height:1.4;z-index:1}.bx-select-value.is-placeholder{color:var(--bx-text-secondary)}.bx-floating-label{display:flex;align-items:baseline;position:absolute;left:.75rem;top:50%;transform:translateY(-50%);font-size:1rem;color:var(--bx-text-secondary);pointer-events:none;z-index:2;transition:top .2s cubic-bezier(.25,.8,.25,1),transform .2s cubic-bezier(.25,.8,.25,1),font-size .2s cubic-bezier(.25,.8,.25,1),color .15s ease}.bx-select-trigger.is-floating .bx-floating-label{top:.5rem;transform:translateY(0);font-size:.75rem;font-weight:500}.bx-select-trigger.is-floating.is-open .bx-floating-label,.bx-select-trigger.is-floating:focus-visible:not(.is-readonly) .bx-floating-label{color:var(--bx-primary)}.bx-select-trigger.is-invalid .bx-floating-label{color:var(--bx-text-danger)!important}.bx-field-required{color:var(--bx-text-secondary);margin-left:.125rem}.bx-select-caret{flex-shrink:0;color:var(--bx-text-secondary);transition:transform .2s ease;margin-inline-start:.5rem;transform-origin:center}.is-open .bx-select-caret{transform:rotate(180deg)}.bx-select-panel{display:flex;flex-direction:column;box-sizing:border-box;min-width:100%;width:100%;max-width:100%;background-color:var(--bx-glass-surface, var(--bx-bg-surface));border:1px solid var(--bx-glass-edge, var(--bx-border-default));border-radius:.75rem;box-shadow:0 2px 4px #0000001a,0 1px 2px -1px #0000001a;overflow:hidden;max-height:18rem}.bx-select-search-container{display:flex;align-items:center;padding:.25rem;flex-shrink:0;border-bottom:1px solid var(--bx-border-subtle)}.bx-select-menu-container{min-height:0;overflow:hidden auto;padding:.25rem}.bx-select-menu-container::-webkit-scrollbar{width:6px}.bx-select-menu-container::-webkit-scrollbar-track{background:var(--bx-scroll-bg)}.bx-select-menu-container::-webkit-scrollbar-thumb{background:var(--bx-scroll-thumb);border-radius:9999px}.bx-select-menu-container::-webkit-scrollbar-thumb:hover{background:var(--bx-scroll-thumb-hover)}.bx-select-option{display:flex;width:100%;padding:.5rem .75rem;border:0;border-radius:.25rem;background:transparent;color:var(--bx-text-primary);font:inherit;font-size:.875rem;line-height:1.4;text-align:start;cursor:pointer}.bx-select-option[aria-selected=true]{background:var(--bx-accent-subtle);color:var(--bx-text-accent)}.bx-select-option:hover:not(:disabled),.bx-select-option:active:not(:disabled){background:var(--bx-bg-element-hover)}.bx-select-option[aria-selected=true]:hover:not(:disabled){background:var(--bx-accent-subtle)}.bx-select-option:focus-visible{outline:2px solid var(--bx-border-accent);outline-offset:-2px}.bx-select-option:disabled{opacity:.4;cursor:not-allowed}.bx-select-item-inner{display:flex;align-items:center;gap:.5rem;width:100%}.bx-select-check-placeholder{width:16px;height:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--bx-text-accent)}.bx-select-empty{padding:.75rem;text-align:center;color:var(--bx-text-secondary);font-size:.875rem;font-style:italic}.bx-select-trigger[data-bx-surface]{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-shadow: none}.bx-select-trigger[data-bx-surface].is-invalid{--bx-glass-edge: var(--bx-border-danger)}.bx-select-panel[data-bx-surface]{--bx-glass-radius: var(--bx-rounded-lg, .75rem);--bx-glass-surface: var(--bx-bg-surface);--bx-glass-text: var(--bx-text-primary);--bx-glass-edge: var(--bx-border-default);--bx-glass-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);background:var(--bx-glass-surface)!important;-webkit-backdrop-filter:none;backdrop-filter:none}.bx-select-trigger[data-bx-surface]{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-min-opacity: .45;--bx-glass-edge: var(--bx-border-default);--bx-glass-shadow: none;border:1px solid var(--bx-glass-edge);border-radius:.75rem}.bx-select-trigger[data-bx-surface]:after{display:none}.bx-select-trigger[data-bx-surface]:focus-within:not(.is-disabled,:disabled,.is-readonly,[readonly],[aria-readonly=true],:has([readonly],[aria-readonly=true])),.bx-select-trigger[data-bx-surface]:focus-visible:not(:disabled,[readonly],[aria-readonly=true]),.bx-select-trigger[data-bx-surface].is-open:not(:disabled),.bx-select-trigger[data-bx-surface].is-readonly.is-keyboard-focused:focus-within,.bx-select-trigger[data-bx-surface]:has(.bx-readonly.is-keyboard-focused):focus-within{--bx-glass-edge: var(--bx-border-brand);outline:2px solid var(--bx-border-brand);outline-offset:-2px;--bx-glass-shadow: none}.bx-select-trigger[data-bx-surface].is-invalid{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-min-opacity: .45;--bx-glass-edge: color-mix(in srgb, var(--bx-text-danger) 40%, var(--bx-border-default));border-block-end-color:var(--bx-glass-edge);--bx-glass-shadow: 0 8px 18px -10px color-mix(in srgb, var(--bx-text-danger) 65%, transparent);outline-color:var(--bx-border-danger)}.bx-select-trigger.is-floating .bx-floating-label{position:static;transform:none;padding:.5rem 0 0 .75rem;overflow-wrap:anywhere}.bx-select-trigger.is-floating .bx-select-value{padding-top:.25rem;min-height:2rem}.bx-select-trigger:not(.is-floating) .bx-floating-label{right:0}.bx-select-item-inner>span:last-child{flex:1 1 auto;min-width:0;white-space:normal;overflow-wrap:anywhere}.bx-select-group{padding:.5rem .75rem;font-weight:600;color:var(--bx-text-secondary);font-size:.75rem}.bx-select-option{align-items:center;gap:.5rem}.bx-select-panel{max-block-size:min(var(--bx-select-panel-height, 22rem),70dvh)}.bx-select-menu-container{flex:1 1 auto}.bx-select-trigger.is-outline{border:1px solid var(--bx-border-strong);border-radius:var(--bx-field-radius, .5rem)}.bx-select-trigger.is-outline.is-invalid{border-color:var(--bx-border-danger)}.bx-select-panel{background:var(--bx-select-panel-background, var(--bx-bg-surface-alt));border-color:var(--bx-select-panel-border, var(--bx-border-strong));box-shadow:var(--bx-select-panel-shadow, 0 12px 20px -3px rgba(0, 0, 0, .2), 0 4px 6px -2px rgba(0, 0, 0, .1));isolation:isolate}.bx-select-measure{position:absolute;visibility:hidden;pointer-events:none;inset-inline:0;box-sizing:border-box;padding-inline-start:.75rem;font:inherit;font-size:1rem}.bx-select-caret{display:inline-flex;align-items:center;justify-content:center;inline-size:1rem;block-size:1rem}.bx-select-loading{padding:.5rem .75rem}.bx-select-menu-container{--bx-load-more-padding: .5rem .75rem}.bx-select-search-state{display:flex;justify-content:center;align-items:center;min-block-size:4rem;padding:.75rem;color:var(--bx-text-secondary)}[role=listbox][hidden]{display:none}.bx-selected-tags{display:flex;align-items:center;gap:var(--bx-select-tag-gap, .25rem);min-inline-size:0;max-inline-size:100%;overflow:hidden}.bx-selected-tags>bx-tag{min-inline-size:0}.bx-selected-tags>.bx-overflow-tag{flex:0 0 auto}[role=listbox]{display:flex;flex-direction:column;gap:var(--bx-select-option-gap, .25rem)}.bx-select-option>span:last-child{min-inline-size:0;overflow-wrap:anywhere}.bx-select-control{position:relative;inline-size:100%;min-inline-size:0}.bx-select-control.has-clear .bx-select-container{padding-inline-end:2rem}.bx-select-control.has-clear .bx-select-measure{inset-inline-end:2rem}.bx-select-clear.bx-btn{transition-property:color;transition-duration:calc(.15s * (1 - var(--bx-reduced-motion, 0)));transition-timing-function:ease;display:flex;align-items:center;justify-content:center;box-sizing:border-box;background:transparent;border:none;padding:.25rem;inline-size:1.5rem;block-size:1.5rem;border-radius:.25rem;color:var(--bx-text-secondary);cursor:pointer;flex-shrink:0}.bx-select-clear.bx-btn:focus-visible{outline:2px solid var(--bx-border-brand);outline-offset:0}.bx-select-clear.bx-btn:hover:not(:disabled){color:var(--bx-text-primary);background:var(--bx-bg-element-hover)}.bx-select-clear.bx-btn:disabled{cursor:not-allowed;opacity:.5}.bx-select-clear.bx-btn{position:absolute;inset-block-start:50%;inset-inline-end:calc(1px + 2.25rem);transform:translateY(-50%);z-index:3}.bx-select-all{display:flex;align-items:center;gap:.5rem;padding:.75rem;border:0;border-bottom:1px solid var(--bx-border-subtle);background:transparent;color:var(--bx-text-primary);font:inherit;text-align:start;cursor:pointer}.bx-select-all:focus-visible{outline:2px solid var(--bx-border-brand);outline-offset:-2px}\n"],
|
|
5144
5371
|
dependencies: [
|
|
5145
5372
|
{
|
|
5146
5373
|
kind: "directive",
|
|
@@ -5228,6 +5455,32 @@ var MultiSelect = class MultiSelect extends BxSelectBase {
|
|
|
5228
5455
|
"subscriptSizing"
|
|
5229
5456
|
]
|
|
5230
5457
|
},
|
|
5458
|
+
{
|
|
5459
|
+
kind: "component",
|
|
5460
|
+
type: Button,
|
|
5461
|
+
selector: "bx-button, button[bx-button], a[bx-button]",
|
|
5462
|
+
inputs: [
|
|
5463
|
+
"variant",
|
|
5464
|
+
"color",
|
|
5465
|
+
"outlined",
|
|
5466
|
+
"elevated",
|
|
5467
|
+
"disabled",
|
|
5468
|
+
"loading",
|
|
5469
|
+
"interactive",
|
|
5470
|
+
"surfaceEffects"
|
|
5471
|
+
]
|
|
5472
|
+
},
|
|
5473
|
+
{
|
|
5474
|
+
kind: "component",
|
|
5475
|
+
type: CheckboxIndicator,
|
|
5476
|
+
selector: "bx-checkbox-indicator",
|
|
5477
|
+
inputs: [
|
|
5478
|
+
"checked",
|
|
5479
|
+
"indeterminate",
|
|
5480
|
+
"invalid",
|
|
5481
|
+
"disabled"
|
|
5482
|
+
]
|
|
5483
|
+
},
|
|
5231
5484
|
{
|
|
5232
5485
|
kind: "component",
|
|
5233
5486
|
type: Icon,
|
|
@@ -5360,6 +5613,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
5360
5613
|
BxSurfaceDirective,
|
|
5361
5614
|
OverlayModule,
|
|
5362
5615
|
FormField,
|
|
5616
|
+
Button,
|
|
5617
|
+
CheckboxIndicator,
|
|
5363
5618
|
Icon,
|
|
5364
5619
|
SearchInput,
|
|
5365
5620
|
LoadMoreDirective,
|
|
@@ -5371,8 +5626,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
5371
5626
|
Tag
|
|
5372
5627
|
],
|
|
5373
5628
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5374
|
-
template: "<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [showLoadingIndicator]=\"false\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <button type=\"button\" role=\"combobox\" aria-haspopup=\"listbox\" [bxTooltip]=\"selectionTooltip()\" [bxTooltipHover]=\"selectionDisplay() !== 'tags'\" [bxTooltipTouch]=\"selectionDisplay() === 'tags' ? 'none' : 'longpress'\" cdkOverlayOrigin bxSurface #origin=\"cdkOverlayOrigin\" class=\"bx-select-trigger\"\n [class.is-invalid]=\"showError()\" [class.is-outline]=\"resolvedAppearance() === 'outline'\" [class.is-open]=\"isOpen()\" [class.is-floating]=\"isFloating()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\"\n [id]=\"controlId()\" [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"describedBy()\" [attr.aria-invalid]=\"showError()\" [attr.aria-required]=\"required()\" [attr.aria-readonly]=\"isReadonly()\" [attr.aria-busy]=\"loading() || pending() || isSearching()\"\n [disabled]=\"disabled()\" (click)=\"toggleOpen()\" (keydown)=\"onTriggerKey($event)\" (blur)=\"onTriggerBlur()\"\n [attr.aria-expanded]=\"isOpen()\" [attr.aria-controls]=\"isPanelAttached() ? controlId() + '-options' : null\">\n <div class=\"bx-select-container\">\n @if (label()) {\n <span class=\"bx-floating-label\"><span [bxTruncate]=\"!isFloating()\" #labelOverflow=\"bxTruncate\">{{ resolvedLabel() }}</span>\n @if (required() && !resolvedHideRequiredMarker()) { <span class=\"bx-field-required\" aria-hidden=\"true\">*</span> }\n </span>\n }\n <span class=\"bx-select-value\" [class.is-placeholder]=\"!selectedOptionLabel()\" [bxTruncate]=\"!(selectionDisplay() === 'tags' && selectedOptions().length) && !triggerTemplate()\" #valueOverflow=\"bxTruncate\">\n @if (triggerTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"triggerContext()\" />\n } @else if (selectionDisplay() === 'tags' && selectedOptions().length) {\n <span class=\"bx-selected-tags\">\n @if (selectAll() && allSelectedText()) {\n <bx-tag [text]=\"allSelectedText()\" [config]=\"tagConfig()\" [focusable]=\"false\" [tooltipOnTruncate]=\"
|
|
5375
|
-
styles: [":host{display:block;width:100%}.bx-select-trigger{position:relative;display:flex;align-items:center;width:100%;box-sizing:border-box;background-color:var(--bx-bg-neutral);border-radius:.25rem .25rem 0 0;border:none;border-bottom:1px solid var(--bx-border-strong);padding:0
|
|
5629
|
+
template: "<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [showLoadingIndicator]=\"false\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <div class=\"bx-select-control\" [class.has-clear]=\"showClear()\">\n <button type=\"button\" role=\"combobox\" aria-haspopup=\"listbox\" [bxTooltip]=\"selectionTooltip()\" [bxTooltipHover]=\"selectionDisplay() !== 'tags' || (selectAll() && !!allSelectedText())\" [bxTooltipTouch]=\"selectionDisplay() === 'tags' && !(selectAll() && allSelectedText()) ? 'none' : 'longpress'\" cdkOverlayOrigin bxSurface #origin=\"cdkOverlayOrigin\" class=\"bx-select-trigger\"\n [class.is-invalid]=\"showError()\" [class.is-outline]=\"resolvedAppearance() === 'outline'\" [class.is-open]=\"isOpen()\" [class.is-floating]=\"isFloating()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\"\n [id]=\"controlId()\" [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"describedBy()\" [attr.aria-invalid]=\"showError()\" [attr.aria-required]=\"required()\" [attr.aria-readonly]=\"isReadonly()\" [attr.aria-busy]=\"loading() || pending() || isSearching()\"\n [disabled]=\"disabled()\" (click)=\"toggleOpen()\" (keydown)=\"onTriggerKey($event)\" (blur)=\"onTriggerBlur()\"\n [attr.aria-expanded]=\"isOpen()\" [attr.aria-controls]=\"isPanelAttached() ? controlId() + '-options' : null\">\n <div class=\"bx-select-container\">\n @if (label()) {\n <span class=\"bx-floating-label\"><span [bxTruncate]=\"!isFloating()\" #labelOverflow=\"bxTruncate\">{{ resolvedLabel() }}</span>\n @if (required() && !resolvedHideRequiredMarker()) { <span class=\"bx-field-required\" aria-hidden=\"true\">*</span> }\n </span>\n }\n <span class=\"bx-select-value\" [class.is-placeholder]=\"!selectedOptionLabel()\" [bxTruncate]=\"!(selectionDisplay() === 'tags' && selectedOptions().length) && !triggerTemplate()\" #valueOverflow=\"bxTruncate\">\n @if (triggerTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"triggerContext()\" />\n } @else if (selectionDisplay() === 'tags' && selectedOptions().length) {\n <span class=\"bx-selected-tags\">\n @if (selectAll() && allSelectedText()) {\n <bx-tag [text]=\"allSelectedText()\" [config]=\"tagConfig()\" [focusable]=\"false\" [tooltip]=\"''\" [tooltipOnTruncate]=\"false\" />\n } @else {\n @for (option of visibleTags(); track option.value) {\n <bx-tag [text]=\"option.label\" [config]=\"selectionTagConfig(option)\" [disabled]=\"disabled() || !!option.disabled\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n @if (selectedOptions().length > visibleTagCount()) {\n <bx-tag class=\"bx-overflow-tag\" [text]=\"overflowTagLabel()\" [config]=\"overflowTagConfig()\" [tooltip]=\"overflowTagTooltip()\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n }\n </span>\n } @else { {{ displayedSelection() || (isFloating() || !label() ? resolvedPlaceholder() : '') }} }\n </span>\n <span class=\"bx-select-measure\" bxTruncate #summaryOverflow=\"bxTruncate\" aria-hidden=\"true\">{{ selectedOptionLabel() }}</span>\n </div>\n <ng-content select=\"[bxSuffix]\" />\n <span class=\"bx-select-caret\" aria-hidden=\"true\">\n @if (loading() || pending() || isSearching()) { <bx-loading-spinner [size]=\"16\" [decorative]=\"true\" /> }\n @else { <bx-icon name=\"chevron-down\" size=\"16\" /> }\n </span>\n </button>\n @if (showClear()) {\n <button bx-button type=\"button\" variant=\"text\" class=\"bx-select-clear\" [surfaceEffects]=\"false\" [disabled]=\"disabled()\"\n [attr.aria-label]=\"resolvedClearLabel()\" [bxTooltip]=\"resolvedClearTooltip()\" (click)=\"clearSelection()\">\n <bx-icon name=\"x\" size=\"16\" />\n </button>\n }\n </div>\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"origin\" [cdkConnectedOverlayOpen]=\"isPanelAttached()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\" [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayScrollStrategy]=\"panelScrollStrategy\" [cdkConnectedOverlayUsePopover]=\"overlayPopoverLocation(origin.elementRef.nativeElement)\"\n [cdkConnectedOverlayWidth]=\"origin.elementRef.nativeElement.offsetWidth\"\n (overlayOutsideClick)=\"onOutsideClick($event)\" (attach)=\"onPanelAttach()\" (detach)=\"onPanelDetach()\" (positionChange)=\"refreshPanel()\">\n <div class=\"bx-select-panel\" [class]=\"panelClass()\" data-bx-surface=\"solid\" tabindex=\"-1\" (keydown)=\"onPanelKey($event)\">\n @if (isSearchable()) {\n <div class=\"bx-select-search-container\">\n <bx-search-input #searchInput [value]=\"searchValue()\" [placeholder]=\"resolvedSearchPlaceholder()\" [ariaLabel]=\"resolvedSearchPlaceholder()\"\n (search)=\"onSearchChange($event)\" (keydown.enter)=\"$event.preventDefault()\" />\n </div>\n }\n @if (showSelectAll()) {\n <button type=\"button\" class=\"bx-select-all\" role=\"checkbox\" [attr.aria-checked]=\"selectAllChecked() ? 'true' : someSelected() ? 'mixed' : 'false'\"\n [disabled]=\"disabled() || isReadonly()\" (click)=\"toggleSelectAll()\">\n <bx-checkbox-indicator [checked]=\"selectAllChecked()\" [indeterminate]=\"!selectAllChecked() && someSelected()\" [disabled]=\"disabled()\" />\n {{ resolvedSelectAllLabel() }}\n </button>\n }\n <div class=\"bx-select-menu-container\" bxLoadMore #pagination=\"bxLoadMore\" [loadMoreHasMore]=\"hasMore()\" [loadMoreSuppressed]=\"isSearching()\" [loadMoreLoading]=\"loading()\"\n [loadMoreDisabled]=\"disabled() || isReadonly()\" [loadMoreError]=\"loadError()\" [loadMoreConfig]=\"loadMoreConfig()\"\n [loadMoreTemplate]=\"loadMoreTemplate()\" [loadMoreRevision]=\"options()\" (loadMore)=\"requestMore($event)\">\n <div role=\"listbox\" [hidden]=\"isSearching()\" [attr.aria-multiselectable]=\"true\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [id]=\"controlId() + '-options'\">\n @for (option of filteredOptions(); track option.value; let index = $index) {\n @if (option.resolvedGroup && (index === 0 || filteredOptions()[index - 1].resolvedGroup !== option.resolvedGroup)) {\n <div class=\"bx-select-group\" [id]=\"controlId() + '-group-' + index\">{{ option.resolvedGroup }}</div>\n }\n <button type=\"button\" class=\"bx-select-option\" role=\"option\" tabindex=\"-1\" [attr.aria-selected]=\"isSelected(option.value)\"\n [disabled]=\"option.disabled || option.groupDisabled || false\" (click)=\"selectOption(option)\">\n <bx-checkbox-indicator [checked]=\"isSelected(option.value)\" [disabled]=\"disabled() || !!option.disabled || !!option.groupDisabled\" />\n @if (option.icon) { <bx-icon [name]=\"option.icon\" size=\"16\" /> }\n @if (optionTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: option, selected: isSelected(option.value), index: index }\" />\n } @else { <span>{{ option.resolvedStr }}</span> }\n </button>\n } @empty {\n @if (!loading()) { <div class=\"bx-select-empty\" role=\"status\">{{ resolvedEmptyMessage() }}</div> }\n }\n </div>\n @if (isSearching()) {\n <div class=\"bx-select-search-state\" role=\"status\" [attr.aria-label]=\"resolvedLoadingLabel() || resolvedLoadingAriaLabel()\">\n @if (resolvedLoadingLabel()) { <span>{{ resolvedLoadingLabel() }}</span> }\n @else { <bx-loading-spinner [size]=\"20\" [decorative]=\"true\" /> }\n </div>\n } @else if (loading() && !pagination.actionVisible()) { <div class=\"bx-select-loading\"><bx-loading-indicator [size]=\"16\" [label]=\"loadingLabel() ?? loadingAriaLabel()\" /></div> }\n </div>\n </div>\n </ng-template>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n",
|
|
5630
|
+
styles: [":host{display:block;width:100%}.bx-select-trigger{position:relative;display:flex;align-items:center;width:100%;box-sizing:border-box;background-color:var(--bx-bg-neutral);border-radius:.25rem .25rem 0 0;border:none;border-bottom:1px solid var(--bx-border-strong);padding:0;padding-inline-end:.75rem;cursor:pointer;text-align:left;font-family:inherit;outline:none}.bx-select-trigger:hover:not(:disabled,.is-readonly){background-color:var(--bx-bg-neutral-hover)}.bx-select-trigger:disabled{background-color:var(--bx-bg-element);opacity:.7;border-bottom-style:dotted;cursor:not-allowed}.bx-select-trigger.is-readonly{cursor:default}.bx-select-trigger:after{content:\"\";position:absolute;bottom:-1px;left:0;right:0;height:2px;background-color:var(--bx-primary);transform:scaleX(0);transition:transform .2s cubic-bezier(.25,.8,.25,1);transform-origin:center;z-index:2}.bx-select-trigger.is-open:after,.bx-select-trigger:focus-visible:not(:disabled):after{transform:scaleX(1)}.bx-select-trigger.is-invalid{border-bottom-color:var(--bx-border-danger)}.bx-select-trigger.is-invalid:after{background-color:var(--bx-border-danger);transform:scaleX(1)}.bx-select-container{flex:1;min-width:0;position:relative;display:flex;flex-direction:column;overflow:hidden}.bx-select-value{width:100%;box-sizing:border-box;padding:1.5rem 0 .5rem .75rem;min-height:3rem;display:block;font-size:1rem;color:var(--bx-text-heading);line-height:1.4;z-index:1}.bx-select-value.is-placeholder{color:var(--bx-text-secondary)}.bx-floating-label{display:flex;align-items:baseline;position:absolute;left:.75rem;top:50%;transform:translateY(-50%);font-size:1rem;color:var(--bx-text-secondary);pointer-events:none;z-index:2;transition:top .2s cubic-bezier(.25,.8,.25,1),transform .2s cubic-bezier(.25,.8,.25,1),font-size .2s cubic-bezier(.25,.8,.25,1),color .15s ease}.bx-select-trigger.is-floating .bx-floating-label{top:.5rem;transform:translateY(0);font-size:.75rem;font-weight:500}.bx-select-trigger.is-floating.is-open .bx-floating-label,.bx-select-trigger.is-floating:focus-visible:not(.is-readonly) .bx-floating-label{color:var(--bx-primary)}.bx-select-trigger.is-invalid .bx-floating-label{color:var(--bx-text-danger)!important}.bx-field-required{color:var(--bx-text-secondary);margin-left:.125rem}.bx-select-caret{flex-shrink:0;color:var(--bx-text-secondary);transition:transform .2s ease;margin-inline-start:.5rem;transform-origin:center}.is-open .bx-select-caret{transform:rotate(180deg)}.bx-select-panel{display:flex;flex-direction:column;box-sizing:border-box;min-width:100%;width:100%;max-width:100%;background-color:var(--bx-glass-surface, var(--bx-bg-surface));border:1px solid var(--bx-glass-edge, var(--bx-border-default));border-radius:.75rem;box-shadow:0 2px 4px #0000001a,0 1px 2px -1px #0000001a;overflow:hidden;max-height:18rem}.bx-select-search-container{display:flex;align-items:center;padding:.25rem;flex-shrink:0;border-bottom:1px solid var(--bx-border-subtle)}.bx-select-menu-container{min-height:0;overflow:hidden auto;padding:.25rem}.bx-select-menu-container::-webkit-scrollbar{width:6px}.bx-select-menu-container::-webkit-scrollbar-track{background:var(--bx-scroll-bg)}.bx-select-menu-container::-webkit-scrollbar-thumb{background:var(--bx-scroll-thumb);border-radius:9999px}.bx-select-menu-container::-webkit-scrollbar-thumb:hover{background:var(--bx-scroll-thumb-hover)}.bx-select-option{display:flex;width:100%;padding:.5rem .75rem;border:0;border-radius:.25rem;background:transparent;color:var(--bx-text-primary);font:inherit;font-size:.875rem;line-height:1.4;text-align:start;cursor:pointer}.bx-select-option[aria-selected=true]{background:var(--bx-accent-subtle);color:var(--bx-text-accent)}.bx-select-option:hover:not(:disabled),.bx-select-option:active:not(:disabled){background:var(--bx-bg-element-hover)}.bx-select-option[aria-selected=true]:hover:not(:disabled){background:var(--bx-accent-subtle)}.bx-select-option:focus-visible{outline:2px solid var(--bx-border-accent);outline-offset:-2px}.bx-select-option:disabled{opacity:.4;cursor:not-allowed}.bx-select-item-inner{display:flex;align-items:center;gap:.5rem;width:100%}.bx-select-check-placeholder{width:16px;height:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--bx-text-accent)}.bx-select-empty{padding:.75rem;text-align:center;color:var(--bx-text-secondary);font-size:.875rem;font-style:italic}.bx-select-trigger[data-bx-surface]{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-shadow: none}.bx-select-trigger[data-bx-surface].is-invalid{--bx-glass-edge: var(--bx-border-danger)}.bx-select-panel[data-bx-surface]{--bx-glass-radius: var(--bx-rounded-lg, .75rem);--bx-glass-surface: var(--bx-bg-surface);--bx-glass-text: var(--bx-text-primary);--bx-glass-edge: var(--bx-border-default);--bx-glass-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);background:var(--bx-glass-surface)!important;-webkit-backdrop-filter:none;backdrop-filter:none}.bx-select-trigger[data-bx-surface]{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-min-opacity: .45;--bx-glass-edge: var(--bx-border-default);--bx-glass-shadow: none;border:1px solid var(--bx-glass-edge);border-radius:.75rem}.bx-select-trigger[data-bx-surface]:after{display:none}.bx-select-trigger[data-bx-surface]:focus-within:not(.is-disabled,:disabled,.is-readonly,[readonly],[aria-readonly=true],:has([readonly],[aria-readonly=true])),.bx-select-trigger[data-bx-surface]:focus-visible:not(:disabled,[readonly],[aria-readonly=true]),.bx-select-trigger[data-bx-surface].is-open:not(:disabled),.bx-select-trigger[data-bx-surface].is-readonly.is-keyboard-focused:focus-within,.bx-select-trigger[data-bx-surface]:has(.bx-readonly.is-keyboard-focused):focus-within{--bx-glass-edge: var(--bx-border-brand);outline:2px solid var(--bx-border-brand);outline-offset:-2px;--bx-glass-shadow: none}.bx-select-trigger[data-bx-surface].is-invalid{--bx-glass-surface: var(--bx-bg-neutral);--bx-glass-min-opacity: .45;--bx-glass-edge: color-mix(in srgb, var(--bx-text-danger) 40%, var(--bx-border-default));border-block-end-color:var(--bx-glass-edge);--bx-glass-shadow: 0 8px 18px -10px color-mix(in srgb, var(--bx-text-danger) 65%, transparent);outline-color:var(--bx-border-danger)}.bx-select-trigger.is-floating .bx-floating-label{position:static;transform:none;padding:.5rem 0 0 .75rem;overflow-wrap:anywhere}.bx-select-trigger.is-floating .bx-select-value{padding-top:.25rem;min-height:2rem}.bx-select-trigger:not(.is-floating) .bx-floating-label{right:0}.bx-select-item-inner>span:last-child{flex:1 1 auto;min-width:0;white-space:normal;overflow-wrap:anywhere}.bx-select-group{padding:.5rem .75rem;font-weight:600;color:var(--bx-text-secondary);font-size:.75rem}.bx-select-option{align-items:center;gap:.5rem}.bx-select-panel{max-block-size:min(var(--bx-select-panel-height, 22rem),70dvh)}.bx-select-menu-container{flex:1 1 auto}.bx-select-trigger.is-outline{border:1px solid var(--bx-border-strong);border-radius:var(--bx-field-radius, .5rem)}.bx-select-trigger.is-outline.is-invalid{border-color:var(--bx-border-danger)}.bx-select-panel{background:var(--bx-select-panel-background, var(--bx-bg-surface-alt));border-color:var(--bx-select-panel-border, var(--bx-border-strong));box-shadow:var(--bx-select-panel-shadow, 0 12px 20px -3px rgba(0, 0, 0, .2), 0 4px 6px -2px rgba(0, 0, 0, .1));isolation:isolate}.bx-select-measure{position:absolute;visibility:hidden;pointer-events:none;inset-inline:0;box-sizing:border-box;padding-inline-start:.75rem;font:inherit;font-size:1rem}.bx-select-caret{display:inline-flex;align-items:center;justify-content:center;inline-size:1rem;block-size:1rem}.bx-select-loading{padding:.5rem .75rem}.bx-select-menu-container{--bx-load-more-padding: .5rem .75rem}.bx-select-search-state{display:flex;justify-content:center;align-items:center;min-block-size:4rem;padding:.75rem;color:var(--bx-text-secondary)}[role=listbox][hidden]{display:none}.bx-selected-tags{display:flex;align-items:center;gap:var(--bx-select-tag-gap, .25rem);min-inline-size:0;max-inline-size:100%;overflow:hidden}.bx-selected-tags>bx-tag{min-inline-size:0}.bx-selected-tags>.bx-overflow-tag{flex:0 0 auto}[role=listbox]{display:flex;flex-direction:column;gap:var(--bx-select-option-gap, .25rem)}.bx-select-option>span:last-child{min-inline-size:0;overflow-wrap:anywhere}.bx-select-control{position:relative;inline-size:100%;min-inline-size:0}.bx-select-control.has-clear .bx-select-container{padding-inline-end:2rem}.bx-select-control.has-clear .bx-select-measure{inset-inline-end:2rem}.bx-select-clear.bx-btn{transition-property:color;transition-duration:calc(.15s * (1 - var(--bx-reduced-motion, 0)));transition-timing-function:ease;display:flex;align-items:center;justify-content:center;box-sizing:border-box;background:transparent;border:none;padding:.25rem;inline-size:1.5rem;block-size:1.5rem;border-radius:.25rem;color:var(--bx-text-secondary);cursor:pointer;flex-shrink:0}.bx-select-clear.bx-btn:focus-visible{outline:2px solid var(--bx-border-brand);outline-offset:0}.bx-select-clear.bx-btn:hover:not(:disabled){color:var(--bx-text-primary);background:var(--bx-bg-element-hover)}.bx-select-clear.bx-btn:disabled{cursor:not-allowed;opacity:.5}.bx-select-clear.bx-btn{position:absolute;inset-block-start:50%;inset-inline-end:calc(1px + 2.25rem);transform:translateY(-50%);z-index:3}.bx-select-all{display:flex;align-items:center;gap:.5rem;padding:.75rem;border:0;border-bottom:1px solid var(--bx-border-subtle);background:transparent;color:var(--bx-text-primary);font:inherit;text-align:start;cursor:pointer}.bx-select-all:focus-visible{outline:2px solid var(--bx-border-brand);outline-offset:-2px}\n"]
|
|
5376
5631
|
}]
|
|
5377
5632
|
}],
|
|
5378
5633
|
ctorParameters: () => [],
|
|
@@ -5381,6 +5636,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
5381
5636
|
type: i0.ViewChild,
|
|
5382
5637
|
args: ["summaryOverflow", { isSignal: true }]
|
|
5383
5638
|
}],
|
|
5639
|
+
allSelectedTooltip: [{
|
|
5640
|
+
type: i0.Input,
|
|
5641
|
+
args: [{
|
|
5642
|
+
isSignal: true,
|
|
5643
|
+
alias: "allSelectedTooltip",
|
|
5644
|
+
required: false
|
|
5645
|
+
}]
|
|
5646
|
+
}],
|
|
5384
5647
|
allSelectedText: [{
|
|
5385
5648
|
type: i0.Input,
|
|
5386
5649
|
args: [{
|
|
@@ -5650,7 +5913,7 @@ var RangeSlider = class RangeSlider extends BxValueControl {
|
|
|
5650
5913
|
usesInheritance: true,
|
|
5651
5914
|
ngImport: i0,
|
|
5652
5915
|
template: "<bx-form-field [control]=\"fieldControl\" [label]=\"label()\" [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [tooltip]=\"tooltip()\" [forId]=\"controlId()\">\n <div class=\"bx-range-slider\" role=\"group\" [class.is-readonly]=\"isReadonly() && !disabled()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [style.--bx-range-start]=\"startPercent() / 100\" [style.--bx-range-end]=\"endPercent() / 100\">\n <div class=\"bx-range-track\" aria-hidden=\"true\"></div>\n <div class=\"bx-range-input\">\n <input bxSlider type=\"range\" [id]=\"controlId()\" [min]=\"min()\" [max]=\"max()\" [attr.aria-valuemax]=\"end()\" [step]=\"step()\" [value]=\"start()\"\n [disabled]=\"disabled() || isReadonly()\" [attr.aria-label]=\"resolvedStartLabel()\" [attr.aria-valuetext]=\"displayWith()(start())\"\n [attr.aria-describedby]=\"describedBy()\" (input)=\"onRangeInput($event, 'start')\" (blur)=\"onBlur()\">\n </div>\n <div class=\"bx-range-input\">\n <input bxSlider type=\"range\" [min]=\"min()\" [max]=\"max()\" [attr.aria-valuemin]=\"start()\" [step]=\"step()\" [value]=\"end()\"\n [disabled]=\"disabled() || isReadonly()\" [attr.aria-label]=\"resolvedEndLabel()\" [attr.aria-valuetext]=\"displayWith()(end())\"\n [attr.aria-describedby]=\"describedBy()\" (input)=\"onRangeInput($event, 'end')\" (blur)=\"onBlur()\">\n </div>\n <div class=\"bx-range-ticks\" aria-hidden=\"true\">@for (tick of ticks(); track tick) { <span [style.inset-inline-start.%]=\"tick\"></span> }</div>\n </div>\n @if (discrete()) { <output class=\"bx-range-values\">{{ displayWith()(start()) }} – {{ displayWith()(end()) }}</output> }\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n",
|
|
5653
|
-
styles: [":host{display:block}.bx-range-slider{--bx-slider-lens-start: var(--bx-range-start);--bx-slider-lens-end: var(--bx-range-end);--bx-slider-lens-track-color: var(--bx-bg-
|
|
5916
|
+
styles: [":host{display:block}.bx-range-slider{--bx-slider-lens-start: var(--bx-range-start);--bx-slider-lens-end: var(--bx-range-end);--bx-slider-lens-track-color: var(--bx-bg-neutral);--bx-slider-fill-display: none;position:relative;block-size:2.5rem;inline-size:100%}.bx-range-track{box-sizing:border-box;height:.5rem;border:1px solid var(--bx-border-strong);border-radius:9999px;background:var(--bx-bg-neutral);box-shadow:inset 0 1px 2px #00000029;position:absolute;inset-block-start:50%;inset-inline:0;transform:translateY(-50%)}.bx-range-track:after{content:\"\";position:absolute;inset-block:0;inset-inline:calc(var(--bx-slider-thumb-size, 1.5rem) / 2 - 1px + var(--bx-range-start) * (100% + 2px - var(--bx-slider-thumb-size, 1.5rem))) calc(var(--bx-slider-thumb-size, 1.5rem) / 2 - 1px + (1 - var(--bx-range-end)) * (100% + 2px - var(--bx-slider-thumb-size, 1.5rem)));background:var(--bx-accent);border-radius:inherit}.bx-range-input{position:absolute;inset:0;pointer-events:none}.bx-range-input input{pointer-events:none}.bx-range-slider.is-readonly input:disabled{cursor:default}.bx-range-input input::-webkit-slider-runnable-track{background:transparent;border-color:transparent;box-shadow:none}.bx-range-input input::-moz-range-track{background:transparent;border-color:transparent;box-shadow:none}.bx-range-input input::-webkit-slider-thumb{pointer-events:auto}.bx-range-input input::-moz-range-thumb{pointer-events:auto}.bx-range-ticks{position:absolute;inset-inline:calc(var(--bx-slider-thumb-size, 1.5rem) / 2);inset-block-start:50%;pointer-events:none;z-index:3}.bx-range-ticks span{position:absolute;inline-size:2px;block-size:4px;background:var(--bx-text-primary);transform:translate(-50%,-50%)}.bx-range-ticks span:dir(rtl){transform:translate(50%,-50%)}.bx-range-values{color:var(--bx-text-secondary);font-size:.875rem}\n"],
|
|
5654
5917
|
dependencies: [{
|
|
5655
5918
|
kind: "component",
|
|
5656
5919
|
type: FormField,
|
|
@@ -5697,7 +5960,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
5697
5960
|
imports: [FormField, SliderDirective],
|
|
5698
5961
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5699
5962
|
template: "<bx-form-field [control]=\"fieldControl\" [label]=\"label()\" [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [tooltip]=\"tooltip()\" [forId]=\"controlId()\">\n <div class=\"bx-range-slider\" role=\"group\" [class.is-readonly]=\"isReadonly() && !disabled()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [style.--bx-range-start]=\"startPercent() / 100\" [style.--bx-range-end]=\"endPercent() / 100\">\n <div class=\"bx-range-track\" aria-hidden=\"true\"></div>\n <div class=\"bx-range-input\">\n <input bxSlider type=\"range\" [id]=\"controlId()\" [min]=\"min()\" [max]=\"max()\" [attr.aria-valuemax]=\"end()\" [step]=\"step()\" [value]=\"start()\"\n [disabled]=\"disabled() || isReadonly()\" [attr.aria-label]=\"resolvedStartLabel()\" [attr.aria-valuetext]=\"displayWith()(start())\"\n [attr.aria-describedby]=\"describedBy()\" (input)=\"onRangeInput($event, 'start')\" (blur)=\"onBlur()\">\n </div>\n <div class=\"bx-range-input\">\n <input bxSlider type=\"range\" [min]=\"min()\" [max]=\"max()\" [attr.aria-valuemin]=\"start()\" [step]=\"step()\" [value]=\"end()\"\n [disabled]=\"disabled() || isReadonly()\" [attr.aria-label]=\"resolvedEndLabel()\" [attr.aria-valuetext]=\"displayWith()(end())\"\n [attr.aria-describedby]=\"describedBy()\" (input)=\"onRangeInput($event, 'end')\" (blur)=\"onBlur()\">\n </div>\n <div class=\"bx-range-ticks\" aria-hidden=\"true\">@for (tick of ticks(); track tick) { <span [style.inset-inline-start.%]=\"tick\"></span> }</div>\n </div>\n @if (discrete()) { <output class=\"bx-range-values\">{{ displayWith()(start()) }} – {{ displayWith()(end()) }}</output> }\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n",
|
|
5700
|
-
styles: [":host{display:block}.bx-range-slider{--bx-slider-lens-start: var(--bx-range-start);--bx-slider-lens-end: var(--bx-range-end);--bx-slider-lens-track-color: var(--bx-bg-
|
|
5963
|
+
styles: [":host{display:block}.bx-range-slider{--bx-slider-lens-start: var(--bx-range-start);--bx-slider-lens-end: var(--bx-range-end);--bx-slider-lens-track-color: var(--bx-bg-neutral);--bx-slider-fill-display: none;position:relative;block-size:2.5rem;inline-size:100%}.bx-range-track{box-sizing:border-box;height:.5rem;border:1px solid var(--bx-border-strong);border-radius:9999px;background:var(--bx-bg-neutral);box-shadow:inset 0 1px 2px #00000029;position:absolute;inset-block-start:50%;inset-inline:0;transform:translateY(-50%)}.bx-range-track:after{content:\"\";position:absolute;inset-block:0;inset-inline:calc(var(--bx-slider-thumb-size, 1.5rem) / 2 - 1px + var(--bx-range-start) * (100% + 2px - var(--bx-slider-thumb-size, 1.5rem))) calc(var(--bx-slider-thumb-size, 1.5rem) / 2 - 1px + (1 - var(--bx-range-end)) * (100% + 2px - var(--bx-slider-thumb-size, 1.5rem)));background:var(--bx-accent);border-radius:inherit}.bx-range-input{position:absolute;inset:0;pointer-events:none}.bx-range-input input{pointer-events:none}.bx-range-slider.is-readonly input:disabled{cursor:default}.bx-range-input input::-webkit-slider-runnable-track{background:transparent;border-color:transparent;box-shadow:none}.bx-range-input input::-moz-range-track{background:transparent;border-color:transparent;box-shadow:none}.bx-range-input input::-webkit-slider-thumb{pointer-events:auto}.bx-range-input input::-moz-range-thumb{pointer-events:auto}.bx-range-ticks{position:absolute;inset-inline:calc(var(--bx-slider-thumb-size, 1.5rem) / 2);inset-block-start:50%;pointer-events:none;z-index:3}.bx-range-ticks span{position:absolute;inline-size:2px;block-size:4px;background:var(--bx-text-primary);transform:translate(-50%,-50%)}.bx-range-ticks span:dir(rtl){transform:translate(50%,-50%)}.bx-range-values{color:var(--bx-text-secondary);font-size:.875rem}\n"]
|
|
5701
5964
|
}]
|
|
5702
5965
|
}],
|
|
5703
5966
|
propDecorators: {
|
|
@@ -5767,6 +6030,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
5767
6030
|
}]
|
|
5768
6031
|
}
|
|
5769
6032
|
});
|
|
5770
|
-
export { BX_FORM_FIELD_CONTROL, Button, ButtonIconDirective, BxError, BxHint, Checkbox, FormField, FormSettingsService, InputField, LoadMoreDirective, MultiSelect, NativeControlDirective, PrefixDirective, Radio, RadioGroup, RangeSlider, SearchInput, Select, SlideToggle, SliderDirective, SuffixDirective };
|
|
6033
|
+
export { BX_FORM_FIELD_CONTROL, Button, ButtonIconDirective, BxError, BxHint, Checkbox, CheckboxIndicator, FormField, FormSettingsService, InputField, LoadMoreDirective, MultiSelect, NativeControlDirective, PrefixDirective, Radio, RadioGroup, RangeSlider, SearchInput, Select, SlideToggle, SliderDirective, SuffixDirective };
|
|
5771
6034
|
|
|
5772
6035
|
//# sourceMappingURL=filip.mazev-blocks-forms.mjs.map
|