@qite/tide-booking-component 1.4.83 → 1.4.84

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.
@@ -22956,7 +22956,7 @@ var OptionUnitsCard = function (_a) {
22956
22956
  React__default['default'].createElement(
22957
22957
  'div',
22958
22958
  { className: 'booking-card__group-header' },
22959
- React__default['default'].createElement('h3', { className: 'booking-card__body-heading' }, translations.OPTIONS_FORM.UNIT_TITLE, ' ', u.index + 1),
22959
+ React__default['default'].createElement('h3', { className: 'booking-card__body-heading' }, translations.OPTIONS_FORM.UNIT_TITLE, ' ', u.index),
22960
22960
  React__default['default'].createElement('p', null, getUnitPaxLabel(u.index)),
22961
22961
  React__default['default'].createElement(
22962
22962
  'div',
@@ -42576,11 +42576,7 @@ var HotelCard = function (_a) {
42576
42576
  return (e.currentTarget.style.transform = 'scale(1)');
42577
42577
  }
42578
42578
  },
42579
- React__default['default'].createElement('div', {
42580
- dangerouslySetInnerHTML: {
42581
- __html: he.decode(result.contents)
42582
- }
42583
- }),
42579
+ React__default['default'].createElement('div', { dangerouslySetInnerHTML: { __html: he.decode(result.contents) } }),
42584
42580
  React__default['default'].createElement(
42585
42581
  'div',
42586
42582
  { className: 'search__result-card__footer' },
@@ -45793,9 +45789,10 @@ var Filters = function (_a) {
45793
45789
  };
45794
45790
 
45795
45791
  var GroupTourCard = function (_a) {
45796
- var _b;
45792
+ var _b, _c, _d, _e, _f, _g;
45797
45793
  var result = _a.result,
45798
- languageCode = _a.languageCode;
45794
+ languageCode = _a.languageCode,
45795
+ cmsItem = _a.cmsItem;
45799
45796
  var dispatch = reactRedux.useDispatch();
45800
45797
  var translations = getTranslations(languageCode !== null && languageCode !== void 0 ? languageCode : 'en-GB');
45801
45798
  var selectedSearchResultId = reactRedux.useSelector(function (state) {
@@ -45820,20 +45817,34 @@ var GroupTourCard = function (_a) {
45820
45817
  React__default['default'].createElement(
45821
45818
  'div',
45822
45819
  { className: 'search__result-card__allotment' },
45820
+ React__default['default'].createElement(
45821
+ 'div',
45822
+ { className: 'search__result-card__allotment__img-wrapper' },
45823
+ React__default['default'].createElement('img', {
45824
+ src:
45825
+ (_e =
45826
+ (_d = (_c = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.content) === null || _c === void 0 ? void 0 : _c.images) === null ||
45827
+ _d === void 0
45828
+ ? void 0
45829
+ : _d.header) === null || _e === void 0
45830
+ ? void 0
45831
+ : _e.url,
45832
+ alt: result.name,
45833
+ className: 'search__result-card__allotment__img'
45834
+ })
45835
+ ),
45823
45836
  React__default['default'].createElement(
45824
45837
  'div',
45825
45838
  { className: 'search__result-card__allotment__title__wrapper' },
45826
- React__default['default'].createElement(
45827
- 'h3',
45828
- { className: 'search__result-card__allotment__title' },
45829
- result.name,
45830
- React__default['default'].createElement(
45831
- 'span',
45832
- { className: 'search__result-card__allotment__badge' },
45833
- React__default['default'].createElement(Icon$1, { name: 'ui-circle-check', width: 14, height: 14 }),
45834
- 'GAR'
45835
- )
45836
- ),
45839
+ React__default['default'].createElement('h3', { className: 'search__result-card__allotment__title' }, result.name),
45840
+ ((_g = (_f = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.content) === null || _f === void 0 ? void 0 : _f.introductie) === null ||
45841
+ _g === void 0
45842
+ ? void 0
45843
+ : _g.intro) &&
45844
+ React__default['default'].createElement('div', {
45845
+ className: 'search__result-card__allotment__description',
45846
+ dangerouslySetInnerHTML: { __html: he.decode(cmsItem.content.introductie.intro) }
45847
+ }),
45837
45848
  React__default['default'].createElement(
45838
45849
  'div',
45839
45850
  { className: 'search__result-card__allotment__container' },
@@ -45972,11 +45983,36 @@ var GroupTourResults = function (_a) {
45972
45983
  },
45973
45984
  [activeTab]
45974
45985
  );
45986
+ var cmsMap = React__default['default'].useMemo(
45987
+ function () {
45988
+ var _a;
45989
+ var map = new Map();
45990
+ (_a = context.cmsGroupTourData) === null || _a === void 0
45991
+ ? void 0
45992
+ : _a.forEach(function (item) {
45993
+ var _a, _b, _c;
45994
+ var code =
45995
+ (_c =
45996
+ (_b = (_a = item === null || item === void 0 ? void 0 : item.content) === null || _a === void 0 ? void 0 : _a.introductie) === null ||
45997
+ _b === void 0
45998
+ ? void 0
45999
+ : _b.data) === null || _c === void 0
46000
+ ? void 0
46001
+ : _c.code;
46002
+ if (code) {
46003
+ map.set(code, item);
46004
+ }
46005
+ });
46006
+ return map;
46007
+ },
46008
+ [context.cmsGroupTourData]
46009
+ );
45975
46010
  return React__default['default'].createElement(
45976
46011
  'div',
45977
46012
  { className: 'search__results__cards search__results__cards--'.concat(activeTab) },
45978
46013
  filteredResults.map(function (result, index) {
45979
- return React__default['default'].createElement(GroupTourCard, { key: index, result: result });
46014
+ var cmsItem = cmsMap.get(result.code);
46015
+ return React__default['default'].createElement(GroupTourCard, { key: index, result: result, cmsItem: cmsItem });
45980
46016
  })
45981
46017
  );
45982
46018
  };
@@ -3,6 +3,7 @@ import { BookingPackageItem } from '@qite/tide-client';
3
3
  interface GroupTourCardProps {
4
4
  result: BookingPackageItem;
5
5
  languageCode?: string;
6
+ cmsItem?: any;
6
7
  }
7
8
  declare const GroupTourCard: React.FC<GroupTourCardProps>;
8
9
  export default GroupTourCard;
@@ -27,6 +27,7 @@ export interface SearchResultsConfiguration {
27
27
  isLoading?: boolean;
28
28
  customSpinner?: ReactNode;
29
29
  cmsHotelData?: any[];
30
+ cmsGroupTourData?: any[];
30
31
  tags?: TideTag[];
31
32
  languageCode?: string;
32
33
  destinationImage?: {
@@ -22917,7 +22917,7 @@ var OptionUnitsCard = function (_a) {
22917
22917
  React__default.createElement(
22918
22918
  'div',
22919
22919
  { className: 'booking-card__group-header' },
22920
- React__default.createElement('h3', { className: 'booking-card__body-heading' }, translations.OPTIONS_FORM.UNIT_TITLE, ' ', u.index + 1),
22920
+ React__default.createElement('h3', { className: 'booking-card__body-heading' }, translations.OPTIONS_FORM.UNIT_TITLE, ' ', u.index),
22921
22921
  React__default.createElement('p', null, getUnitPaxLabel(u.index)),
22922
22922
  React__default.createElement(
22923
22923
  'div',
@@ -42399,11 +42399,7 @@ var HotelCard = function (_a) {
42399
42399
  return (e.currentTarget.style.transform = 'scale(1)');
42400
42400
  }
42401
42401
  },
42402
- React__default.createElement('div', {
42403
- dangerouslySetInnerHTML: {
42404
- __html: he.decode(result.contents)
42405
- }
42406
- }),
42402
+ React__default.createElement('div', { dangerouslySetInnerHTML: { __html: he.decode(result.contents) } }),
42407
42403
  React__default.createElement(
42408
42404
  'div',
42409
42405
  { className: 'search__result-card__footer' },
@@ -45545,9 +45541,10 @@ var Filters = function (_a) {
45545
45541
  };
45546
45542
 
45547
45543
  var GroupTourCard = function (_a) {
45548
- var _b;
45544
+ var _b, _c, _d, _e, _f, _g;
45549
45545
  var result = _a.result,
45550
- languageCode = _a.languageCode;
45546
+ languageCode = _a.languageCode,
45547
+ cmsItem = _a.cmsItem;
45551
45548
  var dispatch = useDispatch();
45552
45549
  var translations = getTranslations(languageCode !== null && languageCode !== void 0 ? languageCode : 'en-GB');
45553
45550
  var selectedSearchResultId = useSelector(function (state) {
@@ -45572,20 +45569,34 @@ var GroupTourCard = function (_a) {
45572
45569
  React__default.createElement(
45573
45570
  'div',
45574
45571
  { className: 'search__result-card__allotment' },
45572
+ React__default.createElement(
45573
+ 'div',
45574
+ { className: 'search__result-card__allotment__img-wrapper' },
45575
+ React__default.createElement('img', {
45576
+ src:
45577
+ (_e =
45578
+ (_d = (_c = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.content) === null || _c === void 0 ? void 0 : _c.images) === null ||
45579
+ _d === void 0
45580
+ ? void 0
45581
+ : _d.header) === null || _e === void 0
45582
+ ? void 0
45583
+ : _e.url,
45584
+ alt: result.name,
45585
+ className: 'search__result-card__allotment__img'
45586
+ })
45587
+ ),
45575
45588
  React__default.createElement(
45576
45589
  'div',
45577
45590
  { className: 'search__result-card__allotment__title__wrapper' },
45578
- React__default.createElement(
45579
- 'h3',
45580
- { className: 'search__result-card__allotment__title' },
45581
- result.name,
45582
- React__default.createElement(
45583
- 'span',
45584
- { className: 'search__result-card__allotment__badge' },
45585
- React__default.createElement(Icon$1, { name: 'ui-circle-check', width: 14, height: 14 }),
45586
- 'GAR'
45587
- )
45588
- ),
45591
+ React__default.createElement('h3', { className: 'search__result-card__allotment__title' }, result.name),
45592
+ ((_g = (_f = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.content) === null || _f === void 0 ? void 0 : _f.introductie) === null ||
45593
+ _g === void 0
45594
+ ? void 0
45595
+ : _g.intro) &&
45596
+ React__default.createElement('div', {
45597
+ className: 'search__result-card__allotment__description',
45598
+ dangerouslySetInnerHTML: { __html: he.decode(cmsItem.content.introductie.intro) }
45599
+ }),
45589
45600
  React__default.createElement(
45590
45601
  'div',
45591
45602
  { className: 'search__result-card__allotment__container' },
@@ -45724,11 +45735,36 @@ var GroupTourResults = function (_a) {
45724
45735
  },
45725
45736
  [activeTab]
45726
45737
  );
45738
+ var cmsMap = React__default.useMemo(
45739
+ function () {
45740
+ var _a;
45741
+ var map = new Map();
45742
+ (_a = context.cmsGroupTourData) === null || _a === void 0
45743
+ ? void 0
45744
+ : _a.forEach(function (item) {
45745
+ var _a, _b, _c;
45746
+ var code =
45747
+ (_c =
45748
+ (_b = (_a = item === null || item === void 0 ? void 0 : item.content) === null || _a === void 0 ? void 0 : _a.introductie) === null ||
45749
+ _b === void 0
45750
+ ? void 0
45751
+ : _b.data) === null || _c === void 0
45752
+ ? void 0
45753
+ : _c.code;
45754
+ if (code) {
45755
+ map.set(code, item);
45756
+ }
45757
+ });
45758
+ return map;
45759
+ },
45760
+ [context.cmsGroupTourData]
45761
+ );
45727
45762
  return React__default.createElement(
45728
45763
  'div',
45729
45764
  { className: 'search__results__cards search__results__cards--'.concat(activeTab) },
45730
45765
  filteredResults.map(function (result, index) {
45731
- return React__default.createElement(GroupTourCard, { key: index, result: result });
45766
+ var cmsItem = cmsMap.get(result.code);
45767
+ return React__default.createElement(GroupTourCard, { key: index, result: result, cmsItem: cmsItem });
45732
45768
  })
45733
45769
  );
45734
45770
  };
@@ -3,6 +3,7 @@ import { BookingPackageItem } from '@qite/tide-client';
3
3
  interface GroupTourCardProps {
4
4
  result: BookingPackageItem;
5
5
  languageCode?: string;
6
+ cmsItem?: any;
6
7
  }
7
8
  declare const GroupTourCard: React.FC<GroupTourCardProps>;
8
9
  export default GroupTourCard;
@@ -27,6 +27,7 @@ export interface SearchResultsConfiguration {
27
27
  isLoading?: boolean;
28
28
  customSpinner?: ReactNode;
29
29
  cmsHotelData?: any[];
30
+ cmsGroupTourData?: any[];
30
31
  tags?: TideTag[];
31
32
  languageCode?: string;
32
33
  destinationImage?: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qite/tide-booking-component",
3
- "version": "1.4.83",
3
+ "version": "1.4.84",
4
4
  "description": "React Booking wizard & Booking product component for Tide",
5
5
  "main": "build/build-cjs/index.js",
6
6
  "types": "build/build-cjs/src/index.d.ts",
@@ -91,7 +91,7 @@ const OptionUnitsCard: React.FC<OptionUnitsCardProps> = ({ units, parentIndex, o
91
91
  <div className={buildClassName(['booking-card__group', toggleStates && toggleStates[i] && 'booking-card__group--active'])}>
92
92
  <div className="booking-card__group-header">
93
93
  <h3 className="booking-card__body-heading">
94
- {translations.OPTIONS_FORM.UNIT_TITLE} {u.index + 1}
94
+ {translations.OPTIONS_FORM.UNIT_TITLE} {u.index}
95
95
  </h3>
96
96
  <p>{getUnitPaxLabel(u.index)}</p>
97
97
  <div className="booking-card__actions">
@@ -6,13 +6,15 @@ import { calculateDays, calculateNights, formatPrice, getTranslations } from '..
6
6
  import { SearchResultsRootState } from '../../store/search-results-store';
7
7
  import { useDispatch, useSelector } from 'react-redux';
8
8
  import { setSelectedSearchResult } from '../../store/search-results-slice';
9
+ import he from 'he';
9
10
 
10
11
  interface GroupTourCardProps {
11
12
  result: BookingPackageItem;
12
13
  languageCode?: string;
14
+ cmsItem?: any;
13
15
  }
14
16
 
15
- const GroupTourCard: React.FC<GroupTourCardProps> = ({ result, languageCode }) => {
17
+ const GroupTourCard: React.FC<GroupTourCardProps> = ({ result, languageCode, cmsItem }) => {
16
18
  const dispatch = useDispatch();
17
19
  const translations = getTranslations(languageCode ?? 'en-GB');
18
20
  const { selectedSearchResultId } = useSelector((state: SearchResultsRootState) => state.searchResults);
@@ -29,15 +31,16 @@ const GroupTourCard: React.FC<GroupTourCardProps> = ({ result, languageCode }) =
29
31
  return (
30
32
  <div className="search__result-card">
31
33
  <div className="search__result-card__allotment">
34
+ <div className="search__result-card__allotment__img-wrapper">
35
+ <img src={cmsItem?.content?.images?.header?.url} alt={result.name} className="search__result-card__allotment__img" />
36
+ </div>
32
37
  <div className="search__result-card__allotment__title__wrapper">
33
- <h3 className="search__result-card__allotment__title">
34
- {result.name}
35
- <span className="search__result-card__allotment__badge">
36
- <Icon name="ui-circle-check" width={14} height={14} />
37
- GAR
38
- </span>
39
- </h3>
40
-
38
+ <h3 className="search__result-card__allotment__title">{result.name}</h3>
39
+ {cmsItem?.content?.introductie?.intro && (
40
+ <div
41
+ className="search__result-card__allotment__description"
42
+ dangerouslySetInnerHTML={{ __html: he.decode(cmsItem.content.introductie.intro) }}></div>
43
+ )}
41
44
  <div className="search__result-card__allotment__container">
42
45
  <div className="search__result-card__allotment__header">
43
46
  <div className="search__result-card__allotment__wrapper">
@@ -36,11 +36,25 @@ const GroupTourResults: React.FC<GroupTourResultsProps> = ({ isLoading }) => {
36
36
  }
37
37
  }, [activeTab]);
38
38
 
39
+ const cmsMap = React.useMemo(() => {
40
+ const map = new Map();
41
+
42
+ context.cmsGroupTourData?.forEach((item) => {
43
+ const code = item?.content?.introductie?.data?.code;
44
+ if (code) {
45
+ map.set(code, item);
46
+ }
47
+ });
48
+
49
+ return map;
50
+ }, [context.cmsGroupTourData]);
51
+
39
52
  return (
40
53
  <div className={`search__results__cards search__results__cards--${activeTab}`}>
41
- {filteredResults.map((result, index) => (
42
- <GroupTourCard key={index} result={result} />
43
- ))}
54
+ {filteredResults.map((result, index) => {
55
+ const cmsItem = cmsMap.get(result.code);
56
+ return <GroupTourCard key={index} result={result} cmsItem={cmsItem} />;
57
+ })}
44
58
  </div>
45
59
  );
46
60
  };
@@ -26,10 +26,7 @@ const HotelCard: React.FC<HotelCardProps> = ({ result, translations }) => {
26
26
  className="search__result-card__wrapper search__result-card__wrapper--custom"
27
27
  onMouseEnter={(e) => (e.currentTarget.style.transform = 'scale(1.02)')}
28
28
  onMouseLeave={(e) => (e.currentTarget.style.transform = 'scale(1)')}>
29
- <div
30
- dangerouslySetInnerHTML={{
31
- __html: he.decode(result.contents)
32
- }}></div>
29
+ <div dangerouslySetInnerHTML={{ __html: he.decode(result.contents) }}></div>
33
30
  <div className="search__result-card__footer">
34
31
  <button
35
32
  type="button"
@@ -45,6 +45,7 @@ export interface SearchResultsConfiguration {
45
45
  customSpinner?: ReactNode;
46
46
 
47
47
  cmsHotelData?: any[];
48
+ cmsGroupTourData?: any[];
48
49
  tags?: TideTag[];
49
50
 
50
51
  languageCode?: string;
@@ -1174,16 +1174,8 @@
1174
1174
  width: 100%;
1175
1175
 
1176
1176
  @include mixins.media-xs {
1177
- grid-template-columns: 1fr 0.6fr;
1178
- }
1179
-
1180
- @include mixins.media-lg {
1181
1177
  grid-template-columns: 1fr 0.8fr;
1182
1178
  }
1183
-
1184
- @include mixins.media-xl {
1185
- grid-template-columns: 1fr 0.6fr;
1186
- }
1187
1179
  }
1188
1180
 
1189
1181
  &__header {