SuggestionTabs.tsx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { useState } from "react";
  2. import { type RadioChangeEvent, Space } from "antd"
  3. import { Radio } from "antd";
  4. import type { ISentence } from "../SentEdit"
  5. import { SuggestionIcon } from "../../../assets/icon";
  6. import SuggestionAdd from "./SuggestionAdd";
  7. import SuggestionList from "./SuggestionList";
  8. interface IWidget {
  9. data: ISentence;
  10. }
  11. const SuggestionTabsWidget = ({ data }: IWidget) => {
  12. const [value, setValue] = useState("close");
  13. const [showSuggestion, setShowSuggestion] = useState(false);
  14. const onChange = ({ target: { value } }: RadioChangeEvent) => {
  15. console.log("radio1 checked", value);
  16. switch (value) {
  17. case "suggestion":
  18. setShowSuggestion(true);
  19. break;
  20. }
  21. setValue(value);
  22. };
  23. return (
  24. <div>
  25. <div>
  26. <Radio.Group
  27. size="small"
  28. optionType="button"
  29. buttonStyle="solid"
  30. onChange={onChange}
  31. value={value}
  32. >
  33. <Radio
  34. value="suggestion"
  35. onClick={() => {
  36. if (value === "suggestion") {
  37. setValue("close");
  38. }
  39. }}
  40. style={{
  41. border: "none",
  42. backgroundColor: "wheat",
  43. borderRadius: 5,
  44. }}
  45. >
  46. <Space>
  47. <SuggestionIcon />
  48. {data.suggestionCount?.suggestion}
  49. </Space>
  50. </Radio>
  51. <Radio value="close" style={{ display: "none" }}></Radio>
  52. </Radio.Group>
  53. </div>
  54. <div>
  55. {showSuggestion ? (
  56. <div style={{ paddingLeft: "1em" }}>
  57. <div>
  58. <SuggestionAdd data={data} />
  59. </div>
  60. <div>
  61. <SuggestionList {...data} />
  62. </div>
  63. </div>
  64. ) : (
  65. <></>
  66. )}
  67. </div>
  68. </div>
  69. );
  70. };
  71. export default SuggestionTabsWidget;