@flusys/ng-ui 8.1.3 → 8.1.4
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/README.md +19 -5
- package/fesm2022/flusys-ng-ui.mjs +375 -452
- package/fesm2022/flusys-ng-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/flusys-ng-ui.d.ts +119 -57
|
@@ -957,12 +957,18 @@ const SEVERITY_CLASSES = {
|
|
|
957
957
|
class UiIconComponent {
|
|
958
958
|
name = input('', /* @ts-ignore */
|
|
959
959
|
...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
|
|
960
|
-
|
|
960
|
+
// Unset by default so the icon renders at `1em` — it then scales with
|
|
961
|
+
// whatever font-size context (e.g. a Tailwind text-* class) surrounds it,
|
|
962
|
+
// instead of always rendering at a fixed pixel size regardless of that
|
|
963
|
+
// context. Pass an explicit size to opt out and pin an exact pixel value.
|
|
964
|
+
size = input(undefined, /* @ts-ignore */
|
|
961
965
|
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
962
966
|
spin = input(false, { ...(ngDevMode ? { debugName: "spin" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
963
967
|
fill = input(false, { ...(ngDevMode ? { debugName: "fill" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
964
968
|
severity = input(null, /* @ts-ignore */
|
|
965
969
|
...(ngDevMode ? [{ debugName: "severity" }] : /* istanbul ignore next */ []));
|
|
970
|
+
resolvedSize = computed(() => this.size() ?? '1em', /* @ts-ignore */
|
|
971
|
+
...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
|
|
966
972
|
lucideName = computed(() => {
|
|
967
973
|
const n = this.name();
|
|
968
974
|
return PI_TO_LUCIDE[n] ?? n;
|
|
@@ -981,32 +987,31 @@ class UiIconComponent {
|
|
|
981
987
|
}, /* @ts-ignore */
|
|
982
988
|
...(ngDevMode ? [{ debugName: "iconClass" }] : /* istanbul ignore next */ []));
|
|
983
989
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UiIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
984
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: UiIconComponent, isStandalone: true, selector: "ui-icon", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, spin: { classPropertyName: "spin", publicName: "spin", isSignal: true, isRequired: false, transformFunction: null }, fill: { classPropertyName: "fill", publicName: "fill", isSignal: true, isRequired: false, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null } }, host: {
|
|
990
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: UiIconComponent, isStandalone: true, selector: "ui-icon", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, spin: { classPropertyName: "spin", publicName: "spin", isSignal: true, isRequired: false, transformFunction: null }, fill: { classPropertyName: "fill", publicName: "fill", isSignal: true, isRequired: false, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "inline-flex items-center leading-none" }, providers: [provideLucideIcons(...allLucideIcons)], ngImport: i0, template: `
|
|
985
991
|
@if (lucideName()) {
|
|
986
992
|
<svg
|
|
987
993
|
ngSkipHydration
|
|
988
994
|
[lucideIcon]="lucideName()"
|
|
989
|
-
[size]="
|
|
995
|
+
[size]="resolvedSize()"
|
|
990
996
|
[class]="iconClass()"
|
|
991
997
|
></svg>
|
|
992
998
|
}
|
|
993
|
-
`, isInline: true, styles: [":host ::ng-deep svg[lucideIcon]{
|
|
999
|
+
`, isInline: true, styles: [":host ::ng-deep svg[lucideIcon]{display:block}\n"], dependencies: [{ kind: "component", type: LucideDynamicIcon, selector: "svg[lucideIcon]", inputs: ["lucideIcon"] }] });
|
|
994
1000
|
}
|
|
995
1001
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UiIconComponent, decorators: [{
|
|
996
1002
|
type: Component,
|
|
997
1003
|
args: [{ selector: 'ui-icon', imports: [LucideDynamicIcon], providers: [provideLucideIcons(...allLucideIcons)], host: {
|
|
998
1004
|
class: 'inline-flex items-center leading-none',
|
|
999
|
-
'[style.--ui-icon-size]': "size() + 'px'",
|
|
1000
1005
|
}, template: `
|
|
1001
1006
|
@if (lucideName()) {
|
|
1002
1007
|
<svg
|
|
1003
1008
|
ngSkipHydration
|
|
1004
1009
|
[lucideIcon]="lucideName()"
|
|
1005
|
-
[size]="
|
|
1010
|
+
[size]="resolvedSize()"
|
|
1006
1011
|
[class]="iconClass()"
|
|
1007
1012
|
></svg>
|
|
1008
1013
|
}
|
|
1009
|
-
`, styles: [":host ::ng-deep svg[lucideIcon]{
|
|
1014
|
+
`, styles: [":host ::ng-deep svg[lucideIcon]{display:block}\n"] }]
|
|
1010
1015
|
}], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], spin: [{ type: i0.Input, args: [{ isSignal: true, alias: "spin", required: false }] }], fill: [{ type: i0.Input, args: [{ isSignal: true, alias: "fill", required: false }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }] } });
|
|
1011
1016
|
|
|
1012
1017
|
class ButtonComponent {
|
|
@@ -3257,17 +3262,170 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
3257
3262
|
}]
|
|
3258
3263
|
}], ctorParameters: () => [], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], itemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemSize", required: false }] }], scrollHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollHeight", required: false }] }], scrollWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollWidth", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], trackBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "trackBy", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], onLazyLoad: [{ type: i0.Output, args: ["onLazyLoad"] }], onScrollIndexChange: [{ type: i0.Output, args: ["onScrollIndexChange"] }], itemTpl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], loaderTpl: [{ type: i0.ContentChild, args: ['loader', { isSignal: true }] }], viewportRef: [{ type: i0.ViewChild, args: ['viewport', { isSignal: true }] }] } });
|
|
3259
3264
|
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3265
|
+
const DEFAULT_GAP = 4;
|
|
3266
|
+
const DEFAULT_MARGIN = 8;
|
|
3267
|
+
const DEFAULT_MIN_HEIGHT = 120;
|
|
3268
|
+
/**
|
|
3269
|
+
* Places a panel against an anchor inside the viewport: flips above the anchor
|
|
3270
|
+
* when there is more room there, clamps horizontally, and hands back a
|
|
3271
|
+
* `maxHeight` when the panel would otherwise be cut off by a viewport edge, so
|
|
3272
|
+
* it scrolls internally instead.
|
|
3273
|
+
*/
|
|
3274
|
+
function computeOverlayPlacement(anchor, panel, viewport, options = {}) {
|
|
3275
|
+
const gap = options.gap ?? DEFAULT_GAP;
|
|
3276
|
+
const margin = options.margin ?? DEFAULT_MARGIN;
|
|
3277
|
+
const align = options.align ?? 'start';
|
|
3278
|
+
const minHeight = Math.min(options.minHeight ?? DEFAULT_MIN_HEIGHT, Math.max(0, viewport.height - margin * 2));
|
|
3279
|
+
const spaceBelow = viewport.height - anchor.bottom - gap - margin;
|
|
3280
|
+
const spaceAbove = anchor.top - gap - margin;
|
|
3281
|
+
const direction = panel.height <= spaceBelow || spaceBelow >= spaceAbove ? 'down' : 'up';
|
|
3282
|
+
const room = direction === 'down' ? spaceBelow : spaceAbove;
|
|
3283
|
+
const maxHeight = Math.max(minHeight, Math.round(room));
|
|
3284
|
+
const height = Math.min(panel.height, maxHeight);
|
|
3285
|
+
// Only take over the height when the panel genuinely doesn't fit; otherwise
|
|
3286
|
+
// leave it to the panel's own CSS (a design cap like `max-h-56`).
|
|
3287
|
+
const clamped = options.clampHeight !== false && panel.height > maxHeight ? maxHeight : null;
|
|
3288
|
+
const top = direction === 'down'
|
|
3289
|
+
? Math.min(anchor.bottom + gap, Math.max(margin, viewport.height - margin - height))
|
|
3290
|
+
: Math.max(margin, anchor.top - gap - height);
|
|
3291
|
+
const width = options.matchAnchorWidth ? anchor.width : panel.width;
|
|
3292
|
+
const rawLeft = align === 'end' ? anchor.right - width : anchor.left;
|
|
3293
|
+
const left = width + margin * 2 > viewport.width
|
|
3294
|
+
? margin
|
|
3295
|
+
: Math.max(margin, Math.min(rawLeft, viewport.width - width - margin));
|
|
3296
|
+
return {
|
|
3297
|
+
top: Math.round(top),
|
|
3298
|
+
left: Math.round(left),
|
|
3299
|
+
width: options.matchAnchorWidth ? Math.round(anchor.width) : null,
|
|
3300
|
+
maxHeight: clamped,
|
|
3301
|
+
direction,
|
|
3302
|
+
};
|
|
3303
|
+
}
|
|
3304
|
+
function overlayPlacementStyle(placement) {
|
|
3305
|
+
if (!placement)
|
|
3306
|
+
return {};
|
|
3307
|
+
const style = {
|
|
3308
|
+
top: `${placement.top}px`,
|
|
3309
|
+
left: `${placement.left}px`,
|
|
3310
|
+
};
|
|
3311
|
+
if (placement.maxHeight !== null)
|
|
3312
|
+
style['max-height'] = `${placement.maxHeight}px`;
|
|
3313
|
+
if (placement.width !== null)
|
|
3314
|
+
style['width'] = `${placement.width}px`;
|
|
3315
|
+
return style;
|
|
3316
|
+
}
|
|
3317
|
+
function overlayPlacementEquals(a, b) {
|
|
3318
|
+
if (a === b)
|
|
3319
|
+
return true;
|
|
3320
|
+
if (!a || !b)
|
|
3321
|
+
return false;
|
|
3322
|
+
return (a.top === b.top &&
|
|
3323
|
+
a.left === b.left &&
|
|
3324
|
+
a.width === b.width &&
|
|
3325
|
+
a.maxHeight === b.maxHeight &&
|
|
3326
|
+
a.direction === b.direction);
|
|
3327
|
+
}
|
|
3328
|
+
/**
|
|
3329
|
+
* How tall the panel wants to be, with our own `max-height` lifted for the
|
|
3330
|
+
* measurement — otherwise a panel we clamped once would report the clamped
|
|
3331
|
+
* height forever and could never claim more room after a scroll.
|
|
3332
|
+
*/
|
|
3333
|
+
function measureNaturalSize(panel) {
|
|
3334
|
+
const previous = panel.style.maxHeight;
|
|
3335
|
+
// Cleared, not `none`: the panel's own CSS cap must still apply, so a panel
|
|
3336
|
+
// that fits inside its design cap never asks for more room than that.
|
|
3337
|
+
panel.style.maxHeight = '';
|
|
3338
|
+
// offsetWidth/Height, not getBoundingClientRect: several panels animate in
|
|
3339
|
+
// with a `scale()` transform, which would otherwise make us measure — and
|
|
3340
|
+
// place — a panel mid-animation at the wrong size.
|
|
3341
|
+
const size = { width: panel.offsetWidth, height: panel.offsetHeight };
|
|
3342
|
+
panel.style.maxHeight = previous;
|
|
3343
|
+
return size;
|
|
3344
|
+
}
|
|
3345
|
+
/**
|
|
3346
|
+
* Keeps a fixed-position panel glued to its anchor while it is open.
|
|
3347
|
+
*
|
|
3348
|
+
* Repositions on window scroll (capture: inner scroll containers don't bubble),
|
|
3349
|
+
* on resize, and — the case every hand-rolled copy of this math used to miss —
|
|
3350
|
+
* when the panel's own content resizes, e.g. a lazily loaded option list
|
|
3351
|
+
* arriving after the panel opened and pushing it past the bottom of the screen.
|
|
3352
|
+
* Work is coalesced into an animation frame so a scroll burst costs one layout.
|
|
3353
|
+
*/
|
|
3354
|
+
function createOverlayPositioner(anchor, panel, options, emit) {
|
|
3355
|
+
let frame = null;
|
|
3356
|
+
let measuring = false;
|
|
3357
|
+
const update = () => {
|
|
3358
|
+
frame = null;
|
|
3359
|
+
if (typeof anchor.getBoundingClientRect !== 'function')
|
|
3360
|
+
return;
|
|
3361
|
+
measuring = true;
|
|
3362
|
+
const size = measureNaturalSize(panel);
|
|
3363
|
+
measuring = false;
|
|
3364
|
+
emit(computeOverlayPlacement(anchor.getBoundingClientRect(), size, { width: window.innerWidth, height: window.innerHeight }, options));
|
|
3365
|
+
};
|
|
3366
|
+
const schedule = () => {
|
|
3367
|
+
if (frame !== null)
|
|
3264
3368
|
return;
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3369
|
+
frame = requestAnimationFrame(update);
|
|
3370
|
+
};
|
|
3371
|
+
update();
|
|
3372
|
+
window.addEventListener('scroll', schedule, true);
|
|
3373
|
+
window.addEventListener('resize', schedule);
|
|
3374
|
+
const observer = typeof ResizeObserver === 'undefined'
|
|
3375
|
+
? null
|
|
3376
|
+
: new ResizeObserver(() => {
|
|
3377
|
+
if (!measuring)
|
|
3378
|
+
schedule();
|
|
3270
3379
|
});
|
|
3380
|
+
observer?.observe(panel);
|
|
3381
|
+
return () => {
|
|
3382
|
+
if (frame !== null)
|
|
3383
|
+
cancelAnimationFrame(frame);
|
|
3384
|
+
window.removeEventListener('scroll', schedule, true);
|
|
3385
|
+
window.removeEventListener('resize', schedule);
|
|
3386
|
+
observer?.disconnect();
|
|
3387
|
+
};
|
|
3388
|
+
}
|
|
3389
|
+
/**
|
|
3390
|
+
* Signal-based placement for components that render their panel from a
|
|
3391
|
+
* template. Bind the result through `overlayPlacementStyle()`. Must be called
|
|
3392
|
+
* in an injection context.
|
|
3393
|
+
*/
|
|
3394
|
+
function overlayPosition(config) {
|
|
3395
|
+
const placement = signal(null, { ...(ngDevMode ? { debugName: "placement" } : /* istanbul ignore next */ {}), equal: overlayPlacementEquals });
|
|
3396
|
+
effect((onCleanup) => {
|
|
3397
|
+
const anchorEl = config.anchor();
|
|
3398
|
+
const panelEl = config.panel();
|
|
3399
|
+
const options = config.options?.() ?? {};
|
|
3400
|
+
if (!config.active() ||
|
|
3401
|
+
!anchorEl ||
|
|
3402
|
+
!panelEl ||
|
|
3403
|
+
typeof window === 'undefined') {
|
|
3404
|
+
placement.set(null);
|
|
3405
|
+
return;
|
|
3406
|
+
}
|
|
3407
|
+
onCleanup(createOverlayPositioner(anchorEl, panelEl, options, (next) => placement.set(next)));
|
|
3408
|
+
});
|
|
3409
|
+
return placement.asReadonly();
|
|
3410
|
+
}
|
|
3411
|
+
/**
|
|
3412
|
+
* Imperative twin of `overlayPosition()` for overlays that portal a plain DOM
|
|
3413
|
+
* node instead of rendering a template. Returns a dispose function.
|
|
3414
|
+
*/
|
|
3415
|
+
function attachOverlayPosition(anchor, panel, options = {}) {
|
|
3416
|
+
if (typeof window === 'undefined')
|
|
3417
|
+
return () => undefined;
|
|
3418
|
+
let current = null;
|
|
3419
|
+
return createOverlayPositioner(anchor, panel, options, (placement) => {
|
|
3420
|
+
if (overlayPlacementEquals(current, placement))
|
|
3421
|
+
return;
|
|
3422
|
+
current = placement;
|
|
3423
|
+
panel.style.top = `${placement.top}px`;
|
|
3424
|
+
panel.style.left = `${placement.left}px`;
|
|
3425
|
+
panel.style.maxHeight =
|
|
3426
|
+
placement.maxHeight === null ? '' : `${placement.maxHeight}px`;
|
|
3427
|
+
if (placement.width !== null)
|
|
3428
|
+
panel.style.width = `${placement.width}px`;
|
|
3271
3429
|
});
|
|
3272
3430
|
}
|
|
3273
3431
|
|
|
@@ -3293,7 +3451,6 @@ class SelectComponent {
|
|
|
3293
3451
|
queueMicrotask(() => this._filterInputRef()?.nativeElement.focus());
|
|
3294
3452
|
}
|
|
3295
3453
|
});
|
|
3296
|
-
repositionOnScroll(() => this.open() && this.appendTo() === 'body', () => { this.position(); this.adjustForViewport(); });
|
|
3297
3454
|
}
|
|
3298
3455
|
onDocumentClick(e) {
|
|
3299
3456
|
if (this.open() && !this._el.nativeElement.contains(e.target)) {
|
|
@@ -3342,7 +3499,7 @@ class SelectComponent {
|
|
|
3342
3499
|
...(ngDevMode ? [{ debugName: "styleClass" }] : /* istanbul ignore next */ []));
|
|
3343
3500
|
style = input(null, /* @ts-ignore */
|
|
3344
3501
|
...(ngDevMode ? [{ debugName: "style" }] : /* istanbul ignore next */ []));
|
|
3345
|
-
appendTo = input('
|
|
3502
|
+
appendTo = input('body', /* @ts-ignore */
|
|
3346
3503
|
...(ngDevMode ? [{ debugName: "appendTo" }] : /* istanbul ignore next */ []));
|
|
3347
3504
|
editable = input(false, { ...(ngDevMode ? { debugName: "editable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
3348
3505
|
readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -3357,6 +3514,14 @@ class SelectComponent {
|
|
|
3357
3514
|
virtualScrollItemSize = input(36, /* @ts-ignore */
|
|
3358
3515
|
...(ngDevMode ? [{ debugName: "virtualScrollItemSize" }] : /* istanbul ignore next */ []));
|
|
3359
3516
|
lazy = input(false, { ...(ngDevMode ? { debugName: "lazy" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
3517
|
+
/**
|
|
3518
|
+
* Full option object for the current `value()`, supplied by the consumer.
|
|
3519
|
+
* Pinned into the option pool (deduped by `optionValue`) whenever a lazy-loaded
|
|
3520
|
+
* or filtered `options()` page doesn't happen to contain it, so the trigger
|
|
3521
|
+
* label, checkmark and list row always resolve correctly on edit forms.
|
|
3522
|
+
*/
|
|
3523
|
+
selectedObject = input(null, /* @ts-ignore */
|
|
3524
|
+
...(ngDevMode ? [{ debugName: "selectedObject" }] : /* istanbul ignore next */ []));
|
|
3360
3525
|
hostClass = computed(() => `block w-full ${this.styleClass()}`, /* @ts-ignore */
|
|
3361
3526
|
...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
3362
3527
|
onFilter = output();
|
|
@@ -3387,49 +3552,19 @@ class SelectComponent {
|
|
|
3387
3552
|
...(ngDevMode ? [{ debugName: "_filterInputRef" }] : /* istanbul ignore next */ []));
|
|
3388
3553
|
_panelRef = viewChild('panel', /* @ts-ignore */
|
|
3389
3554
|
...(ngDevMode ? [{ debugName: "_panelRef" }] : /* istanbul ignore next */ []));
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3555
|
+
_placement = overlayPosition({
|
|
3556
|
+
active: () => this.open() && this.appendTo() === 'body',
|
|
3557
|
+
anchor: () => this._triggerRef()?.nativeElement,
|
|
3558
|
+
panel: () => this._panelRef()?.nativeElement,
|
|
3559
|
+
options: () => ({ matchAnchorWidth: true }),
|
|
3560
|
+
});
|
|
3396
3561
|
panelClass = computed(() => {
|
|
3397
3562
|
const position = this.appendTo() === 'body' ? 'fixed' : 'absolute w-full mt-1';
|
|
3398
|
-
return `${position} z-50 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) f-overlay overflow-hidden`;
|
|
3563
|
+
return `${position} z-50 flex flex-col bg-(--f-overlay-popover-background) border border-(--f-content-border-color) f-overlay overflow-hidden`;
|
|
3399
3564
|
}, /* @ts-ignore */
|
|
3400
3565
|
...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
|
|
3401
|
-
panelStyle = computed(() => {
|
|
3402
|
-
if (this.appendTo() !== 'body')
|
|
3403
|
-
return {};
|
|
3404
|
-
return {
|
|
3405
|
-
top: `${this._panelTop()}px`,
|
|
3406
|
-
left: `${this._panelLeft()}px`,
|
|
3407
|
-
width: `${this._panelWidth()}px`,
|
|
3408
|
-
};
|
|
3409
|
-
}, /* @ts-ignore */
|
|
3566
|
+
panelStyle = computed(() => this.appendTo() === 'body' ? overlayPlacementStyle(this._placement()) : {}, /* @ts-ignore */
|
|
3410
3567
|
...(ngDevMode ? [{ debugName: "panelStyle" }] : /* istanbul ignore next */ []));
|
|
3411
|
-
position() {
|
|
3412
|
-
const anchorEl = this._triggerRef()?.nativeElement;
|
|
3413
|
-
if (!anchorEl || typeof window === 'undefined')
|
|
3414
|
-
return;
|
|
3415
|
-
const rect = anchorEl.getBoundingClientRect();
|
|
3416
|
-
this._panelTop.set(rect.bottom + 4);
|
|
3417
|
-
this._panelLeft.set(Math.max(8, rect.left));
|
|
3418
|
-
this._panelWidth.set(rect.width);
|
|
3419
|
-
}
|
|
3420
|
-
adjustForViewport() {
|
|
3421
|
-
const panelEl = this._panelRef()?.nativeElement;
|
|
3422
|
-
const anchorEl = this._triggerRef()?.nativeElement;
|
|
3423
|
-
if (!panelEl || !anchorEl || typeof window === 'undefined')
|
|
3424
|
-
return;
|
|
3425
|
-
const anchorRect = anchorEl.getBoundingClientRect();
|
|
3426
|
-
const panelRect = panelEl.getBoundingClientRect();
|
|
3427
|
-
const gap = 4;
|
|
3428
|
-
this._panelLeft.set(Math.max(8, Math.min(anchorRect.left, window.innerWidth - panelRect.width - 8)));
|
|
3429
|
-
if (anchorRect.bottom + panelRect.height + gap > window.innerHeight) {
|
|
3430
|
-
this._panelTop.set(Math.max(8, anchorRect.top - panelRect.height - gap));
|
|
3431
|
-
}
|
|
3432
|
-
}
|
|
3433
3568
|
selectedItemRef = contentChild('selectedItem', /* @ts-ignore */
|
|
3434
3569
|
...(ngDevMode ? [{ debugName: "selectedItemRef" }] : /* istanbul ignore next */ []));
|
|
3435
3570
|
itemRef = contentChild('item', /* @ts-ignore */
|
|
@@ -3521,8 +3656,28 @@ class SelectComponent {
|
|
|
3521
3656
|
const rec = opt;
|
|
3522
3657
|
return this.filterFieldList().some((f) => this.matchesFilter(rec[f], query));
|
|
3523
3658
|
}
|
|
3659
|
+
// The pinned object only counts as "selected" once it actually matches the
|
|
3660
|
+
// current value — a stale/irrelevant selectedObject is never injected.
|
|
3661
|
+
selectedObjectEntry = computed(() => {
|
|
3662
|
+
const sel = this.selectedObject();
|
|
3663
|
+
if (sel == null)
|
|
3664
|
+
return null;
|
|
3665
|
+
return this.getOptionValue(sel) === this.value() ? sel : null;
|
|
3666
|
+
}, /* @ts-ignore */
|
|
3667
|
+
...(ngDevMode ? [{ debugName: "selectedObjectEntry" }] : /* istanbul ignore next */ []));
|
|
3668
|
+
mergeSelected(base) {
|
|
3669
|
+
const sel = this.selectedObjectEntry();
|
|
3670
|
+
if (sel == null)
|
|
3671
|
+
return base;
|
|
3672
|
+
const selVal = this.getOptionValue(sel);
|
|
3673
|
+
return base.some((o) => this.getOptionValue(o) === selVal)
|
|
3674
|
+
? base
|
|
3675
|
+
: [sel, ...base];
|
|
3676
|
+
}
|
|
3677
|
+
optionsWithSelected = computed(() => this.mergeSelected(this.options()), /* @ts-ignore */
|
|
3678
|
+
...(ngDevMode ? [{ debugName: "optionsWithSelected" }] : /* istanbul ignore next */ []));
|
|
3524
3679
|
filteredOptions = computed(() => {
|
|
3525
|
-
const opts = this.options();
|
|
3680
|
+
const opts = this.group() ? this.options() : this.optionsWithSelected();
|
|
3526
3681
|
const q = this.filterText();
|
|
3527
3682
|
if (!q)
|
|
3528
3683
|
return opts;
|
|
@@ -3531,9 +3686,10 @@ class SelectComponent {
|
|
|
3531
3686
|
...(ngDevMode ? [{ debugName: "filteredOptions" }] : /* istanbul ignore next */ []));
|
|
3532
3687
|
allLeafOptions = computed(() => {
|
|
3533
3688
|
if (!this.group())
|
|
3534
|
-
return this.
|
|
3689
|
+
return this.optionsWithSelected();
|
|
3535
3690
|
const groups = this.options();
|
|
3536
|
-
|
|
3691
|
+
const leaves = groups.flatMap((g) => g[this.optionGroupChildren()] ?? []);
|
|
3692
|
+
return this.mergeSelected(leaves);
|
|
3537
3693
|
}, /* @ts-ignore */
|
|
3538
3694
|
...(ngDevMode ? [{ debugName: "allLeafOptions" }] : /* istanbul ignore next */ []));
|
|
3539
3695
|
flatItems = computed(() => {
|
|
@@ -3671,10 +3827,6 @@ class SelectComponent {
|
|
|
3671
3827
|
this.onShow.emit();
|
|
3672
3828
|
if (this.lazy())
|
|
3673
3829
|
this.onLazyLoad.emit({ filter: this.filterText() });
|
|
3674
|
-
if (this.appendTo() === 'body') {
|
|
3675
|
-
this.position();
|
|
3676
|
-
setTimeout(() => this.adjustForViewport(), 0);
|
|
3677
|
-
}
|
|
3678
3830
|
}
|
|
3679
3831
|
closeList() {
|
|
3680
3832
|
this._open.set(false);
|
|
@@ -3810,7 +3962,7 @@ class SelectComponent {
|
|
|
3810
3962
|
}
|
|
3811
3963
|
setDisabledState() { }
|
|
3812
3964
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3813
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: SelectComponent, isStandalone: true, selector: "f-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, filterMatchMode: { classPropertyName: "filterMatchMode", publicName: "filterMatchMode", isSignal: true, isRequired: false, transformFunction: null }, filterLocale: { classPropertyName: "filterLocale", publicName: "filterLocale", isSignal: true, isRequired: false, transformFunction: null }, filterPlaceholder: { classPropertyName: "filterPlaceholder", publicName: "filterPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, resetFilterOnHide: { classPropertyName: "resetFilterOnHide", publicName: "resetFilterOnHide", isSignal: true, isRequired: false, transformFunction: null }, autofocusFilter: { classPropertyName: "autofocusFilter", publicName: "autofocusFilter", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, emptyFilterMessage: { classPropertyName: "emptyFilterMessage", publicName: "emptyFilterMessage", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingIcon: { classPropertyName: "loadingIcon", publicName: "loadingIcon", isSignal: true, isRequired: false, transformFunction: null }, dropdownIcon: { classPropertyName: "dropdownIcon", publicName: "dropdownIcon", isSignal: true, isRequired: false, transformFunction: null }, clearIcon: { classPropertyName: "clearIcon", publicName: "clearIcon", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, editable: { classPropertyName: "editable", publicName: "editable", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, checkmark: { classPropertyName: "checkmark", publicName: "checkmark", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null }, optionGroupLabel: { classPropertyName: "optionGroupLabel", publicName: "optionGroupLabel", isSignal: true, isRequired: false, transformFunction: null }, optionGroupChildren: { classPropertyName: "optionGroupChildren", publicName: "optionGroupChildren", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onFilter: "onFilter", onChange: "onChange", onShow: "onShow", onHide: "onHide", onBlur: "onBlur", onFocus: "onFocus", onClear: "onClear", onLazyLoad: "onLazyLoad" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClass()", "style": "style()" } }, providers: [
|
|
3965
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: SelectComponent, isStandalone: true, selector: "f-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, filterMatchMode: { classPropertyName: "filterMatchMode", publicName: "filterMatchMode", isSignal: true, isRequired: false, transformFunction: null }, filterLocale: { classPropertyName: "filterLocale", publicName: "filterLocale", isSignal: true, isRequired: false, transformFunction: null }, filterPlaceholder: { classPropertyName: "filterPlaceholder", publicName: "filterPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, resetFilterOnHide: { classPropertyName: "resetFilterOnHide", publicName: "resetFilterOnHide", isSignal: true, isRequired: false, transformFunction: null }, autofocusFilter: { classPropertyName: "autofocusFilter", publicName: "autofocusFilter", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, emptyFilterMessage: { classPropertyName: "emptyFilterMessage", publicName: "emptyFilterMessage", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingIcon: { classPropertyName: "loadingIcon", publicName: "loadingIcon", isSignal: true, isRequired: false, transformFunction: null }, dropdownIcon: { classPropertyName: "dropdownIcon", publicName: "dropdownIcon", isSignal: true, isRequired: false, transformFunction: null }, clearIcon: { classPropertyName: "clearIcon", publicName: "clearIcon", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, editable: { classPropertyName: "editable", publicName: "editable", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, checkmark: { classPropertyName: "checkmark", publicName: "checkmark", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null }, optionGroupLabel: { classPropertyName: "optionGroupLabel", publicName: "optionGroupLabel", isSignal: true, isRequired: false, transformFunction: null }, optionGroupChildren: { classPropertyName: "optionGroupChildren", publicName: "optionGroupChildren", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, selectedObject: { classPropertyName: "selectedObject", publicName: "selectedObject", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onFilter: "onFilter", onChange: "onChange", onShow: "onShow", onHide: "onHide", onBlur: "onBlur", onFocus: "onFocus", onClear: "onClear", onLazyLoad: "onLazyLoad" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClass()", "style": "style()" } }, providers: [
|
|
3814
3966
|
{
|
|
3815
3967
|
provide: NG_VALUE_ACCESSOR,
|
|
3816
3968
|
useExisting: forwardRef(() => SelectComponent),
|
|
@@ -3931,7 +4083,7 @@ class SelectComponent {
|
|
|
3931
4083
|
data-select-list
|
|
3932
4084
|
[id]="listId()"
|
|
3933
4085
|
role="listbox"
|
|
3934
|
-
class="max-h-56 overflow-auto py-1"
|
|
4086
|
+
class="flex-1 min-h-0 max-h-56 overflow-auto py-1"
|
|
3935
4087
|
>
|
|
3936
4088
|
@if (loading()) {
|
|
3937
4089
|
@if (loaderTpl()) {
|
|
@@ -4184,7 +4336,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
4184
4336
|
data-select-list
|
|
4185
4337
|
[id]="listId()"
|
|
4186
4338
|
role="listbox"
|
|
4187
|
-
class="max-h-56 overflow-auto py-1"
|
|
4339
|
+
class="flex-1 min-h-0 max-h-56 overflow-auto py-1"
|
|
4188
4340
|
>
|
|
4189
4341
|
@if (loading()) {
|
|
4190
4342
|
@if (loaderTpl()) {
|
|
@@ -4305,7 +4457,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
4305
4457
|
</ng-template>
|
|
4306
4458
|
`,
|
|
4307
4459
|
}]
|
|
4308
|
-
}], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionLabel", required: false }] }], optionValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionValue", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], filterMatchMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterMatchMode", required: false }] }], filterLocale: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterLocale", required: false }] }], filterPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterPlaceholder", required: false }] }], resetFilterOnHide: [{ type: i0.Input, args: [{ isSignal: true, alias: "resetFilterOnHide", required: false }] }], autofocusFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocusFilter", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], emptyFilterMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyFilterMessage", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingIcon", required: false }] }], dropdownIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownIcon", required: false }] }], clearIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearIcon", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], editable: [{ type: i0.Input, args: [{ isSignal: true, alias: "editable", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], autofocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocus", required: false }] }], checkmark: [{ type: i0.Input, args: [{ isSignal: true, alias: "checkmark", required: false }] }], group: [{ type: i0.Input, args: [{ isSignal: true, alias: "group", required: false }] }], optionGroupLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupLabel", required: false }] }], optionGroupChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupChildren", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], onFilter: [{ type: i0.Output, args: ["onFilter"] }], onChange: [{ type: i0.Output, args: ["onChange"] }], onShow: [{ type: i0.Output, args: ["onShow"] }], onHide: [{ type: i0.Output, args: ["onHide"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }], onClear: [{ type: i0.Output, args: ["onClear"] }], onLazyLoad: [{ type: i0.Output, args: ["onLazyLoad"] }], _triggerRef: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], _editableInputRef: [{ type: i0.ViewChild, args: ['editableInputEl', { isSignal: true }] }], _filterInputRef: [{ type: i0.ViewChild, args: ['filterInput', { isSignal: true }] }], _panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], selectedItemRef: [{ type: i0.ContentChild, args: ['selectedItem', { isSignal: true }] }], itemRef: [{ type: i0.ContentChild, args: ['item', { isSignal: true }] }], groupRef: [{ type: i0.ContentChild, args: ['group', { isSignal: true }] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], emptyFilterRef: [{ type: i0.ContentChild, args: ['emptyfilter', { isSignal: true }] }], loaderRef: [{ type: i0.ContentChild, args: ['loader', { isSignal: true }] }], filterRef: [{ type: i0.ContentChild, args: ['filter', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
|
|
4460
|
+
}], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionLabel", required: false }] }], optionValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionValue", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], filterMatchMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterMatchMode", required: false }] }], filterLocale: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterLocale", required: false }] }], filterPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterPlaceholder", required: false }] }], resetFilterOnHide: [{ type: i0.Input, args: [{ isSignal: true, alias: "resetFilterOnHide", required: false }] }], autofocusFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocusFilter", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], emptyFilterMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyFilterMessage", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingIcon", required: false }] }], dropdownIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownIcon", required: false }] }], clearIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearIcon", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], editable: [{ type: i0.Input, args: [{ isSignal: true, alias: "editable", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], autofocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocus", required: false }] }], checkmark: [{ type: i0.Input, args: [{ isSignal: true, alias: "checkmark", required: false }] }], group: [{ type: i0.Input, args: [{ isSignal: true, alias: "group", required: false }] }], optionGroupLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupLabel", required: false }] }], optionGroupChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupChildren", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], selectedObject: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedObject", required: false }] }], onFilter: [{ type: i0.Output, args: ["onFilter"] }], onChange: [{ type: i0.Output, args: ["onChange"] }], onShow: [{ type: i0.Output, args: ["onShow"] }], onHide: [{ type: i0.Output, args: ["onHide"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }], onClear: [{ type: i0.Output, args: ["onClear"] }], onLazyLoad: [{ type: i0.Output, args: ["onLazyLoad"] }], _triggerRef: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], _editableInputRef: [{ type: i0.ViewChild, args: ['editableInputEl', { isSignal: true }] }], _filterInputRef: [{ type: i0.ViewChild, args: ['filterInput', { isSignal: true }] }], _panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], selectedItemRef: [{ type: i0.ContentChild, args: ['selectedItem', { isSignal: true }] }], itemRef: [{ type: i0.ContentChild, args: ['item', { isSignal: true }] }], groupRef: [{ type: i0.ContentChild, args: ['group', { isSignal: true }] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], emptyFilterRef: [{ type: i0.ContentChild, args: ['emptyfilter', { isSignal: true }] }], loaderRef: [{ type: i0.ContentChild, args: ['loader', { isSignal: true }] }], filterRef: [{ type: i0.ContentChild, args: ['filter', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
|
|
4309
4461
|
|
|
4310
4462
|
class MultiSelectComponent {
|
|
4311
4463
|
_el = inject(ElementRef);
|
|
@@ -4327,10 +4479,6 @@ class MultiSelectComponent {
|
|
|
4327
4479
|
queueMicrotask(() => this._filterInputRef()?.nativeElement.focus());
|
|
4328
4480
|
}
|
|
4329
4481
|
});
|
|
4330
|
-
repositionOnScroll(() => this.open() && this.appendTo() === 'body', () => {
|
|
4331
|
-
this.position();
|
|
4332
|
-
this.adjustForViewport();
|
|
4333
|
-
});
|
|
4334
4482
|
}
|
|
4335
4483
|
onDocumentClick(e) {
|
|
4336
4484
|
if (this.open() && !this._el.nativeElement.contains(e.target)) {
|
|
@@ -4343,49 +4491,19 @@ class MultiSelectComponent {
|
|
|
4343
4491
|
...(ngDevMode ? [{ debugName: "_filterInputRef" }] : /* istanbul ignore next */ []));
|
|
4344
4492
|
_panelRef = viewChild('panel', /* @ts-ignore */
|
|
4345
4493
|
...(ngDevMode ? [{ debugName: "_panelRef" }] : /* istanbul ignore next */ []));
|
|
4346
|
-
|
|
4347
|
-
|
|
4348
|
-
|
|
4349
|
-
|
|
4350
|
-
|
|
4351
|
-
|
|
4494
|
+
_placement = overlayPosition({
|
|
4495
|
+
active: () => this.open() && this.appendTo() === 'body',
|
|
4496
|
+
anchor: () => this._triggerRef()?.nativeElement,
|
|
4497
|
+
panel: () => this._panelRef()?.nativeElement,
|
|
4498
|
+
options: () => ({ matchAnchorWidth: true }),
|
|
4499
|
+
});
|
|
4352
4500
|
panelClass = computed(() => {
|
|
4353
4501
|
const position = this.appendTo() === 'body' ? 'fixed' : 'absolute w-full mt-1';
|
|
4354
|
-
return `${position} z-50 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) f-overlay overflow-hidden`;
|
|
4502
|
+
return `${position} z-50 flex flex-col bg-(--f-overlay-popover-background) border border-(--f-content-border-color) f-overlay overflow-hidden`;
|
|
4355
4503
|
}, /* @ts-ignore */
|
|
4356
4504
|
...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
|
|
4357
|
-
panelStyle = computed(() => {
|
|
4358
|
-
if (this.appendTo() !== 'body')
|
|
4359
|
-
return {};
|
|
4360
|
-
return {
|
|
4361
|
-
top: `${this._panelTop()}px`,
|
|
4362
|
-
left: `${this._panelLeft()}px`,
|
|
4363
|
-
width: `${this._panelWidth()}px`,
|
|
4364
|
-
};
|
|
4365
|
-
}, /* @ts-ignore */
|
|
4505
|
+
panelStyle = computed(() => this.appendTo() === 'body' ? overlayPlacementStyle(this._placement()) : {}, /* @ts-ignore */
|
|
4366
4506
|
...(ngDevMode ? [{ debugName: "panelStyle" }] : /* istanbul ignore next */ []));
|
|
4367
|
-
position() {
|
|
4368
|
-
const anchorEl = this._triggerRef()?.nativeElement;
|
|
4369
|
-
if (!anchorEl || typeof window === 'undefined')
|
|
4370
|
-
return;
|
|
4371
|
-
const rect = anchorEl.getBoundingClientRect();
|
|
4372
|
-
this._panelTop.set(rect.bottom + 4);
|
|
4373
|
-
this._panelLeft.set(Math.max(8, rect.left));
|
|
4374
|
-
this._panelWidth.set(rect.width);
|
|
4375
|
-
}
|
|
4376
|
-
adjustForViewport() {
|
|
4377
|
-
const panelEl = this._panelRef()?.nativeElement;
|
|
4378
|
-
const anchorEl = this._triggerRef()?.nativeElement;
|
|
4379
|
-
if (!panelEl || !anchorEl || typeof window === 'undefined')
|
|
4380
|
-
return;
|
|
4381
|
-
const anchorRect = anchorEl.getBoundingClientRect();
|
|
4382
|
-
const panelRect = panelEl.getBoundingClientRect();
|
|
4383
|
-
const gap = 4;
|
|
4384
|
-
this._panelLeft.set(Math.max(8, Math.min(anchorRect.left, window.innerWidth - panelRect.width - 8)));
|
|
4385
|
-
if (anchorRect.bottom + panelRect.height + gap > window.innerHeight) {
|
|
4386
|
-
this._panelTop.set(Math.max(8, anchorRect.top - panelRect.height - gap));
|
|
4387
|
-
}
|
|
4388
|
-
}
|
|
4389
4507
|
triggerClass = computed(() => {
|
|
4390
4508
|
const base = 'w-full min-h-[34px] flex items-center gap-2 f-field-compact text-sm border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';
|
|
4391
4509
|
const showInvalid = this.invalid() && this.touched();
|
|
@@ -4448,7 +4566,7 @@ class MultiSelectComponent {
|
|
|
4448
4566
|
...(ngDevMode ? [{ debugName: "styleClass" }] : /* istanbul ignore next */ []));
|
|
4449
4567
|
style = input(null, /* @ts-ignore */
|
|
4450
4568
|
...(ngDevMode ? [{ debugName: "style" }] : /* istanbul ignore next */ []));
|
|
4451
|
-
appendTo = input('
|
|
4569
|
+
appendTo = input('body', /* @ts-ignore */
|
|
4452
4570
|
...(ngDevMode ? [{ debugName: "appendTo" }] : /* istanbul ignore next */ []));
|
|
4453
4571
|
readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
4454
4572
|
autofocus = input(false, { ...(ngDevMode ? { debugName: "autofocus" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
@@ -4468,6 +4586,14 @@ class MultiSelectComponent {
|
|
|
4468
4586
|
virtualScrollItemSize = input(36, /* @ts-ignore */
|
|
4469
4587
|
...(ngDevMode ? [{ debugName: "virtualScrollItemSize" }] : /* istanbul ignore next */ []));
|
|
4470
4588
|
lazy = input(false, { ...(ngDevMode ? { debugName: "lazy" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
4589
|
+
/**
|
|
4590
|
+
* Full option objects for the currently selected `values()`, supplied by the
|
|
4591
|
+
* consumer. Pinned into the option pool (deduped by `optionValue`) whenever a
|
|
4592
|
+
* lazy-loaded or filtered `options()` page doesn't contain one of them, so
|
|
4593
|
+
* chips/labels always resolve correctly on edit forms.
|
|
4594
|
+
*/
|
|
4595
|
+
selectedObjects = input([], /* @ts-ignore */
|
|
4596
|
+
...(ngDevMode ? [{ debugName: "selectedObjects" }] : /* istanbul ignore next */ []));
|
|
4471
4597
|
hostClass = computed(() => `block w-full ${this.styleClass()}`, /* @ts-ignore */
|
|
4472
4598
|
...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
4473
4599
|
onBlur = output();
|
|
@@ -4582,8 +4708,21 @@ class MultiSelectComponent {
|
|
|
4582
4708
|
const rec = opt;
|
|
4583
4709
|
return this.filterFieldList().some((f) => this.matchesFilter(rec[f], query));
|
|
4584
4710
|
}
|
|
4711
|
+
// Only the selectedObjects entries that actually match a currently selected
|
|
4712
|
+
// value are pinned — anything stale/irrelevant is ignored.
|
|
4713
|
+
selectedObjectEntries = computed(() => {
|
|
4714
|
+
const vals = this.values();
|
|
4715
|
+
return this.selectedObjects().filter((o) => vals.includes(this.getOptionValue(o)));
|
|
4716
|
+
}, /* @ts-ignore */
|
|
4717
|
+
...(ngDevMode ? [{ debugName: "selectedObjectEntries" }] : /* istanbul ignore next */ []));
|
|
4718
|
+
mergeSelected(base) {
|
|
4719
|
+
const extras = this.selectedObjectEntries().filter((sel) => !base.some((o) => this.getOptionValue(o) === this.getOptionValue(sel)));
|
|
4720
|
+
return extras.length ? [...extras, ...base] : base;
|
|
4721
|
+
}
|
|
4722
|
+
optionsWithSelected = computed(() => this.mergeSelected(this.options()), /* @ts-ignore */
|
|
4723
|
+
...(ngDevMode ? [{ debugName: "optionsWithSelected" }] : /* istanbul ignore next */ []));
|
|
4585
4724
|
filteredOptions = computed(() => {
|
|
4586
|
-
const opts = this.options();
|
|
4725
|
+
const opts = this.group() ? this.options() : this.optionsWithSelected();
|
|
4587
4726
|
const q = this.filterText();
|
|
4588
4727
|
if (!q)
|
|
4589
4728
|
return opts;
|
|
@@ -4592,9 +4731,10 @@ class MultiSelectComponent {
|
|
|
4592
4731
|
...(ngDevMode ? [{ debugName: "filteredOptions" }] : /* istanbul ignore next */ []));
|
|
4593
4732
|
allLeafOptions = computed(() => {
|
|
4594
4733
|
if (!this.group())
|
|
4595
|
-
return this.
|
|
4734
|
+
return this.optionsWithSelected();
|
|
4596
4735
|
const groups = this.options();
|
|
4597
|
-
|
|
4736
|
+
const leaves = groups.flatMap((g) => g[this.optionGroupChildren()] ?? []);
|
|
4737
|
+
return this.mergeSelected(leaves);
|
|
4598
4738
|
}, /* @ts-ignore */
|
|
4599
4739
|
...(ngDevMode ? [{ debugName: "allLeafOptions" }] : /* istanbul ignore next */ []));
|
|
4600
4740
|
flatItems = computed(() => {
|
|
@@ -4690,10 +4830,6 @@ class MultiSelectComponent {
|
|
|
4690
4830
|
this.onShow.emit();
|
|
4691
4831
|
if (this.lazy())
|
|
4692
4832
|
this.onLazyLoad.emit({ filter: this.filterText() });
|
|
4693
|
-
if (this.appendTo() === 'body') {
|
|
4694
|
-
this.position();
|
|
4695
|
-
setTimeout(() => this.adjustForViewport(), 0);
|
|
4696
|
-
}
|
|
4697
4833
|
}
|
|
4698
4834
|
closeList() {
|
|
4699
4835
|
this._open.set(false);
|
|
@@ -4869,7 +5005,7 @@ class MultiSelectComponent {
|
|
|
4869
5005
|
}
|
|
4870
5006
|
setDisabledState() { }
|
|
4871
5007
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MultiSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4872
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: MultiSelectComponent, isStandalone: true, selector: "f-multiselect", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, filterMatchMode: { classPropertyName: "filterMatchMode", publicName: "filterMatchMode", isSignal: true, isRequired: false, transformFunction: null }, filterLocale: { classPropertyName: "filterLocale", publicName: "filterLocale", isSignal: true, isRequired: false, transformFunction: null }, filterPlaceholder: { classPropertyName: "filterPlaceholder", publicName: "filterPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, resetFilterOnHide: { classPropertyName: "resetFilterOnHide", publicName: "resetFilterOnHide", isSignal: true, isRequired: false, transformFunction: null }, autofocusFilter: { classPropertyName: "autofocusFilter", publicName: "autofocusFilter", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, emptyFilterMessage: { classPropertyName: "emptyFilterMessage", publicName: "emptyFilterMessage", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, optionDisabled: { classPropertyName: "optionDisabled", publicName: "optionDisabled", isSignal: true, isRequired: false, transformFunction: null }, display: { classPropertyName: "display", publicName: "display", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedLabels: { classPropertyName: "maxSelectedLabels", publicName: "maxSelectedLabels", isSignal: true, isRequired: false, transformFunction: null }, selectionLimit: { classPropertyName: "selectionLimit", publicName: "selectionLimit", isSignal: true, isRequired: false, transformFunction: null }, showToggleAll: { classPropertyName: "showToggleAll", publicName: "showToggleAll", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingIcon: { classPropertyName: "loadingIcon", publicName: "loadingIcon", isSignal: true, isRequired: false, transformFunction: null }, dropdownIcon: { classPropertyName: "dropdownIcon", publicName: "dropdownIcon", isSignal: true, isRequired: false, transformFunction: null }, clearIcon: { classPropertyName: "clearIcon", publicName: "clearIcon", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null }, optionGroupLabel: { classPropertyName: "optionGroupLabel", publicName: "optionGroupLabel", isSignal: true, isRequired: false, transformFunction: null }, optionGroupChildren: { classPropertyName: "optionGroupChildren", publicName: "optionGroupChildren", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBlur: "onBlur", onFocus: "onFocus", onChange: "onChange", onFilter: "onFilter", onShow: "onShow", onHide: "onHide", onClear: "onClear", onLazyLoad: "onLazyLoad", onSelectAllChange: "onSelectAllChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClass()", "style": "style()" } }, providers: [
|
|
5008
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: MultiSelectComponent, isStandalone: true, selector: "f-multiselect", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, filterMatchMode: { classPropertyName: "filterMatchMode", publicName: "filterMatchMode", isSignal: true, isRequired: false, transformFunction: null }, filterLocale: { classPropertyName: "filterLocale", publicName: "filterLocale", isSignal: true, isRequired: false, transformFunction: null }, filterPlaceholder: { classPropertyName: "filterPlaceholder", publicName: "filterPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, resetFilterOnHide: { classPropertyName: "resetFilterOnHide", publicName: "resetFilterOnHide", isSignal: true, isRequired: false, transformFunction: null }, autofocusFilter: { classPropertyName: "autofocusFilter", publicName: "autofocusFilter", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, emptyFilterMessage: { classPropertyName: "emptyFilterMessage", publicName: "emptyFilterMessage", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, optionDisabled: { classPropertyName: "optionDisabled", publicName: "optionDisabled", isSignal: true, isRequired: false, transformFunction: null }, display: { classPropertyName: "display", publicName: "display", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedLabels: { classPropertyName: "maxSelectedLabels", publicName: "maxSelectedLabels", isSignal: true, isRequired: false, transformFunction: null }, selectionLimit: { classPropertyName: "selectionLimit", publicName: "selectionLimit", isSignal: true, isRequired: false, transformFunction: null }, showToggleAll: { classPropertyName: "showToggleAll", publicName: "showToggleAll", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingIcon: { classPropertyName: "loadingIcon", publicName: "loadingIcon", isSignal: true, isRequired: false, transformFunction: null }, dropdownIcon: { classPropertyName: "dropdownIcon", publicName: "dropdownIcon", isSignal: true, isRequired: false, transformFunction: null }, clearIcon: { classPropertyName: "clearIcon", publicName: "clearIcon", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null }, optionGroupLabel: { classPropertyName: "optionGroupLabel", publicName: "optionGroupLabel", isSignal: true, isRequired: false, transformFunction: null }, optionGroupChildren: { classPropertyName: "optionGroupChildren", publicName: "optionGroupChildren", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, selectedObjects: { classPropertyName: "selectedObjects", publicName: "selectedObjects", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBlur: "onBlur", onFocus: "onFocus", onChange: "onChange", onFilter: "onFilter", onShow: "onShow", onHide: "onHide", onClear: "onClear", onLazyLoad: "onLazyLoad", onSelectAllChange: "onSelectAllChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, properties: { "class": "hostClass()", "style": "style()" } }, providers: [
|
|
4873
5009
|
{
|
|
4874
5010
|
provide: NG_VALUE_ACCESSOR,
|
|
4875
5011
|
useExisting: forwardRef(() => MultiSelectComponent),
|
|
@@ -5030,7 +5166,7 @@ class MultiSelectComponent {
|
|
|
5030
5166
|
[id]="listId()"
|
|
5031
5167
|
role="listbox"
|
|
5032
5168
|
[attr.aria-multiselectable]="true"
|
|
5033
|
-
class="max-h-56 overflow-auto py-1"
|
|
5169
|
+
class="flex-1 min-h-0 max-h-56 overflow-auto py-1"
|
|
5034
5170
|
>
|
|
5035
5171
|
@if (loading()) {
|
|
5036
5172
|
@if (loaderTpl()) {
|
|
@@ -5333,7 +5469,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
5333
5469
|
[id]="listId()"
|
|
5334
5470
|
role="listbox"
|
|
5335
5471
|
[attr.aria-multiselectable]="true"
|
|
5336
|
-
class="max-h-56 overflow-auto py-1"
|
|
5472
|
+
class="flex-1 min-h-0 max-h-56 overflow-auto py-1"
|
|
5337
5473
|
>
|
|
5338
5474
|
@if (loading()) {
|
|
5339
5475
|
@if (loaderTpl()) {
|
|
@@ -5464,7 +5600,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
5464
5600
|
</ng-template>
|
|
5465
5601
|
`,
|
|
5466
5602
|
}]
|
|
5467
|
-
}], ctorParameters: () => [], propDecorators: { _triggerRef: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], _filterInputRef: [{ type: i0.ViewChild, args: ['filterInput', { isSignal: true }] }], _panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionLabel", required: false }] }], optionValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionValue", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], filterMatchMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterMatchMode", required: false }] }], filterLocale: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterLocale", required: false }] }], filterPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterPlaceholder", required: false }] }], resetFilterOnHide: [{ type: i0.Input, args: [{ isSignal: true, alias: "resetFilterOnHide", required: false }] }], autofocusFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocusFilter", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], emptyFilterMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyFilterMessage", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], optionDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionDisabled", required: false }] }], display: [{ type: i0.Input, args: [{ isSignal: true, alias: "display", required: false }] }], maxSelectedLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxSelectedLabels", required: false }] }], selectionLimit: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionLimit", required: false }] }], showToggleAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "showToggleAll", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], autofocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocus", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingIcon", required: false }] }], dropdownIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownIcon", required: false }] }], clearIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearIcon", required: false }] }], group: [{ type: i0.Input, args: [{ isSignal: true, alias: "group", required: false }] }], optionGroupLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupLabel", required: false }] }], optionGroupChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupChildren", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }], onChange: [{ type: i0.Output, args: ["onChange"] }], onFilter: [{ type: i0.Output, args: ["onFilter"] }], onShow: [{ type: i0.Output, args: ["onShow"] }], onHide: [{ type: i0.Output, args: ["onHide"] }], onClear: [{ type: i0.Output, args: ["onClear"] }], onLazyLoad: [{ type: i0.Output, args: ["onLazyLoad"] }], onSelectAllChange: [{ type: i0.Output, args: ["onSelectAllChange"] }], selectedItemRef: [{ type: i0.ContentChild, args: ['selectedItem', { isSignal: true }] }], itemRef: [{ type: i0.ContentChild, args: ['item', { isSignal: true }] }], groupRef: [{ type: i0.ContentChild, args: ['group', { isSignal: true }] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], emptyFilterRef: [{ type: i0.ContentChild, args: ['emptyfilter', { isSignal: true }] }], loaderRef: [{ type: i0.ContentChild, args: ['loader', { isSignal: true }] }], filterRef: [{ type: i0.ContentChild, args: ['filter', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
|
|
5603
|
+
}], ctorParameters: () => [], propDecorators: { _triggerRef: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], _filterInputRef: [{ type: i0.ViewChild, args: ['filterInput', { isSignal: true }] }], _panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionLabel", required: false }] }], optionValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionValue", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], filterMatchMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterMatchMode", required: false }] }], filterLocale: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterLocale", required: false }] }], filterPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterPlaceholder", required: false }] }], resetFilterOnHide: [{ type: i0.Input, args: [{ isSignal: true, alias: "resetFilterOnHide", required: false }] }], autofocusFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocusFilter", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], emptyFilterMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyFilterMessage", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], optionDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionDisabled", required: false }] }], display: [{ type: i0.Input, args: [{ isSignal: true, alias: "display", required: false }] }], maxSelectedLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxSelectedLabels", required: false }] }], selectionLimit: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionLimit", required: false }] }], showToggleAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "showToggleAll", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], autofocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocus", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingIcon", required: false }] }], dropdownIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownIcon", required: false }] }], clearIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearIcon", required: false }] }], group: [{ type: i0.Input, args: [{ isSignal: true, alias: "group", required: false }] }], optionGroupLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupLabel", required: false }] }], optionGroupChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupChildren", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], selectedObjects: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedObjects", required: false }] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }], onChange: [{ type: i0.Output, args: ["onChange"] }], onFilter: [{ type: i0.Output, args: ["onFilter"] }], onShow: [{ type: i0.Output, args: ["onShow"] }], onHide: [{ type: i0.Output, args: ["onHide"] }], onClear: [{ type: i0.Output, args: ["onClear"] }], onLazyLoad: [{ type: i0.Output, args: ["onLazyLoad"] }], onSelectAllChange: [{ type: i0.Output, args: ["onSelectAllChange"] }], selectedItemRef: [{ type: i0.ContentChild, args: ['selectedItem', { isSignal: true }] }], itemRef: [{ type: i0.ContentChild, args: ['item', { isSignal: true }] }], groupRef: [{ type: i0.ContentChild, args: ['group', { isSignal: true }] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], emptyFilterRef: [{ type: i0.ContentChild, args: ['emptyfilter', { isSignal: true }] }], loaderRef: [{ type: i0.ContentChild, args: ['loader', { isSignal: true }] }], filterRef: [{ type: i0.ContentChild, args: ['filter', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
|
|
5468
5604
|
|
|
5469
5605
|
class CheckboxComponent {
|
|
5470
5606
|
label = input('', /* @ts-ignore */
|
|
@@ -6861,13 +6997,22 @@ class InputIconComponent {
|
|
|
6861
6997
|
const sideClass = this._resolvedPosition() === 'right'
|
|
6862
6998
|
? 'right-(--f-field-padding-x)'
|
|
6863
6999
|
: 'left-(--f-field-padding-x)';
|
|
6864
|
-
|
|
7000
|
+
// `position: absolute` blockifies this custom element, so its single
|
|
7001
|
+
// inline-flex child (`ui-icon`) would otherwise sit in a line box using
|
|
7002
|
+
// the browser's default baseline alignment, not true geometric centering
|
|
7003
|
+
// — inline-flex + items-center makes this element itself a flex
|
|
7004
|
+
// container so the icon centers against the box's real vertical
|
|
7005
|
+
// midpoint instead of ambient font baseline metrics.
|
|
7006
|
+
// Geometric center lands 1px low for a search-glass-shaped icon next to
|
|
7007
|
+
// text (its visual weight sits toward the bottom via the handle stroke),
|
|
7008
|
+
// so nudge up 1px for correct optical alignment.
|
|
7009
|
+
return `absolute inline-flex items-center ${sideClass} top-1/2 -translate-y-[calc(50%+1px)] text-(--f-form-field-placeholder-color) ${this.styleClass()}`;
|
|
6865
7010
|
}, /* @ts-ignore */
|
|
6866
7011
|
...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
6867
7012
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: InputIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6868
7013
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: InputIconComponent, isStandalone: true, selector: "f-inputicon", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClass()", "style": "style()" } }, ngImport: i0, template: `
|
|
6869
7014
|
@if (icon()) {
|
|
6870
|
-
<ui-icon [name]="icon()"></ui-icon>
|
|
7015
|
+
<ui-icon [name]="icon()" [size]="17"></ui-icon>
|
|
6871
7016
|
}
|
|
6872
7017
|
<ng-content />
|
|
6873
7018
|
`, isInline: true, dependencies: [{ kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }] });
|
|
@@ -6880,7 +7025,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
6880
7025
|
host: { '[class]': 'hostClass()', '[style]': 'style()' },
|
|
6881
7026
|
template: `
|
|
6882
7027
|
@if (icon()) {
|
|
6883
|
-
<ui-icon [name]="icon()"></ui-icon>
|
|
7028
|
+
<ui-icon [name]="icon()" [size]="17"></ui-icon>
|
|
6884
7029
|
}
|
|
6885
7030
|
<ng-content />
|
|
6886
7031
|
`,
|
|
@@ -6939,14 +7084,20 @@ class PopoverComponent {
|
|
|
6939
7084
|
_visible = signal(false, /* @ts-ignore */
|
|
6940
7085
|
...(ngDevMode ? [{ debugName: "_visible" }] : /* istanbul ignore next */ []));
|
|
6941
7086
|
visible = this._visible.asReadonly();
|
|
6942
|
-
_top = signal(0, /* @ts-ignore */
|
|
6943
|
-
...(ngDevMode ? [{ debugName: "_top" }] : /* istanbul ignore next */ []));
|
|
6944
|
-
top = this._top.asReadonly();
|
|
6945
|
-
_left = signal(0, /* @ts-ignore */
|
|
6946
|
-
...(ngDevMode ? [{ debugName: "_left" }] : /* istanbul ignore next */ []));
|
|
6947
|
-
left = this._left.asReadonly();
|
|
6948
7087
|
panelRef = viewChild('panel', /* @ts-ignore */
|
|
6949
7088
|
...(ngDevMode ? [{ debugName: "panelRef" }] : /* istanbul ignore next */ []));
|
|
7089
|
+
_placement = overlayPosition({
|
|
7090
|
+
active: () => this.visible() && this.appendTo() === 'body',
|
|
7091
|
+
anchor: () => this._anchor,
|
|
7092
|
+
panel: () => this.panelRef()?.nativeElement,
|
|
7093
|
+
options: () => ({ gap: 6 }),
|
|
7094
|
+
});
|
|
7095
|
+
top = computed(() => this._placement()?.top ?? 0, /* @ts-ignore */
|
|
7096
|
+
...(ngDevMode ? [{ debugName: "top" }] : /* istanbul ignore next */ []));
|
|
7097
|
+
left = computed(() => this._placement()?.left ?? 0, /* @ts-ignore */
|
|
7098
|
+
...(ngDevMode ? [{ debugName: "left" }] : /* istanbul ignore next */ []));
|
|
7099
|
+
maxHeight = computed(() => this._placement()?.maxHeight ?? null, /* @ts-ignore */
|
|
7100
|
+
...(ngDevMode ? [{ debugName: "maxHeight" }] : /* istanbul ignore next */ []));
|
|
6950
7101
|
_anchor = null;
|
|
6951
7102
|
_previouslyFocused = null;
|
|
6952
7103
|
_windowWidth = signal(typeof window !== 'undefined' ? window.innerWidth : Number.POSITIVE_INFINITY, /* @ts-ignore */
|
|
@@ -6975,7 +7126,7 @@ class PopoverComponent {
|
|
|
6975
7126
|
// positioning, which already escapes ancestor overflow clipping without a real
|
|
6976
7127
|
// DOM reparent.
|
|
6977
7128
|
panelClass = computed(() => {
|
|
6978
|
-
const position = this.appendTo() === 'self' ? 'absolute top-full left-0 mt-1.5' : 'fixed';
|
|
7129
|
+
const position = this.appendTo() === 'self' ? 'absolute top-full left-0 mt-1.5' : 'fixed overflow-auto';
|
|
6979
7130
|
return `popover-panel ${position} z-50 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) f-overlay min-w-48 max-w-sm ${this.styleClass()}`;
|
|
6980
7131
|
}, /* @ts-ignore */
|
|
6981
7132
|
...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
|
|
@@ -6985,7 +7136,6 @@ class PopoverComponent {
|
|
|
6985
7136
|
.pipe(takeUntilDestroyed())
|
|
6986
7137
|
.subscribe(() => this._windowWidth.set(window.innerWidth));
|
|
6987
7138
|
}
|
|
6988
|
-
repositionOnScroll(() => this.visible() && this.appendTo() === 'body', () => { this.position(); this.adjustForViewport(); });
|
|
6989
7139
|
}
|
|
6990
7140
|
toggle(event) {
|
|
6991
7141
|
this._anchor = event.target;
|
|
@@ -7001,11 +7151,9 @@ class PopoverComponent {
|
|
|
7001
7151
|
}
|
|
7002
7152
|
showInternal() {
|
|
7003
7153
|
this._previouslyFocused = typeof document !== 'undefined' ? document.activeElement : null;
|
|
7004
|
-
this.position();
|
|
7005
7154
|
this._visible.set(true);
|
|
7006
7155
|
this.onShow.emit();
|
|
7007
7156
|
setTimeout(() => {
|
|
7008
|
-
this.adjustForViewport();
|
|
7009
7157
|
if (this.focusOnShow())
|
|
7010
7158
|
this.focusPanel();
|
|
7011
7159
|
}, 0);
|
|
@@ -7026,32 +7174,6 @@ class PopoverComponent {
|
|
|
7026
7174
|
const focusable = panelEl.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
|
|
7027
7175
|
(focusable ?? panelEl).focus();
|
|
7028
7176
|
}
|
|
7029
|
-
position() {
|
|
7030
|
-
if (!this._anchor || this.appendTo() === 'self')
|
|
7031
|
-
return;
|
|
7032
|
-
const rect = this._anchor.getBoundingClientRect();
|
|
7033
|
-
const gap = 6;
|
|
7034
|
-
let top = rect.bottom + gap;
|
|
7035
|
-
let left = rect.left;
|
|
7036
|
-
if (typeof window !== 'undefined') {
|
|
7037
|
-
left = Math.min(left, window.innerWidth - 200 - 8);
|
|
7038
|
-
}
|
|
7039
|
-
this._top.set(top);
|
|
7040
|
-
this._left.set(Math.max(8, left));
|
|
7041
|
-
}
|
|
7042
|
-
adjustForViewport() {
|
|
7043
|
-
if (this.appendTo() === 'self')
|
|
7044
|
-
return;
|
|
7045
|
-
const panelEl = this.panelRef()?.nativeElement;
|
|
7046
|
-
if (!panelEl || !this._anchor || typeof window === 'undefined')
|
|
7047
|
-
return;
|
|
7048
|
-
const anchorRect = this._anchor.getBoundingClientRect();
|
|
7049
|
-
const panelRect = panelEl.getBoundingClientRect();
|
|
7050
|
-
const gap = 6;
|
|
7051
|
-
if (anchorRect.bottom + panelRect.height + gap > window.innerHeight) {
|
|
7052
|
-
this._top.set(Math.max(8, anchorRect.top - panelRect.height - gap));
|
|
7053
|
-
}
|
|
7054
|
-
}
|
|
7055
7177
|
onCloseIconClick(event) {
|
|
7056
7178
|
event.stopPropagation();
|
|
7057
7179
|
this.hide();
|
|
@@ -7078,6 +7200,7 @@ class PopoverComponent {
|
|
|
7078
7200
|
[style]="panelStyle()"
|
|
7079
7201
|
[style.top.px]="appendTo() === 'body' ? top() : null"
|
|
7080
7202
|
[style.left.px]="appendTo() === 'body' ? left() : null"
|
|
7203
|
+
[style.max-height.px]="appendTo() === 'body' ? maxHeight() : null"
|
|
7081
7204
|
(click)="$event.stopPropagation()"
|
|
7082
7205
|
>
|
|
7083
7206
|
@if (showCloseIcon()) {
|
|
@@ -7113,6 +7236,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
7113
7236
|
[style]="panelStyle()"
|
|
7114
7237
|
[style.top.px]="appendTo() === 'body' ? top() : null"
|
|
7115
7238
|
[style.left.px]="appendTo() === 'body' ? left() : null"
|
|
7239
|
+
[style.max-height.px]="appendTo() === 'body' ? maxHeight() : null"
|
|
7116
7240
|
(click)="$event.stopPropagation()"
|
|
7117
7241
|
>
|
|
7118
7242
|
@if (showCloseIcon()) {
|
|
@@ -11094,8 +11218,8 @@ class StepsComponent {
|
|
|
11094
11218
|
} @else {
|
|
11095
11219
|
<div role="tablist" [attr.aria-label]="ariaLabel()" [class]="'flex items-start w-full ' + styleClass()" [style]="style()">
|
|
11096
11220
|
@for (item of model(); track $index; let i = $index; let last = $last) {
|
|
11097
|
-
<div class="flex items-
|
|
11098
|
-
<div class="flex flex-col items-center gap-2">
|
|
11221
|
+
<div class="flex items-start min-w-0" [class.flex-1]="!last">
|
|
11222
|
+
<div class="flex flex-col items-center gap-2 min-w-0">
|
|
11099
11223
|
<button
|
|
11100
11224
|
#stepBtn
|
|
11101
11225
|
type="button"
|
|
@@ -11116,14 +11240,14 @@ class StepsComponent {
|
|
|
11116
11240
|
}
|
|
11117
11241
|
</button>
|
|
11118
11242
|
@if (item.label) {
|
|
11119
|
-
<span class="text-xs
|
|
11243
|
+
<span class="text-xs transition-all duration-[var(--f-transition-duration)] leading-tight text-center max-w-[120px] break-words"
|
|
11120
11244
|
[class]="i === activeIndex() ? 'font-semibold text-primary' : i < activeIndex() ? 'font-medium text-(--f-text-muted-color)' : 'text-(--f-text-muted-color)'">
|
|
11121
11245
|
{{ item.label }}
|
|
11122
11246
|
</span>
|
|
11123
11247
|
}
|
|
11124
11248
|
</div>
|
|
11125
11249
|
@if (!last) {
|
|
11126
|
-
<div class="flex-1 h-[1.5px] mx-3
|
|
11250
|
+
<div class="flex-1 h-[1.5px] mx-3 mt-[15px] rounded-full transition-all duration-[var(--f-transition-duration)]" [class]="i < activeIndex() ? 'bg-primary' : 'bg-(--f-content-border-color)'"></div>
|
|
11127
11251
|
}
|
|
11128
11252
|
</div>
|
|
11129
11253
|
}
|
|
@@ -11178,8 +11302,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
11178
11302
|
} @else {
|
|
11179
11303
|
<div role="tablist" [attr.aria-label]="ariaLabel()" [class]="'flex items-start w-full ' + styleClass()" [style]="style()">
|
|
11180
11304
|
@for (item of model(); track $index; let i = $index; let last = $last) {
|
|
11181
|
-
<div class="flex items-
|
|
11182
|
-
<div class="flex flex-col items-center gap-2">
|
|
11305
|
+
<div class="flex items-start min-w-0" [class.flex-1]="!last">
|
|
11306
|
+
<div class="flex flex-col items-center gap-2 min-w-0">
|
|
11183
11307
|
<button
|
|
11184
11308
|
#stepBtn
|
|
11185
11309
|
type="button"
|
|
@@ -11200,14 +11324,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
11200
11324
|
}
|
|
11201
11325
|
</button>
|
|
11202
11326
|
@if (item.label) {
|
|
11203
|
-
<span class="text-xs
|
|
11327
|
+
<span class="text-xs transition-all duration-[var(--f-transition-duration)] leading-tight text-center max-w-[120px] break-words"
|
|
11204
11328
|
[class]="i === activeIndex() ? 'font-semibold text-primary' : i < activeIndex() ? 'font-medium text-(--f-text-muted-color)' : 'text-(--f-text-muted-color)'">
|
|
11205
11329
|
{{ item.label }}
|
|
11206
11330
|
</span>
|
|
11207
11331
|
}
|
|
11208
11332
|
</div>
|
|
11209
11333
|
@if (!last) {
|
|
11210
|
-
<div class="flex-1 h-[1.5px] mx-3
|
|
11334
|
+
<div class="flex-1 h-[1.5px] mx-3 mt-[15px] rounded-full transition-all duration-[var(--f-transition-duration)]" [class]="i < activeIndex() ? 'bg-primary' : 'bg-(--f-content-border-color)'"></div>
|
|
11211
11335
|
}
|
|
11212
11336
|
</div>
|
|
11213
11337
|
}
|
|
@@ -14301,59 +14425,22 @@ class AutoCompleteComponent {
|
|
|
14301
14425
|
...(ngDevMode ? [{ debugName: "anchorRef" }] : /* istanbul ignore next */ []));
|
|
14302
14426
|
panelRef = viewChild('panel', /* @ts-ignore */
|
|
14303
14427
|
...(ngDevMode ? [{ debugName: "panelRef" }] : /* istanbul ignore next */ []));
|
|
14304
|
-
|
|
14305
|
-
|
|
14306
|
-
|
|
14307
|
-
|
|
14308
|
-
|
|
14309
|
-
|
|
14428
|
+
_placement = overlayPosition({
|
|
14429
|
+
active: () => this.open() && this.appendTo() === 'body',
|
|
14430
|
+
anchor: () => this.anchorRef()?.nativeElement,
|
|
14431
|
+
panel: () => this.panelRef()?.nativeElement,
|
|
14432
|
+
options: () => ({ matchAnchorWidth: true }),
|
|
14433
|
+
});
|
|
14310
14434
|
panelClass = computed(() => {
|
|
14311
14435
|
const position = this.appendTo() === 'body' ? 'fixed' : 'absolute w-full mt-1';
|
|
14312
|
-
return `${position} z-50 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) f-overlay overflow-hidden`;
|
|
14436
|
+
return `${position} z-50 flex flex-col bg-(--f-overlay-popover-background) border border-(--f-content-border-color) f-overlay overflow-hidden`;
|
|
14313
14437
|
}, /* @ts-ignore */
|
|
14314
14438
|
...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
|
|
14315
|
-
panelStyle = computed(() => {
|
|
14316
|
-
if (this.appendTo() !== 'body')
|
|
14317
|
-
return {};
|
|
14318
|
-
return {
|
|
14319
|
-
top: `${this._panelTop()}px`,
|
|
14320
|
-
left: `${this._panelLeft()}px`,
|
|
14321
|
-
width: `${this._panelWidth()}px`,
|
|
14322
|
-
};
|
|
14323
|
-
}, /* @ts-ignore */
|
|
14439
|
+
panelStyle = computed(() => this.appendTo() === 'body' ? overlayPlacementStyle(this._placement()) : {}, /* @ts-ignore */
|
|
14324
14440
|
...(ngDevMode ? [{ debugName: "panelStyle" }] : /* istanbul ignore next */ []));
|
|
14325
|
-
position() {
|
|
14326
|
-
const anchorEl = this.anchorRef()?.nativeElement;
|
|
14327
|
-
if (!anchorEl || typeof window === 'undefined')
|
|
14328
|
-
return;
|
|
14329
|
-
const rect = anchorEl.getBoundingClientRect();
|
|
14330
|
-
this._panelTop.set(rect.bottom + 4);
|
|
14331
|
-
this._panelLeft.set(Math.max(8, rect.left));
|
|
14332
|
-
this._panelWidth.set(rect.width);
|
|
14333
|
-
}
|
|
14334
|
-
adjustForViewport() {
|
|
14335
|
-
const panelEl = this.panelRef()?.nativeElement;
|
|
14336
|
-
const anchorEl = this.anchorRef()?.nativeElement;
|
|
14337
|
-
if (!panelEl || !anchorEl || typeof window === 'undefined')
|
|
14338
|
-
return;
|
|
14339
|
-
const anchorRect = anchorEl.getBoundingClientRect();
|
|
14340
|
-
const panelRect = panelEl.getBoundingClientRect();
|
|
14341
|
-
const gap = 4;
|
|
14342
|
-
this._panelLeft.set(Math.max(8, Math.min(anchorRect.left, window.innerWidth - panelRect.width - 8)));
|
|
14343
|
-
if (anchorRect.bottom + panelRect.height + gap > window.innerHeight) {
|
|
14344
|
-
this._panelTop.set(Math.max(8, anchorRect.top - panelRect.height - gap));
|
|
14345
|
-
}
|
|
14346
|
-
}
|
|
14347
14441
|
openPanel() {
|
|
14348
|
-
if (this.appendTo() === 'body') {
|
|
14349
|
-
this.position();
|
|
14350
|
-
setTimeout(() => this.adjustForViewport(), 0);
|
|
14351
|
-
}
|
|
14352
14442
|
this._open.set(true);
|
|
14353
14443
|
}
|
|
14354
|
-
constructor() {
|
|
14355
|
-
repositionOnScroll(() => this.open() && this.appendTo() === 'body', () => { this.position(); this.adjustForViewport(); });
|
|
14356
|
-
}
|
|
14357
14444
|
onDocumentClick(e) {
|
|
14358
14445
|
if (this.open() && !this._el.nativeElement.contains(e.target)) {
|
|
14359
14446
|
this._open.set(false);
|
|
@@ -14385,7 +14472,7 @@ class AutoCompleteComponent {
|
|
|
14385
14472
|
...(ngDevMode ? [{ debugName: "styleClass" }] : /* istanbul ignore next */ []));
|
|
14386
14473
|
style = input(null, /* @ts-ignore */
|
|
14387
14474
|
...(ngDevMode ? [{ debugName: "style" }] : /* istanbul ignore next */ []));
|
|
14388
|
-
appendTo = input('
|
|
14475
|
+
appendTo = input('body', /* @ts-ignore */
|
|
14389
14476
|
...(ngDevMode ? [{ debugName: "appendTo" }] : /* istanbul ignore next */ []));
|
|
14390
14477
|
virtualScroll = input(false, { ...(ngDevMode ? { debugName: "virtualScroll" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
14391
14478
|
virtualScrollItemSize = input(38, { ...(ngDevMode ? { debugName: "virtualScrollItemSize" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
@@ -14857,7 +14944,7 @@ class AutoCompleteComponent {
|
|
|
14857
14944
|
} @else {
|
|
14858
14945
|
<ul
|
|
14859
14946
|
[id]="listboxId"
|
|
14860
|
-
class="overflow-auto py-1"
|
|
14947
|
+
class="flex-1 min-h-0 max-h-64 overflow-auto py-1"
|
|
14861
14948
|
[style.max-height]="scrollHeight()"
|
|
14862
14949
|
role="listbox"
|
|
14863
14950
|
[attr.aria-multiselectable]="multiple()"
|
|
@@ -15125,7 +15212,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
15125
15212
|
} @else {
|
|
15126
15213
|
<ul
|
|
15127
15214
|
[id]="listboxId"
|
|
15128
|
-
class="overflow-auto py-1"
|
|
15215
|
+
class="flex-1 min-h-0 max-h-64 overflow-auto py-1"
|
|
15129
15216
|
[style.max-height]="scrollHeight()"
|
|
15130
15217
|
role="listbox"
|
|
15131
15218
|
[attr.aria-multiselectable]="multiple()"
|
|
@@ -15187,7 +15274,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
15187
15274
|
</div>
|
|
15188
15275
|
`,
|
|
15189
15276
|
}]
|
|
15190
|
-
}],
|
|
15277
|
+
}], propDecorators: { anchorRef: [{ type: i0.ViewChild, args: ['anchor', { isSignal: true }] }], panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], suggestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestions", required: false }] }], field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], dropdown: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdown", required: false }] }], forceSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "forceSelection", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], completeOnFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "completeOnFocus", required: false }] }], delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "delay", required: false }] }], minLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "minLength", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingIcon", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], scrollHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollHeight", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], group: [{ type: i0.Input, args: [{ isSignal: true, alias: "group", required: false }] }], optionGroupLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupLabel", required: false }] }], optionGroupChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupChildren", required: false }] }], completeMethod: [{ type: i0.Output, args: ["completeMethod"] }], onSelect: [{ type: i0.Output, args: ["onSelect"] }], onUnselect: [{ type: i0.Output, args: ["onUnselect"] }], onDropdownClick: [{ type: i0.Output, args: ["onDropdownClick"] }], onClear: [{ type: i0.Output, args: ["onClear"] }], focusEvent: [{ type: i0.Output, args: ["focusEvent"] }], blurEvent: [{ type: i0.Output, args: ["blurEvent"] }], onChange: [{ type: i0.Output, args: ["onChange"] }], onLazyLoad: [{ type: i0.Output, args: ["onLazyLoad"] }], itemRef: [{ type: i0.ContentChild, args: ['item', { isSignal: true }] }], groupRef: [{ type: i0.ContentChild, args: ['group', { isSignal: true }] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], selectedItemRef: [{ type: i0.ContentChild, args: ['selectedItem', { isSignal: true }] }], loaderRef: [{ type: i0.ContentChild, args: ['loader', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
|
|
15191
15278
|
|
|
15192
15279
|
function hexToRgb(hex) {
|
|
15193
15280
|
const clean = hex.replace('#', '');
|
|
@@ -16131,15 +16218,18 @@ class SplitButtonComponent {
|
|
|
16131
16218
|
_open = signal(false, /* @ts-ignore */
|
|
16132
16219
|
...(ngDevMode ? [{ debugName: "_open" }] : /* istanbul ignore next */ []));
|
|
16133
16220
|
open = this._open.asReadonly();
|
|
16134
|
-
|
|
16135
|
-
|
|
16136
|
-
|
|
16137
|
-
|
|
16138
|
-
|
|
16139
|
-
|
|
16140
|
-
|
|
16141
|
-
|
|
16142
|
-
|
|
16221
|
+
_placement = overlayPosition({
|
|
16222
|
+
active: () => this.open() && this.appendTo() === 'body',
|
|
16223
|
+
anchor: () => this._group()?.nativeElement,
|
|
16224
|
+
panel: () => this._menuPanel()?.nativeElement,
|
|
16225
|
+
options: () => ({ align: 'end' }),
|
|
16226
|
+
});
|
|
16227
|
+
menuTop = computed(() => this._placement()?.top ?? 0, /* @ts-ignore */
|
|
16228
|
+
...(ngDevMode ? [{ debugName: "menuTop" }] : /* istanbul ignore next */ []));
|
|
16229
|
+
menuLeft = computed(() => this._placement()?.left ?? 0, /* @ts-ignore */
|
|
16230
|
+
...(ngDevMode ? [{ debugName: "menuLeft" }] : /* istanbul ignore next */ []));
|
|
16231
|
+
menuMaxHeight = computed(() => this._placement()?.maxHeight ?? null, /* @ts-ignore */
|
|
16232
|
+
...(ngDevMode ? [{ debugName: "menuMaxHeight" }] : /* istanbul ignore next */ []));
|
|
16143
16233
|
groupClass = computed(() => {
|
|
16144
16234
|
const shape = this.rounded() ? 'rounded-full' : 'rounded-lg';
|
|
16145
16235
|
const raisedCls = this.raised() ? 'shadow-md' : '';
|
|
@@ -16163,7 +16253,7 @@ class SplitButtonComponent {
|
|
|
16163
16253
|
}, /* @ts-ignore */
|
|
16164
16254
|
...(ngDevMode ? [{ debugName: "dropdownClass" }] : /* istanbul ignore next */ []));
|
|
16165
16255
|
menuPanelClass = computed(() => {
|
|
16166
|
-
const base = 'z-50 min-w-[10rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) f-overlay overflow-hidden';
|
|
16256
|
+
const base = 'z-50 flex flex-col min-w-[10rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) f-overlay overflow-hidden';
|
|
16167
16257
|
const position = this.appendTo() === 'body' ? 'fixed' : 'absolute right-0 top-full mt-1';
|
|
16168
16258
|
return `${position} ${base} ${this.menuStyleClass()}`;
|
|
16169
16259
|
}, /* @ts-ignore */
|
|
@@ -16242,10 +16332,6 @@ class SplitButtonComponent {
|
|
|
16242
16332
|
if (this.open())
|
|
16243
16333
|
return;
|
|
16244
16334
|
this._open.set(true);
|
|
16245
|
-
if (this.appendTo() === 'body') {
|
|
16246
|
-
this.positionMenu();
|
|
16247
|
-
queueMicrotask(() => this.adjustMenuForViewport());
|
|
16248
|
-
}
|
|
16249
16335
|
this.onShow.emit();
|
|
16250
16336
|
}
|
|
16251
16337
|
close(returnFocus) {
|
|
@@ -16266,29 +16352,6 @@ class SplitButtonComponent {
|
|
|
16266
16352
|
const target = index === -1 ? items[items.length - 1] : items[index];
|
|
16267
16353
|
target?.focus();
|
|
16268
16354
|
}
|
|
16269
|
-
positionMenu() {
|
|
16270
|
-
const anchor = this._group()?.nativeElement;
|
|
16271
|
-
if (!anchor || typeof window === 'undefined')
|
|
16272
|
-
return;
|
|
16273
|
-
const rect = anchor.getBoundingClientRect();
|
|
16274
|
-
this._menuTop.set(rect.bottom + 4);
|
|
16275
|
-
this._menuLeft.set(Math.max(8, rect.right - 160));
|
|
16276
|
-
}
|
|
16277
|
-
adjustMenuForViewport() {
|
|
16278
|
-
const anchor = this._group()?.nativeElement;
|
|
16279
|
-
const panel = this._menuPanel()?.nativeElement;
|
|
16280
|
-
if (!anchor || !panel || typeof window === 'undefined')
|
|
16281
|
-
return;
|
|
16282
|
-
const anchorRect = anchor.getBoundingClientRect();
|
|
16283
|
-
const panelRect = panel.getBoundingClientRect();
|
|
16284
|
-
const gap = 4;
|
|
16285
|
-
let left = anchorRect.right - panelRect.width;
|
|
16286
|
-
left = Math.max(8, Math.min(left, window.innerWidth - panelRect.width - 8));
|
|
16287
|
-
this._menuLeft.set(left);
|
|
16288
|
-
if (anchorRect.bottom + panelRect.height + gap > window.innerHeight) {
|
|
16289
|
-
this._menuTop.set(Math.max(8, anchorRect.top - panelRect.height - gap));
|
|
16290
|
-
}
|
|
16291
|
-
}
|
|
16292
16355
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SplitButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16293
16356
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: SplitButtonComponent, isStandalone: true, selector: "f-splitbutton", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: false, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, raised: { classPropertyName: "raised", publicName: "raised", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, outlined: { classPropertyName: "outlined", publicName: "outlined", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, iconPos: { classPropertyName: "iconPos", publicName: "iconPos", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, menuStyleClass: { classPropertyName: "menuStyleClass", publicName: "menuStyleClass", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, dropdownIcon: { classPropertyName: "dropdownIcon", publicName: "dropdownIcon", isSignal: true, isRequired: false, transformFunction: null }, expandAriaLabel: { classPropertyName: "expandAriaLabel", publicName: "expandAriaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick", onDropdownClick: "onDropdownClick", onShow: "onShow", onHide: "onHide" }, host: { listeners: { "document:click": "onDocumentClick($event)" }, classAttribute: "inline-flex" }, viewQueries: [{ propertyName: "_group", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "_dropdownBtn", first: true, predicate: ["dropdownButton"], descendants: true, isSignal: true }, { propertyName: "_menuPanel", first: true, predicate: ["menuPanel"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
16294
16357
|
<div class="relative inline-flex" [class.opacity-60]="disabled()" [class.pointer-events-none]="disabled()">
|
|
@@ -16328,11 +16391,12 @@ class SplitButtonComponent {
|
|
|
16328
16391
|
[class]="menuPanelClass()"
|
|
16329
16392
|
[style.top.px]="appendTo() === 'body' ? menuTop() : null"
|
|
16330
16393
|
[style.left.px]="appendTo() === 'body' ? menuLeft() : null"
|
|
16394
|
+
[style.max-height.px]="appendTo() === 'body' ? menuMaxHeight() : null"
|
|
16331
16395
|
role="menu"
|
|
16332
16396
|
[attr.aria-label]="expandAriaLabel() || null"
|
|
16333
16397
|
(keydown)="onMenuKeydown($event)"
|
|
16334
16398
|
>
|
|
16335
|
-
<ul class="py-1">
|
|
16399
|
+
<ul class="flex-1 min-h-0 overflow-auto py-1">
|
|
16336
16400
|
@for (item of model(); track $index) {
|
|
16337
16401
|
@if (item.separator) {
|
|
16338
16402
|
<li role="separator" class="my-1 border-t border-(--f-content-border-color)"></li>
|
|
@@ -16410,11 +16474,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
16410
16474
|
[class]="menuPanelClass()"
|
|
16411
16475
|
[style.top.px]="appendTo() === 'body' ? menuTop() : null"
|
|
16412
16476
|
[style.left.px]="appendTo() === 'body' ? menuLeft() : null"
|
|
16477
|
+
[style.max-height.px]="appendTo() === 'body' ? menuMaxHeight() : null"
|
|
16413
16478
|
role="menu"
|
|
16414
16479
|
[attr.aria-label]="expandAriaLabel() || null"
|
|
16415
16480
|
(keydown)="onMenuKeydown($event)"
|
|
16416
16481
|
>
|
|
16417
|
-
<ul class="py-1">
|
|
16482
|
+
<ul class="flex-1 min-h-0 overflow-auto py-1">
|
|
16418
16483
|
@for (item of model(); track $index) {
|
|
16419
16484
|
@if (item.separator) {
|
|
16420
16485
|
<li role="separator" class="my-1 border-t border-(--f-content-border-color)"></li>
|
|
@@ -16445,7 +16510,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
16445
16510
|
</div>
|
|
16446
16511
|
`,
|
|
16447
16512
|
}]
|
|
16448
|
-
}],
|
|
16513
|
+
}], propDecorators: { _group: [{ type: i0.ViewChild, args: ['group', { isSignal: true }] }], _dropdownBtn: [{ type: i0.ViewChild, args: ['dropdownButton', { isSignal: true }] }], _menuPanel: [{ type: i0.ViewChild, args: ['menuPanel', { isSignal: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], model: [{ type: i0.Input, args: [{ isSignal: true, alias: "model", required: false }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], raised: [{ type: i0.Input, args: [{ isSignal: true, alias: "raised", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], outlined: [{ type: i0.Input, args: [{ isSignal: true, alias: "outlined", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], iconPos: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconPos", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], menuStyleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuStyleClass", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], dropdownIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownIcon", required: false }] }], expandAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandAriaLabel", required: false }] }], onClick: [{ type: i0.Output, args: ["onClick"] }], onDropdownClick: [{ type: i0.Output, args: ["onDropdownClick"] }], onShow: [{ type: i0.Output, args: ["onShow"] }], onHide: [{ type: i0.Output, args: ["onHide"] }] } });
|
|
16449
16514
|
|
|
16450
16515
|
let _uidCounter$2 = 0;
|
|
16451
16516
|
function assignKey$2(node) {
|
|
@@ -16456,12 +16521,6 @@ function assignKey$2(node) {
|
|
|
16456
16521
|
}
|
|
16457
16522
|
class TreeSelectComponent {
|
|
16458
16523
|
_el = inject(ElementRef);
|
|
16459
|
-
constructor() {
|
|
16460
|
-
repositionOnScroll(() => this.open() && this.appendTo() === 'body', () => {
|
|
16461
|
-
this.position();
|
|
16462
|
-
this.adjustForViewport();
|
|
16463
|
-
});
|
|
16464
|
-
}
|
|
16465
16524
|
options = input([], /* @ts-ignore */
|
|
16466
16525
|
...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
|
|
16467
16526
|
placeholder = input('Select', /* @ts-ignore */
|
|
@@ -16490,7 +16549,7 @@ class TreeSelectComponent {
|
|
|
16490
16549
|
...(ngDevMode ? [{ debugName: "styleClass" }] : /* istanbul ignore next */ []));
|
|
16491
16550
|
style = input(null, /* @ts-ignore */
|
|
16492
16551
|
...(ngDevMode ? [{ debugName: "style" }] : /* istanbul ignore next */ []));
|
|
16493
|
-
appendTo = input('
|
|
16552
|
+
appendTo = input('body', /* @ts-ignore */
|
|
16494
16553
|
...(ngDevMode ? [{ debugName: "appendTo" }] : /* istanbul ignore next */ []));
|
|
16495
16554
|
hostClass = computed(() => `block w-full ${this.styleClass()}`, /* @ts-ignore */
|
|
16496
16555
|
...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
@@ -16498,49 +16557,19 @@ class TreeSelectComponent {
|
|
|
16498
16557
|
...(ngDevMode ? [{ debugName: "triggerRef" }] : /* istanbul ignore next */ []));
|
|
16499
16558
|
panelRef = viewChild('panel', /* @ts-ignore */
|
|
16500
16559
|
...(ngDevMode ? [{ debugName: "panelRef" }] : /* istanbul ignore next */ []));
|
|
16501
|
-
|
|
16502
|
-
|
|
16503
|
-
|
|
16504
|
-
|
|
16505
|
-
|
|
16506
|
-
|
|
16560
|
+
_placement = overlayPosition({
|
|
16561
|
+
active: () => this.open() && this.appendTo() === 'body',
|
|
16562
|
+
anchor: () => this.triggerRef()?.nativeElement,
|
|
16563
|
+
panel: () => this.panelRef()?.nativeElement,
|
|
16564
|
+
options: () => ({ matchAnchorWidth: true }),
|
|
16565
|
+
});
|
|
16507
16566
|
panelClass = computed(() => {
|
|
16508
16567
|
const position = this.appendTo() === 'body' ? 'fixed' : 'absolute w-full mt-1';
|
|
16509
|
-
return `${position} z-50 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) f-overlay overflow-hidden`;
|
|
16568
|
+
return `${position} z-50 flex flex-col bg-(--f-overlay-popover-background) border border-(--f-content-border-color) f-overlay overflow-hidden`;
|
|
16510
16569
|
}, /* @ts-ignore */
|
|
16511
16570
|
...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
|
|
16512
|
-
panelStyle = computed(() => {
|
|
16513
|
-
if (this.appendTo() !== 'body')
|
|
16514
|
-
return {};
|
|
16515
|
-
return {
|
|
16516
|
-
top: `${this._panelTop()}px`,
|
|
16517
|
-
left: `${this._panelLeft()}px`,
|
|
16518
|
-
width: `${this._panelWidth()}px`,
|
|
16519
|
-
};
|
|
16520
|
-
}, /* @ts-ignore */
|
|
16571
|
+
panelStyle = computed(() => this.appendTo() === 'body' ? overlayPlacementStyle(this._placement()) : {}, /* @ts-ignore */
|
|
16521
16572
|
...(ngDevMode ? [{ debugName: "panelStyle" }] : /* istanbul ignore next */ []));
|
|
16522
|
-
position() {
|
|
16523
|
-
const anchorEl = this.triggerRef()?.nativeElement;
|
|
16524
|
-
if (!anchorEl || typeof window === 'undefined')
|
|
16525
|
-
return;
|
|
16526
|
-
const rect = anchorEl.getBoundingClientRect();
|
|
16527
|
-
this._panelTop.set(rect.bottom + 4);
|
|
16528
|
-
this._panelLeft.set(Math.max(8, rect.left));
|
|
16529
|
-
this._panelWidth.set(rect.width);
|
|
16530
|
-
}
|
|
16531
|
-
adjustForViewport() {
|
|
16532
|
-
const panelEl = this.panelRef()?.nativeElement;
|
|
16533
|
-
const anchorEl = this.triggerRef()?.nativeElement;
|
|
16534
|
-
if (!panelEl || !anchorEl || typeof window === 'undefined')
|
|
16535
|
-
return;
|
|
16536
|
-
const anchorRect = anchorEl.getBoundingClientRect();
|
|
16537
|
-
const panelRect = panelEl.getBoundingClientRect();
|
|
16538
|
-
const gap = 4;
|
|
16539
|
-
this._panelLeft.set(Math.max(8, Math.min(anchorRect.left, window.innerWidth - panelRect.width - 8)));
|
|
16540
|
-
if (anchorRect.bottom + panelRect.height + gap > window.innerHeight) {
|
|
16541
|
-
this._panelTop.set(Math.max(8, anchorRect.top - panelRect.height - gap));
|
|
16542
|
-
}
|
|
16543
|
-
}
|
|
16544
16573
|
_open = signal(false, /* @ts-ignore */
|
|
16545
16574
|
...(ngDevMode ? [{ debugName: "_open" }] : /* istanbul ignore next */ []));
|
|
16546
16575
|
open = this._open.asReadonly();
|
|
@@ -16672,10 +16701,6 @@ class TreeSelectComponent {
|
|
|
16672
16701
|
this._onTouched();
|
|
16673
16702
|
return;
|
|
16674
16703
|
}
|
|
16675
|
-
if (this.appendTo() === 'body') {
|
|
16676
|
-
this.position();
|
|
16677
|
-
setTimeout(() => this.adjustForViewport(), 0);
|
|
16678
|
-
}
|
|
16679
16704
|
}
|
|
16680
16705
|
onTriggerKeyDown(e) {
|
|
16681
16706
|
if (this.disabled())
|
|
@@ -16973,7 +16998,7 @@ class TreeSelectComponent {
|
|
|
16973
16998
|
</ng-template>
|
|
16974
16999
|
</f-scroller>
|
|
16975
17000
|
} @else {
|
|
16976
|
-
<div class="max-h-64 overflow-auto py-1" role="tree">
|
|
17001
|
+
<div class="flex-1 min-h-0 max-h-64 overflow-auto py-1" role="tree">
|
|
16977
17002
|
@for (row of visibleFlatNodes(); track row.key) {
|
|
16978
17003
|
<ng-container
|
|
16979
17004
|
[ngTemplateOutlet]="rowTpl"
|
|
@@ -17214,7 +17239,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
17214
17239
|
</ng-template>
|
|
17215
17240
|
</f-scroller>
|
|
17216
17241
|
} @else {
|
|
17217
|
-
<div class="max-h-64 overflow-auto py-1" role="tree">
|
|
17242
|
+
<div class="flex-1 min-h-0 max-h-64 overflow-auto py-1" role="tree">
|
|
17218
17243
|
@for (row of visibleFlatNodes(); track row.key) {
|
|
17219
17244
|
<ng-container
|
|
17220
17245
|
[ngTemplateOutlet]="rowTpl"
|
|
@@ -17301,7 +17326,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
17301
17326
|
</ng-template>
|
|
17302
17327
|
`,
|
|
17303
17328
|
}]
|
|
17304
|
-
}],
|
|
17329
|
+
}], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], display: [{ type: i0.Input, args: [{ isSignal: true, alias: "display", required: false }] }], propagateSelectionDown: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionDown", required: false }] }], propagateSelectionUp: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionUp", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], triggerRef: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], valueRef: [{ type: i0.ContentChild, args: ['value', { isSignal: true }] }], headerRef: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], footerRef: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
|
|
17305
17330
|
|
|
17306
17331
|
class OverlayBadgeComponent {
|
|
17307
17332
|
value = input('', /* @ts-ignore */
|
|
@@ -17934,15 +17959,13 @@ class MenuComponent {
|
|
|
17934
17959
|
_visible = signal(false, /* @ts-ignore */
|
|
17935
17960
|
...(ngDevMode ? [{ debugName: "_visible" }] : /* istanbul ignore next */ []));
|
|
17936
17961
|
visible = this._visible.asReadonly();
|
|
17937
|
-
|
|
17938
|
-
|
|
17939
|
-
|
|
17940
|
-
|
|
17962
|
+
_placement = overlayPosition({
|
|
17963
|
+
active: () => this.popup() && this.visible() && this.appendTo() === 'body',
|
|
17964
|
+
anchor: () => this._anchor,
|
|
17965
|
+
panel: () => this.containerRef()?.nativeElement,
|
|
17966
|
+
});
|
|
17941
17967
|
_openedAt = 0;
|
|
17942
17968
|
_anchor = null;
|
|
17943
|
-
constructor() {
|
|
17944
|
-
repositionOnScroll(() => this.popup() && this.visible() && this.appendTo() === 'body', () => { this.position(); this.adjustForViewport(); });
|
|
17945
|
-
}
|
|
17946
17969
|
fTemplates = contentChildren(FTemplateDirective, /* @ts-ignore */
|
|
17947
17970
|
...(ngDevMode ? [{ debugName: "fTemplates" }] : /* istanbul ignore next */ []));
|
|
17948
17971
|
namedTemplate(name) {
|
|
@@ -17962,13 +17985,13 @@ class MenuComponent {
|
|
|
17962
17985
|
return `w-full bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg overflow-hidden ${this.styleClass()}`;
|
|
17963
17986
|
}
|
|
17964
17987
|
const position = this.appendTo() === 'body' ? 'fixed' : 'absolute mt-1';
|
|
17965
|
-
return `${position} z-50 shadow-lg ${base} ${this.styleClass()}`;
|
|
17988
|
+
return `${position} z-50 flex flex-col shadow-lg ${base} ${this.styleClass()}`;
|
|
17966
17989
|
}, /* @ts-ignore */
|
|
17967
17990
|
...(ngDevMode ? [{ debugName: "containerClass" }] : /* istanbul ignore next */ []));
|
|
17968
17991
|
containerStyle = computed(() => {
|
|
17969
17992
|
const style = this.style() ?? {};
|
|
17970
17993
|
if (this.popup() && this.appendTo() === 'body') {
|
|
17971
|
-
return { ...style,
|
|
17994
|
+
return { ...style, ...overlayPlacementStyle(this._placement()) };
|
|
17972
17995
|
}
|
|
17973
17996
|
return style;
|
|
17974
17997
|
}, /* @ts-ignore */
|
|
@@ -17982,13 +18005,8 @@ class MenuComponent {
|
|
|
17982
18005
|
show(event) {
|
|
17983
18006
|
this._anchor = event?.currentTarget ?? null;
|
|
17984
18007
|
this._openedAt = Date.now();
|
|
17985
|
-
if (this.appendTo() === 'body')
|
|
17986
|
-
this.position();
|
|
17987
18008
|
this._visible.set(true);
|
|
17988
18009
|
this.onShow.emit();
|
|
17989
|
-
if (this.appendTo() === 'body') {
|
|
17990
|
-
setTimeout(() => this.adjustForViewport(), 0);
|
|
17991
|
-
}
|
|
17992
18010
|
}
|
|
17993
18011
|
hide() {
|
|
17994
18012
|
if (!this._visible())
|
|
@@ -17996,27 +18014,6 @@ class MenuComponent {
|
|
|
17996
18014
|
this._visible.set(false);
|
|
17997
18015
|
this.onHide.emit();
|
|
17998
18016
|
}
|
|
17999
|
-
position() {
|
|
18000
|
-
if (!this._anchor || typeof window === 'undefined')
|
|
18001
|
-
return;
|
|
18002
|
-
const rect = this._anchor.getBoundingClientRect();
|
|
18003
|
-
this._top.set(rect.bottom + 4);
|
|
18004
|
-
this._left.set(rect.left);
|
|
18005
|
-
}
|
|
18006
|
-
adjustForViewport() {
|
|
18007
|
-
const el = this.containerRef()?.nativeElement;
|
|
18008
|
-
if (!el || !this._anchor || typeof window === 'undefined')
|
|
18009
|
-
return;
|
|
18010
|
-
const anchorRect = this._anchor.getBoundingClientRect();
|
|
18011
|
-
const panelRect = el.getBoundingClientRect();
|
|
18012
|
-
const gap = 4;
|
|
18013
|
-
let left = anchorRect.left;
|
|
18014
|
-
left = Math.max(8, Math.min(left, window.innerWidth - panelRect.width - 8));
|
|
18015
|
-
this._left.set(left);
|
|
18016
|
-
if (anchorRect.bottom + panelRect.height + gap > window.innerHeight) {
|
|
18017
|
-
this._top.set(Math.max(8, anchorRect.top - panelRect.height - gap));
|
|
18018
|
-
}
|
|
18019
|
-
}
|
|
18020
18017
|
onDocumentClick(e) {
|
|
18021
18018
|
if (Date.now() - this._openedAt < 50)
|
|
18022
18019
|
return;
|
|
@@ -18152,7 +18149,7 @@ class MenuComponent {
|
|
|
18152
18149
|
<ng-container [ngTemplateOutlet]="startTpl()" />
|
|
18153
18150
|
</div>
|
|
18154
18151
|
}
|
|
18155
|
-
<ul class="py-1" role="menu" (keydown)="onKeydown($event)">
|
|
18152
|
+
<ul class="flex-1 min-h-0 overflow-auto py-1" role="menu" (keydown)="onKeydown($event)">
|
|
18156
18153
|
@if (hasGroups()) {
|
|
18157
18154
|
@for (group of model(); track $index) {
|
|
18158
18155
|
@if (group.separator) {
|
|
@@ -18268,7 +18265,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
18268
18265
|
<ng-container [ngTemplateOutlet]="startTpl()" />
|
|
18269
18266
|
</div>
|
|
18270
18267
|
}
|
|
18271
|
-
<ul class="py-1" role="menu" (keydown)="onKeydown($event)">
|
|
18268
|
+
<ul class="flex-1 min-h-0 overflow-auto py-1" role="menu" (keydown)="onKeydown($event)">
|
|
18272
18269
|
@if (hasGroups()) {
|
|
18273
18270
|
@for (group of model(); track $index) {
|
|
18274
18271
|
@if (group.separator) {
|
|
@@ -18300,7 +18297,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
18300
18297
|
}
|
|
18301
18298
|
`,
|
|
18302
18299
|
}]
|
|
18303
|
-
}],
|
|
18300
|
+
}], propDecorators: { containerRef: [{ type: i0.ViewChild, args: ['container', { isSignal: true }] }], model: [{ type: i0.Input, args: [{ isSignal: true, alias: "model", required: false }] }], popup: [{ type: i0.Input, args: [{ isSignal: true, alias: "popup", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], onShow: [{ type: i0.Output, args: ["onShow"] }], onHide: [{ type: i0.Output, args: ["onHide"] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
|
|
18304
18301
|
|
|
18305
18302
|
const SUBMENU_ESTIMATED_WIDTH$2 = 192;
|
|
18306
18303
|
class MenubarComponent {
|
|
@@ -18921,12 +18918,17 @@ class TieredMenuComponent {
|
|
|
18921
18918
|
_visible = signal(false, /* @ts-ignore */
|
|
18922
18919
|
...(ngDevMode ? [{ debugName: "_visible" }] : /* istanbul ignore next */ []));
|
|
18923
18920
|
visible = this._visible.asReadonly();
|
|
18924
|
-
|
|
18925
|
-
|
|
18926
|
-
|
|
18927
|
-
|
|
18928
|
-
|
|
18929
|
-
|
|
18921
|
+
_placement = overlayPosition({
|
|
18922
|
+
active: () => this.popup() && this.visible(),
|
|
18923
|
+
anchor: () => this._anchor,
|
|
18924
|
+
panel: () => this.containerRef()?.nativeElement,
|
|
18925
|
+
// Submenus fly out of the container, so it must stay overflow-visible.
|
|
18926
|
+
options: () => ({ clampHeight: false }),
|
|
18927
|
+
});
|
|
18928
|
+
top = computed(() => this._placement()?.top ?? 0, /* @ts-ignore */
|
|
18929
|
+
...(ngDevMode ? [{ debugName: "top" }] : /* istanbul ignore next */ []));
|
|
18930
|
+
left = computed(() => this._placement()?.left ?? 0, /* @ts-ignore */
|
|
18931
|
+
...(ngDevMode ? [{ debugName: "left" }] : /* istanbul ignore next */ []));
|
|
18930
18932
|
_openedAt = 0;
|
|
18931
18933
|
_anchor = null;
|
|
18932
18934
|
_activeItemPath = signal([], /* @ts-ignore */
|
|
@@ -18963,11 +18965,8 @@ class TieredMenuComponent {
|
|
|
18963
18965
|
this._openedAt = Date.now();
|
|
18964
18966
|
this._activeItemPath.set([]);
|
|
18965
18967
|
this._flipByLevel.set({});
|
|
18966
|
-
if (this._anchor)
|
|
18967
|
-
this.position();
|
|
18968
18968
|
this._visible.set(true);
|
|
18969
18969
|
this.onShow.emit();
|
|
18970
|
-
setTimeout(() => this.adjustForViewport(), 0);
|
|
18971
18970
|
}
|
|
18972
18971
|
hide() {
|
|
18973
18972
|
if (!this._visible())
|
|
@@ -18976,27 +18975,6 @@ class TieredMenuComponent {
|
|
|
18976
18975
|
this._activeItemPath.set([]);
|
|
18977
18976
|
this.onHide.emit();
|
|
18978
18977
|
}
|
|
18979
|
-
position() {
|
|
18980
|
-
if (!this._anchor || typeof window === 'undefined')
|
|
18981
|
-
return;
|
|
18982
|
-
const rect = this._anchor.getBoundingClientRect();
|
|
18983
|
-
this._top.set(rect.bottom + 4);
|
|
18984
|
-
this._left.set(rect.left);
|
|
18985
|
-
}
|
|
18986
|
-
adjustForViewport() {
|
|
18987
|
-
const el = this.containerRef()?.nativeElement;
|
|
18988
|
-
if (!el || !this._anchor || typeof window === 'undefined')
|
|
18989
|
-
return;
|
|
18990
|
-
const anchorRect = this._anchor.getBoundingClientRect();
|
|
18991
|
-
const panelRect = el.getBoundingClientRect();
|
|
18992
|
-
const gap = 4;
|
|
18993
|
-
let left = anchorRect.left;
|
|
18994
|
-
left = Math.max(8, Math.min(left, window.innerWidth - panelRect.width - 8));
|
|
18995
|
-
this._left.set(left);
|
|
18996
|
-
if (anchorRect.bottom + panelRect.height + gap > window.innerHeight) {
|
|
18997
|
-
this._top.set(Math.max(8, anchorRect.top - panelRect.height - gap));
|
|
18998
|
-
}
|
|
18999
|
-
}
|
|
19000
18978
|
isItemActive(item, level) {
|
|
19001
18979
|
return this._activeItemPath()[level] === item;
|
|
19002
18980
|
}
|
|
@@ -21960,12 +21938,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
21960
21938
|
|
|
21961
21939
|
class CascadeSelectComponent {
|
|
21962
21940
|
_el = inject(ElementRef);
|
|
21963
|
-
constructor() {
|
|
21964
|
-
repositionOnScroll(() => this.open() && this.appendTo() === 'body', () => {
|
|
21965
|
-
this.position();
|
|
21966
|
-
this.adjustForViewport();
|
|
21967
|
-
});
|
|
21968
|
-
}
|
|
21969
21941
|
options = input([], /* @ts-ignore */
|
|
21970
21942
|
...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
|
|
21971
21943
|
optionLabel = input('label', /* @ts-ignore */
|
|
@@ -21992,7 +21964,7 @@ class CascadeSelectComponent {
|
|
|
21992
21964
|
...(ngDevMode ? [{ debugName: "styleClass" }] : /* istanbul ignore next */ []));
|
|
21993
21965
|
style = input(null, /* @ts-ignore */
|
|
21994
21966
|
...(ngDevMode ? [{ debugName: "style" }] : /* istanbul ignore next */ []));
|
|
21995
|
-
appendTo = input('
|
|
21967
|
+
appendTo = input('body', /* @ts-ignore */
|
|
21996
21968
|
...(ngDevMode ? [{ debugName: "appendTo" }] : /* istanbul ignore next */ []));
|
|
21997
21969
|
hostClass = computed(() => `block w-full ${this.styleClass()}`, /* @ts-ignore */
|
|
21998
21970
|
...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
@@ -22000,42 +21972,18 @@ class CascadeSelectComponent {
|
|
|
22000
21972
|
...(ngDevMode ? [{ debugName: "triggerRef" }] : /* istanbul ignore next */ []));
|
|
22001
21973
|
panelRef = viewChild('panel', /* @ts-ignore */
|
|
22002
21974
|
...(ngDevMode ? [{ debugName: "panelRef" }] : /* istanbul ignore next */ []));
|
|
22003
|
-
|
|
22004
|
-
|
|
22005
|
-
|
|
22006
|
-
|
|
21975
|
+
_placement = overlayPosition({
|
|
21976
|
+
active: () => this.open() && this.appendTo() === 'body',
|
|
21977
|
+
anchor: () => this.triggerRef()?.nativeElement,
|
|
21978
|
+
panel: () => this.panelRef()?.nativeElement,
|
|
21979
|
+
});
|
|
22007
21980
|
panelClass = computed(() => {
|
|
22008
21981
|
const position = this.appendTo() === 'body' ? 'fixed' : 'absolute mt-1';
|
|
22009
21982
|
return `${position} z-50 flex bg-(--f-overlay-popover-background) border border-(--f-content-border-color) f-overlay overflow-hidden`;
|
|
22010
21983
|
}, /* @ts-ignore */
|
|
22011
21984
|
...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
|
|
22012
|
-
panelStyle = computed(() => {
|
|
22013
|
-
if (this.appendTo() !== 'body')
|
|
22014
|
-
return {};
|
|
22015
|
-
return { top: `${this._panelTop()}px`, left: `${this._panelLeft()}px` };
|
|
22016
|
-
}, /* @ts-ignore */
|
|
21985
|
+
panelStyle = computed(() => this.appendTo() === 'body' ? overlayPlacementStyle(this._placement()) : {}, /* @ts-ignore */
|
|
22017
21986
|
...(ngDevMode ? [{ debugName: "panelStyle" }] : /* istanbul ignore next */ []));
|
|
22018
|
-
position() {
|
|
22019
|
-
const anchorEl = this.triggerRef()?.nativeElement;
|
|
22020
|
-
if (!anchorEl || typeof window === 'undefined')
|
|
22021
|
-
return;
|
|
22022
|
-
const rect = anchorEl.getBoundingClientRect();
|
|
22023
|
-
this._panelTop.set(rect.bottom + 4);
|
|
22024
|
-
this._panelLeft.set(Math.max(8, rect.left));
|
|
22025
|
-
}
|
|
22026
|
-
adjustForViewport() {
|
|
22027
|
-
const panelEl = this.panelRef()?.nativeElement;
|
|
22028
|
-
const anchorEl = this.triggerRef()?.nativeElement;
|
|
22029
|
-
if (!panelEl || !anchorEl || typeof window === 'undefined')
|
|
22030
|
-
return;
|
|
22031
|
-
const anchorRect = anchorEl.getBoundingClientRect();
|
|
22032
|
-
const panelRect = panelEl.getBoundingClientRect();
|
|
22033
|
-
const gap = 4;
|
|
22034
|
-
this._panelLeft.set(Math.max(8, Math.min(anchorRect.left, window.innerWidth - panelRect.width - 8)));
|
|
22035
|
-
if (anchorRect.bottom + panelRect.height + gap > window.innerHeight) {
|
|
22036
|
-
this._panelTop.set(Math.max(8, anchorRect.top - panelRect.height - gap));
|
|
22037
|
-
}
|
|
22038
|
-
}
|
|
22039
21987
|
_open = signal(false, /* @ts-ignore */
|
|
22040
21988
|
...(ngDevMode ? [{ debugName: "_open" }] : /* istanbul ignore next */ []));
|
|
22041
21989
|
open = this._open.asReadonly();
|
|
@@ -22143,10 +22091,6 @@ class CascadeSelectComponent {
|
|
|
22143
22091
|
this._activePath.set([]);
|
|
22144
22092
|
this._focusedPath.set([]);
|
|
22145
22093
|
}
|
|
22146
|
-
if (this.appendTo() === 'body') {
|
|
22147
|
-
this.position();
|
|
22148
|
-
setTimeout(() => this.adjustForViewport(), 0);
|
|
22149
|
-
}
|
|
22150
22094
|
}
|
|
22151
22095
|
closePanel() {
|
|
22152
22096
|
this._open.set(false);
|
|
@@ -22619,7 +22563,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
22619
22563
|
</div>
|
|
22620
22564
|
`,
|
|
22621
22565
|
}]
|
|
22622
|
-
}],
|
|
22566
|
+
}], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionLabel", required: false }] }], optionValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionValue", required: false }] }], optionChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionChildren", required: false }] }], optionGroupChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionGroupChildren", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], dropdownIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownIcon", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], triggerRef: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], panelRef: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], valueRef: [{ type: i0.ContentChild, args: ['value', { isSignal: true }] }], optionRef: [{ type: i0.ContentChild, args: ['option', { isSignal: true }] }], groupRef: [{ type: i0.ContentChild, args: ['group', { isSignal: true }] }], emptyRef: [{ type: i0.ContentChild, args: ['empty', { isSignal: true }] }], fTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FTemplateDirective), { isSignal: true }] }] } });
|
|
22623
22567
|
|
|
22624
22568
|
const PRESETS = {
|
|
22625
22569
|
pint: /\d/,
|
|
@@ -22696,12 +22640,17 @@ class ConfirmPopupComponent {
|
|
|
22696
22640
|
...(ngDevMode ? [{ debugName: "styleClass" }] : /* istanbul ignore next */ []));
|
|
22697
22641
|
style = input(null, /* @ts-ignore */
|
|
22698
22642
|
...(ngDevMode ? [{ debugName: "style" }] : /* istanbul ignore next */ []));
|
|
22699
|
-
|
|
22700
|
-
|
|
22701
|
-
|
|
22702
|
-
|
|
22703
|
-
|
|
22704
|
-
|
|
22643
|
+
_placement = overlayPosition({
|
|
22644
|
+
active: () => !!this.activeConfirmation()?.target,
|
|
22645
|
+
anchor: () => this.activeConfirmation()?.target,
|
|
22646
|
+
panel: () => this.panelRef()?.nativeElement,
|
|
22647
|
+
// A confirm popup is short; clamping it could hide the action buttons.
|
|
22648
|
+
options: () => ({ gap: 8, clampHeight: false }),
|
|
22649
|
+
});
|
|
22650
|
+
top = computed(() => this._placement()?.top ?? 0, /* @ts-ignore */
|
|
22651
|
+
...(ngDevMode ? [{ debugName: "top" }] : /* istanbul ignore next */ []));
|
|
22652
|
+
left = computed(() => this._placement()?.left ?? 0, /* @ts-ignore */
|
|
22653
|
+
...(ngDevMode ? [{ debugName: "left" }] : /* istanbul ignore next */ []));
|
|
22705
22654
|
_zIndex = signal(null, /* @ts-ignore */
|
|
22706
22655
|
...(ngDevMode ? [{ debugName: "_zIndex" }] : /* istanbul ignore next */ []));
|
|
22707
22656
|
zIndex = this._zIndex.asReadonly();
|
|
@@ -22719,10 +22668,6 @@ class ConfirmPopupComponent {
|
|
|
22719
22668
|
const c = this.activeConfirmation();
|
|
22720
22669
|
if (c?.target) {
|
|
22721
22670
|
this._zIndex.set(this._overlayStack.open());
|
|
22722
|
-
this.position(c.target);
|
|
22723
|
-
setTimeout(() => {
|
|
22724
|
-
this.adjustForViewport(c.target);
|
|
22725
|
-
}, 0);
|
|
22726
22671
|
}
|
|
22727
22672
|
else {
|
|
22728
22673
|
this._zIndex.set(null);
|
|
@@ -22752,28 +22697,6 @@ class ConfirmPopupComponent {
|
|
|
22752
22697
|
resolvedRejectIcon(c) {
|
|
22753
22698
|
return c.rejectIcon || this.rejectIcon();
|
|
22754
22699
|
}
|
|
22755
|
-
position(target) {
|
|
22756
|
-
const rect = target.getBoundingClientRect?.();
|
|
22757
|
-
if (!rect)
|
|
22758
|
-
return;
|
|
22759
|
-
const gap = 8;
|
|
22760
|
-
let left = rect.left;
|
|
22761
|
-
if (typeof window !== 'undefined')
|
|
22762
|
-
left = Math.min(left, window.innerWidth - 288 - 8);
|
|
22763
|
-
this._top.set(rect.bottom + gap);
|
|
22764
|
-
this._left.set(Math.max(8, left));
|
|
22765
|
-
}
|
|
22766
|
-
adjustForViewport(target) {
|
|
22767
|
-
const panelEl = this.panelRef()?.nativeElement;
|
|
22768
|
-
const rect = target.getBoundingClientRect?.();
|
|
22769
|
-
if (!panelEl || !rect || typeof window === 'undefined')
|
|
22770
|
-
return;
|
|
22771
|
-
const gap = 8;
|
|
22772
|
-
const panelRect = panelEl.getBoundingClientRect();
|
|
22773
|
-
if (rect.bottom + panelRect.height + gap > window.innerHeight) {
|
|
22774
|
-
this._top.set(Math.max(8, rect.top - panelRect.height - gap));
|
|
22775
|
-
}
|
|
22776
|
-
}
|
|
22777
22700
|
onEscape() {
|
|
22778
22701
|
const c = this.activeConfirmation();
|
|
22779
22702
|
const closeOnEscape = c?.closeOnEscape ?? this.closeOnEscape();
|
|
@@ -27254,5 +27177,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
|
|
|
27254
27177
|
* Generated bundle index. Do not edit.
|
|
27255
27178
|
*/
|
|
27256
27179
|
|
|
27257
|
-
export { AURA_PRESET, AccordionComponent, AccordionContentComponent, AccordionContext, AccordionHeaderComponent, AccordionPanelComponent, AnimateOnScrollDirective, AutoCompleteComponent, AutoFocusDirective, AvatarComponent, AvatarGroupComponent, BadgeComponent, BlockUiComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CardComponent, CarouselComponent, CascadeSelectComponent, ChartComponent, CheckboxComponent, ChipComponent, ColorPickerComponent, ConfirmDialog, ConfirmPopupComponent, ConfirmationService, ContextMenuComponent, DYNAMIC_DIALOG_DATA, DYNAMIC_DIALOG_REF, DataViewComponent, DatePickerComponent, DialogComponent, DividerComponent, DockComponent, DrawerComponent, DynamicDialogComponent, DynamicDialogRef, DynamicDialogService, EditorComponent, FButtonDirective, FTemplateDirective, FieldsetComponent, FileUploadComponent, FloatLabelComponent, FluidComponent, GalleriaComponent, IconFieldComponent, IftaLabelComponent, ImageCompareComponent, ImageComponent, InplaceComponent, InputGroupAddonComponent, InputGroupComponent, InputIconComponent, InputMaskDirective, InputNumberComponent, InputOtpComponent, InputPasswordDirective, InputTextDirective, KeyFilterDirective, KnobComponent, LARA_PRESET, ListboxComponent, MegaMenuComponent, MenuComponent, MenubarComponent, MessageComponent, MessageService, MeterGroupComponent, MultiSelectComponent, NOIR_PRIMARY, NORA_PRESET, NgUIConfig, OrderListComponent, OrganizationChartComponent, OverlayBadgeComponent, PRESETS$1 as PRESETS, PRESET_NAMES, PRIMARY_PALETTES, PaginatorComponent, PanelComponent, PanelMenuComponent, PasswordComponent, PickListComponent, PopoverComponent, ProgressSpinnerComponent, ProgressbarComponent, RadioButtonComponent, RatingComponent, RippleDirective, SURFACE_PALETTES, ScrollPanelComponent, ScrollTopComponent, ScrollerComponent, SelectButtonComponent, SelectComponent, SkeletonComponent, SliderComponent, SortIconComponent, SortableColumnDirective, SpeedDialComponent, SplitButtonComponent, SplitterComponent, SplitterPanelComponent, StepsComponent, StyleClassDirective, TabComponent, TabListComponent, TabPanelComponent, TabPanelsComponent, TableComponent, TabsComponent, TabsContext, TagComponent, TerminalComponent, TextareaDirective, TieredMenuComponent, TimelineComponent, ToastComponent, ToggleButtonComponent, ToggleSwitchComponent, ToolbarComponent, TooltipDirective, TreeComponent, TreeSelectComponent, TreeTableComponent, TreeTableService, TreeTableTogglerComponent, UiIconComponent, applyDarkSemantics, applyLightSemantics, applyPreset, applyPrimaryPalette, applySurfacePalette, applyTheme, buildBootstrapPreset, provideNgUI };
|
|
27180
|
+
export { AURA_PRESET, AccordionComponent, AccordionContentComponent, AccordionContext, AccordionHeaderComponent, AccordionPanelComponent, AnimateOnScrollDirective, AutoCompleteComponent, AutoFocusDirective, AvatarComponent, AvatarGroupComponent, BadgeComponent, BlockUiComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CardComponent, CarouselComponent, CascadeSelectComponent, ChartComponent, CheckboxComponent, ChipComponent, ColorPickerComponent, ConfirmDialog, ConfirmPopupComponent, ConfirmationService, ContextMenuComponent, DYNAMIC_DIALOG_DATA, DYNAMIC_DIALOG_REF, DataViewComponent, DatePickerComponent, DialogComponent, DividerComponent, DockComponent, DrawerComponent, DynamicDialogComponent, DynamicDialogRef, DynamicDialogService, EditorComponent, FButtonDirective, FTemplateDirective, FieldsetComponent, FileUploadComponent, FloatLabelComponent, FluidComponent, GalleriaComponent, IconFieldComponent, IftaLabelComponent, ImageCompareComponent, ImageComponent, InplaceComponent, InputGroupAddonComponent, InputGroupComponent, InputIconComponent, InputMaskDirective, InputNumberComponent, InputOtpComponent, InputPasswordDirective, InputTextDirective, KeyFilterDirective, KnobComponent, LARA_PRESET, ListboxComponent, MegaMenuComponent, MenuComponent, MenubarComponent, MessageComponent, MessageService, MeterGroupComponent, MultiSelectComponent, NOIR_PRIMARY, NORA_PRESET, NgUIConfig, OrderListComponent, OrganizationChartComponent, OverlayBadgeComponent, OverlayStackService, PRESETS$1 as PRESETS, PRESET_NAMES, PRIMARY_PALETTES, PaginatorComponent, PanelComponent, PanelMenuComponent, PasswordComponent, PickListComponent, PopoverComponent, ProgressSpinnerComponent, ProgressbarComponent, RadioButtonComponent, RatingComponent, RippleDirective, SURFACE_PALETTES, ScrollPanelComponent, ScrollTopComponent, ScrollerComponent, SelectButtonComponent, SelectComponent, SkeletonComponent, SliderComponent, SortIconComponent, SortableColumnDirective, SpeedDialComponent, SplitButtonComponent, SplitterComponent, SplitterPanelComponent, StepsComponent, StyleClassDirective, TabComponent, TabListComponent, TabPanelComponent, TabPanelsComponent, TableComponent, TabsComponent, TabsContext, TagComponent, TerminalComponent, TextareaDirective, TieredMenuComponent, TimelineComponent, ToastComponent, ToggleButtonComponent, ToggleSwitchComponent, ToolbarComponent, TooltipDirective, TreeComponent, TreeSelectComponent, TreeTableComponent, TreeTableService, TreeTableTogglerComponent, UiIconComponent, applyDarkSemantics, applyLightSemantics, applyPreset, applyPrimaryPalette, applySurfacePalette, applyTheme, attachOverlayPosition, buildBootstrapPreset, computeOverlayPlacement, overlayPlacementStyle, overlayPosition, provideNgUI };
|
|
27258
27181
|
//# sourceMappingURL=flusys-ng-ui.mjs.map
|