From e230db81151ad77f8c09208b6a946148e4fada08 Mon Sep 17 00:00:00 2001 From: metonym Date: Thu, 2 Jun 2022 18:39:49 -0700 Subject: [PATCH] feat: forward paste event to input/textarea elements (#1332) * chore(deps-dev): upgrade sveld, svelte-check * feat: forward paste event to input/textarea elements * Run "yarn build:docs" * test: assert paste event --- COMPONENT_INDEX.md | 10 +++++ docs/src/COMPONENT_API.json | 26 ++++++++---- package.json | 4 +- src/ComboBox/ComboBox.svelte | 1 + src/DatePicker/DatePickerInput.svelte | 1 + src/MultiSelect/MultiSelect.svelte | 1 + src/NumberInput/NumberInput.svelte | 1 + src/Search/Search.svelte | 1 + src/TextArea/TextArea.svelte | 3 +- src/TextInput/PasswordInput.svelte | 1 + src/TextInput/TextInput.svelte | 1 + src/TimePicker/TimePicker.svelte | 1 + src/UIShell/HeaderSearch.svelte | 1 + tests/DatePicker.test.svelte | 2 +- tests/HeaderSearch.svelte | 1 + tests/MultiSelect.test.svelte | 1 + tests/NumberInput.test.svelte | 1 + tests/PasswordInput.test.svelte | 1 + tests/Search.test.svelte | 2 +- tests/TextArea.test.svelte | 37 +++-------------- tests/TextInput.test.svelte | 1 + tests/TimePicker.test.svelte | 7 +++- types/ComboBox/ComboBox.svelte.d.ts | 1 + types/DatePicker/DatePickerInput.svelte.d.ts | 1 + types/MultiSelect/MultiSelect.svelte.d.ts | 1 + types/NumberInput/NumberInput.svelte.d.ts | 1 + types/Search/Search.svelte.d.ts | 1 + types/TextArea/TextArea.svelte.d.ts | 1 + types/TextInput/PasswordInput.svelte.d.ts | 1 + types/TextInput/TextInput.svelte.d.ts | 1 + types/TimePicker/TimePicker.svelte.d.ts | 1 + types/UIShell/HeaderSearch.svelte.d.ts | 1 + yarn.lock | 42 +++++++++++++------- 33 files changed, 96 insertions(+), 61 deletions(-) diff --git a/COMPONENT_INDEX.md b/COMPONENT_INDEX.md index d66ded36..60816426 100644 --- a/COMPONENT_INDEX.md +++ b/COMPONENT_INDEX.md @@ -694,6 +694,7 @@ export interface ComboBoxItem { | keyup | forwarded | -- | | focus | forwarded | -- | | blur | forwarded | -- | +| paste | forwarded | -- | | clear | forwarded | -- | | scroll | forwarded | -- | @@ -1106,6 +1107,7 @@ None. | keydown | forwarded | -- | | keyup | forwarded | -- | | blur | forwarded | -- | +| paste | forwarded | -- | ## `DatePickerSkeleton` @@ -1830,6 +1832,7 @@ export interface HeaderSearchResult { | focus | forwarded | -- | | blur | forwarded | -- | | keydown | forwarded | -- | +| paste | forwarded | -- | ## `HeaderUtilities` @@ -2390,6 +2393,7 @@ export interface MultiSelectItem { | keydown | forwarded | -- | | keyup | forwarded | -- | | focus | forwarded | -- | +| paste | forwarded | -- | ## `NotificationActionButton` @@ -2508,6 +2512,7 @@ export type NumberInputTranslationId = "increment" | "decrement"; | mouseleave | forwarded | -- | | focus | forwarded | -- | | blur | forwarded | -- | +| paste | forwarded | -- | ## `NumberInputSkeleton` @@ -2769,6 +2774,7 @@ None. | keyup | forwarded | -- | | focus | forwarded | -- | | blur | forwarded | -- | +| paste | forwarded | -- | ## `Popover` @@ -3108,6 +3114,7 @@ None. | blur | forwarded | -- | | keydown | forwarded | -- | | keyup | forwarded | -- | +| paste | forwarded | -- | | clear | dispatched | null | ## `SearchSkeleton` @@ -4046,6 +4053,7 @@ None. | keyup | forwarded | -- | | focus | forwarded | -- | | blur | forwarded | -- | +| paste | forwarded | -- | ## `TextAreaSkeleton` @@ -4113,6 +4121,7 @@ None. | keyup | forwarded | -- | | focus | forwarded | -- | | blur | forwarded | -- | +| paste | forwarded | -- | ## `TextInputSkeleton` @@ -4255,6 +4264,7 @@ export type CarbonTheme = "white" | "g10" | "g80" | "g90" | "g100"; | keyup | forwarded | -- | | focus | forwarded | -- | | blur | forwarded | -- | +| paste | forwarded | -- | ## `TimePickerSelect` diff --git a/docs/src/COMPONENT_API.json b/docs/src/COMPONENT_API.json index 51bddad8..dfc29c4c 100644 --- a/docs/src/COMPONENT_API.json +++ b/docs/src/COMPONENT_API.json @@ -1759,6 +1759,7 @@ { "type": "forwarded", "name": "keyup", "element": "input" }, { "type": "forwarded", "name": "focus", "element": "input" }, { "type": "forwarded", "name": "blur", "element": "input" }, + { "type": "forwarded", "name": "paste", "element": "input" }, { "type": "forwarded", "name": "clear", "element": "ListBoxSelection" }, { "type": "forwarded", "name": "scroll", "element": "ListBoxMenu" } ], @@ -3168,7 +3169,8 @@ { "type": "forwarded", "name": "input", "element": "input" }, { "type": "forwarded", "name": "keydown", "element": "input" }, { "type": "forwarded", "name": "keyup", "element": "input" }, - { "type": "forwarded", "name": "blur", "element": "input" } + { "type": "forwarded", "name": "blur", "element": "input" }, + { "type": "forwarded", "name": "paste", "element": "input" } ], "typedefs": [], "rest_props": { "type": "Element", "name": "input" } @@ -5286,7 +5288,8 @@ { "type": "forwarded", "name": "input", "element": "input" }, { "type": "forwarded", "name": "focus", "element": "input" }, { "type": "forwarded", "name": "blur", "element": "input" }, - { "type": "forwarded", "name": "keydown", "element": "input" } + { "type": "forwarded", "name": "keydown", "element": "input" }, + { "type": "forwarded", "name": "paste", "element": "input" } ], "typedefs": [ { @@ -7294,7 +7297,8 @@ }, { "type": "forwarded", "name": "keydown", "element": "input" }, { "type": "forwarded", "name": "keyup", "element": "input" }, - { "type": "forwarded", "name": "focus", "element": "input" } + { "type": "forwarded", "name": "focus", "element": "input" }, + { "type": "forwarded", "name": "paste", "element": "input" } ], "typedefs": [ { @@ -7732,7 +7736,8 @@ { "type": "forwarded", "name": "mouseenter", "element": "div" }, { "type": "forwarded", "name": "mouseleave", "element": "div" }, { "type": "forwarded", "name": "focus", "element": "input" }, - { "type": "forwarded", "name": "blur", "element": "input" } + { "type": "forwarded", "name": "blur", "element": "input" }, + { "type": "forwarded", "name": "paste", "element": "input" } ], "typedefs": [ { @@ -8745,7 +8750,8 @@ { "type": "forwarded", "name": "keydown", "element": "input" }, { "type": "forwarded", "name": "keyup", "element": "input" }, { "type": "forwarded", "name": "focus", "element": "input" }, - { "type": "forwarded", "name": "blur", "element": "input" } + { "type": "forwarded", "name": "blur", "element": "input" }, + { "type": "forwarded", "name": "paste", "element": "input" } ], "typedefs": [], "rest_props": { "type": "Element", "name": "input" } @@ -9931,6 +9937,7 @@ { "type": "forwarded", "name": "blur", "element": "input" }, { "type": "forwarded", "name": "keydown", "element": "input" }, { "type": "forwarded", "name": "keyup", "element": "input" }, + { "type": "forwarded", "name": "paste", "element": "input" }, { "type": "dispatched", "name": "clear", "detail": "null" } ], "typedefs": [], @@ -12379,7 +12386,8 @@ { "type": "forwarded", "name": "keydown", "element": "textarea" }, { "type": "forwarded", "name": "keyup", "element": "textarea" }, { "type": "forwarded", "name": "focus", "element": "textarea" }, - { "type": "forwarded", "name": "blur", "element": "textarea" } + { "type": "forwarded", "name": "blur", "element": "textarea" }, + { "type": "forwarded", "name": "paste", "element": "textarea" } ], "typedefs": [], "rest_props": { "type": "Element", "name": "textarea" } @@ -12658,7 +12666,8 @@ { "type": "forwarded", "name": "keydown", "element": "input" }, { "type": "forwarded", "name": "keyup", "element": "input" }, { "type": "forwarded", "name": "focus", "element": "input" }, - { "type": "forwarded", "name": "blur", "element": "input" } + { "type": "forwarded", "name": "blur", "element": "input" }, + { "type": "forwarded", "name": "paste", "element": "input" } ], "typedefs": [], "rest_props": { "type": "Element", "name": "input" } @@ -13079,7 +13088,8 @@ { "type": "forwarded", "name": "keydown", "element": "input" }, { "type": "forwarded", "name": "keyup", "element": "input" }, { "type": "forwarded", "name": "focus", "element": "input" }, - { "type": "forwarded", "name": "blur", "element": "input" } + { "type": "forwarded", "name": "blur", "element": "input" }, + { "type": "forwarded", "name": "paste", "element": "input" } ], "typedefs": [], "rest_props": { "type": "Element", "name": "input" } diff --git a/package.json b/package.json index 09950924..811eee3f 100644 --- a/package.json +++ b/package.json @@ -38,9 +38,9 @@ "rollup-plugin-svelte": "^7.1.0", "rollup-plugin-terser": "^7.0.2", "sass": "^1.49.11", - "sveld": "^0.17.0", + "sveld": "^0.17.1", "svelte": "^3.46.6", - "svelte-check": "^2.4.6", + "svelte-check": "^2.7.2", "typescript": "^4.6.3" }, "lint-staged": { diff --git a/src/ComboBox/ComboBox.svelte b/src/ComboBox/ComboBox.svelte index 9b293ac9..b1100b25 100644 --- a/src/ComboBox/ComboBox.svelte +++ b/src/ComboBox/ComboBox.svelte @@ -334,6 +334,7 @@ ref.focus(); } }}" + on:paste /> {#if invalid} diff --git a/src/DatePicker/DatePickerInput.svelte b/src/DatePicker/DatePickerInput.svelte index 2a2fd815..0ceebea6 100644 --- a/src/DatePicker/DatePickerInput.svelte +++ b/src/DatePicker/DatePickerInput.svelte @@ -135,6 +135,7 @@ on:blur="{({ relatedTarget }) => { blurInput(relatedTarget); }}" + on:paste /> {#if !$hasCalendar} {#if invalid} diff --git a/src/MultiSelect/MultiSelect.svelte b/src/MultiSelect/MultiSelect.svelte index f17f12c4..0177aa98 100644 --- a/src/MultiSelect/MultiSelect.svelte +++ b/src/MultiSelect/MultiSelect.svelte @@ -446,6 +446,7 @@ on:keyup on:focus on:blur + on:paste disabled="{disabled}" placeholder="{placeholder}" id="{id}" diff --git a/src/NumberInput/NumberInput.svelte b/src/NumberInput/NumberInput.svelte index 84b046a3..db91fc8d 100644 --- a/src/NumberInput/NumberInput.svelte +++ b/src/NumberInput/NumberInput.svelte @@ -206,6 +206,7 @@ on:input="{onInput}" on:focus on:blur + on:paste /> {#if invalid} diff --git a/src/Search/Search.svelte b/src/Search/Search.svelte index b6b04f99..9980badb 100644 --- a/src/Search/Search.svelte +++ b/src/Search/Search.svelte @@ -148,6 +148,7 @@ } }}" on:keyup + on:paste />