@refinedev/antd 5.44.0 → 5.45.1
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.
- package/CHANGELOG.md +120 -0
- package/README.md +2 -2
- package/dist/components/breadcrumb/index.d.cts.map +1 -1
- package/dist/components/breadcrumb/index.d.ts.map +1 -1
- package/dist/components/buttons/clone/index.d.cts.map +1 -1
- package/dist/components/buttons/clone/index.d.ts.map +1 -1
- package/dist/components/buttons/create/index.d.cts.map +1 -1
- package/dist/components/buttons/create/index.d.ts.map +1 -1
- package/dist/components/buttons/delete/index.d.cts.map +1 -1
- package/dist/components/buttons/delete/index.d.ts.map +1 -1
- package/dist/components/buttons/edit/index.d.cts.map +1 -1
- package/dist/components/buttons/edit/index.d.ts.map +1 -1
- package/dist/components/buttons/list/index.d.cts.map +1 -1
- package/dist/components/buttons/list/index.d.ts.map +1 -1
- package/dist/components/buttons/show/index.d.cts.map +1 -1
- package/dist/components/buttons/show/index.d.ts.map +1 -1
- package/dist/components/themedLayoutV2/index.d.cts.map +1 -1
- package/dist/components/themedLayoutV2/index.d.ts.map +1 -1
- package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.cts +1 -0
- package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.cts.map +1 -1
- package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.mts +1 -0
- package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.mts.map +1 -0
- package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.ts +1 -0
- package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.ts.map +1 -1
- package/dist/contexts/themedLayoutContext/index.d.cts +1 -0
- package/dist/contexts/themedLayoutContext/index.d.cts.map +1 -1
- package/dist/contexts/themedLayoutContext/index.d.mts +1 -0
- package/dist/contexts/themedLayoutContext/index.d.mts.map +1 -0
- package/dist/contexts/themedLayoutContext/index.d.ts +1 -0
- package/dist/contexts/themedLayoutContext/index.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
- package/src/components/breadcrumb/index.tsx +2 -3
- package/src/components/buttons/clone/index.tsx +6 -3
- package/src/components/buttons/create/index.tsx +7 -4
- package/src/components/buttons/delete/index.tsx +6 -5
- package/src/components/buttons/edit/index.tsx +6 -3
- package/src/components/buttons/list/index.tsx +7 -4
- package/src/components/buttons/show/index.tsx +6 -3
- package/src/components/themedLayoutV2/index.tsx +5 -1
- package/src/contexts/themedLayoutContext/IThemedLayoutContext.ts +1 -0
- package/src/contexts/themedLayoutContext/index.tsx +10 -2
package/package.json
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
{
|
2
2
|
"name": "@refinedev/antd",
|
3
|
-
"version": "5.
|
3
|
+
"version": "5.45.1",
|
4
4
|
"private": false,
|
5
|
-
"description": "
|
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.
|
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.
|
50
|
-
"@refinedev/core": "^4.
|
51
|
-
"@refinedev/ui-tests": "^1.
|
49
|
+
"@refinedev/cli": "^2.16.42",
|
50
|
+
"@refinedev/core": "^4.57.1",
|
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
|
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
|
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
|
-
|
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 (
|
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={
|
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
|
-
|
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 (
|
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={
|
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
|
-
|
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={
|
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
|
-
|
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 (
|
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={
|
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
|
-
|
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 (
|
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={
|
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
|
-
|
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 (
|
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
|
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>
|
@@ -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
|
-
|
16
|
-
|
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={{
|