From f8b1ee16ad417e50251106918dab45d2336bdc9f Mon Sep 17 00:00:00 2001 From: charlzyx <charlzyx@qq.com> Date: Mon, 15 Jan 2024 15:44:26 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20v4/v5=20=E5=8F=8CUI?= =?UTF-8?q?=20=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + bun.lockb | Bin 349731 -> 381754 bytes docs/index.mdx | 108 ---------------- docs/pro-table/demos/ArrayTablePro.tsx | 16 ++- docs/pro-table/demos/QueryList.tsx | 3 +- package.json | 18 +-- rsbuild.config.ts | 2 +- rspress.config.ts | 2 +- scripts/patch.js | 27 ++++ scripts/read.js | 28 ++++ scripts/switch.js | 120 ++++++++++++++++++ src/adaptor | 1 + src/array-table-pro/features/hooks.ts | 2 +- src/array-table-pro/features/pro-settings.tsx | 18 +-- src/array-table-pro/features/sortable.tsx | 2 +- src/array-table-pro/hooks.tsx | 7 +- src/array-table-pro/mixin.tsx | 9 +- src/array-table-pro/pro.tsx | 14 +- src/array-table-pro/types.tsx | 2 +- src/index.ts | 6 +- src/query-form/index.tsx | 4 +- src/query-form/useGrid.tsx | 2 +- src/query-list/index.tsx | 4 +- src/query-table/index.tsx | 4 +- src/style.ts | 2 +- tsconfig.json | 8 +- {src/deps => ui/antd-v5}/README.md | 0 ui/antd-v5/adaptor.ts | 18 +++ src/deps/ui.ts => ui/antd-v5/index.ts | 0 ui/antd-v5/package.json | 16 +++ ui/antd-v5/themes/array-table-pro/useStyle.ts | 63 +++++++++ ui/antd-v5/themes/index.ts | 2 + ui/antd/README.md | 1 + src/deps/peer.ts => ui/antd/adaptor.ts | 2 + ui/antd/index.ts | 16 +++ ui/antd/package.json | 16 +++ .../antd/themes}/array-table-pro/style.less | 0 .../antd/themes}/array-table-pro/style.ts | 0 ui/antd/themes/array-table-pro/useStyle.ts | 1 + ui/antd/themes/index.ts | 1 + {src => ui}/overview/index.tsx | 0 {src => ui}/overview/overview.less | 0 42 files changed, 382 insertions(+), 164 deletions(-) create mode 100644 scripts/patch.js create mode 100644 scripts/read.js create mode 100644 scripts/switch.js create mode 120000 src/adaptor rename {src/deps => ui/antd-v5}/README.md (100%) create mode 100644 ui/antd-v5/adaptor.ts rename src/deps/ui.ts => ui/antd-v5/index.ts (100%) create mode 100644 ui/antd-v5/package.json create mode 100644 ui/antd-v5/themes/array-table-pro/useStyle.ts create mode 100644 ui/antd-v5/themes/index.ts create mode 100644 ui/antd/README.md rename src/deps/peer.ts => ui/antd/adaptor.ts (89%) create mode 100644 ui/antd/index.ts create mode 100644 ui/antd/package.json rename {src => ui/antd/themes}/array-table-pro/style.less (100%) rename {src => ui/antd/themes}/array-table-pro/style.ts (100%) create mode 100644 ui/antd/themes/array-table-pro/useStyle.ts create mode 100644 ui/antd/themes/index.ts rename {src => ui}/overview/index.tsx (100%) rename {src => ui}/overview/overview.less (100%) diff --git a/.gitignore b/.gitignore index 044373f..ccf8139 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ dist-ssr *.sln *.sw? doc_build +src/adaptor/ diff --git a/bun.lockb b/bun.lockb index d0d56ea5e103f5b92603f820bb1ad469bb0aa9f2..382b74083594614a333398490b34f54d0b578976 100755 GIT binary patch delta 77451 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 delta 62689 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 N{L-79G^}3j{{Xj>b724g diff --git a/docs/index.mdx b/docs/index.mdx index 0a3bd12..7ea8880 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -26,111 +26,3 @@ features: details: Through its extension mechanism, you can easily extend theme UI and build process. icon: 🔥 --- -```tsx -/** - * inline: true - */ -import React from 'react'; -import {Overview} from 'proformily'; - -// const prefix = process.env.NODE_ENV === 'development' ? '/components' : '/fireformily/components'; -// const prefixPro = process.env.NODE_ENV === 'development' ? '/pro' : '/fireformily/pro'; -const prefix = '' - -const groups = [ - // { - // title: '优雅阅读态组件', - // prefix, - // children: [ - // { - // title: 'Dict', - // subtitle: '远程词典', - // cover: 'https://gw.alipayobjects.com/zos/antfincdn/AwU0Cv%26Ju/bianzu%2525208.svg', - // link: '/dict' - // }, - // { - // title: 'ImageView', - // subtitle: '图片查看', - // cover: 'https://gw.alipayobjects.com/zos/antfincdn/D1dXz9PZqa/image.svg', - // link: '/image-view' - // }, - // { - // title: 'LongText', - // subtitle: '长文本', - // cover: 'https://gw.alipayobjects.com/zos/alicdn/Vyyeu8jq2/Tooltp.svg', - // link: '/long-text' - // }, - // ], - // }, - { - title: '专业级组件', - prefix, - children: [ - { - title: 'ArrayTablePro', - subtitle: '专业列表', - cover: 'https://gw.alipayobjects.com/zos/antfincdn/AwU0Cv%26Ju/bianzu%2525208.svg', - link: '/pro-table' - }, - // { - // title: 'QueryList', - // subtitle: '查询列表', - // cover: 'https://gw.alipayobjects.com/zos/antfincdn/AwU0Cv%26Ju/bianzu%2525208.svg', - // link: '/query-list' - // }, - // { - // title: 'PopActions', - // subtitle: '弹窗动作表单', - // cover: 'https://gw.alipayobjects.com/zos/alicdn/3StSdUlSH/Modal.svg', - // link: '/pop-actions' - // }, - // { - // title: 'Linkage', - // subtitle: '级联选择', - // cover: 'https://gw.alipayobjects.com/zos/alicdn/UdS8y8xyZ/Cascader.svg', - // link: '/linkage' - // }, - // { - // title: 'Suggestion', - // subtitle: '搜索建议', - // cover: 'https://gw.alipayobjects.com/zos/alicdn/qtJm4yt45/AutoComplete.svg', - // link: '/suggestion' - // }, - // { - // title: 'TreeNodes', - // subtitle: '节点树', - // cover: 'https://gw.alipayobjects.com/zos/alicdn/Xh-oWqg9k/Tree.svg', - // link: '/tree-nodes' - // }, - ] - }, - // { - // title: '最佳实践', - // prefix: prefixPro, - // children: [ - // { - // title: 'Dict', - // subtitle: '远程词典', - // cover: 'https://gw.alipayobjects.com/zos/antfincdn/AwU0Cv%26Ju/bianzu%2525208.svg', - // link: '/dict' - // }, - // { - // title: 'TreeBase', - // subtitle: '基础树', - // cover: 'https://gw.alipayobjects.com/zos/alicdn/Xh-oWqg9k/Tree.svg', - // link: '/tree-base' - // }, - // { - // title: '响应式编程 in React', - // subtitle: 'useLive', - // cover: 'https://gw.alipayobjects.com/zos/alicdn/kegYxl1wj/ConfigProvider.svg', - // link: '/live' - // }, - // ], - // }, -]; - -export default () => { - return <Overview groups={groups} /> -} -``` diff --git a/docs/pro-table/demos/ArrayTablePro.tsx b/docs/pro-table/demos/ArrayTablePro.tsx index 4cc4b05..7e2b57b 100644 --- a/docs/pro-table/demos/ArrayTablePro.tsx +++ b/docs/pro-table/demos/ArrayTablePro.tsx @@ -14,6 +14,7 @@ import { import { FormProvider, ISchema, createSchemaField } from "@formily/react"; import { Button, ConfigProvider, Divider, Space } from "antd"; import "antd/dist/antd.css"; +// import "antd/dist/antd.css"; import zhCN from "antd/lib/locale/zh_CN"; import moment from "moment"; import "moment/locale/zh-cn"; @@ -23,18 +24,19 @@ import { ArrayTablePro, useArrayCompPropsOf, useFormArrayProps, -} from "proformily"; +} from "@proformily/antd"; import { useEffect } from "react"; const CustomeToolbar = () => { const array = ArrayBase.useArray!(); - const [, $row] = useArrayCompPropsOf(array.field, "rowSelection"); + const [, $row] = useArrayCompPropsOf(array?.field, "rowSelection"); return ( <Space> <Button type="primary" onClick={() => { // ok + if (!array) return; console.log(array.field.componentProps.rowSelection.selectedRowKeys); if (!$row) return; // but quick @@ -48,7 +50,8 @@ const CustomeToolbar = () => { }; const CustomeFooter = () => { const array = ArrayBase.useArray!(); - const [, $page] = useArrayCompPropsOf(array.field, "pagination"); + const [, $page] = useArrayCompPropsOf(array?.field, "pagination"); + console.log("🚀 ~ CustomeFooter ~ $page:", $page); const totalPage = $page === false ? 0 @@ -56,15 +59,16 @@ const CustomeFooter = () => { return ( <Space> 自定义底部 - {$page === false ? 0 : $page!.current}/{totalPage}, 共计 - {array.field.value.length}条数据 + {$page === false ? 0 : $page?.current}/{totalPage}, 共计 + {array?.field?.value?.length}条数据 </Space> ); }; const RowSummary = () => { const row = ArrayBase.useRecord!(); - const summary = row.a1 + row.a2 + row.a3; + console.log("🚀 ~ RowSummary ~ row:", row); + const summary = row ? "" : row.a1 + row.a2 + row.a3; return ( <div style={{ diff --git a/docs/pro-table/demos/QueryList.tsx b/docs/pro-table/demos/QueryList.tsx index 20b08ab..d6c2f4e 100644 --- a/docs/pro-table/demos/QueryList.tsx +++ b/docs/pro-table/demos/QueryList.tsx @@ -14,12 +14,13 @@ import { createForm } from "@formily/core"; import { FormProvider, ISchema, createSchemaField } from "@formily/react"; import { ConfigProvider, Divider } from "antd"; import "antd/dist/antd.css"; +// import "antd/dist/antd.css"; import zhCN from "antd/lib/locale/zh_CN"; import moment from "moment"; import "moment/locale/zh-cn"; moment.locale("zh-cn"); -import { QueryForm, QueryList, QueryTable } from "proformily"; +import { QueryForm, QueryList, QueryTable } from "@proformily/antd"; const log = (label: string, x: any) => { console.log("LABEL:", label); diff --git a/package.json b/package.json index 2c837a0..8d8cdf0 100644 --- a/package.json +++ b/package.json @@ -1,35 +1,37 @@ { - "name": "rspress-doc-template", + "name": "@proformily/antd", "version": "1.0.0", "private": true, "scripts": { - "dev": "rspress dev", + "d4": "node scripts/switch.js antd dev && rspress dev", + "d5": "node scripts/switch.js antd dev && rspress dev", "build:docs": "rspress build", "preview": "rspress preview" }, "dependencies": { "@ant-design/icons": "^5.2.6", - "@formily/antd": "^2.3.1", "@formily/core": "^2.3.1", "@formily/react": "^2.3.1", "@formily/reactive": "^2.3.1", "@formily/shared": "^2.3.1", "ahooks": "^3.7.8", - "antd": "^4.24.15", "moment": "^2.30.1", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-resizable": "^3.0.5" + "react-resizable": "^3.0.5", + "@formily/antd": "^2.*.*", + "antd": "^4.*.*" }, "devDependencies": { - "rspress": "^1.9.3", "@biomejs/biome": "^1.5.0", + "@faker-js/faker": "^8.3.1", "@rsbuild/plugin-react": "^0.2.18", "@rspress/plugin-preview": "^1.9.3", + "@types/node": "^16.18.70", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@types/react-resizable": "^3.0.7", - "@faker-js/faker": "^8.3.1", - "@types/node": "^16.18.70" + "rimraf": "^5.0.5", + "rspress": "^1.9.3" } } diff --git a/rsbuild.config.ts b/rsbuild.config.ts index 7204815..90214d9 100644 --- a/rsbuild.config.ts +++ b/rsbuild.config.ts @@ -6,7 +6,7 @@ export default defineConfig({ plugins: [pluginReact()], source: { alias: { - proformily: path.resolve(__dirname, "./src"), + // proformily: path.resolve(__dirname, "./src"), }, }, tools: { diff --git a/rspress.config.ts b/rspress.config.ts index 5a1f485..f86460b 100644 --- a/rspress.config.ts +++ b/rspress.config.ts @@ -4,7 +4,7 @@ import { defineConfig } from "rspress/config"; import RsBuildConfig from "./rsbuild.config"; export default defineConfig({ - base: "/pro.formily/", + base: "/proformily-antd/", root: path.join(__dirname, "docs"), title: "ProFormily", description: "Pro Formily, 启动!", diff --git a/scripts/patch.js b/scripts/patch.js new file mode 100644 index 0000000..d1931ad --- /dev/null +++ b/scripts/patch.js @@ -0,0 +1,27 @@ +const { execSync } = require("child_process"); +const path = require("path"); +const fs = require("fs"); + +const cssPath = path.resolve( + __dirname, + "../node_modules/@rspress/theme-default/dist/bundle.css", +); + +if (fs.existsSync(cssPath)) { + const css = fs.readFileSync(cssPath, "utf-8").toString(); + const neo = css.replace( + ` +[type=submit] { + -webkit-appearance: button; + background-color: transparent; + background-image: none; +}`.trim(), + ` +[type=submit] { + -webkit-appearance: button; + background-image: none; +} +`, + ); + fs.writeFileSync(cssPath, neo, "utf-8"); +} diff --git a/scripts/read.js b/scripts/read.js new file mode 100644 index 0000000..56d83e2 --- /dev/null +++ b/scripts/read.js @@ -0,0 +1,28 @@ +const { execSync } = require("child_process"); +const fs = require("fs"); +const path = require("path"); +const argv = process.argv.slice(2); +const adaptor = argv[0]; +const mode = argv[1]; +const rmrf = require("rimraf"); + +const loop = (filepath, it) => { + if (fs.existsSync(filepath)) { + const isDir = fs.statSync(filepath).isDirectory(); + if (isDir) { + fs.readdirSync(filepath).forEach((sub) => { + loop(path.join(filepath, sub), it); + }); + } else { + it(path.join(filepath)); + } + } +}; + +const docs = () => { + loop(path.join(__dirname, "../docs"), (item) => { + console.log(item); + }); +}; + +docs(); diff --git a/scripts/switch.js b/scripts/switch.js new file mode 100644 index 0000000..47a255b --- /dev/null +++ b/scripts/switch.js @@ -0,0 +1,120 @@ +const { execSync } = require("child_process"); +const fs = require("fs"); +const path = require("path"); +const argv = process.argv.slice(2); +const adaptor = argv[0]; +const mode = argv[1]; +const rmrf = require("rimraf"); + +if (!/antd|antd-v5/.test(adaptor)) { + throw new Error(`适配库${adaptor}不存在`); +} + +const rewite = (filePath, writer) => { + const old = fs.readFileSync(filePath).toString(); + const neo = writer(old); + if (neo === old) return; + fs.writeFileSync(filePath, neo); +}; + +const files = ["tsconfig.json", "package.json", "rspress.config.ts"].map( + (item) => { + return path.resolve(__dirname, `../${item}`); + }, +); + +const loop = (filepath, it) => { + if (fs.existsSync(filepath)) { + const isDir = fs.statSync(filepath).isDirectory(); + if (isDir) { + fs.readdirSync(filepath).forEach((sub) => { + loop(path.join(filepath, sub), it); + }); + } else { + it(path.join(filepath)); + } + } +}; + +const docs = () => { + const list = []; + loop(path.join(__dirname, "../docs"), (item) => { + list.push(item); + }); + return list; +}; + +docs() + .filter((x) => /\.(mdx|md|tsx|ts|js|js)$/.test(x)) + .forEach((item) => { + rewite(item, (c) => { + if (adaptor === "antd") { + return c + .replace("formily/antd-v5", "formily/antd") + .replace("antd/dist/reset.css", "antd/dist/antd.css"); + } else { + return c + .replace("formily/antd", "formily/antd-v5") + .replace("antd/dist/antd.css", "antd/dist/reset.css"); + } + }); + }); + +files.forEach((item) => { + rewite(item, (c) => { + if (adaptor === "antd") { + return c + .replace("formily/antd-v5", "formily/antd") + .replace("proformily-antd-v5", "proformily-antd"); + } else { + return c + .replace("formily/antd", "formily/antd-v5") + .replace("proformily-antd", "proformily-antd-v5"); + } + }); +}); + +const shadow = path.resolve(__dirname, "../src/adaptor"); +const ui = path.resolve(__dirname, `../ui/${adaptor}`); + +rmrf.sync(shadow); + +// 开发用软连接就好了 +if (mode === "dev") { + execSync(`rm -rf ${shadow}`); + execSync(`ln -s ${ui} ${shadow}`); +} else { + execSync(`rm -rf ${shadow}`); + execSync(`cp -R ${ui} ${shadow}`); +} +const pkgPath = path.resolve(__dirname, "../package.json"); +const pkg = JSON.parse(fs.readFileSync(pkgPath)); +const adaptorPkg = JSON.parse(fs.readFileSync(`${ui}/package.json`)); + +const deps = { + "@ant-design/icons": "^5.2.6", + "@formily/core": "^2.3.1", + "@formily/react": "^2.3.1", + "@formily/reactive": "^2.3.1", + "@formily/shared": "^2.3.1", + ahooks: "^3.7.8", + moment: "^2.30.1", + react: "^18.2.0", + "react-dom": "^18.2.0", + "react-resizable": "^3.0.5", +}; + +// sed -i 's/@proformily\/antd/@proformily\/antd-v5/g' * +fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2), "utf-8"); + +if (!pkg.dependencies[`@formily/${adaptor}`]) { + pkg.dependencies = { + ...deps, + ...adaptorPkg.dependencies, + }; + rmrf.sync(path.resolve(__dirname, "../node_modules")); +} + +rmrf.sync(path.resolve(__dirname, "../doc_build")); +execSync("bun i"); +console.log("ready for --", adaptor); diff --git a/src/adaptor b/src/adaptor new file mode 120000 index 0000000..1bf5f86 --- /dev/null +++ b/src/adaptor @@ -0,0 +1 @@ +/Users/chao/Lab/proformily/ui/antd \ No newline at end of file diff --git a/src/array-table-pro/features/hooks.ts b/src/array-table-pro/features/hooks.ts index bad29fb..c457ce5 100644 --- a/src/array-table-pro/features/hooks.ts +++ b/src/array-table-pro/features/hooks.ts @@ -26,7 +26,7 @@ type SupportedProps = { expandable: IExpandableProps; }; export const useArrayCompPropsOf = <K extends keyof SupportedProps>( - field: GeneralField, + field: GeneralField | undefined, key: K, ) => { const $props = (field?.componentProps as any)?.[key]; diff --git a/src/array-table-pro/features/pro-settings.tsx b/src/array-table-pro/features/pro-settings.tsx index fb82e46..1856555 100644 --- a/src/array-table-pro/features/pro-settings.tsx +++ b/src/array-table-pro/features/pro-settings.tsx @@ -8,14 +8,6 @@ import { import { toJS } from "@formily/reactive"; import useCreation from "ahooks/es/useCreation"; import React, { useMemo } from "react"; -import { - Checkbox, - FormItem, - Input, - NumberPicker, - PreviewText, - Radio, -} from "../../deps/peer"; import { Button, ColumnHeightOutlined, @@ -25,7 +17,15 @@ import { SettingOutlined, Slider, Space, -} from "../../deps/ui"; +} from "../../adaptor"; +import { + Checkbox, + FormItem, + Input, + NumberPicker, + PreviewText, + Radio, +} from "../../adaptor/adaptor"; import { useArrayTableColumns } from "../hooks"; import { ArrayTablePro } from "../pro"; diff --git a/src/array-table-pro/features/sortable.tsx b/src/array-table-pro/features/sortable.tsx index 7f17b7a..cfdcd32 100644 --- a/src/array-table-pro/features/sortable.tsx +++ b/src/array-table-pro/features/sortable.tsx @@ -1,4 +1,4 @@ -import { builtins } from "../../deps/peer"; +import { builtins } from "../../adaptor/adaptor"; const { SortableContainer, SortableElement, usePrefixCls } = builtins; import { ReactFC, useFieldSchema } from "@formily/react"; import cls from "classnames"; diff --git a/src/array-table-pro/hooks.tsx b/src/array-table-pro/hooks.tsx index 89540c4..db1413e 100644 --- a/src/array-table-pro/hooks.tsx +++ b/src/array-table-pro/hooks.tsx @@ -4,7 +4,7 @@ import { RecursionField, useField, useFieldSchema } from "@formily/react"; import { isArr } from "@formily/shared"; import { useState } from "react"; import type { ResizeCallbackData } from "react-resizable"; -import { ArrayBase, ColumnsType } from "../deps/peer"; +import { ArrayBase, ColumnsType } from "../adaptor/adaptor"; import { isAdditionComponent, isColumnComponent, @@ -200,7 +200,10 @@ export const useExpandRender = (index: number) => { return schema.reduceProperties((expand, schema, key) => { if (isExpandComponent(schema)) { return ( - <ArrayBase.Item index={index} record={() => array.field.value?.[index]}> + <ArrayBase.Item + index={index} + record={() => array?.field.value?.[index]} + > <RecursionField onlyRenderProperties schema={schema} name={index} /> </ArrayBase.Item> ); diff --git a/src/array-table-pro/mixin.tsx b/src/array-table-pro/mixin.tsx index 167f138..5ea820a 100644 --- a/src/array-table-pro/mixin.tsx +++ b/src/array-table-pro/mixin.tsx @@ -1,8 +1,7 @@ -import { ArrayBaseMixins } from "@formily/antd"; import { ReactFC, observer } from "@formily/react"; import React, { Fragment } from "react"; -import { ArrayBase, ColumnProps } from "../deps/peer"; -import { Alert, Button, Divider, Space } from "../deps/ui"; +import { Alert, Button, Divider, Space } from "../adaptor"; +import { ArrayBase, ArrayBaseMixins, ColumnProps } from "../adaptor/adaptor"; import { useArrayCompPropsOf } from "./features/hooks"; export const Column: ReactFC<ColumnProps<any>> = () => { @@ -14,7 +13,7 @@ export const RowExpand: ReactFC<ColumnProps<any>> = () => { export const Addition: ArrayBaseMixins["Addition"] = observer((props) => { const array = ArrayBase.useArray(); - const [, $page] = useArrayCompPropsOf(array.field, "pagination"); + const [, $page] = useArrayCompPropsOf(array?.field, "pagination"); return ( <ArrayBase.Addition block={false} @@ -62,7 +61,7 @@ export const RowSelectionPro = (props: { }) => { const { ds, rowKey } = props; const array = ArrayBase.useArray(); - const [, $row] = useArrayCompPropsOf(array.field, "rowSelection"); + const [, $row] = useArrayCompPropsOf(array?.field, "rowSelection"); return ds.length > 0 ? ( <Alert style={{ padding: "3px 4px" }} diff --git a/src/array-table-pro/pro.tsx b/src/array-table-pro/pro.tsx index 7c858f1..986f164 100644 --- a/src/array-table-pro/pro.tsx +++ b/src/array-table-pro/pro.tsx @@ -1,10 +1,9 @@ -import { usePrefixCls } from "@formily/antd/esm/__builtins__"; import { ArrayField } from "@formily/core"; import { ReactFC, RecursionField, observer, useField } from "@formily/react"; import React, { useEffect, useRef } from "react"; -import { ArrayBase } from "../deps/peer"; // import useWhyDidYouUpdate from "ahooks/es/useWhyDidYouUpdate"; -import { Pagination, Table, Typography } from "../deps/ui"; +import { Pagination, Table, Typography } from "../adaptor"; +import { ArrayBase, builtins } from "../adaptor/adaptor"; import { ProSettings } from "./features/pro-settings"; import { ResizableTitle } from "./features/resizeable"; import { useSortable } from "./features/sortable"; @@ -21,11 +20,14 @@ import { } from "./hooks"; import { Addition, Column, Flex, RowExpand, RowSelectionPro } from "./mixin"; import { ArrayTableProProps, IChangeData } from "./types"; +const { usePrefixCls } = builtins; +import useStyle from "../adaptor/themes/array-table-pro/useStyle"; const ProArrayTable: ReactFC<ArrayTableProProps> = observer((props) => { const ref = useRef<HTMLDivElement>(null); const field = useField<ArrayField>(); const prefixCls = usePrefixCls("formily-array-table"); + const [wrapSSR, hasId] = useStyle(prefixCls); /** * 优化笔记: * 本来以为这个 slice 没什么用,直到我膝盖中了一箭 @@ -144,10 +146,10 @@ const ProArrayTable: ReactFC<ArrayTableProProps> = observer((props) => { </Flex> ); - return ( + return wrapSSR( <ArrayBase> {_header} - <div ref={ref} className={prefixCls}> + <div ref={ref} className={`${prefixCls} ${hasId}`}> <Table bordered rowKey={rowKey} @@ -197,7 +199,7 @@ const ProArrayTable: ReactFC<ArrayTableProProps> = observer((props) => { key, }); })} - </ArrayBase> + </ArrayBase>, ); }); diff --git a/src/array-table-pro/types.tsx b/src/array-table-pro/types.tsx index 7f33ca0..c65e875 100644 --- a/src/array-table-pro/types.tsx +++ b/src/array-table-pro/types.tsx @@ -1,6 +1,6 @@ import { FieldDisplayTypes, GeneralField } from "@formily/core"; import { Schema } from "@formily/json-schema"; -import type { ColumnProps, TableProps } from "../deps/peer"; +import type { ColumnProps, TableProps } from "../adaptor/adaptor"; type TableChangeParams = Parameters<Required<TableProps<any>>["onChange"]>; diff --git a/src/index.ts b/src/index.ts index 5068243..ad38292 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,5 @@ -import "./style"; export * from "./array-table-pro"; +export * from "./array-table-pro/features/hooks"; +export * from "./query-list"; export * from "./query-form"; export * from "./query-table"; -export * from "./query-list"; - -export { Overview } from "./overview"; diff --git a/src/query-form/index.tsx b/src/query-form/index.tsx index e5603bf..d9fe35f 100644 --- a/src/query-form/index.tsx +++ b/src/query-form/index.tsx @@ -2,9 +2,9 @@ import { DownOutlined, UpOutlined } from "@ant-design/icons"; import type { ObjectField } from "@formily/core"; import { observer, useField } from "@formily/react"; import { clone } from "@formily/shared"; -import { Button } from "antd"; import React, { useEffect } from "react"; -import { FormButtonGroup, FormGrid, FormLayout } from "../deps/peer"; +import { Button } from "../adaptor"; +import { FormButtonGroup, FormGrid, FormLayout } from "../adaptor/adaptor"; import { useQueryListContext } from "../query-list"; import { useGrid } from "./useGrid"; diff --git a/src/query-form/useGrid.tsx b/src/query-form/useGrid.tsx index a0b7254..b3c09e2 100644 --- a/src/query-form/useGrid.tsx +++ b/src/query-form/useGrid.tsx @@ -1,5 +1,5 @@ import React, { useMemo } from "react"; -import { FormGrid } from "../deps/peer"; +import { FormGrid } from "../adaptor/adaptor"; export const useGrid = (conf: React.ComponentProps<typeof FormGrid> = {}) => { const maxRows = conf.maxRows || 2; diff --git a/src/query-list/index.tsx b/src/query-list/index.tsx index 37d902c..1e008a9 100644 --- a/src/query-list/index.tsx +++ b/src/query-list/index.tsx @@ -8,8 +8,8 @@ import React, { useRef, useState, } from "react"; -import { noop } from "src/__builtins__"; -import type { TableProps } from "../deps/ui"; +import { noop } from "../__builtins__"; +import type { TableProps } from "../adaptor"; type TableChangeParams = Parameters<Required<TableProps<any>>["onChange"]>; diff --git a/src/query-table/index.tsx b/src/query-table/index.tsx index de23583..0225ed1 100644 --- a/src/query-table/index.tsx +++ b/src/query-table/index.tsx @@ -2,10 +2,10 @@ import type { ArrayField } from "@formily/core"; import { observer, useField } from "@formily/react"; import { useEffect } from "react"; import { ArrayTableProProps } from "src/array-table-pro/types"; +import { TablePaginationConfig } from "../adaptor"; +import { ArrayBase } from "../adaptor/adaptor"; import { Addition, Column, RowExpand } from "../array-table-pro/mixin"; import { ArrayTablePro } from "../array-table-pro/pro"; -import { ArrayBase } from "../deps/peer"; -import { TablePaginationConfig } from "../deps/ui"; import { useQueryListContext } from "../query-list"; export const QueryTablePro = observer((overprops: ArrayTableProProps) => { diff --git a/src/style.ts b/src/style.ts index 255d9e9..7d3dc81 100644 --- a/src/style.ts +++ b/src/style.ts @@ -1 +1 @@ -import "./array-table-pro/style"; +import "./adaptor/themes/index"; diff --git a/tsconfig.json b/tsconfig.json index 129c9bd..986efb2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,8 +13,12 @@ "declaration": true, "moduleResolution": "node", "paths": { - "proformily": ["./src"] + "@proformily/antd": ["src"] } }, - "include": ["src", "docs"] + "include": [ + "src", + "docs", + "ui", + ] } diff --git a/src/deps/README.md b/ui/antd-v5/README.md similarity index 100% rename from src/deps/README.md rename to ui/antd-v5/README.md diff --git a/ui/antd-v5/adaptor.ts b/ui/antd-v5/adaptor.ts new file mode 100644 index 0000000..7af89cf --- /dev/null +++ b/ui/antd-v5/adaptor.ts @@ -0,0 +1,18 @@ +export * as builtins from "@formily/antd-v5/esm/__builtins__"; +export { + FormGrid, + FormButtonGroup, + FormLayout, + Checkbox, + FormItem, + Input, + NumberPicker, + PreviewText, + Radio, +} from "@formily/antd-v5"; + +import { ArrayBase as AntdArrayBase } from "@formily/antd-v5"; +export type { ArrayBaseMixins } from "@formily/antd-v5"; +// 类型fix +export const ArrayBase = AntdArrayBase; +export type { ColumnsType, ColumnProps, TableProps } from "antd/es/table"; diff --git a/src/deps/ui.ts b/ui/antd-v5/index.ts similarity index 100% rename from src/deps/ui.ts rename to ui/antd-v5/index.ts diff --git a/ui/antd-v5/package.json b/ui/antd-v5/package.json new file mode 100644 index 0000000..2ced4a4 --- /dev/null +++ b/ui/antd-v5/package.json @@ -0,0 +1,16 @@ +{ + "name": "antd", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@formily/antd-v5": "^1.*.*", + "antd": "^5.*.*" + } +} diff --git a/ui/antd-v5/themes/array-table-pro/useStyle.ts b/ui/antd-v5/themes/array-table-pro/useStyle.ts new file mode 100644 index 0000000..4af0622 --- /dev/null +++ b/ui/antd-v5/themes/array-table-pro/useStyle.ts @@ -0,0 +1,63 @@ +import { builtins } from "../../adaptor"; + +export default builtins.genStyleHook("array-table", (token) => { + const { + componentCls, + antCls, + colorErrorBorder, + fontSizeSM, + colorBgBase, + colorBorder, + colorBgContainer, + } = token; + const itemCls = `${antCls}-formily-item`; + + return { + [componentCls]: { + [`${componentCls}-pagination`]: { + display: "flex", + justifyContent: "center", + + [`${componentCls}-status-select.has-error`]: { + [`${antCls}-select-selector`]: { + borderColor: `${colorErrorBorder} !important`, + }, + }, + }, + [`${antCls}-table`]: { + td: { + visibility: "visible", + [`${itemCls}:not(${itemCls}-feedback-layout-popover)`]: { + marginBottom: "0 !important", + + [`${itemCls}-help`]: { + position: "absolute", + fontSize: fontSizeSM, + top: "100%", + background: colorBgBase, + width: "100%", + marginTop: 3, + padding: 3, + zIndex: 1, + borderRadius: 3, + boxShadow: `0 0 10px ${colorBorder}`, + animation: "none", + transform: "translateY(0)", + opacity: 1, + }, + }, + }, + + table: { + overflow: "hidden", + }, + }, + + [`${componentCls}-sort-helper`]: { + background: colorBgContainer, + border: `1px solid ${colorBorder}`, + zIndex: 10, + }, + }, + }; +}); diff --git a/ui/antd-v5/themes/index.ts b/ui/antd-v5/themes/index.ts new file mode 100644 index 0000000..4b2a726 --- /dev/null +++ b/ui/antd-v5/themes/index.ts @@ -0,0 +1,2 @@ +// @ts-ignore +// 什么都没有,为了适配 antd-v4 那个文件 diff --git a/ui/antd/README.md b/ui/antd/README.md new file mode 100644 index 0000000..c1b1d1d --- /dev/null +++ b/ui/antd/README.md @@ -0,0 +1 @@ +声明外部依赖, 方便迁移 diff --git a/src/deps/peer.ts b/ui/antd/adaptor.ts similarity index 89% rename from src/deps/peer.ts rename to ui/antd/adaptor.ts index 61959ce..ea78b91 100644 --- a/src/deps/peer.ts +++ b/ui/antd/adaptor.ts @@ -10,7 +10,9 @@ export { PreviewText, Radio, } from "@formily/antd"; + import { ArrayBase as AntdArrayBase } from "@formily/antd"; +export type { ArrayBaseMixins } from "@formily/antd"; // 类型fix export const ArrayBase = AntdArrayBase as Required<typeof AntdArrayBase> & typeof AntdArrayBase; diff --git a/ui/antd/index.ts b/ui/antd/index.ts new file mode 100644 index 0000000..c866520 --- /dev/null +++ b/ui/antd/index.ts @@ -0,0 +1,16 @@ +export { ColumnHeightOutlined, SettingOutlined } from "@ant-design/icons"; +export { + Alert, + Divider, + Pagination, + Table, + Button, + ConfigProvider, + Popover, + Row, + Slider, + Space, + Typography, +} from "antd"; + +export type { TablePaginationConfig, TableProps } from "antd"; diff --git a/ui/antd/package.json b/ui/antd/package.json new file mode 100644 index 0000000..194fac6 --- /dev/null +++ b/ui/antd/package.json @@ -0,0 +1,16 @@ +{ + "name": "antd", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@formily/antd": "^2.*.*", + "antd": "^4.*.*" + } +} diff --git a/src/array-table-pro/style.less b/ui/antd/themes/array-table-pro/style.less similarity index 100% rename from src/array-table-pro/style.less rename to ui/antd/themes/array-table-pro/style.less diff --git a/src/array-table-pro/style.ts b/ui/antd/themes/array-table-pro/style.ts similarity index 100% rename from src/array-table-pro/style.ts rename to ui/antd/themes/array-table-pro/style.ts diff --git a/ui/antd/themes/array-table-pro/useStyle.ts b/ui/antd/themes/array-table-pro/useStyle.ts new file mode 100644 index 0000000..680522c --- /dev/null +++ b/ui/antd/themes/array-table-pro/useStyle.ts @@ -0,0 +1 @@ +export default () => [<T>(x: T) => x, ""] as const; diff --git a/ui/antd/themes/index.ts b/ui/antd/themes/index.ts new file mode 100644 index 0000000..255d9e9 --- /dev/null +++ b/ui/antd/themes/index.ts @@ -0,0 +1 @@ +import "./array-table-pro/style"; diff --git a/src/overview/index.tsx b/ui/overview/index.tsx similarity index 100% rename from src/overview/index.tsx rename to ui/overview/index.tsx diff --git a/src/overview/overview.less b/ui/overview/overview.less similarity index 100% rename from src/overview/overview.less rename to ui/overview/overview.less From dd09e48e71998ce86622f757cb0e669a2c4d5710 Mon Sep 17 00:00:00 2001 From: charlzyx <charlzyx@qq.com> Date: Mon, 15 Jan 2024 16:00:31 +0800 Subject: [PATCH 2/3] =?UTF-8?q?ci:=20=F0=9F=8E=A1=20dev=20scripts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + package.json | 8 ++++---- rspress.config.ts | 7 ++++++- scripts/patch.js | 1 - scripts/switch.js | 41 ++++++++++++++++++----------------------- 5 files changed, 29 insertions(+), 29 deletions(-) diff --git a/.gitignore b/.gitignore index ccf8139..1a6954f 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,5 @@ dist-ssr *.sln *.sw? doc_build +src/adaptor src/adaptor/ diff --git a/package.json b/package.json index 8d8cdf0..1d11cbd 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { - "name": "@proformily/antd", + "name": "@proformily/antd-v5", "version": "1.0.0", "private": true, "scripts": { "d4": "node scripts/switch.js antd dev && rspress dev", - "d5": "node scripts/switch.js antd dev && rspress dev", + "d5": "node scripts/switch.js antd-v5 dev && rspress dev", "build:docs": "rspress build", "preview": "rspress preview" }, @@ -19,8 +19,8 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-resizable": "^3.0.5", - "@formily/antd": "^2.*.*", - "antd": "^4.*.*" + "@formily/antd-v5": "^1.*.*", + "antd": "^5.*.*" }, "devDependencies": { "@biomejs/biome": "^1.5.0", diff --git a/rspress.config.ts b/rspress.config.ts index f86460b..6dfab67 100644 --- a/rspress.config.ts +++ b/rspress.config.ts @@ -17,7 +17,12 @@ export default defineConfig({ builderConfig: { ...RsBuildConfig, }, - plugins: [pluginPreview()], + plugins: [ + pluginPreview(), + () => { + require("./scripts/patch.js"); + }, + ], themeConfig: { socialLinks: [ { diff --git a/scripts/patch.js b/scripts/patch.js index d1931ad..5f792d2 100644 --- a/scripts/patch.js +++ b/scripts/patch.js @@ -1,4 +1,3 @@ -const { execSync } = require("child_process"); const path = require("path"); const fs = require("fs"); diff --git a/scripts/switch.js b/scripts/switch.js index 47a255b..6ccd5c9 100644 --- a/scripts/switch.js +++ b/scripts/switch.js @@ -44,34 +44,29 @@ const docs = () => { return list; }; +const replaeer = (c) => { + if (adaptor === "antd") { + return c + .replace(`@formily/antd-v5"`, `@formily/antd"`) + .replace(`@proformily/antd-v5"`, `@proformily/antd"`) + .replace(`proformily-antd-v5"`, `proformily-antd"`) + .replace("antd/dist/reset.css", "antd/dist/antd.css"); + } else { + return c + .replace(`@formily/antd"`, `@formily/antd-v5"`) + .replace(`@proformily/antd"`, `@proformily/antd-v5"`) + .replace(`proformily-antd"`, `proformily-antd-v5"`) + .replace("antd/dist/antd.css", "antd/dist/reset.css"); + } +}; docs() .filter((x) => /\.(mdx|md|tsx|ts|js|js)$/.test(x)) .forEach((item) => { - rewite(item, (c) => { - if (adaptor === "antd") { - return c - .replace("formily/antd-v5", "formily/antd") - .replace("antd/dist/reset.css", "antd/dist/antd.css"); - } else { - return c - .replace("formily/antd", "formily/antd-v5") - .replace("antd/dist/antd.css", "antd/dist/reset.css"); - } - }); + rewite(item, replaeer); }); files.forEach((item) => { - rewite(item, (c) => { - if (adaptor === "antd") { - return c - .replace("formily/antd-v5", "formily/antd") - .replace("proformily-antd-v5", "proformily-antd"); - } else { - return c - .replace("formily/antd", "formily/antd-v5") - .replace("proformily-antd", "proformily-antd-v5"); - } - }); + rewite(item, replaeer); }); const shadow = path.resolve(__dirname, "../src/adaptor"); @@ -105,13 +100,13 @@ const deps = { }; // sed -i 's/@proformily\/antd/@proformily\/antd-v5/g' * -fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2), "utf-8"); if (!pkg.dependencies[`@formily/${adaptor}`]) { pkg.dependencies = { ...deps, ...adaptorPkg.dependencies, }; + fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2), "utf-8"); rmrf.sync(path.resolve(__dirname, "../node_modules")); } From 37645b5e38984c2f750d065e5912d6309f841e5c Mon Sep 17 00:00:00 2001 From: charlzyx <charlzyx@qq.com> Date: Mon, 15 Jan 2024 16:09:23 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=F0=9F=90=9B=20build=20scripts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 13 +++++++------ scripts/read.js | 28 ---------------------------- scripts/switch.js | 16 ++++++++-------- src/adaptor | 1 - 4 files changed, 15 insertions(+), 43 deletions(-) delete mode 100644 scripts/read.js delete mode 120000 src/adaptor diff --git a/package.json b/package.json index 1d11cbd..1da74fd 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,12 @@ { - "name": "@proformily/antd-v5", + "name": "@proformily/antd", "version": "1.0.0", "private": true, "scripts": { - "d4": "node scripts/switch.js antd dev && rspress dev", - "d5": "node scripts/switch.js antd-v5 dev && rspress dev", - "build:docs": "rspress build", + "v4": "node scripts/switch.js antd dev && rspress dev", + "v5": "node scripts/switch.js antd-v5 dev && rspress dev", + "build:docs:v4": "node scripts/switch.js antd && rspress build", + "build:docs:v5": "node scripts/switch.js antd-v5 && rspress build", "preview": "rspress preview" }, "dependencies": { @@ -19,8 +20,8 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-resizable": "^3.0.5", - "@formily/antd-v5": "^1.*.*", - "antd": "^5.*.*" + "@formily/antd": "^2.*.*", + "antd": "^4.*.*" }, "devDependencies": { "@biomejs/biome": "^1.5.0", diff --git a/scripts/read.js b/scripts/read.js deleted file mode 100644 index 56d83e2..0000000 --- a/scripts/read.js +++ /dev/null @@ -1,28 +0,0 @@ -const { execSync } = require("child_process"); -const fs = require("fs"); -const path = require("path"); -const argv = process.argv.slice(2); -const adaptor = argv[0]; -const mode = argv[1]; -const rmrf = require("rimraf"); - -const loop = (filepath, it) => { - if (fs.existsSync(filepath)) { - const isDir = fs.statSync(filepath).isDirectory(); - if (isDir) { - fs.readdirSync(filepath).forEach((sub) => { - loop(path.join(filepath, sub), it); - }); - } else { - it(path.join(filepath)); - } - } -}; - -const docs = () => { - loop(path.join(__dirname, "../docs"), (item) => { - console.log(item); - }); -}; - -docs(); diff --git a/scripts/switch.js b/scripts/switch.js index 6ccd5c9..98aaec9 100644 --- a/scripts/switch.js +++ b/scripts/switch.js @@ -81,6 +81,8 @@ if (mode === "dev") { } else { execSync(`rm -rf ${shadow}`); execSync(`cp -R ${ui} ${shadow}`); + rmrf.sync(path.resolve(__dirname, "../node_modules")); + rmrf.sync(path.resolve(__dirname, "../doc_build")); } const pkgPath = path.resolve(__dirname, "../package.json"); const pkg = JSON.parse(fs.readFileSync(pkgPath)); @@ -101,14 +103,12 @@ const deps = { // sed -i 's/@proformily\/antd/@proformily\/antd-v5/g' * -if (!pkg.dependencies[`@formily/${adaptor}`]) { - pkg.dependencies = { - ...deps, - ...adaptorPkg.dependencies, - }; - fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2), "utf-8"); - rmrf.sync(path.resolve(__dirname, "../node_modules")); -} +pkg.dependencies = { + ...deps, + ...adaptorPkg.dependencies, +}; +fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2), "utf-8"); +rmrf.sync(path.resolve(__dirname, "../node_modules")); rmrf.sync(path.resolve(__dirname, "../doc_build")); execSync("bun i"); diff --git a/src/adaptor b/src/adaptor deleted file mode 120000 index 1bf5f86..0000000 --- a/src/adaptor +++ /dev/null @@ -1 +0,0 @@ -/Users/chao/Lab/proformily/ui/antd \ No newline at end of file