AddPermissions.tsx 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import React, { Component } from 'react';
  2. import { observer } from 'mobx-react';
  3. import { aclTypes } from 'app/stores/PermissionsStore/PermissionsStore';
  4. import { UserPicker, User } from 'app/core/components/Picker/UserPicker';
  5. import { TeamPicker, Team } from 'app/core/components/Picker/TeamPicker';
  6. import DescriptionPicker, { OptionWithDescription } from 'app/core/components/Picker/DescriptionPicker';
  7. import { permissionOptions } from 'app/stores/PermissionsStore/PermissionsStore';
  8. export interface Props {
  9. permissions: any;
  10. }
  11. @observer
  12. class AddPermissions extends Component<Props, any> {
  13. constructor(props) {
  14. super(props);
  15. }
  16. componentWillMount() {
  17. const { permissions } = this.props;
  18. permissions.resetNewType();
  19. }
  20. onTypeChanged = evt => {
  21. const { value } = evt.target;
  22. const { permissions } = this.props;
  23. permissions.setNewType(value);
  24. };
  25. onUserSelected = (user: User) => {
  26. const { permissions } = this.props;
  27. if (!user) {
  28. permissions.newItem.setUser(null, null);
  29. return;
  30. }
  31. return permissions.newItem.setUser(user.id, user.login, user.avatarUrl);
  32. };
  33. onTeamSelected = (team: Team) => {
  34. const { permissions } = this.props;
  35. if (!team) {
  36. permissions.newItem.setTeam(null, null);
  37. return;
  38. }
  39. return permissions.newItem.setTeam(team.id, team.name, team.avatarUrl);
  40. };
  41. onPermissionChanged = (permission: OptionWithDescription) => {
  42. const { permissions } = this.props;
  43. return permissions.newItem.setPermission(permission.value);
  44. };
  45. resetNewType() {
  46. const { permissions } = this.props;
  47. return permissions.resetNewType();
  48. }
  49. onSubmit = evt => {
  50. evt.preventDefault();
  51. const { permissions } = this.props;
  52. permissions.addStoreItem();
  53. };
  54. render() {
  55. const { permissions } = this.props;
  56. const newItem = permissions.newItem;
  57. const pickerClassName = 'width-20';
  58. const isValid = newItem.isValid();
  59. return (
  60. <div className="gf-form-inline cta-form">
  61. <button className="cta-form__close btn btn-transparent" onClick={permissions.hideAddPermissions}>
  62. <i className="fa fa-close" />
  63. </button>
  64. <form name="addPermission" onSubmit={this.onSubmit}>
  65. <h5>Add Permission For</h5>
  66. <div className="gf-form-inline">
  67. <div className="gf-form">
  68. <div className="gf-form-select-wrapper">
  69. <select className="gf-form-input gf-size-auto" value={newItem.type} onChange={this.onTypeChanged}>
  70. {aclTypes.map((option, idx) => {
  71. return (
  72. <option key={idx} value={option.value}>
  73. {option.text}
  74. </option>
  75. );
  76. })}
  77. </select>
  78. </div>
  79. </div>
  80. {newItem.type === 'User' ? (
  81. <div className="gf-form">
  82. <UserPicker onSelected={this.onUserSelected} value={newItem.userId} className={pickerClassName} />
  83. </div>
  84. ) : null}
  85. {newItem.type === 'Group' ? (
  86. <div className="gf-form">
  87. <TeamPicker onSelected={this.onTeamSelected} value={newItem.teamId} className={pickerClassName} />
  88. </div>
  89. ) : null}
  90. <div className="gf-form">
  91. <DescriptionPicker
  92. optionsWithDesc={permissionOptions}
  93. onSelected={this.onPermissionChanged}
  94. value={newItem.permission}
  95. disabled={false}
  96. className={'gf-form-input--form-dropdown-right'}
  97. />
  98. </div>
  99. <div className="gf-form">
  100. <button data-save-permission className="btn btn-success" type="submit" disabled={!isValid}>
  101. Save
  102. </button>
  103. </div>
  104. </div>
  105. </form>
  106. </div>
  107. );
  108. }
  109. }
  110. export default AddPermissions;