@radix-ng/primitives 1.0.5 → 1.0.7
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/aspect-ratio/README.md +1 -1
- package/fesm2022/radix-ng-primitives-accordion.mjs +40 -27
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs +34 -34
- package/fesm2022/radix-ng-primitives-arrow.mjs +3 -3
- package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +11 -35
- package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-autocomplete.mjs +175 -125
- package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-avatar.mjs +92 -35
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-button.mjs +11 -7
- package/fesm2022/radix-ng-primitives-button.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-calendar.mjs +140 -90
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +63 -46
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs +37 -25
- package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-combobox.mjs +278 -177
- package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-composite.mjs +50 -33
- package/fesm2022/radix-ng-primitives-composite.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-config.mjs +7 -5
- package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs +48 -22
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +44 -28
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs +73 -45
- package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +70 -40
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +93 -67
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-direction-provider.mjs +5 -4
- package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +20 -16
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +107 -81
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-editable.mjs +53 -39
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +76 -50
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-fieldset.mjs +8 -7
- package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +77 -40
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-focus-guards.mjs +3 -3
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +7 -5
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-form.mjs +26 -17
- package/fesm2022/radix-ng-primitives-form.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-input.mjs +41 -22
- package/fesm2022/radix-ng-primitives-input.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-label.mjs +11 -8
- package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +274 -154
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +35 -17
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs +41 -30
- package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +220 -183
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +93 -61
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-pagination.mjs +48 -38
- package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +150 -107
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +79 -47
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-portal.mjs +20 -13
- package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-presence.mjs +3 -3
- package/fesm2022/radix-ng-primitives-preview-card.mjs +119 -74
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-progress.mjs +73 -46
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +58 -40
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +57 -41
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +595 -102
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-separator.mjs +11 -15
- package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +101 -64
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs +53 -39
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +25 -20
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +76 -51
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +72 -41
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs +75 -56
- package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +39 -23
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +36 -36
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +52 -31
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +118 -63
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs +31 -20
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
- package/package.json +2 -2
- package/types/radix-ng-primitives-accordion.d.ts +1 -0
- package/types/radix-ng-primitives-aspect-ratio.d.ts +10 -23
- package/types/radix-ng-primitives-autocomplete.d.ts +3 -1
- package/types/radix-ng-primitives-avatar.d.ts +51 -25
- package/types/radix-ng-primitives-checkbox.d.ts +26 -98
- package/types/radix-ng-primitives-combobox.d.ts +28 -9
- package/types/radix-ng-primitives-context-menu.d.ts +2 -0
- package/types/radix-ng-primitives-dialog.d.ts +6 -3
- package/types/radix-ng-primitives-field.d.ts +33 -207
- package/types/radix-ng-primitives-floating-focus-manager.d.ts +11 -0
- package/types/radix-ng-primitives-form.d.ts +24 -33
- package/types/radix-ng-primitives-label.d.ts +3 -2
- package/types/radix-ng-primitives-menu.d.ts +47 -15
- package/types/radix-ng-primitives-menubar.d.ts +6 -1
- package/types/radix-ng-primitives-navigation-menu.d.ts +8 -6
- package/types/radix-ng-primitives-number-field.d.ts +1 -1
- package/types/radix-ng-primitives-popover.d.ts +12 -4
- package/types/radix-ng-primitives-preview-card.d.ts +18 -5
- package/types/radix-ng-primitives-progress.d.ts +59 -121
- package/types/radix-ng-primitives-radio.d.ts +0 -1
- package/types/radix-ng-primitives-select.d.ts +186 -391
- package/types/radix-ng-primitives-separator.d.ts +0 -7
- package/types/radix-ng-primitives-toggle-group.d.ts +7 -3
- package/types/radix-ng-primitives-toggle.d.ts +8 -8
- package/types/radix-ng-primitives-toolbar.d.ts +2 -0
- package/types/radix-ng-primitives-tooltip.d.ts +17 -3
|
@@ -3,7 +3,7 @@ import { inject, ElementRef, contentChildren, signal, input, booleanAttribute, c
|
|
|
3
3
|
import * as i1 from '@radix-ng/primitives/composite';
|
|
4
4
|
import { RdxCompositeRoot, RdxCompositeList } from '@radix-ng/primitives/composite';
|
|
5
5
|
import { createContext, provideFloatingTree } from '@radix-ng/primitives/core';
|
|
6
|
-
import { RdxMenuRoot } from '@radix-ng/primitives/menu';
|
|
6
|
+
import { RdxMenuRoot, RDX_MENU_AMBIENT_MODAL } from '@radix-ng/primitives/menu';
|
|
7
7
|
|
|
8
8
|
const [injectRdxMenubarContext, provideRdxMenubarContext] = createContext('RdxMenubarContext', 'components/menubar');
|
|
9
9
|
const contextFactory = () => buildContext(inject(RdxMenubarRoot));
|
|
@@ -12,6 +12,7 @@ function buildContext(root) {
|
|
|
12
12
|
activeId: root.activeId.asReadonly(),
|
|
13
13
|
isAnyOpen: root.isAnyOpen,
|
|
14
14
|
disabled: root.disabled,
|
|
15
|
+
modal: root.modal,
|
|
15
16
|
orientation: root.orientation,
|
|
16
17
|
registerItem: (id, el, open, close, disabled) => root.registerItem(id, el, open, close, disabled),
|
|
17
18
|
activateItem: (id) => root.activateItem(id),
|
|
@@ -33,15 +34,24 @@ class RdxMenubarRoot {
|
|
|
33
34
|
this.menuRoots = contentChildren(RdxMenuRoot, { ...(ngDevMode ? { debugName: "menuRoots" } : /* istanbul ignore next */ {}), descendants: true });
|
|
34
35
|
this.ids = new WeakMap();
|
|
35
36
|
this.items = [];
|
|
36
|
-
this.itemsVersion = signal(0,
|
|
37
|
+
this.itemsVersion = signal(0, /* @ts-ignore */
|
|
38
|
+
...(ngDevMode ? [{ debugName: "itemsVersion" }] : /* istanbul ignore next */ []));
|
|
37
39
|
/** Whether every menubar trigger is disabled. */
|
|
38
40
|
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
41
|
+
/** Whether the child menus block outside interaction and lock scroll while open (Base UI default `true`). */
|
|
42
|
+
this.modal = input(true, { ...(ngDevMode ? { debugName: "modal" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
39
43
|
/** Whether arrow-key navigation wraps at the first/last trigger. */
|
|
40
44
|
this.loopFocus = input(true, { ...(ngDevMode ? { debugName: "loopFocus" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
41
45
|
/** The menubar orientation. */
|
|
42
|
-
this.orientation = input('horizontal',
|
|
43
|
-
|
|
44
|
-
this.
|
|
46
|
+
this.orientation = input('horizontal', /* @ts-ignore */
|
|
47
|
+
...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
48
|
+
this.activeId = signal(null, /* @ts-ignore */
|
|
49
|
+
...(ngDevMode ? [{ debugName: "activeId" }] : /* istanbul ignore next */ []));
|
|
50
|
+
this.isAnyOpen = computed(() => this.activeId() !== null, /* @ts-ignore */
|
|
51
|
+
...(ngDevMode ? [{ debugName: "isAnyOpen" }] : /* istanbul ignore next */ []));
|
|
52
|
+
/** Whether a **nested submenu** is currently open (Base UI `data-has-submenu-open` — not top-level menus). */
|
|
53
|
+
this.hasSubmenuOpen = computed(() => this.menuRoots().some((root) => root.isSubmenu() && root.open()), /* @ts-ignore */
|
|
54
|
+
...(ngDevMode ? [{ debugName: "hasSubmenuOpen" }] : /* istanbul ignore next */ []));
|
|
45
55
|
effect(() => {
|
|
46
56
|
this.compositeRoot.setOrientation(this.orientation());
|
|
47
57
|
this.compositeRoot.setLoopFocus(this.loopFocus());
|
|
@@ -251,6 +261,8 @@ class RdxMenubarRoot {
|
|
|
251
261
|
trigger.focus({ preventScroll: true });
|
|
252
262
|
return true;
|
|
253
263
|
}
|
|
264
|
+
default:
|
|
265
|
+
return false;
|
|
254
266
|
}
|
|
255
267
|
}
|
|
256
268
|
handleTriggerArrow(event, id, offset, openOnMove) {
|
|
@@ -334,17 +346,20 @@ class RdxMenubarRoot {
|
|
|
334
346
|
item.el.tabIndex = index === highlightedIndex && !item.disabled() ? 0 : -1;
|
|
335
347
|
});
|
|
336
348
|
}
|
|
337
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
338
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "
|
|
349
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenubarRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
350
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "22.0.2", type: RdxMenubarRoot, isStandalone: true, selector: "[rdxMenubarRoot]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, modal: { classPropertyName: "modal", publicName: "modal", isSignal: true, isRequired: false, transformFunction: null }, loopFocus: { classPropertyName: "loopFocus", publicName: "loopFocus", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "menubar" }, listeners: { "focusin": "handleFocusIn($event)" }, properties: { "attr.aria-orientation": "orientation()", "attr.data-orientation": "orientation()", "attr.data-modal": "modal() ? \"\" : undefined", "attr.data-has-submenu-open": "hasSubmenuOpen() ? \"\" : undefined" } }, providers: [
|
|
339
351
|
provideRdxMenubarContext(contextFactory),
|
|
340
352
|
// One shared floating tree for all child menus (Base UI `Menubar` wraps them in a single
|
|
341
353
|
// `FloatingTree`). Each `RdxMenuRoot`'s own `provideFloatingTree()` inherits this via skipSelf, so
|
|
342
354
|
// sibling menubar menus live in the same tree — the dismissal / focus engine can see their
|
|
343
355
|
// relationships instead of each menu owning an isolated tree.
|
|
344
|
-
provideFloatingTree()
|
|
356
|
+
provideFloatingTree(),
|
|
357
|
+
// Thread the menubar's `modal` to every child menu (Base UI `Menubar` passes `modal` into each
|
|
358
|
+
// `Menu.Root`). Child `RdxMenuRoot`s inherit it via the ambient token instead of each defaulting.
|
|
359
|
+
{ provide: RDX_MENU_AMBIENT_MODAL, useFactory: () => inject(RdxMenubarRoot).modal }
|
|
345
360
|
], queries: [{ propertyName: "menuRoots", predicate: RdxMenuRoot, descendants: true, isSignal: true }], exportAs: ["rdxMenubarRoot"], hostDirectives: [{ directive: i1.RdxCompositeRoot }], ngImport: i0 }); }
|
|
346
361
|
}
|
|
347
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
362
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenubarRoot, decorators: [{
|
|
348
363
|
type: Directive,
|
|
349
364
|
args: [{
|
|
350
365
|
selector: '[rdxMenubarRoot]',
|
|
@@ -355,19 +370,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
355
370
|
// `FloatingTree`). Each `RdxMenuRoot`'s own `provideFloatingTree()` inherits this via skipSelf, so
|
|
356
371
|
// sibling menubar menus live in the same tree — the dismissal / focus engine can see their
|
|
357
372
|
// relationships instead of each menu owning an isolated tree.
|
|
358
|
-
provideFloatingTree()
|
|
373
|
+
provideFloatingTree(),
|
|
374
|
+
// Thread the menubar's `modal` to every child menu (Base UI `Menubar` passes `modal` into each
|
|
375
|
+
// `Menu.Root`). Child `RdxMenuRoot`s inherit it via the ambient token instead of each defaulting.
|
|
376
|
+
{ provide: RDX_MENU_AMBIENT_MODAL, useFactory: () => inject(RdxMenubarRoot).modal }
|
|
359
377
|
],
|
|
360
378
|
host: {
|
|
361
379
|
role: 'menubar',
|
|
362
380
|
'[attr.aria-orientation]': 'orientation()',
|
|
363
381
|
'[attr.data-orientation]': 'orientation()',
|
|
364
|
-
'[attr.data-
|
|
365
|
-
'[attr.data-has-submenu-open]': '
|
|
382
|
+
'[attr.data-modal]': 'modal() ? "" : undefined',
|
|
383
|
+
'[attr.data-has-submenu-open]': 'hasSubmenuOpen() ? "" : undefined',
|
|
366
384
|
'(focusin)': 'handleFocusIn($event)'
|
|
367
385
|
},
|
|
368
386
|
hostDirectives: [RdxCompositeRoot]
|
|
369
387
|
}]
|
|
370
|
-
}], ctorParameters: () => [], propDecorators: { menuRoots: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => RdxMenuRoot), { ...{ descendants: true }, isSignal: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loopFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "loopFocus", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }] } });
|
|
388
|
+
}], ctorParameters: () => [], propDecorators: { menuRoots: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => RdxMenuRoot), { ...{ descendants: true }, isSignal: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], modal: [{ type: i0.Input, args: [{ isSignal: true, alias: "modal", required: false }] }], loopFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "loopFocus", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }] } });
|
|
371
389
|
|
|
372
390
|
/**
|
|
373
391
|
* Menubar-specific parts. Triggers use the standard `rdxMenuTrigger` from
|
|
@@ -377,11 +395,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
377
395
|
*/
|
|
378
396
|
const menubarImports = [RdxMenubarRoot];
|
|
379
397
|
class RdxMenubarModule {
|
|
380
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
381
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
382
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
398
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenubarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
399
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.2", ngImport: i0, type: RdxMenubarModule, imports: [RdxMenubarRoot], exports: [RdxMenubarRoot] }); }
|
|
400
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenubarModule }); }
|
|
383
401
|
}
|
|
384
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
402
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenubarModule, decorators: [{
|
|
385
403
|
type: NgModule,
|
|
386
404
|
args: [{
|
|
387
405
|
imports: [...menubarImports],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-menubar.mjs","sources":["../../../packages/primitives/menubar/src/menubar-root.ts","../../../packages/primitives/menubar/index.ts","../../../packages/primitives/menubar/radix-ng-primitives-menubar.ts"],"sourcesContent":["import {\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n signal,\n Signal\n} from '@angular/core';\nimport { RdxCompositeList, RdxCompositeRoot } from '@radix-ng/primitives/composite';\nimport { BooleanInput, createContext, provideFloatingTree } from '@radix-ng/primitives/core';\nimport { RdxMenuRoot, RdxMenuTriggerInteraction } from '@radix-ng/primitives/menu';\n\nexport type RdxMenubarOrientation = 'horizontal' | 'vertical';\n\ninterface RdxMenubarItem {\n id: string;\n el: HTMLElement;\n root?: RdxMenuRoot;\n open: () => void;\n close: () => void;\n disabled: () => boolean;\n}\n\nexport interface RdxMenubarContext {\n activeId: Signal<string | null>;\n isAnyOpen: Signal<boolean>;\n disabled: Signal<boolean>;\n orientation: Signal<RdxMenubarOrientation>;\n registerItem: (\n id: string,\n el: HTMLElement,\n open: () => void,\n close: () => void,\n disabled: () => boolean\n ) => () => void;\n activateItem: (id: string) => void;\n deactivateAll: () => void;\n focusAdjacent: (currentId: string, offset: 1 | -1, openOnMove: boolean) => void;\n focusBoundary: (boundary: 'first' | 'last', openOnMove: boolean) => void;\n}\n\nexport const [injectRdxMenubarContext, provideRdxMenubarContext] = createContext<RdxMenubarContext>(\n 'RdxMenubarContext',\n 'components/menubar'\n);\n\nconst contextFactory = () => buildContext(inject(RdxMenubarRoot));\n\nfunction buildContext(root: RdxMenubarRoot): RdxMenubarContext {\n return {\n activeId: root.activeId.asReadonly(),\n isAnyOpen: root.isAnyOpen,\n disabled: root.disabled,\n orientation: root.orientation,\n registerItem: (id, el, open, close, disabled) => root.registerItem(id, el, open, close, disabled),\n activateItem: (id) => root.activateItem(id),\n deactivateAll: () => root.deactivateAll(),\n focusAdjacent: (id, offset, open) => root.focusAdjacent(id, offset, open),\n focusBoundary: (boundary, open) => root.focusBoundary(boundary, open)\n };\n}\n\nlet nextMenubarItemId = 0;\n\n/**\n * Container for a horizontal application menu bar.\n * Coordinates open/close state across multiple menus and provides arrow-key navigation.\n */\n@Directive({\n selector: '[rdxMenubarRoot]',\n exportAs: 'rdxMenubarRoot',\n providers: [\n provideRdxMenubarContext(contextFactory),\n // One shared floating tree for all child menus (Base UI `Menubar` wraps them in a single\n // `FloatingTree`). Each `RdxMenuRoot`'s own `provideFloatingTree()` inherits this via skipSelf, so\n // sibling menubar menus live in the same tree — the dismissal / focus engine can see their\n // relationships instead of each menu owning an isolated tree.\n provideFloatingTree()\n ],\n host: {\n role: 'menubar',\n '[attr.aria-orientation]': 'orientation()',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-has-submenu-open]': 'isAnyOpen() ? \"\" : undefined',\n '(focusin)': 'handleFocusIn($event)'\n },\n hostDirectives: [RdxCompositeRoot]\n})\nexport class RdxMenubarRoot {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly compositeRoot = inject(RdxCompositeRoot, { self: true });\n private readonly compositeList = inject(RdxCompositeList, { self: true });\n private readonly menuRoots = contentChildren(RdxMenuRoot, { descendants: true });\n private readonly ids = new WeakMap<RdxMenuRoot, string>();\n private items: RdxMenubarItem[] = [];\n private readonly itemsVersion = signal(0);\n\n /** Whether every menubar trigger is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether arrow-key navigation wraps at the first/last trigger. */\n readonly loopFocus = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** The menubar orientation. */\n readonly orientation = input<RdxMenubarOrientation>('horizontal');\n\n readonly activeId = signal<string | null>(null);\n readonly isAnyOpen = computed(() => this.activeId() !== null);\n\n constructor() {\n effect(() => {\n this.compositeRoot.setOrientation(this.orientation());\n this.compositeRoot.setLoopFocus(this.loopFocus());\n this.compositeRoot.setEnableHomeAndEndKeys(true);\n });\n\n effect(() => {\n this.itemsVersion();\n this.syncDisabledIndices();\n this.syncTabIndices();\n });\n\n effect(() => {\n this.compositeRoot.highlightedIndex();\n this.itemsVersion();\n this.syncTabIndices();\n });\n\n effect((onCleanup) => {\n const roots = this.menuRoots();\n const registered: Array<() => void> = [];\n\n roots.forEach((root) => {\n const trigger = root.trigger();\n\n if (!trigger || trigger.closest('[rdxMenuPopup]')) {\n return;\n }\n\n registered.push(this.registerMenuRoot(root, trigger));\n });\n\n onCleanup(() => {\n registered.forEach((cleanup) => cleanup());\n });\n });\n\n effect(() => {\n const activeId = this.activeId();\n\n if (!activeId) {\n return;\n }\n\n this.menuRoots().forEach((root) => {\n const trigger = root.trigger();\n\n if (!trigger || trigger.closest('[rdxMenuPopup]')) {\n return;\n }\n\n if (this.idFor(root) === activeId && !root.open()) {\n this.deactivateAll();\n }\n });\n });\n }\n\n registerItem(\n id: string,\n el: HTMLElement,\n open: () => void,\n close: () => void,\n disabled: () => boolean\n ): () => void {\n this.items.push({ id, el, open, close, disabled });\n this.sortItems();\n return () => {\n this.items = this.items.filter((item) => item.id !== id);\n if (this.activeId() === id) this.activeId.set(null);\n this.markItemsChanged();\n };\n }\n\n activateItem(id: string): void {\n if (this.disabled()) {\n return;\n }\n\n // Close every other open menu\n this.items.forEach((item) => {\n if (item.id !== id) item.close();\n });\n this.activeId.set(id);\n }\n\n deactivateAll(): void {\n this.activeId.set(null);\n }\n\n focusBoundary(boundary: 'first' | 'last', openOnMove: boolean): void {\n const enabled = this.enabledItems();\n this.focusItem(boundary === 'first' ? enabled[0] : enabled[enabled.length - 1], openOnMove);\n }\n\n generateId(): string {\n return `rdx-menubar-item-${nextMenubarItemId++}`;\n }\n\n private idFor(root: RdxMenuRoot): string {\n let id = this.ids.get(root);\n\n if (!id) {\n id = this.generateId();\n this.ids.set(root, id);\n }\n\n return id;\n }\n\n private registerMenuRoot(root: RdxMenuRoot, trigger: HTMLElement): () => void {\n const id = this.idFor(root);\n const unregisterPopupArrowNavigation = root.registerPopupArrowNavigationHandler((offset) => {\n if (this.disabled()) {\n return false;\n }\n\n this.focusAdjacent(id, offset, true);\n return true;\n });\n const unregisterTriggerInteraction = root.registerTriggerInteractionHandler((interaction) =>\n this.handleTriggerInteraction(id, root, trigger, interaction)\n );\n const unregisterCompositeItem = this.compositeList.registerItem({\n element: trigger,\n metadata: computed(() => ({\n disabled:\n this.disabled() ||\n root.disabled() ||\n trigger.hasAttribute('disabled') ||\n trigger.getAttribute('aria-disabled') === 'true'\n }))\n });\n const unregisterItem = this.registerResolvedItem(id, trigger, root);\n\n return () => {\n unregisterItem();\n unregisterCompositeItem();\n unregisterTriggerInteraction();\n unregisterPopupArrowNavigation();\n };\n }\n\n private registerResolvedItem(id: string, el: HTMLElement, root: RdxMenuRoot): () => void {\n this.items.push({\n id,\n el,\n root,\n open: () => root.show(false),\n close: () => root.close(),\n disabled: () =>\n this.disabled() ||\n root.disabled() ||\n el.hasAttribute('disabled') ||\n el.getAttribute('aria-disabled') === 'true'\n });\n this.sortItems();\n\n return () => {\n this.items = this.items.filter((item) => item.id !== id);\n if (this.activeId() === id) this.activeId.set(null);\n this.markItemsChanged();\n };\n }\n\n private handleTriggerInteraction(\n id: string,\n root: RdxMenuRoot,\n trigger: HTMLElement,\n interaction: RdxMenuTriggerInteraction\n ): boolean {\n if (this.disabled()) {\n return false;\n }\n\n switch (interaction.type) {\n case 'click': {\n if (root.open()) {\n root.close();\n this.deactivateAll();\n } else {\n root.show();\n this.activateItem(id);\n }\n return true;\n }\n case 'enter':\n case 'space': {\n interaction.event.preventDefault();\n interaction.event.stopPropagation();\n\n if (root.open()) {\n root.close();\n this.deactivateAll();\n } else {\n root.show('first', 'trigger-press', interaction.event);\n this.activateItem(id);\n }\n\n return true;\n }\n case 'pointerenter': {\n if (interaction.event.pointerType === 'touch' || !this.hasOpenMenu()) {\n return false;\n }\n\n if (root.open()) {\n return true;\n }\n\n trigger.focus({ preventScroll: true });\n root.show(false, 'trigger-hover');\n this.activateItem(id);\n return true;\n }\n case 'arrowdown': {\n interaction.event.preventDefault();\n root.show('first');\n this.activateItem(id);\n return true;\n }\n case 'arrowup': {\n interaction.event.preventDefault();\n root.show('last');\n this.activateItem(id);\n return true;\n }\n case 'arrowleft': {\n this.handleTriggerArrow(interaction.event, id, -1, root.open());\n return true;\n }\n case 'arrowright': {\n this.handleTriggerArrow(interaction.event, id, 1, root.open());\n return true;\n }\n case 'home': {\n this.handleTriggerBoundary(interaction.event, 'first', root.open());\n return true;\n }\n case 'end': {\n this.handleTriggerBoundary(interaction.event, 'last', root.open());\n return true;\n }\n case 'escape': {\n interaction.event.preventDefault();\n interaction.event.stopPropagation();\n root.close();\n this.deactivateAll();\n trigger.focus({ preventScroll: true });\n return true;\n }\n }\n }\n\n private handleTriggerArrow(event: Event, id: string, offset: 1 | -1, openOnMove: boolean): void {\n event.preventDefault();\n event.stopPropagation();\n (event as KeyboardEvent).stopImmediatePropagation();\n this.focusAdjacent(id, offset, openOnMove);\n }\n\n private handleTriggerBoundary(event: Event, boundary: 'first' | 'last', openOnMove: boolean): void {\n event.preventDefault();\n event.stopPropagation();\n (event as KeyboardEvent).stopImmediatePropagation();\n this.focusBoundary(boundary, openOnMove);\n }\n\n focusAdjacent(currentId: string, offset: 1 | -1, openOnMove: boolean): void {\n const enabled = this.enabledItems();\n const currentIndex = enabled.findIndex((item) => item.id === currentId);\n if (currentIndex === -1 || enabled.length === 0) return;\n\n const nextIndex = currentIndex + offset;\n if (!this.loopFocus() && (nextIndex < 0 || nextIndex >= enabled.length)) {\n return;\n }\n\n const next = enabled[(nextIndex + enabled.length) % enabled.length];\n this.focusItem(next, openOnMove);\n }\n\n private focusItem(item: RdxMenubarItem | undefined, openOnMove: boolean): void {\n if (!item || this.disabled()) return;\n\n this.highlightItem(item);\n item.el.focus({ preventScroll: true });\n if (openOnMove) {\n item.open();\n this.activateItem(item.id);\n }\n }\n\n protected handleFocusIn(event: FocusEvent): void {\n const target = event.target;\n\n if (target === this.elementRef.nativeElement) {\n this.focusItem(this.enabledItems()[0], false);\n return;\n }\n\n const focusedItem = target instanceof HTMLElement ? this.items.find((item) => item.el === target) : undefined;\n if (!focusedItem || focusedItem.disabled()) {\n return;\n }\n\n this.highlightItem(focusedItem);\n\n if (this.hasOpenMenu() && this.activeId() !== focusedItem.id) {\n focusedItem.open();\n this.activateItem(focusedItem.id);\n }\n }\n\n private highlightItem(item: RdxMenubarItem): void {\n const index = this.items.findIndex((candidate) => candidate.id === item.id);\n if (index !== -1) {\n this.compositeRoot.setHighlightedIndex(index, true);\n }\n }\n\n private enabledItems(): RdxMenubarItem[] {\n return this.items.filter((item) => !item.disabled());\n }\n\n private hasOpenMenu(): boolean {\n return this.items.some((item) => item.root?.open());\n }\n\n private sortItems(): void {\n this.items.sort((a, b) => (a.el.compareDocumentPosition(b.el) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1));\n this.markItemsChanged();\n }\n\n private markItemsChanged(): void {\n this.itemsVersion.update((value) => value + 1);\n }\n\n private syncDisabledIndices(): void {\n const disabledIndices = this.items\n .map((item, index) => (item.disabled() ? index : -1))\n .filter((index) => index !== -1);\n\n this.compositeRoot.setDisabledIndices(disabledIndices.length ? disabledIndices : undefined);\n }\n\n private syncTabIndices(): void {\n const highlightedIndex = this.compositeRoot.highlightedIndex();\n\n this.items.forEach((item, index) => {\n item.el.tabIndex = index === highlightedIndex && !item.disabled() ? 0 : -1;\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxMenubarRoot } from './src/menubar-root';\n\nexport * from './src/menubar-root';\n\n/**\n * Menubar-specific parts. Triggers use the standard `rdxMenuTrigger` from\n * `@radix-ng/primitives/menu`; the menubar root composes them into Composite focus,\n * hover switching, and ArrowLeft / ArrowRight navigation. The menu popup, items,\n * checkbox/radio, submenu, separator, etc. also come from `RdxMenuModule`.\n */\nconst menubarImports = [RdxMenubarRoot];\n\n@NgModule({\n imports: [...menubarImports],\n exports: [...menubarImports]\n})\nexport class RdxMenubarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-menubar.mjs","sources":["../../../packages/primitives/menubar/src/menubar-root.ts","../../../packages/primitives/menubar/index.ts","../../../packages/primitives/menubar/radix-ng-primitives-menubar.ts"],"sourcesContent":["import {\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n signal,\n Signal\n} from '@angular/core';\nimport { RdxCompositeList, RdxCompositeRoot } from '@radix-ng/primitives/composite';\nimport { BooleanInput, createContext, provideFloatingTree } from '@radix-ng/primitives/core';\nimport { RDX_MENU_AMBIENT_MODAL, RdxMenuRoot, RdxMenuTriggerInteraction } from '@radix-ng/primitives/menu';\n\nexport type RdxMenubarOrientation = 'horizontal' | 'vertical';\n\ninterface RdxMenubarItem {\n id: string;\n el: HTMLElement;\n root?: RdxMenuRoot;\n open: () => void;\n close: () => void;\n disabled: () => boolean;\n}\n\nexport interface RdxMenubarContext {\n activeId: Signal<string | null>;\n isAnyOpen: Signal<boolean>;\n disabled: Signal<boolean>;\n modal: Signal<boolean>;\n orientation: Signal<RdxMenubarOrientation>;\n registerItem: (\n id: string,\n el: HTMLElement,\n open: () => void,\n close: () => void,\n disabled: () => boolean\n ) => () => void;\n activateItem: (id: string) => void;\n deactivateAll: () => void;\n focusAdjacent: (currentId: string, offset: 1 | -1, openOnMove: boolean) => void;\n focusBoundary: (boundary: 'first' | 'last', openOnMove: boolean) => void;\n}\n\nexport const [injectRdxMenubarContext, provideRdxMenubarContext] = createContext<RdxMenubarContext>(\n 'RdxMenubarContext',\n 'components/menubar'\n);\n\nconst contextFactory = () => buildContext(inject(RdxMenubarRoot));\n\nfunction buildContext(root: RdxMenubarRoot): RdxMenubarContext {\n return {\n activeId: root.activeId.asReadonly(),\n isAnyOpen: root.isAnyOpen,\n disabled: root.disabled,\n modal: root.modal,\n orientation: root.orientation,\n registerItem: (id, el, open, close, disabled) => root.registerItem(id, el, open, close, disabled),\n activateItem: (id) => root.activateItem(id),\n deactivateAll: () => root.deactivateAll(),\n focusAdjacent: (id, offset, open) => root.focusAdjacent(id, offset, open),\n focusBoundary: (boundary, open) => root.focusBoundary(boundary, open)\n };\n}\n\nlet nextMenubarItemId = 0;\n\n/**\n * Container for a horizontal application menu bar.\n * Coordinates open/close state across multiple menus and provides arrow-key navigation.\n */\n@Directive({\n selector: '[rdxMenubarRoot]',\n exportAs: 'rdxMenubarRoot',\n providers: [\n provideRdxMenubarContext(contextFactory),\n // One shared floating tree for all child menus (Base UI `Menubar` wraps them in a single\n // `FloatingTree`). Each `RdxMenuRoot`'s own `provideFloatingTree()` inherits this via skipSelf, so\n // sibling menubar menus live in the same tree — the dismissal / focus engine can see their\n // relationships instead of each menu owning an isolated tree.\n provideFloatingTree(),\n // Thread the menubar's `modal` to every child menu (Base UI `Menubar` passes `modal` into each\n // `Menu.Root`). Child `RdxMenuRoot`s inherit it via the ambient token instead of each defaulting.\n { provide: RDX_MENU_AMBIENT_MODAL, useFactory: () => inject(RdxMenubarRoot).modal }\n ],\n host: {\n role: 'menubar',\n '[attr.aria-orientation]': 'orientation()',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-modal]': 'modal() ? \"\" : undefined',\n '[attr.data-has-submenu-open]': 'hasSubmenuOpen() ? \"\" : undefined',\n '(focusin)': 'handleFocusIn($event)'\n },\n hostDirectives: [RdxCompositeRoot]\n})\nexport class RdxMenubarRoot {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly compositeRoot = inject(RdxCompositeRoot, { self: true });\n private readonly compositeList = inject(RdxCompositeList, { self: true });\n private readonly menuRoots = contentChildren(RdxMenuRoot, { descendants: true });\n private readonly ids = new WeakMap<RdxMenuRoot, string>();\n private items: RdxMenubarItem[] = [];\n private readonly itemsVersion = signal(0);\n\n /** Whether every menubar trigger is disabled. */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether the child menus block outside interaction and lock scroll while open (Base UI default `true`). */\n readonly modal = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** Whether arrow-key navigation wraps at the first/last trigger. */\n readonly loopFocus = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** The menubar orientation. */\n readonly orientation = input<RdxMenubarOrientation>('horizontal');\n\n readonly activeId = signal<string | null>(null);\n readonly isAnyOpen = computed(() => this.activeId() !== null);\n /** Whether a **nested submenu** is currently open (Base UI `data-has-submenu-open` — not top-level menus). */\n readonly hasSubmenuOpen = computed(() => this.menuRoots().some((root) => root.isSubmenu() && root.open()));\n\n constructor() {\n effect(() => {\n this.compositeRoot.setOrientation(this.orientation());\n this.compositeRoot.setLoopFocus(this.loopFocus());\n this.compositeRoot.setEnableHomeAndEndKeys(true);\n });\n\n effect(() => {\n this.itemsVersion();\n this.syncDisabledIndices();\n this.syncTabIndices();\n });\n\n effect(() => {\n this.compositeRoot.highlightedIndex();\n this.itemsVersion();\n this.syncTabIndices();\n });\n\n effect((onCleanup) => {\n const roots = this.menuRoots();\n const registered: Array<() => void> = [];\n\n roots.forEach((root) => {\n const trigger = root.trigger();\n\n if (!trigger || trigger.closest('[rdxMenuPopup]')) {\n return;\n }\n\n registered.push(this.registerMenuRoot(root, trigger));\n });\n\n onCleanup(() => {\n registered.forEach((cleanup) => cleanup());\n });\n });\n\n effect(() => {\n const activeId = this.activeId();\n\n if (!activeId) {\n return;\n }\n\n this.menuRoots().forEach((root) => {\n const trigger = root.trigger();\n\n if (!trigger || trigger.closest('[rdxMenuPopup]')) {\n return;\n }\n\n if (this.idFor(root) === activeId && !root.open()) {\n this.deactivateAll();\n }\n });\n });\n }\n\n registerItem(\n id: string,\n el: HTMLElement,\n open: () => void,\n close: () => void,\n disabled: () => boolean\n ): () => void {\n this.items.push({ id, el, open, close, disabled });\n this.sortItems();\n return () => {\n this.items = this.items.filter((item) => item.id !== id);\n if (this.activeId() === id) this.activeId.set(null);\n this.markItemsChanged();\n };\n }\n\n activateItem(id: string): void {\n if (this.disabled()) {\n return;\n }\n\n // Close every other open menu\n this.items.forEach((item) => {\n if (item.id !== id) item.close();\n });\n this.activeId.set(id);\n }\n\n deactivateAll(): void {\n this.activeId.set(null);\n }\n\n focusBoundary(boundary: 'first' | 'last', openOnMove: boolean): void {\n const enabled = this.enabledItems();\n this.focusItem(boundary === 'first' ? enabled[0] : enabled[enabled.length - 1], openOnMove);\n }\n\n generateId(): string {\n return `rdx-menubar-item-${nextMenubarItemId++}`;\n }\n\n private idFor(root: RdxMenuRoot): string {\n let id = this.ids.get(root);\n\n if (!id) {\n id = this.generateId();\n this.ids.set(root, id);\n }\n\n return id;\n }\n\n private registerMenuRoot(root: RdxMenuRoot, trigger: HTMLElement): () => void {\n const id = this.idFor(root);\n const unregisterPopupArrowNavigation = root.registerPopupArrowNavigationHandler((offset) => {\n if (this.disabled()) {\n return false;\n }\n\n this.focusAdjacent(id, offset, true);\n return true;\n });\n const unregisterTriggerInteraction = root.registerTriggerInteractionHandler((interaction) =>\n this.handleTriggerInteraction(id, root, trigger, interaction)\n );\n const unregisterCompositeItem = this.compositeList.registerItem({\n element: trigger,\n metadata: computed(() => ({\n disabled:\n this.disabled() ||\n root.disabled() ||\n trigger.hasAttribute('disabled') ||\n trigger.getAttribute('aria-disabled') === 'true'\n }))\n });\n const unregisterItem = this.registerResolvedItem(id, trigger, root);\n\n return () => {\n unregisterItem();\n unregisterCompositeItem();\n unregisterTriggerInteraction();\n unregisterPopupArrowNavigation();\n };\n }\n\n private registerResolvedItem(id: string, el: HTMLElement, root: RdxMenuRoot): () => void {\n this.items.push({\n id,\n el,\n root,\n open: () => root.show(false),\n close: () => root.close(),\n disabled: () =>\n this.disabled() ||\n root.disabled() ||\n el.hasAttribute('disabled') ||\n el.getAttribute('aria-disabled') === 'true'\n });\n this.sortItems();\n\n return () => {\n this.items = this.items.filter((item) => item.id !== id);\n if (this.activeId() === id) this.activeId.set(null);\n this.markItemsChanged();\n };\n }\n\n private handleTriggerInteraction(\n id: string,\n root: RdxMenuRoot,\n trigger: HTMLElement,\n interaction: RdxMenuTriggerInteraction\n ): boolean {\n if (this.disabled()) {\n return false;\n }\n\n switch (interaction.type) {\n case 'click': {\n if (root.open()) {\n root.close();\n this.deactivateAll();\n } else {\n root.show();\n this.activateItem(id);\n }\n return true;\n }\n case 'enter':\n case 'space': {\n interaction.event.preventDefault();\n interaction.event.stopPropagation();\n\n if (root.open()) {\n root.close();\n this.deactivateAll();\n } else {\n root.show('first', 'trigger-press', interaction.event);\n this.activateItem(id);\n }\n\n return true;\n }\n case 'pointerenter': {\n if (interaction.event.pointerType === 'touch' || !this.hasOpenMenu()) {\n return false;\n }\n\n if (root.open()) {\n return true;\n }\n\n trigger.focus({ preventScroll: true });\n root.show(false, 'trigger-hover');\n this.activateItem(id);\n return true;\n }\n case 'arrowdown': {\n interaction.event.preventDefault();\n root.show('first');\n this.activateItem(id);\n return true;\n }\n case 'arrowup': {\n interaction.event.preventDefault();\n root.show('last');\n this.activateItem(id);\n return true;\n }\n case 'arrowleft': {\n this.handleTriggerArrow(interaction.event, id, -1, root.open());\n return true;\n }\n case 'arrowright': {\n this.handleTriggerArrow(interaction.event, id, 1, root.open());\n return true;\n }\n case 'home': {\n this.handleTriggerBoundary(interaction.event, 'first', root.open());\n return true;\n }\n case 'end': {\n this.handleTriggerBoundary(interaction.event, 'last', root.open());\n return true;\n }\n case 'escape': {\n interaction.event.preventDefault();\n interaction.event.stopPropagation();\n root.close();\n this.deactivateAll();\n trigger.focus({ preventScroll: true });\n return true;\n }\n default:\n return false;\n }\n }\n\n private handleTriggerArrow(event: Event, id: string, offset: 1 | -1, openOnMove: boolean): void {\n event.preventDefault();\n event.stopPropagation();\n (event as KeyboardEvent).stopImmediatePropagation();\n this.focusAdjacent(id, offset, openOnMove);\n }\n\n private handleTriggerBoundary(event: Event, boundary: 'first' | 'last', openOnMove: boolean): void {\n event.preventDefault();\n event.stopPropagation();\n (event as KeyboardEvent).stopImmediatePropagation();\n this.focusBoundary(boundary, openOnMove);\n }\n\n focusAdjacent(currentId: string, offset: 1 | -1, openOnMove: boolean): void {\n const enabled = this.enabledItems();\n const currentIndex = enabled.findIndex((item) => item.id === currentId);\n if (currentIndex === -1 || enabled.length === 0) return;\n\n const nextIndex = currentIndex + offset;\n if (!this.loopFocus() && (nextIndex < 0 || nextIndex >= enabled.length)) {\n return;\n }\n\n const next = enabled[(nextIndex + enabled.length) % enabled.length];\n this.focusItem(next, openOnMove);\n }\n\n private focusItem(item: RdxMenubarItem | undefined, openOnMove: boolean): void {\n if (!item || this.disabled()) return;\n\n this.highlightItem(item);\n item.el.focus({ preventScroll: true });\n if (openOnMove) {\n item.open();\n this.activateItem(item.id);\n }\n }\n\n protected handleFocusIn(event: FocusEvent): void {\n const target = event.target;\n\n if (target === this.elementRef.nativeElement) {\n this.focusItem(this.enabledItems()[0], false);\n return;\n }\n\n const focusedItem = target instanceof HTMLElement ? this.items.find((item) => item.el === target) : undefined;\n if (!focusedItem || focusedItem.disabled()) {\n return;\n }\n\n this.highlightItem(focusedItem);\n\n if (this.hasOpenMenu() && this.activeId() !== focusedItem.id) {\n focusedItem.open();\n this.activateItem(focusedItem.id);\n }\n }\n\n private highlightItem(item: RdxMenubarItem): void {\n const index = this.items.findIndex((candidate) => candidate.id === item.id);\n if (index !== -1) {\n this.compositeRoot.setHighlightedIndex(index, true);\n }\n }\n\n private enabledItems(): RdxMenubarItem[] {\n return this.items.filter((item) => !item.disabled());\n }\n\n private hasOpenMenu(): boolean {\n return this.items.some((item) => item.root?.open());\n }\n\n private sortItems(): void {\n this.items.sort((a, b) => (a.el.compareDocumentPosition(b.el) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1));\n this.markItemsChanged();\n }\n\n private markItemsChanged(): void {\n this.itemsVersion.update((value) => value + 1);\n }\n\n private syncDisabledIndices(): void {\n const disabledIndices = this.items\n .map((item, index) => (item.disabled() ? index : -1))\n .filter((index) => index !== -1);\n\n this.compositeRoot.setDisabledIndices(disabledIndices.length ? disabledIndices : undefined);\n }\n\n private syncTabIndices(): void {\n const highlightedIndex = this.compositeRoot.highlightedIndex();\n\n this.items.forEach((item, index) => {\n item.el.tabIndex = index === highlightedIndex && !item.disabled() ? 0 : -1;\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxMenubarRoot } from './src/menubar-root';\n\nexport * from './src/menubar-root';\n\n/**\n * Menubar-specific parts. Triggers use the standard `rdxMenuTrigger` from\n * `@radix-ng/primitives/menu`; the menubar root composes them into Composite focus,\n * hover switching, and ArrowLeft / ArrowRight navigation. The menu popup, items,\n * checkbox/radio, submenu, separator, etc. also come from `RdxMenuModule`.\n */\nconst menubarImports = [RdxMenubarRoot];\n\n@NgModule({\n imports: [...menubarImports],\n exports: [...menubarImports]\n})\nexport class RdxMenubarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AA8CO,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,GAAG,aAAa,CAC5E,mBAAmB,EACnB,oBAAoB;AAGxB,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAEjE,SAAS,YAAY,CAAC,IAAoB,EAAA;IACtC,OAAO;AACH,QAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;QACpC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;QACjG,YAAY,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AAC3C,QAAA,aAAa,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE;AACzC,QAAA,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC;AACzE,QAAA,aAAa,EAAE,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI;KACvE;AACL;AAEA,IAAI,iBAAiB,GAAG,CAAC;AAEzB;;;AAGG;MAyBU,cAAc,CAAA;AA0BvB,IAAA,WAAA,GAAA;AAzBiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;QACxD,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxD,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxD,IAAA,CAAA,SAAS,GAAG,eAAe,CAAC,WAAW,iFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;AAC/D,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,OAAO,EAAuB;QACjD,IAAA,CAAA,KAAK,GAAqB,EAAE;QACnB,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,CAAC;yFAAC;;QAGhC,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG/E,IAAA,CAAA,KAAK,GAAG,KAAK,CAAwB,IAAI,6EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG3E,IAAA,CAAA,SAAS,GAAG,KAAK,CAAwB,IAAI,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG/E,IAAA,CAAA,WAAW,GAAG,KAAK,CAAwB,YAAY;wFAAC;QAExD,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAgB,IAAI;qFAAC;QACtC,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI;sFAAC;;QAEpD,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;2FAAC;QAGtG,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACrD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjD,YAAA,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACpD,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,cAAc,EAAE;AACzB,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE;YACrC,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE;AACzB,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACjB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;YAC9B,MAAM,UAAU,GAAsB,EAAE;AAExC,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACnB,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;gBAE9B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;oBAC/C;gBACJ;AAEA,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACzD,YAAA,CAAC,CAAC;YAEF,SAAS,CAAC,MAAK;gBACX,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;AAC9C,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;YAEhC,IAAI,CAAC,QAAQ,EAAE;gBACX;YACJ;YAEA,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC9B,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;gBAE9B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;oBAC/C;gBACJ;AAEA,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;oBAC/C,IAAI,CAAC,aAAa,EAAE;gBACxB;AACJ,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACN;IAEA,YAAY,CACR,EAAU,EACV,EAAe,EACf,IAAgB,EAChB,KAAiB,EACjB,QAAuB,EAAA;AAEvB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAClD,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,OAAO,MAAK;YACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;AACxD,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE;AAAE,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACnD,IAAI,CAAC,gBAAgB,EAAE;AAC3B,QAAA,CAAC;IACL;AAEA,IAAA,YAAY,CAAC,EAAU,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB;QACJ;;QAGA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACxB,YAAA,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE;gBAAE,IAAI,CAAC,KAAK,EAAE;AACpC,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IACzB;IAEA,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IAC3B;IAEA,aAAa,CAAC,QAA0B,EAAE,UAAmB,EAAA;AACzD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;QACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;IAC/F;IAEA,UAAU,GAAA;AACN,QAAA,OAAO,CAAA,iBAAA,EAAoB,iBAAiB,EAAE,CAAA,CAAE;IACpD;AAEQ,IAAA,KAAK,CAAC,IAAiB,EAAA;QAC3B,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;QAE3B,IAAI,CAAC,EAAE,EAAE;AACL,YAAA,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;YACtB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1B;AAEA,QAAA,OAAO,EAAE;IACb;IAEQ,gBAAgB,CAAC,IAAiB,EAAE,OAAoB,EAAA;QAC5D,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC3B,MAAM,8BAA8B,GAAG,IAAI,CAAC,mCAAmC,CAAC,CAAC,MAAM,KAAI;AACvF,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjB,gBAAA,OAAO,KAAK;YAChB;YAEA,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC;AACpC,YAAA,OAAO,IAAI;AACf,QAAA,CAAC,CAAC;QACF,MAAM,4BAA4B,GAAG,IAAI,CAAC,iCAAiC,CAAC,CAAC,WAAW,KACpF,IAAI,CAAC,wBAAwB,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAChE;AACD,QAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;AAC5D,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,QAAQ,EAAE,QAAQ,CAAC,OAAO;AACtB,gBAAA,QAAQ,EACJ,IAAI,CAAC,QAAQ,EAAE;oBACf,IAAI,CAAC,QAAQ,EAAE;AACf,oBAAA,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC;AAChC,oBAAA,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK;AACjD,aAAA,CAAC;AACL,SAAA,CAAC;AACF,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC;AAEnE,QAAA,OAAO,MAAK;AACR,YAAA,cAAc,EAAE;AAChB,YAAA,uBAAuB,EAAE;AACzB,YAAA,4BAA4B,EAAE;AAC9B,YAAA,8BAA8B,EAAE;AACpC,QAAA,CAAC;IACL;AAEQ,IAAA,oBAAoB,CAAC,EAAU,EAAE,EAAe,EAAE,IAAiB,EAAA;AACvE,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACZ,EAAE;YACF,EAAE;YACF,IAAI;YACJ,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,YAAA,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;AACzB,YAAA,QAAQ,EAAE,MACN,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC;AAC3B,gBAAA,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK;AAC5C,SAAA,CAAC;QACF,IAAI,CAAC,SAAS,EAAE;AAEhB,QAAA,OAAO,MAAK;YACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;AACxD,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE;AAAE,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACnD,IAAI,CAAC,gBAAgB,EAAE;AAC3B,QAAA,CAAC;IACL;AAEQ,IAAA,wBAAwB,CAC5B,EAAU,EACV,IAAiB,EACjB,OAAoB,EACpB,WAAsC,EAAA;AAEtC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjB,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,QAAQ,WAAW,CAAC,IAAI;YACpB,KAAK,OAAO,EAAE;AACV,gBAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;oBACb,IAAI,CAAC,KAAK,EAAE;oBACZ,IAAI,CAAC,aAAa,EAAE;gBACxB;qBAAO;oBACH,IAAI,CAAC,IAAI,EAAE;AACX,oBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACzB;AACA,gBAAA,OAAO,IAAI;YACf;AACA,YAAA,KAAK,OAAO;YACZ,KAAK,OAAO,EAAE;AACV,gBAAA,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE;AAClC,gBAAA,WAAW,CAAC,KAAK,CAAC,eAAe,EAAE;AAEnC,gBAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;oBACb,IAAI,CAAC,KAAK,EAAE;oBACZ,IAAI,CAAC,aAAa,EAAE;gBACxB;qBAAO;oBACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,CAAC,KAAK,CAAC;AACtD,oBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACzB;AAEA,gBAAA,OAAO,IAAI;YACf;YACA,KAAK,cAAc,EAAE;AACjB,gBAAA,IAAI,WAAW,CAAC,KAAK,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AAClE,oBAAA,OAAO,KAAK;gBAChB;AAEA,gBAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACb,oBAAA,OAAO,IAAI;gBACf;gBAEA,OAAO,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACtC,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC;AACjC,gBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,gBAAA,OAAO,IAAI;YACf;YACA,KAAK,WAAW,EAAE;AACd,gBAAA,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE;AAClC,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAClB,gBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,gBAAA,OAAO,IAAI;YACf;YACA,KAAK,SAAS,EAAE;AACZ,gBAAA,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE;AAClC,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACjB,gBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,gBAAA,OAAO,IAAI;YACf;YACA,KAAK,WAAW,EAAE;AACd,gBAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/D,gBAAA,OAAO,IAAI;YACf;YACA,KAAK,YAAY,EAAE;AACf,gBAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC9D,gBAAA,OAAO,IAAI;YACf;YACA,KAAK,MAAM,EAAE;AACT,gBAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACnE,gBAAA,OAAO,IAAI;YACf;YACA,KAAK,KAAK,EAAE;AACR,gBAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAClE,gBAAA,OAAO,IAAI;YACf;YACA,KAAK,QAAQ,EAAE;AACX,gBAAA,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE;AAClC,gBAAA,WAAW,CAAC,KAAK,CAAC,eAAe,EAAE;gBACnC,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,aAAa,EAAE;gBACpB,OAAO,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACtC,gBAAA,OAAO,IAAI;YACf;AACA,YAAA;AACI,gBAAA,OAAO,KAAK;;IAExB;AAEQ,IAAA,kBAAkB,CAAC,KAAY,EAAE,EAAU,EAAE,MAAc,EAAE,UAAmB,EAAA;QACpF,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACtB,KAAuB,CAAC,wBAAwB,EAAE;QACnD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC;IAC9C;AAEQ,IAAA,qBAAqB,CAAC,KAAY,EAAE,QAA0B,EAAE,UAAmB,EAAA;QACvF,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACtB,KAAuB,CAAC,wBAAwB,EAAE;AACnD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC5C;AAEA,IAAA,aAAa,CAAC,SAAiB,EAAE,MAAc,EAAE,UAAmB,EAAA;AAChE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AACnC,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC;QACvE,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE;AAEjD,QAAA,MAAM,SAAS,GAAG,YAAY,GAAG,MAAM;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,SAAS,GAAG,CAAC,IAAI,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACrE;QACJ;AAEA,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;AACnE,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC;IACpC;IAEQ,SAAS,CAAC,IAAgC,EAAE,UAAmB,EAAA;AACnE,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAE9B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QACtC,IAAI,UAAU,EAAE;YACZ,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B;IACJ;AAEU,IAAA,aAAa,CAAC,KAAiB,EAAA;AACrC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;QAE3B,IAAI,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;YAC7C;QACJ;AAEA,QAAA,MAAM,WAAW,GAAG,MAAM,YAAY,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,GAAG,SAAS;QAC7G,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE;YACxC;QACJ;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;AAE/B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,WAAW,CAAC,EAAE,EAAE;YAC1D,WAAW,CAAC,IAAI,EAAE;AAClB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC;IACJ;AAEQ,IAAA,aAAa,CAAC,IAAoB,EAAA;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;AAC3E,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC;QACvD;IACJ;IAEQ,YAAY,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxD;IAEQ,WAAW,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IACvD;IAEQ,SAAS,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,2BAA2B,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3G,IAAI,CAAC,gBAAgB,EAAE;IAC3B;IAEQ,gBAAgB,GAAA;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;IAClD;IAEQ,mBAAmB,GAAA;AACvB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC;aACxB,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;aACnD,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;AAEpC,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,eAAe,CAAC,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IAC/F;IAEQ,cAAc,GAAA;QAClB,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE;QAE9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YAC/B,IAAI,CAAC,EAAE,CAAC,QAAQ,GAAG,KAAK,KAAK,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9E,QAAA,CAAC,CAAC;IACN;8GA7XS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,qCAAA,EAAA,EAAA,EAAA,SAAA,EArBZ;YACP,wBAAwB,CAAC,cAAc,CAAC;;;;;AAKxC,YAAA,mBAAmB,EAAE;;;AAGrB,YAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK;AACpF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAe4C,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAJ/C,cAAc,EAAA,UAAA,EAAA,CAAA;kBAxB1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE;wBACP,wBAAwB,CAAC,cAAc,CAAC;;;;;AAKxC,wBAAA,mBAAmB,EAAE;;;AAGrB,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA,cAAA,CAAgB,CAAC,KAAK;AACpF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,mBAAmB,EAAE,0BAA0B;AAC/C,wBAAA,8BAA8B,EAAE,mCAAmC;AACnE,wBAAA,WAAW,EAAE;AAChB,qBAAA;oBACD,cAAc,EAAE,CAAC,gBAAgB;AACpC,iBAAA;AAKgD,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,WAAW,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACjGnF;;;;;AAKG;AACH,MAAM,cAAc,GAAG,CAAC,cAAc,CAAC;MAM1B,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,OAAA,EAAA,CANL,cAAc,CAAA,EAAA,OAAA,EAAA,CAAd,cAAc,CAAA,EAAA,CAAA,CAAA;+GAMzB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,GAAG,cAAc,CAAC;AAC5B,oBAAA,OAAO,EAAE,CAAC,GAAG,cAAc;AAC9B,iBAAA;;;AChBD;;AAEG;;;;"}
|
|
@@ -53,13 +53,15 @@ class RdxMeterRootDirective {
|
|
|
53
53
|
*
|
|
54
54
|
* @group Props
|
|
55
55
|
*/
|
|
56
|
-
this.locale = input(
|
|
56
|
+
this.locale = input(/* @ts-ignore */
|
|
57
|
+
...(ngDevMode ? [undefined, { debugName: "locale" }] : /* istanbul ignore next */ []));
|
|
57
58
|
/**
|
|
58
59
|
* Number formatting options for the displayed value.
|
|
59
60
|
*
|
|
60
61
|
* @group Props
|
|
61
62
|
*/
|
|
62
|
-
this.format = input(
|
|
63
|
+
this.format = input(/* @ts-ignore */
|
|
64
|
+
...(ngDevMode ? [undefined, { debugName: "format" }] : /* istanbul ignore next */ []));
|
|
63
65
|
/**
|
|
64
66
|
* Human-readable text alternative for the current value.
|
|
65
67
|
*
|
|
@@ -71,43 +73,52 @@ class RdxMeterRootDirective {
|
|
|
71
73
|
*
|
|
72
74
|
* @group Props
|
|
73
75
|
*/
|
|
74
|
-
this.getAriaValueText = input(
|
|
75
|
-
|
|
76
|
-
this.
|
|
77
|
-
|
|
76
|
+
this.getAriaValueText = input(/* @ts-ignore */
|
|
77
|
+
...(ngDevMode ? [undefined, { debugName: "getAriaValueText" }] : /* istanbul ignore next */ []));
|
|
78
|
+
this.labelId = input(`rdx-meter-label-${meterId++}`, /* @ts-ignore */
|
|
79
|
+
...(ngDevMode ? [{ debugName: "labelId" }] : /* istanbul ignore next */ []));
|
|
80
|
+
this.valueId = input(`rdx-meter-value-${meterId++}`, /* @ts-ignore */
|
|
81
|
+
...(ngDevMode ? [{ debugName: "valueId" }] : /* istanbul ignore next */ []));
|
|
82
|
+
this.minState = computed(() => (isValidNumber(this.min()) ? this.min() : DEFAULT_MIN), /* @ts-ignore */
|
|
83
|
+
...(ngDevMode ? [{ debugName: "minState" }] : /* istanbul ignore next */ []));
|
|
78
84
|
this.maxState = computed(() => {
|
|
79
85
|
const min = this.minState();
|
|
80
86
|
const max = this.max();
|
|
81
87
|
return isValidNumber(max) && max > min ? max : min + DEFAULT_MAX;
|
|
82
|
-
},
|
|
88
|
+
}, /* @ts-ignore */
|
|
89
|
+
...(ngDevMode ? [{ debugName: "maxState" }] : /* istanbul ignore next */ []));
|
|
83
90
|
this.valueState = computed(() => {
|
|
84
91
|
const value = this.value();
|
|
85
92
|
return clamp(isValidNumber(value) ? value : this.minState(), this.minState(), this.maxState());
|
|
86
|
-
},
|
|
93
|
+
}, /* @ts-ignore */
|
|
94
|
+
...(ngDevMode ? [{ debugName: "valueState" }] : /* istanbul ignore next */ []));
|
|
87
95
|
this.percentageState = computed(() => {
|
|
88
96
|
const min = this.minState();
|
|
89
97
|
const max = this.maxState();
|
|
90
98
|
return ((this.valueState() - min) / (max - min)) * 100;
|
|
91
|
-
},
|
|
99
|
+
}, /* @ts-ignore */
|
|
100
|
+
...(ngDevMode ? [{ debugName: "percentageState" }] : /* istanbul ignore next */ []));
|
|
92
101
|
this.formattedValueState = computed(() => {
|
|
93
102
|
const format = this.format();
|
|
94
103
|
if (format) {
|
|
95
104
|
return new Intl.NumberFormat(this.locale(), format).format(this.valueState());
|
|
96
105
|
}
|
|
97
106
|
return new Intl.NumberFormat(this.locale(), { style: 'percent' }).format(this.percentageState() / 100);
|
|
98
|
-
},
|
|
107
|
+
}, /* @ts-ignore */
|
|
108
|
+
...(ngDevMode ? [{ debugName: "formattedValueState" }] : /* istanbul ignore next */ []));
|
|
99
109
|
this.ariaValueTextState = computed(() => {
|
|
100
110
|
const explicitText = this.ariaValueText();
|
|
101
111
|
if (explicitText !== undefined) {
|
|
102
112
|
return explicitText;
|
|
103
113
|
}
|
|
104
114
|
return this.getAriaValueText()?.(this.formattedValueState(), this.valueState());
|
|
105
|
-
},
|
|
115
|
+
}, /* @ts-ignore */
|
|
116
|
+
...(ngDevMode ? [{ debugName: "ariaValueTextState" }] : /* istanbul ignore next */ []));
|
|
106
117
|
}
|
|
107
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
108
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
118
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMeterRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
119
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxMeterRootDirective, isStandalone: true, selector: "[rdxMeterRoot]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, ariaValueText: { classPropertyName: "ariaValueText", publicName: "aria-valuetext", isSignal: true, isRequired: false, transformFunction: null }, getAriaValueText: { classPropertyName: "getAriaValueText", publicName: "getAriaValueText", isSignal: true, isRequired: false, transformFunction: null }, labelId: { classPropertyName: "labelId", publicName: "labelId", isSignal: true, isRequired: false, transformFunction: null }, valueId: { classPropertyName: "valueId", publicName: "valueId", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "meter" }, properties: { "attr.aria-labelledby": "labelId()", "attr.aria-describedby": "valueId()", "attr.aria-valuemin": "minState()", "attr.aria-valuemax": "maxState()", "attr.aria-valuenow": "valueState()", "attr.aria-valuetext": "ariaValueTextState()", "attr.data-value": "valueState()", "attr.data-min": "minState()", "attr.data-max": "maxState()", "attr.data-percent": "percentageState()" } }, providers: [provideMeterRootContext(meterRootContext)], exportAs: ["rdxMeterRoot"], ngImport: i0 }); }
|
|
109
120
|
}
|
|
110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMeterRootDirective, decorators: [{
|
|
111
122
|
type: Directive,
|
|
112
123
|
args: [{
|
|
113
124
|
selector: '[rdxMeterRoot]',
|
|
@@ -141,10 +152,10 @@ class RdxMeterIndicatorDirective {
|
|
|
141
152
|
constructor() {
|
|
142
153
|
this.meter = injectMeterRootContext();
|
|
143
154
|
}
|
|
144
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
145
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
155
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMeterIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
156
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxMeterIndicatorDirective, isStandalone: true, selector: "[rdxMeterIndicator]", host: { properties: { "attr.data-value": "meter.valueState()", "attr.data-min": "meter.minState()", "attr.data-max": "meter.maxState()", "attr.data-percent": "meter.percentageState()" } }, exportAs: ["rdxMeterIndicator"], ngImport: i0 }); }
|
|
146
157
|
}
|
|
147
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMeterIndicatorDirective, decorators: [{
|
|
148
159
|
type: Directive,
|
|
149
160
|
args: [{
|
|
150
161
|
selector: '[rdxMeterIndicator]',
|
|
@@ -167,10 +178,10 @@ class RdxMeterLabelDirective {
|
|
|
167
178
|
constructor() {
|
|
168
179
|
this.meter = injectMeterRootContext();
|
|
169
180
|
}
|
|
170
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
171
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
181
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMeterLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
182
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxMeterLabelDirective, isStandalone: true, selector: "[rdxMeterLabel]", host: { properties: { "attr.id": "meter.labelId()" } }, exportAs: ["rdxMeterLabel"], ngImport: i0 }); }
|
|
172
183
|
}
|
|
173
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMeterLabelDirective, decorators: [{
|
|
174
185
|
type: Directive,
|
|
175
186
|
args: [{
|
|
176
187
|
selector: '[rdxMeterLabel]',
|
|
@@ -190,10 +201,10 @@ class RdxMeterTrackDirective {
|
|
|
190
201
|
constructor() {
|
|
191
202
|
this.meter = injectMeterRootContext();
|
|
192
203
|
}
|
|
193
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
194
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
204
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMeterTrackDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
205
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxMeterTrackDirective, isStandalone: true, selector: "[rdxMeterTrack]", host: { properties: { "attr.data-value": "meter.valueState()", "attr.data-min": "meter.minState()", "attr.data-max": "meter.maxState()", "attr.data-percent": "meter.percentageState()" } }, exportAs: ["rdxMeterTrack"], ngImport: i0 }); }
|
|
195
206
|
}
|
|
196
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
207
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMeterTrackDirective, decorators: [{
|
|
197
208
|
type: Directive,
|
|
198
209
|
args: [{
|
|
199
210
|
selector: '[rdxMeterTrack]',
|
|
@@ -216,10 +227,10 @@ class RdxMeterValueDirective {
|
|
|
216
227
|
constructor() {
|
|
217
228
|
this.meter = injectMeterRootContext();
|
|
218
229
|
}
|
|
219
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
220
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
230
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMeterValueDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
231
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxMeterValueDirective, isStandalone: true, selector: "[rdxMeterValue]", host: { properties: { "attr.id": "meter.valueId()", "textContent": "meter.formattedValueState()", "attr.data-value": "meter.valueState()", "attr.data-min": "meter.minState()", "attr.data-max": "meter.maxState()", "attr.data-percent": "meter.percentageState()" } }, exportAs: ["rdxMeterValue"], ngImport: i0 }); }
|
|
221
232
|
}
|
|
222
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMeterValueDirective, decorators: [{
|
|
223
234
|
type: Directive,
|
|
224
235
|
args: [{
|
|
225
236
|
selector: '[rdxMeterValue]',
|
|
@@ -243,8 +254,8 @@ const _imports = [
|
|
|
243
254
|
RdxMeterIndicatorDirective
|
|
244
255
|
];
|
|
245
256
|
class RdxMeterModule {
|
|
246
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
247
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
257
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMeterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
258
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.2", ngImport: i0, type: RdxMeterModule, imports: [RdxMeterRootDirective,
|
|
248
259
|
RdxMeterLabelDirective,
|
|
249
260
|
RdxMeterValueDirective,
|
|
250
261
|
RdxMeterTrackDirective,
|
|
@@ -253,9 +264,9 @@ class RdxMeterModule {
|
|
|
253
264
|
RdxMeterValueDirective,
|
|
254
265
|
RdxMeterTrackDirective,
|
|
255
266
|
RdxMeterIndicatorDirective] }); }
|
|
256
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
267
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMeterModule }); }
|
|
257
268
|
}
|
|
258
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
269
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMeterModule, decorators: [{
|
|
259
270
|
type: NgModule,
|
|
260
271
|
args: [{
|
|
261
272
|
imports: [..._imports],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-meter.mjs","sources":["../../../packages/primitives/meter/src/meter-root.directive.ts","../../../packages/primitives/meter/src/meter-indicator.directive.ts","../../../packages/primitives/meter/src/meter-label.directive.ts","../../../packages/primitives/meter/src/meter-track.directive.ts","../../../packages/primitives/meter/src/meter-value.directive.ts","../../../packages/primitives/meter/index.ts","../../../packages/primitives/meter/radix-ng-primitives-meter.ts"],"sourcesContent":["import { computed, Directive, inject, input, numberAttribute } from '@angular/core';\nimport { createContext } from '@radix-ng/primitives/core';\n\nlet meterId = 0;\n\nexport type MeterValueFormatter = (formattedValue: string, value: number) => string;\n\nexport interface MeterProps {\n value: number;\n min?: number;\n max?: number;\n locale?: Intl.LocalesArgument;\n format?: Intl.NumberFormatOptions;\n ariaValueText?: string;\n getAriaValueText?: MeterValueFormatter;\n}\n\nconst DEFAULT_MIN = 0;\nconst DEFAULT_MAX = 100;\n\nconst isValidNumber = (value: unknown): value is number => typeof value === 'number' && !Number.isNaN(value);\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\nconst meterRootContext = () => {\n const root = injectMeterRoot();\n\n return {\n labelId: root.labelId,\n valueId: root.valueId,\n minState: root.minState,\n maxState: root.maxState,\n valueState: root.valueState,\n percentageState: root.percentageState,\n formattedValueState: root.formattedValueState,\n ariaValueTextState: root.ariaValueTextState\n };\n};\n\nexport type RdxMeterRootContext = ReturnType<typeof meterRootContext>;\n\nexport const [injectMeterRootContext, provideMeterRootContext] = createContext<RdxMeterRootContext>(\n 'RdxMeterRoot',\n 'components/meter'\n);\n\n/**\n * Provides meter state and accessibility attributes.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterRoot]',\n exportAs: 'rdxMeterRoot',\n providers: [provideMeterRootContext(meterRootContext)],\n host: {\n role: 'meter',\n '[attr.aria-labelledby]': 'labelId()',\n '[attr.aria-describedby]': 'valueId()',\n '[attr.aria-valuemin]': 'minState()',\n '[attr.aria-valuemax]': 'maxState()',\n '[attr.aria-valuenow]': 'valueState()',\n '[attr.aria-valuetext]': 'ariaValueTextState()',\n '[attr.data-value]': 'valueState()',\n '[attr.data-min]': 'minState()',\n '[attr.data-max]': 'maxState()',\n '[attr.data-percent]': 'percentageState()'\n }\n})\nexport class RdxMeterRootDirective {\n /**\n * Current meter value.\n *\n * @group Props\n */\n readonly value = input.required<number, unknown>({ transform: numberAttribute });\n\n /**\n * Minimum meter value.\n *\n * @group Props\n * @defaultValue 0\n */\n readonly min = input(DEFAULT_MIN, { transform: numberAttribute });\n\n /**\n * Maximum meter value.\n *\n * @group Props\n * @defaultValue 100\n */\n readonly max = input(DEFAULT_MAX, { transform: numberAttribute });\n\n /**\n * Locale used by `Intl.NumberFormat` when formatting the displayed value.\n *\n * @group Props\n */\n readonly locale = input<Intl.LocalesArgument>();\n\n /**\n * Number formatting options for the displayed value.\n *\n * @group Props\n */\n readonly format = input<Intl.NumberFormatOptions>();\n\n /**\n * Human-readable text alternative for the current value.\n *\n * @group Props\n */\n readonly ariaValueText = input<string | undefined>(undefined, {\n alias: 'aria-valuetext'\n });\n\n /**\n * Formats a human-readable text alternative for the current value.\n *\n * @group Props\n */\n readonly getAriaValueText = input<MeterValueFormatter>();\n\n readonly labelId = input(`rdx-meter-label-${meterId++}`);\n readonly valueId = input(`rdx-meter-value-${meterId++}`);\n\n readonly minState = computed(() => (isValidNumber(this.min()) ? this.min() : DEFAULT_MIN));\n readonly maxState = computed(() => {\n const min = this.minState();\n const max = this.max();\n\n return isValidNumber(max) && max > min ? max : min + DEFAULT_MAX;\n });\n\n readonly valueState = computed(() => {\n const value = this.value();\n\n return clamp(isValidNumber(value) ? value : this.minState(), this.minState(), this.maxState());\n });\n\n readonly percentageState = computed(() => {\n const min = this.minState();\n const max = this.maxState();\n\n return ((this.valueState() - min) / (max - min)) * 100;\n });\n\n readonly formattedValueState = computed(() => {\n const format = this.format();\n\n if (format) {\n return new Intl.NumberFormat(this.locale(), format).format(this.valueState());\n }\n\n return new Intl.NumberFormat(this.locale(), { style: 'percent' }).format(this.percentageState() / 100);\n });\n\n readonly ariaValueTextState = computed(() => {\n const explicitText = this.ariaValueText();\n\n if (explicitText !== undefined) {\n return explicitText;\n }\n\n return this.getAriaValueText()?.(this.formattedValueState(), this.valueState());\n });\n}\n\nfunction injectMeterRoot(): RdxMeterRootDirective {\n return inject(RdxMeterRootDirective);\n}\n","import { Directive } from '@angular/core';\nimport { injectMeterRootContext } from './meter-root.directive';\n\n/**\n * Displays the visual meter fill.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterIndicator]',\n exportAs: 'rdxMeterIndicator',\n host: {\n '[attr.data-value]': 'meter.valueState()',\n '[attr.data-min]': 'meter.minState()',\n '[attr.data-max]': 'meter.maxState()',\n '[attr.data-percent]': 'meter.percentageState()'\n }\n})\nexport class RdxMeterIndicatorDirective {\n protected readonly meter = injectMeterRootContext();\n}\n","import { Directive } from '@angular/core';\nimport { injectMeterRootContext } from './meter-root.directive';\n\n/**\n * Labels the meter.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterLabel]',\n exportAs: 'rdxMeterLabel',\n host: {\n '[attr.id]': 'meter.labelId()'\n }\n})\nexport class RdxMeterLabelDirective {\n protected readonly meter = injectMeterRootContext();\n}\n","import { Directive } from '@angular/core';\nimport { injectMeterRootContext } from './meter-root.directive';\n\n/**\n * Contains the visual meter indicator.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterTrack]',\n exportAs: 'rdxMeterTrack',\n host: {\n '[attr.data-value]': 'meter.valueState()',\n '[attr.data-min]': 'meter.minState()',\n '[attr.data-max]': 'meter.maxState()',\n '[attr.data-percent]': 'meter.percentageState()'\n }\n})\nexport class RdxMeterTrackDirective {\n protected readonly meter = injectMeterRootContext();\n}\n","import { Directive } from '@angular/core';\nimport { injectMeterRootContext } from './meter-root.directive';\n\n/**\n * Displays the formatted meter value.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterValue]',\n exportAs: 'rdxMeterValue',\n host: {\n '[attr.id]': 'meter.valueId()',\n '[textContent]': 'meter.formattedValueState()',\n '[attr.data-value]': 'meter.valueState()',\n '[attr.data-min]': 'meter.minState()',\n '[attr.data-max]': 'meter.maxState()',\n '[attr.data-percent]': 'meter.percentageState()'\n }\n})\nexport class RdxMeterValueDirective {\n protected readonly meter = injectMeterRootContext();\n}\n","import { NgModule } from '@angular/core';\nimport { RdxMeterIndicatorDirective } from './src/meter-indicator.directive';\nimport { RdxMeterLabelDirective } from './src/meter-label.directive';\nimport { RdxMeterRootDirective } from './src/meter-root.directive';\nimport { RdxMeterTrackDirective } from './src/meter-track.directive';\nimport { RdxMeterValueDirective } from './src/meter-value.directive';\n\nexport * from './src/meter-indicator.directive';\nexport * from './src/meter-label.directive';\nexport * from './src/meter-root.directive';\nexport * from './src/meter-track.directive';\nexport * from './src/meter-value.directive';\n\nexport type { MeterProps, MeterValueFormatter } from './src/meter-root.directive';\n\nconst _imports = [\n RdxMeterRootDirective,\n RdxMeterLabelDirective,\n RdxMeterValueDirective,\n RdxMeterTrackDirective,\n RdxMeterIndicatorDirective\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxMeterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-meter.mjs","sources":["../../../packages/primitives/meter/src/meter-root.directive.ts","../../../packages/primitives/meter/src/meter-indicator.directive.ts","../../../packages/primitives/meter/src/meter-label.directive.ts","../../../packages/primitives/meter/src/meter-track.directive.ts","../../../packages/primitives/meter/src/meter-value.directive.ts","../../../packages/primitives/meter/index.ts","../../../packages/primitives/meter/radix-ng-primitives-meter.ts"],"sourcesContent":["import { computed, Directive, inject, input, numberAttribute } from '@angular/core';\nimport { createContext } from '@radix-ng/primitives/core';\n\nlet meterId = 0;\n\nexport type MeterValueFormatter = (formattedValue: string, value: number) => string;\n\nexport interface MeterProps {\n value: number;\n min?: number;\n max?: number;\n locale?: Intl.LocalesArgument;\n format?: Intl.NumberFormatOptions;\n ariaValueText?: string;\n getAriaValueText?: MeterValueFormatter;\n}\n\nconst DEFAULT_MIN = 0;\nconst DEFAULT_MAX = 100;\n\nconst isValidNumber = (value: unknown): value is number => typeof value === 'number' && !Number.isNaN(value);\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\nconst meterRootContext = () => {\n const root = injectMeterRoot();\n\n return {\n labelId: root.labelId,\n valueId: root.valueId,\n minState: root.minState,\n maxState: root.maxState,\n valueState: root.valueState,\n percentageState: root.percentageState,\n formattedValueState: root.formattedValueState,\n ariaValueTextState: root.ariaValueTextState\n };\n};\n\nexport type RdxMeterRootContext = ReturnType<typeof meterRootContext>;\n\nexport const [injectMeterRootContext, provideMeterRootContext] = createContext<RdxMeterRootContext>(\n 'RdxMeterRoot',\n 'components/meter'\n);\n\n/**\n * Provides meter state and accessibility attributes.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterRoot]',\n exportAs: 'rdxMeterRoot',\n providers: [provideMeterRootContext(meterRootContext)],\n host: {\n role: 'meter',\n '[attr.aria-labelledby]': 'labelId()',\n '[attr.aria-describedby]': 'valueId()',\n '[attr.aria-valuemin]': 'minState()',\n '[attr.aria-valuemax]': 'maxState()',\n '[attr.aria-valuenow]': 'valueState()',\n '[attr.aria-valuetext]': 'ariaValueTextState()',\n '[attr.data-value]': 'valueState()',\n '[attr.data-min]': 'minState()',\n '[attr.data-max]': 'maxState()',\n '[attr.data-percent]': 'percentageState()'\n }\n})\nexport class RdxMeterRootDirective {\n /**\n * Current meter value.\n *\n * @group Props\n */\n readonly value = input.required<number, unknown>({ transform: numberAttribute });\n\n /**\n * Minimum meter value.\n *\n * @group Props\n * @defaultValue 0\n */\n readonly min = input(DEFAULT_MIN, { transform: numberAttribute });\n\n /**\n * Maximum meter value.\n *\n * @group Props\n * @defaultValue 100\n */\n readonly max = input(DEFAULT_MAX, { transform: numberAttribute });\n\n /**\n * Locale used by `Intl.NumberFormat` when formatting the displayed value.\n *\n * @group Props\n */\n readonly locale = input<Intl.LocalesArgument>();\n\n /**\n * Number formatting options for the displayed value.\n *\n * @group Props\n */\n readonly format = input<Intl.NumberFormatOptions>();\n\n /**\n * Human-readable text alternative for the current value.\n *\n * @group Props\n */\n readonly ariaValueText = input<string | undefined>(undefined, {\n alias: 'aria-valuetext'\n });\n\n /**\n * Formats a human-readable text alternative for the current value.\n *\n * @group Props\n */\n readonly getAriaValueText = input<MeterValueFormatter>();\n\n readonly labelId = input(`rdx-meter-label-${meterId++}`);\n readonly valueId = input(`rdx-meter-value-${meterId++}`);\n\n readonly minState = computed(() => (isValidNumber(this.min()) ? this.min() : DEFAULT_MIN));\n readonly maxState = computed(() => {\n const min = this.minState();\n const max = this.max();\n\n return isValidNumber(max) && max > min ? max : min + DEFAULT_MAX;\n });\n\n readonly valueState = computed(() => {\n const value = this.value();\n\n return clamp(isValidNumber(value) ? value : this.minState(), this.minState(), this.maxState());\n });\n\n readonly percentageState = computed(() => {\n const min = this.minState();\n const max = this.maxState();\n\n return ((this.valueState() - min) / (max - min)) * 100;\n });\n\n readonly formattedValueState = computed(() => {\n const format = this.format();\n\n if (format) {\n return new Intl.NumberFormat(this.locale(), format).format(this.valueState());\n }\n\n return new Intl.NumberFormat(this.locale(), { style: 'percent' }).format(this.percentageState() / 100);\n });\n\n readonly ariaValueTextState = computed(() => {\n const explicitText = this.ariaValueText();\n\n if (explicitText !== undefined) {\n return explicitText;\n }\n\n return this.getAriaValueText()?.(this.formattedValueState(), this.valueState());\n });\n}\n\nfunction injectMeterRoot(): RdxMeterRootDirective {\n return inject(RdxMeterRootDirective);\n}\n","import { Directive } from '@angular/core';\nimport { injectMeterRootContext } from './meter-root.directive';\n\n/**\n * Displays the visual meter fill.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterIndicator]',\n exportAs: 'rdxMeterIndicator',\n host: {\n '[attr.data-value]': 'meter.valueState()',\n '[attr.data-min]': 'meter.minState()',\n '[attr.data-max]': 'meter.maxState()',\n '[attr.data-percent]': 'meter.percentageState()'\n }\n})\nexport class RdxMeterIndicatorDirective {\n protected readonly meter = injectMeterRootContext();\n}\n","import { Directive } from '@angular/core';\nimport { injectMeterRootContext } from './meter-root.directive';\n\n/**\n * Labels the meter.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterLabel]',\n exportAs: 'rdxMeterLabel',\n host: {\n '[attr.id]': 'meter.labelId()'\n }\n})\nexport class RdxMeterLabelDirective {\n protected readonly meter = injectMeterRootContext();\n}\n","import { Directive } from '@angular/core';\nimport { injectMeterRootContext } from './meter-root.directive';\n\n/**\n * Contains the visual meter indicator.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterTrack]',\n exportAs: 'rdxMeterTrack',\n host: {\n '[attr.data-value]': 'meter.valueState()',\n '[attr.data-min]': 'meter.minState()',\n '[attr.data-max]': 'meter.maxState()',\n '[attr.data-percent]': 'meter.percentageState()'\n }\n})\nexport class RdxMeterTrackDirective {\n protected readonly meter = injectMeterRootContext();\n}\n","import { Directive } from '@angular/core';\nimport { injectMeterRootContext } from './meter-root.directive';\n\n/**\n * Displays the formatted meter value.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxMeterValue]',\n exportAs: 'rdxMeterValue',\n host: {\n '[attr.id]': 'meter.valueId()',\n '[textContent]': 'meter.formattedValueState()',\n '[attr.data-value]': 'meter.valueState()',\n '[attr.data-min]': 'meter.minState()',\n '[attr.data-max]': 'meter.maxState()',\n '[attr.data-percent]': 'meter.percentageState()'\n }\n})\nexport class RdxMeterValueDirective {\n protected readonly meter = injectMeterRootContext();\n}\n","import { NgModule } from '@angular/core';\nimport { RdxMeterIndicatorDirective } from './src/meter-indicator.directive';\nimport { RdxMeterLabelDirective } from './src/meter-label.directive';\nimport { RdxMeterRootDirective } from './src/meter-root.directive';\nimport { RdxMeterTrackDirective } from './src/meter-track.directive';\nimport { RdxMeterValueDirective } from './src/meter-value.directive';\n\nexport * from './src/meter-indicator.directive';\nexport * from './src/meter-label.directive';\nexport * from './src/meter-root.directive';\nexport * from './src/meter-track.directive';\nexport * from './src/meter-value.directive';\n\nexport type { MeterProps, MeterValueFormatter } from './src/meter-root.directive';\n\nconst _imports = [\n RdxMeterRootDirective,\n RdxMeterLabelDirective,\n RdxMeterValueDirective,\n RdxMeterTrackDirective,\n RdxMeterIndicatorDirective\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxMeterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|