style: form tabs header gap

This commit is contained in:
jialin
2025-10-22 10:21:27 +08:00
parent fc7350b7e2
commit 818c4fc9a2
2 changed files with 40 additions and 9 deletions
+6 -2
View File
@@ -29,8 +29,7 @@ const SegmentedInner = styled(Segmented)`
`; `;
const SegmentedHeader = styled.div` const SegmentedHeader = styled.div`
margin-top: 16px; padding: 16px 24px;
padding: 0 24px;
`; `;
interface AddModalProps { interface AddModalProps {
@@ -198,6 +197,11 @@ const AddModal: React.FC<AddModalProps> = (props) => {
</SegmentedHeader> </SegmentedHeader>
<ColumnWrapper <ColumnWrapper
maxHeight={'calc(100vh - 123px)'} maxHeight={'calc(100vh - 123px)'}
styles={{
container: {
paddingTop: 0
}
}}
footer={ footer={
<ModalFooter <ModalFooter
onCancel={onClose} onCancel={onClose}
+34 -7
View File
@@ -3,9 +3,15 @@ import CollapsePanel from '@/pages/_components/collapse-panel';
import { useIntl } from '@umijs/max'; import { useIntl } from '@umijs/max';
import { Form, Segmented } from 'antd'; import { Form, Segmented } from 'antd';
import _ from 'lodash'; import _ from 'lodash';
import React, { forwardRef, useImperativeHandle } from 'react'; import React, { forwardRef, useImperativeHandle, useMemo } from 'react';
import styled from 'styled-components'; import styled from 'styled-components';
import { excludeFields, gpusCountTypeMap, ScheduleValueMap } from '../config'; import {
deployFormKeyMap,
excludeFields,
gpusCountTypeMap,
modelSourceMap,
ScheduleValueMap
} from '../config';
import { backendOptionsMap } from '../config/backend-parameters'; import { backendOptionsMap } from '../config/backend-parameters';
import { FormContext } from '../config/form-context'; import { FormContext } from '../config/form-context';
import { import {
@@ -38,11 +44,12 @@ const SegmentedInner = styled(Segmented)`
} }
`; `;
const SegmentedHeader = styled.div` const SegmentedHeader = styled.div<{ $top?: number }>`
position: sticky; position: sticky;
top: 0; top: ${(props) => props.$top || 0}px;
z-index: 10; z-index: 10;
margin-bottom: 16px; padding-bottom: 16px;
background-color: var(--ant-color-bg-elevated);
`; `;
interface DataFormProps { interface DataFormProps {
@@ -67,6 +74,7 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
action, action,
isGGUF, isGGUF,
formKey, formKey,
source,
initialValues, initialValues,
sourceDisable = true, sourceDisable = true,
sourceList, sourceList,
@@ -112,6 +120,25 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
segmentOptions segmentOptions
}); });
const SegmentedTop = useMemo(() => {
if (
[
modelSourceMap.huggingface_value,
modelSourceMap.modelscope_value
].includes(source) &&
formKey === deployFormKeyMap.deployment
) {
return {
top: 50,
offsetTop: 146
};
}
return {
top: 0,
offsetTop: 96
};
}, [source, formKey]);
const handleSumit = () => { const handleSumit = () => {
form.submit(); form.submit();
}; };
@@ -230,7 +257,7 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
const handleTargetChange = async (val: any) => { const handleTargetChange = async (val: any) => {
setTarget(val); setTarget(val);
await scrollToSegment(val, { offsetTop: 96 }); await scrollToSegment(val, { offsetTop: SegmentedTop.offsetTop });
}; };
useImperativeHandle(ref, () => { useImperativeHandle(ref, () => {
@@ -275,7 +302,7 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
onBackendChange: handleBackendChange onBackendChange: handleBackendChange
}} }}
> >
<SegmentedHeader> <SegmentedHeader $top={SegmentedTop.top}>
<SegmentedInner <SegmentedInner
defaultValue="basic" defaultValue="basic"
value={target} value={target}