@teamias/rex-pro 0.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.
Files changed (68) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -0
  3. package/dist/components/card-basic-info/card-basic-info.d.ts +24 -0
  4. package/dist/components/card-basic-info/card-basic-info.js +62 -0
  5. package/dist/components/card-basic-info/demo/BasicCardBasicInfo.d.ts +2 -0
  6. package/dist/components/card-basic-info/demo/BasicCardBasicInfo.js +11 -0
  7. package/dist/components/card-basic-info/demo/LinkContentType.d.ts +2 -0
  8. package/dist/components/card-basic-info/demo/LinkContentType.js +26 -0
  9. package/dist/components/card-basic-info/demo/TableUsage.d.ts +2 -0
  10. package/dist/components/card-basic-info/demo/TableUsage.js +44 -0
  11. package/dist/components/card-basic-info/demo/TagContentType.d.ts +2 -0
  12. package/dist/components/card-basic-info/demo/TagContentType.js +16 -0
  13. package/dist/components/card-basic-info/demo/TextAndTagContentType.d.ts +2 -0
  14. package/dist/components/card-basic-info/demo/TextAndTagContentType.js +23 -0
  15. package/dist/components/card-basic-info/demo/TextContentType.d.ts +2 -0
  16. package/dist/components/card-basic-info/demo/TextContentType.js +17 -0
  17. package/dist/components/card-basic-info/index.d.ts +2 -0
  18. package/dist/components/card-basic-info/index.js +1 -0
  19. package/dist/components/card-basic-info/style/index.d.ts +5 -0
  20. package/dist/components/card-basic-info/style/index.js +19 -0
  21. package/dist/components/filter-form/demo/AverageFilterForm.d.ts +2 -0
  22. package/dist/components/filter-form/demo/AverageFilterForm.js +146 -0
  23. package/dist/components/filter-form/demo/BasicFilterForm.d.ts +2 -0
  24. package/dist/components/filter-form/demo/BasicFilterForm.js +319 -0
  25. package/dist/components/filter-form/filter-form.d.ts +62 -0
  26. package/dist/components/filter-form/filter-form.js +241 -0
  27. package/dist/components/filter-form/index.d.ts +1 -0
  28. package/dist/components/filter-form/index.js +2 -0
  29. package/dist/components/filter-form/style/index.d.ts +3 -0
  30. package/dist/components/filter-form/style/index.js +3 -0
  31. package/dist/components/index.d.ts +4 -0
  32. package/dist/components/index.js +5 -0
  33. package/dist/components/rex-pro-form/demo/BasicRexProForm.d.ts +2 -0
  34. package/dist/components/rex-pro-form/demo/BasicRexProForm.js +209 -0
  35. package/dist/components/rex-pro-form/index.d.ts +1 -0
  36. package/dist/components/rex-pro-form/index.js +1 -0
  37. package/dist/components/rex-pro-form/rex-pro-form.d.ts +35 -0
  38. package/dist/components/rex-pro-form/rex-pro-form.js +100 -0
  39. package/dist/components/rex-pro-form/style/index.d.ts +2 -0
  40. package/dist/components/rex-pro-form/style/index.js +2 -0
  41. package/dist/components/rex-pro-table/components/ActionButtons.d.ts +2 -0
  42. package/dist/components/rex-pro-table/components/ActionButtons.js +306 -0
  43. package/dist/components/rex-pro-table/components/drawer-table/InlineTable.d.ts +4 -0
  44. package/dist/components/rex-pro-table/components/drawer-table/InlineTable.js +89 -0
  45. package/dist/components/rex-pro-table/components/drawer-table/index.d.ts +2 -0
  46. package/dist/components/rex-pro-table/components/drawer-table/index.js +67 -0
  47. package/dist/components/rex-pro-table/components/modal-form/InlineForm.d.ts +8 -0
  48. package/dist/components/rex-pro-table/components/modal-form/InlineForm.js +143 -0
  49. package/dist/components/rex-pro-table/components/modal-form/index.d.ts +2 -0
  50. package/dist/components/rex-pro-table/components/modal-form/index.js +77 -0
  51. package/dist/components/rex-pro-table/demo/BasicRexProListTable.d.ts +2 -0
  52. package/dist/components/rex-pro-table/demo/BasicRexProListTable.js +1076 -0
  53. package/dist/components/rex-pro-table/demo/BasicRexProTable.d.ts +2 -0
  54. package/dist/components/rex-pro-table/demo/BasicRexProTable.js +1104 -0
  55. package/dist/components/rex-pro-table/index.d.ts +2 -0
  56. package/dist/components/rex-pro-table/index.js +1 -0
  57. package/dist/components/rex-pro-table/rex-pro-table.d.ts +4 -0
  58. package/dist/components/rex-pro-table/rex-pro-table.js +416 -0
  59. package/dist/components/rex-pro-table/style/index.d.ts +10 -0
  60. package/dist/components/rex-pro-table/style/index.js +23 -0
  61. package/dist/components/rex-pro-table/types.d.ts +221 -0
  62. package/dist/components/rex-pro-table/types.js +1 -0
  63. package/dist/index.d.ts +1 -0
  64. package/dist/index.js +1 -0
  65. package/dist/locales/en-US.json +28 -0
  66. package/dist/locales/zh-CN.json +28 -0
  67. package/dist/types/svg.d.ts +4 -0
  68. package/package.json +97 -0
@@ -0,0 +1,221 @@
1
+ import { BaseListTable, BaseTable, RequestFieldsContainer, TButtonFilterItem } from '@teamias/rex-design';
2
+ import { Button, DrawerProps, DropDownProps, FormInstance, GetProps, ModalProps } from 'antd';
3
+ import { SizeType } from 'antd/es/config-provider/SizeContext';
4
+ import { MutableRefObject, ReactNode } from 'react';
5
+ import { FilterForm, IFilterFormProps } from '../filter-form';
6
+ /** 组件props */
7
+ export interface IRexProTableProps<TF extends Record<string, unknown>, TT extends Record<string, unknown>> {
8
+ toolbar?: {
9
+ /** 批量操作按钮 */
10
+ batchActionProps?: Omit<IActionButtonsProps<TF>, 'proTableRef'>;
11
+ /** 自定选择 */
12
+ render?: (batchActionNode: ReactNode) => ReactNode;
13
+ };
14
+ /** 搜索表单 filter props */
15
+ filterFormProps?: Exclude<GetProps<typeof FilterForm<TF>>, 'loading' | 'form' | 'onReset' | 'onFinish' | 'onInit'>;
16
+ /** table props */
17
+ tableProps?: Exclude<GetProps<typeof BaseTable<TT>>, 'loading' | 'dataSource' | 'pagination' | 'extraColumns'>;
18
+ /** list-table props */
19
+ listTableProps?: Omit<GetProps<typeof BaseListTable<TT>>, 'loading' | 'headerRender' | 'pagination' | 'extraColumns'>;
20
+ /** 请求列表数据 */
21
+ request: (params: TRexProTableRequestParams<TF>) => Promise<TRexProTableRequestResult<TT>>;
22
+ /**
23
+ * 默认条数
24
+ * @default 50
25
+ */
26
+ defaultPageSize?: number;
27
+ /**
28
+ * 初始化自动请求
29
+ * @default false
30
+ */
31
+ autoInitRequest?: boolean;
32
+ /** 操作列配置 */
33
+ actionConfig?: {
34
+ /** 自定义渲染 */
35
+ render?: (record: TT, recordIndex: number, actionButtonsNode: ReactNode) => ReactNode;
36
+ /** 操作按钮 */
37
+ actionButtonProps?: Omit<IActionButtonsProps<TF>, 'proTableRef' | 'onClick'> & {
38
+ onClick?: (record: TT, recordIndex: number, key: number | string | bigint | undefined, item: TDropDownItem, proTableRef: IRexProTableRef<TF>) => void;
39
+ };
40
+ /** 列配置 */
41
+ columnConfig?: Omit<Exclude<GetProps<typeof BaseTable<TT>>['columns'], undefined>[number], 'render'>;
42
+ };
43
+ /** proTable 操作对象 */
44
+ proTableRef?: MutableRefObject<IRexProTableRef<TF> | undefined>;
45
+ /** 隐藏分页 */
46
+ hidePagination?: boolean;
47
+ }
48
+ export interface IRexProTableRef<TF extends Record<string, unknown>> {
49
+ /** 主动查询 */
50
+ getList: (page?: number) => void;
51
+ /** 获取过滤条件 */
52
+ getFilterValue: (real?: boolean) => TF;
53
+ /** 重载组件 */
54
+ reload: (wait?: number) => Promise<void>;
55
+ /** 获取form ref */
56
+ getFormRef: () => GetProps<typeof FilterForm<TF>>['formRef'];
57
+ /** 获取form 实例 */
58
+ getFormInstance: () => FormInstance<TF>;
59
+ }
60
+ export interface IActionButtonsProps<TF extends Record<string, unknown>> {
61
+ /** 静态配置 */
62
+ fieldsConfig?: IButtonItems[];
63
+ /** 配置数据 */
64
+ requestFields?: () => Promise<IButtonItems[]>;
65
+ /** 配置数据, 配置url的时候,通过注入请求器的方式获取 */
66
+ requestFieldsUrl?: string;
67
+ /** 配套 */
68
+ requestFieldsParams?: Record<string, unknown>;
69
+ /** 自定义配置 */
70
+ items?: IButtonItems[];
71
+ /**
72
+ * 检查选中项
73
+ * status: true 有值
74
+ * status: false 无值
75
+ */
76
+ checkSelected?: () => {
77
+ status: boolean;
78
+ selected?: React.Key[];
79
+ };
80
+ /**
81
+ * 操作成功回调
82
+ * - 目前适用于 confirm 的成功回调
83
+ */
84
+ actionSuccessCallback?: (key: number | string | bigint | undefined, item: TDropDownItem, proTableRef: IRexProTableRef<TF>, response?: unknown) => void;
85
+ /**
86
+ * 点击回调
87
+ * - 注意传入原生items的时候,会把里面的click 拦截掉
88
+ */
89
+ onClick?: (key: number | string | bigint | undefined, item: TDropDownItem, proTableRef: IRexProTableRef<TF>) => void | Promise<void>;
90
+ /** proTable ref */
91
+ proTableRef: IRexProTableRef<TF>;
92
+ /**
93
+ * antd Dropdown 配置属性(menu.items 无效)
94
+ */
95
+ dropdownProps?: DropDownProps;
96
+ /** 尺寸 */
97
+ size?: SizeType;
98
+ /** 行数据 */
99
+ record?: Record<string, unknown>;
100
+ /**
101
+ * 有无按钮
102
+ * - TODO: 注意每渲染一次,都会执行一次,需要在外面做判断
103
+ */
104
+ onHasButtons?: (has: boolean) => void;
105
+ enablePromiseCollection?: boolean;
106
+ }
107
+ export interface IButtonItems {
108
+ /** 按钮组类型 */
109
+ type: 'button_items' | 'button_group';
110
+ /** group 时候需要 */
111
+ label?: string;
112
+ /** group按钮的设置 */
113
+ buttonProps?: Omit<GetProps<typeof Button>, 'onClick'>;
114
+ /** 每项按钮 */
115
+ items?: TDropDownItem[];
116
+ /**
117
+ * 排序字段
118
+ * @default 99
119
+ */
120
+ sort?: number;
121
+ }
122
+ export type TDropDownItem = {
123
+ /** 按钮名 */
124
+ label: string;
125
+ /** 按钮key */
126
+ value: string | number;
127
+ /** 按钮对应的操作类型 */
128
+ action?: 'confirm' | 'modal-form' | 'modal-search' | 'custom';
129
+ /** 针对按钮的设置 */
130
+ buttonProps?: Omit<GetProps<typeof Button>, 'onClick'>;
131
+ /** 模块配置路径 */
132
+ modalConfigUrl?: string;
133
+ modalConfigParams?: Record<string, unknown>;
134
+ modalTitle?: string;
135
+ modalHeight?: string;
136
+ modalMaxHeight?: string;
137
+ modalWidth?: string | number;
138
+ confirmTitle?: ReactNode;
139
+ confirmContent?: ReactNode;
140
+ /**
141
+ * 针对 confirm 的提交路径
142
+ */
143
+ api?: string;
144
+ /** 后端提供, 后面结合数据一起提交 */
145
+ data?: object;
146
+ /**
147
+ * - 全部满足后,可显示
148
+ * - 不配置或缺少解析数据源,正常显示
149
+ */
150
+ filter?: TButtonFilterItem[];
151
+ };
152
+ /** 接口入参 */
153
+ export type TRexProTableRequestParams<T> = {
154
+ filterValues: T;
155
+ page: {
156
+ page_size: number;
157
+ current: number;
158
+ };
159
+ sort: unknown;
160
+ filter: unknown;
161
+ };
162
+ /** 接口回调 */
163
+ export type TRexProTableRequestResult<T> = {
164
+ items: T[];
165
+ page?: {
166
+ current_page: number;
167
+ page_size: number;
168
+ total_items: number;
169
+ total_pages: number;
170
+ };
171
+ };
172
+ export interface DrawerTableProps extends GetProps<typeof RequestFieldsContainer> {
173
+ /** 标题2 */
174
+ title?: ReactNode;
175
+ /** 是否显示遮罩层 */
176
+ mask?: boolean;
177
+ /** 宽度 */
178
+ width?: number | string;
179
+ /** 抽屉属性 */
180
+ drawerProps?: Omit<DrawerProps, 'visible' | 'onClose'>;
181
+ /** 打开/关闭回调 */
182
+ onOpenChange?: (open?: boolean) => void;
183
+ /**
184
+ * 窗口操作
185
+ */
186
+ action?: MutableRefObject<ModalAction | undefined>;
187
+ /** 行数据 */
188
+ record?: Record<string, unknown>;
189
+ }
190
+ export type ModalAction = {
191
+ onOpen: () => void;
192
+ onCancel: () => void;
193
+ };
194
+ export interface ProModalFormProps<T extends Record<string, unknown> = Record<string, unknown>> extends GetProps<typeof RequestFieldsContainer>, Pick<IFilterFormProps<T>, 'fieldPropsFn'> {
195
+ /**
196
+ * @description 标题
197
+ */
198
+ title?: ReactNode;
199
+ /** 弹框属性 */
200
+ modalProps?: Omit<ModalProps, 'cancelText' | 'onCancel'>;
201
+ /**
202
+ * @description 宽度
203
+ */
204
+ width?: number | string;
205
+ height?: string;
206
+ maxHeight?: string;
207
+ /**
208
+ * @description 表单域操作实例
209
+ */
210
+ action?: MutableRefObject<ModalAction | undefined>;
211
+ /**
212
+ * @description 打开/关闭执行的回调
213
+ * @param open
214
+ * @returns
215
+ */
216
+ onOpenChange?: (open: boolean) => void;
217
+ /** 操作成功回调 */
218
+ onFinish?: (response: unknown) => void;
219
+ /** 行数据 */
220
+ record?: Record<string, unknown>;
221
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export * from './components';
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export * from "./components";
@@ -0,0 +1,28 @@
1
+ {
2
+ "pro": {
3
+ "components": {
4
+ "rex-pro-table": {
5
+ "action-buttons": {
6
+ "confirm-execute-operation-is-it": "Are you sure you want to do this?",
7
+ "confirm-operation": "Confirm operation {label}",
8
+ "group-label": "Group label not configured",
9
+ "item-label": "Not configured button label",
10
+ "please-check-data": "Please check the data"
11
+ },
12
+ "column-action-title": "operate",
13
+ "empty-text": "Please select relevant filter criteria to search.",
14
+ "form": {
15
+ "cancel": "Cancel",
16
+ "determine": "Sure"
17
+ },
18
+ "pagination-total": "{total} entries in total"
19
+ },
20
+ "filter-form": {
21
+ "reset": "Reset",
22
+ "search": "Search",
23
+ "expand": "Expand",
24
+ "collapse": "Collapse"
25
+ }
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "pro": {
3
+ "components": {
4
+ "rex-pro-table": {
5
+ "empty-text": "请选择相关筛选条件进行搜索.",
6
+ "column-action-title": "操作",
7
+ "pagination-total": "共 {total} 条",
8
+ "action-buttons": {
9
+ "please-check-data": "请勾选数据",
10
+ "confirm-operation": "确认操作{label}",
11
+ "confirm-execute-operation-is-it": "确认要执行此操作吗?",
12
+ "item-label": "未配置 button label",
13
+ "group-label": "未配置 group label"
14
+ },
15
+ "form": {
16
+ "cancel": "取消",
17
+ "determine": "确定"
18
+ }
19
+ },
20
+ "filter-form": {
21
+ "reset": "重置",
22
+ "search": "查询",
23
+ "expand": "展开",
24
+ "collapse": "收起"
25
+ }
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,4 @@
1
+ declare module '*.svg' {
2
+ const content: string;
3
+ export default content;
4
+ }
package/package.json ADDED
@@ -0,0 +1,97 @@
1
+ {
2
+ "name": "@teamias/rex-pro",
3
+ "version": "0.0.1",
4
+ "description": "A react library developed with dumi",
5
+ "license": "MIT",
6
+ "module": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "scripts": {
12
+ "adduser": "npm adduser",
13
+ "build": "father build",
14
+ "build:watch": "father dev",
15
+ "deploy": "changeset && changeset version && npm publish",
16
+ "dev": "dumi dev",
17
+ "docs:build": "dumi build",
18
+ "docs:preview": "dumi preview",
19
+ "doctor": "father doctor",
20
+ "lint": "npm run lint:es",
21
+ "lint:css": "stylelint \"{src,test}/**/*.{css,less}\"",
22
+ "lint:es": "eslint \"{src,test}/**/*.{js,jsx,ts,tsx}\"",
23
+ "prepare": "husky install && dumi setup",
24
+ "prepublishOnly": "father doctor && npm run build",
25
+ "start": "npm run dev"
26
+ },
27
+ "commitlint": {
28
+ "extends": [
29
+ "@commitlint/config-conventional"
30
+ ]
31
+ },
32
+ "lint-staged": {
33
+ "*.{md,json}": [
34
+ "prettier --write --no-error-on-unmatched-pattern"
35
+ ],
36
+ "*.{css,less}": [
37
+ "stylelint --fix",
38
+ "prettier --write"
39
+ ],
40
+ "*.{js,jsx}": [
41
+ "eslint --fix",
42
+ "prettier --write"
43
+ ],
44
+ "*.{ts,tsx}": [
45
+ "eslint --fix",
46
+ "prettier --parser=typescript --write"
47
+ ]
48
+ },
49
+ "dependencies": {
50
+ "@ant-design/icons": "^6.0.0",
51
+ "@ant-design/pro-components": "^2.8.10",
52
+ "@teamias/rex-design": "^0.0.3",
53
+ "ahooks": "^3.9.0",
54
+ "antd": "^5.26.7",
55
+ "classnames": "^2.5.1",
56
+ "dayjs": "^1.11.13",
57
+ "lodash": "^4.17.21",
58
+ "radash": "^12.1.1",
59
+ "react-intl": "^7.1.11",
60
+ "styled-components": "^6.1.19"
61
+ },
62
+ "devDependencies": {
63
+ "@changesets/cli": "^2.29.5",
64
+ "@commitlint/cli": "^17.1.2",
65
+ "@commitlint/config-conventional": "^17.1.0",
66
+ "@types/lodash": "^4.17.20",
67
+ "@types/react": "^18.0.0",
68
+ "@types/react-dom": "^18.0.0",
69
+ "@umijs/lint": "^4.0.0",
70
+ "dumi": "^2.4.13",
71
+ "eslint": "^8.23.0",
72
+ "father": "^4.1.0",
73
+ "husky": "^8.0.1",
74
+ "lint-staged": "^13.0.3",
75
+ "prettier": "^2.7.1",
76
+ "prettier-plugin-organize-imports": "^3.0.0",
77
+ "prettier-plugin-packagejson": "^2.2.18",
78
+ "react": "^18.0.0",
79
+ "react-dom": "^18.0.0",
80
+ "stylelint": "^14.9.1"
81
+ },
82
+ "peerDependencies": {
83
+ "@ant-design/icons": ">=5.0.0",
84
+ "@ant-design/pro-components": ">=2.0.0",
85
+ "@teamias/rex-design": ">=0.0.1",
86
+ "antd": ">=5.0.0",
87
+ "react": ">=16.9.0",
88
+ "react-dom": ">=16.9.0",
89
+ "react-intl": ">=3.0.0"
90
+ },
91
+ "publishConfig": {
92
+ "access": "public"
93
+ },
94
+ "authors": [
95
+ "cloudovo"
96
+ ]
97
+ }