1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.isHorizontal = isHorizontal;
|
9 | exports.getAnchor = getAnchor;
|
10 | exports.default = exports.styles = void 0;
|
11 |
|
12 | var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
13 |
|
14 | var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
15 |
|
16 | var _react = _interopRequireDefault(require("react"));
|
17 |
|
18 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
19 |
|
20 | var _clsx = _interopRequireDefault(require("clsx"));
|
21 |
|
22 | var _Modal = _interopRequireDefault(require("../Modal"));
|
23 |
|
24 | var _Backdrop = _interopRequireDefault(require("../Backdrop"));
|
25 |
|
26 | var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
|
27 |
|
28 | var _Slide = _interopRequireDefault(require("../Slide"));
|
29 |
|
30 | var _Paper = _interopRequireDefault(require("../Paper"));
|
31 |
|
32 | var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
|
33 |
|
34 | var _transitions = require("../styles/transitions");
|
35 |
|
36 | var _useTheme = _interopRequireDefault(require("../styles/useTheme"));
|
37 |
|
38 | var styles = function styles(theme) {
|
39 | return {
|
40 |
|
41 | root: {},
|
42 |
|
43 |
|
44 | docked: {
|
45 | flex: '0 0 auto'
|
46 | },
|
47 |
|
48 |
|
49 | paper: {
|
50 | overflowY: 'auto',
|
51 | display: 'flex',
|
52 | flexDirection: 'column',
|
53 | height: '100%',
|
54 | flex: '1 0 auto',
|
55 | zIndex: theme.zIndex.drawer,
|
56 | WebkitOverflowScrolling: 'touch',
|
57 |
|
58 |
|
59 | position: 'fixed',
|
60 | top: 0,
|
61 |
|
62 |
|
63 |
|
64 | outline: 0
|
65 | },
|
66 |
|
67 |
|
68 | paperAnchorLeft: {
|
69 | left: 0,
|
70 | right: 'auto'
|
71 | },
|
72 |
|
73 |
|
74 | paperAnchorRight: {
|
75 | left: 'auto',
|
76 | right: 0
|
77 | },
|
78 |
|
79 |
|
80 | paperAnchorTop: {
|
81 | top: 0,
|
82 | left: 0,
|
83 | bottom: 'auto',
|
84 | right: 0,
|
85 | height: 'auto',
|
86 | maxHeight: '100%'
|
87 | },
|
88 |
|
89 |
|
90 | paperAnchorBottom: {
|
91 | top: 'auto',
|
92 | left: 0,
|
93 | bottom: 0,
|
94 | right: 0,
|
95 | height: 'auto',
|
96 | maxHeight: '100%'
|
97 | },
|
98 |
|
99 |
|
100 | paperAnchorDockedLeft: {
|
101 | borderRight: "1px solid ".concat(theme.palette.divider)
|
102 | },
|
103 |
|
104 |
|
105 | paperAnchorDockedTop: {
|
106 | borderBottom: "1px solid ".concat(theme.palette.divider)
|
107 | },
|
108 |
|
109 |
|
110 | paperAnchorDockedRight: {
|
111 | borderLeft: "1px solid ".concat(theme.palette.divider)
|
112 | },
|
113 |
|
114 |
|
115 | paperAnchorDockedBottom: {
|
116 | borderTop: "1px solid ".concat(theme.palette.divider)
|
117 | },
|
118 |
|
119 |
|
120 | modal: {}
|
121 | };
|
122 | };
|
123 |
|
124 | exports.styles = styles;
|
125 | var oppositeDirection = {
|
126 | left: 'right',
|
127 | right: 'left',
|
128 | top: 'down',
|
129 | bottom: 'up'
|
130 | };
|
131 |
|
132 | function isHorizontal(anchor) {
|
133 | return ['left', 'right'].indexOf(anchor) !== -1;
|
134 | }
|
135 |
|
136 | function getAnchor(theme, anchor) {
|
137 | return theme.direction === 'rtl' && isHorizontal(anchor) ? oppositeDirection[anchor] : anchor;
|
138 | }
|
139 |
|
140 | var defaultTransitionDuration = {
|
141 | enter: _transitions.duration.enteringScreen,
|
142 | exit: _transitions.duration.leavingScreen
|
143 | };
|
144 |
|
145 |
|
146 |
|
147 |
|
148 |
|
149 | var Drawer = _react.default.forwardRef(function Drawer(props, ref) {
|
150 | var _props$anchor = props.anchor,
|
151 | anchorProp = _props$anchor === void 0 ? 'left' : _props$anchor,
|
152 | BackdropProps = props.BackdropProps,
|
153 | children = props.children,
|
154 | classes = props.classes,
|
155 | className = props.className,
|
156 | _props$elevation = props.elevation,
|
157 | elevation = _props$elevation === void 0 ? 16 : _props$elevation,
|
158 | _props$ModalProps = props.ModalProps;
|
159 | _props$ModalProps = _props$ModalProps === void 0 ? {} : _props$ModalProps;
|
160 | var BackdropPropsProp = _props$ModalProps.BackdropProps,
|
161 | ModalProps = (0, _objectWithoutProperties2.default)(_props$ModalProps, ["BackdropProps"]),
|
162 | onClose = props.onClose,
|
163 | _props$open = props.open,
|
164 | open = _props$open === void 0 ? false : _props$open,
|
165 | _props$PaperProps = props.PaperProps,
|
166 | PaperProps = _props$PaperProps === void 0 ? {} : _props$PaperProps,
|
167 | SlideProps = props.SlideProps,
|
168 | _props$transitionDura = props.transitionDuration,
|
169 | transitionDuration = _props$transitionDura === void 0 ? defaultTransitionDuration : _props$transitionDura,
|
170 | _props$variant = props.variant,
|
171 | variant = _props$variant === void 0 ? 'temporary' : _props$variant,
|
172 | other = (0, _objectWithoutProperties2.default)(props, ["anchor", "BackdropProps", "children", "classes", "className", "elevation", "ModalProps", "onClose", "open", "PaperProps", "SlideProps", "transitionDuration", "variant"]);
|
173 | var theme = (0, _useTheme.default)();
|
174 |
|
175 |
|
176 |
|
177 | var mounted = _react.default.useRef(false);
|
178 |
|
179 | _react.default.useEffect(function () {
|
180 | mounted.current = true;
|
181 | }, []);
|
182 |
|
183 | var anchor = getAnchor(theme, anchorProp);
|
184 |
|
185 | var drawer = _react.default.createElement(_Paper.default, (0, _extends2.default)({
|
186 | elevation: variant === 'temporary' ? elevation : 0,
|
187 | square: true,
|
188 | className: (0, _clsx.default)(classes.paper, classes["paperAnchor".concat((0, _capitalize.default)(anchor))], PaperProps.className, variant !== 'temporary' && classes["paperAnchorDocked".concat((0, _capitalize.default)(anchor))])
|
189 | }, PaperProps), children);
|
190 |
|
191 | if (variant === 'permanent') {
|
192 | return _react.default.createElement("div", (0, _extends2.default)({
|
193 | className: (0, _clsx.default)(classes.root, classes.docked, className),
|
194 | ref: ref
|
195 | }, other), drawer);
|
196 | }
|
197 |
|
198 | var slidingDrawer = _react.default.createElement(_Slide.default, (0, _extends2.default)({
|
199 | in: open,
|
200 | direction: oppositeDirection[anchor],
|
201 | timeout: transitionDuration,
|
202 | appear: mounted.current
|
203 | }, SlideProps), drawer);
|
204 |
|
205 | if (variant === 'persistent') {
|
206 | return _react.default.createElement("div", (0, _extends2.default)({
|
207 | className: (0, _clsx.default)(classes.root, classes.docked, className),
|
208 | ref: ref
|
209 | }, other), slidingDrawer);
|
210 | }
|
211 |
|
212 |
|
213 | return _react.default.createElement(_Modal.default, (0, _extends2.default)({
|
214 | BackdropProps: (0, _extends2.default)({}, BackdropProps, {}, BackdropPropsProp, {
|
215 | transitionDuration: transitionDuration
|
216 | }),
|
217 | BackdropComponent: _Backdrop.default,
|
218 | className: (0, _clsx.default)(classes.root, classes.modal, className),
|
219 | open: open,
|
220 | onClose: onClose,
|
221 | ref: ref
|
222 | }, other, ModalProps), slidingDrawer);
|
223 | });
|
224 |
|
225 | process.env.NODE_ENV !== "production" ? Drawer.propTypes = {
|
226 | |
227 |
|
228 |
|
229 | anchor: _propTypes.default.oneOf(['left', 'top', 'right', 'bottom']),
|
230 |
|
231 | |
232 |
|
233 |
|
234 | BackdropProps: _propTypes.default.object,
|
235 |
|
236 | |
237 |
|
238 |
|
239 | children: _propTypes.default.node,
|
240 |
|
241 | |
242 |
|
243 |
|
244 |
|
245 | classes: _propTypes.default.object.isRequired,
|
246 |
|
247 | |
248 |
|
249 |
|
250 | className: _propTypes.default.string,
|
251 |
|
252 | |
253 |
|
254 |
|
255 | elevation: _propTypes.default.number,
|
256 |
|
257 | |
258 |
|
259 |
|
260 | ModalProps: _propTypes.default.object,
|
261 |
|
262 | |
263 |
|
264 |
|
265 |
|
266 |
|
267 | onClose: _propTypes.default.func,
|
268 |
|
269 | |
270 |
|
271 |
|
272 | open: _propTypes.default.bool,
|
273 |
|
274 | |
275 |
|
276 |
|
277 | PaperProps: _propTypes.default.object,
|
278 |
|
279 | |
280 |
|
281 |
|
282 | SlideProps: _propTypes.default.object,
|
283 |
|
284 | |
285 |
|
286 |
|
287 |
|
288 | transitionDuration: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({
|
289 | enter: _propTypes.default.number,
|
290 | exit: _propTypes.default.number
|
291 | })]),
|
292 |
|
293 | |
294 |
|
295 |
|
296 | variant: _propTypes.default.oneOf(['permanent', 'persistent', 'temporary'])
|
297 | } : void 0;
|
298 |
|
299 | var _default = (0, _withStyles.default)(styles, {
|
300 | name: 'MuiDrawer',
|
301 | flip: false
|
302 | })(Drawer);
|
303 |
|
304 | exports.default = _default; |
\ | No newline at end of file |