1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _extends2 = require('babel-runtime/helpers/extends');
|
8 |
|
9 | var _extends3 = _interopRequireDefault(_extends2);
|
10 |
|
11 | var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
|
12 |
|
13 | var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
|
14 |
|
15 | var _react = require('react');
|
16 |
|
17 | var _react2 = _interopRequireDefault(_react);
|
18 |
|
19 | var _helperFunctions = require('./helperFunctions');
|
20 |
|
21 | var _recompose = require('recompose');
|
22 |
|
23 | var _OutsideClickListener = require('./OutsideClickListener');
|
24 |
|
25 | var _OutsideClickListener2 = _interopRequireDefault(_OutsideClickListener);
|
26 |
|
27 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
28 |
|
29 | var 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 |
|
127 | MercuryDrop.defaultProps = {
|
128 | openByDefault: true,
|
129 | connected: false
|
130 | };
|
131 |
|
132 | var 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 |
|
166 | exports.default = enhance(MercuryDrop); |
\ | No newline at end of file |