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.
Files changed (89) hide show
  1. package/lib/commonjs/CompetitionManager/components/AdminCompetitionList.js +4 -3
  2. package/lib/commonjs/CompetitionManager/components/AdminCompetitionList.js.map +1 -1
  3. package/lib/commonjs/Components/Icons.js +41 -0
  4. package/lib/commonjs/Components/Icons.js.map +1 -1
  5. package/lib/commonjs/MarketComponents/api/index.js +10 -1
  6. package/lib/commonjs/MarketComponents/api/index.js.map +1 -1
  7. package/lib/commonjs/MarketComponents/components/TeamEventMarket/index.js +13 -2
  8. package/lib/commonjs/MarketComponents/components/TeamEventMarket/index.js.map +1 -1
  9. package/lib/commonjs/Poll/components/CampaignHeader.js +53 -0
  10. package/lib/commonjs/Poll/components/CampaignHeader.js.map +1 -0
  11. package/lib/commonjs/Poll/components/CampaignLeaderboard.js +295 -0
  12. package/lib/commonjs/Poll/components/CampaignLeaderboard.js.map +1 -0
  13. package/lib/commonjs/Poll/components/CampaignPlay.js +11 -89
  14. package/lib/commonjs/Poll/components/CampaignPlay.js.map +1 -1
  15. package/lib/commonjs/Poll/components/CampaignProgressBar.js +0 -1
  16. package/lib/commonjs/Poll/components/CampaignProgressBar.js.map +1 -1
  17. package/lib/commonjs/Poll/components/CampaignResult.js +44 -345
  18. package/lib/commonjs/Poll/components/CampaignResult.js.map +1 -1
  19. package/lib/commonjs/Poll/components/PollCard.js +2 -1
  20. package/lib/commonjs/Poll/components/PollCard.js.map +1 -1
  21. package/lib/commonjs/Poll/components/PollQuestionsSection.js +81 -0
  22. package/lib/commonjs/Poll/components/PollQuestionsSection.js.map +1 -0
  23. package/lib/commonjs/Poll/components/PollSelectCard.js +1 -2
  24. package/lib/commonjs/Poll/components/PollSelectCard.js.map +1 -1
  25. package/lib/commonjs/Poll/index.js +132 -36
  26. package/lib/commonjs/Poll/index.js.map +1 -1
  27. package/lib/module/CompetitionManager/components/AdminCompetitionList.js +5 -4
  28. package/lib/module/CompetitionManager/components/AdminCompetitionList.js.map +1 -1
  29. package/lib/module/Components/Icons.js +41 -0
  30. package/lib/module/Components/Icons.js.map +1 -1
  31. package/lib/module/MarketComponents/api/index.js +10 -1
  32. package/lib/module/MarketComponents/api/index.js.map +1 -1
  33. package/lib/module/MarketComponents/components/TeamEventMarket/index.js +13 -2
  34. package/lib/module/MarketComponents/components/TeamEventMarket/index.js.map +1 -1
  35. package/lib/module/Poll/components/CampaignHeader.js +46 -0
  36. package/lib/module/Poll/components/CampaignHeader.js.map +1 -0
  37. package/lib/module/Poll/components/CampaignLeaderboard.js +286 -0
  38. package/lib/module/Poll/components/CampaignLeaderboard.js.map +1 -0
  39. package/lib/module/Poll/components/CampaignPlay.js +11 -89
  40. package/lib/module/Poll/components/CampaignPlay.js.map +1 -1
  41. package/lib/module/Poll/components/CampaignProgressBar.js +0 -1
  42. package/lib/module/Poll/components/CampaignProgressBar.js.map +1 -1
  43. package/lib/module/Poll/components/CampaignResult.js +48 -348
  44. package/lib/module/Poll/components/CampaignResult.js.map +1 -1
  45. package/lib/module/Poll/components/PollCard.js +2 -1
  46. package/lib/module/Poll/components/PollCard.js.map +1 -1
  47. package/lib/module/Poll/components/PollQuestionsSection.js +72 -0
  48. package/lib/module/Poll/components/PollQuestionsSection.js.map +1 -0
  49. package/lib/module/Poll/components/PollSelectCard.js +1 -2
  50. package/lib/module/Poll/components/PollSelectCard.js.map +1 -1
  51. package/lib/module/Poll/index.js +133 -38
  52. package/lib/module/Poll/index.js.map +1 -1
  53. package/lib/typescript/src/CompetitionManager/components/AdminCompetitionList.d.ts +2 -2
  54. package/lib/typescript/src/CompetitionManager/components/AdminCompetitionList.d.ts.map +1 -1
  55. package/lib/typescript/src/Components/Icons.d.ts +1 -0
  56. package/lib/typescript/src/Components/Icons.d.ts.map +1 -1
  57. package/lib/typescript/src/MarketComponents/api/index.d.ts +1 -0
  58. package/lib/typescript/src/MarketComponents/api/index.d.ts.map +1 -1
  59. package/lib/typescript/src/MarketComponents/components/TeamEventMarket/index.d.ts.map +1 -1
  60. package/lib/typescript/src/Poll/components/CampaignHeader.d.ts +9 -0
  61. package/lib/typescript/src/Poll/components/CampaignHeader.d.ts.map +1 -0
  62. package/lib/typescript/src/Poll/components/CampaignLeaderboard.d.ts +12 -0
  63. package/lib/typescript/src/Poll/components/CampaignLeaderboard.d.ts.map +1 -0
  64. package/lib/typescript/src/Poll/components/CampaignPlay.d.ts.map +1 -1
  65. package/lib/typescript/src/Poll/components/CampaignProgressBar.d.ts.map +1 -1
  66. package/lib/typescript/src/Poll/components/CampaignResult.d.ts +3 -7
  67. package/lib/typescript/src/Poll/components/CampaignResult.d.ts.map +1 -1
  68. package/lib/typescript/src/Poll/components/PollCard.d.ts.map +1 -1
  69. package/lib/typescript/src/Poll/components/PollQuestionsSection.d.ts +11 -0
  70. package/lib/typescript/src/Poll/components/PollQuestionsSection.d.ts.map +1 -0
  71. package/lib/typescript/src/Poll/components/PollSelectCard.d.ts +1 -2
  72. package/lib/typescript/src/Poll/components/PollSelectCard.d.ts.map +1 -1
  73. package/lib/typescript/src/Poll/index.d.ts +4 -2
  74. package/lib/typescript/src/Poll/index.d.ts.map +1 -1
  75. package/package.json +1 -1
  76. package/src/CompetitionManager/components/AdminCompetitionList.tsx +6 -6
  77. package/src/Components/Icons.tsx +16 -0
  78. package/src/MarketComponents/api/index.ts +10 -1
  79. package/src/MarketComponents/components/TeamEventMarket/index.tsx +12 -1
  80. package/src/Poll/components/CampaignHeader.tsx +35 -0
  81. package/src/Poll/components/CampaignLeaderboard.tsx +181 -0
  82. package/src/Poll/components/CampaignPlay.tsx +11 -82
  83. package/src/Poll/components/CampaignProgressBar.tsx +0 -1
  84. package/src/Poll/components/CampaignResult.tsx +42 -162
  85. package/src/Poll/components/PollCard.tsx +2 -1
  86. package/src/Poll/components/PollQuestionsSection.tsx +66 -0
  87. package/src/Poll/components/PollSelectCard.tsx +2 -3
  88. package/src/Poll/index.tsx +120 -31
  89. 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={{ flex:1 }} onLayout={(ev) => {
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 = ({ index, poll, disabled, selected, poll_campaign, poll_response, show_response, response_option, onSelect }:PollSelectCardProps) => {
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'>{(index + 1).toString()}</Text>
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' ?
@@ -1,54 +1,143 @@
1
1
  import React, { useEffect, useState } from 'react';
2
- import CampaignPlay from "./components/CampaignPlay"
3
- import { PollCampaignApi } from './api';
4
- import FlashMarket from './flashmarket';
5
- import { View, useWindowDimensions } from 'react-native';
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
- type: 'full' | 'mini',
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 = ({ poll_campaign_id, poll_id, type, player_id, onRequestAuthenticate, onComplete }: PollCampaignModuleProps ) => {
17
- const [ loaded, setLoaded ] = useState(false);
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
- setLoaded(true)
24
- },[])
25
- if(!loaded){ return <></> }
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
- if(type == 'full' && poll_campaign_id){
28
- let widget_width = dimensions.width
29
- if(widget_width > 600){ widget_width = 600 }
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={{ width: widget_width, alignSelf:'center', height:dimensions.height }}>
32
- <CampaignPlay
33
- player_id={player_id}
34
- onRequestAuthenticate={onRequestAuthenticate}
35
- poll_campaign_id={poll_campaign_id}
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
- if(type == 'mini'){
42
- return (
43
- <FlashMarket
44
- poll_campaign_id={poll_campaign_id}
45
- poll_id={poll_id}
46
- player_id={player_id}
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
- return <></>
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
 
package/src/types.d.ts CHANGED
@@ -116,6 +116,7 @@ export interface EventProps {
116
116
  external_id:string,
117
117
  away_team_id: string,
118
118
  away?:TeamProps
119
+ sponsor_id?:string,
119
120
  away_sub_title?:string,
120
121
  home_team_id:string,
121
122
  home?:TeamProps,