UNPKG

5.54 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _extends2 = require('babel-runtime/helpers/extends');
8
9var _extends3 = _interopRequireDefault(_extends2);
10
11var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
12
13var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
14
15var _react = require('react');
16
17var _react2 = _interopRequireDefault(_react);
18
19var _helperFunctions = require('./helperFunctions');
20
21var _recompose = require('recompose');
22
23var _OutsideClickListener = require('./OutsideClickListener');
24
25var _OutsideClickListener2 = _interopRequireDefault(_OutsideClickListener);
26
27function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
29var MercuryDrop = function MercuryDrop(_ref) {
30 var noOCListener = _ref.noOCListener,
31 setIsOnTo = _ref.setIsOnTo,
32 isOn = _ref.isOn,
33 children = _ref.children,
34 toggleIsOn = _ref.toggleIsOn;
35
36 var getContainerProps = function getContainerProps() {
37 var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
38
39 var className = _ref2.className,
40 style = _ref2.style,
41 _onClick = _ref2.onClick,
42 props = (0, _objectWithoutProperties3.default)(_ref2, ['className', 'style', 'onClick']);
43 return (0, _extends3.default)({
44 onClick: function onClick(e) {
45 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
46 args[_key - 1] = arguments[_key];
47 }
48
49 e.stopPropagation();
50 _onClick && _onClick.apply(undefined, [e].concat(args));
51 },
52 className: (0, _helperFunctions.flippyClass)(isOn, 'mercurydrop__container', 'show', 'hide') + ' ' + (className ? className : ''),
53 style: style
54 }, props);
55 };
56
57 var getTriggerProps = function getTriggerProps() {
58 var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
59
60 var _onClick2 = _ref3.onClick,
61 className = _ref3.className,
62 style = _ref3.style,
63 props = (0, _objectWithoutProperties3.default)(_ref3, ['onClick', 'className', 'style']);
64 return (0, _extends3.default)({
65 onClick: function onClick(e) {
66 for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
67 args[_key2 - 1] = arguments[_key2];
68 }
69
70 e.stopPropagation();
71 toggleIsOn();
72 _onClick2 && _onClick2.apply(undefined, [e].concat(args));
73 },
74 className: className ? (0, _helperFunctions.flippyClass)(isOn, 'mercurydrop__trigger', 'show', 'hide') + ' ' + (className ? className : '') : (0, _helperFunctions.flippyClass)(isOn, 'mercurydrop__trigger', 'show', 'hide'),
75 style: style
76 }, props);
77 };
78
79 var getChildrenProps = function getChildrenProps() {
80 var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
81
82 var _onClick3 = _ref4.onClick,
83 className = _ref4.className,
84 style = _ref4.style,
85 props = (0, _objectWithoutProperties3.default)(_ref4, ['onClick', 'className', 'style']);
86 return (0, _extends3.default)({
87 onClick: function onClick(e) {
88 for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
89 args[_key3 - 1] = arguments[_key3];
90 }
91
92 e.stopPropagation();
93 _onClick3 && _onClick3.apply(undefined, [e].concat(args));
94 },
95 className: className ? (0, _helperFunctions.flippyClass)(isOn, 'mercurydrop__children', 'show', 'hide') + ' ' + (className ? className : '') : (0, _helperFunctions.flippyClass)(isOn, 'mercurydrop__children', 'show', 'hide'),
96 style: style
97 }, props);
98 };
99
100 var sharedProps = {
101 getChildrenProps: getChildrenProps,
102 getContainerProps: getContainerProps,
103 getTriggerProps: getTriggerProps,
104 isOn: isOn,
105 setIsOnTo: setIsOnTo
106 };
107 var OCLRef = _react2.default.createRef();
108 if (!noOCListener) {
109 return _react2.default.createElement(
110 _OutsideClickListener2.default,
111 {
112 containerRef: OCLRef,
113 shouldCallHandler: isOn === true,
114 handler: function handler() {
115 return setIsOnTo(false);
116 }
117 },
118 children((0, _extends3.default)({
119 OCLRef: OCLRef
120 }, sharedProps))
121 );
122 } else {
123 return children((0, _extends3.default)({}, sharedProps));
124 }
125};
126
127MercuryDrop.defaultProps = {
128 openByDefault: true,
129 connected: false
130};
131
132var enhance = (0, _recompose.compose)((0, _recompose.withStateHandlers)(function (_ref5) {
133 var _ref5$openByDefault = _ref5.openByDefault,
134 openByDefault = _ref5$openByDefault === undefined ? true : _ref5$openByDefault;
135 return {
136 isOn: openByDefault
137 };
138}, {
139 toggleIsOn: function toggleIsOn(_ref6) {
140 var isOn = _ref6.isOn;
141 return function () {
142 return { isOn: !isOn };
143 };
144 },
145 setIsOnTo: function setIsOnTo() {
146 return function (value) {
147 return { isOn: value };
148 };
149 }
150}), (0, _recompose.lifecycle)({
151 componentDidUpdate: function componentDidUpdate() {
152 var _props = this.props,
153 connected = _props.connected,
154 show = _props.show,
155 isOn = _props.isOn,
156 setIsOnTo = _props.setIsOnTo;
157
158 if (connected === true) {
159 if (isOn !== show) {
160 setIsOnTo(show);
161 }
162 }
163 }
164}), (0, _recompose.onlyUpdateForKeys)(['show', 'isOn', 'children']));
165
166exports.default = enhance(MercuryDrop);
\No newline at end of file