orn-ui 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -2
- package/lib/commonjs/atoms/PressableScale.js +9 -10
- package/lib/commonjs/atoms/PressableScale.js.map +1 -1
- package/lib/commonjs/atoms/Skeleton.js +96 -0
- package/lib/commonjs/atoms/Skeleton.js.map +1 -0
- package/lib/commonjs/atoms/Transition.js +171 -0
- package/lib/commonjs/atoms/Transition.js.map +1 -0
- package/lib/commonjs/atoms/index.js +20 -0
- package/lib/commonjs/atoms/index.js.map +1 -1
- package/lib/commonjs/molecules/OptionCard.js +55 -22
- package/lib/commonjs/molecules/OptionCard.js.map +1 -1
- package/lib/commonjs/molecules/{ThemeToggle.js → SegmentedControl.js} +36 -36
- package/lib/commonjs/molecules/SegmentedControl.js.map +1 -0
- package/lib/commonjs/molecules/Stepper.js +124 -47
- package/lib/commonjs/molecules/Stepper.js.map +1 -1
- package/lib/commonjs/molecules/index.js +9 -3
- package/lib/commonjs/molecules/index.js.map +1 -1
- package/lib/commonjs/organisms/AlertProvider.js +26 -0
- package/lib/commonjs/organisms/AlertProvider.js.map +1 -1
- package/lib/commonjs/organisms/BottomSheet.js +118 -39
- package/lib/commonjs/organisms/BottomSheet.js.map +1 -1
- package/lib/commonjs/organisms/List.js +66 -44
- package/lib/commonjs/organisms/List.js.map +1 -1
- package/lib/commonjs/organisms/Modal.js +42 -87
- package/lib/commonjs/organisms/Modal.js.map +1 -1
- package/lib/commonjs/organisms/NavigationBar.js +205 -0
- package/lib/commonjs/organisms/NavigationBar.js.map +1 -0
- package/lib/commonjs/organisms/Screen.js +9 -2
- package/lib/commonjs/organisms/Screen.js.map +1 -1
- package/lib/commonjs/organisms/SearchList.js +97 -28
- package/lib/commonjs/organisms/SearchList.js.map +1 -1
- package/lib/commonjs/organisms/Select.js +222 -50
- package/lib/commonjs/organisms/Select.js.map +1 -1
- package/lib/commonjs/organisms/ThemeToggle.js +52 -0
- package/lib/commonjs/organisms/ThemeToggle.js.map +1 -0
- package/lib/commonjs/organisms/Toast.js +8 -22
- package/lib/commonjs/organisms/Toast.js.map +1 -1
- package/lib/commonjs/organisms/ToastProvider.js +24 -0
- package/lib/commonjs/organisms/ToastProvider.js.map +1 -1
- package/lib/commonjs/organisms/Wizard.js +22 -2
- package/lib/commonjs/organisms/Wizard.js.map +1 -1
- package/lib/commonjs/organisms/imperativeBridge.js +28 -0
- package/lib/commonjs/organisms/imperativeBridge.js.map +1 -0
- package/lib/commonjs/organisms/index.js +50 -0
- package/lib/commonjs/organisms/index.js.map +1 -1
- package/lib/commonjs/theme/colors.js +207 -0
- package/lib/commonjs/theme/colors.js.map +1 -0
- package/lib/commonjs/theme/createTheme.js +25 -2
- package/lib/commonjs/theme/createTheme.js.map +1 -1
- package/lib/commonjs/theme/index.js +25 -0
- package/lib/commonjs/theme/index.js.map +1 -1
- package/lib/commonjs/theme/palettes.js +5 -2
- package/lib/commonjs/theme/palettes.js.map +1 -1
- package/lib/module/atoms/PressableScale.js +9 -10
- package/lib/module/atoms/PressableScale.js.map +1 -1
- package/lib/module/atoms/Skeleton.js +91 -0
- package/lib/module/atoms/Skeleton.js.map +1 -0
- package/lib/module/atoms/Transition.js +165 -0
- package/lib/module/atoms/Transition.js.map +1 -0
- package/lib/module/atoms/index.js +2 -0
- package/lib/module/atoms/index.js.map +1 -1
- package/lib/module/molecules/OptionCard.js +56 -23
- package/lib/module/molecules/OptionCard.js.map +1 -1
- package/lib/module/molecules/{ThemeToggle.js → SegmentedControl.js} +36 -36
- package/lib/module/molecules/SegmentedControl.js.map +1 -0
- package/lib/module/molecules/Stepper.js +125 -49
- package/lib/module/molecules/Stepper.js.map +1 -1
- package/lib/module/molecules/index.js +2 -2
- package/lib/module/molecules/index.js.map +1 -1
- package/lib/module/organisms/AlertProvider.js +24 -1
- package/lib/module/organisms/AlertProvider.js.map +1 -1
- package/lib/module/organisms/BottomSheet.js +120 -41
- package/lib/module/organisms/BottomSheet.js.map +1 -1
- package/lib/module/organisms/List.js +68 -46
- package/lib/module/organisms/List.js.map +1 -1
- package/lib/module/organisms/Modal.js +44 -89
- package/lib/module/organisms/Modal.js.map +1 -1
- package/lib/module/organisms/NavigationBar.js +200 -0
- package/lib/module/organisms/NavigationBar.js.map +1 -0
- package/lib/module/organisms/Screen.js +9 -2
- package/lib/module/organisms/Screen.js.map +1 -1
- package/lib/module/organisms/SearchList.js +98 -29
- package/lib/module/organisms/SearchList.js.map +1 -1
- package/lib/module/organisms/Select.js +224 -52
- package/lib/module/organisms/Select.js.map +1 -1
- package/lib/module/organisms/ThemeToggle.js +47 -0
- package/lib/module/organisms/ThemeToggle.js.map +1 -0
- package/lib/module/organisms/Toast.js +10 -24
- package/lib/module/organisms/Toast.js.map +1 -1
- package/lib/module/organisms/ToastProvider.js +21 -0
- package/lib/module/organisms/ToastProvider.js.map +1 -1
- package/lib/module/organisms/Wizard.js +23 -3
- package/lib/module/organisms/Wizard.js.map +1 -1
- package/lib/module/organisms/imperativeBridge.js +24 -0
- package/lib/module/organisms/imperativeBridge.js.map +1 -0
- package/lib/module/organisms/index.js +4 -2
- package/lib/module/organisms/index.js.map +1 -1
- package/lib/module/theme/colors.js +194 -0
- package/lib/module/theme/colors.js.map +1 -0
- package/lib/module/theme/createTheme.js +25 -2
- package/lib/module/theme/createTheme.js.map +1 -1
- package/lib/module/theme/index.js +1 -0
- package/lib/module/theme/index.js.map +1 -1
- package/lib/module/theme/palettes.js +5 -2
- package/lib/module/theme/palettes.js.map +1 -1
- package/lib/typescript/atoms/PressableScale.d.ts +3 -2
- package/lib/typescript/atoms/PressableScale.d.ts.map +1 -1
- package/lib/typescript/atoms/Skeleton.d.ts +29 -0
- package/lib/typescript/atoms/Skeleton.d.ts.map +1 -0
- package/lib/typescript/atoms/Transition.d.ts +51 -0
- package/lib/typescript/atoms/Transition.d.ts.map +1 -0
- package/lib/typescript/atoms/index.d.ts +4 -0
- package/lib/typescript/atoms/index.d.ts.map +1 -1
- package/lib/typescript/molecules/OptionCard.d.ts +11 -6
- package/lib/typescript/molecules/OptionCard.d.ts.map +1 -1
- package/lib/typescript/molecules/SegmentedControl.d.ts +24 -0
- package/lib/typescript/molecules/SegmentedControl.d.ts.map +1 -0
- package/lib/typescript/molecules/Stepper.d.ts +35 -3
- package/lib/typescript/molecules/Stepper.d.ts.map +1 -1
- package/lib/typescript/molecules/index.d.ts +4 -4
- package/lib/typescript/molecules/index.d.ts.map +1 -1
- package/lib/typescript/organisms/AlertProvider.d.ts +9 -0
- package/lib/typescript/organisms/AlertProvider.d.ts.map +1 -1
- package/lib/typescript/organisms/BottomSheet.d.ts +26 -4
- package/lib/typescript/organisms/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/organisms/List.d.ts +9 -2
- package/lib/typescript/organisms/List.d.ts.map +1 -1
- package/lib/typescript/organisms/Modal.d.ts +3 -5
- package/lib/typescript/organisms/Modal.d.ts.map +1 -1
- package/lib/typescript/organisms/NavigationBar.d.ts +32 -0
- package/lib/typescript/organisms/NavigationBar.d.ts.map +1 -0
- package/lib/typescript/organisms/Screen.d.ts +2 -1
- package/lib/typescript/organisms/Screen.d.ts.map +1 -1
- package/lib/typescript/organisms/SearchList.d.ts +21 -5
- package/lib/typescript/organisms/SearchList.d.ts.map +1 -1
- package/lib/typescript/organisms/Select.d.ts +19 -4
- package/lib/typescript/organisms/Select.d.ts.map +1 -1
- package/lib/typescript/{molecules → organisms}/ThemeToggle.d.ts +4 -4
- package/lib/typescript/organisms/ThemeToggle.d.ts.map +1 -0
- package/lib/typescript/organisms/Toast.d.ts.map +1 -1
- package/lib/typescript/organisms/ToastProvider.d.ts +8 -0
- package/lib/typescript/organisms/ToastProvider.d.ts.map +1 -1
- package/lib/typescript/organisms/Wizard.d.ts +7 -1
- package/lib/typescript/organisms/Wizard.d.ts.map +1 -1
- package/lib/typescript/organisms/imperativeBridge.d.ts +12 -0
- package/lib/typescript/organisms/imperativeBridge.d.ts.map +1 -0
- package/lib/typescript/organisms/index.d.ts +7 -3
- package/lib/typescript/organisms/index.d.ts.map +1 -1
- package/lib/typescript/theme/colors.d.ts +44 -0
- package/lib/typescript/theme/colors.d.ts.map +1 -0
- package/lib/typescript/theme/createTheme.d.ts +3 -0
- package/lib/typescript/theme/createTheme.d.ts.map +1 -1
- package/lib/typescript/theme/index.d.ts +3 -1
- package/lib/typescript/theme/index.d.ts.map +1 -1
- package/lib/typescript/theme/palettes.d.ts.map +1 -1
- package/lib/typescript/theme/types.d.ts +9 -0
- package/lib/typescript/theme/types.d.ts.map +1 -1
- package/package.json +67 -6
- package/registry/alert-provider.json +9 -2
- package/registry/bottom-sheet.json +6 -2
- package/registry/core.json +8 -4
- package/registry/date-field.json +1 -0
- package/registry/index.json +96 -27
- package/registry/list.json +2 -1
- package/registry/manifest.json +44 -6
- package/registry/modal.json +3 -2
- package/registry/navigation-bar.json +18 -0
- package/registry/option-card.json +3 -2
- package/registry/pressable-scale.json +1 -1
- package/registry/screen.json +1 -1
- package/registry/search-list.json +2 -1
- package/registry/segmented-control.json +18 -0
- package/registry/select.json +1 -1
- package/registry/skeleton.json +18 -0
- package/registry/stepper.json +3 -2
- package/registry/theme-toggle.json +5 -4
- package/registry/toast-provider.json +11 -3
- package/registry/toast.json +3 -2
- package/registry/transition.json +19 -0
- package/registry/wizard.json +3 -2
- package/src/atoms/PressableScale.tsx +16 -6
- package/src/atoms/Skeleton.tsx +114 -0
- package/src/atoms/Transition.tsx +189 -0
- package/src/atoms/index.ts +4 -0
- package/src/molecules/OptionCard.tsx +62 -25
- package/src/molecules/SegmentedControl.tsx +84 -0
- package/src/molecules/Stepper.tsx +147 -32
- package/src/molecules/index.ts +4 -4
- package/src/organisms/AlertProvider.tsx +26 -1
- package/src/organisms/BottomSheet.tsx +214 -62
- package/src/organisms/List.tsx +73 -41
- package/src/organisms/Modal.tsx +49 -61
- package/src/organisms/NavigationBar.tsx +223 -0
- package/src/organisms/Screen.tsx +11 -3
- package/src/organisms/SearchList.tsx +132 -36
- package/src/organisms/Select.tsx +223 -45
- package/src/organisms/ThemeToggle.tsx +30 -0
- package/src/organisms/Toast.tsx +8 -21
- package/src/organisms/ToastProvider.tsx +24 -0
- package/src/organisms/Wizard.tsx +36 -3
- package/src/organisms/imperativeBridge.ts +28 -0
- package/src/organisms/index.ts +7 -3
- package/src/theme/colors.ts +175 -0
- package/src/theme/createTheme.ts +38 -4
- package/src/theme/index.ts +3 -1
- package/src/theme/palettes.ts +5 -2
- package/src/theme/types.ts +10 -0
- package/lib/commonjs/molecules/ThemeToggle.js.map +0 -1
- package/lib/module/molecules/ThemeToggle.js.map +0 -1
- package/lib/typescript/molecules/ThemeToggle.d.ts.map +0 -1
- package/src/molecules/ThemeToggle.tsx +0 -67
|
@@ -4,19 +4,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.SearchList = SearchList;
|
|
7
|
-
var _react =
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _createStyles = require("../theme/createStyles");
|
|
10
10
|
var _UIProvider = require("../theme/UIProvider");
|
|
11
11
|
var _Input = require("../atoms/Input");
|
|
12
12
|
var _EmptyState = require("../atoms/EmptyState");
|
|
13
|
+
var _Skeleton = require("../atoms/Skeleton");
|
|
13
14
|
var _Spinner = require("../atoms/Spinner");
|
|
14
15
|
var _IconButton = require("../atoms/IconButton");
|
|
15
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
|
-
function
|
|
17
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
17
18
|
const useStyles = (0, _createStyles.createStyles)(theme => ({
|
|
18
19
|
container: {
|
|
19
|
-
flex: 1
|
|
20
|
+
flex: 1,
|
|
21
|
+
backgroundColor: theme.colors.background
|
|
20
22
|
},
|
|
21
23
|
searchRow: {
|
|
22
24
|
flexDirection: 'row',
|
|
@@ -60,6 +62,16 @@ const useStyles = (0, _createStyles.createStyles)(theme => ({
|
|
|
60
62
|
footerText: {
|
|
61
63
|
color: theme.colors.textLight,
|
|
62
64
|
fontSize: theme.tokens.fontSize.md
|
|
65
|
+
},
|
|
66
|
+
skeletonRow: {
|
|
67
|
+
flexDirection: 'row',
|
|
68
|
+
alignItems: 'center',
|
|
69
|
+
gap: theme.tokens.spacing.md,
|
|
70
|
+
padding: theme.tokens.spacing.md
|
|
71
|
+
},
|
|
72
|
+
skeletonText: {
|
|
73
|
+
flex: 1,
|
|
74
|
+
gap: theme.tokens.spacing.sm
|
|
63
75
|
}
|
|
64
76
|
}));
|
|
65
77
|
|
|
@@ -83,16 +95,26 @@ function SearchList({
|
|
|
83
95
|
renderItem,
|
|
84
96
|
isLoading = false,
|
|
85
97
|
loadingMode = 'replace',
|
|
86
|
-
|
|
87
|
-
onLoadMore,
|
|
98
|
+
isRefreshing = false,
|
|
88
99
|
isLoadingMore = false,
|
|
100
|
+
isReady = true,
|
|
101
|
+
loadingText,
|
|
89
102
|
loadingMoreText,
|
|
90
103
|
hasMore = false,
|
|
91
104
|
noMoreText,
|
|
105
|
+
skeletonCount = 6,
|
|
106
|
+
renderSkeletonItem,
|
|
107
|
+
onLoadMore,
|
|
108
|
+
onEndReached,
|
|
109
|
+
onEndReachedThreshold = 0.3,
|
|
110
|
+
onRefresh,
|
|
92
111
|
emptyTitle,
|
|
93
112
|
emptyDescription,
|
|
94
113
|
emptyIconName,
|
|
114
|
+
ListHeaderComponent,
|
|
115
|
+
ListFooterComponent,
|
|
95
116
|
contentContainerStyle,
|
|
117
|
+
containerStyle,
|
|
96
118
|
ListComponent = _reactNative.FlatList,
|
|
97
119
|
listProps
|
|
98
120
|
}) {
|
|
@@ -102,32 +124,54 @@ function SearchList({
|
|
|
102
124
|
const resolvedSearchPlaceholder = searchPlaceholder ?? labels.search;
|
|
103
125
|
const resolvedLoadingText = loadingText ?? labels.loading;
|
|
104
126
|
const resolvedLoadingMoreText = loadingMoreText ?? labels.loadingMore;
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
127
|
+
const handleEndReached = onLoadMore ?? onEndReached;
|
|
128
|
+
|
|
129
|
+
// El footer propio y el loader de paginación conviven: antes el primero
|
|
130
|
+
// tapaba al segundo y la lista dejaba de avisar que estaba trayendo más.
|
|
131
|
+
const renderFooter = (0, _react.useCallback)(() => {
|
|
132
|
+
const custom = typeof ListFooterComponent === 'function' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(ListFooterComponent, {}) : ListFooterComponent ?? null;
|
|
133
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
134
|
+
children: [custom, isLoadingMore && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
108
135
|
style: styles.footer,
|
|
109
136
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.Spinner, {
|
|
110
137
|
text: resolvedLoadingMoreText,
|
|
111
138
|
fullscreen: false
|
|
112
139
|
})
|
|
113
|
-
})
|
|
114
|
-
}
|
|
115
|
-
if (noMoreText && !hasMore && data.length > 0) {
|
|
116
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
140
|
+
}), noMoreText && !hasMore && data.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
117
141
|
style: styles.footer,
|
|
118
142
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
119
143
|
style: styles.footerText,
|
|
120
144
|
children: noMoreText
|
|
121
145
|
})
|
|
122
|
-
})
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
146
|
+
})]
|
|
147
|
+
});
|
|
148
|
+
}, [ListFooterComponent, isLoadingMore, resolvedLoadingMoreText, noMoreText, hasMore, data.length, styles.footer, styles.footerText]);
|
|
149
|
+
|
|
150
|
+
// Vacío sólo cuando ya se sabe que no hay nada: durante la carga inicial se
|
|
151
|
+
// muestran placeholders, no "sin resultados".
|
|
152
|
+
const renderEmpty = (0, _react.useCallback)(() => {
|
|
153
|
+
if (isLoading || isRefreshing) return null;
|
|
154
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_EmptyState.EmptyState, {
|
|
155
|
+
title: emptyTitle,
|
|
156
|
+
description: emptyDescription,
|
|
157
|
+
iconName: emptyIconName,
|
|
158
|
+
style: {
|
|
159
|
+
marginTop: 50
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}, [isLoading, isRefreshing, emptyTitle, emptyDescription, emptyIconName]);
|
|
163
|
+
if (!isReady) {
|
|
164
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
165
|
+
style: [styles.container, containerStyle],
|
|
166
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.Spinner, {
|
|
167
|
+
text: resolvedLoadingText
|
|
168
|
+
})
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
const isInitialLoading = isLoading && loadingMode === 'replace' && data.length === 0;
|
|
127
172
|
const showOverlayLoading = isLoading && loadingMode === 'overlay' && data.length === 0;
|
|
128
|
-
const showEmpty = !isLoading && data.length === 0;
|
|
129
173
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
130
|
-
style: styles.container,
|
|
174
|
+
style: [styles.container, containerStyle],
|
|
131
175
|
children: [header, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
132
176
|
style: styles.searchRow,
|
|
133
177
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.Input, {
|
|
@@ -157,21 +201,46 @@ function SearchList({
|
|
|
157
201
|
style: styles.footerText,
|
|
158
202
|
children: resolvedLoadingText
|
|
159
203
|
})]
|
|
160
|
-
}),
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
204
|
+
}), isInitialLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
205
|
+
testID: "list-skeleton",
|
|
206
|
+
style: [styles.listContent, contentContainerStyle],
|
|
207
|
+
children: Array.from({
|
|
208
|
+
length: skeletonCount
|
|
209
|
+
}, (_, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, {
|
|
210
|
+
children: renderSkeletonItem?.() ?? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
211
|
+
style: styles.skeletonRow,
|
|
212
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Skeleton.Skeleton, {
|
|
213
|
+
variant: "circle",
|
|
214
|
+
width: 40
|
|
215
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
216
|
+
style: styles.skeletonText,
|
|
217
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Skeleton.Skeleton, {
|
|
218
|
+
width: "60%",
|
|
219
|
+
height: 14
|
|
220
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Skeleton.Skeleton, {
|
|
221
|
+
width: "35%",
|
|
222
|
+
height: 12
|
|
223
|
+
})]
|
|
224
|
+
})]
|
|
225
|
+
})
|
|
226
|
+
}, i))
|
|
166
227
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(ListComponent, {
|
|
167
228
|
data: data,
|
|
168
229
|
keyExtractor: keyExtractor,
|
|
169
230
|
keyboardDismissMode: "on-drag",
|
|
170
|
-
contentContainerStyle:
|
|
171
|
-
onEndReached:
|
|
172
|
-
onEndReachedThreshold:
|
|
231
|
+
contentContainerStyle: [styles.listContent, contentContainerStyle],
|
|
232
|
+
onEndReached: handleEndReached,
|
|
233
|
+
onEndReachedThreshold: onEndReachedThreshold,
|
|
234
|
+
ListHeaderComponent: ListHeaderComponent,
|
|
173
235
|
ListFooterComponent: renderFooter,
|
|
236
|
+
ListEmptyComponent: renderEmpty,
|
|
174
237
|
renderItem: renderItem,
|
|
238
|
+
refreshControl: onRefresh ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.RefreshControl, {
|
|
239
|
+
refreshing: isRefreshing,
|
|
240
|
+
onRefresh: onRefresh,
|
|
241
|
+
colors: [colors.primary],
|
|
242
|
+
tintColor: colors.primary
|
|
243
|
+
}) : undefined,
|
|
175
244
|
...listProps
|
|
176
245
|
})]
|
|
177
246
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_createStyles","_UIProvider","_Input","_EmptyState","_Spinner","_IconButton","_jsxRuntime","e","__esModule","default","useStyles","createStyles","theme","container","flex","searchRow","flexDirection","alignItems","marginBottom","tokens","spacing","lg","gap","sm","searchInput","scanButton","backgroundColor","colors","primary","width","height","borderRadius","radius","shadow","listArea","listContent","paddingBottom","xl","loadingOverlay","position","top","left","right","bottom","scrim","zIndex","justifyContent","footer","paddingVertical","md","footerText","color","textLight","fontSize","SearchList","header","searchValue","onSearchChange","searchPlaceholder","searchIsLoading","onScanPress","scanAccessibilityLabel","extraActions","data","keyExtractor","renderItem","isLoading","loadingMode","loadingText","onLoadMore","isLoadingMore","loadingMoreText","hasMore","noMoreText","emptyTitle","emptyDescription","emptyIconName","contentContainerStyle","ListComponent","FlatList","listProps","useColors","styles","labels","useLabels","resolvedSearchPlaceholder","search","resolvedLoadingText","loading","resolvedLoadingMoreText","loadingMore","renderFooter","jsx","View","style","children","Spinner","text","fullscreen","length","Text","showReplaceLoading","showOverlayLoading","showEmpty","jsxs","Input","placeholder","leftIconName","value","onChangeText","rightIconName","undefined","onRightIconPress","containerStyle","IconButton","iconName","onPress","onPrimary","accessibilityLabel","ActivityIndicator","size","EmptyState","title","description","keyboardDismissMode","onEndReached","onEndReachedThreshold","ListFooterComponent"],"sourceRoot":"../../../src","sources":["organisms/SearchList.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_createStyles","_UIProvider","_Input","_EmptyState","_Skeleton","_Spinner","_IconButton","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useStyles","createStyles","theme","container","flex","backgroundColor","colors","background","searchRow","flexDirection","alignItems","marginBottom","tokens","spacing","lg","gap","sm","searchInput","scanButton","primary","width","height","borderRadius","radius","shadow","listArea","listContent","paddingBottom","xl","loadingOverlay","position","top","left","right","bottom","scrim","zIndex","justifyContent","footer","paddingVertical","md","footerText","color","textLight","fontSize","skeletonRow","padding","skeletonText","SearchList","header","searchValue","onSearchChange","searchPlaceholder","searchIsLoading","onScanPress","scanAccessibilityLabel","extraActions","data","keyExtractor","renderItem","isLoading","loadingMode","isRefreshing","isLoadingMore","isReady","loadingText","loadingMoreText","hasMore","noMoreText","skeletonCount","renderSkeletonItem","onLoadMore","onEndReached","onEndReachedThreshold","onRefresh","emptyTitle","emptyDescription","emptyIconName","ListHeaderComponent","ListFooterComponent","contentContainerStyle","containerStyle","ListComponent","FlatList","listProps","useColors","styles","labels","useLabels","resolvedSearchPlaceholder","search","resolvedLoadingText","loading","resolvedLoadingMoreText","loadingMore","handleEndReached","renderFooter","useCallback","custom","jsx","jsxs","Fragment","children","View","style","Spinner","text","fullscreen","length","Text","renderEmpty","EmptyState","title","description","iconName","marginTop","isInitialLoading","showOverlayLoading","Input","placeholder","leftIconName","value","onChangeText","rightIconName","undefined","onRightIconPress","IconButton","onPress","onPrimary","accessibilityLabel","ActivityIndicator","size","testID","Array","from","_","Skeleton","variant","keyboardDismissMode","ListEmptyComponent","refreshControl","RefreshControl","refreshing","tintColor"],"sourceRoot":"../../../src","sources":["organisms/SearchList.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,14 +11,14 @@ var _UIProvider = require("../theme/UIProvider");
|
|
|
11
11
|
var _Icon = require("../icons/Icon");
|
|
12
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
13
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
/** Aire entre el campo y el desplegable. */
|
|
15
|
+
const GAP = 8;
|
|
16
|
+
/** Por debajo de esto el desplegable no muestra ni dos filas. */
|
|
17
|
+
const MIN_HEIGHT = 120;
|
|
14
18
|
const useStyles = (0, _createStyles.createStyles)(theme => ({
|
|
15
19
|
container: {
|
|
16
20
|
gap: theme.tokens.spacing.sm
|
|
17
21
|
},
|
|
18
|
-
containerOpen: {
|
|
19
|
-
zIndex: 20,
|
|
20
|
-
elevation: 20
|
|
21
|
-
},
|
|
22
22
|
label: {
|
|
23
23
|
fontWeight: theme.tokens.fontWeight.bold,
|
|
24
24
|
fontSize: theme.tokens.fontSize.md,
|
|
@@ -38,28 +38,46 @@ const useStyles = (0, _createStyles.createStyles)(theme => ({
|
|
|
38
38
|
minHeight: 50,
|
|
39
39
|
paddingHorizontal: theme.tokens.spacing.lg
|
|
40
40
|
},
|
|
41
|
+
fieldOpen: {
|
|
42
|
+
borderColor: theme.colors.primary
|
|
43
|
+
},
|
|
44
|
+
fieldDisabled: {
|
|
45
|
+
opacity: 0.5
|
|
46
|
+
},
|
|
47
|
+
fieldValue: {
|
|
48
|
+
flexDirection: 'row',
|
|
49
|
+
alignItems: 'center',
|
|
50
|
+
gap: theme.tokens.spacing.sm,
|
|
51
|
+
flexShrink: 1
|
|
52
|
+
},
|
|
41
53
|
fieldText: {
|
|
42
54
|
fontSize: theme.tokens.fontSize.lg,
|
|
43
|
-
color: theme.colors.text
|
|
55
|
+
color: theme.colors.text,
|
|
56
|
+
flexShrink: 1
|
|
44
57
|
},
|
|
45
58
|
fieldPlaceholder: {
|
|
46
59
|
color: theme.colors.textLight
|
|
47
60
|
},
|
|
48
|
-
|
|
61
|
+
backdrop: {
|
|
62
|
+
flex: 1
|
|
63
|
+
},
|
|
64
|
+
sheet: {
|
|
49
65
|
position: 'absolute',
|
|
50
|
-
top: '100%',
|
|
51
|
-
left: 0,
|
|
52
|
-
right: 0,
|
|
53
|
-
marginTop: theme.tokens.spacing.sm,
|
|
54
66
|
borderWidth: 2,
|
|
55
67
|
borderColor: theme.colors.border,
|
|
56
68
|
borderRadius: theme.tokens.radius.lg,
|
|
57
69
|
backgroundColor: theme.colors.surface,
|
|
58
70
|
overflow: 'hidden',
|
|
59
|
-
zIndex: 20,
|
|
60
|
-
elevation: 20,
|
|
61
71
|
...theme.tokens.shadow.md
|
|
62
72
|
},
|
|
73
|
+
search: {
|
|
74
|
+
fontSize: theme.tokens.fontSize.md,
|
|
75
|
+
color: theme.colors.text,
|
|
76
|
+
paddingHorizontal: theme.tokens.spacing.lg,
|
|
77
|
+
paddingVertical: theme.tokens.spacing.md,
|
|
78
|
+
borderBottomWidth: 1,
|
|
79
|
+
borderBottomColor: theme.colors.border
|
|
80
|
+
},
|
|
63
81
|
optionRow: {
|
|
64
82
|
flexDirection: 'row',
|
|
65
83
|
alignItems: 'center',
|
|
@@ -75,6 +93,15 @@ const useStyles = (0, _createStyles.createStyles)(theme => ({
|
|
|
75
93
|
optionRowSelected: {
|
|
76
94
|
backgroundColor: theme.colors.primarySoft
|
|
77
95
|
},
|
|
96
|
+
optionRowDisabled: {
|
|
97
|
+
opacity: 0.4
|
|
98
|
+
},
|
|
99
|
+
optionLabel: {
|
|
100
|
+
flexDirection: 'row',
|
|
101
|
+
alignItems: 'center',
|
|
102
|
+
gap: theme.tokens.spacing.sm,
|
|
103
|
+
flexShrink: 1
|
|
104
|
+
},
|
|
78
105
|
optionText: {
|
|
79
106
|
fontSize: theme.tokens.fontSize.lg - 1,
|
|
80
107
|
color: theme.colors.text
|
|
@@ -83,17 +110,26 @@ const useStyles = (0, _createStyles.createStyles)(theme => ({
|
|
|
83
110
|
fontWeight: theme.tokens.fontWeight.semibold,
|
|
84
111
|
color: theme.colors.primaryText
|
|
85
112
|
},
|
|
113
|
+
emoji: {
|
|
114
|
+
fontSize: theme.tokens.fontSize.lg
|
|
115
|
+
},
|
|
116
|
+
empty: {
|
|
117
|
+
padding: theme.tokens.spacing.lg,
|
|
118
|
+
textAlign: 'center',
|
|
119
|
+
color: theme.colors.textLight,
|
|
120
|
+
fontSize: theme.tokens.fontSize.md
|
|
121
|
+
},
|
|
86
122
|
errorText: {
|
|
87
123
|
fontSize: theme.tokens.fontSize.sm,
|
|
88
124
|
color: theme.colors.errorText
|
|
89
125
|
}
|
|
90
126
|
}));
|
|
91
|
-
|
|
92
127
|
/**
|
|
93
128
|
* Select
|
|
94
|
-
* Dropdown
|
|
95
|
-
*
|
|
96
|
-
*
|
|
129
|
+
* Dropdown de una sola opción. La lista se mide contra la ventana y se dibuja
|
|
130
|
+
* dentro de un Modal, no en el árbol del campo: así ningún `overflow: hidden`
|
|
131
|
+
* la recorta, no depende del zIndex (poco confiable en Android) y el fondo del
|
|
132
|
+
* Modal resuelve cerrar tocando afuera y con el botón atrás.
|
|
97
133
|
*/
|
|
98
134
|
function Select({
|
|
99
135
|
label,
|
|
@@ -104,16 +140,105 @@ function Select({
|
|
|
104
140
|
placeholder,
|
|
105
141
|
error,
|
|
106
142
|
isLoading = false,
|
|
107
|
-
|
|
143
|
+
disabled = false,
|
|
144
|
+
searchable = false,
|
|
145
|
+
searchPlaceholder,
|
|
146
|
+
maxHeight = 280,
|
|
147
|
+
onOpenChange,
|
|
148
|
+
containerStyle,
|
|
149
|
+
testID
|
|
108
150
|
}) {
|
|
109
151
|
const colors = (0, _UIProvider.useColors)();
|
|
110
152
|
const styles = useStyles();
|
|
111
153
|
const labels = (0, _UIProvider.useLabels)();
|
|
112
154
|
const allowFontScaling = (0, _UIProvider.useAllowFontScaling)();
|
|
155
|
+
const {
|
|
156
|
+
height: windowHeight
|
|
157
|
+
} = (0, _reactNative.useWindowDimensions)();
|
|
158
|
+
const fieldRef = (0, _react.useRef)(null);
|
|
113
159
|
const [open, setOpen] = (0, _react.useState)(false);
|
|
160
|
+
const [anchor, setAnchor] = (0, _react.useState)(null);
|
|
161
|
+
const [query, setQuery] = (0, _react.useState)('');
|
|
162
|
+
const [keyboardHeight, setKeyboardHeight] = (0, _react.useState)(0);
|
|
163
|
+
const isDisabled = disabled || isLoading;
|
|
114
164
|
const selectedOption = options.find(o => o.value === selectedValue);
|
|
165
|
+
const close = (0, _react.useCallback)(() => {
|
|
166
|
+
setOpen(false);
|
|
167
|
+
setAnchor(null);
|
|
168
|
+
setQuery('');
|
|
169
|
+
onOpenChange?.(false);
|
|
170
|
+
}, [onOpenChange]);
|
|
171
|
+
|
|
172
|
+
// Abrir no espera a la medición: si `measureInWindow` no responde, la lista
|
|
173
|
+
// igual aparece (centrada) en vez de que el campo deje de funcionar.
|
|
174
|
+
const openList = () => {
|
|
175
|
+
fieldRef.current?.measureInWindow((x, y, width, height) => setAnchor({
|
|
176
|
+
x,
|
|
177
|
+
y,
|
|
178
|
+
width,
|
|
179
|
+
height
|
|
180
|
+
}));
|
|
181
|
+
setOpen(true);
|
|
182
|
+
onOpenChange?.(true);
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
// El buscador abre el teclado encima del desplegable: sin descontarlo, la
|
|
186
|
+
// lista se dibuja donde ya no se ve.
|
|
187
|
+
(0, _react.useEffect)(() => {
|
|
188
|
+
if (!open) return;
|
|
189
|
+
setKeyboardHeight(_reactNative.Keyboard.metrics()?.height ?? 0);
|
|
190
|
+
const [show, hide] = _reactNative.Platform.OS === 'ios' ? ['keyboardWillShow', 'keyboardWillHide'] : ['keyboardDidShow', 'keyboardDidHide'];
|
|
191
|
+
const subs = [_reactNative.Keyboard.addListener(show, e => setKeyboardHeight(e.endCoordinates.height)), _reactNative.Keyboard.addListener(hide, () => setKeyboardHeight(0))];
|
|
192
|
+
return () => subs.forEach(sub => sub.remove());
|
|
193
|
+
}, [open]);
|
|
194
|
+
const visibleOptions = (0, _react.useMemo)(() => {
|
|
195
|
+
if (!searchable || query.trim() === '') return options;
|
|
196
|
+
const needle = query.trim().toLowerCase();
|
|
197
|
+
return options.filter(option => option.label.toLowerCase().includes(needle));
|
|
198
|
+
}, [options, query, searchable]);
|
|
199
|
+
|
|
200
|
+
// Se abre hacia donde haya más aire: contra el borde inferior de la pantalla,
|
|
201
|
+
// hacia arriba es la única forma de que entre.
|
|
202
|
+
const placement = (0, _react.useMemo)(() => {
|
|
203
|
+
if (!anchor) return {
|
|
204
|
+
left: GAP * 2,
|
|
205
|
+
right: GAP * 2,
|
|
206
|
+
top: windowHeight * 0.25,
|
|
207
|
+
maxHeight
|
|
208
|
+
};
|
|
209
|
+
const usableHeight = windowHeight - keyboardHeight;
|
|
210
|
+
const below = usableHeight - (anchor.y + anchor.height) - GAP * 2;
|
|
211
|
+
const above = anchor.y - GAP * 2;
|
|
212
|
+
const downwards = below >= Math.min(maxHeight, above);
|
|
213
|
+
return {
|
|
214
|
+
left: anchor.x,
|
|
215
|
+
width: anchor.width,
|
|
216
|
+
maxHeight: Math.max(Math.min(maxHeight, downwards ? below : above), MIN_HEIGHT),
|
|
217
|
+
...(downwards ? {
|
|
218
|
+
top: anchor.y + anchor.height + GAP
|
|
219
|
+
} : {
|
|
220
|
+
bottom: windowHeight - anchor.y + GAP
|
|
221
|
+
})
|
|
222
|
+
};
|
|
223
|
+
}, [anchor, keyboardHeight, maxHeight, windowHeight]);
|
|
224
|
+
const renderLeading = (option, color) => {
|
|
225
|
+
if (!option) return null;
|
|
226
|
+
if (option.emoji) {
|
|
227
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
228
|
+
allowFontScaling: allowFontScaling,
|
|
229
|
+
style: styles.emoji,
|
|
230
|
+
children: option.emoji
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
return option.iconName ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, {
|
|
234
|
+
name: option.iconName,
|
|
235
|
+
size: 20,
|
|
236
|
+
color: color
|
|
237
|
+
}) : null;
|
|
238
|
+
};
|
|
115
239
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
116
|
-
style: [styles.container,
|
|
240
|
+
style: [styles.container, containerStyle],
|
|
241
|
+
testID: testID,
|
|
117
242
|
children: [label && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
|
|
118
243
|
allowFontScaling: allowFontScaling,
|
|
119
244
|
style: styles.label,
|
|
@@ -122,19 +247,27 @@ function Select({
|
|
|
122
247
|
children: " *"
|
|
123
248
|
})]
|
|
124
249
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Pressable, {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
250
|
+
ref: fieldRef,
|
|
251
|
+
style: [styles.field, open && styles.fieldOpen, isDisabled && styles.fieldDisabled],
|
|
252
|
+
onPress: openList,
|
|
253
|
+
disabled: isDisabled,
|
|
254
|
+
accessibilityRole: "combobox",
|
|
129
255
|
accessibilityLabel: label ?? placeholder ?? labels.selectPlaceholder,
|
|
256
|
+
accessibilityValue: {
|
|
257
|
+
text: selectedOption?.label ?? ''
|
|
258
|
+
},
|
|
130
259
|
accessibilityState: {
|
|
131
260
|
expanded: open,
|
|
132
|
-
disabled:
|
|
261
|
+
disabled: isDisabled
|
|
133
262
|
},
|
|
134
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
263
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
264
|
+
style: styles.fieldValue,
|
|
265
|
+
children: [renderLeading(selectedOption, colors.textLight), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
266
|
+
allowFontScaling: allowFontScaling,
|
|
267
|
+
numberOfLines: 1,
|
|
268
|
+
style: [styles.fieldText, !selectedOption && styles.fieldPlaceholder],
|
|
269
|
+
children: selectedOption?.label || placeholder || labels.selectPlaceholder
|
|
270
|
+
})]
|
|
138
271
|
}), isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
|
|
139
272
|
size: "small",
|
|
140
273
|
color: colors.primary
|
|
@@ -143,31 +276,70 @@ function Select({
|
|
|
143
276
|
size: 20,
|
|
144
277
|
color: colors.textLight
|
|
145
278
|
})]
|
|
146
|
-
}), open &&
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
279
|
+
}), open && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Modal, {
|
|
280
|
+
visible: true,
|
|
281
|
+
transparent: true,
|
|
282
|
+
animationType: "fade",
|
|
283
|
+
statusBarTranslucent: true,
|
|
284
|
+
onRequestClose: close,
|
|
285
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
286
|
+
style: styles.backdrop,
|
|
287
|
+
onPress: close,
|
|
288
|
+
testID: "select-backdrop"
|
|
289
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
290
|
+
style: [styles.sheet, placement],
|
|
291
|
+
accessibilityRole: "radiogroup",
|
|
292
|
+
testID: "select-list",
|
|
293
|
+
children: [searchable && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
|
|
294
|
+
allowFontScaling: allowFontScaling,
|
|
295
|
+
style: styles.search,
|
|
296
|
+
value: query,
|
|
297
|
+
onChangeText: setQuery,
|
|
298
|
+
placeholder: searchPlaceholder ?? labels.search,
|
|
299
|
+
placeholderTextColor: colors.textLight,
|
|
300
|
+
autoFocus: true,
|
|
301
|
+
accessibilityLabel: searchPlaceholder ?? labels.search
|
|
302
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
|
|
303
|
+
keyboardShouldPersistTaps: "handled",
|
|
304
|
+
showsVerticalScrollIndicator: false,
|
|
305
|
+
bounces: false,
|
|
306
|
+
children: [visibleOptions.map((option, index) => {
|
|
307
|
+
const isSelected = option.value === selectedValue;
|
|
308
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Pressable, {
|
|
309
|
+
style: [styles.optionRow, index === visibleOptions.length - 1 && styles.optionRowLast, isSelected && styles.optionRowSelected, option.disabled && styles.optionRowDisabled],
|
|
310
|
+
onPress: () => {
|
|
311
|
+
onSelect(option.value);
|
|
312
|
+
close();
|
|
313
|
+
},
|
|
314
|
+
disabled: option.disabled,
|
|
315
|
+
accessibilityRole: "radio",
|
|
316
|
+
accessibilityLabel: option.label,
|
|
317
|
+
accessibilityState: {
|
|
318
|
+
selected: isSelected,
|
|
319
|
+
checked: isSelected,
|
|
320
|
+
disabled: !!option.disabled
|
|
321
|
+
},
|
|
322
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
323
|
+
style: styles.optionLabel,
|
|
324
|
+
children: [renderLeading(option, isSelected ? colors.primary : colors.textLight), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
325
|
+
allowFontScaling: allowFontScaling,
|
|
326
|
+
numberOfLines: 1,
|
|
327
|
+
style: [styles.optionText, isSelected && styles.optionTextSelected],
|
|
328
|
+
children: option.label
|
|
329
|
+
})]
|
|
330
|
+
}), isSelected && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, {
|
|
331
|
+
name: "check",
|
|
332
|
+
size: 18,
|
|
333
|
+
color: colors.primary
|
|
334
|
+
})]
|
|
335
|
+
}, String(option.value));
|
|
336
|
+
}), visibleOptions.length === 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
161
337
|
allowFontScaling: allowFontScaling,
|
|
162
|
-
style:
|
|
163
|
-
children:
|
|
164
|
-
}), isSelected && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, {
|
|
165
|
-
name: "check",
|
|
166
|
-
size: 18,
|
|
167
|
-
color: colors.primary
|
|
338
|
+
style: styles.empty,
|
|
339
|
+
children: labels.noResultsTitle
|
|
168
340
|
})]
|
|
169
|
-
}
|
|
170
|
-
})
|
|
341
|
+
})]
|
|
342
|
+
})]
|
|
171
343
|
}), !!error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
172
344
|
allowFontScaling: allowFontScaling,
|
|
173
345
|
style: styles.errorText,
|