@royaloperahouse/chord 2.7.0-b-development → 2.7.0-d-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.
package/dist/chord.esm.js CHANGED
@@ -4208,12 +4208,14 @@ var TextField = /*#__PURE__*/forwardRef(function (_ref, ref) {
4208
4208
 
4209
4209
  return /*#__PURE__*/React__default.createElement(Container$1, null, /*#__PURE__*/React__default.createElement("label", null, !!label && /*#__PURE__*/React__default.createElement(TextLabel$1, {
4210
4210
  darkMode: darkMode,
4211
- "data-testid": "text-field-text-label"
4211
+ "data-testid": "text-field-text-label",
4212
+ "aria-hidden": "true"
4212
4213
  }, /*#__PURE__*/React__default.createElement(AltHeader, {
4213
4214
  level: 6
4214
4215
  }, label)), /*#__PURE__*/React__default.createElement(InputWrapper, {
4215
4216
  width: width
4216
4217
  }, /*#__PURE__*/React__default.createElement(Input, Object.assign({
4218
+ "aria-label": label,
4217
4219
  isPasswordField: isPasswordField,
4218
4220
  type: inputType,
4219
4221
  error: error,
@@ -4227,7 +4229,10 @@ var TextField = /*#__PURE__*/forwardRef(function (_ref, ref) {
4227
4229
  level: 1
4228
4230
  }, showHideButtonText)))), !!error && /*#__PURE__*/React__default.createElement(ErrorLabel$1, {
4229
4231
  darkMode: darkMode,
4230
- "data-testid": "text-field-error-label"
4232
+ id: inputProps.name + "-error",
4233
+ "data-testid": "text-field-error-label",
4234
+ role: "alert",
4235
+ "aria-live": "assertive"
4231
4236
  }, /*#__PURE__*/React__default.createElement(AltHeader, {
4232
4237
  level: 6
4233
4238
  }, error)));
@@ -9105,32 +9110,43 @@ var getConcatenatedPropLength = function getConcatenatedPropLength(array, prop)
9105
9110
  }, 0);
9106
9111
  };
9107
9112
 
9108
- var concatenateMusicTitle = function concatenateMusicTitle(musicTitle) {
9109
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, musicTitle.map(function (title, index) {
9110
- if (musicTitle.length > 1 && index === musicTitle.length - 1) {
9111
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, ' ', "and ", /*#__PURE__*/React__default.createElement("i", {
9112
- key: index
9113
- }, title));
9114
- } else if (index > 0) {
9115
- return /*#__PURE__*/React__default.createElement("i", {
9116
- key: index
9117
- }, ", ", title);
9113
+ var DEFAULT_COLUMN_COUNT = 4;
9114
+ var DEFAULT_LARGE_COLUMN_SPAN = 2;
9115
+ var DEFAULT_CHARACTER_THRESHOLD = 180;
9116
+
9117
+ var concatenateMusicTitle = function concatenateMusicTitle(musicTitle, index) {
9118
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
9119
+ key: "music-" + index
9120
+ }, musicTitle.map(function (title, idx) {
9121
+ if (musicTitle.length > 1 && idx === musicTitle.length - 1) {
9122
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
9123
+ key: "music-" + index + "-" + idx + "-" + title
9124
+ }, ' ', "and ", /*#__PURE__*/React__default.createElement("i", null, title));
9125
+ } else if (idx > 0) {
9126
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
9127
+ key: "music-" + index + "-" + idx + "-" + title
9128
+ }, /*#__PURE__*/React__default.createElement("i", null, ", ", title));
9118
9129
  }
9119
9130
 
9120
- return /*#__PURE__*/React__default.createElement("i", {
9121
- key: index
9122
- }, title);
9131
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
9132
+ key: "music-" + index + "-" + idx + "-" + title
9133
+ }, /*#__PURE__*/React__default.createElement("i", null, title));
9123
9134
  }));
9124
9135
  };
9125
9136
 
9126
9137
  var CreditListing = function CreditListing(_ref) {
9127
9138
  var roles = _ref.roles,
9128
9139
  _ref$columnCount = _ref.columnCount,
9129
- columnCount = _ref$columnCount === void 0 ? 4 : _ref$columnCount;
9130
- var charThreshold = 180;
9131
- return /*#__PURE__*/React__default.createElement(CreditListingWrapper, {
9132
- columnCount: columnCount
9133
- }, roles.map(function (_ref2, index) {
9140
+ columnCount = _ref$columnCount === void 0 ? DEFAULT_COLUMN_COUNT : _ref$columnCount,
9141
+ _ref$expandLargeEntri = _ref.expandLargeEntries,
9142
+ expandLargeEntries = _ref$expandLargeEntri === void 0 ? false : _ref$expandLargeEntri,
9143
+ _ref$largeColumnSpan = _ref.largeColumnSpan,
9144
+ largeColumnSpan = _ref$largeColumnSpan === void 0 ? DEFAULT_LARGE_COLUMN_SPAN : _ref$largeColumnSpan,
9145
+ _ref$characterThresho = _ref.characterThreshold,
9146
+ characterThreshold = _ref$characterThresho === void 0 ? DEFAULT_CHARACTER_THRESHOLD : _ref$characterThresho;
9147
+ var creditEntries = [];
9148
+ var nextColumnStart = 1;
9149
+ roles.forEach(function (_ref2, index) {
9134
9150
  var name = _ref2.name,
9135
9151
  people = _ref2.people,
9136
9152
  description = _ref2.description,
@@ -9138,13 +9154,42 @@ var CreditListing = function CreditListing(_ref) {
9138
9154
  replacement = _ref2.replacement,
9139
9155
  additionalInfo = _ref2.additionalInfo,
9140
9156
  dataROH = _ref2.dataROH;
9141
- var namesLength = getConcatenatedPropLength(people, 'name');
9142
- var columnSpanDesktop = namesLength > charThreshold ? people.length > 2 ? 4 : 2 : 1;
9143
- return /*#__PURE__*/React__default.createElement(GridItem, {
9144
- columnSpanDesktop: columnSpanDesktop,
9145
- columnSpanDevice: columnSpanDesktop,
9146
- columnSpanSmallDevice: 2,
9147
- key: name + "-" + index
9157
+
9158
+ var _ref3 = function () {
9159
+ if (expandLargeEntries && columnCount > 1) {
9160
+ var namesLength = getConcatenatedPropLength(people, 'name');
9161
+
9162
+ var _columnSpan = namesLength > characterThreshold ? largeColumnSpan : 1;
9163
+
9164
+ var unboundedEnd = nextColumnStart + _columnSpan;
9165
+
9166
+ var _columnStart = unboundedEnd > columnCount + 1 ? 1 : nextColumnStart;
9167
+
9168
+ var columnEnd = _columnStart + _columnSpan;
9169
+ nextColumnStart = columnEnd % columnCount || columnCount;
9170
+ return {
9171
+ columnStart: _columnStart,
9172
+ columnSpan: _columnSpan
9173
+ };
9174
+ } else {
9175
+ return {
9176
+ columnStart: 0,
9177
+ columnSpan: 1
9178
+ };
9179
+ }
9180
+ }(),
9181
+ columnStart = _ref3.columnStart,
9182
+ columnSpan = _ref3.columnSpan;
9183
+
9184
+ creditEntries.push( /*#__PURE__*/React__default.createElement(GridItem, {
9185
+ columnStartDesktop: columnStart,
9186
+ columnSpanDesktop: columnSpan,
9187
+ columnStartDevice: 1,
9188
+ columnSpanDevice: 1,
9189
+ columnStartSmallDevice: 1,
9190
+ columnSpanSmallDevice: 1,
9191
+ key: "credit-entry-" + name + "-" + index,
9192
+ "data-testid": "credit-entry"
9148
9193
  }, /*#__PURE__*/React__default.createElement(TextWrapper$2, null, /*#__PURE__*/React__default.createElement(RoleWrapper$1, {
9149
9194
  title: "role",
9150
9195
  "data-roh": dataROH
@@ -9168,12 +9213,16 @@ var CreditListing = function CreditListing(_ref) {
9168
9213
  tag: "p"
9169
9214
  }, replacement)), musicTitle && musicTitle.length > 0 && /*#__PURE__*/React__default.createElement(BodyText, {
9170
9215
  level: 1,
9171
- tag: "p"
9172
- }, concatenateMusicTitle(musicTitle)), additionalInfo && /*#__PURE__*/React__default.createElement(BodyText, {
9216
+ tag: "p",
9217
+ key: "music-" + musicTitle + "-text"
9218
+ }, concatenateMusicTitle(musicTitle, index)), additionalInfo && /*#__PURE__*/React__default.createElement(BodyText, {
9173
9219
  level: 1,
9174
9220
  tag: "p"
9175
- }, additionalInfo)));
9176
- }));
9221
+ }, additionalInfo))));
9222
+ });
9223
+ return /*#__PURE__*/React__default.createElement(CreditListingWrapper, {
9224
+ columnCount: columnCount
9225
+ }, creditEntries);
9177
9226
  };
9178
9227
 
9179
9228
  var _templateObject$13, _templateObject2$M, _templateObject3$D, _templateObject4$v, _templateObject5$p, _templateObject6$j, _templateObject7$d, _templateObject8$a, _templateObject9$5, _templateObject10$5, _templateObject11$2, _templateObject12$1, _templateObject13$1, _templateObject14$1, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21;
@@ -11252,7 +11301,7 @@ var Table = function Table(_ref) {
11252
11301
  };
11253
11302
 
11254
11303
  var _templateObject$1k, _templateObject2$Z, _templateObject3$P, _templateObject4$E, _templateObject5$x, _templateObject6$p, _templateObject7$h, _templateObject8$d, _templateObject9$8, _templateObject10$8;
11255
- var Wrapper$8 = /*#__PURE__*/styled('div')(_templateObject$1k || (_templateObject$1k = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: relative;\n //width: auto;\n border-top: 4px solid ", ";\n border-bottom: 4px solid ", ";\n"])), function (_ref) {
11304
+ var Wrapper$8 = /*#__PURE__*/styled('div')(_templateObject$1k || (_templateObject$1k = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: relative;\n border-top: 4px solid ", ";\n border-bottom: 4px solid ", ";\n"])), function (_ref) {
11256
11305
  var theme = _ref.theme;
11257
11306
  return "var(--base-color-" + theme + ")";
11258
11307
  }, function (_ref2) {
@@ -11260,14 +11309,14 @@ var Wrapper$8 = /*#__PURE__*/styled('div')(_templateObject$1k || (_templateObjec
11260
11309
  return "var(--base-color-" + theme + ")";
11261
11310
  });
11262
11311
  var SignUpFormWrapper = /*#__PURE__*/styled(Grid)(_templateObject2$Z || (_templateObject2$Z = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n gap: 0 var(--grid-column-gap);\n margin-bottom: 32px;\n"])));
11263
- var SignUpTitleWrapper = /*#__PURE__*/styled('div')(_templateObject3$P || (_templateObject3$P = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n text-align: left;\n position: relative;\n top: -25px;\n left: -20px;\n background: var(--base-color-white);\n display: inline-block;\n padding: 0 20px;\n \n @media ", " {\n top: -18px;\n padding: 0 13px;\n left: -13px;\n }\n"])), devices.mobile);
11312
+ var SignUpTitleWrapper = /*#__PURE__*/styled('div')(_templateObject3$P || (_templateObject3$P = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n text-align: left;\n position: relative;\n top: -25px;\n left: -20px;\n background: var(--base-color-white);\n display: inline-block;\n padding: 0 20px;\n\n @media ", " {\n top: -18px;\n padding: 0 13px;\n left: -13px;\n }\n"])), devices.mobile);
11264
11313
  var Error$1 = /*#__PURE__*/styled.div(_templateObject4$E || (_templateObject4$E = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin-top: 20px;\n color: var(--base-color-errorstate);\n a {\n text-decoration: underline;\n color: inherit;\n }\n"])));
11265
11314
  var Form = /*#__PURE__*/styled.form(_templateObject5$x || (_templateObject5$x = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin-top: 20px;\n align-items: center;\n ", " {\n margin-top: -20px;\n }\n a[href] {\n color: inherit;\n }\n"])), Error$1);
11266
- var FormFooterWrapper = /*#__PURE__*/styled.div(_templateObject6$p || (_templateObject6$p = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin-top: 32px;\n display: flex;\n gap: 21px;\n align-items: center;\n \n @media ", " {\n flex-direction: column-reverse;\n align-items: flex-start;\n margin-bottom: 20px;\n }\n"])), devices.mobile);
11315
+ var FormFooterWrapper = /*#__PURE__*/styled.div(_templateObject6$p || (_templateObject6$p = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin-top: 32px;\n display: flex;\n gap: 21px;\n align-items: center;\n\n @media ", " {\n flex-direction: column-reverse;\n align-items: flex-start;\n margin-bottom: 20px;\n }\n"])), devices.mobile);
11267
11316
  var ServerError = /*#__PURE__*/styled.div(_templateObject7$h || (_templateObject7$h = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n text-align: left;\n color: var(--base-color-errorstate);\n"])));
11268
- var CTALinkWrapper = /*#__PURE__*/styled.a(_templateObject8$d || (_templateObject8$d = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n color: var(--base-color-black);\n div {\n font-size: 14px;\n }\n"])));
11317
+ var CTALinkWrapper = /*#__PURE__*/styled.a(_templateObject8$d || (_templateObject8$d = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n color: var(--base-color-black);\n div {\n text-decoration: underline;\n }\n"])));
11269
11318
  var ButtonWrapper$3 = /*#__PURE__*/styled.button(_templateObject9$8 || (_templateObject9$8 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n all: unset;\n width: fit-content;\n\n @media ", " {\n width: 100%;\n }\n &:focus {\n outline: 3px solid var(--base-color-lapislazuli);\n }\n"])), devices.mobile);
11270
- var FieldsWrapper = /*#__PURE__*/styled.div(_templateObject10$8 || (_templateObject10$8 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 36px;\n\n @media ", " {\n grid-template-columns: 1fr;\n gap: 20px;\n }\n\n"])), devices.mobile);
11319
+ var FieldsWrapper = /*#__PURE__*/styled.div(_templateObject10$8 || (_templateObject10$8 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 36px;\n\n @media ", " {\n grid-template-columns: 1fr;\n gap: 20px;\n }\n"])), devices.mobile);
11271
11320
 
11272
11321
  var regex = {
11273
11322
  signInEmail: /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
@@ -11277,13 +11326,61 @@ var regex = {
11277
11326
  var formValidationMessages = {
11278
11327
  requiredFieldMessage: 'Please complete this field',
11279
11328
  firstName: {
11280
- invalid: 'Please enter your first name'
11329
+ invalid: 'Please enter your full first name',
11330
+ required: 'Please enter a first name'
11331
+ },
11332
+ lastName: {
11333
+ required: 'Please enter a last name'
11281
11334
  },
11282
11335
  email: {
11283
11336
  required: 'Please enter an email address',
11284
11337
  invalid: 'Enter an email address in the correct format, like name@example.com'
11285
11338
  }
11286
11339
  };
11340
+ var getFormErrorMessage = function getFormErrorMessage(field, value) {
11341
+ var errorMessage;
11342
+
11343
+ if (!value) {
11344
+ switch (field) {
11345
+ case 'firstName':
11346
+ errorMessage = formValidationMessages.firstName.required;
11347
+ break;
11348
+
11349
+ case 'lastName':
11350
+ errorMessage = formValidationMessages.lastName.required;
11351
+ break;
11352
+
11353
+ case 'email':
11354
+ errorMessage = formValidationMessages.email.required;
11355
+ break;
11356
+
11357
+ default:
11358
+ errorMessage = formValidationMessages.requiredFieldMessage;
11359
+ }
11360
+ } else if (field === 'email' && !regex.signInEmail.test(value)) {
11361
+ errorMessage = formValidationMessages.email.invalid;
11362
+ } else if (field === 'firstName' && !regex.firstName.test(value)) {
11363
+ errorMessage = formValidationMessages.firstName.invalid;
11364
+ }
11365
+
11366
+ return errorMessage;
11367
+ };
11368
+
11369
+ var themeToColor = function themeToColor(theme) {
11370
+ switch (theme) {
11371
+ case ThemeType.Core:
11372
+ return Colors.Core;
11373
+
11374
+ case ThemeType.Stream:
11375
+ return Colors.Stream;
11376
+
11377
+ case ThemeType.Cinema:
11378
+ return Colors.Cinema;
11379
+
11380
+ default:
11381
+ return Colors.Core;
11382
+ }
11383
+ };
11287
11384
 
11288
11385
  var SignUpForm = function SignUpForm(_ref) {
11289
11386
  var initialState = _ref.initialState,
@@ -11328,6 +11425,21 @@ var SignUpForm = function SignUpForm(_ref) {
11328
11425
  };
11329
11426
  };
11330
11427
 
11428
+ var handleBlur = function handleBlur(field) {
11429
+ return function () {
11430
+ var value = formValues[field];
11431
+ var formErrorMessage = getFormErrorMessage(field, value);
11432
+
11433
+ if (formErrorMessage) {
11434
+ setErrors(function (prev) {
11435
+ var _extends4;
11436
+
11437
+ return _extends({}, prev, (_extends4 = {}, _extends4[field] = formErrorMessage, _extends4));
11438
+ });
11439
+ }
11440
+ };
11441
+ };
11442
+
11331
11443
  var handleFormSubmit = /*#__PURE__*/function () {
11332
11444
  var _ref2 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(e) {
11333
11445
  var formErrors, response;
@@ -11349,13 +11461,13 @@ var SignUpForm = function SignUpForm(_ref) {
11349
11461
 
11350
11462
  if (!isLoggedIn) {
11351
11463
  if (!formValues.firstName) {
11352
- formErrors.firstName = formValidationMessages.requiredFieldMessage;
11464
+ formErrors.firstName = formValidationMessages.firstName.required;
11353
11465
  } else if (!regex.firstName.test(formValues.firstName)) {
11354
11466
  formErrors.firstName = formValidationMessages.firstName.invalid;
11355
11467
  }
11356
11468
 
11357
11469
  if (!formValues.lastName) {
11358
- formErrors.lastName = formValidationMessages.requiredFieldMessage;
11470
+ formErrors.lastName = formValidationMessages.lastName.required;
11359
11471
  }
11360
11472
 
11361
11473
  if (!formValues.email) {
@@ -11404,7 +11516,7 @@ var SignUpForm = function SignUpForm(_ref) {
11404
11516
  }();
11405
11517
 
11406
11518
  return /*#__PURE__*/React__default.createElement(Wrapper$8, {
11407
- theme: Colors[theme]
11519
+ theme: themeToColor(theme)
11408
11520
  }, /*#__PURE__*/React__default.createElement(SignUpFormWrapper, null, /*#__PURE__*/React__default.createElement(GridItem, {
11409
11521
  columnStartDesktop: 3,
11410
11522
  columnSpanDesktop: 10,
@@ -11439,6 +11551,10 @@ var SignUpForm = function SignUpForm(_ref) {
11439
11551
  maxLength: 20,
11440
11552
  error: errors.firstName,
11441
11553
  onChange: handleChange('firstName'),
11554
+ onBlur: handleBlur('firstName'),
11555
+ "aria-required": "true",
11556
+ "aria-invalid": !!errors.firstName,
11557
+ "aria-describedby": errors.firstName ? 'firstName-error' : undefined,
11442
11558
  autoComplete: "given-name"
11443
11559
  }), /*#__PURE__*/React__default.createElement(TextField, {
11444
11560
  label: "Last name",
@@ -11448,6 +11564,10 @@ var SignUpForm = function SignUpForm(_ref) {
11448
11564
  value: formValues.lastName,
11449
11565
  error: errors.lastName,
11450
11566
  onChange: handleChange('lastName'),
11567
+ onBlur: handleBlur('lastName'),
11568
+ "aria-required": "true",
11569
+ "aria-invalid": !!errors.lastName,
11570
+ "aria-describedby": errors.lastName ? 'lastName-error' : undefined,
11451
11571
  autoComplete: "family-name"
11452
11572
  }), /*#__PURE__*/React__default.createElement(TextField, {
11453
11573
  label: "Email",
@@ -11456,24 +11576,29 @@ var SignUpForm = function SignUpForm(_ref) {
11456
11576
  value: formValues.email,
11457
11577
  error: errors.email || errors.serverError,
11458
11578
  onChange: handleChange('email'),
11579
+ onBlur: handleBlur('email'),
11580
+ "aria-required": "true",
11581
+ "aria-invalid": !!errors.email,
11582
+ "aria-describedby": errors.email ? 'email-error' : undefined,
11459
11583
  maxLength: 80
11460
11584
  })), isLoggedIn && !!errors.serverError && /*#__PURE__*/React__default.createElement(GridItem, {
11461
11585
  columnStartDesktop: 2,
11462
11586
  columnSpanDesktop: 12,
11463
- columnStartTablet: 2,
11464
- columnSpanTablet: 12,
11465
11587
  columnStartDevice: 2,
11466
11588
  columnSpanDevice: 12
11467
- }, /*#__PURE__*/React__default.createElement(ServerError, null, /*#__PURE__*/React__default.createElement(AltHeader, {
11589
+ }, /*#__PURE__*/React__default.createElement(ServerError, {
11590
+ role: "alert",
11591
+ "aria-live": "assertive"
11592
+ }, /*#__PURE__*/React__default.createElement(AltHeader, {
11468
11593
  level: 6
11469
11594
  }, errors.serverError))), /*#__PURE__*/React__default.createElement(FormFooterWrapper, null, /*#__PURE__*/React__default.createElement(ButtonWrapper$3, {
11470
11595
  type: "submit"
11471
11596
  }, /*#__PURE__*/React__default.createElement(PrimaryButton, {
11472
- bgColor: Colors[theme]
11597
+ bgColor: themeToColor(theme)
11473
11598
  }, "Sign up")), /*#__PURE__*/React__default.createElement(CTALinkWrapper, {
11474
11599
  href: ctaPrivacy.link
11475
11600
  }, /*#__PURE__*/React__default.createElement(BodyText, {
11476
- level: 2
11601
+ level: 1
11477
11602
  }, ctaPrivacy.text)))))));
11478
11603
  };
11479
11604