UNPKG

6.11 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _helperFunctions = require('../../utilities/helperFunctions');
8
9var _SVGFullscreen = require('../svg/SVGFullscreen');
10
11var _SVGFullscreen2 = _interopRequireDefault(_SVGFullscreen);
12
13var _SVGFullscreenExit = require('../svg/SVGFullscreenExit');
14
15var _SVGFullscreenExit2 = _interopRequireDefault(_SVGFullscreenExit);
16
17var _recompose = require('recompose');
18
19function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
21var ShowToggle = function ShowToggle(_ref) {
22 var renderBow = _ref.renderBow,
23 renderStern = _ref.renderStern,
24 renderAnchor = _ref.renderAnchor,
25 renderDeck = _ref.renderDeck,
26 _ref$expandedBodyStyl = _ref.expandedBodyStyle,
27 expandedBodyStyle = _ref$expandedBodyStyl === undefined ? {} : _ref$expandedBodyStyl,
28 _ref$collapsedBodySty = _ref.collapsedBodyStyle,
29 collapsedBodyStyle = _ref$collapsedBodySty === undefined ? {} : _ref$collapsedBodySty,
30 text = _ref.text,
31 icon = _ref.icon,
32 small = _ref.small,
33 special = _ref.special,
34 noRight = _ref.noRight,
35 noLeft = _ref.noLeft,
36 noChevron = _ref.noChevron,
37 childName = _ref.childName,
38 isOn = _ref.isOn,
39 children = _ref.children,
40 callback = _ref.callback,
41 toggleIsOn = _ref.toggleIsOn,
42 CSSContainerClass = _ref.CSSContainerClass,
43 renderNoPropagationDeck = _ref.renderNoPropagationDeck;
44
45 var onToggle = function onToggle() {
46 callback();
47 toggleIsOn();
48 };
49 // shouldComponentUpdate = (props, nextProps) => {
50 // return props.show !== nextProps.show
51 // }
52
53 var topLeftClass = (0, _helperFunctions.flippyClass)(isOn, 'showtoggle__left', 'collapsed', 'expanded');
54 var topRightClass = (0, _helperFunctions.flippyClass)(isOn, 'showtoggle__right', 'collapsed', 'expanded');
55 var titleClass = (0, _helperFunctions.flippyClass)(isOn, 'showtoggle__title', 'expanded', 'collapsed');
56 var childClass = (0, _helperFunctions.flippyClass)(isOn, 'showtoggle__child', 'show', 'hide');
57 var bowClass = (0, _helperFunctions.flippyClass)(isOn, 'showtoggle__bow', 'show', 'hide');
58 var sternClass = (0, _helperFunctions.flippyClass)(isOn, 'showtoggle__stern', 'show', 'hide');
59 var anchorClass = (0, _helperFunctions.flippyClass)(isOn, 'showtoggle__anchor', 'show', 'hide');
60 var titleCustomClass = (0, _helperFunctions.flippyClass)(isOn, childName + '__showtoggle__title', 'expanded', 'collapsed');
61 var childCustomClass = (0, _helperFunctions.flippyClass)(isOn, childName + '__showtoggle__child', 'show', 'hide');
62 var containerClass = '\n ' + (0, _helperFunctions.flippyClass)(isOn, 'showtoggle__container', 'show', 'hide') + '\n ' + childName + '__showtoggle__container ' + CSSContainerClass + ' ' + (special === true ? 'showtoggle__container--special' : '') + ' ' + (small === true ? 'showtoggle__container--small' : '') + ' \n ';
63
64 return React.createElement(
65 'div',
66 { className: containerClass },
67 React.createElement(
68 'div',
69 {
70 onClick: onToggle,
71 style: isOn ? expandedBodyStyle : collapsedBodyStyle,
72 id: 'showtoggle__' + childName,
73 className: 'showtoggle__body'
74 },
75 !noLeft && React.createElement(
76 'div',
77 { className: topLeftClass },
78 '\xA0'
79 ),
80 !noLeft && !noChevron && React.createElement(
81 'div',
82 null,
83 isOn ? React.createElement(_SVGFullscreenExit2.default, null) : React.createElement(_SVGFullscreen2.default, null)
84 ),
85 renderNoPropagationDeck && React.createElement(
86 'div',
87 {
88 onClick: function onClick(e) {
89 console.log('clicked');
90 e.stopPropagation();
91 }
92 },
93 renderNoPropagationDeck()
94 ),
95 React.createElement(
96 'div',
97 { className: titleClass + ' ' + titleCustomClass },
98 renderDeck && renderDeck(),
99 icon && React.createElement('img', { src: icon }),
100 text && text
101 ),
102 !noRight && !noChevron && React.createElement(
103 'div',
104 null,
105 isOn ? React.createElement(_SVGFullscreenExit2.default, null) : React.createElement(_SVGFullscreen2.default, null)
106 ),
107 !noRight && React.createElement(
108 'div',
109 { className: topRightClass },
110 '\xA0'
111 )
112 ),
113 React.createElement(
114 'div',
115 { className: bowClass },
116 renderBow && renderBow()
117 ),
118 React.createElement(
119 'div',
120 { className: childClass + ' ' + childCustomClass },
121 children(isOn)
122 ),
123 React.createElement(
124 'div',
125 { className: sternClass },
126 renderStern && renderStern()
127 ),
128 React.createElement(
129 'div',
130 { className: anchorClass },
131 renderAnchor && renderAnchor()
132 )
133 );
134};
135
136ShowToggle.defaultProps = {
137 callback: function callback() {
138 return null;
139 },
140 openByDefault: true,
141 connected: false,
142 special: false,
143 CSSContainerClass: ''
144};
145
146var enhance = (0, _recompose.compose)((0, _recompose.withStateHandlers)(function (_ref2) {
147 var _ref2$openByDefault = _ref2.openByDefault,
148 openByDefault = _ref2$openByDefault === undefined ? true : _ref2$openByDefault;
149 return {
150 isOn: openByDefault
151 };
152}, {
153 toggleIsOn: function toggleIsOn(_ref3) {
154 var isOn = _ref3.isOn;
155 return function () {
156 return { isOn: !isOn };
157 };
158 },
159 setIsOnTo: function setIsOnTo(_ref4) {
160 var isOn = _ref4.isOn;
161 return function (value) {
162 return { isOn: value };
163 };
164 }
165}), (0, _recompose.lifecycle)({
166 componentDidUpdate: function componentDidUpdate() {
167 //console.log(`ShowToggle: componentDidUpdate`)
168 var _props = this.props,
169 connected = _props.connected,
170 show = _props.show,
171 isOn = _props.isOn,
172 setIsOnTo = _props.setIsOnTo;
173
174 if (connected === true) {
175 if (isOn !== show) {
176 setIsOnTo(show);
177 }
178 }
179 }
180}),
181//pure
182(0, _recompose.onlyUpdateForKeys)(['show', 'isOn', 'children']));
183
184exports.default = enhance(ShowToggle);
\No newline at end of file