funda-ui 4.7.620 → 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 (562) hide show
  1. package/.gitattributes +2 -0
  2. package/README.md +116 -2
  3. package/README_PUBLISH.md +328 -0
  4. package/lib/cjs/DynamicFields/index.js +11 -3
  5. package/lib/esm/DynamicFields/index.tsx +9 -4
  6. package/logo.png +0 -0
  7. package/package.json +591 -1
  8. package/preview.png +0 -0
  9. package/{DynamicFields → publish/DynamicFields}/index.js +11 -3
  10. package/publish/LICENSE +21 -0
  11. package/publish/README.md +328 -0
  12. package/publish/lib/cjs/Accordion/index.d.ts +2 -0
  13. package/publish/lib/cjs/Accordion/index.js +667 -0
  14. package/publish/lib/cjs/BackToTop/index.d.ts +17 -0
  15. package/publish/lib/cjs/BackToTop/index.js +904 -0
  16. package/publish/lib/cjs/CascadingSelect/index.d.ts +80 -0
  17. package/publish/lib/cjs/CascadingSelect/index.js +3383 -0
  18. package/publish/lib/cjs/CascadingSelectE2E/index.d.ts +91 -0
  19. package/publish/lib/cjs/CascadingSelectE2E/index.js +3988 -0
  20. package/publish/lib/cjs/Chatbox/index.d.ts +101 -0
  21. package/publish/lib/cjs/Chatbox/index.js +7037 -0
  22. package/publish/lib/cjs/Checkbox/index.d.ts +28 -0
  23. package/publish/lib/cjs/Checkbox/index.js +673 -0
  24. package/publish/lib/cjs/ColorPicker/index.d.ts +27 -0
  25. package/publish/lib/cjs/ColorPicker/index.js +662 -0
  26. package/publish/lib/cjs/Date/index.d.ts +70 -0
  27. package/publish/lib/cjs/Date/index.js +6368 -0
  28. package/publish/lib/cjs/DigitalClock/index.d.ts +7 -0
  29. package/publish/lib/cjs/DigitalClock/index.js +402 -0
  30. package/publish/lib/cjs/DragDropList/index.d.ts +45 -0
  31. package/publish/lib/cjs/DragDropList/index.js +1586 -0
  32. package/publish/lib/cjs/DropdownMenu/index.d.ts +38 -0
  33. package/publish/lib/cjs/DropdownMenu/index.js +1507 -0
  34. package/publish/lib/cjs/DynamicFields/index.d.ts +40 -0
  35. package/publish/lib/cjs/DynamicFields/index.js +818 -0
  36. package/publish/lib/cjs/EventCalendar/index.d.ts +61 -0
  37. package/publish/lib/cjs/EventCalendar/index.js +3789 -0
  38. package/publish/lib/cjs/EventCalendarTimeline/index.d.ts +100 -0
  39. package/publish/lib/cjs/EventCalendarTimeline/index.js +6141 -0
  40. package/publish/lib/cjs/File/index.d.ts +40 -0
  41. package/publish/lib/cjs/File/index.js +1751 -0
  42. package/publish/lib/cjs/HorizontalScrollContent/index.d.ts +14 -0
  43. package/publish/lib/cjs/HorizontalScrollContent/index.js +426 -0
  44. package/publish/lib/cjs/Input/index.d.ts +59 -0
  45. package/publish/lib/cjs/Input/index.js +1486 -0
  46. package/publish/lib/cjs/LiveSearch/index.d.ts +70 -0
  47. package/publish/lib/cjs/LiveSearch/index.js +4180 -0
  48. package/publish/lib/cjs/MasonryLayout/index.d.ts +14 -0
  49. package/publish/lib/cjs/MasonryLayout/index.js +689 -0
  50. package/publish/lib/cjs/ModalDialog/index.d.ts +83 -0
  51. package/publish/lib/cjs/ModalDialog/index.js +1719 -0
  52. package/publish/lib/cjs/ModeSwitch/index.d.ts +17 -0
  53. package/publish/lib/cjs/ModeSwitch/index.js +202 -0
  54. package/publish/lib/cjs/MultilevelDropdownMenu/index.d.ts +20 -0
  55. package/publish/lib/cjs/MultilevelDropdownMenu/index.js +930 -0
  56. package/publish/lib/cjs/MultipleCheckboxes/index.d.ts +66 -0
  57. package/publish/lib/cjs/MultipleCheckboxes/index.js +2337 -0
  58. package/publish/lib/cjs/MultipleSelect/index.d.ts +65 -0
  59. package/publish/lib/cjs/MultipleSelect/index.js +4197 -0
  60. package/publish/lib/cjs/NativeSelect/index.d.ts +37 -0
  61. package/publish/lib/cjs/NativeSelect/index.js +2052 -0
  62. package/publish/lib/cjs/NumberInput/index.d.ts +40 -0
  63. package/publish/lib/cjs/NumberInput/index.js +1191 -0
  64. package/publish/lib/cjs/Pagination/index.d.ts +51 -0
  65. package/publish/lib/cjs/Pagination/index.js +612 -0
  66. package/publish/lib/cjs/Radio/index.d.ts +45 -0
  67. package/publish/lib/cjs/Radio/index.js +1838 -0
  68. package/publish/lib/cjs/RangeSlider/index.d.ts +22 -0
  69. package/publish/lib/cjs/RangeSlider/index.js +2696 -0
  70. package/publish/lib/cjs/Refresher/index.d.ts +22 -0
  71. package/publish/lib/cjs/Refresher/index.js +564 -0
  72. package/publish/lib/cjs/RootPortal/index.d.ts +9 -0
  73. package/publish/lib/cjs/RootPortal/index.js +148 -0
  74. package/publish/lib/cjs/ScrollReveal/index.d.ts +21 -0
  75. package/publish/lib/cjs/ScrollReveal/index.js +401 -0
  76. package/publish/lib/cjs/Scrollbar/index.d.ts +17 -0
  77. package/publish/lib/cjs/Scrollbar/index.js +1107 -0
  78. package/publish/lib/cjs/SearchBar/index.d.ts +41 -0
  79. package/publish/lib/cjs/SearchBar/index.js +701 -0
  80. package/publish/lib/cjs/Select/index.d.ts +107 -0
  81. package/publish/lib/cjs/Select/index.js +6540 -0
  82. package/publish/lib/cjs/ShowMoreLess/index.d.ts +36 -0
  83. package/publish/lib/cjs/ShowMoreLess/index.js +387 -0
  84. package/publish/lib/cjs/SplitterPanel/index.d.ts +20 -0
  85. package/publish/lib/cjs/SplitterPanel/index.js +800 -0
  86. package/publish/lib/cjs/Stepper/index.d.ts +26 -0
  87. package/publish/lib/cjs/Stepper/index.js +568 -0
  88. package/publish/lib/cjs/Switch/index.d.ts +25 -0
  89. package/publish/lib/cjs/Switch/index.js +630 -0
  90. package/publish/lib/cjs/Table/index.d.ts +12 -0
  91. package/publish/lib/cjs/Table/index.js +2311 -0
  92. package/publish/lib/cjs/Tabs/index.d.ts +3 -0
  93. package/publish/lib/cjs/Tabs/index.js +771 -0
  94. package/publish/lib/cjs/TagInput/index.d.ts +37 -0
  95. package/publish/lib/cjs/TagInput/index.js +1227 -0
  96. package/publish/lib/cjs/Textarea/index.d.ts +50 -0
  97. package/publish/lib/cjs/Textarea/index.js +1795 -0
  98. package/publish/lib/cjs/Toast/index.d.ts +3 -0
  99. package/publish/lib/cjs/Toast/index.js +1345 -0
  100. package/publish/lib/cjs/Tooltip/index.d.ts +38 -0
  101. package/publish/lib/cjs/Tooltip/index.js +1778 -0
  102. package/publish/lib/cjs/Tree/index.d.ts +78 -0
  103. package/publish/lib/cjs/Tree/index.js +2330 -0
  104. package/publish/lib/cjs/Utils/anim.d.ts +11 -0
  105. package/publish/lib/cjs/Utils/anim.js +846 -0
  106. package/publish/lib/cjs/Utils/bodyScrollLock.d.ts +8 -0
  107. package/publish/lib/cjs/Utils/bodyScrollLock.js +311 -0
  108. package/publish/lib/cjs/Utils/buffer.d.ts +67 -0
  109. package/publish/lib/cjs/Utils/buffer.js +343 -0
  110. package/publish/lib/cjs/Utils/cls.d.ts +15 -0
  111. package/publish/lib/cjs/Utils/cls.js +124 -0
  112. package/publish/lib/cjs/Utils/convert.d.ts +25 -0
  113. package/publish/lib/cjs/Utils/convert.js +109 -0
  114. package/publish/lib/cjs/Utils/date.d.ts +227 -0
  115. package/publish/lib/cjs/Utils/date.js +587 -0
  116. package/publish/lib/cjs/Utils/dom.d.ts +13 -0
  117. package/publish/lib/cjs/Utils/dom.js +215 -0
  118. package/publish/lib/cjs/Utils/easing.d.ts +29 -0
  119. package/publish/lib/cjs/Utils/easing.js +221 -0
  120. package/publish/lib/cjs/Utils/extract.d.ts +66 -0
  121. package/publish/lib/cjs/Utils/extract.js +195 -0
  122. package/publish/lib/cjs/Utils/format-string.d.ts +65 -0
  123. package/publish/lib/cjs/Utils/format-string.js +167 -0
  124. package/publish/lib/cjs/Utils/formdata.d.ts +13 -0
  125. package/publish/lib/cjs/Utils/formdata.js +131 -0
  126. package/publish/lib/cjs/Utils/getElementProperty.d.ts +52 -0
  127. package/publish/lib/cjs/Utils/getElementProperty.js +189 -0
  128. package/publish/lib/cjs/Utils/guid.d.ts +7 -0
  129. package/publish/lib/cjs/Utils/guid.js +67 -0
  130. package/publish/lib/cjs/Utils/initDefaultOptions.d.ts +10 -0
  131. package/publish/lib/cjs/Utils/initDefaultOptions.js +607 -0
  132. package/publish/lib/cjs/Utils/inputsCalculation.d.ts +28 -0
  133. package/publish/lib/cjs/Utils/inputsCalculation.js +188 -0
  134. package/publish/lib/cjs/Utils/math.d.ts +77 -0
  135. package/publish/lib/cjs/Utils/math.js +305 -0
  136. package/publish/lib/cjs/Utils/object.d.ts +18 -0
  137. package/publish/lib/cjs/Utils/object.js +120 -0
  138. package/publish/lib/cjs/Utils/os.d.ts +2 -0
  139. package/publish/lib/cjs/Utils/os.js +104 -0
  140. package/publish/lib/cjs/Utils/performance.d.ts +3 -0
  141. package/publish/lib/cjs/Utils/performance.js +94 -0
  142. package/publish/lib/cjs/Utils/sanitize.d.ts +14 -0
  143. package/publish/lib/cjs/Utils/sanitize.js +87 -0
  144. package/publish/lib/cjs/Utils/time.d.ts +40 -0
  145. package/publish/lib/cjs/Utils/time.js +177 -0
  146. package/publish/lib/cjs/Utils/tree.d.ts +40 -0
  147. package/publish/lib/cjs/Utils/tree.js +195 -0
  148. package/publish/lib/cjs/Utils/useAutosizeTextArea.d.ts +10 -0
  149. package/publish/lib/cjs/Utils/useAutosizeTextArea.js +231 -0
  150. package/publish/lib/cjs/Utils/useBoundedDrag.d.ts +125 -0
  151. package/publish/lib/cjs/Utils/useBoundedDrag.js +380 -0
  152. package/publish/lib/cjs/Utils/useClickOutside.d.ts +33 -0
  153. package/publish/lib/cjs/Utils/useClickOutside.js +166 -0
  154. package/publish/lib/cjs/Utils/useComId.d.ts +6 -0
  155. package/publish/lib/cjs/Utils/useComId.js +114 -0
  156. package/publish/lib/cjs/Utils/useDebounce.d.ts +20 -0
  157. package/publish/lib/cjs/Utils/useDebounce.js +138 -0
  158. package/publish/lib/cjs/Utils/useDragDropPosition.d.ts +166 -0
  159. package/publish/lib/cjs/Utils/useDragDropPosition.js +453 -0
  160. package/publish/lib/cjs/Utils/useDraggable.d.ts +62 -0
  161. package/publish/lib/cjs/Utils/useDraggable.js +348 -0
  162. package/publish/lib/cjs/Utils/useHistoryTracker.d.ts +166 -0
  163. package/publish/lib/cjs/Utils/useHistoryTracker.js +649 -0
  164. package/publish/lib/cjs/Utils/useInterval.d.ts +5 -0
  165. package/publish/lib/cjs/Utils/useInterval.js +168 -0
  166. package/publish/lib/cjs/Utils/useIsMobile.d.ts +2 -0
  167. package/publish/lib/cjs/Utils/useIsMobile.js +232 -0
  168. package/publish/lib/cjs/Utils/useKeyPress.d.ts +44 -0
  169. package/publish/lib/cjs/Utils/useKeyPress.js +200 -0
  170. package/publish/lib/cjs/Utils/useSessionStorageListener.d.ts +2 -0
  171. package/publish/lib/cjs/Utils/useSessionStorageListener.js +157 -0
  172. package/publish/lib/cjs/Utils/useStreamController.d.ts +71 -0
  173. package/publish/lib/cjs/Utils/useStreamController.js +494 -0
  174. package/publish/lib/cjs/Utils/useThrottle.d.ts +2 -0
  175. package/publish/lib/cjs/Utils/useThrottle.js +136 -0
  176. package/publish/lib/cjs/Utils/useWindowScroll.d.ts +12 -0
  177. package/publish/lib/cjs/Utils/useWindowScroll.js +217 -0
  178. package/publish/lib/cjs/Utils/validate.d.ts +53 -0
  179. package/publish/lib/cjs/Utils/validate.js +536 -0
  180. package/publish/lib/cjs/Utils/viewport.d.ts +7 -0
  181. package/publish/lib/cjs/Utils/viewport.js +64 -0
  182. package/publish/lib/cjs/index.d.ts +49 -0
  183. package/publish/lib/cjs/index.js +50 -0
  184. package/publish/lib/css/BackToTop/index.css +34 -0
  185. package/publish/lib/css/CascadingSelect/index.css +245 -0
  186. package/publish/lib/css/CascadingSelectE2E/index.css +245 -0
  187. package/publish/lib/css/Chatbox/index.css +774 -0
  188. package/publish/lib/css/ColorPicker/index.css +58 -0
  189. package/publish/lib/css/Date/index.css +434 -0
  190. package/publish/lib/css/DragDropList/index.css +188 -0
  191. package/publish/lib/css/DropdownMenu/index.css +151 -0
  192. package/publish/lib/css/EventCalendar/index.css +300 -0
  193. package/publish/lib/css/EventCalendarTimeline/index.css +694 -0
  194. package/publish/lib/css/HorizontalScrollContent/index.css +70 -0
  195. package/publish/lib/css/LiveSearch/index.css +88 -0
  196. package/publish/lib/css/MultilevelDropdownMenu/index.css +38 -0
  197. package/publish/lib/css/MultipleSelect/index.css +313 -0
  198. package/publish/lib/css/RangeSlider/index.css +150 -0
  199. package/publish/lib/css/Scrollbar/index.css +176 -0
  200. package/publish/lib/css/Select/index.css +434 -0
  201. package/publish/lib/css/ShowMoreLess/index.css +23 -0
  202. package/publish/lib/css/SplitterPanel/index.css +63 -0
  203. package/publish/lib/css/Stepper/index.css +250 -0
  204. package/publish/lib/css/Table/index.css +584 -0
  205. package/publish/lib/css/TagInput/index.css +91 -0
  206. package/publish/lib/css/Toast/index.css +149 -0
  207. package/publish/lib/css/Tooltip/index.css +198 -0
  208. package/publish/lib/css/Tree/index.css +237 -0
  209. package/publish/lib/esm/Accordion/Accordion.tsx +185 -0
  210. package/publish/lib/esm/Accordion/AccordionItem.tsx +248 -0
  211. package/publish/lib/esm/Accordion/index.tsx +2 -0
  212. package/publish/lib/esm/BackToTop/index.scss +47 -0
  213. package/publish/lib/esm/BackToTop/index.tsx +177 -0
  214. package/publish/lib/esm/CascadingSelect/Group.tsx +83 -0
  215. package/publish/lib/esm/CascadingSelect/index.scss +330 -0
  216. package/publish/lib/esm/CascadingSelect/index.tsx +1397 -0
  217. package/publish/lib/esm/CascadingSelectE2E/Group.tsx +87 -0
  218. package/publish/lib/esm/CascadingSelectE2E/index.scss +333 -0
  219. package/publish/lib/esm/CascadingSelectE2E/index.tsx +1684 -0
  220. package/publish/lib/esm/Chatbox/PureLoader.tsx +47 -0
  221. package/publish/lib/esm/Chatbox/TypingEffect.tsx +56 -0
  222. package/publish/lib/esm/Chatbox/index.scss +966 -0
  223. package/publish/lib/esm/Chatbox/index.tsx +1742 -0
  224. package/publish/lib/esm/Chatbox/utils/func.ts +180 -0
  225. package/publish/lib/esm/Checkbox/index.tsx +206 -0
  226. package/publish/lib/esm/ColorPicker/index.scss +91 -0
  227. package/publish/lib/esm/ColorPicker/index.tsx +204 -0
  228. package/publish/lib/esm/Date/Calendar.tsx +723 -0
  229. package/publish/lib/esm/Date/index.scss +567 -0
  230. package/publish/lib/esm/Date/index.tsx +1797 -0
  231. package/publish/lib/esm/Date/localization/en_US.js +13 -0
  232. package/publish/lib/esm/Date/localization/zh_CN.js +12 -0
  233. package/publish/lib/esm/DigitalClock/index.tsx +74 -0
  234. package/publish/lib/esm/DragDropList/index.scss +245 -0
  235. package/publish/lib/esm/DragDropList/index.tsx +504 -0
  236. package/publish/lib/esm/DropdownMenu/Option.tsx +55 -0
  237. package/publish/lib/esm/DropdownMenu/index.scss +205 -0
  238. package/publish/lib/esm/DropdownMenu/index.tsx +378 -0
  239. package/publish/lib/esm/DynamicFields/index.tsx +409 -0
  240. package/publish/lib/esm/EventCalendar/index.scss +407 -0
  241. package/publish/lib/esm/EventCalendar/index.tsx +1005 -0
  242. package/publish/lib/esm/EventCalendarTimeline/index.scss +926 -0
  243. package/publish/lib/esm/EventCalendarTimeline/index.tsx +2686 -0
  244. package/publish/lib/esm/File/index.tsx +477 -0
  245. package/publish/lib/esm/HorizontalScrollContent/index.scss +87 -0
  246. package/publish/lib/esm/HorizontalScrollContent/index.tsx +171 -0
  247. package/publish/lib/esm/Input/index.tsx +641 -0
  248. package/publish/lib/esm/LiveSearch/index.scss +129 -0
  249. package/publish/lib/esm/LiveSearch/index.tsx +1058 -0
  250. package/publish/lib/esm/MasonryLayout/index.tsx +326 -0
  251. package/publish/lib/esm/ModalDialog/index.tsx +572 -0
  252. package/publish/lib/esm/ModeSwitch/index.tsx +82 -0
  253. package/publish/lib/esm/MultilevelDropdownMenu/ItemList.tsx +265 -0
  254. package/publish/lib/esm/MultilevelDropdownMenu/index.scss +79 -0
  255. package/publish/lib/esm/MultilevelDropdownMenu/index.tsx +77 -0
  256. package/publish/lib/esm/MultipleCheckboxes/index.tsx +849 -0
  257. package/publish/lib/esm/MultipleSelect/index.scss +398 -0
  258. package/publish/lib/esm/MultipleSelect/index.tsx +769 -0
  259. package/publish/lib/esm/MultipleSelect/utils/func.ts +63 -0
  260. package/publish/lib/esm/NativeSelect/index.tsx +396 -0
  261. package/publish/lib/esm/NativeSelect/utils/func.ts +51 -0
  262. package/publish/lib/esm/NumberInput/index.tsx +425 -0
  263. package/publish/lib/esm/Pagination/index.tsx +286 -0
  264. package/publish/lib/esm/Pagination/pagination-navigators.tsx +60 -0
  265. package/publish/lib/esm/Radio/index.tsx +694 -0
  266. package/publish/lib/esm/RangeSlider/index.scss +186 -0
  267. package/publish/lib/esm/RangeSlider/index.tsx +241 -0
  268. package/publish/lib/esm/Refresher/index.tsx +121 -0
  269. package/publish/lib/esm/RootPortal/index.tsx +59 -0
  270. package/publish/lib/esm/ScrollReveal/index.tsx +148 -0
  271. package/publish/lib/esm/Scrollbar/index.scss +221 -0
  272. package/publish/lib/esm/Scrollbar/index.tsx +561 -0
  273. package/publish/lib/esm/SearchBar/index.tsx +252 -0
  274. package/publish/lib/esm/Select/index.scss +639 -0
  275. package/publish/lib/esm/Select/index.tsx +3104 -0
  276. package/publish/lib/esm/Select/utils/func.ts +98 -0
  277. package/publish/lib/esm/ShowMoreLess/index.scss +27 -0
  278. package/publish/lib/esm/ShowMoreLess/index.tsx +145 -0
  279. package/publish/lib/esm/SplitterPanel/index.scss +82 -0
  280. package/publish/lib/esm/SplitterPanel/index.tsx +174 -0
  281. package/publish/lib/esm/Stepper/index.scss +315 -0
  282. package/publish/lib/esm/Stepper/index.tsx +325 -0
  283. package/publish/lib/esm/Switch/index.tsx +149 -0
  284. package/publish/lib/esm/Table/Table.tsx +351 -0
  285. package/publish/lib/esm/Table/TableBody.tsx +41 -0
  286. package/publish/lib/esm/Table/TableCaption.tsx +34 -0
  287. package/publish/lib/esm/Table/TableCell.tsx +126 -0
  288. package/publish/lib/esm/Table/TableColgroup.tsx +38 -0
  289. package/publish/lib/esm/Table/TableContext.tsx +26 -0
  290. package/publish/lib/esm/Table/TableFoot.tsx +28 -0
  291. package/publish/lib/esm/Table/TableHead.tsx +28 -0
  292. package/publish/lib/esm/Table/TableRow.tsx +76 -0
  293. package/publish/lib/esm/Table/index.scss +418 -0
  294. package/publish/lib/esm/Table/index.tsx +14 -0
  295. package/publish/lib/esm/Table/utils/DragHandleSprite.tsx +46 -0
  296. package/publish/lib/esm/Table/utils/SortSprite.tsx +63 -0
  297. package/publish/lib/esm/Table/utils/TableFilter.tsx +56 -0
  298. package/publish/lib/esm/Table/utils/ToggleSelection.tsx +255 -0
  299. package/publish/lib/esm/Table/utils/func.ts +182 -0
  300. package/publish/lib/esm/Table/utils/hooks/useTableDraggable.tsx +342 -0
  301. package/publish/lib/esm/Table/utils/hooks/useTableKeyPress.tsx +255 -0
  302. package/publish/lib/esm/Table/utils/hooks/useTableResponsive.tsx +92 -0
  303. package/publish/lib/esm/Table/utils/hooks/useTableSort.tsx +187 -0
  304. package/publish/lib/esm/Tabs/TabList.tsx +50 -0
  305. package/publish/lib/esm/Tabs/TabPanel.tsx +44 -0
  306. package/publish/lib/esm/Tabs/Tabs.tsx +282 -0
  307. package/publish/lib/esm/Tabs/index.tsx +3 -0
  308. package/publish/lib/esm/TagInput/index.scss +126 -0
  309. package/publish/lib/esm/TagInput/index.tsx +379 -0
  310. package/publish/lib/esm/Textarea/index.tsx +621 -0
  311. package/publish/lib/esm/Toast/Item.tsx +165 -0
  312. package/publish/lib/esm/Toast/Toast.tsx +391 -0
  313. package/publish/lib/esm/Toast/ToastContext.tsx +104 -0
  314. package/publish/lib/esm/Toast/__toast.vanilla.js +422 -0
  315. package/publish/lib/esm/Toast/index.scss +197 -0
  316. package/publish/lib/esm/Toast/index.tsx +3 -0
  317. package/publish/lib/esm/Toast/types.ts +60 -0
  318. package/publish/lib/esm/Toast/useToast.tsx +72 -0
  319. package/publish/lib/esm/Tooltip/index.scss +272 -0
  320. package/publish/lib/esm/Tooltip/index.tsx +416 -0
  321. package/publish/lib/esm/Tree/TreeList.tsx +600 -0
  322. package/publish/lib/esm/Tree/index.scss +384 -0
  323. package/publish/lib/esm/Tree/index.tsx +661 -0
  324. package/publish/lib/esm/Tree/init-height.tsx +40 -0
  325. package/publish/lib/esm/Tree/utils/func.ts +15 -0
  326. package/publish/lib/esm/Utils/hooks/useAutosizeTextArea.tsx +131 -0
  327. package/publish/lib/esm/Utils/hooks/useBoundedDrag.tsx +301 -0
  328. package/publish/lib/esm/Utils/hooks/useClickOutside.tsx +69 -0
  329. package/publish/lib/esm/Utils/hooks/useComId.tsx +13 -0
  330. package/publish/lib/esm/Utils/hooks/useDebounce.tsx +40 -0
  331. package/publish/lib/esm/Utils/hooks/useDragDropPosition.tsx +417 -0
  332. package/publish/lib/esm/Utils/hooks/useDraggable.tsx +265 -0
  333. package/publish/lib/esm/Utils/hooks/useHistoryTracker.tsx +554 -0
  334. package/publish/lib/esm/Utils/hooks/useInterval.tsx +74 -0
  335. package/publish/lib/esm/Utils/hooks/useIsMobile.tsx +139 -0
  336. package/publish/lib/esm/Utils/hooks/useKeyPress.tsx +104 -0
  337. package/publish/lib/esm/Utils/hooks/useSessionStorageListener.tsx +45 -0
  338. package/publish/lib/esm/Utils/hooks/useStreamController.tsx +277 -0
  339. package/publish/lib/esm/Utils/hooks/useThrottle.tsx +39 -0
  340. package/publish/lib/esm/Utils/hooks/useWindowScroll.tsx +83 -0
  341. package/publish/lib/esm/Utils/libs/anim.ts +96 -0
  342. package/publish/lib/esm/Utils/libs/buffer.ts +262 -0
  343. package/publish/lib/esm/Utils/libs/cls.ts +64 -0
  344. package/publish/lib/esm/Utils/libs/convert.ts +59 -0
  345. package/publish/lib/esm/Utils/libs/date.ts +598 -0
  346. package/publish/lib/esm/Utils/libs/dom.ts +150 -0
  347. package/publish/lib/esm/Utils/libs/easing.ts +201 -0
  348. package/publish/lib/esm/Utils/libs/extract.ts +160 -0
  349. package/publish/lib/esm/Utils/libs/format-string.ts +116 -0
  350. package/publish/lib/esm/Utils/libs/formdata.ts +93 -0
  351. package/publish/lib/esm/Utils/libs/getElementProperty.ts +150 -0
  352. package/publish/lib/esm/Utils/libs/guid.ts +16 -0
  353. package/publish/lib/esm/Utils/libs/initDefaultOptions.ts +43 -0
  354. package/publish/lib/esm/Utils/libs/inputsCalculation.ts +160 -0
  355. package/publish/lib/esm/Utils/libs/math.ts +276 -0
  356. package/publish/lib/esm/Utils/libs/object.ts +68 -0
  357. package/publish/lib/esm/Utils/libs/os.ts +63 -0
  358. package/publish/lib/esm/Utils/libs/performance.ts +47 -0
  359. package/publish/lib/esm/Utils/libs/sanitize.ts +55 -0
  360. package/publish/lib/esm/Utils/libs/time.ts +139 -0
  361. package/publish/lib/esm/Utils/libs/tree.ts +119 -0
  362. package/publish/lib/esm/Utils/libs/validate.ts +434 -0
  363. package/publish/lib/esm/Utils/libs/viewport.ts +20 -0
  364. package/publish/lib/esm/Utils/plugins/bodyScrollLock.ts +286 -0
  365. package/publish/lib/esm/index.js +47 -0
  366. package/publish/package.json +1 -0
  367. /package/{Accordion → publish/Accordion}/index.d.ts +0 -0
  368. /package/{Accordion → publish/Accordion}/index.js +0 -0
  369. /package/{BackToTop → publish/BackToTop}/index.css +0 -0
  370. /package/{BackToTop → publish/BackToTop}/index.d.ts +0 -0
  371. /package/{BackToTop → publish/BackToTop}/index.js +0 -0
  372. /package/{CascadingSelect → publish/CascadingSelect}/index.css +0 -0
  373. /package/{CascadingSelect → publish/CascadingSelect}/index.d.ts +0 -0
  374. /package/{CascadingSelect → publish/CascadingSelect}/index.js +0 -0
  375. /package/{CascadingSelectE2E → publish/CascadingSelectE2E}/index.css +0 -0
  376. /package/{CascadingSelectE2E → publish/CascadingSelectE2E}/index.d.ts +0 -0
  377. /package/{CascadingSelectE2E → publish/CascadingSelectE2E}/index.js +0 -0
  378. /package/{Chatbox → publish/Chatbox}/index.css +0 -0
  379. /package/{Chatbox → publish/Chatbox}/index.d.ts +0 -0
  380. /package/{Chatbox → publish/Chatbox}/index.js +0 -0
  381. /package/{Checkbox → publish/Checkbox}/index.d.ts +0 -0
  382. /package/{Checkbox → publish/Checkbox}/index.js +0 -0
  383. /package/{ColorPicker → publish/ColorPicker}/index.css +0 -0
  384. /package/{ColorPicker → publish/ColorPicker}/index.d.ts +0 -0
  385. /package/{ColorPicker → publish/ColorPicker}/index.js +0 -0
  386. /package/{Date → publish/Date}/index.css +0 -0
  387. /package/{Date → publish/Date}/index.d.ts +0 -0
  388. /package/{Date → publish/Date}/index.js +0 -0
  389. /package/{DigitalClock → publish/DigitalClock}/index.d.ts +0 -0
  390. /package/{DigitalClock → publish/DigitalClock}/index.js +0 -0
  391. /package/{DragDropList → publish/DragDropList}/index.css +0 -0
  392. /package/{DragDropList → publish/DragDropList}/index.d.ts +0 -0
  393. /package/{DragDropList → publish/DragDropList}/index.js +0 -0
  394. /package/{DropdownMenu → publish/DropdownMenu}/index.css +0 -0
  395. /package/{DropdownMenu → publish/DropdownMenu}/index.d.ts +0 -0
  396. /package/{DropdownMenu → publish/DropdownMenu}/index.js +0 -0
  397. /package/{DynamicFields → publish/DynamicFields}/index.d.ts +0 -0
  398. /package/{EventCalendar → publish/EventCalendar}/index.css +0 -0
  399. /package/{EventCalendar → publish/EventCalendar}/index.d.ts +0 -0
  400. /package/{EventCalendar → publish/EventCalendar}/index.js +0 -0
  401. /package/{EventCalendarTimeline → publish/EventCalendarTimeline}/index.css +0 -0
  402. /package/{EventCalendarTimeline → publish/EventCalendarTimeline}/index.d.ts +0 -0
  403. /package/{EventCalendarTimeline → publish/EventCalendarTimeline}/index.js +0 -0
  404. /package/{File → publish/File}/index.d.ts +0 -0
  405. /package/{File → publish/File}/index.js +0 -0
  406. /package/{HorizontalScrollContent → publish/HorizontalScrollContent}/index.css +0 -0
  407. /package/{HorizontalScrollContent → publish/HorizontalScrollContent}/index.d.ts +0 -0
  408. /package/{HorizontalScrollContent → publish/HorizontalScrollContent}/index.js +0 -0
  409. /package/{Input → publish/Input}/index.d.ts +0 -0
  410. /package/{Input → publish/Input}/index.js +0 -0
  411. /package/{LiveSearch → publish/LiveSearch}/index.css +0 -0
  412. /package/{LiveSearch → publish/LiveSearch}/index.d.ts +0 -0
  413. /package/{LiveSearch → publish/LiveSearch}/index.js +0 -0
  414. /package/{MasonryLayout → publish/MasonryLayout}/index.d.ts +0 -0
  415. /package/{MasonryLayout → publish/MasonryLayout}/index.js +0 -0
  416. /package/{ModalDialog → publish/ModalDialog}/index.d.ts +0 -0
  417. /package/{ModalDialog → publish/ModalDialog}/index.js +0 -0
  418. /package/{ModeSwitch → publish/ModeSwitch}/index.d.ts +0 -0
  419. /package/{ModeSwitch → publish/ModeSwitch}/index.js +0 -0
  420. /package/{MultilevelDropdownMenu → publish/MultilevelDropdownMenu}/index.css +0 -0
  421. /package/{MultilevelDropdownMenu → publish/MultilevelDropdownMenu}/index.d.ts +0 -0
  422. /package/{MultilevelDropdownMenu → publish/MultilevelDropdownMenu}/index.js +0 -0
  423. /package/{MultipleCheckboxes → publish/MultipleCheckboxes}/index.d.ts +0 -0
  424. /package/{MultipleCheckboxes → publish/MultipleCheckboxes}/index.js +0 -0
  425. /package/{MultipleSelect → publish/MultipleSelect}/index.css +0 -0
  426. /package/{MultipleSelect → publish/MultipleSelect}/index.d.ts +0 -0
  427. /package/{MultipleSelect → publish/MultipleSelect}/index.js +0 -0
  428. /package/{NativeSelect → publish/NativeSelect}/index.d.ts +0 -0
  429. /package/{NativeSelect → publish/NativeSelect}/index.js +0 -0
  430. /package/{NumberInput → publish/NumberInput}/index.d.ts +0 -0
  431. /package/{NumberInput → publish/NumberInput}/index.js +0 -0
  432. /package/{Pagination → publish/Pagination}/index.d.ts +0 -0
  433. /package/{Pagination → publish/Pagination}/index.js +0 -0
  434. /package/{Radio → publish/Radio}/index.d.ts +0 -0
  435. /package/{Radio → publish/Radio}/index.js +0 -0
  436. /package/{RangeSlider → publish/RangeSlider}/index.css +0 -0
  437. /package/{RangeSlider → publish/RangeSlider}/index.d.ts +0 -0
  438. /package/{RangeSlider → publish/RangeSlider}/index.js +0 -0
  439. /package/{Refresher → publish/Refresher}/index.d.ts +0 -0
  440. /package/{Refresher → publish/Refresher}/index.js +0 -0
  441. /package/{RootPortal → publish/RootPortal}/index.d.ts +0 -0
  442. /package/{RootPortal → publish/RootPortal}/index.js +0 -0
  443. /package/{ScrollReveal → publish/ScrollReveal}/index.d.ts +0 -0
  444. /package/{ScrollReveal → publish/ScrollReveal}/index.js +0 -0
  445. /package/{Scrollbar → publish/Scrollbar}/index.css +0 -0
  446. /package/{Scrollbar → publish/Scrollbar}/index.d.ts +0 -0
  447. /package/{Scrollbar → publish/Scrollbar}/index.js +0 -0
  448. /package/{SearchBar → publish/SearchBar}/index.d.ts +0 -0
  449. /package/{SearchBar → publish/SearchBar}/index.js +0 -0
  450. /package/{Select → publish/Select}/index.css +0 -0
  451. /package/{Select → publish/Select}/index.d.ts +0 -0
  452. /package/{Select → publish/Select}/index.js +0 -0
  453. /package/{ShowMoreLess → publish/ShowMoreLess}/index.css +0 -0
  454. /package/{ShowMoreLess → publish/ShowMoreLess}/index.d.ts +0 -0
  455. /package/{ShowMoreLess → publish/ShowMoreLess}/index.js +0 -0
  456. /package/{SplitterPanel → publish/SplitterPanel}/index.css +0 -0
  457. /package/{SplitterPanel → publish/SplitterPanel}/index.d.ts +0 -0
  458. /package/{SplitterPanel → publish/SplitterPanel}/index.js +0 -0
  459. /package/{Stepper → publish/Stepper}/index.css +0 -0
  460. /package/{Stepper → publish/Stepper}/index.d.ts +0 -0
  461. /package/{Stepper → publish/Stepper}/index.js +0 -0
  462. /package/{Switch → publish/Switch}/index.d.ts +0 -0
  463. /package/{Switch → publish/Switch}/index.js +0 -0
  464. /package/{Table → publish/Table}/index.css +0 -0
  465. /package/{Table → publish/Table}/index.d.ts +0 -0
  466. /package/{Table → publish/Table}/index.js +0 -0
  467. /package/{Tabs → publish/Tabs}/index.d.ts +0 -0
  468. /package/{Tabs → publish/Tabs}/index.js +0 -0
  469. /package/{TagInput → publish/TagInput}/index.css +0 -0
  470. /package/{TagInput → publish/TagInput}/index.d.ts +0 -0
  471. /package/{TagInput → publish/TagInput}/index.js +0 -0
  472. /package/{Textarea → publish/Textarea}/index.d.ts +0 -0
  473. /package/{Textarea → publish/Textarea}/index.js +0 -0
  474. /package/{Toast → publish/Toast}/index.css +0 -0
  475. /package/{Toast → publish/Toast}/index.d.ts +0 -0
  476. /package/{Toast → publish/Toast}/index.js +0 -0
  477. /package/{Tooltip → publish/Tooltip}/index.css +0 -0
  478. /package/{Tooltip → publish/Tooltip}/index.d.ts +0 -0
  479. /package/{Tooltip → publish/Tooltip}/index.js +0 -0
  480. /package/{Tree → publish/Tree}/index.css +0 -0
  481. /package/{Tree → publish/Tree}/index.d.ts +0 -0
  482. /package/{Tree → publish/Tree}/index.js +0 -0
  483. /package/{Utils → publish/Utils}/anim.d.ts +0 -0
  484. /package/{Utils → publish/Utils}/anim.js +0 -0
  485. /package/{Utils → publish/Utils}/bodyScrollLock.d.ts +0 -0
  486. /package/{Utils → publish/Utils}/bodyScrollLock.js +0 -0
  487. /package/{Utils → publish/Utils}/buffer.d.ts +0 -0
  488. /package/{Utils → publish/Utils}/buffer.js +0 -0
  489. /package/{Utils → publish/Utils}/cls.d.ts +0 -0
  490. /package/{Utils → publish/Utils}/cls.js +0 -0
  491. /package/{Utils → publish/Utils}/convert.d.ts +0 -0
  492. /package/{Utils → publish/Utils}/convert.js +0 -0
  493. /package/{Utils → publish/Utils}/date.d.ts +0 -0
  494. /package/{Utils → publish/Utils}/date.js +0 -0
  495. /package/{Utils → publish/Utils}/dom.d.ts +0 -0
  496. /package/{Utils → publish/Utils}/dom.js +0 -0
  497. /package/{Utils → publish/Utils}/easing.d.ts +0 -0
  498. /package/{Utils → publish/Utils}/easing.js +0 -0
  499. /package/{Utils → publish/Utils}/extract.d.ts +0 -0
  500. /package/{Utils → publish/Utils}/extract.js +0 -0
  501. /package/{Utils → publish/Utils}/format-string.d.ts +0 -0
  502. /package/{Utils → publish/Utils}/format-string.js +0 -0
  503. /package/{Utils → publish/Utils}/formdata.d.ts +0 -0
  504. /package/{Utils → publish/Utils}/formdata.js +0 -0
  505. /package/{Utils → publish/Utils}/getElementProperty.d.ts +0 -0
  506. /package/{Utils → publish/Utils}/getElementProperty.js +0 -0
  507. /package/{Utils → publish/Utils}/guid.d.ts +0 -0
  508. /package/{Utils → publish/Utils}/guid.js +0 -0
  509. /package/{Utils → publish/Utils}/initDefaultOptions.d.ts +0 -0
  510. /package/{Utils → publish/Utils}/initDefaultOptions.js +0 -0
  511. /package/{Utils → publish/Utils}/inputsCalculation.d.ts +0 -0
  512. /package/{Utils → publish/Utils}/inputsCalculation.js +0 -0
  513. /package/{Utils → publish/Utils}/math.d.ts +0 -0
  514. /package/{Utils → publish/Utils}/math.js +0 -0
  515. /package/{Utils → publish/Utils}/object.d.ts +0 -0
  516. /package/{Utils → publish/Utils}/object.js +0 -0
  517. /package/{Utils → publish/Utils}/os.d.ts +0 -0
  518. /package/{Utils → publish/Utils}/os.js +0 -0
  519. /package/{Utils → publish/Utils}/performance.d.ts +0 -0
  520. /package/{Utils → publish/Utils}/performance.js +0 -0
  521. /package/{Utils → publish/Utils}/sanitize.d.ts +0 -0
  522. /package/{Utils → publish/Utils}/sanitize.js +0 -0
  523. /package/{Utils → publish/Utils}/time.d.ts +0 -0
  524. /package/{Utils → publish/Utils}/time.js +0 -0
  525. /package/{Utils → publish/Utils}/tree.d.ts +0 -0
  526. /package/{Utils → publish/Utils}/tree.js +0 -0
  527. /package/{Utils → publish/Utils}/useAutosizeTextArea.d.ts +0 -0
  528. /package/{Utils → publish/Utils}/useAutosizeTextArea.js +0 -0
  529. /package/{Utils → publish/Utils}/useBoundedDrag.d.ts +0 -0
  530. /package/{Utils → publish/Utils}/useBoundedDrag.js +0 -0
  531. /package/{Utils → publish/Utils}/useClickOutside.d.ts +0 -0
  532. /package/{Utils → publish/Utils}/useClickOutside.js +0 -0
  533. /package/{Utils → publish/Utils}/useComId.d.ts +0 -0
  534. /package/{Utils → publish/Utils}/useComId.js +0 -0
  535. /package/{Utils → publish/Utils}/useDebounce.d.ts +0 -0
  536. /package/{Utils → publish/Utils}/useDebounce.js +0 -0
  537. /package/{Utils → publish/Utils}/useDragDropPosition.d.ts +0 -0
  538. /package/{Utils → publish/Utils}/useDragDropPosition.js +0 -0
  539. /package/{Utils → publish/Utils}/useDraggable.d.ts +0 -0
  540. /package/{Utils → publish/Utils}/useDraggable.js +0 -0
  541. /package/{Utils → publish/Utils}/useHistoryTracker.d.ts +0 -0
  542. /package/{Utils → publish/Utils}/useHistoryTracker.js +0 -0
  543. /package/{Utils → publish/Utils}/useInterval.d.ts +0 -0
  544. /package/{Utils → publish/Utils}/useInterval.js +0 -0
  545. /package/{Utils → publish/Utils}/useIsMobile.d.ts +0 -0
  546. /package/{Utils → publish/Utils}/useIsMobile.js +0 -0
  547. /package/{Utils → publish/Utils}/useKeyPress.d.ts +0 -0
  548. /package/{Utils → publish/Utils}/useKeyPress.js +0 -0
  549. /package/{Utils → publish/Utils}/useSessionStorageListener.d.ts +0 -0
  550. /package/{Utils → publish/Utils}/useSessionStorageListener.js +0 -0
  551. /package/{Utils → publish/Utils}/useStreamController.d.ts +0 -0
  552. /package/{Utils → publish/Utils}/useStreamController.js +0 -0
  553. /package/{Utils → publish/Utils}/useThrottle.d.ts +0 -0
  554. /package/{Utils → publish/Utils}/useThrottle.js +0 -0
  555. /package/{Utils → publish/Utils}/useWindowScroll.d.ts +0 -0
  556. /package/{Utils → publish/Utils}/useWindowScroll.js +0 -0
  557. /package/{Utils → publish/Utils}/validate.d.ts +0 -0
  558. /package/{Utils → publish/Utils}/validate.js +0 -0
  559. /package/{Utils → publish/Utils}/viewport.d.ts +0 -0
  560. /package/{Utils → publish/Utils}/viewport.js +0 -0
  561. /package/{all.d.ts → publish/all.d.ts} +0 -0
  562. /package/{all.js → publish/all.js} +0 -0
@@ -0,0 +1,422 @@
1
+
2
+ /**
3
+ * Toast
4
+ * @since 20250417
5
+ * @based https://github.com/xizon/funda-ui/tree/main/packages/Toast
6
+ * @param {*} props
7
+ */
8
+
9
+ /**
10
+ * Configuration options for the FU_Toast function
11
+ * @typedef {Object} ToastOptions
12
+ * @property {(string|number|null|undefined)} [actionId='default'] - The identifier of toast, which can be used to determine whether different toast calls
13
+ * @property {(string|boolean)} [title=false] - Specifies an alternate and title for the toast
14
+ * @property {(string|boolean)} [note=false] - A light-colored comment next to the title, which can be information such as time
15
+ * @property {(string)} [message=false] - Specifies the content, or HTML elements to the toast
16
+ * @property {(string)} [hint=false] - Hint's content
17
+ * @property {(boolean)} [hintAutoShow=false] - Whether or not to automatically display additional hints
18
+ * @property {('primary'|'secondary'|'success'|'info'|'warning'|'danger'|'light'|'dark')} [theme='dark'] - Specifies a theme to .toast. All these colors are available as a Sass map of Bootstrap
19
+ * @property {string} [wrapperClassName=''] - The class name of the toast wrapper
20
+ * @property {boolean} [onlyShowOne=false] - Only ever going to show one toast at a time
21
+ * @property {boolean} [lock=false] - You can not close pop-win when it is enabled
22
+ * @property {boolean} [cascading=false] - Whether to use cascading styles
23
+ * @property {string} [schemeBody] - Self-defined class name for body, such as: 'align-items-center text-white bg-primary border-0'
24
+ * @property {string} [schemeHeader] - Self-defined class name for header, such as: 'text-white bg-dark'
25
+ * @property {string} [closeBtnColor] - Set the color of the close button
26
+ * @property {boolean} [closeDisabled=false] - Disable the close button
27
+ * @property {boolean} [reverseDisplay=false] - Allow data to be reversed
28
+ * @property {('bottom-left'|'bottom-center'|'bottom-right'|'top-left'|'top-center'|'top-right'|'vertical-center')} [direction='bottom-center'] - The direction of the toast
29
+ * @property {(boolean|number)} [autoCloseTime=false] - Set an automatic closing time, multiple items will be accumulated in order. Amount of time measured in milliseconds. If false or without this attribute, Auto-Close will be disabled
30
+ * @property {function(HTMLDivElement, string): void} [onClose] - Callback function when toast is closed. Parameters: (currentElement, currentToastId)
31
+ */
32
+
33
+ /**
34
+ * Creates and displays a toast notification
35
+ * @param {ToastOptions} options - The configuration options for the toast
36
+ * @param {function(string): void} [callback] - Optional callback function that receives the toast ID
37
+ * @returns {{close: function(): void}} Object containing methods to control the toast
38
+ *
39
+ */
40
+
41
+ /*
42
+ @Examples:
43
+
44
+
45
+ const showCustomToast1 = () => {
46
+
47
+ FU_Toast({
48
+ actionId: 'test-1',
49
+ title: "Custom Toast 1",
50
+ message: `<div>Text here (${Math.random()})</div>`,
51
+ autoCloseTime: 1000,
52
+ theme: 'warning',
53
+ schemeHeader: 'bg-transparent text-light',
54
+ onlyShowOne: true
55
+ });
56
+ };
57
+
58
+
59
+ const showCustomToast2 = () => {
60
+ FU_Toast({
61
+ actionId: 'test-2',
62
+ title: "Custom Toast 2",
63
+ message: `<div style="color:orange">Text here (${Math.random()})</div>`,
64
+ theme: "dark",
65
+ autoCloseTime: 5000,
66
+ direction: 'bottom-center',
67
+ schemeBody: 'align-items-center text-white border-0 p-2',
68
+ closeBtnColor: '#333',
69
+ hint: 'There are some warnings that need your attention',
70
+ hintAutoShow: false,
71
+ onClose: (currentElement, currentToastId) => {
72
+ console.log(currentElement, currentToastId);
73
+ }
74
+
75
+ });
76
+
77
+ };
78
+
79
+ const showCustomToast3 = () => {
80
+ FU_Toast({
81
+ actionId: 'test-3',
82
+ note: "11 mins ago",
83
+ message: `<div style="color:orange">Text here (${Math.random()})</div>`,
84
+ autoCloseTime: 5000,
85
+ cascading: true,
86
+ direction: 'bottom-right',
87
+ closeBtnColor: '#333',
88
+ reverseDisplay: true
89
+
90
+ });
91
+ };
92
+
93
+ const showCustomToast4 = () => {
94
+ FU_Toast({
95
+ actionId: 'test-4',
96
+ title: "Note",
97
+ message: `<div>Text here (${Math.random()})</div>`,
98
+ autoCloseTime: 5000,
99
+ direction: 'vertical-center',
100
+ theme: 'light',
101
+ schemeBody: '',
102
+ closeBtnColor: '#333'
103
+
104
+ });
105
+ };
106
+
107
+
108
+ const showCustomToast5 = () => {
109
+ FU_Toast({
110
+ actionId: 'test-5',
111
+ closeDisabled: true,
112
+ message: `<div style="color:orange">Text here (${Math.random()})</div>`,
113
+ autoCloseTime: 5000,
114
+ direction: 'bottom-left',
115
+ schemeHeader: 'p-0',
116
+ schemeBody: 'align-items-center text-white bg-dark border-0'
117
+
118
+ });
119
+ };
120
+
121
+
122
+
123
+ const showCustomToast6 = () => {
124
+ FU_Toast({
125
+ actionId: 'test-6',
126
+ direction: 'top-right',
127
+ title: "Custom Toast 1",
128
+ message: `<div>Text here (${Math.random()})</div>`,
129
+ theme: 'success',
130
+ schemeHeader: 'bg-transparent text-light',
131
+ autoCloseTime: 3000,
132
+ }, () => {
133
+ console.log('The presentation is complete');
134
+ });
135
+ };
136
+
137
+
138
+ <button onclick="showCustomToast1()">Custom Toast 1 (Only one is shown)</button>
139
+ <button onclick="showCustomToast2()">Custom Toast 2</button>
140
+ <button onclick="showCustomToast3()">Custom Toast 3</button>
141
+ <button onclick="showCustomToast4()">Custom Toast 4</button>
142
+ <button onclick="showCustomToast5()">Custom Toast 5</button>
143
+ <button onclick="showCustomToast6()">Custom Toast 6</button>
144
+
145
+ */
146
+
147
+ const FU_Toast = (function () {
148
+ 'use strict';
149
+
150
+ const REFER_LIB = "funda-ui";
151
+ const REFER_COMPONENT = "toast";
152
+
153
+ // Constants
154
+ const DEFAULT_AUTO_CLOSE_TIME = 3000;
155
+ const ANIM_SPEED = 300;
156
+
157
+ const $$FU_Toast = (options, callback) => {
158
+ // Default configuration
159
+ const defaults = {
160
+ wrapperClassName: '',
161
+ actionId: 'default',
162
+ cascading: false,
163
+ autoCloseTime: DEFAULT_AUTO_CLOSE_TIME,
164
+ direction: "top-center",
165
+ schemeBody: "align-items-center text-white border-0 p-2",
166
+ closeBtnColor: "#fff",
167
+ reverseDisplay: false,
168
+ onlyShowOne: false,
169
+ onClose: (currentElement, currentToastId) => {},
170
+
171
+ // single message
172
+ theme: 'dark',
173
+ title: false,
174
+ note: false,
175
+ hint: false,
176
+ hintAutoShow: false,
177
+ message: ''
178
+ };
179
+
180
+ // Merge options with defaults
181
+ const config = { ...defaults, ...options };
182
+
183
+ // Generate unique ID for the toast
184
+ const uniqueID = Math.random().toString(36).substring(2, 9);
185
+ const toastId = 'toast-' + uniqueID;
186
+
187
+ // Create or get toast wrapper
188
+ let rootRef = document.getElementById('toasts__wrapper-global-js__' + config.actionId);
189
+ if (!rootRef) {
190
+ rootRef = document.createElement('div');
191
+ rootRef.id = 'toasts__wrapper-global-js__' + config.actionId;
192
+
193
+ // Combine all class names
194
+ const wrapperClasses = [
195
+ 'toasts__wrapper',
196
+ `toasts__wrapper--${config.direction}`,
197
+ config.wrapperClassName
198
+ ].filter(Boolean);
199
+
200
+ rootRef.className = wrapperClasses.join(' ');
201
+
202
+ //
203
+ if (config.cascading) rootRef.classList.add('toasts__wrapper--cascading');
204
+ if (config.onlyShowOne) rootRef.classList.add('toasts__wrapper--only-one');
205
+
206
+ const toastsContainer = document.createElement('div');
207
+ toastsContainer.className = 'toasts';
208
+ rootRef.appendChild(toastsContainer);
209
+ document.body.appendChild(rootRef);
210
+ } else {
211
+ const wrapperClasses = [
212
+ 'toasts__wrapper',
213
+ `toasts__wrapper--${config.direction}`,
214
+ config.wrapperClassName,
215
+ config.cascading ? 'toasts__wrapper--cascading' : '',
216
+ config.onlyShowOne ? 'toasts__wrapper--only-one' : ''
217
+ ].filter(Boolean);
218
+
219
+ rootRef.className = wrapperClasses.join(' ');
220
+ }
221
+
222
+ // Create toast element
223
+ const toast = document.createElement('div');
224
+ toast.id = toastId;
225
+ toast.dataset.toastId = uniqueID;
226
+ toast.className = `toast-container ${config.onlyOne ? 'only-one' : ''} animate-ready`;
227
+
228
+ // Get the number of toasts in the current container as an index
229
+ const currentToasts = rootRef.querySelectorAll('.toast-container');
230
+ const index = currentToasts.length;
231
+ const itemDepth = currentToasts.length + 1;
232
+
233
+
234
+ // Calculate item style based on cascading option
235
+ const itemStyle = config.cascading ?
236
+ `transform: perspective(100px) translateZ(-${2 * index}px) translateY(${35 * index}px);
237
+ z-index: ${itemDepth};` :
238
+ `z-index: ${itemDepth}`;
239
+
240
+ toast.setAttribute('style', itemStyle);
241
+ toast.dataset.index = index;
242
+
243
+
244
+ //
245
+ const hideTitle = (config.title === '' || config.title === false) && (config.note === '' || config.note === false);
246
+
247
+ // Generate hint content based on auto show option
248
+ const hintContent = config.hint && config.hint !== '' ?
249
+ config.hintAutoShow ?
250
+ `<div class="app-io-hint-detail">${config.hint}</div>` :
251
+ `<a href="#" class="app-io-hint-btn">Details</a><div class="app-io-hint-detail d-none">${config.hint}</div>` :
252
+ '';
253
+
254
+ // Generate close button if not locked or disabled
255
+ const closeButton = !config.lock && !config.closeDisabled ?
256
+ `<button data-close="1" tabindex="-1" type="button" class="btn-close">
257
+ <svg width="12px" height="12px" viewBox="0 0 16 16">
258
+ <path fill="${config.closeBtnColor || '#000000'}" d="M9.41 8l3.29-3.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L8 6.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42L6.59 8 3.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L8 9.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L9.41 8z" fill-rule="evenodd"></path>
259
+ </svg>
260
+ </button>` :
261
+ '';
262
+
263
+ // Generate toast item HTML
264
+ toast.innerHTML = `
265
+ <div class="toast fade show ${config.schemeBody || ''} ${config.theme ? `bg-${config.theme}` : ''}" role="alert">
266
+ ${!hideTitle ? `
267
+ <div class="toast-header ${config.schemeHeader || ''}">
268
+ <strong class="me-auto">${config.title || ''}</strong>
269
+ <small class="text-muted">${config.note || ''}</small>
270
+ ${closeButton}
271
+ </div>
272
+ ` : ''}
273
+
274
+ <div class="toast-body">
275
+ ${config.message}
276
+ ${hintContent}
277
+ ${hideTitle ? `<div class="position-absolute top-0 end-0 me-2 mt-2">${closeButton}</div>` : ''}
278
+
279
+ <div class="toast-progress active toast-progress ${config.autoCloseTime === false ? 'd-none' : ''}" role="progressbar">
280
+ <div class="progress-bar"></div>
281
+ </div>
282
+ </div>
283
+ </div>
284
+ `;
285
+
286
+ // Handle only show one
287
+ if (config.onlyShowOne) {
288
+ const existingToasts = rootRef.querySelectorAll('.toast-container');
289
+ existingToasts.forEach(t => t.remove());
290
+ }
291
+
292
+ // After adding a new toast, update the index and style of all existing toasts
293
+ function updateToastIndexes() {
294
+ const allToasts = rootRef.querySelectorAll('.toast-container');
295
+ allToasts.forEach((t, idx) => {
296
+ const depth = allToasts.length - idx;
297
+ const style = config.cascading ?
298
+ `transform: perspective(100px) translateZ(-${2 * idx}px) translateY(${35 * idx}px);
299
+ z-index: ${depth};` :
300
+ `z-index: ${depth}`;
301
+
302
+ t.setAttribute('style', style);
303
+ t.dataset.index = idx;
304
+ });
305
+ }
306
+
307
+
308
+ // Add toast to container
309
+ const toastsContainer = rootRef.querySelector('.toasts');
310
+ if (config.reverseDisplay) {
311
+ toastsContainer.appendChild(toast);
312
+ } else {
313
+ toastsContainer.insertBefore(toast, toastsContainer.firstChild);
314
+ }
315
+
316
+
317
+ // Update the index of all toasts
318
+ updateToastIndexes();
319
+
320
+ // Animation
321
+ requestAnimationFrame(() => {
322
+ setTimeout(() => {
323
+ toast.classList.add('animate-in');
324
+ }, 50);
325
+ });
326
+
327
+ // Progress bar and auto close
328
+ if (config.autoCloseTime !== false) {
329
+ const progressBar = toast.querySelector('.toast-progress');
330
+ let startTime = Date.now();
331
+ let isPaused = false;
332
+
333
+ const updateProgress = () => {
334
+ if (!isPaused) {
335
+ const elapsed = Date.now() - startTime;
336
+ const progress = Math.max(0, 100 - (elapsed / config.autoCloseTime * 100));
337
+ progressBar.style.width = `${progress}%`;
338
+ progressBar.setAttribute('aria-valuenow', progress);
339
+
340
+ if (progress > 0) {
341
+ requestAnimationFrame(updateProgress);
342
+ } else {
343
+ closeToast();
344
+ }
345
+ }
346
+ };
347
+
348
+ toast.addEventListener('mouseenter', () => {
349
+ isPaused = true;
350
+ });
351
+
352
+ toast.addEventListener('mouseleave', () => {
353
+ isPaused = false;
354
+ startTime = Date.now() - (config.autoCloseTime * (1 - parseInt(progressBar.getAttribute('aria-valuenow')) / 100));
355
+ requestAnimationFrame(updateProgress);
356
+ });
357
+
358
+ requestAnimationFrame(updateProgress);
359
+ }
360
+
361
+ // Close button handler
362
+ const closeBtn = toast.querySelector('.btn-close');
363
+ if (closeBtn) {
364
+ closeBtn.addEventListener('click', () => closeToast());
365
+ }
366
+
367
+ // Close toast function
368
+ function closeToast() {
369
+ toast.classList.add('hide-start');
370
+ setTimeout(() => {
371
+ toast.classList.add('hide-end');
372
+ setTimeout(() => {
373
+ toast.remove();
374
+
375
+ // Update the index of all toasts
376
+ updateToastIndexes();
377
+
378
+ if (rootRef.querySelector('.toasts').children.length === 0) {
379
+ rootRef.remove();
380
+ }
381
+
382
+ // Callback
383
+ if (typeof config.onClose === 'function') {
384
+ config.onClose(toast, toast.dataset.toastId);
385
+ }
386
+ }, ANIM_SPEED);
387
+ }, ANIM_SPEED);
388
+ }
389
+
390
+ // Initialize hint buttons
391
+ rootRef.querySelectorAll('.app-io-hint-btn').forEach(btn => {
392
+ if (!btn.dataset.click) {
393
+ btn.addEventListener('click', function(e) {
394
+ e.preventDefault();
395
+ const detail = e.target.nextElementSibling;
396
+ if (detail?.classList.contains('app-io-hint-detail')) {
397
+ detail.style.setProperty('display', 'block', 'important');
398
+ }
399
+ e.target.style.display = 'none';
400
+ });
401
+ btn.dataset.click = '1';
402
+ }
403
+ });
404
+
405
+ // Execute callback with toast ID
406
+ if (typeof callback === 'function') {
407
+ callback(toastId);
408
+ }
409
+
410
+ // Return methods for controlling the toast
411
+ return {
412
+ close: closeToast
413
+ };
414
+ }
415
+
416
+ // Add to global scope
417
+ if (typeof window !== 'undefined') {
418
+ window.FU_Toast = $$FU_Toast;
419
+ }
420
+
421
+ return $$FU_Toast;
422
+ })();
@@ -0,0 +1,197 @@
1
+
2
+ /* ======================================================
3
+ <!-- Toast -->
4
+ /* ====================================================== */
5
+ .toasts__wrapper {
6
+ --bs-toast-zindex: 1090;
7
+ --bs-border-radius: 0.375rem;
8
+
9
+ --toasts-offset-top: 35px;
10
+ --toasts-offset-bottom: 15px;
11
+ --toasts-offset-bothsides: 15px;
12
+ --toasts-container-gap: 0.5rem;
13
+ --toasts-container-width: 350px;
14
+ --toasts-progress-height: 3px;
15
+ --toasts-progress-bg: rgba(228, 228, 228, 0.6);
16
+
17
+
18
+
19
+ width: var(--toasts-container-width);
20
+ position: fixed;
21
+ left: 50%;
22
+ bottom: 0;
23
+ z-index: var(--bs-toast-zindex);
24
+ pointer-events: none;
25
+ transition: .1s ease-in-out;
26
+
27
+ &--bottom-left {
28
+ left: var(--toasts-offset-bothsides);
29
+ }
30
+
31
+ &--bottom-right {
32
+ left: auto;
33
+ right: var(--toasts-offset-bothsides);
34
+ }
35
+
36
+ &--bottom-center {
37
+ left: 50%;
38
+ transform: translateX(-50%);
39
+ }
40
+
41
+ &--top-left {
42
+ left: var(--toasts-offset-bothsides);
43
+ bottom: auto;
44
+ top: var(--toasts-offset-top);
45
+ }
46
+
47
+ &--top-right {
48
+ left: auto;
49
+ right: var(--toasts-offset-bothsides);
50
+ top: var(--toasts-offset-top);
51
+ }
52
+
53
+ &--top-center {
54
+ left: 50%;
55
+ transform: translateX(-50%);
56
+ top: var(--toasts-offset-top);
57
+ }
58
+
59
+ &--vertical-center {
60
+ left: 50%;
61
+ transform: translate(-50%, -50%);
62
+ top: 50%;
63
+ margin-top: 5%;
64
+ }
65
+
66
+ .toasts {
67
+ position: relative;
68
+ width: 100%;
69
+ bottom: var(--toasts-offset-bottom);
70
+ display: flex;
71
+ flex-flow: column-reverse nowrap;
72
+
73
+
74
+ &::before {
75
+ content: '';
76
+ top: -80px;
77
+ bottom: 0;
78
+ left: -8px;
79
+ right: -8px;
80
+ position: absolute;
81
+ background-color: transparent;
82
+ pointer-events: none;
83
+ }
84
+
85
+ }
86
+
87
+ .toast-container {
88
+ margin-bottom: var(--toasts-container-gap);
89
+
90
+ /* Use clip-path instead of opacity to achieve a fade effect, avoiding the problem of transparency overlay */
91
+ clip-path: inset(0 0 0 0);
92
+ transform: translateY(0);
93
+
94
+ /* Rendering of 3D transformations */
95
+ backface-visibility: hidden;
96
+ transform-style: preserve-3d;
97
+
98
+ /* init animation */
99
+ &.animate-ready {
100
+ pointer-events: none;
101
+ clip-path: inset(0 0 100% 0);
102
+ transform: translateY(10px);
103
+ }
104
+
105
+ /* enter animation */
106
+ &.animate-in {
107
+ clip-path: inset(0 0 0 0);
108
+ transform: translateY(0);
109
+ }
110
+
111
+ /* exit animation */
112
+ &.hide-start {
113
+ clip-path: inset(0 0 100% 0);
114
+ transform: translateY(-10px);
115
+ }
116
+
117
+ }
118
+
119
+ /* cascading divs */
120
+ &.toasts__wrapper--cascading {
121
+
122
+ .toast-container {
123
+ margin-bottom: 0;
124
+ }
125
+
126
+ .toasts {
127
+ &:hover {
128
+ .toast-container {
129
+ transform: perspective(100px) translateZ(0) !important;
130
+ }
131
+ }
132
+ }
133
+ }
134
+
135
+
136
+
137
+ /* progress */
138
+ .toast-progress {
139
+ position: absolute;
140
+ width: 100%;
141
+ bottom: 0px;
142
+ left: 0px;
143
+ height: var(--toasts-progress-height);
144
+ background: transparent;
145
+ border-radius: 0 0 var(--bs-border-radius) var(--bs-border-radius);
146
+ overflow: hidden;
147
+
148
+ .progress-bar {
149
+ background: var(--toasts-progress-bg);
150
+ width: 100%;
151
+ height: 100%;
152
+ transition: all .1s;
153
+ }
154
+ }
155
+
156
+
157
+
158
+ }
159
+
160
+ /* Bootstrap toast here */
161
+ .toast-container {
162
+ width: 100%;
163
+ height: auto;
164
+ position: relative;
165
+ transition: all .25s;
166
+ pointer-events: auto;
167
+
168
+ [data-close] {
169
+ background: none;
170
+ }
171
+
172
+ [data-close]:focus {
173
+ box-shadow: none;
174
+ }
175
+
176
+ [data-close] svg {
177
+ vertical-align: top;
178
+
179
+ path {
180
+ transition: .3s ease-in-out;
181
+ }
182
+ }
183
+
184
+ [data-close]:hover svg path {
185
+ fill: #f00;
186
+ }
187
+
188
+ &.hide-start {
189
+ opacity: 0;
190
+ }
191
+
192
+ &.hide-end {
193
+ display: none;
194
+ }
195
+
196
+
197
+ }
@@ -0,0 +1,3 @@
1
+ export { useToast } from './useToast';
2
+ export { ToastProvider } from './ToastContext';
3
+ export type { ToastOptions } from './types';
@@ -0,0 +1,60 @@
1
+ export interface ToastOptions {
2
+ /** +++++++++++++++++++++++++++++++++++++++++++++++++ */
3
+ /** IDENTIFIER */
4
+ /** +++++++++++++++++++++++++++++++++++++++++++++++++ */
5
+ actionId?: string | number | null | undefined;
6
+
7
+ /** +++++++++++++++++++++++++++++++++++++++++++++++++ */
8
+ /** GENERIC */
9
+ /** +++++++++++++++++++++++++++++++++++++++++++++++++ */
10
+ wrapperClassName?: string;
11
+ /** Automatically hide multiple items */
12
+ onlyShowOne?: boolean;
13
+ /** Allow data to be reversed */
14
+ reverseDisplay?: boolean;
15
+ /** The direction of the toast. */
16
+ direction?: 'bottom-left' | 'bottom-center' | 'bottom-right' | 'top-left' | 'top-center' | 'top-right' | 'vertical-center';
17
+ /** Set an automatic closing time, multiple items will be accumulated in order.
18
+ * Amount of time measured in milliseconds. If false or without this attribute, Auto-Close will be disabled.
19
+ */
20
+ autoCloseTime?: boolean | number;
21
+ /** You can not close pop-win when it is enabled */
22
+ lock?: boolean;
23
+ /** Whether to use cascading styles */
24
+ cascading?: boolean;
25
+ /** Self-defined class name for body*/
26
+ schemeBody?: string;
27
+ /** Self-defined class name for header */
28
+ schemeHeader?: string;
29
+ /** Set the color of the close button */
30
+ closeBtnColor?: string;
31
+ /** Disable the close button. */
32
+ closeDisabled?: boolean;
33
+ /** -- */
34
+ onClose?: (e: HTMLDivElement, currentIndex: number, displayedElements: HTMLDivElement[]) => void;
35
+
36
+
37
+ /** +++++++++++++++++++++++++++++++++++++++++++++++++ */
38
+ /** ITEM */
39
+ /** +++++++++++++++++++++++++++++++++++++++++++++++++ */
40
+ title?: string;
41
+ note?: string;
42
+ theme?: 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'danger' | 'light' | 'dark' | undefined;
43
+ message?: React.ReactNode;
44
+
45
+
46
+ /** +++++++++++++++++++++++++++++++++++++++++++++++++ */
47
+ /** AUTO */
48
+ /** +++++++++++++++++++++++++++++++++++++++++++++++++ */
49
+ id?: string;
50
+ }
51
+
52
+
53
+ // Configure the interface globally
54
+ export interface ToastGlobalConfig {
55
+ defaultWrapperClassName?: string;
56
+ defaultOnlyShowOne?: boolean;
57
+ defaultDirection?: ToastOptions['direction'];
58
+ defaultCascading?: boolean;
59
+ defaultReverseDisplay?: boolean;
60
+ }