@axelor/aos-mobile-ui 8.1.7 → 8.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/lib/components/atoms/Screen/Screen.d.ts +2 -1
- package/lib/components/atoms/Screen/Screen.js +2 -2
- package/lib/components/atoms/Screen/Screen.js.map +1 -1
- package/lib/components/atoms/ScrollView/ScrollView.js +3 -1
- package/lib/components/atoms/ScrollView/ScrollView.js.map +1 -1
- package/lib/components/atoms/Slider/Slider.d.ts +18 -0
- package/lib/components/atoms/Slider/Slider.js +85 -0
- package/lib/components/atoms/Slider/Slider.js.map +1 -0
- package/lib/components/atoms/index.d.ts +1 -0
- package/lib/components/atoms/index.js +1 -0
- package/lib/components/atoms/index.js.map +1 -1
- package/lib/components/molecules/BlockInteractionMessage/BlockInteractionMessage.d.ts +1 -1
- package/lib/components/molecules/BlockInteractionMessage/BlockInteractionMessage.js +1 -1
- package/lib/components/molecules/BlockInteractionMessage/BlockInteractionMessage.js.map +1 -1
- package/lib/components/molecules/Button/Button.d.ts +2 -1
- package/lib/components/molecules/Button/Button.js.map +1 -1
- package/lib/components/molecules/CardIconButton/CardIconButton.d.ts +2 -1
- package/lib/components/molecules/CardIconButton/CardIconButton.js +7 -4
- package/lib/components/molecules/CardIconButton/CardIconButton.js.map +1 -1
- package/lib/components/molecules/DropdownCard/DropdownCard.d.ts +2 -1
- package/lib/components/molecules/DropdownCard/DropdownCard.js +13 -4
- package/lib/components/molecules/DropdownCard/DropdownCard.js.map +1 -1
- package/lib/components/molecules/FormSlider/FormSlider.d.ts +19 -0
- package/lib/components/molecules/FormSlider/FormSlider.js +58 -0
- package/lib/components/molecules/FormSlider/FormSlider.js.map +1 -0
- package/lib/components/molecules/LabelText/LabelText.js +2 -2
- package/lib/components/molecules/LabelText/LabelText.js.map +1 -1
- package/lib/components/molecules/TextUnit/TextUnit.d.ts +2 -1
- package/lib/components/molecules/TextUnit/TextUnit.js +4 -2
- package/lib/components/molecules/TextUnit/TextUnit.js.map +1 -1
- package/lib/components/molecules/ToggleSwitch/ToggleSwitch.d.ts +2 -2
- package/lib/components/molecules/index.d.ts +1 -0
- package/lib/components/molecules/index.js +1 -0
- package/lib/components/molecules/index.js.map +1 -1
- package/lib/components/organisms/ActionCard/ActionCard.d.ts +20 -0
- package/lib/components/organisms/ActionCard/ActionCard.js +153 -0
- package/lib/components/organisms/ActionCard/ActionCard.js.map +1 -0
- package/lib/components/organisms/DraggableWrapper/DraggableWrapper.d.ts +7 -0
- package/lib/components/organisms/DraggableWrapper/DraggableWrapper.js +124 -0
- package/lib/components/organisms/DraggableWrapper/DraggableWrapper.js.map +1 -0
- package/lib/components/organisms/DropdownCardSwitch/DropdownCardSwitch.d.ts +1 -0
- package/lib/components/organisms/DropdownCardSwitch/DropdownCardSwitch.js +1 -1
- package/lib/components/organisms/DropdownCardSwitch/DropdownCardSwitch.js.map +1 -1
- package/lib/components/organisms/FloatingButton/FloatingActionButton.d.ts +2 -1
- package/lib/components/organisms/FloatingButton/FloatingActionButton.js +6 -6
- package/lib/components/organisms/FloatingButton/FloatingActionButton.js.map +1 -1
- package/lib/components/organisms/FloatingButton/FloatingButton.d.ts +1 -1
- package/lib/components/organisms/FloatingButton/FloatingButton.js +6 -10
- package/lib/components/organisms/FloatingButton/FloatingButton.js.map +1 -1
- package/lib/components/organisms/FloatingButton/types.d.ts +3 -0
- package/lib/components/organisms/FloatingButton/types.js.map +1 -1
- package/lib/components/organisms/GridView/CellView.js.map +1 -1
- package/lib/components/organisms/GroupByScrollList/GroupByScrollList.d.ts +3 -2
- package/lib/components/organisms/GroupByScrollList/GroupByScrollList.js +24 -3
- package/lib/components/organisms/GroupByScrollList/GroupByScrollList.js.map +1 -1
- package/lib/components/organisms/InfoButton/InfoButton.d.ts +2 -1
- package/lib/components/organisms/InfoButton/InfoButton.js +2 -2
- package/lib/components/organisms/InfoButton/InfoButton.js.map +1 -1
- package/lib/components/organisms/MultiValuePicker/MultiValuePicker.js +2 -2
- package/lib/components/organisms/MultiValuePicker/MultiValuePicker.js.map +1 -1
- package/lib/components/organisms/QuantityCard/QuantityCard.d.ts +16 -0
- package/lib/components/organisms/QuantityCard/QuantityCard.js +103 -0
- package/lib/components/organisms/QuantityCard/QuantityCard.js.map +1 -0
- package/lib/components/organisms/ScrollList/ScrollList.d.ts +2 -1
- package/lib/components/organisms/ScrollList/ScrollList.js +20 -15
- package/lib/components/organisms/ScrollList/ScrollList.js.map +1 -1
- package/lib/components/organisms/SingleSelectScrollList/SingleSelectScrollList.d.ts +21 -0
- package/lib/components/organisms/SingleSelectScrollList/SingleSelectScrollList.js +91 -0
- package/lib/components/organisms/SingleSelectScrollList/SingleSelectScrollList.js.map +1 -0
- package/lib/components/organisms/TagList/TagList.js +3 -1
- package/lib/components/organisms/TagList/TagList.js.map +1 -1
- package/lib/components/organisms/ViewAllEditList/AllLinesAlert.d.ts +13 -0
- package/lib/components/organisms/ViewAllEditList/AllLinesAlert.js +81 -0
- package/lib/components/organisms/ViewAllEditList/AllLinesAlert.js.map +1 -0
- package/lib/components/organisms/ViewAllEditList/LineComponent.d.ts +10 -0
- package/lib/components/organisms/ViewAllEditList/LineComponent.js +52 -0
- package/lib/components/organisms/ViewAllEditList/LineComponent.js.map +1 -0
- package/lib/components/organisms/ViewAllEditList/ViewAllEditList.d.ts +18 -0
- package/lib/components/organisms/ViewAllEditList/ViewAllEditList.js +55 -0
- package/lib/components/organisms/ViewAllEditList/ViewAllEditList.js.map +1 -0
- package/lib/components/organisms/index.d.ts +5 -0
- package/lib/components/organisms/index.js +5 -0
- package/lib/components/organisms/index.js.map +1 -1
- package/lib/components/templates/BottomBar/BarItem.js +2 -3
- package/lib/components/templates/BottomBar/BarItem.js.map +1 -1
- package/lib/components/templates/BottomBar/BottomBar.d.ts +2 -1
- package/lib/components/templates/BottomBar/BottomBar.js +21 -12
- package/lib/components/templates/BottomBar/BottomBar.js.map +1 -1
- package/lib/components/templates/BottomBar/ItemTitle.d.ts +7 -0
- package/lib/components/templates/BottomBar/ItemTitle.js +36 -0
- package/lib/components/templates/BottomBar/ItemTitle.js.map +1 -0
- package/lib/components/templates/BottomBar/types.helper.d.ts +1 -0
- package/lib/components/templates/Dashboard/Chart/ChartRender.js +10 -0
- package/lib/components/templates/Dashboard/Chart/ChartRender.js.map +1 -1
- package/lib/components/templates/Dashboard/Dashboard.d.ts +1 -1
- package/lib/components/templates/Dashboard/chart-type.d.ts +1 -0
- package/lib/components/templates/Dashboard/chart-type.js +1 -0
- package/lib/components/templates/Dashboard/chart-type.js.map +1 -1
- package/lib/components/templates/TabsScreen/tabs.helper.d.ts +2 -1
- package/lib/config/ConfigContext.d.ts +6 -0
- package/lib/config/ConfigContext.js +57 -3
- package/lib/config/ConfigContext.js.map +1 -1
- package/lib/hooks/use-price-format.d.ts +1 -0
- package/lib/hooks/use-price-format.js +33 -0
- package/lib/hooks/use-price-format.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/utils/commons-styles.d.ts +1 -1
- package/lib/utils/formatters.js +1 -1
- package/lib/utils/list.js +7 -1
- package/lib/utils/list.js.map +1 -1
- package/package.json +14 -12
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Axelor Business Solutions
|
|
3
|
+
*
|
|
4
|
+
* Copyright (C) 2024 Axelor (<http://axelor.com>).
|
|
5
|
+
*
|
|
6
|
+
* This program is free software: you can redistribute it and/or modify
|
|
7
|
+
* it under the terms of the GNU Affero General Public License, version 3,
|
|
8
|
+
* as published by the Free Software Foundation.
|
|
9
|
+
*
|
|
10
|
+
* This program is distributed in the hope that it will be useful,
|
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
* GNU Affero General Public License for more details.
|
|
14
|
+
*
|
|
15
|
+
* You should have received a copy of the GNU Affero General Public License
|
|
16
|
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
18
|
+
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
19
|
+
import { StyleSheet, View } from 'react-native';
|
|
20
|
+
import InfoButton from '../InfoButton/InfoButton';
|
|
21
|
+
import { useThemeColor } from '../../../theme';
|
|
22
|
+
import { OUTSIDE_INDICATOR, useClickOutside, } from '../../../hooks/use-click-outside';
|
|
23
|
+
const ACTION_WIDTH = 40;
|
|
24
|
+
const TWO_ACTIONS_HEIGHT = 84;
|
|
25
|
+
const ActionCard = ({ style, children, actionList, horizontal = false, forceActionsDisplay = false, translator, }) => {
|
|
26
|
+
const Colors = useThemeColor();
|
|
27
|
+
const [displaySeeActionsButton, setDisplaySeeActionsButton] = useState(false);
|
|
28
|
+
const [isActionsVisible, setIsActionsVisible] = useState(true);
|
|
29
|
+
const [isDifferentLength, setIsDifferentLength] = useState(false);
|
|
30
|
+
const wrapperRef = useRef(null);
|
|
31
|
+
const clickOutside = useClickOutside({ wrapperRef });
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (clickOutside === OUTSIDE_INDICATOR &&
|
|
34
|
+
displaySeeActionsButton &&
|
|
35
|
+
isActionsVisible &&
|
|
36
|
+
!forceActionsDisplay) {
|
|
37
|
+
setIsActionsVisible(false);
|
|
38
|
+
}
|
|
39
|
+
}, [
|
|
40
|
+
clickOutside,
|
|
41
|
+
displaySeeActionsButton,
|
|
42
|
+
forceActionsDisplay,
|
|
43
|
+
isActionsVisible,
|
|
44
|
+
]);
|
|
45
|
+
const _actionList = useMemo(() => Array.isArray(actionList) && actionList.length > 0
|
|
46
|
+
? actionList
|
|
47
|
+
.filter(action => !action.hidden)
|
|
48
|
+
.flatMap(action => (action.large ? [action, null] : action))
|
|
49
|
+
: [], [actionList]);
|
|
50
|
+
const isMoreThanOneAction = useMemo(() => _actionList.length > 1, [_actionList]);
|
|
51
|
+
const middleIndex = useMemo(() => {
|
|
52
|
+
if (_actionList.length > 0) {
|
|
53
|
+
const _middleIndex = _actionList.length / 2;
|
|
54
|
+
if (Number.isInteger(_middleIndex)) {
|
|
55
|
+
setIsDifferentLength(false);
|
|
56
|
+
return _middleIndex;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
setIsDifferentLength(true);
|
|
60
|
+
return Math.trunc(_middleIndex + 1);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}, [_actionList]);
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
const shouldDisplay = (_actionList.length > 2 ||
|
|
66
|
+
(_actionList[0]?.large && horizontal) ||
|
|
67
|
+
_actionList[1]?.large) &&
|
|
68
|
+
!forceActionsDisplay;
|
|
69
|
+
setDisplaySeeActionsButton(shouldDisplay);
|
|
70
|
+
setIsActionsVisible(!shouldDisplay);
|
|
71
|
+
}, [_actionList, forceActionsDisplay, horizontal]);
|
|
72
|
+
const isCardMinHeight = useMemo(() => _actionList.length > 1 || _actionList[0]?.large, [_actionList]);
|
|
73
|
+
const styles = useMemo(() => getStyles(isMoreThanOneAction), [isMoreThanOneAction]);
|
|
74
|
+
const getIconColor = (action) => {
|
|
75
|
+
return action.iconColor ?? Colors.secondaryColor_dark.background;
|
|
76
|
+
};
|
|
77
|
+
const renderHorizontalActions = (list, isLastList) => {
|
|
78
|
+
return list.map((action, index) => {
|
|
79
|
+
if (action == null) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
const isDoubleWidth = action.large ||
|
|
83
|
+
(isLastList && index === list.length - 1 && isDifferentLength);
|
|
84
|
+
return (<InfoButton style={{ width: isDoubleWidth ? ACTION_WIDTH * 2 : ACTION_WIDTH }} iconName={action.iconName} iconColor={getIconColor(action)} indication={action.helper} onPress={action.onPress} disabled={action.disabled} key={index}/>);
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
const renderVerticalActions = () => {
|
|
88
|
+
const verticalActions = [];
|
|
89
|
+
let index = 0;
|
|
90
|
+
while (index < _actionList.length) {
|
|
91
|
+
const action1 = _actionList[index];
|
|
92
|
+
const action2 = _actionList[index + 1];
|
|
93
|
+
const action3 = _actionList[index + 2];
|
|
94
|
+
verticalActions.push(<View style={getVerticalActionStyle(action2 == null || action3 === null).action} key={index}>
|
|
95
|
+
<InfoButton style={{ width: ACTION_WIDTH }} iconName={action1.iconName} iconColor={getIconColor(action1)} indication={action1.helper} onPress={action1.onPress} disabled={action1.disabled}/>
|
|
96
|
+
{action2 != null && (<InfoButton style={{ width: ACTION_WIDTH }} iconName={action2.iconName} iconColor={getIconColor(action2)} indication={action2.helper} onPress={action2.onPress} disabled={action2.disabled}/>)}
|
|
97
|
+
</View>);
|
|
98
|
+
index = action3 === null ? index + 1 : index + 2;
|
|
99
|
+
}
|
|
100
|
+
return verticalActions;
|
|
101
|
+
};
|
|
102
|
+
return (<View style={[styles.container, style]} ref={wrapperRef}>
|
|
103
|
+
<View style={styles.cardContainer}>
|
|
104
|
+
{React.cloneElement(children, {
|
|
105
|
+
style: { minHeight: isCardMinHeight && TWO_ACTIONS_HEIGHT },
|
|
106
|
+
})}
|
|
107
|
+
</View>
|
|
108
|
+
{_actionList.length > 0 &&
|
|
109
|
+
(displaySeeActionsButton && !isActionsVisible ? (<InfoButton style={styles.seeActions} iconName="three-dots" iconColor={Colors.secondaryColor_dark.background} indication={translator('Base_SeeActions')} onPress={() => setIsActionsVisible(true)}/>) : (<View>
|
|
110
|
+
{horizontal ? (<>
|
|
111
|
+
<View style={styles.horizontalActionContainer}>
|
|
112
|
+
{renderHorizontalActions(_actionList.slice(0, middleIndex), false)}
|
|
113
|
+
</View>
|
|
114
|
+
{isMoreThanOneAction && (<View style={styles.horizontalActionContainer}>
|
|
115
|
+
{renderHorizontalActions(_actionList.slice(middleIndex), true)}
|
|
116
|
+
</View>)}
|
|
117
|
+
</>) : (<View style={styles.verticalActionContainer}>
|
|
118
|
+
{renderVerticalActions()}
|
|
119
|
+
</View>)}
|
|
120
|
+
</View>))}
|
|
121
|
+
</View>);
|
|
122
|
+
};
|
|
123
|
+
const getStyles = (isMoreThanOneAction) => StyleSheet.create({
|
|
124
|
+
container: {
|
|
125
|
+
flex: 1,
|
|
126
|
+
width: '96%',
|
|
127
|
+
flexDirection: 'row',
|
|
128
|
+
alignSelf: 'center',
|
|
129
|
+
marginVertical: 2,
|
|
130
|
+
},
|
|
131
|
+
cardContainer: {
|
|
132
|
+
flex: 1,
|
|
133
|
+
},
|
|
134
|
+
seeActions: {
|
|
135
|
+
width: 40,
|
|
136
|
+
},
|
|
137
|
+
horizontalActionContainer: {
|
|
138
|
+
flexDirection: 'row',
|
|
139
|
+
flexWrap: 'wrap',
|
|
140
|
+
justifyContent: 'space-between',
|
|
141
|
+
height: isMoreThanOneAction ? '50%' : '100%',
|
|
142
|
+
},
|
|
143
|
+
verticalActionContainer: {
|
|
144
|
+
flexDirection: 'row',
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
const getVerticalActionStyle = (isLargeAction) => StyleSheet.create({
|
|
148
|
+
action: {
|
|
149
|
+
height: isLargeAction ? '100%' : '50%',
|
|
150
|
+
},
|
|
151
|
+
});
|
|
152
|
+
export default ActionCard;
|
|
153
|
+
//# sourceMappingURL=ActionCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionCard.js","sourceRoot":"","sources":["../../../../src/components/organisms/ActionCard/ActionCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Axelor Business Solutions
|
|
3
|
+
*
|
|
4
|
+
* Copyright (C) 2024 Axelor (<http://axelor.com>).
|
|
5
|
+
*
|
|
6
|
+
* This program is free software: you can redistribute it and/or modify
|
|
7
|
+
* it under the terms of the GNU Affero General Public License, version 3,
|
|
8
|
+
* as published by the Free Software Foundation.
|
|
9
|
+
*
|
|
10
|
+
* This program is distributed in the hope that it will be useful,
|
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
* GNU Affero General Public License for more details.
|
|
14
|
+
*
|
|
15
|
+
* You should have received a copy of the GNU Affero General Public License
|
|
16
|
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
18
|
+
import React, { useMemo, useRef, useState } from 'react';
|
|
19
|
+
import { Animated, Dimensions, PanResponder, StyleSheet } from 'react-native';
|
|
20
|
+
import { useConfig } from '../../../config/ConfigContext';
|
|
21
|
+
const DraggableWrapper = ({ style, children }) => {
|
|
22
|
+
const { headerHeight, setIsScrollEnabled } = useConfig();
|
|
23
|
+
const [dragging, setDragging] = useState(false);
|
|
24
|
+
const [isWindowPositionGet, setIsWindowPositionGet] = useState(false);
|
|
25
|
+
const wrapperRef = useRef(null);
|
|
26
|
+
const screenPosition = useRef({ x: 0, y: 0 });
|
|
27
|
+
const viewLayout = useRef({ width: 0, height: 0 });
|
|
28
|
+
const position = useRef(new Animated.ValueXY()).current;
|
|
29
|
+
const offsetX = useRef(0);
|
|
30
|
+
const offsetY = useRef(0);
|
|
31
|
+
const { width: screenWidth, height: screenHeight } = Dimensions.get('window');
|
|
32
|
+
const panResponder = useRef(PanResponder.create({
|
|
33
|
+
onStartShouldSetPanResponder: () => false,
|
|
34
|
+
onMoveShouldSetPanResponder: () => true,
|
|
35
|
+
onPanResponderGrant: () => {
|
|
36
|
+
setDragging(true);
|
|
37
|
+
setIsScrollEnabled(false);
|
|
38
|
+
position.setOffset({
|
|
39
|
+
x: offsetX.current,
|
|
40
|
+
y: offsetY.current,
|
|
41
|
+
});
|
|
42
|
+
position.setValue({ x: 0, y: 0 });
|
|
43
|
+
},
|
|
44
|
+
onPanResponderMove: Animated.event([
|
|
45
|
+
null,
|
|
46
|
+
{
|
|
47
|
+
dx: position.x,
|
|
48
|
+
dy: position.y,
|
|
49
|
+
},
|
|
50
|
+
], { useNativeDriver: false }),
|
|
51
|
+
onPanResponderRelease: () => {
|
|
52
|
+
setDragging(false);
|
|
53
|
+
setIsScrollEnabled(true);
|
|
54
|
+
position.flattenOffset();
|
|
55
|
+
const newPosX = position.x.__getValue();
|
|
56
|
+
const newPosY = position.y.__getValue();
|
|
57
|
+
const { width: layoutWidth, height: layoutHeight } = viewLayout.current;
|
|
58
|
+
let adjustedPosX = newPosX + screenPosition.current.x;
|
|
59
|
+
let adjustedPosY = newPosY + screenPosition.current.y;
|
|
60
|
+
if (adjustedPosX < 0) {
|
|
61
|
+
adjustedPosX = 0;
|
|
62
|
+
}
|
|
63
|
+
else if (adjustedPosX + layoutWidth > screenWidth) {
|
|
64
|
+
adjustedPosX = screenWidth - layoutWidth;
|
|
65
|
+
}
|
|
66
|
+
if (adjustedPosY < headerHeight) {
|
|
67
|
+
adjustedPosY = headerHeight;
|
|
68
|
+
}
|
|
69
|
+
else if (adjustedPosY + layoutHeight > screenHeight) {
|
|
70
|
+
adjustedPosY = screenHeight - layoutHeight;
|
|
71
|
+
}
|
|
72
|
+
adjustedPosX -= screenPosition.current.x;
|
|
73
|
+
adjustedPosY -= screenPosition.current.y;
|
|
74
|
+
Animated.spring(position, {
|
|
75
|
+
toValue: {
|
|
76
|
+
x: adjustedPosX,
|
|
77
|
+
y: adjustedPosY,
|
|
78
|
+
},
|
|
79
|
+
useNativeDriver: false,
|
|
80
|
+
}).start();
|
|
81
|
+
offsetX.current = adjustedPosX;
|
|
82
|
+
offsetY.current = adjustedPosY;
|
|
83
|
+
},
|
|
84
|
+
onPanResponderTerminate: () => {
|
|
85
|
+
setDragging(false);
|
|
86
|
+
setIsScrollEnabled(true);
|
|
87
|
+
position.setValue({ x: 0, y: 0 });
|
|
88
|
+
},
|
|
89
|
+
})).current;
|
|
90
|
+
const styles = useMemo(() => {
|
|
91
|
+
return getStyles(dragging);
|
|
92
|
+
}, [dragging]);
|
|
93
|
+
return (<Animated.View style={[
|
|
94
|
+
{
|
|
95
|
+
transform: position.getTranslateTransform(),
|
|
96
|
+
},
|
|
97
|
+
styles.container,
|
|
98
|
+
style,
|
|
99
|
+
]} ref={wrapperRef} onLayout={event => {
|
|
100
|
+
const { width, height } = event.nativeEvent.layout;
|
|
101
|
+
if (isWindowPositionGet) {
|
|
102
|
+
const screenPositionX = screenPosition.current.x - width + viewLayout.current.width;
|
|
103
|
+
const screenPositionY = screenPosition.current.y - height + viewLayout.current.height;
|
|
104
|
+
screenPosition.current = { x: screenPositionX, y: screenPositionY };
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
wrapperRef.current.measureInWindow((x, y) => {
|
|
108
|
+
screenPosition.current = { x, y };
|
|
109
|
+
});
|
|
110
|
+
setIsWindowPositionGet(true);
|
|
111
|
+
}
|
|
112
|
+
viewLayout.current = { width, height };
|
|
113
|
+
}} {...panResponder.panHandlers}>
|
|
114
|
+
{children}
|
|
115
|
+
</Animated.View>);
|
|
116
|
+
};
|
|
117
|
+
const getStyles = (dragging) => StyleSheet.create({
|
|
118
|
+
container: {
|
|
119
|
+
zIndex: 100,
|
|
120
|
+
opacity: dragging ? 0.7 : 1,
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
export default DraggableWrapper;
|
|
124
|
+
//# sourceMappingURL=DraggableWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DraggableWrapper.js","sourceRoot":"","sources":["../../../../src/components/organisms/DraggableWrapper/DraggableWrapper.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ interface DropdownItem {
|
|
|
10
10
|
title: string;
|
|
11
11
|
childrenComp: ReactNode;
|
|
12
12
|
isDefaultVisible?: boolean;
|
|
13
|
+
iconName?: string;
|
|
13
14
|
}
|
|
14
15
|
declare const DropdownCardSwitch: ({ style, styleTitle, dropdownItems, multiSelection, }: DropdownCardSwitchProps) => React.JSX.Element;
|
|
15
16
|
export default DropdownCardSwitch;
|
|
@@ -49,7 +49,7 @@ const DropdownCardSwitch = ({ style, styleTitle, dropdownItems, multiSelection =
|
|
|
49
49
|
}, [multiSelection]);
|
|
50
50
|
return (<View style={[styles.container, style]}>
|
|
51
51
|
{dropdownItems.map((elt, index) => {
|
|
52
|
-
return (<DropdownCard key={index} title={elt.title} styleText={styleTitle} onPress={() => handlePress(elt.key)} dropdownIsOpen={openedCardKeys.includes(elt.key)}>
|
|
52
|
+
return (<DropdownCard key={index} title={elt.title} styleText={styleTitle} onPress={() => handlePress(elt.key)} dropdownIsOpen={openedCardKeys.includes(elt.key)} iconName={elt.iconName}>
|
|
53
53
|
{elt.childrenComp}
|
|
54
54
|
</DropdownCard>);
|
|
55
55
|
})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownCardSwitch.js","sourceRoot":"","sources":["../../../../src/components/organisms/DropdownCardSwitch/DropdownCardSwitch.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAY,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AACzE,OAAO,EAAC,UAAU,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"DropdownCardSwitch.js","sourceRoot":"","sources":["../../../../src/components/organisms/DropdownCardSwitch/DropdownCardSwitch.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Color } from '../../../theme';
|
|
3
|
-
declare const FloatingActionButton: ({ title, iconName, color, size, disabled, indicator, onPress, translator, useCircleStyle, }: {
|
|
3
|
+
declare const FloatingActionButton: ({ title, iconName, color, size, margin, disabled, indicator, onPress, translator, useCircleStyle, }: {
|
|
4
4
|
title: string;
|
|
5
5
|
iconName: string;
|
|
6
6
|
color: Color;
|
|
7
7
|
size: number;
|
|
8
|
+
margin?: number;
|
|
8
9
|
disabled?: boolean;
|
|
9
10
|
indicator?: boolean;
|
|
10
11
|
onPress: () => void;
|
|
@@ -22,13 +22,13 @@ import { Text } from '../../atoms';
|
|
|
22
22
|
import { CircleButton } from '../../molecules';
|
|
23
23
|
import { MIN_ACTION_BUTTON_WIDTH } from './types';
|
|
24
24
|
import Indicator from './Indicator';
|
|
25
|
-
const FloatingActionButton = ({ title, iconName, color, size, disabled = false, indicator = false, onPress, translator, useCircleStyle = false, }) => {
|
|
25
|
+
const FloatingActionButton = ({ title, iconName, color, size, margin = 0, disabled = false, indicator = false, onPress, translator, useCircleStyle = false, }) => {
|
|
26
26
|
const Colors = useThemeColor();
|
|
27
27
|
const styles = useMemo(() => getStyles(Colors), [Colors]);
|
|
28
28
|
return (<View style={styles.actionButtonContainer}>
|
|
29
29
|
<CircleButton iconName={iconName} size={size} color={color} onPress={onPress} disabled={disabled} square={!useCircleStyle} style={styles.button}/>
|
|
30
30
|
<Indicator show={indicator} color={Colors.errorColor}/>
|
|
31
|
-
{title != null ? (<View style={styles.actionTitleContainer}>
|
|
31
|
+
{title != null ? (<View style={[styles.actionTitleContainer, { left: size + margin * 2 }]}>
|
|
32
32
|
<View style={styles.actionTitle}>
|
|
33
33
|
<Text fontSize={16} style={styles.actionTitleText} numberOfLines={2}>
|
|
34
34
|
{translator(title)}
|
|
@@ -40,20 +40,20 @@ const FloatingActionButton = ({ title, iconName, color, size, disabled = false,
|
|
|
40
40
|
const getStyles = (Colors) => StyleSheet.create({
|
|
41
41
|
actionButtonContainer: {
|
|
42
42
|
flexDirection: 'row-reverse',
|
|
43
|
-
|
|
43
|
+
marginVertical: 2,
|
|
44
44
|
},
|
|
45
45
|
button: {
|
|
46
46
|
marginVertical: 0,
|
|
47
47
|
},
|
|
48
48
|
actionTitleContainer: {
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
width: MIN_ACTION_BUTTON_WIDTH,
|
|
50
|
+
height: '100%',
|
|
51
51
|
justifyContent: 'center',
|
|
52
52
|
alignItems: 'flex-end',
|
|
53
|
+
position: 'absolute',
|
|
53
54
|
},
|
|
54
55
|
actionTitle: {
|
|
55
56
|
backgroundColor: Colors.backgroundColor,
|
|
56
|
-
marginHorizontal: 15,
|
|
57
57
|
borderRadius: 7,
|
|
58
58
|
paddingHorizontal: 10,
|
|
59
59
|
elevation: 3,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FloatingActionButton.js","sourceRoot":"","sources":["../../../../src/components/organisms/FloatingButton/FloatingActionButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,UAAU,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAqB,aAAa,EAAC,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AACjC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,uBAAuB,EAAC,MAAM,SAAS,CAAC;AAChD,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,MAAM,oBAAoB,GAAG,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,KAAK,EACjB,OAAO,EACP,UAAU,EACV,cAAc,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"FloatingActionButton.js","sourceRoot":"","sources":["../../../../src/components/organisms/FloatingButton/FloatingActionButton.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { FloatingButtonProps } from './types';
|
|
3
|
-
declare const FloatingButton: ({ style, actions: _actions, iconName, closeIconName, size, closeOnOutsideClick, onGlobalPress, translator, useCircleStyle, defaultOpenValue, }: FloatingButtonProps) => React.JSX.Element;
|
|
3
|
+
declare const FloatingButton: ({ style, actions: _actions, iconName, closeIconName, buttonStyle, buttonColor, size, closeOnOutsideClick, onGlobalPress, translator, useCircleStyle, expandable, defaultOpenValue, }: FloatingButtonProps) => React.JSX.Element;
|
|
4
4
|
export default FloatingButton;
|
|
@@ -24,7 +24,7 @@ import { Icon } from '../../atoms';
|
|
|
24
24
|
import { ACTION_BUTTON_SIZE_PERCENTAGE, FLOATING_BUTTON_SIZE, } from './types';
|
|
25
25
|
import FloatingActionButton from './FloatingActionButton';
|
|
26
26
|
import Indicator from './Indicator';
|
|
27
|
-
const FloatingButton = ({ style, actions: _actions, iconName = 'plus-lg', closeIconName = 'x-lg', size = FLOATING_BUTTON_SIZE, closeOnOutsideClick = true, onGlobalPress, translator, useCircleStyle = false, defaultOpenValue = false, }) => {
|
|
27
|
+
const FloatingButton = ({ style, actions: _actions, iconName = 'plus-lg', closeIconName = 'x-lg', buttonStyle, buttonColor, size = FLOATING_BUTTON_SIZE, closeOnOutsideClick = true, onGlobalPress, translator, useCircleStyle = false, expandable = true, defaultOpenValue = false, }) => {
|
|
28
28
|
const Colors = useThemeColor();
|
|
29
29
|
const wrapperRef = useRef(null);
|
|
30
30
|
const clickOutside = useClickOutside({
|
|
@@ -53,17 +53,12 @@ const FloatingButton = ({ style, actions: _actions, iconName = 'plus-lg', closeI
|
|
|
53
53
|
marginRight: actionButtonMarginRight,
|
|
54
54
|
};
|
|
55
55
|
}, [size]);
|
|
56
|
-
const renderAction = useCallback((action) => (<FloatingActionButton key={action.key} title={action.title} iconName={action.iconName} color={action.color} size={actionButtonParams.size} disabled={action.disabled} indicator={action.indicator} onPress={() => {
|
|
56
|
+
const renderAction = useCallback((action) => (<FloatingActionButton key={action.key} title={action.title} iconName={action.iconName} color={action.color} size={actionButtonParams.size} margin={actionButtonParams.marginRight} disabled={action.disabled} indicator={action.indicator} onPress={() => {
|
|
57
57
|
action.onPress();
|
|
58
58
|
if (action.closeOnPress) {
|
|
59
59
|
handleFLoatingButtonPress();
|
|
60
60
|
}
|
|
61
|
-
}} translator={translator} useCircleStyle={useCircleStyle}/>), [
|
|
62
|
-
actionButtonParams.size,
|
|
63
|
-
handleFLoatingButtonPress,
|
|
64
|
-
translator,
|
|
65
|
-
useCircleStyle,
|
|
66
|
-
]);
|
|
61
|
+
}} translator={translator} useCircleStyle={useCircleStyle}/>), [actionButtonParams, handleFLoatingButtonPress, translator, useCircleStyle]);
|
|
67
62
|
const actions = useMemo(() => {
|
|
68
63
|
if (_actions == null || _actions?.length === 0) {
|
|
69
64
|
return [];
|
|
@@ -71,6 +66,7 @@ const FloatingButton = ({ style, actions: _actions, iconName = 'plus-lg', closeI
|
|
|
71
66
|
return _actions.filter(action => action.hideIf !== true);
|
|
72
67
|
}, [_actions]);
|
|
73
68
|
const showIndicator = useMemo(() => actions.some(_action => _action.indicator), [actions]);
|
|
69
|
+
const _buttonColor = useMemo(() => buttonColor ?? Colors.primaryColor, [Colors.primaryColor, buttonColor]);
|
|
74
70
|
if (actions == null || actions?.length === 0) {
|
|
75
71
|
return <View />;
|
|
76
72
|
}
|
|
@@ -79,11 +75,11 @@ const FloatingButton = ({ style, actions: _actions, iconName = 'plus-lg', closeI
|
|
|
79
75
|
{ padding: actionButtonParams.marginRight },
|
|
80
76
|
useCircleStyle ? styles.actionsContainer : null,
|
|
81
77
|
]}>
|
|
82
|
-
{useCircleStyle ? (<Icon name={expanded ? 'chevron-down' : 'chevron-up'} touchable={true} onPress={() => setExpanded(current => !current)}/>) : null}
|
|
78
|
+
{useCircleStyle && expandable ? (<Icon name={expanded ? 'chevron-down' : 'chevron-up'} touchable={true} onPress={() => setExpanded(current => !current)}/>) : null}
|
|
83
79
|
{!expanded && useCircleStyle && (<Indicator show={showIndicator} color={Colors.errorColor} style={styles.indicator}/>)}
|
|
84
80
|
{expanded && actions.map(renderAction)}
|
|
85
81
|
</View>)}
|
|
86
|
-
<CircleButton iconName={isOpen ? closeIconName : iconName} onPress={handleFLoatingButtonPress} size={size} style={styles.floatingButton} square={!useCircleStyle}/>
|
|
82
|
+
<CircleButton iconName={isOpen ? closeIconName : iconName} onPress={handleFLoatingButtonPress} size={size} color={_buttonColor} style={[styles.floatingButton, buttonStyle]} square={!useCircleStyle}/>
|
|
87
83
|
</View>);
|
|
88
84
|
};
|
|
89
85
|
const getStyles = (Colors) => StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FloatingButton.js","sourceRoot":"","sources":["../../../../src/components/organisms/FloatingButton/FloatingButton.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FloatingButton.js","sourceRoot":"","sources":["../../../../src/components/organisms/FloatingButton/FloatingButton.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,14 @@ export interface FloatingButtonProps {
|
|
|
4
4
|
actions: ActionProps[];
|
|
5
5
|
iconName?: string;
|
|
6
6
|
closeIconName?: string;
|
|
7
|
+
buttonStyle?: any;
|
|
8
|
+
buttonColor?: Color;
|
|
7
9
|
size?: number;
|
|
8
10
|
closeOnOutsideClick?: boolean;
|
|
9
11
|
onGlobalPress?: () => void;
|
|
10
12
|
translator: (key: string) => string;
|
|
11
13
|
useCircleStyle?: boolean;
|
|
14
|
+
expandable?: boolean;
|
|
12
15
|
defaultOpenValue?: boolean;
|
|
13
16
|
}
|
|
14
17
|
export interface ActionProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/organisms/FloatingButton/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/organisms/FloatingButton/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgCH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AACjD,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellView.js","sourceRoot":"","sources":["../../../../src/components/organisms/GridView/CellView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AAClD,OAAO,EAAY,IAAI,EAAY,MAAM,cAAc,CAAC;AACxD,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAE7C,MAAM,QAAQ,GAAG,CAAC,EAAC,SAAS,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAC,EAAE,EAAE;IAC5E,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,MAAM,cAAc,GAAG,WAAW,CAChC,IAAI,CAAC,EAAE,CACL,CAAC;QACC,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU;QACxD,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"CellView.js","sourceRoot":"","sources":["../../../../src/components/organisms/GridView/CellView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AAClD,OAAO,EAAY,IAAI,EAAY,MAAM,cAAc,CAAC;AACxD,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAE7C,MAAM,QAAQ,GAAG,CAAC,EAAC,SAAS,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAC,EAAE,EAAE;IAC5E,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,MAAM,cAAc,GAAG,WAAW,CAChC,IAAI,CAAC,EAAE,CACL,CAAC;QACC,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU;QACxD,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE,CAAC;KAC1B,CAAyB,EAC5B,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,MAAM,MAAM,GAA2B,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC;QAE7D,IAAI,SAAS,EAAE;YACb,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;SACtC;QAED,IAAI,UAAU,EAAE;YACd,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;SACvC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAEnD,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAG,CAAC;AAClD,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -10,7 +10,7 @@ interface GroupByScrollListProps {
|
|
|
10
10
|
fetchData: (fetchOptions?: any) => any[] | void;
|
|
11
11
|
moreLoading: boolean;
|
|
12
12
|
isListEnd: boolean;
|
|
13
|
-
filter
|
|
13
|
+
filter?: boolean;
|
|
14
14
|
translator?: (translationKey: string) => string;
|
|
15
15
|
horizontal?: boolean;
|
|
16
16
|
disabledRefresh?: boolean;
|
|
@@ -21,6 +21,7 @@ interface GroupByScrollListProps {
|
|
|
21
21
|
customBottomSeparator?: ReactElement<BottomSeparatorProps>;
|
|
22
22
|
actionList?: ActionType[];
|
|
23
23
|
verticalActions?: boolean;
|
|
24
|
+
displayStickyIndicator?: boolean;
|
|
24
25
|
}
|
|
25
|
-
declare const GroupByScrollList: ({ style, loadingList, data, renderItem, fetchData, moreLoading, isListEnd, filter, translator, horizontal, disabledRefresh, separatorCondition, fetchTopIndicator, customTopSeparator, fetchBottomIndicator, customBottomSeparator, actionList, verticalActions, }: GroupByScrollListProps) => React.JSX.Element;
|
|
26
|
+
declare const GroupByScrollList: ({ style, loadingList, data, renderItem, fetchData, moreLoading, isListEnd, filter, translator, horizontal, disabledRefresh, separatorCondition, fetchTopIndicator, customTopSeparator, fetchBottomIndicator, customBottomSeparator, actionList, verticalActions, displayStickyIndicator, }: GroupByScrollListProps) => React.JSX.Element;
|
|
26
27
|
export default GroupByScrollList;
|
|
@@ -15,11 +15,13 @@
|
|
|
15
15
|
* You should have received a copy of the GNU Affero General Public License
|
|
16
16
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
-
import React from 'react';
|
|
18
|
+
import React, { useRef, useState } from 'react';
|
|
19
|
+
import { StyleSheet, View } from 'react-native';
|
|
19
20
|
import TopSeparator from './TopSeparator';
|
|
20
21
|
import BottomSeparator from './BottomSeparator';
|
|
21
22
|
import { ScrollList } from '../ScrollList';
|
|
22
|
-
const GroupByScrollList = ({ style, loadingList = false, data = [], renderItem, fetchData = () => [], moreLoading = false, isListEnd = false, filter = false, translator, horizontal = false, disabledRefresh = false, separatorCondition, fetchTopIndicator, customTopSeparator, fetchBottomIndicator, customBottomSeparator, actionList, verticalActions, }) => {
|
|
23
|
+
const GroupByScrollList = ({ style, loadingList = false, data = [], renderItem, fetchData = () => [], moreLoading = false, isListEnd = false, filter = false, translator, horizontal = false, disabledRefresh = false, separatorCondition, fetchTopIndicator, customTopSeparator, fetchBottomIndicator, customBottomSeparator, actionList, verticalActions, displayStickyIndicator = true, }) => {
|
|
24
|
+
const [stickyIndicator, setStickyIndicator] = useState(null);
|
|
23
25
|
const renderSeparator = (customSeparator, Separator, props) => {
|
|
24
26
|
return customSeparator ? (React.cloneElement(customSeparator, { ...props })) : (<Separator {...props}/>);
|
|
25
27
|
};
|
|
@@ -43,6 +45,7 @@ const GroupByScrollList = ({ style, loadingList = false, data = [], renderItem,
|
|
|
43
45
|
{bottomIndicator &&
|
|
44
46
|
renderSeparator(customBottomSeparator, BottomSeparator, bottomIndicator)}
|
|
45
47
|
{topIndicator &&
|
|
48
|
+
(!isFirstItem || (isFirstItem && !displayStickyIndicator)) &&
|
|
46
49
|
renderSeparator(customTopSeparator, TopSeparator, {
|
|
47
50
|
...topIndicator,
|
|
48
51
|
isFirstItem: isFirstItem,
|
|
@@ -54,7 +57,25 @@ const GroupByScrollList = ({ style, loadingList = false, data = [], renderItem,
|
|
|
54
57
|
}
|
|
55
58
|
return renderItem({ item, index });
|
|
56
59
|
};
|
|
57
|
-
|
|
60
|
+
const onViewableItemsChanged = useRef(({ viewableItems }) => {
|
|
61
|
+
if (viewableItems.length > 0) {
|
|
62
|
+
const firstItem = viewableItems[0];
|
|
63
|
+
setStickyIndicator(fetchTopIndicator?.(firstItem.item));
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
return (<View style={styles.container}>
|
|
67
|
+
<View>
|
|
68
|
+
{displayStickyIndicator &&
|
|
69
|
+
stickyIndicator &&
|
|
70
|
+
renderSeparator(customTopSeparator, TopSeparator, stickyIndicator)}
|
|
71
|
+
</View>
|
|
72
|
+
<ScrollList style={style} loadingList={loadingList} data={data} renderItem={_renderItem} fetchData={fetchData} moreLoading={moreLoading} isListEnd={isListEnd} filter={filter} translator={translator} horizontal={horizontal} disabledRefresh={disabledRefresh} actionList={actionList} verticalActions={verticalActions} onViewableItemsChanged={onViewableItemsChanged.current}/>
|
|
73
|
+
</View>);
|
|
58
74
|
};
|
|
75
|
+
const styles = StyleSheet.create({
|
|
76
|
+
container: {
|
|
77
|
+
flex: 1,
|
|
78
|
+
},
|
|
79
|
+
});
|
|
59
80
|
export default GroupByScrollList;
|
|
60
81
|
//# sourceMappingURL=GroupByScrollList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupByScrollList.js","sourceRoot":"","sources":["../../../../src/components/organisms/GroupByScrollList/GroupByScrollList.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"GroupByScrollList.js","sourceRoot":"","sources":["../../../../src/components/organisms/GroupByScrollList/GroupByScrollList.tsx"],"names":[],"mappings":"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"}
|