@carbon/ibm-products 1.0.0-rc.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -13
- package/css/index-full-carbon.css +34 -69
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +1 -1
- package/css/index-without-carbon-released-only.css +34 -6
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +1 -1
- package/css/index-without-carbon.css +34 -69
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +1 -1
- package/css/index.css +34 -69
- package/css/index.css.map +1 -1
- package/css/index.min.css +1 -1
- package/es/components/Card/Card.js +18 -4
- package/es/components/ExpressiveCard/ExpressiveCard.js +3 -2
- package/es/components/PageHeader/PageHeader.js +46 -36
- package/es/components/ProductiveCard/ProductiveCard.js +3 -2
- package/es/components/Toolbar/ToolbarButton.js +7 -5
- package/es/components/_Canary/Canary.js +1 -1
- package/es/components/index.js +0 -1
- package/es/global/js/package-settings.js +0 -1
- package/es/global/js/utils/story-helper.js +22 -0
- package/lib/components/Card/Card.js +18 -4
- package/lib/components/ExpressiveCard/ExpressiveCard.js +3 -2
- package/lib/components/PageHeader/PageHeader.js +46 -36
- package/lib/components/ProductiveCard/ProductiveCard.js +3 -2
- package/lib/components/Toolbar/ToolbarButton.js +6 -3
- package/lib/components/_Canary/Canary.js +1 -1
- package/lib/components/index.js +0 -8
- package/lib/global/js/package-settings.js +0 -1
- package/lib/global/js/utils/story-helper.js +29 -2
- package/package.json +5 -5
- package/scss/components/ButtonSetWithOverflow/_button-set-with-overflow.scss +1 -0
- package/scss/components/Card/_card.scss +1 -0
- package/scss/components/PageHeader/_page-header.scss +36 -6
- package/scss/components/PageHeader/_storybook-styles.scss +1 -0
- package/scss/components/ProductiveCard/_productive-card.scss +4 -0
- package/scss/components/Tearsheet/_tearsheet.scss +6 -0
- package/scss/components/_index.scss +0 -1
@@ -87,7 +87,8 @@ export var Card = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
87
87
|
Icon = _ref3.icon,
|
88
88
|
onClick = _ref3.onClick,
|
89
89
|
iconDescription = _ref3.iconDescription,
|
90
|
-
onKeyDown = _ref3.onKeyDown
|
90
|
+
onKeyDown = _ref3.onKeyDown,
|
91
|
+
href = _ref3.href;
|
91
92
|
|
92
93
|
if (productive) {
|
93
94
|
return /*#__PURE__*/React.createElement(Button, {
|
@@ -97,10 +98,22 @@ export var Card = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
97
98
|
onClick: onClick,
|
98
99
|
size: actionsPlacement === 'top' ? 'sm' : 'field',
|
99
100
|
iconDescription: iconDescription,
|
100
|
-
kind: "ghost"
|
101
|
+
kind: "ghost",
|
102
|
+
href: href
|
101
103
|
});
|
102
104
|
}
|
103
105
|
|
106
|
+
if (href) {
|
107
|
+
return /*#__PURE__*/React.createElement("a", {
|
108
|
+
key: id,
|
109
|
+
className: "".concat(blockClass, "__icon"),
|
110
|
+
href: href,
|
111
|
+
onClick: onClick
|
112
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
113
|
+
"aria-label": iconDescription
|
114
|
+
}));
|
115
|
+
}
|
116
|
+
|
104
117
|
return /*#__PURE__*/React.createElement("div", {
|
105
118
|
key: id,
|
106
119
|
className: "".concat(blockClass, "__icon"),
|
@@ -195,7 +208,8 @@ Card.propTypes = {
|
|
195
208
|
icon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
|
196
209
|
onKeyDown: PropTypes.func,
|
197
210
|
onClick: PropTypes.func,
|
198
|
-
iconDescription: PropTypes.string
|
211
|
+
iconDescription: PropTypes.string,
|
212
|
+
href: PropTypes.string
|
199
213
|
})),
|
200
214
|
actionsPlacement: PropTypes.oneOf(['top', 'bottom']),
|
201
215
|
children: PropTypes.node,
|
@@ -219,7 +233,7 @@ Card.propTypes = {
|
|
219
233
|
primaryButtonHref: PropTypes.string,
|
220
234
|
primaryButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
|
221
235
|
primaryButtonKind: PropTypes.oneOf(['primary', 'ghost']),
|
222
|
-
primaryButtonText: PropTypes.
|
236
|
+
primaryButtonText: PropTypes.node,
|
223
237
|
productive: PropTypes.bool,
|
224
238
|
secondaryButtonHref: PropTypes.string,
|
225
239
|
secondaryButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
|
@@ -22,14 +22,15 @@ export var ExpressiveCard = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
22
22
|
ExpressiveCard = pkg.checkComponentEnabled(ExpressiveCard, componentName);
|
23
23
|
ExpressiveCard.propTypes = {
|
24
24
|
/**
|
25
|
-
* Icons that are displayed on card. Refer to design documentation for implementation guidelines
|
25
|
+
* Icons that are displayed on card. Refer to design documentation for implementation guidelines. Note- href will supersede onClick
|
26
26
|
*/
|
27
27
|
actionIcons: PropTypes.arrayOf(PropTypes.shape({
|
28
28
|
id: PropTypes.string,
|
29
29
|
icon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
|
30
30
|
onKeyDown: PropTypes.func,
|
31
31
|
onClick: PropTypes.func,
|
32
|
-
iconDescription: PropTypes.string
|
32
|
+
iconDescription: PropTypes.string,
|
33
|
+
href: PropTypes.string
|
33
34
|
})),
|
34
35
|
|
35
36
|
/**
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
3
3
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
4
4
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
5
|
-
var _excluded = ["actionBarItems", "actionBarMenuOptionsClass", "actionBarOverflowAriaLabel", "allTagsModalSearchLabel", "allTagsModalSearchPlaceholderText", "allTagsModalTitle", "hasBackgroundAlways", "breadcrumbOverflowAriaLabel", "breadcrumbs", "children", "className", "collapseHeader", "collapseHeaderIconDescription", "collapseTitle", "disableBreadcrumbScroll", "expandHeaderIconDescription", "fullWidthGrid", "hasCollapseHeaderToggle", "narrowGrid", "navigation", "pageActions", "pageActionsOverflowLabel", "pageActionsMenuOptionsClass", "showAllTagsLabel", "subtitle", "tags", "title"];
|
5
|
+
var _excluded = ["actionBarItems", "actionBarMenuOptionsClass", "actionBarOverflowAriaLabel", "allTagsModalSearchLabel", "allTagsModalSearchPlaceholderText", "allTagsModalTitle", "hasBackgroundAlways", "breadcrumbOverflowAriaLabel", "breadcrumbs", "children", "className", "collapseHeader", "collapseHeaderIconDescription", "collapseTitle", "disableBreadcrumbScroll", "expandHeaderIconDescription", "fullWidthGrid", "hasCollapseHeaderToggle", "narrowGrid", "navigation", "pageActions", "pageActionsOverflowLabel", "pageActionsMenuOptionsClass", "showAllTagsLabel", "subtitle", "tags", "title", "withoutBackground"];
|
6
6
|
|
7
7
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
8
8
|
|
@@ -22,7 +22,7 @@ import { useResizeDetector } from 'react-resize-detector';
|
|
22
22
|
import { Grid, Column, Row, Button, Tag } from 'carbon-components-react';
|
23
23
|
import { useWindowResize, useNearestScroll } from '../../global/js/hooks';
|
24
24
|
import { getDevtoolsProps } from '../../global/js/utils/devtools';
|
25
|
-
import { prepareProps } from '../../global/js/utils/props-helper';
|
25
|
+
import { deprecateProp, prepareProps } from '../../global/js/utils/props-helper';
|
26
26
|
import { pkg } from '../../settings';
|
27
27
|
import { ActionBar } from '../ActionBar/';
|
28
28
|
import { BreadcrumbWithOverflow } from '../BreadcrumbWithOverflow';
|
@@ -33,7 +33,7 @@ var componentName = 'PageHeader';
|
|
33
33
|
import { blockClass, utilCheckUpdateVerticalSpace, utilGetBreadcrumbItemForTitle, utilSetCollapsed } from './PageHeaderUtils';
|
34
34
|
import { PageHeaderTitle } from './PageHeaderTitle';
|
35
35
|
export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
36
|
-
var _ref5, _cx2, _ref6, _cx4, _cx7;
|
36
|
+
var _withoutBackground, _ref5, _cx2, _ref6, _cx4, _cx7;
|
37
37
|
|
38
38
|
var actionBarItems = _ref.actionBarItems,
|
39
39
|
actionBarMenuOptionsClass = _ref.actionBarMenuOptionsClass,
|
@@ -41,7 +41,7 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
41
41
|
allTagsModalSearchLabel = _ref.allTagsModalSearchLabel,
|
42
42
|
allTagsModalSearchPlaceholderText = _ref.allTagsModalSearchPlaceholderText,
|
43
43
|
allTagsModalTitle = _ref.allTagsModalTitle,
|
44
|
-
|
44
|
+
deprecated_hasBackgroundAlways = _ref.hasBackgroundAlways,
|
45
45
|
breadcrumbOverflowAriaLabel = _ref.breadcrumbOverflowAriaLabel,
|
46
46
|
breadcrumbs = _ref.breadcrumbs,
|
47
47
|
children = _ref.children,
|
@@ -62,8 +62,13 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
62
62
|
subtitle = _ref.subtitle,
|
63
63
|
tags = _ref.tags,
|
64
64
|
title = _ref.title,
|
65
|
+
withoutBackground = _ref.withoutBackground,
|
65
66
|
rest = _objectWithoutProperties(_ref, _excluded);
|
66
67
|
|
68
|
+
// handle deprecated props - START
|
69
|
+
// if withoutBackground is null check deprecated_hasBackgroundAlways and default false
|
70
|
+
(_withoutBackground = withoutBackground) !== null && _withoutBackground !== void 0 ? _withoutBackground : withoutBackground = !(deprecated_hasBackgroundAlways !== null && deprecated_hasBackgroundAlways !== void 0 ? deprecated_hasBackgroundAlways : true); // handle deprecated props - END
|
71
|
+
|
67
72
|
var _useState = useState({}),
|
68
73
|
_useState2 = _slicedToArray(_useState, 2),
|
69
74
|
metrics = _useState2[0],
|
@@ -85,7 +90,7 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
85
90
|
}; // state based on props only
|
86
91
|
|
87
92
|
|
88
|
-
var hasActionBar = actionBarItems && actionBarItems.length;
|
93
|
+
var hasActionBar = actionBarItems && actionBarItems.length > 0;
|
89
94
|
var hasBreadcrumbRow = breadcrumbs || actionBarItems; // NOTE: The buffer is used to add space between the bottom of the header and the last content
|
90
95
|
// Not pre-collapsed and (subtitle or children)
|
91
96
|
|
@@ -282,8 +287,8 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
282
287
|
checkUpdateVerticalSpace(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
283
288
|
}, [fullWidthGrid, narrowGrid]);
|
284
289
|
useEffect(function () {
|
285
|
-
// Determines
|
286
|
-
var result =
|
290
|
+
// Determines the appropriate header background opacity based on the header config/height/scroll and the withoutBackground setting
|
291
|
+
var result = withoutBackground ? 0 : 1;
|
287
292
|
|
288
293
|
if (!result && metrics.headerHeight > 0 && (breadcrumbs || actionBarItems || tags || navigation)) {
|
289
294
|
var startAddingAt = parseFloat(layout05, 10) * parseInt(baseFontSize);
|
@@ -301,13 +306,13 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
301
306
|
setPageHeaderStyles(function (prev) {
|
302
307
|
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, "--".concat(blockClass, "--background-opacity"), result));
|
303
308
|
});
|
304
|
-
}, [actionBarItems,
|
309
|
+
}, [actionBarItems, withoutBackground, breadcrumbs, headerRef, metrics.breadcrumbRowHeight, metrics.headerHeight, navigation, scrollYValue, hasCollapseHeaderToggle, tags]);
|
305
310
|
useEffect(function () {
|
306
|
-
// only has toggle if requested and
|
311
|
+
// only has toggle if requested and withoutBackground is unset/falsy
|
307
312
|
// NOTE: prop-types isRequired.if for the expand and collapse
|
308
313
|
// icon descriptions depends on the this.
|
309
|
-
setHasCollapseButton(hasCollapseHeaderToggle &&
|
310
|
-
}, [
|
314
|
+
setHasCollapseButton(hasCollapseHeaderToggle && !withoutBackground);
|
315
|
+
}, [withoutBackground, hasCollapseHeaderToggle]);
|
311
316
|
useEffect(function () {
|
312
317
|
// Determine if space is needed in the breadcrumb for a collapse button
|
313
318
|
setSpaceForCollapseButton(hasCollapseButton && !(navigation || tags) && metrics.headerHeight);
|
@@ -446,6 +451,8 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
446
451
|
var handleWidthChange = isBreadcrumbRow && hasBreadcrumbRow ? handlePageActionWidthChange : function () {};
|
447
452
|
return /*#__PURE__*/React.createElement(_Tag, {
|
448
453
|
className: cx("".concat(blockClass, "__page-actions"), _defineProperty({}, "".concat(blockClass, "__page-actions--in-breadcrumb"), inBreadcrumbRow))
|
454
|
+
}, /*#__PURE__*/React.createElement("div", {
|
455
|
+
className: cx("".concat(blockClass, "__page-actions-content"))
|
449
456
|
}, (_pageActions$content = pageActions.content) !== null && _pageActions$content !== void 0 ? _pageActions$content : /*#__PURE__*/React.createElement(ButtonSetWithOverflow, {
|
450
457
|
classname: "".concat(blockClass, "__button-set-with-overflow"),
|
451
458
|
menuOptionsClass: cx(pageActionsMenuOptionsClass, "".concat(blockClass, "__button-set-menu-options")),
|
@@ -453,7 +460,7 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
453
460
|
buttons: pageActions,
|
454
461
|
buttonSetOverflowLabel: pageActionsOverflowLabel,
|
455
462
|
rightAlign: true
|
456
|
-
}));
|
463
|
+
})));
|
457
464
|
}
|
458
465
|
}
|
459
466
|
}); // Return a placeholder if not released and not enabled by feature flag
|
@@ -474,7 +481,13 @@ var TYPES = {
|
|
474
481
|
'high-contrast': 'High-Contrast'
|
475
482
|
};
|
476
483
|
var tagTypes = Object.keys(TYPES);
|
477
|
-
|
484
|
+
export var deprecatedProps = {
|
485
|
+
/**
|
486
|
+
* **Deprecated** see property `withoutBackground`
|
487
|
+
*/
|
488
|
+
hasBackgroundAlways: deprecateProp(PropTypes.bool, 'Property replaced by `withoutBackground`')
|
489
|
+
};
|
490
|
+
PageHeader.propTypes = _objectSpread({
|
478
491
|
/**
|
479
492
|
* Specifies the action bar items which are the final items in the row top of the PageHeader.
|
480
493
|
* Each item is specified as an object with the properties of a Carbon Button in icon only form.
|
@@ -498,9 +511,8 @@ PageHeader.propTypes = {
|
|
498
511
|
* NOTE: This prop is required if actionBarItems are supplied
|
499
512
|
*/
|
500
513
|
actionBarOverflowAriaLabel: PropTypes.string.isRequired.if(function (_ref8) {
|
501
|
-
var actionBarItems = _ref8.actionBarItems
|
502
|
-
|
503
|
-
return actionBarItems && actionBarItems.length > 0 && !actionBarOverflowLabel;
|
514
|
+
var actionBarItems = _ref8.actionBarItems;
|
515
|
+
return actionBarItems && actionBarItems.length > 0;
|
504
516
|
}),
|
505
517
|
|
506
518
|
/**
|
@@ -535,9 +547,8 @@ PageHeader.propTypes = {
|
|
535
547
|
* It is used in an overflow menu when there is insufficient space to display all breadcrumbs inline.
|
536
548
|
*/
|
537
549
|
breadcrumbOverflowAriaLabel: PropTypes.string.isRequired.if(function (_ref9) {
|
538
|
-
var breadcrumbs = _ref9.breadcrumbs
|
539
|
-
|
540
|
-
return breadcrumbs && breadcrumbs.length > 0 || breadcrumbItems && breadcrumbItems.length > 0;
|
550
|
+
var breadcrumbs = _ref9.breadcrumbs;
|
551
|
+
return breadcrumbs && breadcrumbs.length > 0;
|
541
552
|
}),
|
542
553
|
|
543
554
|
/**
|
@@ -603,13 +614,13 @@ PageHeader.propTypes = {
|
|
603
614
|
collapseHeader: PropTypes.bool,
|
604
615
|
|
605
616
|
/**
|
606
|
-
* If `hasCollapseHeaderToggle` and `
|
607
|
-
* for both the expend and collapse states of the button component used.
|
617
|
+
* If `hasCollapseHeaderToggle` is set and `withoutBackground` is unset/falsy then assistive text is
|
618
|
+
* required for both the expend and collapse states of the button component used.
|
608
619
|
*/
|
609
620
|
collapseHeaderIconDescription: PropTypes.string.isRequired.if(function (_ref11) {
|
610
|
-
var
|
621
|
+
var withoutBackground = _ref11.withoutBackground,
|
611
622
|
hasCollapseHeaderToggle = _ref11.hasCollapseHeaderToggle;
|
612
|
-
return
|
623
|
+
return !withoutBackground && hasCollapseHeaderToggle;
|
613
624
|
}),
|
614
625
|
|
615
626
|
/**
|
@@ -625,13 +636,13 @@ PageHeader.propTypes = {
|
|
625
636
|
disableBreadcrumbScroll: PropTypes.bool,
|
626
637
|
|
627
638
|
/**
|
628
|
-
* If `hasCollapseHeaderToggle` and `
|
629
|
-
* for both the expend and collapse states of the button component used.
|
639
|
+
* If `hasCollapseHeaderToggle` is set and `withoutBackground` is unset/falsy then assistive text is
|
640
|
+
* required for both the expend and collapse states of the button component used.
|
630
641
|
*/
|
631
642
|
expandHeaderIconDescription: PropTypes.string.isRequired.if(function (_ref12) {
|
632
|
-
var
|
643
|
+
var withoutBackground = _ref12.withoutBackground,
|
633
644
|
hasCollapseHeaderToggle = _ref12.hasCollapseHeaderToggle;
|
634
|
-
return
|
645
|
+
return !withoutBackground && hasCollapseHeaderToggle;
|
635
646
|
}),
|
636
647
|
|
637
648
|
/**
|
@@ -640,12 +651,6 @@ PageHeader.propTypes = {
|
|
640
651
|
*/
|
641
652
|
fullWidthGrid: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['xl'])]),
|
642
653
|
|
643
|
-
/**
|
644
|
-
* Specifies if the PageHeader should have a background always on and defaults to the preferred `true`.
|
645
|
-
* When false some parts of the header gain a background if they stick to the top of the PageHeader on scroll.
|
646
|
-
*/
|
647
|
-
hasBackgroundAlways: PropTypes.bool,
|
648
|
-
|
649
654
|
/**
|
650
655
|
* Adds a button as the last element of the bottom row which collapses and expands the header.
|
651
656
|
*
|
@@ -769,11 +774,16 @@ PageHeader.propTypes = {
|
|
769
774
|
content: PropTypes.node.isRequired,
|
770
775
|
breadcrumbContent: PropTypes.node,
|
771
776
|
asText: PropTypes.string.isRequired
|
772
|
-
})])
|
773
|
-
|
777
|
+
})]),
|
778
|
+
|
779
|
+
/**
|
780
|
+
* Specifies if the PageHeader should appear without a background color, and defaults to the preferred `false` (a background color is shown).
|
781
|
+
* Note that when `true` some parts of the header still gain a background if and when they stick to the top of the PageHeader on scroll.
|
782
|
+
*/
|
783
|
+
withoutBackground: PropTypes.bool
|
784
|
+
}, deprecatedProps);
|
774
785
|
PageHeader.defaultProps = {
|
775
786
|
fullWidthGrid: false,
|
776
|
-
hasBackgroundAlways: true,
|
777
787
|
narrowGrid: false
|
778
788
|
};
|
779
789
|
PageHeader.displayName = componentName;
|
@@ -30,7 +30,8 @@ ProductiveCard.propTypes = {
|
|
30
30
|
icon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
|
31
31
|
onKeyDown: PropTypes.func,
|
32
32
|
onClick: PropTypes.func,
|
33
|
-
iconDescription: PropTypes.string
|
33
|
+
iconDescription: PropTypes.string,
|
34
|
+
href: PropTypes.string
|
34
35
|
})),
|
35
36
|
|
36
37
|
/**
|
@@ -96,7 +97,7 @@ ProductiveCard.propTypes = {
|
|
96
97
|
/**
|
97
98
|
* The text that's displayed in the primary button
|
98
99
|
*/
|
99
|
-
primaryButtonText: PropTypes.
|
100
|
+
primaryButtonText: PropTypes.node,
|
100
101
|
|
101
102
|
/**
|
102
103
|
* Title that's displayed at the top of the card
|
@@ -14,10 +14,11 @@ import cx from 'classnames';
|
|
14
14
|
import { bool, node, string } from 'prop-types';
|
15
15
|
import React, { forwardRef, useContext } from 'react';
|
16
16
|
import { pkg } from '../../settings';
|
17
|
-
import { blockClass, ToolbarContext } from './Toolbar';
|
17
|
+
import { blockClass as toolbarClass, ToolbarContext } from './Toolbar';
|
18
|
+
var blockClass = "".concat(toolbarClass, "__button");
|
18
19
|
/** Toolbar buttons are common functions performed as part of a products interface or an open window. */
|
19
20
|
|
20
|
-
|
21
|
+
var ToolbarButton = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
21
22
|
var _useContext;
|
22
23
|
|
23
24
|
var caret = _ref.caret,
|
@@ -29,12 +30,12 @@ export var ToolbarButton = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
29
30
|
tooltipPosition: ((_useContext = useContext(ToolbarContext)) === null || _useContext === void 0 ? void 0 : _useContext.vertical) && 'right'
|
30
31
|
}, rest, {
|
31
32
|
ref: ref,
|
32
|
-
className: cx(className, _defineProperty({}, "".concat(blockClass, "
|
33
|
+
className: cx(className, _defineProperty({}, "".concat(blockClass, "--caret"), caret)),
|
33
34
|
kind: "ghost",
|
34
35
|
size: "md",
|
35
36
|
hasIconOnly: true
|
36
37
|
}), /*#__PURE__*/React.createElement(React.Fragment, null, children, caret && /*#__PURE__*/React.createElement("span", {
|
37
|
-
className: "".concat(blockClass, "
|
38
|
+
className: "".concat(blockClass, "__caret")
|
38
39
|
})));
|
39
40
|
});
|
40
41
|
var componentName = 'ToolbarButton';
|
@@ -52,4 +53,5 @@ ToolbarButton.propTypes = {
|
|
52
53
|
ToolbarButton.defaultProps = {
|
53
54
|
caret: false
|
54
55
|
};
|
55
|
-
ToolbarButton = pkg.checkComponentEnabled(ToolbarButton, componentName);
|
56
|
+
ToolbarButton = pkg.checkComponentEnabled(ToolbarButton, componentName);
|
57
|
+
export { blockClass, ToolbarButton };
|
@@ -30,7 +30,7 @@ export var Canary = function Canary(_ref
|
|
30
30
|
componentName = _ref.componentName,
|
31
31
|
rest = _objectWithoutProperties(_ref, _excluded);
|
32
32
|
|
33
|
-
var instructions = "\nimport { pkg } from '@carbon/ibm-
|
33
|
+
var instructions = "\nimport { pkg } from '@carbon/ibm-products';\n// NOTE: must happen before component is first used\npkg.component.".concat(componentName, " = true;\n");
|
34
34
|
return /*#__PURE__*/React.createElement("div", _extends({}, rest, {
|
35
35
|
className: cx(blockClass, className)
|
36
36
|
}), /*#__PURE__*/React.createElement("h2", null, "This component ", /*#__PURE__*/React.createElement("strong", null, componentName), " is not ready yet."), /*#__PURE__*/React.createElement("p", null, "To enable it, initialize package flags before the component is first used."), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("p", null, "e.g. in main.js"), /*#__PURE__*/React.createElement(CodeSnippet, {
|
package/es/components/index.js
CHANGED
@@ -14,7 +14,6 @@ export { CreateSidePanel } from './CreateSidePanel';
|
|
14
14
|
export { CreateTearsheet, CreateTearsheetStep, CreateTearsheetDivider } from './CreateTearsheet';
|
15
15
|
export { CreateTearsheetNarrow } from './CreateTearsheetNarrow';
|
16
16
|
export { EmptyState, ErrorEmptyState, NoDataEmptyState, NoTagsEmptyState, NotFoundEmptyState, NotificationsEmptyState, UnauthorizedEmptyState } from './EmptyStates';
|
17
|
-
export { ExampleComponent } from './ExampleComponent';
|
18
17
|
export { ExportModal } from './ExportModal';
|
19
18
|
export { ExpressiveCard } from './ExpressiveCard';
|
20
19
|
export { HTTPError403, HTTPError404, HTTPErrorOther } from './HTTPErrors';
|
@@ -4,6 +4,8 @@
|
|
4
4
|
// This source code is licensed under the Apache-2.0 license found in the
|
5
5
|
// LICENSE file in the root directory of this source tree.
|
6
6
|
//
|
7
|
+
import React from 'react';
|
8
|
+
import PropTypes from 'prop-types';
|
7
9
|
import { sanitize } from '@storybook/csf';
|
8
10
|
import pkg from '../package-settings';
|
9
11
|
import { getPathForComponent } from '../../../../../core/story-structure';
|
@@ -50,4 +52,24 @@ export var prepareStory = function prepareStory(template, options) {
|
|
50
52
|
(_result$parameters2$c = (_result$parameters2 = result.parameters).ccsSettings) !== null && _result$parameters2$c !== void 0 ? _result$parameters2$c : _result$parameters2.ccsSettings = {};
|
51
53
|
result.parameters.ccsSettings.sequence = sequence++;
|
52
54
|
return result;
|
55
|
+
};
|
56
|
+
/**
|
57
|
+
* A helper component that returns a codesandbox link to an example codesandbox for the component.
|
58
|
+
* The link URL is based on the example directory name and the standard codesandbox URL for package examples.
|
59
|
+
*/
|
60
|
+
|
61
|
+
export var CodesandboxLink = function CodesandboxLink(_ref) {
|
62
|
+
var exampleDirectory = _ref.exampleDirectory;
|
63
|
+
return /*#__PURE__*/React.createElement("a", {
|
64
|
+
href: "https://codesandbox.io/s/github/carbon-design-system/ibm-cloud-cognitive/tree/main/examples/carbon-for-ibm-products/".concat(exampleDirectory)
|
65
|
+
}, /*#__PURE__*/React.createElement("img", {
|
66
|
+
alt: "Edit on CodeSandbox",
|
67
|
+
src: "https://codesandbox.io/static/img/play-codesandbox.svg"
|
68
|
+
}));
|
69
|
+
};
|
70
|
+
CodesandboxLink.propTypes = {
|
71
|
+
/**
|
72
|
+
* directory withing examples codesandbox will be found
|
73
|
+
*/
|
74
|
+
exampleDirectory: PropTypes.string
|
53
75
|
};
|
@@ -104,7 +104,8 @@ var Card = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
104
104
|
Icon = _ref3.icon,
|
105
105
|
onClick = _ref3.onClick,
|
106
106
|
iconDescription = _ref3.iconDescription,
|
107
|
-
onKeyDown = _ref3.onKeyDown
|
107
|
+
onKeyDown = _ref3.onKeyDown,
|
108
|
+
href = _ref3.href;
|
108
109
|
|
109
110
|
if (productive) {
|
110
111
|
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
|
@@ -114,10 +115,22 @@ var Card = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
114
115
|
onClick: onClick,
|
115
116
|
size: actionsPlacement === 'top' ? 'sm' : 'field',
|
116
117
|
iconDescription: iconDescription,
|
117
|
-
kind: "ghost"
|
118
|
+
kind: "ghost",
|
119
|
+
href: href
|
118
120
|
});
|
119
121
|
}
|
120
122
|
|
123
|
+
if (href) {
|
124
|
+
return /*#__PURE__*/_react.default.createElement("a", {
|
125
|
+
key: id,
|
126
|
+
className: "".concat(blockClass, "__icon"),
|
127
|
+
href: href,
|
128
|
+
onClick: onClick
|
129
|
+
}, /*#__PURE__*/_react.default.createElement(Icon, {
|
130
|
+
"aria-label": iconDescription
|
131
|
+
}));
|
132
|
+
}
|
133
|
+
|
121
134
|
return /*#__PURE__*/_react.default.createElement("div", {
|
122
135
|
key: id,
|
123
136
|
className: "".concat(blockClass, "__icon"),
|
@@ -213,7 +226,8 @@ Card.propTypes = {
|
|
213
226
|
icon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
|
214
227
|
onKeyDown: _propTypes.default.func,
|
215
228
|
onClick: _propTypes.default.func,
|
216
|
-
iconDescription: _propTypes.default.string
|
229
|
+
iconDescription: _propTypes.default.string,
|
230
|
+
href: _propTypes.default.string
|
217
231
|
})),
|
218
232
|
actionsPlacement: _propTypes.default.oneOf(['top', 'bottom']),
|
219
233
|
children: _propTypes.default.node,
|
@@ -237,7 +251,7 @@ Card.propTypes = {
|
|
237
251
|
primaryButtonHref: _propTypes.default.string,
|
238
252
|
primaryButtonIcon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
|
239
253
|
primaryButtonKind: _propTypes.default.oneOf(['primary', 'ghost']),
|
240
|
-
primaryButtonText: _propTypes.default.
|
254
|
+
primaryButtonText: _propTypes.default.node,
|
241
255
|
productive: _propTypes.default.bool,
|
242
256
|
secondaryButtonHref: _propTypes.default.string,
|
243
257
|
secondaryButtonIcon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
|
@@ -45,14 +45,15 @@ exports.ExpressiveCard = ExpressiveCard;
|
|
45
45
|
exports.ExpressiveCard = ExpressiveCard = _settings.pkg.checkComponentEnabled(ExpressiveCard, componentName);
|
46
46
|
ExpressiveCard.propTypes = {
|
47
47
|
/**
|
48
|
-
* Icons that are displayed on card. Refer to design documentation for implementation guidelines
|
48
|
+
* Icons that are displayed on card. Refer to design documentation for implementation guidelines. Note- href will supersede onClick
|
49
49
|
*/
|
50
50
|
actionIcons: _propTypes.default.arrayOf(_propTypes.default.shape({
|
51
51
|
id: _propTypes.default.string,
|
52
52
|
icon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
|
53
53
|
onKeyDown: _propTypes.default.func,
|
54
54
|
onClick: _propTypes.default.func,
|
55
|
-
iconDescription: _propTypes.default.string
|
55
|
+
iconDescription: _propTypes.default.string,
|
56
|
+
href: _propTypes.default.string
|
56
57
|
})),
|
57
58
|
|
58
59
|
/**
|