You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
3.4 KiB

3 years ago
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Drawer = void 0;
/* eslint-disable no-shadow */
const styled_components_1 = __importDefault(require("styled-components"));
const styled_system_1 = require("styled-system");
const drawer_footer_1 = __importDefault(require("./drawer-footer"));
const css_class_1 = require("../../utils/css-class");
const constants_1 = require("../../constants");
const variants = styled_system_1.variant({
variants: {
filter: {
bg: 'filterBg',
width: '400px',
color: 'white',
className: css_class_1.cssClass(['Drawer', 'Drawer_Filter']),
},
},
});
/**
* @classdesc
*
* <img src="components/drawer.png" />
*
* Drawer component renders a huge side area where {@link BaseActionComponent} renders
* all actions where {@link Action.showInDrawer} is set to true.
*
* You probably don't want to use it directly in your actions, but if you decide to set
* `showInDrawer` to true you will probably want to use `DrawerContent` or `DrawerFooter`
* components.
*
* All these components: Drawer, DrawerContent and Drawer Footer extends {@link SpaceProps}.
*
* ### Usage
*
* ```javascript
* import { Drawer, DrawerProps, DrawerContent, DrawerFooter } from '@adminjs/design-system'
* ```
*
* @component
* @subcategory Molecules
* @hideconstructor
* @see DrawerProps
* @see {@link https://storybook.adminjs.co/?path=/story/designsystem-molecules-drawer--default Storybook}
* @example
* return (
* <Box height="500px">
* <Drawer>
* <DrawerContent>
* <Header.H3>
* <Button size="icon" rounded mr="lg">
* <Icon icon="ChevronRight" />
* </Button>
* Edit
* </Header.H3>
* <Box my="x3" p={0}>
* <Button size="sm">
* <Icon icon="Information" />
* Info
* </Button>
* <Button size="sm" ml="lg">
* <Icon icon="Delete" />
* Delete
* </Button>
* </Box>
*
* </DrawerContent>
* <DrawerFooter>
* <Button variant="primary">
* Save
* </Button>
* </DrawerFooter>
* </Drawer>
* </Box>
* )
*
* @section design-system
*/
const Drawer = styled_components_1.default.section `
z-index: 100;
position: fixed;
display: flex;
flex-direction: column;
top: 0;
right: ${({ isHidden, width }) => (isHidden ? `-${width === null || width === void 0 ? void 0 : width.toString()}` : '0px;')};
&.hidden {
right: ${({ width }) => (`-${width === null || width === void 0 ? void 0 : width.toString()}`)};
}
box-shadow: 0 3px 6px ${({ theme }) => theme.colors.grey40};
height: 100%;
overflow-y: auto;
overflow-x: hidden;
transition: all 500ms;
background: ${({ theme }) => theme.colors.white};
box-sizing: border-box;
& > ${drawer_footer_1.default} {
border-top: 1px solid ${({ theme }) => theme.colors.primary20};
${({ variant, theme }) => (variant === 'filter' ? `border-color: ${theme.colors.filterInputBorder}` : '')};
}
max-width: 100%;
${styled_system_1.space};
${styled_system_1.color};
${styled_system_1.layout};
${variants};
`;
exports.Drawer = Drawer;
Drawer.defaultProps = {
width: constants_1.DEFAULT_DRAWER_WIDTH,
className: css_class_1.cssClass('Drawer'),
};
exports.default = Drawer;