mirror of
https://github.com/ant-design/ant-design.git
synced 2024-12-13 23:59:12 +08:00
c157a3f9ea
* feat: CP support Table expandIcon * revert * demo: update demo
125 lines
4.7 KiB
TypeScript
125 lines
4.7 KiB
TypeScript
import React, { useState } from 'react';
|
|
import { ColorPicker, Flex, Form, Input, InputNumber, Slider, Typography, Watermark } from 'antd';
|
|
import type { ColorPickerProps, GetProp, WatermarkProps } from 'antd';
|
|
|
|
type Color = GetProp<ColorPickerProps, 'color'>;
|
|
|
|
const { Paragraph } = Typography;
|
|
|
|
interface WatermarkConfig {
|
|
content: string;
|
|
color: string | Color;
|
|
fontSize: number;
|
|
zIndex: number;
|
|
rotate: number;
|
|
gap: [number, number];
|
|
offset?: [number, number];
|
|
}
|
|
|
|
const App: React.FC = () => {
|
|
const [form] = Form.useForm();
|
|
const [config, setConfig] = useState<WatermarkConfig>({
|
|
content: 'Ant Design',
|
|
color: 'rgba(0, 0, 0, 0.15)',
|
|
fontSize: 16,
|
|
zIndex: 11,
|
|
rotate: -22,
|
|
gap: [100, 100],
|
|
offset: undefined,
|
|
});
|
|
const { content, color, fontSize, zIndex, rotate, gap, offset } = config;
|
|
|
|
const watermarkProps: WatermarkProps = {
|
|
content,
|
|
zIndex,
|
|
rotate,
|
|
gap,
|
|
offset,
|
|
font: { color: typeof color === 'string' ? color : color.toRgbString(), fontSize },
|
|
};
|
|
|
|
return (
|
|
<Flex gap="middle">
|
|
<Watermark {...watermarkProps}>
|
|
<Typography>
|
|
<Paragraph>
|
|
The light-speed iteration of the digital world makes products more complex. However,
|
|
human consciousness and attention resources are limited. Facing this design
|
|
contradiction, the pursuit of natural interaction will be the consistent direction of
|
|
Ant Design.
|
|
</Paragraph>
|
|
<Paragraph>
|
|
Natural user cognition: According to cognitive psychology, about 80% of external
|
|
information is obtained through visual channels. The most important visual elements in
|
|
the interface design, including layout, colors, illustrations, icons, etc., should fully
|
|
absorb the laws of nature, thereby reducing the user's cognitive cost and bringing
|
|
authentic and smooth feelings. In some scenarios, opportunely adding other sensory
|
|
channels such as hearing, touch can create a richer and more natural product experience.
|
|
</Paragraph>
|
|
<Paragraph>
|
|
Natural user behavior: In the interaction with the system, the designer should fully
|
|
understand the relationship between users, system roles, and task objectives, and also
|
|
contextually organize system functions and services. At the same time, a series of
|
|
methods such as behavior analysis, artificial intelligence and sensors could be applied
|
|
to assist users to make effective decisions and reduce extra operations of users, to
|
|
save users' mental and physical resources and make human-computer interaction more
|
|
natural.
|
|
</Paragraph>
|
|
</Typography>
|
|
<img
|
|
style={{ zIndex: 10, width: '100%', maxWidth: 800, position: 'relative' }}
|
|
src="https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*zx7LTI_ECSAAAAAAAAAAAABkARQnAQ"
|
|
alt="img"
|
|
/>
|
|
</Watermark>
|
|
<Form
|
|
style={{ width: 280, flexShrink: 0, borderLeft: '1px solid #eee', paddingInlineStart: 16 }}
|
|
form={form}
|
|
layout="vertical"
|
|
initialValues={config}
|
|
onValuesChange={(_, values) => {
|
|
setConfig(values);
|
|
}}
|
|
>
|
|
<Form.Item name="content" label="Content">
|
|
<Input placeholder="请输入" />
|
|
</Form.Item>
|
|
<Form.Item name="color" label="Color">
|
|
<ColorPicker />
|
|
</Form.Item>
|
|
<Form.Item name="fontSize" label="FontSize">
|
|
<Slider step={1} min={1} max={100} />
|
|
</Form.Item>
|
|
<Form.Item name="zIndex" label="zIndex">
|
|
<Slider step={1} min={0} max={100} />
|
|
</Form.Item>
|
|
<Form.Item name="rotate" label="Rotate">
|
|
<Slider step={1} min={-180} max={180} />
|
|
</Form.Item>
|
|
<Form.Item label="Gap" style={{ marginBottom: 0 }}>
|
|
<Flex gap="small">
|
|
<Form.Item name={['gap', 0]}>
|
|
<InputNumber placeholder="gapX" style={{ width: '100%' }} />
|
|
</Form.Item>
|
|
<Form.Item name={['gap', 1]}>
|
|
<InputNumber placeholder="gapY" style={{ width: '100%' }} />
|
|
</Form.Item>
|
|
</Flex>
|
|
</Form.Item>
|
|
<Form.Item label="Offset" style={{ marginBottom: 0 }}>
|
|
<Flex gap="small">
|
|
<Form.Item name={['offset', 0]}>
|
|
<InputNumber placeholder="offsetLeft" style={{ width: '100%' }} />
|
|
</Form.Item>
|
|
<Form.Item name={['offset', 1]}>
|
|
<InputNumber placeholder="offsetTop" style={{ width: '100%' }} />
|
|
</Form.Item>
|
|
</Flex>
|
|
</Form.Item>
|
|
</Form>
|
|
</Flex>
|
|
);
|
|
};
|
|
|
|
export default App;
|