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,4 +1,4 @@
1
- import { LitElement } from 'lit';
1
+ import { MduiElement } from '@mdui/shared/base/mdui-element.js';
2
2
  import '../icon.js';
3
3
  import type { CSSResultGroup, TemplateResult } from 'lit';
4
4
  /**
@@ -8,40 +8,42 @@ import type { CSSResultGroup, TemplateResult } from 'lit';
8
8
  * <mdui-avatar src="https://avatars.githubusercontent.com/u/3030330?s=40&v=4"></mdui-avatar>
9
9
  * ```
10
10
  *
11
- * @slot - 自定义头像中的内容,可以为字母、汉字、`<img>` 元素、图标等
11
+ * @slot - 自定义头像内容,可以为字母、汉字、`<img>` 元素、图标等
12
12
  *
13
- * @csspart image - 使用图片头像时,组件内部的 `<img>` 元素
14
- * @csspart icon - 使用图标头像时,组件内部的 `<mdui-icon>` 元素
13
+ * @csspart image - 使用图片作为头像时,组件内部的 `<img>` 元素
14
+ * @csspart icon - 使用图标作为头像时,组件内部的 `<mdui-icon>` 元素
15
15
  *
16
- * @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐[引用设计令牌](/docs/2/styles/design-tokens#shape-corner)
16
+ * @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
17
17
  */
18
- export declare class Avatar extends LitElement {
18
+ export declare class Avatar extends MduiElement<AvatarEventMap> {
19
19
  static styles: CSSResultGroup;
20
20
  /**
21
- * 头像的图片地址
21
+ * 头像图片的 URL 地址
22
22
  */
23
23
  src?: string;
24
24
  /**
25
- * 图片如何适应容器框,同原生的 <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit" target="_blank">`object-fit`</a>。可选值为:
25
+ * 图片如何适应容器框,与原生的 [`object-fit`](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) 属性相同。可选值包括:
26
26
  *
27
- * * `contain`:保持原有尺寸比例。内容被缩放
28
- * * `cover`:保持原有尺寸比例。但部分内容可能被剪切
29
- * * `fill`:默认,不保证保持原有的比例,内容拉伸填充整个内容容器
30
- * * `none`:保留原有元素内容的长度和宽度,也就是说内容不会被重置
31
- * * `scale-down`:保持原有尺寸比例。内容的尺寸与 `none` 或 `contain` 中的一个相同,取决于它们两个之间谁得到的对象尺寸会更小一些
27
+ * * `contain`:保持图片原有尺寸比例,内容会被等比例缩放
28
+ * * `cover`:保持图片原有尺寸比例,但部分内容可能被剪切
29
+ * * `fill`:默认值,不保持图片原有尺寸比例,内容会被拉伸以填充整个容器
30
+ * * `none`:保留图片原有尺寸,内容不会被缩放或拉伸
31
+ * * `scale-down`:保持图片原有尺寸比例,内容尺寸与 `none` 或 `contain` 中较小的一个相同
32
32
  */
33
- fit?: /*保持原有尺寸比例。内容被缩放*/ 'contain' | /*保持原有尺寸比例。但部分内容可能被剪切*/ 'cover' | /*默认,不保证保持原有的比例,内容拉伸填充整个内容容器*/ 'fill' | /*保留原有元素内容的长度和宽度,也就是说内容不会被重置*/ 'none' | /*保持原有尺寸比例。内容的尺寸与 `none` 或 `contain` 中的一个相同,取决于它们两个之间谁得到的对象尺寸会更小一些*/ 'scale-down';
33
+ fit?: /*保持图片原有尺寸比例,内容会被等比例缩放*/ 'contain' | /*保持图片原有尺寸比例,但部分内容可能被剪切*/ 'cover' | /*默认值,不保持图片原有尺寸比例,内容会被拉伸以填充整个容器*/ 'fill' | /*保留图片原有尺寸,内容不会被缩放或拉伸*/ 'none' | /*保持图片原有尺寸比例,内容尺寸与 `none` 或 `contain` 中较小的一个相同*/ 'scale-down';
34
34
  /**
35
35
  * 头像的 Material Icons 图标名
36
36
  */
37
37
  icon?: string;
38
38
  /**
39
- * 描述头像的替换文本
39
+ * 头像的替代文本描述
40
40
  */
41
41
  label?: string;
42
42
  private readonly hasSlotController;
43
43
  protected render(): TemplateResult;
44
44
  }
45
+ export interface AvatarEventMap {
46
+ }
45
47
  declare global {
46
48
  interface HTMLElementTagNameMap {
47
49
  'mdui-avatar': Avatar;
@@ -1,8 +1,9 @@
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
4
  import { ifDefined } from 'lit/directives/if-defined.js';
5
5
  import { styleMap } from 'lit/directives/style-map.js';
6
+ import { MduiElement } from '@mdui/shared/base/mdui-element.js';
6
7
  import { HasSlotController } from '@mdui/shared/controllers/has-slot.js';
7
8
  import { nothingTemplate } from '@mdui/shared/helpers/template.js';
8
9
  import { componentStyle } from '@mdui/shared/lit-styles/component-style.js';
@@ -15,14 +16,14 @@ import { style } from './style.js';
15
16
  * <mdui-avatar src="https://avatars.githubusercontent.com/u/3030330?s=40&v=4"></mdui-avatar>
16
17
  * ```
17
18
  *
18
- * @slot - 自定义头像中的内容,可以为字母、汉字、`<img>` 元素、图标等
19
+ * @slot - 自定义头像内容,可以为字母、汉字、`<img>` 元素、图标等
19
20
  *
20
- * @csspart image - 使用图片头像时,组件内部的 `<img>` 元素
21
- * @csspart icon - 使用图标头像时,组件内部的 `<mdui-icon>` 元素
21
+ * @csspart image - 使用图片作为头像时,组件内部的 `<img>` 元素
22
+ * @csspart icon - 使用图标作为头像时,组件内部的 `<mdui-icon>` 元素
22
23
  *
23
- * @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐[引用设计令牌](/docs/2/styles/design-tokens#shape-corner)
24
+ * @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
24
25
  */
25
- let Avatar = class Avatar extends LitElement {
26
+ let Avatar = class Avatar extends MduiElement {
26
27
  constructor() {
27
28
  super(...arguments);
28
29
  this.hasSlotController = new HasSlotController(this, '[default]');
@@ -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,20 +7,23 @@ import type { CSSResultGroup, TemplateResult } from 'lit';
7
7
  * <mdui-badge>12</mdui-badge>
8
8
  * ```
9
9
  *
10
- * @slot - 显示的文本
10
+ * @slot - 徽标中显示的文本
11
11
  *
12
- * @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐[引用设计令牌](/docs/2/styles/design-tokens#shape-corner)
12
+ * @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
13
13
  */
14
- export declare class Badge extends LitElement {
14
+ export declare class Badge extends MduiElement<BadgeEventMap> {
15
15
  static styles: CSSResultGroup;
16
16
  /**
17
- * 徽标形状。可选值为:
18
- * * `small`:小型徽标,不显示文字
19
- * * `large`:大型徽标,会显示文字
17
+ * 徽标的形状。可选值包括:
18
+ *
19
+ * * `small`:小型徽标,不显示文本
20
+ * * `large`:大型徽标,会显示文本
20
21
  */
21
- variant: /*小型徽标,不显示文字*/ 'small' | /*大型徽标,会显示文字*/ 'large';
22
+ variant: /*小型徽标,不显示文本*/ 'small' | /*大型徽标,会显示文本*/ 'large';
22
23
  protected render(): TemplateResult;
23
24
  }
25
+ export interface BadgeEventMap {
26
+ }
24
27
  declare global {
25
28
  interface HTMLElementTagNameMap {
26
29
  'mdui-badge': Badge;
@@ -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 { nothingTemplate } from '@mdui/shared/helpers/template.js';
5
6
  import { componentStyle } from '@mdui/shared/lit-styles/component-style.js';
6
7
  import { style } from './style.js';
@@ -11,17 +12,18 @@ import { style } from './style.js';
11
12
  * <mdui-badge>12</mdui-badge>
12
13
  * ```
13
14
  *
14
- * @slot - 显示的文本
15
+ * @slot - 徽标中显示的文本
15
16
  *
16
- * @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐[引用设计令牌](/docs/2/styles/design-tokens#shape-corner)
17
+ * @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
17
18
  */
18
- let Badge = class Badge extends LitElement {
19
+ let Badge = class Badge extends MduiElement {
19
20
  constructor() {
20
21
  super(...arguments);
21
22
  /**
22
- * 徽标形状。可选值为:
23
- * * `small`:小型徽标,不显示文字
24
- * * `large`:大型徽标,会显示文字
23
+ * 徽标的形状。可选值包括:
24
+ *
25
+ * * `small`:小型徽标,不显示文本
26
+ * * `large`:大型徽标,会显示文本
25
27
  */
26
28
  this.variant = 'large';
27
29
  }
@@ -24,21 +24,22 @@ declare const BottomAppBar_base: import("@open-wc/dedupe-mixin").Constructor<imp
24
24
  *
25
25
  * @slot - 底部应用栏内部的元素
26
26
  *
27
- * @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐[引用设计令牌](/docs/2/styles/design-tokens#shape-corner)
28
- * @cssprop --z-index - 组件的 CSS `z-index` 值
27
+ * @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
28
+ * @cssprop --z-index - 组件的 CSS `z-index` 值
29
29
  */
30
- export declare class BottomAppBar extends BottomAppBar_base {
30
+ export declare class BottomAppBar extends BottomAppBar_base<BottomAppBarEventMap> {
31
31
  static styles: CSSResultGroup;
32
32
  /**
33
33
  * 是否隐藏
34
34
  */
35
35
  hide: boolean;
36
36
  /**
37
- * 是否使底部应用栏中的 [`<mdui-fab>`](/docs/2/components/fab) 组件脱离应用栏。若为 `true`,则在应用栏隐藏后,[`<mdui-fab>`](/docs/2/components/fab) 仍将停留在页面上
37
+ * 是否让底部应用栏中的 [`<mdui-fab>`](/docs/2/components/fab) 组件脱离应用栏。如果为 `true`,则当应用栏隐藏后,[`<mdui-fab>`](/docs/2/components/fab) 仍会停留在页面上
38
38
  */
39
39
  fabDetach: boolean;
40
40
  /**
41
41
  * 滚动行为。可选值为:
42
+ *
42
43
  * * `hide`:滚动时隐藏
43
44
  */
44
45
  scrollBehavior?: 'hide';
@@ -52,6 +53,12 @@ export declare class BottomAppBar extends BottomAppBar_base {
52
53
  */
53
54
  protected runScrollThreshold(isScrollingUp: boolean): void;
54
55
  }
56
+ export interface BottomAppBarEventMap {
57
+ show: CustomEvent<void>;
58
+ shown: CustomEvent<void>;
59
+ hide: CustomEvent<void>;
60
+ hidden: CustomEvent<void>;
61
+ }
55
62
  declare global {
56
63
  interface HTMLElementTagNameMap {
57
64
  'mdui-bottom-app-bar': BottomAppBar;
@@ -2,7 +2,6 @@ import { __decorate } from "tslib";
2
2
  import { html } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
4
  import { booleanConverter } from '@mdui/shared/helpers/decorator.js';
5
- import { emit } from '@mdui/shared/helpers/event.js';
6
5
  import { componentStyle } from '@mdui/shared/lit-styles/component-style.js';
7
6
  import { ScrollBehaviorMixin } from '@mdui/shared/mixins/scrollBehavior.js';
8
7
  import { LayoutItemBase } from '../layout/layout-item-base.js';
@@ -28,8 +27,8 @@ import { style } from './style.js';
28
27
  *
29
28
  * @slot - 底部应用栏内部的元素
30
29
  *
31
- * @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐[引用设计令牌](/docs/2/styles/design-tokens#shape-corner)
32
- * @cssprop --z-index - 组件的 CSS `z-index` 值
30
+ * @cssprop --shape-corner - 组件的圆角大小。可以指定一个具体的像素值;但更推荐引用[设计令牌](/docs/2/styles/design-tokens#shape-corner)
31
+ * @cssprop --z-index - 组件的 CSS `z-index` 值
33
32
  */
34
33
  let BottomAppBar = class BottomAppBar extends ScrollBehaviorMixin(LayoutItemBase) {
35
34
  constructor() {
@@ -39,7 +38,7 @@ let BottomAppBar = class BottomAppBar extends ScrollBehaviorMixin(LayoutItemBase
39
38
  */
40
39
  this.hide = false;
41
40
  /**
42
- * 是否使底部应用栏中的 [`<mdui-fab>`](/docs/2/components/fab) 组件脱离应用栏。若为 `true`,则在应用栏隐藏后,[`<mdui-fab>`](/docs/2/components/fab) 仍将停留在页面上
41
+ * 是否让底部应用栏中的 [`<mdui-fab>`](/docs/2/components/fab) 组件脱离应用栏。如果为 `true`,则当应用栏隐藏后,[`<mdui-fab>`](/docs/2/components/fab) 仍会停留在页面上
43
42
  */
44
43
  this.fabDetach = false;
45
44
  }
@@ -53,7 +52,7 @@ let BottomAppBar = class BottomAppBar extends ScrollBehaviorMixin(LayoutItemBase
53
52
  super.firstUpdated(_changedProperties);
54
53
  this.addEventListener('transitionend', (event) => {
55
54
  if (event.target === this) {
56
- emit(this, this.hide ? 'hidden' : 'shown');
55
+ this.emit(this.hide ? 'hidden' : 'shown');
57
56
  }
58
57
  });
59
58
  }
@@ -67,15 +66,15 @@ let BottomAppBar = class BottomAppBar extends ScrollBehaviorMixin(LayoutItemBase
67
66
  runScrollThreshold(isScrollingUp) {
68
67
  // 向下滚动
69
68
  if (!isScrollingUp && !this.hide) {
70
- const requestHide = emit(this, 'hide');
71
- if (!requestHide.defaultPrevented) {
69
+ const eventProceeded = this.emit('hide', { cancelable: true });
70
+ if (eventProceeded) {
72
71
  this.hide = true;
73
72
  }
74
73
  }
75
74
  // 向上滚动
76
75
  if (isScrollingUp && this.hide) {
77
- const requestShow = emit(this, 'show');
78
- if (!requestShow.defaultPrevented) {
76
+ const eventProceeded = this.emit('show', { cancelable: true });
77
+ if (eventProceeded) {
79
78
  this.hide = false;
80
79
  }
81
80
  }
@@ -1,2 +1,2 @@
1
1
  import { css } from 'lit';
2
- export const buttonBaseStyle = css `.button{position:relative;display:inline-flex;align-items:center;justify-content:center;height:100%;padding:0;overflow:hidden;color:inherit;font-size:inherit;font-family:inherit;letter-spacing:inherit;white-space:nowrap;text-align:center;text-decoration:none;vertical-align:middle;background:0 0;border:none;outline:0;cursor:inherit;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1;-webkit-user-drag:none}`;
2
+ export const buttonBaseStyle = css `.button{position:relative;display:inline-flex;align-items:center;justify-content:center;height:100%;padding:0;overflow:hidden;color:inherit;font-size:inherit;font-family:inherit;font-weight:inherit;letter-spacing:inherit;white-space:nowrap;text-align:center;text-decoration:none;vertical-align:middle;background:0 0;border:none;outline:0;cursor:inherit;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1;-webkit-user-drag:none}`;
@@ -1,4 +1,4 @@
1
- import { LitElement } from 'lit';
1
+ import { MduiElement } from '@mdui/shared/base/mdui-element.js';
2
2
  import '../circular-progress.js';
3
3
  import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
4
4
  type RenderButtonOptions = {
@@ -8,126 +8,125 @@ type RenderButtonOptions = {
8
8
  content?: TemplateResult | TemplateResult[];
9
9
  tabindex?: number;
10
10
  };
11
- declare const ButtonBase_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 LitElement;
12
- export declare class ButtonBase extends ButtonBase_base {
11
+ declare const ButtonBase_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;
12
+ export declare class ButtonBase<E> extends ButtonBase_base<E> {
13
13
  static styles: CSSResultGroup;
14
14
  /**
15
15
  * 是否禁用
16
16
  */
17
17
  disabled: boolean;
18
18
  /**
19
- * 是否为加载中状态
19
+ * 是否处于加载中状态
20
20
  */
21
21
  loading: boolean;
22
22
  /**
23
- * 按钮的名称,将与表单数据一起提交
23
+ * 按钮的名称,将与表单数据一起提交。
24
24
  *
25
- * **Note**:仅在未指定 `href` 属性时可用
25
+ * **Note**:仅在未设置 `href` 属性时,此属性才有效。
26
26
  */
27
27
  name: string;
28
28
  /**
29
- * 按钮的初始值,将与表单数据一起提交
29
+ * 按钮的初始值,将与表单数据一起提交。
30
30
  *
31
- * **Note**:仅在未指定 `href` 属性时可用
31
+ * **Note**:仅在未设置 `href` 属性时,此属性才有效。
32
32
  */
33
33
  value: string;
34
34
  /**
35
- * 按钮的类型。默认值为 `button`。可选值为:
35
+ * 按钮的类型。默认类型为 `button`。可选类型包括:
36
36
  *
37
- * * `submit`:点击按钮将表单数据提交给服务器
38
- * * `reset`:点击按钮将表单中所有组件重置为初始值
39
- * * `button`:按钮没有默认行为
37
+ * * `submit`:点击按钮会提交表单数据到服务器
38
+ * * `reset`:点击按钮会将表单中的所有字段重置为初始值
39
+ * * `button`:此类型的按钮没有默认行为
40
40
  *
41
- * **Note**:仅在未指定 `href` 属性时可用
41
+ * **Note**:仅在未指定 `href` 属性时,此属性才有效。
42
42
  */
43
43
  type: /*此按钮将表单数据提交给服务器*/ 'submit' | /*此按钮重置所有组件为初始值*/ 'reset' | /*此按钮没有默认行为*/ 'button';
44
44
  /**
45
- * 关联的 `form` 元素。此属性值必须为同一页面中的一个 `<form>` 元素的 `id` 属性。
45
+ * 关联的 `<form>` 元素。此属性值应为同一页面中的一个 `<form>` 元素的 `id`。
46
46
  *
47
- * 如果此属性未指定,则元素必须是 `form` 元素的后代。利用此属性,你可以将元素放置在页面中的任何位置,而不仅仅是作为 `form` 元素的后代。
47
+ * 如果未指定此属性,则该元素必须是 `<form>` 元素的子元素。通过此属性,你可以将元素放置在页面的任何位置,而不仅仅是 `<form>` 元素的子元素。
48
48
  *
49
- * **Note**:仅在未指定 `href` 属性时可用
49
+ * **Note**:仅在未指定 `href` 属性时,此属性才有效。
50
50
  */
51
51
  form?: string;
52
52
  /**
53
- *
54
53
  * 指定提交表单的 URL。
55
54
  *
56
- * 指定了该属性时,将覆盖 `form` 元素的 `action` 属性。
55
+ * 如果指定了此属性,将覆盖 `<form>` 元素的 `action` 属性。
57
56
  *
58
- * **Note**:仅在未指定 `href` 属性、且 `type="submit"` 时可用。
57
+ * **Note**:仅在未指定 `href` 属性且 `type="submit"` 时,此属性才有效。
59
58
  */
60
59
  formAction?: string;
61
60
  /**
62
- * 指定提交表单到服务器的内容类型。可选值为:
61
+ * 指定提交表单到服务器的内容类型。可选值包括:
63
62
  *
64
- * * `application/x-www-form-urlencoded`:未指定属性时的默认值
65
- * * `multipart/form-data`:当表单包含 `<input type="file">` 元素时使用此值
66
- * * `text/plain`:出现于 HTML5,用于调试
63
+ * * `application/x-www-form-urlencoded`:未指定该属性时的默认值
64
+ * * `multipart/form-data`:当表单包含 `<input type="file">` 元素时使用
65
+ * * `text/plain`:HTML5 新增,用于调试
67
66
  *
68
- * 指定了该属性时,将覆盖 `form` 元素的 `enctype` 属性。
67
+ * 如果指定了此属性,将覆盖 `<form>` 元素的 `enctype` 属性。
69
68
  *
70
- * **Note**:仅在未指定 `href` 属性、且 `type="submit"` 时可用
69
+ * **Note**:仅在未指定 `href` 属性且 `type="submit"` 时,此属性才有效。
71
70
  */
72
- formEnctype?: /*未指定属性时的默认值*/ 'application/x-www-form-urlencoded' | /*当表单包含 `<input type="file">` 元素时使用此值*/ 'multipart/form-data' | /*出现于 HTML5,用于调试*/ 'text/plain';
71
+ formEnctype?: /*未指定该属性时的默认值*/ 'application/x-www-form-urlencoded' | /*当表单包含 `<input type="file">` 元素时使用*/ 'multipart/form-data' | /*HTML5 新增,用于调试*/ 'text/plain';
73
72
  /**
74
- * 指定提交表单使用的 HTTP 方法。可选值为:
73
+ * 指定提交表单时使用的 HTTP 方法。可选值包括:
75
74
  *
76
- * * `post`:来自表单的数据被包含在表单内容中,被发送到服务器
77
- * * `get`:来自表单的数据以 `?` 作为分隔符被附加到 form 的 URI 属性中,得到的 URI 被发送到服务器。当表单没有副作用,且仅包含 ASCII 字符时使用这种方法
75
+ * * `post`:表单数据包含在表单内容中,发送到服务器
76
+ * * `get`:表单数据以 `?` 作为分隔符附加到表单的 URI 属性中,生成的 URI 发送到服务器。当表单没有副作用,并且仅包含 ASCII 字符时,使用此方法
78
77
  *
79
- * 指定了该属性时,将覆盖 `form` 元素的 `method` 属性。
78
+ * 如果设置了此属性,将覆盖 `<form>` 元素的 `method` 属性。
80
79
  *
81
- * **Note**:仅在未指定 `href` 属性、且 `type="submit"` 时可用。
80
+ * **Note**:仅在未设置 `href` 属性且 `type="submit"` 时,此属性才有效。
82
81
  */
83
- formMethod?: /*来自表单的数据被包含在表单内容中,被发送到服务器*/ 'post' | /*来自表单的数据以 `?` 作为分隔符被附加到 form 的 URI 属性中,得到的 URI 被发送到服务器。当表单没有副作用,且仅包含 ASCII 字符时使用这种方法*/ 'get';
82
+ formMethod?: /*表单数据包含在表单内容中,发送到服务器*/ 'post' | /*表单数据以 `?` 作为分隔符附加到表单的 URI 属性中,生成的 URI 发送到服务器。当表单没有副作用,并且仅包含 ASCII 字符时,使用此方法*/ 'get';
84
83
  /**
85
- * 指定了该属性时,表示当表单被提交时不需要验证。
84
+ * 如果设置了此属性,表单提交时将不执行表单验证。
86
85
  *
87
- * 指定了该属性时,将覆盖 `form` 元素的 `novalidate` 属性。
86
+ * 如果设置了此属性,将覆盖 `<form>` 元素的 `novalidate` 属性。
88
87
  *
89
- * **Note**:仅在未指定 `href` 属性、且 `type="submit"` 时可用。
88
+ * **Note**:仅在未设置 `href` 属性且 `type="submit"` 时,此属性才有效。
90
89
  */
91
90
  formNoValidate: boolean;
92
91
  /**
93
- * 在何处显示提交表单后接收到的响应。可选值为:
92
+ * 提交表单后接收到的响应应显示在何处。可选值包括:
94
93
  *
95
- * * `_self`:默认。在同一框架中打开
94
+ * * `_self`:默认选项,在当前框架中打开
96
95
  * * `_blank`:在新窗口中打开
97
96
  * * `_parent`:在父框架中打开
98
97
  * * `_top`:在整个窗口中打开
99
98
  *
100
- * 指定了该属性时,将覆盖 `form` 元素的 `target` 属性。
99
+ * 如果设置了此属性,将覆盖 `<form>` 元素的 `target` 属性。
101
100
  *
102
- * **Note**:仅在未指定 `href` 属性、且 `type="submit"` 时可用
101
+ * **Note**:仅在未设置 `href` 属性且 `type="submit"` 时,此属性才有效。
103
102
  */
104
- formTarget?: /*默认。在同一框架中打开*/ '_self' | /*在新窗口中打开*/ '_blank' | /*在父框架中打开*/ '_parent' | /*在整个窗口中打开*/ '_top';
103
+ formTarget?: /*默认选项,在当前框架中打开*/ '_self' | /*在新窗口中打开*/ '_blank' | /*在父框架中打开*/ '_parent' | /*在整个窗口中打开*/ '_top';
105
104
  private readonly formController;
106
105
  /**
107
- * 表单验证状态对象
106
+ * 表单验证状态对象,具体参见 [`ValidityState`](https://developer.mozilla.org/zh-CN/docs/Web/API/ValidityState)
108
107
  */
109
108
  get validity(): ValidityState | undefined;
110
109
  /**
111
- * 表单验证的错误提示信息
110
+ * 如果表单验证未通过,此属性将包含提示信息。如果验证通过,此属性将为空字符串
112
111
  */
113
112
  get validationMessage(): string | undefined;
114
113
  protected get rippleDisabled(): boolean;
115
114
  protected get focusElement(): HTMLElement | null;
116
115
  protected get focusDisabled(): boolean;
117
116
  /**
118
- * 检查表单字段是否验证通过。若未通过则返回 `false`,并触发 `invalid` 事件;若验证通过,则返回 `true`
117
+ * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true`
119
118
  */
120
119
  checkValidity(): boolean;
121
120
  /**
122
- * 检查表单字段是否验证通过。若未通过则返回 `false`,并触发 `invalid` 事件;若验证通过,则返回 `true`。
121
+ * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true`。
123
122
  *
124
- * 验证未通过时,还将在组件上显示未通过的提示。
123
+ * 如果验证未通过,还会在组件上显示验证失败的提示。
125
124
  */
126
125
  reportValidity(): boolean;
127
126
  /**
128
- * 设置自定义的错误提示文本。只要文本不为空,则表示字段验证未通过
127
+ * 设置自定义的错误提示文本。只要这个文本不为空,就表示字段未通过验证
129
128
  *
130
- * @param message 自定义的提示文本
129
+ * @param message 自定义的错误提示文本
131
130
  */
132
131
  setCustomValidity(message: string): void;
133
132
  protected firstUpdated(_changedProperties: PropertyValues): void;
@@ -1,11 +1,11 @@
1
1
  import { __decorate } from "tslib";
2
- import { LitElement, html } from 'lit';
2
+ import { html } from 'lit';
3
3
  import { property } from 'lit/decorators.js';
4
4
  import { ifDefined } from 'lit/directives/if-defined.js';
5
5
  import cc from 'classcat';
6
+ import { MduiElement } from '@mdui/shared/base/mdui-element.js';
6
7
  import { FormController } from '@mdui/shared/controllers/form.js';
7
8
  import { booleanConverter } from '@mdui/shared/helpers/decorator.js';
8
- import { emit } from '@mdui/shared/helpers/event.js';
9
9
  import { nothingTemplate } from '@mdui/shared/helpers/template.js';
10
10
  import { componentStyle } from '@mdui/shared/lit-styles/component-style.js';
11
11
  import { AnchorMixin } from '@mdui/shared/mixins/anchor.js';
@@ -13,7 +13,7 @@ import { FocusableMixin } from '@mdui/shared/mixins/focusable.js';
13
13
  import '../circular-progress.js';
14
14
  import { RippleMixin } from '../ripple/ripple-mixin.js';
15
15
  import { buttonBaseStyle } from './button-base-style.js';
16
- export class ButtonBase extends AnchorMixin(RippleMixin(FocusableMixin(LitElement))) {
16
+ export class ButtonBase extends AnchorMixin(RippleMixin(FocusableMixin(MduiElement))) {
17
17
  constructor() {
18
18
  super(...arguments);
19
19
  /**
@@ -21,43 +21,43 @@ export class ButtonBase extends AnchorMixin(RippleMixin(FocusableMixin(LitElemen
21
21
  */
22
22
  this.disabled = false;
23
23
  /**
24
- * 是否为加载中状态
24
+ * 是否处于加载中状态
25
25
  */
26
26
  this.loading = false;
27
27
  /**
28
- * 按钮的名称,将与表单数据一起提交
28
+ * 按钮的名称,将与表单数据一起提交。
29
29
  *
30
- * **Note**:仅在未指定 `href` 属性时可用
30
+ * **Note**:仅在未设置 `href` 属性时,此属性才有效。
31
31
  */
32
32
  this.name = '';
33
33
  /**
34
- * 按钮的初始值,将与表单数据一起提交
34
+ * 按钮的初始值,将与表单数据一起提交。
35
35
  *
36
- * **Note**:仅在未指定 `href` 属性时可用
36
+ * **Note**:仅在未设置 `href` 属性时,此属性才有效。
37
37
  */
38
38
  this.value = '';
39
39
  /**
40
- * 按钮的类型。默认值为 `button`。可选值为:
40
+ * 按钮的类型。默认类型为 `button`。可选类型包括:
41
41
  *
42
- * * `submit`:点击按钮将表单数据提交给服务器
43
- * * `reset`:点击按钮将表单中所有组件重置为初始值
44
- * * `button`:按钮没有默认行为
42
+ * * `submit`:点击按钮会提交表单数据到服务器
43
+ * * `reset`:点击按钮会将表单中的所有字段重置为初始值
44
+ * * `button`:此类型的按钮没有默认行为
45
45
  *
46
- * **Note**:仅在未指定 `href` 属性时可用
46
+ * **Note**:仅在未指定 `href` 属性时,此属性才有效。
47
47
  */
48
48
  this.type = 'button';
49
49
  /**
50
- * 指定了该属性时,表示当表单被提交时不需要验证。
50
+ * 如果设置了此属性,表单提交时将不执行表单验证。
51
51
  *
52
- * 指定了该属性时,将覆盖 `form` 元素的 `novalidate` 属性。
52
+ * 如果设置了此属性,将覆盖 `<form>` 元素的 `novalidate` 属性。
53
53
  *
54
- * **Note**:仅在未指定 `href` 属性、且 `type="submit"` 时可用。
54
+ * **Note**:仅在未设置 `href` 属性且 `type="submit"` 时,此属性才有效。
55
55
  */
56
56
  this.formNoValidate = false;
57
57
  this.formController = new FormController(this);
58
58
  }
59
59
  /**
60
- * 表单验证状态对象
60
+ * 表单验证状态对象,具体参见 [`ValidityState`](https://developer.mozilla.org/zh-CN/docs/Web/API/ValidityState)
61
61
  */
62
62
  get validity() {
63
63
  if (this.isButton()) {
@@ -65,7 +65,7 @@ export class ButtonBase extends AnchorMixin(RippleMixin(FocusableMixin(LitElemen
65
65
  }
66
66
  }
67
67
  /**
68
- * 表单验证的错误提示信息
68
+ * 如果表单验证未通过,此属性将包含提示信息。如果验证通过,此属性将为空字符串
69
69
  */
70
70
  get validationMessage() {
71
71
  if (this.isButton()) {
@@ -86,13 +86,14 @@ export class ButtonBase extends AnchorMixin(RippleMixin(FocusableMixin(LitElemen
86
86
  return this.disabled || this.loading;
87
87
  }
88
88
  /**
89
- * 检查表单字段是否验证通过。若未通过则返回 `false`,并触发 `invalid` 事件;若验证通过,则返回 `true`
89
+ * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true`
90
90
  */
91
91
  checkValidity() {
92
92
  if (this.isButton()) {
93
93
  const valid = this.focusElement.checkValidity();
94
94
  if (!valid) {
95
- emit(this, 'invalid', {
95
+ // @ts-ignore
96
+ this.emit('invalid', {
96
97
  bubbles: false,
97
98
  cancelable: true,
98
99
  composed: false,
@@ -103,15 +104,16 @@ export class ButtonBase extends AnchorMixin(RippleMixin(FocusableMixin(LitElemen
103
104
  return true;
104
105
  }
105
106
  /**
106
- * 检查表单字段是否验证通过。若未通过则返回 `false`,并触发 `invalid` 事件;若验证通过,则返回 `true`。
107
+ * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true`。
107
108
  *
108
- * 验证未通过时,还将在组件上显示未通过的提示。
109
+ * 如果验证未通过,还会在组件上显示验证失败的提示。
109
110
  */
110
111
  reportValidity() {
111
112
  if (this.isButton()) {
112
113
  const invalid = !this.focusElement.reportValidity();
113
114
  if (invalid) {
114
- emit(this, 'invalid', {
115
+ // @ts-ignore
116
+ this.emit('invalid', {
115
117
  bubbles: false,
116
118
  cancelable: true,
117
119
  composed: false,
@@ -123,9 +125,9 @@ export class ButtonBase extends AnchorMixin(RippleMixin(FocusableMixin(LitElemen
123
125
  return true;
124
126
  }
125
127
  /**
126
- * 设置自定义的错误提示文本。只要文本不为空,则表示字段验证未通过
128
+ * 设置自定义的错误提示文本。只要这个文本不为空,就表示字段未通过验证
127
129
  *
128
- * @param message 自定义的提示文本
130
+ * @param message 自定义的错误提示文本
129
131
  */
130
132
  setCustomValidity(message) {
131
133
  if (this.isButton()) {