mdui 2.0.2 → 2.0.4
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/components/avatar/index.d.ts +17 -15
- package/components/avatar/index.js +7 -6
- package/components/badge/index.d.ts +11 -8
- package/components/badge/index.js +9 -7
- package/components/bottom-app-bar/index.d.ts +11 -4
- package/components/bottom-app-bar/index.js +8 -9
- package/components/button/button-base-style.js +1 -1
- package/components/button/button-base.d.ts +46 -47
- package/components/button/button-base.js +27 -25
- package/components/button/index.d.ts +19 -14
- package/components/button/index.js +12 -12
- package/components/button-icon/index.d.ts +15 -9
- package/components/button-icon/index.js +8 -9
- package/components/card/index.d.ts +15 -11
- package/components/card/index.js +10 -9
- package/components/checkbox/index.d.ts +30 -23
- package/components/checkbox/index.js +25 -25
- package/components/chip/index.d.ts +27 -20
- package/components/chip/index.js +19 -20
- package/components/circular-progress/index.d.ts +6 -4
- package/components/circular-progress/index.js +4 -3
- package/components/collapse/collapse-item.d.ts +17 -6
- package/components/collapse/collapse-item.js +7 -7
- package/components/collapse/collapse.d.ts +16 -11
- package/components/collapse/collapse.js +10 -10
- package/components/dialog/index.d.ts +22 -15
- package/components/dialog/index.js +23 -27
- package/components/divider/index.d.ts +7 -5
- package/components/divider/index.js +6 -5
- package/components/dropdown/index.d.ts +44 -37
- package/components/dropdown/index.js +50 -48
- package/components/fab/index.d.ts +12 -7
- package/components/fab/index.js +6 -6
- package/components/icon/index.d.ts +4 -2
- package/components/icon/index.js +3 -2
- package/components/layout/layout-item-base.d.ts +3 -2
- package/components/layout/layout-item-base.js +2 -2
- package/components/layout/layout-item.d.ts +11 -10
- package/components/layout/layout-item.js +6 -6
- package/components/layout/layout-main.d.ts +6 -4
- package/components/layout/layout-main.js +5 -4
- package/components/layout/layout.d.ts +6 -4
- package/components/layout/layout.js +5 -4
- package/components/linear-progress/index.d.ts +8 -6
- package/components/linear-progress/index.js +6 -5
- package/components/list/list-item-style.js +1 -1
- package/components/list/list-item.d.ts +24 -20
- package/components/list/list-item.js +10 -9
- package/components/list/list-subheader.d.ts +6 -4
- package/components/list/list-subheader.js +5 -4
- package/components/list/list.d.ts +5 -3
- package/components/list/list.js +4 -3
- package/components/menu/menu-item.d.ts +15 -7
- package/components/menu/menu-item.js +11 -15
- package/components/menu/menu.d.ts +20 -20
- package/components/menu/menu.js +13 -13
- package/components/navigation-bar/navigation-bar-item.d.ts +12 -8
- package/components/navigation-bar/navigation-bar-item.js +7 -6
- package/components/navigation-bar/navigation-bar.d.ts +17 -9
- package/components/navigation-bar/navigation-bar.js +15 -13
- package/components/navigation-drawer/index.d.ts +27 -21
- package/components/navigation-drawer/index.js +51 -38
- package/components/navigation-drawer/style.js +1 -1
- package/components/navigation-rail/navigation-rail-item.d.ts +13 -9
- package/components/navigation-rail/navigation-rail-item.js +7 -6
- package/components/navigation-rail/navigation-rail.d.ts +14 -12
- package/components/navigation-rail/navigation-rail.js +13 -12
- package/components/radio/radio-group.d.ts +20 -15
- package/components/radio/radio-group.js +21 -24
- package/components/radio/radio.d.ts +11 -6
- package/components/radio/radio.js +7 -7
- package/components/range-slider/index.d.ts +13 -8
- package/components/range-slider/index.js +10 -7
- package/components/ripple/index.d.ts +4 -2
- package/components/ripple/index.js +3 -2
- package/components/ripple/ripple-mixin.d.ts +1 -1
- package/components/ripple/ripple-mixin.js +0 -1
- package/components/segmented-button/segmented-button-group-style.js +1 -1
- package/components/segmented-button/segmented-button-group.d.ts +23 -22
- package/components/segmented-button/segmented-button-group.js +20 -23
- package/components/segmented-button/segmented-button.d.ts +9 -4
- package/components/segmented-button/segmented-button.js +3 -3
- package/components/select/index.d.ts +42 -35
- package/components/select/index.js +24 -25
- package/components/slider/index.d.ts +9 -2
- package/components/slider/index.js +5 -10
- package/components/slider/slider-base.d.ts +22 -18
- package/components/slider/slider-base.js +40 -21
- package/components/snackbar/index.d.ts +30 -23
- package/components/snackbar/index.js +25 -25
- package/components/switch/index.d.ts +24 -17
- package/components/switch/index.js +18 -18
- package/components/tabs/tab-panel.d.ts +7 -5
- package/components/tabs/tab-panel.js +5 -4
- package/components/tabs/tab.d.ts +13 -9
- package/components/tabs/tab.js +8 -7
- package/components/tabs/tabs.d.ts +24 -21
- package/components/tabs/tabs.js +24 -21
- package/components/text-field/index.d.ts +62 -54
- package/components/text-field/index.js +37 -37
- package/components/tooltip/index.d.ts +40 -33
- package/components/tooltip/index.js +45 -43
- package/components/top-app-bar/top-app-bar-title.d.ts +8 -6
- package/components/top-app-bar/top-app-bar-title.js +7 -6
- package/components/top-app-bar/top-app-bar.d.ts +12 -6
- package/components/top-app-bar/top-app-bar.js +9 -10
- package/css-data.en.json +2826 -0
- package/css-data.zh-cn.json +374 -367
- package/custom-elements.json +3844 -3824
- package/html-data.en.json +6551 -0
- package/html-data.zh-cn.json +1621 -1636
- package/jsx.en.d.ts +3303 -0
- package/jsx.zh-cn.d.ts +3351 -0
- package/mdui.esm.js +9 -9
- package/mdui.global.js +9 -9
- package/package.json +7 -5
- package/web-types.en.json +11718 -0
- package/web-types.zh-cn.json +3613 -3623
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
2
1
|
import '@mdui/jq/methods/css.js';
|
|
3
2
|
import '@mdui/jq/methods/filter.js';
|
|
4
3
|
import '@mdui/jq/methods/height.js';
|
|
5
4
|
import '@mdui/jq/methods/prop.js';
|
|
6
5
|
import '@mdui/jq/methods/width.js';
|
|
6
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
7
7
|
import type { CSSResultGroup, TemplateResult, PropertyValues } from 'lit';
|
|
8
8
|
/**
|
|
9
9
|
* @summary 工具提示组件
|
|
@@ -19,57 +19,57 @@ import type { CSSResultGroup, TemplateResult, PropertyValues } from 'lit';
|
|
|
19
19
|
* @event close - tooltip 开始隐藏时,事件被触发。可以通过调用 `event.preventDefault()` 阻止 tooltip 关闭
|
|
20
20
|
* @event closed - tooltip 隐藏动画完成时,事件被触发
|
|
21
21
|
*
|
|
22
|
-
* @slot - tooltip
|
|
23
|
-
* @slot headline - tooltip
|
|
22
|
+
* @slot - tooltip 触发的目标元素,只有 `default` slot 中的第一个元素会作为目标元素
|
|
23
|
+
* @slot headline - tooltip 的标题,只有当 `variant="rich"` 时,此 slot 才有效
|
|
24
24
|
* @slot content - tooltip 的内容,可以包含 HTML。若只包含纯文本,可以使用 `content` 属性代替
|
|
25
|
-
* @slot action - tooltip
|
|
25
|
+
* @slot action - tooltip 底部的按钮,只有当 `variant="rich"` 时,此 slot 才有效
|
|
26
26
|
*
|
|
27
|
-
* @csspart popup -
|
|
27
|
+
* @csspart popup - tooltip 的容器
|
|
28
28
|
* @csspart headline - 标题
|
|
29
29
|
* @csspart content - 正文
|
|
30
30
|
* @csspart action - 操作按钮
|
|
31
31
|
*
|
|
32
|
-
* @cssprop --shape-corner-plain - variant="plain"
|
|
33
|
-
* @cssprop --shape-corner-rich - variant="rich"
|
|
34
|
-
* @cssprop --z-index - 组件的 CSS
|
|
32
|
+
* @cssprop --shape-corner-plain - 当 variant="plain" 时,组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
33
|
+
* @cssprop --shape-corner-rich - 当 variant="rich" 时,组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
34
|
+
* @cssprop --z-index - 组件的 CSS `z-index` 值
|
|
35
35
|
*/
|
|
36
|
-
export declare class Tooltip extends
|
|
36
|
+
export declare class Tooltip extends MduiElement<TooltipEventMap> {
|
|
37
37
|
static styles: CSSResultGroup;
|
|
38
38
|
/**
|
|
39
|
-
* tooltip 的形状。默认为 `plain
|
|
39
|
+
* tooltip 的形状。默认为 `plain`。可选值包括:
|
|
40
40
|
*
|
|
41
|
-
* * `plain
|
|
42
|
-
* * `rich
|
|
41
|
+
* * `plain`:纯文本,适用于简单的单行文本
|
|
42
|
+
* * `rich`:富文本,可以包含标题、正文和操作按钮
|
|
43
43
|
*/
|
|
44
|
-
variant:
|
|
44
|
+
variant: /*纯文本,适用于简单的单行文本*/ 'plain' | /*富文本,可以包含标题、正文和操作按钮*/ 'rich';
|
|
45
45
|
/**
|
|
46
|
-
* tooltip 的位置。默认为 `auto
|
|
46
|
+
* tooltip 的位置。默认为 `auto`。可选值包括:
|
|
47
47
|
*
|
|
48
48
|
* * `auto`:自动判断位置。`variant="plan"` 时,优先使用 `top`;`variant="rich"` 时,优先使用 `bottom-right`
|
|
49
49
|
* * `top-left`:位于左上方
|
|
50
|
-
* * `top-start
|
|
51
|
-
* * `top
|
|
52
|
-
* * `top-end
|
|
50
|
+
* * `top-start`:位于上方,左对齐
|
|
51
|
+
* * `top`:位于上方,居中对齐
|
|
52
|
+
* * `top-end`:位于上方,右对齐
|
|
53
53
|
* * `top-right`:位于右上方
|
|
54
54
|
* * `bottom-left`:位于左下方
|
|
55
|
-
* * `bottom-start
|
|
56
|
-
* * `bottom
|
|
57
|
-
* * `bottom-end
|
|
55
|
+
* * `bottom-start`:位于下方,左对齐
|
|
56
|
+
* * `bottom`:位于下方,居中对齐
|
|
57
|
+
* * `bottom-end`:位于下方,右对齐
|
|
58
58
|
* * `bottom-right`:位于右下方
|
|
59
|
-
* * `left-start
|
|
60
|
-
* * `left
|
|
61
|
-
* * `left-end
|
|
62
|
-
* * `right-start
|
|
63
|
-
* * `right
|
|
64
|
-
* * `right-end
|
|
59
|
+
* * `left-start`:位于左侧,顶部对齐
|
|
60
|
+
* * `left`:位于左侧,居中对齐
|
|
61
|
+
* * `left-end`:位于左侧,底部对齐
|
|
62
|
+
* * `right-start`:位于右侧,顶部对齐
|
|
63
|
+
* * `right`:位于右侧,居中对齐
|
|
64
|
+
* * `right-end`:位于右侧,底部对齐
|
|
65
65
|
*/
|
|
66
|
-
placement: /*自动判断位置*/ 'auto' | /*位于左上方*/ 'top-left' |
|
|
66
|
+
placement: /*自动判断位置*/ 'auto' | /*位于左上方*/ 'top-left' | /*位于上方,左对齐*/ 'top-start' | /*位于上方,居中对齐*/ 'top' | /*位于上方,右对齐*/ 'top-end' | /*位于右上方*/ 'top-right' | /*位于左下方*/ 'bottom-left' | /*位于下方,左对齐*/ 'bottom-start' | /*位于下方,居中对齐*/ 'bottom' | /*位于下方,右对齐*/ 'bottom-end' | /*位于右下方*/ 'bottom-right' | /*位于左侧,顶部对齐*/ 'left-start' | /*位于左侧,居中对齐*/ 'left' | /*位于左侧,底部对齐*/ 'left-end' | /*位于右侧,顶部对齐*/ 'right-start' | /*位于右侧,居中对齐*/ 'right' | /*位于右侧,底部对齐*/ 'right-end';
|
|
67
67
|
/**
|
|
68
|
-
*
|
|
68
|
+
* 鼠标悬浮触发显示的延时,单位为毫秒
|
|
69
69
|
*/
|
|
70
70
|
openDelay: number;
|
|
71
71
|
/**
|
|
72
|
-
*
|
|
72
|
+
* 鼠标悬浮触发隐藏的延时,单位为毫秒
|
|
73
73
|
*/
|
|
74
74
|
closeDelay: number;
|
|
75
75
|
/**
|
|
@@ -81,14 +81,14 @@ export declare class Tooltip extends LitElement {
|
|
|
81
81
|
*/
|
|
82
82
|
content?: string;
|
|
83
83
|
/**
|
|
84
|
-
*
|
|
84
|
+
* 触发方式,支持多个值,用空格分隔。可选值包括:
|
|
85
85
|
*
|
|
86
86
|
* * `click`:点击时触发
|
|
87
|
-
* * `hover
|
|
87
|
+
* * `hover`:鼠标悬浮时触发
|
|
88
88
|
* * `focus`:聚焦时触发
|
|
89
|
-
* * `manual
|
|
89
|
+
* * `manual`:只能通过编程方式打开和关闭 tooltip,不能再指定其他触发方式
|
|
90
90
|
*/
|
|
91
|
-
trigger: /*点击时触发*/ 'click' |
|
|
91
|
+
trigger: /*点击时触发*/ 'click' | /*鼠标悬浮时触发*/ 'hover' | /*聚焦时触发*/ 'focus' | /*只能通过编程方式打开和关闭 tooltip,不能再指定其他触发方式*/ 'manual' | string;
|
|
92
92
|
/**
|
|
93
93
|
* 是否禁用 tooltip
|
|
94
94
|
*/
|
|
@@ -98,6 +98,7 @@ export declare class Tooltip extends LitElement {
|
|
|
98
98
|
*/
|
|
99
99
|
open: boolean;
|
|
100
100
|
private observeResize?;
|
|
101
|
+
private overflowAncestors?;
|
|
101
102
|
private hoverTimeout;
|
|
102
103
|
private readonly popupRef;
|
|
103
104
|
private readonly hasSlotController;
|
|
@@ -133,6 +134,12 @@ export declare class Tooltip extends LitElement {
|
|
|
133
134
|
private onWindowScroll;
|
|
134
135
|
private updatePositioner;
|
|
135
136
|
}
|
|
137
|
+
export interface TooltipEventMap {
|
|
138
|
+
open: CustomEvent<void>;
|
|
139
|
+
opened: CustomEvent<void>;
|
|
140
|
+
close: CustomEvent<void>;
|
|
141
|
+
closed: CustomEvent<void>;
|
|
142
|
+
}
|
|
136
143
|
declare global {
|
|
137
144
|
interface HTMLElementTagNameMap {
|
|
138
145
|
'mdui-tooltip': Tooltip;
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { html
|
|
2
|
+
import { html } from 'lit';
|
|
3
3
|
import { customElement, property } from 'lit/decorators.js';
|
|
4
4
|
import { createRef, ref } from 'lit/directives/ref.js';
|
|
5
5
|
import { when } from 'lit/directives/when.js';
|
|
6
|
+
import { getOverflowAncestors } from '@floating-ui/utils/dom';
|
|
6
7
|
import { $ } from '@mdui/jq/$.js';
|
|
7
8
|
import '@mdui/jq/methods/css.js';
|
|
8
9
|
import '@mdui/jq/methods/filter.js';
|
|
9
10
|
import '@mdui/jq/methods/height.js';
|
|
10
11
|
import '@mdui/jq/methods/prop.js';
|
|
11
12
|
import '@mdui/jq/methods/width.js';
|
|
13
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
12
14
|
import { DefinedController } from '@mdui/shared/controllers/defined.js';
|
|
13
15
|
import { HasSlotController } from '@mdui/shared/controllers/has-slot.js';
|
|
14
16
|
import { HoverController } from '@mdui/shared/controllers/hover.js';
|
|
15
17
|
import { watch } from '@mdui/shared/decorators/watch.js';
|
|
16
18
|
import { animateTo, stopAnimations } from '@mdui/shared/helpers/animate.js';
|
|
17
19
|
import { booleanConverter } from '@mdui/shared/helpers/decorator.js';
|
|
18
|
-
import { emit } from '@mdui/shared/helpers/event.js';
|
|
19
20
|
import { getDuration, getEasing } from '@mdui/shared/helpers/motion.js';
|
|
20
21
|
import { observeResize } from '@mdui/shared/helpers/observeResize.js';
|
|
21
22
|
import { componentStyle } from '@mdui/shared/lit-styles/component-style.js';
|
|
@@ -34,67 +35,67 @@ import { style } from './style.js';
|
|
|
34
35
|
* @event close - tooltip 开始隐藏时,事件被触发。可以通过调用 `event.preventDefault()` 阻止 tooltip 关闭
|
|
35
36
|
* @event closed - tooltip 隐藏动画完成时,事件被触发
|
|
36
37
|
*
|
|
37
|
-
* @slot - tooltip
|
|
38
|
-
* @slot headline - tooltip
|
|
38
|
+
* @slot - tooltip 触发的目标元素,只有 `default` slot 中的第一个元素会作为目标元素
|
|
39
|
+
* @slot headline - tooltip 的标题,只有当 `variant="rich"` 时,此 slot 才有效
|
|
39
40
|
* @slot content - tooltip 的内容,可以包含 HTML。若只包含纯文本,可以使用 `content` 属性代替
|
|
40
|
-
* @slot action - tooltip
|
|
41
|
+
* @slot action - tooltip 底部的按钮,只有当 `variant="rich"` 时,此 slot 才有效
|
|
41
42
|
*
|
|
42
|
-
* @csspart popup -
|
|
43
|
+
* @csspart popup - tooltip 的容器
|
|
43
44
|
* @csspart headline - 标题
|
|
44
45
|
* @csspart content - 正文
|
|
45
46
|
* @csspart action - 操作按钮
|
|
46
47
|
*
|
|
47
|
-
* @cssprop --shape-corner-plain - variant="plain"
|
|
48
|
-
* @cssprop --shape-corner-rich - variant="rich"
|
|
49
|
-
* @cssprop --z-index - 组件的 CSS
|
|
48
|
+
* @cssprop --shape-corner-plain - 当 variant="plain" 时,组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
49
|
+
* @cssprop --shape-corner-rich - 当 variant="rich" 时,组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
50
|
+
* @cssprop --z-index - 组件的 CSS `z-index` 值
|
|
50
51
|
*/
|
|
51
|
-
let Tooltip = class Tooltip extends
|
|
52
|
+
let Tooltip = class Tooltip extends MduiElement {
|
|
52
53
|
constructor() {
|
|
53
54
|
super();
|
|
54
55
|
/**
|
|
55
|
-
* tooltip 的形状。默认为 `plain
|
|
56
|
+
* tooltip 的形状。默认为 `plain`。可选值包括:
|
|
56
57
|
*
|
|
57
|
-
* * `plain
|
|
58
|
-
* * `rich
|
|
58
|
+
* * `plain`:纯文本,适用于简单的单行文本
|
|
59
|
+
* * `rich`:富文本,可以包含标题、正文和操作按钮
|
|
59
60
|
*/
|
|
60
61
|
this.variant = 'plain';
|
|
61
62
|
/**
|
|
62
|
-
* tooltip 的位置。默认为 `auto
|
|
63
|
+
* tooltip 的位置。默认为 `auto`。可选值包括:
|
|
63
64
|
*
|
|
64
65
|
* * `auto`:自动判断位置。`variant="plan"` 时,优先使用 `top`;`variant="rich"` 时,优先使用 `bottom-right`
|
|
65
66
|
* * `top-left`:位于左上方
|
|
66
|
-
* * `top-start
|
|
67
|
-
* * `top
|
|
68
|
-
* * `top-end
|
|
67
|
+
* * `top-start`:位于上方,左对齐
|
|
68
|
+
* * `top`:位于上方,居中对齐
|
|
69
|
+
* * `top-end`:位于上方,右对齐
|
|
69
70
|
* * `top-right`:位于右上方
|
|
70
71
|
* * `bottom-left`:位于左下方
|
|
71
|
-
* * `bottom-start
|
|
72
|
-
* * `bottom
|
|
73
|
-
* * `bottom-end
|
|
72
|
+
* * `bottom-start`:位于下方,左对齐
|
|
73
|
+
* * `bottom`:位于下方,居中对齐
|
|
74
|
+
* * `bottom-end`:位于下方,右对齐
|
|
74
75
|
* * `bottom-right`:位于右下方
|
|
75
|
-
* * `left-start
|
|
76
|
-
* * `left
|
|
77
|
-
* * `left-end
|
|
78
|
-
* * `right-start
|
|
79
|
-
* * `right
|
|
80
|
-
* * `right-end
|
|
76
|
+
* * `left-start`:位于左侧,顶部对齐
|
|
77
|
+
* * `left`:位于左侧,居中对齐
|
|
78
|
+
* * `left-end`:位于左侧,底部对齐
|
|
79
|
+
* * `right-start`:位于右侧,顶部对齐
|
|
80
|
+
* * `right`:位于右侧,居中对齐
|
|
81
|
+
* * `right-end`:位于右侧,底部对齐
|
|
81
82
|
*/
|
|
82
83
|
this.placement = 'auto';
|
|
83
84
|
/**
|
|
84
|
-
*
|
|
85
|
+
* 鼠标悬浮触发显示的延时,单位为毫秒
|
|
85
86
|
*/
|
|
86
87
|
this.openDelay = 150;
|
|
87
88
|
/**
|
|
88
|
-
*
|
|
89
|
+
* 鼠标悬浮触发隐藏的延时,单位为毫秒
|
|
89
90
|
*/
|
|
90
91
|
this.closeDelay = 150;
|
|
91
92
|
/**
|
|
92
|
-
*
|
|
93
|
+
* 触发方式,支持多个值,用空格分隔。可选值包括:
|
|
93
94
|
*
|
|
94
95
|
* * `click`:点击时触发
|
|
95
|
-
* * `hover
|
|
96
|
+
* * `hover`:鼠标悬浮时触发
|
|
96
97
|
* * `focus`:聚焦时触发
|
|
97
|
-
* * `manual
|
|
98
|
+
* * `manual`:只能通过编程方式打开和关闭 tooltip,不能再指定其他触发方式
|
|
98
99
|
*/
|
|
99
100
|
this.trigger = 'hover focus';
|
|
100
101
|
/**
|
|
@@ -149,10 +150,8 @@ let Tooltip = class Tooltip extends LitElement {
|
|
|
149
150
|
await this.updateComplete;
|
|
150
151
|
}
|
|
151
152
|
if (hasUpdated) {
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
});
|
|
155
|
-
if (requestOpen.defaultPrevented) {
|
|
153
|
+
const eventProceeded = this.emit('open', { cancelable: true });
|
|
154
|
+
if (!eventProceeded) {
|
|
156
155
|
return;
|
|
157
156
|
}
|
|
158
157
|
}
|
|
@@ -164,33 +163,36 @@ let Tooltip = class Tooltip extends LitElement {
|
|
|
164
163
|
easing,
|
|
165
164
|
});
|
|
166
165
|
if (hasUpdated) {
|
|
167
|
-
emit(
|
|
166
|
+
this.emit('opened');
|
|
168
167
|
}
|
|
169
168
|
return;
|
|
170
169
|
}
|
|
171
170
|
// 关闭
|
|
172
171
|
if (!this.open && hasUpdated) {
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
});
|
|
176
|
-
if (requestClose.defaultPrevented) {
|
|
172
|
+
const eventProceeded = this.emit('close', { cancelable: true });
|
|
173
|
+
if (!eventProceeded) {
|
|
177
174
|
return;
|
|
178
175
|
}
|
|
179
176
|
await stopAnimations(this.popupRef.value);
|
|
180
177
|
await animateTo(this.popupRef.value, [{ transform: 'scale(1)' }, { transform: 'scale(0)' }], { duration, easing });
|
|
181
178
|
this.popupRef.value.hidden = true;
|
|
182
|
-
emit(
|
|
179
|
+
this.emit('closed');
|
|
183
180
|
}
|
|
184
181
|
}
|
|
185
182
|
connectedCallback() {
|
|
186
183
|
super.connectedCallback();
|
|
187
184
|
document.addEventListener('pointerdown', this.onDocumentClick);
|
|
188
|
-
|
|
185
|
+
this.overflowAncestors = getOverflowAncestors(this.target);
|
|
186
|
+
this.overflowAncestors.forEach((ancestor) => {
|
|
187
|
+
ancestor.addEventListener('scroll', this.onWindowScroll);
|
|
188
|
+
});
|
|
189
189
|
}
|
|
190
190
|
disconnectedCallback() {
|
|
191
191
|
super.disconnectedCallback();
|
|
192
192
|
document.removeEventListener('pointerdown', this.onDocumentClick);
|
|
193
|
-
|
|
193
|
+
this.overflowAncestors?.forEach((ancestor) => {
|
|
194
|
+
ancestor.removeEventListener('scroll', this.onWindowScroll);
|
|
195
|
+
});
|
|
194
196
|
this.observeResize?.unobserve();
|
|
195
197
|
}
|
|
196
198
|
firstUpdated(changedProperties) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
2
2
|
import type { CSSResultGroup, TemplateResult } from 'lit';
|
|
3
3
|
/**
|
|
4
|
-
* @summary
|
|
4
|
+
* @summary 顶部应用栏标题组件。需配合 `<mdui-top-app-bar>` 组件使用
|
|
5
5
|
*
|
|
6
6
|
* ```html
|
|
7
7
|
* <mdui-top-app-bar>
|
|
@@ -13,12 +13,12 @@ import type { CSSResultGroup, TemplateResult } from 'lit';
|
|
|
13
13
|
* ```
|
|
14
14
|
*
|
|
15
15
|
* @slot - 顶部应用栏的标题文本
|
|
16
|
-
* @slot label-large -
|
|
16
|
+
* @slot label-large - 展开状态下的标题文本
|
|
17
17
|
*
|
|
18
|
-
* @csspart label
|
|
19
|
-
* @csspart label-large
|
|
18
|
+
* @csspart label 标题文本
|
|
19
|
+
* @csspart label-large 展开状态下的标题文本
|
|
20
20
|
*/
|
|
21
|
-
export declare class TopAppBarTitle extends
|
|
21
|
+
export declare class TopAppBarTitle extends MduiElement<TopAppBarTitleEventMap> {
|
|
22
22
|
static styles: CSSResultGroup;
|
|
23
23
|
/**
|
|
24
24
|
* 顶部应用栏形状。由 mdui-top-app-bar 组件控制该参数
|
|
@@ -39,6 +39,8 @@ export declare class TopAppBarTitle extends LitElement {
|
|
|
39
39
|
*/
|
|
40
40
|
private onSlotChange;
|
|
41
41
|
}
|
|
42
|
+
export interface TopAppBarTitleEventMap {
|
|
43
|
+
}
|
|
42
44
|
declare global {
|
|
43
45
|
interface HTMLElementTagNameMap {
|
|
44
46
|
'mdui-top-app-bar-title': TopAppBarTitle;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { html
|
|
2
|
+
import { html } from 'lit';
|
|
3
3
|
import { customElement, state } from 'lit/decorators.js';
|
|
4
4
|
import { classMap } from 'lit/directives/class-map.js';
|
|
5
5
|
import { createRef, ref } from 'lit/directives/ref.js';
|
|
6
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
6
7
|
import { HasSlotController } from '@mdui/shared/controllers/has-slot.js';
|
|
7
8
|
import { getInnerHtmlFromSlot } from '@mdui/shared/helpers/slot.js';
|
|
8
9
|
import { componentStyle } from '@mdui/shared/lit-styles/component-style.js';
|
|
9
10
|
import { topAppBarTitleStyle } from './top-app-bar-title-style.js';
|
|
10
11
|
/**
|
|
11
|
-
* @summary
|
|
12
|
+
* @summary 顶部应用栏标题组件。需配合 `<mdui-top-app-bar>` 组件使用
|
|
12
13
|
*
|
|
13
14
|
* ```html
|
|
14
15
|
* <mdui-top-app-bar>
|
|
@@ -20,12 +21,12 @@ import { topAppBarTitleStyle } from './top-app-bar-title-style.js';
|
|
|
20
21
|
* ```
|
|
21
22
|
*
|
|
22
23
|
* @slot - 顶部应用栏的标题文本
|
|
23
|
-
* @slot label-large -
|
|
24
|
+
* @slot label-large - 展开状态下的标题文本
|
|
24
25
|
*
|
|
25
|
-
* @csspart label
|
|
26
|
-
* @csspart label-large
|
|
26
|
+
* @csspart label 标题文本
|
|
27
|
+
* @csspart label-large 展开状态下的标题文本
|
|
27
28
|
*/
|
|
28
|
-
let TopAppBarTitle = class TopAppBarTitle extends
|
|
29
|
+
let TopAppBarTitle = class TopAppBarTitle extends MduiElement {
|
|
29
30
|
constructor() {
|
|
30
31
|
super(...arguments);
|
|
31
32
|
/**
|
|
@@ -22,13 +22,13 @@ declare const TopAppBar_base: import("@open-wc/dedupe-mixin").Constructor<import
|
|
|
22
22
|
*
|
|
23
23
|
* @slot - 顶部应用栏内部的元素
|
|
24
24
|
*
|
|
25
|
-
* @cssprop --shape-corner -
|
|
26
|
-
* @cssprop --z-index - 组件的 CSS
|
|
25
|
+
* @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
26
|
+
* @cssprop --z-index - 组件的 CSS `z-index` 值
|
|
27
27
|
*/
|
|
28
|
-
export declare class TopAppBar extends TopAppBar_base {
|
|
28
|
+
export declare class TopAppBar extends TopAppBar_base<TopAppBarEventMap> {
|
|
29
29
|
static styles: CSSResultGroup;
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
31
|
+
* 顶部应用栏的形状。默认为 `small`。可选值包括:
|
|
32
32
|
*
|
|
33
33
|
* * `center-aligned`:小型应用栏,标题居中
|
|
34
34
|
* * `small`:小型应用栏
|
|
@@ -41,11 +41,11 @@ export declare class TopAppBar extends TopAppBar_base {
|
|
|
41
41
|
*/
|
|
42
42
|
hide: boolean;
|
|
43
43
|
/**
|
|
44
|
-
*
|
|
44
|
+
* 是否缩小为 `variant="small"` 的样式,仅在 `variant="medium"` 或 `variant="large"` 时生效
|
|
45
45
|
*/
|
|
46
46
|
shrink: boolean;
|
|
47
47
|
/**
|
|
48
|
-
*
|
|
48
|
+
* 滚动行为。可同时使用多个值,用空格分隔。可选值包括:
|
|
49
49
|
*
|
|
50
50
|
* * `hide`:滚动时隐藏
|
|
51
51
|
* * `shrink`:在中型、大型应用栏中可使用,滚动时缩小成小型应用栏的样式
|
|
@@ -66,6 +66,12 @@ export declare class TopAppBar extends TopAppBar_base {
|
|
|
66
66
|
protected runScrollNoThreshold(isScrollingUp: boolean, scrollTop: number): void;
|
|
67
67
|
protected runScrollThreshold(isScrollingUp: boolean, scrollTop: number): void;
|
|
68
68
|
}
|
|
69
|
+
export interface TopAppBarEventMap {
|
|
70
|
+
show: CustomEvent<void>;
|
|
71
|
+
shown: CustomEvent<void>;
|
|
72
|
+
hide: CustomEvent<void>;
|
|
73
|
+
hidden: CustomEvent<void>;
|
|
74
|
+
}
|
|
69
75
|
declare global {
|
|
70
76
|
interface HTMLElementTagNameMap {
|
|
71
77
|
'mdui-top-app-bar': TopAppBar;
|
|
@@ -3,7 +3,6 @@ import { html } from 'lit';
|
|
|
3
3
|
import { customElement, property, queryAssignedElements, } from 'lit/decorators.js';
|
|
4
4
|
import { watch } from '@mdui/shared/decorators/watch.js';
|
|
5
5
|
import { booleanConverter } from '@mdui/shared/helpers/decorator.js';
|
|
6
|
-
import { emit } from '@mdui/shared/helpers/event.js';
|
|
7
6
|
import { componentStyle } from '@mdui/shared/lit-styles/component-style.js';
|
|
8
7
|
import { ScrollBehaviorMixin } from '@mdui/shared/mixins/scrollBehavior.js';
|
|
9
8
|
import { LayoutItemBase } from '../layout/layout-item-base.js';
|
|
@@ -27,14 +26,14 @@ import { topAppBarStyle } from './top-app-bar-style.js';
|
|
|
27
26
|
*
|
|
28
27
|
* @slot - 顶部应用栏内部的元素
|
|
29
28
|
*
|
|
30
|
-
* @cssprop --shape-corner -
|
|
31
|
-
* @cssprop --z-index - 组件的 CSS
|
|
29
|
+
* @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
30
|
+
* @cssprop --z-index - 组件的 CSS `z-index` 值
|
|
32
31
|
*/
|
|
33
32
|
let TopAppBar = class TopAppBar extends ScrollBehaviorMixin(LayoutItemBase) {
|
|
34
33
|
constructor() {
|
|
35
34
|
super(...arguments);
|
|
36
35
|
/**
|
|
37
|
-
*
|
|
36
|
+
* 顶部应用栏的形状。默认为 `small`。可选值包括:
|
|
38
37
|
*
|
|
39
38
|
* * `center-aligned`:小型应用栏,标题居中
|
|
40
39
|
* * `small`:小型应用栏
|
|
@@ -47,7 +46,7 @@ let TopAppBar = class TopAppBar extends ScrollBehaviorMixin(LayoutItemBase) {
|
|
|
47
46
|
*/
|
|
48
47
|
this.hide = false;
|
|
49
48
|
/**
|
|
50
|
-
*
|
|
49
|
+
* 是否缩小为 `variant="small"` 的样式,仅在 `variant="medium"` 或 `variant="large"` 时生效
|
|
51
50
|
*/
|
|
52
51
|
this.shrink = false;
|
|
53
52
|
/**
|
|
@@ -88,7 +87,7 @@ let TopAppBar = class TopAppBar extends ScrollBehaviorMixin(LayoutItemBase) {
|
|
|
88
87
|
super.firstUpdated(_changedProperties);
|
|
89
88
|
this.addEventListener('transitionend', (e) => {
|
|
90
89
|
if (e.target === this) {
|
|
91
|
-
emit(this
|
|
90
|
+
this.emit(this.hide ? 'hidden' : 'shown');
|
|
92
91
|
}
|
|
93
92
|
});
|
|
94
93
|
}
|
|
@@ -119,15 +118,15 @@ let TopAppBar = class TopAppBar extends ScrollBehaviorMixin(LayoutItemBase) {
|
|
|
119
118
|
if (this.hasScrollBehavior('hide')) {
|
|
120
119
|
// 向下滚动
|
|
121
120
|
if (!isScrollingUp && !this.hide) {
|
|
122
|
-
const
|
|
123
|
-
if (
|
|
121
|
+
const eventProceeded = this.emit('hide', { cancelable: true });
|
|
122
|
+
if (eventProceeded) {
|
|
124
123
|
this.hide = true;
|
|
125
124
|
}
|
|
126
125
|
}
|
|
127
126
|
// 向上滚动
|
|
128
127
|
if (isScrollingUp && this.hide) {
|
|
129
|
-
const
|
|
130
|
-
if (
|
|
128
|
+
const eventProceeded = this.emit('show', { cancelable: true });
|
|
129
|
+
if (eventProceeded) {
|
|
131
130
|
this.hide = false;
|
|
132
131
|
}
|
|
133
132
|
}
|