@qite/tide-booking-component 1.4.83 → 1.4.85

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',
@@ -29940,6 +29940,7 @@ var Navbar = function (_a) {
29940
29940
  var _b;
29941
29941
  var currentPath = _a.currentPath,
29942
29942
  logo = _a.logo,
29943
+ onLogoClick = _a.onLogoClick,
29943
29944
  topLinks = _a.topLinks,
29944
29945
  items = _a.items,
29945
29946
  language = _a.language,
@@ -30234,7 +30235,7 @@ var Navbar = function (_a) {
30234
30235
  React__default['default'].createElement(
30235
30236
  'div',
30236
30237
  { className: 'nav__container' },
30237
- React__default['default'].createElement('div', { className: 'nav__logo' }, logo),
30238
+ React__default['default'].createElement('div', { className: 'nav__logo', onClick: onLogoClick }, logo),
30238
30239
  React__default['default'].createElement(
30239
30240
  'div',
30240
30241
  { className: 'nav__wrapper' },
@@ -30480,6 +30481,7 @@ var defaultPayments = [
30480
30481
  var Footer = function (_a) {
30481
30482
  var className = _a.className,
30482
30483
  logo = _a.logo,
30484
+ onLogoClick = _a.onLogoClick,
30483
30485
  _b = _a.social,
30484
30486
  social = _b === void 0 ? defaultSocial : _b,
30485
30487
  _c = _a.columns,
@@ -30499,7 +30501,7 @@ var Footer = function (_a) {
30499
30501
  { className: 'footer__top' },
30500
30502
  React__default['default'].createElement(
30501
30503
  'div',
30502
- { className: 'footer__logo' },
30504
+ { className: 'footer__logo', onClick: onLogoClick },
30503
30505
  logo !== null && logo !== void 0 ? logo : React__default['default'].createElement(DefaultLogo, null)
30504
30506
  ),
30505
30507
  React__default['default'].createElement(
@@ -42576,11 +42578,7 @@ var HotelCard = function (_a) {
42576
42578
  return (e.currentTarget.style.transform = 'scale(1)');
42577
42579
  }
42578
42580
  },
42579
- React__default['default'].createElement('div', {
42580
- dangerouslySetInnerHTML: {
42581
- __html: he.decode(result.contents)
42582
- }
42583
- }),
42581
+ React__default['default'].createElement('div', { dangerouslySetInnerHTML: { __html: he.decode(result.contents) } }),
42584
42582
  React__default['default'].createElement(
42585
42583
  'div',
42586
42584
  { className: 'search__result-card__footer' },
@@ -45793,9 +45791,10 @@ var Filters = function (_a) {
45793
45791
  };
45794
45792
 
45795
45793
  var GroupTourCard = function (_a) {
45796
- var _b;
45794
+ var _b, _c, _d, _e, _f, _g;
45797
45795
  var result = _a.result,
45798
- languageCode = _a.languageCode;
45796
+ languageCode = _a.languageCode,
45797
+ cmsItem = _a.cmsItem;
45799
45798
  var dispatch = reactRedux.useDispatch();
45800
45799
  var translations = getTranslations(languageCode !== null && languageCode !== void 0 ? languageCode : 'en-GB');
45801
45800
  var selectedSearchResultId = reactRedux.useSelector(function (state) {
@@ -45820,20 +45819,34 @@ var GroupTourCard = function (_a) {
45820
45819
  React__default['default'].createElement(
45821
45820
  'div',
45822
45821
  { className: 'search__result-card__allotment' },
45822
+ React__default['default'].createElement(
45823
+ 'div',
45824
+ { className: 'search__result-card__allotment__img-wrapper' },
45825
+ React__default['default'].createElement('img', {
45826
+ src:
45827
+ (_e =
45828
+ (_d = (_c = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.content) === null || _c === void 0 ? void 0 : _c.images) === null ||
45829
+ _d === void 0
45830
+ ? void 0
45831
+ : _d.header) === null || _e === void 0
45832
+ ? void 0
45833
+ : _e.url,
45834
+ alt: result.name,
45835
+ className: 'search__result-card__allotment__img'
45836
+ })
45837
+ ),
45823
45838
  React__default['default'].createElement(
45824
45839
  'div',
45825
45840
  { 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
- ),
45841
+ React__default['default'].createElement('h3', { className: 'search__result-card__allotment__title' }, result.name),
45842
+ ((_g = (_f = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.content) === null || _f === void 0 ? void 0 : _f.introductie) === null ||
45843
+ _g === void 0
45844
+ ? void 0
45845
+ : _g.intro) &&
45846
+ React__default['default'].createElement('div', {
45847
+ className: 'search__result-card__allotment__description',
45848
+ dangerouslySetInnerHTML: { __html: he.decode(cmsItem.content.introductie.intro) }
45849
+ }),
45837
45850
  React__default['default'].createElement(
45838
45851
  'div',
45839
45852
  { className: 'search__result-card__allotment__container' },
@@ -45972,11 +45985,36 @@ var GroupTourResults = function (_a) {
45972
45985
  },
45973
45986
  [activeTab]
45974
45987
  );
45988
+ var cmsMap = React__default['default'].useMemo(
45989
+ function () {
45990
+ var _a;
45991
+ var map = new Map();
45992
+ (_a = context.cmsGroupTourData) === null || _a === void 0
45993
+ ? void 0
45994
+ : _a.forEach(function (item) {
45995
+ var _a, _b, _c;
45996
+ var code =
45997
+ (_c =
45998
+ (_b = (_a = item === null || item === void 0 ? void 0 : item.content) === null || _a === void 0 ? void 0 : _a.introductie) === null ||
45999
+ _b === void 0
46000
+ ? void 0
46001
+ : _b.data) === null || _c === void 0
46002
+ ? void 0
46003
+ : _c.code;
46004
+ if (code) {
46005
+ map.set(code, item);
46006
+ }
46007
+ });
46008
+ return map;
46009
+ },
46010
+ [context.cmsGroupTourData]
46011
+ );
45975
46012
  return React__default['default'].createElement(
45976
46013
  'div',
45977
46014
  { className: 'search__results__cards search__results__cards--'.concat(activeTab) },
45978
46015
  filteredResults.map(function (result, index) {
45979
- return React__default['default'].createElement(GroupTourCard, { key: index, result: result });
46016
+ var cmsItem = cmsMap.get(result.code);
46017
+ return React__default['default'].createElement(GroupTourCard, { key: index, result: result, cmsItem: cmsItem });
45980
46018
  })
45981
46019
  );
45982
46020
  };
@@ -19,6 +19,7 @@ export interface FooterProps {
19
19
  className?: string;
20
20
  /** Optional override for the logo (defaults to the SVG from your footer) */
21
21
  logo?: React.ReactNode;
22
+ onLogoClick?: () => void;
22
23
  social?: SocialLink[];
23
24
  columns?: FooterColumn[];
24
25
  copyrightText?: string;
@@ -19,6 +19,7 @@ export interface NavItem {
19
19
  export interface NavbarProps {
20
20
  currentPath?: string;
21
21
  logo: React.ReactNode;
22
+ onLogoClick?: () => void;
22
23
  topLinks: NavLink[];
23
24
  items: NavItem[];
24
25
  language: Language;
@@ -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',
@@ -29830,6 +29830,7 @@ var Navbar = function (_a) {
29830
29830
  var _b;
29831
29831
  var currentPath = _a.currentPath,
29832
29832
  logo = _a.logo,
29833
+ onLogoClick = _a.onLogoClick,
29833
29834
  topLinks = _a.topLinks,
29834
29835
  items = _a.items,
29835
29836
  language = _a.language,
@@ -30122,7 +30123,7 @@ var Navbar = function (_a) {
30122
30123
  React__default.createElement(
30123
30124
  'div',
30124
30125
  { className: 'nav__container' },
30125
- React__default.createElement('div', { className: 'nav__logo' }, logo),
30126
+ React__default.createElement('div', { className: 'nav__logo', onClick: onLogoClick }, logo),
30126
30127
  React__default.createElement(
30127
30128
  'div',
30128
30129
  { className: 'nav__wrapper' },
@@ -30368,6 +30369,7 @@ var defaultPayments = [
30368
30369
  var Footer = function (_a) {
30369
30370
  var className = _a.className,
30370
30371
  logo = _a.logo,
30372
+ onLogoClick = _a.onLogoClick,
30371
30373
  _b = _a.social,
30372
30374
  social = _b === void 0 ? defaultSocial : _b,
30373
30375
  _c = _a.columns,
@@ -30387,7 +30389,7 @@ var Footer = function (_a) {
30387
30389
  { className: 'footer__top' },
30388
30390
  React__default.createElement(
30389
30391
  'div',
30390
- { className: 'footer__logo' },
30392
+ { className: 'footer__logo', onClick: onLogoClick },
30391
30393
  logo !== null && logo !== void 0 ? logo : React__default.createElement(DefaultLogo, null)
30392
30394
  ),
30393
30395
  React__default.createElement(
@@ -42399,11 +42401,7 @@ var HotelCard = function (_a) {
42399
42401
  return (e.currentTarget.style.transform = 'scale(1)');
42400
42402
  }
42401
42403
  },
42402
- React__default.createElement('div', {
42403
- dangerouslySetInnerHTML: {
42404
- __html: he.decode(result.contents)
42405
- }
42406
- }),
42404
+ React__default.createElement('div', { dangerouslySetInnerHTML: { __html: he.decode(result.contents) } }),
42407
42405
  React__default.createElement(
42408
42406
  'div',
42409
42407
  { className: 'search__result-card__footer' },
@@ -45545,9 +45543,10 @@ var Filters = function (_a) {
45545
45543
  };
45546
45544
 
45547
45545
  var GroupTourCard = function (_a) {
45548
- var _b;
45546
+ var _b, _c, _d, _e, _f, _g;
45549
45547
  var result = _a.result,
45550
- languageCode = _a.languageCode;
45548
+ languageCode = _a.languageCode,
45549
+ cmsItem = _a.cmsItem;
45551
45550
  var dispatch = useDispatch();
45552
45551
  var translations = getTranslations(languageCode !== null && languageCode !== void 0 ? languageCode : 'en-GB');
45553
45552
  var selectedSearchResultId = useSelector(function (state) {
@@ -45572,20 +45571,34 @@ var GroupTourCard = function (_a) {
45572
45571
  React__default.createElement(
45573
45572
  'div',
45574
45573
  { className: 'search__result-card__allotment' },
45574
+ React__default.createElement(
45575
+ 'div',
45576
+ { className: 'search__result-card__allotment__img-wrapper' },
45577
+ React__default.createElement('img', {
45578
+ src:
45579
+ (_e =
45580
+ (_d = (_c = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.content) === null || _c === void 0 ? void 0 : _c.images) === null ||
45581
+ _d === void 0
45582
+ ? void 0
45583
+ : _d.header) === null || _e === void 0
45584
+ ? void 0
45585
+ : _e.url,
45586
+ alt: result.name,
45587
+ className: 'search__result-card__allotment__img'
45588
+ })
45589
+ ),
45575
45590
  React__default.createElement(
45576
45591
  'div',
45577
45592
  { 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
- ),
45593
+ React__default.createElement('h3', { className: 'search__result-card__allotment__title' }, result.name),
45594
+ ((_g = (_f = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.content) === null || _f === void 0 ? void 0 : _f.introductie) === null ||
45595
+ _g === void 0
45596
+ ? void 0
45597
+ : _g.intro) &&
45598
+ React__default.createElement('div', {
45599
+ className: 'search__result-card__allotment__description',
45600
+ dangerouslySetInnerHTML: { __html: he.decode(cmsItem.content.introductie.intro) }
45601
+ }),
45589
45602
  React__default.createElement(
45590
45603
  'div',
45591
45604
  { className: 'search__result-card__allotment__container' },
@@ -45724,11 +45737,36 @@ var GroupTourResults = function (_a) {
45724
45737
  },
45725
45738
  [activeTab]
45726
45739
  );
45740
+ var cmsMap = React__default.useMemo(
45741
+ function () {
45742
+ var _a;
45743
+ var map = new Map();
45744
+ (_a = context.cmsGroupTourData) === null || _a === void 0
45745
+ ? void 0
45746
+ : _a.forEach(function (item) {
45747
+ var _a, _b, _c;
45748
+ var code =
45749
+ (_c =
45750
+ (_b = (_a = item === null || item === void 0 ? void 0 : item.content) === null || _a === void 0 ? void 0 : _a.introductie) === null ||
45751
+ _b === void 0
45752
+ ? void 0
45753
+ : _b.data) === null || _c === void 0
45754
+ ? void 0
45755
+ : _c.code;
45756
+ if (code) {
45757
+ map.set(code, item);
45758
+ }
45759
+ });
45760
+ return map;
45761
+ },
45762
+ [context.cmsGroupTourData]
45763
+ );
45727
45764
  return React__default.createElement(
45728
45765
  'div',
45729
45766
  { className: 'search__results__cards search__results__cards--'.concat(activeTab) },
45730
45767
  filteredResults.map(function (result, index) {
45731
- return React__default.createElement(GroupTourCard, { key: index, result: result });
45768
+ var cmsItem = cmsMap.get(result.code);
45769
+ return React__default.createElement(GroupTourCard, { key: index, result: result, cmsItem: cmsItem });
45732
45770
  })
45733
45771
  );
45734
45772
  };
@@ -19,6 +19,7 @@ export interface FooterProps {
19
19
  className?: string;
20
20
  /** Optional override for the logo (defaults to the SVG from your footer) */
21
21
  logo?: React.ReactNode;
22
+ onLogoClick?: () => void;
22
23
  social?: SocialLink[];
23
24
  columns?: FooterColumn[];
24
25
  copyrightText?: string;
@@ -19,6 +19,7 @@ export interface NavItem {
19
19
  export interface NavbarProps {
20
20
  currentPath?: string;
21
21
  logo: React.ReactNode;
22
+ onLogoClick?: () => void;
22
23
  topLinks: NavLink[];
23
24
  items: NavItem[];
24
25
  language: Language;
@@ -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.85",
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">
@@ -104,6 +104,7 @@ const defaultPayments: PaymentIcon[] = [
104
104
  export const Footer: React.FC<FooterProps> = ({
105
105
  className,
106
106
  logo,
107
+ onLogoClick,
107
108
  social = defaultSocial,
108
109
  columns = defaultColumns,
109
110
  copyrightText = '© 2024 Travel Agency. All rights reserved.',
@@ -113,7 +114,9 @@ export const Footer: React.FC<FooterProps> = ({
113
114
  <footer className={['footer', className].filter(Boolean).join(' ')}>
114
115
  <div className="footer__container">
115
116
  <div className="footer__top">
116
- <div className="footer__logo">{logo ?? <DefaultLogo />}</div>
117
+ <div className="footer__logo" onClick={onLogoClick}>
118
+ {logo ?? <DefaultLogo />}
119
+ </div>
117
120
 
118
121
  <div className="footer__social">
119
122
  {social.map((item) => (
@@ -24,6 +24,7 @@ export interface FooterProps {
24
24
 
25
25
  /** Optional override for the logo (defaults to the SVG from your footer) */
26
26
  logo?: React.ReactNode;
27
+ onLogoClick?: () => void;
27
28
 
28
29
  social?: SocialLink[];
29
30
 
@@ -4,7 +4,20 @@ import Icon from '../components/icon';
4
4
  import { NavbarProps, NavItem } from '../navbar/types';
5
5
  import { getTranslations } from '../../shared/utils/localization-util';
6
6
 
7
- const Navbar: React.FC<NavbarProps> = ({ currentPath, logo, topLinks, items, language, languages, onLanguageChange, onSearch, member, onLogin, onLogout }) => {
7
+ const Navbar: React.FC<NavbarProps> = ({
8
+ currentPath,
9
+ logo,
10
+ onLogoClick,
11
+ topLinks,
12
+ items,
13
+ language,
14
+ languages,
15
+ onLanguageChange,
16
+ onSearch,
17
+ member,
18
+ onLogin,
19
+ onLogout
20
+ }) => {
8
21
  const [menuOpen, setMenuOpen] = useState(false);
9
22
  const [query, setQuery] = useState('');
10
23
  const [activeMobileGroup, setActiveMobileGroup] = useState<string>();
@@ -247,7 +260,9 @@ const Navbar: React.FC<NavbarProps> = ({ currentPath, logo, topLinks, items, lan
247
260
  </div>
248
261
  <nav className="nav__primary">
249
262
  <div className="nav__container">
250
- <div className="nav__logo">{logo}</div>
263
+ <div className="nav__logo" onClick={onLogoClick}>
264
+ {logo}
265
+ </div>
251
266
  <div className="nav__wrapper">
252
267
  <div className="nav__links">{items && items.map(renderNavItem)}</div>
253
268
  <div className="nav__search">
@@ -26,6 +26,7 @@ export interface NavbarProps {
26
26
  currentPath?: string;
27
27
 
28
28
  logo: React.ReactNode;
29
+ onLogoClick?: () => void;
29
30
 
30
31
  topLinks: NavLink[];
31
32
  items: NavItem[];
@@ -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;
@@ -29,6 +29,7 @@
29
29
  &__logo {
30
30
  width: auto;
31
31
  height: 40px;
32
+ cursor: pointer;
32
33
 
33
34
  svg,
34
35
  img {
@@ -232,6 +232,7 @@
232
232
  width: auto;
233
233
  height: 100%;
234
234
  padding: 15px 0px;
235
+ cursor: pointer;
235
236
 
236
237
  svg {
237
238
  height: 100%;
@@ -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 {