@royaloperahouse/chord 2.1.9-b-chord-development → 2.1.9-c-chord-development

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.
@@ -9,6 +9,7 @@ var React__default = _interopDefault(React);
9
9
  var styled = require('styled-components');
10
10
  var styled__default = _interopDefault(styled);
11
11
  var moment = _interopDefault(require('moment'));
12
+ var server = require('react-dom/server');
12
13
 
13
14
  (function (Colors) {
14
15
  Colors["White"] = "white";
@@ -5920,6 +5921,14 @@ var truncateHtmlString = function truncateHtmlString(str, resultLength, addDots)
5920
5921
  var truncate = function truncate(str, n) {
5921
5922
  return str.length >= n ? str.substring(0, n) : str;
5922
5923
  };
5924
+ var truncateReactNodeString = function truncateReactNodeString(node, resultLength, addDots) {
5925
+ if (addDots === void 0) {
5926
+ addDots = false;
5927
+ }
5928
+
5929
+ var nodeString = server.renderToString( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, node));
5930
+ return truncateHtmlString(nodeString, resultLength, addDots);
5931
+ };
5923
5932
 
5924
5933
  var _excluded$b = ["text"],
5925
5934
  _excluded2$1 = ["text"];
@@ -8224,83 +8233,97 @@ var MiniCard = function MiniCard(_ref) {
8224
8233
  }, title)))));
8225
8234
  };
8226
8235
 
8227
- var _templateObject$17, _templateObject2$O;
8236
+ var _templateObject$17, _templateObject2$O, _templateObject3$F, _templateObject4$w;
8228
8237
  var ReadMoreContainer = /*#__PURE__*/styled__default.div(_templateObject$17 || (_templateObject$17 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin: 0px 0px 12px 0px !important;\n }\n width: 100%;\n"])));
8229
8238
  var LinkContainer = /*#__PURE__*/styled__default.div(_templateObject2$O || (_templateObject2$O = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n padding-top: 24px;\n gap: 8px;\n\n :hover {\n cursor: pointer;\n }\n"])));
8239
+ var FullTextContainer = /*#__PURE__*/styled__default.div(_templateObject3$F || (_templateObject3$F = /*#__PURE__*/_taggedTemplateLiteralLoose([""])));
8240
+ var ContentContainer$4 = /*#__PURE__*/styled__default.div(_templateObject4$w || (_templateObject4$w = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n overflow: auto;\n transition: max-height 0.4s ease;\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-weight: var(--font-weight-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n line-height: var(--line-height-body-1);\n text-transform: var(--text-transform-body);\n\n & h1 {\n font-size: var(--font-size-header-4);\n font-family: var(--font-family-header);\n font-feature-settings: var(--font-feature-settings-header);\n font-weight: var(--font-weight-header-4);\n letter-spacing: var(--letter-spacing-header-4);\n line-height: var(--line-height-header-4);\n text-transform: var(--text-transform-header);\n white-space: break-spaces;\n overflow-wrap: break-word;\n }\n\n & h2 {\n font-size: var(--font-size-subtitle-1);\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-weight: var(--font-weight-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n white-space: break-spaces;\n overflow-wrap: break-word;\n }\n\n & em {\n font-family: var(--font-family-body-italics);\n }\n\n & u {\n font-size: var(--font-size-body-1);\n font-family: var(--font-family-body);\n }\n"])));
8241
+
8242
+ var keyDown = function keyDown(e, toggleFunction) {
8243
+ if (e.key === 'Enter' || e.key === 'Space') {
8244
+ toggleFunction();
8245
+ }
8246
+ };
8230
8247
 
8231
8248
  var ReadMore = function ReadMore(_ref) {
8232
8249
  var title = _ref.title,
8250
+ introText = _ref.introText,
8233
8251
  fullText = _ref.fullText,
8234
8252
  _ref$initOpen = _ref.initOpen,
8235
8253
  initOpen = _ref$initOpen === void 0 ? false : _ref$initOpen,
8236
8254
  showMoreText = _ref.showMoreText,
8237
8255
  hideText = _ref.hideText,
8238
- characterLimit = _ref.characterLimit;
8256
+ characterLimit = _ref.characterLimit,
8257
+ _ref$truncate = _ref.truncate,
8258
+ truncate = _ref$truncate === void 0 ? true : _ref$truncate;
8239
8259
 
8240
8260
  var _useState = React.useState(initOpen),
8241
8261
  isFullTextOpen = _useState[0],
8242
8262
  setIsFullTextOpen = _useState[1];
8243
8263
 
8244
- var _useState2 = React.useState(initOpen ? {
8245
- visibility: 'visible',
8246
- display: 'block'
8264
+ var _useState2 = React.useState('0px'),
8265
+ textHeight = _useState2[0],
8266
+ setTextHeight = _useState2[1];
8267
+
8268
+ var _useState3 = React.useState(initOpen ? {
8269
+ visibility: 'visible'
8247
8270
  } : {
8248
- visibility: 'hidden',
8249
- display: 'none'
8271
+ visibility: 'hidden'
8250
8272
  }),
8251
- textVisibility = _useState2[0],
8252
- setTextVisibility = _useState2[1];
8273
+ textVisibility = _useState3[0],
8274
+ setTextVisibility = _useState3[1];
8275
+
8276
+ var content = React.useRef(null);
8277
+ React.useEffect(function () {
8278
+ if (content != null && content.current && initOpen) {
8279
+ setTextHeight(content.current.scrollHeight + "px");
8280
+ }
8281
+ }, [content, initOpen]);
8253
8282
 
8254
8283
  var toggleFullText = function toggleFullText() {
8255
8284
  if (!fullText) return;
8256
8285
  setIsFullTextOpen(!isFullTextOpen);
8286
+ setTextHeight(isFullTextOpen ? '0px' : content.current.scrollHeight + "px");
8257
8287
  setTextVisibility(isFullTextOpen ? {
8258
- visibility: 'hidden',
8259
- display: 'none'
8288
+ visibility: 'hidden'
8260
8289
  } : {
8261
- visibility: 'visible',
8262
- display: 'block'
8290
+ visibility: 'visible'
8263
8291
  });
8264
8292
  };
8265
8293
 
8266
- var keyDown = function keyDown(e) {
8267
- if (e.key === 'Enter' || e.key === 'Space') {
8268
- toggleFullText();
8269
- }
8294
+ var handleKeyDown = function handleKeyDown(e) {
8295
+ keyDown(e, toggleFullText);
8270
8296
  };
8271
8297
 
8272
- var INTRO_CHAR_LIMIT = characterLimit != null ? characterLimit : 115;
8273
-
8274
- var setIntroText = function setIntroText(text) {
8275
- if (text.length <= INTRO_CHAR_LIMIT) {
8276
- return text;
8277
- }
8278
-
8279
- return text.slice(0, INTRO_CHAR_LIMIT) + '...';
8280
- };
8298
+ var INTRO_CHAR_LIMIT = truncate ? characterLimit != null ? characterLimit : 115 : undefined;
8299
+ var truncatedText = truncate ? truncateReactNodeString(introText != null ? introText : '', INTRO_CHAR_LIMIT, true) : introText;
8281
8300
 
8282
- var Standfirst = function Standfirst() {
8283
- return fullText ? /*#__PURE__*/React__default.createElement(ContentContainer, null, setIntroText(fullText)) : null;
8301
+ var IntroText = function IntroText() {
8302
+ return introText ? /*#__PURE__*/React__default.createElement(ContentContainer$4, null, /*#__PURE__*/React__default.createElement(FullTextContainer, null, truncatedText)) : null;
8284
8303
  };
8285
8304
 
8286
- var content = React.useRef(null);
8287
8305
  var contentContainerId = title + "-read-more-content";
8288
8306
  return /*#__PURE__*/React__default.createElement(AccordionContainer, {
8289
8307
  tabIndex: 0,
8290
- onKeyDown: keyDown
8308
+ onKeyDown: handleKeyDown
8291
8309
  }, /*#__PURE__*/React__default.createElement(ReadMoreContainer, {
8292
8310
  "aria-label": title,
8293
8311
  "aria-expanded": isFullTextOpen,
8294
8312
  "aria-controls": contentContainerId
8295
8313
  }, /*#__PURE__*/React__default.createElement(Header, {
8296
- level: 5
8297
- }, title)), !isFullTextOpen && /*#__PURE__*/React__default.createElement(Standfirst, null), /*#__PURE__*/React__default.createElement(ContentContainer, {
8314
+ level: 5,
8315
+ semanticLevel: 3
8316
+ }, title)), !isFullTextOpen && /*#__PURE__*/React__default.createElement(IntroText, null), /*#__PURE__*/React__default.createElement(ContentContainer$4, {
8298
8317
  "data-testid": "richcontainer",
8299
8318
  ref: content,
8300
8319
  id: contentContainerId,
8301
8320
  "aria-live": "polite",
8321
+ style: {
8322
+ maxHeight: "" + textHeight
8323
+ }
8324
+ }, /*#__PURE__*/React__default.createElement(FullTextContainer, {
8302
8325
  style: textVisibility
8303
- }, fullText), /*#__PURE__*/React__default.createElement(LinkContainer, null, (fullText || isFullTextOpen) && /*#__PURE__*/React__default.createElement(TextLink, {
8326
+ }, fullText)), /*#__PURE__*/React__default.createElement(LinkContainer, null, (fullText || isFullTextOpen) && /*#__PURE__*/React__default.createElement(TextLink, {
8304
8327
  tabIndex: 0,
8305
8328
  role: "button",
8306
8329
  onClick: toggleFullText