@hjmds/react-native 1.8.0 → 1.9.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 +4 -0
- package/dist/agreement.d.ts.map +1 -1
- package/dist/agreement.js +13 -3
- package/dist/agreement.js.map +1 -1
- package/dist/carousel-motion.d.ts +16 -0
- package/dist/carousel-motion.d.ts.map +1 -0
- package/dist/carousel-motion.js +57 -0
- package/dist/carousel-motion.js.map +1 -0
- package/dist/celebration.d.ts +8 -0
- package/dist/celebration.d.ts.map +1 -0
- package/dist/celebration.js +64 -0
- package/dist/celebration.js.map +1 -0
- package/dist/content-transition.d.ts +12 -0
- package/dist/content-transition.d.ts.map +1 -0
- package/dist/content-transition.js +34 -0
- package/dist/content-transition.js.map +1 -0
- package/dist/date-picker.d.ts +8 -1
- package/dist/date-picker.d.ts.map +1 -1
- package/dist/date-picker.js +2 -2
- package/dist/date-picker.js.map +1 -1
- package/dist/evidence.d.ts +1 -1
- package/dist/evidence.js +1 -1
- package/dist/forms.d.ts.map +1 -1
- package/dist/forms.js +40 -4
- package/dist/forms.js.map +1 -1
- package/dist/image-viewer.d.ts.map +1 -1
- package/dist/image-viewer.js +4 -2
- package/dist/image-viewer.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/inputs.d.ts.map +1 -1
- package/dist/inputs.js +11 -3
- package/dist/inputs.js.map +1 -1
- package/dist/internal/state.d.ts +19 -0
- package/dist/internal/state.d.ts.map +1 -1
- package/dist/internal/state.js +15 -0
- package/dist/internal/state.js.map +1 -1
- package/dist/number-field.d.ts.map +1 -1
- package/dist/number-field.js +6 -1
- package/dist/number-field.js.map +1 -1
- package/dist/overlays.d.ts +1 -1
- package/dist/overlays.d.ts.map +1 -1
- package/dist/overlays.js +11 -2
- package/dist/overlays.js.map +1 -1
- package/dist/provider.d.ts +19 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +10 -2
- package/dist/provider.js.map +1 -1
- package/dist/screen-transition.d.ts +14 -0
- package/dist/screen-transition.d.ts.map +1 -0
- package/dist/screen-transition.js +42 -0
- package/dist/screen-transition.js.map +1 -0
- package/dist/sheet-gesture.d.ts +11 -3
- package/dist/sheet-gesture.d.ts.map +1 -1
- package/dist/sheet-gesture.js +59 -11
- package/dist/sheet-gesture.js.map +1 -1
- package/dist/slider.d.ts.map +1 -1
- package/dist/slider.js +58 -11
- package/dist/slider.js.map +1 -1
- package/dist/sortable.d.ts +15 -0
- package/dist/sortable.d.ts.map +1 -0
- package/dist/sortable.js +64 -0
- package/dist/sortable.js.map +1 -0
- package/dist/swipe-actions.d.ts +17 -0
- package/dist/swipe-actions.d.ts.map +1 -0
- package/dist/swipe-actions.js +58 -0
- package/dist/swipe-actions.js.map +1 -0
- package/dist/tags-input.d.ts.map +1 -1
- package/dist/tags-input.js +5 -1
- package/dist/tags-input.js.map +1 -1
- package/dist/toast-liquid.d.ts.map +1 -1
- package/dist/toast-liquid.js +17 -2
- package/dist/toast-liquid.js.map +1 -1
- package/dist/transfer-list.d.ts.map +1 -1
- package/dist/transfer-list.js +3 -2
- package/dist/transfer-list.js.map +1 -1
- package/dist/upload-item.d.ts.map +1 -1
- package/dist/upload-item.js +5 -3
- package/dist/upload-item.js.map +1 -1
- package/docs/liquid-toast.md +11 -6
- package/docs/patches/react-native-screen-transitions.patch +87 -0
- package/package.json +70 -4
package/README.md
CHANGED
|
@@ -405,3 +405,7 @@ Supply measured item heights for Masonry and a fixed row height for VirtualList.
|
|
|
405
405
|
The optional `qr-code` entry requires `qrcode-generator@2.0.4` and a visible alternative
|
|
406
406
|
action alongside the accessible code. Native also requires `react-native-svg@15.15.5`.
|
|
407
407
|
For the optional native menu, apply the host patches documented in [patch installation](docs/patches/README.md).
|
|
408
|
+
|
|
409
|
+
## Optional interaction adapters
|
|
410
|
+
|
|
411
|
+
Stable `sortable`, `swipe-actions`, `content-transition`, `carousel-motion` and `celebration` entries plus experimental native `screen-transition` are available through explicit subpath imports. See [installation, localized labels and behavior contracts](../../docs/interaction-adapters.md), including pinned peers and native verification limits. These adapters are not root exports.
|
package/dist/agreement.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agreement.d.ts","sourceRoot":"","sources":["../src/agreement.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,8CAA8C,CAAC;AAItD,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"agreement.d.ts","sourceRoot":"","sources":["../src/agreement.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,8CAA8C,CAAC;AAItD,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAK/E,MAAM,MAAM,cAAc,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IAChE,UAAU,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IAC7B,iBAAiB,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACpC,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IACpD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IACpD,gFAAgF;IAChF,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC;IAC5B,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEH,wBAAgB,SAAS,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,EAAE,EACpD,UAAU,EACV,UAAU,EAAE,iBAAiB,EAC7B,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,aAAa,EACb,aAAa,EACb,KAAK,GACN,EAAE,cAAc,CAAC,EAAE,CAAC,+BA8HpB"}
|
package/dist/agreement.js
CHANGED
|
@@ -4,6 +4,7 @@ import { resolveColorReference } from "@hjmds/design-contracts/color-references"
|
|
|
4
4
|
import { radius, spacing } from "@hjmds/design-contracts/foundations";
|
|
5
5
|
import { useMemo, useState } from "react";
|
|
6
6
|
import { Pressable, View } from "react-native";
|
|
7
|
+
import { mixedCheckboxState } from "./internal/state.js";
|
|
7
8
|
import { Text } from "./primitives.js";
|
|
8
9
|
import { useHjmNativeTheme } from "./provider.js";
|
|
9
10
|
export function Agreement({ descriptor, checkedIds: controlledChecked, defaultCheckedIds, onCheckedIdsChange, onStateChange, onDetail, requiredLabel, optionalLabel, style, }) {
|
|
@@ -21,6 +22,11 @@ export function Agreement({ descriptor, checkedIds: controlledChecked, defaultCh
|
|
|
21
22
|
};
|
|
22
23
|
const markColor = resolveColorReference(agreementRecipe.item.selectedIndicator, theme.palette);
|
|
23
24
|
const borderColor = resolveColorReference(agreementRecipe.item.focus.color, theme.palette);
|
|
25
|
+
// The glyph sits on the brand fill, so it takes onPrimary, the same token as the
|
|
26
|
+
// Checkbox indicator (selectionControlRecipe.states.indicator). agreementRecipe.all.color
|
|
27
|
+
// is the row text color and measured 2.19:1 on the fill (2026-09-30 audit). Read from
|
|
28
|
+
// the theme rather than the recipes entry, which would add a module to this subpath.
|
|
29
|
+
const glyphColor = theme.colors.onPrimary;
|
|
24
30
|
const mark = (value) => (_jsx(View, { style: {
|
|
25
31
|
alignItems: "center",
|
|
26
32
|
backgroundColor: value === false ? "transparent" : markColor,
|
|
@@ -30,8 +36,8 @@ export function Agreement({ descriptor, checkedIds: controlledChecked, defaultCh
|
|
|
30
36
|
height: spacing.md,
|
|
31
37
|
justifyContent: "center",
|
|
32
38
|
width: spacing.md,
|
|
33
|
-
}, children: value === false ? null : (_jsx(Text, { style: { color:
|
|
34
|
-
return (_jsxs(View, { accessibilityLabel: descriptor.accessibilityLabel, accessibilityRole: "none", style: [{ gap: agreementRecipe.gap }, style], children: [_jsxs(Pressable, { accessibilityRole: "checkbox", accessibilityState:
|
|
39
|
+
}, children: value === false ? null : (_jsx(Text, { accessible: false, style: { color: glyphColor }, variant: "caption", children: value === "mixed" ? "–" : "✓" })) }));
|
|
40
|
+
return (_jsxs(View, { accessibilityLabel: descriptor.accessibilityLabel, accessibilityRole: "none", style: [{ gap: agreementRecipe.gap }, style], children: [_jsxs(Pressable, { accessibilityLabel: descriptor.allLabel, accessibilityRole: "checkbox", accessibilityState: mixedCheckboxState(state.all), onPress: () => commit(toggleAgreementAll(descriptor, checked)), style: {
|
|
35
41
|
alignItems: "center",
|
|
36
42
|
backgroundColor: resolveColorReference(agreementRecipe.all.background, theme.palette),
|
|
37
43
|
borderRadius: radius.md,
|
|
@@ -40,7 +46,11 @@ export function Agreement({ descriptor, checkedIds: controlledChecked, defaultCh
|
|
|
40
46
|
minHeight: agreementRecipe.all.minHeight,
|
|
41
47
|
paddingHorizontal: agreementRecipe.all.paddingHorizontal,
|
|
42
48
|
paddingVertical: agreementRecipe.all.paddingVertical,
|
|
43
|
-
}, children: [mark(state.all), _jsx(Text, { variant: agreementRecipe.all.textVariant, children: descriptor.allLabel })] }), descriptor.items.map((item) => (_jsxs(View, { style: { gap: spacing.xxs }, children: [_jsxs(View, { style: { alignItems: "center", flexDirection: "row", gap: spacing.xs }, children: [_jsxs(Pressable
|
|
49
|
+
}, children: [mark(state.all), _jsx(Text, { variant: agreementRecipe.all.textVariant, children: descriptor.allLabel })] }), descriptor.items.map((item) => (_jsxs(View, { style: { gap: spacing.xxs }, children: [_jsxs(View, { style: { alignItems: "center", flexDirection: "row", gap: spacing.xs }, children: [_jsxs(Pressable
|
|
50
|
+
// Named explicitly so the check glyph never leaks into the name ("✓, Terms").
|
|
51
|
+
, {
|
|
52
|
+
// Named explicitly so the check glyph never leaks into the name ("✓, Terms").
|
|
53
|
+
accessibilityLabel: `${item.label} ${item.required === true ? requiredLabel : optionalLabel}`, accessibilityRole: "checkbox", accessibilityState: { checked: checked.has(item.id), disabled: item.disabled === true }, disabled: item.disabled === true, onPress: () => commit(toggleAgreementItem(descriptor, checked, item.id)), style: {
|
|
44
54
|
alignItems: "center",
|
|
45
55
|
flex: 1,
|
|
46
56
|
flexDirection: "row",
|
package/dist/agreement.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agreement.js","sourceRoot":"","sources":["../src/agreement.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,GAG5B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,IAAI,EAAkC,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAiBlD,MAAM,UAAU,SAAS,CAA6B,EACpD,UAAU,EACV,UAAU,EAAE,iBAAiB,EAC7B,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,aAAa,EACb,aAAa,EACb,KAAK,GACc;IACnB,2BAA2B,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAkB,iBAAiB,IAAI,IAAI,GAAG,EAAM,CAAC,CAAC;IAC9F,MAAM,GAAG,GAAG,iBAAiB,IAAI,QAAQ,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,2BAA2B,CAAC,UAAU,EAAE,GAAG,CAAC,EAClD,CAAC,UAAU,EAAE,GAAG,CAAC,CAClB,CAAC;IACF,MAAM,KAAK,GAAG,qBAAqB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,CAAC,IAAqB,EAAE,EAAE;QACvC,IAAI,iBAAiB,KAAK,SAAS;YAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACvD,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3B,aAAa,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/F,MAAM,WAAW,GAAG,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3F,MAAM,IAAI,GAAG,CAAC,KAAwB,EAAE,EAAE,CAAC,CACzC,KAAC,IAAI,IACH,KAAK,EAAE;YACL,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;YAC5D,WAAW,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YACtD,YAAY,EAAE,MAAM,CAAC,EAAE;YACvB,WAAW,EAAE,CAAC;YACd,MAAM,EAAE,OAAO,CAAC,EAAE;YAClB,cAAc,EAAE,QAAQ;YACxB,KAAK,EAAE,OAAO,CAAC,EAAE;SAClB,YAEA,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACxB,KAAC,IAAI,IAAC,
|
|
1
|
+
{"version":3,"file":"agreement.js","sourceRoot":"","sources":["../src/agreement.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type SortableItem } from "@hjmds/design-contracts/components/interaction-adapters";
|
|
3
|
+
export type CarouselMotionProps = {
|
|
4
|
+
slides: readonly SortableItem[];
|
|
5
|
+
currentKey: string;
|
|
6
|
+
onCurrentKeyChange(key: string): void;
|
|
7
|
+
renderSlide(item: SortableItem): ReactNode;
|
|
8
|
+
label: string;
|
|
9
|
+
previousLabel: string;
|
|
10
|
+
nextLabel: string;
|
|
11
|
+
/** Measured host space, not a device-width assumption. */
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
};
|
|
15
|
+
export declare function CarouselMotion(props: CarouselMotionProps): import("react").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=carousel-motion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carousel-motion.d.ts","sourceRoot":"","sources":["../src/carousel-motion.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI1D,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,yDAAyD,CAAC;AAU9G,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3F,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IACpG,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAC/B,CAAC;AACF,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,+BA2CxD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from "react";
|
|
3
|
+
import { View } from "react-native";
|
|
4
|
+
import { Carousel } from "react-native-reanimated-carousel";
|
|
5
|
+
import { scheduleOnRN } from "react-native-worklets";
|
|
6
|
+
import { validateCarousel } from "@hjmds/design-contracts/components/interaction-adapters";
|
|
7
|
+
import { motion as timing } from "@hjmds/design-contracts/foundations";
|
|
8
|
+
import { Button } from "./actions.js";
|
|
9
|
+
import { useHjmNativeTheme } from "./provider.js";
|
|
10
|
+
/** Fraction of a slide past which a slow release still pages (platform paging uses half). */
|
|
11
|
+
const carouselReleasePageFraction = 0.5;
|
|
12
|
+
/** Opposite release speed (px/s) treated as a deliberate fling back, not a pause. */
|
|
13
|
+
const carouselReleaseFlingBack = 300;
|
|
14
|
+
export function CarouselMotion(props) {
|
|
15
|
+
const index = validateCarousel(props.slides, props.currentKey);
|
|
16
|
+
if (![props.width, props.height].every(value => Number.isFinite(value) && value > 0))
|
|
17
|
+
throw new TypeError("Carousel needs positive measured dimensions");
|
|
18
|
+
const { environment } = useHjmNativeTheme();
|
|
19
|
+
const ref = useRef(null);
|
|
20
|
+
const latest = useRef({ index, props });
|
|
21
|
+
latest.current = { index, props };
|
|
22
|
+
const rtl = environment.direction === "rtl";
|
|
23
|
+
const { width } = props;
|
|
24
|
+
// JS side of the release fallback below; reads the latest index so a stale
|
|
25
|
+
// gesture closure cannot page from an old slide.
|
|
26
|
+
const pageBy = (delta) => {
|
|
27
|
+
const { index: current, props: live } = latest.current;
|
|
28
|
+
const slide = live.slides[current + delta];
|
|
29
|
+
if (slide && slide.id !== live.currentKey)
|
|
30
|
+
live.onCurrentKeyChange(slide.id);
|
|
31
|
+
};
|
|
32
|
+
useEffect(() => { if (ref.current?.getCurrentIndex() !== index)
|
|
33
|
+
ref.current?.scrollTo({ index, animated: !environment.reducedMotion }); }, [index, environment.reducedMotion]);
|
|
34
|
+
return _jsxs(View, { accessibilityLabel: props.label, children: [_jsx(Carousel, { ref: ref, data: [...props.slides], defaultIndex: index, keyExtractor: item => item.id, style: { width: props.width, height: props.height, direction: environment.direction }, loop: false, autoplay: false, animation: { type: "timing", duration: environment.reducedMotion ? 0 : timing.normal },
|
|
35
|
+
// A deliberate horizontal move wins; vertical intent stays with the parent scroll view.
|
|
36
|
+
// The library's "page" snap only advances when the release velocity points the
|
|
37
|
+
// way of the drag. A finger that slowed or paused before lifting (velocity ~0)
|
|
38
|
+
// snapped back even from 74% of a slide: 2026-09-30 Android audit D6, reproduced
|
|
39
|
+
// at 450-600 ms swipes under host load. Past half a slide with no fling back, we
|
|
40
|
+
// page one slide ourselves. Rejected: snapMode "nearest", which lets a fling skip
|
|
41
|
+
// several slides; a lower activeOffsetX, which does not touch the release rule.
|
|
42
|
+
onConfigurePanGesture: gesture => gesture.activeOffsetX([-10, 10]).failOffsetY([-10, 10]).onEnd(event => {
|
|
43
|
+
"worklet";
|
|
44
|
+
const dx = event.translationX;
|
|
45
|
+
const vx = event.velocityX;
|
|
46
|
+
if (Math.abs(dx) < width * carouselReleasePageFraction)
|
|
47
|
+
return;
|
|
48
|
+
if (vx !== 0 && Math.sign(vx) === Math.sign(dx))
|
|
49
|
+
return;
|
|
50
|
+
if (Math.abs(vx) > carouselReleaseFlingBack)
|
|
51
|
+
return;
|
|
52
|
+
const forward = dx < 0 ? 1 : -1;
|
|
53
|
+
scheduleOnRN(pageBy, (rtl ? -forward : forward));
|
|
54
|
+
}), onSnapToItem: next => { const slide = props.slides[next]; if (slide && slide.id !== props.currentKey)
|
|
55
|
+
props.onCurrentKeyChange(slide.id); }, renderItem: ({ item, index: i }) => _jsx(View, { accessibilityElementsHidden: i !== index, importantForAccessibility: i === index ? "auto" : "no-hide-descendants", pointerEvents: i === index ? "auto" : "none", children: props.renderSlide(item) }) }), _jsx(Button, { tone: "ghost", disabled: index === 0, onPress: () => props.onCurrentKeyChange(props.slides[index - 1].id), children: props.previousLabel }), _jsx(Button, { tone: "ghost", disabled: index === props.slides.length - 1, onPress: () => props.onCurrentKeyChange(props.slides[index + 1].id), children: props.nextLabel })] });
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=carousel-motion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carousel-motion.js","sourceRoot":"","sources":["../src/carousel-motion.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type CelebrationPreset } from "@hjmds/design-contracts/components/interaction-adapters";
|
|
2
|
+
export type CelebrationProps = {
|
|
3
|
+
eventId: string;
|
|
4
|
+
preset?: CelebrationPreset;
|
|
5
|
+
onComplete?(): void;
|
|
6
|
+
};
|
|
7
|
+
export declare function Celebration({ eventId, preset, onComplete }: CelebrationProps): import("react").JSX.Element | null;
|
|
8
|
+
//# sourceMappingURL=celebration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"celebration.d.ts","sourceRoot":"","sources":["../src/celebration.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAyD,KAAK,iBAAiB,EAAE,MAAM,yDAAyD,CAAC;AAGxJ,MAAM,MAAM,gBAAgB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAAC,UAAU,CAAC,IAAI,IAAI,CAAA;CAAE,CAAC;AACpG,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,MAAsB,EAAE,UAAU,EAAE,EAAE,gBAAgB,sCAyC5F"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useState } from "react";
|
|
3
|
+
import { AppState, View, StyleSheet } from "react-native";
|
|
4
|
+
import { Confetti } from "react-native-fast-confetti";
|
|
5
|
+
import { celebrationColors, celebrationRecipe, validateEventId } from "@hjmds/design-contracts/components/interaction-adapters";
|
|
6
|
+
import { useHjmNativeTheme } from "./provider.js";
|
|
7
|
+
export function Celebration({ eventId, preset = "small-burst", onComplete }) {
|
|
8
|
+
validateEventId(eventId);
|
|
9
|
+
const { environment, colors, palette } = useHjmNativeTheme();
|
|
10
|
+
const [active, setActive] = useState(false);
|
|
11
|
+
const seen = useRef(new Set());
|
|
12
|
+
const callback = useRef(onComplete);
|
|
13
|
+
callback.current = onComplete;
|
|
14
|
+
const playback = useRef(null);
|
|
15
|
+
const stop = useRef(() => { });
|
|
16
|
+
const config = useRef({ preset, reduced: environment.reducedMotion });
|
|
17
|
+
config.current = { preset, reduced: environment.reducedMotion };
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
let disposed = false;
|
|
20
|
+
let done = false;
|
|
21
|
+
let started = false;
|
|
22
|
+
let playing = false;
|
|
23
|
+
let timer;
|
|
24
|
+
const finish = () => { if (!done && !disposed && started) {
|
|
25
|
+
done = true;
|
|
26
|
+
setActive(false);
|
|
27
|
+
callback.current?.();
|
|
28
|
+
} };
|
|
29
|
+
stop.current = finish;
|
|
30
|
+
playback.current = { id: eventId, end: finish, start: () => {
|
|
31
|
+
if (disposed || done || playing)
|
|
32
|
+
return;
|
|
33
|
+
playing = true;
|
|
34
|
+
clearTimeout(timer);
|
|
35
|
+
timer = setTimeout(finish, celebrationRecipe[config.current.preset].duration);
|
|
36
|
+
} };
|
|
37
|
+
setActive(false);
|
|
38
|
+
// Defer starting until after Strict Mode's probe cleanup, avoiding a consumed
|
|
39
|
+
// event with no animation. The event remains owned by this mounted session.
|
|
40
|
+
queueMicrotask(() => {
|
|
41
|
+
if (disposed || seen.current.has(eventId))
|
|
42
|
+
return;
|
|
43
|
+
seen.current.add(eventId);
|
|
44
|
+
started = true;
|
|
45
|
+
if (config.current.reduced || AppState.currentState !== "active") {
|
|
46
|
+
finish();
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
setActive(true);
|
|
50
|
+
// Atlas/layout startup consumed nearly the whole 1.6s recipe in device QA.
|
|
51
|
+
// Measure playback from the engine callback; bound failed startup separately.
|
|
52
|
+
timer = setTimeout(finish, 5000);
|
|
53
|
+
});
|
|
54
|
+
const sub = AppState.addEventListener("change", state => { if (state !== "active")
|
|
55
|
+
finish(); });
|
|
56
|
+
return () => { disposed = true; clearTimeout(timer); sub.remove(); };
|
|
57
|
+
}, [eventId]);
|
|
58
|
+
useEffect(() => { if (environment.reducedMotion)
|
|
59
|
+
stop.current(); }, [environment.reducedMotion]);
|
|
60
|
+
return active && !environment.reducedMotion ? _jsx(View, { pointerEvents: "none", accessibilityElementsHidden: true, importantForAccessibility: "no-hide-descendants", style: StyleSheet.absoluteFill, children: _jsx(Confetti, { gravity: 6, verticalSpacing: 12, onAnimationStart: () => { if (playback.current?.id === eventId)
|
|
61
|
+
playback.current.start(); }, onAnimationEnd: () => { if (playback.current?.id === eventId)
|
|
62
|
+
playback.current.end(); }, count: celebrationRecipe[preset].count, colors: celebrationColors(colors.primary, palette.statusAccents), autoplay: true, infinite: false, fadeOutOnEnd: true, reduceMotion: { mode: "system" } }, eventId) }) : null;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=celebration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"celebration.js","sourceRoot":"","sources":["../src/celebration.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export type ContentTransitionProps = {
|
|
3
|
+
stateKey: string;
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
motion?: "system" | "none";
|
|
6
|
+
};
|
|
7
|
+
export declare function ContentTransition({ stateKey, children, motion: preference }: ContentTransitionProps): import("react").JSX.Element;
|
|
8
|
+
export declare function TextTransition({ text, motion: preference }: {
|
|
9
|
+
text: string;
|
|
10
|
+
motion?: "system" | "none";
|
|
11
|
+
}): import("react").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=content-transition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-transition.d.ts","sourceRoot":"","sources":["../src/content-transition.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAM1D,MAAM,MAAM,sBAAsB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;CAAE,CAAC;AAC3G,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAqB,EAAE,EAAE,sBAAsB,+BAgB9G;AACD,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;CAAE,+BAExG"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from "react";
|
|
3
|
+
import { Animated, AppState } from "react-native";
|
|
4
|
+
import { motion as timing } from "@hjmds/design-contracts/foundations";
|
|
5
|
+
import { useHjmNativeTheme } from "./provider.js";
|
|
6
|
+
import { Text } from "./primitives.js";
|
|
7
|
+
export function ContentTransition({ stateKey, children, motion: preference = "system" }) {
|
|
8
|
+
const { environment } = useHjmNativeTheme();
|
|
9
|
+
const opacity = useRef(new Animated.Value(1)).current;
|
|
10
|
+
const previous = useRef(stateKey);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
opacity.stopAnimation();
|
|
13
|
+
const changed = previous.current !== stateKey;
|
|
14
|
+
previous.current = stateKey;
|
|
15
|
+
if (!changed || environment.reducedMotion || preference === "none" || AppState.currentState !== "active") {
|
|
16
|
+
opacity.setValue(1);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
opacity.setValue(0);
|
|
20
|
+
const animation = Animated.timing(opacity, { toValue: 1, duration: timing.normal, useNativeDriver: true });
|
|
21
|
+
animation.start();
|
|
22
|
+
const sub = AppState.addEventListener("change", state => { if (state !== "active") {
|
|
23
|
+
animation.stop();
|
|
24
|
+
opacity.setValue(1);
|
|
25
|
+
} });
|
|
26
|
+
return () => { animation.stop(); sub.remove(); };
|
|
27
|
+
}, [stateKey, opacity, environment.reducedMotion, preference]);
|
|
28
|
+
// Keep only the current subtree; exit copies could remain touchable or spoken.
|
|
29
|
+
return _jsx(Animated.View, { style: { opacity }, children: children });
|
|
30
|
+
}
|
|
31
|
+
export function TextTransition({ text, motion: preference }) {
|
|
32
|
+
return _jsx(ContentTransition, { stateKey: text, ...(preference ? { motion: preference } : {}), children: _jsx(Text, { children: text }) });
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=content-transition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-transition.js","sourceRoot":"","sources":["../src/content-transition.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAkB,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGvC,MAAM,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,QAAQ,EAA0B;IAC7G,MAAM,EAAE,WAAW,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC;QAAC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC3E,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,aAAa,IAAI,UAAU,KAAK,MAAM,IAAI,QAAQ,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC1I,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3G,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjI,OAAO,GAAG,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/D,+EAA+E;IAC/E,OAAO,KAAC,QAAQ,CAAC,IAAI,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,YAAG,QAAQ,GAAiB,CAAC;AACvE,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAgD;IACvG,OAAO,KAAC,iBAAiB,IAAC,QAAQ,EAAE,IAAI,KAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAAE,KAAC,IAAI,cAAE,IAAI,GAAQ,GAAoB,CAAC;AACpI,CAAC"}
|
package/dist/date-picker.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type ComposeCalendarAccessibleName, type ResolvedCalendarDateCell } fro
|
|
|
2
2
|
import { type DatePickerDescriptor, type DatePickerSize } from "@hjmds/design-contracts/components/date-picker";
|
|
3
3
|
import { type ReactNode } from "react";
|
|
4
4
|
import { type StyleProp, type ViewStyle } from "react-native";
|
|
5
|
+
import { type SheetProps } from "./overlays.js";
|
|
5
6
|
export type DatePickerMonthAction = Readonly<{
|
|
6
7
|
month: string;
|
|
7
8
|
label: string;
|
|
@@ -18,8 +19,14 @@ export type DatePickerProps<Content = unknown> = Readonly<{
|
|
|
18
19
|
description?: string;
|
|
19
20
|
error?: string;
|
|
20
21
|
renderCellContent?: (cell: ResolvedCalendarDateCell<Content>) => ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* Forwarded to the picker's Sheet. Without it the calendar's last row sat under
|
|
24
|
+
* the Android navigation bar and the call site had no way to fix it
|
|
25
|
+
* (2026-09-30 audit). Defaults to the HjmNativeProvider insets like Sheet.
|
|
26
|
+
*/
|
|
27
|
+
safeAreaInsets?: SheetProps["safeAreaInsets"];
|
|
21
28
|
style?: StyleProp<ViewStyle>;
|
|
22
29
|
}>;
|
|
23
30
|
/** Native single-date trigger backed by the canonical Sheet overlay. */
|
|
24
|
-
export declare function DatePicker<Content>({ descriptor, monthLabel, composeAccessibleName, previousMonth, nextMonth, clearLabel, closeLabel, size, description, error, renderCellContent, style, }: DatePickerProps<Content>): import("react").JSX.Element;
|
|
31
|
+
export declare function DatePicker<Content>({ descriptor, monthLabel, composeAccessibleName, previousMonth, nextMonth, clearLabel, closeLabel, size, description, error, renderCellContent, safeAreaInsets, style, }: DatePickerProps<Content>): import("react").JSX.Element;
|
|
25
32
|
//# sourceMappingURL=date-picker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../src/date-picker.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC9B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAGL,KAAK,oBAAoB,EAEzB,KAAK,cAAc,EACpB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../src/date-picker.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC9B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAGL,KAAK,oBAAoB,EAEzB,KAAK,cAAc,EACpB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI/E,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAIvD,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE/E,MAAM,MAAM,eAAe,CAAC,OAAO,GAAG,OAAO,IAAI,QAAQ,CAAC;IACxD,UAAU,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAC9D,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;IAC3E;;;;OAIG;IACH,cAAc,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEH,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,OAAO,EAAE,EAClC,UAAU,EACV,UAAU,EACV,qBAAqB,EACrB,aAAa,EACb,SAAS,EACT,UAAU,EACV,UAAU,EACV,IAAe,EACf,WAAW,EACX,KAAK,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,GACN,EAAE,eAAe,CAAC,OAAO,CAAC,+BAmE1B"}
|
package/dist/date-picker.js
CHANGED
|
@@ -9,7 +9,7 @@ import { Sheet } from "./overlays.js";
|
|
|
9
9
|
import { Text } from "./primitives.js";
|
|
10
10
|
import { useHjmNativeTheme } from "./provider.js";
|
|
11
11
|
/** Native single-date trigger backed by the canonical Sheet overlay. */
|
|
12
|
-
export function DatePicker({ descriptor, monthLabel, composeAccessibleName, previousMonth, nextMonth, clearLabel, closeLabel, size = "medium", description, error, renderCellContent, style, }) {
|
|
12
|
+
export function DatePicker({ descriptor, monthLabel, composeAccessibleName, previousMonth, nextMonth, clearLabel, closeLabel, size = "medium", description, error, renderCellContent, safeAreaInsets, style, }) {
|
|
13
13
|
validateDatePickerDescriptor(descriptor);
|
|
14
14
|
const { colors, environment } = useHjmNativeTheme();
|
|
15
15
|
const controlledOpen = descriptor.open !== undefined;
|
|
@@ -41,6 +41,6 @@ export function DatePicker({ descriptor, monthLabel, composeAccessibleName, prev
|
|
|
41
41
|
const label = descriptor.label ?? descriptor.accessibilityLabel;
|
|
42
42
|
const triggerText = resolveDatePickerTriggerText(descriptor);
|
|
43
43
|
return (_jsxs(View, { style: [{ gap: 6 }, style], children: [descriptor.label === undefined ? null : _jsx(Text, { emphasis: "strong", variant: "label", children: descriptor.label }), _jsxs(View, { style: { alignItems: "center", direction: environment.direction, flexDirection: "row" }, children: [_jsxs(Pressable, { accessibilityLabel: descriptor.accessibilityLabel ?? `${label}, ${triggerText}`, accessibilityRole: "button", accessibilityState: { disabled: descriptor.disabled, expanded: open }, disabled: descriptor.disabled, onPress: () => !descriptor.readOnly && requestOpen(!open, "trigger"), ref: returnFocusRef, style: ({ pressed }) => ({ alignItems: "center", backgroundColor: colors.bg, borderColor: descriptor.invalid || error ? colors.danger : colors.borderControl, borderRadius: 12, borderWidth: 1, flex: 1, flexDirection: "row", gap: 8, minHeight: size === "large" ? 56 : 48, opacity: pressed ? 0.72 : 1, paddingHorizontal: size === "large" ? 20 : 16 }), children: [_jsx(Text, { accessible: false, children: "\u25A3" }), _jsx(Text, { style: { color: descriptor.displayValue === null ? colors.textMuted : colors.textBody }, children: triggerText })] }), selectedDate === null ? null : (_jsx(Pressable, { accessibilityLabel: clearLabel, accessibilityRole: "button", disabled: descriptor.disabled || descriptor.readOnly, onPress: () => commit(null, "clear"), style: ({ pressed }) => [minimumTargetStyle, { alignItems: "center", justifyContent: "center", opacity: pressed ? 0.72 : 1 }], children: _jsx(Text, { tone: "muted", children: "\u00D7" }) }))] }), description === undefined ? null : _jsx(Text, { tone: "muted", variant: "label", children: description }), error === undefined ? null : _jsx(Text, { accessibilityLiveRegion: "assertive", style: { color: colors.danger }, variant: "label", children: error }), _jsx(Sheet, { closeLabel: closeLabel, onOpenChange: (next) => { if (!next)
|
|
44
|
-
requestOpen(false, "outside"); }, open: open, returnFocusRef: returnFocusRef, title: label, children: _jsx(Calendar, { descriptor: { ...calendarDescriptor, grid: calendarGrid, monthLabel, selectedDate, onSelectionChange: (date) => commit(date, "activate") }, composeAccessibleName: composeAccessibleName, size: size, ...(previousMonth ? { previousMonth } : {}), ...(nextMonth ? { nextMonth } : {}), ...(renderCellContent ? { renderCellContent } : {}) }) })] }));
|
|
44
|
+
requestOpen(false, "outside"); }, open: open, returnFocusRef: returnFocusRef, ...(safeAreaInsets === undefined ? {} : { safeAreaInsets }), title: label, children: _jsx(Calendar, { descriptor: { ...calendarDescriptor, grid: calendarGrid, monthLabel, selectedDate, onSelectionChange: (date) => commit(date, "activate") }, composeAccessibleName: composeAccessibleName, size: size, ...(previousMonth ? { previousMonth } : {}), ...(nextMonth ? { nextMonth } : {}), ...(renderCellContent ? { renderCellContent } : {}) }) })] }));
|
|
45
45
|
}
|
|
46
46
|
//# sourceMappingURL=date-picker.js.map
|
package/dist/date-picker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.js","sourceRoot":"","sources":["../src/date-picker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAGN,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAI7B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAkC,MAAM,cAAc,CAAC;AAE/E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"date-picker.js","sourceRoot":"","sources":["../src/date-picker.tsx"],"names":[],"mappings":"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"}
|
package/dist/evidence.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ export type ReactNativeRendererEvidenceManifest = Readonly<{
|
|
|
32
32
|
export declare const reactNativeRendererEvidence: {
|
|
33
33
|
readonly schemaVersion: 2;
|
|
34
34
|
readonly packageName: "@hjmds/react-native";
|
|
35
|
-
readonly packageVersion: "1.
|
|
35
|
+
readonly packageVersion: "1.9.0";
|
|
36
36
|
readonly surface: "native";
|
|
37
37
|
readonly components: readonly [Readonly<{
|
|
38
38
|
/** Canonical component id from the design-contracts catalog. */
|
package/dist/evidence.js
CHANGED
|
@@ -129,7 +129,7 @@ function nativeActionAndLongCopyClaim(componentId, exportNames, subpath, proofFi
|
|
|
129
129
|
export const reactNativeRendererEvidence = {
|
|
130
130
|
schemaVersion: reactNativeRendererEvidenceSchemaVersion,
|
|
131
131
|
packageName: "@hjmds/react-native",
|
|
132
|
-
packageVersion: "1.
|
|
132
|
+
packageVersion: "1.9.0",
|
|
133
133
|
surface: "native",
|
|
134
134
|
components: [
|
|
135
135
|
defaultClaim("design-system-provider", ["HjmNativeProvider", "useHjmNativeTheme"], "./provider"),
|
package/dist/forms.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../src/forms.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,gBAAgB,EACtB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAOL,KAAK,iCAAiC,EACtC,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC5B,MAAM,+CAA+C,CAAC;AAGvD,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAML,SAAS,EAGT,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAgBtB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,KAAK,kCAAkC,GAAG,QAAQ,CAAC;IACjD,SAAS,EAAE,SAAS,GAAG,QAAQ,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAoCH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,QAAQ,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACrD,CAAC,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEH,iEAAiE;AACjE,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,KAAK,EACL,QAAgB,EAChB,QAAgB,EAChB,WAAW,EACX,KAAK,GACN,EAAE,UAAU,+BAqBZ;AAED,MAAM,MAAM,SAAS,CAAC,MAAM,IAAI,QAAQ,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,OAAO,UAAU,CAAC,OAAO,CAAC;IAC1C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACnD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEH;;;GAGG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,EAC3B,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,MAAM,EACN,aAAsB,EACtB,cAAc,EACd,KAAK,EACL,oBAAoB,EACpB,QAAgB,EAChB,OAAuB,EACvB,oBAAoB,EACpB,KAAK,GACN,EAAE,SAAS,CAAC,MAAM,CAAC,+BAyEnB;AAED,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IACjE,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,CACvB,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,UAAU,SAAS,MAAM,GAAG,MAAM,IAChC,iCAAiC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAEzD,MAAM,MAAM,wBAAwB,GAAG,kCAAkC,CAAC;AAE1E,MAAM,MAAM,WAAW,CACrB,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,UAAU,SAAS,MAAM,GAAG,MAAM,IAChC,IAAI,CACN,UAAU,EACR,eAAe,GACf,UAAU,GACV,WAAW,GACX,gBAAgB,GAChB,QAAQ,GACR,aAAa,GACb,SAAS,CACZ,GACC,QAAQ,CAAC;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iFAAiF;IACjF,OAAO,CAAC,EAAE,SAAS,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;IACzC,MAAM,CAAC,EAAE,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACnD,KAAK,CAAC,EAAE,SAAS,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/C,QAAQ,CAAC,EAAE,SAAS,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC;IACvD,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC3B,kBAAkB,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAClC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;IAClD,YAAY,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC3C,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACvE,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAAG,IAAI,EACxC,KAAK,EAAE,wBAAwB,KAC5B,SAAS,CAAC;IACf,mBAAmB,CAAC,EAAE,CACpB,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,EACjC,KAAK,EAAE,wBAAwB,KAC5B,SAAS,CAAC;IACf,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACrD,kFAAkF;IAClF,YAAY,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC;AAcL,4FAA4F;AAC5F,wBAAgB,MAAM,CACpB,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,UAAU,SAAS,MAAM,GAAG,MAAM,EAClC,EACA,KAAK,EACL,kBAAkB,EAClB,OAAO,EACP,MAAM,EAAE,UAAU,EAClB,KAAK,EACL,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,sBAA8B,EAC9B,IAAI,EACJ,WAAmB,EACnB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,KAAK,EACL,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,IAAY,EACZ,IAAiC,EACjC,OAAuC,EACvC,UAA+B,EAC/B,OAAO,EACP,UAAU,EACV,aAAa,EACb,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EACvB,SAAS,EACT,YAAY,EACZ,yBAAyB,EACzB,KAAK,EACL,GAAG,UAAU,EACd,EAAE,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,+
|
|
1
|
+
{"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../src/forms.tsx"],"names":[],"mappings":"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"}
|
package/dist/forms.js
CHANGED
|
@@ -12,7 +12,7 @@ import { useControllableState } from "./internal/state.js";
|
|
|
12
12
|
import { scheduleAfterNativeModalTeardown, shouldAwaitNativeModalDismiss, } from "./internal/modal-lifecycle.js";
|
|
13
13
|
import { logicalTextAlign, minimumTargetStyle, resolveNativeTextScaleProps, } from "./internal/styles.js";
|
|
14
14
|
import { Text } from "./primitives.js";
|
|
15
|
-
import { useHjmNativeTheme } from "./provider.js";
|
|
15
|
+
import { useHjmNativeSafeAreaInsets, useHjmNativeTheme } from "./provider.js";
|
|
16
16
|
function useAfterModalDismiss(visible) {
|
|
17
17
|
const shownRef = useRef(false);
|
|
18
18
|
const previousVisibleRef = useRef(visible);
|
|
@@ -156,6 +156,7 @@ export function Select({ label, accessibilityLabel, options, source: sourceProp,
|
|
|
156
156
|
const accessibleName = resolveControlAccessibleName(label, accessibilityLabel, "Select");
|
|
157
157
|
const theme = useHjmNativeTheme();
|
|
158
158
|
const { colors, environment } = theme;
|
|
159
|
+
const safeArea = useHjmNativeSafeAreaInsets();
|
|
159
160
|
const requestedControlled = selectedKey !== undefined ? selectedKey : value;
|
|
160
161
|
const requestedDefault = defaultSelectedKey ?? defaultValue ?? null;
|
|
161
162
|
const requestedValue = requestedControlled ?? requestedDefault;
|
|
@@ -322,8 +323,15 @@ export function Select({ label, accessibilityLabel, options, source: sourceProp,
|
|
|
322
323
|
gap: spacing.sm,
|
|
323
324
|
maxHeight: "75%",
|
|
324
325
|
padding: spacing.md,
|
|
326
|
+
// Clear the home indicator / navigation bar (2026-09-30 audit).
|
|
327
|
+
paddingBottom: spacing.md + (safeArea.bottom ?? 0),
|
|
325
328
|
}, children: [_jsx(CollectionSheetHeader, { title: label ?? accessibleName, dismissLabel: dismissLabel, onDismiss: () => close("programmatic") }), _jsxs(ScrollView, { children: [blockingState ? (_jsxs(View, { style: { gap: spacing.sm, minHeight: selectRecipe.stateMessage.minHeight }, children: [asyncState.status === "loading" ? _jsx(ActivityIndicator, {}) : null, _jsx(Text, { accessibilityLiveRegion: "polite", accessibilityRole: asyncState.status === "error" ? "alert" : undefined, tone: asyncState.status === "error" ? "danger" : "muted", children: asyncState.message }), asyncState.status === "error" && onRetry ? (_jsx(Button, { onPress: onRetry, tone: "secondary", children: retryLabel ?? dismissLabel })) : null] })) : collection, asyncState.status === "loadingMore" ? (_jsxs(View, { accessibilityLiveRegion: "polite", accessibilityState: { busy: true }, style: { alignItems: "center", flexDirection: "row", gap: spacing.xs }, children: [_jsx(ActivityIndicator, {}), _jsx(Text, { tone: "muted", children: asyncState.message })] })) : null] })] })] }) })] }));
|
|
326
329
|
}
|
|
330
|
+
/**
|
|
331
|
+
* How long focus events are ignored after a result is chosen. It covers the
|
|
332
|
+
* modal teardown in which iOS restores first responder; a real tap comes later.
|
|
333
|
+
*/
|
|
334
|
+
const comboboxRefocusGuardMs = 600;
|
|
327
335
|
/** Editable Native combobox with sectioned async results and teardown-safe commits. */
|
|
328
336
|
export function Combobox({ label, accessibilityLabel, items, sections, source: sourceProp, selectedKey, defaultSelectedKey = null, selectedItem, onSelectionChange, inputValue, defaultInputValue, onInputValueChange, open, defaultOpen = false, onOpenChange, onCommit, onCommitAfterDismiss, onDismiss, filtering = comboboxBehaviorDefaults.filtering, queryValue, resultQuery, asyncState, loading = false, emptyMessage, loadingMessage, loadingMoreMessage, errorMessage, promptMessage, minimumQueryLength = 0, onRetry, retryLabel, description, error, placeholder, openHint, sheetTitle, required = false, disabled = false, readOnly = false, busy = false, openOnFocus = true, size = comboboxRecipe.defaults.size, density = comboboxRecipe.defaults.density, readOnlyLabel, renderLeading, clearLabel, dismissLabel, resultsAccessibilityLabel, style, ...modalProps }) {
|
|
329
337
|
const providedSources = [sourceProp, items, sections].filter((candidate) => candidate !== undefined).length;
|
|
@@ -359,6 +367,7 @@ export function Combobox({ label, accessibilityLabel, items, sections, source: s
|
|
|
359
367
|
const accessibleName = resolveControlAccessibleName(label, accessibilityLabel, "Combobox");
|
|
360
368
|
const theme = useHjmNativeTheme();
|
|
361
369
|
const { colors, environment } = theme;
|
|
370
|
+
const safeArea = useHjmNativeSafeAreaInsets();
|
|
362
371
|
const [committedKey, setCommittedKey] = useControllableState({
|
|
363
372
|
...(selectedKey === undefined ? {} : { value: selectedKey }),
|
|
364
373
|
defaultValue: defaultSelectedKey,
|
|
@@ -381,6 +390,12 @@ export function Combobox({ label, accessibilityLabel, items, sections, source: s
|
|
|
381
390
|
}, [onOpenChange, open, visible]);
|
|
382
391
|
const [activeIndex, setActiveIndex] = useState(-1);
|
|
383
392
|
const inputRef = useRef(null);
|
|
393
|
+
const refocusGuardRef = useRef(false);
|
|
394
|
+
const refocusGuardTimer = useRef(null);
|
|
395
|
+
useEffect(() => () => {
|
|
396
|
+
if (refocusGuardTimer.current !== null)
|
|
397
|
+
clearTimeout(refocusGuardTimer.current);
|
|
398
|
+
}, []);
|
|
384
399
|
const optionRefs = useRef(new Map());
|
|
385
400
|
const modalDismiss = useAfterModalDismiss(visible);
|
|
386
401
|
const normalizedQuery = query.trim().toLocaleLowerCase();
|
|
@@ -449,9 +464,24 @@ export function Combobox({ label, accessibilityLabel, items, sections, source: s
|
|
|
449
464
|
setCommittedKey(item.id);
|
|
450
465
|
setQuery(item.label);
|
|
451
466
|
onCommit?.(item.id, "selection");
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
467
|
+
// A choice ends the edit. iOS hands first responder back to the input when the
|
|
468
|
+
// modal dismisses, so the keyboard reopened over the committed value
|
|
469
|
+
// (2026-09-30 audit). Blur now and again once the modal is gone; the input
|
|
470
|
+
// keeps accessibility focus, only the IME goes away. Typing resumes on tap.
|
|
471
|
+
// iOS also fires onFocus for that restore, which reopened the results sheet, so
|
|
472
|
+
// the guard below swallows focus events until the dismissal has settled.
|
|
473
|
+
refocusGuardRef.current = true;
|
|
474
|
+
inputRef.current?.blur?.();
|
|
475
|
+
close("selection", async () => {
|
|
476
|
+
inputRef.current?.blur?.();
|
|
477
|
+
if (refocusGuardTimer.current !== null)
|
|
478
|
+
clearTimeout(refocusGuardTimer.current);
|
|
479
|
+
refocusGuardTimer.current = setTimeout(() => {
|
|
480
|
+
refocusGuardRef.current = false;
|
|
481
|
+
refocusGuardTimer.current = null;
|
|
482
|
+
}, comboboxRefocusGuardMs);
|
|
483
|
+
await onCommitAfterDismiss?.(item.id, "selection");
|
|
484
|
+
});
|
|
455
485
|
};
|
|
456
486
|
const clear = () => {
|
|
457
487
|
setCommittedKey(null);
|
|
@@ -569,6 +599,10 @@ export function Combobox({ label, accessibilityLabel, items, sections, source: s
|
|
|
569
599
|
if (!visible && !readOnly)
|
|
570
600
|
requestOpen(true, "keyboard");
|
|
571
601
|
}, onFocus: () => {
|
|
602
|
+
if (refocusGuardRef.current) {
|
|
603
|
+
inputRef.current?.blur?.();
|
|
604
|
+
return;
|
|
605
|
+
}
|
|
572
606
|
if (openOnFocus && !disabled && !readOnly && !busy)
|
|
573
607
|
requestOpen(true, "trigger");
|
|
574
608
|
}, onKeyPress: (event) => {
|
|
@@ -607,6 +641,8 @@ export function Combobox({ label, accessibilityLabel, items, sections, source: s
|
|
|
607
641
|
gap: spacing.sm,
|
|
608
642
|
maxHeight: "75%",
|
|
609
643
|
padding: spacing.md,
|
|
644
|
+
// Clear the home indicator / navigation bar (2026-09-30 audit).
|
|
645
|
+
paddingBottom: spacing.md + (safeArea.bottom ?? 0),
|
|
610
646
|
}, children: [_jsx(CollectionSheetHeader, { title: sheetTitle ?? label ?? accessibleName, dismissLabel: dismissLabel, onDismiss: () => dismiss("programmatic") }), viewStatus === "loading" || viewStatus === "prompt" || viewStatus === "error" || viewStatus === "empty" ? (_jsxs(View, { style: { gap: spacing.sm, minHeight: comboboxRecipe.stateMessage.minHeight }, children: [viewStatus === "loading" ? _jsx(ActivityIndicator, {}) : null, _jsx(Text, { accessibilityLiveRegion: viewStatus === "error" ? "assertive" : "polite", accessibilityRole: viewStatus === "error" ? "alert" : undefined, tone: viewStatus === "error" ? "danger" : "muted", children: stateMessage }), viewStatus === "error" && onRetry ? (_jsx(Button, { onPress: onRetry, tone: "secondary", children: retryLabel ?? dismissLabel })) : null] })) : (_jsxs(ScrollView, { keyboardShouldPersistTaps: "handled", children: [collection, viewStatus === "loadingMore" ? (_jsxs(View, { accessibilityLiveRegion: "polite", accessibilityState: { busy: true }, style: { alignItems: "center", flexDirection: "row", gap: spacing.xs }, children: [_jsx(ActivityIndicator, {}), _jsx(Text, { tone: "muted", children: stateMessage || loadingMoreMessage || loadingMessage })] })) : null] }))] })] }) })] }));
|
|
611
647
|
}
|
|
612
648
|
//# sourceMappingURL=forms.js.map
|