@xaui/native 0.0.8 → 0.0.10
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/accordion/index.cjs +108 -87
- package/dist/accordion/index.d.cts +48 -36
- package/dist/accordion/index.d.ts +48 -36
- package/dist/accordion/index.js +29 -26
- package/dist/alert/index.cjs +593 -0
- package/dist/alert/index.d.cts +90 -0
- package/dist/alert/index.d.ts +90 -0
- package/dist/alert/index.js +8 -0
- package/dist/autocomplete/index.cjs +1501 -0
- package/dist/autocomplete/index.d.cts +88 -0
- package/dist/autocomplete/index.d.ts +88 -0
- package/dist/autocomplete/index.js +12 -0
- package/dist/button/index.cjs +87 -69
- package/dist/button/index.js +2 -2
- package/dist/checkbox/index.cjs +48 -30
- package/dist/checkbox/index.js +1 -1
- package/dist/{chunk-B2VGVZ3J.js → chunk-63LRW4QD.js} +1 -1
- package/dist/chunk-GBHQCAKW.js +19 -0
- package/dist/{chunk-R34CVLCX.js → chunk-GNJIET26.js} +1 -1
- package/dist/chunk-NBRASCX4.js +145 -0
- package/dist/chunk-OFYJYQ2M.js +358 -0
- package/dist/chunk-RE3CO277.js +444 -0
- package/dist/chunk-SIXET7TJ.js +172 -0
- package/dist/chunk-SVYTCEGB.js +1138 -0
- package/dist/chunk-ZYTBRHLJ.js +150 -0
- package/dist/core/index.cjs +68 -10
- package/dist/core/index.d.cts +9 -1
- package/dist/core/index.d.ts +9 -1
- package/dist/core/index.js +5 -1
- package/dist/divider/index.cjs +31 -13
- package/dist/divider/index.js +2 -2
- package/dist/icon/index.cjs +680 -0
- package/dist/icon/index.d.cts +36 -0
- package/dist/icon/index.d.ts +36 -0
- package/dist/icon/index.js +15 -0
- package/dist/index.cjs +1990 -53
- package/dist/index.d.cts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +21 -4
- package/dist/indicator/index.cjs +60 -42
- package/dist/indicator/index.js +2 -2
- package/dist/progress/index.cjs +45 -27
- package/dist/progress/index.js +1 -1
- package/dist/select/index.cjs +107 -89
- package/dist/select/index.js +10 -23
- package/dist/switch/index.cjs +58 -40
- package/dist/switch/index.js +1 -1
- package/dist/typography/index.cjs +223 -0
- package/dist/typography/index.d.cts +43 -0
- package/dist/typography/index.d.ts +43 -0
- package/dist/typography/index.js +7 -0
- package/dist/view/index.cjs +8 -2
- package/dist/view/index.d.cts +11 -1
- package/dist/view/index.d.ts +11 -1
- package/dist/view/index.js +8 -2
- package/package.json +21 -1
- package/dist/chunk-ORMNMNOK.js +0 -89
package/dist/select/index.cjs
CHANGED
|
@@ -36,30 +36,48 @@ __export(select_exports, {
|
|
|
36
36
|
module.exports = __toCommonJS(select_exports);
|
|
37
37
|
|
|
38
38
|
// src/components/select/select.tsx
|
|
39
|
-
var
|
|
40
|
-
var
|
|
39
|
+
var import_react12 = __toESM(require("react"), 1);
|
|
40
|
+
var import_react_native8 = require("react-native");
|
|
41
41
|
|
|
42
42
|
// src/components/select/select-context.ts
|
|
43
43
|
var import_react = require("react");
|
|
44
44
|
var SelectContext = (0, import_react.createContext)(null);
|
|
45
45
|
|
|
46
46
|
// src/components/select/select.hook.ts
|
|
47
|
-
var
|
|
47
|
+
var import_react7 = require("react");
|
|
48
48
|
var import_core = require("@xaui/core");
|
|
49
49
|
var import_palette2 = require("@xaui/core/palette");
|
|
50
50
|
|
|
51
51
|
// src/core/theme-context.tsx
|
|
52
|
-
var
|
|
53
|
-
var
|
|
52
|
+
var import_react5 = __toESM(require("react"), 1);
|
|
53
|
+
var import_react_native2 = require("react-native");
|
|
54
54
|
var import_theme = require("@xaui/core/theme");
|
|
55
55
|
var import_palette = require("@xaui/core/palette");
|
|
56
|
-
var XUIThemeContext = (0, import_react2.createContext)(null);
|
|
57
56
|
|
|
58
|
-
// src/core/
|
|
57
|
+
// src/core/portal/portal.tsx
|
|
59
58
|
var import_react3 = require("react");
|
|
60
|
-
|
|
59
|
+
|
|
60
|
+
// src/core/portal/portal-context.ts
|
|
61
|
+
var import_react2 = require("react");
|
|
62
|
+
var PortalContext = (0, import_react2.createContext)(null);
|
|
63
|
+
|
|
64
|
+
// src/core/portal/portal-host.tsx
|
|
65
|
+
var import_react4 = __toESM(require("react"), 1);
|
|
66
|
+
var import_react_native = require("react-native");
|
|
67
|
+
var hostStyles = import_react_native.StyleSheet.create({
|
|
68
|
+
container: {
|
|
69
|
+
flex: 1
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// src/core/theme-context.tsx
|
|
74
|
+
var XUIThemeContext = (0, import_react5.createContext)(null);
|
|
75
|
+
|
|
76
|
+
// src/core/theme-hooks.ts
|
|
77
|
+
var import_react6 = require("react");
|
|
78
|
+
var import_react_native3 = require("react-native");
|
|
61
79
|
function useXUITheme() {
|
|
62
|
-
const theme = (0,
|
|
80
|
+
const theme = (0, import_react6.useContext)(XUIThemeContext);
|
|
63
81
|
if (!theme) {
|
|
64
82
|
throw new Error("useXUITheme must be used within XUIProvider");
|
|
65
83
|
}
|
|
@@ -78,7 +96,7 @@ var useSelectColorScheme = (themeColor) => {
|
|
|
78
96
|
};
|
|
79
97
|
var useSelectSizeStyles = (size) => {
|
|
80
98
|
const theme = useXUITheme();
|
|
81
|
-
return (0,
|
|
99
|
+
return (0, import_react7.useMemo)(() => {
|
|
82
100
|
const sizes = {
|
|
83
101
|
xs: {
|
|
84
102
|
minHeight: 34,
|
|
@@ -114,7 +132,7 @@ var useSelectSizeStyles = (size) => {
|
|
|
114
132
|
};
|
|
115
133
|
var useSelectRadiusStyles = (radius) => {
|
|
116
134
|
const theme = useXUITheme();
|
|
117
|
-
const radiusStyles = (0,
|
|
135
|
+
const radiusStyles = (0, import_react7.useMemo)(() => {
|
|
118
136
|
const radii = {
|
|
119
137
|
none: theme.borderRadius.none,
|
|
120
138
|
sm: theme.borderRadius.sm,
|
|
@@ -124,7 +142,7 @@ var useSelectRadiusStyles = (radius) => {
|
|
|
124
142
|
};
|
|
125
143
|
return { borderRadius: radii[radius] };
|
|
126
144
|
}, [radius, theme]);
|
|
127
|
-
const listboxRadius = (0,
|
|
145
|
+
const listboxRadius = (0, import_react7.useMemo)(() => {
|
|
128
146
|
const radii = {
|
|
129
147
|
none: theme.borderRadius.none,
|
|
130
148
|
sm: theme.borderRadius.sm,
|
|
@@ -138,7 +156,7 @@ var useSelectRadiusStyles = (radius) => {
|
|
|
138
156
|
};
|
|
139
157
|
var useSelectVariantStyles = (themeColor, variant, isInvalid) => {
|
|
140
158
|
const { theme, colorScheme } = useSelectColorScheme(themeColor);
|
|
141
|
-
return (0,
|
|
159
|
+
return (0, import_react7.useMemo)(() => {
|
|
142
160
|
let borderColor = isInvalid ? theme.colors.danger.main : colorScheme.main;
|
|
143
161
|
if ((variant === "outlined" || variant === "faded") && themeColor === "default") {
|
|
144
162
|
borderColor = import_palette2.colors.gray[300];
|
|
@@ -173,7 +191,7 @@ var useSelectVariantStyles = (themeColor, variant, isInvalid) => {
|
|
|
173
191
|
};
|
|
174
192
|
var useSelectLabelStyle = (themeColor, isInvalid, labelSize) => {
|
|
175
193
|
const { theme, colorScheme } = useSelectColorScheme(themeColor);
|
|
176
|
-
return (0,
|
|
194
|
+
return (0, import_react7.useMemo)(() => {
|
|
177
195
|
let baseColor = theme.colors.foreground;
|
|
178
196
|
if (isInvalid) {
|
|
179
197
|
baseColor = theme.colors.danger.main;
|
|
@@ -188,7 +206,7 @@ var useSelectLabelStyle = (themeColor, isInvalid, labelSize) => {
|
|
|
188
206
|
};
|
|
189
207
|
var useSelectValueColor = (isInvalid, shouldShowPlaceholder) => {
|
|
190
208
|
const theme = useXUITheme();
|
|
191
|
-
return (0,
|
|
209
|
+
return (0, import_react7.useMemo)(() => {
|
|
192
210
|
if (isInvalid) {
|
|
193
211
|
return theme.colors.danger.main;
|
|
194
212
|
}
|
|
@@ -200,7 +218,7 @@ var useSelectValueColor = (isInvalid, shouldShowPlaceholder) => {
|
|
|
200
218
|
};
|
|
201
219
|
var useSelectHelperColor = (isInvalid) => {
|
|
202
220
|
const theme = useXUITheme();
|
|
203
|
-
return (0,
|
|
221
|
+
return (0, import_react7.useMemo)(() => {
|
|
204
222
|
if (isInvalid) {
|
|
205
223
|
return theme.colors.danger.main;
|
|
206
224
|
}
|
|
@@ -209,7 +227,7 @@ var useSelectHelperColor = (isInvalid) => {
|
|
|
209
227
|
};
|
|
210
228
|
var useSelectSelectorColor = (isInvalid, shouldShowPlaceholder) => {
|
|
211
229
|
const theme = useXUITheme();
|
|
212
|
-
return (0,
|
|
230
|
+
return (0, import_react7.useMemo)(() => {
|
|
213
231
|
if (isInvalid) {
|
|
214
232
|
return theme.colors.danger.main;
|
|
215
233
|
}
|
|
@@ -221,8 +239,8 @@ var useSelectSelectorColor = (isInvalid, shouldShowPlaceholder) => {
|
|
|
221
239
|
};
|
|
222
240
|
|
|
223
241
|
// src/components/select/select.style.ts
|
|
224
|
-
var
|
|
225
|
-
var styles =
|
|
242
|
+
var import_react_native4 = require("react-native");
|
|
243
|
+
var styles = import_react_native4.StyleSheet.create({
|
|
226
244
|
container: {
|
|
227
245
|
gap: 6
|
|
228
246
|
},
|
|
@@ -301,17 +319,17 @@ var styles = import_react_native3.StyleSheet.create({
|
|
|
301
319
|
});
|
|
302
320
|
|
|
303
321
|
// src/components/select/select-trigger.tsx
|
|
304
|
-
var
|
|
305
|
-
var
|
|
322
|
+
var import_react9 = __toESM(require("react"), 1);
|
|
323
|
+
var import_react_native6 = require("react-native");
|
|
306
324
|
|
|
307
325
|
// src/components/select/chevron-down-icon.tsx
|
|
308
|
-
var
|
|
309
|
-
var
|
|
326
|
+
var import_react8 = __toESM(require("react"), 1);
|
|
327
|
+
var import_react_native5 = require("react-native");
|
|
310
328
|
var import_react_native_svg = __toESM(require("react-native-svg"), 1);
|
|
311
329
|
function ChevronDownIcon({ color, size, isOpen = false }) {
|
|
312
|
-
const rotation = (0,
|
|
313
|
-
(0,
|
|
314
|
-
|
|
330
|
+
const rotation = (0, import_react8.useRef)(new import_react_native5.Animated.Value(isOpen ? 1 : 0)).current;
|
|
331
|
+
(0, import_react8.useEffect)(() => {
|
|
332
|
+
import_react_native5.Animated.timing(rotation, {
|
|
315
333
|
toValue: isOpen ? 1 : 0,
|
|
316
334
|
duration: 180,
|
|
317
335
|
useNativeDriver: true
|
|
@@ -321,7 +339,7 @@ function ChevronDownIcon({ color, size, isOpen = false }) {
|
|
|
321
339
|
inputRange: [0, 1],
|
|
322
340
|
outputRange: ["0deg", "180deg"]
|
|
323
341
|
});
|
|
324
|
-
return /* @__PURE__ */
|
|
342
|
+
return /* @__PURE__ */ import_react8.default.createElement(import_react_native5.Animated.View, { style: { transform: [{ rotate }] } }, /* @__PURE__ */ import_react8.default.createElement(import_react_native_svg.default, { width: size, height: size, viewBox: "0 0 24 24", fill: "none" }, /* @__PURE__ */ import_react8.default.createElement(
|
|
325
343
|
import_react_native_svg.Path,
|
|
326
344
|
{
|
|
327
345
|
d: "M6 9L12 15L18 9",
|
|
@@ -358,9 +376,9 @@ var SelectTrigger = ({
|
|
|
358
376
|
textStyle,
|
|
359
377
|
style
|
|
360
378
|
}) => {
|
|
361
|
-
const renderSelectorIcon = selectorIcon ?? /* @__PURE__ */
|
|
362
|
-
return /* @__PURE__ */
|
|
363
|
-
|
|
379
|
+
const renderSelectorIcon = selectorIcon ?? /* @__PURE__ */ import_react9.default.createElement(ChevronDownIcon, { color: selectorColor, size: 16, isOpen });
|
|
380
|
+
return /* @__PURE__ */ import_react9.default.createElement(import_react_native6.View, { ref: triggerRef, collapsable: false }, /* @__PURE__ */ import_react9.default.createElement(
|
|
381
|
+
import_react_native6.Pressable,
|
|
364
382
|
{
|
|
365
383
|
onPress,
|
|
366
384
|
disabled: isDisabled,
|
|
@@ -381,8 +399,8 @@ var SelectTrigger = ({
|
|
|
381
399
|
style
|
|
382
400
|
]
|
|
383
401
|
},
|
|
384
|
-
/* @__PURE__ */
|
|
385
|
-
|
|
402
|
+
/* @__PURE__ */ import_react9.default.createElement(import_react_native6.View, { style: [styles.triggerContent, labelInside && styles.triggerContentColumn] }, startContent, /* @__PURE__ */ import_react9.default.createElement(import_react_native6.View, { style: styles.valueWrapper }, labelInside && labelNode, /* @__PURE__ */ import_react9.default.createElement(
|
|
403
|
+
import_react_native6.Text,
|
|
386
404
|
{
|
|
387
405
|
style: [
|
|
388
406
|
styles.valueText,
|
|
@@ -392,29 +410,29 @@ var SelectTrigger = ({
|
|
|
392
410
|
},
|
|
393
411
|
displayValue
|
|
394
412
|
)), endContent),
|
|
395
|
-
/* @__PURE__ */
|
|
413
|
+
/* @__PURE__ */ import_react9.default.createElement(import_react_native6.View, { style: styles.endSlot }, showClear && onClear && /* @__PURE__ */ import_react9.default.createElement(import_react_native6.Pressable, { onPress: onClear, style: styles.clearButton }, /* @__PURE__ */ import_react9.default.createElement(import_react_native6.Text, { style: [styles.clearText, { color: selectorColor }] }, "x")), renderSelectorIcon)
|
|
396
414
|
));
|
|
397
415
|
};
|
|
398
416
|
|
|
399
417
|
// src/components/select/select.animation.ts
|
|
400
|
-
var
|
|
401
|
-
var
|
|
418
|
+
var import_react10 = require("react");
|
|
419
|
+
var import_react_native7 = require("react-native");
|
|
402
420
|
var useSelectListboxAnimation = (isOpen) => {
|
|
403
|
-
const animationOpacity = (0,
|
|
404
|
-
const animationScale = (0,
|
|
405
|
-
(0,
|
|
421
|
+
const animationOpacity = (0, import_react10.useRef)(new import_react_native7.Animated.Value(0)).current;
|
|
422
|
+
const animationScale = (0, import_react10.useRef)(new import_react_native7.Animated.Value(0.98)).current;
|
|
423
|
+
(0, import_react10.useEffect)(() => {
|
|
406
424
|
if (!isOpen) {
|
|
407
425
|
return;
|
|
408
426
|
}
|
|
409
427
|
animationOpacity.setValue(0);
|
|
410
428
|
animationScale.setValue(0.98);
|
|
411
|
-
|
|
412
|
-
|
|
429
|
+
import_react_native7.Animated.parallel([
|
|
430
|
+
import_react_native7.Animated.timing(animationOpacity, {
|
|
413
431
|
toValue: 1,
|
|
414
432
|
duration: 180,
|
|
415
433
|
useNativeDriver: true
|
|
416
434
|
}),
|
|
417
|
-
|
|
435
|
+
import_react_native7.Animated.timing(animationScale, {
|
|
418
436
|
toValue: 1,
|
|
419
437
|
duration: 180,
|
|
420
438
|
useNativeDriver: true
|
|
@@ -425,16 +443,16 @@ var useSelectListboxAnimation = (isOpen) => {
|
|
|
425
443
|
};
|
|
426
444
|
|
|
427
445
|
// src/components/select/select.state.hook.ts
|
|
428
|
-
var
|
|
446
|
+
var import_react11 = require("react");
|
|
429
447
|
var useSelectOpenState = ({
|
|
430
448
|
isOpened,
|
|
431
449
|
isDisabled,
|
|
432
450
|
onOpenChange,
|
|
433
451
|
onClose
|
|
434
452
|
}) => {
|
|
435
|
-
const [internalOpen, setInternalOpen] = (0,
|
|
453
|
+
const [internalOpen, setInternalOpen] = (0, import_react11.useState)(false);
|
|
436
454
|
const isOpen = isOpened ?? internalOpen;
|
|
437
|
-
const setOpen = (0,
|
|
455
|
+
const setOpen = (0, import_react11.useCallback)(
|
|
438
456
|
(nextOpen) => {
|
|
439
457
|
if (nextOpen && isDisabled) {
|
|
440
458
|
return;
|
|
@@ -458,12 +476,12 @@ var useSelectSelection = ({
|
|
|
458
476
|
onSelectionChange,
|
|
459
477
|
onClear
|
|
460
478
|
}) => {
|
|
461
|
-
const [internalSelectedKeys, setInternalSelectedKeys] = (0,
|
|
479
|
+
const [internalSelectedKeys, setInternalSelectedKeys] = (0, import_react11.useState)(
|
|
462
480
|
defaultSelectedKeys ?? []
|
|
463
481
|
);
|
|
464
482
|
const isControlledSelection = selectedKeys !== void 0;
|
|
465
483
|
const currentSelectedKeys = isControlledSelection ? selectedKeys ?? [] : internalSelectedKeys;
|
|
466
|
-
const updateSelection = (0,
|
|
484
|
+
const updateSelection = (0, import_react11.useCallback)(
|
|
467
485
|
(nextKeys) => {
|
|
468
486
|
if (!isControlledSelection) {
|
|
469
487
|
setInternalSelectedKeys(nextKeys);
|
|
@@ -475,7 +493,7 @@ var useSelectSelection = ({
|
|
|
475
493
|
},
|
|
476
494
|
[isControlledSelection, onSelectionChange, onClear]
|
|
477
495
|
);
|
|
478
|
-
const getNextSelection = (0,
|
|
496
|
+
const getNextSelection = (0, import_react11.useCallback)(
|
|
479
497
|
(key) => {
|
|
480
498
|
const isAlreadySelected = currentSelectedKeys.includes(key);
|
|
481
499
|
if (selectionMode === "multiple") {
|
|
@@ -491,13 +509,13 @@ var useSelectSelection = ({
|
|
|
491
509
|
return { currentSelectedKeys, updateSelection, getNextSelection };
|
|
492
510
|
};
|
|
493
511
|
var useSelectTriggerMeasurements = (isOpen) => {
|
|
494
|
-
const triggerRef = (0,
|
|
495
|
-
const [triggerWidth, setTriggerWidth] = (0,
|
|
496
|
-
const [triggerPosition, setTriggerPosition] = (0,
|
|
497
|
-
const handleTriggerLayout = (0,
|
|
512
|
+
const triggerRef = (0, import_react11.useRef)(null);
|
|
513
|
+
const [triggerWidth, setTriggerWidth] = (0, import_react11.useState)(null);
|
|
514
|
+
const [triggerPosition, setTriggerPosition] = (0, import_react11.useState)(null);
|
|
515
|
+
const handleTriggerLayout = (0, import_react11.useCallback)((event) => {
|
|
498
516
|
setTriggerWidth(event.nativeEvent.layout.width);
|
|
499
517
|
}, []);
|
|
500
|
-
(0,
|
|
518
|
+
(0, import_react11.useEffect)(() => {
|
|
501
519
|
if (!isOpen) {
|
|
502
520
|
return;
|
|
503
521
|
}
|
|
@@ -566,13 +584,13 @@ var Select = ({
|
|
|
566
584
|
});
|
|
567
585
|
const { triggerRef, triggerWidth, triggerPosition, handleTriggerLayout } = useSelectTriggerMeasurements(isOpen);
|
|
568
586
|
const { animationOpacity, animationScale } = useSelectListboxAnimation(isOpen);
|
|
569
|
-
const disabledKeySet = (0,
|
|
587
|
+
const disabledKeySet = (0, import_react12.useMemo)(() => {
|
|
570
588
|
return new Set(disabledKeys ?? []);
|
|
571
589
|
}, [disabledKeys]);
|
|
572
|
-
const items = (0,
|
|
573
|
-
const elements =
|
|
590
|
+
const items = (0, import_react12.useMemo)(() => {
|
|
591
|
+
const elements = import_react12.default.Children.toArray(children).filter(Boolean);
|
|
574
592
|
return elements.map((child, index) => {
|
|
575
|
-
if (!
|
|
593
|
+
if (!import_react12.default.isValidElement(child)) {
|
|
576
594
|
return null;
|
|
577
595
|
}
|
|
578
596
|
const key = child.props.value ?? String(index);
|
|
@@ -584,7 +602,7 @@ var Select = ({
|
|
|
584
602
|
};
|
|
585
603
|
}).filter((item) => item !== null);
|
|
586
604
|
}, [children]);
|
|
587
|
-
const selectedLabels = (0,
|
|
605
|
+
const selectedLabels = (0, import_react12.useMemo)(() => {
|
|
588
606
|
const labelMap = new Map(items.map((item) => [item.key, item.labelText]));
|
|
589
607
|
return currentSelectedKeys.map((key) => labelMap.get(key)).filter((value) => Boolean(value));
|
|
590
608
|
}, [currentSelectedKeys, items]);
|
|
@@ -598,7 +616,7 @@ var Select = ({
|
|
|
598
616
|
const valueColor = useSelectValueColor(isInvalid, shouldShowPlaceholder);
|
|
599
617
|
const helperColor = useSelectHelperColor(isInvalid);
|
|
600
618
|
const selectorColor = useSelectSelectorColor(isInvalid, shouldShowPlaceholder);
|
|
601
|
-
const handleItemSelection = (0,
|
|
619
|
+
const handleItemSelection = (0, import_react12.useCallback)(
|
|
602
620
|
(key) => {
|
|
603
621
|
if (isDisabled) {
|
|
604
622
|
return;
|
|
@@ -629,13 +647,13 @@ var Select = ({
|
|
|
629
647
|
const handleOverlayPress = () => {
|
|
630
648
|
setOpen(false);
|
|
631
649
|
};
|
|
632
|
-
const renderLabel = label ? typeof label === "string" || typeof label === "number" ? /* @__PURE__ */
|
|
650
|
+
const renderLabel = label ? typeof label === "string" || typeof label === "number" ? /* @__PURE__ */ import_react12.default.createElement(import_react_native8.Text, { style: [styles.label, labelStyle] }, label) : /* @__PURE__ */ import_react12.default.createElement(import_react_native8.View, null, label) : null;
|
|
633
651
|
const dialogTitle = typeof label === "string" || typeof label === "number" ? String(label) : void 0;
|
|
634
652
|
const shouldShowHelper = Boolean(hint || errorMessage);
|
|
635
653
|
const helperContent = isInvalid && errorMessage ? errorMessage : hint;
|
|
636
654
|
const listboxWidth = fullWidth ? triggerWidth ?? triggerPosition?.width ?? 200 : 280;
|
|
637
|
-
const screenWidth =
|
|
638
|
-
const listboxPosition = (0,
|
|
655
|
+
const screenWidth = import_react_native8.Dimensions.get("window").width;
|
|
656
|
+
const listboxPosition = (0, import_react12.useMemo)(() => {
|
|
639
657
|
if (!triggerPosition) {
|
|
640
658
|
return { top: 0, left: 0 };
|
|
641
659
|
}
|
|
@@ -656,7 +674,7 @@ var Select = ({
|
|
|
656
674
|
handleItemSelection(item.key);
|
|
657
675
|
itemProps.onSelected?.();
|
|
658
676
|
};
|
|
659
|
-
return
|
|
677
|
+
return import_react12.default.cloneElement(item.element, {
|
|
660
678
|
key: item.key,
|
|
661
679
|
isDisabled: itemDisabled,
|
|
662
680
|
isSelected: itemSelected,
|
|
@@ -666,7 +684,7 @@ var Select = ({
|
|
|
666
684
|
const isLabelInside = labelPlacement === "inside";
|
|
667
685
|
const isLabelOutsideLeft = labelPlacement === "outside-left";
|
|
668
686
|
const isLabelOutside = labelPlacement === "outside" || labelPlacement === "outside-top";
|
|
669
|
-
const triggerContent = /* @__PURE__ */
|
|
687
|
+
const triggerContent = /* @__PURE__ */ import_react12.default.createElement(
|
|
670
688
|
SelectTrigger,
|
|
671
689
|
{
|
|
672
690
|
triggerRef,
|
|
@@ -694,16 +712,16 @@ var Select = ({
|
|
|
694
712
|
}
|
|
695
713
|
);
|
|
696
714
|
const labelBlock = isLabelOutside || isLabelInside ? renderLabel : null;
|
|
697
|
-
return /* @__PURE__ */
|
|
698
|
-
|
|
715
|
+
return /* @__PURE__ */ import_react12.default.createElement(import_react_native8.View, { style: [styles.container, fullWidth ? styles.fullWidth : styles.minWidth] }, isLabelOutside && labelBlock, isLabelOutsideLeft ? /* @__PURE__ */ import_react12.default.createElement(import_react_native8.View, { style: styles.outsideLeftRow }, renderLabel, triggerContent) : triggerContent, shouldShowHelper && helperContent ? typeof helperContent === "string" || typeof helperContent === "number" ? /* @__PURE__ */ import_react12.default.createElement(import_react_native8.Text, { style: [styles.helperText, { color: helperColor }] }, helperContent) : /* @__PURE__ */ import_react12.default.createElement(import_react_native8.View, null, helperContent) : null, /* @__PURE__ */ import_react12.default.createElement(
|
|
716
|
+
import_react_native8.Modal,
|
|
699
717
|
{
|
|
700
718
|
visible: isOpen,
|
|
701
719
|
transparent: true,
|
|
702
720
|
animationType: "fade",
|
|
703
721
|
onRequestClose: handleOverlayPress
|
|
704
722
|
},
|
|
705
|
-
/* @__PURE__ */
|
|
706
|
-
|
|
723
|
+
/* @__PURE__ */ import_react12.default.createElement(import_react_native8.Pressable, { style: styles.overlay, onPress: handleOverlayPress }, /* @__PURE__ */ import_react12.default.createElement(
|
|
724
|
+
import_react_native8.Animated.View,
|
|
707
725
|
{
|
|
708
726
|
style: [
|
|
709
727
|
styles.listbox,
|
|
@@ -721,26 +739,26 @@ var Select = ({
|
|
|
721
739
|
}
|
|
722
740
|
]
|
|
723
741
|
},
|
|
724
|
-
/* @__PURE__ */
|
|
725
|
-
|
|
742
|
+
/* @__PURE__ */ import_react12.default.createElement(import_react_native8.Pressable, { onPress: (event) => event.stopPropagation(), style: { flex: 1 } }, /* @__PURE__ */ import_react12.default.createElement(SelectContext.Provider, { value: { size, themeColor, isDisabled } }, /* @__PURE__ */ import_react12.default.createElement(import_react_native8.View, { style: styles.listboxContent }, dialogTitle ? /* @__PURE__ */ import_react12.default.createElement(
|
|
743
|
+
import_react_native8.Text,
|
|
726
744
|
{
|
|
727
745
|
style: [styles.dialogTitle, { color: theme.colors.foreground }]
|
|
728
746
|
},
|
|
729
747
|
dialogTitle
|
|
730
|
-
) : null, /* @__PURE__ */
|
|
748
|
+
) : null, /* @__PURE__ */ import_react12.default.createElement(import_react_native8.ScrollView, { style: { maxHeight: maxListboxHeight } }, listItems))))
|
|
731
749
|
))
|
|
732
750
|
));
|
|
733
751
|
};
|
|
734
752
|
|
|
735
753
|
// src/components/select/select-item.tsx
|
|
736
|
-
var
|
|
737
|
-
var
|
|
754
|
+
var import_react15 = __toESM(require("react"), 1);
|
|
755
|
+
var import_react_native10 = require("react-native");
|
|
738
756
|
|
|
739
757
|
// src/components/select/checkmark-icon.tsx
|
|
740
|
-
var
|
|
758
|
+
var import_react13 = __toESM(require("react"), 1);
|
|
741
759
|
var import_react_native_svg2 = __toESM(require("react-native-svg"), 1);
|
|
742
760
|
function CheckmarkIcon({ color, size }) {
|
|
743
|
-
return /* @__PURE__ */
|
|
761
|
+
return /* @__PURE__ */ import_react13.default.createElement(import_react_native_svg2.default, { width: size, height: size, viewBox: "0 0 17 18", fill: "none" }, /* @__PURE__ */ import_react13.default.createElement(
|
|
744
762
|
import_react_native_svg2.Polyline,
|
|
745
763
|
{
|
|
746
764
|
points: "1 9 7 14 15 4",
|
|
@@ -753,11 +771,11 @@ function CheckmarkIcon({ color, size }) {
|
|
|
753
771
|
}
|
|
754
772
|
|
|
755
773
|
// src/components/select/select-item.hook.ts
|
|
756
|
-
var
|
|
774
|
+
var import_react14 = require("react");
|
|
757
775
|
var import_core4 = require("@xaui/core");
|
|
758
776
|
var useSelectItemSizeStyles = (size) => {
|
|
759
777
|
const theme = useXUITheme();
|
|
760
|
-
return (0,
|
|
778
|
+
return (0, import_react14.useMemo)(() => {
|
|
761
779
|
const sizes = {
|
|
762
780
|
xs: {
|
|
763
781
|
paddingVertical: theme.spacing.sm,
|
|
@@ -791,7 +809,7 @@ var useSelectItemBackgroundColor = (themeColor, isSelected) => {
|
|
|
791
809
|
const theme = useXUITheme();
|
|
792
810
|
const safeThemeColor = (0, import_core4.getSafeThemeColor)(themeColor);
|
|
793
811
|
const colorScheme = theme.colors[safeThemeColor];
|
|
794
|
-
return (0,
|
|
812
|
+
return (0, import_react14.useMemo)(() => {
|
|
795
813
|
if (isSelected) {
|
|
796
814
|
return colorScheme.background;
|
|
797
815
|
}
|
|
@@ -800,7 +818,7 @@ var useSelectItemBackgroundColor = (themeColor, isSelected) => {
|
|
|
800
818
|
};
|
|
801
819
|
var useSelectItemTextColors = () => {
|
|
802
820
|
const theme = useXUITheme();
|
|
803
|
-
return (0,
|
|
821
|
+
return (0, import_react14.useMemo)(() => {
|
|
804
822
|
return {
|
|
805
823
|
textColor: theme.colors.foreground,
|
|
806
824
|
descriptionColor: theme.colors.foreground
|
|
@@ -811,7 +829,7 @@ var useSelectItemCheckmarkColor = (themeColor) => {
|
|
|
811
829
|
const theme = useXUITheme();
|
|
812
830
|
const safeThemeColor = (0, import_core4.getSafeThemeColor)(themeColor);
|
|
813
831
|
const colorScheme = theme.colors[safeThemeColor];
|
|
814
|
-
return (0,
|
|
832
|
+
return (0, import_react14.useMemo)(() => {
|
|
815
833
|
if (themeColor === "default") {
|
|
816
834
|
return theme.colors.primary.main;
|
|
817
835
|
}
|
|
@@ -820,8 +838,8 @@ var useSelectItemCheckmarkColor = (themeColor) => {
|
|
|
820
838
|
};
|
|
821
839
|
|
|
822
840
|
// src/components/select/select-item.style.ts
|
|
823
|
-
var
|
|
824
|
-
var styles2 =
|
|
841
|
+
var import_react_native9 = require("react-native");
|
|
842
|
+
var styles2 = import_react_native9.StyleSheet.create({
|
|
825
843
|
item: {
|
|
826
844
|
flexDirection: "row",
|
|
827
845
|
alignItems: "center",
|
|
@@ -857,7 +875,7 @@ var SelectItem = ({
|
|
|
857
875
|
textStyle,
|
|
858
876
|
onSelected
|
|
859
877
|
}) => {
|
|
860
|
-
const context = (0,
|
|
878
|
+
const context = (0, import_react15.useContext)(SelectContext);
|
|
861
879
|
const size = context?.size ?? defaultSize;
|
|
862
880
|
const themeColor = context?.themeColor ?? "default";
|
|
863
881
|
const isItemDisabled = context?.isDisabled ? true : isDisabled;
|
|
@@ -871,8 +889,8 @@ var SelectItem = ({
|
|
|
871
889
|
}
|
|
872
890
|
onSelected?.();
|
|
873
891
|
};
|
|
874
|
-
return /* @__PURE__ */
|
|
875
|
-
|
|
892
|
+
return /* @__PURE__ */ import_react15.default.createElement(
|
|
893
|
+
import_react_native10.Pressable,
|
|
876
894
|
{
|
|
877
895
|
onPress: handlePress,
|
|
878
896
|
disabled: isItemDisabled,
|
|
@@ -888,8 +906,8 @@ var SelectItem = ({
|
|
|
888
906
|
]
|
|
889
907
|
},
|
|
890
908
|
startContent,
|
|
891
|
-
/* @__PURE__ */
|
|
892
|
-
|
|
909
|
+
/* @__PURE__ */ import_react15.default.createElement(import_react_native10.View, { style: styles2.content }, /* @__PURE__ */ import_react15.default.createElement(
|
|
910
|
+
import_react_native10.Text,
|
|
893
911
|
{
|
|
894
912
|
style: [
|
|
895
913
|
styles2.title,
|
|
@@ -898,8 +916,8 @@ var SelectItem = ({
|
|
|
898
916
|
]
|
|
899
917
|
},
|
|
900
918
|
label
|
|
901
|
-
), description && /* @__PURE__ */
|
|
902
|
-
|
|
919
|
+
), description && /* @__PURE__ */ import_react15.default.createElement(
|
|
920
|
+
import_react_native10.Text,
|
|
903
921
|
{
|
|
904
922
|
style: [
|
|
905
923
|
styles2.description,
|
|
@@ -908,7 +926,7 @@ var SelectItem = ({
|
|
|
908
926
|
},
|
|
909
927
|
description
|
|
910
928
|
)),
|
|
911
|
-
isSelected && (selectedIcon || /* @__PURE__ */
|
|
929
|
+
isSelected && (selectedIcon || /* @__PURE__ */ import_react15.default.createElement(CheckmarkIcon, { color: checkmarkColor, size: 16 })),
|
|
912
930
|
endContent
|
|
913
931
|
);
|
|
914
932
|
};
|
package/dist/select/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CheckmarkIcon
|
|
3
|
+
} from "../chunk-GBHQCAKW.js";
|
|
1
4
|
import {
|
|
2
5
|
useXUITheme
|
|
3
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-NBRASCX4.js";
|
|
4
7
|
|
|
5
8
|
// src/components/select/select.tsx
|
|
6
9
|
import React3, { useCallback as useCallback2, useMemo as useMemo2 } from "react";
|
|
@@ -683,31 +686,15 @@ var Select = ({
|
|
|
683
686
|
style: [styles.dialogTitle, { color: theme.colors.foreground }]
|
|
684
687
|
},
|
|
685
688
|
dialogTitle
|
|
686
|
-
) : null, /* @__PURE__ */ React3.createElement(ScrollView,
|
|
689
|
+
) : null, /* @__PURE__ */ React3.createElement(ScrollView, { style: { maxHeight: maxListboxHeight } }, listItems))))
|
|
687
690
|
))
|
|
688
691
|
));
|
|
689
692
|
};
|
|
690
693
|
|
|
691
694
|
// src/components/select/select-item.tsx
|
|
692
|
-
import
|
|
695
|
+
import React4, { useContext } from "react";
|
|
693
696
|
import { Pressable as Pressable3, Text as Text3, View as View3 } from "react-native";
|
|
694
697
|
|
|
695
|
-
// src/components/select/checkmark-icon.tsx
|
|
696
|
-
import React4 from "react";
|
|
697
|
-
import Svg2, { Polyline } from "react-native-svg";
|
|
698
|
-
function CheckmarkIcon({ color, size }) {
|
|
699
|
-
return /* @__PURE__ */ React4.createElement(Svg2, { width: size, height: size, viewBox: "0 0 17 18", fill: "none" }, /* @__PURE__ */ React4.createElement(
|
|
700
|
-
Polyline,
|
|
701
|
-
{
|
|
702
|
-
points: "1 9 7 14 15 4",
|
|
703
|
-
stroke: color,
|
|
704
|
-
strokeWidth: 2,
|
|
705
|
-
strokeLinecap: "round",
|
|
706
|
-
strokeLinejoin: "round"
|
|
707
|
-
}
|
|
708
|
-
));
|
|
709
|
-
}
|
|
710
|
-
|
|
711
698
|
// src/components/select/select-item.hook.ts
|
|
712
699
|
import { useMemo as useMemo3 } from "react";
|
|
713
700
|
import { getSafeThemeColor as getSafeThemeColor2 } from "@xaui/core";
|
|
@@ -827,7 +814,7 @@ var SelectItem = ({
|
|
|
827
814
|
}
|
|
828
815
|
onSelected?.();
|
|
829
816
|
};
|
|
830
|
-
return /* @__PURE__ */
|
|
817
|
+
return /* @__PURE__ */ React4.createElement(
|
|
831
818
|
Pressable3,
|
|
832
819
|
{
|
|
833
820
|
onPress: handlePress,
|
|
@@ -844,7 +831,7 @@ var SelectItem = ({
|
|
|
844
831
|
]
|
|
845
832
|
},
|
|
846
833
|
startContent,
|
|
847
|
-
/* @__PURE__ */
|
|
834
|
+
/* @__PURE__ */ React4.createElement(View3, { style: styles2.content }, /* @__PURE__ */ React4.createElement(
|
|
848
835
|
Text3,
|
|
849
836
|
{
|
|
850
837
|
style: [
|
|
@@ -854,7 +841,7 @@ var SelectItem = ({
|
|
|
854
841
|
]
|
|
855
842
|
},
|
|
856
843
|
label
|
|
857
|
-
), description && /* @__PURE__ */
|
|
844
|
+
), description && /* @__PURE__ */ React4.createElement(
|
|
858
845
|
Text3,
|
|
859
846
|
{
|
|
860
847
|
style: [
|
|
@@ -864,7 +851,7 @@ var SelectItem = ({
|
|
|
864
851
|
},
|
|
865
852
|
description
|
|
866
853
|
)),
|
|
867
|
-
isSelected && (selectedIcon || /* @__PURE__ */
|
|
854
|
+
isSelected && (selectedIcon || /* @__PURE__ */ React4.createElement(CheckmarkIcon, { color: checkmarkColor, size: 16 })),
|
|
868
855
|
endContent
|
|
869
856
|
);
|
|
870
857
|
};
|