GrammarSelect.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import { ProFormSelect } from "@ant-design/pro-components";
  2. import type { JSX } from "react";
  3. import { useIntl } from "react-intl";
  4. interface IWidget {
  5. name: string;
  6. trigger?: JSX.Element;
  7. id?: string;
  8. hidden?: boolean;
  9. onSuccess?: () => void;
  10. }
  11. const GrammarSelectWidget = ({ name, hidden = false }: IWidget) => {
  12. const intl = useIntl();
  13. const _verb = [
  14. "n",
  15. "ti",
  16. "v",
  17. "v:ind",
  18. "ind",
  19. "sg",
  20. "pl",
  21. "nom",
  22. "acc",
  23. "gen",
  24. "dat",
  25. "inst",
  26. "voc",
  27. "abl",
  28. "loc",
  29. "base",
  30. "imp",
  31. "opt",
  32. "pres",
  33. "aor",
  34. "fut",
  35. "1p",
  36. "2p",
  37. "3p",
  38. "prp",
  39. "pp",
  40. "grd",
  41. "fpp",
  42. "vdn",
  43. "ger",
  44. "inf",
  45. "adj",
  46. "pron",
  47. "caus",
  48. "num",
  49. "adv",
  50. "conj",
  51. "pre",
  52. "suf",
  53. "ti:base",
  54. "n:base",
  55. "v:base",
  56. "vdn",
  57. ];
  58. const verbOptions = _verb.map((item) => {
  59. return {
  60. value: item,
  61. label: intl.formatMessage({
  62. id: `dict.fields.type.${item}.label`,
  63. defaultMessage: item,
  64. }),
  65. };
  66. });
  67. return (
  68. <ProFormSelect
  69. hidden={hidden}
  70. options={verbOptions}
  71. fieldProps={{
  72. mode: "tags",
  73. }}
  74. width="md"
  75. name={name}
  76. allowClear={false}
  77. label={intl.formatMessage({ id: "forms.fields.case.label" })}
  78. />
  79. );
  80. };
  81. export default GrammarSelectWidget;