@carbon/react 1.7.0 → 1.9.0-rc.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 (87) hide show
  1. package/es/components/ComposedModal/ComposedModal.js +1 -1
  2. package/es/components/ComposedModal/index.js +4 -4
  3. package/es/components/ComposedModal/next/ComposedModal.js +1 -1
  4. package/es/components/DataTable/DataTable.js +1 -1
  5. package/es/components/DataTable/Table.js +10 -2
  6. package/es/components/DataTable/TableContainer.js +20 -5
  7. package/es/components/DataTable/TableContext.js +15 -0
  8. package/es/components/DataTable/TableSelectRow.js +1 -1
  9. package/es/components/FileUploader/FileUploader.js +8 -1
  10. package/es/components/FileUploader/FileUploaderButton.js +3 -1
  11. package/es/components/FileUploader/FileUploaderDropContainer.js +3 -1
  12. package/es/components/FileUploader/FileUploaderItem.js +3 -1
  13. package/es/components/InlineLoading/InlineLoading.js +9 -5
  14. package/es/components/Loading/Loading.js +7 -18
  15. package/es/components/Menu/Menu.js +1 -1
  16. package/es/components/Modal/Modal.js +204 -273
  17. package/es/components/Modal/index.js +2 -8
  18. package/es/components/ModalWrapper/ModalWrapper.js +1 -1
  19. package/es/components/MultiSelect/FilterableMultiSelect.js +345 -386
  20. package/es/components/MultiSelect/index.js +4 -8
  21. package/es/components/Notification/Notification.js +322 -189
  22. package/es/components/NumberInput/NumberInput.Skeleton.js +3 -4
  23. package/es/components/NumberInput/NumberInput.js +308 -359
  24. package/es/components/RadioButton/RadioButton.js +58 -99
  25. package/es/components/RadioButton/index.js +2 -8
  26. package/es/components/RadioButtonGroup/RadioButtonGroup.js +72 -121
  27. package/es/components/RadioButtonGroup/index.js +2 -8
  28. package/es/components/Slider/Slider.js +2 -1
  29. package/es/components/Switch/Switch.js +0 -1
  30. package/es/components/TreeView/TreeView.js +19 -11
  31. package/es/components/UIShell/HeaderMenu.js +1 -1
  32. package/es/components/UIShell/HeaderMenuButton.js +4 -0
  33. package/es/components/UIShell/SideNavLink.js +6 -9
  34. package/es/index.js +10 -9
  35. package/es/internal/createClassWrapper.js +2 -5
  36. package/lib/components/ComposedModal/index.js +7 -7
  37. package/lib/components/ComposedModal/next/ComposedModal.js +1 -1
  38. package/lib/components/DataTable/DataTable.js +5 -5
  39. package/lib/components/DataTable/Table.js +9 -1
  40. package/lib/components/DataTable/TableContainer.js +19 -4
  41. package/lib/components/DataTable/TableContext.js +19 -0
  42. package/lib/components/DataTable/TableSelectRow.js +2 -2
  43. package/lib/components/FileUploader/FileUploader.js +8 -1
  44. package/lib/components/FileUploader/FileUploaderButton.js +3 -1
  45. package/lib/components/FileUploader/FileUploaderDropContainer.js +3 -1
  46. package/lib/components/FileUploader/FileUploaderItem.js +3 -1
  47. package/lib/components/InlineLoading/InlineLoading.js +9 -5
  48. package/lib/components/Loading/Loading.js +6 -17
  49. package/lib/components/Menu/Menu.js +1 -1
  50. package/lib/components/Modal/Modal.js +201 -270
  51. package/lib/components/Modal/index.js +2 -25
  52. package/lib/components/ModalWrapper/ModalWrapper.js +2 -2
  53. package/lib/components/MultiSelect/FilterableMultiSelect.js +341 -382
  54. package/lib/components/MultiSelect/index.js +5 -28
  55. package/lib/components/Notification/Notification.js +321 -188
  56. package/lib/components/NumberInput/NumberInput.Skeleton.js +3 -4
  57. package/lib/components/NumberInput/NumberInput.js +305 -376
  58. package/lib/components/RadioButton/RadioButton.js +57 -99
  59. package/lib/components/RadioButton/index.js +2 -25
  60. package/lib/components/RadioButtonGroup/RadioButtonGroup.js +68 -117
  61. package/lib/components/RadioButtonGroup/index.js +2 -25
  62. package/lib/components/Slider/Slider.js +2 -1
  63. package/lib/components/Switch/Switch.js +0 -1
  64. package/lib/components/TreeView/TreeView.js +18 -10
  65. package/lib/components/UIShell/HeaderMenu.js +1 -0
  66. package/lib/components/UIShell/HeaderMenuButton.js +4 -0
  67. package/lib/components/UIShell/SideNavLink.js +6 -9
  68. package/lib/index.js +95 -95
  69. package/lib/internal/createClassWrapper.js +2 -5
  70. package/package.json +7 -7
  71. package/scss/utilities/_hide-at-breakpoint.scss +9 -0
  72. package/es/components/Modal/next/Modal.js +0 -274
  73. package/es/components/MultiSelect/next/FilterableMultiSelect.js +0 -544
  74. package/es/components/Notification/index.js +0 -42
  75. package/es/components/Notification/next/Notification.js +0 -663
  76. package/es/components/RadioButton/next/RadioButton.js +0 -130
  77. package/es/components/RadioButtonGroup/next/RadioButtonGroup.js +0 -141
  78. package/es/internal/FeatureFlags.js +0 -52
  79. package/es/prop-types/requiredIfValueExists.js +0 -32
  80. package/lib/components/Modal/next/Modal.js +0 -284
  81. package/lib/components/MultiSelect/next/FilterableMultiSelect.js +0 -556
  82. package/lib/components/Notification/index.js +0 -51
  83. package/lib/components/Notification/next/Notification.js +0 -677
  84. package/lib/components/RadioButton/next/RadioButton.js +0 -140
  85. package/lib/components/RadioButtonGroup/next/RadioButtonGroup.js +0 -151
  86. package/lib/internal/FeatureFlags.js +0 -56
  87. package/lib/prop-types/requiredIfValueExists.js +0 -36
@@ -1,274 +0,0 @@
1
- /**
2
- * Copyright IBM Corp. 2016, 2022
3
- *
4
- * This source code is licensed under the Apache-2.0 license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- import { objectWithoutProperties as _objectWithoutProperties, defineProperty as _defineProperty, extends as _extends } from '../../../_virtual/_rollupPluginBabelHelpers.js';
9
- import PropTypes from 'prop-types';
10
- import React__default, { useRef, useEffect } from 'react';
11
- import cx from 'classnames';
12
- import { Close } from '@carbon/icons-react';
13
- import toggleClass from '../../../tools/toggleClass.js';
14
- import Button from '../../Button/Button.js';
15
- import ButtonSet from '../../ButtonSet/ButtonSet.js';
16
- import requiredIfGivenPropIsTruthy from '../../../prop-types/requiredIfGivenPropIsTruthy.js';
17
- import wrapFocus, { elementOrParentIsFloatingMenu } from '../../../internal/wrapFocus.js';
18
- import setupGetInstanceId from '../../../tools/setupGetInstanceId.js';
19
- import { usePrefix } from '../../../internal/usePrefix.js';
20
-
21
- var _Modal$propTypes;
22
-
23
- var _excluded = ["children", "className", "modalHeading", "modalLabel", "modalAriaLabel", "passiveModal", "secondaryButtonText", "primaryButtonText", "open", "onRequestClose", "onRequestSubmit", "onSecondarySubmit", "primaryButtonDisabled", "danger", "alert", "secondaryButtons", "selectorPrimaryFocus", "selectorsFloatingMenus", "shouldSubmitOnEnter", "size", "hasScrollingContent", "closeButtonLabel", "preventCloseOnClickOutside"];
24
- var getInstanceId = setupGetInstanceId();
25
- var Modal = /*#__PURE__*/React__default.forwardRef(function Modal(_ref, ref) {
26
- var _classNames;
27
-
28
- var children = _ref.children,
29
- className = _ref.className,
30
- modalHeading = _ref.modalHeading,
31
- modalLabel = _ref.modalLabel,
32
- modalAriaLabel = _ref.modalAriaLabel,
33
- passiveModal = _ref.passiveModal,
34
- secondaryButtonText = _ref.secondaryButtonText,
35
- primaryButtonText = _ref.primaryButtonText,
36
- open = _ref.open,
37
- onRequestClose = _ref.onRequestClose,
38
- onRequestSubmit = _ref.onRequestSubmit,
39
- onSecondarySubmit = _ref.onSecondarySubmit,
40
- primaryButtonDisabled = _ref.primaryButtonDisabled,
41
- danger = _ref.danger,
42
- alert = _ref.alert,
43
- secondaryButtons = _ref.secondaryButtons,
44
- selectorPrimaryFocus = _ref.selectorPrimaryFocus,
45
- selectorsFloatingMenus = _ref.selectorsFloatingMenus,
46
- shouldSubmitOnEnter = _ref.shouldSubmitOnEnter,
47
- size = _ref.size,
48
- hasScrollingContent = _ref.hasScrollingContent,
49
- closeButtonLabel = _ref.closeButtonLabel,
50
- preventCloseOnClickOutside = _ref.preventCloseOnClickOutside,
51
- rest = _objectWithoutProperties(_ref, _excluded);
52
-
53
- var prefix = usePrefix();
54
- var button = useRef();
55
- var secondaryButton = useRef();
56
- var innerModal = useRef();
57
- var startTrap = useRef();
58
- var endTrap = useRef();
59
- var modalInstanceId = "modal-".concat(getInstanceId());
60
- var modalLabelId = "".concat(prefix, "--modal-header__label--").concat(modalInstanceId);
61
- var modalHeadingId = "".concat(prefix, "--modal-header__heading--").concat(modalInstanceId);
62
- var modalBodyId = "".concat(prefix, "--modal-body--").concat(modalInstanceId);
63
- var modalCloseButtonClass = "".concat(prefix, "--modal-close");
64
-
65
- function isCloseButton(element) {
66
- return !onSecondarySubmit && element === secondaryButton.current || element.classList.contains(modalCloseButtonClass);
67
- }
68
-
69
- function handleKeyDown(evt) {
70
- if (open) {
71
- if (evt.which === 27) {
72
- onRequestClose(evt);
73
- }
74
-
75
- if (evt.which === 13 && shouldSubmitOnEnter && !isCloseButton(evt.target)) {
76
- onRequestSubmit(evt);
77
- }
78
- }
79
- }
80
-
81
- function handleMousedown(evt) {
82
- if (innerModal.current && !innerModal.current.contains(evt.target) && !elementOrParentIsFloatingMenu(evt.target, selectorsFloatingMenus) && !preventCloseOnClickOutside) {
83
- onRequestClose(evt);
84
- }
85
- }
86
-
87
- function handleBlur(_ref2) {
88
- var oldActiveNode = _ref2.target,
89
- currentActiveNode = _ref2.relatedTarget;
90
-
91
- if (open && currentActiveNode && oldActiveNode) {
92
- var bodyNode = innerModal.current;
93
- var startTrapNode = startTrap.current;
94
- var endTrapNode = endTrap.current;
95
- wrapFocus({
96
- bodyNode: bodyNode,
97
- startTrapNode: startTrapNode,
98
- endTrapNode: endTrapNode,
99
- currentActiveNode: currentActiveNode,
100
- oldActiveNode: oldActiveNode,
101
- selectorsFloatingMenus: selectorsFloatingMenus
102
- });
103
- }
104
- }
105
-
106
- var onSecondaryButtonClick = onSecondarySubmit ? onSecondarySubmit : onRequestClose;
107
- var modalClasses = cx("".concat(prefix, "--modal"), (_classNames = {}, _defineProperty(_classNames, "".concat(prefix, "--modal-tall"), !passiveModal), _defineProperty(_classNames, 'is-visible', open), _defineProperty(_classNames, "".concat(prefix, "--modal--danger"), danger), _defineProperty(_classNames, className, className), _classNames));
108
- var containerClasses = cx("".concat(prefix, "--modal-container"), _defineProperty({}, "".concat(prefix, "--modal-container--").concat(size), size));
109
- var contentClasses = cx("".concat(prefix, "--modal-content"), _defineProperty({}, "".concat(prefix, "--modal-scroll-content"), hasScrollingContent));
110
- var footerClasses = cx("".concat(prefix, "--modal-footer"), _defineProperty({}, "".concat(prefix, "--modal-footer--three-button"), Array.isArray(secondaryButtons) && secondaryButtons.length === 2));
111
- var modalButton = /*#__PURE__*/React__default.createElement("button", {
112
- className: modalCloseButtonClass,
113
- type: "button",
114
- onClick: onRequestClose,
115
- title: ariaLabel,
116
- "aria-label": closeButtonLabel ? closeButtonLabel : 'close',
117
- ref: button
118
- }, /*#__PURE__*/React__default.createElement(Close, {
119
- size: 20,
120
- "aria-hidden": "true",
121
- tabIndex: "-1",
122
- className: "".concat(modalCloseButtonClass, "__icon")
123
- }));
124
- var ariaLabel = modalLabel || ['aria-label'] || modalAriaLabel || modalHeading;
125
- var getAriaLabelledBy = modalLabel ? modalLabelId : modalHeadingId;
126
- var hasScrollingContentProps = hasScrollingContent ? {
127
- tabIndex: 0,
128
- role: 'region',
129
- 'aria-label': ariaLabel,
130
- 'aria-labelledby': getAriaLabelledBy
131
- } : {};
132
- var alertDialogProps = {};
133
-
134
- if (alert && passiveModal) {
135
- alertDialogProps.role = 'alert';
136
- }
137
-
138
- if (alert && !passiveModal) {
139
- alertDialogProps.role = 'alertdialog';
140
- alertDialogProps['aria-describedby'] = modalBodyId;
141
- }
142
-
143
- useEffect(function () {
144
- return function () {
145
- toggleClass(document.body, "".concat(prefix, "--body--with-modal-open"), false);
146
- };
147
- }, [prefix]);
148
- useEffect(function () {
149
- toggleClass(document.body, "".concat(prefix, "--body--with-modal-open"), open);
150
- }, [open, prefix]);
151
- useEffect(function () {
152
- var initialFocus = function initialFocus(focusContainerElement) {
153
- var containerElement = focusContainerElement || innerModal.current;
154
- var primaryFocusElement = containerElement ? containerElement.querySelector(selectorPrimaryFocus) : null;
155
-
156
- if (primaryFocusElement) {
157
- return primaryFocusElement;
158
- }
159
-
160
- return button && button.current;
161
- };
162
-
163
- var focusButton = function focusButton(focusContainerElement) {
164
- var target = initialFocus(focusContainerElement);
165
-
166
- if (target) {
167
- target.focus();
168
- }
169
- };
170
-
171
- if (open) {
172
- focusButton(innerModal.current);
173
- }
174
- }, [open, selectorPrimaryFocus]);
175
- var modalBody = /*#__PURE__*/React__default.createElement("div", _extends({
176
- ref: innerModal,
177
- role: "dialog"
178
- }, alertDialogProps, {
179
- className: containerClasses,
180
- "aria-label": ariaLabel,
181
- "aria-modal": "true",
182
- tabIndex: "-1"
183
- }), /*#__PURE__*/React__default.createElement("div", {
184
- className: "".concat(prefix, "--modal-header")
185
- }, passiveModal && modalButton, modalLabel && /*#__PURE__*/React__default.createElement("h2", {
186
- id: modalLabelId,
187
- className: "".concat(prefix, "--modal-header__label")
188
- }, modalLabel), /*#__PURE__*/React__default.createElement("h3", {
189
- id: modalHeadingId,
190
- className: "".concat(prefix, "--modal-header__heading")
191
- }, modalHeading), !passiveModal && modalButton), /*#__PURE__*/React__default.createElement("div", _extends({
192
- id: modalBodyId,
193
- className: contentClasses
194
- }, hasScrollingContentProps, {
195
- "aria-labelledby": getAriaLabelledBy
196
- }), children), hasScrollingContent && /*#__PURE__*/React__default.createElement("div", {
197
- className: "".concat(prefix, "--modal-content--overflow-indicator")
198
- }), !passiveModal && /*#__PURE__*/React__default.createElement(ButtonSet, {
199
- className: footerClasses
200
- }, Array.isArray(secondaryButtons) && secondaryButtons.length <= 2 ? secondaryButtons.map(function (_ref3, i) {
201
- var buttonText = _ref3.buttonText,
202
- onButtonClick = _ref3.onClick;
203
- return /*#__PURE__*/React__default.createElement(Button, {
204
- key: "".concat(buttonText, "-").concat(i),
205
- kind: "secondary",
206
- onClick: onButtonClick
207
- }, buttonText);
208
- }) : secondaryButtonText && /*#__PURE__*/React__default.createElement(Button, {
209
- kind: "secondary",
210
- onClick: onSecondaryButtonClick,
211
- ref: secondaryButton
212
- }, secondaryButtonText), /*#__PURE__*/React__default.createElement(Button, {
213
- kind: danger ? 'danger' : 'primary',
214
- disabled: primaryButtonDisabled,
215
- onClick: onRequestSubmit,
216
- ref: button
217
- }, primaryButtonText)));
218
- return /*#__PURE__*/React__default.createElement("div", _extends({}, rest, {
219
- onKeyDown: handleKeyDown,
220
- onMouseDown: handleMousedown,
221
- onBlur: handleBlur,
222
- className: modalClasses,
223
- role: "presentation",
224
- ref: ref
225
- }), /*#__PURE__*/React__default.createElement("span", {
226
- ref: startTrap,
227
- tabIndex: "0",
228
- role: "link",
229
- className: "".concat(prefix, "--visually-hidden")
230
- }, "Focus sentinel"), modalBody, /*#__PURE__*/React__default.createElement("span", {
231
- ref: endTrap,
232
- tabIndex: "0",
233
- role: "link",
234
- className: "".concat(prefix, "--visually-hidden")
235
- }, "Focus sentinel"));
236
- });
237
- Modal.propTypes = (_Modal$propTypes = {
238
- /**
239
- * Specify whether the Modal is displaying an alert, error or warning
240
- * Should go hand in hand with the danger prop.
241
- */
242
- alert: PropTypes.bool
243
- }, _defineProperty(_Modal$propTypes, 'aria-label', requiredIfGivenPropIsTruthy('hasScrollingContent', PropTypes.string)), _defineProperty(_Modal$propTypes, "children", PropTypes.node), _defineProperty(_Modal$propTypes, "className", PropTypes.string), _defineProperty(_Modal$propTypes, "closeButtonLabel", PropTypes.string), _defineProperty(_Modal$propTypes, "danger", PropTypes.bool), _defineProperty(_Modal$propTypes, "hasScrollingContent", PropTypes.bool), _defineProperty(_Modal$propTypes, "id", PropTypes.string), _defineProperty(_Modal$propTypes, "modalAriaLabel", PropTypes.string), _defineProperty(_Modal$propTypes, "modalHeading", PropTypes.node), _defineProperty(_Modal$propTypes, "modalLabel", PropTypes.node), _defineProperty(_Modal$propTypes, "onKeyDown", PropTypes.func), _defineProperty(_Modal$propTypes, "onRequestClose", PropTypes.func), _defineProperty(_Modal$propTypes, "onRequestSubmit", PropTypes.func), _defineProperty(_Modal$propTypes, "onSecondarySubmit", PropTypes.func), _defineProperty(_Modal$propTypes, "open", PropTypes.bool), _defineProperty(_Modal$propTypes, "passiveModal", PropTypes.bool), _defineProperty(_Modal$propTypes, "preventCloseOnClickOutside", PropTypes.bool), _defineProperty(_Modal$propTypes, "primaryButtonDisabled", PropTypes.bool), _defineProperty(_Modal$propTypes, "primaryButtonText", PropTypes.node), _defineProperty(_Modal$propTypes, "secondaryButtonText", PropTypes.node), _defineProperty(_Modal$propTypes, "secondaryButtons", function secondaryButtons(props, propName, componentName) {
244
- if (props.secondaryButtons) {
245
- if (!Array.isArray(props.secondaryButtons) || props.secondaryButtons.length !== 2) {
246
- return new Error("".concat(propName, " needs to be an array of two button config objects"));
247
- }
248
-
249
- var shape = {
250
- buttonText: PropTypes.node,
251
- onClick: PropTypes.func
252
- };
253
- props[propName].forEach(function (secondaryButton) {
254
- PropTypes.checkPropTypes(shape, secondaryButton, propName, componentName);
255
- });
256
- }
257
-
258
- return null;
259
- }), _defineProperty(_Modal$propTypes, "selectorPrimaryFocus", PropTypes.string), _defineProperty(_Modal$propTypes, "selectorsFloatingMenus", PropTypes.arrayOf(PropTypes.string)), _defineProperty(_Modal$propTypes, "shouldSubmitOnEnter", PropTypes.bool), _defineProperty(_Modal$propTypes, "size", PropTypes.oneOf(['xs', 'sm', 'md', 'lg'])), _Modal$propTypes);
260
- Modal.defaultProps = {
261
- onRequestClose: function onRequestClose() {},
262
- onRequestSubmit: function onRequestSubmit() {},
263
- primaryButtonDisabled: false,
264
- onKeyDown: function onKeyDown() {},
265
- passiveModal: false,
266
- modalHeading: '',
267
- modalLabel: '',
268
- preventCloseOnClickOutside: false,
269
- selectorPrimaryFocus: '[data-modal-primary-focus]',
270
- hasScrollingContent: false
271
- };
272
- var ModalNext = Modal;
273
-
274
- export { ModalNext as default };