funda-ui 4.5.682 → 4.5.711

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 (506) hide show
  1. package/.gitattributes +2 -0
  2. package/README.md +105 -4
  3. package/README_PUBLISH.md +126 -0
  4. package/lib/cjs/DragDropList/index.d.ts +1 -0
  5. package/lib/cjs/DragDropList/index.js +4 -6
  6. package/lib/cjs/MultipleSelect/index.d.ts +1 -0
  7. package/lib/cjs/MultipleSelect/index.js +23 -25
  8. package/lib/cjs/Textarea/index.d.ts +1 -0
  9. package/lib/cjs/Textarea/index.js +55 -13
  10. package/lib/cjs/Tree/index.d.ts +1 -0
  11. package/lib/cjs/Tree/index.js +29 -0
  12. package/lib/cjs/Utils/useAutosizeTextArea.d.ts +4 -1
  13. package/lib/cjs/Utils/useAutosizeTextArea.js +37 -2
  14. package/lib/cjs/Utils/useBoundedDrag.d.ts +0 -2
  15. package/lib/cjs/Utils/useBoundedDrag.js +0 -2
  16. package/lib/cjs/Utils/useIsMobile.d.ts +2 -0
  17. package/lib/cjs/Utils/useIsMobile.js +168 -0
  18. package/lib/cjs/index.js +0 -1
  19. package/lib/esm/DragDropList/index.tsx +1 -0
  20. package/lib/esm/MultipleSelect/index.tsx +1 -0
  21. package/lib/esm/Textarea/index.tsx +17 -12
  22. package/lib/esm/Tree/TreeList.tsx +32 -0
  23. package/lib/esm/Tree/index.tsx +3 -0
  24. package/lib/esm/Utils/hooks/useAutosizeTextArea.tsx +39 -4
  25. package/lib/esm/Utils/hooks/useBoundedDrag.tsx +0 -2
  26. package/lib/esm/Utils/hooks/useIsMobile.tsx +56 -0
  27. package/logo.png +0 -0
  28. package/package.json +556 -11
  29. package/preview.png +0 -0
  30. package/{DragDropList → publish/DragDropList}/index.d.ts +1 -0
  31. package/{DragDropList → publish/DragDropList}/index.js +4 -6
  32. package/publish/LICENSE +21 -0
  33. package/{MultipleSelect → publish/MultipleSelect}/index.d.ts +1 -0
  34. package/{MultipleSelect → publish/MultipleSelect}/index.js +23 -25
  35. package/publish/README.md +126 -0
  36. package/{Textarea → publish/Textarea}/index.d.ts +1 -0
  37. package/{Textarea → publish/Textarea}/index.js +55 -13
  38. package/{Tree → publish/Tree}/index.d.ts +1 -0
  39. package/{Tree → publish/Tree}/index.js +29 -0
  40. package/{Utils → publish/Utils}/useAutosizeTextArea.d.ts +4 -1
  41. package/{Utils → publish/Utils}/useAutosizeTextArea.js +37 -2
  42. package/{Utils → publish/Utils}/useBoundedDrag.d.ts +0 -2
  43. package/{Utils → publish/Utils}/useBoundedDrag.js +0 -2
  44. package/publish/Utils/useIsMobile.d.ts +2 -0
  45. package/publish/Utils/useIsMobile.js +168 -0
  46. package/{all.js → publish/all.js} +0 -1
  47. package/publish/lib/cjs/Accordion/index.d.ts +2 -0
  48. package/publish/lib/cjs/Accordion/index.js +1035 -0
  49. package/publish/lib/cjs/BackToTop/index.d.ts +17 -0
  50. package/publish/lib/cjs/BackToTop/index.js +904 -0
  51. package/publish/lib/cjs/CascadingSelect/index.d.ts +60 -0
  52. package/publish/lib/cjs/CascadingSelect/index.js +2943 -0
  53. package/publish/lib/cjs/CascadingSelectE2E/index.d.ts +71 -0
  54. package/publish/lib/cjs/CascadingSelectE2E/index.js +3540 -0
  55. package/publish/lib/cjs/Checkbox/index.d.ts +28 -0
  56. package/publish/lib/cjs/Checkbox/index.js +662 -0
  57. package/publish/lib/cjs/ColorPicker/index.d.ts +27 -0
  58. package/publish/lib/cjs/ColorPicker/index.js +662 -0
  59. package/publish/lib/cjs/Date/index.d.ts +70 -0
  60. package/publish/lib/cjs/Date/index.js +6200 -0
  61. package/publish/lib/cjs/DigitalClock/index.d.ts +7 -0
  62. package/publish/lib/cjs/DigitalClock/index.js +402 -0
  63. package/publish/lib/cjs/DragDropList/index.d.ts +44 -0
  64. package/publish/lib/cjs/DragDropList/index.js +1587 -0
  65. package/publish/lib/cjs/DropdownMenu/index.d.ts +38 -0
  66. package/publish/lib/cjs/DropdownMenu/index.js +1498 -0
  67. package/publish/lib/cjs/DynamicFields/index.d.ts +40 -0
  68. package/publish/lib/cjs/DynamicFields/index.js +810 -0
  69. package/publish/lib/cjs/EventCalendar/index.d.ts +61 -0
  70. package/publish/lib/cjs/EventCalendar/index.js +3740 -0
  71. package/publish/lib/cjs/EventCalendarTimeline/index.d.ts +100 -0
  72. package/publish/lib/cjs/EventCalendarTimeline/index.js +6084 -0
  73. package/publish/lib/cjs/File/index.d.ts +40 -0
  74. package/publish/lib/cjs/File/index.js +1751 -0
  75. package/publish/lib/cjs/HorizontalScrollContent/index.d.ts +14 -0
  76. package/publish/lib/cjs/HorizontalScrollContent/index.js +426 -0
  77. package/publish/lib/cjs/Input/index.d.ts +59 -0
  78. package/publish/lib/cjs/Input/index.js +1455 -0
  79. package/publish/lib/cjs/LiveSearch/index.d.ts +69 -0
  80. package/publish/lib/cjs/LiveSearch/index.js +3626 -0
  81. package/publish/lib/cjs/MasonryLayout/index.d.ts +14 -0
  82. package/publish/lib/cjs/MasonryLayout/index.js +689 -0
  83. package/publish/lib/cjs/ModalDialog/index.d.ts +79 -0
  84. package/publish/lib/cjs/ModalDialog/index.js +1695 -0
  85. package/publish/lib/cjs/ModeSwitch/index.d.ts +17 -0
  86. package/publish/lib/cjs/ModeSwitch/index.js +202 -0
  87. package/publish/lib/cjs/MultilevelDropdownMenu/index.d.ts +20 -0
  88. package/publish/lib/cjs/MultilevelDropdownMenu/index.js +930 -0
  89. package/publish/lib/cjs/MultipleCheckboxes/index.d.ts +41 -0
  90. package/publish/lib/cjs/MultipleCheckboxes/index.js +1717 -0
  91. package/publish/lib/cjs/MultipleSelect/index.d.ts +65 -0
  92. package/publish/lib/cjs/MultipleSelect/index.js +3704 -0
  93. package/publish/lib/cjs/NativeSelect/index.d.ts +37 -0
  94. package/publish/lib/cjs/NativeSelect/index.js +1631 -0
  95. package/publish/lib/cjs/NumberInput/index.d.ts +40 -0
  96. package/publish/lib/cjs/NumberInput/index.js +1188 -0
  97. package/publish/lib/cjs/Pagination/index.d.ts +51 -0
  98. package/publish/lib/cjs/Pagination/index.js +612 -0
  99. package/publish/lib/cjs/Radio/index.d.ts +45 -0
  100. package/publish/lib/cjs/Radio/index.js +1391 -0
  101. package/publish/lib/cjs/RangeSlider/index.d.ts +22 -0
  102. package/publish/lib/cjs/RangeSlider/index.js +2665 -0
  103. package/publish/lib/cjs/RootPortal/index.d.ts +8 -0
  104. package/publish/lib/cjs/RootPortal/index.js +141 -0
  105. package/publish/lib/cjs/ScrollReveal/index.d.ts +21 -0
  106. package/publish/lib/cjs/ScrollReveal/index.js +401 -0
  107. package/publish/lib/cjs/Scrollbar/index.d.ts +17 -0
  108. package/publish/lib/cjs/Scrollbar/index.js +1107 -0
  109. package/publish/lib/cjs/SearchBar/index.d.ts +41 -0
  110. package/publish/lib/cjs/SearchBar/index.js +701 -0
  111. package/publish/lib/cjs/Select/index.d.ts +99 -0
  112. package/publish/lib/cjs/Select/index.js +5697 -0
  113. package/publish/lib/cjs/ShowMoreLess/index.d.ts +36 -0
  114. package/publish/lib/cjs/ShowMoreLess/index.js +387 -0
  115. package/publish/lib/cjs/Switch/index.d.ts +25 -0
  116. package/publish/lib/cjs/Switch/index.js +628 -0
  117. package/publish/lib/cjs/Table/index.d.ts +12 -0
  118. package/publish/lib/cjs/Table/index.js +2062 -0
  119. package/publish/lib/cjs/Tabs/index.d.ts +3 -0
  120. package/publish/lib/cjs/Tabs/index.js +771 -0
  121. package/publish/lib/cjs/TagInput/index.d.ts +31 -0
  122. package/publish/lib/cjs/TagInput/index.js +1144 -0
  123. package/publish/lib/cjs/Textarea/index.d.ts +50 -0
  124. package/publish/lib/cjs/Textarea/index.js +1784 -0
  125. package/publish/lib/cjs/Toast/index.d.ts +34 -0
  126. package/publish/lib/cjs/Toast/index.js +861 -0
  127. package/publish/lib/cjs/Tooltip/index.d.ts +23 -0
  128. package/publish/lib/cjs/Tooltip/index.js +1674 -0
  129. package/publish/lib/cjs/Tree/index.d.ts +62 -0
  130. package/publish/lib/cjs/Tree/index.js +1960 -0
  131. package/publish/lib/cjs/Utils/anim.d.ts +11 -0
  132. package/publish/lib/cjs/Utils/anim.js +400 -0
  133. package/publish/lib/cjs/Utils/bodyScrollLock.d.ts +8 -0
  134. package/publish/lib/cjs/Utils/bodyScrollLock.js +311 -0
  135. package/publish/lib/cjs/Utils/buffer.d.ts +67 -0
  136. package/publish/lib/cjs/Utils/buffer.js +343 -0
  137. package/publish/lib/cjs/Utils/cls.d.ts +15 -0
  138. package/publish/lib/cjs/Utils/cls.js +124 -0
  139. package/publish/lib/cjs/Utils/convert.d.ts +25 -0
  140. package/publish/lib/cjs/Utils/convert.js +109 -0
  141. package/publish/lib/cjs/Utils/date.d.ts +217 -0
  142. package/publish/lib/cjs/Utils/date.js +567 -0
  143. package/publish/lib/cjs/Utils/dom.d.ts +13 -0
  144. package/publish/lib/cjs/Utils/dom.js +215 -0
  145. package/publish/lib/cjs/Utils/easing.d.ts +29 -0
  146. package/publish/lib/cjs/Utils/easing.js +221 -0
  147. package/publish/lib/cjs/Utils/extract.d.ts +28 -0
  148. package/publish/lib/cjs/Utils/extract.js +130 -0
  149. package/publish/lib/cjs/Utils/getElementProperty.d.ts +52 -0
  150. package/publish/lib/cjs/Utils/getElementProperty.js +189 -0
  151. package/publish/lib/cjs/Utils/guid.d.ts +7 -0
  152. package/publish/lib/cjs/Utils/guid.js +67 -0
  153. package/publish/lib/cjs/Utils/initDefaultOptions.d.ts +21 -0
  154. package/publish/lib/cjs/Utils/initDefaultOptions.js +131 -0
  155. package/publish/lib/cjs/Utils/inputsCalculation.d.ts +28 -0
  156. package/publish/lib/cjs/Utils/inputsCalculation.js +188 -0
  157. package/publish/lib/cjs/Utils/math.d.ts +77 -0
  158. package/publish/lib/cjs/Utils/math.js +305 -0
  159. package/publish/lib/cjs/Utils/object.d.ts +18 -0
  160. package/publish/lib/cjs/Utils/object.js +120 -0
  161. package/publish/lib/cjs/Utils/os.d.ts +2 -0
  162. package/publish/lib/cjs/Utils/os.js +104 -0
  163. package/publish/lib/cjs/Utils/performance.d.ts +3 -0
  164. package/publish/lib/cjs/Utils/performance.js +94 -0
  165. package/publish/lib/cjs/Utils/tree.d.ts +40 -0
  166. package/publish/lib/cjs/Utils/tree.js +195 -0
  167. package/publish/lib/cjs/Utils/useAutosizeTextArea.d.ts +10 -0
  168. package/publish/lib/cjs/Utils/useAutosizeTextArea.js +227 -0
  169. package/publish/lib/cjs/Utils/useBoundedDrag.d.ts +125 -0
  170. package/publish/lib/cjs/Utils/useBoundedDrag.js +380 -0
  171. package/publish/lib/cjs/Utils/useClickOutside.d.ts +33 -0
  172. package/publish/lib/cjs/Utils/useClickOutside.js +166 -0
  173. package/publish/lib/cjs/Utils/useComId.d.ts +6 -0
  174. package/publish/lib/cjs/Utils/useComId.js +114 -0
  175. package/publish/lib/cjs/Utils/useDebounce.d.ts +20 -0
  176. package/publish/lib/cjs/Utils/useDebounce.js +138 -0
  177. package/publish/lib/cjs/Utils/useDragDropPosition.d.ts +169 -0
  178. package/publish/lib/cjs/Utils/useDragDropPosition.js +456 -0
  179. package/publish/lib/cjs/Utils/useDraggable.d.ts +62 -0
  180. package/publish/lib/cjs/Utils/useDraggable.js +348 -0
  181. package/publish/lib/cjs/Utils/useInterval.d.ts +5 -0
  182. package/publish/lib/cjs/Utils/useInterval.js +168 -0
  183. package/publish/lib/cjs/Utils/useIsMobile.d.ts +2 -0
  184. package/publish/lib/cjs/Utils/useIsMobile.js +168 -0
  185. package/publish/lib/cjs/Utils/useKeyPress.d.ts +44 -0
  186. package/publish/lib/cjs/Utils/useKeyPress.js +200 -0
  187. package/publish/lib/cjs/Utils/useThrottle.d.ts +2 -0
  188. package/publish/lib/cjs/Utils/useThrottle.js +136 -0
  189. package/publish/lib/cjs/Utils/useWindowScroll.d.ts +12 -0
  190. package/publish/lib/cjs/Utils/useWindowScroll.js +217 -0
  191. package/publish/lib/cjs/Utils/viewport.d.ts +7 -0
  192. package/publish/lib/cjs/Utils/viewport.js +64 -0
  193. package/publish/lib/cjs/index.d.ts +45 -0
  194. package/publish/lib/cjs/index.js +46 -0
  195. package/publish/lib/css/BackToTop/index.css +34 -0
  196. package/publish/lib/css/CascadingSelect/index.css +216 -0
  197. package/publish/lib/css/CascadingSelectE2E/index.css +216 -0
  198. package/publish/lib/css/ColorPicker/index.css +58 -0
  199. package/publish/lib/css/Date/index.css +434 -0
  200. package/publish/lib/css/DragDropList/index.css +188 -0
  201. package/publish/lib/css/DropdownMenu/index.css +151 -0
  202. package/publish/lib/css/EventCalendar/index.css +300 -0
  203. package/publish/lib/css/EventCalendarTimeline/index.css +694 -0
  204. package/publish/lib/css/HorizontalScrollContent/index.css +70 -0
  205. package/publish/lib/css/LiveSearch/index.css +55 -0
  206. package/publish/lib/css/MultilevelDropdownMenu/index.css +38 -0
  207. package/publish/lib/css/MultipleSelect/index.css +313 -0
  208. package/publish/lib/css/RangeSlider/index.css +150 -0
  209. package/publish/lib/css/Scrollbar/index.css +176 -0
  210. package/publish/lib/css/Select/index.css +368 -0
  211. package/publish/lib/css/ShowMoreLess/index.css +23 -0
  212. package/publish/lib/css/Table/index.css +584 -0
  213. package/publish/lib/css/TagInput/index.css +91 -0
  214. package/publish/lib/css/Toast/index.css +201 -0
  215. package/publish/lib/css/Tooltip/index.css +197 -0
  216. package/publish/lib/css/Tree/index.css +232 -0
  217. package/publish/lib/esm/Accordion/Accordion.tsx +184 -0
  218. package/publish/lib/esm/Accordion/AccordionItem.tsx +143 -0
  219. package/publish/lib/esm/Accordion/index.tsx +2 -0
  220. package/publish/lib/esm/BackToTop/index.scss +47 -0
  221. package/publish/lib/esm/BackToTop/index.tsx +177 -0
  222. package/publish/lib/esm/CascadingSelect/Group.tsx +82 -0
  223. package/publish/lib/esm/CascadingSelect/index.scss +291 -0
  224. package/publish/lib/esm/CascadingSelect/index.tsx +1203 -0
  225. package/publish/lib/esm/CascadingSelectE2E/Group.tsx +83 -0
  226. package/publish/lib/esm/CascadingSelectE2E/index.scss +293 -0
  227. package/publish/lib/esm/CascadingSelectE2E/index.tsx +1471 -0
  228. package/publish/lib/esm/Checkbox/index.tsx +193 -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 +1683 -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 +494 -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 +377 -0
  242. package/publish/lib/esm/DynamicFields/index.tsx +404 -0
  243. package/publish/lib/esm/EventCalendar/index.scss +407 -0
  244. package/publish/lib/esm/EventCalendar/index.tsx +1004 -0
  245. package/publish/lib/esm/EventCalendarTimeline/index.scss +926 -0
  246. package/publish/lib/esm/EventCalendarTimeline/index.tsx +2683 -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 +614 -0
  251. package/publish/lib/esm/LiveSearch/index.scss +82 -0
  252. package/publish/lib/esm/LiveSearch/index.tsx +960 -0
  253. package/publish/lib/esm/MasonryLayout/index.tsx +326 -0
  254. package/publish/lib/esm/ModalDialog/index.tsx +552 -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 +669 -0
  260. package/publish/lib/esm/MultipleSelect/index.scss +398 -0
  261. package/publish/lib/esm/MultipleSelect/index.tsx +766 -0
  262. package/publish/lib/esm/MultipleSelect/utils/func.ts +61 -0
  263. package/publish/lib/esm/NativeSelect/index.tsx +396 -0
  264. package/publish/lib/esm/NativeSelect/utils/func.ts +49 -0
  265. package/publish/lib/esm/NumberInput/index.tsx +385 -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 +670 -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/RootPortal/index.tsx +53 -0
  272. package/publish/lib/esm/ScrollReveal/index.tsx +148 -0
  273. package/publish/lib/esm/Scrollbar/index.scss +221 -0
  274. package/publish/lib/esm/Scrollbar/index.tsx +561 -0
  275. package/publish/lib/esm/SearchBar/index.tsx +253 -0
  276. package/publish/lib/esm/Select/index.scss +553 -0
  277. package/publish/lib/esm/Select/index.tsx +2816 -0
  278. package/publish/lib/esm/Select/utils/func.ts +106 -0
  279. package/publish/lib/esm/ShowMoreLess/index.scss +27 -0
  280. package/publish/lib/esm/ShowMoreLess/index.tsx +145 -0
  281. package/publish/lib/esm/Switch/index.tsx +147 -0
  282. package/publish/lib/esm/Table/Table.tsx +257 -0
  283. package/publish/lib/esm/Table/TableBody.tsx +41 -0
  284. package/publish/lib/esm/Table/TableCaption.tsx +34 -0
  285. package/publish/lib/esm/Table/TableCell.tsx +123 -0
  286. package/publish/lib/esm/Table/TableColgroup.tsx +38 -0
  287. package/publish/lib/esm/Table/TableContext.tsx +26 -0
  288. package/publish/lib/esm/Table/TableFoot.tsx +28 -0
  289. package/publish/lib/esm/Table/TableHead.tsx +28 -0
  290. package/publish/lib/esm/Table/TableRow.tsx +76 -0
  291. package/publish/lib/esm/Table/index.scss +418 -0
  292. package/publish/lib/esm/Table/index.tsx +14 -0
  293. package/publish/lib/esm/Table/utils/DragHandleSprite.tsx +46 -0
  294. package/publish/lib/esm/Table/utils/SortSprite.tsx +57 -0
  295. package/publish/lib/esm/Table/utils/TableFilter.tsx +56 -0
  296. package/publish/lib/esm/Table/utils/ToggleSelection.tsx +225 -0
  297. package/publish/lib/esm/Table/utils/func.ts +171 -0
  298. package/publish/lib/esm/Table/utils/hooks/useTableDraggable.tsx +342 -0
  299. package/publish/lib/esm/Table/utils/hooks/useTableKeyPress.tsx +154 -0
  300. package/publish/lib/esm/Table/utils/hooks/useTableResponsive.tsx +92 -0
  301. package/publish/lib/esm/Table/utils/hooks/useTableSort.tsx +143 -0
  302. package/publish/lib/esm/Tabs/TabList.tsx +50 -0
  303. package/publish/lib/esm/Tabs/TabPanel.tsx +44 -0
  304. package/publish/lib/esm/Tabs/Tabs.tsx +282 -0
  305. package/publish/lib/esm/Tabs/index.tsx +3 -0
  306. package/publish/lib/esm/TagInput/index.scss +126 -0
  307. package/publish/lib/esm/TagInput/index.tsx +352 -0
  308. package/publish/lib/esm/Textarea/index.tsx +608 -0
  309. package/publish/lib/esm/Toast/Item.tsx +124 -0
  310. package/publish/lib/esm/Toast/index.scss +269 -0
  311. package/publish/lib/esm/Toast/index.tsx +374 -0
  312. package/publish/lib/esm/Tooltip/index.scss +269 -0
  313. package/publish/lib/esm/Tooltip/index.tsx +312 -0
  314. package/publish/lib/esm/Tree/TreeList.tsx +616 -0
  315. package/publish/lib/esm/Tree/index.scss +386 -0
  316. package/publish/lib/esm/Tree/index.tsx +396 -0
  317. package/publish/lib/esm/Tree/init-height.tsx +27 -0
  318. package/publish/lib/esm/Tree/utils/func.ts +15 -0
  319. package/publish/lib/esm/Utils/hooks/useAutosizeTextArea.tsx +125 -0
  320. package/publish/lib/esm/Utils/hooks/useBoundedDrag.tsx +301 -0
  321. package/publish/lib/esm/Utils/hooks/useClickOutside.tsx +69 -0
  322. package/publish/lib/esm/Utils/hooks/useComId.tsx +13 -0
  323. package/publish/lib/esm/Utils/hooks/useDebounce.tsx +40 -0
  324. package/publish/lib/esm/Utils/hooks/useDragDropPosition.tsx +420 -0
  325. package/publish/lib/esm/Utils/hooks/useDraggable.tsx +265 -0
  326. package/publish/lib/esm/Utils/hooks/useInterval.tsx +74 -0
  327. package/publish/lib/esm/Utils/hooks/useIsMobile.tsx +56 -0
  328. package/publish/lib/esm/Utils/hooks/useKeyPress.tsx +104 -0
  329. package/publish/lib/esm/Utils/hooks/useThrottle.tsx +39 -0
  330. package/publish/lib/esm/Utils/hooks/useWindowScroll.tsx +83 -0
  331. package/publish/lib/esm/Utils/libs/anim.ts +96 -0
  332. package/publish/lib/esm/Utils/libs/buffer.ts +262 -0
  333. package/publish/lib/esm/Utils/libs/cls.ts +64 -0
  334. package/publish/lib/esm/Utils/libs/convert.ts +59 -0
  335. package/publish/lib/esm/Utils/libs/date.ts +578 -0
  336. package/publish/lib/esm/Utils/libs/dom.ts +150 -0
  337. package/publish/lib/esm/Utils/libs/easing.ts +201 -0
  338. package/publish/lib/esm/Utils/libs/extract.ts +86 -0
  339. package/publish/lib/esm/Utils/libs/getElementProperty.ts +150 -0
  340. package/publish/lib/esm/Utils/libs/guid.ts +16 -0
  341. package/publish/lib/esm/Utils/libs/initDefaultOptions.ts +104 -0
  342. package/publish/lib/esm/Utils/libs/inputsCalculation.ts +160 -0
  343. package/publish/lib/esm/Utils/libs/math.ts +276 -0
  344. package/publish/lib/esm/Utils/libs/object.ts +68 -0
  345. package/publish/lib/esm/Utils/libs/os.ts +63 -0
  346. package/publish/lib/esm/Utils/libs/performance.ts +47 -0
  347. package/publish/lib/esm/Utils/libs/tree.ts +119 -0
  348. package/publish/lib/esm/Utils/libs/viewport.ts +20 -0
  349. package/publish/lib/esm/Utils/plugins/bodyScrollLock.ts +286 -0
  350. package/publish/lib/esm/index.js +43 -0
  351. package/publish/package.json +1 -0
  352. /package/{Accordion → publish/Accordion}/index.d.ts +0 -0
  353. /package/{Accordion → publish/Accordion}/index.js +0 -0
  354. /package/{BackToTop → publish/BackToTop}/index.css +0 -0
  355. /package/{BackToTop → publish/BackToTop}/index.d.ts +0 -0
  356. /package/{BackToTop → publish/BackToTop}/index.js +0 -0
  357. /package/{CascadingSelect → publish/CascadingSelect}/index.css +0 -0
  358. /package/{CascadingSelect → publish/CascadingSelect}/index.d.ts +0 -0
  359. /package/{CascadingSelect → publish/CascadingSelect}/index.js +0 -0
  360. /package/{CascadingSelectE2E → publish/CascadingSelectE2E}/index.css +0 -0
  361. /package/{CascadingSelectE2E → publish/CascadingSelectE2E}/index.d.ts +0 -0
  362. /package/{CascadingSelectE2E → publish/CascadingSelectE2E}/index.js +0 -0
  363. /package/{Checkbox → publish/Checkbox}/index.d.ts +0 -0
  364. /package/{Checkbox → publish/Checkbox}/index.js +0 -0
  365. /package/{ColorPicker → publish/ColorPicker}/index.css +0 -0
  366. /package/{ColorPicker → publish/ColorPicker}/index.d.ts +0 -0
  367. /package/{ColorPicker → publish/ColorPicker}/index.js +0 -0
  368. /package/{Date → publish/Date}/index.css +0 -0
  369. /package/{Date → publish/Date}/index.d.ts +0 -0
  370. /package/{Date → publish/Date}/index.js +0 -0
  371. /package/{DigitalClock → publish/DigitalClock}/index.d.ts +0 -0
  372. /package/{DigitalClock → publish/DigitalClock}/index.js +0 -0
  373. /package/{DragDropList → publish/DragDropList}/index.css +0 -0
  374. /package/{DropdownMenu → publish/DropdownMenu}/index.css +0 -0
  375. /package/{DropdownMenu → publish/DropdownMenu}/index.d.ts +0 -0
  376. /package/{DropdownMenu → publish/DropdownMenu}/index.js +0 -0
  377. /package/{DynamicFields → publish/DynamicFields}/index.d.ts +0 -0
  378. /package/{DynamicFields → publish/DynamicFields}/index.js +0 -0
  379. /package/{EventCalendar → publish/EventCalendar}/index.css +0 -0
  380. /package/{EventCalendar → publish/EventCalendar}/index.d.ts +0 -0
  381. /package/{EventCalendar → publish/EventCalendar}/index.js +0 -0
  382. /package/{EventCalendarTimeline → publish/EventCalendarTimeline}/index.css +0 -0
  383. /package/{EventCalendarTimeline → publish/EventCalendarTimeline}/index.d.ts +0 -0
  384. /package/{EventCalendarTimeline → publish/EventCalendarTimeline}/index.js +0 -0
  385. /package/{File → publish/File}/index.d.ts +0 -0
  386. /package/{File → publish/File}/index.js +0 -0
  387. /package/{HorizontalScrollContent → publish/HorizontalScrollContent}/index.css +0 -0
  388. /package/{HorizontalScrollContent → publish/HorizontalScrollContent}/index.d.ts +0 -0
  389. /package/{HorizontalScrollContent → publish/HorizontalScrollContent}/index.js +0 -0
  390. /package/{Input → publish/Input}/index.d.ts +0 -0
  391. /package/{Input → publish/Input}/index.js +0 -0
  392. /package/{LiveSearch → publish/LiveSearch}/index.css +0 -0
  393. /package/{LiveSearch → publish/LiveSearch}/index.d.ts +0 -0
  394. /package/{LiveSearch → publish/LiveSearch}/index.js +0 -0
  395. /package/{MasonryLayout → publish/MasonryLayout}/index.d.ts +0 -0
  396. /package/{MasonryLayout → publish/MasonryLayout}/index.js +0 -0
  397. /package/{ModalDialog → publish/ModalDialog}/index.d.ts +0 -0
  398. /package/{ModalDialog → publish/ModalDialog}/index.js +0 -0
  399. /package/{ModeSwitch → publish/ModeSwitch}/index.d.ts +0 -0
  400. /package/{ModeSwitch → publish/ModeSwitch}/index.js +0 -0
  401. /package/{MultilevelDropdownMenu → publish/MultilevelDropdownMenu}/index.css +0 -0
  402. /package/{MultilevelDropdownMenu → publish/MultilevelDropdownMenu}/index.d.ts +0 -0
  403. /package/{MultilevelDropdownMenu → publish/MultilevelDropdownMenu}/index.js +0 -0
  404. /package/{MultipleCheckboxes → publish/MultipleCheckboxes}/index.d.ts +0 -0
  405. /package/{MultipleCheckboxes → publish/MultipleCheckboxes}/index.js +0 -0
  406. /package/{MultipleSelect → publish/MultipleSelect}/index.css +0 -0
  407. /package/{NativeSelect → publish/NativeSelect}/index.d.ts +0 -0
  408. /package/{NativeSelect → publish/NativeSelect}/index.js +0 -0
  409. /package/{NumberInput → publish/NumberInput}/index.d.ts +0 -0
  410. /package/{NumberInput → publish/NumberInput}/index.js +0 -0
  411. /package/{Pagination → publish/Pagination}/index.d.ts +0 -0
  412. /package/{Pagination → publish/Pagination}/index.js +0 -0
  413. /package/{Radio → publish/Radio}/index.d.ts +0 -0
  414. /package/{Radio → publish/Radio}/index.js +0 -0
  415. /package/{RangeSlider → publish/RangeSlider}/index.css +0 -0
  416. /package/{RangeSlider → publish/RangeSlider}/index.d.ts +0 -0
  417. /package/{RangeSlider → publish/RangeSlider}/index.js +0 -0
  418. /package/{RootPortal → publish/RootPortal}/index.d.ts +0 -0
  419. /package/{RootPortal → publish/RootPortal}/index.js +0 -0
  420. /package/{ScrollReveal → publish/ScrollReveal}/index.d.ts +0 -0
  421. /package/{ScrollReveal → publish/ScrollReveal}/index.js +0 -0
  422. /package/{Scrollbar → publish/Scrollbar}/index.css +0 -0
  423. /package/{Scrollbar → publish/Scrollbar}/index.d.ts +0 -0
  424. /package/{Scrollbar → publish/Scrollbar}/index.js +0 -0
  425. /package/{SearchBar → publish/SearchBar}/index.d.ts +0 -0
  426. /package/{SearchBar → publish/SearchBar}/index.js +0 -0
  427. /package/{Select → publish/Select}/index.css +0 -0
  428. /package/{Select → publish/Select}/index.d.ts +0 -0
  429. /package/{Select → publish/Select}/index.js +0 -0
  430. /package/{ShowMoreLess → publish/ShowMoreLess}/index.css +0 -0
  431. /package/{ShowMoreLess → publish/ShowMoreLess}/index.d.ts +0 -0
  432. /package/{ShowMoreLess → publish/ShowMoreLess}/index.js +0 -0
  433. /package/{Switch → publish/Switch}/index.d.ts +0 -0
  434. /package/{Switch → publish/Switch}/index.js +0 -0
  435. /package/{Table → publish/Table}/index.css +0 -0
  436. /package/{Table → publish/Table}/index.d.ts +0 -0
  437. /package/{Table → publish/Table}/index.js +0 -0
  438. /package/{Tabs → publish/Tabs}/index.d.ts +0 -0
  439. /package/{Tabs → publish/Tabs}/index.js +0 -0
  440. /package/{TagInput → publish/TagInput}/index.css +0 -0
  441. /package/{TagInput → publish/TagInput}/index.d.ts +0 -0
  442. /package/{TagInput → publish/TagInput}/index.js +0 -0
  443. /package/{Toast → publish/Toast}/index.css +0 -0
  444. /package/{Toast → publish/Toast}/index.d.ts +0 -0
  445. /package/{Toast → publish/Toast}/index.js +0 -0
  446. /package/{Tooltip → publish/Tooltip}/index.css +0 -0
  447. /package/{Tooltip → publish/Tooltip}/index.d.ts +0 -0
  448. /package/{Tooltip → publish/Tooltip}/index.js +0 -0
  449. /package/{Tree → publish/Tree}/index.css +0 -0
  450. /package/{Utils → publish/Utils}/anim.d.ts +0 -0
  451. /package/{Utils → publish/Utils}/anim.js +0 -0
  452. /package/{Utils → publish/Utils}/bodyScrollLock.d.ts +0 -0
  453. /package/{Utils → publish/Utils}/bodyScrollLock.js +0 -0
  454. /package/{Utils → publish/Utils}/buffer.d.ts +0 -0
  455. /package/{Utils → publish/Utils}/buffer.js +0 -0
  456. /package/{Utils → publish/Utils}/cls.d.ts +0 -0
  457. /package/{Utils → publish/Utils}/cls.js +0 -0
  458. /package/{Utils → publish/Utils}/convert.d.ts +0 -0
  459. /package/{Utils → publish/Utils}/convert.js +0 -0
  460. /package/{Utils → publish/Utils}/date.d.ts +0 -0
  461. /package/{Utils → publish/Utils}/date.js +0 -0
  462. /package/{Utils → publish/Utils}/dom.d.ts +0 -0
  463. /package/{Utils → publish/Utils}/dom.js +0 -0
  464. /package/{Utils → publish/Utils}/easing.d.ts +0 -0
  465. /package/{Utils → publish/Utils}/easing.js +0 -0
  466. /package/{Utils → publish/Utils}/extract.d.ts +0 -0
  467. /package/{Utils → publish/Utils}/extract.js +0 -0
  468. /package/{Utils → publish/Utils}/getElementProperty.d.ts +0 -0
  469. /package/{Utils → publish/Utils}/getElementProperty.js +0 -0
  470. /package/{Utils → publish/Utils}/guid.d.ts +0 -0
  471. /package/{Utils → publish/Utils}/guid.js +0 -0
  472. /package/{Utils → publish/Utils}/initDefaultOptions.d.ts +0 -0
  473. /package/{Utils → publish/Utils}/initDefaultOptions.js +0 -0
  474. /package/{Utils → publish/Utils}/inputsCalculation.d.ts +0 -0
  475. /package/{Utils → publish/Utils}/inputsCalculation.js +0 -0
  476. /package/{Utils → publish/Utils}/math.d.ts +0 -0
  477. /package/{Utils → publish/Utils}/math.js +0 -0
  478. /package/{Utils → publish/Utils}/object.d.ts +0 -0
  479. /package/{Utils → publish/Utils}/object.js +0 -0
  480. /package/{Utils → publish/Utils}/os.d.ts +0 -0
  481. /package/{Utils → publish/Utils}/os.js +0 -0
  482. /package/{Utils → publish/Utils}/performance.d.ts +0 -0
  483. /package/{Utils → publish/Utils}/performance.js +0 -0
  484. /package/{Utils → publish/Utils}/tree.d.ts +0 -0
  485. /package/{Utils → publish/Utils}/tree.js +0 -0
  486. /package/{Utils → publish/Utils}/useClickOutside.d.ts +0 -0
  487. /package/{Utils → publish/Utils}/useClickOutside.js +0 -0
  488. /package/{Utils → publish/Utils}/useComId.d.ts +0 -0
  489. /package/{Utils → publish/Utils}/useComId.js +0 -0
  490. /package/{Utils → publish/Utils}/useDebounce.d.ts +0 -0
  491. /package/{Utils → publish/Utils}/useDebounce.js +0 -0
  492. /package/{Utils → publish/Utils}/useDragDropPosition.d.ts +0 -0
  493. /package/{Utils → publish/Utils}/useDragDropPosition.js +0 -0
  494. /package/{Utils → publish/Utils}/useDraggable.d.ts +0 -0
  495. /package/{Utils → publish/Utils}/useDraggable.js +0 -0
  496. /package/{Utils → publish/Utils}/useInterval.d.ts +0 -0
  497. /package/{Utils → publish/Utils}/useInterval.js +0 -0
  498. /package/{Utils → publish/Utils}/useKeyPress.d.ts +0 -0
  499. /package/{Utils → publish/Utils}/useKeyPress.js +0 -0
  500. /package/{Utils → publish/Utils}/useThrottle.d.ts +0 -0
  501. /package/{Utils → publish/Utils}/useThrottle.js +0 -0
  502. /package/{Utils → publish/Utils}/useWindowScroll.d.ts +0 -0
  503. /package/{Utils → publish/Utils}/useWindowScroll.js +0 -0
  504. /package/{Utils → publish/Utils}/viewport.d.ts +0 -0
  505. /package/{Utils → publish/Utils}/viewport.js +0 -0
  506. /package/{all.d.ts → publish/all.d.ts} +0 -0
@@ -0,0 +1,578 @@
1
+ /**
2
+ * The check string contains only hours, minutes, and seconds
3
+ * @returns {Boolean}
4
+ */
5
+ function isTimeString(str: string): boolean {
6
+ // match "HH:mm:ss"
7
+ const timePattern = /^([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$/;
8
+ return timePattern.test(str);
9
+ }
10
+
11
+
12
+ /**
13
+ * Get now
14
+ * @returns {Date} // Wed Apr 17 2024 14:31:36 GMT+0800 (China Standard Time)
15
+ */
16
+ const getNow = (): Date => {
17
+ return new Date(Date.now());
18
+ };
19
+
20
+ /**
21
+ * Zero Padding
22
+ * @param {Number} num
23
+ * @param {Boolean} padZeroEnabled
24
+ * @returns {String} '01', '05', '12'
25
+ */
26
+ const padZero = (num: number, padZeroEnabled: boolean = true): string => {
27
+ if (padZeroEnabled) {
28
+ return num < 10 ? '0' + num : num.toString();
29
+ } else {
30
+ return num.toString();
31
+ }
32
+
33
+ };
34
+
35
+
36
+ /**
37
+ * Hours validation
38
+ * @param {*} v
39
+ * @returns {Boolean}
40
+ */
41
+ const isValidHours = (v: any): boolean => {
42
+ return /^([01]?[0-9]|2[0-3])$/.test(v);// 0~23, 00~23
43
+ };
44
+
45
+ /**
46
+ * Minutes and Seconds validation
47
+ * @param {*} v
48
+ * @returns {Boolean}
49
+ */
50
+ const isValidMinutesAndSeconds = (v: any): boolean => {
51
+ return /^([01]?[0-9]|[0-5][0-9])$/.test(v);// 0~59, 00~59
52
+ };
53
+
54
+ /**
55
+ * Year validation
56
+ * @param {*} v
57
+ * @returns {Boolean}
58
+ */
59
+ const isValidYear = (v: any): boolean => {
60
+ return /^([1-9][0-9])\d{2}$/.test(v);// 1000 ~ 9999
61
+ };
62
+
63
+ /**
64
+ * Month validation
65
+ * @param {*} v
66
+ * @returns {Boolean}
67
+ */
68
+ const isValidMonth = (v: any): boolean => {
69
+ return /^(0?[1-9]|1[0-2])$/.test(v);// 01~12, 1~12
70
+ };
71
+
72
+ /**
73
+ * Day validation
74
+ * @param {*} v
75
+ * @returns {Boolean}
76
+ */
77
+ const isValidDay = (v: any): boolean => {
78
+ return /^(0?[1-9]|[1-2][0-9]|3[0-1])$/.test(v);// 01~31, 1~31
79
+ };
80
+
81
+
82
+
83
+ /**
84
+ * Check if the string is legitimate
85
+ * @param {String} v
86
+ * @returns {Boolean}
87
+ */
88
+ const isValidDate = (v: string): boolean => {
89
+ return !(String(new Date(v)).toLowerCase() === 'invalid date');
90
+ };
91
+
92
+
93
+ /**
94
+ * Get calendar date
95
+ * @param {Date | String} v
96
+ * @returns {Date | String} yyyy-MM-dd
97
+ */
98
+ function dateFormat(v: Date | string): Date | String {
99
+ const date = typeof v === 'string' ? new Date(v.replace(/-/g, "/")) : v; // fix "Invalid date in safari"
100
+ return date;
101
+ }
102
+
103
+
104
+ /**
105
+ * Get date details
106
+ * @param {Date | String} v
107
+ * @param {Boolean} padZeroEnabled
108
+ * @typedef {Object} JSON
109
+ */
110
+ function getDateDetails(v: Date | string, padZeroEnabled: boolean = true): Record<string, string | number> {
111
+
112
+ const date: any = dateFormat(v);
113
+ const year = date.getFullYear();
114
+ const month = padZero(date.getMonth() + 1, padZeroEnabled);
115
+ const day = padZero(date.getDate(), padZeroEnabled);
116
+ const hours = padZero(date.getHours(), padZeroEnabled);
117
+ const minutes = padZero(date.getMinutes(), padZeroEnabled);
118
+ const seconds = padZero(date.getSeconds(), padZeroEnabled);
119
+
120
+ return {
121
+ year: String(year),
122
+ month,
123
+ day,
124
+ hours,
125
+ minutes,
126
+ seconds
127
+ };
128
+ }
129
+
130
+
131
+ /**
132
+ * Get calendar date
133
+ * @param {Date | String} v
134
+ * @param {Boolean} padZeroEnabled
135
+ * @returns {String} yyyy-MM-dd
136
+ */
137
+ function getCalendarDate(v: Date | string, padZeroEnabled: boolean = true): string {
138
+
139
+ const date: any = dateFormat(v);
140
+ const year = date.getFullYear();
141
+ const month = padZero(date.getMonth() + 1, padZeroEnabled);
142
+ const day = padZero(date.getDate(), padZeroEnabled);
143
+ const hours = padZero(date.getHours(), padZeroEnabled);
144
+ const minutes = padZero(date.getMinutes(), padZeroEnabled);
145
+ const seconds = padZero(date.getSeconds(), padZeroEnabled);
146
+ const res = `${year}-${month}-${day}`;
147
+ return res;
148
+ }
149
+
150
+
151
+
152
+ /**
153
+ * Get today date
154
+ * @returns {String} yyyy-MM-dd
155
+ */
156
+ function getTodayDate(): string {
157
+
158
+ return getCalendarDate(new Date());
159
+ }
160
+
161
+
162
+
163
+ /**
164
+ * Get tomorrow date
165
+ * @param {Date | String} v
166
+ * @returns {String} yyyy-MM-dd
167
+ */
168
+ function getTomorrowDate(v: Date | string): string {
169
+
170
+ const today: any = dateFormat(v);
171
+ const _tomorrow = today;
172
+ _tomorrow.setDate(_tomorrow.getDate() + 1);
173
+ const tomorrow = getCalendarDate(_tomorrow);
174
+ return tomorrow;
175
+ }
176
+
177
+
178
+ /**
179
+ * Get yesterday date
180
+ * @param {Date | String} v
181
+ * @returns {String} yyyy-MM-dd
182
+ */
183
+ function getYesterdayDate(v: Date | string): string {
184
+
185
+ const today: any = dateFormat(v);
186
+ const _yesterday = today;
187
+ _yesterday.setDate(_yesterday.getDate() - 1);
188
+ const yesterday = getCalendarDate(_yesterday);
189
+ return yesterday;
190
+ }
191
+
192
+ /**
193
+ * Get specified date
194
+ * @param {Date | String} v
195
+ * @param {Number} days The number of days forward or backward, which can be a negative number
196
+ * @returns {String} yyyy-MM-dd
197
+ */
198
+ /* console.log(getSpecifiedDate(getTodayDate(), -180)); // 2023-08-27 (180 days before February 23, 202) */
199
+ function getSpecifiedDate(v: Date | string, days: number): string {
200
+
201
+ const today: any = dateFormat(v);
202
+ const _specifiedDay = today;
203
+ _specifiedDay.setDate(_specifiedDay.getDate() + days);
204
+ const specifiedDay = getCalendarDate(_specifiedDay);
205
+ return specifiedDay;
206
+ }
207
+
208
+
209
+
210
+ /**
211
+ * Get next month date
212
+ * @param {Date | String} v
213
+ * @returns {String} yyyy-MM-dd
214
+ */
215
+ function getNextMonthDate(v: Date | string): string {
216
+
217
+ const today: any = dateFormat(v);
218
+ today.setMonth(today.getMonth() + 1);
219
+
220
+ return getCalendarDate(today);
221
+ }
222
+
223
+
224
+ /**
225
+ * Get previous month date
226
+ * @param {Date | String} v
227
+ * @returns {String} yyyy-MM-dd
228
+ */
229
+ function getPrevMonthDate(v: Date | string): string {
230
+
231
+ const today: any = dateFormat(v);
232
+ today.setMonth(today.getMonth() - 1);
233
+
234
+ return getCalendarDate(today);
235
+ }
236
+
237
+
238
+
239
+ /**
240
+ * Get next year date
241
+ * @param {Date | String} v
242
+ * @returns {String} yyyy-MM-dd
243
+ */
244
+ function getNextYearDate(v: Date | string): string {
245
+
246
+ const today: any = dateFormat(v);
247
+ const current = new Date(today);
248
+ current.setFullYear(current.getFullYear() + 1);
249
+
250
+ return getCalendarDate(current);
251
+ }
252
+
253
+
254
+ /**
255
+ * Get previous year date
256
+ * @param {Date | String} v
257
+ * @returns {String} yyyy-MM-dd
258
+ */
259
+ function getPrevYearDate(v: Date | string): string {
260
+
261
+ const today: any = dateFormat(v);
262
+ const current = new Date(today);
263
+ current.setFullYear(current.getFullYear() - 1);
264
+
265
+ return getCalendarDate(current);
266
+ }
267
+
268
+
269
+
270
+
271
+ /**
272
+ * Get last day in month
273
+ * @param {Date | String} v
274
+ * @param {?Number} targetMonth
275
+ * @returns {String | Number} yyyy-MM-dd
276
+ */
277
+ /*
278
+ Example: Get last day in next month
279
+
280
+ const _day = '2024-01-01';
281
+ const y = new Date(getNextMonthDate(_day)).getFullYear();
282
+ const m = String(new Date(getNextMonthDate(_day)).getMonth() + 1).padStart(2, '0');
283
+ const d = getLastDayInMonth(getNextMonthDate(_day), new Date(getNextMonthDate(_day)).getMonth() + 1);
284
+
285
+ const lastDayOfNextMonth = `${y}-${m}-${d}`; // 2024-02-29
286
+
287
+ */
288
+ function getLastDayInMonth(v: Date | string, targetMonth: number | undefined = undefined): string | number {
289
+ const date: any = dateFormat(v);
290
+ return new Date(date.getFullYear(), typeof targetMonth !== 'undefined' ? targetMonth : date.getMonth() - 1, 0).getDate();
291
+ }
292
+
293
+
294
+
295
+
296
+ /**
297
+ * Get current year
298
+ * @returns {Number}
299
+ */
300
+ function getCurrentYear(): number {
301
+ return new Date().getFullYear();
302
+ }
303
+
304
+ /**
305
+ * Get current month
306
+ * @param {Boolean} padZeroEnabled
307
+ * @returns {Number}
308
+ */
309
+ function getCurrentMonth(padZeroEnabled: boolean = true): number {
310
+ const m: any = new Date().getMonth() + 1;
311
+ return padZeroEnabled ? String(m).padStart(2, '0') : m;
312
+ }
313
+
314
+
315
+
316
+ /**
317
+ * Get current day
318
+ * @param {Boolean} padZeroEnabled
319
+ * @returns {Number}
320
+ */
321
+ function getCurrentDay(padZeroEnabled: boolean = true): number {
322
+ const d: any = new Date().getDate();
323
+ return padZeroEnabled ? String(d).padStart(2, '0') : d;
324
+ }
325
+
326
+
327
+
328
+
329
+ /**
330
+ * Get first and last month day
331
+ * @param {Number} v
332
+ * @param {Boolean} padZeroEnabled
333
+ * @returns {Array}
334
+ */
335
+ function getFirstAndLastMonthDay(year: number, padZeroEnabled: boolean = true): string[] {
336
+ const theFirst = new Date(year, 0, 1).getDate();
337
+ const theLast = new Date(year, 11, 31).getDate();
338
+
339
+ const padZero = (num: number): string => {
340
+ if (padZeroEnabled) {
341
+ return num < 10 ? '0' + num : num.toString();
342
+ } else {
343
+ return num.toString();
344
+ }
345
+ };
346
+
347
+ return [padZero(theFirst), padZero(theLast)];
348
+ }
349
+
350
+
351
+ /**
352
+ * Get current date
353
+ * @param {Boolean} padZeroEnabled
354
+ * @typedef {String} JSON
355
+ */
356
+ function getCurrentDate(padZeroEnabled: boolean = true): JSON {
357
+
358
+ const date = new Date();
359
+ const padZero = (num: number): string => {
360
+ if (padZeroEnabled) {
361
+ return num < 10 ? '0' + num : num.toString();
362
+ } else {
363
+ return num.toString();
364
+ }
365
+ };
366
+ const year = date.getFullYear();
367
+ const month = padZero(date.getMonth() + 1);
368
+ const day = padZero(date.getDate());
369
+ const hours = padZero(date.getHours());
370
+ const minutes = padZero(date.getMinutes());
371
+
372
+
373
+ return {
374
+ today: `${year}-${month}-${day}`,
375
+ yearStart: `${year}-01-01`,
376
+ yearEnd: `${year}-12-${getLastDayInMonth(date, 12)}`
377
+ } as any;
378
+ }
379
+
380
+
381
+
382
+ /**
383
+ * Get full time
384
+ * @param {Date | String} v
385
+ * @param {Boolean} padZeroEnabled
386
+ * @param {Boolean} hasSeconds
387
+ * @returns {String} yyyy-MM-dd HH:mm:ss
388
+ */
389
+ function getFullTime(v: Date | string, padZeroEnabled: boolean = true, hasSeconds: boolean = true): string {
390
+
391
+ const date: any = dateFormat(v);
392
+ const padZero = (num: number): string => {
393
+ if (padZeroEnabled) {
394
+ return num < 10 ? '0' + num : num.toString();
395
+ } else {
396
+ return num.toString();
397
+ }
398
+
399
+ };
400
+ const year = date.getFullYear();
401
+ const month = padZero(date.getMonth() + 1);
402
+ const day = padZero(date.getDate());
403
+ const hours = padZero(date.getHours());
404
+ const minutes = padZero(date.getMinutes());
405
+ const seconds = padZero(date.getSeconds());
406
+ const res = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
407
+ const res2 = `${year}-${month}-${day} ${hours}:${minutes}`;
408
+
409
+ return hasSeconds ? res : res2;
410
+ }
411
+
412
+
413
+
414
+ /**
415
+ * Add hours
416
+ * @param {Date | String} v
417
+ * @param {Number} offset
418
+ * @param {Boolean} padZeroEnabled
419
+ * @returns {String} yyyy-MM-dd HH:mm:ss
420
+ */
421
+ function setDateHours(v: Date | string, offset: number, padZeroEnabled: boolean = true): string {
422
+ const date: any = dateFormat(v);
423
+ const _cur = new Date(date).setTime(new Date(date).getTime() + (offset * 60 * 60 * 1000));
424
+ return getFullTime(new Date(_cur), padZeroEnabled);
425
+ }
426
+
427
+ /**
428
+ * Add minutes
429
+ * @param {Date | String} v
430
+ * @param {Number} offset
431
+ * @param {Boolean} padZeroEnabled
432
+ * @returns {String} yyyy-MM-dd HH:mm:ss
433
+ */
434
+ function setDateMinutes(v: Date | string, offset: number, padZeroEnabled: boolean = true): string {
435
+ const date: any = dateFormat(v);
436
+ const _cur = new Date(date).setTime(new Date(date).getTime() + (offset * 60 * 1000));
437
+ return getFullTime(new Date(_cur), padZeroEnabled);
438
+ }
439
+ /**
440
+ * Add days
441
+ * @param {Date | String} v
442
+ * @param {Number} offset
443
+ * @param {Boolean} padZeroEnabled
444
+ * @returns {String} yyyy-MM-dd HH:mm:ss
445
+ */
446
+ function setDateDays(v: Date | string, offset: number, padZeroEnabled: boolean = true): string {
447
+ const date: any = dateFormat(v);
448
+ const _cur = new Date(date).setTime(new Date(date).getTime() + (offset * 24 * 60 * 60 * 1000));
449
+ return getFullTime(new Date(_cur), padZeroEnabled);
450
+ }
451
+
452
+ /**
453
+ * Convert timestamp to date
454
+ * @param {Number} v
455
+ * @param {Boolean} padZeroEnabled
456
+ * @returns {String} yyyy-MM-dd HH:mm:ss
457
+ */
458
+ function timestampToDate(v: number, padZeroEnabled: boolean = true): string {
459
+ return getFullTime(new Date(v), padZeroEnabled);
460
+ }
461
+
462
+
463
+ /**
464
+ * Get the date of the specified month
465
+ * @param {Number} year
466
+ * @param {Number} month
467
+ * @returns {Array<string>}
468
+ */
469
+ function getMonthDates(year: number, month: number) {
470
+ const dates: string[] = [];
471
+
472
+ // Get the total number of days in the month
473
+ const daysInMonth = new Date(year, month, 0).getDate();
474
+
475
+
476
+ for (let day = 1; day <= daysInMonth; day++) {
477
+ dates.push(`${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`); // 'YYYY-MM-DD'
478
+ }
479
+
480
+ return dates;
481
+ }
482
+
483
+ /**
484
+ * Get the date of the specified week (From Sunday)
485
+ * @param {Number} weekOffset
486
+ * @returns {Array<Date>}
487
+ */
488
+ function getWeekDatesFromSun(weekOffset: number) {
489
+ const dates: Array<Date> = [];
490
+ const currentDate = new Date();
491
+
492
+ // Calculate the date of Sunday
493
+ const dayOfWeek = currentDate.getDay(); // 0 is Sunday
494
+ currentDate.setDate(currentDate.getDate() - dayOfWeek + weekOffset * 7);
495
+
496
+ // Get the date of the week
497
+ for (let i = 0; i < 7; i++) {
498
+ const date = new Date(currentDate);
499
+ date.setDate(currentDate.getDate() + i);
500
+ dates.push(date);
501
+ }
502
+
503
+ return dates;
504
+ }
505
+
506
+ /**
507
+ * Get the date of the specified week (From Monday)
508
+ * @param {Number} weekOffset
509
+ * @returns {Array<Date>}
510
+ */
511
+ function getWeekDatesFromMon(weekOffset: number) {
512
+ const dates: Array<Date> = [];
513
+ const currentDate = new Date();
514
+
515
+ // Set the date to Monday
516
+ const dayOfWeek = currentDate.getDay();
517
+ const diffToMonday = dayOfWeek === 0 ? -6 : 1 - dayOfWeek;
518
+ currentDate.setDate(currentDate.getDate() + diffToMonday + weekOffset * 7);
519
+
520
+ // Get the date of the week
521
+ for (let i = 0; i < 7; i++) {
522
+ const date = new Date(currentDate);
523
+ date.setDate(currentDate.getDate() + i);
524
+ dates.push(date);
525
+ }
526
+
527
+ return dates;
528
+ }
529
+
530
+ export {
531
+ isTimeString,
532
+ getNow,
533
+ padZero,
534
+ dateFormat,
535
+ getDateDetails,
536
+
537
+ //
538
+ isValidDate,
539
+ isValidHours,
540
+ isValidMinutesAndSeconds,
541
+ isValidYear,
542
+ isValidMonth,
543
+ isValidDay,
544
+
545
+ //
546
+ getLastDayInMonth,
547
+ getFirstAndLastMonthDay,
548
+ getCalendarDate,
549
+ getFullTime,
550
+
551
+ // current
552
+ getTodayDate,
553
+ getCurrentMonth,
554
+ getCurrentYear,
555
+ getCurrentDay,
556
+ getCurrentDate,
557
+
558
+ // next & previous
559
+ getTomorrowDate,
560
+ getYesterdayDate,
561
+ getNextMonthDate,
562
+ getPrevMonthDate,
563
+ getNextYearDate,
564
+ getPrevYearDate,
565
+ getSpecifiedDate,
566
+
567
+
568
+ // convert
569
+ setDateHours,
570
+ setDateMinutes,
571
+ setDateDays,
572
+ timestampToDate,
573
+
574
+ // get dates list
575
+ getMonthDates,
576
+ getWeekDatesFromSun,
577
+ getWeekDatesFromMon
578
+ }
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Dom Utilities
3
+ * @param {HTMLElement} el - Element
4
+ * @param {?String} filter - A filter string
5
+ * @returns HtmlElementCollection
6
+ */
7
+ function matches(el: HTMLElement, filter: string | null): boolean {
8
+ if (el && el.nodeType === 1) {
9
+ if (filter) {
10
+ return el.matches(filter);
11
+ }
12
+ return true;
13
+ }
14
+ return false;
15
+ }
16
+
17
+ // the next siblings
18
+ function getNextSiblings(el: HTMLElement, filter: string = ''): HTMLElement[] {
19
+ const sibs: HTMLElement[] = [];
20
+ while (el = el.nextSibling as HTMLElement) {
21
+ if (matches(el, filter)) {
22
+ sibs.push(el);
23
+ }
24
+ }
25
+ return sibs;
26
+ }
27
+
28
+ // previous siblings
29
+ function getPreviousSiblings(el: HTMLElement, filter: string = ''): HTMLElement[] {
30
+ const sibs: HTMLElement[] = [];
31
+ while (el = el.previousSibling as HTMLElement) {
32
+ if (matches(el, filter)) {
33
+ sibs.push(el);
34
+ }
35
+ }
36
+ return sibs;
37
+ }
38
+
39
+ // parent and get all the siblings
40
+ function getAllSiblings(el: HTMLElement, filter: string = ''): HTMLElement[] {
41
+ const sibs: HTMLElement[] = [];
42
+ el = el.parentNode!.firstChild as HTMLElement;
43
+ while (el = el.nextSibling as HTMLElement) {
44
+ if (matches(el, filter)) {
45
+ sibs.push(el);
46
+ }
47
+ }
48
+ return sibs;
49
+ }
50
+
51
+ // all parent nodes
52
+ function getParents(el: HTMLElement, filter: string = ''): HTMLElement[] {
53
+ const parents: HTMLElement[] = [];
54
+ while (el = el.parentNode as HTMLElement) {
55
+ if (matches(el, filter)) {
56
+ parents.push(el);
57
+ }
58
+ }
59
+ return parents;
60
+ }
61
+
62
+ // all child nodes
63
+ function getChildren(el: HTMLElement, filter: string = '', all: any[] = []): any[] {
64
+ all.push(...el.childNodes as any);
65
+ for (const child of el.childNodes as any) {
66
+ getChildren(child as HTMLElement, filter, all);
67
+ }
68
+
69
+ const res = all.filter((item) => matches(item as HTMLElement, filter));
70
+ return res;
71
+ }
72
+
73
+ function isRootElement(element: HTMLElement): boolean {
74
+ return element.matches('html,body');
75
+ }
76
+
77
+ function getDocument(node?: Node): Document {
78
+ if (typeof node === 'undefined') {
79
+ return document;
80
+ } else {
81
+ return node.ownerDocument!;
82
+ }
83
+ }
84
+
85
+ function isNode(value: any): value is Node {
86
+ return value instanceof Node;
87
+ }
88
+
89
+ function isElement(value: any): value is Element {
90
+ return value instanceof Element;
91
+ }
92
+
93
+ function isHTMLElement(value: any): value is HTMLElement {
94
+ return value instanceof HTMLElement;
95
+ }
96
+
97
+ function isShadowRoot(value: any): value is ShadowRoot {
98
+ // Browsers without `ShadowRoot` support.
99
+ if (typeof ShadowRoot === 'undefined') {
100
+ return false;
101
+ }
102
+
103
+ return value instanceof ShadowRoot;
104
+ }
105
+
106
+ /* console.log(nodeContains(document.body, document.getElementById('obj'))) */
107
+ function nodeContains(parent: Node, child: Node): boolean {
108
+ if (!parent || !child) {
109
+ return false;
110
+ }
111
+
112
+ const rootNode = child.getRootNode?.();
113
+
114
+ // First, attempt with faster native method
115
+ if (parent.contains(child)) {
116
+ return true;
117
+ }
118
+
119
+ // then fallback to custom implementation with Shadow DOM support
120
+ if (rootNode && isShadowRoot(rootNode)) {
121
+ let next = child;
122
+ while (next) {
123
+ if (parent === next) {
124
+ return true;
125
+ }
126
+ // @ts-ignore
127
+ next = next.parentNode || next.host;
128
+ }
129
+ }
130
+
131
+ // Give up, the result is false
132
+ return false;
133
+ }
134
+
135
+
136
+ export {
137
+ getNextSiblings,
138
+ getPreviousSiblings,
139
+ getAllSiblings,
140
+ getParents,
141
+ getChildren,
142
+ isRootElement,
143
+ getDocument,
144
+ isNode,
145
+ isElement,
146
+ isHTMLElement,
147
+ isShadowRoot,
148
+ nodeContains
149
+ }
150
+