/
index.js
76 lines (66 loc) · 1.48 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import capitalize from 'lodash/capitalize';
import noop from 'lodash/noop';
import {
createAction,
createTypes,
handleActions
} from 'berkeleys-redux-utils';
import ns from '../ns.json';
import { createEventMetaCreator } from '../../analytics/index';
export const epics = [];
export const types = createTypes([
'clickOnLogo',
'clickOnMap',
'navLinkClicked',
'closeDropdown',
'openDropdown'
], ns);
export const clickOnLogo = createAction(
types.clickOnLogo,
noop,
createEventMetaCreator({
category: 'Nav',
action: 'clicked',
label: 'fcc logo clicked'
})
);
export const clickOnMap = createAction(
types.clickOnMap,
noop,
createEventMetaCreator({
category: 'Nav',
action: 'clicked',
label: 'map button clicked'
})
);
export const closeDropdown = createAction(types.closeDropdown);
export const openDropdown = createAction(types.openDropdown);
export function createNavLinkActionCreator(link) {
return createAction(
types.navLinkClicked,
noop,
createEventMetaCreator({
category: capitalize(ns),
action: 'click',
label: `${link} link`
})
);
}
const initialState = {
isDropdownOpen: false
};
export const dropdownSelector = state => state[ns].isDropdownOpen;
export default handleActions(
() => ({
[types.closeDropdown]: state => ({
...state,
isDropdownOpen: false
}),
[types.openDropdown]: state => ({
...state,
isDropdownOpen: true
})
}),
initialState,
ns
);