Skip to content
This repository was archived by the owner on Jan 13, 2025. It is now read-only.

Commit aeb3f87

Browse files
author
Matt Goo
authored
feat(form-field): ts convert (#4327)
1 parent 54d25c1 commit aeb3f87

File tree

7 files changed

+46
-92
lines changed

7 files changed

+46
-92
lines changed

packages/material-components-web/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import * as dialog from '@material/dialog/index';
2929
import * as dom from '@material/dom/index.ts';
3030
import * as drawer from '@material/drawer/index';
3131
import * as floatingLabel from '@material/floating-label/index';
32-
import * as formField from '@material/form-field/index';
32+
import * as formField from '@material/form-field/index.ts';
3333
import * as gridList from '@material/grid-list/index';
3434
import * as iconButton from '@material/icon-button/index';
3535
import * as iconToggle from '@material/icon-toggle/index';
@@ -42,7 +42,7 @@ import * as notchedOutline from '@material/notched-outline/index';
4242
import * as radio from '@material/radio/index';
4343
import * as ripple from '@material/ripple/index.ts';
4444
import * as select from '@material/select/index';
45-
import * as selectionControl from '@material/selection-control/index';
45+
import * as selectionControl from '@material/selection-control/index.ts';
4646
import * as slider from '@material/slider/index';
4747
import * as snackbar from '@material/snackbar/index';
4848
import * as switchControl from '@material/switch/index';

packages/mdc-form-field/adapter.js renamed to packages/mdc-form-field/adapter.ts

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,39 +21,27 @@
2121
* THE SOFTWARE.
2222
*/
2323

24-
/* eslint no-unused-vars: [2, {"args": "none"}] */
25-
2624
/**
2725
* Adapter for MDC Form Field. Provides an interface for managing
2826
* - event handlers
2927
* - ripple activation
3028
*
31-
* Additionally, provides type information for the adapter to the Closure
32-
* compiler.
33-
*
3429
* Implement this adapter for your framework of choice to delegate updates to
3530
* the component in your framework of choice. See architecture documentation
3631
* for more details.
3732
* https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
3833
*
39-
* @record
4034
*/
41-
class MDCFormFieldAdapter {
42-
/**
43-
* @param {string} type
44-
* @param {!EventListener} handler
45-
*/
46-
registerInteractionHandler(type, handler) {}
47-
48-
/**
49-
* @param {string} type
50-
* @param {!EventListener} handler
51-
*/
52-
deregisterInteractionHandler(type, handler) {}
53-
54-
activateInputRipple() {}
5535

56-
deactivateInputRipple() {}
36+
interface MDCFormFieldAdapter {
37+
activateInputRipple(): void;
38+
deactivateInputRipple(): void;
39+
deregisterInteractionHandler<K extends keyof GlobalEventHandlersEventMap>(
40+
type: K, handler: (evt: GlobalEventHandlersEventMap[K],
41+
) => void): void;
42+
registerInteractionHandler<K extends keyof GlobalEventHandlersEventMap>(
43+
type: K, handler: (evt: GlobalEventHandlersEventMap[K],
44+
) => void): void;
5745
}
5846

59-
export default MDCFormFieldAdapter;
47+
export {MDCFormFieldAdapter as default, MDCFormFieldAdapter};

packages/mdc-form-field/constants.js renamed to packages/mdc-form-field/constants.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,10 @@
2121
* THE SOFTWARE.
2222
*/
2323

24-
/** @enum {string} */
2524
const cssClasses = {
2625
ROOT: 'mdc-form-field',
2726
};
2827

29-
/** @enum {string} */
3028
const strings = {
3129
LABEL_SELECTOR: '.mdc-form-field > label',
3230
};

packages/mdc-form-field/foundation.js renamed to packages/mdc-form-field/foundation.ts

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,39 +22,34 @@
2222
*/
2323

2424
import MDCFoundation from '@material/base/foundation';
25-
import MDCFormFieldAdapter from './adapter';
25+
import {MDCFormFieldAdapter} from './adapter';
2626
import {cssClasses, strings} from './constants';
2727

28-
/**
29-
* @extends {MDCFoundation<!MDCFormFieldAdapter>}
30-
*/
31-
class MDCFormFieldFoundation extends MDCFoundation {
32-
/** @return enum {cssClasses} */
28+
class MDCFormFieldFoundation extends MDCFoundation<MDCFormFieldAdapter> {
3329
static get cssClasses() {
3430
return cssClasses;
3531
}
3632

37-
/** @return enum {strings} */
3833
static get strings() {
3934
return strings;
4035
}
4136

42-
/** @return {!MDCFormFieldAdapter} */
43-
static get defaultAdapter() {
37+
static get defaultAdapter(): MDCFormFieldAdapter {
4438
return {
45-
registerInteractionHandler: (/* type: string, handler: EventListener */) => {},
46-
deregisterInteractionHandler: (/* type: string, handler: EventListener */) => {},
47-
activateInputRipple: () => {},
48-
deactivateInputRipple: () => {},
39+
activateInputRipple: () => undefined,
40+
deactivateInputRipple: () => undefined,
41+
deregisterInteractionHandler: () => undefined,
42+
registerInteractionHandler: () => undefined,
4943
};
5044
}
5145

52-
constructor(adapter) {
46+
private clickHandler_: () => void;
47+
48+
constructor(adapter: MDCFormFieldAdapter) {
5349
super(Object.assign(MDCFormFieldFoundation.defaultAdapter, adapter));
5450

5551
/** @private {!EventListener} */
56-
this.clickHandler_ = /** @type {!EventListener} */ (
57-
() => this.handleClick_());
52+
this.clickHandler_ = () => this.handleClick_();
5853
}
5954

6055
init() {
@@ -65,11 +60,10 @@ class MDCFormFieldFoundation extends MDCFoundation {
6560
this.adapter_.deregisterInteractionHandler('click', this.clickHandler_);
6661
}
6762

68-
/** @private */
69-
handleClick_() {
63+
private handleClick_() {
7064
this.adapter_.activateInputRipple();
7165
requestAnimationFrame(() => this.adapter_.deactivateInputRipple());
7266
}
7367
}
7468

75-
export default MDCFormFieldFoundation;
69+
export {MDCFormFieldFoundation as default, MDCFormFieldFoundation};

packages/mdc-form-field/index.js renamed to packages/mdc-form-field/index.ts

Lines changed: 11 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,50 +22,31 @@
2222
*/
2323

2424
import MDCComponent from '@material/base/component';
25-
import MDCFormFieldFoundation from './foundation';
26-
/* eslint-disable no-unused-vars */
2725
import {MDCSelectionControl} from '@material/selection-control/index';
28-
/* eslint-enable no-unused-vars */
26+
import {MDCFormFieldFoundation} from './foundation';
2927

30-
/**
31-
* @extends MDCComponent<!MDCFormFieldFoundation>
32-
*/
33-
class MDCFormField extends MDCComponent {
34-
static attachTo(root) {
28+
class MDCFormField extends MDCComponent<MDCFormFieldFoundation> {
29+
static attachTo(root: HTMLElement) {
3530
return new MDCFormField(root);
3631
}
3732

38-
/** @param {?MDCSelectionControl} input */
39-
set input(input) {
33+
private input_?: MDCSelectionControl;
34+
35+
set input(input: MDCSelectionControl | undefined) {
4036
this.input_ = input;
4137
}
4238

43-
/** @return {?MDCSelectionControl} */
44-
get input() {
39+
get input(): MDCSelectionControl | undefined {
4540
return this.input_;
4641
}
4742

48-
constructor(...args) {
49-
super(...args);
50-
51-
/** @private {?MDCSelectionControl} */
52-
this.input_;
53-
}
54-
55-
/**
56-
* @return {!Element}
57-
* @private
58-
*/
59-
get label_() {
43+
private get label_(): Element | null {
6044
const {LABEL_SELECTOR} = MDCFormFieldFoundation.strings;
61-
return /** @type {!Element} */ (this.root_.querySelector(LABEL_SELECTOR));
45+
return this.root_.querySelector(LABEL_SELECTOR);
6246
}
6347

64-
/** @return {!MDCFormFieldFoundation} */
6548
getDefaultFoundation() {
6649
return new MDCFormFieldFoundation({
67-
registerInteractionHandler: (type, handler) => this.label_.addEventListener(type, handler),
68-
deregisterInteractionHandler: (type, handler) => this.label_.removeEventListener(type, handler),
6950
activateInputRipple: () => {
7051
if (this.input_ && this.input_.ripple) {
7152
this.input_.ripple.activate();
@@ -76,6 +57,8 @@ class MDCFormField extends MDCComponent {
7657
this.input_.ripple.deactivate();
7758
}
7859
},
60+
deregisterInteractionHandler: (type, handler) => this.label_ && this.label_.removeEventListener(type, handler),
61+
registerInteractionHandler: (type, handler) => this.label_ && this.label_.addEventListener(type, handler),
7962
});
8063
}
8164
}

packages/mdc-selection-control/index.js renamed to packages/mdc-selection-control/index.ts

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,17 @@
2121
* THE SOFTWARE.
2222
*/
2323

24-
/* eslint-disable no-unused-vars */
2524
import {MDCRipple} from '@material/ripple/index';
26-
/* eslint-enable no-unused-vars */
2725

28-
/**
29-
* @typedef {{
30-
* checked: boolean,
31-
* indeterminate: boolean,
32-
* disabled: boolean,
33-
* value: ?string
34-
* }}
35-
*/
36-
let MDCSelectionControlState;
26+
interface MDCSelectionControlState {
27+
checked: boolean;
28+
indeterminate: boolean;
29+
disabled: boolean;
30+
value?: string;
31+
}
3732

38-
/**
39-
* @record
40-
*/
41-
class MDCSelectionControl {
42-
/** @return {?MDCRipple} */
43-
get ripple() {}
33+
interface MDCSelectionControl {
34+
readonly ripple: MDCRipple | undefined;
4435
}
4536

4637
export {MDCSelectionControlState, MDCSelectionControl};

scripts/webpack/js-bundle-factory.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ class JsBundleFactory {
161161
dom: getAbsolutePath('/packages/mdc-dom/index.ts'),
162162
drawer: getAbsolutePath('/packages/mdc-drawer/index.js'),
163163
floatingLabel: getAbsolutePath('/packages/mdc-floating-label/index.js'),
164-
formField: getAbsolutePath('/packages/mdc-form-field/index.js'),
164+
formField: getAbsolutePath('/packages/mdc-form-field/index.ts'),
165165
gridList: getAbsolutePath('/packages/mdc-grid-list/index.js'),
166166
iconButton: getAbsolutePath('/packages/mdc-icon-button/index.js'),
167167
iconToggle: getAbsolutePath('/packages/mdc-icon-toggle/index.js'),
@@ -174,7 +174,7 @@ class JsBundleFactory {
174174
radio: getAbsolutePath('/packages/mdc-radio/index.js'),
175175
ripple: getAbsolutePath('/packages/mdc-ripple/index.ts'),
176176
select: getAbsolutePath('/packages/mdc-select/index.js'),
177-
selectionControl: getAbsolutePath('/packages/mdc-selection-control/index.js'),
177+
selectionControl: getAbsolutePath('/packages/mdc-selection-control/index.ts'),
178178
slider: getAbsolutePath('/packages/mdc-slider/index.js'),
179179
snackbar: getAbsolutePath('/packages/mdc-snackbar/index.js'),
180180
switch: getAbsolutePath('/packages/mdc-switch/index.js'),

0 commit comments

Comments
 (0)