@faasjs/ant-design 0.0.2-beta.332 → 0.0.2-beta.336

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/dist/index.d.ts CHANGED
@@ -1,9 +1,16 @@
1
+ import { DescriptionsProps, FormItemProps as FormItemProps$1, InputProps, InputNumberProps, SwitchProps, SelectProps, FormProps as FormProps$1, TableColumnProps, TableProps as TableProps$1 } from 'antd';
1
2
  import * as antd_lib_form_Form from 'antd/lib/form/Form';
2
- import { FormItemProps as FormItemProps$1, InputProps, InputNumberProps, SwitchProps, SelectProps, FormProps as FormProps$1 } from 'antd';
3
3
  import { RuleObject } from 'rc-field-form/lib/interface';
4
4
  import { ReactNode } from 'react';
5
5
 
6
6
  declare type FaasItemType = 'string' | 'string[]' | 'number' | 'number[]' | 'boolean';
7
+ declare type FaasItemTypeValue = {
8
+ string: string;
9
+ 'string[]': string[];
10
+ number: number;
11
+ 'number[]': number[];
12
+ boolean: boolean;
13
+ };
7
14
  declare type FaasItemProps = {
8
15
  /**
9
16
  * Support string, string[], number, number[], boolean
@@ -14,6 +21,15 @@ declare type FaasItemProps = {
14
21
  title?: string;
15
22
  };
16
23
 
24
+ declare type DescriptionItemProps = FaasItemProps & {
25
+ children?: JSX.Element;
26
+ };
27
+ declare type DescriptionProps<T = any> = {
28
+ items: DescriptionItemProps[];
29
+ dataSource: T;
30
+ } & DescriptionsProps;
31
+ declare function Description(props: DescriptionProps): JSX.Element;
32
+
17
33
  declare type StringProps = {
18
34
  type?: 'string';
19
35
  input?: InputProps;
@@ -57,10 +73,21 @@ declare function FormItem<T = any>(props: FormItemProps<T>): JSX.Element;
57
73
 
58
74
  declare type FormProps<T = any> = {
59
75
  items?: FormItemProps[];
76
+ /** Default: { text: 'Submit' } */
77
+ submit?: false | {
78
+ /** Default: Submit */
79
+ text?: string;
80
+ };
60
81
  } & FormProps$1<T>;
61
- declare const Form: {
62
- <T = any>(props: FormProps<T>): JSX.Element;
63
- useForm: typeof antd_lib_form_Form.useForm;
82
+ declare function Form<T = any>(props: FormProps<T>): JSX.Element;
83
+ declare namespace Form {
84
+ var useForm: typeof antd_lib_form_Form.useForm;
85
+ }
86
+
87
+ declare type TableItemProps<T = any> = FaasItemProps & TableColumnProps<T>;
88
+ declare type TableProps<T = any> = TableProps$1<T> & {
89
+ items: TableItemProps[];
64
90
  };
91
+ declare function Table(props: TableProps): JSX.Element;
65
92
 
66
- export { Form, FormItem, FormItemProps, FormProps };
93
+ export { Description, DescriptionItemProps, DescriptionProps, FaasItemProps, FaasItemType, FaasItemTypeValue, Form, FormItem, FormItemProps, FormProps, Table, TableItemProps, TableProps };
package/dist/index.js CHANGED
@@ -46,27 +46,76 @@ var __toCommonJS = /* @__PURE__ */ ((cache) => {
46
46
  // src/index.ts
47
47
  var src_exports = {};
48
48
  __export(src_exports, {
49
+ Description: () => Description,
49
50
  Form: () => Form,
50
- FormItem: () => FormItem
51
+ FormItem: () => FormItem,
52
+ Table: () => Table
51
53
  });
52
54
 
53
55
  // react-shim.js
54
56
  var import_react = __toESM(require("react"));
55
57
 
56
- // src/components/Form.tsx
57
- var import_antd2 = require("antd");
58
-
59
- // src/components/FormItem.tsx
60
- var import_antd = require("antd");
58
+ // src/Description.tsx
61
59
  var import_icons = require("@ant-design/icons");
62
- var import_react2 = require("react");
60
+ var import_antd = require("antd");
63
61
  var import_lodash = require("lodash");
64
- function FormItem(props) {
62
+ var import_react2 = require("react");
63
+ function DescriptionItemContent(props) {
65
64
  const [computedProps, setComputedProps] = (0, import_react2.useState)();
66
65
  (0, import_react2.useEffect)(() => {
66
+ const propsCopy = __spreadValues({}, props);
67
+ if (!propsCopy.item.title)
68
+ propsCopy.item.title = (0, import_lodash.upperFirst)(propsCopy.item.id);
69
+ if (!propsCopy.item.type)
70
+ propsCopy.item.type = "string";
71
+ setComputedProps(propsCopy);
72
+ }, [props]);
73
+ if (!computedProps || typeof computedProps.value === "undefined" || computedProps.value === null)
74
+ return null;
75
+ if (computedProps.item.children) {
76
+ return (0, import_react2.cloneElement)(computedProps.item.children, { value: computedProps.value });
77
+ }
78
+ switch (computedProps.item.type) {
79
+ case "string[]":
80
+ return computedProps.value.join(", ");
81
+ case "number":
82
+ return computedProps.value;
83
+ case "number[]":
84
+ return computedProps.value.join(", ");
85
+ case "boolean":
86
+ return computedProps.value ? /* @__PURE__ */ import_react.default.createElement(import_icons.CheckOutlined, {
87
+ style: { marginTop: "4px" }
88
+ }) : /* @__PURE__ */ import_react.default.createElement(import_icons.CloseOutlined, {
89
+ style: { marginTop: "4px" }
90
+ });
91
+ default:
92
+ return computedProps.value;
93
+ }
94
+ }
95
+ function Description(props) {
96
+ return /* @__PURE__ */ import_react.default.createElement(import_antd.Descriptions, __spreadValues({}, props), props.items.map((item) => /* @__PURE__ */ import_react.default.createElement(import_antd.Descriptions.Item, {
97
+ key: item.id,
98
+ label: item.title || (0, import_lodash.upperFirst)(item.id)
99
+ }, /* @__PURE__ */ import_react.default.createElement(DescriptionItemContent, {
100
+ item,
101
+ value: props.dataSource[item.id]
102
+ }))));
103
+ }
104
+
105
+ // src/Form.tsx
106
+ var import_antd3 = require("antd");
107
+
108
+ // src/FormItem.tsx
109
+ var import_antd2 = require("antd");
110
+ var import_icons2 = require("@ant-design/icons");
111
+ var import_react3 = require("react");
112
+ var import_lodash2 = require("lodash");
113
+ function FormItem(props) {
114
+ const [computedProps, setComputedProps] = (0, import_react3.useState)();
115
+ (0, import_react3.useEffect)(() => {
67
116
  const propsCopy = __spreadValues({}, props);
68
117
  if (!propsCopy.title)
69
- propsCopy.title = (0, import_lodash.upperFirst)(propsCopy.id);
118
+ propsCopy.title = (0, import_lodash2.upperFirst)(propsCopy.id);
70
119
  if (!propsCopy.label && props.label !== false)
71
120
  propsCopy.label = propsCopy.title;
72
121
  if (!propsCopy.name)
@@ -100,7 +149,7 @@ function FormItem(props) {
100
149
  options.push(option);
101
150
  else
102
151
  options.push({
103
- label: (0, import_lodash.upperFirst)(option.toString()),
152
+ label: (0, import_lodash2.upperFirst)(option.toString()),
104
153
  value: option
105
154
  });
106
155
  }
@@ -116,56 +165,56 @@ function FormItem(props) {
116
165
  if (!computedProps)
117
166
  return null;
118
167
  if (computedProps.children)
119
- return /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, __spreadValues({}, computedProps), computedProps.children);
168
+ return /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.Item, __spreadValues({}, computedProps), computedProps.children);
120
169
  switch (computedProps.type) {
121
170
  case "string":
122
- return /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, __spreadValues({}, computedProps), computedProps.options ? /* @__PURE__ */ import_react.default.createElement(import_antd.Select, __spreadValues({}, computedProps.input)) : /* @__PURE__ */ import_react.default.createElement(import_antd.Input, __spreadValues({}, computedProps.input)));
171
+ return /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.Item, __spreadValues({}, computedProps), computedProps.options ? /* @__PURE__ */ import_react.default.createElement(import_antd2.Select, __spreadValues({}, computedProps.input)) : /* @__PURE__ */ import_react.default.createElement(import_antd2.Input, __spreadValues({}, computedProps.input)));
123
172
  case "string[]":
124
173
  if (computedProps.options)
125
- return /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, __spreadValues({}, computedProps), /* @__PURE__ */ import_react.default.createElement(import_antd.Select, __spreadValues({
174
+ return /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.Item, __spreadValues({}, computedProps), /* @__PURE__ */ import_react.default.createElement(import_antd2.Select, __spreadValues({
126
175
  mode: "multiple"
127
176
  }, computedProps.input)));
128
- return /* @__PURE__ */ import_react.default.createElement(import_antd.Form.List, {
177
+ return /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.List, {
129
178
  name: computedProps.name,
130
179
  rules: computedProps.rules
131
180
  }, (fields, { add, remove }, { errors }) => /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, computedProps.label && /* @__PURE__ */ import_react.default.createElement("div", {
132
181
  className: "ant-form-item-label"
133
182
  }, /* @__PURE__ */ import_react.default.createElement("label", {
134
183
  className: computedProps.rules.find((r) => r.required) && "ant-form-item-required"
135
- }, computedProps.label)), fields.map((field) => /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, {
184
+ }, computedProps.label)), fields.map((field) => /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.Item, {
136
185
  key: field.key
137
- }, /* @__PURE__ */ import_react.default.createElement(import_antd.Row, {
186
+ }, /* @__PURE__ */ import_react.default.createElement(import_antd2.Row, {
138
187
  gutter: 24
139
- }, /* @__PURE__ */ import_react.default.createElement(import_antd.Col, {
188
+ }, /* @__PURE__ */ import_react.default.createElement(import_antd2.Col, {
140
189
  span: 23
141
- }, /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, __spreadProps(__spreadValues({}, field), {
190
+ }, /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.Item, __spreadProps(__spreadValues({}, field), {
142
191
  noStyle: true
143
- }), /* @__PURE__ */ import_react.default.createElement(import_antd.Input, __spreadValues({}, computedProps.input)))), /* @__PURE__ */ import_react.default.createElement(import_antd.Col, {
192
+ }), /* @__PURE__ */ import_react.default.createElement(import_antd2.Input, __spreadValues({}, computedProps.input)))), /* @__PURE__ */ import_react.default.createElement(import_antd2.Col, {
144
193
  span: 1
145
- }, (!computedProps.rules.find((r) => r.required) || field.key > 0) && /* @__PURE__ */ import_react.default.createElement(import_antd.Button, {
194
+ }, (!computedProps.rules.find((r) => r.required) || field.key > 0) && /* @__PURE__ */ import_react.default.createElement(import_antd2.Button, {
146
195
  danger: true,
147
196
  type: "link",
148
197
  style: { float: "right" },
149
- icon: /* @__PURE__ */ import_react.default.createElement(import_icons.MinusCircleOutlined, null),
198
+ icon: /* @__PURE__ */ import_react.default.createElement(import_icons2.MinusCircleOutlined, null),
150
199
  onClick: () => remove(field.name)
151
- }))))), /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, null, (!computedProps.maxCount || computedProps.maxCount > fields.length) && /* @__PURE__ */ import_react.default.createElement(import_antd.Button, {
200
+ }))))), /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.Item, null, (!computedProps.maxCount || computedProps.maxCount > fields.length) && /* @__PURE__ */ import_react.default.createElement(import_antd2.Button, {
152
201
  type: "dashed",
153
202
  block: true,
154
203
  onClick: () => add(),
155
- icon: /* @__PURE__ */ import_react.default.createElement(import_icons.PlusOutlined, null)
156
- }), /* @__PURE__ */ import_react.default.createElement(import_antd.Form.ErrorList, {
204
+ icon: /* @__PURE__ */ import_react.default.createElement(import_icons2.PlusOutlined, null)
205
+ }), /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.ErrorList, {
157
206
  errors
158
207
  }))));
159
208
  case "number":
160
- return /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, __spreadValues({}, computedProps), computedProps.options ? /* @__PURE__ */ import_react.default.createElement(import_antd.Select, __spreadValues({}, computedProps.input)) : /* @__PURE__ */ import_react.default.createElement(import_antd.InputNumber, __spreadValues({
209
+ return /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.Item, __spreadValues({}, computedProps), computedProps.options ? /* @__PURE__ */ import_react.default.createElement(import_antd2.Select, __spreadValues({}, computedProps.input)) : /* @__PURE__ */ import_react.default.createElement(import_antd2.InputNumber, __spreadValues({
161
210
  style: { width: "100%" }
162
211
  }, computedProps.input)));
163
212
  case "number[]":
164
213
  if (computedProps.options)
165
- return /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, __spreadValues({}, computedProps), /* @__PURE__ */ import_react.default.createElement(import_antd.Select, __spreadValues({
214
+ return /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.Item, __spreadValues({}, computedProps), /* @__PURE__ */ import_react.default.createElement(import_antd2.Select, __spreadValues({
166
215
  mode: "multiple"
167
216
  }, computedProps.input)));
168
- return /* @__PURE__ */ import_react.default.createElement(import_antd.Form.List, {
217
+ return /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.List, {
169
218
  name: computedProps.name,
170
219
  rules: computedProps.rules
171
220
  }, (fields, { add, remove }, { errors }) => {
@@ -174,54 +223,101 @@ function FormItem(props) {
174
223
  className: "ant-form-item-label"
175
224
  }, /* @__PURE__ */ import_react.default.createElement("label", {
176
225
  className: ((_a = computedProps.rules) == null ? void 0 : _a.find((r) => r.required)) && "ant-form-item-required"
177
- }, computedProps.label)), fields.map((field) => /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, {
226
+ }, computedProps.label)), fields.map((field) => /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.Item, {
178
227
  key: field.key
179
- }, /* @__PURE__ */ import_react.default.createElement(import_antd.Row, {
228
+ }, /* @__PURE__ */ import_react.default.createElement(import_antd2.Row, {
180
229
  gutter: 24
181
- }, /* @__PURE__ */ import_react.default.createElement(import_antd.Col, {
230
+ }, /* @__PURE__ */ import_react.default.createElement(import_antd2.Col, {
182
231
  span: 23
183
- }, /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, __spreadProps(__spreadValues({}, field), {
232
+ }, /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.Item, __spreadProps(__spreadValues({}, field), {
184
233
  noStyle: true
185
- }), /* @__PURE__ */ import_react.default.createElement(import_antd.InputNumber, __spreadValues({
234
+ }), /* @__PURE__ */ import_react.default.createElement(import_antd2.InputNumber, __spreadValues({
186
235
  style: { width: "100%" }
187
- }, computedProps.input)))), /* @__PURE__ */ import_react.default.createElement(import_antd.Col, {
236
+ }, computedProps.input)))), /* @__PURE__ */ import_react.default.createElement(import_antd2.Col, {
188
237
  span: 1
189
- }, (!computedProps.rules.find((r) => r.required) || field.key > 0) && /* @__PURE__ */ import_react.default.createElement(import_antd.Button, {
238
+ }, (!computedProps.rules.find((r) => r.required) || field.key > 0) && /* @__PURE__ */ import_react.default.createElement(import_antd2.Button, {
190
239
  danger: true,
191
240
  type: "link",
192
241
  style: { float: "right" },
193
- icon: /* @__PURE__ */ import_react.default.createElement(import_icons.MinusCircleOutlined, null),
242
+ icon: /* @__PURE__ */ import_react.default.createElement(import_icons2.MinusCircleOutlined, null),
194
243
  onClick: () => remove(field.name)
195
- }))))), /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, null, (!computedProps.maxCount || computedProps.maxCount > fields.length) && /* @__PURE__ */ import_react.default.createElement(import_antd.Button, {
244
+ }))))), /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.Item, null, (!computedProps.maxCount || computedProps.maxCount > fields.length) && /* @__PURE__ */ import_react.default.createElement(import_antd2.Button, {
196
245
  type: "dashed",
197
246
  block: true,
198
247
  onClick: () => add(),
199
- icon: /* @__PURE__ */ import_react.default.createElement(import_icons.PlusOutlined, null)
200
- }), /* @__PURE__ */ import_react.default.createElement(import_antd.Form.ErrorList, {
248
+ icon: /* @__PURE__ */ import_react.default.createElement(import_icons2.PlusOutlined, null)
249
+ }), /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.ErrorList, {
201
250
  errors
202
251
  })));
203
252
  });
204
253
  case "boolean":
205
- return /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, __spreadValues({}, computedProps), /* @__PURE__ */ import_react.default.createElement(import_antd.Switch, __spreadValues({}, computedProps.input)));
254
+ return /* @__PURE__ */ import_react.default.createElement(import_antd2.Form.Item, __spreadValues({}, computedProps), /* @__PURE__ */ import_react.default.createElement(import_antd2.Switch, __spreadValues({}, computedProps.input)));
206
255
  default:
207
256
  return null;
208
257
  }
209
258
  }
210
259
 
211
- // src/components/Form.tsx
212
- var Form = function(props) {
213
- var _a;
214
- return /* @__PURE__ */ import_react.default.createElement(import_antd2.Form, __spreadValues({}, props), (_a = props.items) == null ? void 0 : _a.map((item) => /* @__PURE__ */ import_react.default.createElement(FormItem, __spreadValues({
260
+ // src/Form.tsx
261
+ function Form(props) {
262
+ var _a, _b;
263
+ return /* @__PURE__ */ import_react.default.createElement(import_antd3.Form, __spreadValues({}, props), (_a = props.items) == null ? void 0 : _a.map((item) => /* @__PURE__ */ import_react.default.createElement(FormItem, __spreadValues({
215
264
  key: item.id
216
- }, item))), props.children, /* @__PURE__ */ import_react.default.createElement(import_antd2.Button, {
265
+ }, item))), props.children, props.submit !== false && /* @__PURE__ */ import_react.default.createElement(import_antd3.Button, {
217
266
  htmlType: "submit",
218
267
  type: "primary"
219
- }, "Submit"));
220
- };
221
- Form.useForm = import_antd2.Form.useForm;
268
+ }, ((_b = props.submit) == null ? void 0 : _b.text) || "Submit"));
269
+ }
270
+ Form.useForm = import_antd3.Form.useForm;
271
+
272
+ // src/Table.tsx
273
+ var import_react4 = require("react");
274
+ var import_antd4 = require("antd");
275
+ var import_icons3 = require("@ant-design/icons");
276
+ var import_lodash3 = require("lodash");
277
+ function Table(props) {
278
+ const [columns, setColumns] = (0, import_react4.useState)();
279
+ (0, import_react4.useEffect)(() => {
280
+ for (const item of props.items) {
281
+ if (!item.key)
282
+ item.key = item.id;
283
+ if (!item.dataIndex)
284
+ item.dataIndex = item.id;
285
+ if (!item.title)
286
+ item.title = (0, import_lodash3.upperFirst)(item.id);
287
+ if (!item.type)
288
+ item.type = "string";
289
+ if (item.render)
290
+ continue;
291
+ switch (item.type) {
292
+ case "string[]":
293
+ item.render = (value) => value.join(", ");
294
+ break;
295
+ case "number[]":
296
+ item.render = (value) => value.join(", ");
297
+ break;
298
+ case "boolean":
299
+ item.render = (value) => value ? /* @__PURE__ */ import_react.default.createElement(import_icons3.CheckOutlined, {
300
+ style: { marginTop: "4px" }
301
+ }) : /* @__PURE__ */ import_react.default.createElement(import_icons3.CloseOutlined, {
302
+ style: { marginTop: "4px" }
303
+ });
304
+ break;
305
+ }
306
+ }
307
+ setColumns(props.items);
308
+ }, [props.items]);
309
+ if (!columns)
310
+ return null;
311
+ return /* @__PURE__ */ import_react.default.createElement(import_antd4.Table, __spreadProps(__spreadValues({}, props), {
312
+ rowKey: props.rowKey || "id",
313
+ columns
314
+ }));
315
+ }
222
316
  module.exports = __toCommonJS(src_exports);
223
317
  // Annotate the CommonJS export names for ESM import in node:
224
318
  0 && (module.exports = {
319
+ Description,
225
320
  Form,
226
- FormItem
321
+ FormItem,
322
+ Table
227
323
  });
package/dist/index.mjs CHANGED
@@ -21,13 +21,64 @@ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
21
  // react-shim.js
22
22
  import React from "react";
23
23
 
24
- // src/components/Form.tsx
24
+ // src/Description.tsx
25
+ import { CheckOutlined, CloseOutlined } from "@ant-design/icons";
26
+ import { Descriptions } from "antd";
27
+ import { upperFirst } from "lodash";
28
+ import {
29
+ cloneElement,
30
+ useEffect,
31
+ useState
32
+ } from "react";
33
+ function DescriptionItemContent(props) {
34
+ const [computedProps, setComputedProps] = useState();
35
+ useEffect(() => {
36
+ const propsCopy = __spreadValues({}, props);
37
+ if (!propsCopy.item.title)
38
+ propsCopy.item.title = upperFirst(propsCopy.item.id);
39
+ if (!propsCopy.item.type)
40
+ propsCopy.item.type = "string";
41
+ setComputedProps(propsCopy);
42
+ }, [props]);
43
+ if (!computedProps || typeof computedProps.value === "undefined" || computedProps.value === null)
44
+ return null;
45
+ if (computedProps.item.children) {
46
+ return cloneElement(computedProps.item.children, { value: computedProps.value });
47
+ }
48
+ switch (computedProps.item.type) {
49
+ case "string[]":
50
+ return computedProps.value.join(", ");
51
+ case "number":
52
+ return computedProps.value;
53
+ case "number[]":
54
+ return computedProps.value.join(", ");
55
+ case "boolean":
56
+ return computedProps.value ? /* @__PURE__ */ React.createElement(CheckOutlined, {
57
+ style: { marginTop: "4px" }
58
+ }) : /* @__PURE__ */ React.createElement(CloseOutlined, {
59
+ style: { marginTop: "4px" }
60
+ });
61
+ default:
62
+ return computedProps.value;
63
+ }
64
+ }
65
+ function Description(props) {
66
+ return /* @__PURE__ */ React.createElement(Descriptions, __spreadValues({}, props), props.items.map((item) => /* @__PURE__ */ React.createElement(Descriptions.Item, {
67
+ key: item.id,
68
+ label: item.title || upperFirst(item.id)
69
+ }, /* @__PURE__ */ React.createElement(DescriptionItemContent, {
70
+ item,
71
+ value: props.dataSource[item.id]
72
+ }))));
73
+ }
74
+
75
+ // src/Form.tsx
25
76
  import {
26
77
  Button as Button2,
27
78
  Form as AntdForm2
28
79
  } from "antd";
29
80
 
30
- // src/components/FormItem.tsx
81
+ // src/FormItem.tsx
31
82
  import {
32
83
  Button,
33
84
  Row,
@@ -40,16 +91,16 @@ import {
40
91
  } from "antd";
41
92
  import { MinusCircleOutlined, PlusOutlined } from "@ant-design/icons";
42
93
  import {
43
- useEffect,
44
- useState
94
+ useEffect as useEffect2,
95
+ useState as useState2
45
96
  } from "react";
46
- import { upperFirst } from "lodash";
97
+ import { upperFirst as upperFirst2 } from "lodash";
47
98
  function FormItem(props) {
48
- const [computedProps, setComputedProps] = useState();
49
- useEffect(() => {
99
+ const [computedProps, setComputedProps] = useState2();
100
+ useEffect2(() => {
50
101
  const propsCopy = __spreadValues({}, props);
51
102
  if (!propsCopy.title)
52
- propsCopy.title = upperFirst(propsCopy.id);
103
+ propsCopy.title = upperFirst2(propsCopy.id);
53
104
  if (!propsCopy.label && props.label !== false)
54
105
  propsCopy.label = propsCopy.title;
55
106
  if (!propsCopy.name)
@@ -83,7 +134,7 @@ function FormItem(props) {
83
134
  options.push(option);
84
135
  else
85
136
  options.push({
86
- label: upperFirst(option.toString()),
137
+ label: upperFirst2(option.toString()),
87
138
  value: option
88
139
  });
89
140
  }
@@ -191,18 +242,67 @@ function FormItem(props) {
191
242
  }
192
243
  }
193
244
 
194
- // src/components/Form.tsx
195
- var Form = function(props) {
196
- var _a;
245
+ // src/Form.tsx
246
+ function Form(props) {
247
+ var _a, _b;
197
248
  return /* @__PURE__ */ React.createElement(AntdForm2, __spreadValues({}, props), (_a = props.items) == null ? void 0 : _a.map((item) => /* @__PURE__ */ React.createElement(FormItem, __spreadValues({
198
249
  key: item.id
199
- }, item))), props.children, /* @__PURE__ */ React.createElement(Button2, {
250
+ }, item))), props.children, props.submit !== false && /* @__PURE__ */ React.createElement(Button2, {
200
251
  htmlType: "submit",
201
252
  type: "primary"
202
- }, "Submit"));
203
- };
253
+ }, ((_b = props.submit) == null ? void 0 : _b.text) || "Submit"));
254
+ }
204
255
  Form.useForm = AntdForm2.useForm;
256
+
257
+ // src/Table.tsx
258
+ import { useState as useState3, useEffect as useEffect3 } from "react";
259
+ import {
260
+ Table as AntdTable
261
+ } from "antd";
262
+ import { CheckOutlined as CheckOutlined2, CloseOutlined as CloseOutlined2 } from "@ant-design/icons";
263
+ import { upperFirst as upperFirst3 } from "lodash";
264
+ function Table(props) {
265
+ const [columns, setColumns] = useState3();
266
+ useEffect3(() => {
267
+ for (const item of props.items) {
268
+ if (!item.key)
269
+ item.key = item.id;
270
+ if (!item.dataIndex)
271
+ item.dataIndex = item.id;
272
+ if (!item.title)
273
+ item.title = upperFirst3(item.id);
274
+ if (!item.type)
275
+ item.type = "string";
276
+ if (item.render)
277
+ continue;
278
+ switch (item.type) {
279
+ case "string[]":
280
+ item.render = (value) => value.join(", ");
281
+ break;
282
+ case "number[]":
283
+ item.render = (value) => value.join(", ");
284
+ break;
285
+ case "boolean":
286
+ item.render = (value) => value ? /* @__PURE__ */ React.createElement(CheckOutlined2, {
287
+ style: { marginTop: "4px" }
288
+ }) : /* @__PURE__ */ React.createElement(CloseOutlined2, {
289
+ style: { marginTop: "4px" }
290
+ });
291
+ break;
292
+ }
293
+ }
294
+ setColumns(props.items);
295
+ }, [props.items]);
296
+ if (!columns)
297
+ return null;
298
+ return /* @__PURE__ */ React.createElement(AntdTable, __spreadProps(__spreadValues({}, props), {
299
+ rowKey: props.rowKey || "id",
300
+ columns
301
+ }));
302
+ }
205
303
  export {
304
+ Description,
206
305
  Form,
207
- FormItem
306
+ FormItem,
307
+ Table
208
308
  };
package/package.json CHANGED
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "name": "@faasjs/ant-design",
3
- "version": "0.0.2-beta.332",
3
+ "version": "0.0.2-beta.336",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
- "module": "dist/index.mjs",
8
7
  "homepage": "https://faasjs.com/doc/ant-design.html",
9
8
  "repository": {
10
9
  "type": "git",
@@ -27,7 +26,8 @@
27
26
  "antd": "*",
28
27
  "lodash": "*",
29
28
  "react": "*",
30
- "react-dom": "*"
29
+ "react-dom": "*",
30
+ "@faasjs/react": "^0.0.2-beta.336"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/lodash": "*",