ordering-ui-admin-external 1.45.28 → 1.45.29

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.
@@ -32,8 +32,7 @@ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length)
32
32
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
33
33
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
34
34
  var DriverGroupSettingUI = function DriverGroupSettingUI(props) {
35
- var isDriverManager = props.isDriverManager,
36
- includedGroupIds = props.includedGroupIds,
35
+ var includedGroupIds = props.includedGroupIds,
37
36
  driversGroupsState = props.driversGroupsState,
38
37
  actionState = props.actionState,
39
38
  handleCheckboxClick = props.handleCheckboxClick,
@@ -104,7 +103,7 @@ var DriverGroupSettingUI = function DriverGroupSettingUI(props) {
104
103
  onSearch: function onSearch(val) {
105
104
  return setSearchValue(val);
106
105
  }
107
- }), isDriverManager && /*#__PURE__*/_react.default.createElement(_styles2.ButtonGroup, null, /*#__PURE__*/_react.default.createElement(_styles.Button, {
106
+ }), /*#__PURE__*/_react.default.createElement(_styles2.ButtonGroup, null, /*#__PURE__*/_react.default.createElement(_styles.Button, {
108
107
  type: "button",
109
108
  color: "secundaryDark",
110
109
  onClick: function onClick() {
@@ -116,7 +115,7 @@ var DriverGroupSettingUI = function DriverGroupSettingUI(props) {
116
115
  onClick: function onClick() {
117
116
  return handleBatchSelector(false);
118
117
  }
119
- }, t('SELECT_NONE', 'Select none'))), /*#__PURE__*/_react.default.createElement(_styles2.DriverGroupListContainer, null, driversGroupsState.loading ? _toConsumableArray(Array(10).keys()).map(function (i) {
118
+ }, t('SELECT_NONE', 'Select none'))), /*#__PURE__*/_react.default.createElement(_styles2.DriverGroupListContainer, null, driversGroupsState.loading ? _toConsumableArray(Array(8).keys()).map(function (i) {
120
119
  return /*#__PURE__*/_react.default.createElement(_styles2.DriverGroupItem, {
121
120
  key: i
122
121
  }, /*#__PURE__*/_react.default.createElement(_reactLoadingSkeleton.default, {
@@ -130,7 +129,8 @@ var DriverGroupSettingUI = function DriverGroupSettingUI(props) {
130
129
  key: group.id,
131
130
  onClick: function onClick() {
132
131
  return handleCheckboxClick(group.id);
133
- }
132
+ },
133
+ disabled: actionState.loading || driversGroupsState.loading
134
134
  }, /*#__PURE__*/_react.default.createElement(_styles2.CheckboxWrapper, {
135
135
  active: includedGroupIds.includes(group.id)
136
136
  }, includedGroupIds.includes(group.id) ? /*#__PURE__*/_react.default.createElement(_MdCheckBox.default, null) : /*#__PURE__*/_react.default.createElement(_MdCheckBoxOutlineBlank.default, null)), /*#__PURE__*/_react.default.createElement("span", null, group === null || group === void 0 ? void 0 : group.name));
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.DriverGroupListContainer = exports.DriverGroupItem = exports.Container = exports.CheckboxWrapper = exports.ButtonGroup = void 0;
8
8
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
9
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
9
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11;
10
10
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
11
11
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
12
  function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
@@ -16,17 +16,20 @@ var ButtonGroup = exports.ButtonGroup = _styledComponents.default.div(_templateO
16
16
  return (_props$theme = props.theme) !== null && _props$theme !== void 0 && _props$theme.rtl ? (0, _styledComponents.css)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n margin-left: 7px;\n "]))) : (0, _styledComponents.css)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n margin-right: 7px;\n "])));
17
17
  });
18
18
  var DriverGroupListContainer = exports.DriverGroupListContainer = _styledComponents.default.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n margin: 15px 0;\n"])));
19
- var DriverGroupItem = exports.DriverGroupItem = _styledComponents.default.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n border-bottom: 1px solid ", ";\n padding: 12px 0;\n cursor: pointer;\n\n > span {\n font-size: 14px;\n ", "\n }\n"])), function (props) {
19
+ var DriverGroupItem = exports.DriverGroupItem = _styledComponents.default.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n border-bottom: 1px solid ", ";\n padding: 12px 0;\n cursor: pointer;\n\n ", "\n\n > span {\n font-size: 14px;\n ", "\n }\n"])), function (props) {
20
20
  return props.theme.colors.borderColor;
21
+ }, function (_ref) {
22
+ var disabled = _ref.disabled;
23
+ return disabled && (0, _styledComponents.css)(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n cursor: not-allowed;\n opacity: 0.6;\n pointer-events: none;\n "])));
21
24
  }, function (props) {
22
25
  var _props$theme2;
23
- return (_props$theme2 = props.theme) !== null && _props$theme2 !== void 0 && _props$theme2.rtl ? (0, _styledComponents.css)(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n margin-right: 15px;\n "]))) : (0, _styledComponents.css)(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n margin-left: 15px;\n "])));
26
+ return (_props$theme2 = props.theme) !== null && _props$theme2 !== void 0 && _props$theme2.rtl ? (0, _styledComponents.css)(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n margin-right: 15px;\n "]))) : (0, _styledComponents.css)(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n margin-left: 15px;\n "])));
24
27
  });
25
- var CheckboxWrapper = exports.CheckboxWrapper = _styledComponents.default.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n svg {\n font-size: 20px;\n color: ", ";\n }\n\n ", "\n"])), function (props) {
28
+ var CheckboxWrapper = exports.CheckboxWrapper = _styledComponents.default.div(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n svg {\n font-size: 20px;\n color: ", ";\n }\n\n ", "\n"])), function (props) {
26
29
  return props.theme.colors.lightGray;
27
- }, function (_ref) {
28
- var active = _ref.active;
29
- return active && (0, _styledComponents.css)(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n svg {\n color: ", ";\n }\n "])), function (props) {
30
+ }, function (_ref2) {
31
+ var active = _ref2.active;
32
+ return active && (0, _styledComponents.css)(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n svg {\n color: ", ";\n }\n "])), function (props) {
30
33
  return props.theme.colors.primary;
31
34
  });
32
35
  });
@@ -17,6 +17,10 @@ var _FaUserAlt = _interopRequireDefault(require("@meronex/icons/fa/FaUserAlt"));
17
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
18
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
19
19
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
21
+ 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."); }
22
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
23
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
20
24
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
21
25
  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."); }
22
26
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
@@ -36,6 +40,7 @@ var DriversGroupGeneralForm = exports.DriversGroupGeneralForm = function Drivers
36
40
  handleNextClick = props.handleNextClick,
37
41
  selectedDriverManager = props.selectedDriverManager,
38
42
  handleSelectDriverManager = props.handleSelectDriverManager,
43
+ handleSelectAllManagers = props.handleSelectAllManagers,
39
44
  handleChangeMaxDistance = props.handleChangeMaxDistance,
40
45
  useAdvanced = props.useAdvanced,
41
46
  handleLogistic = props.handleLogistic;
@@ -56,6 +61,14 @@ var DriversGroupGeneralForm = exports.DriversGroupGeneralForm = function Drivers
56
61
  var _useSession = (0, _orderingComponentsAdminExternal.useSession)(),
57
62
  _useSession2 = _slicedToArray(_useSession, 1),
58
63
  user = _useSession2[0].user;
64
+ var _useState3 = (0, _react.useState)(null),
65
+ _useState4 = _slicedToArray(_useState3, 2),
66
+ searchManagerValue = _useState4[0],
67
+ setSearchManagerValue = _useState4[1];
68
+ var _useState5 = (0, _react.useState)([]),
69
+ _useState6 = _slicedToArray(_useState5, 2),
70
+ filteredManagers = _useState6[0],
71
+ setFilteredManagers = _useState6[1];
59
72
  var typeOptions = [{
60
73
  value: 0,
61
74
  content: t('IN_HOUSE_DRIVERS', 'In house drivers')
@@ -132,6 +145,18 @@ var DriversGroupGeneralForm = exports.DriversGroupGeneralForm = function Drivers
132
145
  });
133
146
  }
134
147
  }, [errors]);
148
+ (0, _react.useEffect)(function () {
149
+ var _filteredManagers = [];
150
+ if (searchManagerValue) {
151
+ _filteredManagers = driversManagers.filter(function (manager) {
152
+ var _manager$name, _manager$email;
153
+ return (manager === null || manager === void 0 || (_manager$name = manager.name) === null || _manager$name === void 0 ? void 0 : _manager$name.toLowerCase().includes(searchManagerValue === null || searchManagerValue === void 0 ? void 0 : searchManagerValue.toLowerCase())) || (manager === null || manager === void 0 || (_manager$email = manager.email) === null || _manager$email === void 0 ? void 0 : _manager$email.toLowerCase().includes(searchManagerValue === null || searchManagerValue === void 0 ? void 0 : searchManagerValue.toLowerCase()));
154
+ });
155
+ } else {
156
+ _filteredManagers = _toConsumableArray(driversManagers);
157
+ }
158
+ setFilteredManagers(_filteredManagers);
159
+ }, [searchManagerValue, driversManagers]);
135
160
  return /*#__PURE__*/_react.default.createElement(_styles2.Container, {
136
161
  "data-tour": "tour_fill_group",
137
162
  onSubmit: handleSubmit(onSubmit),
@@ -157,7 +182,27 @@ var DriversGroupGeneralForm = exports.DriversGroupGeneralForm = function Drivers
157
182
  },
158
183
  placeholder: t('WITHOUT_RESTRICTIONS', 'Without restrictions'),
159
184
  autoComplete: "off"
160
- })), (user === null || user === void 0 ? void 0 : user.level) !== 5 && /*#__PURE__*/_react.default.createElement(_styles2.InputWrapper, null, /*#__PURE__*/_react.default.createElement("label", null, t('DRIVER_MANAGER', 'Driver manager')), /*#__PURE__*/_react.default.createElement(_styles2.DriverManagerContainer, null, driversManagers.map(function (driverManager) {
185
+ })), (user === null || user === void 0 ? void 0 : user.level) !== 5 && /*#__PURE__*/_react.default.createElement(_styles2.InputWrapper, null, /*#__PURE__*/_react.default.createElement("label", null, t('DRIVER_MANAGER', 'Driver manager')), /*#__PURE__*/_react.default.createElement(_styles2.SearchBarWrapper, null, /*#__PURE__*/_react.default.createElement(_Shared.SearchBar, {
186
+ placeholder: t('SEARCH', 'Search'),
187
+ isCustomLayout: true,
188
+ lazyLoad: true,
189
+ search: searchManagerValue,
190
+ onSearch: function onSearch(val) {
191
+ return setSearchManagerValue(val);
192
+ }
193
+ })), /*#__PURE__*/_react.default.createElement(_styles2.ButtonGroup, null, /*#__PURE__*/_react.default.createElement(_styles.Button, {
194
+ type: "button",
195
+ color: "secundaryDark",
196
+ onClick: function onClick() {
197
+ return handleSelectAllManagers(true);
198
+ }
199
+ }, t('SELECT_ALL', 'Select all')), /*#__PURE__*/_react.default.createElement(_styles.Button, {
200
+ type: "button",
201
+ color: "secundaryDark",
202
+ onClick: function onClick() {
203
+ return handleSelectAllManagers(false);
204
+ }
205
+ }, t('SELECT_NONE', 'Select none'))), /*#__PURE__*/_react.default.createElement(_styles2.DriverManagerContainer, null, filteredManagers.map(function (driverManager) {
161
206
  return /*#__PURE__*/_react.default.createElement(_styles2.DriverManagerWrapper, {
162
207
  key: driverManager.id
163
208
  }, /*#__PURE__*/_react.default.createElement(_styles.Checkbox, {
@@ -4,10 +4,10 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.WrapperImage = exports.ManagerInfoContainer = exports.InputWrapper = exports.Image = exports.DriverManagerWrapper = exports.DriverManagerContainer = exports.Container = exports.CheckboxContainer = void 0;
7
+ exports.WrapperImage = exports.SearchBarWrapper = exports.ManagerInfoContainer = exports.InputWrapper = exports.Image = exports.DriverManagerWrapper = exports.DriverManagerContainer = exports.Container = exports.CheckboxContainer = exports.ButtonGroup = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
10
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13;
10
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15;
11
11
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
12
12
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -45,4 +45,6 @@ var Image = exports.Image = function Image(props) {
45
45
  var CheckboxContainer = exports.CheckboxContainer = _styledComponents.default.div(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n margin: 0 0 29px 0;\n p {\n font-size: 14px;\n margin: 0px;\n ", "\n }\n"])), function (props) {
46
46
  var _props$theme;
47
47
  return (_props$theme = props.theme) !== null && _props$theme !== void 0 && _props$theme.rtl ? (0, _styledComponents.css)(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n padding-right: 10px;\n "]))) : (0, _styledComponents.css)(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n padding-left: 10px;\n "])));
48
- });
48
+ });
49
+ var SearchBarWrapper = exports.SearchBarWrapper = _styledComponents.default.div(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n margin-bottom: 15px;\n width: 100%;\n"])));
50
+ var ButtonGroup = exports.ButtonGroup = _styledComponents.default.div(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n display: flex;\n gap: 10px;\n margin-bottom: 15px;\n"])));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ordering-ui-admin-external",
3
- "version": "1.45.28",
3
+ "version": "1.45.29",
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.43.74",
86
+ "ordering-components-admin-external": "1.43.75",
87
87
  "polished": "^3.6.7",
88
88
  "prop-types": "^15.7.2",
89
89
  "react-big-calendar": "^1.4.2",
@@ -16,7 +16,6 @@ import {
16
16
 
17
17
  const DriverGroupSettingUI = (props) => {
18
18
  const {
19
- isDriverManager,
20
19
  includedGroupIds,
21
20
  driversGroupsState,
22
21
  actionState,
@@ -69,51 +68,54 @@ const DriverGroupSettingUI = (props) => {
69
68
  search={searchValue}
70
69
  onSearch={val => setSearchValue(val)}
71
70
  />
72
- {isDriverManager && (
73
- <ButtonGroup>
74
- <Button
75
- type='button'
76
- color='secundaryDark'
77
- onClick={() => (handleBatchSelector(true))}
78
- >
79
- {t('SELECT_ALL', 'Select all')}
80
- </Button>
81
- <Button
82
- type='button'
83
- color='secundaryDark'
84
- onClick={() => (handleBatchSelector(false))}
85
- >
86
- {t('SELECT_NONE', 'Select none')}
87
- </Button>
88
- </ButtonGroup>
89
- )}
71
+ <ButtonGroup>
72
+ <Button
73
+ type='button'
74
+ color='secundaryDark'
75
+ onClick={() => (handleBatchSelector(true))}
76
+ >
77
+ {t('SELECT_ALL', 'Select all')}
78
+ </Button>
79
+ <Button
80
+ type='button'
81
+ color='secundaryDark'
82
+ onClick={() => (handleBatchSelector(false))}
83
+ >
84
+ {t('SELECT_NONE', 'Select none')}
85
+ </Button>
86
+ </ButtonGroup>
90
87
  <DriverGroupListContainer>
91
- {driversGroupsState.loading ? (
92
- [...Array(10).keys()].map(i => (
93
- <DriverGroupItem key={i}>
94
- <Skeleton width={20} height={20} />
95
- <Skeleton width={100} />
96
- </DriverGroupItem>
97
- ))
98
- ) : (
99
- filteredGroups.map(group => (
100
- <DriverGroupItem
101
- key={group.id}
102
- onClick={() => handleCheckboxClick(group.id)}
103
- >
104
- <CheckboxWrapper
105
- active={includedGroupIds.includes(group.id)}
88
+ {driversGroupsState.loading
89
+ ? (
90
+ [...Array(8).keys()].map(i => (
91
+ <DriverGroupItem key={i}>
92
+ <Skeleton width={20} height={20} />
93
+ <Skeleton width={100} />
94
+ </DriverGroupItem>
95
+ ))
96
+ )
97
+ : (
98
+ filteredGroups.map(group => (
99
+ <DriverGroupItem
100
+ key={group.id}
101
+ onClick={() => handleCheckboxClick(group.id)}
102
+ disabled={actionState.loading || driversGroupsState.loading}
106
103
  >
107
- {includedGroupIds.includes(group.id) ? (
108
- <MdCheckBox />
109
- ) : (
110
- <MdCheckBoxOutlineBlank />
111
- )}
112
- </CheckboxWrapper>
113
- <span>{group?.name}</span>
114
- </DriverGroupItem>
115
- ))
116
- )}
104
+ <CheckboxWrapper
105
+ active={includedGroupIds.includes(group.id)}
106
+ >
107
+ {includedGroupIds.includes(group.id)
108
+ ? (
109
+ <MdCheckBox />
110
+ )
111
+ : (
112
+ <MdCheckBoxOutlineBlank />
113
+ )}
114
+ </CheckboxWrapper>
115
+ <span>{group?.name}</span>
116
+ </DriverGroupItem>
117
+ ))
118
+ )}
117
119
  </DriverGroupListContainer>
118
120
  <Alert
119
121
  title={t('WEB_APPNAME', 'Ordering')}
@@ -31,6 +31,12 @@ export const DriverGroupItem = styled.div`
31
31
  padding: 12px 0;
32
32
  cursor: pointer;
33
33
 
34
+ ${({ disabled }) => disabled && css`
35
+ cursor: not-allowed;
36
+ opacity: 0.6;
37
+ pointer-events: none;
38
+ `}
39
+
34
40
  > span {
35
41
  font-size: 14px;
36
42
  ${props => props.theme?.rtl ? css`
@@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react'
2
2
  import { useLanguage, useSession } from 'ordering-components-admin-external'
3
3
  import { useForm } from 'react-hook-form'
4
4
  import { Input, Button, SecondSelect as DefaultSelect, Checkbox } from '../../../styles'
5
- import { Alert } from '../../Shared'
5
+ import { Alert, SearchBar } from '../../Shared'
6
6
  import { DriversGroupDrivers } from '../DriversGroupDrivers'
7
7
  import { DriversGroupCompanies } from '../DriversGroupCompanies'
8
8
 
@@ -14,7 +14,9 @@ import {
14
14
  Image,
15
15
  InputWrapper,
16
16
  ManagerInfoContainer,
17
- WrapperImage
17
+ WrapperImage,
18
+ SearchBarWrapper,
19
+ ButtonGroup
18
20
  } from './styles'
19
21
  import FaUserAlt from '@meronex/icons/fa/FaUserAlt'
20
22
 
@@ -31,6 +33,7 @@ export const DriversGroupGeneralForm = (props) => {
31
33
  handleNextClick,
32
34
  selectedDriverManager,
33
35
  handleSelectDriverManager,
36
+ handleSelectAllManagers,
34
37
  handleChangeMaxDistance,
35
38
  useAdvanced,
36
39
  handleLogistic
@@ -40,6 +43,8 @@ export const DriversGroupGeneralForm = (props) => {
40
43
  const { handleSubmit, register, errors } = useForm()
41
44
  const [alertState, setAlertState] = useState({ open: false, content: [] })
42
45
  const [{ user }] = useSession()
46
+ const [searchManagerValue, setSearchManagerValue] = useState(null)
47
+ const [filteredManagers, setFilteredManagers] = useState([])
43
48
 
44
49
  const typeOptions = [
45
50
  { value: 0, content: t('IN_HOUSE_DRIVERS', 'In house drivers') },
@@ -110,6 +115,22 @@ export const DriversGroupGeneralForm = (props) => {
110
115
  }
111
116
  }, [errors])
112
117
 
118
+ useEffect(() => {
119
+ let _filteredManagers = []
120
+ if (searchManagerValue) {
121
+ _filteredManagers = driversManagers
122
+ .filter(
123
+ manager => (
124
+ manager?.name?.toLowerCase().includes(searchManagerValue?.toLowerCase()) ||
125
+ manager?.email?.toLowerCase().includes(searchManagerValue?.toLowerCase())
126
+ )
127
+ )
128
+ } else {
129
+ _filteredManagers = [...driversManagers]
130
+ }
131
+ setFilteredManagers(_filteredManagers)
132
+ }, [searchManagerValue, driversManagers])
133
+
113
134
  return (
114
135
  <Container
115
136
  data-tour='tour_fill_group'
@@ -145,8 +166,33 @@ export const DriversGroupGeneralForm = (props) => {
145
166
  {user?.level !== 5 && (
146
167
  <InputWrapper>
147
168
  <label>{t('DRIVER_MANAGER', 'Driver manager')}</label>
169
+ <SearchBarWrapper>
170
+ <SearchBar
171
+ placeholder={t('SEARCH', 'Search')}
172
+ isCustomLayout
173
+ lazyLoad
174
+ search={searchManagerValue}
175
+ onSearch={val => setSearchManagerValue(val)}
176
+ />
177
+ </SearchBarWrapper>
178
+ <ButtonGroup>
179
+ <Button
180
+ type='button'
181
+ color='secundaryDark'
182
+ onClick={() => handleSelectAllManagers(true)}
183
+ >
184
+ {t('SELECT_ALL', 'Select all')}
185
+ </Button>
186
+ <Button
187
+ type='button'
188
+ color='secundaryDark'
189
+ onClick={() => handleSelectAllManagers(false)}
190
+ >
191
+ {t('SELECT_NONE', 'Select none')}
192
+ </Button>
193
+ </ButtonGroup>
148
194
  <DriverManagerContainer>
149
- {driversManagers.map(driverManager => (
195
+ {filteredManagers.map(driverManager => (
150
196
  <DriverManagerWrapper
151
197
  key={driverManager.id}
152
198
  >
@@ -142,3 +142,13 @@ export const CheckboxContainer = styled.div`
142
142
  `}
143
143
  }
144
144
  `
145
+ export const SearchBarWrapper = styled.div`
146
+ margin-bottom: 15px;
147
+ width: 100%;
148
+ `
149
+
150
+ export const ButtonGroup = styled.div`
151
+ display: flex;
152
+ gap: 10px;
153
+ margin-bottom: 15px;
154
+ `