@symbiote-native/angular 0.8.0 → 2.0.0
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 +13 -10
- package/babel-register-composed.cjs +58 -18
- package/bin/symbiote-angular-dev.cjs +16 -4
- package/build/angular/anchor-host-registry.js +1 -15
- package/build/angular/anchor-host-registry.js.map +1 -1
- package/build/angular/change-detection-flush.d.ts +31 -0
- package/build/angular/change-detection-flush.js +110 -0
- package/build/angular/change-detection-flush.js.map +1 -0
- package/build/angular/components/activity-indicator-props.d.ts +2 -0
- package/build/angular/components/activity-indicator-props.js +2 -0
- package/build/angular/components/activity-indicator-props.js.map +1 -0
- package/build/angular/components/button-props.d.ts +2 -0
- package/build/angular/components/button-props.js +2 -0
- package/build/angular/components/button-props.js.map +1 -0
- package/build/angular/components/flat-list/index.d.ts +2 -1
- package/build/angular/components/flat-list/index.js +22 -10
- package/build/angular/components/flat-list/index.js.map +1 -1
- package/build/angular/components/image-background-props.d.ts +6 -0
- package/build/angular/components/image-background-props.js +2 -0
- package/build/angular/components/image-background-props.js.map +1 -0
- package/build/angular/components/{image/shared.d.ts → image-shared.d.ts} +4 -4
- package/build/angular/components/{image/shared.js → image-shared.js} +39 -28
- package/build/angular/components/image-shared.js.map +1 -0
- package/build/angular/components/input-accessory-view-props.d.ts +7 -0
- package/build/angular/components/input-accessory-view-props.js +9 -0
- package/build/angular/components/input-accessory-view-props.js.map +1 -0
- package/build/angular/components/keyboard-avoiding-view/index.d.ts +2 -1
- package/build/angular/components/keyboard-avoiding-view/index.js +28 -27
- package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
- package/build/angular/components/modal/index.d.ts +2 -0
- package/build/angular/components/modal/index.js +33 -20
- package/build/angular/components/modal/index.js.map +1 -1
- package/build/angular/components/pressable-props.d.ts +32 -0
- package/build/angular/components/pressable-props.js +11 -0
- package/build/angular/components/pressable-props.js.map +1 -0
- package/build/angular/components/refresh-control-props.d.ts +16 -0
- package/build/angular/components/refresh-control-props.js +14 -0
- package/build/angular/components/refresh-control-props.js.map +1 -0
- package/build/angular/components/safe-area-view-props.d.ts +7 -0
- package/build/angular/components/safe-area-view-props.js +11 -0
- package/build/angular/components/safe-area-view-props.js.map +1 -0
- package/build/angular/components/scroll-view-props.d.ts +76 -0
- package/build/angular/components/scroll-view-props.js +18 -0
- package/build/angular/components/scroll-view-props.js.map +1 -0
- package/build/angular/components/section-list/index.d.ts +3 -0
- package/build/angular/components/section-list/index.js +10 -1
- package/build/angular/components/section-list/index.js.map +1 -1
- package/build/angular/components/text-input-props.d.ts +45 -0
- package/build/angular/components/text-input-props.js +18 -0
- package/build/angular/components/text-input-props.js.map +1 -0
- package/build/angular/components/touchable-native-feedback/touchable-native-feedback-props.d.ts +6 -0
- package/build/angular/components/touchable-native-feedback/touchable-native-feedback-props.js +2 -0
- package/build/angular/components/touchable-native-feedback/touchable-native-feedback-props.js.map +1 -0
- package/build/angular/components/touchable-props.d.ts +14 -0
- package/build/angular/components/touchable-props.js +13 -0
- package/build/angular/components/touchable-props.js.map +1 -0
- package/build/angular/components/touchable-without-feedback/touchable-without-feedback-props.d.ts +3 -0
- package/build/angular/components/touchable-without-feedback/touchable-without-feedback-props.js +2 -0
- package/build/angular/components/touchable-without-feedback/touchable-without-feedback-props.js.map +1 -0
- package/build/angular/components/virtualized-list/index.d.ts +8 -1
- package/build/angular/components/virtualized-list/index.js +373 -278
- package/build/angular/components/virtualized-list/index.js.map +1 -1
- package/build/angular/components/virtualized-section-list/index.d.ts +3 -0
- package/build/angular/components/virtualized-section-list/index.js +10 -1
- package/build/angular/components/virtualized-section-list/index.js.map +1 -1
- package/build/angular/components.d.ts +21 -27
- package/build/angular/components.js +13 -15
- package/build/angular/components.js.map +1 -1
- package/build/angular/create-portal/index.d.ts +11 -2
- package/build/angular/create-portal/index.js +37 -11
- package/build/angular/create-portal/index.js.map +1 -1
- package/build/angular/create-tunnel/index.js +1 -1
- package/build/angular/element-props.d.ts +53 -0
- package/build/angular/element-props.js +2 -0
- package/build/angular/element-props.js.map +1 -0
- package/build/angular/elements.d.ts +528 -0
- package/build/angular/elements.js +1444 -0
- package/build/angular/elements.js.map +1 -0
- package/build/angular/gate-demand.d.ts +37 -0
- package/build/angular/gate-demand.js +84 -0
- package/build/angular/gate-demand.js.map +1 -0
- package/build/angular/host-instance/index.js +1 -1
- package/build/angular/index.d.ts +5 -2
- package/build/angular/index.js +16 -1
- package/build/angular/index.js.map +1 -1
- package/build/angular/modules/animated/create-animated-component.d.ts +6 -6
- package/build/angular/modules/animated/create-animated-component.js +73 -81
- package/build/angular/modules/animated/create-animated-component.js.map +1 -1
- package/build/angular/modules/animated/index.js +1 -1
- package/build/angular/modules/animated/index.js.map +1 -1
- package/build/angular/modules/image/index.d.ts +3 -0
- package/build/angular/modules/image/index.js +16 -0
- package/build/angular/modules/image/index.js.map +1 -0
- package/build/angular/primitives/index.d.ts +28 -16
- package/build/angular/primitives/index.js +77 -31
- package/build/angular/primitives/index.js.map +1 -1
- package/build/angular/primitives/shared.d.ts +2 -3
- package/build/angular/primitives/shared.js +8 -53
- package/build/angular/primitives/shared.js.map +1 -1
- package/build/angular/register.d.ts +1 -0
- package/build/angular/register.js +16 -0
- package/build/angular/register.js.map +1 -0
- package/build/angular/render/index.js +4 -2
- package/build/angular/render/index.js.map +1 -1
- package/build/angular/renderer/index.js +207 -60
- package/build/angular/renderer/index.js.map +1 -1
- package/build/angular/renderer/value-change.d.ts +2 -0
- package/build/angular/renderer/value-change.js +9 -0
- package/build/angular/renderer/value-change.js.map +1 -0
- package/metro-config.cjs +23 -5
- package/metro-css-parser.cjs +2 -1
- package/package.json +17 -7
- package/src/anchor-host-registry.ts +1 -15
- package/src/change-detection-flush.ts +120 -0
- package/src/components/activity-indicator-props.ts +21 -0
- package/src/components/button-props.ts +26 -0
- package/src/components/flat-list/index.ts +12 -4
- package/src/components/image-background-props.ts +24 -0
- package/src/components/{image/shared.ts → image-shared.ts} +57 -26
- package/src/components/input-accessory-view-props.ts +21 -0
- package/src/components/keyboard-avoiding-view/index.ts +27 -16
- package/src/components/modal/index.ts +32 -11
- package/src/components/pressable-props.ts +73 -0
- package/src/components/refresh-control-props.ts +43 -0
- package/src/components/safe-area-view-props.ts +28 -0
- package/src/components/scroll-view-props.ts +109 -0
- package/src/components/section-list/index.ts +18 -0
- package/src/components/text-input-props.ts +72 -0
- package/src/components/touchable-native-feedback/touchable-native-feedback-props.ts +23 -0
- package/src/components/touchable-props.ts +30 -0
- package/src/components/touchable-without-feedback/touchable-without-feedback-props.ts +21 -0
- package/src/components/virtualized-list/index.ts +254 -153
- package/src/components/virtualized-section-list/index.ts +18 -0
- package/src/components.ts +86 -35
- package/src/create-portal/index.ts +39 -9
- package/src/create-tunnel/index.ts +1 -1
- package/src/diagnostics.ts +1 -1
- package/src/element-props.ts +90 -0
- package/src/elements.ts +919 -0
- package/src/gate-demand.ts +109 -0
- package/src/host-instance/index.ts +1 -1
- package/src/index.ts +54 -15
- package/src/modules/animated/create-animated-component.ts +73 -59
- package/src/modules/animated/index.ts +1 -1
- package/src/modules/image/index.ts +18 -0
- package/src/primitives/index.ts +47 -16
- package/src/primitives/shared.ts +11 -44
- package/src/register.ts +15 -0
- package/src/render/index.ts +4 -2
- package/src/renderer/index.ts +239 -80
- package/src/renderer/value-change.ts +8 -0
- package/build/angular/components/activity-indicator/index.android.d.ts +0 -13
- package/build/angular/components/activity-indicator/index.android.js +0 -29
- package/build/angular/components/activity-indicator/index.android.js.map +0 -1
- package/build/angular/components/activity-indicator/index.d.ts +0 -1
- package/build/angular/components/activity-indicator/index.ios.d.ts +0 -9
- package/build/angular/components/activity-indicator/index.ios.js +0 -26
- package/build/angular/components/activity-indicator/index.ios.js.map +0 -1
- package/build/angular/components/activity-indicator/index.js +0 -4
- package/build/angular/components/activity-indicator/index.js.map +0 -1
- package/build/angular/components/activity-indicator/shared.d.ts +0 -67
- package/build/angular/components/activity-indicator/shared.js +0 -260
- package/build/angular/components/activity-indicator/shared.js.map +0 -1
- package/build/angular/components/button.d.ts +0 -65
- package/build/angular/components/button.js +0 -351
- package/build/angular/components/button.js.map +0 -1
- package/build/angular/components/image/index.android.d.ts +0 -15
- package/build/angular/components/image/index.android.js +0 -91
- package/build/angular/components/image/index.android.js.map +0 -1
- package/build/angular/components/image/index.d.ts +0 -1
- package/build/angular/components/image/index.ios.d.ts +0 -15
- package/build/angular/components/image/index.ios.js +0 -91
- package/build/angular/components/image/index.ios.js.map +0 -1
- package/build/angular/components/image/index.js +0 -3
- package/build/angular/components/image/index.js.map +0 -1
- package/build/angular/components/image/shared.js.map +0 -1
- package/build/angular/components/image-background.d.ts +0 -82
- package/build/angular/components/image-background.js +0 -434
- package/build/angular/components/image-background.js.map +0 -1
- package/build/angular/components/input-accessory-view/index.d.ts +0 -65
- package/build/angular/components/input-accessory-view/index.js +0 -290
- package/build/angular/components/input-accessory-view/index.js.map +0 -1
- package/build/angular/components/pressable/index.d.ts +0 -129
- package/build/angular/components/pressable/index.js +0 -473
- package/build/angular/components/pressable/index.js.map +0 -1
- package/build/angular/components/refresh-control/index.d.ts +0 -90
- package/build/angular/components/refresh-control/index.js +0 -380
- package/build/angular/components/refresh-control/index.js.map +0 -1
- package/build/angular/components/safe-area-view/index.d.ts +0 -62
- package/build/angular/components/safe-area-view/index.js +0 -287
- package/build/angular/components/safe-area-view/index.js.map +0 -1
- package/build/angular/components/scroll-view/index.android.d.ts +0 -20
- package/build/angular/components/scroll-view/index.android.js +0 -262
- package/build/angular/components/scroll-view/index.android.js.map +0 -1
- package/build/angular/components/scroll-view/index.d.ts +0 -3
- package/build/angular/components/scroll-view/index.ios.d.ts +0 -8
- package/build/angular/components/scroll-view/index.ios.js +0 -92
- package/build/angular/components/scroll-view/index.ios.js.map +0 -1
- package/build/angular/components/scroll-view/index.js +0 -6
- package/build/angular/components/scroll-view/index.js.map +0 -1
- package/build/angular/components/scroll-view/projection.d.ts +0 -67
- package/build/angular/components/scroll-view/projection.js +0 -560
- package/build/angular/components/scroll-view/projection.js.map +0 -1
- package/build/angular/components/scroll-view/shared.d.ts +0 -239
- package/build/angular/components/scroll-view/shared.js +0 -832
- package/build/angular/components/scroll-view/shared.js.map +0 -1
- package/build/angular/components/scroll-view/sticky-header.d.ts +0 -40
- package/build/angular/components/scroll-view/sticky-header.js +0 -224
- package/build/angular/components/scroll-view/sticky-header.js.map +0 -1
- package/build/angular/components/switch/index.android.d.ts +0 -24
- package/build/angular/components/switch/index.android.js +0 -112
- package/build/angular/components/switch/index.android.js.map +0 -1
- package/build/angular/components/switch/index.d.ts +0 -1
- package/build/angular/components/switch/index.ios.d.ts +0 -23
- package/build/angular/components/switch/index.ios.js +0 -111
- package/build/angular/components/switch/index.ios.js.map +0 -1
- package/build/angular/components/switch/index.js +0 -4
- package/build/angular/components/switch/index.js.map +0 -1
- package/build/angular/components/switch/shared.d.ts +0 -49
- package/build/angular/components/switch/shared.js +0 -191
- package/build/angular/components/switch/shared.js.map +0 -1
- package/build/angular/components/text-input.d.ts +0 -161
- package/build/angular/components/text-input.js +0 -659
- package/build/angular/components/text-input.js.map +0 -1
- package/build/angular/components/touchable/index.d.ts +0 -276
- package/build/angular/components/touchable/index.js +0 -1422
- package/build/angular/components/touchable/index.js.map +0 -1
- package/build/angular/components/touchable-native-feedback/index.d.ts +0 -86
- package/build/angular/components/touchable-native-feedback/index.js +0 -407
- package/build/angular/components/touchable-native-feedback/index.js.map +0 -1
- package/src/components/activity-indicator/index.android.ts +0 -23
- package/src/components/activity-indicator/index.ios.ts +0 -21
- package/src/components/activity-indicator/index.ts +0 -4
- package/src/components/activity-indicator/shared.ts +0 -225
- package/src/components/button.ts +0 -220
- package/src/components/image/index.android.ts +0 -99
- package/src/components/image/index.ios.ts +0 -99
- package/src/components/image/index.ts +0 -3
- package/src/components/image-background.ts +0 -290
- package/src/components/input-accessory-view/index.ts +0 -240
- package/src/components/pressable/index.ts +0 -462
- package/src/components/refresh-control/index.ts +0 -340
- package/src/components/safe-area-view/index.ts +0 -231
- package/src/components/scroll-view/index.android.ts +0 -205
- package/src/components/scroll-view/index.ios.ts +0 -81
- package/src/components/scroll-view/index.ts +0 -7
- package/src/components/scroll-view/projection.ts +0 -713
- package/src/components/scroll-view/shared.ts +0 -1066
- package/src/components/scroll-view/sticky-header.ts +0 -267
- package/src/components/switch/index.android.ts +0 -113
- package/src/components/switch/index.ios.ts +0 -112
- package/src/components/switch/index.ts +0 -4
- package/src/components/switch/shared.ts +0 -284
- package/src/components/text-input.ts +0 -613
- package/src/components/touchable/index.ts +0 -913
- package/src/components/touchable-native-feedback/index.ts +0 -317
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// The `<refresh-control>` tag's prop surface. The tag is matched by `RefreshControlElement`
|
|
2
|
+
// (`../elements`) and carries the controlled-spinner handshake as an engine behavior
|
|
3
|
+
// (`registerRefreshControlBehavior` — mirror what native last reported, command it back when the
|
|
4
|
+
// app's `refreshing` disagrees, RefreshControl.js:145-166), so the wrapper that ran that in Angular
|
|
5
|
+
// was deleted 2026-09-11.
|
|
6
|
+
//
|
|
7
|
+
// WHERE it goes is the ScrollView's decision, not this tag's: write it as an ordinary FIRST CHILD
|
|
8
|
+
// on both platforms and the scroll-view behavior re-parents it — iOS a sibling before the content
|
|
9
|
+
// container, Android the `AndroidSwipeRefreshLayout` WRAPPING the scroll view.
|
|
10
|
+
//
|
|
11
|
+
// The type stays for a component forwarding a bag, and because `IAngularRefreshControlProps` is
|
|
12
|
+
// public API.
|
|
13
|
+
|
|
14
|
+
import type {
|
|
15
|
+
IAccessibilityProps,
|
|
16
|
+
IAriaProps,
|
|
17
|
+
} from '@symbiote-native/components';
|
|
18
|
+
import type { IStyleProp, IViewStyle } from '@symbiote-native/engine';
|
|
19
|
+
|
|
20
|
+
export interface IAngularRefreshControlProps
|
|
21
|
+
extends IAccessibilityProps, IAriaProps {
|
|
22
|
+
refreshing: boolean;
|
|
23
|
+
// `id` — RN's W3C alias for `nativeID`, folded by the spec entry's ID_ALIAS.
|
|
24
|
+
id?: string;
|
|
25
|
+
// RN's onRefresh is `() => void | Promise<void>`, the handler may be async; the promise is
|
|
26
|
+
// fire-and-forget (native already starts refreshing on the gesture).
|
|
27
|
+
onRefresh?: () => void | Promise<void>;
|
|
28
|
+
tintColor?: string;
|
|
29
|
+
title?: string;
|
|
30
|
+
titleColor?: string;
|
|
31
|
+
progressViewOffset?: number;
|
|
32
|
+
// Android-only spinner styling (RN RefreshControlPropsAndroid): `colors` are the indicator's
|
|
33
|
+
// animated stroke colors, `progressBackgroundColor` the disc behind it, `size` the diameter
|
|
34
|
+
// preset. AndroidSwipeRefreshLayout reads them; PullToRefreshView on iOS ignores unknown props.
|
|
35
|
+
colors?: readonly string[];
|
|
36
|
+
progressBackgroundColor?: string;
|
|
37
|
+
size?: 'default' | 'large';
|
|
38
|
+
// Android-only native prop forwarded to AndroidSwipeRefreshLayout; iOS native never reads it.
|
|
39
|
+
enabled?: boolean;
|
|
40
|
+
// The Android scroll-view wrap injects the layout half of the style onto this host; iOS leaves it
|
|
41
|
+
// unset (the RefreshControl is a childless sibling). Harmless to forward on both.
|
|
42
|
+
style?: IStyleProp<IViewStyle>;
|
|
43
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// The `<safe-area-view>` tag's prop surface. The tag is matched by `SafeAreaViewElement`
|
|
2
|
+
// (`../elements`) and commits a single `SafeAreaView` native view whose host insets its children to
|
|
3
|
+
// the safe area; there is no JS-side translation to do, so the wrapper that used to fold
|
|
4
|
+
// aria/role and forward a host bag was deleted 2026-09-10 — the engine's own aria fold and the
|
|
5
|
+
// renderer's `id` -> `nativeID` alias cover both, on every path.
|
|
6
|
+
//
|
|
7
|
+
// The type stays for a component forwarding a bag, and because `IAngularSafeAreaViewProps` is
|
|
8
|
+
// public API. Mirrors React's ISafeAreaViewProps minus children, which Angular takes via
|
|
9
|
+
// `<ng-content>`.
|
|
10
|
+
|
|
11
|
+
import type {
|
|
12
|
+
IAccessibilityProps,
|
|
13
|
+
IAriaProps,
|
|
14
|
+
} from '@symbiote-native/components';
|
|
15
|
+
import type {
|
|
16
|
+
IStyleProp,
|
|
17
|
+
ISymbioteEvent,
|
|
18
|
+
IViewStyle,
|
|
19
|
+
} from '@symbiote-native/engine';
|
|
20
|
+
|
|
21
|
+
export interface IAngularSafeAreaViewProps
|
|
22
|
+
extends IAccessibilityProps, IAriaProps {
|
|
23
|
+
style?: IStyleProp<IViewStyle>;
|
|
24
|
+
// `id` — accepted here and folded to `nativeID` by the renderer, matching upstream, whose
|
|
25
|
+
// SafeAreaView takes the full ViewProps surface.
|
|
26
|
+
id?: string;
|
|
27
|
+
onLayout?: (event: ISymbioteEvent) => void;
|
|
28
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// The `<scroll-view>` / `<horizontal-scroll-view>` tag's prop surface — the axis is the TAG you
|
|
2
|
+
// write, not a `horizontal` binding, because Android resolves a different native class per axis.
|
|
3
|
+
//
|
|
4
|
+
// The wrapper was deleted 2026-09-11 and nothing replaced it in the adapter: the ENGINE owns the
|
|
5
|
+
// whole shape now (`core/components/src/behaviors/scroll-view/`). `buildStructure` builds the
|
|
6
|
+
// content node the children go under, `slotProps` routes `contentContainerStyle` onto it as its
|
|
7
|
+
// `style`, `payloadFold` composes the two base styles, and the sticky machinery pins by DOCUMENT
|
|
8
|
+
// ORDER through the `<sticky-header>` tag — so the Angular projection bridge that used to wrap
|
|
9
|
+
// projected children by index is gone with it, along with its renderer hooks.
|
|
10
|
+
//
|
|
11
|
+
// A `<refresh-control>` is an ordinary FIRST CHILD on both platforms; the behavior re-parents it
|
|
12
|
+
// per platform (iOS a sibling before the content, Android the swipe layout WRAPPING the scroll
|
|
13
|
+
// view), which is why the adapter no longer has an `.ios`/`.android` split here.
|
|
14
|
+
//
|
|
15
|
+
// The imperative surface comes from `buildScrollViewHandle` (`@symbiote-native/components`) over
|
|
16
|
+
// the node a template ref hands back.
|
|
17
|
+
|
|
18
|
+
import type {
|
|
19
|
+
IAccessibilityProps,
|
|
20
|
+
IAriaProps,
|
|
21
|
+
} from '@symbiote-native/components';
|
|
22
|
+
import type {
|
|
23
|
+
IStyleProp,
|
|
24
|
+
ISymbioteEvent,
|
|
25
|
+
IViewStyle,
|
|
26
|
+
} from '@symbiote-native/engine';
|
|
27
|
+
|
|
28
|
+
export type { IScrollViewHandle } from '@symbiote-native/components';
|
|
29
|
+
|
|
30
|
+
type IScrollHandler = (event: ISymbioteEvent) => void;
|
|
31
|
+
type IContentSizeHandler = (width: number, height: number) => void;
|
|
32
|
+
|
|
33
|
+
export interface IAngularScrollViewProps
|
|
34
|
+
extends IAccessibilityProps, IAriaProps {
|
|
35
|
+
style?: IStyleProp<IViewStyle>;
|
|
36
|
+
// A bare string resolves through the shared style registry, like `class` on the host node.
|
|
37
|
+
contentContainerStyle?: IStyleProp<IViewStyle> | string;
|
|
38
|
+
scrollEnabled?: boolean;
|
|
39
|
+
showsVerticalScrollIndicator?: boolean;
|
|
40
|
+
showsHorizontalScrollIndicator?: boolean;
|
|
41
|
+
pagingEnabled?: boolean;
|
|
42
|
+
bounces?: boolean;
|
|
43
|
+
decelerationRate?: 'normal' | 'fast' | number;
|
|
44
|
+
scrollEventThrottle?: number;
|
|
45
|
+
contentInset?: {
|
|
46
|
+
top?: number;
|
|
47
|
+
left?: number;
|
|
48
|
+
bottom?: number;
|
|
49
|
+
right?: number;
|
|
50
|
+
};
|
|
51
|
+
contentOffset?: { x: number; y: number };
|
|
52
|
+
removeClippedSubviews?: boolean;
|
|
53
|
+
snapToInterval?: number;
|
|
54
|
+
snapToOffsets?: number[];
|
|
55
|
+
snapToAlignment?: 'start' | 'center' | 'end';
|
|
56
|
+
snapToStart?: boolean;
|
|
57
|
+
snapToEnd?: boolean;
|
|
58
|
+
disableIntervalMomentum?: boolean;
|
|
59
|
+
// Sticky headers: RN implements stickiness PURELY IN JS — the native scroll view does not honor
|
|
60
|
+
// an index array. The engine's behavior resolves the indices against its own content children.
|
|
61
|
+
stickyHeaderIndices?: number[];
|
|
62
|
+
invertStickyHeaders?: boolean;
|
|
63
|
+
keyboardDismissMode?: 'none' | 'on-drag' | 'interactive';
|
|
64
|
+
keyboardShouldPersistTaps?: boolean | 'always' | 'never' | 'handled';
|
|
65
|
+
maintainVisibleContentPosition?: {
|
|
66
|
+
minIndexForVisible: number;
|
|
67
|
+
autoscrollToTopThreshold?: number;
|
|
68
|
+
};
|
|
69
|
+
// iOS-only forwarding props (harmless on Android: its manager ignores unknown props).
|
|
70
|
+
alwaysBounceHorizontal?: boolean;
|
|
71
|
+
alwaysBounceVertical?: boolean;
|
|
72
|
+
centerContent?: boolean;
|
|
73
|
+
scrollIndicatorInsets?: {
|
|
74
|
+
top?: number;
|
|
75
|
+
left?: number;
|
|
76
|
+
bottom?: number;
|
|
77
|
+
right?: number;
|
|
78
|
+
};
|
|
79
|
+
indicatorStyle?: 'default' | 'black' | 'white';
|
|
80
|
+
directionalLockEnabled?: boolean;
|
|
81
|
+
automaticallyAdjustKeyboardInsets?: boolean;
|
|
82
|
+
contentInsetAdjustmentBehavior?:
|
|
83
|
+
'automatic' | 'scrollableAxes' | 'never' | 'always';
|
|
84
|
+
minimumZoomScale?: number;
|
|
85
|
+
maximumZoomScale?: number;
|
|
86
|
+
zoomScale?: number;
|
|
87
|
+
bouncesZoom?: boolean;
|
|
88
|
+
pinchGestureEnabled?: boolean;
|
|
89
|
+
// Android-only forwarding props (harmless on iOS).
|
|
90
|
+
nestedScrollEnabled?: boolean;
|
|
91
|
+
overScrollMode?: 'auto' | 'always' | 'never';
|
|
92
|
+
fadingEdgeLength?: number;
|
|
93
|
+
persistentScrollbar?: boolean;
|
|
94
|
+
endFillColor?: string;
|
|
95
|
+
onLayout?: IScrollHandler;
|
|
96
|
+
onScroll?: IScrollHandler;
|
|
97
|
+
onScrollBeginDrag?: IScrollHandler;
|
|
98
|
+
onScrollEndDrag?: IScrollHandler;
|
|
99
|
+
onMomentumScrollBegin?: IScrollHandler;
|
|
100
|
+
onMomentumScrollEnd?: IScrollHandler;
|
|
101
|
+
// iOS-only: user tapped the status bar to scroll to top. Inert on Android.
|
|
102
|
+
onScrollToTop?: IScrollHandler;
|
|
103
|
+
// Synthesized in JS from the content view's onLayout (RN _handleContentOnLayout); deduped.
|
|
104
|
+
onContentSizeChange?: IContentSizeHandler;
|
|
105
|
+
onAccessibilityAction?: (event: ISymbioteEvent) => void;
|
|
106
|
+
onAccessibilityTap?: (event: ISymbioteEvent) => void;
|
|
107
|
+
onMagicTap?: (event: ISymbioteEvent) => void;
|
|
108
|
+
onAccessibilityEscape?: (event: ISymbioteEvent) => void;
|
|
109
|
+
}
|
|
@@ -100,6 +100,13 @@ export {
|
|
|
100
100
|
VListHeaderDirective,
|
|
101
101
|
VListSeparatorDirective,
|
|
102
102
|
} from '../virtualized-list';
|
|
103
|
+
import {
|
|
104
|
+
gateWanted,
|
|
105
|
+
injectGateDemandAbove,
|
|
106
|
+
provideGateDemand,
|
|
107
|
+
type IGateDemand,
|
|
108
|
+
type IGatedAccessibilityEvent,
|
|
109
|
+
} from '../../gate-demand';
|
|
103
110
|
|
|
104
111
|
// SectionList's public surface is exactly VirtualizedSectionList's (RN layers them one-for-one), so
|
|
105
112
|
// the prop type is shared verbatim — no SectionList-only field exists.
|
|
@@ -123,6 +130,7 @@ export type ISectionListInputs<ItemT> = Omit<
|
|
|
123
130
|
@Component({
|
|
124
131
|
selector: 'SectionList',
|
|
125
132
|
standalone: true,
|
|
133
|
+
viewProviders: [provideGateDemand(() => SectionList)],
|
|
126
134
|
hostDirectives: [
|
|
127
135
|
{ directive: SymbioteStyleInputDirective, inputs: ['style'] },
|
|
128
136
|
],
|
|
@@ -381,6 +389,16 @@ export class SectionList<ItemT = unknown>
|
|
|
381
389
|
@Output() readonly accessibilityTap = new EventEmitter<ISymbioteEvent>();
|
|
382
390
|
@Output() readonly magicTap = new EventEmitter<ISymbioteEvent>();
|
|
383
391
|
@Output() readonly accessibilityEscape = new EventEmitter<ISymbioteEvent>();
|
|
392
|
+
|
|
393
|
+
// This wrapper binds the four gated accessibility events on the component it renders, which
|
|
394
|
+
// Angular forces to be unconditional and which would light that component's gates on every
|
|
395
|
+
// instance. It answers for them instead — see `gate-demand.ts`.
|
|
396
|
+
private readonly gateDemandAbove = injectGateDemandAbove();
|
|
397
|
+
|
|
398
|
+
wantsGate(name: IGatedAccessibilityEvent): boolean {
|
|
399
|
+
return gateWanted(this.gateDemandAbove, name, this[name]);
|
|
400
|
+
}
|
|
401
|
+
|
|
384
402
|
@Input() role?: IAriaProps['role'];
|
|
385
403
|
@Input() ariaLabel?: string;
|
|
386
404
|
@Input() ariaLabelledBy?: string;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// The `<text-input>` / `<text-input-multiline>` tag's prop surface. The tags are matched by
|
|
2
|
+
// `TextInputElement` / `MultilineTextInputElement` (`../elements`) and carry the controlled-input
|
|
3
|
+
// machine as an engine behavior (`registerTextInputBehavior`), so the wrapper that used to run the
|
|
4
|
+
// handshake, the imperative handle and the autoFocus command in Angular was deleted 2026-09-11.
|
|
5
|
+
//
|
|
6
|
+
// Which of the two intrinsics a `<text-input multiline>` commits is the ENGINE's decision
|
|
7
|
+
// (`intrinsicWhen` on the spec entry), not a template branch — the wrapper's `@if`/`@else` over two
|
|
8
|
+
// hand-picked hosts is what that replaces.
|
|
9
|
+
//
|
|
10
|
+
// The imperative surface (`focus` / `blur` / `clear` / `isFocused` / `setSelection`) comes from the
|
|
11
|
+
// engine node itself, reached through a template ref, the same way every other adapter reaches it.
|
|
12
|
+
// `[(ngModel)]` / `formControl*` is `TextInputValueAccessor` (`../elements`), which is where the
|
|
13
|
+
// wrapper's `NG_VALUE_ACCESSOR` went.
|
|
14
|
+
//
|
|
15
|
+
// The type stays for a component forwarding a bag, and because `IAngularTextInputProps` is public
|
|
16
|
+
// API.
|
|
17
|
+
|
|
18
|
+
import type {
|
|
19
|
+
IAccessibilityProps,
|
|
20
|
+
IAriaProps,
|
|
21
|
+
IEnterKeyHint,
|
|
22
|
+
IInputMode,
|
|
23
|
+
ISubmitBehavior,
|
|
24
|
+
ITextInputEventHandler,
|
|
25
|
+
ITextInputSelection,
|
|
26
|
+
} from '@symbiote-native/components';
|
|
27
|
+
import type { IStyleProp, ITextStyle } from '@symbiote-native/engine';
|
|
28
|
+
|
|
29
|
+
export interface IAngularTextInputProps
|
|
30
|
+
extends IAccessibilityProps, IAriaProps {
|
|
31
|
+
value?: string;
|
|
32
|
+
defaultValue?: string;
|
|
33
|
+
placeholder?: string;
|
|
34
|
+
placeholderTextColor?: string;
|
|
35
|
+
editable?: boolean;
|
|
36
|
+
keyboardType?: string;
|
|
37
|
+
secureTextEntry?: boolean;
|
|
38
|
+
maxLength?: number;
|
|
39
|
+
multiline?: boolean;
|
|
40
|
+
selection?: ITextInputSelection;
|
|
41
|
+
autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters';
|
|
42
|
+
autoCorrect?: boolean;
|
|
43
|
+
autoComplete?: string;
|
|
44
|
+
textContentType?: string;
|
|
45
|
+
autoFocus?: boolean;
|
|
46
|
+
showSoftInputOnFocus?: boolean;
|
|
47
|
+
returnKeyType?: string;
|
|
48
|
+
selectTextOnFocus?: boolean;
|
|
49
|
+
scrollEnabled?: boolean;
|
|
50
|
+
numberOfLines?: number;
|
|
51
|
+
textAlign?: 'left' | 'center' | 'right';
|
|
52
|
+
blurOnSubmit?: boolean;
|
|
53
|
+
inputMode?: IInputMode;
|
|
54
|
+
enterKeyHint?: IEnterKeyHint;
|
|
55
|
+
readOnly?: boolean;
|
|
56
|
+
submitBehavior?: ISubmitBehavior;
|
|
57
|
+
cursorColor?: string;
|
|
58
|
+
selectionColor?: string;
|
|
59
|
+
selectionHandleColor?: string;
|
|
60
|
+
underlineColorAndroid?: string;
|
|
61
|
+
inputAccessoryViewID?: string;
|
|
62
|
+
style?: IStyleProp<ITextStyle>;
|
|
63
|
+
onValueChange?: (text: string) => void;
|
|
64
|
+
onChange?: ITextInputEventHandler;
|
|
65
|
+
onFocus?: ITextInputEventHandler;
|
|
66
|
+
onBlur?: ITextInputEventHandler;
|
|
67
|
+
onEndEditing?: ITextInputEventHandler;
|
|
68
|
+
onSubmitEditing?: ITextInputEventHandler;
|
|
69
|
+
onKeyPress?: ITextInputEventHandler;
|
|
70
|
+
onSelectionChange?: ITextInputEventHandler;
|
|
71
|
+
onContentSizeChange?: ITextInputEventHandler;
|
|
72
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// The prop surface of `<touchable-native-feedback>`, for Angular.
|
|
2
|
+
//
|
|
3
|
+
// No component left to type — the element IS the tag, matched by `TouchableNativeFeedbackElement`
|
|
4
|
+
// (`../../elements.ts`), and RN's own TNF renders nothing (TouchableNativeFeedback.js:289,339); the
|
|
5
|
+
// engine behavior clones these props onto the single child. This stays exported because an app that
|
|
6
|
+
// wraps the tag in its own component types the bag it forwards against something.
|
|
7
|
+
//
|
|
8
|
+
// Declared here rather than shared, over the Angular Pressable INPUT surface: children arrive
|
|
9
|
+
// through content projection, not as a prop, which is the split
|
|
10
|
+
// <prop_types_split_agnostic_vs_per_adapter> describes. `style` is absent because RN's TNF declares
|
|
11
|
+
// none — the drawable is the whole visual, and a `style` on this tag would sit on a node that never
|
|
12
|
+
// commits.
|
|
13
|
+
import type { INativeFeedbackBackground } from '@symbiote-native/components';
|
|
14
|
+
|
|
15
|
+
import type { IAngularPressableInputs } from '../pressable-props';
|
|
16
|
+
|
|
17
|
+
export type IAngularTouchableNativeFeedbackProps = Omit<
|
|
18
|
+
IAngularPressableInputs,
|
|
19
|
+
'style'
|
|
20
|
+
> & {
|
|
21
|
+
background?: INativeFeedbackBackground;
|
|
22
|
+
useForeground?: boolean;
|
|
23
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// The prop surfaces of `<touchable-opacity>` and `<touchable-highlight>`, for Angular.
|
|
2
|
+
//
|
|
3
|
+
// No components left to type — the elements ARE the tags, matched by `TouchableOpacityElement` and
|
|
4
|
+
// `TouchableHighlightElement` (`../elements`), and both machines run on the engine node
|
|
5
|
+
// (`registerTouchableOpacityBehavior` / `registerTouchableHighlightBehavior`): the opacity fade is
|
|
6
|
+
// an engine-side style layer over the responder, and the underlay swap is the same `activeStyle`
|
|
7
|
+
// channel a `:active` rule uses. The wrappers that ran those in Angular were deleted 2026-09-11.
|
|
8
|
+
//
|
|
9
|
+
// Declared per-adapter over the Angular Pressable INPUT surface, since children arrive through
|
|
10
|
+
// content projection rather than as a field — the split
|
|
11
|
+
// <prop_types_split_agnostic_vs_per_adapter> describes. Mirrors React/Vue's ITouchableBaseProps.
|
|
12
|
+
|
|
13
|
+
import type { IPressTimingProps } from '@symbiote-native/components';
|
|
14
|
+
import type { IStyleProp, IViewStyle } from '@symbiote-native/engine';
|
|
15
|
+
|
|
16
|
+
import type { IAngularPressableInputs } from './pressable-props';
|
|
17
|
+
|
|
18
|
+
type IAngularTouchableBaseProps = Omit<IAngularPressableInputs, 'style'> &
|
|
19
|
+
IPressTimingProps & {
|
|
20
|
+
style?: IStyleProp<IViewStyle>;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export type IAngularTouchableOpacityProps = IAngularTouchableBaseProps & {
|
|
24
|
+
activeOpacity?: number;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export type IAngularTouchableHighlightProps = IAngularTouchableBaseProps & {
|
|
28
|
+
activeOpacity?: number;
|
|
29
|
+
underlayColor?: string;
|
|
30
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// The prop surface of `<touchable-without-feedback>`, for Angular.
|
|
2
|
+
//
|
|
3
|
+
// No component left to type — the element IS the tag, matched by `TouchableWithoutFeedbackElement`
|
|
4
|
+
// (`../../elements.ts`), and RN's own TWF renders nothing (TouchableWithoutFeedback.js:229,286); the
|
|
5
|
+
// engine behavior clones these props onto the single child. This stays exported because an app that
|
|
6
|
+
// wraps the tag in its own component types the bag it forwards against something.
|
|
7
|
+
//
|
|
8
|
+
// Declared here rather than shared, over the Angular Pressable INPUT surface: children arrive
|
|
9
|
+
// through content projection, not as a prop, which is the split
|
|
10
|
+
// <prop_types_split_agnostic_vs_per_adapter> describes. `style` is absent because RN's TWF never
|
|
11
|
+
// clones it — the prop is declared upstream (:122, tagged "FIXME: not in doc") and left out of
|
|
12
|
+
// `elementProps`, so on the tag it would sit on a node that never commits.
|
|
13
|
+
import type { IPressTimingProps } from '@symbiote-native/components';
|
|
14
|
+
|
|
15
|
+
import type { IAngularPressableInputs } from '../pressable-props';
|
|
16
|
+
|
|
17
|
+
export type IAngularTouchableWithoutFeedbackProps = Omit<
|
|
18
|
+
IAngularPressableInputs,
|
|
19
|
+
'style'
|
|
20
|
+
> &
|
|
21
|
+
IPressTimingProps;
|