@kaizen/components 0.0.0-canary-guidance-block-codemod-20251215033932 → 0.0.0-canary-02-titleblock-20251217005236
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/codemods/migrateGuidanceBlockActionsToActionsSlot/transformActionsToActionsSlot.spec.ts +105 -0
- package/codemods/utils/transformV1ButtonPropsToButtonOrLinkButton.ts +4 -14
- package/dist/cjs/src/MenuV1/index.cjs +4 -3
- package/dist/cjs/src/TitleBlock/TitleBlock.cjs +32 -36
- package/dist/cjs/src/TitleBlock/TitleBlock.module.scss.cjs +5 -1
- package/dist/cjs/src/TitleBlock/subcomponents/MainActions.cjs +90 -45
- package/dist/cjs/src/TitleBlock/subcomponents/MainActions.module.scss.cjs +3 -1
- package/dist/cjs/src/TitleBlock/subcomponents/SecondaryActions.cjs +51 -14
- package/dist/esm/src/MenuV1/index.mjs +5 -3
- package/dist/esm/src/TitleBlock/TitleBlock.mjs +33 -37
- package/dist/esm/src/TitleBlock/TitleBlock.module.scss.mjs +5 -1
- package/dist/esm/src/TitleBlock/subcomponents/MainActions.mjs +92 -47
- package/dist/esm/src/TitleBlock/subcomponents/MainActions.module.scss.mjs +3 -1
- package/dist/esm/src/TitleBlock/subcomponents/SecondaryActions.mjs +51 -14
- package/dist/styles.css +87 -210
- package/dist/types/TitleBlock/TitleBlock.d.ts +1 -1
- package/dist/types/TitleBlock/subcomponents/MainActions.d.ts +4 -3
- package/package.json +1 -1
- package/src/Avatar/Avatar.module.css +1 -0
- package/src/TitleBlock/TitleBlock.module.scss +64 -18
- package/src/TitleBlock/TitleBlock.spec.tsx +33 -461
- package/src/TitleBlock/TitleBlock.tsx +7 -24
- package/src/TitleBlock/_docs/TitleBlock.stories.tsx +58 -11
- package/src/TitleBlock/_mixins.scss +6 -0
- package/src/TitleBlock/subcomponents/MainActions.module.scss +19 -2
- package/src/TitleBlock/subcomponents/MainActions.tsx +127 -70
- package/src/TitleBlock/subcomponents/SecondaryActions.tsx +105 -45
- package/src/TitleBlock/subcomponents/Toolbar.tsx +1 -0
- package/dist/cjs/src/MenuV1/subcomponents/MenuHeading/MenuHeading.cjs +0 -27
- package/dist/cjs/src/MenuV1/subcomponents/MenuHeading/MenuHeading.module.scss.cjs +0 -6
- package/dist/cjs/src/TitleBlock/subcomponents/MobileActions.cjs +0 -306
- package/dist/cjs/src/TitleBlock/subcomponents/MobileActions.module.scss.cjs +0 -16
- package/dist/esm/src/MenuV1/subcomponents/MenuHeading/MenuHeading.mjs +0 -21
- package/dist/esm/src/MenuV1/subcomponents/MenuHeading/MenuHeading.module.scss.mjs +0 -4
- package/dist/esm/src/TitleBlock/subcomponents/MobileActions.mjs +0 -300
- package/dist/esm/src/TitleBlock/subcomponents/MobileActions.module.scss.mjs +0 -14
- package/dist/types/TitleBlock/subcomponents/MobileActions.d.ts +0 -14
- package/src/TitleBlock/subcomponents/MobileActions.module.scss +0 -208
- package/src/TitleBlock/subcomponents/MobileActions.spec.tsx +0 -210
- package/src/TitleBlock/subcomponents/MobileActions.tsx +0 -472
package/codemods/migrateGuidanceBlockActionsToActionsSlot/transformActionsToActionsSlot.spec.ts
CHANGED
|
@@ -194,4 +194,109 @@ describe('transformActionsToActionsSlot()', () => {
|
|
|
194
194
|
printAst(outputAst).replace(/\s+/g, ' '),
|
|
195
195
|
)
|
|
196
196
|
})
|
|
197
|
+
|
|
198
|
+
it('removes primary: true and applies variantOverride as secondary for primary actions', () => {
|
|
199
|
+
const inputAst = parseJsx(`
|
|
200
|
+
<GuidanceBlock
|
|
201
|
+
actions={{
|
|
202
|
+
primary: {
|
|
203
|
+
label: 'Action',
|
|
204
|
+
onClick: () => {},
|
|
205
|
+
primary: true,
|
|
206
|
+
},
|
|
207
|
+
}}
|
|
208
|
+
/>`)
|
|
209
|
+
const outputAst = parseJsx(`
|
|
210
|
+
<GuidanceBlock
|
|
211
|
+
actionsSlot={<><Button onPress={() => {}} variant="secondary" size="large" icon={<Icon name="arrow_forward" shouldMirrorInRTL isPresentational/>} iconPosition="end">Action</Button></>}
|
|
212
|
+
/>
|
|
213
|
+
`)
|
|
214
|
+
|
|
215
|
+
expect(transformInput(inputAst)).toBe(printAst(outputAst))
|
|
216
|
+
})
|
|
217
|
+
|
|
218
|
+
it('removes secondary: true and applies variantOverride as secondary for primary actions', () => {
|
|
219
|
+
const inputAst = parseJsx(`
|
|
220
|
+
<GuidanceBlock
|
|
221
|
+
actions={{
|
|
222
|
+
primary: {
|
|
223
|
+
label: 'Action',
|
|
224
|
+
onClick: () => {},
|
|
225
|
+
secondary: true,
|
|
226
|
+
},
|
|
227
|
+
}}
|
|
228
|
+
/>`)
|
|
229
|
+
const outputAst = parseJsx(`
|
|
230
|
+
<GuidanceBlock
|
|
231
|
+
actionsSlot={<><Button onPress={() => {}} variant="secondary" size="large" icon={<Icon name="arrow_forward" shouldMirrorInRTL isPresentational/>} iconPosition="end">Action</Button></>}
|
|
232
|
+
/>
|
|
233
|
+
`)
|
|
234
|
+
|
|
235
|
+
expect(transformInput(inputAst)).toBe(printAst(outputAst))
|
|
236
|
+
})
|
|
237
|
+
|
|
238
|
+
it('removes primary: true and applies variantOverride as tertiary for secondary actions', () => {
|
|
239
|
+
const inputAst = parseJsx(`
|
|
240
|
+
<GuidanceBlock
|
|
241
|
+
actions={{
|
|
242
|
+
secondary: {
|
|
243
|
+
label: 'Secondary Action',
|
|
244
|
+
onClick: () => {},
|
|
245
|
+
primary: true,
|
|
246
|
+
},
|
|
247
|
+
}}
|
|
248
|
+
/>`)
|
|
249
|
+
const outputAst = parseJsx(`
|
|
250
|
+
<GuidanceBlock
|
|
251
|
+
actionsSlot={<><Button onPress={() => {}} variant="tertiary" size="large">Secondary Action</Button></>}
|
|
252
|
+
/>
|
|
253
|
+
`)
|
|
254
|
+
|
|
255
|
+
expect(transformInput(inputAst)).toBe(printAst(outputAst))
|
|
256
|
+
})
|
|
257
|
+
|
|
258
|
+
it('removes secondary: true and applies variantOverride as tertiary for secondary actions', () => {
|
|
259
|
+
const inputAst = parseJsx(`
|
|
260
|
+
<GuidanceBlock
|
|
261
|
+
actions={{
|
|
262
|
+
secondary: {
|
|
263
|
+
label: 'Secondary Action',
|
|
264
|
+
onClick: () => {},
|
|
265
|
+
secondary: true,
|
|
266
|
+
},
|
|
267
|
+
}}
|
|
268
|
+
/>`)
|
|
269
|
+
const outputAst = parseJsx(`
|
|
270
|
+
<GuidanceBlock
|
|
271
|
+
actionsSlot={<><Button onPress={() => {}} variant="tertiary" size="large">Secondary Action</Button></>}
|
|
272
|
+
/>
|
|
273
|
+
`)
|
|
274
|
+
|
|
275
|
+
expect(transformInput(inputAst)).toBe(printAst(outputAst))
|
|
276
|
+
})
|
|
277
|
+
|
|
278
|
+
it('applies correct variants for both primary and secondary actions with primary: true', () => {
|
|
279
|
+
const inputAst = parseJsx(`
|
|
280
|
+
<GuidanceBlock
|
|
281
|
+
actions={{
|
|
282
|
+
primary: {
|
|
283
|
+
label: 'Primary',
|
|
284
|
+
onClick: () => {},
|
|
285
|
+
primary: true,
|
|
286
|
+
},
|
|
287
|
+
secondary: {
|
|
288
|
+
label: 'Secondary',
|
|
289
|
+
onClick: () => {},
|
|
290
|
+
primary: true,
|
|
291
|
+
},
|
|
292
|
+
}}
|
|
293
|
+
/>`)
|
|
294
|
+
const outputAst = parseJsx(`
|
|
295
|
+
<GuidanceBlock
|
|
296
|
+
actionsSlot={<><Button onPress={() => {}} variant="secondary" size="large" icon={<Icon name="arrow_forward" shouldMirrorInRTL isPresentational/>} iconPosition="end">Primary</Button><Button onPress={() => {}} variant="tertiary" size="large">Secondary</Button></>}
|
|
297
|
+
/>
|
|
298
|
+
`)
|
|
299
|
+
|
|
300
|
+
expect(transformInput(inputAst)).toBe(printAst(outputAst))
|
|
301
|
+
})
|
|
197
302
|
})
|
|
@@ -64,9 +64,9 @@ export const transformButtonProp = (
|
|
|
64
64
|
return oldValue ? createStringProp('size', buttonSizeMap[oldValue]) : undefined
|
|
65
65
|
}
|
|
66
66
|
case 'primary':
|
|
67
|
-
return
|
|
67
|
+
return null
|
|
68
68
|
case 'secondary':
|
|
69
|
-
return
|
|
69
|
+
return null
|
|
70
70
|
case 'destructive':
|
|
71
71
|
return null
|
|
72
72
|
default:
|
|
@@ -89,7 +89,6 @@ export const transformV1ButtonPropsToButtonOrLinkButton = (
|
|
|
89
89
|
): TransformButtonProp => {
|
|
90
90
|
let childrenValue: ts.JsxAttributeValue | undefined
|
|
91
91
|
let hasSizeProp = false
|
|
92
|
-
let hasVariant = false
|
|
93
92
|
let hasLinkAttr = false
|
|
94
93
|
let hasIconProp = false
|
|
95
94
|
|
|
@@ -122,10 +121,6 @@ export const transformV1ButtonPropsToButtonOrLinkButton = (
|
|
|
122
121
|
]
|
|
123
122
|
}
|
|
124
123
|
|
|
125
|
-
if (propName === 'primary' || propName === 'secondary' || variantOverride) {
|
|
126
|
-
hasVariant = true
|
|
127
|
-
}
|
|
128
|
-
|
|
129
124
|
if (propName === 'size') {
|
|
130
125
|
hasSizeProp = true
|
|
131
126
|
}
|
|
@@ -179,13 +174,8 @@ export const transformV1ButtonPropsToButtonOrLinkButton = (
|
|
|
179
174
|
return acc
|
|
180
175
|
}, [])
|
|
181
176
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
if (variantOverride) {
|
|
187
|
-
newProps.push(createStringProp('variant', variantOverride))
|
|
188
|
-
}
|
|
177
|
+
// Always add variant from variantOverride, or default to 'secondary'
|
|
178
|
+
newProps.push(createStringProp('variant', variantOverride ?? 'secondary'))
|
|
189
179
|
|
|
190
180
|
if (!hasSizeProp) {
|
|
191
181
|
newProps.push(createStringProp('size', 'large'))
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var Menu$1 = require('./Menu.cjs');
|
|
4
|
-
|
|
4
|
+
require('tslib');
|
|
5
|
+
require('react');
|
|
6
|
+
require('classnames');
|
|
7
|
+
require('../Heading/Heading.cjs');
|
|
5
8
|
var MenuItem$1 = require('./subcomponents/MenuItem/MenuItem.cjs');
|
|
6
9
|
var MenuList$1 = require('./subcomponents/MenuList/MenuList.cjs');
|
|
7
10
|
require('./subcomponents/StatelessMenu/StatelessMenu.cjs');
|
|
8
11
|
|
|
9
12
|
// Since we can't add a deprecation flag on a * export
|
|
10
13
|
var Menu = Menu$1.Menu;
|
|
11
|
-
var MenuHeading = MenuHeading$1.MenuHeading;
|
|
12
14
|
var MenuItem = MenuItem$1.MenuItem;
|
|
13
15
|
var MenuList = MenuList$1.MenuList;
|
|
14
16
|
exports.Menu = Menu;
|
|
15
|
-
exports.MenuHeading = MenuHeading;
|
|
16
17
|
exports.MenuItem = MenuItem;
|
|
17
18
|
exports.MenuList = MenuList;
|
|
@@ -12,7 +12,6 @@ var Select = require('../Select/Select.cjs');
|
|
|
12
12
|
var Tag = require('../Tag/Tag.cjs');
|
|
13
13
|
var useMediaQueries = require('../utils/useMediaQueries.cjs');
|
|
14
14
|
var MainActions = require('./subcomponents/MainActions.cjs');
|
|
15
|
-
var MobileActions = require('./subcomponents/MobileActions.cjs');
|
|
16
15
|
var SecondaryActions = require('./subcomponents/SecondaryActions.cjs');
|
|
17
16
|
var utils = require('./utils.cjs');
|
|
18
17
|
var TitleBlock_module = require('./TitleBlock.module.scss.cjs');
|
|
@@ -117,6 +116,12 @@ var Breadcrumb = function (_a) {
|
|
|
117
116
|
name: "arrow_back",
|
|
118
117
|
isPresentational: true,
|
|
119
118
|
shouldMirrorInRTL: true
|
|
119
|
+
})), React__default.default.createElement("div", {
|
|
120
|
+
className: TitleBlock_module.staticIcon
|
|
121
|
+
}, React__default.default.createElement(Icon.Icon, {
|
|
122
|
+
name: "arrow_back",
|
|
123
|
+
isPresentational: true,
|
|
124
|
+
shouldMirrorInRTL: true
|
|
120
125
|
})), React__default.default.createElement("span", {
|
|
121
126
|
className: TitleBlock_module.breadcrumbTextLink,
|
|
122
127
|
"data-automation-id": textAutomationId,
|
|
@@ -172,7 +177,7 @@ var renderNavigationTabs = function (navigationTabs, collapse, ariaLabel) {
|
|
|
172
177
|
* {@link https://cultureamp.design/?path=/docs/components-titleblock-api-specification--docs Storybook}
|
|
173
178
|
*/
|
|
174
179
|
var TitleBlock = function (_a) {
|
|
175
|
-
var _b, _c, _d
|
|
180
|
+
var _b, _c, _d;
|
|
176
181
|
var title = _a.title,
|
|
177
182
|
variant = _a.variant,
|
|
178
183
|
breadcrumb = _a.breadcrumb,
|
|
@@ -188,32 +193,30 @@ var TitleBlock = function (_a) {
|
|
|
188
193
|
secondaryActions = _a.secondaryActions,
|
|
189
194
|
secondaryOverflowMenuItems = _a.secondaryOverflowMenuItems,
|
|
190
195
|
navigationTabs = _a.navigationTabs,
|
|
191
|
-
|
|
192
|
-
collapseNavigationAreaWhenPossible =
|
|
196
|
+
_e = _a.collapseNavigationAreaWhenPossible,
|
|
197
|
+
collapseNavigationAreaWhenPossible = _e === void 0 ? false : _e,
|
|
193
198
|
textDirection = _a.textDirection,
|
|
194
199
|
surveyStatus = _a.surveyStatus,
|
|
195
200
|
id = _a.id,
|
|
196
|
-
|
|
197
|
-
titleAutomationId =
|
|
198
|
-
|
|
199
|
-
avatarAutomationId =
|
|
200
|
-
|
|
201
|
-
subtitleAutomationId =
|
|
202
|
-
|
|
203
|
-
sectionTitleAutomationId =
|
|
204
|
-
|
|
205
|
-
sectionTitleDescriptionAutomationId =
|
|
206
|
-
|
|
207
|
-
breadcrumbAutomationId =
|
|
208
|
-
|
|
209
|
-
breadcrumbTextAutomationId =
|
|
210
|
-
_p = _a.autoHideMobileActionsMenu,
|
|
211
|
-
autoHideMobileActionsMenu = _p === void 0 ? false : _p;
|
|
201
|
+
_f = _a.titleAutomationId,
|
|
202
|
+
titleAutomationId = _f === void 0 ? 'TitleBlock__Title' : _f,
|
|
203
|
+
_g = _a.avatarAutomationId,
|
|
204
|
+
avatarAutomationId = _g === void 0 ? 'TitleBlock__Avatar' : _g,
|
|
205
|
+
_h = _a.subtitleAutomationId,
|
|
206
|
+
subtitleAutomationId = _h === void 0 ? 'TitleBlock__Subtitle' : _h,
|
|
207
|
+
_j = _a.sectionTitleAutomationId,
|
|
208
|
+
sectionTitleAutomationId = _j === void 0 ? 'TitleBlock__SectionTitle' : _j,
|
|
209
|
+
_k = _a.sectionTitleDescriptionAutomationId,
|
|
210
|
+
sectionTitleDescriptionAutomationId = _k === void 0 ? 'TitleBlock__SectionTitleDescription' : _k,
|
|
211
|
+
_l = _a.breadcrumbAutomationId,
|
|
212
|
+
breadcrumbAutomationId = _l === void 0 ? 'TitleBlock__Breadcrumb' : _l,
|
|
213
|
+
_m = _a.breadcrumbTextAutomationId,
|
|
214
|
+
breadcrumbTextAutomationId = _m === void 0 ? 'TitleBlock__BreadcrumbText' : _m;
|
|
212
215
|
var hasNavigationTabs = navigationTabs && navigationTabs.length > 0;
|
|
213
216
|
var collapseNavigationArea = collapseNavigationAreaWhenPossible && !hasNavigationTabs && secondaryActions === undefined;
|
|
214
|
-
var
|
|
215
|
-
isSmall =
|
|
216
|
-
isMedium =
|
|
217
|
+
var _o = useMediaQueries.useMediaQueries().queries,
|
|
218
|
+
isSmall = _o.isSmall,
|
|
219
|
+
isMedium = _o.isMedium;
|
|
217
220
|
var isSmallOrMediumViewport = isMedium || isSmall;
|
|
218
221
|
return React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement("div", {
|
|
219
222
|
id: id,
|
|
@@ -266,19 +269,19 @@ var TitleBlock = function (_a) {
|
|
|
266
269
|
variant: "secondary",
|
|
267
270
|
reversed: true,
|
|
268
271
|
fullWidth: true
|
|
269
|
-
})))))), ((
|
|
272
|
+
})))))), ((_c = primaryAction !== null && primaryAction !== void 0 ? primaryAction : defaultAction) !== null && _c !== void 0 ? _c : secondaryActions) && React__default.default.createElement(MainActions.MainActions, {
|
|
270
273
|
primaryAction: primaryAction,
|
|
271
274
|
defaultAction: defaultAction,
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
+
secondaryActions: secondaryActions,
|
|
276
|
+
secondaryOverflowMenuItems: secondaryOverflowMenuItems,
|
|
277
|
+
reversed: utils.isReversed(variant)
|
|
275
278
|
})))), React__default.default.createElement("div", {
|
|
276
279
|
className: TitleBlock_module.rowBelowSeparator
|
|
277
280
|
}, React__default.default.createElement("div", {
|
|
278
281
|
className: TitleBlock_module.rowBelowSeparatorInner
|
|
279
282
|
}, React__default.default.createElement("div", {
|
|
280
283
|
className: TitleBlock_module.rowBelowSeparatorInnerContent
|
|
281
|
-
}, ((
|
|
284
|
+
}, ((_d = sectionTitle !== null && sectionTitle !== void 0 ? sectionTitle : sectionTitleDescription) !== null && _d !== void 0 ? _d : renderSectionTitle) && React__default.default.createElement("div", {
|
|
282
285
|
className: TitleBlock_module.sectionTitleContainer
|
|
283
286
|
}, React__default.default.createElement("div", {
|
|
284
287
|
className: TitleBlock_module.sectionTitleInner
|
|
@@ -291,14 +294,7 @@ var TitleBlock = function (_a) {
|
|
|
291
294
|
secondaryActions: secondaryActions,
|
|
292
295
|
secondaryOverflowMenuItems: secondaryOverflowMenuItems,
|
|
293
296
|
reversed: utils.isReversed(variant)
|
|
294
|
-
}))))
|
|
295
|
-
primaryAction: primaryAction,
|
|
296
|
-
defaultAction: defaultAction,
|
|
297
|
-
secondaryActions: secondaryActions,
|
|
298
|
-
secondaryOverflowMenuItems: secondaryOverflowMenuItems,
|
|
299
|
-
drawerHandleLabelIconPosition: primaryAction && 'iconPosition' in primaryAction ? primaryAction.iconPosition : undefined,
|
|
300
|
-
autoHide: autoHideMobileActionsMenu
|
|
301
|
-
})));
|
|
297
|
+
}))))));
|
|
302
298
|
};
|
|
303
299
|
TitleBlock.displayName = 'TitleBlock';
|
|
304
300
|
exports.TitleBlock = TitleBlock;
|
|
@@ -47,9 +47,13 @@ var styles = {
|
|
|
47
47
|
"navigationTabEdgeShadowRight": "TitleBlock-module_navigationTabEdgeShadowRight__xkIWc",
|
|
48
48
|
"navigationTabEdgeShadowLeft": "TitleBlock-module_navigationTabEdgeShadowLeft__9pGhR",
|
|
49
49
|
"secondaryActionsContainer": "TitleBlock-module_secondaryActionsContainer__-4q0l",
|
|
50
|
+
"secondaryOverflowCombinedMenu": "TitleBlock-module_secondaryOverflowCombinedMenu__CTddK",
|
|
51
|
+
"secondaryButtonContainer": "TitleBlock-module_secondaryButtonContainer__xFL9X",
|
|
52
|
+
"secondaryOverflowMenu": "TitleBlock-module_secondaryOverflowMenu__gvmgW",
|
|
50
53
|
"slide-fade": "TitleBlock-module_slide-fade__o5TnP",
|
|
51
54
|
"reverse-slide-fade": "TitleBlock-module_reverse-slide-fade__LZZ98",
|
|
52
55
|
"breadcrumbText": "TitleBlock-module_breadcrumbText__vDi0k",
|
|
53
|
-
"circle": "TitleBlock-module_circle__68z-T"
|
|
56
|
+
"circle": "TitleBlock-module_circle__68z-T",
|
|
57
|
+
"staticIcon": "TitleBlock-module_staticIcon__5jeBS"
|
|
54
58
|
};
|
|
55
59
|
module.exports = styles;
|
|
@@ -6,6 +6,8 @@ var Button = require('../../ButtonV1/Button/Button.cjs');
|
|
|
6
6
|
var IconButton = require('../../ButtonV1/IconButton/IconButton.cjs');
|
|
7
7
|
var Icon = require('../../Icon/Icon.cjs');
|
|
8
8
|
var index = require('../../MenuV1/index.cjs');
|
|
9
|
+
require('../TitleBlock.cjs');
|
|
10
|
+
require('./NavigationTabs.cjs');
|
|
9
11
|
var constants = require('../constants.cjs');
|
|
10
12
|
var utils = require('../utils.cjs');
|
|
11
13
|
var TitleBlockMenuItem = require('./TitleBlockMenuItem.cjs');
|
|
@@ -17,16 +19,94 @@ function _interopDefault(e) {
|
|
|
17
19
|
};
|
|
18
20
|
}
|
|
19
21
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
22
|
+
var renderSecondaryAndOverflowMenu = function (secondaryOverflowMenuItems, reversed) {
|
|
23
|
+
if (!secondaryOverflowMenuItems) return undefined;
|
|
24
|
+
return React__default.default.createElement(index.Menu, {
|
|
25
|
+
align: "right",
|
|
26
|
+
button: React__default.default.createElement(IconButton.IconButton, {
|
|
27
|
+
label: 'Open secondary and overflow menu',
|
|
28
|
+
reversed: reversed,
|
|
29
|
+
icon: React__default.default.createElement(Icon.Icon, {
|
|
30
|
+
name: "more_horiz",
|
|
31
|
+
isPresentational: true
|
|
32
|
+
}),
|
|
33
|
+
id: constants.TITLE_BLOCK_ZEN_SECONDARY_MENU_HTML_ID,
|
|
34
|
+
classNameOverride: MainActions_module.overflowMenuButton
|
|
35
|
+
})
|
|
36
|
+
}, React__default.default.createElement(index.MenuList, null, secondaryOverflowMenuItems.map(function (menuItem, i) {
|
|
37
|
+
return React__default.default.createElement(TitleBlockMenuItem.TitleBlockMenuItem, tslib.__assign({
|
|
38
|
+
key: i
|
|
39
|
+
}, menuItem));
|
|
40
|
+
})));
|
|
41
|
+
};
|
|
20
42
|
var MainActions = function (_a) {
|
|
21
|
-
var _b, _c, _d
|
|
43
|
+
var _b, _c, _d;
|
|
22
44
|
var primaryAction = _a.primaryAction,
|
|
23
45
|
defaultAction = _a.defaultAction,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
showOverflowMenu = _g === void 0 ? false : _g;
|
|
46
|
+
secondaryActions = _a.secondaryActions,
|
|
47
|
+
secondaryOverflowMenuItems = _a.secondaryOverflowMenuItems,
|
|
48
|
+
_e = _a.reversed,
|
|
49
|
+
reversed = _e === void 0 ? false : _e;
|
|
29
50
|
var items;
|
|
51
|
+
// Build combined secondary + overflow menu items once, to be spread into the toolbar items
|
|
52
|
+
var secondaryAndOverflowMenu = [];
|
|
53
|
+
// Convert defaultAction to menu item format and prepend to combined list
|
|
54
|
+
var defaultActionMenuItem;
|
|
55
|
+
if (defaultAction) {
|
|
56
|
+
if ('component' in defaultAction) {
|
|
57
|
+
defaultActionMenuItem = defaultAction;
|
|
58
|
+
} else if ('onClick' in defaultAction) {
|
|
59
|
+
defaultActionMenuItem = {
|
|
60
|
+
label: defaultAction.label,
|
|
61
|
+
icon: defaultAction.icon,
|
|
62
|
+
onClick: defaultAction.onClick,
|
|
63
|
+
disabled: defaultAction.disabled
|
|
64
|
+
};
|
|
65
|
+
} else if ('href' in defaultAction) {
|
|
66
|
+
defaultActionMenuItem = {
|
|
67
|
+
label: defaultAction.label,
|
|
68
|
+
icon: defaultAction.icon,
|
|
69
|
+
href: defaultAction.href,
|
|
70
|
+
disabled: defaultAction.disabled
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
var combinedSecondaryOverflowItems = utils.createTabletOverflowMenuItems(secondaryActions, secondaryOverflowMenuItems);
|
|
75
|
+
// Prepend defaultAction to the combined list if it exists
|
|
76
|
+
var allMenuItems = defaultActionMenuItem ? tslib.__spreadArray([defaultActionMenuItem], combinedSecondaryOverflowItems, true) : combinedSecondaryOverflowItems;
|
|
77
|
+
if (allMenuItems.length > 0) {
|
|
78
|
+
secondaryAndOverflowMenu.push({
|
|
79
|
+
key: 'overflowMenu',
|
|
80
|
+
node: renderSecondaryAndOverflowMenu(allMenuItems, reversed)
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
var defaultActionItem = defaultAction ? [{
|
|
84
|
+
key: 'defaultAction',
|
|
85
|
+
node: React__default.default.createElement(Button.Button, tslib.__assign({
|
|
86
|
+
classNameOverride: MainActions_module.defaultActionButton
|
|
87
|
+
}, defaultAction, {
|
|
88
|
+
reversed: (_b = defaultAction.reversed) !== null && _b !== void 0 ? _b : reversed,
|
|
89
|
+
"data-automation-id": "title-block-default-action-button",
|
|
90
|
+
"data-testid": "title-block-default-action-button"
|
|
91
|
+
}))
|
|
92
|
+
}] : [];
|
|
93
|
+
var defaultActionItemMinimized = defaultAction ? [{
|
|
94
|
+
key: 'defaultActionMinimized',
|
|
95
|
+
node: React__default.default.createElement("div", {
|
|
96
|
+
className: MainActions_module.defaultActionButtonMinimized
|
|
97
|
+
}, React__default.default.createElement(index.Menu, {
|
|
98
|
+
align: "right",
|
|
99
|
+
button: React__default.default.createElement(IconButton.IconButton, {
|
|
100
|
+
label: 'Open default action overflow menu',
|
|
101
|
+
reversed: reversed,
|
|
102
|
+
icon: React__default.default.createElement(Icon.Icon, {
|
|
103
|
+
name: "more_horiz",
|
|
104
|
+
isPresentational: true
|
|
105
|
+
}),
|
|
106
|
+
id: constants.TITLE_BLOCK_ZEN_SECONDARY_MENU_HTML_ID
|
|
107
|
+
})
|
|
108
|
+
}, React__default.default.createElement(index.MenuList, null, defaultActionMenuItem && React__default.default.createElement(TitleBlockMenuItem.TitleBlockMenuItem, tslib.__assign({}, defaultActionMenuItem)))))
|
|
109
|
+
}] : [];
|
|
30
110
|
if (primaryAction && utils.isMenuGroupNotButton(primaryAction)) {
|
|
31
111
|
var menuContent = primaryAction.menuItems.map(function (item, idx) {
|
|
32
112
|
return React__default.default.createElement(TitleBlockMenuItem.TitleBlockMenuItem, tslib.__assign({}, item, {
|
|
@@ -35,14 +115,7 @@ var MainActions = function (_a) {
|
|
|
35
115
|
"data-testid": "main-action-primary-menu-item-".concat(idx)
|
|
36
116
|
}));
|
|
37
117
|
});
|
|
38
|
-
items = tslib.__spreadArray(tslib.__spreadArray([],
|
|
39
|
-
key: 'defaultAction',
|
|
40
|
-
node: React__default.default.createElement(Button.Button, tslib.__assign({}, defaultAction, {
|
|
41
|
-
reversed: (_b = defaultAction.reversed) !== null && _b !== void 0 ? _b : reversed,
|
|
42
|
-
"data-automation-id": "title-block-default-action-button",
|
|
43
|
-
"data-testid": "title-block-default-action-button"
|
|
44
|
-
}))
|
|
45
|
-
}] : [], true), primaryAction ? [{
|
|
118
|
+
items = tslib.__spreadArray(tslib.__spreadArray(tslib.__spreadArray([], defaultActionItem, true), defaultActionItemMinimized, true), primaryAction ? [{
|
|
46
119
|
key: 'primaryAction',
|
|
47
120
|
node: React__default.default.createElement(index.Menu, {
|
|
48
121
|
align: "right",
|
|
@@ -64,18 +137,11 @@ var MainActions = function (_a) {
|
|
|
64
137
|
}, React__default.default.createElement(index.MenuList, null, menuContent))
|
|
65
138
|
}] : [], true);
|
|
66
139
|
} else {
|
|
67
|
-
items = tslib.__spreadArray(tslib.__spreadArray([],
|
|
68
|
-
key: 'defaultAction',
|
|
69
|
-
node: React__default.default.createElement(Button.Button, tslib.__assign({}, defaultAction, {
|
|
70
|
-
reversed: (_c = defaultAction.reversed) !== null && _c !== void 0 ? _c : reversed,
|
|
71
|
-
"data-automation-id": "title-block-default-action-button",
|
|
72
|
-
"data-testid": "title-block-default-action-button"
|
|
73
|
-
}))
|
|
74
|
-
}] : [], true), primaryAction ? [{
|
|
140
|
+
items = tslib.__spreadArray(tslib.__spreadArray(tslib.__spreadArray([], defaultActionItem, true), defaultActionItemMinimized, true), primaryAction ? [{
|
|
75
141
|
key: 'primaryAction',
|
|
76
142
|
node: React__default.default.createElement(Button.Button, tslib.__assign({}, primaryAction, {
|
|
77
|
-
primary: (
|
|
78
|
-
reversed: (
|
|
143
|
+
primary: (_c = primaryAction.primary) !== null && _c !== void 0 ? _c : true,
|
|
144
|
+
reversed: (_d = primaryAction.reversed) !== null && _d !== void 0 ? _d : reversed,
|
|
79
145
|
"data-automation-id": "title-block-primary-action-button",
|
|
80
146
|
"data-testid": "title-block-primary-action-button",
|
|
81
147
|
badge: primaryAction.badge ? tslib.__assign(tslib.__assign({}, primaryAction.badge), {
|
|
@@ -84,27 +150,6 @@ var MainActions = function (_a) {
|
|
|
84
150
|
}))
|
|
85
151
|
}] : [], true);
|
|
86
152
|
}
|
|
87
|
-
if (overflowMenuItems && showOverflowMenu && overflowMenuItems.length > 0) {
|
|
88
|
-
items = tslib.__spreadArray([{
|
|
89
|
-
key: 'overflowMenu',
|
|
90
|
-
node: React__default.default.createElement(index.Menu, {
|
|
91
|
-
align: "right",
|
|
92
|
-
button: React__default.default.createElement(IconButton.IconButton, {
|
|
93
|
-
id: constants.TITLE_BLOCK_ZEN_SECONDARY_MENU_HTML_ID,
|
|
94
|
-
label: "Open secondary menu",
|
|
95
|
-
reversed: reversed,
|
|
96
|
-
icon: React__default.default.createElement(Icon.Icon, {
|
|
97
|
-
name: "more_horiz",
|
|
98
|
-
isPresentational: true
|
|
99
|
-
})
|
|
100
|
-
})
|
|
101
|
-
}, React__default.default.createElement(index.MenuList, null, overflowMenuItems.map(function (menuItem, idx) {
|
|
102
|
-
return React__default.default.createElement(TitleBlockMenuItem.TitleBlockMenuItem, tslib.__assign({}, menuItem, {
|
|
103
|
-
key: "main-action-overflow-item-menu-item-".concat(idx)
|
|
104
|
-
}));
|
|
105
|
-
})))
|
|
106
|
-
}], items, true);
|
|
107
|
-
}
|
|
108
153
|
return React__default.default.createElement("div", {
|
|
109
154
|
className: MainActions_module.mainActionsContainer
|
|
110
155
|
}, React__default.default.createElement(Toolbar.Toolbar, {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var styles = {
|
|
4
|
-
"mainActionsContainer": "MainActions-module_mainActionsContainer__pk-78"
|
|
4
|
+
"mainActionsContainer": "MainActions-module_mainActionsContainer__pk-78",
|
|
5
|
+
"defaultActionButtonMinimized": "MainActions-module_defaultActionButtonMinimized__XePRS",
|
|
6
|
+
"defaultActionButton": "MainActions-module_defaultActionButton__VbER1"
|
|
5
7
|
};
|
|
6
8
|
module.exports = styles;
|
|
@@ -8,6 +8,7 @@ var Icon = require('../../Icon/Icon.cjs');
|
|
|
8
8
|
var index = require('../../MenuV1/index.cjs');
|
|
9
9
|
var TitleBlock_module = require('../TitleBlock.module.scss.cjs');
|
|
10
10
|
var constants = require('../constants.cjs');
|
|
11
|
+
var utils = require('../utils.cjs');
|
|
11
12
|
var TitleBlockMenuItem = require('./TitleBlockMenuItem.cjs');
|
|
12
13
|
var Toolbar = require('./Toolbar.cjs');
|
|
13
14
|
function _interopDefault(e) {
|
|
@@ -17,23 +18,53 @@ function _interopDefault(e) {
|
|
|
17
18
|
}
|
|
18
19
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
19
20
|
var renderSecondaryOverflowMenu = function (secondaryOverflowMenuItems, reversed) {
|
|
20
|
-
if (!secondaryOverflowMenuItems) return undefined;
|
|
21
|
-
return React__default.default.createElement(
|
|
21
|
+
if (!secondaryOverflowMenuItems || secondaryOverflowMenuItems.length === 0) return undefined;
|
|
22
|
+
return React__default.default.createElement("div", {
|
|
23
|
+
className: TitleBlock_module.secondaryOverflowMenu
|
|
24
|
+
}, React__default.default.createElement(index.Menu, {
|
|
25
|
+
align: "right",
|
|
26
|
+
button: React__default.default.createElement(Button.Button, {
|
|
27
|
+
secondary: true,
|
|
28
|
+
reversed: reversed,
|
|
29
|
+
label: "Menu",
|
|
30
|
+
"data-automation-id": constants.TITLE_BLOCK_ZEN_SECONDARY_MENU_HTML_ID,
|
|
31
|
+
"data-testid": constants.TITLE_BLOCK_ZEN_SECONDARY_MENU_HTML_ID,
|
|
32
|
+
icon: React__default.default.createElement(Icon.Icon, {
|
|
33
|
+
name: "keyboard_arrow_down",
|
|
34
|
+
isPresentational: true
|
|
35
|
+
}),
|
|
36
|
+
iconPosition: 'end'
|
|
37
|
+
})
|
|
38
|
+
}, React__default.default.createElement(index.MenuList, null, secondaryOverflowMenuItems.map(function (menuItem, i) {
|
|
39
|
+
return React__default.default.createElement(TitleBlockMenuItem.TitleBlockMenuItem, tslib.__assign({
|
|
40
|
+
key: i
|
|
41
|
+
}, menuItem));
|
|
42
|
+
}))));
|
|
43
|
+
};
|
|
44
|
+
// New: combined overflow menu (secondary actions converted + overflow menu items)
|
|
45
|
+
var renderCombinedSecondaryOverflowMenu = function (secondaryActions, secondaryOverflowMenuItems, reversed) {
|
|
46
|
+
var secondaryConverted = secondaryActions ? utils.convertSecondaryActionsToMenuItems(secondaryActions) : [];
|
|
47
|
+
var overflowItems = secondaryOverflowMenuItems !== null && secondaryOverflowMenuItems !== void 0 ? secondaryOverflowMenuItems : [];
|
|
48
|
+
if (secondaryConverted.length === 0 && overflowItems.length === 0) return undefined;
|
|
49
|
+
var combined = tslib.__spreadArray(tslib.__spreadArray([], secondaryConverted, true), overflowItems, true);
|
|
50
|
+
return React__default.default.createElement("div", {
|
|
51
|
+
className: TitleBlock_module.secondaryOverflowCombinedMenu
|
|
52
|
+
}, React__default.default.createElement(index.Menu, {
|
|
22
53
|
align: "right",
|
|
23
54
|
button: React__default.default.createElement(IconButton.IconButton, {
|
|
24
|
-
label: "Open secondary menu",
|
|
55
|
+
label: "Open combined secondary + overflow menu",
|
|
25
56
|
reversed: reversed,
|
|
26
57
|
icon: React__default.default.createElement(Icon.Icon, {
|
|
27
58
|
name: "more_horiz",
|
|
28
59
|
isPresentational: true
|
|
29
60
|
}),
|
|
30
|
-
id: constants.TITLE_BLOCK_ZEN_SECONDARY_MENU_HTML_ID
|
|
61
|
+
id: "".concat(constants.TITLE_BLOCK_ZEN_SECONDARY_MENU_HTML_ID, "__combined")
|
|
31
62
|
})
|
|
32
|
-
}, React__default.default.createElement(index.MenuList, null,
|
|
63
|
+
}, React__default.default.createElement(index.MenuList, null, combined.map(function (menuItem, i) {
|
|
33
64
|
return React__default.default.createElement(TitleBlockMenuItem.TitleBlockMenuItem, tslib.__assign({
|
|
34
65
|
key: i
|
|
35
66
|
}, menuItem));
|
|
36
|
-
})));
|
|
67
|
+
}))));
|
|
37
68
|
};
|
|
38
69
|
// Unfortunately, you'll notice below, that I needed to use the array index,
|
|
39
70
|
// against react best practices (https://reactjs.org/docs/lists-and-keys.html)
|
|
@@ -47,9 +78,10 @@ var SecondaryActions = function (_a) {
|
|
|
47
78
|
var secondaryActionsAsToolbarItems = secondaryActions ? secondaryActions.map(function (action, i) {
|
|
48
79
|
if ('menuItems' in action) {
|
|
49
80
|
return {
|
|
50
|
-
key: "".concat(i),
|
|
51
|
-
|
|
52
|
-
|
|
81
|
+
key: "titleblock_secondary_action_".concat(i),
|
|
82
|
+
node: React__default.default.createElement("div", {
|
|
83
|
+
className: TitleBlock_module.secondaryButtonContainer
|
|
84
|
+
}, React__default.default.createElement(index.Menu, {
|
|
53
85
|
align: "right",
|
|
54
86
|
button: React__default.default.createElement(Button.Button, {
|
|
55
87
|
secondary: true,
|
|
@@ -65,7 +97,7 @@ var SecondaryActions = function (_a) {
|
|
|
65
97
|
return React__default.default.createElement(TitleBlockMenuItem.TitleBlockMenuItem, tslib.__assign({
|
|
66
98
|
key: i2
|
|
67
99
|
}, menuItem));
|
|
68
|
-
})))
|
|
100
|
+
}))))
|
|
69
101
|
};
|
|
70
102
|
} else {
|
|
71
103
|
if ('onClick' in action && 'href' in action) {
|
|
@@ -74,21 +106,26 @@ var SecondaryActions = function (_a) {
|
|
|
74
106
|
}
|
|
75
107
|
return {
|
|
76
108
|
key: "".concat(i),
|
|
77
|
-
|
|
78
|
-
|
|
109
|
+
node: React__default.default.createElement("div", {
|
|
110
|
+
className: TitleBlock_module.secondaryButtonContainer
|
|
111
|
+
}, React__default.default.createElement(Button.Button, tslib.__assign({
|
|
79
112
|
secondary: true,
|
|
80
113
|
reversed: reversed
|
|
81
114
|
}, action, {
|
|
82
115
|
"data-automation-id": "title-block-secondary-actions-button",
|
|
83
116
|
"data-testid": "title-block-secondary-actions-button"
|
|
84
|
-
}))
|
|
117
|
+
})))
|
|
85
118
|
};
|
|
86
119
|
}
|
|
87
120
|
}) : [];
|
|
88
121
|
var overflowMenu = renderSecondaryOverflowMenu(secondaryOverflowMenuItems, reversed);
|
|
89
|
-
var
|
|
122
|
+
var combinedOverflowMenu = renderCombinedSecondaryOverflowMenu(secondaryActions, secondaryOverflowMenuItems, reversed);
|
|
123
|
+
var toolbarItems = tslib.__spreadArray(tslib.__spreadArray(tslib.__spreadArray([], secondaryActionsAsToolbarItems, true), overflowMenu ? [{
|
|
90
124
|
key: 'overflowMenu',
|
|
91
125
|
node: overflowMenu
|
|
126
|
+
}] : [], true), combinedOverflowMenu ? [{
|
|
127
|
+
key: 'combinedOverflowMenu',
|
|
128
|
+
node: combinedOverflowMenu
|
|
92
129
|
}] : [], true);
|
|
93
130
|
return React__default.default.createElement("div", {
|
|
94
131
|
className: TitleBlock_module.secondaryActionsContainer
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { Menu as Menu$1 } from './Menu.mjs';
|
|
2
|
-
import
|
|
2
|
+
import 'tslib';
|
|
3
|
+
import 'react';
|
|
4
|
+
import 'classnames';
|
|
5
|
+
import '../Heading/Heading.mjs';
|
|
3
6
|
import { MenuItem as MenuItem$1 } from './subcomponents/MenuItem/MenuItem.mjs';
|
|
4
7
|
import { MenuList as MenuList$1 } from './subcomponents/MenuList/MenuList.mjs';
|
|
5
8
|
import './subcomponents/StatelessMenu/StatelessMenu.mjs';
|
|
6
9
|
|
|
7
10
|
// Since we can't add a deprecation flag on a * export
|
|
8
11
|
var Menu = Menu$1;
|
|
9
|
-
var MenuHeading = MenuHeading$1;
|
|
10
12
|
var MenuItem = MenuItem$1;
|
|
11
13
|
var MenuList = MenuList$1;
|
|
12
|
-
export { Menu,
|
|
14
|
+
export { Menu, MenuItem, MenuList };
|