@refinedev/antd 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/CHANGELOG.md +1689 -0
  2. package/README.md +285 -0
  3. package/dist/components/breadcrumb/index.d.ts +6 -0
  4. package/dist/components/breadcrumb/index.d.ts.map +1 -0
  5. package/dist/components/buttons/clone/index.d.ts +11 -0
  6. package/dist/components/buttons/clone/index.d.ts.map +1 -0
  7. package/dist/components/buttons/create/index.d.ts +11 -0
  8. package/dist/components/buttons/create/index.d.ts.map +1 -0
  9. package/dist/components/buttons/delete/index.d.ts +10 -0
  10. package/dist/components/buttons/delete/index.d.ts.map +1 -0
  11. package/dist/components/buttons/edit/index.d.ts +11 -0
  12. package/dist/components/buttons/edit/index.d.ts.map +1 -0
  13. package/dist/components/buttons/export/index.d.ts +10 -0
  14. package/dist/components/buttons/export/index.d.ts.map +1 -0
  15. package/dist/components/buttons/import/index.d.ts +11 -0
  16. package/dist/components/buttons/import/index.d.ts.map +1 -0
  17. package/dist/components/buttons/index.d.ts +12 -0
  18. package/dist/components/buttons/index.d.ts.map +1 -0
  19. package/dist/components/buttons/list/index.d.ts +11 -0
  20. package/dist/components/buttons/list/index.d.ts.map +1 -0
  21. package/dist/components/buttons/refresh/index.d.ts +10 -0
  22. package/dist/components/buttons/refresh/index.d.ts.map +1 -0
  23. package/dist/components/buttons/save/index.d.ts +10 -0
  24. package/dist/components/buttons/save/index.d.ts.map +1 -0
  25. package/dist/components/buttons/show/index.d.ts +11 -0
  26. package/dist/components/buttons/show/index.d.ts.map +1 -0
  27. package/dist/components/buttons/types.d.ts +24 -0
  28. package/dist/components/buttons/types.d.ts.map +1 -0
  29. package/dist/components/crud/create/index.d.ts +10 -0
  30. package/dist/components/crud/create/index.d.ts.map +1 -0
  31. package/dist/components/crud/edit/index.d.ts +10 -0
  32. package/dist/components/crud/edit/index.d.ts.map +1 -0
  33. package/dist/components/crud/index.d.ts +6 -0
  34. package/dist/components/crud/index.d.ts.map +1 -0
  35. package/dist/components/crud/list/index.d.ts +10 -0
  36. package/dist/components/crud/list/index.d.ts.map +1 -0
  37. package/dist/components/crud/show/index.d.ts +10 -0
  38. package/dist/components/crud/show/index.d.ts.map +1 -0
  39. package/dist/components/crud/types.d.ts +10 -0
  40. package/dist/components/crud/types.d.ts.map +1 -0
  41. package/dist/components/fields/boolean/index.d.ts +9 -0
  42. package/dist/components/fields/boolean/index.d.ts.map +1 -0
  43. package/dist/components/fields/date/index.d.ts +9 -0
  44. package/dist/components/fields/date/index.d.ts.map +1 -0
  45. package/dist/components/fields/email/index.d.ts +10 -0
  46. package/dist/components/fields/email/index.d.ts.map +1 -0
  47. package/dist/components/fields/file/index.d.ts +9 -0
  48. package/dist/components/fields/file/index.d.ts.map +1 -0
  49. package/dist/components/fields/image/index.d.ts +9 -0
  50. package/dist/components/fields/image/index.d.ts.map +1 -0
  51. package/dist/components/fields/index.d.ts +12 -0
  52. package/dist/components/fields/index.d.ts.map +1 -0
  53. package/dist/components/fields/markdown/index.d.ts +9 -0
  54. package/dist/components/fields/markdown/index.d.ts.map +1 -0
  55. package/dist/components/fields/number/index.d.ts +9 -0
  56. package/dist/components/fields/number/index.d.ts.map +1 -0
  57. package/dist/components/fields/tag/index.d.ts +9 -0
  58. package/dist/components/fields/tag/index.d.ts.map +1 -0
  59. package/dist/components/fields/text/index.d.ts +9 -0
  60. package/dist/components/fields/text/index.d.ts.map +1 -0
  61. package/dist/components/fields/types.d.ts +20 -0
  62. package/dist/components/fields/types.d.ts.map +1 -0
  63. package/dist/components/fields/url/index.d.ts +10 -0
  64. package/dist/components/fields/url/index.d.ts.map +1 -0
  65. package/dist/components/index.d.ts +13 -0
  66. package/dist/components/index.d.ts.map +1 -0
  67. package/dist/components/layout/header/index.d.ts +4 -0
  68. package/dist/components/layout/header/index.d.ts.map +1 -0
  69. package/dist/components/layout/index.d.ts +4 -0
  70. package/dist/components/layout/index.d.ts.map +1 -0
  71. package/dist/components/layout/sider/index.d.ts +4 -0
  72. package/dist/components/layout/sider/index.d.ts.map +1 -0
  73. package/dist/components/layout/sider/styles.d.ts +3 -0
  74. package/dist/components/layout/sider/styles.d.ts.map +1 -0
  75. package/dist/components/layout/title/index.d.ts +4 -0
  76. package/dist/components/layout/title/index.d.ts.map +1 -0
  77. package/dist/components/layout/types.d.ts +3 -0
  78. package/dist/components/layout/types.d.ts.map +1 -0
  79. package/dist/components/pageHeader/index.d.ts +5 -0
  80. package/dist/components/pageHeader/index.d.ts.map +1 -0
  81. package/dist/components/pages/auth/components/forgotPassword/index.d.ts +12 -0
  82. package/dist/components/pages/auth/components/forgotPassword/index.d.ts.map +1 -0
  83. package/dist/components/pages/auth/components/index.d.ts +5 -0
  84. package/dist/components/pages/auth/components/index.d.ts.map +1 -0
  85. package/dist/components/pages/auth/components/login/index.d.ts +12 -0
  86. package/dist/components/pages/auth/components/login/index.d.ts.map +1 -0
  87. package/dist/components/pages/auth/components/register/index.d.ts +12 -0
  88. package/dist/components/pages/auth/components/register/index.d.ts.map +1 -0
  89. package/dist/components/pages/auth/components/styles.d.ts +5 -0
  90. package/dist/components/pages/auth/components/styles.d.ts.map +1 -0
  91. package/dist/components/pages/auth/components/updatePassword/index.d.ts +12 -0
  92. package/dist/components/pages/auth/components/updatePassword/index.d.ts.map +1 -0
  93. package/dist/components/pages/auth/index.d.ts +11 -0
  94. package/dist/components/pages/auth/index.d.ts.map +1 -0
  95. package/dist/components/pages/error/index.d.ts +10 -0
  96. package/dist/components/pages/error/index.d.ts.map +1 -0
  97. package/dist/components/pages/index.d.ts +7 -0
  98. package/dist/components/pages/index.d.ts.map +1 -0
  99. package/dist/components/pages/login/index.d.ts +15 -0
  100. package/dist/components/pages/login/index.d.ts.map +1 -0
  101. package/dist/components/pages/login/styles.d.ts +6 -0
  102. package/dist/components/pages/login/styles.d.ts.map +1 -0
  103. package/dist/components/pages/ready/index.d.ts +10 -0
  104. package/dist/components/pages/ready/index.d.ts.map +1 -0
  105. package/dist/components/pages/welcome/index.d.ts +6 -0
  106. package/dist/components/pages/welcome/index.d.ts.map +1 -0
  107. package/dist/components/table/components/filterDropdown/index.d.ts +13 -0
  108. package/dist/components/table/components/filterDropdown/index.d.ts.map +1 -0
  109. package/dist/components/table/components/index.d.ts +2 -0
  110. package/dist/components/table/components/index.d.ts.map +1 -0
  111. package/dist/components/table/index.d.ts +2 -0
  112. package/dist/components/table/index.d.ts.map +1 -0
  113. package/dist/components/undoableNotification/index.d.ts +10 -0
  114. package/dist/components/undoableNotification/index.d.ts.map +1 -0
  115. package/dist/definitions/index.d.ts +3 -0
  116. package/dist/definitions/index.d.ts.map +1 -0
  117. package/dist/definitions/table/index.d.ts +10 -0
  118. package/dist/definitions/table/index.d.ts.map +1 -0
  119. package/dist/definitions/upload/index.d.ts +4 -0
  120. package/dist/definitions/upload/index.d.ts.map +1 -0
  121. package/dist/esm/index.js +2 -0
  122. package/dist/esm/index.js.map +1 -0
  123. package/dist/hooks/fields/index.d.ts +4 -0
  124. package/dist/hooks/fields/index.d.ts.map +1 -0
  125. package/dist/hooks/fields/useCheckboxGroup/index.d.ts +24 -0
  126. package/dist/hooks/fields/useCheckboxGroup/index.d.ts.map +1 -0
  127. package/dist/hooks/fields/useRadioGroup/index.d.ts +24 -0
  128. package/dist/hooks/fields/useRadioGroup/index.d.ts.map +1 -0
  129. package/dist/hooks/fields/useSelect/index.d.ts +21 -0
  130. package/dist/hooks/fields/useSelect/index.d.ts.map +1 -0
  131. package/dist/hooks/form/index.d.ts +5 -0
  132. package/dist/hooks/form/index.d.ts.map +1 -0
  133. package/dist/hooks/form/useDrawerForm/index.d.ts +2 -0
  134. package/dist/hooks/form/useDrawerForm/index.d.ts.map +1 -0
  135. package/dist/hooks/form/useDrawerForm/useDrawerForm.d.ts +33 -0
  136. package/dist/hooks/form/useDrawerForm/useDrawerForm.d.ts.map +1 -0
  137. package/dist/hooks/form/useForm.d.ts +31 -0
  138. package/dist/hooks/form/useForm.d.ts.map +1 -0
  139. package/dist/hooks/form/useModalForm/index.d.ts +2 -0
  140. package/dist/hooks/form/useModalForm/index.d.ts.map +1 -0
  141. package/dist/hooks/form/useModalForm/useModalForm.d.ts +39 -0
  142. package/dist/hooks/form/useModalForm/useModalForm.d.ts.map +1 -0
  143. package/dist/hooks/form/useStepsForm/index.d.ts +2 -0
  144. package/dist/hooks/form/useStepsForm/index.d.ts.map +1 -0
  145. package/dist/hooks/form/useStepsForm/useStepsForm.d.ts +35 -0
  146. package/dist/hooks/form/useStepsForm/useStepsForm.d.ts.map +1 -0
  147. package/dist/hooks/import/index.d.ts +18 -0
  148. package/dist/hooks/import/index.d.ts.map +1 -0
  149. package/dist/hooks/index.d.ts +8 -0
  150. package/dist/hooks/index.d.ts.map +1 -0
  151. package/dist/hooks/list/index.d.ts +2 -0
  152. package/dist/hooks/list/index.d.ts.map +1 -0
  153. package/dist/hooks/list/useSimpleList/index.d.ts +2 -0
  154. package/dist/hooks/list/useSimpleList/index.d.ts.map +1 -0
  155. package/dist/hooks/list/useSimpleList/useSimpleList.d.ts +23 -0
  156. package/dist/hooks/list/useSimpleList/useSimpleList.d.ts.map +1 -0
  157. package/dist/hooks/modal/index.d.ts +2 -0
  158. package/dist/hooks/modal/index.d.ts.map +1 -0
  159. package/dist/hooks/modal/useModal/index.d.ts +18 -0
  160. package/dist/hooks/modal/useModal/index.d.ts.map +1 -0
  161. package/dist/hooks/table/index.d.ts +3 -0
  162. package/dist/hooks/table/index.d.ts.map +1 -0
  163. package/dist/hooks/table/useEditableTable/index.d.ts +2 -0
  164. package/dist/hooks/table/useEditableTable/index.d.ts.map +1 -0
  165. package/dist/hooks/table/useEditableTable/useEditableTable.d.ts +28 -0
  166. package/dist/hooks/table/useEditableTable/useEditableTable.d.ts.map +1 -0
  167. package/dist/hooks/table/useTable/index.d.ts +2 -0
  168. package/dist/hooks/table/useTable/index.d.ts.map +1 -0
  169. package/dist/hooks/table/useTable/paginationLink.d.ts +8 -0
  170. package/dist/hooks/table/useTable/paginationLink.d.ts.map +1 -0
  171. package/dist/hooks/table/useTable/useTable.d.ts +18 -0
  172. package/dist/hooks/table/useTable/useTable.d.ts.map +1 -0
  173. package/dist/hooks/useFileUploadState/index.d.ts +7 -0
  174. package/dist/hooks/useFileUploadState/index.d.ts.map +1 -0
  175. package/dist/iife/index.js +56 -0
  176. package/dist/iife/index.js.map +1 -0
  177. package/dist/index.d.ts +6 -0
  178. package/dist/index.d.ts.map +1 -0
  179. package/dist/index.js +2 -0
  180. package/dist/index.js.map +1 -0
  181. package/dist/interfaces/field.d.ts +4 -0
  182. package/dist/interfaces/field.d.ts.map +1 -0
  183. package/dist/interfaces/index.d.ts +19 -0
  184. package/dist/interfaces/index.d.ts.map +1 -0
  185. package/dist/interfaces/upload.d.ts +10 -0
  186. package/dist/interfaces/upload.d.ts.map +1 -0
  187. package/dist/providers/index.d.ts +2 -0
  188. package/dist/providers/index.d.ts.map +1 -0
  189. package/dist/providers/notificationProvider/index.d.ts +3 -0
  190. package/dist/providers/notificationProvider/index.d.ts.map +1 -0
  191. package/dist/reset.css +254 -0
  192. package/package.json +72 -0
  193. package/refine.config.js +604 -0
  194. package/src/assets/styles/reset.css +254 -0
  195. package/src/components/breadcrumb/index.tsx +70 -0
  196. package/src/components/buttons/clone/index.tsx +104 -0
  197. package/src/components/buttons/create/index.tsx +103 -0
  198. package/src/components/buttons/delete/index.tsx +122 -0
  199. package/src/components/buttons/edit/index.tsx +105 -0
  200. package/src/components/buttons/export/index.tsx +32 -0
  201. package/src/components/buttons/import/index.tsx +36 -0
  202. package/src/components/buttons/index.ts +11 -0
  203. package/src/components/buttons/list/index.tsx +122 -0
  204. package/src/components/buttons/refresh/index.tsx +61 -0
  205. package/src/components/buttons/save/index.tsx +32 -0
  206. package/src/components/buttons/show/index.tsx +104 -0
  207. package/src/components/buttons/types.ts +44 -0
  208. package/src/components/crud/create/index.tsx +135 -0
  209. package/src/components/crud/edit/index.tsx +221 -0
  210. package/src/components/crud/index.ts +6 -0
  211. package/src/components/crud/list/index.tsx +105 -0
  212. package/src/components/crud/show/index.tsx +215 -0
  213. package/src/components/crud/types.ts +63 -0
  214. package/src/components/fields/boolean/index.tsx +26 -0
  215. package/src/components/fields/date/index.tsx +33 -0
  216. package/src/components/fields/email/index.tsx +20 -0
  217. package/src/components/fields/file/index.tsx +21 -0
  218. package/src/components/fields/image/index.tsx +17 -0
  219. package/src/components/fields/index.ts +11 -0
  220. package/src/components/fields/markdown/index.tsx +16 -0
  221. package/src/components/fields/number/index.tsx +36 -0
  222. package/src/components/fields/tag/index.tsx +13 -0
  223. package/src/components/fields/text/index.tsx +15 -0
  224. package/src/components/fields/types.ts +49 -0
  225. package/src/components/fields/url/index.tsx +24 -0
  226. package/src/components/index.ts +14 -0
  227. package/src/components/layout/header/index.tsx +37 -0
  228. package/src/components/layout/index.tsx +41 -0
  229. package/src/components/layout/sider/index.tsx +261 -0
  230. package/src/components/layout/sider/styles.ts +9 -0
  231. package/src/components/layout/title/index.tsx +48 -0
  232. package/src/components/layout/types.ts +11 -0
  233. package/src/components/pageHeader/index.tsx +52 -0
  234. package/src/components/pages/auth/components/forgotPassword/index.tsx +167 -0
  235. package/src/components/pages/auth/components/index.tsx +4 -0
  236. package/src/components/pages/auth/components/login/index.tsx +239 -0
  237. package/src/components/pages/auth/components/register/index.tsx +210 -0
  238. package/src/components/pages/auth/components/styles.ts +23 -0
  239. package/src/components/pages/auth/components/updatePassword/index.tsx +158 -0
  240. package/src/components/pages/auth/index.tsx +35 -0
  241. package/src/components/pages/error/index.tsx +77 -0
  242. package/src/components/pages/index.tsx +6 -0
  243. package/src/components/pages/login/index.tsx +172 -0
  244. package/src/components/pages/login/styles.ts +25 -0
  245. package/src/components/pages/ready/index.tsx +96 -0
  246. package/src/components/pages/welcome/index.tsx +87 -0
  247. package/src/components/table/components/filterDropdown/index.tsx +112 -0
  248. package/src/components/table/components/index.ts +1 -0
  249. package/src/components/table/index.ts +1 -0
  250. package/src/components/undoableNotification/index.tsx +46 -0
  251. package/src/definitions/index.ts +2 -0
  252. package/src/definitions/table/index.ts +113 -0
  253. package/src/definitions/upload/index.ts +29 -0
  254. package/src/hooks/fields/index.ts +3 -0
  255. package/src/hooks/fields/useCheckboxGroup/index.ts +85 -0
  256. package/src/hooks/fields/useRadioGroup/index.ts +85 -0
  257. package/src/hooks/fields/useSelect/index.ts +47 -0
  258. package/src/hooks/form/index.ts +17 -0
  259. package/src/hooks/form/useDrawerForm/index.ts +6 -0
  260. package/src/hooks/form/useDrawerForm/useDrawerForm.ts +241 -0
  261. package/src/hooks/form/useForm.ts +168 -0
  262. package/src/hooks/form/useModalForm/index.ts +5 -0
  263. package/src/hooks/form/useModalForm/useModalForm.ts +286 -0
  264. package/src/hooks/form/useStepsForm/index.ts +5 -0
  265. package/src/hooks/form/useStepsForm/useStepsForm.ts +91 -0
  266. package/src/hooks/import/index.tsx +134 -0
  267. package/src/hooks/index.ts +7 -0
  268. package/src/hooks/list/index.ts +1 -0
  269. package/src/hooks/list/useSimpleList/index.ts +1 -0
  270. package/src/hooks/list/useSimpleList/useSimpleList.ts +229 -0
  271. package/src/hooks/modal/index.ts +1 -0
  272. package/src/hooks/modal/useModal/index.tsx +43 -0
  273. package/src/hooks/table/index.ts +2 -0
  274. package/src/hooks/table/useEditableTable/index.ts +1 -0
  275. package/src/hooks/table/useEditableTable/useEditableTable.ts +87 -0
  276. package/src/hooks/table/useTable/index.ts +1 -0
  277. package/src/hooks/table/useTable/paginationLink.tsx +27 -0
  278. package/src/hooks/table/useTable/useTable.ts +267 -0
  279. package/src/hooks/useFileUploadState/index.ts +34 -0
  280. package/src/index.tsx +11 -0
  281. package/src/interfaces/field.ts +3 -0
  282. package/src/interfaces/index.ts +23 -0
  283. package/src/interfaces/upload.ts +9 -0
  284. package/src/providers/index.ts +1 -0
  285. package/src/providers/notificationProvider/index.tsx +41 -0
  286. package/src/types/index.d.ts +4 -0
  287. package/src/types/sunflower.d.ts +86 -0
  288. package/tsconfig.json +28 -0
@@ -0,0 +1,254 @@
1
+ /* stylelint-disable */
2
+ html,
3
+ body {
4
+ width: 100%;
5
+ height: 100%;
6
+ }
7
+ input::-ms-clear,
8
+ input::-ms-reveal {
9
+ display: none;
10
+ }
11
+ *,
12
+ *::before,
13
+ *::after {
14
+ box-sizing: border-box;
15
+ }
16
+ html {
17
+ font-family: sans-serif;
18
+ line-height: 1.15;
19
+ -webkit-text-size-adjust: 100%;
20
+ -ms-text-size-adjust: 100%;
21
+ -ms-overflow-style: scrollbar;
22
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
23
+ }
24
+ @-ms-viewport {
25
+ width: device-width;
26
+ }
27
+ body {
28
+ margin: 0;
29
+ }
30
+ [tabindex="-1"]:focus {
31
+ outline: none;
32
+ }
33
+ hr {
34
+ box-sizing: content-box;
35
+ height: 0;
36
+ overflow: visible;
37
+ }
38
+ h1,
39
+ h2,
40
+ h3,
41
+ h4,
42
+ h5,
43
+ h6 {
44
+ margin-top: 0;
45
+ margin-bottom: 0.5em;
46
+ font-weight: 500;
47
+ }
48
+ p {
49
+ margin-top: 0;
50
+ margin-bottom: 1em;
51
+ }
52
+ abbr[title],
53
+ abbr[data-original-title] {
54
+ -webkit-text-decoration: underline dotted;
55
+ text-decoration: underline;
56
+ text-decoration: underline dotted;
57
+ border-bottom: 0;
58
+ cursor: help;
59
+ }
60
+ address {
61
+ margin-bottom: 1em;
62
+ font-style: normal;
63
+ line-height: inherit;
64
+ }
65
+ input[type="text"],
66
+ input[type="password"],
67
+ input[type="number"],
68
+ textarea {
69
+ -webkit-appearance: none;
70
+ }
71
+ ol,
72
+ ul,
73
+ dl {
74
+ margin-top: 0;
75
+ margin-bottom: 1em;
76
+ }
77
+ ol ol,
78
+ ul ul,
79
+ ol ul,
80
+ ul ol {
81
+ margin-bottom: 0;
82
+ }
83
+ dt {
84
+ font-weight: 500;
85
+ }
86
+ dd {
87
+ margin-bottom: 0.5em;
88
+ margin-left: 0;
89
+ }
90
+ blockquote {
91
+ margin: 0 0 1em;
92
+ }
93
+ dfn {
94
+ font-style: italic;
95
+ }
96
+ b,
97
+ strong {
98
+ font-weight: bolder;
99
+ }
100
+ small {
101
+ font-size: 80%;
102
+ }
103
+ sub,
104
+ sup {
105
+ position: relative;
106
+ font-size: 75%;
107
+ line-height: 0;
108
+ vertical-align: baseline;
109
+ }
110
+ sub {
111
+ bottom: -0.25em;
112
+ }
113
+ sup {
114
+ top: -0.5em;
115
+ }
116
+ pre,
117
+ code,
118
+ kbd,
119
+ samp {
120
+ font-size: 1em;
121
+ font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier,
122
+ monospace;
123
+ }
124
+ pre {
125
+ margin-top: 0;
126
+ margin-bottom: 1em;
127
+ overflow: auto;
128
+ }
129
+ figure {
130
+ margin: 0 0 1em;
131
+ }
132
+ img {
133
+ vertical-align: middle;
134
+ border-style: none;
135
+ }
136
+ a,
137
+ area,
138
+ button,
139
+ [role="button"],
140
+ input:not([type="range"]),
141
+ label,
142
+ select,
143
+ summary,
144
+ textarea {
145
+ touch-action: manipulation;
146
+ }
147
+ table {
148
+ border-collapse: collapse;
149
+ }
150
+ caption {
151
+ padding-top: 0.75em;
152
+ padding-bottom: 0.3em;
153
+ text-align: left;
154
+ caption-side: bottom;
155
+ }
156
+ input,
157
+ button,
158
+ select,
159
+ optgroup,
160
+ textarea {
161
+ margin: 0;
162
+ color: inherit;
163
+ font-size: inherit;
164
+ font-family: inherit;
165
+ line-height: inherit;
166
+ }
167
+ button,
168
+ input {
169
+ overflow: visible;
170
+ }
171
+ button,
172
+ select {
173
+ text-transform: none;
174
+ }
175
+ button,
176
+ html [type="button"],
177
+ [type="reset"],
178
+ [type="submit"] {
179
+ -webkit-appearance: button;
180
+ }
181
+ button::-moz-focus-inner,
182
+ [type="button"]::-moz-focus-inner,
183
+ [type="reset"]::-moz-focus-inner,
184
+ [type="submit"]::-moz-focus-inner {
185
+ padding: 0;
186
+ border-style: none;
187
+ }
188
+ input[type="radio"],
189
+ input[type="checkbox"] {
190
+ box-sizing: border-box;
191
+ padding: 0;
192
+ }
193
+ input[type="date"],
194
+ input[type="time"],
195
+ input[type="datetime-local"],
196
+ input[type="month"] {
197
+ -webkit-appearance: listbox;
198
+ }
199
+ textarea {
200
+ overflow: auto;
201
+ resize: vertical;
202
+ }
203
+ fieldset {
204
+ min-width: 0;
205
+ margin: 0;
206
+ padding: 0;
207
+ border: 0;
208
+ }
209
+ legend {
210
+ display: block;
211
+ width: 100%;
212
+ max-width: 100%;
213
+ margin-bottom: 0.5em;
214
+ padding: 0;
215
+ color: inherit;
216
+ font-size: 1.5em;
217
+ line-height: inherit;
218
+ white-space: normal;
219
+ }
220
+ progress {
221
+ vertical-align: baseline;
222
+ }
223
+ [type="number"]::-webkit-inner-spin-button,
224
+ [type="number"]::-webkit-outer-spin-button {
225
+ height: auto;
226
+ }
227
+ [type="search"] {
228
+ outline-offset: -2px;
229
+ -webkit-appearance: none;
230
+ }
231
+ [type="search"]::-webkit-search-cancel-button,
232
+ [type="search"]::-webkit-search-decoration {
233
+ -webkit-appearance: none;
234
+ }
235
+ ::-webkit-file-upload-button {
236
+ font: inherit;
237
+ -webkit-appearance: button;
238
+ }
239
+ output {
240
+ display: inline-block;
241
+ }
242
+ summary {
243
+ display: list-item;
244
+ }
245
+ template {
246
+ display: none;
247
+ }
248
+ [hidden] {
249
+ display: none !important;
250
+ }
251
+ mark {
252
+ padding: 0.2em;
253
+ background-color: #feffe6;
254
+ }
@@ -0,0 +1,70 @@
1
+ import React from "react";
2
+ import {
3
+ useBreadcrumb,
4
+ useLink,
5
+ useRefineContext,
6
+ useRouterContext,
7
+ useRouterType,
8
+ useResource,
9
+ matchResourceFromRoute,
10
+ } from "@refinedev/core";
11
+ import { RefineBreadcrumbProps } from "@refinedev/ui-types";
12
+
13
+ import {
14
+ Breadcrumb as AntdBreadcrumb,
15
+ BreadcrumbProps as AntdBreadcrumbProps,
16
+ } from "antd";
17
+ import { HomeOutlined } from "@ant-design/icons";
18
+
19
+ export type BreadcrumbProps = RefineBreadcrumbProps<AntdBreadcrumbProps>;
20
+
21
+ export const Breadcrumb: React.FC<BreadcrumbProps> = ({
22
+ breadcrumbProps,
23
+ showHome = true,
24
+ hideIcons = false,
25
+ meta,
26
+ }) => {
27
+ const routerType = useRouterType();
28
+ const { breadcrumbs } = useBreadcrumb({
29
+ meta,
30
+ });
31
+ const Link = useLink();
32
+ const { Link: LegacyLink } = useRouterContext();
33
+ const { hasDashboard } = useRefineContext();
34
+
35
+ const { resources } = useResource();
36
+
37
+ const rootRouteResource = matchResourceFromRoute("/", resources);
38
+
39
+ const ActiveLink = routerType === "legacy" ? LegacyLink : Link;
40
+
41
+ if (breadcrumbs.length === 1) {
42
+ return null;
43
+ }
44
+
45
+ return (
46
+ <AntdBreadcrumb {...breadcrumbProps}>
47
+ {showHome && (hasDashboard || rootRouteResource.found) && (
48
+ <AntdBreadcrumb.Item>
49
+ <ActiveLink to="/">
50
+ {rootRouteResource?.resource?.meta?.icon ?? (
51
+ <HomeOutlined />
52
+ )}
53
+ </ActiveLink>
54
+ </AntdBreadcrumb.Item>
55
+ )}
56
+ {breadcrumbs.map(({ label, icon, href }) => {
57
+ return (
58
+ <AntdBreadcrumb.Item key={label}>
59
+ {!hideIcons && icon}
60
+ {href ? (
61
+ <ActiveLink to={href}>{label}</ActiveLink>
62
+ ) : (
63
+ <span>{label}</span>
64
+ )}
65
+ </AntdBreadcrumb.Item>
66
+ );
67
+ })}
68
+ </AntdBreadcrumb>
69
+ );
70
+ };
@@ -0,0 +1,104 @@
1
+ import React from "react";
2
+ import { Button } from "antd";
3
+ import { PlusSquareOutlined } from "@ant-design/icons";
4
+ import {
5
+ useCan,
6
+ useNavigation,
7
+ useTranslate,
8
+ useResource,
9
+ useRouterContext,
10
+ useRouterType,
11
+ useLink,
12
+ } from "@refinedev/core";
13
+ import { RefineButtonTestIds } from "@refinedev/ui-types";
14
+
15
+ import { CloneButtonProps } from "../types";
16
+
17
+ /**
18
+ * `<CloneButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button> component`}.
19
+ * It uses the {@link https://refine.dev/docs/core/hooks/navigation/useNavigation#clone `clone`} method from {@link https://refine.dev/docs/core/hooks/navigation/useNavigation useNavigation} under the hood.
20
+ * It can be useful when redirecting the app to the create page with the record id route of resource.
21
+ *
22
+ * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/buttons/clone-button} for more details.
23
+ */
24
+ export const CloneButton: React.FC<CloneButtonProps> = ({
25
+ resourceNameOrRouteName: propResourceNameOrRouteName,
26
+ resource: resourceNameFromProps,
27
+ recordItemId,
28
+ hideText = false,
29
+ accessControl,
30
+ meta,
31
+ children,
32
+ onClick,
33
+ ...rest
34
+ }) => {
35
+ const accessControlEnabled = accessControl?.enabled ?? true;
36
+ const hideIfUnauthorized = accessControl?.hideIfUnauthorized ?? false;
37
+ const { cloneUrl: generateCloneUrl } = useNavigation();
38
+ const routerType = useRouterType();
39
+ const Link = useLink();
40
+ const { Link: LegacyLink } = useRouterContext();
41
+
42
+ const ActiveLink = routerType === "legacy" ? LegacyLink : Link;
43
+
44
+ const translate = useTranslate();
45
+
46
+ const { id, resource } = useResource(
47
+ resourceNameFromProps ?? propResourceNameOrRouteName,
48
+ );
49
+
50
+ const { data } = useCan({
51
+ resource: resource?.name,
52
+ action: "create",
53
+ params: { id: recordItemId ?? id, resource },
54
+ queryOptions: {
55
+ enabled: accessControlEnabled,
56
+ },
57
+ });
58
+
59
+ const createButtonDisabledTitle = () => {
60
+ if (data?.can) return "";
61
+ else if (data?.reason) return data.reason;
62
+ else
63
+ return translate(
64
+ "buttons.notAccessTitle",
65
+ "You don't have permission to access",
66
+ );
67
+ };
68
+
69
+ const cloneUrl =
70
+ resource && (recordItemId || id)
71
+ ? generateCloneUrl(resource, recordItemId! ?? id!, meta)
72
+ : "";
73
+
74
+ if (accessControlEnabled && hideIfUnauthorized && !data?.can) {
75
+ return null;
76
+ }
77
+
78
+ return (
79
+ <ActiveLink
80
+ to={cloneUrl}
81
+ replace={false}
82
+ onClick={(e: React.PointerEvent<HTMLButtonElement>) => {
83
+ if (data?.can === false) {
84
+ e.preventDefault();
85
+ return;
86
+ }
87
+ if (onClick) {
88
+ e.preventDefault();
89
+ onClick(e);
90
+ }
91
+ }}
92
+ >
93
+ <Button
94
+ icon={<PlusSquareOutlined />}
95
+ disabled={data?.can === false}
96
+ title={createButtonDisabledTitle()}
97
+ data-testid={RefineButtonTestIds.CloneButton}
98
+ {...rest}
99
+ >
100
+ {!hideText && (children ?? translate("buttons.clone", "Clone"))}
101
+ </Button>
102
+ </ActiveLink>
103
+ );
104
+ };
@@ -0,0 +1,103 @@
1
+ import React from "react";
2
+ import { Button } from "antd";
3
+ import { PlusSquareOutlined } from "@ant-design/icons";
4
+ import {
5
+ useNavigation,
6
+ useTranslate,
7
+ useCan,
8
+ useResource,
9
+ useRouterContext,
10
+ useRouterType,
11
+ useLink,
12
+ } from "@refinedev/core";
13
+ import { RefineButtonTestIds } from "@refinedev/ui-types";
14
+
15
+ import { CreateButtonProps } from "../types";
16
+
17
+ /**
18
+ * <CreateButton> uses Ant Design's {@link https://ant.design/components/button/ `<Button> component`}.
19
+ * It uses the {@link https://refine.dev/docs/core/hooks/navigation/useNavigation#create `create`} method from {@link https://refine.dev/docs/core/hooks/navigation/useNavigation `useNavigation`} under the hood.
20
+ * It can be useful to redirect the app to the create page route of resource}.
21
+ *
22
+ * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/buttons/create-button} for more details.
23
+ */
24
+ export const CreateButton: React.FC<CreateButtonProps> = ({
25
+ resource: resourceNameFromProps,
26
+ resourceNameOrRouteName: propResourceNameOrRouteName,
27
+ hideText = false,
28
+ accessControl,
29
+ meta,
30
+ children,
31
+ onClick,
32
+ ...rest
33
+ }) => {
34
+ const accessControlEnabled = accessControl?.enabled ?? true;
35
+ const hideIfUnauthorized = accessControl?.hideIfUnauthorized ?? false;
36
+ const translate = useTranslate();
37
+ const routerType = useRouterType();
38
+ const Link = useLink();
39
+ const { Link: LegacyLink } = useRouterContext();
40
+
41
+ const ActiveLink = routerType === "legacy" ? LegacyLink : Link;
42
+
43
+ const { createUrl: generateCreateUrl } = useNavigation();
44
+
45
+ const { resource } = useResource(
46
+ resourceNameFromProps ?? propResourceNameOrRouteName,
47
+ );
48
+
49
+ const { data } = useCan({
50
+ resource: resource?.name,
51
+ action: "create",
52
+ queryOptions: {
53
+ enabled: accessControlEnabled,
54
+ },
55
+ params: {
56
+ resource,
57
+ },
58
+ });
59
+
60
+ const createButtonDisabledTitle = () => {
61
+ if (data?.can) return "";
62
+ else if (data?.reason) return data.reason;
63
+ else
64
+ return translate(
65
+ "buttons.notAccessTitle",
66
+ "You don't have permission to access",
67
+ );
68
+ };
69
+
70
+ const createUrl = resource ? generateCreateUrl(resource, meta) : "";
71
+
72
+ if (accessControlEnabled && hideIfUnauthorized && !data?.can) {
73
+ return null;
74
+ }
75
+
76
+ return (
77
+ <ActiveLink
78
+ to={createUrl}
79
+ replace={false}
80
+ onClick={(e: React.PointerEvent<HTMLButtonElement>) => {
81
+ if (data?.can === false) {
82
+ e.preventDefault();
83
+ return;
84
+ }
85
+ if (onClick) {
86
+ e.preventDefault();
87
+ onClick(e);
88
+ }
89
+ }}
90
+ >
91
+ <Button
92
+ icon={<PlusSquareOutlined />}
93
+ disabled={data?.can === false}
94
+ title={createButtonDisabledTitle()}
95
+ data-testid={RefineButtonTestIds.CreateButton}
96
+ {...rest}
97
+ >
98
+ {!hideText &&
99
+ (children ?? translate("buttons.create", "Create"))}
100
+ </Button>
101
+ </ActiveLink>
102
+ );
103
+ };
@@ -0,0 +1,122 @@
1
+ import React from "react";
2
+ import { Button, Popconfirm } from "antd";
3
+ import { DeleteOutlined } from "@ant-design/icons";
4
+ import {
5
+ useDelete,
6
+ useTranslate,
7
+ useMutationMode,
8
+ useCan,
9
+ useResource,
10
+ pickNotDeprecated,
11
+ } from "@refinedev/core";
12
+ import { RefineButtonTestIds } from "@refinedev/ui-types";
13
+
14
+ import { DeleteButtonProps } from "../types";
15
+
16
+ /**
17
+ * `<DeleteButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} and {@link https://ant.design/components/button/ `<Popconfirm>`} components.
18
+ * When you try to delete something, a pop-up shows up and asks for confirmation. When confirmed it executes the `useDelete` method provided by your `dataProvider`.
19
+ *
20
+ * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/buttons/delete-button} for more details.
21
+ */
22
+ export const DeleteButton: React.FC<DeleteButtonProps> = ({
23
+ resource: resourceNameFromProps,
24
+ resourceNameOrRouteName: propResourceNameOrRouteName,
25
+ recordItemId,
26
+ onSuccess,
27
+ mutationMode: mutationModeProp,
28
+ children,
29
+ successNotification,
30
+ errorNotification,
31
+ hideText = false,
32
+ accessControl,
33
+ metaData,
34
+ meta,
35
+ dataProviderName,
36
+ confirmTitle,
37
+ confirmOkText,
38
+ confirmCancelText,
39
+ invalidates,
40
+ ...rest
41
+ }) => {
42
+ const accessControlEnabled = accessControl?.enabled ?? true;
43
+ const hideIfUnauthorized = accessControl?.hideIfUnauthorized ?? false;
44
+ const translate = useTranslate();
45
+
46
+ const { id, resource } = useResource(
47
+ resourceNameFromProps ?? propResourceNameOrRouteName,
48
+ );
49
+
50
+ const { mutationMode: mutationModeContext } = useMutationMode();
51
+
52
+ const mutationMode = mutationModeProp ?? mutationModeContext;
53
+
54
+ const { mutate, isLoading, variables } = useDelete();
55
+
56
+ const { data } = useCan({
57
+ resource: resource?.name,
58
+ action: "delete",
59
+ params: { id: recordItemId ?? id, resource },
60
+ queryOptions: {
61
+ enabled: accessControlEnabled,
62
+ },
63
+ });
64
+
65
+ if (accessControlEnabled && hideIfUnauthorized && !data?.can) {
66
+ return null;
67
+ }
68
+
69
+ return (
70
+ <Popconfirm
71
+ key="delete"
72
+ okText={confirmOkText ?? translate("buttons.delete", "Delete")}
73
+ cancelText={
74
+ confirmCancelText ?? translate("buttons.cancel", "Cancel")
75
+ }
76
+ okType="danger"
77
+ title={
78
+ confirmTitle ?? translate("buttons.confirm", "Are you sure?")
79
+ }
80
+ okButtonProps={{ disabled: isLoading }}
81
+ onConfirm={(): void => {
82
+ if ((recordItemId ?? id) && resource?.name) {
83
+ mutate(
84
+ {
85
+ id: recordItemId ?? id ?? "",
86
+ resource: resource?.name,
87
+ mutationMode,
88
+ successNotification,
89
+ errorNotification,
90
+ meta: pickNotDeprecated(meta, metaData),
91
+ metaData: pickNotDeprecated(meta, metaData),
92
+ dataProviderName,
93
+ invalidates,
94
+ },
95
+ {
96
+ onSuccess: (value) => {
97
+ onSuccess && onSuccess(value);
98
+ },
99
+ },
100
+ );
101
+ }
102
+ }}
103
+ disabled={
104
+ typeof rest?.disabled !== "undefined"
105
+ ? rest.disabled
106
+ : data?.can === false
107
+ }
108
+ >
109
+ <Button
110
+ danger
111
+ loading={(recordItemId ?? id) === variables?.id && isLoading}
112
+ icon={<DeleteOutlined />}
113
+ disabled={data?.can === false}
114
+ data-testid={RefineButtonTestIds.DeleteButton}
115
+ {...rest}
116
+ >
117
+ {!hideText &&
118
+ (children ?? translate("buttons.delete", "Delete"))}
119
+ </Button>
120
+ </Popconfirm>
121
+ );
122
+ };