joyent-portal/consoles/my-joy-instances/src/components/instances/footer.js

174 lines
5.1 KiB
JavaScript
Raw Normal View History

import React from 'react';
import { Row, Col } from 'joyent-react-styled-flexboxgrid';
2018-05-17 13:05:28 +03:00
import { Margin } from 'styled-components-spacing';
import Flex from 'styled-flex-component';
import {
Button,
StickyFooter,
QueryBreakpoints,
StartIcon,
StopIcon,
ResetIcon,
DeleteIcon
} from 'joyent-ui-toolkit';
const { SmallOnly, Medium } = QueryBreakpoints;
2018-04-06 17:53:44 +03:00
export default ({
submitting = false,
statuses = {},
allowedActions = {},
onStart,
onStop,
onReboot,
onRemove
}) => (
2018-05-25 18:27:05 +03:00
<StickyFooter fill="disabled" fixed bottom>
2018-04-06 17:53:44 +03:00
<Row between="xs" middle="xs">
2018-05-23 19:29:04 +03:00
<Col xs="7">
2018-04-06 17:53:44 +03:00
<Flex>
{onStart && [
<SmallOnly key="small-only">
<Button
type="button"
onClick={onStart}
disabled={submitting || !allowedActions.start}
loading={submitting && statuses.starting}
secondary
small
icon
>
<StartIcon disabled={submitting || !allowedActions.start} />
</Button>
</SmallOnly>,
<Margin right="1">
<Medium key="medium">
2018-05-17 13:05:28 +03:00
<Button
type="button"
onClick={onStart}
disabled={submitting || !allowedActions.start}
loading={submitting && statuses.starting}
secondary
icon
>
2018-04-06 17:53:44 +03:00
<Margin right="1">
<StartIcon disabled={submitting || !allowedActions.start} />
</Margin>
<span>Start</span>
2018-05-17 13:05:28 +03:00
</Button>
2018-04-06 17:53:44 +03:00
</Medium>
</Margin>
]}
{onStop && [
<SmallOnly key="small-only">
<Button
type="button"
onClick={onStop}
disabled={submitting || !allowedActions.stop}
loading={submitting && statuses.stopping}
secondary
small
icon
>
<StopIcon disabled={submitting || !allowedActions.stop} />
</Button>
</SmallOnly>,
<Margin right="1">
<Medium key="medium">
2018-05-17 13:05:28 +03:00
<Button
type="button"
onClick={onStop}
disabled={submitting || !allowedActions.stop}
loading={submitting && statuses.stopping}
secondary
icon
>
2018-04-06 17:53:44 +03:00
<Margin right="1">
<StopIcon disabled={submitting || !allowedActions.stop} />
</Margin>
<span>Stop</span>
2018-05-17 13:05:28 +03:00
</Button>
2018-04-06 17:53:44 +03:00
</Medium>
</Margin>
]}
{onReboot && [
<SmallOnly key="small-only">
<Button
type="button"
onClick={onReboot}
disabled={submitting || !allowedActions.reboot}
loading={submitting && statuses.rebooting}
secondary
small
icon
>
<ResetIcon disabled={submitting || !allowedActions.reboot} />
</Button>
</SmallOnly>,
<Margin right="1">
<Medium key="medium">
2018-05-17 13:05:28 +03:00
<Button
type="button"
onClick={onReboot}
disabled={submitting || !allowedActions.reboot}
loading={submitting && statuses.rebooting}
secondary
icon
>
<ResetIcon disabled={submitting || !allowedActions.reboot} />
2018-04-06 17:53:44 +03:00
<span>Reboot</span>
2018-05-17 13:05:28 +03:00
</Button>
2018-04-06 17:53:44 +03:00
</Medium>
</Margin>
]}
</Flex>
</Col>
{onRemove && (
2018-05-23 19:29:04 +03:00
<Col xs="5">
2018-04-06 17:53:44 +03:00
<SmallOnly key="small-only">
<Button
type="button"
onClick={onRemove}
disabled={submitting || !allowedActions.remove}
loading={submitting && statuses.removing}
secondary
error
right
small
icon
>
<DeleteIcon
disabled={submitting}
fill={submitting || !allowedActions.remove ? undefined : 'red'}
/>
</Button>
</SmallOnly>
<Medium key="medium">
<Button
type="button"
onClick={onRemove}
disabled={submitting || !allowedActions.remove}
loading={submitting && statuses.removing}
error
secondary
right
icon
>
<Margin right="1">
<DeleteIcon
2018-04-06 17:53:44 +03:00
disabled={submitting || !allowedActions.remove}
fill={
2018-04-06 17:53:44 +03:00
submitting || !allowedActions.remove ? undefined : 'red'
}
/>
2018-04-06 17:53:44 +03:00
</Margin>
<span>Remove</span>
</Button>
</Medium>
</Col>
)}
</Row>
</StickyFooter>
);