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,18 +1,18 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
2
1
|
import '@mdui/jq/methods/css.js';
|
|
3
2
|
import '@mdui/jq/methods/height.js';
|
|
4
3
|
import '@mdui/jq/methods/innerHeight.js';
|
|
5
4
|
import '@mdui/jq/methods/innerWidth.js';
|
|
6
5
|
import '@mdui/jq/methods/width.js';
|
|
7
6
|
import '@mdui/jq/static/contains.js';
|
|
7
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
8
8
|
import '@mdui/shared/icons/arrow-right.js';
|
|
9
9
|
import '@mdui/shared/icons/check.js';
|
|
10
10
|
import '../icon.js';
|
|
11
11
|
import type { Ripple } from '../ripple/index.js';
|
|
12
12
|
import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
|
|
13
|
-
declare const MenuItem_base: import("@open-wc/dedupe-mixin").Constructor<import("@mdui/shared/mixins/anchor.js").AnchorMixinInterface> & import("@open-wc/dedupe-mixin").Constructor<import("../ripple/ripple-mixin.js").RippleMixinInterface> & import("@open-wc/dedupe-mixin").Constructor<import("@mdui/shared/mixins/focusable.js").FocusableMixinInterface> & typeof
|
|
13
|
+
declare const MenuItem_base: import("@open-wc/dedupe-mixin").Constructor<import("@mdui/shared/mixins/anchor.js").AnchorMixinInterface> & import("@open-wc/dedupe-mixin").Constructor<import("../ripple/ripple-mixin.js").RippleMixinInterface> & import("@open-wc/dedupe-mixin").Constructor<import("@mdui/shared/mixins/focusable.js").FocusableMixinInterface> & typeof MduiElement;
|
|
14
14
|
/**
|
|
15
|
-
* @summary
|
|
15
|
+
* @summary 菜单项组件。需配合 `<mdui-menu>` 组件使用
|
|
16
16
|
*
|
|
17
17
|
* ```html
|
|
18
18
|
* <mdui-menu>
|
|
@@ -44,20 +44,20 @@ declare const MenuItem_base: import("@open-wc/dedupe-mixin").Constructor<import(
|
|
|
44
44
|
* @csspart selected-icon - 选中状态的图标
|
|
45
45
|
* @csspart submenu - 子菜单元素
|
|
46
46
|
*/
|
|
47
|
-
export declare class MenuItem extends MenuItem_base {
|
|
47
|
+
export declare class MenuItem extends MenuItem_base<MenuItemEventMap> {
|
|
48
48
|
static styles: CSSResultGroup;
|
|
49
49
|
/**
|
|
50
|
-
*
|
|
50
|
+
* 菜单项的值
|
|
51
51
|
*/
|
|
52
52
|
value?: string;
|
|
53
53
|
/**
|
|
54
|
-
*
|
|
54
|
+
* 是否禁用菜单项
|
|
55
55
|
*/
|
|
56
56
|
disabled: boolean;
|
|
57
57
|
/**
|
|
58
58
|
* 左侧的 Material Icons 图标名。也可以通过 `slot="icon"` 设置
|
|
59
59
|
*
|
|
60
|
-
*
|
|
60
|
+
* 如果左侧不需要显示图标,但需要预留一个图标的位置,可传入空字符串进行占位
|
|
61
61
|
*/
|
|
62
62
|
icon?: string;
|
|
63
63
|
/**
|
|
@@ -116,6 +116,14 @@ export declare class MenuItem extends MenuItem_base {
|
|
|
116
116
|
private updateSubmenuPositioner;
|
|
117
117
|
private renderInner;
|
|
118
118
|
}
|
|
119
|
+
export interface MenuItemEventMap {
|
|
120
|
+
focus: FocusEvent;
|
|
121
|
+
blur: FocusEvent;
|
|
122
|
+
'submenu-open': CustomEvent<void>;
|
|
123
|
+
'submenu-opened': CustomEvent<void>;
|
|
124
|
+
'submenu-close': CustomEvent<void>;
|
|
125
|
+
'submenu-closed': CustomEvent<void>;
|
|
126
|
+
}
|
|
119
127
|
declare global {
|
|
120
128
|
interface HTMLElementTagNameMap {
|
|
121
129
|
'mdui-menu-item': MenuItem;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { html
|
|
2
|
+
import { html } from 'lit';
|
|
3
3
|
import { customElement, property, state } from 'lit/decorators.js';
|
|
4
4
|
import { createRef, ref } from 'lit/directives/ref.js';
|
|
5
5
|
import { when } from 'lit/directives/when.js';
|
|
@@ -12,12 +12,12 @@ import '@mdui/jq/methods/innerWidth.js';
|
|
|
12
12
|
import '@mdui/jq/methods/width.js';
|
|
13
13
|
import { isUndefined } from '@mdui/jq/shared/helper.js';
|
|
14
14
|
import '@mdui/jq/static/contains.js';
|
|
15
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
15
16
|
import { DefinedController } from '@mdui/shared/controllers/defined.js';
|
|
16
17
|
import { HasSlotController } from '@mdui/shared/controllers/has-slot.js';
|
|
17
18
|
import { watch } from '@mdui/shared/decorators/watch.js';
|
|
18
19
|
import { animateTo, stopAnimations } from '@mdui/shared/helpers/animate.js';
|
|
19
20
|
import { booleanConverter } from '@mdui/shared/helpers/decorator.js';
|
|
20
|
-
import { emit } from '@mdui/shared/helpers/event.js';
|
|
21
21
|
import { getDuration, getEasing } from '@mdui/shared/helpers/motion.js';
|
|
22
22
|
import { nothingTemplate } from '@mdui/shared/helpers/template.js';
|
|
23
23
|
import { uniqueId } from '@mdui/shared/helpers/uniqueId.js';
|
|
@@ -30,7 +30,7 @@ import '../icon.js';
|
|
|
30
30
|
import { RippleMixin } from '../ripple/ripple-mixin.js';
|
|
31
31
|
import { menuItemStyle } from './menu-item-style.js';
|
|
32
32
|
/**
|
|
33
|
-
* @summary
|
|
33
|
+
* @summary 菜单项组件。需配合 `<mdui-menu>` 组件使用
|
|
34
34
|
*
|
|
35
35
|
* ```html
|
|
36
36
|
* <mdui-menu>
|
|
@@ -62,11 +62,11 @@ import { menuItemStyle } from './menu-item-style.js';
|
|
|
62
62
|
* @csspart selected-icon - 选中状态的图标
|
|
63
63
|
* @csspart submenu - 子菜单元素
|
|
64
64
|
*/
|
|
65
|
-
let MenuItem = class MenuItem extends AnchorMixin(RippleMixin(FocusableMixin(
|
|
65
|
+
let MenuItem = class MenuItem extends AnchorMixin(RippleMixin(FocusableMixin(MduiElement))) {
|
|
66
66
|
constructor() {
|
|
67
67
|
super();
|
|
68
68
|
/**
|
|
69
|
-
*
|
|
69
|
+
* 是否禁用菜单项
|
|
70
70
|
*/
|
|
71
71
|
this.disabled = false;
|
|
72
72
|
/**
|
|
@@ -128,10 +128,8 @@ let MenuItem = class MenuItem extends AnchorMixin(RippleMixin(FocusableMixin(Lit
|
|
|
128
128
|
// 要区分是否首次渲染,首次渲染时不触发事件,不执行动画;非首次渲染,触发事件,执行动画
|
|
129
129
|
if (this.submenuOpen) {
|
|
130
130
|
if (hasUpdated) {
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
});
|
|
134
|
-
if (requestOpen.defaultPrevented) {
|
|
131
|
+
const eventProceeded = this.emit('submenu-open', { cancelable: true });
|
|
132
|
+
if (!eventProceeded) {
|
|
135
133
|
return;
|
|
136
134
|
}
|
|
137
135
|
}
|
|
@@ -150,14 +148,12 @@ let MenuItem = class MenuItem extends AnchorMixin(RippleMixin(FocusableMixin(Lit
|
|
|
150
148
|
}),
|
|
151
149
|
]);
|
|
152
150
|
if (hasUpdated) {
|
|
153
|
-
emit(
|
|
151
|
+
this.emit('submenu-opened');
|
|
154
152
|
}
|
|
155
153
|
}
|
|
156
154
|
else {
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
});
|
|
160
|
-
if (requestClose.defaultPrevented) {
|
|
155
|
+
const eventProceeded = this.emit('submenu-close', { cancelable: true });
|
|
156
|
+
if (!eventProceeded) {
|
|
161
157
|
return;
|
|
162
158
|
}
|
|
163
159
|
const duration = getDuration(this, 'short4');
|
|
@@ -169,7 +165,7 @@ let MenuItem = class MenuItem extends AnchorMixin(RippleMixin(FocusableMixin(Lit
|
|
|
169
165
|
if (this.submenuRef.value) {
|
|
170
166
|
this.submenuRef.value.hidden = true;
|
|
171
167
|
}
|
|
172
|
-
emit(
|
|
168
|
+
this.emit('submenu-closed');
|
|
173
169
|
}
|
|
174
170
|
}
|
|
175
171
|
connectedCallback() {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
2
1
|
import '@mdui/jq/methods/add.js';
|
|
3
2
|
import '@mdui/jq/methods/children.js';
|
|
4
3
|
import '@mdui/jq/methods/find.js';
|
|
@@ -6,6 +5,7 @@ import '@mdui/jq/methods/get.js';
|
|
|
6
5
|
import '@mdui/jq/methods/is.js';
|
|
7
6
|
import '@mdui/jq/methods/parent.js';
|
|
8
7
|
import '@mdui/jq/methods/parents.js';
|
|
8
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
9
9
|
import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
|
|
10
10
|
/**
|
|
11
11
|
* 键盘快捷键:
|
|
@@ -15,7 +15,7 @@ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
|
|
|
15
15
|
* * `Enter` - 包含子菜单时,打开子菜单;为链接时,跳转链接
|
|
16
16
|
* * `Escape` - 子菜单已打开时,关闭子菜单
|
|
17
17
|
*
|
|
18
|
-
* @summary
|
|
18
|
+
* @summary 菜单组件。需配合 `<mdui-menu-item>` 组件使用
|
|
19
19
|
*
|
|
20
20
|
* ```html
|
|
21
21
|
* <mdui-menu>
|
|
@@ -24,49 +24,46 @@ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
|
|
|
24
24
|
* </mdui-menu>
|
|
25
25
|
* ```
|
|
26
26
|
*
|
|
27
|
-
* @event change -
|
|
27
|
+
* @event change - 菜单项选中状态变化时触发
|
|
28
28
|
*
|
|
29
29
|
* @slot - 子菜单项(`<mdui-menu-item>`)、分割线([`<mdui-divider>`](/docs/2/components/divider))等元素
|
|
30
30
|
*
|
|
31
|
-
* @cssprop --shape-corner -
|
|
31
|
+
* @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
32
32
|
*/
|
|
33
|
-
export declare class Menu extends
|
|
33
|
+
export declare class Menu extends MduiElement<MenuEventMap> {
|
|
34
34
|
static styles: CSSResultGroup;
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
36
|
+
* 菜单项的可选状态。默认不可选。可选值包括:
|
|
37
37
|
*
|
|
38
|
-
* * `single
|
|
39
|
-
* * `multiple
|
|
38
|
+
* * `single`:单选
|
|
39
|
+
* * `multiple`:多选
|
|
40
40
|
*/
|
|
41
|
-
selects?:
|
|
41
|
+
selects?: /*单选*/ 'single' | /*多选*/ 'multiple';
|
|
42
42
|
/**
|
|
43
|
-
* 当前选中的 `<mdui-menu-item>`
|
|
43
|
+
* 当前选中的 `<mdui-menu-item>` 的值。
|
|
44
44
|
*
|
|
45
|
-
* Note
|
|
46
|
-
* 该属性的 HTML 属性始终为字符串,且仅在 `selects="single"` 时可以通过 HTML 属性设置初始值;
|
|
47
|
-
* 该属性的 JavaScript 属性值在 `selects="single"` 时为字符串、在 `selects="multiple"` 时为字符串数组。
|
|
48
|
-
* 所以,在 `selects="multiple"` 时,如果要修改该值,只能通过修改 JavaScript 属性值实现。
|
|
45
|
+
* **Note**:该属性的 HTML 属性始终为字符串,仅在 `selects="single"` 时可通过 HTML 属性设置初始值;该属性的 JavaScript 属性值在 `selects="single"` 时为字符串,在 `selects="multiple"` 时为字符串数组。因此,在 `selects="multiple"` 时,若要修改该值,只能通过修改 JavaScript 属性值实现。
|
|
49
46
|
*/
|
|
50
47
|
value?: string | string[];
|
|
51
48
|
/**
|
|
52
|
-
*
|
|
49
|
+
* 菜单项是否使用紧凑布局
|
|
53
50
|
*/
|
|
54
51
|
dense: boolean;
|
|
55
52
|
/**
|
|
56
|
-
*
|
|
53
|
+
* 子菜单的触发方式,支持多个值,用空格分隔。可选值包括:
|
|
57
54
|
*
|
|
58
55
|
* * `click`:点击菜单项时打开子菜单
|
|
59
56
|
* * `hover`:鼠标悬浮到菜单项上时打开子菜单
|
|
60
57
|
* * `focus`:聚焦到菜单项上时打开子菜单
|
|
61
|
-
* * `manual
|
|
58
|
+
* * `manual`:仅能通过编程方式打开和关闭子菜单,不能再指定其他触发方式
|
|
62
59
|
*/
|
|
63
|
-
submenuTrigger: /*点击菜单项时打开子菜单*/ 'click' | /*鼠标悬浮到菜单项上时打开子菜单*/ 'hover' | /*聚焦到菜单项上时打开子菜单*/ 'focus' |
|
|
60
|
+
submenuTrigger: /*点击菜单项时打开子菜单*/ 'click' | /*鼠标悬浮到菜单项上时打开子菜单*/ 'hover' | /*聚焦到菜单项上时打开子菜单*/ 'focus' | /*仅能通过编程方式打开和关闭子菜单,不能再指定其他触发方式*/ 'manual' | string;
|
|
64
61
|
/**
|
|
65
|
-
*
|
|
62
|
+
* 鼠标悬浮触发子菜单打开的延时,单位毫秒
|
|
66
63
|
*/
|
|
67
64
|
submenuOpenDelay: number;
|
|
68
65
|
/**
|
|
69
|
-
*
|
|
66
|
+
* 鼠标悬浮触发子菜单关闭的延时,单位毫秒
|
|
70
67
|
*/
|
|
71
68
|
submenuCloseDelay: number;
|
|
72
69
|
private selectedKeys;
|
|
@@ -107,6 +104,9 @@ export declare class Menu extends LitElement {
|
|
|
107
104
|
private onClick;
|
|
108
105
|
private onKeyDown;
|
|
109
106
|
}
|
|
107
|
+
export interface MenuEventMap {
|
|
108
|
+
change: CustomEvent<void>;
|
|
109
|
+
}
|
|
110
110
|
declare global {
|
|
111
111
|
interface HTMLElementTagNameMap {
|
|
112
112
|
'mdui-menu': Menu;
|
package/components/menu/menu.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { html
|
|
2
|
+
import { html } from 'lit';
|
|
3
3
|
import { customElement, property, queryAssignedElements, state, } from 'lit/decorators.js';
|
|
4
4
|
import { $ } from '@mdui/jq/$.js';
|
|
5
5
|
import '@mdui/jq/methods/add.js';
|
|
@@ -10,12 +10,12 @@ import '@mdui/jq/methods/is.js';
|
|
|
10
10
|
import '@mdui/jq/methods/parent.js';
|
|
11
11
|
import '@mdui/jq/methods/parents.js';
|
|
12
12
|
import { isString, isUndefined } from '@mdui/jq/shared/helper.js';
|
|
13
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
13
14
|
import { DefinedController } from '@mdui/shared/controllers/defined.js';
|
|
14
15
|
import { watch } from '@mdui/shared/decorators/watch.js';
|
|
15
16
|
import { arraysEqualIgnoreOrder } from '@mdui/shared/helpers/array.js';
|
|
16
17
|
import { booleanConverter } from '@mdui/shared/helpers/decorator.js';
|
|
17
18
|
import { delay } from '@mdui/shared/helpers/delay.js';
|
|
18
|
-
import { emit } from '@mdui/shared/helpers/event.js';
|
|
19
19
|
import { componentStyle } from '@mdui/shared/lit-styles/component-style.js';
|
|
20
20
|
import { menuStyle } from './menu-style.js';
|
|
21
21
|
/**
|
|
@@ -26,7 +26,7 @@ import { menuStyle } from './menu-style.js';
|
|
|
26
26
|
* * `Enter` - 包含子菜单时,打开子菜单;为链接时,跳转链接
|
|
27
27
|
* * `Escape` - 子菜单已打开时,关闭子菜单
|
|
28
28
|
*
|
|
29
|
-
* @summary
|
|
29
|
+
* @summary 菜单组件。需配合 `<mdui-menu-item>` 组件使用
|
|
30
30
|
*
|
|
31
31
|
* ```html
|
|
32
32
|
* <mdui-menu>
|
|
@@ -35,34 +35,34 @@ import { menuStyle } from './menu-style.js';
|
|
|
35
35
|
* </mdui-menu>
|
|
36
36
|
* ```
|
|
37
37
|
*
|
|
38
|
-
* @event change -
|
|
38
|
+
* @event change - 菜单项选中状态变化时触发
|
|
39
39
|
*
|
|
40
40
|
* @slot - 子菜单项(`<mdui-menu-item>`)、分割线([`<mdui-divider>`](/docs/2/components/divider))等元素
|
|
41
41
|
*
|
|
42
|
-
* @cssprop --shape-corner -
|
|
42
|
+
* @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
43
43
|
*/
|
|
44
|
-
let Menu = class Menu extends
|
|
44
|
+
let Menu = class Menu extends MduiElement {
|
|
45
45
|
constructor() {
|
|
46
46
|
super(...arguments);
|
|
47
47
|
/**
|
|
48
|
-
*
|
|
48
|
+
* 菜单项是否使用紧凑布局
|
|
49
49
|
*/
|
|
50
50
|
this.dense = false;
|
|
51
51
|
/**
|
|
52
|
-
*
|
|
52
|
+
* 子菜单的触发方式,支持多个值,用空格分隔。可选值包括:
|
|
53
53
|
*
|
|
54
54
|
* * `click`:点击菜单项时打开子菜单
|
|
55
55
|
* * `hover`:鼠标悬浮到菜单项上时打开子菜单
|
|
56
56
|
* * `focus`:聚焦到菜单项上时打开子菜单
|
|
57
|
-
* * `manual
|
|
57
|
+
* * `manual`:仅能通过编程方式打开和关闭子菜单,不能再指定其他触发方式
|
|
58
58
|
*/
|
|
59
59
|
this.submenuTrigger = 'click hover';
|
|
60
60
|
/**
|
|
61
|
-
*
|
|
61
|
+
* 鼠标悬浮触发子菜单打开的延时,单位毫秒
|
|
62
62
|
*/
|
|
63
63
|
this.submenuOpenDelay = 200;
|
|
64
64
|
/**
|
|
65
|
-
*
|
|
65
|
+
* 鼠标悬浮触发子菜单关闭的延时,单位毫秒
|
|
66
66
|
*/
|
|
67
67
|
this.submenuCloseDelay = 200;
|
|
68
68
|
// 因为 menu-item 的 value 可能会重复,所有在每一个 menu-item 元素上都加了一个唯一的 key 属性,通过 selectedKeys 来记录选中状态的 key
|
|
@@ -145,7 +145,7 @@ let Menu = class Menu extends LitElement {
|
|
|
145
145
|
const value = this.isMultiple ? values : values[0] || undefined;
|
|
146
146
|
this.setValue(value);
|
|
147
147
|
if (!this.isInitial) {
|
|
148
|
-
emit(
|
|
148
|
+
this.emit('change');
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
async onValueChange() {
|
|
@@ -334,7 +334,7 @@ let Menu = class Menu extends LitElement {
|
|
|
334
334
|
}
|
|
335
335
|
const target = event.target;
|
|
336
336
|
const item = target.closest('mdui-menu-item');
|
|
337
|
-
if (item
|
|
337
|
+
if (!item || item.disabled) {
|
|
338
338
|
return;
|
|
339
339
|
}
|
|
340
340
|
this.lastActiveItem = item;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
2
2
|
import '../icon.js';
|
|
3
3
|
import type { Ripple } from '../ripple/index.js';
|
|
4
4
|
import type { CSSResultGroup, TemplateResult } from 'lit';
|
|
5
|
-
declare const NavigationBarItem_base: import("@open-wc/dedupe-mixin").Constructor<import("@mdui/shared/mixins/anchor.js").AnchorMixinInterface> & import("@open-wc/dedupe-mixin").Constructor<import("../ripple/ripple-mixin.js").RippleMixinInterface> & import("@open-wc/dedupe-mixin").Constructor<import("@mdui/shared/mixins/focusable.js").FocusableMixinInterface> & typeof
|
|
5
|
+
declare const NavigationBarItem_base: import("@open-wc/dedupe-mixin").Constructor<import("@mdui/shared/mixins/anchor.js").AnchorMixinInterface> & import("@open-wc/dedupe-mixin").Constructor<import("../ripple/ripple-mixin.js").RippleMixinInterface> & import("@open-wc/dedupe-mixin").Constructor<import("@mdui/shared/mixins/focusable.js").FocusableMixinInterface> & typeof MduiElement;
|
|
6
6
|
/**
|
|
7
|
-
* @summary
|
|
7
|
+
* @summary 底部导航栏项组件。需配合 `<mdui-navigation-bar>` 组件使用
|
|
8
8
|
*
|
|
9
9
|
* ```html
|
|
10
10
|
* <mdui-navigation-bar>
|
|
@@ -14,7 +14,7 @@ declare const NavigationBarItem_base: import("@open-wc/dedupe-mixin").Constructo
|
|
|
14
14
|
* </mdui-navigation-bar>
|
|
15
15
|
* ```
|
|
16
16
|
*
|
|
17
|
-
* @slot -
|
|
17
|
+
* @slot - 导航项文本
|
|
18
18
|
* @slot icon - 图标
|
|
19
19
|
* @slot active-icon - 激活状态的图标元素
|
|
20
20
|
* @slot badge - 徽标
|
|
@@ -27,11 +27,11 @@ declare const NavigationBarItem_base: import("@open-wc/dedupe-mixin").Constructo
|
|
|
27
27
|
* @csspart badge - 徽标
|
|
28
28
|
* @csspart icon - 图标
|
|
29
29
|
* @csspart active-icon - 激活状态的图标
|
|
30
|
-
* @csspart label -
|
|
30
|
+
* @csspart label - 导航项文本
|
|
31
31
|
*
|
|
32
|
-
* @cssprop --shape-corner-indicator -
|
|
32
|
+
* @cssprop --shape-corner-indicator - 指示器的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
33
33
|
*/
|
|
34
|
-
export declare class NavigationBarItem extends NavigationBarItem_base {
|
|
34
|
+
export declare class NavigationBarItem extends NavigationBarItem_base<NavigationBarItemEventMap> {
|
|
35
35
|
static styles: CSSResultGroup;
|
|
36
36
|
/**
|
|
37
37
|
* 未激活状态的 Material Icons 图标名。也可以通过 `slot="icon"` 设置
|
|
@@ -42,7 +42,7 @@ export declare class NavigationBarItem extends NavigationBarItem_base {
|
|
|
42
42
|
*/
|
|
43
43
|
activeIcon?: string;
|
|
44
44
|
/**
|
|
45
|
-
*
|
|
45
|
+
* 导航项的值
|
|
46
46
|
*/
|
|
47
47
|
value?: string;
|
|
48
48
|
/**
|
|
@@ -68,6 +68,10 @@ export declare class NavigationBarItem extends NavigationBarItem_base {
|
|
|
68
68
|
protected render(): TemplateResult;
|
|
69
69
|
private renderInner;
|
|
70
70
|
}
|
|
71
|
+
export interface NavigationBarItemEventMap {
|
|
72
|
+
focus: FocusEvent;
|
|
73
|
+
blur: FocusEvent;
|
|
74
|
+
}
|
|
71
75
|
declare global {
|
|
72
76
|
interface HTMLElementTagNameMap {
|
|
73
77
|
'mdui-navigation-bar-item': NavigationBarItem;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { html
|
|
2
|
+
import { html } from 'lit';
|
|
3
3
|
import { customElement, property, state } from 'lit/decorators.js';
|
|
4
4
|
import { createRef, ref } from 'lit/directives/ref.js';
|
|
5
5
|
import cc from 'classcat';
|
|
6
|
+
import { MduiElement } from '@mdui/shared/base/mdui-element.js';
|
|
6
7
|
import { HasSlotController } from '@mdui/shared/controllers/has-slot.js';
|
|
7
8
|
import { booleanConverter } from '@mdui/shared/helpers/decorator.js';
|
|
8
9
|
import { nothingTemplate } from '@mdui/shared/helpers/template.js';
|
|
@@ -14,7 +15,7 @@ import '../icon.js';
|
|
|
14
15
|
import { RippleMixin } from '../ripple/ripple-mixin.js';
|
|
15
16
|
import { navigationBarItemStyle } from './navigation-bar-item-style.js';
|
|
16
17
|
/**
|
|
17
|
-
* @summary
|
|
18
|
+
* @summary 底部导航栏项组件。需配合 `<mdui-navigation-bar>` 组件使用
|
|
18
19
|
*
|
|
19
20
|
* ```html
|
|
20
21
|
* <mdui-navigation-bar>
|
|
@@ -24,7 +25,7 @@ import { navigationBarItemStyle } from './navigation-bar-item-style.js';
|
|
|
24
25
|
* </mdui-navigation-bar>
|
|
25
26
|
* ```
|
|
26
27
|
*
|
|
27
|
-
* @slot -
|
|
28
|
+
* @slot - 导航项文本
|
|
28
29
|
* @slot icon - 图标
|
|
29
30
|
* @slot active-icon - 激活状态的图标元素
|
|
30
31
|
* @slot badge - 徽标
|
|
@@ -37,11 +38,11 @@ import { navigationBarItemStyle } from './navigation-bar-item-style.js';
|
|
|
37
38
|
* @csspart badge - 徽标
|
|
38
39
|
* @csspart icon - 图标
|
|
39
40
|
* @csspart active-icon - 激活状态的图标
|
|
40
|
-
* @csspart label -
|
|
41
|
+
* @csspart label - 导航项文本
|
|
41
42
|
*
|
|
42
|
-
* @cssprop --shape-corner-indicator -
|
|
43
|
+
* @cssprop --shape-corner-indicator - 指示器的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
43
44
|
*/
|
|
44
|
-
let NavigationBarItem = class NavigationBarItem extends AnchorMixin(RippleMixin(FocusableMixin(
|
|
45
|
+
let NavigationBarItem = class NavigationBarItem extends AnchorMixin(RippleMixin(FocusableMixin(MduiElement))) {
|
|
45
46
|
constructor() {
|
|
46
47
|
super(...arguments);
|
|
47
48
|
/**
|
|
@@ -5,7 +5,7 @@ import type { ScrollPaddingPosition } from '@mdui/shared/mixins/scrollBehavior.j
|
|
|
5
5
|
import type { CSSResultGroup, TemplateResult } from 'lit';
|
|
6
6
|
declare const NavigationBar_base: import("@open-wc/dedupe-mixin").Constructor<import("@mdui/shared/mixins/scrollBehavior.js").ScrollBehaviorMixinInterface> & typeof LayoutItemBase;
|
|
7
7
|
/**
|
|
8
|
-
* @summary
|
|
8
|
+
* @summary 底部导航栏组件。需配合 `<mdui-navigation-bar-item>` 组件使用
|
|
9
9
|
*
|
|
10
10
|
* ```html
|
|
11
11
|
* <mdui-navigation-bar>
|
|
@@ -23,30 +23,31 @@ declare const NavigationBar_base: import("@open-wc/dedupe-mixin").Constructor<im
|
|
|
23
23
|
*
|
|
24
24
|
* @slot - `<mdui-navigation-bar-item>` 组件
|
|
25
25
|
*
|
|
26
|
-
* @cssprop --shape-corner -
|
|
27
|
-
* @cssprop --z-index - 组件的 CSS
|
|
26
|
+
* @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
27
|
+
* @cssprop --z-index - 组件的 CSS `z-index` 值
|
|
28
28
|
*/
|
|
29
|
-
export declare class NavigationBar extends NavigationBar_base {
|
|
29
|
+
export declare class NavigationBar extends NavigationBar_base<NavigationBarEventMap> {
|
|
30
30
|
static styles: CSSResultGroup;
|
|
31
31
|
/**
|
|
32
32
|
* 是否隐藏
|
|
33
33
|
*/
|
|
34
34
|
hide: boolean;
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
36
|
+
* 文本的可视状态。可选值包括:
|
|
37
37
|
*
|
|
38
|
-
* * `auto
|
|
39
|
-
* * `selected
|
|
38
|
+
* * `auto`:当选项小于等于3个时,始终显示文本;当选项大于3个时,仅显示选中状态的文本
|
|
39
|
+
* * `selected`:仅在选中状态显示文本
|
|
40
40
|
* * `labeled`:始终显示文本
|
|
41
41
|
* * `unlabeled`:始终不显示文本
|
|
42
42
|
*/
|
|
43
|
-
labelVisibility:
|
|
43
|
+
labelVisibility: /*当选项小于等于3个时,始终显示文本;当选项大于3个时,仅显示选中状态的文本*/ 'auto' | /*仅在选中状态显示文本*/ 'selected' | /*始终显示文本*/ 'labeled' | /*始终不显示文本*/ 'unlabeled';
|
|
44
44
|
/**
|
|
45
45
|
* 当前选中的 `<mdui-navigation-bar-item>` 的值
|
|
46
46
|
*/
|
|
47
47
|
value?: string;
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
49
|
+
* 滚动行为。可选值包括:
|
|
50
|
+
*
|
|
50
51
|
* * `hide`:滚动时隐藏
|
|
51
52
|
*/
|
|
52
53
|
scrollBehavior?: 'hide';
|
|
@@ -70,6 +71,13 @@ export declare class NavigationBar extends NavigationBar_base {
|
|
|
70
71
|
private updateItems;
|
|
71
72
|
private onSlotChange;
|
|
72
73
|
}
|
|
74
|
+
export interface NavigationBarEventMap {
|
|
75
|
+
change: CustomEvent<void>;
|
|
76
|
+
show: CustomEvent<void>;
|
|
77
|
+
shown: CustomEvent<void>;
|
|
78
|
+
hide: CustomEvent<void>;
|
|
79
|
+
hidden: CustomEvent<void>;
|
|
80
|
+
}
|
|
73
81
|
declare global {
|
|
74
82
|
interface HTMLElementTagNameMap {
|
|
75
83
|
'mdui-navigation-bar': NavigationBar;
|
|
@@ -4,13 +4,12 @@ import { customElement, property, queryAssignedElements, state, } from 'lit/deco
|
|
|
4
4
|
import { DefinedController } from '@mdui/shared/controllers/defined.js';
|
|
5
5
|
import { watch } from '@mdui/shared/decorators/watch.js';
|
|
6
6
|
import { booleanConverter } from '@mdui/shared/helpers/decorator.js';
|
|
7
|
-
import { emit } from '@mdui/shared/helpers/event.js';
|
|
8
7
|
import { componentStyle } from '@mdui/shared/lit-styles/component-style.js';
|
|
9
8
|
import { ScrollBehaviorMixin } from '@mdui/shared/mixins/scrollBehavior.js';
|
|
10
9
|
import { LayoutItemBase } from '../layout/layout-item-base.js';
|
|
11
10
|
import { navigationBarStyle } from './navigation-bar-style.js';
|
|
12
11
|
/**
|
|
13
|
-
* @summary
|
|
12
|
+
* @summary 底部导航栏组件。需配合 `<mdui-navigation-bar-item>` 组件使用
|
|
14
13
|
*
|
|
15
14
|
* ```html
|
|
16
15
|
* <mdui-navigation-bar>
|
|
@@ -28,8 +27,8 @@ import { navigationBarStyle } from './navigation-bar-style.js';
|
|
|
28
27
|
*
|
|
29
28
|
* @slot - `<mdui-navigation-bar-item>` 组件
|
|
30
29
|
*
|
|
31
|
-
* @cssprop --shape-corner -
|
|
32
|
-
* @cssprop --z-index - 组件的 CSS
|
|
30
|
+
* @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
|
|
31
|
+
* @cssprop --z-index - 组件的 CSS `z-index` 值
|
|
33
32
|
*/
|
|
34
33
|
let NavigationBar = class NavigationBar extends ScrollBehaviorMixin(LayoutItemBase) {
|
|
35
34
|
constructor() {
|
|
@@ -39,10 +38,10 @@ let NavigationBar = class NavigationBar extends ScrollBehaviorMixin(LayoutItemBa
|
|
|
39
38
|
*/
|
|
40
39
|
this.hide = false;
|
|
41
40
|
/**
|
|
42
|
-
*
|
|
41
|
+
* 文本的可视状态。可选值包括:
|
|
43
42
|
*
|
|
44
|
-
* * `auto
|
|
45
|
-
* * `selected
|
|
43
|
+
* * `auto`:当选项小于等于3个时,始终显示文本;当选项大于3个时,仅显示选中状态的文本
|
|
44
|
+
* * `selected`:仅在选中状态显示文本
|
|
46
45
|
* * `labeled`:始终显示文本
|
|
47
46
|
* * `unlabeled`:始终不显示文本
|
|
48
47
|
*/
|
|
@@ -67,7 +66,7 @@ let NavigationBar = class NavigationBar extends ScrollBehaviorMixin(LayoutItemBa
|
|
|
67
66
|
const item = this.items.find((item) => item.key === this.activeKey);
|
|
68
67
|
this.value = item?.value;
|
|
69
68
|
if (!this.isInitial) {
|
|
70
|
-
emit(
|
|
69
|
+
this.emit('change');
|
|
71
70
|
}
|
|
72
71
|
}
|
|
73
72
|
async onValueChange() {
|
|
@@ -85,7 +84,7 @@ let NavigationBar = class NavigationBar extends ScrollBehaviorMixin(LayoutItemBa
|
|
|
85
84
|
super.firstUpdated(_changedProperties);
|
|
86
85
|
this.addEventListener('transitionend', (event) => {
|
|
87
86
|
if (event.target === this) {
|
|
88
|
-
emit(this
|
|
87
|
+
this.emit(this.hide ? 'hidden' : 'shown');
|
|
89
88
|
}
|
|
90
89
|
});
|
|
91
90
|
}
|
|
@@ -99,15 +98,15 @@ let NavigationBar = class NavigationBar extends ScrollBehaviorMixin(LayoutItemBa
|
|
|
99
98
|
runScrollThreshold(isScrollingUp) {
|
|
100
99
|
// 向下滚动
|
|
101
100
|
if (!isScrollingUp && !this.hide) {
|
|
102
|
-
const
|
|
103
|
-
if (
|
|
101
|
+
const eventProceeded = this.emit('hide', { cancelable: true });
|
|
102
|
+
if (eventProceeded) {
|
|
104
103
|
this.hide = true;
|
|
105
104
|
}
|
|
106
105
|
}
|
|
107
106
|
// 向上滚动
|
|
108
107
|
if (isScrollingUp && this.hide) {
|
|
109
|
-
const
|
|
110
|
-
if (
|
|
108
|
+
const eventProceeded = this.emit('show', { cancelable: true });
|
|
109
|
+
if (eventProceeded) {
|
|
111
110
|
this.hide = false;
|
|
112
111
|
}
|
|
113
112
|
}
|
|
@@ -119,6 +118,9 @@ let NavigationBar = class NavigationBar extends ScrollBehaviorMixin(LayoutItemBa
|
|
|
119
118
|
}
|
|
120
119
|
const target = event.target;
|
|
121
120
|
const item = target.closest('mdui-navigation-bar-item');
|
|
121
|
+
if (!item) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
122
124
|
this.activeKey = item.key;
|
|
123
125
|
this.isInitial = false;
|
|
124
126
|
this.updateItems();
|