@radix-ng/primitives 1.0.0-beta.0 → 1.0.0-beta.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/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-calendar.mjs +95 -83
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +114 -4
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs +287 -308
- package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +55 -15
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +6 -105
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-editable.mjs +304 -23
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +409 -1
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +21 -4
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +923 -0
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +11 -2
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs +839 -0
- package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +9 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/package.json +10 -2
- package/types/radix-ng-primitives-accordion.d.ts +3 -2
- package/types/radix-ng-primitives-calendar.d.ts +38 -18
- package/types/radix-ng-primitives-checkbox.d.ts +5 -5
- package/types/radix-ng-primitives-collapsible.d.ts +2 -1
- package/types/radix-ng-primitives-context-menu.d.ts +3 -2
- package/types/radix-ng-primitives-core.d.ts +42 -3
- package/types/radix-ng-primitives-cropper.d.ts +89 -56
- package/types/radix-ng-primitives-date-field.d.ts +11 -5
- package/types/radix-ng-primitives-dialog.d.ts +2 -1
- package/types/radix-ng-primitives-drawer.d.ts +5 -27
- package/types/radix-ng-primitives-editable.d.ts +90 -13
- package/types/radix-ng-primitives-field.d.ts +3 -2
- package/types/radix-ng-primitives-fieldset.d.ts +3 -2
- package/types/radix-ng-primitives-focus-scope.d.ts +2 -1
- package/types/radix-ng-primitives-menu.d.ts +16 -4
- package/types/radix-ng-primitives-menubar.d.ts +2 -1
- package/types/radix-ng-primitives-meter.d.ts +3 -2
- package/types/radix-ng-primitives-navigation-menu.d.ts +1 -1
- package/types/radix-ng-primitives-number-field.d.ts +6 -6
- package/types/radix-ng-primitives-popover.d.ts +2 -1
- package/types/radix-ng-primitives-popper.d.ts +19 -2
- package/types/radix-ng-primitives-preview-card.d.ts +1 -1
- package/types/radix-ng-primitives-progress.d.ts +3 -2
- package/types/radix-ng-primitives-roving-focus.d.ts +4 -3
- package/types/radix-ng-primitives-scroll-area.d.ts +253 -0
- package/types/radix-ng-primitives-select.d.ts +6 -6
- package/types/radix-ng-primitives-slider.d.ts +1 -1
- package/types/radix-ng-primitives-switch.d.ts +1 -1
- package/types/radix-ng-primitives-tabs.d.ts +1 -1
- package/types/radix-ng-primitives-toast.d.ts +378 -0
- package/types/radix-ng-primitives-toggle-group.d.ts +2 -1
- package/types/radix-ng-primitives-toolbar.d.ts +3 -2
- package/types/radix-ng-primitives-tooltip.d.ts +3 -2
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Signal } from '@angular/core';
|
|
3
|
+
import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
|
|
4
|
+
import { BooleanInput, NumberInput } from '@radix-ng/primitives/core';
|
|
3
5
|
import * as i1 from '@radix-ng/primitives/menu';
|
|
4
6
|
import { RdxMenuRoot, RdxMenuAutoFocusInput } from '@radix-ng/primitives/menu';
|
|
5
7
|
import * as _radix_ng_primitives_context_menu from '@radix-ng/primitives/context-menu';
|
|
6
|
-
import { BooleanInput, NumberInput } from '@radix-ng/primitives/core';
|
|
7
8
|
|
|
8
9
|
interface RdxContextMenuRootContext {
|
|
9
10
|
/** Whether the context menu is currently open. */
|
|
@@ -15,7 +16,7 @@ interface RdxContextMenuRootContext {
|
|
|
15
16
|
/** Close the menu. */
|
|
16
17
|
close: () => void;
|
|
17
18
|
}
|
|
18
|
-
declare const injectRdxContextMenuRootContext:
|
|
19
|
+
declare const injectRdxContextMenuRootContext: _radix_ng_primitives_core.InjectContext<RdxContextMenuRootContext>;
|
|
19
20
|
declare const provideRdxContextMenuRootContext: (useFactory: () => RdxContextMenuRootContext) => i0.Provider;
|
|
20
21
|
/**
|
|
21
22
|
* Groups all parts of a context menu. Composes the Menu primitive but, instead of anchoring the
|
|
@@ -151,6 +151,17 @@ declare function roundToStepPrecision(value: number, step: number): number;
|
|
|
151
151
|
*/
|
|
152
152
|
declare function snapValueToStep(value: number, min: number | undefined, max: number | undefined, step: number): number;
|
|
153
153
|
|
|
154
|
+
/**
|
|
155
|
+
* Retrieves the context value from Angular's dependency injection.
|
|
156
|
+
* Overloaded so the non-optional call returns a non-nullable `T` (no `!` needed),
|
|
157
|
+
* while the optional call may return `null`.
|
|
158
|
+
*/
|
|
159
|
+
interface InjectContext<T> {
|
|
160
|
+
(): T;
|
|
161
|
+
(optional: false): T;
|
|
162
|
+
(optional: true): T | null;
|
|
163
|
+
(optional?: boolean): T | null;
|
|
164
|
+
}
|
|
154
165
|
/**
|
|
155
166
|
* Creates a context with injector and provider functions for a given type
|
|
156
167
|
* @template T The type of the context value
|
|
@@ -159,7 +170,7 @@ declare function snapValueToStep(value: number, min: number | undefined, max: nu
|
|
|
159
170
|
* - injectContext: Function to retrieve the context value
|
|
160
171
|
* - provideContext: Function to create a provider for the context
|
|
161
172
|
*/
|
|
162
|
-
declare function createContext<T>(description: string): readonly [injectContext:
|
|
173
|
+
declare function createContext<T>(description: string): readonly [injectContext: InjectContext<T>, provideContext: (useFactory: () => T) => Provider];
|
|
163
174
|
|
|
164
175
|
declare const DATE_SEGMENT_PARTS: readonly ["day", "month", "year"];
|
|
165
176
|
declare const TIME_SEGMENT_PARTS: readonly ["hour", "minute", "second", "dayPeriod"];
|
|
@@ -882,6 +893,34 @@ declare function useGraceArea(triggerEl: Signal<HTMLElement | null | undefined>,
|
|
|
882
893
|
onPointerExit: (callback: (value: void) => void) => () => void;
|
|
883
894
|
};
|
|
884
895
|
|
|
896
|
+
interface RdxPointerDragHandlers {
|
|
897
|
+
/** Whether a press may begin a drag (e.g. enabled, not on an opt-out element, at a scroll edge). */
|
|
898
|
+
canStart: (event: PointerEvent) => boolean;
|
|
899
|
+
/** A drag actually began (the pointer moved past the start threshold). */
|
|
900
|
+
onStart: (event: PointerEvent) => void;
|
|
901
|
+
/** Pointer moved during a drag. Return `false` to end the gesture early (treated as not committed). */
|
|
902
|
+
onMove: (event: PointerEvent) => void | boolean;
|
|
903
|
+
/** The drag ended. `committed` is true only for a normal `pointerup`, false for cancel/lost-capture/early-stop. */
|
|
904
|
+
onEnd: (event: PointerEvent, committed: boolean) => void;
|
|
905
|
+
}
|
|
906
|
+
/**
|
|
907
|
+
* Shared pointer-drag lifecycle for gesture primitives (drawer swipe, toast swipe, etc.).
|
|
908
|
+
*
|
|
909
|
+
* A press only becomes a drag once the pointer moves past {@link DRAG_THRESHOLD}; until then it is a
|
|
910
|
+
* plain tap, so clicks on buttons inside the element keep working (the gesture never captures the
|
|
911
|
+
* pointer for a tap). Once dragging, the pointer is captured so a drag that leaves the element still
|
|
912
|
+
* completes, and `lostpointercapture` / `pointercancel` count as a non-committed end — a swallowed
|
|
913
|
+
* `pointerup` (native context menu, OS gesture, tab switch) can never wedge the gesture. Only the
|
|
914
|
+
* primary pointer is tracked, so a second finger can't start a parallel gesture. No-op outside the
|
|
915
|
+
* browser, keeping SSR safe.
|
|
916
|
+
*
|
|
917
|
+
* `onEnd` is NOT called if the host is destroyed mid-drag — callers that pair `onStart`/`onEnd`
|
|
918
|
+
* (e.g. to pause/resume timers) should balance that case in their own `DestroyRef` cleanup.
|
|
919
|
+
*
|
|
920
|
+
* Must be called from an injection context (a directive/component constructor).
|
|
921
|
+
*/
|
|
922
|
+
declare function usePointerDrag(handlers: RdxPointerDragHandlers): void;
|
|
923
|
+
|
|
885
924
|
/**
|
|
886
925
|
* Lifecycle phase of an open/close transition.
|
|
887
926
|
*
|
|
@@ -969,5 +1008,5 @@ declare enum RdxPositionAlign {
|
|
|
969
1008
|
End = "end"
|
|
970
1009
|
}
|
|
971
1010
|
|
|
972
|
-
export { A, ALT, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, ASTERISK, BACKSPACE, CAPS_LOCK, CONTROL, CTRL, DELETE, END, ENTER, ESCAPE, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, HOME, META, P, PAGE_DOWN, PAGE_UP, RdxControlValueAccessor, RdxIdGenerator, RdxLiveAnnouncer, RdxPositionAlign, RdxPositionSide, SHIFT, SPACE, SPACE_CODE, TAB, a, areAllDaysBetweenValid, clamp, createContent, createContext, createFormatter, createMonth, createMonths, elementSize, getActiveElement, getDaysBetween, getDaysInMonth, getDefaultDate, getDefaultTime, getLastFirstDayOfWeek, getMaxTransitionDuration, getNextLastDayOfWeek, getOptsByGranularity, getPlaceholder, getSegmentElements, getWeekNumber, handleAndDispatchCustomEvent, handleCalendarInitialFocus, hasTime, initializeSegmentValues, injectControlValueAccessor, injectDocument, injectId, isAcceptableSegmentKey, isAfter, isAfterOrSame, isBefore, isBeforeOrSame, isBetween, isBetweenInclusive, isCalendarDateTime, isEqual, isNullish, isNumberString, isSegmentNavigationKey, isZonedDateTime, j, k, n, normalizeDateStep, normalizeHour12, normalizeHourCycle, p, provideToken, provideValueAccessor, resizeEffect, roundToStepPrecision, segmentBuilders, snapValueToStep, syncSegmentValues, syncTimeSegmentValues, toDate, useArrowNavigation, useDateField, useGraceArea, useScrollLock, useTransitionStatus, watch };
|
|
973
|
-
export type { AcceptableValue, AnyExceptLiteral, AriaLivePoliteness, BooleanInput, CreateMonthProps, DataOrientation, DateAndTimeSegmentObj, DateFormatterOptions, DateMatcher, DateRange, DateSegmentObj, DateSegmentPart, DateStep, DayPeriod, Direction, EditableSegmentPart, Formatter, Granularity, HourCycle, Month, NonEditableSegmentPart, Nullable, NumberInput, PlaceholderMap, RdxFormCheckboxControl, RdxFormStateInput, RdxFormUiControl, RdxFormValueControl, RdxTransitionStatus, RdxTransitionStatusRef, RdxValidationError, SafeFunction, SegmentContentObj, SegmentPart, SegmentValueObj, TimeGranularity, TimeSegmentObj, TimeSegmentPart, TimeValue, UseDateFieldProps };
|
|
1011
|
+
export { A, ALT, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, ASTERISK, BACKSPACE, CAPS_LOCK, CONTROL, CTRL, DELETE, END, ENTER, ESCAPE, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, HOME, META, P, PAGE_DOWN, PAGE_UP, RdxControlValueAccessor, RdxIdGenerator, RdxLiveAnnouncer, RdxPositionAlign, RdxPositionSide, SHIFT, SPACE, SPACE_CODE, TAB, a, areAllDaysBetweenValid, clamp, createContent, createContext, createFormatter, createMonth, createMonths, elementSize, getActiveElement, getDaysBetween, getDaysInMonth, getDefaultDate, getDefaultTime, getLastFirstDayOfWeek, getMaxTransitionDuration, getNextLastDayOfWeek, getOptsByGranularity, getPlaceholder, getSegmentElements, getWeekNumber, handleAndDispatchCustomEvent, handleCalendarInitialFocus, hasTime, initializeSegmentValues, injectControlValueAccessor, injectDocument, injectId, isAcceptableSegmentKey, isAfter, isAfterOrSame, isBefore, isBeforeOrSame, isBetween, isBetweenInclusive, isCalendarDateTime, isEqual, isNullish, isNumberString, isSegmentNavigationKey, isZonedDateTime, j, k, n, normalizeDateStep, normalizeHour12, normalizeHourCycle, p, provideToken, provideValueAccessor, resizeEffect, roundToStepPrecision, segmentBuilders, snapValueToStep, syncSegmentValues, syncTimeSegmentValues, toDate, useArrowNavigation, useDateField, useGraceArea, usePointerDrag, useScrollLock, useTransitionStatus, watch };
|
|
1012
|
+
export type { AcceptableValue, AnyExceptLiteral, AriaLivePoliteness, BooleanInput, CreateMonthProps, DataOrientation, DateAndTimeSegmentObj, DateFormatterOptions, DateMatcher, DateRange, DateSegmentObj, DateSegmentPart, DateStep, DayPeriod, Direction, EditableSegmentPart, Formatter, Granularity, HourCycle, InjectContext, Month, NonEditableSegmentPart, Nullable, NumberInput, PlaceholderMap, RdxFormCheckboxControl, RdxFormStateInput, RdxFormUiControl, RdxFormValueControl, RdxPointerDragHandlers, RdxTransitionStatus, RdxTransitionStatusRef, RdxValidationError, SafeFunction, SegmentContentObj, SegmentPart, SegmentValueObj, TimeGranularity, TimeSegmentObj, TimeSegmentPart, TimeValue, UseDateFieldProps };
|
|
@@ -1,28 +1,21 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
2
|
+
import { InputSignal, Signal } from '@angular/core';
|
|
3
|
+
import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
|
|
4
|
+
import { NumberInput, BooleanInput } from '@radix-ng/primitives/core';
|
|
4
5
|
import * as _radix_ng_primitives_cropper from '@radix-ng/primitives/cropper';
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
image: InputSignal<string>;
|
|
8
|
-
getImageProps: () => {
|
|
9
|
-
[key: string]: any;
|
|
10
|
-
};
|
|
11
|
-
getImageWrapperStyle: () => Record<string, string>;
|
|
12
|
-
getCropAreaStyle: () => Record<string, string>;
|
|
13
|
-
descriptionId: WritableSignal<string>;
|
|
14
|
-
}
|
|
15
|
-
declare const CROPPER_ROOT_CONTEXT: InjectionToken<CropperContextToken>;
|
|
16
|
-
declare function injectCropperRootContext(): CropperContextToken;
|
|
17
|
-
|
|
7
|
+
/** A crop rectangle in the source image's natural-pixel coordinate space. */
|
|
18
8
|
type Area = {
|
|
19
9
|
x: number;
|
|
20
10
|
y: number;
|
|
21
11
|
width: number;
|
|
22
12
|
height: number;
|
|
23
13
|
};
|
|
24
|
-
|
|
14
|
+
|
|
15
|
+
declare class RdxCropperRootDirective {
|
|
25
16
|
private readonly elementRef;
|
|
17
|
+
private readonly injector;
|
|
18
|
+
private readonly isBrowser;
|
|
26
19
|
private readonly CROPPER_DESC_WARN_MESSAGE;
|
|
27
20
|
readonly image: _angular_core.InputSignal<string>;
|
|
28
21
|
readonly cropPadding: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
@@ -30,29 +23,55 @@ declare class RdxCropperRootDirective implements CropperContextToken {
|
|
|
30
23
|
readonly minZoom: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
31
24
|
readonly maxZoom: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
32
25
|
readonly zoomSensitivity: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
26
|
+
/** Pan distance (px) per arrow-key press. */
|
|
33
27
|
readonly keyboardStep: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
28
|
+
/** Zoom delta per `+` / `-` / `PageUp` / `PageDown` press. */
|
|
29
|
+
readonly zoomKeyboardStep: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
34
30
|
readonly zoom: _angular_core.InputSignalWithTransform<number | undefined, NumberInput>;
|
|
31
|
+
/** Accessible name for the cropper widget. */
|
|
32
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
33
|
+
/** Disables all interaction (drag, wheel/pinch zoom, keyboard); exposed as `data-disabled`. */
|
|
34
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
35
35
|
readonly onCropChange: _angular_core.OutputEmitterRef<Area | null>;
|
|
36
36
|
readonly onZoomChange: _angular_core.OutputEmitterRef<number>;
|
|
37
37
|
private readonly imgWidth;
|
|
38
38
|
private readonly imgHeight;
|
|
39
|
+
/** Raw content-box size (px) of the root, fed by the ResizeObserver / initial measure. */
|
|
40
|
+
private readonly containerSize;
|
|
41
|
+
/**
|
|
42
|
+
* Crop-area size derived from the container minus padding, fitted to `aspectRatio`. A `computed`
|
|
43
|
+
* (not a written signal) so it stays reactive to `aspectRatio` / `cropPadding` changes, not only
|
|
44
|
+
* to container resizes — previously these inputs were read inside the ResizeObserver closure and
|
|
45
|
+
* never recomputed until the next resize.
|
|
46
|
+
*/
|
|
47
|
+
private readonly cropAreaSize;
|
|
39
48
|
private readonly cropAreaWidth;
|
|
40
49
|
private readonly cropAreaHeight;
|
|
41
50
|
private readonly imageWrapperWidth;
|
|
42
51
|
private readonly imageWrapperHeight;
|
|
43
|
-
|
|
44
|
-
private readonly
|
|
52
|
+
/** Raw (unclamped) pan-offset intent (px) written by gestures; clamping lives in `clampedOffset`. */
|
|
53
|
+
private readonly offset;
|
|
45
54
|
private readonly internalZoom;
|
|
46
|
-
|
|
47
|
-
readonly descriptionId:
|
|
55
|
+
protected readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
56
|
+
readonly descriptionId: string;
|
|
48
57
|
private readonly isZoomControlled;
|
|
49
58
|
protected readonly effectiveZoom: _angular_core.Signal<number>;
|
|
50
|
-
|
|
59
|
+
/**
|
|
60
|
+
* The applied pan offset (px): the raw intent clamped to keep the image covering the crop window
|
|
61
|
+
* at the current geometry/zoom. Derived (not an effect) so it self-corrects when the container
|
|
62
|
+
* resizes or the zoom/aspect-ratio changes — no write-back, no `untracked` re-entrancy. This is the
|
|
63
|
+
* value the view renders and the crop math reads.
|
|
64
|
+
*/
|
|
65
|
+
private readonly clampedOffset;
|
|
66
|
+
/**
|
|
67
|
+
* Crop rectangle derived from the rendered pan/zoom — the single source of truth for emission.
|
|
68
|
+
* `onCropChange` fires from one effect watching this, so interactions/handlers never emit directly
|
|
69
|
+
* (which previously double-emitted). Value equality keeps it from notifying on equal results.
|
|
70
|
+
*/
|
|
71
|
+
private readonly cropData;
|
|
51
72
|
private readonly dragStartPoint;
|
|
52
73
|
private readonly dragStartOffset;
|
|
53
|
-
private readonly latestRestrictedOffset;
|
|
54
74
|
private readonly latestZoom;
|
|
55
|
-
private readonly isInitialSetupDone;
|
|
56
75
|
private readonly initialPinchDistance;
|
|
57
76
|
private readonly initialPinchZoom;
|
|
58
77
|
private readonly isPinching;
|
|
@@ -62,75 +81,89 @@ declare class RdxCropperRootDirective implements CropperContextToken {
|
|
|
62
81
|
private initializeContainerDimensions;
|
|
63
82
|
private setupImageLoadEffect;
|
|
64
83
|
private setupDimensionsEffects;
|
|
84
|
+
/** Current rendered geometry the crop math operates on, read from the state signals. */
|
|
85
|
+
private geometry;
|
|
65
86
|
private restrictOffset;
|
|
66
|
-
private calculateCropData;
|
|
67
|
-
private setupCropCalculationEffect;
|
|
68
87
|
private setupAccessibilityWarningEffect;
|
|
88
|
+
/**
|
|
89
|
+
* Single attachment point for every interaction listener. Re-runs on `disabled()`, so a disabled
|
|
90
|
+
* cropper has NO interaction listeners bound at all — there is no per-handler `disabled` check to
|
|
91
|
+
* forget, and a new gesture path can't accidentally bypass the gate. Uses `{ passive: false }` so
|
|
92
|
+
* the handlers can `preventDefault()` (wheel/touch scrolling, arrow-key page scroll).
|
|
93
|
+
*/
|
|
69
94
|
private setupEventListenersEffect;
|
|
70
|
-
private
|
|
95
|
+
private onMouseDown;
|
|
71
96
|
/**
|
|
72
|
-
*
|
|
97
|
+
* Zoom toward an anchor point (coordinates relative to the root's center). `fromZoom`/`fromOffset`
|
|
98
|
+
* are the zoom/offset the anchor is measured against — the live state for wheel/keyboard, the
|
|
99
|
+
* gesture-start baseline for pinch. Emits the zoom request via {@link updateZoom}, then re-anchors
|
|
100
|
+
* the pan offset **only when the zoom is uncontrolled**: in controlled mode the rendered zoom does
|
|
101
|
+
* not change until the parent writes `zoom` back, so writing an offset for a not-yet-applied zoom
|
|
102
|
+
* would pan the image without rescaling it (`clampedOffset` re-derives once the new zoom applies).
|
|
73
103
|
*/
|
|
74
|
-
|
|
104
|
+
private zoomToPoint;
|
|
75
105
|
private handleWheel;
|
|
76
106
|
private getPinchDistance;
|
|
77
107
|
private getPinchCenter;
|
|
78
108
|
private handleTouchStart;
|
|
79
109
|
private handleTouchMove;
|
|
80
110
|
private handleTouchEnd;
|
|
111
|
+
private onKeyDown;
|
|
112
|
+
/** Zoom by `delta` keeping the crop center fixed (the keyboard counterpart of wheel/pinch zoom). */
|
|
113
|
+
private zoomFromCenter;
|
|
81
114
|
/**
|
|
82
|
-
*
|
|
115
|
+
* Inline style for the image wrapper: measured size, centered in the root, then translated and
|
|
116
|
+
* scaled by the current pan offset and zoom. A `computed` (not a method) so the `[style]` binding
|
|
117
|
+
* only re-applies when an input actually changes — a per-change-detection method call would
|
|
118
|
+
* allocate a new object every tick and force a constant re-bind.
|
|
83
119
|
*/
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
|
|
87
|
-
*/
|
|
88
|
-
onKeyUp(e: KeyboardEvent): void;
|
|
89
|
-
/**
|
|
90
|
-
* @ignore
|
|
91
|
-
*/
|
|
92
|
-
getImageProps(): {
|
|
93
|
-
[key: string]: any;
|
|
94
|
-
};
|
|
95
|
-
/**
|
|
96
|
-
* @ignore
|
|
97
|
-
*/
|
|
98
|
-
getImageWrapperStyle(): Record<string, string>;
|
|
99
|
-
/**
|
|
100
|
-
* @ignore
|
|
101
|
-
*/
|
|
102
|
-
getCropAreaStyle(): Record<string, string>;
|
|
120
|
+
readonly imageWrapperStyle: _angular_core.Signal<Record<string, string>>;
|
|
121
|
+
/** Inline style for the crop-area overlay (its measured width/height). */
|
|
122
|
+
readonly cropAreaStyle: _angular_core.Signal<Record<string, string>>;
|
|
103
123
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxCropperRootDirective, never>;
|
|
104
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxCropperRootDirective, "[rdxCropperRoot]", never, { "image": { "alias": "image"; "required": true; "isSignal": true; }; "cropPadding": { "alias": "cropPadding"; "required": false; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; "minZoom": { "alias": "minZoom"; "required": false; "isSignal": true; }; "maxZoom": { "alias": "maxZoom"; "required": false; "isSignal": true; }; "zoomSensitivity": { "alias": "zoomSensitivity"; "required": false; "isSignal": true; }; "keyboardStep": { "alias": "keyboardStep"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; }, { "onCropChange": "onCropChange"; "onZoomChange": "onZoomChange"; }, never, never, true, never>;
|
|
124
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxCropperRootDirective, "[rdxCropperRoot]", never, { "image": { "alias": "image"; "required": true; "isSignal": true; }; "cropPadding": { "alias": "cropPadding"; "required": false; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; "minZoom": { "alias": "minZoom"; "required": false; "isSignal": true; }; "maxZoom": { "alias": "maxZoom"; "required": false; "isSignal": true; }; "zoomSensitivity": { "alias": "zoomSensitivity"; "required": false; "isSignal": true; }; "keyboardStep": { "alias": "keyboardStep"; "required": false; "isSignal": true; }; "zoomKeyboardStep": { "alias": "zoomKeyboardStep"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "onCropChange": "onCropChange"; "onZoomChange": "onZoomChange"; }, never, never, true, never>;
|
|
105
125
|
}
|
|
106
126
|
|
|
107
127
|
declare class RdxCropperImageComponent {
|
|
108
|
-
protected readonly rootContext: _radix_ng_primitives_cropper.
|
|
128
|
+
protected readonly rootContext: _radix_ng_primitives_cropper.CropperRootContext;
|
|
109
129
|
readonly imgClass: _angular_core.InputSignal<string | undefined>;
|
|
110
130
|
readonly imgStyles: _angular_core.InputSignal<string | undefined>;
|
|
111
|
-
|
|
112
|
-
|
|
131
|
+
/**
|
|
132
|
+
* `alt` text for the rendered image. Defaults to `''` (decorative — screen readers skip it, since
|
|
133
|
+
* the cropper widget describes itself via the root's label/description). Set a non-empty value to
|
|
134
|
+
* give the image a meaningful accessible name.
|
|
135
|
+
*/
|
|
136
|
+
readonly imgAlt: _angular_core.InputSignal<string>;
|
|
113
137
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxCropperImageComponent, never>;
|
|
114
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RdxCropperImageComponent, "[rdxCropperImage]", never, { "imgClass": { "alias": "imgClass"; "required": false; "isSignal": true; }; "imgStyles": { "alias": "imgStyles"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
138
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RdxCropperImageComponent, "[rdxCropperImage]", never, { "imgClass": { "alias": "imgClass"; "required": false; "isSignal": true; }; "imgStyles": { "alias": "imgStyles"; "required": false; "isSignal": true; }; "imgAlt": { "alias": "imgAlt"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
115
139
|
}
|
|
116
140
|
|
|
117
141
|
declare class RdxCropperCropAreaDirective {
|
|
118
|
-
readonly rootContext: _radix_ng_primitives_cropper.
|
|
142
|
+
readonly rootContext: _radix_ng_primitives_cropper.CropperRootContext;
|
|
119
143
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxCropperCropAreaDirective, never>;
|
|
120
144
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxCropperCropAreaDirective, "[rdxCropperCropArea]", never, {}, {}, never, never, true, never>;
|
|
121
145
|
}
|
|
122
146
|
|
|
123
147
|
declare class RdxCropperDescriptionDirective {
|
|
124
|
-
readonly rootContext: _radix_ng_primitives_cropper.
|
|
148
|
+
readonly rootContext: _radix_ng_primitives_cropper.CropperRootContext;
|
|
125
149
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxCropperDescriptionDirective, never>;
|
|
126
150
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxCropperDescriptionDirective, "[rdxCropperDescription]", never, {}, {}, never, never, true, never>;
|
|
127
151
|
}
|
|
128
152
|
|
|
153
|
+
interface CropperRootContext {
|
|
154
|
+
image: InputSignal<string>;
|
|
155
|
+
imageWrapperStyle: Signal<Record<string, string>>;
|
|
156
|
+
cropAreaStyle: Signal<Record<string, string>>;
|
|
157
|
+
descriptionId: string;
|
|
158
|
+
}
|
|
159
|
+
declare const injectCropperRootContext: _radix_ng_primitives_core.InjectContext<CropperRootContext>;
|
|
160
|
+
declare const provideCropperRootContext: (useFactory: () => CropperRootContext) => _angular_core.Provider;
|
|
161
|
+
|
|
129
162
|
declare class RdxCropperModule {
|
|
130
163
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxCropperModule, never>;
|
|
131
164
|
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<RdxCropperModule, never, [typeof RdxCropperRootDirective, typeof RdxCropperImageComponent, typeof RdxCropperCropAreaDirective, typeof RdxCropperDescriptionDirective], [typeof RdxCropperRootDirective, typeof RdxCropperImageComponent, typeof RdxCropperCropAreaDirective, typeof RdxCropperDescriptionDirective]>;
|
|
132
165
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<RdxCropperModule>;
|
|
133
166
|
}
|
|
134
167
|
|
|
135
|
-
export {
|
|
136
|
-
export type { Area,
|
|
168
|
+
export { RdxCropperCropAreaDirective, RdxCropperDescriptionDirective, RdxCropperImageComponent, RdxCropperModule, RdxCropperRootDirective, injectCropperRootContext, provideCropperRootContext };
|
|
169
|
+
export type { Area, CropperRootContext };
|
|
@@ -6,11 +6,11 @@ import { DateValue } from '@internationalized/date';
|
|
|
6
6
|
|
|
7
7
|
declare class RdxDateFieldRootDirective {
|
|
8
8
|
/**
|
|
9
|
-
* The controlled
|
|
9
|
+
* The controlled value of the date field.
|
|
10
10
|
*/
|
|
11
11
|
readonly value: _angular_core.ModelSignal<DateValue | undefined>;
|
|
12
12
|
/**
|
|
13
|
-
* A
|
|
13
|
+
* A matcher that marks specific dates as unavailable; a matched value makes the field invalid.
|
|
14
14
|
*/
|
|
15
15
|
readonly isDateUnavailable: _angular_core.InputSignal<DateMatcher | undefined>;
|
|
16
16
|
/**
|
|
@@ -178,14 +178,20 @@ declare class RdxDateFieldInputDirective {
|
|
|
178
178
|
private readonly fieldData;
|
|
179
179
|
private readonly attributes;
|
|
180
180
|
/**
|
|
181
|
+
* Attribute keys applied imperatively on the previous effect run, so keys that
|
|
182
|
+
* disappear from `attributes()` are removed instead of lingering as stale state.
|
|
181
183
|
* @ignore
|
|
182
184
|
*/
|
|
183
|
-
|
|
185
|
+
private appliedAttrs;
|
|
186
|
+
constructor();
|
|
184
187
|
/**
|
|
185
188
|
* @ignore
|
|
186
189
|
*/
|
|
187
|
-
|
|
188
|
-
|
|
190
|
+
handleSegmentClick(event: Event): void;
|
|
191
|
+
/**
|
|
192
|
+
* @ignore
|
|
193
|
+
*/
|
|
194
|
+
handleSegmentKeydown(event: Event): void;
|
|
189
195
|
/**
|
|
190
196
|
* @ignore
|
|
191
197
|
*/
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { InjectionToken, Provider, Signal, ElementRef } from '@angular/core';
|
|
3
3
|
import * as i1 from '@radix-ng/primitives/presence';
|
|
4
|
+
import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
|
|
4
5
|
import { RdxTransitionStatus, BooleanInput } from '@radix-ng/primitives/core';
|
|
5
6
|
import * as _radix_ng_primitives_dialog from '@radix-ng/primitives/dialog';
|
|
6
7
|
import * as i1$1 from '@radix-ng/primitives/portal';
|
|
@@ -93,7 +94,7 @@ interface RdxDialogRootContext {
|
|
|
93
94
|
close: (reason?: RdxDialogOpenChangeReason, event?: Event) => void;
|
|
94
95
|
toggle: (triggerId: string, trigger: HTMLElement, payload?: unknown, event?: Event) => void;
|
|
95
96
|
}
|
|
96
|
-
declare const injectRdxDialogRootContext:
|
|
97
|
+
declare const injectRdxDialogRootContext: _radix_ng_primitives_core.InjectContext<RdxDialogRootContext>;
|
|
97
98
|
declare const provideRdxDialogRootContext: (useFactory: () => RdxDialogRootContext) => _angular_core.Provider;
|
|
98
99
|
/**
|
|
99
100
|
* Groups all parts of the dialog.
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Signal, Provider } from '@angular/core';
|
|
3
|
+
import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
|
|
3
4
|
import { BooleanInput } from '@radix-ng/primitives/core';
|
|
5
|
+
export { RdxPointerDragHandlers, usePointerDrag } from '@radix-ng/primitives/core';
|
|
4
6
|
import * as i1 from '@radix-ng/primitives/dialog';
|
|
5
7
|
import { RdxDialogHandle } from '@radix-ng/primitives/dialog';
|
|
6
8
|
import * as _radix_ng_primitives_drawer from '@radix-ng/primitives/drawer';
|
|
@@ -183,7 +185,7 @@ interface RdxDrawerRootContext {
|
|
|
183
185
|
/** Reports the popup's measured size (px) so the provider can expose it. */
|
|
184
186
|
reportPopupHeight: (height: number) => void;
|
|
185
187
|
}
|
|
186
|
-
declare const injectRdxDrawerRootContext:
|
|
188
|
+
declare const injectRdxDrawerRootContext: _radix_ng_primitives_core.InjectContext<RdxDrawerRootContext>;
|
|
187
189
|
declare const provideRdxDrawerRootContext: (useFactory: () => RdxDrawerRootContext) => i0.Provider;
|
|
188
190
|
/**
|
|
189
191
|
* Groups all parts of the drawer.
|
|
@@ -413,30 +415,6 @@ declare const RdxDrawerHandle: typeof RdxDialogHandle;
|
|
|
413
415
|
type RdxDrawerHandle<Payload = unknown> = RdxDialogHandle<Payload>;
|
|
414
416
|
declare function createRdxDrawerHandle<Payload = unknown>(): RdxDrawerHandle<Payload>;
|
|
415
417
|
|
|
416
|
-
interface RdxPointerDragHandlers {
|
|
417
|
-
/** Whether a press may begin a drag (e.g. enabled, not on an opt-out element, at a scroll edge). */
|
|
418
|
-
canStart: (event: PointerEvent) => boolean;
|
|
419
|
-
/** A drag actually began (the pointer moved past the start threshold). */
|
|
420
|
-
onStart: (event: PointerEvent) => void;
|
|
421
|
-
/** Pointer moved during a drag. Return `false` to end the gesture early (treated as not committed). */
|
|
422
|
-
onMove: (event: PointerEvent) => void | boolean;
|
|
423
|
-
/** The drag ended. `committed` is true only for a normal `pointerup`, false for cancel/lost-capture/early-stop. */
|
|
424
|
-
onEnd: (event: PointerEvent, committed: boolean) => void;
|
|
425
|
-
}
|
|
426
|
-
/**
|
|
427
|
-
* Shared pointer-drag lifecycle for the drawer gestures (popup swipe and swipe-area open).
|
|
428
|
-
*
|
|
429
|
-
* A press only becomes a drag once the pointer moves past {@link DRAG_THRESHOLD}; until then it is a
|
|
430
|
-
* plain tap, so clicks on buttons inside the drawer keep working (the gesture never captures the
|
|
431
|
-
* pointer for a tap). Once dragging, the pointer is captured so a drag that leaves the element still
|
|
432
|
-
* completes, and `lostpointercapture` / `pointercancel` count as a non-committed end — a swallowed
|
|
433
|
-
* `pointerup` (native context menu, OS gesture, tab switch) can never wedge the gesture. No-op
|
|
434
|
-
* outside the browser, keeping SSR safe.
|
|
435
|
-
*
|
|
436
|
-
* Must be called from an injection context (a directive/component constructor).
|
|
437
|
-
*/
|
|
438
|
-
declare function usePointerDrag(handlers: RdxPointerDragHandlers): void;
|
|
439
|
-
|
|
440
418
|
declare const drawerImports: (typeof RdxDrawerProviderDirective)[];
|
|
441
419
|
declare class RdxDrawerModule {
|
|
442
420
|
static ɵfac: i0.ɵɵFactoryDeclaration<RdxDrawerModule, never>;
|
|
@@ -444,5 +422,5 @@ declare class RdxDrawerModule {
|
|
|
444
422
|
static ɵinj: i0.ɵɵInjectorDeclaration<RdxDrawerModule>;
|
|
445
423
|
}
|
|
446
424
|
|
|
447
|
-
export { RdxDrawerBackdrop, RdxDrawerClose, RdxDrawerContent, RdxDrawerDescription, RdxDrawerHandle, RdxDrawerIndent, RdxDrawerIndentBackground, RdxDrawerModule, RdxDrawerPopup, RdxDrawerPortal, RdxDrawerPortalPresence, RdxDrawerProvider, RdxDrawerProviderDirective, RdxDrawerRoot, RdxDrawerSwipeArea, RdxDrawerTitle, RdxDrawerTrigger, RdxDrawerViewport, buildSnapEntries, createRdxDrawerHandle, dismissUnitVector, drawerImports, injectRdxDrawerRootContext, provideRdxDrawerProvider, provideRdxDrawerRootContext, resolveSnapTarget, snapPointReveal, useDrawerSwipe
|
|
448
|
-
export type { RdxDrawerRegistration, RdxDrawerRelease, RdxDrawerRootContext, RdxDrawerSnapEntry, RdxDrawerSnapPoint, RdxDrawerSnapResolveOptions, RdxDrawerSnapTarget, RdxDrawerSwipeConfig, RdxDrawerSwipeDirection
|
|
425
|
+
export { RdxDrawerBackdrop, RdxDrawerClose, RdxDrawerContent, RdxDrawerDescription, RdxDrawerHandle, RdxDrawerIndent, RdxDrawerIndentBackground, RdxDrawerModule, RdxDrawerPopup, RdxDrawerPortal, RdxDrawerPortalPresence, RdxDrawerProvider, RdxDrawerProviderDirective, RdxDrawerRoot, RdxDrawerSwipeArea, RdxDrawerTitle, RdxDrawerTrigger, RdxDrawerViewport, buildSnapEntries, createRdxDrawerHandle, dismissUnitVector, drawerImports, injectRdxDrawerRootContext, provideRdxDrawerProvider, provideRdxDrawerRootContext, resolveSnapTarget, snapPointReveal, useDrawerSwipe };
|
|
426
|
+
export type { RdxDrawerRegistration, RdxDrawerRelease, RdxDrawerRootContext, RdxDrawerSnapEntry, RdxDrawerSnapPoint, RdxDrawerSnapResolveOptions, RdxDrawerSnapTarget, RdxDrawerSwipeConfig, RdxDrawerSwipeDirection };
|
|
@@ -1,70 +1,147 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { Signal, WritableSignal } from '@angular/core';
|
|
3
|
+
import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
|
|
3
4
|
import { BooleanInput, NumberInput } from '@radix-ng/primitives/core';
|
|
4
5
|
import * as i1 from '@radix-ng/primitives/dismissable-layer';
|
|
5
|
-
import
|
|
6
|
+
import * as _radix_ng_primitives_editable from '@radix-ng/primitives/editable';
|
|
6
7
|
|
|
8
|
+
type EditableActivationMode = 'focus' | 'dblclick' | 'none';
|
|
9
|
+
type EditableSubmitMode = 'blur' | 'enter' | 'none' | 'both';
|
|
7
10
|
type EditableRootContext = {
|
|
8
11
|
disabled: Signal<boolean>;
|
|
9
|
-
value: Signal<string |
|
|
12
|
+
value: Signal<string | undefined>;
|
|
10
13
|
inputValue: WritableSignal<string | undefined>;
|
|
11
14
|
placeholder: Signal<{
|
|
12
15
|
edit: string;
|
|
13
16
|
preview: string;
|
|
14
17
|
}>;
|
|
15
18
|
isEditing: Signal<boolean>;
|
|
16
|
-
submitMode: Signal<
|
|
17
|
-
activationMode: Signal<
|
|
19
|
+
submitMode: Signal<EditableSubmitMode>;
|
|
20
|
+
activationMode: Signal<EditableActivationMode>;
|
|
18
21
|
edit: () => void;
|
|
19
22
|
cancel: () => void;
|
|
20
23
|
submit: () => void;
|
|
21
24
|
maxLength: Signal<number | undefined>;
|
|
25
|
+
required: Signal<boolean>;
|
|
22
26
|
startWithEditMode: Signal<boolean>;
|
|
23
27
|
isEmpty: Signal<boolean>;
|
|
24
28
|
readonly: Signal<boolean>;
|
|
25
29
|
selectOnFocus: Signal<boolean>;
|
|
26
30
|
autoResize: Signal<boolean>;
|
|
27
31
|
inputRef: WritableSignal<HTMLInputElement | undefined>;
|
|
32
|
+
previewRef: WritableSignal<HTMLElement | undefined>;
|
|
33
|
+
canActivateOnFocus: () => boolean;
|
|
28
34
|
};
|
|
29
|
-
declare const injectEditableRootContext:
|
|
35
|
+
declare const injectEditableRootContext: _radix_ng_primitives_core.InjectContext<EditableRootContext>;
|
|
30
36
|
declare const provideEditableRootContext: (useFactory: () => EditableRootContext) => _angular_core.Provider;
|
|
31
|
-
type ActivationMode = 'focus' | 'dblclick' | 'none';
|
|
32
|
-
type SubmitMode = 'blur' | 'enter' | 'none' | 'both';
|
|
33
37
|
/**
|
|
34
38
|
* @group Components
|
|
35
39
|
*/
|
|
36
40
|
declare class RdxEditableRoot {
|
|
37
41
|
private readonly focusOutside;
|
|
38
|
-
readonly pointerDownOutside
|
|
42
|
+
private readonly pointerDownOutside;
|
|
39
43
|
readonly value: _angular_core.ModelSignal<string | undefined>;
|
|
44
|
+
/** Uncontrolled initial value. */
|
|
45
|
+
readonly defaultValue: _angular_core.InputSignal<string | undefined>;
|
|
40
46
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
41
47
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
42
48
|
readonly readonly: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
43
49
|
readonly selectOnFocus: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
44
|
-
readonly submitMode: _angular_core.InputSignal<
|
|
50
|
+
readonly submitMode: _angular_core.InputSignal<EditableSubmitMode>;
|
|
45
51
|
readonly maxLength: _angular_core.InputSignalWithTransform<number | undefined, NumberInput>;
|
|
46
52
|
/**
|
|
47
53
|
* Whether to start with the edit mode active
|
|
48
54
|
*/
|
|
49
55
|
readonly startWithEditMode: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
50
|
-
readonly activationMode: _angular_core.InputSignal<
|
|
56
|
+
readonly activationMode: _angular_core.InputSignal<EditableActivationMode>;
|
|
51
57
|
readonly autoResize: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
52
58
|
readonly required: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
59
|
+
/** Emitted when the value is committed (on submit). */
|
|
60
|
+
readonly onValueChange: _angular_core.OutputEmitterRef<string>;
|
|
53
61
|
readonly isEmpty: Signal<boolean>;
|
|
54
|
-
readonly $placeholder: Signal<
|
|
62
|
+
readonly $placeholder: Signal<{
|
|
55
63
|
edit: string;
|
|
56
64
|
preview: string;
|
|
57
65
|
}>;
|
|
66
|
+
/** Seeded from `startWithEditMode`; flipped imperatively by edit/submit/cancel. */
|
|
58
67
|
readonly isEditing: WritableSignal<boolean>;
|
|
68
|
+
/** Working copy of the value while editing; reseeded whenever the committed value changes. */
|
|
59
69
|
readonly inputValue: WritableSignal<string | undefined>;
|
|
60
70
|
readonly inputRef: WritableSignal<HTMLInputElement | undefined>;
|
|
71
|
+
readonly previewRef: WritableSignal<HTMLElement | undefined>;
|
|
72
|
+
private restoreFocusOnExit;
|
|
73
|
+
/** True while focus is being restored programmatically, to avoid re-entering edit mode. */
|
|
74
|
+
private suppressFocusActivation;
|
|
61
75
|
constructor();
|
|
76
|
+
canActivateOnFocus(): boolean;
|
|
62
77
|
handleDismiss(): void;
|
|
63
78
|
submit(): void;
|
|
64
79
|
cancel(): void;
|
|
65
80
|
edit(): void;
|
|
66
81
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxEditableRoot, never>;
|
|
67
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxEditableRoot, "[rdxEditableRoot]", ["rdxEditableRoot"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "selectOnFocus": { "alias": "selectOnFocus"; "required": false; "isSignal": true; }; "submitMode": { "alias": "submitMode"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "startWithEditMode": { "alias": "startWithEditMode"; "required": false; "isSignal": true; }; "activationMode": { "alias": "activationMode"; "required": false; "isSignal": true; }; "autoResize": { "alias": "autoResize"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, [{ directive: typeof i1.RdxFocusOutside; inputs: {}; outputs: {}; }, { directive: typeof i1.RdxPointerDownOutside; inputs: {}; outputs: {}; }]>;
|
|
82
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxEditableRoot, "[rdxEditableRoot]", ["rdxEditableRoot"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "selectOnFocus": { "alias": "selectOnFocus"; "required": false; "isSignal": true; }; "submitMode": { "alias": "submitMode"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "startWithEditMode": { "alias": "startWithEditMode"; "required": false; "isSignal": true; }; "activationMode": { "alias": "activationMode"; "required": false; "isSignal": true; }; "autoResize": { "alias": "autoResize"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; }, never, never, true, [{ directive: typeof i1.RdxFocusOutside; inputs: {}; outputs: {}; }, { directive: typeof i1.RdxPointerDownOutside; inputs: {}; outputs: {}; }]>;
|
|
68
83
|
}
|
|
69
84
|
|
|
70
|
-
|
|
85
|
+
declare class RdxEditableArea {
|
|
86
|
+
protected readonly rootContext: _radix_ng_primitives_editable.EditableRootContext;
|
|
87
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxEditableArea, never>;
|
|
88
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxEditableArea, "[rdxEditableArea]", never, {}, {}, never, never, true, never>;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
declare class RdxEditablePreview {
|
|
92
|
+
private readonly elementRef;
|
|
93
|
+
protected readonly rootContext: _radix_ng_primitives_editable.EditableRootContext;
|
|
94
|
+
readonly placeholder: _angular_core.Signal<string>;
|
|
95
|
+
constructor();
|
|
96
|
+
handleFocus(): void;
|
|
97
|
+
handleDoubleClick(): void;
|
|
98
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxEditablePreview, never>;
|
|
99
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxEditablePreview, "span[rdxEditablePreview]", ["rdxEditablePreview"], {}, {}, never, never, true, never>;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
declare class RdxEditableInput {
|
|
103
|
+
private readonly inputRef;
|
|
104
|
+
protected readonly rootContext: _radix_ng_primitives_editable.EditableRootContext;
|
|
105
|
+
/** Accessible label for the input. Override to localize. */
|
|
106
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
107
|
+
readonly placeholder: _angular_core.Signal<string>;
|
|
108
|
+
readonly disabled: _angular_core.Signal<boolean>;
|
|
109
|
+
constructor();
|
|
110
|
+
handleInput(event: Event): void;
|
|
111
|
+
handleSubmitKeyDown(event: Event): void;
|
|
112
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxEditableInput, never>;
|
|
113
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxEditableInput, "input[rdxEditableInput]", never, { "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
declare class RdxEditableEditTrigger {
|
|
117
|
+
protected readonly rootContext: _radix_ng_primitives_editable.EditableRootContext;
|
|
118
|
+
/** Accessible label for the trigger. Override to localize. */
|
|
119
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
120
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxEditableEditTrigger, never>;
|
|
121
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxEditableEditTrigger, "button[rdxEditableEditTrigger]", never, { "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
declare class RdxEditableSubmitTrigger {
|
|
125
|
+
protected readonly rootContext: _radix_ng_primitives_editable.EditableRootContext;
|
|
126
|
+
/** Accessible label for the trigger. Override to localize. */
|
|
127
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
128
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxEditableSubmitTrigger, never>;
|
|
129
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxEditableSubmitTrigger, "button[rdxEditableSubmitTrigger]", never, { "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
declare class RdxEditableCancelTrigger {
|
|
133
|
+
protected readonly rootContext: _radix_ng_primitives_editable.EditableRootContext;
|
|
134
|
+
/** Accessible label for the trigger. Override to localize. */
|
|
135
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
136
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxEditableCancelTrigger, never>;
|
|
137
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxEditableCancelTrigger, "button[rdxEditableCancelTrigger]", never, { "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
declare class RdxEditableModule {
|
|
141
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxEditableModule, never>;
|
|
142
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<RdxEditableModule, never, [typeof RdxEditableRoot, typeof RdxEditableArea, typeof RdxEditablePreview, typeof RdxEditableInput, typeof RdxEditableEditTrigger, typeof RdxEditableSubmitTrigger, typeof RdxEditableCancelTrigger], [typeof RdxEditableRoot, typeof RdxEditableArea, typeof RdxEditablePreview, typeof RdxEditableInput, typeof RdxEditableEditTrigger, typeof RdxEditableSubmitTrigger, typeof RdxEditableCancelTrigger]>;
|
|
143
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<RdxEditableModule>;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export { RdxEditableArea, RdxEditableCancelTrigger, RdxEditableEditTrigger, RdxEditableInput, RdxEditableModule, RdxEditablePreview, RdxEditableRoot, RdxEditableSubmitTrigger, injectEditableRootContext, provideEditableRootContext };
|
|
147
|
+
export type { EditableActivationMode, EditableRootContext, EditableSubmitMode };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as _radix_ng_primitives_field from '@radix-ng/primitives/field';
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
|
+
import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
|
|
3
4
|
import { BooleanInput } from '@radix-ng/primitives/core';
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -225,7 +226,7 @@ declare const fieldRootContext: () => {
|
|
|
225
226
|
hasStateProvider: _angular_core.Signal<boolean>;
|
|
226
227
|
};
|
|
227
228
|
type RdxFieldRootContext = ReturnType<typeof fieldRootContext>;
|
|
228
|
-
declare const injectFieldRootContext:
|
|
229
|
+
declare const injectFieldRootContext: _radix_ng_primitives_core.InjectContext<{
|
|
229
230
|
controlId: _angular_core.WritableSignal<string>;
|
|
230
231
|
descriptionIds: _angular_core.WritableSignal<string[]>;
|
|
231
232
|
errorIds: _angular_core.WritableSignal<string[]>;
|
|
@@ -253,7 +254,7 @@ declare const injectFieldRootContext: (optional?: boolean) => {
|
|
|
253
254
|
*/
|
|
254
255
|
setStateProvider: (provider: RdxFieldState | null) => RdxFieldState | null;
|
|
255
256
|
hasStateProvider: _angular_core.Signal<boolean>;
|
|
256
|
-
}
|
|
257
|
+
}>;
|
|
257
258
|
declare const provideFieldRootContext: (useFactory: () => {
|
|
258
259
|
controlId: _angular_core.WritableSignal<string>;
|
|
259
260
|
descriptionIds: _angular_core.WritableSignal<string[]>;
|