neko-ui 2.8.21 → 2.8.23

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 (671) hide show
  1. package/es/avatar/README.mdx +10 -0
  2. package/es/avatar/examples/basic.md +14 -0
  3. package/es/avatar/examples/group.md +57 -0
  4. package/es/avatar/examples/size.md +21 -0
  5. package/es/avatar/group.js +2 -2
  6. package/es/avatar/group.js.map +1 -1
  7. package/es/avatar/index.js +2 -2
  8. package/es/avatar/index.js.map +1 -1
  9. package/es/avatar/style.js +2 -2
  10. package/es/avatar/style.js.map +1 -1
  11. package/es/back-top/README.mdx +10 -0
  12. package/es/back-top/examples/basic.md +19 -0
  13. package/es/back-top/examples/mount.md +36 -0
  14. package/es/back-top/examples/target.md +46 -0
  15. package/es/back-top/index.js +1 -1
  16. package/es/back-top/index.js.map +1 -1
  17. package/es/basic-config/README.mdx +11 -0
  18. package/es/button/README.mdx +10 -0
  19. package/es/button/examples/basic.md +21 -0
  20. package/es/button/examples/block.md +33 -0
  21. package/es/button/examples/circle.md +21 -0
  22. package/es/button/examples/danger.md +23 -0
  23. package/es/button/examples/dashed.md +21 -0
  24. package/es/button/examples/disabled.md +35 -0
  25. package/es/button/examples/fill.md +21 -0
  26. package/es/button/examples/flat.md +21 -0
  27. package/es/button/examples/ghost.md +21 -0
  28. package/es/button/examples/icon.md +30 -0
  29. package/es/button/examples/link.md +21 -0
  30. package/es/button/examples/size.md +23 -0
  31. package/es/button/index.js +1 -1
  32. package/es/button/index.js.map +1 -1
  33. package/es/button/style.js +1 -0
  34. package/es/button/style.js.map +1 -1
  35. package/es/capture-screen/README.mdx +10 -0
  36. package/es/capture-screen/examples/basic.md +13 -0
  37. package/es/capture-screen/examples/custom-save.md +30 -0
  38. package/es/capture-screen/examples/preview.md +13 -0
  39. package/es/capture-screen/examples/recorder-save.md +13 -0
  40. package/es/capture-screen/index.js +1 -1
  41. package/es/capture-screen/index.js.map +1 -1
  42. package/es/carousel/README.mdx +10 -0
  43. package/es/carousel/examples/autoplay.md +21 -0
  44. package/es/carousel/examples/basic.md +23 -0
  45. package/es/carousel/examples/dots.md +23 -0
  46. package/es/carousel/examples/header.md +38 -0
  47. package/es/carousel/index.js +1 -1
  48. package/es/carousel/index.js.map +1 -1
  49. package/es/checkbox/README.mdx +10 -0
  50. package/es/checkbox/examples/basic.md +31 -0
  51. package/es/checkbox/examples/check-all.md +37 -0
  52. package/es/checkbox/examples/disabled-all.md +28 -0
  53. package/es/checkbox/examples/disabled-option.md +35 -0
  54. package/es/checkbox/examples/field-names.md +40 -0
  55. package/es/checkbox/examples/status.md +37 -0
  56. package/es/checkbox/examples/vertical.md +36 -0
  57. package/es/checkbox/index.js +1 -1
  58. package/es/checkbox/index.js.map +1 -1
  59. package/es/code/README.mdx +10 -0
  60. package/es/code/examples/basic.md +19 -0
  61. package/es/code/examples/diff.md +45 -0
  62. package/es/code/examples/line-number.md +18 -0
  63. package/es/code/examples/live-edit.md +20 -0
  64. package/es/code/examples/toolbar.md +18 -0
  65. package/es/code/index.js +2 -2
  66. package/es/code/index.js.map +1 -1
  67. package/es/code/worker.js.map +1 -1
  68. package/es/color-palette/README.mdx +10 -0
  69. package/es/color-palette/examples/default-value.md +25 -0
  70. package/es/color-palette/examples/hexa.md +13 -0
  71. package/es/color-palette/examples/hsla.md +13 -0
  72. package/es/color-palette/examples/rgba.md +13 -0
  73. package/es/color-palette/index.js +1 -1
  74. package/es/color-palette/index.js.map +1 -1
  75. package/es/color-picker/README.mdx +10 -0
  76. package/es/color-picker/examples/basic.md +12 -0
  77. package/es/color-picker/examples/default-value.md +20 -0
  78. package/es/color-picker/examples/size.md +17 -0
  79. package/es/color-picker/index.js +1 -1
  80. package/es/color-picker/index.js.map +1 -1
  81. package/es/cron/README.mdx +10 -0
  82. package/es/cron/begin-interval.js.map +1 -1
  83. package/es/cron/day.js.map +1 -1
  84. package/es/cron/examples/basic.md +19 -0
  85. package/es/cron/examples/card.md +12 -0
  86. package/es/cron/examples/show-cron.md +12 -0
  87. package/es/cron/hour.js +1 -1
  88. package/es/cron/hour.js.map +1 -1
  89. package/es/cron/index.js +1 -1
  90. package/es/cron/index.js.map +1 -1
  91. package/es/cron/item.js.map +1 -1
  92. package/es/cron/minute.js +1 -1
  93. package/es/cron/minute.js.map +1 -1
  94. package/es/cron/month.js +1 -1
  95. package/es/cron/month.js.map +1 -1
  96. package/es/cron/period.js.map +1 -1
  97. package/es/cron/second.js +1 -1
  98. package/es/cron/second.js.map +1 -1
  99. package/es/cron/some.js.map +1 -1
  100. package/es/date-picker/README.mdx +10 -0
  101. package/es/date-picker/date.js +1 -1
  102. package/es/date-picker/date.js.map +1 -1
  103. package/es/date-picker/dayjs.js +1 -1
  104. package/es/date-picker/dayjs.js.map +1 -1
  105. package/es/date-picker/examples/basic.md +24 -0
  106. package/es/date-picker/examples/date.md +13 -0
  107. package/es/date-picker/examples/disbaled.md +13 -0
  108. package/es/date-picker/examples/header.md +13 -0
  109. package/es/date-picker/examples/month.md +13 -0
  110. package/es/date-picker/examples/time.md +15 -0
  111. package/es/date-picker/examples/today.md +13 -0
  112. package/es/date-picker/examples/year.md +13 -0
  113. package/es/date-picker/index.js +1 -1
  114. package/es/date-picker/index.js.map +1 -1
  115. package/es/date-picker/month.js +1 -1
  116. package/es/date-picker/month.js.map +1 -1
  117. package/es/date-picker/panel.js +1 -1
  118. package/es/date-picker/panel.js.map +1 -1
  119. package/es/date-picker/time.js +1 -1
  120. package/es/date-picker/time.js.map +1 -1
  121. package/es/date-picker/year.js +1 -1
  122. package/es/date-picker/year.js.map +1 -1
  123. package/es/dropdown/README.mdx +10 -0
  124. package/es/dropdown/examples/arrow.md +59 -0
  125. package/es/dropdown/examples/basic.md +17 -0
  126. package/es/dropdown/examples/click.md +45 -0
  127. package/es/dropdown/examples/context-menu.md +66 -0
  128. package/es/dropdown/examples/field-names.md +44 -0
  129. package/es/dropdown/examples/icon.md +30 -0
  130. package/es/dropdown/examples/multiple.md +45 -0
  131. package/es/dropdown/examples/no-data.md +16 -0
  132. package/es/dropdown/examples/placement.md +59 -0
  133. package/es/dropdown/examples/toggle.md +36 -0
  134. package/es/dropdown/index.js +1 -1
  135. package/es/dropdown/index.js.map +1 -1
  136. package/es/empty/index.js.map +1 -1
  137. package/es/from-schema/index.js +1 -1
  138. package/es/from-schema/index.js.map +1 -1
  139. package/es/highlight-text/README.mdx +10 -0
  140. package/es/highlight-text/examples/basic.md +19 -0
  141. package/es/highlight-text/examples/mut.md +47 -0
  142. package/es/highlight-text/examples/not-hightlight.md +19 -0
  143. package/es/highlight-text/index.js +2 -2
  144. package/es/highlight-text/index.js.map +1 -1
  145. package/es/img/README.mdx +10 -0
  146. package/es/img/examples/basic.md +17 -0
  147. package/es/img/examples/close-mask.md +21 -0
  148. package/es/img/examples/disabled.md +16 -0
  149. package/es/img/examples/error.md +13 -0
  150. package/es/img/examples/esc.md +21 -0
  151. package/es/img/examples/open-change.md +25 -0
  152. package/es/img/index.js +1 -1
  153. package/es/img/index.js.map +1 -1
  154. package/es/img/lazy.js +1 -1
  155. package/es/img/lazy.js.map +1 -1
  156. package/es/index.js +1 -1
  157. package/es/index.js.map +1 -1
  158. package/es/input/README.mdx +10 -0
  159. package/es/input/examples/basic.md +31 -0
  160. package/es/input/examples/prefix&suffix.md +33 -0
  161. package/es/input/examples/size.md +21 -0
  162. package/es/input/examples/status.md +23 -0
  163. package/es/input/index.js +1 -1
  164. package/es/input/index.js.map +1 -1
  165. package/es/input-number/README.mdx +10 -0
  166. package/es/input-number/examples/basic.md +26 -0
  167. package/es/input-number/examples/formatter.md +36 -0
  168. package/es/input-number/examples/max-min.md +13 -0
  169. package/es/input-number/index.js.map +1 -1
  170. package/es/katex/README.mdx +42 -0
  171. package/es/katex/examples/block.md +25 -0
  172. package/es/katex/examples/inline.md +19 -0
  173. package/es/md/README.mdx +10 -0
  174. package/es/md/examples/in-children.md +23 -0
  175. package/es/md/examples/in-text.md +32 -0
  176. package/es/md/examples/math.md +36 -0
  177. package/es/md/index.js +1 -1
  178. package/es/md/index.js.map +1 -1
  179. package/es/menu/README.mdx +10 -0
  180. package/es/menu/examples/basic.md +17 -0
  181. package/es/menu/examples/field-names.md +42 -0
  182. package/es/menu/examples/icon.md +125 -0
  183. package/es/menu/examples/multiple.md +42 -0
  184. package/es/menu/index.js +1 -1
  185. package/es/menu/index.js.map +1 -1
  186. package/es/modal/README.mdx +10 -0
  187. package/es/modal/examples/basic.md +56 -0
  188. package/es/modal/examples/close-icon.md +57 -0
  189. package/es/modal/examples/esc-closable.md +64 -0
  190. package/es/modal/examples/mask-blur.md +56 -0
  191. package/es/modal/examples/mask-closable.md +64 -0
  192. package/es/modal/index.js +1 -1
  193. package/es/modal/index.js.map +1 -1
  194. package/es/notification/README.mdx +11 -0
  195. package/es/notification/examples/basic.md +35 -0
  196. package/es/notification/examples/close.md +35 -0
  197. package/es/notification/examples/type.md +84 -0
  198. package/es/notification/examples/update.md +52 -0
  199. package/es/notification/index.js.map +1 -1
  200. package/es/notification/notification.js +1 -1
  201. package/es/notification/notification.js.map +1 -1
  202. package/es/pagination/README.mdx +10 -0
  203. package/es/pagination/examples/basic.md +13 -0
  204. package/es/pagination/examples/onchange.md +29 -0
  205. package/es/pagination/examples/size.md +23 -0
  206. package/es/pagination/examples/total-text.md +42 -0
  207. package/es/pagination/index.js +1 -1
  208. package/es/pagination/index.js.map +1 -1
  209. package/es/popover/README.mdx +10 -0
  210. package/es/popover/examples/basic.md +35 -0
  211. package/es/popover/examples/click.md +15 -0
  212. package/es/popover/examples/context-menu.md +58 -0
  213. package/es/popover/examples/controlled.md +47 -0
  214. package/es/popover/index.js +1 -1
  215. package/es/popover/index.js.map +1 -1
  216. package/es/prism/css.js.map +1 -1
  217. package/es/prism/index.js.map +1 -1
  218. package/es/provider/README.mdx +10 -0
  219. package/es/provider/examples/scheme.md +14 -0
  220. package/es/provider/index.js.map +1 -1
  221. package/es/radio/README.mdx +10 -0
  222. package/es/radio/examples/basic.md +19 -0
  223. package/es/radio/examples/disabled-option.md +19 -0
  224. package/es/radio/examples/disabled.md +19 -0
  225. package/es/radio/examples/field-names.md +39 -0
  226. package/es/radio/examples/layout-vertical.md +19 -0
  227. package/es/radio/examples/status.md +31 -0
  228. package/es/radio/index.js +1 -1
  229. package/es/radio/index.js.map +1 -1
  230. package/es/segmented/README.mdx +10 -0
  231. package/es/segmented/examples/basic.md +18 -0
  232. package/es/segmented/examples/custom-field-names.md +43 -0
  233. package/es/segmented/examples/disabled-option.md +29 -0
  234. package/es/segmented/examples/disabled.md +18 -0
  235. package/es/segmented/examples/icon.md +28 -0
  236. package/es/segmented/examples/options.md +21 -0
  237. package/es/segmented/index.js +2 -2
  238. package/es/segmented/index.js.map +1 -1
  239. package/es/select/README.mdx +10 -0
  240. package/es/select/examples/basic.md +44 -0
  241. package/es/select/examples/disabled-option.md +21 -0
  242. package/es/select/examples/disabled.md +24 -0
  243. package/es/select/examples/field-names.md +40 -0
  244. package/es/select/examples/item-suffix.md +84 -0
  245. package/es/select/examples/multiple.md +61 -0
  246. package/es/select/examples/no-data.md +12 -0
  247. package/es/select/examples/prefix-icon.md +74 -0
  248. package/es/select/index.js +1 -1
  249. package/es/select/index.js.map +1 -1
  250. package/es/skeleton/README.mdx +10 -0
  251. package/es/skeleton/examples/animation.md +13 -0
  252. package/es/skeleton/examples/avatar.md +13 -0
  253. package/es/skeleton/examples/basic.md +12 -0
  254. package/es/skeleton/examples/rows.md +13 -0
  255. package/es/skeleton/examples/title.md +12 -0
  256. package/es/skeleton/index.js +3 -3
  257. package/es/skeleton/index.js.map +1 -1
  258. package/es/spin/README.mdx +10 -0
  259. package/es/spin/examples/basic.md +67 -0
  260. package/es/spin/index.js +4 -4
  261. package/es/spin/index.js.map +1 -1
  262. package/es/switch/README.mdx +10 -0
  263. package/es/switch/examples/basic.md +24 -0
  264. package/es/switch/examples/checked-text.md +17 -0
  265. package/es/switch/examples/disabled.md +15 -0
  266. package/es/switch/examples/loading.md +17 -0
  267. package/es/switch/index.js +1 -1
  268. package/es/switch/index.js.map +1 -1
  269. package/es/table/README.mdx +10 -0
  270. package/es/table/examples/basic.md +29 -0
  271. package/es/table/examples/key.md +29 -0
  272. package/es/table/examples/order.md +29 -0
  273. package/es/table/examples/pagination.md +67 -0
  274. package/es/table/examples/render.md +92 -0
  275. package/es/table/examples/size.md +52 -0
  276. package/es/table/examples/summary.md +40 -0
  277. package/es/table/index.js +1 -1
  278. package/es/table/index.js.map +1 -1
  279. package/es/tabs/README.mdx +10 -0
  280. package/es/tabs/examples/add-remove.md +115 -0
  281. package/es/tabs/examples/animated.md +33 -0
  282. package/es/tabs/examples/basic.md +32 -0
  283. package/es/tabs/examples/card.md +33 -0
  284. package/es/tabs/examples/center.md +33 -0
  285. package/es/tabs/examples/disabled-tab.md +34 -0
  286. package/es/tabs/examples/disabled.md +33 -0
  287. package/es/tabs/examples/extra.md +65 -0
  288. package/es/tabs/index.js +2 -2
  289. package/es/tabs/index.js.map +1 -1
  290. package/es/tag/README.mdx +10 -0
  291. package/es/tag/examples/basic.md +28 -0
  292. package/es/tag/examples/bordered.md +19 -0
  293. package/es/tag/examples/color.md +25 -0
  294. package/es/tag/examples/icon.md +21 -0
  295. package/es/tag/examples/type.md +19 -0
  296. package/es/tag/index.js +3 -3
  297. package/es/tag/index.js.map +1 -1
  298. package/es/theme/README.mdx +10 -0
  299. package/es/theme/examples/colors.md +123 -0
  300. package/es/theme/examples/theme.md +19 -0
  301. package/es/theme/index.js +1 -1
  302. package/es/theme/index.js.map +1 -1
  303. package/es/tree/README.mdx +10 -0
  304. package/es/tree/examples/basic.md +108 -0
  305. package/es/tree/examples/custom-render.md +115 -0
  306. package/es/tree/examples/direction.md +100 -0
  307. package/es/tree/examples/field-names.md +114 -0
  308. package/es/tree/examples/multiple.md +117 -0
  309. package/es/tree/examples/readonly.md +90 -0
  310. package/es/tree/examples/render-tree-string1.md +70 -0
  311. package/es/tree/examples/render-tree-string2.md +52 -0
  312. package/es/tree/examples/schema.md +130 -0
  313. package/es/tree/examples/size.md +125 -0
  314. package/es/tree/examples/toggle.md +71 -0
  315. package/es/tree/index.js +1 -1
  316. package/es/tree/index.js.map +1 -1
  317. package/es/tree/register.js.map +1 -1
  318. package/es/typography/README.mdx +10 -0
  319. package/es/typography/examples/basic.md +27 -0
  320. package/es/typography/examples/tag.md +25 -0
  321. package/es/typography/examples/truncated.md +17 -0
  322. package/es/typography/index.js +3 -3
  323. package/es/typography/index.js.map +1 -1
  324. package/eslint.config.mjs +9 -0
  325. package/lib/avatar/README.mdx +10 -0
  326. package/lib/avatar/examples/basic.md +14 -0
  327. package/lib/avatar/examples/group.md +57 -0
  328. package/lib/avatar/examples/size.md +21 -0
  329. package/lib/avatar/group.js.map +1 -1
  330. package/lib/avatar/index.js +2 -2
  331. package/lib/avatar/index.js.map +1 -1
  332. package/lib/avatar/style.js +2 -2
  333. package/lib/avatar/style.js.map +1 -1
  334. package/lib/back-top/README.mdx +10 -0
  335. package/lib/back-top/examples/basic.md +19 -0
  336. package/lib/back-top/examples/mount.md +36 -0
  337. package/lib/back-top/examples/target.md +46 -0
  338. package/lib/back-top/index.js +1 -1
  339. package/lib/back-top/index.js.map +1 -1
  340. package/lib/basic-config/README.mdx +11 -0
  341. package/lib/button/README.mdx +10 -0
  342. package/lib/button/examples/basic.md +21 -0
  343. package/lib/button/examples/block.md +33 -0
  344. package/lib/button/examples/circle.md +21 -0
  345. package/lib/button/examples/danger.md +23 -0
  346. package/lib/button/examples/dashed.md +21 -0
  347. package/lib/button/examples/disabled.md +35 -0
  348. package/lib/button/examples/fill.md +21 -0
  349. package/lib/button/examples/flat.md +21 -0
  350. package/lib/button/examples/ghost.md +21 -0
  351. package/lib/button/examples/icon.md +30 -0
  352. package/lib/button/examples/link.md +21 -0
  353. package/lib/button/examples/size.md +23 -0
  354. package/lib/button/index.js +1 -1
  355. package/lib/button/index.js.map +1 -1
  356. package/lib/button/style.js +1 -0
  357. package/lib/button/style.js.map +1 -1
  358. package/lib/capture-screen/README.mdx +10 -0
  359. package/lib/capture-screen/examples/basic.md +13 -0
  360. package/lib/capture-screen/examples/custom-save.md +30 -0
  361. package/lib/capture-screen/examples/preview.md +13 -0
  362. package/lib/capture-screen/examples/recorder-save.md +13 -0
  363. package/lib/capture-screen/index.js +1 -1
  364. package/lib/capture-screen/index.js.map +1 -1
  365. package/lib/carousel/README.mdx +10 -0
  366. package/lib/carousel/examples/autoplay.md +21 -0
  367. package/lib/carousel/examples/basic.md +23 -0
  368. package/lib/carousel/examples/dots.md +23 -0
  369. package/lib/carousel/examples/header.md +38 -0
  370. package/lib/carousel/index.js +1 -1
  371. package/lib/carousel/index.js.map +1 -1
  372. package/lib/checkbox/README.mdx +10 -0
  373. package/lib/checkbox/examples/basic.md +31 -0
  374. package/lib/checkbox/examples/check-all.md +37 -0
  375. package/lib/checkbox/examples/disabled-all.md +28 -0
  376. package/lib/checkbox/examples/disabled-option.md +35 -0
  377. package/lib/checkbox/examples/field-names.md +40 -0
  378. package/lib/checkbox/examples/status.md +37 -0
  379. package/lib/checkbox/examples/vertical.md +36 -0
  380. package/lib/checkbox/index.js +1 -1
  381. package/lib/checkbox/index.js.map +1 -1
  382. package/lib/code/README.mdx +10 -0
  383. package/lib/code/examples/basic.md +19 -0
  384. package/lib/code/examples/diff.md +45 -0
  385. package/lib/code/examples/line-number.md +18 -0
  386. package/lib/code/examples/live-edit.md +20 -0
  387. package/lib/code/examples/toolbar.md +18 -0
  388. package/lib/code/index.js +2 -2
  389. package/lib/code/index.js.map +1 -1
  390. package/lib/code/worker.js.map +1 -1
  391. package/lib/color-palette/README.mdx +10 -0
  392. package/lib/color-palette/examples/default-value.md +25 -0
  393. package/lib/color-palette/examples/hexa.md +13 -0
  394. package/lib/color-palette/examples/hsla.md +13 -0
  395. package/lib/color-palette/examples/rgba.md +13 -0
  396. package/lib/color-palette/index.js +1 -1
  397. package/lib/color-palette/index.js.map +1 -1
  398. package/lib/color-picker/README.mdx +10 -0
  399. package/lib/color-picker/examples/basic.md +12 -0
  400. package/lib/color-picker/examples/default-value.md +20 -0
  401. package/lib/color-picker/examples/size.md +17 -0
  402. package/lib/color-picker/index.js +1 -1
  403. package/lib/color-picker/index.js.map +1 -1
  404. package/lib/cron/README.mdx +10 -0
  405. package/lib/cron/begin-interval.js.map +1 -1
  406. package/lib/cron/day.js.map +1 -1
  407. package/lib/cron/examples/basic.md +19 -0
  408. package/lib/cron/examples/card.md +12 -0
  409. package/lib/cron/examples/show-cron.md +12 -0
  410. package/lib/cron/hour.js +1 -1
  411. package/lib/cron/hour.js.map +1 -1
  412. package/lib/cron/index.js.map +1 -1
  413. package/lib/cron/item.js.map +1 -1
  414. package/lib/cron/minute.js +1 -1
  415. package/lib/cron/minute.js.map +1 -1
  416. package/lib/cron/month.js +1 -1
  417. package/lib/cron/month.js.map +1 -1
  418. package/lib/cron/period.js.map +1 -1
  419. package/lib/cron/second.js +1 -1
  420. package/lib/cron/second.js.map +1 -1
  421. package/lib/cron/some.js.map +1 -1
  422. package/lib/date-picker/README.mdx +10 -0
  423. package/lib/date-picker/date.js.map +1 -1
  424. package/lib/date-picker/dayjs.js +1 -1
  425. package/lib/date-picker/dayjs.js.map +1 -1
  426. package/lib/date-picker/examples/basic.md +24 -0
  427. package/lib/date-picker/examples/date.md +13 -0
  428. package/lib/date-picker/examples/disbaled.md +13 -0
  429. package/lib/date-picker/examples/header.md +13 -0
  430. package/lib/date-picker/examples/month.md +13 -0
  431. package/lib/date-picker/examples/time.md +15 -0
  432. package/lib/date-picker/examples/today.md +13 -0
  433. package/lib/date-picker/examples/year.md +13 -0
  434. package/lib/date-picker/index.js +1 -1
  435. package/lib/date-picker/index.js.map +1 -1
  436. package/lib/date-picker/month.js.map +1 -1
  437. package/lib/date-picker/panel.js +1 -1
  438. package/lib/date-picker/panel.js.map +1 -1
  439. package/lib/date-picker/time.js.map +1 -1
  440. package/lib/date-picker/year.js.map +1 -1
  441. package/lib/dropdown/README.mdx +10 -0
  442. package/lib/dropdown/examples/arrow.md +59 -0
  443. package/lib/dropdown/examples/basic.md +17 -0
  444. package/lib/dropdown/examples/click.md +45 -0
  445. package/lib/dropdown/examples/context-menu.md +66 -0
  446. package/lib/dropdown/examples/field-names.md +44 -0
  447. package/lib/dropdown/examples/icon.md +30 -0
  448. package/lib/dropdown/examples/multiple.md +45 -0
  449. package/lib/dropdown/examples/no-data.md +16 -0
  450. package/lib/dropdown/examples/placement.md +59 -0
  451. package/lib/dropdown/examples/toggle.md +36 -0
  452. package/lib/dropdown/index.js +1 -1
  453. package/lib/dropdown/index.js.map +1 -1
  454. package/lib/empty/index.js.map +1 -1
  455. package/lib/from-schema/index.js +1 -1
  456. package/lib/from-schema/index.js.map +1 -1
  457. package/lib/highlight-text/README.mdx +10 -0
  458. package/lib/highlight-text/examples/basic.md +19 -0
  459. package/lib/highlight-text/examples/mut.md +47 -0
  460. package/lib/highlight-text/examples/not-hightlight.md +19 -0
  461. package/lib/highlight-text/index.js.map +1 -1
  462. package/lib/img/README.mdx +10 -0
  463. package/lib/img/examples/basic.md +17 -0
  464. package/lib/img/examples/close-mask.md +21 -0
  465. package/lib/img/examples/disabled.md +16 -0
  466. package/lib/img/examples/error.md +13 -0
  467. package/lib/img/examples/esc.md +21 -0
  468. package/lib/img/examples/open-change.md +25 -0
  469. package/lib/img/index.js +1 -1
  470. package/lib/img/index.js.map +1 -1
  471. package/lib/img/lazy.js +1 -1
  472. package/lib/img/lazy.js.map +1 -1
  473. package/lib/index.js +1 -1
  474. package/lib/index.js.map +1 -1
  475. package/lib/input/README.mdx +10 -0
  476. package/lib/input/examples/basic.md +31 -0
  477. package/lib/input/examples/prefix&suffix.md +33 -0
  478. package/lib/input/examples/size.md +21 -0
  479. package/lib/input/examples/status.md +23 -0
  480. package/lib/input/index.js +1 -1
  481. package/lib/input/index.js.map +1 -1
  482. package/lib/input-number/README.mdx +10 -0
  483. package/lib/input-number/examples/basic.md +26 -0
  484. package/lib/input-number/examples/formatter.md +36 -0
  485. package/lib/input-number/examples/max-min.md +13 -0
  486. package/lib/input-number/index.js.map +1 -1
  487. package/lib/katex/README.mdx +42 -0
  488. package/lib/katex/examples/block.md +25 -0
  489. package/lib/katex/examples/inline.md +19 -0
  490. package/lib/md/README.mdx +10 -0
  491. package/lib/md/examples/in-children.md +23 -0
  492. package/lib/md/examples/in-text.md +32 -0
  493. package/lib/md/examples/math.md +36 -0
  494. package/lib/md/index.js +1 -1
  495. package/lib/md/index.js.map +1 -1
  496. package/lib/menu/README.mdx +10 -0
  497. package/lib/menu/examples/basic.md +17 -0
  498. package/lib/menu/examples/field-names.md +42 -0
  499. package/lib/menu/examples/icon.md +125 -0
  500. package/lib/menu/examples/multiple.md +42 -0
  501. package/lib/menu/index.js +1 -1
  502. package/lib/menu/index.js.map +1 -1
  503. package/lib/modal/README.mdx +10 -0
  504. package/lib/modal/examples/basic.md +56 -0
  505. package/lib/modal/examples/close-icon.md +57 -0
  506. package/lib/modal/examples/esc-closable.md +64 -0
  507. package/lib/modal/examples/mask-blur.md +56 -0
  508. package/lib/modal/examples/mask-closable.md +64 -0
  509. package/lib/modal/index.js.map +1 -1
  510. package/lib/notification/README.mdx +11 -0
  511. package/lib/notification/examples/basic.md +35 -0
  512. package/lib/notification/examples/close.md +35 -0
  513. package/lib/notification/examples/type.md +84 -0
  514. package/lib/notification/examples/update.md +52 -0
  515. package/lib/notification/index.js.map +1 -1
  516. package/lib/notification/notification.js +1 -1
  517. package/lib/notification/notification.js.map +1 -1
  518. package/lib/pagination/README.mdx +10 -0
  519. package/lib/pagination/examples/basic.md +13 -0
  520. package/lib/pagination/examples/onchange.md +29 -0
  521. package/lib/pagination/examples/size.md +23 -0
  522. package/lib/pagination/examples/total-text.md +42 -0
  523. package/lib/pagination/index.js +1 -1
  524. package/lib/pagination/index.js.map +1 -1
  525. package/lib/popover/README.mdx +10 -0
  526. package/lib/popover/examples/basic.md +35 -0
  527. package/lib/popover/examples/click.md +15 -0
  528. package/lib/popover/examples/context-menu.md +58 -0
  529. package/lib/popover/examples/controlled.md +47 -0
  530. package/lib/popover/index.js +1 -1
  531. package/lib/popover/index.js.map +1 -1
  532. package/lib/prism/css.js.map +1 -1
  533. package/lib/prism/index.js.map +1 -1
  534. package/lib/provider/README.mdx +10 -0
  535. package/lib/provider/examples/scheme.md +14 -0
  536. package/lib/provider/index.js.map +1 -1
  537. package/lib/radio/README.mdx +10 -0
  538. package/lib/radio/examples/basic.md +19 -0
  539. package/lib/radio/examples/disabled-option.md +19 -0
  540. package/lib/radio/examples/disabled.md +19 -0
  541. package/lib/radio/examples/field-names.md +39 -0
  542. package/lib/radio/examples/layout-vertical.md +19 -0
  543. package/lib/radio/examples/status.md +31 -0
  544. package/lib/radio/index.js +1 -1
  545. package/lib/radio/index.js.map +1 -1
  546. package/lib/segmented/README.mdx +10 -0
  547. package/lib/segmented/examples/basic.md +18 -0
  548. package/lib/segmented/examples/custom-field-names.md +43 -0
  549. package/lib/segmented/examples/disabled-option.md +29 -0
  550. package/lib/segmented/examples/disabled.md +18 -0
  551. package/lib/segmented/examples/icon.md +28 -0
  552. package/lib/segmented/examples/options.md +21 -0
  553. package/lib/segmented/index.js +2 -2
  554. package/lib/segmented/index.js.map +1 -1
  555. package/lib/select/README.mdx +10 -0
  556. package/lib/select/examples/basic.md +44 -0
  557. package/lib/select/examples/disabled-option.md +21 -0
  558. package/lib/select/examples/disabled.md +24 -0
  559. package/lib/select/examples/field-names.md +40 -0
  560. package/lib/select/examples/item-suffix.md +84 -0
  561. package/lib/select/examples/multiple.md +61 -0
  562. package/lib/select/examples/no-data.md +12 -0
  563. package/lib/select/examples/prefix-icon.md +74 -0
  564. package/lib/select/index.js +1 -1
  565. package/lib/select/index.js.map +1 -1
  566. package/lib/skeleton/README.mdx +10 -0
  567. package/lib/skeleton/examples/animation.md +13 -0
  568. package/lib/skeleton/examples/avatar.md +13 -0
  569. package/lib/skeleton/examples/basic.md +12 -0
  570. package/lib/skeleton/examples/rows.md +13 -0
  571. package/lib/skeleton/examples/title.md +12 -0
  572. package/lib/skeleton/index.js.map +1 -1
  573. package/lib/spin/README.mdx +10 -0
  574. package/lib/spin/examples/basic.md +67 -0
  575. package/lib/spin/index.js +3 -3
  576. package/lib/spin/index.js.map +1 -1
  577. package/lib/switch/README.mdx +10 -0
  578. package/lib/switch/examples/basic.md +24 -0
  579. package/lib/switch/examples/checked-text.md +17 -0
  580. package/lib/switch/examples/disabled.md +15 -0
  581. package/lib/switch/examples/loading.md +17 -0
  582. package/lib/switch/index.js +1 -1
  583. package/lib/switch/index.js.map +1 -1
  584. package/lib/table/README.mdx +10 -0
  585. package/lib/table/examples/basic.md +29 -0
  586. package/lib/table/examples/key.md +29 -0
  587. package/lib/table/examples/order.md +29 -0
  588. package/lib/table/examples/pagination.md +67 -0
  589. package/lib/table/examples/render.md +92 -0
  590. package/lib/table/examples/size.md +52 -0
  591. package/lib/table/examples/summary.md +40 -0
  592. package/lib/table/index.js +1 -1
  593. package/lib/table/index.js.map +1 -1
  594. package/lib/tabs/README.mdx +10 -0
  595. package/lib/tabs/examples/add-remove.md +115 -0
  596. package/lib/tabs/examples/animated.md +33 -0
  597. package/lib/tabs/examples/basic.md +32 -0
  598. package/lib/tabs/examples/card.md +33 -0
  599. package/lib/tabs/examples/center.md +33 -0
  600. package/lib/tabs/examples/disabled-tab.md +34 -0
  601. package/lib/tabs/examples/disabled.md +33 -0
  602. package/lib/tabs/examples/extra.md +65 -0
  603. package/lib/tabs/index.js +2 -2
  604. package/lib/tabs/index.js.map +1 -1
  605. package/lib/tag/README.mdx +10 -0
  606. package/lib/tag/examples/basic.md +28 -0
  607. package/lib/tag/examples/bordered.md +19 -0
  608. package/lib/tag/examples/color.md +25 -0
  609. package/lib/tag/examples/icon.md +21 -0
  610. package/lib/tag/examples/type.md +19 -0
  611. package/lib/tag/index.js +3 -3
  612. package/lib/tag/index.js.map +1 -1
  613. package/lib/theme/README.mdx +10 -0
  614. package/lib/theme/examples/colors.md +123 -0
  615. package/lib/theme/examples/theme.md +19 -0
  616. package/lib/theme/index.js +1 -1
  617. package/lib/theme/index.js.map +1 -1
  618. package/lib/tree/README.mdx +10 -0
  619. package/lib/tree/examples/basic.md +108 -0
  620. package/lib/tree/examples/custom-render.md +115 -0
  621. package/lib/tree/examples/direction.md +100 -0
  622. package/lib/tree/examples/field-names.md +114 -0
  623. package/lib/tree/examples/multiple.md +117 -0
  624. package/lib/tree/examples/readonly.md +90 -0
  625. package/lib/tree/examples/render-tree-string1.md +70 -0
  626. package/lib/tree/examples/render-tree-string2.md +52 -0
  627. package/lib/tree/examples/schema.md +130 -0
  628. package/lib/tree/examples/size.md +125 -0
  629. package/lib/tree/examples/toggle.md +71 -0
  630. package/lib/tree/index.js +1 -1
  631. package/lib/tree/index.js.map +1 -1
  632. package/lib/tree/register.js.map +1 -1
  633. package/lib/typography/README.mdx +10 -0
  634. package/lib/typography/examples/basic.md +27 -0
  635. package/lib/typography/examples/tag.md +25 -0
  636. package/lib/typography/examples/truncated.md +17 -0
  637. package/lib/typography/index.js.map +1 -1
  638. package/package.json +18 -18
  639. package/types/avatar/group.d.ts +1 -1
  640. package/types/back-top/index.d.ts +1 -1
  641. package/types/capture-screen/index.d.ts +1 -1
  642. package/types/color-palette/index.d.ts +1 -1
  643. package/types/color-picker/index.d.ts +1 -1
  644. package/types/cron/begin-interval.d.ts +3 -3
  645. package/types/cron/index.d.ts +5 -5
  646. package/types/cron/item.d.ts +4 -4
  647. package/types/cron/period.d.ts +3 -3
  648. package/types/cron/some.d.ts +3 -3
  649. package/types/date-picker/date.d.ts +2 -2
  650. package/types/date-picker/index.d.ts +2 -2
  651. package/types/date-picker/month.d.ts +2 -2
  652. package/types/date-picker/panel.d.ts +3 -3
  653. package/types/date-picker/time.d.ts +2 -2
  654. package/types/date-picker/year.d.ts +2 -2
  655. package/types/dropdown/index.d.ts +1 -1
  656. package/types/empty/index.d.ts +1 -1
  657. package/types/from-schema/index.d.ts +4 -4
  658. package/types/index.d.ts +12 -12
  659. package/types/md/index.d.ts +1 -1
  660. package/types/modal/index.d.ts +1 -1
  661. package/types/notification/index.d.ts +1 -1
  662. package/types/pagination/index.d.ts +1 -1
  663. package/types/provider/index.d.ts +1 -1
  664. package/types/segmented/index.d.ts +1 -1
  665. package/types/select/index.d.ts +1 -1
  666. package/types/table/index.d.ts +1 -1
  667. package/types/tabs/index.d.ts +1 -1
  668. package/types/tree/index.d.ts +1 -1
  669. package/umd/assets/svg/favicon.svg +1 -0
  670. package/umd/index.js +2 -2
  671. package/umd/js/46e8f96158e59015.js +1 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/select/index.tsx"],"sourcesContent":["import {\n For,\n Show,\n batch,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onMount,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport { FieldName } from '../basic-config';\nimport Dropdown, { defaultProps } from '../dropdown';\nimport getOptions from '../get-options';\nimport '../tag';\nimport type { CustomElement, DropdownMultipleProps, DropdownProps, MenuOption } from '..';\n\nfunction Select(props: SelectProps) {\n const [local, other] = splitProps(props, [\n 'css',\n 'value',\n 'onChange',\n 'open',\n 'onOpenChange',\n 'label',\n 'prefixIcon',\n 'suffixIcon',\n 'placeholder',\n 'trigger',\n 'options',\n ]);\n let ref: HTMLInputElement | undefined;\n let tagsRef: HTMLDivElement | undefined;\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const [x, setX] = createSignal<string>('');\n const [options, setOptions] = createSignal<MenuOption[]>([]);\n const [kv, setKv] = createSignal<Record<string, MenuOption>>({});\n\n const fieldNames = createMemo(() => Object.assign({}, FieldName, other.fieldNames));\n\n function getKv(arr: MenuOption[], fieldDic: typeof FieldName) {\n const optKv: Record<string, MenuOption> = {};\n\n for (let i = 0, len = arr.length; i < len; i++) {\n const item = arr[i];\n const _options = item[fieldDic.options];\n\n optKv[item[fieldDic.value]!] = item;\n if (Array.isArray(_options)) {\n Object.assign(optKv, getKv(_options as MenuOption[], fieldDic));\n }\n const _children = item[fieldDic.children];\n\n optKv[item[fieldDic.value]!] = item;\n if (Array.isArray(_children)) {\n Object.assign(optKv, getKv(_children as MenuOption[], fieldDic));\n }\n }\n return optKv;\n }\n\n createEffect(() => {\n batch(() => {\n const fieldDic = fieldNames();\n const opts = getOptions(local.options, fieldDic);\n\n setOptions(opts);\n setKv(getKv(opts, fieldDic));\n });\n });\n\n function openChange(next: boolean | null) {\n if (!other.disabled) {\n if (isFunction(local.onOpenChange)) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n function click(e: MouseEvent) {\n if (\n (e.target as Element)?.parentElement ===\n (ref?.parentNode?.parentNode as Document)?.activeElement\n ) {\n openChange(!untrack(open));\n }\n }\n function onChange(val: (string | number)[] | string | number | undefined, item: MenuOption) {\n if (local.value === void 0) {\n setValue(val ? (Array.isArray(val) ? val : [val]) : []);\n }\n if (isFunction(local.onChange)) {\n local.onChange(val, item);\n }\n }\n function keyDown({ key }: { key: string }) {\n switch (key) {\n case 'ArrowDown':\n // console.log(key);\n // Object.keys(state.current.kv).indexOf(state.current.value)\n break;\n case 'ArrowUp':\n break;\n case 'Backspace':\n if (other.multiple) {\n const old = [...untrack(value)];\n\n old.splice(-1, 1);\n onChange(old, untrack(kv)[untrack(value).length - 1]);\n } else {\n onChange(void 0, untrack(kv)[untrack(value)[0]]);\n }\n break;\n case 'Enter':\n openChange(!untrack(open));\n break;\n case 'Escape':\n openChange(false);\n break;\n default:\n break;\n }\n }\n function preventDefault(e: Event) {\n e.stopPropagation();\n e.preventDefault();\n }\n function deleteValue(v: string | number, e: CustomEvent) {\n preventDefault(e);\n onChange(untrack(value).filter((old) => old !== v) as never, untrack(kv)[v]);\n }\n function focus(e: FocusEvent | MouseEvent) {\n preventDefault(e);\n openChange(true);\n }\n function blur(e: FocusEvent) {\n preventDefault(e);\n if (untrack(open)) {\n openChange(false);\n }\n }\n\n createEffect(() => {\n batch(() => {\n if (local.open !== untrack(open) && local.open !== void 0) {\n setOpen(local.open);\n }\n if (local.value !== void 0 && local.value !== null) {\n setValue(Array.isArray(local.value) ? local.value : [local.value]);\n } else {\n setValue([]);\n }\n });\n });\n onMount(() => {\n if (local.value === void 0) {\n const val = other.defaultValue;\n\n setValue(val ? (Array.isArray(val) ? val : [val]) : []);\n }\n });\n createEffect(() => {\n if (local.label) {\n setX(`.label {--x: ${tagsRef?.offsetLeft || 0}px; }`);\n }\n });\n const prefix = createMemo(() =>\n isFunction(local.prefixIcon) ? (local.prefixIcon() as JSX.Element) : local.prefixIcon,\n );\n const label = createMemo(() =>\n isFunction(local.label) ? (local.label() as JSX.Element) : local.label,\n );\n const suffix = createMemo(() =>\n isFunction(local.suffixIcon) ? (local.suffixIcon() as JSX.Element) : local.suffixIcon,\n );\n\n return (\n <Dropdown\n placement=\"left\"\n css={style + x() + (local.css || '')}\n trigger=\"none\"\n items={options()}\n value={value() as unknown as string}\n onChange={onChange}\n open={open()}\n onOpenChange={openChange}\n {...other}\n >\n <div\n ref={ref}\n class=\"select\"\n tabindex={other.disabled ? -1 : 0}\n onKeyDown={keyDown}\n onFocus={focus}\n onBlur={blur}\n aria-disabled={other.disabled}\n >\n <Show when={prefix()}>\n <span class=\"prefix\">{prefix()}</span>\n </Show>\n <Show when={label()}>\n <label class=\"label\">{label()}</label>\n </Show>\n <div class=\"tags\" ref={tagsRef} onMouseDown={click}>\n <Show\n when={other.multiple}\n fallback={\n <Show\n when={value().length}\n fallback={\n <Show when={local.placeholder}>\n <span class=\"placeholder\">{local.placeholder}</span>\n </Show>\n }\n >\n <span\n class=\"value\"\n classList={{\n opacity: !!open(),\n }}\n >\n {kv()[value()[0]]?.[fieldNames().label] || value()[0]}\n </span>\n </Show>\n }\n >\n <For\n each={value()}\n fallback={\n <Show when={local.placeholder}>\n <span class=\"placeholder\">{local.placeholder}</span>\n </Show>\n }\n >\n {(v) => (\n <n-tag\n class=\"tag\"\n classList={{\n opacity: !!open(),\n }}\n type={kv()[v]?.type || 'primary'}\n color={kv()[v]?.color}\n icon={kv()[v]?.icon}\n close-icon={!other.disabled && !kv()[v]?.disabled}\n onClose={deleteValue.bind(null, v)}\n disabled={other.disabled || kv()[v]?.disabled}\n >\n {kv()[v]?.[fieldNames().label] || v}\n </n-tag>\n )}\n </For>\n </Show>\n </div>\n <Show when={suffix()}>\n <span class=\"suffix\">{suffix()}</span>\n </Show>\n </div>\n </Dropdown>\n );\n}\n\n/** 通用API */\ninterface SelectBaseProps {\n /** 占位符 */\n placeholder?: string;\n /** 选项 */\n options?: (MenuOption | string | number)[];\n /** 标题 */\n label?: JSX.Element | (() => JSX.Element | (() => JSX.Element));\n /** 前缀图标 */\n prefixIcon?: JSX.Element | (() => JSX.Element | (() => JSX.Element));\n /** 后缀图标 */\n suffixIcon?: JSX.Element | (() => JSX.Element | (() => JSX.Element));\n style?: Record<string, string | number>;\n}\n\n/** 单选 */\nexport interface SelectProps extends Omit<DropdownProps, 'items' | 'children'>, SelectBaseProps {\n /** 值 */\n value?: string | number;\n}\n\n/** 多选 */\nexport interface SelectMultipleProps\n extends Omit<DropdownMultipleProps, 'items' | 'children'>,\n SelectBaseProps {\n /** 值\n * @default []\n */\n value?: (string | number)[];\n}\nexport type SelectElement = CustomElement<SelectProps, 'onChange' | 'onOpenChange'>;\nexport type SelectMultipleElement = CustomElement<SelectMultipleProps, 'onChange' | 'onOpenChange'>;\n\ncustomElement<SelectProps>(\n 'n-select',\n {\n ...defaultProps,\n options: [],\n label: void 0,\n placeholder: '请选择',\n dropdownMatchSelectWidth: true,\n prefixIcon: void 0,\n suffixIcon: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onChange(key: string | number, item: MenuOption) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [key, item],\n }),\n );\n },\n onOpenChange(open: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: open,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('options');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return <Select {...props} />;\n },\n);\nexport default Select;\n"],"names":["Select","props","ref","tagsRef","local","other","splitProps","open","setOpen","createSignal","value","setValue","x","setX","options","setOptions","kv","setKv","fieldNames","createMemo","Object","assign","FieldName","openChange","next","disabled","isFunction","onOpenChange","click","e","target","parentElement","parentNode","activeElement","untrack","onChange","val","item","Array","isArray","keyDown","key","multiple","old","splice","length","preventDefault","stopPropagation","deleteValue","v","filter","focus","blur","createEffect","batch","fieldDic","opts","getOptions","getKv","arr","optKv","i","len","_options","_children","children","onMount","defaultValue","label","offsetLeft","prefix","prefixIcon","suffix","suffixIcon","Dropdown","style","css","Show","placeholder","For","bind","type","color","icon","customElement","defaultProps","dropdownMatchSelectWidth","_","opt","el","element","mergeProps","dispatchEvent","CustomEvent","detail","removeAttribute"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/select/index.tsx"],"sourcesContent":["import {\n batch,\n createEffect,\n createMemo,\n createSignal,\n For,\n mergeProps,\n onMount,\n Show,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement, DropdownMultipleProps, DropdownProps, MenuOption } from '..';\nimport { FieldName } from '../basic-config';\nimport Dropdown, { defaultProps } from '../dropdown';\nimport getOptions from '../get-options';\n\nimport { style } from './style';\n\nimport '../tag';\n\nfunction Select(props: SelectProps) {\n const [local, other] = splitProps(props, [\n 'css',\n 'value',\n 'onChange',\n 'open',\n 'onOpenChange',\n 'label',\n 'prefixIcon',\n 'suffixIcon',\n 'placeholder',\n 'trigger',\n 'options',\n ]);\n let ref: HTMLInputElement | undefined;\n let tagsRef: HTMLDivElement | undefined;\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const [x, setX] = createSignal<string>('');\n const [options, setOptions] = createSignal<MenuOption[]>([]);\n const [kv, setKv] = createSignal<Record<string, MenuOption | undefined>>({});\n\n const fieldNames = createMemo(() => Object.assign({}, FieldName, other.fieldNames));\n\n function getKv(arr: MenuOption[], fieldDic: typeof FieldName) {\n const optKv: Record<string, MenuOption> = {};\n\n for (let i = 0, len = arr.length; i < len; i++) {\n const item = arr[i];\n const _options = item[fieldDic.options];\n\n optKv[item[fieldDic.value]!] = item;\n if (Array.isArray(_options)) {\n Object.assign(optKv, getKv(_options as MenuOption[], fieldDic));\n }\n const _children = item[fieldDic.children];\n\n optKv[item[fieldDic.value]!] = item;\n if (Array.isArray(_children)) {\n Object.assign(optKv, getKv(_children as MenuOption[], fieldDic));\n }\n }\n return optKv;\n }\n\n createEffect(() => {\n batch(() => {\n const fieldDic = fieldNames();\n const opts = getOptions(local.options, fieldDic);\n\n setOptions(opts);\n setKv(getKv(opts, fieldDic));\n });\n });\n\n function openChange(next: boolean | null) {\n if (!other.disabled) {\n if (isFunction(local.onOpenChange)) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n function click(e: MouseEvent) {\n if (\n (e.target as Element | null)?.parentElement ===\n (ref?.parentNode?.parentNode as Document | null)?.activeElement\n ) {\n openChange(!untrack(open));\n }\n }\n function onChange(val: (string | number)[] | string | number | undefined, item?: MenuOption) {\n if (local.value === void 0) {\n setValue(val ? (Array.isArray(val) ? val : [val]) : []);\n }\n if (isFunction(local.onChange)) {\n local.onChange(val, item);\n }\n }\n function keyDown({ key }: { key: string }) {\n switch (key) {\n case 'ArrowDown':\n // console.log(key);\n // Object.keys(state.current.kv).indexOf(state.current.value)\n break;\n case 'ArrowUp':\n break;\n case 'Backspace':\n if (other.multiple) {\n const old = [...untrack(value)];\n\n old.splice(-1, 1);\n onChange(old, untrack(kv)[untrack(value).length - 1]);\n } else {\n onChange(void 0, untrack(kv)[untrack(value)[0]]);\n }\n break;\n case 'Enter':\n openChange(!untrack(open));\n break;\n case 'Escape':\n openChange(false);\n break;\n default:\n break;\n }\n }\n function preventDefault(e: Event) {\n e.stopPropagation();\n e.preventDefault();\n }\n function deleteValue(v: string | number, e: CustomEvent) {\n preventDefault(e);\n onChange(untrack(value).filter((old) => old !== v) as never, untrack(kv)[v]);\n }\n function focus(e: FocusEvent | MouseEvent) {\n preventDefault(e);\n openChange(true);\n }\n function blur(e: FocusEvent) {\n preventDefault(e);\n if (untrack(open)) {\n openChange(false);\n }\n }\n\n createEffect(() => {\n batch(() => {\n if (local.open !== untrack(open) && local.open !== void 0) {\n setOpen(local.open);\n }\n if (local.value !== void 0 && local.value !== null) {\n setValue(Array.isArray(local.value) ? local.value : [local.value]);\n } else {\n setValue([]);\n }\n });\n });\n onMount(() => {\n if (local.value === void 0) {\n const val = other.defaultValue;\n\n setValue(val ? (Array.isArray(val) ? val : [val]) : []);\n }\n });\n createEffect(() => {\n if (local.label) {\n setX(`.label {--x: ${tagsRef?.offsetLeft || 0}px; }`);\n }\n });\n const prefix = createMemo(() =>\n isFunction(local.prefixIcon) ? (local.prefixIcon() as JSX.Element) : local.prefixIcon,\n );\n const label = createMemo(() =>\n isFunction(local.label) ? (local.label() as JSX.Element) : local.label,\n );\n const suffix = createMemo(() =>\n isFunction(local.suffixIcon) ? (local.suffixIcon() as JSX.Element) : local.suffixIcon,\n );\n\n return (\n <Dropdown\n placement=\"left\"\n css={style + x() + (local.css || '')}\n trigger=\"none\"\n items={options()}\n value={value() as unknown as string}\n onChange={onChange}\n open={open()}\n onOpenChange={openChange}\n {...other}\n >\n <div\n ref={ref}\n class=\"select\"\n tabindex={other.disabled ? -1 : 0}\n onKeyDown={keyDown}\n onFocus={focus}\n onBlur={blur}\n aria-disabled={other.disabled}\n >\n <Show when={prefix()}>\n <span class=\"prefix\">{prefix()}</span>\n </Show>\n <Show when={label()}>\n <label class=\"label\">{label()}</label>\n </Show>\n <div class=\"tags\" ref={tagsRef} onMouseDown={click}>\n <Show\n when={other.multiple}\n fallback={\n <Show\n when={value().length}\n fallback={\n <Show when={local.placeholder}>\n <span class=\"placeholder\">{local.placeholder}</span>\n </Show>\n }\n >\n <span\n class=\"value\"\n classList={{\n opacity: !!open(),\n }}\n >\n {kv()[value()[0]]?.[fieldNames().label] || value()[0]}\n </span>\n </Show>\n }\n >\n <For\n each={value()}\n fallback={\n <Show when={local.placeholder}>\n <span class=\"placeholder\">{local.placeholder}</span>\n </Show>\n }\n >\n {(v) => (\n <n-tag\n class=\"tag\"\n classList={{\n opacity: !!open(),\n }}\n type={kv()[v]?.type || 'primary'}\n color={kv()[v]?.color}\n icon={kv()[v]?.icon}\n close-icon={!other.disabled && !kv()[v]?.disabled}\n onClose={deleteValue.bind(null, v)}\n disabled={other.disabled || kv()[v]?.disabled}\n >\n {kv()[v]?.[fieldNames().label] || v}\n </n-tag>\n )}\n </For>\n </Show>\n </div>\n <Show when={suffix()}>\n <span class=\"suffix\">{suffix()}</span>\n </Show>\n </div>\n </Dropdown>\n );\n}\n\n/** 通用API */\ninterface SelectBaseProps {\n /** 占位符 */\n placeholder?: string;\n /** 选项 */\n options?: (MenuOption | string | number)[];\n /** 标题 */\n label?: JSX.Element | (() => JSX.Element | (() => JSX.Element));\n /** 前缀图标 */\n prefixIcon?: JSX.Element | (() => JSX.Element | (() => JSX.Element));\n /** 后缀图标 */\n suffixIcon?: JSX.Element | (() => JSX.Element | (() => JSX.Element));\n style?: Record<string, string | number>;\n}\n\n/** 单选 */\nexport interface SelectProps extends Omit<DropdownProps, 'items' | 'children'>, SelectBaseProps {\n /** 值 */\n value?: string | number;\n}\n\n/** 多选 */\nexport interface SelectMultipleProps\n extends Omit<DropdownMultipleProps, 'items' | 'children'>,\n SelectBaseProps {\n /** 值\n * @default []\n */\n value?: (string | number)[];\n}\nexport type SelectElement = CustomElement<SelectProps, 'onChange' | 'onOpenChange'>;\nexport type SelectMultipleElement = CustomElement<SelectMultipleProps, 'onChange' | 'onOpenChange'>;\n\ncustomElement<SelectProps>(\n 'n-select',\n {\n ...defaultProps,\n options: [],\n label: void 0,\n placeholder: '请选择',\n dropdownMatchSelectWidth: true,\n prefixIcon: void 0,\n suffixIcon: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onChange(key: string | number, item: MenuOption) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [key, item],\n }),\n );\n },\n onOpenChange(open: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: open,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('options');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return <Select {...props} />;\n },\n);\nexport default Select;\n"],"names":["Select","props","ref","tagsRef","local","other","splitProps","open","setOpen","createSignal","value","setValue","x","setX","options","setOptions","kv","setKv","fieldNames","createMemo","Object","assign","FieldName","openChange","next","disabled","isFunction","onOpenChange","click","e","target","parentElement","parentNode","activeElement","untrack","onChange","val","item","Array","isArray","keyDown","key","multiple","old","splice","length","preventDefault","stopPropagation","deleteValue","v","filter","focus","blur","createEffect","batch","fieldDic","opts","getOptions","getKv","arr","optKv","i","len","_options","_children","children","onMount","defaultValue","label","offsetLeft","prefix","prefixIcon","suffix","suffixIcon","Dropdown","style","css","Show","placeholder","For","bind","type","color","icon","customElement","defaultProps","dropdownMatchSelectWidth","_","opt","el","element","mergeProps","dispatchEvent","CustomEvent","detail","removeAttribute"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ ---
2
+ type: 反馈
3
+ title: 骨架屏
4
+ subtitle: n-skeleton
5
+ icon: 👀
6
+ ---
7
+
8
+ # 骨架屏
9
+
10
+ > 网络较慢,需要长时间等待加载处理的情况下、图文信息内容较多的列表/卡片中、第一次加载数据的时候使用
@@ -0,0 +1,13 @@
1
+ ---
2
+ title: 显示动画
3
+ description: 显示动画
4
+ order: 3
5
+ ---
6
+
7
+ ```html
8
+ <n-skeleton active="true"></n-skeleton>
9
+ ```
10
+
11
+ ```jsx
12
+ <n-skeleton active />
13
+ ```
@@ -0,0 +1,13 @@
1
+ ---
2
+ title: 显示头像
3
+ description: 显示头像
4
+ order: 4
5
+ ---
6
+
7
+ ```html
8
+ <n-skeleton avatar="true"></n-skeleton>
9
+ ```
10
+
11
+ ```jsx
12
+ <n-skeleton avatar />
13
+ ```
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: 最简单的使用
3
+ order: 1
4
+ ---
5
+
6
+ ```html
7
+ <n-skeleton></n-skeleton>
8
+ ```
9
+
10
+ ```jsx
11
+ <n-skeleton />
12
+ ```
@@ -0,0 +1,13 @@
1
+ ---
2
+ title: 自定义行数
3
+ description: 自定义行数
4
+ order: 5
5
+ ---
6
+
7
+ ```html
8
+ <n-skeleton rows="8" title="true" avatar="true"></n-skeleton>
9
+ ```
10
+
11
+ ```jsx
12
+ <n-skeleton rows={8} title avatar />
13
+ ```
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: 显示标题行
3
+ order: 2
4
+ ---
5
+
6
+ ```html
7
+ <n-skeleton title="true"></n-skeleton>
8
+ ```
9
+
10
+ ```jsx
11
+ <n-skeleton title />
12
+ ```
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/skeleton/index.tsx"],"sourcesContent":["import { For, Show, createMemo, mergeProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nconst style = css`\n :host {\n display: block;\n inline-size: 100%;\n }\n\n .skeleton {\n display: flex;\n inline-size: 100%;\n gap: 16px;\n }\n\n .avatar,\n .title,\n .paragraph > div {\n overflow: hidden;\n border-radius: var(--border-radius);\n background: var(--skeleton-bg);\n transition: background-color var(--transition-duration) var(--transition-timing-function);\n }\n\n .avatar {\n border-radius: 50%;\n inline-size: 32px;\n block-size: 32px;\n }\n\n .body {\n flex: 1;\n }\n\n .title {\n margin-block-end: 16px;\n inline-size: 32%;\n block-size: 32px;\n }\n\n .paragraph {\n display: flex;\n padding: 0;\n flex-direction: column;\n gap: 12px;\n\n & > div {\n inline-size: 100%;\n block-size: 16px;\n list-style: none;\n\n &:last-of-type {\n inline-size: 65%;\n }\n }\n }\n\n .active {\n &::after {\n display: block;\n block-size: 100%;\n animation: skeleton-effect 1.4s var(--transition-timing-function) infinite;\n background: var(--skeleton-bg-active);\n content: '';\n transition: background-color var(--transition-duration) var(--transition-timing-function);\n }\n }\n\n @keyframes skeleton-effect {\n to {\n background-position-x: -20%;\n }\n }\n`;\n\nexport interface SkeletonProps {\n /** 自定义样式表 */\n css?: string;\n /** 自定义类名 */\n class?: string;\n /** 行\n * @default 3\n */\n rows?: number;\n /** 显示动画\n * @default false\n */\n active?: boolean;\n /** 显示头像\n * @default false\n */\n avatar?: boolean;\n /** 显示标题\n * @default false\n */\n title?: boolean;\n}\n\nfunction Skeleton(props: SkeletonProps) {\n const { baseStyle, isDark } = theme;\n const rows = createMemo(() => Array(props.rows).fill(0));\n const cssVar = createMemo(() => {\n if (isDark()) {\n return css`\n :host {\n --skeleton-bg: rgb(255 255 255 / 6%);\n --skeleton-bg-active: linear-gradient(\n 100deg,\n rgb(255 255 255 / 5%) 40%,\n rgb(255 255 255 / 15%) 50%,\n rgb(255 255 255 / 5%) 60%\n )\n transparent 180%/200% 100%;\n }\n `;\n }\n\n return css`\n :host {\n --skeleton-bg: rgb(0 0 0 / 6%);\n --skeleton-bg-active: linear-gradient(\n 100deg,\n rgb(0 0 0 / 5%) 40%,\n rgb(0 0 0 / 15%) 50%,\n rgb(0 0 0 / 5%) 60%\n )\n transparent 180%/200% 100%;\n }\n `;\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={cssVar()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <div class={cx('skeleton', props.class)}>\n <Show when={props.avatar}>\n <div\n class=\"avatar\"\n classList={{\n active: props.active,\n }}\n />\n </Show>\n <div class=\"body\">\n <Show when={props.title}>\n <div\n class=\"title\"\n classList={{\n active: props.active,\n }}\n />\n </Show>\n <div class=\"paragraph\">\n <For each={rows()}>\n {() => (\n <div\n classList={{\n active: props.active,\n }}\n />\n )}\n </For>\n </div>\n </div>\n </div>\n </>\n );\n}\n\nexport type SkeletonElement = CustomElement<SkeletonProps>;\ncustomElement<SkeletonProps>(\n 'n-skeleton',\n {\n rows: 3,\n active: void 0,\n avatar: void 0,\n title: void 0,\n css: void 0,\n class: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n rows: el.rows,\n active: el.active,\n avatar: el.avatar,\n title: el.title,\n css: el.css,\n },\n _,\n );\n\n return <Skeleton {...props} />;\n },\n);\nexport default Skeleton;\n"],"names":["style","css","Skeleton","props","baseStyle","isDark","theme","rows","createMemo","Array","fill","cssVar","Show","avatar","active","title","For","cx","class","customElement","_","opt","el","element","mergeProps"],"mappings":"wGA4MA,+CAAA,+CA5MkD,sBAC1B,yBACM,8BACZ,gRAGZA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsElB,CAAC,CAyBD,SAASC,EAASC,CAAoB,EACpC,GAAM,CAAEC,UAAAA,CAAS,CAAEC,OAAAA,CAAM,CAAE,CAAGC,SAAK,CAC7BC,EAAOC,GAAAA,YAAU,EAAC,IAAMC,MAAMN,EAAMI,IAAI,EAAEG,IAAI,CAAC,IAC/CC,EAASH,GAAAA,YAAU,EAAC,IACxB,AAAIH,IACKJ,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;MAWX,CAAC,CAGIA,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;IAWX,CAAC,EAGH,oEAEwBG,wEACAO,gDACAX,8BACnBY,MAAI,oBAAOT,EAAMF,GAAG,wEACCA,GAAAA,KAAG,EAACE,EAAMF,GAAG,iGAGhCW,MAAI,oBAAOT,EAAMU,MAAM,gFAIVV,EAAMW,MAAM,gDAKvBF,MAAI,oBAAOT,EAAMY,KAAK,gFAITZ,EAAMW,MAAM,gDAKvBE,KAAG,oBAAOT,cACR,yEAGaJ,EAAMW,MAAM,+CAvBtBG,GAAAA,IAAE,EAAC,WAAYd,EAAMe,KAAK,UAiC5C,CAGAC,GAAAA,eAAa,EACX,aACA,CACEZ,KAAM,EACNO,OAAQ,KAAK,EACbD,OAAQ,KAAK,EACbE,MAAO,KAAK,EACZd,IAAK,KAAK,EACViB,MAAO,KAAK,CACd,EACA,CAACE,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChBpB,EAAQqB,GAAAA,YAAU,EACtB,CACEjB,KAAMe,EAAGf,IAAI,CACbO,OAAQQ,EAAGR,MAAM,CACjBD,OAAQS,EAAGT,MAAM,CACjBE,MAAOO,EAAGP,KAAK,CACfd,IAAKqB,EAAGrB,GAAG,AACb,EACAmB,GAGF,4BAAQlB,EAAaC,EACvB,SAEF,EAAeD"}
1
+ {"version":3,"sources":["../../components/skeleton/index.tsx"],"sourcesContent":["import { createMemo, For, mergeProps, Show } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport theme from '../theme';\n\nconst style = css`\n :host {\n display: block;\n inline-size: 100%;\n }\n\n .skeleton {\n display: flex;\n inline-size: 100%;\n gap: 16px;\n }\n\n .avatar,\n .title,\n .paragraph > div {\n overflow: hidden;\n border-radius: var(--border-radius);\n background: var(--skeleton-bg);\n transition: background-color var(--transition-duration) var(--transition-timing-function);\n }\n\n .avatar {\n border-radius: 50%;\n inline-size: 32px;\n block-size: 32px;\n }\n\n .body {\n flex: 1;\n }\n\n .title {\n margin-block-end: 16px;\n inline-size: 32%;\n block-size: 32px;\n }\n\n .paragraph {\n display: flex;\n padding: 0;\n flex-direction: column;\n gap: 12px;\n\n & > div {\n inline-size: 100%;\n block-size: 16px;\n list-style: none;\n\n &:last-of-type {\n inline-size: 65%;\n }\n }\n }\n\n .active {\n &::after {\n display: block;\n block-size: 100%;\n animation: skeleton-effect 1.4s var(--transition-timing-function) infinite;\n background: var(--skeleton-bg-active);\n content: '';\n transition: background-color var(--transition-duration) var(--transition-timing-function);\n }\n }\n\n @keyframes skeleton-effect {\n to {\n background-position-x: -20%;\n }\n }\n`;\n\nexport interface SkeletonProps {\n /** 自定义样式表 */\n css?: string;\n /** 自定义类名 */\n class?: string;\n /** 行\n * @default 3\n */\n rows?: number;\n /** 显示动画\n * @default false\n */\n active?: boolean;\n /** 显示头像\n * @default false\n */\n avatar?: boolean;\n /** 显示标题\n * @default false\n */\n title?: boolean;\n}\n\nfunction Skeleton(props: SkeletonProps) {\n const { baseStyle, isDark } = theme;\n const rows = createMemo(() => Array(props.rows).fill(0));\n const cssVar = createMemo(() => {\n if (isDark()) {\n return css`\n :host {\n --skeleton-bg: rgb(255 255 255 / 6%);\n --skeleton-bg-active: linear-gradient(\n 100deg,\n rgb(255 255 255 / 5%) 40%,\n rgb(255 255 255 / 15%) 50%,\n rgb(255 255 255 / 5%) 60%\n )\n transparent 180%/200% 100%;\n }\n `;\n }\n\n return css`\n :host {\n --skeleton-bg: rgb(0 0 0 / 6%);\n --skeleton-bg-active: linear-gradient(\n 100deg,\n rgb(0 0 0 / 5%) 40%,\n rgb(0 0 0 / 15%) 50%,\n rgb(0 0 0 / 5%) 60%\n )\n transparent 180%/200% 100%;\n }\n `;\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={cssVar()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <div class={cx('skeleton', props.class)}>\n <Show when={props.avatar}>\n <div\n class=\"avatar\"\n classList={{\n active: props.active,\n }}\n />\n </Show>\n <div class=\"body\">\n <Show when={props.title}>\n <div\n class=\"title\"\n classList={{\n active: props.active,\n }}\n />\n </Show>\n <div class=\"paragraph\">\n <For each={rows()}>\n {() => (\n <div\n classList={{\n active: props.active,\n }}\n />\n )}\n </For>\n </div>\n </div>\n </div>\n </>\n );\n}\n\nexport type SkeletonElement = CustomElement<SkeletonProps>;\ncustomElement<SkeletonProps>(\n 'n-skeleton',\n {\n rows: 3,\n active: void 0,\n avatar: void 0,\n title: void 0,\n css: void 0,\n class: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n rows: el.rows,\n active: el.active,\n avatar: el.avatar,\n title: el.title,\n css: el.css,\n },\n _,\n );\n\n return <Skeleton {...props} />;\n },\n);\nexport default Skeleton;\n"],"names":["style","css","Skeleton","props","baseStyle","isDark","theme","rows","createMemo","Array","fill","cssVar","Show","avatar","active","title","For","cx","class","customElement","_","opt","el","element","mergeProps"],"mappings":"wGA6MA,+CAAA,+CA7MkD,sBAC1B,yBACM,8BAGZ,gRAEZA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsElB,CAAC,CAyBD,SAASC,EAASC,CAAoB,EACpC,GAAM,CAAEC,UAAAA,CAAS,CAAEC,OAAAA,CAAM,CAAE,CAAGC,SAAK,CAC7BC,EAAOC,GAAAA,YAAU,EAAC,IAAMC,MAAMN,EAAMI,IAAI,EAAEG,IAAI,CAAC,IAC/CC,EAASH,GAAAA,YAAU,EAAC,IACxB,AAAIH,IACKJ,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;MAWX,CAAC,CAGIA,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;IAWX,CAAC,EAGH,oEAEwBG,wEACAO,gDACAX,8BACnBY,MAAI,oBAAOT,EAAMF,GAAG,wEACCA,GAAAA,KAAG,EAACE,EAAMF,GAAG,iGAGhCW,MAAI,oBAAOT,EAAMU,MAAM,gFAIVV,EAAMW,MAAM,gDAKvBF,MAAI,oBAAOT,EAAMY,KAAK,gFAITZ,EAAMW,MAAM,gDAKvBE,KAAG,oBAAOT,cACR,yEAGaJ,EAAMW,MAAM,+CAvBtBG,GAAAA,IAAE,EAAC,WAAYd,EAAMe,KAAK,UAiC5C,CAGAC,GAAAA,eAAa,EACX,aACA,CACEZ,KAAM,EACNO,OAAQ,KAAK,EACbD,OAAQ,KAAK,EACbE,MAAO,KAAK,EACZd,IAAK,KAAK,EACViB,MAAO,KAAK,CACd,EACA,CAACE,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChBpB,EAAQqB,GAAAA,YAAU,EACtB,CACEjB,KAAMe,EAAGf,IAAI,CACbO,OAAQQ,EAAGR,MAAM,CACjBD,OAAQS,EAAGT,MAAM,CACjBE,MAAOO,EAAGP,KAAK,CACfd,IAAKqB,EAAGrB,GAAG,AACb,EACAmB,GAGF,4BAAQlB,EAAaC,EACvB,SAEF,EAAeD"}
@@ -0,0 +1,10 @@
1
+ ---
2
+ type: 反馈
3
+ title: 加载中
4
+ subtitle: n-spin
5
+ icon: ✲
6
+ ---
7
+
8
+ # Loading 加载中
9
+
10
+ > 加载中
@@ -0,0 +1,67 @@
1
+ ---
2
+ title: 基本使用
3
+ order: 1
4
+ ---
5
+
6
+ ```html
7
+ 加载:<n-switch checked="true"></n-switch> 边框:<n-switch checked="true"></n-switch>
8
+ <br />
9
+ <n-spin spin="true" style="border: 1px solid #ccc;">
10
+ <n-highlight-text
11
+ text="朱敦儒的词作语言流畅,清新自然。他的词风可分为三个阶段:早年词风浓艳丽巧;
12
+ 中年的词风激昂慷慨;闲居后词风婉明清畅。朱敦儒对南宋词坛也产生了 一些积极的影响。
13
+ 他将一生的际遇和心态变化都赋于词中,给后人以直接的启迪和影响。
14
+ 辛弃疾《念奴娇》词就明确说是“效朱希真体”,陆游年青时曾受知于朱敦儒,为人与作词都受朱敦儒的熏陶,
15
+ 他的名作《卜算子·咏梅》即与朱敦儒的《卜算子·古涧一枝梅》风格相似。"
16
+ highlight="语言流畅"
17
+ ></n-highlight-text>
18
+ </n-spin>
19
+ <script>
20
+ const el = container.querySelectorAll('n-switch');
21
+ const spinEl = container.querySelector('n-spin');
22
+
23
+ el[0].onchange = function (e) {
24
+ spinEl.spin = e.detail;
25
+ };
26
+ el[1].onchange = function (e) {
27
+ spinEl.style.border = e.detail ? '1px solid #ccc' : 'none';
28
+ };
29
+ </script>
30
+ ```
31
+
32
+ ```jsx
33
+ let el;
34
+ const text = `朱敦儒的词作语言流畅,清新自然。他的词风可分为三个阶段:早年词风浓艳丽巧;
35
+ 中年的词风激昂慷慨;闲居后词风婉明清畅。朱敦儒对南宋词坛也产生了 一些积极的影响。
36
+ 他将一生的际遇和心态变化都赋于词中,给后人以直接的启迪和影响。
37
+ 辛弃疾《念奴娇》词就明确说是“效朱希真体”,陆游年青时曾受知于朱敦儒,为人与作词都受朱敦儒的熏陶,
38
+ 他的名作《卜算子·咏梅》即与朱敦儒的《卜算子·古涧一枝梅》风格相似。`;
39
+ render(
40
+ <>
41
+ 加载:
42
+ <n-switch
43
+ checked
44
+ onChange={(e) => {
45
+ el.spin = e.detail;
46
+ }}
47
+ />
48
+ 边框:
49
+ <n-switch
50
+ checked
51
+ onChange={(e) => {
52
+ el.style.border = e.detail ? '1px solid #ccc' : 'none';
53
+ }}
54
+ />
55
+ <br />
56
+ <n-spin
57
+ ref={(e) => (el = e)}
58
+ spin
59
+ style={{
60
+ border: '1px solid #ccc',
61
+ }}
62
+ >
63
+ <n-highlight-text text={text} highlight="《卜算子·咏梅》" />
64
+ </n-spin>
65
+ </>
66
+ );
67
+ ```
package/lib/spin/index.js CHANGED
@@ -43,8 +43,8 @@
43
43
  text-align: center;
44
44
  inline-size: 16px;
45
45
  block-size: 16px;
46
- inset-block: 0 0;
47
- inset-inline: 0 0;
46
+ inset-block: 0;
47
+ inset-inline: 0;
48
48
  box-sizing: border-box;
49
49
  line-height: 1;
50
50
  content: '';
@@ -61,5 +61,5 @@
61
61
  transform: rotate(360deg);
62
62
  }
63
63
  }
64
- `;function d(e){let{baseStyle:r}=s.default;return[(()=>{let e=o(),i=e.firstChild;return(0,t.effect)(()=>i.data=r()),e})(),(()=>{let e=l();return e.textContent=a,e})(),(0,t.createComponent)(i.Show,{get when(){return e.css},get children(){let i=o(),r=i.firstChild;return(0,t.effect)(()=>r.data=(0,n.css)(e.css)),i}}),(()=>{let i=c(),r=i.firstChild;return(0,t.insert)(r,()=>e.children),(0,t.effect)(r=>{let s=(0,n.cx)("spin",e.class),o=!!e.spin;return s!==r._v$&&(0,t.className)(i,r._v$=s),o!==r._v$2&&i.classList.toggle("spining",r._v$2=o),r},{_v$:void 0,_v$2:void 0}),i})()]}(0,r.customElement)("n-spin",{class:void 0,css:void 0,spin:void 0,children:void 0},(e,n)=>{let r=[...(n.element?.childNodes||[]).values()],[,s]=(0,i.splitProps)(e,["children"]);return(0,i.createEffect)(()=>{n.element?.replaceChildren()}),(0,t.createComponent)(d,(0,t.mergeProps)(s,{children:r}))});const p=d;
64
+ `;function d(e){let{baseStyle:r}=s.default;return[(()=>{let e=o(),i=e.firstChild;return(0,t.effect)(()=>i.data=r()),e})(),(()=>{let e=l();return e.textContent=a,e})(),(0,t.createComponent)(i.Show,{get when(){return e.css},get children(){let i=o(),r=i.firstChild;return(0,t.effect)(()=>r.data=(0,n.css)(e.css)),i}}),(()=>{let i=c(),r=i.firstChild;return(0,t.insert)(r,()=>e.children),(0,t.effect)(r=>{let s=(0,n.cx)("spin",e.class),o=!!e.spin;return s!==r._v$&&(0,t.className)(i,r._v$=s),o!==r._v$2&&i.classList.toggle("spining",r._v$2=o),r},{_v$:void 0,_v$2:void 0}),i})()]}(0,r.customElement)("n-spin",{class:void 0,css:void 0,spin:void 0,children:void 0},(e,n)=>{let r=[...(n.element.childNodes||[]).values()],[,s]=(0,i.splitProps)(e,["children"]);return(0,i.createEffect)(()=>{n.element.replaceChildren()}),(0,t.createComponent)(d,(0,t.mergeProps)(s,{children:r}))});const p=d;
65
65
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/spin/index.tsx"],"sourcesContent":["import { Show, createEffect, splitProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nconst style = css`\n :host {\n display: inline-block;\n box-sizing: border-box;\n }\n\n .spin {\n inline-size: fit-content;\n inline-size: 100%;\n block-size: 100%;\n min-inline-size: 16px;\n min-block-size: 16px;\n position: relative;\n box-sizing: border-box;\n }\n\n .content {\n display: flex;\n opacity: 1;\n transition: opacity var(--transition-duration);\n }\n\n .spining {\n cursor: not-allowed;\n\n .content {\n opacity: 0.3;\n pointer-events: none;\n user-select: none;\n filter: blur(4px);\n }\n\n &::before {\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n margin: auto;\n border: 1px solid;\n border-color: var(--text-secondary) transparent;\n border-radius: 50%;\n font-size: large;\n text-align: center;\n inline-size: 16px;\n block-size: 16px;\n inset-block: 0 0;\n inset-inline: 0 0;\n box-sizing: border-box;\n line-height: 1;\n content: '';\n animation: spin-rotate-effect 1s infinite;\n }\n }\n\n @keyframes spin-rotate-effect {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\nexport interface SpinProps {\n /** 自定义样式表 */\n css?: string;\n /** 自定义类名 */\n class?: string;\n /** 加载状态 */\n spin?: boolean;\n /** 内容 */\n children?: JSX.Element | JSX.Element[];\n}\n\nfunction Spin(props: SpinProps) {\n const { baseStyle } = theme;\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <div\n class={cx('spin', props.class)}\n classList={{\n spining: props.spin,\n }}\n >\n <div class=\"content\">{props.children}</div>\n </div>\n </>\n );\n}\n\nexport type SpinElement = CustomElement<SpinProps>;\n\ncustomElement<SpinProps>(\n 'n-spin',\n { class: void 0, css: void 0, spin: void 0, children: void 0 },\n (_, opt) => {\n const childNodes = (opt.element?.childNodes as NodeList) || [];\n const nodes = [...childNodes.values()];\n const [, props] = splitProps(_, ['children']);\n\n createEffect(() => {\n opt.element?.replaceChildren();\n });\n return <Spin {...props}>{nodes}</Spin>;\n },\n);\n\nexport default Spin;\n"],"names":["style","css","Spin","props","baseStyle","theme","Show","children","cx","class","spin","customElement","_","opt","nodes","childNodes","element","values","splitProps","createEffect","replaceChildren"],"mappings":"wGAyHA,+CAAA,+CAzH+C,sBACvB,yBACM,8BACZ,iJAGZA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DlB,CAAC,CAaD,SAASC,EAAKC,CAAgB,EAC5B,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CAE3B,oEAEwBD,gDACAJ,8BACnBM,MAAI,oBAAOH,EAAMF,GAAG,wEACCA,GAAAA,KAAG,EAACE,EAAMF,GAAG,gEAQXE,EAAMI,QAAQ,yBAL7BC,GAAAA,IAAE,EAAC,OAAQL,EAAMM,KAAK,MAElBN,EAAMO,IAAI,oIAO7B,CAIAC,GAAAA,eAAa,EACX,SACA,CAAEF,MAAO,KAAK,EAAGR,IAAK,KAAK,EAAGS,KAAM,KAAK,EAAGH,SAAU,KAAK,CAAE,EAC7D,CAACK,EAAGC,KAEF,IAAMC,EAAQ,IAAIC,AADC,CAAA,AAACF,EAAIG,OAAO,EAAED,YAA2B,EAAE,AAAD,EAChCE,MAAM,GAAG,CAChC,EAAGd,EAAM,CAAGe,GAAAA,YAAU,EAACN,EAAG,CAAC,WAAW,EAK5C,MAHAO,GAAAA,cAAY,EAAC,KACXN,EAAIG,OAAO,EAAEI,iBACf,yBACQlB,mBAASC,YAAQW,IAC3B,SAGF,EAAeZ"}
1
+ {"version":3,"sources":["../../components/spin/index.tsx"],"sourcesContent":["import { createEffect, Show, splitProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport theme from '../theme';\n\nconst style = css`\n :host {\n display: inline-block;\n box-sizing: border-box;\n }\n\n .spin {\n inline-size: fit-content;\n inline-size: 100%;\n block-size: 100%;\n min-inline-size: 16px;\n min-block-size: 16px;\n position: relative;\n box-sizing: border-box;\n }\n\n .content {\n display: flex;\n opacity: 1;\n transition: opacity var(--transition-duration);\n }\n\n .spining {\n cursor: not-allowed;\n\n .content {\n opacity: 0.3;\n pointer-events: none;\n user-select: none;\n filter: blur(4px);\n }\n\n &::before {\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n margin: auto;\n border: 1px solid;\n border-color: var(--text-secondary) transparent;\n border-radius: 50%;\n font-size: large;\n text-align: center;\n inline-size: 16px;\n block-size: 16px;\n inset-block: 0;\n inset-inline: 0;\n box-sizing: border-box;\n line-height: 1;\n content: '';\n animation: spin-rotate-effect 1s infinite;\n }\n }\n\n @keyframes spin-rotate-effect {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\nexport interface SpinProps {\n /** 自定义样式表 */\n css?: string;\n /** 自定义类名 */\n class?: string;\n /** 加载状态 */\n spin?: boolean;\n /** 内容 */\n children?: JSX.Element | JSX.Element[];\n}\n\nfunction Spin(props: SpinProps) {\n const { baseStyle } = theme;\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <div\n class={cx('spin', props.class)}\n classList={{\n spining: props.spin,\n }}\n >\n <div class=\"content\">{props.children}</div>\n </div>\n </>\n );\n}\n\nexport type SpinElement = CustomElement<SpinProps>;\n\ncustomElement<SpinProps>(\n 'n-spin',\n { class: void 0, css: void 0, spin: void 0, children: void 0 },\n (_, opt) => {\n const childNodes = (opt.element.childNodes as NodeList) || [];\n const nodes = [...childNodes.values()];\n const [, props] = splitProps(_, ['children']);\n\n createEffect(() => {\n opt.element.replaceChildren();\n });\n return <Spin {...props}>{nodes}</Spin>;\n },\n);\n\nexport default Spin;\n"],"names":["style","css","Spin","props","baseStyle","theme","Show","children","cx","class","spin","customElement","_","opt","nodes","childNodes","element","values","splitProps","createEffect","replaceChildren"],"mappings":"wGA0HA,+CAAA,+CA1H+C,sBACvB,yBACM,8BAGZ,iJAEZA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DlB,CAAC,CAaD,SAASC,EAAKC,CAAgB,EAC5B,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CAE3B,oEAEwBD,gDACAJ,8BACnBM,MAAI,oBAAOH,EAAMF,GAAG,wEACCA,GAAAA,KAAG,EAACE,EAAMF,GAAG,gEAQXE,EAAMI,QAAQ,yBAL7BC,GAAAA,IAAE,EAAC,OAAQL,EAAMM,KAAK,MAElBN,EAAMO,IAAI,oIAO7B,CAIAC,GAAAA,eAAa,EACX,SACA,CAAEF,MAAO,KAAK,EAAGR,IAAK,KAAK,EAAGS,KAAM,KAAK,EAAGH,SAAU,KAAK,CAAE,EAC7D,CAACK,EAAGC,KAEF,IAAMC,EAAQ,IAAIC,AADC,CAAA,AAACF,EAAIG,OAAO,CAACD,UAAU,EAAiB,EAAE,AAAD,EAC/BE,MAAM,GAAG,CAChC,EAAGd,EAAM,CAAGe,GAAAA,YAAU,EAACN,EAAG,CAAC,WAAW,EAK5C,MAHAO,GAAAA,cAAY,EAAC,KACXN,EAAIG,OAAO,CAACI,eAAe,EAC7B,yBACQlB,mBAASC,YAAQW,IAC3B,SAGF,EAAeZ"}
@@ -0,0 +1,10 @@
1
+ ---
2
+ type: 数据录入
3
+ title: 开关
4
+ subtitle: n-switch
5
+ icon: 🗝️
6
+ ---
7
+
8
+ # Switch 开关
9
+
10
+ > 在两种状态之间的切换的选择器
@@ -0,0 +1,24 @@
1
+ ---
2
+ title: 基本使用
3
+ description: 最简单的使用方式
4
+ order: 1
5
+ ---
6
+
7
+ ```html
8
+ <n-switch></n-switch>
9
+ <script>
10
+ const el = container.querySelector('n-switch');
11
+
12
+ el.onchange = function (e) {
13
+ console.log('html', e.detail);
14
+ };
15
+ </script>
16
+ ```
17
+
18
+ ```jsx
19
+ <n-switch
20
+ onChange={(e) => {
21
+ console.log('jsx', e.detail);
22
+ }}
23
+ />
24
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ title: 文字描述
3
+ description: 给按钮添加文字描述
4
+ order: 2
5
+ ---
6
+
7
+ ```html
8
+ <n-switch checked-text="ON" un-checked-text="OFF"></n-switch>
9
+ <n-switch checked="true" checked-text="开" un-checked-text="关"></n-switch>
10
+ <n-switch checked-text="启动" un-checked-text="停止"></n-switch>
11
+ ```
12
+
13
+ ```jsx
14
+ <n-switch checked-text="ON" un-checked-text="OFF" />
15
+ <n-switch checked checked-text="开" un-checked-text="关" />
16
+ <n-switch checked-text="启动" un-checked-text="停止" />
17
+ ```
@@ -0,0 +1,15 @@
1
+ ---
2
+ title: 不可用状态
3
+ description: 禁止交互
4
+ order: 3
5
+ ---
6
+
7
+ ```html
8
+ <n-switch checked="true" disabled="true"></n-switch>
9
+ <n-switch checked-text="开" un-checked-text="关" disabled="true"></n-switch>
10
+ ```
11
+
12
+ ```jsx
13
+ <n-switch checked disabled />
14
+ <n-switch checked-text="开" un-checked-text="关" disabled />
15
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ title: 加载状态
3
+ description: 操作仍在执行中,禁止交互
4
+ order: 4
5
+ ---
6
+
7
+ ```html
8
+ <n-switch checked-text="开启" un-checked-text="关闭" checked="true" loading="true"></n-switch>
9
+ <n-switch loading="true"></n-switch>
10
+ <n-switch checked-text="开" un-checked-text="关" loading="true"></n-switch>
11
+ ```
12
+
13
+ ```jsx
14
+ <n-switch checked-text="开启" un-checked-text="关闭" checked loading />
15
+ <n-switch loading />
16
+ <n-switch checked-text="开" un-checked-text="关" loading />
17
+ ```
@@ -1,2 +1,2 @@
1
- "use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return v}});const t=require("solid-js/web"),d=require("solid-js"),s=require("@moneko/css"),i=require("solid-element"),n=require("./style"),c=(e=require("../theme"))&&e.__esModule?e:{default:e},r=(0,t.template)("<style> "),l=(0,t.template)("<style>"),o=(0,t.template)("<span>");function a(e){let{baseStyle:i}=c.default,[a,v]=(0,d.createSignal)(!1);function u(){e.disabled||e.loading||(v(e=>!e),e.onChange?.(a()))}function h({key:e}){"Enter"===e&&u()}return(0,d.createEffect)(()=>{v(!!e.checked)}),[(()=>{let e=r(),d=e.firstChild;return(0,t.effect)(()=>d.data=i()),e})(),(()=>{let e=l();return e.textContent=n.style,e})(),(0,t.createComponent)(d.Show,{get when(){return e.css},get children(){let d=r(),i=d.firstChild;return(0,t.effect)(()=>i.data=(0,s.css)(e.css)),d}}),(()=>{let d=o();return(0,t.addEventListener)(d,"keyup",h,!0),(0,t.addEventListener)(d,"click",u,!0),(0,t.effect)(i=>{let n=(0,s.cx)("switch",e.class),c=!!a(),r=!!e.loading,l=e.checkedText,o=e.unCheckedText,v=e.disabled,u=e.disabled||e.loading?-1:0;return n!==i._v$&&(0,t.className)(d,i._v$=n),c!==i._v$2&&d.classList.toggle("checked",i._v$2=c),r!==i._v$3&&d.classList.toggle("loading",i._v$3=r),l!==i._v$4&&(0,t.setAttribute)(d,"text-on",i._v$4=l),o!==i._v$5&&(0,t.setAttribute)(d,"text-off",i._v$5=o),v!==i._v$6&&(0,t.setAttribute)(d,"aria-disabled",i._v$6=v),u!==i._v$7&&(0,t.setAttribute)(d,"tabindex",i._v$7=u),i},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0}),d})()]}(0,i.customElement)("n-switch",{class:void 0,css:void 0,checked:void 0,disabled:void 0,checkedText:void 0,unCheckedText:void 0,loading:!1,onChange:void 0},(e,s)=>{let i=s.element,n=(0,d.mergeProps)({css:i.css,checked:i.checked,disabled:i.disabled,checkedText:i.checkedText,unCheckedText:i.unCheckedText,loading:i.loading,onChange(e){i.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return(0,d.createEffect)(()=>{i.removeAttribute("css")}),(0,t.createComponent)(a,n)});const v=a;(0,t.delegateEvents)(["click","keyup"]);
1
+ "use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return v}});const t=require("solid-js/web"),d=require("solid-js"),s=require("@moneko/css"),i=require("solid-element"),n=(e=require("../theme"))&&e.__esModule?e:{default:e},c=require("./style"),r=(0,t.template)("<style> "),l=(0,t.template)("<style>"),o=(0,t.template)("<span>");function a(e){let{baseStyle:i}=n.default,[a,v]=(0,d.createSignal)(!1);function u(){e.disabled||e.loading||(v(e=>!e),e.onChange?.(a()))}function h({key:e}){"Enter"===e&&u()}return(0,d.createEffect)(()=>{v(!!e.checked)}),[(()=>{let e=r(),d=e.firstChild;return(0,t.effect)(()=>d.data=i()),e})(),(()=>{let e=l();return e.textContent=c.style,e})(),(0,t.createComponent)(d.Show,{get when(){return e.css},get children(){let d=r(),i=d.firstChild;return(0,t.effect)(()=>i.data=(0,s.css)(e.css)),d}}),(()=>{let d=o();return(0,t.addEventListener)(d,"keyup",h,!0),(0,t.addEventListener)(d,"click",u,!0),(0,t.effect)(i=>{let n=(0,s.cx)("switch",e.class),c=!!a(),r=!!e.loading,l=e.checkedText,o=e.unCheckedText,v=e.disabled,u=e.disabled||e.loading?-1:0;return n!==i._v$&&(0,t.className)(d,i._v$=n),c!==i._v$2&&d.classList.toggle("checked",i._v$2=c),r!==i._v$3&&d.classList.toggle("loading",i._v$3=r),l!==i._v$4&&(0,t.setAttribute)(d,"text-on",i._v$4=l),o!==i._v$5&&(0,t.setAttribute)(d,"text-off",i._v$5=o),v!==i._v$6&&(0,t.setAttribute)(d,"aria-disabled",i._v$6=v),u!==i._v$7&&(0,t.setAttribute)(d,"tabindex",i._v$7=u),i},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0}),d})()]}(0,i.customElement)("n-switch",{class:void 0,css:void 0,checked:void 0,disabled:void 0,checkedText:void 0,unCheckedText:void 0,loading:!1,onChange:void 0},(e,s)=>{let i=s.element,n=(0,d.mergeProps)({css:i.css,checked:i.checked,disabled:i.disabled,checkedText:i.checkedText,unCheckedText:i.unCheckedText,loading:i.loading,onChange(e){i.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return(0,d.createEffect)(()=>{i.removeAttribute("css")}),(0,t.createComponent)(a,n)});const v=a;(0,t.delegateEvents)(["click","keyup"]);
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/switch/index.tsx"],"sourcesContent":["import { Show, createEffect, createSignal, mergeProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nexport interface SwitchProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 值 */\n checked?: boolean;\n /** 只读 */\n disabled?: boolean;\n /** 设置 为 true 时的文案 */\n checkedText?: string;\n /** 设置 为 false 时的文案 */\n unCheckedText?: string;\n /** 加载状态 */\n loading?: boolean;\n /** 值修改时的回调方法 */\n onChange?: (val: boolean) => void;\n}\n\nexport type SwitchElement = CustomElement<SwitchProps>;\n\nfunction Switch(props: SwitchProps) {\n const { baseStyle } = theme;\n const [value, setValue] = createSignal(false);\n\n function change() {\n if (!props.disabled && !props.loading) {\n setValue((prev) => !prev);\n props.onChange?.(value());\n }\n }\n\n function onKeyUp({ key }: { key: string }) {\n if (key === 'Enter') {\n change();\n }\n }\n\n createEffect(() => {\n setValue(!!props.checked);\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <span\n class={cx('switch', props.class)}\n classList={{\n checked: value(),\n loading: props.loading,\n }}\n text-on={props.checkedText}\n text-off={props.unCheckedText}\n aria-disabled={props.disabled}\n onClick={change}\n onKeyUp={onKeyUp}\n tabindex={props.disabled || props.loading ? -1 : 0}\n />\n </>\n );\n}\n\ncustomElement<SwitchProps>(\n 'n-switch',\n {\n class: void 0,\n css: void 0,\n checked: void 0,\n disabled: void 0,\n checkedText: void 0,\n unCheckedText: void 0,\n loading: false,\n onChange: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n checked: el.checked,\n disabled: el.disabled,\n checkedText: el.checkedText,\n unCheckedText: el.unCheckedText,\n loading: el.loading,\n onChange(val: boolean) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n });\n return <Switch {...props} />;\n },\n);\nexport default Switch;\n"],"names":["Switch","props","baseStyle","theme","value","setValue","createSignal","change","disabled","loading","prev","onChange","onKeyUp","key","createEffect","checked","style","Show","css","cx","class","checkedText","unCheckedText","customElement","_","opt","el","element","mergeProps","val","dispatchEvent","CustomEvent","detail","removeAttribute"],"mappings":"wGAgHA,+CAAA,+CAhH6D,sBACrC,yBACM,2BACR,wBACJ,6HAwBlB,SAASA,EAAOC,CAAkB,EAChC,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CACrB,CAACC,EAAOC,EAAS,CAAGC,GAAAA,cAAY,EAAC,CAAA,GAEvC,SAASC,IACFN,EAAMO,QAAQ,EAAKP,EAAMQ,OAAO,GACnCJ,EAAS,AAACK,GAAS,CAACA,GACpBT,EAAMU,QAAQ,GAAGP,KAErB,CAEA,SAASQ,EAAQ,CAAEC,IAAAA,CAAG,CAAmB,EAC3B,UAARA,GACFN,GAEJ,CAMA,MAJAO,GAAAA,cAAY,EAAC,KACXT,EAAS,CAAC,CAACJ,EAAMc,OAAO,CAC1B,iEAIwBb,gDACAc,OAAK,6BACxBC,MAAI,oBAAOhB,EAAMiB,GAAG,wEACCA,GAAAA,KAAG,EAACjB,EAAMiB,GAAG,+DAYxBN,uCADAL,6BARFY,GAAAA,IAAE,EAAC,SAAUlB,EAAMmB,KAAK,MAEpBhB,QACAH,EAAMQ,OAAO,GAEfR,EAAMoB,WAAW,GAChBpB,EAAMqB,aAAa,GACdrB,EAAMO,QAAQ,GAGnBP,EAAMO,QAAQ,EAAIP,EAAMQ,OAAO,CAAG,GAAK,gdAIzD,CAEAc,GAAAA,eAAa,EACX,WACA,CACEH,MAAO,KAAK,EACZF,IAAK,KAAK,EACVH,QAAS,KAAK,EACdP,SAAU,KAAK,EACfa,YAAa,KAAK,EAClBC,cAAe,KAAK,EACpBb,QAAS,CAAA,EACTE,SAAU,KAAK,CACjB,EACA,CAACa,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChB1B,EAAQ2B,GAAAA,YAAU,EACtB,CACEV,IAAKQ,EAAGR,GAAG,CACXH,QAASW,EAAGX,OAAO,CACnBP,SAAUkB,EAAGlB,QAAQ,CACrBa,YAAaK,EAAGL,WAAW,CAC3BC,cAAeI,EAAGJ,aAAa,CAC/Bb,QAASiB,EAAGjB,OAAO,CACnBE,SAASkB,CAAY,EACnBH,EAAGI,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBC,OAAQH,CACV,GAEJ,CACF,EACAL,GAMF,MAHAV,GAAAA,cAAY,EAAC,KACXY,EAAGO,eAAe,CAAC,MACrB,yBACQjC,EAAWC,EACrB,SAEF,EAAeD"}
1
+ {"version":3,"sources":["../../components/switch/index.tsx"],"sourcesContent":["import { createEffect, createSignal, mergeProps, Show } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport theme from '../theme';\n\nimport { style } from './style';\n\nexport interface SwitchProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 值 */\n checked?: boolean;\n /** 只读 */\n disabled?: boolean;\n /** 设置 为 true 时的文案 */\n checkedText?: string;\n /** 设置 为 false 时的文案 */\n unCheckedText?: string;\n /** 加载状态 */\n loading?: boolean;\n /** 值修改时的回调方法 */\n onChange?: (val: boolean) => void;\n}\n\nexport type SwitchElement = CustomElement<SwitchProps>;\n\nfunction Switch(props: SwitchProps) {\n const { baseStyle } = theme;\n const [value, setValue] = createSignal(false);\n\n function change() {\n if (!props.disabled && !props.loading) {\n setValue((prev) => !prev);\n props.onChange?.(value());\n }\n }\n\n function onKeyUp({ key }: { key: string }) {\n if (key === 'Enter') {\n change();\n }\n }\n\n createEffect(() => {\n setValue(!!props.checked);\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <span\n class={cx('switch', props.class)}\n classList={{\n checked: value(),\n loading: props.loading,\n }}\n text-on={props.checkedText}\n text-off={props.unCheckedText}\n aria-disabled={props.disabled}\n onClick={change}\n onKeyUp={onKeyUp}\n tabindex={props.disabled || props.loading ? -1 : 0}\n />\n </>\n );\n}\n\ncustomElement<SwitchProps>(\n 'n-switch',\n {\n class: void 0,\n css: void 0,\n checked: void 0,\n disabled: void 0,\n checkedText: void 0,\n unCheckedText: void 0,\n loading: false,\n onChange: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n checked: el.checked,\n disabled: el.disabled,\n checkedText: el.checkedText,\n unCheckedText: el.unCheckedText,\n loading: el.loading,\n onChange(val: boolean) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n });\n return <Switch {...props} />;\n },\n);\nexport default Switch;\n"],"names":["Switch","props","baseStyle","theme","value","setValue","createSignal","change","disabled","loading","prev","onChange","onKeyUp","key","createEffect","checked","style","Show","css","cx","class","checkedText","unCheckedText","customElement","_","opt","el","element","mergeProps","val","dispatchEvent","CustomEvent","detail","removeAttribute"],"mappings":"wGAkHA,+CAAA,+CAlH6D,sBACrC,yBACM,8BAGZ,mDAEI,+FAuBtB,SAASA,EAAOC,CAAkB,EAChC,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CACrB,CAACC,EAAOC,EAAS,CAAGC,GAAAA,cAAY,EAAC,CAAA,GAEvC,SAASC,IACFN,EAAMO,QAAQ,EAAKP,EAAMQ,OAAO,GACnCJ,EAAS,AAACK,GAAS,CAACA,GACpBT,EAAMU,QAAQ,GAAGP,KAErB,CAEA,SAASQ,EAAQ,CAAEC,IAAAA,CAAG,CAAmB,EAC3B,UAARA,GACFN,GAEJ,CAMA,MAJAO,GAAAA,cAAY,EAAC,KACXT,EAAS,CAAC,CAACJ,EAAMc,OAAO,CAC1B,iEAIwBb,gDACAc,OAAK,6BACxBC,MAAI,oBAAOhB,EAAMiB,GAAG,wEACCA,GAAAA,KAAG,EAACjB,EAAMiB,GAAG,+DAYxBN,uCADAL,6BARFY,GAAAA,IAAE,EAAC,SAAUlB,EAAMmB,KAAK,MAEpBhB,QACAH,EAAMQ,OAAO,GAEfR,EAAMoB,WAAW,GAChBpB,EAAMqB,aAAa,GACdrB,EAAMO,QAAQ,GAGnBP,EAAMO,QAAQ,EAAIP,EAAMQ,OAAO,CAAG,GAAK,gdAIzD,CAEAc,GAAAA,eAAa,EACX,WACA,CACEH,MAAO,KAAK,EACZF,IAAK,KAAK,EACVH,QAAS,KAAK,EACdP,SAAU,KAAK,EACfa,YAAa,KAAK,EAClBC,cAAe,KAAK,EACpBb,QAAS,CAAA,EACTE,SAAU,KAAK,CACjB,EACA,CAACa,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChB1B,EAAQ2B,GAAAA,YAAU,EACtB,CACEV,IAAKQ,EAAGR,GAAG,CACXH,QAASW,EAAGX,OAAO,CACnBP,SAAUkB,EAAGlB,QAAQ,CACrBa,YAAaK,EAAGL,WAAW,CAC3BC,cAAeI,EAAGJ,aAAa,CAC/Bb,QAASiB,EAAGjB,OAAO,CACnBE,SAASkB,CAAY,EACnBH,EAAGI,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBC,OAAQH,CACV,GAEJ,CACF,EACAL,GAMF,MAHAV,GAAAA,cAAY,EAAC,KACXY,EAAGO,eAAe,CAAC,MACrB,yBACQjC,EAAWC,EACrB,SAEF,EAAeD"}
@@ -0,0 +1,10 @@
1
+ ---
2
+ type: 数据展示
3
+ title: 数据表格
4
+ subtitle: n-table
5
+ icon: 📈
6
+ ---
7
+
8
+ # Table 数据表格
9
+
10
+ > 当有大量结构化的数据需要展现时, 使用表格可以对数据进行更好的梳理以进行排序、搜索、分页、自定义操作等复杂行为
@@ -0,0 +1,29 @@
1
+ ---
2
+ title: 基本使用
3
+ description: 最简单的使用方式
4
+ ---
5
+
6
+ ```html
7
+ <n-table></n-table>
8
+ <script>
9
+ const el = container.querySelector('n-table');
10
+
11
+ el.columns = { name: '用户名', age: '年龄' };
12
+ el.data = [
13
+ { name: 'user 1', age: 18 },
14
+ { name: 'user 2', age: 19 },
15
+ { name: 'user 3', age: 3 },
16
+ ];
17
+ </script>
18
+ ```
19
+
20
+ ```jsx
21
+ <n-table
22
+ columns={{ name: '用户名', age: '年龄' }}
23
+ data={[
24
+ { name: 'user 1', age: 18 },
25
+ { name: 'user 2', age: 19 },
26
+ { name: 'user 3', age: 3 },
27
+ ]}
28
+ />
29
+ ```
@@ -0,0 +1,29 @@
1
+ ---
2
+ title: 自定义取值
3
+ description: 通过 `key` 指定取值
4
+ ---
5
+
6
+ ```html
7
+ <n-table></n-table>
8
+ <script>
9
+ const el = container.querySelector('n-table');
10
+
11
+ el.columns = { name: '用户名', age: '年龄', 自定义: { key: 'age' } };
12
+ el.data = [
13
+ { name: 'user 1', age: 18 },
14
+ { name: 'user 2', age: 19 },
15
+ { name: 'user 3', age: 3 },
16
+ ];
17
+ </script>
18
+ ```
19
+
20
+ ```jsx
21
+ <n-table
22
+ columns={{ name: '用户名', age: '年龄', 自定义: { key: 'age' } }}
23
+ data={[
24
+ { name: 'user 1', age: 18 },
25
+ { name: 'user 2', age: 19 },
26
+ { name: 'user 3', age: 3 },
27
+ ]}
28
+ />
29
+ ```
@@ -0,0 +1,29 @@
1
+ ---
2
+ title: 序号
3
+ description: 添加序号到第一列
4
+ ---
5
+
6
+ ```html
7
+ <n-table></n-table>
8
+ <script>
9
+ const el = container.querySelector('n-table');
10
+
11
+ el.columns = { order: { type: 'order' }, name: '用户名', age: '年龄' };
12
+ el.data = [
13
+ { name: 'user 1', age: 18 },
14
+ { name: 'user 2', age: 19 },
15
+ { name: 'user 3', age: 3 },
16
+ ];
17
+ </script>
18
+ ```
19
+
20
+ ```jsx
21
+ <n-table
22
+ columns={{ order: { type: 'order' }, name: '用户名', age: '年龄' }}
23
+ data={[
24
+ { name: 'user 1', age: 18 },
25
+ { name: 'user 2', age: 19 },
26
+ { name: 'user 3', age: 3 },
27
+ ]}
28
+ />
29
+ ```
@@ -0,0 +1,67 @@
1
+ ---
2
+ title: 分页器
3
+ description: 在表格下面添加分页器
4
+ ---
5
+
6
+ ```html
7
+ <n-table summary-text="当前页合计"></n-table>
8
+ <script>
9
+ const el = container.querySelector('n-table');
10
+ const total = 31;
11
+ function genData(page, pageSize) {
12
+ return Array.from(
13
+ { length: page < total / pageSize ? pageSize : total % pageSize },
14
+ (_, i) => ({
15
+ name: `user ${pageSize * (page - 1) + i + 1}`,
16
+ age: Math.round(Math.random() * 60),
17
+ }),
18
+ );
19
+ }
20
+
21
+ el.columns = { order: { type: 'order', width: 75 }, name: '用户名', age: '年龄' };
22
+ el.pagination = {
23
+ page: 1,
24
+ pageSize: 3,
25
+ total: total,
26
+ onChange: function (page, pageSize) {
27
+ el.data = genData(page, pageSize);
28
+ },
29
+ };
30
+ el.summary = ['age'];
31
+ el.data = genData(1, el.pagination.pageSize);
32
+ </script>
33
+ ```
34
+
35
+ ```jsx
36
+ function Demo() {
37
+ let el;
38
+ const total = 31;
39
+ function genData(page, pageSize) {
40
+ return Array.from(
41
+ { length: page < total / pageSize ? pageSize : total % pageSize },
42
+ (_, i) => ({
43
+ name: `user ${pageSize * (page - 1) + i + 1}`,
44
+ age: Math.round(Math.random() * 60),
45
+ }),
46
+ );
47
+ }
48
+
49
+ return (
50
+ <n-table
51
+ ref={(e) => (el = e)}
52
+ columns={{ order: { type: 'order', width: 75 }, name: '用户名', age: '年龄' }}
53
+ summary={['age']}
54
+ summary-text="当前页合计"
55
+ pagination={{
56
+ page: 1,
57
+ pageSize: 3,
58
+ total: total,
59
+ onChange: function (page, pageSize) {
60
+ el.data = genData(page, pageSize);
61
+ },
62
+ }}
63
+ data={genData(1, 3)}
64
+ />
65
+ );
66
+ }
67
+ ```