Skip to content

Commit b5fa2a2

Browse files
committed
feat(platform): support responsive form
1 parent 7382686 commit b5fa2a2

4 files changed

Lines changed: 51 additions & 18 deletions

File tree

packages/platform/src/app/components/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ export { AppList } from './list';
1414
export type { AppMapProps, AppMapMarkerClusterProps } from './map';
1515
export { AppMap } from './map';
1616

17+
export type { AppResponsiveFormProps } from './responsive-form';
18+
export { AppResponsiveForm } from './responsive-form';
19+
1720
export type { AppRouteHeaderProps, AppRouteHeaderBreadcrumbProps, AppRouteHeaderHeaderProps } from './route-header';
1821
export { AppRouteHeader } from './route-header';
1922

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import type { DFormProps } from '@react-devui/ui';
2+
3+
import React from 'react';
4+
5+
import { getClassName } from '@react-devui/utils';
6+
7+
export interface AppResponsiveFormProps {
8+
children: React.ReactElement;
9+
}
10+
11+
export function AppResponsiveForm(props: AppResponsiveFormProps): JSX.Element | null {
12+
const { children } = props;
13+
14+
return (
15+
<>
16+
{React.cloneElement<DFormProps>(children, {
17+
className: getClassName(children.props.className, 'd-md-none'),
18+
dLayout: 'vertical',
19+
})}
20+
{React.cloneElement<DFormProps>(children, {
21+
className: getClassName(children.props.className, 'd-none d-md-flex'),
22+
dLayout: 'horizontal',
23+
})}
24+
</>
25+
);
26+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './ResponsiveForm';

packages/platform/src/app/routes/list/standard-table/DeviceModal.tsx

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { useAsync, useEventCallback } from '@react-devui/hooks';
99
import { FormControl, FormGroup, useForm, Validators } from '@react-devui/ui';
1010
import { DForm, DInput, DModal, DSelect } from '@react-devui/ui';
1111

12+
import { AppResponsiveForm } from '../../../components';
1213
import { useAPI } from '../../../hooks';
1314

1415
export interface AppDeviceModalProps {
@@ -79,24 +80,26 @@ function DeviceModal(props: AppDeviceModalProps, ref: React.ForwardedRef<OpenSet
7980
setVisible(false);
8081
}}
8182
>
82-
<DForm dUpdate={updateForm} dLabelWidth="6em">
83-
<DForm.Group dFormGroup={form}>
84-
<DForm.Item dFormControls={{ name: 'Please enter name!' }} dLabel="Name">
85-
{({ name }) => <DInput dFormControl={name} dPlaceholder="Name" />}
86-
</DForm.Item>
87-
<DForm.Item dFormControls={{ model: 'Please select model!' }} dLabel="Model">
88-
{({ model }) => (
89-
<DSelect
90-
dFormControl={modelList ? model : undefined}
91-
dList={modelList ?? []}
92-
dLoading={isUndefined(modelList)}
93-
dPlaceholder="Model"
94-
dClearable
95-
/>
96-
)}
97-
</DForm.Item>
98-
</DForm.Group>
99-
</DForm>
83+
<AppResponsiveForm>
84+
<DForm dUpdate={updateForm} dLabelWidth="6em">
85+
<DForm.Group dFormGroup={form}>
86+
<DForm.Item dFormControls={{ name: 'Please enter name!' }} dLabel="Name">
87+
{({ name }) => <DInput dFormControl={name} dPlaceholder="Name" />}
88+
</DForm.Item>
89+
<DForm.Item dFormControls={{ model: 'Please select model!' }} dLabel="Model">
90+
{({ model }) => (
91+
<DSelect
92+
dFormControl={modelList ? model : undefined}
93+
dList={modelList ?? []}
94+
dLoading={isUndefined(modelList)}
95+
dPlaceholder="Model"
96+
dClearable
97+
/>
98+
)}
99+
</DForm.Item>
100+
</DForm.Group>
101+
</DForm>
102+
</AppResponsiveForm>
100103
</DModal>
101104
);
102105
}

0 commit comments

Comments
 (0)