@draftbit/core 47.3.2-c6ac02.2 → 47.3.2-c912f3.2
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/lib/src/components/DeckSwiper/DeckSwiper.js +10 -1
- package/lib/src/components/DeckSwiper/DeckSwiper.js.map +1 -1
- package/lib/src/components/Swiper/Swiper.d.ts +1 -1
- package/lib/src/components/Swiper/Swiper.js +33 -15
- package/lib/src/components/Swiper/Swiper.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/components/DeckSwiper/DeckSwiper.js +10 -1
- package/src/components/DeckSwiper/DeckSwiper.js.map +1 -1
- package/src/components/DeckSwiper/DeckSwiper.tsx +11 -0
- package/src/components/Swiper/Swiper.js +33 -15
- package/src/components/Swiper/Swiper.js.map +1 -1
- package/src/components/Swiper/Swiper.tsx +42 -16
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@draftbit/core",
|
|
3
|
-
"version": "47.3.2-
|
|
3
|
+
"version": "47.3.2-c912f3.2+c912f3b",
|
|
4
4
|
"description": "Core (non-native) Components",
|
|
5
5
|
"main": "lib/src/index.js",
|
|
6
6
|
"types": "lib/src/index.d.ts",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@date-io/date-fns": "^1.3.13",
|
|
41
41
|
"@draftbit/react-theme-provider": "^2.1.1",
|
|
42
|
-
"@draftbit/types": "^47.3.2-
|
|
42
|
+
"@draftbit/types": "^47.3.2-c912f3.2+c912f3b",
|
|
43
43
|
"@expo/vector-icons": "^13.0.0",
|
|
44
44
|
"@material-ui/core": "^4.11.0",
|
|
45
45
|
"@material-ui/pickers": "^3.2.10",
|
|
@@ -79,5 +79,5 @@
|
|
|
79
79
|
"node_modules/",
|
|
80
80
|
"lib/"
|
|
81
81
|
],
|
|
82
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "c912f3b68dc93af55873836c1b360f564501c027"
|
|
83
83
|
}
|
|
@@ -9,6 +9,7 @@ const DeckSwiper = ({ onSwipe, onSwipedLeft, onSwipedRight, onSwipedUp, onSwiped
|
|
|
9
9
|
if (data && renderItem && children) {
|
|
10
10
|
console.warn("'children' of DeckSwiper ignored due to usage of 'data' and 'renderItem'");
|
|
11
11
|
}
|
|
12
|
+
const deckSwiperRef = React.useRef(null);
|
|
12
13
|
const childrenArray = React.useMemo(() => React.Children.toArray(children), [children]);
|
|
13
14
|
// an array of indices based on children count
|
|
14
15
|
const cardsFillerData = React.useMemo(() => Array.from(Array(childrenArray.length).keys()), [childrenArray]);
|
|
@@ -35,6 +36,14 @@ const DeckSwiper = ({ onSwipe, onSwipedLeft, onSwipedRight, onSwipedUp, onSwiped
|
|
|
35
36
|
return card === null || card === void 0 ? void 0 : card.toString();
|
|
36
37
|
}
|
|
37
38
|
};
|
|
39
|
+
/*
|
|
40
|
+
react-native-deck-swiper does not re-render cards when parent state changes
|
|
41
|
+
This forces an update on every re-render to reflect any parent state changes
|
|
42
|
+
*/
|
|
43
|
+
React.useEffect(() => {
|
|
44
|
+
var _a;
|
|
45
|
+
(_a = deckSwiperRef.current) === null || _a === void 0 ? void 0 : _a.forceUpdate();
|
|
46
|
+
});
|
|
38
47
|
/**
|
|
39
48
|
* By default react-native-deck-swiper positions everything with absolute position.
|
|
40
49
|
* To overcome this, it is wrapped in a View to be able to add the component in any layout structure.
|
|
@@ -46,7 +55,7 @@ const DeckSwiper = ({ onSwipe, onSwipedLeft, onSwipedRight, onSwipedUp, onSwiped
|
|
|
46
55
|
*/
|
|
47
56
|
return (React.createElement(View, null,
|
|
48
57
|
React.createElement(View, { style: styles.containerHeightFiller }, renderFirstCard()),
|
|
49
|
-
React.createElement(DeckSwiperComponent, { cards: cardsData, renderCard: renderCard, keyExtractor: cardKeyExtractor, containerStyle: StyleSheet.flatten([styles.cardsContainer, style]), cardStyle: styles.card, onSwiped: onIndexChanged, onSwipedAll: onEndReached, cardIndex: startCardIndex, infinite: infiniteSwiping, verticalSwipe: verticalEnabled, horizontalSwipe: horizontalEnabled, showSecondCard: visibleCardCount > 1, stackSize: visibleCardCount, backgroundColor: "transparent", cardVerticalMargin: 0, cardHorizontalMargin: 0, onSwipedLeft: (index) => {
|
|
58
|
+
React.createElement(DeckSwiperComponent, { ref: deckSwiperRef, cards: cardsData, renderCard: renderCard, keyExtractor: cardKeyExtractor, containerStyle: StyleSheet.flatten([styles.cardsContainer, style]), cardStyle: styles.card, onSwiped: onIndexChanged, onSwipedAll: onEndReached, cardIndex: startCardIndex, infinite: infiniteSwiping, verticalSwipe: verticalEnabled, horizontalSwipe: horizontalEnabled, showSecondCard: visibleCardCount > 1, stackSize: visibleCardCount, backgroundColor: "transparent", cardVerticalMargin: 0, cardHorizontalMargin: 0, onSwipedLeft: (index) => {
|
|
50
59
|
onSwipedLeft === null || onSwipedLeft === void 0 ? void 0 : onSwipedLeft(index);
|
|
51
60
|
onSwipe === null || onSwipe === void 0 ? void 0 : onSwipe(index);
|
|
52
61
|
}, onSwipedRight: (index) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeckSwiper.js","sourceRoot":"","sources":["DeckSwiper.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DeckSwiper.js","sourceRoot":"","sources":["DeckSwiper.tsx"],"names":[],"mappings":"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"}
|
|
@@ -53,6 +53,8 @@ const DeckSwiper = <T extends object>({
|
|
|
53
53
|
);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
+
const deckSwiperRef = React.useRef<DeckSwiperComponent<T>>(null);
|
|
57
|
+
|
|
56
58
|
const childrenArray = React.useMemo(
|
|
57
59
|
() => React.Children.toArray(children),
|
|
58
60
|
[children]
|
|
@@ -89,6 +91,14 @@ const DeckSwiper = <T extends object>({
|
|
|
89
91
|
}
|
|
90
92
|
};
|
|
91
93
|
|
|
94
|
+
/*
|
|
95
|
+
react-native-deck-swiper does not re-render cards when parent state changes
|
|
96
|
+
This forces an update on every re-render to reflect any parent state changes
|
|
97
|
+
*/
|
|
98
|
+
React.useEffect(() => {
|
|
99
|
+
deckSwiperRef.current?.forceUpdate();
|
|
100
|
+
});
|
|
101
|
+
|
|
92
102
|
/**
|
|
93
103
|
* By default react-native-deck-swiper positions everything with absolute position.
|
|
94
104
|
* To overcome this, it is wrapped in a View to be able to add the component in any layout structure.
|
|
@@ -103,6 +113,7 @@ const DeckSwiper = <T extends object>({
|
|
|
103
113
|
<View>
|
|
104
114
|
<View style={styles.containerHeightFiller}>{renderFirstCard()}</View>
|
|
105
115
|
<DeckSwiperComponent
|
|
116
|
+
ref={deckSwiperRef}
|
|
106
117
|
cards={cardsData as any[]}
|
|
107
118
|
renderCard={renderCard}
|
|
108
119
|
keyExtractor={cardKeyExtractor}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { View } from "react-native";
|
|
3
3
|
import SwiperComponent from "react-native-web-swiper";
|
|
4
|
-
const Swiper = ({ vertical = false, loop = false, timeout = 0, from = 0, prevTitle = "", nextTitle = "", prevTitleColor, nextTitleColor, dotsTouchable = true, dotColor, dotActiveColor, data, keyExtractor, renderItem, children, onIndexChanged: onIndexChangedProp, onSwipe, onSwipedNext, onSwipedPrevious, style, }) => {
|
|
4
|
+
const Swiper = ({ vertical = false, loop = false, timeout = 0, from = 0, prevTitle = "", nextTitle = "", prevTitleColor, nextTitleColor, dotsTouchable = true, dotColor, dotActiveColor, data, keyExtractor, renderItem, children: childrenProp, onIndexChanged: onIndexChangedProp, onSwipe, onSwipedNext, onSwipedPrevious, style, }) => {
|
|
5
5
|
var _a;
|
|
6
6
|
const [currentIndex, setCurrentIndex] = React.useState(0);
|
|
7
|
-
const numberOfItems = (_a = data === null || data === void 0 ? void 0 : data.length) !== null && _a !== void 0 ? _a : React.Children.count(
|
|
7
|
+
const numberOfItems = (_a = data === null || data === void 0 ? void 0 : data.length) !== null && _a !== void 0 ? _a : React.Children.count(childrenProp);
|
|
8
|
+
const swiperRef = React.useRef(null);
|
|
8
9
|
const onIndexChanged = (index) => {
|
|
9
10
|
const previous = currentIndex;
|
|
10
11
|
const current = index;
|
|
@@ -26,8 +27,36 @@ const Swiper = ({ vertical = false, loop = false, timeout = 0, from = 0, prevTit
|
|
|
26
27
|
}
|
|
27
28
|
onSwipe === null || onSwipe === void 0 ? void 0 : onSwipe(previous);
|
|
28
29
|
};
|
|
30
|
+
const children = React.useMemo(() => data && renderItem
|
|
31
|
+
? data.map((item, index) => {
|
|
32
|
+
const component = renderItem({ item, index });
|
|
33
|
+
if (!component) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const key = keyExtractor ? keyExtractor(item, index) : index;
|
|
37
|
+
return React.cloneElement(component, {
|
|
38
|
+
key,
|
|
39
|
+
});
|
|
40
|
+
})
|
|
41
|
+
: childrenProp, [childrenProp, data, renderItem, keyExtractor]);
|
|
42
|
+
/*
|
|
43
|
+
react-native-web-swiper assigns it's 'children' attribute as follows: `children = (() => React.Children.toArray(this.props.children))();`
|
|
44
|
+
This is probelematic when state is involved due to anoynmous function effectivley creating new components everytime, losing any state
|
|
45
|
+
|
|
46
|
+
This is a monkey patch that updates the 'children' attribute to just use the children from the props
|
|
47
|
+
Can be removed when/if https://github.com/reactrondev/react-native-web-swiper/pull/102 is merged
|
|
48
|
+
*/
|
|
49
|
+
React.useEffect(() => {
|
|
50
|
+
var _a, _b;
|
|
51
|
+
const childrenArray = React.Children.toArray((_b = (_a = swiperRef.current) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.children);
|
|
52
|
+
if (swiperRef.current) {
|
|
53
|
+
swiperRef.current.children = childrenArray;
|
|
54
|
+
swiperRef.current.count = childrenArray.length;
|
|
55
|
+
swiperRef.current.forceUpdate();
|
|
56
|
+
}
|
|
57
|
+
}, [children]);
|
|
29
58
|
return (React.createElement(View, { style: style },
|
|
30
|
-
React.createElement(SwiperComponent, { from: from, loop: loop, timeout: timeout, vertical: vertical, onIndexChanged: onIndexChanged, controlsProps: {
|
|
59
|
+
React.createElement(SwiperComponent, { ref: swiperRef, from: from, loop: loop, timeout: timeout, vertical: vertical, onIndexChanged: onIndexChanged, controlsProps: {
|
|
31
60
|
prevTitle,
|
|
32
61
|
nextTitle,
|
|
33
62
|
prevTitleStyle: { color: prevTitleColor },
|
|
@@ -39,18 +68,7 @@ const Swiper = ({ vertical = false, loop = false, timeout = 0, from = 0, prevTit
|
|
|
39
68
|
...(dotActiveColor
|
|
40
69
|
? { dotActiveStyle: { backgroundColor: dotActiveColor } }
|
|
41
70
|
: {}),
|
|
42
|
-
} },
|
|
43
|
-
? data.map((item, index) => {
|
|
44
|
-
const component = renderItem({ item, index });
|
|
45
|
-
if (!component) {
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
const key = keyExtractor ? keyExtractor(item, index) : index;
|
|
49
|
-
return React.cloneElement(component, {
|
|
50
|
-
key,
|
|
51
|
-
});
|
|
52
|
-
})
|
|
53
|
-
: children)));
|
|
71
|
+
} }, children)));
|
|
54
72
|
};
|
|
55
73
|
export default Swiper;
|
|
56
74
|
//# sourceMappingURL=Swiper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Swiper.js","sourceRoot":"","sources":["Swiper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAwB,MAAM,cAAc,CAAC;AAC1D,OAAO,eAAe,MAAM,yBAAyB,CAAC;AAyBtD,MAAM,MAAM,GAAG,CAAC,EACd,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,KAAK,EACZ,OAAO,GAAG,CAAC,EACX,IAAI,GAAG,CAAC,EACR,SAAS,GAAG,EAAE,EACd,SAAS,GAAG,EAAE,EACd,cAAc,EACd,cAAc,EACd,aAAa,GAAG,IAAI,EACpB,QAAQ,EACR,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,QAAQ,
|
|
1
|
+
{"version":3,"file":"Swiper.js","sourceRoot":"","sources":["Swiper.tsx"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ const Swiper = ({
|
|
|
40
40
|
data,
|
|
41
41
|
keyExtractor,
|
|
42
42
|
renderItem,
|
|
43
|
-
children,
|
|
43
|
+
children: childrenProp,
|
|
44
44
|
onIndexChanged: onIndexChangedProp,
|
|
45
45
|
onSwipe,
|
|
46
46
|
onSwipedNext,
|
|
@@ -48,7 +48,8 @@ const Swiper = ({
|
|
|
48
48
|
style,
|
|
49
49
|
}: SwiperProps<any>) => {
|
|
50
50
|
const [currentIndex, setCurrentIndex] = React.useState(0);
|
|
51
|
-
const numberOfItems = data?.length ?? React.Children.count(
|
|
51
|
+
const numberOfItems = data?.length ?? React.Children.count(childrenProp);
|
|
52
|
+
const swiperRef = React.useRef<any>(null);
|
|
52
53
|
|
|
53
54
|
const onIndexChanged = (index: number) => {
|
|
54
55
|
const previous = currentIndex;
|
|
@@ -71,10 +72,48 @@ const Swiper = ({
|
|
|
71
72
|
onSwipe?.(previous);
|
|
72
73
|
};
|
|
73
74
|
|
|
75
|
+
const children: React.ReactNode = React.useMemo(
|
|
76
|
+
() =>
|
|
77
|
+
data && renderItem
|
|
78
|
+
? data.map((item, index) => {
|
|
79
|
+
const component = renderItem({ item, index });
|
|
80
|
+
|
|
81
|
+
if (!component) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const key = keyExtractor ? keyExtractor(item, index) : index;
|
|
86
|
+
return React.cloneElement(component, {
|
|
87
|
+
key,
|
|
88
|
+
});
|
|
89
|
+
})
|
|
90
|
+
: childrenProp,
|
|
91
|
+
[childrenProp, data, renderItem, keyExtractor]
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
/*
|
|
95
|
+
react-native-web-swiper assigns it's 'children' attribute as follows: `children = (() => React.Children.toArray(this.props.children))();`
|
|
96
|
+
This is probelematic when state is involved due to anoynmous function effectivley creating new components everytime, losing any state
|
|
97
|
+
|
|
98
|
+
This is a monkey patch that updates the 'children' attribute to just use the children from the props
|
|
99
|
+
Can be removed when/if https://github.com/reactrondev/react-native-web-swiper/pull/102 is merged
|
|
100
|
+
*/
|
|
101
|
+
React.useEffect(() => {
|
|
102
|
+
const childrenArray = React.Children.toArray(
|
|
103
|
+
swiperRef.current?.props?.children
|
|
104
|
+
);
|
|
105
|
+
if (swiperRef.current) {
|
|
106
|
+
swiperRef.current.children = childrenArray;
|
|
107
|
+
swiperRef.current.count = childrenArray.length;
|
|
108
|
+
swiperRef.current.forceUpdate();
|
|
109
|
+
}
|
|
110
|
+
}, [children]);
|
|
111
|
+
|
|
74
112
|
return (
|
|
75
113
|
<View style={style}>
|
|
76
114
|
{/* @ts-ignore */}
|
|
77
115
|
<SwiperComponent
|
|
116
|
+
ref={swiperRef}
|
|
78
117
|
from={from}
|
|
79
118
|
loop={loop}
|
|
80
119
|
timeout={timeout}
|
|
@@ -94,20 +133,7 @@ const Swiper = ({
|
|
|
94
133
|
: {}),
|
|
95
134
|
}}
|
|
96
135
|
>
|
|
97
|
-
{
|
|
98
|
-
? data.map((item, index) => {
|
|
99
|
-
const component = renderItem({ item, index });
|
|
100
|
-
|
|
101
|
-
if (!component) {
|
|
102
|
-
return null;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
const key = keyExtractor ? keyExtractor(item, index) : index;
|
|
106
|
-
return React.cloneElement(component, {
|
|
107
|
-
key,
|
|
108
|
-
});
|
|
109
|
-
})
|
|
110
|
-
: children}
|
|
136
|
+
{children}
|
|
111
137
|
</SwiperComponent>
|
|
112
138
|
</View>
|
|
113
139
|
);
|