@carbon/ibm-products 2.30.0 → 2.31.0-alpha.5

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 (75) hide show
  1. package/css/index-full-carbon.css +242 -23
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +4 -4
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +1 -1
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +242 -23
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +1 -1
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +238 -19
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +1 -1
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/ComboButton/ComboButton.d.ts +38 -18
  18. package/es/components/ComboButton/ComboButton.js +25 -21
  19. package/es/components/ComboButton/ComboButtonItem/index.d.ts +22 -13
  20. package/es/components/Datagrid/Datagrid/addons/stateReducer.js +7 -0
  21. package/es/components/EditInPlace/EditInPlace.js +4 -5
  22. package/es/components/Nav/Nav.d.ts +3 -0
  23. package/es/components/Nav/Nav.js +154 -0
  24. package/es/components/Nav/NavItem.d.ts +35 -0
  25. package/es/components/Nav/NavItem.js +149 -0
  26. package/es/components/Nav/NavItemLink.d.ts +3 -0
  27. package/es/components/Nav/NavItemLink.js +30 -0
  28. package/es/components/Nav/NavList.d.ts +4 -0
  29. package/es/components/Nav/NavList.js +168 -0
  30. package/es/components/Nav/index.d.ts +3 -0
  31. package/es/components/Tearsheet/TearsheetShell.js +22 -7
  32. package/es/components/index.d.ts +1 -0
  33. package/es/global/js/package-settings.d.ts +1 -0
  34. package/es/global/js/package-settings.js +1 -0
  35. package/es/index.js +1 -0
  36. package/es/node_modules/@carbon/icon-helpers/es/index.js +140 -0
  37. package/es/node_modules/@carbon/icons-react/es/Icon.js +73 -0
  38. package/es/node_modules/@carbon/icons-react/es/generated/bucket-2.js +3091 -0
  39. package/es/node_modules/@carbon/icons-react/es/generated/bucket-8.js +3004 -0
  40. package/es/node_modules/@carbon/icons-react/es/iconPropTypes-4cbeb95d.js +14 -0
  41. package/es/settings.d.ts +1 -0
  42. package/lib/components/ComboButton/ComboButton.d.ts +38 -18
  43. package/lib/components/ComboButton/ComboButton.js +24 -20
  44. package/lib/components/ComboButton/ComboButtonItem/index.d.ts +22 -13
  45. package/lib/components/Datagrid/Datagrid/addons/stateReducer.js +7 -0
  46. package/lib/components/EditInPlace/EditInPlace.js +4 -5
  47. package/lib/components/Nav/Nav.d.ts +3 -0
  48. package/lib/components/Nav/Nav.js +161 -0
  49. package/lib/components/Nav/NavItem.d.ts +35 -0
  50. package/lib/components/Nav/NavItem.js +160 -0
  51. package/lib/components/Nav/NavItemLink.d.ts +3 -0
  52. package/lib/components/Nav/NavItemLink.js +38 -0
  53. package/lib/components/Nav/NavList.d.ts +4 -0
  54. package/lib/components/Nav/NavList.js +179 -0
  55. package/lib/components/Nav/index.d.ts +3 -0
  56. package/lib/components/Tearsheet/TearsheetShell.js +22 -7
  57. package/lib/components/index.d.ts +1 -0
  58. package/lib/global/js/package-settings.d.ts +1 -0
  59. package/lib/global/js/package-settings.js +1 -0
  60. package/lib/index.js +5 -0
  61. package/lib/node_modules/@carbon/icon-helpers/es/index.js +145 -0
  62. package/lib/node_modules/@carbon/icons-react/es/Icon.js +81 -0
  63. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-2.js +3223 -0
  64. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-8.js +3136 -0
  65. package/lib/node_modules/@carbon/icons-react/es/iconPropTypes-4cbeb95d.js +18 -0
  66. package/lib/settings.d.ts +1 -0
  67. package/package.json +3 -3
  68. package/scss/components/ComboButton/_combo-button.scss +19 -21
  69. package/scss/components/Nav/_carbon-imports.scss +9 -0
  70. package/scss/components/Nav/_index-with-carbon.scss +9 -0
  71. package/scss/components/Nav/_index.scss +8 -0
  72. package/scss/components/Nav/_nav.scss +259 -0
  73. package/scss/components/Tearsheet/_tearsheet.scss +24 -6
  74. package/scss/components/_index-with-carbon.scss +1 -0
  75. package/scss/components/_index.scss +1 -0
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2024
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
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
13
+ var index = require('../../node_modules/prop-types/index.js');
14
+ var React = require('react');
15
+
16
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
+
18
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
19
+
20
+ var _excluded = ["element"];
21
+ var NavItemLink = /*#__PURE__*/React__default["default"].forwardRef(function NavItemLink(props, ref) {
22
+ var element = props.element,
23
+ rest = _rollupPluginBabelHelpers.objectWithoutProperties(props, _excluded);
24
+ return /*#__PURE__*/React__default["default"].createElement(element, _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, rest), {}, {
25
+ ref: ref
26
+ }));
27
+ });
28
+ NavItemLink.displayName = 'NavItemLink';
29
+ NavItemLink.propTypes = {
30
+ /** @type {elementType} The base element to use to build the link. Defaults to `a`, can also accept alternative tag names or custom components like `Link` from `react-router`. */
31
+ element: index["default"].elementType
32
+ };
33
+ NavItemLink.defaultProps = {
34
+ element: 'a'
35
+ };
36
+ var NavItemLink$1 = NavItemLink;
37
+
38
+ exports["default"] = NavItemLink$1;
@@ -0,0 +1,4 @@
1
+ export const blockClass: string;
2
+ export let NavList: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
3
+ export default NavList;
4
+ import React from 'react';
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2024
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
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
13
+ var React = require('react');
14
+ var cx = require('classnames');
15
+ var index = require('../../node_modules/prop-types/index.js');
16
+ var NavItem = require('./NavItem.js');
17
+ var settings = require('../../settings.js');
18
+ var bucket2 = require('../../node_modules/@carbon/icons-react/es/generated/bucket-2.js');
19
+
20
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
+
22
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
+ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
24
+
25
+ var componentName = 'NavList';
26
+ var blockClass = "".concat(settings.pkg.prefix, "--nav-list");
27
+
28
+ // Default values for props
29
+ var defaults = {
30
+ activeHref: '#',
31
+ className: '',
32
+ children: null,
33
+ id: '',
34
+ isExpandedOnPageload: false,
35
+ onItemClick: function onItemClick() {},
36
+ onListClick: function onListClick() {},
37
+ tabIndex: 0,
38
+ title: '',
39
+ icon: '',
40
+ navigationItemTitle: ''
41
+ };
42
+ var NavList = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
43
+ var _ref$activeHref = _ref.activeHref,
44
+ activeHref = _ref$activeHref === void 0 ? defaults.activeHref : _ref$activeHref,
45
+ _ref$children = _ref.children,
46
+ children = _ref$children === void 0 ? defaults.children : _ref$children,
47
+ _ref$className = _ref.className,
48
+ className = _ref$className === void 0 ? defaults.className : _ref$className,
49
+ _ref$icon = _ref.icon,
50
+ icon = _ref$icon === void 0 ? defaults.icon : _ref$icon,
51
+ _ref$id = _ref.id,
52
+ id = _ref$id === void 0 ? defaults.id : _ref$id,
53
+ _ref$isExpandedOnPage = _ref.isExpandedOnPageload,
54
+ isExpandedOnPageload = _ref$isExpandedOnPage === void 0 ? defaults.isExpandedOnPageload : _ref$isExpandedOnPage,
55
+ _ref$navigationItemTi = _ref.navigationItemTitle,
56
+ navigationItemTitle = _ref$navigationItemTi === void 0 ? defaults.navigationItemTitle : _ref$navigationItemTi,
57
+ _ref$onItemClick = _ref.onItemClick,
58
+ onItemClick = _ref$onItemClick === void 0 ? defaults.onItemClick : _ref$onItemClick,
59
+ _ref$onListClick = _ref.onListClick,
60
+ onListClick = _ref$onListClick === void 0 ? defaults.onListClick : _ref$onListClick,
61
+ _ref$tabIndex = _ref.tabIndex,
62
+ tabIndex = _ref$tabIndex === void 0 ? defaults.tabIndex : _ref$tabIndex,
63
+ _ref$title = _ref.title,
64
+ title = _ref$title === void 0 ? defaults.title : _ref$title;
65
+ var _useState = React.useState(isExpandedOnPageload),
66
+ _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
67
+ open = _useState2[0],
68
+ setOpen = _useState2[1];
69
+ React.useEffect(function () {
70
+ var hrefs = React__default["default"].Children.toArray(children).filter(function (_ref2) {
71
+ var childProps = _ref2.props;
72
+ return childProps.href && childProps.href.length > 0;
73
+ }).map(function (_ref3) {
74
+ var childProps = _ref3.props;
75
+ return childProps.href;
76
+ });
77
+ setOpen(hrefs.includes(activeHref) || isExpandedOnPageload);
78
+ // eslint-disable-next-line react-hooks/exhaustive-deps
79
+ }, []);
80
+
81
+ /**
82
+ * Closes the list.
83
+ */
84
+ var close = function close() {
85
+ if (open) {
86
+ setOpen(false);
87
+ }
88
+ };
89
+
90
+ /**
91
+ * Handles toggling the list.
92
+ * @param {SyntheticEvent} event The event fired when the list is toggled.
93
+ */
94
+ var toggle = function toggle(event) {
95
+ var which = event.which,
96
+ type = event.type;
97
+
98
+ // Enter (13) and spacebar (32).
99
+ if (which === 13 || which === 32 || type === 'click') {
100
+ if (!open) {
101
+ onListClick(id);
102
+ }
103
+ setOpen(!open);
104
+ }
105
+ };
106
+
107
+ // Expose external function calls to the parent component
108
+ React.useImperativeHandle(ref, function () {
109
+ return {
110
+ close: close,
111
+ isExpandedOnPageload: isExpandedOnPageload
112
+ };
113
+ });
114
+ var newChildren = React__default["default"].Children.map(children, function (child, index) {
115
+ return /*#__PURE__*/React__default["default"].createElement(NavItem["default"], _rollupPluginBabelHelpers["extends"]({}, child.props, {
116
+ key: "".concat(NavItem.blockClass, "--").concat(index),
117
+ onClick: function onClick(event, href) {
118
+ var _child$props$onClick, _child$props;
119
+ onItemClick(event, href);
120
+ (_child$props$onClick = (_child$props = child.props).onClick) === null || _child$props$onClick === void 0 || _child$props$onClick.call(_child$props, event);
121
+ },
122
+ activeHref: activeHref,
123
+ tabIndex: open ? 0 : -1
124
+ }));
125
+ });
126
+ return /*#__PURE__*/React__default["default"].createElement("li", {
127
+ ref: ref,
128
+ className: cx__default["default"](blockClass, className, _rollupPluginBabelHelpers.defineProperty({}, "".concat(NavItem.blockClass, "--expanded"), open)),
129
+ tabIndex: tabIndex,
130
+ onClick: toggle,
131
+ onKeyDown: toggle,
132
+ role: "menuitem"
133
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
134
+ className: "".concat(NavItem.blockClass, "__link")
135
+ }, icon && /*#__PURE__*/React__default["default"].createElement("img", {
136
+ alt: navigationItemTitle,
137
+ className: "".concat(NavItem.blockClass, "__img"),
138
+ src: icon
139
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
140
+ className: "".concat(NavItem.blockClass, "__content")
141
+ }, title), /*#__PURE__*/React__default["default"].createElement(bucket2.ChevronDown, {
142
+ className: "".concat(blockClass, "__icon")
143
+ })), /*#__PURE__*/React__default["default"].createElement("ul", {
144
+ "aria-label": title,
145
+ "aria-hidden": !open,
146
+ className: "".concat(blockClass, " ").concat(blockClass, "--nested"),
147
+ role: "menu"
148
+ }, newChildren));
149
+ });
150
+ NavList.propTypes = {
151
+ /** @type {string} Hypertext reference for active page. */
152
+ activeHref: index.propTypesExports.string,
153
+ /** @type {Node} Child elements. */
154
+ children: index.propTypesExports.node,
155
+ /** @type {string} Extra classes to add. */
156
+ className: index.propTypesExports.string,
157
+ /** @type {string} Icon of a list. */
158
+ icon: index.propTypesExports.string,
159
+ /** @type {string} ID of a list. */
160
+ id: index.propTypesExports.string,
161
+ /** @type {boolean} State of a list. */
162
+ isExpandedOnPageload: index.propTypesExports.bool,
163
+ /** @type {boolean} Title of nav. */
164
+ navigationItemTitle: index.propTypesExports.string,
165
+ /** @type {Function} Click handler for an item. */
166
+ onItemClick: index.propTypesExports.func,
167
+ /** @type {Function} Click handler for a list. */
168
+ onListClick: index.propTypesExports.func,
169
+ /** @type {number} `tabindex` of an item. */
170
+ tabIndex: index.propTypesExports.number,
171
+ /** @type {string} Label of the list. */
172
+ title: index.propTypesExports.string
173
+ };
174
+ NavList.displayName = componentName;
175
+ var NavList$1 = NavList;
176
+
177
+ exports.NavList = NavList;
178
+ exports.blockClass = blockClass;
179
+ exports["default"] = NavList$1;
@@ -0,0 +1,3 @@
1
+ export { Nav } from "./Nav";
2
+ export { NavList } from "./NavList";
3
+ export { NavItem } from "./NavItem";
@@ -43,9 +43,13 @@ var maxDepth = 3;
43
43
  // happens when a tearsheet opens or closes. The 'open' array contains one
44
44
  // handler per OPEN tearsheet ordered from lowest to highest in visual z-order.
45
45
  // The 'all' array contains all the handlers for open and closed tearsheets.
46
+ // The 'sizes' array contains an array of the sizes for every stacked tearsheet.
47
+ // This is so we can opt-out of including the stacking scale effect when there
48
+ // are stacked tearsheets with mixed sizes (ie, using wide and narrow together)
46
49
  var stack = {
47
50
  open: [],
48
- all: []
51
+ all: [],
52
+ sizes: []
49
53
  };
50
54
 
51
55
  // these props are only applicable when size='wide'
@@ -156,6 +160,7 @@ var TearsheetShell = /*#__PURE__*/React__default["default"].forwardRef(function
156
160
 
157
161
  // Register this tearsheet's stack change callback/listener.
158
162
  stack.all.push(handleStackChange);
163
+ stack.sizes.push(size);
159
164
 
160
165
  // If the tearsheet is mounting with open=true or open is changing from
161
166
  // false to true to open it then append its notification callback to
@@ -172,6 +177,7 @@ var TearsheetShell = /*#__PURE__*/React__default["default"].forwardRef(function
172
177
  return function cleanup() {
173
178
  // Remove the notification callback from the all handlers array.
174
179
  stack.all.splice(stack.all.indexOf(handleStackChange), 1);
180
+ stack.sizes.splice(stack.sizes.indexOf(size), 1);
175
181
 
176
182
  // Remove the notification callback from the open handlers array, if
177
183
  // it's there, and notify all open tearsheets that the stacking has
@@ -182,7 +188,7 @@ var TearsheetShell = /*#__PURE__*/React__default["default"].forwardRef(function
182
188
  notify();
183
189
  }
184
190
  };
185
- }, [open]);
191
+ }, [open, size]);
186
192
  function handleFocus() {
187
193
  // If something within us is receiving focus but we are not the topmost
188
194
  // stacked tearsheet, transfer focus to the topmost tearsheet instead
@@ -198,14 +204,23 @@ var TearsheetShell = /*#__PURE__*/React__default["default"].forwardRef(function
198
204
 
199
205
  // Include an ActionSet if and only if one or more actions is given.
200
206
  var includeActions = actions && (actions === null || actions === void 0 ? void 0 : actions.length) > 0;
207
+ var areAllSameSizeVariant = function areAllSameSizeVariant() {
208
+ return new Set(stack.sizes).size === 1;
209
+ };
210
+ var setScaleValues = function setScaleValues() {
211
+ if (!areAllSameSizeVariant()) {
212
+ return _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "--".concat(bc, "--stacking-scale-factor-single"), 1), "--".concat(bc, "--stacking-scale-factor-double"), 1);
213
+ }
214
+ return _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "--".concat(bc, "--stacking-scale-factor-single"), (width - 32) / width), "--".concat(bc, "--stacking-scale-factor-double"), (width - 64) / width);
215
+ };
201
216
  return renderPortalUse( /*#__PURE__*/React__default["default"].createElement(react.ComposedModal, _rollupPluginBabelHelpers["extends"]({}, rest, {
202
217
  "aria-label": ariaLabel || getNodeTextContent.getNodeTextContent(title),
203
218
  className: cx__default["default"](bc, className, _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(bc, "--stacked-").concat(position, "-of-").concat(depth),
204
219
  // Don't apply this on the initial open of a single tearsheet.
205
220
  depth > 1 || depth === 1 && prevDepth.current > 1), "".concat(bc, "--wide"), wide), "".concat(bc, "--narrow"), !wide), "".concat(bc, "--has-slug"), slug), "".concat(bc, "--has-close"), effectiveHasCloseIcon)),
206
221
  slug: slug,
207
- style: _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "--".concat(bc, "--stacking-scale-factor-single"), (width - 32) / width), "--".concat(bc, "--stacking-scale-factor-double"), (width - 64) / width),
208
- containerClassName: cx__default["default"]("".concat(bc, "__container"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(bc, "__container--lower"), verticalPosition === 'lower')),
222
+ style: setScaleValues(),
223
+ containerClassName: cx__default["default"]("".concat(bc, "__container"), _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(bc, "__container--lower"), verticalPosition === 'lower'), "".concat(bc, "__container--mixed-size-stacking"), !areAllSameSizeVariant())),
209
224
  onClose: onClose,
210
225
  open: open,
211
226
  selectorPrimaryFocus: selectorPrimaryFocus,
@@ -333,9 +348,9 @@ TearsheetShell.propTypes = _rollupPluginBabelHelpers.objectSpread2({
333
348
  * **Note:** This prop is only required if a close icon is shown, i.e. if
334
349
  * there are a no navigation actions and/or hasCloseIcon is true.
335
350
  */
336
- closeIconDescription: index["default"].string.isRequired.if(function (_ref3) {
337
- var actions = _ref3.actions,
338
- hasCloseIcon = _ref3.hasCloseIcon;
351
+ closeIconDescription: index["default"].string.isRequired.if(function (_ref4) {
352
+ var actions = _ref4.actions,
353
+ hasCloseIcon = _ref4.hasCloseIcon;
339
354
  return tearsheetHasCloseIcon(actions, hasCloseIcon);
340
355
  }),
341
356
  /**
@@ -44,6 +44,7 @@ export { Decorator } from "./Decorator";
44
44
  export { DescriptionList } from "./DescriptionList";
45
45
  export { FullPageError } from "./FullPageError";
46
46
  export { SearchBar } from "./SearchBar";
47
+ export { Nav } from "./Nav";
47
48
  export { StringFormatter } from "./StringFormatter";
48
49
  export { UserAvatar } from "./UserAvatar";
49
50
  export { StatusIndicator } from "./StatusIndicator";
@@ -75,6 +75,7 @@ declare namespace defaults {
75
75
  let EditTearsheetNarrow: boolean;
76
76
  let EditFullPage: boolean;
77
77
  let EditUpdateCards: boolean;
78
+ let Nav: boolean;
78
79
  let BigNumbers: boolean;
79
80
  let TruncatedList: boolean;
80
81
  let DelimitedList: boolean;
@@ -78,6 +78,7 @@ var defaults = {
78
78
  EditTearsheetNarrow: false,
79
79
  EditFullPage: false,
80
80
  EditUpdateCards: false,
81
+ Nav: false,
81
82
  BigNumbers: false,
82
83
  TruncatedList: false,
83
84
  DelimitedList: false,
package/lib/index.js CHANGED
@@ -113,6 +113,7 @@ var Decorator = require('./components/Decorator/Decorator.js');
113
113
  var DescriptionList = require('./components/DescriptionList/DescriptionList.js');
114
114
  var FullPageError = require('./components/FullPageError/FullPageError.js');
115
115
  var SearchBar = require('./components/SearchBar/SearchBar.js');
116
+ var Nav = require('./components/Nav/Nav.js');
116
117
  var StringFormatter = require('./components/StringFormatter/StringFormatter.js');
117
118
  var UserAvatar = require('./components/UserAvatar/UserAvatar.js');
118
119
  var StatusIndicator = require('./components/StatusIndicator/StatusIndicator.js');
@@ -467,6 +468,10 @@ Object.defineProperty(exports, 'SearchBar', {
467
468
  enumerable: true,
468
469
  get: function () { return SearchBar.SearchBar; }
469
470
  });
471
+ Object.defineProperty(exports, 'Nav', {
472
+ enumerable: true,
473
+ get: function () { return Nav.Nav; }
474
+ });
470
475
  Object.defineProperty(exports, 'StringFormatter', {
471
476
  enumerable: true,
472
477
  get: function () { return StringFormatter.StringFormatter; }
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2024
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
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var _rollupPluginBabelHelpers = require('../../../../_virtual/_rollupPluginBabelHelpers.js');
13
+
14
+ function ownKeys(object, enumerableOnly) {
15
+ var keys = Object.keys(object);
16
+ if (Object.getOwnPropertySymbols) {
17
+ var symbols = Object.getOwnPropertySymbols(object);
18
+ enumerableOnly && (symbols = symbols.filter(function (sym) {
19
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
20
+ })), keys.push.apply(keys, symbols);
21
+ }
22
+ return keys;
23
+ }
24
+ function _objectSpread2(target) {
25
+ for (var i = 1; i < arguments.length; i++) {
26
+ var source = null != arguments[i] ? arguments[i] : {};
27
+ i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
28
+ _defineProperty(target, key, source[key]);
29
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
30
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
31
+ });
32
+ }
33
+ return target;
34
+ }
35
+ function _defineProperty(obj, key, value) {
36
+ key = _toPropertyKey(key);
37
+ if (key in obj) {
38
+ Object.defineProperty(obj, key, {
39
+ value: value,
40
+ enumerable: true,
41
+ configurable: true,
42
+ writable: true
43
+ });
44
+ } else {
45
+ obj[key] = value;
46
+ }
47
+ return obj;
48
+ }
49
+ function _objectWithoutPropertiesLoose(source, excluded) {
50
+ if (source == null) return {};
51
+ var target = {};
52
+ var sourceKeys = Object.keys(source);
53
+ var key, i;
54
+ for (i = 0; i < sourceKeys.length; i++) {
55
+ key = sourceKeys[i];
56
+ if (excluded.indexOf(key) >= 0) continue;
57
+ target[key] = source[key];
58
+ }
59
+ return target;
60
+ }
61
+ function _objectWithoutProperties(source, excluded) {
62
+ if (source == null) return {};
63
+ var target = _objectWithoutPropertiesLoose(source, excluded);
64
+ var key, i;
65
+ if (Object.getOwnPropertySymbols) {
66
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
67
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
68
+ key = sourceSymbolKeys[i];
69
+ if (excluded.indexOf(key) >= 0) continue;
70
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
71
+ target[key] = source[key];
72
+ }
73
+ }
74
+ return target;
75
+ }
76
+ function _toPrimitive(input, hint) {
77
+ if (_rollupPluginBabelHelpers["typeof"](input) !== "object" || input === null) return input;
78
+ var prim = input[Symbol.toPrimitive];
79
+ if (prim !== undefined) {
80
+ var res = prim.call(input, hint || "default");
81
+ if (_rollupPluginBabelHelpers["typeof"](res) !== "object") return res;
82
+ throw new TypeError("@@toPrimitive must return a primitive value.");
83
+ }
84
+ return (hint === "string" ? String : Number)(input);
85
+ }
86
+ function _toPropertyKey(arg) {
87
+ var key = _toPrimitive(arg, "string");
88
+ return _rollupPluginBabelHelpers["typeof"](key) === "symbol" ? key : String(key);
89
+ }
90
+ var _excluded = ["width", "height", "viewBox"],
91
+ _excluded2 = ["tabindex"];
92
+ /**
93
+ * Copyright IBM Corp. 2018, 2024
94
+ *
95
+ * This source code is licensed under the Apache-2.0 license found in the
96
+ * LICENSE file in the root directory of this source tree.
97
+ */
98
+
99
+ var defaultAttributes = {
100
+ // Reference:
101
+ // https://github.com/IBM/carbon-components-react/issues/1392
102
+ // https://github.com/PolymerElements/iron-iconset-svg/pull/47
103
+ // `focusable` is a string attribute which is why we do not use a boolean here
104
+ focusable: 'false',
105
+ preserveAspectRatio: 'xMidYMid meet'
106
+ };
107
+
108
+ /**
109
+ * Get supplementary HTML attributes for a given <svg> element based on existing
110
+ * attributes.
111
+ */
112
+ function getAttributes() {
113
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
114
+ width = _ref.width,
115
+ height = _ref.height,
116
+ _ref$viewBox = _ref.viewBox,
117
+ viewBox = _ref$viewBox === void 0 ? "0 0 ".concat(width, " ").concat(height) : _ref$viewBox,
118
+ attributes = _objectWithoutProperties(_ref, _excluded);
119
+ var tabindex = attributes.tabindex,
120
+ rest = _objectWithoutProperties(attributes, _excluded2);
121
+ var iconAttributes = _objectSpread2(_objectSpread2(_objectSpread2({}, defaultAttributes), rest), {}, {
122
+ width: width,
123
+ height: height,
124
+ viewBox: viewBox
125
+ });
126
+
127
+ // TODO: attributes.title assumes that the consumer will implement <title> and
128
+ // correctly set `aria-labelledby`.
129
+ if (iconAttributes['aria-label'] || iconAttributes['aria-labelledby'] || iconAttributes.title) {
130
+ iconAttributes.role = 'img';
131
+
132
+ // Reference:
133
+ // https://allyjs.io/tutorials/focusing-in-svg.html
134
+ if (tabindex !== undefined && tabindex !== null) {
135
+ iconAttributes.focusable = 'true';
136
+ iconAttributes.tabindex = tabindex;
137
+ }
138
+ } else {
139
+ iconAttributes['aria-hidden'] = true;
140
+ }
141
+ return iconAttributes;
142
+ }
143
+
144
+ exports.defaultAttributes = defaultAttributes;
145
+ exports.getAttributes = getAttributes;
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2024
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
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var _rollupPluginBabelHelpers = require('../../../../_virtual/_rollupPluginBabelHelpers.js');
13
+ var index = require('../../icon-helpers/es/index.js');
14
+ var index$1 = require('../../../prop-types/index.js');
15
+ var React = require('react');
16
+
17
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
+
19
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
20
+
21
+ var _excluded = ["className", "children", "tabIndex", "xmlns", "preserveAspectRatio"],
22
+ _excluded2 = ["tabindex"];
23
+
24
+ /**
25
+ * Copyright IBM Corp. 2019, 2023
26
+ *
27
+ * This source code is licensed under the Apache-2.0 license found in the
28
+ * LICENSE file in the root directory of this source tree.
29
+ */
30
+ var Icon = /*#__PURE__*/React__default["default"].forwardRef(function Icon(_ref, ref) {
31
+ var className = _ref.className,
32
+ children = _ref.children,
33
+ tabIndex = _ref.tabIndex,
34
+ _ref$xmlns = _ref.xmlns,
35
+ xmlns = _ref$xmlns === void 0 ? 'http://www.w3.org/2000/svg' : _ref$xmlns,
36
+ _ref$preserveAspectRa = _ref.preserveAspectRatio,
37
+ preserveAspectRatio = _ref$preserveAspectRa === void 0 ? 'xMidYMid meet' : _ref$preserveAspectRa,
38
+ rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
39
+ var _getAttributes = index.getAttributes(_rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, rest), {}, {
40
+ tabindex: tabIndex
41
+ })),
42
+ tabindex = _getAttributes.tabindex,
43
+ attrs = _rollupPluginBabelHelpers.objectWithoutProperties(_getAttributes, _excluded2);
44
+ var props = attrs;
45
+ if (className) {
46
+ props.className = className;
47
+ }
48
+ if (tabindex !== undefined && tabindex !== null) {
49
+ if (typeof tabindex === 'number') {
50
+ props.tabIndex = tabindex;
51
+ } else {
52
+ props.tabIndex = Number(tabIndex);
53
+ }
54
+ }
55
+ if (ref) {
56
+ props.ref = ref;
57
+ }
58
+ if (xmlns) {
59
+ props.xmlns = xmlns;
60
+ }
61
+ if (preserveAspectRatio) {
62
+ props.preserveAspectRatio = preserveAspectRatio;
63
+ }
64
+ return /*#__PURE__*/React__default["default"].createElement('svg', props, children);
65
+ });
66
+ Icon.displayName = 'Icon';
67
+ Icon.propTypes = {
68
+ 'aria-hidden': index$1["default"].oneOfType([index$1["default"].bool, index$1["default"].oneOf(['true', 'false'])]),
69
+ 'aria-label': index$1["default"].string,
70
+ 'aria-labelledby': index$1["default"].string,
71
+ children: index$1["default"].node,
72
+ className: index$1["default"].string,
73
+ height: index$1["default"].oneOfType([index$1["default"].number, index$1["default"].string]),
74
+ preserveAspectRatio: index$1["default"].string,
75
+ tabIndex: index$1["default"].oneOfType([index$1["default"].number, index$1["default"].string]),
76
+ viewBox: index$1["default"].string,
77
+ width: index$1["default"].oneOfType([index$1["default"].number, index$1["default"].string]),
78
+ xmlns: index$1["default"].string
79
+ };
80
+
81
+ exports["default"] = Icon;