@rainbow-oh/yee-c 0.1.0 → 0.3.0
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/dist/cjs/Alert/alert.js +10 -4
- package/dist/cjs/Alert/style/index.less +3 -0
- package/dist/cjs/Anchor/anchor-item.js +6 -4
- package/dist/cjs/Anchor/anchor.js +38 -22
- package/dist/cjs/Anchor/demo/auto.d.ts +11 -0
- package/dist/cjs/Anchor/demo/auto.js +85 -0
- package/dist/cjs/Anchor/demo/basic.js +7 -1
- package/dist/cjs/Anchor/demo/controlled.js +42 -30
- package/dist/cjs/Anchor/interface.d.ts +2 -0
- package/dist/cjs/Anchor/style/index.less +2 -2
- package/dist/cjs/Button/button.d.ts +1 -1
- package/dist/cjs/Button/button.js +2 -2
- package/dist/cjs/Button/style/index.less +23 -8
- package/dist/cjs/Card/demo/collapsible.js +2 -1
- package/dist/cjs/Carousel/demo/arrows.js +1 -1
- package/dist/cjs/Carousel/demo/autoplay.js +1 -1
- package/dist/cjs/Carousel/demo/effect.js +1 -1
- package/dist/cjs/Carousel/demo/position.js +1 -1
- package/dist/cjs/Checkbox/checkbox-group.js +4 -1
- package/dist/cjs/Checkbox/demo/group.js +1 -0
- package/dist/cjs/Checkbox/interface.d.ts +5 -0
- package/dist/cjs/Checkbox/style/index.less +21 -1
- package/dist/cjs/Config-Provider/interface.d.ts +4 -0
- package/dist/cjs/Dropdown/demo/placement.js +2 -1
- package/dist/cjs/Dropdown/dropdown.js +3 -0
- package/dist/cjs/Dropdown/style/index.less +6 -0
- package/dist/cjs/Form/Field.js +64 -12
- package/dist/cjs/Form/Group.js +3 -2
- package/dist/cjs/Form/demo/form-table.js +1 -8
- package/dist/cjs/Form/demo/tooltip.d.ts +3 -0
- package/dist/cjs/Form/demo/tooltip.js +84 -0
- package/dist/cjs/Form/interface.d.ts +51 -2
- package/dist/cjs/Form/style/index.less +22 -7
- package/dist/cjs/Menu/style/index.less +2 -2
- package/dist/cjs/Popconfirm/popconfirm.js +1 -1
- package/dist/cjs/Popconfirm/style/index.less +6 -0
- package/dist/cjs/Popover/popover.js +1 -1
- package/dist/cjs/Popover/style/index.less +6 -0
- package/dist/cjs/Progress/progress.js +2 -2
- package/dist/cjs/Radio/demo/button.js +1 -0
- package/dist/cjs/Radio/interface.d.ts +4 -0
- package/dist/cjs/Radio/radio-group.js +28 -14
- package/dist/cjs/Radio/radio.js +3 -1
- package/dist/cjs/Radio/style/index.less +26 -5
- package/dist/cjs/Segmented/demo/basic.d.ts +3 -0
- package/dist/cjs/Segmented/demo/basic.js +51 -0
- package/dist/cjs/Segmented/demo/block.d.ts +3 -0
- package/dist/cjs/Segmented/demo/block.js +49 -0
- package/dist/cjs/Segmented/demo/disabled.d.ts +3 -0
- package/dist/cjs/Segmented/demo/disabled.js +47 -0
- package/dist/cjs/Segmented/demo/size.d.ts +3 -0
- package/dist/cjs/Segmented/demo/size.js +37 -0
- package/dist/cjs/Segmented/index.d.ts +3 -0
- package/dist/cjs/Segmented/index.js +36 -0
- package/dist/cjs/Segmented/interface.d.ts +82 -0
- package/dist/cjs/Segmented/interface.js +17 -0
- package/dist/cjs/Segmented/segmented.d.ts +5 -0
- package/dist/cjs/Segmented/segmented.js +177 -0
- package/dist/cjs/Segmented/style/index.less +104 -0
- package/dist/cjs/Select/option.js +3 -2
- package/dist/cjs/Select/options.js +9 -1
- package/dist/cjs/Select/select.js +1 -0
- package/dist/cjs/Skeleton/demo/basic.js +1 -1
- package/dist/cjs/Space/interface.d.ts +4 -0
- package/dist/cjs/Space/space.js +36 -16
- package/dist/cjs/Spin/spin.js +2 -1
- package/dist/cjs/Splitter/demo/basic.js +1 -1
- package/dist/cjs/Splitter/demo/vertical.js +23 -1
- package/dist/cjs/Splitter/index.d.ts +1 -1
- package/dist/cjs/Splitter/interface.d.ts +9 -3
- package/dist/cjs/Splitter/splitter-handler.d.ts +1 -1
- package/dist/cjs/Splitter/splitter-handler.js +2 -1
- package/dist/cjs/Splitter/splitter.d.ts +2 -9
- package/dist/cjs/Splitter/splitter.js +53 -50
- package/dist/cjs/Splitter/style/index.less +21 -0
- package/dist/cjs/Steps/step.js +1 -1
- package/dist/cjs/Steps/style/index.less +8 -2
- package/dist/cjs/Switch/demo/content.js +22 -1
- package/dist/cjs/Switch/style/index.less +16 -0
- package/dist/cjs/Switch/switch.js +9 -2
- package/dist/cjs/Table/demo/size.js +1 -1
- package/dist/cjs/Table/interface.d.ts +5 -1
- package/dist/cjs/Table/theader/cell.js +4 -5
- package/dist/cjs/Tabs/hooks/useTabScroll.d.ts +1 -1
- package/dist/cjs/Tabs/interface.d.ts +1 -1
- package/dist/cjs/Tabs/style/index.less +4 -0
- package/dist/cjs/Tabs/tab-header/index.js +56 -25
- package/dist/cjs/Tag/demo/size.js +1 -1
- package/dist/cjs/Tag/style/index.less +1 -0
- package/dist/cjs/Tooltip/interface.d.ts +4 -0
- package/dist/cjs/Tooltip/style/index.less +8 -8
- package/dist/cjs/Tooltip/tooltip.js +11 -3
- package/dist/cjs/Tour/demo/basic.d.ts +3 -0
- package/dist/cjs/Tour/demo/basic.js +69 -0
- package/dist/cjs/Tour/demo/indicators.d.ts +3 -0
- package/dist/cjs/Tour/demo/indicators.js +76 -0
- package/dist/cjs/Tour/demo/placement.d.ts +3 -0
- package/dist/cjs/Tour/demo/placement.js +80 -0
- package/dist/cjs/Tour/demo/scroll.d.ts +3 -0
- package/dist/cjs/Tour/demo/scroll.js +72 -0
- package/dist/cjs/Tour/index.d.ts +3 -0
- package/dist/cjs/Tour/index.js +36 -0
- package/dist/cjs/Tour/interface.d.ts +118 -0
- package/dist/cjs/Tour/interface.js +17 -0
- package/dist/cjs/Tour/style/index.less +103 -0
- package/dist/cjs/Tour/tour.d.ts +5 -0
- package/dist/cjs/Tour/tour.js +403 -0
- package/dist/cjs/Tree/demo/checkable.js +6 -6
- package/dist/cjs/Tree/demo/draggable.d.ts +3 -0
- package/dist/cjs/Tree/demo/draggable.js +88 -0
- package/dist/cjs/Tree/demo/expanded.js +6 -6
- package/dist/cjs/Tree/index.d.ts +1 -0
- package/dist/cjs/Tree/index.js +3 -1
- package/dist/cjs/Tree/interface.d.ts +26 -0
- package/dist/cjs/Tree/style/index.less +25 -0
- package/dist/cjs/Tree/tree-node.js +38 -4
- package/dist/cjs/Tree/tree.d.ts +12 -1
- package/dist/cjs/Tree/tree.js +174 -18
- package/dist/cjs/Tree/utils/tree-tools.d.ts +21 -0
- package/dist/cjs/Tree/utils/tree-tools.js +88 -0
- package/dist/cjs/Trigger/style/index.less +17 -0
- package/dist/cjs/Trigger/trigger.js +3 -1
- package/dist/cjs/hooks/useDebounceFunction.d.ts +1 -1
- package/dist/cjs/hooks/useLayoutEffect.d.ts +1 -1
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/locale/interface.d.ts +7 -0
- package/dist/cjs/locale/lang/en_US.js +6 -0
- package/dist/cjs/locale/lang/ja_JP.js +6 -0
- package/dist/cjs/locale/lang/zh_CN.js +6 -0
- package/dist/cjs/locale/lang/zh_TW.js +6 -0
- package/dist/cjs/style/color.blue.css +1 -1
- package/dist/cjs/style/color.crimson.css +1 -1
- package/dist/cjs/style/color.css +18 -1
- package/dist/cjs/style/size.css +51 -4
- package/dist/cjs/style/themes.css +3 -3
- package/dist/cjs/style/variables.css +70 -6
- package/dist/cjs/utils/debounce.d.ts +6 -1
- package/dist/cjs/utils/debounce.js +9 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/Alert/alert.js +24 -8
- package/dist/esm/Alert/style/index.less +3 -0
- package/dist/esm/Anchor/anchor-item.js +6 -3
- package/dist/esm/Anchor/anchor.js +38 -19
- package/dist/esm/Anchor/demo/auto.d.ts +11 -0
- package/dist/esm/Anchor/demo/auto.js +62 -0
- package/dist/esm/Anchor/demo/basic.js +3 -1
- package/dist/esm/Anchor/demo/controlled.js +14 -9
- package/dist/esm/Anchor/interface.d.ts +2 -0
- package/dist/esm/Anchor/style/index.less +2 -2
- package/dist/esm/Button/button.d.ts +1 -1
- package/dist/esm/Button/button.js +2 -2
- package/dist/esm/Button/style/index.less +23 -8
- package/dist/esm/Card/demo/collapsible.js +2 -1
- package/dist/esm/Carousel/demo/arrows.js +1 -1
- package/dist/esm/Carousel/demo/autoplay.js +1 -1
- package/dist/esm/Carousel/demo/effect.js +1 -1
- package/dist/esm/Carousel/demo/position.js +1 -1
- package/dist/esm/Checkbox/checkbox-group.js +4 -2
- package/dist/esm/Checkbox/demo/group.js +1 -0
- package/dist/esm/Checkbox/interface.d.ts +5 -0
- package/dist/esm/Checkbox/style/index.less +21 -1
- package/dist/esm/Config-Provider/interface.d.ts +4 -0
- package/dist/esm/Dropdown/demo/placement.js +2 -1
- package/dist/esm/Dropdown/dropdown.js +6 -1
- package/dist/esm/Dropdown/style/index.less +6 -0
- package/dist/esm/Form/Field.js +53 -8
- package/dist/esm/Form/Group.js +4 -2
- package/dist/esm/Form/demo/form-table.js +8 -6
- package/dist/esm/Form/demo/tooltip.d.ts +3 -0
- package/dist/esm/Form/demo/tooltip.js +59 -0
- package/dist/esm/Form/interface.d.ts +51 -2
- package/dist/esm/Form/style/index.less +22 -7
- package/dist/esm/Menu/style/index.less +2 -2
- package/dist/esm/Popconfirm/popconfirm.js +3 -1
- package/dist/esm/Popconfirm/style/index.less +6 -0
- package/dist/esm/Popover/popover.js +3 -1
- package/dist/esm/Popover/style/index.less +6 -0
- package/dist/esm/Progress/progress.js +5 -5
- package/dist/esm/Radio/demo/button.js +1 -0
- package/dist/esm/Radio/interface.d.ts +4 -0
- package/dist/esm/Radio/radio-group.js +9 -2
- package/dist/esm/Radio/radio.js +3 -1
- package/dist/esm/Radio/style/index.less +26 -5
- package/dist/esm/Segmented/demo/basic.d.ts +3 -0
- package/dist/esm/Segmented/demo/basic.js +33 -0
- package/dist/esm/Segmented/demo/block.d.ts +3 -0
- package/dist/esm/Segmented/demo/block.js +29 -0
- package/dist/esm/Segmented/demo/disabled.d.ts +3 -0
- package/dist/esm/Segmented/demo/disabled.js +22 -0
- package/dist/esm/Segmented/demo/size.d.ts +3 -0
- package/dist/esm/Segmented/demo/size.js +15 -0
- package/dist/esm/Segmented/index.d.ts +3 -0
- package/dist/esm/Segmented/index.js +2 -0
- package/dist/esm/Segmented/interface.d.ts +82 -0
- package/dist/esm/Segmented/interface.js +1 -0
- package/dist/esm/Segmented/segmented.d.ts +5 -0
- package/dist/esm/Segmented/segmented.js +110 -0
- package/dist/esm/Segmented/style/index.less +104 -0
- package/dist/esm/Select/option.js +4 -2
- package/dist/esm/Select/options.js +5 -3
- package/dist/esm/Select/select.js +1 -0
- package/dist/esm/Skeleton/demo/basic.js +2 -8
- package/dist/esm/Space/interface.d.ts +4 -0
- package/dist/esm/Space/space.js +24 -13
- package/dist/esm/Spin/spin.js +2 -1
- package/dist/esm/Splitter/demo/basic.js +2 -0
- package/dist/esm/Splitter/demo/vertical.js +13 -5
- package/dist/esm/Splitter/index.d.ts +1 -1
- package/dist/esm/Splitter/interface.d.ts +9 -3
- package/dist/esm/Splitter/splitter-handler.d.ts +1 -1
- package/dist/esm/Splitter/splitter-handler.js +3 -1
- package/dist/esm/Splitter/splitter.d.ts +2 -9
- package/dist/esm/Splitter/splitter.js +59 -56
- package/dist/esm/Splitter/style/index.less +21 -0
- package/dist/esm/Steps/step.js +4 -1
- package/dist/esm/Steps/style/index.less +8 -2
- package/dist/esm/Switch/demo/content.js +12 -3
- package/dist/esm/Switch/style/index.less +16 -0
- package/dist/esm/Switch/switch.js +7 -5
- package/dist/esm/Table/demo/size.js +2 -7
- package/dist/esm/Table/interface.d.ts +5 -1
- package/dist/esm/Table/theader/cell.js +2 -3
- package/dist/esm/Tabs/hooks/useTabScroll.d.ts +1 -1
- package/dist/esm/Tabs/interface.d.ts +1 -1
- package/dist/esm/Tabs/style/index.less +4 -0
- package/dist/esm/Tabs/tab-header/index.js +11 -5
- package/dist/esm/Tag/demo/size.js +6 -2
- package/dist/esm/Tag/style/index.less +1 -0
- package/dist/esm/Tooltip/interface.d.ts +4 -0
- package/dist/esm/Tooltip/style/index.less +8 -8
- package/dist/esm/Tooltip/tooltip.js +14 -2
- package/dist/esm/Tour/demo/basic.d.ts +3 -0
- package/dist/esm/Tour/demo/basic.js +69 -0
- package/dist/esm/Tour/demo/indicators.d.ts +3 -0
- package/dist/esm/Tour/demo/indicators.js +73 -0
- package/dist/esm/Tour/demo/placement.d.ts +3 -0
- package/dist/esm/Tour/demo/placement.js +53 -0
- package/dist/esm/Tour/demo/scroll.d.ts +3 -0
- package/dist/esm/Tour/demo/scroll.js +58 -0
- package/dist/esm/Tour/index.d.ts +3 -0
- package/dist/esm/Tour/index.js +2 -0
- package/dist/esm/Tour/interface.d.ts +118 -0
- package/dist/esm/Tour/interface.js +1 -0
- package/dist/esm/Tour/style/index.less +103 -0
- package/dist/esm/Tour/tour.d.ts +5 -0
- package/dist/esm/Tour/tour.js +383 -0
- package/dist/esm/Tree/demo/checkable.js +6 -6
- package/dist/esm/Tree/demo/draggable.d.ts +3 -0
- package/dist/esm/Tree/demo/draggable.js +61 -0
- package/dist/esm/Tree/demo/expanded.js +6 -6
- package/dist/esm/Tree/index.d.ts +1 -0
- package/dist/esm/Tree/index.js +1 -0
- package/dist/esm/Tree/interface.d.ts +26 -0
- package/dist/esm/Tree/style/index.less +25 -0
- package/dist/esm/Tree/tree-node.js +29 -4
- package/dist/esm/Tree/tree.d.ts +12 -1
- package/dist/esm/Tree/tree.js +135 -4
- package/dist/esm/Tree/utils/tree-tools.d.ts +21 -0
- package/dist/esm/Tree/utils/tree-tools.js +128 -1
- package/dist/esm/Trigger/style/index.less +17 -0
- package/dist/esm/Trigger/trigger.js +4 -3
- package/dist/esm/hooks/useDebounceFunction.d.ts +1 -1
- package/dist/esm/hooks/useLayoutEffect.d.ts +1 -1
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/locale/interface.d.ts +7 -0
- package/dist/esm/locale/lang/en_US.js +6 -0
- package/dist/esm/locale/lang/ja_JP.js +6 -0
- package/dist/esm/locale/lang/zh_CN.js +6 -0
- package/dist/esm/locale/lang/zh_TW.js +6 -0
- package/dist/esm/style/color.blue.css +1 -1
- package/dist/esm/style/color.crimson.css +1 -1
- package/dist/esm/style/color.css +18 -1
- package/dist/esm/style/size.css +51 -4
- package/dist/esm/style/themes.css +3 -3
- package/dist/esm/style/variables.css +70 -6
- package/dist/esm/utils/debounce.d.ts +6 -1
- package/dist/esm/utils/debounce.js +9 -2
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/umd/yee-c.min.css +3 -3
- package/dist/umd/yee-c.min.js +1 -1
- package/package.json +21 -23
- package/src/Alert/alert.tsx +10 -4
- package/src/Alert/style/index.less +3 -0
- package/src/Anchor/anchor-item.tsx +7 -2
- package/src/Anchor/anchor.tsx +49 -23
- package/src/Anchor/demo/auto.tsx +55 -0
- package/src/Anchor/demo/basic.tsx +7 -1
- package/src/Anchor/demo/controlled.tsx +18 -14
- package/src/Anchor/index.en-US.md +17 -0
- package/src/Anchor/index.zh-CN.md +17 -0
- package/src/Anchor/interface.ts +2 -0
- package/src/Anchor/style/index.less +2 -2
- package/src/Button/button.tsx +2 -2
- package/src/Button/style/index.less +23 -8
- package/src/Card/demo/collapsible.tsx +1 -0
- package/src/Carousel/demo/arrows.tsx +1 -1
- package/src/Carousel/demo/autoplay.tsx +1 -1
- package/src/Carousel/demo/effect.tsx +1 -1
- package/src/Carousel/demo/position.tsx +1 -1
- package/src/Checkbox/checkbox-group.tsx +5 -1
- package/src/Checkbox/demo/group.tsx +1 -0
- package/src/Checkbox/interface.ts +5 -0
- package/src/Checkbox/style/index.less +21 -1
- package/src/Config-Provider/index.en-US.md +2 -0
- package/src/Config-Provider/index.zh-CN.md +2 -0
- package/src/Config-Provider/interface.ts +4 -0
- package/src/Dropdown/demo/placement.tsx +1 -0
- package/src/Dropdown/dropdown.tsx +2 -0
- package/src/Dropdown/style/index.less +6 -0
- package/src/Form/Field.tsx +70 -9
- package/src/Form/Group.tsx +4 -1
- package/src/Form/demo/form-table.tsx +7 -7
- package/src/Form/demo/tooltip.tsx +72 -0
- package/src/Form/form-store.ts +1 -1
- package/src/Form/index.en-US.md +6 -0
- package/src/Form/index.zh-CN.md +87 -85
- package/src/Form/interface.ts +53 -2
- package/src/Form/style/index.less +22 -7
- package/src/Menu/style/index.less +2 -2
- package/src/Popconfirm/popconfirm.tsx +1 -1
- package/src/Popconfirm/style/index.less +6 -0
- package/src/Popover/popover.tsx +1 -1
- package/src/Popover/style/index.less +6 -0
- package/src/Progress/progress.tsx +2 -2
- package/src/Radio/demo/button.tsx +1 -0
- package/src/Radio/index.en-US.md +2 -0
- package/src/Radio/index.zh-CN.md +2 -0
- package/src/Radio/interface.ts +4 -0
- package/src/Radio/radio-group.tsx +9 -1
- package/src/Radio/radio.tsx +2 -1
- package/src/Radio/style/index.less +26 -5
- package/src/Segmented/demo/basic.tsx +24 -0
- package/src/Segmented/demo/block.tsx +17 -0
- package/src/Segmented/demo/disabled.tsx +18 -0
- package/src/Segmented/demo/size.tsx +10 -0
- package/src/Segmented/index.en-US.md +47 -0
- package/src/Segmented/index.ts +12 -0
- package/src/Segmented/index.zh-CN.md +47 -0
- package/src/Segmented/interface.ts +87 -0
- package/src/Segmented/segmented.tsx +134 -0
- package/src/Segmented/style/index.less +104 -0
- package/src/Select/option.tsx +2 -1
- package/src/Select/options.tsx +7 -2
- package/src/Select/select.tsx +1 -0
- package/src/Skeleton/demo/basic.tsx +3 -3
- package/src/Space/interface.ts +4 -0
- package/src/Space/space.tsx +40 -16
- package/src/Spin/spin.tsx +1 -0
- package/src/Splitter/demo/basic.tsx +2 -2
- package/src/Splitter/demo/vertical.tsx +19 -5
- package/src/Splitter/index.ts +5 -1
- package/src/Splitter/interface.ts +10 -3
- package/src/Splitter/splitter-handler.tsx +4 -2
- package/src/Splitter/splitter.tsx +55 -60
- package/src/Splitter/style/index.less +21 -0
- package/src/Steps/step.tsx +1 -1
- package/src/Steps/style/index.less +8 -2
- package/src/Switch/demo/content.tsx +15 -5
- package/src/Switch/style/index.less +16 -0
- package/src/Switch/switch.tsx +14 -6
- package/src/Table/demo/size.tsx +3 -3
- package/src/Table/index.en-US.md +1 -0
- package/src/Table/index.zh-CN.md +51 -50
- package/src/Table/interface.ts +5 -1
- package/src/Table/theader/cell.tsx +2 -9
- package/src/Tabs/interface.ts +1 -1
- package/src/Tabs/style/index.less +4 -0
- package/src/Tabs/tab-header/index.tsx +26 -5
- package/src/Tag/demo/size.tsx +2 -2
- package/src/Tag/style/index.less +1 -0
- package/src/Tooltip/index.en-US.md +1 -0
- package/src/Tooltip/index.zh-CN.md +1 -0
- package/src/Tooltip/interface.ts +4 -0
- package/src/Tooltip/style/index.less +8 -8
- package/src/Tooltip/tooltip.tsx +10 -1
- package/src/Tour/demo/basic.tsx +52 -0
- package/src/Tour/demo/indicators.tsx +63 -0
- package/src/Tour/demo/placement.tsx +55 -0
- package/src/Tour/demo/scroll.tsx +49 -0
- package/src/Tour/index.en-US.md +61 -0
- package/src/Tour/index.ts +10 -0
- package/src/Tour/index.zh-CN.md +61 -0
- package/src/Tour/interface.ts +126 -0
- package/src/Tour/style/index.less +103 -0
- package/src/Tour/tour.tsx +399 -0
- package/src/Tree/demo/checkable.tsx +6 -6
- package/src/Tree/demo/draggable.tsx +58 -0
- package/src/Tree/demo/expanded.tsx +7 -7
- package/src/Tree/index.en-US.md +3 -0
- package/src/Tree/index.ts +1 -0
- package/src/Tree/index.zh-CN.md +3 -0
- package/src/Tree/interface.ts +28 -0
- package/src/Tree/style/index.less +25 -0
- package/src/Tree/tree-node.tsx +26 -0
- package/src/Tree/tree.tsx +183 -2
- package/src/Tree/utils/tree-tools.ts +107 -0
- package/src/Trigger/style/index.less +17 -0
- package/src/Trigger/trigger.tsx +3 -1
- package/src/index.ts +6 -0
- package/src/locale/interface.ts +9 -0
- package/src/locale/lang/en_US.ts +7 -0
- package/src/locale/lang/ja_JP.ts +7 -0
- package/src/locale/lang/zh_CN.ts +7 -0
- package/src/locale/lang/zh_TW.ts +7 -0
- package/src/style/color.blue.css +1 -1
- package/src/style/color.crimson.css +1 -1
- package/src/style/color.css +18 -1
- package/src/style/size.css +51 -4
- package/src/utils/debounce.ts +22 -3
- package/src/version.ts +1 -1
- package/dist/cjs/utils/x.d.ts +0 -11
- package/dist/cjs/utils/x.js +0 -51
- package/dist/esm/utils/x.d.ts +0 -11
- package/dist/esm/utils/x.js +0 -49
- package/src/utils/x.ts +0 -33
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Segmented, Space } from '@rainbow-oh/yee-c';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
export default () => (
|
|
5
|
+
<Space direction="vertical">
|
|
6
|
+
<Segmented size="small" options={['Small', 'B', 'C']} />
|
|
7
|
+
<Segmented options={['Default', 'B', 'C']} />
|
|
8
|
+
<Segmented size="large" options={['Large', 'B', 'C']} />
|
|
9
|
+
</Space>
|
|
10
|
+
);
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Components
|
|
3
|
+
title: Segmented
|
|
4
|
+
subtitle: Segmented
|
|
5
|
+
group:
|
|
6
|
+
title: Data Entry
|
|
7
|
+
order: 3
|
|
8
|
+
toc: 'content'
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Segmented
|
|
12
|
+
|
|
13
|
+
Displays a group of mutually exclusive options, with the selected item highlighted by a sliding thumb. Commonly used for view/mode switching.
|
|
14
|
+
|
|
15
|
+
## Code Demo
|
|
16
|
+
|
|
17
|
+
<code src="./demo/basic.tsx" title="Basic" description="Basic usage, supports controlled/uncontrolled, options accept config objects or primitive shorthand"></code>
|
|
18
|
+
<code src="./demo/disabled.tsx" title="Disabled" description="Disable a single option or the whole group"></code>
|
|
19
|
+
<code src="./demo/size.tsx" title="Size" description="small / default / large"></code>
|
|
20
|
+
<code src="./demo/block.tsx" title="Block & Icon" description="block fills the container width, options can carry icons"></code>
|
|
21
|
+
|
|
22
|
+
## API
|
|
23
|
+
|
|
24
|
+
### SegmentedProps
|
|
25
|
+
|
|
26
|
+
| Property | Type | Description | Default |
|
|
27
|
+
| --- | --- | --- | --- |
|
|
28
|
+
| prefixCls | `string` | Custom class name prefix | - |
|
|
29
|
+
| className | `string` | Custom root class name | - |
|
|
30
|
+
| style | `React.CSSProperties` | Custom root style | - |
|
|
31
|
+
| classNames | `Partial<Record<'item' \| 'thumb', string>>` | Semantic structure class names | - |
|
|
32
|
+
| styles | `Partial<Record<'item' \| 'thumb', React.CSSProperties>>` | Semantic structure styles | - |
|
|
33
|
+
| options | `Array<SegmentedOption>` | Options, supports config objects or `string \| number` shorthand | - |
|
|
34
|
+
| value | `string \| number` | Controlled selected value | - |
|
|
35
|
+
| defaultValue | `string \| number` | Default selected value | - |
|
|
36
|
+
| onChange | `(value: string \| number) => void` | Callback when selected value changes | - |
|
|
37
|
+
| disabled | `boolean` | Whether to disable all options | - |
|
|
38
|
+
| size | `'small' \| 'default' \| 'large'` | Size | - |
|
|
39
|
+
| block | `boolean` | Whether to fill the container width, options share the space equally | - |
|
|
40
|
+
| name | `string` | Name of the underlying radio input, for form grouping | - |
|
|
41
|
+
|
|
42
|
+
### SegmentedOption
|
|
43
|
+
|
|
44
|
+
| Type | Description |
|
|
45
|
+
| --- | --- |
|
|
46
|
+
| `SegmentedLabeledOption` | `{ label?: ReactNode; value: string \| number; disabled?: boolean; icon?: ReactNode; className?: string }` |
|
|
47
|
+
| `SegmentedRawOption` | `string \| number`, shorthand form, label is the value cast to string |
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Components
|
|
3
|
+
title: Segmented
|
|
4
|
+
subtitle: 分段选择器
|
|
5
|
+
group:
|
|
6
|
+
title: 数据录入
|
|
7
|
+
order: 3
|
|
8
|
+
toc: 'content'
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Segmented 分段选择器
|
|
12
|
+
|
|
13
|
+
展示一组互斥选项,选中项以高亮滑块(thumb)跟随切换,常用于视图切换、模式切换等场景。
|
|
14
|
+
|
|
15
|
+
## 代码演示
|
|
16
|
+
|
|
17
|
+
<code src="./demo/basic.tsx" title="基础用法" description="Segmented 的基础用法,支持受控与非受控,options 支持配置对象或原始值简写"></code>
|
|
18
|
+
<code src="./demo/disabled.tsx" title="禁用" description="禁用单个选项或整组"></code>
|
|
19
|
+
<code src="./demo/size.tsx" title="尺寸" description="small / default / large 三种尺寸"></code>
|
|
20
|
+
<code src="./demo/block.tsx" title="撑满与图标" description="block 撑满容器宽度,选项可带图标"></code>
|
|
21
|
+
|
|
22
|
+
## API
|
|
23
|
+
|
|
24
|
+
### SegmentedProps
|
|
25
|
+
|
|
26
|
+
| 属性名 | 类型 | 描述 | 默认值 |
|
|
27
|
+
| --- | --- | --- | --- |
|
|
28
|
+
| prefixCls | `string` | 自定义类名前缀 | - |
|
|
29
|
+
| className | `string` | 自定义根类名 | - |
|
|
30
|
+
| style | `React.CSSProperties` | 自定义根样式 | - |
|
|
31
|
+
| classNames | `Partial<Record<'item' \| 'thumb', string>>` | 语义化结构类名 | - |
|
|
32
|
+
| styles | `Partial<Record<'item' \| 'thumb', React.CSSProperties>>` | 语义化结构样式 | - |
|
|
33
|
+
| options | `Array<SegmentedOption>` | 选项,支持配置对象或 `string \| number` 简写 | - |
|
|
34
|
+
| value | `string \| number` | 受控选中值 | - |
|
|
35
|
+
| defaultValue | `string \| number` | 默认选中值 | - |
|
|
36
|
+
| onChange | `(value: string \| number) => void` | 值改变时的回调 | - |
|
|
37
|
+
| disabled | `boolean` | 是否禁用所有选项 | - |
|
|
38
|
+
| size | `'small' \| 'default' \| 'large'` | 尺寸 | - |
|
|
39
|
+
| block | `boolean` | 是否撑满容器宽度,选项等分 | - |
|
|
40
|
+
| name | `string` | 底层 radio input 的 name,用于表单分组 | - |
|
|
41
|
+
|
|
42
|
+
### SegmentedOption
|
|
43
|
+
|
|
44
|
+
| 类型 | 描述 |
|
|
45
|
+
| --- | --- |
|
|
46
|
+
| `SegmentedLabeledOption` | `{ label?: ReactNode; value: string \| number; disabled?: boolean; icon?: ReactNode; className?: string }` |
|
|
47
|
+
| `SegmentedRawOption` | `string \| number`,简写形式,label 取值转字符串 |
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { DataAttributeProps } from '../utils/types';
|
|
2
|
+
|
|
3
|
+
export type SegmentedValue = string | number;
|
|
4
|
+
|
|
5
|
+
export type SegmentedSemanticDOM = 'item' | 'thumb';
|
|
6
|
+
|
|
7
|
+
export interface SegmentedLabeledOption {
|
|
8
|
+
/**
|
|
9
|
+
* Custom item class name
|
|
10
|
+
*/
|
|
11
|
+
className?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Item label
|
|
14
|
+
*/
|
|
15
|
+
label?: React.ReactNode;
|
|
16
|
+
/**
|
|
17
|
+
* Item value
|
|
18
|
+
*/
|
|
19
|
+
value: SegmentedValue;
|
|
20
|
+
/**
|
|
21
|
+
* Whether the item is disabled
|
|
22
|
+
*/
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Item icon
|
|
26
|
+
*/
|
|
27
|
+
icon?: React.ReactNode;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export type SegmentedRawOption = SegmentedValue;
|
|
31
|
+
|
|
32
|
+
export type SegmentedOption = SegmentedLabeledOption | SegmentedRawOption;
|
|
33
|
+
|
|
34
|
+
export interface SegmentedProps extends DataAttributeProps {
|
|
35
|
+
/**
|
|
36
|
+
* Custom prefix class name
|
|
37
|
+
*/
|
|
38
|
+
prefixCls?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Custom root class name
|
|
41
|
+
*/
|
|
42
|
+
className?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Custom root style
|
|
45
|
+
*/
|
|
46
|
+
style?: React.CSSProperties;
|
|
47
|
+
/**
|
|
48
|
+
* Semantic structure class names
|
|
49
|
+
*/
|
|
50
|
+
classNames?: Partial<Record<SegmentedSemanticDOM, string>>;
|
|
51
|
+
/**
|
|
52
|
+
* Semantic structure styles
|
|
53
|
+
*/
|
|
54
|
+
styles?: Partial<Record<SegmentedSemanticDOM, React.CSSProperties>>;
|
|
55
|
+
/**
|
|
56
|
+
* Options, supports config objects or primitive shorthand (string/number)
|
|
57
|
+
*/
|
|
58
|
+
options?: SegmentedOption[];
|
|
59
|
+
/**
|
|
60
|
+
* Controlled selected value
|
|
61
|
+
*/
|
|
62
|
+
value?: SegmentedValue;
|
|
63
|
+
/**
|
|
64
|
+
* Default selected value
|
|
65
|
+
*/
|
|
66
|
+
defaultValue?: SegmentedValue;
|
|
67
|
+
/**
|
|
68
|
+
* Callback when selected value changes
|
|
69
|
+
*/
|
|
70
|
+
onChange?: (value: SegmentedValue) => void;
|
|
71
|
+
/**
|
|
72
|
+
* Whether to disable all options
|
|
73
|
+
*/
|
|
74
|
+
disabled?: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Size
|
|
77
|
+
*/
|
|
78
|
+
size?: 'small' | 'default' | 'large';
|
|
79
|
+
/**
|
|
80
|
+
* Whether to fill the container width, options share the space equally
|
|
81
|
+
*/
|
|
82
|
+
block?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Group name for the underlying radio inputs
|
|
85
|
+
*/
|
|
86
|
+
name?: string;
|
|
87
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import clsx from 'clsx';
|
|
2
|
+
import React, { useContext, useId, useMemo } from 'react';
|
|
3
|
+
import { motion } from 'motion/react';
|
|
4
|
+
import { GlobalContext } from '../Config-Provider';
|
|
5
|
+
import useMergedState from '../hooks/useMergedState';
|
|
6
|
+
import mergeContextToProps from '../utils/mergeContextToProps';
|
|
7
|
+
import type {
|
|
8
|
+
SegmentedLabeledOption,
|
|
9
|
+
SegmentedOption,
|
|
10
|
+
SegmentedProps,
|
|
11
|
+
SegmentedValue,
|
|
12
|
+
} from './interface';
|
|
13
|
+
|
|
14
|
+
import './style/index.less';
|
|
15
|
+
|
|
16
|
+
const normalizeOption = (
|
|
17
|
+
option: SegmentedOption,
|
|
18
|
+
): SegmentedLabeledOption => {
|
|
19
|
+
if (typeof option === 'string' || typeof option === 'number') {
|
|
20
|
+
return { label: String(option), value: option };
|
|
21
|
+
}
|
|
22
|
+
return option;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const Segmented = React.forwardRef<HTMLDivElement, SegmentedProps>(
|
|
26
|
+
(baseprops, ref) => {
|
|
27
|
+
const { segmented } = useContext(GlobalContext);
|
|
28
|
+
const props = mergeContextToProps<SegmentedProps>(baseprops, segmented);
|
|
29
|
+
|
|
30
|
+
const uid = useId();
|
|
31
|
+
|
|
32
|
+
const {
|
|
33
|
+
prefixCls = 'yee-segmented',
|
|
34
|
+
className,
|
|
35
|
+
style,
|
|
36
|
+
classNames,
|
|
37
|
+
styles,
|
|
38
|
+
options = [],
|
|
39
|
+
value,
|
|
40
|
+
defaultValue,
|
|
41
|
+
disabled,
|
|
42
|
+
size,
|
|
43
|
+
block,
|
|
44
|
+
name = uid,
|
|
45
|
+
onChange,
|
|
46
|
+
...rest
|
|
47
|
+
} = props;
|
|
48
|
+
|
|
49
|
+
const items = useMemo(
|
|
50
|
+
() => options.map(normalizeOption),
|
|
51
|
+
[options],
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
const firstValue = items[0]?.value;
|
|
55
|
+
|
|
56
|
+
const [mergedValue, setMergedValue] = useMergedState<
|
|
57
|
+
SegmentedValue | undefined
|
|
58
|
+
>(firstValue, {
|
|
59
|
+
value,
|
|
60
|
+
defaultValue,
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
const cls = clsx(
|
|
64
|
+
prefixCls,
|
|
65
|
+
{
|
|
66
|
+
[`${prefixCls}-${size}`]: size,
|
|
67
|
+
[`${prefixCls}-block`]: block,
|
|
68
|
+
[`${prefixCls}-disabled`]: disabled,
|
|
69
|
+
},
|
|
70
|
+
className,
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
const handleChange = (itemValue: SegmentedValue) => {
|
|
74
|
+
setMergedValue(itemValue);
|
|
75
|
+
onChange?.(itemValue);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
return (
|
|
79
|
+
<div {...rest} ref={ref} className={cls} style={style} role="radiogroup">
|
|
80
|
+
{items.map((item) => {
|
|
81
|
+
const selected = item.value === mergedValue;
|
|
82
|
+
const itemDisabled = disabled || item.disabled;
|
|
83
|
+
return (
|
|
84
|
+
<label
|
|
85
|
+
key={item.value}
|
|
86
|
+
className={clsx(`${prefixCls}-item`, item.className, {
|
|
87
|
+
[`${prefixCls}-item-selected`]: selected,
|
|
88
|
+
[`${prefixCls}-item-disabled`]: itemDisabled,
|
|
89
|
+
})}
|
|
90
|
+
>
|
|
91
|
+
{selected ? (
|
|
92
|
+
<motion.span
|
|
93
|
+
layoutId={`${prefixCls}-thumb-${uid}`}
|
|
94
|
+
className={clsx(`${prefixCls}-thumb`, classNames?.thumb)}
|
|
95
|
+
style={styles?.thumb}
|
|
96
|
+
transition={{
|
|
97
|
+
type: 'spring',
|
|
98
|
+
visualDuration: 0.3,
|
|
99
|
+
bounce: 0.2,
|
|
100
|
+
}}
|
|
101
|
+
/>
|
|
102
|
+
) : null}
|
|
103
|
+
<span className={`${prefixCls}-item-inner`}>
|
|
104
|
+
{item.icon ? (
|
|
105
|
+
<span className={`${prefixCls}-item-icon`}>
|
|
106
|
+
{item.icon}
|
|
107
|
+
</span>
|
|
108
|
+
) : null}
|
|
109
|
+
{item.label !== undefined && item.label !== null ? (
|
|
110
|
+
<span className={`${prefixCls}-item-label`}>
|
|
111
|
+
{item.label}
|
|
112
|
+
</span>
|
|
113
|
+
) : null}
|
|
114
|
+
</span>
|
|
115
|
+
<input
|
|
116
|
+
type="radio"
|
|
117
|
+
className={`${prefixCls}-input`}
|
|
118
|
+
name={name}
|
|
119
|
+
value={item.value}
|
|
120
|
+
checked={selected}
|
|
121
|
+
disabled={itemDisabled}
|
|
122
|
+
onChange={() => handleChange(item.value)}
|
|
123
|
+
/>
|
|
124
|
+
</label>
|
|
125
|
+
);
|
|
126
|
+
})}
|
|
127
|
+
</div>
|
|
128
|
+
);
|
|
129
|
+
},
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
Segmented.displayName = 'Segmented';
|
|
133
|
+
|
|
134
|
+
export default Segmented;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
@pls: .yee-segmented;
|
|
2
|
+
|
|
3
|
+
@{pls} {
|
|
4
|
+
display: inline-flex;
|
|
5
|
+
box-sizing: border-box;
|
|
6
|
+
padding: var(--yee-segmented-padding);
|
|
7
|
+
border-radius: var(--yee-segmented-border-radius);
|
|
8
|
+
background-color: var(--yee-segmented-bg-color);
|
|
9
|
+
|
|
10
|
+
&-block {
|
|
11
|
+
display: flex;
|
|
12
|
+
width: 100%;
|
|
13
|
+
|
|
14
|
+
@{pls}-item {
|
|
15
|
+
flex: 1;
|
|
16
|
+
justify-content: center;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
&-disabled {
|
|
21
|
+
cursor: not-allowed;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
&-item {
|
|
25
|
+
position: relative;
|
|
26
|
+
display: inline-flex;
|
|
27
|
+
flex: none;
|
|
28
|
+
align-items: center;
|
|
29
|
+
justify-content: center;
|
|
30
|
+
box-sizing: border-box;
|
|
31
|
+
padding: var(--yee-segmented-item-padding);
|
|
32
|
+
border-radius: var(--yee-segmented-item-border-radius);
|
|
33
|
+
font-size: var(--yee-segmented-font-size);
|
|
34
|
+
color: var(--yee-segmented-item-color);
|
|
35
|
+
white-space: nowrap;
|
|
36
|
+
cursor: pointer;
|
|
37
|
+
user-select: none;
|
|
38
|
+
transition: color var(--yee-segmented-transition-duration) linear;
|
|
39
|
+
|
|
40
|
+
&:hover:not(&-disabled):not(&-selected) {
|
|
41
|
+
color: var(--yee-segmented-item-hover-color);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&-item-inner {
|
|
46
|
+
position: relative;
|
|
47
|
+
z-index: 1;
|
|
48
|
+
display: inline-flex;
|
|
49
|
+
align-items: center;
|
|
50
|
+
gap: var(--yee-segmented-item-gap);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
&-item-icon {
|
|
54
|
+
display: inline-flex;
|
|
55
|
+
align-items: center;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
&-item-selected {
|
|
59
|
+
color: var(--yee-segmented-item-selected-color);
|
|
60
|
+
cursor: default;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
&-item-disabled {
|
|
64
|
+
color: var(--yee-segmented-item-disabled-color);
|
|
65
|
+
cursor: not-allowed;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&-thumb {
|
|
69
|
+
position: absolute;
|
|
70
|
+
inset: 0;
|
|
71
|
+
z-index: 0;
|
|
72
|
+
border-radius: var(--yee-segmented-thumb-border-radius);
|
|
73
|
+
background-color: var(--yee-segmented-thumb-bg-color);
|
|
74
|
+
box-shadow: var(--yee-segmented-thumb-box-shadow);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
&-input {
|
|
78
|
+
position: absolute;
|
|
79
|
+
inset: 0;
|
|
80
|
+
width: 100%;
|
|
81
|
+
height: 100%;
|
|
82
|
+
margin: 0;
|
|
83
|
+
opacity: 0;
|
|
84
|
+
cursor: inherit;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
&-item:has(&-input:focus-visible) {
|
|
88
|
+
box-shadow: 0 0 0 2px var(--yee-primary-color);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
&-small {
|
|
92
|
+
@{pls}-item {
|
|
93
|
+
padding: var(--yee-segmented-item-small-padding);
|
|
94
|
+
font-size: var(--yee-segmented-font-small-size);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
&-large {
|
|
99
|
+
@{pls}-item {
|
|
100
|
+
padding: var(--yee-segmented-item-large-padding);
|
|
101
|
+
font-size: var(--yee-segmented-font-large-size);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
package/src/Select/option.tsx
CHANGED
|
@@ -4,7 +4,7 @@ import React, { useContext } from 'react';
|
|
|
4
4
|
import { OptionsCtx } from './options';
|
|
5
5
|
|
|
6
6
|
const Option = (props: any) => {
|
|
7
|
-
const { label, value, disabled, title } = props;
|
|
7
|
+
const { label, value, disabled, title, dataTestId } = props;
|
|
8
8
|
const { prefixCls, selectedKeys, focusedKey, onSelect } =
|
|
9
9
|
useContext(OptionsCtx);
|
|
10
10
|
|
|
@@ -37,6 +37,7 @@ const Option = (props: any) => {
|
|
|
37
37
|
role="option"
|
|
38
38
|
tabIndex={disabled ? undefined : 0}
|
|
39
39
|
title={htmlTitle}
|
|
40
|
+
data-testid={dataTestId}
|
|
40
41
|
>
|
|
41
42
|
{label}
|
|
42
43
|
</div>
|
package/src/Select/options.tsx
CHANGED
|
@@ -16,6 +16,7 @@ const Options = forwardRef((props: any, ref: React.Ref<HTMLDivElement>) => {
|
|
|
16
16
|
popupStyle,
|
|
17
17
|
selectedKeys,
|
|
18
18
|
focusedKey,
|
|
19
|
+
dataTestId,
|
|
19
20
|
onSelect,
|
|
20
21
|
...rest
|
|
21
22
|
} = props;
|
|
@@ -37,8 +38,12 @@ const Options = forwardRef((props: any, ref: React.Ref<HTMLDivElement>) => {
|
|
|
37
38
|
<OptionsCtx.Provider
|
|
38
39
|
value={{ prefixCls, selectedKeys, focusedKey, onSelect }}
|
|
39
40
|
>
|
|
40
|
-
{options.map((option: any) => (
|
|
41
|
-
<Option
|
|
41
|
+
{options.map((option: any, index: number) => (
|
|
42
|
+
<Option
|
|
43
|
+
{...option}
|
|
44
|
+
key={option.value}
|
|
45
|
+
dataTestId={`${dataTestId}-${index}`}
|
|
46
|
+
/>
|
|
42
47
|
))}
|
|
43
48
|
</OptionsCtx.Provider>
|
|
44
49
|
)}
|
package/src/Select/select.tsx
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Card, Skeleton
|
|
1
|
+
import { Card, Skeleton } from '@rainbow-oh/yee-c';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
4
|
export default () => {
|
|
5
5
|
return (
|
|
6
|
-
<
|
|
6
|
+
<div>
|
|
7
7
|
<Card title="Basic Placeholder">
|
|
8
8
|
<Skeleton />
|
|
9
9
|
</Card>
|
|
@@ -19,6 +19,6 @@ export default () => {
|
|
|
19
19
|
paragraph={{ rows: 3, width: ['100%', '80%', '60%'] }}
|
|
20
20
|
/>
|
|
21
21
|
</Card>
|
|
22
|
-
</
|
|
22
|
+
</div>
|
|
23
23
|
);
|
|
24
24
|
};
|
package/src/Space/interface.ts
CHANGED
|
@@ -27,6 +27,10 @@ export interface SpaceProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
27
27
|
* Alignment
|
|
28
28
|
*/
|
|
29
29
|
align?: 'center' | 'start' | 'end' | 'baseline' | 'flex-start';
|
|
30
|
+
/***
|
|
31
|
+
* Justify content
|
|
32
|
+
* */
|
|
33
|
+
justify?: 'start' | 'end' | 'center' | 'space-around' | 'space-between';
|
|
30
34
|
/**
|
|
31
35
|
* Whether to take up the entire row
|
|
32
36
|
*/
|
package/src/Space/space.tsx
CHANGED
|
@@ -14,6 +14,7 @@ const Space = forwardRef<HTMLDivElement, SpaceProps>((baseprops, ref) => {
|
|
|
14
14
|
gap = 16,
|
|
15
15
|
direction = 'horizontal',
|
|
16
16
|
align = direction === 'horizontal' ? 'center' : undefined,
|
|
17
|
+
justify,
|
|
17
18
|
wrap,
|
|
18
19
|
className,
|
|
19
20
|
style,
|
|
@@ -45,25 +46,47 @@ const Space = forwardRef<HTMLDivElement, SpaceProps>((baseprops, ref) => {
|
|
|
45
46
|
if (!children) {
|
|
46
47
|
return null;
|
|
47
48
|
}
|
|
49
|
+
|
|
50
|
+
const loop = (childs: React.ReactNode[]) => {
|
|
51
|
+
let res = [] as React.ReactElement[];
|
|
52
|
+
|
|
53
|
+
childs.forEach((child, index) => {
|
|
54
|
+
const isItem =
|
|
55
|
+
React.isValidElement(child) && (child.type as any).isSpaceItem;
|
|
56
|
+
const itemClassName = isItem
|
|
57
|
+
? (child.props as any).className
|
|
58
|
+
: undefined;
|
|
59
|
+
const itemStyle = isItem ? (child.props as any).style : undefined;
|
|
60
|
+
const itemChildren = isItem ? (child.props as any).children : child;
|
|
61
|
+
|
|
62
|
+
if (React.isValidElement(child) && child.type === React.Fragment) {
|
|
63
|
+
res = res.concat(
|
|
64
|
+
loop(React.Children.toArray((child.props as any).children)),
|
|
65
|
+
);
|
|
66
|
+
} else {
|
|
67
|
+
res.push(
|
|
68
|
+
<div
|
|
69
|
+
className={clsx(
|
|
70
|
+
`${prefixCls}-item`,
|
|
71
|
+
classNames?.item,
|
|
72
|
+
itemClassName,
|
|
73
|
+
)}
|
|
74
|
+
style={{ ...styles?.item, ...itemStyle }}
|
|
75
|
+
key={index}
|
|
76
|
+
>
|
|
77
|
+
{itemChildren}
|
|
78
|
+
</div>,
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
return res;
|
|
83
|
+
};
|
|
84
|
+
|
|
48
85
|
const childs = React.Children.toArray(children).filter(
|
|
49
86
|
(child) => child !== null && child !== undefined,
|
|
50
87
|
);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
React.isValidElement(child) && (child.type as any).isSpaceItem;
|
|
54
|
-
const itemClassName = isItem ? (child.props as any).className : undefined;
|
|
55
|
-
const itemStyle = isItem ? (child.props as any).style : undefined;
|
|
56
|
-
const itemChildren = isItem ? (child.props as any).children : child;
|
|
57
|
-
return (
|
|
58
|
-
<div
|
|
59
|
-
className={clsx(`${prefixCls}-item`, classNames?.item, itemClassName)}
|
|
60
|
-
style={{ ...styles?.item, ...itemStyle }}
|
|
61
|
-
key={index}
|
|
62
|
-
>
|
|
63
|
-
{itemChildren}
|
|
64
|
-
</div>
|
|
65
|
-
);
|
|
66
|
-
});
|
|
88
|
+
|
|
89
|
+
return loop(childs);
|
|
67
90
|
};
|
|
68
91
|
|
|
69
92
|
const packed = pack();
|
|
@@ -76,6 +99,7 @@ const Space = forwardRef<HTMLDivElement, SpaceProps>((baseprops, ref) => {
|
|
|
76
99
|
width: block ? '100%' : undefined,
|
|
77
100
|
gap: gap + 'px',
|
|
78
101
|
alignItems: getAlign(),
|
|
102
|
+
justifyContent: justify,
|
|
79
103
|
...style,
|
|
80
104
|
}}
|
|
81
105
|
ref={componentRef}
|
package/src/Spin/spin.tsx
CHANGED
|
@@ -6,12 +6,12 @@ export default () => {
|
|
|
6
6
|
<div style={{ height: 300 }}>
|
|
7
7
|
<Splitter>
|
|
8
8
|
<Splitter.Item>
|
|
9
|
-
<div style={{ padding: 16, backgroundColor: '#f0f0f0' }}>
|
|
9
|
+
<div style={{ margin: 8, padding: 16, backgroundColor: '#f0f0f0' }}>
|
|
10
10
|
Left Panel
|
|
11
11
|
</div>
|
|
12
12
|
</Splitter.Item>
|
|
13
13
|
<Splitter.Item>
|
|
14
|
-
<div style={{ padding: 16, backgroundColor: '#e0e0e0' }}>
|
|
14
|
+
<div style={{ margin: 8, padding: 16, backgroundColor: '#e0e0e0' }}>
|
|
15
15
|
Right Panel
|
|
16
16
|
</div>
|
|
17
17
|
</Splitter.Item>
|
|
@@ -3,15 +3,29 @@ import React from 'react';
|
|
|
3
3
|
|
|
4
4
|
export default () => {
|
|
5
5
|
return (
|
|
6
|
-
<div style={{ height:
|
|
6
|
+
<div style={{ height: 500 }}>
|
|
7
7
|
<Splitter layout="vertical">
|
|
8
|
-
<Splitter.Item>
|
|
9
|
-
<div
|
|
8
|
+
<Splitter.Item size={250}>
|
|
9
|
+
<div
|
|
10
|
+
style={{
|
|
11
|
+
marginBottom: 8,
|
|
12
|
+
padding: 16,
|
|
13
|
+
backgroundColor: '#f0f0f0',
|
|
14
|
+
height: '100%',
|
|
15
|
+
}}
|
|
16
|
+
>
|
|
10
17
|
Top Panel
|
|
11
18
|
</div>
|
|
12
19
|
</Splitter.Item>
|
|
13
|
-
<Splitter.Item>
|
|
14
|
-
<div
|
|
20
|
+
<Splitter.Item size={250}>
|
|
21
|
+
<div
|
|
22
|
+
style={{
|
|
23
|
+
marginTop: 8,
|
|
24
|
+
padding: 16,
|
|
25
|
+
backgroundColor: '#e0e0e0',
|
|
26
|
+
height: '100%',
|
|
27
|
+
}}
|
|
28
|
+
>
|
|
15
29
|
Bottom Panel
|
|
16
30
|
</div>
|
|
17
31
|
</Splitter.Item>
|
package/src/Splitter/index.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import InternalSplitter from './splitter';
|
|
2
2
|
import Item from './splitter-item';
|
|
3
3
|
|
|
4
|
-
export type {
|
|
4
|
+
export type {
|
|
5
|
+
SplitterItemProps,
|
|
6
|
+
PanelRect as SplitterPanelRect,
|
|
7
|
+
SplitterProps,
|
|
8
|
+
} from './interface';
|
|
5
9
|
|
|
6
10
|
type SplitterType = typeof InternalSplitter & {
|
|
7
11
|
Item: typeof Item;
|