@hjmds/react-native 1.1.0 → 1.2.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 +12 -0
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +4 -2
- package/dist/actions.js.map +1 -1
- package/dist/agreement.d.ts +18 -0
- package/dist/agreement.d.ts.map +1 -0
- package/dist/agreement.js +51 -0
- package/dist/agreement.js.map +1 -0
- package/dist/asset.d.ts +27 -0
- package/dist/asset.d.ts.map +1 -0
- package/dist/asset.js +40 -0
- package/dist/asset.js.map +1 -0
- package/dist/bottom-info.d.ts +9 -0
- package/dist/bottom-info.d.ts.map +1 -0
- package/dist/bottom-info.js +16 -0
- package/dist/bottom-info.js.map +1 -0
- package/dist/calendar.d.ts +21 -0
- package/dist/calendar.d.ts.map +1 -0
- package/dist/calendar.js +63 -0
- package/dist/calendar.js.map +1 -0
- package/dist/carousel.d.ts +21 -0
- package/dist/carousel.d.ts.map +1 -0
- package/dist/carousel.js +67 -0
- package/dist/carousel.js.map +1 -0
- package/dist/collapsible.d.ts +12 -0
- package/dist/collapsible.d.ts.map +1 -0
- package/dist/collapsible.js +18 -0
- package/dist/collapsible.js.map +1 -0
- package/dist/date-picker.d.ts.map +1 -1
- package/dist/date-picker.js +12 -5
- package/dist/date-picker.js.map +1 -1
- package/dist/date-range.d.ts +23 -0
- package/dist/date-range.d.ts.map +1 -0
- package/dist/date-range.js +45 -0
- package/dist/date-range.js.map +1 -0
- package/dist/evidence.d.ts +226 -1
- package/dist/evidence.d.ts.map +1 -1
- package/dist/evidence.js +16 -1
- package/dist/evidence.js.map +1 -1
- package/dist/feedback.d.ts +10 -2
- package/dist/feedback.d.ts.map +1 -1
- package/dist/feedback.js +26 -3
- package/dist/feedback.js.map +1 -1
- package/dist/floating-action-button.d.ts +33 -0
- package/dist/floating-action-button.d.ts.map +1 -0
- package/dist/floating-action-button.js +53 -0
- package/dist/floating-action-button.js.map +1 -0
- package/dist/heading.d.ts +9 -0
- package/dist/heading.d.ts.map +1 -0
- package/dist/heading.js +24 -0
- package/dist/heading.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/dist/inputs.d.ts +3 -1
- package/dist/inputs.d.ts.map +1 -1
- package/dist/inputs.js +3 -3
- package/dist/inputs.js.map +1 -1
- package/dist/keyboard.d.ts +17 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +42 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/mentions.d.ts +28 -0
- package/dist/mentions.d.ts.map +1 -0
- package/dist/mentions.js +41 -0
- package/dist/mentions.js.map +1 -0
- package/dist/provider-button.d.ts +12 -0
- package/dist/provider-button.d.ts.map +1 -0
- package/dist/provider-button.js +35 -0
- package/dist/provider-button.js.map +1 -0
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +13 -4
- package/dist/provider.js.map +1 -1
- package/dist/tags-input.d.ts +23 -0
- package/dist/tags-input.d.ts.map +1 -0
- package/dist/tags-input.js +58 -0
- package/dist/tags-input.js.map +1 -0
- package/dist/toggle-group.d.ts +12 -0
- package/dist/toggle-group.d.ts.map +1 -0
- package/dist/toggle-group.js +39 -0
- package/dist/toggle-group.js.map +1 -0
- package/dist/top.d.ts +11 -0
- package/dist/top.d.ts.map +1 -0
- package/dist/top.js +30 -0
- package/dist/top.js.map +1 -0
- package/dist/transfer-list.d.ts +23 -0
- package/dist/transfer-list.d.ts.map +1 -0
- package/dist/transfer-list.js +46 -0
- package/dist/transfer-list.js.map +1 -0
- package/package.json +111 -3
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { removeTagAt, resolveTagsInputCommit, tagsInputRecipe, } from "@hjmds/design-contracts/components/tags-input";
|
|
3
|
+
import { resolveColorReference } from "@hjmds/design-contracts/color-references";
|
|
4
|
+
import { radius, spacing } from "@hjmds/design-contracts/foundations";
|
|
5
|
+
import { useState } from "react";
|
|
6
|
+
import { Pressable, TextInput, View } from "react-native";
|
|
7
|
+
import { Text } from "./primitives.js";
|
|
8
|
+
import { useHjmNativeTheme } from "./provider.js";
|
|
9
|
+
export function TagsInput({ label, tags: controlledTags, defaultTags, onTagsChange, onReject, onDraftChange, policy, suggestions, suggestionsLabel, composeRemoveLabel, placeholder, description, disabled = false, style, }) {
|
|
10
|
+
const { palette } = useHjmNativeTheme();
|
|
11
|
+
const [internal, setInternal] = useState(defaultTags ?? []);
|
|
12
|
+
const tags = controlledTags ?? internal;
|
|
13
|
+
const [draft, setDraft] = useState("");
|
|
14
|
+
const border = resolveColorReference(tagsInputRecipe.frame.border, palette);
|
|
15
|
+
const surface = resolveColorReference(tagsInputRecipe.tag.background, palette);
|
|
16
|
+
const content = resolveColorReference(tagsInputRecipe.tag.color, palette);
|
|
17
|
+
const setTags = (next) => {
|
|
18
|
+
if (controlledTags === undefined)
|
|
19
|
+
setInternal(next);
|
|
20
|
+
onTagsChange?.(next);
|
|
21
|
+
};
|
|
22
|
+
const changeDraft = (next) => { setDraft(next); onDraftChange?.(next); };
|
|
23
|
+
const commit = (value) => {
|
|
24
|
+
const result = resolveTagsInputCommit(tags, value, policy ?? {});
|
|
25
|
+
if (!result.accepted) {
|
|
26
|
+
onReject?.(result);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
setTags([...tags, result.value]);
|
|
30
|
+
changeDraft("");
|
|
31
|
+
};
|
|
32
|
+
return (_jsxs(View, { style: [{ gap: tagsInputRecipe.frame.gap }, style], children: [_jsx(Text, { variant: "label", children: label }), _jsxs(View, { style: {
|
|
33
|
+
minHeight: tagsInputRecipe.frame.minHeight,
|
|
34
|
+
flexDirection: "row",
|
|
35
|
+
flexWrap: "wrap",
|
|
36
|
+
alignItems: "center",
|
|
37
|
+
gap: tagsInputRecipe.frame.gap,
|
|
38
|
+
padding: spacing.xs,
|
|
39
|
+
borderWidth: 1,
|
|
40
|
+
borderColor: border,
|
|
41
|
+
borderRadius: radius.md,
|
|
42
|
+
opacity: disabled ? 0.5 : 1,
|
|
43
|
+
}, children: [tags.map((tag, index) => (_jsxs(View, { style: {
|
|
44
|
+
minHeight: tagsInputRecipe.tag.minHeight,
|
|
45
|
+
flexDirection: "row",
|
|
46
|
+
alignItems: "center",
|
|
47
|
+
gap: spacing.xxs,
|
|
48
|
+
paddingHorizontal: spacing.xs,
|
|
49
|
+
borderRadius: 999,
|
|
50
|
+
backgroundColor: surface,
|
|
51
|
+
}, children: [_jsx(Text, { style: { color: content }, children: tag }), _jsx(Pressable, { accessibilityRole: "button", accessibilityLabel: composeRemoveLabel(tag), disabled: disabled,
|
|
52
|
+
// The visible chip is small; the touch target is not.
|
|
53
|
+
hitSlop: tagsInputRecipe.remove.minTouchTarget / 2, onPress: () => setTags(removeTagAt(tags, index)), children: _jsx(Text, { style: { color: content }, children: "\u00D7" }) })] }, `${tag}-${index}`))), _jsx(TextInput, { accessibilityLabel: label, editable: !disabled, placeholder: placeholder, value: draft, onChangeText: changeDraft,
|
|
54
|
+
// There is no keyboard commit vocabulary here: the return key is the
|
|
55
|
+
// only reliable one on a phone, so Comma/Space/Blur stay Web-only.
|
|
56
|
+
onSubmitEditing: () => commit(draft), onBlur: () => commit(draft), style: { flexGrow: 1, minWidth: 80, color: content } })] }), suggestions !== undefined && suggestions.length > 0 && draft.trim().length > 0 ? (_jsx(View, { accessibilityLabel: suggestionsLabel, style: { gap: spacing.xxs }, children: suggestions.map((item) => (_jsx(Pressable, { accessibilityRole: "button", accessibilityState: { disabled: item.disabled === true }, disabled: item.disabled === true || disabled, onPress: () => commit(item.value ?? item.label), style: { minHeight: tagsInputRecipe.tag.minHeight, justifyContent: "center", paddingHorizontal: spacing.xs }, children: _jsx(Text, { style: { color: content }, children: item.label }) }, item.id))) })) : null, description ? _jsx(Text, { tone: "muted", variant: "caption", children: description }) : null] }));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=tags-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags-input.js","sourceRoot":"","sources":["../src/tags-input.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type ToggleGroupDescriptor, type ToggleGroupSize } from "@hjmds/design-contracts/components/toggle-group";
|
|
2
|
+
import { type StyleProp, type ViewStyle } from "react-native";
|
|
3
|
+
export type ToggleGroupProps<Id extends string = string> = Readonly<{
|
|
4
|
+
descriptor: ToggleGroupDescriptor<Id>;
|
|
5
|
+
pressedIds?: ReadonlySet<Id>;
|
|
6
|
+
defaultPressedIds?: ReadonlySet<Id>;
|
|
7
|
+
onPressedIdsChange?: (ids: ReadonlySet<Id>) => void;
|
|
8
|
+
size?: ToggleGroupSize;
|
|
9
|
+
style?: StyleProp<ViewStyle>;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function ToggleGroup<Id extends string = string>({ descriptor, pressedIds: controlledPressed, defaultPressedIds, onPressedIdsChange, size, style, }: ToggleGroupProps<Id>): import("react").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=toggle-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../src/toggle-group.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACrB,MAAM,iDAAiD,CAAC;AAGzD,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI/E,MAAM,MAAM,gBAAgB,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IAClE,UAAU,EAAE,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACtC,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,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEH,wBAAgB,WAAW,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,EAAE,EACtD,UAAU,EACV,UAAU,EAAE,iBAAiB,EAC7B,iBAAiB,EACjB,kBAAkB,EAClB,IAAsC,EACtC,KAAK,GACN,EAAE,gBAAgB,CAAC,EAAE,CAAC,+BAmDtB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { reconcileToggleGroupSelection, toggleGroupRecipe, toggleGroupSelection, validateToggleGroupDescriptor, } from "@hjmds/design-contracts/components/toggle-group";
|
|
3
|
+
import { resolveColorReference } from "@hjmds/design-contracts/color-references";
|
|
4
|
+
import { useMemo, useState } from "react";
|
|
5
|
+
import { Pressable, View } from "react-native";
|
|
6
|
+
import { Text } from "./primitives.js";
|
|
7
|
+
import { useHjmNativeTheme } from "./provider.js";
|
|
8
|
+
export function ToggleGroup({ descriptor, pressedIds: controlledPressed, defaultPressedIds, onPressedIdsChange, size = toggleGroupRecipe.defaults.size, style, }) {
|
|
9
|
+
validateToggleGroupDescriptor(descriptor);
|
|
10
|
+
const theme = useHjmNativeTheme();
|
|
11
|
+
const [internal, setInternal] = useState(defaultPressedIds ?? new Set());
|
|
12
|
+
const raw = controlledPressed ?? internal;
|
|
13
|
+
const pressed = useMemo(() => reconcileToggleGroupSelection(descriptor, raw), [descriptor, raw]);
|
|
14
|
+
const metrics = toggleGroupRecipe.sizes[size];
|
|
15
|
+
const commit = (next) => {
|
|
16
|
+
if (controlledPressed === undefined)
|
|
17
|
+
setInternal(next);
|
|
18
|
+
onPressedIdsChange?.(next);
|
|
19
|
+
};
|
|
20
|
+
return (_jsx(View, { accessibilityLabel: descriptor.accessibilityLabel, style: [{ flexDirection: "row", flexWrap: "wrap", gap: toggleGroupRecipe.gap }, style], children: descriptor.items.map((item) => {
|
|
21
|
+
const on = pressed.has(item.id);
|
|
22
|
+
const tone = on ? toggleGroupRecipe.pressed : toggleGroupRecipe.idle;
|
|
23
|
+
return (_jsx(Pressable, { accessibilityRole: "button",
|
|
24
|
+
// Native announces a toggle through `selected`, the counterpart of
|
|
25
|
+
// aria-pressed; colour alone would say nothing.
|
|
26
|
+
accessibilityState: { disabled: item.disabled === true, selected: on }, disabled: item.disabled === true, onPress: () => commit(toggleGroupSelection(descriptor, pressed, item.id)), style: {
|
|
27
|
+
alignItems: "center",
|
|
28
|
+
backgroundColor: resolveColorReference(tone.background, theme.palette),
|
|
29
|
+
borderColor: resolveColorReference(tone.border, theme.palette),
|
|
30
|
+
borderRadius: toggleGroupRecipe.radius,
|
|
31
|
+
borderWidth: 1,
|
|
32
|
+
justifyContent: "center",
|
|
33
|
+
minHeight: metrics.minHeight,
|
|
34
|
+
opacity: item.disabled === true ? 0.5 : 1,
|
|
35
|
+
paddingHorizontal: metrics.paddingHorizontal,
|
|
36
|
+
}, children: _jsx(Text, { style: { color: resolveColorReference(tone.color, theme.palette) }, variant: metrics.textVariant, children: item.label }) }, item.id));
|
|
37
|
+
}) }));
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=toggle-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../src/toggle-group.tsx"],"names":[],"mappings":"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"}
|
package/dist/top.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type TopDescriptor } from "@hjmds/design-contracts/components/top";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
import { type StyleProp, type ViewStyle } from "react-native";
|
|
4
|
+
export type TopProps = Readonly<{
|
|
5
|
+
descriptor: TopDescriptor;
|
|
6
|
+
/** Secondary action sharing the title row; stacks below it at large text. */
|
|
7
|
+
trailing?: ReactNode;
|
|
8
|
+
style?: StyleProp<ViewStyle>;
|
|
9
|
+
}>;
|
|
10
|
+
export declare function Top({ descriptor, trailing, style }: TopProps): import("react").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=top.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"top.d.ts","sourceRoot":"","sources":["../src/top.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,wCAAwC,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpE,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC;IAC9B,UAAU,EAAE,aAAa,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEH,wBAAgB,GAAG,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,QAAQ,+BA0D5D"}
|
package/dist/top.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { topDefaults, topRecipe, validateTopDescriptor, } from "@hjmds/design-contracts/components/top";
|
|
3
|
+
import { resolveColorReference } from "@hjmds/design-contracts/color-references";
|
|
4
|
+
import { View } from "react-native";
|
|
5
|
+
import { Text } from "./primitives.js";
|
|
6
|
+
import { useHjmNativeTheme } from "./provider.js";
|
|
7
|
+
export function Top({ descriptor, trailing, style }) {
|
|
8
|
+
validateTopDescriptor(descriptor);
|
|
9
|
+
const theme = useHjmNativeTheme();
|
|
10
|
+
const size = descriptor.size ?? topDefaults.size;
|
|
11
|
+
const metrics = topRecipe.sizes[size];
|
|
12
|
+
// Large text stacks the trailing action instead of squeezing the title, the
|
|
13
|
+
// same rule Section already applies to its own header row.
|
|
14
|
+
const stack = theme.environment.textScale >= 1.6;
|
|
15
|
+
return (_jsxs(View, { style: [
|
|
16
|
+
{ gap: topRecipe.gap, paddingBottom: metrics.paddingBottom, paddingTop: metrics.paddingTop },
|
|
17
|
+
style,
|
|
18
|
+
], children: [descriptor.eyebrow ? (_jsx(Text, { style: { color: resolveColorReference(topRecipe.eyebrow.color, theme.palette) }, variant: topRecipe.eyebrow.textVariant, children: descriptor.eyebrow })) : null, _jsxs(View, { style: {
|
|
19
|
+
alignItems: stack ? "stretch" : "center",
|
|
20
|
+
flexDirection: stack ? "column" : "row",
|
|
21
|
+
gap: topRecipe.trailing.gap,
|
|
22
|
+
}, children: [_jsx(Text, { accessibilityRole: "header", style: {
|
|
23
|
+
color: resolveColorReference(topRecipe.title.color, theme.palette),
|
|
24
|
+
flex: stack ? undefined : 1,
|
|
25
|
+
fontSize: metrics.title.fontSize,
|
|
26
|
+
fontWeight: metrics.title.fontWeight,
|
|
27
|
+
lineHeight: metrics.title.lineHeight,
|
|
28
|
+
}, children: descriptor.title }), trailing ? _jsx(View, { children: trailing }) : null] }), descriptor.description ? (_jsx(Text, { style: { color: resolveColorReference(topRecipe.description.color, theme.palette) }, variant: topRecipe.description.textVariant, children: descriptor.description })) : null] }));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=top.js.map
|
package/dist/top.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"top.js","sourceRoot":"","sources":["../src/top.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,SAAS,EACT,qBAAqB,GAEtB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,OAAO,EAAE,IAAI,EAAkC,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AASlD,MAAM,UAAU,GAAG,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAY;IAC3D,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC;IACjD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,4EAA4E;IAC5E,2DAA2D;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,IAAI,GAAG,CAAC;IACjD,OAAO,CACL,MAAC,IAAI,IACH,KAAK,EAAE;YACL,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;YAC5F,KAAK;SACN,aAEA,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CACpB,KAAC,IAAI,IACH,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,EAC/E,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,WAAW,YAErC,UAAU,CAAC,OAAO,GACd,CACR,CAAC,CAAC,CAAC,IAAI,EACR,MAAC,IAAI,IACH,KAAK,EAAE;oBACL,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;oBACxC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;oBACvC,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG;iBAC5B,aAMD,KAAC,IAAI,IACH,iBAAiB,EAAC,QAAQ,EAC1B,KAAK,EAAE;4BACL,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;4BAClE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;4BAC3B,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ;4BAChC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;4BACpC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;yBACrC,YAEA,UAAU,CAAC,KAAK,GACZ,EACN,QAAQ,CAAC,CAAC,CAAC,KAAC,IAAI,cAAE,QAAQ,GAAQ,CAAC,CAAC,CAAC,IAAI,IACrC,EACN,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CACxB,KAAC,IAAI,IACH,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,EACnF,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,WAAW,YAEzC,UAAU,CAAC,WAAW,GAClB,CACR,CAAC,CAAC,CAAC,IAAI,IACH,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type TransferListMoveDirection } from "@hjmds/design-contracts/components/transfer-list";
|
|
2
|
+
import type { SelectItemDescriptor } from "@hjmds/design-contracts/behaviors";
|
|
3
|
+
import { type StyleProp, type ViewStyle } from "react-native";
|
|
4
|
+
export type TransferListLabels = Readonly<{
|
|
5
|
+
source: string;
|
|
6
|
+
target: string;
|
|
7
|
+
toTarget: string;
|
|
8
|
+
toSource: string;
|
|
9
|
+
selectAll: string;
|
|
10
|
+
empty: string;
|
|
11
|
+
}>;
|
|
12
|
+
export type TransferListProps<Id extends string = string> = Readonly<{
|
|
13
|
+
items: readonly SelectItemDescriptor<Id>[];
|
|
14
|
+
labels: TransferListLabels;
|
|
15
|
+
targetKeys?: ReadonlySet<Id>;
|
|
16
|
+
defaultTargetKeys?: ReadonlySet<Id>;
|
|
17
|
+
onTargetKeysChange?: (keys: ReadonlySet<Id>) => void;
|
|
18
|
+
/** Receives which ids moved, in origin-panel order, so the product announces it. */
|
|
19
|
+
onMove?: (movedIds: readonly Id[], direction: TransferListMoveDirection) => void;
|
|
20
|
+
style?: StyleProp<ViewStyle>;
|
|
21
|
+
}>;
|
|
22
|
+
export declare function TransferList<Id extends string = string>({ items, labels, targetKeys: controlledTargetKeys, defaultTargetKeys, onTargetKeysChange, onMove, style, }: TransferListProps<Id>): import("react").JSX.Element;
|
|
23
|
+
//# sourceMappingURL=transfer-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transfer-list.d.ts","sourceRoot":"","sources":["../src/transfer-list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,yBAAyB,EAG/B,MAAM,kDAAkD,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAG9E,OAAO,EAA+B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAM3F,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,iBAAiB,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IACnE,KAAK,EAAE,SAAS,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3C,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IAC7B,iBAAiB,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACpC,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IACrD,oFAAoF;IACpF,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACjF,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC;AAOH,wBAAgB,YAAY,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,EAAE,EACvD,KAAK,EACL,MAAM,EACN,UAAU,EAAE,oBAAoB,EAChC,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,KAAK,GACN,EAAE,iBAAiB,CAAC,EAAE,CAAC,+BAsFvB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { moveTransferListSelection, reconcileTransferListSelection, resolveTransferListPanels, resolveTransferListSelectAllState, toggleTransferListSelectAll, toggleTransferListSelection, } from "@hjmds/design-contracts/components/transfer-list";
|
|
3
|
+
import { spacing } from "@hjmds/design-contracts/foundations";
|
|
4
|
+
import { useMemo, useState } from "react";
|
|
5
|
+
import { Pressable, ScrollView, View } from "react-native";
|
|
6
|
+
import { Button } from "./actions.js";
|
|
7
|
+
import { Text } from "./primitives.js";
|
|
8
|
+
import { useControllableState } from "./internal/state.js";
|
|
9
|
+
import { useHjmNativeTheme } from "./provider.js";
|
|
10
|
+
const emptySelection = () => ({
|
|
11
|
+
source: new Set(),
|
|
12
|
+
target: new Set(),
|
|
13
|
+
});
|
|
14
|
+
export function TransferList({ items, labels, targetKeys: controlledTargetKeys, defaultTargetKeys, onTargetKeysChange, onMove, style, }) {
|
|
15
|
+
const { colors } = useHjmNativeTheme();
|
|
16
|
+
const [targetKeys, setTargetKeys] = useControllableState({
|
|
17
|
+
...(controlledTargetKeys === undefined ? {} : { value: controlledTargetKeys }),
|
|
18
|
+
defaultValue: defaultTargetKeys ?? new Set(),
|
|
19
|
+
...(onTargetKeysChange === undefined ? {} : { onChange: onTargetKeysChange }),
|
|
20
|
+
});
|
|
21
|
+
const [rawSelection, setSelection] = useState((emptySelection));
|
|
22
|
+
const descriptor = useMemo(() => ({ items, targetKeys }), [items, targetKeys]);
|
|
23
|
+
// A row that left the list entirely must not keep a pending check mark.
|
|
24
|
+
const selection = useMemo(() => reconcileTransferListSelection(descriptor, rawSelection), [descriptor, rawSelection]);
|
|
25
|
+
const panels = resolveTransferListPanels(descriptor);
|
|
26
|
+
const move = (direction) => {
|
|
27
|
+
const result = moveTransferListSelection(descriptor, selection, direction);
|
|
28
|
+
setTargetKeys(result.targetKeys);
|
|
29
|
+
setSelection(result.selection);
|
|
30
|
+
if (result.movedIds.length > 0)
|
|
31
|
+
onMove?.(result.movedIds, direction);
|
|
32
|
+
};
|
|
33
|
+
const renderPanel = (panel) => {
|
|
34
|
+
const rows = panels[panel];
|
|
35
|
+
const selectAll = resolveTransferListSelectAllState(descriptor, selection, panel);
|
|
36
|
+
return (_jsxs(View, { style: { flex: 1, gap: spacing.xs }, children: [_jsx(Pressable, { accessibilityRole: "checkbox",
|
|
37
|
+
// `mixed` is the contract's answer, not a third visual state invented
|
|
38
|
+
// here: some rows checked is neither on nor off.
|
|
39
|
+
accessibilityState: { checked: selectAll }, accessibilityLabel: `${panel === "source" ? labels.source : labels.target}, ${labels.selectAll}`, disabled: rows.length === 0, onPress: () => setSelection(toggleTransferListSelectAll(descriptor, selection, panel)), style: { minHeight: 44, justifyContent: "center" }, children: _jsx(Text, { variant: "label", children: labels.selectAll }) }), _jsx(ScrollView, { style: { borderWidth: 1, borderColor: colors.border, borderRadius: 12 }, children: rows.length === 0 ? (_jsx(Text, { tone: "muted", variant: "caption", style: { padding: spacing.sm }, children: labels.empty })) : (rows.map((item) => {
|
|
40
|
+
const checked = selection[panel].has(item.id);
|
|
41
|
+
return (_jsx(Pressable, { accessibilityRole: "checkbox", accessibilityState: { checked, disabled: item.disabled === true }, disabled: item.disabled === true, onPress: () => setSelection(toggleTransferListSelection(descriptor, selection, panel, item.id)), style: { minHeight: 44, justifyContent: "center", paddingHorizontal: spacing.sm }, children: _jsxs(Text, { children: [checked ? "✓ " : "", item.label] }) }, item.id));
|
|
42
|
+
})) })] }));
|
|
43
|
+
};
|
|
44
|
+
return (_jsxs(View, { style: [{ gap: spacing.sm }, style], children: [_jsx(Text, { variant: "label", children: labels.source }), renderPanel("source"), _jsxs(View, { style: { flexDirection: "row", gap: spacing.sm, justifyContent: "center" }, children: [_jsx(Button, { tone: "secondary", disabled: selection.source.size === 0, onPress: () => move("toTarget"), children: labels.toTarget }), _jsx(Button, { tone: "secondary", disabled: selection.target.size === 0, onPress: () => move("toSource"), children: labels.toSource })] }), _jsx(Text, { variant: "label", children: labels.target }), renderPanel("target")] }));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=transfer-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transfer-list.js","sourceRoot":"","sources":["../src/transfer-list.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hjmds/react-native",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Expo-independent React Native renderers for HJM design contracts.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -28,6 +28,30 @@
|
|
|
28
28
|
"import": "./dist/provider.js",
|
|
29
29
|
"default": "./dist/provider.js"
|
|
30
30
|
},
|
|
31
|
+
"./carousel": {
|
|
32
|
+
"types": "./dist/carousel.d.ts",
|
|
33
|
+
"react-native": "./dist/carousel.js",
|
|
34
|
+
"import": "./dist/carousel.js",
|
|
35
|
+
"default": "./dist/carousel.js"
|
|
36
|
+
},
|
|
37
|
+
"./floating-action-button": {
|
|
38
|
+
"types": "./dist/floating-action-button.d.ts",
|
|
39
|
+
"react-native": "./dist/floating-action-button.js",
|
|
40
|
+
"import": "./dist/floating-action-button.js",
|
|
41
|
+
"default": "./dist/floating-action-button.js"
|
|
42
|
+
},
|
|
43
|
+
"./top-bar": {
|
|
44
|
+
"types": "./dist/navigation.d.ts",
|
|
45
|
+
"react-native": "./dist/navigation.js",
|
|
46
|
+
"import": "./dist/navigation.js",
|
|
47
|
+
"default": "./dist/navigation.js"
|
|
48
|
+
},
|
|
49
|
+
"./bottom-cta": {
|
|
50
|
+
"types": "./dist/actions.d.ts",
|
|
51
|
+
"react-native": "./dist/actions.js",
|
|
52
|
+
"import": "./dist/actions.js",
|
|
53
|
+
"default": "./dist/actions.js"
|
|
54
|
+
},
|
|
31
55
|
"./composition-style": {
|
|
32
56
|
"types": "./dist/composition-style.d.ts",
|
|
33
57
|
"react-native": "./dist/composition-style.js",
|
|
@@ -82,6 +106,90 @@
|
|
|
82
106
|
"import": "./dist/date-picker.js",
|
|
83
107
|
"default": "./dist/date-picker.js"
|
|
84
108
|
},
|
|
109
|
+
"./calendar": {
|
|
110
|
+
"types": "./dist/calendar.d.ts",
|
|
111
|
+
"react-native": "./dist/calendar.js",
|
|
112
|
+
"import": "./dist/calendar.js",
|
|
113
|
+
"default": "./dist/calendar.js"
|
|
114
|
+
},
|
|
115
|
+
"./agreement": {
|
|
116
|
+
"types": "./dist/agreement.d.ts",
|
|
117
|
+
"react-native": "./dist/agreement.js",
|
|
118
|
+
"import": "./dist/agreement.js",
|
|
119
|
+
"default": "./dist/agreement.js"
|
|
120
|
+
},
|
|
121
|
+
"./top": {
|
|
122
|
+
"types": "./dist/top.d.ts",
|
|
123
|
+
"react-native": "./dist/top.js",
|
|
124
|
+
"import": "./dist/top.js",
|
|
125
|
+
"default": "./dist/top.js"
|
|
126
|
+
},
|
|
127
|
+
"./heading": {
|
|
128
|
+
"types": "./dist/heading.d.ts",
|
|
129
|
+
"react-native": "./dist/heading.js",
|
|
130
|
+
"import": "./dist/heading.js",
|
|
131
|
+
"default": "./dist/heading.js"
|
|
132
|
+
},
|
|
133
|
+
"./toggle-group": {
|
|
134
|
+
"types": "./dist/toggle-group.d.ts",
|
|
135
|
+
"react-native": "./dist/toggle-group.js",
|
|
136
|
+
"import": "./dist/toggle-group.js",
|
|
137
|
+
"default": "./dist/toggle-group.js"
|
|
138
|
+
},
|
|
139
|
+
"./bottom-info": {
|
|
140
|
+
"types": "./dist/bottom-info.d.ts",
|
|
141
|
+
"react-native": "./dist/bottom-info.js",
|
|
142
|
+
"import": "./dist/bottom-info.js",
|
|
143
|
+
"default": "./dist/bottom-info.js"
|
|
144
|
+
},
|
|
145
|
+
"./collapsible": {
|
|
146
|
+
"types": "./dist/collapsible.d.ts",
|
|
147
|
+
"react-native": "./dist/collapsible.js",
|
|
148
|
+
"import": "./dist/collapsible.js",
|
|
149
|
+
"default": "./dist/collapsible.js"
|
|
150
|
+
},
|
|
151
|
+
"./asset": {
|
|
152
|
+
"types": "./dist/asset.d.ts",
|
|
153
|
+
"react-native": "./dist/asset.js",
|
|
154
|
+
"import": "./dist/asset.js",
|
|
155
|
+
"default": "./dist/asset.js"
|
|
156
|
+
},
|
|
157
|
+
"./tags-input": {
|
|
158
|
+
"types": "./dist/tags-input.d.ts",
|
|
159
|
+
"react-native": "./dist/tags-input.js",
|
|
160
|
+
"import": "./dist/tags-input.js",
|
|
161
|
+
"default": "./dist/tags-input.js"
|
|
162
|
+
},
|
|
163
|
+
"./date-range": {
|
|
164
|
+
"types": "./dist/date-range.d.ts",
|
|
165
|
+
"react-native": "./dist/date-range.js",
|
|
166
|
+
"import": "./dist/date-range.js",
|
|
167
|
+
"default": "./dist/date-range.js"
|
|
168
|
+
},
|
|
169
|
+
"./mentions": {
|
|
170
|
+
"types": "./dist/mentions.d.ts",
|
|
171
|
+
"react-native": "./dist/mentions.js",
|
|
172
|
+
"import": "./dist/mentions.js",
|
|
173
|
+
"default": "./dist/mentions.js"
|
|
174
|
+
},
|
|
175
|
+
"./transfer-list": {
|
|
176
|
+
"types": "./dist/transfer-list.d.ts",
|
|
177
|
+
"react-native": "./dist/transfer-list.js",
|
|
178
|
+
"import": "./dist/transfer-list.js",
|
|
179
|
+
"default": "./dist/transfer-list.js"
|
|
180
|
+
},
|
|
181
|
+
"./keyboard": {
|
|
182
|
+
"types": "./dist/keyboard.d.ts",
|
|
183
|
+
"react-native": "./dist/keyboard.js",
|
|
184
|
+
"import": "./dist/keyboard.js",
|
|
185
|
+
"default": "./dist/keyboard.js"
|
|
186
|
+
},
|
|
187
|
+
"./provider-button": {
|
|
188
|
+
"types": "./dist/provider-button.d.ts",
|
|
189
|
+
"react-native": "./dist/provider-button.js",
|
|
190
|
+
"import": "./dist/provider-button.js",
|
|
191
|
+
"default": "./dist/provider-button.js"
|
|
192
|
+
},
|
|
85
193
|
"./file-picker": {
|
|
86
194
|
"types": "./dist/file-picker.d.ts",
|
|
87
195
|
"react-native": "./dist/file-picker.js",
|
|
@@ -143,7 +251,7 @@
|
|
|
143
251
|
"LICENSE"
|
|
144
252
|
],
|
|
145
253
|
"peerDependencies": {
|
|
146
|
-
"@hjmds/design-contracts": ">=1.
|
|
254
|
+
"@hjmds/design-contracts": ">=1.2.0 <1.3.0",
|
|
147
255
|
"react": ">=19",
|
|
148
256
|
"react-native": ">=0.81"
|
|
149
257
|
},
|
|
@@ -159,7 +267,7 @@
|
|
|
159
267
|
"react-test-renderer": "19.2.3",
|
|
160
268
|
"typescript": "^5.9.3",
|
|
161
269
|
"vitest": "^4.1.11",
|
|
162
|
-
"@hjmds/design-contracts": "1.
|
|
270
|
+
"@hjmds/design-contracts": "1.2.0"
|
|
163
271
|
},
|
|
164
272
|
"engines": {
|
|
165
273
|
"node": ">=20"
|