ordering-ui-admin-external 1.32.3 → 1.33.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.
Files changed (84) hide show
  1. package/_bundles/{ordering-ui-admin.4f45fe63ec89421145a4.js → ordering-ui-admin.065edfc31683c659ccea.js} +2 -2
  2. package/_modules/components/BusinessIntelligence/AnalyticsOrdersAcceptSpend/index.js +1 -6
  3. package/_modules/components/BusinessIntelligence/AnalyticsSpendList/index.js +1 -6
  4. package/_modules/components/Delivery/DriversGroupLogs/index.js +14 -1
  5. package/_modules/components/Delivery/DriversGroupLogs/styles.js +3 -3
  6. package/_modules/components/Delivery/UserDetails/index.js +5 -2
  7. package/_modules/components/Delivery/UserDetailsMenu/index.js +3 -0
  8. package/_modules/components/OrderingProducts/SiteTheme/ThemeOption.js +22 -4
  9. package/_modules/components/Orders/AllInOne/DriversManager/styles.js +1 -1
  10. package/_modules/components/Orders/AllInOne/index.js +0 -1
  11. package/_modules/components/Orders/CreateCustomOrder/index.js +4 -2
  12. package/_modules/components/Orders/DriverMapMarkerAndInfo/index.js +1 -3
  13. package/_modules/components/Orders/DriversList/index.js +10 -4
  14. package/_modules/components/Orders/DriversList/styles.js +18 -12
  15. package/_modules/components/Orders/OrderBill/RefundToWallet.js +31 -12
  16. package/_modules/components/Orders/OrderBill/index.js +7 -3
  17. package/_modules/components/Orders/OrderContactInformation/index.js +113 -19
  18. package/_modules/components/Orders/OrderContactInformation/styles.js +34 -12
  19. package/_modules/components/Orders/OrderDetails/index.js +48 -5
  20. package/_modules/components/Orders/OrderDetails/styles.js +19 -4
  21. package/_modules/components/Orders/OrdersContentHeader/index.js +8 -42
  22. package/_modules/components/Orders/OrdersContentHeader/styles.js +3 -19
  23. package/_modules/components/Orders/OrdersDashboardControls/index.js +4 -2
  24. package/_modules/components/Orders/OrdersFilterGroup/index.js +45 -7
  25. package/_modules/components/Orders/OrdersFilterGroup/styles.js +19 -3
  26. package/_modules/components/Orders/OrdersManager/index.js +2 -2
  27. package/_modules/components/Profile/ProfilePage/index.js +6 -1
  28. package/_modules/components/Profile/ProfilePage/styles.js +11 -8
  29. package/_modules/components/Settings/GuestCheckoutFieldsSetting/index.js +135 -0
  30. package/_modules/components/Settings/GuestCheckoutFieldsSetting/styles.js +51 -0
  31. package/_modules/components/Settings/Settings/index.js +13 -2
  32. package/_modules/components/Settings/index.js +8 -1
  33. package/_modules/components/Shared/PushTokens/index.js +77 -0
  34. package/_modules/components/Shared/PushTokens/styles.js +25 -0
  35. package/_modules/components/Shared/index.js +7 -0
  36. package/_modules/components/Stores/BusinessDeviceDetail/index.js +2 -1
  37. package/_modules/components/Stores/ProductIngredient/index.js +2 -2
  38. package/_modules/components/Users/UserDetails/index.js +5 -2
  39. package/_modules/components/Users/UserDetailsMenu/index.js +3 -0
  40. package/index-template.js +4 -2
  41. package/index.html +2 -2
  42. package/package.json +2 -2
  43. package/src/components/BusinessIntelligence/AnalyticsOrdersAcceptSpend/index.js +2 -3
  44. package/src/components/BusinessIntelligence/AnalyticsSpendList/index.js +2 -3
  45. package/src/components/Delivery/DriversGroupLogs/index.js +9 -5
  46. package/src/components/Delivery/DriversGroupLogs/styles.js +3 -1
  47. package/src/components/Delivery/UserDetails/index.js +7 -1
  48. package/src/components/Delivery/UserDetailsMenu/index.js +2 -1
  49. package/src/components/OrderingProducts/SiteTheme/ThemeOption.js +23 -3
  50. package/src/components/Orders/AllInOne/DriversManager/styles.js +7 -1
  51. package/src/components/Orders/AllInOne/index.js +0 -1
  52. package/src/components/Orders/CreateCustomOrder/index.js +3 -1
  53. package/src/components/Orders/DriverMapMarkerAndInfo/index.js +1 -1
  54. package/src/components/Orders/DriversList/index.js +18 -14
  55. package/src/components/Orders/DriversList/styles.js +15 -6
  56. package/src/components/Orders/OrderBill/RefundToWallet.js +25 -10
  57. package/src/components/Orders/OrderBill/index.js +2 -1
  58. package/src/components/Orders/OrderContactInformation/index.js +155 -68
  59. package/src/components/Orders/OrderContactInformation/styles.js +67 -0
  60. package/src/components/Orders/OrderDetails/index.js +55 -10
  61. package/src/components/Orders/OrderDetails/styles.js +33 -1
  62. package/src/components/Orders/OrdersContentHeader/index.js +16 -52
  63. package/src/components/Orders/OrdersContentHeader/styles.js +0 -53
  64. package/src/components/Orders/OrdersDashboardControls/index.js +3 -2
  65. package/src/components/Orders/OrdersFilterGroup/index.js +225 -182
  66. package/src/components/Orders/OrdersFilterGroup/styles.js +53 -0
  67. package/src/components/Orders/OrdersManager/index.js +1 -1
  68. package/src/components/Profile/ProfilePage/index.js +4 -1
  69. package/src/components/Profile/ProfilePage/styles.js +9 -0
  70. package/src/components/Settings/GuestCheckoutFieldsSetting/index.js +116 -0
  71. package/src/components/Settings/GuestCheckoutFieldsSetting/styles.js +164 -0
  72. package/src/components/Settings/Settings/index.js +16 -1
  73. package/src/components/Settings/index.js +3 -1
  74. package/src/components/Shared/PushTokens/index.js +87 -0
  75. package/src/components/Shared/PushTokens/styles.js +64 -0
  76. package/src/components/Shared/index.js +2 -0
  77. package/src/components/Stores/BusinessDeviceDetail/index.js +1 -0
  78. package/src/components/Stores/ProductIngredient/index.js +2 -2
  79. package/src/components/Users/UserDetails/index.js +7 -1
  80. package/src/components/Users/UserDetailsMenu/index.js +2 -1
  81. package/template/assets/images/google-calendar-icon.png +0 -0
  82. package/template/pages/CustomersList/index.js +1 -1
  83. package/template/pages/ManagersList/index.js +1 -1
  84. /package/_bundles/{ordering-ui-admin.4f45fe63ec89421145a4.js.LICENSE.txt → ordering-ui-admin.065edfc31683c659ccea.js.LICENSE.txt} +0 -0
@@ -20,8 +20,9 @@ var _AddressFieldsSetting = require("../AddressFieldsSetting");
20
20
  var _LanguageSetting = require("../LanguageSetting");
21
21
  var _SitesAuthSettings = require("../SitesAuthSettings");
22
22
  var _MultiCountrySettings = require("../MultiCountrySettings");
23
- var _styles2 = require("./styles");
24
23
  var _CardFieldsSetting = require("../CardFieldsSetting");
24
+ var _GuestCheckoutFieldsSetting = require("../GuestCheckoutFieldsSetting");
25
+ var _styles2 = require("./styles");
25
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
26
27
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
28
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -211,6 +212,16 @@ var SettingsUI = function SettingsUI(props) {
211
212
  description: t('CHECKOUT_FIELDS_DESC'),
212
213
  icon: /*#__PURE__*/_react.default.createElement(_reactBootstrapIcons.CheckCircleFill, null),
213
214
  active: isOpenSettingDetails === 'checkout'
215
+ })), /*#__PURE__*/_react.default.createElement(_styles2.SettingItemWrapper, {
216
+ className: "col-md-4 col-sm-6",
217
+ onClick: function onClick() {
218
+ return handleOpenSettingDetails('guest_checkout');
219
+ }
220
+ }, /*#__PURE__*/_react.default.createElement(_SettingItemUI.SettingItemUI, {
221
+ title: t('GUEST_CHECKOUT_FIELDS', 'Guest checkout fields'),
222
+ description: t('GUEST_CHECKOUT_FIELDS_DESC', 'Which fields do you want to show on the guest checkout page?'),
223
+ icon: /*#__PURE__*/_react.default.createElement(_reactBootstrapIcons.CheckCircleFill, null),
224
+ active: isOpenSettingDetails === 'guest_checkout'
214
225
  })), /*#__PURE__*/_react.default.createElement(_styles2.SettingItemWrapper, {
215
226
  className: "col-md-4 col-sm-6",
216
227
  onClick: function onClick() {
@@ -308,7 +319,7 @@ var SettingsUI = function SettingsUI(props) {
308
319
  return handleBackRedirect();
309
320
  },
310
321
  showExpandIcon: true
311
- }, isOpenSettingDetails === 'checkout' && /*#__PURE__*/_react.default.createElement(_CheckoutFieldsSetting.CheckoutFieldsSetting, null), isOpenSettingDetails === 'address' && /*#__PURE__*/_react.default.createElement(_AddressFieldsSetting.AddressFieldsSetting, null), isOpenSettingDetails === 'card' && /*#__PURE__*/_react.default.createElement(_CardFieldsSetting.CardFieldsSetting, null), isOpenSettingDetails === 'language' && /*#__PURE__*/_react.default.createElement(_LanguageSetting.LanguageSetting, null)));
322
+ }, isOpenSettingDetails === 'checkout' && /*#__PURE__*/_react.default.createElement(_CheckoutFieldsSetting.CheckoutFieldsSetting, null), isOpenSettingDetails === 'guest_checkout' && /*#__PURE__*/_react.default.createElement(_GuestCheckoutFieldsSetting.GuestCheckoutFieldsSetting, null), isOpenSettingDetails === 'address' && /*#__PURE__*/_react.default.createElement(_AddressFieldsSetting.AddressFieldsSetting, null), isOpenSettingDetails === 'card' && /*#__PURE__*/_react.default.createElement(_CardFieldsSetting.CardFieldsSetting, null), isOpenSettingDetails === 'language' && /*#__PURE__*/_react.default.createElement(_LanguageSetting.LanguageSetting, null)));
312
323
  };
313
324
  var Settings = function Settings(props) {
314
325
  var settingsProps = _objectSpread(_objectSpread({}, props), {}, {
@@ -63,6 +63,12 @@ Object.defineProperty(exports, "EmailSetting", {
63
63
  return _EmailSetting.EmailSetting;
64
64
  }
65
65
  });
66
+ Object.defineProperty(exports, "GuestCheckoutFieldsSetting", {
67
+ enumerable: true,
68
+ get: function get() {
69
+ return _GuestCheckoutFieldsSetting.GuestCheckoutFieldsSetting;
70
+ }
71
+ });
66
72
  Object.defineProperty(exports, "InsertImage", {
67
73
  enumerable: true,
68
74
  get: function get() {
@@ -240,4 +246,5 @@ var _InsertImage = require("./InsertImage");
240
246
  var _LanguageTransSpread = require("./LanguageTransSpread");
241
247
  var _LanguageTransTable = require("./LanguageTransTable");
242
248
  var _MultiCountrySettings = require("./MultiCountrySettings");
243
- var _CardFieldsSetting = require("./CardFieldsSetting");
249
+ var _CardFieldsSetting = require("./CardFieldsSetting");
250
+ var _GuestCheckoutFieldsSetting = require("./GuestCheckoutFieldsSetting");
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.PushTokens = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _orderingComponentsAdminExternal = require("ordering-components-admin-external");
10
+ var _Pagination = require("../Pagination");
11
+ var _styles = require("./styles");
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
15
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
16
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
17
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
18
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
19
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
20
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
21
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
22
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
23
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
24
+ var PushTokens = function PushTokens(props) {
25
+ var userId = props.userId,
26
+ pushTokens = props.pushTokens;
27
+ var _useLanguage = (0, _orderingComponentsAdminExternal.useLanguage)(),
28
+ _useLanguage2 = _slicedToArray(_useLanguage, 2),
29
+ t = _useLanguage2[1];
30
+ var _useUtils = (0, _orderingComponentsAdminExternal.useUtils)(),
31
+ _useUtils2 = _slicedToArray(_useUtils, 1),
32
+ parseDate = _useUtils2[0].parseDate;
33
+ var numberPerPage = 10;
34
+ var _useState = (0, _react.useState)(1),
35
+ _useState2 = _slicedToArray(_useState, 2),
36
+ currentPage = _useState2[0],
37
+ setCurrentPage = _useState2[1];
38
+ var _useState3 = (0, _react.useState)([]),
39
+ _useState4 = _slicedToArray(_useState3, 2),
40
+ currentPageTokens = _useState4[0],
41
+ setCurrentPageTokens = _useState4[1];
42
+ var sortedTokens = (0, _react.useMemo)(function () {
43
+ var _tokens = _toConsumableArray(pushTokens);
44
+ return _tokens.sort(function (a, b) {
45
+ return b.id - a.id;
46
+ });
47
+ }, [pushTokens]);
48
+ var handleChangePage = function handleChangePage(pageNumber) {
49
+ setCurrentPage(pageNumber);
50
+ };
51
+ (0, _react.useEffect)(function () {
52
+ var indexOfLastPost = currentPage * numberPerPage;
53
+ var indexOfFirstPost = indexOfLastPost - numberPerPage;
54
+ var _currentProducts = sortedTokens.slice(indexOfFirstPost, indexOfLastPost);
55
+ setCurrentPageTokens(_currentProducts);
56
+ }, [sortedTokens, currentPage]);
57
+ (0, _react.useEffect)(function () {
58
+ setCurrentPage(1);
59
+ }, [userId]);
60
+ return /*#__PURE__*/_react.default.createElement(_styles.Container, null, sortedTokens.length > 0 ? /*#__PURE__*/_react.default.createElement(_styles.TableWrapper, null, /*#__PURE__*/_react.default.createElement(_styles.Table, null, /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("th", null, t('USER_ID_NUMBER', 'User ID')), /*#__PURE__*/_react.default.createElement("th", null, t('TOKEN', 'Token')), /*#__PURE__*/_react.default.createElement("th", null, t('APP', 'App')), /*#__PURE__*/_react.default.createElement("th", null, t('CREATED_AT', 'Created at')), /*#__PURE__*/_react.default.createElement("th", null, t('UPDATED_AT', 'Updated at')))), currentPageTokens.map(function (token) {
61
+ return /*#__PURE__*/_react.default.createElement("tbody", {
62
+ key: token.id
63
+ }, /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("td", null, token === null || token === void 0 ? void 0 : token.user_id), /*#__PURE__*/_react.default.createElement("td", null, token === null || token === void 0 ? void 0 : token.token), /*#__PURE__*/_react.default.createElement("td", null, token === null || token === void 0 ? void 0 : token.app), /*#__PURE__*/_react.default.createElement("td", null, parseDate(token === null || token === void 0 ? void 0 : token.created_at, {
64
+ utc: false
65
+ })), /*#__PURE__*/_react.default.createElement("td", null, parseDate(token === null || token === void 0 ? void 0 : token.updated_at, {
66
+ utc: false
67
+ }))));
68
+ }))) : /*#__PURE__*/_react.default.createElement("p", {
69
+ className: "no-data"
70
+ }, t('NO_DATA', 'No Data')), (sortedTokens === null || sortedTokens === void 0 ? void 0 : sortedTokens.length) > 0 && /*#__PURE__*/_react.default.createElement(_styles.WrapperPagination, null, /*#__PURE__*/_react.default.createElement(_Pagination.Pagination, {
71
+ isHidePagecontrol: true,
72
+ currentPage: currentPage,
73
+ totalPages: Math.ceil(sortedTokens.length / numberPerPage),
74
+ handleChangePage: handleChangePage
75
+ })));
76
+ };
77
+ exports.PushTokens = PushTokens;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.WrapperPagination = exports.TableWrapper = exports.Table = exports.Container = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
11
+ var Container = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n p.no-data {\n font-size: 14px;\n margin: 20px 0;\n }\n"])));
12
+ exports.Container = Container;
13
+ var TableWrapper = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n overflow: auto;\n"])));
14
+ exports.TableWrapper = TableWrapper;
15
+ var Table = _styledComponents.default.table(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n width: 100%;\n min-width: 900px;\n color: ", ";\n\n thead {\n tr {\n border-bottom: solid 1px ", ";\n th {\n padding: 13px 0;\n font-size: 12px;\n &:nth-child(2) {\n width: 35%;\n padding-left: 15px;\n padding-right: 15px;\n box-sizing: border-box;\n }\n &:nth-child(3),\n &:nth-child(4),\n &:nth-child(5)\n {\n width: 19%;\n }\n }\n }\n }\n\n tbody {\n border-bottom: 1px solid ", ";\n td {\n padding: 13px 0;\n font-size: 12px;\n\n &:nth-child(2) {\n width: 35%;\n padding-left: 15px;\n padding-right: 15px;\n box-sizing: border-box;\n }\n\n &:nth-child(3),\n &:nth-child(4),\n &:nth-child(5) {\n width: 19%;\n }\n }\n }\n"])), function (props) {
16
+ var _props$theme$colors;
17
+ return (_props$theme$colors = props.theme.colors) === null || _props$theme$colors === void 0 ? void 0 : _props$theme$colors.headingColor;
18
+ }, function (props) {
19
+ return props.theme.colors.disabled;
20
+ }, function (props) {
21
+ return props.theme.colors.borderColor;
22
+ });
23
+ exports.Table = Table;
24
+ var WrapperPagination = _styledComponents.default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n padding: 20px 0;\n"])));
25
+ exports.WrapperPagination = WrapperPagination;
@@ -129,6 +129,12 @@ Object.defineProperty(exports, "ProtectedRoute", {
129
129
  return _ProtectedRoute.ProtectedRoute;
130
130
  }
131
131
  });
132
+ Object.defineProperty(exports, "PushTokens", {
133
+ enumerable: true,
134
+ get: function get() {
135
+ return _PushTokens.PushTokens;
136
+ }
137
+ });
132
138
  Object.defineProperty(exports, "RangeCalendar", {
133
139
  enumerable: true,
134
140
  get: function get() {
@@ -230,6 +236,7 @@ var _Pagination = require("./Pagination");
230
236
  var _PaginationButton = require("./PaginationButton");
231
237
  var _Personalization = require("./Personalization");
232
238
  var _ProtectedRoute = require("./ProtectedRoute");
239
+ var _PushTokens = require("./PushTokens");
233
240
  var _Schedule = require("./Schedule");
234
241
  var _SearchBar = require("./SearchBar");
235
242
  var _RangeCalendar = require("./RangeCalendar");
@@ -183,7 +183,8 @@ var BusinessDeviceDetailUI = function BusinessDeviceDetailUI(props) {
183
183
  searchValue: businessSearchVal,
184
184
  handleChangeSearch: function handleChangeSearch(val) {
185
185
  return setBusinessSearchVal(val);
186
- }
186
+ },
187
+ isDisabled: !!selectedDevice
187
188
  })), ((formState === null || formState === void 0 || (_formState$changes8 = formState.changes) === null || _formState$changes8 === void 0 ? void 0 : _formState$changes8.business_id) || (selectedDevice === null || selectedDevice === void 0 ? void 0 : selectedDevice.business_id)) && /*#__PURE__*/_react.default.createElement(_styles2.SelectWrapper, null, /*#__PURE__*/_react.default.createElement("label", null, t('BUSINESS_OWNER', 'Business owner')), businessList !== null && businessList !== void 0 && businessList.loading ? /*#__PURE__*/_react.default.createElement(_reactLoadingSkeleton.default, {
188
189
  height: 44
189
190
  }) : /*#__PURE__*/_react.default.createElement(_FirstSelect.Select, {
@@ -74,7 +74,7 @@ var ProductIngredient = function ProductIngredient(props) {
74
74
  borderRadius: "8px",
75
75
  color: "lightPrimary",
76
76
  onClick: function onClick() {
77
- return handleOpenIngredient(null);
77
+ return handleOpenIngredient(null, true);
78
78
  }
79
79
  }, t('ADD_INGREDIENT', 'Add ingredient'))), (product === null || product === void 0 ? void 0 : product.ingredients) && (product === null || product === void 0 ? void 0 : product.ingredients.map(function (ingredient) {
80
80
  return /*#__PURE__*/_react.default.createElement(_styles2.IngredientOption, {
@@ -86,7 +86,7 @@ var ProductIngredient = function ProductIngredient(props) {
86
86
  }, /*#__PURE__*/_react.default.createElement("span", null, ingredient === null || ingredient === void 0 ? void 0 : ingredient.name), /*#__PURE__*/_react.default.createElement(_reactBootstrapIcons.ChevronRight, null));
87
87
  })), /*#__PURE__*/_react.default.createElement(_styles2.AddIngredientButtonWrapper, null, /*#__PURE__*/_react.default.createElement(_styles.LinkButton, {
88
88
  onClick: function onClick() {
89
- return handleOpenIngredient(null);
89
+ return handleOpenIngredient(null, true);
90
90
  }
91
91
  }, t('ADD_INGREDIENT', 'Add ingredient')))), width >= 1000 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, openDetails && /*#__PURE__*/_react.default.createElement(_ProductIngredientDetails.ProductIngredientDetails, _extends({}, props, {
92
92
  ingredient: currentIngredient,
@@ -37,7 +37,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
37
37
  function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
38
38
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
39
39
  var UserDetailsUI = function UserDetailsUI(props) {
40
- var _userState$user, _userState$user2, _userState$user3, _userState$user4, _userState$user5, _adminUserState$user, _userState$user6, _adminUserState$user2, _userState$user7, _userState$user8, _userState$user9, _userState$user10, _userState$user11, _userState$user12, _userState$user13, _userState$user14;
40
+ var _userState$user, _userState$user2, _userState$user3, _userState$user4, _userState$user5, _adminUserState$user, _userState$user6, _adminUserState$user2, _userState$user7, _userState$user8, _userState$user9, _userState$user10, _userState$user11, _userState$user12, _userState$user13, _userState$user14, _userState$user15, _userState$user16;
41
41
  var isManagers = props.isManagers,
42
42
  userState = props.userState,
43
43
  setExtraOpen = props.setExtraOpen,
@@ -166,7 +166,10 @@ var UserDetailsUI = function UserDetailsUI(props) {
166
166
  handleCustomOrderDetail: setExtraOpen
167
167
  })), currentMenuSelected === 'metafields' && /*#__PURE__*/_react.default.createElement(_UserMetaFields.UserMetaFields, {
168
168
  userId: (_userState$user14 = userState.user) === null || _userState$user14 === void 0 ? void 0 : _userState$user14.id
169
- }), currentMenuSelected === 'personalization' && /*#__PURE__*/_react.default.createElement(_styles2.PersonalizationWrapper, null, /*#__PURE__*/_react.default.createElement(_Personalization.Personalization, null))), /*#__PURE__*/_react.default.createElement(_Shared.Confirm, {
169
+ }), currentMenuSelected === 'personalization' && /*#__PURE__*/_react.default.createElement(_styles2.PersonalizationWrapper, null, /*#__PURE__*/_react.default.createElement(_Personalization.Personalization, null)), currentMenuSelected === 'push_tokens' && /*#__PURE__*/_react.default.createElement(_Shared.PushTokens, {
170
+ userId: (_userState$user15 = userState.user) === null || _userState$user15 === void 0 ? void 0 : _userState$user15.id,
171
+ pushTokens: ((_userState$user16 = userState.user) === null || _userState$user16 === void 0 ? void 0 : _userState$user16.push_tokens) || []
172
+ })), /*#__PURE__*/_react.default.createElement(_Shared.Confirm, {
170
173
  width: "700px",
171
174
  title: t('WEB_APPNAME', 'Ordering'),
172
175
  content: confirm.content,
@@ -57,6 +57,9 @@ var UserDetailsMenu = function UserDetailsMenu(props) {
57
57
  }, {
58
58
  key: 'personalization',
59
59
  content: t('PERSONALIZATION', 'Personalization')
60
+ }, {
61
+ key: 'push_tokens',
62
+ content: t('PUSH_TOKENS', 'Push tokens')
60
63
  }];
61
64
  var professionalMenuList = [{
62
65
  key: 'profile',
package/index-template.js CHANGED
@@ -42,6 +42,7 @@ import lalamove from './template/assets/images/lala-move.png'
42
42
  import pickerExpress from './template/assets/images/picker-express.png'
43
43
  import importMenu from './template/assets/images/import-menu.png'
44
44
  import importedMenu from './template/assets/images/imported-menu.png'
45
+ import googleCalendarIcon from './template/assets/images/google-calendar-icon.png'
45
46
 
46
47
  /**
47
48
  * project statuses
@@ -297,7 +298,7 @@ if (!(window?.location?.hostname === 'localhost')) {
297
298
  integrations: [
298
299
  new Integrations.BrowserTracing()
299
300
  ],
300
- release: process.env.npm_package_version ? 'ordering-ui-admin-release@' + process.env.npm_package_version : 'ordering-ui-admin-release@' + '1.0.5',
301
+ release: process.env.npm_package_version ? 'ordering-ui-admin-release@' + process.env.npm_package_version : 'ordering-ui-admin-release@' + '1.0.6',
301
302
  // Release health
302
303
  autoSessionTracking: true,
303
304
  ignoreErrors: [
@@ -397,7 +398,8 @@ theme.images = {
397
398
  lalamove,
398
399
  pickerExpress,
399
400
  importMenu,
400
- importedMenu
401
+ importedMenu,
402
+ googleCalendarIcon
401
403
  },
402
404
  project: {
403
405
  active: projectActive,
package/index.html CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  <body>
21
21
  <div id="app"></div>
22
- <script> (function () { var qs, js, q, s, d = document, gi = d.getElementById, ce = d.createElement, gt = d.getElementsByTagName, id = "typef_orm_share", b = "https://embed.typeform.com/"; if (!gi.call(d, id)) { js = ce.call(d, "script"); js.id = id; js.src = b + "embed.js"; q = gt.call(d, "script")[0]; q.parentNode.insertBefore(js, q) } })() </script>
22
+ <script> (function () { var qs, js, q, s, d = document, gi = d.getElementById, ce = d.createElement, gt = d.getElementsByTagName, id = "typef_orm_share", b = "https://embed.typeform.com/"; if (!gi.call(d, id)) { js = ce.call(d, "script"); js.id = id; js.src = b + "embed.js"; q = gt.call(d, "script")[0]; q?.parentNode?.insertBefore(js, q) } })() </script>
23
23
  </body>
24
24
 
25
- </html>
25
+ </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ordering-ui-admin-external",
3
- "version": "1.32.3",
3
+ "version": "1.33.0",
4
4
  "description": "Ordering UI Admin Components",
5
5
  "main": "./_modules/index.js",
6
6
  "exports": {
@@ -83,7 +83,7 @@
83
83
  "lodash": "^4.17.20",
84
84
  "moment": "^2.29.1",
85
85
  "moment-range": "^4.0.2",
86
- "ordering-components-admin-external": "1.32.2",
86
+ "ordering-components-admin-external": "1.33.0",
87
87
  "polished": "^3.6.7",
88
88
  "prop-types": "^15.7.2",
89
89
  "react-big-calendar": "^1.4.2",
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { useLanguage, useUtils } from 'ordering-components-admin-external'
2
+ import { useLanguage } from 'ordering-components-admin-external'
3
3
  import GiAlarmClock from '@meronex/icons/gi/GiAlarmClock'
4
4
  import {
5
5
  Container,
@@ -19,7 +19,6 @@ export const AnalyticsOrdersAcceptSpend = (props) => {
19
19
  } = props
20
20
 
21
21
  const [, t] = useLanguage()
22
- const [{ parseNumber }] = useUtils()
23
22
 
24
23
  return (
25
24
  <Container>
@@ -42,7 +41,7 @@ export const AnalyticsOrdersAcceptSpend = (props) => {
42
41
  dataList?.data ? (
43
42
  <OrdersAcceptSpendContent>
44
43
  <TimeContentWrapper>
45
- <h1>{dataList?.data && convertHMS(parseNumber(((dataList?.data * 1)), { separator: '.' }))}</h1>
44
+ <h1>{dataList?.data && convertHMS(dataList?.data * 1)}</h1>
46
45
  </TimeContentWrapper>
47
46
  <ReviewContentWrapper>
48
47
  <ReviewBlock>
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { useLanguage, useUtils } from 'ordering-components-admin-external'
2
+ import { useLanguage } from 'ordering-components-admin-external'
3
3
  import GiAlarmClock from '@meronex/icons/gi/GiAlarmClock'
4
4
  import {
5
5
  Container,
@@ -20,7 +20,6 @@ export const AnalyticsSpendList = (props) => {
20
20
  } = props
21
21
 
22
22
  const [, t] = useLanguage()
23
- const [{ parseNumber }] = useUtils()
24
23
 
25
24
  return (
26
25
  <Container>
@@ -43,7 +42,7 @@ export const AnalyticsSpendList = (props) => {
43
42
  dataList?.data ? (
44
43
  <AnalyticsSpendListContent>
45
44
  <TimeContentWrapper>
46
- <h1>{convertHMS(parseNumber((dataList?.data * 1), { separator: '.' }))}</h1>
45
+ <h1>{convertHMS(dataList?.data * 1)}</h1>
47
46
  </TimeContentWrapper>
48
47
  <ReviewContentWrapper>
49
48
  <ReviewBlock>
@@ -44,7 +44,11 @@ export const DriversGroupLogsUI = (props) => {
44
44
  { key: 'autoassign_max_radius', content: t('MAX_RADIUS', 'Maximum radius in meters') },
45
45
  { key: 'autoassign_autoreject_time', content: t('AUTO_REJECT_ORDER_GROUP_AFTER', 'Auto reject Orders After') },
46
46
  { key: 'autoassign_max_orders', content: t('MAX_AMOUNT_ORDERS_PER_DRIVER', 'Maximum amount of orders per drivers') },
47
- { key: 'autoassign_max_in_pending', content: t('ORDER_PENDING', 'Pending') }
47
+ { key: 'autoassign_max_in_pending', content: t('ORDER_PENDING', 'Pending') },
48
+ { key: 'available', content: t('AVAILABLE', 'Available') },
49
+ { key: 'enabled', content: t('ENABLED', 'Enabled') },
50
+ { key: 'last_available_at', content: t('LAST_AVAILABLE_AT', 'Last available at') },
51
+ { key: 'busy', content: t('BUSY', 'Busy') }
48
52
  ]
49
53
  const found = attributes.find(attribute => attribute.key === key)
50
54
  if (found) {
@@ -150,16 +154,16 @@ export const DriversGroupLogsUI = (props) => {
150
154
  <td>{getAttributeName(item?.attribute)}</td>
151
155
  <td>
152
156
  {
153
- typeof item?.new !== 'undefined'
157
+ (typeof item?.new !== 'undefined' && item?.new !== null)
154
158
  ? `${item?.new}`
155
- : item?.added.length > 0 ? item?.added.toString() : t('NONE', 'None')
159
+ : item?.added?.length > 0 ? item?.added?.toString() : t('NONE', 'None')
156
160
  }
157
161
  </td>
158
162
  <td>
159
163
  {
160
- typeof item?.old !== 'undefined'
164
+ (typeof item?.old !== 'undefined' && item?.old !== null)
161
165
  ? `${item?.old}`
162
- : item?.removed.length > 0 ? item?.removed.toString() : t('NONE', 'None')
166
+ : item?.removed?.length > 0 ? item?.removed?.toString() : t('NONE', 'None')
163
167
  }
164
168
  </td>
165
169
  </tr>
@@ -34,7 +34,7 @@ export const Table = styled.table`
34
34
  box-sizing: border-box;
35
35
  }
36
36
  &:nth-child(3) {
37
- width: 35%
37
+ width: 35%;
38
38
  padding-left: 15px;
39
39
  padding-right: 15px;
40
40
  box-sizing: border-box;
@@ -161,10 +161,12 @@ export const EventTypeContainer = styled.div`
161
161
  ${props => props.theme?.rtl ? css`
162
162
  padding-right: 15px;
163
163
  margin-right: 15px;
164
+ margin-left: 10px;
164
165
  border-right: 1px solid ${props => props.theme.colors.borderColor};
165
166
  ` : css`
166
167
  padding-left: 15px;
167
168
  margin-left: 15px;
169
+ margin-right: 10px;
168
170
  border-left: 1px solid ${props => props.theme.colors.borderColor};
169
171
  `}
170
172
  `
@@ -6,7 +6,7 @@ import { Dropdown, DropdownButton } from 'react-bootstrap'
6
6
  import { useLanguage, UserDetails as UserDetailsController } from 'ordering-components-admin-external'
7
7
  import { OrdersManager } from '../../Orders/OrdersManager'
8
8
  import { AddressList } from '../AddressList'
9
- import { Personalization, Modal, Schedule } from '../../Shared'
9
+ import { Personalization, Modal, Schedule, PushTokens } from '../../Shared'
10
10
  import { UserDetailsMenu } from '../UserDetailsMenu'
11
11
  import { UserProfileForm } from '../UserProfileForm'
12
12
  import { UserMetaFields } from '../../Users'
@@ -210,6 +210,12 @@ export const UserDetailsUI = (props) => {
210
210
  handleCustomOrderDetail={setExtraOpen}
211
211
  />
212
212
  )}
213
+ {currentMenuSelected === 'push_tokens' && (
214
+ <PushTokens
215
+ userId={userState?.user?.id}
216
+ pushTokens={userState?.user?.push_tokens || []}
217
+ />
218
+ )}
213
219
  </>
214
220
  )}
215
221
  <Modal
@@ -20,7 +20,8 @@ export const UserDetailsMenu = (props) => {
20
20
  { key: 'driver_group', content: t('DRIVER_GROUP', 'Driver group') },
21
21
  { key: 'saved_places', content: t('SAVED_PLACES', 'Saved places') },
22
22
  { key: 'schedule', content: t('SCHEDULE', 'Schedule') },
23
- { key: 'logs', content: t('LOGS', 'Logs') }
23
+ { key: 'logs', content: t('LOGS', 'Logs') },
24
+ { key: 'push_tokens', content: t('PUSH_TOKENS', 'Push tokens') }
24
25
  // { key: 'metafields', content: t('METAFIELDS', 'Metafields') },
25
26
  // { key: 'personalization', content: t('PERSONALIZATION', 'Personalization') }
26
27
  ] : [
@@ -68,13 +68,20 @@ export const ThemeOption = (props) => {
68
68
  )}
69
69
  <h5>{getTitle(name)}</h5>
70
70
  </OptionHeader>
71
- {((optionObject?.value_type === 'integer' || optionObject?.value_type === 'string') && !optionObject?.options && !validHexColor(valueObject)) && (
71
+ {((optionObject?.value_type === 'integer' || optionObject?.value_type === 'string' || name === 'borderRadius') && !optionObject?.options && !validHexColor(valueObject)) && (
72
72
  <Input
73
73
  defaultValue={valueObject}
74
74
  onChange={e => handleChangeValue(e.target.value)}
75
+ onInput={(e) => {
76
+ if (name === 'borderRadius') {
77
+ e.target.value = (Number(e.target.value) > 99 || e.target.value === '.' || (e.target.value.match(/\./g) || []).length > 1)
78
+ ? e.target.value.slice(0, -1)
79
+ : e.target.value.match(`^[${e.target.value === '0' ? '1' : '0'}-9/.]{1,9}$`)
80
+ }
81
+ }}
75
82
  />
76
83
  )}
77
- {(optionObject?.value_type === 'string' && validHexColor(valueObject)) && (
84
+ {(optionObject?.value_type === 'string' && name !== 'borderRadius' && validHexColor(valueObject)) && (
78
85
  <ColorPickerContainer>
79
86
  <ColorPicker
80
87
  defaultColor={valueObject}
@@ -98,7 +105,7 @@ export const ThemeOption = (props) => {
98
105
  handleChangeValue={handleChangeValue}
99
106
  />
100
107
  )}
101
- {typeof optionObject !== 'string' && Object.keys(optionObject).filter(subOption => subOption !== 'value_type' && subOption !== 'options').map(subOption => (
108
+ {(!optionObject?.value_type && !optionObject?.components) && Object.keys(optionObject).filter(subOption => subOption !== 'value_type' && subOption !== 'options').map(subOption => (
102
109
  <React.Fragment key={subOption}>
103
110
  {subOption !== 'components' && (
104
111
  <ThemeOption
@@ -113,6 +120,19 @@ export const ThemeOption = (props) => {
113
120
  )}
114
121
  </React.Fragment>
115
122
  ))}
123
+ {optionObject?.components && Object?.keys(optionObject?.components)?.map(subOption => (
124
+ <React.Fragment key={subOption}>
125
+ <ThemeOption
126
+ name={subOption}
127
+ optionObject={optionObject?.components[subOption]}
128
+ valueObject={valueObject?.components[subOption]}
129
+ path={path + '.' + subOption}
130
+ themeValues={themeValues}
131
+ setThemeValues={setThemeValues}
132
+ handleAddThemeGallery={handleAddThemeGallery}
133
+ />
134
+ </React.Fragment>
135
+ ))}
116
136
  </OptionContainer>
117
137
  )
118
138
  }
@@ -45,7 +45,13 @@ export const FilterContainer = styled.div`
45
45
  `
46
46
  export const WrapperDriversList = styled.div`
47
47
  overflow-x: hidden;
48
+ .driver-info-container {
49
+ p.name {
50
+ min-width: 50%;
51
+ max-width: 50%;
52
+ }
53
+ }
48
54
  @media (min-width: 992px) {
49
- max-height: calc(var(--vh, 1vh) * 100 - 410px);
55
+ max-height: min(calc(var(--vh, 1vh) * 100 - 410px), 770px);
50
56
  }
51
57
  `
@@ -194,7 +194,6 @@ const OrdersManagerUI = (props) => {
194
194
  citiesList={citiesList}
195
195
  paymethodsList={paymethodsList}
196
196
  businessesList={businessesList}
197
- filterValues={filterValues}
198
197
  handleChangeSearch={handleChangeSearch}
199
198
  handleChangeFilterValues={handleChangeFilterValues}
200
199
  selectedOrderIds={selectedOrderIds}
@@ -6,7 +6,8 @@ import { Button } from '../../../styles'
6
6
 
7
7
  export const CreateCustomOrder = (props) => {
8
8
  const {
9
- handleOpenCustomOrderDetail
9
+ handleOpenCustomOrderDetail,
10
+ handleOpenOrderDetail
10
11
  } = props
11
12
 
12
13
  const [, t] = useLanguage()
@@ -37,6 +38,7 @@ export const CreateCustomOrder = (props) => {
37
38
  handleParentSidebarMove={val => setMoveDistance(val)}
38
39
  handleOpenCustomOrderDetail={handleOpenCustomOrderDetail}
39
40
  onClose={() => setOpenSidebar(false)}
41
+ handleOpenOrderDetail={handleOpenOrderDetail}
40
42
  />
41
43
  </SideBar>
42
44
  )}
@@ -58,7 +58,7 @@ export const DriverMapMarkerAndInfo = (props) => {
58
58
  <Text fontWeight='bold'>
59
59
  {t('LAST_LOCATION', 'Last location')}:
60
60
  </Text>
61
- <Text>{parseDate(driver.last_location_at, { utc: false })}</Text>
61
+ <Text>{parseDate(driver.last_location_at)}</Text>
62
62
  </TextContainer>
63
63
  )}
64
64
  </DriverInfo>
@@ -55,9 +55,11 @@ export const DriversList = (props) => {
55
55
  <DriverCard
56
56
  key={i}
57
57
  >
58
- <WrapperImage>
59
- <Skeleton width={45} height={45} />
60
- </WrapperImage>
58
+ {!hidePhoto && (
59
+ <WrapperImage>
60
+ <Skeleton width={45} height={45} />
61
+ </WrapperImage>
62
+ )}
61
63
  <DriverInfo>
62
64
  <div>
63
65
  <Skeleton width={100} />
@@ -80,18 +82,20 @@ export const DriversList = (props) => {
80
82
  <Image bgimage={optimizeImage(driver?.photo || theme.images?.icons?.noDriver, 'h_50,c_limit')} />
81
83
  </WrapperImage>
82
84
  )}
83
- <DriverInfo>
84
- <div>
85
- <p>{driver.name} {driver.lastname}</p>
85
+ <DriverInfo hidePhoto={hidePhoto}>
86
+ <div className='driver-info-container'>
87
+ <p className='name'>{driver.name} {driver.lastname}</p>
86
88
  <BsDot />
87
- <LinkButton
88
- className='driver-orders'
89
- disabled={!driver?.assigned_orders_count || driver?.assigned_orders_count === 0}
90
- onClick={() => onOpenDriverOrdersDetail(driver)}
91
- >
92
- {driver?.assigned_orders_count} {t('ORDERS', 'Orders')}
93
- </LinkButton>
94
- <p className='text-red'>{(driver?.busy && `(${t('BUSY', 'Busy')})`)}</p>
89
+ <div>
90
+ <LinkButton
91
+ className='driver-orders'
92
+ disabled={!driver?.assigned_orders_count || driver?.assigned_orders_count === 0}
93
+ onClick={() => onOpenDriverOrdersDetail(driver)}
94
+ >
95
+ {driver?.assigned_orders_count} {t('ORDERS', 'Orders')}
96
+ </LinkButton>
97
+ <span className='text-red'>{(driver?.busy && `(${t('BUSY', 'Busy')})`)}</span>
98
+ </div>
95
99
  </div>
96
100
  {driver?.qualification && (
97
101
  <WrapperStar width={getStarWidth(driver?.qualification)} />