@carbon/ibm-products 2.1.1 → 2.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (153) hide show
  1. package/css/index-full-carbon.css +586 -191
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +3 -3
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +157 -1
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +2 -2
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +344 -20
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +3 -3
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +248 -95
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +3 -3
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/APIKeyModal/APIKeyModal.docs-page.js +26 -0
  18. package/es/components/AboutModal/AboutModal.docs-page.js +21 -0
  19. package/es/components/AboutModal/AboutModal.js +1 -1
  20. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +3 -0
  21. package/es/components/Cascade/Cascade.docs-page.js +22 -0
  22. package/es/components/Cascade/Cascade.js +11 -1
  23. package/es/components/CreateFullPage/CreateFullPage.docs-page.js +39 -0
  24. package/es/components/CreateFullPage/CreateFullPage.js +13 -0
  25. package/es/components/CreateModal/CreateModal.docs-page.js +24 -0
  26. package/es/components/CreateModal/CreateModal.js +7 -0
  27. package/es/components/CreateSidePanel/CreateSidePanel.docs-page.js +18 -0
  28. package/es/components/CreateSidePanel/CreateSidePanel.js +1 -1
  29. package/es/components/CreateTearsheet/CreateTearsheet.docs-page.js +29 -0
  30. package/es/components/DataSpreadsheet/DataSpreadsheet.js +3 -3
  31. package/es/components/Datagrid/Datagrid/DatagridContent.js +1 -1
  32. package/es/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +3 -3
  33. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +3 -2
  34. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +1 -1
  35. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +5 -11
  36. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +12 -10
  37. package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleGridKeyPress.js +2 -2
  38. package/es/components/Datagrid/utils/DatagridActions.js +6 -14
  39. package/es/components/EditFullPage/EditFullPage.docs-page.js +39 -0
  40. package/es/components/EditFullPage/EditFullPage.js +2 -1
  41. package/es/components/EditSidePanel/EditSidePanel.js +1 -1
  42. package/es/components/EditTearsheet/EditTearsheet.docs-page.js +25 -0
  43. package/es/components/EditTearsheet/EditTearsheet.js +4 -0
  44. package/es/components/EditTearsheetNarrow/EditTearsheetNarrow.js +1 -1
  45. package/es/components/EditUpdateCards/EditUpdateCards.js +3 -2
  46. package/es/components/EmptyStates/EmptyState.js +4 -0
  47. package/es/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +4 -0
  48. package/es/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +4 -0
  49. package/es/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +4 -0
  50. package/es/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +4 -0
  51. package/es/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +4 -0
  52. package/es/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +4 -0
  53. package/es/components/ExampleComponent/ExampleComponent.docs-page.js +22 -0
  54. package/es/components/ExportModal/ExportModal.js +4 -0
  55. package/es/components/HTTPErrors/HTTPError403/HTTPError403.js +6 -0
  56. package/es/components/HTTPErrors/HTTPError404/HTTPError404.js +6 -0
  57. package/es/components/HTTPErrors/HTTPErrorOther/HTTPErrorOther.js +6 -0
  58. package/es/components/ImportModal/ImportModal.docs-page.js +18 -0
  59. package/es/components/ImportModal/ImportModal.js +13 -6
  60. package/es/components/MultiAddSelect/MultiAddSelect.docs-page.js +17 -0
  61. package/es/components/MultiAddSelect/MultiAddSelect.js +4 -0
  62. package/es/components/NotificationsPanel/preview-components/UnreadNotificationBell.js +2 -17
  63. package/es/components/PageHeader/PageHeaderUtils.js +2 -2
  64. package/es/components/RemoveModal/RemoveModal.docs-page.js +18 -0
  65. package/es/components/RemoveModal/RemoveModal.js +6 -0
  66. package/es/components/SingleAddSelect/SingleAddSelect.docs-page.js +15 -0
  67. package/es/components/SingleAddSelect/SingleAddSelect.js +4 -0
  68. package/es/components/StatusIcon/StatusIcon.docs-page.js +17 -0
  69. package/es/components/StatusIcon/StatusIcon.js +10 -0
  70. package/es/components/Tearsheet/TearsheetShell.js +11 -6
  71. package/es/components/Toolbar/Toolbar.docs-page.js +14 -0
  72. package/es/components/UserProfileImage/UserProfileImage.docs-page.js +17 -0
  73. package/es/components/UserProfileImage/UserProfileImage.js +1 -1
  74. package/es/components/WebTerminal/WebTerminal.docs-page.js +52 -0
  75. package/es/components/WebTerminal/WebTerminal.js +4 -0
  76. package/es/global/js/hooks/useCreateComponentStepChange.js +16 -15
  77. package/es/global/js/utils/StoryDocsPage.js +218 -0
  78. package/es/global/js/utils/story-helper.js +108 -6
  79. package/lib/components/APIKeyModal/APIKeyModal.docs-page.js +37 -0
  80. package/lib/components/AboutModal/AboutModal.docs-page.js +32 -0
  81. package/lib/components/AboutModal/AboutModal.js +1 -1
  82. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +3 -0
  83. package/lib/components/Cascade/Cascade.docs-page.js +33 -0
  84. package/lib/components/Cascade/Cascade.js +11 -1
  85. package/lib/components/CreateFullPage/CreateFullPage.docs-page.js +50 -0
  86. package/lib/components/CreateFullPage/CreateFullPage.js +13 -0
  87. package/lib/components/CreateModal/CreateModal.docs-page.js +35 -0
  88. package/lib/components/CreateModal/CreateModal.js +7 -0
  89. package/lib/components/CreateSidePanel/CreateSidePanel.docs-page.js +29 -0
  90. package/lib/components/CreateSidePanel/CreateSidePanel.js +1 -1
  91. package/lib/components/CreateTearsheet/CreateTearsheet.docs-page.js +40 -0
  92. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +3 -3
  93. package/lib/components/Datagrid/Datagrid/DatagridContent.js +1 -1
  94. package/lib/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +3 -3
  95. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +3 -2
  96. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +1 -1
  97. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +4 -10
  98. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +12 -10
  99. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleGridKeyPress.js +2 -2
  100. package/lib/components/Datagrid/utils/DatagridActions.js +5 -13
  101. package/lib/components/EditFullPage/EditFullPage.docs-page.js +50 -0
  102. package/lib/components/EditFullPage/EditFullPage.js +2 -1
  103. package/lib/components/EditSidePanel/EditSidePanel.js +1 -1
  104. package/lib/components/EditTearsheet/EditTearsheet.docs-page.js +36 -0
  105. package/lib/components/EditTearsheet/EditTearsheet.js +4 -0
  106. package/lib/components/EditTearsheetNarrow/EditTearsheetNarrow.js +1 -1
  107. package/lib/components/EditUpdateCards/EditUpdateCards.js +3 -2
  108. package/lib/components/EmptyStates/EmptyState.js +4 -0
  109. package/lib/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +4 -0
  110. package/lib/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +4 -0
  111. package/lib/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +4 -0
  112. package/lib/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +4 -0
  113. package/lib/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +4 -0
  114. package/lib/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +4 -0
  115. package/lib/components/ExampleComponent/ExampleComponent.docs-page.js +33 -0
  116. package/lib/components/ExportModal/ExportModal.js +4 -0
  117. package/lib/components/HTTPErrors/HTTPError403/HTTPError403.js +6 -0
  118. package/lib/components/HTTPErrors/HTTPError404/HTTPError404.js +6 -0
  119. package/lib/components/HTTPErrors/HTTPErrorOther/HTTPErrorOther.js +6 -0
  120. package/lib/components/ImportModal/ImportModal.docs-page.js +26 -0
  121. package/lib/components/ImportModal/ImportModal.js +13 -6
  122. package/lib/components/MultiAddSelect/MultiAddSelect.docs-page.js +25 -0
  123. package/lib/components/MultiAddSelect/MultiAddSelect.js +4 -0
  124. package/lib/components/NotificationsPanel/preview-components/UnreadNotificationBell.js +2 -17
  125. package/lib/components/PageHeader/PageHeaderUtils.js +2 -2
  126. package/lib/components/RemoveModal/RemoveModal.docs-page.js +26 -0
  127. package/lib/components/RemoveModal/RemoveModal.js +6 -0
  128. package/lib/components/SingleAddSelect/SingleAddSelect.docs-page.js +23 -0
  129. package/lib/components/SingleAddSelect/SingleAddSelect.js +4 -0
  130. package/lib/components/StatusIcon/StatusIcon.docs-page.js +28 -0
  131. package/lib/components/StatusIcon/StatusIcon.js +10 -0
  132. package/lib/components/Tearsheet/TearsheetShell.js +11 -6
  133. package/lib/components/Toolbar/Toolbar.docs-page.js +25 -0
  134. package/lib/components/UserProfileImage/UserProfileImage.docs-page.js +28 -0
  135. package/lib/components/UserProfileImage/UserProfileImage.js +1 -1
  136. package/lib/components/WebTerminal/WebTerminal.docs-page.js +63 -0
  137. package/lib/components/WebTerminal/WebTerminal.js +4 -0
  138. package/lib/global/js/hooks/useCreateComponentStepChange.js +16 -15
  139. package/lib/global/js/utils/StoryDocsPage.js +225 -0
  140. package/lib/global/js/utils/story-helper.js +115 -7
  141. package/package.json +10 -10
  142. package/scss/components/Cascade/_storybook-styles.scss +3 -2
  143. package/scss/components/DataSpreadsheet/_storybook-styles.scss +6 -0
  144. package/scss/components/Datagrid/_storybook-styles.scss +8 -2
  145. package/scss/components/Datagrid/styles/_datagrid.scss +14 -0
  146. package/scss/components/Datagrid/styles/addons/_FilterFlyout.scss +7 -0
  147. package/scss/components/Datagrid/styles/addons/_FilterPanel.scss +4 -0
  148. package/scss/components/NotificationsPanel/_storybook-styles.scss +10 -2
  149. package/scss/components/PageHeader/_storybook-styles.scss +24 -14
  150. package/scss/components/Tearsheet/_tearsheet.scss +7 -1
  151. package/scss/components/WebTerminal/_storybook-styles.scss +11 -1
  152. package/scss/global/styles/_display-box.scss +1 -0
  153. package/scss/components/HTTPErrors/_storybook-styles.scss +0 -6
@@ -37,6 +37,20 @@ var useCreateComponentStepChange = function useCreateComponentStepChange(_ref) {
37
37
  componentBlockClass = _ref.componentBlockClass,
38
38
  setCreateComponentActions = _ref.setCreateComponentActions,
39
39
  setModalIsOpen = _ref.setModalIsOpen;
40
+ var continueToNextStep = (0, _react.useCallback)(function () {
41
+ setIsSubmitting(false);
42
+ setCurrentStep(function (prev) {
43
+ // Find next included step to render
44
+ // There will always be a next step otherwise we will
45
+ // have reach the onSubmit
46
+ do {
47
+ var _stepData;
48
+ prev++;
49
+ } while (!((_stepData = stepData[prev - 1]) !== null && _stepData !== void 0 && _stepData.shouldIncludeStep));
50
+ return prev;
51
+ });
52
+ }, [setCurrentStep, setIsSubmitting, stepData]);
53
+
40
54
  // useEffect to handle multi step logic
41
55
  (0, _react.useEffect)(function () {
42
56
  var onUnmount = function onUnmount() {
@@ -164,9 +178,9 @@ var useCreateComponentStepChange = function useCreateComponentStepChange(_ref) {
164
178
  // There will always be a previous step otherwise we will
165
179
  // have disabled the back button since we have reached the first visible step
166
180
  do {
167
- var _stepData;
181
+ var _stepData2;
168
182
  prev--;
169
- } while (!((_stepData = stepData[prev - 1]) !== null && _stepData !== void 0 && _stepData.shouldIncludeStep));
183
+ } while (!((_stepData2 = stepData[prev - 1]) !== null && _stepData2 !== void 0 && _stepData2.shouldIncludeStep));
170
184
  return prev;
171
185
  });
172
186
  },
@@ -194,18 +208,5 @@ var useCreateComponentStepChange = function useCreateComponentStepChange(_ref) {
194
208
  setCreateComponentActions(buttons);
195
209
  }
196
210
  }, [firstIncludedStep, lastIncludedStep, stepData, onNext, isSubmitDisabled, backButtonText, cancelButtonText, currentStep, onClose, nextButtonText, submitButtonText, onRequestSubmit, isSubmitting, shouldViewAll, componentBlockClass, componentName, continueToNextStep, setCurrentStep, setCreateComponentActions, setIsSubmitting, setShouldViewAll, setModalIsOpen]);
197
- var continueToNextStep = (0, _react.useCallback)(function () {
198
- setIsSubmitting(false);
199
- setCurrentStep(function (prev) {
200
- // Find next included step to render
201
- // There will always be a next step otherwise we will
202
- // have reach the onSubmit
203
- do {
204
- var _stepData2;
205
- prev++;
206
- } while (!((_stepData2 = stepData[prev - 1]) !== null && _stepData2 !== void 0 && _stepData2.shouldIncludeStep));
207
- return prev;
208
- });
209
- }, [setCurrentStep, setIsSubmitting, stepData]);
210
211
  };
211
212
  exports.useCreateComponentStepChange = useCreateComponentStepChange;
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.StoryDocsPage = exports.CustomBlocks = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _blocks = require("@storybook/blocks");
13
+ var _changeCase = require("change-case");
14
+ var _storyHelper = require("./story-helper");
15
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } /**
17
+ * Copyright IBM Corp. 2023, 2023
18
+ *
19
+ * This source code is licensed under the Apache-2.0 license found in the
20
+ * LICENSE file in the root directory of this source tree.
21
+ */
22
+ var CustomBlocks = function CustomBlocks(_ref) {
23
+ var blocks = _ref.blocks;
24
+ return blocks.map(function (block, index) {
25
+ var source = _objectSpread({}, block === null || block === void 0 ? void 0 : block.source);
26
+ if (source.code && !source.language) {
27
+ source.language = 'jsx';
28
+ }
29
+ return /*#__PURE__*/_react.default.createElement("div", {
30
+ key: "block-index--".concat(index)
31
+ }, block.title && /*#__PURE__*/_react.default.createElement("h3", {
32
+ id: (0, _changeCase.paramCase)(block.title)
33
+ }, block.title), block.subTitle && /*#__PURE__*/_react.default.createElement("h4", null, block.subTitle), block.description && typeof block.description === 'string' ? /*#__PURE__*/_react.default.createElement(_blocks.Description, null, block.description) : block.description, block.story && /*#__PURE__*/_react.default.createElement(_blocks.Canvas, {
34
+ of: block.story
35
+ }), block.source && /*#__PURE__*/_react.default.createElement(_blocks.Source, source));
36
+ });
37
+ };
38
+
39
+ /**
40
+ * This function checks blocks against stories and then
41
+ * - Adds title if no alternative is supplied
42
+ * - Adds blocks for unreferenced stories if omitUnreferencedStories is false
43
+ */
44
+ exports.CustomBlocks = CustomBlocks;
45
+ var processBlocks = function processBlocks(blocks, stories, omitUnreferencedStories) {
46
+ var blocksWithStoryTitles = blocks ? (0, _toConsumableArray2.default)(blocks) : [];
47
+ var restOfStories = [];
48
+ var storyKeys = Object.keys(stories);
49
+ storyKeys.forEach(function (sk) {
50
+ var story = stories[sk].moduleExport;
51
+ var storyName = stories[sk].name;
52
+ var matchingBlock = blocksWithStoryTitles.find(function (block) {
53
+ return block.story === story;
54
+ });
55
+ if (matchingBlock) {
56
+ var _matchingBlock$title;
57
+ matchingBlock.title = (_matchingBlock$title = matchingBlock.title) !== null && _matchingBlock$title !== void 0 ? _matchingBlock$title : storyName;
58
+ } else if (!omitUnreferencedStories) {
59
+ restOfStories.push({
60
+ story: story,
61
+ title: storyName
62
+ });
63
+ }
64
+ });
65
+ if (!omitUnreferencedStories) {
66
+ return blocksWithStoryTitles.concat(restOfStories);
67
+ }
68
+ return blocksWithStoryTitles;
69
+ };
70
+
71
+ /**
72
+ * Calling with no parameters will produce the default output.
73
+ * Customize by providing alternative values and/or blocks defining sections
74
+ * @param {*} param0
75
+ * @returns
76
+ */
77
+ var StoryDocsPage = function StoryDocsPage(_ref2) {
78
+ var _csfFile$meta, _csfFile$meta$paramet, _processedBlocks$filt;
79
+ var altTitle = _ref2.altTitle,
80
+ altDescription = _ref2.altDescription,
81
+ altGuidelinesHref = _ref2.altGuidelinesHref,
82
+ blocks = _ref2.blocks,
83
+ omitCodedExample = _ref2.omitCodedExample,
84
+ omitUnreferencedStories = _ref2.omitUnreferencedStories;
85
+ var _useOf = (0, _blocks.useOf)('meta', ['meta']),
86
+ csfFile = _useOf.csfFile;
87
+ var storyInfo = (0, _storyHelper.storyDocsPageInfo)(csfFile);
88
+ var guidelinesHref = altGuidelinesHref !== null && altGuidelinesHref !== void 0 ? altGuidelinesHref : storyInfo.guidelinesHref;
89
+ var isFullScreen = (csfFile === null || csfFile === void 0 ? void 0 : (_csfFile$meta = csfFile.meta) === null || _csfFile$meta === void 0 ? void 0 : (_csfFile$meta$paramet = _csfFile$meta.parameters) === null || _csfFile$meta$paramet === void 0 ? void 0 : _csfFile$meta$paramet.layout) === 'fullscreen' || false;
90
+ var storyHelperClass = isFullScreen ? 'c4p--story-docs-page--fullscreen' : '';
91
+ var processedBlocks = processBlocks(blocks, csfFile.stories, omitUnreferencedStories);
92
+ console.log(processBlocks);
93
+ var storyCount = (_processedBlocks$filt = processedBlocks === null || processedBlocks === void 0 ? void 0 : processedBlocks.filter(function (block) {
94
+ return !!block.story;
95
+ }).length) !== null && _processedBlocks$filt !== void 0 ? _processedBlocks$filt : 0;
96
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_blocks.Title, null, altTitle !== null && altTitle !== void 0 ? altTitle : storyInfo.title), guidelinesHref ? guidelinesHref && Array.isArray(guidelinesHref) ? guidelinesHref.map(function (_ref3, index) {
97
+ var href = _ref3.href,
98
+ label = _ref3.label;
99
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, index > 0 && ' | ', /*#__PURE__*/_react.default.createElement(_blocks.AnchorMdx, {
100
+ key: href,
101
+ href: href
102
+ }, label));
103
+ }) : /*#__PURE__*/_react.default.createElement(_blocks.AnchorMdx, {
104
+ href: guidelinesHref
105
+ }, altTitle ? "".concat(altTitle, " usage guidelines") : storyInfo.guidelinesLinkLabel) : null, /*#__PURE__*/_react.default.createElement("h2", {
106
+ style: {
107
+ marginTop: guidelinesHref ? '16px' : ''
108
+ }
109
+ }, "Table of contents"), /*#__PURE__*/_react.default.createElement("ul", null, ['Overview', 'Coded examples', 'Example usage', 'Component API'].map(function (item) {
110
+ return /*#__PURE__*/_react.default.createElement("li", {
111
+ key: item
112
+ }, /*#__PURE__*/_react.default.createElement(_blocks.AnchorMdx, {
113
+ href: "#".concat((0, _changeCase.paramCase)(item))
114
+ }, item), processedBlocks && item === 'Example usage' ? /*#__PURE__*/_react.default.createElement("ul", null, processedBlocks.map(function (block) {
115
+ return block !== null && block !== void 0 && block.title ? /*#__PURE__*/_react.default.createElement("li", {
116
+ key: block.title
117
+ }, /*#__PURE__*/_react.default.createElement(_blocks.AnchorMdx, {
118
+ href: "#".concat((0, _changeCase.paramCase)(block.title))
119
+ }, block.title)) : null;
120
+ })) : null);
121
+ })), /*#__PURE__*/_react.default.createElement("h2", {
122
+ id: "overview"
123
+ }, "Overview"), /*#__PURE__*/_react.default.createElement(_blocks.Description, null, altDescription), !omitCodedExample && storyInfo.expectCodedExample ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h2", {
124
+ id: "coded-examples"
125
+ }, "Coded examples"), /*#__PURE__*/_react.default.createElement("p", null, "Coded examples can be edited and are a great way to try out a component."), /*#__PURE__*/_react.default.createElement("ul", null, /*#__PURE__*/_react.default.createElement("li", {
126
+ key: "codesandbox"
127
+ }, /*#__PURE__*/_react.default.createElement(_blocks.AnchorMdx, {
128
+ href: (0, _storyHelper.codeSandboxHref)(storyInfo.title)
129
+ }, /*#__PURE__*/_react.default.createElement("svg", {
130
+ viewBox: "0 0 24 24",
131
+ xmlns: "http://www.w3.org/2000/svg",
132
+ style: {
133
+ height: '16px',
134
+ width: '16px',
135
+ color: 'black',
136
+ boxShadow: '0 0 0 2px white',
137
+ marginRight: '8px',
138
+ verticalAlign: '-2px'
139
+ }
140
+ }, /*#__PURE__*/_react.default.createElement("path", {
141
+ fillRule: "evenodd",
142
+ clipRule: "evenodd",
143
+ d: "M0 0h23.987v24H0V0Zm21.533 2.455v19.09H2.453V2.456h19.08Z",
144
+ fill: "currentColor"
145
+ })), "CodeSandbox")), /*#__PURE__*/_react.default.createElement("li", {
146
+ key: "stackblitz"
147
+ }, /*#__PURE__*/_react.default.createElement(_blocks.AnchorMdx, {
148
+ href: (0, _storyHelper.stackblitzHref)(storyInfo.title)
149
+ }, /*#__PURE__*/_react.default.createElement("img", {
150
+ src: "https://c.staticblitz.com/assets/favicon_sb-861fe1b85c0dc928750c62de15fed96fc75e57ee366bd937bad17a3938917b3f.svg",
151
+ alt: "Stackblitz logo",
152
+ style: {
153
+ verticalAlign: '-2px',
154
+ marginRight: '8px'
155
+ }
156
+ }), "Stackblitz")))) : null, /*#__PURE__*/_react.default.createElement("h2", {
157
+ id: "example-usage"
158
+ }, "Example usage"), /*#__PURE__*/_react.default.createElement("div", {
159
+ className: storyHelperClass
160
+ }, processedBlocks ? /*#__PURE__*/_react.default.createElement(CustomBlocks, {
161
+ blocks: processedBlocks
162
+ }) : /*#__PURE__*/_react.default.createElement(_blocks.Stories, null)), /*#__PURE__*/_react.default.createElement("h2", {
163
+ id: "component-api"
164
+ }, "Component API"), storyCount > 1 && /*#__PURE__*/_react.default.createElement("p", null, "NOTE: Changing the controls below affects the default/primary example shown on the docs page."), /*#__PURE__*/_react.default.createElement(_blocks.Controls, null));
165
+ };
166
+ exports.StoryDocsPage = StoryDocsPage;
167
+ StoryDocsPage.propTypes = {
168
+ /**
169
+ * Uses doc block from the component where possible.
170
+ *
171
+ * Note: use `export default { component: ExampleComponent }` in the story if the main component is wrapped by some
172
+ * additional code. This will allow the doc block to pass through.
173
+ *
174
+ * If passed as string treated as markdown.
175
+ */
176
+ altDescription: _propTypes.default.node,
177
+ /**
178
+ * location if any of guidelines on the PAL site, constructed by default
179
+ */
180
+ altGuidelinesHref: _propTypes.default.oneOfType(_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.shape({
181
+ href: _propTypes.default.string,
182
+ label: _propTypes.default.string
183
+ }))),
184
+ /**
185
+ * Uses component name by default
186
+ */
187
+ altTitle: _propTypes.default.string,
188
+ /**
189
+ * Array with content sections
190
+ */
191
+ blocks: _propTypes.default.arrayOf(_propTypes.default.shape({
192
+ /**
193
+ * Optional title story name used by default<h3>
194
+ */
195
+ title: _propTypes.default.string,
196
+ /**
197
+ * Optional subTitle a <h4>
198
+ */
199
+ subTitle: _propTypes.default.string,
200
+ /**
201
+ * Optional description, strings treated as markdown.
202
+ */
203
+ description: _propTypes.default.node,
204
+ /**
205
+ * Story imported from story file
206
+ */
207
+ story: _propTypes.default.func,
208
+ /**
209
+ * Some source code
210
+ * default language `jsx`
211
+ */
212
+ source: _propTypes.default.shape({
213
+ language: _propTypes.default.oneOf('javascript', 'css', 'jsx'),
214
+ code: _propTypes.default.string
215
+ })
216
+ })),
217
+ /**
218
+ * Set to true if no published example exists (all components and patterns should have an example)
219
+ */
220
+ omitCodedExample: _propTypes.default.bool,
221
+ /**
222
+ * Stories unreferenced in blocks included by default
223
+ */
224
+ omitUnreferencedStories: _propTypes.default.bool
225
+ };
@@ -4,12 +4,15 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.prepareStory = exports.getStoryTitle = exports.getStoryId = exports.getSelectedCarbonTheme = exports.StackblitzLink = exports.CodesandboxLink = void 0;
7
+ exports.storyDocsPageTitle = exports.storyDocsPageInfo = exports.storyDocsGuidelines = exports.stackblitzHref = exports.prepareStory = exports.palUsageHref = exports.getStoryTitle = exports.getStoryId = exports.getSelectedCarbonTheme = exports.codeSandboxHref = exports.StackblitzLink = exports.CodesandboxLink = void 0;
8
+ var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
8
10
  var _react = _interopRequireDefault(require("react"));
9
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
12
  var _csf = require("@storybook/csf");
11
13
  var _packageSettings = _interopRequireDefault(require("../package-settings"));
12
14
  var _storyStructure = require("../../../../../core/story-structure");
15
+ var _changeCase = require("change-case");
13
16
  //
14
17
  // Copyright IBM Corp. 2021, 2021
15
18
  //
@@ -73,12 +76,15 @@ var prepareStory = function prepareStory(template, options) {
73
76
  */
74
77
  exports.prepareStory = prepareStory;
75
78
  var packagePath = 'github/carbon-design-system/ibm-products/tree/main/examples/carbon-for-ibm-products';
79
+ var codeSandboxHref = function codeSandboxHref(exampleDirectory) {
80
+ return "https://codesandbox.io/p/sandbox/".concat(packagePath, "/").concat(exampleDirectory, "?file=%2Fsrc%2FExample%2FExample.jsx");
81
+ };
82
+ exports.codeSandboxHref = codeSandboxHref;
76
83
  var CodesandboxLink = function CodesandboxLink(_ref) {
77
84
  var exampleDirectory = _ref.exampleDirectory;
78
- // const stackblitz = `https://stackblitz.com/${packagePath}/${dir}?file=src%2FExample%2FExample.jsx`;
79
- var codesandbox = "https://codesandbox.io/p/sandbox/".concat(packagePath, "/").concat(exampleDirectory, "?file=%2Fsrc%2FExample%2FExample.jsx");
85
+ var href = codeSandboxHref(exampleDirectory);
80
86
  return /*#__PURE__*/_react.default.createElement("a", {
81
- href: codesandbox
87
+ href: href
82
88
  }, /*#__PURE__*/_react.default.createElement("img", {
83
89
  alt: "Edit on CodeSandbox",
84
90
  src: "https://codesandbox.io/static/img/play-codesandbox.svg"
@@ -91,11 +97,15 @@ CodesandboxLink.propTypes = {
91
97
  */
92
98
  exampleDirectory: _propTypes.default.string
93
99
  };
100
+ var stackblitzHref = function stackblitzHref(exampleDirectory) {
101
+ return "https://stackblitz.com/".concat(packagePath, "/").concat(exampleDirectory, "?file=src%2FExample%2FExample.jsx");
102
+ };
103
+ exports.stackblitzHref = stackblitzHref;
94
104
  var StackblitzLink = function StackblitzLink(_ref2) {
95
105
  var exampleDirectory = _ref2.exampleDirectory;
96
- var stackblitz = "https://stackblitz.com/".concat(packagePath, "/").concat(exampleDirectory, "?file=src%2FExample%2FExample.jsx");
106
+ var href = stackblitzHref(exampleDirectory);
97
107
  return /*#__PURE__*/_react.default.createElement("a", {
98
- href: stackblitz
108
+ href: href
99
109
  }, /*#__PURE__*/_react.default.createElement("img", {
100
110
  alt: "Edit on Stackblitz",
101
111
  src: "https://c.staticblitz.com/assets/favicon_sb-861fe1b85c0dc928750c62de15fed96fc75e57ee366bd937bad17a3938917b3f.svg"
@@ -108,13 +118,111 @@ StackblitzLink.propTypes = {
108
118
  */
109
119
  exampleDirectory: _propTypes.default.string
110
120
  };
121
+ var palUsageHref = function palUsageHref(csfFile) {
122
+ var _csfFile$meta;
123
+ var title = csfFile === null || csfFile === void 0 ? void 0 : (_csfFile$meta = csfFile.meta) === null || _csfFile$meta === void 0 ? void 0 : _csfFile$meta.title;
124
+ var _title$split = title.split('/'),
125
+ _title$split2 = (0, _slicedToArray2.default)(_title$split, 3),
126
+ _pkg = _title$split2[0],
127
+ kind = _title$split2[1],
128
+ section = _title$split2[2];
129
+ if (/components|patterns/i.test(kind) && name) {
130
+ return "https://pages.github.ibm.com/cdai-design/pal/".concat(kind, "s/").concat((0, _changeCase.paramCase)(section), "/usage");
131
+ }
132
+ };
133
+ exports.palUsageHref = palUsageHref;
134
+ var storyDocsPageTitle = function storyDocsPageTitle(csfFile) {
135
+ var _csfFile$meta2;
136
+ var title = csfFile === null || csfFile === void 0 ? void 0 : (_csfFile$meta2 = csfFile.meta) === null || _csfFile$meta2 === void 0 ? void 0 : _csfFile$meta2.title;
137
+ var _title$split3 = title.split('/'),
138
+ _title$split4 = (0, _toArray2.default)(_title$split3),
139
+ _pkg = _title$split4[0],
140
+ kind = _title$split4[1],
141
+ a = _title$split4[2],
142
+ b = _title$split4[3],
143
+ rest = _title$split4.slice(4);
144
+ var component;
145
+ if (/components|patterns/i.test(kind)) {
146
+ // components and patterns have an additional level
147
+ component = b;
148
+ } else {
149
+ component = a;
150
+ }
151
+ var name = component.split('#')[0]; // canary always written as Example#canary};
152
+
153
+ if (name) {
154
+ if (rest.length > 0) {
155
+ return "".concat(name, " (").concat(rest.join(' '), ")");
156
+ } else {
157
+ return name;
158
+ }
159
+ }
160
+ console.error('Error: unable to parse title from metadata.');
161
+ return title;
162
+ };
163
+ exports.storyDocsPageTitle = storyDocsPageTitle;
164
+ var storyDocsPageInfo = function storyDocsPageInfo(csfFile) {
165
+ var _csfFile$meta3;
166
+ var title = csfFile === null || csfFile === void 0 ? void 0 : (_csfFile$meta3 = csfFile.meta) === null || _csfFile$meta3 === void 0 ? void 0 : _csfFile$meta3.title;
167
+ var _title$split5 = title.split('/'),
168
+ _title$split6 = (0, _toArray2.default)(_title$split5),
169
+ pkg = _title$split6[0],
170
+ kind = _title$split6[1],
171
+ a = _title$split6[2],
172
+ b = _title$split6[3],
173
+ rest = _title$split6.slice(4);
174
+ var result = {
175
+ package: pkg,
176
+ kind: kind,
177
+ expectCodedExample: false
178
+ };
179
+ var component;
180
+ if (/components|patterns/i.test(kind)) {
181
+ result.expectCodedExample = true;
182
+ // components and patterns have an additional level
183
+ component = b;
184
+ result.section = a;
185
+ result.guidelinesHref = "https://pages.github.ibm.com/cdai-design/pal/".concat(kind, "s/").concat((0, _changeCase.paramCase)(result.section), "/usage");
186
+ } else {
187
+ component = a;
188
+ }
189
+ var nameSplit = component.split('#'); // canary always written as Example#canary};
190
+ var name = nameSplit[0];
191
+ if (nameSplit.length > 1 && nameSplit[1] === 'canary') {
192
+ result.canary = true;
193
+ }
194
+ if (name) {
195
+ if (rest.length > 0) {
196
+ result.component = result.title = "".concat(name, " (").concat(rest.join(' '), ")");
197
+ } else {
198
+ result.component = name;
199
+ result.title = name;
200
+ }
201
+ } else {
202
+ console.error('Error: unable to parse title from metadata.');
203
+ result.title = title;
204
+ }
205
+ if (result.guidelinesHref) {
206
+ result.guidelinesLinkLabel = "".concat(result.title, " usage guidelines");
207
+ }
208
+ return result;
209
+ };
210
+ exports.storyDocsPageInfo = storyDocsPageInfo;
211
+ var storyDocsGuidelines = function storyDocsGuidelines(csfFile) {
212
+ var storyInfo = storyDocsPageInfo(csfFile);
213
+ return {
214
+ href: storyInfo.guidelinesHref,
215
+ label: storyInfo.guidelinesLinkLabel
216
+ };
217
+ };
111
218
 
112
219
  /**
113
220
  * A helper function that finds the designated theme on the Storybook canvas.
114
221
  * @returns "dark" or "light"
115
222
  */
223
+ exports.storyDocsGuidelines = storyDocsGuidelines;
116
224
  var getSelectedCarbonTheme = function getSelectedCarbonTheme() {
117
- var themeId = document.querySelector('html').getAttribute('storybook-carbon-theme');
225
+ var themeId = document.querySelector('[storybook-carbon-theme]').getAttribute('storybook-carbon-theme');
118
226
  return themeId === 'g90' || themeId === 'g100' ? 'dark' : 'light';
119
227
  };
120
228
  exports.getSelectedCarbonTheme = getSelectedCarbonTheme;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/ibm-products",
3
3
  "description": "Carbon for IBM Products",
4
- "version": "2.1.1",
4
+ "version": "2.1.3",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -56,7 +56,7 @@
56
56
  "devDependencies": {
57
57
  "@babel/cli": "^7.21.5",
58
58
  "@babel/core": "^7.22.1",
59
- "babel-preset-ibm-cloud-cognitive": "^0.14.35",
59
+ "babel-preset-ibm-cloud-cognitive": "^0.14.36",
60
60
  "chalk": "^4.1.2",
61
61
  "change-case": "^4.1.2",
62
62
  "copyfiles": "^2.4.1",
@@ -64,7 +64,7 @@
64
64
  "fs-extra": "^11.1.1",
65
65
  "glob": "^10.2.6",
66
66
  "jest": "^29.5.0",
67
- "jest-config-ibm-cloud-cognitive": "^0.24.22",
67
+ "jest-config-ibm-cloud-cognitive": "^0.24.23",
68
68
  "jest-environment-jsdom": "^29.5.0",
69
69
  "namor": "^1.1.2",
70
70
  "npm-check-updates": "^16.10.12",
@@ -85,14 +85,14 @@
85
85
  "react-window": "^1.8.9"
86
86
  },
87
87
  "peerDependencies": {
88
- "@carbon/grid": "^11.14.0",
89
- "@carbon/layout": "^11.14.0",
90
- "@carbon/motion": "^11.11.0",
91
- "@carbon/react": "~1.30.0",
92
- "@carbon/themes": "^11.19.0",
93
- "@carbon/type": "^11.18.0",
88
+ "@carbon/grid": "^11.15.0",
89
+ "@carbon/layout": "^11.15.0",
90
+ "@carbon/motion": "^11.12.0",
91
+ "@carbon/react": "~1.31.3",
92
+ "@carbon/themes": "^11.20.0",
93
+ "@carbon/type": "^11.19.0",
94
94
  "react": "^16.8.6 || ^17.0.1",
95
95
  "react-dom": "^16.8.6 || ^17.0.1"
96
96
  },
97
- "gitHead": "30b5fa97e450c8587e04b5e2e1be98c9a7379d45"
97
+ "gitHead": "8fb7c59793ba9325124d55ae01191adb45acff4e"
98
98
  }
@@ -8,8 +8,9 @@
8
8
  @use '@carbon/styles/scss/theme' as *;
9
9
  @use '@carbon/styles/scss/spacing' as *;
10
10
 
11
- #root {
12
- width: 100%;
11
+ #storybook-docs .docs-story {
12
+ /* stylelint-disable-next-line carbon/layout-token-use */
13
+ padding: 30px 0;
13
14
  }
14
15
 
15
16
  .box {
@@ -4,3 +4,9 @@
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
+
8
+ $story-anchor: 'data-spreadsheet';
9
+ div[id*='#{$story-anchor}'] .docs-story > div:first-child > div:first-child {
10
+ overflow: auto;
11
+ width: 100%;
12
+ }
@@ -1,5 +1,5 @@
1
1
  //
2
- // Copyright IBM Corp. 2022, 2022
2
+ // Copyright IBM Corp. 2022, 2023
3
3
  //
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.
@@ -20,7 +20,7 @@ $block-class: #{c4p-settings.$pkg-prefix}--datagrid;
20
20
  height: 100vh;
21
21
  }
22
22
 
23
- .sb-show-main.sb-main-centered #root {
23
+ .sb-show-main.sb-main-centered #storybook-root {
24
24
  width: 100%;
25
25
  height: 100vh;
26
26
  padding: $spacing-07;
@@ -122,3 +122,9 @@ $block-class: #{c4p-settings.$pkg-prefix}--datagrid;
122
122
  width: 100vw;
123
123
  }
124
124
  }
125
+
126
+ $story-anchor: 'datagrid';
127
+ div[id*='#{$story-anchor}'] .docs-story > div:first-child > div:first-child {
128
+ overflow: auto;
129
+ width: 100%;
130
+ }
@@ -631,3 +631,17 @@
631
631
  .#{c4p-settings.$carbon-prefix}--btn.#{c4p-settings.$pkg-prefix}--button-menu {
632
632
  padding: 0;
633
633
  }
634
+
635
+ // TODO: Revisit batch action list button and button icon alignment after
636
+ // https: //github.com/carbon-design-system/carbon/issues/14021 is fixed
637
+ .#{$block-class}
638
+ .#{c4p-settings.$carbon-prefix}--action-list
639
+ .#{c4p-settings.$carbon-prefix}--btn {
640
+ align-items: center;
641
+ }
642
+
643
+ .#{$block-class}
644
+ .#{c4p-settings.$carbon-prefix}--action-list
645
+ .#{c4p-settings.$carbon-prefix}--btn__icon {
646
+ margin-top: 0;
647
+ }
@@ -75,6 +75,13 @@ $action-set-height: rem(64px);
75
75
  }
76
76
 
77
77
  // Carbon overrides
78
+ .#{variables.$block-class}-filter-flyout__trigger.#{c4p-settings.$carbon-prefix}--btn {
79
+ display: flex;
80
+ width: 3rem;
81
+ height: 3rem;
82
+ justify-content: center;
83
+ }
84
+
78
85
  .#{variables.$block-class}-filter-flyout__trigger--open.#{c4p-settings.$carbon-prefix}--btn.#{c4p-settings.$carbon-prefix}--btn--icon-only {
79
86
  position: relative;
80
87
  background-color: $layer-02;
@@ -124,6 +124,10 @@
124
124
  }
125
125
 
126
126
  .#{c4p-settings.$carbon-prefix}--btn.c4p--datagrid-filter-panel-open-button {
127
+ display: flex;
128
+ width: 3rem;
129
+ height: 3rem;
130
+ justify-content: center;
127
131
  border-right: 1px solid $layer-accent-01;
128
132
  border-bottom: none;
129
133
  }
@@ -10,6 +10,14 @@
10
10
 
11
11
  $storybook-block-class: #{c4p-settings.$pkg-prefix}--notifications-panel__story;
12
12
 
13
- .#{$storybook-block-class}--header {
14
- @include theme(themes.$g100);
13
+ .#{$storybook-block-class}--full-height {
14
+ height: 100vh;
15
+ max-height: var(--doc-story-height); // set in core if needed;
16
+ }
17
+
18
+ .#{$storybook-block-class}__add {
19
+ display: flex;
20
+ height: 100%;
21
+ align-items: center;
22
+ justify-content: center;
15
23
  }
@@ -15,15 +15,6 @@
15
15
 
16
16
  $story-class: 'page-header-stories';
17
17
 
18
- // cspell:disable-next-line
19
- .sbdocs .#{$story-class}__viewport {
20
- max-height: 500px;
21
- background-color: $background;
22
- box-shadow: 0 0 4px 1px $layer-accent-01;
23
- color: $text-primary;
24
- overflow-y: auto;
25
- }
26
-
27
18
  .#{$story-class}__content-switcher {
28
19
  justify-content: flex-start;
29
20
  }
@@ -66,15 +57,34 @@ $story-class: 'page-header-stories';
66
57
  flex-direction: column;
67
58
  }
68
59
 
69
- .#{$story-class}__app--whole-page-scroll {
60
+ .#{$story-class}__viewport {
70
61
  overflow: hidden;
62
+ height: 100vh;
71
63
  }
72
64
 
73
- .#{$story-class}__content-container {
74
- height: 100%;
75
- padding: 0;
65
+ .#{$story-class}__viewport--scroll {
66
+ overflow-y: auto;
76
67
  }
77
68
 
78
- .#{$story-class}__app--whole-page-scroll .#{$story-class}__content-container {
69
+ .#{$story-class}__viewport .#{$story-class}__content-container {
70
+ height: 100%;
79
71
  overflow-y: auto;
80
72
  }
73
+
74
+ .#{$story-class}__viewport
75
+ .#{$story-class}__content-container--with-global-header {
76
+ height: calc(100% - #{$spacing-09});
77
+ margin-top: $spacing-09;
78
+ }
79
+
80
+ .#{$story-class}__viewport--scroll .#{$story-class}__content-container {
81
+ overflow-y: initial;
82
+ }
83
+
84
+ // cspell:disable-next-line
85
+ .sbdocs .#{$story-class}__viewport {
86
+ max-height: 50vh;
87
+ background-color: $background;
88
+ box-shadow: 0 0 4px 1px $layer-accent-01;
89
+ color: $text-primary;
90
+ }