@khanacademy/wonder-blocks-dropdown 2.4.4 → 2.6.0

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/index.js CHANGED
@@ -453,8 +453,8 @@ const styles = aphrodite__WEBPACK_IMPORTED_MODULE_1__["StyleSheet"].create({
453
453
  /* harmony import */ var aphrodite__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(aphrodite__WEBPACK_IMPORTED_MODULE_1__);
454
454
  /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
455
455
  /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_router_dom__WEBPACK_IMPORTED_MODULE_2__);
456
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
457
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);
456
+ /* harmony import */ var react_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16);
457
+ /* harmony import */ var react_router__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_router__WEBPACK_IMPORTED_MODULE_3__);
458
458
  /* harmony import */ var _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1);
459
459
  /* harmony import */ var _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_4__);
460
460
  /* harmony import */ var _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3);
@@ -498,7 +498,7 @@ class ActionItem extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
498
498
  return instance && instance.type && instance.type.__IS_ACTION_ITEM__;
499
499
  }
500
500
 
501
- render() {
501
+ renderClickableBehavior(router) {
502
502
  const {
503
503
  skipClientNav,
504
504
  disabled,
@@ -506,14 +506,12 @@ class ActionItem extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
506
506
  target,
507
507
  indent,
508
508
  label,
509
+ lang,
509
510
  onClick,
510
511
  role,
511
512
  style,
512
513
  testId
513
514
  } = this.props;
514
- const {
515
- router
516
- } = this.context;
517
515
  const ClickableBehavior = Object(_khanacademy_wonder_blocks_clickable__WEBPACK_IMPORTED_MODULE_7__["getClickableBehavior"])(href, skipClientNav, router);
518
516
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ClickableBehavior, {
519
517
  disabled: disabled,
@@ -537,6 +535,7 @@ class ActionItem extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
537
535
  ...childrenProps
538
536
  };
539
537
  const children = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_6__["LabelMedium"], {
538
+ lang: lang,
540
539
  style: [indent && styles.indent, styles.label]
541
540
  }, label));
542
541
 
@@ -557,10 +556,11 @@ class ActionItem extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
557
556
  });
558
557
  }
559
558
 
559
+ render() {
560
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react_router__WEBPACK_IMPORTED_MODULE_3__["__RouterContext"].Consumer, null, router => this.renderClickableBehavior(router));
561
+ }
562
+
560
563
  }
561
- ActionItem.contextTypes = {
562
- router: prop_types__WEBPACK_IMPORTED_MODULE_3__["any"]
563
- };
564
564
  ActionItem.defaultProps = {
565
565
  disabled: false,
566
566
  indent: false,
@@ -611,12 +611,6 @@ const styles = aphrodite__WEBPACK_IMPORTED_MODULE_1__["StyleSheet"].create({
611
611
 
612
612
  /***/ }),
613
613
  /* 13 */
614
- /***/ (function(module, exports) {
615
-
616
- module.exports = require("prop-types");
617
-
618
- /***/ }),
619
- /* 14 */
620
614
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
621
615
 
622
616
  "use strict";
@@ -625,21 +619,19 @@ module.exports = require("prop-types");
625
619
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
626
620
  /* harmony import */ var aphrodite__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
627
621
  /* harmony import */ var aphrodite__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(aphrodite__WEBPACK_IMPORTED_MODULE_1__);
628
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
629
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);
630
- /* harmony import */ var _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1);
631
- /* harmony import */ var _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3__);
632
- /* harmony import */ var _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3);
633
- /* harmony import */ var _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_4__);
634
- /* harmony import */ var _khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
635
- /* harmony import */ var _khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_5__);
636
- /* harmony import */ var _khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(5);
637
- /* harmony import */ var _khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_6__);
638
- /* harmony import */ var _khanacademy_wonder_blocks_clickable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(10);
639
- /* harmony import */ var _khanacademy_wonder_blocks_clickable__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_clickable__WEBPACK_IMPORTED_MODULE_7__);
640
- /* harmony import */ var _util_constants_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(2);
641
- /* harmony import */ var _check_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(24);
642
- /* harmony import */ var _checkbox_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(25);
622
+ /* harmony import */ var _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
623
+ /* harmony import */ var _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_2__);
624
+ /* harmony import */ var _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
625
+ /* harmony import */ var _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_3__);
626
+ /* harmony import */ var _khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
627
+ /* harmony import */ var _khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_4__);
628
+ /* harmony import */ var _khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5);
629
+ /* harmony import */ var _khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_5__);
630
+ /* harmony import */ var _khanacademy_wonder_blocks_clickable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(10);
631
+ /* harmony import */ var _khanacademy_wonder_blocks_clickable__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_clickable__WEBPACK_IMPORTED_MODULE_6__);
632
+ /* harmony import */ var _util_constants_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(2);
633
+ /* harmony import */ var _check_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(24);
634
+ /* harmony import */ var _checkbox_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(25);
643
635
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
644
636
 
645
637
 
@@ -653,7 +645,6 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
653
645
 
654
646
 
655
647
 
656
-
657
648
  /**
658
649
  * For option items that can be selected in a dropdown, selection denoted either
659
650
  * with a check ✔️ or a checkbox ☑️. Use as children in SingleSelect or
@@ -683,9 +674,9 @@ class OptionItem extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
683
674
 
684
675
  getCheckComponent() {
685
676
  if (this.props.variant === "check") {
686
- return _check_js__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"];
677
+ return _check_js__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"];
687
678
  } else {
688
- return _checkbox_js__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"];
679
+ return _checkbox_js__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"];
689
680
  }
690
681
  }
691
682
 
@@ -708,7 +699,7 @@ class OptionItem extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
708
699
  /* eslint-enable no-unused-vars */
709
700
  ...sharedProps
710
701
  } = this.props;
711
- const ClickableBehavior = Object(_khanacademy_wonder_blocks_clickable__WEBPACK_IMPORTED_MODULE_7__["getClickableBehavior"])();
702
+ const ClickableBehavior = Object(_khanacademy_wonder_blocks_clickable__WEBPACK_IMPORTED_MODULE_6__["getClickableBehavior"])();
712
703
  const CheckComponent = this.getCheckComponent();
713
704
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ClickableBehavior, {
714
705
  disabled: disabled,
@@ -722,7 +713,7 @@ class OptionItem extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
722
713
  } = state;
723
714
  const defaultStyle = [styles.itemContainer, pressed ? styles.active : (hovered || focused) && styles.focus, disabled && styles.disabled, // pass optional styles from react-window (if applies)
724
715
  style];
725
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_6__["View"], _extends({}, sharedProps, {
716
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_5__["View"], _extends({}, sharedProps, {
726
717
  testId: testId,
727
718
  style: defaultStyle,
728
719
  "aria-selected": selected ? "true" : "false",
@@ -733,16 +724,13 @@ class OptionItem extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
733
724
  pressed: pressed,
734
725
  hovered: hovered,
735
726
  focused: focused
736
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_5__["LabelMedium"], {
727
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_4__["LabelMedium"], {
737
728
  style: styles.label
738
729
  }, label));
739
730
  });
740
731
  }
741
732
 
742
733
  }
743
- OptionItem.contextTypes = {
744
- router: prop_types__WEBPACK_IMPORTED_MODULE_2__["any"]
745
- };
746
734
  OptionItem.defaultProps = {
747
735
  disabled: false,
748
736
  onToggle: () => void 0,
@@ -755,19 +743,19 @@ const {
755
743
  white,
756
744
  offBlack,
757
745
  offBlack32
758
- } = _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3___default.a;
746
+ } = _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_2___default.a;
759
747
  const styles = aphrodite__WEBPACK_IMPORTED_MODULE_1__["StyleSheet"].create({
760
748
  itemContainer: {
761
749
  flexDirection: "row",
762
750
  backgroundColor: white,
763
751
  color: offBlack,
764
752
  alignItems: "center",
765
- height: _util_constants_js__WEBPACK_IMPORTED_MODULE_8__[/* DROPDOWN_ITEM_HEIGHT */ "a"],
766
- minHeight: _util_constants_js__WEBPACK_IMPORTED_MODULE_8__[/* DROPDOWN_ITEM_HEIGHT */ "a"],
753
+ height: _util_constants_js__WEBPACK_IMPORTED_MODULE_7__[/* DROPDOWN_ITEM_HEIGHT */ "a"],
754
+ minHeight: _util_constants_js__WEBPACK_IMPORTED_MODULE_7__[/* DROPDOWN_ITEM_HEIGHT */ "a"],
767
755
  border: 0,
768
756
  outline: 0,
769
- paddingLeft: _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_4___default.a.xSmall_8,
770
- paddingRight: _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_4___default.a.medium_16,
757
+ paddingLeft: _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_3___default.a.xSmall_8,
758
+ paddingRight: _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_3___default.a.medium_16,
771
759
  whiteSpace: "nowrap",
772
760
  cursor: "default"
773
761
  },
@@ -776,8 +764,8 @@ const styles = aphrodite__WEBPACK_IMPORTED_MODULE_1__["StyleSheet"].create({
776
764
  background: blue
777
765
  },
778
766
  active: {
779
- color: Object(_khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3__["mix"])(Object(_khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3__["fade"])(blue, 0.32), white),
780
- background: Object(_khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3__["mix"])(offBlack32, blue)
767
+ color: Object(_khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_2__["mix"])(Object(_khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_2__["fade"])(blue, 0.32), white),
768
+ background: Object(_khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_2__["mix"])(offBlack32, blue)
781
769
  },
782
770
  disabled: {
783
771
  color: offBlack32,
@@ -786,7 +774,7 @@ const styles = aphrodite__WEBPACK_IMPORTED_MODULE_1__["StyleSheet"].create({
786
774
  label: {
787
775
  whiteSpace: "nowrap",
788
776
  userSelect: "none",
789
- marginLeft: _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_4___default.a.xSmall_8,
777
+ marginLeft: _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_3___default.a.xSmall_8,
790
778
  // added to truncate strings that are longer than expected
791
779
  overflow: "hidden",
792
780
  textOverflow: "ellipsis"
@@ -797,7 +785,7 @@ const styles = aphrodite__WEBPACK_IMPORTED_MODULE_1__["StyleSheet"].create({
797
785
  });
798
786
 
799
787
  /***/ }),
800
- /* 15 */
788
+ /* 14 */
801
789
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
802
790
 
803
791
  "use strict";
@@ -858,7 +846,7 @@ DropdownOpener.defaultProps = {
858
846
  /* harmony default export */ __webpack_exports__["a"] = (DropdownOpener);
859
847
 
860
848
  /***/ }),
861
- /* 16 */
849
+ /* 15 */
862
850
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
863
851
 
864
852
  "use strict";
@@ -1506,6 +1494,12 @@ const styles = aphrodite__WEBPACK_IMPORTED_MODULE_3__["StyleSheet"].create({
1506
1494
  });
1507
1495
  /* harmony default export */ __webpack_exports__["a"] = (Object(_khanacademy_wonder_blocks_timing__WEBPACK_IMPORTED_MODULE_10__["withActionScheduler"])(DropdownCore));
1508
1496
 
1497
+ /***/ }),
1498
+ /* 16 */
1499
+ /***/ (function(module, exports) {
1500
+
1501
+ module.exports = require("react-router");
1502
+
1509
1503
  /***/ }),
1510
1504
  /* 17 */
1511
1505
  /***/ (function(module, exports) {
@@ -1522,8 +1516,8 @@ module.exports = require("@khanacademy/wonder-blocks-timing");
1522
1516
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1523
1517
  /* harmony import */ var aphrodite__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
1524
1518
  /* harmony import */ var aphrodite__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(aphrodite__WEBPACK_IMPORTED_MODULE_1__);
1525
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
1526
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);
1519
+ /* harmony import */ var react_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16);
1520
+ /* harmony import */ var react_router__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_router__WEBPACK_IMPORTED_MODULE_2__);
1527
1521
  /* harmony import */ var _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1);
1528
1522
  /* harmony import */ var _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3__);
1529
1523
  /* harmony import */ var _khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5);
@@ -1575,7 +1569,7 @@ class SelectOpener extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
1575
1569
  };
1576
1570
  }
1577
1571
 
1578
- render() {
1572
+ renderClickableBehavior(router) {
1579
1573
  const {
1580
1574
  children,
1581
1575
  disabled,
@@ -1588,7 +1582,7 @@ class SelectOpener extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
1588
1582
  onOpenChanged,
1589
1583
  ...sharedProps
1590
1584
  } = this.props;
1591
- const ClickableBehavior = Object(_khanacademy_wonder_blocks_clickable__WEBPACK_IMPORTED_MODULE_5__["getClickableBehavior"])(this.context.router);
1585
+ const ClickableBehavior = Object(_khanacademy_wonder_blocks_clickable__WEBPACK_IMPORTED_MODULE_5__["getClickableBehavior"])(router);
1592
1586
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](ClickableBehavior, {
1593
1587
  disabled: disabled,
1594
1588
  onClick: this.handleClick
@@ -1624,10 +1618,11 @@ class SelectOpener extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
1624
1618
  });
1625
1619
  }
1626
1620
 
1621
+ render() {
1622
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react_router__WEBPACK_IMPORTED_MODULE_2__["__RouterContext"].Consumer, null, router => this.renderClickableBehavior(router));
1623
+ }
1624
+
1627
1625
  }
1628
- SelectOpener.contextTypes = {
1629
- router: prop_types__WEBPACK_IMPORTED_MODULE_2__["any"]
1630
- };
1631
1626
  SelectOpener.defaultProps = {
1632
1627
  disabled: false,
1633
1628
  light: false,
@@ -1767,10 +1762,10 @@ module.exports = require("react-window");
1767
1762
  /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);
1768
1763
  /* harmony import */ var aphrodite__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);
1769
1764
  /* harmony import */ var aphrodite__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(aphrodite__WEBPACK_IMPORTED_MODULE_2__);
1770
- /* harmony import */ var _dropdown_opener_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
1765
+ /* harmony import */ var _dropdown_opener_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(14);
1771
1766
  /* harmony import */ var _action_item_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(12);
1772
- /* harmony import */ var _option_item_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(14);
1773
- /* harmony import */ var _dropdown_core_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(16);
1767
+ /* harmony import */ var _option_item_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(13);
1768
+ /* harmony import */ var _dropdown_core_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(15);
1774
1769
  /* harmony import */ var _action_menu_opener_core_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(31);
1775
1770
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1776
1771
 
@@ -1979,8 +1974,8 @@ const styles = aphrodite__WEBPACK_IMPORTED_MODULE_2__["StyleSheet"].create({
1979
1974
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1980
1975
  /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
1981
1976
  /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);
1982
- /* harmony import */ var _dropdown_core_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16);
1983
- /* harmony import */ var _dropdown_opener_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
1977
+ /* harmony import */ var _dropdown_core_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
1978
+ /* harmony import */ var _dropdown_opener_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(14);
1984
1979
  /* harmony import */ var _select_opener_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
1985
1980
  /* harmony import */ var _util_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2);
1986
1981
  /* harmony import */ var _search_text_input_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(11);
@@ -2256,8 +2251,8 @@ SingleSelect.defaultProps = {
2256
2251
  /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
2257
2252
  /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);
2258
2253
  /* harmony import */ var _action_item_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
2259
- /* harmony import */ var _dropdown_core_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16);
2260
- /* harmony import */ var _dropdown_opener_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15);
2254
+ /* harmony import */ var _dropdown_core_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
2255
+ /* harmony import */ var _dropdown_opener_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14);
2261
2256
  /* harmony import */ var _search_text_input_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(11);
2262
2257
  /* harmony import */ var _select_opener_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(18);
2263
2258
  /* harmony import */ var _separator_item_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(8);
@@ -3114,21 +3109,19 @@ module.exports = require("@khanacademy/wonder-blocks-icon-button");
3114
3109
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
3115
3110
  /* harmony import */ var aphrodite__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
3116
3111
  /* harmony import */ var aphrodite__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(aphrodite__WEBPACK_IMPORTED_MODULE_1__);
3117
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
3118
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);
3119
- /* harmony import */ var _khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
3120
- /* harmony import */ var _khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_3__);
3121
- /* harmony import */ var _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1);
3122
- /* harmony import */ var _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_4__);
3123
- /* harmony import */ var _khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5);
3124
- /* harmony import */ var _khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_5__);
3125
- /* harmony import */ var _khanacademy_wonder_blocks_icon__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6);
3126
- /* harmony import */ var _khanacademy_wonder_blocks_icon__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_icon__WEBPACK_IMPORTED_MODULE_6__);
3127
- /* harmony import */ var _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(3);
3128
- /* harmony import */ var _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_7__);
3129
- /* harmony import */ var _khanacademy_wonder_blocks_layout__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(32);
3130
- /* harmony import */ var _khanacademy_wonder_blocks_layout__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_layout__WEBPACK_IMPORTED_MODULE_8__);
3131
- /* harmony import */ var _util_constants_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(2);
3112
+ /* harmony import */ var _khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
3113
+ /* harmony import */ var _khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_2__);
3114
+ /* harmony import */ var _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1);
3115
+ /* harmony import */ var _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3__);
3116
+ /* harmony import */ var _khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5);
3117
+ /* harmony import */ var _khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_4__);
3118
+ /* harmony import */ var _khanacademy_wonder_blocks_icon__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6);
3119
+ /* harmony import */ var _khanacademy_wonder_blocks_icon__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_icon__WEBPACK_IMPORTED_MODULE_5__);
3120
+ /* harmony import */ var _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(3);
3121
+ /* harmony import */ var _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_6__);
3122
+ /* harmony import */ var _khanacademy_wonder_blocks_layout__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(32);
3123
+ /* harmony import */ var _khanacademy_wonder_blocks_layout__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_khanacademy_wonder_blocks_layout__WEBPACK_IMPORTED_MODULE_7__);
3124
+ /* harmony import */ var _util_constants_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(2);
3132
3125
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3133
3126
 
3134
3127
 
@@ -3140,8 +3133,7 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
3140
3133
 
3141
3134
 
3142
3135
 
3143
-
3144
- const StyledButton = Object(_khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_5__["addStyle"])("button");
3136
+ const StyledButton = Object(_khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_4__["addStyle"])("button");
3145
3137
  /**
3146
3138
  * Although this component shares a lot with ButtonCore there are a couple
3147
3139
  * of differences:
@@ -3163,13 +3155,13 @@ class ActionMenuOpenerCore extends react__WEBPACK_IMPORTED_MODULE_0__["Component
3163
3155
  "aria-label": ariaLabel,
3164
3156
  ...restProps
3165
3157
  } = this.props;
3166
- const buttonColor = _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_4__["SemanticColor"].controlDefault;
3158
+ const buttonColor = _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3__["SemanticColor"].controlDefault;
3167
3159
 
3168
3160
  const buttonStyles = _generateStyles(buttonColor);
3169
3161
 
3170
3162
  const disabled = disabledProp;
3171
3163
  const defaultStyle = [sharedStyles.shared, disabled && sharedStyles.disabled, buttonStyles.default, disabled && buttonStyles.disabled, !disabled && pressed && buttonStyles.active];
3172
- const label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_3__["LabelLarge"], {
3164
+ const label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_khanacademy_wonder_blocks_typography__WEBPACK_IMPORTED_MODULE_2__["LabelLarge"], {
3173
3165
  style: sharedStyles.text
3174
3166
  }, children);
3175
3167
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](StyledButton, _extends({
@@ -3181,30 +3173,27 @@ class ActionMenuOpenerCore extends react__WEBPACK_IMPORTED_MODULE_0__["Component
3181
3173
  type: "button"
3182
3174
  }, restProps, {
3183
3175
  "data-test-id": testId
3184
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_5__["View"], {
3176
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_khanacademy_wonder_blocks_core__WEBPACK_IMPORTED_MODULE_4__["View"], {
3185
3177
  style: !disabled && (hovered || focused) && buttonStyles.focus
3186
- }, label), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_khanacademy_wonder_blocks_layout__WEBPACK_IMPORTED_MODULE_8__["Strut"], {
3187
- size: _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_7___default.a.xxxSmall_4
3188
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_khanacademy_wonder_blocks_icon__WEBPACK_IMPORTED_MODULE_6___default.a, {
3178
+ }, label), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_khanacademy_wonder_blocks_layout__WEBPACK_IMPORTED_MODULE_7__["Strut"], {
3179
+ size: _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_6___default.a.xxxSmall_4
3180
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_khanacademy_wonder_blocks_icon__WEBPACK_IMPORTED_MODULE_5___default.a, {
3189
3181
  size: "small",
3190
3182
  color: "currentColor",
3191
- icon: _khanacademy_wonder_blocks_icon__WEBPACK_IMPORTED_MODULE_6__["icons"].caretDown
3183
+ icon: _khanacademy_wonder_blocks_icon__WEBPACK_IMPORTED_MODULE_5__["icons"].caretDown
3192
3184
  }));
3193
3185
  }
3194
3186
 
3195
3187
  }
3196
- ActionMenuOpenerCore.contextTypes = {
3197
- router: prop_types__WEBPACK_IMPORTED_MODULE_2__["any"]
3198
- };
3199
3188
  const sharedStyles = aphrodite__WEBPACK_IMPORTED_MODULE_1__["StyleSheet"].create({
3200
3189
  shared: {
3201
3190
  position: "relative",
3202
3191
  display: "inline-flex",
3203
3192
  alignItems: "center",
3204
3193
  justifyContent: "center",
3205
- height: _util_constants_js__WEBPACK_IMPORTED_MODULE_9__[/* DROPDOWN_ITEM_HEIGHT */ "a"],
3194
+ height: _util_constants_js__WEBPACK_IMPORTED_MODULE_8__[/* DROPDOWN_ITEM_HEIGHT */ "a"],
3206
3195
  border: "none",
3207
- borderRadius: _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_7___default.a.xxxSmall_4,
3196
+ borderRadius: _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_6___default.a.xxxSmall_4,
3208
3197
  cursor: "pointer",
3209
3198
  outline: "none",
3210
3199
  textDecoration: "none",
@@ -3221,7 +3210,7 @@ const sharedStyles = aphrodite__WEBPACK_IMPORTED_MODULE_1__["StyleSheet"].create
3221
3210
  cursor: "auto"
3222
3211
  },
3223
3212
  small: {
3224
- height: _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_7___default.a.xLarge_32
3213
+ height: _khanacademy_wonder_blocks_spacing__WEBPACK_IMPORTED_MODULE_6___default.a.xLarge_32
3225
3214
  },
3226
3215
  text: {
3227
3216
  textAlign: "left",
@@ -3253,8 +3242,8 @@ const _generateStyles = color => {
3253
3242
 
3254
3243
  const {
3255
3244
  offBlack32
3256
- } = _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_4___default.a;
3257
- const activeColor = Object(_khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_4__["mix"])(offBlack32, color);
3245
+ } = _khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3___default.a;
3246
+ const activeColor = Object(_khanacademy_wonder_blocks_color__WEBPACK_IMPORTED_MODULE_3__["mix"])(offBlack32, color);
3258
3247
  let newStyles = {};
3259
3248
  newStyles = {
3260
3249
  default: {
@@ -3300,7 +3289,7 @@ __webpack_require__.r(__webpack_exports__);
3300
3289
  /* harmony import */ var _components_action_item_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
3301
3290
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ActionItem", function() { return _components_action_item_js__WEBPACK_IMPORTED_MODULE_0__["a"]; });
3302
3291
 
3303
- /* harmony import */ var _components_option_item_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
3292
+ /* harmony import */ var _components_option_item_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
3304
3293
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "OptionItem", function() { return _components_option_item_js__WEBPACK_IMPORTED_MODULE_1__["a"]; });
3305
3294
 
3306
3295
  /* harmony import */ var _components_separator_item_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@khanacademy/wonder-blocks-dropdown",
3
- "version": "2.4.4",
3
+ "version": "2.6.0",
4
4
  "design": "v1",
5
5
  "description": "Dropdown variants for Wonder Blocks.",
6
6
  "main": "dist/index.js",
@@ -15,31 +15,30 @@
15
15
  "access": "public"
16
16
  },
17
17
  "dependencies": {
18
- "@babel/runtime": "^7.13.10",
19
- "@khanacademy/wonder-blocks-button": "^2.9.14",
20
- "@khanacademy/wonder-blocks-clickable": "^2.1.3",
21
- "@khanacademy/wonder-blocks-color": "^1.1.19",
22
- "@khanacademy/wonder-blocks-core": "^3.1.5",
23
- "@khanacademy/wonder-blocks-icon": "^1.2.22",
24
- "@khanacademy/wonder-blocks-icon-button": "^3.3.14",
25
- "@khanacademy/wonder-blocks-layout": "^1.4.4",
26
- "@khanacademy/wonder-blocks-modal": "^2.1.43",
27
- "@khanacademy/wonder-blocks-spacing": "^3.0.4",
28
- "@khanacademy/wonder-blocks-timing": "^2.0.1",
29
- "@khanacademy/wonder-blocks-typography": "^1.1.26"
18
+ "@babel/runtime": "^7.16.3",
19
+ "@khanacademy/wonder-blocks-button": "^2.10.2",
20
+ "@khanacademy/wonder-blocks-clickable": "^2.2.1",
21
+ "@khanacademy/wonder-blocks-color": "^1.1.20",
22
+ "@khanacademy/wonder-blocks-core": "^4.1.0",
23
+ "@khanacademy/wonder-blocks-icon": "^1.2.24",
24
+ "@khanacademy/wonder-blocks-icon-button": "^3.4.1",
25
+ "@khanacademy/wonder-blocks-layout": "^1.4.6",
26
+ "@khanacademy/wonder-blocks-modal": "^2.1.45",
27
+ "@khanacademy/wonder-blocks-spacing": "^3.0.5",
28
+ "@khanacademy/wonder-blocks-timing": "^2.1.0",
29
+ "@khanacademy/wonder-blocks-typography": "^1.1.28"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "@popperjs/core": "^2.10.1",
33
33
  "aphrodite": "^1.2.5",
34
- "prop-types": "^15.6.2",
35
- "react": "^16.4.1",
36
- "react-dom": "^16.4.1",
34
+ "react": "16.14.0",
35
+ "react-dom": "16.14.0",
37
36
  "react-popper": "^2.0.0",
38
- "react-router-dom": "^4.2.2",
37
+ "react-router": "5.2.1",
38
+ "react-router-dom": "5.3.0",
39
39
  "react-window": "^1.8.5"
40
40
  },
41
41
  "devDependencies": {
42
- "wb-dev-build-settings": "^0.1.2"
43
- },
44
- "gitHead": "7e879c62ab49bf48f1debb96bcbc9d612e4689a6"
42
+ "wb-dev-build-settings": "^0.2.0"
43
+ }
45
44
  }
@@ -1,43 +1,54 @@
1
+ // @flow
1
2
  import * as React from "react";
2
- import renderer from "react-test-renderer";
3
- import {Link} from "react-router-dom";
4
- import {shallow} from "enzyme";
5
- import ReactRouterEnzymeContext from "react-router-enzyme-context";
3
+ import {MemoryRouter, Link} from "react-router-dom";
4
+ import {mount} from "enzyme";
5
+ import {render, screen} from "@testing-library/react";
6
6
 
7
7
  import ActionItem from "../action-item.js";
8
8
 
9
9
  describe("ActionItem", () => {
10
10
  it("should render with disabled styles", () => {
11
- const actionItem = renderer.create(
12
- <ActionItem href="/foo" disabled={true} />,
13
- );
11
+ // Arrange
12
+
13
+ // Act
14
+ render(<ActionItem href="/foo" label="Example" disabled={true} />);
14
15
 
15
- expect(actionItem).toMatchSnapshot();
16
+ // Assert
17
+ expect(screen.getByRole("menuitem")).toBeDisabled();
16
18
  });
17
19
 
18
20
  it("should render an anchor if there's no router", () => {
19
- const wrapper = shallow(<ActionItem href="/foo" />);
20
-
21
- expect(
22
- wrapper
23
- // call the props.children(state, handlers) with empty objects for both params
24
- .renderProp("children")({}, {})
25
- // shallow render the first child of that result to unwrap StyledAnchor HOC
26
- .first()
27
- .shallow()
28
- // check that it includes an <a> tag
29
- .find("a"),
30
- ).toHaveLength(1);
21
+ // Arrange
22
+
23
+ // Act
24
+ render(<ActionItem href="/foo" label="Example" />);
25
+
26
+ // Assert
27
+ // eslint-disable-next-line testing-library/no-node-access
28
+ expect(document.querySelectorAll("a")).toHaveLength(1);
31
29
  });
32
30
 
33
31
  it("should render a Link if there's a router", () => {
34
- // Same thing as the previous test but this time include a router context
35
- // when shallow rendering.
36
- const options = new ReactRouterEnzymeContext();
37
- const wrapper = shallow(<ActionItem href="/foo" />, options.get());
38
-
39
- expect(
40
- wrapper.renderProp("children")({}, {}).first().shallow().find(Link),
41
- ).toHaveLength(1);
32
+ // Arrange
33
+
34
+ // Act
35
+ const wrapper = mount(
36
+ <MemoryRouter>
37
+ <ActionItem href="/foo" label="Example" />
38
+ </MemoryRouter>,
39
+ );
40
+
41
+ // Assert
42
+ expect(wrapper.find(Link)).toHaveLength(1);
43
+ });
44
+
45
+ it("should set the lang attribute if it's passed down", () => {
46
+ // Arrange
47
+
48
+ // Act
49
+ render(<ActionItem label="Español" lang="es" />);
50
+
51
+ // Assert
52
+ expect(screen.getByText("Español")).toHaveAttribute("lang", "es");
42
53
  });
43
54
  });
@@ -1,6 +1,7 @@
1
1
  //@flow
2
2
  import * as React from "react";
3
3
  import {mount} from "enzyme";
4
+ import "jest-enzyme";
4
5
 
5
6
  import ActionItem from "../action-item.js";
6
7
  import OptionItem from "../option-item.js";
@@ -2,12 +2,15 @@
2
2
  import * as React from "react";
3
3
  import {VariableSizeList as List} from "react-window";
4
4
  import {mount} from "enzyme";
5
+ import "jest-enzyme";
5
6
 
6
7
  import OptionItem from "../option-item.js";
7
8
  import SeparatorItem from "../separator-item.js";
8
9
  import DropdownCoreVirtualized from "../dropdown-core-virtualized.js";
9
10
  import SearchTextInput from "../search-text-input.js";
10
11
 
12
+ import {unmountAll} from "../../../../../utils/testing/enzyme-shim.js";
13
+
11
14
  describe("DropdownCoreVirtualized", () => {
12
15
  beforeEach(() => {
13
16
  jest.useFakeTimers();
@@ -24,6 +27,12 @@ describe("DropdownCoreVirtualized", () => {
24
27
  });
25
28
 
26
29
  afterEach(() => {
30
+ // We have to explicitly unmount before clearing mocks, otherwise jest
31
+ // timers will throw because we'll try to clear an animation frame that
32
+ // we set with a setTimeout but are clearing with clearAnimationFrame
33
+ // because we restored the clearAnimationFrame mock (and we won't
34
+ // have cleared the timeout we actually set!)
35
+ unmountAll();
27
36
  jest.restoreAllMocks();
28
37
  });
29
38