HttpStatusCodeRulesInput.jsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. Copyright (C) 2025 QuantumNous
  3. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU Affero General Public License as
  5. published by the Free Software Foundation, either version 3 of the
  6. License, or (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU Affero General Public License for more details.
  11. You should have received a copy of the GNU Affero General Public License
  12. along with this program. If not, see <https://www.gnu.org/licenses/>.
  13. For commercial licensing, please contact support@quantumnous.com
  14. */
  15. import React from 'react';
  16. import { Form, Tag, Typography } from '@douyinfe/semi-ui';
  17. export default function HttpStatusCodeRulesInput(props) {
  18. const { Text } = Typography;
  19. const {
  20. label,
  21. field,
  22. placeholder,
  23. extraText,
  24. onChange,
  25. parsed,
  26. invalidText,
  27. } = props;
  28. return (
  29. <>
  30. <Form.Input
  31. label={label}
  32. placeholder={placeholder}
  33. extraText={extraText}
  34. field={field}
  35. onChange={onChange}
  36. />
  37. {parsed?.ok && parsed.tokens?.length > 0 && (
  38. <div
  39. style={{
  40. display: 'flex',
  41. flexWrap: 'wrap',
  42. gap: 8,
  43. marginTop: 8,
  44. }}
  45. >
  46. {parsed.tokens.map((token) => (
  47. <Tag key={token} size='small'>
  48. {token}
  49. </Tag>
  50. ))}
  51. </div>
  52. )}
  53. {!parsed?.ok && (
  54. <Text type='danger' style={{ display: 'block', marginTop: 8 }}>
  55. {invalidText}
  56. {parsed?.invalidTokens && parsed.invalidTokens.length > 0
  57. ? `: ${parsed.invalidTokens.join(', ')}`
  58. : ''}
  59. </Text>
  60. )}
  61. </>
  62. );
  63. }