antd-solid 0.0.6 → 0.0.8

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 (147) hide show
  1. package/dist/index.esm.js +2356 -0
  2. package/dist/index.umd.js +1 -0
  3. package/es/Button.d.ts +19 -0
  4. package/es/Button.js +73 -0
  5. package/es/Collapse/index.d.ts +16 -0
  6. package/es/Collapse/index.js +87 -0
  7. package/es/ColorPicker.d.ts +8 -0
  8. package/es/ColorPicker.js +6 -0
  9. package/es/Compact.d.ts +12 -0
  10. package/es/Compact.js +17 -0
  11. package/es/DatePicker.d.ts +19 -0
  12. package/es/DatePicker.js +9 -0
  13. package/es/Empty/PRESENTED_IMAGE_SIMPLE.d.ts +3 -0
  14. package/es/Empty/PRESENTED_IMAGE_SIMPLE.js +14 -0
  15. package/es/Empty/assets/EmptySvg.d.ts +2 -0
  16. package/es/Empty/assets/EmptySvg.js +6 -0
  17. package/es/Empty/assets/SimpleEmptySvg.d.ts +2 -0
  18. package/es/Empty/assets/SimpleEmptySvg.js +6 -0
  19. package/es/Empty/index.d.ts +5 -0
  20. package/es/Empty/index.js +16 -0
  21. package/es/Image.d.ts +9 -0
  22. package/es/Image.js +22 -0
  23. package/es/Input.d.ts +29 -0
  24. package/es/Input.js +144 -0
  25. package/es/InputNumber.d.ts +11 -0
  26. package/es/InputNumber.js +92 -0
  27. package/es/InputNumber.test.d.ts +1 -0
  28. package/es/InputNumber.test.js +42 -0
  29. package/es/Modal.d.ts +47 -0
  30. package/es/Modal.js +195 -0
  31. package/es/Popconfirm.d.ts +21 -0
  32. package/es/Popconfirm.js +64 -0
  33. package/es/Popover.d.ts +7 -0
  34. package/es/Popover.js +36 -0
  35. package/es/Progress.d.ts +7 -0
  36. package/es/Progress.js +6 -0
  37. package/es/Radio.d.ts +27 -0
  38. package/es/Radio.js +89 -0
  39. package/es/Result.d.ts +10 -0
  40. package/es/Result.js +29 -0
  41. package/es/Segmented/index.d.ts +21 -0
  42. package/es/Segmented/index.js +72 -0
  43. package/es/Select.d.ts +16 -0
  44. package/es/Select.js +113 -0
  45. package/es/Skeleton.d.ts +9 -0
  46. package/es/Skeleton.js +9 -0
  47. package/es/Spin.d.ts +9 -0
  48. package/es/Spin.js +22 -0
  49. package/es/Switch.d.ts +8 -0
  50. package/es/Switch.js +30 -0
  51. package/es/Table.d.ts +11 -0
  52. package/es/Table.js +57 -0
  53. package/es/Tabs.d.ts +17 -0
  54. package/es/Tabs.js +117 -0
  55. package/es/Timeline.d.ts +13 -0
  56. package/es/Timeline.js +30 -0
  57. package/es/Tooltip.d.ts +34 -0
  58. package/es/Tooltip.js +302 -0
  59. package/es/Tree.d.ts +28 -0
  60. package/es/Tree.js +198 -0
  61. package/es/Upload.d.ts +11 -0
  62. package/es/Upload.js +6 -0
  63. package/es/form/Form.d.ts +18 -0
  64. package/es/form/Form.js +70 -0
  65. package/es/form/FormItem.d.ts +19 -0
  66. package/es/form/FormItem.js +141 -0
  67. package/es/form/context.d.ts +12 -0
  68. package/es/form/context.js +5 -0
  69. package/es/form/index.d.ts +8 -0
  70. package/es/form/index.js +7 -0
  71. package/es/hooks/createControllableValue.d.ts +16 -0
  72. package/es/hooks/createControllableValue.js +41 -0
  73. package/es/hooks/createUpdateEffect.d.ts +5 -0
  74. package/es/hooks/createUpdateEffect.js +12 -0
  75. package/es/hooks/index.d.ts +2 -0
  76. package/es/hooks/index.js +2 -0
  77. package/es/hooks/useClickAway.d.ts +2 -0
  78. package/es/hooks/useClickAway.js +17 -0
  79. package/es/hooks/useSize.d.ts +5 -0
  80. package/es/hooks/useSize.js +22 -0
  81. package/es/index.d.ts +42 -0
  82. package/es/index.js +29 -0
  83. package/es/types/index.d.ts +3 -0
  84. package/es/types/index.js +1 -0
  85. package/es/utils/EventEmitter.d.ts +7 -0
  86. package/es/utils/EventEmitter.js +13 -0
  87. package/es/utils/ReactToSolid.d.ts +8 -0
  88. package/es/utils/ReactToSolid.js +30 -0
  89. package/es/utils/SolidToReact.d.ts +8 -0
  90. package/es/utils/SolidToReact.js +23 -0
  91. package/es/utils/array.d.ts +15 -0
  92. package/es/utils/array.js +19 -0
  93. package/es/utils/component.d.ts +31 -0
  94. package/es/utils/component.js +68 -0
  95. package/es/utils/solid.d.ts +15 -0
  96. package/es/utils/solid.js +32 -0
  97. package/es/utils/zh_CN.d.ts +2 -0
  98. package/{src/utils/zh_CN.ts → es/utils/zh_CN.js} +34 -34
  99. package/package.json +7 -6
  100. package/src/Button.tsx +0 -125
  101. package/src/Collapse/index.tsx +0 -86
  102. package/src/ColorPicker.tsx +0 -11
  103. package/src/Compact.tsx +0 -15
  104. package/src/DatePicker.tsx +0 -22
  105. package/src/Empty/PRESENTED_IMAGE_SIMPLE.tsx +0 -15
  106. package/src/Empty/assets/EmptySvg.tsx +0 -43
  107. package/src/Empty/assets/SimpleEmptySvg.tsx +0 -16
  108. package/src/Empty/index.tsx +0 -20
  109. package/src/Image.tsx +0 -29
  110. package/src/Input.tsx +0 -202
  111. package/src/InputNumber.test.tsx +0 -46
  112. package/src/InputNumber.tsx +0 -125
  113. package/src/Modal.tsx +0 -196
  114. package/src/Popconfirm.tsx +0 -75
  115. package/src/Popover.tsx +0 -30
  116. package/src/Progress.tsx +0 -4
  117. package/src/Radio.tsx +0 -132
  118. package/src/Result.tsx +0 -38
  119. package/src/Segmented/index.tsx +0 -95
  120. package/src/Select.tsx +0 -128
  121. package/src/Skeleton.tsx +0 -14
  122. package/src/Spin.tsx +0 -23
  123. package/src/Switch.tsx +0 -34
  124. package/src/Table.tsx +0 -53
  125. package/src/Tabs.tsx +0 -131
  126. package/src/Timeline.tsx +0 -33
  127. package/src/Tooltip.tsx +0 -355
  128. package/src/Tree.tsx +0 -246
  129. package/src/Upload.tsx +0 -10
  130. package/src/form/Form.tsx +0 -94
  131. package/src/form/FormItem.tsx +0 -139
  132. package/src/form/context.ts +0 -16
  133. package/src/form/index.ts +0 -13
  134. package/src/hooks/createControllableValue.ts +0 -68
  135. package/src/hooks/createUpdateEffect.ts +0 -16
  136. package/src/hooks/index.ts +0 -2
  137. package/src/hooks/useClickAway.ts +0 -18
  138. package/src/hooks/useSize.ts +0 -26
  139. package/src/index.ts +0 -44
  140. package/src/types/index.ts +0 -5
  141. package/src/utils/EventEmitter.ts +0 -15
  142. package/src/utils/ReactToSolid.tsx +0 -38
  143. package/src/utils/SolidToReact.tsx +0 -27
  144. package/src/utils/array.ts +0 -21
  145. package/src/utils/component.tsx +0 -85
  146. package/src/utils/solid.ts +0 -53
  147. /package/{dist → css}/index.css +0 -0
package/es/Tree.js ADDED
@@ -0,0 +1,198 @@
1
+ import { delegateEvents, createComponent, setAttribute, insert, effect, className, memo, template } from 'solid-js/web';
2
+ import { isEmpty } from 'lodash-es';
3
+ import { createContext, createSignal, createSelector, untrack, useContext, Index, Show } from 'solid-js';
4
+ import cs from 'classnames';
5
+
6
+ const _tmpl$ = /*#__PURE__*/template(`<span class="i-ant-design:minus-square-outlined">`),
7
+ _tmpl$2 = /*#__PURE__*/template(`<div><div class="flex-shrink-0" role="indent"></div><div class="ant-flex-shrink-0 ant-w-24px ant-h-24px ant-flex ant-items-center ant-justify-center"><span class="i-ant-design:holder-outlined"></span></div><div></div><div>`),
8
+ _tmpl$3 = /*#__PURE__*/template(`<span class="ant-inline-block ant-w-24px">`),
9
+ _tmpl$4 = /*#__PURE__*/template(`<span class="i-ant-design:plus-square-outlined">`);
10
+ const TreeContext = createContext({});
11
+ /**
12
+ * 单层级 tree
13
+ */
14
+ function SingleLevelTree(props) {
15
+ const [expanded, setExpanded] = createSignal(props.defaultExpandAll);
16
+ const {
17
+ selectedNodes,
18
+ setSelectedNodes,
19
+ draggableNode,
20
+ setDraggableNode,
21
+ draggableIndexes,
22
+ setDraggableIndexes,
23
+ isDraggable,
24
+ targetNode,
25
+ setTargetNode,
26
+ targetIndexes,
27
+ setTargetIndexes,
28
+ isTarget,
29
+ draggable,
30
+ onDrop
31
+ } = useContext(TreeContext);
32
+ return createComponent(Index, {
33
+ get each() {
34
+ return props.treeData;
35
+ },
36
+ children: (item, i) => {
37
+ const indexes = [...(props.parentIndexes ?? []), i];
38
+ return [(() => {
39
+ const _el$ = _tmpl$2(),
40
+ _el$2 = _el$.firstChild,
41
+ _el$3 = _el$2.nextSibling,
42
+ _el$4 = _el$3.nextSibling,
43
+ _el$6 = _el$4.nextSibling;
44
+ _el$.addEventListener("dragend", () => {
45
+ onDrop?.({
46
+ dragNode: draggableNode(),
47
+ dragIndexes: draggableIndexes(),
48
+ targetNode: targetNode(),
49
+ targetIndexes: targetIndexes()
50
+ });
51
+ setDraggableNode(null);
52
+ setDraggableIndexes(null);
53
+ setTargetNode(null);
54
+ setTargetIndexes(null);
55
+ });
56
+ _el$.addEventListener("dragleave", e => {
57
+ if (item() === targetNode() && e.relatedTarget) {
58
+ setTargetNode(null);
59
+ setTargetIndexes(null);
60
+ }
61
+ });
62
+ _el$.addEventListener("dragenter", () => {
63
+ if (item() !== draggableNode()) {
64
+ setTargetNode(item());
65
+ setTargetIndexes(indexes);
66
+ }
67
+ });
68
+ _el$.addEventListener("dragstart", () => {
69
+ setDraggableNode(item());
70
+ setDraggableIndexes(indexes);
71
+ });
72
+ setAttribute(_el$, "draggable", draggable);
73
+ insert(_el$2, () => Array(props.indent).fill(0).map(() => _tmpl$3()));
74
+ insert(_el$4, createComponent(Show, {
75
+ get when() {
76
+ return expanded();
77
+ },
78
+ get fallback() {
79
+ return (() => {
80
+ const _el$8 = _tmpl$4();
81
+ _el$8.$$click = setExpanded;
82
+ _el$8.$$clickData = true;
83
+ return _el$8;
84
+ })();
85
+ },
86
+ get children() {
87
+ const _el$5 = _tmpl$();
88
+ _el$5.$$click = setExpanded;
89
+ _el$5.$$clickData = false;
90
+ return _el$5;
91
+ }
92
+ }));
93
+ _el$6.$$click = () => {
94
+ setSelectedNodes([item()]);
95
+ props.onSelect?.(item());
96
+ };
97
+ insert(_el$6, () => props.titleRender(item(), {
98
+ indexes
99
+ }));
100
+ effect(_p$ => {
101
+ const _v$ = cs('ant-flex ant-items-center ant-h-28px ant-pb-4px', isDraggable(item()) && 'ant-[border:1px_solid_var(--primary-color)] ant-bg-white', draggableNode() && 'child[]:ant-pointer-events-none'),
102
+ _v$2 = cs('ant-flex-shrink-0 ant-w-24px ant-h-24px ant-flex ant-items-center ant-justify-center ant-cursor-pointer', isEmpty(props.children(item())) && 'opacity-0'),
103
+ _v$3 = cs('ant-h-full ant-leading-24px hover:ant-bg-[var(--hover-bg-color)] ant-rounded-1 ant-px-1 ant-cursor-pointer ant-relative', props.blockNode && 'w-full', selectedNodes()?.includes(item()) && '!ant-bg-[var(--active-bg-color)]', isTarget(item()) && "before:ant-content-[''] before:ant-inline-block before:ant-w-8px before:ant-h-8px before:ant-absolute before:ant-bottom-0 before:ant-left-0 before:-ant-translate-x-full before:ant-translate-y-1/2 before:ant-rounded-1/2 before:ant-[border:2px_solid_var(--primary-color)] after:ant-content-[''] after:ant-inline-block after:ant-h-2px after:ant-absolute after:ant-left-0 after:ant-right-0 after:ant-bottom--1px after:ant-bg-[var(--primary-color)]");
104
+ _v$ !== _p$._v$ && className(_el$, _p$._v$ = _v$);
105
+ _v$2 !== _p$._v$2 && className(_el$4, _p$._v$2 = _v$2);
106
+ _v$3 !== _p$._v$3 && className(_el$6, _p$._v$3 = _v$3);
107
+ return _p$;
108
+ }, {
109
+ _v$: undefined,
110
+ _v$2: undefined,
111
+ _v$3: undefined
112
+ });
113
+ return _el$;
114
+ })(), createComponent(Show, {
115
+ get when() {
116
+ return memo(() => !!expanded())() && !isEmpty(props.children(item()));
117
+ },
118
+ get children() {
119
+ return createComponent(SingleLevelTree, {
120
+ get treeData() {
121
+ return props.children(item());
122
+ },
123
+ get indent() {
124
+ return props.indent + 1;
125
+ },
126
+ parentIndexes: indexes,
127
+ get blockNode() {
128
+ return props.blockNode;
129
+ },
130
+ get defaultExpandAll() {
131
+ return props.defaultExpandAll;
132
+ },
133
+ get titleRender() {
134
+ return props.titleRender;
135
+ },
136
+ get children() {
137
+ return props.children;
138
+ },
139
+ onSelect: node => untrack(() => props.onSelect?.(node))
140
+ });
141
+ }
142
+ })];
143
+ }
144
+ });
145
+ }
146
+ function Tree(props) {
147
+ const [selectedNodes, setSelectedNodes] = createSignal(props.defaultSelectedNodes ?? []);
148
+ const [draggableNode, setDraggableNode] = createSignal(null);
149
+ const isDraggable = createSelector(draggableNode);
150
+ const [draggableIndexes, setDraggableIndexes] = createSignal(null);
151
+ const [targetNode, setTargetNode] = createSignal(null);
152
+ const isTarget = createSelector(targetNode);
153
+ const [targetIndexes, setTargetIndexes] = createSignal(null);
154
+ return createComponent(TreeContext.Provider, {
155
+ get value() {
156
+ return {
157
+ selectedNodes,
158
+ setSelectedNodes: setSelectedNodes,
159
+ draggableNode,
160
+ setDraggableNode: setDraggableNode,
161
+ draggableIndexes,
162
+ setDraggableIndexes,
163
+ isDraggable,
164
+ targetNode,
165
+ setTargetNode: setTargetNode,
166
+ targetIndexes,
167
+ setTargetIndexes,
168
+ isTarget,
169
+ draggable: props.draggable,
170
+ onDrop: props.onDrop
171
+ };
172
+ },
173
+ get children() {
174
+ return createComponent(SingleLevelTree, {
175
+ get treeData() {
176
+ return props.treeData;
177
+ },
178
+ indent: 0,
179
+ get blockNode() {
180
+ return props.blockNode;
181
+ },
182
+ get defaultExpandAll() {
183
+ return props.defaultExpandAll;
184
+ },
185
+ get titleRender() {
186
+ return props.titleRender;
187
+ },
188
+ get children() {
189
+ return props.children;
190
+ },
191
+ onSelect: node => untrack(() => props.onSelect?.(node))
192
+ });
193
+ }
194
+ });
195
+ }
196
+ delegateEvents(["click"]);
197
+
198
+ export { Tree as default };
package/es/Upload.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ export type { UploadFile } from 'antd/es/upload';
3
+ declare const Upload: import("solid-js").Component<Omit<Omit<import("antd").UploadProps<any> & {
4
+ children?: import("react").ReactNode;
5
+ } & import("react").RefAttributes<any>, "className"> & {
6
+ class?: string | undefined;
7
+ }, "children"> & {
8
+ children?: import("solid-js").JSX.Element;
9
+ }>;
10
+ export type UploadProps = Parameters<typeof Upload>[0];
11
+ export default Upload;
package/es/Upload.js ADDED
@@ -0,0 +1,6 @@
1
+ import { replaceChildren, replaceClassName, reactToSolidComponent } from './utils/component.js';
2
+ import { Upload as Upload$1 } from 'antd';
3
+
4
+ const Upload = replaceChildren(replaceClassName(reactToSolidComponent(Upload$1)));
5
+
6
+ export { Upload as default };
@@ -0,0 +1,18 @@
1
+ import { type JSXElement, type Ref } from 'solid-js';
2
+ import { set } from 'lodash-es';
3
+ export interface FormInstance<T extends {} = {}> {
4
+ validateFields: () => Promise<T>;
5
+ setFieldValue: (name: Parameters<typeof set>[1], value: any) => void;
6
+ }
7
+ export interface FormProps<T extends {} = {}> {
8
+ ref?: Ref<FormInstance<T>>;
9
+ /**
10
+ * 表单布局
11
+ * 默认: horizontal
12
+ */
13
+ layout?: 'horizontal' | 'vertical' | 'inline';
14
+ children: JSXElement;
15
+ initialValues?: T;
16
+ }
17
+ declare function Form<T extends {} = {}>(_props: FormProps<T>): import("solid-js").JSX.Element;
18
+ export default Form;
@@ -0,0 +1,70 @@
1
+ import { insert, createComponent, template } from 'solid-js/web';
2
+ import { mergeProps, onMount, createSignal, createMemo } from 'solid-js';
3
+ import { max, get, set } from 'lodash-es';
4
+ import Context from './context.js';
5
+
6
+ const _tmpl$ = /*#__PURE__*/template(`<form>`);
7
+ function Form(_props) {
8
+ const props = mergeProps({
9
+ layout: 'horizontal'
10
+ }, _props);
11
+ const rulesDict = {};
12
+ const setErrMsgDict = {};
13
+ const values = props.initialValues ? {
14
+ ...props.initialValues
15
+ } : {};
16
+ const formInstance = {
17
+ async validateFields() {
18
+ const promises = Object.entries(rulesDict).flatMap(([name, rules]) => {
19
+ return rules.map(async rule => await rule.validate(get(values, name)).catch(err => {
20
+ setErrMsgDict[name](err.message);
21
+ throw err;
22
+ }));
23
+ });
24
+ const results = await Promise.allSettled(promises);
25
+ if (results.some(result => result.status === 'rejected')) {
26
+ // eslint-disable-next-line @typescript-eslint/no-throw-literal
27
+ throw {
28
+ errorFields: results.filter(res => res.status === 'rejected'),
29
+ values
30
+ };
31
+ }
32
+ return values;
33
+ },
34
+ setFieldValue(name, value) {
35
+ set(values, name, value);
36
+ }
37
+ };
38
+ onMount(() => {
39
+ if (typeof _props.ref === 'function') {
40
+ _props.ref?.(formInstance);
41
+ }
42
+ });
43
+ // 存储 form item 的 dom 节点宽度
44
+ const [itemWidthDict, setItemWidthDict] = createSignal({});
45
+ const maxItemWidth = createMemo(() => max(Object.values(itemWidthDict())));
46
+ return (() => {
47
+ const _el$ = _tmpl$();
48
+ _el$.addEventListener("submit", e => {
49
+ e.preventDefault();
50
+ });
51
+ insert(_el$, createComponent(Context.Provider, {
52
+ get value() {
53
+ return {
54
+ formInstance,
55
+ rulesDict,
56
+ setErrMsgDict,
57
+ initialValues: props.initialValues,
58
+ setItemWidthDict,
59
+ maxItemWidth
60
+ };
61
+ },
62
+ get children() {
63
+ return props.children;
64
+ }
65
+ }));
66
+ return _el$;
67
+ })();
68
+ }
69
+
70
+ export { Form as default };
@@ -0,0 +1,19 @@
1
+ import { type JSXElement, type Component, type JSX } from 'solid-js';
2
+ import { type Schema } from 'yup';
3
+ export interface FormItemComponentProps<T = any> {
4
+ defaultValue?: T;
5
+ status?: 'error' | 'warning';
6
+ onChange?: (value: T) => void;
7
+ }
8
+ export interface FormItemProps {
9
+ class?: string;
10
+ style?: JSX.CSSProperties;
11
+ required?: boolean;
12
+ label?: JSXElement;
13
+ name?: string;
14
+ initialValue?: any;
15
+ rules?: Schema[];
16
+ component: Component<FormItemComponentProps>;
17
+ }
18
+ declare const FormItem: Component<FormItemProps>;
19
+ export default FormItem;
@@ -0,0 +1,141 @@
1
+ import { insert, createComponent, Dynamic, effect, className, style, template, spread, mergeProps } from 'solid-js/web';
2
+ import { useContext, createSignal, onMount, onCleanup, Show } from 'solid-js';
3
+ import { isNil, get } from 'lodash-es';
4
+ import { nanoid } from 'nanoid';
5
+ import cs from 'classnames';
6
+ import Context from './context.js';
7
+
8
+ const _tmpl$ = /*#__PURE__*/template(`<span class="ant-mr-4px ant-text-[var(--ant-color-error)]">*`),
9
+ _tmpl$2 = /*#__PURE__*/template(`<label>`),
10
+ _tmpl$3 = /*#__PURE__*/template(`<div class="ant-text-[var(--ant-color-error)]">`),
11
+ _tmpl$4 = /*#__PURE__*/template(`<div><div class="ant-w-full">`);
12
+ const FormItem = props => {
13
+ const {
14
+ formInstance,
15
+ rulesDict,
16
+ setErrMsgDict,
17
+ initialValues,
18
+ setItemWidthDict,
19
+ maxItemWidth
20
+ } = useContext(Context);
21
+ const [errMsg, setErrMsg] = createSignal('');
22
+ const id = nanoid();
23
+ onMount(() => {
24
+ if (isNil(props.name)) return;
25
+ if (!isNil(props.initialValue)) {
26
+ formInstance.setFieldValue(props.name, props.initialValue);
27
+ }
28
+ if (!isNil(props.rules)) {
29
+ rulesDict[props.name] = props.rules;
30
+ }
31
+ setErrMsgDict[props.name] = setErrMsg;
32
+ });
33
+ let label;
34
+ onMount(() => {
35
+ const resizeObserver = new ResizeObserver(entries => {
36
+ const [entry] = entries;
37
+ // Firefox implements `borderBoxSize` as a single content rect, rather than an array
38
+ const borderBoxSize = Array.isArray(entry.borderBoxSize) ? entry.borderBoxSize[0] : entry.borderBoxSize;
39
+ setItemWidthDict(dict => ({
40
+ ...dict,
41
+ [id]: borderBoxSize.inlineSize
42
+ }));
43
+ });
44
+ resizeObserver.observe(label);
45
+ onCleanup(() => {
46
+ setItemWidthDict(dict => {
47
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
48
+ delete dict[id];
49
+ return {
50
+ ...dict
51
+ };
52
+ });
53
+ resizeObserver.disconnect();
54
+ });
55
+ });
56
+ const getLabel = hidden => (() => {
57
+ const _el$ = _tmpl$2();
58
+ spread(_el$, mergeProps({
59
+ get ["class"]() {
60
+ return cs('ant-shrink-0 ant-h-32px ant-leading-32px not[:empty]:ant-pr-8px ant-text-right ant-[white-space:nowrap]', hidden && 'ant-absolute ant-opacity-0');
61
+ }
62
+ }, () => hidden ? {
63
+ ref: el => {
64
+ label = el;
65
+ }
66
+ } : {
67
+ style: {
68
+ width: `${maxItemWidth() ?? 0}px`
69
+ }
70
+ }), false, true);
71
+ insert(_el$, createComponent(Show, {
72
+ get when() {
73
+ return !isNil(props.required);
74
+ },
75
+ get children() {
76
+ return _tmpl$();
77
+ }
78
+ }), null);
79
+ insert(_el$, createComponent(Show, {
80
+ get when() {
81
+ return !isNil(props.label);
82
+ },
83
+ get children() {
84
+ const _el$3 = _tmpl$2();
85
+ insert(_el$3, () => props.label);
86
+ return _el$3;
87
+ }
88
+ }), null);
89
+ return _el$;
90
+ })();
91
+ return (() => {
92
+ const _el$4 = _tmpl$4(),
93
+ _el$5 = _el$4.firstChild;
94
+ insert(_el$4, () => getLabel(true), _el$5);
95
+ insert(_el$4, getLabel, _el$5);
96
+ insert(_el$5, createComponent(Dynamic, {
97
+ get component() {
98
+ return props.component;
99
+ },
100
+ get defaultValue() {
101
+ return props.initialValue ?? get(initialValues, props.name);
102
+ },
103
+ get status() {
104
+ return errMsg() ? 'error' : undefined;
105
+ },
106
+ onChange: value => {
107
+ if (!isNil(props.name)) formInstance.setFieldValue(props.name, value);
108
+ props.rules?.forEach(rule => {
109
+ rule.validate(value).then(() => {
110
+ setErrMsg('');
111
+ }).catch(err => {
112
+ setErrMsg(err.message);
113
+ });
114
+ });
115
+ }
116
+ }), null);
117
+ insert(_el$5, createComponent(Show, {
118
+ get when() {
119
+ return errMsg();
120
+ },
121
+ get children() {
122
+ const _el$6 = _tmpl$3();
123
+ insert(_el$6, errMsg);
124
+ return _el$6;
125
+ }
126
+ }), null);
127
+ effect(_p$ => {
128
+ const _v$ = cs(props.class, 'ant-flex ant-items-center ant-mb-16px'),
129
+ _v$2 = props.style;
130
+ _v$ !== _p$._v$ && className(_el$4, _p$._v$ = _v$);
131
+ _p$._v$2 = style(_el$4, _v$2, _p$._v$2);
132
+ return _p$;
133
+ }, {
134
+ _v$: undefined,
135
+ _v$2: undefined
136
+ });
137
+ return _el$4;
138
+ })();
139
+ };
140
+
141
+ export { FormItem as default };
@@ -0,0 +1,12 @@
1
+ import { type Setter, type Accessor } from 'solid-js';
2
+ import { type FormInstance } from './Form';
3
+ import { type Schema } from 'yup';
4
+ declare const Context: import("solid-js").Context<{
5
+ formInstance: FormInstance;
6
+ rulesDict: Record<string, Schema[]>;
7
+ setErrMsgDict: Record<string, Setter<string>>;
8
+ initialValues: {};
9
+ setItemWidthDict: Setter<Record<string, number>>;
10
+ maxItemWidth: Accessor<number | undefined>;
11
+ }>;
12
+ export default Context;
@@ -0,0 +1,5 @@
1
+ import { createContext } from 'solid-js';
2
+
3
+ const Context = createContext({});
4
+
5
+ export { Context as default };
@@ -0,0 +1,8 @@
1
+ import InternalForm from './Form';
2
+ import FormItem from './FormItem';
3
+ export type { FormInstance, FormProps } from './Form';
4
+ export type { FormItemProps, FormItemComponentProps } from './FormItem';
5
+ declare const Form: typeof InternalForm & {
6
+ Item: typeof FormItem;
7
+ };
8
+ export default Form;
@@ -0,0 +1,7 @@
1
+ import Form$1 from './Form.js';
2
+ import FormItem from './FormItem.js';
3
+
4
+ const Form = Form$1;
5
+ Form.Item = FormItem;
6
+
7
+ export { Form as default };
@@ -0,0 +1,16 @@
1
+ import { type Signal } from 'solid-js';
2
+ export interface Options<T> {
3
+ defaultValue?: T;
4
+ defaultValuePropName?: string;
5
+ valuePropName?: string;
6
+ trigger?: string | undefined;
7
+ }
8
+ export type Props = Record<string, any>;
9
+ export interface StandardProps<T> {
10
+ value: T;
11
+ defaultValue?: T;
12
+ onChange: (val: T) => void;
13
+ }
14
+ declare function createControllableValue<T = any>(props: StandardProps<T>): Signal<T>;
15
+ declare function createControllableValue<T = any>(props: Props, options?: Options<T>): Signal<T>;
16
+ export default createControllableValue;
@@ -0,0 +1,41 @@
1
+ import { createSignal } from 'solid-js';
2
+ import createUpdateEffect from './createUpdateEffect.js';
3
+
4
+ function createControllableValue(props, options = {}) {
5
+ const {
6
+ defaultValuePropName = 'defaultValue',
7
+ valuePropName = 'value',
8
+ trigger = 'onChange'
9
+ } = options;
10
+ const getValue = () => props[valuePropName];
11
+ // 为什么不使用 Object.hasOwn?
12
+ // solid 的 proxy 对象对于任何 key,都会返回 true
13
+ const isControlled = () => Object.keys(props).includes(valuePropName);
14
+ let defaultValue = options.defaultValue;
15
+ if (isControlled()) {
16
+ defaultValue = getValue();
17
+ } else if (Object.keys(props).includes(defaultValuePropName)) {
18
+ defaultValue = props[defaultValuePropName];
19
+ }
20
+ const [value, _setValue] = createSignal(defaultValue);
21
+ createUpdateEffect(getValue, () => {
22
+ if (!isControlled()) return;
23
+ _setValue(getValue());
24
+ });
25
+ const setValue = v => {
26
+ const newValue = typeof v === 'function' ? v(value()) : v;
27
+ if (!isControlled()) {
28
+ _setValue(newValue);
29
+ }
30
+ if (trigger) {
31
+ const onChange = props[trigger];
32
+ if (typeof onChange === 'function') {
33
+ onChange(newValue);
34
+ }
35
+ }
36
+ return newValue;
37
+ };
38
+ return [value, setValue];
39
+ }
40
+
41
+ export { createControllableValue as default };
@@ -0,0 +1,5 @@
1
+ import type { Accessor, AccessorArray, NoInfer, OnEffectFunction } from 'solid-js';
2
+ /**
3
+ * 等同于 createEffect,但是会忽略首次执行,只在依赖更新时执行。
4
+ */
5
+ export default function createUpdateEffect<S, Next extends Prev, Prev = Next>(deps: AccessorArray<S> | Accessor<S>, fn: OnEffectFunction<S, undefined | NoInfer<Prev>, Next>): void;
@@ -0,0 +1,12 @@
1
+ import { createEffect, on } from 'solid-js';
2
+
3
+ /**
4
+ * 等同于 createEffect,但是会忽略首次执行,只在依赖更新时执行。
5
+ */
6
+ function createUpdateEffect(deps, fn) {
7
+ createEffect(on(deps, fn, {
8
+ defer: true
9
+ }));
10
+ }
11
+
12
+ export { createUpdateEffect as default };
@@ -0,0 +1,2 @@
1
+ export { default as useClickAway } from './useClickAway';
2
+ export { default as useSize } from './useSize';
@@ -0,0 +1,2 @@
1
+ export { default as useClickAway } from './useClickAway.js';
2
+ export { default as useSize } from './useSize.js';
@@ -0,0 +1,2 @@
1
+ import { type Accessor } from 'solid-js';
2
+ export default function useClickAway<T extends Event = Event>(onClickAway: (event: T) => void, target?: Accessor<Element | Element[]>): void;
@@ -0,0 +1,17 @@
1
+ import { onCleanup } from 'solid-js';
2
+ import { toArray } from '../utils/array.js';
3
+
4
+ function useClickAway(onClickAway, target) {
5
+ const onClick = event => {
6
+ const targets = target ? toArray(target()) : [];
7
+ if (targets.every(item => !item.contains(event.target))) {
8
+ onClickAway(event);
9
+ }
10
+ };
11
+ document.body.addEventListener('click', onClick);
12
+ onCleanup(() => {
13
+ document.body.removeEventListener('click', onClick);
14
+ });
15
+ }
16
+
17
+ export { useClickAway as default };
@@ -0,0 +1,5 @@
1
+ import { Accessor } from 'solid-js';
2
+ export default function useSize(target: Element | Accessor<Element>): Accessor<{
3
+ width: number;
4
+ height: number;
5
+ } | undefined>;
@@ -0,0 +1,22 @@
1
+ import { createSignal, onMount, onCleanup } from 'solid-js';
2
+
3
+ function getTarget(target) {
4
+ return target instanceof Element ? target : target();
5
+ }
6
+ function useSize(target) {
7
+ const [size, setSize] = createSignal();
8
+ onMount(() => {
9
+ const _target = getTarget(target);
10
+ const ro = new ResizeObserver(() => {
11
+ setSize({
12
+ width: _target.clientWidth,
13
+ height: _target.clientHeight
14
+ });
15
+ });
16
+ ro.observe(_target);
17
+ onCleanup(() => ro.disconnect());
18
+ });
19
+ return size;
20
+ }
21
+
22
+ export { useSize as default };