From 23c0236596549fda5a4bd537fd1154c7a3608b20 Mon Sep 17 00:00:00 2001 From: Elijah Duffy Date: Thu, 10 Jul 2025 19:27:51 -0700 Subject: [PATCH] date input: full keyboard nav, use internationalized/CalendarDate --- package.json | 11 +- pnpm-lock.yaml | 22 ++++ src/lib/DateInput.svelte | 241 +++++++++++++++++++++++++++------------ src/routes/+page.svelte | 22 +++- 4 files changed, 215 insertions(+), 81 deletions(-) diff --git a/package.json b/package.json index d4fcd23..6766ffe 100644 --- a/package.json +++ b/package.json @@ -36,10 +36,13 @@ "devDependencies": { "@eslint/compat": "^1.2.5", "@eslint/js": "^9.18.0", + "@internationalized/date": "^3.8.2", "@jsrob/svelte-portal": "^0.2.1", "@svelte-toolkit/validate": "^0.0.0", "@sveltejs/adapter-auto": "^4.0.0", "@sveltejs/vite-plugin-svelte": "^5.0.0", + "@tailwindcss/container-queries": "^0.1.1", + "@tailwindcss/forms": "^0.5.10", "@tailwindcss/vite": "^4.1.11", "@types/node": "^24.0.9", "country-state-city": "^3.2.1", @@ -57,13 +60,11 @@ "prettier-plugin-tailwindcss": "^0.6.11", "svelte": "^5.0.0", "svelte-check": "^4.0.0", + "tailwindcss": "^4.1.11", + "tailwindcss-animate": "^1.0.7", "typescript": "^5.0.0", "typescript-eslint": "^8.20.0", - "vite": "^6.2.5", - "tailwindcss": "^4.1.11", - "@tailwindcss/container-queries": "^0.1.1", - "@tailwindcss/forms": "^0.5.10", - "tailwindcss-animate": "^1.0.7" + "vite": "^6.2.5" }, "keywords": [ "svelte" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 81a487c..86dab77 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,6 +21,9 @@ importers: '@eslint/js': specifier: ^9.18.0 version: 9.30.0 + '@internationalized/date': + specifier: ^3.8.2 + version: 3.8.2 '@jsrob/svelte-portal': specifier: ^0.2.1 version: 0.2.1(svelte@5.34.9) @@ -346,6 +349,9 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@internationalized/date@3.8.2': + resolution: {integrity: sha512-/wENk7CbvLbkUvX1tu0mwq49CVkkWpkXubGel6birjRPyo6uQ4nQpnq5xZu823zRCwwn82zgHrvgF1vZyvmVgA==} + '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} @@ -524,6 +530,9 @@ packages: svelte: ^5.0.0 vite: ^6.0.0 + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@tailwindcss/container-queries@0.1.1': resolution: {integrity: sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==} peerDependencies: @@ -1491,6 +1500,9 @@ packages: peerDependencies: typescript: '>=4.8.4' + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -1748,6 +1760,10 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@internationalized/date@3.8.2': + dependencies: + '@swc/helpers': 0.5.17 + '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.2 @@ -1900,6 +1916,10 @@ snapshots: transitivePeerDependencies: - supports-color + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + '@tailwindcss/container-queries@0.1.1(tailwindcss@4.1.11)': dependencies: tailwindcss: 4.1.11 @@ -2802,6 +2822,8 @@ snapshots: dependencies: typescript: 5.8.3 + tslib@2.8.1: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 diff --git a/src/lib/DateInput.svelte b/src/lib/DateInput.svelte index 863c852..d9bf549 100644 --- a/src/lib/DateInput.svelte +++ b/src/lib/DateInput.svelte @@ -1,8 +1,9 @@