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
@@ -0,0 +1,58 @@
1
+ ---
2
+ title: 右键触发
3
+ description: 将 `trigger` 为 `contextMenu`,将可以通过右键触发提示框显示
4
+ order: 3
5
+ ---
6
+
7
+ ```html
8
+ <n-popover trigger="contextMenu" style="width: 100%;">
9
+ <div style="width: 100%;opacity: 0.4;">右键点我</div>
10
+ </n-popover>
11
+ <script>
12
+ const el = container.querySelector('n-popover');
13
+ const c = document.createElement('a');
14
+
15
+ c.style.color = 'red';
16
+ c.textContent = '右键触发';
17
+ el.content = c;
18
+ el.css = `.popover {
19
+ display: block;
20
+ width: 100%;
21
+ height: 150px;
22
+ background-color: var(--disable-bg);
23
+ border-radius: 8px;
24
+ line-height: 150px;
25
+ text-align: center;
26
+ font-size: x-large;
27
+ }`;
28
+ </script>
29
+ ```
30
+
31
+ ```jsx
32
+ <n-popover
33
+ content={<a style="color: red;">右键触发</a>}
34
+ style={{ width: '100%' }}
35
+ trigger="contextMenu"
36
+ css={`
37
+ .popover {
38
+ display: block;
39
+ width: 100%;
40
+ height: 150px;
41
+ background-color: var(--disable-bg);
42
+ border-radius: 8px;
43
+ line-height: 150px;
44
+ text-align: center;
45
+ font-size: x-large;
46
+ }
47
+ `}
48
+ >
49
+ <div
50
+ style={{
51
+ width: '100%',
52
+ opacity: 0.4,
53
+ }}
54
+ >
55
+ 右键点我
56
+ </div>
57
+ </n-popover>
58
+ ```
@@ -0,0 +1,47 @@
1
+ ---
2
+ title: 受控
3
+ description: 通过指定 `open` 属性来控制弹出
4
+ order: 4
5
+ ---
6
+
7
+ ```html
8
+ <n-popover
9
+ arrow="true"
10
+ trigger="click"
11
+ content="这是一个受控的popover, 通过修改 `open` 属性来控制弹出"
12
+ >受控</n-popover
13
+ >
14
+ <n-switch checked-text="打开" un-checked-text="关闭"></n-switch>
15
+ <script>
16
+ const cl = container.querySelector('n-switch');
17
+ const el = container.querySelector('n-popover');
18
+
19
+ cl.onchange = function (e) {
20
+ el.open = e.detail;
21
+ };
22
+ </script>
23
+ ```
24
+
25
+ ```jsx
26
+ const [open, setOpen] = createSignal(false);
27
+
28
+ render(
29
+ <>
30
+ <n-switch
31
+ checked-text="打开"
32
+ un-checked-text="关闭"
33
+ onChange={(e) => {
34
+ setOpen(e.detail);
35
+ }}
36
+ />
37
+ <n-popover
38
+ arrow
39
+ open={open}
40
+ content="这是一个受控的popover, 通过修改 `open` 属性来控制弹出"
41
+ trigger="click"
42
+ >
43
+ 受控
44
+ </n-popover>
45
+ </>
46
+ );
47
+ ```
@@ -1,2 +1,2 @@
1
- var t,e;function o(){return(o=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var o=arguments[e];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(t[n]=o[n])}return t}).apply(this,arguments)}import{use as n}from"solid-js/web";import{template as r}from"solid-js/web";import{spread as i}from"solid-js/web";import{mergeProps as l}from"solid-js/web";import"solid-js/web";import{insert as s}from"solid-js/web";import{effect as p}from"solid-js/web";import{createComponent as a}from"solid-js/web";import{addEventListener as d}from"solid-js/web";let c=r("<style> "),u=r("<style>"),m=r("<span>"),g=r("<div>");import{Show as f,createEffect as h,createMemo as v,createSignal as w,mergeProps as b,onCleanup as C,onMount as x,splitProps as y}from"solid-js";import j from"@moneko/common/lib/isElementInside";import M from"@moneko/common/lib/isEqual";import k from"@moneko/common/lib/isFunction";import L from"@moneko/common/lib/passiveSupported";import{css as O,cx as E}from"@moneko/css";import{customElement as P}from"solid-element";import{Portal as T}from"solid-js/web";import{popoverCss as R,portalCss as $}from"./style";import W from"../empty";import S from"../theme";export var TriggerOption;(t=TriggerOption||(TriggerOption={})).hover="hover",t.click="click",t.contextMenu="contextMenu",t.none="none";export var Placement;function z(t){let e,r,P,z;let{isDark:H,baseStyle:I}=S,[B]=y(b({trigger:"hover"},t),["class","css","popupClass","popupCss","size","trigger","open","disabled","onOpenChange","dropdownMatchSelectWidth","destroyInactive","arrow","placement","getPopupContainer","children","content"]),[A,D]=w(null),[q,F]=w({}),[N,X]=w(!1),[Y,G]=w("");function J(t){B.disabled||(B.onOpenChange&&B.onOpenChange(t),void 0===B.open&&D(t))}function K(){!1===A()&&(D(null),J(null))}function Q(t){clearTimeout(P),P=setTimeout(()=>{var o;if(clearTimeout(P),(null==(o=t.target)?void 0:o.getAttribute("handle-closed"))==="false")return;let n=j(t.target,e);(A()&&!n||n&&"mousedown"!==t.type)&&J(!1)},"hover"===B.trigger?300:0)}h(()=>{void 0!==B.open&&D(B.open)}),h(()=>{A()&&B.dropdownMatchSelectWidth&&r&&G(`.portal {width: ${r.offsetWidth}px;}`)});let U=function(t){clearTimeout(z),z=setTimeout(()=>{if(clearTimeout(z),!e||!r||!t&&"contextMenu"===B.trigger)return;if((null==t?void 0:t.type)==="scroll"&&"contextMenu"===B.trigger){J(!1);return}let o=r.getBoundingClientRect(),n=e.getBoundingClientRect(),i=n.width/2-o.width/2,l=window.innerHeight-o.bottom,s=B.placement,p=!(null==s?void 0:s.startsWith("top"))&&l>.8*e.offsetHeight&&l>o.top||(null==s?void 0:s.startsWith("bottom")),a=B.arrow?8:4,d={};switch(B.placement){case"bottomLeft":case"left":case"topLeft":d.left=o.left,d["--x"]=-n.width/2+16;break;case"bottomRight":case"right":case"topRight":d.left=o.right-n.width,d["--x"]=n.width/2-16;break;default:d.left=Math.abs(i>o.left?o.left:o.left-i),d["--x"]=-(d.left-o.left+i)}p?d.top=o.bottom+a:d.bottom=window.innerHeight-o.top+a,F(t=>M(t,d)?t:d),X(t=>!p===t?t:!p)},32)};function V(t){clearTimeout(P),t.stopPropagation(),"contextMenu"===B.trigger&&"contextmenu"===t.type&&(t.preventDefault(),F(n=>o({},n,{left:t.clientX,top:t.clientY,"--x":-((null==e?void 0:e.getBoundingClientRect().width)||0)/2+16}))),J(!0)}let Z=v(()=>k(B.getPopupContainer)?B.getPopupContainer(r):document.body),_=v(()=>{let t={},e={click:"onMouseDown",hover:"onMouseEnter",contextMenu:"onContextMenu",none:void 0}[B.trigger],o={hover:"onMouseLeave",click:void 0,contextMenu:void 0,none:void 0}[B.trigger];return Object.assign(t,e&&{[e]:V},o&&{[o]:Q}),t}),tt=v(()=>{let t=q();return`.portal {${Object.keys(t).map(e=>`${e}:${t[e]}px;`).join("")}z-index: 1;}`}),te=v(()=>E("portal",B.arrow&&"arrow",`${A()?"in":"out"}-${N()?"up":"down"}`,B.size,B.popupClass)),to=v(()=>`:host {--popover-bg: ${H()?"#1f1f1f":"var(--component-bg)"};--popover-shadow-color: rgb(0 0 0 / 5%);}`);return h(()=>{A()&&(U(),window.addEventListener("scroll",U,{passive:L})),C(()=>{window.removeEventListener("scroll",U,!1)})}),x(()=>{"none"!==B.trigger&&document.documentElement.addEventListener("mousedown",Q,!1)}),C(()=>{clearTimeout(P),document.documentElement.removeEventListener("mousedown",Q,!1)}),[(()=>{let t=c(),e=t.firstChild;return p(()=>e.data=I()),t})(),(()=>{let t=u();return t.textContent=R,t})(),a(f,{get when(){return B.css},get children(){let t=c(),e=t.firstChild;return p(()=>e.data=O(B.css)),t}}),(()=>{let t=m(),e=r;return"function"==typeof e?n(e,t):r=t,i(t,l({get class(){return E("popover",B.size,B.class)}},_),!1,!0),s(t,()=>B.children),t})(),a(f,{get when(){return null!==A()||!B.destroyInactive},get children(){return a(T,{useShadow:!0,get mount(){return Z()},get children(){return[(()=>{let t=c(),e=t.firstChild;return p(()=>e.data=I()),t})(),(()=>{let t=u();return t.textContent=$,t})(),(()=>{let t=c(),e=t.firstChild;return p(()=>e.data=to()),t})(),(()=>{let t=c(),e=t.firstChild;return p(()=>e.data=tt()),t})(),(()=>{let t=c(),e=t.firstChild;return p(()=>e.data=Y()),t})(),a(f,{get when(){return B.popupCss},get children(){let t=c(),e=t.firstChild;return p(()=>e.data=O(B.popupCss)),t}}),(()=>{let t=g(),o=e;return d(t,"animationend",K),"function"==typeof o?n(o,t):e=t,i(t,l({get class(){return te()}},_),!1,!0),s(t,a(f,{get when(){return B.content},get fallback(){return a(W,{})},get children(){return a(f,{get when(){return"string"==typeof B.content},get fallback(){return B.content},get children(){let t=g();return p(()=>t.innerHTML=B.content),t}})}})),t})()]}})}})]}(e=Placement||(Placement={})).bottomLeft="bottomLeft",e.bottom="bottom",e.bottomRight="bottomRight",e.topLeft="topLeft",e.top="top",e.topRight="topRight",e.left="left",e.right="right";export const defaultProps={class:void 0,css:void 0,content:void 0,getPopupContainer:void 0,trigger:void 0,open:void 0,onOpenChange:void 0,popupClass:void 0,popupCss:void 0,destroyInactive:!0,disabled:void 0,arrow:void 0,placement:void 0,dropdownMatchSelectWidth:void 0};P("n-popover",defaultProps,(t,e)=>{let o=e.element,n=b({onOpenChange(t){o.dispatchEvent(new CustomEvent("openchange",{detail:t}))},children:[...o.childNodes.values()]},t);return h(()=>{o.removeAttribute("css")}),a(z,n)});export default z;
1
+ var t,e;function o(){return(o=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var o=arguments[e];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(t[n]=o[n])}return t}).apply(this,arguments)}import{use as n}from"solid-js/web";import{template as r}from"solid-js/web";import{spread as i}from"solid-js/web";import{mergeProps as l}from"solid-js/web";import"solid-js/web";import{insert as s}from"solid-js/web";import{effect as p}from"solid-js/web";import{createComponent as a}from"solid-js/web";import{addEventListener as d}from"solid-js/web";let c=r("<style> "),u=r("<style>"),m=r("<span>"),g=r("<div>");import{createEffect as f,createMemo as h,createSignal as v,mergeProps as w,onCleanup as b,onMount as C,Show as x,splitProps as y}from"solid-js";import{Portal as j}from"solid-js/web";import M from"@moneko/common/lib/isElementInside";import k from"@moneko/common/lib/isEqual";import L from"@moneko/common/lib/isFunction";import O from"@moneko/common/lib/passiveSupported";import{css as E,cx as P}from"@moneko/css";import{customElement as T}from"solid-element";import R from"../empty";import $ from"../theme";import{popoverCss as W,portalCss as S}from"./style";export var TriggerOption;(t=TriggerOption||(TriggerOption={})).hover="hover",t.click="click",t.contextMenu="contextMenu",t.none="none";export var Placement;function z(t){let e,r,T,z;let{isDark:H,baseStyle:I}=$,[B]=y(w({trigger:"hover"},t),["class","css","popupClass","popupCss","size","trigger","open","disabled","onOpenChange","dropdownMatchSelectWidth","destroyInactive","arrow","placement","getPopupContainer","children","content"]),[A,D]=v(null),[q,F]=v({}),[N,X]=v(!1),[Y,G]=v("");function J(t){B.disabled||(B.onOpenChange&&B.onOpenChange(t),void 0===B.open&&D(t))}function K(){!1===A()&&(D(null),J(null))}function Q(t){clearTimeout(T),T=setTimeout(()=>{if(clearTimeout(T),t.target&&"false"===t.target.getAttribute("handle-closed"))return;let o=M(t.target,e);(A()&&!o||o&&"mousedown"!==t.type)&&J(!1)},"hover"===B.trigger?300:0)}f(()=>{void 0!==B.open&&D(B.open)}),f(()=>{A()&&B.dropdownMatchSelectWidth&&r&&G(`.portal {width: ${r.offsetWidth}px;}`)});let U=function(t){clearTimeout(z),z=setTimeout(()=>{if(clearTimeout(z),!e||!r||!t&&"contextMenu"===B.trigger)return;if((null==t?void 0:t.type)==="scroll"&&"contextMenu"===B.trigger){J(!1);return}let o=r.getBoundingClientRect(),n=e.getBoundingClientRect(),i=n.width/2-o.width/2,l=window.innerHeight-o.bottom,s=B.placement,p=!(null==s?void 0:s.startsWith("top"))&&l>.8*e.offsetHeight&&l>o.top||(null==s?void 0:s.startsWith("bottom")),a=B.arrow?8:4,d={};switch(B.placement){case"bottomLeft":case"left":case"topLeft":d.left=o.left,d["--x"]=-n.width/2+16;break;case"bottomRight":case"right":case"topRight":d.left=o.right-n.width,d["--x"]=n.width/2-16;break;default:d.left=Math.abs(i>o.left?o.left:o.left-i),d["--x"]=-(d.left-o.left+i)}p?d.top=o.bottom+a:d.bottom=window.innerHeight-o.top+a,F(t=>k(t,d)?t:d),X(t=>!p===t?t:!p)},32)};function V(t){clearTimeout(T),t.stopPropagation(),"contextMenu"===B.trigger&&"contextmenu"===t.type&&(t.preventDefault(),F(n=>o({},n,{left:t.clientX,top:t.clientY,"--x":-((null==e?void 0:e.getBoundingClientRect().width)||0)/2+16}))),J(!0)}let Z=h(()=>L(B.getPopupContainer)?B.getPopupContainer(r):document.body),_=h(()=>{let t={},e={click:"onMouseDown",hover:"onMouseEnter",contextMenu:"onContextMenu",none:void 0}[B.trigger],o={hover:"onMouseLeave",click:void 0,contextMenu:void 0,none:void 0}[B.trigger];return Object.assign(t,e&&{[e]:V},o&&{[o]:Q}),t}),tt=h(()=>{let t=q();return`.portal {${Object.keys(t).map(e=>`${e}:${t[e]}px;`).join("")}z-index: 1;}`}),te=h(()=>P("portal",B.arrow&&"arrow",`${A()?"in":"out"}-${N()?"up":"down"}`,B.size,B.popupClass)),to=h(()=>`:host {--popover-bg: ${H()?"#1f1f1f":"var(--component-bg)"};--popover-shadow-color: rgb(0 0 0 / 5%);}`);return f(()=>{A()&&(U(),window.addEventListener("scroll",U,{passive:O})),b(()=>{window.removeEventListener("scroll",U,!1)})}),C(()=>{"none"!==B.trigger&&document.documentElement.addEventListener("mousedown",Q,!1)}),b(()=>{clearTimeout(T),document.documentElement.removeEventListener("mousedown",Q,!1)}),[(()=>{let t=c(),e=t.firstChild;return p(()=>e.data=I()),t})(),(()=>{let t=u();return t.textContent=W,t})(),a(x,{get when(){return B.css},get children(){let t=c(),e=t.firstChild;return p(()=>e.data=E(B.css)),t}}),(()=>{let t=m(),e=r;return"function"==typeof e?n(e,t):r=t,i(t,l({get class(){return P("popover",B.size,B.class)}},_),!1,!0),s(t,()=>B.children),t})(),a(x,{get when(){return null!==A()||!B.destroyInactive},get children(){return a(j,{useShadow:!0,get mount(){return Z()},get children(){return[(()=>{let t=c(),e=t.firstChild;return p(()=>e.data=I()),t})(),(()=>{let t=u();return t.textContent=S,t})(),(()=>{let t=c(),e=t.firstChild;return p(()=>e.data=to()),t})(),(()=>{let t=c(),e=t.firstChild;return p(()=>e.data=tt()),t})(),(()=>{let t=c(),e=t.firstChild;return p(()=>e.data=Y()),t})(),a(x,{get when(){return B.popupCss},get children(){let t=c(),e=t.firstChild;return p(()=>e.data=E(B.popupCss)),t}}),(()=>{let t=g(),o=e;return d(t,"animationend",K),"function"==typeof o?n(o,t):e=t,i(t,l({get class(){return te()}},_),!1,!0),s(t,a(x,{get when(){return B.content},get fallback(){return a(R,{})},get children(){return a(x,{get when(){return"string"==typeof B.content},get fallback(){return B.content},get children(){let t=g();return p(()=>t.innerHTML=B.content),t}})}})),t})()]}})}})]}(e=Placement||(Placement={})).bottomLeft="bottomLeft",e.bottom="bottom",e.bottomRight="bottomRight",e.topLeft="topLeft",e.top="top",e.topRight="topRight",e.left="left",e.right="right";export const defaultProps={class:void 0,css:void 0,content:void 0,getPopupContainer:void 0,trigger:void 0,open:void 0,onOpenChange:void 0,popupClass:void 0,popupCss:void 0,destroyInactive:!0,disabled:void 0,arrow:void 0,placement:void 0,dropdownMatchSelectWidth:void 0};T("n-popover",defaultProps,(t,e)=>{let o=e.element,n=w({onOpenChange(t){o.dispatchEvent(new CustomEvent("openchange",{detail:t}))},children:[...o.childNodes.values()]},t);return f(()=>{o.removeAttribute("css")}),a(z,n)});export default z;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/popover/index.tsx"],"sourcesContent":["import {\n Show,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n splitProps,\n} from 'solid-js';\nimport { isElementInside, isEqual, isFunction, passiveSupported } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { Portal } from 'solid-js/web';\nimport { popoverCss, portalCss } from './style';\nimport Empty from '../empty';\nimport theme from '../theme';\nimport type { BasicConfig, CustomElement } from '..';\n\nexport interface PopoverProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n content?: (() => JSX.Element) | JSX.Element;\n /** 挂载到指定的元素,值为一个返回对应 DOM 元素 默认 document.body */\n getPopupContainer?: (node?: HTMLElement | null) => HTMLElement;\n /** 触发行为\n * @default 'hover'\n */\n trigger?: keyof typeof TriggerOption;\n /** 打开内容气泡 */\n open?: boolean | null;\n /** 内容打开关闭时的回调方法 */\n onOpenChange?: (open: boolean | null) => void;\n /** 气泡的自定义类名 */\n popupClass?: string;\n /** 气泡的自定义样式表 */\n popupCss?: string;\n /** 关闭后是否销毁 */\n destroyInactive?: boolean;\n /** 不可用状态 */\n disabled?: boolean;\n /** 添加一个箭头显示 */\n arrow?: boolean;\n /** 指定气泡显示的方向 */\n placement?: keyof typeof Placement;\n /** 气泡宽度与触发dom一致 */\n dropdownMatchSelectWidth?: boolean;\n /** 尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n children?: JSX.Element;\n}\n\nexport enum TriggerOption {\n /** 鼠标移入 */\n hover = 'hover',\n /** 点击 */\n click = 'click',\n /** 右键 */\n contextMenu = 'contextMenu',\n /** 无 */\n none = 'none',\n}\n\nexport enum Placement {\n /** 左下 */\n bottomLeft = 'bottomLeft',\n /** 下 */\n bottom = 'bottom',\n /** 右下 */\n bottomRight = 'bottomRight',\n /** 左上 */\n topLeft = 'topLeft',\n /** 上 */\n top = 'top',\n /** 右上 */\n topRight = 'topRight',\n /** 左 */\n left = 'left',\n /** 右 */\n right = 'right',\n}\n\ntype Posi = {\n left?: number;\n top?: number;\n right?: number;\n bottom?: number;\n '--x'?: number;\n};\n\ntype EventMap = {\n click?: string;\n hover?: string;\n contextMenu?: string;\n none?: never;\n [key: string]: string | undefined;\n};\nfunction Popover(props: PopoverProps) {\n const { isDark, baseStyle } = theme;\n const mp = mergeProps(\n {\n trigger: 'hover',\n },\n props,\n );\n const [local] = splitProps(mp, [\n 'class',\n 'css',\n 'popupClass',\n 'popupCss',\n 'size',\n 'trigger',\n 'open',\n 'disabled',\n 'onOpenChange',\n 'dropdownMatchSelectWidth',\n 'destroyInactive',\n 'arrow',\n 'placement',\n 'getPopupContainer',\n 'children',\n 'content',\n ]);\n let ref: HTMLDivElement | undefined;\n let childRef: HTMLSpanElement | undefined;\n let closeTimer: NodeJS.Timeout | undefined;\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [posi, setPosi] = createSignal<Posi>({});\n const [up, setUp] = createSignal<boolean>(false);\n const [width, setWidth] = createSignal('');\n\n createEffect(() => {\n if (local.open !== void 0) {\n setOpen(local.open);\n }\n });\n function openChange(next: boolean | null) {\n if (!local.disabled) {\n if (local.onOpenChange) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n function exit() {\n if (open() === false) {\n setOpen(null);\n openChange(null);\n }\n }\n createEffect(() => {\n if (open() && local.dropdownMatchSelectWidth && childRef) {\n setWidth(`.portal {width: ${childRef.offsetWidth}px;}`);\n }\n });\n\n function close(e: MouseEvent | Event) {\n clearTimeout(closeTimer);\n closeTimer = setTimeout(\n () => {\n clearTimeout(closeTimer);\n if ((e.target as HTMLElement)?.getAttribute('handle-closed') === 'false') {\n return;\n }\n const isContains = isElementInside(e.target as Element, ref);\n\n if ((open() && !isContains) || (isContains && e.type !== 'mousedown')) {\n openChange(false);\n }\n },\n local.trigger === 'hover' ? 300 : 0,\n );\n }\n let portalTimer: NodeJS.Timeout | undefined;\n const showPortal = function (e?: Event): void {\n clearTimeout(portalTimer);\n portalTimer = setTimeout(() => {\n clearTimeout(portalTimer);\n if (!ref || !childRef || (!e && local.trigger === 'contextMenu')) {\n return;\n }\n if (e?.type === 'scroll' && local.trigger === 'contextMenu') {\n openChange(false);\n return;\n }\n const elRect = childRef!.getBoundingClientRect();\n const portalRect = ref!.getBoundingClientRect();\n const offsetX = portalRect.width / 2 - elRect.width / 2;\n const margin = window.innerHeight - elRect.bottom;\n const _placement = local.placement;\n\n const _isBottom =\n (!_placement?.startsWith('top') &&\n margin > ref!.offsetHeight * 0.8 &&\n margin > elRect.top) ||\n _placement?.startsWith('bottom');\n const arrowHeight = local.arrow ? 8 : 4;\n const _posi: Posi = {};\n\n switch (local.placement) {\n case 'bottomLeft':\n case 'left':\n case 'topLeft':\n _posi.left = elRect.left;\n _posi['--x'] = -portalRect.width / 2 + 16;\n break;\n case 'bottomRight':\n case 'right':\n case 'topRight':\n _posi.left = elRect.right - portalRect.width;\n _posi['--x'] = portalRect.width / 2 - 16;\n break;\n case 'bottom':\n case 'top':\n default:\n _posi.left = Math.abs(offsetX > elRect.left ? elRect.left : elRect.left - offsetX);\n _posi['--x'] = -(_posi.left - elRect.left + offsetX);\n break;\n }\n if (_isBottom) {\n _posi.top = elRect.bottom + arrowHeight;\n } else {\n _posi.bottom = window.innerHeight - elRect.top + arrowHeight;\n }\n setPosi((prev) => {\n return isEqual(prev, _posi) ? prev : _posi;\n });\n setUp((prev) => {\n return prev === !_isBottom ? prev : !_isBottom;\n });\n }, 32);\n };\n\n function handleOpen(e: MouseEvent) {\n clearTimeout(closeTimer);\n e.stopPropagation();\n if (local.trigger === 'contextMenu' && e.type === 'contextmenu') {\n e.preventDefault();\n setPosi((prev) => ({\n ...prev,\n left: e.clientX,\n top: e.clientY,\n ['--x']: -(ref?.getBoundingClientRect().width || 0) / 2 + 16,\n }));\n }\n openChange(true);\n }\n\n const container = createMemo(() => {\n if (isFunction(local.getPopupContainer)) {\n return local.getPopupContainer(childRef);\n }\n return document.body;\n });\n const childrenProps = createMemo(() => {\n const _props: Partial<Record<keyof EventMap, void>> = {};\n\n const openEvent: EventMap = {\n click: 'onMouseDown',\n hover: 'onMouseEnter',\n contextMenu: 'onContextMenu',\n none: void 0,\n };\n const closeEvent: EventMap = {\n hover: 'onMouseLeave',\n click: void 0,\n contextMenu: void 0,\n none: void 0,\n };\n\n const openFn = openEvent[local.trigger];\n const closeFn = closeEvent[local.trigger];\n\n Object.assign(\n _props,\n openFn && {\n [openFn]: handleOpen,\n },\n closeFn && {\n [closeFn]: close,\n },\n );\n\n return _props;\n });\n\n const portalStyle = createMemo(() => {\n const p = posi();\n\n return `.portal {${Object.keys(p)\n .map((k) => `${k}:${p[k as keyof Posi]}px;`)\n .join('')}z-index: 1;}`;\n });\n const portalCls = createMemo(() => {\n return cx(\n 'portal',\n local.arrow && 'arrow',\n `${open() ? 'in' : 'out'}-${up() ? 'up' : 'down'}`,\n local.size,\n local.popupClass,\n );\n });\n const hostStyle = createMemo(() => {\n return `:host {--popover-bg: ${\n isDark() ? '#1f1f1f' : 'var(--component-bg)'\n };--popover-shadow-color: rgb(0 0 0 / 5%);}`;\n });\n\n createEffect(() => {\n if (open()) {\n showPortal();\n\n window.addEventListener('scroll', showPortal, {\n passive: passiveSupported,\n });\n }\n onCleanup(() => {\n window.removeEventListener('scroll', showPortal, false);\n });\n });\n onMount(() => {\n if (local.trigger !== 'none') {\n document.documentElement.addEventListener('mousedown', close, false);\n }\n });\n onCleanup(() => {\n clearTimeout(closeTimer);\n document.documentElement.removeEventListener('mousedown', close, false);\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={popoverCss} />\n <Show when={local.css}>\n <style textContent={css(local.css)} />\n </Show>\n <span ref={childRef} class={cx('popover', local.size, local.class)} {...childrenProps()}>\n {local.children}\n </span>\n <Show when={open() !== null || !local.destroyInactive}>\n <Portal useShadow mount={container()}>\n <style textContent={baseStyle()} />\n <style textContent={portalCss} />\n <style textContent={hostStyle()} />\n <style textContent={portalStyle()} />\n <style textContent={width()} />\n <Show when={local.popupCss}>\n <style textContent={css(local.popupCss)} />\n </Show>\n <div ref={ref} onAnimationEnd={exit} class={portalCls()} {...childrenProps()}>\n <Show when={local.content} fallback={<Empty />}>\n <Show when={typeof local.content === 'string'} fallback={local.content}>\n {/* eslint-disable-next-line solid/no-innerhtml */}\n <div innerHTML={local.content} />\n </Show>\n </Show>\n </div>\n </Portal>\n </Show>\n </>\n );\n}\n\nexport type PopoverElement = CustomElement<PopoverProps, 'onOpenChange'>;\n\nexport const defaultProps = {\n class: void 0,\n css: void 0,\n content: void 0,\n getPopupContainer: void 0,\n trigger: void 0,\n open: void 0,\n onOpenChange: void 0,\n popupClass: void 0,\n popupCss: void 0,\n destroyInactive: true,\n disabled: void 0,\n arrow: void 0,\n placement: void 0,\n dropdownMatchSelectWidth: void 0,\n};\ncustomElement<PopoverProps>('n-popover', defaultProps, (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onOpenChange(next: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: next,\n }),\n );\n },\n children: [...el.childNodes.values()],\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n });\n return <Popover {...props} />;\n});\nexport default Popover;\n"],"names":["TriggerOption","Placement","Show","createEffect","createMemo","createSignal","mergeProps","onCleanup","onMount","splitProps","isElementInside","isEqual","isFunction","passiveSupported","css","cx","customElement","Portal","popoverCss","portalCss","Empty","theme","Popover","props","ref","childRef","closeTimer","portalTimer","isDark","baseStyle","local","trigger","open","setOpen","posi","setPosi","up","setUp","width","setWidth","openChange","next","disabled","onOpenChange","exit","close","e","clearTimeout","setTimeout","target","getAttribute","isContains","type","dropdownMatchSelectWidth","offsetWidth","showPortal","elRect","getBoundingClientRect","portalRect","offsetX","margin","window","innerHeight","bottom","_placement","placement","_isBottom","startsWith","offsetHeight","top","arrowHeight","arrow","_posi","left","right","Math","abs","prev","handleOpen","stopPropagation","preventDefault","clientX","clientY","container","getPopupContainer","document","body","childrenProps","_props","openFn","openEvent","click","hover","contextMenu","none","closeFn","closeEvent","Object","assign","portalStyle","p","keys","map","k","join","portalCls","size","popupClass","hostStyle","addEventListener","passive","removeEventListener","documentElement","class","children","destroyInactive","popupCss","content","defaultProps","_","opt","el","element","dispatchEvent","CustomEvent","detail","childNodes","values","removeAttribute"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/popover/index.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n Show,\n splitProps,\n} from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { isElementInside, isEqual, isFunction, passiveSupported } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { BasicConfig, CustomElement } from '..';\nimport Empty from '../empty';\nimport theme from '../theme';\n\nimport { popoverCss, portalCss } from './style';\n\nexport interface PopoverProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n content?: (() => JSX.Element) | JSX.Element;\n /** 挂载到指定的元素,值为一个返回对应 DOM 元素 默认 document.body */\n getPopupContainer?: (node?: HTMLElement | null) => HTMLElement;\n /** 触发行为\n * @default 'hover'\n */\n trigger?: keyof typeof TriggerOption;\n /** 打开内容气泡 */\n open?: boolean | null;\n /** 内容打开关闭时的回调方法 */\n onOpenChange?: (open: boolean | null) => void;\n /** 气泡的自定义类名 */\n popupClass?: string;\n /** 气泡的自定义样式表 */\n popupCss?: string;\n /** 关闭后是否销毁 */\n destroyInactive?: boolean;\n /** 不可用状态 */\n disabled?: boolean;\n /** 添加一个箭头显示 */\n arrow?: boolean;\n /** 指定气泡显示的方向 */\n placement?: keyof typeof Placement;\n /** 气泡宽度与触发dom一致 */\n dropdownMatchSelectWidth?: boolean;\n /** 尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n children?: JSX.Element;\n}\n\nexport enum TriggerOption {\n /** 鼠标移入 */\n hover = 'hover',\n /** 点击 */\n click = 'click',\n /** 右键 */\n contextMenu = 'contextMenu',\n /** 无 */\n none = 'none',\n}\n\nexport enum Placement {\n /** 左下 */\n bottomLeft = 'bottomLeft',\n /** 下 */\n bottom = 'bottom',\n /** 右下 */\n bottomRight = 'bottomRight',\n /** 左上 */\n topLeft = 'topLeft',\n /** 上 */\n top = 'top',\n /** 右上 */\n topRight = 'topRight',\n /** 左 */\n left = 'left',\n /** 右 */\n right = 'right',\n}\n\ninterface Posi {\n left?: number;\n top?: number;\n right?: number;\n bottom?: number;\n '--x'?: number;\n}\n\ninterface EventMap {\n click?: string;\n hover?: string;\n contextMenu?: string;\n none?: never;\n [key: string]: string | undefined;\n}\nfunction Popover(props: PopoverProps) {\n const { isDark, baseStyle } = theme;\n const mp = mergeProps(\n {\n trigger: 'hover',\n },\n props,\n );\n const [local] = splitProps(mp, [\n 'class',\n 'css',\n 'popupClass',\n 'popupCss',\n 'size',\n 'trigger',\n 'open',\n 'disabled',\n 'onOpenChange',\n 'dropdownMatchSelectWidth',\n 'destroyInactive',\n 'arrow',\n 'placement',\n 'getPopupContainer',\n 'children',\n 'content',\n ]);\n let ref: HTMLDivElement | undefined;\n let childRef: HTMLSpanElement | undefined;\n let closeTimer: NodeJS.Timeout | undefined;\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [posi, setPosi] = createSignal<Posi>({});\n const [up, setUp] = createSignal<boolean>(false);\n const [width, setWidth] = createSignal('');\n\n createEffect(() => {\n if (local.open !== void 0) {\n setOpen(local.open);\n }\n });\n function openChange(next: boolean | null) {\n if (!local.disabled) {\n if (local.onOpenChange) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n }\n function exit() {\n if (open() === false) {\n setOpen(null);\n openChange(null);\n }\n }\n createEffect(() => {\n if (open() && local.dropdownMatchSelectWidth && childRef) {\n setWidth(`.portal {width: ${childRef.offsetWidth}px;}`);\n }\n });\n\n function close(e: MouseEvent | Event) {\n clearTimeout(closeTimer);\n closeTimer = setTimeout(\n () => {\n clearTimeout(closeTimer);\n if (e.target && (e.target as HTMLElement).getAttribute('handle-closed') === 'false') {\n return;\n }\n const isContains = isElementInside(e.target as Element, ref);\n\n if ((open() && !isContains) || (isContains && e.type !== 'mousedown')) {\n openChange(false);\n }\n },\n local.trigger === 'hover' ? 300 : 0,\n );\n }\n let portalTimer: NodeJS.Timeout | undefined;\n const showPortal = function (e?: Event): void {\n clearTimeout(portalTimer);\n portalTimer = setTimeout(() => {\n clearTimeout(portalTimer);\n if (!ref || !childRef || (!e && local.trigger === 'contextMenu')) {\n return;\n }\n if (e?.type === 'scroll' && local.trigger === 'contextMenu') {\n openChange(false);\n return;\n }\n const elRect = childRef.getBoundingClientRect();\n const portalRect = ref.getBoundingClientRect();\n const offsetX = portalRect.width / 2 - elRect.width / 2;\n const margin = window.innerHeight - elRect.bottom;\n const _placement = local.placement;\n\n const _isBottom =\n (!_placement?.startsWith('top') &&\n margin > ref.offsetHeight * 0.8 &&\n margin > elRect.top) ||\n _placement?.startsWith('bottom');\n const arrowHeight = local.arrow ? 8 : 4;\n const _posi: Posi = {};\n\n switch (local.placement) {\n case 'bottomLeft':\n case 'left':\n case 'topLeft':\n _posi.left = elRect.left;\n _posi['--x'] = -portalRect.width / 2 + 16;\n break;\n case 'bottomRight':\n case 'right':\n case 'topRight':\n _posi.left = elRect.right - portalRect.width;\n _posi['--x'] = portalRect.width / 2 - 16;\n break;\n case 'bottom':\n case 'top':\n default:\n _posi.left = Math.abs(offsetX > elRect.left ? elRect.left : elRect.left - offsetX);\n _posi['--x'] = -(_posi.left - elRect.left + offsetX);\n break;\n }\n if (_isBottom) {\n _posi.top = elRect.bottom + arrowHeight;\n } else {\n _posi.bottom = window.innerHeight - elRect.top + arrowHeight;\n }\n setPosi((prev) => {\n return isEqual(prev, _posi) ? prev : _posi;\n });\n setUp((prev) => {\n return prev === !_isBottom ? prev : !_isBottom;\n });\n }, 32);\n };\n\n function handleOpen(e: MouseEvent) {\n clearTimeout(closeTimer);\n e.stopPropagation();\n if (local.trigger === 'contextMenu' && e.type === 'contextmenu') {\n e.preventDefault();\n setPosi((prev) => ({\n ...prev,\n left: e.clientX,\n top: e.clientY,\n ['--x']: -(ref?.getBoundingClientRect().width || 0) / 2 + 16,\n }));\n }\n openChange(true);\n }\n\n const container = createMemo(() => {\n if (isFunction(local.getPopupContainer)) {\n return local.getPopupContainer(childRef);\n }\n return document.body;\n });\n const childrenProps = createMemo(() => {\n const _props: Partial<Record<keyof EventMap, void>> = {};\n\n const openEvent: EventMap = {\n click: 'onMouseDown',\n hover: 'onMouseEnter',\n contextMenu: 'onContextMenu',\n none: void 0,\n };\n const closeEvent: EventMap = {\n hover: 'onMouseLeave',\n click: void 0,\n contextMenu: void 0,\n none: void 0,\n };\n\n const openFn = openEvent[local.trigger];\n const closeFn = closeEvent[local.trigger];\n\n Object.assign(\n _props,\n openFn && {\n [openFn]: handleOpen,\n },\n closeFn && {\n [closeFn]: close,\n },\n );\n\n return _props;\n });\n\n const portalStyle = createMemo(() => {\n const p = posi();\n\n return `.portal {${Object.keys(p)\n .map((k) => `${k}:${p[k as keyof Posi]}px;`)\n .join('')}z-index: 1;}`;\n });\n const portalCls = createMemo(() => {\n return cx(\n 'portal',\n local.arrow && 'arrow',\n `${open() ? 'in' : 'out'}-${up() ? 'up' : 'down'}`,\n local.size,\n local.popupClass,\n );\n });\n const hostStyle = createMemo(() => {\n return `:host {--popover-bg: ${\n isDark() ? '#1f1f1f' : 'var(--component-bg)'\n };--popover-shadow-color: rgb(0 0 0 / 5%);}`;\n });\n\n createEffect(() => {\n if (open()) {\n showPortal();\n\n window.addEventListener('scroll', showPortal, {\n passive: passiveSupported,\n });\n }\n onCleanup(() => {\n window.removeEventListener('scroll', showPortal, false);\n });\n });\n onMount(() => {\n if (local.trigger !== 'none') {\n document.documentElement.addEventListener('mousedown', close, false);\n }\n });\n onCleanup(() => {\n clearTimeout(closeTimer);\n document.documentElement.removeEventListener('mousedown', close, false);\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={popoverCss} />\n <Show when={local.css}>\n <style textContent={css(local.css)} />\n </Show>\n <span ref={childRef} class={cx('popover', local.size, local.class)} {...childrenProps()}>\n {local.children}\n </span>\n <Show when={open() !== null || !local.destroyInactive}>\n <Portal useShadow mount={container()}>\n <style textContent={baseStyle()} />\n <style textContent={portalCss} />\n <style textContent={hostStyle()} />\n <style textContent={portalStyle()} />\n <style textContent={width()} />\n <Show when={local.popupCss}>\n <style textContent={css(local.popupCss)} />\n </Show>\n <div ref={ref} onAnimationEnd={exit} class={portalCls()} {...childrenProps()}>\n <Show when={local.content} fallback={<Empty />}>\n <Show when={typeof local.content === 'string'} fallback={local.content}>\n {/* eslint-disable-next-line solid/no-innerhtml */}\n <div innerHTML={local.content} />\n </Show>\n </Show>\n </div>\n </Portal>\n </Show>\n </>\n );\n}\n\nexport type PopoverElement = CustomElement<PopoverProps, 'onOpenChange'>;\n\nexport const defaultProps = {\n class: void 0,\n css: void 0,\n content: void 0,\n getPopupContainer: void 0,\n trigger: void 0,\n open: void 0,\n onOpenChange: void 0,\n popupClass: void 0,\n popupCss: void 0,\n destroyInactive: true,\n disabled: void 0,\n arrow: void 0,\n placement: void 0,\n dropdownMatchSelectWidth: void 0,\n};\ncustomElement<PopoverProps>('n-popover', defaultProps, (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onOpenChange(next: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: next,\n }),\n );\n },\n children: [...el.childNodes.values()],\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n });\n return <Popover {...props} />;\n});\nexport default Popover;\n"],"names":["TriggerOption","Placement","createEffect","createMemo","createSignal","mergeProps","onCleanup","onMount","Show","splitProps","Portal","isElementInside","isEqual","isFunction","passiveSupported","css","cx","customElement","Empty","theme","popoverCss","portalCss","Popover","props","ref","childRef","closeTimer","portalTimer","isDark","baseStyle","local","trigger","open","setOpen","posi","setPosi","up","setUp","width","setWidth","openChange","next","disabled","onOpenChange","exit","close","e","clearTimeout","setTimeout","target","getAttribute","isContains","type","dropdownMatchSelectWidth","offsetWidth","showPortal","elRect","getBoundingClientRect","portalRect","offsetX","margin","window","innerHeight","bottom","_placement","placement","_isBottom","startsWith","offsetHeight","top","arrowHeight","arrow","_posi","left","right","Math","abs","prev","handleOpen","stopPropagation","preventDefault","clientX","clientY","container","getPopupContainer","document","body","childrenProps","_props","openFn","openEvent","click","hover","contextMenu","none","closeFn","closeEvent","Object","assign","portalStyle","p","keys","map","k","join","portalCls","size","popupClass","hostStyle","addEventListener","passive","removeEventListener","documentElement","class","children","destroyInactive","popupCss","content","defaultProps","_","opt","el","element","dispatchEvent","CustomEvent","detail","childNodes","values","removeAttribute"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/prism/css.ts"],"sourcesContent":["import { createMemo, createRoot, getOwner } from 'solid-js';\nimport { css } from '@moneko/css';\nimport theme from '../theme';\n\nconst prismCss = createRoot(() => {\n const { isDark } = theme;\n const baseCss = css`\n [data-copy]::before {\n position: absolute;\n inset-block-start: 32px;\n inset-inline: 0;\n z-index: 1;\n display: inline-block;\n margin: auto;\n border: 1px solid;\n border-radius: var(--border-radius);\n padding: 4px 8px;\n inline-size: fit-content;\n font-size: var(--font-size-sm);\n transition:\n background-color 0.3s,\n color 0.3s,\n border-color 0.3s;\n animation-fill-mode: forwards;\n content: '复制成功';\n }\n\n [data-copy='success']::before {\n border-color: var(--success-border);\n color: var(--success-color);\n background-color: var(--success-bg);\n animation: copy-slide-in var(--transition-duration) var(--transition-timing-function);\n content: '复制成功';\n }\n\n [data-copy='failure']::before {\n border-color: var(--error-border);\n color: var(--error-color);\n background-color: var(--error-bg);\n animation:\n copy-slide-in var(--transition-duration) var(--transition-timing-function),\n error 1s var(--transition-timing-function) 1s;\n content: '复制失败';\n }\n\n [data-copy-exit]::before {\n animation: copy-slide-out var(--transition-duration) forwards\n var(--transition-timing-function);\n }\n\n @keyframes copy-slide-in {\n from {\n transform: translate3d(0, -100%, 0) scale(0);\n opacity: 0;\n }\n\n to {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n }\n\n @keyframes copy-slide-out {\n from {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n\n to {\n transform: translate3d(0, -100%, 0) scale(0);\n opacity: 0;\n }\n }\n\n pre > code {\n display: block;\n overflow: auto;\n margin: 0 16px 8px;\n padding: 32px 0 8px;\n max-inline-size: 100%;\n font-size: var(--font-size);\n white-space: pre-wrap;\n line-height: 1.8;\n pointer-events: auto;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: box-shadow, background-color, border-color, color;\n }\n\n code[class*='language-'],\n pre[class*='language-'] {\n color: var(--code-color, #90a4ae);\n\n &::selection,\n & ::selection {\n background-color: var(--text-selection);\n text-shadow: 0 1px var(--primary-shadow);\n }\n }\n\n .language-css > code,\n .language-sass > code,\n .language-scss > code {\n color: var(--code-lang-style-color, #f76d47);\n }\n\n .line-numbers-rows,\n .toolbar::after,\n .toolbar-copy::after,\n pre {\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n }\n\n [class*='language-'] .namespace {\n opacity: 0.7;\n }\n\n .tag {\n color: var(--token-tag, #e53935);\n }\n\n .atrule {\n color: var(--token-atrule, #7c4dff);\n }\n\n .attr-name {\n color: var(--token-attr-name, #39adb5);\n }\n\n .attr-value {\n color: var(--token-attr-value, #f6a434);\n }\n\n .attribute {\n color: var(--token-attribute, #f6a434);\n }\n\n .boolean {\n color: var(--token-boolean, #7c4dff);\n }\n\n .builtin {\n color: var(--token-builtin, #39adb5);\n }\n\n .cdata {\n color: var(--token-cdata, #39adb5);\n }\n\n .char {\n color: var(--token-char, #39adb5);\n }\n\n .class {\n color: var(--token-class, #39adb5);\n }\n\n .class-name,\n .maybe-class-name {\n color: var(--token-class-name, #6182b8);\n }\n\n .comment {\n color: var(--token-comment, #aabfc9);\n }\n\n .constant {\n color: var(--token-constant, #7c4dff);\n }\n\n .deleted {\n color: var(--token-deleted, #e53935);\n }\n\n .doctype {\n color: var(--token-doctype, #aabfc9);\n }\n\n .entity {\n color: var(--token-entity, #e53935);\n }\n\n .function {\n color: var(--token-function, #7c4dff);\n }\n\n .hexcode {\n color: var(--token-hexcode, #f76d47);\n }\n\n .id {\n font-weight: bold;\n color: var(--token-id, #7c4dff);\n }\n\n .important {\n font-weight: bold;\n color: var(--token-important, #7c4dff);\n }\n\n .inserted {\n color: var(--token-inserted, #39adb5);\n }\n\n .keyword {\n color: var(--token-keyword, #7c4dff);\n }\n\n .number {\n color: var(--token-number, #f76d47);\n }\n\n .operator {\n color: var(--token-operator, #39adb5);\n }\n\n .prolog {\n color: var(--token-prolog, #aabfc9);\n }\n\n .property {\n color: var(--token-property, #39adb5);\n }\n\n .pseudo-class {\n color: var(--token-pseudo-class, #f6a434);\n }\n\n .pseudo-element {\n color: var(--token-pseudo-element, #f6a434);\n }\n\n .punctuation {\n color: var(--token-punctuation, #39adb5);\n }\n\n .regex {\n color: var(--token-regex, #6182b8);\n }\n\n .selector {\n color: var(--token-selector, #e53935);\n }\n\n .string {\n color: var(--token-string, #f6a434);\n }\n\n .symbol {\n color: var(--token-symbol, #7c4dff);\n }\n\n .unit {\n color: var(--token-unit, #f76d47);\n }\n\n .url {\n color: var(--token-url, #e53935);\n }\n\n .variable {\n color: var(--token-variable, #e53935);\n }\n\n code[class*='language-'],\n pre,\n .n-editor textarea {\n font-family: 'Liberation Mono', Monaco, Menlo, Consolas, 'Source Code Pro', 'Ubuntu Mono',\n 'Microsoft Yahei', '微软雅黑', Courier, 'Helvetica Neue', 'Lantinghei SC', STXihei,\n WenQuanYi, sans-serif;\n text-align: start;\n white-space: pre-wrap;\n word-wrap: normal;\n word-break: normal;\n word-spacing: normal;\n tab-size: 4;\n hyphens: none;\n }\n\n .deleted:not(.prefix) {\n display: block;\n color: inherit;\n background-color: rgb(255 0 0 / 10%);\n }\n\n .inserted:not(.prefix) {\n display: block;\n color: inherit;\n background-color: rgb(0 255 128 / 10%);\n }\n\n span .inline-color-wrapper {\n display: inline-block;\n overflow: hidden;\n margin: 0 0.333ch;\n border: var(--border-base);\n background: repeating-conic-gradient(#eee 0% 25%, transparent 0% 50%) 0 / 10px 10px;\n outline: 1px solid rgb(0 0 0 / 50%);\n inline-size: 1.333ch;\n block-size: 1.333ch;\n box-sizing: border-box;\n }\n\n span .inline-color {\n display: block;\n inline-size: 120%;\n block-size: 120%;\n }\n\n pre,\n .n-editor {\n position: relative;\n display: block;\n overflow: visible;\n margin: auto;\n border-radius: var(--border-radius);\n max-inline-size: 100%;\n font-size: var(--font-size);\n white-space: pre-wrap;\n background-color: var(--primary-component-bg);\n box-shadow: 0 2px 8px 0 var(--primary-shadow);\n line-height: 20px;\n transition-property: color, background-color, box-shadow;\n }\n\n pre .toolbar::after {\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n z-index: 1;\n display: block;\n overflow: hidden;\n border-radius: var(--border-radius) var(--border-radius) 0 0;\n inline-size: 100%;\n block-size: 24px;\n font-size: var(--font-size);\n font-family: Ubuntu, sans-serif;\n font-weight: bold;\n text-align: center;\n color: var(--text-color);\n background-color: var(--code-toolbar-bg, rgb(220 224 229 / 50%));\n box-shadow: 0 1px 5px rgb(0 0 0 / 10%);\n line-height: 24px;\n text-transform: uppercase;\n backdrop-filter: blur(10px);\n content: attr(data-language) '';\n transition-property: background-color, border-color, color;\n }\n\n pre .toolbar::before {\n position: absolute;\n inset-block-start: 10px;\n inset-inline-start: 12px;\n z-index: 3;\n display: inline-block;\n border-radius: var(--border-radius);\n inline-size: 4px;\n block-size: 4px;\n text-align: center;\n background-color: #fc625d;\n box-shadow:\n 0 0 0 4px #fc625d,\n 20px 0 0 4px #fdbc40,\n 40px 0 0 4px #35cd4b;\n cursor: pointer;\n content: '';\n }\n\n pre .toolbar .toolbar-copy {\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 8px;\n z-index: 3;\n border: none;\n padding: 0;\n background: none;\n outline: none;\n cursor: pointer;\n }\n\n pre .toolbar .toolbar-copy:active {\n transform: scale(0.95);\n }\n\n .toolbar .toolbar-copy::after {\n user-select: none;\n display: block;\n font-size: 24px;\n font-family: sans-serif;\n color: var(--text-color);\n line-height: 24px;\n content: '⎘';\n transition-property: color, transform;\n }\n\n .toolbar .toolbar-copy:hover::after {\n color: var(--primary-color, #5794ff);\n }\n\n pre.line-numbers > code {\n margin: 0 10px 0 54px;\n white-space: inherit;\n counter-reset: linenumber;\n }\n\n pre.line-numbers .line-numbers-rows {\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n overflow-y: auto;\n border-inline-end: 1px solid var(--border-color);\n border-radius: var(--border-radius) 0 0 var(--border-radius);\n padding: 32px 0 8px;\n inline-size: 44px;\n max-block-size: inherit;\n font-size: 100%;\n background-color: var(--primary-component-bg);\n letter-spacing: -1px;\n user-select: none;\n pointer-events: none;\n transition-property: background-color, border-color;\n }\n\n .line-numbers-rows > span {\n display: block;\n counter-increment: linenumber;\n }\n\n .line-numbers-rows > span::before {\n display: block;\n padding-inline-end: 0.8em;\n text-align: end;\n color: #999;\n opacity: 0.5;\n content: counter(linenumber);\n }\n\n pre::-webkit-scrollbar,\n pre ::-webkit-scrollbar {\n display: none;\n }\n\n @media print {\n code[class*='language-'],\n pre[class*='language-'] {\n text-shadow: none;\n }\n }\n `;\n const darkCss = css`\n :host {\n --code-color: #eee;\n --code-lang-style-color: #fd9170;\n --code-toolbar-bg: rgb(63 63 63 / 70%);\n --token-atrule: #c792ea;\n --token-attr-name: #ffcb6b;\n --token-attr-value: #a5e844;\n --token-attribute: #a5e844;\n --token-boolean: #c792ea;\n --token-builtin: #ffcb6b;\n --token-cdata: #80cbc4;\n --token-char: #80cbc4;\n --token-class: #ffcb6b;\n --token-class-name: #f2ff00;\n --token-comment: #616161;\n --token-constant: #c792ea;\n --token-deleted: #f66;\n --token-doctype: #616161;\n --token-entity: #f66;\n --token-function: #c792ea;\n --token-hexcode: #f2ff00;\n --token-id: #c792ea;\n --token-important: #c792ea;\n --token-inserted: #80cbc4;\n --token-keyword: #c792ea;\n --token-number: #fd9170;\n --token-operator: #89ddff;\n --token-prolog: #616161;\n --token-property: #80cbc4;\n --token-pseudo-class: #a5e844;\n --token-pseudo-element: #a5e844;\n --token-punctuation: #89ddff;\n --token-regex: #f2ff00;\n --token-selector: #f66;\n --token-string: #a5e844;\n --token-symbol: #c792ea;\n --token-tag: #f66;\n --token-unit: #fd9170;\n --token-url: #f66;\n --token-variable: #f66;\n }\n `;\n\n const style = createMemo(() => `${isDark() ? darkCss : ''}${baseCss}`);\n\n return style;\n}, getOwner());\n\nexport default prismCss;\n"],"names":["createMemo","createRoot","getOwner","css","theme","prismCss","isDark","baseCss","darkCss"],"mappings":"AAAA,OAASA,cAAAA,CAAU,CAAEC,cAAAA,CAAU,CAAEC,YAAAA,CAAQ,KAAQ,UAAW,AAC5D,QAASC,OAAAA,CAAG,KAAQ,aAAc,AAClC,QAAOC,MAAW,UAAW,CAE7B,IAAMC,EAAWJ,EAAW,KAC1B,GAAM,CAAEK,OAAAA,CAAM,CAAE,CAAGF,EACbG,EAAUJ,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2bpB,CAAC,CACKK,EAAUL,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CpB,CAAC,CAID,OAFcH,EAAW,IAAM,CAAC,EAAEM,IAAWE,EAAU,GAAG,EAAED,EAAQ,CAAC,CAGvE,EAAGL,IAEH,gBAAeG,CAAS"}
1
+ {"version":3,"sources":["../../components/prism/css.ts"],"sourcesContent":["import { createMemo, createRoot, getOwner } from 'solid-js';\nimport { css } from '@moneko/css';\n\nimport theme from '../theme';\n\nconst prismCss = createRoot(() => {\n const { isDark } = theme;\n const baseCss = css`\n [data-copy]::before {\n position: absolute;\n inset-block-start: 32px;\n inset-inline: 0;\n z-index: 1;\n display: inline-block;\n margin: auto;\n border: 1px solid;\n border-radius: var(--border-radius);\n padding: 4px 8px;\n inline-size: fit-content;\n font-size: var(--font-size-sm);\n transition:\n background-color 0.3s,\n color 0.3s,\n border-color 0.3s;\n animation-fill-mode: forwards;\n content: '复制成功';\n }\n\n [data-copy='success']::before {\n border-color: var(--success-border);\n color: var(--success-color);\n background-color: var(--success-bg);\n animation: copy-slide-in var(--transition-duration) var(--transition-timing-function);\n content: '复制成功';\n }\n\n [data-copy='failure']::before {\n border-color: var(--error-border);\n color: var(--error-color);\n background-color: var(--error-bg);\n animation:\n copy-slide-in var(--transition-duration) var(--transition-timing-function),\n error 1s var(--transition-timing-function) 1s;\n content: '复制失败';\n }\n\n [data-copy-exit]::before {\n animation: copy-slide-out var(--transition-duration) forwards\n var(--transition-timing-function);\n }\n\n @keyframes copy-slide-in {\n from {\n transform: translate3d(0, -100%, 0) scale(0);\n opacity: 0;\n }\n\n to {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n }\n\n @keyframes copy-slide-out {\n from {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n\n to {\n transform: translate3d(0, -100%, 0) scale(0);\n opacity: 0;\n }\n }\n\n pre > code {\n display: block;\n overflow: auto;\n margin: 0 16px 8px;\n padding: 32px 0 8px;\n max-inline-size: 100%;\n font-size: var(--font-size);\n white-space: pre-wrap;\n line-height: 1.8;\n pointer-events: auto;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: box-shadow, background-color, border-color, color;\n }\n\n code[class*='language-'],\n pre[class*='language-'] {\n color: var(--code-color, #90a4ae);\n\n &::selection,\n & ::selection {\n background-color: var(--text-selection);\n text-shadow: 0 1px var(--primary-shadow);\n }\n }\n\n .language-css > code,\n .language-sass > code,\n .language-scss > code {\n color: var(--code-lang-style-color, #f76d47);\n }\n\n .line-numbers-rows,\n .toolbar::after,\n .toolbar-copy::after,\n pre {\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n }\n\n [class*='language-'] .namespace {\n opacity: 0.7;\n }\n\n .tag {\n color: var(--token-tag, #e53935);\n }\n\n .atrule {\n color: var(--token-atrule, #7c4dff);\n }\n\n .attr-name {\n color: var(--token-attr-name, #39adb5);\n }\n\n .attr-value {\n color: var(--token-attr-value, #f6a434);\n }\n\n .attribute {\n color: var(--token-attribute, #f6a434);\n }\n\n .boolean {\n color: var(--token-boolean, #7c4dff);\n }\n\n .builtin {\n color: var(--token-builtin, #39adb5);\n }\n\n .cdata {\n color: var(--token-cdata, #39adb5);\n }\n\n .char {\n color: var(--token-char, #39adb5);\n }\n\n .class {\n color: var(--token-class, #39adb5);\n }\n\n .class-name,\n .maybe-class-name {\n color: var(--token-class-name, #6182b8);\n }\n\n .comment {\n color: var(--token-comment, #aabfc9);\n }\n\n .constant {\n color: var(--token-constant, #7c4dff);\n }\n\n .deleted {\n color: var(--token-deleted, #e53935);\n }\n\n .doctype {\n color: var(--token-doctype, #aabfc9);\n }\n\n .entity {\n color: var(--token-entity, #e53935);\n }\n\n .function {\n color: var(--token-function, #7c4dff);\n }\n\n .hexcode {\n color: var(--token-hexcode, #f76d47);\n }\n\n .id {\n font-weight: bold;\n color: var(--token-id, #7c4dff);\n }\n\n .important {\n font-weight: bold;\n color: var(--token-important, #7c4dff);\n }\n\n .inserted {\n color: var(--token-inserted, #39adb5);\n }\n\n .keyword {\n color: var(--token-keyword, #7c4dff);\n }\n\n .number {\n color: var(--token-number, #f76d47);\n }\n\n .operator {\n color: var(--token-operator, #39adb5);\n }\n\n .prolog {\n color: var(--token-prolog, #aabfc9);\n }\n\n .property {\n color: var(--token-property, #39adb5);\n }\n\n .pseudo-class {\n color: var(--token-pseudo-class, #f6a434);\n }\n\n .pseudo-element {\n color: var(--token-pseudo-element, #f6a434);\n }\n\n .punctuation {\n color: var(--token-punctuation, #39adb5);\n }\n\n .regex {\n color: var(--token-regex, #6182b8);\n }\n\n .selector {\n color: var(--token-selector, #e53935);\n }\n\n .string {\n color: var(--token-string, #f6a434);\n }\n\n .symbol {\n color: var(--token-symbol, #7c4dff);\n }\n\n .unit {\n color: var(--token-unit, #f76d47);\n }\n\n .url {\n color: var(--token-url, #e53935);\n }\n\n .variable {\n color: var(--token-variable, #e53935);\n }\n\n code[class*='language-'],\n pre,\n .n-editor textarea {\n font-family: 'Liberation Mono', Monaco, Menlo, Consolas, 'Source Code Pro', 'Ubuntu Mono',\n 'Microsoft Yahei', '微软雅黑', Courier, 'Helvetica Neue', 'Lantinghei SC', STXihei,\n WenQuanYi, sans-serif;\n text-align: start;\n white-space: pre-wrap;\n word-wrap: normal;\n word-break: normal;\n word-spacing: normal;\n tab-size: 4;\n hyphens: none;\n }\n\n .deleted:not(.prefix) {\n display: block;\n color: inherit;\n background-color: rgb(255 0 0 / 10%);\n }\n\n .inserted:not(.prefix) {\n display: block;\n color: inherit;\n background-color: rgb(0 255 128 / 10%);\n }\n\n span .inline-color-wrapper {\n display: inline-block;\n overflow: hidden;\n margin: 0 0.333ch;\n border: var(--border-base);\n background: repeating-conic-gradient(#eee 0% 25%, transparent 0% 50%) 0 / 10px 10px;\n outline: 1px solid rgb(0 0 0 / 50%);\n inline-size: 1.333ch;\n block-size: 1.333ch;\n box-sizing: border-box;\n }\n\n span .inline-color {\n display: block;\n inline-size: 120%;\n block-size: 120%;\n }\n\n pre,\n .n-editor {\n position: relative;\n display: block;\n overflow: visible;\n margin: auto;\n border-radius: var(--border-radius);\n max-inline-size: 100%;\n font-size: var(--font-size);\n white-space: pre-wrap;\n background-color: var(--primary-component-bg);\n box-shadow: 0 2px 8px 0 var(--primary-shadow);\n line-height: 20px;\n transition-property: color, background-color, box-shadow;\n }\n\n pre .toolbar::after {\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n z-index: 1;\n display: block;\n overflow: hidden;\n border-radius: var(--border-radius) var(--border-radius) 0 0;\n inline-size: 100%;\n block-size: 24px;\n font-size: var(--font-size);\n font-family: Ubuntu, sans-serif;\n font-weight: bold;\n text-align: center;\n color: var(--text-color);\n background-color: var(--code-toolbar-bg, rgb(220 224 229 / 50%));\n box-shadow: 0 1px 5px rgb(0 0 0 / 10%);\n line-height: 24px;\n text-transform: uppercase;\n backdrop-filter: blur(10px);\n content: attr(data-language) '';\n transition-property: background-color, border-color, color;\n }\n\n pre .toolbar::before {\n position: absolute;\n inset-block-start: 10px;\n inset-inline-start: 12px;\n z-index: 3;\n display: inline-block;\n border-radius: var(--border-radius);\n inline-size: 4px;\n block-size: 4px;\n text-align: center;\n background-color: #fc625d;\n box-shadow:\n 0 0 0 4px #fc625d,\n 20px 0 0 4px #fdbc40,\n 40px 0 0 4px #35cd4b;\n cursor: pointer;\n content: '';\n }\n\n pre .toolbar .toolbar-copy {\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 8px;\n z-index: 3;\n border: none;\n padding: 0;\n background: none;\n outline: none;\n cursor: pointer;\n }\n\n pre .toolbar .toolbar-copy:active {\n transform: scale(0.95);\n }\n\n .toolbar .toolbar-copy::after {\n user-select: none;\n display: block;\n font-size: 24px;\n font-family: sans-serif;\n color: var(--text-color);\n line-height: 24px;\n content: '⎘';\n transition-property: color, transform;\n }\n\n .toolbar .toolbar-copy:hover::after {\n color: var(--primary-color, #5794ff);\n }\n\n pre.line-numbers > code {\n margin: 0 10px 0 54px;\n white-space: inherit;\n counter-reset: linenumber;\n }\n\n pre.line-numbers .line-numbers-rows {\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n overflow-y: auto;\n border-inline-end: 1px solid var(--border-color);\n border-radius: var(--border-radius) 0 0 var(--border-radius);\n padding: 32px 0 8px;\n inline-size: 44px;\n max-block-size: inherit;\n font-size: 100%;\n background-color: var(--primary-component-bg);\n letter-spacing: -1px;\n user-select: none;\n pointer-events: none;\n transition-property: background-color, border-color;\n }\n\n .line-numbers-rows > span {\n display: block;\n counter-increment: linenumber;\n }\n\n .line-numbers-rows > span::before {\n display: block;\n padding-inline-end: 0.8em;\n text-align: end;\n color: #999;\n opacity: 0.5;\n content: counter(linenumber);\n }\n\n pre::-webkit-scrollbar,\n pre ::-webkit-scrollbar {\n display: none;\n }\n\n @media print {\n code[class*='language-'],\n pre[class*='language-'] {\n text-shadow: none;\n }\n }\n `;\n const darkCss = css`\n :host {\n --code-color: #eee;\n --code-lang-style-color: #fd9170;\n --code-toolbar-bg: rgb(63 63 63 / 70%);\n --token-atrule: #c792ea;\n --token-attr-name: #ffcb6b;\n --token-attr-value: #a5e844;\n --token-attribute: #a5e844;\n --token-boolean: #c792ea;\n --token-builtin: #ffcb6b;\n --token-cdata: #80cbc4;\n --token-char: #80cbc4;\n --token-class: #ffcb6b;\n --token-class-name: #f2ff00;\n --token-comment: #616161;\n --token-constant: #c792ea;\n --token-deleted: #f66;\n --token-doctype: #616161;\n --token-entity: #f66;\n --token-function: #c792ea;\n --token-hexcode: #f2ff00;\n --token-id: #c792ea;\n --token-important: #c792ea;\n --token-inserted: #80cbc4;\n --token-keyword: #c792ea;\n --token-number: #fd9170;\n --token-operator: #89ddff;\n --token-prolog: #616161;\n --token-property: #80cbc4;\n --token-pseudo-class: #a5e844;\n --token-pseudo-element: #a5e844;\n --token-punctuation: #89ddff;\n --token-regex: #f2ff00;\n --token-selector: #f66;\n --token-string: #a5e844;\n --token-symbol: #c792ea;\n --token-tag: #f66;\n --token-unit: #fd9170;\n --token-url: #f66;\n --token-variable: #f66;\n }\n `;\n\n const style = createMemo(() => `${isDark() ? darkCss : ''}${baseCss}`);\n\n return style;\n}, getOwner());\n\nexport default prismCss;\n"],"names":["createMemo","createRoot","getOwner","css","theme","prismCss","isDark","baseCss","darkCss"],"mappings":"AAAA,OAASA,cAAAA,CAAU,CAAEC,cAAAA,CAAU,CAAEC,YAAAA,CAAQ,KAAQ,UAAW,AAC5D,QAASC,OAAAA,CAAG,KAAQ,aAAc,AAElC,QAAOC,MAAW,UAAW,CAE7B,IAAMC,EAAWJ,EAAW,KAC1B,GAAM,CAAEK,OAAAA,CAAM,CAAE,CAAGF,EACbG,EAAUJ,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2bpB,CAAC,CACKK,EAAUL,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CpB,CAAC,CAID,OAFcH,EAAW,IAAM,CAAC,EAAEM,IAAWE,EAAU,GAAG,EAAED,EAAQ,CAAC,CAGvE,EAAGL,IAEH,gBAAeG,CAAS"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/prism/index.ts"],"sourcesContent":["import Prism from 'prismjs';\n// language\nimport 'prismjs/components/prism-bash.js';\nimport 'prismjs/components/prism-clike.js';\nimport 'prismjs/components/prism-css.js';\nimport 'prismjs/components/prism-diff.js';\nimport 'prismjs/components/prism-docker.js';\nimport 'prismjs/components/prism-git.js';\nimport 'prismjs/components/prism-javascript.js';\nimport 'prismjs/components/prism-jsx.js';\nimport 'prismjs/components/prism-latex.js';\nimport 'prismjs/components/prism-less.js';\nimport 'prismjs/components/prism-markdown.js';\nimport 'prismjs/components/prism-markup-templating.js';\nimport 'prismjs/components/prism-markup.js';\nimport 'prismjs/components/prism-regex.js';\nimport 'prismjs/components/prism-rust.js';\nimport 'prismjs/components/prism-sql.js';\nimport 'prismjs/components/prism-swift.js';\nimport 'prismjs/components/prism-toml.js';\nimport 'prismjs/components/prism-tsx.js';\nimport 'prismjs/components/prism-typescript.js';\nimport 'prismjs/components/prism-wasm.js';\nimport 'prismjs/components/prism-yaml.js';\n// plugins\nimport 'prismjs/plugins/diff-highlight/prism-diff-highlight.js';\nimport 'prismjs/plugins/highlight-keywords/prism-highlight-keywords.js';\nimport 'prismjs/plugins/line-numbers/prism-line-numbers.js';\n\nexport default Prism;\n"],"names":["Prism"],"mappings":"AAAA,OAAOA,MAAW,SAAU,AAE5B,OAAO,kCAAmC,AAC1C,OAAO,mCAAoC,AAC3C,OAAO,iCAAkC,AACzC,OAAO,kCAAmC,AAC1C,OAAO,oCAAqC,AAC5C,OAAO,iCAAkC,AACzC,OAAO,wCAAyC,AAChD,OAAO,iCAAkC,AACzC,OAAO,mCAAoC,AAC3C,OAAO,kCAAmC,AAC1C,OAAO,sCAAuC,AAC9C,OAAO,+CAAgD,AACvD,OAAO,oCAAqC,AAC5C,OAAO,mCAAoC,AAC3C,OAAO,kCAAmC,AAC1C,OAAO,iCAAkC,AACzC,OAAO,mCAAoC,AAC3C,OAAO,kCAAmC,AAC1C,OAAO,iCAAkC,AACzC,OAAO,wCAAyC,AAChD,OAAO,kCAAmC,AAC1C,OAAO,kCAAmC,AAE1C,OAAO,wDAAyD,AAChE,OAAO,gEAAiE,AACxE,OAAO,oDAAqD,AAE5D,gBAAeA,CAAM"}
1
+ {"version":3,"sources":["../../components/prism/index.ts"],"sourcesContent":["// language\nimport Prism from 'prismjs';\n\nimport 'prismjs/components/prism-bash.js';\nimport 'prismjs/components/prism-clike.js';\nimport 'prismjs/components/prism-css.js';\nimport 'prismjs/components/prism-diff.js';\nimport 'prismjs/components/prism-docker.js';\nimport 'prismjs/components/prism-git.js';\nimport 'prismjs/components/prism-javascript.js';\nimport 'prismjs/components/prism-jsx.js';\nimport 'prismjs/components/prism-latex.js';\nimport 'prismjs/components/prism-less.js';\nimport 'prismjs/components/prism-markdown.js';\nimport 'prismjs/components/prism-markup-templating.js';\nimport 'prismjs/components/prism-markup.js';\nimport 'prismjs/components/prism-regex.js';\nimport 'prismjs/components/prism-rust.js';\nimport 'prismjs/components/prism-sql.js';\nimport 'prismjs/components/prism-swift.js';\nimport 'prismjs/components/prism-toml.js';\nimport 'prismjs/components/prism-tsx.js';\nimport 'prismjs/components/prism-typescript.js';\nimport 'prismjs/components/prism-wasm.js';\nimport 'prismjs/components/prism-yaml.js';\n// plugins\nimport 'prismjs/plugins/diff-highlight/prism-diff-highlight.js';\nimport 'prismjs/plugins/highlight-keywords/prism-highlight-keywords.js';\nimport 'prismjs/plugins/line-numbers/prism-line-numbers.js';\n\nexport default Prism;\n"],"names":["Prism"],"mappings":"AACA,OAAOA,MAAW,SAAU,AAE5B,OAAO,kCAAmC,AAC1C,OAAO,mCAAoC,AAC3C,OAAO,iCAAkC,AACzC,OAAO,kCAAmC,AAC1C,OAAO,oCAAqC,AAC5C,OAAO,iCAAkC,AACzC,OAAO,wCAAyC,AAChD,OAAO,iCAAkC,AACzC,OAAO,mCAAoC,AAC3C,OAAO,kCAAmC,AAC1C,OAAO,sCAAuC,AAC9C,OAAO,+CAAgD,AACvD,OAAO,oCAAqC,AAC5C,OAAO,mCAAoC,AAC3C,OAAO,kCAAmC,AAC1C,OAAO,iCAAkC,AACzC,OAAO,mCAAoC,AAC3C,OAAO,kCAAmC,AAC1C,OAAO,iCAAkC,AACzC,OAAO,wCAAyC,AAChD,OAAO,kCAAmC,AAC1C,OAAO,kCAAmC,AAE1C,OAAO,wDAAyD,AAChE,OAAO,gEAAiE,AACxE,OAAO,oDAAqD,AAE5D,gBAAeA,CAAM"}
@@ -0,0 +1,10 @@
1
+ ---
2
+ title: 响应内部变化
3
+ subtitle: n-provider
4
+ type: 全局
5
+ icon: 🐩
6
+ ---
7
+
8
+ # Provider
9
+
10
+ > 与组件共享响应性, 当你在其它应用中希望获得 Neko UI 内部的响应性时, 可以考虑使用
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: 响应 scheme 变化
3
+ order: 1
4
+ ---
5
+
6
+ ```tsx
7
+ <n-provider
8
+ onScheme={function (e: CustomEvent<'light' | 'dark' | 'auto'>) {
9
+ console.log(`scheme change: ${e.detail};`);
10
+ }}
11
+ >
12
+ <span>试试点击左上角的图标切换主题, 查看控制台输出</span>
13
+ </n-provider>
14
+ ```
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/provider/index.tsx"],"sourcesContent":["import { createEffect, mergeProps } from 'solid-js';\nimport { customElement, noShadowDOM } from 'solid-element';\nimport theme, { ColorScheme } from '../theme';\nimport type { CustomElement } from '..';\n\nfunction Provider(props: ProviderProps) {\n const { baseStyle, scheme, setScheme } = theme;\n\n noShadowDOM();\n createEffect(() => {\n props.onScheme?.(scheme());\n });\n createEffect(() => {\n if (props.scheme) {\n setScheme(props.scheme);\n }\n });\n return (\n <>\n <style textContent={baseStyle()} />\n {props.children}\n </>\n );\n}\nexport interface ProviderProps {\n /** 主题, 等同于使用 setScheme\n * @default 'auto'\n */\n scheme?: keyof typeof ColorScheme;\n /** 包裹的子项 */\n children?: JSX.Element;\n /** 响应 scheme 变化 */\n onScheme?(scheme: keyof typeof ColorScheme): void;\n}\nexport type ProviderElement = CustomElement<ProviderProps, 'onScheme'>;\n\ncustomElement<ProviderProps>('n-provider', (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onScheme(scheme: keyof typeof ColorScheme) {\n el.dispatchEvent(\n new CustomEvent('scheme', {\n detail: scheme,\n }),\n );\n },\n },\n _,\n );\n\n return <Provider {...props} />;\n});\nexport default Provider;\n"],"names":["createEffect","mergeProps","customElement","noShadowDOM","theme","Provider","props","baseStyle","scheme","setScheme","onScheme","children","_","opt","el","element","dispatchEvent","CustomEvent","detail"],"mappings":"oLAAA,QAASA,gBAAAA,CAAY,CAAEC,cAAAA,CAAU,KAAQ,UAAW,AACpD,QAASC,iBAAAA,CAAa,CAAEC,eAAAA,CAAW,KAAQ,eAAgB,AAC3D,QAAOC,MAA4B,UAAW,CAG9C,SAASC,EAASC,CAAoB,EACpC,GAAM,CAAEC,UAAAA,CAAS,CAAEC,OAAAA,CAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGL,EAWzC,OATAD,IACAH,EAAa,WACXM,EAAMI,QAAQ,EAAdJ,EAAMI,QAAQ,MAAdJ,EAAiBE,IACnB,GACAR,EAAa,KACPM,EAAME,MAAM,EACdC,EAAUH,EAAME,MAAM,CAE1B,uDAGwBD,iBACnBD,EAAMK,QAAQ,EAGrB,CAaAT,EAA6B,aAAc,CAACU,EAAGC,KAC7C,IAAMC,EAAKD,EAAIE,OAAO,CActB,SAAQV,EAbMJ,EACZ,CACES,SAASF,CAAgC,EACvCM,EAAGE,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBC,OAAQV,CACV,GAEJ,CACF,EACAI,GAIJ,EACA,gBAAeP,CAAS"}
1
+ {"version":3,"sources":["../../components/provider/index.tsx"],"sourcesContent":["import { createEffect, mergeProps } from 'solid-js';\nimport { customElement, noShadowDOM } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport theme, { ColorScheme } from '../theme';\n\nfunction Provider(props: ProviderProps) {\n const { baseStyle, scheme, setScheme } = theme;\n\n noShadowDOM();\n createEffect(() => {\n props.onScheme?.(scheme());\n });\n createEffect(() => {\n if (props.scheme) {\n setScheme(props.scheme);\n }\n });\n return (\n <>\n <style textContent={baseStyle()} />\n {props.children}\n </>\n );\n}\nexport interface ProviderProps {\n /** 主题, 等同于使用 setScheme\n * @default 'auto'\n */\n scheme?: keyof typeof ColorScheme;\n /** 包裹的子项 */\n children?: JSX.Element;\n /** 响应 scheme 变化 */\n onScheme?(scheme: keyof typeof ColorScheme): void;\n}\nexport type ProviderElement = CustomElement<ProviderProps, 'onScheme'>;\n\ncustomElement<ProviderProps>('n-provider', (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onScheme(scheme: keyof typeof ColorScheme) {\n el.dispatchEvent(\n new CustomEvent('scheme', {\n detail: scheme,\n }),\n );\n },\n },\n _,\n );\n\n return <Provider {...props} />;\n});\nexport default Provider;\n"],"names":["createEffect","mergeProps","customElement","noShadowDOM","theme","Provider","props","baseStyle","scheme","setScheme","onScheme","children","_","opt","el","element","dispatchEvent","CustomEvent","detail"],"mappings":"oLAAA,QAASA,gBAAAA,CAAY,CAAEC,cAAAA,CAAU,KAAQ,UAAW,AACpD,QAASC,iBAAAA,CAAa,CAAEC,eAAAA,CAAW,KAAQ,eAAgB,AAG3D,QAAOC,MAA4B,UAAW,CAE9C,SAASC,EAASC,CAAoB,EACpC,GAAM,CAAEC,UAAAA,CAAS,CAAEC,OAAAA,CAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGL,EAWzC,OATAD,IACAH,EAAa,WACXM,EAAMI,QAAQ,EAAdJ,EAAMI,QAAQ,MAAdJ,EAAiBE,IACnB,GACAR,EAAa,KACPM,EAAME,MAAM,EACdC,EAAUH,EAAME,MAAM,CAE1B,uDAGwBD,iBACnBD,EAAMK,QAAQ,EAGrB,CAaAT,EAA6B,aAAc,CAACU,EAAGC,KAC7C,IAAMC,EAAKD,EAAIE,OAAO,CActB,SAAQV,EAbMJ,EACZ,CACES,SAASF,CAAgC,EACvCM,EAAGE,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBC,OAAQV,CACV,GAEJ,CACF,EACAI,GAIJ,EACA,gBAAeP,CAAS"}
@@ -0,0 +1,10 @@
1
+ ---
2
+ type: 数据录入
3
+ title: 单选框
4
+ subtitle: n-radio
5
+ icon: ◉
6
+ ---
7
+
8
+ # Radio 单选框
9
+
10
+ > Radio 用于在多个选项中选中单个选项
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: 基本使用
3
+ description: 最简单的用法
4
+ order: 1
5
+ ---
6
+
7
+ ```html
8
+ <n-radio></n-radio>
9
+ <script>
10
+ const el = container.querySelector('n-radio');
11
+
12
+ el.options = ['React', 'Vue', 'SolidJS', 'Flutter'];
13
+ el.value = 'Vue';
14
+ </script>
15
+ ```
16
+
17
+ ```jsx
18
+ <n-radio options={['React', 'Vue', 'SolidJS', 'Flutter']} />
19
+ ```
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: 禁用选项
3
+ description: 禁用单个选项
4
+ order: 2
5
+ ---
6
+
7
+ ```html
8
+ <n-radio></n-radio>
9
+ <script>
10
+ const el = container.querySelector('n-radio');
11
+
12
+ el.options = ['React', 'Vue', { value: 'SolidJS', disabled: true }, 'Flutter'];
13
+ el.value = 'Vue';
14
+ </script>
15
+ ```
16
+
17
+ ```jsx
18
+ <n-radio options={['React', 'Vue', { value: 'SolidJS', disabled: true }, 'Flutter']} />
19
+ ```
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: 禁用全部
3
+ description: 禁用全部选项
4
+ order: 3
5
+ ---
6
+
7
+ ```html
8
+ <n-radio disabled="true"></n-radio>
9
+ <script>
10
+ const el = container.querySelector('n-radio');
11
+
12
+ el.options = ['React', 'Vue', 'SolidJS', 'Flutter'];
13
+ el.value = 'Vue';
14
+ </script>
15
+ ```
16
+
17
+ ```jsx
18
+ <n-radio disabled value="Vue" options={['React', 'Vue', 'SolidJS', 'Flutter']} />
19
+ ```
@@ -0,0 +1,39 @@
1
+ ---
2
+ title: 自定义字段
3
+ description: 自定义节点 'label'、'value'、'options' 的字段
4
+ order: 5
5
+ ---
6
+
7
+ ```html
8
+ <n-radio value="b"></n-radio>
9
+ <script>
10
+ const el = container.querySelector('n-radio');
11
+
12
+ el.options = [
13
+ { code: 'a', name: '选项-1' },
14
+ { code: 'b', name: '选项-2' },
15
+ { code: 'c', name: '选项-3' },
16
+ { code: 'd', name: '选项-4' },
17
+ ];
18
+ el.fieldNames = {
19
+ label: 'name',
20
+ value: 'code',
21
+ };
22
+ </script>
23
+ ```
24
+
25
+ ```jsx
26
+ <n-radio
27
+ value="b"
28
+ field-names={{
29
+ label: 'name',
30
+ value: 'code',
31
+ }}
32
+ options={[
33
+ { code: 'a', name: '选项-1' },
34
+ { code: 'b', name: '选项-2' },
35
+ { code: 'c', name: '选项-3' },
36
+ { code: 'd', name: '选项-4' },
37
+ ]}
38
+ />
39
+ ```
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: 垂直排列
3
+ description: 通过设置 `vertical` 属性来使用垂直排列
4
+ order: 4
5
+ ---
6
+
7
+ ```html
8
+ <n-radio layout="vertical"></n-radio>
9
+ <script>
10
+ const el = container.querySelector('n-radio');
11
+
12
+ el.options = ['React', 'Vue', 'SolidJS', 'Flutter'];
13
+ el.value = 'Vue';
14
+ </script>
15
+ ```
16
+
17
+ ```jsx
18
+ <n-radio layout="vertical" value="Vue" options={['React', 'Vue', 'SolidJS', 'Flutter']} />
19
+ ```
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: 状态
3
+ description: radio提供5种内置的状态
4
+ order: 6
5
+ ---
6
+
7
+ ```html
8
+ <n-radio value="b"></n-radio>
9
+ <script>
10
+ const el = container.querySelector('n-radio');
11
+
12
+ el.options = [
13
+ { value: 'a', label: '默认' },
14
+ { value: 'b', label: '成功', status: 'success' },
15
+ { value: 'c', label: '警告', status: 'warning' },
16
+ { value: 'd', label: '错误', status: 'error' },
17
+ ];
18
+ </script>
19
+ ```
20
+
21
+ ```jsx
22
+ <n-radio
23
+ value="b"
24
+ options={[
25
+ { value: 'a', label: '默认' },
26
+ { value: 'b', label: '成功', status: 'success' },
27
+ { value: 'c', label: '警告', status: 'warning' },
28
+ { value: 'd', label: '错误', status: 'error' },
29
+ ]}
30
+ />
31
+ ```
package/es/radio/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{template as e}from"solid-js/web";import{setAttribute as t}from"solid-js/web";import{insert as i}from"solid-js/web";import{effect as o}from"solid-js/web";import{delegateEvents as l}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{className as a}from"solid-js/web";import{addEventListener as r}from"solid-js/web";let n=e("<style> "),d=e("<style>"),m=e('<section part="box">'),u=e('<div part="item"><input class="radio" type="radio"><label class="label" part="label">');import{For as c,Show as b,createEffect as f,createMemo as v,createSignal as p,mergeProps as h}from"solid-js";import{css as g,cx as y}from"@moneko/css";import{customElement as j}from"solid-element";import{style as w}from"./style";import{FieldName as C}from"../basic-config";import k from"../get-options";import x from"../theme";function $(e){let{baseStyle:l}=x,[h,j]=p(e.defaultValue),$=v(()=>Object.assign({},C,e.fieldNames));function _(t){if(!e.disabled&&!t.disabled){let i=t[$().value];j(i),null==e.onChange||e.onChange.call(e,i)}}function E(e,t){"Enter"===t.key&&_(e)}let A=v(()=>k(e.options,$()));return f(()=>{j(e.value)}),[(()=>{let e=n(),t=e.firstChild;return o(()=>t.data=l()),e})(),(()=>{let e=d();return e.textContent=w,e})(),s(b,{get when(){return e.css},get children(){let t=n(),i=t.firstChild;return o(()=>i.data=g(e.css)),t}}),(()=>{let l=m();return i(l,s(c,{get each(){return A()},children:l=>{let s=e.disabled||l.disabled,n=()=>{_(l)},d=$();return(()=>{let m=u(),c=m.firstChild,b=c.nextSibling;return r(m,"click",n,!0),r(m,"keyup",E.bind(null,l),!0),t(m,"tabindex",s?-1:0),t(m,"aria-disabled",s),r(c,"change",n),c.disabled=s,t(c,"tabindex",-1),i(b,()=>l[d.label]),o(i=>{let o=y("item",l.class,l.status),s=e.name;return o!==i._v$&&a(m,i._v$=o),s!==i._v$2&&t(c,"name",i._v$2=s),i},{_v$:void 0,_v$2:void 0}),o(()=>c.value=l[d.value]),o(()=>c.checked=l[d.value]===h()),m})()}})),o(()=>a(l,y("box",e.layout,e.class))),l})()]}j("n-radio",{class:void 0,css:void 0,name:void 0,disabled:void 0,value:void 0,defaultValue:void 0,options:[],onChange:void 0,fieldNames:void 0,layout:void 0},(e,t)=>{let i=t.element,o=h({layout:i.layout||"horizontal",onChange(e){i.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return f(()=>{i.removeAttribute("options"),i.removeAttribute("field-names"),i.removeAttribute("css")}),s($,o)});export default $;l(["click","keyup"]);
1
+ import{template as e}from"solid-js/web";import{setAttribute as t}from"solid-js/web";import{insert as i}from"solid-js/web";import{effect as o}from"solid-js/web";import{delegateEvents as l}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{className as a}from"solid-js/web";import{addEventListener as r}from"solid-js/web";let n=e("<style> "),d=e("<style>"),m=e('<section part="box">'),u=e('<div part="item"><input class="radio" type="radio"><label class="label" part="label">');import{createEffect as c,createMemo as b,createSignal as f,For as v,mergeProps as p,Show as h}from"solid-js";import{css as g,cx as y}from"@moneko/css";import{customElement as j}from"solid-element";import{FieldName as w}from"../basic-config";import C from"../get-options";import k from"../theme";import{style as x}from"./style";function $(e){let{baseStyle:l}=k,[p,j]=f(e.defaultValue),$=b(()=>Object.assign({},w,e.fieldNames));function _(t){if(!e.disabled&&!t.disabled){let i=t[$().value];j(i),null==e.onChange||e.onChange.call(e,i)}}function E(e,t){"Enter"===t.key&&_(e)}let A=b(()=>C(e.options,$()));return c(()=>{j(e.value)}),[(()=>{let e=n(),t=e.firstChild;return o(()=>t.data=l()),e})(),(()=>{let e=d();return e.textContent=x,e})(),s(h,{get when(){return e.css},get children(){let t=n(),i=t.firstChild;return o(()=>i.data=g(e.css)),t}}),(()=>{let l=m();return i(l,s(v,{get each(){return A()},children:l=>{let s=e.disabled||l.disabled,n=()=>{_(l)},d=$();return(()=>{let m=u(),c=m.firstChild,b=c.nextSibling;return r(m,"click",n,!0),r(m,"keyup",E.bind(null,l),!0),t(m,"tabindex",s?-1:0),t(m,"aria-disabled",s),r(c,"change",n),c.disabled=s,t(c,"tabindex",-1),i(b,()=>l[d.label]),o(i=>{let o=y("item",l.class,l.status),s=e.name;return o!==i._v$&&a(m,i._v$=o),s!==i._v$2&&t(c,"name",i._v$2=s),i},{_v$:void 0,_v$2:void 0}),o(()=>c.value=l[d.value]),o(()=>c.checked=l[d.value]===p()),m})()}})),o(()=>a(l,y("box",e.layout,e.class))),l})()]}j("n-radio",{class:void 0,css:void 0,name:void 0,disabled:void 0,value:void 0,defaultValue:void 0,options:[],onChange:void 0,fieldNames:void 0,layout:void 0},(e,t)=>{let i=t.element,o=p({layout:i.layout||"horizontal",onChange(e){i.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return c(()=>{i.removeAttribute("options"),i.removeAttribute("field-names"),i.removeAttribute("css")}),s($,o)});export default $;l(["click","keyup"]);
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/radio/index.tsx"],"sourcesContent":["import { For, Show, createEffect, createMemo, createSignal, mergeProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport { FieldName } from '../basic-config';\nimport getOptions from '../get-options';\nimport theme from '../theme';\nimport type { BaseOption, BasicConfig, CustomElement } from '..';\n\nexport interface RadioOption extends Omit<BaseOption, 'icon'> {\n /** 值 */\n value?: string;\n}\n\nexport interface RadioProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** input[type=\"radio\"] 的 name 属性 */\n name?: string;\n /** 只读 */\n disabled?: boolean;\n /** 值 */\n value?: string;\n /** 默认值 */\n defaultValue?: string;\n /** 选项数据 */\n options?: (RadioOption | string)[];\n /** 自定义节点 'label'、'value'、'options' 的字段 */\n fieldNames?: BasicConfig['fieldName'];\n /** 值修改时的回调方法 */\n onChange?(val: string): void;\n /** 选项排列方式\n * @default 'horizontal'\n */\n layout?: 'vertical' | 'horizontal';\n}\n\nfunction Radio(props: RadioProps) {\n const { baseStyle } = theme;\n const [value, setValue] = createSignal(props.defaultValue);\n const fieldNames = createMemo(() => Object.assign({}, FieldName, props.fieldNames));\n\n function onChange(item: RadioOption) {\n if (!props.disabled && !item.disabled) {\n const next = item[fieldNames().value]!;\n\n setValue(next);\n props.onChange?.(next);\n }\n }\n function onKeyUp(item: RadioOption, e: KeyboardEvent) {\n if (e.key === 'Enter') {\n onChange(item);\n }\n }\n const options = createMemo(() => {\n return getOptions(props.options, fieldNames());\n });\n\n createEffect(() => {\n setValue(props.value);\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 <section class={cx('box', props.layout, props.class)} part=\"box\">\n <For each={options()}>\n {(item) => {\n const readOnly = props.disabled || item.disabled;\n const handleChange = () => {\n onChange(item);\n };\n const fieldName = fieldNames();\n\n return (\n <div\n class={cx('item', item.class, item.status)}\n part=\"item\"\n tabindex={readOnly ? -1 : 0}\n aria-disabled={readOnly}\n onKeyUp={onKeyUp.bind(null, item)}\n onClick={handleChange}\n >\n <input\n class=\"radio\"\n type=\"radio\"\n name={props.name}\n value={item[fieldName.value]}\n disabled={readOnly}\n tabindex={-1}\n checked={item[fieldName.value] === value()}\n onChange={handleChange}\n />\n <label class=\"label\" part=\"label\">\n {item[fieldName.label]}\n </label>\n </div>\n );\n }}\n </For>\n </section>\n </>\n );\n}\n\nexport type RadioElement = CustomElement<RadioProps>;\n\ncustomElement<RadioProps>(\n 'n-radio',\n {\n class: void 0,\n css: void 0,\n name: void 0,\n disabled: void 0,\n value: void 0,\n defaultValue: void 0,\n options: [],\n onChange: void 0,\n fieldNames: void 0,\n layout: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n layout: el.layout || 'horizontal',\n onChange(next: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: next,\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 <Radio {...props} />;\n },\n);\nexport default Radio;\n"],"names":["For","Show","createEffect","createMemo","createSignal","mergeProps","css","cx","customElement","style","FieldName","getOptions","theme","Radio","props","baseStyle","value","setValue","defaultValue","fieldNames","Object","assign","onChange","item","disabled","next","onKeyUp","e","key","options","readOnly","handleChange","fieldName","bind","label","class","status","name","layout","_","opt","el","element","dispatchEvent","CustomEvent","detail","removeAttribute"],"mappings":"ifAAA,QAASA,OAAAA,CAAG,CAAEC,QAAAA,CAAI,CAAEC,gBAAAA,CAAY,CAAEC,cAAAA,CAAU,CAAEC,gBAAAA,CAAY,CAAEC,cAAAA,CAAU,KAAQ,UAAW,AACzF,QAASC,OAAAA,CAAG,CAAEC,MAAAA,CAAE,KAAQ,aAAc,AACtC,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAC9C,QAASC,SAAAA,CAAK,KAAQ,SAAU,AAChC,QAASC,aAAAA,CAAS,KAAQ,iBAAkB,AAC5C,QAAOC,MAAgB,gBAAiB,AACxC,QAAOC,MAAW,UAAW,CAiC7B,SAASC,EAAMC,CAAiB,EAC9B,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGH,EAChB,CAACI,EAAOC,EAAS,CAAGb,EAAaU,EAAMI,YAAY,EACnDC,EAAahB,EAAW,IAAMiB,OAAOC,MAAM,CAAC,CAAC,EAAGX,EAAWI,EAAMK,UAAU,GAEjF,SAASG,EAASC,CAAiB,EACjC,GAAI,CAACT,EAAMU,QAAQ,EAAI,CAACD,EAAKC,QAAQ,CAAE,CACrC,IAAMC,EAAOF,CAAI,CAACJ,IAAaH,KAAK,CAAC,CAErCC,EAASQ,SACTX,EAAMQ,QAAQ,EAAdR,EAAMQ,QAAQ,MAAdR,EAAiBW,EACnB,CACF,CACA,SAASC,EAAQH,CAAiB,CAAEI,CAAgB,EACpC,UAAVA,EAAEC,GAAG,EACPN,EAASC,EAEb,CACA,IAAMM,EAAU1B,EAAW,IAClBQ,EAAWG,EAAMe,OAAO,CAAEV,MAOnC,OAJAjB,EAAa,KACXe,EAASH,EAAME,KAAK,CACtB,uDAIwBD,gDACAN,UACnBR,qBAAWa,EAAMR,GAAG,8DACCA,EAAIQ,EAAMR,GAAG,qCAGhCN,qBAAU6B,cACR,AAACN,IACA,IAAMO,EAAWhB,EAAMU,QAAQ,EAAID,EAAKC,QAAQ,CAC1CO,EAAe,KACnBT,EAASC,EACX,EACMS,EAAYb,IAElB,wEAOaY,kBADAL,EAAQO,IAAI,CAAC,KAAMV,sBAFlBO,EAAW,GAAK,uBACXA,gBAYHC,cAHAD,iBACA,YAKTP,CAAI,CAACS,EAAUE,KAAK,CAAC,cAlBjB3B,EAAG,OAAQgB,EAAKY,KAAK,CAAEZ,EAAKa,MAAM,IAUjCtB,EAAMuB,IAAI,4GACTd,CAAI,CAACS,EAAUhB,KAAK,CAAC,kBAGnBO,CAAI,CAACS,EAAUhB,KAAK,CAAC,GAAKA,UAQ3C,eAjCYT,EAAG,MAAOO,EAAMwB,MAAM,CAAExB,EAAMqB,KAAK,UAsCzD,CAIA3B,EACE,UACA,CACE2B,MAAO,KAAK,EACZ7B,IAAK,KAAK,EACV+B,KAAM,KAAK,EACXb,SAAU,KAAK,EACfR,MAAO,KAAK,EACZE,aAAc,KAAK,EACnBW,QAAS,EAAE,CACXP,SAAU,KAAK,EACfH,WAAY,KAAK,EACjBmB,OAAQ,KAAK,CACf,EACA,CAACC,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChB5B,EAAQT,EACZ,CACEiC,OAAQG,EAAGH,MAAM,EAAI,aACrBhB,SAASG,CAAY,EACnBgB,EAAGE,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBC,OAAQpB,CACV,GAEJ,CACF,EACAc,GAQF,OALArC,EAAa,KACXuC,EAAGK,eAAe,CAAC,WACnBL,EAAGK,eAAe,CAAC,eACnBL,EAAGK,eAAe,CAAC,MACrB,KACQjC,EAAUC,EACpB,EAEF,gBAAeD,CAAM"}
1
+ {"version":3,"sources":["../../components/radio/index.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, For, mergeProps, Show } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { BaseOption, BasicConfig, CustomElement } from '..';\nimport { FieldName } from '../basic-config';\nimport getOptions from '../get-options';\nimport theme from '../theme';\n\nimport { style } from './style';\n\nexport interface RadioOption extends Omit<BaseOption, 'icon'> {\n /** 值 */\n value?: string;\n}\n\nexport interface RadioProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** input[type=\"radio\"] 的 name 属性 */\n name?: string;\n /** 只读 */\n disabled?: boolean;\n /** 值 */\n value?: string;\n /** 默认值 */\n defaultValue?: string;\n /** 选项数据 */\n options?: (RadioOption | string)[];\n /** 自定义节点 'label'、'value'、'options' 的字段 */\n fieldNames?: BasicConfig['fieldName'];\n /** 值修改时的回调方法 */\n onChange?(val: string): void;\n /** 选项排列方式\n * @default 'horizontal'\n */\n layout?: 'vertical' | 'horizontal';\n}\n\nfunction Radio(props: RadioProps) {\n const { baseStyle } = theme;\n const [value, setValue] = createSignal(props.defaultValue);\n const fieldNames = createMemo(() => Object.assign({}, FieldName, props.fieldNames));\n\n function onChange(item: RadioOption) {\n if (!props.disabled && !item.disabled) {\n const next = item[fieldNames().value]!;\n\n setValue(next);\n props.onChange?.(next);\n }\n }\n function onKeyUp(item: RadioOption, e: KeyboardEvent) {\n if (e.key === 'Enter') {\n onChange(item);\n }\n }\n const options = createMemo(() => {\n return getOptions(props.options, fieldNames());\n });\n\n createEffect(() => {\n setValue(props.value);\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 <section class={cx('box', props.layout, props.class)} part=\"box\">\n <For each={options()}>\n {(item) => {\n const readOnly = props.disabled || item.disabled;\n const handleChange = () => {\n onChange(item);\n };\n const fieldName = fieldNames();\n\n return (\n <div\n class={cx('item', item.class, item.status)}\n part=\"item\"\n tabindex={readOnly ? -1 : 0}\n aria-disabled={readOnly}\n onKeyUp={onKeyUp.bind(null, item)}\n onClick={handleChange}\n >\n <input\n class=\"radio\"\n type=\"radio\"\n name={props.name}\n value={item[fieldName.value]}\n disabled={readOnly}\n tabindex={-1}\n checked={item[fieldName.value] === value()}\n onChange={handleChange}\n />\n <label class=\"label\" part=\"label\">\n {item[fieldName.label]}\n </label>\n </div>\n );\n }}\n </For>\n </section>\n </>\n );\n}\n\nexport type RadioElement = CustomElement<RadioProps>;\n\ncustomElement<RadioProps>(\n 'n-radio',\n {\n class: void 0,\n css: void 0,\n name: void 0,\n disabled: void 0,\n value: void 0,\n defaultValue: void 0,\n options: [],\n onChange: void 0,\n fieldNames: void 0,\n layout: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n layout: el.layout || 'horizontal',\n onChange(next: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: next,\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 <Radio {...props} />;\n },\n);\nexport default Radio;\n"],"names":["createEffect","createMemo","createSignal","For","mergeProps","Show","css","cx","customElement","FieldName","getOptions","theme","style","Radio","props","baseStyle","value","setValue","defaultValue","fieldNames","Object","assign","onChange","item","disabled","next","onKeyUp","e","key","options","readOnly","handleChange","fieldName","bind","label","class","status","name","layout","_","opt","el","element","dispatchEvent","CustomEvent","detail","removeAttribute"],"mappings":"ifAAA,QAASA,gBAAAA,CAAY,CAAEC,cAAAA,CAAU,CAAEC,gBAAAA,CAAY,CAAEC,OAAAA,CAAG,CAAEC,cAAAA,CAAU,CAAEC,QAAAA,CAAI,KAAQ,UAAW,AACzF,QAASC,OAAAA,CAAG,CAAEC,MAAAA,CAAE,KAAQ,aAAc,AACtC,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAG9C,QAASC,aAAAA,CAAS,KAAQ,iBAAkB,AAC5C,QAAOC,MAAgB,gBAAiB,AACxC,QAAOC,MAAW,UAAW,AAE7B,QAASC,SAAAA,CAAK,KAAQ,SAAU,CAgChC,SAASC,EAAMC,CAAiB,EAC9B,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGJ,EAChB,CAACK,EAAOC,EAAS,CAAGf,EAAaY,EAAMI,YAAY,EACnDC,EAAalB,EAAW,IAAMmB,OAAOC,MAAM,CAAC,CAAC,EAAGZ,EAAWK,EAAMK,UAAU,GAEjF,SAASG,EAASC,CAAiB,EACjC,GAAI,CAACT,EAAMU,QAAQ,EAAI,CAACD,EAAKC,QAAQ,CAAE,CACrC,IAAMC,EAAOF,CAAI,CAACJ,IAAaH,KAAK,CAAC,CAErCC,EAASQ,SACTX,EAAMQ,QAAQ,EAAdR,EAAMQ,QAAQ,MAAdR,EAAiBW,EACnB,CACF,CACA,SAASC,EAAQH,CAAiB,CAAEI,CAAgB,EACpC,UAAVA,EAAEC,GAAG,EACPN,EAASC,EAEb,CACA,IAAMM,EAAU5B,EAAW,IAClBS,EAAWI,EAAMe,OAAO,CAAEV,MAOnC,OAJAnB,EAAa,KACXiB,EAASH,EAAME,KAAK,CACtB,uDAIwBD,gDACAH,UACnBP,qBAAWS,EAAMR,GAAG,8DACCA,EAAIQ,EAAMR,GAAG,qCAGhCH,qBAAU0B,cACR,AAACN,IACA,IAAMO,EAAWhB,EAAMU,QAAQ,EAAID,EAAKC,QAAQ,CAC1CO,EAAe,KACnBT,EAASC,EACX,EACMS,EAAYb,IAElB,wEAOaY,kBADAL,EAAQO,IAAI,CAAC,KAAMV,sBAFlBO,EAAW,GAAK,uBACXA,gBAYHC,cAHAD,iBACA,YAKTP,CAAI,CAACS,EAAUE,KAAK,CAAC,cAlBjB3B,EAAG,OAAQgB,EAAKY,KAAK,CAAEZ,EAAKa,MAAM,IAUjCtB,EAAMuB,IAAI,4GACTd,CAAI,CAACS,EAAUhB,KAAK,CAAC,kBAGnBO,CAAI,CAACS,EAAUhB,KAAK,CAAC,GAAKA,UAQ3C,eAjCYT,EAAG,MAAOO,EAAMwB,MAAM,CAAExB,EAAMqB,KAAK,UAsCzD,CAIA3B,EACE,UACA,CACE2B,MAAO,KAAK,EACZ7B,IAAK,KAAK,EACV+B,KAAM,KAAK,EACXb,SAAU,KAAK,EACfR,MAAO,KAAK,EACZE,aAAc,KAAK,EACnBW,QAAS,EAAE,CACXP,SAAU,KAAK,EACfH,WAAY,KAAK,EACjBmB,OAAQ,KAAK,CACf,EACA,CAACC,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChB5B,EAAQV,EACZ,CACEkC,OAAQG,EAAGH,MAAM,EAAI,aACrBhB,SAASG,CAAY,EACnBgB,EAAGE,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBC,OAAQpB,CACV,GAEJ,CACF,EACAc,GAQF,OALAvC,EAAa,KACXyC,EAAGK,eAAe,CAAC,WACnBL,EAAGK,eAAe,CAAC,eACnBL,EAAGK,eAAe,CAAC,MACrB,KACQjC,EAAUC,EACpB,EAEF,gBAAeD,CAAM"}
@@ -0,0 +1,10 @@
1
+ ---
2
+ type: 数据展示
3
+ title: 分段控制器
4
+ subtitle: n-segmented
5
+ icon: 💮
6
+ ---
7
+
8
+ # Segmented 分段控制器
9
+
10
+ > 展示多个选项并允许用户选择其中单个选项
@@ -0,0 +1,18 @@
1
+ ---
2
+ title: 基本使用
3
+ description: 最简单的用法
4
+ order: 1
5
+ ---
6
+
7
+ ```html
8
+ <n-segmented default-value="Vue"></n-segmented>
9
+ <script>
10
+ const el = container.querySelector('n-segmented');
11
+
12
+ el.options = ['React', 'Vue', 'SolidJS', 'Flutter'];
13
+ </script>
14
+ ```
15
+
16
+ ```jsx
17
+ <n-segmented default-value="Vue" options={['React', 'Vue', 'SolidJS', 'Flutter']} />
18
+ ```