Skip to content

Commit 0e9bfd5

Browse files
committed
Add tick
1 parent 3dd0d56 commit 0e9bfd5

File tree

3 files changed

+28
-12
lines changed

3 files changed

+28
-12
lines changed

src/App.svelte

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script>
2-
import { onMount, beforeUpdate, afterUpdate } from 'svelte'
2+
import { onMount } from 'svelte'
33
import { v4 as uuid } from 'uuid'
44
import AddTodoItem from './AddTodoItem.svelte'
55
import TodoItem from './TodoItem.svelte'
@@ -9,18 +9,9 @@
99
$: count = items.length;
1010
$: checkedCount = items.filter(({ checked }) => checked).length
1111
12-
beforeUpdate(() => {
13-
console.log('beforeUpdate called')
14-
});
15-
1612
onMount(async () => {
17-
console.log('onMount called')
1813
items = await getTodos()
1914
})
20-
21-
afterUpdate(() => {
22-
console.log('afterUpdate called')
23-
});
2415
2516
function handleAddTodoItem(event) {
2617
items = [...items, {

src/Form.svelte

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,23 @@
11
<script>
2-
import { createEventDispatcher } from 'svelte'
2+
import { createEventDispatcher, tick } from 'svelte'
3+
import { format } from './format'
4+
35
const dispath = createEventDispatcher()
46
57
export let title = ''
68
export let buttonTitle = ''
79
810
let text = ''
911
12+
async function handleTextChange(event) {
13+
const { selectionStart, selectionEnd, value } = this;
14+
text = format(event.target.value)
15+
16+
await tick();
17+
this.selectionStart = selectionStart;
18+
this.selectionEnd = selectionEnd;
19+
}
20+
1021
function handleAddClick() {
1122
dispath('add', text)
1223
}
@@ -17,7 +28,8 @@
1728
<input
1829
class="input"
1930
id="text"
20-
bind:value={text}
31+
value={text}
32+
on:input={handleTextChange}
2133
/>
2234
<button on:click={handleAddClick}>{buttonTitle}</button>
2335
</div>

src/format.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export function format(value) {
2+
const formatted = value
3+
.replace(/\D/g, '')
4+
.replace(/(\d{1,2})(\d{1})?(\d{1,3})?(\d{1,4})?/, function(_, p1, p2, p3, p4) {
5+
let output = ""
6+
if (p1) output = `(${p1}`;
7+
if (p2) output += `${p2})`;
8+
if (p3) output += ` ${p3}`
9+
if (p4) output += ` ${p4}`
10+
return output;
11+
});
12+
return formatted;
13+
}

0 commit comments

Comments
 (0)