@xaui/native 0.0.11 → 0.0.12
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/autocomplete/index.cjs +151 -133
- package/dist/autocomplete/index.js +2 -2
- package/dist/{chunk-RE3CO277.js → chunk-CKGZOJVV.js} +423 -52
- package/dist/chunk-LM23DOX3.js +1647 -0
- package/dist/{chunk-W7JJVPK5.js → chunk-RL47NQAU.js} +3 -3
- package/dist/datepicker/index.cjs +2429 -0
- package/dist/datepicker/index.d.cts +45 -0
- package/dist/datepicker/index.d.ts +45 -0
- package/dist/datepicker/index.js +9 -0
- package/dist/icon/index.cjs +439 -65
- package/dist/icon/index.d.cts +7 -1
- package/dist/icon/index.d.ts +7 -1
- package/dist/icon/index.js +8 -2
- package/dist/index.cjs +2818 -670
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +6 -2
- package/package.json +8 -1
|
@@ -36,8 +36,8 @@ __export(autocomplete_exports, {
|
|
|
36
36
|
module.exports = __toCommonJS(autocomplete_exports);
|
|
37
37
|
|
|
38
38
|
// src/components/autocomplete/autocomplete.tsx
|
|
39
|
-
var
|
|
40
|
-
var
|
|
39
|
+
var import_react21 = __toESM(require("react"), 1);
|
|
40
|
+
var import_react_native17 = require("react-native");
|
|
41
41
|
|
|
42
42
|
// src/components/autocomplete/autocomplete-context.ts
|
|
43
43
|
var import_react = require("react");
|
|
@@ -404,8 +404,8 @@ var defaultFilterFunction = (textValue, inputValue) => {
|
|
|
404
404
|
};
|
|
405
405
|
|
|
406
406
|
// src/components/dialogs/autocomplete-dialog/autocomplete-dialog.tsx
|
|
407
|
-
var
|
|
408
|
-
var
|
|
407
|
+
var import_react19 = __toESM(require("react"), 1);
|
|
408
|
+
var import_react_native15 = require("react-native");
|
|
409
409
|
|
|
410
410
|
// src/components/select/checkmark-icon.tsx
|
|
411
411
|
var import_react9 = __toESM(require("react"), 1);
|
|
@@ -424,8 +424,8 @@ function CheckmarkIcon({ color, size }) {
|
|
|
424
424
|
}
|
|
425
425
|
|
|
426
426
|
// src/components/dialogs/autocomplete-dialog/autocomplete-dialog-header.tsx
|
|
427
|
-
var
|
|
428
|
-
var
|
|
427
|
+
var import_react17 = __toESM(require("react"), 1);
|
|
428
|
+
var import_react_native13 = require("react-native");
|
|
429
429
|
|
|
430
430
|
// src/components/icon/icons/arrow-back.tsx
|
|
431
431
|
var import_react10 = __toESM(require("react"), 1);
|
|
@@ -547,23 +547,41 @@ var ArrowBackIcon = ({
|
|
|
547
547
|
return /* @__PURE__ */ import_react10.default.createElement(import_react_native_svg2.default, { width: size, height: size, viewBox: "0 0 512 512" }, renderVariant());
|
|
548
548
|
};
|
|
549
549
|
|
|
550
|
-
// src/components/icon/icons/
|
|
550
|
+
// src/components/icon/icons/calendar.tsx
|
|
551
551
|
var import_react11 = __toESM(require("react"), 1);
|
|
552
552
|
var import_react_native6 = require("react-native");
|
|
553
553
|
var import_react_native_svg3 = __toESM(require("react-native-svg"), 1);
|
|
554
554
|
var AnimatedPath2 = import_react_native6.Animated.createAnimatedComponent(import_react_native_svg3.Path);
|
|
555
555
|
|
|
556
|
-
// src/components/icon/icons/
|
|
556
|
+
// src/components/icon/icons/checkmark.tsx
|
|
557
557
|
var import_react12 = __toESM(require("react"), 1);
|
|
558
558
|
var import_react_native7 = require("react-native");
|
|
559
559
|
var import_react_native_svg4 = __toESM(require("react-native-svg"), 1);
|
|
560
560
|
var AnimatedPath3 = import_react_native7.Animated.createAnimatedComponent(import_react_native_svg4.Path);
|
|
561
561
|
|
|
562
|
-
// src/components/icon/icons/
|
|
562
|
+
// src/components/icon/icons/chevron-down.tsx
|
|
563
563
|
var import_react13 = __toESM(require("react"), 1);
|
|
564
564
|
var import_react_native8 = require("react-native");
|
|
565
565
|
var import_react_native_svg5 = __toESM(require("react-native-svg"), 1);
|
|
566
566
|
var AnimatedPath4 = import_react_native8.Animated.createAnimatedComponent(import_react_native_svg5.Path);
|
|
567
|
+
|
|
568
|
+
// src/components/icon/icons/chevron-left.tsx
|
|
569
|
+
var import_react14 = __toESM(require("react"), 1);
|
|
570
|
+
var import_react_native9 = require("react-native");
|
|
571
|
+
var import_react_native_svg6 = __toESM(require("react-native-svg"), 1);
|
|
572
|
+
var AnimatedPath5 = import_react_native9.Animated.createAnimatedComponent(import_react_native_svg6.Path);
|
|
573
|
+
|
|
574
|
+
// src/components/icon/icons/chevron-right.tsx
|
|
575
|
+
var import_react15 = __toESM(require("react"), 1);
|
|
576
|
+
var import_react_native10 = require("react-native");
|
|
577
|
+
var import_react_native_svg7 = __toESM(require("react-native-svg"), 1);
|
|
578
|
+
var AnimatedPath6 = import_react_native10.Animated.createAnimatedComponent(import_react_native_svg7.Path);
|
|
579
|
+
|
|
580
|
+
// src/components/icon/icons/close.tsx
|
|
581
|
+
var import_react16 = __toESM(require("react"), 1);
|
|
582
|
+
var import_react_native11 = require("react-native");
|
|
583
|
+
var import_react_native_svg8 = __toESM(require("react-native-svg"), 1);
|
|
584
|
+
var AnimatedPath7 = import_react_native11.Animated.createAnimatedComponent(import_react_native_svg8.Path);
|
|
567
585
|
var CloseIcon = ({
|
|
568
586
|
variant = "baseline",
|
|
569
587
|
size = 24,
|
|
@@ -571,24 +589,24 @@ var CloseIcon = ({
|
|
|
571
589
|
isAnimated = false
|
|
572
590
|
}) => {
|
|
573
591
|
const theme = useXUITheme();
|
|
574
|
-
const scaleAnim = (0,
|
|
575
|
-
const opacityAnim = (0,
|
|
576
|
-
const resolvedColor = (0,
|
|
592
|
+
const scaleAnim = (0, import_react16.useRef)(new import_react_native11.Animated.Value(isAnimated ? 0 : 1)).current;
|
|
593
|
+
const opacityAnim = (0, import_react16.useRef)(new import_react_native11.Animated.Value(isAnimated ? 0 : 1)).current;
|
|
594
|
+
const resolvedColor = (0, import_react16.useMemo)(() => {
|
|
577
595
|
if (typeof color === "string" && isThemeColor(color)) {
|
|
578
596
|
return theme.colors[color].main;
|
|
579
597
|
}
|
|
580
598
|
return color;
|
|
581
599
|
}, [color, theme]);
|
|
582
|
-
(0,
|
|
600
|
+
(0, import_react16.useEffect)(() => {
|
|
583
601
|
if (isAnimated) {
|
|
584
|
-
|
|
585
|
-
|
|
602
|
+
import_react_native11.Animated.parallel([
|
|
603
|
+
import_react_native11.Animated.spring(scaleAnim, {
|
|
586
604
|
toValue: 1,
|
|
587
605
|
useNativeDriver: true,
|
|
588
606
|
tension: 50,
|
|
589
607
|
friction: 7
|
|
590
608
|
}),
|
|
591
|
-
|
|
609
|
+
import_react_native11.Animated.timing(opacityAnim, {
|
|
592
610
|
toValue: 1,
|
|
593
611
|
duration: 200,
|
|
594
612
|
useNativeDriver: true
|
|
@@ -600,39 +618,39 @@ var CloseIcon = ({
|
|
|
600
618
|
transform: [{ scale: scaleAnim }],
|
|
601
619
|
opacity: opacityAnim
|
|
602
620
|
} : void 0;
|
|
603
|
-
const renderBaseline = () => /* @__PURE__ */
|
|
604
|
-
|
|
621
|
+
const renderBaseline = () => /* @__PURE__ */ import_react16.default.createElement(
|
|
622
|
+
AnimatedPath7,
|
|
605
623
|
{
|
|
606
624
|
fill: resolvedColor,
|
|
607
625
|
d: "m289.94 256l95-95A24 24 0 0 0 351 127l-95 95l-95-95a24 24 0 0 0-34 34l95 95l-95 95a24 24 0 1 0 34 34l95-95l95 95a24 24 0 0 0 34-34Z",
|
|
608
626
|
...animatedProps
|
|
609
627
|
}
|
|
610
628
|
);
|
|
611
|
-
const renderFilled = () => /* @__PURE__ */
|
|
612
|
-
|
|
629
|
+
const renderFilled = () => /* @__PURE__ */ import_react16.default.createElement(
|
|
630
|
+
AnimatedPath7,
|
|
613
631
|
{
|
|
614
632
|
fill: resolvedColor,
|
|
615
633
|
d: "M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm75.31 260.69a16 16 0 1 1-22.62 22.62L256 278.63l-52.69 52.68a16 16 0 0 1-22.62-22.62L233.37 256l-52.68-52.69a16 16 0 0 1 22.62-22.62L256 233.37l52.69-52.68a16 16 0 0 1 22.62 22.62L278.63 256z",
|
|
616
634
|
...animatedProps
|
|
617
635
|
}
|
|
618
636
|
);
|
|
619
|
-
const renderDuotone = () => /* @__PURE__ */
|
|
620
|
-
|
|
637
|
+
const renderDuotone = () => /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement(
|
|
638
|
+
import_react_native_svg8.Path,
|
|
621
639
|
{
|
|
622
640
|
fill: resolvedColor,
|
|
623
641
|
opacity: 0.3,
|
|
624
642
|
d: "M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48z"
|
|
625
643
|
}
|
|
626
|
-
), /* @__PURE__ */
|
|
627
|
-
|
|
644
|
+
), /* @__PURE__ */ import_react16.default.createElement(
|
|
645
|
+
AnimatedPath7,
|
|
628
646
|
{
|
|
629
647
|
fill: resolvedColor,
|
|
630
648
|
d: "m289.94 256l95-95A24 24 0 0 0 351 127l-95 95l-95-95a24 24 0 0 0-34 34l95 95l-95 95a24 24 0 1 0 34 34l95-95l95 95a24 24 0 0 0 34-34Z",
|
|
631
649
|
...animatedProps
|
|
632
650
|
}
|
|
633
651
|
));
|
|
634
|
-
const renderRoundOutlined = () => /* @__PURE__ */
|
|
635
|
-
|
|
652
|
+
const renderRoundOutlined = () => /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement(
|
|
653
|
+
import_react_native_svg8.Circle,
|
|
636
654
|
{
|
|
637
655
|
cx: "256",
|
|
638
656
|
cy: "256",
|
|
@@ -641,16 +659,16 @@ var CloseIcon = ({
|
|
|
641
659
|
stroke: resolvedColor,
|
|
642
660
|
strokeWidth: 32
|
|
643
661
|
}
|
|
644
|
-
), /* @__PURE__ */
|
|
645
|
-
|
|
662
|
+
), /* @__PURE__ */ import_react16.default.createElement(
|
|
663
|
+
AnimatedPath7,
|
|
646
664
|
{
|
|
647
665
|
fill: resolvedColor,
|
|
648
666
|
d: "m289.94 256l95-95A24 24 0 0 0 351 127l-95 95l-95-95a24 24 0 0 0-34 34l95 95l-95 95a24 24 0 1 0 34 34l95-95l95 95a24 24 0 0 0 34-34Z",
|
|
649
667
|
...animatedProps
|
|
650
668
|
}
|
|
651
669
|
));
|
|
652
|
-
const renderSquareOutlined = () => /* @__PURE__ */
|
|
653
|
-
|
|
670
|
+
const renderSquareOutlined = () => /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement(
|
|
671
|
+
import_react_native_svg8.Rect,
|
|
654
672
|
{
|
|
655
673
|
x: "64",
|
|
656
674
|
y: "64",
|
|
@@ -661,24 +679,24 @@ var CloseIcon = ({
|
|
|
661
679
|
stroke: resolvedColor,
|
|
662
680
|
strokeWidth: 32
|
|
663
681
|
}
|
|
664
|
-
), /* @__PURE__ */
|
|
665
|
-
|
|
682
|
+
), /* @__PURE__ */ import_react16.default.createElement(
|
|
683
|
+
AnimatedPath7,
|
|
666
684
|
{
|
|
667
685
|
fill: resolvedColor,
|
|
668
686
|
d: "m289.94 256l95-95A24 24 0 0 0 351 127l-95 95l-95-95a24 24 0 0 0-34 34l95 95l-95 95a24 24 0 1 0 34 34l95-95l95 95a24 24 0 0 0 34-34Z",
|
|
669
687
|
...animatedProps
|
|
670
688
|
}
|
|
671
689
|
));
|
|
672
|
-
const renderRoundFilled = () => /* @__PURE__ */
|
|
673
|
-
|
|
690
|
+
const renderRoundFilled = () => /* @__PURE__ */ import_react16.default.createElement(
|
|
691
|
+
AnimatedPath7,
|
|
674
692
|
{
|
|
675
693
|
fill: resolvedColor,
|
|
676
694
|
d: "M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm75.31 260.69a16 16 0 1 1-22.62 22.62L256 278.63l-52.69 52.68a16 16 0 0 1-22.62-22.62L233.37 256l-52.68-52.69a16 16 0 0 1 22.62-22.62L256 233.37l52.69-52.68a16 16 0 0 1 22.62 22.62L278.63 256z",
|
|
677
695
|
...animatedProps
|
|
678
696
|
}
|
|
679
697
|
);
|
|
680
|
-
const renderSquareFilled = () => /* @__PURE__ */
|
|
681
|
-
|
|
698
|
+
const renderSquareFilled = () => /* @__PURE__ */ import_react16.default.createElement(
|
|
699
|
+
AnimatedPath7,
|
|
682
700
|
{
|
|
683
701
|
fill: resolvedColor,
|
|
684
702
|
d: "M400 64H112a48 48 0 0 0-48 48v288a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V112a48 48 0 0 0-48-48zm-59.31 244.69a16 16 0 1 1-22.62 22.62L256 278.63l-62.07 52.68a16 16 0 0 1-22.62-22.62L223.37 256l-52.06-52.69a16 16 0 0 1 22.62-22.62L256 233.37l62.07-52.68a16 16 0 0 1 22.62 22.62L288.63 256z",
|
|
@@ -704,14 +722,14 @@ var CloseIcon = ({
|
|
|
704
722
|
return renderBaseline();
|
|
705
723
|
}
|
|
706
724
|
};
|
|
707
|
-
return /* @__PURE__ */
|
|
725
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react_native_svg8.default, { width: size, height: size, viewBox: "0 0 512 512" }, renderVariant());
|
|
708
726
|
};
|
|
709
727
|
|
|
710
728
|
// src/components/dialogs/autocomplete-dialog/autocomplete-dialog.style.ts
|
|
711
|
-
var
|
|
712
|
-
var styles2 =
|
|
729
|
+
var import_react_native12 = require("react-native");
|
|
730
|
+
var styles2 = import_react_native12.StyleSheet.create({
|
|
713
731
|
backdrop: {
|
|
714
|
-
...
|
|
732
|
+
...import_react_native12.StyleSheet.absoluteFillObject,
|
|
715
733
|
backgroundColor: "rgba(0, 0, 0, 0.5)"
|
|
716
734
|
},
|
|
717
735
|
dialogContainer: {
|
|
@@ -806,17 +824,17 @@ var AutocompleteDialogHeader = ({
|
|
|
806
824
|
onBlur
|
|
807
825
|
}) => {
|
|
808
826
|
const theme = useXUITheme();
|
|
809
|
-
return /* @__PURE__ */
|
|
810
|
-
|
|
827
|
+
return /* @__PURE__ */ import_react17.default.createElement(import_react_native13.View, { style: styles2.header }, title ? /* @__PURE__ */ import_react17.default.createElement(import_react_native13.View, { style: styles2.titleRow }, /* @__PURE__ */ import_react17.default.createElement(
|
|
828
|
+
import_react_native13.Pressable,
|
|
811
829
|
{
|
|
812
830
|
style: styles2.backButton,
|
|
813
831
|
onPress: onClose,
|
|
814
832
|
accessibilityLabel: "Back",
|
|
815
833
|
accessibilityRole: "button"
|
|
816
834
|
},
|
|
817
|
-
/* @__PURE__ */
|
|
818
|
-
), /* @__PURE__ */
|
|
819
|
-
|
|
835
|
+
/* @__PURE__ */ import_react17.default.createElement(ArrowBackIcon, { size: 20, color: theme.colors.foreground })
|
|
836
|
+
), /* @__PURE__ */ import_react17.default.createElement(import_react_native13.Text, { style: [styles2.title, { color: theme.colors.foreground }] }, title)) : null, /* @__PURE__ */ import_react17.default.createElement(import_react_native13.View, { style: styles2.inputContainer }, /* @__PURE__ */ import_react17.default.createElement(import_react_native13.Animated.View, { style: [styles2.inputWrapper, inputAnimatedStyle] }, /* @__PURE__ */ import_react17.default.createElement(
|
|
837
|
+
import_react_native13.TextInput,
|
|
820
838
|
{
|
|
821
839
|
ref: inputRef,
|
|
822
840
|
value: inputValue,
|
|
@@ -840,42 +858,42 @@ var AutocompleteDialogHeader = ({
|
|
|
840
858
|
onFocus,
|
|
841
859
|
onBlur
|
|
842
860
|
}
|
|
843
|
-
), inputValue ? /* @__PURE__ */
|
|
844
|
-
|
|
861
|
+
), inputValue ? /* @__PURE__ */ import_react17.default.createElement(
|
|
862
|
+
import_react_native13.Pressable,
|
|
845
863
|
{
|
|
846
864
|
style: styles2.clearInputButton,
|
|
847
865
|
onPress: () => onInputChange?.(""),
|
|
848
866
|
accessibilityLabel: "Clear input",
|
|
849
867
|
accessibilityRole: "button"
|
|
850
868
|
},
|
|
851
|
-
/* @__PURE__ */
|
|
869
|
+
/* @__PURE__ */ import_react17.default.createElement(CloseIcon, { color: theme.colors.foreground })
|
|
852
870
|
) : null)));
|
|
853
871
|
};
|
|
854
872
|
|
|
855
873
|
// src/components/dialogs/autocomplete-dialog/autocomplete-dialog.animation.ts
|
|
856
|
-
var
|
|
857
|
-
var
|
|
874
|
+
var import_react18 = require("react");
|
|
875
|
+
var import_react_native14 = require("react-native");
|
|
858
876
|
var useAutocompleteDialogAnimation = ({
|
|
859
877
|
visible,
|
|
860
878
|
fadeAnim,
|
|
861
879
|
slideAnim,
|
|
862
880
|
scaleAnim
|
|
863
881
|
}) => {
|
|
864
|
-
(0,
|
|
882
|
+
(0, import_react18.useEffect)(() => {
|
|
865
883
|
if (visible) {
|
|
866
|
-
|
|
867
|
-
|
|
884
|
+
import_react_native14.Animated.parallel([
|
|
885
|
+
import_react_native14.Animated.timing(fadeAnim, {
|
|
868
886
|
toValue: 1,
|
|
869
887
|
duration: 250,
|
|
870
888
|
useNativeDriver: true
|
|
871
889
|
}),
|
|
872
|
-
|
|
890
|
+
import_react_native14.Animated.spring(slideAnim, {
|
|
873
891
|
toValue: 1,
|
|
874
892
|
useNativeDriver: true,
|
|
875
893
|
tension: 65,
|
|
876
894
|
friction: 10
|
|
877
895
|
}),
|
|
878
|
-
|
|
896
|
+
import_react_native14.Animated.spring(scaleAnim, {
|
|
879
897
|
toValue: 1,
|
|
880
898
|
useNativeDriver: true,
|
|
881
899
|
tension: 50,
|
|
@@ -909,19 +927,19 @@ var AutocompleteDialog = ({
|
|
|
909
927
|
onBlur
|
|
910
928
|
}) => {
|
|
911
929
|
const theme = useXUITheme();
|
|
912
|
-
const { width: screenWidth, height: screenHeight } = (0,
|
|
913
|
-
const fadeAnim = (0,
|
|
914
|
-
const slideAnim = (0,
|
|
915
|
-
const scaleAnim = (0,
|
|
916
|
-
const inputRef = (0,
|
|
917
|
-
const [keyboardHeight, setKeyboardHeight] = (0,
|
|
918
|
-
(0,
|
|
919
|
-
const showEvent =
|
|
920
|
-
const hideEvent =
|
|
921
|
-
const showSub =
|
|
930
|
+
const { width: screenWidth, height: screenHeight } = (0, import_react_native15.useWindowDimensions)();
|
|
931
|
+
const fadeAnim = (0, import_react19.useRef)(new import_react_native15.Animated.Value(0)).current;
|
|
932
|
+
const slideAnim = (0, import_react19.useRef)(new import_react_native15.Animated.Value(0)).current;
|
|
933
|
+
const scaleAnim = (0, import_react19.useRef)(new import_react_native15.Animated.Value(0)).current;
|
|
934
|
+
const inputRef = (0, import_react19.useRef)(null);
|
|
935
|
+
const [keyboardHeight, setKeyboardHeight] = (0, import_react19.useState)(0);
|
|
936
|
+
(0, import_react19.useEffect)(() => {
|
|
937
|
+
const showEvent = import_react_native15.Platform.OS === "ios" ? "keyboardWillShow" : "keyboardDidShow";
|
|
938
|
+
const hideEvent = import_react_native15.Platform.OS === "ios" ? "keyboardWillHide" : "keyboardDidHide";
|
|
939
|
+
const showSub = import_react_native15.Keyboard.addListener(showEvent, (e) => {
|
|
922
940
|
setKeyboardHeight(e.endCoordinates.height);
|
|
923
941
|
});
|
|
924
|
-
const hideSub =
|
|
942
|
+
const hideSub = import_react_native15.Keyboard.addListener(hideEvent, () => {
|
|
925
943
|
setKeyboardHeight(0);
|
|
926
944
|
});
|
|
927
945
|
return () => {
|
|
@@ -929,26 +947,26 @@ var AutocompleteDialog = ({
|
|
|
929
947
|
hideSub.remove();
|
|
930
948
|
};
|
|
931
949
|
}, []);
|
|
932
|
-
const items = (0,
|
|
933
|
-
() =>
|
|
934
|
-
|
|
950
|
+
const items = (0, import_react19.useMemo)(
|
|
951
|
+
() => import_react19.default.Children.toArray(children).filter(
|
|
952
|
+
import_react19.default.isValidElement
|
|
935
953
|
),
|
|
936
954
|
[children]
|
|
937
955
|
);
|
|
938
956
|
const checkmarkColor = theme.colors[themeColor].main;
|
|
939
957
|
const checkmarkBackgroundColor = theme.colors[themeColor].background;
|
|
940
958
|
useAutocompleteDialogAnimation({ visible, fadeAnim, slideAnim, scaleAnim });
|
|
941
|
-
(0,
|
|
959
|
+
(0, import_react19.useEffect)(() => {
|
|
942
960
|
if (!visible) return;
|
|
943
|
-
const sub =
|
|
961
|
+
const sub = import_react_native15.BackHandler.addEventListener("hardwareBackPress", () => {
|
|
944
962
|
onClose?.();
|
|
945
963
|
return true;
|
|
946
964
|
});
|
|
947
965
|
return () => sub.remove();
|
|
948
966
|
}, [visible, onClose]);
|
|
949
|
-
const focusInput = (0,
|
|
950
|
-
const delay =
|
|
951
|
-
|
|
967
|
+
const focusInput = (0, import_react19.useCallback)(() => {
|
|
968
|
+
const delay = import_react_native15.Platform.OS === "android" ? 300 : 100;
|
|
969
|
+
import_react_native15.InteractionManager.runAfterInteractions(() => {
|
|
952
970
|
setTimeout(() => {
|
|
953
971
|
inputRef.current?.focus();
|
|
954
972
|
}, delay);
|
|
@@ -956,16 +974,16 @@ var AutocompleteDialog = ({
|
|
|
956
974
|
}, []);
|
|
957
975
|
const handleCheckmarkPress = () => {
|
|
958
976
|
onCheckmark?.();
|
|
959
|
-
|
|
977
|
+
import_react_native15.Keyboard.dismiss();
|
|
960
978
|
};
|
|
961
|
-
(0,
|
|
979
|
+
(0, import_react19.useEffect)(() => {
|
|
962
980
|
if (!visible) {
|
|
963
|
-
|
|
981
|
+
import_react_native15.Keyboard.dismiss();
|
|
964
982
|
return;
|
|
965
983
|
}
|
|
966
984
|
focusInput();
|
|
967
985
|
}, [focusInput, visible]);
|
|
968
|
-
const listBottomPadding = (0,
|
|
986
|
+
const listBottomPadding = (0, import_react19.useMemo)(() => {
|
|
969
987
|
const basePadding = showCheckmark ? 96 : 64;
|
|
970
988
|
return (keyboardHeight > 0 ? keyboardHeight : 0) + basePadding;
|
|
971
989
|
}, [keyboardHeight, showCheckmark]);
|
|
@@ -990,7 +1008,7 @@ var AutocompleteDialog = ({
|
|
|
990
1008
|
const inputAnimatedStyle = {
|
|
991
1009
|
transform: [{ scaleX: scaleAnim }]
|
|
992
1010
|
};
|
|
993
|
-
const listHeader = /* @__PURE__ */
|
|
1011
|
+
const listHeader = /* @__PURE__ */ import_react19.default.createElement(
|
|
994
1012
|
AutocompleteDialogHeader,
|
|
995
1013
|
{
|
|
996
1014
|
title,
|
|
@@ -1006,14 +1024,14 @@ var AutocompleteDialog = ({
|
|
|
1006
1024
|
onBlur
|
|
1007
1025
|
}
|
|
1008
1026
|
);
|
|
1009
|
-
return /* @__PURE__ */
|
|
1010
|
-
|
|
1027
|
+
return /* @__PURE__ */ import_react19.default.createElement(Portal, null, /* @__PURE__ */ import_react19.default.createElement(import_react_native15.View, { style: [overlayStyle, style] }, /* @__PURE__ */ import_react19.default.createElement(import_react_native15.Animated.View, { style: [styles2.backdrop, { opacity: fadeAnim }] }), /* @__PURE__ */ import_react19.default.createElement(import_react_native15.Animated.View, { style: [styles2.dialogContainer, containerAnimatedStyle] }, /* @__PURE__ */ import_react19.default.createElement(
|
|
1028
|
+
import_react_native15.View,
|
|
1011
1029
|
{
|
|
1012
1030
|
style: [styles2.container, { backgroundColor: theme.colors.background }]
|
|
1013
1031
|
},
|
|
1014
1032
|
listHeader,
|
|
1015
|
-
/* @__PURE__ */
|
|
1016
|
-
|
|
1033
|
+
/* @__PURE__ */ import_react19.default.createElement(
|
|
1034
|
+
import_react_native15.FlatList,
|
|
1017
1035
|
{
|
|
1018
1036
|
data: items,
|
|
1019
1037
|
renderItem: ({ item }) => item,
|
|
@@ -1027,8 +1045,8 @@ var AutocompleteDialog = ({
|
|
|
1027
1045
|
showsVerticalScrollIndicator: false
|
|
1028
1046
|
}
|
|
1029
1047
|
),
|
|
1030
|
-
showCheckmark ? /* @__PURE__ */
|
|
1031
|
-
|
|
1048
|
+
showCheckmark ? /* @__PURE__ */ import_react19.default.createElement(import_react_native15.View, { style: styles2.checkmarkButtonContainer }, /* @__PURE__ */ import_react19.default.createElement(
|
|
1049
|
+
import_react_native15.Pressable,
|
|
1032
1050
|
{
|
|
1033
1051
|
style: [
|
|
1034
1052
|
styles2.checkmarkButton,
|
|
@@ -1038,14 +1056,14 @@ var AutocompleteDialog = ({
|
|
|
1038
1056
|
accessibilityLabel: "Confirm",
|
|
1039
1057
|
accessibilityRole: "button"
|
|
1040
1058
|
},
|
|
1041
|
-
checkmarkIcon ?? /* @__PURE__ */
|
|
1059
|
+
checkmarkIcon ?? /* @__PURE__ */ import_react19.default.createElement(CheckmarkIcon, { color: checkmarkColor, size: 20 })
|
|
1042
1060
|
)) : null
|
|
1043
1061
|
))));
|
|
1044
1062
|
};
|
|
1045
1063
|
|
|
1046
1064
|
// src/components/autocomplete/autocomplete-trigger.tsx
|
|
1047
|
-
var
|
|
1048
|
-
var
|
|
1065
|
+
var import_react20 = __toESM(require("react"), 1);
|
|
1066
|
+
var import_react_native16 = require("react-native");
|
|
1049
1067
|
var AutocompleteTrigger = ({
|
|
1050
1068
|
triggerRef,
|
|
1051
1069
|
isDisabled,
|
|
@@ -1068,8 +1086,8 @@ var AutocompleteTrigger = ({
|
|
|
1068
1086
|
onLayout: handleTriggerLayout
|
|
1069
1087
|
}) => {
|
|
1070
1088
|
const renderLabel = isLabelInside && label;
|
|
1071
|
-
return /* @__PURE__ */
|
|
1072
|
-
|
|
1089
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
1090
|
+
import_react_native16.Pressable,
|
|
1073
1091
|
{
|
|
1074
1092
|
ref: triggerRef,
|
|
1075
1093
|
onPress: handleTriggerPress,
|
|
@@ -1091,8 +1109,8 @@ var AutocompleteTrigger = ({
|
|
|
1091
1109
|
accessibilityRole: "button",
|
|
1092
1110
|
accessibilityState: { disabled: isDisabled }
|
|
1093
1111
|
},
|
|
1094
|
-
/* @__PURE__ */
|
|
1095
|
-
|
|
1112
|
+
/* @__PURE__ */ import_react20.default.createElement(import_react_native16.View, { style: styles.triggerContent }, isLabelInside && renderLabel, /* @__PURE__ */ import_react20.default.createElement(
|
|
1113
|
+
import_react_native16.Text,
|
|
1096
1114
|
{
|
|
1097
1115
|
style: [
|
|
1098
1116
|
styles.triggerText,
|
|
@@ -1105,14 +1123,14 @@ var AutocompleteTrigger = ({
|
|
|
1105
1123
|
},
|
|
1106
1124
|
displayValue
|
|
1107
1125
|
)),
|
|
1108
|
-
isClearable && (currentSelectedKey || currentInputValue) ? /* @__PURE__ */
|
|
1109
|
-
|
|
1126
|
+
isClearable && (currentSelectedKey || currentInputValue) ? /* @__PURE__ */ import_react20.default.createElement(
|
|
1127
|
+
import_react_native16.TouchableOpacity,
|
|
1110
1128
|
{
|
|
1111
1129
|
onPress: handleClear,
|
|
1112
1130
|
style: styles.clearButton,
|
|
1113
1131
|
hitSlop: { top: 8, right: 8, bottom: 8, left: 8 }
|
|
1114
1132
|
},
|
|
1115
|
-
clearIcon ?? /* @__PURE__ */
|
|
1133
|
+
clearIcon ?? /* @__PURE__ */ import_react20.default.createElement(CloseIcon, { color: theme.colors.foreground, size: 20 })
|
|
1116
1134
|
) : null
|
|
1117
1135
|
);
|
|
1118
1136
|
};
|
|
@@ -1163,17 +1181,17 @@ var Autocomplete = ({
|
|
|
1163
1181
|
onOpenChange,
|
|
1164
1182
|
onClose
|
|
1165
1183
|
});
|
|
1166
|
-
const triggerRef = (0,
|
|
1167
|
-
const [triggerLayout, setTriggerLayout] = (0,
|
|
1168
|
-
const handleTriggerLayout = (0,
|
|
1184
|
+
const triggerRef = (0, import_react21.useRef)(null);
|
|
1185
|
+
const [triggerLayout, setTriggerLayout] = (0, import_react21.useState)();
|
|
1186
|
+
const handleTriggerLayout = (0, import_react21.useCallback)(() => {
|
|
1169
1187
|
triggerRef.current?.measureInWindow((x, y, width, height) => {
|
|
1170
1188
|
setTriggerLayout({ x, y, width, height });
|
|
1171
1189
|
});
|
|
1172
1190
|
}, []);
|
|
1173
|
-
const items = (0,
|
|
1174
|
-
const elements =
|
|
1191
|
+
const items = (0, import_react21.useMemo)(() => {
|
|
1192
|
+
const elements = import_react21.default.Children.toArray(children).filter(Boolean);
|
|
1175
1193
|
return elements.map((child, index) => {
|
|
1176
|
-
if (!
|
|
1194
|
+
if (!import_react21.default.isValidElement(child)) {
|
|
1177
1195
|
return null;
|
|
1178
1196
|
}
|
|
1179
1197
|
const key = child.props.value ?? String(index);
|
|
@@ -1185,7 +1203,7 @@ var Autocomplete = ({
|
|
|
1185
1203
|
};
|
|
1186
1204
|
}).filter((item) => item !== null);
|
|
1187
1205
|
}, [children]);
|
|
1188
|
-
const filteredItems = (0,
|
|
1206
|
+
const filteredItems = (0, import_react21.useMemo)(() => {
|
|
1189
1207
|
if (disableLocalFilter || !currentInputValue.trim()) {
|
|
1190
1208
|
return items;
|
|
1191
1209
|
}
|
|
@@ -1205,7 +1223,7 @@ var Autocomplete = ({
|
|
|
1205
1223
|
const helperColor = useAutocompleteHelperColor(isInvalid);
|
|
1206
1224
|
const selectedItem = items.find((item) => item.key === currentSelectedKey);
|
|
1207
1225
|
const displayValue = forceSelection ? selectedItem?.labelText || placeholder : currentInputValue || placeholder;
|
|
1208
|
-
const handleInputChange = (0,
|
|
1226
|
+
const handleInputChange = (0, import_react21.useCallback)(
|
|
1209
1227
|
(text) => {
|
|
1210
1228
|
updateInputValue(text);
|
|
1211
1229
|
const selectedLabel = selectedItem?.labelText ?? "";
|
|
@@ -1222,7 +1240,7 @@ var Autocomplete = ({
|
|
|
1222
1240
|
currentSelectedKey
|
|
1223
1241
|
]
|
|
1224
1242
|
);
|
|
1225
|
-
const handleItemSelection = (0,
|
|
1243
|
+
const handleItemSelection = (0, import_react21.useCallback)(
|
|
1226
1244
|
(key, itemLabel) => {
|
|
1227
1245
|
if (isDisabled) {
|
|
1228
1246
|
return;
|
|
@@ -1230,16 +1248,16 @@ var Autocomplete = ({
|
|
|
1230
1248
|
updateSelection(key);
|
|
1231
1249
|
updateInputValue(itemLabel);
|
|
1232
1250
|
setTimeout(() => {
|
|
1233
|
-
|
|
1251
|
+
import_react_native17.Keyboard.dismiss();
|
|
1234
1252
|
setOpen(false);
|
|
1235
1253
|
}, 50);
|
|
1236
1254
|
},
|
|
1237
1255
|
[isDisabled, updateSelection, updateInputValue, setOpen]
|
|
1238
1256
|
);
|
|
1239
|
-
const handleCheckmark = (0,
|
|
1257
|
+
const handleCheckmark = (0, import_react21.useCallback)(() => {
|
|
1240
1258
|
setOpen(false);
|
|
1241
1259
|
}, [setOpen]);
|
|
1242
|
-
const handleClear = (0,
|
|
1260
|
+
const handleClear = (0, import_react21.useCallback)(() => {
|
|
1243
1261
|
if (isDisabled) {
|
|
1244
1262
|
return;
|
|
1245
1263
|
}
|
|
@@ -1247,7 +1265,7 @@ var Autocomplete = ({
|
|
|
1247
1265
|
updateInputValue("");
|
|
1248
1266
|
onClear?.();
|
|
1249
1267
|
}, [isDisabled, updateSelection, updateInputValue, onClear]);
|
|
1250
|
-
const handleTriggerPress = (0,
|
|
1268
|
+
const handleTriggerPress = (0, import_react21.useCallback)(() => {
|
|
1251
1269
|
if (!isDisabled) {
|
|
1252
1270
|
if (selectedItem && !currentInputValue) {
|
|
1253
1271
|
updateInputValue(selectedItem.labelText);
|
|
@@ -1266,7 +1284,7 @@ var Autocomplete = ({
|
|
|
1266
1284
|
handleItemSelection(item.key, item.labelText);
|
|
1267
1285
|
itemProps.onSelected?.();
|
|
1268
1286
|
};
|
|
1269
|
-
return
|
|
1287
|
+
return import_react21.default.cloneElement(item.element, {
|
|
1270
1288
|
key: item.key,
|
|
1271
1289
|
isDisabled: itemDisabled,
|
|
1272
1290
|
isSelected: itemSelected,
|
|
@@ -1277,10 +1295,10 @@ var Autocomplete = ({
|
|
|
1277
1295
|
const isLabelInside = labelPlacement === "inside";
|
|
1278
1296
|
const isLabelOutsideLeft = labelPlacement === "outside-left";
|
|
1279
1297
|
const isLabelOutside = labelPlacement === "outside" || labelPlacement === "outside-top";
|
|
1280
|
-
const renderLabel = label ? typeof label === "string" || typeof label === "number" ? /* @__PURE__ */
|
|
1298
|
+
const renderLabel = label ? typeof label === "string" || typeof label === "number" ? /* @__PURE__ */ import_react21.default.createElement(import_react_native17.Text, { style: [styles.label, labelStyle] }, label) : /* @__PURE__ */ import_react21.default.createElement(import_react_native17.View, null, label) : null;
|
|
1281
1299
|
const shouldShowHelper = Boolean(description || errorMessage);
|
|
1282
1300
|
const helperContent = isInvalid && errorMessage ? errorMessage : description;
|
|
1283
|
-
const triggerContent = /* @__PURE__ */
|
|
1301
|
+
const triggerContent = /* @__PURE__ */ import_react21.default.createElement(
|
|
1284
1302
|
AutocompleteTrigger,
|
|
1285
1303
|
{
|
|
1286
1304
|
triggerRef,
|
|
@@ -1305,7 +1323,7 @@ var Autocomplete = ({
|
|
|
1305
1323
|
}
|
|
1306
1324
|
);
|
|
1307
1325
|
const labelBlock = isLabelOutside || isLabelInside ? renderLabel : null;
|
|
1308
|
-
return /* @__PURE__ */
|
|
1326
|
+
return /* @__PURE__ */ import_react21.default.createElement(import_react_native17.View, { style: [styles.container, fullWidth ? styles.fullWidth : styles.minWidth] }, isLabelOutside && labelBlock, isLabelOutsideLeft ? /* @__PURE__ */ import_react21.default.createElement(import_react_native17.View, { style: styles.outsideLeftRow }, renderLabel, triggerContent) : triggerContent, shouldShowHelper && helperContent ? typeof helperContent === "string" || typeof helperContent === "number" ? /* @__PURE__ */ import_react21.default.createElement(import_react_native17.Text, { style: [styles.helperText, { color: helperColor }] }, helperContent) : /* @__PURE__ */ import_react21.default.createElement(import_react_native17.View, null, helperContent) : null, /* @__PURE__ */ import_react21.default.createElement(
|
|
1309
1327
|
AutocompleteDialog,
|
|
1310
1328
|
{
|
|
1311
1329
|
visible: isOpen,
|
|
@@ -1319,17 +1337,17 @@ var Autocomplete = ({
|
|
|
1319
1337
|
onClose: () => setOpen(false),
|
|
1320
1338
|
onCheckmark: handleCheckmark
|
|
1321
1339
|
},
|
|
1322
|
-
/* @__PURE__ */
|
|
1340
|
+
/* @__PURE__ */ import_react21.default.createElement(AutocompleteContext.Provider, { value: { size, themeColor, isDisabled } }, showEmptyMessage ? /* @__PURE__ */ import_react21.default.createElement(import_react_native17.Text, { style: [styles.emptyMessage, { color: theme.colors.foreground }] }, "No results found") : listItems)
|
|
1323
1341
|
));
|
|
1324
1342
|
};
|
|
1325
1343
|
|
|
1326
1344
|
// src/components/autocomplete/autocomplete-item.tsx
|
|
1327
|
-
var
|
|
1328
|
-
var
|
|
1345
|
+
var import_react23 = __toESM(require("react"), 1);
|
|
1346
|
+
var import_react_native19 = require("react-native");
|
|
1329
1347
|
|
|
1330
1348
|
// src/components/autocomplete/autocomplete-item.style.ts
|
|
1331
|
-
var
|
|
1332
|
-
var styles3 =
|
|
1349
|
+
var import_react_native18 = require("react-native");
|
|
1350
|
+
var styles3 = import_react_native18.StyleSheet.create({
|
|
1333
1351
|
item: {
|
|
1334
1352
|
flexDirection: "row",
|
|
1335
1353
|
alignItems: "center",
|
|
@@ -1351,11 +1369,11 @@ var styles3 = import_react_native15.StyleSheet.create({
|
|
|
1351
1369
|
});
|
|
1352
1370
|
|
|
1353
1371
|
// src/components/autocomplete/autocomplete-item.hook.ts
|
|
1354
|
-
var
|
|
1355
|
-
var
|
|
1372
|
+
var import_react22 = require("react");
|
|
1373
|
+
var import_core13 = require("@xaui/core");
|
|
1356
1374
|
var useAutocompleteItemSizeStyles = (size) => {
|
|
1357
1375
|
const theme = useXUITheme();
|
|
1358
|
-
return (0,
|
|
1376
|
+
return (0, import_react22.useMemo)(() => {
|
|
1359
1377
|
const sizes = {
|
|
1360
1378
|
xs: {
|
|
1361
1379
|
paddingVertical: theme.spacing.sm,
|
|
@@ -1387,15 +1405,15 @@ var useAutocompleteItemSizeStyles = (size) => {
|
|
|
1387
1405
|
};
|
|
1388
1406
|
var useAutocompleteItemBackgroundColor = (themeColor, isSelected) => {
|
|
1389
1407
|
const theme = useXUITheme();
|
|
1390
|
-
const safeThemeColor = (0,
|
|
1408
|
+
const safeThemeColor = (0, import_core13.getSafeThemeColor)(themeColor);
|
|
1391
1409
|
const colorScheme = theme.colors[safeThemeColor];
|
|
1392
|
-
return (0,
|
|
1410
|
+
return (0, import_react22.useMemo)(() => {
|
|
1393
1411
|
return "transparent";
|
|
1394
1412
|
}, [isSelected, colorScheme]);
|
|
1395
1413
|
};
|
|
1396
1414
|
var useAutocompleteItemTextColors = () => {
|
|
1397
1415
|
const theme = useXUITheme();
|
|
1398
|
-
return (0,
|
|
1416
|
+
return (0, import_react22.useMemo)(() => {
|
|
1399
1417
|
return {
|
|
1400
1418
|
textColor: theme.colors.foreground,
|
|
1401
1419
|
descriptionColor: theme.colors.foreground
|
|
@@ -1404,9 +1422,9 @@ var useAutocompleteItemTextColors = () => {
|
|
|
1404
1422
|
};
|
|
1405
1423
|
var useAutocompleteItemCheckmarkColor = (themeColor) => {
|
|
1406
1424
|
const theme = useXUITheme();
|
|
1407
|
-
const safeThemeColor = (0,
|
|
1425
|
+
const safeThemeColor = (0, import_core13.getSafeThemeColor)(themeColor);
|
|
1408
1426
|
const colorScheme = theme.colors[safeThemeColor];
|
|
1409
|
-
return (0,
|
|
1427
|
+
return (0, import_react22.useMemo)(() => {
|
|
1410
1428
|
if (themeColor === "default") {
|
|
1411
1429
|
return theme.colors.primary.main;
|
|
1412
1430
|
}
|
|
@@ -1414,7 +1432,7 @@ var useAutocompleteItemCheckmarkColor = (themeColor) => {
|
|
|
1414
1432
|
}, [themeColor, colorScheme, theme]);
|
|
1415
1433
|
};
|
|
1416
1434
|
var useAutocompleteItemStyles = (isSelected, _isDisabled) => {
|
|
1417
|
-
const context = (0,
|
|
1435
|
+
const context = (0, import_react22.useContext)(AutocompleteContext);
|
|
1418
1436
|
const backgroundColor = useAutocompleteItemBackgroundColor(
|
|
1419
1437
|
context.themeColor,
|
|
1420
1438
|
isSelected
|
|
@@ -1443,7 +1461,7 @@ var AutocompleteItem = ({
|
|
|
1443
1461
|
customAppearance,
|
|
1444
1462
|
onSelected
|
|
1445
1463
|
}) => {
|
|
1446
|
-
const context = (0,
|
|
1464
|
+
const context = (0, import_react23.useContext)(AutocompleteContext);
|
|
1447
1465
|
const size = context?.size ?? defaultSize;
|
|
1448
1466
|
const isItemDisabled = context?.isDisabled ? true : isDisabled;
|
|
1449
1467
|
const sizeStyles = useAutocompleteItemSizeStyles(size);
|
|
@@ -1454,8 +1472,8 @@ var AutocompleteItem = ({
|
|
|
1454
1472
|
}
|
|
1455
1473
|
onSelected?.();
|
|
1456
1474
|
};
|
|
1457
|
-
return /* @__PURE__ */
|
|
1458
|
-
|
|
1475
|
+
return /* @__PURE__ */ import_react23.default.createElement(
|
|
1476
|
+
import_react_native19.Pressable,
|
|
1459
1477
|
{
|
|
1460
1478
|
onPress: handlePress,
|
|
1461
1479
|
disabled: isItemDisabled,
|
|
@@ -1471,8 +1489,8 @@ var AutocompleteItem = ({
|
|
|
1471
1489
|
]
|
|
1472
1490
|
},
|
|
1473
1491
|
startContent,
|
|
1474
|
-
/* @__PURE__ */
|
|
1475
|
-
|
|
1492
|
+
/* @__PURE__ */ import_react23.default.createElement(import_react_native19.View, { style: styles3.content }, /* @__PURE__ */ import_react23.default.createElement(
|
|
1493
|
+
import_react_native19.Text,
|
|
1476
1494
|
{
|
|
1477
1495
|
style: [
|
|
1478
1496
|
styles3.title,
|
|
@@ -1481,8 +1499,8 @@ var AutocompleteItem = ({
|
|
|
1481
1499
|
]
|
|
1482
1500
|
},
|
|
1483
1501
|
label
|
|
1484
|
-
), description && /* @__PURE__ */
|
|
1485
|
-
|
|
1502
|
+
), description && /* @__PURE__ */ import_react23.default.createElement(
|
|
1503
|
+
import_react_native19.Text,
|
|
1486
1504
|
{
|
|
1487
1505
|
style: [
|
|
1488
1506
|
styles3.description,
|