@kdcloudjs/kdesign 1.1.3 → 1.2.2
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/CHANGELOG.md +79 -3
- package/dist/kdesign-complete.less +1006 -783
- package/dist/kdesign.css +358 -268
- package/dist/kdesign.css.map +1 -1
- package/dist/kdesign.js +529 -262
- package/dist/kdesign.js.map +1 -1
- package/dist/kdesign.min.css +4 -4
- package/dist/kdesign.min.js +8 -8
- package/dist/kdesign.min.js.map +1 -1
- package/es/_utils/usePopper.js +33 -12
- package/es/anchor/anchor.js +0 -6
- package/es/anchor/style/index.css +5 -2
- package/es/anchor/style/index.less +6 -2
- package/es/anchor/style/token.less +2 -1
- package/es/button/button.d.ts +1 -1
- package/es/button/button.js +2 -2
- package/es/button/group.d.ts +21 -0
- package/es/button/group.js +130 -0
- package/es/button/index.d.ts +5 -1
- package/es/button/index.js +4 -1
- package/es/button/style/index.css +117 -21
- package/es/button/style/index.less +332 -192
- package/es/button/style/token.less +41 -25
- package/es/carousel/carousel.js +4 -0
- package/es/carousel/displayList.js +8 -4
- package/es/carousel/fadeList.js +9 -5
- package/es/carousel/slideList.js +6 -3
- package/es/carousel/style/index.css +65 -0
- package/es/carousel/style/index.less +66 -1
- package/es/collapse/panel.d.ts +1 -0
- package/es/collapse/panel.js +17 -5
- package/es/collapse/style/index.css +32 -6
- package/es/collapse/style/index.less +24 -1
- package/es/collapse/style/token.less +12 -10
- package/es/config-provider/compDefaultProps.d.ts +4 -0
- package/es/config-provider/compDefaultProps.js +4 -0
- package/es/drawer/drawer.d.ts +1 -0
- package/es/drawer/drawer.js +56 -21
- package/es/empty/defaultEmptyImg.js +5 -3
- package/es/empty/illustrationEmptyImg.js +6 -4
- package/es/icon/interface.js +1 -1
- package/es/image/preview.js +1 -1
- package/es/image/style/index.css +8 -8
- package/es/image/style/index.less +5 -5
- package/es/image/style/token.less +12 -25
- package/es/radio/radio.js +3 -1
- package/es/radio/style/index.css +51 -24
- package/es/radio/style/index.less +28 -2
- package/es/radio/style/token.less +4 -4
- package/es/rate/style/index.css +9 -9
- package/es/rate/style/token.less +6 -6
- package/es/select/option.js +1 -1
- package/es/select/style/index.css +14 -5
- package/es/select/style/index.less +374 -368
- package/es/select/style/token.less +2 -2
- package/es/stepper/style/index.css +1 -1
- package/es/stepper/style/token.less +1 -1
- package/es/steps/style/index.css +40 -32
- package/es/steps/style/index.less +23 -33
- package/es/steps/style/token.less +6 -9
- package/es/style/icon/kdicon.css +2 -1
- package/es/style/icon/kdicon.woff +0 -0
- package/es/switch/style/index.css +11 -11
- package/es/switch/style/index.less +2 -2
- package/es/switch/style/token.less +7 -10
- package/es/tabs/tabs.js +5 -1
- package/es/tag/style/index.css +2 -147
- package/es/tag/style/index.less +4 -24
- package/es/tag/style/mixin.less +0 -13
- package/es/tag/style/token.less +1 -1
- package/lib/_utils/usePopper.js +34 -12
- package/lib/anchor/anchor.js +0 -6
- package/lib/anchor/style/index.css +5 -2
- package/lib/anchor/style/index.less +6 -2
- package/lib/anchor/style/token.less +2 -1
- package/lib/button/button.d.ts +1 -1
- package/lib/button/button.js +2 -2
- package/lib/button/group.d.ts +21 -0
- package/lib/button/group.js +166 -0
- package/lib/button/index.d.ts +5 -1
- package/lib/button/index.js +5 -1
- package/lib/button/style/index.css +117 -21
- package/lib/button/style/index.less +332 -192
- package/lib/button/style/token.less +41 -25
- package/lib/carousel/carousel.js +4 -0
- package/lib/carousel/displayList.js +9 -4
- package/lib/carousel/fadeList.js +10 -5
- package/lib/carousel/slideList.js +6 -3
- package/lib/carousel/style/index.css +65 -0
- package/lib/carousel/style/index.less +66 -1
- package/lib/collapse/panel.d.ts +1 -0
- package/lib/collapse/panel.js +17 -5
- package/lib/collapse/style/index.css +32 -6
- package/lib/collapse/style/index.less +24 -1
- package/lib/collapse/style/token.less +12 -10
- package/lib/config-provider/compDefaultProps.d.ts +4 -0
- package/lib/config-provider/compDefaultProps.js +4 -0
- package/lib/drawer/drawer.d.ts +1 -0
- package/lib/drawer/drawer.js +61 -27
- package/lib/empty/defaultEmptyImg.js +6 -3
- package/lib/empty/illustrationEmptyImg.js +7 -4
- package/lib/icon/interface.js +1 -1
- package/lib/image/preview.js +1 -1
- package/lib/image/style/index.css +8 -8
- package/lib/image/style/index.less +5 -5
- package/lib/image/style/token.less +12 -25
- package/lib/radio/radio.js +3 -1
- package/lib/radio/style/index.css +51 -24
- package/lib/radio/style/index.less +28 -2
- package/lib/radio/style/token.less +4 -4
- package/lib/rate/style/index.css +9 -9
- package/lib/rate/style/token.less +6 -6
- package/lib/select/option.js +1 -1
- package/lib/select/style/index.css +14 -5
- package/lib/select/style/index.less +374 -368
- package/lib/select/style/token.less +2 -2
- package/lib/stepper/style/index.css +1 -1
- package/lib/stepper/style/token.less +1 -1
- package/lib/steps/style/index.css +40 -32
- package/lib/steps/style/index.less +23 -33
- package/lib/steps/style/token.less +6 -9
- package/lib/style/icon/kdicon.css +2 -1
- package/lib/style/icon/kdicon.woff +0 -0
- package/lib/switch/style/index.css +11 -11
- package/lib/switch/style/index.less +2 -2
- package/lib/switch/style/token.less +7 -10
- package/lib/tabs/tabs.js +6 -1
- package/lib/tag/style/index.css +2 -147
- package/lib/tag/style/index.less +4 -24
- package/lib/tag/style/mixin.less +0 -13
- package/lib/tag/style/token.less +1 -1
- package/package.json +1 -1
package/es/_utils/usePopper.js
CHANGED
|
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime-corejs3/helpers/extends";
|
|
|
2
2
|
import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
|
|
3
3
|
import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
|
|
4
4
|
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
|
5
|
+
import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
|
|
5
6
|
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
|
|
6
7
|
import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
|
|
7
8
|
import _Promise from "@babel/runtime-corejs3/core-js-stable/promise";
|
|
@@ -83,6 +84,23 @@ var getOffsetPos = function getOffsetPos(el) {
|
|
|
83
84
|
return elPos;
|
|
84
85
|
};
|
|
85
86
|
|
|
87
|
+
var getBorderWidth = function getBorderWidth(el) {
|
|
88
|
+
var border = {
|
|
89
|
+
top: 0,
|
|
90
|
+
left: 0
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
if (el.offsetParent) {
|
|
94
|
+
var _context, _context2;
|
|
95
|
+
|
|
96
|
+
var parentBorder = getBorderWidth(el.offsetParent);
|
|
97
|
+
border.top += parentBorder.top + parseInt(_sliceInstanceProperty(_context = getComputedStyle(el.offsetParent, null).borderTopWidth).call(_context, 0, -2));
|
|
98
|
+
border.left += parentBorder.left + parseInt(_sliceInstanceProperty(_context2 = getComputedStyle(el.offsetParent, null).borderTopWidth).call(_context2, 0, -2));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return border;
|
|
102
|
+
};
|
|
103
|
+
|
|
86
104
|
var getScrollDist = function getScrollDist(el, container) {
|
|
87
105
|
var elScroll = {
|
|
88
106
|
top: el.scrollTop,
|
|
@@ -103,7 +121,7 @@ var getScrollDist = function getScrollDist(el, container) {
|
|
|
103
121
|
};
|
|
104
122
|
|
|
105
123
|
function usePopper(locatorElement, popperElement, props) {
|
|
106
|
-
var
|
|
124
|
+
var _context3, _context4, _arrowStyle;
|
|
107
125
|
|
|
108
126
|
var prefixCls = props.prefixCls,
|
|
109
127
|
onTrigger = props.onTrigger,
|
|
@@ -142,11 +160,11 @@ function usePopper(locatorElement, popperElement, props) {
|
|
|
142
160
|
} : _props$getPopupContai;
|
|
143
161
|
var arrowWidth = Math.sqrt(2 * Math.pow(arrowSize, 2));
|
|
144
162
|
var componentName = (prefixCls === null || prefixCls === void 0 ? void 0 : prefixCls.split('-')[1]) || '';
|
|
145
|
-
devWarning(Placements.indexOf(placement) === -1, componentName, _concatInstanceProperty(
|
|
163
|
+
devWarning(Placements.indexOf(placement) === -1, componentName, _concatInstanceProperty(_context3 = "cannot found ".concat(componentName, " placement '")).call(_context3, placement, "'"));
|
|
146
164
|
var isWrongTrigger = Array.isArray(trigger) ? trigger.some(function (v) {
|
|
147
165
|
return !_includesInstanceProperty(Triggers).call(Triggers, v);
|
|
148
166
|
}) : Triggers.indexOf(trigger) === -1;
|
|
149
|
-
devWarning(isWrongTrigger, componentName, _concatInstanceProperty(
|
|
167
|
+
devWarning(isWrongTrigger, componentName, _concatInstanceProperty(_context4 = "cannot found ".concat(componentName, " trigger '")).call(_context4, trigger, "'"));
|
|
150
168
|
var locatorEl = useRef();
|
|
151
169
|
var popperEl = useRef();
|
|
152
170
|
var locatorRef = locatorElement.ref || locatorEl;
|
|
@@ -246,21 +264,25 @@ function usePopper(locatorElement, popperElement, props) {
|
|
|
246
264
|
locatorTop = _getOffsetPos2.top,
|
|
247
265
|
locatorLeft = _getOffsetPos2.left;
|
|
248
266
|
|
|
249
|
-
var _getScrollDist = getScrollDist(locatorRef.current.parentElement, container),
|
|
250
|
-
scrollTop = _getScrollDist.top,
|
|
251
|
-
scrollLeft = _getScrollDist.left;
|
|
252
|
-
|
|
253
267
|
var _getTranslatePos = getTranslatePos(locatorRef.current),
|
|
254
268
|
translateTop = _getTranslatePos.top,
|
|
255
269
|
translateLeft = _getTranslatePos.left;
|
|
256
270
|
|
|
271
|
+
var _getBorderWidth = getBorderWidth(locatorRef.current),
|
|
272
|
+
borderTop = _getBorderWidth.top,
|
|
273
|
+
borderLeft = _getBorderWidth.left;
|
|
274
|
+
|
|
275
|
+
var _getScrollDist = getScrollDist(locatorRef.current.parentElement, container),
|
|
276
|
+
scrollTop = _getScrollDist.top,
|
|
277
|
+
scrollLeft = _getScrollDist.left;
|
|
278
|
+
|
|
257
279
|
var locatorPos = {
|
|
258
280
|
width: width,
|
|
259
281
|
height: height,
|
|
260
|
-
top: locatorTop + translateTop - containerTop - scrollTop,
|
|
261
|
-
left: locatorLeft + translateLeft - containerLeft - scrollLeft,
|
|
262
|
-
right: locatorLeft + translateLeft + width - containerLeft - scrollLeft,
|
|
263
|
-
bottom: locatorTop + translateTop + height - containerTop - scrollTop
|
|
282
|
+
top: locatorTop + borderTop + translateTop - containerTop - scrollTop,
|
|
283
|
+
left: locatorLeft + borderLeft + translateLeft - containerLeft - scrollLeft,
|
|
284
|
+
right: locatorLeft + borderLeft + translateLeft + width - containerLeft - scrollLeft,
|
|
285
|
+
bottom: locatorTop + borderTop + translateTop + height - containerTop - scrollTop
|
|
264
286
|
};
|
|
265
287
|
var currentPos = trigger === 'contextMenu' ? mousePos : locatorPos;
|
|
266
288
|
var _currentPlacement = placement;
|
|
@@ -457,7 +479,6 @@ function usePopper(locatorElement, popperElement, props) {
|
|
|
457
479
|
}
|
|
458
480
|
}, [disabled, exist, onTrigger, visible]);
|
|
459
481
|
var hidePopper = useCallback(function () {
|
|
460
|
-
setEvType('');
|
|
461
482
|
props.visible === undefined && setVisible(false);
|
|
462
483
|
onVisibleChange && onVisibleChange(false);
|
|
463
484
|
}, [onVisibleChange, props.visible]);
|
package/es/anchor/anchor.js
CHANGED
|
@@ -317,12 +317,6 @@ var InternalAnchor = function InternalAnchor(props, ref) {
|
|
|
317
317
|
var handleVisibleChange = function handleVisibleChange(visible) {
|
|
318
318
|
!isLocked && onVisibleChange && onVisibleChange(visible);
|
|
319
319
|
if (props.visible !== undefined) return;
|
|
320
|
-
|
|
321
|
-
if (visible) {
|
|
322
|
-
setOptionShow(visible);
|
|
323
|
-
return;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
320
|
!isLocked && setOptionShow(visible);
|
|
327
321
|
};
|
|
328
322
|
|
|
@@ -180,7 +180,7 @@
|
|
|
180
180
|
overflow: hidden;
|
|
181
181
|
white-space: nowrap;
|
|
182
182
|
text-overflow: ellipsis;
|
|
183
|
-
padding: 0
|
|
183
|
+
padding: 0 4px;
|
|
184
184
|
line-height: 1.5;
|
|
185
185
|
vertical-align: middle;
|
|
186
186
|
}
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
}
|
|
195
195
|
.kd-anchor-advanced-arrows {
|
|
196
196
|
color: var(--kd-c-anchor-advanced-arrows-color-text, #666);
|
|
197
|
-
font-size: var(--kd-c-anchor-
|
|
197
|
+
font-size: var(--kd-c-anchor-advanced-arrows-font-size, 24px);
|
|
198
198
|
cursor: pointer;
|
|
199
199
|
}
|
|
200
200
|
.kd-anchor-advanced-arrows:hover {
|
|
@@ -257,6 +257,9 @@
|
|
|
257
257
|
.kd-anchor-link {
|
|
258
258
|
padding: var(--kd-c-anchor-spacing-padding, 7px 8px);
|
|
259
259
|
}
|
|
260
|
+
.kd-anchor-link > .kd-anchor-link {
|
|
261
|
+
padding: var(--kd-c-anchor-secondary-spacing-padding, 12px 8px);
|
|
262
|
+
}
|
|
260
263
|
.kd-anchor-link-title {
|
|
261
264
|
text-decoration: none;
|
|
262
265
|
color: var(--kd-c-anchor-color-text-primary, var(--kd-g-color-text-primary, #212121));
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
overflow: hidden;
|
|
73
73
|
white-space: nowrap;
|
|
74
74
|
text-overflow: ellipsis;
|
|
75
|
-
padding: 0
|
|
75
|
+
padding: 0 4px;
|
|
76
76
|
line-height: 1.5;
|
|
77
77
|
vertical-align: middle;
|
|
78
78
|
}
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
|
|
91
91
|
&-advanced-arrows {
|
|
92
92
|
color: @anchor-advanced-arrows-color;
|
|
93
|
-
font-size: @anchor-
|
|
93
|
+
font-size: @anchor-advanced-arrows-font-size;
|
|
94
94
|
cursor: pointer;
|
|
95
95
|
&:hover {
|
|
96
96
|
color: @anchor-color-theme;
|
|
@@ -154,6 +154,10 @@
|
|
|
154
154
|
&-link {
|
|
155
155
|
padding: @anchor-link-padding;
|
|
156
156
|
|
|
157
|
+
&>.@{anchor-prefix-cls}-link {
|
|
158
|
+
padding: @anchor-link-secondary-padding;
|
|
159
|
+
}
|
|
160
|
+
|
|
157
161
|
&-title {
|
|
158
162
|
text-decoration: none;
|
|
159
163
|
color: @anchor-primary-text-color;
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
@anchor-link-top: var(~'@{anchor-prefix}-spacing-vertical', 7px);
|
|
20
20
|
@anchor-link-left: var(~'@{anchor-prefix}-spacing-horizontal', 7px);
|
|
21
21
|
@anchor-link-padding: var(~'@{anchor-prefix}-spacing-padding', 7px 8px);
|
|
22
|
+
@anchor-link-secondary-padding: var(~'@{anchor-prefix}-secondary-spacing-padding', 12px 8px);
|
|
22
23
|
@anchor-advanced-padding-top: var(~'@{anchor-prefix}-advanced-spacing-padding-top', 8px);
|
|
23
24
|
@anchor-advanced-padding-bottom: var(~'@{anchor-prefix}-advanced-spacing-padding-bottom', 7px);
|
|
24
25
|
@anchor-ink-line-width: var(~'@{anchor-prefix}-ink-line-spacing-width', 1px);
|
|
@@ -28,6 +29,6 @@
|
|
|
28
29
|
@anchor-advanced-lock-size: var(~'@{anchor-prefix}-advanced-lock-font-size', 16px);
|
|
29
30
|
@anchor-font-size: var(~'@{anchor-prefix}-font-size', @font-size-small);
|
|
30
31
|
@anchor-icon-font-size: var(~'@{anchor-prefix}-icon-font-size', 16px);
|
|
31
|
-
|
|
32
|
+
@anchor-advanced-arrows-font-size: var(~'@{anchor-prefix}-advanced-arrows-font-size', 24px);
|
|
32
33
|
// motion
|
|
33
34
|
@anchor-transition-duration: var(~'@{anchor-prefix}-duration-duration', @duration-promptly);
|
package/es/button/button.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export declare const ButtonTypes: ["second", "primary", "ghost", "text"];
|
|
|
3
3
|
export declare type ButtonType = typeof ButtonTypes[number];
|
|
4
4
|
export declare const ButtonSizes: ["large", "middle", "small"];
|
|
5
5
|
export declare type ButtonSize = typeof ButtonSizes[number];
|
|
6
|
-
export declare const ButtonShapes: ["circle", "round"];
|
|
6
|
+
export declare const ButtonShapes: ["circle", "round", "none"];
|
|
7
7
|
export declare type ButtonShape = typeof ButtonShapes[number];
|
|
8
8
|
export declare const ButtonIconPlaces: ["left", "right"];
|
|
9
9
|
export declare type ButtonIconPlace = typeof ButtonIconPlaces[number];
|
package/es/button/button.js
CHANGED
|
@@ -25,7 +25,7 @@ import { tuple } from '../_utils/type';
|
|
|
25
25
|
import devWarning from '../_utils/devwarning';
|
|
26
26
|
export var ButtonTypes = tuple('second', 'primary', 'ghost', 'text');
|
|
27
27
|
export var ButtonSizes = tuple('large', 'middle', 'small');
|
|
28
|
-
export var ButtonShapes = tuple('circle', 'round');
|
|
28
|
+
export var ButtonShapes = tuple('circle', 'round', 'none');
|
|
29
29
|
export var ButtonIconPlaces = tuple('left', 'right');
|
|
30
30
|
export var ButtonHTMLTypes = tuple('submit', 'button', 'reset');
|
|
31
31
|
|
|
@@ -107,7 +107,7 @@ var InternalButton = function InternalButton(props, ref) {
|
|
|
107
107
|
|
|
108
108
|
var isTextBtn = type === 'text'; // 判断按钮是否文本类型。这些类型下有部分样式不适用
|
|
109
109
|
|
|
110
|
-
var btnClasses = classNames(btnPrefixCls, className, (_classNames = {}, _defineProperty(_classNames, _concatInstanceProperty(_context = "".concat(btnPrefixCls, "-")).call(_context, type), type), _defineProperty(_classNames, _concatInstanceProperty(_context2 = "".concat(btnPrefixCls, "-size-")).call(_context2, size), size), _defineProperty(_classNames, _concatInstanceProperty(_context3 = "".concat(btnPrefixCls, "-shape-")).call(_context3, shape), shape && !isTextBtn), _defineProperty(_classNames, "".concat(btnPrefixCls, "-no-border"), !bordered), _defineProperty(_classNames, "".concat(btnPrefixCls, "-background-ghost"), ghost && !disabled), _defineProperty(_classNames, "".concat(btnPrefixCls, "-loading"), loading && !isTextBtn), _defineProperty(_classNames, "".concat(btnPrefixCls, "-block"), block && !shape), _classNames));
|
|
110
|
+
var btnClasses = classNames(btnPrefixCls, className, (_classNames = {}, _defineProperty(_classNames, _concatInstanceProperty(_context = "".concat(btnPrefixCls, "-")).call(_context, type), type), _defineProperty(_classNames, _concatInstanceProperty(_context2 = "".concat(btnPrefixCls, "-size-")).call(_context2, size), size), _defineProperty(_classNames, _concatInstanceProperty(_context3 = "".concat(btnPrefixCls, "-shape-")).call(_context3, shape), shape && !isTextBtn), _defineProperty(_classNames, "".concat(btnPrefixCls, "-no-border"), !bordered), _defineProperty(_classNames, "".concat(btnPrefixCls, "-background-ghost"), ghost && !disabled), _defineProperty(_classNames, "".concat(btnPrefixCls, "-loading"), loading && !isTextBtn), _defineProperty(_classNames, "".concat(btnPrefixCls, "-block"), block && !shape), _defineProperty(_classNames, "".concat(btnPrefixCls, "-icon-only"), !children && children !== 0 && icon), _classNames));
|
|
111
111
|
|
|
112
112
|
var iconWrapperClassName = _concatInstanceProperty(_context4 = "".concat(btnPrefixCls, "-iconWrapper-")).call(_context4, iconPlace === 'left' ? 'left' : 'right');
|
|
113
113
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React, { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
import { ButtonType } from './button';
|
|
3
|
+
export declare const ButtonGroupTypes: ["basic", "similar"];
|
|
4
|
+
export declare type ButtonGroupType = typeof ButtonGroupTypes[number];
|
|
5
|
+
export interface OverlayType {
|
|
6
|
+
value?: string;
|
|
7
|
+
label?: React.ReactNode;
|
|
8
|
+
}
|
|
9
|
+
export interface ButtonGroupProps {
|
|
10
|
+
style?: CSSProperties;
|
|
11
|
+
className?: string;
|
|
12
|
+
children?: ReactNode;
|
|
13
|
+
onClick?: () => void;
|
|
14
|
+
overlay?: Array<OverlayType>;
|
|
15
|
+
icon?: [ReactNode, ReactNode];
|
|
16
|
+
type?: ButtonGroupType;
|
|
17
|
+
buttonType?: ButtonType;
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
}
|
|
20
|
+
declare const ButtonGroup: React.ForwardRefExoticComponent<ButtonGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
21
|
+
export default ButtonGroup;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import _extends from "@babel/runtime-corejs3/helpers/extends";
|
|
2
|
+
import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
|
|
3
|
+
import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
|
|
4
|
+
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
|
|
5
|
+
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
|
6
|
+
import React, { useContext, useState, useCallback } from 'react';
|
|
7
|
+
import classNames from 'classnames';
|
|
8
|
+
import ConfigContext from '../config-provider/ConfigContext';
|
|
9
|
+
import { getCompProps } from '../_utils';
|
|
10
|
+
import { Button, Icon } from '../index';
|
|
11
|
+
import usePopper from '../_utils/usePopper';
|
|
12
|
+
import { toArray } from '../_utils/react-children';
|
|
13
|
+
import { tuple } from '../_utils/type';
|
|
14
|
+
export var ButtonGroupTypes = tuple('basic', 'similar');
|
|
15
|
+
|
|
16
|
+
var InternalButtonGroup = function InternalButtonGroup(props, ref) {
|
|
17
|
+
var _context;
|
|
18
|
+
|
|
19
|
+
var _useContext = useContext(ConfigContext),
|
|
20
|
+
getPrefixCls = _useContext.getPrefixCls,
|
|
21
|
+
prefixCls = _useContext.prefixCls,
|
|
22
|
+
userDefaultProps = _useContext.compDefaultProps;
|
|
23
|
+
|
|
24
|
+
var buttonGoupProps = getCompProps('ButtonGroup', userDefaultProps, props);
|
|
25
|
+
var style = buttonGoupProps.style,
|
|
26
|
+
className = buttonGoupProps.className,
|
|
27
|
+
children = buttonGoupProps.children,
|
|
28
|
+
customPrefixcls = buttonGoupProps.prefixCls,
|
|
29
|
+
onClick = buttonGoupProps.onClick,
|
|
30
|
+
onItemClick = buttonGoupProps.onItemClick,
|
|
31
|
+
overlay = buttonGoupProps.overlay,
|
|
32
|
+
icon = buttonGoupProps.icon,
|
|
33
|
+
type = buttonGoupProps.type,
|
|
34
|
+
buttonType = buttonGoupProps.buttonType,
|
|
35
|
+
disabled = buttonGoupProps.disabled,
|
|
36
|
+
onVisibleChange = buttonGoupProps.onVisibleChange;
|
|
37
|
+
|
|
38
|
+
var _useState = useState(false),
|
|
39
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
40
|
+
optionShow = _useState2[0],
|
|
41
|
+
setOptionShow = _useState2[1]; // 下拉列表是否展示
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
var refBtnGroup = React.useRef(null) || ref;
|
|
45
|
+
var triggerRef = React.useRef(null);
|
|
46
|
+
var isBsicType = type === 'basic';
|
|
47
|
+
var btnGroupPrefixCls = getPrefixCls(prefixCls, 'btn-group', customPrefixcls);
|
|
48
|
+
var btnGroupClasses = classNames("".concat(btnGroupPrefixCls), className, _defineProperty({}, _concatInstanceProperty(_context = "".concat(btnGroupPrefixCls, "-")).call(_context, type), type));
|
|
49
|
+
var renderTriggerButton = useCallback(function () {
|
|
50
|
+
var _toArray = toArray(icon),
|
|
51
|
+
_toArray2 = _slicedToArray(_toArray, 2),
|
|
52
|
+
_toArray2$ = _toArray2[0],
|
|
53
|
+
iconUp = _toArray2$ === void 0 ? /*#__PURE__*/React.createElement(Icon, {
|
|
54
|
+
type: "arrow-up"
|
|
55
|
+
}) : _toArray2$,
|
|
56
|
+
_toArray2$2 = _toArray2[1],
|
|
57
|
+
iconDown = _toArray2$2 === void 0 ? /*#__PURE__*/React.createElement(Icon, {
|
|
58
|
+
type: "arrow-down"
|
|
59
|
+
}) : _toArray2$2;
|
|
60
|
+
|
|
61
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
62
|
+
style: style,
|
|
63
|
+
className: btnGroupClasses,
|
|
64
|
+
ref: refBtnGroup
|
|
65
|
+
}, isBsicType && /*#__PURE__*/React.createElement(Button, {
|
|
66
|
+
type: buttonType,
|
|
67
|
+
disabled: disabled
|
|
68
|
+
}, children, /*#__PURE__*/React.createElement("span", {
|
|
69
|
+
className: "".concat(btnGroupPrefixCls, "-basic-icon")
|
|
70
|
+
}, optionShow ? iconUp : iconDown)), !isBsicType && /*#__PURE__*/React.createElement(Button, {
|
|
71
|
+
type: buttonType,
|
|
72
|
+
disabled: disabled,
|
|
73
|
+
onClick: onClick
|
|
74
|
+
}, children), !isBsicType && /*#__PURE__*/React.createElement("span", {
|
|
75
|
+
className: "".concat(btnGroupPrefixCls, "-trigger"),
|
|
76
|
+
ref: triggerRef
|
|
77
|
+
}, optionShow ? /*#__PURE__*/React.createElement(Button, {
|
|
78
|
+
icon: iconUp,
|
|
79
|
+
type: buttonType,
|
|
80
|
+
disabled: disabled
|
|
81
|
+
}) : /*#__PURE__*/React.createElement(Button, {
|
|
82
|
+
icon: iconDown,
|
|
83
|
+
type: buttonType,
|
|
84
|
+
disabled: disabled
|
|
85
|
+
})));
|
|
86
|
+
}, [icon, btnGroupPrefixCls, style, btnGroupClasses, refBtnGroup, isBsicType, buttonType, disabled, children, optionShow, onClick]);
|
|
87
|
+
var handleItemClick = useCallback(function (data) {
|
|
88
|
+
onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(data);
|
|
89
|
+
setOptionShow(false);
|
|
90
|
+
}, [onItemClick]);
|
|
91
|
+
var renderContent = useCallback(function () {
|
|
92
|
+
var _context2;
|
|
93
|
+
|
|
94
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
95
|
+
className: "".concat(btnGroupPrefixCls, "-dropdown")
|
|
96
|
+
}, _mapInstanceProperty(_context2 = overlay || []).call(_context2, function (item) {
|
|
97
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
98
|
+
key: item.value,
|
|
99
|
+
className: "".concat(btnGroupPrefixCls, "-dropdown-item"),
|
|
100
|
+
onClick: function onClick() {
|
|
101
|
+
return handleItemClick === null || handleItemClick === void 0 ? void 0 : handleItemClick(item);
|
|
102
|
+
}
|
|
103
|
+
}, item.label);
|
|
104
|
+
}));
|
|
105
|
+
}, [btnGroupPrefixCls, overlay, handleItemClick]);
|
|
106
|
+
|
|
107
|
+
var handleVisibleChange = function handleVisibleChange(visible) {
|
|
108
|
+
setOptionShow(visible);
|
|
109
|
+
onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(visible);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
var popperProps = _extends(_extends({
|
|
113
|
+
placement: 'bottomLeft',
|
|
114
|
+
trigger: 'click'
|
|
115
|
+
}, buttonGoupProps), {
|
|
116
|
+
prefixCls: btnGroupPrefixCls,
|
|
117
|
+
defaultVisible: optionShow,
|
|
118
|
+
visible: optionShow,
|
|
119
|
+
onVisibleChange: handleVisibleChange,
|
|
120
|
+
getTriggerElement: function getTriggerElement(locatorNode) {
|
|
121
|
+
return isBsicType ? locatorNode : triggerRef.current;
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
return usePopper(renderTriggerButton(), renderContent(), popperProps);
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
var ButtonGroup = /*#__PURE__*/React.forwardRef(InternalButtonGroup);
|
|
129
|
+
ButtonGroup.displayName = 'ButtonGroup';
|
|
130
|
+
export default ButtonGroup;
|
package/es/button/index.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import Dropdown from './group';
|
|
3
|
+
declare const Button: import("react").ForwardRefExoticComponent<import("./button").IButtonProps & import("react").RefAttributes<unknown>> & {
|
|
4
|
+
Dropdown: typeof Dropdown;
|
|
5
|
+
};
|
|
2
6
|
export { ButtonType, IButtonProps } from './button';
|
|
3
7
|
export default Button;
|
package/es/button/index.js
CHANGED
|
@@ -145,24 +145,24 @@
|
|
|
145
145
|
animation: fadeEffect var(--kd-c-button-motion-duration-fade, var(--kd-g-duration-slowly, 0.4s)) cubic-bezier(0, 0.4, 0.4, 1) forwards, waveEffect var(--kd-c-button-motion-duration-wave, var(--kd-g-duration-quickly, 0.2s)) cubic-bezier(0, 0.4, 0.4, 1) forwards;
|
|
146
146
|
}
|
|
147
147
|
.kd-btn-second {
|
|
148
|
-
border-color: var(--kd-c-button-second-color-border,
|
|
149
|
-
background-color: var(--kd-c-button-second-color-background,
|
|
150
|
-
color: var(--kd-c-button-second-color-text,
|
|
148
|
+
border-color: var(--kd-c-button-second-color-border, #D9D9D9);
|
|
149
|
+
background-color: var(--kd-c-button-second-color-background, transparent);
|
|
150
|
+
color: var(--kd-c-button-second-color-text, #212121);
|
|
151
151
|
}
|
|
152
152
|
.kd-btn-second:hover:not(.kd-btn-loading) {
|
|
153
153
|
background-color: var(--kd-c-button-second-color-background-hover, var(--kd-g-color-white, #fff));
|
|
154
|
-
border-color: var(--kd-c-button-second-color-border-hover, var(--kd-g-color-
|
|
155
|
-
color: var(--kd-c-button-second-color-text-hover, var(--kd-g-color-
|
|
154
|
+
border-color: var(--kd-c-button-second-color-border-hover, var(--kd-g-color-theme, #5582f3));
|
|
155
|
+
color: var(--kd-c-button-second-color-text-hover, var(--kd-g-color-theme, #5582f3));
|
|
156
156
|
}
|
|
157
157
|
.kd-btn-second:active:not(.kd-btn-loading) {
|
|
158
158
|
background-color: var(--kd-c-button-second-color-background-active, var(--kd-g-color-white, #fff));
|
|
159
|
-
border-color: var(--kd-c-button-second-color-border-active, var(--kd-g-color-
|
|
160
|
-
color: var(--kd-c-button-second-color-text-active, var(--kd-g-color-
|
|
159
|
+
border-color: var(--kd-c-button-second-color-border-active, var(--kd-g-color-theme-7, #375cca));
|
|
160
|
+
color: var(--kd-c-button-second-color-text-active, var(--kd-g-color-theme-7, #375cca));
|
|
161
161
|
}
|
|
162
162
|
.kd-btn-second:disabled {
|
|
163
|
-
border-color: var(--kd-c-button-second-color-border-disabled,
|
|
164
|
-
background-color: var(--kd-c-button-second-color-background-disabled, var(--kd-g-color-background-
|
|
165
|
-
color: var(--kd-c-button-second-color-text-disabled,
|
|
163
|
+
border-color: var(--kd-c-button-second-color-border-disabled, #D9D9D9) !important;
|
|
164
|
+
background-color: var(--kd-c-button-second-color-background-disabled, var(--kd-g-color-background-contain-disabled, #f5f5f5)) !important;
|
|
165
|
+
color: var(--kd-c-button-second-color-text-disabled, #B2B2B2) !important;
|
|
166
166
|
}
|
|
167
167
|
.kd-btn-primary {
|
|
168
168
|
border-color: var(--kd-c-button-primary-color-border, var(--kd-g-color-theme, #5582f3));
|
|
@@ -182,22 +182,24 @@
|
|
|
182
182
|
border-color: var(--kd-c-button-primary-color-border-disabled, var(--kd-g-color-theme-3, #e3eeff)) !important;
|
|
183
183
|
}
|
|
184
184
|
.kd-btn-ghost {
|
|
185
|
-
border-color: var(--kd-c-button-ghost-color-border, var(--kd-g-color-
|
|
185
|
+
border-color: var(--kd-c-button-ghost-color-border, var(--kd-g-color-theme-6, #5582f3));
|
|
186
186
|
background-color: var(--kd-c-button-ghost-color-background, transparent);
|
|
187
|
-
color: var(--kd-c-button-ghost-color-text,
|
|
187
|
+
color: var(--kd-c-button-ghost-color-text, #5582F3);
|
|
188
188
|
}
|
|
189
189
|
.kd-btn-ghost:hover:not(.kd-btn-loading) {
|
|
190
|
-
|
|
191
|
-
color: var(--kd-c-button-ghost-color-
|
|
190
|
+
background-color: var(--kd-c-button-ghost-color-background-hover, var(--kd-g-color-theme-5, #87adff));
|
|
191
|
+
border-color: var(--kd-c-button-ghost-color-border-hover, transparent);
|
|
192
|
+
color: var(--kd-c-button-ghost-color-text-hover, #ffffff);
|
|
192
193
|
}
|
|
193
194
|
.kd-btn-ghost:active:not(.kd-btn-loading) {
|
|
194
|
-
|
|
195
|
-
color: var(--kd-c-button-ghost-color-
|
|
195
|
+
background-color: var(--kd-c-button-ghost-color-background-active, var(--kd-g-color-theme-7, #375cca));
|
|
196
|
+
border-color: var(--kd-c-button-ghost-color-border-hover, transparent);
|
|
197
|
+
color: var(--kd-c-button-ghost-color-text-active, #ffffff);
|
|
196
198
|
}
|
|
197
199
|
.kd-btn-ghost:disabled {
|
|
198
200
|
background-color: var(--kd-c-button-ghost-color-background-disabled, var(--kd-g-color-background-contain-disabled, #f5f5f5)) !important;
|
|
199
|
-
border-color: var(--kd-c-button-ghost-color-border-disabled,
|
|
200
|
-
color: var(--kd-c-button-ghost-color-
|
|
201
|
+
border-color: var(--kd-c-button-ghost-color-border-disabled, #D9D9D9) !important;
|
|
202
|
+
color: var(--kd-c-button-ghost-color-text-disabled, #B2B2B2) !important;
|
|
201
203
|
}
|
|
202
204
|
.kd-btn-iconWrapper-left {
|
|
203
205
|
display: -webkit-box;
|
|
@@ -236,6 +238,13 @@
|
|
|
236
238
|
font-size: var(--kd-c-button-font-size-small, var(--kd-g-font-size-small, 12px));
|
|
237
239
|
padding: var(--kd-c-button-spacing-padding-vertical-small, 3px) var(--kd-c-button-spacing-padding-horizontal-small, 8px);
|
|
238
240
|
}
|
|
241
|
+
.kd-btn-size-small.kd-btn-icon-only {
|
|
242
|
+
font-size: var(--kd-c-button-icon-font-size-small, 14px);
|
|
243
|
+
padding: 0 var(--kd-c-button-icon-spacing-padding-horizontal, 4px);
|
|
244
|
+
}
|
|
245
|
+
.kd-btn-size-small .kd-btn-group-basic-icon {
|
|
246
|
+
font-size: var(--kd-c-button-icon-font-size-small, 14px);
|
|
247
|
+
}
|
|
239
248
|
.kd-btn-size-middle {
|
|
240
249
|
height: var(--kd-c-button-sizing-height-middle, 28px);
|
|
241
250
|
min-width: var(--kd-c-button-sizing-min-width-middle, 60px);
|
|
@@ -243,6 +252,13 @@
|
|
|
243
252
|
font-size: var(--kd-c-button-font-size-middle, var(--kd-g-font-size-small, 12px));
|
|
244
253
|
padding: var(--kd-c-button-spacing-padding-vertical-middle, 5px) var(--kd-c-button-spacing-padding-horizontal-middle, 8px);
|
|
245
254
|
}
|
|
255
|
+
.kd-btn-size-middle.kd-btn-icon-only {
|
|
256
|
+
font-size: var(--kd-c-button-icon-font-size-middle, 16px);
|
|
257
|
+
padding: 0 var(--kd-c-button-icon-spacing-padding-horizontal, 4px);
|
|
258
|
+
}
|
|
259
|
+
.kd-btn-size-middle .kd-btn-group-basic-icon {
|
|
260
|
+
font-size: var(--kd-c-button-icon-font-size-middle, 16px);
|
|
261
|
+
}
|
|
246
262
|
.kd-btn-size-large {
|
|
247
263
|
height: var(--kd-c-button-sizing-height-large, 32px);
|
|
248
264
|
min-width: var(--kd-c-button-sizing-min-width-large, 80px);
|
|
@@ -250,6 +266,13 @@
|
|
|
250
266
|
font-size: var(--kd-c-button-font-size-large, var(--kd-g-font-size-large, 16px));
|
|
251
267
|
padding: var(--kd-c-button-spacing-padding-vertical-large, 6px) var(--kd-c-button-spacing-padding-horizontal-large, 8px);
|
|
252
268
|
}
|
|
269
|
+
.kd-btn-size-large.kd-btn-icon-only {
|
|
270
|
+
font-size: var(--kd-c-button-icon-font-size-large, 18px);
|
|
271
|
+
padding: 0 var(--kd-c-button-icon-spacing-padding-horizontal, 4px);
|
|
272
|
+
}
|
|
273
|
+
.kd-btn-size-large .kd-btn-group-basic-icon {
|
|
274
|
+
font-size: var(--kd-c-button-icon-font-size-large, 18px);
|
|
275
|
+
}
|
|
253
276
|
.kd-btn-shape-circle {
|
|
254
277
|
border-radius: 50%;
|
|
255
278
|
min-width: auto;
|
|
@@ -275,10 +298,13 @@
|
|
|
275
298
|
.kd-btn-shape-round.kd-btn-size-large {
|
|
276
299
|
border-radius: var(--kd-c-button-sizing-height-large, 32px);
|
|
277
300
|
}
|
|
301
|
+
.kd-btn-shape-none {
|
|
302
|
+
border-radius: 0;
|
|
303
|
+
}
|
|
278
304
|
.kd-btn-text {
|
|
279
305
|
height: auto;
|
|
280
306
|
width: auto;
|
|
281
|
-
color: var(--kd-c-button-text-color-text, var(--kd-g-color-theme, #5582f3));
|
|
307
|
+
color: var(--kd-c-button-text-color-text, var(--kd-g-color-theme-6, #5582f3));
|
|
282
308
|
padding: 0;
|
|
283
309
|
min-width: auto;
|
|
284
310
|
}
|
|
@@ -289,7 +315,7 @@
|
|
|
289
315
|
color: var(--kd-c-button-text-color-text-active, var(--kd-g-color-theme-7, #375cca));
|
|
290
316
|
}
|
|
291
317
|
.kd-btn-text[disabled] {
|
|
292
|
-
color: var(--kd-c-button-text-color-text-disabled, var(--kd-g-color-
|
|
318
|
+
color: var(--kd-c-button-text-color-text-disabled, var(--kd-g-color-theme-4, #b5cfff)) !important;
|
|
293
319
|
}
|
|
294
320
|
.kd-btn-no-border {
|
|
295
321
|
border: none;
|
|
@@ -316,5 +342,75 @@
|
|
|
316
342
|
width: 100%;
|
|
317
343
|
}
|
|
318
344
|
.kd-btn .btn-space {
|
|
319
|
-
margin-left:
|
|
345
|
+
margin-left: 4px;
|
|
346
|
+
}
|
|
347
|
+
.kd-btn-group {
|
|
348
|
+
display: inline-block;
|
|
349
|
+
}
|
|
350
|
+
.kd-btn-group-basic .kd-btn {
|
|
351
|
+
padding-top: 0;
|
|
352
|
+
padding-bottom: 0;
|
|
353
|
+
}
|
|
354
|
+
.kd-btn-group-basic-icon {
|
|
355
|
+
margin-left: 4px;
|
|
356
|
+
}
|
|
357
|
+
.kd-btn-group-trigger .kd-btn-primary {
|
|
358
|
+
background: var(--kd-c-button-group-trigger-color-background, #4367c1);
|
|
359
|
+
}
|
|
360
|
+
.kd-btn-group-trigger .kd-btn-primary:hover {
|
|
361
|
+
background: var(--kd-c-button-group-trigger-color-background-hover, #4c74da);
|
|
362
|
+
border-color: var(--kd-c-button-group-trigger-color-background-hover, #4c74da);
|
|
363
|
+
}
|
|
364
|
+
.kd-btn-group-trigger .kd-btn-primary:active {
|
|
365
|
+
background: var(--kd-c-button-group-trigger-color-background-active, #3B5AA9);
|
|
366
|
+
}
|
|
367
|
+
.kd-btn-group-trigger .kd-btn-primary:disabled {
|
|
368
|
+
background: var(--kd-c-button-group-trigger-color-background-disabled, #95a4c8) !important;
|
|
369
|
+
}
|
|
370
|
+
.kd-btn-group-trigger .kd-btn {
|
|
371
|
+
margin-left: -1px;
|
|
372
|
+
}
|
|
373
|
+
.kd-btn-group .kd-btn-size-small,
|
|
374
|
+
.kd-btn-group .kd-btn-size-middle,
|
|
375
|
+
.kd-btn-group .kd-btn-size-large {
|
|
376
|
+
min-width: unset;
|
|
377
|
+
}
|
|
378
|
+
.kd-btn-group .kd-btn:first-child {
|
|
379
|
+
border-top-right-radius: 0;
|
|
380
|
+
border-bottom-right-radius: 0;
|
|
381
|
+
}
|
|
382
|
+
.kd-btn-group .kd-btn:last-child {
|
|
383
|
+
border-top-left-radius: 0;
|
|
384
|
+
border-bottom-left-radius: 0;
|
|
385
|
+
}
|
|
386
|
+
.kd-btn-group .kd-dropdown-menu {
|
|
387
|
+
padding: 0;
|
|
388
|
+
}
|
|
389
|
+
.kd-btn-group-dropdown {
|
|
390
|
+
-webkit-box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.2);
|
|
391
|
+
box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.2);
|
|
392
|
+
background: var(--kd-c-button-group-dropdown-color-background, #fff);
|
|
393
|
+
color: #333333;
|
|
394
|
+
min-width: var(--kd-c-button-group-dropdown-min-width, 80px);
|
|
395
|
+
}
|
|
396
|
+
.kd-btn-group-dropdown-item {
|
|
397
|
+
height: var(--kd-c-button--group-dropdown-item-height, 30px);
|
|
398
|
+
line-height: var(--kd-c-button--group-dropdown-item-height, 30px);
|
|
399
|
+
cursor: pointer;
|
|
400
|
+
padding: 0 var(--kd-c-button-group-dropdown-item-horizonta, 12px);
|
|
401
|
+
}
|
|
402
|
+
.kd-btn-group-dropdown-item:hover {
|
|
403
|
+
background: var(--kd-c-button-group-dropdown-item-color-background-hover, #F5F5F5);
|
|
404
|
+
}
|
|
405
|
+
.kd-btn-group-dropdown-item:not(:last-child) {
|
|
406
|
+
border-bottom: 1px solid var(--kd-c-button-group-dropdown-item-border-color, #E5E5E5);
|
|
407
|
+
}
|
|
408
|
+
.kd-btn-group.topLeft.hidden,
|
|
409
|
+
.kd-btn-group.bottomLeft.hidden,
|
|
410
|
+
.kd-btn-group.topRight.hidden,
|
|
411
|
+
.kd-btn-group.bottomRight.hidden {
|
|
412
|
+
opacity: 0;
|
|
413
|
+
visibility: hidden;
|
|
414
|
+
-webkit-transition: all calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
|
|
415
|
+
transition: all calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
|
|
320
416
|
}
|