be-components 1.9.6 → 1.9.8
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/commonjs/CompetitionManager/components/AdminCompetitionList.js +4 -3
- package/lib/commonjs/CompetitionManager/components/AdminCompetitionList.js.map +1 -1
- package/lib/commonjs/Components/Icons.js +41 -0
- package/lib/commonjs/Components/Icons.js.map +1 -1
- package/lib/commonjs/MarketComponents/api/index.js +10 -1
- package/lib/commonjs/MarketComponents/api/index.js.map +1 -1
- package/lib/commonjs/MarketComponents/components/TeamEventMarket/index.js +13 -2
- package/lib/commonjs/MarketComponents/components/TeamEventMarket/index.js.map +1 -1
- package/lib/commonjs/Poll/components/CampaignHeader.js +53 -0
- package/lib/commonjs/Poll/components/CampaignHeader.js.map +1 -0
- package/lib/commonjs/Poll/components/CampaignLeaderboard.js +295 -0
- package/lib/commonjs/Poll/components/CampaignLeaderboard.js.map +1 -0
- package/lib/commonjs/Poll/components/CampaignPlay.js +11 -89
- package/lib/commonjs/Poll/components/CampaignPlay.js.map +1 -1
- package/lib/commonjs/Poll/components/CampaignProgressBar.js +0 -1
- package/lib/commonjs/Poll/components/CampaignProgressBar.js.map +1 -1
- package/lib/commonjs/Poll/components/CampaignResult.js +44 -345
- package/lib/commonjs/Poll/components/CampaignResult.js.map +1 -1
- package/lib/commonjs/Poll/components/PollCard.js +2 -1
- package/lib/commonjs/Poll/components/PollCard.js.map +1 -1
- package/lib/commonjs/Poll/components/PollQuestionsSection.js +81 -0
- package/lib/commonjs/Poll/components/PollQuestionsSection.js.map +1 -0
- package/lib/commonjs/Poll/components/PollSelectCard.js +1 -2
- package/lib/commonjs/Poll/components/PollSelectCard.js.map +1 -1
- package/lib/commonjs/Poll/index.js +132 -36
- package/lib/commonjs/Poll/index.js.map +1 -1
- package/lib/module/CompetitionManager/components/AdminCompetitionList.js +5 -4
- package/lib/module/CompetitionManager/components/AdminCompetitionList.js.map +1 -1
- package/lib/module/Components/Icons.js +41 -0
- package/lib/module/Components/Icons.js.map +1 -1
- package/lib/module/MarketComponents/api/index.js +10 -1
- package/lib/module/MarketComponents/api/index.js.map +1 -1
- package/lib/module/MarketComponents/components/TeamEventMarket/index.js +13 -2
- package/lib/module/MarketComponents/components/TeamEventMarket/index.js.map +1 -1
- package/lib/module/Poll/components/CampaignHeader.js +46 -0
- package/lib/module/Poll/components/CampaignHeader.js.map +1 -0
- package/lib/module/Poll/components/CampaignLeaderboard.js +286 -0
- package/lib/module/Poll/components/CampaignLeaderboard.js.map +1 -0
- package/lib/module/Poll/components/CampaignPlay.js +11 -89
- package/lib/module/Poll/components/CampaignPlay.js.map +1 -1
- package/lib/module/Poll/components/CampaignProgressBar.js +0 -1
- package/lib/module/Poll/components/CampaignProgressBar.js.map +1 -1
- package/lib/module/Poll/components/CampaignResult.js +48 -348
- package/lib/module/Poll/components/CampaignResult.js.map +1 -1
- package/lib/module/Poll/components/PollCard.js +2 -1
- package/lib/module/Poll/components/PollCard.js.map +1 -1
- package/lib/module/Poll/components/PollQuestionsSection.js +72 -0
- package/lib/module/Poll/components/PollQuestionsSection.js.map +1 -0
- package/lib/module/Poll/components/PollSelectCard.js +1 -2
- package/lib/module/Poll/components/PollSelectCard.js.map +1 -1
- package/lib/module/Poll/index.js +133 -38
- package/lib/module/Poll/index.js.map +1 -1
- package/lib/typescript/src/CompetitionManager/components/AdminCompetitionList.d.ts +2 -2
- package/lib/typescript/src/CompetitionManager/components/AdminCompetitionList.d.ts.map +1 -1
- package/lib/typescript/src/Components/Icons.d.ts +1 -0
- package/lib/typescript/src/Components/Icons.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/api/index.d.ts +1 -0
- package/lib/typescript/src/MarketComponents/api/index.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/components/TeamEventMarket/index.d.ts.map +1 -1
- package/lib/typescript/src/Poll/components/CampaignHeader.d.ts +9 -0
- package/lib/typescript/src/Poll/components/CampaignHeader.d.ts.map +1 -0
- package/lib/typescript/src/Poll/components/CampaignLeaderboard.d.ts +12 -0
- package/lib/typescript/src/Poll/components/CampaignLeaderboard.d.ts.map +1 -0
- package/lib/typescript/src/Poll/components/CampaignPlay.d.ts.map +1 -1
- package/lib/typescript/src/Poll/components/CampaignProgressBar.d.ts.map +1 -1
- package/lib/typescript/src/Poll/components/CampaignResult.d.ts +3 -7
- package/lib/typescript/src/Poll/components/CampaignResult.d.ts.map +1 -1
- package/lib/typescript/src/Poll/components/PollCard.d.ts.map +1 -1
- package/lib/typescript/src/Poll/components/PollQuestionsSection.d.ts +11 -0
- package/lib/typescript/src/Poll/components/PollQuestionsSection.d.ts.map +1 -0
- package/lib/typescript/src/Poll/components/PollSelectCard.d.ts +1 -2
- package/lib/typescript/src/Poll/components/PollSelectCard.d.ts.map +1 -1
- package/lib/typescript/src/Poll/index.d.ts +4 -2
- package/lib/typescript/src/Poll/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/CompetitionManager/components/AdminCompetitionList.tsx +6 -6
- package/src/Components/Icons.tsx +16 -0
- package/src/MarketComponents/api/index.ts +10 -1
- package/src/MarketComponents/components/TeamEventMarket/index.tsx +12 -1
- package/src/Poll/components/CampaignHeader.tsx +35 -0
- package/src/Poll/components/CampaignLeaderboard.tsx +181 -0
- package/src/Poll/components/CampaignPlay.tsx +11 -82
- package/src/Poll/components/CampaignProgressBar.tsx +0 -1
- package/src/Poll/components/CampaignResult.tsx +42 -162
- package/src/Poll/components/PollCard.tsx +2 -1
- package/src/Poll/components/PollQuestionsSection.tsx +66 -0
- package/src/Poll/components/PollSelectCard.tsx +2 -3
- package/src/Poll/index.tsx +120 -31
- package/src/types.d.ts +1 -0
|
@@ -6,6 +6,7 @@ import type { PollOptionProps, PollProps, PollResponseProps, PollSummaryProps }
|
|
|
6
6
|
import { PollApi, PollResponseApi } from '../api';
|
|
7
7
|
import { Button, Icons, Text } from '../../Components';
|
|
8
8
|
import Colors from '../../constants/colors';
|
|
9
|
+
import { view_styles } from '../../constants/styles';
|
|
9
10
|
|
|
10
11
|
type PollCardProps = {
|
|
11
12
|
poll:PollProps,
|
|
@@ -182,7 +183,7 @@ const PollCard = ({ poll, question_number, total_questions, onSkip, onCancel, on
|
|
|
182
183
|
return <></>
|
|
183
184
|
}
|
|
184
185
|
return (
|
|
185
|
-
<View nativeID='poll' style={{
|
|
186
|
+
<View nativeID='poll' style={{ ...view_styles.section }} onLayout={(ev) => {
|
|
186
187
|
const { width } = ev.nativeEvent.layout
|
|
187
188
|
setPollWidth(width)
|
|
188
189
|
}}>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { View, TouchableOpacity, FlatList } from "react-native"
|
|
3
|
+
import type { PollCampaignProps, PollProps, PollResponseProps } from "../../types"
|
|
4
|
+
import { view_styles } from '../../constants/styles';
|
|
5
|
+
import { Icons, Text } from '../../Components';
|
|
6
|
+
import Colors from '../../constants/colors';
|
|
7
|
+
import PollSelectCard from './PollSelectCard';
|
|
8
|
+
|
|
9
|
+
type PollQuestionsSectionProps = {
|
|
10
|
+
poll_campaign:PollCampaignProps,
|
|
11
|
+
polls:PollProps[],
|
|
12
|
+
poll_responses:PollResponseProps[],
|
|
13
|
+
onSelectPoll:(p:PollProps) => void
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const PollQuestionsSection = ({ poll_campaign, polls, onSelectPoll }:PollQuestionsSectionProps) => {
|
|
17
|
+
const [ section_data, setSectionData ] = useState<{
|
|
18
|
+
loading:boolean,
|
|
19
|
+
expanded:boolean,
|
|
20
|
+
}>({
|
|
21
|
+
loading: false,
|
|
22
|
+
expanded: true
|
|
23
|
+
});
|
|
24
|
+
const { expanded } = section_data;
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
const renderPolls = (data:{item:PollProps, index:number}) => {
|
|
28
|
+
return (
|
|
29
|
+
<View>
|
|
30
|
+
<PollSelectCard
|
|
31
|
+
poll={data.item}
|
|
32
|
+
disabled={false}
|
|
33
|
+
selected={false}
|
|
34
|
+
poll_campaign={poll_campaign}
|
|
35
|
+
show_response={false}
|
|
36
|
+
response_option={undefined}
|
|
37
|
+
onSelect={(p) => onSelectPoll(p)}
|
|
38
|
+
/>
|
|
39
|
+
</View>
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
<View style={{ ...view_styles.section }}>
|
|
45
|
+
<TouchableOpacity style={{ ...view_styles.section_header }} onPress={() => setSectionData({ ...section_data, expanded: !expanded })}>
|
|
46
|
+
<Icons.QuestionIcon size={18} color={Colors.brand.midnight} />
|
|
47
|
+
<View style={{flex:1, marginLeft:10}}>
|
|
48
|
+
<Text theme='header'>Questions</Text>
|
|
49
|
+
<Text style={{ marginTop:3 }} theme='body'>Available questions can be found below</Text>
|
|
50
|
+
</View>
|
|
51
|
+
<Icons.ChevronIcon direction={expanded?'up':'down'} color={Colors.brand.midnight} size={8} />
|
|
52
|
+
</TouchableOpacity>
|
|
53
|
+
{expanded ?
|
|
54
|
+
<View style={{ ...view_styles.section_body }}>
|
|
55
|
+
<FlatList
|
|
56
|
+
data={polls.sort((a,b) => a.priority - b.priority)}
|
|
57
|
+
renderItem={renderPolls}
|
|
58
|
+
keyExtractor={(item) => item.poll_id.toString()}
|
|
59
|
+
/>
|
|
60
|
+
</View>
|
|
61
|
+
:<></>}
|
|
62
|
+
</View>
|
|
63
|
+
)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export default PollQuestionsSection
|
|
@@ -9,14 +9,13 @@ type PollSelectCardProps = {
|
|
|
9
9
|
poll_campaign:PollCampaignProps,
|
|
10
10
|
poll:PollProps,
|
|
11
11
|
disabled?:boolean,
|
|
12
|
-
index:number,
|
|
13
12
|
show_response?:boolean,
|
|
14
13
|
response_option?:PollOptionProps,
|
|
15
14
|
poll_response?:PollResponseProps,
|
|
16
15
|
onSelect:(poll:PollProps) => void
|
|
17
16
|
}
|
|
18
17
|
|
|
19
|
-
const PollSelectCard = ({
|
|
18
|
+
const PollSelectCard = ({ poll, disabled, selected, poll_campaign, poll_response, show_response, response_option, onSelect }:PollSelectCardProps) => {
|
|
20
19
|
|
|
21
20
|
const getResultColor = () => {
|
|
22
21
|
switch(poll_response?.result_ind){
|
|
@@ -66,7 +65,7 @@ const PollSelectCard = ({ index, poll, disabled, selected, poll_campaign, poll_r
|
|
|
66
65
|
return (
|
|
67
66
|
<TouchableOpacity disabled={disabled} style={{ padding:10, borderRadius:22, backgroundColor:selected?Colors.highlights.highlight500Faded:undefined, flexDirection:'row' }} onPress={() => onSelect(poll)}>
|
|
68
67
|
<View style={{ height:20, width:20, borderRadius:100, backgroundColor:Colors.shades.white, marginRight:10, justifyContent:'center' }}>
|
|
69
|
-
<Text size={12} color={Colors.brand.midnight} weight='bold' textAlign='center'>{
|
|
68
|
+
<Text size={12} color={Colors.brand.midnight} weight='bold' textAlign='center'>{poll.priority}</Text>
|
|
70
69
|
</View>
|
|
71
70
|
<View style={{ flex:1 }}>
|
|
72
71
|
{poll_campaign.campaign_type == 'trivia' && !poll_response && poll.status != 'closed' ?
|
package/src/Poll/index.tsx
CHANGED
|
@@ -1,54 +1,143 @@
|
|
|
1
1
|
import React, { useEffect, useState } from 'react';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
2
|
+
import { PollApi, PollCampaignApi } from './api';
|
|
3
|
+
import { View, ScrollView, ActivityIndicator } from 'react-native';
|
|
4
|
+
import type { PollCampaignGoalProps, PollCampaignProps, PollProps, PollResponseProps } from '../types';
|
|
5
|
+
import Colors from '../constants/colors';
|
|
6
|
+
import CampaignHeader from './components/CampaignHeader';
|
|
7
|
+
import CampaignProgressBar from './components/CampaignProgressBar';
|
|
8
|
+
import PollQuestionsSection from './components/PollQuestionsSection';
|
|
9
|
+
import { Spring, Text } from '../Components';
|
|
10
|
+
//import PollCard from './components/PollCard';
|
|
11
|
+
import CampaignResult from './components/CampaignResult';
|
|
12
|
+
import CampaignLeaderboard from './components/CampaignLeaderboard';
|
|
6
13
|
|
|
7
14
|
|
|
8
15
|
type PollCampaignModuleProps = {
|
|
9
16
|
poll_campaign_id:string,
|
|
10
17
|
poll_id?:string,
|
|
11
18
|
player_id?:string,
|
|
12
|
-
|
|
19
|
+
height:number,
|
|
13
20
|
onRequestAuthenticate: (auth_strategy_id?:string, company_id?:string) => void,
|
|
21
|
+
onSharePollCampaign: (poll_campaign:PollCampaignProps) => void,
|
|
14
22
|
onComplete:() => void
|
|
15
23
|
}
|
|
16
|
-
const PollCampaign = ({
|
|
17
|
-
const [
|
|
24
|
+
const PollCampaign = ({ height, poll_campaign_id, player_id }: PollCampaignModuleProps ) => {
|
|
25
|
+
const [ module_data, setModuleData ] = useState<{
|
|
26
|
+
loading: boolean,
|
|
27
|
+
active_poll_id?:string,
|
|
28
|
+
poll_campaign?:PollCampaignProps,
|
|
29
|
+
polls:PollProps[],
|
|
30
|
+
poll_campaign_goals:PollCampaignGoalProps[]
|
|
31
|
+
}>({
|
|
32
|
+
loading: false,
|
|
33
|
+
polls: [],
|
|
34
|
+
poll_campaign_goals:[]
|
|
35
|
+
});
|
|
36
|
+
const [ full_leaderboard, setFullLeaderboard ] = useState(false);
|
|
37
|
+
const [ my_data ] = useState<{
|
|
38
|
+
poll_responses:PollResponseProps[]
|
|
39
|
+
}>({
|
|
40
|
+
poll_responses: []
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
const { poll_campaign, polls, active_poll_id } = module_data;
|
|
44
|
+
const active_poll = polls.find(p => p.poll_id == active_poll_id);
|
|
45
|
+
const { poll_responses } = my_data;
|
|
18
46
|
|
|
19
|
-
const dimensions = useWindowDimensions();
|
|
20
|
-
|
|
21
47
|
useEffect(() => {
|
|
22
48
|
PollCampaignApi.setEnvironment();
|
|
23
|
-
|
|
24
|
-
},[])
|
|
25
|
-
|
|
49
|
+
getDataFromServer();
|
|
50
|
+
},[poll_campaign_id, player_id])
|
|
51
|
+
|
|
52
|
+
const getDataFromServer = async() => {
|
|
53
|
+
setModuleData({ ...module_data, loading:true });
|
|
54
|
+
const pc = await PollCampaignApi.getPollCampaignById(poll_campaign_id);
|
|
55
|
+
const ps_resp = await PollApi.getPollsByCampaignId(poll_campaign_id);
|
|
26
56
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
57
|
+
setModuleData({
|
|
58
|
+
...module_data,
|
|
59
|
+
poll_campaign: pc,
|
|
60
|
+
polls: ps_resp.polls,
|
|
61
|
+
poll_campaign_goals: ps_resp.poll_campaign_goals,
|
|
62
|
+
loading:false
|
|
63
|
+
})
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if(!poll_campaign){
|
|
30
67
|
return (
|
|
31
|
-
<View style={{
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
onFinished={onComplete}
|
|
68
|
+
<View style={{ flex:1 }}>
|
|
69
|
+
<ActivityIndicator
|
|
70
|
+
style={{ padding:20, alignSelf:'center' }}
|
|
71
|
+
size='large'
|
|
72
|
+
color={Colors.brand.midnight}
|
|
37
73
|
/>
|
|
38
74
|
</View>
|
|
39
75
|
)
|
|
40
76
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
onRequestAuthenticate={onRequestAuthenticate}
|
|
77
|
+
|
|
78
|
+
return (
|
|
79
|
+
<View style={{ backgroundColor:Colors.shades.white, height }}>
|
|
80
|
+
<CampaignHeader
|
|
81
|
+
poll_campaign={poll_campaign}
|
|
82
|
+
onSharePollCampaign={(pc) => console.log(pc)}
|
|
48
83
|
/>
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
84
|
+
<ScrollView style={{ flex:1 }}>
|
|
85
|
+
<View style={{ backgroundColor:Colors.shades.shade100 }}>
|
|
86
|
+
<CampaignProgressBar
|
|
87
|
+
poll_campaign={poll_campaign}
|
|
88
|
+
polls={polls}
|
|
89
|
+
active_poll='0'
|
|
90
|
+
onPollSelect={(p) => console.log(p)}
|
|
91
|
+
poll_responses={poll_responses}
|
|
92
|
+
/>
|
|
93
|
+
</View>
|
|
94
|
+
<View nativeID='leaderboard'>
|
|
95
|
+
<CampaignResult
|
|
96
|
+
poll_campaign={poll_campaign}
|
|
97
|
+
onShowFullLeaderboard={() => setFullLeaderboard(true)}
|
|
98
|
+
/>
|
|
99
|
+
</View>
|
|
100
|
+
<View nativeID='poll_questions'>
|
|
101
|
+
<PollQuestionsSection
|
|
102
|
+
poll_campaign={poll_campaign}
|
|
103
|
+
polls={polls}
|
|
104
|
+
poll_responses={poll_responses}
|
|
105
|
+
onSelectPoll={(p) => setModuleData({ ...module_data, active_poll_id: p.poll_id })}
|
|
106
|
+
/>
|
|
107
|
+
</View>
|
|
108
|
+
</ScrollView>
|
|
109
|
+
{active_poll ?
|
|
110
|
+
<View style={{ position:'absolute', top:0, left:0, right:0, bottom:0, justifyContent:'flex-end', backgroundColor:Colors.shades.black_faded }}>
|
|
111
|
+
<Spring
|
|
112
|
+
slide='vertical'
|
|
113
|
+
to={0}
|
|
114
|
+
from={500}
|
|
115
|
+
style={{ maxHeight:height }}
|
|
116
|
+
>
|
|
117
|
+
<Text>HEY</Text>
|
|
118
|
+
</Spring>
|
|
119
|
+
</View>
|
|
120
|
+
:<></>}
|
|
121
|
+
{full_leaderboard ?
|
|
122
|
+
<View style={{ position:'absolute', top:0, left:0, right:0, bottom:0, justifyContent:'flex-end', backgroundColor:Colors.shades.black_faded }}>
|
|
123
|
+
<Spring
|
|
124
|
+
slide='vertical'
|
|
125
|
+
to={0}
|
|
126
|
+
from={500}
|
|
127
|
+
style={{ maxHeight:height }}
|
|
128
|
+
>
|
|
129
|
+
<CampaignLeaderboard
|
|
130
|
+
height={height}
|
|
131
|
+
poll_campaign={poll_campaign}
|
|
132
|
+
view_mode='full'
|
|
133
|
+
onClose={() => setFullLeaderboard(false)}
|
|
134
|
+
/>
|
|
135
|
+
</Spring>
|
|
136
|
+
</View>
|
|
137
|
+
:<></>}
|
|
138
|
+
</View>
|
|
139
|
+
)
|
|
140
|
+
|
|
52
141
|
|
|
53
142
|
}
|
|
54
143
|
|