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.
- package/.gitattributes +2 -0
- package/README.md +116 -2
- package/README_PUBLISH.md +328 -0
- package/lib/cjs/DynamicFields/index.js +11 -3
- package/lib/esm/DynamicFields/index.tsx +9 -4
- package/logo.png +0 -0
- package/package.json +591 -1
- package/preview.png +0 -0
- package/{DynamicFields → publish/DynamicFields}/index.js +11 -3
- package/publish/LICENSE +21 -0
- package/publish/README.md +328 -0
- package/publish/lib/cjs/Accordion/index.d.ts +2 -0
- package/publish/lib/cjs/Accordion/index.js +667 -0
- package/publish/lib/cjs/BackToTop/index.d.ts +17 -0
- package/publish/lib/cjs/BackToTop/index.js +904 -0
- package/publish/lib/cjs/CascadingSelect/index.d.ts +80 -0
- package/publish/lib/cjs/CascadingSelect/index.js +3383 -0
- package/publish/lib/cjs/CascadingSelectE2E/index.d.ts +91 -0
- package/publish/lib/cjs/CascadingSelectE2E/index.js +3988 -0
- package/publish/lib/cjs/Chatbox/index.d.ts +101 -0
- package/publish/lib/cjs/Chatbox/index.js +7037 -0
- package/publish/lib/cjs/Checkbox/index.d.ts +28 -0
- package/publish/lib/cjs/Checkbox/index.js +673 -0
- package/publish/lib/cjs/ColorPicker/index.d.ts +27 -0
- package/publish/lib/cjs/ColorPicker/index.js +662 -0
- package/publish/lib/cjs/Date/index.d.ts +70 -0
- package/publish/lib/cjs/Date/index.js +6368 -0
- package/publish/lib/cjs/DigitalClock/index.d.ts +7 -0
- package/publish/lib/cjs/DigitalClock/index.js +402 -0
- package/publish/lib/cjs/DragDropList/index.d.ts +45 -0
- package/publish/lib/cjs/DragDropList/index.js +1586 -0
- package/publish/lib/cjs/DropdownMenu/index.d.ts +38 -0
- package/publish/lib/cjs/DropdownMenu/index.js +1507 -0
- package/publish/lib/cjs/DynamicFields/index.d.ts +40 -0
- package/publish/lib/cjs/DynamicFields/index.js +818 -0
- package/publish/lib/cjs/EventCalendar/index.d.ts +61 -0
- package/publish/lib/cjs/EventCalendar/index.js +3789 -0
- package/publish/lib/cjs/EventCalendarTimeline/index.d.ts +100 -0
- package/publish/lib/cjs/EventCalendarTimeline/index.js +6141 -0
- package/publish/lib/cjs/File/index.d.ts +40 -0
- package/publish/lib/cjs/File/index.js +1751 -0
- package/publish/lib/cjs/HorizontalScrollContent/index.d.ts +14 -0
- package/publish/lib/cjs/HorizontalScrollContent/index.js +426 -0
- package/publish/lib/cjs/Input/index.d.ts +59 -0
- package/publish/lib/cjs/Input/index.js +1486 -0
- package/publish/lib/cjs/LiveSearch/index.d.ts +70 -0
- package/publish/lib/cjs/LiveSearch/index.js +4180 -0
- package/publish/lib/cjs/MasonryLayout/index.d.ts +14 -0
- package/publish/lib/cjs/MasonryLayout/index.js +689 -0
- package/publish/lib/cjs/ModalDialog/index.d.ts +83 -0
- package/publish/lib/cjs/ModalDialog/index.js +1719 -0
- package/publish/lib/cjs/ModeSwitch/index.d.ts +17 -0
- package/publish/lib/cjs/ModeSwitch/index.js +202 -0
- package/publish/lib/cjs/MultilevelDropdownMenu/index.d.ts +20 -0
- package/publish/lib/cjs/MultilevelDropdownMenu/index.js +930 -0
- package/publish/lib/cjs/MultipleCheckboxes/index.d.ts +66 -0
- package/publish/lib/cjs/MultipleCheckboxes/index.js +2337 -0
- package/publish/lib/cjs/MultipleSelect/index.d.ts +65 -0
- package/publish/lib/cjs/MultipleSelect/index.js +4197 -0
- package/publish/lib/cjs/NativeSelect/index.d.ts +37 -0
- package/publish/lib/cjs/NativeSelect/index.js +2052 -0
- package/publish/lib/cjs/NumberInput/index.d.ts +40 -0
- package/publish/lib/cjs/NumberInput/index.js +1191 -0
- package/publish/lib/cjs/Pagination/index.d.ts +51 -0
- package/publish/lib/cjs/Pagination/index.js +612 -0
- package/publish/lib/cjs/Radio/index.d.ts +45 -0
- package/publish/lib/cjs/Radio/index.js +1838 -0
- package/publish/lib/cjs/RangeSlider/index.d.ts +22 -0
- package/publish/lib/cjs/RangeSlider/index.js +2696 -0
- package/publish/lib/cjs/Refresher/index.d.ts +22 -0
- package/publish/lib/cjs/Refresher/index.js +564 -0
- package/publish/lib/cjs/RootPortal/index.d.ts +9 -0
- package/publish/lib/cjs/RootPortal/index.js +148 -0
- package/publish/lib/cjs/ScrollReveal/index.d.ts +21 -0
- package/publish/lib/cjs/ScrollReveal/index.js +401 -0
- package/publish/lib/cjs/Scrollbar/index.d.ts +17 -0
- package/publish/lib/cjs/Scrollbar/index.js +1107 -0
- package/publish/lib/cjs/SearchBar/index.d.ts +41 -0
- package/publish/lib/cjs/SearchBar/index.js +701 -0
- package/publish/lib/cjs/Select/index.d.ts +107 -0
- package/publish/lib/cjs/Select/index.js +6540 -0
- package/publish/lib/cjs/ShowMoreLess/index.d.ts +36 -0
- package/publish/lib/cjs/ShowMoreLess/index.js +387 -0
- package/publish/lib/cjs/SplitterPanel/index.d.ts +20 -0
- package/publish/lib/cjs/SplitterPanel/index.js +800 -0
- package/publish/lib/cjs/Stepper/index.d.ts +26 -0
- package/publish/lib/cjs/Stepper/index.js +568 -0
- package/publish/lib/cjs/Switch/index.d.ts +25 -0
- package/publish/lib/cjs/Switch/index.js +630 -0
- package/publish/lib/cjs/Table/index.d.ts +12 -0
- package/publish/lib/cjs/Table/index.js +2311 -0
- package/publish/lib/cjs/Tabs/index.d.ts +3 -0
- package/publish/lib/cjs/Tabs/index.js +771 -0
- package/publish/lib/cjs/TagInput/index.d.ts +37 -0
- package/publish/lib/cjs/TagInput/index.js +1227 -0
- package/publish/lib/cjs/Textarea/index.d.ts +50 -0
- package/publish/lib/cjs/Textarea/index.js +1795 -0
- package/publish/lib/cjs/Toast/index.d.ts +3 -0
- package/publish/lib/cjs/Toast/index.js +1345 -0
- package/publish/lib/cjs/Tooltip/index.d.ts +38 -0
- package/publish/lib/cjs/Tooltip/index.js +1778 -0
- package/publish/lib/cjs/Tree/index.d.ts +78 -0
- package/publish/lib/cjs/Tree/index.js +2330 -0
- package/publish/lib/cjs/Utils/anim.d.ts +11 -0
- package/publish/lib/cjs/Utils/anim.js +846 -0
- package/publish/lib/cjs/Utils/bodyScrollLock.d.ts +8 -0
- package/publish/lib/cjs/Utils/bodyScrollLock.js +311 -0
- package/publish/lib/cjs/Utils/buffer.d.ts +67 -0
- package/publish/lib/cjs/Utils/buffer.js +343 -0
- package/publish/lib/cjs/Utils/cls.d.ts +15 -0
- package/publish/lib/cjs/Utils/cls.js +124 -0
- package/publish/lib/cjs/Utils/convert.d.ts +25 -0
- package/publish/lib/cjs/Utils/convert.js +109 -0
- package/publish/lib/cjs/Utils/date.d.ts +227 -0
- package/publish/lib/cjs/Utils/date.js +587 -0
- package/publish/lib/cjs/Utils/dom.d.ts +13 -0
- package/publish/lib/cjs/Utils/dom.js +215 -0
- package/publish/lib/cjs/Utils/easing.d.ts +29 -0
- package/publish/lib/cjs/Utils/easing.js +221 -0
- package/publish/lib/cjs/Utils/extract.d.ts +66 -0
- package/publish/lib/cjs/Utils/extract.js +195 -0
- package/publish/lib/cjs/Utils/format-string.d.ts +65 -0
- package/publish/lib/cjs/Utils/format-string.js +167 -0
- package/publish/lib/cjs/Utils/formdata.d.ts +13 -0
- package/publish/lib/cjs/Utils/formdata.js +131 -0
- package/publish/lib/cjs/Utils/getElementProperty.d.ts +52 -0
- package/publish/lib/cjs/Utils/getElementProperty.js +189 -0
- package/publish/lib/cjs/Utils/guid.d.ts +7 -0
- package/publish/lib/cjs/Utils/guid.js +67 -0
- package/publish/lib/cjs/Utils/initDefaultOptions.d.ts +10 -0
- package/publish/lib/cjs/Utils/initDefaultOptions.js +607 -0
- package/publish/lib/cjs/Utils/inputsCalculation.d.ts +28 -0
- package/publish/lib/cjs/Utils/inputsCalculation.js +188 -0
- package/publish/lib/cjs/Utils/math.d.ts +77 -0
- package/publish/lib/cjs/Utils/math.js +305 -0
- package/publish/lib/cjs/Utils/object.d.ts +18 -0
- package/publish/lib/cjs/Utils/object.js +120 -0
- package/publish/lib/cjs/Utils/os.d.ts +2 -0
- package/publish/lib/cjs/Utils/os.js +104 -0
- package/publish/lib/cjs/Utils/performance.d.ts +3 -0
- package/publish/lib/cjs/Utils/performance.js +94 -0
- package/publish/lib/cjs/Utils/sanitize.d.ts +14 -0
- package/publish/lib/cjs/Utils/sanitize.js +87 -0
- package/publish/lib/cjs/Utils/time.d.ts +40 -0
- package/publish/lib/cjs/Utils/time.js +177 -0
- package/publish/lib/cjs/Utils/tree.d.ts +40 -0
- package/publish/lib/cjs/Utils/tree.js +195 -0
- package/publish/lib/cjs/Utils/useAutosizeTextArea.d.ts +10 -0
- package/publish/lib/cjs/Utils/useAutosizeTextArea.js +231 -0
- package/publish/lib/cjs/Utils/useBoundedDrag.d.ts +125 -0
- package/publish/lib/cjs/Utils/useBoundedDrag.js +380 -0
- package/publish/lib/cjs/Utils/useClickOutside.d.ts +33 -0
- package/publish/lib/cjs/Utils/useClickOutside.js +166 -0
- package/publish/lib/cjs/Utils/useComId.d.ts +6 -0
- package/publish/lib/cjs/Utils/useComId.js +114 -0
- package/publish/lib/cjs/Utils/useDebounce.d.ts +20 -0
- package/publish/lib/cjs/Utils/useDebounce.js +138 -0
- package/publish/lib/cjs/Utils/useDragDropPosition.d.ts +166 -0
- package/publish/lib/cjs/Utils/useDragDropPosition.js +453 -0
- package/publish/lib/cjs/Utils/useDraggable.d.ts +62 -0
- package/publish/lib/cjs/Utils/useDraggable.js +348 -0
- package/publish/lib/cjs/Utils/useHistoryTracker.d.ts +166 -0
- package/publish/lib/cjs/Utils/useHistoryTracker.js +649 -0
- package/publish/lib/cjs/Utils/useInterval.d.ts +5 -0
- package/publish/lib/cjs/Utils/useInterval.js +168 -0
- package/publish/lib/cjs/Utils/useIsMobile.d.ts +2 -0
- package/publish/lib/cjs/Utils/useIsMobile.js +232 -0
- package/publish/lib/cjs/Utils/useKeyPress.d.ts +44 -0
- package/publish/lib/cjs/Utils/useKeyPress.js +200 -0
- package/publish/lib/cjs/Utils/useSessionStorageListener.d.ts +2 -0
- package/publish/lib/cjs/Utils/useSessionStorageListener.js +157 -0
- package/publish/lib/cjs/Utils/useStreamController.d.ts +71 -0
- package/publish/lib/cjs/Utils/useStreamController.js +494 -0
- package/publish/lib/cjs/Utils/useThrottle.d.ts +2 -0
- package/publish/lib/cjs/Utils/useThrottle.js +136 -0
- package/publish/lib/cjs/Utils/useWindowScroll.d.ts +12 -0
- package/publish/lib/cjs/Utils/useWindowScroll.js +217 -0
- package/publish/lib/cjs/Utils/validate.d.ts +53 -0
- package/publish/lib/cjs/Utils/validate.js +536 -0
- package/publish/lib/cjs/Utils/viewport.d.ts +7 -0
- package/publish/lib/cjs/Utils/viewport.js +64 -0
- package/publish/lib/cjs/index.d.ts +49 -0
- package/publish/lib/cjs/index.js +50 -0
- package/publish/lib/css/BackToTop/index.css +34 -0
- package/publish/lib/css/CascadingSelect/index.css +245 -0
- package/publish/lib/css/CascadingSelectE2E/index.css +245 -0
- package/publish/lib/css/Chatbox/index.css +774 -0
- package/publish/lib/css/ColorPicker/index.css +58 -0
- package/publish/lib/css/Date/index.css +434 -0
- package/publish/lib/css/DragDropList/index.css +188 -0
- package/publish/lib/css/DropdownMenu/index.css +151 -0
- package/publish/lib/css/EventCalendar/index.css +300 -0
- package/publish/lib/css/EventCalendarTimeline/index.css +694 -0
- package/publish/lib/css/HorizontalScrollContent/index.css +70 -0
- package/publish/lib/css/LiveSearch/index.css +88 -0
- package/publish/lib/css/MultilevelDropdownMenu/index.css +38 -0
- package/publish/lib/css/MultipleSelect/index.css +313 -0
- package/publish/lib/css/RangeSlider/index.css +150 -0
- package/publish/lib/css/Scrollbar/index.css +176 -0
- package/publish/lib/css/Select/index.css +434 -0
- package/publish/lib/css/ShowMoreLess/index.css +23 -0
- package/publish/lib/css/SplitterPanel/index.css +63 -0
- package/publish/lib/css/Stepper/index.css +250 -0
- package/publish/lib/css/Table/index.css +584 -0
- package/publish/lib/css/TagInput/index.css +91 -0
- package/publish/lib/css/Toast/index.css +149 -0
- package/publish/lib/css/Tooltip/index.css +198 -0
- package/publish/lib/css/Tree/index.css +237 -0
- package/publish/lib/esm/Accordion/Accordion.tsx +185 -0
- package/publish/lib/esm/Accordion/AccordionItem.tsx +248 -0
- package/publish/lib/esm/Accordion/index.tsx +2 -0
- package/publish/lib/esm/BackToTop/index.scss +47 -0
- package/publish/lib/esm/BackToTop/index.tsx +177 -0
- package/publish/lib/esm/CascadingSelect/Group.tsx +83 -0
- package/publish/lib/esm/CascadingSelect/index.scss +330 -0
- package/publish/lib/esm/CascadingSelect/index.tsx +1397 -0
- package/publish/lib/esm/CascadingSelectE2E/Group.tsx +87 -0
- package/publish/lib/esm/CascadingSelectE2E/index.scss +333 -0
- package/publish/lib/esm/CascadingSelectE2E/index.tsx +1684 -0
- package/publish/lib/esm/Chatbox/PureLoader.tsx +47 -0
- package/publish/lib/esm/Chatbox/TypingEffect.tsx +56 -0
- package/publish/lib/esm/Chatbox/index.scss +966 -0
- package/publish/lib/esm/Chatbox/index.tsx +1742 -0
- package/publish/lib/esm/Chatbox/utils/func.ts +180 -0
- package/publish/lib/esm/Checkbox/index.tsx +206 -0
- package/publish/lib/esm/ColorPicker/index.scss +91 -0
- package/publish/lib/esm/ColorPicker/index.tsx +204 -0
- package/publish/lib/esm/Date/Calendar.tsx +723 -0
- package/publish/lib/esm/Date/index.scss +567 -0
- package/publish/lib/esm/Date/index.tsx +1797 -0
- package/publish/lib/esm/Date/localization/en_US.js +13 -0
- package/publish/lib/esm/Date/localization/zh_CN.js +12 -0
- package/publish/lib/esm/DigitalClock/index.tsx +74 -0
- package/publish/lib/esm/DragDropList/index.scss +245 -0
- package/publish/lib/esm/DragDropList/index.tsx +504 -0
- package/publish/lib/esm/DropdownMenu/Option.tsx +55 -0
- package/publish/lib/esm/DropdownMenu/index.scss +205 -0
- package/publish/lib/esm/DropdownMenu/index.tsx +378 -0
- package/publish/lib/esm/DynamicFields/index.tsx +409 -0
- package/publish/lib/esm/EventCalendar/index.scss +407 -0
- package/publish/lib/esm/EventCalendar/index.tsx +1005 -0
- package/publish/lib/esm/EventCalendarTimeline/index.scss +926 -0
- package/publish/lib/esm/EventCalendarTimeline/index.tsx +2686 -0
- package/publish/lib/esm/File/index.tsx +477 -0
- package/publish/lib/esm/HorizontalScrollContent/index.scss +87 -0
- package/publish/lib/esm/HorizontalScrollContent/index.tsx +171 -0
- package/publish/lib/esm/Input/index.tsx +641 -0
- package/publish/lib/esm/LiveSearch/index.scss +129 -0
- package/publish/lib/esm/LiveSearch/index.tsx +1058 -0
- package/publish/lib/esm/MasonryLayout/index.tsx +326 -0
- package/publish/lib/esm/ModalDialog/index.tsx +572 -0
- package/publish/lib/esm/ModeSwitch/index.tsx +82 -0
- package/publish/lib/esm/MultilevelDropdownMenu/ItemList.tsx +265 -0
- package/publish/lib/esm/MultilevelDropdownMenu/index.scss +79 -0
- package/publish/lib/esm/MultilevelDropdownMenu/index.tsx +77 -0
- package/publish/lib/esm/MultipleCheckboxes/index.tsx +849 -0
- package/publish/lib/esm/MultipleSelect/index.scss +398 -0
- package/publish/lib/esm/MultipleSelect/index.tsx +769 -0
- package/publish/lib/esm/MultipleSelect/utils/func.ts +63 -0
- package/publish/lib/esm/NativeSelect/index.tsx +396 -0
- package/publish/lib/esm/NativeSelect/utils/func.ts +51 -0
- package/publish/lib/esm/NumberInput/index.tsx +425 -0
- package/publish/lib/esm/Pagination/index.tsx +286 -0
- package/publish/lib/esm/Pagination/pagination-navigators.tsx +60 -0
- package/publish/lib/esm/Radio/index.tsx +694 -0
- package/publish/lib/esm/RangeSlider/index.scss +186 -0
- package/publish/lib/esm/RangeSlider/index.tsx +241 -0
- package/publish/lib/esm/Refresher/index.tsx +121 -0
- package/publish/lib/esm/RootPortal/index.tsx +59 -0
- package/publish/lib/esm/ScrollReveal/index.tsx +148 -0
- package/publish/lib/esm/Scrollbar/index.scss +221 -0
- package/publish/lib/esm/Scrollbar/index.tsx +561 -0
- package/publish/lib/esm/SearchBar/index.tsx +252 -0
- package/publish/lib/esm/Select/index.scss +639 -0
- package/publish/lib/esm/Select/index.tsx +3104 -0
- package/publish/lib/esm/Select/utils/func.ts +98 -0
- package/publish/lib/esm/ShowMoreLess/index.scss +27 -0
- package/publish/lib/esm/ShowMoreLess/index.tsx +145 -0
- package/publish/lib/esm/SplitterPanel/index.scss +82 -0
- package/publish/lib/esm/SplitterPanel/index.tsx +174 -0
- package/publish/lib/esm/Stepper/index.scss +315 -0
- package/publish/lib/esm/Stepper/index.tsx +325 -0
- package/publish/lib/esm/Switch/index.tsx +149 -0
- package/publish/lib/esm/Table/Table.tsx +351 -0
- package/publish/lib/esm/Table/TableBody.tsx +41 -0
- package/publish/lib/esm/Table/TableCaption.tsx +34 -0
- package/publish/lib/esm/Table/TableCell.tsx +126 -0
- package/publish/lib/esm/Table/TableColgroup.tsx +38 -0
- package/publish/lib/esm/Table/TableContext.tsx +26 -0
- package/publish/lib/esm/Table/TableFoot.tsx +28 -0
- package/publish/lib/esm/Table/TableHead.tsx +28 -0
- package/publish/lib/esm/Table/TableRow.tsx +76 -0
- package/publish/lib/esm/Table/index.scss +418 -0
- package/publish/lib/esm/Table/index.tsx +14 -0
- package/publish/lib/esm/Table/utils/DragHandleSprite.tsx +46 -0
- package/publish/lib/esm/Table/utils/SortSprite.tsx +63 -0
- package/publish/lib/esm/Table/utils/TableFilter.tsx +56 -0
- package/publish/lib/esm/Table/utils/ToggleSelection.tsx +255 -0
- package/publish/lib/esm/Table/utils/func.ts +182 -0
- package/publish/lib/esm/Table/utils/hooks/useTableDraggable.tsx +342 -0
- package/publish/lib/esm/Table/utils/hooks/useTableKeyPress.tsx +255 -0
- package/publish/lib/esm/Table/utils/hooks/useTableResponsive.tsx +92 -0
- package/publish/lib/esm/Table/utils/hooks/useTableSort.tsx +187 -0
- package/publish/lib/esm/Tabs/TabList.tsx +50 -0
- package/publish/lib/esm/Tabs/TabPanel.tsx +44 -0
- package/publish/lib/esm/Tabs/Tabs.tsx +282 -0
- package/publish/lib/esm/Tabs/index.tsx +3 -0
- package/publish/lib/esm/TagInput/index.scss +126 -0
- package/publish/lib/esm/TagInput/index.tsx +379 -0
- package/publish/lib/esm/Textarea/index.tsx +621 -0
- package/publish/lib/esm/Toast/Item.tsx +165 -0
- package/publish/lib/esm/Toast/Toast.tsx +391 -0
- package/publish/lib/esm/Toast/ToastContext.tsx +104 -0
- package/publish/lib/esm/Toast/__toast.vanilla.js +422 -0
- package/publish/lib/esm/Toast/index.scss +197 -0
- package/publish/lib/esm/Toast/index.tsx +3 -0
- package/publish/lib/esm/Toast/types.ts +60 -0
- package/publish/lib/esm/Toast/useToast.tsx +72 -0
- package/publish/lib/esm/Tooltip/index.scss +272 -0
- package/publish/lib/esm/Tooltip/index.tsx +416 -0
- package/publish/lib/esm/Tree/TreeList.tsx +600 -0
- package/publish/lib/esm/Tree/index.scss +384 -0
- package/publish/lib/esm/Tree/index.tsx +661 -0
- package/publish/lib/esm/Tree/init-height.tsx +40 -0
- package/publish/lib/esm/Tree/utils/func.ts +15 -0
- package/publish/lib/esm/Utils/hooks/useAutosizeTextArea.tsx +131 -0
- package/publish/lib/esm/Utils/hooks/useBoundedDrag.tsx +301 -0
- package/publish/lib/esm/Utils/hooks/useClickOutside.tsx +69 -0
- package/publish/lib/esm/Utils/hooks/useComId.tsx +13 -0
- package/publish/lib/esm/Utils/hooks/useDebounce.tsx +40 -0
- package/publish/lib/esm/Utils/hooks/useDragDropPosition.tsx +417 -0
- package/publish/lib/esm/Utils/hooks/useDraggable.tsx +265 -0
- package/publish/lib/esm/Utils/hooks/useHistoryTracker.tsx +554 -0
- package/publish/lib/esm/Utils/hooks/useInterval.tsx +74 -0
- package/publish/lib/esm/Utils/hooks/useIsMobile.tsx +139 -0
- package/publish/lib/esm/Utils/hooks/useKeyPress.tsx +104 -0
- package/publish/lib/esm/Utils/hooks/useSessionStorageListener.tsx +45 -0
- package/publish/lib/esm/Utils/hooks/useStreamController.tsx +277 -0
- package/publish/lib/esm/Utils/hooks/useThrottle.tsx +39 -0
- package/publish/lib/esm/Utils/hooks/useWindowScroll.tsx +83 -0
- package/publish/lib/esm/Utils/libs/anim.ts +96 -0
- package/publish/lib/esm/Utils/libs/buffer.ts +262 -0
- package/publish/lib/esm/Utils/libs/cls.ts +64 -0
- package/publish/lib/esm/Utils/libs/convert.ts +59 -0
- package/publish/lib/esm/Utils/libs/date.ts +598 -0
- package/publish/lib/esm/Utils/libs/dom.ts +150 -0
- package/publish/lib/esm/Utils/libs/easing.ts +201 -0
- package/publish/lib/esm/Utils/libs/extract.ts +160 -0
- package/publish/lib/esm/Utils/libs/format-string.ts +116 -0
- package/publish/lib/esm/Utils/libs/formdata.ts +93 -0
- package/publish/lib/esm/Utils/libs/getElementProperty.ts +150 -0
- package/publish/lib/esm/Utils/libs/guid.ts +16 -0
- package/publish/lib/esm/Utils/libs/initDefaultOptions.ts +43 -0
- package/publish/lib/esm/Utils/libs/inputsCalculation.ts +160 -0
- package/publish/lib/esm/Utils/libs/math.ts +276 -0
- package/publish/lib/esm/Utils/libs/object.ts +68 -0
- package/publish/lib/esm/Utils/libs/os.ts +63 -0
- package/publish/lib/esm/Utils/libs/performance.ts +47 -0
- package/publish/lib/esm/Utils/libs/sanitize.ts +55 -0
- package/publish/lib/esm/Utils/libs/time.ts +139 -0
- package/publish/lib/esm/Utils/libs/tree.ts +119 -0
- package/publish/lib/esm/Utils/libs/validate.ts +434 -0
- package/publish/lib/esm/Utils/libs/viewport.ts +20 -0
- package/publish/lib/esm/Utils/plugins/bodyScrollLock.ts +286 -0
- package/publish/lib/esm/index.js +47 -0
- package/publish/package.json +1 -0
- /package/{Accordion → publish/Accordion}/index.d.ts +0 -0
- /package/{Accordion → publish/Accordion}/index.js +0 -0
- /package/{BackToTop → publish/BackToTop}/index.css +0 -0
- /package/{BackToTop → publish/BackToTop}/index.d.ts +0 -0
- /package/{BackToTop → publish/BackToTop}/index.js +0 -0
- /package/{CascadingSelect → publish/CascadingSelect}/index.css +0 -0
- /package/{CascadingSelect → publish/CascadingSelect}/index.d.ts +0 -0
- /package/{CascadingSelect → publish/CascadingSelect}/index.js +0 -0
- /package/{CascadingSelectE2E → publish/CascadingSelectE2E}/index.css +0 -0
- /package/{CascadingSelectE2E → publish/CascadingSelectE2E}/index.d.ts +0 -0
- /package/{CascadingSelectE2E → publish/CascadingSelectE2E}/index.js +0 -0
- /package/{Chatbox → publish/Chatbox}/index.css +0 -0
- /package/{Chatbox → publish/Chatbox}/index.d.ts +0 -0
- /package/{Chatbox → publish/Chatbox}/index.js +0 -0
- /package/{Checkbox → publish/Checkbox}/index.d.ts +0 -0
- /package/{Checkbox → publish/Checkbox}/index.js +0 -0
- /package/{ColorPicker → publish/ColorPicker}/index.css +0 -0
- /package/{ColorPicker → publish/ColorPicker}/index.d.ts +0 -0
- /package/{ColorPicker → publish/ColorPicker}/index.js +0 -0
- /package/{Date → publish/Date}/index.css +0 -0
- /package/{Date → publish/Date}/index.d.ts +0 -0
- /package/{Date → publish/Date}/index.js +0 -0
- /package/{DigitalClock → publish/DigitalClock}/index.d.ts +0 -0
- /package/{DigitalClock → publish/DigitalClock}/index.js +0 -0
- /package/{DragDropList → publish/DragDropList}/index.css +0 -0
- /package/{DragDropList → publish/DragDropList}/index.d.ts +0 -0
- /package/{DragDropList → publish/DragDropList}/index.js +0 -0
- /package/{DropdownMenu → publish/DropdownMenu}/index.css +0 -0
- /package/{DropdownMenu → publish/DropdownMenu}/index.d.ts +0 -0
- /package/{DropdownMenu → publish/DropdownMenu}/index.js +0 -0
- /package/{DynamicFields → publish/DynamicFields}/index.d.ts +0 -0
- /package/{EventCalendar → publish/EventCalendar}/index.css +0 -0
- /package/{EventCalendar → publish/EventCalendar}/index.d.ts +0 -0
- /package/{EventCalendar → publish/EventCalendar}/index.js +0 -0
- /package/{EventCalendarTimeline → publish/EventCalendarTimeline}/index.css +0 -0
- /package/{EventCalendarTimeline → publish/EventCalendarTimeline}/index.d.ts +0 -0
- /package/{EventCalendarTimeline → publish/EventCalendarTimeline}/index.js +0 -0
- /package/{File → publish/File}/index.d.ts +0 -0
- /package/{File → publish/File}/index.js +0 -0
- /package/{HorizontalScrollContent → publish/HorizontalScrollContent}/index.css +0 -0
- /package/{HorizontalScrollContent → publish/HorizontalScrollContent}/index.d.ts +0 -0
- /package/{HorizontalScrollContent → publish/HorizontalScrollContent}/index.js +0 -0
- /package/{Input → publish/Input}/index.d.ts +0 -0
- /package/{Input → publish/Input}/index.js +0 -0
- /package/{LiveSearch → publish/LiveSearch}/index.css +0 -0
- /package/{LiveSearch → publish/LiveSearch}/index.d.ts +0 -0
- /package/{LiveSearch → publish/LiveSearch}/index.js +0 -0
- /package/{MasonryLayout → publish/MasonryLayout}/index.d.ts +0 -0
- /package/{MasonryLayout → publish/MasonryLayout}/index.js +0 -0
- /package/{ModalDialog → publish/ModalDialog}/index.d.ts +0 -0
- /package/{ModalDialog → publish/ModalDialog}/index.js +0 -0
- /package/{ModeSwitch → publish/ModeSwitch}/index.d.ts +0 -0
- /package/{ModeSwitch → publish/ModeSwitch}/index.js +0 -0
- /package/{MultilevelDropdownMenu → publish/MultilevelDropdownMenu}/index.css +0 -0
- /package/{MultilevelDropdownMenu → publish/MultilevelDropdownMenu}/index.d.ts +0 -0
- /package/{MultilevelDropdownMenu → publish/MultilevelDropdownMenu}/index.js +0 -0
- /package/{MultipleCheckboxes → publish/MultipleCheckboxes}/index.d.ts +0 -0
- /package/{MultipleCheckboxes → publish/MultipleCheckboxes}/index.js +0 -0
- /package/{MultipleSelect → publish/MultipleSelect}/index.css +0 -0
- /package/{MultipleSelect → publish/MultipleSelect}/index.d.ts +0 -0
- /package/{MultipleSelect → publish/MultipleSelect}/index.js +0 -0
- /package/{NativeSelect → publish/NativeSelect}/index.d.ts +0 -0
- /package/{NativeSelect → publish/NativeSelect}/index.js +0 -0
- /package/{NumberInput → publish/NumberInput}/index.d.ts +0 -0
- /package/{NumberInput → publish/NumberInput}/index.js +0 -0
- /package/{Pagination → publish/Pagination}/index.d.ts +0 -0
- /package/{Pagination → publish/Pagination}/index.js +0 -0
- /package/{Radio → publish/Radio}/index.d.ts +0 -0
- /package/{Radio → publish/Radio}/index.js +0 -0
- /package/{RangeSlider → publish/RangeSlider}/index.css +0 -0
- /package/{RangeSlider → publish/RangeSlider}/index.d.ts +0 -0
- /package/{RangeSlider → publish/RangeSlider}/index.js +0 -0
- /package/{Refresher → publish/Refresher}/index.d.ts +0 -0
- /package/{Refresher → publish/Refresher}/index.js +0 -0
- /package/{RootPortal → publish/RootPortal}/index.d.ts +0 -0
- /package/{RootPortal → publish/RootPortal}/index.js +0 -0
- /package/{ScrollReveal → publish/ScrollReveal}/index.d.ts +0 -0
- /package/{ScrollReveal → publish/ScrollReveal}/index.js +0 -0
- /package/{Scrollbar → publish/Scrollbar}/index.css +0 -0
- /package/{Scrollbar → publish/Scrollbar}/index.d.ts +0 -0
- /package/{Scrollbar → publish/Scrollbar}/index.js +0 -0
- /package/{SearchBar → publish/SearchBar}/index.d.ts +0 -0
- /package/{SearchBar → publish/SearchBar}/index.js +0 -0
- /package/{Select → publish/Select}/index.css +0 -0
- /package/{Select → publish/Select}/index.d.ts +0 -0
- /package/{Select → publish/Select}/index.js +0 -0
- /package/{ShowMoreLess → publish/ShowMoreLess}/index.css +0 -0
- /package/{ShowMoreLess → publish/ShowMoreLess}/index.d.ts +0 -0
- /package/{ShowMoreLess → publish/ShowMoreLess}/index.js +0 -0
- /package/{SplitterPanel → publish/SplitterPanel}/index.css +0 -0
- /package/{SplitterPanel → publish/SplitterPanel}/index.d.ts +0 -0
- /package/{SplitterPanel → publish/SplitterPanel}/index.js +0 -0
- /package/{Stepper → publish/Stepper}/index.css +0 -0
- /package/{Stepper → publish/Stepper}/index.d.ts +0 -0
- /package/{Stepper → publish/Stepper}/index.js +0 -0
- /package/{Switch → publish/Switch}/index.d.ts +0 -0
- /package/{Switch → publish/Switch}/index.js +0 -0
- /package/{Table → publish/Table}/index.css +0 -0
- /package/{Table → publish/Table}/index.d.ts +0 -0
- /package/{Table → publish/Table}/index.js +0 -0
- /package/{Tabs → publish/Tabs}/index.d.ts +0 -0
- /package/{Tabs → publish/Tabs}/index.js +0 -0
- /package/{TagInput → publish/TagInput}/index.css +0 -0
- /package/{TagInput → publish/TagInput}/index.d.ts +0 -0
- /package/{TagInput → publish/TagInput}/index.js +0 -0
- /package/{Textarea → publish/Textarea}/index.d.ts +0 -0
- /package/{Textarea → publish/Textarea}/index.js +0 -0
- /package/{Toast → publish/Toast}/index.css +0 -0
- /package/{Toast → publish/Toast}/index.d.ts +0 -0
- /package/{Toast → publish/Toast}/index.js +0 -0
- /package/{Tooltip → publish/Tooltip}/index.css +0 -0
- /package/{Tooltip → publish/Tooltip}/index.d.ts +0 -0
- /package/{Tooltip → publish/Tooltip}/index.js +0 -0
- /package/{Tree → publish/Tree}/index.css +0 -0
- /package/{Tree → publish/Tree}/index.d.ts +0 -0
- /package/{Tree → publish/Tree}/index.js +0 -0
- /package/{Utils → publish/Utils}/anim.d.ts +0 -0
- /package/{Utils → publish/Utils}/anim.js +0 -0
- /package/{Utils → publish/Utils}/bodyScrollLock.d.ts +0 -0
- /package/{Utils → publish/Utils}/bodyScrollLock.js +0 -0
- /package/{Utils → publish/Utils}/buffer.d.ts +0 -0
- /package/{Utils → publish/Utils}/buffer.js +0 -0
- /package/{Utils → publish/Utils}/cls.d.ts +0 -0
- /package/{Utils → publish/Utils}/cls.js +0 -0
- /package/{Utils → publish/Utils}/convert.d.ts +0 -0
- /package/{Utils → publish/Utils}/convert.js +0 -0
- /package/{Utils → publish/Utils}/date.d.ts +0 -0
- /package/{Utils → publish/Utils}/date.js +0 -0
- /package/{Utils → publish/Utils}/dom.d.ts +0 -0
- /package/{Utils → publish/Utils}/dom.js +0 -0
- /package/{Utils → publish/Utils}/easing.d.ts +0 -0
- /package/{Utils → publish/Utils}/easing.js +0 -0
- /package/{Utils → publish/Utils}/extract.d.ts +0 -0
- /package/{Utils → publish/Utils}/extract.js +0 -0
- /package/{Utils → publish/Utils}/format-string.d.ts +0 -0
- /package/{Utils → publish/Utils}/format-string.js +0 -0
- /package/{Utils → publish/Utils}/formdata.d.ts +0 -0
- /package/{Utils → publish/Utils}/formdata.js +0 -0
- /package/{Utils → publish/Utils}/getElementProperty.d.ts +0 -0
- /package/{Utils → publish/Utils}/getElementProperty.js +0 -0
- /package/{Utils → publish/Utils}/guid.d.ts +0 -0
- /package/{Utils → publish/Utils}/guid.js +0 -0
- /package/{Utils → publish/Utils}/initDefaultOptions.d.ts +0 -0
- /package/{Utils → publish/Utils}/initDefaultOptions.js +0 -0
- /package/{Utils → publish/Utils}/inputsCalculation.d.ts +0 -0
- /package/{Utils → publish/Utils}/inputsCalculation.js +0 -0
- /package/{Utils → publish/Utils}/math.d.ts +0 -0
- /package/{Utils → publish/Utils}/math.js +0 -0
- /package/{Utils → publish/Utils}/object.d.ts +0 -0
- /package/{Utils → publish/Utils}/object.js +0 -0
- /package/{Utils → publish/Utils}/os.d.ts +0 -0
- /package/{Utils → publish/Utils}/os.js +0 -0
- /package/{Utils → publish/Utils}/performance.d.ts +0 -0
- /package/{Utils → publish/Utils}/performance.js +0 -0
- /package/{Utils → publish/Utils}/sanitize.d.ts +0 -0
- /package/{Utils → publish/Utils}/sanitize.js +0 -0
- /package/{Utils → publish/Utils}/time.d.ts +0 -0
- /package/{Utils → publish/Utils}/time.js +0 -0
- /package/{Utils → publish/Utils}/tree.d.ts +0 -0
- /package/{Utils → publish/Utils}/tree.js +0 -0
- /package/{Utils → publish/Utils}/useAutosizeTextArea.d.ts +0 -0
- /package/{Utils → publish/Utils}/useAutosizeTextArea.js +0 -0
- /package/{Utils → publish/Utils}/useBoundedDrag.d.ts +0 -0
- /package/{Utils → publish/Utils}/useBoundedDrag.js +0 -0
- /package/{Utils → publish/Utils}/useClickOutside.d.ts +0 -0
- /package/{Utils → publish/Utils}/useClickOutside.js +0 -0
- /package/{Utils → publish/Utils}/useComId.d.ts +0 -0
- /package/{Utils → publish/Utils}/useComId.js +0 -0
- /package/{Utils → publish/Utils}/useDebounce.d.ts +0 -0
- /package/{Utils → publish/Utils}/useDebounce.js +0 -0
- /package/{Utils → publish/Utils}/useDragDropPosition.d.ts +0 -0
- /package/{Utils → publish/Utils}/useDragDropPosition.js +0 -0
- /package/{Utils → publish/Utils}/useDraggable.d.ts +0 -0
- /package/{Utils → publish/Utils}/useDraggable.js +0 -0
- /package/{Utils → publish/Utils}/useHistoryTracker.d.ts +0 -0
- /package/{Utils → publish/Utils}/useHistoryTracker.js +0 -0
- /package/{Utils → publish/Utils}/useInterval.d.ts +0 -0
- /package/{Utils → publish/Utils}/useInterval.js +0 -0
- /package/{Utils → publish/Utils}/useIsMobile.d.ts +0 -0
- /package/{Utils → publish/Utils}/useIsMobile.js +0 -0
- /package/{Utils → publish/Utils}/useKeyPress.d.ts +0 -0
- /package/{Utils → publish/Utils}/useKeyPress.js +0 -0
- /package/{Utils → publish/Utils}/useSessionStorageListener.d.ts +0 -0
- /package/{Utils → publish/Utils}/useSessionStorageListener.js +0 -0
- /package/{Utils → publish/Utils}/useStreamController.d.ts +0 -0
- /package/{Utils → publish/Utils}/useStreamController.js +0 -0
- /package/{Utils → publish/Utils}/useThrottle.d.ts +0 -0
- /package/{Utils → publish/Utils}/useThrottle.js +0 -0
- /package/{Utils → publish/Utils}/useWindowScroll.d.ts +0 -0
- /package/{Utils → publish/Utils}/useWindowScroll.js +0 -0
- /package/{Utils → publish/Utils}/validate.d.ts +0 -0
- /package/{Utils → publish/Utils}/validate.js +0 -0
- /package/{Utils → publish/Utils}/viewport.d.ts +0 -0
- /package/{Utils → publish/Utils}/viewport.js +0 -0
- /package/{all.d.ts → publish/all.d.ts} +0 -0
- /package/{all.js → publish/all.js} +0 -0
package/.gitattributes
ADDED
package/README.md
CHANGED
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
# Funda UI
|
|
2
2
|
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="logo.png" alt="Funda UI" width="180" >
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
|
|
3
8
|
React components using pure Bootstrap 5+ which has undergone complex business testing and is easy to integrate with any API. You can load Bootstrap css libraries separately in your project.
|
|
4
9
|
|
|
5
10
|
All components have undergone complex business verification and provide multiple examples.
|
|
6
11
|
|
|
7
12
|
|
|
13
|
+
<p align="center">
|
|
14
|
+
<img src="preview.png" alt="Funda UI" >
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
8
19
|
---
|
|
9
20
|
|
|
10
21
|
- [Documentation](https://uiux.cc/funda-ui-doc)
|
|
@@ -13,6 +24,7 @@ All components have undergone complex business verification and provide multiple
|
|
|
13
24
|
|
|
14
25
|
|
|
15
26
|
|
|
27
|
+
|
|
16
28
|
## Key Features
|
|
17
29
|
|
|
18
30
|
1. Simplify the assignment method of diversified data.
|
|
@@ -22,7 +34,6 @@ All components have undergone complex business verification and provide multiple
|
|
|
22
34
|
5. Do not embed css-in-js, directly use external CSS styles to completely change the component style.
|
|
23
35
|
|
|
24
36
|
|
|
25
|
-
|
|
26
37
|
## Components List
|
|
27
38
|
|
|
28
39
|
Here is a table of the components and their status.
|
|
@@ -62,6 +73,8 @@ Here is a table of the components and their status.
|
|
|
62
73
|
| [Stepper ✅](packages/Stepper/README.md) | | | | |
|
|
63
74
|
|
|
64
75
|
|
|
76
|
+
|
|
77
|
+
|
|
65
78
|
## Usage
|
|
66
79
|
|
|
67
80
|
**Step 1**. You need to install it:
|
|
@@ -70,17 +83,27 @@ Here is a table of the components and their status.
|
|
|
70
83
|
$ npm i funda-ui
|
|
71
84
|
```
|
|
72
85
|
|
|
86
|
+
or
|
|
87
|
+
|
|
88
|
+
```sh
|
|
89
|
+
$ pnpm add funda-ui
|
|
90
|
+
```
|
|
91
|
+
|
|
73
92
|
**Step 2**. Using Bootstrap CSS together (recommended)
|
|
74
93
|
|
|
94
|
+
[Download bootstrap](https://github.com/twbs/bootstrap)
|
|
95
|
+
|
|
75
96
|
```html
|
|
76
97
|
<link href="./bootstrap.min.css" rel="stylesheet"/>
|
|
77
98
|
```
|
|
78
99
|
|
|
100
|
+
> You could remove Bootstrap's styles. All components support setting Bootstrap's default class names through `**ClassName` attributes.
|
|
79
101
|
|
|
80
|
-
**Step 3**. import required components as required
|
|
102
|
+
**Step 3**. import required components as required
|
|
81
103
|
|
|
82
104
|
> If the component does not have a CSS file, it can not be imported, or use own CSS.
|
|
83
105
|
|
|
106
|
+
|
|
84
107
|
```js
|
|
85
108
|
import Input from 'funda-ui/Input';
|
|
86
109
|
import Textarea from 'funda-ui/Textarea';
|
|
@@ -322,6 +345,97 @@ export default () => {
|
|
|
322
345
|
```
|
|
323
346
|
|
|
324
347
|
|
|
348
|
+
## Getting Started
|
|
349
|
+
|
|
350
|
+
Make sure if Node 14+ is installed on your computer.
|
|
351
|
+
|
|
352
|
+
### Step 1: Create a new Lerna workspace by running:
|
|
353
|
+
|
|
354
|
+
```sh
|
|
355
|
+
$ cd /{your_directory}/funda-ui
|
|
356
|
+
$ npx lerna init
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
### Step 2: Install dependencies (Required)
|
|
361
|
+
|
|
362
|
+
It will automatically install the dependencies of all resources in `packages/` without duplication.
|
|
363
|
+
|
|
364
|
+
```sh
|
|
365
|
+
$ npm install
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
### Step 3: To open the visualization, run:
|
|
370
|
+
|
|
371
|
+
```sh
|
|
372
|
+
$ npx nx graph
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Step 4: To build all projects, run
|
|
376
|
+
|
|
377
|
+
```sh
|
|
378
|
+
$ npx lerna run build
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
or Build the package you want (recommend):
|
|
382
|
+
|
|
383
|
+
```sh
|
|
384
|
+
$ npx lerna run build --scope=plugin-1 --scope=plugin-2
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
Please do not install **lerna** globally to use `lerna run build`
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
### Step 5: (optional) Use a custom script like:
|
|
391
|
+
|
|
392
|
+
```sh
|
|
393
|
+
$ npx lerna exec npm run export --scope=plugin-2
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
## Publish the lib of components, it will hang on NPM:
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
```sh
|
|
401
|
+
$ npm run build:lib
|
|
402
|
+
$ npm run build:publish
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
> **(Optional) Update Utils**
|
|
407
|
+
>
|
|
408
|
+
> ```sh
|
|
409
|
+
> $ npx lerna run build --scope=funda-utils
|
|
410
|
+
> $ npm i
|
|
411
|
+
> $ npx lerna run build
|
|
412
|
+
> ```
|
|
413
|
+
>
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
> **(Optional) Manually generate `.d.ts` files, you can execute**
|
|
418
|
+
>
|
|
419
|
+
> ```sh
|
|
420
|
+
> $ npx -p typescript tsc lib/cjs/*.js --declaration --allowJs --emitDeclarationOnly
|
|
421
|
+
> ```
|
|
422
|
+
>
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
## Contributing
|
|
426
|
+
|
|
427
|
+
- [Lerna](https://github.com/lerna/lerna)
|
|
428
|
+
- [Bootstrap](https://getbootstrap.com/)
|
|
429
|
+
- [React](https://react.dev/)
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
## Inspiration and References
|
|
433
|
+
|
|
434
|
+
This component library is inspired by several open-source projects such as [react-bootstrap](https://react-bootstrap.netlify.app), [Ant Design](https://ant.design), [MUI](https://mui.com), and [shadcn/ui](https://ui.shadcn.com). It is an open-source plugin library designed as a learning-to-practice project.
|
|
435
|
+
|
|
436
|
+
The library does **not** contain any personal or company-specific business logic. It serves purely as an auxiliary tool to help efficiently and reliably develop company applications.
|
|
437
|
+
|
|
438
|
+
|
|
325
439
|
## Licensing
|
|
326
440
|
|
|
327
441
|
Licensed under the [MIT](https://opensource.org/licenses/MIT).
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
# Funda UI
|
|
2
|
+
|
|
3
|
+
React components using pure Bootstrap 5+ which has undergone complex business testing and is easy to integrate with any API. You can load Bootstrap css libraries separately in your project.
|
|
4
|
+
|
|
5
|
+
All components have undergone complex business verification and provide multiple examples.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
- [Documentation](https://uiux.cc/funda-ui-doc)
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## Key Features
|
|
17
|
+
|
|
18
|
+
1. Simplify the assignment method of diversified data.
|
|
19
|
+
2. Components are compatible with `gRPC`, `REST APIs`, `GraphQL` self-packaging, uniformly use [Classes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) and their methods to introduce interfaces
|
|
20
|
+
3. Enhanced user interaction, flexible use in asynchronous and synchronous states
|
|
21
|
+
4. Introduce appropriate component `.css` files as needed, only for some components with special needs. Most of them can directly use Bootstrap's official style sheet. Styles are performant and easy to override.
|
|
22
|
+
5. Do not embed css-in-js, directly use external CSS styles to completely change the component style.
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## Components List
|
|
27
|
+
|
|
28
|
+
Here is a table of the components and their status.
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
| WEB ELEMENTS | FORMS | INTERACTION | NAVIGATION | LAYOUTS |
|
|
32
|
+
| --- | --- | --- | --- | --- |
|
|
33
|
+
| [Accordion ✅](packages/Accordion/README.md) | [Input ✅](packages/Input/README.md) | [Infinite Scroll ❏](packages/InfiniteScroll/README.md) |[Multilevel Dropdown Menu ✅](packages/MultilevelDropdownMenu/README.md) | [MasonryLayout ✅](packages/MasonryLayout/README.md) |
|
|
34
|
+
| [Accordion Slider ❏](packages/AccordionSlider/README.md) | [Number Input ✅](packages/NumberInput/README.md) | [Image Perspective Hover ❏](packages/ImagePerspectiveHover/README.md) | [Dropdown Menu ✅](packages/DropdownMenu/README.md) | [RootPortal ✅](packages/RootPortal/README.md) |
|
|
35
|
+
| [Back To Top ✅](packages/BackToTop/README.md) | [Date ✅🔥](packages/Date/README.md) | [Mousewheel Interaction ❏](packages/MousewheelInteraction/README.md) | | [Splitter Panel ✅](packages/SplitterPanel/README.md) |
|
|
36
|
+
| [Button ❏](packages/Button/README.md) | [Tag Input ✅](packages/TagInput/README.md) | [Parallax ❏](packages/Parallax/README.md) | | |
|
|
37
|
+
| [Card ❏](packages/Card/README.md) | [Textarea ✅](packages/Textarea/README.md) | [Scroll Reveal ✅](packages/ScrollReveal/README.md) | | |
|
|
38
|
+
| [Content Placeholder ❏](packages/ContentPlaceholder/README.md) | [NativeSelect ✅](packages/NativeSelect/README.md) | [DragDrop List ✅🔥](packages/DragDropList/README.md) | | |
|
|
39
|
+
| [Counter ❏](packages/Counter/README.md) | [Cascading Select ✅](packages/CascadingSelect/README.md) | [Mode Switch ✅](packages/ModeSwitch/README.md) | | |
|
|
40
|
+
| [Hybrid Content Slider ❏](packages/HybridContentSlider/README.md) | [Cascading Select End-to-end ✅🔥](packages/CascadingSelectE2E/README.md) | [Custom Scrollbar ✅](packages/Scrollbar/README.md) | | |
|
|
41
|
+
| [Image Shapes ❏](packages/ImageShapes/README.md) | [Radio ✅](packages/Radio/README.md) | [Horizontal Scroll Content ✅](packages/HorizontalScrollContent/README.md) | | |
|
|
42
|
+
| [Lightbox ❏](packages/Lightbox/README.md) | [Checkbox ✅](packages/Checkbox/README.md) | [Refresher ✅](packages/Refresher/README.md) | | |
|
|
43
|
+
| [List Bulleted ❏](packages/ListBulleted/README.md) | [Select ✅🔥](packages/Select/README.md) | | | |
|
|
44
|
+
| [Modal Dialog ✅🔥](packages/ModalDialog/README.md) | [Live Search ✅](packages/LiveSearch/README.md) | | | |
|
|
45
|
+
| [Pagination ✅](packages/Pagination/README.md) | [File ✅](packages/File/README.md) | | | |
|
|
46
|
+
| [Table ✅🔥](packages/Table/README.md) | [SearchBar ✅](packages/SearchBar/README.md) | | | |
|
|
47
|
+
| [Periodical Scroll ❏](packages/PeriodicalScroll/README.md) | [Switch ✅](packages/Switch/README.md) | | | |
|
|
48
|
+
| [Progress Bar ❏](packages/ProgressBar/README.md) | [Dynamic Fields ✅🔥](packages/DynamicFields/README.md) | | | |
|
|
49
|
+
| [Rating ❏](packages/Rating/README.md) | [MultipleCheckboxes ✅](packages/MultipleCheckboxes/README.md) | | | |
|
|
50
|
+
| [Seamless Scrolling Element ❏](packages/SeamlessScrollingElement/README.md) | [MultipleSelect ✅🔥](packages/MultipleSelect/README.md) | | | |
|
|
51
|
+
| [Show More Less ✅](packages/ShowMoreLess/README.md) | [Range Slider ✅](packages/RangeSlider/README.md) | | | |
|
|
52
|
+
| [Slideshow ❏](packages/Slideshow/README.md) | [Color Picker ✅](packages/ColorPicker/README.md) | | | |
|
|
53
|
+
| [Tabs ✅](packages/Tabs/README.md) | | | | |
|
|
54
|
+
| [Timeline ❏](packages/Timeline/README.md) | | | | |
|
|
55
|
+
| [Toast ✅](packages/Toast/README.md) | | | | |
|
|
56
|
+
| [Tooltip ✅](packages/Tooltip/README.md) | | | | |
|
|
57
|
+
| [Digital Clock ✅](packages/DigitalClock/README.md) | | | | |
|
|
58
|
+
| [Tree ✅🔥](packages/Tree/README.md) | | | | |
|
|
59
|
+
| [Event Calendar ✅🔥](packages/EventCalendar/README.md) | | | | |
|
|
60
|
+
| [Event Calendar Timeline ✅🔥](packages/EventCalendarTimeline/README.md) | | | | |
|
|
61
|
+
| [Chatbox ✅🔥🤖](packages/Chatbox/README.md) | | | | |
|
|
62
|
+
| [Stepper ✅](packages/Stepper/README.md) | | | | |
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
## Usage
|
|
66
|
+
|
|
67
|
+
**Step 1**. You need to install it:
|
|
68
|
+
|
|
69
|
+
```sh
|
|
70
|
+
$ npm i funda-ui
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Step 2**. Using Bootstrap CSS together (recommended)
|
|
74
|
+
|
|
75
|
+
```html
|
|
76
|
+
<link href="./bootstrap.min.css" rel="stylesheet"/>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
**Step 3**. import required components as required
|
|
81
|
+
|
|
82
|
+
> If the component does not have a CSS file, it can not be imported, or use own CSS.
|
|
83
|
+
|
|
84
|
+
```js
|
|
85
|
+
import Input from 'funda-ui/Input';
|
|
86
|
+
import Textarea from 'funda-ui/Textarea';
|
|
87
|
+
import CascadingSelect from 'funda-ui/CascadingSelect';
|
|
88
|
+
|
|
89
|
+
// component styles
|
|
90
|
+
import 'funda-ui/CascadingSelect/index.css';
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
or
|
|
94
|
+
|
|
95
|
+
```js
|
|
96
|
+
import {
|
|
97
|
+
Input,
|
|
98
|
+
Textarea,
|
|
99
|
+
CascadingSelect
|
|
100
|
+
} from 'funda-ui';
|
|
101
|
+
|
|
102
|
+
// component styles
|
|
103
|
+
import 'funda-ui/CascadingSelect/index.css';
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
or
|
|
107
|
+
|
|
108
|
+
```js
|
|
109
|
+
const Input = require('funda-ui').Input;
|
|
110
|
+
const Textarea = require('funda-ui').Textarea;
|
|
111
|
+
const CascadingSelect = require('funda-ui').CascadingSelect;
|
|
112
|
+
|
|
113
|
+
// component styles
|
|
114
|
+
import 'funda-ui/CascadingSelect/index.css';
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
## Collecting Data
|
|
120
|
+
|
|
121
|
+
### Basic
|
|
122
|
+
|
|
123
|
+
Use `useState()` to store data.
|
|
124
|
+
|
|
125
|
+
```js
|
|
126
|
+
import React, { useState } from 'react';
|
|
127
|
+
import Input from 'funda-ui/Input';
|
|
128
|
+
import Select, { OptionConfig, MultiSelectValue } from 'funda-ui/Select';
|
|
129
|
+
|
|
130
|
+
// component styles
|
|
131
|
+
import 'funda-ui/Select/index.css';
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
interface Config {
|
|
135
|
+
name: string;
|
|
136
|
+
role: boolean;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
export default () => {
|
|
141
|
+
// Consolidated config state
|
|
142
|
+
const [config, setConfig] = useState<Config>({
|
|
143
|
+
name: '',
|
|
144
|
+
role: '',
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
const updateConfig = (newConfig: Partial<Config>) => {
|
|
148
|
+
setConfig(prev => ({ ...prev, ...newConfig }));
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
const handleSubmit = (e: React.MouseEvent<HTMLButtonElement>) => {
|
|
153
|
+
e.preventDefault();
|
|
154
|
+
alert(`Name: ${config.name}, Role: ${config.role}`);
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
return (
|
|
158
|
+
<form onSubmit={handleSubmit}>
|
|
159
|
+
<div>
|
|
160
|
+
|
|
161
|
+
<Input
|
|
162
|
+
name="name"
|
|
163
|
+
label="Name"
|
|
164
|
+
onChange={(e: React.MouseEvent, onComposition: any, el: any, value: string) => {
|
|
165
|
+
updateConfig({ name: value });
|
|
166
|
+
}}
|
|
167
|
+
/>
|
|
168
|
+
</div>
|
|
169
|
+
|
|
170
|
+
<div>
|
|
171
|
+
|
|
172
|
+
<Select
|
|
173
|
+
label="Role"
|
|
174
|
+
placeholder="Select"
|
|
175
|
+
name="role"
|
|
176
|
+
options={[
|
|
177
|
+
{"label": "Admin","value": "admin","queryString": ""},
|
|
178
|
+
{"label": "User","value": "user","queryString": ""}
|
|
179
|
+
]}
|
|
180
|
+
onChange={(e: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>, e2: HTMLElement, val: OptionConfig | MultiSelectValue): void => {
|
|
181
|
+
updateConfig({ role: (val as OptionConfig).value });
|
|
182
|
+
}}
|
|
183
|
+
/>
|
|
184
|
+
|
|
185
|
+
</div>
|
|
186
|
+
|
|
187
|
+
<button className="btn btn-outline-primary btn-sm mb-2" type="submit">Submit</button>
|
|
188
|
+
</form>
|
|
189
|
+
);
|
|
190
|
+
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
### Advanced
|
|
198
|
+
|
|
199
|
+
Using vanilla JS to collect the value of name is faster and easier.
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
```js
|
|
203
|
+
import React, { useRef } from "react";
|
|
204
|
+
import Input from 'funda-ui/Input';
|
|
205
|
+
import Select, { OptionConfig, MultiSelectValue } from 'funda-ui/Select';
|
|
206
|
+
|
|
207
|
+
// component styles
|
|
208
|
+
import 'funda-ui/Select/index.css';
|
|
209
|
+
|
|
210
|
+
// utils
|
|
211
|
+
import { serializeArray } from 'funda-ui/Utils/formdata';
|
|
212
|
+
import { isEmpty } from "funda-ui/Utils/validate";
|
|
213
|
+
|
|
214
|
+
interface FormField {
|
|
215
|
+
name: string;
|
|
216
|
+
value: string;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
interface FormData {
|
|
220
|
+
[key: string]: string;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
type CallbackFunction = (formData: FormData) => void;
|
|
224
|
+
type ErrorCallbackFunction = () => void;
|
|
225
|
+
|
|
226
|
+
function customValidate(
|
|
227
|
+
form: HTMLFormElement | HTMLDivElement | null,
|
|
228
|
+
callback?: CallbackFunction,
|
|
229
|
+
errCallback?: ErrorCallbackFunction
|
|
230
|
+
): void {
|
|
231
|
+
if (form === null) return;
|
|
232
|
+
|
|
233
|
+
const formData: FormData = {};
|
|
234
|
+
const fieldsData: FormField[] = serializeArray(form);
|
|
235
|
+
let fieldsCheck: boolean = true;
|
|
236
|
+
let customFieldsCheck: boolean = true;
|
|
237
|
+
|
|
238
|
+
// Step 1: everything is ok
|
|
239
|
+
//-------------
|
|
240
|
+
// required fields
|
|
241
|
+
const emptyFieldsCheck = fieldsData.every((item: FormField) => {
|
|
242
|
+
if (item.name !== null && item.name !== '') {
|
|
243
|
+
formData[item.name] = item.value;
|
|
244
|
+
|
|
245
|
+
const _field = form.querySelector<HTMLElement>(`[name="${item.name}"]`);
|
|
246
|
+
if (!_field) return true;
|
|
247
|
+
|
|
248
|
+
const fieldRequired = _field.getAttribute('required');
|
|
249
|
+
if (fieldRequired !== null && fieldRequired !== 'false') {
|
|
250
|
+
if (item.value === '' || isEmpty(item.value)) {
|
|
251
|
+
const _label = _field.dataset.requiredTitle;
|
|
252
|
+
alert(`${_label} cannot be empty!`);
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
errCallback?.();
|
|
259
|
+
|
|
260
|
+
return true;
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
// merged result
|
|
264
|
+
fieldsCheck = [emptyFieldsCheck, customFieldsCheck].every((item: boolean) => {
|
|
265
|
+
return item;
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
// Step 2: everything is ok
|
|
269
|
+
//-------------
|
|
270
|
+
if (fieldsCheck) {
|
|
271
|
+
callback?.(formData);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
export default () => {
|
|
278
|
+
const formRef = useRef<HTMLDivElement>(null);
|
|
279
|
+
|
|
280
|
+
const handleSubmit = (e: React.MouseEvent<HTMLButtonElement>) => {
|
|
281
|
+
e.preventDefault();
|
|
282
|
+
|
|
283
|
+
customValidate(
|
|
284
|
+
formRef.current,
|
|
285
|
+
(formData: any[]) => {
|
|
286
|
+
alert(JSON.stringify(formData));
|
|
287
|
+
},
|
|
288
|
+
() => { }
|
|
289
|
+
);
|
|
290
|
+
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
return (
|
|
294
|
+
<div ref={formRef}>
|
|
295
|
+
<div>
|
|
296
|
+
|
|
297
|
+
<Input
|
|
298
|
+
name="name"
|
|
299
|
+
label="Name"
|
|
300
|
+
/>
|
|
301
|
+
</div>
|
|
302
|
+
|
|
303
|
+
<div>
|
|
304
|
+
|
|
305
|
+
<Select
|
|
306
|
+
label="Role"
|
|
307
|
+
placeholder="Select"
|
|
308
|
+
name="role"
|
|
309
|
+
options={[
|
|
310
|
+
{"label": "Admin","value": "admin","queryString": ""},
|
|
311
|
+
{"label": "User","value": "user","queryString": ""}
|
|
312
|
+
]}
|
|
313
|
+
/>
|
|
314
|
+
|
|
315
|
+
</div>
|
|
316
|
+
|
|
317
|
+
<button className="btn btn-outline-primary btn-sm mb-2" type="button" onClick={handleSubmit}>Submit</button>
|
|
318
|
+
</div>
|
|
319
|
+
);
|
|
320
|
+
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
## Licensing
|
|
326
|
+
|
|
327
|
+
Licensed under the [MIT](https://opensource.org/licenses/MIT).
|
|
328
|
+
|
|
@@ -568,6 +568,9 @@ var DynamicFields = function DynamicFields(props) {
|
|
|
568
568
|
// exposes the following methods
|
|
569
569
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useImperativeHandle)(contentRef, function () {
|
|
570
570
|
return {
|
|
571
|
+
addNew: function addNew() {
|
|
572
|
+
handleClickAdd(null);
|
|
573
|
+
},
|
|
571
574
|
showAddBtn: function showAddBtn() {
|
|
572
575
|
addBtnRef.current.style.setProperty('display', 'inline', 'important');
|
|
573
576
|
},
|
|
@@ -578,7 +581,9 @@ var DynamicFields = function DynamicFields(props) {
|
|
|
578
581
|
return rootRef.current.querySelectorAll(PER_ROW_DOM_STRING).length;
|
|
579
582
|
}
|
|
580
583
|
};
|
|
581
|
-
}, [contentRef]
|
|
584
|
+
}, [contentRef, handleClickAdd] // required "handleClickAdd"
|
|
585
|
+
);
|
|
586
|
+
|
|
582
587
|
function updateLastItemCls(el, type) {
|
|
583
588
|
if (typeof el === 'undefined') return;
|
|
584
589
|
if (type === 'add') {
|
|
@@ -624,8 +629,11 @@ var DynamicFields = function DynamicFields(props) {
|
|
|
624
629
|
addBtnRef.current.style.setProperty('display', 'none', 'important');
|
|
625
630
|
}
|
|
626
631
|
}
|
|
627
|
-
function handleClickAdd(
|
|
628
|
-
|
|
632
|
+
function handleClickAdd() {
|
|
633
|
+
var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
634
|
+
if (event !== null) {
|
|
635
|
+
if (typeof event !== 'undefined') event.preventDefault();
|
|
636
|
+
}
|
|
629
637
|
|
|
630
638
|
//button status
|
|
631
639
|
checkMaxStatus();
|
|
@@ -101,6 +101,9 @@ const DynamicFields = (props: DynamicFieldsProps) => {
|
|
|
101
101
|
useImperativeHandle(
|
|
102
102
|
contentRef,
|
|
103
103
|
() => ({
|
|
104
|
+
addNew: () => {
|
|
105
|
+
handleClickAdd(null);
|
|
106
|
+
},
|
|
104
107
|
showAddBtn: () => {
|
|
105
108
|
addBtnRef.current.style.setProperty('display', 'inline', 'important');
|
|
106
109
|
},
|
|
@@ -111,7 +114,7 @@ const DynamicFields = (props: DynamicFieldsProps) => {
|
|
|
111
114
|
return rootRef.current.querySelectorAll(PER_ROW_DOM_STRING).length;
|
|
112
115
|
}
|
|
113
116
|
}),
|
|
114
|
-
[contentRef],
|
|
117
|
+
[contentRef, handleClickAdd], // required "handleClickAdd"
|
|
115
118
|
);
|
|
116
119
|
|
|
117
120
|
function updateLastItemCls(el: HTMLDivElement, type: string) {
|
|
@@ -167,9 +170,11 @@ const DynamicFields = (props: DynamicFieldsProps) => {
|
|
|
167
170
|
}
|
|
168
171
|
|
|
169
172
|
|
|
170
|
-
function handleClickAdd(event: any) {
|
|
171
|
-
if (event !== null
|
|
172
|
-
|
|
173
|
+
function handleClickAdd(event: any = null) {
|
|
174
|
+
if (event !== null) {
|
|
175
|
+
if (typeof event !== 'undefined') event.preventDefault();
|
|
176
|
+
}
|
|
177
|
+
|
|
173
178
|
//button status
|
|
174
179
|
checkMaxStatus();
|
|
175
180
|
|
package/logo.png
ADDED
|
Binary file
|