UNPKG

8.83 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.toggleSelection = undefined;
7
8var _toPairs2 = require('ramda/src/toPairs');
9
10var _toPairs3 = _interopRequireDefault(_toPairs2);
11
12var _map2 = require('ramda/src/map');
13
14var _map3 = _interopRequireDefault(_map2);
15
16var _chain2 = require('ramda/src/chain');
17
18var _chain3 = _interopRequireDefault(_chain2);
19
20var _isEmpty2 = require('ramda/src/isEmpty');
21
22var _isEmpty3 = _interopRequireDefault(_isEmpty2);
23
24var _isNil2 = require('ramda/src/isNil');
25
26var _isNil3 = _interopRequireDefault(_isNil2);
27
28var _filter2 = require('ramda/src/filter');
29
30var _filter3 = _interopRequireDefault(_filter2);
31
32var _sortBy2 = require('ramda/src/sortBy');
33
34var _sortBy3 = _interopRequireDefault(_sortBy2);
35
36var _groupBy2 = require('ramda/src/groupBy');
37
38var _groupBy3 = _interopRequireDefault(_groupBy2);
39
40var _compose2 = require('ramda/src/compose');
41
42var _compose3 = _interopRequireDefault(_compose2);
43
44var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
45
46var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
47
48var _templateObject = _taggedTemplateLiteral([''], ['']),
49 _templateObject2 = _taggedTemplateLiteral(['\n display: flex;\n align-items: center;\n height: 40px;\n'], ['\n display: flex;\n align-items: center;\n height: 40px;\n']),
50 _templateObject3 = _taggedTemplateLiteral(['\n margin-left: 5px;\n font-weight: bold;\n font-size: 1.1em;\n user-select: none;\n cursor: pointer;\n color: #444;\n'], ['\n margin-left: 5px;\n font-weight: bold;\n font-size: 1.1em;\n user-select: none;\n cursor: pointer;\n color: #444;\n']),
51 _templateObject4 = _taggedTemplateLiteral(['\n color: steelblue;\n'], ['\n color: steelblue;\n']);
52
53var _react = require('react');
54
55var _react2 = _interopRequireDefault(_react);
56
57var _styledComponents = require('styled-components');
58
59var _styledComponents2 = _interopRequireDefault(_styledComponents);
60
61var _semanticUiReact = require('semantic-ui-react');
62
63var _reactToggle = require('react-toggle');
64
65var _reactToggle2 = _interopRequireDefault(_reactToggle);
66
67function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
68
69function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
70
71function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
72
73function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
74
75function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
76
77function _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
78
79var Criteria = _styledComponents2.default.div(_templateObject);
80
81var ToggleRow = (0, _styledComponents2.default)(_semanticUiReact.List.Content)(_templateObject2);
82var ToggleLabel = _styledComponents2.default.label(_templateObject3);
83var GroupTitle = _styledComponents2.default.h3(_templateObject4);
84
85var RoleSelection = function (_React$Component) {
86 _inherits(RoleSelection, _React$Component);
87
88 function RoleSelection() {
89 var _ref;
90
91 var _temp, _this, _ret;
92
93 _classCallCheck(this, RoleSelection);
94
95 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
96 args[_key] = arguments[_key];
97 }
98
99 return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = RoleSelection.__proto__ || Object.getPrototypeOf(RoleSelection)).call.apply(_ref, [this].concat(args))), _this), _this.state = {}, _this.filterChanged = function (_, _ref2) {
100 var value = _ref2.value;
101 return _this.setState({ fuzzyFilter: value });
102 }, _temp), _possibleConstructorReturn(_this, _ret);
103 }
104
105 _createClass(RoleSelection, [{
106 key: 'render',
107 value: function render() {
108 var _props = this.props,
109 roles = _props.roles,
110 className = _props.className,
111 style = _props.style,
112 toggleSelection = _props.toggleSelection,
113 selection = _props.selection;
114 var fuzzyFilter = this.state.fuzzyFilter;
115
116 var prepareData = (0, _compose3.default)((0, _groupBy3.default)(function (a) {
117 return a.displayGroup;
118 }), (0, _sortBy3.default)(function (a) {
119 return a.displayGroup + '||' + a.displayName;
120 }), (0, _filter3.default)(function (r) {
121 return (0, _isNil3.default)(fuzzyFilter) || (0, _isEmpty3.default)(fuzzyFilter) || r.role.toLowerCase().includes(fuzzyFilter.toLowerCase()) || r.displayName.toLowerCase().includes(fuzzyFilter.toLowerCase) || r.displayGroup.toLowerCase().includes(fuzzyFilter.toLowerCase);
122 }));
123 var data = prepareData(roles);
124
125 var renderRole = function renderRole(_ref3) {
126 var role = _ref3.role,
127 displayName = _ref3.displayName;
128 return _react2.default.createElement(
129 _semanticUiReact.List.Item,
130 { key: role },
131 _react2.default.createElement(
132 ToggleRow,
133 null,
134 _react2.default.createElement(_reactToggle2.default, {
135 id: role + '-selected',
136 checked: selection.includes(role),
137 onChange: function onChange(e) {
138 return toggleSelection(role);
139 }
140 }),
141 _react2.default.createElement(
142 ToggleLabel,
143 { htmlFor: role + '-selected' },
144 displayName
145 )
146 )
147 );
148 };
149 //
150
151 var renderGroups = (0, _compose3.default)((0, _chain3.default)(function (d) {
152 return d;
153 }), (0, _map3.default)(function (_ref4) {
154 var _ref5 = _slicedToArray(_ref4, 2),
155 group = _ref5[0],
156 roles = _ref5[1];
157
158 return [_react2.default.createElement(
159 GroupTitle,
160 { key: group },
161 group
162 ), _react2.default.createElement(
163 _semanticUiReact.List,
164 { key: group + '-list', divided: true, relaxed: true },
165 roles.map(renderRole)
166 )];
167 }), _toPairs3.default);
168
169 return _react2.default.createElement(
170 'div',
171 { className: className, style: style },
172 _react2.default.createElement(
173 Criteria,
174 null,
175 _react2.default.createElement(_semanticUiReact.Input, {
176 fluid: true,
177 value: fuzzyFilter,
178 onChange: this.filterChanged,
179 placeholder: 'Filter Roles...',
180 icon: 'filter'
181 })
182 ),
183 renderGroups(data)
184 );
185 }
186 }]);
187
188 return RoleSelection;
189}(_react2.default.Component);
190
191var toggleSelection = exports.toggleSelection = function toggleSelection(role) {
192 return function (selected) {
193 return selected.includes(role) ? (0, _filter3.default)(function (r) {
194 return r !== role;
195 }, selected) : [].concat(_toConsumableArray(selected), [role]);
196 };
197};
198exports.default = RoleSelection;
199//# sourceMappingURL=RoleSelection.js.map
\No newline at end of file