@mongodb-js/compass-components 1.32.1 → 1.32.2
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/lib/components/actions/action-glyph.d.ts +11 -0
- package/lib/components/actions/action-glyph.d.ts.map +1 -0
- package/lib/components/actions/action-glyph.js +19 -0
- package/lib/components/actions/action-glyph.js.map +1 -0
- package/lib/components/actions/constants.d.ts +7 -0
- package/lib/components/actions/constants.d.ts.map +1 -0
- package/lib/components/actions/constants.js +9 -0
- package/lib/components/actions/constants.js.map +1 -0
- package/lib/components/actions/dropdown-menu-button.d.ts +19 -0
- package/lib/components/actions/dropdown-menu-button.d.ts.map +1 -0
- package/lib/components/actions/dropdown-menu-button.js +75 -0
- package/lib/components/actions/dropdown-menu-button.js.map +1 -0
- package/lib/components/actions/item-action-button.d.ts +4 -0
- package/lib/components/actions/item-action-button.d.ts.map +1 -0
- package/lib/components/actions/item-action-button.js +22 -0
- package/lib/components/actions/item-action-button.js.map +1 -0
- package/lib/components/actions/item-action-controls.d.ts +20 -0
- package/lib/components/actions/item-action-controls.d.ts.map +1 -0
- package/lib/components/actions/item-action-controls.js +85 -0
- package/lib/components/actions/item-action-controls.js.map +1 -0
- package/lib/components/actions/item-action-group.d.ts +19 -0
- package/lib/components/actions/item-action-group.d.ts.map +1 -0
- package/lib/components/actions/item-action-group.js +69 -0
- package/lib/components/actions/item-action-group.js.map +1 -0
- package/lib/components/actions/item-action-menu.d.ts +20 -0
- package/lib/components/actions/item-action-menu.d.ts.map +1 -0
- package/lib/components/actions/item-action-menu.js +89 -0
- package/lib/components/actions/item-action-menu.js.map +1 -0
- package/lib/components/actions/small-icon-button.d.ts +11 -0
- package/lib/components/actions/small-icon-button.d.ts.map +1 -0
- package/lib/components/actions/small-icon-button.js +66 -0
- package/lib/components/actions/small-icon-button.js.map +1 -0
- package/lib/components/actions/types.d.ts +32 -0
- package/lib/components/actions/types.d.ts.map +1 -0
- package/lib/components/actions/types.js +3 -0
- package/lib/components/actions/types.js.map +1 -0
- package/lib/components/actions/utils.d.ts +2 -0
- package/lib/components/actions/utils.d.ts.map +1 -0
- package/lib/components/actions/utils.js +8 -0
- package/lib/components/actions/utils.js.map +1 -0
- package/lib/components/combobox-with-custom-option.d.ts +1 -1
- package/lib/components/combobox-with-custom-option.d.ts.map +1 -1
- package/lib/components/combobox-with-custom-option.js +3 -3
- package/lib/components/combobox-with-custom-option.js.map +1 -1
- package/lib/components/document-list/element-actions.d.ts.map +1 -1
- package/lib/components/document-list/element-actions.js +1 -1
- package/lib/components/document-list/element-actions.js.map +1 -1
- package/lib/components/document-list/element-editors.d.ts.map +1 -1
- package/lib/components/document-list/element-editors.js +12 -5
- package/lib/components/document-list/element-editors.js.map +1 -1
- package/lib/components/document-list/element.d.ts.map +1 -1
- package/lib/components/document-list/element.js +10 -3
- package/lib/components/document-list/element.js.map +1 -1
- package/lib/components/feedback-popover.d.ts +2 -5
- package/lib/components/feedback-popover.d.ts.map +1 -1
- package/lib/components/feedback-popover.js +1 -5
- package/lib/components/feedback-popover.js.map +1 -1
- package/lib/components/file-input.js +3 -3
- package/lib/components/file-input.js.map +1 -1
- package/lib/components/guide-cue/guide-cue.d.ts +1 -2
- package/lib/components/guide-cue/guide-cue.d.ts.map +1 -1
- package/lib/components/guide-cue/guide-cue.js +1 -3
- package/lib/components/guide-cue/guide-cue.js.map +1 -1
- package/lib/components/interactive-popover.d.ts +4 -4
- package/lib/components/interactive-popover.d.ts.map +1 -1
- package/lib/components/interactive-popover.js +1 -1
- package/lib/components/interactive-popover.js.map +1 -1
- package/lib/components/leafygreen.d.ts +4 -54
- package/lib/components/leafygreen.d.ts.map +1 -1
- package/lib/components/leafygreen.js +7 -6
- package/lib/components/leafygreen.js.map +1 -1
- package/lib/components/links/link.d.ts +7 -7
- package/lib/components/tab-nav-bar.d.ts.map +1 -1
- package/lib/components/tab-nav-bar.js +8 -1
- package/lib/components/tab-nav-bar.js.map +1 -1
- package/lib/components/virtual-list.d.ts +3 -5
- package/lib/components/virtual-list.d.ts.map +1 -1
- package/lib/components/virtual-list.js +2 -2
- package/lib/components/virtual-list.js.map +1 -1
- package/lib/components/workspace-tabs/tab.d.ts +2 -3
- package/lib/components/workspace-tabs/tab.d.ts.map +1 -1
- package/lib/components/workspace-tabs/tab.js.map +1 -1
- package/lib/components/workspace-tabs/workspace-tabs.d.ts +2 -2
- package/lib/components/workspace-tabs/workspace-tabs.d.ts.map +1 -1
- package/lib/hooks/use-confirmation.d.ts +0 -1
- package/lib/hooks/use-confirmation.d.ts.map +1 -1
- package/lib/hooks/use-confirmation.js +0 -1
- package/lib/hooks/use-confirmation.js.map +1 -1
- package/lib/hooks/use-stacked-component.d.ts +1 -6
- package/lib/hooks/use-stacked-component.d.ts.map +1 -1
- package/lib/hooks/use-stacked-component.js +9 -28
- package/lib/hooks/use-stacked-component.js.map +1 -1
- package/lib/hooks/use-virtual-list-item-observer.d.ts +2 -4
- package/lib/hooks/use-virtual-list-item-observer.d.ts.map +1 -1
- package/lib/hooks/use-virtual-list-item-observer.js +1 -1
- package/lib/hooks/use-virtual-list-item-observer.js.map +1 -1
- package/lib/index.d.ts +9 -6
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +8 -9
- package/lib/index.js.map +1 -1
- package/package.json +47 -49
- package/lib/components/combobox/Chip.d.ts +0 -4
- package/lib/components/combobox/Chip.d.ts.map +0 -1
- package/lib/components/combobox/Chip.js +0 -230
- package/lib/components/combobox/Chip.js.map +0 -1
- package/lib/components/combobox/Combobox.d.ts +0 -48
- package/lib/components/combobox/Combobox.d.ts.map +0 -1
- package/lib/components/combobox/Combobox.js +0 -1029
- package/lib/components/combobox/Combobox.js.map +0 -1
- package/lib/components/combobox/Combobox.styles.d.ts +0 -53
- package/lib/components/combobox/Combobox.styles.d.ts.map +0 -1
- package/lib/components/combobox/Combobox.styles.js +0 -294
- package/lib/components/combobox/Combobox.styles.js.map +0 -1
- package/lib/components/combobox/Combobox.types.d.ts +0 -295
- package/lib/components/combobox/Combobox.types.d.ts.map +0 -1
- package/lib/components/combobox/Combobox.types.js +0 -66
- package/lib/components/combobox/Combobox.types.js.map +0 -1
- package/lib/components/combobox/ComboboxContext.d.ts +0 -21
- package/lib/components/combobox/ComboboxContext.d.ts.map +0 -1
- package/lib/components/combobox/ComboboxContext.js +0 -19
- package/lib/components/combobox/ComboboxContext.js.map +0 -1
- package/lib/components/combobox/ComboboxGroup.d.ts +0 -15
- package/lib/components/combobox/ComboboxGroup.d.ts.map +0 -1
- package/lib/components/combobox/ComboboxGroup.js +0 -84
- package/lib/components/combobox/ComboboxGroup.js.map +0 -1
- package/lib/components/combobox/ComboboxMenu/ComboboxMenu.d.ts +0 -9
- package/lib/components/combobox/ComboboxMenu/ComboboxMenu.d.ts.map +0 -1
- package/lib/components/combobox/ComboboxMenu/ComboboxMenu.js +0 -91
- package/lib/components/combobox/ComboboxMenu/ComboboxMenu.js.map +0 -1
- package/lib/components/combobox/ComboboxMenu/Menu.styles.d.ts +0 -26
- package/lib/components/combobox/ComboboxMenu/Menu.styles.d.ts.map +0 -1
- package/lib/components/combobox/ComboboxMenu/Menu.styles.js +0 -119
- package/lib/components/combobox/ComboboxMenu/Menu.styles.js.map +0 -1
- package/lib/components/combobox/ComboboxOption.d.ts +0 -20
- package/lib/components/combobox/ComboboxOption.d.ts.map +0 -1
- package/lib/components/combobox/ComboboxOption.js +0 -272
- package/lib/components/combobox/ComboboxOption.js.map +0 -1
- package/lib/components/combobox/Menu.styles.d.ts +0 -22
- package/lib/components/combobox/Menu.styles.d.ts.map +0 -1
- package/lib/components/combobox/Menu.styles.js +0 -102
- package/lib/components/combobox/Menu.styles.js.map +0 -1
- package/lib/components/combobox/index.d.ts +0 -6
- package/lib/components/combobox/index.d.ts.map +0 -1
- package/lib/components/combobox/index.js +0 -15
- package/lib/components/combobox/index.js.map +0 -1
- package/lib/components/combobox/utils/OptionObjectUtils.d.ts +0 -23
- package/lib/components/combobox/utils/OptionObjectUtils.d.ts.map +0 -1
- package/lib/components/combobox/utils/OptionObjectUtils.js +0 -40
- package/lib/components/combobox/utils/OptionObjectUtils.js.map +0 -1
- package/lib/components/combobox/utils/flattenChildren.d.ts +0 -12
- package/lib/components/combobox/utils/flattenChildren.d.ts.map +0 -1
- package/lib/components/combobox/utils/flattenChildren.js +0 -47
- package/lib/components/combobox/utils/flattenChildren.js.map +0 -1
- package/lib/components/combobox/utils/getNameAndValue.d.ts +0 -15
- package/lib/components/combobox/utils/getNameAndValue.d.ts.map +0 -1
- package/lib/components/combobox/utils/getNameAndValue.js +0 -24
- package/lib/components/combobox/utils/getNameAndValue.js.map +0 -1
- package/lib/components/combobox/utils/index.d.ts +0 -5
- package/lib/components/combobox/utils/index.d.ts.map +0 -1
- package/lib/components/combobox/utils/index.js +0 -14
- package/lib/components/combobox/utils/index.js.map +0 -1
- package/lib/components/combobox/utils/wrapJSX.d.ts +0 -15
- package/lib/components/combobox/utils/wrapJSX.d.ts.map +0 -1
- package/lib/components/combobox/utils/wrapJSX.js +0 -53
- package/lib/components/combobox/utils/wrapJSX.js.map +0 -1
- package/lib/components/item-action-controls.d.ts +0 -87
- package/lib/components/item-action-controls.d.ts.map +0 -1
- package/lib/components/item-action-controls.js +0 -239
- package/lib/components/item-action-controls.js.map +0 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Icon } from '../leafygreen';
|
|
3
|
+
import type { ItemActionButtonSize } from './constants';
|
|
4
|
+
type IconProps = React.ComponentProps<typeof Icon>;
|
|
5
|
+
type ActionGlyphProps = Omit<IconProps, 'size' | 'glyph'> & {
|
|
6
|
+
glyph?: React.ReactChild;
|
|
7
|
+
size?: ItemActionButtonSize;
|
|
8
|
+
};
|
|
9
|
+
export declare const ActionGlyph: ({ glyph, size, ...props }: ActionGlyphProps) => React.JSX.Element | null;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=action-glyph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-glyph.d.ts","sourceRoot":"","sources":["../../../src/components/actions/action-glyph.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAKxD,KAAK,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC;AACnD,KAAK,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IAC1D,KAAK,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;IACzB,IAAI,CAAC,EAAE,oBAAoB,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,WAAW,8BAA+B,gBAAgB,6BAUtE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ActionGlyph = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const leafygreen_1 = require("../leafygreen");
|
|
9
|
+
const ActionGlyph = ({ glyph, size, ...props }) => {
|
|
10
|
+
if (typeof glyph === 'string') {
|
|
11
|
+
return react_1.default.createElement(leafygreen_1.Icon, { size: size, glyph: glyph, ...props });
|
|
12
|
+
}
|
|
13
|
+
if (react_1.default.isValidElement(glyph)) {
|
|
14
|
+
return glyph;
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
};
|
|
18
|
+
exports.ActionGlyph = ActionGlyph;
|
|
19
|
+
//# sourceMappingURL=action-glyph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-glyph.js","sourceRoot":"","sources":["../../../src/components/actions/action-glyph.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,8CAAqC;AAY9B,MAAM,WAAW,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAoB,EAAE,EAAE;IACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,8BAAC,iBAAI,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,KAAM,KAAK,GAAI,CAAC;KACtD;IAED,IAAI,eAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QAC/B,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAVW,QAAA,WAAW,eAUtB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const ItemActionButtonSize: {
|
|
2
|
+
readonly XSmall: "xsmall";
|
|
3
|
+
readonly Small: "small";
|
|
4
|
+
readonly Default: "default";
|
|
5
|
+
};
|
|
6
|
+
export type ItemActionButtonSize = typeof ItemActionButtonSize[keyof typeof ItemActionButtonSize];
|
|
7
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/components/actions/constants.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAC9B,OAAO,oBAAoB,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/components/actions/constants.tsx"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG;IAClC,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;CACV,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ButtonProps } from '@leafygreen-ui/button';
|
|
3
|
+
import type { RenderMode } from '@leafygreen-ui/popover';
|
|
4
|
+
import { ItemActionButtonSize } from './constants';
|
|
5
|
+
import { type MenuAction } from './item-action-menu';
|
|
6
|
+
export type DropdownMenuButtonProps<Action extends string> = {
|
|
7
|
+
actions: MenuAction<Action>[];
|
|
8
|
+
onAction(actionName: Action): void;
|
|
9
|
+
renderMode?: RenderMode;
|
|
10
|
+
iconSize?: ItemActionButtonSize;
|
|
11
|
+
isVisible?: boolean;
|
|
12
|
+
activeAction?: Action;
|
|
13
|
+
'data-testid'?: string;
|
|
14
|
+
buttonText: string;
|
|
15
|
+
buttonProps: ButtonProps;
|
|
16
|
+
hideOnNarrow?: boolean;
|
|
17
|
+
};
|
|
18
|
+
export declare function DropdownMenuButton<Action extends string>({ isVisible, actions, onAction, renderMode, activeAction, buttonText, buttonProps, iconSize, 'data-testid': dataTestId, hideOnNarrow, }: DropdownMenuButtonProps<Action>): React.JSX.Element | null;
|
|
19
|
+
//# sourceMappingURL=dropdown-menu-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-menu-button.d.ts","sourceRoot":"","sources":["../../../src/components/actions/dropdown-menu-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAKzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAyB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAS5E,MAAM,MAAM,uBAAuB,CAAC,MAAM,SAAS,MAAM,IAAI;IAC3D,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,MAAM,EAAE,EACxD,SAAgB,EAChB,OAAO,EACP,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,QAAuC,EACvC,aAAa,EAAE,UAAU,EACzB,YAAmB,GACpB,EAAE,uBAAuB,CAAC,MAAM,CAAC,4BAmFjC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.DropdownMenuButton = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const emotion_1 = require("@leafygreen-ui/emotion");
|
|
29
|
+
const leafygreen_1 = require("../leafygreen");
|
|
30
|
+
const workspace_container_1 = require("../workspace-container");
|
|
31
|
+
const constants_1 = require("./constants");
|
|
32
|
+
const utils_1 = require("./utils");
|
|
33
|
+
const action_glyph_1 = require("./action-glyph");
|
|
34
|
+
const item_action_menu_1 = require("./item-action-menu");
|
|
35
|
+
const hiddenOnNarrowStyles = (0, emotion_1.css)({
|
|
36
|
+
[`@container ${workspace_container_1.WorkspaceContainer.toolbarContainerQueryName} (width < 900px)`]: {
|
|
37
|
+
display: 'none',
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
function DropdownMenuButton({ isVisible = true, actions, onAction, renderMode, activeAction, buttonText, buttonProps, iconSize = constants_1.ItemActionButtonSize.Default, 'data-testid': dataTestId, hideOnNarrow = true, }) {
|
|
41
|
+
// this ref is used by the Menu component to calculate the height and position
|
|
42
|
+
// of the menu, and by us to give back the focus to the trigger when the menu
|
|
43
|
+
// is closed (https://jira.mongodb.org/browse/PD-1674).
|
|
44
|
+
const menuTriggerRef = (0, react_1.useRef)(null);
|
|
45
|
+
const [isMenuOpen, setIsMenuOpen] = (0, react_1.useState)(false);
|
|
46
|
+
const onClick = (0, react_1.useCallback)((evt) => {
|
|
47
|
+
evt.stopPropagation();
|
|
48
|
+
if (evt.currentTarget.dataset.menuitem) {
|
|
49
|
+
setIsMenuOpen(false);
|
|
50
|
+
// Workaround for https://jira.mongodb.org/browse/PD-1674
|
|
51
|
+
menuTriggerRef.current?.focus();
|
|
52
|
+
}
|
|
53
|
+
onAction(evt.currentTarget.dataset.action);
|
|
54
|
+
}, [onAction]);
|
|
55
|
+
const shouldRender = isMenuOpen || (isVisible && actions.length > 0);
|
|
56
|
+
if (!shouldRender) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
return (react_1.default.createElement(leafygreen_1.Menu, { open: isMenuOpen, setOpen: setIsMenuOpen, justify: "start", refEl: menuTriggerRef, renderMode: renderMode, "data-testid": dataTestId, trigger: ({ onClick, children, }) => {
|
|
60
|
+
return (react_1.default.createElement(leafygreen_1.Button, { ...buttonProps, ref: menuTriggerRef, "data-testid": dataTestId ? `${dataTestId}-show-actions` : undefined, onClick: (evt) => {
|
|
61
|
+
evt.stopPropagation();
|
|
62
|
+
onClick && onClick(evt);
|
|
63
|
+
}, rightGlyph: react_1.default.createElement(leafygreen_1.Icon, { glyph: 'CaretDown' }), title: buttonText },
|
|
64
|
+
react_1.default.createElement("span", { className: hideOnNarrow ? hiddenOnNarrowStyles : undefined }, buttonText),
|
|
65
|
+
children));
|
|
66
|
+
} }, actions.map((menuAction, idx) => {
|
|
67
|
+
if ((0, item_action_menu_1.isSeparatorMenuAction)(menuAction)) {
|
|
68
|
+
return react_1.default.createElement(leafygreen_1.MenuSeparator, { key: `separator-${idx}` });
|
|
69
|
+
}
|
|
70
|
+
const { action, label, icon } = menuAction;
|
|
71
|
+
return (react_1.default.createElement(leafygreen_1.MenuItem, { active: activeAction === action, key: action, "data-testid": (0, utils_1.actionTestId)(dataTestId, action), "data-action": action, "data-menuitem": true, glyph: react_1.default.createElement(action_glyph_1.ActionGlyph, { glyph: icon, size: iconSize }), onClick: onClick }, label));
|
|
72
|
+
})));
|
|
73
|
+
}
|
|
74
|
+
exports.DropdownMenuButton = DropdownMenuButton;
|
|
75
|
+
//# sourceMappingURL=dropdown-menu-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-menu-button.js","sourceRoot":"","sources":["../../../src/components/actions/dropdown-menu-button.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ItemComponentProps } from './types';
|
|
3
|
+
export declare function ItemActionButton<Action extends string>({ action, icon, label, tooltip, iconSize, onClick, iconClassName, className, iconStyle, isDisabled, 'data-testid': dataTestId, }: ItemComponentProps<Action>): React.JSX.Element;
|
|
4
|
+
//# sourceMappingURL=item-action-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-action-button.d.ts","sourceRoot":"","sources":["../../../src/components/actions/item-action-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAUlD,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,MAAM,EAAE,EACtD,MAAM,EACN,IAAY,EACZ,KAAK,EACL,OAAO,EACP,QAAuC,EACvC,OAAO,EACP,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,aAAa,EAAE,UAAU,GAC1B,EAAE,kBAAkB,CAAC,MAAM,CAAC,qBAgB5B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ItemActionButton = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const emotion_1 = require("@leafygreen-ui/emotion");
|
|
9
|
+
const tokens_1 = require("@leafygreen-ui/tokens");
|
|
10
|
+
const constants_1 = require("./constants");
|
|
11
|
+
const small_icon_button_1 = require("./small-icon-button");
|
|
12
|
+
// TODO: Move to a parent component - or a flex gap
|
|
13
|
+
const buttonStyle = (0, emotion_1.css)({
|
|
14
|
+
'&:not(:first-child)': {
|
|
15
|
+
marginLeft: tokens_1.spacing[100],
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
function ItemActionButton({ action, icon = react_1.default.createElement(react_1.default.Fragment, null), label, tooltip, iconSize = constants_1.ItemActionButtonSize.Default, onClick, iconClassName, className, iconStyle, isDisabled, 'data-testid': dataTestId, }) {
|
|
19
|
+
return (react_1.default.createElement(small_icon_button_1.SmallIconButton, { key: action, glyph: icon, label: label, title: !tooltip ? label : undefined, size: iconSize, "data-action": action, "data-testid": dataTestId, onClick: onClick, className: (0, emotion_1.cx)(buttonStyle, iconClassName, className), style: iconStyle, disabled: isDisabled }));
|
|
20
|
+
}
|
|
21
|
+
exports.ItemActionButton = ItemActionButton;
|
|
22
|
+
//# sourceMappingURL=item-action-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-action-button.js","sourceRoot":"","sources":["../../../src/components/actions/item-action-button.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,oDAAiD;AACjD,kDAAgD;AAEhD,2CAAmD;AAEnD,2DAAsD;AAEtD,mDAAmD;AACnD,MAAM,WAAW,GAAG,IAAA,aAAG,EAAC;IACtB,qBAAqB,EAAE;QACrB,UAAU,EAAE,gBAAO,CAAC,GAAG,CAAC;KACzB;CACF,CAAC,CAAC;AAEH,SAAgB,gBAAgB,CAAwB,EACtD,MAAM,EACN,IAAI,GAAG,6DAAK,EACZ,KAAK,EACL,OAAO,EACP,QAAQ,GAAG,gCAAoB,CAAC,OAAO,EACvC,OAAO,EACP,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,aAAa,EAAE,UAAU,GACE;IAC3B,OAAO,CACL,8BAAC,mCAAe,IACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,IAAI,EACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACnC,IAAI,EAAE,QAAQ,iBACD,MAAM,iBACN,UAAU,EACvB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,IAAA,YAAE,EAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,EACpD,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,UAAU,GACpB,CACH,CAAC;AACJ,CAAC;AA5BD,4CA4BC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { RenderMode } from '@leafygreen-ui/popover';
|
|
3
|
+
import { ItemActionButtonSize } from './constants';
|
|
4
|
+
import type { ItemAction, ItemSeparator } from './types';
|
|
5
|
+
export type ItemActionControlsProps<Action extends string> = {
|
|
6
|
+
isVisible?: boolean;
|
|
7
|
+
actions: (ItemAction<Action> | ItemSeparator)[];
|
|
8
|
+
onAction(actionName: Action): void;
|
|
9
|
+
className?: string;
|
|
10
|
+
menuClassName?: string;
|
|
11
|
+
iconSize?: ItemActionButtonSize;
|
|
12
|
+
iconClassName?: string;
|
|
13
|
+
iconStyle?: React.CSSProperties;
|
|
14
|
+
collapseAfter?: number;
|
|
15
|
+
collapseToMenuThreshold?: number;
|
|
16
|
+
renderMode?: RenderMode;
|
|
17
|
+
'data-testid'?: string;
|
|
18
|
+
};
|
|
19
|
+
export declare function ItemActionControls<Action extends string>({ isVisible, actions, onAction, className, menuClassName, iconClassName, iconStyle, iconSize, renderMode, collapseAfter, collapseToMenuThreshold, 'data-testid': dataTestId, }: ItemActionControlsProps<Action>): React.JSX.Element | null;
|
|
20
|
+
//# sourceMappingURL=item-action-controls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-action-controls.d.ts","sourceRoot":"","sources":["../../../src/components/actions/item-action-controls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAiBzD,MAAM,MAAM,uBAAuB,CAAC,MAAM,SAAS,MAAM,IAAI;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAEhC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,MAAM,EAAE,EACxD,SAAgB,EAChB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,EACb,SAAS,EACT,QAAuC,EACvC,UAAU,EACV,aAAiB,EACjB,uBAA2B,EAC3B,aAAa,EAAE,UAAU,GAC1B,EAAE,uBAAuB,CAAC,MAAM,CAAC,4BAoEjC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.ItemActionControls = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const tokens_1 = require("@leafygreen-ui/tokens");
|
|
29
|
+
const emotion_1 = require("@leafygreen-ui/emotion");
|
|
30
|
+
const item_action_menu_1 = require("./item-action-menu");
|
|
31
|
+
const constants_1 = require("./constants");
|
|
32
|
+
const item_action_group_1 = require("./item-action-group");
|
|
33
|
+
const actionControlsStyle = (0, emotion_1.css)({
|
|
34
|
+
flex: 'none',
|
|
35
|
+
marginLeft: 'auto',
|
|
36
|
+
alignItems: 'center',
|
|
37
|
+
display: 'flex',
|
|
38
|
+
});
|
|
39
|
+
// Action buttons are rendered 4px apart from each other. With this we keep the
|
|
40
|
+
// same spacing also when action buttons are rendered alongside action menu
|
|
41
|
+
// (happens when collapseAfter prop is specified)
|
|
42
|
+
const actionMenuWithActionControlsStyles = (0, emotion_1.css)({
|
|
43
|
+
marginLeft: tokens_1.spacing[100],
|
|
44
|
+
});
|
|
45
|
+
function ItemActionControls({ isVisible = true, actions, onAction, className, menuClassName, iconClassName, iconStyle, iconSize = constants_1.ItemActionButtonSize.Default, renderMode, collapseAfter = 0, collapseToMenuThreshold = 2, 'data-testid': dataTestId, }) {
|
|
46
|
+
const sharedProps = (0, react_1.useMemo)(() => ({
|
|
47
|
+
isVisible,
|
|
48
|
+
onAction,
|
|
49
|
+
className: (0, emotion_1.cx)('item-action-controls', className),
|
|
50
|
+
iconClassName,
|
|
51
|
+
iconStyle,
|
|
52
|
+
iconSize,
|
|
53
|
+
'data-testid': dataTestId,
|
|
54
|
+
}), [
|
|
55
|
+
isVisible,
|
|
56
|
+
onAction,
|
|
57
|
+
className,
|
|
58
|
+
iconClassName,
|
|
59
|
+
iconStyle,
|
|
60
|
+
iconSize,
|
|
61
|
+
dataTestId,
|
|
62
|
+
]);
|
|
63
|
+
const sharedMenuProps = (0, react_1.useMemo)(() => ({
|
|
64
|
+
menuClassName,
|
|
65
|
+
renderMode,
|
|
66
|
+
}), [menuClassName, renderMode]);
|
|
67
|
+
if (actions.length === 0) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
// When user wants to show a few actions and collapse the rest into a menu
|
|
71
|
+
if (collapseAfter > 0) {
|
|
72
|
+
const visibleActions = actions.slice(0, collapseAfter);
|
|
73
|
+
const collapsedActions = actions.slice(collapseAfter);
|
|
74
|
+
return (react_1.default.createElement("div", { className: actionControlsStyle },
|
|
75
|
+
react_1.default.createElement(item_action_group_1.ItemActionGroup, { actions: visibleActions, ...sharedProps }),
|
|
76
|
+
react_1.default.createElement(item_action_menu_1.ItemActionMenu, { actions: collapsedActions, ...sharedProps, ...sharedMenuProps, className: (0, emotion_1.cx)(actionMenuWithActionControlsStyles, sharedProps.className) })));
|
|
77
|
+
}
|
|
78
|
+
const shouldShowMenu = actions.length >= collapseToMenuThreshold;
|
|
79
|
+
if (shouldShowMenu) {
|
|
80
|
+
return (react_1.default.createElement(item_action_menu_1.ItemActionMenu, { actions: actions, ...sharedProps, ...sharedMenuProps }));
|
|
81
|
+
}
|
|
82
|
+
return react_1.default.createElement(item_action_group_1.ItemActionGroup, { actions: actions, ...sharedProps });
|
|
83
|
+
}
|
|
84
|
+
exports.ItemActionControls = ItemActionControls;
|
|
85
|
+
//# sourceMappingURL=item-action-controls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-action-controls.js","sourceRoot":"","sources":["../../../src/components/actions/item-action-controls.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAuC;AACvC,kDAAgD;AAChD,oDAAiD;AAGjD,yDAAoD;AACpD,2CAAmD;AAEnD,2DAAsD;AAEtD,MAAM,mBAAmB,GAAG,IAAA,aAAG,EAAC;IAC9B,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE,QAAQ;IACpB,OAAO,EAAE,MAAM;CAChB,CAAC,CAAC;AAEH,+EAA+E;AAC/E,2EAA2E;AAC3E,iDAAiD;AACjD,MAAM,kCAAkC,GAAG,IAAA,aAAG,EAAC;IAC7C,UAAU,EAAE,gBAAO,CAAC,GAAG,CAAC;CACzB,CAAC,CAAC;AAmBH,SAAgB,kBAAkB,CAAwB,EACxD,SAAS,GAAG,IAAI,EAChB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,EACb,SAAS,EACT,QAAQ,GAAG,gCAAoB,CAAC,OAAO,EACvC,UAAU,EACV,aAAa,GAAG,CAAC,EACjB,uBAAuB,GAAG,CAAC,EAC3B,aAAa,EAAE,UAAU,GACO;IAChC,MAAM,WAAW,GAAG,IAAA,eAAO,EACzB,GAAG,EAAE,CAAC,CAAC;QACL,SAAS;QACT,QAAQ;QACR,SAAS,EAAE,IAAA,YAAE,EAAC,sBAAsB,EAAE,SAAS,CAAC;QAChD,aAAa;QACb,SAAS;QACT,QAAQ;QACR,aAAa,EAAE,UAAU;KAC1B,CAAC,EACF;QACE,SAAS;QACT,QAAQ;QACR,SAAS;QACT,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACX,CACF,CAAC;IACF,MAAM,eAAe,GAAG,IAAA,eAAO,EAC7B,GAAG,EAAE,CAAC,CAAC;QACL,aAAa;QACb,UAAU;KACX,CAAC,EACF,CAAC,aAAa,EAAE,UAAU,CAAC,CAC5B,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,OAAO,IAAI,CAAC;KACb;IAED,0EAA0E;IAC1E,IAAI,aAAa,GAAG,CAAC,EAAE;QACrB,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QACvD,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACtD,OAAO,CACL,uCAAK,SAAS,EAAE,mBAAmB;YACjC,8BAAC,mCAAe,IACd,OAAO,EAAE,cAAc,KACnB,WAAW,GACE;YACnB,8BAAC,iCAAc,IACb,OAAO,EAAE,gBAAgB,KACrB,WAAW,KACX,eAAe,EACnB,SAAS,EAAE,IAAA,YAAE,EACX,kCAAkC,EAClC,WAAW,CAAC,SAAS,CACtB,GACe,CACd,CACP,CAAC;KACH;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,IAAI,uBAAuB,CAAC;IAEjE,IAAI,cAAc,EAAE;QAClB,OAAO,CACL,8BAAC,iCAAc,IACb,OAAO,EAAE,OAAO,KACZ,WAAW,KACX,eAAe,GACH,CACnB,CAAC;KACH;IAED,OAAO,8BAAC,mCAAe,IAAC,OAAO,EAAE,OAAO,KAAM,WAAW,GAAoB,CAAC;AAChF,CAAC;AAjFD,gDAiFC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Tooltip } from '../leafygreen';
|
|
3
|
+
import { ItemActionButtonSize } from './constants';
|
|
4
|
+
import type { ItemAction, ItemSeparator } from './types';
|
|
5
|
+
export type GroupedItemAction<Action extends string> = ItemAction<Action> & {
|
|
6
|
+
tooltipProps?: Parameters<typeof Tooltip>;
|
|
7
|
+
};
|
|
8
|
+
export type ItemActionGroupProps<Action extends string> = {
|
|
9
|
+
actions: (GroupedItemAction<Action> | ItemSeparator)[];
|
|
10
|
+
onAction(actionName: Action): void;
|
|
11
|
+
className?: string;
|
|
12
|
+
iconClassName?: string;
|
|
13
|
+
iconStyle?: React.CSSProperties;
|
|
14
|
+
iconSize?: ItemActionButtonSize;
|
|
15
|
+
isVisible?: boolean;
|
|
16
|
+
'data-testid'?: string;
|
|
17
|
+
};
|
|
18
|
+
export declare function ItemActionGroup<Action extends string>({ actions, onAction, className, iconClassName, iconStyle, iconSize, isVisible, 'data-testid': dataTestId, }: ItemActionGroupProps<Action>): React.JSX.Element | null;
|
|
19
|
+
//# sourceMappingURL=item-action-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-action-group.d.ts","sourceRoot":"","sources":["../../../src/components/actions/item-action-group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAI3C,OAAO,EAAiB,OAAO,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAKzD,MAAM,MAAM,iBAAiB,CAAC,MAAM,SAAS,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG;IAC1E,YAAY,CAAC,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;CAC3C,CAAC;AAgBF,MAAM,MAAM,oBAAoB,CAAC,MAAM,SAAS,MAAM,IAAI;IACxD,OAAO,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAChC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,eAAe,CAAC,MAAM,SAAS,MAAM,EAAE,EACrD,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAAa,EACb,SAAS,EACT,QAAuC,EACvC,SAAgB,EAChB,aAAa,EAAE,UAAU,GAC1B,EAAE,oBAAoB,CAAC,MAAM,CAAC,4BAgE9B"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.ItemActionGroup = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const emotion_1 = require("@leafygreen-ui/emotion");
|
|
29
|
+
const tokens_1 = require("@leafygreen-ui/tokens");
|
|
30
|
+
const leafygreen_1 = require("../leafygreen");
|
|
31
|
+
const constants_1 = require("./constants");
|
|
32
|
+
const item_action_menu_1 = require("./item-action-menu");
|
|
33
|
+
const item_action_button_1 = require("./item-action-button");
|
|
34
|
+
const utils_1 = require("./utils");
|
|
35
|
+
const containerStyle = (0, emotion_1.css)({
|
|
36
|
+
flex: 'none',
|
|
37
|
+
marginLeft: 'auto',
|
|
38
|
+
alignItems: 'center',
|
|
39
|
+
display: 'flex',
|
|
40
|
+
});
|
|
41
|
+
// TODO: Move to a parent component - or a flex gap
|
|
42
|
+
const actionGroupButtonStyle = (0, emotion_1.css)({
|
|
43
|
+
'&:not(:first-child)': {
|
|
44
|
+
marginLeft: tokens_1.spacing[100],
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
function ItemActionGroup({ actions, onAction, className, iconClassName, iconStyle, iconSize = constants_1.ItemActionButtonSize.Default, isVisible = true, 'data-testid': dataTestId, }) {
|
|
48
|
+
const onClick = (0, react_1.useCallback)((evt) => {
|
|
49
|
+
evt.stopPropagation();
|
|
50
|
+
onAction(evt.currentTarget.dataset.action);
|
|
51
|
+
}, [onAction]);
|
|
52
|
+
const shouldRender = isVisible && actions.length > 0;
|
|
53
|
+
if (!shouldRender) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
return (react_1.default.createElement("div", { className: (0, emotion_1.cx)(containerStyle, className), "data-testid": dataTestId }, actions.map((menuItem, idx) => {
|
|
57
|
+
if ((0, item_action_menu_1.isSeparatorMenuAction)(menuItem)) {
|
|
58
|
+
return react_1.default.createElement(leafygreen_1.MenuSeparator, { key: `separator-${idx}` });
|
|
59
|
+
}
|
|
60
|
+
const { expandedAs: ItemComponent = item_action_button_1.ItemActionButton, tooltip, tooltipProps, ...itemProps } = menuItem;
|
|
61
|
+
const item = (react_1.default.createElement(ItemComponent, { key: itemProps.action, ...itemProps, iconSize: iconSize, iconStyle: iconStyle, iconClassName: iconClassName, onClick: onClick, "data-testid": (0, utils_1.actionTestId)(dataTestId, itemProps.action) }));
|
|
62
|
+
if (tooltip) {
|
|
63
|
+
return (react_1.default.createElement(leafygreen_1.Tooltip, { key: itemProps.action, ...tooltipProps, trigger: react_1.default.createElement("div", { className: actionGroupButtonStyle, style: { display: 'inherit' } }, item) }, tooltip));
|
|
64
|
+
}
|
|
65
|
+
return item;
|
|
66
|
+
})));
|
|
67
|
+
}
|
|
68
|
+
exports.ItemActionGroup = ItemActionGroup;
|
|
69
|
+
//# sourceMappingURL=item-action-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-action-group.js","sourceRoot":"","sources":["../../../src/components/actions/item-action-group.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA2C;AAC3C,oDAAiD;AACjD,kDAAgD;AAEhD,8CAAuD;AAEvD,2CAAmD;AAEnD,yDAA2D;AAC3D,6DAAwD;AACxD,mCAAuC;AAMvC,MAAM,cAAc,GAAG,IAAA,aAAG,EAAC;IACzB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE,QAAQ;IACpB,OAAO,EAAE,MAAM;CAChB,CAAC,CAAC;AAEH,mDAAmD;AACnD,MAAM,sBAAsB,GAAG,IAAA,aAAG,EAAC;IACjC,qBAAqB,EAAE;QACrB,UAAU,EAAE,gBAAO,CAAC,GAAG,CAAC;KACzB;CACF,CAAC,CAAC;AAaH,SAAgB,eAAe,CAAwB,EACrD,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAAa,EACb,SAAS,EACT,QAAQ,GAAG,gCAAoB,CAAC,OAAO,EACvC,SAAS,GAAG,IAAI,EAChB,aAAa,EAAE,UAAU,GACI;IAC7B,MAAM,OAAO,GAAG,IAAA,mBAAW,EACzB,CAAC,GAAG,EAAE,EAAE;QACN,GAAG,CAAC,eAAe,EAAE,CAAC;QACtB,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,YAAY,GAAG,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAErD,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,uCAAK,SAAS,EAAE,IAAA,YAAE,EAAC,cAAc,EAAE,SAAS,CAAC,iBAAe,UAAU,IACnE,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;QAC7B,IAAI,IAAA,wCAAqB,EAAC,QAAQ,CAAC,EAAE;YACnC,OAAO,8BAAC,0BAAa,IAAC,GAAG,EAAE,aAAa,GAAG,EAAE,GAAI,CAAC;SACnD;QAED,MAAM,EACJ,UAAU,EAAE,aAAa,GAAG,qCAAgB,EAC5C,OAAO,EACP,YAAY,EACZ,GAAG,SAAS,EACb,GAAG,QAAQ,CAAC;QAEb,MAAM,IAAI,GAAG,CACX,8BAAC,aAAa,IACZ,GAAG,EAAE,SAAS,CAAC,MAAM,KACjB,SAAS,EACb,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,iBACH,IAAA,oBAAY,EAAS,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,GAC/D,CACH,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,OAAO,CACL,8BAAC,oBAAO,IACN,GAAG,EAAE,SAAS,CAAC,MAAM,KACjB,YAAY,EAChB,OAAO,EACL,uCACE,SAAS,EAAE,sBAAsB,EACjC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAE5B,IAAI,CACD,IAGP,OAAO,CACA,CACX,CAAC;SACH;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CACE,CACP,CAAC;AACJ,CAAC;AAzED,0CAyEC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { RenderMode } from '@leafygreen-ui/popover';
|
|
3
|
+
import { ItemActionButtonSize } from './constants';
|
|
4
|
+
import type { ItemBase, ItemSeparator } from './types';
|
|
5
|
+
export type MenuAction<Action extends string> = ItemBase<Action> | ItemSeparator;
|
|
6
|
+
export declare function isSeparatorMenuAction(value: unknown): value is ItemSeparator;
|
|
7
|
+
export type ItemActionMenuProps<Action extends string> = {
|
|
8
|
+
actions: MenuAction<Action>[];
|
|
9
|
+
onAction(actionName: Action): void;
|
|
10
|
+
className?: string;
|
|
11
|
+
menuClassName?: string;
|
|
12
|
+
renderMode?: RenderMode;
|
|
13
|
+
iconClassName?: string;
|
|
14
|
+
iconStyle?: React.CSSProperties;
|
|
15
|
+
iconSize?: ItemActionButtonSize;
|
|
16
|
+
isVisible?: boolean;
|
|
17
|
+
'data-testid'?: string;
|
|
18
|
+
};
|
|
19
|
+
export declare function ItemActionMenu<Action extends string>({ isVisible, actions, onAction, className, menuClassName, renderMode, iconClassName, iconStyle, iconSize, 'data-testid': dataTestId, }: ItemActionMenuProps<Action>): React.JSX.Element | null;
|
|
20
|
+
//# sourceMappingURL=item-action-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-action-menu.d.ts","sourceRoot":"","sources":["../../../src/components/actions/item-action-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAG7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIvD,MAAM,MAAM,UAAU,CAAC,MAAM,SAAS,MAAM,IACxC,QAAQ,CAAC,MAAM,CAAC,GAChB,aAAa,CAAC;AAElB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAO5E;AAgBD,MAAM,MAAM,mBAAmB,CAAC,MAAM,SAAS,MAAM,IAAI;IACvD,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAChC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,cAAc,CAAC,MAAM,SAAS,MAAM,EAAE,EACpD,SAAgB,EAChB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAAa,EACb,UAAU,EACV,aAAa,EACb,SAAS,EACT,QAAuC,EACvC,aAAa,EAAE,UAAU,GAC1B,EAAE,mBAAmB,CAAC,MAAM,CAAC,4BAkG7B"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.ItemActionMenu = exports.isSeparatorMenuAction = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const emotion_1 = require("@leafygreen-ui/emotion");
|
|
29
|
+
const tokens_1 = require("@leafygreen-ui/tokens");
|
|
30
|
+
const leafygreen_1 = require("../leafygreen");
|
|
31
|
+
const constants_1 = require("./constants");
|
|
32
|
+
const action_glyph_1 = require("./action-glyph");
|
|
33
|
+
const small_icon_button_1 = require("./small-icon-button");
|
|
34
|
+
const utils_1 = require("./utils");
|
|
35
|
+
function isSeparatorMenuAction(value) {
|
|
36
|
+
return (typeof value === 'object' &&
|
|
37
|
+
value !== null &&
|
|
38
|
+
'separator' in value &&
|
|
39
|
+
value.separator === true);
|
|
40
|
+
}
|
|
41
|
+
exports.isSeparatorMenuAction = isSeparatorMenuAction;
|
|
42
|
+
const containerStyle = (0, emotion_1.css)({
|
|
43
|
+
flex: 'none',
|
|
44
|
+
marginLeft: 'auto',
|
|
45
|
+
alignItems: 'center',
|
|
46
|
+
display: 'flex',
|
|
47
|
+
});
|
|
48
|
+
// TODO: Move to a parent component - or a flex gap
|
|
49
|
+
const buttonStyle = (0, emotion_1.css)({
|
|
50
|
+
'&:not(:first-child)': {
|
|
51
|
+
marginLeft: tokens_1.spacing[100],
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
function ItemActionMenu({ isVisible = true, actions, onAction, className, menuClassName, renderMode, iconClassName, iconStyle, iconSize = constants_1.ItemActionButtonSize.Default, 'data-testid': dataTestId, }) {
|
|
55
|
+
// this ref is used by the Menu component to calculate the height and position
|
|
56
|
+
// of the menu, and by us to give back the focus to the trigger when the menu
|
|
57
|
+
// is closed (https://jira.mongodb.org/browse/PD-1674).
|
|
58
|
+
const menuTriggerRef = (0, react_1.useRef)(null);
|
|
59
|
+
const [isMenuOpen, setIsMenuOpen] = (0, react_1.useState)(false);
|
|
60
|
+
const onClick = (0, react_1.useCallback)((evt) => {
|
|
61
|
+
evt.stopPropagation();
|
|
62
|
+
if (evt.currentTarget.dataset.menuitem) {
|
|
63
|
+
setIsMenuOpen(false);
|
|
64
|
+
// Workaround for https://jira.mongodb.org/browse/PD-1674
|
|
65
|
+
menuTriggerRef.current?.focus();
|
|
66
|
+
}
|
|
67
|
+
onAction(evt.currentTarget.dataset.action);
|
|
68
|
+
}, [onAction]);
|
|
69
|
+
const shouldRender = isMenuOpen || (isVisible && actions.length > 0);
|
|
70
|
+
if (!shouldRender) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
// TODO: Remove the wrapping div
|
|
74
|
+
return (react_1.default.createElement("div", { className: (0, emotion_1.cx)(containerStyle, className) },
|
|
75
|
+
react_1.default.createElement(leafygreen_1.Menu, { className: menuClassName, open: isMenuOpen, setOpen: setIsMenuOpen, refEl: menuTriggerRef, renderMode: renderMode, "data-testid": dataTestId, trigger: ({ onClick, children, }) => {
|
|
76
|
+
return (react_1.default.createElement(small_icon_button_1.SmallIconButton, { ref: menuTriggerRef, size: iconSize, glyph: "Ellipsis", label: "Show actions", title: "Show actions", "data-testid": dataTestId ? `${dataTestId}-show-actions` : undefined, onClick: (evt) => {
|
|
77
|
+
evt.stopPropagation();
|
|
78
|
+
onClick && onClick(evt);
|
|
79
|
+
}, className: (0, emotion_1.cx)(buttonStyle, iconClassName), style: iconStyle }, children));
|
|
80
|
+
} }, actions.map((menuAction, idx) => {
|
|
81
|
+
if (isSeparatorMenuAction(menuAction)) {
|
|
82
|
+
return react_1.default.createElement(leafygreen_1.MenuSeparator, { key: `separator-${idx}` });
|
|
83
|
+
}
|
|
84
|
+
const { action, label, icon, variant, isDisabled, disabledDescription, } = menuAction;
|
|
85
|
+
return (react_1.default.createElement(leafygreen_1.MenuItem, { key: action, "data-testid": (0, utils_1.actionTestId)(dataTestId, action), "data-action": action, "data-menuitem": true, glyph: react_1.default.createElement(action_glyph_1.ActionGlyph, { glyph: icon, size: iconSize }), onClick: onClick, variant: variant || 'default', disabled: isDisabled, description: isDisabled ? disabledDescription : '' }, label));
|
|
86
|
+
}))));
|
|
87
|
+
}
|
|
88
|
+
exports.ItemActionMenu = ItemActionMenu;
|
|
89
|
+
//# sourceMappingURL=item-action-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-action-menu.js","sourceRoot":"","sources":["../../../src/components/actions/item-action-menu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ItemActionButtonSize } from './constants';
|
|
3
|
+
export type SmallIconButtonProps = {
|
|
4
|
+
glyph: React.ReactChild;
|
|
5
|
+
label: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
size: ItemActionButtonSize;
|
|
8
|
+
onClick(evt: React.MouseEvent<HTMLButtonElement>): void;
|
|
9
|
+
} & Omit<React.HTMLProps<HTMLButtonElement>, 'size'>;
|
|
10
|
+
export declare const SmallIconButton: React.ForwardRefExoticComponent<Omit<SmallIconButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
11
|
+
//# sourceMappingURL=small-icon-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"small-icon-button.d.ts","sourceRoot":"","sources":["../../../src/components/actions/small-icon-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAM1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AA2BxD,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;CACzD,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,eAAe,6GAyB1B,CAAC"}
|