1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
|
8 |
|
9 | var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
|
10 |
|
11 | var _extends2 = require('babel-runtime/helpers/extends');
|
12 |
|
13 | var _extends3 = _interopRequireDefault(_extends2);
|
14 |
|
15 | var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
|
16 |
|
17 | var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
|
18 |
|
19 | var _react = require('react');
|
20 |
|
21 | var _react2 = _interopRequireDefault(_react);
|
22 |
|
23 | var _propTypes = require('prop-types');
|
24 |
|
25 | var _propTypes2 = _interopRequireDefault(_propTypes);
|
26 |
|
27 | var _RTGTransition = require('./RTGTransition');
|
28 |
|
29 | var _RTGTransition2 = _interopRequireDefault(_RTGTransition);
|
30 |
|
31 | var _recompose = require('recompose');
|
32 |
|
33 | var _helperFunctions = require('./helperFunctions');
|
34 |
|
35 | var _defaultStyles = require('./defaultStyles');
|
36 |
|
37 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
38 |
|
39 | var styleTemplate = void 0;
|
40 |
|
41 | var Switch = function Switch(props) {
|
42 | var children = props.children,
|
43 | defaultActiveOption = props.defaultActiveOption,
|
44 | customStyleTemplate = props.customStyleTemplate,
|
45 | styleTemplatePreset = props.styleTemplatePreset,
|
46 | transitionType = props.transitionType,
|
47 | options = props.options;
|
48 |
|
49 | var _useReducer = (0, _react.useReducer)(function (state, newState) {
|
50 | return (0, _extends3.default)({}, state, newState);
|
51 | }, {
|
52 | activeOption: defaultActiveOption
|
53 | }),
|
54 | _useReducer2 = (0, _slicedToArray3.default)(_useReducer, 2),
|
55 | state = _useReducer2[0],
|
56 | setState = _useReducer2[1];
|
57 |
|
58 | var activeOption = state.activeOption;
|
59 |
|
60 | var setActiveOption = function setActiveOption(option) {
|
61 | return setState({ activeOption: option });
|
62 | };
|
63 | if (customStyleTemplate) {
|
64 | styleTemplate = customStyleTemplate;
|
65 | } else if (styleTemplatePreset) {
|
66 | styleTemplate = styleTemplatePreset ? _defaultStyles.switchStyleTemplates[styleTemplatePreset] : {};
|
67 | } else {
|
68 | styleTemplate = _defaultStyles.switchStyleTemplates.default;
|
69 | }
|
70 |
|
71 | var isActive = function isActive(option) {
|
72 | return activeOption === option;
|
73 | };
|
74 |
|
75 | var getOptionProps = function getOptionProps() {
|
76 | var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
77 |
|
78 | var className = _ref.className,
|
79 | style = _ref.style,
|
80 | _onClick = _ref.onClick,
|
81 | option = _ref.option,
|
82 | props = (0, _objectWithoutProperties3.default)(_ref, ['className', 'style', 'onClick', 'option']);
|
83 |
|
84 | return (0, _extends3.default)({
|
85 | onClick: function onClick(e) {
|
86 | for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
87 | args[_key - 1] = arguments[_key];
|
88 | }
|
89 |
|
90 | e.stopPropagation;
|
91 | setActiveOption(option);
|
92 | _onClick && _onClick.apply(undefined, [e].concat(args));
|
93 | },
|
94 | className: className ? (0, _helperFunctions.flippyClass)(isActive(option), 'switch__option__container', 'active', 'inactive') + ' ' + (0, _helperFunctions.flippyClass)(isActive(option), className, 'active', 'inactive') : '' + (0, _helperFunctions.flippyClass)(isActive(option), 'switch__option__container', 'active', 'inactive'),
|
95 | style: (0, _extends3.default)({}, styleTemplate.option, style)
|
96 | }, props);
|
97 | };
|
98 |
|
99 | var renderContent = function renderContent(func, option) {
|
100 | return _react2.default.createElement(
|
101 | _RTGTransition2.default,
|
102 | { in: isActive(option), transitionType: transitionType },
|
103 | function (_ref2) {
|
104 | var transitionStyle = _ref2.style;
|
105 |
|
106 | var getContentProps = function getContentProps() {
|
107 | var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
108 |
|
109 | var className = _ref3.className,
|
110 | _ref3$style = _ref3.style,
|
111 | style = _ref3$style === undefined ? {} : _ref3$style,
|
112 | _onClick2 = _ref3.onClick,
|
113 | option = _ref3.option,
|
114 | props = (0, _objectWithoutProperties3.default)(_ref3, ['className', 'style', 'onClick', 'option']);
|
115 |
|
116 | return (0, _extends3.default)({
|
117 | onClick: function onClick(e) {
|
118 | for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
119 | args[_key2 - 1] = arguments[_key2];
|
120 | }
|
121 |
|
122 | e.stopPropagation;
|
123 | _onClick2 && _onClick2.apply(undefined, [e].concat(args));
|
124 | },
|
125 | className: className ? (0, _helperFunctions.flippyClass)(isActive(option), 'switch__option__content', 'active', 'inactive') + ' ' + (0, _helperFunctions.flippyClass)(isActive(option), className, 'active', 'inactive') : '' + (0, _helperFunctions.flippyClass)(isActive(option), 'switch__option__content', 'active', 'inactive'),
|
126 | style: (0, _extends3.default)({}, styleTemplate.content, transitionStyle, style)
|
127 | }, props);
|
128 | };
|
129 | return func({ getContentProps: getContentProps });
|
130 | }
|
131 | );
|
132 | };
|
133 | var getLabelProps = function getLabelProps() {
|
134 | var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
135 |
|
136 | var className = _ref4.className,
|
137 | style = _ref4.style,
|
138 | _onClick3 = _ref4.onClick,
|
139 | option = _ref4.option,
|
140 | props = (0, _objectWithoutProperties3.default)(_ref4, ['className', 'style', 'onClick', 'option']);
|
141 |
|
142 | return (0, _extends3.default)({
|
143 | onClick: function onClick(e) {
|
144 | for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
145 | args[_key3 - 1] = arguments[_key3];
|
146 | }
|
147 |
|
148 | e.stopPropagation;
|
149 | _onClick3 && _onClick3.apply(undefined, [e].concat(args));
|
150 | },
|
151 | className: className ? (0, _helperFunctions.flippyClass)(isActive(option), 'switch__option__label', 'active', 'inactive') + ' ' + (0, _helperFunctions.flippyClass)(isActive(option), className, 'active', 'inactive') : '' + (0, _helperFunctions.flippyClass)(isActive(option), 'switch__option__label', 'active', 'inactive')
|
152 |
|
153 | }, props);
|
154 | };
|
155 |
|
156 | if (typeof children === 'function') {
|
157 | return children({
|
158 | getOptionProps: getOptionProps,
|
159 | renderContent: renderContent,
|
160 | getLabelProps: getLabelProps,
|
161 | activeOption: activeOption,
|
162 | isActive: isActive
|
163 | });
|
164 | } else {
|
165 | return _react2.default.createElement(
|
166 | _react2.default.Fragment,
|
167 | null,
|
168 | console.log(props, activeOption),
|
169 | options.map(function (option) {
|
170 | return _react2.default.createElement(
|
171 | _react2.default.Fragment,
|
172 | { key: option.id },
|
173 | _react2.default.createElement(
|
174 | 'div',
|
175 | (0, _extends3.default)({}, getOptionProps({ option: option.id })),
|
176 | option.label && _react2.default.createElement(
|
177 | 'div',
|
178 | (0, _extends3.default)({}, getLabelProps({ option: option.id })),
|
179 | option.label
|
180 | ),
|
181 | option.renderLabel && option.renderLabel({ getLabelProps: getLabelProps, option: option })
|
182 | ),
|
183 | option.content && renderContent(function (_ref5) {
|
184 | var getContentProps = _ref5.getContentProps;
|
185 | return _react2.default.createElement(
|
186 | 'div',
|
187 | (0, _extends3.default)({}, getContentProps({
|
188 | option: option.id,
|
189 | style: {
|
190 | height: '50rem',
|
191 | width: '50rem',
|
192 | background: '#227'
|
193 | }
|
194 | })),
|
195 | option.content
|
196 | );
|
197 | }, option.id)
|
198 | );
|
199 | })
|
200 | );
|
201 | }
|
202 | };
|
203 |
|
204 | Switch.propTypes = {
|
205 | children: _propTypes2.default.func.isRequired
|
206 | };
|
207 |
|
208 | Switch.defaultProps = {
|
209 | useStyleTemplate: 'default',
|
210 | defaultActiveOption: null
|
211 | };
|
212 |
|
213 | var enhance = (0, _recompose.compose)((0, _recompose.onlyUpdateForKeys)(['children']));
|
214 |
|
215 | exports.default = enhance(Switch); |
\ | No newline at end of file |