tiny-ui 0.0.92 → 0.0.95
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/.stylelintrc +19 -0
- package/CHANGELOG.md +15 -0
- package/babel.config.js +30 -0
- package/components/_utils/dom.ts +1 -1
- package/components/alert/__tests__/alert.test.tsx +36 -38
- package/components/anchor/anchor.tsx +1 -1
- package/components/aspect-ratio/__tests__/aspect-ratio.test.tsx +7 -4
- package/components/button/__tests__/button-group.test.tsx +49 -8
- package/components/button/__tests__/button.test.tsx +95 -7
- package/components/button/button-group.tsx +8 -4
- package/components/button/button.tsx +12 -7
- package/components/button/style/_mixin.scss +1 -0
- package/components/button/types.ts +1 -1
- package/components/checkbox/checkbox.tsx +3 -3
- package/components/dropdown/demo/placement.md +13 -11
- package/components/dropdown/style/_index.scss +4 -0
- package/components/grid/style/_index.scss +2 -2
- package/components/index.ts +6 -3
- package/components/input/input.tsx +1 -1
- package/components/layout/layout.tsx +1 -1
- package/components/link/__test__/__snapshots__/link.test.tsx.snap +17 -0
- package/components/link/__test__/link.test.tsx +27 -0
- package/components/popup/index.tsx +3 -4
- package/components/popup/style/_index.scss +5 -4
- package/components/radio/radio.tsx +1 -1
- package/components/split/index.md +15 -0
- package/components/split/resizer.tsx +15 -2
- package/components/split/split.tsx +2 -2
- package/components/split/types.ts +2 -1
- package/components/split-button/demo/basic.md +36 -0
- package/components/split-button/demo/disabled.md +22 -0
- package/components/split-button/demo/placement.md +61 -0
- package/components/split-button/index.md +32 -0
- package/components/split-button/index.tsx +50 -0
- package/components/split-button/style/_index.scss +9 -0
- package/components/split-button/style/index.tsx +5 -0
- package/components/split-button/types.ts +16 -0
- package/components/sticky/style/_index.scss +4 -1
- package/components/style/_animation.scss +3 -0
- package/components/style/_component.scss +1 -1
- package/components/style/_font.scss +247 -246
- package/components/style/_mixins.scss +1 -1
- package/components/style/_normalise.scss +7 -0
- package/components/style/_variables.scss +183 -183
- package/components/switch/index.tsx +1 -1
- package/components/switch/style/_mixin.scss +2 -2
- package/components/tooltip/style/_index.scss +5 -4
- package/dist/styles/index.css +7144 -5422
- package/dist/styles/index.css.map +1 -1
- package/dist/styles/index.min.css +1 -1
- package/dist/styles/index.min.css.map +1 -1
- package/dist/tiny.js +3700 -1909
- package/dist/tiny.map +1 -1
- package/dist/tiny.min.js +2 -6
- package/dist/tiny.min.js.LICENSE.txt +20 -0
- package/lib/_utils/dom.d.ts +8 -1
- package/lib/_utils/general.js +2 -2
- package/lib/_utils/general.js.map +1 -1
- package/lib/_utils/props.js +1 -0
- package/lib/_utils/warning.js +1 -1
- package/lib/_utils/warning.js.map +1 -1
- package/lib/alert/index.js +7 -7
- package/lib/alert/index.js.map +1 -1
- package/lib/alert/types.js +1 -0
- package/lib/anchor/anchor-link.d.ts +1 -1
- package/lib/anchor/anchor-link.js +3 -3
- package/lib/anchor/anchor-link.js.map +1 -1
- package/lib/anchor/anchor.js +8 -8
- package/lib/anchor/anchor.js.map +1 -1
- package/lib/anchor/types.js +1 -0
- package/lib/aspect-ratio/index.js +2 -2
- package/lib/aspect-ratio/index.js.map +1 -1
- package/lib/aspect-ratio/types.js +1 -0
- package/lib/autocomplete/types.js +1 -0
- package/lib/avatar/avatar.js +8 -8
- package/lib/avatar/avatar.js.map +1 -1
- package/lib/avatar/types.js +1 -0
- package/lib/back-top/types.js +1 -0
- package/lib/badge/index.js +4 -4
- package/lib/badge/index.js.map +1 -1
- package/lib/badge/types.js +1 -0
- package/lib/breadcrumb/breadcrumb-item.js +1 -1
- package/lib/breadcrumb/breadcrumb-item.js.map +1 -1
- package/lib/breadcrumb/breadcrumb.js +1 -1
- package/lib/breadcrumb/breadcrumb.js.map +1 -1
- package/lib/breadcrumb/types.js +1 -0
- package/lib/button/button-group.d.ts +1 -1
- package/lib/button/button-group.js +4 -4
- package/lib/button/button-group.js.map +1 -1
- package/lib/button/button.d.ts +1 -1
- package/lib/button/button.js +10 -10
- package/lib/button/button.js.map +1 -1
- package/lib/button/style/_mixin.scss +1 -0
- package/lib/button/types.d.ts +1 -1
- package/lib/button/types.js +1 -0
- package/lib/calendar/index.js +4 -4
- package/lib/calendar/index.js.map +1 -1
- package/lib/card/card-content.js +1 -1
- package/lib/card/card-content.js.map +1 -1
- package/lib/card/card.js +5 -5
- package/lib/card/card.js.map +1 -1
- package/lib/card/types.js +1 -0
- package/lib/carousel/arrow-group.js +3 -3
- package/lib/carousel/arrow-group.js.map +1 -1
- package/lib/carousel/carousel.js +3 -3
- package/lib/carousel/carousel.js.map +1 -1
- package/lib/carousel/dot-group.js +3 -3
- package/lib/carousel/dot-group.js.map +1 -1
- package/lib/checkbox/checkbox-group.d.ts +1 -1
- package/lib/checkbox/checkbox-group.js +3 -3
- package/lib/checkbox/checkbox-group.js.map +1 -1
- package/lib/checkbox/checkbox.d.ts +1 -1
- package/lib/checkbox/checkbox.js +8 -8
- package/lib/checkbox/checkbox.js.map +1 -1
- package/lib/checkbox/types.js +1 -0
- package/lib/collapse/collapse-panel.js +8 -8
- package/lib/collapse/collapse-panel.js.map +1 -1
- package/lib/collapse/collapse.d.ts +1 -1
- package/lib/collapse/collapse.js +4 -4
- package/lib/collapse/collapse.js.map +1 -1
- package/lib/collapse/types.js +1 -0
- package/lib/config-provider/types.js +1 -0
- package/lib/copy-to-clipboard/types.js +1 -0
- package/lib/countdown/types.js +1 -0
- package/lib/date-picker/picker-day.js +9 -9
- package/lib/date-picker/picker-day.js.map +1 -1
- package/lib/date-picker/picker-header.js +7 -7
- package/lib/date-picker/picker-header.js.map +1 -1
- package/lib/descriptions/col.js +7 -7
- package/lib/descriptions/col.js.map +1 -1
- package/lib/descriptions/descriptions.js +4 -4
- package/lib/descriptions/descriptions.js.map +1 -1
- package/lib/descriptions/row.js +3 -3
- package/lib/descriptions/row.js.map +1 -1
- package/lib/descriptions/types.js +1 -0
- package/lib/divider/index.js +4 -4
- package/lib/divider/index.js.map +1 -1
- package/lib/divider/types.js +1 -0
- package/lib/drawer/index.js +7 -7
- package/lib/drawer/index.js.map +1 -1
- package/lib/drawer/types.js +1 -0
- package/lib/dropdown/style/_index.scss +4 -0
- package/lib/dropdown/types.js +1 -0
- package/lib/empty/index.js +4 -4
- package/lib/empty/index.js.map +1 -1
- package/lib/empty/types.js +1 -0
- package/lib/flip/flip.js +11 -11
- package/lib/flip/flip.js.map +1 -1
- package/lib/flip/types.js +1 -0
- package/lib/form/form-helper.js +1 -1
- package/lib/form/form-helper.js.map +1 -1
- package/lib/form/form-item.js +11 -11
- package/lib/form/form-item.js.map +1 -1
- package/lib/form/form.js +1 -1
- package/lib/form/form.js.map +1 -1
- package/lib/form/types.js +1 -0
- package/lib/grid/col.js +4 -4
- package/lib/grid/col.js.map +1 -1
- package/lib/grid/row.js +2 -2
- package/lib/grid/row.js.map +1 -1
- package/lib/grid/style/_index.scss +2 -2
- package/lib/grid/types.js +1 -0
- package/lib/icon/index.js +2 -2
- package/lib/icon/index.js.map +1 -1
- package/lib/icon/types.js +1 -0
- package/lib/image/index.js +1 -1
- package/lib/image/index.js.map +1 -1
- package/lib/image/types.js +1 -0
- package/lib/index.d.ts +2 -2
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/input/input-group-addon.js +2 -2
- package/lib/input/input-group-addon.js.map +1 -1
- package/lib/input/input.d.ts +1 -1
- package/lib/input/input.js +7 -7
- package/lib/input/input.js.map +1 -1
- package/lib/input/types.js +1 -0
- package/lib/input-number/index.js +9 -9
- package/lib/input-number/index.js.map +1 -1
- package/lib/input-number/types.js +1 -0
- package/lib/input-password/index.js +2 -2
- package/lib/input-password/index.js.map +1 -1
- package/lib/input-password/types.js +1 -0
- package/lib/keyboard/index.d.ts +1 -1
- package/lib/keyboard/types.js +1 -0
- package/lib/layout/layout.d.ts +4 -4
- package/lib/layout/layout.js +1 -1
- package/lib/layout/layout.js.map +1 -1
- package/lib/layout/sidebar.d.ts +1 -1
- package/lib/layout/sidebar.js +4 -4
- package/lib/layout/sidebar.js.map +1 -1
- package/lib/layout/types.js +1 -0
- package/lib/link/index.js +2 -2
- package/lib/link/index.js.map +1 -1
- package/lib/link/types.js +1 -0
- package/lib/loader/index.js +9 -9
- package/lib/loader/index.js.map +1 -1
- package/lib/loader/indicator.js +5 -5
- package/lib/loader/indicator.js.map +1 -1
- package/lib/loader/types.js +1 -0
- package/lib/loading-bar/index.js +1 -1
- package/lib/loading-bar/index.js.map +1 -1
- package/lib/loading-bar/loading-bar.js +1 -1
- package/lib/loading-bar/loading-bar.js.map +1 -1
- package/lib/loading-bar/types.js +1 -0
- package/lib/menu/menu-item-group.js +3 -3
- package/lib/menu/menu-item-group.js.map +1 -1
- package/lib/menu/menu-item.js +2 -2
- package/lib/menu/menu-item.js.map +1 -1
- package/lib/menu/menu.js +2 -2
- package/lib/menu/menu.js.map +1 -1
- package/lib/menu/sub-menu.js +11 -11
- package/lib/menu/sub-menu.js.map +1 -1
- package/lib/menu/types.js +1 -0
- package/lib/message/index.js +2 -2
- package/lib/message/index.js.map +1 -1
- package/lib/message/message.js +9 -9
- package/lib/message/message.js.map +1 -1
- package/lib/message/types.js +1 -0
- package/lib/modal/index.js +10 -10
- package/lib/modal/index.js.map +1 -1
- package/lib/modal/types.js +1 -0
- package/lib/native-select/native-opt-group.d.ts +3 -3
- package/lib/native-select/native-option.d.ts +3 -3
- package/lib/native-select/native-select.d.ts +1 -1
- package/lib/native-select/native-select.js +2 -2
- package/lib/native-select/native-select.js.map +1 -1
- package/lib/native-select/types.js +1 -0
- package/lib/notification/index.js +6 -6
- package/lib/notification/index.js.map +1 -1
- package/lib/notification/notification.js +6 -6
- package/lib/notification/notification.js.map +1 -1
- package/lib/notification/types.js +1 -0
- package/lib/overlay/index.js +2 -2
- package/lib/overlay/index.js.map +1 -1
- package/lib/overlay/types.js +1 -0
- package/lib/pagination/index.js +11 -11
- package/lib/pagination/index.js.map +1 -1
- package/lib/pagination/types.js +1 -0
- package/lib/pop-confirm/index.js +4 -4
- package/lib/pop-confirm/index.js.map +1 -1
- package/lib/pop-confirm/types.js +1 -0
- package/lib/popover/index.js +4 -4
- package/lib/popover/index.js.map +1 -1
- package/lib/popover/types.js +1 -0
- package/lib/popup/index.js +6 -6
- package/lib/popup/index.js.map +1 -1
- package/lib/popup/style/_index.scss +5 -4
- package/lib/popup/types.js +1 -0
- package/lib/progress/bar.js +10 -10
- package/lib/progress/bar.js.map +1 -1
- package/lib/progress/circle.js +6 -6
- package/lib/progress/circle.js.map +1 -1
- package/lib/progress/index.d.ts +2 -2
- package/lib/radio/radio-group.d.ts +1 -1
- package/lib/radio/radio.d.ts +1 -1
- package/lib/radio/radio.js +5 -5
- package/lib/radio/radio.js.map +1 -1
- package/lib/radio/types.js +1 -0
- package/lib/rate/index.d.ts +1 -1
- package/lib/rate/rate-item.js +3 -3
- package/lib/rate/rate-item.js.map +1 -1
- package/lib/rate/types.js +1 -0
- package/lib/result/index.d.ts +1 -1
- package/lib/result/index.js +7 -7
- package/lib/result/index.js.map +1 -1
- package/lib/result/types.js +1 -0
- package/lib/scroll-indicator/index.js +2 -2
- package/lib/scroll-indicator/index.js.map +1 -1
- package/lib/scroll-indicator/types.js +1 -0
- package/lib/select/opt-group.js +2 -2
- package/lib/select/opt-group.js.map +1 -1
- package/lib/select/option.js +3 -3
- package/lib/select/option.js.map +1 -1
- package/lib/select/select.js +3 -3
- package/lib/select/select.js.map +1 -1
- package/lib/select/types.js +1 -0
- package/lib/skeleton/index.d.ts +1 -1
- package/lib/skeleton/index.js +2 -2
- package/lib/skeleton/index.js.map +1 -1
- package/lib/skeleton/types.js +1 -0
- package/lib/slider/index.d.ts +1 -1
- package/lib/slider/index.js +23 -23
- package/lib/slider/index.js.map +1 -1
- package/lib/slider/types.js +1 -0
- package/lib/space/index.d.ts +1 -1
- package/lib/space/index.js +2 -2
- package/lib/space/index.js.map +1 -1
- package/lib/space/types.js +1 -0
- package/lib/split/resizer.d.ts +1 -1
- package/lib/split/resizer.js +7 -3
- package/lib/split/resizer.js.map +1 -1
- package/lib/split/split-pane.d.ts +1 -1
- package/lib/split/split.js +4 -4
- package/lib/split/split.js.map +1 -1
- package/lib/split/types.d.ts +2 -1
- package/lib/split/types.js +1 -0
- package/lib/split-button/index.d.ts +7 -0
- package/lib/split-button/index.js +23 -0
- package/lib/split-button/index.js.map +1 -0
- package/lib/split-button/style/_index.scss +9 -0
- package/lib/split-button/style/css.js +4 -0
- package/lib/split-button/style/index.d.ts +3 -0
- package/lib/split-button/style/index.js +4 -0
- package/lib/split-button/style/index.js.map +1 -0
- package/lib/split-button/types.d.ts +15 -0
- package/lib/split-button/types.js +2 -0
- package/lib/split-button/types.js.map +1 -0
- package/lib/steps/steps-item.d.ts +1 -1
- package/lib/steps/steps-item.js +8 -8
- package/lib/steps/steps-item.js.map +1 -1
- package/lib/steps/steps.d.ts +1 -1
- package/lib/steps/steps.js +1 -1
- package/lib/steps/steps.js.map +1 -1
- package/lib/steps/types.js +1 -0
- package/lib/sticky/style/_index.scss +4 -1
- package/lib/sticky/types.js +1 -0
- package/lib/strength-indicator/index.d.ts +1 -1
- package/lib/strength-indicator/index.js +4 -4
- package/lib/strength-indicator/index.js.map +1 -1
- package/lib/strength-indicator/types.js +1 -0
- package/lib/style/_animation.scss +3 -0
- package/lib/style/_component.scss +1 -1
- package/lib/style/_font.scss +247 -246
- package/lib/style/_mixins.scss +1 -1
- package/lib/style/_normalise.scss +7 -0
- package/lib/style/_variables.scss +183 -183
- package/lib/style/index.css +7144 -5421
- package/lib/switch/index.d.ts +1 -1
- package/lib/switch/index.js +8 -8
- package/lib/switch/index.js.map +1 -1
- package/lib/switch/style/_mixin.scss +2 -2
- package/lib/switch/types.js +1 -0
- package/lib/tabs/style/index.css +64 -52
- package/lib/tabs/tab-panel.d.ts +1 -1
- package/lib/tabs/tab-panel.js +1 -1
- package/lib/tabs/tab-panel.js.map +1 -1
- package/lib/tabs/tabs.d.ts +1 -1
- package/lib/tabs/tabs.js +20 -20
- package/lib/tabs/tabs.js.map +1 -1
- package/lib/tag/checkable-tag.js +1 -1
- package/lib/tag/checkable-tag.js.map +1 -1
- package/lib/tag/tag.js +4 -4
- package/lib/tag/tag.js.map +1 -1
- package/lib/textarea/index.js +3 -3
- package/lib/textarea/index.js.map +1 -1
- package/lib/textarea/types.js +1 -0
- package/lib/time-picker/time-panel.js +5 -5
- package/lib/time-picker/time-panel.js.map +1 -1
- package/lib/timeline/timeline-item.js +3 -3
- package/lib/timeline/timeline-item.js.map +1 -1
- package/lib/timeline/timeline.js +3 -3
- package/lib/timeline/timeline.js.map +1 -1
- package/lib/timeline/types.js +1 -0
- package/lib/tooltip/index.js +1 -1
- package/lib/tooltip/index.js.map +1 -1
- package/lib/tooltip/style/_index.scss +5 -4
- package/lib/tooltip/types.js +1 -0
- package/lib/transfer/transfer-panel.d.ts +1 -1
- package/lib/transfer/transfer-panel.js +9 -9
- package/lib/transfer/transfer-panel.js.map +1 -1
- package/lib/transfer/transfer.d.ts +1 -1
- package/lib/transfer/transfer.js +8 -8
- package/lib/transfer/transfer.js.map +1 -1
- package/lib/transfer/types.js +1 -0
- package/lib/transition/index.js +1 -1
- package/lib/transition/index.js.map +1 -1
- package/lib/tree/tree-instance.js +2 -3
- package/lib/tree/tree-instance.js.map +1 -1
- package/lib/tree/tree-node.js +7 -7
- package/lib/tree/tree-node.js.map +1 -1
- package/lib/tree/tree.d.ts +1 -1
- package/lib/tree/tree.js +3 -3
- package/lib/tree/tree.js.map +1 -1
- package/lib/tree/types.js +1 -0
- package/lib/typography/heading.js +1 -1
- package/lib/typography/heading.js.map +1 -1
- package/lib/typography/paragraph.d.ts +1 -1
- package/lib/typography/types.js +1 -0
- package/lib/typography/typography.d.ts +1 -1
- package/lib/upload/dragger-cover.js +3 -3
- package/lib/upload/dragger-cover.js.map +1 -1
- package/lib/upload/types.js +1 -0
- package/lib/upload/upload-list.js +6 -6
- package/lib/upload/upload-list.js.map +1 -1
- package/lib/upload/upload.js +4 -4
- package/lib/upload/upload.js.map +1 -1
- package/package.json +94 -74
- package/components/waterfall/index.tsx +0 -78
- package/components/waterfall/style/_index.scss +0 -10
- package/components/waterfall/style/index.tsx +0 -1
- package/lib/waterfall/index.d.ts +0 -9
- package/lib/waterfall/index.js +0 -54
- package/lib/waterfall/index.js.map +0 -1
- package/lib/waterfall/style/_index.scss +0 -10
- package/lib/waterfall/style/css.js +0 -2
- package/lib/waterfall/style/index.d.ts +0 -1
- package/lib/waterfall/style/index.js +0 -2
- package/lib/waterfall/style/index.js.map +0 -1
|
@@ -43,6 +43,9 @@ const Popup = (props: PopupProps): JSX.Element => {
|
|
|
43
43
|
const delayDisplayPopupTimer = useRef<number | undefined>(undefined);
|
|
44
44
|
const delayHidePopupTimer = useRef<number | undefined>(undefined);
|
|
45
45
|
const popperRef = useRef<Instance | undefined>(undefined);
|
|
46
|
+
const elementProps = {
|
|
47
|
+
ref: (ref: HTMLElement | null) => (targetRef.current = ref),
|
|
48
|
+
};
|
|
46
49
|
|
|
47
50
|
const displayPopup = useCallback(() => {
|
|
48
51
|
setPopupVisible(true);
|
|
@@ -255,10 +258,6 @@ const Popup = (props: PopupProps): JSX.Element => {
|
|
|
255
258
|
</Transition>
|
|
256
259
|
);
|
|
257
260
|
|
|
258
|
-
const elementProps = {
|
|
259
|
-
ref: (ref: HTMLElement | null) => (targetRef.current = ref),
|
|
260
|
-
};
|
|
261
|
-
|
|
262
261
|
return (
|
|
263
262
|
<>
|
|
264
263
|
{React.cloneElement(children, elementProps)}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@use 'sass:math';
|
|
1
2
|
@import '../../style/variables';
|
|
2
3
|
|
|
3
4
|
.#{$prefix}-popup {
|
|
@@ -43,7 +44,7 @@
|
|
|
43
44
|
|
|
44
45
|
&[data-popper-placement^='top'] {
|
|
45
46
|
& > .#{$prefix}-popup__arrow {
|
|
46
|
-
bottom: -$popover-arrow-size
|
|
47
|
+
bottom: math.div(-$popover-arrow-size, 2);
|
|
47
48
|
|
|
48
49
|
&:before {
|
|
49
50
|
box-shadow: 3px 3px 7px rgba(0, 0, 0, .07);
|
|
@@ -53,7 +54,7 @@
|
|
|
53
54
|
|
|
54
55
|
&[data-popper-placement^='bottom'] {
|
|
55
56
|
> .#{$prefix}-popup__arrow {
|
|
56
|
-
top: -$popover-arrow-size
|
|
57
|
+
top: math.div(-$popover-arrow-size, 2);
|
|
57
58
|
|
|
58
59
|
&:before {
|
|
59
60
|
box-shadow: -2px -2px 5px rgba(0, 0, 0, .06);
|
|
@@ -63,7 +64,7 @@
|
|
|
63
64
|
|
|
64
65
|
&[data-popper-placement^='left'] {
|
|
65
66
|
> .#{$prefix}-popup__arrow {
|
|
66
|
-
right: -$popover-arrow-size
|
|
67
|
+
right: math.div(-$popover-arrow-size, 2);
|
|
67
68
|
|
|
68
69
|
&:before {
|
|
69
70
|
box-shadow: 3px -3px 7px rgba(0, 0, 0, .07);
|
|
@@ -73,7 +74,7 @@
|
|
|
73
74
|
|
|
74
75
|
&[data-popper-placement^='right'] {
|
|
75
76
|
> .#{$prefix}-popup__arrow {
|
|
76
|
-
left: -$popover-arrow-size
|
|
77
|
+
left: math.div(-$popover-arrow-size, 2);
|
|
77
78
|
|
|
78
79
|
&:before {
|
|
79
80
|
box-shadow: -3px 3px 7px rgba(0, 0, 0, .07);
|
|
@@ -46,7 +46,7 @@ const Radio = React.forwardRef<HTMLLabelElement, RadioProps>(
|
|
|
46
46
|
|
|
47
47
|
useEffect(() => {
|
|
48
48
|
'value' in radioGroupContext && setChecked(value === radioGroupContext.value);
|
|
49
|
-
'checked' in props && setChecked(props.checked
|
|
49
|
+
'checked' in props && typeof props.checked !== 'undefined' && setChecked(props.checked);
|
|
50
50
|
}, [props, radioGroupContext, value]);
|
|
51
51
|
|
|
52
52
|
return (
|
|
@@ -25,3 +25,18 @@ import { Split } from 'tiny-ui';
|
|
|
25
25
|
<Step/>
|
|
26
26
|
|
|
27
27
|
## API
|
|
28
|
+
|
|
29
|
+
| Property | Description | Type | Default |
|
|
30
|
+
| ----------------- | ----------------------------------------- | ------------------------------------- | ------------- |
|
|
31
|
+
| mode | split mode | enum: `horizontal` | `vertical` | `vertical` |
|
|
32
|
+
| disabled | disable flag | boolean | false |
|
|
33
|
+
| min | minimum width / height of the target pane | number | string | 50 |
|
|
34
|
+
| max | maximum width / height of the target pane | number | string | 50 |
|
|
35
|
+
| size | size of target pane | number | string | - |
|
|
36
|
+
| defaultSize | default size of target pane | number | string | - |
|
|
37
|
+
| step | drag step | number | - |
|
|
38
|
+
| resizerProps | resizer props | JSX.IntrinsicElements['div'] | - |
|
|
39
|
+
| resizerSize | resizer size | number | 6 |
|
|
40
|
+
| onChange | callback when the size changed | (size: number) => void | - |
|
|
41
|
+
| onDragStarted | callback when the resizer starts dragging | () => void | - |
|
|
42
|
+
| onDragFinished | callback when the resizer ends dragging | () => void | - |
|
|
@@ -9,11 +9,18 @@ export interface ResizerProps
|
|
|
9
9
|
React.PropsWithoutRef<JSX.IntrinsicElements['div']> {
|
|
10
10
|
size: number;
|
|
11
11
|
mode: DirectionType;
|
|
12
|
-
|
|
12
|
+
onResizerMouseDown: MouseEventHandler<HTMLDivElement>;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
const Resizer = (props: ResizerProps): JSX.Element => {
|
|
16
|
-
const {
|
|
16
|
+
const {
|
|
17
|
+
size,
|
|
18
|
+
onResizerMouseDown,
|
|
19
|
+
prefixCls: customisedCls,
|
|
20
|
+
mode,
|
|
21
|
+
className,
|
|
22
|
+
...otherProps
|
|
23
|
+
} = props;
|
|
17
24
|
const configContext = useContext(ConfigContext);
|
|
18
25
|
const prefixCls = getPrefixCls('split-bar', configContext.prefixCls, customisedCls);
|
|
19
26
|
const cls = classNames(prefixCls, className, {
|
|
@@ -21,6 +28,12 @@ const Resizer = (props: ResizerProps): JSX.Element => {
|
|
|
21
28
|
});
|
|
22
29
|
|
|
23
30
|
const style: React.CSSProperties = mode === 'vertical' ? { width: size } : { height: size };
|
|
31
|
+
|
|
32
|
+
const onMouseDown = (e: React.MouseEvent<HTMLDivElement>) => {
|
|
33
|
+
props.onMouseDown && props.onMouseDown(e);
|
|
34
|
+
onResizerMouseDown(e);
|
|
35
|
+
};
|
|
36
|
+
|
|
24
37
|
return (
|
|
25
38
|
<div
|
|
26
39
|
{...otherProps}
|
|
@@ -61,7 +61,7 @@ const Split = (props: SplitProps): JSX.Element => {
|
|
|
61
61
|
maxSize = (mode === 'vertical' ? width : height) - maxSize - resizerSize;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
const
|
|
64
|
+
const onResizerMouseDown = (e: React.MouseEvent<HTMLElement>): void => {
|
|
65
65
|
isActiveMove.current = true;
|
|
66
66
|
lastPosition.current = e[mode === 'vertical' ? 'clientX' : 'clientY'];
|
|
67
67
|
onDragStarted && onDragStarted();
|
|
@@ -158,7 +158,7 @@ const Split = (props: SplitProps): JSX.Element => {
|
|
|
158
158
|
{...resizerProps}
|
|
159
159
|
size={resizerSize}
|
|
160
160
|
mode={mode}
|
|
161
|
-
|
|
161
|
+
onResizerMouseDown={onResizerMouseDown}
|
|
162
162
|
/>
|
|
163
163
|
<Pane style={{ flex: '1 1 0%' }}>{childrenList[1]}</Pane>
|
|
164
164
|
</div>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { BaseProps, DirectionType } from '../_utils/props';
|
|
3
|
+
import { ResizerProps } from './resizer';
|
|
3
4
|
|
|
4
5
|
export interface SplitProps
|
|
5
6
|
extends BaseProps,
|
|
@@ -23,7 +24,7 @@ export interface SplitProps
|
|
|
23
24
|
defaultSize?: number | string;
|
|
24
25
|
|
|
25
26
|
/** Resizer's other props */
|
|
26
|
-
resizerProps?:
|
|
27
|
+
resizerProps?: ResizerProps;
|
|
27
28
|
|
|
28
29
|
/** Drag step */
|
|
29
30
|
step?: number;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<demo>
|
|
2
|
+
|
|
3
|
+
### Basic
|
|
4
|
+
|
|
5
|
+
A simple usage.
|
|
6
|
+
|
|
7
|
+
```jsx live
|
|
8
|
+
() => {
|
|
9
|
+
const menu = (
|
|
10
|
+
<Menu onSelect={(key) => Message.info(`you clicked the menu ${key}.`)}>
|
|
11
|
+
<Menu.Item>1st menu item</Menu.Item>
|
|
12
|
+
<Menu.Item>2nd menu item</Menu.Item>
|
|
13
|
+
<Menu.Item>3rd menu item</Menu.Item>
|
|
14
|
+
</Menu>
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<>
|
|
19
|
+
<SplitButton
|
|
20
|
+
onClick={() => Message.info('you clicked the button.')}
|
|
21
|
+
overlay={menu}>
|
|
22
|
+
Click Me
|
|
23
|
+
</SplitButton>
|
|
24
|
+
<SplitButton
|
|
25
|
+
btnType="primary"
|
|
26
|
+
onClick={() => Message.info('you clicked the button.')}
|
|
27
|
+
overlay={menu}>
|
|
28
|
+
Click Me
|
|
29
|
+
</SplitButton>
|
|
30
|
+
</>
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
</demo>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<demo>
|
|
2
|
+
|
|
3
|
+
### Disabled
|
|
4
|
+
|
|
5
|
+
Disabled the button.
|
|
6
|
+
|
|
7
|
+
```jsx live
|
|
8
|
+
<SplitButton
|
|
9
|
+
disabled
|
|
10
|
+
onClick={() => Message.info('you clicked the button.')}
|
|
11
|
+
overlay={(
|
|
12
|
+
<Menu onSelect={(key) => Message.info(`you clicked the menu ${key}.`)}>
|
|
13
|
+
<Menu.Item>1st menu item</Menu.Item>
|
|
14
|
+
<Menu.Item>2nd menu item</Menu.Item>
|
|
15
|
+
<Menu.Item>3rd menu item</Menu.Item>
|
|
16
|
+
</Menu>
|
|
17
|
+
)}>
|
|
18
|
+
Click Me
|
|
19
|
+
</SplitButton>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
</demo>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<demo>
|
|
2
|
+
|
|
3
|
+
### Placement
|
|
4
|
+
|
|
5
|
+
Set the placement of the dropdown menu. The default placement is `bottom-end`.
|
|
6
|
+
|
|
7
|
+
```jsx live
|
|
8
|
+
() => {
|
|
9
|
+
const menu = (
|
|
10
|
+
<Menu onSelect={(key) => Message.info(`you clicked the menu ${key}.`)}>
|
|
11
|
+
<Menu.Item>1st menu item</Menu.Item>
|
|
12
|
+
<Menu.Item>2nd menu item</Menu.Item>
|
|
13
|
+
<Menu.Item>3rd menu item</Menu.Item>
|
|
14
|
+
</Menu>
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<>
|
|
19
|
+
<SplitButton
|
|
20
|
+
dropdownPlacement="top-start"
|
|
21
|
+
onClick={() => Message.info('you clicked the button.')}
|
|
22
|
+
overlay={menu}>
|
|
23
|
+
TopLeft
|
|
24
|
+
</SplitButton>
|
|
25
|
+
<SplitButton
|
|
26
|
+
dropdownPlacement="top"
|
|
27
|
+
onClick={() => Message.info('you clicked the button.')}
|
|
28
|
+
overlay={menu}>
|
|
29
|
+
Top
|
|
30
|
+
</SplitButton>
|
|
31
|
+
<SplitButton
|
|
32
|
+
dropdownPlacement="top-end"
|
|
33
|
+
onClick={() => Message.info('you clicked the button.')}
|
|
34
|
+
overlay={menu}>
|
|
35
|
+
TopRight
|
|
36
|
+
</SplitButton>
|
|
37
|
+
<br />
|
|
38
|
+
<SplitButton
|
|
39
|
+
dropdownPlacement="bottom-start"
|
|
40
|
+
onClick={() => Message.info('you clicked the button.')}
|
|
41
|
+
overlay={menu}>
|
|
42
|
+
bottomLeft
|
|
43
|
+
</SplitButton>
|
|
44
|
+
<SplitButton
|
|
45
|
+
dropdownPlacement="bottom"
|
|
46
|
+
onClick={() => Message.info('you clicked the button.')}
|
|
47
|
+
overlay={menu}>
|
|
48
|
+
bottom
|
|
49
|
+
</SplitButton>
|
|
50
|
+
<SplitButton
|
|
51
|
+
dropdownPlacement="bottom-end"
|
|
52
|
+
onClick={() => Message.info('you clicked the button.')}
|
|
53
|
+
overlay={menu}>
|
|
54
|
+
bottomRight
|
|
55
|
+
</SplitButton>
|
|
56
|
+
</>
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
</demo>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import Basic from './demo/basic.md'
|
|
2
|
+
import Disabled from './demo/disabled.md'
|
|
3
|
+
import Placement from './demo/placement.md'
|
|
4
|
+
|
|
5
|
+
# Split Button
|
|
6
|
+
|
|
7
|
+
A button with a dropdown menu.
|
|
8
|
+
|
|
9
|
+
## Scenario
|
|
10
|
+
|
|
11
|
+
The user can select a default value bound to a primary button,
|
|
12
|
+
or select from a list of mutually exclusive values displayed in a drop-down list bound to a secondary button.
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```jsx
|
|
17
|
+
import { SplitButton } from 'tiny-ui';
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Examples
|
|
21
|
+
|
|
22
|
+
<layout>
|
|
23
|
+
<column>
|
|
24
|
+
<Basic />
|
|
25
|
+
<Disabled />
|
|
26
|
+
</column>
|
|
27
|
+
<column>
|
|
28
|
+
<Placement />
|
|
29
|
+
</column>
|
|
30
|
+
</layout>
|
|
31
|
+
|
|
32
|
+
## API
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { ConfigContext } from '../config-provider/config-context';
|
|
4
|
+
import { getPrefixCls } from '../_utils/general';
|
|
5
|
+
import { ArrowDown } from '../_utils/components';
|
|
6
|
+
import { SplitButtonProps } from './types';
|
|
7
|
+
import ButtonGroup from '../button/button-group';
|
|
8
|
+
import Button from '../button/button';
|
|
9
|
+
import Dropdown from '../dropdown';
|
|
10
|
+
|
|
11
|
+
const SplitButton = (props: SplitButtonProps): React.ReactElement => {
|
|
12
|
+
const {
|
|
13
|
+
size = 'md',
|
|
14
|
+
btnType = 'default',
|
|
15
|
+
disabled = false,
|
|
16
|
+
loading = false,
|
|
17
|
+
dropdownPlacement = 'bottom-end',
|
|
18
|
+
dropdownTrigger = 'hover',
|
|
19
|
+
onClick,
|
|
20
|
+
overlay,
|
|
21
|
+
className,
|
|
22
|
+
children,
|
|
23
|
+
prefixCls: customisedCls,
|
|
24
|
+
...otherProps
|
|
25
|
+
} = props;
|
|
26
|
+
const configContext = useContext(ConfigContext);
|
|
27
|
+
const prefixCls = getPrefixCls('split-button', configContext.prefixCls, customisedCls);
|
|
28
|
+
const cls = classNames(prefixCls, className);
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<ButtonGroup {...otherProps} className={cls} btnType={btnType} disabled={disabled} size={size}>
|
|
32
|
+
<Button onClick={onClick} loading={loading}>
|
|
33
|
+
{children}
|
|
34
|
+
</Button>
|
|
35
|
+
<Dropdown overlay={overlay} trigger={dropdownTrigger} placement={dropdownPlacement}>
|
|
36
|
+
<Button
|
|
37
|
+
className={`${prefixCls}__dropdown-btn`}
|
|
38
|
+
btnType={btnType}
|
|
39
|
+
disabled={disabled}
|
|
40
|
+
size={size}>
|
|
41
|
+
<ArrowDown size={10} />
|
|
42
|
+
</Button>
|
|
43
|
+
</Dropdown>
|
|
44
|
+
</ButtonGroup>
|
|
45
|
+
);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
SplitButton.displayName = 'SplitButton';
|
|
49
|
+
|
|
50
|
+
export default SplitButton;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ButtonGroupProps, ButtonType } from '../button/types';
|
|
3
|
+
import { DropdownPlacement, DropdownTrigger } from '../dropdown/types';
|
|
4
|
+
import { MenuProps } from '../menu/types';
|
|
5
|
+
import { SizeType } from '../_utils/props';
|
|
6
|
+
|
|
7
|
+
export interface SplitButtonProps extends Omit<ButtonGroupProps, 'onClick'> {
|
|
8
|
+
onClick?: React.MouseEventHandler<HTMLButtonElement>;
|
|
9
|
+
loading?: boolean;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
size?: SizeType;
|
|
12
|
+
btnType?: ButtonType;
|
|
13
|
+
overlay?: React.ReactElement<MenuProps>;
|
|
14
|
+
dropdownTrigger?: DropdownTrigger;
|
|
15
|
+
dropdownPlacement?: DropdownPlacement;
|
|
16
|
+
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
0% {
|
|
3
3
|
transform: rotate(0deg);
|
|
4
4
|
}
|
|
5
|
+
|
|
5
6
|
100% {
|
|
6
7
|
transform: rotate(360deg);
|
|
7
8
|
}
|
|
@@ -11,6 +12,7 @@
|
|
|
11
12
|
from {
|
|
12
13
|
transform: rotate(0);
|
|
13
14
|
}
|
|
15
|
+
|
|
14
16
|
to {
|
|
15
17
|
transform: rotate(-360deg);
|
|
16
18
|
}
|
|
@@ -21,6 +23,7 @@
|
|
|
21
23
|
transform: scale(0.8);
|
|
22
24
|
opacity: 0.5;
|
|
23
25
|
}
|
|
26
|
+
|
|
24
27
|
100% {
|
|
25
28
|
transform: scale(2.8);
|
|
26
29
|
opacity: 0;
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
@import "../slider/style/index";
|
|
52
52
|
@import "../space/style/index";
|
|
53
53
|
@import "../split/style/index";
|
|
54
|
+
@import "../split-button/style/index";
|
|
54
55
|
@import "../steps/style/index";
|
|
55
56
|
@import "../sticky/style/index";
|
|
56
57
|
@import "../strength-indicator/style/index";
|
|
@@ -66,4 +67,3 @@
|
|
|
66
67
|
@import "../tree/style/index";
|
|
67
68
|
@import "../typography/style/index";
|
|
68
69
|
@import "../upload/style/index";
|
|
69
|
-
@import "../waterfall/style/index";
|