@tsingroc/tsingroc-components 1.0.5 → 2.0.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/README.md +20 -5
- package/dist/components/Calendar.d.ts +50 -0
- package/dist/components/Calendar.js +91 -0
- package/dist/components/Calendar.js.map +1 -0
- package/dist/components/CircularProgress.d.ts +21 -0
- package/dist/components/CircularProgress.js +15 -0
- package/dist/components/CircularProgress.js.map +1 -0
- package/dist/components/ImageBackground.d.ts +32 -0
- package/dist/components/ImageBackground.js +18 -0
- package/dist/components/ImageBackground.js.map +1 -0
- package/dist/components/QuickDateRangePicker.d.ts +30 -0
- package/dist/components/QuickDateRangePicker.js +36 -0
- package/dist/components/QuickDateRangePicker.js.map +1 -0
- package/dist/components/SegmentedButtons.d.ts +22 -0
- package/dist/components/SegmentedButtons.js +31 -0
- package/dist/components/SegmentedButtons.js.map +1 -0
- package/dist/components/TsingrocDatePicker.d.ts +38 -0
- package/dist/components/TsingrocDatePicker.js +36 -0
- package/dist/components/TsingrocDatePicker.js.map +1 -0
- package/dist/echarts/coordinateSystem.d.ts +39 -0
- package/dist/echarts/coordinateSystem.js +77 -0
- package/dist/echarts/coordinateSystem.js.map +1 -0
- package/dist/echarts/gl.d.ts +116 -0
- package/dist/echarts/gl.js +42 -0
- package/dist/echarts/gl.js.map +1 -0
- package/dist/echarts/index.d.ts +45 -0
- package/dist/echarts/index.js +61 -0
- package/dist/echarts/index.js.map +1 -0
- package/dist/echarts/legend.d.ts +17 -0
- package/dist/echarts/legend.js +15 -0
- package/dist/echarts/legend.js.map +1 -0
- package/dist/echarts/radar.d.ts +24 -0
- package/dist/echarts/radar.js +22 -0
- package/dist/echarts/radar.js.map +1 -0
- package/dist/echarts/series.d.ts +131 -0
- package/dist/echarts/series.js +184 -0
- package/dist/echarts/series.js.map +1 -0
- package/dist/echarts/tooltip.d.ts +13 -0
- package/dist/echarts/tooltip.js +14 -0
- package/dist/echarts/tooltip.js.map +1 -0
- package/dist/index.d.ts +8 -15
- package/dist/index.js +8 -15
- package/dist/index.js.map +1 -1
- package/package.json +28 -22
- package/dist/components/Button/index.d.ts +0 -5
- package/dist/components/Button/index.js +0 -8
- package/dist/components/Button/index.js.map +0 -1
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.js +0 -3
- package/dist/components/index.js.map +0 -1
- package/dist/components/tsingrocCom.d.ts +0 -15
- package/dist/components/tsingrocCom.js +0 -967
- package/dist/components/tsingrocCom.js.map +0 -1
package/README.md
CHANGED
|
@@ -22,8 +22,7 @@ $ npm run format # 格式化代码
|
|
|
22
22
|
$ npm run docs:dev # 启动文档站点的开发环境,文档站点的源代码位于 docs/
|
|
23
23
|
$ npm run docs:build # 构建文档站点,产物位于 doc_build/
|
|
24
24
|
$ npm run docs:preview # 预览构建完成的文档站点
|
|
25
|
-
$ npm run build #
|
|
26
|
-
$ npm publish
|
|
25
|
+
$ npm run build # 本地构建组件库
|
|
27
26
|
```
|
|
28
27
|
|
|
29
28
|
本项目正在逐步迁移到 TypeScript,新代码请使用 TypeScript 编写。在开发环境和文档站点中,请使用 `import {...} from "@";` 导入组件库的组件。
|
|
@@ -38,20 +37,26 @@ $ npm publish
|
|
|
38
37
|
.
|
|
39
38
|
├── .vscode/
|
|
40
39
|
├── dev/ -- 开发环境的源代码
|
|
41
|
-
│ ├── public/ --
|
|
40
|
+
│ ├── public/ -- 开发环境的静态资产
|
|
42
41
|
│ └── src/ -- 开发环境的 JavaScript 源代码
|
|
43
42
|
├── dist/ -- 组件库的构建产物
|
|
44
43
|
├── doc_build/ -- 文档站点的构建产物
|
|
45
44
|
├── docs/ -- 文档站点的源代码
|
|
45
|
+
│ ├── components/ -- 文档站点内部用到的组件
|
|
46
|
+
│ ├── examples/ -- 文档站点的组件用法范例
|
|
47
|
+
│ ├── plugins/ -- 文档站点的编译期插件
|
|
46
48
|
│ ├── public/ -- 文档站点的静态资产
|
|
49
|
+
│ ├── theme/ -- 文档站点的主题
|
|
47
50
|
│ └── zh/
|
|
48
|
-
│ ├──
|
|
49
|
-
│ └──
|
|
51
|
+
│ ├── echarts/ -- ECharts 组件的文档
|
|
52
|
+
│ └── react/ -- React 组件的文档
|
|
50
53
|
├── node_modules/
|
|
51
54
|
├── src/ -- 组件库的源代码
|
|
52
55
|
├── test/ -- 测试的源代码(暂时无效)
|
|
53
56
|
├── .gitignore
|
|
57
|
+
├── .gitlab-ci.yml -- GitLab CI 的配置文件
|
|
54
58
|
├── .prettierignore -- Prettier 需要忽略的文件列表
|
|
59
|
+
├── Dockerfile -- 用于部署文档的 Docker 容器
|
|
55
60
|
├── eslint.config.js -- ESLint 的配置文件
|
|
56
61
|
├── package-lock.json
|
|
57
62
|
├── package.json
|
|
@@ -62,3 +67,13 @@ $ npm publish
|
|
|
62
67
|
├── tsconfig.lib.json -- 组件库的 TypeScript 配置
|
|
63
68
|
└── tsconfig.web.json -- 开发环境和文档站点的 TypeScript 配置
|
|
64
69
|
```
|
|
70
|
+
|
|
71
|
+
## 发布
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
$ git tag v1.x.x # 将当前提交设置为新版本,注意只能在 main 分支上创建新版本
|
|
75
|
+
$ git push origin v1.x.x # 将 tag 推送到 GitLab,CI 会自动构建新版本并发布到 npmjs
|
|
76
|
+
$ # 注意,不要修改 package.json 中的版本号!
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
发布到 npmjs 的 access token 需要在 [GitLab 项目设置](https://git.tsingroc.com/web/tsingroc-components/-/settings/ci_cd)中设定,而且需要定期更新。
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type Dayjs } from "dayjs";
|
|
2
|
+
export interface CalendarProps extends Omit<React.HTMLAttributes<HTMLTableElement>, "onChange"> {
|
|
3
|
+
/**
|
|
4
|
+
* 当前显示的月份。
|
|
5
|
+
*
|
|
6
|
+
* 注意:传入的月份的时区会决定整个日历所用的时区。
|
|
7
|
+
*/
|
|
8
|
+
month: Dayjs;
|
|
9
|
+
/** 当前选中的日期。*/
|
|
10
|
+
selected?: Dayjs;
|
|
11
|
+
/** 选中日期更改时的回调函数。*/
|
|
12
|
+
onChange?: (selected: Dayjs) => void;
|
|
13
|
+
/**
|
|
14
|
+
* 无论一个月需要占用多少周,都总是显示 6 周。
|
|
15
|
+
* @default false
|
|
16
|
+
*/
|
|
17
|
+
alwaysSixWeeks?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* 淡化第一周和最后几周不属于本月的日期。
|
|
20
|
+
* @default true
|
|
21
|
+
*/
|
|
22
|
+
fadeAdjacentDays?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* 表头单元格的属性,详见 [MDN][1]。可以通过设置这里的 `children` 来自定义表头内容。
|
|
25
|
+
*
|
|
26
|
+
* [1]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th
|
|
27
|
+
*/
|
|
28
|
+
thProps?: (
|
|
29
|
+
/**
|
|
30
|
+
* 范围 0-6,表示一周的第几天
|
|
31
|
+
*
|
|
32
|
+
* 注意:这个数字的含义会受到地区设置的影响!请使用 `dayjs.weekdays()` 获取每一天的名称。
|
|
33
|
+
*/
|
|
34
|
+
weekday: number) => React.HTMLAttributes<HTMLTableCellElement>;
|
|
35
|
+
/**
|
|
36
|
+
* 日期单元格的属性,详见 [MDN][1]。可以通过设置这里的 `children` 来自定义单元格内容。
|
|
37
|
+
*
|
|
38
|
+
* [1]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td
|
|
39
|
+
*/
|
|
40
|
+
tdProps?: (date: Dayjs, selected: boolean) => React.HTMLAttributes<HTMLTableCellElement>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 一个日历组件。
|
|
44
|
+
*
|
|
45
|
+
* 除了文档列出的属性之外,也接受所有 [HTML Table 元素][1] 接受的属性。
|
|
46
|
+
*
|
|
47
|
+
* [1]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table
|
|
48
|
+
*/
|
|
49
|
+
declare function Calendar(props: CalendarProps): import("react/jsx-runtime").JSX.Element;
|
|
50
|
+
export default Calendar;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import dayjs, {} from "dayjs";
|
|
3
|
+
import { createStyles } from "antd-style";
|
|
4
|
+
import localeData from "dayjs/plugin/localeData";
|
|
5
|
+
import { useState } from "react";
|
|
6
|
+
dayjs.extend(localeData);
|
|
7
|
+
const useStyles = createStyles(({ token, css, cx }) => {
|
|
8
|
+
const calendarFade = css `
|
|
9
|
+
color: ${token.colorTextDisabled};
|
|
10
|
+
`;
|
|
11
|
+
const calendarSelected = css `
|
|
12
|
+
background: ${token.colorPrimaryBg};
|
|
13
|
+
color: ${token.colorPrimary};
|
|
14
|
+
`;
|
|
15
|
+
const calendar = css `
|
|
16
|
+
box-sizing: border-box;
|
|
17
|
+
width: 100%;
|
|
18
|
+
height: 100%;
|
|
19
|
+
border-collapse: collapse;
|
|
20
|
+
font-family: ${token.fontFamily};
|
|
21
|
+
font-size: ${token.fontSize}px;
|
|
22
|
+
line-height: ${token.lineHeight};
|
|
23
|
+
user-select: none;
|
|
24
|
+
|
|
25
|
+
> thead > tr > th {
|
|
26
|
+
box-sizing: border-box;
|
|
27
|
+
height: ${token.fontSize * token.lineHeight + token.paddingXXS * 2}px;
|
|
28
|
+
padding: ${token.paddingXXS}px;
|
|
29
|
+
font-weight: normal;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
> tbody > tr > td {
|
|
33
|
+
box-sizing: border-box;
|
|
34
|
+
width: calc(100% / 7);
|
|
35
|
+
border: 1px solid ${token.colorBorder};
|
|
36
|
+
padding: ${token.paddingXXS}px;
|
|
37
|
+
vertical-align: bottom;
|
|
38
|
+
transition:
|
|
39
|
+
background ease ${token.motionDurationFast},
|
|
40
|
+
color ease ${token.motionDurationFast};
|
|
41
|
+
|
|
42
|
+
&:hover:not(.${cx(calendarSelected)}) {
|
|
43
|
+
background: ${token.colorBgTextHover};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
`;
|
|
47
|
+
return {
|
|
48
|
+
calendar,
|
|
49
|
+
calendarFade,
|
|
50
|
+
calendarSelected,
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* 一个日历组件。
|
|
55
|
+
*
|
|
56
|
+
* 除了文档列出的属性之外,也接受所有 [HTML Table 元素][1] 接受的属性。
|
|
57
|
+
*
|
|
58
|
+
* [1]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table
|
|
59
|
+
*/
|
|
60
|
+
function Calendar(props) {
|
|
61
|
+
const { month, selected: propsSelected, onChange, alwaysSixWeeks, fadeAdjacentDays = true, thProps, tdProps, className, ...rest } = props;
|
|
62
|
+
const { cx, styles } = useStyles();
|
|
63
|
+
const [selected, setSelected] = propsSelected === undefined
|
|
64
|
+
? // eslint-disable-next-line react-hooks/rules-of-hooks
|
|
65
|
+
useState()
|
|
66
|
+
: [propsSelected, () => { }];
|
|
67
|
+
const monthStart = month.startOf("month");
|
|
68
|
+
const calendarStart = monthStart.startOf("week");
|
|
69
|
+
const monthEnd = month.endOf("month");
|
|
70
|
+
const minWeeks = Math.ceil(monthEnd.diff(calendarStart, "week", true));
|
|
71
|
+
const weekdays = [...dayjs.weekdaysShort()];
|
|
72
|
+
// 按地区设置调整一周的第一天
|
|
73
|
+
weekdays.splice(0, 0, ...weekdays.splice(calendarStart.day()));
|
|
74
|
+
return (_jsxs("table", { ...rest, className: cx(styles.calendar, className), children: [_jsx("thead", { children: _jsx("tr", { children: weekdays.map((name, weekday) => (_jsx("th", { children: name, ...thProps?.(weekday) }, weekday))) }) }), _jsx("tbody", { children: Array.from({ length: alwaysSixWeeks ? 6 : minWeeks }, (_, week) => (_jsx("tr", { children: Array(7)
|
|
75
|
+
.fill(null)
|
|
76
|
+
.map((_, weekday) => {
|
|
77
|
+
const date = calendarStart.add(week * 7 + weekday, "day");
|
|
78
|
+
const fade = fadeAdjacentDays && date.month() != monthStart.month();
|
|
79
|
+
const isSelected = Math.floor(selected?.diff(date, "day", true) ?? NaN) === 0;
|
|
80
|
+
const { className, ...props } = tdProps?.(date, false) ?? {};
|
|
81
|
+
return (_jsx("td", { children: date.date(), onClick: () => {
|
|
82
|
+
setSelected(date);
|
|
83
|
+
onChange?.(date);
|
|
84
|
+
}, ...props, className: cx({
|
|
85
|
+
[styles.calendarFade]: fade,
|
|
86
|
+
[styles.calendarSelected]: isSelected,
|
|
87
|
+
}, className) }, weekday));
|
|
88
|
+
}) }, week))) })] }));
|
|
89
|
+
}
|
|
90
|
+
export default Calendar;
|
|
91
|
+
//# sourceMappingURL=Calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Calendar.js","sourceRoot":"","sources":["../../src/components/Calendar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ProgressProps } from "antd";
|
|
2
|
+
import type { ProgressGradient } from "antd/es/progress/progress";
|
|
3
|
+
export interface CircularProgressProps extends ProgressProps, React.RefAttributes<HTMLDivElement> {
|
|
4
|
+
/** 进度百分比,范围是 0-100。*/
|
|
5
|
+
progress?: number;
|
|
6
|
+
/**
|
|
7
|
+
* 进度条已完成部分的颜色。
|
|
8
|
+
* @default "#34A9D4"
|
|
9
|
+
*/
|
|
10
|
+
color?: string | string[] | ProgressGradient;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 环形进度条。
|
|
14
|
+
*
|
|
15
|
+
* 本组件基于 [Ant Design 的 `Progress`][1] 自定义而来。
|
|
16
|
+
* 因此,除了文档中列出的属性以外,也兼容 `Progress` 的所有属性。
|
|
17
|
+
*
|
|
18
|
+
* [1]: https://ant-design.antgroup.com/components/progress-cn
|
|
19
|
+
*/
|
|
20
|
+
declare function CircularProgress(props: CircularProgressProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export default CircularProgress;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Progress } from "antd";
|
|
3
|
+
/**
|
|
4
|
+
* 环形进度条。
|
|
5
|
+
*
|
|
6
|
+
* 本组件基于 [Ant Design 的 `Progress`][1] 自定义而来。
|
|
7
|
+
* 因此,除了文档中列出的属性以外,也兼容 `Progress` 的所有属性。
|
|
8
|
+
*
|
|
9
|
+
* [1]: https://ant-design.antgroup.com/components/progress-cn
|
|
10
|
+
*/
|
|
11
|
+
function CircularProgress(props) {
|
|
12
|
+
return (_jsx(Progress, { type: "circle", percent: props.progress, strokeLinecap: "butt", strokeWidth: 9, strokeColor: props.color ?? "#34A9D4", trailColor: "#22405A", ...props }));
|
|
13
|
+
}
|
|
14
|
+
export default CircularProgress;
|
|
15
|
+
//# sourceMappingURL=CircularProgress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CircularProgress.js","sourceRoot":"","sources":["../../src/components/CircularProgress.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,MAAM,CAAC;AAepD;;;;;;;GAOG;AACH,SAAS,gBAAgB,CAAC,KAA4B;IACpD,OAAO,CACL,KAAC,QAAQ,IACP,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,KAAK,CAAC,QAAQ,EACvB,aAAa,EAAC,MAAM,EACpB,WAAW,EAAE,CAAC,EACd,WAAW,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS,EACrC,UAAU,EAAC,SAAS,KAChB,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface ImageBackgroundProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2
|
+
/**
|
|
3
|
+
* 图片的 URL。
|
|
4
|
+
*
|
|
5
|
+
* 建议导入图片,然后将导入得到的地址填入 `url`,而不要硬编码地址。
|
|
6
|
+
*
|
|
7
|
+
* ```jsx
|
|
8
|
+
* import img from "../public/image.png";
|
|
9
|
+
* <ImageBackground url={img}>...</ImageBackground>
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
url: string;
|
|
13
|
+
children: React.ReactNode;
|
|
14
|
+
/**
|
|
15
|
+
* 容器的宽度。
|
|
16
|
+
* @default "100%"
|
|
17
|
+
*/
|
|
18
|
+
width?: React.CSSProperties["width"];
|
|
19
|
+
/**
|
|
20
|
+
* 容器的高度。
|
|
21
|
+
* @default "100%"
|
|
22
|
+
*/
|
|
23
|
+
height?: React.CSSProperties["height"];
|
|
24
|
+
style?: React.CSSProperties;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 以图片作为背景的块级容器。除了文档列出的属性以外,也兼容所有 [HTML Div 元素][1] 的属性。
|
|
28
|
+
*
|
|
29
|
+
* [1]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div
|
|
30
|
+
*/
|
|
31
|
+
declare function ImageBackground(props: ImageBackgroundProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
export default ImageBackground;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* 以图片作为背景的块级容器。除了文档列出的属性以外,也兼容所有 [HTML Div 元素][1] 的属性。
|
|
4
|
+
*
|
|
5
|
+
* [1]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div
|
|
6
|
+
*/
|
|
7
|
+
function ImageBackground(props) {
|
|
8
|
+
const { url, children, width = "100%", height = "100%", style, ...rest } = props;
|
|
9
|
+
return (_jsx("div", { ...rest, style: {
|
|
10
|
+
backgroundSize: "100% 100%",
|
|
11
|
+
width: width,
|
|
12
|
+
height: height,
|
|
13
|
+
backgroundImage: `url('${url}')`,
|
|
14
|
+
...style,
|
|
15
|
+
}, children: children }));
|
|
16
|
+
}
|
|
17
|
+
export default ImageBackground;
|
|
18
|
+
//# sourceMappingURL=ImageBackground.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageBackground.js","sourceRoot":"","sources":["../../src/components/ImageBackground.tsx"],"names":[],"mappings":";AA2BA;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAA2B;IAClD,MAAM,EACJ,GAAG,EACH,QAAQ,EACR,KAAK,GAAG,MAAM,EACd,MAAM,GAAG,MAAM,EACf,KAAK,EACL,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IACV,OAAO,CACL,iBACM,IAAI,EACR,KAAK,EAAE;YACL,cAAc,EAAE,WAAW;YAC3B,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,MAAM;YACd,eAAe,EAAE,QAAQ,GAAG,IAAI;YAChC,GAAG,KAAK;SACT,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type ButtonProps, type SpaceProps } from "antd";
|
|
2
|
+
import { type Dayjs } from "dayjs";
|
|
3
|
+
import type { NoUndefinedRangeValueType } from "rc-picker/lib/PickerInput/RangePicker";
|
|
4
|
+
import type { RangePickerProps } from "antd/es/date-picker";
|
|
5
|
+
export interface QuickDateRangePickerProps extends Omit<SpaceProps, "onChange"> {
|
|
6
|
+
/** 一个二元组 `[start, end]`,表示时间段的开始和结束。*/
|
|
7
|
+
value?: NoUndefinedRangeValueType<Dayjs>;
|
|
8
|
+
onChange?: (range: NoUndefinedRangeValueType<Dayjs>) => void;
|
|
9
|
+
/**
|
|
10
|
+
* 内部按钮的属性,参见 [Ant Design 的 `Button` API][1]。
|
|
11
|
+
*
|
|
12
|
+
* [1]: https://ant-design.antgroup.com/components/button-cn#api
|
|
13
|
+
*/
|
|
14
|
+
buttonProps?: ButtonProps;
|
|
15
|
+
/**
|
|
16
|
+
* 内部日期范围选择器的属性,参见 [Ant Design 的 `DatePicker.RangePicker` API][1]。
|
|
17
|
+
*
|
|
18
|
+
* [1]: https://ant-design.antgroup.com/components/date-picker-cn#rangepicker
|
|
19
|
+
*/
|
|
20
|
+
pickerProps?: RangePickerProps;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 带有快速选择最近 3/5/7 天功能的日期范围选择器。
|
|
24
|
+
*
|
|
25
|
+
* 除了文档中列出的属性外,该组件会将其它属性转交给 [Ant Design 的 `Space` 组件][1]。
|
|
26
|
+
*
|
|
27
|
+
* [1]: https://ant-design.antgroup.com/components/space-cn#api
|
|
28
|
+
*/
|
|
29
|
+
declare function QuickDateRangePicker(props: QuickDateRangePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export default QuickDateRangePicker;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, DatePicker, Space, } from "antd";
|
|
3
|
+
import dayjs, {} from "dayjs";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
const QUICK_PICK_RANGES = [
|
|
6
|
+
{ value: 3, label: "最近 3 天" },
|
|
7
|
+
{ value: 5, label: "最近 5 天" },
|
|
8
|
+
{ value: 7, label: "最近 7 天" },
|
|
9
|
+
];
|
|
10
|
+
/**
|
|
11
|
+
* 带有快速选择最近 3/5/7 天功能的日期范围选择器。
|
|
12
|
+
*
|
|
13
|
+
* 除了文档中列出的属性外,该组件会将其它属性转交给 [Ant Design 的 `Space` 组件][1]。
|
|
14
|
+
*
|
|
15
|
+
* [1]: https://ant-design.antgroup.com/components/space-cn#api
|
|
16
|
+
*/
|
|
17
|
+
function QuickDateRangePicker(props) {
|
|
18
|
+
const { value, onChange, buttonProps, pickerProps, ...rest } = props;
|
|
19
|
+
const [range, setRange] = value === undefined
|
|
20
|
+
? // eslint-disable-next-line react-hooks/rules-of-hooks
|
|
21
|
+
useState(undefined)
|
|
22
|
+
: [value, () => { }];
|
|
23
|
+
function quickPick(value) {
|
|
24
|
+
const end = dayjs();
|
|
25
|
+
const start = end.subtract(value - 1, "day");
|
|
26
|
+
const newRange = [start, end];
|
|
27
|
+
setRange(newRange);
|
|
28
|
+
onChange?.(newRange);
|
|
29
|
+
}
|
|
30
|
+
return (_jsxs(Space, { ...rest, children: [QUICK_PICK_RANGES.map((item, index) => (_jsx(Button, { onClick: () => quickPick(item.value), ...buttonProps, children: item.label }, index))), _jsx(DatePicker.RangePicker, { value: range, allowClear: false, onChange: (range) => {
|
|
31
|
+
setRange(range);
|
|
32
|
+
onChange?.(range); // 由于 allowClear=false,这里 range 不可能为 null
|
|
33
|
+
}, ...pickerProps })] }));
|
|
34
|
+
}
|
|
35
|
+
export default QuickDateRangePicker;
|
|
36
|
+
//# sourceMappingURL=QuickDateRangePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuickDateRangePicker.js","sourceRoot":"","sources":["../../src/components/QuickDateRangePicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,MAAM,EAEN,UAAU,EACV,KAAK,GAEN,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,EAAc,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAqBjC,MAAM,iBAAiB,GAAG;IACxB,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC7B,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC7B,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;CAC9B,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,KAAgC;IAC5D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACrE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GACrB,KAAK,KAAK,SAAS;QACjB,CAAC,CAAC,sDAAsD;YACtD,QAAQ,CAA+C,SAAS,CAAC;QACnE,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxB,SAAS,SAAS,CAAC,KAAa;QAC9B,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAqC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAChE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CACL,MAAC,KAAK,OAAK,IAAI,aAEZ,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CACtC,KAAC,MAAM,IAEL,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAChC,WAAW,YAEd,IAAI,CAAC,KAAK,IAJN,KAAK,CAKH,CACV,CAAC,EACF,KAAC,UAAU,CAAC,WAAW,IACrB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,KAAK,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,QAAQ,CAAC,KAAM,CAAC,CAAC;oBACjB,QAAQ,EAAE,CAAC,KAAM,CAAC,CAAC,CAAC,yCAAyC;gBAC/D,CAAC,KACG,WAAW,GACf,IACI,CACT,CAAC;AACJ,CAAC;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type RadioGroupProps } from "antd";
|
|
2
|
+
/**
|
|
3
|
+
* 分段单选按钮。
|
|
4
|
+
*
|
|
5
|
+
* 该组件是 [Ant Design 的 `Radio.Group optionType="button"`][1] 的别名。
|
|
6
|
+
*
|
|
7
|
+
* [1]: https://ant-design.antgroup.com/components/radio-cn#radiogroup
|
|
8
|
+
*/
|
|
9
|
+
declare function SegmentedButtons(props: RadioGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export interface TimeUnitSwitcherProps extends Omit<RadioGroupProps, "onChange"> {
|
|
11
|
+
value?: "day" | "week" | "month";
|
|
12
|
+
onChange?: (value: "day" | "week" | "month") => void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 时间单位(日/周/月)切换按钮。
|
|
16
|
+
*
|
|
17
|
+
* 该组件是 {@link SegmentedButtons} 的特化版本。更多属性参见 [`Radio.Group`][1]。
|
|
18
|
+
*
|
|
19
|
+
* [1]: https://ant-design.antgroup.com/components/radio-cn#radiogroup
|
|
20
|
+
*/
|
|
21
|
+
export declare function TimeUnitSwitcher(props: TimeUnitSwitcherProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export default SegmentedButtons;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Radio } from "antd";
|
|
3
|
+
/**
|
|
4
|
+
* 分段单选按钮。
|
|
5
|
+
*
|
|
6
|
+
* 该组件是 [Ant Design 的 `Radio.Group optionType="button"`][1] 的别名。
|
|
7
|
+
*
|
|
8
|
+
* [1]: https://ant-design.antgroup.com/components/radio-cn#radiogroup
|
|
9
|
+
*/
|
|
10
|
+
function SegmentedButtons(props) {
|
|
11
|
+
return _jsx(Radio.Group, { optionType: "button", ...props });
|
|
12
|
+
}
|
|
13
|
+
// TODO i18n
|
|
14
|
+
const TIME_UNIT_OPTIONS = [
|
|
15
|
+
{ label: "日", value: "day" },
|
|
16
|
+
{ label: "周", value: "week" },
|
|
17
|
+
{ label: "月", value: "month" },
|
|
18
|
+
];
|
|
19
|
+
/**
|
|
20
|
+
* 时间单位(日/周/月)切换按钮。
|
|
21
|
+
*
|
|
22
|
+
* 该组件是 {@link SegmentedButtons} 的特化版本。更多属性参见 [`Radio.Group`][1]。
|
|
23
|
+
*
|
|
24
|
+
* [1]: https://ant-design.antgroup.com/components/radio-cn#radiogroup
|
|
25
|
+
*/
|
|
26
|
+
export function TimeUnitSwitcher(props) {
|
|
27
|
+
const { onChange, ...rest } = props;
|
|
28
|
+
return (_jsx(Radio.Group, { optionType: "button", options: TIME_UNIT_OPTIONS, onChange: (e) => onChange?.(e.target.value), ...rest }));
|
|
29
|
+
}
|
|
30
|
+
export default SegmentedButtons;
|
|
31
|
+
//# sourceMappingURL=SegmentedButtons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SegmentedButtons.js","sourceRoot":"","sources":["../../src/components/SegmentedButtons.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAwB,MAAM,MAAM,CAAC;AAEnD;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAsB;IAC9C,OAAO,KAAC,KAAK,CAAC,KAAK,IAAC,UAAU,EAAC,QAAQ,KAAK,KAAK,GAAI,CAAC;AACxD,CAAC;AAED,YAAY;AACZ,MAAM,iBAAiB,GAAG;IACxB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;IAC5B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;IAC7B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;CAC/B,CAAC;AAQF;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACpC,OAAO,CACL,KAAC,KAAK,CAAC,KAAK,IACV,UAAU,EAAC,QAAQ,EACnB,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KACvC,IAAI,GACR,CACH,CAAC;AACJ,CAAC;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type DatePickerProps as AntdDatePickerProps, type ButtonProps } from "antd";
|
|
2
|
+
import type { Dayjs } from "dayjs";
|
|
3
|
+
import type { SpaceCompactProps } from "antd/es/space/Compact";
|
|
4
|
+
export interface DatePickerProps extends Omit<SpaceCompactProps, "onChange"> {
|
|
5
|
+
value?: Dayjs;
|
|
6
|
+
onChange?: (value: Dayjs) => void;
|
|
7
|
+
/**
|
|
8
|
+
* 日期的单位。
|
|
9
|
+
* @default "month"
|
|
10
|
+
*/
|
|
11
|
+
dataType?: "day" | "week" | "month" | "year";
|
|
12
|
+
/**
|
|
13
|
+
* 是否禁用。
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* 左右按钮的 `props`,见 [Ant Design 的 `Button` API][1]。
|
|
19
|
+
*
|
|
20
|
+
* [1]: https://ant-design.antgroup.com/components/button-cn#api
|
|
21
|
+
*/
|
|
22
|
+
buttonProps?: ButtonProps;
|
|
23
|
+
/**
|
|
24
|
+
* 日期选择器的 `props`,见 [Ant Design 的 `DatePicker` API][1]。
|
|
25
|
+
*
|
|
26
|
+
* [1]: https://ant-design.antgroup.com/components/date-picker-cn#api
|
|
27
|
+
*/
|
|
28
|
+
pickerProps?: AntdDatePickerProps;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 支持快速跳转的日/周/月/年选择器。
|
|
32
|
+
*
|
|
33
|
+
* 除了文档中列出的属性外,该组件会将其它属性转交给 [Ant Design 的 `Space.Compact` 组件][1]。
|
|
34
|
+
*
|
|
35
|
+
* [1]: https://ant-design.antgroup.com/components/space-cn#spacecompact
|
|
36
|
+
*/
|
|
37
|
+
declare function TsingrocDatePicker(props: DatePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
export default TsingrocDatePicker;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, DatePicker, Space, } from "antd";
|
|
3
|
+
import { LeftOutlined, RightOutlined } from "@ant-design/icons";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
/**
|
|
6
|
+
* 支持快速跳转的日/周/月/年选择器。
|
|
7
|
+
*
|
|
8
|
+
* 除了文档中列出的属性外,该组件会将其它属性转交给 [Ant Design 的 `Space.Compact` 组件][1]。
|
|
9
|
+
*
|
|
10
|
+
* [1]: https://ant-design.antgroup.com/components/space-cn#spacecompact
|
|
11
|
+
*/
|
|
12
|
+
function TsingrocDatePicker(props) {
|
|
13
|
+
const { value, onChange: propsOnChange, dataType = "month", disabled, buttonProps, pickerProps, ...rest } = props;
|
|
14
|
+
const [dateValue, setDateValue] = value === undefined
|
|
15
|
+
? // eslint-disable-next-line react-hooks/rules-of-hooks
|
|
16
|
+
useState(undefined)
|
|
17
|
+
: [value, () => { }];
|
|
18
|
+
/**
|
|
19
|
+
* 快速增减一定时间,如果当前未选择日期则无效。
|
|
20
|
+
* @param delta 增减的时间量,按传入的时间单位 `dataType` 计算
|
|
21
|
+
*/
|
|
22
|
+
const quickSwitch = (delta) => {
|
|
23
|
+
if (!dateValue)
|
|
24
|
+
return;
|
|
25
|
+
const temp = dateValue.add(delta, dataType);
|
|
26
|
+
setDateValue(temp);
|
|
27
|
+
propsOnChange?.(temp);
|
|
28
|
+
};
|
|
29
|
+
const onChange = (value) => {
|
|
30
|
+
setDateValue(value);
|
|
31
|
+
propsOnChange?.(value);
|
|
32
|
+
};
|
|
33
|
+
return (_jsxs(Space.Compact, { ...rest, children: [_jsx(Button, { onClick: () => quickSwitch(-1), icon: _jsx(LeftOutlined, {}), disabled: disabled, className: props.className, ...buttonProps }), _jsx(DatePicker, { picker: dataType == "day" ? "date" : dataType, value: dateValue, onChange: onChange, disabled: disabled, className: props.className, ...pickerProps }), _jsx(Button, { onClick: () => quickSwitch(+1), icon: _jsx(RightOutlined, {}), disabled: disabled, ...buttonProps })] }));
|
|
34
|
+
}
|
|
35
|
+
export default TsingrocDatePicker;
|
|
36
|
+
//# sourceMappingURL=TsingrocDatePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TsingrocDatePicker.js","sourceRoot":"","sources":["../../src/components/TsingrocDatePicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAEL,MAAM,EAEN,UAAU,EACV,KAAK,GACN,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AA6BjC;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,KAAsB;IAChD,MAAM,EACJ,KAAK,EACL,QAAQ,EAAE,aAAa,EACvB,QAAQ,GAAG,OAAO,EAClB,QAAQ,EACR,WAAW,EACX,WAAW,EACX,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAC7B,KAAK,KAAK,SAAS;QACjB,CAAC,CAAC,sDAAsD;YACtD,QAAQ,CAAoB,SAAS,CAAC;QACxC,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxB;;;OAGG;IACH,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE;QACpC,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5C,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAE,EAAE;QAChC,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC;IACF,OAAO,CACL,MAAC,KAAK,CAAC,OAAO,OAAK,IAAI,aACrB,KAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAC9B,IAAI,EAAE,KAAC,YAAY,KAAG,EACtB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,KAAK,CAAC,SAAS,KACtB,WAAW,GACf,EACF,KAAC,UAAU,IACT,MAAM,EAAE,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAC7C,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,KAAK,CAAC,SAAS,KACtB,WAAW,GACf,EACF,KAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAC9B,IAAI,EAAE,KAAC,aAAa,KAAG,EACvB,QAAQ,EAAE,QAAQ,KACd,WAAW,GACf,IACY,CACjB,CAAC;AACJ,CAAC;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { BarSeriesOption, BoxplotSeriesOption, FlowGLSeriesOption, GridComponentOption, LineSeriesOption, XAXisComponentOption, YAXisComponentOption } from "echarts";
|
|
2
|
+
import type { EChartsComponent, EChartsSeries } from ".";
|
|
3
|
+
export type GridPreset = (grid: GridComponentOption, xAxis: XAXisComponentOption, yAxis: YAXisComponentOption) => void;
|
|
4
|
+
export interface GridOption {
|
|
5
|
+
/**
|
|
6
|
+
* 坐标网格的其它设置,参见 [ECharts 文档][1]。
|
|
7
|
+
*
|
|
8
|
+
* [1]: https://echarts.apache.org/zh/option.html#grid
|
|
9
|
+
*/
|
|
10
|
+
option?: GridComponentOption;
|
|
11
|
+
/**
|
|
12
|
+
* X 轴的设置,参见 [ECharts 文档][1]。
|
|
13
|
+
*
|
|
14
|
+
* [1]: https://echarts.apache.org/zh/option.html#xAxis
|
|
15
|
+
*/
|
|
16
|
+
xAxis?: XAXisComponentOption;
|
|
17
|
+
/**
|
|
18
|
+
* Y 轴的设置,参见 [ECharts 文档][1]。
|
|
19
|
+
*
|
|
20
|
+
* [1]: https://echarts.apache.org/zh/option.html#yAxis
|
|
21
|
+
*/
|
|
22
|
+
yAxis?: YAXisComponentOption;
|
|
23
|
+
/**
|
|
24
|
+
* 预设列表。预设的优先级**高于**上述设置。
|
|
25
|
+
*
|
|
26
|
+
* 可用的预设:{@link minimalGrid}
|
|
27
|
+
*/
|
|
28
|
+
presets?: GridPreset[];
|
|
29
|
+
/** 要绘制在该坐标系上的系列。*/
|
|
30
|
+
series?: EChartsSeries<LineSeriesOption | BarSeriesOption | BoxplotSeriesOption | FlowGLSeriesOption>[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 添加一个直角坐标系。X 轴和 Y 轴的数据类型默认值与 ECharts 原版一致。
|
|
34
|
+
*
|
|
35
|
+
* **注意**:该组件是一个 React hook,需要遵守正常使用 hook 的准则。
|
|
36
|
+
*/
|
|
37
|
+
export declare function useGrid(option: GridOption): EChartsComponent;
|
|
38
|
+
/** 使用该预设可以隐藏直角坐标系的坐标轴和网格线,只留下图像本身,并且使其填满整个容器。*/
|
|
39
|
+
export declare function minimalGrid(): GridPreset;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { useId } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* 添加一个直角坐标系。X 轴和 Y 轴的数据类型默认值与 ECharts 原版一致。
|
|
4
|
+
*
|
|
5
|
+
* **注意**:该组件是一个 React hook,需要遵守正常使用 hook 的准则。
|
|
6
|
+
*/
|
|
7
|
+
export function useGrid(option) {
|
|
8
|
+
const grid = {
|
|
9
|
+
id: useId(),
|
|
10
|
+
left: 0,
|
|
11
|
+
right: 0,
|
|
12
|
+
top: 24,
|
|
13
|
+
bottom: 0,
|
|
14
|
+
containLabel: true,
|
|
15
|
+
...option.option,
|
|
16
|
+
};
|
|
17
|
+
const gridId = grid.id;
|
|
18
|
+
const xAxis = {
|
|
19
|
+
id: gridId + "x",
|
|
20
|
+
gridId,
|
|
21
|
+
...option.xAxis,
|
|
22
|
+
nameTextStyle: { fontWeight: "bold", ...option.xAxis?.nameTextStyle },
|
|
23
|
+
axisTick: {
|
|
24
|
+
alignWithLabel: true,
|
|
25
|
+
...option.xAxis?.axisTick,
|
|
26
|
+
// 此处需要强转,因为 alignWithLabel 仅当 boundaryGap = true 时有效,但无效也没有影响
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
const xAxisId = xAxis.id;
|
|
30
|
+
const yAxis = {
|
|
31
|
+
id: gridId + "y",
|
|
32
|
+
type: option.yAxis?.type ?? "value",
|
|
33
|
+
gridId,
|
|
34
|
+
nameGap: 12,
|
|
35
|
+
...option.yAxis,
|
|
36
|
+
nameTextStyle: {
|
|
37
|
+
align: "left",
|
|
38
|
+
fontWeight: "bold",
|
|
39
|
+
...option.yAxis?.nameTextStyle,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
const yAxisId = yAxis.id;
|
|
43
|
+
option.presets?.forEach((preset) => preset(grid, xAxis, yAxis));
|
|
44
|
+
return {
|
|
45
|
+
grid: [grid],
|
|
46
|
+
xAxis: [xAxis],
|
|
47
|
+
yAxis: [yAxis],
|
|
48
|
+
series: option.series
|
|
49
|
+
?.flatMap((item) => item.series)
|
|
50
|
+
?.map((series) => ({
|
|
51
|
+
...series,
|
|
52
|
+
coordinateSystem: "cartesian2d",
|
|
53
|
+
xAxisId,
|
|
54
|
+
yAxisId,
|
|
55
|
+
})),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const MINIMAL_GRID = (grid, xAxis, yAxis) => {
|
|
59
|
+
grid.top = 0;
|
|
60
|
+
xAxis.show = false;
|
|
61
|
+
if ((xAxis.type === undefined && xAxis.data !== undefined) ||
|
|
62
|
+
xAxis.type === "category") {
|
|
63
|
+
xAxis.boundaryGap = false;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
xAxis.min = "dataMin";
|
|
67
|
+
xAxis.max = "dataMax";
|
|
68
|
+
}
|
|
69
|
+
xAxis.axisLabel = { inside: true };
|
|
70
|
+
yAxis.show = false;
|
|
71
|
+
yAxis.axisLabel = { inside: true };
|
|
72
|
+
};
|
|
73
|
+
/** 使用该预设可以隐藏直角坐标系的坐标轴和网格线,只留下图像本身,并且使其填满整个容器。*/
|
|
74
|
+
export function minimalGrid() {
|
|
75
|
+
return MINIMAL_GRID;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=coordinateSystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinateSystem.js","sourceRoot":"","sources":["../../src/echarts/coordinateSystem.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AA4C9B;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,MAAkB;IACxC,MAAM,IAAI,GAAwB;QAChC,EAAE,EAAE,KAAK,EAAE;QACX,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,EAAE;QACP,MAAM,EAAE,CAAC;QACT,YAAY,EAAE,IAAI;QAClB,GAAG,MAAM,CAAC,MAAM;KACjB,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,EAAY,CAAC;IACjC,MAAM,KAAK,GAAyB;QAClC,EAAE,EAAE,MAAM,GAAG,GAAG;QAChB,MAAM;QACN,GAAG,MAAM,CAAC,KAAK;QACf,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE;QACrE,QAAQ,EAAE;YACR,cAAc,EAAE,IAAI;YACpB,GAAG,MAAM,CAAC,KAAK,EAAE,QAAQ;YACzB,8DAA8D;SAC3B;KACtC,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,EAAY,CAAC;IACnC,MAAM,KAAK,GAAyB;QAClC,EAAE,EAAE,MAAM,GAAG,GAAG;QAChB,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,OAAO;QACnC,MAAM;QACN,OAAO,EAAE,EAAE;QACX,GAAG,MAAM,CAAC,KAAK;QACf,aAAa,EAAE;YACb,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,MAAM;YAClB,GAAG,MAAM,CAAC,KAAK,EAAE,aAAa;SAC/B;KACF,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,EAAY,CAAC;IACnC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAChE,OAAO;QACL,IAAI,EAAE,CAAC,IAAI,CAAC;QACZ,KAAK,EAAE,CAAC,KAAK,CAAC;QACd,KAAK,EAAE,CAAC,KAAK,CAAC;QACd,MAAM,EAAE,MAAM,CAAC,MAAM;YACnB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;YAChC,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACjB,GAAG,MAAM;YACT,gBAAgB,EAAE,aAAa;YAC/B,OAAO;YACP,OAAO;SACR,CAAC,CAAC;KACN,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IACtD,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACb,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;IACnB,IACE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAK,KAAsB,CAAC,IAAI,KAAK,SAAS,CAAC;QACxE,KAAK,CAAC,IAAI,KAAK,UAAU,EACzB,CAAC;QACA,KAAkC,CAAC,WAAW,GAAG,KAAK,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;QACtB,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;IACxB,CAAC;IACD,KAAK,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACnC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;IACnB,KAAK,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC,CAAC;AAEF,gDAAgD;AAChD,MAAM,UAAU,WAAW;IACzB,OAAO,YAAY,CAAC;AACtB,CAAC"}
|