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.
Files changed (118) hide show
  1. package/components/avatar/index.d.ts +17 -15
  2. package/components/avatar/index.js +7 -6
  3. package/components/badge/index.d.ts +11 -8
  4. package/components/badge/index.js +9 -7
  5. package/components/bottom-app-bar/index.d.ts +11 -4
  6. package/components/bottom-app-bar/index.js +8 -9
  7. package/components/button/button-base-style.js +1 -1
  8. package/components/button/button-base.d.ts +46 -47
  9. package/components/button/button-base.js +27 -25
  10. package/components/button/index.d.ts +19 -14
  11. package/components/button/index.js +12 -12
  12. package/components/button-icon/index.d.ts +15 -9
  13. package/components/button-icon/index.js +8 -9
  14. package/components/card/index.d.ts +15 -11
  15. package/components/card/index.js +10 -9
  16. package/components/checkbox/index.d.ts +30 -23
  17. package/components/checkbox/index.js +25 -25
  18. package/components/chip/index.d.ts +27 -20
  19. package/components/chip/index.js +19 -20
  20. package/components/circular-progress/index.d.ts +6 -4
  21. package/components/circular-progress/index.js +4 -3
  22. package/components/collapse/collapse-item.d.ts +17 -6
  23. package/components/collapse/collapse-item.js +7 -7
  24. package/components/collapse/collapse.d.ts +16 -11
  25. package/components/collapse/collapse.js +10 -10
  26. package/components/dialog/index.d.ts +22 -15
  27. package/components/dialog/index.js +23 -27
  28. package/components/divider/index.d.ts +7 -5
  29. package/components/divider/index.js +6 -5
  30. package/components/dropdown/index.d.ts +44 -37
  31. package/components/dropdown/index.js +50 -48
  32. package/components/fab/index.d.ts +12 -7
  33. package/components/fab/index.js +6 -6
  34. package/components/icon/index.d.ts +4 -2
  35. package/components/icon/index.js +3 -2
  36. package/components/layout/layout-item-base.d.ts +3 -2
  37. package/components/layout/layout-item-base.js +2 -2
  38. package/components/layout/layout-item.d.ts +11 -10
  39. package/components/layout/layout-item.js +6 -6
  40. package/components/layout/layout-main.d.ts +6 -4
  41. package/components/layout/layout-main.js +5 -4
  42. package/components/layout/layout.d.ts +6 -4
  43. package/components/layout/layout.js +5 -4
  44. package/components/linear-progress/index.d.ts +8 -6
  45. package/components/linear-progress/index.js +6 -5
  46. package/components/list/list-item-style.js +1 -1
  47. package/components/list/list-item.d.ts +24 -20
  48. package/components/list/list-item.js +10 -9
  49. package/components/list/list-subheader.d.ts +6 -4
  50. package/components/list/list-subheader.js +5 -4
  51. package/components/list/list.d.ts +5 -3
  52. package/components/list/list.js +4 -3
  53. package/components/menu/menu-item.d.ts +15 -7
  54. package/components/menu/menu-item.js +11 -15
  55. package/components/menu/menu.d.ts +20 -20
  56. package/components/menu/menu.js +13 -13
  57. package/components/navigation-bar/navigation-bar-item.d.ts +12 -8
  58. package/components/navigation-bar/navigation-bar-item.js +7 -6
  59. package/components/navigation-bar/navigation-bar.d.ts +17 -9
  60. package/components/navigation-bar/navigation-bar.js +15 -13
  61. package/components/navigation-drawer/index.d.ts +27 -21
  62. package/components/navigation-drawer/index.js +51 -38
  63. package/components/navigation-drawer/style.js +1 -1
  64. package/components/navigation-rail/navigation-rail-item.d.ts +13 -9
  65. package/components/navigation-rail/navigation-rail-item.js +7 -6
  66. package/components/navigation-rail/navigation-rail.d.ts +14 -12
  67. package/components/navigation-rail/navigation-rail.js +13 -12
  68. package/components/radio/radio-group.d.ts +20 -15
  69. package/components/radio/radio-group.js +21 -24
  70. package/components/radio/radio.d.ts +11 -6
  71. package/components/radio/radio.js +7 -7
  72. package/components/range-slider/index.d.ts +13 -8
  73. package/components/range-slider/index.js +10 -7
  74. package/components/ripple/index.d.ts +4 -2
  75. package/components/ripple/index.js +3 -2
  76. package/components/ripple/ripple-mixin.d.ts +1 -1
  77. package/components/ripple/ripple-mixin.js +0 -1
  78. package/components/segmented-button/segmented-button-group-style.js +1 -1
  79. package/components/segmented-button/segmented-button-group.d.ts +23 -22
  80. package/components/segmented-button/segmented-button-group.js +20 -23
  81. package/components/segmented-button/segmented-button.d.ts +9 -4
  82. package/components/segmented-button/segmented-button.js +3 -3
  83. package/components/select/index.d.ts +42 -35
  84. package/components/select/index.js +24 -25
  85. package/components/slider/index.d.ts +9 -2
  86. package/components/slider/index.js +5 -10
  87. package/components/slider/slider-base.d.ts +22 -18
  88. package/components/slider/slider-base.js +40 -21
  89. package/components/snackbar/index.d.ts +30 -23
  90. package/components/snackbar/index.js +25 -25
  91. package/components/switch/index.d.ts +24 -17
  92. package/components/switch/index.js +18 -18
  93. package/components/tabs/tab-panel.d.ts +7 -5
  94. package/components/tabs/tab-panel.js +5 -4
  95. package/components/tabs/tab.d.ts +13 -9
  96. package/components/tabs/tab.js +8 -7
  97. package/components/tabs/tabs.d.ts +24 -21
  98. package/components/tabs/tabs.js +24 -21
  99. package/components/text-field/index.d.ts +62 -54
  100. package/components/text-field/index.js +37 -37
  101. package/components/tooltip/index.d.ts +40 -33
  102. package/components/tooltip/index.js +45 -43
  103. package/components/top-app-bar/top-app-bar-title.d.ts +8 -6
  104. package/components/top-app-bar/top-app-bar-title.js +7 -6
  105. package/components/top-app-bar/top-app-bar.d.ts +12 -6
  106. package/components/top-app-bar/top-app-bar.js +9 -10
  107. package/css-data.en.json +2826 -0
  108. package/css-data.zh-cn.json +374 -367
  109. package/custom-elements.json +3844 -3824
  110. package/html-data.en.json +6551 -0
  111. package/html-data.zh-cn.json +1621 -1636
  112. package/jsx.en.d.ts +3303 -0
  113. package/jsx.zh-cn.d.ts +3351 -0
  114. package/mdui.esm.js +9 -9
  115. package/mdui.global.js +9 -9
  116. package/package.json +7 -5
  117. package/web-types.en.json +11718 -0
  118. package/web-types.zh-cn.json +3613 -3623
@@ -1,15 +1,15 @@
1
1
  import { __decorate } from "tslib";
2
- import { html, LitElement } from 'lit';
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 - 在对话框打开之前触发。可以通过调用 `event.preventDefault()` 阻止对话框打开
28
- * @event opened - 在对话框打开之后触发
29
- * @event close - 在对话框关闭之前触发。可以通过调用 `event.preventDefault()` 阻止对话框关闭
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 部分,其中包含了 icon 和 headline
43
- * @csspart icon - 顶部的图标,位于 header 中
44
- * @csspart headline - 顶部的标题,位于 header 中
45
- * @csspart body - 对话框的 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 - 组件的圆角大小。可以指定一个具体的像素值;但更推荐[引用设计令牌](/docs/2/styles/design-tokens#shape-corner)
50
- * @cssprop --z-index - 组件的 CSS `z-index` 值
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 LitElement {
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
- * 是否在按下 ESC 键时,关闭对话框
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 requestOpen = emit(this, 'open', {
108
- cancelable: true,
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(this, 'opened');
166
+ this.emit('opened');
169
167
  }
170
168
  }
171
169
  else {
172
- const requestClose = emit(this, 'close', {
173
- cancelable: true,
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(this, 'closed');
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(this, 'overlay-click');
228
+ this.emit('overlay-click');
233
229
  if (!this.closeOnOverlayClick) {
234
230
  return;
235
231
  }
@@ -1,4 +1,4 @@
1
- import { LitElement } from 'lit';
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 LitElement {
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, LitElement } from 'lit';
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 LitElement {
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 - dropdown 开始打开时,事件被触发。可以通过调用 `event.preventDefault()` 阻止 dropdown 打开
20
- * @event opened - dropdown 打开动画完成时,事件被触发
21
- * @event close - dropdown 开始关闭时,事件被触发。可以通过调用 `event.preventDefault()` 阻止 dropdown 关闭
22
- * @event closed - dropdown 关闭动画完成时,事件被触发
19
+ * @event open - 下拉组件开始打开时,事件被触发。可以通过调用 `event.preventDefault()` 阻止下拉组件打开
20
+ * @event opened - 下拉组件打开动画完成时,事件被触发
21
+ * @event close - 下拉组件开始关闭时,事件被触发。可以通过调用 `event.preventDefault()` 阻止下拉组件关闭
22
+ * @event closed - 下拉组件关闭动画完成时,事件被触发
23
23
  *
24
- * @slot - dropdown 的内容
25
- * @slot trigger - 触发 dropdown 的元素,例如 [`<mdui-button>`](/docs/2/components/button) 元素
24
+ * @slot - 下拉组件的内容
25
+ * @slot trigger - 触发下拉组件的元素,例如 [`<mdui-button>`](/docs/2/components/button) 元素
26
26
  *
27
- * @csspart trigger - 触发 dropdown 的元素的容器,即 `trigger` slot 的容器
28
- * @csspart panel - dropdown 内容的容器
27
+ * @csspart trigger - 触发下拉组件的元素的容器,即 `trigger` slot 的容器
28
+ * @csspart panel - 下拉组件内容的容器
29
29
  *
30
- * @cssprop --z-index - 组件的 CSS `z-index` 值
30
+ * @cssprop --z-index - 组件的 CSS `z-index` 值
31
31
  */
32
- export declare class Dropdown extends LitElement {
32
+ export declare class Dropdown extends MduiElement<DropdownEventMap> {
33
33
  static styles: CSSResultGroup;
34
34
  /**
35
- * dropdown 是否打开
35
+ * 是否打开下拉组件
36
36
  */
37
37
  open: boolean;
38
38
  /**
39
- * 是否禁用 dropdown
39
+ * 是否禁用下拉组件
40
40
  */
41
41
  disabled: boolean;
42
42
  /**
43
- * dropdown 的触发方式,支持传入多个值,用空格分隔。可选值为:
43
+ * 下拉组件的触发方式,支持多个值,用空格分隔。可选值包括:
44
44
  *
45
- * * `click`:点击时触发
45
+ * * `click`:点击触发
46
46
  * * `hover`:鼠标悬浮触发
47
- * * `focus`:聚焦时触发
48
- * * `contextmenu`:鼠标右键点击、或触摸长按时触发
49
- * * `manual`:使用了该值时,只能使用编程方式打开和关闭 dropdown,且不能再指定其他触发方式
47
+ * * `focus`:聚焦触发
48
+ * * `contextmenu`:鼠标右键点击、或触摸长按触发
49
+ * * `manual`:仅能通过编程方式打开和关闭下拉组件,不能再指定其他触发方式
50
50
  */
51
- trigger: /*点击时触发*/ 'click' | /*鼠标悬浮触发*/ 'hover' | /*聚焦时触发*/ 'focus' | /*鼠标右键点击、或触摸长按时触发*/ 'contextmenu' | /*使用了该值时,只能使用编程方式打开和关闭 dropdown,且不能再指定其他触发方式*/ 'manual' | string;
51
+ trigger: /*点击触发*/ 'click' | /*鼠标悬浮触发*/ 'hover' | /*聚焦触发*/ 'focus' | /*鼠标右键点击、或触摸长按触发*/ 'contextmenu' | /*仅能通过编程方式打开和关闭下拉组件,不能再指定其他触发方式*/ 'manual' | string;
52
52
  /**
53
- * dropdown 内容的位置。可选值为:
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' | /*位于上方,且左对齐*/ 'top-start' | /*位于上方,且居中对齐*/ 'top' | /*位于上方,且右对齐*/ 'top-end' | /*位于下方,且左对齐*/ 'bottom-start' | /*位于下方,且居中对齐*/ 'bottom' | /*位于下方,且右对齐*/ 'bottom-end' | /*位于左侧,且顶部对齐*/ 'left-start' | /*位于左侧,且居中对齐*/ 'left' | /*位于左侧,且底部对齐*/ 'left-end' | /*位于右侧,且顶部对齐*/ 'right-start' | /*位于右侧,且居中对齐*/ 'right' | /*位于右侧,且底部对齐*/ 'right-end';
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
- * 在点击 [`<mdui-menu-item>`](/docs/2/components/menu#menu-item-api) 元素后,是否仍保持 dropdown 为打开状态
71
+ * 点击 [`<mdui-menu-item>`](/docs/2/components/menu#menu-item-api) 后,下拉组件是否保持打开状态
72
72
  */
73
73
  stayOpenOnClick: boolean;
74
74
  /**
75
- * 通过 hover 触发 dropdown 打开时的延时,单位为毫秒
75
+ * 鼠标悬浮触发下拉组件打开的延时,单位为毫秒
76
76
  */
77
77
  openDelay: number;
78
78
  /**
79
- * 通过 hover 触发 dropdown 关闭时的延时,单位为毫秒
79
+ * 鼠标悬浮触发下拉组件关闭的延时,单位为毫秒
80
80
  */
81
81
  closeDelay: number;
82
82
  /**
83
- * 是否在触发 dropdown 时的光标所在的位置打开 dropdown。通常用于在打开鼠标右键菜单时使用
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, LitElement } from 'lit';
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 - dropdown 开始打开时,事件被触发。可以通过调用 `event.preventDefault()` 阻止 dropdown 打开
33
- * @event opened - dropdown 打开动画完成时,事件被触发
34
- * @event close - dropdown 开始关闭时,事件被触发。可以通过调用 `event.preventDefault()` 阻止 dropdown 关闭
35
- * @event closed - dropdown 关闭动画完成时,事件被触发
33
+ * @event open - 下拉组件开始打开时,事件被触发。可以通过调用 `event.preventDefault()` 阻止下拉组件打开
34
+ * @event opened - 下拉组件打开动画完成时,事件被触发
35
+ * @event close - 下拉组件开始关闭时,事件被触发。可以通过调用 `event.preventDefault()` 阻止下拉组件关闭
36
+ * @event closed - 下拉组件关闭动画完成时,事件被触发
36
37
  *
37
- * @slot - dropdown 的内容
38
- * @slot trigger - 触发 dropdown 的元素,例如 [`<mdui-button>`](/docs/2/components/button) 元素
38
+ * @slot - 下拉组件的内容
39
+ * @slot trigger - 触发下拉组件的元素,例如 [`<mdui-button>`](/docs/2/components/button) 元素
39
40
  *
40
- * @csspart trigger - 触发 dropdown 的元素的容器,即 `trigger` slot 的容器
41
- * @csspart panel - dropdown 内容的容器
41
+ * @csspart trigger - 触发下拉组件的元素的容器,即 `trigger` slot 的容器
42
+ * @csspart panel - 下拉组件内容的容器
42
43
  *
43
- * @cssprop --z-index - 组件的 CSS `z-index` 值
44
+ * @cssprop --z-index - 组件的 CSS `z-index` 值
44
45
  */
45
- let Dropdown = class Dropdown extends LitElement {
46
+ let Dropdown = class Dropdown extends MduiElement {
46
47
  constructor() {
47
48
  super();
48
49
  /**
49
- * dropdown 是否打开
50
+ * 是否打开下拉组件
50
51
  */
51
52
  this.open = false;
52
53
  /**
53
- * 是否禁用 dropdown
54
+ * 是否禁用下拉组件
54
55
  */
55
56
  this.disabled = false;
56
57
  /**
57
- * dropdown 的触发方式,支持传入多个值,用空格分隔。可选值为:
58
+ * 下拉组件的触发方式,支持多个值,用空格分隔。可选值包括:
58
59
  *
59
- * * `click`:点击时触发
60
+ * * `click`:点击触发
60
61
  * * `hover`:鼠标悬浮触发
61
- * * `focus`:聚焦时触发
62
- * * `contextmenu`:鼠标右键点击、或触摸长按时触发
63
- * * `manual`:使用了该值时,只能使用编程方式打开和关闭 dropdown,且不能再指定其他触发方式
62
+ * * `focus`:聚焦触发
63
+ * * `contextmenu`:鼠标右键点击、或触摸长按触发
64
+ * * `manual`:仅能通过编程方式打开和关闭下拉组件,不能再指定其他触发方式
64
65
  */
65
66
  this.trigger = 'click';
66
67
  /**
67
- * dropdown 内容的位置。可选值为:
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
- * 在点击 [`<mdui-menu-item>`](/docs/2/components/menu#menu-item-api) 元素后,是否仍保持 dropdown 为打开状态
86
+ * 点击 [`<mdui-menu-item>`](/docs/2/components/menu#menu-item-api) 后,下拉组件是否保持打开状态
86
87
  */
87
88
  this.stayOpenOnClick = false;
88
89
  /**
89
- * 通过 hover 触发 dropdown 打开时的延时,单位为毫秒
90
+ * 鼠标悬浮触发下拉组件打开的延时,单位为毫秒
90
91
  */
91
92
  this.openDelay = 150;
92
93
  /**
93
- * 通过 hover 触发 dropdown 关闭时的延时,单位为毫秒
94
+ * 鼠标悬浮触发下拉组件关闭的延时,单位为毫秒
94
95
  */
95
96
  this.closeDelay = 150;
96
97
  /**
97
- * 是否在触发 dropdown 时的光标所在的位置打开 dropdown。通常用于在打开鼠标右键菜单时使用
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 requestOpen = emit(this, 'open', {
143
- cancelable: true,
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(this, 'opened');
171
+ this.emit('opened');
173
172
  }
174
173
  }
175
174
  else {
176
- const requestClose = emit(this, 'close', {
177
- cancelable: true,
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(this, 'closed');
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
- window.addEventListener('scroll', this.onWindowScroll);
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
- window.removeEventListener('scroll', this.onWindowScroll);
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 - 内部的 `button``a` 元素
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"` 时,组件的圆角大小。可以指定一个具体的像素值;但更推荐[引用设计令牌](/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)
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;
@@ -26,20 +26,20 @@ import { style } from './style.js';
26
26
  * @slot - 文本
27
27
  * @slot icon - 图标
28
28
  *
29
- * @csspart button - 内部的 `button``a` 元素
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"` 时,组件的圆角大小。可以指定一个具体的像素值;但更推荐[引用设计令牌](/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)
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 { LitElement } from 'lit';
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 LitElement {
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;