@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
|
@@ -49,7 +49,15 @@ export interface TabHeaderProps {
|
|
|
49
49
|
|
|
50
50
|
const TabHeader: React.FC<TabHeaderProps> = (props) => {
|
|
51
51
|
const { items, activeKey } = useContext(TabsCtx);
|
|
52
|
-
const {
|
|
52
|
+
const {
|
|
53
|
+
prefixCls,
|
|
54
|
+
type,
|
|
55
|
+
position = 'top',
|
|
56
|
+
headerExtra,
|
|
57
|
+
classNames,
|
|
58
|
+
styles,
|
|
59
|
+
onEdit,
|
|
60
|
+
} = props;
|
|
53
61
|
|
|
54
62
|
const direction =
|
|
55
63
|
position === 'top' || position === 'bottom' ? 'horizontal' : 'vertical';
|
|
@@ -135,6 +143,7 @@ const TabHeader: React.FC<TabHeaderProps> = (props) => {
|
|
|
135
143
|
const cls = clsx(
|
|
136
144
|
`${prefixCls}-nav-wrapper`,
|
|
137
145
|
`${prefixCls}-nav-wrapper-${position}`,
|
|
146
|
+
classNames?.header,
|
|
138
147
|
);
|
|
139
148
|
|
|
140
149
|
const contextValue = {
|
|
@@ -147,12 +156,20 @@ const TabHeader: React.FC<TabHeaderProps> = (props) => {
|
|
|
147
156
|
} as TabHeaderCtxType;
|
|
148
157
|
|
|
149
158
|
return (
|
|
150
|
-
<div className={cls}>
|
|
159
|
+
<div className={cls} style={styles?.header}>
|
|
151
160
|
{renderPrefixExtra()}
|
|
152
161
|
|
|
153
162
|
<TabHeaderCtx.Provider value={contextValue}>
|
|
154
|
-
<div
|
|
155
|
-
|
|
163
|
+
<div
|
|
164
|
+
className={clsx(`${prefixCls}-nav-wrap`, classNames?.track)}
|
|
165
|
+
style={styles?.track}
|
|
166
|
+
ref={navContainer}
|
|
167
|
+
>
|
|
168
|
+
<div
|
|
169
|
+
className={clsx(`${prefixCls}-nav-list`, classNames?.list)}
|
|
170
|
+
style={styles?.list}
|
|
171
|
+
ref={navList}
|
|
172
|
+
>
|
|
156
173
|
{items?.map((item: TabItemType, index: number) => (
|
|
157
174
|
<TabHeaderTitle
|
|
158
175
|
{...item}
|
|
@@ -164,7 +181,11 @@ const TabHeader: React.FC<TabHeaderProps> = (props) => {
|
|
|
164
181
|
|
|
165
182
|
{!type && (
|
|
166
183
|
<div
|
|
167
|
-
className={
|
|
184
|
+
className={clsx(
|
|
185
|
+
`${prefixCls}-active-bar`,
|
|
186
|
+
classNames?.activeBar,
|
|
187
|
+
)}
|
|
188
|
+
style={styles?.activeBar}
|
|
168
189
|
ref={activebar}
|
|
169
190
|
aria-hidden="true"
|
|
170
191
|
/>
|
package/src/Tag/demo/size.tsx
CHANGED
|
@@ -4,13 +4,13 @@ import React from 'react';
|
|
|
4
4
|
export default () => {
|
|
5
5
|
return (
|
|
6
6
|
<Space direction="vertical">
|
|
7
|
-
<Space>
|
|
7
|
+
<Space block>
|
|
8
8
|
<Tag size="small">Small</Tag>
|
|
9
9
|
<Tag size="default">Default</Tag>
|
|
10
10
|
<Tag size="large">Large</Tag>
|
|
11
11
|
</Space>
|
|
12
12
|
|
|
13
|
-
<Space>
|
|
13
|
+
<Space block>
|
|
14
14
|
<Tag size="small" status="success">
|
|
15
15
|
Small Success
|
|
16
16
|
</Tag>
|
package/src/Tag/style/index.less
CHANGED
|
@@ -28,6 +28,7 @@ A simple text popup tip.
|
|
|
28
28
|
| --- | --- | --- | --- |
|
|
29
29
|
| title | `React.ReactNode \| (() => React.ReactNode)` | Tooltip content | - |
|
|
30
30
|
| mouseEnterDelay | `number` | Mouse enter delay time (seconds) | `0.1` |
|
|
31
|
+
| color | `string` | Custom tooltip background color (applies to both the bubble and the arrow) | - |
|
|
31
32
|
|
|
32
33
|
Other properties are inherited from [Trigger](/components/trigger), including:
|
|
33
34
|
|
|
@@ -28,6 +28,7 @@ toc: 'content'
|
|
|
28
28
|
| --- | --- | --- | --- |
|
|
29
29
|
| title | `React.ReactNode \| (() => React.ReactNode)` | 提示文字 | - |
|
|
30
30
|
| mouseEnterDelay | `number` | 鼠标移入后延时多少秒才显示 Tooltip | `0.1` |
|
|
31
|
+
| color | `string` | 自定义提示背景色(同时作用于气泡和箭头) | - |
|
|
31
32
|
|
|
32
33
|
其他属性继承自 [Trigger](/components/trigger),包括:
|
|
33
34
|
|
package/src/Tooltip/interface.ts
CHANGED
|
@@ -8,19 +8,19 @@
|
|
|
8
8
|
|
|
9
9
|
&-arrow {
|
|
10
10
|
&::after {
|
|
11
|
-
position: absolute;
|
|
12
|
-
bottom: 0;
|
|
13
|
-
z-index: 0;
|
|
14
|
-
width: var(--yee-tooltip-arrow-width);
|
|
15
|
-
height: var(--yee-tooltip-arrow-height);
|
|
16
|
-
margin: auto;
|
|
11
|
+
// position: absolute;
|
|
12
|
+
// bottom: 0;
|
|
13
|
+
// z-index: 0;
|
|
14
|
+
// width: var(--yee-tooltip-arrow-width);
|
|
15
|
+
// height: var(--yee-tooltip-arrow-height);
|
|
16
|
+
// margin: auto;
|
|
17
17
|
background-color: var(--yee-tooltip-bg-color);
|
|
18
18
|
border-radius: var(--yee-tooltip-arrow-border-radius);
|
|
19
19
|
box-shadow: var(--yee-box-shadow-popover-arrow);
|
|
20
20
|
transform: translateY(var(--yee-tooltip-arrow-translate-y))
|
|
21
21
|
rotate(var(--yee-tooltip-arrow-rotate));
|
|
22
|
-
content: '';
|
|
23
|
-
inset-inline: 0;
|
|
22
|
+
// content: '';
|
|
23
|
+
// inset-inline: 0;
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
}
|
package/src/Tooltip/tooltip.tsx
CHANGED
|
@@ -17,9 +17,17 @@ const Tooltip = (baseprops: TooltipProps) => {
|
|
|
17
17
|
placement = 'top',
|
|
18
18
|
trigger = ['hover', 'focus'],
|
|
19
19
|
mouseEnterDelay = 0.1,
|
|
20
|
+
color,
|
|
21
|
+
popupStyle,
|
|
22
|
+
hideOnClick = false,
|
|
20
23
|
...rest
|
|
21
24
|
} = props;
|
|
22
25
|
|
|
26
|
+
const mergedPopupStyle = {
|
|
27
|
+
...(color ? { ['--yee-tooltip-bg-color']: color } : null),
|
|
28
|
+
...popupStyle,
|
|
29
|
+
} as React.CSSProperties;
|
|
30
|
+
|
|
23
31
|
const popup = (
|
|
24
32
|
<span className={`${prefixCls}-content`} role="tooltip">
|
|
25
33
|
{typeof title === 'function' ? title() : title}
|
|
@@ -34,7 +42,8 @@ const Tooltip = (baseprops: TooltipProps) => {
|
|
|
34
42
|
popup={popup}
|
|
35
43
|
arrow={arrow}
|
|
36
44
|
placement={placement}
|
|
37
|
-
hideOnClick={
|
|
45
|
+
hideOnClick={hideOnClick}
|
|
46
|
+
popupStyle={mergedPopupStyle}
|
|
38
47
|
mouseEnterDelay={mouseEnterDelay}
|
|
39
48
|
>
|
|
40
49
|
{children}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Button, Space, Tour } from '@rainbow-oh/yee-c';
|
|
2
|
+
import React, { useRef, useState } from 'react';
|
|
3
|
+
|
|
4
|
+
export default () => {
|
|
5
|
+
const [open, setOpen] = useState(false);
|
|
6
|
+
const startRef = useRef<HTMLDivElement>(null);
|
|
7
|
+
const midRef = useRef<HTMLDivElement>(null);
|
|
8
|
+
const endRef = useRef<HTMLDivElement>(null);
|
|
9
|
+
|
|
10
|
+
return (
|
|
11
|
+
<Space direction="vertical">
|
|
12
|
+
<Space>
|
|
13
|
+
<div ref={startRef} style={{ display: 'inline-block' }}>
|
|
14
|
+
<Button type="primary" onClick={() => setOpen(true)}>
|
|
15
|
+
开始引导
|
|
16
|
+
</Button>
|
|
17
|
+
</div>
|
|
18
|
+
<div ref={midRef} style={{ display: 'inline-block' }}>
|
|
19
|
+
<Button>导出</Button>
|
|
20
|
+
</div>
|
|
21
|
+
<div ref={endRef} style={{ display: 'inline-block' }}>
|
|
22
|
+
<Button>设置</Button>
|
|
23
|
+
</div>
|
|
24
|
+
</Space>
|
|
25
|
+
|
|
26
|
+
<Tour
|
|
27
|
+
open={open}
|
|
28
|
+
onClose={() => setOpen(false)}
|
|
29
|
+
onFinish={() => setOpen(false)}
|
|
30
|
+
steps={[
|
|
31
|
+
{
|
|
32
|
+
target: () => startRef.current,
|
|
33
|
+
title: '欢迎使用',
|
|
34
|
+
description: '点击此处开始你的操作流程。',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
target: () => midRef.current,
|
|
38
|
+
title: '导出数据',
|
|
39
|
+
description: '在这里可以将数据导出为文件。',
|
|
40
|
+
placement: 'bottom',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
target: () => endRef.current,
|
|
44
|
+
title: '系统设置',
|
|
45
|
+
description: '配置系统参数。点击「完成」结束引导。',
|
|
46
|
+
placement: 'left',
|
|
47
|
+
},
|
|
48
|
+
]}
|
|
49
|
+
/>
|
|
50
|
+
</Space>
|
|
51
|
+
);
|
|
52
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Button, Space, Tour } from '@rainbow-oh/yee-c';
|
|
2
|
+
import React, { useRef, useState } from 'react';
|
|
3
|
+
|
|
4
|
+
export default () => {
|
|
5
|
+
const [open, setOpen] = useState(false);
|
|
6
|
+
const aRef = useRef<HTMLDivElement>(null);
|
|
7
|
+
const bRef = useRef<HTMLDivElement>(null);
|
|
8
|
+
|
|
9
|
+
return (
|
|
10
|
+
<Space direction="vertical">
|
|
11
|
+
<Space>
|
|
12
|
+
<div ref={aRef} style={{ display: 'inline-block' }}>
|
|
13
|
+
<Button>导入</Button>
|
|
14
|
+
</div>
|
|
15
|
+
<div ref={bRef} style={{ display: 'inline-block' }}>
|
|
16
|
+
<Button>筛选</Button>
|
|
17
|
+
</div>
|
|
18
|
+
<Button type="primary" onClick={() => setOpen(true)}>
|
|
19
|
+
开始
|
|
20
|
+
</Button>
|
|
21
|
+
</Space>
|
|
22
|
+
|
|
23
|
+
<Tour
|
|
24
|
+
open={open}
|
|
25
|
+
onClose={() => setOpen(false)}
|
|
26
|
+
onFinish={() => setOpen(false)}
|
|
27
|
+
indicatorsRender={(current, total) => (
|
|
28
|
+
<>
|
|
29
|
+
{Array.from({ length: total }).map((_, i) => (
|
|
30
|
+
<span
|
|
31
|
+
key={i}
|
|
32
|
+
style={{
|
|
33
|
+
display: 'inline-block',
|
|
34
|
+
width: 8,
|
|
35
|
+
height: 8,
|
|
36
|
+
marginInlineEnd: 4,
|
|
37
|
+
borderRadius: '50%',
|
|
38
|
+
background:
|
|
39
|
+
i === current
|
|
40
|
+
? 'var(--yee-primary-color)'
|
|
41
|
+
: 'var(--yee-border-color)',
|
|
42
|
+
transition: 'background 0.2s',
|
|
43
|
+
}}
|
|
44
|
+
/>
|
|
45
|
+
))}
|
|
46
|
+
</>
|
|
47
|
+
)}
|
|
48
|
+
steps={[
|
|
49
|
+
{
|
|
50
|
+
target: () => aRef.current,
|
|
51
|
+
title: '导入',
|
|
52
|
+
description: '点击此处导入数据文件。',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
target: () => bRef.current,
|
|
56
|
+
title: '筛选',
|
|
57
|
+
description: '在这里筛选你需要的数据。',
|
|
58
|
+
},
|
|
59
|
+
]}
|
|
60
|
+
/>
|
|
61
|
+
</Space>
|
|
62
|
+
);
|
|
63
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Button, Space, Tour } from '@rainbow-oh/yee-c';
|
|
2
|
+
import React, { useRef, useState } from 'react';
|
|
3
|
+
|
|
4
|
+
const placements = ['top', 'right', 'bottom', 'left'] as const;
|
|
5
|
+
type P = (typeof placements)[number];
|
|
6
|
+
|
|
7
|
+
export default () => {
|
|
8
|
+
const [open, setOpen] = useState(false);
|
|
9
|
+
const [p, setP] = useState<P>('top');
|
|
10
|
+
const targetRef = useRef<HTMLDivElement>(null);
|
|
11
|
+
|
|
12
|
+
return (
|
|
13
|
+
<Space direction="vertical">
|
|
14
|
+
<Space>
|
|
15
|
+
{placements.map((pl) => (
|
|
16
|
+
<Button
|
|
17
|
+
key={pl}
|
|
18
|
+
type={p === pl ? 'primary' : 'default'}
|
|
19
|
+
onClick={() => {
|
|
20
|
+
setP(pl);
|
|
21
|
+
setOpen(true);
|
|
22
|
+
}}
|
|
23
|
+
>
|
|
24
|
+
{pl}
|
|
25
|
+
</Button>
|
|
26
|
+
))}
|
|
27
|
+
</Space>
|
|
28
|
+
|
|
29
|
+
<div
|
|
30
|
+
ref={targetRef}
|
|
31
|
+
style={{
|
|
32
|
+
display: 'inline-block',
|
|
33
|
+
padding: '16px 24px',
|
|
34
|
+
border: '1px dashed var(--yee-border-color)',
|
|
35
|
+
borderRadius: 6,
|
|
36
|
+
}}
|
|
37
|
+
>
|
|
38
|
+
目标元素
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<Tour
|
|
42
|
+
open={open}
|
|
43
|
+
placement={p}
|
|
44
|
+
onClose={() => setOpen(false)}
|
|
45
|
+
steps={[
|
|
46
|
+
{
|
|
47
|
+
target: () => targetRef.current,
|
|
48
|
+
title: `placement: ${p}`,
|
|
49
|
+
description: '气泡卡片相对目标元素的位置;靠近视口边缘时会自动翻转。',
|
|
50
|
+
},
|
|
51
|
+
]}
|
|
52
|
+
/>
|
|
53
|
+
</Space>
|
|
54
|
+
);
|
|
55
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Button, Space, Tour } from '@rainbow-oh/yee-c';
|
|
2
|
+
import React, { useRef, useState } from 'react';
|
|
3
|
+
|
|
4
|
+
export default () => {
|
|
5
|
+
const [open, setOpen] = useState(false);
|
|
6
|
+
const farRef = useRef<HTMLDivElement>(null);
|
|
7
|
+
|
|
8
|
+
return (
|
|
9
|
+
<Space direction="vertical" style={{ width: '100%' }}>
|
|
10
|
+
<Button type="primary" onClick={() => setOpen(true)}>
|
|
11
|
+
开始引导(自动滚动定位)
|
|
12
|
+
</Button>
|
|
13
|
+
|
|
14
|
+
<div
|
|
15
|
+
style={{
|
|
16
|
+
height: 600,
|
|
17
|
+
padding: 24,
|
|
18
|
+
background: 'var(--yee-color-bg-layout)',
|
|
19
|
+
borderRadius: 8,
|
|
20
|
+
color: '#999',
|
|
21
|
+
}}
|
|
22
|
+
>
|
|
23
|
+
↓ 目标在下方,切换步骤时引导会自动滚动定位
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div ref={farRef} style={{ display: 'inline-block' }}>
|
|
27
|
+
<Button>远处的目标</Button>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<Tour
|
|
31
|
+
open={open}
|
|
32
|
+
onClose={() => setOpen(false)}
|
|
33
|
+
onFinish={() => setOpen(false)}
|
|
34
|
+
steps={[
|
|
35
|
+
{
|
|
36
|
+
target: () => farRef.current,
|
|
37
|
+
title: '滚动定位',
|
|
38
|
+
description: '切换到这一步时,目标会自动滚动到视口内。',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
target: '#tour-nonexistent-target',
|
|
42
|
+
title: '目标不存在',
|
|
43
|
+
description: '找不到目标元素时,卡片居中显示(无高亮)。',
|
|
44
|
+
},
|
|
45
|
+
]}
|
|
46
|
+
/>
|
|
47
|
+
</Space>
|
|
48
|
+
);
|
|
49
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Components
|
|
3
|
+
title: Tour
|
|
4
|
+
subtitle: Tour
|
|
5
|
+
group:
|
|
6
|
+
title: Feedback
|
|
7
|
+
order: 29
|
|
8
|
+
toc: 'content'
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Tour
|
|
12
|
+
|
|
13
|
+
Step-by-step guided tour: full-screen mask + highlighted target element + attached explanation card, with multi-step navigation, progress indicators, and automatic scroll-into-view. Commonly used for feature walkthroughs and new-user onboarding.
|
|
14
|
+
|
|
15
|
+
## Code Demo
|
|
16
|
+
|
|
17
|
+
<code src="./demo/basic.tsx" title="Basic" description="Multi-step tour, controlled open, with previous/next/finish/skip"></code>
|
|
18
|
+
<code src="./demo/placement.tsx" title="Placement" description="Card placement relative to the target; auto-flips near viewport edges"></code>
|
|
19
|
+
<code src="./demo/indicators.tsx" title="Custom Indicators" description="Customize step indicators via indicatorsRender"></code>
|
|
20
|
+
<code src="./demo/scroll.tsx" title="Scroll & Fallback" description="Auto scroll-into-view on step change; centered card when target is missing"></code>
|
|
21
|
+
|
|
22
|
+
## API
|
|
23
|
+
|
|
24
|
+
### TourProps
|
|
25
|
+
|
|
26
|
+
| Property | Type | Description | Default |
|
|
27
|
+
| --- | --- | --- | --- |
|
|
28
|
+
| open | `boolean` | Whether the tour is visible (controlled) | - |
|
|
29
|
+
| steps | `TourStep[]` | Tour steps | - |
|
|
30
|
+
| current | `number` | Controlled current step index | - |
|
|
31
|
+
| defaultCurrent | `number` | Default current step index | `0` |
|
|
32
|
+
| onClose | `() => void` | Callback when closed / skipped | - |
|
|
33
|
+
| onFinish | `() => void` | Callback when all steps are finished | - |
|
|
34
|
+
| onChange | `(current: number) => void` | Callback when current step changes | - |
|
|
35
|
+
| placement | `Placement` | Default card placement | `'bottom'` |
|
|
36
|
+
| arrow | `boolean` | Whether to show the card arrow | - |
|
|
37
|
+
| mask | `boolean` | Whether to show the mask (highlight cutout + click lock) | `true` |
|
|
38
|
+
| closable | `boolean` | Whether the top-right close button is shown | `true` |
|
|
39
|
+
| closeIcon | `React.ReactNode` | Custom close icon | - |
|
|
40
|
+
| maskClosable | `boolean` | Whether clicking the mask closes the tour | `false` |
|
|
41
|
+
| indicatorsRender | `(current: number, total: number) => React.ReactNode` | Custom step indicators | default `current+1 / total` |
|
|
42
|
+
| scrollIntoViewOptions | `boolean \| ScrollIntoViewOptions` | Options for target.scrollIntoView on each step | `true` |
|
|
43
|
+
| className / style | | Custom root class/style | - |
|
|
44
|
+
| classNames / styles | `Partial<Record<'highlight' \| 'content' \| 'header' \| 'body' \| 'footer', …>>` | Semantic structure class/style | - |
|
|
45
|
+
|
|
46
|
+
> `Placement` = `'top' \| 'right' \| 'bottom' \| 'left' \| 'topLeft' \| 'topRight' \| 'bottomLeft' \| 'bottomRight' \| 'leftTop' \| 'leftBottom' \| 'rightTop' \| 'rightBottom'`, same as `Trigger`.
|
|
47
|
+
|
|
48
|
+
### TourStep
|
|
49
|
+
|
|
50
|
+
| Property | Type | Description | Default |
|
|
51
|
+
| --- | --- | --- | --- |
|
|
52
|
+
| target | `(() => HTMLElement \| null) \| string \| HTMLElement` | Highlight target (finder function / CSS selector / element) | - |
|
|
53
|
+
| title | `React.ReactNode` | Card title | - |
|
|
54
|
+
| description | `React.ReactNode` | Card description | - |
|
|
55
|
+
| placement | `Placement` | Card placement for this step, overrides TourProps.placement | - |
|
|
56
|
+
| arrow | `boolean` | Whether to show the arrow for this step | - |
|
|
57
|
+
| className | `string` | Custom card class name for this step | - |
|
|
58
|
+
|
|
59
|
+
### Built-in text
|
|
60
|
+
|
|
61
|
+
Button labels (previous/next/finish/skip) come from `locale.tour` (`previous`/`next`/`finish`/`skip`) and follow the `ConfigProvider` locale; override via the language pack or `ConfigProvider.value.tour`.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Components
|
|
3
|
+
title: Tour
|
|
4
|
+
subtitle: 新手引导
|
|
5
|
+
group:
|
|
6
|
+
title: 反馈
|
|
7
|
+
order: 29
|
|
8
|
+
toc: 'content'
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Tour 新手引导
|
|
12
|
+
|
|
13
|
+
步骤式新手引导:全屏遮罩 + 高亮目标元素 + 贴附说明卡片,支持多步推进、进度指示、自动滚动定位。常用于产品功能向导、新用户 onboarding。
|
|
14
|
+
|
|
15
|
+
## 代码演示
|
|
16
|
+
|
|
17
|
+
<code src="./demo/basic.tsx" title="基础用法" description="多步引导,受控 open,支持上一步/下一步/完成/跳过"></code>
|
|
18
|
+
<code src="./demo/placement.tsx" title="气泡位置" description="卡片相对目标的 placement,靠近视口边缘时自动翻转"></code>
|
|
19
|
+
<code src="./demo/indicators.tsx" title="自定义进度指示" description="通过 indicatorsRender 自定义步骤进度点"></code>
|
|
20
|
+
<code src="./demo/scroll.tsx" title="滚动定位与容错" description="切换步骤时自动滚动到目标;目标不存在时卡片居中"></code>
|
|
21
|
+
|
|
22
|
+
## API
|
|
23
|
+
|
|
24
|
+
### TourProps
|
|
25
|
+
|
|
26
|
+
| 属性名 | 类型 | 描述 | 默认值 |
|
|
27
|
+
| --- | --- | --- | --- |
|
|
28
|
+
| open | `boolean` | 是否显示引导(受控) | - |
|
|
29
|
+
| steps | `TourStep[]` | 引导步骤 | - |
|
|
30
|
+
| current | `number` | 受控当前步骤索引 | - |
|
|
31
|
+
| defaultCurrent | `number` | 默认当前步骤索引 | `0` |
|
|
32
|
+
| onClose | `() => void` | 关闭/跳过时的回调 | - |
|
|
33
|
+
| onFinish | `() => void` | 完成全部步骤时的回调 | - |
|
|
34
|
+
| onChange | `(current: number) => void` | 步骤变化时的回调 | - |
|
|
35
|
+
| placement | `Placement` | 卡片默认位置 | `'bottom'` |
|
|
36
|
+
| arrow | `boolean` | 是否显示卡片箭头 | - |
|
|
37
|
+
| mask | `boolean` | 是否显示遮罩(含高亮挖洞与点击锁定) | `true` |
|
|
38
|
+
| closable | `boolean` | 是否显示右上关闭按钮 | `true` |
|
|
39
|
+
| closeIcon | `React.ReactNode` | 自定义关闭图标 | - |
|
|
40
|
+
| maskClosable | `boolean` | 点击遮罩是否关闭 | `false` |
|
|
41
|
+
| indicatorsRender | `(current: number, total: number) => React.ReactNode` | 自定义进度指示 | 默认 `current+1 / total` |
|
|
42
|
+
| scrollIntoViewOptions | `boolean \| ScrollIntoViewOptions` | 切换步骤时目标 scrollIntoView 的参数 | `true` |
|
|
43
|
+
| className / style | | 自定义根类名/样式 | - |
|
|
44
|
+
| classNames / styles | `Partial<Record<'highlight' \| 'content' \| 'header' \| 'body' \| 'footer', …>>` | 语义化结构类名/样式 | - |
|
|
45
|
+
|
|
46
|
+
> `Placement` = `'top' \| 'right' \| 'bottom' \| 'left' \| 'topLeft' \| 'topRight' \| 'bottomLeft' \| 'bottomRight' \| 'leftTop' \| 'leftBottom' \| 'rightTop' \| 'rightBottom'`,与 `Trigger` 一致。
|
|
47
|
+
|
|
48
|
+
### TourStep
|
|
49
|
+
|
|
50
|
+
| 属性名 | 类型 | 描述 | 默认值 |
|
|
51
|
+
| --- | --- | --- | --- |
|
|
52
|
+
| target | `(() => HTMLElement \| null) \| string \| HTMLElement` | 高亮目标(查找函数 / CSS 选择器 / 元素) | - |
|
|
53
|
+
| title | `React.ReactNode` | 卡片标题 | - |
|
|
54
|
+
| description | `React.ReactNode` | 卡片描述 | - |
|
|
55
|
+
| placement | `Placement` | 该步卡片位置,覆盖 TourProps.placement | - |
|
|
56
|
+
| arrow | `boolean` | 该步是否显示箭头 | - |
|
|
57
|
+
| className | `string` | 该步卡片自定义类名 | - |
|
|
58
|
+
|
|
59
|
+
### 内置文案
|
|
60
|
+
|
|
61
|
+
按钮(上一步/下一步/完成/跳过)与进度文案取自 `locale.tour`(`previous`/`next`/`finish`/`skip`),随 `ConfigProvider` 的 locale 切换;可通过语言包或 `ConfigProvider.value.tour` 覆盖。
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { Placement } from '../Trigger/interface';
|
|
2
|
+
import type { DataAttributeProps } from '../utils/types';
|
|
3
|
+
|
|
4
|
+
export type TourTarget = (() => HTMLElement | null) | string | HTMLElement;
|
|
5
|
+
|
|
6
|
+
export type TourSemanticDOM =
|
|
7
|
+
| 'highlight'
|
|
8
|
+
| 'content'
|
|
9
|
+
| 'header'
|
|
10
|
+
| 'body'
|
|
11
|
+
| 'footer';
|
|
12
|
+
|
|
13
|
+
export interface TourStep {
|
|
14
|
+
/**
|
|
15
|
+
* The element to highlight, supports a finder function, a CSS selector string, or an HTMLElement
|
|
16
|
+
*/
|
|
17
|
+
target: TourTarget;
|
|
18
|
+
/**
|
|
19
|
+
* Card title
|
|
20
|
+
*/
|
|
21
|
+
title?: React.ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* Card description
|
|
24
|
+
*/
|
|
25
|
+
description?: React.ReactNode;
|
|
26
|
+
/**
|
|
27
|
+
* Card placement relative to the highlighted target
|
|
28
|
+
* @default 'bottom'
|
|
29
|
+
*/
|
|
30
|
+
placement?: Placement;
|
|
31
|
+
/**
|
|
32
|
+
* Whether to show the card arrow
|
|
33
|
+
*/
|
|
34
|
+
arrow?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Custom step class name
|
|
37
|
+
*/
|
|
38
|
+
className?: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface TourProps extends DataAttributeProps {
|
|
42
|
+
/**
|
|
43
|
+
* Custom prefix class name
|
|
44
|
+
*/
|
|
45
|
+
prefixCls?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Custom root class name
|
|
48
|
+
*/
|
|
49
|
+
className?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Custom root style
|
|
52
|
+
*/
|
|
53
|
+
style?: React.CSSProperties;
|
|
54
|
+
/**
|
|
55
|
+
* Semantic structure class names
|
|
56
|
+
*/
|
|
57
|
+
classNames?: Partial<Record<TourSemanticDOM, string>>;
|
|
58
|
+
/**
|
|
59
|
+
* Semantic structure styles
|
|
60
|
+
*/
|
|
61
|
+
styles?: Partial<Record<TourSemanticDOM, React.CSSProperties>>;
|
|
62
|
+
/**
|
|
63
|
+
* Whether the tour is visible (controlled)
|
|
64
|
+
*/
|
|
65
|
+
open: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Tour steps
|
|
68
|
+
*/
|
|
69
|
+
steps: TourStep[];
|
|
70
|
+
/**
|
|
71
|
+
* Controlled current step index
|
|
72
|
+
*/
|
|
73
|
+
current?: number;
|
|
74
|
+
/**
|
|
75
|
+
* Default current step index
|
|
76
|
+
*/
|
|
77
|
+
defaultCurrent?: number;
|
|
78
|
+
/**
|
|
79
|
+
* Callback when the tour is closed / skipped
|
|
80
|
+
*/
|
|
81
|
+
onClose?: () => void;
|
|
82
|
+
/**
|
|
83
|
+
* Callback when all steps are finished
|
|
84
|
+
*/
|
|
85
|
+
onFinish?: () => void;
|
|
86
|
+
/**
|
|
87
|
+
* Callback when current step changes
|
|
88
|
+
*/
|
|
89
|
+
onChange?: (current: number) => void;
|
|
90
|
+
/**
|
|
91
|
+
* Default card placement relative to the highlighted target
|
|
92
|
+
* @default 'bottom'
|
|
93
|
+
*/
|
|
94
|
+
placement?: Placement;
|
|
95
|
+
/**
|
|
96
|
+
* Whether to show the card arrow by default
|
|
97
|
+
*/
|
|
98
|
+
arrow?: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Whether to show the mask layer (highlight cutout + click lock)
|
|
101
|
+
* @default true
|
|
102
|
+
*/
|
|
103
|
+
mask?: boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Whether the close button is shown at the top-right of the card
|
|
106
|
+
* @default true
|
|
107
|
+
*/
|
|
108
|
+
closable?: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Custom close icon
|
|
111
|
+
*/
|
|
112
|
+
closeIcon?: React.ReactNode;
|
|
113
|
+
/**
|
|
114
|
+
* Whether clicking the mask closes the tour
|
|
115
|
+
* @default false
|
|
116
|
+
*/
|
|
117
|
+
maskClosable?: boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Custom step indicators renderer, receives (current, total)
|
|
120
|
+
*/
|
|
121
|
+
indicatorsRender?: (current: number, total: number) => React.ReactNode;
|
|
122
|
+
/**
|
|
123
|
+
* Options passed to target.scrollIntoView on each step
|
|
124
|
+
*/
|
|
125
|
+
scrollIntoViewOptions?: boolean | ScrollIntoViewOptions;
|
|
126
|
+
}
|