+
+
+ {headerText}
+
+
+
+
+
+
+
+
+
+ {roleMap.map(securityRoleMap =>
+ this.setState({ processingCount: this.state.processingCount + 1 })}
+ onProcessEnd={() => this.setState({ processingCount: this.state.processingCount - 1 })}
+ disable={this.props.disable}
+ key={securityRoleMap.id} securityRoleMap={securityRoleMap} />)}
+
+
+
+
+ );
+ }
+ }
+
+ componentDidMount() {
+ const { etn, id } = getEntityReference();
+ const isSupportedEntity = (etn === 'systemuser' || etn === 'team');
+ const isCreated = (!!id);
+
+ let roleMap: SecurityRoleMap[] = [];
+
+ const setStateForRefresh = () => this.setState({
+ loaded: true,
+ isSupportedEntity,
+ isCreated,
+ roleMap,
+ });
+
+ if (isSupportedEntity && isCreated) {
+ this.securityRoleService.getRoleMap()
+ .then(response => roleMap = response)
+ .finally(setStateForRefresh)
+ } else {
+ setStateForRefresh();
+ }
+ }
+}
diff --git a/control/SecurityRoleManager/components/index.ts b/control/SecurityRoleManager/components/index.ts
new file mode 100644
index 0000000..39fdc81
--- /dev/null
+++ b/control/SecurityRoleManager/components/index.ts
@@ -0,0 +1,7 @@
+import App, { IProps as AppProps } from './app';
+import Row, { IProps as RowProps } from './row';
+
+export {
+ App, AppProps,
+ Row, RowProps,
+}
diff --git a/control/SecurityRoleManager/components/row.tsx b/control/SecurityRoleManager/components/row.tsx
new file mode 100644
index 0000000..c97d072
--- /dev/null
+++ b/control/SecurityRoleManager/components/row.tsx
@@ -0,0 +1,65 @@
+import * as React from 'react';
+import { Checkbox, ICheckboxProps } from 'office-ui-fabric-react/lib/Checkbox';
+import { Stack, IStackProps } from 'office-ui-fabric-react/lib/Stack';
+import { SecurityRoleMap } from '../utilities';
+import { SecurityRoleService } from '../services';
+
+export interface IProps {
+ securityRoleMap: SecurityRoleMap;
+ securityRoleService: SecurityRoleService;
+ onProcessStart: () => void;
+ onProcessEnd: () => void;
+ disable: boolean;
+}
+
+export default class Row extends React.Component