PublicitySelect.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { ProFormSelect } from "@ant-design/pro-components";
  2. import { useIntl } from "react-intl";
  3. export type TPublicity =
  4. | "disable"
  5. | "blocked"
  6. | "private"
  7. | "public_no_list"
  8. | "public";
  9. export const publicityList: TPublicity[] = [
  10. "disable",
  11. "blocked",
  12. "private",
  13. "public_no_list",
  14. "public",
  15. ];
  16. interface IWidget {
  17. width?: number | "md" | "sm" | "xl" | "xs" | "lg";
  18. disable?: TPublicity[];
  19. name?: string;
  20. readonly?: boolean;
  21. }
  22. const PublicitySelectWidget = ({
  23. width,
  24. disable = [],
  25. name = "status",
  26. readonly,
  27. }: IWidget) => {
  28. const intl = useIntl();
  29. const options = [
  30. {
  31. value: 0,
  32. label: intl.formatMessage({
  33. id: "forms.fields.publicity.disable.label",
  34. }),
  35. disable: disable.includes("disable"),
  36. },
  37. {
  38. value: 5,
  39. label: intl.formatMessage({
  40. id: "forms.fields.publicity.blocked.label",
  41. }),
  42. disable: true,
  43. },
  44. {
  45. value: 10,
  46. label: intl.formatMessage({
  47. id: "forms.fields.publicity.private.label",
  48. }),
  49. disable: disable.includes("private"),
  50. },
  51. {
  52. value: 20,
  53. label: intl.formatMessage({
  54. id: "forms.fields.publicity.public_no_list.label",
  55. }),
  56. disable: disable.includes("public_no_list"),
  57. },
  58. {
  59. value: 30,
  60. label: intl.formatMessage({
  61. id: "forms.fields.publicity.public.label",
  62. }),
  63. disable: disable.includes("public"),
  64. },
  65. ];
  66. console.debug("disable", disable, options);
  67. return (
  68. <ProFormSelect
  69. options={options.filter((value) => value.disable === false)}
  70. readonly={readonly}
  71. width={width}
  72. name={name}
  73. allowClear={false}
  74. label={intl.formatMessage({ id: "forms.fields.publicity.label" })}
  75. />
  76. );
  77. };
  78. export default PublicitySelectWidget;