Compare commits

..
Author SHA1 Message Date
github-actions[bot]andgithub-actions[bot] ecd58dd7d3 Version Packages (#1934)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-04-24 09:12:11 +02:00
Ken 2845342468 🎨 Datepickers viser nå bare in-range datoer ved input-fokus (#1929) 2023-04-21 19:03:36 +02:00
Ken 6682be1c8e 🔧 Alle pakker bruker nå npm provernance for verifisering (#1930) 2023-04-21 19:03:19 +02:00
Ken dfe923582a 🎉 Nye ikoner for aksel-icons (#1928) 2023-04-21 11:01:22 +02:00
github-actions[bot]andgithub-actions[bot] d6e2705700 Version Packages (#1927)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-04-20 16:09:51 +02:00
Ken f0d9a8853f ♻️ Datepicker/Monthpicke måned blir nå riktig oppdatert ved åpne/lukk 2023-04-20 15:39:25 +02:00
Ken 19a8c46378 🔒 Oppdatert CSP for aksel.nav.no (#1924) 2023-04-20 10:37:30 +02:00
github-actions[bot]andgithub-actions[bot] e5edad201a Version Packages (#1923)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-04-18 13:07:50 +02:00
Ken ecd6241e57 🎉 Oppdatert ikoner (#1921) 2023-04-18 12:40:22 +02:00
Ken 6ab0935a1f 🐛 Fikset kodevisning på Aksel 2023-04-17 12:19:01 +02:00
Ken ac0595135e 🐛 Fikset tsconfig aliasing 2023-04-17 09:29:45 +02:00
Ken 29928ef32e 🚚 Type-handling refactor
🏷️ Accordion-types

🏷️ Alert-types

🏷️ Code-snippet types

🏷️ Table-types

🏷️ UU-table typer

🏷️ token,bilde,innholdkort,relatertinnholdkort,examples,prop types

♻️ Cleanup types export/import

🏷️ Moved sanity-interfaceses

🏷️ Prop-generation types fix
2023-04-17 08:38:53 +02:00
Ken 9b4c7d972c ⬆️ Oppdatert storybook til v7 2023-04-13 13:54:38 +02:00
Ken f003fd38f7 ⬆️ Bumpet sanity 2023-04-13 13:17:54 +02:00
Ken 86cdc9cb70 ⬆️ 🐛 Oppdatert sanity, fikset axe-alerts 2023-04-13 13:11:30 +02:00
github-actions[bot]andgithub-actions[bot] dac31f6dda Version Packages (#1916)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-04-12 15:38:30 +02:00
Vegard Haugstvedt 85353d2c4f 🐛 Fixed TS conflicts and added onClick callback to CopyToClipboard (#1915)
* Add onclick prop to CopyToClipboard component, so it is possible to add external callbacks on clicks.

Requested to enable Amplitude-logging on clicks

* 🐛 Fixed TS conflicts and added onClick callback to CopyToClipboard
2023-04-12 15:33:13 +02:00
Vegard Haugstvedt cd927bdc46 🐛 Fixed conflicting inherited type for ExpandableRows (#1913)
'content' prop had a conflict with the html attribute content
2023-04-12 14:01:29 +02:00
github-actions[bot]andgithub-actions[bot] fcec29fd60 Version Packages (#1912)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-04-03 18:49:10 +02:00
Ken 2704279107 ✨ Oppdatert ikoner (#1909) 2023-04-03 16:08:52 +02:00
github-actions[bot]andgithub-actions[bot] 46cbb4ba87 Version Packages (#1908)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-03-31 13:41:44 +02:00
Ken 63fdacf0f8 ♻️ Refactor eventhandling i datepicker-hooks (#1907) 2023-03-31 13:26:53 +02:00
github-actions[bot]andgithub-actions[bot] b5c8a94378 Version Packages (#1906)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-03-31 12:47:17 +02:00
Ken 212194964c ✨ Bedre tokens-utvalg for button (#1905) 2023-03-31 11:58:30 +02:00
Ken d151cf4c07 🐛 Fikset bakgrunn på tips-modul 2023-03-30 15:30:14 +02:00
Ken 44ba7a3a79 ♻️ Bruker flere nye aksel-icons på nettside, refactor Tips-modul 2023-03-30 15:26:36 +02:00
201 changed files with 2261 additions and 2948 deletions

No files matched your search

-1
View File
@@ -49,7 +49,6 @@ jobs:
- name: add tokens to .env
run: |
echo "SANITY_WRITE_KEY=${{ secrets.SANITY_FEEDBACK_WRITE_KEY }}" >> aksel.nav.no/website/.env
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PREVIEW_TOKEN=${{ secrets.SANITY_PREVIEW_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PRIVATE_NO_DRAFTS=${{ secrets.SANITY_PRIVATE_NO_DRAFTS }}" >> aksel.nav.no/website/.env
echo "USE_CDN_ASSETS=true" >> aksel.nav.no/website/.env
-1
View File
@@ -84,7 +84,6 @@ jobs:
- name: add tokens to .env
run: |
echo "SANITY_WRITE_KEY=${{ secrets.SANITY_FEEDBACK_WRITE_KEY }}" >> aksel.nav.no/website/.env
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PREVIEW_TOKEN=${{ secrets.SANITY_PREVIEW_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PRIVATE_NO_DRAFTS=${{ secrets.SANITY_PRIVATE_NO_DRAFTS }}" >> aksel.nav.no/website/.env
echo "USE_CDN_ASSETS=true" >> aksel.nav.no/website/.env
-1
View File
@@ -23,7 +23,6 @@ jobs:
- name: add tokens to .env
run: |
echo "SANITY_WRITE_KEY=${{ secrets.SANITY_FEEDBACK_WRITE_KEY }}" >> aksel.nav.no/website/.env
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PREVIEW_TOKEN=${{ secrets.SANITY_PREVIEW_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PRIVATE_NO_DRAFTS=${{ secrets.SANITY_PRIVATE_NO_DRAFTS }}" >> aksel.nav.no/website/.env
-1
View File
@@ -23,7 +23,6 @@ jobs:
- name: add tokens to .env
run: |
echo "SANITY_WRITE_KEY=${{ secrets.SANITY_FEEDBACK_WRITE_KEY }}" >> aksel.nav.no/website/.env
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PREVIEW_TOKEN=${{ secrets.SANITY_PREVIEW_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PRIVATE_NO_DRAFTS=${{ secrets.SANITY_PRIVATE_NO_DRAFTS }}" >> aksel.nav.no/website/.env
-17
View File
@@ -23,7 +23,6 @@ module.exports = {
addons: [
"@storybook/addon-a11y",
"@whitespace/storybook-addon-html",
"storybook-addon-next-router",
{
name: "@storybook/addon-storysource",
@@ -83,24 +82,8 @@ module.exports = {
"../aksel.nav.no/website/components/website-modules/utils/index.ts"
),
},
{
find: "@lib",
replacement: path.resolve(
__dirname,
"../aksel.nav.no/website/lib/index.ts"
),
},
],
},
});
},
};
/* "@/components": ["components/index.ts"],
"@/lib": ["lib/index.ts"],
"@/pages/*": ["pages/*"],
"@/sanity-block": ["components/SanityBlockContent.tsx"],
"@/utils": ["components/website-modules/utils/index.ts"],
"@/layout": ["components/layout/index.ts"],
"@/error-boundary": ["components/website-modules/ErrorBoundary.tsx"],
"@/sanity-client": ["lib/sanity/sanity.server"] */
-3
View File
@@ -24,9 +24,6 @@ export const parameters = {
},
],
},
nextRouter: {
Provider: RouterContext.Provider,
},
};
export const globalTypes = {
+31
View File
@@ -1,5 +1,36 @@
# @navikt/aksel-icons
## 2.8.15
### Patch Changes
- [#1928](https://github.com/navikt/aksel/pull/1928) [`dfe923582`](https://github.com/navikt/aksel/commit/dfe923582a57b41c77cfb4fbfa7c56be047ef2b0) Thanks [@KenAJoh](https://github.com/KenAJoh)! - :tada: Lagt til nye ikoner :tada:
- HandKnot.svg
- HandKnotFilled.svg
- [#1930](https://github.com/navikt/aksel/pull/1930) [`6682be1c8`](https://github.com/navikt/aksel/commit/6682be1c8e6562213c64e5be4bed70fef54ab865) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Alle pakker implementerer nå npm provenance (beta)
## 2.8.14
## 2.8.13
### Patch Changes
- [#1921](https://github.com/navikt/aksel/pull/1921) [`ecd6241e5`](https://github.com/navikt/aksel/commit/ecd6241e5751519fbda800a5f41a613957dbf77c) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Oppdatert ikoner :tada:
## 2.8.12
## 2.8.11
### Patch Changes
- [#1909](https://github.com/navikt/aksel/pull/1909) [`270427910`](https://github.com/navikt/aksel/commit/2704279107a5fbf93048de37d014e78f6721438f) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Oppdatert ikoner
## 2.8.10
## 2.8.9
## 2.8.8
### Patch Changes
@@ -13,5 +13,5 @@ keywords:
- reload
- oppdater
variant: Stroke
updated_at: 08.03.2023
updated_at: 03.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -11,5 +11,5 @@ keywords:
- åpnet
- opened
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -8,5 +8,5 @@ keywords:
- back
- tilbake
variant: Stroke
updated_at: 08.03.2023
updated_at: 11.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -13,5 +13,5 @@ keywords:
- forward
- videresend
variant: Stroke
updated_at: 08.03.2023
updated_at: 20.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -9,5 +9,5 @@ keywords:
- frem
- fram
variant: Stroke
updated_at: 08.03.2023
updated_at: 11.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -10,5 +10,5 @@ keywords:
- close
- lukke
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -9,5 +9,5 @@ keywords:
- sortering
- sorting
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -4,5 +4,5 @@ sub_category: Vehicles
keywords:
- sykkel
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -15,5 +15,5 @@ keywords:
- fullføring
- validering
variant: Stroke
updated_at: 08.03.2023
updated_at: 14.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -10,5 +10,5 @@ keywords:
- åpner
- mer
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -6,5 +6,5 @@ keywords:
- venstre
- side
variant: Stroke
updated_at: 08.03.2023
updated_at: 20.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -6,5 +6,5 @@ keywords:
- høyre
- side
variant: Stroke
updated_at: 08.03.2023
updated_at: 13.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -10,5 +10,5 @@ keywords:
- lukk
- lukke
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -10,5 +10,5 @@ keywords:
- nettverk
- network
variant: Stroke
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -8,5 +8,5 @@ keywords:
- historikk
- visited
variant: Stroke
updated_at: 08.03.2023
updated_at: 13.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -7,5 +7,5 @@ keywords:
- downloading
- last ned
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -14,5 +14,5 @@ keywords:
- pålogging
- adgang
variant: Stroke
updated_at: 08.03.2023
updated_at: 13.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -9,5 +9,5 @@ keywords:
- open
- åpne
variant: Stroke
updated_at: 08.03.2023
updated_at: 19.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -7,5 +7,5 @@ keywords:
- data
- tabell
variant: Stroke
updated_at: 08.03.2023
updated_at: 14.04.2023
created_at: 07.03.2023
+3
View File
@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.75023 5C8.75023 4.30964 9.30988 3.75 10.0002 3.75C10.6906 3.75 11.2502 4.30964 11.2502 5V5.75H8.75023V5ZM8.75023 7.25V13.5C8.75023 13.7929 8.57973 14.059 8.31363 14.1814C8.04753 14.3038 7.73453 14.2601 7.51214 14.0694L5.39829 12.2576C4.91367 11.8422 4.19095 11.8699 3.73962 12.3213C3.30979 12.7511 3.26143 13.4316 3.62616 13.9179L8.37524 20.25H18.3986L19.6173 14.7659C19.8869 13.5528 19.122 12.3509 17.909 12.0813L11.8375 10.7321C11.4944 10.6559 11.2502 10.3515 11.2502 10V7.25H8.75023ZM10.0002 2.25C8.4921 2.25 7.26751 3.46401 7.25042 4.9681C7.03844 4.82515 6.81067 4.68453 6.58336 4.56753C6.28845 4.41573 5.89474 4.25 5.5 4.25C4.25736 4.25 3.25 5.25736 3.25 6.5C3.25 7.74264 4.25736 8.75 5.5 8.75C5.89474 8.75 6.28845 8.58427 6.58336 8.43247C6.8106 8.31551 7.03831 8.17493 7.25023 8.03203V11.8693L6.37448 11.1187C5.29475 10.1932 3.68453 10.255 2.67896 11.2606C1.72129 12.2183 1.61354 13.7344 2.42616 14.8179L7.40024 21.45C7.54188 21.6389 7.76417 21.75 8.00023 21.75H19.0002C19.3518 21.75 19.6561 21.5059 19.7324 21.1627L21.0816 15.0913C21.5309 13.0695 20.2561 11.0663 18.2344 10.6171L12.7502 9.39837V8.03234C12.962 8.17514 13.1896 8.31559 13.4166 8.43247C13.7115 8.58427 14.1053 8.75 14.5 8.75C15.7426 8.75 16.75 7.74264 16.75 6.5C16.75 5.25736 15.7426 4.25 14.5 4.25C14.1053 4.25 13.7115 4.41573 13.4166 4.56753C13.1895 4.68444 12.9619 4.82495 12.75 4.96779C12.7328 3.46385 11.5083 2.25 10.0002 2.25ZM13.3772 6.6411C13.3116 6.59389 13.2475 6.54657 13.1859 6.5C13.2475 6.45343 13.3116 6.40611 13.3772 6.3589C13.6227 6.18236 13.8759 6.0182 14.1031 5.90122C14.2162 5.84301 14.3119 5.80222 14.3886 5.77707C14.4608 5.75335 14.4956 5.7504 14.4997 5.75005C14.5002 5.75001 14.5003 5.75 14.5 5.75C14.9142 5.75 15.25 6.08579 15.25 6.5C15.25 6.91421 14.9142 7.25 14.5 7.25L14.5001 7.24999C14.5002 7.25 14.5002 7.25 14.5 7.25L14.4997 7.24995C14.4956 7.2496 14.4608 7.24665 14.3886 7.22293C14.3119 7.19778 14.2162 7.15699 14.1031 7.09878C13.8759 6.9818 13.6227 6.81764 13.3772 6.6411ZM6.81414 6.5C6.75246 6.45343 6.68842 6.40611 6.62277 6.3589C6.3773 6.18236 6.12414 6.0182 5.89688 5.90122C5.78379 5.84301 5.68809 5.80222 5.61143 5.77707C5.53915 5.75335 5.50443 5.7504 5.50025 5.75005C5.49978 5.75001 5.4997 5.75 5.5 5.75C5.08579 5.75 4.75 6.08579 4.75 6.5C4.75 6.91421 5.08579 7.25 5.5 7.25C5.4997 7.25 5.49978 7.24999 5.50025 7.24995C5.50443 7.2496 5.53915 7.24665 5.61143 7.22293C5.68809 7.19778 5.78379 7.15699 5.89688 7.09878C6.12414 6.9818 6.3773 6.81764 6.62277 6.6411C6.68842 6.59389 6.75246 6.54657 6.81414 6.5Z" fill="#262626"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

+12
View File
@@ -0,0 +1,12 @@
name: HandKnot
category: People
sub_category: Hands
keywords:
- hånd
- påminnelse
- note
- notat
- reminder
variant: Stroke
updated_at: 21.04.2023
created_at: 21.04.2023
@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.25042 4.9681C7.26752 3.46401 8.4921 2.25 10.0002 2.25C11.5083 2.25 12.7328 3.46384 12.7501 4.96778C12.9619 4.82494 13.1895 4.68444 13.4166 4.56753C13.7115 4.41573 14.1053 4.25 14.5 4.25C15.7426 4.25 16.75 5.25736 16.75 6.5C16.75 7.74264 15.7426 8.75 14.5 8.75C14.1053 8.75 13.7115 8.58427 13.4166 8.43247C13.1896 8.31559 12.962 8.17514 12.7502 8.03235L12.7502 5V9.39837L18.2344 10.6171C20.2561 11.0663 21.5309 13.0695 21.0816 15.0913L19.7324 21.1627C19.6561 21.5059 19.3518 21.75 19.0002 21.75H8.00024C7.76417 21.75 7.54188 21.6389 7.40024 21.45L2.42616 14.8179C1.61354 13.7344 1.72129 12.2183 2.67896 11.2606C3.68453 10.255 5.29475 10.1932 6.37448 11.1187L7.25024 11.8693L7.25024 8.03202C7.03831 8.17493 6.8106 8.31551 6.58336 8.43247C6.28845 8.58427 5.89474 8.75 5.5 8.75C4.25736 8.75 3.25 7.74264 3.25 6.5C3.25 5.25736 4.25736 4.25 5.5 4.25C5.89474 4.25 6.28845 4.41573 6.58336 4.56753C6.81067 4.68453 7.03844 4.82515 7.25042 4.9681ZM12 7C12 7.13807 11.8881 7.25 11.75 7.25H8.25C8.11193 7.25 8 7.13807 8 7V6C8 5.86193 8.11193 5.75 8.25 5.75H11.75C11.8881 5.75 12 5.86193 12 6V7ZM6.62277 6.3589C6.68842 6.40611 6.75246 6.45343 6.81414 6.5C6.75246 6.54657 6.68842 6.59389 6.62277 6.6411C6.3773 6.81764 6.12414 6.9818 5.89688 7.09878C5.78379 7.15699 5.68809 7.19778 5.61143 7.22293C5.53915 7.24665 5.50417 7.24965 5.5 7.25C5.08579 7.25 4.75 6.91421 4.75 6.5C4.75 6.08579 5.08604 5.75005 5.50025 5.75005C5.50443 5.7504 5.53915 5.75335 5.61143 5.77707C5.68809 5.80222 5.78379 5.84301 5.89688 5.90122C6.12414 6.0182 6.3773 6.18236 6.62277 6.3589ZM13.3772 6.6411C13.3116 6.59389 13.2475 6.54657 13.1859 6.5C13.2475 6.45343 13.3116 6.40611 13.3772 6.3589C13.6227 6.18236 13.8759 6.0182 14.1031 5.90122C14.2162 5.84301 14.3119 5.80222 14.3886 5.77707C14.4608 5.75335 14.4958 5.75035 14.5 5.75C14.9142 5.75 15.25 6.08579 15.25 6.5C15.25 6.91421 14.914 7.24995 14.4997 7.24995C14.4956 7.2496 14.4608 7.24665 14.3886 7.22293C14.3119 7.19778 14.2162 7.15699 14.1031 7.09878C13.8759 6.9818 13.6227 6.81764 13.3772 6.6411Z" fill="#262626"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1,12 @@
name: HandKnotFilled
category: People
sub_category: Hands
keywords:
- hånd
- påminnelse
- note
- notat
- reminder
variant: Filled
updated_at: 21.04.2023
created_at: 21.04.2023
+1 -1
View File
@@ -10,5 +10,5 @@ keywords:
- wardrobe
- kleshenger
variant: Stroke
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -13,5 +13,5 @@ keywords:
- fremdrift
- nedtelling
variant: Stroke
updated_at: 08.03.2023
updated_at: 11.04.2023
created_at: 07.03.2023
@@ -13,5 +13,5 @@ keywords:
- fremdrift
- nedtelling
variant: Stroke
updated_at: 08.03.2023
updated_at: 11.04.2023
created_at: 07.03.2023
+1 -3
View File
@@ -1,5 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10 9.5H12V17.5" stroke="#262626" stroke-width="1.5" stroke-miterlimit="3.99933" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11.75 6.5V6.5C11.75 6.63807 11.8619 6.75 12 6.75V6.75C12.1381 6.75 12.25 6.63807 12.25 6.5V6.5C12.25 6.36193 12.1381 6.25 12 6.25V6.25C11.8619 6.25 11.75 6.36193 11.75 6.5V6.5ZM11.75 6.5H12.01H12" stroke="#262626" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10 17.5H14" stroke="#262626" stroke-width="1.5" stroke-miterlimit="3.99933" stroke-linecap="round"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11 6.5C11 5.94772 11.4477 5.5 12 5.5C12.5523 5.5 13 5.94772 13 6.5C13 7.05228 12.5523 7.5 12 7.5C11.4477 7.5 11 7.05228 11 6.5ZM9.25 9.5C9.25 9.08579 9.58579 8.75 10 8.75H12C12.4142 8.75 12.75 9.08579 12.75 9.5V16.75H14C14.4142 16.75 14.75 17.0858 14.75 17.5C14.75 17.9142 14.4142 18.25 14 18.25H12H10C9.58579 18.25 9.25 17.9142 9.25 17.5C9.25 17.0858 9.58579 16.75 10 16.75H11.25V10.25H10C9.58579 10.25 9.25 9.91421 9.25 9.5Z" fill="#262626"/>
</svg>

Before

Width:  |  Height:  |  Size: 645 B

After

Width:  |  Height:  |  Size: 598 B

+1 -1
View File
@@ -15,5 +15,5 @@ keywords:
- beskrivelse
- forklaring
variant: Stroke
updated_at: 08.03.2023
updated_at: 31.03.2023
created_at: 07.03.2023
@@ -1,3 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 2.75C3.58579 2.75 3.25 3.08579 3.25 3.5V19.5C3.25 19.9142 3.58579 20.25 4 20.25H20C20.4142 20.25 20.75 19.9142 20.75 19.5V3.5C20.75 3.08579 20.4142 2.75 20 2.75H4ZM4.75 18.75V4.25H19.25V18.75H4.75ZM12 6.5C11.4477 6.5 11 6.94772 11 7.5C11 8.05228 11.4477 8.5 12 8.5C12.5523 8.5 13 8.05228 13 7.5C13 6.94772 12.5523 6.5 12 6.5ZM10.5 9.75C10.0858 9.75 9.75 10.0858 9.75 10.5C9.75 10.9142 10.0858 11.25 10.5 11.25H11.25V15.25H10.5C10.0858 15.25 9.75 15.5858 9.75 16C9.75 16.4142 10.0858 16.75 10.5 16.75H12H13.5C13.9142 16.75 14.25 16.4142 14.25 16C14.25 15.5858 13.9142 15.25 13.5 15.25H12.75V10.5C12.75 10.0858 12.4142 9.75 12 9.75H10.5Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 3.25C3.58579 3.25 3.25 3.58579 3.25 4V20C3.25 20.4142 3.58579 20.75 4 20.75H20C20.4142 20.75 20.75 20.4142 20.75 20V4C20.75 3.58579 20.4142 3.25 20 3.25H4ZM4.75 19.25V4.75H19.25V19.25H4.75ZM12 7C11.4477 7 11 7.44772 11 8C11 8.55228 11.4477 9 12 9C12.5523 9 13 8.55228 13 8C13 7.44772 12.5523 7 12 7ZM10.5 10.25C10.0858 10.25 9.75 10.5858 9.75 11C9.75 11.4142 10.0858 11.75 10.5 11.75H11.25V15.75H10.5C10.0858 15.75 9.75 16.0858 9.75 16.5C9.75 16.9142 10.0858 17.25 10.5 17.25H12H13.5C13.9142 17.25 14.25 16.9142 14.25 16.5C14.25 16.0858 13.9142 15.75 13.5 15.75H12.75V11C12.75 10.5858 12.4142 10.25 12 10.25H10.5Z" fill="#262626"/>
</svg>

Before

Width:  |  Height:  |  Size: 809 B

After

Width:  |  Height:  |  Size: 787 B

@@ -15,5 +15,5 @@ keywords:
- beskrivelse
- forklaring
variant: Stroke
updated_at: 08.03.2023
updated_at: 03.04.2023
created_at: 07.03.2023
@@ -1,3 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.25 3.5C3.25 3.08579 3.58579 2.75 4 2.75H20C20.4142 2.75 20.75 3.08579 20.75 3.5V19.5C20.75 19.9142 20.4142 20.25 20 20.25H4C3.58579 20.25 3.25 19.9142 3.25 19.5V3.5ZM11 7.5C11 6.94772 11.4477 6.5 12 6.5C12.5523 6.5 13 6.94772 13 7.5C13 8.05228 12.5523 8.5 12 8.5C11.4477 8.5 11 8.05228 11 7.5ZM9.75 10.5C9.75 10.0858 10.0858 9.75 10.5 9.75H12C12.4142 9.75 12.75 10.0858 12.75 10.5V15.25H13.5C13.9142 15.25 14.25 15.5858 14.25 16C14.25 16.4142 13.9142 16.75 13.5 16.75H12H10.5C10.0858 16.75 9.75 16.4142 9.75 16C9.75 15.5858 10.0858 15.25 10.5 15.25H11.25V11.25H10.5C10.0858 11.25 9.75 10.9142 9.75 10.5Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.25 4C3.25 3.58579 3.58579 3.25 4 3.25H20C20.4142 3.25 20.75 3.58579 20.75 4V20C20.75 20.4142 20.4142 20.75 20 20.75H4C3.58579 20.75 3.25 20.4142 3.25 20V4ZM11 8C11 7.44772 11.4477 7 12 7C12.5523 7 13 7.44772 13 8C13 8.55228 12.5523 9 12 9C11.4477 9 11 8.55228 11 8ZM9.75 11C9.75 10.5858 10.0858 10.25 10.5 10.25H12C12.4142 10.25 12.75 10.5858 12.75 11V15.75H13.5C13.9142 15.75 14.25 16.0858 14.25 16.5C14.25 16.9142 13.9142 17.25 13.5 17.25H12H10.5C10.0858 17.25 9.75 16.9142 9.75 16.5C9.75 16.0858 10.0858 15.75 10.5 15.75H11.25V11.75H10.5C10.0858 11.75 9.75 11.4142 9.75 11Z" fill="#262626"/>
</svg>

Before

Width:  |  Height:  |  Size: 777 B

After

Width:  |  Height:  |  Size: 750 B

@@ -15,5 +15,5 @@ keywords:
- beskrivelse
- forklaring
variant: Fill
updated_at: 08.03.2023
updated_at: 03.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -13,5 +13,5 @@ keywords:
- oversettelse
- bytt språk
variant: Stroke
updated_at: 08.03.2023
updated_at: 11.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -15,5 +15,5 @@ keywords:
- avslutt
- avslutt
variant: Stroke
updated_at: 08.03.2023
updated_at: 11.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -6,5 +6,5 @@ keywords:
- chain
- kobling
variant: Stroke
updated_at: 08.03.2023
updated_at: 11.04.2023
created_at: 07.03.2023
@@ -12,5 +12,5 @@ keywords:
- nedtrekksvalg
- ellipse
variant: Stroke
updated_at: 08.03.2023
updated_at: 17.04.2023
created_at: 07.03.2023
@@ -12,5 +12,5 @@ keywords:
- nedtrekksvalg
- ellipse
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -7,5 +7,5 @@ keywords:
- grid
- rutenett
variant: Stroke
updated_at: 08.03.2023
updated_at: 19.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -6,5 +6,5 @@ keywords:
- meny
- hamburger
variant: Stroke
updated_at: 08.03.2023
updated_at: 13.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -8,5 +8,5 @@ keywords:
- replace
- new version
variant: Stroke
updated_at: 08.03.2023
updated_at: 17.04.2023
created_at: 07.03.2023
+2 -1
View File
@@ -6,6 +6,7 @@ keywords:
- nyheter
- tidsskrift
- presse
- avis
variant: Stroke
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
+2 -1
View File
@@ -6,6 +6,7 @@ keywords:
- nyheter
- tidsskrift
- presse
- avis
variant: Fill
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -13,5 +13,5 @@ keywords:
- papir
- kontorrekvisita
variant: Stroke
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
+2 -1
View File
@@ -5,6 +5,7 @@ keywords:
- presentasjon
- presentere
- present
- whiteboard
variant: Stroke
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
@@ -5,6 +5,7 @@ keywords:
- presentasjon
- presentere
- present
- whiteboard
variant: Fill
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
+1 -2
View File
@@ -1,4 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.5 9.5C9.5 8 10.5 7 12 7C13.5 7 14.5 8 14.5 9.5C14.5 11 12 12 12 13.5V14" stroke="#262626" stroke-width="1.5" stroke-miterlimit="3.99933" stroke-linecap="round"/>
<path d="M11.75 16.5V16.5C11.75 16.6381 11.8619 16.75 12 16.75V16.75C12.1381 16.75 12.25 16.6381 12.25 16.5V16.5C12.25 16.3619 12.1381 16.25 12 16.25V16.25C11.8619 16.25 11.75 16.3619 11.75 16.5V16.5ZM11.75 16.5H12.01H12" stroke="#262626" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.25 9.5C10.25 8.92044 10.4399 8.49575 10.7178 8.21783C10.9957 7.93991 11.4204 7.75 12 7.75C12.5796 7.75 13.0043 7.93991 13.2822 8.21783C13.5601 8.49575 13.75 8.92044 13.75 9.5C13.75 9.65777 13.6859 9.84934 13.4991 10.1109C13.3076 10.379 13.0426 10.6467 12.7197 10.9697L12.6985 10.9909C12.4009 11.2884 12.0511 11.6381 11.7803 12.0172C11.4984 12.4118 11.25 12.9078 11.25 13.5V14C11.25 14.4142 11.5858 14.75 12 14.75C12.4142 14.75 12.75 14.4142 12.75 14V13.5C12.75 13.3422 12.8141 13.1507 13.0009 12.8891C13.1924 12.621 13.4574 12.3533 13.7803 12.0303L13.8015 12.0091C14.0991 11.7116 14.4489 11.3619 14.7197 10.9828C15.0016 10.5882 15.25 10.0922 15.25 9.5C15.25 8.57956 14.9399 7.75425 14.3428 7.15717C13.7457 6.56009 12.9204 6.25 12 6.25C11.0796 6.25 10.2543 6.56009 9.65717 7.15717C9.06009 7.75425 8.75 8.57956 8.75 9.5C8.75 9.91421 9.08579 10.25 9.5 10.25C9.91421 10.25 10.25 9.91421 10.25 9.5ZM12 15.5C11.4477 15.5 11 15.9477 11 16.5C11 17.0523 11.4477 17.5 12 17.5C12.5523 17.5 13 17.0523 13 16.5C13 15.9477 12.5523 15.5 12 15.5Z" fill="#262626"/>
</svg>

Before

Width:  |  Height:  |  Size: 584 B

After

Width:  |  Height:  |  Size: 1.2 KiB

+1 -1
View File
@@ -13,5 +13,5 @@ keywords:
- veiledning
- spørsmålstegn
variant: Stroke
updated_at: 08.03.2023
updated_at: 31.03.2023
created_at: 07.03.2023
+1 -1
View File
@@ -8,5 +8,5 @@ keywords:
- loading
- laster
variant: Stroke
updated_at: 08.03.2023
updated_at: 13.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -8,5 +8,5 @@ keywords:
- loading
- laster
variant: Stroke
updated_at: 08.03.2023
updated_at: 13.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -11,5 +11,5 @@ keywords:
- doctor
- patient
variant: Stroke
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -12,5 +12,5 @@ keywords:
- diagram
- analyse
variant: Stroke
updated_at: 08.03.2023
updated_at: 17.04.2023
created_at: 07.03.2023
+1 -3
View File
@@ -1,5 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.875 6H9.5H15C15.5523 6 16 6.44772 16 7V12V14.4M3 10.5V12V17C3 17.5523 3.44772 18 4 18H9.5H11.125" stroke="#262626" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M16 9.6L21 8V16L16 14.4V9.6Z" stroke="#262626" stroke-width="1.5" stroke-linejoin="round"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.96967 5.46967C3.26256 5.17678 3.73744 5.17678 4.03033 5.46967L16.0303 17.4697C16.3232 17.7626 16.3232 18.2374 16.0303 18.5303C15.7374 18.8232 15.2626 18.8232 14.9697 18.5303L2.96967 6.53033C2.67678 6.23744 2.67678 5.76256 2.96967 5.46967Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M15 5.25H7.875C7.46079 5.25 7.125 5.58579 7.125 6C7.125 6.41421 7.46079 6.75 7.875 6.75H15C15.1381 6.75 15.25 6.86193 15.25 7V9.6V14.4C15.25 14.5901 15.3207 14.7637 15.4373 14.8959C15.4739 14.9375 15.5152 14.975 15.5605 15.0078C15.6286 15.0571 15.7052 15.0952 15.7877 15.1195L20.7714 16.7143C20.9995 16.7873 21.2488 16.747 21.4422 16.6058C21.6356 16.4646 21.75 16.2395 21.75 16V8C21.75 7.76051 21.6356 7.53542 21.4422 7.39422C21.2488 7.25302 20.9995 7.21269 20.7714 7.28568L16.75 8.57254V7C16.75 6.0335 15.9665 5.25 15 5.25ZM20.25 14.9725L16.75 13.8525V10.1475L20.25 9.02746V14.9725ZM3.75 10.5C3.75 10.0858 3.41421 9.75 3 9.75C2.58579 9.75 2.25 10.0858 2.25 10.5V17C2.25 17.9665 3.0335 18.75 4 18.75H11.125C11.5392 18.75 11.875 18.4142 11.875 18C11.875 17.5858 11.5392 17.25 11.125 17.25H4C3.86193 17.25 3.75 17.1381 3.75 17V10.5ZM4.03033 5.46967C3.73744 5.17678 3.26256 5.17678 2.96967 5.46967C2.67678 5.76256 2.67678 6.23744 2.96967 6.53033L14.9697 18.5303C15.2626 18.8232 15.7374 18.8232 16.0303 18.5303C16.3232 18.2374 16.3232 17.7626 16.0303 17.4697L4.03033 5.46967Z" fill="#262626"/>
</svg>

Before

Width:  |  Height:  |  Size: 708 B

After

Width:  |  Height:  |  Size: 1.2 KiB

+11 -2
View File
@@ -3,15 +3,24 @@ category: Media
sub_category: Media
keywords:
- record
- capture
- film
- video
- camera
- no camera
- no video
- no filming
- no recording
- opptak
- ta opp
- filme
- video
- kamera
- ingen filming
- ingen video
- ingen kamera
- ingen opptak
- unavailable
- utilgjengelig
variant: Stroke
updated_at: 30.03.2023
updated_at: 31.03.2023
created_at: 30.03.2023
+1 -2
View File
@@ -1,4 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.6749 5.85688C2.41013 6.16353 2.25 6.56307 2.25 7V17C2.25 17.9665 3.0335 18.75 4 18.75H15C15.1725 18.75 15.3391 18.725 15.4966 18.6785L2.6749 5.85688ZM19.4845 16.3025L20.7714 16.7143C20.9995 16.7873 21.2488 16.747 21.4422 16.6058C21.6356 16.4646 21.75 16.2395 21.75 16V8.00001C21.75 7.76052 21.6356 7.53543 21.4422 7.39423C21.2488 7.25303 20.9995 7.2127 20.7714 7.28569L16.75 8.57254V7C16.75 6.0335 15.9665 5.25 15 5.25H8.43198L19.4845 16.3025Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.46967 3.46967C3.76256 3.17678 4.23744 3.17678 4.53033 3.46967L19.5303 18.4697C19.8232 18.7626 19.8232 19.2374 19.5303 19.5303C19.2374 19.8232 18.7626 19.8232 18.4697 19.5303L3.46967 4.53033C3.17678 4.23744 3.17678 3.76256 3.46967 3.46967Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.67678 8.35876C2.51929 8.20127 2.25 8.31281 2.25 8.53553V17C2.25 17.9665 3.0335 18.75 4 18.75H12.4645C12.6872 18.75 12.7987 18.4807 12.6412 18.3232L2.67678 8.35876ZM16.3232 15.6412C16.4807 15.7987 16.75 15.6872 16.75 15.4645V7C16.75 6.0335 15.9665 5.25 15 5.25H6.53553C6.31281 5.25 6.20127 5.51929 6.35876 5.67678L16.3232 15.6412ZM18.25 15.725C18.25 15.8337 18.3203 15.93 18.4238 15.9631L20.7714 16.7143C20.9995 16.7873 21.2488 16.747 21.4422 16.6058C21.6356 16.4646 21.75 16.2395 21.75 16V8.00001C21.75 7.76052 21.6356 7.53543 21.4422 7.39423C21.2488 7.25303 20.9995 7.2127 20.7714 7.28569L18.4238 8.03692C18.3203 8.07006 18.25 8.16631 18.25 8.27503V15.725ZM4.03033 5.46967C3.73744 5.17678 3.26256 5.17678 2.96967 5.46967C2.67678 5.76256 2.67678 6.23744 2.96967 6.53033L14.9697 18.5303C15.2626 18.8232 15.7374 18.8232 16.0303 18.5303C16.3232 18.2374 16.3232 17.7626 16.0303 17.4697L4.03033 5.46967Z" fill="#262626"/>
</svg>

Before

Width:  |  Height:  |  Size: 926 B

After

Width:  |  Height:  |  Size: 1.0 KiB

+11 -2
View File
@@ -3,15 +3,24 @@ category: Media
sub_category: Media
keywords:
- record
- capture
- film
- video
- camera
- no camera
- no video
- no filming
- no recording
- opptak
- ta opp
- filme
- video
- kamera
- ingen filming
- ingen video
- ingen kamera
- ingen opptak
- unavailable
- utilgjengelig
variant: Fill
updated_at: 30.03.2023
updated_at: 31.03.2023
created_at: 30.03.2023
+1 -1
View File
@@ -13,5 +13,5 @@ keywords:
- oksygen
- blodtrykk
variant: Stroke
updated_at: 08.03.2023
updated_at: 14.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -15,5 +15,5 @@ keywords:
- avvis
- avslå
variant: Stroke
updated_at: 08.03.2023
updated_at: 13.04.2023
created_at: 07.03.2023
+3 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/aksel-icons",
"version": "2.8.8",
"version": "2.8.15",
"author": "Aksel | NAV",
"homepage": "https://aksel.nav.no/ikoner",
"repository": {
@@ -17,7 +17,8 @@
"svg"
],
"publishConfig": {
"access": "public"
"access": "public",
"provenance": true
},
"sideEffects": [
"*.svg"
+18
View File
@@ -1,5 +1,23 @@
# @navikt/ds-codemod
## 2.8.15
### Patch Changes
- [#1930](https://github.com/navikt/aksel/pull/1930) [`6682be1c8`](https://github.com/navikt/aksel/commit/6682be1c8e6562213c64e5be4bed70fef54ab865) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Alle pakker implementerer nå npm provenance (beta)
## 2.8.14
## 2.8.13
## 2.8.12
## 2.8.11
## 2.8.10
## 2.8.9
## 2.8.8
## 2.8.7
+3 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/ds-codemod",
"version": "2.8.8",
"version": "2.8.15",
"description": "Aksel codemods for NAVs designsystem",
"author": "Aksel | NAV designsystem team",
"license": "MIT",
@@ -59,6 +59,7 @@
"node": ">=12.0.0"
},
"publishConfig": {
"access": "public"
"access": "public",
"provenance": true
}
}
+4 -3
View File
@@ -19,7 +19,8 @@
"module": "./esm/index.js",
"typings": "./esm/index.d.ts",
"publishConfig": {
"access": "public"
"access": "public",
"provenance": true
},
"files": [
"/css",
@@ -39,8 +40,8 @@
"build-pict": "svgr --silent --index-template index-template.js --out-dir src/pictograms pictograms"
},
"dependencies": {
"@navikt/ds-icons": "^2.8.8",
"@navikt/ds-react": "^2.8.8",
"@navikt/ds-icons": "^2.8.15",
"@navikt/ds-react": "^2.8.15",
"clsx": "^1.1.1"
},
"devDependencies": {
+26
View File
@@ -1,5 +1,31 @@
# @navikt/ds-css
## 2.8.15
### Patch Changes
- [#1930](https://github.com/navikt/aksel/pull/1930) [`6682be1c8`](https://github.com/navikt/aksel/commit/6682be1c8e6562213c64e5be4bed70fef54ab865) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Alle pakker implementerer nå npm provenance (beta)
## 2.8.14
### Patch Changes
- [`f0d9a8853`](https://github.com/navikt/aksel/commit/f0d9a8853f56854a4049bd3f6cc34968e9d6c380) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Fixes shown month on open in Datepicker/MonthPicker, better handling of out-of-range 'today'
## 2.8.13
## 2.8.12
## 2.8.11
## 2.8.10
## 2.8.9
### Patch Changes
- [#1905](https://github.com/navikt/aksel/pull/1905) [`212194964`](https://github.com/navikt/aksel/commit/212194964c4dd576e1ffc031316dff8cbe5016a2) Thanks [@KenAJoh](https://github.com/KenAJoh)! - :sparkles: Padding/border-radius tokens for button.css
## 2.8.8
## 2.8.7
+19 -7
View File
@@ -16,38 +16,50 @@
}
.navds-button {
--__ac-button-padding: var(--a-spacing-3) var(--a-spacing-5);
display: inline-flex;
cursor: pointer;
margin: 0;
text-decoration: none;
border: none;
background: none;
border-radius: var(--a-border-radius-medium);
padding: var(--a-spacing-3) var(--a-spacing-5);
border-radius: var(--ac-button-border-radius, var(--a-border-radius-medium));
padding: var(--ac-button-padding, var(--__ac-button-padding));
align-items: center;
justify-content: center;
gap: var(--a-spacing-2);
}
.navds-button--small {
padding: 0.375rem var(--a-spacing-3);
--__ac-button-padding: 0.375rem var(--a-spacing-3);
padding: var(--ac-button-padding-small, var(--__ac-button-padding));
}
.navds-button--xsmall {
padding: var(--a-spacing-05) var(--a-spacing-2);
--__ac-button-padding: var(--a-spacing-05) var(--a-spacing-2);
padding: var(--ac-button-padding-xsmall, var(--__ac-button-padding));
gap: var(--a-spacing-1);
}
.navds-button--icon-only {
padding: var(--a-spacing-3);
--__ac-button-padding: var(--a-spacing-3);
padding: var(--ac-button-padding-icon-only, var(--__ac-button-padding));
}
.navds-button--small.navds-button--icon-only {
padding: 0.375rem;
--__ac-button-padding: 0.375rem;
padding: var(--ac-button-padding-icon-only-small, var(--__ac-button-padding));
}
.navds-button--xsmall.navds-button--icon-only {
padding: var(--a-spacing-1);
--__ac-button-padding: var(--a-spacing-1);
padding: var(--ac-button-padding-icon-only-xsmall, var(--__ac-button-padding));
}
.navds-button:focus {
+2 -1
View File
@@ -163,7 +163,8 @@
gap: var(--a-spacing-2);
}
.navds-date__caption-button {
.navds-date__caption-button,
.navds-date__caption-button:disabled {
color: var(--ac-date-caption-text, var(--a-text-default));
}
+4 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/ds-css",
"version": "2.8.8",
"version": "2.8.15",
"description": "CSS for NAV Designsystem",
"author": "Aksel | NAV designsystem team",
"keywords": [
@@ -8,7 +8,8 @@
],
"license": "MIT",
"publishConfig": {
"access": "public"
"access": "public",
"provenance": true
},
"repository": {
"type": "git",
@@ -20,7 +21,7 @@
"watch": "postcss --watch --use postcss-import -o dist/index.css index.css"
},
"devDependencies": {
"@navikt/ds-tokens": "^2.8.8",
"@navikt/ds-tokens": "^2.8.15",
"normalize.css": "^8.0.1",
"postcss": "^8.4.0",
"postcss-cli": "^9.0.0",
+7
View File
@@ -27,6 +27,13 @@
"--ac-accordion-content-border-open": "--a-border-default"
},
"button": {
"--ac-button-border-radius": "--a-border-radius-medium",
"--ac-button-padding": "var(--a-spacing-3) var(--a-spacing-5)",
"--ac-button-padding-small": "0.375rem var(--a-spacing-3)",
"--ac-button-padding-xsmall": "var(--a-spacing-05) var(--a-spacing-2)",
"--ac-button-padding-icon-only": "var(--a-spacing-3)",
"--ac-button-padding-icon-only-small": "0.375rem",
"--ac-button-padding-icon-only-xsmall": "var(--a-spacing-1)",
"--ac-button-primary-bg": "--a-surface-action",
"--ac-button-primary-text": "--a-text-on-action",
"--ac-button-primary-hover-bg": "--a-surface-action-hover",
+64
View File
@@ -1,5 +1,69 @@
# @navikt/ds-react
## 2.8.15
### Patch Changes
- [#1930](https://github.com/navikt/aksel/pull/1930) [`6682be1c8`](https://github.com/navikt/aksel/commit/6682be1c8e6562213c64e5be4bed70fef54ab865) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Alle pakker implementerer nå npm provenance (beta)
- [#1929](https://github.com/navikt/aksel/pull/1929) [`284534246`](https://github.com/navikt/aksel/commit/28453424684e00d65fd8d204f1405f7ed6a82fbf) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Bedre håndtering av visning for out-of-range dates i datepickers
- Updated dependencies [[`dfe923582`](https://github.com/navikt/aksel/commit/dfe923582a57b41c77cfb4fbfa7c56be047ef2b0), [`6682be1c8`](https://github.com/navikt/aksel/commit/6682be1c8e6562213c64e5be4bed70fef54ab865)]:
- @navikt/aksel-icons@2.8.15
- @navikt/ds-icons@2.8.15
## 2.8.14
### Patch Changes
- [`f0d9a8853`](https://github.com/navikt/aksel/commit/f0d9a8853f56854a4049bd3f6cc34968e9d6c380) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Fixes shown month on open in Datepicker/MonthPicker, better handling of out-of-range 'today'
- Updated dependencies []:
- @navikt/aksel-icons@2.8.14
- @navikt/ds-icons@2.8.14
## 2.8.13
### Patch Changes
- Updated dependencies [[`ecd6241e5`](https://github.com/navikt/aksel/commit/ecd6241e5751519fbda800a5f41a613957dbf77c)]:
- @navikt/aksel-icons@2.8.13
- @navikt/ds-icons@2.8.13
## 2.8.12
### Patch Changes
- Updated dependencies []:
- @navikt/aksel-icons@2.8.12
- @navikt/ds-icons@2.8.12
## 2.8.11
### Patch Changes
- Updated dependencies [[`270427910`](https://github.com/navikt/aksel/commit/2704279107a5fbf93048de37d014e78f6721438f)]:
- @navikt/aksel-icons@2.8.11
- @navikt/ds-icons@2.8.11
## 2.8.10
### Patch Changes
- [#1907](https://github.com/navikt/aksel/pull/1907) [`63fdacf0f`](https://github.com/navikt/aksel/commit/63fdacf0f8fa09593c64b35b49381d6c8a1befd1) Thanks [@KenAJoh](https://github.com/KenAJoh)! - :recycle: Refactor event-handling i datepicker-hooks
- Updated dependencies []:
- @navikt/aksel-icons@2.8.10
- @navikt/ds-icons@2.8.10
## 2.8.9
### Patch Changes
- Updated dependencies []:
- @navikt/aksel-icons@2.8.9
- @navikt/ds-icons@2.8.9
## 2.8.8
### Patch Changes
+5 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/ds-react",
"version": "2.8.8",
"version": "2.8.15",
"description": "Aksel react-components for NAV designsystem",
"author": "Aksel | NAV designsystem team",
"license": "MIT",
@@ -18,7 +18,8 @@
"module": "./esm/index.js",
"typings": "./esm/index.d.ts",
"publishConfig": {
"access": "public"
"access": "public",
"provenance": true
},
"files": [
"/cjs",
@@ -37,8 +38,8 @@
},
"dependencies": {
"@floating-ui/react": "0.17.0",
"@navikt/aksel-icons": "^2.8.8",
"@navikt/ds-icons": "^2.8.8",
"@navikt/aksel-icons": "^2.8.15",
"@navikt/ds-icons": "^2.8.15",
"@radix-ui/react-tabs": "1.0.0",
"@radix-ui/react-toggle-group": "1.0.0",
"clsx": "^1.2.1",
+1 -1
View File
@@ -3,7 +3,7 @@ import cl from "clsx";
import React, { forwardRef, InputHTMLAttributes } from "react";
import { BodyShort, Button, ErrorMessage, Label, omit } from "..";
import { FormFieldProps, useFormField } from "../form/useFormField";
import { useDateInputContext } from "./hooks";
import { useDateInputContext } from "./context";
export interface DateInputProps
extends FormFieldProps,
@@ -0,0 +1,5 @@
export { useDateInputContext, DateContext } from "./useDateInputContext";
export {
useSharedMonthContext,
SharedMonthProvider,
} from "./useSharedMonthContext";
@@ -13,14 +13,14 @@ import {
} from "react-day-picker";
import { omit, Popover, useId } from "../..";
import { DateInputType, DatePickerInput } from "../DateInput";
import { DateContext } from "../hooks";
import { DateContext } from "../context";
import { getLocaleFromString, labels } from "../utils";
import { Caption, DropdownCaption } from "./caption";
import DatePickerStandalone, {
DatePickerStandaloneType,
} from "./DatePickerStandalone";
import { DayButton } from "./DayButton";
import { Head } from "./Head";
import { TableHead } from "./TableHead";
export type ConditionalModeProps =
| {
@@ -221,7 +221,7 @@ export const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(
components={{
Caption: dropdownCaption ? DropdownCaption : Caption,
Day: DayButton,
Head: Head,
Head: TableHead,
}}
className={cl("navds-date", className)}
classNames={{
@@ -13,7 +13,7 @@ import { omit } from "../..";
import { getLocaleFromString, labels } from "../utils";
import { Caption, DropdownCaption } from "./caption";
import { ConditionalModeProps, DatePickerDefaultProps } from "./DatePicker";
import { Head } from "./Head";
import { TableHead } from "./TableHead";
interface DatePickerStandaloneDefaultProps
extends Omit<
@@ -100,7 +100,7 @@ export const DatePickerStandalone: DatePickerStandaloneType = forwardRef<
selected={selected ?? selectedDates}
components={{
Caption: dropdownCaption ? DropdownCaption : Caption,
Head: Head,
Head: TableHead,
}}
className="navds-date"
classNames={{ vhidden: "navds-sr-only" }}
@@ -2,7 +2,7 @@ import React from "react";
import { HeadRow, useDayPicker } from "react-day-picker";
/** Render the table head. */
export function Head(): JSX.Element {
export function TableHead(): JSX.Element {
const { classNames, styles, components } = useDayPicker();
const HeadRowComponent = components?.HeadRow ?? HeadRow;
return (
@@ -7,6 +7,7 @@ import { CaptionProps, useDayPicker, useNavigation } from "react-day-picker";
import { Button, Select } from "../../..";
import { getMonths, getYears } from "../../utils/get-dates";
import { labelMonthDropdown, labelYearDropdown } from "../../utils/labels";
import { max, min } from "date-fns";
export const DropdownCaption = ({ displayMonth, id }: CaptionProps) => {
const { goToMonth, nextMonth, previousMonth } = useNavigation();
@@ -23,13 +24,18 @@ export const DropdownCaption = ({ displayMonth, id }: CaptionProps) => {
return null;
}
const handleYearChange: React.ChangeEventHandler<HTMLSelectElement> = (e) =>
goToMonth(setYear(startOfMonth(displayMonth), Number(e.target.value)));
const handleYearChange: React.ChangeEventHandler<HTMLSelectElement> = (e) => {
const newMonth = setYear(
startOfMonth(displayMonth),
Number(e.target.value)
);
goToMonth(startOfMonth(min([max([newMonth, fromDate]), toDate])));
};
const handleMonthChange: React.ChangeEventHandler<HTMLSelectElement> = (e) =>
goToMonth(setMonth(startOfMonth(displayMonth), Number(e.target.value)));
const years = getYears(fromDate, toDate);
const years = getYears(fromDate, toDate, displayMonth.getFullYear());
const months = getMonths(fromDate, toDate, displayMonth);
const previousLabel = labelPrevious(previousMonth, { locale });
@@ -12,27 +12,6 @@ const disabledDays = [
export default {
title: "ds-react/Datepicker",
component: DatePicker,
argTypes: {
size: {
control: {
type: "radio",
options: ["medium", "small"],
},
},
locale: {
control: {
type: "radio",
options: ["nb", "nn", "en"],
},
},
mode: {
defaultValue: "single",
control: {
type: "radio",
options: ["single", "multiple", "range"],
},
},
},
};
export const Default = {
@@ -123,6 +102,27 @@ export const Default = {
inputfield: true,
standalone: false,
openOnFocus: true,
mode: "single",
},
argTypes: {
size: {
control: {
type: "radio",
options: ["medium", "small"],
},
},
locale: {
control: {
type: "radio",
options: ["nb", "nn", "en"],
},
},
mode: {
control: {
type: "radio",
options: ["single", "multiple", "range"],
},
},
},
};
@@ -149,14 +149,13 @@ export const ShowWeekNumber = () => (
export const UseDatepicker = () => {
const { datepickerProps, inputProps } = UNSAFE_useDatepicker({
fromDate: new Date("Aug 23 2019"),
toDate: new Date("Feb 23 2024"),
onDateChange: console.log,
locale: "en",
openOnFocus: false,
});
return (
<div style={{ display: "flex", gap: "1rem" }}>
<DatePicker {...datepickerProps}>
<DatePicker {...datepickerProps} dropdownCaption>
<DatePicker.Input {...inputProps} label="Velg dato" />
</DatePicker>
</div>
@@ -4,8 +4,3 @@ export { useRangeDatepicker as UNSAFE_useRangeDatepicker } from "./useRangeDatep
export type { RangeValidationT } from "./useRangeDatepicker";
export { useMonthpicker as UNSAFE_useMonthpicker } from "./useMonthPicker";
export type { MonthValidationT } from "./useMonthPicker";
export { useDateInputContext, DateContext } from "./useDateInputContext";
export {
useSharedMonthContext,
SharedMonthProvider,
} from "./useSharedMonthContext";
@@ -1,6 +1,6 @@
import differenceInCalendarDays from "date-fns/differenceInCalendarDays";
import isWeekend from "date-fns/isWeekend";
import React, { useCallback, useEffect, useRef, useState } from "react";
import React, { useCallback, useRef, useState } from "react";
import { DayClickEventHandler, isMatch } from "react-day-picker";
import { DateInputProps } from "../DateInput";
import { DatePickerProps } from "../datepicker/DatePicker";
@@ -10,6 +10,8 @@ import {
isValidDate,
parseDate,
} from "../utils";
import { useEscape } from "./useEscape";
import { useOutsideClickHandler } from "./useOutsideClickHandler";
export interface UseDatepickerOptions
extends Pick<
@@ -134,7 +136,7 @@ export const useDatepicker = (
const locale = getLocaleFromString(_locale);
const inputRef = useRef<HTMLInputElement>(null);
const daypickerRef = useRef<HTMLDivElement>(null);
const [daypickerRef, setDaypickerRef] = useState<HTMLDivElement>();
const [defaultSelected, setDefaultSelected] = useState(_defaultSelected);
@@ -148,45 +150,30 @@ export const useDatepicker = (
: "";
const [inputValue, setInputValue] = useState(defaultInputValue);
const handleOpen = useCallback(
(open: boolean) => {
setOpen(open);
!open &&
setMonth(selectedDay ?? defaultSelected ?? defaultMonth ?? today);
},
[defaultMonth, defaultSelected, selectedDay, today]
);
useOutsideClickHandler(open, handleOpen, [
daypickerRef,
inputRef.current,
inputRef.current?.nextSibling,
]);
useEscape(open, handleOpen, inputRef);
const updateDate = (date?: Date) => {
onDateChange?.(date);
setSelectedDay(date);
};
const updateValidation = (val: Partial<DateValidationT> = {}) => {
const msg = getValidationMessage(val);
onValidate?.(msg);
};
const handleFocusIn = useCallback(
(e) => {
/* Workaround for shadow-dom users (open) */
const composed = e.composedPath?.()?.[0];
if (!e?.target || !e?.target?.nodeType || !composed) {
return;
}
![
daypickerRef.current,
inputRef.current,
inputRef.current?.nextSibling,
].some(
(element) => element?.contains(e.target) || element?.contains(composed)
) &&
open &&
setOpen(false);
},
[open]
);
useEffect(() => {
window.addEventListener("focusin", handleFocusIn);
window.addEventListener("pointerdown", handleFocusIn);
return () => {
window?.removeEventListener?.("focusin", handleFocusIn);
window?.removeEventListener?.("pointerdown", handleFocusIn);
};
}, [handleFocusIn]);
const updateValidation = (val: Partial<DateValidationT> = {}) =>
onValidate?.(getValidationMessage(val));
const reset = () => {
updateDate(defaultSelected);
@@ -204,7 +191,7 @@ export const useDatepicker = (
};
const handleFocus: React.FocusEventHandler<HTMLInputElement> = (e) => {
!open && openOnFocus && setOpen(true);
!open && openOnFocus && handleOpen(true);
let day = parseDate(
e.target.value,
today,
@@ -213,8 +200,14 @@ export const useDatepicker = (
allowTwoDigitYear
);
if (isValidDate(day)) {
setMonth(day);
setInputValue(formatDateForInput(day, locale, "date", inputFormat));
const isBefore =
fromDate && day && differenceInCalendarDays(fromDate, day) > 0;
const isAfter =
toDate && day && differenceInCalendarDays(day, toDate) > 0;
!isBefore && !isAfter && setMonth(day);
}
};
@@ -233,7 +226,7 @@ export const useDatepicker = (
/* Only allow de-selecting if not required */
const handleDayClick: DayClickEventHandler = (day, { selected }) => {
if (day && !selected) {
setOpen(false);
handleOpen(false);
inputRef.current && inputRef.current.focus();
}
@@ -300,24 +293,6 @@ export const useDatepicker = (
setMonth(defaultMonth ?? day);
};
const handleClose = useCallback(() => {
setOpen(false);
inputRef.current && inputRef.current.focus();
}, []);
const escape = useCallback(
(e) => open && e.key === "Escape" && handleClose(),
[handleClose, open]
);
useEffect(() => {
window.addEventListener("keydown", escape, false);
return () => {
window.removeEventListener("keydown", escape, false);
};
}, [escape]);
const datepickerProps = {
month,
onMonthChange: (month) => setMonth(month),
@@ -328,10 +303,10 @@ export const useDatepicker = (
toDate,
today,
open,
onOpenToggle: () => setOpen((x) => !x),
onOpenToggle: () => handleOpen(!open),
disabled,
disableWeekends,
ref: daypickerRef,
ref: setDaypickerRef,
};
const inputProps = {
@@ -0,0 +1,25 @@
import { useCallback, useEffect } from "react";
export const useEscape = (
open: boolean,
setOpen: (openState: boolean) => void,
focusRef: any
) => {
const handleClose = useCallback(() => {
setOpen(false);
focusRef?.current && focusRef.current.focus();
}, [focusRef, setOpen]);
const escape = useCallback(
(e) => open && e.key === "Escape" && handleClose(),
[handleClose, open]
);
useEffect(() => {
window.addEventListener("keydown", escape, false);
return () => {
window.removeEventListener("keydown", escape, false);
};
}, [escape]);
};
@@ -1,4 +1,4 @@
import React, { useCallback, useEffect, useRef, useState } from "react";
import React, { useCallback, useMemo, useRef, useState } from "react";
import { DateInputProps } from "../DateInput";
import { MonthPickerProps } from "../monthpicker/MonthPicker";
import {
@@ -8,6 +8,8 @@ import {
isValidDate,
parseDate,
} from "../utils";
import { useEscape } from "./useEscape";
import { useOutsideClickHandler } from "./useOutsideClickHandler";
export interface UseMonthPickerOptions
extends Pick<
@@ -94,6 +96,20 @@ const getValidationMessage = (val = {}): MonthValidationT => ({
...val,
});
const getIsBefore = (opt: { fromDate?: Date; date?: Date }) =>
opt.fromDate &&
opt.date &&
(opt.fromDate.getFullYear() > opt.date.getFullYear() ||
(opt.fromDate.getFullYear() === opt.date.getFullYear() &&
opt.fromDate.getMonth() > opt.date.getMonth()));
const getIsAfter = (opt: { toDate?: Date; date?: Date }) =>
opt.toDate &&
opt.date &&
(opt.toDate.getFullYear() < opt.date.getFullYear() ||
(opt.toDate.getFullYear() === opt.date.getFullYear() &&
opt.toDate.getMonth() < opt.date.getMonth()));
export const useMonthpicker = (
opt: UseMonthPickerOptions = {}
): UseMonthPickerValue => {
@@ -114,11 +130,11 @@ export const useMonthpicker = (
const [defaultSelected, setDefaultSelected] = useState(_defaultSelected);
const today = new Date();
const today = useMemo(() => new Date(), []);
const locale = getLocaleFromString(_locale);
const inputRef = useRef<HTMLInputElement>(null);
const monthpickerRef = useRef<HTMLDivElement>(null);
const [monthpickerRef, setMonthpickerRef] = useState<HTMLDivElement>();
// Initialize states
const [year, setYear] = useState(defaultSelected ?? defaultYear ?? today);
@@ -131,44 +147,30 @@ export const useMonthpicker = (
const [inputValue, setInputValue] = useState(defaultInputValue);
const handleOpen = useCallback(
(open: boolean) => {
setOpen(open);
!open &&
setYear(selectedMonth ?? defaultSelected ?? defaultYear ?? today);
},
[defaultSelected, defaultYear, selectedMonth, today]
);
useOutsideClickHandler(open, handleOpen, [
monthpickerRef,
inputRef.current,
inputRef.current?.nextSibling,
]);
useEscape(open, handleOpen, inputRef);
const updateMonth = (date?: Date) => {
onMonthChange?.(date);
setSelectedMonth(date);
};
const updateValidation = (val: Partial<MonthValidationT> = {}) => {
const msg = getValidationMessage(val);
onValidate?.(msg);
};
const handleFocusIn = useCallback(
(e) => {
/* Workaround for shadow-dom users (open) */
const composed = e.composedPath?.()?.[0];
if (!e?.target || !e?.target?.nodeType || !composed) {
return;
}
![
monthpickerRef.current,
inputRef.current,
inputRef.current?.nextSibling,
].some(
(element) => element?.contains(e.target) || element?.contains(composed)
) &&
open &&
setOpen(false);
},
[open]
);
useEffect(() => {
window.addEventListener("focusin", handleFocusIn);
window.addEventListener("pointerdown", handleFocusIn);
return () => {
window?.removeEventListener?.("focusin", handleFocusIn);
window?.removeEventListener?.("pointerdown", handleFocusIn);
};
}, [handleFocusIn]);
const updateValidation = (val: Partial<MonthValidationT> = {}) =>
onValidate?.(getValidationMessage(val));
const reset = () => {
updateMonth(defaultSelected);
@@ -186,7 +188,7 @@ export const useMonthpicker = (
};
const handleFocus: React.FocusEventHandler<HTMLInputElement> = (e) => {
!open && openOnFocus && setOpen(true);
!open && openOnFocus && handleOpen(true);
let day = parseDate(
e.target.value,
today,
@@ -194,8 +196,11 @@ export const useMonthpicker = (
"month",
allowTwoDigitYear
);
const isBefore = getIsBefore({ fromDate, date: day });
const isAfter = getIsAfter({ toDate, date: day });
if (isValidDate(day)) {
setYear(day);
!isBefore && !isAfter && setYear(day);
setInputValue(formatDateForInput(day, locale, "month", inputFormat));
} else {
setYear(defaultSelected ?? defaultYear ?? today);
@@ -217,7 +222,7 @@ export const useMonthpicker = (
/* Only allow de-selecting if not required */
const handleMonthClick = (month?: Date) => {
if (month) {
setOpen(false);
handleOpen(false);
inputRef.current && inputRef.current.focus();
setYear(month);
}
@@ -249,19 +254,8 @@ export const useMonthpicker = (
allowTwoDigitYear
);
const isBefore =
fromDate &&
month &&
(fromDate.getFullYear() > month.getFullYear() ||
(fromDate.getFullYear() === month.getFullYear() &&
fromDate.getMonth() > month.getMonth()));
const isAfter =
toDate &&
month &&
(toDate.getFullYear() < month.getFullYear() ||
(toDate.getFullYear() === month.getFullYear() &&
toDate.getMonth() < month.getMonth()));
const isBefore = getIsBefore({ fromDate, date: month });
const isAfter = getIsAfter({ toDate, date: month });
if (!isValidDate(month) || (disabled && isMatch(month, disabled))) {
updateMonth(undefined);
@@ -294,24 +288,6 @@ export const useMonthpicker = (
setYear(month);
};
const handleClose = useCallback(() => {
setOpen(false);
inputRef.current && inputRef.current.focus();
}, []);
const escape = useCallback(
(e) => open && e.key === "Escape" && handleClose(),
[handleClose, open]
);
useEffect(() => {
window.addEventListener("keydown", escape, false);
return () => {
window.removeEventListener("keydown", escape, false);
};
}, [escape]);
const monthpickerProps = {
year,
onYearChange: (y?: Date) => setYear(y ?? today),
@@ -321,9 +297,9 @@ export const useMonthpicker = (
fromDate,
toDate,
open,
onOpenToggle: () => setOpen((x) => !x),
onOpenToggle: () => handleOpen(!open),
disabled,
ref: monthpickerRef,
ref: setMonthpickerRef,
};
const inputProps = {
@@ -0,0 +1,34 @@
import { useCallback, useEffect } from "react";
export const useOutsideClickHandler = (
open: boolean,
setOpen: (openState: boolean) => void,
refs: Array<any>
) => {
const handleFocusIn = useCallback(
(e) => {
const composed = e.composedPath?.()?.[0];
if (!e?.target || !e?.target?.nodeType || !composed) {
return;
}
if (
!refs.some(
(element) =>
element?.contains(e.target) || element?.contains(composed)
)
) {
open && setOpen(false);
}
},
[open, refs, setOpen]
);
useEffect(() => {
window.addEventListener("focusin", handleFocusIn);
window.addEventListener("pointerdown", handleFocusIn);
return () => {
window?.removeEventListener?.("focusin", handleFocusIn);
window?.removeEventListener?.("pointerdown", handleFocusIn);
};
}, [handleFocusIn]);
};
@@ -1,7 +1,7 @@
import differenceInCalendarDays from "date-fns/differenceInCalendarDays";
import isBefore from "date-fns/isBefore";
import isWeekend from "date-fns/isWeekend";
import React, { useCallback, useEffect, useRef, useState } from "react";
import React, { useRef, useState } from "react";
import { DateRange, isMatch } from "react-day-picker";
import { DateInputProps } from "../DateInput";
import { DatePickerProps } from "../datepicker/DatePicker";
@@ -12,6 +12,8 @@ import {
parseDate,
} from "../utils";
import { DateValidationT, UseDatepickerOptions } from "./useDatepicker";
import { useEscape } from "./useEscape";
import { useOutsideClickHandler } from "./useOutsideClickHandler";
export type RangeValidationT = {
from: DateValidationT;
@@ -211,7 +213,7 @@ export const useRangeDatepicker = (
const inputRefTo = useRef<HTMLInputElement>(null);
const inputRefFrom = useRef<HTMLInputElement>(null);
const datePickerRef = useRef<HTMLDivElement | null>(null);
const [daypickerRef, setDaypickerRef] = useState<HTMLDivElement>();
const [defaultSelected, setDefaultSelected] = useState(_defaultSelected);
@@ -241,6 +243,20 @@ export const useRangeDatepicker = (
const [open, setOpen] = useState(false);
useOutsideClickHandler(open, setOpen, [
daypickerRef,
inputRefTo.current,
inputRefFrom.current,
inputRefTo.current?.nextSibling,
inputRefFrom.current?.nextSibling,
]);
useEscape(
open,
setOpen,
selectedRange?.from && !selectedRange?.to ? inputRefTo : inputRefFrom
);
const updateRange = (range?: DateRange) => {
onRangeChange?.(range);
setSelectedRange(range);
@@ -255,37 +271,6 @@ export const useRangeDatepicker = (
onValidate?.(msg);
};
const handleFocusIn = useCallback(
(e) => {
/* Workaround for shadow-dom users (open) */
const composed = e.composedPath?.()?.[0];
if (!e?.target || !e?.target?.nodeType || !composed) {
return;
}
![
datePickerRef.current,
inputRefTo.current,
inputRefFrom.current,
inputRefTo.current?.nextSibling,
inputRefFrom.current?.nextSibling,
].some(
(element) => element?.contains(e.target) || element?.contains(composed)
) &&
open &&
setOpen(false);
},
[open]
);
useEffect(() => {
window.addEventListener("focusin", handleFocusIn);
window.addEventListener("pointerdown", handleFocusIn);
return () => {
window?.removeEventListener?.("focusin", handleFocusIn);
window?.removeEventListener?.("pointerdown", handleFocusIn);
};
}, [handleFocusIn]);
const reset = () => {
updateRange(defaultSelected ?? { from: undefined, to: undefined });
setMonth(defaultSelected ? defaultSelected?.from : defaultMonth ?? today);
@@ -333,12 +318,18 @@ export const useRangeDatepicker = (
allowTwoDigitYear
);
if (isValidDate(day)) {
setMonth(day);
src === RANGE.FROM
? setFromInputValue(
formatDateForInput(day, locale, "date", inputFormat)
)
: setToInputValue(formatDateForInput(day, locale, "date", inputFormat));
const isBefore =
fromDate && day && differenceInCalendarDays(fromDate, day) > 0;
const isAfter =
toDate && day && differenceInCalendarDays(day, toDate) > 0;
!isBefore && !isAfter && setMonth(day);
}
};
@@ -527,28 +518,6 @@ export const useRangeDatepicker = (
: toChange(e.target.value, day, isBefore, isAfter);
};
const handleClose = useCallback(() => {
setOpen(false);
if (selectedRange?.from && !selectedRange?.to) {
inputRefTo?.current?.focus();
} else {
inputRefFrom?.current?.focus();
}
}, [selectedRange]);
const escape = useCallback(
(e) => open && e.key === "Escape" && handleClose(),
[handleClose, open]
);
useEffect(() => {
window.addEventListener("keydown", escape, false);
return () => {
window.removeEventListener("keydown", escape, false);
};
}, [escape]);
const datepickerProps = {
month: month,
onMonthChange: (month) => setMonth(month),
@@ -563,7 +532,7 @@ export const useRangeDatepicker = (
onOpenToggle: () => setOpen((x) => !x),
disabled,
disableWeekends,
ref: datePickerRef,
ref: setDaypickerRef,
};
const fromInputProps = {
@@ -6,7 +6,7 @@ import isSameMonth from "date-fns/isSameMonth";
import setYear from "date-fns/setYear";
import React, { useEffect, useRef } from "react";
import { useDayPicker } from "react-day-picker";
import { useSharedMonthContext } from "../hooks";
import { useSharedMonthContext } from "../context";
import { dateIsInCurrentMonth, isMatch, nextEnabled } from "../utils";
interface MonthType {
@@ -1,13 +1,13 @@
import { Left, Right } from "@navikt/ds-icons";
import isSameYear from "date-fns/isSameYear";
import setYear from "date-fns/setYear";
import startOfMonth from "date-fns/startOfMonth";
import startOfYear from "date-fns/startOfYear";
import React from "react";
import { useDayPicker } from "react-day-picker";
import { Button, Select } from "../..";
import { useSharedMonthContext } from "../hooks";
import { hasNextYear, labelNextYear, labelPrevYear } from "../utils";
import { useSharedMonthContext } from "../context";
import { labelNextYear, labelPrevYear } from "../utils";
import { isAfter, isBefore } from "date-fns";
export const MonthCaption = () => {
const {
@@ -27,34 +27,38 @@ export const MonthCaption = () => {
for (let year = fromYear; year <= toYear; year++) {
years.push(setYear(startOfYear(new Date()), year));
}
if (!years.map((x) => x.getFullYear()).includes(year.getFullYear())) {
years.push(setYear(startOfYear(new Date()), year.getFullYear()));
}
years.sort((a, b) => a.getFullYear() - b.getFullYear());
}
const handleYearChange = (e) =>
toYear(setYear(startOfMonth(new Date()), Number(e.target.value)));
const handleButtonClick = (val: number) => {
let newMonth: Date;
if (hasDropdown && hasNextYear(year, years, val)) {
newMonth = setYear(new Date(), year.getFullYear() + val);
toYear(newMonth);
} else if (!hasDropdown) {
const newYear = Number(year.getFullYear() + val);
newMonth = setYear(year, newYear);
toYear(newMonth);
}
const newYear = Number(year.getFullYear() + val);
toYear(setYear(year, newYear));
};
const hasFollowingYear = (value: number) => {
return years.some((y) =>
isSameYear(y, setYear(year, Number(year.getFullYear() + value)))
);
const hasPrevYear = () => {
return fromDate
? isBefore(year?.getFullYear() - 1, fromDate?.getFullYear())
: true;
};
const hasNextYear = () => {
return toDate
? isAfter(year?.getFullYear() + 1, toDate?.getFullYear())
: true;
};
return (
<div className="navds-date__caption">
<Button
className="navds-date__caption-button"
disabled={!hasDropdown ? false : !hasFollowingYear(-1)}
disabled={hasPrevYear()}
onClick={() => handleButtonClick(-1)}
aria-label={labelPrevYear(locale?.code)}
icon={<Left aria-hidden />}
@@ -83,7 +87,7 @@ export const MonthCaption = () => {
)}
<Button
className="navds-date__caption-button"
disabled={!hasDropdown ? false : !hasFollowingYear(1)}
disabled={hasNextYear()}
onClick={() => handleButtonClick(1)}
aria-label={labelNextYear(locale?.code)}
icon={<Right aria-hidden />}
@@ -3,7 +3,7 @@ import React, { forwardRef, useRef, useState } from "react";
import { RootProvider } from "react-day-picker";
import { Popover, useId } from "../..";
import { DateInputType, MonthPickerInput } from "../DateInput";
import { DateContext, SharedMonthProvider } from "../hooks";
import { DateContext, SharedMonthProvider } from "../context";
import { getLocaleFromString, Matcher } from "../utils";
import MonthCaption from "./MonthCaption";
import MonthPickerStandalone, {
@@ -1,7 +1,7 @@
import cl from "clsx";
import React, { forwardRef, useState } from "react";
import { RootProvider } from "react-day-picker";
import { SharedMonthProvider } from "../hooks";
import { SharedMonthProvider } from "../context";
import { getLocaleFromString } from "../utils";
import MonthCaption from "./MonthCaption";
import { MonthPickerProps } from "./MonthPicker";
@@ -4,7 +4,7 @@ import setYear from "date-fns/setYear";
import startOfMonth from "date-fns/startOfMonth";
import React, { useState } from "react";
import { BodyShort } from "../..";
import { useSharedMonthContext } from "../hooks";
import { useSharedMonthContext } from "../context";
import { isMatch } from "../utils";
import MonthButton from "./MonthButton";
@@ -77,11 +77,13 @@ export const UseMonthpicker = () => {
const { inputProps, monthpickerProps } = UNSAFE_useMonthpicker({
disabled: [new Date("Apr 1 2022")],
onMonthChange: console.log,
fromDate: new Date("Jan 1 2022"),
toDate: new Date("Sep 27 2025"),
});
return (
<div style={{ height: "20rem" }}>
<MonthPicker {...monthpickerProps}>
<MonthPicker {...monthpickerProps} dropdownCaption>
<MonthPicker.Input
{...inputProps}
label="Velg måned"
@@ -1,4 +1,4 @@
import { dateIsInCurrentMonth, hasNextYear } from "..";
import { dateIsInCurrentMonth } from "..";
const selectedDate = new Date("Feb 1 1994");
@@ -19,29 +19,3 @@ describe("Returns if date is in current month", () => {
).toBeFalsy();
});
});
const years = [
new Date(),
new Date("Aug 5 2023"),
new Date("Aug 5 2024"),
new Date("Aug 5 2025"),
new Date("Aug 5 2026"),
new Date("Aug 5 2027"),
new Date("Aug 5 2028"),
new Date("Aug 5 2029"),
];
describe("Returns if year is at start or end of range", () => {
test("Should have next year (true)", () => {
expect(hasNextYear(new Date(), years, 1)).toBeTruthy();
});
test("Should have previous year (true)", () => {
expect(hasNextYear(new Date("Aug 3 2024"), years, -1)).toBeTruthy();
});
test("Should not have next year (false)", () => {
expect(hasNextYear(new Date("Aug 3 2029"), years, 1)).toBeFalsy();
});
test("Should not have previous year (false)", () => {
expect(hasNextYear(new Date(), years, -1)).toBeFalsy();
});
});
@@ -57,6 +57,25 @@ describe("Extracts correct months", () => {
};
expect(getMonths(t.start, t.end, t.current).length).toEqual(t.res);
});
test("End part of 2022, including starting month (12)", () => {
const t = {
start: new Date(2019, 5, 22),
end: new Date(2022, 7, 22),
current: new Date(2022, 7, 22),
res: 8,
};
expect(getMonths(t.start, t.end, t.current).length).toEqual(t.res);
});
test("Adds out of range month to list (13)", () => {
const t = {
start: new Date(2019, 5, 22),
end: new Date(2022, 7, 22),
current: new Date(2022, 9, 22),
res: 9,
};
console.log(getMonths(t.start, t.end, t.current));
expect(getMonths(t.start, t.end, t.current).length).toEqual(t.res);
});
});
describe("Extracts correct years", () => {
@@ -64,16 +83,39 @@ describe("Extracts correct years", () => {
const t = {
start: new Date(2019, 2, 22),
end: new Date(2019, 9, 22),
current: 2019,
res: 1,
};
expect(getYears(t.start, t.end).length).toEqual(t.res);
expect(getYears(t.start, t.end, t.current).length).toEqual(t.res);
});
test("Multiple years (11)", () => {
const t = {
start: new Date(2019, 2, 22),
end: new Date(2029, 9, 22),
current: 2022,
res: 11,
};
expect(getYears(t.start, t.end).length).toEqual(t.res);
expect(getYears(t.start, t.end, t.current).length).toEqual(t.res);
});
test("Displaymonth outside range: after (11)", () => {
const t = {
start: new Date(2019, 2, 22),
end: new Date(2029, 9, 22),
current: 2040,
res: 12,
};
expect(getYears(t.start, t.end, t.current).length).toEqual(t.res);
});
test("Displaymonth outside range: before (11)", () => {
const t = {
start: new Date(2019, 2, 22),
end: new Date(2029, 9, 22),
current: 2001,
res: 12,
};
expect(getYears(t.start, t.end, t.current).length).toEqual(t.res);
});
});
@@ -12,7 +12,3 @@ export const dateIsInCurrentMonth = (
export function isValidDate(day: Date): boolean {
return day && !isNaN(day?.getTime()) && day.getFullYear() > 999;
}
export const hasNextYear = (year: Date, years: Date[], val: any): boolean => {
return years.some((x) => year.getFullYear() + val === x.getFullYear());
};
+17 -1
View File
@@ -28,15 +28,31 @@ export const getMonths = (start: Date, end: Date, current: Date): Date[] => {
dropdownMonths.push(setMonth(date, month));
}
}
if (!dropdownMonths.map((d) => d.getMonth()).includes(current.getMonth())) {
dropdownMonths.push(current);
}
dropdownMonths.sort((a, b) => a.getMonth() - b.getMonth());
return dropdownMonths;
};
export const getYears = (start: Date, end: Date): Date[] => {
export const getYears = (
start: Date,
end: Date,
currentYear: number
): Date[] => {
const years: Date[] = [];
const fromYear = start.getFullYear();
const toYear = end.getFullYear();
for (let year = fromYear; year <= toYear; year++) {
years.push(setYear(startOfYear(new Date()), year));
}
if (fromYear > currentYear || toYear < currentYear) {
years.push(setYear(startOfYear(new Date()), currentYear));
}
years.sort((a, b) => a.getFullYear() - b.getFullYear());
return years;
};
Loaded 100 of 201 files, more files were not shown because too many files have changed in this diff. Show more