@royaloperahouse/harmonic 1.0.4 → 1.0.5-b

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.
@@ -2692,6 +2692,7 @@ var Tab = function Tab(_ref) {
2692
2692
  className = _ref.className,
2693
2693
  role = _ref.role,
2694
2694
  ariaLabel = _ref.ariaLabel,
2695
+ tabLinkId = _ref.tabLinkId,
2695
2696
  color = _ref.color,
2696
2697
  dataTestId = _ref.dataTestId,
2697
2698
  isOpen = _ref.isOpen;
@@ -2726,8 +2727,9 @@ var Tab = function Tab(_ref) {
2726
2727
  className: className,
2727
2728
  "data-testid": dataTestId
2728
2729
  }, /*#__PURE__*/React__default.createElement(TabText, {
2729
- color: color,
2730
+ id: tabLinkId,
2730
2731
  trimText: trimText,
2732
+ color: color,
2731
2733
  withTextInMobile: withTextInMobile,
2732
2734
  "aria-hidden": "true"
2733
2735
  }, title), withIcon !== 'none' && /*#__PURE__*/React__default.createElement(Icon, {
@@ -2757,6 +2759,7 @@ var Dropdown = function Dropdown(_ref) {
2757
2759
  className = _ref.className,
2758
2760
  role = _ref.role,
2759
2761
  ariaLabel = _ref.ariaLabel,
2762
+ tabLinkId = _ref.tabLinkId,
2760
2763
  trimTabText = _ref.trimTabText;
2761
2764
  var node = React.useRef();
2762
2765
  var _useState = React.useState(false),
@@ -2853,6 +2856,7 @@ var Dropdown = function Dropdown(_ref) {
2853
2856
  };
2854
2857
  var renderTab = function renderTab() {
2855
2858
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Tab, {
2859
+ tabLinkId: tabLinkId,
2856
2860
  trimText: trimTabText,
2857
2861
  title: title,
2858
2862
  titleLink: titleLink,
@@ -2932,7 +2936,8 @@ var Account = function Account(_ref) {
2932
2936
  iconName: iconName,
2933
2937
  withOptionsInMobile: false,
2934
2938
  withIcon: "left",
2935
- className: className
2939
+ className: className,
2940
+ tabLinkId: "account-link"
2936
2941
  });
2937
2942
  };
2938
2943
 
@@ -5662,6 +5667,7 @@ var Accordion = function Accordion(_ref) {
5662
5667
  var toggleAccordion = function toggleAccordion() {
5663
5668
  if (React__default.Children.count(children) === 0) return;
5664
5669
  if (openAccordion) {
5670
+ setIcon(collapsedStateIconData);
5665
5671
  setOpenAccordion(false);
5666
5672
  setTextHeight('0px');
5667
5673
  setIcon(collapsedStateIconData);
@@ -6014,14 +6020,9 @@ var BodyContent = function BodyContent(_ref2) {
6014
6020
  _ref2$renderGridItem = _ref2.renderGridItem,
6015
6021
  renderGridItem = _ref2$renderGridItem === void 0 ? true : _ref2$renderGridItem;
6016
6022
  var textContainerClassName = !renderGrid && !renderGridItem ? className : undefined;
6017
- var content = /*#__PURE__*/React__default.createElement(TextContainer, {
6018
- tag: "div",
6019
- size: "large",
6020
- "data-testid": "text-container",
6023
+ var content = /*#__PURE__*/React__default.createElement(BodyContentTextContainer, {
6021
6024
  className: textContainerClassName,
6022
- dangerouslySetInnerHTML: {
6023
- __html: addTypographyClasses(text)
6024
- }
6025
+ html: text
6025
6026
  });
6026
6027
  var gridItemOrContent = renderGridItem ? (/*#__PURE__*/React__default.createElement(GridItem, {
6027
6028
  columnStartDesktop: columnStartDesktop,
@@ -6830,12 +6831,15 @@ var CastFilters = function CastFilters(_ref) {
6830
6831
  listRoleDescription = _ref.listRoleDescription,
6831
6832
  className = _ref.className,
6832
6833
  onSelect = _ref.onSelect,
6834
+ onSelectId = _ref.onSelectId,
6833
6835
  onApply = _ref.onApply,
6836
+ onApplyIds = _ref.onApplyIds,
6834
6837
  onClear = _ref.onClear,
6835
6838
  _ref$greyscale = _ref.greyscale,
6836
6839
  greyscale = _ref$greyscale === void 0 ? false : _ref$greyscale,
6837
6840
  _ref$selectedIndices = _ref.selectedIndices,
6838
- selectedIndices = _ref$selectedIndices === void 0 ? [] : _ref$selectedIndices;
6841
+ selectedIndices = _ref$selectedIndices === void 0 ? [] : _ref$selectedIndices,
6842
+ selectedIds = _ref.selectedIds;
6839
6843
  var _useViewport = useViewport(),
6840
6844
  isMobile = _useViewport.isMobile;
6841
6845
  var castWrapperRef = React.useRef(null);
@@ -6937,14 +6941,51 @@ var CastFilters = function CastFilters(_ref) {
6937
6941
  isDraggingRef.current = false;
6938
6942
  hasDraggedRef.current = false;
6939
6943
  }, [isMobile]);
6940
- var handleClick = React__default.useCallback(function (index, onClick) {
6944
+ var getCastItemSelectionId = React.useCallback(function (person) {
6945
+ if (person.id !== undefined && person.id !== null) return String(person.id);
6946
+ if (person.slug !== undefined && person.slug !== null) return String(person.slug);
6947
+ return person.name;
6948
+ }, []);
6949
+ var isIdSelectionMode = selectedIds !== undefined;
6950
+ var selectedIdsSet = React.useMemo(function () {
6951
+ var ids = selectedIds != null ? selectedIds : [];
6952
+ return new Set(ids.map(function (id) {
6953
+ return String(id);
6954
+ }));
6955
+ }, [selectedIds]);
6956
+ var selectedStateIndices = React.useMemo(function () {
6957
+ if (!isIdSelectionMode) return selectedIndices;
6958
+ return cast.flatMap(function (person, index) {
6959
+ var itemId = getCastItemSelectionId(person);
6960
+ return selectedIdsSet.has(itemId) ? [index] : [];
6961
+ });
6962
+ }, [cast, getCastItemSelectionId, isIdSelectionMode, selectedIdsSet, selectedIndices]);
6963
+ var selectedStateIds = React.useMemo(function () {
6964
+ if (isIdSelectionMode) {
6965
+ return cast.filter(function (person) {
6966
+ return selectedIdsSet.has(getCastItemSelectionId(person));
6967
+ }).map(function (person) {
6968
+ return getCastItemSelectionId(person);
6969
+ });
6970
+ }
6971
+ return selectedIndices.map(function (index) {
6972
+ return cast[index];
6973
+ }).filter(function (person) {
6974
+ return person !== undefined;
6975
+ }).map(function (person) {
6976
+ return getCastItemSelectionId(person);
6977
+ });
6978
+ }, [cast, getCastItemSelectionId, isIdSelectionMode, selectedIdsSet, selectedIndices]);
6979
+ var handleClick = React__default.useCallback(function (index, itemId, onClick) {
6941
6980
  if (hasDraggedRef.current) return;
6981
+ if (onSelectId) onSelectId(itemId);
6942
6982
  if (onSelect) onSelect(index);
6943
6983
  if (onClick) onClick();
6944
- }, [onSelect]);
6945
- var handlePersonKeydown = React__default.useCallback(function (e, index, onClick) {
6946
- if (e.key === 'Enter') {
6947
- handleClick(index, onClick);
6984
+ }, [onSelect, onSelectId]);
6985
+ var handlePersonKeydown = React__default.useCallback(function (e, index, itemId, onClick) {
6986
+ if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') {
6987
+ e.preventDefault();
6988
+ handleClick(index, itemId, onClick);
6948
6989
  }
6949
6990
  }, [handleClick]);
6950
6991
  var handleClearKeydown = React__default.useCallback(function (e) {
@@ -6959,27 +7000,27 @@ var CastFilters = function CastFilters(_ref) {
6959
7000
  image = person.image,
6960
7001
  _onClick = person.onClick,
6961
7002
  ariaLabel = person['aria-label'];
6962
- var isSelected = selectedIndices.includes(index);
7003
+ var personSelectionId = getCastItemSelectionId(person);
7004
+ var isSelected = isIdSelectionMode ? selectedIdsSet.has(personSelectionId) : selectedIndices.includes(index);
6963
7005
  var personImage = image || placeholderImage || defaultPlaceholderImage;
6964
7006
  return /*#__PURE__*/React__default.createElement(PersonWrapper, {
6965
- key: index,
7007
+ key: personSelectionId,
6966
7008
  "aria-selected": isSelected,
6967
- "aria-label": ariaLabel || (isSelected ? 'Deselect' : 'Select') + " " + name,
6968
- "aria-posinset": index + 1,
6969
- "aria-setsize": cast.length,
7009
+ "aria-label": ariaLabel != null ? ariaLabel : name,
6970
7010
  role: "option",
6971
7011
  tabIndex: 0,
7012
+ onClick: function onClick() {
7013
+ return handleClick(index, personSelectionId, _onClick);
7014
+ },
6972
7015
  onKeyDown: function onKeyDown(e) {
6973
- return handlePersonKeydown(e, index, _onClick);
7016
+ return handlePersonKeydown(e, index, personSelectionId, _onClick);
6974
7017
  }
6975
7018
  }, /*#__PURE__*/React__default.createElement(PersonToggle, {
6976
7019
  isSelected: isSelected,
6977
- onClick: function onClick() {
6978
- return handleClick(index, _onClick);
6979
- }
7020
+ "aria-hidden": "true"
6980
7021
  }, /*#__PURE__*/React__default.createElement(PersonImage, {
6981
7022
  src: personImage,
6982
- alt: image ? name : "Placeholder image for " + name,
7023
+ alt: "",
6983
7024
  draggable: false,
6984
7025
  isDefaultPlaceholder: !(!!image || !!placeholderImage),
6985
7026
  greyscale: greyscale
@@ -7015,7 +7056,8 @@ var CastFilters = function CastFilters(_ref) {
7015
7056
  ref: castWrapperRef,
7016
7057
  role: "listbox",
7017
7058
  "aria-roledescription": listRoleDescription != null ? listRoleDescription : 'filter list',
7018
- "aria-multiselectable": true,
7059
+ "aria-label": "filter list",
7060
+ "aria-multiselectable": "true",
7019
7061
  onMouseDown: handleMouseDown,
7020
7062
  onMouseMove: handleMouseMove,
7021
7063
  onMouseUp: handleMouseUp,
@@ -7026,14 +7068,15 @@ var CastFilters = function CastFilters(_ref) {
7026
7068
  ref: swipeRef,
7027
7069
  onOverflowChange: handleOverflowChange,
7028
7070
  limitDragToNavigableRange: true
7029
- }, getPersonCards())))), showActionButtonsSection && (/*#__PURE__*/React__default.createElement(ActionButtons, null, selectedIndices.length === 0 && emptySelectionText && (/*#__PURE__*/React__default.createElement(BodyCopyHarmonic, {
7071
+ }, getPersonCards())))), showActionButtonsSection && (/*#__PURE__*/React__default.createElement(ActionButtons, null, selectedStateIndices.length === 0 && emptySelectionText && (/*#__PURE__*/React__default.createElement(BodyCopyHarmonic, {
7030
7072
  size: "medium",
7031
7073
  className: "mobile-only"
7032
- }, emptySelectionText)), selectedIndices.length === 0 && !emptySelectionText && /*#__PURE__*/React__default.createElement(EmptySelectionTextSpacer, null), selectedIndices.length > 0 && (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, onApply && /*#__PURE__*/React__default.createElement(PrimaryButton, {
7074
+ }, emptySelectionText)), selectedStateIndices.length === 0 && !emptySelectionText && /*#__PURE__*/React__default.createElement(EmptySelectionTextSpacer, null), selectedStateIndices.length > 0 && (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, (onApply || onApplyIds) && (/*#__PURE__*/React__default.createElement(PrimaryButton, {
7033
7075
  onClick: function onClick() {
7034
- return onApply(selectedIndices);
7076
+ if (onApply) onApply(selectedStateIndices);
7077
+ if (onApplyIds) onApplyIds(selectedStateIds);
7035
7078
  }
7036
- }, ctaText != null ? ctaText : 'Apply'), onClear && (/*#__PURE__*/React__default.createElement(TextLink, {
7079
+ }, ctaText != null ? ctaText : 'Apply')), onClear && (/*#__PURE__*/React__default.createElement(TextLink, {
7037
7080
  tabIndex: 0,
7038
7081
  role: "button",
7039
7082
  onClick: onClear,
@@ -9033,7 +9076,7 @@ var _excluded$l = ["text"],
9033
9076
  _excluded3$1 = ["text"];
9034
9077
  var _buttonTypeToButton$1;
9035
9078
  var LENGTH_TEXT$1 = 28;
9036
- var LENGTH_TEXT_PARAGRAPH = 130;
9079
+ var LENGTH_TEXT_PARAGRAPH = 185;
9037
9080
  var buttonTypeToButton$1 = (_buttonTypeToButton$1 = {}, _buttonTypeToButton$1[exports.ButtonType.Primary] = PrimaryButton, _buttonTypeToButton$1[exports.ButtonType.Secondary] = SecondaryButton, _buttonTypeToButton$1[exports.ButtonType.Tertiary] = TertiaryButton, _buttonTypeToButton$1);
9038
9081
  var PromoWithTags = function PromoWithTags(_ref) {
9039
9082
  var _ref$imagePosition = _ref.imagePosition,
@@ -12212,7 +12255,7 @@ var CloseButton = /*#__PURE__*/styled__default.button(_templateObject2$19 || (_t
12212
12255
  var ContentWrapper$3 = /*#__PURE__*/styled__default.div(_templateObject3$V || (_templateObject3$V = /*#__PURE__*/_taggedTemplateLiteralLoose([""])));
12213
12256
  var Overlay = /*#__PURE__*/styled__default(Grid)(_templateObject4$N || (_templateObject4$N = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n align-content: center;\n background-color: rgba(0, 0, 0, 0.4);\n"])));
12214
12257
 
12215
- var _excluded$s = ["isOpen", "setIsOpen", "children", "appElementId"];
12258
+ var _excluded$s = ["isOpen", "setIsOpen", "children", "appElementId", "closeButtonAriaLabel"];
12216
12259
  var MAX_Z_INDEX = 9999999999;
12217
12260
  if (Modal.defaultStyles.content) {
12218
12261
  Modal.defaultStyles.content.position = 'static';
@@ -12286,6 +12329,8 @@ var ModalWindow = function ModalWindow(_ref) {
12286
12329
  setIsOpen = _ref.setIsOpen,
12287
12330
  children = _ref.children,
12288
12331
  appElementId = _ref.appElementId,
12332
+ _ref$closeButtonAriaL = _ref.closeButtonAriaLabel,
12333
+ closeButtonAriaLabel = _ref$closeButtonAriaL === void 0 ? 'Close modal window' : _ref$closeButtonAriaL,
12289
12334
  modalProps = _objectWithoutPropertiesLoose(_ref, _excluded$s);
12290
12335
  var isMobile = useMobile();
12291
12336
  var customStyles = {
@@ -12318,10 +12363,11 @@ var ModalWindow = function ModalWindow(_ref) {
12318
12363
  columnSpanSmallDevice: 14
12319
12364
  }, /*#__PURE__*/React__default.createElement(InnerModal, null, /*#__PURE__*/React__default.createElement(CloseButton, {
12320
12365
  onClick: closeModalHandler,
12321
- "aria-label": "Close modal window",
12366
+ "aria-label": closeButtonAriaLabel,
12322
12367
  tabIndex: 0
12323
12368
  }, /*#__PURE__*/React__default.createElement(Icon, {
12324
- iconName: "Close"
12369
+ iconName: "Close",
12370
+ "aria-hidden": "true"
12325
12371
  })), /*#__PURE__*/React__default.createElement(ContentWrapper$3, null, children))), /*#__PURE__*/React__default.createElement(ScrollLock, null)));
12326
12372
  };
12327
12373