Rift.IO OSM R1 Initial Submission
[osm/UI.git] / skyquake / plugins / composer / src / src / libraries / ToggleElementHandler.js
1 /**
2 * Created by onvelocity on 1/28/16.
3 *
4 * This function expects a React SyntheticEvent e.g. onClick and toggles the data-toggle element and adds the class '-is-toggled'.
5 *
6 * <h1 data-toggle="false" onClick={toggle}>Basic</h1>
7 + <div className="toggleable">more info here</div>
8 */
9
10 'use strict';
11
12 import getEventPath from './getEventPath'
13
14 import '../styles/ToggleElement.scss'
15
16
17 export default function toggle(event) {
18 if (event.defaultPrevented) return;
19 const target = getEventPath(event).reduce((r, node) => {
20 if (r) {
21 return r;
22 }
23 if (node && node.dataset && node.dataset.hasOwnProperty('toggle')) {
24 return node;
25 }
26 }, false);
27 if (target) {
28 const value = String(target.dataset.toggle) !== 'true';
29 target.dataset.toggle = value;
30 target.classList.toggle('-is-toggled', value);
31 }
32 }