SelectCase.tsx 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. import { useIntl } from "react-intl";
  2. import { Cascader } from "antd";
  3. interface CascaderOption {
  4. value: string | number;
  5. label: string;
  6. children?: CascaderOption[];
  7. }
  8. interface IWidget {
  9. defaultValue?: string[];
  10. onCaseChange?: Function;
  11. }
  12. const Widget = ({ defaultValue, onCaseChange }: IWidget) => {
  13. const intl = useIntl();
  14. const case8 = [
  15. {
  16. value: "nom",
  17. label: intl.formatMessage({ id: "dict.fields.type.nom.label" }),
  18. },
  19. {
  20. value: "acc",
  21. label: intl.formatMessage({ id: "dict.fields.type.acc.label" }),
  22. },
  23. {
  24. value: "gen",
  25. label: intl.formatMessage({ id: "dict.fields.type.gen.label" }),
  26. },
  27. {
  28. value: "dat",
  29. label: intl.formatMessage({ id: "dict.fields.type.dat.label" }),
  30. },
  31. {
  32. value: "inst",
  33. label: intl.formatMessage({ id: "dict.fields.type.inst.label" }),
  34. },
  35. {
  36. value: "abl",
  37. label: intl.formatMessage({ id: "dict.fields.type.abl.label" }),
  38. },
  39. {
  40. value: "voc",
  41. label: intl.formatMessage({ id: "dict.fields.type.voc.label" }),
  42. },
  43. ];
  44. const case2 = [
  45. {
  46. value: "sg",
  47. label: intl.formatMessage({ id: "dict.fields.type.sg.label" }),
  48. children: case8,
  49. },
  50. {
  51. value: "pl",
  52. label: intl.formatMessage({ id: "dict.fields.type.pl.label" }),
  53. children: case8,
  54. },
  55. {
  56. value: "base",
  57. label: intl.formatMessage({ id: "dict.fields.type.base.label" }),
  58. },
  59. ];
  60. const case3 = [
  61. {
  62. value: "m",
  63. label: intl.formatMessage({ id: "dict.fields.type.m.label" }),
  64. children: case2,
  65. },
  66. {
  67. value: "nt",
  68. label: intl.formatMessage({ id: "dict.fields.type.nt.label" }),
  69. children: case2,
  70. },
  71. {
  72. value: "f",
  73. label: intl.formatMessage({ id: "dict.fields.type.f.label" }),
  74. children: case2,
  75. },
  76. ];
  77. const caseVerb3 = [
  78. {
  79. value: "pres",
  80. label: intl.formatMessage({ id: "dict.fields.type.pres.label" }),
  81. },
  82. {
  83. value: "aor",
  84. label: intl.formatMessage({ id: "dict.fields.type.aor.label" }),
  85. },
  86. {
  87. value: "fut",
  88. label: intl.formatMessage({ id: "dict.fields.type.fut.label" }),
  89. },
  90. {
  91. value: "pf",
  92. label: intl.formatMessage({ id: "dict.fields.type.pf.label" }),
  93. },
  94. {
  95. value: "imp",
  96. label: intl.formatMessage({ id: "dict.fields.type.imp.label" }),
  97. },
  98. {
  99. value: "cond",
  100. label: intl.formatMessage({ id: "dict.fields.type.cond.label" }),
  101. },
  102. {
  103. value: "opt",
  104. label: intl.formatMessage({ id: "dict.fields.type.opt.label" }),
  105. },
  106. ];
  107. const caseVerb2 = [
  108. {
  109. value: "sg",
  110. label: intl.formatMessage({ id: "dict.fields.type.sg.label" }),
  111. children: caseVerb3,
  112. },
  113. {
  114. value: "pl",
  115. label: intl.formatMessage({ id: "dict.fields.type.pl.label" }),
  116. children: caseVerb3,
  117. },
  118. ];
  119. const caseVerbInd = [
  120. {
  121. value: "abs",
  122. label: intl.formatMessage({ id: "dict.fields.type.abs.label" }),
  123. },
  124. {
  125. value: "ger",
  126. label: intl.formatMessage({ id: "dict.fields.type.ger.label" }),
  127. },
  128. {
  129. value: "inf",
  130. label: intl.formatMessage({ id: "dict.fields.type.inf.label" }),
  131. },
  132. ];
  133. const caseInd = [
  134. {
  135. value: "ind",
  136. label: intl.formatMessage({ id: "dict.fields.type.ind.label" }),
  137. },
  138. {
  139. value: "adv",
  140. label: intl.formatMessage({ id: "dict.fields.type.adv.label" }),
  141. },
  142. {
  143. value: "conj",
  144. label: intl.formatMessage({ id: "dict.fields.type.conj.label" }),
  145. },
  146. {
  147. value: "prep",
  148. label: intl.formatMessage({ id: "dict.fields.type.prep.label" }),
  149. },
  150. {
  151. value: "interj",
  152. label: intl.formatMessage({ id: "dict.fields.type.interj.label" }),
  153. },
  154. {
  155. value: "pre",
  156. label: intl.formatMessage({ id: "dict.fields.type.pre.label" }),
  157. },
  158. {
  159. value: "suf",
  160. label: intl.formatMessage({ id: "dict.fields.type.suf.label" }),
  161. },
  162. {
  163. value: "end",
  164. label: intl.formatMessage({ id: "dict.fields.type.end.label" }),
  165. },
  166. {
  167. value: "part",
  168. label: intl.formatMessage({ id: "dict.fields.type.part.label" }),
  169. },
  170. ];
  171. const caseVerb1 = [
  172. {
  173. value: "1p",
  174. label: intl.formatMessage({ id: "dict.fields.type.1p.label" }),
  175. children: caseVerb2,
  176. },
  177. {
  178. value: "2p",
  179. label: intl.formatMessage({ id: "dict.fields.type.2p.label" }),
  180. children: caseVerb2,
  181. },
  182. {
  183. value: "3p",
  184. label: intl.formatMessage({ id: "dict.fields.type.3p.label" }),
  185. children: caseVerb2,
  186. },
  187. {
  188. value: "ind",
  189. label: intl.formatMessage({ id: "dict.fields.type.ind.label" }),
  190. children: caseVerbInd,
  191. },
  192. {
  193. value: "base",
  194. label: intl.formatMessage({ id: "dict.fields.type.base.label" }),
  195. },
  196. ];
  197. const options: CascaderOption[] = [
  198. {
  199. value: "n",
  200. label: intl.formatMessage({ id: "dict.fields.type.n.label" }),
  201. children: case3,
  202. },
  203. {
  204. value: "ti",
  205. label: intl.formatMessage({ id: "dict.fields.type.ti.label" }),
  206. children: case3,
  207. },
  208. {
  209. value: "v",
  210. label: intl.formatMessage({ id: "dict.fields.type.v.label" }),
  211. children: caseVerb1,
  212. },
  213. {
  214. value: "ind",
  215. label: intl.formatMessage({ id: "dict.fields.type.ind.label" }),
  216. children: caseInd,
  217. },
  218. {
  219. value: "un",
  220. label: intl.formatMessage({ id: "dict.fields.type.un.label" }),
  221. },
  222. {
  223. value: "adj",
  224. label: intl.formatMessage({ id: "dict.fields.type.adj.label" }),
  225. children: case3,
  226. },
  227. ];
  228. const onChange = (value: (string | number)[]) => {
  229. console.log("case changed", value);
  230. if (typeof onCaseChange !== "undefined") {
  231. onCaseChange(value);
  232. }
  233. };
  234. console.log("case", defaultValue);
  235. return (
  236. <Cascader
  237. options={options}
  238. placeholder="Please select case"
  239. onChange={onChange}
  240. />
  241. );
  242. };
  243. export default Widget;