@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/CHANGELOG.md +16 -0
- package/dist/es/index.js +194 -199
- package/dist/index.js +85 -96
- package/package.json +19 -20
- package/src/components/__tests__/action-item.test.js +39 -28
- package/src/components/__tests__/action-menu.test.js +1 -0
- package/src/components/__tests__/dropdown-core-virtualized.test.js +9 -0
- package/src/components/__tests__/dropdown-core.test.js +9 -0
- package/src/components/__tests__/multi-select.test.js +9 -0
- package/src/components/__tests__/search-text-input.test.js +1 -0
- package/src/components/__tests__/single-select.test.js +6 -11
- package/src/components/action-item.js +18 -8
- package/src/components/action-menu-opener-core.js +0 -7
- package/src/components/action-menu.stories.js +48 -0
- package/src/components/checkbox.js +1 -2
- package/src/components/dropdown-core.js +2 -3
- package/src/components/multi-select.stories.js +6 -8
- package/src/components/option-item.js +0 -6
- package/src/components/select-opener.js +13 -17
- package/src/components/single-select.stories.js +11 -14
- package/LICENSE +0 -21
- package/src/components/__tests__/__snapshots__/action-item.test.js.snap +0 -63
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
|
|
457
|
-
/* harmony import */ var
|
|
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
|
-
|
|
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
|
|
629
|
-
/* harmony import */ var
|
|
630
|
-
/* harmony import */ var
|
|
631
|
-
/* harmony import */ var
|
|
632
|
-
/* harmony import */ var
|
|
633
|
-
/* harmony import */ var
|
|
634
|
-
/* harmony import */ var
|
|
635
|
-
/* harmony import */ var
|
|
636
|
-
/* harmony import */ var
|
|
637
|
-
/* harmony import */ var
|
|
638
|
-
/* harmony import */ var
|
|
639
|
-
/* harmony import */ var
|
|
640
|
-
/* harmony import */ var
|
|
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
|
|
677
|
+
return _check_js__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"];
|
|
687
678
|
} else {
|
|
688
|
-
return
|
|
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(
|
|
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"](
|
|
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"](
|
|
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
|
-
} =
|
|
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:
|
|
766
|
-
minHeight:
|
|
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:
|
|
770
|
-
paddingRight:
|
|
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(
|
|
780
|
-
background: Object(
|
|
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:
|
|
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
|
-
/*
|
|
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
|
-
/*
|
|
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
|
|
1526
|
-
/* harmony import */ var
|
|
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
|
-
|
|
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"])(
|
|
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__(
|
|
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__(
|
|
1773
|
-
/* harmony import */ var _dropdown_core_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(
|
|
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__(
|
|
1983
|
-
/* harmony import */ var _dropdown_opener_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(
|
|
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__(
|
|
2260
|
-
/* harmony import */ var _dropdown_opener_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(
|
|
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
|
|
3118
|
-
/* harmony import */ var
|
|
3119
|
-
/* harmony import */ var
|
|
3120
|
-
/* harmony import */ var
|
|
3121
|
-
/* harmony import */ var
|
|
3122
|
-
/* harmony import */ var
|
|
3123
|
-
/* harmony import */ var
|
|
3124
|
-
/* harmony import */ var
|
|
3125
|
-
/* harmony import */ var
|
|
3126
|
-
/* harmony import */ var
|
|
3127
|
-
/* harmony import */ var
|
|
3128
|
-
/* harmony import */ var
|
|
3129
|
-
/* harmony import */ var
|
|
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 =
|
|
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"](
|
|
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"](
|
|
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"](
|
|
3187
|
-
size:
|
|
3188
|
-
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](
|
|
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:
|
|
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:
|
|
3194
|
+
height: _util_constants_js__WEBPACK_IMPORTED_MODULE_8__[/* DROPDOWN_ITEM_HEIGHT */ "a"],
|
|
3206
3195
|
border: "none",
|
|
3207
|
-
borderRadius:
|
|
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:
|
|
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
|
-
} =
|
|
3257
|
-
const activeColor = Object(
|
|
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__(
|
|
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.
|
|
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.
|
|
19
|
-
"@khanacademy/wonder-blocks-button": "^2.
|
|
20
|
-
"@khanacademy/wonder-blocks-clickable": "^2.1
|
|
21
|
-
"@khanacademy/wonder-blocks-color": "^1.1.
|
|
22
|
-
"@khanacademy/wonder-blocks-core": "^
|
|
23
|
-
"@khanacademy/wonder-blocks-icon": "^1.2.
|
|
24
|
-
"@khanacademy/wonder-blocks-icon-button": "^3.
|
|
25
|
-
"@khanacademy/wonder-blocks-layout": "^1.4.
|
|
26
|
-
"@khanacademy/wonder-blocks-modal": "^2.1.
|
|
27
|
-
"@khanacademy/wonder-blocks-spacing": "^3.0.
|
|
28
|
-
"@khanacademy/wonder-blocks-timing": "^2.0
|
|
29
|
-
"@khanacademy/wonder-blocks-typography": "^1.1.
|
|
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
|
-
"
|
|
35
|
-
"react": "
|
|
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
|
|
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.
|
|
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
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
// Arrange
|
|
12
|
+
|
|
13
|
+
// Act
|
|
14
|
+
render(<ActionItem href="/foo" label="Example" disabled={true} />);
|
|
14
15
|
|
|
15
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
//
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const wrapper =
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
)
|
|
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
|
});
|
|
@@ -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
|
|