Skip to content

Commit 40e61d8

Browse files
committed
fix: wip
1 parent 3a79f5f commit 40e61d8

File tree

4 files changed

+715
-973
lines changed

4 files changed

+715
-973
lines changed

apps/site/package.json

+9-9
Original file line numberDiff line numberDiff line change
@@ -33,26 +33,26 @@
3333
},
3434
"dependencies": {
3535
"svelte-tel-input": "workspace:*",
36-
"svelte": "^5.15.0"
36+
"svelte": "^5.19.9"
3737
},
3838
"devDependencies": {
3939
"@macfja/svelte-persistent-store": "^2.4.2",
40-
"@playwright/test": "^1.49.1",
41-
"@sveltejs/adapter-static": "^3.0.6",
42-
"@sveltejs/kit": "^2.13.0",
40+
"@playwright/test": "^1.50.1",
41+
"@sveltejs/adapter-static": "^3.0.8",
42+
"@sveltejs/kit": "^2.17.1",
4343
"@sveltejs/vite-plugin-svelte": "^5.0.3",
4444
"@types/micromatch": "^4.0.9",
4545
"autoprefixer": "^10.4.20",
4646
"cssnano": "^7.0.6",
4747
"dotenv": "^16.4.7",
48-
"postcss": "^8.4.49",
48+
"postcss": "^8.5.1",
4949
"schema-dts": "^1.1.2",
50-
"svelte-check": "^4.1.1",
51-
"svelte2tsx": "^0.7.31",
50+
"svelte-check": "^4.1.4",
51+
"svelte2tsx": "^0.7.34",
5252
"tailwindcss": "^3.4.17",
5353
"tslib": "^2.8.1",
54-
"typescript": "^5.7.2",
55-
"vite": "^6.0.5"
54+
"typescript": "^5.7.3",
55+
"vite": "^6.1.0"
5656
},
5757
"type": "module",
5858
"license": "MIT"

packages/svelte-tel-input/package.json

+13-13
Original file line numberDiff line numberDiff line change
@@ -45,29 +45,29 @@
4545
"libphonenumber-js": "1.10.43"
4646
},
4747
"devDependencies": {
48-
"@sveltejs/adapter-auto": "3.3.1",
49-
"@sveltejs/kit": "^2.13.0",
50-
"@sveltejs/package": "^2.3.7",
48+
"@sveltejs/adapter-auto": "4.0.0",
49+
"@sveltejs/kit": "^2.17.1",
50+
"@sveltejs/package": "^2.3.10",
5151
"@sveltejs/vite-plugin-svelte": "^5.0.3",
5252
"@testing-library/jest-dom": "6.6.3",
5353
"@testing-library/svelte": "^5.2.6",
54-
"@testing-library/user-event": "^14.5.2",
54+
"@testing-library/user-event": "^14.6.1",
5555
"@types/micromatch": "^4.0.9",
5656
"autoprefixer": "^10.4.20",
5757
"cssnano": "^7.0.6",
5858
"dotenv": "^16.4.7",
59-
"jsdom": "^25.0.1",
59+
"jsdom": "^26.0.0",
6060
"micromatch": "^4.0.8",
61-
"postcss": "^8.4.49",
62-
"publint": "^0.2.12",
63-
"svelte": "^5.15.0",
64-
"svelte-check": "^4.1.1",
65-
"svelte2tsx": "^0.7.31",
61+
"postcss": "^8.5.1",
62+
"publint": "^0.3.4",
63+
"svelte": "^5.19.9",
64+
"svelte-check": "^4.1.4",
65+
"svelte2tsx": "^0.7.34",
6666
"tailwindcss": "^3.4.17",
6767
"tslib": "^2.8.1",
68-
"typescript": "^5.7.2",
69-
"vite": "^6.0.5",
70-
"vitest": "^2.1.8"
68+
"typescript": "^5.7.3",
69+
"vite": "^6.1.0",
70+
"vitest": "^3.0.5"
7171
},
7272
"type": "module",
7373
"license": "MIT",

packages/svelte-tel-input/src/lib/utils/directives/cursorPosition.ts

+22-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ interface GetCursorPositionProps {
55
cursorPositionAfterInput: number;
66
leftOffset?: number;
77
deletion?: 'forward' | 'backward' | undefined;
8+
isReplacement?: boolean;
89
}
910

1011
export const isNumeric = (str?: string) => {
@@ -18,7 +19,8 @@ export const getCursorPosition = ({
1819
phoneAfterFormatted,
1920
cursorPositionAfterInput,
2021
leftOffset = 0,
21-
deletion
22+
deletion,
23+
isReplacement
2224
}: GetCursorPositionProps) => {
2325
if (cursorPositionAfterInput < leftOffset) {
2426
return leftOffset;
@@ -59,6 +61,25 @@ export const getCursorPosition = ({
5961
let cursorPosition = 0;
6062
let digitsCounter = 0;
6163

64+
// For replacements, we want to position after the last replaced digit
65+
if (isReplacement) {
66+
for (let index = 0; index < phoneAfterFormatted.length; index++) {
67+
if (isNumeric(phoneAfterFormatted[index])) {
68+
digitsCounter++;
69+
if (digitsCounter === digitIndex + 1) {
70+
// +1 to move past the replaced digit
71+
cursorPosition = index + 1;
72+
break;
73+
}
74+
}
75+
}
76+
// Skip spaces after replacement
77+
while (phoneAfterFormatted[cursorPosition] === ' ') {
78+
cursorPosition++;
79+
}
80+
return cursorPosition;
81+
}
82+
6283
// Key change: Track the last non-space position
6384
let lastNonSpacePos = 0;
6485

0 commit comments

Comments
 (0)