@royaloperahouse/harmonic 1.0.5-a → 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.
package/CHANGELOG.md CHANGED
@@ -1,17 +1,26 @@
1
- ## [1.0.4]
1
+ ## [Proposed: 1.0.5]
2
+ - CastFilter: prevent duplicate screen reader announcements for actor images and ensure tapping an actor image ring toggles selection.
3
+
4
+ ## [Proposed: 1.0.3]
2
5
  - Castfilter: fix NDVA issues
3
6
 
4
- ## [1.0.3]
7
+ ## [Proposed: 1.0.2]
8
+ - CastFilter: fix VoiceOver selection semantics and option activation (desktop/iOS).
9
+ - CastFilter: add stable id-based selection support (`selectedIds`, `onSelectId`, `onApplyIds`) with backward compatibility for legacy index-based API.
10
+ - ModalWindow: add `closeButtonAriaLabel` and set close icon `aria-hidden="true"`
11
+
12
+ ## [Proposed: 1.0.1]
13
+ - Accessibility fixes to CastFilter component
14
+
15
+ ## [0.19.3]
5
16
  - Carousel title realignment following font change
6
17
 
7
- ## [1.0.2]
8
- - AnchorTabBar: fix focused element
9
18
 
10
19
  ## [1.0.1]
11
20
  - Carousel: fix first click
12
21
 
13
22
  ## [1.0.0]
14
- Addressed some tech debt:
23
+ Addressed some tech debt:
15
24
  - all components are now exported for consumption from top-level public API export.
16
25
  - Removed Radio, RadioGroup and Select components.
17
26
  - cleaned up import/export structure of components
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { IDropdownProps } from '../../../types/types';
3
- declare const Dropdown: ({ title, titleLink, selected, options, onChange, iconName, isMobileBehaviour, withOptionsInMobile, withIcon, className, role, ariaLabel, trimTabText, }: IDropdownProps) => React.JSX.Element;
3
+ declare const Dropdown: ({ title, titleLink, selected, options, onChange, iconName, isMobileBehaviour, withOptionsInMobile, withIcon, className, role, ariaLabel, tabLinkId, trimTabText, }: IDropdownProps) => React.JSX.Element;
4
4
  export default Dropdown;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { ITabProps } from '../../../types/types';
3
- declare const Tab: ({ title, titleLink, onClick, onFocus, onReset, selected, iconName, iconDirection, withIcon, withTextInMobile, trimText, className, role, ariaLabel, color, dataTestId, isOpen, }: ITabProps) => React.JSX.Element;
3
+ declare const Tab: ({ title, titleLink, onClick, onFocus, onReset, selected, iconName, iconDirection, withIcon, withTextInMobile, trimText, className, role, ariaLabel, tabLinkId, color, dataTestId, isOpen, }: ITabProps) => React.JSX.Element;
4
4
  export default Tab;
@@ -1,6 +1,6 @@
1
1
  interface FocusableTabProps {
2
2
  hide?: boolean;
3
3
  }
4
- export declare const FocusableTab: import("styled-components").StyledComponent<({ title, titleLink, onClick, onFocus, onReset, selected, iconName, iconDirection, withIcon, withTextInMobile, trimText, className, role, ariaLabel, color, dataTestId, isOpen, }: import("../../../types/types").ITabProps) => import("react").JSX.Element, any, FocusableTabProps, never>;
4
+ export declare const FocusableTab: import("styled-components").StyledComponent<({ title, titleLink, onClick, onFocus, onReset, selected, iconName, iconDirection, withIcon, withTextInMobile, trimText, className, role, ariaLabel, tabLinkId, color, dataTestId, isOpen, }: import("../../../types/types").ITabProps) => import("react").JSX.Element, any, FocusableTabProps, never>;
5
5
  export declare const HiddenBlock: import("styled-components").StyledComponent<"div", any, {}, never>;
6
6
  export {};
@@ -350,6 +350,325 @@
350
350
  font-display: swap;
351
351
  }
352
352
 
353
+ /* ~~~~~ General Styling Classes ~~~~~ */
354
+ .typography_color-primary__LOfDi {
355
+ color: var(--color-primary);
356
+ }
357
+
358
+ .typography_color-black__6MHRL {
359
+ color: var(--color-base-black);
360
+ }
361
+
362
+ .typography_color-white__PfW5s {
363
+ color: var(--color-base-white);
364
+ }
365
+
366
+ .typography_color-red__iPlbG {
367
+ color: var(--color-primary-red);
368
+ }
369
+
370
+ .typography_color-grey__GA1c2 {
371
+ color: var(--color-base-dark-grey);
372
+ }
373
+
374
+ .typography_color-inherit__RDd0Y {
375
+ color: inherit;
376
+ }
377
+
378
+ .typography_em__E6tX- {
379
+ font-style: italic;
380
+ }
381
+ /* ~~~ */
382
+
383
+ /* Display Headers */
384
+ .typography_display__-F3p4 {
385
+ margin: 0;
386
+ font-family: var(--font-family-sans);
387
+ line-height: 100%;
388
+
389
+ &.typography_large__uq0zC {
390
+ font-size: 96px;
391
+ font-weight: 700;
392
+ letter-spacing: -5px;
393
+ }
394
+
395
+ &.typography_small__wfQ0K {
396
+ font-size: 68px;
397
+ font-weight: 500;
398
+ letter-spacing: -3px;
399
+ }
400
+
401
+ /* Serif and Italic styles */
402
+ &.typography_serif__VSO38,
403
+ &.typography_em__E6tX- {
404
+ font-family: var(--font-family-serif);
405
+ font-weight: 500;
406
+ }
407
+
408
+ /* Serif and Italic adjustments */
409
+ &.typography_large__uq0zC.typography_serif__VSO38,
410
+ &.typography_large__uq0zC.typography_em__E6tX- {
411
+ letter-spacing: -3px;
412
+ }
413
+
414
+ &.typography_small__wfQ0K.typography_serif__VSO38,
415
+ &.typography_small__wfQ0K.typography_em__E6tX- {
416
+ letter-spacing: -2px;
417
+ }
418
+
419
+ @media (max-width: 699px) {
420
+ &.typography_large__uq0zC {
421
+ font-size: 38px;
422
+ letter-spacing: -1.5px;
423
+ }
424
+
425
+ &.typography_small__wfQ0K {
426
+ font-size: 32px;
427
+ letter-spacing: -1.5px;
428
+ }
429
+
430
+ &.typography_large__uq0zC.typography_serif__VSO38,
431
+ &.typography_large__uq0zC.typography_em__E6tX-,
432
+ &.typography_small__wfQ0K.typography_serif__VSO38,
433
+ &.typography_small__wfQ0K.typography_em__E6tX- {
434
+ letter-spacing: -0.5px;
435
+ }
436
+ }
437
+ }
438
+
439
+ /* Headers */
440
+ .typography_header__BexiD {
441
+ margin: 0;
442
+ font-family: var(--font-family-sans);
443
+ font-weight: 500;
444
+
445
+ &.typography_large__uq0zC {
446
+ font-size: 44px;
447
+ line-height: 48px;
448
+ letter-spacing: -1.5px;
449
+ }
450
+
451
+ &.typography_medium__K0uZD {
452
+ font-size: 34px;
453
+ line-height: 40px;
454
+ letter-spacing: -1px;
455
+ }
456
+
457
+ &.typography_small__wfQ0K {
458
+ font-size: 26px;
459
+ line-height: 32px;
460
+ letter-spacing: -0.5px;
461
+ }
462
+
463
+ /* Serif and Italic styles */
464
+ &.typography_serif__VSO38,
465
+ &.typography_em__E6tX- {
466
+ font-family: var(--font-family-serif);
467
+ }
468
+
469
+ /* Serif and Italic letter-spacing overrides */
470
+ &.typography_large__uq0zC.typography_serif__VSO38,
471
+ &.typography_large__uq0zC.typography_em__E6tX- {
472
+ letter-spacing: -0.5px;
473
+ }
474
+
475
+ &.typography_medium__K0uZD.typography_serif__VSO38,
476
+ &.typography_medium__K0uZD.typography_em__E6tX- {
477
+ letter-spacing: -0.5px;
478
+ }
479
+
480
+ &.typography_small__wfQ0K.typography_serif__VSO38,
481
+ &.typography_small__wfQ0K.typography_em__E6tX- {
482
+ letter-spacing: -0.5px;
483
+ }
484
+
485
+ @media (max-width: 699px) {
486
+ &.typography_large__uq0zC {
487
+ font-size: 28px;
488
+ line-height: 34px;
489
+ letter-spacing: -1.5px;
490
+ }
491
+
492
+ &.typography_medium__K0uZD {
493
+ font-size: 24px;
494
+ line-height: 28px;
495
+ letter-spacing: -1px;
496
+ }
497
+
498
+ &.typography_small__wfQ0K {
499
+ font-size: 20px;
500
+ line-height: 26px;
501
+ letter-spacing: -0.75px;
502
+ }
503
+
504
+ /* Mobile overrides for serif/italic letter-spacing */
505
+ &.typography_large__uq0zC.typography_serif__VSO38,
506
+ &.typography_large__uq0zC.typography_em__E6tX-,
507
+ &.typography_medium__K0uZD.typography_serif__VSO38,
508
+ &.typography_medium__K0uZD.typography_em__E6tX-,
509
+ &.typography_small__wfQ0K.typography_serif__VSO38,
510
+ &.typography_small__wfQ0K.typography_em__E6tX- {
511
+ letter-spacing: -0.5px;
512
+ }
513
+ }
514
+ }
515
+
516
+ /* Subtitle */
517
+ .typography_subtitle__aoFTV {
518
+ margin: 0;
519
+ font-family: var(--font-family-sans);
520
+ font-weight: 500;
521
+
522
+ &.typography_large__uq0zC {
523
+ font-size: 19px;
524
+ line-height: 26px;
525
+ letter-spacing: -0.5px;
526
+ }
527
+
528
+ &.typography_small__wfQ0K {
529
+ font-size: 17px;
530
+ line-height: 24px;
531
+ letter-spacing: -0.5px;
532
+ }
533
+
534
+ @media (max-width: 699px) {
535
+ &.typography_large__uq0zC {
536
+ font-size: 17px;
537
+ line-height: 24px;
538
+ letter-spacing: -0.5px;
539
+ }
540
+
541
+ &.typography_small__wfQ0K {
542
+ font-size: 14px;
543
+ line-height: 20px;
544
+ letter-spacing: -0.2px;
545
+ }
546
+ }
547
+ }
548
+
549
+ /* Body Copy */
550
+ .typography_bodycopy__vYtQ8 {
551
+ margin: 0;
552
+ font-family: var(--font-family-sans);
553
+ font-weight: 400;
554
+
555
+ &.typography_large__uq0zC {
556
+ font-size: 19px;
557
+ line-height: 26px;
558
+ letter-spacing: -0.5px;
559
+ }
560
+
561
+ &.typography_medium__K0uZD {
562
+ font-size: 17px;
563
+ line-height: 24px;
564
+ letter-spacing: -0.5px;
565
+ }
566
+
567
+ &.typography_small__wfQ0K {
568
+ font-size: 14px;
569
+ line-height: 20px;
570
+ letter-spacing: -0.5px;
571
+ }
572
+
573
+ @media (max-width: 699px) {
574
+ &.typography_large__uq0zC {
575
+ font-size: 17px;
576
+ line-height: 24px;
577
+ letter-spacing: -0.5px;
578
+ }
579
+
580
+ &.typography_medium__K0uZD {
581
+ font-size: 14px;
582
+ line-height: 20px;
583
+ letter-spacing: -0.2px;
584
+ }
585
+
586
+ &.typography_small__wfQ0K {
587
+ font-size: 11px;
588
+ line-height: 16px;
589
+ letter-spacing: -0.2px;
590
+ }
591
+ }
592
+ }
593
+
594
+ /* Overline */
595
+ .typography_overline__EnUK3 {
596
+ margin: 0;
597
+ font-family: var(--font-family-sans);
598
+ font-weight: 500;
599
+ text-transform: uppercase;
600
+
601
+ &.typography_large__uq0zC {
602
+ font-size: 14px;
603
+ line-height: 18px;
604
+ letter-spacing: 0.3px;
605
+ }
606
+
607
+ &.typography_small__wfQ0K {
608
+ font-size: 12px;
609
+ line-height: 14px;
610
+ letter-spacing: 0.2px;
611
+ }
612
+
613
+ @media (max-width: 699px) {
614
+ &.typography_large__uq0zC {
615
+ line-height: 17px;
616
+ letter-spacing: 0.3px; /* Added to ensure it stays */
617
+ }
618
+
619
+ &.typography_small__wfQ0K {
620
+ line-height: 14px;
621
+ letter-spacing: 0.3px;
622
+ }
623
+ }
624
+ }
625
+
626
+ /* Button Text */
627
+ .typography_buttontext__vcxNi {
628
+ margin: 0;
629
+ font-family: var(--font-family-sans);
630
+ font-size: 17px;
631
+ line-height: 20px;
632
+ letter-spacing: -0.5px;
633
+ font-weight: 400;
634
+
635
+ @media (max-width: 699px) {
636
+ font-weight: 500;
637
+ line-height: 17px;
638
+ }
639
+ }
640
+
641
+ /* Caption Text */
642
+ .typography_captiontext__91UFb {
643
+ margin: 0;
644
+ font-family: var(--font-family-sans);
645
+ font-weight: 400;
646
+ font-size: 17px;
647
+ line-height: 24px;
648
+ letter-spacing: -0.5px;
649
+
650
+ @media (max-width: 699px) {
651
+ font-size: 14px;
652
+ line-height: 20px;
653
+ letter-spacing: -0.2px;
654
+ }
655
+ }
656
+
657
+ /* Navigation Text */
658
+ .typography_navigationtext__YfGf7 {
659
+ margin: 0;
660
+ font-family: var(--font-family-sans);
661
+ font-size: 19px;
662
+ line-height: 19px;
663
+ letter-spacing: 0.4px;
664
+ font-weight: 500;
665
+
666
+ @media (max-width: 699px) {
667
+ font-size: 17px;
668
+ line-height: 17px;
669
+ }
670
+ }
671
+
353
672
  .core-theme-module_coreTheme__pWxYB {
354
673
  /* RBO Red */
355
674
  /* Primary Palette */
@@ -208,26 +208,6 @@ var typographyStyles = {"display":"typography-module_display__ZHsz9","header":"t
208
208
  var _excluded = ["children", "size", "em", "color", "serif", "hierarchy", "tag", "className"],
209
209
  _excluded2 = ["children", "size", "color", "className", "bold", "tag"],
210
210
  _excluded3 = ["children", "size", "color", "className"];
211
- /* ~~~ Display - (use case) ~~~ */
212
- var DisplayHeader = function DisplayHeader(_ref) {
213
- var children = _ref.children,
214
- size = _ref.size,
215
- em = _ref.em,
216
- _ref$color = _ref.color,
217
- color = _ref$color === void 0 ? 'inherit' : _ref$color,
218
- serif = _ref.serif,
219
- className = _ref.className;
220
- var classNames = createClassNames('display', {
221
- size: size,
222
- color: color,
223
- serif: serif,
224
- em: em,
225
- className: className
226
- }, typographyStyles);
227
- return /*#__PURE__*/React__default.createElement("h1", {
228
- className: classNames
229
- }, children);
230
- };
231
211
  /* ~~~ Headers - size and hierarchy set separately ~~~ */
232
212
  var HarmonicHeader = function HarmonicHeader(_ref2) {
233
213
  var _ref3;
@@ -2712,6 +2692,7 @@ var Tab = function Tab(_ref) {
2712
2692
  className = _ref.className,
2713
2693
  role = _ref.role,
2714
2694
  ariaLabel = _ref.ariaLabel,
2695
+ tabLinkId = _ref.tabLinkId,
2715
2696
  color = _ref.color,
2716
2697
  dataTestId = _ref.dataTestId,
2717
2698
  isOpen = _ref.isOpen;
@@ -2746,8 +2727,9 @@ var Tab = function Tab(_ref) {
2746
2727
  className: className,
2747
2728
  "data-testid": dataTestId
2748
2729
  }, /*#__PURE__*/React__default.createElement(TabText, {
2749
- color: color,
2730
+ id: tabLinkId,
2750
2731
  trimText: trimText,
2732
+ color: color,
2751
2733
  withTextInMobile: withTextInMobile,
2752
2734
  "aria-hidden": "true"
2753
2735
  }, title), withIcon !== 'none' && /*#__PURE__*/React__default.createElement(Icon, {
@@ -2777,6 +2759,7 @@ var Dropdown = function Dropdown(_ref) {
2777
2759
  className = _ref.className,
2778
2760
  role = _ref.role,
2779
2761
  ariaLabel = _ref.ariaLabel,
2762
+ tabLinkId = _ref.tabLinkId,
2780
2763
  trimTabText = _ref.trimTabText;
2781
2764
  var node = React.useRef();
2782
2765
  var _useState = React.useState(false),
@@ -2873,6 +2856,7 @@ var Dropdown = function Dropdown(_ref) {
2873
2856
  };
2874
2857
  var renderTab = function renderTab() {
2875
2858
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Tab, {
2859
+ tabLinkId: tabLinkId,
2876
2860
  trimText: trimTabText,
2877
2861
  title: title,
2878
2862
  titleLink: titleLink,
@@ -2952,7 +2936,8 @@ var Account = function Account(_ref) {
2952
2936
  iconName: iconName,
2953
2937
  withOptionsInMobile: false,
2954
2938
  withIcon: "left",
2955
- className: className
2939
+ className: className,
2940
+ tabLinkId: "account-link"
2956
2941
  });
2957
2942
  };
2958
2943
 
@@ -5682,6 +5667,7 @@ var Accordion = function Accordion(_ref) {
5682
5667
  var toggleAccordion = function toggleAccordion() {
5683
5668
  if (React__default.Children.count(children) === 0) return;
5684
5669
  if (openAccordion) {
5670
+ setIcon(collapsedStateIconData);
5685
5671
  setOpenAccordion(false);
5686
5672
  setTextHeight('0px');
5687
5673
  setIcon(collapsedStateIconData);
@@ -6034,14 +6020,9 @@ var BodyContent = function BodyContent(_ref2) {
6034
6020
  _ref2$renderGridItem = _ref2.renderGridItem,
6035
6021
  renderGridItem = _ref2$renderGridItem === void 0 ? true : _ref2$renderGridItem;
6036
6022
  var textContainerClassName = !renderGrid && !renderGridItem ? className : undefined;
6037
- var content = /*#__PURE__*/React__default.createElement(TextContainer, {
6038
- tag: "div",
6039
- size: "large",
6040
- "data-testid": "text-container",
6023
+ var content = /*#__PURE__*/React__default.createElement(BodyContentTextContainer, {
6041
6024
  className: textContainerClassName,
6042
- dangerouslySetInnerHTML: {
6043
- __html: addTypographyClasses(text)
6044
- }
6025
+ html: text
6045
6026
  });
6046
6027
  var gridItemOrContent = renderGridItem ? (/*#__PURE__*/React__default.createElement(GridItem, {
6047
6028
  columnStartDesktop: columnStartDesktop,
@@ -6850,12 +6831,15 @@ var CastFilters = function CastFilters(_ref) {
6850
6831
  listRoleDescription = _ref.listRoleDescription,
6851
6832
  className = _ref.className,
6852
6833
  onSelect = _ref.onSelect,
6834
+ onSelectId = _ref.onSelectId,
6853
6835
  onApply = _ref.onApply,
6836
+ onApplyIds = _ref.onApplyIds,
6854
6837
  onClear = _ref.onClear,
6855
6838
  _ref$greyscale = _ref.greyscale,
6856
6839
  greyscale = _ref$greyscale === void 0 ? false : _ref$greyscale,
6857
6840
  _ref$selectedIndices = _ref.selectedIndices,
6858
- selectedIndices = _ref$selectedIndices === void 0 ? [] : _ref$selectedIndices;
6841
+ selectedIndices = _ref$selectedIndices === void 0 ? [] : _ref$selectedIndices,
6842
+ selectedIds = _ref.selectedIds;
6859
6843
  var _useViewport = useViewport(),
6860
6844
  isMobile = _useViewport.isMobile;
6861
6845
  var castWrapperRef = React.useRef(null);
@@ -6957,14 +6941,51 @@ var CastFilters = function CastFilters(_ref) {
6957
6941
  isDraggingRef.current = false;
6958
6942
  hasDraggedRef.current = false;
6959
6943
  }, [isMobile]);
6960
- 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) {
6961
6980
  if (hasDraggedRef.current) return;
6981
+ if (onSelectId) onSelectId(itemId);
6962
6982
  if (onSelect) onSelect(index);
6963
6983
  if (onClick) onClick();
6964
- }, [onSelect]);
6965
- var handlePersonKeydown = React__default.useCallback(function (e, index, onClick) {
6966
- if (e.key === 'Enter') {
6967
- 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);
6968
6989
  }
6969
6990
  }, [handleClick]);
6970
6991
  var handleClearKeydown = React__default.useCallback(function (e) {
@@ -6979,27 +7000,27 @@ var CastFilters = function CastFilters(_ref) {
6979
7000
  image = person.image,
6980
7001
  _onClick = person.onClick,
6981
7002
  ariaLabel = person['aria-label'];
6982
- var isSelected = selectedIndices.includes(index);
7003
+ var personSelectionId = getCastItemSelectionId(person);
7004
+ var isSelected = isIdSelectionMode ? selectedIdsSet.has(personSelectionId) : selectedIndices.includes(index);
6983
7005
  var personImage = image || placeholderImage || defaultPlaceholderImage;
6984
7006
  return /*#__PURE__*/React__default.createElement(PersonWrapper, {
6985
- key: index,
7007
+ key: personSelectionId,
6986
7008
  "aria-selected": isSelected,
6987
- "aria-label": ariaLabel || (isSelected ? 'Deselect' : 'Select') + " " + name,
6988
- "aria-posinset": index + 1,
6989
- "aria-setsize": cast.length,
7009
+ "aria-label": ariaLabel != null ? ariaLabel : name,
6990
7010
  role: "option",
6991
7011
  tabIndex: 0,
7012
+ onClick: function onClick() {
7013
+ return handleClick(index, personSelectionId, _onClick);
7014
+ },
6992
7015
  onKeyDown: function onKeyDown(e) {
6993
- return handlePersonKeydown(e, index, _onClick);
7016
+ return handlePersonKeydown(e, index, personSelectionId, _onClick);
6994
7017
  }
6995
7018
  }, /*#__PURE__*/React__default.createElement(PersonToggle, {
6996
7019
  isSelected: isSelected,
6997
- onClick: function onClick() {
6998
- return handleClick(index, _onClick);
6999
- }
7020
+ "aria-hidden": "true"
7000
7021
  }, /*#__PURE__*/React__default.createElement(PersonImage, {
7001
7022
  src: personImage,
7002
- alt: image ? name : "Placeholder image for " + name,
7023
+ alt: "",
7003
7024
  draggable: false,
7004
7025
  isDefaultPlaceholder: !(!!image || !!placeholderImage),
7005
7026
  greyscale: greyscale
@@ -7035,7 +7056,8 @@ var CastFilters = function CastFilters(_ref) {
7035
7056
  ref: castWrapperRef,
7036
7057
  role: "listbox",
7037
7058
  "aria-roledescription": listRoleDescription != null ? listRoleDescription : 'filter list',
7038
- "aria-multiselectable": true,
7059
+ "aria-label": "filter list",
7060
+ "aria-multiselectable": "true",
7039
7061
  onMouseDown: handleMouseDown,
7040
7062
  onMouseMove: handleMouseMove,
7041
7063
  onMouseUp: handleMouseUp,
@@ -7046,14 +7068,15 @@ var CastFilters = function CastFilters(_ref) {
7046
7068
  ref: swipeRef,
7047
7069
  onOverflowChange: handleOverflowChange,
7048
7070
  limitDragToNavigableRange: true
7049
- }, 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, {
7050
7072
  size: "medium",
7051
7073
  className: "mobile-only"
7052
- }, 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, {
7053
7075
  onClick: function onClick() {
7054
- return onApply(selectedIndices);
7076
+ if (onApply) onApply(selectedStateIndices);
7077
+ if (onApplyIds) onApplyIds(selectedStateIds);
7055
7078
  }
7056
- }, ctaText != null ? ctaText : 'Apply'), onClear && (/*#__PURE__*/React__default.createElement(TextLink, {
7079
+ }, ctaText != null ? ctaText : 'Apply')), onClear && (/*#__PURE__*/React__default.createElement(TextLink, {
7057
7080
  tabIndex: 0,
7058
7081
  role: "button",
7059
7082
  onClick: onClear,
@@ -9053,7 +9076,7 @@ var _excluded$l = ["text"],
9053
9076
  _excluded3$1 = ["text"];
9054
9077
  var _buttonTypeToButton$1;
9055
9078
  var LENGTH_TEXT$1 = 28;
9056
- var LENGTH_TEXT_PARAGRAPH = 130;
9079
+ var LENGTH_TEXT_PARAGRAPH = 185;
9057
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);
9058
9081
  var PromoWithTags = function PromoWithTags(_ref) {
9059
9082
  var _ref$imagePosition = _ref.imagePosition,
@@ -12232,7 +12255,7 @@ var CloseButton = /*#__PURE__*/styled__default.button(_templateObject2$19 || (_t
12232
12255
  var ContentWrapper$3 = /*#__PURE__*/styled__default.div(_templateObject3$V || (_templateObject3$V = /*#__PURE__*/_taggedTemplateLiteralLoose([""])));
12233
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"])));
12234
12257
 
12235
- var _excluded$s = ["isOpen", "setIsOpen", "children", "appElementId"];
12258
+ var _excluded$s = ["isOpen", "setIsOpen", "children", "appElementId", "closeButtonAriaLabel"];
12236
12259
  var MAX_Z_INDEX = 9999999999;
12237
12260
  if (Modal.defaultStyles.content) {
12238
12261
  Modal.defaultStyles.content.position = 'static';
@@ -12306,6 +12329,8 @@ var ModalWindow = function ModalWindow(_ref) {
12306
12329
  setIsOpen = _ref.setIsOpen,
12307
12330
  children = _ref.children,
12308
12331
  appElementId = _ref.appElementId,
12332
+ _ref$closeButtonAriaL = _ref.closeButtonAriaLabel,
12333
+ closeButtonAriaLabel = _ref$closeButtonAriaL === void 0 ? 'Close modal window' : _ref$closeButtonAriaL,
12309
12334
  modalProps = _objectWithoutPropertiesLoose(_ref, _excluded$s);
12310
12335
  var isMobile = useMobile();
12311
12336
  var customStyles = {
@@ -12338,10 +12363,11 @@ var ModalWindow = function ModalWindow(_ref) {
12338
12363
  columnSpanSmallDevice: 14
12339
12364
  }, /*#__PURE__*/React__default.createElement(InnerModal, null, /*#__PURE__*/React__default.createElement(CloseButton, {
12340
12365
  onClick: closeModalHandler,
12341
- "aria-label": "Close modal window",
12366
+ "aria-label": closeButtonAriaLabel,
12342
12367
  tabIndex: 0
12343
12368
  }, /*#__PURE__*/React__default.createElement(Icon, {
12344
- iconName: "Close"
12369
+ iconName: "Close",
12370
+ "aria-hidden": "true"
12345
12371
  })), /*#__PURE__*/React__default.createElement(ContentWrapper$3, null, children))), /*#__PURE__*/React__default.createElement(ScrollLock, null)));
12346
12372
  };
12347
12373
 
@@ -14601,7 +14627,6 @@ exports.ContactNewsletter = ContactNewsletter;
14601
14627
  exports.ContentSummary = ContentSummary;
14602
14628
  exports.ControlledDropdown = ControlledDropdown;
14603
14629
  exports.CreditListing = CreditListing;
14604
- exports.DisplayHeader = DisplayHeader;
14605
14630
  exports.Dropdown = Dropdown;
14606
14631
  exports.Editorial = Editorial;
14607
14632
  exports.Footer = Footer;