thm-p3-configurator 0.0.348 → 0.0.350

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 (43) hide show
  1. package/dist/src/shared/__components__/LocationsSelector/LocationList.js +180 -0
  2. package/dist/src/shared/__components__/LocationsSelector/LocationListItem.js +103 -0
  3. package/dist/src/shared/__components__/LocationsSelector/LocationTreeMarker.js +96 -0
  4. package/dist/src/shared/__components__/LocationsSelector/index.js +162 -0
  5. package/dist/src/shared/__components__/Modal.js +78 -0
  6. package/dist/src/shared/__components__/Navbar.js +58 -0
  7. package/dist/src/shared/__components__/NavigationSteps.js +115 -0
  8. package/dist/src/shared/__components__/Pagination.js +53 -0
  9. package/dist/src/shared/__components__/ProductCard/ProductCardCheckbox.js +38 -0
  10. package/dist/src/shared/__components__/ProductCard/ProductCardDescription.js +77 -0
  11. package/dist/src/shared/__components__/ProductCard/ProductCardDiscountAlert.js +57 -0
  12. package/dist/src/shared/__components__/ProductCard/ProductCardImage.js +28 -0
  13. package/dist/src/shared/__components__/ProductCard/ProductCardPrice.js +37 -0
  14. package/dist/src/shared/__components__/ProductCard/ProductCardRibbon.js +28 -0
  15. package/dist/src/shared/__components__/ProductCard/ProductCardSpecifications.js +77 -0
  16. package/dist/src/shared/__components__/ProductCard/ProductCardUsps.js +82 -0
  17. package/dist/src/shared/__components__/ProductCard/index.js +173 -0
  18. package/dist/src/shared/__components__/ProductTable/ProductTableEditableRow.js +66 -0
  19. package/dist/src/shared/__components__/ProductTable/ProductTableHead.js +32 -0
  20. package/dist/src/shared/__components__/ProductTable/ProductTableSection.js +25 -0
  21. package/dist/src/shared/__components__/ProductTable/ProductTableSectionTotal.js +44 -0
  22. package/dist/src/shared/__components__/ProductTable/ProductTableStaticRow.js +47 -0
  23. package/dist/src/shared/__components__/ProductTable/ProductTableTotal.js +41 -0
  24. package/dist/src/shared/__components__/ProductTable/index.js +127 -0
  25. package/dist/src/shared/__components__/SingleOrderCartCard.js +78 -0
  26. package/dist/src/shared/__components__/SingleOrderProductCard.js +269 -0
  27. package/dist/src/shared/__components__/Spinners/FullPageSpinner.js +73 -0
  28. package/dist/src/shared/__components__/Spinners/InlineSpinner.js +26 -0
  29. package/dist/src/shared/__components__/Spinners/TextSpinner.js +31 -0
  30. package/dist/src/shared/__components__/UspsList.js +27 -0
  31. package/dist/src/shared/__components__/internal/InternalCustomerDetailsForm.js +951 -0
  32. package/dist/src/shared/__constants__/cartTable.js +32 -0
  33. package/dist/src/shared/__constants__/cookiebot.js +7 -0
  34. package/dist/src/shared/__constants__/index.js +311 -0
  35. package/dist/src/shared/__constants__/sentry.js +20 -0
  36. package/dist/src/shared/__containers__/ANWBMembershipInput.js +170 -0
  37. package/dist/src/shared/__containers__/AppointmentForm.js +389 -0
  38. package/dist/src/shared/__containers__/BoardComputerCard.js +137 -0
  39. package/dist/src/shared/__containers__/BottomNavigationBar.js +162 -0
  40. package/dist/src/shared/__containers__/DiscountProductsSelector.js +149 -0
  41. package/dist/src/shared/__containers__/ExitIntentModal.js +278 -0
  42. package/dist/src/shared/__containers__/ExtraProductsOverview.js +227 -0
  43. package/package.json +1 -1
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.array.sort.js");
4
+ require("core-js/modules/es.number.to-fixed.js");
5
+ require("core-js/modules/es.parse-float.js");
6
+ require("core-js/modules/es.weak-map.js");
7
+ require("core-js/modules/esnext.iterator.constructor.js");
8
+ require("core-js/modules/esnext.iterator.filter.js");
9
+ require("core-js/modules/esnext.iterator.for-each.js");
10
+ require("core-js/modules/esnext.iterator.map.js");
11
+ require("core-js/modules/web.dom-collections.iterator.js");
12
+ require("core-js/modules/es.weak-map.js");
13
+ require("core-js/modules/esnext.iterator.for-each.js");
14
+ Object.defineProperty(exports, "__esModule", {
15
+ value: true
16
+ });
17
+ exports.default = void 0;
18
+ require("core-js/modules/es.array.sort.js");
19
+ require("core-js/modules/es.number.to-fixed.js");
20
+ require("core-js/modules/es.parse-float.js");
21
+ require("core-js/modules/esnext.iterator.constructor.js");
22
+ require("core-js/modules/esnext.iterator.filter.js");
23
+ require("core-js/modules/esnext.iterator.map.js");
24
+ require("core-js/modules/web.dom-collections.iterator.js");
25
+ var _react = _interopRequireWildcard(require("react"));
26
+ var _ActiveMarkerContext = require("../../__context__/ActiveMarkerContext");
27
+ var _OrderSessionContext = require("../../__context__/OrderSessionContext");
28
+ var _helpers__ = require("../../__helpers__");
29
+ var _geolocation = require("../../__helpers__/geolocation");
30
+ var _LocationListItem = _interopRequireDefault(require("./LocationListItem"));
31
+ function _interopRequireDefault(e) {
32
+ return e && e.__esModule ? e : {
33
+ default: e
34
+ };
35
+ }
36
+ function _getRequireWildcardCache(e) {
37
+ if ("function" != typeof WeakMap) return null;
38
+ var r = new WeakMap(),
39
+ t = new WeakMap();
40
+ return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {
41
+ return e ? t : r;
42
+ })(e);
43
+ }
44
+ function _interopRequireWildcard(e, r) {
45
+ if (!r && e && e.__esModule) return e;
46
+ if (null === e || "object" != typeof e && "function" != typeof e) return {
47
+ default: e
48
+ };
49
+ var t = _getRequireWildcardCache(r);
50
+ if (t && t.has(e)) return t.get(e);
51
+ var n = {
52
+ __proto__: null
53
+ },
54
+ a = Object.defineProperty && Object.getOwnPropertyDescriptor;
55
+ for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
56
+ var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
57
+ i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
58
+ }
59
+ return n.default = e, t && t.set(e, n), n;
60
+ }
61
+ function ownKeys(e, r) {
62
+ var t = Object.keys(e);
63
+ if (Object.getOwnPropertySymbols) {
64
+ var o = Object.getOwnPropertySymbols(e);
65
+ r && (o = o.filter(function (r) {
66
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
67
+ })), t.push.apply(t, o);
68
+ }
69
+ return t;
70
+ }
71
+ function _objectSpread(e) {
72
+ for (var r = 1; r < arguments.length; r++) {
73
+ var t = null != arguments[r] ? arguments[r] : {};
74
+ r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
75
+ _defineProperty(e, r, t[r]);
76
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
77
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
78
+ });
79
+ }
80
+ return e;
81
+ }
82
+ function _defineProperty(e, r, t) {
83
+ return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
84
+ value: t,
85
+ enumerable: !0,
86
+ configurable: !0,
87
+ writable: !0
88
+ }) : e[r] = t, e;
89
+ }
90
+ function _toPropertyKey(t) {
91
+ var i = _toPrimitive(t, "string");
92
+ return "symbol" == typeof i ? i : i + "";
93
+ }
94
+ function _toPrimitive(t, r) {
95
+ if ("object" != typeof t || !t) return t;
96
+ var e = t[Symbol.toPrimitive];
97
+ if (void 0 !== e) {
98
+ var i = e.call(t, r || "default");
99
+ if ("object" != typeof i) return i;
100
+ throw new TypeError("@@toPrimitive must return a primitive value.");
101
+ }
102
+ return ("string" === r ? String : Number)(t);
103
+ }
104
+ const LocationsLoading = () => {
105
+ return /*#__PURE__*/_react.default.createElement("div", {
106
+ className: (0, _helpers__.withStyle)('w-100 text-center')
107
+ }, /*#__PURE__*/_react.default.createElement("div", {
108
+ className: (0, _helpers__.withStyle)('spinner-border text-primary mx-auto'),
109
+ role: "status"
110
+ }, /*#__PURE__*/_react.default.createElement("span", {
111
+ className: "sr-only"
112
+ }, "Loading...")));
113
+ };
114
+ const NoLocationFound = () => {
115
+ return /*#__PURE__*/_react.default.createElement("h4", null, "Geen montagelocaties gevonden");
116
+ };
117
+ const LocationList = _ref => {
118
+ let {
119
+ locationsById,
120
+ locationIds,
121
+ userLocation,
122
+ isLocationSetViaSearch = false,
123
+ isLoading = false
124
+ } = _ref;
125
+ const {
126
+ activeMarkerId
127
+ } = (0, _ActiveMarkerContext.useActiveMarker)();
128
+ const [{
129
+ selectedBranch
130
+ }] = (0, _OrderSessionContext.useOrderSession)();
131
+ const listRef = (0, _react.useRef)(null);
132
+ const locationsWithDistance = locationIds.map((locationId, index) => {
133
+ const location = locationsById[locationId];
134
+ const coordinates = location.googleMapsLocation;
135
+ if (!coordinates) return null;
136
+ const [latStr, lngStr] = coordinates.split(',');
137
+ const lat = parseFloat(latStr);
138
+ const lng = parseFloat(lngStr);
139
+ const distance = userLocation ? (0, _geolocation.calculateDistance)({
140
+ lat1: userLocation.lat,
141
+ lng1: userLocation.lng,
142
+ lat2: lat,
143
+ lng2: lng
144
+ }).toFixed(2) : null;
145
+ return _objectSpread(_objectSpread({}, location), {}, {
146
+ distance: distance ? parseFloat(distance) : null
147
+ });
148
+ }).filter(location => location !== null);
149
+ const sortedLocations = locationsWithDistance.sort((a, b) => {
150
+ const aIsSelected = a.entityId === activeMarkerId || a.entityId === selectedBranch;
151
+ const bIsSelected = b.entityId === activeMarkerId || b.entityId === selectedBranch;
152
+ if (aIsSelected && !bIsSelected) return -1; // a goes to top
153
+ if (!aIsSelected && bIsSelected) return 1; // b goes to top
154
+
155
+ if (a.distance === null) return 1;
156
+ if (b.distance === null) return -1;
157
+ return a.distance - b.distance;
158
+ });
159
+
160
+ // Handle scrolling when location is set via search
161
+ (0, _react.useEffect)(() => {
162
+ if (isLocationSetViaSearch && listRef.current) {
163
+ listRef.current.scrollTop = 0;
164
+ }
165
+ }, [isLocationSetViaSearch, userLocation]);
166
+ return /*#__PURE__*/_react.default.createElement("div", {
167
+ ref: listRef,
168
+ className: (0, _helpers__.withStyle)('dealer-list')
169
+ }, /*#__PURE__*/_react.default.createElement("h5", null, userLocation ? 'Dichtsbijzijnde montagelocaties' : 'Montagelocaties'), isLoading && /*#__PURE__*/_react.default.createElement(LocationsLoading, null), !isLoading && !locationIds.length && /*#__PURE__*/_react.default.createElement(NoLocationFound, null), sortedLocations.map(location => /*#__PURE__*/_react.default.createElement(_LocationListItem.default, {
170
+ openingHours: location.openingstijden,
171
+ title: location.naamVestiging,
172
+ city: location.city,
173
+ distance: location.distance ? location.distance : null,
174
+ id: location.entityId,
175
+ key: location.entityId,
176
+ isSelected: location.entityId === activeMarkerId || location.entityId === selectedBranch,
177
+ userLocation: userLocation
178
+ })));
179
+ };
180
+ var _default = exports.default = LocationList;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.weak-map.js");
4
+ require("core-js/modules/web.dom-collections.iterator.js");
5
+ require("core-js/modules/es.weak-map.js");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.default = void 0;
10
+ require("core-js/modules/web.dom-collections.iterator.js");
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _ActiveMarkerContext = require("../../__context__/ActiveMarkerContext");
13
+ var _OrderSessionContext = require("../../__context__/OrderSessionContext");
14
+ var _helpers__ = require("../../__helpers__");
15
+ var _LocationDetails = _interopRequireDefault(require("./LocationDetails"));
16
+ function _interopRequireDefault(e) {
17
+ return e && e.__esModule ? e : {
18
+ default: e
19
+ };
20
+ }
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 LocationListItem = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
47
+ let {
48
+ title,
49
+ city,
50
+ distance,
51
+ id,
52
+ isSelected,
53
+ userLocation
54
+ } = _ref;
55
+ const [{
56
+ selectedBranch
57
+ }, dispatch] = (0, _OrderSessionContext.useOrderSession)();
58
+ const {
59
+ setActiveMarkerId
60
+ } = (0, _ActiveMarkerContext.useActiveMarker)();
61
+ const handleClick = () => {
62
+ setActiveMarkerId(prevId => prevId === id ? null : id);
63
+ dispatch({
64
+ payload: {
65
+ branchId: selectedBranch === id ? null : id
66
+ },
67
+ type: _OrderSessionContext.orderSessionActions.SET_SELECTED_BRANCH
68
+ });
69
+ };
70
+ return /*#__PURE__*/_react.default.createElement("div", {
71
+ ref: ref,
72
+ className: (0, _helpers__.withStyle)("dealer-item ".concat(isSelected ? 'active' : '')),
73
+ onClick: handleClick
74
+ }, /*#__PURE__*/_react.default.createElement("div", {
75
+ className: (0, _helpers__.withStyle)('row justify-content-between')
76
+ }, /*#__PURE__*/_react.default.createElement("div", {
77
+ className: (0, _helpers__.withStyle)('col d-flex flex-column justify-content-between')
78
+ }, /*#__PURE__*/_react.default.createElement("h5", {
79
+ className: (0, _helpers__.withStyle)('fw-bold text-black')
80
+ }, city), /*#__PURE__*/_react.default.createElement("small", null, title)), /*#__PURE__*/_react.default.createElement("div", {
81
+ className: (0, _helpers__.withStyle)('col-auto d-flex flex-column align-items-end justify-content-between text-end')
82
+ }, userLocation && isNaN(distance) === false && /*#__PURE__*/_react.default.createElement("p", {
83
+ className: (0, _helpers__.withStyle)('dealer-item__distance')
84
+ }, /*#__PURE__*/_react.default.createElement("i", {
85
+ className: "fas fa-map-marker-alt"
86
+ }), Math.round(distance), " km"), /*#__PURE__*/_react.default.createElement("div", {
87
+ className: (0, _helpers__.withStyle)('form-check mb-0')
88
+ }, /*#__PURE__*/_react.default.createElement("input", {
89
+ type: "radio",
90
+ className: (0, _helpers__.withStyle)('form-check-input'),
91
+ name: "dealer-item-check",
92
+ id: "dealer-item-check-".concat(id),
93
+ autoComplete: "off",
94
+ readOnly: true,
95
+ checked: isSelected
96
+ }), /*#__PURE__*/_react.default.createElement("label", {
97
+ className: (0, _helpers__.withStyle)('form-check-label'),
98
+ htmlFor: "dealer-item-check-".concat(id)
99
+ }, isSelected ? 'Geselecteerd' : 'Selecteren')))), isSelected && APP_CONFIG.internal && /*#__PURE__*/_react.default.createElement(_LocationDetails.default, {
100
+ id: id
101
+ }));
102
+ });
103
+ var _default = exports.default = LocationListItem;
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.parse-float.js");
4
+ require("core-js/modules/es.weak-map.js");
5
+ require("core-js/modules/web.dom-collections.iterator.js");
6
+ require("core-js/modules/es.weak-map.js");
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+ require("core-js/modules/es.parse-float.js");
12
+ require("core-js/modules/web.dom-collections.iterator.js");
13
+ var _reactGoogleMaps = require("@vis.gl/react-google-maps");
14
+ var _react = _interopRequireWildcard(require("react"));
15
+ var _mapMarkerThc = _interopRequireDefault(require("../../../../public/assets/images/map-marker-thc.png"));
16
+ var _mapMarker = _interopRequireDefault(require("../../../../public/assets/images/map-marker.png"));
17
+ var _constants__ = require("../../__constants__");
18
+ var _FormulaContext = require("../../__context__/FormulaContext");
19
+ function _interopRequireDefault(e) {
20
+ return e && e.__esModule ? e : {
21
+ default: e
22
+ };
23
+ }
24
+ function _getRequireWildcardCache(e) {
25
+ if ("function" != typeof WeakMap) return null;
26
+ var r = new WeakMap(),
27
+ t = new WeakMap();
28
+ return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {
29
+ return e ? t : r;
30
+ })(e);
31
+ }
32
+ function _interopRequireWildcard(e, r) {
33
+ if (!r && e && e.__esModule) return e;
34
+ if (null === e || "object" != typeof e && "function" != typeof e) return {
35
+ default: e
36
+ };
37
+ var t = _getRequireWildcardCache(r);
38
+ if (t && t.has(e)) return t.get(e);
39
+ var n = {
40
+ __proto__: null
41
+ },
42
+ a = Object.defineProperty && Object.getOwnPropertyDescriptor;
43
+ for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
44
+ var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
45
+ i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
46
+ }
47
+ return n.default = e, t && t.set(e, n), n;
48
+ }
49
+ const LocationTreeMarker = /*#__PURE__*/_react.default.memo(_ref => {
50
+ let {
51
+ tree,
52
+ onClick,
53
+ setMarkerRef
54
+ } = _ref;
55
+ const core = (0, _reactGoogleMaps.useMapsLibrary)('core');
56
+ const formula = (0, _FormulaContext.useFormula)();
57
+ // Cache marker icon configuration
58
+ const markerIcon = (0, _react.useMemo)(() => {
59
+ if (!core) return {
60
+ url: formula == _constants__.CONFIGURATOR_FORMULAS.THC ? _mapMarkerThc.default : _mapMarker.default
61
+ };
62
+ return {
63
+ url: formula == _constants__.CONFIGURATOR_FORMULAS.THC ? _mapMarkerThc.default : _mapMarker.default,
64
+ size: new core.Size(32, 42),
65
+ anchor: new core.Point(16, 32),
66
+ scaledSize: new core.Size(32, 42)
67
+ };
68
+ }, [core]);
69
+ const handleClick = (0, _react.useCallback)(() => onClick(tree), [onClick, tree]);
70
+ const ref = (0, _react.useCallback)(marker => setMarkerRef(marker, tree === null || tree === void 0 ? void 0 : tree.entityId), [setMarkerRef, tree === null || tree === void 0 ? void 0 : tree.entityId]);
71
+
72
+ // Memoize position calculation
73
+ const position = (0, _react.useMemo)(() => {
74
+ const coordinates = tree === null || tree === void 0 ? void 0 : tree.googleMapsLocation;
75
+ if (!coordinates) return null;
76
+ const [latStr, lngStr] = coordinates.split(',');
77
+ const lat = parseFloat(latStr);
78
+ const lng = parseFloat(lngStr);
79
+ return isNaN(lat) || isNaN(lng) ? null : {
80
+ lat,
81
+ lng
82
+ };
83
+ }, [tree === null || tree === void 0 ? void 0 : tree.googleMapsLocation]);
84
+ if (!position) return null;
85
+ return /*#__PURE__*/_react.default.createElement(_reactGoogleMaps.Marker, {
86
+ optimized: true,
87
+ position: position,
88
+ ref: ref,
89
+ onClick: handleClick,
90
+ icon: markerIcon,
91
+ clickable: true,
92
+ visible: true,
93
+ zIndex: 1
94
+ });
95
+ });
96
+ var _default = exports.default = LocationTreeMarker;
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.weak-map.js");
4
+ require("core-js/modules/web.dom-collections.iterator.js");
5
+ require("core-js/modules/es.weak-map.js");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.default = void 0;
10
+ require("core-js/modules/web.dom-collections.iterator.js");
11
+ var _reactGoogleMaps = require("@vis.gl/react-google-maps");
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _queries = require("../../__api__/queries");
14
+ var _constants__ = require("../../__constants__");
15
+ var _ActiveMarkerContext = require("../../__context__/ActiveMarkerContext");
16
+ var _AuthSessionContext = require("../../__context__/AuthSessionContext");
17
+ var _FormulaContext = require("../../__context__/FormulaContext");
18
+ var _OrderSessionContext = require("../../__context__/OrderSessionContext");
19
+ var _helpers__ = require("../../__helpers__");
20
+ var _useBreakpoint = _interopRequireDefault(require("../../__hooks__/useBreakpoint"));
21
+ var _useUserLocation = _interopRequireDefault(require("../../__hooks__/useUserLocation"));
22
+ var _LocationAutoComplete = _interopRequireDefault(require("./LocationAutoComplete"));
23
+ var _LocationClusteredMap = _interopRequireDefault(require("./LocationClusteredMap"));
24
+ var _LocationList = _interopRequireDefault(require("./LocationList"));
25
+ function _interopRequireDefault(e) {
26
+ return e && e.__esModule ? e : {
27
+ default: e
28
+ };
29
+ }
30
+ function _getRequireWildcardCache(e) {
31
+ if ("function" != typeof WeakMap) return null;
32
+ var r = new WeakMap(),
33
+ t = new WeakMap();
34
+ return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {
35
+ return e ? t : r;
36
+ })(e);
37
+ }
38
+ function _interopRequireWildcard(e, r) {
39
+ if (!r && e && e.__esModule) return e;
40
+ if (null === e || "object" != typeof e && "function" != typeof e) return {
41
+ default: e
42
+ };
43
+ var t = _getRequireWildcardCache(r);
44
+ if (t && t.has(e)) return t.get(e);
45
+ var n = {
46
+ __proto__: null
47
+ },
48
+ a = Object.defineProperty && Object.getOwnPropertyDescriptor;
49
+ for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
50
+ var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
51
+ i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
52
+ }
53
+ return n.default = e, t && t.set(e, n), n;
54
+ }
55
+ const Loaded = /*#__PURE__*/_react.default.memo(_ref => {
56
+ let {
57
+ children
58
+ } = _ref;
59
+ const markers = (0, _reactGoogleMaps.useMapsLibrary)('marker');
60
+ const isLoaded = (0, _reactGoogleMaps.useApiIsLoaded)();
61
+ return isLoaded && markers && children;
62
+ });
63
+ const LocationsSelector = /*#__PURE__*/_react.default.memo(() => {
64
+ const [userLocation, setUserLocation] = (0, _useUserLocation.default)();
65
+ const [isLocationSetViaSearch, setIsLocationSetViaSearch] = (0, _react.useState)(false);
66
+ const {
67
+ setActiveMarkerId
68
+ } = (0, _ActiveMarkerContext.useActiveMarker)();
69
+ const [, dispatch] = (0, _OrderSessionContext.useOrderSession)();
70
+ const screen = (0, _useBreakpoint.default)();
71
+ const isDesktop = screen.size >= 1200;
72
+ const formula = (0, _FormulaContext.useFormula)();
73
+ const [{
74
+ franchiseName
75
+ }] = (0, _OrderSessionContext.useOrderSession)();
76
+ const authSession = (0, _AuthSessionContext.useAuthSession)();
77
+ const {
78
+ branchTypes
79
+ } = (0, _queries.useBranchTypes)();
80
+ const isTMGOrganization = _react.default.useMemo(() => {
81
+ var _branchTypes$byId$aut, _authSession$branch;
82
+ return (branchTypes === null || branchTypes === void 0 || (_branchTypes$byId$aut = branchTypes.byId[authSession === null || authSession === void 0 || (_authSession$branch = authSession.branch) === null || _authSession$branch === void 0 || (_authSession$branch = _authSession$branch.organisatietype) === null || _authSession$branch === void 0 ? void 0 : _authSession$branch[0]]) === null || _branchTypes$byId$aut === void 0 ? void 0 : _branchTypes$byId$aut.title) === _constants__.TMG_ORGANIZATION_TYPE;
83
+ }, [branchTypes, authSession]);
84
+ const {
85
+ branches
86
+ } = (0, _queries.useBranchesQuery)({
87
+ offset: 0,
88
+ limit: 400,
89
+ formula,
90
+ franchiseName
91
+ });
92
+ const {
93
+ myBranches
94
+ } = (0, _queries.useMyBranches)(formula);
95
+ const locations = isTMGOrganization || !APP_CONFIG.internal ? (branches === null || branches === void 0 ? void 0 : branches.results) || [] : myBranches || [];
96
+ const {
97
+ byId,
98
+ allIds
99
+ } = (0, _react.useMemo)(() => (0, _helpers__.normalizeArray)({
100
+ array: locations || [],
101
+ key: 'entityId'
102
+ }), [locations]);
103
+
104
+ // Handle location updates from search
105
+ const handleLocationUpdate = function handleLocationUpdate(newLocation) {
106
+ let fromSearch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
107
+ setUserLocation(newLocation);
108
+ setIsLocationSetViaSearch(fromSearch);
109
+
110
+ // Close any open marker popups when searching for a new location
111
+ if (fromSearch) {
112
+ setActiveMarkerId(null);
113
+
114
+ // Also clear any selected branch to avoid confusion
115
+ dispatch({
116
+ payload: {
117
+ branchId: null
118
+ },
119
+ type: _OrderSessionContext.orderSessionActions.SET_SELECTED_BRANCH
120
+ });
121
+ }
122
+ };
123
+ return /*#__PURE__*/_react.default.createElement(_reactGoogleMaps.APIProvider, {
124
+ apiKey: APP_CONFIG.googleMapsApiKey,
125
+ libraries: ['marker']
126
+ }, /*#__PURE__*/_react.default.createElement(Loaded, null, APP_CONFIG.internal ? /*#__PURE__*/_react.default.createElement("div", {
127
+ className: (0, _helpers__.withStyle)('row gx-5 mt-3 mt-xl-5')
128
+ }, /*#__PURE__*/_react.default.createElement("div", {
129
+ className: (0, _helpers__.withStyle)('content col-xl-8')
130
+ }, /*#__PURE__*/_react.default.createElement("div", {
131
+ className: (0, _helpers__.withStyle)(isDesktop ? 'dealer-map__container' : 'dealer-map')
132
+ }, /*#__PURE__*/_react.default.createElement(_LocationClusteredMap.default, {
133
+ locationIds: allIds,
134
+ locationsById: byId,
135
+ userLocation: userLocation
136
+ }))), /*#__PURE__*/_react.default.createElement("aside", {
137
+ className: (0, _helpers__.withStyle)('dealer-sidebar col-xl-4 mt-3 mt-xl-0')
138
+ }, isDesktop && /*#__PURE__*/_react.default.createElement(_LocationAutoComplete.default, {
139
+ onLocationUpdate: handleLocationUpdate
140
+ }), franchiseName && /*#__PURE__*/_react.default.createElement("h6", {
141
+ className: (0, _helpers__.withStyle)('my-2')
142
+ }, "Keten: ", franchiseName), /*#__PURE__*/_react.default.createElement(_LocationList.default, {
143
+ locationIds: allIds,
144
+ locationsById: byId,
145
+ userLocation: userLocation,
146
+ isLocationSetViaSearch: isLocationSetViaSearch
147
+ }))) : /*#__PURE__*/_react.default.createElement("div", {
148
+ className: (0, _helpers__.withStyle)('row gx-5 mt-3 mt-xl-5 justify-content-center')
149
+ }, /*#__PURE__*/_react.default.createElement("aside", {
150
+ className: (0, _helpers__.withStyle)('dealer-sidebar col-xl-4 mt-3 mt-xl-0')
151
+ }, isDesktop && /*#__PURE__*/_react.default.createElement(_LocationAutoComplete.default, {
152
+ onLocationUpdate: handleLocationUpdate
153
+ }), franchiseName && /*#__PURE__*/_react.default.createElement("h6", {
154
+ className: (0, _helpers__.withStyle)('my-2')
155
+ }, "Keten: ", franchiseName), /*#__PURE__*/_react.default.createElement(_LocationList.default, {
156
+ locationIds: allIds,
157
+ locationsById: byId,
158
+ userLocation: userLocation,
159
+ isLocationSetViaSearch: isLocationSetViaSearch
160
+ })))));
161
+ });
162
+ var _default = exports.default = LocationsSelector;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _helpers__ = require("../__helpers__");
9
+ var _LinkButton = _interopRequireDefault(require("./Buttons/LinkButton"));
10
+ var _PrimaryButton = _interopRequireDefault(require("./Buttons/PrimaryButton"));
11
+ function _interopRequireDefault(e) {
12
+ return e && e.__esModule ? e : {
13
+ default: e
14
+ };
15
+ }
16
+ const Modal = _ref => {
17
+ let {
18
+ isOpen,
19
+ size,
20
+ title,
21
+ onPrimaryButtonClicked,
22
+ onSecondaryButtonClicked,
23
+ onClose,
24
+ primaryButtonText,
25
+ secondaryButtonText,
26
+ hasSecondaryButton = true,
27
+ hasPrimaryButton = true,
28
+ isPrimaryButtonDisabled = false,
29
+ children
30
+ } = _ref;
31
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
32
+ className: (0, _helpers__.withStyle)("modal fade modal--".concat(size, " ").concat(isOpen ? 'show' : '')),
33
+ "data-bs-backdrop": "static",
34
+ "data-bs-keyboard": "false",
35
+ tabIndex: "-1",
36
+ "aria-labelledby": "staticBackdropLabel",
37
+ "aria-hidden": "true"
38
+ }, /*#__PURE__*/_react.default.createElement("div", {
39
+ className: (0, _helpers__.withStyle)('modal-dialog modal-dialog-centered modal-lg')
40
+ }, /*#__PURE__*/_react.default.createElement("div", {
41
+ className: (0, _helpers__.withStyle)('modal-content page-content')
42
+ }, /*#__PURE__*/_react.default.createElement("div", {
43
+ className: (0, _helpers__.withStyle)('modal-header position-relative')
44
+ }, /*#__PURE__*/_react.default.createElement("h5", {
45
+ className: (0, _helpers__.withStyle)('text-center w-100 mb-0')
46
+ }, title), onClose && /*#__PURE__*/_react.default.createElement("button", {
47
+ type: "button",
48
+ className: (0, _helpers__.withStyle)('btn-close position-absolute top-0 end-0 m-3'),
49
+ onClick: onClose,
50
+ "aria-label": "Close"
51
+ })), /*#__PURE__*/_react.default.createElement("div", {
52
+ className: (0, _helpers__.withStyle)('modal-body')
53
+ }, children), /*#__PURE__*/_react.default.createElement("div", {
54
+ className: (0, _helpers__.withStyle)('modal-footer justify-content-center')
55
+ }, /*#__PURE__*/_react.default.createElement("div", {
56
+ className: (0, _helpers__.withStyle)('row')
57
+ }, hasSecondaryButton && /*#__PURE__*/_react.default.createElement("div", {
58
+ className: (0, _helpers__.withStyle)('col col-lg-auto mt-1')
59
+ }, /*#__PURE__*/_react.default.createElement("div", {
60
+ className: (0, _helpers__.withStyle)('d-grid gap-2')
61
+ }, /*#__PURE__*/_react.default.createElement(_LinkButton.default, {
62
+ type: "button",
63
+ onClick: onSecondaryButtonClicked,
64
+ label: secondaryButtonText
65
+ }))), hasPrimaryButton && /*#__PURE__*/_react.default.createElement("div", {
66
+ className: (0, _helpers__.withStyle)('col col-lg-auto mt-1')
67
+ }, /*#__PURE__*/_react.default.createElement("div", {
68
+ className: (0, _helpers__.withStyle)('d-grid gap-2')
69
+ }, /*#__PURE__*/_react.default.createElement(_PrimaryButton.default, {
70
+ type: "button",
71
+ onClick: onPrimaryButtonClicked,
72
+ isDisabled: isPrimaryButtonDisabled,
73
+ label: primaryButtonText
74
+ })))))))), isOpen && /*#__PURE__*/_react.default.createElement("div", {
75
+ className: (0, _helpers__.withStyle)('modal-backdrop fade show')
76
+ }));
77
+ };
78
+ var _default = exports.default = Modal;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _logoThcWhite = _interopRequireDefault(require("../../../public/assets/images/logo-thc-white.svg"));
9
+ var _logoTmgPrimary = _interopRequireDefault(require("../../../public/assets/images/logo-tmg-primary.png"));
10
+ var _logoWhite = _interopRequireDefault(require("../../../public/assets/images/logo-white.svg"));
11
+ var _tmLogo = _interopRequireDefault(require("../../../public/assets/images/tm-logo.png"));
12
+ var _constants__ = require("../__constants__");
13
+ var _helpers__ = require("../__helpers__");
14
+ var _useBranchTheme = require("../__hooks__/useBranchTheme");
15
+ function _interopRequireDefault(e) {
16
+ return e && e.__esModule ? e : {
17
+ default: e
18
+ };
19
+ }
20
+ const Navbar = _ref => {
21
+ let {
22
+ onPhoneClicked
23
+ } = _ref;
24
+ const theme = (0, _useBranchTheme.useBranchTheme)();
25
+ const themeClass = (0, _helpers__.getConfiguratorThemeClass)(theme);
26
+ return /*#__PURE__*/_react.default.createElement("nav", {
27
+ className: (0, _helpers__.withStyle)("navbar fixed-top ".concat(themeClass))
28
+ }, /*#__PURE__*/_react.default.createElement("div", {
29
+ className: (0, _helpers__.withStyle)('container-fluid')
30
+ }, /*#__PURE__*/_react.default.createElement("a", {
31
+ className: (0, _helpers__.withStyle)('navbar-brand'),
32
+ href: APP_CONFIG.websiteHost
33
+ }, /*#__PURE__*/_react.default.createElement("img", {
34
+ className: (0, _helpers__.withStyle)('img-fluid'),
35
+ 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,
36
+ alt: "Trekhaakmontage"
37
+ })), /*#__PURE__*/_react.default.createElement("div", {
38
+ className: (0, _helpers__.withStyle)('navbar__phone ms-10 d-none d-sm-flex')
39
+ }, /*#__PURE__*/_react.default.createElement("p", {
40
+ className: (0, _helpers__.withStyle)('mb-0 fw-bold')
41
+ }, "Heeft u advies nodig?"), /*#__PURE__*/_react.default.createElement("p", {
42
+ className: (0, _helpers__.withStyle)('mb-0')
43
+ }, "Bel ons via", ' ', /*#__PURE__*/_react.default.createElement("a", {
44
+ href: "tel:+31 85 - 000 4122",
45
+ onClick: onPhoneClicked
46
+ }, "+31 85 - 000 4122"))), /*#__PURE__*/_react.default.createElement("div", {
47
+ className: (0, _helpers__.withStyle)('navbar__phone text-end d-flex d-sm-none')
48
+ }, /*#__PURE__*/_react.default.createElement("p", {
49
+ className: (0, _helpers__.withStyle)('mb-0 fw-bold')
50
+ }, "Heeft u een vraag?"), /*#__PURE__*/_react.default.createElement("p", {
51
+ className: (0, _helpers__.withStyle)('mb-0')
52
+ }, /*#__PURE__*/_react.default.createElement("i", {
53
+ className: (0, _helpers__.withStyle)('fas fa-phone-alt me-1')
54
+ }), /*#__PURE__*/_react.default.createElement("a", {
55
+ href: "tel:+3185000 4122"
56
+ }, "+31 85 - 000 4122")))));
57
+ };
58
+ var _default = exports.default = Navbar;