ordering-ui-admin-external 1.30.0 → 1.30.2

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 (31) hide show
  1. package/_bundles/{ordering-ui-admin.046d3a07ef07287d2ee0.js → ordering-ui-admin.6be018fe653b04c6fa85.js} +2 -2
  2. package/_modules/components/Delivery/DriversGroupAutoassign/index.js +11 -2
  3. package/_modules/components/Delivery/DriversGroupAutoassign/styles.js +28 -25
  4. package/_modules/components/Orders/CompanySelector/styles.js +1 -1
  5. package/_modules/components/Orders/DriverMultiSelector/index.js +149 -0
  6. package/_modules/components/Orders/DriverMultiSelector/styles.js +83 -0
  7. package/_modules/components/Orders/DriverSelector/index.js +116 -147
  8. package/_modules/components/Orders/DriverSelector/styles.js +25 -36
  9. package/_modules/components/Orders/OrderContactInformation/index.js +1 -1
  10. package/_modules/components/Orders/OrderContactInformation/styles.js +26 -18
  11. package/_modules/components/Orders/OrdersContentHeader/index.js +1 -1
  12. package/_modules/components/Orders/OrdersFilterGroup/index.js +44 -5
  13. package/_modules/components/Orders/OrdersFilterGroup/styles.js +13 -3
  14. package/_modules/components/Users/UsersList/index.js +7 -3
  15. package/_modules/components/Users/UsersList/styles.js +1 -1
  16. package/package.json +2 -2
  17. package/src/components/Delivery/DriversGroupAutoassign/index.js +7 -0
  18. package/src/components/Delivery/DriversGroupAutoassign/styles.js +4 -0
  19. package/src/components/Orders/CompanySelector/styles.js +1 -0
  20. package/src/components/Orders/DriverMultiSelector/index.js +124 -0
  21. package/src/components/Orders/DriverMultiSelector/styles.js +150 -0
  22. package/src/components/Orders/DriverSelector/index.js +120 -149
  23. package/src/components/Orders/DriverSelector/styles.js +23 -25
  24. package/src/components/Orders/OrderContactInformation/index.js +3 -2
  25. package/src/components/Orders/OrderContactInformation/styles.js +24 -4
  26. package/src/components/Orders/OrdersContentHeader/index.js +1 -1
  27. package/src/components/Orders/OrdersFilterGroup/index.js +26 -5
  28. package/src/components/Orders/OrdersFilterGroup/styles.js +41 -0
  29. package/src/components/Users/UsersList/index.js +16 -1
  30. package/src/components/Users/UsersList/styles.js +6 -3
  31. /package/_bundles/{ordering-ui-admin.046d3a07ef07287d2ee0.js.LICENSE.txt → ordering-ui-admin.6be018fe653b04c6fa85.js.LICENSE.txt} +0 -0
@@ -11,7 +11,7 @@ var _orderingComponentsAdminExternal = require("ordering-components-admin-extern
11
11
  var _BusinessesSelector = require("../BusinessesSelector");
12
12
  var _DriversGroupTypeSelector = require("../DriversGroupTypeSelector");
13
13
  var _DateTypeSelector = require("../DateTypeSelector");
14
- var _DriverSelector = require("../DriverSelector");
14
+ var _DriverMultiSelector = require("../DriverMultiSelector");
15
15
  var _Shared = require("../../Shared");
16
16
  var _DeliveryTypeSelector = require("../DeliveryTypeSelector");
17
17
  var _PaymethodTypeSelector = require("../PaymethodTypeSelector");
@@ -19,7 +19,9 @@ var _CountryFilter = require("../CountryFilter");
19
19
  var _styles = require("../../../styles");
20
20
  var _CurrencyFilter = require("../CurrencyFilter");
21
21
  var _utils = require("../../../utils");
22
+ var _FirstSelect = require("../../../styles/Select/FirstSelect");
22
23
  var _styles2 = require("./styles");
24
+ var _styles3 = require("../OrdersTable/styles");
23
25
  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); }
24
26
  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; }
25
27
  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; }
@@ -34,6 +36,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
34
36
  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; } }
35
37
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // import { OrderStatusTypeSelector } from '../OrderStatusTypeSelector'
36
38
  var OrdersFilterGroupUI = function OrdersFilterGroupUI(props) {
39
+ var _filterValues$logisti;
37
40
  var open = props.open,
38
41
  handleCloseFilterModal = props.handleCloseFilterModal,
39
42
  filterValues = props.filterValues,
@@ -59,7 +62,8 @@ var OrdersFilterGroupUI = function OrdersFilterGroupUI(props) {
59
62
  handleChangeMetaFieldValue = props.handleChangeMetaFieldValue,
60
63
  handleAddMetaField = props.handleAddMetaField,
61
64
  handleDeleteMetafield = props.handleDeleteMetafield,
62
- handleChangeExternalId = props.handleChangeExternalId;
65
+ handleChangeExternalId = props.handleChangeExternalId,
66
+ handleChangeChildFilterValue = props.handleChangeChildFilterValue;
63
67
  var _useLanguage = (0, _orderingComponentsAdminExternal.useLanguage)(),
64
68
  _useLanguage2 = _slicedToArray(_useLanguage, 2),
65
69
  t = _useLanguage2[1];
@@ -75,6 +79,32 @@ var OrdersFilterGroupUI = function OrdersFilterGroupUI(props) {
75
79
  isShow = _useState4[0],
76
80
  setIsShow = _useState4[1];
77
81
  var metafieldRef = (0, _react.useRef)();
82
+ var logisticStatusList = [{
83
+ value: 0,
84
+ content: /*#__PURE__*/_react.default.createElement(_styles2.Option, null, t('PENDING', 'Pending'), /*#__PURE__*/_react.default.createElement(_styles3.LogisticStatusDot, {
85
+ status: 0
86
+ }))
87
+ }, {
88
+ value: 1,
89
+ content: /*#__PURE__*/_react.default.createElement(_styles2.Option, null, t('IN_PROGRESS', 'In progress'), /*#__PURE__*/_react.default.createElement(_styles3.LogisticStatusDot, {
90
+ status: 1
91
+ }))
92
+ }, {
93
+ value: 2,
94
+ content: /*#__PURE__*/_react.default.createElement(_styles2.Option, null, t('IN_QUEUE', 'In queue'), /*#__PURE__*/_react.default.createElement(_styles3.LogisticStatusDot, {
95
+ status: 2
96
+ }))
97
+ }, {
98
+ value: 3,
99
+ content: /*#__PURE__*/_react.default.createElement(_styles2.Option, null, t('EXPIRED', 'Expired'), /*#__PURE__*/_react.default.createElement(_styles3.LogisticStatusDot, {
100
+ status: 3
101
+ }))
102
+ }, {
103
+ value: 4,
104
+ content: /*#__PURE__*/_react.default.createElement(_styles2.Option, null, t('RESOLVED', 'Resolved'), /*#__PURE__*/_react.default.createElement(_styles3.LogisticStatusDot, {
105
+ status: 4
106
+ }))
107
+ }];
78
108
  var handleAcceptFilter = function handleAcceptFilter() {
79
109
  handleChangeFilterValues(filterValues);
80
110
  handleCloseFilterModal();
@@ -149,8 +179,7 @@ var OrdersFilterGroupUI = function OrdersFilterGroupUI(props) {
149
179
  filterValues: filterValues,
150
180
  businessesList: businessesList,
151
181
  handleChangeBusinesses: handleChangeBusinesses
152
- }), /*#__PURE__*/_react.default.createElement(_DriverSelector.DriverSelector, {
153
- isFilterView: true,
182
+ }), /*#__PURE__*/_react.default.createElement(_DriverMultiSelector.DriverMultiSelector, {
154
183
  drivers: driversList.drivers,
155
184
  filterValues: filterValues,
156
185
  handleChangeDriver: handleChangeDriver
@@ -171,7 +200,17 @@ var OrdersFilterGroupUI = function OrdersFilterGroupUI(props) {
171
200
  })), /*#__PURE__*/_react.default.createElement(_styles2.WrapperRow, null, /*#__PURE__*/_react.default.createElement(_CurrencyFilter.CurrencyFilter, {
172
201
  filterValues: filterValues,
173
202
  handleChangeCurrency: handleChangeCurrency
174
- })), filterValues === null || filterValues === void 0 ? void 0 : filterValues.metafield.map(function (item) {
203
+ }), /*#__PURE__*/_react.default.createElement(_styles2.SelectWrapper, null, /*#__PURE__*/_react.default.createElement(_FirstSelect.Select, {
204
+ options: logisticStatusList,
205
+ className: "select",
206
+ defaultValue: (_filterValues$logisti = filterValues === null || filterValues === void 0 ? void 0 : filterValues.logisticStatus) !== null && _filterValues$logisti !== void 0 ? _filterValues$logisti : '',
207
+ placeholder: t('SELECT_LOGISTIC_STATUS', 'Select a logistic status'),
208
+ onChange: function onChange(value) {
209
+ return handleChangeChildFilterValue({
210
+ logisticStatus: value
211
+ });
212
+ }
213
+ }))), filterValues === null || filterValues === void 0 ? void 0 : filterValues.metafield.map(function (item) {
175
214
  return /*#__PURE__*/_react.default.createElement(_styles2.WrapperRow, {
176
215
  key: item.id
177
216
  }, /*#__PURE__*/_react.default.createElement(_styles.Input, {
@@ -4,9 +4,9 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.WrapperRow = exports.MultiSelectContainer = exports.FilterGroupListContainer = exports.ButtonGroup = exports.AddMetaFiled = exports.AddInputWrapper = void 0;
7
+ exports.WrapperRow = exports.SelectWrapper = exports.Option = exports.MultiSelectContainer = exports.FilterGroupListContainer = exports.ButtonGroup = exports.AddMetaFiled = exports.AddInputWrapper = void 0;
8
8
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
9
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
9
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11;
10
10
  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); }
11
11
  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; }
12
12
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
@@ -32,4 +32,14 @@ exports.AddInputWrapper = AddInputWrapper;
32
32
  var AddMetaFiled = _styledComponents.default.span(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n font-size: 14px;\n color: ", ";\n cursor: pointer;\n width: 100%;\n"])), function (props) {
33
33
  return props.theme.colors.primary;
34
34
  });
35
- exports.AddMetaFiled = AddMetaFiled;
35
+ exports.AddMetaFiled = AddMetaFiled;
36
+ var SelectWrapper = _styledComponents.default.div(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n > div {\n width: 100%;\n border: none;\n height: 100%;\n\n > div:first-child {\n height: 100%;\n background-color: ", ";\n border: none;\n border-radius: 7.6px;\n font-weight: 400;\n font-size: 14px;\n line-height: 24px;\n padding-left: 20px;\n }\n .list {\n background-color: ", ";\n border: none;\n \n .list-wrapper {\n > div {\n padding: 6px 10px;\n &:hover {\n background-color: #f2f5f7;\n }\n }\n }\n }\n }\n"])), function (props) {
37
+ return props.theme.colors.secundary;
38
+ }, function (props) {
39
+ return props.theme.colors.secundary;
40
+ });
41
+ exports.SelectWrapper = SelectWrapper;
42
+ var Option = _styledComponents.default.div(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n font-weight: 400;\n font-size: 14px;\n line-height: 24px;\n color: ", ";\n display: flex;\n align-items: center;\n"])), function (props) {
43
+ return props.theme.colors.secundaryContrast;
44
+ });
45
+ exports.Option = Option;
@@ -155,7 +155,7 @@ var UsersList = function UsersList(props) {
155
155
  onClick: function onClick() {
156
156
  return handleSelecteAllUser();
157
157
  }
158
- }, !(usersList !== null && usersList !== void 0 && usersList.loading) && isAllChecked ? /*#__PURE__*/_react.default.createElement(_reactBootstrapIcons.CheckSquareFill, null) : /*#__PURE__*/_react.default.createElement(_reactBootstrapIcons.Square, null)), t('USER', 'User'))), /*#__PURE__*/_react.default.createElement("th", null, t('PHONE', 'Phone')), /*#__PURE__*/_react.default.createElement("th", null, t('TYPE', 'Type')), /*#__PURE__*/_react.default.createElement("th", {
158
+ }, !(usersList !== null && usersList !== void 0 && usersList.loading) && isAllChecked ? /*#__PURE__*/_react.default.createElement(_reactBootstrapIcons.CheckSquareFill, null) : /*#__PURE__*/_react.default.createElement(_reactBootstrapIcons.Square, null)), t('ID', 'Id'))), /*#__PURE__*/_react.default.createElement("th", null, t('USER', 'User')), /*#__PURE__*/_react.default.createElement("th", null, t('PHONE', 'Phone')), /*#__PURE__*/_react.default.createElement("th", null, t('TYPE', 'Type')), /*#__PURE__*/_react.default.createElement("th", {
159
159
  className: "amout-orders "
160
160
  }, t('AMOUNT_OF_ORDERS', 'Amount of orders')), /*#__PURE__*/_react.default.createElement("th", null, t('ACTION', 'Action')))), usersList.loading ? _toConsumableArray(Array((paginationProps === null || paginationProps === void 0 ? void 0 : paginationProps.pageSize) || 10).keys()).map(function (i) {
161
161
  return /*#__PURE__*/_react.default.createElement("tbody", {
@@ -163,7 +163,9 @@ var UsersList = function UsersList(props) {
163
163
  }, /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("td", null, /*#__PURE__*/_react.default.createElement(_styles2.UserMainInfo, null, /*#__PURE__*/_react.default.createElement(_styles2.CheckBoxWrapper, null, /*#__PURE__*/_react.default.createElement(_reactLoadingSkeleton.default, {
164
164
  width: 20,
165
165
  height: 20
166
- })), /*#__PURE__*/_react.default.createElement(_styles2.WrapperImage, {
166
+ })), /*#__PURE__*/_react.default.createElement(_styles2.InfoBlock, null, /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement(_reactLoadingSkeleton.default, {
167
+ width: 70
168
+ }))))), /*#__PURE__*/_react.default.createElement("td", null, /*#__PURE__*/_react.default.createElement(_styles2.UserMainInfo, null, /*#__PURE__*/_react.default.createElement(_styles2.WrapperImage, {
167
169
  isSkeleton: true
168
170
  }, /*#__PURE__*/_react.default.createElement(_reactLoadingSkeleton.default, {
169
171
  width: 45,
@@ -198,7 +200,9 @@ var UsersList = function UsersList(props) {
198
200
  onClick: function onClick() {
199
201
  return handleSelectedUsers(user.id);
200
202
  }
201
- }, selectedUsers.includes(user.id) ? /*#__PURE__*/_react.default.createElement(_reactBootstrapIcons.CheckSquareFill, null) : /*#__PURE__*/_react.default.createElement(_reactBootstrapIcons.Square, null)), /*#__PURE__*/_react.default.createElement(_styles2.WrapperImage, null, user !== null && user !== void 0 && user.photo ? /*#__PURE__*/_react.default.createElement(_styles2.Image, {
203
+ }, selectedUsers.includes(user.id) ? /*#__PURE__*/_react.default.createElement(_reactBootstrapIcons.CheckSquareFill, null) : /*#__PURE__*/_react.default.createElement(_reactBootstrapIcons.Square, null)), /*#__PURE__*/_react.default.createElement(_styles2.InfoBlock, null, /*#__PURE__*/_react.default.createElement("p", {
204
+ className: "bold"
205
+ }, user === null || user === void 0 ? void 0 : user.id)))), /*#__PURE__*/_react.default.createElement("td", null, /*#__PURE__*/_react.default.createElement(_styles2.UserMainInfo, null, /*#__PURE__*/_react.default.createElement(_styles2.WrapperImage, null, user !== null && user !== void 0 && user.photo ? /*#__PURE__*/_react.default.createElement(_styles2.Image, {
202
206
  bgimage: optimizeImage(user === null || user === void 0 ? void 0 : user.photo, 'h_50,c_limit')
203
207
  }) : /*#__PURE__*/_react.default.createElement(_FaUserAlt.default, null), isCustomer && /*#__PURE__*/_react.default.createElement(_styles2.OrdersCountWrapper, {
204
208
  isNew: (user === null || user === void 0 ? void 0 : user.orders_count) === 0
@@ -17,7 +17,7 @@ var UsersConatiner = _styledComponents.default.div(_templateObject || (_template
17
17
  exports.UsersConatiner = UsersConatiner;
18
18
  var UserTableWrapper = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n overflow: auto;\n"])));
19
19
  exports.UserTableWrapper = UserTableWrapper;
20
- var UsersTable = _styledComponents.default.table(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n width: calc(100% - 10px);\n min-width: 900px;\n color: ", ";\n\n td, th {\n padding: 10px 0;\n font-size: 14px;\n &:first-child {\n width: 40%;\n }\n &:nth-child(2) {\n width: 20%;\n }\n\n &:nth-child(4),\n \n &:nth-child(5) {\n width: 10%;\n }\n }\n\n thead {\n tr {\n border-bottom: solid 1px ", ";\n th {\n white-space: nowrap;\n &.amout-orders {\n width: 15%;\n }\n }\n }\n }\n\n tbody {\n border-bottom: 1px solid ", ";\n cursor: pointer;\n\n &:hover {\n background-color: ", ";\n }\n &.active {\n background-color: ", ";\n td {\n border-top: 1px solid ", ";\n border-bottom: 1px solid ", ";\n }\n }\n }\n"])), function (props) {
20
+ var UsersTable = _styledComponents.default.table(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n width: calc(100% - 10px);\n min-width: 900px;\n color: ", ";\n\n td, th {\n padding: 10px 0;\n font-size: 14px;\n &:first-child {\n width: 10%;\n }\n &:nth-child(2) {\n width: 35%;\n }\n &:nth-child(3) {\n width: 20%;\n }\n\n &:nth-child(5),\n \n &:nth-child(6) {\n width: 10%;\n }\n }\n\n thead {\n tr {\n border-bottom: solid 1px ", ";\n th {\n white-space: nowrap;\n &.amout-orders {\n width: 15%;\n }\n }\n }\n }\n\n tbody {\n border-bottom: 1px solid ", ";\n cursor: pointer;\n\n &:hover {\n background-color: ", ";\n }\n &.active {\n background-color: ", ";\n td {\n border-top: 1px solid ", ";\n border-bottom: 1px solid ", ";\n }\n }\n }\n"])), function (props) {
21
21
  var _props$theme$colors;
22
22
  return (_props$theme$colors = props.theme.colors) === null || _props$theme$colors === void 0 ? void 0 : _props$theme$colors.headingColor;
23
23
  }, function (props) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ordering-ui-admin-external",
3
- "version": "1.30.0",
3
+ "version": "1.30.2",
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.30.0",
86
+ "ordering-components-admin-external": "1.30.2",
87
87
  "polished": "^3.6.7",
88
88
  "prop-types": "^15.7.2",
89
89
  "react-big-calendar": "^1.4.2",
@@ -208,6 +208,13 @@ const DriversGroupAutoassignUI = (props) => {
208
208
  </div>
209
209
  </RowGroupContainer>
210
210
  )}
211
+ <CheckboxWrapper isPadding>
212
+ <Checkbox
213
+ checked={changesState?.autoassign_groupable_individual_orders_only ?? curDriversGroup?.autoassign_groupable_individual_orders_only}
214
+ onChange={e => onChangeSave({ autoassign_groupable_individual_orders_only: e.target.checked })}
215
+ />
216
+ <span>{t('DO_NOT_ASSIGN_MORE_THAN_1_ORDER_IF_ORDER_CAN_NOT_GROUPED', 'Do not assign more than 1 order IF the order can’t be grouped')}</span>
217
+ </CheckboxWrapper>
211
218
  </AutoassignContainer>
212
219
  )
213
220
  }
@@ -119,6 +119,10 @@ export const CheckboxWrapper = styled.div`
119
119
  display: flex;
120
120
  align-items: center;
121
121
 
122
+ ${({ isPadding }) => isPadding && css`
123
+ padding-bottom: 20px;
124
+ `}
125
+
122
126
  span {
123
127
  font-size: 14px;
124
128
  ${props => props.theme?.rtl ? css`
@@ -33,6 +33,7 @@ export const Option = styled.div`
33
33
  white-space: nowrap;
34
34
  text-overflow: ellipsis;
35
35
  max-width: 350px;
36
+ font-size: 14px;
36
37
  }
37
38
 
38
39
  @media (max-width: 576px) {
@@ -0,0 +1,124 @@
1
+ import React, { useEffect, useState } from 'react'
2
+ import { useLanguage, DriversList as DriversController } from 'ordering-components-admin-external'
3
+ import { useTheme } from 'styled-components'
4
+ import { MultiSelect } from '../../../styles/MultiSelect'
5
+
6
+ import {
7
+ Option,
8
+ OptionContent,
9
+ DriverNameContainer,
10
+ WrapperDriverImage,
11
+ DriverImage,
12
+ DriverName,
13
+ DriverText,
14
+ PlaceholderTitle
15
+ } from './styles'
16
+
17
+ const DriverMultiSelectorUI = (props) => {
18
+ const {
19
+ driversList,
20
+ defaultValue,
21
+ isPhoneView,
22
+ small,
23
+ padding,
24
+ handleChangeDriver,
25
+ filterValues
26
+ } = props
27
+
28
+ const [, t] = useLanguage()
29
+ const theme = useTheme()
30
+ const [driversMultiOptionList, setDriversMultiOptionList] = useState([])
31
+ const [searchValue, setSearchValue] = useState(null)
32
+ const driversLoading = [{ value: 'default', content: <Option small={small}>{t('LOADING', 'loading')}...</Option> }]
33
+ useEffect(() => {
34
+ const _driversOptionList = [
35
+ {
36
+ value: 'default',
37
+ content: <Option padding='0px'><span>{t('SELECT_DRIVER', 'Select driver')}</span></Option>,
38
+ color: 'primary',
39
+ showDisable: true
40
+ }
41
+ ]
42
+ if (!driversList.loading) {
43
+ let _driverList
44
+ if (searchValue) {
45
+ _driverList = driversList.drivers.filter(driver => (driver.name + driver.lastname).toLocaleLowerCase().includes(searchValue.toLocaleLowerCase()))
46
+ } else {
47
+ _driverList = driversList.drivers
48
+ }
49
+ const _driversOptionListTemp = _driverList.map((driver, i) => {
50
+ return {
51
+ value: driver.id,
52
+ showDisable: true,
53
+ content: (
54
+ <Option small={small} isPhoneView={isPhoneView} padding={padding}>
55
+ <WrapperDriverImage small={small} className='driver-photo'>
56
+ <DriverImage bgimage={driver.photo || theme.images.icons?.noDriver} small={small} />
57
+ </WrapperDriverImage>
58
+ <OptionContent>
59
+ <DriverNameContainer className='driver-info'>
60
+ <DriverName small={small}>{driver.name} {driver.lastname}</DriverName>
61
+ <DriverText small={small}>{t('DRIVER', 'Driver')}</DriverText>
62
+ </DriverNameContainer>
63
+ </OptionContent>
64
+ </Option>
65
+ )
66
+ }
67
+ })
68
+
69
+ setDriversMultiOptionList(_driversOptionListTemp)
70
+
71
+ for (const option of _driversOptionListTemp) {
72
+ _driversOptionList.push(option)
73
+ }
74
+ }
75
+ }, [driversList, defaultValue, searchValue])
76
+
77
+ const Placeholder = <PlaceholderTitle>{t('SELECT_DRIVER', 'Select driver')}</PlaceholderTitle>
78
+
79
+ return (
80
+ <>
81
+ {!driversList.loading ? (
82
+ <MultiSelect
83
+ defaultValue={filterValues.driverIds}
84
+ placeholder={Placeholder}
85
+ options={driversMultiOptionList}
86
+ optionInnerMargin='10px'
87
+ optionInnerMaxHeight='150px'
88
+ onChange={(driver) => handleChangeDriver(driver)}
89
+ isShowSearchBar
90
+ searchBarIsCustomLayout
91
+ searchBarIsNotLazyLoad
92
+ searchValue={searchValue}
93
+ handleChangeSearch={(val) => setSearchValue(val)}
94
+ />
95
+ ) : (
96
+ <MultiSelect
97
+ defaultValue='default'
98
+ options={driversLoading}
99
+ optionInnerMargin='10px'
100
+ optionInnerMaxHeight='150px'
101
+ className='driver-select'
102
+ isShowSearchBar
103
+ searchBarIsCustomLayout
104
+ searchBarIsNotLazyLoad
105
+ searchValue={searchValue}
106
+ handleChangeSearch={(val) => setSearchValue(val)}
107
+ />
108
+ )}
109
+ </>
110
+ )
111
+ }
112
+
113
+ export const DriverMultiSelector = (props) => {
114
+ const DriversControlProps = {
115
+ ...props,
116
+ UIComponent: DriverMultiSelectorUI,
117
+ propsToFetch: ['id', 'name', 'lastname', 'cellphone', 'photo']
118
+ }
119
+ return (
120
+ <>
121
+ <DriversController {...DriversControlProps} />
122
+ </>
123
+ )
124
+ }
@@ -0,0 +1,150 @@
1
+ import React from 'react'
2
+ import styled, { css } from 'styled-components'
3
+
4
+ export const Option = styled.div`
5
+ display: flex;
6
+ align-items: center;
7
+ color: ${props => props.theme.colors?.headingColor};
8
+ padding: ${({ padding }) => padding || '5px 10px'};
9
+ white-space: nowrap;
10
+ ${({ isPhoneView }) => isPhoneView && css`
11
+ width: 100%;
12
+ `}
13
+ ${({ isRemove }) => isRemove && css`
14
+ color: ${props => props.theme.colors.danger};
15
+ padding: 3px 10px;
16
+ font-size: 14px;
17
+ `}
18
+
19
+ img {
20
+ width: 45px;
21
+ border-radius: 8px;
22
+ }
23
+
24
+ ${({ small }) => small && css`
25
+ padding: ${({ padding }) => padding || '5px 0px'};
26
+ img {
27
+ width: 25px;
28
+ }
29
+ `}
30
+
31
+ span {
32
+ overflow: hidden;
33
+ white-space: nowrap;
34
+ text-overflow: ellipsis;
35
+ max-width: 350px;
36
+ }
37
+
38
+ @media (max-width: 576px) {
39
+ padding: ${({ padding }) => padding || '5px 0px'};
40
+ ${props => props.theme?.rtl ? css`
41
+ margin-right: 10px;
42
+ ` : css`
43
+ margin-left: 10px;
44
+ `}
45
+ span {
46
+ max-width: 280px;
47
+ }
48
+ }
49
+ `
50
+
51
+ export const OptionContent = styled.div`
52
+ flex: 1;
53
+ display: flex;
54
+ align-items: center;
55
+ justify-content: space-between;
56
+ `
57
+
58
+ export const DriverNameContainer = styled.div`
59
+ line-height: 1.3;
60
+ color: #263238;
61
+ `
62
+
63
+ export const DriverName = styled.p`
64
+ font-size: 14px;
65
+ font-weight: 600;
66
+ line-height: 1.3;
67
+ color: ${props => props.theme.colors.headingColor};
68
+ overflow: hidden;
69
+ white-space: nowrap;
70
+ text-overflow: ellipsis;
71
+ max-width: 150px;
72
+ margin: 0px;
73
+
74
+ ${({ small }) => small && css`
75
+ font-weight: 400;
76
+ `}
77
+
78
+ @media (max-width: 576px) {
79
+ max-width: 90px;
80
+ }
81
+ `
82
+ export const DriverText = styled.span`
83
+ font-size: 12px;
84
+ color: ${props => props.theme.colors.lightGray};
85
+ ${({ small }) => small && css`
86
+ display: none;
87
+ `}
88
+ `
89
+
90
+ export const WrapperDriverImage = styled.div`
91
+ width: 45px;
92
+ height: 45px;
93
+ box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.1);
94
+ border-radius: 8px;
95
+ display: flex;
96
+
97
+ svg {
98
+ width: 100%;
99
+ height: 100%;
100
+ padding: 7px;
101
+ box-sizing: border-box;
102
+ border-radius: 50%;
103
+ }
104
+
105
+ ${({ small }) => small && css`
106
+ width: 24px;
107
+ height: 24px;
108
+ border-radius: 8px;
109
+ svg {
110
+ padding: 3px;
111
+ }
112
+ `}
113
+
114
+ ${props => props.theme?.rtl ? css`
115
+ margin-left: 8px;
116
+ ` : css`
117
+ margin-right: 8px;
118
+ `}
119
+ `
120
+ const DriverImageStyled = styled.div`
121
+ display: flex;
122
+ width: 100%;
123
+ height: 100%;
124
+ box-sizing: border-box;
125
+ position: relative;
126
+ background-repeat: no-repeat, repeat;
127
+ background-size: cover;
128
+ object-fit: cover;
129
+ background-position: center;
130
+ border-radius: 8px;
131
+ `
132
+ export const DriverImage = (props) => {
133
+ return (
134
+ <DriverImageStyled
135
+ {...props}
136
+ style={{ backgroundImage: `url(${props.bgimage})` }}
137
+ >
138
+ {props.children}
139
+ </DriverImageStyled>
140
+ )
141
+ }
142
+
143
+ export const PlaceholderTitle = styled(Option)`
144
+ padding: 10px;
145
+
146
+ ${({ isSingle }) => isSingle && css`
147
+ padding: 0px;
148
+ font-size: 14px;
149
+ `}
150
+ `