@material/web 1.0.1 → 1.0.2-nightly.8eb1f30.0
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/all.d.ts +2 -0
- package/all.js +2 -0
- package/all.js.map +1 -1
- package/button/elevated-button.js +5 -1
- package/button/elevated-button.js.map +1 -1
- package/button/internal/_elevation.scss +32 -32
- package/button/internal/_icon.scss +22 -23
- package/button/internal/_outlined-button.scss +21 -19
- package/button/internal/_shared.scss +84 -77
- package/button/internal/_touch-target.scss +4 -0
- package/button/internal/button.d.ts +7 -11
- package/button/internal/button.js +52 -38
- package/button/internal/button.js.map +1 -1
- package/button/internal/elevated-button.d.ts +1 -1
- package/button/internal/elevated-button.js +1 -1
- package/button/internal/elevated-button.js.map +1 -1
- package/button/internal/filled-button.d.ts +1 -1
- package/button/internal/filled-button.js +1 -1
- package/button/internal/filled-button.js.map +1 -1
- package/button/internal/filled-tonal-button.d.ts +1 -1
- package/button/internal/filled-tonal-button.js +1 -1
- package/button/internal/filled-tonal-button.js.map +1 -1
- package/button/internal/outlined-button.d.ts +1 -1
- package/button/internal/outlined-button.js +2 -2
- package/button/internal/outlined-button.js.map +1 -1
- package/button/internal/outlined-styles.css.js +1 -1
- package/button/internal/outlined-styles.css.js.map +1 -1
- package/button/internal/shared-elevation-styles.css.js +1 -1
- package/button/internal/shared-elevation-styles.css.js.map +1 -1
- package/button/internal/shared-styles.css.js +1 -1
- package/button/internal/shared-styles.css.js.map +1 -1
- package/checkbox/internal/checkbox.d.ts +18 -25
- package/checkbox/internal/checkbox.js +43 -74
- package/checkbox/internal/checkbox.js.map +1 -1
- package/chips/filter-chip.js +5 -1
- package/chips/filter-chip.js.map +1 -1
- package/chips/harness.js.map +1 -1
- package/chips/input-chip.js +6 -1
- package/chips/input-chip.js.map +1 -1
- package/chips/internal/assist-chip.js +8 -4
- package/chips/internal/assist-chip.js.map +1 -1
- package/chips/internal/chip-set.js +6 -4
- package/chips/internal/chip-set.js.map +1 -1
- package/chips/internal/chip.d.ts +3 -0
- package/chips/internal/chip.js +7 -5
- package/chips/internal/chip.js.map +1 -1
- package/chips/internal/filter-chip.d.ts +2 -0
- package/chips/internal/filter-chip.js +11 -5
- package/chips/internal/filter-chip.js.map +1 -1
- package/chips/internal/input-chip.d.ts +2 -0
- package/chips/internal/input-chip.js +10 -4
- package/chips/internal/input-chip.js.map +1 -1
- package/chips/internal/multi-action-chip.js.map +1 -1
- package/chips/internal/trailing-icons.d.ts +1 -1
- package/chips/internal/trailing-icons.js +6 -5
- package/chips/internal/trailing-icons.js.map +1 -1
- package/common.d.ts +2 -0
- package/common.js +2 -0
- package/common.js.map +1 -1
- package/dialog/harness.js +1 -2
- package/dialog/harness.js.map +1 -1
- package/dialog/internal/_dialog.scss +1 -1
- package/dialog/internal/animations.js +14 -12
- package/dialog/internal/animations.js.map +1 -1
- package/dialog/internal/dialog-styles.css.js +1 -1
- package/dialog/internal/dialog-styles.css.js.map +1 -1
- package/dialog/internal/dialog.d.ts +6 -6
- package/dialog/internal/dialog.js +24 -24
- package/dialog/internal/dialog.js.map +1 -1
- package/fab/harness.js.map +1 -1
- package/fab/internal/fab.js.map +1 -1
- package/fab/internal/shared.js +10 -11
- package/fab/internal/shared.js.map +1 -1
- package/field/harness.js.map +1 -1
- package/field/internal/_content.scss +185 -174
- package/field/internal/_filled-field.scss +147 -136
- package/field/internal/_label.scss +83 -72
- package/field/internal/_outlined-field.scss +276 -262
- package/field/internal/_supporting-text.scss +53 -42
- package/field/internal/field.js +26 -22
- package/field/internal/field.js.map +1 -1
- package/field/internal/filled-styles.css.js +1 -1
- package/field/internal/filled-styles.css.js.map +1 -1
- package/field/internal/outlined-styles.css.js +1 -1
- package/field/internal/outlined-styles.css.js.map +1 -1
- package/field/internal/shared-styles.css.js +1 -1
- package/field/internal/shared-styles.css.js.map +1 -1
- package/focus/internal/focus-ring.d.ts +2 -0
- package/focus/internal/focus-ring.js +3 -3
- package/focus/internal/focus-ring.js.map +1 -1
- package/icon/internal/_icon.scss +7 -4
- package/icon/internal/icon-styles.css.js +1 -1
- package/icon/internal/icon-styles.css.js.map +1 -1
- package/iconbutton/internal/icon-button.d.ts +9 -4
- package/iconbutton/internal/icon-button.js +35 -22
- package/iconbutton/internal/icon-button.js.map +1 -1
- package/internal/aria/aria.d.ts +4 -26
- package/internal/aria/aria.js +10 -28
- package/internal/aria/aria.js.map +1 -1
- package/internal/aria/delegate.js +2 -2
- package/internal/aria/delegate.js.map +1 -1
- package/internal/controller/attachable-controller.js +3 -5
- package/internal/controller/attachable-controller.js.map +1 -1
- package/internal/controller/form-submitter.d.ts +3 -5
- package/internal/controller/form-submitter.js +5 -7
- package/internal/controller/form-submitter.js.map +1 -1
- package/internal/controller/is-rtl.js +2 -2
- package/internal/controller/is-rtl.js.map +1 -1
- package/internal/controller/string-converter.js +1 -1
- package/internal/controller/string-converter.js.map +1 -1
- package/internal/motion/animation.js.map +1 -1
- package/labs/behaviors/element-internals.d.ts +45 -0
- package/labs/behaviors/element-internals.js +50 -0
- package/labs/behaviors/element-internals.js.map +1 -0
- package/labs/behaviors/focusable.d.ts +39 -0
- package/labs/behaviors/focusable.js +82 -0
- package/labs/behaviors/focusable.js.map +1 -0
- package/labs/behaviors/form-associated.d.ts +199 -0
- package/labs/behaviors/form-associated.js +155 -0
- package/labs/behaviors/form-associated.js.map +1 -0
- package/labs/behaviors/mixin.d.ts +54 -0
- package/labs/behaviors/mixin.js +7 -0
- package/labs/behaviors/mixin.js.map +1 -0
- package/labs/behaviors/validators/checkbox-validator.d.ts +32 -0
- package/labs/behaviors/validators/checkbox-validator.js +32 -0
- package/labs/behaviors/validators/checkbox-validator.js.map +1 -0
- package/labs/behaviors/validators/validator.d.ts +92 -0
- package/labs/behaviors/validators/validator.js +73 -0
- package/labs/behaviors/validators/validator.js.map +1 -0
- package/labs/card/_elevated-card.scss +6 -0
- package/labs/card/_filled-card.scss +6 -0
- package/labs/card/_outlined-card.scss +6 -0
- package/labs/card/elevated-card.d.ts +18 -0
- package/labs/card/elevated-card.js +21 -0
- package/labs/card/elevated-card.js.map +1 -0
- package/labs/card/filled-card.d.ts +18 -0
- package/labs/card/filled-card.js +21 -0
- package/labs/card/filled-card.js.map +1 -0
- package/labs/card/internal/_elevated-card.scss +35 -0
- package/labs/card/internal/_filled-card.scss +35 -0
- package/labs/card/internal/_outlined-card.scss +39 -0
- package/labs/card/internal/_shared.scss +40 -0
- package/labs/card/internal/card.d.ts +13 -0
- package/labs/card/internal/card.js +20 -0
- package/labs/card/internal/card.js.map +1 -0
- package/labs/card/internal/elevated-styles.css.js +9 -0
- package/labs/card/internal/elevated-styles.css.js.map +1 -0
- package/labs/card/internal/elevated-styles.scss +10 -0
- package/labs/card/internal/filled-styles.css.js +9 -0
- package/labs/card/internal/filled-styles.css.js.map +1 -0
- package/labs/card/internal/filled-styles.scss +10 -0
- package/labs/card/internal/outlined-styles.css.js +9 -0
- package/labs/card/internal/outlined-styles.css.js.map +1 -0
- package/labs/card/internal/outlined-styles.scss +10 -0
- package/labs/card/internal/shared-styles.css.js +9 -0
- package/labs/card/internal/shared-styles.css.js.map +1 -0
- package/labs/card/internal/shared-styles.scss +10 -0
- package/labs/card/outlined-card.d.ts +18 -0
- package/labs/card/outlined-card.js +21 -0
- package/labs/card/outlined-card.js.map +1 -0
- package/labs/item/internal/item.js +8 -8
- package/labs/item/internal/item.js.map +1 -1
- package/labs/navigationbar/internal/constants.js.map +1 -1
- package/labs/navigationbar/internal/navigation-bar.d.ts +3 -0
- package/labs/navigationbar/internal/navigation-bar.js +18 -11
- package/labs/navigationbar/internal/navigation-bar.js.map +1 -1
- package/labs/navigationdrawer/internal/navigation-drawer-modal.d.ts +3 -0
- package/labs/navigationdrawer/internal/navigation-drawer-modal.js +10 -3
- package/labs/navigationdrawer/internal/navigation-drawer-modal.js.map +1 -1
- package/labs/navigationdrawer/internal/navigation-drawer.d.ts +3 -0
- package/labs/navigationdrawer/internal/navigation-drawer.js +8 -1
- package/labs/navigationdrawer/internal/navigation-drawer.js.map +1 -1
- package/labs/navigationtab/harness.js.map +1 -1
- package/labs/navigationtab/internal/navigation-tab.d.ts +6 -0
- package/labs/navigationtab/internal/navigation-tab.js +43 -27
- package/labs/navigationtab/internal/navigation-tab.js.map +1 -1
- package/labs/navigationtab/internal/state.js.map +1 -1
- package/labs/segmentedbutton/internal/segmented-button.d.ts +3 -0
- package/labs/segmentedbutton/internal/segmented-button.js +26 -12
- package/labs/segmentedbutton/internal/segmented-button.js.map +1 -1
- package/labs/segmentedbuttonset/internal/segmented-button-set.d.ts +5 -0
- package/labs/segmentedbuttonset/internal/segmented-button-set.js +14 -9
- package/labs/segmentedbuttonset/internal/segmented-button-set.js.map +1 -1
- package/list/harness.d.ts +1 -1
- package/list/harness.js.map +1 -1
- package/list/internal/list-controller.d.ts +1 -1
- package/list/internal/list-controller.js +7 -3
- package/list/internal/list-controller.js.map +1 -1
- package/list/internal/list-navigation-helpers.js.map +1 -1
- package/list/internal/list.d.ts +2 -2
- package/list/internal/list.js +8 -6
- package/list/internal/list.js.map +1 -1
- package/list/internal/listitem/harness.d.ts +1 -1
- package/list/internal/listitem/harness.js.map +1 -1
- package/list/internal/listitem/list-item.d.ts +3 -2
- package/list/internal/listitem/list-item.js +19 -20
- package/list/internal/listitem/list-item.js.map +1 -1
- package/list/list-item.d.ts +4 -12
- package/list/list-item.js +4 -12
- package/list/list-item.js.map +1 -1
- package/menu/harness.js.map +1 -1
- package/menu/internal/_menu.scss +12 -1
- package/menu/internal/controllers/menuItemController.js +9 -4
- package/menu/internal/controllers/menuItemController.js.map +1 -1
- package/menu/internal/controllers/shared.d.ts +9 -1
- package/menu/internal/controllers/shared.js +4 -4
- package/menu/internal/controllers/shared.js.map +1 -1
- package/menu/internal/controllers/surfacePositionController.d.ts +15 -2
- package/menu/internal/controllers/surfacePositionController.js +124 -54
- package/menu/internal/controllers/surfacePositionController.js.map +1 -1
- package/menu/internal/controllers/typeaheadController.js +19 -14
- package/menu/internal/controllers/typeaheadController.js.map +1 -1
- package/menu/internal/menu-styles.css.js +1 -1
- package/menu/internal/menu-styles.css.js.map +1 -1
- package/menu/internal/menu.d.ts +43 -12
- package/menu/internal/menu.js +124 -57
- package/menu/internal/menu.js.map +1 -1
- package/menu/internal/menuitem/harness.js.map +1 -1
- package/menu/internal/menuitem/menu-item.d.ts +3 -2
- package/menu/internal/menuitem/menu-item.js +18 -19
- package/menu/internal/menuitem/menu-item.js.map +1 -1
- package/menu/internal/submenu/sub-menu.d.ts +8 -8
- package/menu/internal/submenu/sub-menu.js +31 -22
- package/menu/internal/submenu/sub-menu.js.map +1 -1
- package/menu/internal/types.js.map +1 -1
- package/package.json +1 -1
- package/progress/internal/_circular-progress.scss +2 -2
- package/progress/internal/_linear-progress.scss +1 -1
- package/progress/internal/circular-progress-styles.css.js +1 -1
- package/progress/internal/circular-progress-styles.css.js.map +1 -1
- package/progress/internal/circular-progress.js +11 -10
- package/progress/internal/circular-progress.js.map +1 -1
- package/progress/internal/linear-progress-styles.css.js +1 -1
- package/progress/internal/linear-progress-styles.css.js.map +1 -1
- package/progress/internal/linear-progress.d.ts +1 -1
- package/progress/internal/linear-progress.js +3 -3
- package/progress/internal/linear-progress.js.map +1 -1
- package/progress/internal/progress.js +4 -2
- package/progress/internal/progress.js.map +1 -1
- package/radio/internal/radio.d.ts +11 -27
- package/radio/internal/radio.js +30 -54
- package/radio/internal/radio.js.map +1 -1
- package/radio/internal/single-selection-controller.js +1 -1
- package/radio/internal/single-selection-controller.js.map +1 -1
- package/ripple/internal/ripple.js +14 -9
- package/ripple/internal/ripple.js.map +1 -1
- package/select/filled-select.js +1 -2
- package/select/filled-select.js.map +1 -1
- package/select/harness.js +1 -1
- package/select/harness.js.map +1 -1
- package/select/internal/select.d.ts +25 -34
- package/select/internal/select.js +101 -91
- package/select/internal/select.js.map +1 -1
- package/select/internal/selectoption/select-option.d.ts +8 -6
- package/select/internal/selectoption/select-option.js +23 -22
- package/select/internal/selectoption/select-option.js.map +1 -1
- package/select/internal/selectoption/selectOptionController.js +1 -1
- package/select/internal/selectoption/selectOptionController.js.map +1 -1
- package/select/outlined-select.js +1 -2
- package/select/outlined-select.js.map +1 -1
- package/slider/harness.js +5 -5
- package/slider/harness.js.map +1 -1
- package/slider/internal/slider.d.ts +16 -25
- package/slider/internal/slider.js +110 -114
- package/slider/internal/slider.js.map +1 -1
- package/switch/internal/switch.d.ts +11 -27
- package/switch/internal/switch.js +40 -80
- package/switch/internal/switch.js.map +1 -1
- package/tabs/harness.js +3 -3
- package/tabs/harness.js.map +1 -1
- package/tabs/internal/_tab.scss +27 -35
- package/tabs/internal/primary-tab.d.ts +0 -2
- package/tabs/internal/tab-styles.css.js +1 -1
- package/tabs/internal/tab-styles.css.js.map +1 -1
- package/tabs/internal/tab.d.ts +4 -5
- package/tabs/internal/tab.js +34 -22
- package/tabs/internal/tab.js.map +1 -1
- package/tabs/internal/tabs.d.ts +6 -2
- package/tabs/internal/tabs.js +18 -11
- package/tabs/internal/tabs.js.map +1 -1
- package/textfield/filled-text-field.js +1 -2
- package/textfield/filled-text-field.js.map +1 -1
- package/textfield/harness.js +3 -2
- package/textfield/harness.js.map +1 -1
- package/textfield/internal/text-field.d.ts +26 -18
- package/textfield/internal/text-field.js +81 -58
- package/textfield/internal/text-field.js.map +1 -1
- package/textfield/outlined-text-field.js +1 -2
- package/textfield/outlined-text-field.js.map +1 -1
- package/tokens/_index.scss +3 -0
- package/tokens/_md-comp-elevated-card.scss +63 -0
- package/tokens/_md-comp-filled-card.scss +63 -0
- package/tokens/_md-comp-icon.scss +2 -0
- package/tokens/_md-comp-outlined-card.scss +69 -0
- package/tokens/_md-comp-test-table.scss +1 -0
- package/internal/controller/element-internals.d.ts +0 -35
- package/internal/controller/element-internals.js +0 -24
- package/internal/controller/element-internals.js.map +0 -1
- package/select/internal/filled-forced-colors-styles.css.js +0 -9
- package/select/internal/filled-forced-colors-styles.css.js.map +0 -1
- package/select/internal/filled-forced-colors-styles.scss +0 -29
- package/select/internal/outlined-forced-colors-styles.css.js +0 -9
- package/select/internal/outlined-forced-colors-styles.css.js.map +0 -1
- package/select/internal/outlined-forced-colors-styles.scss +0 -29
- package/textfield/internal/filled-forced-colors-styles.css.js +0 -9
- package/textfield/internal/filled-forced-colors-styles.css.js.map +0 -1
- package/textfield/internal/filled-forced-colors-styles.scss +0 -29
- package/textfield/internal/outlined-forced-colors-styles.css.js +0 -9
- package/textfield/internal/outlined-forced-colors-styles.css.js.map +0 -1
- package/textfield/internal/outlined-forced-colors-styles.scss +0 -29
- /package/{select/internal/filled-forced-colors-styles.css.d.ts → labs/card/internal/elevated-styles.css.d.ts} +0 -0
- /package/{select/internal/outlined-forced-colors-styles.css.d.ts → labs/card/internal/filled-styles.css.d.ts} +0 -0
- /package/{textfield/internal/filled-forced-colors-styles.css.d.ts → labs/card/internal/outlined-styles.css.d.ts} +0 -0
- /package/{textfield/internal/outlined-forced-colors-styles.css.d.ts → labs/card/internal/shared-styles.css.d.ts} +0 -0
|
@@ -7,7 +7,6 @@ import { __decorate } from "tslib";
|
|
|
7
7
|
import '../field/filled-field.js';
|
|
8
8
|
import { customElement } from 'lit/decorators.js';
|
|
9
9
|
import { literal } from 'lit/static-html.js';
|
|
10
|
-
import { styles as filledForcedColorsStyles } from './internal/filled-forced-colors-styles.css.js';
|
|
11
10
|
import { styles as filledStyles } from './internal/filled-styles.css.js';
|
|
12
11
|
import { FilledTextField } from './internal/filled-text-field.js';
|
|
13
12
|
import { styles as sharedStyles } from './internal/shared-styles.css.js';
|
|
@@ -22,7 +21,7 @@ export let MdFilledTextField = class MdFilledTextField extends FilledTextField {
|
|
|
22
21
|
this.fieldTag = literal `md-filled-field`;
|
|
23
22
|
}
|
|
24
23
|
};
|
|
25
|
-
MdFilledTextField.styles = [sharedStyles, filledStyles
|
|
24
|
+
MdFilledTextField.styles = [sharedStyles, filledStyles];
|
|
26
25
|
MdFilledTextField = __decorate([
|
|
27
26
|
customElement('md-filled-text-field')
|
|
28
27
|
], MdFilledTextField);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filled-text-field.js","sourceRoot":"","sources":["filled-text-field.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,0BAA0B,CAAC;AAElC,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAC,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"filled-text-field.js","sourceRoot":"","sources":["filled-text-field.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,0BAA0B,CAAC;AAElC,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAC,MAAM,IAAI,YAAY,EAAC,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAC,eAAe,EAAC,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAC,MAAM,IAAI,YAAY,EAAC,MAAM,iCAAiC,CAAC;AAUvE;;;;GAIG;AAEI,WAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,eAAe;IAA/C;;QAGuB,aAAQ,GAAG,OAAO,CAAA,iBAAiB,CAAC;IAClE,CAAC;;AAHiB,wBAAM,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,AAA/B,CAAgC;AAD3C,iBAAiB;IAD7B,aAAa,CAAC,sBAAsB,CAAC;GACzB,iBAAiB,CAI7B","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport '../field/filled-field.js';\n\nimport {customElement} from 'lit/decorators.js';\nimport {literal} from 'lit/static-html.js';\n\nimport {styles as filledStyles} from './internal/filled-styles.css.js';\nimport {FilledTextField} from './internal/filled-text-field.js';\nimport {styles as sharedStyles} from './internal/shared-styles.css.js';\n\nexport {TextFieldType} from './internal/text-field.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-filled-text-field': MdFilledTextField;\n }\n}\n\n/**\n * TODO(b/228525797): Add docs\n * @final\n * @suppress {visibility}\n */\n@customElement('md-filled-text-field')\nexport class MdFilledTextField extends FilledTextField {\n static override styles = [sharedStyles, filledStyles];\n\n protected override readonly fieldTag = literal`md-filled-field`;\n}\n"]}
|
package/textfield/harness.js
CHANGED
|
@@ -83,8 +83,9 @@ export class TextFieldHarness extends Harness {
|
|
|
83
83
|
}
|
|
84
84
|
simulateDeletion(element, beginIndex, endIndex, init) {
|
|
85
85
|
const deletedCharacters = element.value.slice(beginIndex, endIndex);
|
|
86
|
-
element.value =
|
|
87
|
-
element.value.substring(
|
|
86
|
+
element.value =
|
|
87
|
+
element.value.substring(0, beginIndex ?? 0) +
|
|
88
|
+
element.value.substring(endIndex ?? element.value.length);
|
|
88
89
|
if (!init) {
|
|
89
90
|
init = {
|
|
90
91
|
inputType: 'deleteContentBackward',
|
package/textfield/harness.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.js","sourceRoot":"","sources":["harness.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAI9C;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,OAAkB;IAAxD;;QACE,wEAAwE;QAChE,sBAAiB,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["harness.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {Harness} from '../testing/harness.js';\n\nimport {TextField} from './internal/text-field.js';\n\n/**\n * Test harness for text field elements.\n */\nexport class TextFieldHarness extends Harness<TextField> {\n /** Used to track whether or not a change event should be dispatched. */\n private valueBeforeChange = '';\n\n /**\n * Simulates a user typing a value one character at a time. This will fire\n * multiple input events.\n *\n * Use focus/blur to ensure change events are fired.\n *\n * @example\n * await harness.focusWithKeyboard();\n * await harness.inputValue('value'); // input events\n * await harness.blur(); // change event\n *\n * @param value The value to simulating typing.\n */\n async inputValue(value: string) {\n for (const char of value) {\n this.simulateKeypress(await this.getInteractiveElement(), char);\n this.simulateInput(await this.getInteractiveElement(), char);\n }\n }\n\n /**\n * Simulates a user deleting part of a value with the backspace key.\n * By default, the entire value is deleted. This will fire a single input\n * event.\n *\n * Use focus/blur to ensure change events are fired.\n *\n * @example\n * await harness.focusWithKeyboard();\n * await harness.deleteValue(); // input event\n * await harness.blur(); // change event\n *\n * @param beginIndex The starting index of the value to delete.\n * @param endIndex The ending index of the value to delete.\n */\n async deleteValue(beginIndex?: number, endIndex?: number) {\n this.simulateKeypress(await this.getInteractiveElement(), 'Backspace');\n this.simulateDeletion(\n await this.getInteractiveElement(),\n beginIndex,\n endIndex,\n );\n }\n\n override async reset() {\n this.element.reset();\n this.valueBeforeChange = this.element.value;\n await super.reset();\n }\n\n override async blur() {\n await super.blur();\n this.simulateChangeIfNeeded(await this.getInteractiveElement());\n }\n\n protected override simulatePointerFocus(input: HTMLElement) {\n const textField = this.element;\n if (textField.disabled) {\n return;\n }\n\n this.valueBeforeChange = textField.value;\n super.simulatePointerFocus(input);\n }\n\n protected simulateInput(\n element: HTMLInputElement | HTMLTextAreaElement,\n charactersToAppend: string,\n init?: InputEventInit,\n ) {\n element.value += charactersToAppend;\n if (!init) {\n init = {\n inputType: 'insertText',\n composed: true,\n bubbles: true,\n isComposing: false,\n data: charactersToAppend,\n };\n }\n\n element.dispatchEvent(new InputEvent('input', init));\n }\n\n protected simulateDeletion(\n element: HTMLInputElement | HTMLTextAreaElement,\n beginIndex?: number,\n endIndex?: number,\n init?: InputEventInit,\n ) {\n const deletedCharacters = element.value.slice(beginIndex, endIndex);\n element.value =\n element.value.substring(0, beginIndex ?? 0) +\n element.value.substring(endIndex ?? element.value.length);\n if (!init) {\n init = {\n inputType: 'deleteContentBackward',\n composed: true,\n bubbles: true,\n isComposing: false,\n data: deletedCharacters,\n };\n }\n\n element.dispatchEvent(new InputEvent('input', init));\n }\n\n protected simulateChangeIfNeeded(\n element: HTMLInputElement | HTMLTextAreaElement,\n ) {\n if (this.valueBeforeChange === element.value) {\n return;\n }\n\n this.valueBeforeChange = element.value;\n element.dispatchEvent(new Event('change'));\n }\n\n protected override async getInteractiveElement() {\n await this.element.updateComplete;\n return this.element.renderRoot.querySelector('.input') as\n | HTMLInputElement\n | HTMLTextAreaElement;\n }\n}\n"]}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { LitElement, PropertyValues } from 'lit';
|
|
7
7
|
import { StaticValue } from 'lit/static-html.js';
|
|
8
|
+
import { getFormValue } from '../../labs/behaviors/form-associated.js';
|
|
8
9
|
/**
|
|
9
10
|
* Input types that are compatible with the text field.
|
|
10
11
|
*/
|
|
@@ -17,15 +18,23 @@ export type UnsupportedTextFieldType = 'color' | 'date' | 'datetime-local' | 'fi
|
|
|
17
18
|
* Input types that are incompatible with the text field.
|
|
18
19
|
*/
|
|
19
20
|
export type InvalidTextFieldType = 'button' | 'checkbox' | 'hidden' | 'image' | 'radio' | 'range' | 'reset' | 'submit';
|
|
21
|
+
declare const textFieldBaseClass: import("../../labs/behaviors/mixin.js").MixinReturn<(abstract new (...args: any[]) => import("../../labs/behaviors/element-internals.js").WithElementInternals) & typeof LitElement & import("../../labs/behaviors/form-associated.js").FormAssociatedConstructor, import("../../labs/behaviors/form-associated.js").FormAssociated>;
|
|
20
22
|
/**
|
|
21
23
|
* A text field component.
|
|
24
|
+
*
|
|
25
|
+
* @fires select {Event} The native `select` event on
|
|
26
|
+
* [`<input>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select_event)
|
|
27
|
+
* --bubbles
|
|
28
|
+
* @fires change {Event} The native `change` event on
|
|
29
|
+
* [`<input>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event)
|
|
30
|
+
* --bubbles
|
|
31
|
+
* @fires input {InputEvent} The native `input` event on
|
|
32
|
+
* [`<input>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event)
|
|
33
|
+
* --bubbles --composed
|
|
22
34
|
*/
|
|
23
|
-
export declare abstract class TextField extends
|
|
35
|
+
export declare abstract class TextField extends textFieldBaseClass {
|
|
24
36
|
/** @nocollapse */
|
|
25
37
|
static shadowRootOptions: ShadowRootInit;
|
|
26
|
-
/** @nocollapse */
|
|
27
|
-
static readonly formAssociated = true;
|
|
28
|
-
disabled: boolean;
|
|
29
38
|
/**
|
|
30
39
|
* Gets or sets whether or not the text field is in a visually invalid state.
|
|
31
40
|
*
|
|
@@ -80,18 +89,10 @@ export declare abstract class TextField extends LitElement {
|
|
|
80
89
|
*/
|
|
81
90
|
rows: number;
|
|
82
91
|
/**
|
|
83
|
-
* The
|
|
84
|
-
|
|
85
|
-
get form(): HTMLFormElement;
|
|
86
|
-
/**
|
|
87
|
-
* The labels this element is associated with.
|
|
92
|
+
* The number of cols to display for a `type="textarea"` text field.
|
|
93
|
+
* Defaults to 20.
|
|
88
94
|
*/
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* The HTML name to use in form submission.
|
|
92
|
-
*/
|
|
93
|
-
get name(): string;
|
|
94
|
-
set name(name: string);
|
|
95
|
+
cols: number;
|
|
95
96
|
inputMode: string;
|
|
96
97
|
/**
|
|
97
98
|
* Defines the greatest value in the range of permitted values.
|
|
@@ -240,8 +241,9 @@ export declare abstract class TextField extends LitElement {
|
|
|
240
241
|
private readonly field?;
|
|
241
242
|
private readonly leadingIcons;
|
|
242
243
|
private readonly trailingIcons;
|
|
244
|
+
private isCheckingValidity;
|
|
245
|
+
private isReportingValidity;
|
|
243
246
|
private hasCustomValidityError;
|
|
244
|
-
private readonly internals;
|
|
245
247
|
/**
|
|
246
248
|
* Checks the text field's native validation and returns whether or not the
|
|
247
249
|
* element is valid.
|
|
@@ -272,6 +274,7 @@ export declare abstract class TextField extends LitElement {
|
|
|
272
274
|
* @return true if the text field is valid, or false if not.
|
|
273
275
|
*/
|
|
274
276
|
reportValidity(): boolean;
|
|
277
|
+
private showErrorMessage;
|
|
275
278
|
/**
|
|
276
279
|
* Selects all the text in the text field.
|
|
277
280
|
*
|
|
@@ -349,9 +352,14 @@ export declare abstract class TextField extends LitElement {
|
|
|
349
352
|
private getInput;
|
|
350
353
|
private syncValidity;
|
|
351
354
|
private handleIconChange;
|
|
352
|
-
|
|
355
|
+
private readonly onInvalid;
|
|
356
|
+
connectedCallback(): void;
|
|
357
|
+
disconnectedCallback(): void;
|
|
358
|
+
disabled: boolean;
|
|
359
|
+
name: string;
|
|
360
|
+
[getFormValue](): string;
|
|
353
361
|
formResetCallback(): void;
|
|
354
|
-
/** @private */
|
|
355
362
|
formStateRestoreCallback(state: string): void;
|
|
356
363
|
focus(): void;
|
|
357
364
|
}
|
|
365
|
+
export {};
|
|
@@ -13,13 +13,26 @@ import { html as staticHtml } from 'lit/static-html.js';
|
|
|
13
13
|
import { requestUpdateOnAriaChange } from '../../internal/aria/delegate.js';
|
|
14
14
|
import { redispatchEvent } from '../../internal/controller/events.js';
|
|
15
15
|
import { stringConverter } from '../../internal/controller/string-converter.js';
|
|
16
|
+
import { internals, mixinElementInternals, } from '../../labs/behaviors/element-internals.js';
|
|
17
|
+
import { getFormValue, mixinFormAssociated, } from '../../labs/behaviors/form-associated.js';
|
|
18
|
+
// Separate variable needed for closure.
|
|
19
|
+
const textFieldBaseClass = mixinFormAssociated(mixinElementInternals(LitElement));
|
|
16
20
|
/**
|
|
17
21
|
* A text field component.
|
|
22
|
+
*
|
|
23
|
+
* @fires select {Event} The native `select` event on
|
|
24
|
+
* [`<input>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select_event)
|
|
25
|
+
* --bubbles
|
|
26
|
+
* @fires change {Event} The native `change` event on
|
|
27
|
+
* [`<input>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event)
|
|
28
|
+
* --bubbles
|
|
29
|
+
* @fires input {InputEvent} The native `input` event on
|
|
30
|
+
* [`<input>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event)
|
|
31
|
+
* --bubbles --composed
|
|
18
32
|
*/
|
|
19
|
-
export class TextField extends
|
|
33
|
+
export class TextField extends textFieldBaseClass {
|
|
20
34
|
constructor() {
|
|
21
35
|
super(...arguments);
|
|
22
|
-
this.disabled = false;
|
|
23
36
|
/**
|
|
24
37
|
* Gets or sets whether or not the text field is in a visually invalid state.
|
|
25
38
|
*
|
|
@@ -73,6 +86,11 @@ export class TextField extends LitElement {
|
|
|
73
86
|
* Defaults to 2.
|
|
74
87
|
*/
|
|
75
88
|
this.rows = 2;
|
|
89
|
+
/**
|
|
90
|
+
* The number of cols to display for a `type="textarea"` text field.
|
|
91
|
+
* Defaults to 20.
|
|
92
|
+
*/
|
|
93
|
+
this.cols = 20;
|
|
76
94
|
// <input> properties
|
|
77
95
|
this.inputMode = '';
|
|
78
96
|
/**
|
|
@@ -171,31 +189,17 @@ export class TextField extends LitElement {
|
|
|
171
189
|
* `reportValidity()`.
|
|
172
190
|
*/
|
|
173
191
|
this.nativeErrorText = '';
|
|
192
|
+
this.isCheckingValidity = false;
|
|
193
|
+
this.isReportingValidity = false;
|
|
174
194
|
// Needed for Safari, see https://bugs.webkit.org/show_bug.cgi?id=261432
|
|
175
|
-
// Replace with this
|
|
195
|
+
// Replace with this[internals].validity.customError when resolved.
|
|
176
196
|
this.hasCustomValidityError = false;
|
|
177
|
-
this.
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
return this.internals.form;
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* The labels this element is associated with.
|
|
187
|
-
*/
|
|
188
|
-
get labels() {
|
|
189
|
-
return this.internals.labels;
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* The HTML name to use in form submission.
|
|
193
|
-
*/
|
|
194
|
-
get name() {
|
|
195
|
-
return this.getAttribute('name') ?? '';
|
|
196
|
-
}
|
|
197
|
-
set name(name) {
|
|
198
|
-
this.setAttribute('name', name);
|
|
197
|
+
this.onInvalid = (invalidEvent) => {
|
|
198
|
+
if (this.isCheckingValidity || this.isReportingValidity) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
this.showErrorMessage(false, invalidEvent);
|
|
202
|
+
};
|
|
199
203
|
}
|
|
200
204
|
/**
|
|
201
205
|
* Gets or sets the direction in which selection occurred.
|
|
@@ -231,7 +235,7 @@ export class TextField extends LitElement {
|
|
|
231
235
|
*/
|
|
232
236
|
get validationMessage() {
|
|
233
237
|
this.syncValidity();
|
|
234
|
-
return this
|
|
238
|
+
return this[internals].validationMessage;
|
|
235
239
|
}
|
|
236
240
|
/**
|
|
237
241
|
* Returns a `ValidityState` object that represents the validity states of the
|
|
@@ -241,7 +245,7 @@ export class TextField extends LitElement {
|
|
|
241
245
|
*/
|
|
242
246
|
get validity() {
|
|
243
247
|
this.syncValidity();
|
|
244
|
-
return this
|
|
248
|
+
return this[internals].validity;
|
|
245
249
|
}
|
|
246
250
|
/**
|
|
247
251
|
* The text field's value as a number.
|
|
@@ -287,7 +291,7 @@ export class TextField extends LitElement {
|
|
|
287
291
|
*/
|
|
288
292
|
get willValidate() {
|
|
289
293
|
this.syncValidity();
|
|
290
|
-
return this
|
|
294
|
+
return this[internals].willValidate;
|
|
291
295
|
}
|
|
292
296
|
get hasError() {
|
|
293
297
|
return this.error || this.nativeError;
|
|
@@ -303,8 +307,11 @@ export class TextField extends LitElement {
|
|
|
303
307
|
* @return true if the text field is valid, or false if not.
|
|
304
308
|
*/
|
|
305
309
|
checkValidity() {
|
|
310
|
+
this.isCheckingValidity = true;
|
|
306
311
|
this.syncValidity();
|
|
307
|
-
|
|
312
|
+
const isValid = this[internals].checkValidity();
|
|
313
|
+
this.isCheckingValidity = false;
|
|
314
|
+
return isValid;
|
|
308
315
|
}
|
|
309
316
|
/**
|
|
310
317
|
* Checks the text field's native validation and returns whether or not the
|
|
@@ -325,11 +332,17 @@ export class TextField extends LitElement {
|
|
|
325
332
|
* @return true if the text field is valid, or false if not.
|
|
326
333
|
*/
|
|
327
334
|
reportValidity() {
|
|
335
|
+
this.isReportingValidity = true;
|
|
328
336
|
let invalidEvent;
|
|
329
|
-
this.addEventListener('invalid', event => {
|
|
337
|
+
this.addEventListener('invalid', (event) => {
|
|
330
338
|
invalidEvent = event;
|
|
331
339
|
}, { once: true });
|
|
332
340
|
const valid = this.checkValidity();
|
|
341
|
+
this.showErrorMessage(valid, invalidEvent);
|
|
342
|
+
this.isReportingValidity = false;
|
|
343
|
+
return valid;
|
|
344
|
+
}
|
|
345
|
+
showErrorMessage(valid, invalidEvent) {
|
|
333
346
|
if (invalidEvent?.defaultPrevented) {
|
|
334
347
|
return valid;
|
|
335
348
|
}
|
|
@@ -362,7 +375,7 @@ export class TextField extends LitElement {
|
|
|
362
375
|
*/
|
|
363
376
|
setCustomValidity(error) {
|
|
364
377
|
this.hasCustomValidityError = !!error;
|
|
365
|
-
this
|
|
378
|
+
this[internals].setValidity({ customError: !!error }, error, this.getInputOrTextarea());
|
|
366
379
|
}
|
|
367
380
|
setRangeText(...args) {
|
|
368
381
|
// Calling setRangeText with 1 vs 3-4 arguments has different behavior.
|
|
@@ -438,10 +451,10 @@ export class TextField extends LitElement {
|
|
|
438
451
|
'textarea': this.type === 'textarea',
|
|
439
452
|
};
|
|
440
453
|
return html `
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
454
|
+
<span class="text-field ${classMap(classes)}">
|
|
455
|
+
${this.renderField()}
|
|
456
|
+
</span>
|
|
457
|
+
`;
|
|
445
458
|
}
|
|
446
459
|
updated(changedProperties) {
|
|
447
460
|
// Keep changedProperties arg so that subclasses may call it
|
|
@@ -454,7 +467,6 @@ export class TextField extends LitElement {
|
|
|
454
467
|
// before checking its value.
|
|
455
468
|
this.value = value;
|
|
456
469
|
}
|
|
457
|
-
this.internals.setFormValue(value);
|
|
458
470
|
// Sync validity when properties change, since validation properties may
|
|
459
471
|
// have changed.
|
|
460
472
|
this.syncValidity();
|
|
@@ -484,17 +496,17 @@ export class TextField extends LitElement {
|
|
|
484
496
|
}
|
|
485
497
|
renderLeadingIcon() {
|
|
486
498
|
return html `
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
499
|
+
<span class="icon leading" slot="start">
|
|
500
|
+
<slot name="leading-icon" @slotchange=${this.handleIconChange}></slot>
|
|
501
|
+
</span>
|
|
502
|
+
`;
|
|
491
503
|
}
|
|
492
504
|
renderTrailingIcon() {
|
|
493
505
|
return html `
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
506
|
+
<span class="icon trailing" slot="end">
|
|
507
|
+
<slot name="trailing-icon" @slotchange=${this.handleIconChange}></slot>
|
|
508
|
+
</span>
|
|
509
|
+
`;
|
|
498
510
|
}
|
|
499
511
|
renderInputOrTextarea() {
|
|
500
512
|
const style = { direction: this.textDirection };
|
|
@@ -518,13 +530,13 @@ export class TextField extends LitElement {
|
|
|
518
530
|
?readonly=${this.readOnly}
|
|
519
531
|
?required=${this.required}
|
|
520
532
|
rows=${this.rows}
|
|
533
|
+
cols=${this.cols}
|
|
521
534
|
.value=${live(this.value)}
|
|
522
535
|
@change=${this.handleChange}
|
|
523
536
|
@focusin=${this.handleFocusin}
|
|
524
537
|
@focusout=${this.handleFocusout}
|
|
525
538
|
@input=${this.handleInput}
|
|
526
|
-
@select=${this.redispatchEvent}
|
|
527
|
-
></textarea>
|
|
539
|
+
@select=${this.redispatchEvent}></textarea>
|
|
528
540
|
`;
|
|
529
541
|
}
|
|
530
542
|
const prefix = this.renderPrefix();
|
|
@@ -561,8 +573,7 @@ export class TextField extends LitElement {
|
|
|
561
573
|
@focusin=${this.handleFocusin}
|
|
562
574
|
@focusout=${this.handleFocusout}
|
|
563
575
|
@input=${this.handleInput}
|
|
564
|
-
@select=${this.redispatchEvent}
|
|
565
|
-
>
|
|
576
|
+
@select=${this.redispatchEvent} />
|
|
566
577
|
${suffix}
|
|
567
578
|
</div>
|
|
568
579
|
`;
|
|
@@ -635,22 +646,33 @@ export class TextField extends LitElement {
|
|
|
635
646
|
// validity. We do this to re-use native `<input>` validation messages.
|
|
636
647
|
const input = this.getInputOrTextarea();
|
|
637
648
|
if (this.hasCustomValidityError) {
|
|
638
|
-
input.setCustomValidity(this
|
|
649
|
+
input.setCustomValidity(this[internals].validationMessage);
|
|
639
650
|
}
|
|
640
651
|
else {
|
|
641
652
|
input.setCustomValidity('');
|
|
642
653
|
}
|
|
643
|
-
this
|
|
654
|
+
this[internals].setValidity(input.validity, input.validationMessage, this.getInputOrTextarea());
|
|
644
655
|
}
|
|
645
656
|
handleIconChange() {
|
|
646
657
|
this.hasLeadingIcon = this.leadingIcons.length > 0;
|
|
647
658
|
this.hasTrailingIcon = this.trailingIcons.length > 0;
|
|
648
659
|
}
|
|
649
|
-
|
|
660
|
+
connectedCallback() {
|
|
661
|
+
super.connectedCallback();
|
|
662
|
+
// Handles the case where the user submits the form and native validation
|
|
663
|
+
// error pops up. We want the error styles to show.
|
|
664
|
+
this.addEventListener('invalid', this.onInvalid);
|
|
665
|
+
}
|
|
666
|
+
disconnectedCallback() {
|
|
667
|
+
super.disconnectedCallback();
|
|
668
|
+
this.removeEventListener('invalid', this.onInvalid);
|
|
669
|
+
}
|
|
670
|
+
[getFormValue]() {
|
|
671
|
+
return this.value;
|
|
672
|
+
}
|
|
650
673
|
formResetCallback() {
|
|
651
674
|
this.reset();
|
|
652
675
|
}
|
|
653
|
-
/** @private */
|
|
654
676
|
formStateRestoreCallback(state) {
|
|
655
677
|
this.value = state;
|
|
656
678
|
}
|
|
@@ -664,12 +686,10 @@ export class TextField extends LitElement {
|
|
|
664
686
|
requestUpdateOnAriaChange(TextField);
|
|
665
687
|
})();
|
|
666
688
|
/** @nocollapse */
|
|
667
|
-
TextField.shadowRootOptions = {
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
property({ type: Boolean, reflect: true })
|
|
672
|
-
], TextField.prototype, "disabled", void 0);
|
|
689
|
+
TextField.shadowRootOptions = {
|
|
690
|
+
...LitElement.shadowRootOptions,
|
|
691
|
+
delegatesFocus: true,
|
|
692
|
+
};
|
|
673
693
|
__decorate([
|
|
674
694
|
property({ type: Boolean, reflect: true })
|
|
675
695
|
], TextField.prototype, "error", void 0);
|
|
@@ -706,6 +726,9 @@ __decorate([
|
|
|
706
726
|
__decorate([
|
|
707
727
|
property({ type: Number })
|
|
708
728
|
], TextField.prototype, "rows", void 0);
|
|
729
|
+
__decorate([
|
|
730
|
+
property({ type: Number })
|
|
731
|
+
], TextField.prototype, "cols", void 0);
|
|
709
732
|
__decorate([
|
|
710
733
|
property({ reflect: true })
|
|
711
734
|
], TextField.prototype, "inputMode", void 0);
|