UNPKG

5.26 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/auth/RoleSelection.js"],"names":["Criteria","div","ToggleRow","Content","ToggleLabel","label","GroupTitle","h3","RoleSelection","state","filterChanged","_","value","setState","fuzzyFilter","props","roles","className","style","toggleSelection","selection","prepareData","a","displayGroup","displayName","r","role","toLowerCase","includes","data","renderRole","renderGroups","d","group","map","Component","selected"],"mappings":"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","file":"RoleSelection.js","sourcesContent":["import React from 'react'\nimport R from 'ramda'\nimport styled from 'styled-components'\nimport { Input, List } from 'semantic-ui-react'\nimport Toggle from 'react-toggle'\n\nconst Criteria = styled.div``\n\nconst ToggleRow = styled(List.Content)`\n display: flex;\n align-items: center;\n height: 40px;\n`\nconst ToggleLabel = styled.label`\n margin-left: 5px;\n font-weight: bold;\n font-size: 1.1em;\n user-select: none;\n cursor: pointer;\n color: #444;\n`\nconst GroupTitle = styled.h3`\n color: steelblue;\n`\n\nclass RoleSelection extends React.Component {\n state = {}\n\n filterChanged = (_, { value }) => this.setState({ fuzzyFilter: value })\n\n render() {\n const { roles, className, style, toggleSelection, selection } = this.props\n const { fuzzyFilter } = this.state\n const prepareData = R.compose(\n R.groupBy(a => a.displayGroup),\n R.sortBy(a => `${a.displayGroup}||${a.displayName}`),\n R.filter(\n r =>\n R.isNil(fuzzyFilter) ||\n R.isEmpty(fuzzyFilter) ||\n r.role.toLowerCase().includes(fuzzyFilter.toLowerCase()) ||\n r.displayName.toLowerCase().includes(fuzzyFilter.toLowerCase) ||\n r.displayGroup.toLowerCase().includes(fuzzyFilter.toLowerCase)\n )\n )\n const data = prepareData(roles)\n\n const renderRole = ({ role, displayName }) => (\n <List.Item key={role}>\n <ToggleRow>\n <Toggle\n id={`${role}-selected`}\n checked={selection.includes(role)}\n onChange={e => toggleSelection(role)}\n />\n <ToggleLabel htmlFor={`${role}-selected`}>{displayName}</ToggleLabel>\n </ToggleRow>\n </List.Item>\n )\n //\n\n const renderGroups = R.compose(\n R.chain(d => d),\n R.map(([group, roles]) => [\n <GroupTitle key={group}>{group}</GroupTitle>,\n <List key={`${group}-list`} divided relaxed>\n {roles.map(renderRole)}\n </List>,\n ]),\n R.toPairs\n )\n\n return (\n <div className={className} style={style}>\n <Criteria>\n <Input\n fluid\n value={fuzzyFilter}\n onChange={this.filterChanged}\n placeholder=\"Filter Roles...\"\n icon=\"filter\"\n />\n </Criteria>\n {renderGroups(data)}\n </div>\n )\n }\n}\n\nexport const toggleSelection = role => selected =>\n selected.includes(role) ? R.filter(r => r !== role, selected) : [...selected, role]\nexport default RoleSelection\n"]}
\No newline at end of file