funda-ui 4.7.624 → 4.7.625
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/README.md +2 -116
- package/package.json +1 -591
- package/.gitattributes +0 -2
- package/README_PUBLISH.md +0 -328
- package/logo.png +0 -0
- package/preview.png +0 -0
- package/publish/LICENSE +0 -21
- package/publish/README.md +0 -328
- package/publish/lib/cjs/Accordion/index.d.ts +0 -2
- package/publish/lib/cjs/Accordion/index.js +0 -667
- package/publish/lib/cjs/BackToTop/index.d.ts +0 -17
- package/publish/lib/cjs/BackToTop/index.js +0 -904
- package/publish/lib/cjs/CascadingSelect/index.d.ts +0 -80
- package/publish/lib/cjs/CascadingSelect/index.js +0 -3383
- package/publish/lib/cjs/CascadingSelectE2E/index.d.ts +0 -91
- package/publish/lib/cjs/CascadingSelectE2E/index.js +0 -3988
- package/publish/lib/cjs/Chatbox/index.d.ts +0 -101
- package/publish/lib/cjs/Chatbox/index.js +0 -7037
- package/publish/lib/cjs/Checkbox/index.d.ts +0 -28
- package/publish/lib/cjs/Checkbox/index.js +0 -673
- package/publish/lib/cjs/ColorPicker/index.d.ts +0 -27
- package/publish/lib/cjs/ColorPicker/index.js +0 -662
- package/publish/lib/cjs/Date/index.d.ts +0 -70
- package/publish/lib/cjs/Date/index.js +0 -6368
- package/publish/lib/cjs/DigitalClock/index.d.ts +0 -7
- package/publish/lib/cjs/DigitalClock/index.js +0 -402
- package/publish/lib/cjs/DragDropList/index.d.ts +0 -45
- package/publish/lib/cjs/DragDropList/index.js +0 -1586
- package/publish/lib/cjs/DropdownMenu/index.d.ts +0 -38
- package/publish/lib/cjs/DropdownMenu/index.js +0 -1507
- package/publish/lib/cjs/DynamicFields/index.d.ts +0 -40
- package/publish/lib/cjs/DynamicFields/index.js +0 -818
- package/publish/lib/cjs/EventCalendar/index.d.ts +0 -61
- package/publish/lib/cjs/EventCalendar/index.js +0 -3789
- package/publish/lib/cjs/EventCalendarTimeline/index.d.ts +0 -100
- package/publish/lib/cjs/EventCalendarTimeline/index.js +0 -6141
- package/publish/lib/cjs/File/index.d.ts +0 -40
- package/publish/lib/cjs/File/index.js +0 -1751
- package/publish/lib/cjs/HorizontalScrollContent/index.d.ts +0 -14
- package/publish/lib/cjs/HorizontalScrollContent/index.js +0 -426
- package/publish/lib/cjs/Input/index.d.ts +0 -59
- package/publish/lib/cjs/Input/index.js +0 -1486
- package/publish/lib/cjs/LiveSearch/index.d.ts +0 -70
- package/publish/lib/cjs/LiveSearch/index.js +0 -4180
- package/publish/lib/cjs/MasonryLayout/index.d.ts +0 -14
- package/publish/lib/cjs/MasonryLayout/index.js +0 -689
- package/publish/lib/cjs/ModalDialog/index.d.ts +0 -83
- package/publish/lib/cjs/ModalDialog/index.js +0 -1719
- package/publish/lib/cjs/ModeSwitch/index.d.ts +0 -17
- package/publish/lib/cjs/ModeSwitch/index.js +0 -202
- package/publish/lib/cjs/MultilevelDropdownMenu/index.d.ts +0 -20
- package/publish/lib/cjs/MultilevelDropdownMenu/index.js +0 -930
- package/publish/lib/cjs/MultipleCheckboxes/index.d.ts +0 -66
- package/publish/lib/cjs/MultipleCheckboxes/index.js +0 -2337
- package/publish/lib/cjs/MultipleSelect/index.d.ts +0 -65
- package/publish/lib/cjs/MultipleSelect/index.js +0 -4197
- package/publish/lib/cjs/NativeSelect/index.d.ts +0 -37
- package/publish/lib/cjs/NativeSelect/index.js +0 -2052
- package/publish/lib/cjs/NumberInput/index.d.ts +0 -40
- package/publish/lib/cjs/NumberInput/index.js +0 -1191
- package/publish/lib/cjs/Pagination/index.d.ts +0 -51
- package/publish/lib/cjs/Pagination/index.js +0 -612
- package/publish/lib/cjs/Radio/index.d.ts +0 -45
- package/publish/lib/cjs/Radio/index.js +0 -1838
- package/publish/lib/cjs/RangeSlider/index.d.ts +0 -22
- package/publish/lib/cjs/RangeSlider/index.js +0 -2696
- package/publish/lib/cjs/Refresher/index.d.ts +0 -22
- package/publish/lib/cjs/Refresher/index.js +0 -564
- package/publish/lib/cjs/RootPortal/index.d.ts +0 -9
- package/publish/lib/cjs/RootPortal/index.js +0 -148
- package/publish/lib/cjs/ScrollReveal/index.d.ts +0 -21
- package/publish/lib/cjs/ScrollReveal/index.js +0 -401
- package/publish/lib/cjs/Scrollbar/index.d.ts +0 -17
- package/publish/lib/cjs/Scrollbar/index.js +0 -1107
- package/publish/lib/cjs/SearchBar/index.d.ts +0 -41
- package/publish/lib/cjs/SearchBar/index.js +0 -701
- package/publish/lib/cjs/Select/index.d.ts +0 -107
- package/publish/lib/cjs/Select/index.js +0 -6540
- package/publish/lib/cjs/ShowMoreLess/index.d.ts +0 -36
- package/publish/lib/cjs/ShowMoreLess/index.js +0 -387
- package/publish/lib/cjs/SplitterPanel/index.d.ts +0 -20
- package/publish/lib/cjs/SplitterPanel/index.js +0 -800
- package/publish/lib/cjs/Stepper/index.d.ts +0 -26
- package/publish/lib/cjs/Stepper/index.js +0 -568
- package/publish/lib/cjs/Switch/index.d.ts +0 -25
- package/publish/lib/cjs/Switch/index.js +0 -630
- package/publish/lib/cjs/Table/index.d.ts +0 -12
- package/publish/lib/cjs/Table/index.js +0 -2311
- package/publish/lib/cjs/Tabs/index.d.ts +0 -3
- package/publish/lib/cjs/Tabs/index.js +0 -771
- package/publish/lib/cjs/TagInput/index.d.ts +0 -37
- package/publish/lib/cjs/TagInput/index.js +0 -1227
- package/publish/lib/cjs/Textarea/index.d.ts +0 -50
- package/publish/lib/cjs/Textarea/index.js +0 -1795
- package/publish/lib/cjs/Toast/index.d.ts +0 -3
- package/publish/lib/cjs/Toast/index.js +0 -1345
- package/publish/lib/cjs/Tooltip/index.d.ts +0 -38
- package/publish/lib/cjs/Tooltip/index.js +0 -1778
- package/publish/lib/cjs/Tree/index.d.ts +0 -78
- package/publish/lib/cjs/Tree/index.js +0 -2330
- package/publish/lib/cjs/Utils/anim.d.ts +0 -11
- package/publish/lib/cjs/Utils/anim.js +0 -846
- package/publish/lib/cjs/Utils/bodyScrollLock.d.ts +0 -8
- package/publish/lib/cjs/Utils/bodyScrollLock.js +0 -311
- package/publish/lib/cjs/Utils/buffer.d.ts +0 -67
- package/publish/lib/cjs/Utils/buffer.js +0 -343
- package/publish/lib/cjs/Utils/cls.d.ts +0 -15
- package/publish/lib/cjs/Utils/cls.js +0 -124
- package/publish/lib/cjs/Utils/convert.d.ts +0 -25
- package/publish/lib/cjs/Utils/convert.js +0 -109
- package/publish/lib/cjs/Utils/date.d.ts +0 -227
- package/publish/lib/cjs/Utils/date.js +0 -587
- package/publish/lib/cjs/Utils/dom.d.ts +0 -13
- package/publish/lib/cjs/Utils/dom.js +0 -215
- package/publish/lib/cjs/Utils/easing.d.ts +0 -29
- package/publish/lib/cjs/Utils/easing.js +0 -221
- package/publish/lib/cjs/Utils/extract.d.ts +0 -66
- package/publish/lib/cjs/Utils/extract.js +0 -195
- package/publish/lib/cjs/Utils/format-string.d.ts +0 -65
- package/publish/lib/cjs/Utils/format-string.js +0 -167
- package/publish/lib/cjs/Utils/formdata.d.ts +0 -13
- package/publish/lib/cjs/Utils/formdata.js +0 -131
- package/publish/lib/cjs/Utils/getElementProperty.d.ts +0 -52
- package/publish/lib/cjs/Utils/getElementProperty.js +0 -189
- package/publish/lib/cjs/Utils/guid.d.ts +0 -7
- package/publish/lib/cjs/Utils/guid.js +0 -67
- package/publish/lib/cjs/Utils/initDefaultOptions.d.ts +0 -10
- package/publish/lib/cjs/Utils/initDefaultOptions.js +0 -607
- package/publish/lib/cjs/Utils/inputsCalculation.d.ts +0 -28
- package/publish/lib/cjs/Utils/inputsCalculation.js +0 -188
- package/publish/lib/cjs/Utils/math.d.ts +0 -77
- package/publish/lib/cjs/Utils/math.js +0 -305
- package/publish/lib/cjs/Utils/object.d.ts +0 -18
- package/publish/lib/cjs/Utils/object.js +0 -120
- package/publish/lib/cjs/Utils/os.d.ts +0 -2
- package/publish/lib/cjs/Utils/os.js +0 -104
- package/publish/lib/cjs/Utils/performance.d.ts +0 -3
- package/publish/lib/cjs/Utils/performance.js +0 -94
- package/publish/lib/cjs/Utils/sanitize.d.ts +0 -14
- package/publish/lib/cjs/Utils/sanitize.js +0 -87
- package/publish/lib/cjs/Utils/time.d.ts +0 -40
- package/publish/lib/cjs/Utils/time.js +0 -177
- package/publish/lib/cjs/Utils/tree.d.ts +0 -40
- package/publish/lib/cjs/Utils/tree.js +0 -195
- package/publish/lib/cjs/Utils/useAutosizeTextArea.d.ts +0 -10
- package/publish/lib/cjs/Utils/useAutosizeTextArea.js +0 -231
- package/publish/lib/cjs/Utils/useBoundedDrag.d.ts +0 -125
- package/publish/lib/cjs/Utils/useBoundedDrag.js +0 -380
- package/publish/lib/cjs/Utils/useClickOutside.d.ts +0 -33
- package/publish/lib/cjs/Utils/useClickOutside.js +0 -166
- package/publish/lib/cjs/Utils/useComId.d.ts +0 -6
- package/publish/lib/cjs/Utils/useComId.js +0 -114
- package/publish/lib/cjs/Utils/useDebounce.d.ts +0 -20
- package/publish/lib/cjs/Utils/useDebounce.js +0 -138
- package/publish/lib/cjs/Utils/useDragDropPosition.d.ts +0 -166
- package/publish/lib/cjs/Utils/useDragDropPosition.js +0 -453
- package/publish/lib/cjs/Utils/useDraggable.d.ts +0 -62
- package/publish/lib/cjs/Utils/useDraggable.js +0 -348
- package/publish/lib/cjs/Utils/useHistoryTracker.d.ts +0 -166
- package/publish/lib/cjs/Utils/useHistoryTracker.js +0 -649
- package/publish/lib/cjs/Utils/useInterval.d.ts +0 -5
- package/publish/lib/cjs/Utils/useInterval.js +0 -168
- package/publish/lib/cjs/Utils/useIsMobile.d.ts +0 -2
- package/publish/lib/cjs/Utils/useIsMobile.js +0 -232
- package/publish/lib/cjs/Utils/useKeyPress.d.ts +0 -44
- package/publish/lib/cjs/Utils/useKeyPress.js +0 -200
- package/publish/lib/cjs/Utils/useSessionStorageListener.d.ts +0 -2
- package/publish/lib/cjs/Utils/useSessionStorageListener.js +0 -157
- package/publish/lib/cjs/Utils/useStreamController.d.ts +0 -71
- package/publish/lib/cjs/Utils/useStreamController.js +0 -494
- package/publish/lib/cjs/Utils/useThrottle.d.ts +0 -2
- package/publish/lib/cjs/Utils/useThrottle.js +0 -136
- package/publish/lib/cjs/Utils/useWindowScroll.d.ts +0 -12
- package/publish/lib/cjs/Utils/useWindowScroll.js +0 -217
- package/publish/lib/cjs/Utils/validate.d.ts +0 -53
- package/publish/lib/cjs/Utils/validate.js +0 -536
- package/publish/lib/cjs/Utils/viewport.d.ts +0 -7
- package/publish/lib/cjs/Utils/viewport.js +0 -64
- package/publish/lib/cjs/index.d.ts +0 -49
- package/publish/lib/cjs/index.js +0 -50
- package/publish/lib/css/BackToTop/index.css +0 -34
- package/publish/lib/css/CascadingSelect/index.css +0 -245
- package/publish/lib/css/CascadingSelectE2E/index.css +0 -245
- package/publish/lib/css/Chatbox/index.css +0 -774
- package/publish/lib/css/ColorPicker/index.css +0 -58
- package/publish/lib/css/Date/index.css +0 -434
- package/publish/lib/css/DragDropList/index.css +0 -188
- package/publish/lib/css/DropdownMenu/index.css +0 -151
- package/publish/lib/css/EventCalendar/index.css +0 -300
- package/publish/lib/css/EventCalendarTimeline/index.css +0 -694
- package/publish/lib/css/HorizontalScrollContent/index.css +0 -70
- package/publish/lib/css/LiveSearch/index.css +0 -88
- package/publish/lib/css/MultilevelDropdownMenu/index.css +0 -38
- package/publish/lib/css/MultipleSelect/index.css +0 -313
- package/publish/lib/css/RangeSlider/index.css +0 -150
- package/publish/lib/css/Scrollbar/index.css +0 -176
- package/publish/lib/css/Select/index.css +0 -434
- package/publish/lib/css/ShowMoreLess/index.css +0 -23
- package/publish/lib/css/SplitterPanel/index.css +0 -63
- package/publish/lib/css/Stepper/index.css +0 -250
- package/publish/lib/css/Table/index.css +0 -584
- package/publish/lib/css/TagInput/index.css +0 -91
- package/publish/lib/css/Toast/index.css +0 -149
- package/publish/lib/css/Tooltip/index.css +0 -198
- package/publish/lib/css/Tree/index.css +0 -237
- package/publish/lib/esm/Accordion/Accordion.tsx +0 -185
- package/publish/lib/esm/Accordion/AccordionItem.tsx +0 -248
- package/publish/lib/esm/Accordion/index.tsx +0 -2
- package/publish/lib/esm/BackToTop/index.scss +0 -47
- package/publish/lib/esm/BackToTop/index.tsx +0 -177
- package/publish/lib/esm/CascadingSelect/Group.tsx +0 -83
- package/publish/lib/esm/CascadingSelect/index.scss +0 -330
- package/publish/lib/esm/CascadingSelect/index.tsx +0 -1397
- package/publish/lib/esm/CascadingSelectE2E/Group.tsx +0 -87
- package/publish/lib/esm/CascadingSelectE2E/index.scss +0 -333
- package/publish/lib/esm/CascadingSelectE2E/index.tsx +0 -1684
- package/publish/lib/esm/Chatbox/PureLoader.tsx +0 -47
- package/publish/lib/esm/Chatbox/TypingEffect.tsx +0 -56
- package/publish/lib/esm/Chatbox/index.scss +0 -966
- package/publish/lib/esm/Chatbox/index.tsx +0 -1742
- package/publish/lib/esm/Chatbox/utils/func.ts +0 -180
- package/publish/lib/esm/Checkbox/index.tsx +0 -206
- package/publish/lib/esm/ColorPicker/index.scss +0 -91
- package/publish/lib/esm/ColorPicker/index.tsx +0 -204
- package/publish/lib/esm/Date/Calendar.tsx +0 -723
- package/publish/lib/esm/Date/index.scss +0 -567
- package/publish/lib/esm/Date/index.tsx +0 -1797
- package/publish/lib/esm/Date/localization/en_US.js +0 -13
- package/publish/lib/esm/Date/localization/zh_CN.js +0 -12
- package/publish/lib/esm/DigitalClock/index.tsx +0 -74
- package/publish/lib/esm/DragDropList/index.scss +0 -245
- package/publish/lib/esm/DragDropList/index.tsx +0 -504
- package/publish/lib/esm/DropdownMenu/Option.tsx +0 -55
- package/publish/lib/esm/DropdownMenu/index.scss +0 -205
- package/publish/lib/esm/DropdownMenu/index.tsx +0 -378
- package/publish/lib/esm/DynamicFields/index.tsx +0 -409
- package/publish/lib/esm/EventCalendar/index.scss +0 -407
- package/publish/lib/esm/EventCalendar/index.tsx +0 -1005
- package/publish/lib/esm/EventCalendarTimeline/index.scss +0 -926
- package/publish/lib/esm/EventCalendarTimeline/index.tsx +0 -2686
- package/publish/lib/esm/File/index.tsx +0 -477
- package/publish/lib/esm/HorizontalScrollContent/index.scss +0 -87
- package/publish/lib/esm/HorizontalScrollContent/index.tsx +0 -171
- package/publish/lib/esm/Input/index.tsx +0 -641
- package/publish/lib/esm/LiveSearch/index.scss +0 -129
- package/publish/lib/esm/LiveSearch/index.tsx +0 -1058
- package/publish/lib/esm/MasonryLayout/index.tsx +0 -326
- package/publish/lib/esm/ModalDialog/index.tsx +0 -572
- package/publish/lib/esm/ModeSwitch/index.tsx +0 -82
- package/publish/lib/esm/MultilevelDropdownMenu/ItemList.tsx +0 -265
- package/publish/lib/esm/MultilevelDropdownMenu/index.scss +0 -79
- package/publish/lib/esm/MultilevelDropdownMenu/index.tsx +0 -77
- package/publish/lib/esm/MultipleCheckboxes/index.tsx +0 -849
- package/publish/lib/esm/MultipleSelect/index.scss +0 -398
- package/publish/lib/esm/MultipleSelect/index.tsx +0 -769
- package/publish/lib/esm/MultipleSelect/utils/func.ts +0 -63
- package/publish/lib/esm/NativeSelect/index.tsx +0 -396
- package/publish/lib/esm/NativeSelect/utils/func.ts +0 -51
- package/publish/lib/esm/NumberInput/index.tsx +0 -425
- package/publish/lib/esm/Pagination/index.tsx +0 -286
- package/publish/lib/esm/Pagination/pagination-navigators.tsx +0 -60
- package/publish/lib/esm/Radio/index.tsx +0 -694
- package/publish/lib/esm/RangeSlider/index.scss +0 -186
- package/publish/lib/esm/RangeSlider/index.tsx +0 -241
- package/publish/lib/esm/Refresher/index.tsx +0 -121
- package/publish/lib/esm/RootPortal/index.tsx +0 -59
- package/publish/lib/esm/ScrollReveal/index.tsx +0 -148
- package/publish/lib/esm/Scrollbar/index.scss +0 -221
- package/publish/lib/esm/Scrollbar/index.tsx +0 -561
- package/publish/lib/esm/SearchBar/index.tsx +0 -252
- package/publish/lib/esm/Select/index.scss +0 -639
- package/publish/lib/esm/Select/index.tsx +0 -3104
- package/publish/lib/esm/Select/utils/func.ts +0 -98
- package/publish/lib/esm/ShowMoreLess/index.scss +0 -27
- package/publish/lib/esm/ShowMoreLess/index.tsx +0 -145
- package/publish/lib/esm/SplitterPanel/index.scss +0 -82
- package/publish/lib/esm/SplitterPanel/index.tsx +0 -174
- package/publish/lib/esm/Stepper/index.scss +0 -315
- package/publish/lib/esm/Stepper/index.tsx +0 -325
- package/publish/lib/esm/Switch/index.tsx +0 -149
- package/publish/lib/esm/Table/Table.tsx +0 -351
- package/publish/lib/esm/Table/TableBody.tsx +0 -41
- package/publish/lib/esm/Table/TableCaption.tsx +0 -34
- package/publish/lib/esm/Table/TableCell.tsx +0 -126
- package/publish/lib/esm/Table/TableColgroup.tsx +0 -38
- package/publish/lib/esm/Table/TableContext.tsx +0 -26
- package/publish/lib/esm/Table/TableFoot.tsx +0 -28
- package/publish/lib/esm/Table/TableHead.tsx +0 -28
- package/publish/lib/esm/Table/TableRow.tsx +0 -76
- package/publish/lib/esm/Table/index.scss +0 -418
- package/publish/lib/esm/Table/index.tsx +0 -14
- package/publish/lib/esm/Table/utils/DragHandleSprite.tsx +0 -46
- package/publish/lib/esm/Table/utils/SortSprite.tsx +0 -63
- package/publish/lib/esm/Table/utils/TableFilter.tsx +0 -56
- package/publish/lib/esm/Table/utils/ToggleSelection.tsx +0 -255
- package/publish/lib/esm/Table/utils/func.ts +0 -182
- package/publish/lib/esm/Table/utils/hooks/useTableDraggable.tsx +0 -342
- package/publish/lib/esm/Table/utils/hooks/useTableKeyPress.tsx +0 -255
- package/publish/lib/esm/Table/utils/hooks/useTableResponsive.tsx +0 -92
- package/publish/lib/esm/Table/utils/hooks/useTableSort.tsx +0 -187
- package/publish/lib/esm/Tabs/TabList.tsx +0 -50
- package/publish/lib/esm/Tabs/TabPanel.tsx +0 -44
- package/publish/lib/esm/Tabs/Tabs.tsx +0 -282
- package/publish/lib/esm/Tabs/index.tsx +0 -3
- package/publish/lib/esm/TagInput/index.scss +0 -126
- package/publish/lib/esm/TagInput/index.tsx +0 -379
- package/publish/lib/esm/Textarea/index.tsx +0 -621
- package/publish/lib/esm/Toast/Item.tsx +0 -165
- package/publish/lib/esm/Toast/Toast.tsx +0 -391
- package/publish/lib/esm/Toast/ToastContext.tsx +0 -104
- package/publish/lib/esm/Toast/__toast.vanilla.js +0 -422
- package/publish/lib/esm/Toast/index.scss +0 -197
- package/publish/lib/esm/Toast/index.tsx +0 -3
- package/publish/lib/esm/Toast/types.ts +0 -60
- package/publish/lib/esm/Toast/useToast.tsx +0 -72
- package/publish/lib/esm/Tooltip/index.scss +0 -272
- package/publish/lib/esm/Tooltip/index.tsx +0 -416
- package/publish/lib/esm/Tree/TreeList.tsx +0 -600
- package/publish/lib/esm/Tree/index.scss +0 -384
- package/publish/lib/esm/Tree/index.tsx +0 -661
- package/publish/lib/esm/Tree/init-height.tsx +0 -40
- package/publish/lib/esm/Tree/utils/func.ts +0 -15
- package/publish/lib/esm/Utils/hooks/useAutosizeTextArea.tsx +0 -131
- package/publish/lib/esm/Utils/hooks/useBoundedDrag.tsx +0 -301
- package/publish/lib/esm/Utils/hooks/useClickOutside.tsx +0 -69
- package/publish/lib/esm/Utils/hooks/useComId.tsx +0 -13
- package/publish/lib/esm/Utils/hooks/useDebounce.tsx +0 -40
- package/publish/lib/esm/Utils/hooks/useDragDropPosition.tsx +0 -417
- package/publish/lib/esm/Utils/hooks/useDraggable.tsx +0 -265
- package/publish/lib/esm/Utils/hooks/useHistoryTracker.tsx +0 -554
- package/publish/lib/esm/Utils/hooks/useInterval.tsx +0 -74
- package/publish/lib/esm/Utils/hooks/useIsMobile.tsx +0 -139
- package/publish/lib/esm/Utils/hooks/useKeyPress.tsx +0 -104
- package/publish/lib/esm/Utils/hooks/useSessionStorageListener.tsx +0 -45
- package/publish/lib/esm/Utils/hooks/useStreamController.tsx +0 -277
- package/publish/lib/esm/Utils/hooks/useThrottle.tsx +0 -39
- package/publish/lib/esm/Utils/hooks/useWindowScroll.tsx +0 -83
- package/publish/lib/esm/Utils/libs/anim.ts +0 -96
- package/publish/lib/esm/Utils/libs/buffer.ts +0 -262
- package/publish/lib/esm/Utils/libs/cls.ts +0 -64
- package/publish/lib/esm/Utils/libs/convert.ts +0 -59
- package/publish/lib/esm/Utils/libs/date.ts +0 -598
- package/publish/lib/esm/Utils/libs/dom.ts +0 -150
- package/publish/lib/esm/Utils/libs/easing.ts +0 -201
- package/publish/lib/esm/Utils/libs/extract.ts +0 -160
- package/publish/lib/esm/Utils/libs/format-string.ts +0 -116
- package/publish/lib/esm/Utils/libs/formdata.ts +0 -93
- package/publish/lib/esm/Utils/libs/getElementProperty.ts +0 -150
- package/publish/lib/esm/Utils/libs/guid.ts +0 -16
- package/publish/lib/esm/Utils/libs/initDefaultOptions.ts +0 -43
- package/publish/lib/esm/Utils/libs/inputsCalculation.ts +0 -160
- package/publish/lib/esm/Utils/libs/math.ts +0 -276
- package/publish/lib/esm/Utils/libs/object.ts +0 -68
- package/publish/lib/esm/Utils/libs/os.ts +0 -63
- package/publish/lib/esm/Utils/libs/performance.ts +0 -47
- package/publish/lib/esm/Utils/libs/sanitize.ts +0 -55
- package/publish/lib/esm/Utils/libs/time.ts +0 -139
- package/publish/lib/esm/Utils/libs/tree.ts +0 -119
- package/publish/lib/esm/Utils/libs/validate.ts +0 -434
- package/publish/lib/esm/Utils/libs/viewport.ts +0 -20
- package/publish/lib/esm/Utils/plugins/bodyScrollLock.ts +0 -286
- package/publish/lib/esm/index.js +0 -47
- package/publish/package.json +0 -1
- /package/{publish/Accordion → Accordion}/index.d.ts +0 -0
- /package/{publish/Accordion → Accordion}/index.js +0 -0
- /package/{publish/BackToTop → BackToTop}/index.css +0 -0
- /package/{publish/BackToTop → BackToTop}/index.d.ts +0 -0
- /package/{publish/BackToTop → BackToTop}/index.js +0 -0
- /package/{publish/CascadingSelect → CascadingSelect}/index.css +0 -0
- /package/{publish/CascadingSelect → CascadingSelect}/index.d.ts +0 -0
- /package/{publish/CascadingSelect → CascadingSelect}/index.js +0 -0
- /package/{publish/CascadingSelectE2E → CascadingSelectE2E}/index.css +0 -0
- /package/{publish/CascadingSelectE2E → CascadingSelectE2E}/index.d.ts +0 -0
- /package/{publish/CascadingSelectE2E → CascadingSelectE2E}/index.js +0 -0
- /package/{publish/Chatbox → Chatbox}/index.css +0 -0
- /package/{publish/Chatbox → Chatbox}/index.d.ts +0 -0
- /package/{publish/Chatbox → Chatbox}/index.js +0 -0
- /package/{publish/Checkbox → Checkbox}/index.d.ts +0 -0
- /package/{publish/Checkbox → Checkbox}/index.js +0 -0
- /package/{publish/ColorPicker → ColorPicker}/index.css +0 -0
- /package/{publish/ColorPicker → ColorPicker}/index.d.ts +0 -0
- /package/{publish/ColorPicker → ColorPicker}/index.js +0 -0
- /package/{publish/Date → Date}/index.css +0 -0
- /package/{publish/Date → Date}/index.d.ts +0 -0
- /package/{publish/Date → Date}/index.js +0 -0
- /package/{publish/DigitalClock → DigitalClock}/index.d.ts +0 -0
- /package/{publish/DigitalClock → DigitalClock}/index.js +0 -0
- /package/{publish/DragDropList → DragDropList}/index.css +0 -0
- /package/{publish/DragDropList → DragDropList}/index.d.ts +0 -0
- /package/{publish/DragDropList → DragDropList}/index.js +0 -0
- /package/{publish/DropdownMenu → DropdownMenu}/index.css +0 -0
- /package/{publish/DropdownMenu → DropdownMenu}/index.d.ts +0 -0
- /package/{publish/DropdownMenu → DropdownMenu}/index.js +0 -0
- /package/{publish/DynamicFields → DynamicFields}/index.d.ts +0 -0
- /package/{publish/DynamicFields → DynamicFields}/index.js +0 -0
- /package/{publish/EventCalendar → EventCalendar}/index.css +0 -0
- /package/{publish/EventCalendar → EventCalendar}/index.d.ts +0 -0
- /package/{publish/EventCalendar → EventCalendar}/index.js +0 -0
- /package/{publish/EventCalendarTimeline → EventCalendarTimeline}/index.css +0 -0
- /package/{publish/EventCalendarTimeline → EventCalendarTimeline}/index.d.ts +0 -0
- /package/{publish/EventCalendarTimeline → EventCalendarTimeline}/index.js +0 -0
- /package/{publish/File → File}/index.d.ts +0 -0
- /package/{publish/File → File}/index.js +0 -0
- /package/{publish/HorizontalScrollContent → HorizontalScrollContent}/index.css +0 -0
- /package/{publish/HorizontalScrollContent → HorizontalScrollContent}/index.d.ts +0 -0
- /package/{publish/HorizontalScrollContent → HorizontalScrollContent}/index.js +0 -0
- /package/{publish/Input → Input}/index.d.ts +0 -0
- /package/{publish/Input → Input}/index.js +0 -0
- /package/{publish/LiveSearch → LiveSearch}/index.css +0 -0
- /package/{publish/LiveSearch → LiveSearch}/index.d.ts +0 -0
- /package/{publish/LiveSearch → LiveSearch}/index.js +0 -0
- /package/{publish/MasonryLayout → MasonryLayout}/index.d.ts +0 -0
- /package/{publish/MasonryLayout → MasonryLayout}/index.js +0 -0
- /package/{publish/ModalDialog → ModalDialog}/index.d.ts +0 -0
- /package/{publish/ModalDialog → ModalDialog}/index.js +0 -0
- /package/{publish/ModeSwitch → ModeSwitch}/index.d.ts +0 -0
- /package/{publish/ModeSwitch → ModeSwitch}/index.js +0 -0
- /package/{publish/MultilevelDropdownMenu → MultilevelDropdownMenu}/index.css +0 -0
- /package/{publish/MultilevelDropdownMenu → MultilevelDropdownMenu}/index.d.ts +0 -0
- /package/{publish/MultilevelDropdownMenu → MultilevelDropdownMenu}/index.js +0 -0
- /package/{publish/MultipleCheckboxes → MultipleCheckboxes}/index.d.ts +0 -0
- /package/{publish/MultipleCheckboxes → MultipleCheckboxes}/index.js +0 -0
- /package/{publish/MultipleSelect → MultipleSelect}/index.css +0 -0
- /package/{publish/MultipleSelect → MultipleSelect}/index.d.ts +0 -0
- /package/{publish/MultipleSelect → MultipleSelect}/index.js +0 -0
- /package/{publish/NativeSelect → NativeSelect}/index.d.ts +0 -0
- /package/{publish/NativeSelect → NativeSelect}/index.js +0 -0
- /package/{publish/NumberInput → NumberInput}/index.d.ts +0 -0
- /package/{publish/NumberInput → NumberInput}/index.js +0 -0
- /package/{publish/Pagination → Pagination}/index.d.ts +0 -0
- /package/{publish/Pagination → Pagination}/index.js +0 -0
- /package/{publish/Radio → Radio}/index.d.ts +0 -0
- /package/{publish/Radio → Radio}/index.js +0 -0
- /package/{publish/RangeSlider → RangeSlider}/index.css +0 -0
- /package/{publish/RangeSlider → RangeSlider}/index.d.ts +0 -0
- /package/{publish/RangeSlider → RangeSlider}/index.js +0 -0
- /package/{publish/Refresher → Refresher}/index.d.ts +0 -0
- /package/{publish/Refresher → Refresher}/index.js +0 -0
- /package/{publish/RootPortal → RootPortal}/index.d.ts +0 -0
- /package/{publish/RootPortal → RootPortal}/index.js +0 -0
- /package/{publish/ScrollReveal → ScrollReveal}/index.d.ts +0 -0
- /package/{publish/ScrollReveal → ScrollReveal}/index.js +0 -0
- /package/{publish/Scrollbar → Scrollbar}/index.css +0 -0
- /package/{publish/Scrollbar → Scrollbar}/index.d.ts +0 -0
- /package/{publish/Scrollbar → Scrollbar}/index.js +0 -0
- /package/{publish/SearchBar → SearchBar}/index.d.ts +0 -0
- /package/{publish/SearchBar → SearchBar}/index.js +0 -0
- /package/{publish/Select → Select}/index.css +0 -0
- /package/{publish/Select → Select}/index.d.ts +0 -0
- /package/{publish/Select → Select}/index.js +0 -0
- /package/{publish/ShowMoreLess → ShowMoreLess}/index.css +0 -0
- /package/{publish/ShowMoreLess → ShowMoreLess}/index.d.ts +0 -0
- /package/{publish/ShowMoreLess → ShowMoreLess}/index.js +0 -0
- /package/{publish/SplitterPanel → SplitterPanel}/index.css +0 -0
- /package/{publish/SplitterPanel → SplitterPanel}/index.d.ts +0 -0
- /package/{publish/SplitterPanel → SplitterPanel}/index.js +0 -0
- /package/{publish/Stepper → Stepper}/index.css +0 -0
- /package/{publish/Stepper → Stepper}/index.d.ts +0 -0
- /package/{publish/Stepper → Stepper}/index.js +0 -0
- /package/{publish/Switch → Switch}/index.d.ts +0 -0
- /package/{publish/Switch → Switch}/index.js +0 -0
- /package/{publish/Table → Table}/index.css +0 -0
- /package/{publish/Table → Table}/index.d.ts +0 -0
- /package/{publish/Table → Table}/index.js +0 -0
- /package/{publish/Tabs → Tabs}/index.d.ts +0 -0
- /package/{publish/Tabs → Tabs}/index.js +0 -0
- /package/{publish/TagInput → TagInput}/index.css +0 -0
- /package/{publish/TagInput → TagInput}/index.d.ts +0 -0
- /package/{publish/TagInput → TagInput}/index.js +0 -0
- /package/{publish/Textarea → Textarea}/index.d.ts +0 -0
- /package/{publish/Textarea → Textarea}/index.js +0 -0
- /package/{publish/Toast → Toast}/index.css +0 -0
- /package/{publish/Toast → Toast}/index.d.ts +0 -0
- /package/{publish/Toast → Toast}/index.js +0 -0
- /package/{publish/Tooltip → Tooltip}/index.css +0 -0
- /package/{publish/Tooltip → Tooltip}/index.d.ts +0 -0
- /package/{publish/Tooltip → Tooltip}/index.js +0 -0
- /package/{publish/Tree → Tree}/index.css +0 -0
- /package/{publish/Tree → Tree}/index.d.ts +0 -0
- /package/{publish/Tree → Tree}/index.js +0 -0
- /package/{publish/Utils → Utils}/anim.d.ts +0 -0
- /package/{publish/Utils → Utils}/anim.js +0 -0
- /package/{publish/Utils → Utils}/bodyScrollLock.d.ts +0 -0
- /package/{publish/Utils → Utils}/bodyScrollLock.js +0 -0
- /package/{publish/Utils → Utils}/buffer.d.ts +0 -0
- /package/{publish/Utils → Utils}/buffer.js +0 -0
- /package/{publish/Utils → Utils}/cls.d.ts +0 -0
- /package/{publish/Utils → Utils}/cls.js +0 -0
- /package/{publish/Utils → Utils}/convert.d.ts +0 -0
- /package/{publish/Utils → Utils}/convert.js +0 -0
- /package/{publish/Utils → Utils}/date.d.ts +0 -0
- /package/{publish/Utils → Utils}/date.js +0 -0
- /package/{publish/Utils → Utils}/dom.d.ts +0 -0
- /package/{publish/Utils → Utils}/dom.js +0 -0
- /package/{publish/Utils → Utils}/easing.d.ts +0 -0
- /package/{publish/Utils → Utils}/easing.js +0 -0
- /package/{publish/Utils → Utils}/extract.d.ts +0 -0
- /package/{publish/Utils → Utils}/extract.js +0 -0
- /package/{publish/Utils → Utils}/format-string.d.ts +0 -0
- /package/{publish/Utils → Utils}/format-string.js +0 -0
- /package/{publish/Utils → Utils}/formdata.d.ts +0 -0
- /package/{publish/Utils → Utils}/formdata.js +0 -0
- /package/{publish/Utils → Utils}/getElementProperty.d.ts +0 -0
- /package/{publish/Utils → Utils}/getElementProperty.js +0 -0
- /package/{publish/Utils → Utils}/guid.d.ts +0 -0
- /package/{publish/Utils → Utils}/guid.js +0 -0
- /package/{publish/Utils → Utils}/initDefaultOptions.d.ts +0 -0
- /package/{publish/Utils → Utils}/initDefaultOptions.js +0 -0
- /package/{publish/Utils → Utils}/inputsCalculation.d.ts +0 -0
- /package/{publish/Utils → Utils}/inputsCalculation.js +0 -0
- /package/{publish/Utils → Utils}/math.d.ts +0 -0
- /package/{publish/Utils → Utils}/math.js +0 -0
- /package/{publish/Utils → Utils}/object.d.ts +0 -0
- /package/{publish/Utils → Utils}/object.js +0 -0
- /package/{publish/Utils → Utils}/os.d.ts +0 -0
- /package/{publish/Utils → Utils}/os.js +0 -0
- /package/{publish/Utils → Utils}/performance.d.ts +0 -0
- /package/{publish/Utils → Utils}/performance.js +0 -0
- /package/{publish/Utils → Utils}/sanitize.d.ts +0 -0
- /package/{publish/Utils → Utils}/sanitize.js +0 -0
- /package/{publish/Utils → Utils}/time.d.ts +0 -0
- /package/{publish/Utils → Utils}/time.js +0 -0
- /package/{publish/Utils → Utils}/tree.d.ts +0 -0
- /package/{publish/Utils → Utils}/tree.js +0 -0
- /package/{publish/Utils → Utils}/useAutosizeTextArea.d.ts +0 -0
- /package/{publish/Utils → Utils}/useAutosizeTextArea.js +0 -0
- /package/{publish/Utils → Utils}/useBoundedDrag.d.ts +0 -0
- /package/{publish/Utils → Utils}/useBoundedDrag.js +0 -0
- /package/{publish/Utils → Utils}/useClickOutside.d.ts +0 -0
- /package/{publish/Utils → Utils}/useClickOutside.js +0 -0
- /package/{publish/Utils → Utils}/useComId.d.ts +0 -0
- /package/{publish/Utils → Utils}/useComId.js +0 -0
- /package/{publish/Utils → Utils}/useDebounce.d.ts +0 -0
- /package/{publish/Utils → Utils}/useDebounce.js +0 -0
- /package/{publish/Utils → Utils}/useDragDropPosition.d.ts +0 -0
- /package/{publish/Utils → Utils}/useDragDropPosition.js +0 -0
- /package/{publish/Utils → Utils}/useDraggable.d.ts +0 -0
- /package/{publish/Utils → Utils}/useDraggable.js +0 -0
- /package/{publish/Utils → Utils}/useHistoryTracker.d.ts +0 -0
- /package/{publish/Utils → Utils}/useHistoryTracker.js +0 -0
- /package/{publish/Utils → Utils}/useInterval.d.ts +0 -0
- /package/{publish/Utils → Utils}/useInterval.js +0 -0
- /package/{publish/Utils → Utils}/useIsMobile.d.ts +0 -0
- /package/{publish/Utils → Utils}/useIsMobile.js +0 -0
- /package/{publish/Utils → Utils}/useKeyPress.d.ts +0 -0
- /package/{publish/Utils → Utils}/useKeyPress.js +0 -0
- /package/{publish/Utils → Utils}/useSessionStorageListener.d.ts +0 -0
- /package/{publish/Utils → Utils}/useSessionStorageListener.js +0 -0
- /package/{publish/Utils → Utils}/useStreamController.d.ts +0 -0
- /package/{publish/Utils → Utils}/useStreamController.js +0 -0
- /package/{publish/Utils → Utils}/useThrottle.d.ts +0 -0
- /package/{publish/Utils → Utils}/useThrottle.js +0 -0
- /package/{publish/Utils → Utils}/useWindowScroll.d.ts +0 -0
- /package/{publish/Utils → Utils}/useWindowScroll.js +0 -0
- /package/{publish/Utils → Utils}/validate.d.ts +0 -0
- /package/{publish/Utils → Utils}/validate.js +0 -0
- /package/{publish/Utils → Utils}/viewport.d.ts +0 -0
- /package/{publish/Utils → Utils}/viewport.js +0 -0
- /package/{publish/all.d.ts → all.d.ts} +0 -0
- /package/{publish/all.js → all.js} +0 -0
package/README_PUBLISH.md
DELETED
|
@@ -1,328 +0,0 @@
|
|
|
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
|
-
|
package/logo.png
DELETED
|
Binary file
|
package/preview.png
DELETED
|
Binary file
|
package/publish/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2018 UIUX Lab
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAM AGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
package/publish/README.md
DELETED
|
@@ -1,328 +0,0 @@
|
|
|
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
|
-
|