@refinedev/antd 5.44.0 → 5.45.3

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 (59) hide show
  1. package/CHANGELOG.md +148 -0
  2. package/README.md +2 -2
  3. package/dist/components/breadcrumb/index.d.cts.map +1 -1
  4. package/dist/components/breadcrumb/index.d.ts.map +1 -1
  5. package/dist/components/buttons/clone/index.d.cts.map +1 -1
  6. package/dist/components/buttons/clone/index.d.ts.map +1 -1
  7. package/dist/components/buttons/create/index.d.cts.map +1 -1
  8. package/dist/components/buttons/create/index.d.ts.map +1 -1
  9. package/dist/components/buttons/delete/index.d.cts.map +1 -1
  10. package/dist/components/buttons/delete/index.d.ts.map +1 -1
  11. package/dist/components/buttons/edit/index.d.cts.map +1 -1
  12. package/dist/components/buttons/edit/index.d.ts.map +1 -1
  13. package/dist/components/buttons/list/index.d.cts.map +1 -1
  14. package/dist/components/buttons/list/index.d.ts.map +1 -1
  15. package/dist/components/buttons/show/index.d.cts.map +1 -1
  16. package/dist/components/buttons/show/index.d.ts.map +1 -1
  17. package/dist/components/themedLayoutV2/index.d.cts.map +1 -1
  18. package/dist/components/themedLayoutV2/index.d.ts.map +1 -1
  19. package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.cts +1 -0
  20. package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.cts.map +1 -1
  21. package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.mts +1 -0
  22. package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.mts.map +1 -0
  23. package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.ts +1 -0
  24. package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.ts.map +1 -1
  25. package/dist/contexts/themedLayoutContext/index.d.cts +1 -0
  26. package/dist/contexts/themedLayoutContext/index.d.cts.map +1 -1
  27. package/dist/contexts/themedLayoutContext/index.d.mts +1 -0
  28. package/dist/contexts/themedLayoutContext/index.d.mts.map +1 -0
  29. package/dist/contexts/themedLayoutContext/index.d.ts +1 -0
  30. package/dist/contexts/themedLayoutContext/index.d.ts.map +1 -1
  31. package/dist/definitions/filter-mappers/index.d.cts +1 -1
  32. package/dist/definitions/filter-mappers/index.d.cts.map +1 -1
  33. package/dist/definitions/filter-mappers/index.d.mts +1 -1
  34. package/dist/definitions/filter-mappers/index.d.mts.map +1 -1
  35. package/dist/definitions/filter-mappers/index.d.ts +1 -1
  36. package/dist/definitions/filter-mappers/index.d.ts.map +1 -1
  37. package/dist/hooks/useThemedLayoutContext/index.d.cts +1 -1
  38. package/dist/hooks/useThemedLayoutContext/index.d.cts.map +1 -1
  39. package/dist/hooks/useThemedLayoutContext/index.d.mts +1 -1
  40. package/dist/hooks/useThemedLayoutContext/index.d.mts.map +1 -1
  41. package/dist/hooks/useThemedLayoutContext/index.d.ts +1 -1
  42. package/dist/hooks/useThemedLayoutContext/index.d.ts.map +1 -1
  43. package/dist/index.cjs +1 -1
  44. package/dist/index.cjs.map +1 -1
  45. package/dist/index.mjs +1 -1
  46. package/dist/index.mjs.map +1 -1
  47. package/package.json +7 -7
  48. package/src/components/breadcrumb/index.tsx +2 -3
  49. package/src/components/buttons/clone/index.tsx +6 -3
  50. package/src/components/buttons/create/index.tsx +7 -4
  51. package/src/components/buttons/delete/index.tsx +6 -5
  52. package/src/components/buttons/edit/index.tsx +6 -3
  53. package/src/components/buttons/list/index.tsx +7 -4
  54. package/src/components/buttons/show/index.tsx +6 -3
  55. package/src/components/themedLayoutV2/index.tsx +5 -1
  56. package/src/contexts/themedLayoutContext/IThemedLayoutContext.ts +1 -0
  57. package/src/contexts/themedLayoutContext/index.tsx +10 -2
  58. package/src/definitions/filter-mappers/index.ts +1 -1
  59. package/src/hooks/useThemedLayoutContext/index.ts +2 -2
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@refinedev/antd",
3
- "version": "5.44.0",
3
+ "version": "5.45.3",
4
4
  "private": false,
5
- "description": "refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.",
5
+ "description": "Ant Design UI support for Refine, offering enterprise-level UI components.",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/refinedev/refine.git",
@@ -35,7 +35,7 @@
35
35
  "dependencies": {
36
36
  "@ant-design/icons": "^5.5.1",
37
37
  "@ant-design/pro-layout": "^7.21.1",
38
- "@refinedev/ui-types": "^1.22.9",
38
+ "@refinedev/ui-types": "^1.23.1",
39
39
  "@tanstack/react-query": "^4.10.1",
40
40
  "antd": "^5.17.0",
41
41
  "dayjs": "^1.10.7",
@@ -46,9 +46,9 @@
46
46
  },
47
47
  "devDependencies": {
48
48
  "@esbuild-plugins/node-resolve": "^0.1.4",
49
- "@refinedev/cli": "^2.16.38",
50
- "@refinedev/core": "^4.56.0",
51
- "@refinedev/ui-tests": "^1.14.9",
49
+ "@refinedev/cli": "^2.16.44",
50
+ "@refinedev/core": "^4.57.7",
51
+ "@refinedev/ui-tests": "^1.15.1",
52
52
  "@testing-library/jest-dom": "^5.16.4",
53
53
  "@testing-library/react": "^13.1.1",
54
54
  "@testing-library/react-hooks": "^8.0.0",
@@ -64,7 +64,7 @@
64
64
  "jest": "^29.3.1",
65
65
  "jest-environment-jsdom": "^29.3.1",
66
66
  "postcss": "^8.1.4",
67
- "react-router-dom": "^6.8.1",
67
+ "react-router": "^7.0.2",
68
68
  "ts-jest": "^29.1.2",
69
69
  "tsup": "^6.7.0",
70
70
  "typescript": "^5.4.2"
@@ -23,6 +23,7 @@ export const Breadcrumb: React.FC<BreadcrumbProps> = ({
23
23
  showHome = true,
24
24
  hideIcons = false,
25
25
  meta,
26
+ minItems = 2,
26
27
  }) => {
27
28
  const routerType = useRouterType();
28
29
  const { breadcrumbs } = useBreadcrumb({
@@ -38,9 +39,7 @@ export const Breadcrumb: React.FC<BreadcrumbProps> = ({
38
39
 
39
40
  const ActiveLink = routerType === "legacy" ? LegacyLink : Link;
40
41
 
41
- if (breadcrumbs.length === 1) {
42
- return null;
43
- }
42
+ if (breadcrumbs.length < minItems) return null;
44
43
 
45
44
  const breadCrumbItems = breadcrumbs.map(({ label, icon, href }) => ({
46
45
  key: `breadcrumb-item-${label}`,
@@ -34,14 +34,17 @@ export const CloneButton: React.FC<CloneButtonProps> = ({
34
34
  meta,
35
35
  });
36
36
 
37
- if (hidden) return null;
37
+ const isDisabled = disabled || rest.disabled;
38
+ const isHidden = hidden || rest.hidden;
39
+
40
+ if (isHidden) return null;
38
41
 
39
42
  return (
40
43
  <LinkComponent
41
44
  to={to}
42
45
  replace={false}
43
46
  onClick={(e: React.PointerEvent<HTMLButtonElement>) => {
44
- if (disabled) {
47
+ if (isDisabled) {
45
48
  e.preventDefault();
46
49
  return;
47
50
  }
@@ -53,7 +56,7 @@ export const CloneButton: React.FC<CloneButtonProps> = ({
53
56
  >
54
57
  <Button
55
58
  icon={<PlusSquareOutlined />}
56
- disabled={disabled}
59
+ disabled={isDisabled}
57
60
  title={title}
58
61
  data-testid={RefineButtonTestIds.CloneButton}
59
62
  className={RefineButtonClassNames.CloneButton}
@@ -29,19 +29,22 @@ export const CreateButton: React.FC<CreateButtonProps> = ({
29
29
  const { hidden, disabled, label, title, LinkComponent, to } = useCreateButton(
30
30
  {
31
31
  resource: resourceNameFromProps ?? propResourceNameOrRouteName,
32
- accessControl,
33
32
  meta,
33
+ accessControl,
34
34
  },
35
35
  );
36
36
 
37
- if (hidden) return null;
37
+ const isDisabled = disabled || rest.disabled;
38
+ const isHidden = hidden || rest.hidden;
39
+
40
+ if (isHidden) return null;
38
41
 
39
42
  return (
40
43
  <LinkComponent
41
44
  to={to}
42
45
  replace={false}
43
46
  onClick={(e: React.PointerEvent<HTMLButtonElement>) => {
44
- if (disabled) {
47
+ if (isDisabled) {
45
48
  e.preventDefault();
46
49
  return;
47
50
  }
@@ -53,7 +56,7 @@ export const CreateButton: React.FC<CreateButtonProps> = ({
53
56
  >
54
57
  <Button
55
58
  icon={<PlusSquareOutlined />}
56
- disabled={disabled}
59
+ disabled={isDisabled}
57
60
  title={title}
58
61
  data-testid={RefineButtonTestIds.CreateButton}
59
62
  className={RefineButtonClassNames.CreateButton}
@@ -58,7 +58,10 @@ export const DeleteButton: React.FC<DeleteButtonProps> = ({
58
58
  accessControl,
59
59
  });
60
60
 
61
- if (hidden) return null;
61
+ const isDisabled = disabled || rest.disabled;
62
+ const isHidden = hidden || rest.hidden;
63
+
64
+ if (isHidden) return null;
62
65
 
63
66
  return (
64
67
  <Popconfirm
@@ -69,16 +72,14 @@ export const DeleteButton: React.FC<DeleteButtonProps> = ({
69
72
  title={confirmTitle ?? defaultConfirmTitle}
70
73
  okButtonProps={{ disabled: loading }}
71
74
  onConfirm={onConfirm}
72
- disabled={
73
- typeof rest?.disabled !== "undefined" ? rest.disabled : disabled
74
- }
75
+ disabled={isDisabled}
75
76
  >
76
77
  <Button
77
78
  danger
78
79
  loading={loading}
79
80
  icon={<DeleteOutlined />}
80
81
  title={title}
81
- disabled={disabled}
82
+ disabled={isDisabled}
82
83
  data-testid={RefineButtonTestIds.DeleteButton}
83
84
  className={RefineButtonClassNames.DeleteButton}
84
85
  {...rest}
@@ -34,14 +34,17 @@ export const EditButton: React.FC<EditButtonProps> = ({
34
34
  accessControl,
35
35
  });
36
36
 
37
- if (hidden) return null;
37
+ const isDisabled = disabled || rest.disabled;
38
+ const isHidden = hidden || rest.hidden;
39
+
40
+ if (isHidden) return null;
38
41
 
39
42
  return (
40
43
  <LinkComponent
41
44
  to={to}
42
45
  replace={false}
43
46
  onClick={(e: React.PointerEvent<HTMLButtonElement>) => {
44
- if (disabled) {
47
+ if (isDisabled) {
45
48
  e.preventDefault();
46
49
  return;
47
50
  }
@@ -53,7 +56,7 @@ export const EditButton: React.FC<EditButtonProps> = ({
53
56
  >
54
57
  <Button
55
58
  icon={<EditOutlined />}
56
- disabled={disabled}
59
+ disabled={isDisabled}
57
60
  title={title}
58
61
  data-testid={RefineButtonTestIds.EditButton}
59
62
  className={RefineButtonClassNames.EditButton}
@@ -28,18 +28,21 @@ export const ListButton: React.FC<ListButtonProps> = ({
28
28
  }) => {
29
29
  const { to, label, title, hidden, disabled, LinkComponent } = useListButton({
30
30
  resource: resourceNameFromProps ?? propResourceNameOrRouteName,
31
- accessControl,
32
31
  meta,
32
+ accessControl,
33
33
  });
34
34
 
35
- if (hidden) return null;
35
+ const isDisabled = disabled || rest.disabled;
36
+ const isHidden = hidden || rest.hidden;
37
+
38
+ if (isHidden) return null;
36
39
 
37
40
  return (
38
41
  <LinkComponent
39
42
  to={to}
40
43
  replace={false}
41
44
  onClick={(e: React.PointerEvent<HTMLButtonElement>) => {
42
- if (disabled) {
45
+ if (isDisabled) {
43
46
  e.preventDefault();
44
47
  return;
45
48
  }
@@ -51,7 +54,7 @@ export const ListButton: React.FC<ListButtonProps> = ({
51
54
  >
52
55
  <Button
53
56
  icon={<BarsOutlined />}
54
- disabled={disabled}
57
+ disabled={isDisabled}
55
58
  title={title}
56
59
  data-testid={RefineButtonTestIds.ListButton}
57
60
  className={RefineButtonClassNames.ListButton}
@@ -34,14 +34,17 @@ export const ShowButton: React.FC<ShowButtonProps> = ({
34
34
  meta,
35
35
  });
36
36
 
37
- if (hidden) return null;
37
+ const isDisabled = disabled || rest.disabled;
38
+ const isHidden = hidden || rest.hidden;
39
+
40
+ if (isHidden) return null;
38
41
 
39
42
  return (
40
43
  <LinkComponent
41
44
  to={to}
42
45
  replace={false}
43
46
  onClick={(e: React.PointerEvent<HTMLButtonElement>) => {
44
- if (disabled) {
47
+ if (isDisabled) {
45
48
  e.preventDefault();
46
49
  return;
47
50
  }
@@ -52,8 +55,8 @@ export const ShowButton: React.FC<ShowButtonProps> = ({
52
55
  }}
53
56
  >
54
57
  <Button
58
+ disabled={isDisabled}
55
59
  icon={<EyeOutlined />}
56
- disabled={disabled}
57
60
  title={title}
58
61
  data-testid={RefineButtonTestIds.ShowButton}
59
62
  className={RefineButtonClassNames.ShowButton}
@@ -14,6 +14,7 @@ export const ThemedLayoutV2: React.FC<RefineThemedLayoutV2Props> = ({
14
14
  Footer,
15
15
  OffLayoutArea,
16
16
  initialSiderCollapsed,
17
+ onSiderCollapsed,
17
18
  }) => {
18
19
  const breakpoint = Grid.useBreakpoint();
19
20
  const SiderToRender = Sider ?? DefaultSider;
@@ -22,7 +23,10 @@ export const ThemedLayoutV2: React.FC<RefineThemedLayoutV2Props> = ({
22
23
  const hasSider = !!SiderToRender({ Title });
23
24
 
24
25
  return (
25
- <ThemedLayoutContextProvider initialSiderCollapsed={initialSiderCollapsed}>
26
+ <ThemedLayoutContextProvider
27
+ initialSiderCollapsed={initialSiderCollapsed}
28
+ onSiderCollapsed={onSiderCollapsed}
29
+ >
26
30
  <AntdLayout style={{ minHeight: "100vh" }} hasSider={hasSider}>
27
31
  <SiderToRender Title={Title} />
28
32
  <AntdLayout>
@@ -3,4 +3,5 @@ export interface IThemedLayoutContext {
3
3
  setSiderCollapsed: (visible: boolean) => void;
4
4
  mobileSiderOpen: boolean;
5
5
  setMobileSiderOpen: (visible: boolean) => void;
6
+ onSiderCollapsed?: (collapsed: boolean) => void;
6
7
  }
@@ -12,12 +12,20 @@ export const ThemedLayoutContext = React.createContext<IThemedLayoutContext>({
12
12
  export const ThemedLayoutContextProvider: React.FC<{
13
13
  children: ReactNode;
14
14
  initialSiderCollapsed?: boolean;
15
- }> = ({ children, initialSiderCollapsed }) => {
16
- const [siderCollapsed, setSiderCollapsed] = useState(
15
+ onSiderCollapsed?: (collapsed: boolean) => void;
16
+ }> = ({ children, initialSiderCollapsed, onSiderCollapsed }) => {
17
+ const [siderCollapsed, setSiderCollapsedState] = useState(
17
18
  initialSiderCollapsed ?? false,
18
19
  );
19
20
  const [mobileSiderOpen, setMobileSiderOpen] = useState(false);
20
21
 
22
+ const setSiderCollapsed = (collapsed: boolean) => {
23
+ setSiderCollapsedState(collapsed);
24
+ if (onSiderCollapsed) {
25
+ onSiderCollapsed(collapsed);
26
+ }
27
+ };
28
+
21
29
  return (
22
30
  <ThemedLayoutContext.Provider
23
31
  value={{
@@ -1,7 +1,7 @@
1
1
  import type {
2
2
  FilterDropdownProps,
3
3
  MapValueEvent,
4
- } from "@components/table/components";
4
+ } from "../../components/table/components";
5
5
  import dayjs from "dayjs";
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  import { useContext } from "react";
2
2
 
3
- import { ThemedLayoutContext } from "@contexts";
4
- import type { IThemedLayoutContext } from "@contexts/themedLayoutContext/IThemedLayoutContext";
3
+ import { ThemedLayoutContext } from "../../contexts";
4
+ import type { IThemedLayoutContext } from "../../contexts/themedLayoutContext/IThemedLayoutContext";
5
5
 
6
6
  export type UseThemedLayoutContextType = IThemedLayoutContext;
7
7