funda-ui 4.7.615 → 4.7.624

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 (564) hide show
  1. package/.gitattributes +2 -0
  2. package/README.md +116 -2
  3. package/README_PUBLISH.md +328 -0
  4. package/lib/cjs/Date/index.js +39 -2
  5. package/lib/cjs/DynamicFields/index.js +11 -3
  6. package/lib/esm/Date/index.tsx +47 -2
  7. package/lib/esm/DynamicFields/index.tsx +9 -4
  8. package/logo.png +0 -0
  9. package/package.json +589 -43
  10. package/preview.png +0 -0
  11. package/{Date → publish/Date}/index.js +39 -2
  12. package/{DynamicFields → publish/DynamicFields}/index.js +11 -3
  13. package/publish/LICENSE +21 -0
  14. package/publish/README.md +328 -0
  15. package/publish/lib/cjs/Accordion/index.d.ts +2 -0
  16. package/publish/lib/cjs/Accordion/index.js +667 -0
  17. package/publish/lib/cjs/BackToTop/index.d.ts +17 -0
  18. package/publish/lib/cjs/BackToTop/index.js +904 -0
  19. package/publish/lib/cjs/CascadingSelect/index.d.ts +80 -0
  20. package/publish/lib/cjs/CascadingSelect/index.js +3383 -0
  21. package/publish/lib/cjs/CascadingSelectE2E/index.d.ts +91 -0
  22. package/publish/lib/cjs/CascadingSelectE2E/index.js +3988 -0
  23. package/publish/lib/cjs/Chatbox/index.d.ts +101 -0
  24. package/publish/lib/cjs/Chatbox/index.js +7037 -0
  25. package/publish/lib/cjs/Checkbox/index.d.ts +28 -0
  26. package/publish/lib/cjs/Checkbox/index.js +673 -0
  27. package/publish/lib/cjs/ColorPicker/index.d.ts +27 -0
  28. package/publish/lib/cjs/ColorPicker/index.js +662 -0
  29. package/publish/lib/cjs/Date/index.d.ts +70 -0
  30. package/publish/lib/cjs/Date/index.js +6368 -0
  31. package/publish/lib/cjs/DigitalClock/index.d.ts +7 -0
  32. package/publish/lib/cjs/DigitalClock/index.js +402 -0
  33. package/publish/lib/cjs/DragDropList/index.d.ts +45 -0
  34. package/publish/lib/cjs/DragDropList/index.js +1586 -0
  35. package/publish/lib/cjs/DropdownMenu/index.d.ts +38 -0
  36. package/publish/lib/cjs/DropdownMenu/index.js +1507 -0
  37. package/publish/lib/cjs/DynamicFields/index.d.ts +40 -0
  38. package/publish/lib/cjs/DynamicFields/index.js +818 -0
  39. package/publish/lib/cjs/EventCalendar/index.d.ts +61 -0
  40. package/publish/lib/cjs/EventCalendar/index.js +3789 -0
  41. package/publish/lib/cjs/EventCalendarTimeline/index.d.ts +100 -0
  42. package/publish/lib/cjs/EventCalendarTimeline/index.js +6141 -0
  43. package/publish/lib/cjs/File/index.d.ts +40 -0
  44. package/publish/lib/cjs/File/index.js +1751 -0
  45. package/publish/lib/cjs/HorizontalScrollContent/index.d.ts +14 -0
  46. package/publish/lib/cjs/HorizontalScrollContent/index.js +426 -0
  47. package/publish/lib/cjs/Input/index.d.ts +59 -0
  48. package/publish/lib/cjs/Input/index.js +1486 -0
  49. package/publish/lib/cjs/LiveSearch/index.d.ts +70 -0
  50. package/publish/lib/cjs/LiveSearch/index.js +4180 -0
  51. package/publish/lib/cjs/MasonryLayout/index.d.ts +14 -0
  52. package/publish/lib/cjs/MasonryLayout/index.js +689 -0
  53. package/publish/lib/cjs/ModalDialog/index.d.ts +83 -0
  54. package/publish/lib/cjs/ModalDialog/index.js +1719 -0
  55. package/publish/lib/cjs/ModeSwitch/index.d.ts +17 -0
  56. package/publish/lib/cjs/ModeSwitch/index.js +202 -0
  57. package/publish/lib/cjs/MultilevelDropdownMenu/index.d.ts +20 -0
  58. package/publish/lib/cjs/MultilevelDropdownMenu/index.js +930 -0
  59. package/publish/lib/cjs/MultipleCheckboxes/index.d.ts +66 -0
  60. package/publish/lib/cjs/MultipleCheckboxes/index.js +2337 -0
  61. package/publish/lib/cjs/MultipleSelect/index.d.ts +65 -0
  62. package/publish/lib/cjs/MultipleSelect/index.js +4197 -0
  63. package/publish/lib/cjs/NativeSelect/index.d.ts +37 -0
  64. package/publish/lib/cjs/NativeSelect/index.js +2052 -0
  65. package/publish/lib/cjs/NumberInput/index.d.ts +40 -0
  66. package/publish/lib/cjs/NumberInput/index.js +1191 -0
  67. package/publish/lib/cjs/Pagination/index.d.ts +51 -0
  68. package/publish/lib/cjs/Pagination/index.js +612 -0
  69. package/publish/lib/cjs/Radio/index.d.ts +45 -0
  70. package/publish/lib/cjs/Radio/index.js +1838 -0
  71. package/publish/lib/cjs/RangeSlider/index.d.ts +22 -0
  72. package/publish/lib/cjs/RangeSlider/index.js +2696 -0
  73. package/publish/lib/cjs/Refresher/index.d.ts +22 -0
  74. package/publish/lib/cjs/Refresher/index.js +564 -0
  75. package/publish/lib/cjs/RootPortal/index.d.ts +9 -0
  76. package/publish/lib/cjs/RootPortal/index.js +148 -0
  77. package/publish/lib/cjs/ScrollReveal/index.d.ts +21 -0
  78. package/publish/lib/cjs/ScrollReveal/index.js +401 -0
  79. package/publish/lib/cjs/Scrollbar/index.d.ts +17 -0
  80. package/publish/lib/cjs/Scrollbar/index.js +1107 -0
  81. package/publish/lib/cjs/SearchBar/index.d.ts +41 -0
  82. package/publish/lib/cjs/SearchBar/index.js +701 -0
  83. package/publish/lib/cjs/Select/index.d.ts +107 -0
  84. package/publish/lib/cjs/Select/index.js +6540 -0
  85. package/publish/lib/cjs/ShowMoreLess/index.d.ts +36 -0
  86. package/publish/lib/cjs/ShowMoreLess/index.js +387 -0
  87. package/publish/lib/cjs/SplitterPanel/index.d.ts +20 -0
  88. package/publish/lib/cjs/SplitterPanel/index.js +800 -0
  89. package/publish/lib/cjs/Stepper/index.d.ts +26 -0
  90. package/publish/lib/cjs/Stepper/index.js +568 -0
  91. package/publish/lib/cjs/Switch/index.d.ts +25 -0
  92. package/publish/lib/cjs/Switch/index.js +630 -0
  93. package/publish/lib/cjs/Table/index.d.ts +12 -0
  94. package/publish/lib/cjs/Table/index.js +2311 -0
  95. package/publish/lib/cjs/Tabs/index.d.ts +3 -0
  96. package/publish/lib/cjs/Tabs/index.js +771 -0
  97. package/publish/lib/cjs/TagInput/index.d.ts +37 -0
  98. package/publish/lib/cjs/TagInput/index.js +1227 -0
  99. package/publish/lib/cjs/Textarea/index.d.ts +50 -0
  100. package/publish/lib/cjs/Textarea/index.js +1795 -0
  101. package/publish/lib/cjs/Toast/index.d.ts +3 -0
  102. package/publish/lib/cjs/Toast/index.js +1345 -0
  103. package/publish/lib/cjs/Tooltip/index.d.ts +38 -0
  104. package/publish/lib/cjs/Tooltip/index.js +1778 -0
  105. package/publish/lib/cjs/Tree/index.d.ts +78 -0
  106. package/publish/lib/cjs/Tree/index.js +2330 -0
  107. package/publish/lib/cjs/Utils/anim.d.ts +11 -0
  108. package/publish/lib/cjs/Utils/anim.js +846 -0
  109. package/publish/lib/cjs/Utils/bodyScrollLock.d.ts +8 -0
  110. package/publish/lib/cjs/Utils/bodyScrollLock.js +311 -0
  111. package/publish/lib/cjs/Utils/buffer.d.ts +67 -0
  112. package/publish/lib/cjs/Utils/buffer.js +343 -0
  113. package/publish/lib/cjs/Utils/cls.d.ts +15 -0
  114. package/publish/lib/cjs/Utils/cls.js +124 -0
  115. package/publish/lib/cjs/Utils/convert.d.ts +25 -0
  116. package/publish/lib/cjs/Utils/convert.js +109 -0
  117. package/publish/lib/cjs/Utils/date.d.ts +227 -0
  118. package/publish/lib/cjs/Utils/date.js +587 -0
  119. package/publish/lib/cjs/Utils/dom.d.ts +13 -0
  120. package/publish/lib/cjs/Utils/dom.js +215 -0
  121. package/publish/lib/cjs/Utils/easing.d.ts +29 -0
  122. package/publish/lib/cjs/Utils/easing.js +221 -0
  123. package/publish/lib/cjs/Utils/extract.d.ts +66 -0
  124. package/publish/lib/cjs/Utils/extract.js +195 -0
  125. package/publish/lib/cjs/Utils/format-string.d.ts +65 -0
  126. package/publish/lib/cjs/Utils/format-string.js +167 -0
  127. package/publish/lib/cjs/Utils/formdata.d.ts +13 -0
  128. package/publish/lib/cjs/Utils/formdata.js +131 -0
  129. package/publish/lib/cjs/Utils/getElementProperty.d.ts +52 -0
  130. package/publish/lib/cjs/Utils/getElementProperty.js +189 -0
  131. package/publish/lib/cjs/Utils/guid.d.ts +7 -0
  132. package/publish/lib/cjs/Utils/guid.js +67 -0
  133. package/publish/lib/cjs/Utils/initDefaultOptions.d.ts +10 -0
  134. package/publish/lib/cjs/Utils/initDefaultOptions.js +607 -0
  135. package/publish/lib/cjs/Utils/inputsCalculation.d.ts +28 -0
  136. package/publish/lib/cjs/Utils/inputsCalculation.js +188 -0
  137. package/publish/lib/cjs/Utils/math.d.ts +77 -0
  138. package/publish/lib/cjs/Utils/math.js +305 -0
  139. package/publish/lib/cjs/Utils/object.d.ts +18 -0
  140. package/publish/lib/cjs/Utils/object.js +120 -0
  141. package/publish/lib/cjs/Utils/os.d.ts +2 -0
  142. package/publish/lib/cjs/Utils/os.js +104 -0
  143. package/publish/lib/cjs/Utils/performance.d.ts +3 -0
  144. package/publish/lib/cjs/Utils/performance.js +94 -0
  145. package/publish/lib/cjs/Utils/sanitize.d.ts +14 -0
  146. package/publish/lib/cjs/Utils/sanitize.js +87 -0
  147. package/publish/lib/cjs/Utils/time.d.ts +40 -0
  148. package/publish/lib/cjs/Utils/time.js +177 -0
  149. package/publish/lib/cjs/Utils/tree.d.ts +40 -0
  150. package/publish/lib/cjs/Utils/tree.js +195 -0
  151. package/publish/lib/cjs/Utils/useAutosizeTextArea.d.ts +10 -0
  152. package/publish/lib/cjs/Utils/useAutosizeTextArea.js +231 -0
  153. package/publish/lib/cjs/Utils/useBoundedDrag.d.ts +125 -0
  154. package/publish/lib/cjs/Utils/useBoundedDrag.js +380 -0
  155. package/publish/lib/cjs/Utils/useClickOutside.d.ts +33 -0
  156. package/publish/lib/cjs/Utils/useClickOutside.js +166 -0
  157. package/publish/lib/cjs/Utils/useComId.d.ts +6 -0
  158. package/publish/lib/cjs/Utils/useComId.js +114 -0
  159. package/publish/lib/cjs/Utils/useDebounce.d.ts +20 -0
  160. package/publish/lib/cjs/Utils/useDebounce.js +138 -0
  161. package/publish/lib/cjs/Utils/useDragDropPosition.d.ts +166 -0
  162. package/publish/lib/cjs/Utils/useDragDropPosition.js +453 -0
  163. package/publish/lib/cjs/Utils/useDraggable.d.ts +62 -0
  164. package/publish/lib/cjs/Utils/useDraggable.js +348 -0
  165. package/publish/lib/cjs/Utils/useHistoryTracker.d.ts +166 -0
  166. package/publish/lib/cjs/Utils/useHistoryTracker.js +649 -0
  167. package/publish/lib/cjs/Utils/useInterval.d.ts +5 -0
  168. package/publish/lib/cjs/Utils/useInterval.js +168 -0
  169. package/publish/lib/cjs/Utils/useIsMobile.d.ts +2 -0
  170. package/publish/lib/cjs/Utils/useIsMobile.js +232 -0
  171. package/publish/lib/cjs/Utils/useKeyPress.d.ts +44 -0
  172. package/publish/lib/cjs/Utils/useKeyPress.js +200 -0
  173. package/publish/lib/cjs/Utils/useSessionStorageListener.d.ts +2 -0
  174. package/publish/lib/cjs/Utils/useSessionStorageListener.js +157 -0
  175. package/publish/lib/cjs/Utils/useStreamController.d.ts +71 -0
  176. package/publish/lib/cjs/Utils/useStreamController.js +494 -0
  177. package/publish/lib/cjs/Utils/useThrottle.d.ts +2 -0
  178. package/publish/lib/cjs/Utils/useThrottle.js +136 -0
  179. package/publish/lib/cjs/Utils/useWindowScroll.d.ts +12 -0
  180. package/publish/lib/cjs/Utils/useWindowScroll.js +217 -0
  181. package/publish/lib/cjs/Utils/validate.d.ts +53 -0
  182. package/publish/lib/cjs/Utils/validate.js +536 -0
  183. package/publish/lib/cjs/Utils/viewport.d.ts +7 -0
  184. package/publish/lib/cjs/Utils/viewport.js +64 -0
  185. package/publish/lib/cjs/index.d.ts +49 -0
  186. package/publish/lib/cjs/index.js +50 -0
  187. package/publish/lib/css/BackToTop/index.css +34 -0
  188. package/publish/lib/css/CascadingSelect/index.css +245 -0
  189. package/publish/lib/css/CascadingSelectE2E/index.css +245 -0
  190. package/publish/lib/css/Chatbox/index.css +774 -0
  191. package/publish/lib/css/ColorPicker/index.css +58 -0
  192. package/publish/lib/css/Date/index.css +434 -0
  193. package/publish/lib/css/DragDropList/index.css +188 -0
  194. package/publish/lib/css/DropdownMenu/index.css +151 -0
  195. package/publish/lib/css/EventCalendar/index.css +300 -0
  196. package/publish/lib/css/EventCalendarTimeline/index.css +694 -0
  197. package/publish/lib/css/HorizontalScrollContent/index.css +70 -0
  198. package/publish/lib/css/LiveSearch/index.css +88 -0
  199. package/publish/lib/css/MultilevelDropdownMenu/index.css +38 -0
  200. package/publish/lib/css/MultipleSelect/index.css +313 -0
  201. package/publish/lib/css/RangeSlider/index.css +150 -0
  202. package/publish/lib/css/Scrollbar/index.css +176 -0
  203. package/publish/lib/css/Select/index.css +434 -0
  204. package/publish/lib/css/ShowMoreLess/index.css +23 -0
  205. package/publish/lib/css/SplitterPanel/index.css +63 -0
  206. package/publish/lib/css/Stepper/index.css +250 -0
  207. package/publish/lib/css/Table/index.css +584 -0
  208. package/publish/lib/css/TagInput/index.css +91 -0
  209. package/publish/lib/css/Toast/index.css +149 -0
  210. package/publish/lib/css/Tooltip/index.css +198 -0
  211. package/publish/lib/css/Tree/index.css +237 -0
  212. package/publish/lib/esm/Accordion/Accordion.tsx +185 -0
  213. package/publish/lib/esm/Accordion/AccordionItem.tsx +248 -0
  214. package/publish/lib/esm/Accordion/index.tsx +2 -0
  215. package/publish/lib/esm/BackToTop/index.scss +47 -0
  216. package/publish/lib/esm/BackToTop/index.tsx +177 -0
  217. package/publish/lib/esm/CascadingSelect/Group.tsx +83 -0
  218. package/publish/lib/esm/CascadingSelect/index.scss +330 -0
  219. package/publish/lib/esm/CascadingSelect/index.tsx +1397 -0
  220. package/publish/lib/esm/CascadingSelectE2E/Group.tsx +87 -0
  221. package/publish/lib/esm/CascadingSelectE2E/index.scss +333 -0
  222. package/publish/lib/esm/CascadingSelectE2E/index.tsx +1684 -0
  223. package/publish/lib/esm/Chatbox/PureLoader.tsx +47 -0
  224. package/publish/lib/esm/Chatbox/TypingEffect.tsx +56 -0
  225. package/publish/lib/esm/Chatbox/index.scss +966 -0
  226. package/publish/lib/esm/Chatbox/index.tsx +1742 -0
  227. package/publish/lib/esm/Chatbox/utils/func.ts +180 -0
  228. package/publish/lib/esm/Checkbox/index.tsx +206 -0
  229. package/publish/lib/esm/ColorPicker/index.scss +91 -0
  230. package/publish/lib/esm/ColorPicker/index.tsx +204 -0
  231. package/publish/lib/esm/Date/Calendar.tsx +723 -0
  232. package/publish/lib/esm/Date/index.scss +567 -0
  233. package/publish/lib/esm/Date/index.tsx +1797 -0
  234. package/publish/lib/esm/Date/localization/en_US.js +13 -0
  235. package/publish/lib/esm/Date/localization/zh_CN.js +12 -0
  236. package/publish/lib/esm/DigitalClock/index.tsx +74 -0
  237. package/publish/lib/esm/DragDropList/index.scss +245 -0
  238. package/publish/lib/esm/DragDropList/index.tsx +504 -0
  239. package/publish/lib/esm/DropdownMenu/Option.tsx +55 -0
  240. package/publish/lib/esm/DropdownMenu/index.scss +205 -0
  241. package/publish/lib/esm/DropdownMenu/index.tsx +378 -0
  242. package/publish/lib/esm/DynamicFields/index.tsx +409 -0
  243. package/publish/lib/esm/EventCalendar/index.scss +407 -0
  244. package/publish/lib/esm/EventCalendar/index.tsx +1005 -0
  245. package/publish/lib/esm/EventCalendarTimeline/index.scss +926 -0
  246. package/publish/lib/esm/EventCalendarTimeline/index.tsx +2686 -0
  247. package/publish/lib/esm/File/index.tsx +477 -0
  248. package/publish/lib/esm/HorizontalScrollContent/index.scss +87 -0
  249. package/publish/lib/esm/HorizontalScrollContent/index.tsx +171 -0
  250. package/publish/lib/esm/Input/index.tsx +641 -0
  251. package/publish/lib/esm/LiveSearch/index.scss +129 -0
  252. package/publish/lib/esm/LiveSearch/index.tsx +1058 -0
  253. package/publish/lib/esm/MasonryLayout/index.tsx +326 -0
  254. package/publish/lib/esm/ModalDialog/index.tsx +572 -0
  255. package/publish/lib/esm/ModeSwitch/index.tsx +82 -0
  256. package/publish/lib/esm/MultilevelDropdownMenu/ItemList.tsx +265 -0
  257. package/publish/lib/esm/MultilevelDropdownMenu/index.scss +79 -0
  258. package/publish/lib/esm/MultilevelDropdownMenu/index.tsx +77 -0
  259. package/publish/lib/esm/MultipleCheckboxes/index.tsx +849 -0
  260. package/publish/lib/esm/MultipleSelect/index.scss +398 -0
  261. package/publish/lib/esm/MultipleSelect/index.tsx +769 -0
  262. package/publish/lib/esm/MultipleSelect/utils/func.ts +63 -0
  263. package/publish/lib/esm/NativeSelect/index.tsx +396 -0
  264. package/publish/lib/esm/NativeSelect/utils/func.ts +51 -0
  265. package/publish/lib/esm/NumberInput/index.tsx +425 -0
  266. package/publish/lib/esm/Pagination/index.tsx +286 -0
  267. package/publish/lib/esm/Pagination/pagination-navigators.tsx +60 -0
  268. package/publish/lib/esm/Radio/index.tsx +694 -0
  269. package/publish/lib/esm/RangeSlider/index.scss +186 -0
  270. package/publish/lib/esm/RangeSlider/index.tsx +241 -0
  271. package/publish/lib/esm/Refresher/index.tsx +121 -0
  272. package/publish/lib/esm/RootPortal/index.tsx +59 -0
  273. package/publish/lib/esm/ScrollReveal/index.tsx +148 -0
  274. package/publish/lib/esm/Scrollbar/index.scss +221 -0
  275. package/publish/lib/esm/Scrollbar/index.tsx +561 -0
  276. package/publish/lib/esm/SearchBar/index.tsx +252 -0
  277. package/publish/lib/esm/Select/index.scss +639 -0
  278. package/publish/lib/esm/Select/index.tsx +3104 -0
  279. package/publish/lib/esm/Select/utils/func.ts +98 -0
  280. package/publish/lib/esm/ShowMoreLess/index.scss +27 -0
  281. package/publish/lib/esm/ShowMoreLess/index.tsx +145 -0
  282. package/publish/lib/esm/SplitterPanel/index.scss +82 -0
  283. package/publish/lib/esm/SplitterPanel/index.tsx +174 -0
  284. package/publish/lib/esm/Stepper/index.scss +315 -0
  285. package/publish/lib/esm/Stepper/index.tsx +325 -0
  286. package/publish/lib/esm/Switch/index.tsx +149 -0
  287. package/publish/lib/esm/Table/Table.tsx +351 -0
  288. package/publish/lib/esm/Table/TableBody.tsx +41 -0
  289. package/publish/lib/esm/Table/TableCaption.tsx +34 -0
  290. package/publish/lib/esm/Table/TableCell.tsx +126 -0
  291. package/publish/lib/esm/Table/TableColgroup.tsx +38 -0
  292. package/publish/lib/esm/Table/TableContext.tsx +26 -0
  293. package/publish/lib/esm/Table/TableFoot.tsx +28 -0
  294. package/publish/lib/esm/Table/TableHead.tsx +28 -0
  295. package/publish/lib/esm/Table/TableRow.tsx +76 -0
  296. package/publish/lib/esm/Table/index.scss +418 -0
  297. package/publish/lib/esm/Table/index.tsx +14 -0
  298. package/publish/lib/esm/Table/utils/DragHandleSprite.tsx +46 -0
  299. package/publish/lib/esm/Table/utils/SortSprite.tsx +63 -0
  300. package/publish/lib/esm/Table/utils/TableFilter.tsx +56 -0
  301. package/publish/lib/esm/Table/utils/ToggleSelection.tsx +255 -0
  302. package/publish/lib/esm/Table/utils/func.ts +182 -0
  303. package/publish/lib/esm/Table/utils/hooks/useTableDraggable.tsx +342 -0
  304. package/publish/lib/esm/Table/utils/hooks/useTableKeyPress.tsx +255 -0
  305. package/publish/lib/esm/Table/utils/hooks/useTableResponsive.tsx +92 -0
  306. package/publish/lib/esm/Table/utils/hooks/useTableSort.tsx +187 -0
  307. package/publish/lib/esm/Tabs/TabList.tsx +50 -0
  308. package/publish/lib/esm/Tabs/TabPanel.tsx +44 -0
  309. package/publish/lib/esm/Tabs/Tabs.tsx +282 -0
  310. package/publish/lib/esm/Tabs/index.tsx +3 -0
  311. package/publish/lib/esm/TagInput/index.scss +126 -0
  312. package/publish/lib/esm/TagInput/index.tsx +379 -0
  313. package/publish/lib/esm/Textarea/index.tsx +621 -0
  314. package/publish/lib/esm/Toast/Item.tsx +165 -0
  315. package/publish/lib/esm/Toast/Toast.tsx +391 -0
  316. package/publish/lib/esm/Toast/ToastContext.tsx +104 -0
  317. package/publish/lib/esm/Toast/__toast.vanilla.js +422 -0
  318. package/publish/lib/esm/Toast/index.scss +197 -0
  319. package/publish/lib/esm/Toast/index.tsx +3 -0
  320. package/publish/lib/esm/Toast/types.ts +60 -0
  321. package/publish/lib/esm/Toast/useToast.tsx +72 -0
  322. package/publish/lib/esm/Tooltip/index.scss +272 -0
  323. package/publish/lib/esm/Tooltip/index.tsx +416 -0
  324. package/publish/lib/esm/Tree/TreeList.tsx +600 -0
  325. package/publish/lib/esm/Tree/index.scss +384 -0
  326. package/publish/lib/esm/Tree/index.tsx +661 -0
  327. package/publish/lib/esm/Tree/init-height.tsx +40 -0
  328. package/publish/lib/esm/Tree/utils/func.ts +15 -0
  329. package/publish/lib/esm/Utils/hooks/useAutosizeTextArea.tsx +131 -0
  330. package/publish/lib/esm/Utils/hooks/useBoundedDrag.tsx +301 -0
  331. package/publish/lib/esm/Utils/hooks/useClickOutside.tsx +69 -0
  332. package/publish/lib/esm/Utils/hooks/useComId.tsx +13 -0
  333. package/publish/lib/esm/Utils/hooks/useDebounce.tsx +40 -0
  334. package/publish/lib/esm/Utils/hooks/useDragDropPosition.tsx +417 -0
  335. package/publish/lib/esm/Utils/hooks/useDraggable.tsx +265 -0
  336. package/publish/lib/esm/Utils/hooks/useHistoryTracker.tsx +554 -0
  337. package/publish/lib/esm/Utils/hooks/useInterval.tsx +74 -0
  338. package/publish/lib/esm/Utils/hooks/useIsMobile.tsx +139 -0
  339. package/publish/lib/esm/Utils/hooks/useKeyPress.tsx +104 -0
  340. package/publish/lib/esm/Utils/hooks/useSessionStorageListener.tsx +45 -0
  341. package/publish/lib/esm/Utils/hooks/useStreamController.tsx +277 -0
  342. package/publish/lib/esm/Utils/hooks/useThrottle.tsx +39 -0
  343. package/publish/lib/esm/Utils/hooks/useWindowScroll.tsx +83 -0
  344. package/publish/lib/esm/Utils/libs/anim.ts +96 -0
  345. package/publish/lib/esm/Utils/libs/buffer.ts +262 -0
  346. package/publish/lib/esm/Utils/libs/cls.ts +64 -0
  347. package/publish/lib/esm/Utils/libs/convert.ts +59 -0
  348. package/publish/lib/esm/Utils/libs/date.ts +598 -0
  349. package/publish/lib/esm/Utils/libs/dom.ts +150 -0
  350. package/publish/lib/esm/Utils/libs/easing.ts +201 -0
  351. package/publish/lib/esm/Utils/libs/extract.ts +160 -0
  352. package/publish/lib/esm/Utils/libs/format-string.ts +116 -0
  353. package/publish/lib/esm/Utils/libs/formdata.ts +93 -0
  354. package/publish/lib/esm/Utils/libs/getElementProperty.ts +150 -0
  355. package/publish/lib/esm/Utils/libs/guid.ts +16 -0
  356. package/publish/lib/esm/Utils/libs/initDefaultOptions.ts +43 -0
  357. package/publish/lib/esm/Utils/libs/inputsCalculation.ts +160 -0
  358. package/publish/lib/esm/Utils/libs/math.ts +276 -0
  359. package/publish/lib/esm/Utils/libs/object.ts +68 -0
  360. package/publish/lib/esm/Utils/libs/os.ts +63 -0
  361. package/publish/lib/esm/Utils/libs/performance.ts +47 -0
  362. package/publish/lib/esm/Utils/libs/sanitize.ts +55 -0
  363. package/publish/lib/esm/Utils/libs/time.ts +139 -0
  364. package/publish/lib/esm/Utils/libs/tree.ts +119 -0
  365. package/publish/lib/esm/Utils/libs/validate.ts +434 -0
  366. package/publish/lib/esm/Utils/libs/viewport.ts +20 -0
  367. package/publish/lib/esm/Utils/plugins/bodyScrollLock.ts +286 -0
  368. package/publish/lib/esm/index.js +47 -0
  369. package/publish/package.json +1 -0
  370. /package/{Accordion → publish/Accordion}/index.d.ts +0 -0
  371. /package/{Accordion → publish/Accordion}/index.js +0 -0
  372. /package/{BackToTop → publish/BackToTop}/index.css +0 -0
  373. /package/{BackToTop → publish/BackToTop}/index.d.ts +0 -0
  374. /package/{BackToTop → publish/BackToTop}/index.js +0 -0
  375. /package/{CascadingSelect → publish/CascadingSelect}/index.css +0 -0
  376. /package/{CascadingSelect → publish/CascadingSelect}/index.d.ts +0 -0
  377. /package/{CascadingSelect → publish/CascadingSelect}/index.js +0 -0
  378. /package/{CascadingSelectE2E → publish/CascadingSelectE2E}/index.css +0 -0
  379. /package/{CascadingSelectE2E → publish/CascadingSelectE2E}/index.d.ts +0 -0
  380. /package/{CascadingSelectE2E → publish/CascadingSelectE2E}/index.js +0 -0
  381. /package/{Chatbox → publish/Chatbox}/index.css +0 -0
  382. /package/{Chatbox → publish/Chatbox}/index.d.ts +0 -0
  383. /package/{Chatbox → publish/Chatbox}/index.js +0 -0
  384. /package/{Checkbox → publish/Checkbox}/index.d.ts +0 -0
  385. /package/{Checkbox → publish/Checkbox}/index.js +0 -0
  386. /package/{ColorPicker → publish/ColorPicker}/index.css +0 -0
  387. /package/{ColorPicker → publish/ColorPicker}/index.d.ts +0 -0
  388. /package/{ColorPicker → publish/ColorPicker}/index.js +0 -0
  389. /package/{Date → publish/Date}/index.css +0 -0
  390. /package/{Date → publish/Date}/index.d.ts +0 -0
  391. /package/{DigitalClock → publish/DigitalClock}/index.d.ts +0 -0
  392. /package/{DigitalClock → publish/DigitalClock}/index.js +0 -0
  393. /package/{DragDropList → publish/DragDropList}/index.css +0 -0
  394. /package/{DragDropList → publish/DragDropList}/index.d.ts +0 -0
  395. /package/{DragDropList → publish/DragDropList}/index.js +0 -0
  396. /package/{DropdownMenu → publish/DropdownMenu}/index.css +0 -0
  397. /package/{DropdownMenu → publish/DropdownMenu}/index.d.ts +0 -0
  398. /package/{DropdownMenu → publish/DropdownMenu}/index.js +0 -0
  399. /package/{DynamicFields → publish/DynamicFields}/index.d.ts +0 -0
  400. /package/{EventCalendar → publish/EventCalendar}/index.css +0 -0
  401. /package/{EventCalendar → publish/EventCalendar}/index.d.ts +0 -0
  402. /package/{EventCalendar → publish/EventCalendar}/index.js +0 -0
  403. /package/{EventCalendarTimeline → publish/EventCalendarTimeline}/index.css +0 -0
  404. /package/{EventCalendarTimeline → publish/EventCalendarTimeline}/index.d.ts +0 -0
  405. /package/{EventCalendarTimeline → publish/EventCalendarTimeline}/index.js +0 -0
  406. /package/{File → publish/File}/index.d.ts +0 -0
  407. /package/{File → publish/File}/index.js +0 -0
  408. /package/{HorizontalScrollContent → publish/HorizontalScrollContent}/index.css +0 -0
  409. /package/{HorizontalScrollContent → publish/HorizontalScrollContent}/index.d.ts +0 -0
  410. /package/{HorizontalScrollContent → publish/HorizontalScrollContent}/index.js +0 -0
  411. /package/{Input → publish/Input}/index.d.ts +0 -0
  412. /package/{Input → publish/Input}/index.js +0 -0
  413. /package/{LiveSearch → publish/LiveSearch}/index.css +0 -0
  414. /package/{LiveSearch → publish/LiveSearch}/index.d.ts +0 -0
  415. /package/{LiveSearch → publish/LiveSearch}/index.js +0 -0
  416. /package/{MasonryLayout → publish/MasonryLayout}/index.d.ts +0 -0
  417. /package/{MasonryLayout → publish/MasonryLayout}/index.js +0 -0
  418. /package/{ModalDialog → publish/ModalDialog}/index.d.ts +0 -0
  419. /package/{ModalDialog → publish/ModalDialog}/index.js +0 -0
  420. /package/{ModeSwitch → publish/ModeSwitch}/index.d.ts +0 -0
  421. /package/{ModeSwitch → publish/ModeSwitch}/index.js +0 -0
  422. /package/{MultilevelDropdownMenu → publish/MultilevelDropdownMenu}/index.css +0 -0
  423. /package/{MultilevelDropdownMenu → publish/MultilevelDropdownMenu}/index.d.ts +0 -0
  424. /package/{MultilevelDropdownMenu → publish/MultilevelDropdownMenu}/index.js +0 -0
  425. /package/{MultipleCheckboxes → publish/MultipleCheckboxes}/index.d.ts +0 -0
  426. /package/{MultipleCheckboxes → publish/MultipleCheckboxes}/index.js +0 -0
  427. /package/{MultipleSelect → publish/MultipleSelect}/index.css +0 -0
  428. /package/{MultipleSelect → publish/MultipleSelect}/index.d.ts +0 -0
  429. /package/{MultipleSelect → publish/MultipleSelect}/index.js +0 -0
  430. /package/{NativeSelect → publish/NativeSelect}/index.d.ts +0 -0
  431. /package/{NativeSelect → publish/NativeSelect}/index.js +0 -0
  432. /package/{NumberInput → publish/NumberInput}/index.d.ts +0 -0
  433. /package/{NumberInput → publish/NumberInput}/index.js +0 -0
  434. /package/{Pagination → publish/Pagination}/index.d.ts +0 -0
  435. /package/{Pagination → publish/Pagination}/index.js +0 -0
  436. /package/{Radio → publish/Radio}/index.d.ts +0 -0
  437. /package/{Radio → publish/Radio}/index.js +0 -0
  438. /package/{RangeSlider → publish/RangeSlider}/index.css +0 -0
  439. /package/{RangeSlider → publish/RangeSlider}/index.d.ts +0 -0
  440. /package/{RangeSlider → publish/RangeSlider}/index.js +0 -0
  441. /package/{Refresher → publish/Refresher}/index.d.ts +0 -0
  442. /package/{Refresher → publish/Refresher}/index.js +0 -0
  443. /package/{RootPortal → publish/RootPortal}/index.d.ts +0 -0
  444. /package/{RootPortal → publish/RootPortal}/index.js +0 -0
  445. /package/{ScrollReveal → publish/ScrollReveal}/index.d.ts +0 -0
  446. /package/{ScrollReveal → publish/ScrollReveal}/index.js +0 -0
  447. /package/{Scrollbar → publish/Scrollbar}/index.css +0 -0
  448. /package/{Scrollbar → publish/Scrollbar}/index.d.ts +0 -0
  449. /package/{Scrollbar → publish/Scrollbar}/index.js +0 -0
  450. /package/{SearchBar → publish/SearchBar}/index.d.ts +0 -0
  451. /package/{SearchBar → publish/SearchBar}/index.js +0 -0
  452. /package/{Select → publish/Select}/index.css +0 -0
  453. /package/{Select → publish/Select}/index.d.ts +0 -0
  454. /package/{Select → publish/Select}/index.js +0 -0
  455. /package/{ShowMoreLess → publish/ShowMoreLess}/index.css +0 -0
  456. /package/{ShowMoreLess → publish/ShowMoreLess}/index.d.ts +0 -0
  457. /package/{ShowMoreLess → publish/ShowMoreLess}/index.js +0 -0
  458. /package/{SplitterPanel → publish/SplitterPanel}/index.css +0 -0
  459. /package/{SplitterPanel → publish/SplitterPanel}/index.d.ts +0 -0
  460. /package/{SplitterPanel → publish/SplitterPanel}/index.js +0 -0
  461. /package/{Stepper → publish/Stepper}/index.css +0 -0
  462. /package/{Stepper → publish/Stepper}/index.d.ts +0 -0
  463. /package/{Stepper → publish/Stepper}/index.js +0 -0
  464. /package/{Switch → publish/Switch}/index.d.ts +0 -0
  465. /package/{Switch → publish/Switch}/index.js +0 -0
  466. /package/{Table → publish/Table}/index.css +0 -0
  467. /package/{Table → publish/Table}/index.d.ts +0 -0
  468. /package/{Table → publish/Table}/index.js +0 -0
  469. /package/{Tabs → publish/Tabs}/index.d.ts +0 -0
  470. /package/{Tabs → publish/Tabs}/index.js +0 -0
  471. /package/{TagInput → publish/TagInput}/index.css +0 -0
  472. /package/{TagInput → publish/TagInput}/index.d.ts +0 -0
  473. /package/{TagInput → publish/TagInput}/index.js +0 -0
  474. /package/{Textarea → publish/Textarea}/index.d.ts +0 -0
  475. /package/{Textarea → publish/Textarea}/index.js +0 -0
  476. /package/{Toast → publish/Toast}/index.css +0 -0
  477. /package/{Toast → publish/Toast}/index.d.ts +0 -0
  478. /package/{Toast → publish/Toast}/index.js +0 -0
  479. /package/{Tooltip → publish/Tooltip}/index.css +0 -0
  480. /package/{Tooltip → publish/Tooltip}/index.d.ts +0 -0
  481. /package/{Tooltip → publish/Tooltip}/index.js +0 -0
  482. /package/{Tree → publish/Tree}/index.css +0 -0
  483. /package/{Tree → publish/Tree}/index.d.ts +0 -0
  484. /package/{Tree → publish/Tree}/index.js +0 -0
  485. /package/{Utils → publish/Utils}/anim.d.ts +0 -0
  486. /package/{Utils → publish/Utils}/anim.js +0 -0
  487. /package/{Utils → publish/Utils}/bodyScrollLock.d.ts +0 -0
  488. /package/{Utils → publish/Utils}/bodyScrollLock.js +0 -0
  489. /package/{Utils → publish/Utils}/buffer.d.ts +0 -0
  490. /package/{Utils → publish/Utils}/buffer.js +0 -0
  491. /package/{Utils → publish/Utils}/cls.d.ts +0 -0
  492. /package/{Utils → publish/Utils}/cls.js +0 -0
  493. /package/{Utils → publish/Utils}/convert.d.ts +0 -0
  494. /package/{Utils → publish/Utils}/convert.js +0 -0
  495. /package/{Utils → publish/Utils}/date.d.ts +0 -0
  496. /package/{Utils → publish/Utils}/date.js +0 -0
  497. /package/{Utils → publish/Utils}/dom.d.ts +0 -0
  498. /package/{Utils → publish/Utils}/dom.js +0 -0
  499. /package/{Utils → publish/Utils}/easing.d.ts +0 -0
  500. /package/{Utils → publish/Utils}/easing.js +0 -0
  501. /package/{Utils → publish/Utils}/extract.d.ts +0 -0
  502. /package/{Utils → publish/Utils}/extract.js +0 -0
  503. /package/{Utils → publish/Utils}/format-string.d.ts +0 -0
  504. /package/{Utils → publish/Utils}/format-string.js +0 -0
  505. /package/{Utils → publish/Utils}/formdata.d.ts +0 -0
  506. /package/{Utils → publish/Utils}/formdata.js +0 -0
  507. /package/{Utils → publish/Utils}/getElementProperty.d.ts +0 -0
  508. /package/{Utils → publish/Utils}/getElementProperty.js +0 -0
  509. /package/{Utils → publish/Utils}/guid.d.ts +0 -0
  510. /package/{Utils → publish/Utils}/guid.js +0 -0
  511. /package/{Utils → publish/Utils}/initDefaultOptions.d.ts +0 -0
  512. /package/{Utils → publish/Utils}/initDefaultOptions.js +0 -0
  513. /package/{Utils → publish/Utils}/inputsCalculation.d.ts +0 -0
  514. /package/{Utils → publish/Utils}/inputsCalculation.js +0 -0
  515. /package/{Utils → publish/Utils}/math.d.ts +0 -0
  516. /package/{Utils → publish/Utils}/math.js +0 -0
  517. /package/{Utils → publish/Utils}/object.d.ts +0 -0
  518. /package/{Utils → publish/Utils}/object.js +0 -0
  519. /package/{Utils → publish/Utils}/os.d.ts +0 -0
  520. /package/{Utils → publish/Utils}/os.js +0 -0
  521. /package/{Utils → publish/Utils}/performance.d.ts +0 -0
  522. /package/{Utils → publish/Utils}/performance.js +0 -0
  523. /package/{Utils → publish/Utils}/sanitize.d.ts +0 -0
  524. /package/{Utils → publish/Utils}/sanitize.js +0 -0
  525. /package/{Utils → publish/Utils}/time.d.ts +0 -0
  526. /package/{Utils → publish/Utils}/time.js +0 -0
  527. /package/{Utils → publish/Utils}/tree.d.ts +0 -0
  528. /package/{Utils → publish/Utils}/tree.js +0 -0
  529. /package/{Utils → publish/Utils}/useAutosizeTextArea.d.ts +0 -0
  530. /package/{Utils → publish/Utils}/useAutosizeTextArea.js +0 -0
  531. /package/{Utils → publish/Utils}/useBoundedDrag.d.ts +0 -0
  532. /package/{Utils → publish/Utils}/useBoundedDrag.js +0 -0
  533. /package/{Utils → publish/Utils}/useClickOutside.d.ts +0 -0
  534. /package/{Utils → publish/Utils}/useClickOutside.js +0 -0
  535. /package/{Utils → publish/Utils}/useComId.d.ts +0 -0
  536. /package/{Utils → publish/Utils}/useComId.js +0 -0
  537. /package/{Utils → publish/Utils}/useDebounce.d.ts +0 -0
  538. /package/{Utils → publish/Utils}/useDebounce.js +0 -0
  539. /package/{Utils → publish/Utils}/useDragDropPosition.d.ts +0 -0
  540. /package/{Utils → publish/Utils}/useDragDropPosition.js +0 -0
  541. /package/{Utils → publish/Utils}/useDraggable.d.ts +0 -0
  542. /package/{Utils → publish/Utils}/useDraggable.js +0 -0
  543. /package/{Utils → publish/Utils}/useHistoryTracker.d.ts +0 -0
  544. /package/{Utils → publish/Utils}/useHistoryTracker.js +0 -0
  545. /package/{Utils → publish/Utils}/useInterval.d.ts +0 -0
  546. /package/{Utils → publish/Utils}/useInterval.js +0 -0
  547. /package/{Utils → publish/Utils}/useIsMobile.d.ts +0 -0
  548. /package/{Utils → publish/Utils}/useIsMobile.js +0 -0
  549. /package/{Utils → publish/Utils}/useKeyPress.d.ts +0 -0
  550. /package/{Utils → publish/Utils}/useKeyPress.js +0 -0
  551. /package/{Utils → publish/Utils}/useSessionStorageListener.d.ts +0 -0
  552. /package/{Utils → publish/Utils}/useSessionStorageListener.js +0 -0
  553. /package/{Utils → publish/Utils}/useStreamController.d.ts +0 -0
  554. /package/{Utils → publish/Utils}/useStreamController.js +0 -0
  555. /package/{Utils → publish/Utils}/useThrottle.d.ts +0 -0
  556. /package/{Utils → publish/Utils}/useThrottle.js +0 -0
  557. /package/{Utils → publish/Utils}/useWindowScroll.d.ts +0 -0
  558. /package/{Utils → publish/Utils}/useWindowScroll.js +0 -0
  559. /package/{Utils → publish/Utils}/validate.d.ts +0 -0
  560. /package/{Utils → publish/Utils}/validate.js +0 -0
  561. /package/{Utils → publish/Utils}/viewport.d.ts +0 -0
  562. /package/{Utils → publish/Utils}/viewport.js +0 -0
  563. /package/{all.d.ts → publish/all.d.ts} +0 -0
  564. /package/{all.js → publish/all.js} +0 -0
package/.gitattributes ADDED
@@ -0,0 +1,2 @@
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
package/README.md CHANGED
@@ -1,10 +1,21 @@
1
1
  # Funda UI
2
2
 
3
+ <p align="center">
4
+ <img src="logo.png" alt="Funda UI" width="180" >
5
+ </p>
6
+
7
+
3
8
  React components using pure Bootstrap 5+ which has undergone complex business testing and is easy to integrate with any API. You can load Bootstrap css libraries separately in your project.
4
9
 
5
10
  All components have undergone complex business verification and provide multiple examples.
6
11
 
7
12
 
13
+ <p align="center">
14
+ <img src="preview.png" alt="Funda UI" >
15
+ </p>
16
+
17
+
18
+
8
19
  ---
9
20
 
10
21
  - [Documentation](https://uiux.cc/funda-ui-doc)
@@ -13,6 +24,7 @@ All components have undergone complex business verification and provide multiple
13
24
 
14
25
 
15
26
 
27
+
16
28
  ## Key Features
17
29
 
18
30
  1. Simplify the assignment method of diversified data.
@@ -22,7 +34,6 @@ All components have undergone complex business verification and provide multiple
22
34
  5. Do not embed css-in-js, directly use external CSS styles to completely change the component style.
23
35
 
24
36
 
25
-
26
37
  ## Components List
27
38
 
28
39
  Here is a table of the components and their status.
@@ -62,6 +73,8 @@ Here is a table of the components and their status.
62
73
  | [Stepper ✅](packages/Stepper/README.md) | | | | |
63
74
 
64
75
 
76
+
77
+
65
78
  ## Usage
66
79
 
67
80
  **Step 1**. You need to install it:
@@ -70,17 +83,27 @@ Here is a table of the components and their status.
70
83
  $ npm i funda-ui
71
84
  ```
72
85
 
86
+ or
87
+
88
+ ```sh
89
+ $ pnpm add funda-ui
90
+ ```
91
+
73
92
  **Step 2**. Using Bootstrap CSS together (recommended)
74
93
 
94
+ [Download bootstrap](https://github.com/twbs/bootstrap)
95
+
75
96
  ```html
76
97
  <link href="./bootstrap.min.css" rel="stylesheet"/>
77
98
  ```
78
99
 
100
+ > You could remove Bootstrap's styles. All components support setting Bootstrap's default class names through `**ClassName` attributes.
79
101
 
80
- **Step 3**. import required components as required
102
+ **Step 3**. import required components as required
81
103
 
82
104
  > If the component does not have a CSS file, it can not be imported, or use own CSS.
83
105
 
106
+
84
107
  ```js
85
108
  import Input from 'funda-ui/Input';
86
109
  import Textarea from 'funda-ui/Textarea';
@@ -322,6 +345,97 @@ export default () => {
322
345
  ```
323
346
 
324
347
 
348
+ ## Getting Started
349
+
350
+ Make sure if Node 14+ is installed on your computer.
351
+
352
+ ### Step 1: Create a new Lerna workspace by running:
353
+
354
+ ```sh
355
+ $ cd /{your_directory}/funda-ui
356
+ $ npx lerna init
357
+ ```
358
+
359
+
360
+ ### Step 2: Install dependencies (Required)
361
+
362
+ It will automatically install the dependencies of all resources in `packages/` without duplication.
363
+
364
+ ```sh
365
+ $ npm install
366
+ ```
367
+
368
+
369
+ ### Step 3: To open the visualization, run:
370
+
371
+ ```sh
372
+ $ npx nx graph
373
+ ```
374
+
375
+ ### Step 4: To build all projects, run
376
+
377
+ ```sh
378
+ $ npx lerna run build
379
+ ```
380
+
381
+ or Build the package you want (recommend):
382
+
383
+ ```sh
384
+ $ npx lerna run build --scope=plugin-1 --scope=plugin-2
385
+ ```
386
+
387
+ Please do not install **lerna** globally to use `lerna run build`
388
+
389
+
390
+ ### Step 5: (optional) Use a custom script like:
391
+
392
+ ```sh
393
+ $ npx lerna exec npm run export --scope=plugin-2
394
+ ```
395
+
396
+
397
+ ## Publish the lib of components, it will hang on NPM:
398
+
399
+
400
+ ```sh
401
+ $ npm run build:lib
402
+ $ npm run build:publish
403
+ ```
404
+
405
+
406
+ > **(Optional) Update Utils**
407
+ >
408
+ > ```sh
409
+ > $ npx lerna run build --scope=funda-utils
410
+ > $ npm i
411
+ > $ npx lerna run build
412
+ > ```
413
+ >
414
+
415
+
416
+
417
+ > **(Optional) Manually generate `.d.ts` files, you can execute**
418
+ >
419
+ > ```sh
420
+ > $ npx -p typescript tsc lib/cjs/*.js --declaration --allowJs --emitDeclarationOnly
421
+ > ```
422
+ >
423
+
424
+
425
+ ## Contributing
426
+
427
+ - [Lerna](https://github.com/lerna/lerna)
428
+ - [Bootstrap](https://getbootstrap.com/)
429
+ - [React](https://react.dev/)
430
+
431
+
432
+ ## Inspiration and References
433
+
434
+ This component library is inspired by several open-source projects such as [react-bootstrap](https://react-bootstrap.netlify.app), [Ant Design](https://ant.design), [MUI](https://mui.com), and [shadcn/ui](https://ui.shadcn.com). It is an open-source plugin library designed as a learning-to-practice project.
435
+
436
+ The library does **not** contain any personal or company-specific business logic. It serves purely as an auxiliary tool to help efficiently and reliably develop company applications.
437
+
438
+
325
439
  ## Licensing
326
440
 
327
441
  Licensed under the [MIT](https://opensource.org/licenses/MIT).
@@ -0,0 +1,328 @@
1
+ # Funda UI
2
+
3
+ React components using pure Bootstrap 5+ which has undergone complex business testing and is easy to integrate with any API. You can load Bootstrap css libraries separately in your project.
4
+
5
+ All components have undergone complex business verification and provide multiple examples.
6
+
7
+
8
+ ---
9
+
10
+ - [Documentation](https://uiux.cc/funda-ui-doc)
11
+
12
+ ---
13
+
14
+
15
+
16
+ ## Key Features
17
+
18
+ 1. Simplify the assignment method of diversified data.
19
+ 2. Components are compatible with `gRPC`, `REST APIs`, `GraphQL` self-packaging, uniformly use [Classes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) and their methods to introduce interfaces
20
+ 3. Enhanced user interaction, flexible use in asynchronous and synchronous states
21
+ 4. Introduce appropriate component `.css` files as needed, only for some components with special needs. Most of them can directly use Bootstrap's official style sheet. Styles are performant and easy to override.
22
+ 5. Do not embed css-in-js, directly use external CSS styles to completely change the component style.
23
+
24
+
25
+
26
+ ## Components List
27
+
28
+ Here is a table of the components and their status.
29
+
30
+
31
+ | WEB ELEMENTS | FORMS | INTERACTION | NAVIGATION | LAYOUTS |
32
+ | --- | --- | --- | --- | --- |
33
+ | [Accordion ✅](packages/Accordion/README.md) | [Input ✅](packages/Input/README.md) | [Infinite Scroll ❏](packages/InfiniteScroll/README.md) |[Multilevel Dropdown Menu ✅](packages/MultilevelDropdownMenu/README.md) | [MasonryLayout ✅](packages/MasonryLayout/README.md) |
34
+ | [Accordion Slider ❏](packages/AccordionSlider/README.md) | [Number Input ✅](packages/NumberInput/README.md) | [Image Perspective Hover ❏](packages/ImagePerspectiveHover/README.md) | [Dropdown Menu ✅](packages/DropdownMenu/README.md) | [RootPortal ✅](packages/RootPortal/README.md) |
35
+ | [Back To Top ✅](packages/BackToTop/README.md) | [Date ✅🔥](packages/Date/README.md) | [Mousewheel Interaction ❏](packages/MousewheelInteraction/README.md) | | [Splitter Panel ✅](packages/SplitterPanel/README.md) |
36
+ | [Button ❏](packages/Button/README.md) | [Tag Input ✅](packages/TagInput/README.md) | [Parallax ❏](packages/Parallax/README.md) | | |
37
+ | [Card ❏](packages/Card/README.md) | [Textarea ✅](packages/Textarea/README.md) | [Scroll Reveal ✅](packages/ScrollReveal/README.md) | | |
38
+ | [Content Placeholder ❏](packages/ContentPlaceholder/README.md) | [NativeSelect ✅](packages/NativeSelect/README.md) | [DragDrop List ✅🔥](packages/DragDropList/README.md) | | |
39
+ | [Counter ❏](packages/Counter/README.md) | [Cascading Select ✅](packages/CascadingSelect/README.md) | [Mode Switch ✅](packages/ModeSwitch/README.md) | | |
40
+ | [Hybrid Content Slider ❏](packages/HybridContentSlider/README.md) | [Cascading Select End-to-end ✅🔥](packages/CascadingSelectE2E/README.md) | [Custom Scrollbar ✅](packages/Scrollbar/README.md) | | |
41
+ | [Image Shapes ❏](packages/ImageShapes/README.md) | [Radio ✅](packages/Radio/README.md) | [Horizontal Scroll Content ✅](packages/HorizontalScrollContent/README.md) | | |
42
+ | [Lightbox ❏](packages/Lightbox/README.md) | [Checkbox ✅](packages/Checkbox/README.md) | [Refresher ✅](packages/Refresher/README.md) | | |
43
+ | [List Bulleted ❏](packages/ListBulleted/README.md) | [Select ✅🔥](packages/Select/README.md) | | | |
44
+ | [Modal Dialog ✅🔥](packages/ModalDialog/README.md) | [Live Search ✅](packages/LiveSearch/README.md) | | | |
45
+ | [Pagination ✅](packages/Pagination/README.md) | [File ✅](packages/File/README.md) | | | |
46
+ | [Table ✅🔥](packages/Table/README.md) | [SearchBar ✅](packages/SearchBar/README.md) | | | |
47
+ | [Periodical Scroll ❏](packages/PeriodicalScroll/README.md) | [Switch ✅](packages/Switch/README.md) | | | |
48
+ | [Progress Bar ❏](packages/ProgressBar/README.md) | [Dynamic Fields ✅🔥](packages/DynamicFields/README.md) | | | |
49
+ | [Rating ❏](packages/Rating/README.md) | [MultipleCheckboxes ✅](packages/MultipleCheckboxes/README.md) | | | |
50
+ | [Seamless Scrolling Element ❏](packages/SeamlessScrollingElement/README.md) | [MultipleSelect ✅🔥](packages/MultipleSelect/README.md) | | | |
51
+ | [Show More Less ✅](packages/ShowMoreLess/README.md) | [Range Slider ✅](packages/RangeSlider/README.md) | | | |
52
+ | [Slideshow ❏](packages/Slideshow/README.md) | [Color Picker ✅](packages/ColorPicker/README.md) | | | |
53
+ | [Tabs ✅](packages/Tabs/README.md) | | | | |
54
+ | [Timeline ❏](packages/Timeline/README.md) | | | | |
55
+ | [Toast ✅](packages/Toast/README.md) | | | | |
56
+ | [Tooltip ✅](packages/Tooltip/README.md) | | | | |
57
+ | [Digital Clock ✅](packages/DigitalClock/README.md) | | | | |
58
+ | [Tree ✅🔥](packages/Tree/README.md) | | | | |
59
+ | [Event Calendar ✅🔥](packages/EventCalendar/README.md) | | | | |
60
+ | [Event Calendar Timeline ✅🔥](packages/EventCalendarTimeline/README.md) | | | | |
61
+ | [Chatbox ✅🔥🤖](packages/Chatbox/README.md) | | | | |
62
+ | [Stepper ✅](packages/Stepper/README.md) | | | | |
63
+
64
+
65
+ ## Usage
66
+
67
+ **Step 1**. You need to install it:
68
+
69
+ ```sh
70
+ $ npm i funda-ui
71
+ ```
72
+
73
+ **Step 2**. Using Bootstrap CSS together (recommended)
74
+
75
+ ```html
76
+ <link href="./bootstrap.min.css" rel="stylesheet"/>
77
+ ```
78
+
79
+
80
+ **Step 3**. import required components as required
81
+
82
+ > If the component does not have a CSS file, it can not be imported, or use own CSS.
83
+
84
+ ```js
85
+ import Input from 'funda-ui/Input';
86
+ import Textarea from 'funda-ui/Textarea';
87
+ import CascadingSelect from 'funda-ui/CascadingSelect';
88
+
89
+ // component styles
90
+ import 'funda-ui/CascadingSelect/index.css';
91
+ ```
92
+
93
+ or
94
+
95
+ ```js
96
+ import {
97
+ Input,
98
+ Textarea,
99
+ CascadingSelect
100
+ } from 'funda-ui';
101
+
102
+ // component styles
103
+ import 'funda-ui/CascadingSelect/index.css';
104
+ ```
105
+
106
+ or
107
+
108
+ ```js
109
+ const Input = require('funda-ui').Input;
110
+ const Textarea = require('funda-ui').Textarea;
111
+ const CascadingSelect = require('funda-ui').CascadingSelect;
112
+
113
+ // component styles
114
+ import 'funda-ui/CascadingSelect/index.css';
115
+ ```
116
+
117
+
118
+
119
+ ## Collecting Data
120
+
121
+ ### Basic
122
+
123
+ Use `useState()` to store data.
124
+
125
+ ```js
126
+ import React, { useState } from 'react';
127
+ import Input from 'funda-ui/Input';
128
+ import Select, { OptionConfig, MultiSelectValue } from 'funda-ui/Select';
129
+
130
+ // component styles
131
+ import 'funda-ui/Select/index.css';
132
+
133
+
134
+ interface Config {
135
+ name: string;
136
+ role: boolean;
137
+ }
138
+
139
+
140
+ export default () => {
141
+ // Consolidated config state
142
+ const [config, setConfig] = useState<Config>({
143
+ name: '',
144
+ role: '',
145
+ });
146
+
147
+ const updateConfig = (newConfig: Partial<Config>) => {
148
+ setConfig(prev => ({ ...prev, ...newConfig }));
149
+ };
150
+
151
+
152
+ const handleSubmit = (e: React.MouseEvent<HTMLButtonElement>) => {
153
+ e.preventDefault();
154
+ alert(`Name: ${config.name}, Role: ${config.role}`);
155
+ };
156
+
157
+ return (
158
+ <form onSubmit={handleSubmit}>
159
+ <div>
160
+
161
+ <Input
162
+ name="name"
163
+ label="Name"
164
+ onChange={(e: React.MouseEvent, onComposition: any, el: any, value: string) => {
165
+ updateConfig({ name: value });
166
+ }}
167
+ />
168
+ </div>
169
+
170
+ <div>
171
+
172
+ <Select
173
+ label="Role"
174
+ placeholder="Select"
175
+ name="role"
176
+ options={[
177
+ {"label": "Admin","value": "admin","queryString": ""},
178
+ {"label": "User","value": "user","queryString": ""}
179
+ ]}
180
+ onChange={(e: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>, e2: HTMLElement, val: OptionConfig | MultiSelectValue): void => {
181
+ updateConfig({ role: (val as OptionConfig).value });
182
+ }}
183
+ />
184
+
185
+ </div>
186
+
187
+ <button className="btn btn-outline-primary btn-sm mb-2" type="submit">Submit</button>
188
+ </form>
189
+ );
190
+
191
+ }
192
+ ```
193
+
194
+
195
+
196
+
197
+ ### Advanced
198
+
199
+ Using vanilla JS to collect the value of name is faster and easier.
200
+
201
+
202
+ ```js
203
+ import React, { useRef } from "react";
204
+ import Input from 'funda-ui/Input';
205
+ import Select, { OptionConfig, MultiSelectValue } from 'funda-ui/Select';
206
+
207
+ // component styles
208
+ import 'funda-ui/Select/index.css';
209
+
210
+ // utils
211
+ import { serializeArray } from 'funda-ui/Utils/formdata';
212
+ import { isEmpty } from "funda-ui/Utils/validate";
213
+
214
+ interface FormField {
215
+ name: string;
216
+ value: string;
217
+ }
218
+
219
+ interface FormData {
220
+ [key: string]: string;
221
+ }
222
+
223
+ type CallbackFunction = (formData: FormData) => void;
224
+ type ErrorCallbackFunction = () => void;
225
+
226
+ function customValidate(
227
+ form: HTMLFormElement | HTMLDivElement | null,
228
+ callback?: CallbackFunction,
229
+ errCallback?: ErrorCallbackFunction
230
+ ): void {
231
+ if (form === null) return;
232
+
233
+ const formData: FormData = {};
234
+ const fieldsData: FormField[] = serializeArray(form);
235
+ let fieldsCheck: boolean = true;
236
+ let customFieldsCheck: boolean = true;
237
+
238
+ // Step 1: everything is ok
239
+ //-------------
240
+ // required fields
241
+ const emptyFieldsCheck = fieldsData.every((item: FormField) => {
242
+ if (item.name !== null && item.name !== '') {
243
+ formData[item.name] = item.value;
244
+
245
+ const _field = form.querySelector<HTMLElement>(`[name="${item.name}"]`);
246
+ if (!_field) return true;
247
+
248
+ const fieldRequired = _field.getAttribute('required');
249
+ if (fieldRequired !== null && fieldRequired !== 'false') {
250
+ if (item.value === '' || isEmpty(item.value)) {
251
+ const _label = _field.dataset.requiredTitle;
252
+ alert(`${_label} cannot be empty!`);
253
+ return false;
254
+ }
255
+ }
256
+ }
257
+
258
+ errCallback?.();
259
+
260
+ return true;
261
+ });
262
+
263
+ // merged result
264
+ fieldsCheck = [emptyFieldsCheck, customFieldsCheck].every((item: boolean) => {
265
+ return item;
266
+ });
267
+
268
+ // Step 2: everything is ok
269
+ //-------------
270
+ if (fieldsCheck) {
271
+ callback?.(formData);
272
+ }
273
+ }
274
+
275
+
276
+
277
+ export default () => {
278
+ const formRef = useRef<HTMLDivElement>(null);
279
+
280
+ const handleSubmit = (e: React.MouseEvent<HTMLButtonElement>) => {
281
+ e.preventDefault();
282
+
283
+ customValidate(
284
+ formRef.current,
285
+ (formData: any[]) => {
286
+ alert(JSON.stringify(formData));
287
+ },
288
+ () => { }
289
+ );
290
+
291
+ };
292
+
293
+ return (
294
+ <div ref={formRef}>
295
+ <div>
296
+
297
+ <Input
298
+ name="name"
299
+ label="Name"
300
+ />
301
+ </div>
302
+
303
+ <div>
304
+
305
+ <Select
306
+ label="Role"
307
+ placeholder="Select"
308
+ name="role"
309
+ options={[
310
+ {"label": "Admin","value": "admin","queryString": ""},
311
+ {"label": "User","value": "user","queryString": ""}
312
+ ]}
313
+ />
314
+
315
+ </div>
316
+
317
+ <button className="btn btn-outline-primary btn-sm mb-2" type="button" onClick={handleSubmit}>Submit</button>
318
+ </div>
319
+ );
320
+
321
+ }
322
+ ```
323
+
324
+
325
+ ## Licensing
326
+
327
+ Licensed under the [MIT](https://opensource.org/licenses/MIT).
328
+
@@ -5446,6 +5446,10 @@ var src_Date = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
5446
5446
  e.preventDefault();
5447
5447
  e.stopPropagation(); // Avoid triggering other inputs
5448
5448
 
5449
+ // If disabled or readOnly, the operations are not performed
5450
+ if (disabled || readOnly) {
5451
+ return;
5452
+ }
5449
5453
  e.target.select();
5450
5454
  resetDefauleValueExist();
5451
5455
 
@@ -5704,12 +5708,16 @@ var src_Date = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
5704
5708
  tabIndex: -1,
5705
5709
  href: "#",
5706
5710
  className: (0,cls.combinedCls)('date2d__control-tools__close', {
5707
- 'd-none': HIDE_CLEAR_BTN_ENABLED || !dateDefaultValueExist
5711
+ 'd-none': HIDE_CLEAR_BTN_ENABLED || !dateDefaultValueExist || disabled || readOnly
5708
5712
  }),
5709
5713
  onClick: function onClick(e) {
5710
5714
  e.preventDefault();
5711
5715
  e.stopPropagation(); // Avoid triggering pop-ups
5712
5716
 
5717
+ // If disabled or readOnly, the operations are not performed
5718
+ if (disabled || readOnly) {
5719
+ return;
5720
+ }
5713
5721
  clearAll();
5714
5722
  onClear === null || onClear === void 0 ? void 0 : onClear(getFullTimeData(''));
5715
5723
  }
@@ -5728,6 +5736,10 @@ var src_Date = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
5728
5736
  e.preventDefault();
5729
5737
  e.stopPropagation(); // Avoid triggering pop-ups
5730
5738
 
5739
+ // If disabled or readOnly, the operations are not performed
5740
+ if (disabled || readOnly) {
5741
+ return;
5742
+ }
5731
5743
  handleShow();
5732
5744
  }
5733
5745
  }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("svg", {
@@ -5798,7 +5810,7 @@ var src_Date = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
5798
5810
  onFocus: handleFocus,
5799
5811
  onBlur: handleBlur,
5800
5812
  onKeyDown: handleKeyPressed,
5801
- onClick: enableEntireAreaPopup ? handleShow : function () {}
5813
+ onClick: enableEntireAreaPopup && !disabled && !readOnly ? handleShow : function () {}
5802
5814
  }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", {
5803
5815
  className: "date2d__control"
5804
5816
  }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement((cjs_default()), _extends({
@@ -5810,6 +5822,8 @@ var src_Date = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
5810
5822
  externalRef.current = node;
5811
5823
  }
5812
5824
  },
5825
+ disabled: disabled,
5826
+ readOnly: readOnly,
5813
5827
  tabIndex: -1,
5814
5828
  type: "text",
5815
5829
  inputMode: "none",
@@ -6135,6 +6149,10 @@ var src_Date = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
6135
6149
  langMonthsFull: _langMonthsFull,
6136
6150
  langToday: _langToday,
6137
6151
  onChangeDate: function onChangeDate(e, currentData) {
6152
+ // If disabled or readOnly, the operations are not performed
6153
+ if (disabled || readOnly) {
6154
+ return;
6155
+ }
6138
6156
  resetDefauleValueExist();
6139
6157
 
6140
6158
  //
@@ -6153,6 +6171,10 @@ var src_Date = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
6153
6171
  resetPopupBlurStatus();
6154
6172
  },
6155
6173
  onChangeToday: function onChangeToday(currentData) {
6174
+ // If disabled or readOnly, the operations are not performed
6175
+ if (disabled || readOnly) {
6176
+ return;
6177
+ }
6156
6178
  resetDefauleValueExist();
6157
6179
 
6158
6180
  //
@@ -6221,6 +6243,11 @@ var src_Date = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
6221
6243
  tabIndex: -1,
6222
6244
  onClick: function onClick(e) {
6223
6245
  e.preventDefault();
6246
+
6247
+ // If disabled or readOnly, the operations are not performed
6248
+ if (disabled || readOnly) {
6249
+ return;
6250
+ }
6224
6251
  resetDefauleValueExist();
6225
6252
 
6226
6253
  //
@@ -6258,6 +6285,11 @@ var src_Date = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
6258
6285
  tabIndex: -1,
6259
6286
  onClick: function onClick(e) {
6260
6287
  e.preventDefault();
6288
+
6289
+ // If disabled or readOnly, the operations are not performed
6290
+ if (disabled || readOnly) {
6291
+ return;
6292
+ }
6261
6293
  resetDefauleValueExist();
6262
6294
 
6263
6295
  //
@@ -6295,6 +6327,11 @@ var src_Date = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
6295
6327
  tabIndex: -1,
6296
6328
  onClick: function onClick(e) {
6297
6329
  e.preventDefault();
6330
+
6331
+ // If disabled or readOnly, the operations are not performed
6332
+ if (disabled || readOnly) {
6333
+ return;
6334
+ }
6298
6335
  resetDefauleValueExist();
6299
6336
 
6300
6337
  //
@@ -568,6 +568,9 @@ var DynamicFields = function DynamicFields(props) {
568
568
  // exposes the following methods
569
569
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useImperativeHandle)(contentRef, function () {
570
570
  return {
571
+ addNew: function addNew() {
572
+ handleClickAdd(null);
573
+ },
571
574
  showAddBtn: function showAddBtn() {
572
575
  addBtnRef.current.style.setProperty('display', 'inline', 'important');
573
576
  },
@@ -578,7 +581,9 @@ var DynamicFields = function DynamicFields(props) {
578
581
  return rootRef.current.querySelectorAll(PER_ROW_DOM_STRING).length;
579
582
  }
580
583
  };
581
- }, [contentRef]);
584
+ }, [contentRef, handleClickAdd] // required "handleClickAdd"
585
+ );
586
+
582
587
  function updateLastItemCls(el, type) {
583
588
  if (typeof el === 'undefined') return;
584
589
  if (type === 'add') {
@@ -624,8 +629,11 @@ var DynamicFields = function DynamicFields(props) {
624
629
  addBtnRef.current.style.setProperty('display', 'none', 'important');
625
630
  }
626
631
  }
627
- function handleClickAdd(event) {
628
- if (event !== null && typeof event !== 'undefined') event.preventDefault();
632
+ function handleClickAdd() {
633
+ var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
634
+ if (event !== null) {
635
+ if (typeof event !== 'undefined') event.preventDefault();
636
+ }
629
637
 
630
638
  //button status
631
639
  checkMaxStatus();