Skip to content

Commit 0a9b508

Browse files
committed
fix: forward blur and focus events from textfield
Fixes #328
1 parent e0ab4cf commit 0a9b508

File tree

4 files changed

+21
-22
lines changed

4 files changed

+21
-22
lines changed

packages/select/Select.svelte

+1-1
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@
271271
export let dirty = false;
272272
273273
// Some trickery to detect uninitialized values but also have the right types.
274-
export let invalid: boolean = (uninitializedValue as unknown) as boolean;
274+
export let invalid: boolean = uninitializedValue as unknown as boolean;
275275
export let updateInvalid: boolean = isUninitializedValue(invalid);
276276
if (isUninitializedValue(invalid)) {
277277
invalid = false;

packages/textfield/Input.svelte

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
})}
99
on:input={(e) => type !== 'file' && valueUpdater(e)}
1010
on:change={changeHandler}
11+
on:blur
12+
on:focus
1113
{type}
1214
{placeholder}
1315
{...valueProp}
@@ -65,7 +67,7 @@
6567
function toNumber(value: string) {
6668
if (value === '') {
6769
const nan = new Number(Number.NaN);
68-
((nan as unknown) as Array<any>).length = 0;
70+
(nan as unknown as Array<any>).length = 0;
6971
return nan as number;
7072
}
7173
return +value;

packages/textfield/Textarea.svelte

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
})}
99
style={`${resizable ? '' : 'resize: none; '}${style}`}
1010
on:change={changeHandler}
11+
on:blur
12+
on:focus
1113
bind:value
1214
{...internalAttrs}
1315
{...$$restProps}

packages/textfield/Textfield.svelte

+15-20
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@
113113
{updateInvalid}
114114
on:blur={() => (focused = false)}
115115
on:focus={() => (focused = true)}
116-
on:blur
117-
on:focus
116+
on:blur={(event) => dispatch(element, 'blur', event)}
117+
on:focus={(event) => dispatch(element, 'focus', event)}
118118
aria-controls={helperId}
119119
aria-describedby={helperId}
120120
{...prefixFilter($$restProps, 'input$')}
@@ -138,8 +138,8 @@
138138
{updateInvalid}
139139
on:blur={() => (focused = false)}
140140
on:focus={() => (focused = true)}
141-
on:blur
142-
on:focus
141+
on:blur={(event) => dispatch(element, 'blur', event)}
142+
on:focus={(event) => dispatch(element, 'focus', event)}
143143
aria-controls={helperId}
144144
aria-describedby={helperId}
145145
{...noLabel && label != null ? { placeholder: label } : {}}
@@ -250,6 +250,7 @@
250250
prefixFilter,
251251
useActions,
252252
ActionArray,
253+
dispatch,
253254
} from '@smui/common/internal/index.js';
254255
import { ContextFragment } from '@smui/common';
255256
import Ripple from '@smui/ripple';
@@ -289,12 +290,9 @@
289290
export let type = 'text';
290291
291292
// Some trickery to detect uninitialized values but also have the right types.
292-
export let value:
293-
| string
294-
| number
295-
| null
296-
| undefined = (uninitializedValue as unknown) as undefined;
297-
export let files: FileList | null = (uninitializedValue as unknown) as null;
293+
export let value: string | number | null | undefined =
294+
uninitializedValue as unknown as undefined;
295+
export let files: FileList | null = uninitializedValue as unknown as null;
298296
const valued = !isUninitializedValue(value) || !isUninitializedValue(files);
299297
if (isUninitializedValue(value)) {
300298
value = undefined;
@@ -303,7 +301,7 @@
303301
files = null;
304302
}
305303
306-
export let invalid: boolean = (uninitializedValue as unknown) as boolean;
304+
export let invalid: boolean = uninitializedValue as unknown as boolean;
307305
export let updateInvalid: boolean = isUninitializedValue(invalid);
308306
if (isUninitializedValue(invalid)) {
309307
invalid = false;
@@ -313,14 +311,12 @@
313311
export let dirty = false;
314312
export let prefix: string | undefined = undefined;
315313
export let suffix: string | undefined = undefined;
316-
export let validateOnValueChange:
317-
| UninitializedValue
318-
| boolean = updateInvalid;
314+
export let validateOnValueChange: UninitializedValue | boolean =
315+
updateInvalid;
319316
export let useNativeValidation: UninitializedValue | boolean = updateInvalid;
320317
export let withLeadingIcon: UninitializedValue | boolean = uninitializedValue;
321-
export let withTrailingIcon:
322-
| UninitializedValue
323-
| boolean = uninitializedValue;
318+
export let withTrailingIcon: UninitializedValue | boolean =
319+
uninitializedValue;
324320
325321
// Components
326322
export let input: Input | Textarea | undefined = undefined;
@@ -346,9 +342,8 @@
346342
let leadingIcon: MDCTextFieldIconFoundation | undefined = undefined;
347343
let trailingIcon: MDCTextFieldIconFoundation | undefined = undefined;
348344
let helperText: MDCTextFieldHelperTextFoundation | undefined = undefined;
349-
let characterCounter:
350-
| MDCTextFieldCharacterCounterFoundation
351-
| undefined = undefined;
345+
let characterCounter: MDCTextFieldCharacterCounterFoundation | undefined =
346+
undefined;
352347
353348
$: inputElement = input && input.getElement();
354349

0 commit comments

Comments
 (0)