@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.
Files changed (138) hide show
  1. package/aspect-ratio/README.md +1 -1
  2. package/fesm2022/radix-ng-primitives-accordion.mjs +40 -27
  3. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  4. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +34 -34
  5. package/fesm2022/radix-ng-primitives-arrow.mjs +3 -3
  6. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +11 -35
  7. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
  8. package/fesm2022/radix-ng-primitives-autocomplete.mjs +175 -125
  9. package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-avatar.mjs +92 -35
  11. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  12. package/fesm2022/radix-ng-primitives-button.mjs +11 -7
  13. package/fesm2022/radix-ng-primitives-button.mjs.map +1 -1
  14. package/fesm2022/radix-ng-primitives-calendar.mjs +140 -90
  15. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-checkbox.mjs +63 -46
  17. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-collapsible.mjs +37 -25
  19. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-combobox.mjs +278 -177
  21. package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-composite.mjs +50 -33
  23. package/fesm2022/radix-ng-primitives-composite.mjs.map +1 -1
  24. package/fesm2022/radix-ng-primitives-config.mjs +7 -5
  25. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-context-menu.mjs +48 -22
  27. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-core.mjs +44 -28
  29. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-cropper.mjs +73 -45
  31. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
  32. package/fesm2022/radix-ng-primitives-date-field.mjs +70 -40
  33. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  34. package/fesm2022/radix-ng-primitives-dialog.mjs +93 -67
  35. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  36. package/fesm2022/radix-ng-primitives-direction-provider.mjs +5 -4
  37. package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -1
  38. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +20 -16
  39. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-drawer.mjs +107 -81
  41. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
  42. package/fesm2022/radix-ng-primitives-editable.mjs +53 -39
  43. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  44. package/fesm2022/radix-ng-primitives-field.mjs +76 -50
  45. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-fieldset.mjs +8 -7
  47. package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +77 -40
  49. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -1
  50. package/fesm2022/radix-ng-primitives-focus-guards.mjs +3 -3
  51. package/fesm2022/radix-ng-primitives-focus-scope.mjs +7 -5
  52. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  53. package/fesm2022/radix-ng-primitives-form.mjs +26 -17
  54. package/fesm2022/radix-ng-primitives-form.mjs.map +1 -1
  55. package/fesm2022/radix-ng-primitives-input.mjs +41 -22
  56. package/fesm2022/radix-ng-primitives-input.mjs.map +1 -1
  57. package/fesm2022/radix-ng-primitives-label.mjs +11 -8
  58. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  59. package/fesm2022/radix-ng-primitives-menu.mjs +274 -154
  60. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  61. package/fesm2022/radix-ng-primitives-menubar.mjs +35 -17
  62. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  63. package/fesm2022/radix-ng-primitives-meter.mjs +41 -30
  64. package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -1
  65. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +220 -183
  66. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  67. package/fesm2022/radix-ng-primitives-number-field.mjs +93 -61
  68. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  69. package/fesm2022/radix-ng-primitives-pagination.mjs +48 -38
  70. package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
  71. package/fesm2022/radix-ng-primitives-popover.mjs +150 -107
  72. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  73. package/fesm2022/radix-ng-primitives-popper.mjs +79 -47
  74. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  75. package/fesm2022/radix-ng-primitives-portal.mjs +20 -13
  76. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  77. package/fesm2022/radix-ng-primitives-presence.mjs +3 -3
  78. package/fesm2022/radix-ng-primitives-preview-card.mjs +119 -74
  79. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
  80. package/fesm2022/radix-ng-primitives-progress.mjs +73 -46
  81. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  82. package/fesm2022/radix-ng-primitives-radio.mjs +58 -40
  83. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  84. package/fesm2022/radix-ng-primitives-scroll-area.mjs +57 -41
  85. package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
  86. package/fesm2022/radix-ng-primitives-select.mjs +595 -102
  87. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  88. package/fesm2022/radix-ng-primitives-separator.mjs +11 -15
  89. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  90. package/fesm2022/radix-ng-primitives-slider.mjs +101 -64
  91. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  92. package/fesm2022/radix-ng-primitives-stepper.mjs +53 -39
  93. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  94. package/fesm2022/radix-ng-primitives-switch.mjs +25 -20
  95. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  96. package/fesm2022/radix-ng-primitives-tabs.mjs +76 -51
  97. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  98. package/fesm2022/radix-ng-primitives-time-field.mjs +72 -41
  99. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  100. package/fesm2022/radix-ng-primitives-toast.mjs +75 -56
  101. package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
  102. package/fesm2022/radix-ng-primitives-toggle-group.mjs +39 -23
  103. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  104. package/fesm2022/radix-ng-primitives-toggle.mjs +36 -36
  105. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  106. package/fesm2022/radix-ng-primitives-toolbar.mjs +52 -31
  107. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  108. package/fesm2022/radix-ng-primitives-tooltip.mjs +118 -63
  109. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  110. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +31 -20
  111. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
  112. package/package.json +2 -2
  113. package/types/radix-ng-primitives-accordion.d.ts +1 -0
  114. package/types/radix-ng-primitives-aspect-ratio.d.ts +10 -23
  115. package/types/radix-ng-primitives-autocomplete.d.ts +3 -1
  116. package/types/radix-ng-primitives-avatar.d.ts +51 -25
  117. package/types/radix-ng-primitives-checkbox.d.ts +26 -98
  118. package/types/radix-ng-primitives-combobox.d.ts +28 -9
  119. package/types/radix-ng-primitives-context-menu.d.ts +2 -0
  120. package/types/radix-ng-primitives-dialog.d.ts +6 -3
  121. package/types/radix-ng-primitives-field.d.ts +33 -207
  122. package/types/radix-ng-primitives-floating-focus-manager.d.ts +11 -0
  123. package/types/radix-ng-primitives-form.d.ts +24 -33
  124. package/types/radix-ng-primitives-label.d.ts +3 -2
  125. package/types/radix-ng-primitives-menu.d.ts +47 -15
  126. package/types/radix-ng-primitives-menubar.d.ts +6 -1
  127. package/types/radix-ng-primitives-navigation-menu.d.ts +8 -6
  128. package/types/radix-ng-primitives-number-field.d.ts +1 -1
  129. package/types/radix-ng-primitives-popover.d.ts +12 -4
  130. package/types/radix-ng-primitives-preview-card.d.ts +18 -5
  131. package/types/radix-ng-primitives-progress.d.ts +59 -121
  132. package/types/radix-ng-primitives-radio.d.ts +0 -1
  133. package/types/radix-ng-primitives-select.d.ts +186 -391
  134. package/types/radix-ng-primitives-separator.d.ts +0 -7
  135. package/types/radix-ng-primitives-toggle-group.d.ts +7 -3
  136. package/types/radix-ng-primitives-toggle.d.ts +8 -8
  137. package/types/radix-ng-primitives-toolbar.d.ts +2 -0
  138. package/types/radix-ng-primitives-tooltip.d.ts +17 -3
@@ -4,8 +4,6 @@ import * as i1 from '@radix-ng/primitives/composite';
4
4
  import { RdxCompositeItem } from '@radix-ng/primitives/composite';
5
5
  import { rdxDevWarning, createCancelableChangeEventDetails } from '@radix-ng/primitives/core';
6
6
  import { injectToggleGroupContext } from '@radix-ng/primitives/toggle-group';
7
- import * as i1$1 from '@radix-ng/primitives/visually-hidden';
8
- import { RdxVisuallyHiddenInputBubbleDirective } from '@radix-ng/primitives/visually-hidden';
9
7
 
10
8
  /**
11
9
  * A two-state button that can be either on (pressed) or off.
@@ -22,7 +20,8 @@ class RdxToggle {
22
20
  /**
23
21
  * A value identifying this toggle inside a `[rdxToggleGroup]`. Required when used in a group.
24
22
  */
25
- this.value = input(...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
23
+ this.value = input(/* @ts-ignore */
24
+ ...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
26
25
  /**
27
26
  * The pressed state when initially rendered (uncontrolled, standalone only).
28
27
  *
@@ -32,7 +31,8 @@ class RdxToggle {
32
31
  /**
33
32
  * The controlled pressed state (standalone). Use with `(onPressedChange)` or two-way `[(pressed)]`.
34
33
  */
35
- this.pressed = model(undefined, ...(ngDevMode ? [{ debugName: "pressed" }] : /* istanbul ignore next */ []));
34
+ this.pressed = model(undefined, /* @ts-ignore */
35
+ ...(ngDevMode ? [{ debugName: "pressed" }] : /* istanbul ignore next */ []));
36
36
  /**
37
37
  * Whether the toggle is disabled.
38
38
  *
@@ -48,7 +48,8 @@ class RdxToggle {
48
48
  this.nativeButton = input(true, { ...(ngDevMode ? { debugName: "nativeButton" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
49
49
  /** Event emitted when the pressed state changes (standalone). */
50
50
  this.onPressedChange = output();
51
- this.internalPressed = linkedSignal(() => this.pressed() ?? this.defaultPressed(), ...(ngDevMode ? [{ debugName: "internalPressed" }] : /* istanbul ignore next */ []));
51
+ this.internalPressed = linkedSignal(() => this.pressed() ?? this.defaultPressed(), /* @ts-ignore */
52
+ ...(ngDevMode ? [{ debugName: "internalPressed" }] : /* istanbul ignore next */ []));
52
53
  /** @ignore Whether the toggle is currently pressed (from the group when grouped). */
53
54
  this.pressedState = computed(() => {
54
55
  if (this.group) {
@@ -56,9 +57,11 @@ class RdxToggle {
56
57
  return value !== undefined && this.group.value().includes(value);
57
58
  }
58
59
  return this.internalPressed();
59
- }, ...(ngDevMode ? [{ debugName: "pressedState" }] : /* istanbul ignore next */ []));
60
+ }, /* @ts-ignore */
61
+ ...(ngDevMode ? [{ debugName: "pressedState" }] : /* istanbul ignore next */ []));
60
62
  /** @ignore */
61
- this.isDisabled = computed(() => this.disabled() || (this.group?.disabled() ?? false), ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
63
+ this.isDisabled = computed(() => this.disabled() || (this.group?.disabled() ?? false), /* @ts-ignore */
64
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
62
65
  effect(() => {
63
66
  if (this.group && this.value() === undefined && this.group.isValueInitialized()) {
64
67
  rdxDevWarning('toggle-group/missing-toggle-value', '`rdxToggle` is inside a toggle group but has no `value`. Add a stable `value` so the group can derive and update its pressed state.', 'components/toggle-group');
@@ -87,7 +90,7 @@ class RdxToggle {
87
90
  if (eventDetails.isCanceled()) {
88
91
  return;
89
92
  }
90
- this.group.toggle(value, event, eventDetails);
93
+ this.group.toggle(value, next, event, eventDetails);
91
94
  }
92
95
  return;
93
96
  }
@@ -101,20 +104,37 @@ class RdxToggle {
101
104
  this.internalPressed.set(next);
102
105
  this.pressed.set(next);
103
106
  }
104
- /** @ignore */
107
+ /**
108
+ * @ignore
109
+ * Non-native hosts emulate a native `<button>` (Base UI `useButton`): Enter activates on keydown,
110
+ * Space is `preventDefault`-ed on keydown (to suppress page scroll) and activates on keyup.
111
+ */
105
112
  onKeyDown(event) {
106
113
  if (this.nativeButton()) {
107
114
  return;
108
115
  }
109
- if (event.key === ' ' || event.key === 'Enter') {
116
+ if (event.key === 'Enter' && !event.repeat) {
110
117
  event.preventDefault();
111
118
  this.onClick(event);
112
119
  }
120
+ else if (event.key === ' ') {
121
+ event.preventDefault();
122
+ }
113
123
  }
114
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToggle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
115
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxToggle, isStandalone: true, selector: "[rdxToggle]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultPressed: { classPropertyName: "defaultPressed", publicName: "defaultPressed", isSignal: true, isRequired: false, transformFunction: null }, pressed: { classPropertyName: "pressed", publicName: "pressed", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, nativeButton: { classPropertyName: "nativeButton", publicName: "nativeButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pressed: "pressedChange", onPressedChange: "onPressedChange" }, host: { listeners: { "click": "onClick($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.type": "nativeButton() ? \"button\" : undefined", "attr.role": "nativeButton() ? undefined : \"button\"", "attr.aria-pressed": "pressedState()", "attr.data-composite-item-active": "pressedState() ? \"\" : undefined", "attr.data-pressed": "pressedState() ? \"\" : undefined", "attr.data-disabled": "isDisabled() ? \"\" : undefined", "attr.disabled": "nativeButton() && isDisabled() ? \"\" : undefined", "attr.aria-disabled": "!nativeButton() && isDisabled() ? \"true\" : undefined" } }, exportAs: ["rdxToggle"], hostDirectives: [{ directive: i1.RdxCompositeItem }], ngImport: i0 }); }
124
+ /** @ignore Space activates on keyup for non-native hosts (native-button semantics). */
125
+ onKeyUp(event) {
126
+ if (this.nativeButton()) {
127
+ return;
128
+ }
129
+ if (event.key === ' ') {
130
+ event.preventDefault();
131
+ this.onClick(event);
132
+ }
133
+ }
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToggle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
135
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxToggle, isStandalone: true, selector: "[rdxToggle]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultPressed: { classPropertyName: "defaultPressed", publicName: "defaultPressed", isSignal: true, isRequired: false, transformFunction: null }, pressed: { classPropertyName: "pressed", publicName: "pressed", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, nativeButton: { classPropertyName: "nativeButton", publicName: "nativeButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pressed: "pressedChange", onPressedChange: "onPressedChange" }, host: { listeners: { "click": "onClick($event)", "keydown": "onKeyDown($event)", "keyup": "onKeyUp($event)" }, properties: { "attr.type": "nativeButton() ? \"button\" : undefined", "attr.role": "nativeButton() ? undefined : \"button\"", "attr.aria-pressed": "pressedState()", "attr.data-composite-item-active": "pressedState() ? \"\" : undefined", "attr.data-pressed": "pressedState() ? \"\" : undefined", "attr.data-disabled": "isDisabled() ? \"\" : undefined", "attr.disabled": "nativeButton() && isDisabled() ? \"\" : undefined", "attr.aria-disabled": "!nativeButton() && isDisabled() ? \"true\" : undefined" } }, exportAs: ["rdxToggle"], hostDirectives: [{ directive: i1.RdxCompositeItem }], ngImport: i0 }); }
116
136
  }
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToggle, decorators: [{
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToggle, decorators: [{
118
138
  type: Directive,
119
139
  args: [{
120
140
  selector: '[rdxToggle]',
@@ -130,35 +150,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
130
150
  '[attr.disabled]': 'nativeButton() && isDisabled() ? "" : undefined',
131
151
  '[attr.aria-disabled]': '!nativeButton() && isDisabled() ? "true" : undefined',
132
152
  '(click)': 'onClick($event)',
133
- '(keydown)': 'onKeyDown($event)'
153
+ '(keydown)': 'onKeyDown($event)',
154
+ '(keyup)': 'onKeyUp($event)'
134
155
  }
135
156
  }]
136
157
  }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], defaultPressed: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultPressed", required: false }] }], pressed: [{ type: i0.Input, args: [{ isSignal: true, alias: "pressed", required: false }] }, { type: i0.Output, args: ["pressedChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], nativeButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "nativeButton", required: false }] }], onPressedChange: [{ type: i0.Output, args: ["onPressedChange"] }] } });
137
158
 
138
- class RdxToggleVisuallyHiddenInputDirective {
139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToggleVisuallyHiddenInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
140
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxToggleVisuallyHiddenInputDirective, isStandalone: true, selector: "input[rdxToggleVisuallyHiddenInput]", host: { attributes: { "type": "checkbox" } }, exportAs: ["rdxToggleVisuallyHiddenInput"], hostDirectives: [{ directive: i1$1.RdxVisuallyHiddenInputBubbleDirective, inputs: ["name", "name", "required", "required", "value", "value", "disabled", "disabled"] }], ngImport: i0 }); }
141
- }
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToggleVisuallyHiddenInputDirective, decorators: [{
143
- type: Directive,
144
- args: [{
145
- selector: 'input[rdxToggleVisuallyHiddenInput]',
146
- exportAs: 'rdxToggleVisuallyHiddenInput',
147
- hostDirectives: [
148
- {
149
- directive: RdxVisuallyHiddenInputBubbleDirective,
150
- inputs: ['name', 'required', 'value', 'disabled']
151
- }
152
- ],
153
- host: {
154
- type: 'checkbox'
155
- }
156
- }]
157
- }] });
158
-
159
159
  /**
160
160
  * Generated bundle index. Do not edit.
161
161
  */
162
162
 
163
- export { RdxToggle, RdxToggleVisuallyHiddenInputDirective };
163
+ export { RdxToggle };
164
164
  //# sourceMappingURL=radix-ng-primitives-toggle.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-toggle.mjs","sources":["../../../packages/primitives/toggle/src/toggle.ts","../../../packages/primitives/toggle/src/toggle-visually-hidden-input.directive.ts","../../../packages/primitives/toggle/radix-ng-primitives-toggle.ts"],"sourcesContent":["import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n input,\n linkedSignal,\n model,\n output\n} from '@angular/core';\nimport { RdxCompositeItem } from '@radix-ng/primitives/composite';\nimport {\n BooleanInput,\n createCancelableChangeEventDetails,\n RdxCancelableChangeEventDetails,\n rdxDevWarning\n} from '@radix-ng/primitives/core';\nimport { injectToggleGroupContext } from '@radix-ng/primitives/toggle-group';\n\nexport type RdxTogglePressedChangeReason = 'none';\nexport type RdxTogglePressedChangeEventDetails = RdxCancelableChangeEventDetails<RdxTogglePressedChangeReason>;\n\nexport interface RdxTogglePressedChangeEvent {\n pressed: boolean;\n eventDetails: RdxTogglePressedChangeEventDetails;\n}\n\n/**\n * A two-state button that can be either on (pressed) or off.\n *\n * Works standalone or as an item of a `[rdxToggleGroup]`: inside a group it derives its pressed\n * state from the group's value (matched by `value`) and participates in the group's composite focus.\n *\n * @see https://base-ui.com/react/components/toggle\n */\n@Directive({\n selector: '[rdxToggle]',\n exportAs: 'rdxToggle',\n hostDirectives: [RdxCompositeItem],\n host: {\n '[attr.type]': 'nativeButton() ? \"button\" : undefined',\n '[attr.role]': 'nativeButton() ? undefined : \"button\"',\n '[attr.aria-pressed]': 'pressedState()',\n '[attr.data-composite-item-active]': 'pressedState() ? \"\" : undefined',\n '[attr.data-pressed]': 'pressedState() ? \"\" : undefined',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.disabled]': 'nativeButton() && isDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': '!nativeButton() && isDisabled() ? \"true\" : undefined',\n '(click)': 'onClick($event)',\n '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class RdxToggle {\n private readonly group = injectToggleGroupContext(true);\n private readonly compositeItem = inject(RdxCompositeItem, { self: true });\n\n /**\n * A value identifying this toggle inside a `[rdxToggleGroup]`. Required when used in a group.\n */\n readonly value = input<string>();\n\n /**\n * The pressed state when initially rendered (uncontrolled, standalone only).\n *\n * @default false\n */\n readonly defaultPressed = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * The controlled pressed state (standalone). Use with `(onPressedChange)` or two-way `[(pressed)]`.\n */\n readonly pressed = model<boolean | undefined>(undefined);\n\n /**\n * Whether the toggle is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the host is a native `<button>`. When `false`, the toggle adds `role=\"button\"` and\n * handles Enter/Space itself.\n *\n * @default true\n */\n readonly nativeButton = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** Event emitted when the pressed state changes (standalone). */\n readonly onPressedChange = output<RdxTogglePressedChangeEvent>();\n\n private readonly internalPressed = linkedSignal(() => this.pressed() ?? this.defaultPressed());\n\n /** @ignore Whether the toggle is currently pressed (from the group when grouped). */\n readonly pressedState = computed(() => {\n if (this.group) {\n const value = this.value();\n return value !== undefined && this.group.value().includes(value);\n }\n return this.internalPressed();\n });\n\n /** @ignore */\n readonly isDisabled = computed(() => this.disabled() || (this.group?.disabled() ?? false));\n\n constructor() {\n effect(() => {\n if (this.group && this.value() === undefined && this.group.isValueInitialized()) {\n rdxDevWarning(\n 'toggle-group/missing-toggle-value',\n '`rdxToggle` is inside a toggle group but has no `value`. Add a stable `value` so the group can derive and update its pressed state.',\n 'components/toggle-group'\n );\n }\n });\n effect(() => {\n this.compositeItem.setMetadata({\n disabled: this.isDisabled(),\n focusableWhenDisabled: false,\n value: this.value()\n });\n });\n }\n\n /** @ignore */\n protected onClick(event?: Event): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.group) {\n const value = this.value();\n if (value !== undefined) {\n const next = !this.pressedState();\n const trigger = event?.currentTarget instanceof HTMLElement ? event.currentTarget : undefined;\n const { eventDetails } = createCancelableChangeEventDetails(\n 'none',\n event ?? new Event('toggle.pressed-change'),\n trigger\n );\n this.onPressedChange.emit({ pressed: next, eventDetails });\n if (eventDetails.isCanceled()) {\n return;\n }\n\n this.group.toggle(value, event, eventDetails);\n }\n return;\n }\n\n const next = !this.internalPressed();\n const trigger = event?.currentTarget instanceof HTMLElement ? event.currentTarget : undefined;\n const { eventDetails } = createCancelableChangeEventDetails(\n 'none',\n event ?? new Event('toggle.pressed-change'),\n trigger\n );\n this.onPressedChange.emit({ pressed: next, eventDetails });\n if (eventDetails.isCanceled()) {\n return;\n }\n\n this.internalPressed.set(next);\n this.pressed.set(next);\n }\n\n /** @ignore */\n protected onKeyDown(event: KeyboardEvent): void {\n if (this.nativeButton()) {\n return;\n }\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.onClick(event);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { RdxVisuallyHiddenInputBubbleDirective } from '@radix-ng/primitives/visually-hidden';\n\n@Directive({\n selector: 'input[rdxToggleVisuallyHiddenInput]',\n exportAs: 'rdxToggleVisuallyHiddenInput',\n hostDirectives: [\n {\n directive: RdxVisuallyHiddenInputBubbleDirective,\n inputs: ['name', 'required', 'value', 'disabled']\n }\n ],\n host: {\n type: 'checkbox'\n }\n})\nexport class RdxToggleVisuallyHiddenInputDirective {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-toggle.mjs","sources":["../../../packages/primitives/toggle/src/toggle.ts","../../../packages/primitives/toggle/radix-ng-primitives-toggle.ts"],"sourcesContent":["import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n input,\n linkedSignal,\n model,\n output\n} from '@angular/core';\nimport { RdxCompositeItem } from '@radix-ng/primitives/composite';\nimport {\n BooleanInput,\n createCancelableChangeEventDetails,\n RdxCancelableChangeEventDetails,\n rdxDevWarning\n} from '@radix-ng/primitives/core';\nimport { injectToggleGroupContext } from '@radix-ng/primitives/toggle-group';\n\nexport type RdxTogglePressedChangeReason = 'none';\nexport type RdxTogglePressedChangeEventDetails = RdxCancelableChangeEventDetails<RdxTogglePressedChangeReason>;\n\nexport interface RdxTogglePressedChangeEvent {\n pressed: boolean;\n eventDetails: RdxTogglePressedChangeEventDetails;\n}\n\n/**\n * A two-state button that can be either on (pressed) or off.\n *\n * Works standalone or as an item of a `[rdxToggleGroup]`: inside a group it derives its pressed\n * state from the group's value (matched by `value`) and participates in the group's composite focus.\n *\n * @see https://base-ui.com/react/components/toggle\n */\n@Directive({\n selector: '[rdxToggle]',\n exportAs: 'rdxToggle',\n hostDirectives: [RdxCompositeItem],\n host: {\n '[attr.type]': 'nativeButton() ? \"button\" : undefined',\n '[attr.role]': 'nativeButton() ? undefined : \"button\"',\n '[attr.aria-pressed]': 'pressedState()',\n '[attr.data-composite-item-active]': 'pressedState() ? \"\" : undefined',\n '[attr.data-pressed]': 'pressedState() ? \"\" : undefined',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.disabled]': 'nativeButton() && isDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': '!nativeButton() && isDisabled() ? \"true\" : undefined',\n '(click)': 'onClick($event)',\n '(keydown)': 'onKeyDown($event)',\n '(keyup)': 'onKeyUp($event)'\n }\n})\nexport class RdxToggle {\n private readonly group = injectToggleGroupContext(true);\n private readonly compositeItem = inject(RdxCompositeItem, { self: true });\n\n /**\n * A value identifying this toggle inside a `[rdxToggleGroup]`. Required when used in a group.\n */\n readonly value = input<string>();\n\n /**\n * The pressed state when initially rendered (uncontrolled, standalone only).\n *\n * @default false\n */\n readonly defaultPressed = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * The controlled pressed state (standalone). Use with `(onPressedChange)` or two-way `[(pressed)]`.\n */\n readonly pressed = model<boolean | undefined>(undefined);\n\n /**\n * Whether the toggle is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the host is a native `<button>`. When `false`, the toggle adds `role=\"button\"` and\n * handles Enter/Space itself.\n *\n * @default true\n */\n readonly nativeButton = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** Event emitted when the pressed state changes (standalone). */\n readonly onPressedChange = output<RdxTogglePressedChangeEvent>();\n\n private readonly internalPressed = linkedSignal(() => this.pressed() ?? this.defaultPressed());\n\n /** @ignore Whether the toggle is currently pressed (from the group when grouped). */\n readonly pressedState = computed(() => {\n if (this.group) {\n const value = this.value();\n return value !== undefined && this.group.value().includes(value);\n }\n return this.internalPressed();\n });\n\n /** @ignore */\n readonly isDisabled = computed(() => this.disabled() || (this.group?.disabled() ?? false));\n\n constructor() {\n effect(() => {\n if (this.group && this.value() === undefined && this.group.isValueInitialized()) {\n rdxDevWarning(\n 'toggle-group/missing-toggle-value',\n '`rdxToggle` is inside a toggle group but has no `value`. Add a stable `value` so the group can derive and update its pressed state.',\n 'components/toggle-group'\n );\n }\n });\n effect(() => {\n this.compositeItem.setMetadata({\n disabled: this.isDisabled(),\n focusableWhenDisabled: false,\n value: this.value()\n });\n });\n }\n\n /** @ignore */\n protected onClick(event?: Event): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.group) {\n const value = this.value();\n if (value !== undefined) {\n const next = !this.pressedState();\n const trigger = event?.currentTarget instanceof HTMLElement ? event.currentTarget : undefined;\n const { eventDetails } = createCancelableChangeEventDetails(\n 'none',\n event ?? new Event('toggle.pressed-change'),\n trigger\n );\n this.onPressedChange.emit({ pressed: next, eventDetails });\n if (eventDetails.isCanceled()) {\n return;\n }\n\n this.group.toggle(value, next, event, eventDetails);\n }\n return;\n }\n\n const next = !this.internalPressed();\n const trigger = event?.currentTarget instanceof HTMLElement ? event.currentTarget : undefined;\n const { eventDetails } = createCancelableChangeEventDetails(\n 'none',\n event ?? new Event('toggle.pressed-change'),\n trigger\n );\n this.onPressedChange.emit({ pressed: next, eventDetails });\n if (eventDetails.isCanceled()) {\n return;\n }\n\n this.internalPressed.set(next);\n this.pressed.set(next);\n }\n\n /**\n * @ignore\n * Non-native hosts emulate a native `<button>` (Base UI `useButton`): Enter activates on keydown,\n * Space is `preventDefault`-ed on keydown (to suppress page scroll) and activates on keyup.\n */\n protected onKeyDown(event: KeyboardEvent): void {\n if (this.nativeButton()) {\n return;\n }\n if (event.key === 'Enter' && !event.repeat) {\n event.preventDefault();\n this.onClick(event);\n } else if (event.key === ' ') {\n event.preventDefault();\n }\n }\n\n /** @ignore Space activates on keyup for non-native hosts (native-button semantics). */\n protected onKeyUp(event: KeyboardEvent): void {\n if (this.nativeButton()) {\n return;\n }\n if (event.key === ' ') {\n event.preventDefault();\n this.onClick(event);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -41,7 +41,8 @@ class RdxToolbarButton {
41
41
  */
42
42
  this.nativeButton = input(true, { ...(ngDevMode ? { debugName: "nativeButton" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
43
43
  /** @ignore Effective disabled state, combining the button, group and toolbar. */
44
- this.isDisabled = computed(() => this.disabled() || (this.groupContext?.disabled() ?? false) || this.rootContext.disabled(), ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
44
+ this.isDisabled = computed(() => this.disabled() || (this.groupContext?.disabled() ?? false) || this.rootContext.disabled(), /* @ts-ignore */
45
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
45
46
  effect(() => {
46
47
  this.compositeItem.setMetadata({
47
48
  disabled: this.isDisabled(),
@@ -56,10 +57,10 @@ class RdxToolbarButton {
56
57
  event.stopImmediatePropagation();
57
58
  }
58
59
  }
59
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarButton, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
60
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxToolbarButton, isStandalone: true, selector: "[rdxToolbarButton]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, focusableWhenDisabled: { classPropertyName: "focusableWhenDisabled", publicName: "focusableWhenDisabled", isSignal: true, isRequired: false, transformFunction: null }, nativeButton: { classPropertyName: "nativeButton", publicName: "nativeButton", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick($event)" }, properties: { "attr.type": "nativeButton() ? \"button\" : undefined", "attr.role": "nativeButton() ? undefined : \"button\"", "attr.data-orientation": "rootContext.orientation()", "attr.data-disabled": "isDisabled() ? \"\" : undefined", "attr.data-focusable": "focusableWhenDisabled() ? \"\" : undefined", "attr.aria-disabled": "isDisabled() ? \"true\" : undefined", "attr.disabled": "isDisabled() && !focusableWhenDisabled() ? \"\" : undefined" } }, exportAs: ["rdxToolbarButton"], hostDirectives: [{ directive: i1.RdxCompositeItem }], ngImport: i0 }); }
60
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarButton, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
61
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxToolbarButton, isStandalone: true, selector: "[rdxToolbarButton]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, focusableWhenDisabled: { classPropertyName: "focusableWhenDisabled", publicName: "focusableWhenDisabled", isSignal: true, isRequired: false, transformFunction: null }, nativeButton: { classPropertyName: "nativeButton", publicName: "nativeButton", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick($event)" }, properties: { "attr.type": "nativeButton() ? \"button\" : undefined", "attr.role": "nativeButton() ? undefined : \"button\"", "attr.data-orientation": "rootContext.orientation()", "attr.data-disabled": "isDisabled() ? \"\" : undefined", "attr.data-focusable": "focusableWhenDisabled() ? \"\" : undefined", "attr.aria-disabled": "isDisabled() ? \"true\" : undefined", "attr.disabled": "isDisabled() && !focusableWhenDisabled() ? \"\" : undefined" } }, exportAs: ["rdxToolbarButton"], hostDirectives: [{ directive: i1.RdxCompositeItem }], ngImport: i0 }); }
61
62
  }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarButton, decorators: [{
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarButton, decorators: [{
63
64
  type: Directive,
64
65
  args: [{
65
66
  selector: '[rdxToolbarButton]',
@@ -97,12 +98,13 @@ class RdxToolbarGroup {
97
98
  */
98
99
  this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
99
100
  /** @ignore Effective disabled state, combining the group and the toolbar. */
100
- this.isDisabled = computed(() => this.disabled() || this.rootContext.disabled(), ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
101
+ this.isDisabled = computed(() => this.disabled() || this.rootContext.disabled(), /* @ts-ignore */
102
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
101
103
  }
102
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
103
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxToolbarGroup, isStandalone: true, selector: "[rdxToolbarGroup]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "group" }, properties: { "attr.data-orientation": "rootContext.orientation()", "attr.data-disabled": "isDisabled() ? \"\" : undefined" } }, providers: [provideToolbarGroupContext(groupContext)], exportAs: ["rdxToolbarGroup"], ngImport: i0 }); }
104
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
105
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxToolbarGroup, isStandalone: true, selector: "[rdxToolbarGroup]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "group" }, properties: { "attr.data-orientation": "rootContext.orientation()", "attr.data-disabled": "isDisabled() ? \"\" : undefined" } }, providers: [provideToolbarGroupContext(groupContext)], exportAs: ["rdxToolbarGroup"], ngImport: i0 }); }
104
106
  }
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarGroup, decorators: [{
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarGroup, decorators: [{
106
108
  type: Directive,
107
109
  args: [{
108
110
  selector: '[rdxToolbarGroup]',
@@ -131,7 +133,8 @@ class RdxToolbarInput {
131
133
  this.elementRef = inject(ElementRef);
132
134
  this.isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
133
135
  /** The initial value of the uncontrolled input. */
134
- this.defaultValue = input(...(ngDevMode ? [undefined, { debugName: "defaultValue" }] : /* istanbul ignore next */ []));
136
+ this.defaultValue = input(/* @ts-ignore */
137
+ ...(ngDevMode ? [undefined, { debugName: "defaultValue" }] : /* istanbul ignore next */ []));
135
138
  /**
136
139
  * Whether the input is disabled.
137
140
  *
@@ -145,7 +148,8 @@ class RdxToolbarInput {
145
148
  */
146
149
  this.focusableWhenDisabled = input(true, { ...(ngDevMode ? { debugName: "focusableWhenDisabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
147
150
  /** @ignore */
148
- this.isDisabled = computed(() => this.disabled() || (this.groupContext?.disabled() ?? false) || this.rootContext.disabled(), ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
151
+ this.isDisabled = computed(() => this.disabled() || (this.groupContext?.disabled() ?? false) || this.rootContext.disabled(), /* @ts-ignore */
152
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
149
153
  this.appliedDefault = false;
150
154
  effect(() => {
151
155
  this.compositeItem.setMetadata({
@@ -171,6 +175,13 @@ class RdxToolbarInput {
171
175
  inject(DestroyRef).onDestroy(() => element.removeEventListener('keydown', handler, { capture: true }));
172
176
  }
173
177
  }
178
+ /** @ignore Block pointer interaction while disabled (Base UI input `defaultProps`). */
179
+ onInteraction(event) {
180
+ if (this.isDisabled()) {
181
+ event.preventDefault();
182
+ event.stopImmediatePropagation();
183
+ }
184
+ }
174
185
  handleCaretKeydown(event) {
175
186
  if (event.defaultPrevented || event.metaKey || event.ctrlKey || event.altKey) {
176
187
  return;
@@ -209,10 +220,10 @@ class RdxToolbarInput {
209
220
  event.stopImmediatePropagation();
210
221
  }
211
222
  }
212
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
213
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxToolbarInput, isStandalone: true, selector: "input[rdxToolbarInput]", inputs: { defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, focusableWhenDisabled: { classPropertyName: "focusableWhenDisabled", publicName: "focusableWhenDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-orientation": "rootContext.orientation()", "attr.data-disabled": "isDisabled() ? \"\" : undefined", "attr.data-focusable": "focusableWhenDisabled() ? \"\" : undefined", "attr.aria-disabled": "isDisabled() ? \"true\" : undefined", "disabled": "isDisabled() && !focusableWhenDisabled()" } }, exportAs: ["rdxToolbarInput"], hostDirectives: [{ directive: i1.RdxCompositeItem }], ngImport: i0 }); }
223
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
224
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxToolbarInput, isStandalone: true, selector: "input[rdxToolbarInput]", inputs: { defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, focusableWhenDisabled: { classPropertyName: "focusableWhenDisabled", publicName: "focusableWhenDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onInteraction($event)", "pointerdown": "onInteraction($event)" }, properties: { "attr.data-orientation": "rootContext.orientation()", "attr.data-disabled": "isDisabled() ? \"\" : undefined", "attr.data-focusable": "focusableWhenDisabled() ? \"\" : undefined", "attr.aria-disabled": "isDisabled() ? \"true\" : undefined" } }, exportAs: ["rdxToolbarInput"], hostDirectives: [{ directive: i1.RdxCompositeItem }], ngImport: i0 }); }
214
225
  }
215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarInput, decorators: [{
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarInput, decorators: [{
216
227
  type: Directive,
217
228
  args: [{
218
229
  selector: 'input[rdxToolbarInput]',
@@ -222,8 +233,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
222
233
  '[attr.data-orientation]': 'rootContext.orientation()',
223
234
  '[attr.data-disabled]': 'isDisabled() ? "" : undefined',
224
235
  '[attr.data-focusable]': 'focusableWhenDisabled() ? "" : undefined',
236
+ // The host is always a native `<input>` (selector-pinned), i.e. not a native button, so it
237
+ // conveys disabled via `aria-disabled` only — never the native `disabled` attribute, which would
238
+ // drop a disabled-but-focusable item out of the roving tab order. Roving removal for
239
+ // non-focusable-when-disabled inputs goes through the composite root's `disabledIndices` (driven
240
+ // by the metadata below); pointer interaction is blocked in `onInteraction`.
225
241
  '[attr.aria-disabled]': 'isDisabled() ? "true" : undefined',
226
- '[disabled]': 'isDisabled() && !focusableWhenDisabled()'
242
+ '(click)': 'onInteraction($event)',
243
+ '(pointerdown)': 'onInteraction($event)'
227
244
  }
228
245
  }]
229
246
  }], ctorParameters: () => [], propDecorators: { defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], focusableWhenDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusableWhenDisabled", required: false }] }] } });
@@ -243,10 +260,10 @@ class RdxToolbarLink {
243
260
  this.compositeItem = inject(RdxCompositeItem, { self: true });
244
261
  this.compositeItem.setMetadata(TOOLBAR_LINK_METADATA);
245
262
  }
246
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarLink, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
247
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxToolbarLink, isStandalone: true, selector: "[rdxToolbarLink]", host: { properties: { "attr.data-orientation": "rootContext.orientation()" } }, exportAs: ["rdxToolbarLink"], hostDirectives: [{ directive: i1.RdxCompositeItem }], ngImport: i0 }); }
263
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarLink, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
264
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxToolbarLink, isStandalone: true, selector: "[rdxToolbarLink]", host: { properties: { "attr.data-orientation": "rootContext.orientation()" } }, exportAs: ["rdxToolbarLink"], hostDirectives: [{ directive: i1.RdxCompositeItem }], ngImport: i0 }); }
248
265
  }
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarLink, decorators: [{
266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarLink, decorators: [{
250
267
  type: Directive,
251
268
  args: [{
252
269
  selector: '[rdxToolbarLink]',
@@ -278,7 +295,8 @@ class RdxToolbarRoot {
278
295
  *
279
296
  * @default 'horizontal'
280
297
  */
281
- this.orientation = input('horizontal', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
298
+ this.orientation = input('horizontal', /* @ts-ignore */
299
+ ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
282
300
  /** Text direction for arrow-key navigation. */
283
301
  this.dirInput = input(undefined, { ...(ngDevMode ? { debugName: "dirInput" } : /* istanbul ignore next */ {}), alias: 'dir' });
284
302
  this.dir = injectDirection(this.dirInput);
@@ -295,10 +313,12 @@ class RdxToolbarRoot {
295
313
  */
296
314
  this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
297
315
  this.compositeRoot = inject(RdxCompositeRoot, { self: true });
298
- this.itemMetadata = computed(() => Array.from(this.compositeRoot.itemMap().values()).filter(isToolbarItemMetadata), ...(ngDevMode ? [{ debugName: "itemMetadata" }] : /* istanbul ignore next */ []));
316
+ this.itemMetadata = computed(() => Array.from(this.compositeRoot.itemMap().values()).filter(isToolbarItemMetadata), /* @ts-ignore */
317
+ ...(ngDevMode ? [{ debugName: "itemMetadata" }] : /* istanbul ignore next */ []));
299
318
  this.disabledIndices = computed(() => this.itemMetadata()
300
319
  .filter((metadata) => metadata.disabled && !metadata.focusableWhenDisabled)
301
- .map((metadata) => metadata.index), ...(ngDevMode ? [{ debugName: "disabledIndices" }] : /* istanbul ignore next */ []));
320
+ .map((metadata) => metadata.index), /* @ts-ignore */
321
+ ...(ngDevMode ? [{ debugName: "disabledIndices" }] : /* istanbul ignore next */ []));
302
322
  effect(() => {
303
323
  this.compositeRoot.setOrientation(this.orientation());
304
324
  this.compositeRoot.setDir(this.dir());
@@ -309,10 +329,10 @@ class RdxToolbarRoot {
309
329
  this.compositeRoot.setDisabledIndices(this.disabledIndices());
310
330
  });
311
331
  }
312
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
313
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxToolbarRoot, isStandalone: true, selector: "[rdxToolbarRoot]", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, dirInput: { classPropertyName: "dirInput", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, loopFocus: { classPropertyName: "loopFocus", publicName: "loopFocus", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "toolbar" }, properties: { "attr.aria-orientation": "orientation()", "attr.data-orientation": "orientation()", "attr.data-disabled": "disabled() ? \"\" : undefined" } }, providers: [provideToolbarRootContext(rootContext)], exportAs: ["rdxToolbarRoot"], hostDirectives: [{ directive: i1.RdxCompositeRoot }], ngImport: i0 }); }
332
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
333
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxToolbarRoot, isStandalone: true, selector: "[rdxToolbarRoot]", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, dirInput: { classPropertyName: "dirInput", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, loopFocus: { classPropertyName: "loopFocus", publicName: "loopFocus", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "toolbar" }, properties: { "attr.aria-orientation": "orientation()", "attr.data-orientation": "orientation()", "attr.data-disabled": "disabled() ? \"\" : undefined" } }, providers: [provideToolbarRootContext(rootContext)], exportAs: ["rdxToolbarRoot"], hostDirectives: [{ directive: i1.RdxCompositeRoot }], ngImport: i0 }); }
314
334
  }
315
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarRoot, decorators: [{
335
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarRoot, decorators: [{
316
336
  type: Directive,
317
337
  args: [{
318
338
  selector: '[rdxToolbarRoot]',
@@ -343,7 +363,8 @@ class RdxToolbarSeparator {
343
363
  /**
344
364
  * The separator orientation. Defaults to the opposite of the toolbar orientation.
345
365
  */
346
- this.orientation = input(undefined, ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
366
+ this.orientation = input(undefined, /* @ts-ignore */
367
+ ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
347
368
  effect(() => {
348
369
  this.separator.updateOrientation(this.orientation() ?? this.defaultOrientation());
349
370
  });
@@ -351,10 +372,10 @@ class RdxToolbarSeparator {
351
372
  defaultOrientation() {
352
373
  return this.rootContext.orientation() === 'horizontal' ? 'vertical' : 'horizontal';
353
374
  }
354
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
355
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxToolbarSeparator, isStandalone: true, selector: "[rdxToolbarSeparator]", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["rdxToolbarSeparator"], hostDirectives: [{ directive: i1$1.RdxSeparatorRootDirective }], ngImport: i0 }); }
375
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
376
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxToolbarSeparator, isStandalone: true, selector: "[rdxToolbarSeparator]", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["rdxToolbarSeparator"], hostDirectives: [{ directive: i1$1.RdxSeparatorRootDirective }], ngImport: i0 }); }
356
377
  }
357
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarSeparator, decorators: [{
378
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarSeparator, decorators: [{
358
379
  type: Directive,
359
380
  args: [{
360
381
  selector: '[rdxToolbarSeparator]',
@@ -372,8 +393,8 @@ const toolbarImports = [
372
393
  RdxToolbarSeparator
373
394
  ];
374
395
  class RdxToolbarModule {
375
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
376
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarModule, imports: [RdxToolbarRoot,
396
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
397
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarModule, imports: [RdxToolbarRoot,
377
398
  RdxToolbarButton,
378
399
  RdxToolbarLink,
379
400
  RdxToolbarInput,
@@ -384,9 +405,9 @@ class RdxToolbarModule {
384
405
  RdxToolbarInput,
385
406
  RdxToolbarGroup,
386
407
  RdxToolbarSeparator] }); }
387
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarModule }); }
408
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarModule }); }
388
409
  }
389
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxToolbarModule, decorators: [{
410
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxToolbarModule, decorators: [{
390
411
  type: NgModule,
391
412
  args: [{
392
413
  imports: [...toolbarImports],
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-toolbar.mjs","sources":["../../../packages/primitives/toolbar/src/toolbar-context.ts","../../../packages/primitives/toolbar/src/toolbar-button.ts","../../../packages/primitives/toolbar/src/toolbar-group.ts","../../../packages/primitives/toolbar/src/toolbar-input.ts","../../../packages/primitives/toolbar/src/toolbar-link.ts","../../../packages/primitives/toolbar/src/toolbar-root.ts","../../../packages/primitives/toolbar/src/toolbar-separator.ts","../../../packages/primitives/toolbar/index.ts","../../../packages/primitives/toolbar/radix-ng-primitives-toolbar.ts"],"sourcesContent":["import { Signal } from '@angular/core';\nimport { createContext, DataOrientation } from '@radix-ng/primitives/core';\n\nexport interface RdxToolbarRootContext {\n /** The orientation of the toolbar. */\n readonly orientation: Signal<DataOrientation>;\n\n /** Whether the whole toolbar is disabled. */\n readonly disabled: Signal<boolean>;\n}\n\nexport const [injectToolbarRootContext, provideToolbarRootContext] = createContext<RdxToolbarRootContext>(\n 'RdxToolbarRootContext',\n 'components/toolbar'\n);\n\nexport interface RdxToolbarGroupContext {\n /** Whether the group (and therefore its items) is disabled. */\n readonly disabled: Signal<boolean>;\n}\n\nexport const [injectToolbarGroupContext, provideToolbarGroupContext] = createContext<RdxToolbarGroupContext>(\n 'RdxToolbarGroupContext',\n 'components/toolbar'\n);\n","import { booleanAttribute, computed, Directive, effect, inject, input } from '@angular/core';\nimport { RdxCompositeItem } from '@radix-ng/primitives/composite';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectToolbarGroupContext, injectToolbarRootContext } from './toolbar-context';\n\n/**\n * A button within a toolbar.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarButton]',\n exportAs: 'rdxToolbarButton',\n hostDirectives: [RdxCompositeItem],\n host: {\n '[attr.type]': 'nativeButton() ? \"button\" : undefined',\n '[attr.role]': 'nativeButton() ? undefined : \"button\"',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-focusable]': 'focusableWhenDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : undefined',\n '[attr.disabled]': 'isDisabled() && !focusableWhenDisabled() ? \"\" : undefined',\n '(click)': 'onClick($event)'\n }\n})\nexport class RdxToolbarButton {\n protected readonly rootContext = injectToolbarRootContext();\n private readonly groupContext = injectToolbarGroupContext(true);\n private readonly compositeItem = inject(RdxCompositeItem, { self: true });\n\n /**\n * Whether the button is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the button stays focusable while disabled (so it remains discoverable for keyboard\n * and screen-reader users).\n *\n * @default true\n */\n readonly focusableWhenDisabled = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * Whether the host is a native `<button>`. When `false`, adds `role=\"button\"`.\n *\n * @default true\n */\n readonly nativeButton = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** @ignore Effective disabled state, combining the button, group and toolbar. */\n readonly isDisabled = computed(\n () => this.disabled() || (this.groupContext?.disabled() ?? false) || this.rootContext.disabled()\n );\n\n constructor() {\n effect(() => {\n this.compositeItem.setMetadata({\n disabled: this.isDisabled(),\n focusableWhenDisabled: this.focusableWhenDisabled()\n });\n });\n }\n\n /** @ignore */\n protected onClick(event: Event): void {\n if (this.isDisabled()) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { booleanAttribute, computed, Directive, inject, input } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectToolbarRootContext, provideToolbarGroupContext, RdxToolbarGroupContext } from './toolbar-context';\n\nconst groupContext = (): RdxToolbarGroupContext => {\n const group = inject(RdxToolbarGroup);\n return { disabled: group.isDisabled };\n};\n\n/**\n * Groups several toolbar items together. Disabling the group disables all of its items.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarGroup]',\n exportAs: 'rdxToolbarGroup',\n providers: [provideToolbarGroupContext(groupContext)],\n host: {\n role: 'group',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined'\n }\n})\nexport class RdxToolbarGroup {\n protected readonly rootContext = injectToolbarRootContext();\n\n /**\n * Whether the group is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** @ignore Effective disabled state, combining the group and the toolbar. */\n readonly isDisabled = computed(() => this.disabled() || this.rootContext.disabled());\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n PLATFORM_ID\n} from '@angular/core';\nimport { RdxCompositeItem } from '@radix-ng/primitives/composite';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectToolbarGroupContext, injectToolbarRootContext } from './toolbar-context';\n\n/**\n * A native input within a toolbar. Participates in the toolbar's composite focus while keeping native\n * text-editing: the arrow keys move the caret within the text and only move focus to the\n * neighbouring toolbar item once the caret is at the corresponding edge (Base UI \"composite\" input).\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: 'input[rdxToolbarInput]',\n exportAs: 'rdxToolbarInput',\n hostDirectives: [RdxCompositeItem],\n host: {\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-focusable]': 'focusableWhenDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : undefined',\n '[disabled]': 'isDisabled() && !focusableWhenDisabled()'\n }\n})\nexport class RdxToolbarInput {\n protected readonly rootContext = injectToolbarRootContext();\n private readonly groupContext = injectToolbarGroupContext(true);\n private readonly compositeItem = inject(RdxCompositeItem, { self: true });\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n /** The initial value of the uncontrolled input. */\n readonly defaultValue = input<string>();\n\n /**\n * Whether the input is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the input stays focusable while disabled.\n *\n * @default true\n */\n readonly focusableWhenDisabled = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** @ignore */\n readonly isDisabled = computed(\n () => this.disabled() || (this.groupContext?.disabled() ?? false) || this.rootContext.disabled()\n );\n\n private appliedDefault = false;\n\n constructor() {\n effect(() => {\n this.compositeItem.setMetadata({\n disabled: this.isDisabled(),\n focusableWhenDisabled: this.focusableWhenDisabled()\n });\n });\n\n effect(() => {\n const value = this.defaultValue();\n if (!this.appliedDefault && value !== undefined) {\n this.appliedDefault = true;\n this.elementRef.nativeElement.value = value;\n }\n });\n\n if (this.isBrowser) {\n // Registered in the constructor — i.e. before the composite root's delegated keydown\n // — so it runs first and can keep arrow keys for caret movement (via\n // `stopImmediatePropagation`) unless the caret is at the edge, where the event is allowed\n // to reach the composite root and move focus.\n const element = this.elementRef.nativeElement;\n const handler = (event: KeyboardEvent) => this.handleCaretKeydown(event);\n element.addEventListener('keydown', handler, { capture: true });\n inject(DestroyRef).onDestroy(() => element.removeEventListener('keydown', handler, { capture: true }));\n }\n }\n\n private handleCaretKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented || event.metaKey || event.ctrlKey || event.altKey) {\n return;\n }\n\n const horizontal = this.rootContext.orientation() === 'horizontal';\n const previousKey = horizontal ? 'ArrowLeft' : 'ArrowUp';\n const nextKey = horizontal ? 'ArrowRight' : 'ArrowDown';\n const key = event.key;\n\n if (key !== previousKey && key !== nextKey && key !== 'Home' && key !== 'End') {\n return;\n }\n\n // Home/End always move the caret within the text.\n if (key === 'Home' || key === 'End') {\n event.stopImmediatePropagation();\n return;\n }\n\n const element = this.elementRef.nativeElement;\n let start: number | null;\n let end: number | null;\n try {\n start = element.selectionStart;\n end = element.selectionEnd;\n } catch {\n // Inputs such as `type=\"number\"` don't expose a selection — let the toolbar navigate.\n return;\n }\n\n if (start === null || end === null) {\n return;\n }\n\n const length = element.value.length;\n const atStart = start === 0 && end === 0;\n const atEnd = start === length && end === length;\n\n // Keep the key for caret movement unless the caret is already at the edge we're moving toward.\n if ((key === previousKey && !atStart) || (key === nextKey && !atEnd)) {\n event.stopImmediatePropagation();\n }\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { RdxCompositeItem } from '@radix-ng/primitives/composite';\nimport { injectToolbarRootContext } from './toolbar-context';\n\nconst TOOLBAR_LINK_METADATA = {\n disabled: false,\n focusableWhenDisabled: true\n};\n\n/**\n * A link within a toolbar.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarLink]',\n exportAs: 'rdxToolbarLink',\n hostDirectives: [RdxCompositeItem],\n host: {\n '[attr.data-orientation]': 'rootContext.orientation()'\n }\n})\nexport class RdxToolbarLink {\n protected readonly rootContext = injectToolbarRootContext();\n private readonly compositeItem = inject(RdxCompositeItem, { self: true });\n\n constructor() {\n this.compositeItem.setMetadata(TOOLBAR_LINK_METADATA);\n }\n}\n","import { booleanAttribute, computed, Directive, effect, inject, input } from '@angular/core';\nimport { RdxCompositeMetadata, RdxCompositeRoot } from '@radix-ng/primitives/composite';\nimport { BooleanInput, DataOrientation, Direction } from '@radix-ng/primitives/core';\nimport { injectDirection } from '@radix-ng/primitives/direction-provider';\nimport { provideToolbarRootContext, RdxToolbarRootContext } from './toolbar-context';\n\nconst rootContext = (): RdxToolbarRootContext => {\n const root = inject(RdxToolbarRoot);\n return {\n orientation: root.orientation,\n disabled: root.disabled\n };\n};\n\n/**\n * A container for grouping a set of controls, such as buttons, toggle groups or menus.\n * Owns composite keyboard focus over its items.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarRoot]',\n exportAs: 'rdxToolbarRoot',\n hostDirectives: [RdxCompositeRoot],\n providers: [provideToolbarRootContext(rootContext)],\n host: {\n role: 'toolbar',\n '[attr.aria-orientation]': 'orientation()',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined'\n }\n})\nexport class RdxToolbarRoot {\n /**\n * The orientation of the toolbar.\n *\n * @default 'horizontal'\n */\n readonly orientation = input<DataOrientation>('horizontal');\n\n /** Text direction for arrow-key navigation. */\n readonly dirInput = input<Direction | undefined>(undefined, { alias: 'dir' });\n readonly dir = injectDirection(this.dirInput);\n\n /**\n * Whether keyboard navigation should loop from the last item back to the first.\n *\n * @default true\n */\n readonly loopFocus = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * Whether the whole toolbar is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n private readonly compositeRoot = inject(RdxCompositeRoot, { self: true });\n private readonly itemMetadata = computed(() =>\n Array.from(this.compositeRoot.itemMap().values()).filter(isToolbarItemMetadata)\n );\n private readonly disabledIndices = computed(() =>\n this.itemMetadata()\n .filter((metadata) => metadata.disabled && !metadata.focusableWhenDisabled)\n .map((metadata) => metadata.index)\n );\n\n constructor() {\n effect(() => {\n this.compositeRoot.setOrientation(this.orientation());\n this.compositeRoot.setDir(this.dir());\n this.compositeRoot.setLoopFocus(this.loopFocus());\n this.compositeRoot.setEnableHomeAndEndKeys(true);\n });\n\n effect(() => {\n this.compositeRoot.setDisabledIndices(this.disabledIndices());\n });\n }\n}\n\nexport interface RdxToolbarItemMetadata {\n [key: string]: unknown;\n disabled: boolean;\n focusableWhenDisabled: boolean;\n}\n\nfunction isToolbarItemMetadata(\n metadata: RdxCompositeMetadata\n): metadata is RdxCompositeMetadata<RdxToolbarItemMetadata> {\n return typeof metadata['disabled'] === 'boolean' && typeof metadata['focusableWhenDisabled'] === 'boolean';\n}\n","import { Directive, effect, inject, input } from '@angular/core';\nimport { Orientation, RdxSeparatorRootDirective } from '@radix-ng/primitives/separator';\nimport { injectToolbarRootContext } from './toolbar-context';\n\n/**\n * A separator between toolbar items or groups.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarSeparator]',\n exportAs: 'rdxToolbarSeparator',\n hostDirectives: [RdxSeparatorRootDirective]\n})\nexport class RdxToolbarSeparator {\n protected readonly rootContext = injectToolbarRootContext();\n private readonly separator = inject(RdxSeparatorRootDirective, { self: true });\n\n /**\n * The separator orientation. Defaults to the opposite of the toolbar orientation.\n */\n readonly orientation = input<Orientation | undefined>(undefined);\n\n constructor() {\n effect(() => {\n this.separator.updateOrientation(this.orientation() ?? this.defaultOrientation());\n });\n }\n\n private defaultOrientation(): Orientation {\n return this.rootContext.orientation() === 'horizontal' ? 'vertical' : 'horizontal';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxToolbarButton } from './src/toolbar-button';\nimport { RdxToolbarGroup } from './src/toolbar-group';\nimport { RdxToolbarInput } from './src/toolbar-input';\nimport { RdxToolbarLink } from './src/toolbar-link';\nimport { RdxToolbarRoot } from './src/toolbar-root';\nimport { RdxToolbarSeparator } from './src/toolbar-separator';\n\nexport * from './src/toolbar-button';\nexport * from './src/toolbar-context';\nexport * from './src/toolbar-group';\nexport * from './src/toolbar-input';\nexport * from './src/toolbar-link';\nexport * from './src/toolbar-root';\nexport * from './src/toolbar-separator';\n\nexport const toolbarImports = [\n RdxToolbarRoot,\n RdxToolbarButton,\n RdxToolbarLink,\n RdxToolbarInput,\n RdxToolbarGroup,\n RdxToolbarSeparator\n];\n\n@NgModule({\n imports: [...toolbarImports],\n exports: [...toolbarImports]\n})\nexport class RdxToolbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-toolbar.mjs","sources":["../../../packages/primitives/toolbar/src/toolbar-context.ts","../../../packages/primitives/toolbar/src/toolbar-button.ts","../../../packages/primitives/toolbar/src/toolbar-group.ts","../../../packages/primitives/toolbar/src/toolbar-input.ts","../../../packages/primitives/toolbar/src/toolbar-link.ts","../../../packages/primitives/toolbar/src/toolbar-root.ts","../../../packages/primitives/toolbar/src/toolbar-separator.ts","../../../packages/primitives/toolbar/index.ts","../../../packages/primitives/toolbar/radix-ng-primitives-toolbar.ts"],"sourcesContent":["import { Signal } from '@angular/core';\nimport { createContext, DataOrientation } from '@radix-ng/primitives/core';\n\nexport interface RdxToolbarRootContext {\n /** The orientation of the toolbar. */\n readonly orientation: Signal<DataOrientation>;\n\n /** Whether the whole toolbar is disabled. */\n readonly disabled: Signal<boolean>;\n}\n\nexport const [injectToolbarRootContext, provideToolbarRootContext] = createContext<RdxToolbarRootContext>(\n 'RdxToolbarRootContext',\n 'components/toolbar'\n);\n\nexport interface RdxToolbarGroupContext {\n /** Whether the group (and therefore its items) is disabled. */\n readonly disabled: Signal<boolean>;\n}\n\nexport const [injectToolbarGroupContext, provideToolbarGroupContext] = createContext<RdxToolbarGroupContext>(\n 'RdxToolbarGroupContext',\n 'components/toolbar'\n);\n","import { booleanAttribute, computed, Directive, effect, inject, input } from '@angular/core';\nimport { RdxCompositeItem } from '@radix-ng/primitives/composite';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectToolbarGroupContext, injectToolbarRootContext } from './toolbar-context';\n\n/**\n * A button within a toolbar.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarButton]',\n exportAs: 'rdxToolbarButton',\n hostDirectives: [RdxCompositeItem],\n host: {\n '[attr.type]': 'nativeButton() ? \"button\" : undefined',\n '[attr.role]': 'nativeButton() ? undefined : \"button\"',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-focusable]': 'focusableWhenDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : undefined',\n '[attr.disabled]': 'isDisabled() && !focusableWhenDisabled() ? \"\" : undefined',\n '(click)': 'onClick($event)'\n }\n})\nexport class RdxToolbarButton {\n protected readonly rootContext = injectToolbarRootContext();\n private readonly groupContext = injectToolbarGroupContext(true);\n private readonly compositeItem = inject(RdxCompositeItem, { self: true });\n\n /**\n * Whether the button is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the button stays focusable while disabled (so it remains discoverable for keyboard\n * and screen-reader users).\n *\n * @default true\n */\n readonly focusableWhenDisabled = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * Whether the host is a native `<button>`. When `false`, adds `role=\"button\"`.\n *\n * @default true\n */\n readonly nativeButton = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** @ignore Effective disabled state, combining the button, group and toolbar. */\n readonly isDisabled = computed(\n () => this.disabled() || (this.groupContext?.disabled() ?? false) || this.rootContext.disabled()\n );\n\n constructor() {\n effect(() => {\n this.compositeItem.setMetadata({\n disabled: this.isDisabled(),\n focusableWhenDisabled: this.focusableWhenDisabled()\n });\n });\n }\n\n /** @ignore */\n protected onClick(event: Event): void {\n if (this.isDisabled()) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { booleanAttribute, computed, Directive, inject, input } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectToolbarRootContext, provideToolbarGroupContext, RdxToolbarGroupContext } from './toolbar-context';\n\nconst groupContext = (): RdxToolbarGroupContext => {\n const group = inject(RdxToolbarGroup);\n return { disabled: group.isDisabled };\n};\n\n/**\n * Groups several toolbar items together. Disabling the group disables all of its items.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarGroup]',\n exportAs: 'rdxToolbarGroup',\n providers: [provideToolbarGroupContext(groupContext)],\n host: {\n role: 'group',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined'\n }\n})\nexport class RdxToolbarGroup {\n protected readonly rootContext = injectToolbarRootContext();\n\n /**\n * Whether the group is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** @ignore Effective disabled state, combining the group and the toolbar. */\n readonly isDisabled = computed(() => this.disabled() || this.rootContext.disabled());\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n PLATFORM_ID\n} from '@angular/core';\nimport { RdxCompositeItem } from '@radix-ng/primitives/composite';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectToolbarGroupContext, injectToolbarRootContext } from './toolbar-context';\n\n/**\n * A native input within a toolbar. Participates in the toolbar's composite focus while keeping native\n * text-editing: the arrow keys move the caret within the text and only move focus to the\n * neighbouring toolbar item once the caret is at the corresponding edge (Base UI \"composite\" input).\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: 'input[rdxToolbarInput]',\n exportAs: 'rdxToolbarInput',\n hostDirectives: [RdxCompositeItem],\n host: {\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-focusable]': 'focusableWhenDisabled() ? \"\" : undefined',\n // The host is always a native `<input>` (selector-pinned), i.e. not a native button, so it\n // conveys disabled via `aria-disabled` only — never the native `disabled` attribute, which would\n // drop a disabled-but-focusable item out of the roving tab order. Roving removal for\n // non-focusable-when-disabled inputs goes through the composite root's `disabledIndices` (driven\n // by the metadata below); pointer interaction is blocked in `onInteraction`.\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : undefined',\n '(click)': 'onInteraction($event)',\n '(pointerdown)': 'onInteraction($event)'\n }\n})\nexport class RdxToolbarInput {\n protected readonly rootContext = injectToolbarRootContext();\n private readonly groupContext = injectToolbarGroupContext(true);\n private readonly compositeItem = inject(RdxCompositeItem, { self: true });\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n /** The initial value of the uncontrolled input. */\n readonly defaultValue = input<string>();\n\n /**\n * Whether the input is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the input stays focusable while disabled.\n *\n * @default true\n */\n readonly focusableWhenDisabled = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** @ignore */\n readonly isDisabled = computed(\n () => this.disabled() || (this.groupContext?.disabled() ?? false) || this.rootContext.disabled()\n );\n\n private appliedDefault = false;\n\n constructor() {\n effect(() => {\n this.compositeItem.setMetadata({\n disabled: this.isDisabled(),\n focusableWhenDisabled: this.focusableWhenDisabled()\n });\n });\n\n effect(() => {\n const value = this.defaultValue();\n if (!this.appliedDefault && value !== undefined) {\n this.appliedDefault = true;\n this.elementRef.nativeElement.value = value;\n }\n });\n\n if (this.isBrowser) {\n // Registered in the constructor — i.e. before the composite root's delegated keydown\n // — so it runs first and can keep arrow keys for caret movement (via\n // `stopImmediatePropagation`) unless the caret is at the edge, where the event is allowed\n // to reach the composite root and move focus.\n const element = this.elementRef.nativeElement;\n const handler = (event: KeyboardEvent) => this.handleCaretKeydown(event);\n element.addEventListener('keydown', handler, { capture: true });\n inject(DestroyRef).onDestroy(() => element.removeEventListener('keydown', handler, { capture: true }));\n }\n }\n\n /** @ignore Block pointer interaction while disabled (Base UI input `defaultProps`). */\n protected onInteraction(event: Event): void {\n if (this.isDisabled()) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n private handleCaretKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented || event.metaKey || event.ctrlKey || event.altKey) {\n return;\n }\n\n const horizontal = this.rootContext.orientation() === 'horizontal';\n const previousKey = horizontal ? 'ArrowLeft' : 'ArrowUp';\n const nextKey = horizontal ? 'ArrowRight' : 'ArrowDown';\n const key = event.key;\n\n if (key !== previousKey && key !== nextKey && key !== 'Home' && key !== 'End') {\n return;\n }\n\n // Home/End always move the caret within the text.\n if (key === 'Home' || key === 'End') {\n event.stopImmediatePropagation();\n return;\n }\n\n const element = this.elementRef.nativeElement;\n let start: number | null;\n let end: number | null;\n try {\n start = element.selectionStart;\n end = element.selectionEnd;\n } catch {\n // Inputs such as `type=\"number\"` don't expose a selection — let the toolbar navigate.\n return;\n }\n\n if (start === null || end === null) {\n return;\n }\n\n const length = element.value.length;\n const atStart = start === 0 && end === 0;\n const atEnd = start === length && end === length;\n\n // Keep the key for caret movement unless the caret is already at the edge we're moving toward.\n if ((key === previousKey && !atStart) || (key === nextKey && !atEnd)) {\n event.stopImmediatePropagation();\n }\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { RdxCompositeItem } from '@radix-ng/primitives/composite';\nimport { injectToolbarRootContext } from './toolbar-context';\n\nconst TOOLBAR_LINK_METADATA = {\n disabled: false,\n focusableWhenDisabled: true\n};\n\n/**\n * A link within a toolbar.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarLink]',\n exportAs: 'rdxToolbarLink',\n hostDirectives: [RdxCompositeItem],\n host: {\n '[attr.data-orientation]': 'rootContext.orientation()'\n }\n})\nexport class RdxToolbarLink {\n protected readonly rootContext = injectToolbarRootContext();\n private readonly compositeItem = inject(RdxCompositeItem, { self: true });\n\n constructor() {\n this.compositeItem.setMetadata(TOOLBAR_LINK_METADATA);\n }\n}\n","import { booleanAttribute, computed, Directive, effect, inject, input } from '@angular/core';\nimport { RdxCompositeMetadata, RdxCompositeRoot } from '@radix-ng/primitives/composite';\nimport { BooleanInput, DataOrientation, Direction } from '@radix-ng/primitives/core';\nimport { injectDirection } from '@radix-ng/primitives/direction-provider';\nimport { provideToolbarRootContext, RdxToolbarRootContext } from './toolbar-context';\n\nconst rootContext = (): RdxToolbarRootContext => {\n const root = inject(RdxToolbarRoot);\n return {\n orientation: root.orientation,\n disabled: root.disabled\n };\n};\n\n/**\n * A container for grouping a set of controls, such as buttons, toggle groups or menus.\n * Owns composite keyboard focus over its items.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarRoot]',\n exportAs: 'rdxToolbarRoot',\n hostDirectives: [RdxCompositeRoot],\n providers: [provideToolbarRootContext(rootContext)],\n host: {\n role: 'toolbar',\n '[attr.aria-orientation]': 'orientation()',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined'\n }\n})\nexport class RdxToolbarRoot {\n /**\n * The orientation of the toolbar.\n *\n * @default 'horizontal'\n */\n readonly orientation = input<DataOrientation>('horizontal');\n\n /** Text direction for arrow-key navigation. */\n readonly dirInput = input<Direction | undefined>(undefined, { alias: 'dir' });\n readonly dir = injectDirection(this.dirInput);\n\n /**\n * Whether keyboard navigation should loop from the last item back to the first.\n *\n * @default true\n */\n readonly loopFocus = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * Whether the whole toolbar is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n private readonly compositeRoot = inject(RdxCompositeRoot, { self: true });\n private readonly itemMetadata = computed(() =>\n Array.from(this.compositeRoot.itemMap().values()).filter(isToolbarItemMetadata)\n );\n private readonly disabledIndices = computed(() =>\n this.itemMetadata()\n .filter((metadata) => metadata.disabled && !metadata.focusableWhenDisabled)\n .map((metadata) => metadata.index)\n );\n\n constructor() {\n effect(() => {\n this.compositeRoot.setOrientation(this.orientation());\n this.compositeRoot.setDir(this.dir());\n this.compositeRoot.setLoopFocus(this.loopFocus());\n this.compositeRoot.setEnableHomeAndEndKeys(true);\n });\n\n effect(() => {\n this.compositeRoot.setDisabledIndices(this.disabledIndices());\n });\n }\n}\n\nexport interface RdxToolbarItemMetadata {\n [key: string]: unknown;\n disabled: boolean;\n focusableWhenDisabled: boolean;\n}\n\nfunction isToolbarItemMetadata(\n metadata: RdxCompositeMetadata\n): metadata is RdxCompositeMetadata<RdxToolbarItemMetadata> {\n return typeof metadata['disabled'] === 'boolean' && typeof metadata['focusableWhenDisabled'] === 'boolean';\n}\n","import { Directive, effect, inject, input } from '@angular/core';\nimport { Orientation, RdxSeparatorRootDirective } from '@radix-ng/primitives/separator';\nimport { injectToolbarRootContext } from './toolbar-context';\n\n/**\n * A separator between toolbar items or groups.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarSeparator]',\n exportAs: 'rdxToolbarSeparator',\n hostDirectives: [RdxSeparatorRootDirective]\n})\nexport class RdxToolbarSeparator {\n protected readonly rootContext = injectToolbarRootContext();\n private readonly separator = inject(RdxSeparatorRootDirective, { self: true });\n\n /**\n * The separator orientation. Defaults to the opposite of the toolbar orientation.\n */\n readonly orientation = input<Orientation | undefined>(undefined);\n\n constructor() {\n effect(() => {\n this.separator.updateOrientation(this.orientation() ?? this.defaultOrientation());\n });\n }\n\n private defaultOrientation(): Orientation {\n return this.rootContext.orientation() === 'horizontal' ? 'vertical' : 'horizontal';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxToolbarButton } from './src/toolbar-button';\nimport { RdxToolbarGroup } from './src/toolbar-group';\nimport { RdxToolbarInput } from './src/toolbar-input';\nimport { RdxToolbarLink } from './src/toolbar-link';\nimport { RdxToolbarRoot } from './src/toolbar-root';\nimport { RdxToolbarSeparator } from './src/toolbar-separator';\n\nexport * from './src/toolbar-button';\nexport * from './src/toolbar-context';\nexport * from './src/toolbar-group';\nexport * from './src/toolbar-input';\nexport * from './src/toolbar-link';\nexport * from './src/toolbar-root';\nexport * from './src/toolbar-separator';\n\nexport const toolbarImports = [\n RdxToolbarRoot,\n RdxToolbarButton,\n RdxToolbarLink,\n RdxToolbarInput,\n RdxToolbarGroup,\n RdxToolbarSeparator\n];\n\n@NgModule({\n imports: [...toolbarImports],\n exports: [...toolbarImports]\n})\nexport class RdxToolbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}