mirror of
https://github.com/reduxjs/redux-devtools.git
synced 2024-11-23 01:56:52 +03:00
76 lines
2.0 KiB
TypeScript
76 lines
2.0 KiB
TypeScript
import React, { FunctionComponent } from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import { StylingFunction } from 'react-base16-styling';
|
|
import RightSlider from './RightSlider';
|
|
|
|
const getActiveButtons = (hasSkippedActions: boolean): ('Sweep' | 'Commit')[] =>
|
|
[hasSkippedActions && 'Sweep', 'Commit'].filter(
|
|
(a): a is 'Sweep' | 'Commit' => !!a
|
|
);
|
|
|
|
interface Props {
|
|
styling: StylingFunction;
|
|
onSearch: (value: string) => void;
|
|
onCommit: () => void;
|
|
onSweep: () => void;
|
|
hideMainButtons: boolean | undefined;
|
|
hasSkippedActions: boolean;
|
|
hasStagedActions: boolean;
|
|
}
|
|
|
|
const ActionListHeader: FunctionComponent<Props> = ({
|
|
styling,
|
|
onSearch,
|
|
hasSkippedActions,
|
|
hasStagedActions,
|
|
onCommit,
|
|
onSweep,
|
|
hideMainButtons,
|
|
}) => (
|
|
<div {...styling('actionListHeader')}>
|
|
<input
|
|
{...styling('actionListHeaderSearch')}
|
|
onChange={(e) => onSearch(e.target.value)}
|
|
placeholder="filter..."
|
|
/>
|
|
{!hideMainButtons && (
|
|
<div {...styling('actionListHeaderWrapper')}>
|
|
<RightSlider shown={hasStagedActions} styling={styling}>
|
|
<div {...styling('actionListHeaderSelector')}>
|
|
{getActiveButtons(hasSkippedActions).map((btn) => (
|
|
<div
|
|
key={btn}
|
|
onClick={() =>
|
|
({
|
|
Commit: onCommit,
|
|
Sweep: onSweep,
|
|
}[btn]())
|
|
}
|
|
{...styling(
|
|
['selectorButton', 'selectorButtonSmall'],
|
|
false,
|
|
true
|
|
)}
|
|
>
|
|
{btn}
|
|
</div>
|
|
))}
|
|
</div>
|
|
</RightSlider>
|
|
</div>
|
|
)}
|
|
</div>
|
|
);
|
|
|
|
ActionListHeader.propTypes = {
|
|
styling: PropTypes.func.isRequired,
|
|
onSearch: PropTypes.func.isRequired,
|
|
onCommit: PropTypes.func.isRequired,
|
|
onSweep: PropTypes.func.isRequired,
|
|
hideMainButtons: PropTypes.bool,
|
|
hasSkippedActions: PropTypes.bool.isRequired,
|
|
hasStagedActions: PropTypes.bool.isRequired,
|
|
};
|
|
|
|
export default ActionListHeader;
|