thm-p3-configurator 0.0.460 → 0.0.462

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 (36) hide show
  1. package/dist/public/assets/images/logo-th-icon.png +0 -0
  2. package/dist/public/assets/images/logo-th-primary.png +0 -0
  3. package/dist/public/assets/images/logo-thl-icon.png +0 -0
  4. package/dist/public/assets/images/logo-thl-primary.png +0 -0
  5. package/dist/public/assets/images/logo-wb-icon.png +0 -0
  6. package/dist/public/assets/images/logo-wb-primary.png +0 -0
  7. package/dist/src/shared/__api__/queries.js +7 -5
  8. package/dist/src/shared/__components__/Header.js +47 -3
  9. package/dist/src/shared/__components__/Navbar.js +5 -2
  10. package/dist/src/shared/__components__/ProductCard/ProductCardPortalNote.js +61 -0
  11. package/dist/src/shared/__components__/ProductCard/index.js +5 -1
  12. package/dist/src/shared/__components__/Spinners/FullPageSpinner.js +4 -1
  13. package/dist/src/shared/__components__/internal/InternalCustomerDetailsForm.js +8 -3
  14. package/dist/src/shared/__constants__/__tests__/index.test.js +15 -0
  15. package/dist/src/shared/__constants__/index.js +48 -7
  16. package/dist/src/shared/__containers__/ExtraProductsOverview.js +6 -1
  17. package/dist/src/shared/__containers__/internal/InternalBranchSelectorModal.js +118 -35
  18. package/dist/src/shared/__containers__/internal/OrderTypeSelectorModal.js +8 -0
  19. package/dist/src/shared/__context__/OrderSessionContext.js +2 -0
  20. package/dist/src/shared/__helpers__/__tests__/resetConfiguratorOrderCache.test.js +39 -0
  21. package/dist/src/shared/__helpers__/__tests__/singleOrderBranchSelector.test.js +126 -0
  22. package/dist/src/shared/__helpers__/__tests__/singleOrderWebshop.test.js +17 -0
  23. package/dist/src/shared/__helpers__/index.js +30 -1
  24. package/dist/src/shared/__helpers__/resetConfiguratorOrderCache.js +22 -0
  25. package/dist/src/shared/__helpers__/singleOrderArticles.js +27 -15
  26. package/dist/src/shared/__helpers__/singleOrderBranchSelector.js +112 -2
  27. package/dist/src/shared/__helpers__/singleOrderCustomerDetails.js +1 -1
  28. package/dist/src/shared/__helpers__/singleOrderWebshop.js +46 -0
  29. package/dist/src/shared/__hooks__/useBranchTheme.js +12 -1
  30. package/dist/src/shared/__pages__/internal/InternalLicensePlatePage.js +26 -10
  31. package/dist/src/shared/__pages__/internal/InternalManualSelectionPage.js +8 -1
  32. package/dist/src/shared/__pages__/internal/InternalSingleOrderPage.js +21 -8
  33. package/dist/src/shared/__style__/_variables-external.scss +6 -0
  34. package/dist/src/shared/__style__/_variables.scss +6 -0
  35. package/dist/src/shared/__style__/configurator/_configurator.scss +100 -0
  36. package/package.json +1 -1
@@ -541,7 +541,8 @@ exports.useSingleOrderCart = useSingleOrderCart;
541
541
  const useOrderDataQuery = exports.useOrderDataQuery = function useOrderDataQuery() {
542
542
  let orderParameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
543
543
  const [{
544
- existingDossierId
544
+ existingDossierId,
545
+ singleOrderFlowRevision
545
546
  }] = (0, _OrderSessionContext.useOrderSession)();
546
547
  const pricingFormula = (0, _usePricingFormula.usePricingFormula)();
547
548
  const normalizedOrderParams = (0, _queryKeyFactory.normalizeOrderParams)(_objectSpread(_objectSpread({}, orderParameters), {}, {
@@ -558,7 +559,7 @@ const useOrderDataQuery = exports.useOrderDataQuery = function useOrderDataQuery
558
559
  initialized
559
560
  } = (0, _AuthSessionContext.useAuthSession)();
560
561
  const isSessionContextReady = (0, _useSessionContextReady.useSessionContextReady)();
561
- const orderQueryKey = APP_CONFIG.internal ? [...(0, _queryKeyFactory.getOrderQueryKey)(normalizedOrderParams), initialized, authenticated, isSessionContextReady] : (0, _queryKeyFactory.getOrderQueryKey)(normalizedOrderParams);
562
+ const orderQueryKey = APP_CONFIG.internal ? [...(0, _queryKeyFactory.getOrderQueryKey)(normalizedOrderParams), initialized, authenticated, isSessionContextReady, singleOrderFlowRevision] : (0, _queryKeyFactory.getOrderQueryKey)(normalizedOrderParams);
562
563
  const serializedOrderParams = (0, _queryKeyFactory.serializeOrderParams)(normalizedOrderParams);
563
564
  const hasOrderInput = (licensePlate === null || licensePlate === void 0 ? void 0 : licensePlate.length) > 5 || !!(model !== null && model !== void 0 && model.length);
564
565
  const orderQuery = (0, _reactQuery.useQuery)(orderQueryKey, {
@@ -704,6 +705,7 @@ const useQuestionsQuery = exports.useQuestionsQuery = function useQuestionsQuery
704
705
  const {
705
706
  orderData,
706
707
  isFetchingOrder,
708
+ isLoadingOrder,
707
709
  isOrderError,
708
710
  orderError
709
711
  } = useOrderDataQuery(normalizedQuestionParams);
@@ -719,7 +721,7 @@ const useQuestionsQuery = exports.useQuestionsQuery = function useQuestionsQuery
719
721
  }, [orderData === null || orderData === void 0 || (_orderData$executionA4 = orderData.executionAnswerOptions) === null || _orderData$executionA4 === void 0 ? void 0 : _orderData$executionA4.execution2AnswerOptions]);
720
722
  const durationQuestion = (0, _react.useMemo)(() => (0, _helpers__.parseArrayToInputOptions)(orderData === null || orderData === void 0 ? void 0 : orderData.durationAnswerOptions), [orderData === null || orderData === void 0 ? void 0 : orderData.durationAnswerOptions]);
721
723
  return {
722
- isLoadingQuestions: isFetchingOrder,
724
+ isLoadingQuestions: isFetchingOrder || isLoadingOrder,
723
725
  isQuestionsError: isOrderError,
724
726
  execution1Answer: orderData === null || orderData === void 0 || (_orderData$answers = orderData.answers) === null || _orderData$answers === void 0 ? void 0 : _orderData$answers.execution1,
725
727
  execution2Answer: orderData === null || orderData === void 0 || (_orderData$answers2 = orderData.answers) === null || _orderData$answers2 === void 0 ? void 0 : _orderData$answers2.execution2,
@@ -733,14 +735,14 @@ const useQuestionsQuery = exports.useQuestionsQuery = function useQuestionsQuery
733
735
  };
734
736
  };
735
737
  const useSingleOrderBranchesQuery = branchesParams => {
736
- var _branchesParams;
738
+ var _branchesParams, _branchesParams2;
737
739
  branchesParams = _objectSpread(_objectSpread({}, branchesParams), {}, {
738
740
  type: 'single-order'
739
741
  });
740
742
  const branchesParamsString = new URLSearchParams((0, _helpers__.removeNullishProps)(branchesParams)).toString();
741
743
  const branchesQuery = (0, _reactQuery.useQuery)(['single-order-branches', branchesParamsString], {
742
744
  queryFn: () => _authenticatedProxyApi.authenticatedProxyApi.getSingleOrderBranches(branchesParamsString).then(res => res.data),
743
- enabled: !!((_branchesParams = branchesParams) !== null && _branchesParams !== void 0 && _branchesParams.branchTypeId)
745
+ enabled: !!((_branchesParams = branchesParams) !== null && _branchesParams !== void 0 && _branchesParams.branchTypeId) || (0, _constants__.isLooseOrderOnlyFormula)((_branchesParams2 = branchesParams) === null || _branchesParams2 === void 0 ? void 0 : _branchesParams2.formula)
744
746
  });
745
747
  return {
746
748
  isLoadingSingleOrderBranches: branchesQuery.isLoading,
@@ -9,6 +9,9 @@ var _logoPrimaryIcon = _interopRequireDefault(require("../../../public/assets/im
9
9
  var _logoThcWhite = _interopRequireDefault(require("../../../public/assets/images/logo-thc-white.svg"));
10
10
  var _logoTmgPrimary = _interopRequireDefault(require("../../../public/assets/images/logo-tmg-primary.png"));
11
11
  var _tmLogo = _interopRequireDefault(require("../../../public/assets/images/tm-logo.png"));
12
+ var _logoWbPrimary = _interopRequireDefault(require("../../../public/assets/images/logo-wb-primary.png"));
13
+ var _logoThlPrimary = _interopRequireDefault(require("../../../public/assets/images/logo-thl-primary.png"));
14
+ var _logoThPrimary = _interopRequireDefault(require("../../../public/assets/images/logo-th-primary.png"));
12
15
  var _constants__ = require("../__constants__");
13
16
  var _helpers__ = require("../__helpers__");
14
17
  var _useBranchTheme = require("../__hooks__/useBranchTheme");
@@ -17,12 +20,53 @@ function _interopRequireDefault(e) {
17
20
  default: e
18
21
  };
19
22
  }
23
+ const getHeaderLogo = theme => {
24
+ switch (theme) {
25
+ case _constants__.BRANCH_THEME_BY_FORMULA.TowMotive:
26
+ return {
27
+ src: _tmLogo.default,
28
+ alt: 'TowMotive'
29
+ };
30
+ case _constants__.BRANCH_THEME_BY_FORMULA.Trekhaakcentrum:
31
+ return {
32
+ src: _logoThcWhite.default,
33
+ alt: 'Trekhaakcentrum'
34
+ };
35
+ case _constants__.BRANCH_THEME_BY_FORMULA.TowMotiveGroup:
36
+ return {
37
+ src: _logoTmgPrimary.default,
38
+ alt: 'TowMotive Group'
39
+ };
40
+ case _constants__.BRANCH_THEME_BY_FORMULA.WestfaliaBenelux:
41
+ return {
42
+ src: _logoWbPrimary.default,
43
+ alt: 'Westfalia Benelux'
44
+ };
45
+ case _constants__.BRANCH_THEME_BY_FORMULA.Trekhaakland:
46
+ return {
47
+ src: _logoThlPrimary.default,
48
+ alt: 'Trekhaakland'
49
+ };
50
+ case _constants__.BRANCH_THEME_BY_FORMULA.Trekhaken:
51
+ return {
52
+ src: _logoThPrimary.default,
53
+ alt: 'Trekhaken.nl'
54
+ };
55
+ default:
56
+ return {
57
+ src: _logoPrimaryIcon.default,
58
+ alt: 'Trekhaak Montage'
59
+ };
60
+ }
61
+ };
20
62
  const Header = _ref => {
21
63
  let {
22
64
  title,
23
65
  subtitle = ''
24
66
  } = _ref;
25
67
  const theme = (0, _useBranchTheme.useBranchTheme)();
68
+ const headerLogo = getHeaderLogo(theme);
69
+ const isWebshopTheme = theme === _constants__.BRANCH_THEME_BY_FORMULA.WestfaliaBenelux || theme === _constants__.BRANCH_THEME_BY_FORMULA.Trekhaakland || theme === _constants__.BRANCH_THEME_BY_FORMULA.Trekhaken;
26
70
  return /*#__PURE__*/_react.default.createElement("div", {
27
71
  className: (0, _helpers__.withStyle)("hero hero--offset")
28
72
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -32,9 +76,9 @@ const Header = _ref => {
32
76
  }, /*#__PURE__*/_react.default.createElement("div", {
33
77
  className: (0, _helpers__.withStyle)('col hero__logo-container')
34
78
  }, /*#__PURE__*/_react.default.createElement("img", {
35
- className: (0, _helpers__.withStyle)("hero__logo ".concat(theme === _constants__.BRANCH_THEME_BY_FORMULA.TowMotiveGroup ? 'hero__logo--tmg' : '')),
36
- src: theme === _constants__.BRANCH_THEME_BY_FORMULA.TowMotive ? _tmLogo.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.Trekhaakcentrum ? _logoThcWhite.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.TowMotiveGroup ? _logoTmgPrimary.default : _logoPrimaryIcon.default,
37
- alt: "Trekhaak Montage"
79
+ className: (0, _helpers__.withStyle)("hero__logo ".concat(theme === _constants__.BRANCH_THEME_BY_FORMULA.TowMotiveGroup ? 'hero__logo--tmg' : '', " ").concat(isWebshopTheme ? 'hero__logo--webshop' : '')),
80
+ src: headerLogo.src,
81
+ alt: headerLogo.alt
38
82
  }), /*#__PURE__*/_react.default.createElement("div", {
39
83
  className: (0, _helpers__.withStyle)('hero__inner d-none d-lg-block')
40
84
  }, /*#__PURE__*/_react.default.createElement("h2", null, (title === null || title === void 0 ? void 0 : title.length) > 0 ? title : 'Trekhaak offerte opstellen'), (subtitle === null || subtitle === void 0 ? void 0 : subtitle.length) > 0 && /*#__PURE__*/_react.default.createElement("p", {
@@ -9,6 +9,9 @@ var _logoThcWhite = _interopRequireDefault(require("../../../public/assets/image
9
9
  var _logoTmgPrimary = _interopRequireDefault(require("../../../public/assets/images/logo-tmg-primary.png"));
10
10
  var _logoWhite = _interopRequireDefault(require("../../../public/assets/images/logo-white.svg"));
11
11
  var _tmLogo = _interopRequireDefault(require("../../../public/assets/images/tm-logo.png"));
12
+ var _logoWbPrimary = _interopRequireDefault(require("../../../public/assets/images/logo-wb-primary.png"));
13
+ var _logoThlPrimary = _interopRequireDefault(require("../../../public/assets/images/logo-thl-primary.png"));
14
+ var _logoThPrimary = _interopRequireDefault(require("../../../public/assets/images/logo-th-primary.png"));
12
15
  var _constants__ = require("../__constants__");
13
16
  var _helpers__ = require("../__helpers__");
14
17
  var _Datalayer = require("../__services__/Datalayer");
@@ -40,8 +43,8 @@ const Navbar = _ref => {
40
43
  })
41
44
  }, /*#__PURE__*/_react.default.createElement("img", {
42
45
  className: (0, _helpers__.withStyle)('img-fluid'),
43
- src: theme === _constants__.BRANCH_THEME_BY_FORMULA.TowMotive ? _tmLogo.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.Trekhaakcentrum ? _logoThcWhite.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.TowMotiveGroup ? _logoTmgPrimary.default : _logoWhite.default,
44
- alt: "Trekhaakmontage"
46
+ src: theme === _constants__.BRANCH_THEME_BY_FORMULA.TowMotive ? _tmLogo.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.Trekhaakcentrum ? _logoThcWhite.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.TowMotiveGroup ? _logoTmgPrimary.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.WestfaliaBenelux ? _logoWbPrimary.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.Trekhaakland ? _logoThlPrimary.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.Trekhaken ? _logoThPrimary.default : _logoWhite.default,
47
+ alt: "Logo"
45
48
  })), /*#__PURE__*/_react.default.createElement("div", {
46
49
  className: (0, _helpers__.withStyle)('navbar__phone ms-10 d-none d-sm-flex')
47
50
  }, /*#__PURE__*/_react.default.createElement("p", {
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.string.trim.js");
4
+ require("core-js/modules/esnext.iterator.constructor.js");
5
+ require("core-js/modules/esnext.iterator.filter.js");
6
+ require("core-js/modules/esnext.iterator.map.js");
7
+ require("core-js/modules/esnext.iterator.some.js");
8
+ Object.defineProperty(exports, "__esModule", {
9
+ value: true
10
+ });
11
+ exports.default = void 0;
12
+ require("core-js/modules/es.string.trim.js");
13
+ require("core-js/modules/esnext.iterator.constructor.js");
14
+ require("core-js/modules/esnext.iterator.filter.js");
15
+ require("core-js/modules/esnext.iterator.map.js");
16
+ require("core-js/modules/esnext.iterator.some.js");
17
+ var _react = _interopRequireDefault(require("react"));
18
+ var _helpers__ = require("../../__helpers__");
19
+ function _interopRequireDefault(e) {
20
+ return e && e.__esModule ? e : {
21
+ default: e
22
+ };
23
+ }
24
+ /**
25
+ * @description Partner-portal-only note on an extra article (Hyper
26
+ * `textPartnerPortalConfigurator`). Hyper sends a plain string or Quill ops;
27
+ * bold, italic, underline and colour are kept, and it is never truncated.
28
+ */
29
+ const ProductCardPortalNote = _ref => {
30
+ let {
31
+ note
32
+ } = _ref;
33
+ const ops = Array.isArray(note === null || note === void 0 ? void 0 : note.ops) ? note.ops : typeof note === 'string' ? [{
34
+ insert: note
35
+ }] : [];
36
+ const parts = ops.filter(op => typeof (op === null || op === void 0 ? void 0 : op.insert) === 'string' && op.insert.length);
37
+ if (!parts.some(op => op.insert.trim())) {
38
+ return null;
39
+ }
40
+ return /*#__PURE__*/_react.default.createElement("p", {
41
+ className: (0, _helpers__.withStyle)('mb-2'),
42
+ style: {
43
+ whiteSpace: 'pre-line'
44
+ }
45
+ }, parts.map((_ref2, index) => {
46
+ let {
47
+ insert,
48
+ attributes = {}
49
+ } = _ref2;
50
+ const content = attributes.bold ? /*#__PURE__*/_react.default.createElement("strong", null, insert) : insert;
51
+ return /*#__PURE__*/_react.default.createElement("span", {
52
+ key: index,
53
+ style: {
54
+ color: attributes.color,
55
+ fontStyle: attributes.italic ? 'italic' : undefined,
56
+ textDecoration: attributes.underline ? 'underline' : undefined
57
+ }
58
+ }, content);
59
+ }));
60
+ };
61
+ var _default = exports.default = ProductCardPortalNote;
@@ -25,6 +25,7 @@ var _ProductCardCheckbox = _interopRequireDefault(require("./ProductCardCheckbox
25
25
  var _ProductCardDescription = _interopRequireDefault(require("./ProductCardDescription"));
26
26
  var _ProductCardDiscountAlert = _interopRequireDefault(require("./ProductCardDiscountAlert"));
27
27
  var _ProductCardImage = _interopRequireDefault(require("./ProductCardImage"));
28
+ var _ProductCardPortalNote = _interopRequireDefault(require("./ProductCardPortalNote"));
28
29
  var _ProductCardPrice = _interopRequireDefault(require("./ProductCardPrice"));
29
30
  var _ProductCardRibbon = _interopRequireDefault(require("./ProductCardRibbon"));
30
31
  var _ProductCardSpecifications = _interopRequireDefault(require("./ProductCardSpecifications"));
@@ -129,7 +130,8 @@ const ProductCard = _ref => {
129
130
  isTmg = false,
130
131
  isBoardComputer = false,
131
132
  productSubgroup,
132
- productWebsiteTitle
133
+ productWebsiteTitle,
134
+ productPortalNote = null
133
135
  } = _ref;
134
136
  const [isSelected, setIsSelected] = (0, _react.useState)(defaultSelected);
135
137
  const {
@@ -226,6 +228,8 @@ const ProductCard = _ref => {
226
228
  }), /*#__PURE__*/_react.default.createElement(_ProductCardDescription.default, {
227
229
  description: productDescription,
228
230
  onDescriptionToggle: onDescriptionToggle
231
+ }), productPortalNote && /*#__PURE__*/_react.default.createElement(_ProductCardPortalNote.default, {
232
+ note: productPortalNote
229
233
  })), /*#__PURE__*/_react.default.createElement("div", {
230
234
  className: (0, _helpers__.withStyle)('card-footer pt-2 col-12 col-md-8 col-xxl-6 pb-0 justify-content-end')
231
235
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -13,6 +13,9 @@ var _logoThcWhite = _interopRequireDefault(require("../../../../public/assets/im
13
13
  var _logoTmgPrimary = _interopRequireDefault(require("../../../../public/assets/images/logo-tmg-primary.png"));
14
14
  var _tmLogo = _interopRequireDefault(require("../../../../public/assets/images/tm-logo.png"));
15
15
  var _logoWhite = _interopRequireDefault(require("../../../../public/assets/images/logo-white.png"));
16
+ var _logoWbPrimary = _interopRequireDefault(require("../../../../public/assets/images/logo-wb-primary.png"));
17
+ var _logoThlPrimary = _interopRequireDefault(require("../../../../public/assets/images/logo-thl-primary.png"));
18
+ var _logoThPrimary = _interopRequireDefault(require("../../../../public/assets/images/logo-th-primary.png"));
16
19
  var _constants__ = require("../../__constants__");
17
20
  var _helpers__ = require("../../__helpers__");
18
21
  var _useBranchTheme = require("../../__hooks__/useBranchTheme");
@@ -66,7 +69,7 @@ const FullPageSpinner = _ref => {
66
69
  className: "fas fa-cog fa-spin"
67
70
  }), ' '), children ? children : /*#__PURE__*/_react.default.createElement("img", {
68
71
  className: (0, _helpers__.withStyle)('loader__logo'),
69
- src: theme === _constants__.BRANCH_THEME_BY_FORMULA.TowMotive ? _tmLogo.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.Trekhaakcentrum ? _logoThcWhite.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.TowMotiveGroup ? _logoTmgPrimary.default : _logoWhite.default,
72
+ src: theme === _constants__.BRANCH_THEME_BY_FORMULA.TowMotive ? _tmLogo.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.Trekhaakcentrum ? _logoThcWhite.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.TowMotiveGroup ? _logoTmgPrimary.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.WestfaliaBenelux ? _logoWbPrimary.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.Trekhaakland ? _logoThlPrimary.default : theme === _constants__.BRANCH_THEME_BY_FORMULA.Trekhaken ? _logoThPrimary.default : _logoWhite.default,
70
73
  alt: "Trekhaak Montage - Configurator"
71
74
  }));
72
75
  };
@@ -32,6 +32,7 @@ var _queries = require("../../__api__/queries");
32
32
  var _constants__ = require("../../__constants__");
33
33
  var _AuthSessionContext = require("../../__context__/AuthSessionContext");
34
34
  var _OrderSessionContext = require("../../__context__/OrderSessionContext");
35
+ var _FormulaContext = require("../../__context__/FormulaContext");
35
36
  var _openingHours = require("../../__helpers__/openingHours");
36
37
  var _helpers__ = require("../../__helpers__");
37
38
  var _countryOptions = require("../../__helpers__/countryOptions");
@@ -162,7 +163,7 @@ const customerDetailsFormSchema = (0, _yup.object)({
162
163
  })
163
164
  });
164
165
  const InternalCustomerDetailsForm = (_ref, ref) => {
165
- var _appointment$time$get, _appointment$time, _appointment$time$get2, _appointment$date$get, _appointment$date, _appointment$date$get2, _customer$vatNumber, _customer$kvkNumber, _branchTypes$byId$aut, _authSession$branch, _authSession$branch2, _ref5, _appointment$date$get3, _appointment$date2, _appointment$date2$ge;
166
+ var _appointment$time$get, _appointment$time, _appointment$time$get2, _appointment$date$get, _appointment$date, _appointment$date$get2, _customer$vatNumber, _customer$kvkNumber, _branchTypes$byId$aut, _authSession$branch, _ref5, _appointment$date$get3, _appointment$date2, _appointment$date2$ge;
166
167
  let {
167
168
  errors = {},
168
169
  onValidationError,
@@ -176,6 +177,7 @@ const InternalCustomerDetailsForm = (_ref, ref) => {
176
177
  internalNote,
177
178
  vehicle,
178
179
  webshop,
180
+ singleOrderFormulaCode,
179
181
  isTowCenterBranch,
180
182
  anderAfleveradres
181
183
  }, dispatch] = (0, _OrderSessionContext.useOrderSession)();
@@ -246,6 +248,9 @@ const InternalCustomerDetailsForm = (_ref, ref) => {
246
248
  }
247
249
  }, [openingstijden, appointment === null || appointment === void 0 ? void 0 : appointment.date, dispatch]);
248
250
  const authSession = (0, _AuthSessionContext.useAuthSession)();
251
+ const orderFormula = (0, _FormulaContext.useFormula)();
252
+ const activeOrderFormula = singleOrderFormulaCode || orderFormula;
253
+ const isLooseOrderOnly = (0, _constants__.isLooseOrderOnlyFormula)(activeOrderFormula);
249
254
  const isTmg = (0, _useIsTmg.useIsTmg)();
250
255
  const [companySearchTerm, setCompanySearchTerm] = (0, _react.useState)('');
251
256
  const [isCompanyInputFocused, setIsCompanyInputFocused] = (0, _react.useState)(false);
@@ -392,7 +397,7 @@ const InternalCustomerDetailsForm = (_ref, ref) => {
392
397
  isLoadingBusinessBranches
393
398
  } = (0, _queries.useBusinessBranches)({
394
399
  searchTerm: companySearchTerm,
395
- formula: authSession === null || authSession === void 0 || (_authSession$branch2 = authSession.branch) === null || _authSession$branch2 === void 0 ? void 0 : _authSession$branch2.formule,
400
+ formula: activeOrderFormula,
396
401
  enabled: isBusinessOwnership
397
402
  });
398
403
  (0, _react.useEffect)(() => {
@@ -1019,7 +1024,7 @@ const InternalCustomerDetailsForm = (_ref, ref) => {
1019
1024
  isRequired: false,
1020
1025
  form: form,
1021
1026
  label: "Contact e-mailadres:"
1022
- }))))))), !webshop && /*#__PURE__*/_react.default.createElement("div", {
1027
+ }))))))), !webshop && !isLooseOrderOnly && /*#__PURE__*/_react.default.createElement("div", {
1023
1028
  className: (0, _helpers__.withStyle)('col-12')
1024
1029
  }, /*#__PURE__*/_react.default.createElement(_CardWide.default, null, /*#__PURE__*/_react.default.createElement("div", {
1025
1030
  className: (0, _helpers__.withStyle)('row')
@@ -16,6 +16,21 @@ describe('__constants__/formula helpers', () => {
16
16
  expect((0, _index.getConfiguratorFormulaCode)('tbe')).toBe(_index.CONFIGURATOR_FORMULAS.TBE);
17
17
  expect((0, _index.getConfiguratorFormulaCode)('abc')).toBe('ABC');
18
18
  });
19
+ it.each([['WB', _index.CONFIGURATOR_FORMULAS.WB], ['Westfalia Benelux', _index.CONFIGURATOR_FORMULAS.WB], ['AzVoLXTpISqiGtVvntWIO', _index.CONFIGURATOR_FORMULAS.WB], ['THL', _index.CONFIGURATOR_FORMULAS.THL], ['Trekhaakland', _index.CONFIGURATOR_FORMULAS.THL], ['FDvtPDAYzUM_kUtlPAhoH', _index.CONFIGURATOR_FORMULAS.THL], ['TH', _index.CONFIGURATOR_FORMULAS.TH], ['Trekhaken.nl', _index.CONFIGURATOR_FORMULAS.TH], ['dRnsTvJGhmmkTrkgmivap', _index.CONFIGURATOR_FORMULAS.TH]])('normalizes %s to %s', (formula, expectedCode) => {
20
+ expect((0, _index.getConfiguratorFormulaCode)(formula)).toBe(expectedCode);
21
+ expect((0, _index.getConfiguratorFormulaCode)({
22
+ entityId: formula
23
+ })).toBe(expectedCode);
24
+ });
25
+ it.each([[_index.CONFIGURATOR_FORMULAS.WB, 'Westfalia Benelux'], [_index.CONFIGURATOR_FORMULAS.THL, 'Trekhaakland'], [_index.CONFIGURATOR_FORMULAS.TH, 'Trekhaken.nl']])('normalizes the %s title and marks it loose-order-only', (formula, title) => {
26
+ expect((0, _index.getConfiguratorFormulaTitle)(formula)).toBe(title);
27
+ expect((0, _index.isLooseOrderOnlyFormula)(formula)).toBe(true);
28
+ });
29
+ it('does not change existing formula normalization', () => {
30
+ expect((0, _index.getConfiguratorFormulaCode)('TM')).toBe(_index.CONFIGURATOR_FORMULAS.TOW);
31
+ expect((0, _index.getConfiguratorFormulaCode)('TowMotive Group')).toBe(_index.CONFIGURATOR_FORMULAS.TMG);
32
+ expect((0, _index.isLooseOrderOnlyFormula)(_index.CONFIGURATOR_FORMULAS.TMG)).toBe(false);
33
+ });
19
34
  it('treats TBE as THC-family for theme decisions only', () => {
20
35
  expect((0, _index.isThcFamilyFormula)(_index.CONFIGURATOR_FORMULAS.THC)).toBe(true);
21
36
  expect((0, _index.isThcFamilyFormula)(_index.CONFIGURATOR_FORMULAS.TBE)).toBe(true);
@@ -6,7 +6,7 @@ require("core-js/modules/es.string.trim.js");
6
6
  Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
- exports.normalizeFormulaForOrderApi = exports.mapBranchFormulaToConfiguratorFormula = exports.isThcFamilyFormula = exports.isInvoicedOrFinishedXdmsStatus = exports.getThemeFormulaForConfiguratorFormula = exports.getConfiguratorFormulaCode = exports.VESTIGING_TYPE_ID = exports.VEHICLE_SINGLE_ORDER_OWNERSHIP_TYPE = exports.VEHICLE_OWNERSHIP_TYPE = exports.VEHICLE_CODING_SUBGROUP_NAME = exports.USER_GEOLOCATION_KEY = exports.TOWMOTIVE_ORGANIZATION_TYPE = exports.TMG_ORGANIZATION_TYPE = exports.StockStatus = exports.STATUS_ASSESSMENT = exports.PRODUCT_CATEGORIES = exports.PRIVATE_SINGLE_ORDER_SESSION_KEY = exports.PARTNER_PORTAL_PAGE_TITLES_BY_THEME = exports.PARTNER_PORTAL_CHANNEL_TITLE = exports.ORDER_SESSION_KEY = exports.NO_PRODUCTS_CONTACT_DETAILS_BY_FORMULA = exports.NAVIGATION_STEPS_INTERNAL = exports.NAVIGATION_STEPS_EXTERNAL = exports.NAVIGATION_BUTTONS = exports.MOUSE_EXIT_INTENT_THROTTLE = exports.MOUSE_EXIT_INTENT_OFFSET = exports.LOCATION_TYPE = exports.LOCATION_CHANGE_BUTTON_LABEL = exports.LOCALE = exports.LEASE_TYPE_ID = exports.INVOICED_OR_FINISHED_XDMS_STATUS_IDS = exports.FORM_ERROR_MESSAGES = exports.EXECUTION_HELP_CONTACT_DETAILS_BY_FORMULA = exports.DOSSIER_TYPES = exports.DISCOUNT_TYPES = exports.DEFAULT_MAP_LONGITUDE = exports.DEFAULT_MAP_LATITUDE = exports.DEFAULT_ARTICLE_BRAND = exports.DAY_NAMES = exports.COUNTRY_NAMES = exports.CONFIGURATOR_FORMULAS = exports.BRANCH_THEME_BY_FORMULA = exports.BRANCH_FORMULAS = exports.BOARD_COMPUTER_DISABLED_KEY = exports.ApiStockStatus = exports.AUTH_SESSION_KEY = exports.ARTICLE_SPECS_TRANSLATIONS = exports.ARTICLES_SYSTEM_FIELDS = exports.API_ERROR_CODES = exports.ALL_EXPERIMENTS = exports.ACTIVE_VARIANTS = void 0;
9
+ exports.normalizeFormulaForOrderApi = exports.mapBranchFormulaToConfiguratorFormula = exports.isThcFamilyFormula = exports.isLooseOrderOnlyFormula = exports.isInvoicedOrFinishedXdmsStatus = exports.getThemeFormulaForConfiguratorFormula = exports.getConfiguratorFormulaTitle = exports.getConfiguratorFormulaCode = exports.VESTIGING_TYPE_ID = exports.VEHICLE_SINGLE_ORDER_OWNERSHIP_TYPE = exports.VEHICLE_OWNERSHIP_TYPE = exports.VEHICLE_CODING_SUBGROUP_NAME = exports.USER_GEOLOCATION_KEY = exports.TOWMOTIVE_ORGANIZATION_TYPE = exports.TMG_ORGANIZATION_TYPE = exports.StockStatus = exports.STATUS_ASSESSMENT = exports.PRODUCT_CATEGORIES = exports.PRIVATE_SINGLE_ORDER_SESSION_KEY = exports.PARTNER_PORTAL_PAGE_TITLES_BY_THEME = exports.PARTNER_PORTAL_CHANNEL_TITLE = exports.ORDER_SESSION_KEY = exports.NO_PRODUCTS_CONTACT_DETAILS_BY_FORMULA = exports.NAVIGATION_STEPS_INTERNAL = exports.NAVIGATION_STEPS_EXTERNAL = exports.NAVIGATION_BUTTONS = exports.MOUSE_EXIT_INTENT_THROTTLE = exports.MOUSE_EXIT_INTENT_OFFSET = exports.LOOSE_ORDER_ONLY_FORMULAS = exports.LOCATION_TYPE = exports.LOCATION_CHANGE_BUTTON_LABEL = exports.LOCALE = exports.LEASE_TYPE_ID = exports.INVOICED_OR_FINISHED_XDMS_STATUS_IDS = exports.FORM_ERROR_MESSAGES = exports.EXECUTION_HELP_CONTACT_DETAILS_BY_FORMULA = exports.DOSSIER_TYPES = exports.DISCOUNT_TYPES = exports.DEFAULT_MAP_LONGITUDE = exports.DEFAULT_MAP_LATITUDE = exports.DEFAULT_ARTICLE_BRAND = exports.DAY_NAMES = exports.COUNTRY_NAMES = exports.CONFIGURATOR_FORMULA_TITLES = exports.CONFIGURATOR_FORMULA_ENTITY_IDS = exports.CONFIGURATOR_FORMULAS = exports.BRANCH_THEME_BY_FORMULA = exports.BRANCH_FORMULAS = exports.BOARD_COMPUTER_DISABLED_KEY = exports.ApiStockStatus = exports.AUTH_SESSION_KEY = exports.ARTICLE_SPECS_TRANSLATIONS = exports.ARTICLES_SYSTEM_FIELDS = exports.API_ERROR_CODES = exports.ALL_EXPERIMENTS = exports.ACTIVE_VARIANTS = void 0;
10
10
  require("core-js/modules/es.array.includes.js");
11
11
  require("core-js/modules/es.string.includes.js");
12
12
  require("core-js/modules/es.string.trim.js");
@@ -48,19 +48,28 @@ const BRANCH_FORMULAS = exports.BRANCH_FORMULAS = {
48
48
  Trekhaakcentrum: 'Trekhaakcentrum',
49
49
  TowMotiveGroup: 'TowMotive Group',
50
50
  TowMotive: 'TowMotive',
51
- Trekhaakmontage: 'Trekhaakmontage'
51
+ Trekhaakmontage: 'Trekhaakmontage',
52
+ WestfaliaBenelux: 'Westfalia Benelux',
53
+ Trekhaakland: 'Trekhaakland',
54
+ Trekhaken: 'Trekhaken.nl'
52
55
  };
53
56
  const BRANCH_THEME_BY_FORMULA = exports.BRANCH_THEME_BY_FORMULA = {
54
57
  Trekhaakcentrum: 'thc',
55
58
  Trekhaakmontage: 'thm',
56
59
  TowMotiveGroup: 'tmg',
57
- TowMotive: 'tm'
60
+ TowMotive: 'tm',
61
+ WestfaliaBenelux: 'wb',
62
+ Trekhaakland: 'thl',
63
+ Trekhaken: 'th'
58
64
  };
59
65
  const PARTNER_PORTAL_PAGE_TITLES_BY_THEME = exports.PARTNER_PORTAL_PAGE_TITLES_BY_THEME = {
60
66
  [BRANCH_THEME_BY_FORMULA.Trekhaakmontage]: 'Trekhaakmontage - Partner Portal',
61
67
  [BRANCH_THEME_BY_FORMULA.Trekhaakcentrum]: 'Trekhaakcentrum - Partner Portal',
62
68
  [BRANCH_THEME_BY_FORMULA.TowMotiveGroup]: 'TowMotive Group - Partner Portal',
63
- [BRANCH_THEME_BY_FORMULA.TowMotive]: 'TowMotive - Partner Portal'
69
+ [BRANCH_THEME_BY_FORMULA.TowMotive]: 'TowMotive - Partner Portal',
70
+ [BRANCH_THEME_BY_FORMULA.WestfaliaBenelux]: 'Westfalia Benelux - Partner Portal',
71
+ [BRANCH_THEME_BY_FORMULA.Trekhaakland]: 'Trekhaakland - Partner Portal',
72
+ [BRANCH_THEME_BY_FORMULA.Trekhaken]: 'Trekhaken.nl - Partner Portal'
64
73
  };
65
74
  const DAY_NAMES = exports.DAY_NAMES = {
66
75
  monday: 'Maandag',
@@ -249,17 +258,29 @@ const CONFIGURATOR_FORMULAS = exports.CONFIGURATOR_FORMULAS = {
249
258
  TMG: 'TMG',
250
259
  TOW: 'TOW',
251
260
  TM: 'TOW',
261
+ WB: 'WB',
252
262
  THL: 'THL',
253
263
  TH: 'TH',
254
264
  TowMotive: 'TowMotive'
255
265
  };
266
+ const CONFIGURATOR_FORMULA_ENTITY_IDS = exports.CONFIGURATOR_FORMULA_ENTITY_IDS = {
267
+ WB: 'AzVoLXTpISqiGtVvntWIO',
268
+ THL: 'FDvtPDAYzUM_kUtlPAhoH',
269
+ TH: 'dRnsTvJGhmmkTrkgmivap'
270
+ };
271
+ const CONFIGURATOR_FORMULA_TITLES = exports.CONFIGURATOR_FORMULA_TITLES = {
272
+ [CONFIGURATOR_FORMULAS.WB]: 'Westfalia Benelux',
273
+ [CONFIGURATOR_FORMULAS.THL]: 'Trekhaakland',
274
+ [CONFIGURATOR_FORMULAS.TH]: 'Trekhaken.nl'
275
+ };
276
+ const LOOSE_ORDER_ONLY_FORMULAS = exports.LOOSE_ORDER_ONLY_FORMULAS = [CONFIGURATOR_FORMULAS.WB, CONFIGURATOR_FORMULAS.THL, CONFIGURATOR_FORMULAS.TH];
256
277
  const normalizeFormulaInput = formula => {
257
278
  if (formula == null) {
258
279
  return null;
259
280
  }
260
281
  if (typeof formula === 'object') {
261
- var _ref, _ref2, _ref3, _formula$code;
262
- return normalizeFormulaInput((_ref = (_ref2 = (_ref3 = (_formula$code = formula === null || formula === void 0 ? void 0 : formula.code) !== null && _formula$code !== void 0 ? _formula$code : formula === null || formula === void 0 ? void 0 : formula.title) !== null && _ref3 !== void 0 ? _ref3 : formula === null || formula === void 0 ? void 0 : formula.formulaCode) !== null && _ref2 !== void 0 ? _ref2 : formula === null || formula === void 0 ? void 0 : formula.formule) !== null && _ref !== void 0 ? _ref : null);
282
+ var _ref, _ref2, _ref3, _ref4, _formula$code;
283
+ return normalizeFormulaInput((_ref = (_ref2 = (_ref3 = (_ref4 = (_formula$code = formula === null || formula === void 0 ? void 0 : formula.code) !== null && _formula$code !== void 0 ? _formula$code : formula === null || formula === void 0 ? void 0 : formula.title) !== null && _ref4 !== void 0 ? _ref4 : formula === null || formula === void 0 ? void 0 : formula.entityId) !== null && _ref3 !== void 0 ? _ref3 : formula === null || formula === void 0 ? void 0 : formula.formulaCode) !== null && _ref2 !== void 0 ? _ref2 : formula === null || formula === void 0 ? void 0 : formula.formule) !== null && _ref !== void 0 ? _ref : null);
263
284
  }
264
285
  if (typeof formula !== 'string') {
265
286
  return null;
@@ -291,7 +312,6 @@ const getConfiguratorFormulaCode = formula => {
291
312
  switch (normalizedFormula.toLowerCase()) {
292
313
  case 'tow':
293
314
  case 'tm':
294
- case 'th':
295
315
  case 'towmotive':
296
316
  return CONFIGURATOR_FORMULAS.TOW;
297
317
  case 'tmg':
@@ -307,11 +327,32 @@ const getConfiguratorFormulaCode = formula => {
307
327
  case 'thm':
308
328
  case 'trekhaakmontage':
309
329
  return CONFIGURATOR_FORMULAS.THM;
330
+ case 'wb':
331
+ case 'westfalia benelux':
332
+ case 'azvolxtpisqigtvvntwio':
333
+ return CONFIGURATOR_FORMULAS.WB;
334
+ case 'thl':
335
+ case 'trekhaakland':
336
+ case 'fdvtpdayzum_kutlpahoh':
337
+ return CONFIGURATOR_FORMULAS.THL;
338
+ case 'th':
339
+ case 'trekhaken':
340
+ case 'trekhaken.nl':
341
+ case 'drnstvjghmmktrkgmivap':
342
+ return CONFIGURATOR_FORMULAS.TH;
310
343
  default:
311
344
  return normalizedFormula.includes(' ') ? normalizedFormula : normalizedFormula.toUpperCase();
312
345
  }
313
346
  };
314
347
  exports.getConfiguratorFormulaCode = getConfiguratorFormulaCode;
348
+ const getConfiguratorFormulaTitle = formula => {
349
+ var _CONFIGURATOR_FORMULA;
350
+ const normalizedFormula = getConfiguratorFormulaCode(formula);
351
+ return (_CONFIGURATOR_FORMULA = CONFIGURATOR_FORMULA_TITLES[normalizedFormula]) !== null && _CONFIGURATOR_FORMULA !== void 0 ? _CONFIGURATOR_FORMULA : normalizedFormula;
352
+ };
353
+ exports.getConfiguratorFormulaTitle = getConfiguratorFormulaTitle;
354
+ const isLooseOrderOnlyFormula = formula => LOOSE_ORDER_ONLY_FORMULAS.includes(getConfiguratorFormulaCode(formula));
355
+ exports.isLooseOrderOnlyFormula = isLooseOrderOnlyFormula;
315
356
  const isThcFamilyFormula = formula => {
316
357
  const normalizedFormula = getConfiguratorFormulaCode(formula);
317
358
  return normalizedFormula === CONFIGURATOR_FORMULAS.THC || normalizedFormula === CONFIGURATOR_FORMULAS.TBE;
@@ -173,7 +173,12 @@ const ExtraProductsOverview = () => {
173
173
  isRecommended: false,
174
174
  productId: product.articleNumber,
175
175
  productTitle: product.name,
176
- productDescription: product.description,
176
+ productDescription: product.description
177
+ // Only the partner portal shows this note; the middleware
178
+ // only adds it to the private order as well.
179
+ ,
180
+
181
+ productPortalNote: APP_CONFIG.internal ? product.textPartnerPortalConfigurator : null,
177
182
  productImage: product !== null && product !== void 0 && (_product$images = product.images) !== null && _product$images !== void 0 && _product$images[0] ? (0, _image.getImageFromHyper)({
178
183
  imageId: product === null || product === void 0 || (_product$images2 = product.images) === null || _product$images2 === void 0 ? void 0 : _product$images2[0]
179
184
  }) : _thLogoBlack.default,