antd-solid 0.0.12 → 0.0.14

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 (343) hide show
  1. package/css/index.css +10 -77
  2. package/dist/index.esm.js +7819 -2492
  3. package/dist/index.umd.js +1 -1
  4. package/es/Alert/index.d.ts +10 -0
  5. package/es/Alert/index.js +26 -0
  6. package/es/Button/index.d.ts +16 -4
  7. package/es/Button/index.js +107 -59
  8. package/es/Button/index.scss.js +1 -1
  9. package/es/Checkbox/Group.d.ts +19 -0
  10. package/es/Checkbox/Group.js +49 -0
  11. package/es/Checkbox/index.d.ts +15 -0
  12. package/es/Checkbox/index.js +60 -0
  13. package/es/CodeInput/index.d.ts +18 -0
  14. package/es/CodeInput/index.js +72 -0
  15. package/es/Collapse/Item.d.ts +46 -0
  16. package/es/Collapse/Item.js +130 -0
  17. package/es/Collapse/context.d.ts +5 -0
  18. package/es/Collapse/context.js +8 -0
  19. package/es/Collapse/index.d.ts +25 -10
  20. package/es/Collapse/index.js +95 -74
  21. package/es/Collapse/utils.d.ts +8 -0
  22. package/es/Collapse/utils.js +35 -0
  23. package/es/ColorPicker/ColorPickerInput.d.ts +3 -0
  24. package/es/ColorPicker/ColorPickerInput.js +250 -0
  25. package/es/ColorPicker/ColorPickerSelect.d.ts +3 -0
  26. package/es/ColorPicker/ColorPickerSelect.js +71 -0
  27. package/es/ColorPicker/ColorPickerSlider.d.ts +3 -0
  28. package/es/ColorPicker/ColorPickerSlider.js +115 -0
  29. package/es/ColorPicker/color.d.ts +24 -0
  30. package/es/ColorPicker/color.js +63 -0
  31. package/es/ColorPicker/context.d.ts +9 -0
  32. package/es/ColorPicker/context.js +5 -0
  33. package/es/ColorPicker/index.d.ts +31 -0
  34. package/es/ColorPicker/index.js +139 -0
  35. package/es/Command/context.d.ts +9 -0
  36. package/es/Command/context.js +11 -0
  37. package/es/Command/createCommand.d.ts +17 -0
  38. package/es/Command/createCommand.js +112 -0
  39. package/es/Command/index.d.ts +7 -0
  40. package/es/Command/index.js +9 -0
  41. package/es/Command/useCommandProps.d.ts +13 -0
  42. package/es/Command/useCommandProps.js +28 -0
  43. package/es/Compact/CompactContextIsolator.d.ts +3 -0
  44. package/es/Compact/CompactContextIsolator.js +15 -0
  45. package/es/Compact/context.d.ts +4 -0
  46. package/es/Compact/context.js +7 -0
  47. package/es/Compact/index.d.ts +11 -9
  48. package/es/Compact/index.js +28 -13
  49. package/es/Compact/index.scss.js +6 -0
  50. package/es/ConfigProvider/context.d.ts +11 -0
  51. package/es/ConfigProvider/context.js +15 -0
  52. package/es/ConfigProvider/dark/colorAlgorithm.d.ts +2 -0
  53. package/es/ConfigProvider/dark/colorAlgorithm.js +9 -0
  54. package/es/ConfigProvider/dark/colors.d.ts +3 -0
  55. package/es/ConfigProvider/dark/colors.js +47 -0
  56. package/es/ConfigProvider/dark/index.d.ts +2 -0
  57. package/es/ConfigProvider/dark/index.js +11 -0
  58. package/es/ConfigProvider/index.d.ts +32 -0
  59. package/es/ConfigProvider/index.js +44 -0
  60. package/es/ConfigProvider/light/colorAlgorithm.d.ts +2 -0
  61. package/es/ConfigProvider/light/colorAlgorithm.js +9 -0
  62. package/es/ConfigProvider/light/colors.d.ts +3 -0
  63. package/es/ConfigProvider/light/colors.js +45 -0
  64. package/es/ConfigProvider/light/index.d.ts +2 -0
  65. package/es/ConfigProvider/light/index.js +11 -0
  66. package/es/ConfigProvider/seed.d.ts +3 -0
  67. package/es/ConfigProvider/seed.js +22 -0
  68. package/es/ConfigProvider/types/index.d.ts +594 -0
  69. package/es/ConfigProvider/types/index.js +1 -0
  70. package/es/ConfigProvider/utils/genColorMapToken.d.ts +7 -0
  71. package/es/ConfigProvider/utils/genColorMapToken.js +85 -0
  72. package/es/ConfigProvider/utils/getAlphaColor.d.ts +2 -0
  73. package/es/ConfigProvider/utils/getAlphaColor.js +44 -0
  74. package/es/ConfigProvider/utils/index.d.ts +3 -0
  75. package/es/ConfigProvider/utils/index.js +181 -0
  76. package/es/ContextMenu/index.d.ts +8 -0
  77. package/es/ContextMenu/index.js +99 -0
  78. package/es/Cursor/index.d.ts +6 -0
  79. package/es/Cursor/index.js +71 -0
  80. package/es/DelayShow/index.d.ts +16 -0
  81. package/es/DelayShow/index.js +27 -0
  82. package/es/Divider/index.d.ts +17 -0
  83. package/es/Divider/index.js +71 -0
  84. package/es/Drawer/index.d.ts +20 -16
  85. package/es/Drawer/index.js +162 -111
  86. package/es/Drawer/index.scss.js +1 -1
  87. package/es/Dropdown/index.d.ts +16 -0
  88. package/es/Dropdown/index.js +47 -0
  89. package/es/Element/index.d.ts +10 -0
  90. package/es/Element/index.js +42 -0
  91. package/es/Empty/PRESENTED_IMAGE_SIMPLE.d.ts +2 -1
  92. package/es/Empty/PRESENTED_IMAGE_SIMPLE.js +25 -9
  93. package/es/Empty/assets/EmptySvg.js +1 -1
  94. package/es/Empty/assets/SimpleEmptySvg.js +1 -1
  95. package/es/Empty/index.d.ts +4 -2
  96. package/es/Empty/index.js +23 -13
  97. package/es/Form/Form.d.ts +8 -5
  98. package/es/Form/Form.js +50 -34
  99. package/es/Form/FormItem.d.ts +10 -5
  100. package/es/Form/FormItem.js +121 -104
  101. package/es/Form/context.d.ts +9 -9
  102. package/es/Form/context.js +4 -2
  103. package/es/Fragment/index.d.ts +4 -0
  104. package/es/Fragment/index.js +7 -0
  105. package/es/Image/index.d.ts +10 -0
  106. package/es/Image/index.js +37 -0
  107. package/es/Input/TextArea.d.ts +23 -0
  108. package/es/Input/TextArea.js +84 -0
  109. package/es/Input/index.d.ts +44 -0
  110. package/es/Input/index.js +213 -0
  111. package/es/Input/index.scss.js +6 -0
  112. package/es/InputNumber/index.d.ts +30 -0
  113. package/es/InputNumber/index.js +122 -0
  114. package/es/{InputNumber.test.js → InputNumber/index.test.js} +2 -1
  115. package/es/Menu/InternalMenu.d.ts +22 -0
  116. package/es/Menu/InternalMenu.js +196 -0
  117. package/es/Menu/index.d.ts +75 -0
  118. package/es/Menu/index.js +64 -0
  119. package/es/Message/Message.d.ts +9 -0
  120. package/es/Message/Message.js +34 -0
  121. package/es/Message/index.d.ts +12 -0
  122. package/es/Message/index.js +80 -0
  123. package/es/Message/index.scss.js +6 -0
  124. package/es/Message/useMessage.d.ts +6 -0
  125. package/es/Message/useMessage.js +54 -0
  126. package/es/Modal/index.d.ts +73 -0
  127. package/es/Modal/index.js +237 -0
  128. package/es/Modal/index.scss.js +6 -0
  129. package/es/Modal/useModal.d.ts +5 -0
  130. package/es/Modal/useModal.js +51 -0
  131. package/es/Modal/warning.d.ts +5 -0
  132. package/es/Modal/warning.js +43 -0
  133. package/es/{Popconfirm.d.ts → Popconfirm/index.d.ts} +2 -2
  134. package/es/Popconfirm/index.js +62 -0
  135. package/es/{Popover.d.ts → Popover/index.d.ts} +2 -2
  136. package/es/{Popover.js → Popover/index.js} +7 -12
  137. package/es/Progress/Circle.d.ts +16 -0
  138. package/es/Progress/Circle.js +122 -0
  139. package/es/Progress/index.d.ts +5 -2
  140. package/es/Progress/index.js +70 -65
  141. package/es/Radio/Button.d.ts +7 -0
  142. package/es/Radio/Button.js +72 -0
  143. package/es/Radio/Group.d.ts +18 -0
  144. package/es/Radio/Group.js +57 -0
  145. package/es/Radio/index.d.ts +14 -0
  146. package/es/Radio/index.js +68 -0
  147. package/es/RangeInput/index.d.ts +23 -0
  148. package/es/RangeInput/index.js +208 -0
  149. package/es/Result/index.js +49 -0
  150. package/es/Segmented/index.d.ts +10 -7
  151. package/es/Segmented/index.js +54 -53
  152. package/es/Select/index.d.ts +17 -0
  153. package/es/Select/index.js +75 -0
  154. package/es/SelectInput/index.d.ts +39 -0
  155. package/es/SelectInput/index.js +245 -0
  156. package/es/Slider/index.d.ts +47 -0
  157. package/es/Slider/index.js +177 -0
  158. package/es/Space/index.d.ts +13 -0
  159. package/es/Space/index.js +16 -0
  160. package/es/Spin/index.d.ts +19 -0
  161. package/es/Spin/index.js +82 -0
  162. package/es/{Switch.d.ts → Switch/index.d.ts} +9 -0
  163. package/es/Switch/index.js +41 -0
  164. package/es/{Table.d.ts → Table/index.d.ts} +6 -2
  165. package/es/Table/index.js +71 -0
  166. package/es/Tabs/index.d.ts +49 -0
  167. package/es/Tabs/index.js +256 -0
  168. package/es/Timeline/index.js +31 -0
  169. package/es/Tooltip/context.d.ts +5 -0
  170. package/es/Tooltip/context.js +5 -0
  171. package/es/Tooltip/index.d.ts +64 -0
  172. package/es/Tooltip/index.js +499 -0
  173. package/es/Transformer/index.d.ts +88 -0
  174. package/es/Transformer/index.js +882 -0
  175. package/es/Tree/SingleLevelTree.d.ts +28 -0
  176. package/es/Tree/SingleLevelTree.js +299 -0
  177. package/es/Tree/index.d.ts +83 -0
  178. package/es/Tree/index.js +197 -0
  179. package/es/TreeFor/index.d.ts +31 -0
  180. package/es/TreeFor/index.js +80 -0
  181. package/es/TreeSelect/index.d.ts +26 -0
  182. package/es/TreeSelect/index.js +98 -0
  183. package/es/{Upload.d.ts → Upload/index.d.ts} +8 -1
  184. package/es/Upload/index.js +112 -0
  185. package/es/assets/svg/ColorPickUp.d.ts +4 -0
  186. package/es/assets/svg/ColorPickUp.js +25 -0
  187. package/es/assets/svg/Crosshair.d.ts +7 -0
  188. package/es/assets/svg/Crosshair.js +51 -0
  189. package/es/assets/svg/Resize.d.ts +4 -0
  190. package/es/assets/svg/Resize.js +25 -0
  191. package/es/assets/svg/Rotate.d.ts +4 -0
  192. package/es/assets/svg/Rotate.js +20 -0
  193. package/es/assets/svg/RotateArrow.d.ts +4 -0
  194. package/es/assets/svg/RotateArrow.js +21 -0
  195. package/es/assets/svg/common.d.ts +2 -0
  196. package/es/assets/svg/common.js +9 -0
  197. package/es/hooks/createControllableValue.d.ts +1 -1
  198. package/es/hooks/createControllableValue.js +16 -17
  199. package/es/hooks/createTransition.d.ts +6 -2
  200. package/es/hooks/createTransition.js +12 -8
  201. package/es/hooks/useClickAway.d.ts +1 -1
  202. package/es/hooks/useClickAway.js +4 -3
  203. package/es/hooks/useComponentSize.d.ts +3 -0
  204. package/es/hooks/useComponentSize.js +12 -0
  205. package/es/hooks/useCounter.d.ts +12 -0
  206. package/es/hooks/useCounter.js +30 -0
  207. package/es/hooks/useFocus.d.ts +2 -0
  208. package/es/hooks/useFocus.js +24 -0
  209. package/es/hooks/useHover.d.ts +2 -0
  210. package/es/hooks/useHover.js +33 -0
  211. package/es/hooks/useLocale.d.ts +1 -0
  212. package/es/hooks/useLocale.js +11 -0
  213. package/es/hooks/useMouse.d.ts +1 -0
  214. package/es/hooks/useMouse.js +18 -0
  215. package/es/hooks/useScroll.d.ts +2 -0
  216. package/es/hooks/useScroll.js +29 -0
  217. package/es/hooks/useSize.d.ts +8 -2
  218. package/es/hooks/useSize.js +25 -13
  219. package/es/hooks/useVirtualList.d.ts +14 -0
  220. package/es/hooks/useVirtualList.js +45 -0
  221. package/es/index.d.ts +59 -8
  222. package/es/index.js +51 -21
  223. package/es/locale/en_US.d.ts +3 -0
  224. package/es/locale/en_US.js +9 -0
  225. package/es/locale/index.d.ts +5 -0
  226. package/es/locale/index.js +1 -0
  227. package/es/locale/zh_CN.d.ts +3 -0
  228. package/es/locale/zh_CN.js +9 -0
  229. package/es/types/index.d.ts +11 -2
  230. package/es/utils/animation.d.ts +6 -0
  231. package/es/utils/animation.js +20 -0
  232. package/es/utils/array.d.ts +2 -1
  233. package/es/utils/array.js +5 -1
  234. package/es/utils/domPoint.d.ts +7 -0
  235. package/es/utils/domPoint.js +11 -0
  236. package/es/utils/math.d.ts +17 -0
  237. package/es/utils/math.js +25 -0
  238. package/es/utils/number.d.ts +1 -0
  239. package/es/utils/number.js +14 -0
  240. package/es/utils/setupGlobalDrag.d.ts +10 -0
  241. package/es/utils/setupGlobalDrag.js +38 -0
  242. package/es/utils/solid.d.ts +2 -2
  243. package/es/utils/solid.js +7 -8
  244. package/package.json +22 -21
  245. package/es/ColorPicker.d.ts +0 -8
  246. package/es/ColorPicker.js +0 -6
  247. package/es/DatePicker.d.ts +0 -19
  248. package/es/DatePicker.js +0 -9
  249. package/es/Image.d.ts +0 -9
  250. package/es/Image.js +0 -22
  251. package/es/Input.d.ts +0 -29
  252. package/es/Input.js +0 -144
  253. package/es/InputNumber.d.ts +0 -11
  254. package/es/InputNumber.js +0 -92
  255. package/es/Modal.d.ts +0 -47
  256. package/es/Modal.js +0 -210
  257. package/es/Popconfirm.js +0 -64
  258. package/es/Radio.d.ts +0 -27
  259. package/es/Radio.js +0 -93
  260. package/es/Result.js +0 -29
  261. package/es/Select.d.ts +0 -16
  262. package/es/Select.js +0 -113
  263. package/es/Skeleton.d.ts +0 -9
  264. package/es/Skeleton.js +0 -9
  265. package/es/Spin.d.ts +0 -10
  266. package/es/Spin.js +0 -28
  267. package/es/Switch.js +0 -30
  268. package/es/Table.js +0 -57
  269. package/es/Tabs.d.ts +0 -17
  270. package/es/Tabs.js +0 -117
  271. package/es/Timeline.js +0 -30
  272. package/es/Tooltip.d.ts +0 -34
  273. package/es/Tooltip.js +0 -302
  274. package/es/Tree.d.ts +0 -28
  275. package/es/Tree.js +0 -198
  276. package/es/Upload.js +0 -96
  277. package/es/hooks/createUpdateEffect.d.ts +0 -5
  278. package/es/hooks/createUpdateEffect.js +0 -12
  279. package/es/utils/EventEmitter.d.ts +0 -7
  280. package/es/utils/EventEmitter.js +0 -13
  281. package/es/utils/ReactToSolid.d.ts +0 -8
  282. package/es/utils/ReactToSolid.js +0 -30
  283. package/es/utils/SolidToReact.d.ts +0 -8
  284. package/es/utils/SolidToReact.js +0 -23
  285. package/es/utils/component.d.ts +0 -31
  286. package/es/utils/component.js +0 -68
  287. package/es/utils/zh_CN.d.ts +0 -2
  288. package/es/utils/zh_CN.js +0 -236
  289. package/src/Button/index.scss +0 -9
  290. package/src/Button/index.tsx +0 -137
  291. package/src/Collapse/index.tsx +0 -86
  292. package/src/ColorPicker.tsx +0 -11
  293. package/src/Compact/index.tsx +0 -20
  294. package/src/DatePicker.tsx +0 -30
  295. package/src/Drawer/index.scss +0 -53
  296. package/src/Drawer/index.tsx +0 -211
  297. package/src/Empty/PRESENTED_IMAGE_SIMPLE.tsx +0 -15
  298. package/src/Empty/assets/EmptySvg.tsx +0 -43
  299. package/src/Empty/assets/SimpleEmptySvg.tsx +0 -16
  300. package/src/Empty/index.tsx +0 -25
  301. package/src/Form/Form.tsx +0 -94
  302. package/src/Form/FormItem.tsx +0 -141
  303. package/src/Form/context.ts +0 -16
  304. package/src/Form/index.ts +0 -13
  305. package/src/Image.tsx +0 -29
  306. package/src/Input.tsx +0 -202
  307. package/src/InputNumber.test.tsx +0 -46
  308. package/src/InputNumber.tsx +0 -139
  309. package/src/Modal.tsx +0 -221
  310. package/src/Popconfirm.tsx +0 -75
  311. package/src/Popover.tsx +0 -30
  312. package/src/Progress/index.tsx +0 -81
  313. package/src/Radio.tsx +0 -142
  314. package/src/Result.tsx +0 -38
  315. package/src/Segmented/index.tsx +0 -95
  316. package/src/Select.tsx +0 -138
  317. package/src/Skeleton.tsx +0 -14
  318. package/src/Spin.tsx +0 -34
  319. package/src/Switch.tsx +0 -34
  320. package/src/Table.tsx +0 -53
  321. package/src/Tabs.tsx +0 -131
  322. package/src/Timeline.tsx +0 -33
  323. package/src/Tooltip.tsx +0 -340
  324. package/src/Tree.tsx +0 -247
  325. package/src/Upload.tsx +0 -143
  326. package/src/hooks/createControllableValue.ts +0 -68
  327. package/src/hooks/createTransition.ts +0 -52
  328. package/src/hooks/createUpdateEffect.ts +0 -16
  329. package/src/hooks/index.ts +0 -2
  330. package/src/hooks/useClickAway.ts +0 -18
  331. package/src/hooks/useSize.ts +0 -26
  332. package/src/index.ts +0 -47
  333. package/src/types/index.ts +0 -5
  334. package/src/utils/EventEmitter.ts +0 -15
  335. package/src/utils/ReactToSolid.tsx +0 -38
  336. package/src/utils/SolidToReact.tsx +0 -27
  337. package/src/utils/array.ts +0 -21
  338. package/src/utils/component.tsx +0 -85
  339. package/src/utils/solid.ts +0 -61
  340. package/src/utils/zh_CN.ts +0 -236
  341. /package/es/{InputNumber.test.d.ts → InputNumber/index.test.d.ts} +0 -0
  342. /package/es/{Result.d.ts → Result/index.d.ts} +0 -0
  343. /package/es/{Timeline.d.ts → Timeline/index.d.ts} +0 -0
@@ -0,0 +1,245 @@
1
+ import { delegateEvents, createComponent, use, insert, effect, style, Dynamic, setAttribute, className, template } from 'solid-js/web';
2
+ import { useContext, mergeProps, createMemo, createSignal, Show, For } from 'solid-js';
3
+ import cs from 'classnames';
4
+ import { compact, pick, isUndefined } from 'lodash-es';
5
+ import Tooltip from '../Tooltip/index.js';
6
+ import createControllableValue from '../hooks/createControllableValue.js';
7
+ import useClickAway from '../hooks/useClickAway.js';
8
+ import Element from '../Element/index.js';
9
+ import useComponentSize from '../hooks/useComponentSize.js';
10
+ import CompactContext from '../Compact/context.js';
11
+
12
+ var _tmpl$ = /*#__PURE__*/template(`<div class=w-full>`),
13
+ _tmpl$2 = /*#__PURE__*/template(`<span class="right-[--ant-select-input-padding-right] i-ant-design:close-circle-filled cursor-pointer text-[var(--ant-color-text-quaternary)] hover:text-[var(--ant-color-text-tertiary)] active:text-[var(--ant-color-text)]">`),
14
+ _tmpl$3 = /*#__PURE__*/template(`<div tabindex=0><div>`),
15
+ _tmpl$4 = /*#__PURE__*/template(`<div class="w-[--ant-select-popup-match-width] max-h-400px overflow-auto [font-size:var(--ant-select-popup-font-size)]">`),
16
+ _tmpl$5 = /*#__PURE__*/template(`<span class="inline-block w-0"> `),
17
+ _tmpl$6 = /*#__PURE__*/template(`<span class="block w-full h-[calc(var(--ant-select-input-height)-2px)] leading-[calc(var(--ant-select-input-height)-2px)] text-[var(--ant-color-text-placeholder)]">`),
18
+ _tmpl$7 = /*#__PURE__*/template(`<div class="w-full h-[calc(var(--ant-select-input-height)-2px)] leading-[calc(var(--ant-select-input-height)-2px)] ellipsis">`),
19
+ _tmpl$8 = /*#__PURE__*/template(`<span class="inline-block my-2px mr-4px bg-[var(--ant-select-multiple-item-bg)] leading-[var(--ant-select-multiple-item-height)] h-[var(--ant-select-multiple-item-height)] pl-8px pr-4px rounded-[var(--ant-border-radius-sm)]"><span class="i-ant-design:close-outlined text-[var(--ant-color-icon)] hover:text-[var(--ant-color-icon-hover)] text-12px cursor-pointer">`),
20
+ _tmpl$9 = /*#__PURE__*/template(`<span class="i-ant-design:down-outlined text-[var(--ant-color-text-quaternary)] text-12px">`);
21
+ function SelectInput(_props) {
22
+ let select;
23
+ let tooltipContent;
24
+ const {
25
+ compact: isCompact
26
+ } = useContext(CompactContext);
27
+ const props = mergeProps({
28
+ variant: 'outlined',
29
+ placement: 'bottomLeft'
30
+ }, _props);
31
+ const size = useComponentSize(() => props.size);
32
+ const [value, setValue] = createControllableValue(props, {
33
+ defaultValue: []
34
+ });
35
+ const valueArr = createMemo(() => value() ?? []);
36
+ const [open, setOpen] = createControllableValue(_props, {
37
+ defaultValue: false,
38
+ defaultValuePropName: 'defaultOpen',
39
+ valuePropName: 'open',
40
+ trigger: 'onOpenChange'
41
+ });
42
+ useClickAway(() => setOpen(false), () => compact([select, tooltipContent]));
43
+ const [popupMatchWidth, setPopupMatchWidth] = createSignal(0);
44
+ const [hover, setHover] = createSignal(false);
45
+ const showClearBtn = createMemo(() => props.allowClear && hover() && valueArr().length > 0);
46
+ const optionLabelRender = v => props.labelRender ? props.labelRender(v) : String(v);
47
+ const style$1 = createMemo(() => ({
48
+ '--ant-select-input-font-size': {
49
+ small: 'var(--ant-font-size)',
50
+ middle: 'var(--ant-font-size)',
51
+ large: 'var(--ant-font-size-lg)'
52
+ }[size()],
53
+ '--ant-select-input-padding-right': {
54
+ small: '7px',
55
+ middle: '11px',
56
+ large: '11px'
57
+ }[size()],
58
+ '--ant-select-input-padding-left': valueArr().length && props.multiple ? '4px' : 'var(--ant-select-input-padding-right)',
59
+ '--ant-select-input-padding': '0 var(--ant-select-input-padding-right) 0 var(--ant-select-input-padding-left)',
60
+ '--ant-select-input-addon-after-padding': '0 0 0 var(--ant-padding-xs)',
61
+ '--ant-select-popup-match-width': `${popupMatchWidth()}px`,
62
+ '--ant-select-popup-font-size': {
63
+ small: 'var(--ant-font-size)',
64
+ middle: 'var(--ant-font-size)',
65
+ large: 'var(--ant-font-size-lg)'
66
+ }[size()],
67
+ ...props.style
68
+ }));
69
+ return createComponent(Element, {
70
+ ref(r$) {
71
+ var _ref$ = select;
72
+ typeof _ref$ === "function" ? _ref$(r$) : select = r$;
73
+ },
74
+ get ["class"]() {
75
+ return cs('!p[.ant-input-addon]:my--1px !p[.ant-input-addon]:mx--12px', 'rounded-6px cursor-pointer inline-block text-[var(--ant-color-text)] leading-[var(--ant-line-height)]', isCompact && 'ant-compact-item', props.class, props.disabled && 'cursor-not-allowed');
76
+ },
77
+ get style() {
78
+ return style$1();
79
+ },
80
+ get children() {
81
+ return createComponent(Tooltip, {
82
+ plain: true,
83
+ get open() {
84
+ return open();
85
+ },
86
+ onOpenChange: setOpen,
87
+ trigger: false,
88
+ get placement() {
89
+ return props.placement;
90
+ },
91
+ arrow: false,
92
+ contentStyle: {
93
+ padding: 0
94
+ },
95
+ content: () => (() => {
96
+ var _el$5 = _tmpl$4();
97
+ var _ref$2 = tooltipContent;
98
+ typeof _ref$2 === "function" ? use(_ref$2, _el$5) : tooltipContent = _el$5;
99
+ insert(_el$5, () => props.content(() => setOpen(false)));
100
+ effect(_$p => style(_el$5, {
101
+ ...pick(style$1(), ['--ant-select-popup-font-size', '--ant-select-popup-match-width'])
102
+ }, _$p));
103
+ return _el$5;
104
+ })(),
105
+ get getPopupContainer() {
106
+ return props.getPopupContainer;
107
+ },
108
+ get children() {
109
+ var _el$ = _tmpl$3(),
110
+ _el$3 = _el$.firstChild;
111
+ _el$.addEventListener("mouseleave", () => setHover(false));
112
+ _el$.addEventListener("mouseenter", () => setHover(true));
113
+ _el$.$$click = e => {
114
+ setOpen(v => !v);
115
+ setPopupMatchWidth(e.currentTarget.offsetWidth);
116
+ e.currentTarget.focus();
117
+ };
118
+ insert(_el$, createComponent(Show, {
119
+ get when() {
120
+ return valueArr().length;
121
+ },
122
+ get fallback() {
123
+ return (() => {
124
+ var _el$6 = _tmpl$6();
125
+ insert(_el$6, () => props.placeholder, null);
126
+ insert(_el$6, createComponent(Show, {
127
+ get when() {
128
+ return !props.placeholder;
129
+ },
130
+ get children() {
131
+ return _tmpl$5();
132
+ }
133
+ }), null);
134
+ return _el$6;
135
+ })();
136
+ },
137
+ get children() {
138
+ return createComponent(Show, {
139
+ get when() {
140
+ return props.multiple;
141
+ },
142
+ get fallback() {
143
+ return createComponent(Dynamic, {
144
+ component: () => {
145
+ const optionLabel = createMemo(() => optionLabelRender(valueArr()[0]));
146
+ return (() => {
147
+ var _el$8 = _tmpl$7();
148
+ insert(_el$8, optionLabel);
149
+ effect(() => setAttribute(_el$8, "title", typeof optionLabel() === 'string' ? optionLabel() : undefined));
150
+ return _el$8;
151
+ })();
152
+ }
153
+ });
154
+ },
155
+ get children() {
156
+ var _el$2 = _tmpl$();
157
+ insert(_el$2, createComponent(For, {
158
+ get each() {
159
+ return valueArr();
160
+ },
161
+ children: item => {
162
+ const optionLabel = createMemo(() => optionLabelRender(valueArr()[0]));
163
+ return (() => {
164
+ var _el$9 = _tmpl$8(),
165
+ _el$10 = _el$9.firstChild;
166
+ insert(_el$9, optionLabel, _el$10);
167
+ _el$10.$$click = () => setValue(valueArr().filter(v => v !== item));
168
+ effect(() => setAttribute(_el$9, "title", typeof optionLabel() === 'string' ? optionLabel() : undefined));
169
+ return _el$9;
170
+ })();
171
+ }
172
+ }));
173
+ return _el$2;
174
+ }
175
+ });
176
+ }
177
+ }), _el$3);
178
+ insert(_el$3, createComponent(Show, {
179
+ get when() {
180
+ return showClearBtn();
181
+ },
182
+ get fallback() {
183
+ return createComponent(Show, {
184
+ get when() {
185
+ return isUndefined(props.suffixIcon);
186
+ },
187
+ get fallback() {
188
+ return props.suffixIcon;
189
+ },
190
+ get children() {
191
+ return _tmpl$9();
192
+ }
193
+ });
194
+ },
195
+ get children() {
196
+ var _el$4 = _tmpl$2();
197
+ _el$4.$$click = e => {
198
+ e.stopPropagation();
199
+ setValue([]);
200
+ setOpen(false);
201
+ };
202
+ return _el$4;
203
+ }
204
+ }));
205
+ effect(_p$ => {
206
+ var _v$ = cs('p[.ant-input-addon]:border-transparent p[.ant-input-addon]:bg-transparent p[.ant-input-addon]:focus-within:border-transparent p[.ant-input-addon]:hover:border-transparent p[.ant-input-addon]:focus-within:[box-shadow:none]', 'relative h-[--ant-select-input-height] rounded-inherit py-1px flex items-center [font-size:var(--ant-select-input-font-size)] p-[--ant-select-input-padding]', props.disabled && '[pointer-events:none] bg-[var(--ant-color-bg-container-disabled)] color-[var(--ant-color-text-disabled)]', props.variant === 'outlined' && {
207
+ default: cs('border-1px border-solid border-[--ant-color-border] bg-[--ant-color-bg-container]', !props.disabled && 'hover:border-[var(--ant-color-primary)] focus-within:border-[var(--ant-color-primary)] focus-within:[box-shadow:0_0_0_2px_var(--ant-control-outline)]'),
208
+ error: cs('border-1px border-solid border-[--ant-color-error] bg-[--ant-color-bg-container]', !props.disabled && 'hover:border-[var(--ant-color-error-border-hover)] focus-within:[box-shadow:0_0_0_2px_rgba(255,38,5,.06)]'),
209
+ warning: cs('border-1px border-solid border-[--ant-color-warning] bg-[--ant-color-bg-container]', !props.disabled && 'hover:border-[var(--ant-color-warning-border-hover)] focus-within:[box-shadow:0_0_0_2px_rgba(255,215,5,.1)]')
210
+ }[props.status ?? 'default'], props.variant === 'filled' && {
211
+ default: cs('bg-[--ant-color-fill-tertiary]', !props.disabled && 'hover:bg-[--ant-color-fill-secondary]'),
212
+ error: cs('bg-[--ant-color-error-bg]', !props.disabled && 'hover:bg-[--ant-color-error-bg-hover]'),
213
+ warning: cs('bg-[--ant-color-warning-bg]', !props.disabled && 'hover:bg-[--ant-color-warning-bg-hover]')
214
+ }[props.status ?? 'default']),
215
+ _v$2 = {
216
+ small: '24px',
217
+ middle: '32px',
218
+ large: '40px'
219
+ }[size()],
220
+ _v$3 = {
221
+ small: '16px',
222
+ middle: '24px',
223
+ large: '32px'
224
+ }[size()],
225
+ _v$4 = cs('shrink-0 flex justify-end items-center p-[--ant-select-input-addon-after-padding] empty:hidden');
226
+ _v$ !== _p$.e && className(_el$, _p$.e = _v$);
227
+ _v$2 !== _p$.t && ((_p$.t = _v$2) != null ? _el$.style.setProperty("--ant-select-input-height", _v$2) : _el$.style.removeProperty("--ant-select-input-height"));
228
+ _v$3 !== _p$.a && ((_p$.a = _v$3) != null ? _el$.style.setProperty("--ant-select-multiple-item-height", _v$3) : _el$.style.removeProperty("--ant-select-multiple-item-height"));
229
+ _v$4 !== _p$.o && className(_el$3, _p$.o = _v$4);
230
+ return _p$;
231
+ }, {
232
+ e: undefined,
233
+ t: undefined,
234
+ a: undefined,
235
+ o: undefined
236
+ });
237
+ return _el$;
238
+ }
239
+ });
240
+ }
241
+ });
242
+ }
243
+ delegateEvents(["click"]);
244
+
245
+ export { SelectInput as default };
@@ -0,0 +1,47 @@
1
+ import { type Component, type JSX, type JSXElement } from 'solid-js';
2
+ import { type StringOrJSXElement, type StyleProps } from '../types';
3
+ export interface SliderProps extends StyleProps {
4
+ defaultValue?: number | null;
5
+ value?: number | null;
6
+ /**
7
+ * 当 Slider 的值发生改变时,会触发 onChange 事件,并把改变后的值作为参数传入
8
+ */
9
+ onChange?: (value: number) => void;
10
+ /**
11
+ * 与 mouseup 和 keyup 触发时机一致,把当前值作为参数传入
12
+ */
13
+ onChangeComplete?: (value: number) => void;
14
+ disabled?: boolean;
15
+ /**
16
+ * 最大值
17
+ * 默认 100
18
+ */
19
+ max?: number;
20
+ /**
21
+ * 最大值
22
+ * 默认 0
23
+ */
24
+ min?: number;
25
+ /**
26
+ * 步长
27
+ * 默认 1
28
+ */
29
+ step?: number;
30
+ /**
31
+ * 是否展示 tooltip
32
+ * 默认 true
33
+ */
34
+ tooltip?: boolean | {
35
+ formatter?: (value: number) => JSXElement;
36
+ };
37
+ /**
38
+ * 抓取点元素
39
+ */
40
+ handle?: StringOrJSXElement;
41
+ /**
42
+ * 轨道背景色元素的 style
43
+ */
44
+ railBgStyle?: JSX.CSSProperties;
45
+ }
46
+ declare const Slider: Component<SliderProps>;
47
+ export default Slider;
@@ -0,0 +1,177 @@
1
+ import { delegateEvents, createComponent, insert, memo, use, effect, className, setAttribute, style, template } from 'solid-js/web';
2
+ import { mergeProps, createMemo, createSignal, children, createEffect, onCleanup, Show } from 'solid-js';
3
+ import cs from 'classnames';
4
+ import { clamp, isNil } from 'lodash-es';
5
+ import NP from 'number-precision';
6
+ import createControllableValue from '../hooks/createControllableValue.js';
7
+ import Tooltip from '../Tooltip/index.js';
8
+ import useHover from '../hooks/useHover.js';
9
+ import useFocus from '../hooks/useFocus.js';
10
+ import Element from '../Element/index.js';
11
+ import { unwrapStringOrJSXElement } from '../utils/solid.js';
12
+ import { setupGlobalDrag } from '../utils/setupGlobalDrag.js';
13
+
14
+ var _tmpl$ = /*#__PURE__*/template(`<div>`),
15
+ _tmpl$2 = /*#__PURE__*/template(`<div class="absolute top-1/2 -translate-1/2 w-[--ant-slider-handle-size] h-[--ant-slider-handle-size]">`),
16
+ _tmpl$3 = /*#__PURE__*/template(`<div><div></div><div></div><div class="absolute left-[calc(var(--ant-slider-handle-size)/2)] right-[calc(var(--ant-slider-handle-size)/2)] top-1/2 -translate-y-1/2">`);
17
+ const Slider = _props => {
18
+ let containerRef;
19
+ let handleRef;
20
+ const props = mergeProps({
21
+ min: 0,
22
+ max: 100,
23
+ step: 1,
24
+ tooltip: true
25
+ }, _props);
26
+ const [_value, _setValue] = createControllableValue(props);
27
+ const value = createMemo(() => clamp(typeof _value() === 'number' ? _value() : 0, props.min, props.max));
28
+ const setValue = v => {
29
+ const _v = clamp(NP.times(Math.round(v / props.step), props.step), props.min, props.max);
30
+ _setValue(_v);
31
+ };
32
+ const gap = createMemo(() => props.max - props.min);
33
+ const progress = createMemo(() => (value() - props.min) / gap());
34
+ const isHover = useHover(() => handleRef);
35
+ const isFocus = useFocus(() => handleRef);
36
+ const [isDragging, setIsDragging] = createSignal(false);
37
+ const resolvedHandle = children(() => unwrapStringOrJSXElement(props.handle));
38
+ // 注册键盘监听
39
+ createEffect(() => {
40
+ if (props.disabled) return;
41
+ const onKeydown = e => {
42
+ if (document.activeElement !== handleRef) return;
43
+ switch (e.code) {
44
+ case 'ArrowLeft':
45
+ case 'ArrowDown':
46
+ e.preventDefault();
47
+ setValue(NP.minus(value(), props.step));
48
+ break;
49
+ case 'ArrowRight':
50
+ case 'ArrowUp':
51
+ e.preventDefault();
52
+ setValue(NP.plus(value(), props.step));
53
+ e.preventDefault();
54
+ break;
55
+ }
56
+ };
57
+ window.addEventListener('keydown', onKeydown);
58
+ onCleanup(() => {
59
+ window.removeEventListener('keydown', onKeydown);
60
+ });
61
+ });
62
+ return createComponent(Element, {
63
+ ref(r$) {
64
+ var _ref$ = containerRef;
65
+ typeof _ref$ === "function" ? _ref$(r$) : containerRef = r$;
66
+ },
67
+ get ["class"]() {
68
+ return cs(props.class, 'relative cursor-pointer', props.disabled && 'cursor-not-allowed');
69
+ },
70
+ get style() {
71
+ return {
72
+ '--ant-slider-rail-size': '4px',
73
+ // 轨道高度
74
+ '--ant-slider-handle-size': '14px',
75
+ // 抓取点元素大小
76
+ '--ant-slider-rail-bg': 'var(--ant-color-fill-tertiary)',
77
+ '--ant-slider-rail-hover-bg': 'var(--ant-color-fill-secondary)',
78
+ '--ant-slider-track-bg': 'var(--ant-color-primary-border)',
79
+ '--ant-slider-track-hover-bg': 'var(--ant-color-primary-border-hover)',
80
+ padding: 'calc((var(--ant-slider-handle-size) - var(--ant-slider-rail-size)) / 2) 0',
81
+ ...props.style
82
+ };
83
+ },
84
+ get children() {
85
+ var _el$ = _tmpl$3(),
86
+ _el$2 = _el$.firstChild,
87
+ _el$3 = _el$2.nextSibling,
88
+ _el$4 = _el$3.nextSibling;
89
+ _el$.$$click = e => {
90
+ const handleWidth = handleRef?.offsetWidth ?? 0;
91
+ const halfHandleWidth = handleWidth / 2;
92
+ const offsetX = clamp(e.offsetX - halfHandleWidth, 0, containerRef.offsetWidth - handleWidth);
93
+ setValue(props.min + offsetX / (containerRef.offsetWidth - handleWidth) * gap());
94
+ };
95
+ insert(_el$4, createComponent(Tooltip, {
96
+ get open() {
97
+ return memo(() => !!props.tooltip)() && (isHover() || isFocus() || isDragging());
98
+ },
99
+ get content() {
100
+ return memo(() => !!(typeof props.tooltip === 'object' && props.tooltip.formatter))() ? props.tooltip.formatter(value()) : value();
101
+ },
102
+ get children() {
103
+ var _el$5 = _tmpl$2();
104
+ _el$5.$$mousedown = e => {
105
+ const startX = e.clientX;
106
+ const startValue = value();
107
+ setIsDragging(true);
108
+ const handleWidth = handleRef.offsetWidth;
109
+ setupGlobalDrag(
110
+ // eslint-disable-next-line solid/reactivity
111
+ _e => {
112
+ const moveX = _e.clientX - startX;
113
+ setValue(startValue + moveX / (containerRef.offsetWidth - handleWidth) * gap());
114
+ },
115
+ // eslint-disable-next-line solid/reactivity
116
+ () => {
117
+ props.onChangeComplete?.(value());
118
+ setIsDragging(false);
119
+ });
120
+ };
121
+ _el$5.$$click = e => {
122
+ e.stopPropagation();
123
+ };
124
+ var _ref$2 = handleRef;
125
+ typeof _ref$2 === "function" ? use(_ref$2, _el$5) : handleRef = _el$5;
126
+ insert(_el$5, createComponent(Show, {
127
+ get when() {
128
+ return isNil(resolvedHandle());
129
+ },
130
+ get fallback() {
131
+ return resolvedHandle();
132
+ },
133
+ get children() {
134
+ var _el$6 = _tmpl$();
135
+ effect(_p$ => {
136
+ var _v$ = cs('box-border w-full h-full bg-[--ant-color-bg-container-secondary] rounded-1/2 border-solid border-2px cursor-pointer', props.disabled ? 'border-[var(--ant-slider-handle-color-disabled)]' : ['border-[var(--ant-slider-handle-color)]', 'hover:border-[var(--ant-slider-handle-active-color)] hover:[outline:4px_solid_var(--ant-control-outline)]', 'focus:border-[var(--ant-slider-handle-active-color)] focus:[outline:4px_solid_var(--ant-control-outline)]']),
137
+ _v$2 = props.disabled ? undefined : '0';
138
+ _v$ !== _p$.e && className(_el$6, _p$.e = _v$);
139
+ _v$2 !== _p$.t && setAttribute(_el$6, "tabindex", _p$.t = _v$2);
140
+ return _p$;
141
+ }, {
142
+ e: undefined,
143
+ t: undefined
144
+ });
145
+ return _el$6;
146
+ }
147
+ }));
148
+ effect(() => `${progress() * 100}%` != null ? _el$5.style.setProperty("left", `${progress() * 100}%`) : _el$5.style.removeProperty("left"));
149
+ return _el$5;
150
+ }
151
+ }));
152
+ effect(_p$ => {
153
+ var _v$3 = cs(props.disabled && 'pointer-events-none'),
154
+ _v$4 = cs('[background:var(--ant-slider-rail-bg)] h-[--ant-slider-rail-size] rounded-[calc(var(--ant-slider-rail-size)/2)]', !props.disabled && 'hover:[background:var(--ant-slider-rail-hover-bg)]'),
155
+ _v$5 = props.railBgStyle,
156
+ _v$6 = cs('absolute left-0 top-1/2 -translate-y-1/2 h-[--ant-slider-rail-size] rounded-[calc(var(--ant-slider-rail-size)/2)]', props.disabled ? 'bg-[var(--ant-slider-track-bg-disabled)]' : ['bg-[var(--ant-slider-track-bg)] hover:bg-[var(--ant-slider-track-hover-bg)]']),
157
+ _v$7 = `${progress() * 100}%`;
158
+ _v$3 !== _p$.e && className(_el$, _p$.e = _v$3);
159
+ _v$4 !== _p$.t && className(_el$2, _p$.t = _v$4);
160
+ _p$.a = style(_el$2, _v$5, _p$.a);
161
+ _v$6 !== _p$.o && className(_el$3, _p$.o = _v$6);
162
+ _v$7 !== _p$.i && ((_p$.i = _v$7) != null ? _el$3.style.setProperty("width", _v$7) : _el$3.style.removeProperty("width"));
163
+ return _p$;
164
+ }, {
165
+ e: undefined,
166
+ t: undefined,
167
+ a: undefined,
168
+ o: undefined,
169
+ i: undefined
170
+ });
171
+ return _el$;
172
+ }
173
+ });
174
+ };
175
+ delegateEvents(["click", "mousedown"]);
176
+
177
+ export { Slider as default };
@@ -0,0 +1,13 @@
1
+ import { type Accessor, type JSX } from 'solid-js';
2
+ import { type StringOrJSXElement } from '../types';
3
+ interface SpaceProps<T extends readonly any[], U extends JSX.Element> {
4
+ each: T | undefined | null | false;
5
+ fallback?: JSX.Element;
6
+ children: (item: T[number], index: Accessor<number>) => U;
7
+ /**
8
+ * 设置拆分
9
+ */
10
+ split: StringOrJSXElement;
11
+ }
12
+ declare function Space<T extends readonly any[], U extends JSX.Element>(props: SpaceProps<T, U>): JSX.Element;
13
+ export default Space;
@@ -0,0 +1,16 @@
1
+ import { createComponent, mergeProps, memo } from 'solid-js/web';
2
+ import { For } from 'solid-js';
3
+ import Element from '../Element/index.js';
4
+ import { unwrapStringOrJSXElement } from '../utils/solid.js';
5
+
6
+ function Space(props) {
7
+ return createComponent(Element, {
8
+ get children() {
9
+ return createComponent(For, mergeProps(props, {
10
+ children: (item, index) => [memo(() => memo(() => index() !== 0)() && unwrapStringOrJSXElement(props.split)), memo(() => props.children(item, index))]
11
+ }));
12
+ }
13
+ });
14
+ }
15
+
16
+ export { Space as default };
@@ -0,0 +1,19 @@
1
+ import { type Component, type ParentProps } from 'solid-js';
2
+ import { type StringOrJSXElement, type StyleProps } from '../types';
3
+ interface SpinProps extends ParentProps, StyleProps {
4
+ /**
5
+ * 是否为加载中状态
6
+ * 默认 true
7
+ */
8
+ spinning?: boolean;
9
+ /**
10
+ * 组件大小,可选值为 small default large
11
+ */
12
+ size?: number;
13
+ /**
14
+ * 当作为包裹元素时,可以自定义描述文案
15
+ */
16
+ tip?: StringOrJSXElement;
17
+ }
18
+ declare const Spin: Component<SpinProps>;
19
+ export default Spin;
@@ -0,0 +1,82 @@
1
+ import { insert, createComponent, effect, template } from 'solid-js/web';
2
+ import { mergeProps, children, Show } from 'solid-js';
3
+ import cs from 'classnames';
4
+ import Element from '../Element/index.js';
5
+ import { unwrapStringOrJSXElement, isEmptyJSXElement } from '../utils/solid.js';
6
+
7
+ var _tmpl$ = /*#__PURE__*/template(`<div class="inline-flex flex-col items-center gap-8px text-[var(--ant-color-primary)]"><span class="i-ant-design:loading keyframes-spin [animation:spin_1s_linear_infinite]">`),
8
+ _tmpl$2 = /*#__PURE__*/template(`<div>`),
9
+ _tmpl$3 = /*#__PURE__*/template(`<div class="absolute inset-0 flex items-center justify-center bg-[var(--ant-color-bg-container)] opacity-40">`);
10
+ const Spin = _props => {
11
+ const props = mergeProps({
12
+ spinning: true,
13
+ size: 20
14
+ }, _props);
15
+ const resolvedChildren = children(() => props.children);
16
+ const resolvedTip = children(() => unwrapStringOrJSXElement(props.tip));
17
+ const spin = (() => {
18
+ var _el$ = _tmpl$(),
19
+ _el$2 = _el$.firstChild;
20
+ insert(_el$, createComponent(Show, {
21
+ get when() {
22
+ return !isEmptyJSXElement(resolvedTip());
23
+ },
24
+ get children() {
25
+ return resolvedTip();
26
+ }
27
+ }), null);
28
+ effect(() => `${props.size}px` != null ? _el$2.style.setProperty("font-size", `${props.size}px`) : _el$2.style.removeProperty("font-size"));
29
+ return _el$;
30
+ })();
31
+ return createComponent(Show, {
32
+ get when() {
33
+ return !isEmptyJSXElement(resolvedChildren());
34
+ },
35
+ get fallback() {
36
+ return createComponent(Element, {
37
+ get ["class"]() {
38
+ return cs(props.class, 'inline-block text-center');
39
+ },
40
+ get style() {
41
+ return props.style;
42
+ },
43
+ get children() {
44
+ return createComponent(Show, {
45
+ get when() {
46
+ return props.spinning;
47
+ },
48
+ children: spin
49
+ });
50
+ }
51
+ });
52
+ },
53
+ get children() {
54
+ return createComponent(Element, {
55
+ get ["class"]() {
56
+ return cs(props.class, 'relative');
57
+ },
58
+ get style() {
59
+ return props.style;
60
+ },
61
+ get children() {
62
+ return [(() => {
63
+ var _el$3 = _tmpl$2();
64
+ insert(_el$3, resolvedChildren);
65
+ return _el$3;
66
+ })(), createComponent(Show, {
67
+ get when() {
68
+ return props.spinning;
69
+ },
70
+ get children() {
71
+ var _el$4 = _tmpl$3();
72
+ insert(_el$4, spin);
73
+ return _el$4;
74
+ }
75
+ })];
76
+ }
77
+ });
78
+ }
79
+ });
80
+ };
81
+
82
+ export { Spin as default };
@@ -3,6 +3,15 @@ export interface SwitchProps {
3
3
  defaultChecked?: boolean;
4
4
  checked?: boolean;
5
5
  onChange?: (checked: boolean) => void;
6
+ /**
7
+ * 开关大小
8
+ * 默认 'middle'
9
+ */
10
+ size?: 'small' | 'middle' | 'large';
11
+ /**
12
+ * 是否禁用
13
+ */
14
+ disabled?: boolean;
6
15
  }
7
16
  declare const Switch: Component<SwitchProps>;
8
17
  export default Switch;
@@ -0,0 +1,41 @@
1
+ import { createComponent, effect, className, template } from 'solid-js/web';
2
+ import cs from 'classnames';
3
+ import createControllableValue from '../hooks/createControllableValue.js';
4
+ import Element from '../Element/index.js';
5
+ import useComponentSize from '../hooks/useComponentSize.js';
6
+
7
+ var _tmpl$ = /*#__PURE__*/template(`<div>`);
8
+ const Switch = props => {
9
+ const size = useComponentSize(() => props.size);
10
+ const [checked, setChecked] = createControllableValue(props, {
11
+ defaultValuePropName: 'defaultChecked',
12
+ valuePropName: 'checked'
13
+ });
14
+ return createComponent(Element, {
15
+ tag: "button",
16
+ get ["class"]() {
17
+ return cs('rounded-100px relative vertical-middle', {
18
+ large: 'w-56px h-28px',
19
+ middle: 'w-40px h-22px',
20
+ small: 'w-28px h-16px'
21
+ }[size()], checked() ? 'bg-[var(--ant-color-primary)]' : 'bg-[rgba(0,0,0,0.45)]', props.disabled && 'opacity-[--ant-opacity-loading] cursor-not-allowed');
22
+ },
23
+ get disabled() {
24
+ return props.disabled;
25
+ },
26
+ onClick: () => {
27
+ setChecked(c => !c);
28
+ },
29
+ get children() {
30
+ var _el$ = _tmpl$();
31
+ effect(() => className(_el$, cs('rounded-50% bg-white absolute top-1/2 -translate-y-1/2 transition-left', {
32
+ large: 'w-24px h-24px',
33
+ middle: 'w-18px h-18px',
34
+ small: 'w-12px h-12px'
35
+ }[size()], checked() ? 'right-2px' : 'left-2px')));
36
+ return _el$;
37
+ }
38
+ });
39
+ };
40
+
41
+ export { Switch as default };
@@ -1,11 +1,15 @@
1
- import { type JSXElement } from 'solid-js';
1
+ import { type JSXElement, type Accessor } from 'solid-js';
2
2
  export interface TableColumn<R extends {}> {
3
3
  title: JSXElement;
4
- render: (row: R) => JSXElement;
4
+ render: (row: R, index: Accessor<number>) => JSXElement;
5
5
  }
6
6
  export interface TableProps<R extends {}> {
7
7
  columns: Array<TableColumn<R>>;
8
8
  dataSource: R[];
9
+ /**
10
+ * 默认 'middle'
11
+ */
12
+ size?: 'small' | 'middle' | 'large';
9
13
  }
10
14
  declare const Table: <R extends {}>(props: TableProps<R>) => import("solid-js").JSX.Element;
11
15
  export default Table;