@alifd/chat 0.0.1 → 0.1.1
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/es/button/index.d.ts +24 -1
- package/es/button/index.js +33 -1
- package/es/button/main.scss +5 -0
- package/es/button/style.d.ts +1 -0
- package/es/button/style.js +1 -0
- package/es/card/index.d.ts +6 -0
- package/es/card/index.js +6 -0
- package/es/card/main.scss +141 -0
- package/es/card/style.d.ts +2 -0
- package/es/card/style.js +2 -0
- package/es/card/types.d.ts +56 -0
- package/es/card/types.js +1 -0
- package/es/card/view/card.d.ts +6 -0
- package/es/card/view/card.js +52 -0
- package/es/card/view/collapsable.d.ts +7 -0
- package/es/card/view/collapsable.js +62 -0
- package/es/core/variables.scss +33 -0
- package/es/feedback/index.d.ts +7 -0
- package/es/feedback/index.js +47 -0
- package/es/feedback/main.scss +42 -0
- package/es/feedback/style.d.ts +1 -0
- package/es/feedback/style.js +1 -0
- package/es/feedback/types.d.ts +54 -0
- package/es/feedback/types.js +1 -0
- package/es/feedback/view/good.d.ts +7 -0
- package/es/feedback/view/good.js +7 -0
- package/es/float-button/hooks/useAutoAlign.d.ts +2 -2
- package/es/float-button/hooks/useAutoAlign.js +2 -2
- package/es/float-button/hooks/useTriggerType.d.ts +3 -0
- package/es/float-button/hooks/useTriggerType.js +31 -0
- package/es/float-button/index.d.ts +3 -2
- package/es/float-button/index.js +2 -1
- package/es/float-button/main.scss +74 -11
- package/es/float-button/style.d.ts +1 -0
- package/es/float-button/style.js +1 -0
- package/es/float-button/types.d.ts +18 -2
- package/es/float-button/view/backtop.js +3 -3
- package/es/float-button/view/drawer.d.ts +7 -1
- package/es/float-button/view/drawer.js +11 -2
- package/es/float-button/view/float-button.d.ts +1 -1
- package/es/float-button/view/float-button.js +71 -28
- package/es/float-button/view/inner-drawer.d.ts +18 -2
- package/es/float-button/view/inner-drawer.js +114 -3
- package/es/index.d.ts +6 -0
- package/es/index.js +7 -1
- package/es/tab/index.d.ts +8 -0
- package/es/tab/index.js +14 -0
- package/es/tab/main.scss +10 -0
- package/es/tab/style.d.ts +2 -0
- package/es/tab/style.js +2 -0
- package/es/tag/index.d.ts +13 -0
- package/es/tag/index.js +21 -0
- package/es/tag/main.scss +9 -0
- package/es/tag/style.d.ts +2 -0
- package/es/tag/style.js +2 -0
- package/es/text/index.d.ts +3 -0
- package/es/text/index.js +301 -0
- package/es/text/main.scss +19 -0
- package/es/text/style.d.ts +1 -0
- package/es/text/style.js +1 -0
- package/es/text/types.d.ts +16 -0
- package/es/text/types.js +1 -0
- package/es/utils/consts.d.ts +1 -0
- package/es/utils/consts.js +1 -0
- package/es/utils/hooks/useControlable.d.ts +1 -1
- package/es/utils/hooks/useControlable.js +4 -3
- package/es/utils/index.d.ts +1 -0
- package/es/utils/index.js +1 -0
- package/lib/button/index.d.ts +24 -1
- package/lib/button/index.js +33 -6
- package/lib/button/main.scss +5 -0
- package/lib/button/style.d.ts +1 -0
- package/lib/button/style.js +1 -0
- package/lib/card/index.d.ts +6 -0
- package/lib/card/index.js +9 -0
- package/lib/card/main.scss +141 -0
- package/lib/card/style.d.ts +2 -0
- package/lib/card/style.js +4 -0
- package/lib/card/types.d.ts +56 -0
- package/lib/card/types.js +2 -0
- package/lib/card/view/card.d.ts +6 -0
- package/lib/card/view/card.js +57 -0
- package/lib/card/view/collapsable.d.ts +7 -0
- package/lib/card/view/collapsable.js +64 -0
- package/lib/core/variables.scss +33 -0
- package/lib/feedback/index.d.ts +7 -0
- package/lib/feedback/index.js +49 -0
- package/lib/feedback/main.scss +42 -0
- package/lib/feedback/style.d.ts +1 -0
- package/lib/feedback/style.js +3 -0
- package/lib/feedback/types.d.ts +54 -0
- package/lib/feedback/types.js +2 -0
- package/lib/feedback/view/good.d.ts +7 -0
- package/lib/feedback/view/good.js +10 -0
- package/lib/float-button/hooks/useAutoAlign.d.ts +2 -2
- package/lib/float-button/hooks/useAutoAlign.js +2 -2
- package/lib/float-button/hooks/useTriggerType.d.ts +3 -0
- package/lib/float-button/hooks/useTriggerType.js +35 -0
- package/lib/float-button/index.d.ts +3 -2
- package/lib/float-button/index.js +2 -1
- package/lib/float-button/main.scss +74 -11
- package/lib/float-button/style.d.ts +1 -0
- package/lib/float-button/style.js +1 -0
- package/lib/float-button/types.d.ts +18 -2
- package/lib/float-button/view/backtop.js +2 -2
- package/lib/float-button/view/drawer.d.ts +7 -1
- package/lib/float-button/view/drawer.js +10 -2
- package/lib/float-button/view/float-button.d.ts +1 -1
- package/lib/float-button/view/float-button.js +69 -26
- package/lib/float-button/view/inner-drawer.d.ts +18 -2
- package/lib/float-button/view/inner-drawer.js +113 -3
- package/lib/index.d.ts +6 -0
- package/lib/index.js +14 -2
- package/lib/tab/index.d.ts +8 -0
- package/lib/tab/index.js +16 -0
- package/lib/tab/main.scss +10 -0
- package/lib/tab/style.d.ts +2 -0
- package/lib/tab/style.js +4 -0
- package/lib/tag/index.d.ts +13 -0
- package/lib/tag/index.js +23 -0
- package/lib/tag/main.scss +9 -0
- package/lib/tag/style.d.ts +2 -0
- package/lib/tag/style.js +4 -0
- package/lib/text/index.d.ts +3 -0
- package/lib/text/index.js +304 -0
- package/lib/text/main.scss +19 -0
- package/lib/text/style.d.ts +1 -0
- package/lib/text/style.js +3 -0
- package/lib/text/types.d.ts +16 -0
- package/lib/text/types.js +2 -0
- package/lib/utils/consts.d.ts +1 -0
- package/lib/utils/consts.js +4 -0
- package/lib/utils/hooks/useControlable.d.ts +1 -1
- package/lib/utils/hooks/useControlable.js +4 -3
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +1 -0
- package/package.json +81 -1
- package/es/button/view/button.d.ts +0 -23
- package/es/button/view/button.js +0 -26
- package/lib/button/view/button.d.ts +0 -23
- package/lib/button/view/button.js +0 -29
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const float_button_1 = tslib_1.__importDefault(require("./view/float-button"));
|
|
5
5
|
const backtop_1 = tslib_1.__importDefault(require("./view/backtop"));
|
|
6
|
+
const inner_drawer_1 = tslib_1.__importDefault(require("./view/inner-drawer"));
|
|
6
7
|
const index_1 = require("../utils/index");
|
|
7
|
-
const FloatButtonWithSub = (0, index_1.assignSubComponent)(float_button_1.default, { Backtop: backtop_1.default });
|
|
8
|
+
const FloatButtonWithSub = (0, index_1.assignSubComponent)(float_button_1.default, { Backtop: backtop_1.default, InnerDrawer: inner_drawer_1.default });
|
|
8
9
|
exports.default = FloatButtonWithSub;
|
|
@@ -1,16 +1,79 @@
|
|
|
1
|
-
@import '
|
|
1
|
+
@import '../core/variables.scss';
|
|
2
2
|
|
|
3
|
-
.#{$
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
.#{$prefix}float-button {
|
|
4
|
+
position: fixed;
|
|
5
|
+
z-index: 1001;
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
&-backtop {
|
|
8
|
+
transition:
|
|
9
|
+
opacity 0.2s,
|
|
10
|
+
transform 0.2s;
|
|
11
|
+
cursor: pointer;
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
&--hidden {
|
|
14
|
+
opacity: 0;
|
|
15
|
+
transform: scale(0);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
&-inner-drawer {
|
|
20
|
+
flex: 1;
|
|
21
|
+
display: flex;
|
|
22
|
+
overflow: hidden;
|
|
23
|
+
display: flex;
|
|
24
|
+
box-shadow: $shadow-2;
|
|
25
|
+
border-radius: $size-base * 2;
|
|
26
|
+
|
|
27
|
+
&-outer {
|
|
28
|
+
display: flex;
|
|
29
|
+
}
|
|
30
|
+
&-inner-start {
|
|
31
|
+
flex: 1;
|
|
32
|
+
}
|
|
33
|
+
&-inner-end {
|
|
34
|
+
flex: none;
|
|
35
|
+
transition:
|
|
36
|
+
width 0.3s,
|
|
37
|
+
opacity 0.3s;
|
|
38
|
+
display: flex;
|
|
39
|
+
}
|
|
40
|
+
&-inner {
|
|
41
|
+
flex: 1;
|
|
42
|
+
display: flex;
|
|
43
|
+
flex-direction: column;
|
|
44
|
+
}
|
|
45
|
+
&-header {
|
|
46
|
+
flex: none;
|
|
47
|
+
display: flex;
|
|
48
|
+
justify-content: end;
|
|
49
|
+
padding: $size-base * 2 $size-base * 3;
|
|
50
|
+
&-title {
|
|
51
|
+
flex: 1;
|
|
52
|
+
font-size: $font-size-subhead;
|
|
53
|
+
line-height: 1.5;
|
|
54
|
+
}
|
|
55
|
+
&-close {
|
|
56
|
+
flex: none;
|
|
57
|
+
color: $color-text1-2;
|
|
58
|
+
cursor: pointer;
|
|
59
|
+
transition: color 0.15s;
|
|
60
|
+
outline: 0;
|
|
61
|
+
border: 0;
|
|
62
|
+
padding: 0;
|
|
63
|
+
align-self: flex-start;
|
|
64
|
+
background-color: transparent;
|
|
65
|
+
|
|
66
|
+
&:hover {
|
|
67
|
+
color: $color-brand1-6;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
&-body {
|
|
72
|
+
flex: 1;
|
|
73
|
+
padding: 0 $size-base * 3 $size-base * 2;
|
|
74
|
+
}
|
|
75
|
+
&-footer {
|
|
76
|
+
flex: none;
|
|
77
|
+
}
|
|
14
78
|
}
|
|
15
|
-
}
|
|
16
79
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
2
|
import { type CommonProps } from '@alifd/next';
|
|
3
3
|
import { type BalloonProps } from '@alifd/next/lib/balloon';
|
|
4
4
|
export type { BalloonProps };
|
|
@@ -100,6 +100,8 @@ export interface FloatButtonRef {
|
|
|
100
100
|
*/
|
|
101
101
|
updateNestleEdge(animation?: boolean): void;
|
|
102
102
|
}
|
|
103
|
+
export type TriggerType = 'hover' | 'click';
|
|
104
|
+
export type RequiredParts<O, K extends keyof O> = Omit<O, K> & Required<Pick<O, K>>;
|
|
103
105
|
/**
|
|
104
106
|
* @api FloatButton
|
|
105
107
|
* @order 1
|
|
@@ -116,6 +118,11 @@ export interface FloatButtonProps extends CommonProps {
|
|
|
116
118
|
* - `inner-drawer`: 文档内部抽屉
|
|
117
119
|
*/
|
|
118
120
|
type?: 'balloon' | 'drawer' | 'inner-drawer';
|
|
121
|
+
drawerProps?: {
|
|
122
|
+
title?: ReactNode;
|
|
123
|
+
width?: number | string;
|
|
124
|
+
target: string | (() => HTMLElement);
|
|
125
|
+
};
|
|
119
126
|
/**
|
|
120
127
|
* 弹层位置,适用 `type`: 'balloon'
|
|
121
128
|
*/
|
|
@@ -196,7 +203,7 @@ export interface FloatButtonProps extends CommonProps {
|
|
|
196
203
|
* 触发方式
|
|
197
204
|
* @defaultValue 'click'
|
|
198
205
|
*/
|
|
199
|
-
triggerType?:
|
|
206
|
+
triggerType?: TriggerType | TriggerType[];
|
|
200
207
|
/**
|
|
201
208
|
* 展示关闭按钮
|
|
202
209
|
* @defaultValue false
|
|
@@ -210,6 +217,7 @@ export interface FloatButtonProps extends CommonProps {
|
|
|
210
217
|
* 弹层内容
|
|
211
218
|
*/
|
|
212
219
|
children?: React.ReactNode;
|
|
220
|
+
_renderView?: (prefix: string, props: RequiredParts<FloatButtonProps, 'visible' | 'onVisibleChange'>) => ReactNode;
|
|
213
221
|
}
|
|
214
222
|
/**
|
|
215
223
|
* @api
|
|
@@ -223,3 +231,11 @@ export interface DragableOption {
|
|
|
223
231
|
onDraging?: (dom: HTMLElement, event: MouseEvent) => void | false;
|
|
224
232
|
onDragend?: (dom: HTMLElement) => void;
|
|
225
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* @api FloatButton.InnerDrawer
|
|
236
|
+
*/
|
|
237
|
+
export interface FloatButtonInnerDrawerProps extends FloatButtonProps {
|
|
238
|
+
width?: string | number;
|
|
239
|
+
target: string | (() => HTMLElement);
|
|
240
|
+
title?: ReactNode;
|
|
241
|
+
}
|
|
@@ -14,9 +14,9 @@ function getScroller(scroller) {
|
|
|
14
14
|
}
|
|
15
15
|
return scroller;
|
|
16
16
|
}
|
|
17
|
-
const Backtop = (0, react_1.forwardRef)(({
|
|
17
|
+
const Backtop = (0, react_1.forwardRef)(({ autoHide = true, scroller, offset = 10, smooth = true, children }, ref) => {
|
|
18
18
|
const [visible, setVisible] = (0, react_1.useState)(true);
|
|
19
|
-
const cls = `${
|
|
19
|
+
const cls = `${utils_1.PREFIX_DEFAULT}float-button-backtop`;
|
|
20
20
|
const visibleRef = (0, react_1.useRef)(visible);
|
|
21
21
|
visibleRef.current = visible;
|
|
22
22
|
const handleBackToTop = () => {
|
|
@@ -1,2 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
2
|
+
import type { DrawerProps as NextDrawerProps } from '@alifd/next/types/drawer';
|
|
3
|
+
import type { TriggerType } from '../types';
|
|
4
|
+
export interface DrawerProps extends Omit<NextDrawerProps, 'triggerType' | 'container' | 'onVisibleChange'> {
|
|
5
|
+
onVisibleChange?: (visible: boolean, reason: string) => void;
|
|
6
|
+
triggerType?: TriggerType | TriggerType[];
|
|
7
|
+
}
|
|
8
|
+
export declare function Drawer({ prefix, target, children, trigger, triggerType, visible, onVisibleChange, ...rests }: DrawerProps): React.JSX.Element;
|
|
@@ -3,7 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Drawer = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
const next_1 = require("@alifd/next");
|
|
7
|
+
const useTriggerType_1 = require("../hooks/useTriggerType");
|
|
8
|
+
function Drawer(_a) {
|
|
9
|
+
var { prefix, target, children, trigger, triggerType, visible, onVisibleChange } = _a, rests = tslib_1.__rest(_a, ["prefix", "target", "children", "trigger", "triggerType", "visible", "onVisibleChange"]);
|
|
10
|
+
const handlers = (0, useTriggerType_1.useTriggerType)({ visible, onVisibleChange, triggerType });
|
|
11
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
12
|
+
react_1.default.createElement("div", Object.assign({}, handlers), trigger),
|
|
13
|
+
react_1.default.createElement(next_1.Drawer, Object.assign({}, rests, { visible: visible, onClose: reason => {
|
|
14
|
+
onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(false, reason);
|
|
15
|
+
}, v2: true }), children)));
|
|
8
16
|
}
|
|
9
17
|
exports.Drawer = Drawer;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { FloatButtonProps, FloatButtonRef } from '../types';
|
|
3
|
-
declare const _default: import("@alifd/next/types/config-provider/types").ConfiguredComponentClass<Pick<FloatButtonProps & React.RefAttributes<FloatButtonRef>, keyof FloatButtonProps
|
|
3
|
+
declare const _default: import("@alifd/next/types/config-provider/types").ConfiguredComponentClass<Pick<FloatButtonProps & React.RefAttributes<FloatButtonRef>, "key" | keyof FloatButtonProps> & import("@alifd/next/types/config-provider/types").ComponentCommonProps, FloatButtonRef, {}>;
|
|
4
4
|
export default _default;
|
|
@@ -9,14 +9,34 @@ const useAutoHide_1 = require("../hooks/useAutoHide");
|
|
|
9
9
|
const useAutoAlign_1 = require("../hooks/useAutoAlign");
|
|
10
10
|
const useNestleEdge_1 = require("../hooks/useNestleEdge");
|
|
11
11
|
const useDragable_1 = require("../hooks/useDragable");
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
// import { InnerDrawer } from './inner-drawer';
|
|
13
|
+
/**
|
|
14
|
+
* @component 悬浮球
|
|
15
|
+
* @en FloatButton
|
|
16
|
+
* @type 通用 - General
|
|
17
|
+
* @remarks 悬浮球组件用于承载机器人入口。- Apply for entry for web bot.
|
|
18
|
+
* @when 机器人入口 - The entry of robot
|
|
19
|
+
* @others
|
|
20
|
+
* ## 无障碍键盘操作指南
|
|
21
|
+
* | 按键 | 说明 |
|
|
22
|
+
* | :---- | :---------- |
|
|
23
|
+
* | Enter | 触发 onClick 事件 |
|
|
24
|
+
* | SPACE | 触发 onClick 事件 |
|
|
25
|
+
* @othersEn
|
|
26
|
+
* ## ARIA and KeyBoard
|
|
27
|
+
* | KeyBoard | Description |
|
|
28
|
+
* | :---------- | :------------------------------ |
|
|
29
|
+
* | Enter | Trigger the onClick event |
|
|
30
|
+
* | SPACE | Trigger the onClick event |
|
|
31
|
+
*/
|
|
32
|
+
const FloatButton = (0, react_1.forwardRef)((props, ref) => {
|
|
33
|
+
const { className, style, type = 'balloon', addonAfter, addonBefore, dragable, safeAreaMargin = [10, 10, 10, 10], autoNestleEdge = true, interactiveEdges = ['left', 'right'], autoHide, autoAlign, leftSizeOfHidden, defaultPosition, trigger, triggerType = 'click', showClose = true, align, balloonProps, drawerProps, children, _renderView } = props, others = tslib_1.__rest(props, ["className", "style", "type", "addonAfter", "addonBefore", "dragable", "safeAreaMargin", "autoNestleEdge", "interactiveEdges", "autoHide", "autoAlign", "leftSizeOfHidden", "defaultPosition", "trigger", "triggerType", "showClose", "align", "balloonProps", "drawerProps", "children", "_renderView"]);
|
|
14
34
|
const elRef = (0, react_1.useRef)(null);
|
|
15
35
|
const triggerRef = (0, react_1.useRef)(null);
|
|
16
36
|
const [el, setEl] = (0, react_1.useState)(null);
|
|
17
37
|
const [triggerEl, setTriggerEl] = (0, react_1.useState)(null);
|
|
18
38
|
const draggedRef = (0, react_1.useRef)(false);
|
|
19
|
-
const cls = `${
|
|
39
|
+
const cls = `${index_1.PREFIX_DEFAULT}float-button`;
|
|
20
40
|
const [visible, onVisibleChange] = (0, index_1.useControlable)(others, {
|
|
21
41
|
valueName: 'visible',
|
|
22
42
|
changeName: 'onVisibleChange',
|
|
@@ -25,10 +45,13 @@ const FloatButton = (0, react_1.forwardRef)((_a, ref) => {
|
|
|
25
45
|
setEl(elRef.current);
|
|
26
46
|
setTriggerEl(triggerRef.current);
|
|
27
47
|
}, []);
|
|
28
|
-
const { align: currentAlign, update:
|
|
48
|
+
const { align: currentAlign, update: _updateAlign } = (0, useAutoAlign_1.useAutoAlign)(el === null || el === void 0 ? void 0 : el.querySelector(`.${cls}-popup`), triggerEl, {
|
|
29
49
|
enable: type === 'balloon' && autoAlign,
|
|
30
50
|
defaultAlign: align,
|
|
31
51
|
});
|
|
52
|
+
const updateAlign = () => {
|
|
53
|
+
_updateAlign(el === null || el === void 0 ? void 0 : el.querySelector(`.${cls}-popup`));
|
|
54
|
+
};
|
|
32
55
|
const { isHideRef, setHide, handleMove, saveRestorePosition } = (0, useAutoHide_1.useAutoHide)(el, {
|
|
33
56
|
enable: !visible && autoHide,
|
|
34
57
|
interactiveEdges,
|
|
@@ -37,7 +60,6 @@ const FloatButton = (0, react_1.forwardRef)((_a, ref) => {
|
|
|
37
60
|
(0, react_1.useEffect)(() => {
|
|
38
61
|
if (visible) {
|
|
39
62
|
setHide(false);
|
|
40
|
-
updateAlign();
|
|
41
63
|
}
|
|
42
64
|
}, [visible]);
|
|
43
65
|
const { update: updateNestleEdge } = (0, useNestleEdge_1.useNestleEdge)(el, {
|
|
@@ -50,6 +72,9 @@ const FloatButton = (0, react_1.forwardRef)((_a, ref) => {
|
|
|
50
72
|
return false;
|
|
51
73
|
}
|
|
52
74
|
},
|
|
75
|
+
onUpdateEnd() {
|
|
76
|
+
updateAlign();
|
|
77
|
+
},
|
|
53
78
|
});
|
|
54
79
|
(0, react_1.useImperativeHandle)(ref, () => ({
|
|
55
80
|
setVisible(value) {
|
|
@@ -83,32 +108,50 @@ const FloatButton = (0, react_1.forwardRef)((_a, ref) => {
|
|
|
83
108
|
},
|
|
84
109
|
});
|
|
85
110
|
const classNames = (0, classnames_1.default)(cls, className, dragClassName);
|
|
111
|
+
const handleVisibleChange = (v, type) => {
|
|
112
|
+
if (draggedRef.current) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
onVisibleChange(v, type);
|
|
116
|
+
};
|
|
86
117
|
const renderBalloon = () => {
|
|
87
|
-
return (react_1.default.createElement(next_1.Balloon, Object.assign({ visible: visible, onVisibleChange:
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
118
|
+
return (react_1.default.createElement(next_1.Balloon, Object.assign({ visible: visible, onVisibleChange: handleVisibleChange, popupProps: {
|
|
119
|
+
afterOpen() {
|
|
120
|
+
var _a, _b;
|
|
121
|
+
updateAlign();
|
|
122
|
+
(_b = (_a = balloonProps === null || balloonProps === void 0 ? void 0 : balloonProps.popupProps) === null || _a === void 0 ? void 0 : _a.afterClose) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
123
|
+
},
|
|
92
124
|
}, popupClassName: `${cls}-popup`, trigger: trigger, popupContainer: () => el, triggerType: triggerType, align: currentAlign, v2: true, closable: showClose, autoAdjust: false }, balloonProps), children));
|
|
93
125
|
};
|
|
94
|
-
const renderDrawer = () => {
|
|
95
|
-
|
|
96
|
-
};
|
|
97
|
-
const renderInnerDrawer = () => {
|
|
98
|
-
|
|
99
|
-
|
|
126
|
+
// const renderDrawer = () => {
|
|
127
|
+
// return <div></div>;
|
|
128
|
+
// };
|
|
129
|
+
// const renderInnerDrawer = () => {
|
|
130
|
+
// return (
|
|
131
|
+
// <InnerDrawer
|
|
132
|
+
// {...drawerProps}
|
|
133
|
+
// prefix={`${cls}-`}
|
|
134
|
+
// target=".card-legal-affairs"
|
|
135
|
+
// trigger={trigger}
|
|
136
|
+
// triggerType={triggerType}
|
|
137
|
+
// visible={visible}
|
|
138
|
+
// closable={showClose}
|
|
139
|
+
// onVisibleChange={(...args) => {
|
|
140
|
+
// if (draggedRef.current) {
|
|
141
|
+
// return;
|
|
142
|
+
// }
|
|
143
|
+
// onVisibleChange?.(...args);
|
|
144
|
+
// }}
|
|
145
|
+
// >
|
|
146
|
+
// {children}
|
|
147
|
+
// </InnerDrawer>
|
|
148
|
+
// );
|
|
149
|
+
// };
|
|
100
150
|
const renderView = () => {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
return renderDrawer();
|
|
104
|
-
}
|
|
105
|
-
case 'inner-drawer': {
|
|
106
|
-
return renderInnerDrawer();
|
|
107
|
-
}
|
|
108
|
-
default: {
|
|
109
|
-
return renderBalloon();
|
|
110
|
-
}
|
|
151
|
+
if (typeof _renderView === 'function') {
|
|
152
|
+
return _renderView(`${cls}-`, Object.assign(Object.assign({}, props), { visible, onVisibleChange: handleVisibleChange }));
|
|
111
153
|
}
|
|
154
|
+
return renderBalloon();
|
|
112
155
|
};
|
|
113
156
|
return (react_1.default.createElement("div", { className: classNames, style: Object.assign(Object.assign({}, style), dragStyle), ref: elRef },
|
|
114
157
|
!!addonBefore && (react_1.default.createElement("div", { className: (0, classnames_1.default)(`${cls}-addon`, `${cls}-addon--before`) }, addonBefore)),
|
|
@@ -1,2 +1,18 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import type { FloatButtonInnerDrawerProps, FloatButtonProps } from '../types';
|
|
3
|
+
export interface InnerDrawerProps {
|
|
4
|
+
className?: string;
|
|
5
|
+
title?: ReactNode;
|
|
6
|
+
prefix: string;
|
|
7
|
+
target: string | (() => HTMLElement);
|
|
8
|
+
visible?: boolean;
|
|
9
|
+
onVisibleChange?: (visible: boolean, reason: string) => void;
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
trigger: ReactNode;
|
|
12
|
+
closable?: boolean;
|
|
13
|
+
triggerType: FloatButtonProps['triggerType'];
|
|
14
|
+
width?: string | number;
|
|
15
|
+
}
|
|
16
|
+
export declare function InnerDrawer({ className, prefix, target, children, trigger, triggerType, visible, onVisibleChange, closable, title, width, }: InnerDrawerProps): React.JSX.Element;
|
|
17
|
+
declare const _default: import("@alifd/next/types/config-provider/types").ConfiguredComponentClass<FloatButtonInnerDrawerProps & import("@alifd/next/types/config-provider/types").ComponentCommonProps, undefined, {}>;
|
|
18
|
+
export default _default;
|
|
@@ -2,8 +2,118 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.InnerDrawer = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const react_1 = tslib_1.
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const react_dom_1 = tslib_1.__importDefault(require("react-dom"));
|
|
7
|
+
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
8
|
+
const next_1 = require("@alifd/next");
|
|
9
|
+
const useTriggerType_1 = require("../hooks/useTriggerType");
|
|
10
|
+
const float_button_1 = tslib_1.__importDefault(require("./float-button"));
|
|
11
|
+
function getTarget(target) {
|
|
12
|
+
if (typeof target === 'string') {
|
|
13
|
+
return document.querySelector(target);
|
|
14
|
+
}
|
|
15
|
+
return target();
|
|
16
|
+
}
|
|
17
|
+
function getMountTarget(prefix, target) {
|
|
18
|
+
const dom = getTarget(target);
|
|
19
|
+
let parent = dom === null || dom === void 0 ? void 0 : dom.parentElement;
|
|
20
|
+
if (!dom || !parent) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
if (!parent.dataset.chat) {
|
|
24
|
+
const oldParent = parent;
|
|
25
|
+
parent = document.createElement('div');
|
|
26
|
+
parent.classList.add(`${prefix}outer`);
|
|
27
|
+
parent.dataset.chat = 'drawer';
|
|
28
|
+
oldParent.appendChild(parent);
|
|
29
|
+
parent.appendChild(dom);
|
|
30
|
+
}
|
|
31
|
+
let mountTarget = parent.childNodes[1];
|
|
32
|
+
if (!mountTarget) {
|
|
33
|
+
mountTarget = document.createElement('div');
|
|
34
|
+
mountTarget.dataset.chat = 'drawer-mounted';
|
|
35
|
+
mountTarget.classList.add(`${prefix}inner-end`);
|
|
36
|
+
mountTarget.style.width = '0px';
|
|
37
|
+
mountTarget.style.opacity = '0';
|
|
38
|
+
parent.appendChild(mountTarget);
|
|
39
|
+
}
|
|
40
|
+
dom.classList.add(`${prefix}inner-start`);
|
|
41
|
+
return mountTarget;
|
|
42
|
+
}
|
|
43
|
+
function InnerDrawer({ className, prefix, target, children, trigger, triggerType, visible, onVisibleChange, closable = true, title, width = 400, }) {
|
|
44
|
+
const [mount, setMount] = (0, react_1.useState)(!!visible);
|
|
45
|
+
(0, react_1.useEffect)(() => {
|
|
46
|
+
if (visible) {
|
|
47
|
+
setMount(visible);
|
|
48
|
+
}
|
|
49
|
+
}, [visible]);
|
|
50
|
+
const cls = `${prefix}inner-drawer`;
|
|
51
|
+
const handleVisibleChange = (nextVisible, type) => {
|
|
52
|
+
onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(nextVisible, type);
|
|
53
|
+
};
|
|
54
|
+
const handleVisibleChangeRef = (0, react_1.useRef)(handleVisibleChange);
|
|
55
|
+
handleVisibleChangeRef.current = handleVisibleChange;
|
|
56
|
+
const handlers = (0, useTriggerType_1.useTriggerType)({ visible, onVisibleChange: handleVisibleChange, triggerType });
|
|
57
|
+
const mountTarget = mount ? getMountTarget(`${cls}-`, target) : undefined;
|
|
58
|
+
const domRef = (0, react_1.useRef)(null);
|
|
59
|
+
const triggerRef = (0, react_1.useRef)(null);
|
|
60
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
61
|
+
if (mountTarget) {
|
|
62
|
+
const timer = setTimeout(() => {
|
|
63
|
+
mountTarget.style.width = visible
|
|
64
|
+
? `${typeof width === 'number' ? `${width}px` : width}`
|
|
65
|
+
: '0px';
|
|
66
|
+
mountTarget.style.opacity = visible ? '1' : '0';
|
|
67
|
+
}, 16);
|
|
68
|
+
return () => {
|
|
69
|
+
clearTimeout(timer);
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
(0, react_1.useEffect)(() => {
|
|
74
|
+
if (!mountTarget || !className) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
mountTarget.classList.add(className);
|
|
78
|
+
return () => {
|
|
79
|
+
mountTarget.classList.remove(className);
|
|
80
|
+
};
|
|
81
|
+
}, [mountTarget, className]);
|
|
82
|
+
(0, react_1.useEffect)(() => {
|
|
83
|
+
const onClick = (e) => {
|
|
84
|
+
const dom = domRef.current;
|
|
85
|
+
const trigger = triggerRef.current;
|
|
86
|
+
const target = e.target;
|
|
87
|
+
if (!dom || !trigger || !target) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (!dom.contains(target) && !trigger.contains(target)) {
|
|
91
|
+
handleVisibleChangeRef.current(false, 'docClick');
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
window.addEventListener('click', onClick);
|
|
95
|
+
return () => {
|
|
96
|
+
window.removeEventListener('click', onClick);
|
|
97
|
+
};
|
|
98
|
+
}, []);
|
|
99
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
100
|
+
react_1.default.createElement("div", Object.assign({}, handlers, { ref: triggerRef }), trigger),
|
|
101
|
+
!!mountTarget &&
|
|
102
|
+
react_dom_1.default.createPortal(react_1.default.createElement("div", { className: (0, classnames_1.default)(cls, { [`${cls}--visible`]: visible }), ref: domRef, style: { width } },
|
|
103
|
+
react_1.default.createElement("div", { className: `${cls}-inner` },
|
|
104
|
+
react_1.default.createElement("div", { className: `${cls}-header` },
|
|
105
|
+
!!title && react_1.default.createElement("div", { className: `${cls}-header-title` }, title),
|
|
106
|
+
!!closable && (react_1.default.createElement("button", { className: `${cls}-header-close`, onClick: () => handleVisibleChange(false, 'close') },
|
|
107
|
+
react_1.default.createElement(next_1.Icon, { className: `${cls}-header-close-icon`, type: "close", size: 12 })))),
|
|
108
|
+
react_1.default.createElement("div", { className: `${cls}-body` }, children))), mountTarget)));
|
|
8
109
|
}
|
|
9
110
|
exports.InnerDrawer = InnerDrawer;
|
|
111
|
+
function FloatButtonByInnerDrawer(props) {
|
|
112
|
+
const { width, title, target } = props, rests = tslib_1.__rest(props, ["width", "title", "target"]);
|
|
113
|
+
return (react_1.default.createElement(float_button_1.default, Object.assign({}, rests, { _renderView: (prefix, { trigger, triggerType, visible, onVisibleChange, showClose, children }) => {
|
|
114
|
+
return (react_1.default.createElement(InnerDrawer, { prefix: prefix, target: target, width: width, title: title, trigger: trigger, triggerType: triggerType, visible: visible, closable: showClose, onVisibleChange: (...args) => {
|
|
115
|
+
onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(...args);
|
|
116
|
+
} }, children));
|
|
117
|
+
} })));
|
|
118
|
+
}
|
|
119
|
+
exports.default = next_1.ConfigProvider.config(FloatButtonByInnerDrawer);
|
package/lib/index.d.ts
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
1
|
export { default as Button } from './button';
|
|
2
|
+
export { default as Card } from './card';
|
|
3
|
+
export { default as Feedback } from './feedback';
|
|
4
|
+
export { default as FloatButton } from './float-button';
|
|
5
|
+
export { default as Text } from './text';
|
|
6
|
+
export { default as Tag } from './tag';
|
|
7
|
+
export { default as Tab } from './tab';
|
|
2
8
|
export declare const version: string;
|
package/lib/index.js
CHANGED
|
@@ -3,7 +3,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.version = exports.Button = void 0;
|
|
6
|
+
exports.version = exports.Tab = exports.Tag = exports.Text = exports.FloatButton = exports.Feedback = exports.Card = exports.Button = void 0;
|
|
7
7
|
var button_1 = require("./button");
|
|
8
8
|
Object.defineProperty(exports, "Button", { enumerable: true, get: function () { return __importDefault(button_1).default; } });
|
|
9
|
-
|
|
9
|
+
var card_1 = require("./card");
|
|
10
|
+
Object.defineProperty(exports, "Card", { enumerable: true, get: function () { return __importDefault(card_1).default; } });
|
|
11
|
+
var feedback_1 = require("./feedback");
|
|
12
|
+
Object.defineProperty(exports, "Feedback", { enumerable: true, get: function () { return __importDefault(feedback_1).default; } });
|
|
13
|
+
var float_button_1 = require("./float-button");
|
|
14
|
+
Object.defineProperty(exports, "FloatButton", { enumerable: true, get: function () { return __importDefault(float_button_1).default; } });
|
|
15
|
+
var text_1 = require("./text");
|
|
16
|
+
Object.defineProperty(exports, "Text", { enumerable: true, get: function () { return __importDefault(text_1).default; } });
|
|
17
|
+
var tag_1 = require("./tag");
|
|
18
|
+
Object.defineProperty(exports, "Tag", { enumerable: true, get: function () { return __importDefault(tag_1).default; } });
|
|
19
|
+
var tab_1 = require("./tab");
|
|
20
|
+
Object.defineProperty(exports, "Tab", { enumerable: true, get: function () { return __importDefault(tab_1).default; } });
|
|
21
|
+
exports.version = '0.1.1';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Tab as NextTab } from '@alifd/next';
|
|
3
|
+
import type { TabProps } from '@alifd/next/types/tab';
|
|
4
|
+
export type { TabProps, ItemProps } from '@alifd/next/types/tab';
|
|
5
|
+
declare const _default: import("@alifd/next/types/config-provider/types").ConfiguredComponentClass<Pick<TabProps & React.RefAttributes<NextTab>, "key" | keyof TabProps> & import("@alifd/next/types/config-provider/types").ComponentCommonProps, NextTab, {}> & {
|
|
6
|
+
Item: typeof import("@alifd/next/types/tab").Item;
|
|
7
|
+
};
|
|
8
|
+
export default _default;
|
package/lib/tab/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
5
|
+
const next_1 = require("@alifd/next");
|
|
6
|
+
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
|
+
const Tab = (0, react_1.forwardRef)((_a, ref) => {
|
|
9
|
+
var { className, size = 'small' } = _a, props = tslib_1.__rest(_a, ["className", "size"]);
|
|
10
|
+
return (react_1.default.createElement(next_1.Tab, Object.assign({}, props, { className: (0, classnames_1.default)(`${utils_1.PREFIX_DEFAULT}tabs`, className), ref: ref, size: size })));
|
|
11
|
+
});
|
|
12
|
+
const TabWithSub = (0, utils_1.assignSubComponent)(Tab, {
|
|
13
|
+
Item: next_1.Tab.Item,
|
|
14
|
+
displayName: 'Tab',
|
|
15
|
+
});
|
|
16
|
+
exports.default = next_1.ConfigProvider.config(TabWithSub);
|
package/lib/tab/style.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @component 标签
|
|
3
|
+
* @en Tag
|
|
4
|
+
* @type 通用 - General
|
|
5
|
+
* @remarks 同 Next Tag - Same as Next.Tag
|
|
6
|
+
* @when Tag
|
|
7
|
+
*/
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import { Tag as NextTag } from '@alifd/next';
|
|
10
|
+
import type { TagProps } from '@alifd/next/types/tag';
|
|
11
|
+
export type { TagProps } from '@alifd/next/types/tag';
|
|
12
|
+
declare const _default: import("@alifd/next/types/config-provider/types").ConfiguredComponentClass<Pick<TagProps & React.RefAttributes<NextTag>, "key" | keyof TagProps> & import("@alifd/next/types/config-provider/types").ComponentCommonProps, NextTag, {}>;
|
|
13
|
+
export default _default;
|
package/lib/tag/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @component 标签
|
|
4
|
+
* @en Tag
|
|
5
|
+
* @type 通用 - General
|
|
6
|
+
* @remarks 同 Next Tag - Same as Next.Tag
|
|
7
|
+
* @when Tag
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const tslib_1 = require("tslib");
|
|
11
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
12
|
+
const next_1 = require("@alifd/next");
|
|
13
|
+
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
14
|
+
const utils_1 = require("../utils");
|
|
15
|
+
const Tag = (0, react_1.forwardRef)((_a, ref) => {
|
|
16
|
+
var { className, size = 'small', type = 'normal' } = _a, props = tslib_1.__rest(_a, ["className", "size", "type"]);
|
|
17
|
+
return (react_1.default.createElement(next_1.Tag, Object.assign({}, props, { ref: ref, className: (0, classnames_1.default)(`${utils_1.PREFIX_DEFAULT}tag`, className), size: size, type: type })));
|
|
18
|
+
});
|
|
19
|
+
// 暂时只开放 Tag 组件,其它子组件后续看需求
|
|
20
|
+
const TagWithSub = (0, utils_1.assignSubComponent)(Tag, {
|
|
21
|
+
displayName: 'Tag',
|
|
22
|
+
});
|
|
23
|
+
exports.default = next_1.ConfigProvider.config(TagWithSub);
|
package/lib/tag/style.js
ADDED