@yahoo/uds-mobile 2.22.0 → 2.23.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/dist/bin/automated-config/dist/generated/generatedConfigs.mjs +3127 -452
- package/dist/bin/uds-mobile.mjs +7 -7
- package/dist/components/Select/Select.cjs +194 -0
- package/dist/components/Select/Select.d.cts +47 -0
- package/dist/components/Select/Select.d.cts.map +1 -0
- package/dist/components/Select/Select.d.ts +47 -0
- package/dist/components/Select/Select.d.ts.map +1 -0
- package/dist/components/Select/Select.js +194 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Select/SelectContent.cjs +148 -0
- package/dist/components/Select/SelectContent.d.cts +31 -0
- package/dist/components/Select/SelectContent.d.cts.map +1 -0
- package/dist/components/Select/SelectContent.d.ts +31 -0
- package/dist/components/Select/SelectContent.d.ts.map +1 -0
- package/dist/components/Select/SelectContent.js +147 -0
- package/dist/components/Select/SelectContent.js.map +1 -0
- package/dist/components/Select/SelectItem.cjs +138 -0
- package/dist/components/Select/SelectItem.d.cts +24 -0
- package/dist/components/Select/SelectItem.d.cts.map +1 -0
- package/dist/components/Select/SelectItem.d.ts +24 -0
- package/dist/components/Select/SelectItem.d.ts.map +1 -0
- package/dist/components/Select/SelectItem.js +137 -0
- package/dist/components/Select/SelectItem.js.map +1 -0
- package/dist/components/Select/SelectTrigger.cjs +140 -0
- package/dist/components/Select/SelectTrigger.d.cts +13 -0
- package/dist/components/Select/SelectTrigger.d.cts.map +1 -0
- package/dist/components/Select/SelectTrigger.d.ts +13 -0
- package/dist/components/Select/SelectTrigger.d.ts.map +1 -0
- package/dist/components/Select/SelectTrigger.js +139 -0
- package/dist/components/Select/SelectTrigger.js.map +1 -0
- package/dist/components/Select/index.cjs +8 -0
- package/dist/components/Select/index.d.cts +5 -0
- package/dist/components/Select/index.d.ts +5 -0
- package/dist/components/Select/index.js +5 -0
- package/dist/components/Select/selectContext.cjs +22 -0
- package/dist/components/Select/selectContext.d.cts +12 -0
- package/dist/components/Select/selectContext.d.cts.map +1 -0
- package/dist/components/Select/selectContext.d.ts +12 -0
- package/dist/components/Select/selectContext.d.ts.map +1 -0
- package/dist/components/Select/selectContext.js +19 -0
- package/dist/components/Select/selectContext.js.map +1 -0
- package/dist/components/Select/selectItemTheme.cjs +39 -0
- package/dist/components/Select/selectItemTheme.d.cts +19 -0
- package/dist/components/Select/selectItemTheme.d.cts.map +1 -0
- package/dist/components/Select/selectItemTheme.d.ts +19 -0
- package/dist/components/Select/selectItemTheme.d.ts.map +1 -0
- package/dist/components/Select/selectItemTheme.js +39 -0
- package/dist/components/Select/selectItemTheme.js.map +1 -0
- package/dist/components/Select/types.cjs +1 -0
- package/dist/components/Select/types.d.cts +43 -0
- package/dist/components/Select/types.d.cts.map +1 -0
- package/dist/components/Select/types.d.ts +43 -0
- package/dist/components/Select/types.d.ts.map +1 -0
- package/dist/components/Select/types.js +1 -0
- package/dist/components/internal/Overlay/index.cjs +2 -0
- package/dist/components/internal/Overlay/index.d.cts +2 -1
- package/dist/components/internal/Overlay/index.d.ts +2 -1
- package/dist/components/internal/Overlay/index.js +2 -1
- package/dist/components/internal/Overlay/measureTrigger.cjs +35 -0
- package/dist/components/internal/Overlay/measureTrigger.d.cts +9 -0
- package/dist/components/internal/Overlay/measureTrigger.d.cts.map +1 -0
- package/dist/components/internal/Overlay/measureTrigger.d.ts +9 -0
- package/dist/components/internal/Overlay/measureTrigger.d.ts.map +1 -0
- package/dist/components/internal/Overlay/measureTrigger.js +36 -0
- package/dist/components/internal/Overlay/measureTrigger.js.map +1 -0
- package/dist/jest/mocks/styles.cjs +47 -1
- package/dist/jest/mocks/styles.d.cts +5 -2
- package/dist/jest/mocks/styles.d.cts.map +1 -1
- package/dist/jest/mocks/styles.d.ts +5 -2
- package/dist/jest/mocks/styles.d.ts.map +1 -1
- package/dist/jest/mocks/styles.js +45 -2
- package/dist/jest/mocks/styles.js.map +1 -1
- package/dist/types/dist/index.d.cts +28 -1
- package/dist/types/dist/index.d.cts.map +1 -1
- package/dist/types/dist/index.d.ts +28 -1
- package/dist/types/dist/index.d.ts.map +1 -1
- package/generated/styles.cjs +125 -0
- package/generated/styles.d.ts +39 -0
- package/generated/styles.mjs +125 -0
- package/generated/unistyles.d.ts +108 -8
- package/package.json +11 -1
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
const require_components_IconSlot = require("../IconSlot.cjs");
|
|
5
|
+
const require_components_internal_Overlay_measureTrigger = require("../internal/Overlay/measureTrigger.cjs");
|
|
6
|
+
const require_components_Select_selectContext = require("./selectContext.cjs");
|
|
7
|
+
let react = require("react");
|
|
8
|
+
let react_native = require("react-native");
|
|
9
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
10
|
+
let generated_styles = require("../../../generated/styles");
|
|
11
|
+
let react_native_reanimated = require("react-native-reanimated");
|
|
12
|
+
react_native_reanimated = require_runtime.__toESM(react_native_reanimated);
|
|
13
|
+
//#region src/components/Select/SelectTrigger.tsx
|
|
14
|
+
const SelectTrigger = (0, react.memo)(function SelectTrigger({ startIcon, endIcon }) {
|
|
15
|
+
const { value, open, setOpen, triggerRef, triggerRect, setTriggerRect, getItemLabel, setHighlightedValue, reduceMotion } = require_components_Select_selectContext.useSelectContext();
|
|
16
|
+
const { size, disabled, readOnly, hasError, placeholder, uid, width } = require_components_Select_selectContext.useSelectFieldContext();
|
|
17
|
+
const hasValue = value.length > 0;
|
|
18
|
+
const valueState = hasValue ? "filled" : "empty";
|
|
19
|
+
const isInteractive = !readOnly && !disabled;
|
|
20
|
+
const useAnimatedChevron = endIcon === void 0;
|
|
21
|
+
const displayText = hasValue ? getItemLabel(value) ?? value : placeholder ?? "";
|
|
22
|
+
generated_styles.inputStyles.useVariants({
|
|
23
|
+
size,
|
|
24
|
+
value: valueState,
|
|
25
|
+
pressed: open,
|
|
26
|
+
readonly: readOnly,
|
|
27
|
+
invalid: hasError
|
|
28
|
+
});
|
|
29
|
+
const inputWrapperStyle = (0, react.useMemo)(() => [
|
|
30
|
+
generated_styles.inputStyles.inputWrapper,
|
|
31
|
+
generated_styles.inputStyles.inputWrapperStatic,
|
|
32
|
+
generated_styles.inputStyles.inputWrapperDynamic,
|
|
33
|
+
{
|
|
34
|
+
flexDirection: "row",
|
|
35
|
+
alignItems: "center",
|
|
36
|
+
width,
|
|
37
|
+
alignSelf: "stretch"
|
|
38
|
+
}
|
|
39
|
+
], [
|
|
40
|
+
generated_styles.inputStyles.inputWrapper,
|
|
41
|
+
generated_styles.inputStyles.inputWrapperDynamic,
|
|
42
|
+
generated_styles.inputStyles.inputWrapperStatic,
|
|
43
|
+
width
|
|
44
|
+
]);
|
|
45
|
+
const textContainerStyle = (0, react.useMemo)(() => [{
|
|
46
|
+
flex: 1,
|
|
47
|
+
justifyContent: "center"
|
|
48
|
+
}, typeof generated_styles.inputStyles.input.height === "number" ? { minHeight: generated_styles.inputStyles.input.height } : null], [generated_styles.inputStyles.input]);
|
|
49
|
+
const textInputStyle = (0, react.useMemo)(() => [
|
|
50
|
+
{
|
|
51
|
+
fontFamily: generated_styles.inputStyles.inputWrapperStatic.fontFamily,
|
|
52
|
+
fontSize: generated_styles.inputStyles.inputWrapperStatic.fontSize,
|
|
53
|
+
letterSpacing: generated_styles.inputStyles.inputWrapperStatic.letterSpacing,
|
|
54
|
+
lineHeight: generated_styles.inputStyles.inputWrapperStatic.fontSize,
|
|
55
|
+
paddingVertical: 0
|
|
56
|
+
},
|
|
57
|
+
generated_styles.inputStyles.input,
|
|
58
|
+
{ height: void 0 },
|
|
59
|
+
!hasValue ? generated_styles.inputStyles.inputPlaceholder : null
|
|
60
|
+
], [
|
|
61
|
+
hasValue,
|
|
62
|
+
generated_styles.inputStyles.input,
|
|
63
|
+
generated_styles.inputStyles.inputPlaceholder,
|
|
64
|
+
generated_styles.inputStyles.inputWrapperStatic
|
|
65
|
+
]);
|
|
66
|
+
const chevronProgress = (0, react_native_reanimated.useDerivedValue)(() => (0, react_native_reanimated.withTiming)(open ? 1 : 0, {
|
|
67
|
+
duration: reduceMotion ? 0 : 200,
|
|
68
|
+
easing: react_native_reanimated.Easing.out(react_native_reanimated.Easing.ease)
|
|
69
|
+
}), [open, reduceMotion]);
|
|
70
|
+
const chevronAnimatedStyle = (0, react_native_reanimated.useAnimatedStyle)(() => ({ transform: [{ rotate: `${chevronProgress.value * 180}deg` }] }));
|
|
71
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native.Pressable, {
|
|
72
|
+
ref: (0, react.useCallback)((node) => {
|
|
73
|
+
triggerRef.current = node;
|
|
74
|
+
}, [triggerRef]),
|
|
75
|
+
testID: "select-trigger",
|
|
76
|
+
onPress: (0, react.useCallback)(() => {
|
|
77
|
+
if (!isInteractive) return;
|
|
78
|
+
if (open) {
|
|
79
|
+
setOpen(false);
|
|
80
|
+
setHighlightedValue(null);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
require_components_internal_Overlay_measureTrigger.measureTrigger(triggerRef.current, triggerRect, setTriggerRect);
|
|
84
|
+
setHighlightedValue(null);
|
|
85
|
+
setOpen(true);
|
|
86
|
+
}, [
|
|
87
|
+
isInteractive,
|
|
88
|
+
open,
|
|
89
|
+
setHighlightedValue,
|
|
90
|
+
setOpen,
|
|
91
|
+
setTriggerRect,
|
|
92
|
+
triggerRect,
|
|
93
|
+
triggerRef
|
|
94
|
+
]),
|
|
95
|
+
disabled: !isInteractive,
|
|
96
|
+
style: {
|
|
97
|
+
width,
|
|
98
|
+
alignSelf: "stretch"
|
|
99
|
+
},
|
|
100
|
+
accessibilityRole: "button",
|
|
101
|
+
accessibilityLabel: displayText || uid,
|
|
102
|
+
accessibilityState: {
|
|
103
|
+
disabled: !isInteractive,
|
|
104
|
+
expanded: open,
|
|
105
|
+
selected: hasValue
|
|
106
|
+
},
|
|
107
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_native.View, {
|
|
108
|
+
style: inputWrapperStyle,
|
|
109
|
+
pointerEvents: "none",
|
|
110
|
+
children: [
|
|
111
|
+
startIcon ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_IconSlot.IconSlot, {
|
|
112
|
+
icon: startIcon,
|
|
113
|
+
variant: "outline",
|
|
114
|
+
style: generated_styles.inputStyles.startIcon
|
|
115
|
+
}) : null,
|
|
116
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native.View, {
|
|
117
|
+
style: textContainerStyle,
|
|
118
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native.Text, {
|
|
119
|
+
numberOfLines: 1,
|
|
120
|
+
style: textInputStyle,
|
|
121
|
+
children: displayText
|
|
122
|
+
})
|
|
123
|
+
}),
|
|
124
|
+
useAnimatedChevron || endIcon ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native_reanimated.default.View, {
|
|
125
|
+
style: useAnimatedChevron ? chevronAnimatedStyle : void 0,
|
|
126
|
+
testID: "select-chevron",
|
|
127
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_IconSlot.IconSlot, {
|
|
128
|
+
icon: useAnimatedChevron ? "ChevronDown" : endIcon,
|
|
129
|
+
size: "sm",
|
|
130
|
+
variant: "outline",
|
|
131
|
+
style: generated_styles.inputStyles.endIcon
|
|
132
|
+
})
|
|
133
|
+
}) : null
|
|
134
|
+
]
|
|
135
|
+
})
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
SelectTrigger.displayName = "SelectTrigger";
|
|
139
|
+
//#endregion
|
|
140
|
+
exports.SelectTrigger = SelectTrigger;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
|
|
2
|
+
import { IconSlotType } from "../IconSlot.cjs";
|
|
3
|
+
import * as _$react from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Select/SelectTrigger.d.ts
|
|
6
|
+
interface SelectTriggerProps {
|
|
7
|
+
startIcon?: IconSlotType;
|
|
8
|
+
endIcon?: IconSlotType;
|
|
9
|
+
}
|
|
10
|
+
declare const SelectTrigger: _$react.NamedExoticComponent<SelectTriggerProps>;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { SelectTrigger, type SelectTriggerProps };
|
|
13
|
+
//# sourceMappingURL=SelectTrigger.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectTrigger.d.cts","names":[],"sources":["../../../src/components/Select/SelectTrigger.tsx"],"mappings":";;;;;UAgBU,kBAAA;EACR,SAAA,GAAY,YAAA;EACZ,OAAA,GAAU,YAAA;AAAA;AAAA,cAGN,aAAA,EAAa,OAAA,CAAA,oBAAA,CAAA,kBAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
|
|
2
|
+
import { IconSlotType } from "../IconSlot.js";
|
|
3
|
+
import * as _$react from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Select/SelectTrigger.d.ts
|
|
6
|
+
interface SelectTriggerProps {
|
|
7
|
+
startIcon?: IconSlotType;
|
|
8
|
+
endIcon?: IconSlotType;
|
|
9
|
+
}
|
|
10
|
+
declare const SelectTrigger: _$react.NamedExoticComponent<SelectTriggerProps>;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { SelectTrigger, type SelectTriggerProps };
|
|
13
|
+
//# sourceMappingURL=SelectTrigger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectTrigger.d.ts","names":[],"sources":["../../../src/components/Select/SelectTrigger.tsx"],"mappings":";;;;;UAgBU,kBAAA;EACR,SAAA,GAAY,YAAA;EACZ,OAAA,GAAU,YAAA;AAAA;AAAA,cAGN,aAAA,EAAa,OAAA,CAAA,oBAAA,CAAA,kBAAA"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
import { IconSlot } from "../IconSlot.js";
|
|
3
|
+
import { measureTrigger } from "../internal/Overlay/measureTrigger.js";
|
|
4
|
+
import { useSelectContext, useSelectFieldContext } from "./selectContext.js";
|
|
5
|
+
import { memo, useCallback, useMemo } from "react";
|
|
6
|
+
import { Pressable, Text, View } from "react-native";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { inputStyles } from "../../../generated/styles";
|
|
9
|
+
import Animated, { Easing, useAnimatedStyle, useDerivedValue, withTiming } from "react-native-reanimated";
|
|
10
|
+
//#region src/components/Select/SelectTrigger.tsx
|
|
11
|
+
const SelectTrigger = memo(function SelectTrigger({ startIcon, endIcon }) {
|
|
12
|
+
const { value, open, setOpen, triggerRef, triggerRect, setTriggerRect, getItemLabel, setHighlightedValue, reduceMotion } = useSelectContext();
|
|
13
|
+
const { size, disabled, readOnly, hasError, placeholder, uid, width } = useSelectFieldContext();
|
|
14
|
+
const hasValue = value.length > 0;
|
|
15
|
+
const valueState = hasValue ? "filled" : "empty";
|
|
16
|
+
const isInteractive = !readOnly && !disabled;
|
|
17
|
+
const useAnimatedChevron = endIcon === void 0;
|
|
18
|
+
const displayText = hasValue ? getItemLabel(value) ?? value : placeholder ?? "";
|
|
19
|
+
inputStyles.useVariants({
|
|
20
|
+
size,
|
|
21
|
+
value: valueState,
|
|
22
|
+
pressed: open,
|
|
23
|
+
readonly: readOnly,
|
|
24
|
+
invalid: hasError
|
|
25
|
+
});
|
|
26
|
+
const inputWrapperStyle = useMemo(() => [
|
|
27
|
+
inputStyles.inputWrapper,
|
|
28
|
+
inputStyles.inputWrapperStatic,
|
|
29
|
+
inputStyles.inputWrapperDynamic,
|
|
30
|
+
{
|
|
31
|
+
flexDirection: "row",
|
|
32
|
+
alignItems: "center",
|
|
33
|
+
width,
|
|
34
|
+
alignSelf: "stretch"
|
|
35
|
+
}
|
|
36
|
+
], [
|
|
37
|
+
inputStyles.inputWrapper,
|
|
38
|
+
inputStyles.inputWrapperDynamic,
|
|
39
|
+
inputStyles.inputWrapperStatic,
|
|
40
|
+
width
|
|
41
|
+
]);
|
|
42
|
+
const textContainerStyle = useMemo(() => [{
|
|
43
|
+
flex: 1,
|
|
44
|
+
justifyContent: "center"
|
|
45
|
+
}, typeof inputStyles.input.height === "number" ? { minHeight: inputStyles.input.height } : null], [inputStyles.input]);
|
|
46
|
+
const textInputStyle = useMemo(() => [
|
|
47
|
+
{
|
|
48
|
+
fontFamily: inputStyles.inputWrapperStatic.fontFamily,
|
|
49
|
+
fontSize: inputStyles.inputWrapperStatic.fontSize,
|
|
50
|
+
letterSpacing: inputStyles.inputWrapperStatic.letterSpacing,
|
|
51
|
+
lineHeight: inputStyles.inputWrapperStatic.fontSize,
|
|
52
|
+
paddingVertical: 0
|
|
53
|
+
},
|
|
54
|
+
inputStyles.input,
|
|
55
|
+
{ height: void 0 },
|
|
56
|
+
!hasValue ? inputStyles.inputPlaceholder : null
|
|
57
|
+
], [
|
|
58
|
+
hasValue,
|
|
59
|
+
inputStyles.input,
|
|
60
|
+
inputStyles.inputPlaceholder,
|
|
61
|
+
inputStyles.inputWrapperStatic
|
|
62
|
+
]);
|
|
63
|
+
const chevronProgress = useDerivedValue(() => withTiming(open ? 1 : 0, {
|
|
64
|
+
duration: reduceMotion ? 0 : 200,
|
|
65
|
+
easing: Easing.out(Easing.ease)
|
|
66
|
+
}), [open, reduceMotion]);
|
|
67
|
+
const chevronAnimatedStyle = useAnimatedStyle(() => ({ transform: [{ rotate: `${chevronProgress.value * 180}deg` }] }));
|
|
68
|
+
return /* @__PURE__ */ jsx(Pressable, {
|
|
69
|
+
ref: useCallback((node) => {
|
|
70
|
+
triggerRef.current = node;
|
|
71
|
+
}, [triggerRef]),
|
|
72
|
+
testID: "select-trigger",
|
|
73
|
+
onPress: useCallback(() => {
|
|
74
|
+
if (!isInteractive) return;
|
|
75
|
+
if (open) {
|
|
76
|
+
setOpen(false);
|
|
77
|
+
setHighlightedValue(null);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
measureTrigger(triggerRef.current, triggerRect, setTriggerRect);
|
|
81
|
+
setHighlightedValue(null);
|
|
82
|
+
setOpen(true);
|
|
83
|
+
}, [
|
|
84
|
+
isInteractive,
|
|
85
|
+
open,
|
|
86
|
+
setHighlightedValue,
|
|
87
|
+
setOpen,
|
|
88
|
+
setTriggerRect,
|
|
89
|
+
triggerRect,
|
|
90
|
+
triggerRef
|
|
91
|
+
]),
|
|
92
|
+
disabled: !isInteractive,
|
|
93
|
+
style: {
|
|
94
|
+
width,
|
|
95
|
+
alignSelf: "stretch"
|
|
96
|
+
},
|
|
97
|
+
accessibilityRole: "button",
|
|
98
|
+
accessibilityLabel: displayText || uid,
|
|
99
|
+
accessibilityState: {
|
|
100
|
+
disabled: !isInteractive,
|
|
101
|
+
expanded: open,
|
|
102
|
+
selected: hasValue
|
|
103
|
+
},
|
|
104
|
+
children: /* @__PURE__ */ jsxs(View, {
|
|
105
|
+
style: inputWrapperStyle,
|
|
106
|
+
pointerEvents: "none",
|
|
107
|
+
children: [
|
|
108
|
+
startIcon ? /* @__PURE__ */ jsx(IconSlot, {
|
|
109
|
+
icon: startIcon,
|
|
110
|
+
variant: "outline",
|
|
111
|
+
style: inputStyles.startIcon
|
|
112
|
+
}) : null,
|
|
113
|
+
/* @__PURE__ */ jsx(View, {
|
|
114
|
+
style: textContainerStyle,
|
|
115
|
+
children: /* @__PURE__ */ jsx(Text, {
|
|
116
|
+
numberOfLines: 1,
|
|
117
|
+
style: textInputStyle,
|
|
118
|
+
children: displayText
|
|
119
|
+
})
|
|
120
|
+
}),
|
|
121
|
+
useAnimatedChevron || endIcon ? /* @__PURE__ */ jsx(Animated.View, {
|
|
122
|
+
style: useAnimatedChevron ? chevronAnimatedStyle : void 0,
|
|
123
|
+
testID: "select-chevron",
|
|
124
|
+
children: /* @__PURE__ */ jsx(IconSlot, {
|
|
125
|
+
icon: useAnimatedChevron ? "ChevronDown" : endIcon,
|
|
126
|
+
size: "sm",
|
|
127
|
+
variant: "outline",
|
|
128
|
+
style: inputStyles.endIcon
|
|
129
|
+
})
|
|
130
|
+
}) : null
|
|
131
|
+
]
|
|
132
|
+
})
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
SelectTrigger.displayName = "SelectTrigger";
|
|
136
|
+
//#endregion
|
|
137
|
+
export { SelectTrigger };
|
|
138
|
+
|
|
139
|
+
//# sourceMappingURL=SelectTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectTrigger.js","names":["RNPressable","RNView","RNText"],"sources":["../../../src/components/Select/SelectTrigger.tsx"],"sourcesContent":["import { memo, useCallback, useMemo } from 'react';\nimport type { View } from 'react-native';\nimport { Pressable as RNPressable, Text as RNText, View as RNView } from 'react-native';\nimport Animated, {\n Easing,\n useAnimatedStyle,\n useDerivedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { inputStyles } from '../../../generated/styles';\nimport type { IconSlotType } from '../IconSlot';\nimport { IconSlot } from '../IconSlot';\nimport { measureTrigger } from '../internal/Overlay';\nimport { useSelectContext, useSelectFieldContext } from './selectContext';\n\ninterface SelectTriggerProps {\n startIcon?: IconSlotType;\n endIcon?: IconSlotType;\n}\n\nconst SelectTrigger = memo(function SelectTrigger({ startIcon, endIcon }: SelectTriggerProps) {\n const {\n value,\n open,\n setOpen,\n triggerRef,\n triggerRect,\n setTriggerRect,\n getItemLabel,\n setHighlightedValue,\n reduceMotion,\n } = useSelectContext();\n const { size, disabled, readOnly, hasError, placeholder, uid, width } = useSelectFieldContext();\n\n const hasValue = value.length > 0;\n const valueState = hasValue ? 'filled' : 'empty';\n const isInteractive = !readOnly && !disabled;\n const useAnimatedChevron = endIcon === undefined;\n const displayText = hasValue ? (getItemLabel(value) ?? value) : (placeholder ?? '');\n\n inputStyles.useVariants({\n size,\n value: valueState,\n pressed: open,\n readonly: readOnly,\n invalid: hasError,\n });\n\n const inputWrapperStyle = useMemo(\n () => [\n inputStyles.inputWrapper,\n inputStyles.inputWrapperStatic,\n inputStyles.inputWrapperDynamic,\n {\n flexDirection: 'row' as const,\n alignItems: 'center' as const,\n width,\n alignSelf: 'stretch' as const,\n },\n ],\n [\n inputStyles.inputWrapper,\n inputStyles.inputWrapperDynamic,\n inputStyles.inputWrapperStatic,\n width,\n ],\n );\n\n const textContainerStyle = useMemo(\n () => [\n {\n flex: 1,\n justifyContent: 'center' as const,\n },\n typeof inputStyles.input.height === 'number' ? { minHeight: inputStyles.input.height } : null,\n ],\n [inputStyles.input],\n );\n\n const textInputStyle = useMemo(\n () => [\n {\n fontFamily: inputStyles.inputWrapperStatic.fontFamily,\n fontSize: inputStyles.inputWrapperStatic.fontSize,\n letterSpacing: inputStyles.inputWrapperStatic.letterSpacing,\n // Match TextInput vertical centering: wrapper lineHeight is for layout, not single-line text.\n lineHeight: inputStyles.inputWrapperStatic.fontSize,\n paddingVertical: 0,\n },\n inputStyles.input,\n { height: undefined },\n !hasValue ? inputStyles.inputPlaceholder : null,\n ],\n [hasValue, inputStyles.input, inputStyles.inputPlaceholder, inputStyles.inputWrapperStatic],\n );\n\n const chevronProgress = useDerivedValue(\n () =>\n withTiming(open ? 1 : 0, {\n duration: reduceMotion ? 0 : 200,\n easing: Easing.out(Easing.ease),\n }),\n [open, reduceMotion],\n );\n\n const chevronAnimatedStyle = useAnimatedStyle(() => ({\n transform: [{ rotate: `${chevronProgress.value * 180}deg` }],\n }));\n\n const handleRef = useCallback(\n (node: View | null) => {\n triggerRef.current = node;\n },\n [triggerRef],\n );\n\n const handlePress = useCallback(() => {\n if (!isInteractive) {\n return;\n }\n\n if (open) {\n setOpen(false);\n setHighlightedValue(null);\n return;\n }\n\n measureTrigger(triggerRef.current, triggerRect, setTriggerRect);\n setHighlightedValue(null);\n setOpen(true);\n }, [isInteractive, open, setHighlightedValue, setOpen, setTriggerRect, triggerRect, triggerRef]);\n\n return (\n <RNPressable\n ref={handleRef}\n testID=\"select-trigger\"\n onPress={handlePress}\n disabled={!isInteractive}\n style={{ width, alignSelf: 'stretch' }}\n accessibilityRole=\"button\"\n accessibilityLabel={displayText || uid}\n accessibilityState={{\n disabled: !isInteractive,\n expanded: open,\n selected: hasValue,\n }}\n >\n <RNView style={inputWrapperStyle} pointerEvents=\"none\">\n {startIcon ? (\n <IconSlot icon={startIcon} variant=\"outline\" style={inputStyles.startIcon} />\n ) : null}\n\n <RNView style={textContainerStyle}>\n <RNText numberOfLines={1} style={textInputStyle}>\n {displayText}\n </RNText>\n </RNView>\n\n {useAnimatedChevron || endIcon ? (\n <Animated.View\n style={useAnimatedChevron ? chevronAnimatedStyle : undefined}\n testID=\"select-chevron\"\n >\n <IconSlot\n icon={useAnimatedChevron ? 'ChevronDown' : endIcon!}\n size=\"sm\"\n variant=\"outline\"\n style={inputStyles.endIcon}\n />\n </Animated.View>\n ) : null}\n </RNView>\n </RNPressable>\n );\n});\n\nSelectTrigger.displayName = 'SelectTrigger';\n\nexport { SelectTrigger, type SelectTriggerProps };\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const require_components_Select_Select = require("./Select.cjs");
|
|
4
|
+
const require_components_Select_SelectContent = require("./SelectContent.cjs");
|
|
5
|
+
const require_components_Select_SelectItem = require("./SelectItem.cjs");
|
|
6
|
+
exports.Select = require_components_Select_Select.Select;
|
|
7
|
+
exports.SelectContent = require_components_Select_SelectContent.SelectContent;
|
|
8
|
+
exports.SelectItem = require_components_Select_SelectItem.SelectItem;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
import { Select, SelectProps } from "./Select.cjs";
|
|
3
|
+
import { SelectContent, SelectContentProps } from "./SelectContent.cjs";
|
|
4
|
+
import { SelectItem, SelectItemProps } from "./SelectItem.cjs";
|
|
5
|
+
export { Select, SelectContent, type SelectContentProps, SelectItem, type SelectItemProps, type SelectProps };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
import { Select, SelectProps } from "./Select.js";
|
|
3
|
+
import { SelectContent, SelectContentProps } from "./SelectContent.js";
|
|
4
|
+
import { SelectItem, SelectItemProps } from "./SelectItem.js";
|
|
5
|
+
export { Select, SelectContent, type SelectContentProps, SelectItem, type SelectItemProps, type SelectProps };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
let react = require("react");
|
|
5
|
+
//#region src/components/Select/selectContext.tsx
|
|
6
|
+
const SelectContext = (0, react.createContext)(null);
|
|
7
|
+
const SelectFieldContext = (0, react.createContext)(null);
|
|
8
|
+
function useSelectContext() {
|
|
9
|
+
const context = (0, react.useContext)(SelectContext);
|
|
10
|
+
if (!context) throw new Error("Select compound components must be used within Select");
|
|
11
|
+
return context;
|
|
12
|
+
}
|
|
13
|
+
function useSelectFieldContext() {
|
|
14
|
+
const context = (0, react.useContext)(SelectFieldContext);
|
|
15
|
+
if (!context) throw new Error("Select field components must be used within Select");
|
|
16
|
+
return context;
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
exports.SelectContext = SelectContext;
|
|
20
|
+
exports.SelectFieldContext = SelectFieldContext;
|
|
21
|
+
exports.useSelectContext = useSelectContext;
|
|
22
|
+
exports.useSelectFieldContext = useSelectFieldContext;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
import { SelectContextValue, SelectFieldContextValue } from "./types.cjs";
|
|
3
|
+
import * as _$react from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Select/selectContext.d.ts
|
|
6
|
+
declare const SelectContext: _$react.Context<SelectContextValue | null>;
|
|
7
|
+
declare const SelectFieldContext: _$react.Context<SelectFieldContextValue | null>;
|
|
8
|
+
declare function useSelectContext(): SelectContextValue;
|
|
9
|
+
declare function useSelectFieldContext(): SelectFieldContextValue;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { SelectContext, SelectFieldContext, useSelectContext, useSelectFieldContext };
|
|
12
|
+
//# sourceMappingURL=selectContext.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectContext.d.cts","names":[],"sources":["../../../src/components/Select/selectContext.tsx"],"mappings":";;;;;cAIa,aAAA,EAAa,OAAA,CAAA,OAAA,CAAA,kBAAA;AAAA,cACb,kBAAA,EAAkB,OAAA,CAAA,OAAA,CAAA,uBAAA;AAAA,iBAEf,gBAAA,CAAA,GAAoB,kBAAA;AAAA,iBASpB,qBAAA,CAAA,GAAyB,uBAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
import { SelectContextValue, SelectFieldContextValue } from "./types.js";
|
|
3
|
+
import * as _$react from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Select/selectContext.d.ts
|
|
6
|
+
declare const SelectContext: _$react.Context<SelectContextValue | null>;
|
|
7
|
+
declare const SelectFieldContext: _$react.Context<SelectFieldContextValue | null>;
|
|
8
|
+
declare function useSelectContext(): SelectContextValue;
|
|
9
|
+
declare function useSelectFieldContext(): SelectFieldContextValue;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { SelectContext, SelectFieldContext, useSelectContext, useSelectFieldContext };
|
|
12
|
+
//# sourceMappingURL=selectContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectContext.d.ts","names":[],"sources":["../../../src/components/Select/selectContext.tsx"],"mappings":";;;;;cAIa,aAAA,EAAa,OAAA,CAAA,OAAA,CAAA,kBAAA;AAAA,cACb,kBAAA,EAAkB,OAAA,CAAA,OAAA,CAAA,uBAAA;AAAA,iBAEf,gBAAA,CAAA,GAAoB,kBAAA;AAAA,iBASpB,qBAAA,CAAA,GAAyB,uBAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
//#region src/components/Select/selectContext.tsx
|
|
4
|
+
const SelectContext = createContext(null);
|
|
5
|
+
const SelectFieldContext = createContext(null);
|
|
6
|
+
function useSelectContext() {
|
|
7
|
+
const context = useContext(SelectContext);
|
|
8
|
+
if (!context) throw new Error("Select compound components must be used within Select");
|
|
9
|
+
return context;
|
|
10
|
+
}
|
|
11
|
+
function useSelectFieldContext() {
|
|
12
|
+
const context = useContext(SelectFieldContext);
|
|
13
|
+
if (!context) throw new Error("Select field components must be used within Select");
|
|
14
|
+
return context;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { SelectContext, SelectFieldContext, useSelectContext, useSelectFieldContext };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=selectContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectContext.js","names":[],"sources":["../../../src/components/Select/selectContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport type { SelectContextValue, SelectFieldContextValue } from './types';\n\nexport const SelectContext = createContext<SelectContextValue | null>(null);\nexport const SelectFieldContext = createContext<SelectFieldContextValue | null>(null);\n\nexport function useSelectContext(): SelectContextValue {\n const context = useContext(SelectContext);\n if (!context) {\n throw new Error('Select compound components must be used within Select');\n }\n\n return context;\n}\n\nexport function useSelectFieldContext(): SelectFieldContextValue {\n const context = useContext(SelectFieldContext);\n if (!context) {\n throw new Error('Select field components must be used within Select');\n }\n\n return context;\n}\n"],"mappings":";;;AAIA,MAAa,gBAAgB,cAAyC,KAAK;AAC3E,MAAa,qBAAqB,cAA8C,KAAK;AAErF,SAAgB,mBAAuC;CACrD,MAAM,UAAU,WAAW,cAAc;CACzC,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,wDAAwD;CAG1E,OAAO;;AAGT,SAAgB,wBAAiD;CAC/D,MAAM,UAAU,WAAW,mBAAmB;CAC9C,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,qDAAqD;CAGvE,OAAO"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
//#region src/components/Select/selectItemTheme.ts
|
|
4
|
+
function getSelectItemLayerPath(layer, active, state) {
|
|
5
|
+
return `selectItem/item/variant/default/active/${active}/${layer}/${state}`;
|
|
6
|
+
}
|
|
7
|
+
function getSelectItemSizeLayerPath(layer) {
|
|
8
|
+
return `selectItem/size/default/${layer}/rest`;
|
|
9
|
+
}
|
|
10
|
+
function mapInteractionToMobileState(state) {
|
|
11
|
+
if (state === "pressed" || state === "focused") return "pressed";
|
|
12
|
+
return "rest";
|
|
13
|
+
}
|
|
14
|
+
function getSelectItemLayerStyle(theme, layer, active, state) {
|
|
15
|
+
const style = theme.components[getSelectItemLayerPath(layer, active, state)];
|
|
16
|
+
return style && typeof style === "object" ? style : {};
|
|
17
|
+
}
|
|
18
|
+
function getSelectItemSizeLayerStyle(theme, layer) {
|
|
19
|
+
const style = theme.components[getSelectItemSizeLayerPath(layer)];
|
|
20
|
+
return style && typeof style === "object" ? style : {};
|
|
21
|
+
}
|
|
22
|
+
function resolveSelectItemInteractionState({ isPressed, isHighlighted }) {
|
|
23
|
+
if (isPressed) return "pressed";
|
|
24
|
+
if (isHighlighted) return "focused";
|
|
25
|
+
return "rest";
|
|
26
|
+
}
|
|
27
|
+
function getMergedSelectItemLayerStyle(theme, layer, interaction, isSelected) {
|
|
28
|
+
if (layer === "endIcon" && !isSelected) return {};
|
|
29
|
+
const active = isSelected ? "on" : "off";
|
|
30
|
+
const mobileState = mapInteractionToMobileState(interaction);
|
|
31
|
+
return {
|
|
32
|
+
...layer === "root" ? getSelectItemSizeLayerStyle(theme, "root") : {},
|
|
33
|
+
...layer === "text" ? getSelectItemSizeLayerStyle(theme, "text") : {},
|
|
34
|
+
...getSelectItemLayerStyle(theme, layer, active, mobileState)
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
exports.getMergedSelectItemLayerStyle = getMergedSelectItemLayerStyle;
|
|
39
|
+
exports.resolveSelectItemInteractionState = resolveSelectItemInteractionState;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
import { SelectItemInteractionState, SelectItemLayer } from "./types.cjs";
|
|
3
|
+
import { TextStyle, ViewStyle } from "react-native";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Select/selectItemTheme.d.ts
|
|
6
|
+
type SelectItemTheme = {
|
|
7
|
+
components: Record<string, any>;
|
|
8
|
+
};
|
|
9
|
+
declare function resolveSelectItemInteractionState({
|
|
10
|
+
isPressed,
|
|
11
|
+
isHighlighted
|
|
12
|
+
}: {
|
|
13
|
+
isPressed: boolean;
|
|
14
|
+
isHighlighted: boolean;
|
|
15
|
+
}): SelectItemInteractionState;
|
|
16
|
+
declare function getMergedSelectItemLayerStyle(theme: SelectItemTheme, layer: SelectItemLayer, interaction: SelectItemInteractionState, isSelected: boolean): ViewStyle | TextStyle;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { getMergedSelectItemLayerStyle, resolveSelectItemInteractionState };
|
|
19
|
+
//# sourceMappingURL=selectItemTheme.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectItemTheme.d.cts","names":[],"sources":["../../../src/components/Select/selectItemTheme.ts"],"mappings":";;;;;KAIK,eAAA;EAEH,UAAA,EAAY,MAAA;AAAA;AAAA,iBAyCL,iCAAA,CAAA;EACP,SAAA;EACA;AAAA;EAEA,SAAA;EACA,aAAA;AAAA,IACE,0BAAA;AAAA,iBAYK,6BAAA,CACP,KAAA,EAAO,eAAA,EACP,KAAA,EAAO,eAAA,EACP,WAAA,EAAa,0BAAA,EACb,UAAA,YACC,SAAA,GAAY,SAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
import { SelectItemInteractionState, SelectItemLayer } from "./types.js";
|
|
3
|
+
import { TextStyle, ViewStyle } from "react-native";
|
|
4
|
+
|
|
5
|
+
//#region src/components/Select/selectItemTheme.d.ts
|
|
6
|
+
type SelectItemTheme = {
|
|
7
|
+
components: Record<string, any>;
|
|
8
|
+
};
|
|
9
|
+
declare function resolveSelectItemInteractionState({
|
|
10
|
+
isPressed,
|
|
11
|
+
isHighlighted
|
|
12
|
+
}: {
|
|
13
|
+
isPressed: boolean;
|
|
14
|
+
isHighlighted: boolean;
|
|
15
|
+
}): SelectItemInteractionState;
|
|
16
|
+
declare function getMergedSelectItemLayerStyle(theme: SelectItemTheme, layer: SelectItemLayer, interaction: SelectItemInteractionState, isSelected: boolean): ViewStyle | TextStyle;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { getMergedSelectItemLayerStyle, resolveSelectItemInteractionState };
|
|
19
|
+
//# sourceMappingURL=selectItemTheme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectItemTheme.d.ts","names":[],"sources":["../../../src/components/Select/selectItemTheme.ts"],"mappings":";;;;;KAIK,eAAA;EAEH,UAAA,EAAY,MAAA;AAAA;AAAA,iBAyCL,iCAAA,CAAA;EACP,SAAA;EACA;AAAA;EAEA,SAAA;EACA,aAAA;AAAA,IACE,0BAAA;AAAA,iBAYK,6BAAA,CACP,KAAA,EAAO,eAAA,EACP,KAAA,EAAO,eAAA,EACP,WAAA,EAAa,0BAAA,EACb,UAAA,YACC,SAAA,GAAY,SAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
//#region src/components/Select/selectItemTheme.ts
|
|
3
|
+
function getSelectItemLayerPath(layer, active, state) {
|
|
4
|
+
return `selectItem/item/variant/default/active/${active}/${layer}/${state}`;
|
|
5
|
+
}
|
|
6
|
+
function getSelectItemSizeLayerPath(layer) {
|
|
7
|
+
return `selectItem/size/default/${layer}/rest`;
|
|
8
|
+
}
|
|
9
|
+
function mapInteractionToMobileState(state) {
|
|
10
|
+
if (state === "pressed" || state === "focused") return "pressed";
|
|
11
|
+
return "rest";
|
|
12
|
+
}
|
|
13
|
+
function getSelectItemLayerStyle(theme, layer, active, state) {
|
|
14
|
+
const style = theme.components[getSelectItemLayerPath(layer, active, state)];
|
|
15
|
+
return style && typeof style === "object" ? style : {};
|
|
16
|
+
}
|
|
17
|
+
function getSelectItemSizeLayerStyle(theme, layer) {
|
|
18
|
+
const style = theme.components[getSelectItemSizeLayerPath(layer)];
|
|
19
|
+
return style && typeof style === "object" ? style : {};
|
|
20
|
+
}
|
|
21
|
+
function resolveSelectItemInteractionState({ isPressed, isHighlighted }) {
|
|
22
|
+
if (isPressed) return "pressed";
|
|
23
|
+
if (isHighlighted) return "focused";
|
|
24
|
+
return "rest";
|
|
25
|
+
}
|
|
26
|
+
function getMergedSelectItemLayerStyle(theme, layer, interaction, isSelected) {
|
|
27
|
+
if (layer === "endIcon" && !isSelected) return {};
|
|
28
|
+
const active = isSelected ? "on" : "off";
|
|
29
|
+
const mobileState = mapInteractionToMobileState(interaction);
|
|
30
|
+
return {
|
|
31
|
+
...layer === "root" ? getSelectItemSizeLayerStyle(theme, "root") : {},
|
|
32
|
+
...layer === "text" ? getSelectItemSizeLayerStyle(theme, "text") : {},
|
|
33
|
+
...getSelectItemLayerStyle(theme, layer, active, mobileState)
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { getMergedSelectItemLayerStyle, resolveSelectItemInteractionState };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=selectItemTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectItemTheme.js","names":[],"sources":["../../../src/components/Select/selectItemTheme.ts"],"sourcesContent":["import type { TextStyle, ViewStyle } from 'react-native';\n\nimport type { SelectItemInteractionState, SelectItemLayer } from './types';\n\ntype SelectItemTheme = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n components: Record<string, any>;\n};\n\nfunction getSelectItemLayerPath(\n layer: SelectItemLayer,\n active: 'on' | 'off',\n state: 'rest' | 'pressed',\n): string {\n return `selectItem/item/variant/default/active/${active}/${layer}/${state}`;\n}\n\nfunction getSelectItemSizeLayerPath(layer: 'root' | 'text'): string {\n return `selectItem/size/default/${layer}/rest`;\n}\n\nfunction mapInteractionToMobileState(state: SelectItemInteractionState): 'rest' | 'pressed' {\n if (state === 'pressed' || state === 'focused') {\n return 'pressed';\n }\n\n return 'rest';\n}\n\nfunction getSelectItemLayerStyle(\n theme: SelectItemTheme,\n layer: SelectItemLayer,\n active: 'on' | 'off',\n state: 'rest' | 'pressed',\n): ViewStyle | TextStyle {\n const style = theme.components[getSelectItemLayerPath(layer, active, state)];\n return style && typeof style === 'object' ? style : {};\n}\n\nfunction getSelectItemSizeLayerStyle(\n theme: SelectItemTheme,\n layer: 'root' | 'text',\n): ViewStyle | TextStyle {\n const style = theme.components[getSelectItemSizeLayerPath(layer)];\n return style && typeof style === 'object' ? style : {};\n}\n\nfunction resolveSelectItemInteractionState({\n isPressed,\n isHighlighted,\n}: {\n isPressed: boolean;\n isHighlighted: boolean;\n}): SelectItemInteractionState {\n if (isPressed) {\n return 'pressed';\n }\n\n if (isHighlighted) {\n return 'focused';\n }\n\n return 'rest';\n}\n\nfunction getMergedSelectItemLayerStyle(\n theme: SelectItemTheme,\n layer: SelectItemLayer,\n interaction: SelectItemInteractionState,\n isSelected: boolean,\n): ViewStyle | TextStyle {\n if (layer === 'endIcon' && !isSelected) {\n return {};\n }\n\n const active = isSelected ? 'on' : 'off';\n const mobileState = mapInteractionToMobileState(interaction);\n\n return {\n ...(layer === 'root' ? (getSelectItemSizeLayerStyle(theme, 'root') as object) : {}),\n ...(layer === 'text' ? (getSelectItemSizeLayerStyle(theme, 'text') as object) : {}),\n ...(getSelectItemLayerStyle(theme, layer, active, mobileState) as object),\n } as ViewStyle | TextStyle;\n}\n\nexport { getMergedSelectItemLayerStyle, resolveSelectItemInteractionState };\n"],"mappings":";;AASA,SAAS,uBACP,OACA,QACA,OACQ;CACR,OAAO,0CAA0C,OAAO,GAAG,MAAM,GAAG;;AAGtE,SAAS,2BAA2B,OAAgC;CAClE,OAAO,2BAA2B,MAAM;;AAG1C,SAAS,4BAA4B,OAAuD;CAC1F,IAAI,UAAU,aAAa,UAAU,WACnC,OAAO;CAGT,OAAO;;AAGT,SAAS,wBACP,OACA,OACA,QACA,OACuB;CACvB,MAAM,QAAQ,MAAM,WAAW,uBAAuB,OAAO,QAAQ,MAAM;CAC3E,OAAO,SAAS,OAAO,UAAU,WAAW,QAAQ,EAAE;;AAGxD,SAAS,4BACP,OACA,OACuB;CACvB,MAAM,QAAQ,MAAM,WAAW,2BAA2B,MAAM;CAChE,OAAO,SAAS,OAAO,UAAU,WAAW,QAAQ,EAAE;;AAGxD,SAAS,kCAAkC,EACzC,WACA,iBAI6B;CAC7B,IAAI,WACF,OAAO;CAGT,IAAI,eACF,OAAO;CAGT,OAAO;;AAGT,SAAS,8BACP,OACA,OACA,aACA,YACuB;CACvB,IAAI,UAAU,aAAa,CAAC,YAC1B,OAAO,EAAE;CAGX,MAAM,SAAS,aAAa,OAAO;CACnC,MAAM,cAAc,4BAA4B,YAAY;CAE5D,OAAO;EACL,GAAI,UAAU,SAAU,4BAA4B,OAAO,OAAO,GAAc,EAAE;EAClF,GAAI,UAAU,SAAU,4BAA4B,OAAO,OAAO,GAAc,EAAE;EAClF,GAAI,wBAAwB,OAAO,OAAO,QAAQ,YAAY;EAC/D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
|
|
2
|
+
import { InputSize } from "../../types/dist/index.cjs";
|
|
3
|
+
import { AnchoredRect } from "../internal/Overlay/types.cjs";
|
|
4
|
+
import { RefObject } from "react";
|
|
5
|
+
import { View } from "react-native";
|
|
6
|
+
|
|
7
|
+
//#region src/components/Select/types.d.ts
|
|
8
|
+
type SelectContentSize = 'default';
|
|
9
|
+
type SelectContentVariant = 'default';
|
|
10
|
+
type SelectItemSize = 'default';
|
|
11
|
+
type SelectItemVariant = 'default';
|
|
12
|
+
interface SelectFieldContextValue {
|
|
13
|
+
size: InputSize;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
readOnly?: boolean;
|
|
16
|
+
required?: boolean;
|
|
17
|
+
hasError?: boolean;
|
|
18
|
+
width: number | `${number}%` | '100%';
|
|
19
|
+
reduceMotion?: boolean;
|
|
20
|
+
placeholder?: string;
|
|
21
|
+
uid: string;
|
|
22
|
+
}
|
|
23
|
+
interface SelectContextValue {
|
|
24
|
+
value: string;
|
|
25
|
+
setValue: (value: string) => void;
|
|
26
|
+
open: boolean;
|
|
27
|
+
setOpen: (open: boolean) => void;
|
|
28
|
+
triggerRef: RefObject<View | null>;
|
|
29
|
+
triggerRect: AnchoredRect | null;
|
|
30
|
+
setTriggerRect: (rect: AnchoredRect | null) => void;
|
|
31
|
+
registerItem: (value: string, label: string) => void;
|
|
32
|
+
unregisterItem: (value: string) => void;
|
|
33
|
+
getItemLabel: (value: string) => string | undefined;
|
|
34
|
+
highlightedValue: string | null;
|
|
35
|
+
setHighlightedValue: (value: string | null) => void;
|
|
36
|
+
field: SelectFieldContextValue;
|
|
37
|
+
reduceMotion: boolean;
|
|
38
|
+
}
|
|
39
|
+
type SelectItemInteractionState = 'rest' | 'pressed' | 'focused';
|
|
40
|
+
type SelectItemLayer = 'root' | 'text' | 'endIcon';
|
|
41
|
+
//#endregion
|
|
42
|
+
export { SelectContentSize, SelectContentVariant, SelectContextValue, SelectFieldContextValue, SelectItemInteractionState, SelectItemLayer, SelectItemSize, SelectItemVariant };
|
|
43
|
+
//# sourceMappingURL=types.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/components/Select/types.ts"],"mappings":";;;;;;;KAMY,iBAAA;AAAA,KACA,oBAAA;AAAA,KACA,cAAA;AAAA,KACA,iBAAA;AAAA,UAEK,uBAAA;EACf,IAAA,EAAM,SAAA;EACN,QAAA;EACA,QAAA;EACA,QAAA;EACA,QAAA;EACA,KAAA;EACA,YAAA;EACA,WAAA;EACA,GAAA;AAAA;AAAA,UAGe,kBAAA;EACf,KAAA;EACA,QAAA,GAAW,KAAA;EACX,IAAA;EACA,OAAA,GAAU,IAAA;EACV,UAAA,EAAY,SAAA,CAAU,IAAA;EACtB,WAAA,EAAa,YAAA;EACb,cAAA,GAAiB,IAAA,EAAM,YAAA;EACvB,YAAA,GAAe,KAAA,UAAe,KAAA;EAC9B,cAAA,GAAiB,KAAA;EACjB,YAAA,GAAe,KAAA;EACf,gBAAA;EACA,mBAAA,GAAsB,KAAA;EACtB,KAAA,EAAO,uBAAA;EACP,YAAA;AAAA;AAAA,KAGU,0BAAA;AAAA,KAEA,eAAA"}
|