@hzblj/kara-components 0.17.0 → 0.19.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/CHANGELOG.md +62 -0
- package/lib/module/atoms/badge/badge.android.js +5 -0
- package/lib/module/atoms/badge/badge.android.js.map +1 -1
- package/lib/module/atoms/badge/badge.ios.js +2 -0
- package/lib/module/atoms/badge/badge.ios.js.map +1 -1
- package/lib/module/atoms/button/button-tokens.js +8 -0
- package/lib/module/atoms/button/button-tokens.js.map +1 -1
- package/lib/module/atoms/button/button.android.js +43 -15
- package/lib/module/atoms/button/button.android.js.map +1 -1
- package/lib/module/atoms/button/button.ios.js +66 -10
- package/lib/module/atoms/button/button.ios.js.map +1 -1
- package/lib/module/atoms/checkbox/checkbox.android.js +5 -1
- package/lib/module/atoms/checkbox/checkbox.android.js.map +1 -1
- package/lib/module/atoms/checkbox/checkbox.ios.js +3 -1
- package/lib/module/atoms/checkbox/checkbox.ios.js.map +1 -1
- package/lib/module/atoms/color-picker/color-picker.android.js +4 -0
- package/lib/module/atoms/color-picker/color-picker.android.js.map +1 -1
- package/lib/module/atoms/color-picker/color-picker.ios.js +24 -2
- package/lib/module/atoms/color-picker/color-picker.ios.js.map +1 -1
- package/lib/module/atoms/date-picker/date-picker.android.js +85 -10
- package/lib/module/atoms/date-picker/date-picker.android.js.map +1 -1
- package/lib/module/atoms/date-picker/date-picker.ios.js +9 -7
- package/lib/module/atoms/date-picker/date-picker.ios.js.map +1 -1
- package/lib/module/atoms/divider/divider.android.js +17 -4
- package/lib/module/atoms/divider/divider.android.js.map +1 -1
- package/lib/module/atoms/divider/divider.ios.js +4 -0
- package/lib/module/atoms/divider/divider.ios.js.map +1 -1
- package/lib/module/atoms/fab/fab.android.js +64 -8
- package/lib/module/atoms/fab/fab.android.js.map +1 -1
- package/lib/module/atoms/fab/fab.ios.js +68 -12
- package/lib/module/atoms/fab/fab.ios.js.map +1 -1
- package/lib/module/atoms/icon-button/icon-button.android.js +48 -5
- package/lib/module/atoms/icon-button/icon-button.android.js.map +1 -1
- package/lib/module/atoms/icon-button/icon-button.ios.js +60 -10
- package/lib/module/atoms/icon-button/icon-button.ios.js.map +1 -1
- package/lib/module/atoms/list/list.android.js +32 -4
- package/lib/module/atoms/list/list.android.js.map +1 -1
- package/lib/module/atoms/list/list.ios.js +15 -5
- package/lib/module/atoms/list/list.ios.js.map +1 -1
- package/lib/module/atoms/progress/progress.android.js +21 -7
- package/lib/module/atoms/progress/progress.android.js.map +1 -1
- package/lib/module/atoms/progress/progress.ios.js +5 -1
- package/lib/module/atoms/progress/progress.ios.js.map +1 -1
- package/lib/module/atoms/segmented-control/segmented-control.android.js +66 -12
- package/lib/module/atoms/segmented-control/segmented-control.android.js.map +1 -1
- package/lib/module/atoms/segmented-control/segmented-control.ios.js +19 -8
- package/lib/module/atoms/segmented-control/segmented-control.ios.js.map +1 -1
- package/lib/module/atoms/segmented-control/segments.js +16 -0
- package/lib/module/atoms/segmented-control/segments.js.map +1 -0
- package/lib/module/atoms/slider/slider.android.js +16 -2
- package/lib/module/atoms/slider/slider.android.js.map +1 -1
- package/lib/module/atoms/slider/slider.ios.js +22 -2
- package/lib/module/atoms/slider/slider.ios.js.map +1 -1
- package/lib/module/atoms/switch/switch.android.js +5 -1
- package/lib/module/atoms/switch/switch.android.js.map +1 -1
- package/lib/module/atoms/switch/switch.ios.js +3 -1
- package/lib/module/atoms/switch/switch.ios.js.map +1 -1
- package/lib/module/atoms/text/spans.js +2 -1
- package/lib/module/atoms/text/spans.js.map +1 -1
- package/lib/module/atoms/text/text.android.js +18 -6
- package/lib/module/atoms/text/text.android.js.map +1 -1
- package/lib/module/atoms/text/text.ios.js +6 -2
- package/lib/module/atoms/text/text.ios.js.map +1 -1
- package/lib/module/atoms/text-field/text-field-input.js +14 -0
- package/lib/module/atoms/text-field/text-field-input.js.map +1 -0
- package/lib/module/atoms/text-field/text-field.android.js +113 -6
- package/lib/module/atoms/text-field/text-field.android.js.map +1 -1
- package/lib/module/atoms/text-field/text-field.ios.js +75 -3
- package/lib/module/atoms/text-field/text-field.ios.js.map +1 -1
- package/lib/module/molecules/collapsible/collapsible.android.js +4 -3
- package/lib/module/molecules/collapsible/collapsible.android.js.map +1 -1
- package/lib/module/molecules/collapsible/collapsible.ios.js +3 -1
- package/lib/module/molecules/collapsible/collapsible.ios.js.map +1 -1
- package/lib/module/molecules/radio-group/radio-group.android.js +10 -2
- package/lib/module/molecules/radio-group/radio-group.android.js.map +1 -1
- package/lib/module/molecules/radio-group/radio-group.ios.js +6 -2
- package/lib/module/molecules/radio-group/radio-group.ios.js.map +1 -1
- package/lib/module/molecules/search-bar/search-bar.js +9 -0
- package/lib/module/molecules/search-bar/search-bar.js.map +1 -1
- package/lib/module/molecules/stepper/stepper.android.js +25 -13
- package/lib/module/molecules/stepper/stepper.android.js.map +1 -1
- package/lib/module/molecules/stepper/stepper.ios.js +12 -6
- package/lib/module/molecules/stepper/stepper.ios.js.map +1 -1
- package/lib/module/organisms/action-sheet/action-sheet.android.js +16 -8
- package/lib/module/organisms/action-sheet/action-sheet.android.js.map +1 -1
- package/lib/module/organisms/action-sheet/action-sheet.ios.js +16 -3
- package/lib/module/organisms/action-sheet/action-sheet.ios.js.map +1 -1
- package/lib/module/organisms/alert/alert.android.js +4 -3
- package/lib/module/organisms/alert/alert.android.js.map +1 -1
- package/lib/module/organisms/alert/alert.ios.js +3 -2
- package/lib/module/organisms/alert/alert.ios.js.map +1 -1
- package/lib/module/organisms/context-menu/context-menu.android.js +3 -1
- package/lib/module/organisms/context-menu/context-menu.android.js.map +1 -1
- package/lib/module/organisms/context-menu/context-menu.ios.js +1 -0
- package/lib/module/organisms/context-menu/context-menu.ios.js.map +1 -1
- package/lib/module/organisms/fab-menu/fab-menu.android.js +3 -0
- package/lib/module/organisms/fab-menu/fab-menu.android.js.map +1 -1
- package/lib/module/organisms/fab-menu/fab-menu.ios.js +3 -0
- package/lib/module/organisms/fab-menu/fab-menu.ios.js.map +1 -1
- package/lib/module/organisms/menu/menu-parts.js +20 -0
- package/lib/module/organisms/menu/menu-parts.js.map +1 -0
- package/lib/module/organisms/menu/menu.android.js +51 -19
- package/lib/module/organisms/menu/menu.android.js.map +1 -1
- package/lib/module/organisms/menu/menu.ios.js +71 -8
- package/lib/module/organisms/menu/menu.ios.js.map +1 -1
- package/lib/module/organisms/sheet/sheet.js +2 -1
- package/lib/module/organisms/sheet/sheet.js.map +1 -1
- package/lib/typescript/atoms/badge/badge.types.d.ts +2 -0
- package/lib/typescript/atoms/button/button-tokens.d.ts +6 -2
- package/lib/typescript/atoms/button/button.types.d.ts +19 -5
- package/lib/typescript/atoms/checkbox/checkbox.types.d.ts +2 -0
- package/lib/typescript/atoms/color-picker/color-picker.types.d.ts +2 -0
- package/lib/typescript/atoms/date-picker/date-picker.ios.d.ts +5 -5
- package/lib/typescript/atoms/date-picker/date-picker.types.d.ts +30 -7
- package/lib/typescript/atoms/divider/divider.ios.d.ts +4 -0
- package/lib/typescript/atoms/divider/divider.types.d.ts +13 -2
- package/lib/typescript/atoms/fab/fab.types.d.ts +21 -4
- package/lib/typescript/atoms/icon-button/icon-button.types.d.ts +23 -4
- package/lib/typescript/atoms/list/list.types.d.ts +15 -1
- package/lib/typescript/atoms/progress/progress.types.d.ts +13 -2
- package/lib/typescript/atoms/segmented-control/segmented-control.ios.d.ts +3 -1
- package/lib/typescript/atoms/segmented-control/segmented-control.types.d.ts +26 -3
- package/lib/typescript/atoms/segmented-control/segments.d.ts +6 -0
- package/lib/typescript/atoms/slider/slider.ios.d.ts +4 -0
- package/lib/typescript/atoms/slider/slider.types.d.ts +7 -0
- package/lib/typescript/atoms/switch/switch.types.d.ts +2 -0
- package/lib/typescript/atoms/text/spans.d.ts +2 -0
- package/lib/typescript/atoms/text/text.types.d.ts +9 -1
- package/lib/typescript/atoms/text-field/text-field-input.d.ts +7 -0
- package/lib/typescript/atoms/text-field/text-field.types.d.ts +77 -4
- package/lib/typescript/molecules/collapsible/collapsible.types.d.ts +2 -0
- package/lib/typescript/molecules/radio-group/radio-group.types.d.ts +4 -0
- package/lib/typescript/molecules/search-bar/search-bar.types.d.ts +11 -1
- package/lib/typescript/molecules/stepper/stepper.ios.d.ts +2 -1
- package/lib/typescript/molecules/stepper/stepper.types.d.ts +17 -0
- package/lib/typescript/organisms/action-sheet/action-sheet.ios.d.ts +4 -0
- package/lib/typescript/organisms/action-sheet/action-sheet.types.d.ts +8 -3
- package/lib/typescript/organisms/alert/alert.types.d.ts +8 -3
- package/lib/typescript/organisms/menu/menu-parts.d.ts +14 -0
- package/lib/typescript/organisms/menu/menu.types.d.ts +35 -7
- package/lib/typescript/organisms/sheet/sheet.types.d.ts +7 -1
- package/package.json +4 -4
- package/src/atoms/badge/badge.android.tsx +9 -2
- package/src/atoms/badge/badge.ios.tsx +2 -2
- package/src/atoms/badge/badge.types.ts +2 -0
- package/src/atoms/button/button-tokens.ts +6 -3
- package/src/atoms/button/button.android.tsx +35 -11
- package/src/atoms/button/button.ios.tsx +72 -8
- package/src/atoms/button/button.types.ts +20 -5
- package/src/atoms/checkbox/checkbox.android.tsx +5 -2
- package/src/atoms/checkbox/checkbox.ios.tsx +2 -2
- package/src/atoms/checkbox/checkbox.types.ts +2 -0
- package/src/atoms/color-picker/color-picker.android.tsx +10 -2
- package/src/atoms/color-picker/color-picker.ios.tsx +24 -1
- package/src/atoms/color-picker/color-picker.types.ts +2 -0
- package/src/atoms/date-picker/date-picker.android.tsx +86 -16
- package/src/atoms/date-picker/date-picker.ios.tsx +20 -8
- package/src/atoms/date-picker/date-picker.types.ts +31 -7
- package/src/atoms/divider/divider.android.tsx +14 -3
- package/src/atoms/divider/divider.ios.tsx +4 -0
- package/src/atoms/divider/divider.types.ts +14 -2
- package/src/atoms/fab/fab.android.tsx +61 -11
- package/src/atoms/fab/fab.ios.tsx +48 -13
- package/src/atoms/fab/fab.types.ts +22 -4
- package/src/atoms/icon-button/icon-button.android.tsx +60 -10
- package/src/atoms/icon-button/icon-button.ios.tsx +77 -8
- package/src/atoms/icon-button/icon-button.types.ts +24 -4
- package/src/atoms/list/list.android.tsx +26 -4
- package/src/atoms/list/list.ios.tsx +20 -5
- package/src/atoms/list/list.types.ts +16 -1
- package/src/atoms/progress/progress.android.tsx +32 -6
- package/src/atoms/progress/progress.ios.tsx +11 -5
- package/src/atoms/progress/progress.types.ts +13 -2
- package/src/atoms/segmented-control/segmented-control.android.tsx +69 -10
- package/src/atoms/segmented-control/segmented-control.ios.tsx +24 -5
- package/src/atoms/segmented-control/segmented-control.types.ts +28 -3
- package/src/atoms/segmented-control/segments.ts +16 -0
- package/src/atoms/slider/slider.android.tsx +18 -2
- package/src/atoms/slider/slider.ios.tsx +38 -2
- package/src/atoms/slider/slider.types.ts +7 -0
- package/src/atoms/switch/switch.android.tsx +5 -2
- package/src/atoms/switch/switch.ios.tsx +2 -2
- package/src/atoms/switch/switch.types.ts +2 -0
- package/src/atoms/text/spans.ts +2 -1
- package/src/atoms/text/text.android.tsx +20 -7
- package/src/atoms/text/text.ios.tsx +7 -0
- package/src/atoms/text/text.types.ts +10 -1
- package/src/atoms/text-field/text-field-input.ts +17 -0
- package/src/atoms/text-field/text-field.android.tsx +132 -9
- package/src/atoms/text-field/text-field.ios.tsx +110 -6
- package/src/atoms/text-field/text-field.types.ts +98 -4
- package/src/molecules/collapsible/collapsible.android.tsx +10 -2
- package/src/molecules/collapsible/collapsible.ios.tsx +8 -2
- package/src/molecules/collapsible/collapsible.types.ts +2 -0
- package/src/molecules/radio-group/radio-group.android.tsx +18 -4
- package/src/molecules/radio-group/radio-group.ios.tsx +19 -5
- package/src/molecules/radio-group/radio-group.types.ts +4 -0
- package/src/molecules/search-bar/search-bar.tsx +9 -0
- package/src/molecules/search-bar/search-bar.types.ts +12 -1
- package/src/molecules/stepper/stepper.android.tsx +24 -4
- package/src/molecules/stepper/stepper.ios.tsx +23 -8
- package/src/molecules/stepper/stepper.types.ts +17 -0
- package/src/organisms/action-sheet/action-sheet.android.tsx +23 -11
- package/src/organisms/action-sheet/action-sheet.ios.tsx +20 -3
- package/src/organisms/action-sheet/action-sheet.types.ts +8 -3
- package/src/organisms/alert/alert.android.tsx +11 -8
- package/src/organisms/alert/alert.ios.tsx +2 -1
- package/src/organisms/alert/alert.types.ts +8 -3
- package/src/organisms/context-menu/context-menu.android.tsx +3 -2
- package/src/organisms/context-menu/context-menu.ios.tsx +1 -0
- package/src/organisms/fab-menu/fab-menu.android.tsx +3 -0
- package/src/organisms/fab-menu/fab-menu.ios.tsx +9 -1
- package/src/organisms/menu/menu-parts.ts +21 -0
- package/src/organisms/menu/menu.android.tsx +39 -10
- package/src/organisms/menu/menu.ios.tsx +55 -5
- package/src/organisms/menu/menu.types.ts +30 -7
- package/src/organisms/sheet/sheet.tsx +2 -1
- package/src/organisms/sheet/sheet.types.ts +7 -1
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { RNHostView } from '@expo/ui/swift-ui';
|
|
4
|
+
import { iconResourceName } from '@hzblj/expo-native-icons';
|
|
4
5
|
import { SegmentedControl as NativeSegmentedControl } from '@hzblj/kara-native/swift-ui';
|
|
5
|
-
import { useAppTheme } from '@hzblj/kara-theme';
|
|
6
|
+
import { spacing as spacingTokens, useAppTheme } from '@hzblj/kara-theme';
|
|
6
7
|
import { useCallback, useMemo } from 'react';
|
|
7
8
|
import { useInsideHost } from "../../host-context.js";
|
|
9
|
+
import { imageUri, segmentOf } from "./segments.js";
|
|
8
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
11
|
const MATCH_HEIGHT_ONLY = {
|
|
10
12
|
horizontal: false,
|
|
@@ -15,39 +17,48 @@ const MATCH_HEIGHT_ONLY = {
|
|
|
15
17
|
* kara's own `UISegmentedControl`, with the pill in the accent and white text on it — the system control tints only the
|
|
16
18
|
* pill, and SwiftUI's segmented picker not even that. A plain `UIView` in React Native layout: it needs no host, takes
|
|
17
19
|
* the width it is given and UIKit's height. Inside a `Screen` or `Island` it is carried into that host by `RNHostView`
|
|
18
|
-
* (see `useInsideHost`), the host's width and its own height. UIKit plays the control's own feedback.
|
|
20
|
+
* (see `useInsideHost`), the host's width and its own height. UIKit plays the control's own feedback. A segment shows a
|
|
21
|
+
* title or an image, never both, so an icon segment is drawn natively as one image of the icon and the label, in the
|
|
22
|
+
* label's colour; an image segment is the image alone, loaded and drawn by kara-native at `iconSize`.
|
|
19
23
|
*/
|
|
20
24
|
export const SegmentedControl = ({
|
|
21
25
|
disabled = false,
|
|
26
|
+
iconSize = 's20',
|
|
22
27
|
onChange,
|
|
23
28
|
selectedIndex,
|
|
29
|
+
spacing,
|
|
24
30
|
testID,
|
|
25
31
|
values
|
|
26
32
|
}) => {
|
|
27
33
|
const theme = useAppTheme();
|
|
28
34
|
const insideHost = useInsideHost();
|
|
29
35
|
const face = theme.typography.footnoteMedium;
|
|
36
|
+
const segments = useMemo(() => values.map(segmentOf), [values]);
|
|
30
37
|
|
|
31
38
|
// The native control speaks in values; a segment's is its index, so two labels may read the same.
|
|
32
|
-
const options = useMemo(() =>
|
|
33
|
-
|
|
39
|
+
const options = useMemo(() => segments.map((segment, index) => ({
|
|
40
|
+
icon: segment.icon ? iconResourceName(segment.icon) : undefined,
|
|
41
|
+
image: imageUri(segment.image),
|
|
42
|
+
label: segment.label,
|
|
34
43
|
value: String(index)
|
|
35
|
-
})), [
|
|
44
|
+
})), [segments]);
|
|
36
45
|
const onValueChange = useCallback(value => {
|
|
37
46
|
const index = Number(value);
|
|
38
|
-
onChange?.(index,
|
|
39
|
-
}, [onChange,
|
|
47
|
+
onChange?.(index, segments[index]?.label ?? '');
|
|
48
|
+
}, [onChange, segments]);
|
|
40
49
|
const control = /*#__PURE__*/_jsx(NativeSegmentedControl, {
|
|
41
50
|
activePillColor: theme.color('fill.accent.primary'),
|
|
42
51
|
activeTextColor: theme.color('content.on.accent'),
|
|
43
52
|
disabled: disabled,
|
|
44
53
|
fontFamily: face.fontFamily,
|
|
45
54
|
fontSize: face.fontSize,
|
|
55
|
+
iconSize: spacingTokens[iconSize],
|
|
46
56
|
inactiveTextColor: theme.color('content.primary'),
|
|
47
57
|
onValueChange: onValueChange,
|
|
48
58
|
options: options,
|
|
49
59
|
selectedValue: String(selectedIndex),
|
|
50
|
-
testID: testID
|
|
60
|
+
testID: testID,
|
|
61
|
+
verticalPadding: spacing === undefined ? undefined : spacingTokens[spacing]
|
|
51
62
|
});
|
|
52
63
|
return insideHost ? /*#__PURE__*/_jsx(RNHostView, {
|
|
53
64
|
matchContents: MATCH_HEIGHT_ONLY,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RNHostView","SegmentedControl","NativeSegmentedControl","useAppTheme","useCallback","useMemo","useInsideHost","jsx","_jsx","MATCH_HEIGHT_ONLY","horizontal","vertical","disabled","onChange","selectedIndex","testID","values","theme","insideHost","face","typography","footnoteMedium","
|
|
1
|
+
{"version":3,"names":["RNHostView","iconResourceName","SegmentedControl","NativeSegmentedControl","spacing","spacingTokens","useAppTheme","useCallback","useMemo","useInsideHost","imageUri","segmentOf","jsx","_jsx","MATCH_HEIGHT_ONLY","horizontal","vertical","disabled","iconSize","onChange","selectedIndex","testID","values","theme","insideHost","face","typography","footnoteMedium","segments","map","options","segment","index","icon","undefined","image","label","value","String","onValueChange","Number","control","activePillColor","color","activeTextColor","fontFamily","fontSize","inactiveTextColor","selectedValue","verticalPadding","matchContents","children"],"sourceRoot":"../../../../src","sources":["atoms/segmented-control/segmented-control.ios.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Image } from 'react-native';
|
|
4
|
+
/** A plain label is a segment with nothing else. */
|
|
5
|
+
export const segmentOf = value => typeof value === 'string' ? {
|
|
6
|
+
label: value
|
|
7
|
+
} : value;
|
|
8
|
+
|
|
9
|
+
/** What the native loaders take: a `require()`d file's packager or file URL, or the URI itself. */
|
|
10
|
+
export const imageUri = source => {
|
|
11
|
+
if (source === undefined) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
return Image.resolveAssetSource(Array.isArray(source) ? source[0] : source)?.uri;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=segments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Image","segmentOf","value","label","imageUri","source","undefined","resolveAssetSource","Array","isArray","uri"],"sourceRoot":"../../../../src","sources":["atoms/segmented-control/segments.ts"],"mappings":";;AAAA,SAAQA,KAAK,QAAiC,cAAc;AAI5D;AACA,OAAO,MAAMC,SAAS,GAAIC,KAAuC,IAC/D,OAAOA,KAAK,KAAK,QAAQ,GAAG;EAACC,KAAK,EAAED;AAAK,CAAC,GAAGA,KAAK;;AAEpD;AACA,OAAO,MAAME,QAAQ,GAAIC,MAAuC,IAAyB;EACvF,IAAIA,MAAM,KAAKC,SAAS,EAAE;IACxB,OAAOA,SAAS;EAClB;EAEA,OAAON,KAAK,CAACO,kBAAkB,CAACC,KAAK,CAACC,OAAO,CAACJ,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC,CAAC,GAAGA,MAAM,CAAC,EAAEK,GAAG;AAClF,CAAC","ignoreList":[]}
|
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { Slider as ComposeSlider } from '@expo/ui/jetpack-compose';
|
|
4
|
+
import { testID as testIdModifier } from '@expo/ui/jetpack-compose/modifiers';
|
|
4
5
|
import { haptics } from '@hzblj/expo-rich-haptics';
|
|
5
6
|
import { useAppTheme } from '@hzblj/kara-theme';
|
|
6
|
-
import { useCallback, useEffect, useRef } from 'react';
|
|
7
|
+
import { useCallback, useEffect, useMemo, useRef } from 'react';
|
|
7
8
|
import { useHostGuard } from "../../host-context.js";
|
|
8
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
10
|
/**
|
|
10
11
|
* Material's slider. `step` is the increment, as SwiftUI takes it; Compose counts the stops between the two ends
|
|
11
12
|
* instead, so it is converted. A stepped slider ticks at every stop the thumb reaches — Compose's Material slider
|
|
12
|
-
* plays nothing of its own, where iOS 26's slider already does.
|
|
13
|
+
* plays nothing of its own, where iOS 26's slider already does. `onValueChangeEnd` is Material's
|
|
14
|
+
* `onValueChangeFinished`, which reports no value: it gets the last one the drag reported.
|
|
13
15
|
*/
|
|
14
16
|
export const Slider = ({
|
|
15
17
|
disabled = false,
|
|
16
18
|
max = 1,
|
|
17
19
|
min = 0,
|
|
18
20
|
onValueChange,
|
|
21
|
+
onValueChangeEnd,
|
|
19
22
|
step,
|
|
23
|
+
testID,
|
|
20
24
|
value
|
|
21
25
|
}) => {
|
|
22
26
|
useHostGuard('Slider');
|
|
@@ -27,6 +31,7 @@ export const Slider = ({
|
|
|
27
31
|
// Compose reports faster than React re-renders the controlled value.
|
|
28
32
|
const stopOf = useCallback(at => step ? Math.round((at - min) / step) : 0, [min, step]);
|
|
29
33
|
const stop = useRef(stopOf(value));
|
|
34
|
+
const dragged = useRef(undefined);
|
|
30
35
|
useEffect(() => {
|
|
31
36
|
stop.current = stopOf(value);
|
|
32
37
|
}, [stopOf, value]);
|
|
@@ -36,8 +41,15 @@ export const Slider = ({
|
|
|
36
41
|
haptics.tick();
|
|
37
42
|
}
|
|
38
43
|
stop.current = reached;
|
|
44
|
+
dragged.current = next;
|
|
39
45
|
onValueChange?.(next);
|
|
40
46
|
}, [onValueChange, stopOf, steps]);
|
|
47
|
+
const onFinished = useCallback(() => {
|
|
48
|
+
const final = dragged.current ?? value;
|
|
49
|
+
dragged.current = undefined;
|
|
50
|
+
onValueChangeEnd?.(final);
|
|
51
|
+
}, [onValueChangeEnd, value]);
|
|
52
|
+
const modifiers = useMemo(() => testID ? [testIdModifier(testID)] : undefined, [testID]);
|
|
41
53
|
return /*#__PURE__*/_jsx(ComposeSlider, {
|
|
42
54
|
colors: {
|
|
43
55
|
activeTrackColor: theme.color('fill.accent.primary'),
|
|
@@ -46,7 +58,9 @@ export const Slider = ({
|
|
|
46
58
|
enabled: !disabled,
|
|
47
59
|
max: max,
|
|
48
60
|
min: min,
|
|
61
|
+
modifiers: modifiers,
|
|
49
62
|
onValueChange: onChange,
|
|
63
|
+
onValueChangeFinished: onValueChangeEnd ? onFinished : undefined,
|
|
50
64
|
steps: steps,
|
|
51
65
|
value: value
|
|
52
66
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Slider","ComposeSlider","haptics","useAppTheme","useCallback","useEffect","useRef","useHostGuard","jsx","_jsx","disabled","max","min","onValueChange","step","value","theme","steps","Math","round","stopOf","at","stop","current","onChange","next","reached","tick","colors","activeTrackColor","color","thumbColor","enabled"],"sourceRoot":"../../../../src","sources":["atoms/slider/slider.android.tsx"],"mappings":";;AAAA,SAAQA,MAAM,IAAIC,aAAa,QAAO,0BAA0B;AAChE,SAAQC,OAAO,QAAO,0BAA0B;AAChD,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAO,OAAO;
|
|
1
|
+
{"version":3,"names":["Slider","ComposeSlider","testID","testIdModifier","haptics","useAppTheme","useCallback","useEffect","useMemo","useRef","useHostGuard","jsx","_jsx","disabled","max","min","onValueChange","onValueChangeEnd","step","value","theme","steps","Math","round","stopOf","at","stop","dragged","undefined","current","onChange","next","reached","tick","onFinished","final","modifiers","colors","activeTrackColor","color","thumbColor","enabled","onValueChangeFinished"],"sourceRoot":"../../../../src","sources":["atoms/slider/slider.android.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,19 +3,26 @@
|
|
|
3
3
|
import { Slider as SwiftUISlider } from '@expo/ui/swift-ui';
|
|
4
4
|
import { disabled as disabledModifier, tint } from '@expo/ui/swift-ui/modifiers';
|
|
5
5
|
import { useAppTheme } from '@hzblj/kara-theme';
|
|
6
|
-
import { useMemo } from 'react';
|
|
6
|
+
import { useCallback, useMemo, useRef } from 'react';
|
|
7
7
|
import { useHostGuard } from "../../host-context.js";
|
|
8
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
/**
|
|
10
|
+
* SwiftUI's slider. `onValueChangeEnd` is its `onEditingChanged(false)`, with the last value the drag reported: the
|
|
11
|
+
* controlled `value` can still be a render behind when the finger lifts.
|
|
12
|
+
*/
|
|
9
13
|
export const Slider = ({
|
|
10
14
|
disabled = false,
|
|
11
15
|
max = 1,
|
|
12
16
|
min = 0,
|
|
13
17
|
onValueChange,
|
|
18
|
+
onValueChangeEnd,
|
|
14
19
|
step,
|
|
20
|
+
testID,
|
|
15
21
|
value
|
|
16
22
|
}) => {
|
|
17
23
|
useHostGuard('Slider');
|
|
18
24
|
const theme = useAppTheme();
|
|
25
|
+
const dragged = useRef(undefined);
|
|
19
26
|
const modifiers = useMemo(() => {
|
|
20
27
|
const list = [tint(theme.color('fill.accent.primary'))];
|
|
21
28
|
if (disabled) {
|
|
@@ -23,12 +30,25 @@ export const Slider = ({
|
|
|
23
30
|
}
|
|
24
31
|
return list;
|
|
25
32
|
}, [disabled, theme]);
|
|
33
|
+
const onChange = useCallback(next => {
|
|
34
|
+
dragged.current = next;
|
|
35
|
+
onValueChange?.(next);
|
|
36
|
+
}, [onValueChange]);
|
|
37
|
+
const onEditingChanged = useCallback(editing => {
|
|
38
|
+
const final = dragged.current ?? value;
|
|
39
|
+
dragged.current = undefined;
|
|
40
|
+
if (!editing) {
|
|
41
|
+
onValueChangeEnd?.(final);
|
|
42
|
+
}
|
|
43
|
+
}, [onValueChangeEnd, value]);
|
|
26
44
|
return /*#__PURE__*/_jsx(SwiftUISlider, {
|
|
27
45
|
max: max,
|
|
28
46
|
min: min,
|
|
29
47
|
modifiers: modifiers,
|
|
30
|
-
|
|
48
|
+
onEditingChanged: onValueChangeEnd ? onEditingChanged : undefined,
|
|
49
|
+
onValueChange: onChange,
|
|
31
50
|
step: step,
|
|
51
|
+
testID: testID,
|
|
32
52
|
value: value
|
|
33
53
|
});
|
|
34
54
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Slider","SwiftUISlider","disabled","disabledModifier","tint","useAppTheme","useMemo","useHostGuard","jsx","_jsx","max","min","onValueChange","step","value","theme","modifiers","list","color","push"],"sourceRoot":"../../../../src","sources":["atoms/slider/slider.ios.tsx"],"mappings":";;AAAA,SAAQA,MAAM,IAAIC,aAAa,QAAO,mBAAmB;AACzD,SAAQC,QAAQ,IAAIC,gBAAgB,EAAEC,IAAI,QAAO,6BAA6B;AAC9E,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;
|
|
1
|
+
{"version":3,"names":["Slider","SwiftUISlider","disabled","disabledModifier","tint","useAppTheme","useCallback","useMemo","useRef","useHostGuard","jsx","_jsx","max","min","onValueChange","onValueChangeEnd","step","testID","value","theme","dragged","undefined","modifiers","list","color","push","onChange","next","current","onEditingChanged","editing","final"],"sourceRoot":"../../../../src","sources":["atoms/slider/slider.ios.tsx"],"mappings":";;AAAA,SAAQA,MAAM,IAAIC,aAAa,QAAO,mBAAmB;AACzD,SAAQC,QAAQ,IAAIC,gBAAgB,EAAEC,IAAI,QAAO,6BAA6B;AAC9E,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,WAAW,EAAEC,OAAO,EAAEC,MAAM,QAAO,OAAO;AAElD,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG/C;AACA;AACA;AACA;AACA,OAAO,MAAMX,MAAuB,GAAGA,CAAC;EACtCE,QAAQ,GAAG,KAAK;EAChBU,GAAG,GAAG,CAAC;EACPC,GAAG,GAAG,CAAC;EACPC,aAAa;EACbC,gBAAgB;EAChBC,IAAI;EACJC,MAAM;EACNC;AACW,CAAC,KAAK;EACjBT,YAAY,CAAC,QAAQ,CAAC;EACtB,MAAMU,KAAK,GAAGd,WAAW,CAAC,CAAC;EAC3B,MAAMe,OAAO,GAAGZ,MAAM,CAAqBa,SAAS,CAAC;EAErD,MAAMC,SAAS,GAAGf,OAAO,CAAC,MAAM;IAC9B,MAAMgB,IAAI,GAAG,CAACnB,IAAI,CAACe,KAAK,CAACK,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEvD,IAAItB,QAAQ,EAAE;MACZqB,IAAI,CAACE,IAAI,CAACtB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnC;IAEA,OAAOoB,IAAI;EACb,CAAC,EAAE,CAACrB,QAAQ,EAAEiB,KAAK,CAAC,CAAC;EAErB,MAAMO,QAAQ,GAAGpB,WAAW,CACzBqB,IAAY,IAAK;IAChBP,OAAO,CAACQ,OAAO,GAAGD,IAAI;IACtBb,aAAa,GAAGa,IAAI,CAAC;EACvB,CAAC,EACD,CAACb,aAAa,CAChB,CAAC;EAED,MAAMe,gBAAgB,GAAGvB,WAAW,CACjCwB,OAAgB,IAAK;IACpB,MAAMC,KAAK,GAAGX,OAAO,CAACQ,OAAO,IAAIV,KAAK;IACtCE,OAAO,CAACQ,OAAO,GAAGP,SAAS;IAE3B,IAAI,CAACS,OAAO,EAAE;MACZf,gBAAgB,GAAGgB,KAAK,CAAC;IAC3B;EACF,CAAC,EACD,CAAChB,gBAAgB,EAAEG,KAAK,CAC1B,CAAC;EAED,oBACEP,IAAA,CAACV,aAAa;IACZW,GAAG,EAAEA,GAAI;IACTC,GAAG,EAAEA,GAAI;IACTS,SAAS,EAAEA,SAAU;IACrBO,gBAAgB,EAAEd,gBAAgB,GAAGc,gBAAgB,GAAGR,SAAU;IAClEP,aAAa,EAAEY,QAAS;IACxBV,IAAI,EAAEA,IAAK;IACXC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA;EAAM,CACd,CAAC;AAEN,CAAC","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { Switch as ComposeSwitch, Row, Text } from '@expo/ui/jetpack-compose';
|
|
4
|
-
import { clickable, fillMaxWidth } from '@expo/ui/jetpack-compose/modifiers';
|
|
4
|
+
import { clickable, fillMaxWidth, testID as testIdModifier } from '@expo/ui/jetpack-compose/modifiers';
|
|
5
5
|
import { haptics } from '@hzblj/expo-rich-haptics';
|
|
6
6
|
import { useAppTheme } from '@hzblj/kara-theme';
|
|
7
7
|
import { useCallback, useMemo } from 'react';
|
|
@@ -20,6 +20,7 @@ export const Switch = ({
|
|
|
20
20
|
disabled = false,
|
|
21
21
|
label,
|
|
22
22
|
onValueChange,
|
|
23
|
+
testID,
|
|
23
24
|
value
|
|
24
25
|
}) => {
|
|
25
26
|
useHostGuard('Switch');
|
|
@@ -29,6 +30,8 @@ export const Switch = ({
|
|
|
29
30
|
onValueChange?.(next);
|
|
30
31
|
}, [onValueChange]);
|
|
31
32
|
const rowModifiers = useMemo(() => disabled || !onValueChange ? [fillMaxWidth()] : [fillMaxWidth(), clickable(() => toggle(!value))], [disabled, onValueChange, toggle, value]);
|
|
33
|
+
// On the switch, not the row: the switch is its own toggleable node inside the row, and the one a test reads.
|
|
34
|
+
const controlModifiers = useMemo(() => testID ? [testIdModifier(testID)] : undefined, [testID]);
|
|
32
35
|
const control = /*#__PURE__*/_jsx(ComposeSwitch, {
|
|
33
36
|
colors: {
|
|
34
37
|
checkedBorderColor: theme.color('fill.accent.primary'),
|
|
@@ -36,6 +39,7 @@ export const Switch = ({
|
|
|
36
39
|
checkedTrackColor: theme.color('fill.accent.primary')
|
|
37
40
|
},
|
|
38
41
|
enabled: !disabled,
|
|
42
|
+
modifiers: controlModifiers,
|
|
39
43
|
onCheckedChange: onValueChange ? toggle : NOOP,
|
|
40
44
|
value: value
|
|
41
45
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Switch","ComposeSwitch","Row","Text","clickable","fillMaxWidth","haptics","useAppTheme","useCallback","useMemo","useHostGuard","jsx","_jsx","jsxs","_jsxs","NOOP","undefined","disabled","label","onValueChange","value","theme","toggle","next","play","rowModifiers","control","colors","checkedBorderColor","color","checkedThumbColor","checkedTrackColor","enabled","
|
|
1
|
+
{"version":3,"names":["Switch","ComposeSwitch","Row","Text","clickable","fillMaxWidth","testID","testIdModifier","haptics","useAppTheme","useCallback","useMemo","useHostGuard","jsx","_jsx","jsxs","_jsxs","NOOP","undefined","disabled","label","onValueChange","value","theme","toggle","next","play","rowModifiers","controlModifiers","control","colors","checkedBorderColor","color","checkedThumbColor","checkedTrackColor","enabled","modifiers","onCheckedChange","horizontalArrangement","verticalAlignment","children","colorString","style","typography","body"],"sourceRoot":"../../../../src","sources":["atoms/switch/switch.android.tsx"],"mappings":";;AAAA,SAAQA,MAAM,IAAIC,aAAa,EAAEC,GAAG,EAAEC,IAAI,QAAO,0BAA0B;AAC3E,SAAQC,SAAS,EAAEC,YAAY,EAAEC,MAAM,IAAIC,cAAc,QAAO,oCAAoC;AACpG,SAAQC,OAAO,QAAO,0BAA0B;AAChD,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,WAAW,EAAEC,OAAO,QAAO,OAAO;AAE1C,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG/C;AACA,MAAMC,IAAI,GAAGA,CAAA,KAAMC,SAAS;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMlB,MAAuB,GAAGA,CAAC;EAACmB,QAAQ,GAAG,KAAK;EAAEC,KAAK;EAAEC,aAAa;EAAEf,MAAM;EAAEgB;AAAkB,CAAC,KAAK;EAC/GV,YAAY,CAAC,QAAQ,CAAC;EACtB,MAAMW,KAAK,GAAGd,WAAW,CAAC,CAAC;EAC3B,MAAMe,MAAM,GAAGd,WAAW,CACvBe,IAAa,IAAK;IACjBjB,OAAO,CAACkB,IAAI,CAACD,IAAI,GAAG,UAAU,GAAG,WAAW,CAAC;IAC7CJ,aAAa,GAAGI,IAAI,CAAC;EACvB,CAAC,EACD,CAACJ,aAAa,CAChB,CAAC;EACD,MAAMM,YAAY,GAAGhB,OAAO,CAC1B,MAAOQ,QAAQ,IAAI,CAACE,aAAa,GAAG,CAAChB,YAAY,CAAC,CAAC,CAAC,GAAG,CAACA,YAAY,CAAC,CAAC,EAAED,SAAS,CAAC,MAAMoB,MAAM,CAAC,CAACF,KAAK,CAAC,CAAC,CAAE,EACzG,CAACH,QAAQ,EAAEE,aAAa,EAAEG,MAAM,EAAEF,KAAK,CACzC,CAAC;EACD;EACA,MAAMM,gBAAgB,GAAGjB,OAAO,CAAC,MAAOL,MAAM,GAAG,CAACC,cAAc,CAACD,MAAM,CAAC,CAAC,GAAGY,SAAU,EAAE,CAACZ,MAAM,CAAC,CAAC;EACjG,MAAMuB,OAAO,gBACXf,IAAA,CAACb,aAAa;IACZ6B,MAAM,EAAE;MACNC,kBAAkB,EAAER,KAAK,CAACS,KAAK,CAAC,qBAAqB,CAAC;MACtDC,iBAAiB,EAAEV,KAAK,CAACS,KAAK,CAAC,mBAAmB,CAAC;MACnDE,iBAAiB,EAAEX,KAAK,CAACS,KAAK,CAAC,qBAAqB;IACtD,CAAE;IACFG,OAAO,EAAE,CAAChB,QAAS;IACnBiB,SAAS,EAAER,gBAAiB;IAC5BS,eAAe,EAAEhB,aAAa,GAAGG,MAAM,GAAGP,IAAK;IAC/CK,KAAK,EAAEA;EAAM,CACd,CACF;EAED,IAAI,CAACF,KAAK,EAAE;IACV,OAAOS,OAAO;EAChB;EAEA,oBACEb,KAAA,CAACd,GAAG;IAACoC,qBAAqB,EAAC,cAAc;IAACF,SAAS,EAAET,YAAa;IAACY,iBAAiB,EAAC,QAAQ;IAAAC,QAAA,gBAC3F1B,IAAA,CAACX,IAAI;MAAC6B,KAAK,EAAET,KAAK,CAACkB,WAAW,CAACtB,QAAQ,GAAG,kBAAkB,GAAG,iBAAiB,CAAE;MAACuB,KAAK,EAAEnB,KAAK,CAACoB,UAAU,CAACC,IAAK;MAAAJ,QAAA,EAC7GpB;IAAK,CACF,CAAC,EACNS,OAAO;EAAA,CACL,CAAC;AAEV,CAAC","ignoreList":[]}
|
|
@@ -10,6 +10,7 @@ export const Switch = ({
|
|
|
10
10
|
disabled = false,
|
|
11
11
|
label,
|
|
12
12
|
onValueChange,
|
|
13
|
+
testID,
|
|
13
14
|
value
|
|
14
15
|
}) => {
|
|
15
16
|
useHostGuard('Switch');
|
|
@@ -25,7 +26,8 @@ export const Switch = ({
|
|
|
25
26
|
isOn: value,
|
|
26
27
|
label: label,
|
|
27
28
|
modifiers: modifiers,
|
|
28
|
-
onIsOnChange: onValueChange
|
|
29
|
+
onIsOnChange: onValueChange,
|
|
30
|
+
testID: testID
|
|
29
31
|
});
|
|
30
32
|
};
|
|
31
33
|
//# sourceMappingURL=switch.ios.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Toggle","disabled","disabledModifier","tint","useAppTheme","useMemo","useHostGuard","jsx","_jsx","Switch","label","onValueChange","value","theme","modifiers","list","color","push","isOn","onIsOnChange"],"sourceRoot":"../../../../src","sources":["atoms/switch/switch.ios.tsx"],"mappings":";;AAAA,SAAQA,MAAM,QAAO,mBAAmB;AACxC,SAAQC,QAAQ,IAAIC,gBAAgB,EAAEC,IAAI,QAAO,6BAA6B;AAC9E,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAE7B,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG/C,OAAO,MAAMC,MAAuB,GAAGA,CAAC;EAACR,QAAQ,GAAG,KAAK;EAAES,KAAK;EAAEC,aAAa;EAAEC;AAAkB,CAAC,KAAK;
|
|
1
|
+
{"version":3,"names":["Toggle","disabled","disabledModifier","tint","useAppTheme","useMemo","useHostGuard","jsx","_jsx","Switch","label","onValueChange","testID","value","theme","modifiers","list","color","push","isOn","onIsOnChange"],"sourceRoot":"../../../../src","sources":["atoms/switch/switch.ios.tsx"],"mappings":";;AAAA,SAAQA,MAAM,QAAO,mBAAmB;AACxC,SAAQC,QAAQ,IAAIC,gBAAgB,EAAEC,IAAI,QAAO,6BAA6B;AAC9E,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAE7B,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG/C,OAAO,MAAMC,MAAuB,GAAGA,CAAC;EAACR,QAAQ,GAAG,KAAK;EAAES,KAAK;EAAEC,aAAa;EAAEC,MAAM;EAAEC;AAAkB,CAAC,KAAK;EAC/GP,YAAY,CAAC,QAAQ,CAAC;EACtB,MAAMQ,KAAK,GAAGV,WAAW,CAAC,CAAC;EAE3B,MAAMW,SAAS,GAAGV,OAAO,CAAC,MAAM;IAC9B,MAAMW,IAAI,GAAG,CAACb,IAAI,CAACW,KAAK,CAACG,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEvD,IAAIhB,QAAQ,EAAE;MACZe,IAAI,CAACE,IAAI,CAAChB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnC;IAEA,OAAOc,IAAI;EACb,CAAC,EAAE,CAACf,QAAQ,EAAEa,KAAK,CAAC,CAAC;EAErB,oBAAON,IAAA,CAACR,MAAM;IAACmB,IAAI,EAAEN,KAAM;IAACH,KAAK,EAAEA,KAAM;IAACK,SAAS,EAAEA,SAAU;IAACK,YAAY,EAAET,aAAc;IAACC,MAAM,EAAEA;EAAO,CAAE,CAAC;AACjH,CAAC","ignoreList":[]}
|
|
@@ -4,7 +4,8 @@ import { Children, isValidElement } from 'react';
|
|
|
4
4
|
|
|
5
5
|
/** A run of the text: a string child, or a nested `Text` with a colour of its own. */
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
/** The string and number children, joined: the text of a `Text` without spans, however JSX split it. */
|
|
8
|
+
export const textOf = children => Children.toArray(children).map(child => typeof child === 'string' || typeof child === 'number' ? String(child) : '').join('');
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* The children as runs when any of them is a nested `Text` (`type`, the platform's own component), `null` when they
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Children","isValidElement","textOf","children","toArray","map","child","String","join","spansOf","type","items","some","flatMap","text","color","props","spansKey","spans","hash","value","span","character","charCodeAt","Math","imul"],"sourceRoot":"../../../../src","sources":["atoms/text/spans.ts"],"mappings":";;AACA,SAAQA,QAAQ,EAAEC,cAAc,QAAuB,OAAO;;AAE9D;;AAGA,MAAMC,MAAM,GAAIC,QAAmB,
|
|
1
|
+
{"version":3,"names":["Children","isValidElement","textOf","children","toArray","map","child","String","join","spansOf","type","items","some","flatMap","text","color","props","spansKey","spans","hash","value","span","character","charCodeAt","Math","imul"],"sourceRoot":"../../../../src","sources":["atoms/text/spans.ts"],"mappings":";;AACA,SAAQA,QAAQ,EAAEC,cAAc,QAAuB,OAAO;;AAE9D;;AAGA;AACA,OAAO,MAAMC,MAAM,GAAIC,QAAmB,IACxCH,QAAQ,CAACI,OAAO,CAACD,QAAQ,CAAC,CACvBE,GAAG,CAACC,KAAK,IAAK,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,GAAGC,MAAM,CAACD,KAAK,CAAC,GAAG,EAAG,CAAC,CAC3FE,IAAI,CAAC,EAAE,CAAC;;AAEb;AACA;AACA;AACA;AACA,OAAO,MAAMC,OAAO,GAAGA,CAACN,QAAmB,EAAEO,IAAa,KAAwB;EAChF,MAAMC,KAAK,GAAGX,QAAQ,CAACI,OAAO,CAACD,QAAQ,CAAC;EAExC,IAAI,CAACQ,KAAK,CAACC,IAAI,CAACN,KAAK,IAAI,aAAAL,cAAc,CAACK,KAAK,CAAC,IAAIA,KAAK,CAACI,IAAI,KAAKA,IAAI,CAAC,EAAE;IACtE,OAAO,IAAI;EACb;EAEA,OAAOC,KAAK,CAACE,OAAO,CAAWP,KAAK,IAAI;IACtC,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC1D,OAAO,CAAC;QAACQ,IAAI,EAAEP,MAAM,CAACD,KAAK;MAAC,CAAC,CAAC;IAChC;IACA,IAAI,aAAAL,cAAc,CAA6CK,KAAK,CAAC,IAAIA,KAAK,CAACI,IAAI,KAAKA,IAAI,EAAE;MAC5F,OAAO,CAAC;QAACK,KAAK,EAAET,KAAK,CAACU,KAAK,CAACD,KAAK;QAAED,IAAI,EAAEZ,MAAM,CAACI,KAAK,CAACU,KAAK,CAACb,QAAQ;MAAC,CAAC,CAAC;IACzE;IACA,OAAO,EAAE;EACX,CAAC,CAAC;AACJ,CAAC;;AAED;AACA,OAAO,MAAMc,QAAQ,GAAGA,CAACF,KAAiB,EAAEG,KAAiC,EAAEJ,IAAY,KAAa;EACtG,IAAIK,IAAI,GAAG,UAAU;EACrB,MAAMC,KAAK,GAAGF,KAAK,GAAGA,KAAK,CAACb,GAAG,CAACgB,IAAI,IAAI,GAAGA,IAAI,CAACN,KAAK,IAAI,EAAE,IAAIM,IAAI,CAACP,IAAI,EAAE,CAAC,CAACN,IAAI,CAAC,GAAG,CAAC,GAAGM,IAAI;EAE5F,KAAK,MAAMQ,SAAS,IAAI,GAAGP,KAAK,IAAIK,KAAK,EAAE,EAAE;IAC3CD,IAAI,IAAIG,SAAS,CAACC,UAAU,CAAC,CAAC,CAAC;IAC/BJ,IAAI,GAAGK,IAAI,CAACC,IAAI,CAACN,IAAI,EAAE,UAAU,CAAC;EACpC;EAEA,OAAOA,IAAI,KAAK,CAAC;AACnB,CAAC","ignoreList":[]}
|
|
@@ -7,13 +7,18 @@ import { animateConfig, splitAccessibility, useAccessibilityModifiers, useSxModi
|
|
|
7
7
|
import { duration, easing, springPhysics, useAppTheme } from '@hzblj/kara-theme';
|
|
8
8
|
import { useMemo } from 'react';
|
|
9
9
|
import { useHostGuard } from "../../host-context.js";
|
|
10
|
-
import { spansOf } from "./spans.js";
|
|
10
|
+
import { spansOf, textOf } from "./spans.js";
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
12
|
const DECORATION = {
|
|
13
13
|
none: 'none',
|
|
14
14
|
strikethrough: 'lineThrough',
|
|
15
15
|
underline: 'underline'
|
|
16
16
|
};
|
|
17
|
+
const OVERFLOW = {
|
|
18
|
+
head: 'startEllipsis',
|
|
19
|
+
middle: 'middleEllipsis',
|
|
20
|
+
tail: 'ellipsis'
|
|
21
|
+
};
|
|
17
22
|
const applyTransform = (children, transform) => {
|
|
18
23
|
if (!transform || typeof children !== 'string') {
|
|
19
24
|
return children;
|
|
@@ -66,6 +71,7 @@ export const Text = ({
|
|
|
66
71
|
numberOfLines,
|
|
67
72
|
testID,
|
|
68
73
|
transform,
|
|
74
|
+
truncation = 'tail',
|
|
69
75
|
variant = 'body',
|
|
70
76
|
...props
|
|
71
77
|
}) => {
|
|
@@ -78,12 +84,16 @@ export const Text = ({
|
|
|
78
84
|
const modifiers = useMemo(() => [...sxModifiers, ...(testID ? [testIdModifier(testID)] : []), ...accessibilityModifiers], [accessibilityModifiers, sxModifiers, testID]);
|
|
79
85
|
const spans = useMemo(() => spansOf(children, Text), [children]);
|
|
80
86
|
const animate = sx.animate === false ? undefined : sx.animate;
|
|
87
|
+
// Compose ellipsizes at the start or in the middle of a single line only, and clips a longer text: that ends at the
|
|
88
|
+
// tail instead.
|
|
89
|
+
const overflow = numberOfLines === 1 ? OVERFLOW[truncation] : 'ellipsis';
|
|
81
90
|
|
|
82
|
-
// `@expo/ui`'s text takes spans but animates none,
|
|
83
|
-
// eases each span's colour,
|
|
84
|
-
|
|
91
|
+
// `@expo/ui`'s text takes spans but animates none, sets no font features and ellipsizes only at the end: with
|
|
92
|
+
// `animate`, kara's own Compose text eases each span's colour, with `monospacedDigit` asks the face for its tabular
|
|
93
|
+
// figures, and puts the ellipsis at the start or in the middle of a line.
|
|
94
|
+
if (animate !== undefined || monospacedDigit || overflow !== 'ellipsis') {
|
|
85
95
|
const runs = spans ?? [{
|
|
86
|
-
text:
|
|
96
|
+
text: textOf(children)
|
|
87
97
|
}];
|
|
88
98
|
return /*#__PURE__*/_jsx(AnimatedText, {
|
|
89
99
|
animation: animate === undefined ? undefined : textAnimation(animateConfig(animate)),
|
|
@@ -100,13 +110,15 @@ export const Text = ({
|
|
|
100
110
|
})),
|
|
101
111
|
textAlign: align,
|
|
102
112
|
textColor: theme.colorString(color),
|
|
103
|
-
textDecoration: decorationOf(decoration)
|
|
113
|
+
textDecoration: decorationOf(decoration),
|
|
114
|
+
textOverflow: overflow
|
|
104
115
|
});
|
|
105
116
|
}
|
|
106
117
|
return /*#__PURE__*/_jsx(ComposeText, {
|
|
107
118
|
color: theme.colorString(color),
|
|
108
119
|
maxLines: numberOfLines,
|
|
109
120
|
modifiers: modifiers,
|
|
121
|
+
overflow: "ellipsis",
|
|
110
122
|
style: {
|
|
111
123
|
fontFamily: style.fontFamily,
|
|
112
124
|
fontSize: style.fontSize,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Text","ComposeText","testID","testIdModifier","AnimatedText","animateConfig","splitAccessibility","useAccessibilityModifiers","useSxModifiers","duration","easing","springPhysics","useAppTheme","useMemo","useHostGuard","spansOf","jsx","_jsx","DECORATION","none","strikethrough","underline","applyTransform","children","transform","toUpperCase","toLowerCase","decorationOf","decoration","undefined","transformed","text","textAnimation","config","spring","dampingRatio","stiffness","type","milliseconds","curve","omega","Math","PI","delayMillis","delay","durationMillis","align","color","monospaced","monospacedDigit","numberOfLines","variant","props","theme","style","monoTypography","typography","accessibility","sx","sxModifiers","accessibilityModifiers","modifiers","spans","animate","
|
|
1
|
+
{"version":3,"names":["Text","ComposeText","testID","testIdModifier","AnimatedText","animateConfig","splitAccessibility","useAccessibilityModifiers","useSxModifiers","duration","easing","springPhysics","useAppTheme","useMemo","useHostGuard","spansOf","textOf","jsx","_jsx","DECORATION","none","strikethrough","underline","OVERFLOW","head","middle","tail","applyTransform","children","transform","toUpperCase","toLowerCase","decorationOf","decoration","undefined","transformed","text","textAnimation","config","spring","dampingRatio","stiffness","type","milliseconds","curve","omega","Math","PI","delayMillis","delay","durationMillis","align","color","monospaced","monospacedDigit","numberOfLines","truncation","variant","props","theme","style","monoTypography","typography","accessibility","sx","sxModifiers","accessibilityModifiers","modifiers","spans","animate","overflow","runs","animation","fontFamily","fontFeatureSettings","fontSize","fontWeight","lineHeight","maxLines","map","span","colorString","textAlign","textColor","textDecoration","textOverflow","index"],"sourceRoot":"../../../../src","sources":["atoms/text/text.android.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { Text as SwiftUIText } from '@expo/ui/swift-ui';
|
|
4
|
-
import { foregroundStyle, lineLimit, lineSpacing, monospacedDigit as monospacedDigitModifier, multilineTextAlignment, strikethrough, textCase, underline } from '@expo/ui/swift-ui/modifiers';
|
|
4
|
+
import { foregroundStyle, lineLimit, lineSpacing, monospacedDigit as monospacedDigitModifier, multilineTextAlignment, strikethrough, textCase, truncationMode, underline } from '@expo/ui/swift-ui/modifiers';
|
|
5
5
|
import { scaledFont } from '@hzblj/kara-native/swift-ui';
|
|
6
6
|
import { splitAccessibility, textColorTransition, useAccessibilityModifiers, useSxModifiers } from '@hzblj/kara-sx';
|
|
7
7
|
import { useAppTheme } from '@hzblj/kara-theme';
|
|
@@ -31,6 +31,7 @@ export const Text = ({
|
|
|
31
31
|
numberOfLines,
|
|
32
32
|
testID,
|
|
33
33
|
transform,
|
|
34
|
+
truncation,
|
|
34
35
|
variant = 'body',
|
|
35
36
|
...props
|
|
36
37
|
}) => {
|
|
@@ -79,8 +80,11 @@ export const Text = ({
|
|
|
79
80
|
if (numberOfLines !== undefined) {
|
|
80
81
|
list.push(lineLimit(numberOfLines));
|
|
81
82
|
}
|
|
83
|
+
if (truncation) {
|
|
84
|
+
list.push(truncationMode(truncation));
|
|
85
|
+
}
|
|
82
86
|
return [...list, ...transition, ...sxModifiers, ...accessibilityModifiers];
|
|
83
|
-
}, [accessibilityModifiers, align, color, decoration, monospacedDigit, numberOfLines, style, sxModifiers, theme, transform, transition]);
|
|
87
|
+
}, [accessibilityModifiers, align, color, decoration, monospacedDigit, numberOfLines, style, sxModifiers, theme, transform, transition, truncation]);
|
|
84
88
|
return /*#__PURE__*/_jsx(SwiftUIText, {
|
|
85
89
|
modifiers: modifiers,
|
|
86
90
|
testID: testID,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Text","SwiftUIText","foregroundStyle","lineLimit","lineSpacing","monospacedDigit","monospacedDigitModifier","multilineTextAlignment","strikethrough","textCase","underline","scaledFont","splitAccessibility","textColorTransition","useAccessibilityModifiers","useSxModifiers","useAppTheme","useMemo","useHostGuard","spansKey","spansOf","jsx","_jsx","ALIGNMENT","center","left","right","FRAME_ALIGNMENT","align","children","color","decoration","monospaced","numberOfLines","testID","transform","variant","props","theme","style","monoTypography","typography","accessibility","sx","sxModifiers","accessibilityModifiers","spans","animate","transition","modifiers","list","family","fontFamily","size","fontSize","textStyle","scalesWith","weight","Math","max","lineHeight","push","isActive","pattern","undefined","map","span","index","text"],"sourceRoot":"../../../../src","sources":["atoms/text/text.ios.tsx"],"mappings":";;AAAA,SAAQA,IAAI,IAAIC,WAAW,QAAO,mBAAmB;AACrD,SACEC,eAAe,EACfC,SAAS,EACTC,WAAW,EAEXC,eAAe,IAAIC,uBAAuB,EAC1CC,sBAAsB,EACtBC,aAAa,EACbC,QAAQ,EACRC,SAAS,QACJ,6BAA6B;AACpC,SAAQC,UAAU,QAAO,6BAA6B;AACtD,SAEEC,kBAAkB,EAClBC,mBAAmB,EACnBC,yBAAyB,EACzBC,cAAc,QACT,gBAAgB;AACvB,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAE7B,SAAQC,YAAY,QAAO,uBAAoB;AAC/C,SAAQC,QAAQ,EAAEC,OAAO,QAAO,YAAS;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGzC,MAAMC,SAAS,GAAG;EAChBC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,SAAS;EACfC,KAAK,EAAE;AACT,CAAU;;AAEV;AACA,MAAMC,eAAe,GAAG;EACtBH,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,SAAS;EACfC,KAAK,EAAE;AACT,CAAsD;AAEtD,OAAO,
|
|
1
|
+
{"version":3,"names":["Text","SwiftUIText","foregroundStyle","lineLimit","lineSpacing","monospacedDigit","monospacedDigitModifier","multilineTextAlignment","strikethrough","textCase","truncationMode","underline","scaledFont","splitAccessibility","textColorTransition","useAccessibilityModifiers","useSxModifiers","useAppTheme","useMemo","useHostGuard","spansKey","spansOf","jsx","_jsx","ALIGNMENT","center","left","right","FRAME_ALIGNMENT","align","children","color","decoration","monospaced","numberOfLines","testID","transform","truncation","variant","props","theme","style","monoTypography","typography","accessibility","sx","sxModifiers","accessibilityModifiers","spans","animate","transition","modifiers","list","family","fontFamily","size","fontSize","textStyle","scalesWith","weight","Math","max","lineHeight","push","isActive","pattern","undefined","map","span","index","text"],"sourceRoot":"../../../../src","sources":["atoms/text/text.ios.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/** Keyboards for an address, where a capital or a correction the user did not type would only break it. */
|
|
4
|
+
const ADDRESS_KEYBOARDS = new Set(['email', 'url']);
|
|
5
|
+
|
|
6
|
+
/** The capitalisation asked for, else `none` for an address; `undefined` leaves the platform's own. */
|
|
7
|
+
export const capitalizationFor = (keyboard, autoCapitalize) => autoCapitalize ?? (ADDRESS_KEYBOARDS.has(keyboard) ? 'none' : undefined);
|
|
8
|
+
|
|
9
|
+
/** Autocorrection as asked for, else on for everything but an address. */
|
|
10
|
+
export const autoCorrectFor = (keyboard, autoCorrect) => autoCorrect ?? !ADDRESS_KEYBOARDS.has(keyboard);
|
|
11
|
+
|
|
12
|
+
/** A no-op for a ref call that lands after the native view has gone. */
|
|
13
|
+
export const ignoreDetachedView = () => undefined;
|
|
14
|
+
//# sourceMappingURL=text-field-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ADDRESS_KEYBOARDS","Set","capitalizationFor","keyboard","autoCapitalize","has","undefined","autoCorrectFor","autoCorrect","ignoreDetachedView"],"sourceRoot":"../../../../src","sources":["atoms/text-field/text-field-input.ts"],"mappings":";;AAEA;AACA,MAAMA,iBAAiD,GAAG,IAAIC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;;AAEnF;AACA,OAAO,MAAMC,iBAAiB,GAAGA,CAC/BC,QAA2B,EAC3BC,cAAmD,KACXA,cAAc,KAAKJ,iBAAiB,CAACK,GAAG,CAACF,QAAQ,CAAC,GAAG,MAAM,GAAGG,SAAS,CAAC;;AAElH;AACA,OAAO,MAAMC,cAAc,GAAGA,CAACJ,QAA2B,EAAEK,WAAgC,KAC1FA,WAAW,IAAI,CAACR,iBAAiB,CAACK,GAAG,CAACF,QAAQ,CAAC;;AAEjD;AACA,OAAO,MAAMM,kBAAkB,GAAGA,CAAA,KAAMH,SAAS","ignoreList":[]}
|