@openedx/paragon 22.6.1 → 22.8.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.
Files changed (49) hide show
  1. package/dist/Chip/ChipIcon.d.ts +11 -6
  2. package/dist/Chip/ChipIcon.js +0 -2
  3. package/dist/Chip/ChipIcon.js.map +1 -1
  4. package/dist/Chip/constants.d.ts +4 -0
  5. package/dist/Chip/constants.js +3 -2
  6. package/dist/Chip/constants.js.map +1 -0
  7. package/dist/Chip/index.d.ts +2 -1
  8. package/dist/Chip/index.js +0 -2
  9. package/dist/Chip/index.js.map +1 -1
  10. package/dist/ChipCarousel/index.js +0 -2
  11. package/dist/ChipCarousel/index.js.map +1 -1
  12. package/dist/Container/index.d.ts +16 -0
  13. package/dist/Container/index.js +15 -13
  14. package/dist/Container/index.js.map +1 -1
  15. package/dist/IconButton/index.d.ts +344 -0
  16. package/dist/IconButton/index.js +17 -25
  17. package/dist/IconButton/index.js.map +1 -1
  18. package/dist/Menu/SelectMenu.js +9 -4
  19. package/dist/Menu/SelectMenu.js.map +1 -1
  20. package/dist/Overlay/index.d.ts +128 -0
  21. package/dist/Overlay/index.js +5 -0
  22. package/dist/Overlay/index.js.map +1 -1
  23. package/dist/Tooltip/index.d.ts +7 -0
  24. package/dist/Tooltip/index.js.map +1 -1
  25. package/dist/index.d.ts +4 -4
  26. package/dist/index.js +3 -3
  27. package/package.json +1 -1
  28. package/src/Chip/{Chip.test.jsx → Chip.test.tsx} +5 -7
  29. package/src/Chip/ChipIcon.tsx +7 -7
  30. package/src/Chip/{constants.js → constants.ts} +1 -1
  31. package/src/Chip/index.tsx +1 -3
  32. package/src/ChipCarousel/index.tsx +0 -2
  33. package/src/Container/{Container.test.jsx → Container.test.tsx} +14 -8
  34. package/src/Container/README.md +4 -0
  35. package/src/Container/index.tsx +64 -0
  36. package/src/IconButton/{IconButton.test.jsx → IconButton.test.tsx} +24 -3
  37. package/src/IconButton/__snapshots__/IconButton.test.tsx.snap +112 -0
  38. package/src/IconButton/{index.jsx → index.tsx} +62 -22
  39. package/src/Menu/SelectMenu.jsx +5 -0
  40. package/src/Menu/SelectMenu.test.jsx +6 -0
  41. package/src/Menu/select-menu.md +8 -0
  42. package/src/Overlay/{index.jsx → index.tsx} +10 -6
  43. package/src/Tooltip/{index.jsx → index.tsx} +9 -3
  44. package/src/index.d.ts +4 -4
  45. package/src/index.js +3 -3
  46. package/src/Container/index.jsx +0 -49
  47. package/src/IconButton/__snapshots__/IconButton.test.jsx.snap +0 -43
  48. /package/src/Chip/__snapshots__/{Chip.test.jsx.snap → Chip.test.tsx.snap} +0 -0
  49. /package/src/Tooltip/{Tooltip.test.jsx → Tooltip.test.tsx} +0 -0
@@ -0,0 +1,128 @@
1
+ import React from 'react';
2
+ import { type OverlayProps } from 'react-bootstrap/Overlay';
3
+ import { type OverlayTriggerProps, type OverlayTriggerType } from 'react-bootstrap/OverlayTrigger';
4
+ import PropTypes from 'prop-types';
5
+ declare function Overlay(props: OverlayProps): React.JSX.Element;
6
+ declare namespace Overlay {
7
+ var propTypes: {
8
+ /** Specifies the content of the `Overlay`. */
9
+ children: PropTypes.Validator<NonNullable<PropTypes.ReactNodeLike>>;
10
+ /**
11
+ * A component instance, DOM node, or function that returns either.
12
+ * The overlay will be positioned in relation to the target.
13
+ */
14
+ container: PropTypes.Requireable<NonNullable<((...args: any[]) => any) | PropTypes.ReactComponentLike | null | undefined>>;
15
+ /** Callback fired before the `Overlay` transitions in. */
16
+ onEnter: PropTypes.Requireable<(...args: any[]) => any>;
17
+ /** Callback fired after the `Overlay` finishes transitioning in. */
18
+ onEntered: PropTypes.Requireable<(...args: any[]) => any>;
19
+ /** Callback fired as the `Overlay` begins to transition in. */
20
+ onEntering: PropTypes.Requireable<(...args: any[]) => any>;
21
+ /** Callback fired right before the `Overlay` transitions out */
22
+ onExit: PropTypes.Requireable<(...args: any[]) => any>;
23
+ /** Callback fired after the `Overlay` finishes transitioning out. */
24
+ onExited: PropTypes.Requireable<(...args: any[]) => any>;
25
+ /** Callback fired as the Overlay begins to transition out. */
26
+ onExiting: PropTypes.Requireable<(...args: any[]) => any>;
27
+ /**
28
+ * A callback invoked by the overlay when it wishes to be hidden.
29
+ * Required if `rootClose` is specified.
30
+ */
31
+ onHide: PropTypes.Requireable<(...args: any[]) => any>;
32
+ /** The placement of the `Overlay` in relation to it's target. */
33
+ placement: PropTypes.Requireable<import("@popperjs/core").Placement>;
34
+ /** A set of popper options and props passed directly to `Popper`. */
35
+ popperConfig: PropTypes.Requireable<PropTypes.InferProps<{}>>;
36
+ /** Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay. */
37
+ rootClose: PropTypes.Requireable<boolean>;
38
+ /** Specify event for triggering a “root close” toggle. */
39
+ rootCloseEvent: PropTypes.Requireable<string>;
40
+ /** Set the visibility of the `Overlay`. */
41
+ show: PropTypes.Requireable<boolean>;
42
+ /**
43
+ * The visibility of the `Overlay`. `show` is a controlled prop so should
44
+ * be paired with `onToggle` to avoid breaking user interactions.
45
+ *
46
+ * Manually toggling show does not wait for delay to change the visibility.
47
+ *
48
+ * Controls `onToggle`.
49
+ */
50
+ target: PropTypes.Requireable<NonNullable<((...args: any[]) => any) | PropTypes.ReactComponentLike | null | undefined>>;
51
+ /**
52
+ * Animate the entering and exiting of the Overlay. `true` will use the `<Fade>` transition,
53
+ * or a custom react-transition-group `<Transition>` component can be provided.
54
+ */
55
+ transition: PropTypes.Requireable<NonNullable<boolean | object | null | undefined>>;
56
+ };
57
+ var defaultProps: {
58
+ container: undefined;
59
+ onEnter: undefined;
60
+ onEntered: undefined;
61
+ onEntering: undefined;
62
+ onExit: undefined;
63
+ onExited: undefined;
64
+ onExiting: undefined;
65
+ onHide: undefined;
66
+ placement: string;
67
+ popperConfig: {};
68
+ rootClose: boolean;
69
+ rootCloseEvent: undefined;
70
+ show: boolean;
71
+ target: undefined;
72
+ transition: React.ForwardRefExoticComponent<import("react-bootstrap/Fade").FadeProps & React.RefAttributes<import("react-transition-group/Transition").default<any>>>;
73
+ };
74
+ }
75
+ declare function OverlayTrigger(props: OverlayTriggerProps): React.JSX.Element;
76
+ declare namespace OverlayTrigger {
77
+ var propTypes: {
78
+ /** Specifies the content of the `OverlayTrigger`. */
79
+ children: PropTypes.Validator<NonNullable<NonNullable<PropTypes.ReactElementLike | ((...args: any[]) => any) | null | undefined>>>;
80
+ /** An element or text to overlay next to the target. */
81
+ overlay: PropTypes.Validator<NonNullable<NonNullable<PropTypes.ReactElementLike | ((...args: any[]) => any) | null | undefined>>>;
82
+ /** The initial visibility state of the `Overlay`. */
83
+ defaultShow: PropTypes.Requireable<boolean>;
84
+ /** A millisecond delay amount to show and hide the `Overlay` once triggered. */
85
+ delay: PropTypes.Requireable<PropTypes.InferPropsInner<Pick<{}, never>> & Partial<PropTypes.InferPropsInner<Pick<{}, never>>>>;
86
+ /** The initial flip state of the `Overlay`. */
87
+ flip: PropTypes.Requireable<boolean>;
88
+ onHide: PropTypes.Requireable<(...args: any[]) => any>;
89
+ /**
90
+ * A callback that fires when the user triggers a change in tooltip visibility.
91
+ * `onToggle` is called with the desired next show, and generally should be
92
+ * passed back to the `show` prop. `onToggle` fires after the configured `delay`.
93
+ *
94
+ * Controls `show`.
95
+ */
96
+ onToggle: PropTypes.Requireable<(...args: any[]) => any>;
97
+ /** The placement of the `Overlay` in relation to it's target. */
98
+ placement: PropTypes.Requireable<import("@popperjs/core").Placement>;
99
+ /** A `Popper.js` config object passed to the the underlying popper instance. */
100
+ popperConfig: PropTypes.Requireable<PropTypes.InferProps<{}>>;
101
+ /**
102
+ * The visibility of the `Overlay`. `show` is a controlled prop so should
103
+ * be paired with `onToggle` to avoid breaking user interactions.
104
+ *
105
+ * Manually toggling show does not wait for delay to change the visibility.
106
+ *
107
+ * Controls `onToggle`.
108
+ */
109
+ show: PropTypes.Requireable<boolean>;
110
+ target: PropTypes.Requireable<EventTarget>;
111
+ /** Specify which action or actions trigger `Overlay` visibility. */
112
+ trigger: PropTypes.Requireable<NonNullable<OverlayTriggerType | (OverlayTriggerType | null | undefined)[] | null | undefined>>;
113
+ };
114
+ var defaultProps: {
115
+ defaultShow: boolean;
116
+ delay: undefined;
117
+ flip: undefined;
118
+ onHide: undefined;
119
+ onToggle: undefined;
120
+ placement: undefined;
121
+ popperConfig: {};
122
+ show: undefined;
123
+ target: undefined;
124
+ trigger: string[];
125
+ };
126
+ }
127
+ export { OverlayTrigger };
128
+ export default Overlay;
@@ -3,6 +3,11 @@ import BaseOverlay from 'react-bootstrap/Overlay';
3
3
  import BaseOverlayTrigger from 'react-bootstrap/OverlayTrigger';
4
4
  import Fade from 'react-bootstrap/Fade';
5
5
  import PropTypes from 'prop-types';
6
+
7
+ // Note: The only thing this file adds to the base component is propTypes validation.
8
+ // As more Paragon consumers adopt TypeScript, we could consider removing almost all of this code
9
+ // and just re-export the Overlay and OverlayTrigger components from react-bootstrap unmodified.
10
+
6
11
  var PLACEMENT_VARIANTS = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];
7
12
  var TRIGGER_VARIANTS = ['hover', 'click', 'focus'];
8
13
  function Overlay(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","BaseOverlay","BaseOverlayTrigger","Fade","PropTypes","PLACEMENT_VARIANTS","TRIGGER_VARIANTS","Overlay","props","createElement","OverlayTrigger","children","triggerType","oneOf","propTypes","node","isRequired","container","oneOfType","elementType","func","onEnter","onEntered","onEntering","onExit","onExited","onExiting","onHide","placement","popperConfig","shape","rootClose","bool","rootCloseEvent","show","target","transition","object","element","overlay","defaultShow","delay","number","flip","onToggle","instanceOf","EventTarget","trigger","arrayOf","defaultProps","undefined"],"sources":["../../src/Overlay/index.jsx"],"sourcesContent":["import React from 'react';\nimport BaseOverlay from 'react-bootstrap/Overlay';\nimport BaseOverlayTrigger from 'react-bootstrap/OverlayTrigger';\nimport Fade from 'react-bootstrap/Fade';\nimport PropTypes from 'prop-types';\n\nconst PLACEMENT_VARIANTS = [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n\nconst TRIGGER_VARIANTS = [\n 'hover',\n 'click',\n 'focus',\n];\n\nfunction Overlay(props) {\n return <BaseOverlay {...props} />;\n}\nfunction OverlayTrigger(props) {\n return (\n <BaseOverlayTrigger {...props}>\n {props.children}\n </BaseOverlayTrigger>\n );\n}\n\nconst triggerType = PropTypes.oneOf(TRIGGER_VARIANTS);\n\nOverlay.propTypes = {\n /** Specifies the content of the `Overlay`. */\n children: PropTypes.node.isRequired,\n /**\n * A component instance, DOM node, or function that returns either.\n * The overlay will be positioned in relation to the target.\n */\n container: PropTypes.oneOfType([PropTypes.elementType, PropTypes.func]),\n /** Callback fired before the `Overlay` transitions in. */\n onEnter: PropTypes.func,\n /** Callback fired after the `Overlay` finishes transitioning in. */\n onEntered: PropTypes.func,\n /** Callback fired as the `Overlay` begins to transition in. */\n onEntering: PropTypes.func,\n /** Callback fired right before the `Overlay` transitions out */\n onExit: PropTypes.func,\n /** Callback fired after the `Overlay` finishes transitioning out. */\n onExited: PropTypes.func,\n /** Callback fired as the Overlay begins to transition out. */\n onExiting: PropTypes.func,\n /**\n * A callback invoked by the overlay when it wishes to be hidden.\n * Required if `rootClose` is specified.\n */\n onHide: PropTypes.func,\n /** The placement of the `Overlay` in relation to it's target. */\n placement: PropTypes.oneOf(PLACEMENT_VARIANTS),\n /** A set of popper options and props passed directly to `Popper`. */\n popperConfig: PropTypes.shape({}),\n /** Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay. */\n rootClose: PropTypes.bool,\n /** Specify event for triggering a “root close” toggle. */\n rootCloseEvent: PropTypes.oneOf(['click', 'mousedown']),\n /** Set the visibility of the `Overlay`. */\n show: PropTypes.bool,\n /**\n * The visibility of the `Overlay`. `show` is a controlled prop so should\n * be paired with `onToggle` to avoid breaking user interactions.\n *\n * Manually toggling show does not wait for delay to change the visibility.\n *\n * Controls `onToggle`.\n */\n target: PropTypes.oneOfType([PropTypes.elementType, PropTypes.func]),\n /**\n * Animate the entering and exiting of the Overlay. `true` will use the `<Fade>` transition,\n * or a custom react-transition-group `<Transition>` component can be provided.\n */\n transition: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n};\n\nOverlayTrigger.propTypes = {\n /** Specifies the content of the `OverlayTrigger`. */\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired,\n /** An element or text to overlay next to the target. */\n overlay: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired,\n /** The initial visibility state of the `Overlay`. */\n defaultShow: PropTypes.bool,\n /** A millisecond delay amount to show and hide the `Overlay` once triggered. */\n delay: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({})]),\n /** The initial flip state of the `Overlay`. */\n flip: PropTypes.bool,\n onHide: PropTypes.func,\n /**\n * A callback that fires when the user triggers a change in tooltip visibility.\n * `onToggle` is called with the desired next show, and generally should be\n * passed back to the `show` prop. `onToggle` fires after the configured `delay`.\n *\n * Controls `show`.\n */\n onToggle: PropTypes.func,\n /** The placement of the `Overlay` in relation to it's target. */\n placement: PropTypes.oneOf(PLACEMENT_VARIANTS),\n /** A `Popper.js` config object passed to the the underlying popper instance. */\n popperConfig: PropTypes.shape({}),\n /**\n * The visibility of the `Overlay`. `show` is a controlled prop so should\n * be paired with `onToggle` to avoid breaking user interactions.\n *\n * Manually toggling show does not wait for delay to change the visibility.\n *\n * Controls `onToggle`.\n */\n show: PropTypes.bool,\n target: PropTypes.instanceOf(EventTarget),\n /** Specify which action or actions trigger `Overlay` visibility. */\n trigger: PropTypes.oneOfType([triggerType, PropTypes.arrayOf(triggerType)]),\n};\n\nOverlay.defaultProps = {\n container: undefined,\n onEnter: undefined,\n onEntered: undefined,\n onEntering: undefined,\n onExit: undefined,\n onExited: undefined,\n onExiting: undefined,\n onHide: undefined,\n placement: 'top',\n popperConfig: {},\n rootClose: false,\n rootCloseEvent: undefined,\n show: false,\n target: undefined,\n transition: Fade,\n};\n\nOverlayTrigger.defaultProps = {\n defaultShow: false,\n delay: undefined,\n flip: undefined,\n onHide: undefined,\n onToggle: undefined,\n placement: undefined,\n popperConfig: {},\n show: undefined,\n target: undefined,\n trigger: ['hover', 'focus'],\n};\n\nexport { OverlayTrigger };\nexport default Overlay;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","BaseOverlay","BaseOverlayTrigger","Fade","PropTypes","PLACEMENT_VARIANTS","TRIGGER_VARIANTS","Overlay","props","createElement","OverlayTrigger","children","triggerType","oneOf","propTypes","node","isRequired","container","oneOfType","elementType","func","onEnter","onEntered","onEntering","onExit","onExited","onExiting","onHide","placement","popperConfig","shape","rootClose","bool","rootCloseEvent","show","target","transition","object","element","overlay","defaultShow","delay","number","flip","onToggle","instanceOf","EventTarget","trigger","arrayOf","defaultProps","undefined"],"sources":["../../src/Overlay/index.tsx"],"sourcesContent":["import React from 'react';\nimport BaseOverlay, { type OverlayProps, type Placement } from 'react-bootstrap/Overlay';\nimport BaseOverlayTrigger, { type OverlayTriggerProps, type OverlayTriggerType } from 'react-bootstrap/OverlayTrigger';\nimport Fade from 'react-bootstrap/Fade';\nimport PropTypes from 'prop-types';\n\n// Note: The only thing this file adds to the base component is propTypes validation.\n// As more Paragon consumers adopt TypeScript, we could consider removing almost all of this code\n// and just re-export the Overlay and OverlayTrigger components from react-bootstrap unmodified.\n\nconst PLACEMENT_VARIANTS: Placement[] = [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n\nconst TRIGGER_VARIANTS: OverlayTriggerType[] = [\n 'hover',\n 'click',\n 'focus',\n];\n\nfunction Overlay(props: OverlayProps) {\n return <BaseOverlay {...props} />;\n}\nfunction OverlayTrigger(props: OverlayTriggerProps) {\n return (\n <BaseOverlayTrigger {...props}>\n {props.children}\n </BaseOverlayTrigger>\n );\n}\n\nconst triggerType = PropTypes.oneOf(TRIGGER_VARIANTS);\n\nOverlay.propTypes = {\n /** Specifies the content of the `Overlay`. */\n children: PropTypes.node.isRequired,\n /**\n * A component instance, DOM node, or function that returns either.\n * The overlay will be positioned in relation to the target.\n */\n container: PropTypes.oneOfType([PropTypes.elementType, PropTypes.func]),\n /** Callback fired before the `Overlay` transitions in. */\n onEnter: PropTypes.func,\n /** Callback fired after the `Overlay` finishes transitioning in. */\n onEntered: PropTypes.func,\n /** Callback fired as the `Overlay` begins to transition in. */\n onEntering: PropTypes.func,\n /** Callback fired right before the `Overlay` transitions out */\n onExit: PropTypes.func,\n /** Callback fired after the `Overlay` finishes transitioning out. */\n onExited: PropTypes.func,\n /** Callback fired as the Overlay begins to transition out. */\n onExiting: PropTypes.func,\n /**\n * A callback invoked by the overlay when it wishes to be hidden.\n * Required if `rootClose` is specified.\n */\n onHide: PropTypes.func,\n /** The placement of the `Overlay` in relation to it's target. */\n placement: PropTypes.oneOf(PLACEMENT_VARIANTS),\n /** A set of popper options and props passed directly to `Popper`. */\n popperConfig: PropTypes.shape({}),\n /** Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay. */\n rootClose: PropTypes.bool,\n /** Specify event for triggering a “root close” toggle. */\n rootCloseEvent: PropTypes.oneOf(['click', 'mousedown']),\n /** Set the visibility of the `Overlay`. */\n show: PropTypes.bool,\n /**\n * The visibility of the `Overlay`. `show` is a controlled prop so should\n * be paired with `onToggle` to avoid breaking user interactions.\n *\n * Manually toggling show does not wait for delay to change the visibility.\n *\n * Controls `onToggle`.\n */\n target: PropTypes.oneOfType([PropTypes.elementType, PropTypes.func]),\n /**\n * Animate the entering and exiting of the Overlay. `true` will use the `<Fade>` transition,\n * or a custom react-transition-group `<Transition>` component can be provided.\n */\n transition: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n};\n\nOverlayTrigger.propTypes = {\n /** Specifies the content of the `OverlayTrigger`. */\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired,\n /** An element or text to overlay next to the target. */\n overlay: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired,\n /** The initial visibility state of the `Overlay`. */\n defaultShow: PropTypes.bool,\n /** A millisecond delay amount to show and hide the `Overlay` once triggered. */\n delay: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({})]),\n /** The initial flip state of the `Overlay`. */\n flip: PropTypes.bool,\n onHide: PropTypes.func,\n /**\n * A callback that fires when the user triggers a change in tooltip visibility.\n * `onToggle` is called with the desired next show, and generally should be\n * passed back to the `show` prop. `onToggle` fires after the configured `delay`.\n *\n * Controls `show`.\n */\n onToggle: PropTypes.func,\n /** The placement of the `Overlay` in relation to it's target. */\n placement: PropTypes.oneOf(PLACEMENT_VARIANTS),\n /** A `Popper.js` config object passed to the the underlying popper instance. */\n popperConfig: PropTypes.shape({}),\n /**\n * The visibility of the `Overlay`. `show` is a controlled prop so should\n * be paired with `onToggle` to avoid breaking user interactions.\n *\n * Manually toggling show does not wait for delay to change the visibility.\n *\n * Controls `onToggle`.\n */\n show: PropTypes.bool,\n target: PropTypes.instanceOf(EventTarget),\n /** Specify which action or actions trigger `Overlay` visibility. */\n trigger: PropTypes.oneOfType([triggerType, PropTypes.arrayOf(triggerType)]),\n};\n\nOverlay.defaultProps = {\n container: undefined,\n onEnter: undefined,\n onEntered: undefined,\n onEntering: undefined,\n onExit: undefined,\n onExited: undefined,\n onExiting: undefined,\n onHide: undefined,\n placement: 'top',\n popperConfig: {},\n rootClose: false,\n rootCloseEvent: undefined,\n show: false,\n target: undefined,\n transition: Fade,\n};\n\nOverlayTrigger.defaultProps = {\n defaultShow: false,\n delay: undefined,\n flip: undefined,\n onHide: undefined,\n onToggle: undefined,\n placement: undefined,\n popperConfig: {},\n show: undefined,\n target: undefined,\n trigger: ['hover', 'focus'],\n};\n\nexport { OverlayTrigger };\nexport default Overlay;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import { type TooltipProps as BaseTooltipProps } from 'react-bootstrap/Tooltip';
2
+ import type { ComponentWithAsProp } from '../utils/types/bootstrap';
3
+ interface TooltipProps extends BaseTooltipProps {
4
+ variant?: 'light';
5
+ }
6
+ declare const Tooltip: ComponentWithAsProp<'div', TooltipProps>;
7
+ export default Tooltip;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","PropTypes","classNames","BaseTooltip","PLACEMENT_VARIANTS","Tooltip","forwardRef","_ref","ref","children","variant","props","_objectWithoutProperties","_excluded","createElement","_extends","className","propTypes","_objectSpread","id","string","isRequired","placement","oneOf","arrowProps","shape","oneOfType","func","current","element","style","show","bool","popper","bsPrefix","node","defaultProps","undefined"],"sources":["../../src/Tooltip/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport BaseTooltip from 'react-bootstrap/Tooltip';\n\nconst PLACEMENT_VARIANTS = [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n\nconst Tooltip = React.forwardRef(({\n children,\n variant,\n ...props\n}, ref) => (\n <BaseTooltip\n {...props}\n className={classNames({ 'tooltip-light': variant === 'light' }, props.className)}\n ref={ref}\n >\n {children}\n </BaseTooltip>\n));\n\nTooltip.propTypes = {\n ...BaseTooltip.propTypes,\n /** An html id attribute, necessary for accessibility. */\n id: PropTypes.string.isRequired,\n /**\n * Sets the direction the `Tooltip` is positioned towards.\n *\n * This is generally provided by the `Overlay` component positioning the tooltip.\n */\n placement: PropTypes.oneOf(PLACEMENT_VARIANTS),\n /**\n * An `Overlay` injected set of props for positioning the `Tooltip` arrow.\n *\n * This is generally provided by the `Overlay` component positioning the tooltip.\n */\n arrowProps: PropTypes.shape({\n ref: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.element }),\n ]),\n style: PropTypes.shape({}),\n }),\n /** Whether the `Overlay` is shown. */\n show: PropTypes.bool,\n /** A `Popper.js` config object passed to the the underlying popper instance. */\n popper: PropTypes.shape({}),\n /** Overrides underlying component base CSS class name */\n bsPrefix: PropTypes.string,\n /** Specifies the content of the `Tooltip` */\n children: PropTypes.node,\n /** Specifies class name to append to the base element */\n className: PropTypes.string,\n /** The visual style of the `Tooltip` */\n variant: PropTypes.string,\n};\n\nTooltip.defaultProps = {\n ...Tooltip.defaultProps,\n id: undefined,\n placement: 'right',\n arrowProps: undefined,\n show: undefined,\n popper: undefined,\n children: undefined,\n className: undefined,\n variant: undefined,\n bsPrefix: 'tooltip',\n};\n\nexport default Tooltip;\n"],"mappings":";;;;;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,WAAW,MAAM,yBAAyB;AAEjD,IAAMC,kBAAkB,GAAG,CACzB,YAAY,EACZ,MAAM,EACN,UAAU,EACV,WAAW,EACX,KAAK,EACL,SAAS,EACT,aAAa,EACb,OAAO,EACP,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,UAAU,EACV,MAAM,EACN,YAAY,CACb;AAED,IAAMC,OAAO,gBAAGL,KAAK,CAACM,UAAU,CAAC,UAAAC,IAAA,EAI9BC,GAAG;EAAA,IAHJC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,OAAO,GAAAH,IAAA,CAAPG,OAAO;IACJC,KAAK,GAAAC,wBAAA,CAAAL,IAAA,EAAAM,SAAA;EAAA,oBAERb,KAAA,CAAAc,aAAA,CAACX,WAAW,EAAAY,QAAA,KACNJ,KAAK;IACTK,SAAS,EAAEd,UAAU,CAAC;MAAE,eAAe,EAAEQ,OAAO,KAAK;IAAQ,CAAC,EAAEC,KAAK,CAACK,SAAS,CAAE;IACjFR,GAAG,EAAEA;EAAI,IAERC,QACU,CAAC;AAAA,CACf,CAAC;AAEFJ,OAAO,CAACY,SAAS,GAAAC,aAAA,CAAAA,aAAA,KACZf,WAAW,CAACc,SAAS;EACxB;EACAE,EAAE,EAAElB,SAAS,CAACmB,MAAM,CAACC,UAAU;EAC/B;AACF;AACA;AACA;AACA;EACEC,SAAS,EAAErB,SAAS,CAACsB,KAAK,CAACnB,kBAAkB,CAAC;EAC9C;AACF;AACA;AACA;AACA;EACEoB,UAAU,EAAEvB,SAAS,CAACwB,KAAK,CAAC;IAC1BjB,GAAG,EAAEP,SAAS,CAACyB,SAAS,CAAC,CACvBzB,SAAS,CAAC0B,IAAI,EACd1B,SAAS,CAACwB,KAAK,CAAC;MAAEG,OAAO,EAAE3B,SAAS,CAAC4B;IAAQ,CAAC,CAAC,CAChD,CAAC;IACFC,KAAK,EAAE7B,SAAS,CAACwB,KAAK,CAAC,CAAC,CAAC;EAC3B,CAAC,CAAC;EACF;EACAM,IAAI,EAAE9B,SAAS,CAAC+B,IAAI;EACpB;EACAC,MAAM,EAAEhC,SAAS,CAACwB,KAAK,CAAC,CAAC,CAAC,CAAC;EAC3B;EACAS,QAAQ,EAAEjC,SAAS,CAACmB,MAAM;EAC1B;EACAX,QAAQ,EAAER,SAAS,CAACkC,IAAI;EACxB;EACAnB,SAAS,EAAEf,SAAS,CAACmB,MAAM;EAC3B;EACAV,OAAO,EAAET,SAAS,CAACmB;AAAM,EAC1B;AAEDf,OAAO,CAAC+B,YAAY,GAAAlB,aAAA,CAAAA,aAAA,KACfb,OAAO,CAAC+B,YAAY;EACvBjB,EAAE,EAAEkB,SAAS;EACbf,SAAS,EAAE,OAAO;EAClBE,UAAU,EAAEa,SAAS;EACrBN,IAAI,EAAEM,SAAS;EACfJ,MAAM,EAAEI,SAAS;EACjB5B,QAAQ,EAAE4B,SAAS;EACnBrB,SAAS,EAAEqB,SAAS;EACpB3B,OAAO,EAAE2B,SAAS;EAClBH,QAAQ,EAAE;AAAS,EACpB;AAED,eAAe7B,OAAO","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","PropTypes","classNames","BaseTooltip","PLACEMENT_VARIANTS","Tooltip","forwardRef","_ref","ref","children","variant","props","_objectWithoutProperties","_excluded","createElement","_extends","className","propTypes","_objectSpread","id","string","isRequired","placement","oneOf","arrowProps","shape","oneOfType","func","current","element","style","show","bool","popper","bsPrefix","node","defaultProps","undefined"],"sources":["../../src/Tooltip/index.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport BaseTooltip, { type TooltipProps as BaseTooltipProps } from 'react-bootstrap/Tooltip';\nimport { type Placement } from 'react-bootstrap/Overlay';\nimport type { ComponentWithAsProp } from '../utils/types/bootstrap';\n\ninterface TooltipProps extends BaseTooltipProps {\n variant?: 'light';\n}\n\nconst PLACEMENT_VARIANTS: Placement[] = [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n\nconst Tooltip: ComponentWithAsProp<'div', TooltipProps> = React.forwardRef(({\n children,\n variant,\n ...props\n}, ref) => (\n <BaseTooltip\n {...props}\n className={classNames({ 'tooltip-light': variant === 'light' }, props.className)}\n ref={ref}\n >\n {children}\n </BaseTooltip>\n));\n\nTooltip.propTypes = {\n ...BaseTooltip.propTypes,\n /** An html id attribute, necessary for accessibility. */\n id: PropTypes.string.isRequired,\n /**\n * Sets the direction the `Tooltip` is positioned towards.\n *\n * This is generally provided by the `Overlay` component positioning the tooltip.\n */\n placement: PropTypes.oneOf(PLACEMENT_VARIANTS),\n /**\n * An `Overlay` injected set of props for positioning the `Tooltip` arrow.\n *\n * This is generally provided by the `Overlay` component positioning the tooltip.\n */\n arrowProps: PropTypes.shape({\n ref: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.element }),\n ]),\n style: PropTypes.shape({}),\n }),\n /** Whether the `Overlay` is shown. */\n show: PropTypes.bool,\n /** A `Popper.js` config object passed to the the underlying popper instance. */\n popper: PropTypes.shape({}),\n /** Overrides underlying component base CSS class name */\n bsPrefix: PropTypes.string,\n /** Specifies the content of the `Tooltip` */\n children: PropTypes.node,\n /** Specifies class name to append to the base element */\n className: PropTypes.string,\n /** The visual style of the `Tooltip` */\n variant: PropTypes.string,\n};\n\nTooltip.defaultProps = {\n ...Tooltip.defaultProps,\n id: undefined,\n placement: 'right',\n arrowProps: undefined,\n show: undefined,\n popper: undefined,\n children: undefined,\n className: undefined,\n variant: undefined,\n bsPrefix: 'tooltip',\n};\n\nexport default Tooltip;\n"],"mappings":";;;;;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,WAAW,MAAiD,yBAAyB;AAQ5F,IAAMC,kBAA+B,GAAG,CACtC,YAAY,EACZ,MAAM,EACN,UAAU,EACV,WAAW,EACX,KAAK,EACL,SAAS,EACT,aAAa,EACb,OAAO,EACP,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,UAAU,EACV,MAAM,EACN,YAAY,CACb;AAED,IAAMC,OAAiD,gBAAGL,KAAK,CAACM,UAAU,CAAC,UAAAC,IAAA,EAIxEC,GAAG;EAAA,IAHJC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,OAAO,GAAAH,IAAA,CAAPG,OAAO;IACJC,KAAK,GAAAC,wBAAA,CAAAL,IAAA,EAAAM,SAAA;EAAA,oBAERb,KAAA,CAAAc,aAAA,CAACX,WAAW,EAAAY,QAAA,KACNJ,KAAK;IACTK,SAAS,EAAEd,UAAU,CAAC;MAAE,eAAe,EAAEQ,OAAO,KAAK;IAAQ,CAAC,EAAEC,KAAK,CAACK,SAAS,CAAE;IACjFR,GAAG,EAAEA;EAAI,IAERC,QACU,CAAC;AAAA,CACf,CAAC;AAEFJ,OAAO,CAACY,SAAS,GAAAC,aAAA,CAAAA,aAAA,KACZf,WAAW,CAACc,SAAS;EACxB;EACAE,EAAE,EAAElB,SAAS,CAACmB,MAAM,CAACC,UAAU;EAC/B;AACF;AACA;AACA;AACA;EACEC,SAAS,EAAErB,SAAS,CAACsB,KAAK,CAACnB,kBAAkB,CAAC;EAC9C;AACF;AACA;AACA;AACA;EACEoB,UAAU,EAAEvB,SAAS,CAACwB,KAAK,CAAC;IAC1BjB,GAAG,EAAEP,SAAS,CAACyB,SAAS,CAAC,CACvBzB,SAAS,CAAC0B,IAAI,EACd1B,SAAS,CAACwB,KAAK,CAAC;MAAEG,OAAO,EAAE3B,SAAS,CAAC4B;IAAQ,CAAC,CAAC,CAChD,CAAC;IACFC,KAAK,EAAE7B,SAAS,CAACwB,KAAK,CAAC,CAAC,CAAC;EAC3B,CAAC,CAAC;EACF;EACAM,IAAI,EAAE9B,SAAS,CAAC+B,IAAI;EACpB;EACAC,MAAM,EAAEhC,SAAS,CAACwB,KAAK,CAAC,CAAC,CAAC,CAAC;EAC3B;EACAS,QAAQ,EAAEjC,SAAS,CAACmB,MAAM;EAC1B;EACAX,QAAQ,EAAER,SAAS,CAACkC,IAAI;EACxB;EACAnB,SAAS,EAAEf,SAAS,CAACmB,MAAM;EAC3B;EACAV,OAAO,EAAET,SAAS,CAACmB;AAAM,EAC1B;AAEDf,OAAO,CAAC+B,YAAY,GAAAlB,aAAA,CAAAA,aAAA,KACfb,OAAO,CAAC+B,YAAY;EACvBjB,EAAE,EAAEkB,SAAS;EACbf,SAAS,EAAE,OAAO;EAClBE,UAAU,EAAEa,SAAS;EACrBN,IAAI,EAAEM,SAAS;EACfJ,MAAM,EAAEI,SAAS;EACjB5B,QAAQ,EAAE4B,SAAS;EACnBrB,SAAS,EAAEqB,SAAS;EACpB3B,OAAO,EAAE2B,SAAS;EAClBH,QAAQ,EAAE;AAAS,EACpB;AAED,eAAe7B,OAAO","ignoreList":[]}
package/dist/index.d.ts CHANGED
@@ -8,8 +8,12 @@ export { default as Bubble } from './Bubble';
8
8
  export { default as Button, ButtonGroup, ButtonToolbar } from './Button';
9
9
  export { default as Chip, CHIP_PGN_CLASS } from './Chip';
10
10
  export { default as ChipCarousel } from './ChipCarousel';
11
+ export { default as Container, ContainerSize } from './Container';
11
12
  export { default as Hyperlink, HYPER_LINK_EXTERNAL_LINK_ALT_TEXT, HYPER_LINK_EXTERNAL_LINK_TITLE } from './Hyperlink';
12
13
  export { default as Icon } from './Icon';
14
+ export { default as IconButton, IconButtonWithTooltip } from './IconButton';
15
+ export { default as Overlay, OverlayTrigger } from './Overlay';
16
+ export { default as Tooltip } from './Tooltip';
13
17
 
14
18
  // // // // // // // // // // // // // // // // // // // // // // // // // // //
15
19
  // Things that don't have types
@@ -38,7 +42,6 @@ export const
38
42
  export const CheckBox: any; // from './CheckBox';
39
43
  export const CheckBoxGroup: any; // from './CheckBoxGroup';
40
44
  export const CloseButton: any; // from './CloseButton';
41
- export const Container: any; // from './Container';
42
45
  export const Layout: any, Col: any, Row: any; // from './Layout';
43
46
  export const Collapse: any; // from './Collapse';
44
47
  export const Collapsible: any; // from './Collapsible';
@@ -73,7 +76,6 @@ export const
73
76
  FormAutosuggestOption: any,
74
77
  InputGroup: any;
75
78
  // from './Form';
76
- export const IconButton: any, IconButtonWithTooltip: any; // from './IconButton';
77
79
  export const IconButtonToggle: any; // from './IconButtonToggle';
78
80
  export const Input: any; // from './Input';
79
81
  export const InputSelect: any; // from './InputSelect';
@@ -106,7 +108,6 @@ export const
106
108
  NavLink: any;
107
109
  // from './Nav';
108
110
  export const Navbar: any, NavbarBrand: any, NAVBAR_LABEL: string; // from './Navbar';
109
- export const Overlay: any, OverlayTrigger: any; // from './Overlay';
110
111
  export const PageBanner: any, PAGE_BANNER_DISMISS_ALT_TEXT: string; // from './PageBanner';
111
112
  export const
112
113
  Pagination: any,
@@ -145,7 +146,6 @@ export const
145
146
  // from './Tabs';
146
147
  export const TextArea: any; // from './TextArea';
147
148
  export const Toast: any, TOAST_CLOSE_LABEL_TEXT: string, TOAST_DELAY: number; // from './Toast';
148
- export const Tooltip: any; // from './Tooltip';
149
149
  export const ValidationFormGroup: any; // from './ValidationFormGroup';
150
150
  export const TransitionReplace: any; // from './TransitionReplace';
151
151
  export const ValidationMessage: any; // from './ValidationMessage';
package/dist/index.js CHANGED
@@ -10,6 +10,9 @@ export { default as Chip, CHIP_PGN_CLASS } from './Chip';
10
10
  export { default as ChipCarousel } from './ChipCarousel';
11
11
  export { default as Hyperlink, HYPER_LINK_EXTERNAL_LINK_ALT_TEXT, HYPER_LINK_EXTERNAL_LINK_TITLE } from './Hyperlink';
12
12
  export { default as Icon } from './Icon';
13
+ export { default as IconButton, IconButtonWithTooltip } from './IconButton';
14
+ export { default as Overlay, OverlayTrigger } from './Overlay';
15
+ export { default as Tooltip } from './Tooltip';
13
16
 
14
17
  // // // // // // // // // // // // // // // // // // // // // // // // // // //
15
18
  // Things that don't have types
@@ -73,7 +76,6 @@ export {
73
76
  FormAutosuggestOption,
74
77
  InputGroup,
75
78
  } from './Form';
76
- export { default as IconButton, IconButtonWithTooltip } from './IconButton';
77
79
  export { default as IconButtonToggle } from './IconButtonToggle';
78
80
  export { default as Input } from './Input';
79
81
  export { default as InputSelect } from './InputSelect';
@@ -106,7 +108,6 @@ export {
106
108
  NavLink,
107
109
  } from './Nav';
108
110
  export { default as Navbar, NavbarBrand, NAVBAR_LABEL } from './Navbar';
109
- export { default as Overlay, OverlayTrigger } from './Overlay';
110
111
  export { default as PageBanner, PAGE_BANNER_DISMISS_ALT_TEXT } from './PageBanner';
111
112
  export {
112
113
  default as Pagination,
@@ -145,7 +146,6 @@ export {
145
146
  } from './Tabs';
146
147
  export { default as TextArea } from './TextArea';
147
148
  export { default as Toast, TOAST_CLOSE_LABEL_TEXT, TOAST_DELAY } from './Toast';
148
- export { default as Tooltip } from './Tooltip';
149
149
  export { default as ValidationFormGroup } from './ValidationFormGroup';
150
150
  export { default as TransitionReplace } from './TransitionReplace';
151
151
  export { default as ValidationMessage } from './ValidationMessage';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openedx/paragon",
3
- "version": "22.6.1",
3
+ "version": "22.8.0",
4
4
  "description": "Accessible, responsive UI component library based on Bootstrap.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -7,7 +7,7 @@ import { Close } from '../../icons';
7
7
  import { STYLE_VARIANTS } from './constants';
8
8
  import Chip from '.';
9
9
 
10
- function TestChip(props) {
10
+ function TestChip(props: Omit<React.ComponentProps<typeof Chip>, 'children'>) {
11
11
  return (
12
12
  <Chip {...props}>
13
13
  Test
@@ -42,15 +42,13 @@ describe('<Chip />', () => {
42
42
  iconBeforeAlt="close icon"
43
43
  iconAfter={Close}
44
44
  iconAfterAlt="close icon"
45
- >
46
- Chip
47
- </TestChip>
45
+ />
48
46
  )).toJSON();
49
47
  expect(tree).toMatchSnapshot();
50
48
  });
51
49
  it('renders div with "button" role when onClick is provided', () => {
52
50
  const tree = renderer.create((
53
- <TestChip onClick={jest.fn}>Chip</TestChip>
51
+ <TestChip onClick={jest.fn} />
54
52
  )).toJSON();
55
53
  expect(tree).toMatchSnapshot();
56
54
  });
@@ -104,7 +102,7 @@ describe('<Chip />', () => {
104
102
  />,
105
103
  );
106
104
  const iconAfter = screen.getByLabelText('icon-after');
107
- await userEvent.click(iconAfter, '{enter}', { skipClick: true });
105
+ await userEvent.click(iconAfter);
108
106
  expect(func).toHaveBeenCalledTimes(1);
109
107
  });
110
108
  it('onIconBeforeClick is triggered', async () => {
@@ -130,7 +128,7 @@ describe('<Chip />', () => {
130
128
  />,
131
129
  );
132
130
  const iconBefore = screen.getByLabelText('icon-before');
133
- await userEvent.click(iconBefore, '{enter}', { skipClick: true });
131
+ await userEvent.click(iconBefore);
134
132
  expect(func).toHaveBeenCalledTimes(1);
135
133
  });
136
134
  it('checks the absence of the `selected` class in the chip', async () => {
@@ -1,19 +1,19 @@
1
1
  import React, { KeyboardEventHandler, MouseEventHandler } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import Icon from '../Icon';
4
- // @ts-ignore
5
4
  import IconButton from '../IconButton';
6
- // @ts-ignore
7
5
  import { STYLE_VARIANTS } from './constants';
8
6
 
9
- export interface ChipIconProps {
7
+ export type ChipIconProps = {
10
8
  className: string,
11
9
  src: React.ComponentType,
12
- onClick?: KeyboardEventHandler & MouseEventHandler,
13
- alt?: string,
14
- variant: string,
10
+ variant: typeof STYLE_VARIANTS[keyof typeof STYLE_VARIANTS],
15
11
  disabled?: boolean,
16
- }
12
+ } & (
13
+ // Either _both_ onClick and alt are provided, or neither is:
14
+ | { onClick: KeyboardEventHandler<HTMLButtonElement> & MouseEventHandler<HTMLButtonElement>, alt: string }
15
+ | { onClick?: undefined, alt?: undefined }
16
+ );
17
17
 
18
18
  function ChipIcon({
19
19
  className, src, onClick, alt, variant, disabled,
@@ -2,4 +2,4 @@
2
2
  export const STYLE_VARIANTS = {
3
3
  DARK: 'dark',
4
4
  LIGHT: 'light',
5
- };
5
+ } as const;
@@ -3,9 +3,7 @@ import PropTypes, { type Requireable } from 'prop-types';
3
3
  import classNames from 'classnames';
4
4
  // @ts-ignore
5
5
  import { requiredWhen } from '../utils/propTypes';
6
- // @ts-ignore
7
6
  import { STYLE_VARIANTS } from './constants';
8
- // @ts-ignore
9
7
  import ChipIcon from './ChipIcon';
10
8
 
11
9
  export const CHIP_PGN_CLASS = 'pgn__chip';
@@ -14,7 +12,7 @@ export interface IChip {
14
12
  children: React.ReactNode,
15
13
  onClick?: KeyboardEventHandler & MouseEventHandler,
16
14
  className?: string,
17
- variant?: string,
15
+ variant?: typeof STYLE_VARIANTS[keyof typeof STYLE_VARIANTS],
18
16
  iconBefore?: React.ComponentType,
19
17
  iconBeforeAlt?: string,
20
18
  iconAfter?: React.ComponentType,
@@ -4,9 +4,7 @@ import { useIntl } from 'react-intl';
4
4
  import classNames from 'classnames';
5
5
  // @ts-ignore
6
6
  import { OverflowScroll, OverflowScrollContext } from '../OverflowScroll';
7
- // @ts-ignore
8
7
  import IconButton from '../IconButton';
9
- // @ts-ignore
10
8
  import Icon from '../Icon';
11
9
  // @ts-ignore
12
10
  import { ArrowForward, ArrowBack } from '../../icons';
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
- import Container from '.';
3
+ import Container, { type ContainerSize } from '.';
4
4
 
5
- const getClassNames = (container) => container.className.split(' ');
5
+ const getClassNames = (container: HTMLElement) => container.className.split(' ');
6
6
 
7
7
  describe('<Container />', () => {
8
8
  it('displays children', () => {
@@ -12,32 +12,38 @@ describe('<Container />', () => {
12
12
 
13
13
  it('adds the .container-fluid class', () => {
14
14
  const { container } = render(<Container>Content</Container>);
15
- const containerElement = container.firstChild;
15
+ const containerElement = container.firstChild as HTMLElement;
16
16
  expect(getClassNames(containerElement)).toContain('container-fluid');
17
17
  });
18
18
 
19
19
  it('adds the .container class', () => {
20
20
  const { container } = render(<Container fluid={false}>Content</Container>);
21
- const containerElement = container.firstChild;
22
- expect(getClassNames(containerElement)).toContain('container');
21
+ const containerElement = container.firstChild as HTMLElement;
22
+ expect(getClassNames(containerElement!)).toContain('container');
23
23
  expect(getClassNames(containerElement)).not.toContain('container-fluid');
24
24
  });
25
25
 
26
- ['xs', 'sm', 'md', 'lg', 'xl'].forEach((size) => {
26
+ ['xs', 'sm', 'md', 'lg', 'xl'].forEach((size: ContainerSize) => {
27
27
  it(`adds the .container-mw-${size} class`, () => {
28
28
  const { container } = render(<Container size={size}>Content</Container>);
29
- const containerElement = container.firstChild;
29
+ const containerElement = container.firstChild as HTMLElement;
30
30
  expect(getClassNames(containerElement)).toContain(`container-mw-${size}`);
31
31
  });
32
32
  });
33
33
 
34
+ it('does not add a size class when size is not specified', () => {
35
+ const { container } = render(<Container>Content</Container>);
36
+ const containerElement = container.firstChild as HTMLElement;
37
+ expect(getClassNames(containerElement)).toEqual(['container-fluid']);
38
+ });
39
+
34
40
  it('preserves custom class names', () => {
35
41
  const { container } = render(
36
42
  <Container className="custom-class" size="md">
37
43
  Content
38
44
  </Container>,
39
45
  );
40
- const containerElement = container.firstChild;
46
+ const containerElement = container.firstChild as HTMLElement;
41
47
  expect(getClassNames(containerElement)).toContain('container-mw-md');
42
48
  expect(getClassNames(containerElement)).toContain('container-fluid');
43
49
  expect(getClassNames(containerElement)).toContain('custom-class');
@@ -19,6 +19,10 @@ The base container to contain, pad, and center content in the viewport. This com
19
19
  ```jsx live
20
20
  <div style={{ overflowX: 'auto' }}>
21
21
  <div style={{ width: '1500px', border: 'solid 3px red' }}>
22
+ <Container className="bg-danger-300 my-4">
23
+ The content in this container doesn't have a max width
24
+ </Container>
25
+
22
26
  <Container size="xl" className="bg-danger-300 my-4">
23
27
  The content in this container won't exceed the extra large width.
24
28
  </Container>
@@ -0,0 +1,64 @@
1
+ /* eslint-disable react/require-default-props */
2
+ import React from 'react';
3
+ import classNames from 'classnames';
4
+ import PropTypes from 'prop-types';
5
+ import RBContainer, { type ContainerProps as RBContainerProps } from 'react-bootstrap/Container';
6
+
7
+ import type { ComponentWithAsProp } from '../utils/types/bootstrap';
8
+
9
+ enum ContainerSizeClass {
10
+ xs = 'container-mw-xs',
11
+ sm = 'container-mw-sm',
12
+ md = 'container-mw-md',
13
+ lg = 'container-mw-lg',
14
+ xl = 'container-mw-xl',
15
+ }
16
+
17
+ export type ContainerSize = keyof typeof ContainerSizeClass;
18
+
19
+ interface ContainerProps extends RBContainerProps {
20
+ size?: ContainerSize;
21
+ }
22
+
23
+ type ContainerType = ComponentWithAsProp<'div', ContainerProps>;
24
+
25
+ const Container: ContainerType = React.forwardRef<Element, ContainerProps>(({
26
+ size,
27
+ children,
28
+ ...props
29
+ }, ref) => (
30
+ <RBContainer
31
+ {...props}
32
+ ref={ref}
33
+ className={classNames(
34
+ props.className,
35
+ size && ContainerSizeClass[size],
36
+ )}
37
+ >
38
+ {children}
39
+ </RBContainer>
40
+ ));
41
+
42
+ Container.propTypes = {
43
+ ...RBContainer.propTypes,
44
+ /** Override the base element */
45
+ as: PropTypes.elementType,
46
+ /** Specifies the contents of the container */
47
+ children: PropTypes.node,
48
+ /** Fill all available space at any breakpoint */
49
+ fluid: PropTypes.bool,
50
+ /** Set the maximum width for the container. Omiting the prop will remove the max-width */
51
+ size: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),
52
+ /** Overrides underlying component base CSS class name */
53
+ bsPrefix: PropTypes.string,
54
+ };
55
+
56
+ Container.defaultProps = {
57
+ as: 'div',
58
+ children: undefined,
59
+ fluid: true,
60
+ size: undefined,
61
+ bsPrefix: 'container',
62
+ };
63
+
64
+ export default Container;
@@ -11,21 +11,27 @@ describe('<IconButton />', () => {
11
11
  const alt = 'alternative';
12
12
  const iconAs = Icon;
13
13
  const src = InfoOutline;
14
- const variant = 'secondary';
14
+ const variant = 'secondary' as const;
15
15
  const props = {
16
16
  alt,
17
17
  src,
18
18
  iconAs,
19
19
  variant,
20
20
  };
21
- const iconParams = {
21
+ const deprecatedFontAwesomeExample = {
22
22
  prefix: 'pgn',
23
23
  iconName: 'InfoOutlineIcon',
24
24
  icon: [InfoOutline],
25
25
  };
26
26
  it('renders with required props', () => {
27
27
  const tree = renderer.create((
28
- <IconButton icon={iconParams} alt={alt} />
28
+ <IconButton iconAs={Icon} src={InfoOutline} alt={alt} />
29
+ )).toJSON();
30
+ expect(tree).toMatchSnapshot();
31
+ });
32
+ it('renders with deprecated props', () => {
33
+ const tree = renderer.create((
34
+ <IconButton icon={deprecatedFontAwesomeExample} alt={alt} />
29
35
  )).toJSON();
30
36
  expect(tree).toMatchSnapshot();
31
37
  });
@@ -94,4 +100,19 @@ describe('<IconButton />', () => {
94
100
  expect(spy2).toHaveBeenCalledTimes(1);
95
101
  });
96
102
  });
103
+
104
+ describe('<IconButton.IconButtonWithTooltip>', () => {
105
+ it('renders with required props', () => {
106
+ const tree = renderer.create((
107
+ <IconButton.IconButtonWithTooltip
108
+ iconAs={Icon}
109
+ src={InfoOutline}
110
+ alt={alt}
111
+ tooltipContent="Hello"
112
+ tooltipPlacement="left-end"
113
+ />
114
+ )).toJSON();
115
+ expect(tree).toMatchSnapshot();
116
+ });
117
+ });
97
118
  });