@raqm/ui 0.0.0-stage → 0.1.1

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 (178) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE.md +28 -0
  4. package/README.md +126 -3
  5. package/combobox/README.md +17 -0
  6. package/fesm2022/raqm-ui-accordion.mjs +414 -0
  7. package/fesm2022/raqm-ui-accordion.mjs.map +1 -0
  8. package/fesm2022/raqm-ui-alert-dialog.mjs +457 -0
  9. package/fesm2022/raqm-ui-alert-dialog.mjs.map +1 -0
  10. package/fesm2022/raqm-ui-alert.mjs +195 -0
  11. package/fesm2022/raqm-ui-alert.mjs.map +1 -0
  12. package/fesm2022/raqm-ui-aspect-ratio.mjs +66 -0
  13. package/fesm2022/raqm-ui-aspect-ratio.mjs.map +1 -0
  14. package/fesm2022/raqm-ui-attachment.mjs +435 -0
  15. package/fesm2022/raqm-ui-attachment.mjs.map +1 -0
  16. package/fesm2022/raqm-ui-avatar.mjs +337 -0
  17. package/fesm2022/raqm-ui-avatar.mjs.map +1 -0
  18. package/fesm2022/raqm-ui-badge.mjs +68 -0
  19. package/fesm2022/raqm-ui-badge.mjs.map +1 -0
  20. package/fesm2022/raqm-ui-breadcrumb.mjs +309 -0
  21. package/fesm2022/raqm-ui-breadcrumb.mjs.map +1 -0
  22. package/fesm2022/raqm-ui-button-group.mjs +138 -0
  23. package/fesm2022/raqm-ui-button-group.mjs.map +1 -0
  24. package/fesm2022/raqm-ui-button.mjs +295 -0
  25. package/fesm2022/raqm-ui-button.mjs.map +1 -0
  26. package/fesm2022/raqm-ui-calendar.mjs +1394 -0
  27. package/fesm2022/raqm-ui-calendar.mjs.map +1 -0
  28. package/fesm2022/raqm-ui-card.mjs +331 -0
  29. package/fesm2022/raqm-ui-card.mjs.map +1 -0
  30. package/fesm2022/raqm-ui-carousel.mjs +410 -0
  31. package/fesm2022/raqm-ui-carousel.mjs.map +1 -0
  32. package/fesm2022/raqm-ui-checkbox.mjs +86 -0
  33. package/fesm2022/raqm-ui-checkbox.mjs.map +1 -0
  34. package/fesm2022/raqm-ui-collapsible.mjs +266 -0
  35. package/fesm2022/raqm-ui-collapsible.mjs.map +1 -0
  36. package/fesm2022/raqm-ui-combobox.mjs +1584 -0
  37. package/fesm2022/raqm-ui-combobox.mjs.map +1 -0
  38. package/fesm2022/raqm-ui-command.mjs +1210 -0
  39. package/fesm2022/raqm-ui-command.mjs.map +1 -0
  40. package/fesm2022/raqm-ui-context-menu.mjs +723 -0
  41. package/fesm2022/raqm-ui-context-menu.mjs.map +1 -0
  42. package/fesm2022/raqm-ui-dialog.mjs +1214 -0
  43. package/fesm2022/raqm-ui-dialog.mjs.map +1 -0
  44. package/fesm2022/raqm-ui-drawer.mjs +687 -0
  45. package/fesm2022/raqm-ui-drawer.mjs.map +1 -0
  46. package/fesm2022/raqm-ui-dropdown-menu.mjs +1168 -0
  47. package/fesm2022/raqm-ui-dropdown-menu.mjs.map +1 -0
  48. package/fesm2022/raqm-ui-empty.mjs +272 -0
  49. package/fesm2022/raqm-ui-empty.mjs.map +1 -0
  50. package/fesm2022/raqm-ui-field.mjs +517 -0
  51. package/fesm2022/raqm-ui-field.mjs.map +1 -0
  52. package/fesm2022/raqm-ui-hover-card.mjs +828 -0
  53. package/fesm2022/raqm-ui-hover-card.mjs.map +1 -0
  54. package/fesm2022/raqm-ui-input-group.mjs +270 -0
  55. package/fesm2022/raqm-ui-input-group.mjs.map +1 -0
  56. package/fesm2022/raqm-ui-input-otp.mjs +788 -0
  57. package/fesm2022/raqm-ui-input-otp.mjs.map +1 -0
  58. package/fesm2022/raqm-ui-input.mjs +73 -0
  59. package/fesm2022/raqm-ui-input.mjs.map +1 -0
  60. package/fesm2022/raqm-ui-item.mjs +495 -0
  61. package/fesm2022/raqm-ui-item.mjs.map +1 -0
  62. package/fesm2022/raqm-ui-kbd.mjs +80 -0
  63. package/fesm2022/raqm-ui-kbd.mjs.map +1 -0
  64. package/fesm2022/raqm-ui-label.mjs +44 -0
  65. package/fesm2022/raqm-ui-label.mjs.map +1 -0
  66. package/fesm2022/raqm-ui-menubar.mjs +536 -0
  67. package/fesm2022/raqm-ui-menubar.mjs.map +1 -0
  68. package/fesm2022/raqm-ui-native-select.mjs +131 -0
  69. package/fesm2022/raqm-ui-native-select.mjs.map +1 -0
  70. package/fesm2022/raqm-ui-navigation-menu.mjs +1399 -0
  71. package/fesm2022/raqm-ui-navigation-menu.mjs.map +1 -0
  72. package/fesm2022/raqm-ui-overlay-internal.mjs +185 -0
  73. package/fesm2022/raqm-ui-overlay-internal.mjs.map +1 -0
  74. package/fesm2022/raqm-ui-pagination.mjs +440 -0
  75. package/fesm2022/raqm-ui-pagination.mjs.map +1 -0
  76. package/fesm2022/raqm-ui-popover.mjs +1495 -0
  77. package/fesm2022/raqm-ui-popover.mjs.map +1 -0
  78. package/fesm2022/raqm-ui-progress.mjs +369 -0
  79. package/fesm2022/raqm-ui-progress.mjs.map +1 -0
  80. package/fesm2022/raqm-ui-questionnaire.mjs +1005 -0
  81. package/fesm2022/raqm-ui-questionnaire.mjs.map +1 -0
  82. package/fesm2022/raqm-ui-radio-group.mjs +151 -0
  83. package/fesm2022/raqm-ui-radio-group.mjs.map +1 -0
  84. package/fesm2022/raqm-ui-resizable.mjs +439 -0
  85. package/fesm2022/raqm-ui-resizable.mjs.map +1 -0
  86. package/fesm2022/raqm-ui-scroll-area.mjs +510 -0
  87. package/fesm2022/raqm-ui-scroll-area.mjs.map +1 -0
  88. package/fesm2022/raqm-ui-select.mjs +1073 -0
  89. package/fesm2022/raqm-ui-select.mjs.map +1 -0
  90. package/fesm2022/raqm-ui-separator.mjs +103 -0
  91. package/fesm2022/raqm-ui-separator.mjs.map +1 -0
  92. package/fesm2022/raqm-ui-sheet.mjs +411 -0
  93. package/fesm2022/raqm-ui-sheet.mjs.map +1 -0
  94. package/fesm2022/raqm-ui-sidebar.mjs +1784 -0
  95. package/fesm2022/raqm-ui-sidebar.mjs.map +1 -0
  96. package/fesm2022/raqm-ui-skeleton.mjs +50 -0
  97. package/fesm2022/raqm-ui-skeleton.mjs.map +1 -0
  98. package/fesm2022/raqm-ui-slider.mjs +609 -0
  99. package/fesm2022/raqm-ui-slider.mjs.map +1 -0
  100. package/fesm2022/raqm-ui-spinner.mjs +137 -0
  101. package/fesm2022/raqm-ui-spinner.mjs.map +1 -0
  102. package/fesm2022/raqm-ui-switch.mjs +109 -0
  103. package/fesm2022/raqm-ui-switch.mjs.map +1 -0
  104. package/fesm2022/raqm-ui-table.mjs +271 -0
  105. package/fesm2022/raqm-ui-table.mjs.map +1 -0
  106. package/fesm2022/raqm-ui-tabs.mjs +536 -0
  107. package/fesm2022/raqm-ui-tabs.mjs.map +1 -0
  108. package/fesm2022/raqm-ui-textarea.mjs +37 -0
  109. package/fesm2022/raqm-ui-textarea.mjs.map +1 -0
  110. package/fesm2022/raqm-ui-toast.mjs +918 -0
  111. package/fesm2022/raqm-ui-toast.mjs.map +1 -0
  112. package/fesm2022/raqm-ui-toggle-group.mjs +462 -0
  113. package/fesm2022/raqm-ui-toggle-group.mjs.map +1 -0
  114. package/fesm2022/raqm-ui-toggle.mjs +158 -0
  115. package/fesm2022/raqm-ui-toggle.mjs.map +1 -0
  116. package/fesm2022/raqm-ui-tooltip.mjs +1226 -0
  117. package/fesm2022/raqm-ui-tooltip.mjs.map +1 -0
  118. package/fesm2022/raqm-ui.mjs +50 -0
  119. package/input-otp/README.md +12 -0
  120. package/package.json +275 -3
  121. package/styles/theme.css +4324 -0
  122. package/types/raqm-ui-accordion.d.ts +124 -0
  123. package/types/raqm-ui-alert-dialog.d.ts +81 -0
  124. package/types/raqm-ui-alert.d.ts +29 -0
  125. package/types/raqm-ui-aspect-ratio.d.ts +13 -0
  126. package/types/raqm-ui-attachment.d.ts +72 -0
  127. package/types/raqm-ui-avatar.d.ts +67 -0
  128. package/types/raqm-ui-badge.d.ts +20 -0
  129. package/types/raqm-ui-breadcrumb.d.ts +35 -0
  130. package/types/raqm-ui-button-group.d.ts +27 -0
  131. package/types/raqm-ui-button.d.ts +80 -0
  132. package/types/raqm-ui-calendar.d.ts +359 -0
  133. package/types/raqm-ui-card.d.ts +34 -0
  134. package/types/raqm-ui-carousel.d.ts +81 -0
  135. package/types/raqm-ui-checkbox.d.ts +24 -0
  136. package/types/raqm-ui-collapsible.d.ts +72 -0
  137. package/types/raqm-ui-combobox.d.ts +405 -0
  138. package/types/raqm-ui-command.d.ts +256 -0
  139. package/types/raqm-ui-context-menu.d.ts +196 -0
  140. package/types/raqm-ui-dialog.d.ts +232 -0
  141. package/types/raqm-ui-drawer.d.ts +121 -0
  142. package/types/raqm-ui-dropdown-menu.d.ts +319 -0
  143. package/types/raqm-ui-empty.d.ts +35 -0
  144. package/types/raqm-ui-field.d.ts +88 -0
  145. package/types/raqm-ui-hover-card.d.ts +139 -0
  146. package/types/raqm-ui-input-group.d.ts +45 -0
  147. package/types/raqm-ui-input-otp.d.ts +197 -0
  148. package/types/raqm-ui-input.d.ts +16 -0
  149. package/types/raqm-ui-item.d.ts +71 -0
  150. package/types/raqm-ui-kbd.d.ts +12 -0
  151. package/types/raqm-ui-label.d.ts +6 -0
  152. package/types/raqm-ui-menubar.d.ts +159 -0
  153. package/types/raqm-ui-native-select.d.ts +23 -0
  154. package/types/raqm-ui-navigation-menu.d.ts +230 -0
  155. package/types/raqm-ui-overlay-internal.d.ts +5 -0
  156. package/types/raqm-ui-pagination.d.ts +84 -0
  157. package/types/raqm-ui-popover.d.ts +235 -0
  158. package/types/raqm-ui-progress.d.ts +79 -0
  159. package/types/raqm-ui-questionnaire.d.ts +217 -0
  160. package/types/raqm-ui-radio-group.d.ts +48 -0
  161. package/types/raqm-ui-resizable.d.ts +98 -0
  162. package/types/raqm-ui-scroll-area.d.ts +132 -0
  163. package/types/raqm-ui-select.d.ts +205 -0
  164. package/types/raqm-ui-separator.d.ts +21 -0
  165. package/types/raqm-ui-sheet.d.ts +79 -0
  166. package/types/raqm-ui-sidebar.d.ts +285 -0
  167. package/types/raqm-ui-skeleton.d.ts +6 -0
  168. package/types/raqm-ui-slider.d.ts +129 -0
  169. package/types/raqm-ui-spinner.d.ts +32 -0
  170. package/types/raqm-ui-switch.d.ts +32 -0
  171. package/types/raqm-ui-table.d.ts +36 -0
  172. package/types/raqm-ui-tabs.d.ts +154 -0
  173. package/types/raqm-ui-textarea.d.ts +6 -0
  174. package/types/raqm-ui-toast.d.ts +190 -0
  175. package/types/raqm-ui-toggle-group.d.ts +167 -0
  176. package/types/raqm-ui-toggle.d.ts +42 -0
  177. package/types/raqm-ui-tooltip.d.ts +207 -0
  178. package/types/raqm-ui.d.ts +50 -0
@@ -0,0 +1,405 @@
1
+ import * as i0 from "@angular/core";
2
+ import { Injector, OnDestroy, OnInit, Signal, TemplateRef, WritableSignal } from "@angular/core";
3
+ import { ControlValueAccessor } from "@angular/forms";
4
+ import { InteractivityChecker } from "@angular/cdk/a11y";
5
+ /**
6
+ * A single selectable option; `value` is the stable string identity, separate from the translated
7
+ * `label`, and `''` is legitimate, not `null`. Values must be unique (duplicates report a dev error),
8
+ * and a `disabled` option can never be newly selected nor removed.
9
+ */
10
+ interface RaqmComboboxOption {
11
+ value: string;
12
+ label: string;
13
+ /** Accessible description, separate from the name and filter label. */
14
+ description?: string;
15
+ disabled?: boolean;
16
+ }
17
+ interface RaqmComboboxGroup {
18
+ label: string;
19
+ options: readonly RaqmComboboxOption[];
20
+ /** Draws a separator before this group when a preceding entry is visible. */
21
+ separatorBefore?: boolean;
22
+ }
23
+ type RaqmComboboxEntry = RaqmComboboxOption | RaqmComboboxGroup;
24
+ /** Context passed to an item template; `$implicit` and `item` are the same option. */
25
+ interface RaqmComboboxItemContext {
26
+ $implicit: RaqmComboboxOption;
27
+ item: RaqmComboboxOption;
28
+ selected: boolean;
29
+ active: boolean;
30
+ }
31
+ type RaqmComboboxModel = readonly string[] | string | null;
32
+ type RaqmComboboxMode = 'multiple' | 'popup' | 'inline';
33
+ declare function labelContains(label: string, query: string): boolean;
34
+ declare function normalizeMultiple(value: unknown): string[];
35
+ declare function normalizePopup(value: unknown): string | null;
36
+ declare function normalizeModel(value: unknown, mode: RaqmComboboxMode): RaqmComboboxModel;
37
+ declare function reportDuplicateValues(items: readonly RaqmComboboxOption[]): void;
38
+ interface RaqmComboboxOptionView {
39
+ readonly item: RaqmComboboxOption;
40
+ readonly id: string;
41
+ readonly index: number;
42
+ }
43
+ interface RaqmComboboxRenderEntry {
44
+ label: string | null;
45
+ id: string;
46
+ options: RaqmComboboxOptionView[];
47
+ separatorBefore: boolean;
48
+ }
49
+ interface RaqmComboboxChipView {
50
+ readonly value: string;
51
+ readonly label: string;
52
+ readonly removable: boolean;
53
+ }
54
+ declare function flattenItems(items: readonly RaqmComboboxEntry[]): readonly RaqmComboboxOption[];
55
+ declare function filterOptions(items: readonly RaqmComboboxOption[], query: string, mode: RaqmComboboxMode, selectedLabel: string | null): readonly RaqmComboboxOption[];
56
+ declare function optionDomId(inputId: string, value: string): string;
57
+ declare function buildOptionViews(items: readonly RaqmComboboxOption[], inputId: string): readonly RaqmComboboxOptionView[];
58
+ declare function buildRenderEntries(items: readonly RaqmComboboxEntry[], views: readonly RaqmComboboxOptionView[], listboxId: string): readonly RaqmComboboxRenderEntry[];
59
+ declare function buildSelectedLabel(selected: RaqmComboboxModel, items: readonly RaqmComboboxOption[]): string | null;
60
+ declare function buildSelectionRemovable(selected: RaqmComboboxModel, items: readonly RaqmComboboxOption[]): boolean;
61
+ declare function buildChipViews(selected: RaqmComboboxModel, items: readonly RaqmComboboxOption[]): readonly RaqmComboboxChipView[];
62
+ interface RaqmComboboxFieldHost {
63
+ open(): boolean;
64
+ disabled(): boolean;
65
+ selectionRemovable(): boolean;
66
+ chipViews(): readonly RaqmComboboxChipView[];
67
+ optionViews(): readonly RaqmComboboxOptionView[];
68
+ activeId(): string | null;
69
+ selected(): RaqmComboboxModel;
70
+ isOptionDisabled(item: RaqmComboboxOption): boolean;
71
+ trigger(): HTMLButtonElement | null;
72
+ element(): HTMLElement;
73
+ overlayElement(): HTMLElement | undefined;
74
+ openPopup(): void;
75
+ close(touched: boolean, restoreFocus?: boolean): void;
76
+ select(item: RaqmComboboxOption): void;
77
+ emit(value: RaqmComboboxModel): void;
78
+ resetActive(): void;
79
+ reconcileActive(): void;
80
+ markTouched(): void;
81
+ activateOption(index: number): void;
82
+ }
83
+ declare class RaqmComboboxField {
84
+ private readonly host;
85
+ private readonly document;
86
+ private readonly interactivityChecker;
87
+ readonly query: import("@angular/core").WritableSignal<string>;
88
+ readonly composingValue: import("@angular/core").WritableSignal<string | null>;
89
+ suppressBlurTouched: boolean;
90
+ private composing;
91
+ constructor(host: RaqmComboboxFieldHost, document: Document, interactivityChecker: InteractivityChecker);
92
+ get isComposing(): boolean;
93
+ /** Clears the query and any composition text on close. */
94
+ reset(): void;
95
+ /** Clears only the query; a CDK detach leaves composition text untouched. */
96
+ resetQuery(): void;
97
+ onChipsPointerDown(event: PointerEvent): void;
98
+ onInputPointerDown(): void;
99
+ onInlineFocus(event: FocusEvent): void;
100
+ onClearClick(event: MouseEvent): void;
101
+ onTriggerClick(): void;
102
+ onFocusOut(event: FocusEvent): void;
103
+ onInput(event: Event): void;
104
+ onCompositionStart(event: CompositionEvent): void;
105
+ onCompositionEnd(event: CompositionEvent): void;
106
+ onOptionPointerMove(view: RaqmComboboxOptionView, event: PointerEvent): void;
107
+ onOptionPointerLeave(event: PointerEvent): void;
108
+ onOptionClick(item: RaqmComboboxOption): void;
109
+ isSelected(item: RaqmComboboxOption): boolean;
110
+ leavePopupByTab(event: KeyboardEvent): void;
111
+ onChipRemoveClick(index: number, event: MouseEvent): void;
112
+ removeAt(index: number): void;
113
+ focusInput(): void;
114
+ focusChip(index: number): void;
115
+ restoreTriggerFocus(): void;
116
+ private applyQueryHighlight;
117
+ private inputElement;
118
+ private chipButton;
119
+ }
120
+ interface RaqmComboboxKeyboardHost {
121
+ /** Current option views, in render order. */
122
+ views(): readonly RaqmComboboxOptionView[];
123
+ open(): boolean;
124
+ disabled(): boolean;
125
+ /** True inside an IME composition, so a composing key never commits. */
126
+ composing(): boolean;
127
+ mode(): RaqmComboboxMode;
128
+ autoHighlight(): boolean;
129
+ query(): string;
130
+ direction(): 'ltr' | 'rtl';
131
+ isOptionDisabled(item: RaqmComboboxOption): boolean;
132
+ chipCount(): number;
133
+ scrollTo(id: string | null): void;
134
+ openPopup(): void;
135
+ close(touched: boolean): void;
136
+ select(item: RaqmComboboxOption): void;
137
+ removeChip(index: number): void;
138
+ focusChip(index: number): void;
139
+ focusInput(): void;
140
+ /** The portal sits at the document end, so the next tab stop is found by the caller. */
141
+ leavePopupByTab(event: KeyboardEvent): void;
142
+ }
143
+ declare class RaqmComboboxKeyboard {
144
+ private readonly host;
145
+ private readonly injector;
146
+ private keyManager;
147
+ private suppressActivationScroll;
148
+ private readonly activeValue;
149
+ readonly activeId: import("@angular/core").Signal<string | null>;
150
+ private readonly optionRefs;
151
+ constructor(host: RaqmComboboxKeyboardHost, injector: Injector);
152
+ /**
153
+ * Creates the key manager once `items` is bound; building it in the constructor would read the
154
+ * required `items` input before Angular binds it (`NG0950`).
155
+ */
156
+ init(): void;
157
+ destroy(): void;
158
+ onTriggerKeydown(event: KeyboardEvent): void;
159
+ onKeydown(event: KeyboardEvent): void;
160
+ onChipKeydown(index: number, event: KeyboardEvent): void;
161
+ /** Moves the active option; pointer activation never scrolls. */
162
+ activateIndex(index: number, scroll: boolean): void;
163
+ /** Marks the first enabled result active; an all-disabled list is left untouched. */
164
+ activateFirst(): void;
165
+ reconcile(views: readonly RaqmComboboxOptionView[]): void;
166
+ reset(): void;
167
+ private handleChipNavigation;
168
+ }
169
+ /**
170
+ * A searchable combobox in `multiple`, `popup` and `inline` presentations.
171
+ *
172
+ * @remarks
173
+ * The host has no ARIA role or tab stop; the single `input[raqm-input]` is the `role="combobox"`
174
+ * control and the popup an overlay `role="listbox"`. Bind one controller only: `writeValue` neither
175
+ * emits nor marks touched, a user change emits once, and option values are unique strings.
176
+ */
177
+ export declare class RaqmCombobox implements ControlValueAccessor, OnInit, OnDestroy {
178
+ private readonly host;
179
+ private readonly document;
180
+ private readonly interactivityChecker;
181
+ private readonly overlay;
182
+ private readonly viewportRuler;
183
+ private readonly viewContainerRef;
184
+ private readonly injector;
185
+ private readonly directionality;
186
+ private readonly popupTemplate;
187
+ private readonly itemTemplateDirective;
188
+ private readonly inlinePrefixDirective;
189
+ private readonly chipsRef;
190
+ private readonly triggerRef;
191
+ private readonly inlineGroupRef;
192
+ private readonly autoId;
193
+ readonly mode: import("@angular/core").InputSignal<RaqmComboboxMode>;
194
+ readonly items: import("@angular/core").InputSignal<readonly RaqmComboboxEntry[]>;
195
+ /** Inline-only passive content in the input group's start addon. */
196
+ readonly inlinePrefix: Signal<TemplateRef<unknown> | null>;
197
+ /** Noninteractive option content; the option label stays the accessible name. */
198
+ readonly itemTemplate: Signal<TemplateRef<import("@raqm/ui/combobox").RaqmComboboxItemContext> | null>;
199
+ /** Popup pane width; `null` follows the anchor width. */
200
+ readonly popupWidth: import("@angular/core").InputSignal<string | null>;
201
+ /** Inline-axis offset in CSS pixels; negative moves toward inline-start. */
202
+ readonly popupAlignOffset: import("@angular/core").InputSignal<number>;
203
+ /** A string array in `multiple`, a scalar otherwise. */
204
+ readonly value: import("@angular/core").InputSignal<string | readonly string[] | null>;
205
+ /** Emits once per committed user change, never while typing. */
206
+ readonly valueChange: import("@angular/core").OutputEmitterRef<string | readonly string[] | null>;
207
+ /** Explicit disabled state, ORed with a Forms-driven one. */
208
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
209
+ /** Application-owned invalid state; drives `aria-invalid`. */
210
+ readonly invalid: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
211
+ /** Id of the real editable control; generated when absent. */
212
+ readonly inputId: import("@angular/core").InputSignal<string>;
213
+ /** Optional internal label text, rendered as a `<label [for]>`. */
214
+ readonly label: import("@angular/core").InputSignal<string | undefined>;
215
+ /** External label id(s); takes precedence over `label`. */
216
+ readonly labelledBy: import("@angular/core").InputSignal<string | undefined>;
217
+ readonly describedBy: import("@angular/core").InputSignal<string | undefined>;
218
+ /** Text shown when no item matches the query (multiple/popup). */
219
+ readonly placeholder: import("@angular/core").InputSignal<string>;
220
+ readonly searchPlaceholder: import("@angular/core").InputSignal<string | null>;
221
+ readonly emptyText: import("@angular/core").InputSignal<string | null>;
222
+ /** Accessible name of a chip's remove button. */
223
+ readonly removeLabel: import("@angular/core").InputSignal<string | null>;
224
+ /** Explicit direction; falls back to the nearest ancestor. */
225
+ readonly dir: import("@angular/core").InputSignal<"ltr" | "rtl" | undefined>;
226
+ /** Marks the first match active when typing or opening. */
227
+ readonly autoHighlight: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
228
+ /** Inline only: renders the inline-end chevron trigger. */
229
+ readonly showTrigger: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
230
+ /** Inline only: replaces the trigger with a clear button while a value exists. */
231
+ readonly showClear: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
232
+ readonly clearLabel: import("@angular/core").InputSignal<string | null>;
233
+ readonly triggerLabel: import("@angular/core").InputSignal<string | null>;
234
+ readonly selected: WritableSignal<RaqmComboboxModel>;
235
+ private readonly view;
236
+ readonly resolvedInputId: Signal<string>;
237
+ readonly labelId: Signal<string>;
238
+ /** Id of the popup listbox, referenced by the control's `aria-controls`. */
239
+ readonly listboxId: Signal<string>;
240
+ readonly popupId: Signal<string>;
241
+ readonly searchId: Signal<string>;
242
+ readonly inputLabelledBy: Signal<string | null>;
243
+ readonly flatItems: Signal<readonly RaqmComboboxOption[]>;
244
+ readonly filteredItems: Signal<readonly RaqmComboboxOption[]>;
245
+ readonly optionViews: Signal<readonly RaqmComboboxOptionView[]>;
246
+ readonly renderEntries: Signal<readonly RaqmComboboxRenderEntry[]>;
247
+ readonly selectedLabel: Signal<string | null>;
248
+ readonly selectionRemovable: Signal<boolean>;
249
+ readonly inlineValue: Signal<string>;
250
+ readonly chipViews: Signal<readonly RaqmComboboxChipView[]>;
251
+ private readonly control;
252
+ readonly effectiveDisabled: Signal<boolean>;
253
+ protected readonly field: RaqmComboboxField;
254
+ protected readonly keyboard: RaqmComboboxKeyboard;
255
+ private readonly layer;
256
+ private readonly popup;
257
+ readonly open: WritableSignal<boolean>;
258
+ readonly overlayDir: WritableSignal<'ltr' | 'rtl'>;
259
+ readonly activeId: Signal<string | null>;
260
+ readonly query: WritableSignal<string>;
261
+ readonly composingValue: WritableSignal<string | null>;
262
+ constructor();
263
+ /**
264
+ * Creates the key manager once `items` is bound; building it in the constructor would read the
265
+ * required `items` input before Angular binds it (`NG0950`).
266
+ */
267
+ ngOnInit(): void;
268
+ ngOnDestroy(): void;
269
+ isOptionDisabled(item: RaqmComboboxOption): boolean;
270
+ /** Writes an external value without emitting or marking touched; normalised per mode. */
271
+ writeValue(value: unknown): void;
272
+ registerOnChange(fn: (value: RaqmComboboxModel) => void): void;
273
+ registerOnTouched(fn: () => void): void;
274
+ /** ORs a Forms disabled state with the explicit input and closes the popup. */
275
+ setDisabledState(isDisabled: boolean): void;
276
+ static ɵfac: i0.ɵɵFactoryDeclaration<RaqmCombobox, never>;
277
+ static ɵcmp: i0.ɵɵComponentDeclaration<RaqmCombobox, "raqm-combobox", never, {
278
+ "mode": {
279
+ "alias": "mode";
280
+ "required": false;
281
+ "isSignal": true;
282
+ };
283
+ "items": {
284
+ "alias": "items";
285
+ "required": true;
286
+ "isSignal": true;
287
+ };
288
+ "popupWidth": {
289
+ "alias": "popupWidth";
290
+ "required": false;
291
+ "isSignal": true;
292
+ };
293
+ "popupAlignOffset": {
294
+ "alias": "popupAlignOffset";
295
+ "required": false;
296
+ "isSignal": true;
297
+ };
298
+ "value": {
299
+ "alias": "value";
300
+ "required": false;
301
+ "isSignal": true;
302
+ };
303
+ "disabled": {
304
+ "alias": "disabled";
305
+ "required": false;
306
+ "isSignal": true;
307
+ };
308
+ "invalid": {
309
+ "alias": "invalid";
310
+ "required": false;
311
+ "isSignal": true;
312
+ };
313
+ "inputId": {
314
+ "alias": "inputId";
315
+ "required": false;
316
+ "isSignal": true;
317
+ };
318
+ "label": {
319
+ "alias": "label";
320
+ "required": false;
321
+ "isSignal": true;
322
+ };
323
+ "labelledBy": {
324
+ "alias": "labelledBy";
325
+ "required": false;
326
+ "isSignal": true;
327
+ };
328
+ "describedBy": {
329
+ "alias": "describedBy";
330
+ "required": false;
331
+ "isSignal": true;
332
+ };
333
+ "placeholder": {
334
+ "alias": "placeholder";
335
+ "required": false;
336
+ "isSignal": true;
337
+ };
338
+ "searchPlaceholder": {
339
+ "alias": "searchPlaceholder";
340
+ "required": false;
341
+ "isSignal": true;
342
+ };
343
+ "emptyText": {
344
+ "alias": "emptyText";
345
+ "required": false;
346
+ "isSignal": true;
347
+ };
348
+ "removeLabel": {
349
+ "alias": "removeLabel";
350
+ "required": false;
351
+ "isSignal": true;
352
+ };
353
+ "dir": {
354
+ "alias": "dir";
355
+ "required": false;
356
+ "isSignal": true;
357
+ };
358
+ "autoHighlight": {
359
+ "alias": "autoHighlight";
360
+ "required": false;
361
+ "isSignal": true;
362
+ };
363
+ "showTrigger": {
364
+ "alias": "showTrigger";
365
+ "required": false;
366
+ "isSignal": true;
367
+ };
368
+ "showClear": {
369
+ "alias": "showClear";
370
+ "required": false;
371
+ "isSignal": true;
372
+ };
373
+ "clearLabel": {
374
+ "alias": "clearLabel";
375
+ "required": false;
376
+ "isSignal": true;
377
+ };
378
+ "triggerLabel": {
379
+ "alias": "triggerLabel";
380
+ "required": false;
381
+ "isSignal": true;
382
+ };
383
+ }, {
384
+ "valueChange": "valueChange";
385
+ }, ["itemTemplateDirective", "inlinePrefixDirective"], never, true, never>;
386
+ }
387
+ /**
388
+ * Projected item template for a popup row; renders with the option context (`$implicit`/`item`,
389
+ * `selected`, `active`) and must stay noninteractive — the option `label` remains the accessible name.
390
+ */
391
+ export declare class RaqmComboboxItemDirective {
392
+ readonly template: TemplateRef<RaqmComboboxItemContext>;
393
+ static ɵfac: i0.ɵɵFactoryDeclaration<RaqmComboboxItemDirective, never>;
394
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RaqmComboboxItemDirective, "ng-template[raqm-combobox-item]", ["raqmComboboxItem"], {}, {}, never, never, true, never>;
395
+ }
396
+ /**
397
+ * Projected start-addon template for the inline presentation; its content is passive and
398
+ * application-owned.
399
+ */
400
+ export declare class RaqmComboboxPrefixDirective {
401
+ readonly template: TemplateRef<unknown>;
402
+ static ɵfac: i0.ɵɵFactoryDeclaration<RaqmComboboxPrefixDirective, never>;
403
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RaqmComboboxPrefixDirective, "ng-template[raqm-combobox-prefix]", ["raqmComboboxPrefix"], {}, {}, never, never, true, never>;
404
+ }
405
+ export type { RaqmComboboxEntry, RaqmComboboxGroup, RaqmComboboxItemContext, RaqmComboboxOption };
@@ -0,0 +1,256 @@
1
+ import * as i0 from "@angular/core";
2
+ import { InjectionToken, OnInit, Signal } from "@angular/core";
3
+ import { RaqmDialogBaseComponent } from "@raqm/ui/dialog";
4
+ interface RaqmCommandOption {
5
+ readonly id: string;
6
+ readonly element: HTMLElement;
7
+ readonly disabled: boolean;
8
+ readonly checked: Signal<boolean>;
9
+ readonly group: string | null;
10
+ readonly value: Signal<string>;
11
+ readonly title: Signal<string>;
12
+ readonly keywords: Signal<readonly string[]>;
13
+ setActiveStyles(): void;
14
+ setInactiveStyles(): void;
15
+ select(): void;
16
+ scrollIntoView(): void;
17
+ }
18
+ declare const RAQM_COMMAND: InjectionToken<RaqmCommandComponent>;
19
+ declare const RAQM_COMMAND_GROUP: InjectionToken<string>;
20
+ /** Inline command palette. Focus stays on its input; active options never receive DOM focus. */
21
+ export declare class RaqmCommandComponent {
22
+ /** The application-authored accessible name for the listbox. */
23
+ readonly label: import("@angular/core").InputSignal<string>;
24
+ readonly search: import("@angular/core").ModelSignal<string>;
25
+ /** Whether keyboard navigation wraps at the ends; defaults to `false`. */
26
+ readonly loop: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
27
+ /** Whether search filters and ranks rows; defaults to `true`. */
28
+ readonly shouldFilter: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
29
+ readonly listId: string;
30
+ readonly inputId: string;
31
+ readonly items: import("@angular/core").WritableSignal<readonly RaqmCommandOption[]>;
32
+ readonly activeId: import("@angular/core").WritableSignal<string | null>;
33
+ readonly listPresent: import("@angular/core").WritableSignal<boolean>;
34
+ readonly visibleItems: import("@angular/core").Signal<RaqmCommandOption[]>;
35
+ /** Whether any registered row is checked; switches the list to multi-select. */
36
+ readonly hasChecked: import("@angular/core").Signal<boolean>;
37
+ private readonly scores;
38
+ private readonly rankedItems;
39
+ private readonly injector;
40
+ readonly contentInjector: import("@angular/core").DestroyableInjector;
41
+ private readonly manager;
42
+ private sequence;
43
+ private focusInput;
44
+ private readonly originalChildren;
45
+ constructor();
46
+ private lastSearch;
47
+ register(item: RaqmCommandOption): void;
48
+ unregister(item: RaqmCommandOption): void;
49
+ mintId(): string;
50
+ registerInput(focus: () => void): void;
51
+ unregisterInput(): void;
52
+ matches(item: RaqmCommandOption): boolean;
53
+ activate(item: RaqmCommandOption): void;
54
+ select(item: RaqmCommandOption): void;
55
+ keydown(event: KeyboardEvent): void;
56
+ static ɵfac: i0.ɵɵFactoryDeclaration<RaqmCommandComponent, never>;
57
+ static ɵcmp: i0.ɵɵComponentDeclaration<RaqmCommandComponent, "raqm-command", never, {
58
+ "label": {
59
+ "alias": "label";
60
+ "required": true;
61
+ "isSignal": true;
62
+ };
63
+ "search": {
64
+ "alias": "search";
65
+ "required": false;
66
+ "isSignal": true;
67
+ };
68
+ "loop": {
69
+ "alias": "loop";
70
+ "required": false;
71
+ "isSignal": true;
72
+ };
73
+ "shouldFilter": {
74
+ "alias": "shouldFilter";
75
+ "required": false;
76
+ "isSignal": true;
77
+ };
78
+ }, {
79
+ "search": "searchChange";
80
+ }, never, ["*"], true, never>;
81
+ }
82
+ /** Command modal using Dialog's lifecycle. Project an ng-template[raqm-dialog-content]; a trigger is optional. */
83
+ export declare class RaqmCommandDialogComponent extends RaqmDialogBaseComponent {
84
+ /** Whether the root renders its own close control; defaults to `false`. */
85
+ readonly showCloseButton: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
86
+ readonly closeLabel: import("@angular/core").InputSignal<string | undefined>;
87
+ readonly title: import("@angular/core").InputSignal<string>;
88
+ /** Optional supporting copy under the title. */
89
+ readonly description: import("@angular/core").InputSignal<string>;
90
+ protected readonly closeButtonVisible: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
91
+ protected readonly closeLabelText: Signal<string | undefined>;
92
+ static ɵfac: i0.ɵɵFactoryDeclaration<RaqmCommandDialogComponent, never>;
93
+ static ɵcmp: i0.ɵɵComponentDeclaration<RaqmCommandDialogComponent, "raqm-command-dialog", never, {
94
+ "showCloseButton": {
95
+ "alias": "showCloseButton";
96
+ "required": false;
97
+ "isSignal": true;
98
+ };
99
+ "closeLabel": {
100
+ "alias": "closeLabel";
101
+ "required": false;
102
+ "isSignal": true;
103
+ };
104
+ "title": {
105
+ "alias": "title";
106
+ "required": true;
107
+ "isSignal": true;
108
+ };
109
+ "description": {
110
+ "alias": "description";
111
+ "required": false;
112
+ "isSignal": true;
113
+ };
114
+ }, {}, never, ["*"], true, never>;
115
+ }
116
+ /** Native search input composed with Input Group, owning the palette's single tab stop. */
117
+ export declare class RaqmCommandInputComponent {
118
+ protected readonly command: import("@raqm/ui/command").RaqmCommandComponent;
119
+ readonly placeholder: import("@angular/core").InputSignal<string>;
120
+ readonly label: import("@angular/core").InputSignal<string>;
121
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
122
+ private readonly control;
123
+ constructor();
124
+ protected onInput(event: Event): void;
125
+ static ɵfac: i0.ɵɵFactoryDeclaration<RaqmCommandInputComponent, never>;
126
+ static ɵcmp: i0.ɵɵComponentDeclaration<RaqmCommandInputComponent, "raqm-command-input", never, {
127
+ "placeholder": {
128
+ "alias": "placeholder";
129
+ "required": false;
130
+ "isSignal": true;
131
+ };
132
+ "label": {
133
+ "alias": "label";
134
+ "required": true;
135
+ "isSignal": true;
136
+ };
137
+ "disabled": {
138
+ "alias": "disabled";
139
+ "required": false;
140
+ "isSignal": true;
141
+ };
142
+ }, {}, never, never, true, never>;
143
+ }
144
+ /** Scrollable, named result list for the input's combobox. */
145
+ export declare class RaqmCommandListComponent {
146
+ protected readonly command: import("@raqm/ui/command").RaqmCommandComponent;
147
+ readonly label: import("@angular/core").InputSignal<string>;
148
+ constructor();
149
+ static ɵfac: i0.ɵɵFactoryDeclaration<RaqmCommandListComponent, never>;
150
+ static ɵcmp: i0.ɵɵComponentDeclaration<RaqmCommandListComponent, "raqm-command-list", never, {
151
+ "label": {
152
+ "alias": "label";
153
+ "required": false;
154
+ "isSignal": true;
155
+ };
156
+ }, {}, never, ["*"], true, never>;
157
+ }
158
+ /** Empty-results message, including when filtering removes every group. */
159
+ export declare class RaqmCommandEmptyComponent {
160
+ protected readonly command: import("@raqm/ui/command").RaqmCommandComponent;
161
+ static ɵfac: i0.ɵɵFactoryDeclaration<RaqmCommandEmptyComponent, never>;
162
+ static ɵcmp: i0.ɵɵComponentDeclaration<RaqmCommandEmptyComponent, "raqm-command-empty", never, {}, {}, never, ["*"], true, never>;
163
+ }
164
+ /** Named option group; hides its heading with its last filtered-out item. */
165
+ export declare class RaqmCommandGroupComponent implements OnInit {
166
+ protected readonly command: import("@raqm/ui/command").RaqmCommandComponent;
167
+ readonly id: string;
168
+ readonly headingId: string;
169
+ readonly heading: import("@angular/core").InputSignal<string>;
170
+ readonly label: import("@angular/core").InputSignal<string>;
171
+ protected readonly visible: import("@angular/core").Signal<boolean>;
172
+ ngOnInit(): void;
173
+ static ɵfac: i0.ɵɵFactoryDeclaration<RaqmCommandGroupComponent, never>;
174
+ static ɵcmp: i0.ɵɵComponentDeclaration<RaqmCommandGroupComponent, "raqm-command-group", never, {
175
+ "heading": {
176
+ "alias": "heading";
177
+ "required": false;
178
+ "isSignal": true;
179
+ };
180
+ "label": {
181
+ "alias": "label";
182
+ "required": false;
183
+ "isSignal": true;
184
+ };
185
+ }, {}, never, ["*"], true, never>;
186
+ }
187
+ export declare class RaqmCommandSeparatorDirective {
188
+ protected readonly command: import("@raqm/ui/command").RaqmCommandComponent;
189
+ readonly alwaysRender: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
190
+ static ɵfac: i0.ɵɵFactoryDeclaration<RaqmCommandSeparatorDirective, never>;
191
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RaqmCommandSeparatorDirective, "[raqm-command-separator]", never, {
192
+ "alwaysRender": {
193
+ "alias": "alwaysRender";
194
+ "required": false;
195
+ "isSignal": true;
196
+ };
197
+ }, {}, never, never, true, never>;
198
+ }
199
+ export declare class RaqmCommandItemComponent implements RaqmCommandOption, OnInit {
200
+ protected readonly command: import("@raqm/ui/command").RaqmCommandComponent;
201
+ private readonly host;
202
+ readonly group: string | null;
203
+ readonly id: string;
204
+ readonly value: import("@angular/core").InputSignal<string>;
205
+ readonly title: import("@angular/core").InputSignal<string>;
206
+ readonly keywords: import("@angular/core").InputSignal<readonly string[]>;
207
+ readonly disabledValue: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
208
+ readonly checked: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
209
+ readonly selected: import("@angular/core").OutputEmitterRef<string>;
210
+ get disabled(): boolean;
211
+ get element(): HTMLElement;
212
+ constructor();
213
+ ngOnInit(): void;
214
+ setActiveStyles(): void;
215
+ setInactiveStyles(): void;
216
+ select(): void;
217
+ scrollIntoView(): void;
218
+ protected onPointerMove(event: PointerEvent): void;
219
+ static ɵfac: i0.ɵɵFactoryDeclaration<RaqmCommandItemComponent, never>;
220
+ static ɵcmp: i0.ɵɵComponentDeclaration<RaqmCommandItemComponent, "raqm-command-item", never, {
221
+ "value": {
222
+ "alias": "value";
223
+ "required": true;
224
+ "isSignal": true;
225
+ };
226
+ "title": {
227
+ "alias": "title";
228
+ "required": false;
229
+ "isSignal": true;
230
+ };
231
+ "keywords": {
232
+ "alias": "keywords";
233
+ "required": false;
234
+ "isSignal": true;
235
+ };
236
+ "disabledValue": {
237
+ "alias": "disabled";
238
+ "required": false;
239
+ "isSignal": true;
240
+ };
241
+ "checked": {
242
+ "alias": "checked";
243
+ "required": false;
244
+ "isSignal": true;
245
+ };
246
+ }, {
247
+ "selected": "selected";
248
+ }, never, ["*"], true, never>;
249
+ }
250
+ /** Display-only shortcut. This never registers a global keyboard binding. */
251
+ export declare class RaqmCommandShortcutDirective {
252
+ static ɵfac: i0.ɵɵFactoryDeclaration<RaqmCommandShortcutDirective, never>;
253
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RaqmCommandShortcutDirective, "[raqm-command-shortcut]", never, {}, {}, never, never, true, never>;
254
+ }
255
+ export declare const RaqmCommand: readonly [typeof RaqmCommandComponent, typeof RaqmCommandDialogComponent, typeof RaqmCommandInputComponent, typeof RaqmCommandListComponent, typeof RaqmCommandEmptyComponent, typeof RaqmCommandGroupComponent, typeof RaqmCommandSeparatorDirective, typeof RaqmCommandItemComponent, typeof RaqmCommandShortcutDirective];
256
+ export {};