@plusscommunities/pluss-core-web 1.0.2 → 1.0.6
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/index.cjs.js +7349 -1360
- package/dist/index.esm.js +7341 -1358
- package/dist/index.umd.js +7346 -1364
- package/package.json +5 -3
- package/src/actions/AuthActions.js +83 -0
- package/src/actions/UsersActions.js +65 -0
- package/src/actions/index.js +2 -2
- package/src/actions/types.js +9 -9
- package/src/analytics.js +73 -0
- package/src/apis/analyticsActions.js +49 -0
- package/src/apis/authActions.js +58 -0
- package/src/apis/fileActions.js +92 -94
- package/src/apis/index.js +7 -0
- package/src/apis/profileActions.js +133 -0
- package/src/apis/stringActions.js +25 -0
- package/src/apis/typeActions.js +186 -0
- package/src/apis/userActions.js +128 -0
- package/src/apis/utilityActions.js +35 -0
- package/src/colours.js +16 -16
- package/src/components/AnalyticsFilter.js +110 -0
- package/src/components/AudienceIncluder.js +174 -0
- package/src/components/AudienceSelector.js +549 -0
- package/src/components/CheckBox.js +77 -0
- package/src/components/DatePicker.js +268 -0
- package/src/components/DropdownInput.js +223 -0
- package/src/components/FileInput.js +314 -0
- package/src/components/ImageInput.js +971 -0
- package/src/components/MakerPopup.js +300 -0
- package/src/components/OptionsSection.js +64 -0
- package/src/components/P60Icon.js +40 -0
- package/src/components/ProfilePic.js +35 -0
- package/src/components/Reactions.js +77 -0
- package/src/components/Tag.js +62 -0
- package/src/components/TextFormatPopup.js +54 -0
- package/src/components/TimePicker.js +205 -0
- package/src/components/UserListing.js +64 -0
- package/src/components/index.js +23 -7
- package/src/components/svg-icons.json +6 -0
- package/src/config.js +10 -0
- package/src/helper/HelpDeskWidget.js +52 -0
- package/src/helper/api/getUrl.js +15 -0
- package/src/helper/api/getUrlParams.js +9 -0
- package/src/helper/api/safeReadParams.js +6 -0
- package/src/helper/colours.js/getAppColourFromState.js +10 -0
- package/src/helper/files/canvasImageUploader.js +159 -0
- package/src/helper/files/get1400.js +28 -0
- package/src/helper/files/getExtension.js +9 -0
- package/src/helper/files/getFileName.js +13 -0
- package/src/helper/files/getThumb300.js +32 -0
- package/src/helper/files/isVideo.js +8 -0
- package/src/{helper.js → helper/helper.js} +19 -130
- package/src/helper/index.js +29 -0
- package/src/helper/site/getSiteName.js +16 -0
- package/src/helper/site/getSiteNameFromRoles.js +12 -0
- package/src/helper/storage/readJSONFromStorage.js +9 -0
- package/src/helper/storage/setLocalStorage.js +5 -0
- package/src/helper/strings/isEmail.js +11 -0
- package/src/helper/strings/onlyAlphanumeric.js +8 -0
- package/src/helper/strings/randomString.js +10 -0
- package/src/helper/strings/toParagraphed.js +17 -0
- package/src/index.js +2 -1
- package/src/session.js +107 -107
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import FontAwesome from 'react-fontawesome';
|
|
3
|
+
|
|
4
|
+
class Tag extends Component {
|
|
5
|
+
renderLeft() {
|
|
6
|
+
if (!this.props.leftIcon) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
return (
|
|
10
|
+
<FontAwesome
|
|
11
|
+
name={this.props.leftIcon}
|
|
12
|
+
className={`tag_icon tag_icon-left ${this.props.leftClick ? 'tag_icon-clickable' : ''}`}
|
|
13
|
+
style={this.props.leftIconStyle}
|
|
14
|
+
onClick={this.props.leftClick}
|
|
15
|
+
/>
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
renderRight() {
|
|
20
|
+
if (!this.props.rightIcon) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
return (
|
|
24
|
+
<FontAwesome
|
|
25
|
+
name={this.props.rightIcon}
|
|
26
|
+
className={`tag_icon tag_icon-right ${this.props.rightClick ? 'tag_icon-clickable' : ''}`}
|
|
27
|
+
style={this.props.rightIconStyle}
|
|
28
|
+
onClick={this.props.rightClick}
|
|
29
|
+
/>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
renderText() {
|
|
34
|
+
if (!this.props.text) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
return <span className="tag_text">{this.props.text}</span>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
render() {
|
|
41
|
+
return (
|
|
42
|
+
<div
|
|
43
|
+
onClick={this.props.onClick}
|
|
44
|
+
className={`tag ${this.props.onClick ? 'tag-clickable' : ''} ${this.props.className || ''} ${
|
|
45
|
+
this.props.leftIcon || this.props.rightIcon ? 'tag-hasIcon' : ''
|
|
46
|
+
}`}
|
|
47
|
+
style={this.props.style}
|
|
48
|
+
>
|
|
49
|
+
<div className="tag_inner">
|
|
50
|
+
{this.renderLeft()}
|
|
51
|
+
<div className={`tag_center ${this.props.centerClass}`}>
|
|
52
|
+
{this.renderText()}
|
|
53
|
+
{this.props.children}
|
|
54
|
+
</div>
|
|
55
|
+
{this.renderRight()}
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export { Tag };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import { Button } from './Button';
|
|
3
|
+
import { COLOUR_BRANDING_MAIN } from '../colours';
|
|
4
|
+
|
|
5
|
+
class TextFormatPopup extends Component {
|
|
6
|
+
render() {
|
|
7
|
+
if (!this.props.isOpen) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
return (
|
|
11
|
+
<div className="successPopupBackground pointer">
|
|
12
|
+
<div className="successPopup">
|
|
13
|
+
<p className={`successPopup_text successPopup_text-small`}>
|
|
14
|
+
<br />
|
|
15
|
+
<span style={{ fontWeight: 600 }}>Text formatting:</span>
|
|
16
|
+
<br />
|
|
17
|
+
<br />
|
|
18
|
+
Surround text with <span style={{ fontWeight: 400 }}>**</span> to create bold text:
|
|
19
|
+
<br />
|
|
20
|
+
<span style={{ fontWeight: 400 }}>**</span>Some Text<span style={{ fontWeight: 400 }}>**</span> ={' '}
|
|
21
|
+
<span style={{ fontWeight: 600 }}>Some Text</span>
|
|
22
|
+
<br />
|
|
23
|
+
<br />
|
|
24
|
+
Surround text with <span style={{ fontWeight: 400 }}>*t*</span> to create a title:
|
|
25
|
+
<br />
|
|
26
|
+
<span style={{ fontWeight: 400 }}>*t*</span>Some Text<span style={{ fontWeight: 400 }}>*t*</span> ={' '}
|
|
27
|
+
<span style={{ fontWeight: 600, color: COLOUR_BRANDING_MAIN, fontSize: 20 }}>Some Text</span>
|
|
28
|
+
<br />
|
|
29
|
+
<br />
|
|
30
|
+
Surround text with <span style={{ fontWeight: 400 }}>*s*</span> to create a smaller title:
|
|
31
|
+
<br />
|
|
32
|
+
<span style={{ fontWeight: 400 }}>*s*</span>Some Text<span style={{ fontWeight: 400 }}>*s*</span> ={' '}
|
|
33
|
+
<span style={{ fontWeight: 600, fontSize: 16 }}>Some Text</span>
|
|
34
|
+
<br />
|
|
35
|
+
<br />
|
|
36
|
+
Create links with <span style={{ fontWeight: 400 }}>[website|text]</span>:
|
|
37
|
+
<br />
|
|
38
|
+
<span style={{ fontWeight: 400 }}>[https://example.com|Click here]</span> ={' '}
|
|
39
|
+
<a href="https://example.com" target="_blank" rel="noopener noreferrer" style={{ fontWeight: 600, fontSize: 16 }}>
|
|
40
|
+
Click here
|
|
41
|
+
</a>
|
|
42
|
+
</p>
|
|
43
|
+
<div className="successPopup_buttons">
|
|
44
|
+
<Button buttonClassName="successPopup_button" buttonType="primary" isActive onClick={this.props.onClose}>
|
|
45
|
+
Close
|
|
46
|
+
</Button>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { TextFormatPopup };
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import moment from 'moment';
|
|
3
|
+
import _ from 'lodash';
|
|
4
|
+
import { randomString } from '../helper';
|
|
5
|
+
import { SVGIcon } from './SVGIcon';
|
|
6
|
+
import { COLOUR_DUSK_LIGHT } from '../colours';
|
|
7
|
+
|
|
8
|
+
class TimePicker extends Component {
|
|
9
|
+
state = {
|
|
10
|
+
id: randomString(),
|
|
11
|
+
selectedTime: this.props.optional ? this.props.selectedTime : moment(),
|
|
12
|
+
grid: [],
|
|
13
|
+
hourInput: '',
|
|
14
|
+
minuteInput: '',
|
|
15
|
+
mInput: '',
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
UNSAFE_componentWillMount() {
|
|
19
|
+
this.onNewProps(this.props, !this.props.optional);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
UNSAFE_componentWillReceiveProps(nextProps) {
|
|
23
|
+
this.onNewProps(nextProps);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
onNewProps(nextProps, forceUpdate) {
|
|
27
|
+
if (forceUpdate || nextProps.selectedTime !== this.props.selectedTime) {
|
|
28
|
+
let mDate = moment(nextProps.selectedTime, 'h:mma');
|
|
29
|
+
if (!mDate.isValid()) {
|
|
30
|
+
this.setState({
|
|
31
|
+
selectedTime: null,
|
|
32
|
+
hourInput: '',
|
|
33
|
+
minuteInput: '',
|
|
34
|
+
mInput: '',
|
|
35
|
+
});
|
|
36
|
+
} else {
|
|
37
|
+
const minutesFocused = document.getElementById(`time_minute_${this.state.id}`) === document.activeElement;
|
|
38
|
+
this.setState({
|
|
39
|
+
selectedTime: mDate,
|
|
40
|
+
hourInput: mDate.format('h'),
|
|
41
|
+
minuteInput: mDate.format(minutesFocused ? 'm' : 'mm'),
|
|
42
|
+
mInput: mDate.format('a'),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
getDefaultTime() {
|
|
49
|
+
const result = moment();
|
|
50
|
+
result.hour(12);
|
|
51
|
+
result.minute(0);
|
|
52
|
+
result.second(0);
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
onChangeHour(event) {
|
|
57
|
+
let hour = 0;
|
|
58
|
+
if (!_.isEmpty(event.target.value)) {
|
|
59
|
+
hour = parseInt(event.target.value, 10);
|
|
60
|
+
}
|
|
61
|
+
if (isNaN(hour)) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
hour = Math.max(Math.min(12, hour), 0);
|
|
65
|
+
const dateToUse = this.state.selectedTime || this.getDefaultTime();
|
|
66
|
+
const selectNext = hour > 1; // if hour is > 1, assume user is done typing and select minutes input
|
|
67
|
+
if (dateToUse.format('a') === 'pm') {
|
|
68
|
+
hour += 12;
|
|
69
|
+
}
|
|
70
|
+
dateToUse.hour(hour);
|
|
71
|
+
this.setState({
|
|
72
|
+
selectedTime: moment(dateToUse),
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
this.selectTime(dateToUse);
|
|
76
|
+
|
|
77
|
+
if (selectNext) {
|
|
78
|
+
this.select(`time_minute_${this.state.id}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
onChangeMinute(event) {
|
|
83
|
+
let minute = 0;
|
|
84
|
+
if (!_.isEmpty(event.target.value)) {
|
|
85
|
+
minute = parseInt(event.target.value, 10);
|
|
86
|
+
}
|
|
87
|
+
if (isNaN(minute)) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
minute = Math.max(Math.min(59, minute), 0);
|
|
91
|
+
const dateToUse = this.state.selectedTime || this.getDefaultTime();
|
|
92
|
+
dateToUse.minute(minute);
|
|
93
|
+
this.setState({
|
|
94
|
+
selectedTime: moment(dateToUse),
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
this.selectTime(dateToUse);
|
|
98
|
+
|
|
99
|
+
if (minute >= 10 || event.target.value === '00') {
|
|
100
|
+
this.select(`time_am_${this.state.id}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
onBlurMinute() {
|
|
105
|
+
if (this.state.selectedTime) {
|
|
106
|
+
this.setState({
|
|
107
|
+
minuteInput: this.state.selectedTime.format('mm'),
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
onChangeM(event) {
|
|
113
|
+
const dateToUse = this.state.selectedTime || this.getDefaultTime();
|
|
114
|
+
if (event.target.value.toLowerCase().indexOf('a') > -1) {
|
|
115
|
+
// am
|
|
116
|
+
if (dateToUse.format('a') === 'pm') {
|
|
117
|
+
dateToUse.hour(dateToUse.hour() - 12);
|
|
118
|
+
}
|
|
119
|
+
} else {
|
|
120
|
+
// pm
|
|
121
|
+
if (dateToUse.format('a') === 'am') {
|
|
122
|
+
dateToUse.hour(dateToUse.hour() + 12);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
this.setState({
|
|
126
|
+
selectedTime: moment(dateToUse),
|
|
127
|
+
});
|
|
128
|
+
this.selectTime(dateToUse);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
selectTime(date) {
|
|
132
|
+
this.props.selectTime(moment(date).format(this.props.callbackFormat || 'h:mma'));
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
onClear = () => {
|
|
136
|
+
this.props.selectTime(undefined);
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
select(id) {
|
|
140
|
+
document.getElementById(id).select();
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
renderClear() {
|
|
144
|
+
if (!this.props.hasClear) return null;
|
|
145
|
+
return <SVGIcon colour={COLOUR_DUSK_LIGHT} icon="close" className="timepicker_clear" onClick={this.onClear} />;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
render() {
|
|
149
|
+
const { disabled } = this.props;
|
|
150
|
+
if (disabled) {
|
|
151
|
+
return (
|
|
152
|
+
<div className="timepicker disabled">
|
|
153
|
+
<span
|
|
154
|
+
className="timepicker__span"
|
|
155
|
+
style={this.props.inputStyle}
|
|
156
|
+
>{`${this.state.hourInput} : ${this.state.minuteInput} ${this.state.mInput}`}</span>
|
|
157
|
+
</div>
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
return (
|
|
161
|
+
<div className={`timepicker ${this.props.className}`}>
|
|
162
|
+
<input
|
|
163
|
+
className="timepicker__input"
|
|
164
|
+
maxLength="2"
|
|
165
|
+
placeholder="hh"
|
|
166
|
+
type="text"
|
|
167
|
+
id={`time_hour_${this.state.id}`}
|
|
168
|
+
value={this.state.hourInput}
|
|
169
|
+
onChange={this.onChangeHour.bind(this)}
|
|
170
|
+
onClick={this.select.bind(this, `time_hour_${this.state.id}`)}
|
|
171
|
+
style={this.props.inputStyle}
|
|
172
|
+
/>
|
|
173
|
+
<span className="timepicker__separator" style={this.props.inputStyle}>
|
|
174
|
+
:
|
|
175
|
+
</span>
|
|
176
|
+
<input
|
|
177
|
+
className="timepicker__input"
|
|
178
|
+
maxLength="2"
|
|
179
|
+
placeholder="mm"
|
|
180
|
+
type="text"
|
|
181
|
+
id={`time_minute_${this.state.id}`}
|
|
182
|
+
value={this.state.minuteInput}
|
|
183
|
+
onChange={this.onChangeMinute.bind(this)}
|
|
184
|
+
onBlur={this.onBlurMinute.bind(this)}
|
|
185
|
+
onClick={this.select.bind(this, `time_minute_${this.state.id}`)}
|
|
186
|
+
style={this.props.inputStyle}
|
|
187
|
+
/>
|
|
188
|
+
<input
|
|
189
|
+
className="timepicker__input"
|
|
190
|
+
maxLength="2"
|
|
191
|
+
placeholder="pm"
|
|
192
|
+
type="text"
|
|
193
|
+
id={`time_am_${this.state.id}`}
|
|
194
|
+
value={this.state.mInput}
|
|
195
|
+
onChange={this.onChangeM.bind(this)}
|
|
196
|
+
onClick={this.select.bind(this, `time_am_${this.state.id}`)}
|
|
197
|
+
style={this.props.inputStyle}
|
|
198
|
+
/>
|
|
199
|
+
{this.renderClear()}
|
|
200
|
+
</div>
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export { TimePicker };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import Config from '../config';
|
|
3
|
+
|
|
4
|
+
class UserListing extends Component {
|
|
5
|
+
getSize() {
|
|
6
|
+
return this.props.size || 30;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
renderRight() {
|
|
10
|
+
if (!this.props.rightContent) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
return this.props.rightContent;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
renderSub() {
|
|
17
|
+
if (!this.props.subContent) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
return this.props.subContent;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
render() {
|
|
24
|
+
return (
|
|
25
|
+
<div
|
|
26
|
+
style={{
|
|
27
|
+
minHeight: this.getSize() + 5,
|
|
28
|
+
display: 'flex',
|
|
29
|
+
cursor: this.props.onClick ? 'pointer' : 'default',
|
|
30
|
+
flexDirection: 'row',
|
|
31
|
+
justifyContent: 'space-between',
|
|
32
|
+
alignItems: 'center',
|
|
33
|
+
marginTop: 10,
|
|
34
|
+
opacity: this.props.user && this.props.user.loading ? 0.5 : 1,
|
|
35
|
+
}}
|
|
36
|
+
onClick={this.props.onClick}
|
|
37
|
+
>
|
|
38
|
+
<div key={this.props.user.id} style={{ display: 'flex', flexDirection: 'row', alignItems: 'center' }}>
|
|
39
|
+
<div
|
|
40
|
+
style={{
|
|
41
|
+
height: this.getSize(),
|
|
42
|
+
width: this.getSize(),
|
|
43
|
+
borderRadius: this.getSize() / 2,
|
|
44
|
+
marginRight: 16,
|
|
45
|
+
backgroundSize: 'cover',
|
|
46
|
+
backgroundPosition: 'center',
|
|
47
|
+
backgroundImage: `url(${this.props.user.profilePic != null ? this.props.user.profilePic : Config.env.defaultProfileImage})`,
|
|
48
|
+
}}
|
|
49
|
+
alt="user profile pic"
|
|
50
|
+
/>
|
|
51
|
+
<div style={{ flex: 1, display: 'flex', flexDirection: 'column', justifyContent: 'center', height: this.getSize() }}>
|
|
52
|
+
<p className={`fontMedium fontSize-16 ${this.props.whiteText ? 'text-white' : 'text-dark'}`} style={{ margin: 0 }}>
|
|
53
|
+
{this.props.user.displayName}
|
|
54
|
+
</p>
|
|
55
|
+
{this.renderSub()}
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
{this.renderRight()}
|
|
59
|
+
</div>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export { UserListing };
|
package/src/components/index.js
CHANGED
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
export * from './AddButton';
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './Attachment';
|
|
3
3
|
export * from './Button';
|
|
4
|
+
export * from './CheckBox';
|
|
5
|
+
export * from './FileInput';
|
|
6
|
+
export * from './GenericInput';
|
|
7
|
+
export * from './Header';
|
|
8
|
+
export * from './ImageInput';
|
|
9
|
+
export * from './MoreMenu';
|
|
4
10
|
export * from './OverlayPage';
|
|
5
11
|
export * from './OverlayPageContents';
|
|
6
12
|
export * from './OverlayPageSection';
|
|
7
13
|
export * from './OverlayPageBottomButtons';
|
|
14
|
+
export * from './PageTitle';
|
|
8
15
|
export * from './Popup';
|
|
9
|
-
export * from './
|
|
10
|
-
export * from './
|
|
11
|
-
export * from './MoreMenu';
|
|
16
|
+
export * from './ProfilePic';
|
|
17
|
+
export * from './RadioButton';
|
|
12
18
|
export * from './SVGIcon';
|
|
13
|
-
export * from './
|
|
19
|
+
export * from './Tag';
|
|
20
|
+
export * from './Text';
|
|
14
21
|
export * from './SuccessPopup';
|
|
15
|
-
export * from './
|
|
16
|
-
export * from './
|
|
22
|
+
export * from './Reactions';
|
|
23
|
+
export * from './P60Icon';
|
|
24
|
+
export * from './DatePicker';
|
|
25
|
+
export * from './AnalyticsFilter';
|
|
26
|
+
export * from './UserListing';
|
|
27
|
+
export * from './TimePicker';
|
|
28
|
+
export * from './AudienceSelector';
|
|
29
|
+
export * from './TextFormatPopup';
|
|
30
|
+
export * from './OptionsSection';
|
|
31
|
+
export * from './DropdownInput';
|
|
32
|
+
export * from './MakerPopup';
|
|
@@ -753,6 +753,12 @@
|
|
|
753
753
|
"M178.311 2.004 C 87.676 15.215,30.305 107.168,58.678 193.750 C 76.421 247.894,137.348 337.201,195.639 394.509 L 200.781 399.564 205.924 394.509 C 256.562 344.724,318.348 257.743,337.154 209.766 C 355.423 163.157,354.546 122.291,334.420 82.420 C 305.408 24.945,242.664 -7.376,178.311 2.004 M213.281 51.920 C 293.860 62.807,328.376 160.222,272.339 218.596 C 215.121 278.201,114.779 245.874,102.671 163.935 C 93.272 100.319,149.564 43.312,213.281 51.920"
|
|
754
754
|
]
|
|
755
755
|
},
|
|
756
|
+
"link-doc": {
|
|
757
|
+
"viewBox": "0 0 400 400",
|
|
758
|
+
"paths": [
|
|
759
|
+
"M96.665 25.652 C 77.862 32.241,62.840 48.025,57.895 66.390 C 56.622 71.119,56.092 121.559,56.444 204.421 L 57.000 335.000 61.512 343.444 C 68.589 356.688,77.317 365.370,89.637 371.420 L 101.000 377.000 200.000 377.000 L 299.000 377.000 310.363 371.420 C 322.683 365.370,331.411 356.688,338.488 343.444 C 344.728 331.766,346.732 133.877,340.770 118.000 C 336.740 107.267,268.882 37.140,254.000 28.329 L 245.000 23.000 176.000 22.516 C 113.769 22.079,105.986 22.386,96.665 25.652 M240.698 47.318 C 244.164 49.144,263.899 67.913,284.554 89.028 L 322.108 127.419 321.554 228.358 L 321.000 329.296 315.354 337.826 C 311.356 343.866,306.597 347.779,299.045 351.236 L 288.382 356.118 197.691 355.559 C 94.755 354.925,97.107 355.288,85.000 338.151 L 79.000 329.658 78.456 202.551 C 77.723 31.247,69.885 44.421,172.698 44.158 C 226.508 44.020,235.201 44.424,240.698 47.318 M218.159 134.591 C 210.508 137.033,186.864 158.128,184.922 164.245 C 180.280 178.873,197.293 181.980,210.084 168.840 C 226.466 152.009,236.283 149.883,247.200 160.800 C 258.117 171.717,255.991 181.534,239.160 197.916 C 228.397 208.393,227.010 215.949,234.902 221.120 C 247.584 229.429,276.032 197.335,275.989 174.768 C 275.931 145.097,247.385 125.265,218.159 134.591 M191.574 199.574 C 160.456 230.692,157.617 235.414,165.657 242.690 C 173.493 249.781,177.585 247.268,208.426 216.426 C 239.544 185.308,242.383 180.586,234.343 173.310 C 226.507 166.219,222.415 168.732,191.574 199.574 M141.755 205.693 C 94.661 253.824,152.141 313.408,201.302 267.420 C 215.624 254.023,217.651 249.817,213.120 242.902 C 207.949 235.010,200.393 236.397,189.916 247.160 C 173.590 263.933,161.413 266.010,151.121 253.779 C 142.288 243.281,144.933 233.567,160.840 218.084 C 171.337 207.865,172.899 200.258,165.555 195.113 C 158.421 190.117,155.897 191.239,141.755 205.693"
|
|
760
|
+
]
|
|
761
|
+
},
|
|
756
762
|
"template_retirement": {
|
|
757
763
|
"viewBox": "0 0 20 20",
|
|
758
764
|
"paths": [
|
package/src/config.js
CHANGED
|
@@ -6,6 +6,16 @@ const CoreConfig = {
|
|
|
6
6
|
uploadBucket: '',
|
|
7
7
|
colourBrandingMain: '',
|
|
8
8
|
colourBrandingOff: '',
|
|
9
|
+
colourBrandingApp: '',
|
|
10
|
+
defaultProfileImage:
|
|
11
|
+
'https://pluss-prd-uploads.s3.ap-southeast-2.amazonaws.com/uploads/users/ap-southeast-2:80aecdcb-9955-493e-a341-2f2263f64777/public/31164ebf4807a5f0de438dd02a/profilepic2.png',
|
|
12
|
+
utcOffset: '',
|
|
13
|
+
hasAvailableNews: false,
|
|
14
|
+
newsHaveTags: true,
|
|
15
|
+
defaultAllowComments: true,
|
|
16
|
+
makeApiKey: '',
|
|
17
|
+
logo: '',
|
|
18
|
+
clientName: '',
|
|
9
19
|
},
|
|
10
20
|
init: (environment) => {
|
|
11
21
|
CoreConfig.env = environment;
|