1.7 KB56 lines
Blame
1/**
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8import {Button} from 'isl-components/Button';
9import {Icon} from 'isl-components/Icon';
10import {Kbd} from 'isl-components/Kbd';
11import {KeyCode, Modifier} from 'isl-components/KeyboardShortcuts';
12import {Tooltip} from 'isl-components/Tooltip';
13import {CleanupAllButton} from './Cleanup';
14import {DropdownFields} from './DropdownFields';
15import {useCommandEvent} from './ISLShortcuts';
16import {SelectAllButton} from './SelectAllCommits';
17import {SuggestedRebaseButton} from './SuggestedRebase';
18import {T} from './i18n';
19
20import './BulkActionsMenu.css';
21
22export function BulkActionsMenu() {
23 const additionalToggles = useCommandEvent('ToggleBulkActionsDropdown');
24 return (
25 <Tooltip
26 component={dismiss => <BulkActions dismiss={dismiss} />}
27 trigger="click"
28 placement="bottom"
29 group="topbar"
30 title={
31 <T replace={{$shortcut: <Kbd keycode={KeyCode.B} modifiers={[Modifier.ALT]} />}}>
32 Bulk Actions ($shortcut)
33 </T>
34 }
35 additionalToggles={additionalToggles.asEventTarget()}>
36 <Button icon data-testid="bulk-actions-button">
37 <Icon icon="run-all" />
38 </Button>
39 </Tooltip>
40 );
41}
42
43function BulkActions({dismiss}: {dismiss: () => void}) {
44 return (
45 <DropdownFields
46 title={<T>Bulk Actions</T>}
47 icon="run-all"
48 className="bulk-actions-dropdown"
49 data-testid="bulk-actions-dropdown">
50 <SelectAllButton dismiss={dismiss} />
51 <SuggestedRebaseButton afterRun={dismiss} />
52 <CleanupAllButton />
53 </DropdownFields>
54 );
55}
56