SlackNotification.tsx 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /* eslint-disable react/prop-types */
  2. import type { FC } from 'react';
  3. import { useTranslation } from 'next-i18next';
  4. import {
  5. Form, FormGroup, Label, Input,
  6. PopoverBody, PopoverHeader, UncontrolledPopover,
  7. } from 'reactstrap';
  8. import styles from './SlackNotification.module.scss';
  9. type SlackNotificationProps = {
  10. id: string;
  11. isSlackEnabled: boolean;
  12. slackChannels: string;
  13. onEnabledFlagChange?: (isSlackEnabled: boolean) => void;
  14. onChannelChange?: (value: string) => void;
  15. };
  16. export const SlackNotification: FC<SlackNotificationProps> = ({
  17. id, isSlackEnabled, slackChannels, onEnabledFlagChange, onChannelChange,
  18. }) => {
  19. const { t } = useTranslation();
  20. const idForSlackPopover = `${id}ForSlackPopover`;
  21. const updateCheckboxHandler = (event: { target: { checked: boolean }; }) => {
  22. const value = event.target.checked;
  23. if (onEnabledFlagChange != null) {
  24. onEnabledFlagChange(value);
  25. }
  26. };
  27. const updateSlackChannelsHandler = (event: { target: { value: string } }) => {
  28. const value = event.target.value;
  29. if (onChannelChange != null) {
  30. onChannelChange(value);
  31. }
  32. };
  33. return (
  34. <div className={`grw-slack-notification ${styles['grw-slack-notification']} w-100`}>
  35. <div className="grw-input-group-slack-notification input-group extended-setting">
  36. {/* <label className="form-label input-group-addon m-0">
  37. <div className="form-check form-switch form-switch-lg form-switch-slack">
  38. <input
  39. type="checkbox"
  40. className="form-check-input border-0"
  41. id={id}
  42. checked={isSlackEnabled}
  43. onChange={updateCheckboxHandler}
  44. />
  45. <label className="form-label form-check-label align-center" htmlFor={id}></label>
  46. </div>
  47. </label> */}
  48. <Form>
  49. <FormGroup switch>
  50. <Input type="switch" role="switch">
  51. <p>kohsei</p>
  52. </Input>
  53. </FormGroup>
  54. </Form>
  55. <input
  56. className="grw-form-control-slack-notification form-control align-top ps-0 h-100"
  57. id={idForSlackPopover}
  58. type="text"
  59. value={slackChannels}
  60. placeholder="Input channels"
  61. onChange={updateSlackChannelsHandler}
  62. />
  63. <UncontrolledPopover trigger="focus" placement="top" target={idForSlackPopover}>
  64. <PopoverHeader>{t('slack_notification.popover_title')}</PopoverHeader>
  65. <PopoverBody>{t('slack_notification.popover_desc')}</PopoverBody>
  66. </UncontrolledPopover>
  67. </div>
  68. </div>
  69. );
  70. };