@momentum-design/components 0.15.2 → 0.15.3

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.
@@ -1,6 +1,6 @@
1
1
  import { CSSResult, PropertyValueMap } from 'lit';
2
- import { Component } from '../../models';
3
- import type { ButtonColor, ButtonType, ButtonVariant, PillButtonSize, IconButtonSize } from './button.types';
2
+ import type { ButtonColor, ButtonVariant, PillButtonSize, IconButtonSize } from './button.types';
3
+ import Buttonsimple from '../buttonsimple';
4
4
  /**
5
5
  * `mdc-button` is a component that can be configured in various ways to suit different use cases.
6
6
  *
@@ -33,31 +33,7 @@ import type { ButtonColor, ButtonType, ButtonVariant, PillButtonSize, IconButton
33
33
  *
34
34
  * @slot - Text label of the button.
35
35
  */
36
- declare class Button extends Component {
37
- /**
38
- * The button's active state indicates whether it is currently toggled on (active) or off (inactive).
39
- * When the active state is true, the button is considered to be in an active state, meaning it is toggled on.
40
- * Conversely, when the active state is false, the button is in an inactive state, indicating it is toggled off.
41
- * @default false
42
- */
43
- active: boolean;
44
- /**
45
- * Indicates whether the button is disabled.
46
- * The button is currently disabled for user interaction; it is not focusable or clickable.
47
- * @default false
48
- */
49
- disabled: boolean;
50
- /**
51
- * Indicates whether the button is soft disabled.
52
- * When set to `true`, the button appears visually disabled but still allows
53
- * focus, click, and keyboard actions to be passed through.
54
- *
55
- * **Important:** When using soft disabled, consumers must ensure that
56
- * the button behaves like a disabled button, allowing only focus and
57
- * preventing any interactions (clicks or keyboard actions) from triggering unintended actions.
58
- * @default false
59
- */
60
- softDisabled: boolean;
36
+ declare class Button extends Buttonsimple {
61
37
  /**
62
38
  * The name of the icon to display as a prefix.
63
39
  * The icon is displayed on the left side of the button.
@@ -102,23 +78,10 @@ declare class Button extends Component {
102
78
  * @default button
103
79
  */
104
80
  role: string;
105
- /**
106
- * This property defines the type attribute for the button element.
107
- * The type attribute specifies the behavior of the button when it is clicked.
108
- * - **submit**: The button submits the form data to the server.
109
- * - **reset**: The button resets the form data to its initial state.
110
- * - **button**: The button does nothing when clicked.
111
- * @default button
112
- */
113
- type: ButtonType;
114
81
  /** @internal */
115
82
  private typeInternal;
116
83
  /** @internal */
117
84
  private iconSize;
118
- /**
119
- * @internal
120
- */
121
- private prevTabindex;
122
85
  /**
123
86
  * @internal
124
87
  */
@@ -127,15 +90,7 @@ declare class Button extends Component {
127
90
  * @internal
128
91
  */
129
92
  private prevPostfixIcon?;
130
- /** @internal */
131
- static formAssociated: boolean;
132
- /** @internal */
133
- private internals;
134
- /** @internal */
135
- get form(): HTMLFormElement | null;
136
- constructor();
137
93
  update(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
138
- private executeAction;
139
94
  /**
140
95
  * Modifies the icon name based on the active state.
141
96
  * If the button is active, the icon name is suffixed with '-filled'.
@@ -168,49 +123,6 @@ declare class Button extends Component {
168
123
  * @param color - The color to set.
169
124
  */
170
125
  private setColor;
171
- /**
172
- * Sets the aria-pressed attribute based on the active state.
173
- *
174
- * @param element - The target element.
175
- * @param active - The active state.
176
- */
177
- private setAriaPressed;
178
- /**
179
- * Sets the soft-disabled attribute for the button.
180
- * When soft-disabled, the button looks to be disabled but remains focusable and clickable.
181
- * Also sets/removes aria-disabled attribute.
182
- *
183
- * @param element - The button element.
184
- * @param softDisabled - The soft-disabled state.
185
- */
186
- private setSoftDisabled;
187
- /**
188
- * Sets the disabled attribute for the button.
189
- * When disabled, the button is not focusable or clickable, and tabindex is set to -1.
190
- * The previous tabindex is stored and restored when enabled.
191
- * Also sets/removes aria-disabled attribute.
192
- *
193
- * @param element - The button element.
194
- * @param disabled - The disabled state.
195
- */
196
- private setDisabled;
197
- private triggerClickEvent;
198
- /**
199
- * Handles the keydown event on the button.
200
- * If the key is 'Enter' or 'Space', the button is pressed.
201
- * If the key is 'Enter', the button is pressed. The native HTML button works in the same way.
202
- *
203
- * @param event - The keyboard event.
204
- */
205
- private handleKeyDown;
206
- /**
207
- * Handles the keyup event on the button.
208
- * If the key is 'Enter' or 'Space', the button is clicked.
209
- * If the key is 'Space', the button is pressed. The native HTML button works in the same way.
210
- *
211
- * @param event - The keyboard event.
212
- */
213
- private handleKeyUp;
214
126
  /**
215
127
  * Infers the type of button based on the presence of slot and/or prefix and postfix icons.
216
128
  * @param slot - default slot of button
@@ -10,9 +10,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  import { html } from 'lit';
11
11
  import { property, state } from 'lit/decorators.js';
12
12
  import styles from './button.styles';
13
- import { Component } from '../../models';
14
13
  import { BUTTON_COLORS, BUTTON_TYPE_INTERNAL, BUTTON_VARIANTS, DEFAULTS, ICON_BUTTON_SIZES, PILL_BUTTON_SIZES, } from './button.constants';
15
14
  import { getIconNameWithoutStyle, getIconSize } from './button.utils';
15
+ import Buttonsimple from '../buttonsimple';
16
16
  /**
17
17
  * `mdc-button` is a component that can be configured in various ways to suit different use cases.
18
18
  *
@@ -45,37 +45,9 @@ import { getIconNameWithoutStyle, getIconSize } from './button.utils';
45
45
  *
46
46
  * @slot - Text label of the button.
47
47
  */
48
- class Button extends Component {
49
- /** @internal */
50
- get form() {
51
- return this.internals.form;
52
- }
48
+ class Button extends Buttonsimple {
53
49
  constructor() {
54
- super();
55
- /**
56
- * The button's active state indicates whether it is currently toggled on (active) or off (inactive).
57
- * When the active state is true, the button is considered to be in an active state, meaning it is toggled on.
58
- * Conversely, when the active state is false, the button is in an inactive state, indicating it is toggled off.
59
- * @default false
60
- */
61
- this.active = false;
62
- /**
63
- * Indicates whether the button is disabled.
64
- * The button is currently disabled for user interaction; it is not focusable or clickable.
65
- * @default false
66
- */
67
- this.disabled = false;
68
- /**
69
- * Indicates whether the button is soft disabled.
70
- * When set to `true`, the button appears visually disabled but still allows
71
- * focus, click, and keyboard actions to be passed through.
72
- *
73
- * **Important:** When using soft disabled, consumers must ensure that
74
- * the button behaves like a disabled button, allowing only focus and
75
- * preventing any interactions (clicks or keyboard actions) from triggering unintended actions.
76
- * @default false
77
- */
78
- this.softDisabled = false;
50
+ super(...arguments);
79
51
  /**
80
52
  * There are 3 variants of button: primary, secondary, tertiary. They are styled differently.
81
53
  * - **Primary**: Solid background color.
@@ -110,39 +82,14 @@ class Button extends Component {
110
82
  * @default button
111
83
  */
112
84
  this.role = 'button';
113
- /**
114
- * This property defines the type attribute for the button element.
115
- * The type attribute specifies the behavior of the button when it is clicked.
116
- * - **submit**: The button submits the form data to the server.
117
- * - **reset**: The button resets the form data to its initial state.
118
- * - **button**: The button does nothing when clicked.
119
- * @default button
120
- */
121
- this.type = DEFAULTS.TYPE;
122
85
  /** @internal */
123
86
  this.typeInternal = DEFAULTS.TYPE_INTERNAL;
124
87
  /** @internal */
125
88
  this.iconSize = 1;
126
- /**
127
- * @internal
128
- */
129
- this.prevTabindex = 0;
130
- this.addEventListener('click', this.executeAction.bind(this));
131
- this.addEventListener('keydown', this.handleKeyDown.bind(this));
132
- this.addEventListener('keyup', this.handleKeyUp.bind(this));
133
- /** @internal */
134
- this.internals = this.attachInternals();
135
89
  }
136
90
  update(changedProperties) {
137
91
  super.update(changedProperties);
138
- if (changedProperties.has('disabled')) {
139
- this.setDisabled(this, this.disabled);
140
- }
141
- if (changedProperties.has('softDisabled')) {
142
- this.setSoftDisabled(this, this.softDisabled);
143
- }
144
92
  if (changedProperties.has('active')) {
145
- this.setAriaPressed(this, this.active);
146
93
  this.modifyIconName(this.active);
147
94
  }
148
95
  if (changedProperties.has('size')) {
@@ -162,14 +109,6 @@ class Button extends Component {
162
109
  this.inferButtonType();
163
110
  }
164
111
  }
165
- executeAction() {
166
- if (this.type === 'submit' && this.internals.form) {
167
- this.internals.form.requestSubmit();
168
- }
169
- if (this.type === 'reset' && this.internals.form) {
170
- this.internals.form.reset();
171
- }
172
- }
173
112
  /**
174
113
  * Modifies the icon name based on the active state.
175
114
  * If the button is active, the icon name is suffixed with '-filled'.
@@ -238,95 +177,6 @@ class Button extends Component {
238
177
  this.setAttribute('color', color);
239
178
  }
240
179
  }
241
- /**
242
- * Sets the aria-pressed attribute based on the active state.
243
- *
244
- * @param element - The target element.
245
- * @param active - The active state.
246
- */
247
- setAriaPressed(element, active) {
248
- if (active) {
249
- element.setAttribute('aria-pressed', 'true');
250
- }
251
- else {
252
- element.setAttribute('aria-pressed', 'false');
253
- }
254
- }
255
- /**
256
- * Sets the soft-disabled attribute for the button.
257
- * When soft-disabled, the button looks to be disabled but remains focusable and clickable.
258
- * Also sets/removes aria-disabled attribute.
259
- *
260
- * @param element - The button element.
261
- * @param softDisabled - The soft-disabled state.
262
- */
263
- setSoftDisabled(element, softDisabled) {
264
- if (softDisabled) {
265
- element.setAttribute('aria-disabled', 'true');
266
- }
267
- else {
268
- element.setAttribute('aria-disabled', 'false');
269
- }
270
- }
271
- /**
272
- * Sets the disabled attribute for the button.
273
- * When disabled, the button is not focusable or clickable, and tabindex is set to -1.
274
- * The previous tabindex is stored and restored when enabled.
275
- * Also sets/removes aria-disabled attribute.
276
- *
277
- * @param element - The button element.
278
- * @param disabled - The disabled state.
279
- */
280
- setDisabled(element, disabled) {
281
- if (disabled) {
282
- element.setAttribute('aria-disabled', 'true');
283
- this.prevTabindex = this.tabIndex;
284
- this.tabIndex = -1;
285
- }
286
- else {
287
- this.tabIndex = this.prevTabindex;
288
- element.removeAttribute('aria-disabled');
289
- }
290
- }
291
- triggerClickEvent() {
292
- const clickEvent = new MouseEvent('click', {
293
- bubbles: true,
294
- cancelable: true,
295
- view: window,
296
- });
297
- this.dispatchEvent(clickEvent);
298
- this.executeAction();
299
- }
300
- /**
301
- * Handles the keydown event on the button.
302
- * If the key is 'Enter' or 'Space', the button is pressed.
303
- * If the key is 'Enter', the button is pressed. The native HTML button works in the same way.
304
- *
305
- * @param event - The keyboard event.
306
- */
307
- handleKeyDown(event) {
308
- if (['Enter', ' '].includes(event.key)) {
309
- this.classList.add('pressed');
310
- if (event.key === 'Enter') {
311
- this.triggerClickEvent();
312
- }
313
- }
314
- }
315
- /**
316
- * Handles the keyup event on the button.
317
- * If the key is 'Enter' or 'Space', the button is clicked.
318
- * If the key is 'Space', the button is pressed. The native HTML button works in the same way.
319
- *
320
- * @param event - The keyboard event.
321
- */
322
- handleKeyUp(event) {
323
- if (['Enter', ' '].includes(event.key)) {
324
- this.classList.remove('pressed');
325
- if (event.key === ' ') {
326
- this.triggerClickEvent();
327
- }
328
- }
329
- }
330
180
  /**
331
181
  * Infers the type of button based on the presence of slot and/or prefix and postfix icons.
332
182
  * @param slot - default slot of button
@@ -347,9 +197,6 @@ class Button extends Component {
347
197
  this.setAttribute('data-btn-type', 'pill');
348
198
  }
349
199
  }
350
- // Note: @click is attached to each of the children of the button.
351
- // Adding click listener within the constructor will not work properly when button is disabled.
352
- // https://discord.com/channels/1012791295170859069/1047015641225371718/threads/1309446072413720576
353
200
  render() {
354
201
  return html `
355
202
  ${this.prefixIcon ? html `
@@ -370,21 +217,7 @@ class Button extends Component {
370
217
  `;
371
218
  }
372
219
  }
373
- /** @internal */
374
- Button.formAssociated = true;
375
- Button.styles = [...Component.styles, ...styles];
376
- __decorate([
377
- property({ type: Boolean }),
378
- __metadata("design:type", Object)
379
- ], Button.prototype, "active", void 0);
380
- __decorate([
381
- property({ type: Boolean }),
382
- __metadata("design:type", Object)
383
- ], Button.prototype, "disabled", void 0);
384
- __decorate([
385
- property({ type: Boolean, attribute: 'soft-disabled' }),
386
- __metadata("design:type", Object)
387
- ], Button.prototype, "softDisabled", void 0);
220
+ Button.styles = [...Buttonsimple.styles, ...styles];
388
221
  __decorate([
389
222
  property({ type: String, attribute: 'prefix-icon', reflect: true }),
390
223
  __metadata("design:type", String)
@@ -413,10 +246,6 @@ __decorate([
413
246
  property({ type: String, reflect: true }),
414
247
  __metadata("design:type", Object)
415
248
  ], Button.prototype, "role", void 0);
416
- __decorate([
417
- property({ reflect: true }),
418
- __metadata("design:type", String)
419
- ], Button.prototype, "type", void 0);
420
249
  __decorate([
421
250
  state(),
422
251
  __metadata("design:type", String)
@@ -1,3 +1,4 @@
1
+ import { BUTTON_TYPE } from '../buttonsimple/buttonsimple.constants';
1
2
  declare const TAG_NAME: "mdc-button";
2
3
  declare const BUTTON_VARIANTS: {
3
4
  readonly PRIMARY: "primary";
@@ -31,11 +32,6 @@ declare const BUTTON_TYPE_INTERNAL: {
31
32
  readonly ICON: "icon";
32
33
  readonly PILL_WITH_ICON: "pill-with-icon";
33
34
  };
34
- declare const BUTTON_TYPE: {
35
- readonly BUTTON: "button";
36
- readonly SUBMIT: "submit";
37
- readonly RESET: "reset";
38
- };
39
35
  declare const DEFAULTS: {
40
36
  VARIANT: "primary";
41
37
  SIZE: 32;
@@ -1,4 +1,5 @@
1
1
  import utils from '../../utils/tag-name';
2
+ import { BUTTON_TYPE } from '../buttonsimple/buttonsimple.constants';
2
3
  const TAG_NAME = utils.constructTagName('button');
3
4
  const BUTTON_VARIANTS = {
4
5
  PRIMARY: 'primary',
@@ -29,11 +30,6 @@ const BUTTON_TYPE_INTERNAL = {
29
30
  ICON: 'icon',
30
31
  PILL_WITH_ICON: 'pill-with-icon',
31
32
  };
32
- const BUTTON_TYPE = {
33
- BUTTON: 'button',
34
- SUBMIT: 'submit',
35
- RESET: 'reset',
36
- };
37
33
  const DEFAULTS = {
38
34
  VARIANT: BUTTON_VARIANTS.PRIMARY,
39
35
  SIZE: PILL_BUTTON_SIZES[32],
@@ -1,2 +1,2 @@
1
- declare const styles: import("lit").CSSResult[];
2
- export default styles;
1
+ declare const _default: import("lit").CSSResult[];
2
+ export default _default;
@@ -1,12 +1,10 @@
1
1
  import { css } from 'lit';
2
- import { hostFitContentStyles, hostFocusRingStyles } from '../../utils/styles';
3
- const styles = [hostFitContentStyles, css `
2
+ const styles = css `
4
3
  :host {
5
- cursor: pointer;
4
+ background-color: transparent;
6
5
  border-radius: 1.25rem;
7
6
  font-weight: var(--mds-font-apps-body-large-medium-font-weight);
8
7
  outline: none;
9
- border: 0.0625rem solid transparent;
10
8
 
11
9
  --mdc-button-primary-color: var(--mds-color-theme-inverted-text-primary-normal);
12
10
  --mdc-button-primary-background-color: var(--mds-color-theme-button-primary-normal);
@@ -29,14 +27,6 @@ const styles = [hostFitContentStyles, css `
29
27
  --mdc-button-tertiary-disabled-background-color: var(--mds-color-theme-button-secondary-disabled);
30
28
  --mdc-button-tertiary-disabled-color: var(--mds-color-theme-text-primary-disabled);
31
29
 
32
- --mdc-button-height-size-64: 4rem;
33
- --mdc-button-height-size-52: 3.25rem;
34
- --mdc-button-height-size-40: 2.5rem;
35
- --mdc-button-height-size-32: 2rem;
36
- --mdc-button-height-size-28: 1.75rem;
37
- --mdc-button-height-size-24: 1.5rem;
38
- --mdc-button-height-size-20: 1.25rem;
39
-
40
30
  --mdc-button-line-height-size-40: var(--mds-font-lineheight-body-large);
41
31
  --mdc-button-line-height-size-32: var(--mds-font-lineheight-body-large);
42
32
  --mdc-button-line-height-size-28: var(--mds-font-lineheight-body-midsize);
@@ -108,42 +98,31 @@ const styles = [hostFitContentStyles, css `
108
98
  aspect-ratio: 1;
109
99
  padding: unset;
110
100
  }
111
- :host([size="64"]){
112
- height: var(--mdc-button-height-size-64);
113
- }
114
- :host([size="52"]){
115
- height: var(--mdc-button-height-size-52);
116
- }
117
101
  :host([size="40"]){
118
- height: var(--mdc-button-height-size-40);
119
102
  font-size: var(--mds-font-size-body-large);
120
103
  line-height: var(--mdc-button-line-height-size-40);
121
104
  padding: 0 1rem;
122
105
  gap: 0.5rem;
123
106
  }
124
107
  :host([size="32"]){
125
- height: var(--mdc-button-height-size-32);
126
108
  font-size: var(--mds-font-size-body-large);
127
109
  line-height: var(--mdc-button-line-height-size-32);
128
110
  padding: 0 0.75rem;
129
111
  gap: 0.375rem;
130
112
  }
131
113
  :host([size="28"]){
132
- height: var(--mdc-button-height-size-28);
133
114
  font-size: var(--mds-font-size-body-midsize);
134
115
  line-height: var(--mdc-button-line-height-size-28);
135
116
  padding: 0 0.75rem;
136
117
  gap: 0.375rem;
137
118
  }
138
119
  :host([size="24"]){
139
- height: var(--mdc-button-height-size-24);
140
120
  font-size: var(--mds-font-size-body-small);
141
121
  line-height: var(--mdc-button-line-height-size-24);
142
122
  padding: 0 0.625rem;
143
123
  gap: 0.25rem;
144
124
  }
145
125
  :host([size="20"]){
146
- height: var(--mdc-button-height-size-20);
147
126
  padding: 0.0625rem;
148
127
  }
149
128
 
@@ -191,5 +170,5 @@ const styles = [hostFitContentStyles, css `
191
170
  --mdc-button-secondary-hover-background-color: var(--mds-color-theme-button-secondary-hover);
192
171
  --mdc-button-secondary-pressed-background-color: var(--mds-color-theme-button-secondary-pressed);
193
172
  }
194
- `, hostFocusRingStyles];
195
- export default styles;
173
+ `;
174
+ export default [styles];
@@ -1,9 +1,8 @@
1
1
  import type { ValueOf } from '../../utils/types';
2
- import { BUTTON_COLORS, BUTTON_TYPE, BUTTON_TYPE_INTERNAL, BUTTON_VARIANTS, ICON_BUTTON_SIZES, PILL_BUTTON_SIZES } from './button.constants';
2
+ import { BUTTON_COLORS, BUTTON_TYPE_INTERNAL, BUTTON_VARIANTS, ICON_BUTTON_SIZES, PILL_BUTTON_SIZES } from './button.constants';
3
3
  type ButtonVariant = ValueOf<typeof BUTTON_VARIANTS>;
4
4
  type PillButtonSize = ValueOf<typeof PILL_BUTTON_SIZES>;
5
5
  type IconButtonSize = ValueOf<typeof ICON_BUTTON_SIZES>;
6
6
  type ButtonTypeInternal = ValueOf<typeof BUTTON_TYPE_INTERNAL>;
7
- type ButtonType = ValueOf<typeof BUTTON_TYPE>;
8
7
  type ButtonColor = ValueOf<typeof BUTTON_COLORS>;
9
- export { ButtonVariant, PillButtonSize, IconButtonSize, ButtonTypeInternal, ButtonType, ButtonColor, };
8
+ export { ButtonVariant, PillButtonSize, IconButtonSize, ButtonTypeInternal, ButtonColor, };
@@ -0,0 +1,126 @@
1
+ import { CSSResult, PropertyValueMap } from 'lit';
2
+ import { Component } from '../../models';
3
+ import { ButtonSize, ButtonType } from './buttonsimple.types';
4
+ /**
5
+ * `mdc-buttonsimple` is a component that can be configured in various ways to suit different use cases.
6
+ * It is used as an internal component and is not intended to be used directly by consumers.
7
+ * Consumers should use the `mdc-button` component instead.
8
+ *
9
+ * @tagname mdc-buttonsimple
10
+ *
11
+ */
12
+ declare class Buttonsimple extends Component {
13
+ /**
14
+ * The button's active state indicates whether it is currently toggled on (active) or off (inactive).
15
+ * When the active state is true, the button is considered to be in an active state, meaning it is toggled on.
16
+ * Conversely, when the active state is false, the button is in an inactive state, indicating it is toggled off.
17
+ * @default false
18
+ */
19
+ active: boolean;
20
+ /**
21
+ * Indicates whether the button is disabled.
22
+ * When the button is disabled for user interaction; it is not focusable or clickable.
23
+ * @default false
24
+ */
25
+ disabled: boolean;
26
+ /**
27
+ * Indicates whether the button is soft disabled.
28
+ * When set to `true`, the button appears visually disabled but still allows
29
+ * focus, click, and keyboard actions to be passed through.
30
+ *
31
+ * **Important:** When using soft disabled, consumers must ensure that
32
+ * the button behaves like a disabled button, allowing only focus and
33
+ * preventing any interactions (clicks or keyboard actions) from triggering unintended actions.
34
+ * @default false
35
+ */
36
+ softDisabled: boolean;
37
+ /**
38
+ * Button sizing is based on the button type.
39
+ * - **Pill button**: 40, 32, 28, 24.
40
+ * - **Icon button**: 64, 52, 40, 32, 28, 24.
41
+ * - Tertiary icon button cam also be 20.
42
+ * @default 32
43
+ */
44
+ size: ButtonSize;
45
+ /**
46
+ * The tabindex of the button.
47
+ * @default 0
48
+ */
49
+ tabIndex: number;
50
+ /**
51
+ * This property defines the ARIA role for the element. By default, it is set to 'button'.
52
+ * Consumers should override this role when:
53
+ * - The element is being used in a context where a different role is more appropriate.
54
+ * - Custom behaviors are implemented that require a specific ARIA role for accessibility purposes.
55
+ * @default button
56
+ */
57
+ role: string;
58
+ /**
59
+ * This property defines the type attribute for the button element.
60
+ * The type attribute specifies the behavior of the button when it is clicked.
61
+ * - **submit**: The button submits the form data to the server.
62
+ * - **reset**: The button resets the form data to its initial state.
63
+ * - **button**: The button does nothing when clicked.
64
+ * @default button
65
+ */
66
+ type: ButtonType;
67
+ /**
68
+ * @internal
69
+ */
70
+ private prevTabindex;
71
+ /** @internal */
72
+ static formAssociated: boolean;
73
+ /** @internal */
74
+ private internals;
75
+ /** @internal */
76
+ get form(): HTMLFormElement | null;
77
+ constructor();
78
+ update(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
79
+ private executeAction;
80
+ /**
81
+ * Sets the aria-pressed attribute based on the active state.
82
+ *
83
+ * @param element - The target element.
84
+ * @param active - The active state.
85
+ */
86
+ private setAriaPressed;
87
+ /**
88
+ * Sets the soft-disabled attribute for the button.
89
+ * When soft-disabled, the button looks to be disabled but remains focusable and clickable.
90
+ * Also sets/removes aria-disabled attribute.
91
+ *
92
+ * @param element - The button element.
93
+ * @param softDisabled - The soft-disabled state.
94
+ */
95
+ private setSoftDisabled;
96
+ /**
97
+ * Sets the disabled attribute for the button.
98
+ * When disabled, the button is not focusable or clickable, and tabindex is set to -1.
99
+ * The previous tabindex is stored and restored when enabled.
100
+ * Also sets/removes aria-disabled attribute.
101
+ *
102
+ * @param element - The button element.
103
+ * @param disabled - The disabled state.
104
+ */
105
+ private setDisabled;
106
+ private triggerClickEvent;
107
+ /**
108
+ * Handles the keydown event on the button.
109
+ * If the key is 'Enter' or 'Space', the button is pressed.
110
+ * If the key is 'Enter', the button is pressed. The native HTML button works in the same way.
111
+ *
112
+ * @param event - The keyboard event.
113
+ */
114
+ private handleKeyDown;
115
+ /**
116
+ * Handles the keyup event on the button.
117
+ * If the key is 'Enter' or 'Space', the button is clicked.
118
+ * If the key is 'Space', the button is pressed. The native HTML button works in the same way.
119
+ *
120
+ * @param event - The keyboard event.
121
+ */
122
+ private handleKeyUp;
123
+ render(): import("lit-html").TemplateResult<1>;
124
+ static styles: Array<CSSResult>;
125
+ }
126
+ export default Buttonsimple;