@royaloperahouse/chord 0.7.44 → 0.7.45

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/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## [0.7.45]
4
+ - PromoWithTags: extend the component to handle extra content
5
+
3
6
  ## [0.7.44]
4
7
  - PromoWithTags, PromoWithTitle: change grid for text content on tablet view
5
8
 
@@ -5446,7 +5446,7 @@ var PeopleListing = function PeopleListing(_ref) {
5446
5446
  }));
5447
5447
  };
5448
5448
 
5449
- var _templateObject$O, _templateObject2$w, _templateObject3$o, _templateObject4$i, _templateObject5$e, _templateObject6$b, _templateObject7$7, _templateObject8$6, _templateObject9$4, _templateObject10$3, _templateObject11$2;
5449
+ var _templateObject$O, _templateObject2$w, _templateObject3$o, _templateObject4$i, _templateObject5$e, _templateObject6$b, _templateObject7$7, _templateObject8$6, _templateObject9$4, _templateObject10$3, _templateObject11$2, _templateObject12, _templateObject13, _templateObject14, _templateObject15;
5450
5450
  var LENGTH_TEXT = 28;
5451
5451
  var LENGTH_TEXT_TABLET$1 = 10;
5452
5452
  var PromoWithTagsGrid = /*#__PURE__*/styled__default(Grid)(_templateObject$O || (_templateObject$O = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n grid-template-areas: ", ";\n\n @media ", " {\n & {\n grid-template-areas: ", ";\n }\n }\n\n @media ", " {\n & {\n grid-template-columns: var(--grid-margin) minmax(0, 1fr) var(--grid-margin);\n grid-template-rows: min-content 24px min-content;\n gap: 0;\n grid-template-areas:\n 'row1 row1 row1'\n '. . .'\n '. row2 .';\n }\n }\n"])), function (_ref) {
@@ -5456,34 +5456,37 @@ var PromoWithTagsGrid = /*#__PURE__*/styled__default(Grid)(_templateObject$O ||
5456
5456
  var imageToLeft = _ref2.imageToLeft;
5457
5457
  return imageToLeft ? "'left left left left left left left right right right right right right .'" : "'. left left left left left left right right right right right right right'";
5458
5458
  }, devices.mobile);
5459
- var PromoWithTagsImageWrapper = /*#__PURE__*/styled__default.div(_templateObject2$w || (_templateObject2$w = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n grid-area: ", ";\n align-self: center;\n @media ", " {\n & {\n grid-area: row1;\n }\n }\n"])), function (_ref3) {
5459
+ var PromoWithTagsExtraContentWrapper = /*#__PURE__*/styled__default.div(_templateObject2$w || (_templateObject2$w = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: relative;\n grid-area: ", ";\n align-self: center;\n @media ", " {\n & {\n grid-area: row1;\n }\n }\n"])), function (_ref3) {
5460
5460
  var imageToLeft = _ref3.imageToLeft;
5461
5461
  return imageToLeft ? 'left' : 'right';
5462
5462
  }, devices.mobile);
5463
- var PromoWithTagsContentWrapper = /*#__PURE__*/styled__default.div(_templateObject3$o || (_templateObject3$o = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n grid-area: ", ";\n align-self: center;\n @media ", " {\n & {\n grid-area: row2;\n align-self: start;\n }\n }\n"])), function (_ref4) {
5463
+ var PromoWithTagsContentWrapper = /*#__PURE__*/styled__default.div(_templateObject3$o || (_templateObject3$o = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n grid-area: ", ";\n align-self: center;\n @media ", " {\n & {\n display: ", ";\n grid-area: row2;\n align-self: start;\n }\n }\n"])), function (_ref4) {
5464
5464
  var imageToLeft = _ref4.imageToLeft;
5465
5465
  return imageToLeft ? 'right' : 'left';
5466
- }, devices.mobile);
5466
+ }, devices.mobile, function (_ref5) {
5467
+ var hideSection = _ref5.hideSection;
5468
+ return hideSection ? 'none' : 'block';
5469
+ });
5467
5470
  var PromoWithTagsContainer = /*#__PURE__*/styled__default.div(_templateObject4$i || (_templateObject4$i = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n h2,\n h3 {\n margin: 0 0 16px;\n }\n"])));
5468
5471
  var PromoWithTagsSubtitle = /*#__PURE__*/styled__default.span(_templateObject5$e || (_templateObject5$e = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-1);\n font-weight: var(--font-weight-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n margin-bottom: var(--editorial-subtitle-margin-bottom);\n display: block;\n overflow-wrap: break-word;\n"])));
5469
- var PromoWithTagsText = /*#__PURE__*/styled__default.div(_templateObject6$b || (_templateObject6$b = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n text-transform: var(--text-transform-body);\n margin: 0;\n padding: 0;\n white-space: break-spaces;\n overflow-wrap: break-word;\n\n h5,\n h6 {\n margin: 0 0 4px 0;\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-2);\n font-weight: var(--font-weight-subtitle-2);\n line-height: var(--line-height-subtitle-2);\n letter-spacing: var(--letter-spacing-subtitle-2);\n text-transform: var(--text-transform-subtitle);\n overflow-wrap: break-word;\n }\n\n em {\n font-family: var(--font-family-body-italics);\n }\n\n a {\n text-decoration: underline;\n cursor: pointer;\n\n &[href^='tel:'] {\n text-decoration: none;\n }\n\n &:link {\n color: ", ";\n }\n\n &:visited {\n color: ", ";\n }\n\n &:hover {\n color: ", ";\n }\n }\n"])), function (_ref5) {
5470
- var theme = _ref5.theme;
5471
- return theme.colors.black;
5472
- }, function (_ref6) {
5472
+ var PromoWithTagsText = /*#__PURE__*/styled__default.div(_templateObject6$b || (_templateObject6$b = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n text-transform: var(--text-transform-body);\n margin: 0;\n padding: 0;\n white-space: break-spaces;\n overflow-wrap: break-word;\n\n h5,\n h6 {\n margin: 0 0 4px 0;\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-2);\n font-weight: var(--font-weight-subtitle-2);\n line-height: var(--line-height-subtitle-2);\n letter-spacing: var(--letter-spacing-subtitle-2);\n text-transform: var(--text-transform-subtitle);\n overflow-wrap: break-word;\n }\n\n em {\n font-family: var(--font-family-body-italics);\n }\n\n a {\n text-decoration: underline;\n cursor: pointer;\n\n &[href^='tel:'] {\n text-decoration: none;\n }\n\n &:link {\n color: ", ";\n }\n\n &:visited {\n color: ", ";\n }\n\n &:hover {\n color: ", ";\n }\n }\n"])), function (_ref6) {
5473
5473
  var theme = _ref6.theme;
5474
- return theme.colors.darkgrey;
5474
+ return theme.colors.black;
5475
5475
  }, function (_ref7) {
5476
5476
  var theme = _ref7.theme;
5477
+ return theme.colors.darkgrey;
5478
+ }, function (_ref8) {
5479
+ var theme = _ref8.theme;
5477
5480
  return theme.colors.primary;
5478
5481
  });
5479
- var ButtonsContainer$2 = /*#__PURE__*/styled__default.div(_templateObject7$7 || (_templateObject7$7 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n gap: 16px;\n margin-top: 24px;\n\n ", ";\n\n ", "\n\n @media ", " {\n gap: 24px;\n flex-direction: column;\n align-items: center;\n }\n\n @media ", " {\n gap: 24px;\n align-items: flex-start;\n\n ", "\n }\n"])), function (_ref8) {
5480
- var hasTextLinks = _ref8.hasTextLinks;
5482
+ var ButtonsContainer$2 = /*#__PURE__*/styled__default.div(_templateObject7$7 || (_templateObject7$7 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n gap: 16px;\n margin-top: 24px;\n\n ", ";\n\n ", "\n\n @media ", " {\n gap: 24px;\n flex-direction: column;\n align-items: center;\n }\n\n @media ", " {\n gap: 24px;\n align-items: flex-start;\n\n ", "\n }\n"])), function (_ref9) {
5483
+ var hasTextLinks = _ref9.hasTextLinks;
5481
5484
  return "margin-top: " + (hasTextLinks ? '0' : '24px') + ";";
5482
- }, function (_ref9) {
5483
- var _ref9$primaryButtonTe = _ref9.primaryButtonTextLength,
5484
- primaryButtonTextLength = _ref9$primaryButtonTe === void 0 ? 0 : _ref9$primaryButtonTe,
5485
- _ref9$tertiaryButtonT = _ref9.tertiaryButtonTextLength,
5486
- tertiaryButtonTextLength = _ref9$tertiaryButtonT === void 0 ? 0 : _ref9$tertiaryButtonT;
5485
+ }, function (_ref10) {
5486
+ var _ref10$primaryButtonT = _ref10.primaryButtonTextLength,
5487
+ primaryButtonTextLength = _ref10$primaryButtonT === void 0 ? 0 : _ref10$primaryButtonT,
5488
+ _ref10$tertiaryButton = _ref10.tertiaryButtonTextLength,
5489
+ tertiaryButtonTextLength = _ref10$tertiaryButton === void 0 ? 0 : _ref10$tertiaryButton;
5487
5490
  var isLinksLayoutColumn = primaryButtonTextLength >= LENGTH_TEXT || tertiaryButtonTextLength >= LENGTH_TEXT;
5488
5491
 
5489
5492
  if (isLinksLayoutColumn) {
@@ -5491,11 +5494,11 @@ var ButtonsContainer$2 = /*#__PURE__*/styled__default.div(_templateObject7$7 ||
5491
5494
  }
5492
5495
 
5493
5496
  return '';
5494
- }, devices.mobile, devices.tablet, function (_ref10) {
5495
- var _ref10$primaryButtonT = _ref10.primaryButtonTextLength,
5496
- primaryButtonTextLength = _ref10$primaryButtonT === void 0 ? 0 : _ref10$primaryButtonT,
5497
- _ref10$tertiaryButton = _ref10.tertiaryButtonTextLength,
5498
- tertiaryButtonTextLength = _ref10$tertiaryButton === void 0 ? 0 : _ref10$tertiaryButton;
5497
+ }, devices.mobile, devices.tablet, function (_ref11) {
5498
+ var _ref11$primaryButtonT = _ref11.primaryButtonTextLength,
5499
+ primaryButtonTextLength = _ref11$primaryButtonT === void 0 ? 0 : _ref11$primaryButtonT,
5500
+ _ref11$tertiaryButton = _ref11.tertiaryButtonTextLength,
5501
+ tertiaryButtonTextLength = _ref11$tertiaryButton === void 0 ? 0 : _ref11$tertiaryButton;
5499
5502
  var isLinksLayoutColumnTablet = primaryButtonTextLength >= LENGTH_TEXT_TABLET$1 || tertiaryButtonTextLength >= LENGTH_TEXT_TABLET$1;
5500
5503
 
5501
5504
  if (isLinksLayoutColumnTablet) {
@@ -5504,13 +5507,17 @@ var ButtonsContainer$2 = /*#__PURE__*/styled__default.div(_templateObject7$7 ||
5504
5507
 
5505
5508
  return '';
5506
5509
  });
5507
- var PromoWithTagsTagWrapper = /*#__PURE__*/styled__default.div(_templateObject8$6 || (_templateObject8$6 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin-bottom: ", ";\n"])), function (_ref11) {
5508
- var marginBottom = _ref11.marginBottom;
5510
+ var PromoWithTagsTagWrapper = /*#__PURE__*/styled__default.div(_templateObject8$6 || (_templateObject8$6 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin-bottom: ", ";\n"])), function (_ref12) {
5511
+ var marginBottom = _ref12.marginBottom;
5509
5512
  return marginBottom + "px";
5510
5513
  });
5511
5514
  var PromoWithTagsAdditionalText = /*#__PURE__*/styled__default(PromoWithTagsText)(_templateObject9$4 || (_templateObject9$4 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin: 24px 0;\n"])));
5512
5515
  var TextLinksContainer = /*#__PURE__*/styled__default.div(_templateObject10$3 || (_templateObject10$3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n flex-wrap: wrap;\n margin: 24px 0 4px 0;\n"])));
5513
5516
  var TextLinkWrapper$2 = /*#__PURE__*/styled__default.div(_templateObject11$2 || (_templateObject11$2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin-right: 24px;\n margin-bottom: 20px;\n\n &:last-child {\n margin-right: 0;\n }\n"])));
5517
+ var ExtraContentWrapper = /*#__PURE__*/styled__default.div(_templateObject12 || (_templateObject12 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: relative;\n padding-right: 68px;\n\n @media ", " {\n padding: 30px 0 0;\n }\n\n @media ", " {\n padding: 0;\n position: initial;\n }\n"])), devices.tablet, devices.mobile);
5518
+ var IconWrapper$2 = /*#__PURE__*/styled__default.div(_templateObject13 || (_templateObject13 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n cursor: pointer;\n position: absolute;\n top: 25px;\n right: 35px;\n width: 24px;\n height: 24px;\n\n @media ", " {\n top: 30px;\n right: 30px;\n }\n\n @media ", " {\n top: 3px;\n right: 20px;\n }\n"])), devices.tablet, devices.mobile);
5519
+ var PrimaryButtonWrapper$2 = /*#__PURE__*/styled__default.div(_templateObject14 || (_templateObject14 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n height: var(--button-height);\n"])));
5520
+ var MobileTitleWrapper = /*#__PURE__*/styled__default.div(_templateObject15 || (_templateObject15 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: none;\n margin: 0 50px 0 20px;\n\n h2,\n h3 {\n margin: 0;\n }\n\n @media ", " {\n display: block;\n }\n"])), devices.mobile);
5514
5521
 
5515
5522
  var _excluded$i = ["text"],
5516
5523
  _excluded2$2 = ["text"],
@@ -5532,7 +5539,12 @@ var PromoWithTags = function PromoWithTags(_ref) {
5532
5539
  aboveTitleTags = _ref.aboveTitleTags,
5533
5540
  belowTitleTags = _ref.belowTitleTags,
5534
5541
  middleText = _ref.middleText,
5535
- bottomText = _ref.bottomText;
5542
+ bottomText = _ref.bottomText,
5543
+ image = _ref.image;
5544
+
5545
+ var _useState = React.useState(false),
5546
+ showExtraContent = _useState[0],
5547
+ setShowExtraContent = _useState[1];
5536
5548
 
5537
5549
  var truncate = function truncate(str, n) {
5538
5550
  return str.length >= n ? str.substr(0, n) : str;
@@ -5540,6 +5552,19 @@ var PromoWithTags = function PromoWithTags(_ref) {
5540
5552
 
5541
5553
  var imageToLeft = imagePosition === 'left';
5542
5554
  var titleLevel = titleSize === 'large' ? 2 : 3;
5555
+ var isExtraContentPresent = !!children;
5556
+ var anchorLink = title.replace(' ', '-').toLocaleLowerCase() + "-content";
5557
+
5558
+ var handleExtraContent = function handleExtraContent(e) {
5559
+ e.preventDefault();
5560
+ setShowExtraContent(true);
5561
+
5562
+ if (window.matchMedia && window.matchMedia(devices.mobile).matches) {
5563
+ window.location.href = "#" + anchorLink;
5564
+ }
5565
+ };
5566
+
5567
+ var defaultOnClickHandler = isExtraContentPresent ? handleExtraContent : undefined;
5543
5568
  var primaryButton = links == null ? void 0 : links[0];
5544
5569
 
5545
5570
  var _ref2 = primaryButton || {},
@@ -5564,15 +5589,31 @@ var PromoWithTags = function PromoWithTags(_ref) {
5564
5589
  return /*#__PURE__*/React__default.createElement(TextLinkWrapper$2, null, /*#__PURE__*/React__default.createElement(TextLink, Object.assign({}, restTextLink), textLinkText));
5565
5590
  }) : null;
5566
5591
  return /*#__PURE__*/React__default.createElement(PromoWithTagsGrid, {
5592
+ id: anchorLink,
5567
5593
  imageToLeft: imageToLeft
5568
- }, /*#__PURE__*/React__default.createElement(PromoWithTagsImageWrapper, {
5569
- "data-testid": "image-wrapper",
5594
+ }, /*#__PURE__*/React__default.createElement(PromoWithTagsExtraContentWrapper, {
5595
+ "data-testid": "extra-content-wrapper",
5570
5596
  imageToLeft: imageToLeft
5571
- }, /*#__PURE__*/React__default.createElement(ImageAspectRatioWrapper, {
5597
+ }, showExtraContent && /*#__PURE__*/React__default.createElement(MobileTitleWrapper, null, /*#__PURE__*/React__default.createElement(Header, {
5598
+ level: titleLevel
5599
+ }, title)), /*#__PURE__*/React__default.createElement(ImageAspectRatioWrapper, {
5572
5600
  aspectRatio: exports.AspectRatio['4:3']
5573
- }, children)), /*#__PURE__*/React__default.createElement(PromoWithTagsContentWrapper, {
5601
+ }, isExtraContentPresent && showExtraContent ? /*#__PURE__*/React__default.createElement(ExtraContentWrapper, null, children, /*#__PURE__*/React__default.createElement(IconWrapper$2, {
5602
+ "data-testid": "extra-content-close-button",
5603
+ onClick: function onClick() {
5604
+ return setShowExtraContent(false);
5605
+ }
5606
+ }, /*#__PURE__*/React__default.createElement(Icon, {
5607
+ iconName: "Close",
5608
+ color: exports.Colors.Black
5609
+ }))) : image && /*#__PURE__*/React__default.createElement("img", {
5610
+ "data-testid": "promo-with-tags-image",
5611
+ src: image.src,
5612
+ alt: image.alt
5613
+ }))), /*#__PURE__*/React__default.createElement(PromoWithTagsContentWrapper, {
5574
5614
  "data-testid": "content-wrapper",
5575
- imageToLeft: imageToLeft
5615
+ imageToLeft: imageToLeft,
5616
+ hideSection: showExtraContent
5576
5617
  }, /*#__PURE__*/React__default.createElement(PromoWithTagsContainer, null, !!(aboveTitleTags != null && aboveTitleTags.length) && /*#__PURE__*/React__default.createElement(PromoWithTagsTagWrapper, {
5577
5618
  marginBottom: 16
5578
5619
  }, /*#__PURE__*/React__default.createElement(TypeTags, {
@@ -5600,7 +5641,9 @@ var PromoWithTags = function PromoWithTags(_ref) {
5600
5641
  "data-testid": "buttons-wrapper",
5601
5642
  primaryButtonTextLength: primaryButtonText.length,
5602
5643
  tertiaryButtonTextLength: tertiaryButtonText.length
5603
- }, primaryButton && /*#__PURE__*/React__default.createElement(PrimaryButton, Object.assign({}, restPrimaryButton), primaryButtonTextTruncate), tertiaryButton && /*#__PURE__*/React__default.createElement(Button$1, Object.assign({}, restTertiaryButton), tertiaryButtonTextTruncate))));
5644
+ }, primaryButton && /*#__PURE__*/React__default.createElement(PrimaryButtonWrapper$2, null, !showExtraContent && /*#__PURE__*/React__default.createElement(PrimaryButton, Object.assign({
5645
+ onClick: defaultOnClickHandler
5646
+ }, restPrimaryButton), primaryButtonTextTruncate)), tertiaryButton && /*#__PURE__*/React__default.createElement(Button$1, Object.assign({}, restTertiaryButton), tertiaryButtonTextTruncate))));
5604
5647
  };
5605
5648
 
5606
5649
  var _templateObject$P, _templateObject2$x, _templateObject3$p, _templateObject4$j, _templateObject5$f, _templateObject6$c, _templateObject7$8;