Adrien Denat commited on
Commit
44834c9
1 Parent(s): 5ed4c3b

only apply autofocus on desktop viewport sizes (#183)

Browse files

* only apply autofocus on desktop viewport sizes

* use onMount instead of reactive statement so callback doesn't trigger on resize event

* remove dead comment

src/lib/components/chat/ChatInput.svelte CHANGED
@@ -1,12 +1,17 @@
1
  <script lang="ts">
2
- import { createEventDispatcher } from "svelte";
3
 
4
  export let value = "";
5
  export let minRows = 1;
6
  export let maxRows: null | number = null;
7
  export let placeholder = "";
8
  export let disabled = false;
9
- export let autofocus = false;
 
 
 
 
 
10
 
11
  const dispatch = createEventDispatcher<{ submit: void }>();
12
 
@@ -21,16 +26,21 @@
21
  }
22
  }
23
 
24
- let textareaElement: HTMLTextAreaElement;
 
 
 
 
25
  </script>
26
 
 
 
27
  <div class="relative min-w-0 flex-1">
28
  <pre
29
  class="invisible whitespace-pre-wrap p-3"
30
  aria-hidden="true"
31
- style="min-height: {minHeight}; max-height: {maxHeight}">{value + "\n"}</pre>
32
 
33
- <!-- svelte-ignore a11y-autofocus -->
34
  <textarea
35
  enterkeyhint="send"
36
  tabindex="0"
@@ -41,7 +51,6 @@
41
  {disabled}
42
  on:keydown={handleKeydown}
43
  {placeholder}
44
- {autofocus}
45
  />
46
  </div>
47
 
 
1
  <script lang="ts">
2
+ import { createEventDispatcher, onMount } from "svelte";
3
 
4
  export let value = "";
5
  export let minRows = 1;
6
  export let maxRows: null | number = null;
7
  export let placeholder = "";
8
  export let disabled = false;
9
+
10
+ // Approximate width from which we disable autofocus
11
+ const TABLET_VIEWPORT_WIDTH = 768;
12
+
13
+ let innerWidth = 0;
14
+ let textareaElement: HTMLTextAreaElement;
15
 
16
  const dispatch = createEventDispatcher<{ submit: void }>();
17
 
 
26
  }
27
  }
28
 
29
+ onMount(() => {
30
+ if (innerWidth > TABLET_VIEWPORT_WIDTH) {
31
+ textareaElement.focus();
32
+ }
33
+ });
34
  </script>
35
 
36
+ <svelte:window bind:innerWidth />
37
+
38
  <div class="relative min-w-0 flex-1">
39
  <pre
40
  class="invisible whitespace-pre-wrap p-3"
41
  aria-hidden="true"
42
+ style="min-height: {minHeight}; max-height: {maxHeight}">{(value || " ") + "\n"}</pre>
43
 
 
44
  <textarea
45
  enterkeyhint="send"
46
  tabindex="0"
 
51
  {disabled}
52
  on:keydown={handleKeydown}
53
  {placeholder}
 
54
  />
55
  </div>
56
 
src/lib/components/chat/ChatWindow.svelte CHANGED
@@ -65,7 +65,6 @@
65
  placeholder="Ask anything"
66
  bind:value={message}
67
  on:submit={handleSubmit}
68
- autofocus
69
  maxRows={4}
70
  />
71
  <button
 
65
  placeholder="Ask anything"
66
  bind:value={message}
67
  on:submit={handleSubmit}
 
68
  maxRows={4}
69
  />
70
  <button