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,15 +1,15 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { html
|
|
2
|
+
import { html } from 'lit';
|
|
3
3
|
import { customElement, property, queryAssignedElements, } 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
6
|
import { when } from 'lit/directives/when.js';
|
|
7
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
7
8
|
import { DefinedController } from '@mdui/shared/controllers/defined.js';
|
|
8
9
|
import { HasSlotController } from '@mdui/shared/controllers/has-slot.js';
|
|
9
10
|
import { watch } from '@mdui/shared/decorators/watch.js';
|
|
10
11
|
import { animateTo, stopAnimations } from '@mdui/shared/helpers/animate.js';
|
|
11
12
|
import { booleanConverter } from '@mdui/shared/helpers/decorator.js';
|
|
12
|
-
import { emit } from '@mdui/shared/helpers/event.js';
|
|
13
13
|
import { Modal } from '@mdui/shared/helpers/modal.js';
|
|
14
14
|
import { getDuration, getEasing } from '@mdui/shared/helpers/motion.js';
|
|
15
15
|
import { lockScreen, unlockScreen } from '@mdui/shared/helpers/scroll.js';
|
|
@@ -24,10 +24,10 @@ import { style } from './style.js';
|
|
|
24
24
|
* <mdui-dialog>content</mdui-dialog>
|
|
25
25
|
* ```
|
|
26
26
|
*
|
|
27
|
-
* @event open -
|
|
28
|
-
* @event opened -
|
|
29
|
-
* @event close -
|
|
30
|
-
* @event closed -
|
|
27
|
+
* @event open - 对话框开始打开时触发。可以通过调用 `event.preventDefault()` 阻止对话框打开
|
|
28
|
+
* @event opened - 对话框打开动画完成后触发
|
|
29
|
+
* @event close - 对话框开始关闭时触发。可以通过调用 `event.preventDefault()` 阻止对话框关闭
|
|
30
|
+
* @event closed - 对话框关闭动画完成后触发
|
|
31
31
|
* @event overlay-click - 点击遮罩层时触发
|
|
32
32
|
*
|
|
33
33
|
* @slot header - 顶部元素,默认包含 `icon` slot 和 `headline` slot
|
|
@@ -39,17 +39,17 @@ import { style } from './style.js';
|
|
|
39
39
|
*
|
|
40
40
|
* @csspart overlay - 遮罩层
|
|
41
41
|
* @csspart panel - 对话框容器
|
|
42
|
-
* @csspart header - 对话框 header
|
|
43
|
-
* @csspart icon -
|
|
44
|
-
* @csspart headline -
|
|
45
|
-
* @csspart body -
|
|
42
|
+
* @csspart header - 对话框 header 部分,包含 icon 和 headline
|
|
43
|
+
* @csspart icon - 顶部图标,位于 header 中
|
|
44
|
+
* @csspart headline - 顶部标题,位于 header 中
|
|
45
|
+
* @csspart body - 对话框 body 部分
|
|
46
46
|
* @csspart description - 副文本部分,位于 body 中
|
|
47
47
|
* @csspart action - 底部操作按钮
|
|
48
48
|
*
|
|
49
|
-
* @cssprop --shape-corner -
|
|
50
|
-
* @cssprop --z-index - 组件的 CSS
|
|
49
|
+
* @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
50
|
+
* @cssprop --z-index - 组件的 CSS `z-index` 值
|
|
51
51
|
*/
|
|
52
|
-
let Dialog = class Dialog extends
|
|
52
|
+
let Dialog = class Dialog extends MduiElement {
|
|
53
53
|
constructor() {
|
|
54
54
|
super(...arguments);
|
|
55
55
|
/**
|
|
@@ -57,15 +57,15 @@ let Dialog = class Dialog extends LitElement {
|
|
|
57
57
|
*/
|
|
58
58
|
this.open = false;
|
|
59
59
|
/**
|
|
60
|
-
*
|
|
60
|
+
* 是否全屏显示对话框
|
|
61
61
|
*/
|
|
62
62
|
this.fullscreen = false;
|
|
63
63
|
/**
|
|
64
|
-
*
|
|
64
|
+
* 是否允许按下 ESC 键关闭对话框
|
|
65
65
|
*/
|
|
66
66
|
this.closeOnEsc = false;
|
|
67
67
|
/**
|
|
68
|
-
*
|
|
68
|
+
* 是否允许点击遮罩层关闭对话框
|
|
69
69
|
*/
|
|
70
70
|
this.closeOnOverlayClick = false;
|
|
71
71
|
/**
|
|
@@ -104,10 +104,8 @@ let Dialog = class Dialog extends LitElement {
|
|
|
104
104
|
// 要区分是否首次渲染,首次渲染不触发事件,不执行动画;非首次渲染,触发事件,执行动画
|
|
105
105
|
if (this.open) {
|
|
106
106
|
if (hasUpdated) {
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
});
|
|
110
|
-
if (requestOpen.defaultPrevented) {
|
|
107
|
+
const eventProceeded = this.emit('open', { cancelable: true });
|
|
108
|
+
if (!eventProceeded) {
|
|
111
109
|
return;
|
|
112
110
|
}
|
|
113
111
|
}
|
|
@@ -165,14 +163,12 @@ let Dialog = class Dialog extends LitElement {
|
|
|
165
163
|
})),
|
|
166
164
|
]);
|
|
167
165
|
if (hasUpdated) {
|
|
168
|
-
emit(
|
|
166
|
+
this.emit('opened');
|
|
169
167
|
}
|
|
170
168
|
}
|
|
171
169
|
else {
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
});
|
|
175
|
-
if (requestClose.defaultPrevented) {
|
|
170
|
+
const eventProceeded = this.emit('close', { cancelable: true });
|
|
171
|
+
if (!eventProceeded) {
|
|
176
172
|
return;
|
|
177
173
|
}
|
|
178
174
|
this.modalHelper.deactivate();
|
|
@@ -197,7 +193,7 @@ let Dialog = class Dialog extends LitElement {
|
|
|
197
193
|
if (typeof trigger?.focus === 'function') {
|
|
198
194
|
setTimeout(() => trigger.focus());
|
|
199
195
|
}
|
|
200
|
-
emit(
|
|
196
|
+
this.emit('closed');
|
|
201
197
|
}
|
|
202
198
|
}
|
|
203
199
|
disconnectedCallback() {
|
|
@@ -229,7 +225,7 @@ let Dialog = class Dialog extends LitElement {
|
|
|
229
225
|
})}" tabindex="0">${when(hasHeader, () => html `<slot name="header" part="header" class="header">${when(hasIcon, () => this.renderIcon())} ${when(hasHeadline, () => this.renderHeadline())}</slot>`)} ${when(hasBody, () => html `<div ${ref(this.bodyRef)} part="body" class="body">${when(hasDescription, () => this.renderDescription())}<slot></slot></div>`)} ${when(hasActionSlot, () => html `<slot name="action" part="action" class="action"></slot>`)}</div>`;
|
|
230
226
|
}
|
|
231
227
|
onOverlayClick() {
|
|
232
|
-
emit(
|
|
228
|
+
this.emit('overlay-click');
|
|
233
229
|
if (!this.closeOnOverlayClick) {
|
|
234
230
|
return;
|
|
235
231
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
2
2
|
import type { CSSResultGroup, TemplateResult } from 'lit';
|
|
3
3
|
/**
|
|
4
4
|
* @summary 分割线组件
|
|
@@ -7,22 +7,24 @@ import type { CSSResultGroup, TemplateResult } from 'lit';
|
|
|
7
7
|
* <mdui-divider></mdui-divider>
|
|
8
8
|
* ```
|
|
9
9
|
*/
|
|
10
|
-
export declare class Divider extends
|
|
10
|
+
export declare class Divider extends MduiElement<DividerEventMap> {
|
|
11
11
|
static styles: CSSResultGroup;
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* 是否为垂直分割线
|
|
14
14
|
*/
|
|
15
15
|
vertical: boolean;
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* 是否进行左侧缩进
|
|
18
18
|
*/
|
|
19
19
|
inset: boolean;
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* 是否进行左右两侧缩进
|
|
22
22
|
*/
|
|
23
23
|
middle: boolean;
|
|
24
24
|
protected render(): TemplateResult;
|
|
25
25
|
}
|
|
26
|
+
export interface DividerEventMap {
|
|
27
|
+
}
|
|
26
28
|
declare global {
|
|
27
29
|
interface HTMLElementTagNameMap {
|
|
28
30
|
'mdui-divider': Divider;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { html
|
|
2
|
+
import { html } from 'lit';
|
|
3
3
|
import { customElement, property } from 'lit/decorators.js';
|
|
4
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
4
5
|
import { booleanConverter } from '@mdui/shared/helpers/decorator.js';
|
|
5
6
|
import { componentStyle } from '@mdui/shared/lit-styles/component-style.js';
|
|
6
7
|
import { style } from './style.js';
|
|
@@ -11,19 +12,19 @@ import { style } from './style.js';
|
|
|
11
12
|
* <mdui-divider></mdui-divider>
|
|
12
13
|
* ```
|
|
13
14
|
*/
|
|
14
|
-
let Divider = class Divider extends
|
|
15
|
+
let Divider = class Divider extends MduiElement {
|
|
15
16
|
constructor() {
|
|
16
17
|
super(...arguments);
|
|
17
18
|
/**
|
|
18
|
-
*
|
|
19
|
+
* 是否为垂直分割线
|
|
19
20
|
*/
|
|
20
21
|
this.vertical = false;
|
|
21
22
|
/**
|
|
22
|
-
*
|
|
23
|
+
* 是否进行左侧缩进
|
|
23
24
|
*/
|
|
24
25
|
this.inset = false;
|
|
25
26
|
/**
|
|
26
|
-
*
|
|
27
|
+
* 是否进行左右两侧缩进
|
|
27
28
|
*/
|
|
28
29
|
this.middle = false;
|
|
29
30
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
2
1
|
import '@mdui/jq/methods/height.js';
|
|
3
2
|
import '@mdui/jq/methods/is.js';
|
|
4
3
|
import '@mdui/jq/methods/width.js';
|
|
4
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
5
5
|
import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
|
|
6
6
|
/**
|
|
7
7
|
* @summary 下拉组件
|
|
@@ -16,71 +16,71 @@ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
|
|
|
16
16
|
* </mdui-dropdown>
|
|
17
17
|
* ```
|
|
18
18
|
*
|
|
19
|
-
* @event open -
|
|
20
|
-
* @event opened -
|
|
21
|
-
* @event close -
|
|
22
|
-
* @event closed -
|
|
19
|
+
* @event open - 下拉组件开始打开时,事件被触发。可以通过调用 `event.preventDefault()` 阻止下拉组件打开
|
|
20
|
+
* @event opened - 下拉组件打开动画完成时,事件被触发
|
|
21
|
+
* @event close - 下拉组件开始关闭时,事件被触发。可以通过调用 `event.preventDefault()` 阻止下拉组件关闭
|
|
22
|
+
* @event closed - 下拉组件关闭动画完成时,事件被触发
|
|
23
23
|
*
|
|
24
|
-
* @slot -
|
|
25
|
-
* @slot trigger -
|
|
24
|
+
* @slot - 下拉组件的内容
|
|
25
|
+
* @slot trigger - 触发下拉组件的元素,例如 [`<mdui-button>`](/docs/2/components/button) 元素
|
|
26
26
|
*
|
|
27
|
-
* @csspart trigger -
|
|
28
|
-
* @csspart panel -
|
|
27
|
+
* @csspart trigger - 触发下拉组件的元素的容器,即 `trigger` slot 的容器
|
|
28
|
+
* @csspart panel - 下拉组件内容的容器
|
|
29
29
|
*
|
|
30
|
-
* @cssprop --z-index - 组件的 CSS
|
|
30
|
+
* @cssprop --z-index - 组件的 CSS `z-index` 值
|
|
31
31
|
*/
|
|
32
|
-
export declare class Dropdown extends
|
|
32
|
+
export declare class Dropdown extends MduiElement<DropdownEventMap> {
|
|
33
33
|
static styles: CSSResultGroup;
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
35
|
+
* 是否打开下拉组件
|
|
36
36
|
*/
|
|
37
37
|
open: boolean;
|
|
38
38
|
/**
|
|
39
|
-
*
|
|
39
|
+
* 是否禁用下拉组件
|
|
40
40
|
*/
|
|
41
41
|
disabled: boolean;
|
|
42
42
|
/**
|
|
43
|
-
*
|
|
43
|
+
* 下拉组件的触发方式,支持多个值,用空格分隔。可选值包括:
|
|
44
44
|
*
|
|
45
|
-
* * `click
|
|
45
|
+
* * `click`:点击触发
|
|
46
46
|
* * `hover`:鼠标悬浮触发
|
|
47
|
-
* * `focus
|
|
48
|
-
* * `contextmenu
|
|
49
|
-
* * `manual
|
|
47
|
+
* * `focus`:聚焦触发
|
|
48
|
+
* * `contextmenu`:鼠标右键点击、或触摸长按触发
|
|
49
|
+
* * `manual`:仅能通过编程方式打开和关闭下拉组件,不能再指定其他触发方式
|
|
50
50
|
*/
|
|
51
|
-
trigger:
|
|
51
|
+
trigger: /*点击触发*/ 'click' | /*鼠标悬浮触发*/ 'hover' | /*聚焦触发*/ 'focus' | /*鼠标右键点击、或触摸长按触发*/ 'contextmenu' | /*仅能通过编程方式打开和关闭下拉组件,不能再指定其他触发方式*/ 'manual' | string;
|
|
52
52
|
/**
|
|
53
|
-
*
|
|
53
|
+
* 下拉组件内容的位置。可选值包括:
|
|
54
54
|
*
|
|
55
55
|
* * `auto`:自动判断位置
|
|
56
|
-
* * `top-start
|
|
57
|
-
* * `top
|
|
58
|
-
* * `top-end
|
|
59
|
-
* * `bottom-start
|
|
60
|
-
* * `bottom
|
|
61
|
-
* * `bottom-end
|
|
62
|
-
* * `left-start
|
|
63
|
-
* * `left
|
|
64
|
-
* * `left-end
|
|
65
|
-
* * `right-start
|
|
66
|
-
* * `right
|
|
67
|
-
* * `right-end
|
|
56
|
+
* * `top-start`:上方左对齐
|
|
57
|
+
* * `top`:上方居中
|
|
58
|
+
* * `top-end`:上方右对齐
|
|
59
|
+
* * `bottom-start`:下方左对齐
|
|
60
|
+
* * `bottom`:下方居中
|
|
61
|
+
* * `bottom-end`:下方右对齐
|
|
62
|
+
* * `left-start`:左侧顶部对齐
|
|
63
|
+
* * `left`:左侧居中
|
|
64
|
+
* * `left-end`:左侧底部对齐
|
|
65
|
+
* * `right-start`:右侧顶部对齐
|
|
66
|
+
* * `right`:右侧居中
|
|
67
|
+
* * `right-end`:右侧底部对齐
|
|
68
68
|
*/
|
|
69
|
-
placement: /*自动判断位置*/ 'auto' |
|
|
69
|
+
placement: /*自动判断位置*/ 'auto' | /*上方左对齐*/ 'top-start' | /*上方居中*/ 'top' | /*上方右对齐*/ 'top-end' | /*下方左对齐*/ 'bottom-start' | /*下方居中*/ 'bottom' | /*下方右对齐*/ 'bottom-end' | /*左侧顶部对齐*/ 'left-start' | /*左侧居中*/ 'left' | /*左侧底部对齐*/ 'left-end' | /*右侧顶部对齐*/ 'right-start' | /*右侧居中*/ 'right' | /*右侧底部对齐*/ 'right-end';
|
|
70
70
|
/**
|
|
71
|
-
*
|
|
71
|
+
* 点击 [`<mdui-menu-item>`](/docs/2/components/menu#menu-item-api) 后,下拉组件是否保持打开状态
|
|
72
72
|
*/
|
|
73
73
|
stayOpenOnClick: boolean;
|
|
74
74
|
/**
|
|
75
|
-
*
|
|
75
|
+
* 鼠标悬浮触发下拉组件打开的延时,单位为毫秒
|
|
76
76
|
*/
|
|
77
77
|
openDelay: number;
|
|
78
78
|
/**
|
|
79
|
-
*
|
|
79
|
+
* 鼠标悬浮触发下拉组件关闭的延时,单位为毫秒
|
|
80
80
|
*/
|
|
81
81
|
closeDelay: number;
|
|
82
82
|
/**
|
|
83
|
-
*
|
|
83
|
+
* 是否在触发下拉组件的光标位置打开下拉组件,常用于打开鼠标右键菜单
|
|
84
84
|
*/
|
|
85
85
|
openOnPointer: boolean;
|
|
86
86
|
private readonly triggerElements;
|
|
@@ -91,6 +91,7 @@ export declare class Dropdown extends LitElement {
|
|
|
91
91
|
private openTimeout;
|
|
92
92
|
private closeTimeout;
|
|
93
93
|
private observeResize?;
|
|
94
|
+
private overflowAncestors?;
|
|
94
95
|
private readonly panelRef;
|
|
95
96
|
private readonly definedController;
|
|
96
97
|
constructor();
|
|
@@ -123,6 +124,12 @@ export declare class Dropdown extends LitElement {
|
|
|
123
124
|
private onMouseLeave;
|
|
124
125
|
private updatePositioner;
|
|
125
126
|
}
|
|
127
|
+
export interface DropdownEventMap {
|
|
128
|
+
open: CustomEvent<void>;
|
|
129
|
+
opened: CustomEvent<void>;
|
|
130
|
+
close: CustomEvent<void>;
|
|
131
|
+
closed: CustomEvent<void>;
|
|
132
|
+
}
|
|
126
133
|
declare global {
|
|
127
134
|
interface HTMLElementTagNameMap {
|
|
128
135
|
'mdui-dropdown': Dropdown;
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { html
|
|
2
|
+
import { html } from 'lit';
|
|
3
3
|
import { customElement, property, queryAssignedElements, } from 'lit/decorators.js';
|
|
4
4
|
import { createRef, ref } from 'lit/directives/ref.js';
|
|
5
|
+
import { getOverflowAncestors } from '@floating-ui/utils/dom';
|
|
5
6
|
import { $ } from '@mdui/jq/$.js';
|
|
6
7
|
import '@mdui/jq/methods/height.js';
|
|
7
8
|
import '@mdui/jq/methods/is.js';
|
|
8
9
|
import '@mdui/jq/methods/width.js';
|
|
9
10
|
import { isFunction } from '@mdui/jq/shared/helper.js';
|
|
11
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
10
12
|
import { DefinedController } from '@mdui/shared/controllers/defined.js';
|
|
11
13
|
import { watch } from '@mdui/shared/decorators/watch.js';
|
|
12
14
|
import { animateTo, stopAnimations } from '@mdui/shared/helpers/animate.js';
|
|
13
15
|
import { booleanConverter } from '@mdui/shared/helpers/decorator.js';
|
|
14
|
-
import { emit } from '@mdui/shared/helpers/event.js';
|
|
15
16
|
import { getDuration, getEasing } from '@mdui/shared/helpers/motion.js';
|
|
16
17
|
import { observeResize } from '@mdui/shared/helpers/observeResize.js';
|
|
17
18
|
import { componentStyle } from '@mdui/shared/lit-styles/component-style.js';
|
|
@@ -29,72 +30,72 @@ import { style } from './style.js';
|
|
|
29
30
|
* </mdui-dropdown>
|
|
30
31
|
* ```
|
|
31
32
|
*
|
|
32
|
-
* @event open -
|
|
33
|
-
* @event opened -
|
|
34
|
-
* @event close -
|
|
35
|
-
* @event closed -
|
|
33
|
+
* @event open - 下拉组件开始打开时,事件被触发。可以通过调用 `event.preventDefault()` 阻止下拉组件打开
|
|
34
|
+
* @event opened - 下拉组件打开动画完成时,事件被触发
|
|
35
|
+
* @event close - 下拉组件开始关闭时,事件被触发。可以通过调用 `event.preventDefault()` 阻止下拉组件关闭
|
|
36
|
+
* @event closed - 下拉组件关闭动画完成时,事件被触发
|
|
36
37
|
*
|
|
37
|
-
* @slot -
|
|
38
|
-
* @slot trigger -
|
|
38
|
+
* @slot - 下拉组件的内容
|
|
39
|
+
* @slot trigger - 触发下拉组件的元素,例如 [`<mdui-button>`](/docs/2/components/button) 元素
|
|
39
40
|
*
|
|
40
|
-
* @csspart trigger -
|
|
41
|
-
* @csspart panel -
|
|
41
|
+
* @csspart trigger - 触发下拉组件的元素的容器,即 `trigger` slot 的容器
|
|
42
|
+
* @csspart panel - 下拉组件内容的容器
|
|
42
43
|
*
|
|
43
|
-
* @cssprop --z-index - 组件的 CSS
|
|
44
|
+
* @cssprop --z-index - 组件的 CSS `z-index` 值
|
|
44
45
|
*/
|
|
45
|
-
let Dropdown = class Dropdown extends
|
|
46
|
+
let Dropdown = class Dropdown extends MduiElement {
|
|
46
47
|
constructor() {
|
|
47
48
|
super();
|
|
48
49
|
/**
|
|
49
|
-
*
|
|
50
|
+
* 是否打开下拉组件
|
|
50
51
|
*/
|
|
51
52
|
this.open = false;
|
|
52
53
|
/**
|
|
53
|
-
*
|
|
54
|
+
* 是否禁用下拉组件
|
|
54
55
|
*/
|
|
55
56
|
this.disabled = false;
|
|
56
57
|
/**
|
|
57
|
-
*
|
|
58
|
+
* 下拉组件的触发方式,支持多个值,用空格分隔。可选值包括:
|
|
58
59
|
*
|
|
59
|
-
* * `click
|
|
60
|
+
* * `click`:点击触发
|
|
60
61
|
* * `hover`:鼠标悬浮触发
|
|
61
|
-
* * `focus
|
|
62
|
-
* * `contextmenu
|
|
63
|
-
* * `manual
|
|
62
|
+
* * `focus`:聚焦触发
|
|
63
|
+
* * `contextmenu`:鼠标右键点击、或触摸长按触发
|
|
64
|
+
* * `manual`:仅能通过编程方式打开和关闭下拉组件,不能再指定其他触发方式
|
|
64
65
|
*/
|
|
65
66
|
this.trigger = 'click';
|
|
66
67
|
/**
|
|
67
|
-
*
|
|
68
|
+
* 下拉组件内容的位置。可选值包括:
|
|
68
69
|
*
|
|
69
70
|
* * `auto`:自动判断位置
|
|
70
|
-
* * `top-start
|
|
71
|
-
* * `top
|
|
72
|
-
* * `top-end
|
|
73
|
-
* * `bottom-start
|
|
74
|
-
* * `bottom
|
|
75
|
-
* * `bottom-end
|
|
76
|
-
* * `left-start
|
|
77
|
-
* * `left
|
|
78
|
-
* * `left-end
|
|
79
|
-
* * `right-start
|
|
80
|
-
* * `right
|
|
81
|
-
* * `right-end
|
|
71
|
+
* * `top-start`:上方左对齐
|
|
72
|
+
* * `top`:上方居中
|
|
73
|
+
* * `top-end`:上方右对齐
|
|
74
|
+
* * `bottom-start`:下方左对齐
|
|
75
|
+
* * `bottom`:下方居中
|
|
76
|
+
* * `bottom-end`:下方右对齐
|
|
77
|
+
* * `left-start`:左侧顶部对齐
|
|
78
|
+
* * `left`:左侧居中
|
|
79
|
+
* * `left-end`:左侧底部对齐
|
|
80
|
+
* * `right-start`:右侧顶部对齐
|
|
81
|
+
* * `right`:右侧居中
|
|
82
|
+
* * `right-end`:右侧底部对齐
|
|
82
83
|
*/
|
|
83
84
|
this.placement = 'auto';
|
|
84
85
|
/**
|
|
85
|
-
*
|
|
86
|
+
* 点击 [`<mdui-menu-item>`](/docs/2/components/menu#menu-item-api) 后,下拉组件是否保持打开状态
|
|
86
87
|
*/
|
|
87
88
|
this.stayOpenOnClick = false;
|
|
88
89
|
/**
|
|
89
|
-
*
|
|
90
|
+
* 鼠标悬浮触发下拉组件打开的延时,单位为毫秒
|
|
90
91
|
*/
|
|
91
92
|
this.openDelay = 150;
|
|
92
93
|
/**
|
|
93
|
-
*
|
|
94
|
+
* 鼠标悬浮触发下拉组件关闭的延时,单位为毫秒
|
|
94
95
|
*/
|
|
95
96
|
this.closeDelay = 150;
|
|
96
97
|
/**
|
|
97
|
-
*
|
|
98
|
+
* 是否在触发下拉组件的光标位置打开下拉组件,常用于打开鼠标右键菜单
|
|
98
99
|
*/
|
|
99
100
|
this.openOnPointer = false;
|
|
100
101
|
this.panelRef = createRef();
|
|
@@ -139,10 +140,8 @@ let Dropdown = class Dropdown extends LitElement {
|
|
|
139
140
|
// 要区分是否首次渲染,首次渲染时不触发事件,不执行动画;非首次渲染,触发事件,执行动画
|
|
140
141
|
if (this.open) {
|
|
141
142
|
if (hasUpdated) {
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
});
|
|
145
|
-
if (requestOpen.defaultPrevented) {
|
|
143
|
+
const eventProceeded = this.emit('open', { cancelable: true });
|
|
144
|
+
if (!eventProceeded) {
|
|
146
145
|
return;
|
|
147
146
|
}
|
|
148
147
|
}
|
|
@@ -169,14 +168,12 @@ let Dropdown = class Dropdown extends LitElement {
|
|
|
169
168
|
}),
|
|
170
169
|
]);
|
|
171
170
|
if (hasUpdated) {
|
|
172
|
-
emit(
|
|
171
|
+
this.emit('opened');
|
|
173
172
|
}
|
|
174
173
|
}
|
|
175
174
|
else {
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
});
|
|
179
|
-
if (requestClose.defaultPrevented) {
|
|
175
|
+
const eventProceeded = this.emit('close', { cancelable: true });
|
|
176
|
+
if (!eventProceeded) {
|
|
180
177
|
return;
|
|
181
178
|
}
|
|
182
179
|
// dropdown 关闭时,如果不支持 focus 触发,且焦点在 dropdown 内,则焦点回到 trigger 上
|
|
@@ -199,7 +196,7 @@ let Dropdown = class Dropdown extends LitElement {
|
|
|
199
196
|
if (this.panelRef.value) {
|
|
200
197
|
this.panelRef.value.hidden = true;
|
|
201
198
|
}
|
|
202
|
-
emit(
|
|
199
|
+
this.emit('closed');
|
|
203
200
|
}
|
|
204
201
|
}
|
|
205
202
|
connectedCallback() {
|
|
@@ -207,14 +204,19 @@ let Dropdown = class Dropdown extends LitElement {
|
|
|
207
204
|
this.definedController.whenDefined().then(() => {
|
|
208
205
|
document.addEventListener('pointerdown', this.onDocumentClick);
|
|
209
206
|
document.addEventListener('keydown', this.onDocumentKeydown);
|
|
210
|
-
|
|
207
|
+
this.overflowAncestors = getOverflowAncestors(this.triggerElement);
|
|
208
|
+
this.overflowAncestors.forEach((ancestor) => {
|
|
209
|
+
ancestor.addEventListener('scroll', this.onWindowScroll);
|
|
210
|
+
});
|
|
211
211
|
});
|
|
212
212
|
}
|
|
213
213
|
disconnectedCallback() {
|
|
214
214
|
super.disconnectedCallback();
|
|
215
215
|
document.removeEventListener('pointerdown', this.onDocumentClick);
|
|
216
216
|
document.removeEventListener('keydown', this.onDocumentKeydown);
|
|
217
|
-
|
|
217
|
+
this.overflowAncestors?.forEach((ancestor) => {
|
|
218
|
+
ancestor.removeEventListener('scroll', this.onWindowScroll);
|
|
219
|
+
});
|
|
218
220
|
this.observeResize?.unobserve();
|
|
219
221
|
}
|
|
220
222
|
firstUpdated(changedProperties) {
|
|
@@ -16,19 +16,19 @@ import type { TemplateResult, CSSResultGroup } from 'lit';
|
|
|
16
16
|
* @slot - 文本
|
|
17
17
|
* @slot icon - 图标
|
|
18
18
|
*
|
|
19
|
-
* @csspart button - 内部的
|
|
19
|
+
* @csspart button - 内部的 `<button>` 或 `<a>` 元素
|
|
20
20
|
* @csspart label - 右侧的文本
|
|
21
21
|
* @csspart icon - 左侧的图标
|
|
22
22
|
* @csspart loading - 加载中状态的 `<mdui-circular-progress>` 元素
|
|
23
23
|
*
|
|
24
|
-
* @cssprop --shape-corner-small - `size="small"`
|
|
25
|
-
* @cssprop --shape-corner-normal - `size="normal"`
|
|
26
|
-
* @cssprop --shape-corner-large - `size="large"`
|
|
24
|
+
* @cssprop --shape-corner-small - `size="small"` 时,组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
25
|
+
* @cssprop --shape-corner-normal - `size="normal"` 时,组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
26
|
+
* @cssprop --shape-corner-large - `size="large"` 时,组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
27
27
|
*/
|
|
28
|
-
export declare class Fab extends ButtonBase {
|
|
28
|
+
export declare class Fab extends ButtonBase<FabEventMap> {
|
|
29
29
|
static styles: CSSResultGroup;
|
|
30
30
|
/**
|
|
31
|
-
* FAB
|
|
31
|
+
* FAB 的形状,此组件的不同形状之间只有颜色不一样。可选值包括:
|
|
32
32
|
*
|
|
33
33
|
* * `primary`:使用 Primary container 背景色
|
|
34
34
|
* * `surface`:使用 Surface container high 背景色
|
|
@@ -37,7 +37,7 @@ export declare class Fab extends ButtonBase {
|
|
|
37
37
|
*/
|
|
38
38
|
variant: /*使用 Primary container 背景色*/ 'primary' | /*使用 Surface container high 背景色*/ 'surface' | /*使用 Secondary container 背景色*/ 'secondary' | /*使用 Tertiary container 背景色*/ 'tertiary';
|
|
39
39
|
/**
|
|
40
|
-
* FAB
|
|
40
|
+
* FAB 的大小。可选值包括:
|
|
41
41
|
* * `normal`:普通大小 FAB
|
|
42
42
|
* * `small`:小型 FAB
|
|
43
43
|
* * `large`:大型 FAB
|
|
@@ -64,6 +64,11 @@ export declare class Fab extends ButtonBase {
|
|
|
64
64
|
private renderIcon;
|
|
65
65
|
private renderInner;
|
|
66
66
|
}
|
|
67
|
+
export interface FabEventMap {
|
|
68
|
+
focus: FocusEvent;
|
|
69
|
+
blur: FocusEvent;
|
|
70
|
+
invalid: CustomEvent<void>;
|
|
71
|
+
}
|
|
67
72
|
declare global {
|
|
68
73
|
interface HTMLElementTagNameMap {
|
|
69
74
|
'mdui-fab': Fab;
|
package/components/fab/index.js
CHANGED
|
@@ -26,20 +26,20 @@ import { style } from './style.js';
|
|
|
26
26
|
* @slot - 文本
|
|
27
27
|
* @slot icon - 图标
|
|
28
28
|
*
|
|
29
|
-
* @csspart button - 内部的
|
|
29
|
+
* @csspart button - 内部的 `<button>` 或 `<a>` 元素
|
|
30
30
|
* @csspart label - 右侧的文本
|
|
31
31
|
* @csspart icon - 左侧的图标
|
|
32
32
|
* @csspart loading - 加载中状态的 `<mdui-circular-progress>` 元素
|
|
33
33
|
*
|
|
34
|
-
* @cssprop --shape-corner-small - `size="small"`
|
|
35
|
-
* @cssprop --shape-corner-normal - `size="normal"`
|
|
36
|
-
* @cssprop --shape-corner-large - `size="large"`
|
|
34
|
+
* @cssprop --shape-corner-small - `size="small"` 时,组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
35
|
+
* @cssprop --shape-corner-normal - `size="normal"` 时,组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
36
|
+
* @cssprop --shape-corner-large - `size="large"` 时,组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
37
37
|
*/
|
|
38
38
|
let Fab = class Fab extends ButtonBase {
|
|
39
39
|
constructor() {
|
|
40
40
|
super(...arguments);
|
|
41
41
|
/**
|
|
42
|
-
* FAB
|
|
42
|
+
* FAB 的形状,此组件的不同形状之间只有颜色不一样。可选值包括:
|
|
43
43
|
*
|
|
44
44
|
* * `primary`:使用 Primary container 背景色
|
|
45
45
|
* * `surface`:使用 Surface container high 背景色
|
|
@@ -48,7 +48,7 @@ let Fab = class Fab extends ButtonBase {
|
|
|
48
48
|
*/
|
|
49
49
|
this.variant = 'primary';
|
|
50
50
|
/**
|
|
51
|
-
* FAB
|
|
51
|
+
* FAB 的大小。可选值包括:
|
|
52
52
|
* * `normal`:普通大小 FAB
|
|
53
53
|
* * `small`:小型 FAB
|
|
54
54
|
* * `large`:大型 FAB
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
2
2
|
import type { TemplateResult, CSSResultGroup } from 'lit';
|
|
3
3
|
/**
|
|
4
4
|
* @summary 图标组件
|
|
@@ -9,7 +9,7 @@ import type { TemplateResult, CSSResultGroup } from 'lit';
|
|
|
9
9
|
*
|
|
10
10
|
* @slot - `svg` 图标的内容
|
|
11
11
|
*/
|
|
12
|
-
export declare class Icon extends
|
|
12
|
+
export declare class Icon extends MduiElement<IconEventMap> {
|
|
13
13
|
static styles: CSSResultGroup;
|
|
14
14
|
/**
|
|
15
15
|
* Material Icons 图标名
|
|
@@ -22,6 +22,8 @@ export declare class Icon extends LitElement {
|
|
|
22
22
|
private readonly hasSlotController;
|
|
23
23
|
protected render(): TemplateResult;
|
|
24
24
|
}
|
|
25
|
+
export interface IconEventMap {
|
|
26
|
+
}
|
|
25
27
|
declare global {
|
|
26
28
|
interface HTMLElementTagNameMap {
|
|
27
29
|
'mdui-icon': Icon;
|