thm-p3-configurator 0.0.458 → 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.
- package/dist/public/assets/images/logo-th-icon.png +0 -0
- package/dist/public/assets/images/logo-th-primary.png +0 -0
- package/dist/public/assets/images/logo-thl-icon.png +0 -0
- package/dist/public/assets/images/logo-thl-primary.png +0 -0
- package/dist/public/assets/images/logo-wb-icon.png +0 -0
- package/dist/public/assets/images/logo-wb-primary.png +0 -0
- package/dist/src/shared/__api__/queries.js +7 -5
- package/dist/src/shared/__components__/Header.js +47 -3
- package/dist/src/shared/__components__/LocationsSelector/LocationDetails.js +295 -0
- package/dist/src/shared/__components__/LocationsSelector/LocationInfo.js +140 -0
- package/dist/src/shared/__components__/LocationsSelector/LocationList.js +190 -0
- package/dist/src/shared/__components__/LocationsSelector/LocationListItem.js +116 -0
- package/dist/src/shared/__components__/LocationsSelector/LocationTreeMarker.js +97 -0
- package/dist/src/shared/__components__/LocationsSelector/index.js +156 -0
- package/dist/src/shared/__components__/Modal.js +78 -0
- package/dist/src/shared/__components__/Navbar.js +85 -0
- package/dist/src/shared/__components__/NavigationSteps.js +143 -0
- package/dist/src/shared/__components__/Pagination.js +53 -0
- package/dist/src/shared/__components__/ProductCard/ProductCardCheckbox.js +38 -0
- package/dist/src/shared/__components__/ProductCard/ProductCardDescription.js +84 -0
- package/dist/src/shared/__components__/ProductCard/ProductCardDiscountAlert.js +57 -0
- package/dist/src/shared/__components__/ProductCard/ProductCardImage.js +28 -0
- package/dist/src/shared/__components__/ProductCard/ProductCardPortalNote.js +61 -0
- package/dist/src/shared/__components__/ProductCard/ProductCardPrice.js +37 -0
- package/dist/src/shared/__components__/ProductCard/ProductCardRibbon.js +28 -0
- package/dist/src/shared/__components__/ProductCard/ProductCardSpecifications.js +77 -0
- package/dist/src/shared/__components__/ProductCard/ProductCardUsps.js +82 -0
- package/dist/src/shared/__components__/ProductCard/index.js +250 -0
- package/dist/src/shared/__components__/ProductTable/ProductTableEditableRow.js +66 -0
- package/dist/src/shared/__components__/ProductTable/ProductTableHead.js +32 -0
- package/dist/src/shared/__components__/ProductTable/ProductTableSection.js +25 -0
- package/dist/src/shared/__components__/ProductTable/ProductTableSectionTotal.js +46 -0
- package/dist/src/shared/__components__/ProductTable/ProductTableStaticRow.js +47 -0
- package/dist/src/shared/__components__/ProductTable/ProductTableTotal.js +41 -0
- package/dist/src/shared/__components__/ProductTable/index.js +127 -0
- package/dist/src/shared/__components__/SingleOrderCartCard.js +85 -0
- package/dist/src/shared/__components__/SingleOrderProductCard.js +387 -0
- package/dist/src/shared/__components__/Spinners/FullPageSpinner.js +76 -0
- package/dist/src/shared/__components__/Spinners/InlineSpinner.js +26 -0
- package/dist/src/shared/__components__/Spinners/TextSpinner.js +31 -0
- package/dist/src/shared/__components__/UspsList.js +27 -0
- package/dist/src/shared/__components__/internal/InternalCustomerDetailsForm.js +1095 -0
- package/dist/src/shared/__constants__/__tests__/index.test.js +53 -0
- package/dist/src/shared/__constants__/cartTable.js +35 -0
- package/dist/src/shared/__constants__/cookiebot.js +7 -0
- package/dist/src/shared/__constants__/index.js +451 -0
- package/dist/src/shared/__constants__/sentry.js +20 -0
- package/dist/src/shared/__containers__/ANWBMembershipInput.js +170 -0
- package/dist/src/shared/__containers__/AppointmentForm.js +551 -0
- package/dist/src/shared/__containers__/BoardComputerCard.js +140 -0
- package/dist/src/shared/__containers__/ExtraProductsOverview.js +6 -1
- package/dist/src/shared/__containers__/ProductCartSide.js +8 -2
- package/dist/src/shared/__containers__/ProductsCartOverview.js +8 -5
- package/dist/src/shared/__containers__/internal/InternalBranchSelectorModal.js +118 -35
- package/dist/src/shared/__containers__/internal/OrderTypeSelectorModal.js +8 -0
- package/dist/src/shared/__context__/OrderSessionContext.js +2 -0
- package/dist/src/shared/__helpers__/__tests__/resetConfiguratorOrderCache.test.js +39 -0
- package/dist/src/shared/__helpers__/__tests__/singleOrderBranchSelector.test.js +126 -0
- package/dist/src/shared/__helpers__/__tests__/singleOrderWebshop.test.js +17 -0
- package/dist/src/shared/__helpers__/index.js +30 -1
- package/dist/src/shared/__helpers__/product.js +1 -13
- package/dist/src/shared/__helpers__/resetConfiguratorOrderCache.js +22 -0
- package/dist/src/shared/__helpers__/singleOrderArticles.js +27 -15
- package/dist/src/shared/__helpers__/singleOrderBranchSelector.js +112 -2
- package/dist/src/shared/__helpers__/singleOrderCustomerDetails.js +1 -1
- package/dist/src/shared/__helpers__/singleOrderWebshop.js +46 -0
- package/dist/src/shared/__hooks__/useBranchTheme.js +12 -1
- package/dist/src/shared/__pages__/internal/InternalLicensePlatePage.js +26 -10
- package/dist/src/shared/__pages__/internal/InternalManualSelectionPage.js +8 -1
- package/dist/src/shared/__pages__/internal/InternalSingleOrderPage.js +21 -8
- package/dist/src/shared/__style__/_variables-external.scss +6 -0
- package/dist/src/shared/__style__/_variables.scss +6 -0
- package/dist/src/shared/__style__/configurator/_configurator.scss +100 -0
- package/package.json +1 -1
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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:
|
|
37
|
-
alt:
|
|
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", {
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.number.to-fixed.js");
|
|
4
|
+
require("core-js/modules/es.weak-map.js");
|
|
5
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
6
|
+
require("core-js/modules/esnext.iterator.filter.js");
|
|
7
|
+
require("core-js/modules/esnext.iterator.map.js");
|
|
8
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
9
|
+
require("core-js/modules/es.weak-map.js");
|
|
10
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
11
|
+
Object.defineProperty(exports, "__esModule", {
|
|
12
|
+
value: true
|
|
13
|
+
});
|
|
14
|
+
exports.default = void 0;
|
|
15
|
+
require("core-js/modules/es.number.to-fixed.js");
|
|
16
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
17
|
+
require("core-js/modules/esnext.iterator.filter.js");
|
|
18
|
+
require("core-js/modules/esnext.iterator.map.js");
|
|
19
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
20
|
+
var _helpers__ = require("../../__helpers__");
|
|
21
|
+
function _getRequireWildcardCache(e) {
|
|
22
|
+
if ("function" != typeof WeakMap) return null;
|
|
23
|
+
var r = new WeakMap(),
|
|
24
|
+
t = new WeakMap();
|
|
25
|
+
return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {
|
|
26
|
+
return e ? t : r;
|
|
27
|
+
})(e);
|
|
28
|
+
}
|
|
29
|
+
function _interopRequireWildcard(e, r) {
|
|
30
|
+
if (!r && e && e.__esModule) return e;
|
|
31
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return {
|
|
32
|
+
default: e
|
|
33
|
+
};
|
|
34
|
+
var t = _getRequireWildcardCache(r);
|
|
35
|
+
if (t && t.has(e)) return t.get(e);
|
|
36
|
+
var n = {
|
|
37
|
+
__proto__: null
|
|
38
|
+
},
|
|
39
|
+
a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
40
|
+
for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
|
|
41
|
+
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
42
|
+
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
|
|
43
|
+
}
|
|
44
|
+
return n.default = e, t && t.set(e, n), n;
|
|
45
|
+
}
|
|
46
|
+
const isStatusPositive = status => status === true || status === 1 || status === 'ja' || status === 'Ja';
|
|
47
|
+
const StatusDot = _ref => {
|
|
48
|
+
let {
|
|
49
|
+
status
|
|
50
|
+
} = _ref;
|
|
51
|
+
const positive = isStatusPositive(status);
|
|
52
|
+
return /*#__PURE__*/_react.default.createElement("span", {
|
|
53
|
+
className: (0, _helpers__.withStyle)('d-flex align-items-center gap-1')
|
|
54
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
55
|
+
style: {
|
|
56
|
+
width: 7,
|
|
57
|
+
height: 7,
|
|
58
|
+
borderRadius: '50%',
|
|
59
|
+
flexShrink: 0,
|
|
60
|
+
background: positive ? '#038808' : '#adb5bd',
|
|
61
|
+
display: 'inline-block'
|
|
62
|
+
}
|
|
63
|
+
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
64
|
+
style: {
|
|
65
|
+
fontSize: 11,
|
|
66
|
+
fontWeight: 600,
|
|
67
|
+
color: positive ? '#038808' : '#6c757d'
|
|
68
|
+
}
|
|
69
|
+
}, positive ? 'Ja' : 'Nee'));
|
|
70
|
+
};
|
|
71
|
+
const ServiceRow = _ref2 => {
|
|
72
|
+
let {
|
|
73
|
+
icon,
|
|
74
|
+
label,
|
|
75
|
+
status,
|
|
76
|
+
bedrag,
|
|
77
|
+
voorwaarden
|
|
78
|
+
} = _ref2;
|
|
79
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
80
|
+
style: {
|
|
81
|
+
marginBottom: 6
|
|
82
|
+
}
|
|
83
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
84
|
+
className: (0, _helpers__.withStyle)('d-flex align-items-center justify-content-between')
|
|
85
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
86
|
+
className: (0, _helpers__.withStyle)('d-flex align-items-center gap-1')
|
|
87
|
+
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
88
|
+
className: icon,
|
|
89
|
+
style: {
|
|
90
|
+
width: 14,
|
|
91
|
+
textAlign: 'center',
|
|
92
|
+
fontSize: 11,
|
|
93
|
+
color: '#6c757d'
|
|
94
|
+
}
|
|
95
|
+
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
96
|
+
style: {
|
|
97
|
+
fontSize: 12,
|
|
98
|
+
fontWeight: 600,
|
|
99
|
+
color: '#343a40'
|
|
100
|
+
}
|
|
101
|
+
}, label)), /*#__PURE__*/_react.default.createElement("span", {
|
|
102
|
+
className: (0, _helpers__.withStyle)('d-flex align-items-center gap-2')
|
|
103
|
+
}, bedrag != null && bedrag !== '' && /*#__PURE__*/_react.default.createElement("span", {
|
|
104
|
+
style: {
|
|
105
|
+
fontSize: 11,
|
|
106
|
+
color: '#6c757d'
|
|
107
|
+
}
|
|
108
|
+
}, typeof bedrag === 'number' ? "\u20AC\xA0".concat(bedrag.toFixed(2)) : bedrag), /*#__PURE__*/_react.default.createElement(StatusDot, {
|
|
109
|
+
status: status
|
|
110
|
+
}))), voorwaarden && /*#__PURE__*/_react.default.createElement("p", {
|
|
111
|
+
style: {
|
|
112
|
+
margin: '2px 0 0 18px',
|
|
113
|
+
fontSize: 10,
|
|
114
|
+
color: '#6c757d',
|
|
115
|
+
fontStyle: 'italic',
|
|
116
|
+
lineHeight: 1.4
|
|
117
|
+
}
|
|
118
|
+
}, voorwaarden));
|
|
119
|
+
};
|
|
120
|
+
const SectionLabel = _ref3 => {
|
|
121
|
+
let {
|
|
122
|
+
icon,
|
|
123
|
+
label
|
|
124
|
+
} = _ref3;
|
|
125
|
+
return /*#__PURE__*/_react.default.createElement("p", {
|
|
126
|
+
className: (0, _helpers__.withStyle)('d-flex align-items-center gap-1 mb-1'),
|
|
127
|
+
style: {
|
|
128
|
+
fontSize: 11,
|
|
129
|
+
fontWeight: 700,
|
|
130
|
+
color: '#495057',
|
|
131
|
+
textTransform: 'uppercase',
|
|
132
|
+
letterSpacing: '0.04em'
|
|
133
|
+
}
|
|
134
|
+
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
135
|
+
className: icon,
|
|
136
|
+
style: {
|
|
137
|
+
width: 14,
|
|
138
|
+
textAlign: 'center',
|
|
139
|
+
fontSize: 10,
|
|
140
|
+
color: '#6c757d'
|
|
141
|
+
}
|
|
142
|
+
}), label);
|
|
143
|
+
};
|
|
144
|
+
const formatDate = dateStr => {
|
|
145
|
+
if (!dateStr) return '';
|
|
146
|
+
const date = new Date(dateStr);
|
|
147
|
+
if (isNaN(date.getTime())) return dateStr;
|
|
148
|
+
return date.toLocaleDateString('nl-NL', {
|
|
149
|
+
day: '2-digit',
|
|
150
|
+
month: '2-digit',
|
|
151
|
+
year: 'numeric'
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Normalises a raw branch object (from GET /branches/:id) into display props.
|
|
157
|
+
*/
|
|
158
|
+
const buildDetailProps = branch => {
|
|
159
|
+
var _branch$haalEnBrengSe, _branch$extraGesloten;
|
|
160
|
+
if (!branch) return null;
|
|
161
|
+
return {
|
|
162
|
+
leenauto: {
|
|
163
|
+
status: branch.leenautoJaNee,
|
|
164
|
+
voorwaarden: branch.leenautoVoorwaarden,
|
|
165
|
+
bedrag: branch.leenautoBedrag
|
|
166
|
+
},
|
|
167
|
+
leenfiets: {
|
|
168
|
+
status: branch.leenfietsJaNee,
|
|
169
|
+
voorwaarden: branch.leenfietsVoorwaarden
|
|
170
|
+
},
|
|
171
|
+
haalEnBrengservice: {
|
|
172
|
+
status: (_branch$haalEnBrengSe = branch.haalEnBrengServiceJaNee) !== null && _branch$haalEnBrengSe !== void 0 ? _branch$haalEnBrengSe : branch.haalEnBrengService,
|
|
173
|
+
voorwaarden: branch.haalEnBrengServiceVoorwaarden
|
|
174
|
+
},
|
|
175
|
+
betaalmethoden: Array.isArray(branch.betaalmethoden) ? branch.betaalmethoden.map(m => m && typeof m === 'object' ? m.title : m).filter(Boolean) : branch.betaalmethoden,
|
|
176
|
+
extraGeslotenDagen: (_branch$extraGesloten = branch.extraGeslotenDagen) !== null && _branch$extraGesloten !== void 0 ? _branch$extraGesloten : branch.extraGeslotenDagenVestiging
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Fetches and displays extra location-specific details in the Partner Portal configurator.
|
|
182
|
+
* Only rendered when APP_CONFIG.internal is true — never on the public website.
|
|
183
|
+
*/
|
|
184
|
+
const LocationDetails = _ref4 => {
|
|
185
|
+
let {
|
|
186
|
+
initialBranch = null
|
|
187
|
+
} = _ref4;
|
|
188
|
+
const today = (0, _react.useMemo)(() => {
|
|
189
|
+
const d = new Date();
|
|
190
|
+
d.setHours(0, 0, 0, 0);
|
|
191
|
+
return d;
|
|
192
|
+
}, []);
|
|
193
|
+
const props = buildDetailProps(initialBranch);
|
|
194
|
+
if (!props) return null;
|
|
195
|
+
const {
|
|
196
|
+
leenauto,
|
|
197
|
+
leenfiets,
|
|
198
|
+
haalEnBrengservice,
|
|
199
|
+
betaalmethoden,
|
|
200
|
+
extraGeslotenDagen
|
|
201
|
+
} = props;
|
|
202
|
+
const upcomingGeslotenDagen = Array.isArray(extraGeslotenDagen) ? extraGeslotenDagen.filter(dag => {
|
|
203
|
+
if (!(dag !== null && dag !== void 0 && dag.einddatum)) return false;
|
|
204
|
+
const eindDatum = new Date(dag.einddatum);
|
|
205
|
+
eindDatum.setHours(0, 0, 0, 0);
|
|
206
|
+
return eindDatum >= today;
|
|
207
|
+
}) : [];
|
|
208
|
+
const hasLeenauto = leenauto != null;
|
|
209
|
+
const hasLeenfiets = leenfiets != null;
|
|
210
|
+
const hasHaalEnBreng = haalEnBrengservice != null;
|
|
211
|
+
const hasBetaalmethoden = Array.isArray(betaalmethoden) && betaalmethoden.length > 0;
|
|
212
|
+
const hasGeslotenDagen = upcomingGeslotenDagen.length > 0;
|
|
213
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
214
|
+
style: {
|
|
215
|
+
marginTop: 10,
|
|
216
|
+
paddingTop: 10,
|
|
217
|
+
borderTop: '1px solid #e9ecef'
|
|
218
|
+
}
|
|
219
|
+
}, (hasLeenauto || hasLeenfiets || hasHaalEnBreng) && /*#__PURE__*/_react.default.createElement("div", {
|
|
220
|
+
style: {
|
|
221
|
+
marginBottom: hasBetaalmethoden || hasGeslotenDagen ? 8 : 0
|
|
222
|
+
}
|
|
223
|
+
}, hasLeenauto && /*#__PURE__*/_react.default.createElement(ServiceRow, {
|
|
224
|
+
icon: "fas fa-car",
|
|
225
|
+
label: "Leenauto",
|
|
226
|
+
status: leenauto.status,
|
|
227
|
+
bedrag: leenauto.bedrag,
|
|
228
|
+
voorwaarden: leenauto.voorwaarden
|
|
229
|
+
}), hasLeenfiets && /*#__PURE__*/_react.default.createElement(ServiceRow, {
|
|
230
|
+
icon: "fas fa-bicycle",
|
|
231
|
+
label: "Leenfiets",
|
|
232
|
+
status: leenfiets.status,
|
|
233
|
+
voorwaarden: leenfiets.voorwaarden
|
|
234
|
+
}), hasHaalEnBreng && /*#__PURE__*/_react.default.createElement(ServiceRow, {
|
|
235
|
+
icon: "fas fa-truck",
|
|
236
|
+
label: "Haal- en brengservice",
|
|
237
|
+
status: haalEnBrengservice.status,
|
|
238
|
+
voorwaarden: haalEnBrengservice.voorwaarden
|
|
239
|
+
})), hasBetaalmethoden && /*#__PURE__*/_react.default.createElement("div", {
|
|
240
|
+
style: {
|
|
241
|
+
marginBottom: hasGeslotenDagen ? 8 : 0,
|
|
242
|
+
paddingTop: hasLeenauto || hasLeenfiets || hasHaalEnBreng ? 8 : 0,
|
|
243
|
+
borderTop: hasLeenauto || hasLeenfiets || hasHaalEnBreng ? '1px solid #f1f3f5' : 'none'
|
|
244
|
+
}
|
|
245
|
+
}, /*#__PURE__*/_react.default.createElement(SectionLabel, {
|
|
246
|
+
icon: "fas fa-credit-card",
|
|
247
|
+
label: "Betaalmethoden"
|
|
248
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
249
|
+
className: (0, _helpers__.withStyle)('d-flex flex-wrap gap-1')
|
|
250
|
+
}, betaalmethoden.map((method, i) => /*#__PURE__*/_react.default.createElement("span", {
|
|
251
|
+
key: i,
|
|
252
|
+
style: {
|
|
253
|
+
fontSize: 10,
|
|
254
|
+
fontWeight: 600,
|
|
255
|
+
padding: '2px 7px',
|
|
256
|
+
borderRadius: 4,
|
|
257
|
+
border: '1px solid #dee2e6',
|
|
258
|
+
color: '#495057',
|
|
259
|
+
background: '#f8f9fa'
|
|
260
|
+
}
|
|
261
|
+
}, method)))), hasGeslotenDagen && /*#__PURE__*/_react.default.createElement("div", {
|
|
262
|
+
style: {
|
|
263
|
+
paddingTop: hasBetaalmethoden || hasLeenauto || hasLeenfiets || hasHaalEnBreng ? 8 : 0,
|
|
264
|
+
borderTop: hasBetaalmethoden || hasLeenauto || hasLeenfiets || hasHaalEnBreng ? '1px solid #f1f3f5' : 'none'
|
|
265
|
+
}
|
|
266
|
+
}, /*#__PURE__*/_react.default.createElement(SectionLabel, {
|
|
267
|
+
icon: "fas fa-calendar-times",
|
|
268
|
+
label: "Extra gesloten"
|
|
269
|
+
}), /*#__PURE__*/_react.default.createElement("ul", {
|
|
270
|
+
className: (0, _helpers__.withStyle)('list-unstyled mb-0')
|
|
271
|
+
}, upcomingGeslotenDagen.map((dag, i) => {
|
|
272
|
+
const heeftBereik = dag.startdatum && dag.einddatum && dag.startdatum !== dag.einddatum;
|
|
273
|
+
const datumLabel = heeftBereik ? "".concat(formatDate(dag.startdatum), " \u2013 ").concat(formatDate(dag.einddatum)) : formatDate(dag.einddatum || dag.startdatum);
|
|
274
|
+
return /*#__PURE__*/_react.default.createElement("li", {
|
|
275
|
+
key: i,
|
|
276
|
+
className: (0, _helpers__.withStyle)('d-flex justify-content-between align-items-baseline'),
|
|
277
|
+
style: {
|
|
278
|
+
marginBottom: 2
|
|
279
|
+
}
|
|
280
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
281
|
+
style: {
|
|
282
|
+
fontSize: 11,
|
|
283
|
+
color: '#495057'
|
|
284
|
+
}
|
|
285
|
+
}, dag.omschrijving || '—'), /*#__PURE__*/_react.default.createElement("span", {
|
|
286
|
+
style: {
|
|
287
|
+
fontSize: 10,
|
|
288
|
+
color: '#6c757d',
|
|
289
|
+
marginLeft: 8,
|
|
290
|
+
whiteSpace: 'nowrap'
|
|
291
|
+
}
|
|
292
|
+
}, datumLabel));
|
|
293
|
+
}))));
|
|
294
|
+
};
|
|
295
|
+
var _default = exports.default = LocationDetails;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
4
|
+
require("core-js/modules/esnext.iterator.filter.js");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
10
|
+
require("core-js/modules/esnext.iterator.filter.js");
|
|
11
|
+
var _react = _interopRequireDefault(require("react"));
|
|
12
|
+
var _logoThcWhite = _interopRequireDefault(require("../../../../public/assets/images/logo-thc-white.svg"));
|
|
13
|
+
var _thLogoBlack = _interopRequireDefault(require("../../../../public/assets/images/th-logo-black.png"));
|
|
14
|
+
var _constants__ = require("../../__constants__");
|
|
15
|
+
var _helpers__ = require("../../__helpers__");
|
|
16
|
+
var _image = require("../../__helpers__/image");
|
|
17
|
+
function _interopRequireDefault(e) {
|
|
18
|
+
return e && e.__esModule ? e : {
|
|
19
|
+
default: e
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const FORMULAS = {
|
|
23
|
+
mZHgPhfuStmqHfHqSOhWY: _thLogoBlack.default,
|
|
24
|
+
nFbSnWdtLZBmEhhpHFGVO: _logoThcWhite.default
|
|
25
|
+
};
|
|
26
|
+
const LocationInfo = _ref => {
|
|
27
|
+
var _FORMULAS$formula;
|
|
28
|
+
let {
|
|
29
|
+
street,
|
|
30
|
+
houseNumber,
|
|
31
|
+
houseNumberExtra,
|
|
32
|
+
postCode,
|
|
33
|
+
city,
|
|
34
|
+
telephoneNumber,
|
|
35
|
+
locationImage,
|
|
36
|
+
title,
|
|
37
|
+
email,
|
|
38
|
+
website,
|
|
39
|
+
openingHours,
|
|
40
|
+
province,
|
|
41
|
+
formula
|
|
42
|
+
} = _ref;
|
|
43
|
+
const fallbackLogo = (0, _constants__.getThemeFormulaForConfiguratorFormula)(formula) === _constants__.CONFIGURATOR_FORMULAS.THC ? _logoThcWhite.default : (_FORMULAS$formula = FORMULAS[formula]) !== null && _FORMULAS$formula !== void 0 ? _FORMULAS$formula : _thLogoBlack.default;
|
|
44
|
+
|
|
45
|
+
// Function to format opening hours display text
|
|
46
|
+
const formatOpeningHours = dayData => {
|
|
47
|
+
if (!dayData) return {
|
|
48
|
+
text: 'Onbekend',
|
|
49
|
+
isUnknown: true
|
|
50
|
+
};
|
|
51
|
+
if (!dayData.isOpen) return {
|
|
52
|
+
text: 'Gesloten',
|
|
53
|
+
isUnknown: false
|
|
54
|
+
};
|
|
55
|
+
if (dayData.opensAt && dayData.closesAt) {
|
|
56
|
+
return {
|
|
57
|
+
text: "".concat(dayData.opensAt, " - ").concat(dayData.closesAt),
|
|
58
|
+
isUnknown: false
|
|
59
|
+
};
|
|
60
|
+
} else if (dayData.opensAt) {
|
|
61
|
+
return {
|
|
62
|
+
text: "".concat(dayData.opensAt),
|
|
63
|
+
isUnknown: false
|
|
64
|
+
};
|
|
65
|
+
} else if (dayData.closesAt) {
|
|
66
|
+
return {
|
|
67
|
+
text: "".concat(dayData.closesAt),
|
|
68
|
+
isUnknown: false
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
text: 'Onbekend',
|
|
73
|
+
isUnknown: true
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
// Order of days to display
|
|
77
|
+
const daysOrder = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];
|
|
78
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
79
|
+
className: (0, _helpers__.withStyle)('dealer-map__infowindow p-0 shadow-none')
|
|
80
|
+
}, /*#__PURE__*/_react.default.createElement("h4", {
|
|
81
|
+
className: (0, _helpers__.withStyle)('text-primary')
|
|
82
|
+
}, title), /*#__PURE__*/_react.default.createElement("div", {
|
|
83
|
+
className: (0, _helpers__.withStyle)('row row__body no-gutters flex-md-nowrap justify-content-between align-items-start')
|
|
84
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
85
|
+
className: (0, _helpers__.withStyle)('col-12 col-md-6 px-0')
|
|
86
|
+
}, /*#__PURE__*/_react.default.createElement("ul", {
|
|
87
|
+
className: (0, _helpers__.withStyle)('mb-2')
|
|
88
|
+
}, /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement("i", {
|
|
89
|
+
className: "fas fa-map-marker-alt ".concat((0, _helpers__.withStyle)('me-1'))
|
|
90
|
+
}), ["".concat(street).concat(houseNumber ? " ".concat(houseNumber) : '').concat(houseNumberExtra ? " ".concat(houseNumberExtra) : ''), postCode, city].filter(item => item).join(', ')), telephoneNumber && /*#__PURE__*/_react.default.createElement("li", {
|
|
91
|
+
className: (0, _helpers__.withStyle)('mt-1')
|
|
92
|
+
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
93
|
+
className: "fas fa-phone-alt ".concat((0, _helpers__.withStyle)('mx-1'))
|
|
94
|
+
}), /*#__PURE__*/_react.default.createElement("a", {
|
|
95
|
+
href: "tel:".concat(telephoneNumber)
|
|
96
|
+
}, /*#__PURE__*/_react.default.createElement("u", null, telephoneNumber))), email && /*#__PURE__*/_react.default.createElement("li", {
|
|
97
|
+
className: (0, _helpers__.withStyle)('mt-1')
|
|
98
|
+
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
99
|
+
className: "fas fa-envelope ".concat((0, _helpers__.withStyle)('mx-1'))
|
|
100
|
+
}), /*#__PURE__*/_react.default.createElement("a", {
|
|
101
|
+
href: "mailto:".concat(email)
|
|
102
|
+
}, /*#__PURE__*/_react.default.createElement("u", null, email))), website && /*#__PURE__*/_react.default.createElement("li", {
|
|
103
|
+
className: (0, _helpers__.withStyle)('mt-1')
|
|
104
|
+
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
105
|
+
className: "fas fa-globe ".concat((0, _helpers__.withStyle)('mx-1'))
|
|
106
|
+
}), /*#__PURE__*/_react.default.createElement("a", {
|
|
107
|
+
href: website
|
|
108
|
+
}, /*#__PURE__*/_react.default.createElement("u", null, website)))), /*#__PURE__*/_react.default.createElement("p", {
|
|
109
|
+
className: (0, _helpers__.withStyle)('font-weight-bold mb-1 d-none d-md-block')
|
|
110
|
+
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
111
|
+
className: "fas fa-clock ".concat((0, _helpers__.withStyle)('mx-1'))
|
|
112
|
+
}), "Openingstijden"), /*#__PURE__*/_react.default.createElement("ul", {
|
|
113
|
+
className: (0, _helpers__.withStyle)('ml-3 p-0 d-none d-md-block'),
|
|
114
|
+
style: {
|
|
115
|
+
lineHeight: '1.2'
|
|
116
|
+
}
|
|
117
|
+
}, daysOrder.map(day => {
|
|
118
|
+
const hoursInfo = openingHours && formatOpeningHours(openingHours[day]);
|
|
119
|
+
return /*#__PURE__*/_react.default.createElement("li", {
|
|
120
|
+
key: day,
|
|
121
|
+
className: (0, _helpers__.withStyle)('d-flex align-content-center justify-content-between mb-0'),
|
|
122
|
+
style: {
|
|
123
|
+
marginBottom: '2px'
|
|
124
|
+
}
|
|
125
|
+
}, /*#__PURE__*/_react.default.createElement("p", {
|
|
126
|
+
className: (0, _helpers__.withStyle)('mb-0')
|
|
127
|
+
}, _constants__.DAY_NAMES[day]), /*#__PURE__*/_react.default.createElement("p", {
|
|
128
|
+
className: "".concat(hoursInfo !== null && hoursInfo !== void 0 && hoursInfo.isUnknown ? (0, _helpers__.withStyle)('text-muted fst-italic') : '', " ").concat((0, _helpers__.withStyle)('mb-0'))
|
|
129
|
+
}, (hoursInfo === null || hoursInfo === void 0 ? void 0 : hoursInfo.text) || 'Onbekend'));
|
|
130
|
+
}))), /*#__PURE__*/_react.default.createElement("div", {
|
|
131
|
+
className: (0, _helpers__.withStyle)('col-12 col-md-6 d-flex flex-column justify-content-evenly align-items-center')
|
|
132
|
+
}, /*#__PURE__*/_react.default.createElement("img", {
|
|
133
|
+
className: (0, _helpers__.withStyle)('mb-1'),
|
|
134
|
+
src: locationImage !== null && locationImage !== void 0 && locationImage.length ? (0, _image.getImageFromHyper)({
|
|
135
|
+
imageId: locationImage
|
|
136
|
+
}) : fallbackLogo,
|
|
137
|
+
alt: title
|
|
138
|
+
}))));
|
|
139
|
+
};
|
|
140
|
+
var _default = exports.default = LocationInfo;
|