tg-core-components 6.1.9-intl-test.2 → 6.2.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,41 @@
1
+ import React from 'react';
2
+ import Icon from '../Icon';
3
+ import cn from 'classnames';
4
+
5
+ var Message = function Message(_ref) {
6
+ var closeButton = _ref.closeButton,
7
+ count = _ref.count,
8
+ onClick = _ref.onClick,
9
+ onClose = _ref.onClose,
10
+ content = _ref.content,
11
+ className = _ref.className,
12
+ icon = _ref.icon;
13
+
14
+ return React.createElement(
15
+ 'div',
16
+ { className: cn('Message', className), onClick: onClick },
17
+ closeButton && React.createElement(
18
+ 'span',
19
+ { className: 'close', onClick: onClose },
20
+ React.createElement(Icon, { icon: 'times' })
21
+ ),
22
+ icon && React.createElement(
23
+ 'div',
24
+ { className: 'icon' },
25
+ React.createElement(Icon, { icon: '' + icon })
26
+ ),
27
+ React.createElement(
28
+ 'div',
29
+ { className: 'content' },
30
+ content
31
+ ),
32
+ count && React.createElement(
33
+ 'div',
34
+ { className: 'count' },
35
+ count
36
+ ),
37
+ React.createElement(Icon, { icon: 'chevron-right' })
38
+ );
39
+ };
40
+
41
+ export default Message;
package/es/index.js CHANGED
@@ -51,8 +51,9 @@ import ResponsibleGamingAccordionSignUp from './widgets/ResponsibleGamingAccordi
51
51
  import ResponsibleGamingSingleSignUp from './widgets/ResponsibleGamingSingleSignUp';
52
52
  import ResponsibleGamingWidget from './widgets/ResponsibleGamingWidget';
53
53
  import VerifyAccordionWidget from './widgets/VerifyAccordionWidget';
54
+ import BonusOffers from './widgets/BonusOffers';
54
55
 
55
56
  // misc
56
57
  import countryEmojiFlags from './misc/countryEmojiFlags';
57
58
 
58
- export { AcceptUpdatedTaC, Alert, Button, ButtonLoader, Checklist, Icon, Image, Input, InternalMessagesInbox, Loader, Money, Notification, Radio, Select, Single, Textarea, Uploader, AccordionWidget, AccountDetail, ActivateWidget, Balance, Bonus, Deposit, Withdraw, SignUp, ChangeUsername, ChangePassword, ResetPassword, RequestResetPassword, SignIn, Pagination, Settings, TableWidget, Verify, Subscriptions, CasinoHistoryTable, PaymentHistoryTable, SportsbookHistoryTable, DepositWidgetAccordion, WithdrawWidgetAccordion, ResponsibleGamingAccordion, ResponsibleGamingAccordionSignUp, ResponsibleGamingSingleSignUp, ResponsibleGamingWidget, List, VerifyAccordionWidget, Translate, Picture, countryEmojiFlags, Skeleton, AutocompleteInput };
59
+ export { BonusOffers, AcceptUpdatedTaC, Alert, Button, ButtonLoader, Checklist, Icon, Image, Input, InternalMessagesInbox, Loader, Money, Notification, Radio, Select, Single, Textarea, Uploader, AccordionWidget, AccountDetail, ActivateWidget, Balance, Bonus, Deposit, Withdraw, SignUp, ChangeUsername, ChangePassword, ResetPassword, RequestResetPassword, SignIn, Pagination, Settings, TableWidget, Verify, Subscriptions, CasinoHistoryTable, PaymentHistoryTable, SportsbookHistoryTable, DepositWidgetAccordion, WithdrawWidgetAccordion, ResponsibleGamingAccordion, ResponsibleGamingAccordionSignUp, ResponsibleGamingSingleSignUp, ResponsibleGamingWidget, List, VerifyAccordionWidget, Translate, Picture, countryEmojiFlags, Skeleton, AutocompleteInput };
@@ -0,0 +1,47 @@
1
+ export var bonusMapping = {
2
+ InPlay: 'active',
3
+ Active: 'active',
4
+ Initiated: 'available',
5
+ PreClaimed: 'available',
6
+ PreWager: 'available',
7
+ Expired: 'finished',
8
+ Rejected: 'finished',
9
+ Finished: 'finished',
10
+ Canceled: 'finished',
11
+ FinishedNoGains: 'finished',
12
+ AdminCanceled: 'finished'
13
+ };
14
+
15
+ export var categorizeByState = function categorizeByState(bonuses) {
16
+ return {
17
+ available: bonuses.filter(function (b) {
18
+ return bonusMapping[b.State] === 'available';
19
+ }),
20
+ active: bonuses.filter(function (b) {
21
+ return bonusMapping[b.State] === 'active';
22
+ }),
23
+ finished: bonuses.filter(function (b) {
24
+ return bonusMapping[b.State] === 'finished';
25
+ })
26
+ };
27
+ };
28
+
29
+ export var getStatus = function getStatus(bonus) {
30
+ return bonusMapping[bonus.State];
31
+ };
32
+
33
+ export var getWageringProgress = function getWageringProgress(bonus) {
34
+ var wageringRequirement = bonusMapping[bonus.State] === 'available' ? bonus.PreWageringRequirment : bonus.WageringRequirment;
35
+
36
+ var wageringRequirementRemaining = bonusMapping[bonus.State] === 'available' ? bonus.PreWageringRequirmentRemaining : bonus.WageringRequirmentRemaining;
37
+
38
+ return Boolean(wageringRequirement) ? (100 - wageringRequirementRemaining / wageringRequirement * 100).toFixed(2) : null;
39
+ };
40
+
41
+ export var getNumberOfAvailableBonuses = function getNumberOfAvailableBonuses(bonuses) {
42
+ if (!Array.isArray(bonuses) || bonuses.length < 1) return 0;
43
+
44
+ return bonuses.filter(function (b) {
45
+ return bonusMapping[b.State] === 'available';
46
+ }).length;
47
+ };
@@ -8,51 +8,55 @@ var MILISECONDS = {
8
8
  IN_A_YEAR: 31536000000
9
9
  };
10
10
 
11
- export var selectUnit = function selectUnit(from) {
11
+ export var selectUnit = function selectUnit(value) {
12
+ var isFuture = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
13
+
12
14
  var now = Date.now();
13
- var ms = now - from;
15
+ var ms = isFuture ? value - now : now - value;
16
+
17
+ var operatorCalc = isFuture ? 1 : -1;
14
18
 
15
19
  switch (true) {
16
20
  case MILISECONDS.IN_A_SECOND < ms && ms < MILISECONDS.IN_A_MINUTE:
17
21
  return {
18
- value: -1 * Math.floor(ms / MILISECONDS.IN_A_SECOND),
22
+ value: operatorCalc * Math.floor(ms / MILISECONDS.IN_A_SECOND),
19
23
  unit: 'second',
20
24
  updateIntervalInSeconds: 1
21
25
  };
22
26
 
23
27
  case MILISECONDS.IN_A_MINUTE < ms && ms < MILISECONDS.IN_AN_HOUR:
24
28
  return {
25
- value: -1 * Math.floor(ms / MILISECONDS.IN_A_MINUTE),
29
+ value: operatorCalc * Math.floor(ms / MILISECONDS.IN_A_MINUTE),
26
30
  unit: 'minute'
27
31
  };
28
32
 
29
33
  case MILISECONDS.IN_AN_HOUR < ms && ms < MILISECONDS.IN_A_DAY:
30
34
  return {
31
- value: -1 * Math.floor(ms / MILISECONDS.IN_AN_HOUR),
35
+ value: operatorCalc * Math.floor(ms / MILISECONDS.IN_AN_HOUR),
32
36
  unit: 'hour'
33
37
  };
34
38
 
35
39
  case MILISECONDS.IN_A_DAY < ms && ms < MILISECONDS.IN_A_WEEK:
36
40
  return {
37
- value: -1 * Math.floor(ms / MILISECONDS.IN_A_DAY),
41
+ value: operatorCalc * Math.floor(ms / MILISECONDS.IN_A_DAY),
38
42
  unit: 'day'
39
43
  };
40
44
 
41
45
  case MILISECONDS.IN_A_WEEK < ms && ms < MILISECONDS.IN_A_MONTH:
42
46
  return {
43
- value: -1 * Math.floor(ms / MILISECONDS.IN_A_WEEK),
47
+ value: operatorCalc * Math.floor(ms / MILISECONDS.IN_A_WEEK),
44
48
  unit: 'week'
45
49
  };
46
50
 
47
51
  case MILISECONDS.IN_A_MONTH < ms && ms < MILISECONDS.IN_A_YEAR:
48
52
  return {
49
- value: -1 * Math.floor(ms / MILISECONDS.IN_A_MONTH),
53
+ value: operatorCalc * Math.floor(ms / MILISECONDS.IN_A_MONTH),
50
54
  unit: 'month'
51
55
  };
52
56
 
53
57
  case MILISECONDS.IN_A_YEAR < ms:
54
58
  return {
55
- value: -1 * Math.floor(ms / MILISECONDS.IN_A_YEAR),
59
+ value: operatorCalc * Math.floor(ms / MILISECONDS.IN_A_YEAR),
56
60
  unit: 'year'
57
61
  };
58
62
 
@@ -9,7 +9,7 @@ var translate = function translate(_ref, intl) {
9
9
  values = _ref.values,
10
10
  rest = _objectWithoutProperties(_ref, ['id', 'values']);
11
11
 
12
- var cacheId = intl.locale + id + (JSON.stringify(values) || '');
12
+ var cacheId = id + (JSON.stringify(values) || '');
13
13
  if (cache[cacheId]) return cache[cacheId];
14
14
 
15
15
  var g = typeof window !== 'undefined' && window || typeof global !== 'undefined' && global || {};
@@ -12,10 +12,13 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
12
12
 
13
13
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
14
14
 
15
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
16
+
15
17
  import React, { Component, useState } from 'react';
16
18
  import PropTypes from 'prop-types';
17
19
  import AnimateHeight from 'react-animate-height';
18
20
  import Icon from '../../components/Icon';
21
+ import cn from 'classnames';
19
22
 
20
23
  var AccordionHeader = function AccordionHeader(_ref) {
21
24
  var expanded = _ref.expanded,
@@ -83,10 +86,14 @@ var AccordionContent = function AccordionContent(_ref2) {
83
86
  var AccordionItem = function AccordionItem(_ref3) {
84
87
  var header = _ref3.header,
85
88
  content = _ref3.content,
86
- expanded = _ref3.expanded;
89
+ expanded = _ref3.expanded,
90
+ customClass = _ref3.customClass;
87
91
  return React.createElement(
88
92
  'div',
89
- { className: 'AccordionItem' + (expanded ? ' AccordionItem--expanded' : '') },
93
+ {
94
+ className: cn('AccordionItem', _defineProperty({
95
+ 'AccordionItem--expanded': expanded
96
+ }, 'AccordionItem--' + customClass, customClass)) },
90
97
  header,
91
98
  content
92
99
  );
@@ -175,7 +182,8 @@ var Accordion = function (_Component) {
175
182
  animationDuration: animationDuration,
176
183
  contentCollapsedHeight: contentCollapsedHeight
177
184
  }),
178
- key: index
185
+ key: index,
186
+ customClass: item.customClass
179
187
  };
180
188
  });
181
189
 
@@ -0,0 +1,167 @@
1
+ var _this = this;
2
+
3
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
4
+
5
+ var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
6
+
7
+ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
8
+
9
+ function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
10
+
11
+ import React, { useState } from 'react';
12
+ import Button from '../../components/Button';
13
+ import { FormattedMessage } from 'react-intl';
14
+ import cn from 'classnames';
15
+
16
+ var Actions = function Actions(_ref) {
17
+ var bonus = _ref.bonus,
18
+ onClaim = _ref.onClaim,
19
+ onCancel = _ref.onCancel,
20
+ onReject = _ref.onReject,
21
+ onTriggerByPromoCode = _ref.onTriggerByPromoCode,
22
+ status = _ref.status,
23
+ promotionCode = _ref.promotionCode,
24
+ onOther = _ref.onOther,
25
+ onSuccess = _ref.onSuccess;
26
+
27
+ var _useState = useState([{
28
+ conditions: status === 'active' || bonus.State === 'PreWager',
29
+ onClick: onOther,
30
+ isLoading: false,
31
+ disabled: false,
32
+ type: 'primary',
33
+ translation: 'action.other-bonus',
34
+ name: 'other',
35
+ args: [bonus, promotionCode]
36
+ }, {
37
+ conditions: bonus.State === 'Initiated',
38
+ onClick: onClaim,
39
+ isLoading: false,
40
+ disabled: false,
41
+ type: 'primary',
42
+ translation: 'action.claim',
43
+ name: 'claim',
44
+ args: [bonus]
45
+ }, {
46
+ conditions: status === 'available' && bonus.State !== 'Initiated' && bonus.State !== 'PreWager' && promotionCode,
47
+ onClick: onTriggerByPromoCode,
48
+ isLoading: false,
49
+ isDisabled: false,
50
+ type: 'primary',
51
+ translation: 'action.claim',
52
+ name: 'trigger',
53
+ args: [promotionCode]
54
+ }, {
55
+ conditions: bonus.State === 'Initiated',
56
+ onClick: onReject,
57
+ isLoading: false,
58
+ disabled: false,
59
+ type: 'tertiary',
60
+ translation: 'action.reject',
61
+ name: 'reject',
62
+ args: [bonus]
63
+ }, {
64
+ conditions: status === 'active',
65
+ onClick: onCancel,
66
+ isLoading: false,
67
+ disabled: false,
68
+ type: 'tertiary',
69
+ translation: 'action.cancel',
70
+ name: 'cancel',
71
+ args: [bonus.Id]
72
+ }]),
73
+ _useState2 = _slicedToArray(_useState, 2),
74
+ buttons = _useState2[0],
75
+ setButtons = _useState2[1];
76
+
77
+ var actionWrapper = function () {
78
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(action, name) {
79
+ for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
80
+ args[_key - 2] = arguments[_key];
81
+ }
82
+
83
+ var res;
84
+ return regeneratorRuntime.wrap(function _callee$(_context) {
85
+ while (1) {
86
+ switch (_context.prev = _context.next) {
87
+ case 0:
88
+ setButtons([].concat(_toConsumableArray(buttons.map(function (b) {
89
+ if (b.name === name) {
90
+ return _extends({}, b, {
91
+ isLoading: true,
92
+ disabled: true
93
+ });
94
+ }
95
+
96
+ return b;
97
+ }))));
98
+
99
+ _context.next = 3;
100
+ return action.apply(undefined, _toConsumableArray(args));
101
+
102
+ case 3:
103
+ res = _context.sent;
104
+
105
+
106
+ if (res && res.payload && res.payload.isNetworkException || res && res.payload && res.payload === 0) {
107
+ setButtons([].concat(_toConsumableArray(buttons.map(function (b) {
108
+ if (b.name === name) {
109
+ return _extends({}, b, {
110
+ isLoading: false,
111
+ disabled: false
112
+ });
113
+ }
114
+
115
+ return b;
116
+ }))));
117
+ } else {
118
+ onSuccess();
119
+
120
+ setButtons([].concat(_toConsumableArray(buttons.map(function (b) {
121
+ if (b.name === name) {
122
+ return _extends({}, b, {
123
+ isLoading: false,
124
+ disabled: true
125
+ });
126
+ }
127
+
128
+ return b;
129
+ }))));
130
+ }
131
+
132
+ case 5:
133
+ case 'end':
134
+ return _context.stop();
135
+ }
136
+ }
137
+ }, _callee, _this);
138
+ }));
139
+
140
+ return function actionWrapper(_x, _x2) {
141
+ return _ref2.apply(this, arguments);
142
+ };
143
+ }();
144
+
145
+ return React.createElement(
146
+ 'div',
147
+ { className: 'Actions' },
148
+ buttons && buttons.filter(function (b) {
149
+ return b.conditions;
150
+ }).map(function (b) {
151
+ return React.createElement(
152
+ Button,
153
+ {
154
+ key: b.name,
155
+ isLoading: b.isLoading,
156
+ disabled: b.disabled,
157
+ className: cn('button small', b.type),
158
+ onClick: function onClick() {
159
+ return actionWrapper.apply(undefined, [b.onClick, b.name].concat(_toConsumableArray(b.args)));
160
+ } },
161
+ React.createElement(FormattedMessage, { id: b.translation })
162
+ );
163
+ })
164
+ );
165
+ };
166
+
167
+ export default Actions;
@@ -0,0 +1,62 @@
1
+ var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
2
+
3
+ import React, { useState } from 'react';
4
+ import { FormattedMessage, injectIntl } from 'react-intl';
5
+ import cn from 'classnames';
6
+ import Input from '../../components/Input';
7
+ import Button from '../../components/Button';
8
+ import Icon from '../../components/Icon';
9
+
10
+ var BonusCode = function BonusCode(_ref) {
11
+ var _onSubmit = _ref.onSubmit,
12
+ intl = _ref.intl;
13
+
14
+ var _useState = useState(''),
15
+ _useState2 = _slicedToArray(_useState, 2),
16
+ bonusCode = _useState2[0],
17
+ setBonusCode = _useState2[1];
18
+
19
+ var _useState3 = useState(false),
20
+ _useState4 = _slicedToArray(_useState3, 2),
21
+ showInput = _useState4[0],
22
+ setShowInput = _useState4[1];
23
+
24
+ return React.createElement(
25
+ 'div',
26
+ { className: cn('BonusCode', { 'BonusCode--active': showInput }) },
27
+ React.createElement(
28
+ 'span',
29
+ { onClick: function onClick() {
30
+ return setShowInput(!showInput);
31
+ } },
32
+ React.createElement(FormattedMessage, {
33
+ id: 'message.have_bonus_code',
34
+ defaultMessage: 'Do you have a bonus code?'
35
+ })
36
+ ),
37
+ showInput && React.createElement(
38
+ 'form',
39
+ {
40
+ onSubmit: function onSubmit(e) {
41
+ e.preventDefault();
42
+ _onSubmit(bonusCode);
43
+ } },
44
+ React.createElement(Input, {
45
+ onChange: function onChange(e) {
46
+ return setBonusCode(e.target.value);
47
+ },
48
+ placeholder: intl.formatMessage({ id: 'cashier.bonus_code' })
49
+ }),
50
+ React.createElement(
51
+ Button,
52
+ {
53
+ className: 'button secondary',
54
+ type: 'submit',
55
+ disabled: bonusCode.trim() === '' },
56
+ React.createElement(Icon, { icon: 'chevron-right' })
57
+ )
58
+ )
59
+ );
60
+ };
61
+
62
+ export default injectIntl(BonusCode);
@@ -0,0 +1,127 @@
1
+ import React from 'react';
2
+ import marked from 'marked';
3
+ import Icon from '../../components/Icon';
4
+ import Notice from '../CashierAccordion/Payment/Notice';
5
+ import getByPath from 'lodash/get';
6
+ import Actions from './Actions';
7
+ import { selectUnit } from '../../lib/utils/selectUnit';
8
+ import { FormattedRelativeTime, FormattedNumber } from 'react-intl';
9
+ import Translate from '../../components/Translate';
10
+
11
+ var Details = function Details(_ref) {
12
+ var bonus = _ref.bonus,
13
+ content = _ref.content,
14
+ defaultImage = _ref.defaultImage,
15
+ status = _ref.status,
16
+ wageringProgress = _ref.wageringProgress,
17
+ onBack = _ref.onBack,
18
+ onClaim = _ref.onClaim,
19
+ onReject = _ref.onReject,
20
+ onTriggerByPromoCode = _ref.onTriggerByPromoCode,
21
+ selectBonus = _ref.selectBonus,
22
+ alert = _ref.alert;
23
+
24
+ return React.createElement(
25
+ 'div',
26
+ { className: 'Details' },
27
+ React.createElement(
28
+ 'div',
29
+ {
30
+ className: 'Details__banner',
31
+ style: {
32
+ backgroundImage: 'url(' + getByPath(content, 'image.file.url', defaultImage) + ')'
33
+ } },
34
+ React.createElement(
35
+ 'div',
36
+ { className: 'Details__banner__back', onClick: onBack },
37
+ React.createElement(Icon, { icon: 'chevron-left' }),
38
+ React.createElement(Translate, { id: 'action.back', defaultMessage: 'Back' })
39
+ )
40
+ ),
41
+ React.createElement(
42
+ 'div',
43
+ { className: 'Details__content' },
44
+ alert && React.createElement(Notice, {
45
+ level: alert.level,
46
+ icon: alert.level === 'success' ? React.createElement(Icon, { icon: 'check' }) : React.createElement(Icon, { icon: 'stop-circle' }),
47
+ header: React.createElement(Translate, { id: 'label.bonus-offers.' + alert.type })
48
+ }),
49
+ React.createElement(
50
+ 'div',
51
+ { className: 'Details__content__name' },
52
+ getByPath(content, 'name') || bonus.Name
53
+ ),
54
+ React.createElement(
55
+ 'div',
56
+ { className: 'Details__content__summary' },
57
+ getByPath(content, 'summary') || bonus.Description
58
+ ),
59
+ React.createElement(Actions, {
60
+ bonus: bonus,
61
+ onClaim: onClaim,
62
+ onReject: onReject,
63
+ onTriggerByPromoCode: onTriggerByPromoCode,
64
+ status: status,
65
+ promotionCode: getByPath(content, 'promotionCode'),
66
+ onSuccess: function onSuccess() {
67
+ return selectBonus(null);
68
+ }
69
+ }),
70
+ React.createElement(
71
+ 'div',
72
+ { className: 'Details__content__statistics' },
73
+ React.createElement(
74
+ 'ul',
75
+ null,
76
+ wageringProgress && React.createElement(
77
+ 'li',
78
+ null,
79
+ status === 'available' ? React.createElement(Translate, {
80
+ id: 'label.bonus-offers.prewager',
81
+ defaultMessage: 'Progress'
82
+ }) : React.createElement(Translate, {
83
+ id: 'label.bonus-offers.wager',
84
+ defaultMessage: 'Progress'
85
+ }),
86
+ React.createElement(
87
+ 'span',
88
+ null,
89
+ wageringProgress,
90
+ '%'
91
+ )
92
+ ),
93
+ React.createElement(
94
+ 'li',
95
+ null,
96
+ React.createElement(Translate, { id: 'label.expires.bonus', defaultMessage: 'Expires' }),
97
+ React.createElement(FormattedRelativeTime, selectUnit(new Date(bonus.Expires + '+00:00'), true))
98
+ ),
99
+ bonus.Amount > 0 && React.createElement(
100
+ 'li',
101
+ null,
102
+ React.createElement(Translate, { id: 'label.amount', defaultMessage: 'Amount' }),
103
+ React.createElement(FormattedNumber, {
104
+ value: bonus.Amount,
105
+ style: bonus.Type === 'Freespins' ? 'decimal' : 'currency',
106
+ currency: bonus.Currency
107
+ })
108
+ )
109
+ )
110
+ ),
111
+ React.createElement('div', {
112
+ className: 'Details__content__description',
113
+ dangerouslySetInnerHTML: {
114
+ __html: marked(getByPath(content, 'content') || '')
115
+ }
116
+ }),
117
+ React.createElement('div', {
118
+ className: 'Details__content__tac',
119
+ dangerouslySetInnerHTML: {
120
+ __html: marked(getByPath(content, 'termsAndConditions') || '')
121
+ }
122
+ })
123
+ )
124
+ );
125
+ };
126
+
127
+ export default Details;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import BonusWidget from '../BonusWidget';
3
+
4
+ var Finished = function Finished(_ref) {
5
+ var bonuses = _ref.bonuses;
6
+
7
+ return React.createElement(
8
+ 'div',
9
+ { className: 'Finished' },
10
+ React.createElement(BonusWidget, {
11
+ bonuses: bonuses,
12
+ exclude: ['available', 'active'],
13
+ disableBonusCodeForm: true
14
+ })
15
+ );
16
+ };
17
+
18
+ export default Finished;
@@ -0,0 +1,83 @@
1
+ import React from 'react';
2
+ import marked from 'marked';
3
+ import getByPath from 'lodash/get';
4
+ import { FormattedMessage } from 'react-intl';
5
+ import AccordionWidget from '../AccordionWidget';
6
+ import { getStatus } from '../../lib/utils/bonus';
7
+
8
+ var Item = function Item(_ref) {
9
+ var bonus = _ref.bonus,
10
+ content = _ref.content,
11
+ status = _ref.status,
12
+ defaultImage = _ref.defaultImage;
13
+ return React.createElement(
14
+ 'div',
15
+ { className: 'List__Item' },
16
+ React.createElement(
17
+ 'div',
18
+ {
19
+ className: 'List__Item__image',
20
+ style: {
21
+ backgroundImage: 'url(' + getByPath(content, 'image.file.url', defaultImage) + ')'
22
+ } },
23
+ status === 'active' && React.createElement(
24
+ 'span',
25
+ { className: 'List__Item__image__badge' },
26
+ React.createElement(FormattedMessage, { id: 'label.' + bonus.State.toLowerCase() })
27
+ )
28
+ ),
29
+ React.createElement(
30
+ 'div',
31
+ { className: 'List__Item__content' },
32
+ React.createElement(
33
+ 'div',
34
+ { className: 'List__Item__content__name' },
35
+ getByPath(content, 'name') || bonus.Name
36
+ ),
37
+ React.createElement(
38
+ 'div',
39
+ { className: 'List__Item__content__summary' },
40
+ getByPath(content, 'summary') || bonus.Description
41
+ ),
42
+ React.createElement('div', {
43
+ className: 'List__Item__content__disclaimer',
44
+ dangerouslySetInnerHTML: {
45
+ __html: marked(getByPath(content, 'disclaimer') || '')
46
+ }
47
+ })
48
+ )
49
+ );
50
+ };
51
+
52
+ var List = function List(_ref2) {
53
+ var bonuses = _ref2.bonuses,
54
+ content = _ref2.content,
55
+ defaultImage = _ref2.defaultImage,
56
+ selectBonus = _ref2.selectBonus;
57
+
58
+ return React.createElement(
59
+ 'div',
60
+ { className: 'List' },
61
+ React.createElement(AccordionWidget, {
62
+ onClickHeader: function onClickHeader(e, key, item) {
63
+ return selectBonus(item.item);
64
+ },
65
+ items: bonuses.map(function (b, i) {
66
+ return {
67
+ customClass: getStatus(b),
68
+ item: b,
69
+ header: React.createElement(Item, {
70
+ bonus: b,
71
+ status: getStatus(b),
72
+ content: content.find(function (c) {
73
+ return c.identifier === b.Identifier;
74
+ }),
75
+ defaultImage: defaultImage
76
+ })
77
+ };
78
+ })
79
+ })
80
+ );
81
+ };
82
+
83
+ export default List;