@plusscommunities/pluss-core-web 1.4.23 → 1.4.24
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 +120 -5
- package/dist/index.esm.js +120 -5
- package/dist/index.umd.js +123 -8
- package/package.json +1 -1
- package/src/components/DurationInput.js +51 -0
- package/src/components/OptionsSection.js +11 -3
- package/src/components/index.js +1 -0
- package/src/helper/helper.js +33 -0
- package/src/helper/index.js +1 -0
- package/src/helper/site/getMerchantsFromState.js +9 -0
package/dist/index.cjs.js
CHANGED
|
@@ -27,13 +27,13 @@ var _typeof = require('@babel/runtime/helpers/typeof');
|
|
|
27
27
|
var Dropzone = require('react-dropzone');
|
|
28
28
|
var reactRouter = require('react-router');
|
|
29
29
|
var reactBootstrap = require('react-bootstrap');
|
|
30
|
+
var reactFontawesome = require('@fortawesome/react-fontawesome');
|
|
30
31
|
var reactLottie = require('@crello/react-lottie');
|
|
31
32
|
var reactCsv = require('react-csv');
|
|
32
33
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
33
34
|
var reactColor = require('react-color');
|
|
34
35
|
var tinycolor = require('tinycolor2');
|
|
35
36
|
var reactRouterDom = require('react-router-dom');
|
|
36
|
-
var reactFontawesome = require('@fortawesome/react-fontawesome');
|
|
37
37
|
var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
|
|
38
38
|
|
|
39
39
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -958,6 +958,14 @@ var getSiteLevelFromState = function getSiteLevelFromState(state) {
|
|
|
958
958
|
return siteConfig;
|
|
959
959
|
};
|
|
960
960
|
|
|
961
|
+
var getMerchantsFromState = function getMerchantsFromState(state) {
|
|
962
|
+
if (!state || !state.auth || !state.auth.user) return [];
|
|
963
|
+
var currentSite = state.auth.user.Roles.find(function (r) {
|
|
964
|
+
return r.site === state.auth.site;
|
|
965
|
+
});
|
|
966
|
+
return currentSite && !___default['default'].isEmpty(currentSite.siteInfo.Accounts) ? currentSite.siteInfo.Accounts : [];
|
|
967
|
+
};
|
|
968
|
+
|
|
961
969
|
var readJSONFromStorage = function readJSONFromStorage(storage, key, fallback) {
|
|
962
970
|
var value = storage.getItem(key);
|
|
963
971
|
|
|
@@ -1098,6 +1106,18 @@ var getTimepickerTime = function getTimepickerTime(input) {
|
|
|
1098
1106
|
hours: timeSplit[0],
|
|
1099
1107
|
minutes: timeSplit[1].substring(0, 2)
|
|
1100
1108
|
};
|
|
1109
|
+
}; //converts the result of getTimePickerTime into a number representing minutes since midnight
|
|
1110
|
+
|
|
1111
|
+
var timeToMinutes = function timeToMinutes(time) {
|
|
1112
|
+
return parseInt(time.hours, 10) * 60 + parseInt(time.minutes, 10);
|
|
1113
|
+
}; // checks whether there is an overlap between two time frames given time and end times in minutes since midnight
|
|
1114
|
+
|
|
1115
|
+
var hasTimeframeOverlap = function hasTimeframeOverlap(aStart, aEnd, bStart, bEnd) {
|
|
1116
|
+
return aStart < bEnd && bStart < aEnd || bStart < aEnd && aStart < bEnd;
|
|
1117
|
+
}; // converts a time picker input into midnights since midnight
|
|
1118
|
+
|
|
1119
|
+
var timepickerToMinutes = function timepickerToMinutes(input) {
|
|
1120
|
+
return timeToMinutes(getTimepickerTime(input));
|
|
1101
1121
|
};
|
|
1102
1122
|
var getDateFromTimeDatePickers = function getDateFromTimeDatePickers(dateInput, timeInput) {
|
|
1103
1123
|
var dateObject = new Date(dateInput);
|
|
@@ -1106,6 +1126,22 @@ var getDateFromTimeDatePickers = function getDateFromTimeDatePickers(dateInput,
|
|
|
1106
1126
|
dateObject.setMinutes(time.minutes);
|
|
1107
1127
|
return dateObject;
|
|
1108
1128
|
};
|
|
1129
|
+
var minutesToString = function minutesToString(minutes) {
|
|
1130
|
+
var hours = Math.floor(minutes / 60);
|
|
1131
|
+
var remainingMinutes = minutes % 60;
|
|
1132
|
+
var hoursString = hours > 1 ? "".concat(hours, " hours") : "".concat(hours, " hour");
|
|
1133
|
+
var minutesString = remainingMinutes > 1 ? "".concat(remainingMinutes, " minutes") : "".concat(remainingMinutes, " minute");
|
|
1134
|
+
|
|
1135
|
+
if (hours && remainingMinutes) {
|
|
1136
|
+
return "".concat(hoursString, " ").concat(minutesString);
|
|
1137
|
+
} else if (hours) {
|
|
1138
|
+
return hoursString;
|
|
1139
|
+
} else if (remainingMinutes) {
|
|
1140
|
+
return minutesString;
|
|
1141
|
+
} else {
|
|
1142
|
+
return '0 minutes';
|
|
1143
|
+
}
|
|
1144
|
+
};
|
|
1109
1145
|
var getUTCFromTimeDatePickers = function getUTCFromTimeDatePickers(dateInput, timeInput) {
|
|
1110
1146
|
var dateObject = getDateFromTimeDatePickers(dateInput, timeInput);
|
|
1111
1147
|
return moment__default['default'].utc(dateObject);
|
|
@@ -1759,11 +1795,16 @@ var index$3 = /*#__PURE__*/Object.freeze({
|
|
|
1759
1795
|
getSiteNameFromRoles: getSiteNameFromRoles,
|
|
1760
1796
|
getSiteSettingFromState: getSiteSettingFromState,
|
|
1761
1797
|
getSiteLevelFromState: getSiteLevelFromState,
|
|
1798
|
+
getMerchantsFromState: getMerchantsFromState,
|
|
1762
1799
|
readJSONFromStorage: readJSONFromStorage,
|
|
1763
1800
|
setLocalStorage: setLocalStorage,
|
|
1764
1801
|
readStorageWithCookie: readStorageWithCookie,
|
|
1765
1802
|
getTimepickerTime: getTimepickerTime,
|
|
1803
|
+
timeToMinutes: timeToMinutes,
|
|
1804
|
+
hasTimeframeOverlap: hasTimeframeOverlap,
|
|
1805
|
+
timepickerToMinutes: timepickerToMinutes,
|
|
1766
1806
|
getDateFromTimeDatePickers: getDateFromTimeDatePickers,
|
|
1807
|
+
minutesToString: minutesToString,
|
|
1767
1808
|
getUTCFromTimeDatePickers: getUTCFromTimeDatePickers,
|
|
1768
1809
|
getPluralS: getPluralS,
|
|
1769
1810
|
getPluralOptions: getPluralOptions,
|
|
@@ -5318,6 +5359,65 @@ var DatePicker = /*#__PURE__*/function (_Component) {
|
|
|
5318
5359
|
return DatePicker;
|
|
5319
5360
|
}(React.Component);
|
|
5320
5361
|
|
|
5362
|
+
function DurationInput(_ref) {
|
|
5363
|
+
var handleChange = _ref.handleChange,
|
|
5364
|
+
label = _ref.label,
|
|
5365
|
+
value = _ref.value,
|
|
5366
|
+
className = _ref.className,
|
|
5367
|
+
labelWidth = _ref.labelWidth;
|
|
5368
|
+
var hours = Math.floor(value / 60);
|
|
5369
|
+
var minutes = value % 60;
|
|
5370
|
+
|
|
5371
|
+
var handleHourChange = function handleHourChange(event) {
|
|
5372
|
+
var newHours = Math.max(0, Math.min(+event.target.value, 24));
|
|
5373
|
+
handleChange(newHours * 60 + minutes);
|
|
5374
|
+
};
|
|
5375
|
+
|
|
5376
|
+
var handleMinuteChange = function handleMinuteChange(event) {
|
|
5377
|
+
var newMinutes = Math.max(0, Math.min(+event.target.value, 59));
|
|
5378
|
+
handleChange(hours * 60 + newMinutes);
|
|
5379
|
+
};
|
|
5380
|
+
|
|
5381
|
+
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
5382
|
+
className: "flex flex-center ".concat(className ? className : '')
|
|
5383
|
+
}, label && /*#__PURE__*/React__default['default'].createElement(Text, {
|
|
5384
|
+
type: "formTitleSmall",
|
|
5385
|
+
style: {
|
|
5386
|
+
marginRight: '10px',
|
|
5387
|
+
width: labelWidth || 50
|
|
5388
|
+
}
|
|
5389
|
+
}, label), /*#__PURE__*/React__default['default'].createElement("input", {
|
|
5390
|
+
className: "genericInput",
|
|
5391
|
+
type: "number",
|
|
5392
|
+
min: "0",
|
|
5393
|
+
max: "24",
|
|
5394
|
+
value: hours,
|
|
5395
|
+
onChange: handleHourChange,
|
|
5396
|
+
style: {
|
|
5397
|
+
width: 50,
|
|
5398
|
+
marginRight: 5
|
|
5399
|
+
}
|
|
5400
|
+
}), /*#__PURE__*/React__default['default'].createElement(Text, {
|
|
5401
|
+
type: "formTitleSmall",
|
|
5402
|
+
style: {
|
|
5403
|
+
marginRight: 10
|
|
5404
|
+
}
|
|
5405
|
+
}, "Hour(s)"), /*#__PURE__*/React__default['default'].createElement("input", {
|
|
5406
|
+
className: "genericInput",
|
|
5407
|
+
type: "number",
|
|
5408
|
+
min: "0",
|
|
5409
|
+
max: "59",
|
|
5410
|
+
value: minutes,
|
|
5411
|
+
onChange: handleMinuteChange,
|
|
5412
|
+
style: {
|
|
5413
|
+
width: 50,
|
|
5414
|
+
marginRight: 5
|
|
5415
|
+
}
|
|
5416
|
+
}), /*#__PURE__*/React__default['default'].createElement(Text, {
|
|
5417
|
+
type: "formTitleSmall"
|
|
5418
|
+
}, "Minute(s)"));
|
|
5419
|
+
}
|
|
5420
|
+
|
|
5321
5421
|
function ownKeys$f(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
5322
5422
|
|
|
5323
5423
|
function _objectSpread$f(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$f(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$f(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
@@ -10512,6 +10612,23 @@ var OptionsSection = /*#__PURE__*/function (_Component) {
|
|
|
10512
10612
|
|
|
10513
10613
|
return selectedOption.text;
|
|
10514
10614
|
}
|
|
10615
|
+
}, {
|
|
10616
|
+
key: "renderIcon",
|
|
10617
|
+
value: function renderIcon(o, isSelected) {
|
|
10618
|
+
switch (o.iconType) {
|
|
10619
|
+
case 'fa':
|
|
10620
|
+
return /*#__PURE__*/React__default['default'].createElement(reactFontawesome.FontAwesomeIcon, {
|
|
10621
|
+
className: "optionsButton_icon",
|
|
10622
|
+
icon: o.icon
|
|
10623
|
+
});
|
|
10624
|
+
|
|
10625
|
+
default:
|
|
10626
|
+
return /*#__PURE__*/React__default['default'].createElement(SVGIcon, {
|
|
10627
|
+
icon: o.icon,
|
|
10628
|
+
colour: isSelected ? '#fff' : COLOUR_BRANDING_MAIN
|
|
10629
|
+
});
|
|
10630
|
+
}
|
|
10631
|
+
}
|
|
10515
10632
|
}, {
|
|
10516
10633
|
key: "renderOptionButton",
|
|
10517
10634
|
value: function renderOptionButton(o) {
|
|
@@ -10526,10 +10643,7 @@ var OptionsSection = /*#__PURE__*/function (_Component) {
|
|
|
10526
10643
|
}
|
|
10527
10644
|
}, /*#__PURE__*/React__default['default'].createElement("div", {
|
|
10528
10645
|
className: "optionsButton_iconContainer"
|
|
10529
|
-
}, /*#__PURE__*/React__default['default'].createElement(
|
|
10530
|
-
icon: o.icon,
|
|
10531
|
-
colour: isSelected ? '#fff' : COLOUR_BRANDING_MAIN
|
|
10532
|
-
})), /*#__PURE__*/React__default['default'].createElement(Text, {
|
|
10646
|
+
}, this.renderIcon(o, isSelected)), /*#__PURE__*/React__default['default'].createElement(Text, {
|
|
10533
10647
|
type: "formLabelSmall",
|
|
10534
10648
|
className: "optionsButton_text"
|
|
10535
10649
|
}, o.text));
|
|
@@ -11622,6 +11736,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
11622
11736
|
Comment: Comment,
|
|
11623
11737
|
CommentSection: CommentSection,
|
|
11624
11738
|
DatePicker: DatePicker,
|
|
11739
|
+
DurationInput: DurationInput,
|
|
11625
11740
|
FileInput: FileInput,
|
|
11626
11741
|
GenericInput: GenericInput,
|
|
11627
11742
|
Header: exportObj$4,
|
package/dist/index.esm.js
CHANGED
|
@@ -23,13 +23,13 @@ import _typeof from '@babel/runtime/helpers/typeof';
|
|
|
23
23
|
import Dropzone from 'react-dropzone';
|
|
24
24
|
import { withRouter } from 'react-router';
|
|
25
25
|
import { MenuItem, DropdownButton, FormGroup, ControlLabel, FormControl, HelpBlock } from 'react-bootstrap';
|
|
26
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
26
27
|
import { Lottie } from '@crello/react-lottie';
|
|
27
28
|
import { CSVLink } from 'react-csv';
|
|
28
29
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
29
30
|
import { ChromePicker } from 'react-color';
|
|
30
31
|
import tinycolor from 'tinycolor2';
|
|
31
32
|
import { Link } from 'react-router-dom';
|
|
32
|
-
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
33
33
|
import { faChartLine } from '@fortawesome/free-solid-svg-icons';
|
|
34
34
|
|
|
35
35
|
var CoreConfig = {
|
|
@@ -928,6 +928,14 @@ var getSiteLevelFromState = function getSiteLevelFromState(state) {
|
|
|
928
928
|
return siteConfig;
|
|
929
929
|
};
|
|
930
930
|
|
|
931
|
+
var getMerchantsFromState = function getMerchantsFromState(state) {
|
|
932
|
+
if (!state || !state.auth || !state.auth.user) return [];
|
|
933
|
+
var currentSite = state.auth.user.Roles.find(function (r) {
|
|
934
|
+
return r.site === state.auth.site;
|
|
935
|
+
});
|
|
936
|
+
return currentSite && !_.isEmpty(currentSite.siteInfo.Accounts) ? currentSite.siteInfo.Accounts : [];
|
|
937
|
+
};
|
|
938
|
+
|
|
931
939
|
var readJSONFromStorage = function readJSONFromStorage(storage, key, fallback) {
|
|
932
940
|
var value = storage.getItem(key);
|
|
933
941
|
|
|
@@ -1068,6 +1076,18 @@ var getTimepickerTime = function getTimepickerTime(input) {
|
|
|
1068
1076
|
hours: timeSplit[0],
|
|
1069
1077
|
minutes: timeSplit[1].substring(0, 2)
|
|
1070
1078
|
};
|
|
1079
|
+
}; //converts the result of getTimePickerTime into a number representing minutes since midnight
|
|
1080
|
+
|
|
1081
|
+
var timeToMinutes = function timeToMinutes(time) {
|
|
1082
|
+
return parseInt(time.hours, 10) * 60 + parseInt(time.minutes, 10);
|
|
1083
|
+
}; // checks whether there is an overlap between two time frames given time and end times in minutes since midnight
|
|
1084
|
+
|
|
1085
|
+
var hasTimeframeOverlap = function hasTimeframeOverlap(aStart, aEnd, bStart, bEnd) {
|
|
1086
|
+
return aStart < bEnd && bStart < aEnd || bStart < aEnd && aStart < bEnd;
|
|
1087
|
+
}; // converts a time picker input into midnights since midnight
|
|
1088
|
+
|
|
1089
|
+
var timepickerToMinutes = function timepickerToMinutes(input) {
|
|
1090
|
+
return timeToMinutes(getTimepickerTime(input));
|
|
1071
1091
|
};
|
|
1072
1092
|
var getDateFromTimeDatePickers = function getDateFromTimeDatePickers(dateInput, timeInput) {
|
|
1073
1093
|
var dateObject = new Date(dateInput);
|
|
@@ -1076,6 +1096,22 @@ var getDateFromTimeDatePickers = function getDateFromTimeDatePickers(dateInput,
|
|
|
1076
1096
|
dateObject.setMinutes(time.minutes);
|
|
1077
1097
|
return dateObject;
|
|
1078
1098
|
};
|
|
1099
|
+
var minutesToString = function minutesToString(minutes) {
|
|
1100
|
+
var hours = Math.floor(minutes / 60);
|
|
1101
|
+
var remainingMinutes = minutes % 60;
|
|
1102
|
+
var hoursString = hours > 1 ? "".concat(hours, " hours") : "".concat(hours, " hour");
|
|
1103
|
+
var minutesString = remainingMinutes > 1 ? "".concat(remainingMinutes, " minutes") : "".concat(remainingMinutes, " minute");
|
|
1104
|
+
|
|
1105
|
+
if (hours && remainingMinutes) {
|
|
1106
|
+
return "".concat(hoursString, " ").concat(minutesString);
|
|
1107
|
+
} else if (hours) {
|
|
1108
|
+
return hoursString;
|
|
1109
|
+
} else if (remainingMinutes) {
|
|
1110
|
+
return minutesString;
|
|
1111
|
+
} else {
|
|
1112
|
+
return '0 minutes';
|
|
1113
|
+
}
|
|
1114
|
+
};
|
|
1079
1115
|
var getUTCFromTimeDatePickers = function getUTCFromTimeDatePickers(dateInput, timeInput) {
|
|
1080
1116
|
var dateObject = getDateFromTimeDatePickers(dateInput, timeInput);
|
|
1081
1117
|
return moment.utc(dateObject);
|
|
@@ -1729,11 +1765,16 @@ var index$3 = /*#__PURE__*/Object.freeze({
|
|
|
1729
1765
|
getSiteNameFromRoles: getSiteNameFromRoles,
|
|
1730
1766
|
getSiteSettingFromState: getSiteSettingFromState,
|
|
1731
1767
|
getSiteLevelFromState: getSiteLevelFromState,
|
|
1768
|
+
getMerchantsFromState: getMerchantsFromState,
|
|
1732
1769
|
readJSONFromStorage: readJSONFromStorage,
|
|
1733
1770
|
setLocalStorage: setLocalStorage,
|
|
1734
1771
|
readStorageWithCookie: readStorageWithCookie,
|
|
1735
1772
|
getTimepickerTime: getTimepickerTime,
|
|
1773
|
+
timeToMinutes: timeToMinutes,
|
|
1774
|
+
hasTimeframeOverlap: hasTimeframeOverlap,
|
|
1775
|
+
timepickerToMinutes: timepickerToMinutes,
|
|
1736
1776
|
getDateFromTimeDatePickers: getDateFromTimeDatePickers,
|
|
1777
|
+
minutesToString: minutesToString,
|
|
1737
1778
|
getUTCFromTimeDatePickers: getUTCFromTimeDatePickers,
|
|
1738
1779
|
getPluralS: getPluralS,
|
|
1739
1780
|
getPluralOptions: getPluralOptions,
|
|
@@ -5288,6 +5329,65 @@ var DatePicker = /*#__PURE__*/function (_Component) {
|
|
|
5288
5329
|
return DatePicker;
|
|
5289
5330
|
}(Component);
|
|
5290
5331
|
|
|
5332
|
+
function DurationInput(_ref) {
|
|
5333
|
+
var handleChange = _ref.handleChange,
|
|
5334
|
+
label = _ref.label,
|
|
5335
|
+
value = _ref.value,
|
|
5336
|
+
className = _ref.className,
|
|
5337
|
+
labelWidth = _ref.labelWidth;
|
|
5338
|
+
var hours = Math.floor(value / 60);
|
|
5339
|
+
var minutes = value % 60;
|
|
5340
|
+
|
|
5341
|
+
var handleHourChange = function handleHourChange(event) {
|
|
5342
|
+
var newHours = Math.max(0, Math.min(+event.target.value, 24));
|
|
5343
|
+
handleChange(newHours * 60 + minutes);
|
|
5344
|
+
};
|
|
5345
|
+
|
|
5346
|
+
var handleMinuteChange = function handleMinuteChange(event) {
|
|
5347
|
+
var newMinutes = Math.max(0, Math.min(+event.target.value, 59));
|
|
5348
|
+
handleChange(hours * 60 + newMinutes);
|
|
5349
|
+
};
|
|
5350
|
+
|
|
5351
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
5352
|
+
className: "flex flex-center ".concat(className ? className : '')
|
|
5353
|
+
}, label && /*#__PURE__*/React.createElement(Text, {
|
|
5354
|
+
type: "formTitleSmall",
|
|
5355
|
+
style: {
|
|
5356
|
+
marginRight: '10px',
|
|
5357
|
+
width: labelWidth || 50
|
|
5358
|
+
}
|
|
5359
|
+
}, label), /*#__PURE__*/React.createElement("input", {
|
|
5360
|
+
className: "genericInput",
|
|
5361
|
+
type: "number",
|
|
5362
|
+
min: "0",
|
|
5363
|
+
max: "24",
|
|
5364
|
+
value: hours,
|
|
5365
|
+
onChange: handleHourChange,
|
|
5366
|
+
style: {
|
|
5367
|
+
width: 50,
|
|
5368
|
+
marginRight: 5
|
|
5369
|
+
}
|
|
5370
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
5371
|
+
type: "formTitleSmall",
|
|
5372
|
+
style: {
|
|
5373
|
+
marginRight: 10
|
|
5374
|
+
}
|
|
5375
|
+
}, "Hour(s)"), /*#__PURE__*/React.createElement("input", {
|
|
5376
|
+
className: "genericInput",
|
|
5377
|
+
type: "number",
|
|
5378
|
+
min: "0",
|
|
5379
|
+
max: "59",
|
|
5380
|
+
value: minutes,
|
|
5381
|
+
onChange: handleMinuteChange,
|
|
5382
|
+
style: {
|
|
5383
|
+
width: 50,
|
|
5384
|
+
marginRight: 5
|
|
5385
|
+
}
|
|
5386
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
5387
|
+
type: "formTitleSmall"
|
|
5388
|
+
}, "Minute(s)"));
|
|
5389
|
+
}
|
|
5390
|
+
|
|
5291
5391
|
function ownKeys$f(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
5292
5392
|
|
|
5293
5393
|
function _objectSpread$f(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$f(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$f(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
@@ -10482,6 +10582,23 @@ var OptionsSection = /*#__PURE__*/function (_Component) {
|
|
|
10482
10582
|
|
|
10483
10583
|
return selectedOption.text;
|
|
10484
10584
|
}
|
|
10585
|
+
}, {
|
|
10586
|
+
key: "renderIcon",
|
|
10587
|
+
value: function renderIcon(o, isSelected) {
|
|
10588
|
+
switch (o.iconType) {
|
|
10589
|
+
case 'fa':
|
|
10590
|
+
return /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
10591
|
+
className: "optionsButton_icon",
|
|
10592
|
+
icon: o.icon
|
|
10593
|
+
});
|
|
10594
|
+
|
|
10595
|
+
default:
|
|
10596
|
+
return /*#__PURE__*/React.createElement(SVGIcon, {
|
|
10597
|
+
icon: o.icon,
|
|
10598
|
+
colour: isSelected ? '#fff' : COLOUR_BRANDING_MAIN
|
|
10599
|
+
});
|
|
10600
|
+
}
|
|
10601
|
+
}
|
|
10485
10602
|
}, {
|
|
10486
10603
|
key: "renderOptionButton",
|
|
10487
10604
|
value: function renderOptionButton(o) {
|
|
@@ -10496,10 +10613,7 @@ var OptionsSection = /*#__PURE__*/function (_Component) {
|
|
|
10496
10613
|
}
|
|
10497
10614
|
}, /*#__PURE__*/React.createElement("div", {
|
|
10498
10615
|
className: "optionsButton_iconContainer"
|
|
10499
|
-
}, /*#__PURE__*/React.createElement(
|
|
10500
|
-
icon: o.icon,
|
|
10501
|
-
colour: isSelected ? '#fff' : COLOUR_BRANDING_MAIN
|
|
10502
|
-
})), /*#__PURE__*/React.createElement(Text, {
|
|
10616
|
+
}, this.renderIcon(o, isSelected)), /*#__PURE__*/React.createElement(Text, {
|
|
10503
10617
|
type: "formLabelSmall",
|
|
10504
10618
|
className: "optionsButton_text"
|
|
10505
10619
|
}, o.text));
|
|
@@ -11592,6 +11706,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
11592
11706
|
Comment: Comment,
|
|
11593
11707
|
CommentSection: CommentSection,
|
|
11594
11708
|
DatePicker: DatePicker,
|
|
11709
|
+
DurationInput: DurationInput,
|
|
11595
11710
|
FileInput: FileInput,
|
|
11596
11711
|
GenericInput: GenericInput,
|
|
11597
11712
|
Header: exportObj$4,
|
package/dist/index.umd.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@babel/runtime/helpers/asyncToGenerator'), require('@babel/runtime/regenerator'), require('lodash'), require('axios'), require('aws-amplify'), require('@babel/runtime/helpers/defineProperty'), require('moment'), require('react'), require('jquery'), require('js-cookie'), require('@babel/runtime/helpers/classCallCheck'), require('@babel/runtime/helpers/createClass'), require('@babel/runtime/helpers/inherits'), require('@babel/runtime/helpers/possibleConstructorReturn'), require('@babel/runtime/helpers/getPrototypeOf'), require('react-fontawesome'), require('@babel/runtime/helpers/extends'), require('@babel/runtime/helpers/assertThisInitialized'), require('react-redux'), require('react-textarea-autosize'), require('@babel/runtime/helpers/toConsumableArray'), require('@babel/runtime/helpers/typeof'), require('react-dropzone'), require('react-router'), require('react-bootstrap'), require('@crello/react-lottie'), require('react-csv'), require('@babel/runtime/helpers/objectWithoutProperties'), require('react-color'), require('tinycolor2'), require('react-router-dom'), require('@fortawesome/
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', '@babel/runtime/helpers/asyncToGenerator', '@babel/runtime/regenerator', 'lodash', 'axios', 'aws-amplify', '@babel/runtime/helpers/defineProperty', 'moment', 'react', 'jquery', 'js-cookie', '@babel/runtime/helpers/classCallCheck', '@babel/runtime/helpers/createClass', '@babel/runtime/helpers/inherits', '@babel/runtime/helpers/possibleConstructorReturn', '@babel/runtime/helpers/getPrototypeOf', 'react-fontawesome', '@babel/runtime/helpers/extends', '@babel/runtime/helpers/assertThisInitialized', 'react-redux', 'react-textarea-autosize', '@babel/runtime/helpers/toConsumableArray', '@babel/runtime/helpers/typeof', 'react-dropzone', 'react-router', 'react-bootstrap', '@crello/react-lottie', 'react-csv', '@babel/runtime/helpers/objectWithoutProperties', 'react-color', 'tinycolor2', 'react-router-dom', '@fortawesome/
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['@plusscommunities/pluss-core-web'] = {}, global._asyncToGenerator, global._regeneratorRuntime, global._, global.axios, global.awsAmplify, global._defineProperty, global.moment, global.React, global.$, global.Cookies, global._classCallCheck, global._createClass, global._inherits, global._possibleConstructorReturn, global._getPrototypeOf, global.FontAwesome, global._extends, global._assertThisInitialized, global.reactRedux, global.Textarea, global._toConsumableArray, global._typeof, global.Dropzone, global.reactRouter, global.reactBootstrap, global.reactLottie, global.reactCsv, global._objectWithoutProperties, global.reactColor, global.tinycolor, global.reactRouterDom, global.
|
|
5
|
-
}(this, (function (exports, _asyncToGenerator, _regeneratorRuntime, _, axios, awsAmplify, _defineProperty, moment, React, $, Cookies, _classCallCheck, _createClass, _inherits, _possibleConstructorReturn, _getPrototypeOf, FontAwesome, _extends, _assertThisInitialized, reactRedux, Textarea, _toConsumableArray, _typeof, Dropzone, reactRouter, reactBootstrap, reactLottie, reactCsv, _objectWithoutProperties, reactColor, tinycolor, reactRouterDom,
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@babel/runtime/helpers/asyncToGenerator'), require('@babel/runtime/regenerator'), require('lodash'), require('axios'), require('aws-amplify'), require('@babel/runtime/helpers/defineProperty'), require('moment'), require('react'), require('jquery'), require('js-cookie'), require('@babel/runtime/helpers/classCallCheck'), require('@babel/runtime/helpers/createClass'), require('@babel/runtime/helpers/inherits'), require('@babel/runtime/helpers/possibleConstructorReturn'), require('@babel/runtime/helpers/getPrototypeOf'), require('react-fontawesome'), require('@babel/runtime/helpers/extends'), require('@babel/runtime/helpers/assertThisInitialized'), require('react-redux'), require('react-textarea-autosize'), require('@babel/runtime/helpers/toConsumableArray'), require('@babel/runtime/helpers/typeof'), require('react-dropzone'), require('react-router'), require('react-bootstrap'), require('@fortawesome/react-fontawesome'), require('@crello/react-lottie'), require('react-csv'), require('@babel/runtime/helpers/objectWithoutProperties'), require('react-color'), require('tinycolor2'), require('react-router-dom'), require('@fortawesome/free-solid-svg-icons')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', '@babel/runtime/helpers/asyncToGenerator', '@babel/runtime/regenerator', 'lodash', 'axios', 'aws-amplify', '@babel/runtime/helpers/defineProperty', 'moment', 'react', 'jquery', 'js-cookie', '@babel/runtime/helpers/classCallCheck', '@babel/runtime/helpers/createClass', '@babel/runtime/helpers/inherits', '@babel/runtime/helpers/possibleConstructorReturn', '@babel/runtime/helpers/getPrototypeOf', 'react-fontawesome', '@babel/runtime/helpers/extends', '@babel/runtime/helpers/assertThisInitialized', 'react-redux', 'react-textarea-autosize', '@babel/runtime/helpers/toConsumableArray', '@babel/runtime/helpers/typeof', 'react-dropzone', 'react-router', 'react-bootstrap', '@fortawesome/react-fontawesome', '@crello/react-lottie', 'react-csv', '@babel/runtime/helpers/objectWithoutProperties', 'react-color', 'tinycolor2', 'react-router-dom', '@fortawesome/free-solid-svg-icons'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['@plusscommunities/pluss-core-web'] = {}, global._asyncToGenerator, global._regeneratorRuntime, global._, global.axios, global.awsAmplify, global._defineProperty, global.moment, global.React, global.$, global.Cookies, global._classCallCheck, global._createClass, global._inherits, global._possibleConstructorReturn, global._getPrototypeOf, global.FontAwesome, global._extends, global._assertThisInitialized, global.reactRedux, global.Textarea, global._toConsumableArray, global._typeof, global.Dropzone, global.reactRouter, global.reactBootstrap, global.reactFontawesome, global.reactLottie, global.reactCsv, global._objectWithoutProperties, global.reactColor, global.tinycolor, global.reactRouterDom, global.freeSolidSvgIcons));
|
|
5
|
+
}(this, (function (exports, _asyncToGenerator, _regeneratorRuntime, _, axios, awsAmplify, _defineProperty, moment, React, $, Cookies, _classCallCheck, _createClass, _inherits, _possibleConstructorReturn, _getPrototypeOf, FontAwesome, _extends, _assertThisInitialized, reactRedux, Textarea, _toConsumableArray, _typeof, Dropzone, reactRouter, reactBootstrap, reactFontawesome, reactLottie, reactCsv, _objectWithoutProperties, reactColor, tinycolor, reactRouterDom, freeSolidSvgIcons) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
8
|
|
|
@@ -926,6 +926,14 @@
|
|
|
926
926
|
return siteConfig;
|
|
927
927
|
};
|
|
928
928
|
|
|
929
|
+
var getMerchantsFromState = function getMerchantsFromState(state) {
|
|
930
|
+
if (!state || !state.auth || !state.auth.user) return [];
|
|
931
|
+
var currentSite = state.auth.user.Roles.find(function (r) {
|
|
932
|
+
return r.site === state.auth.site;
|
|
933
|
+
});
|
|
934
|
+
return currentSite && !___default['default'].isEmpty(currentSite.siteInfo.Accounts) ? currentSite.siteInfo.Accounts : [];
|
|
935
|
+
};
|
|
936
|
+
|
|
929
937
|
var readJSONFromStorage = function readJSONFromStorage(storage, key, fallback) {
|
|
930
938
|
var value = storage.getItem(key);
|
|
931
939
|
|
|
@@ -1066,6 +1074,18 @@
|
|
|
1066
1074
|
hours: timeSplit[0],
|
|
1067
1075
|
minutes: timeSplit[1].substring(0, 2)
|
|
1068
1076
|
};
|
|
1077
|
+
}; //converts the result of getTimePickerTime into a number representing minutes since midnight
|
|
1078
|
+
|
|
1079
|
+
var timeToMinutes = function timeToMinutes(time) {
|
|
1080
|
+
return parseInt(time.hours, 10) * 60 + parseInt(time.minutes, 10);
|
|
1081
|
+
}; // checks whether there is an overlap between two time frames given time and end times in minutes since midnight
|
|
1082
|
+
|
|
1083
|
+
var hasTimeframeOverlap = function hasTimeframeOverlap(aStart, aEnd, bStart, bEnd) {
|
|
1084
|
+
return aStart < bEnd && bStart < aEnd || bStart < aEnd && aStart < bEnd;
|
|
1085
|
+
}; // converts a time picker input into midnights since midnight
|
|
1086
|
+
|
|
1087
|
+
var timepickerToMinutes = function timepickerToMinutes(input) {
|
|
1088
|
+
return timeToMinutes(getTimepickerTime(input));
|
|
1069
1089
|
};
|
|
1070
1090
|
var getDateFromTimeDatePickers = function getDateFromTimeDatePickers(dateInput, timeInput) {
|
|
1071
1091
|
var dateObject = new Date(dateInput);
|
|
@@ -1074,6 +1094,22 @@
|
|
|
1074
1094
|
dateObject.setMinutes(time.minutes);
|
|
1075
1095
|
return dateObject;
|
|
1076
1096
|
};
|
|
1097
|
+
var minutesToString = function minutesToString(minutes) {
|
|
1098
|
+
var hours = Math.floor(minutes / 60);
|
|
1099
|
+
var remainingMinutes = minutes % 60;
|
|
1100
|
+
var hoursString = hours > 1 ? "".concat(hours, " hours") : "".concat(hours, " hour");
|
|
1101
|
+
var minutesString = remainingMinutes > 1 ? "".concat(remainingMinutes, " minutes") : "".concat(remainingMinutes, " minute");
|
|
1102
|
+
|
|
1103
|
+
if (hours && remainingMinutes) {
|
|
1104
|
+
return "".concat(hoursString, " ").concat(minutesString);
|
|
1105
|
+
} else if (hours) {
|
|
1106
|
+
return hoursString;
|
|
1107
|
+
} else if (remainingMinutes) {
|
|
1108
|
+
return minutesString;
|
|
1109
|
+
} else {
|
|
1110
|
+
return '0 minutes';
|
|
1111
|
+
}
|
|
1112
|
+
};
|
|
1077
1113
|
var getUTCFromTimeDatePickers = function getUTCFromTimeDatePickers(dateInput, timeInput) {
|
|
1078
1114
|
var dateObject = getDateFromTimeDatePickers(dateInput, timeInput);
|
|
1079
1115
|
return moment__default['default'].utc(dateObject);
|
|
@@ -1727,11 +1763,16 @@
|
|
|
1727
1763
|
getSiteNameFromRoles: getSiteNameFromRoles,
|
|
1728
1764
|
getSiteSettingFromState: getSiteSettingFromState,
|
|
1729
1765
|
getSiteLevelFromState: getSiteLevelFromState,
|
|
1766
|
+
getMerchantsFromState: getMerchantsFromState,
|
|
1730
1767
|
readJSONFromStorage: readJSONFromStorage,
|
|
1731
1768
|
setLocalStorage: setLocalStorage,
|
|
1732
1769
|
readStorageWithCookie: readStorageWithCookie,
|
|
1733
1770
|
getTimepickerTime: getTimepickerTime,
|
|
1771
|
+
timeToMinutes: timeToMinutes,
|
|
1772
|
+
hasTimeframeOverlap: hasTimeframeOverlap,
|
|
1773
|
+
timepickerToMinutes: timepickerToMinutes,
|
|
1734
1774
|
getDateFromTimeDatePickers: getDateFromTimeDatePickers,
|
|
1775
|
+
minutesToString: minutesToString,
|
|
1735
1776
|
getUTCFromTimeDatePickers: getUTCFromTimeDatePickers,
|
|
1736
1777
|
getPluralS: getPluralS,
|
|
1737
1778
|
getPluralOptions: getPluralOptions,
|
|
@@ -5286,6 +5327,65 @@
|
|
|
5286
5327
|
return DatePicker;
|
|
5287
5328
|
}(React.Component);
|
|
5288
5329
|
|
|
5330
|
+
function DurationInput(_ref) {
|
|
5331
|
+
var handleChange = _ref.handleChange,
|
|
5332
|
+
label = _ref.label,
|
|
5333
|
+
value = _ref.value,
|
|
5334
|
+
className = _ref.className,
|
|
5335
|
+
labelWidth = _ref.labelWidth;
|
|
5336
|
+
var hours = Math.floor(value / 60);
|
|
5337
|
+
var minutes = value % 60;
|
|
5338
|
+
|
|
5339
|
+
var handleHourChange = function handleHourChange(event) {
|
|
5340
|
+
var newHours = Math.max(0, Math.min(+event.target.value, 24));
|
|
5341
|
+
handleChange(newHours * 60 + minutes);
|
|
5342
|
+
};
|
|
5343
|
+
|
|
5344
|
+
var handleMinuteChange = function handleMinuteChange(event) {
|
|
5345
|
+
var newMinutes = Math.max(0, Math.min(+event.target.value, 59));
|
|
5346
|
+
handleChange(hours * 60 + newMinutes);
|
|
5347
|
+
};
|
|
5348
|
+
|
|
5349
|
+
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
5350
|
+
className: "flex flex-center ".concat(className ? className : '')
|
|
5351
|
+
}, label && /*#__PURE__*/React__default['default'].createElement(Text, {
|
|
5352
|
+
type: "formTitleSmall",
|
|
5353
|
+
style: {
|
|
5354
|
+
marginRight: '10px',
|
|
5355
|
+
width: labelWidth || 50
|
|
5356
|
+
}
|
|
5357
|
+
}, label), /*#__PURE__*/React__default['default'].createElement("input", {
|
|
5358
|
+
className: "genericInput",
|
|
5359
|
+
type: "number",
|
|
5360
|
+
min: "0",
|
|
5361
|
+
max: "24",
|
|
5362
|
+
value: hours,
|
|
5363
|
+
onChange: handleHourChange,
|
|
5364
|
+
style: {
|
|
5365
|
+
width: 50,
|
|
5366
|
+
marginRight: 5
|
|
5367
|
+
}
|
|
5368
|
+
}), /*#__PURE__*/React__default['default'].createElement(Text, {
|
|
5369
|
+
type: "formTitleSmall",
|
|
5370
|
+
style: {
|
|
5371
|
+
marginRight: 10
|
|
5372
|
+
}
|
|
5373
|
+
}, "Hour(s)"), /*#__PURE__*/React__default['default'].createElement("input", {
|
|
5374
|
+
className: "genericInput",
|
|
5375
|
+
type: "number",
|
|
5376
|
+
min: "0",
|
|
5377
|
+
max: "59",
|
|
5378
|
+
value: minutes,
|
|
5379
|
+
onChange: handleMinuteChange,
|
|
5380
|
+
style: {
|
|
5381
|
+
width: 50,
|
|
5382
|
+
marginRight: 5
|
|
5383
|
+
}
|
|
5384
|
+
}), /*#__PURE__*/React__default['default'].createElement(Text, {
|
|
5385
|
+
type: "formTitleSmall"
|
|
5386
|
+
}, "Minute(s)"));
|
|
5387
|
+
}
|
|
5388
|
+
|
|
5289
5389
|
function ownKeys$f(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
5290
5390
|
|
|
5291
5391
|
function _objectSpread$f(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$f(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$f(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
@@ -10480,6 +10580,23 @@
|
|
|
10480
10580
|
|
|
10481
10581
|
return selectedOption.text;
|
|
10482
10582
|
}
|
|
10583
|
+
}, {
|
|
10584
|
+
key: "renderIcon",
|
|
10585
|
+
value: function renderIcon(o, isSelected) {
|
|
10586
|
+
switch (o.iconType) {
|
|
10587
|
+
case 'fa':
|
|
10588
|
+
return /*#__PURE__*/React__default['default'].createElement(reactFontawesome.FontAwesomeIcon, {
|
|
10589
|
+
className: "optionsButton_icon",
|
|
10590
|
+
icon: o.icon
|
|
10591
|
+
});
|
|
10592
|
+
|
|
10593
|
+
default:
|
|
10594
|
+
return /*#__PURE__*/React__default['default'].createElement(SVGIcon, {
|
|
10595
|
+
icon: o.icon,
|
|
10596
|
+
colour: isSelected ? '#fff' : COLOUR_BRANDING_MAIN
|
|
10597
|
+
});
|
|
10598
|
+
}
|
|
10599
|
+
}
|
|
10483
10600
|
}, {
|
|
10484
10601
|
key: "renderOptionButton",
|
|
10485
10602
|
value: function renderOptionButton(o) {
|
|
@@ -10494,10 +10611,7 @@
|
|
|
10494
10611
|
}
|
|
10495
10612
|
}, /*#__PURE__*/React__default['default'].createElement("div", {
|
|
10496
10613
|
className: "optionsButton_iconContainer"
|
|
10497
|
-
}, /*#__PURE__*/React__default['default'].createElement(
|
|
10498
|
-
icon: o.icon,
|
|
10499
|
-
colour: isSelected ? '#fff' : COLOUR_BRANDING_MAIN
|
|
10500
|
-
})), /*#__PURE__*/React__default['default'].createElement(Text, {
|
|
10614
|
+
}, this.renderIcon(o, isSelected)), /*#__PURE__*/React__default['default'].createElement(Text, {
|
|
10501
10615
|
type: "formLabelSmall",
|
|
10502
10616
|
className: "optionsButton_text"
|
|
10503
10617
|
}, o.text));
|
|
@@ -11590,6 +11704,7 @@
|
|
|
11590
11704
|
Comment: Comment,
|
|
11591
11705
|
CommentSection: CommentSection,
|
|
11592
11706
|
DatePicker: DatePicker,
|
|
11707
|
+
DurationInput: DurationInput,
|
|
11593
11708
|
FileInput: FileInput,
|
|
11594
11709
|
GenericInput: GenericInput,
|
|
11595
11710
|
Header: exportObj$4,
|
package/package.json
CHANGED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Text } from './Text';
|
|
3
|
+
|
|
4
|
+
function DurationInput({ handleChange, label, value, className, labelWidth }) {
|
|
5
|
+
const hours = Math.floor(value / 60);
|
|
6
|
+
const minutes = value % 60;
|
|
7
|
+
|
|
8
|
+
const handleHourChange = (event) => {
|
|
9
|
+
const newHours = Math.max(0, Math.min(+event.target.value, 24));
|
|
10
|
+
handleChange(newHours * 60 + minutes);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const handleMinuteChange = (event) => {
|
|
14
|
+
const newMinutes = Math.max(0, Math.min(+event.target.value, 59));
|
|
15
|
+
handleChange(hours * 60 + newMinutes);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<div className={`flex flex-center ${className ? className : ''}`}>
|
|
20
|
+
{label && (
|
|
21
|
+
<Text type="formTitleSmall" style={{ marginRight: '10px', width: labelWidth || 50 }}>
|
|
22
|
+
{label}
|
|
23
|
+
</Text>
|
|
24
|
+
)}
|
|
25
|
+
<input
|
|
26
|
+
className="genericInput"
|
|
27
|
+
type="number"
|
|
28
|
+
min="0"
|
|
29
|
+
max="24"
|
|
30
|
+
value={hours}
|
|
31
|
+
onChange={handleHourChange}
|
|
32
|
+
style={{ width: 50, marginRight: 5 }}
|
|
33
|
+
/>
|
|
34
|
+
<Text type="formTitleSmall" style={{ marginRight: 10 }}>
|
|
35
|
+
Hour(s)
|
|
36
|
+
</Text>
|
|
37
|
+
<input
|
|
38
|
+
className="genericInput"
|
|
39
|
+
type="number"
|
|
40
|
+
min="0"
|
|
41
|
+
max="59"
|
|
42
|
+
value={minutes}
|
|
43
|
+
onChange={handleMinuteChange}
|
|
44
|
+
style={{ width: 50, marginRight: 5 }}
|
|
45
|
+
/>
|
|
46
|
+
<Text type="formTitleSmall">Minute(s)</Text>
|
|
47
|
+
</div>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export { DurationInput };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { Component } from 'react';
|
|
2
2
|
import _ from 'lodash';
|
|
3
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
3
4
|
import { COLOUR_BRANDING_MAIN } from '../colours';
|
|
4
5
|
import { SVGIcon } from './SVGIcon';
|
|
5
6
|
import { Text } from './Text';
|
|
@@ -17,6 +18,15 @@ class OptionsSection extends Component {
|
|
|
17
18
|
return selectedOption.text;
|
|
18
19
|
}
|
|
19
20
|
|
|
21
|
+
renderIcon(o, isSelected) {
|
|
22
|
+
switch (o.iconType) {
|
|
23
|
+
case 'fa':
|
|
24
|
+
return <FontAwesomeIcon className="optionsButton_icon" icon={o.icon} />;
|
|
25
|
+
default:
|
|
26
|
+
return <SVGIcon icon={o.icon} colour={isSelected ? '#fff' : COLOUR_BRANDING_MAIN} />;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
20
30
|
renderOptionButton(o) {
|
|
21
31
|
const isSelected = this.props.selected === o.key;
|
|
22
32
|
return (
|
|
@@ -27,9 +37,7 @@ class OptionsSection extends Component {
|
|
|
27
37
|
this.props.selectOption(o.key);
|
|
28
38
|
}}
|
|
29
39
|
>
|
|
30
|
-
<div className="optionsButton_iconContainer">
|
|
31
|
-
<SVGIcon icon={o.icon} colour={isSelected ? '#fff' : COLOUR_BRANDING_MAIN} />
|
|
32
|
-
</div>
|
|
40
|
+
<div className="optionsButton_iconContainer">{this.renderIcon(o, isSelected)}</div>
|
|
33
41
|
<Text type="formLabelSmall" className="optionsButton_text">
|
|
34
42
|
{o.text}
|
|
35
43
|
</Text>
|
package/src/components/index.js
CHANGED
package/src/helper/helper.js
CHANGED
|
@@ -111,6 +111,21 @@ export const getTimepickerTime = (input) => {
|
|
|
111
111
|
};
|
|
112
112
|
};
|
|
113
113
|
|
|
114
|
+
//converts the result of getTimePickerTime into a number representing minutes since midnight
|
|
115
|
+
export const timeToMinutes = (time) => {
|
|
116
|
+
return parseInt(time.hours, 10) * 60 + parseInt(time.minutes, 10);
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// checks whether there is an overlap between two time frames given time and end times in minutes since midnight
|
|
120
|
+
export const hasTimeframeOverlap = (aStart, aEnd, bStart, bEnd) => {
|
|
121
|
+
return (aStart < bEnd && bStart < aEnd) || (bStart < aEnd && aStart < bEnd);
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
// converts a time picker input into midnights since midnight
|
|
125
|
+
export const timepickerToMinutes = (input) => {
|
|
126
|
+
return timeToMinutes(getTimepickerTime(input));
|
|
127
|
+
};
|
|
128
|
+
|
|
114
129
|
export const getDateFromTimeDatePickers = (dateInput, timeInput) => {
|
|
115
130
|
const dateObject = new Date(dateInput);
|
|
116
131
|
const time = getTimepickerTime(timeInput);
|
|
@@ -119,6 +134,24 @@ export const getDateFromTimeDatePickers = (dateInput, timeInput) => {
|
|
|
119
134
|
return dateObject;
|
|
120
135
|
};
|
|
121
136
|
|
|
137
|
+
export const minutesToString = (minutes) => {
|
|
138
|
+
let hours = Math.floor(minutes / 60);
|
|
139
|
+
let remainingMinutes = minutes % 60;
|
|
140
|
+
|
|
141
|
+
let hoursString = hours > 1 ? `${hours} hours` : `${hours} hour`;
|
|
142
|
+
let minutesString = remainingMinutes > 1 ? `${remainingMinutes} minutes` : `${remainingMinutes} minute`;
|
|
143
|
+
|
|
144
|
+
if (hours && remainingMinutes) {
|
|
145
|
+
return `${hoursString} ${minutesString}`;
|
|
146
|
+
} else if (hours) {
|
|
147
|
+
return hoursString;
|
|
148
|
+
} else if (remainingMinutes) {
|
|
149
|
+
return minutesString;
|
|
150
|
+
} else {
|
|
151
|
+
return '0 minutes';
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
|
|
122
155
|
export const getUTCFromTimeDatePickers = (dateInput, timeInput) => {
|
|
123
156
|
const dateObject = getDateFromTimeDatePickers(dateInput, timeInput);
|
|
124
157
|
return moment.utc(dateObject);
|
package/src/helper/index.js
CHANGED
|
@@ -32,6 +32,7 @@ export { default as getSiteName } from './site/getSiteName';
|
|
|
32
32
|
export { default as getSiteNameFromRoles } from './site/getSiteNameFromRoles';
|
|
33
33
|
export { default as getSiteSettingFromState } from './site/getSiteSettingFromState';
|
|
34
34
|
export { default as getSiteLevelFromState } from './site/getSiteLevelFromState';
|
|
35
|
+
export { default as getMerchantsFromState } from './site/getMerchantsFromState';
|
|
35
36
|
|
|
36
37
|
// storage
|
|
37
38
|
export { default as readJSONFromStorage } from './storage/readJSONFromStorage';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
|
|
3
|
+
const getMerchantsFromState = (state) => {
|
|
4
|
+
if (!state || !state.auth || !state.auth.user) return [];
|
|
5
|
+
const currentSite = state.auth.user.Roles.find((r) => r.site === state.auth.site);
|
|
6
|
+
return currentSite && !_.isEmpty(currentSite.siteInfo.Accounts) ? currentSite.siteInfo.Accounts : [];
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export default getMerchantsFromState;
|