@radix-ng/primitives 1.0.10 → 1.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.
- package/README.md +26 -5
- package/fesm2022/radix-ng-primitives-autocomplete.mjs +88 -21
- package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +199 -129
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-combobox.mjs +203 -52
- package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-composite.mjs +221 -36
- package/fesm2022/radix-ng-primitives-composite.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +352 -24
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +11 -5
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +127 -23
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-form.mjs +35 -4
- package/fesm2022/radix-ng-primitives-form.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-input.mjs +87 -15
- package/fesm2022/radix-ng-primitives-input.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +34 -7
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +38 -7
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +80 -11
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +49 -2
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +6 -3
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +70 -14
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-signal-forms.mjs +27 -11
- package/fesm2022/radix-ng-primitives-signal-forms.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +17 -2
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +60 -7
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +12 -6
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +25 -3
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/package.json +8 -3
- package/types/radix-ng-primitives-autocomplete.d.ts +16 -2
- package/types/radix-ng-primitives-checkbox.d.ts +66 -44
- package/types/radix-ng-primitives-combobox.d.ts +74 -3
- package/types/radix-ng-primitives-composite.d.ts +48 -2
- package/types/radix-ng-primitives-core.d.ts +212 -96
- package/types/radix-ng-primitives-date-field.d.ts +7 -4
- package/types/radix-ng-primitives-field.d.ts +55 -8
- package/types/radix-ng-primitives-form.d.ts +9 -0
- package/types/radix-ng-primitives-input.d.ts +10 -2
- package/types/radix-ng-primitives-menu.d.ts +45 -4
- package/types/radix-ng-primitives-navigation-menu.d.ts +2 -2
- package/types/radix-ng-primitives-number-field.d.ts +12 -5
- package/types/radix-ng-primitives-popover.d.ts +2 -2
- package/types/radix-ng-primitives-popper.d.ts +60 -15
- package/types/radix-ng-primitives-preview-card.d.ts +2 -2
- package/types/radix-ng-primitives-radio.d.ts +6 -1
- package/types/radix-ng-primitives-select.d.ts +25 -4
- package/types/radix-ng-primitives-signal-forms.d.ts +22 -8
- package/types/radix-ng-primitives-slider.d.ts +2 -1
- package/types/radix-ng-primitives-switch.d.ts +19 -3
- package/types/radix-ng-primitives-time-field.d.ts +9 -6
- package/types/radix-ng-primitives-toggle-group.d.ts +5 -1
- package/types/radix-ng-primitives-tooltip.d.ts +2 -2
|
@@ -92,6 +92,8 @@ interface ComboboxEngineConfig {
|
|
|
92
92
|
items: Signal<readonly AcceptableValue[] | undefined>;
|
|
93
93
|
/** Filter: `undefined` → default contains; a function → custom; `null` → built-in filtering off. */
|
|
94
94
|
filter: Signal<ComboboxFilter | null | undefined>;
|
|
95
|
+
/** Locale for the default `contains` collator; `undefined` → the runtime's default locale. */
|
|
96
|
+
locale: Signal<Intl.LocalesArgument>;
|
|
95
97
|
/** Maximum number of matching items to show (`-1` = no limit). */
|
|
96
98
|
limit: Signal<number>;
|
|
97
99
|
/** Whether the list is a 2D grid (row/column arrow navigation). Defaults off for plain lists. */
|
|
@@ -142,7 +144,7 @@ declare function useComboboxEngine(config: ComboboxEngineConfig): {
|
|
|
142
144
|
readonly triggerElement: HTMLElement | null;
|
|
143
145
|
setTrigger(el: HTMLElement | null): void;
|
|
144
146
|
orderedItems: Signal<ComboboxItemRef[]>;
|
|
145
|
-
visibleItems: Signal<ComboboxItemRef[]>;
|
|
147
|
+
visibleItems: Signal<readonly ComboboxItemRef[]>;
|
|
146
148
|
visibleCount: Signal<number>;
|
|
147
149
|
filteredItems: Signal<readonly AcceptableValue[]>;
|
|
148
150
|
isVisible: (item: ComboboxItemRef) => boolean;
|
|
@@ -218,6 +220,9 @@ declare const context: () => {
|
|
|
218
220
|
dir: _angular_core.Signal<Direction>;
|
|
219
221
|
value: _angular_core.ModelSignal<ComboboxValue>;
|
|
220
222
|
inputValue: _angular_core.ModelSignal<string>;
|
|
223
|
+
name: _angular_core.InputSignal<string | undefined>;
|
|
224
|
+
form: _angular_core.InputSignal<string | undefined>;
|
|
225
|
+
inputOwnsFormValue: _angular_core.Signal<boolean>;
|
|
221
226
|
open: _angular_core.ModelSignal<boolean>;
|
|
222
227
|
present: _angular_core.Signal<boolean>;
|
|
223
228
|
multiple: _angular_core.Signal<boolean>;
|
|
@@ -226,6 +231,8 @@ declare const context: () => {
|
|
|
226
231
|
readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
227
232
|
requiredState: _angular_core.Signal<boolean>;
|
|
228
233
|
invalidState: _angular_core.Signal<boolean>;
|
|
234
|
+
pendingState: _angular_core.Signal<boolean>;
|
|
235
|
+
validState: _angular_core.Signal<boolean | null>;
|
|
229
236
|
touchedState: _angular_core.Signal<boolean>;
|
|
230
237
|
dirtyState: _angular_core.Signal<boolean>;
|
|
231
238
|
openOnInputClick: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -293,6 +300,9 @@ declare const injectComboboxRootContext: _radix_ng_primitives_core.InjectContext
|
|
|
293
300
|
dir: _angular_core.Signal<Direction>;
|
|
294
301
|
value: _angular_core.ModelSignal<ComboboxValue>;
|
|
295
302
|
inputValue: _angular_core.ModelSignal<string>;
|
|
303
|
+
name: _angular_core.InputSignal<string | undefined>;
|
|
304
|
+
form: _angular_core.InputSignal<string | undefined>;
|
|
305
|
+
inputOwnsFormValue: _angular_core.Signal<boolean>;
|
|
296
306
|
open: _angular_core.ModelSignal<boolean>;
|
|
297
307
|
present: _angular_core.Signal<boolean>;
|
|
298
308
|
multiple: _angular_core.Signal<boolean>;
|
|
@@ -301,6 +311,8 @@ declare const injectComboboxRootContext: _radix_ng_primitives_core.InjectContext
|
|
|
301
311
|
readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
302
312
|
requiredState: _angular_core.Signal<boolean>;
|
|
303
313
|
invalidState: _angular_core.Signal<boolean>;
|
|
314
|
+
pendingState: _angular_core.Signal<boolean>;
|
|
315
|
+
validState: _angular_core.Signal<boolean | null>;
|
|
304
316
|
touchedState: _angular_core.Signal<boolean>;
|
|
305
317
|
dirtyState: _angular_core.Signal<boolean>;
|
|
306
318
|
openOnInputClick: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -367,6 +379,9 @@ declare const provideComboboxRootContext: (useFactory: () => {
|
|
|
367
379
|
dir: _angular_core.Signal<Direction>;
|
|
368
380
|
value: _angular_core.ModelSignal<ComboboxValue>;
|
|
369
381
|
inputValue: _angular_core.ModelSignal<string>;
|
|
382
|
+
name: _angular_core.InputSignal<string | undefined>;
|
|
383
|
+
form: _angular_core.InputSignal<string | undefined>;
|
|
384
|
+
inputOwnsFormValue: _angular_core.Signal<boolean>;
|
|
370
385
|
open: _angular_core.ModelSignal<boolean>;
|
|
371
386
|
present: _angular_core.Signal<boolean>;
|
|
372
387
|
multiple: _angular_core.Signal<boolean>;
|
|
@@ -375,6 +390,8 @@ declare const provideComboboxRootContext: (useFactory: () => {
|
|
|
375
390
|
readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
376
391
|
requiredState: _angular_core.Signal<boolean>;
|
|
377
392
|
invalidState: _angular_core.Signal<boolean>;
|
|
393
|
+
pendingState: _angular_core.Signal<boolean>;
|
|
394
|
+
validState: _angular_core.Signal<boolean | null>;
|
|
378
395
|
touchedState: _angular_core.Signal<boolean>;
|
|
379
396
|
dirtyState: _angular_core.Signal<boolean>;
|
|
380
397
|
openOnInputClick: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -467,6 +484,8 @@ declare class RdxComboboxRoot extends RdxFormUiControlBase implements ControlVal
|
|
|
467
484
|
readonly mode: _angular_core.Signal<"none" | "single" | "multiple">;
|
|
468
485
|
/** Whether the combobox is in multiple-selection mode. */
|
|
469
486
|
readonly multiple: _angular_core.Signal<boolean>;
|
|
487
|
+
/** Whether the visible text input owns native serialization in filter-only mode. */
|
|
488
|
+
readonly inputOwnsFormValue: _angular_core.Signal<boolean>;
|
|
470
489
|
/** In `'none'` mode, whether pressing an item fills the input with its label. */
|
|
471
490
|
readonly fillInputOnItemPress: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
472
491
|
/** Text direction. */
|
|
@@ -478,6 +497,10 @@ declare class RdxComboboxRoot extends RdxFormUiControlBase implements ControlVal
|
|
|
478
497
|
readonly readOnly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
479
498
|
/** Whether a value is required (for forms). */
|
|
480
499
|
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
500
|
+
/** Name used when serializing the committed selection into native `FormData`. */
|
|
501
|
+
readonly name: _angular_core.InputSignal<string | undefined>;
|
|
502
|
+
/** Id of an external form that owns this control. */
|
|
503
|
+
readonly form: _angular_core.InputSignal<string | undefined>;
|
|
481
504
|
/** Whether keyboard navigation wraps at the list boundaries. */
|
|
482
505
|
readonly loopFocus: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
483
506
|
/**
|
|
@@ -514,6 +537,8 @@ declare class RdxComboboxRoot extends RdxFormUiControlBase implements ControlVal
|
|
|
514
537
|
* - `null`: built-in filtering disabled (the consumer controls which items exist).
|
|
515
538
|
*/
|
|
516
539
|
readonly filter: _angular_core.InputSignal<ComboboxFilter | null | undefined>;
|
|
540
|
+
/** Locale for the default `contains` filter's string comparison. Defaults to the runtime locale. */
|
|
541
|
+
readonly locale: _angular_core.InputSignal<Intl.LocalesArgument>;
|
|
517
542
|
/** Maximum number of matching items to show. `-1` (default) means no limit. */
|
|
518
543
|
readonly limit: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
519
544
|
/**
|
|
@@ -539,6 +564,8 @@ declare class RdxComboboxRoot extends RdxFormUiControlBase implements ControlVal
|
|
|
539
564
|
readonly isItemEqualToValue: _angular_core.InputSignal<ItemValueComparator<AcceptableValue> | undefined>;
|
|
540
565
|
/** Converts a value to its display label. Defaults to the matching item's text. */
|
|
541
566
|
readonly itemToStringLabel: _angular_core.InputSignal<((value: AcceptableValue) => string) | undefined>;
|
|
567
|
+
/** Converts an item value to the string submitted by a native form. */
|
|
568
|
+
readonly itemToStringValue: _angular_core.InputSignal<((value: AcceptableValue) => string) | undefined>;
|
|
542
569
|
/** Emits before the selection changes; call `eventDetails.cancel()` to veto it. */
|
|
543
570
|
readonly onValueChange: _angular_core.OutputEmitterRef<RdxComboboxValueChange>;
|
|
544
571
|
/** Emits before the input text changes; call `eventDetails.cancel()` to veto it. */
|
|
@@ -554,9 +581,13 @@ declare class RdxComboboxRoot extends RdxFormUiControlBase implements ControlVal
|
|
|
554
581
|
readonly onOpenChangeComplete: _angular_core.OutputEmitterRef<boolean>;
|
|
555
582
|
private readonly cvaDisabled;
|
|
556
583
|
readonly disabledState: _angular_core.Signal<boolean>;
|
|
584
|
+
private readonly nativeFormValue;
|
|
585
|
+
private readonly nativeFormControl;
|
|
557
586
|
readonly requiredState: _angular_core.Signal<boolean>;
|
|
558
587
|
/** @ignore */
|
|
559
588
|
readonly invalidState: _angular_core.Signal<boolean>;
|
|
589
|
+
readonly pendingState: _angular_core.Signal<boolean>;
|
|
590
|
+
readonly validState: _angular_core.Signal<boolean | null>;
|
|
560
591
|
/** @ignore */
|
|
561
592
|
readonly touchedState: _angular_core.Signal<boolean>;
|
|
562
593
|
/** @ignore */
|
|
@@ -648,7 +679,7 @@ declare class RdxComboboxRoot extends RdxFormUiControlBase implements ControlVal
|
|
|
648
679
|
registerOnTouched(fn: () => void): void;
|
|
649
680
|
setDisabledState(isDisabled: boolean): void;
|
|
650
681
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxComboboxRoot, never>;
|
|
651
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxComboboxRoot, "[rdxComboboxRoot]", ["rdxComboboxRoot"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "inputValue": { "alias": "inputValue"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "multipleInput": { "alias": "multiple"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "fillInputOnItemPress": { "alias": "fillInputOnItemPress"; "required": false; "isSignal": true; }; "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "loopFocus": { "alias": "loopFocus"; "required": false; "isSignal": true; }; "autoHighlight": { "alias": "autoHighlight"; "required": false; "isSignal": true; }; "highlightItemOnHover": { "alias": "highlightItemOnHover"; "required": false; "isSignal": true; }; "keepHighlight": { "alias": "keepHighlight"; "required": false; "isSignal": true; }; "openOnInputClick": { "alias": "openOnInputClick"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "submitOnItemClick": { "alias": "submitOnItemClick"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "limit": { "alias": "limit"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "virtualized": { "alias": "virtualized"; "required": false; "isSignal": true; }; "grid": { "alias": "grid"; "required": false; "isSignal": true; }; "isItemEqualToValue": { "alias": "isItemEqualToValue"; "required": false; "isSignal": true; }; "itemToStringLabel": { "alias": "itemToStringLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "inputValue": "inputValueChange"; "open": "openChange"; "onValueChange": "onValueChange"; "onInputValueChange": "onInputValueChange"; "onOpenChange": "onOpenChange"; "onItemHighlighted": "onItemHighlighted"; "onOpenChangeComplete": "onOpenChangeComplete"; }, never, never, true, [{ directive: typeof i1.RdxPopper; inputs: {}; outputs: {}; }]>;
|
|
682
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxComboboxRoot, "[rdxComboboxRoot]", ["rdxComboboxRoot"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "inputValue": { "alias": "inputValue"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "multipleInput": { "alias": "multiple"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "fillInputOnItemPress": { "alias": "fillInputOnItemPress"; "required": false; "isSignal": true; }; "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "loopFocus": { "alias": "loopFocus"; "required": false; "isSignal": true; }; "autoHighlight": { "alias": "autoHighlight"; "required": false; "isSignal": true; }; "highlightItemOnHover": { "alias": "highlightItemOnHover"; "required": false; "isSignal": true; }; "keepHighlight": { "alias": "keepHighlight"; "required": false; "isSignal": true; }; "openOnInputClick": { "alias": "openOnInputClick"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "submitOnItemClick": { "alias": "submitOnItemClick"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "limit": { "alias": "limit"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "virtualized": { "alias": "virtualized"; "required": false; "isSignal": true; }; "grid": { "alias": "grid"; "required": false; "isSignal": true; }; "isItemEqualToValue": { "alias": "isItemEqualToValue"; "required": false; "isSignal": true; }; "itemToStringLabel": { "alias": "itemToStringLabel"; "required": false; "isSignal": true; }; "itemToStringValue": { "alias": "itemToStringValue"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "inputValue": "inputValueChange"; "open": "openChange"; "onValueChange": "onValueChange"; "onInputValueChange": "onInputValueChange"; "onOpenChange": "onOpenChange"; "onItemHighlighted": "onItemHighlighted"; "onOpenChangeComplete": "onOpenChangeComplete"; }, never, never, true, [{ directive: typeof i1.RdxPopper; inputs: {}; outputs: {}; }]>;
|
|
652
683
|
}
|
|
653
684
|
|
|
654
685
|
/**
|
|
@@ -679,6 +710,9 @@ declare class RdxComboboxInput {
|
|
|
679
710
|
dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
|
|
680
711
|
value: _angular_core.ModelSignal<_radix_ng_primitives_combobox.ComboboxValue>;
|
|
681
712
|
inputValue: _angular_core.ModelSignal<string>;
|
|
713
|
+
name: _angular_core.InputSignal<string | undefined>;
|
|
714
|
+
form: _angular_core.InputSignal<string | undefined>;
|
|
715
|
+
inputOwnsFormValue: _angular_core.Signal<boolean>;
|
|
682
716
|
open: _angular_core.ModelSignal<boolean>;
|
|
683
717
|
present: _angular_core.Signal<boolean>;
|
|
684
718
|
multiple: _angular_core.Signal<boolean>;
|
|
@@ -687,6 +721,8 @@ declare class RdxComboboxInput {
|
|
|
687
721
|
readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
688
722
|
requiredState: _angular_core.Signal<boolean>;
|
|
689
723
|
invalidState: _angular_core.Signal<boolean>;
|
|
724
|
+
pendingState: _angular_core.Signal<boolean>;
|
|
725
|
+
validState: _angular_core.Signal<boolean | null>;
|
|
690
726
|
touchedState: _angular_core.Signal<boolean>;
|
|
691
727
|
dirtyState: _angular_core.Signal<boolean>;
|
|
692
728
|
openOnInputClick: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -752,7 +788,6 @@ declare class RdxComboboxInput {
|
|
|
752
788
|
readonly id: _angular_core.InputSignal<string>;
|
|
753
789
|
/** Marks the input as invalid independently of any Field state. */
|
|
754
790
|
readonly invalid: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
755
|
-
protected readonly invalidState: _angular_core.Signal<boolean>;
|
|
756
791
|
/**
|
|
757
792
|
* Tri-state *displayed* validity: the enclosing Field's gated `validState` when inside a `rdxFieldRoot`
|
|
758
793
|
* (so a field whose `validationMode` defers display (e.g. `onBlur`) keeps the input neutral until revealed), else the input's
|
|
@@ -801,6 +836,9 @@ declare class RdxComboboxInputGroup {
|
|
|
801
836
|
dir: _angular_core.Signal<_radix_ng_primitives_types_radix_ng_primitives_core.Direction>;
|
|
802
837
|
value: _angular_core.ModelSignal<_radix_ng_primitives_combobox.ComboboxValue>;
|
|
803
838
|
inputValue: _angular_core.ModelSignal<string>;
|
|
839
|
+
name: _angular_core.InputSignal<string | undefined>;
|
|
840
|
+
form: _angular_core.InputSignal<string | undefined>;
|
|
841
|
+
inputOwnsFormValue: _angular_core.Signal<boolean>;
|
|
804
842
|
open: _angular_core.ModelSignal<boolean>;
|
|
805
843
|
present: _angular_core.Signal<boolean>;
|
|
806
844
|
multiple: _angular_core.Signal<boolean>;
|
|
@@ -809,6 +847,8 @@ declare class RdxComboboxInputGroup {
|
|
|
809
847
|
readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
810
848
|
requiredState: _angular_core.Signal<boolean>;
|
|
811
849
|
invalidState: _angular_core.Signal<boolean>;
|
|
850
|
+
pendingState: _angular_core.Signal<boolean>;
|
|
851
|
+
validState: _angular_core.Signal<boolean | null>;
|
|
812
852
|
touchedState: _angular_core.Signal<boolean>;
|
|
813
853
|
dirtyState: _angular_core.Signal<boolean>;
|
|
814
854
|
openOnInputClick: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -921,6 +961,9 @@ declare class RdxComboboxTrigger {
|
|
|
921
961
|
dir: _angular_core.Signal<_radix_ng_primitives_types_radix_ng_primitives_core.Direction>;
|
|
922
962
|
value: _angular_core.ModelSignal<_radix_ng_primitives_combobox.ComboboxValue>;
|
|
923
963
|
inputValue: _angular_core.ModelSignal<string>;
|
|
964
|
+
name: _angular_core.InputSignal<string | undefined>;
|
|
965
|
+
form: _angular_core.InputSignal<string | undefined>;
|
|
966
|
+
inputOwnsFormValue: _angular_core.Signal<boolean>;
|
|
924
967
|
open: _angular_core.ModelSignal<boolean>;
|
|
925
968
|
present: _angular_core.Signal<boolean>;
|
|
926
969
|
multiple: _angular_core.Signal<boolean>;
|
|
@@ -929,6 +972,8 @@ declare class RdxComboboxTrigger {
|
|
|
929
972
|
readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
930
973
|
requiredState: _angular_core.Signal<boolean>;
|
|
931
974
|
invalidState: _angular_core.Signal<boolean>;
|
|
975
|
+
pendingState: _angular_core.Signal<boolean>;
|
|
976
|
+
validState: _angular_core.Signal<boolean | null>;
|
|
932
977
|
touchedState: _angular_core.Signal<boolean>;
|
|
933
978
|
dirtyState: _angular_core.Signal<boolean>;
|
|
934
979
|
openOnInputClick: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -1022,6 +1067,9 @@ declare class RdxComboboxClear {
|
|
|
1022
1067
|
dir: _angular_core.Signal<_radix_ng_primitives_types_radix_ng_primitives_core.Direction>;
|
|
1023
1068
|
value: _angular_core.ModelSignal<_radix_ng_primitives_combobox.ComboboxValue>;
|
|
1024
1069
|
inputValue: _angular_core.ModelSignal<string>;
|
|
1070
|
+
name: _angular_core.InputSignal<string | undefined>;
|
|
1071
|
+
form: _angular_core.InputSignal<string | undefined>;
|
|
1072
|
+
inputOwnsFormValue: _angular_core.Signal<boolean>;
|
|
1025
1073
|
open: _angular_core.ModelSignal<boolean>;
|
|
1026
1074
|
present: _angular_core.Signal<boolean>;
|
|
1027
1075
|
multiple: _angular_core.Signal<boolean>;
|
|
@@ -1030,6 +1078,8 @@ declare class RdxComboboxClear {
|
|
|
1030
1078
|
readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1031
1079
|
requiredState: _angular_core.Signal<boolean>;
|
|
1032
1080
|
invalidState: _angular_core.Signal<boolean>;
|
|
1081
|
+
pendingState: _angular_core.Signal<boolean>;
|
|
1082
|
+
validState: _angular_core.Signal<boolean | null>;
|
|
1033
1083
|
touchedState: _angular_core.Signal<boolean>;
|
|
1034
1084
|
dirtyState: _angular_core.Signal<boolean>;
|
|
1035
1085
|
openOnInputClick: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -1152,6 +1202,9 @@ declare class RdxComboboxBackdrop {
|
|
|
1152
1202
|
dir: _angular_core.Signal<_radix_ng_primitives_types_radix_ng_primitives_core.Direction>;
|
|
1153
1203
|
value: _angular_core.ModelSignal<_radix_ng_primitives_combobox.ComboboxValue>;
|
|
1154
1204
|
inputValue: _angular_core.ModelSignal<string>;
|
|
1205
|
+
name: _angular_core.InputSignal<string | undefined>;
|
|
1206
|
+
form: _angular_core.InputSignal<string | undefined>;
|
|
1207
|
+
inputOwnsFormValue: _angular_core.Signal<boolean>;
|
|
1155
1208
|
open: _angular_core.ModelSignal<boolean>;
|
|
1156
1209
|
present: _angular_core.Signal<boolean>;
|
|
1157
1210
|
multiple: _angular_core.Signal<boolean>;
|
|
@@ -1160,6 +1213,8 @@ declare class RdxComboboxBackdrop {
|
|
|
1160
1213
|
readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1161
1214
|
requiredState: _angular_core.Signal<boolean>;
|
|
1162
1215
|
invalidState: _angular_core.Signal<boolean>;
|
|
1216
|
+
pendingState: _angular_core.Signal<boolean>;
|
|
1217
|
+
validState: _angular_core.Signal<boolean | null>;
|
|
1163
1218
|
touchedState: _angular_core.Signal<boolean>;
|
|
1164
1219
|
dirtyState: _angular_core.Signal<boolean>;
|
|
1165
1220
|
openOnInputClick: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -1254,6 +1309,9 @@ declare class RdxComboboxPopup {
|
|
|
1254
1309
|
dir: _angular_core.Signal<_radix_ng_primitives_core.Direction>;
|
|
1255
1310
|
value: _angular_core.ModelSignal<_radix_ng_primitives_combobox.ComboboxValue>;
|
|
1256
1311
|
inputValue: _angular_core.ModelSignal<string>;
|
|
1312
|
+
name: _angular_core.InputSignal<string | undefined>;
|
|
1313
|
+
form: _angular_core.InputSignal<string | undefined>;
|
|
1314
|
+
inputOwnsFormValue: _angular_core.Signal<boolean>;
|
|
1257
1315
|
open: _angular_core.ModelSignal<boolean>;
|
|
1258
1316
|
present: _angular_core.Signal<boolean>;
|
|
1259
1317
|
multiple: _angular_core.Signal<boolean>;
|
|
@@ -1262,6 +1320,8 @@ declare class RdxComboboxPopup {
|
|
|
1262
1320
|
readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1263
1321
|
requiredState: _angular_core.Signal<boolean>;
|
|
1264
1322
|
invalidState: _angular_core.Signal<boolean>;
|
|
1323
|
+
pendingState: _angular_core.Signal<boolean>;
|
|
1324
|
+
validState: _angular_core.Signal<boolean | null>;
|
|
1265
1325
|
touchedState: _angular_core.Signal<boolean>;
|
|
1266
1326
|
dirtyState: _angular_core.Signal<boolean>;
|
|
1267
1327
|
openOnInputClick: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -1363,6 +1423,9 @@ declare class RdxComboboxList {
|
|
|
1363
1423
|
dir: _angular_core.Signal<_radix_ng_primitives_types_radix_ng_primitives_core.Direction>;
|
|
1364
1424
|
value: _angular_core.ModelSignal<_radix_ng_primitives_combobox.ComboboxValue>;
|
|
1365
1425
|
inputValue: _angular_core.ModelSignal<string>;
|
|
1426
|
+
name: _angular_core.InputSignal<string | undefined>;
|
|
1427
|
+
form: _angular_core.InputSignal<string | undefined>;
|
|
1428
|
+
inputOwnsFormValue: _angular_core.Signal<boolean>;
|
|
1366
1429
|
open: _angular_core.ModelSignal<boolean>;
|
|
1367
1430
|
present: _angular_core.Signal<boolean>;
|
|
1368
1431
|
multiple: _angular_core.Signal<boolean>;
|
|
@@ -1371,6 +1434,8 @@ declare class RdxComboboxList {
|
|
|
1371
1434
|
readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1372
1435
|
requiredState: _angular_core.Signal<boolean>;
|
|
1373
1436
|
invalidState: _angular_core.Signal<boolean>;
|
|
1437
|
+
pendingState: _angular_core.Signal<boolean>;
|
|
1438
|
+
validState: _angular_core.Signal<boolean | null>;
|
|
1374
1439
|
touchedState: _angular_core.Signal<boolean>;
|
|
1375
1440
|
dirtyState: _angular_core.Signal<boolean>;
|
|
1376
1441
|
openOnInputClick: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -1563,6 +1628,7 @@ declare class RdxComboboxGroup {
|
|
|
1563
1628
|
private readonly rootContext;
|
|
1564
1629
|
readonly labelId: _angular_core.WritableSignal<string | undefined>;
|
|
1565
1630
|
private readonly items;
|
|
1631
|
+
private readonly itemsTick;
|
|
1566
1632
|
protected readonly hasItems: _angular_core.Signal<boolean>;
|
|
1567
1633
|
protected readonly hasVisibleItems: _angular_core.Signal<boolean>;
|
|
1568
1634
|
registerItem(item: ComboboxItemRef): void;
|
|
@@ -1613,6 +1679,9 @@ declare class RdxComboboxEmpty {
|
|
|
1613
1679
|
dir: _angular_core.Signal<_radix_ng_primitives_types_radix_ng_primitives_core.Direction>;
|
|
1614
1680
|
value: _angular_core.ModelSignal<_radix_ng_primitives_combobox.ComboboxValue>;
|
|
1615
1681
|
inputValue: _angular_core.ModelSignal<string>;
|
|
1682
|
+
name: _angular_core.InputSignal<string | undefined>;
|
|
1683
|
+
form: _angular_core.InputSignal<string | undefined>;
|
|
1684
|
+
inputOwnsFormValue: _angular_core.Signal<boolean>;
|
|
1616
1685
|
open: _angular_core.ModelSignal<boolean>;
|
|
1617
1686
|
present: _angular_core.Signal<boolean>;
|
|
1618
1687
|
multiple: _angular_core.Signal<boolean>;
|
|
@@ -1621,6 +1690,8 @@ declare class RdxComboboxEmpty {
|
|
|
1621
1690
|
readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1622
1691
|
requiredState: _angular_core.Signal<boolean>;
|
|
1623
1692
|
invalidState: _angular_core.Signal<boolean>;
|
|
1693
|
+
pendingState: _angular_core.Signal<boolean>;
|
|
1694
|
+
validState: _angular_core.Signal<boolean | null>;
|
|
1624
1695
|
touchedState: _angular_core.Signal<boolean>;
|
|
1625
1696
|
dirtyState: _angular_core.Signal<boolean>;
|
|
1626
1697
|
openOnInputClick: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -77,14 +77,43 @@ declare const provideRdxCompositeListContext: (useFactory: () => RdxCompositeLis
|
|
|
77
77
|
*/
|
|
78
78
|
declare class RdxCompositeList {
|
|
79
79
|
readonly elementRef: ElementRef<HTMLElement>;
|
|
80
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Stable element → registration map. Kept as a plain (mutable) Map so a registration is an O(1)
|
|
82
|
+
* `set`/`delete` instead of re-creating the whole array on every mount — with N items each
|
|
83
|
+
* registering, an array copy per item is an O(n^2) mount. `registrationTick` is the reactive
|
|
84
|
+
* trigger: bumped on every register/unregister so `items` re-derives. Mirrors Base UI's composite
|
|
85
|
+
* list (stable map + `mapTick`).
|
|
86
|
+
*/
|
|
87
|
+
private readonly registrations;
|
|
88
|
+
private readonly registrationTick;
|
|
89
|
+
/**
|
|
90
|
+
* Bumped when registered items are moved in the DOM without re-registering
|
|
91
|
+
* (e.g. an `@for` reorder that reuses views). Angular does not re-run the item
|
|
92
|
+
* registration effect on such moves, so `registeredItems` is unchanged and the
|
|
93
|
+
* document-order sort would go stale; a MutationObserver detects the move and
|
|
94
|
+
* bumps this tick to force `items` to re-sort. Mirrors Base UI's composite list.
|
|
95
|
+
*/
|
|
96
|
+
private readonly reorderTick;
|
|
81
97
|
/** Emits when the ordered item map changes. */
|
|
82
98
|
readonly onMapChange: _angular_core.OutputEmitterRef<Map<HTMLElement, RdxCompositeMetadata>>;
|
|
83
99
|
/** Items registered with this list, sorted in DOM order. */
|
|
84
100
|
readonly items: _angular_core.Signal<RdxCompositeItemRegistration<RdxCompositeItemMetadata>[]>;
|
|
101
|
+
/**
|
|
102
|
+
* Element → document-order index. Depends only on `items()` (not on any item's metadata), so
|
|
103
|
+
* `indexOf` is an O(1) lookup and rebuilds only when the item set/order changes — the mount hot
|
|
104
|
+
* path where N items each read their index. Keeping metadata out of it avoids invalidating every
|
|
105
|
+
* item's index when a single item's metadata changes.
|
|
106
|
+
*/
|
|
107
|
+
private readonly indexMap;
|
|
85
108
|
/** Ordered metadata keyed by item element. */
|
|
86
109
|
readonly itemMap: _angular_core.Signal<Map<HTMLElement, RdxCompositeMetadata>>;
|
|
87
110
|
constructor();
|
|
111
|
+
/**
|
|
112
|
+
* Watches the smallest containers that bound the registered items and re-sorts
|
|
113
|
+
* when a move inverts their document order. Re-established whenever the item set
|
|
114
|
+
* changes; a no-op where `MutationObserver` is unavailable (SSR).
|
|
115
|
+
*/
|
|
116
|
+
private observeItemReordering;
|
|
88
117
|
registerItem<Metadata extends RdxCompositeItemMetadata>(item: RdxCompositeItemRegistration<Metadata>): () => void;
|
|
89
118
|
indexOf(element: HTMLElement): number;
|
|
90
119
|
elements(): HTMLElement[];
|
|
@@ -139,6 +168,8 @@ declare class RdxCompositeRoot {
|
|
|
139
168
|
readonly items: _angular_core.Signal<_radix_ng_primitives_composite.RdxCompositeItemRegistration<_radix_ng_primitives_composite.RdxCompositeItemMetadata>[]>;
|
|
140
169
|
readonly itemMap: _angular_core.Signal<Map<HTMLElement, RdxCompositeMetadata>>;
|
|
141
170
|
constructor();
|
|
171
|
+
/** Move the roving tab stop to the first enabled item when the highlighted one is disabled. */
|
|
172
|
+
private moveHighlightOffDisabledItem;
|
|
142
173
|
indexOf(element: HTMLElement): number;
|
|
143
174
|
setOrientation(value: RdxCompositeOrientation): void;
|
|
144
175
|
setLoopFocus(value: boolean): void;
|
|
@@ -163,9 +194,24 @@ declare const ACTIVE_COMPOSITE_ITEM = "data-composite-item-active";
|
|
|
163
194
|
declare const ARROW_KEYS: Set<string>;
|
|
164
195
|
declare const COMPOSITE_KEYS: Set<string>;
|
|
165
196
|
declare const MODIFIER_KEYS: RdxCompositeModifierKey[];
|
|
197
|
+
declare function compareNodeDocumentPosition(a: Node, b: Node): number;
|
|
166
198
|
declare function sortByDocumentPosition<T extends {
|
|
167
199
|
element: HTMLElement;
|
|
168
200
|
}>(items: readonly T[]): T[];
|
|
201
|
+
/**
|
|
202
|
+
* Smallest set of container elements whose child order can change the relative
|
|
203
|
+
* order of the given (already document-sorted) nodes. Observing each adjacent
|
|
204
|
+
* pair's common ancestor catches both direct item moves and wrapper moves at the
|
|
205
|
+
* boundary, mirroring Base UI's composite list observer.
|
|
206
|
+
*/
|
|
207
|
+
declare function getAdjacentNodeRoots(nodes: readonly Element[]): Set<Element>;
|
|
208
|
+
/**
|
|
209
|
+
* Whether a batch of mutations moved a node (removed then re-added in the same
|
|
210
|
+
* batch, or reparented so a removed node is still connected) rather than a pure
|
|
211
|
+
* add/remove. Pure adds/removals re-sort through register/unregister and cannot
|
|
212
|
+
* change the relative order of the remaining items.
|
|
213
|
+
*/
|
|
214
|
+
declare function hasMovedNode(entries: readonly MutationRecord[]): boolean;
|
|
169
215
|
declare function isModifierKeySet(event: KeyboardEvent, allowedModifierKeys: readonly RdxCompositeModifierKey[]): boolean;
|
|
170
216
|
declare function isNativeTextInput(target: EventTarget | null): target is HTMLInputElement | HTMLTextAreaElement;
|
|
171
217
|
declare function getCompositeNavigationKeys(orientation: RdxCompositeOrientation, dir: Direction): {
|
|
@@ -193,5 +239,5 @@ declare class RdxCompositeModule {
|
|
|
193
239
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<RdxCompositeModule>;
|
|
194
240
|
}
|
|
195
241
|
|
|
196
|
-
export { ACTIVE_COMPOSITE_ITEM, ARROW_KEYS, COMPOSITE_KEYS, MODIFIER_KEYS, RdxCompositeItem, RdxCompositeList, RdxCompositeListItem, RdxCompositeModule, RdxCompositeRoot, compositeImports, findNonDisabledListIndex, getCompositeNavigationKeys, getMaxListIndex, getMinListIndex, injectRdxCompositeListContext, injectRdxCompositeRootContext, isElementDisabled, isElementVisible, isIndexOutOfListBounds, isListIndexDisabled, isModifierKeySet, isNativeTextInput, provideRdxCompositeListContext, provideRdxCompositeRootContext, scrollIntoViewIfNeeded, shouldKeepNativeTextInputBehavior, sortByDocumentPosition };
|
|
242
|
+
export { ACTIVE_COMPOSITE_ITEM, ARROW_KEYS, COMPOSITE_KEYS, MODIFIER_KEYS, RdxCompositeItem, RdxCompositeList, RdxCompositeListItem, RdxCompositeModule, RdxCompositeRoot, compareNodeDocumentPosition, compositeImports, findNonDisabledListIndex, getAdjacentNodeRoots, getCompositeNavigationKeys, getMaxListIndex, getMinListIndex, hasMovedNode, injectRdxCompositeListContext, injectRdxCompositeRootContext, isElementDisabled, isElementVisible, isIndexOutOfListBounds, isListIndexDisabled, isModifierKeySet, isNativeTextInput, provideRdxCompositeListContext, provideRdxCompositeRootContext, scrollIntoViewIfNeeded, shouldKeepNativeTextInputBehavior, sortByDocumentPosition };
|
|
197
243
|
export type { RdxCompositeItemMetadata, RdxCompositeItemRegistration, RdxCompositeListContext, RdxCompositeMetadata, RdxCompositeModifierKey, RdxCompositeOrientation, RdxCompositeRootContext };
|