@navikt/ds-react 2.1.5 → 2.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -5
- package/_docs.json +356 -293
- package/cjs/accordion/AccordionContent.js +2 -2
- package/cjs/accordion/AccordionHeader.js +2 -2
- package/cjs/alert/Alert.js +2 -2
- package/cjs/chat/Chat.js +3 -3
- package/cjs/date/hooks/useDatepicker.js +2 -2
- package/cjs/date/hooks/useMonthPicker.js +2 -2
- package/cjs/date/hooks/useRangeDatepicker.js +3 -3
- package/esm/accordion/AccordionContent.js +1 -1
- package/esm/accordion/AccordionContent.js.map +1 -1
- package/esm/accordion/AccordionHeader.js +1 -1
- package/esm/accordion/AccordionHeader.js.map +1 -1
- package/esm/accordion/index.d.ts +1 -1
- package/esm/accordion/index.js.map +1 -1
- package/esm/alert/Alert.js +1 -1
- package/esm/alert/Alert.js.map +1 -1
- package/esm/alert/index.d.ts +1 -1
- package/esm/button/index.d.ts +1 -1
- package/esm/chat/Chat.js +1 -1
- package/esm/chat/Chat.js.map +1 -1
- package/esm/chat/index.d.ts +1 -1
- package/esm/chat/index.js.map +1 -1
- package/esm/chips/Removable.d.ts +1 -1
- package/esm/chips/Toggle.d.ts +1 -1
- package/esm/chips/index.d.ts +1 -1
- package/esm/chips/index.js.map +1 -1
- package/esm/date/hooks/useDatepicker.d.ts +5 -0
- package/esm/date/hooks/useDatepicker.js +2 -2
- package/esm/date/hooks/useDatepicker.js.map +1 -1
- package/esm/date/hooks/useMonthPicker.d.ts +5 -0
- package/esm/date/hooks/useMonthPicker.js +2 -2
- package/esm/date/hooks/useMonthPicker.js.map +1 -1
- package/esm/date/hooks/useRangeDatepicker.js +3 -3
- package/esm/date/hooks/useRangeDatepicker.js.map +1 -1
- package/esm/date/index.d.ts +6 -6
- package/esm/date/utils/index.d.ts +1 -1
- package/esm/date/utils/index.js.map +1 -1
- package/esm/form/Fieldset/index.d.ts +1 -1
- package/esm/form/checkbox/index.d.ts +2 -2
- package/esm/form/checkbox/index.js +1 -1
- package/esm/form/checkbox/index.js.map +1 -1
- package/esm/form/error-summary/index.d.ts +1 -1
- package/esm/form/index.d.ts +10 -10
- package/esm/form/index.js +1 -1
- package/esm/form/index.js.map +1 -1
- package/esm/form/radio/index.d.ts +2 -2
- package/esm/form/radio/index.js.map +1 -1
- package/esm/form/search/index.d.ts +1 -1
- package/esm/form/search/index.js +1 -1
- package/esm/form/search/index.js.map +1 -1
- package/esm/grid/index.d.ts +3 -3
- package/esm/grid/index.js.map +1 -1
- package/esm/guide-panel/index.d.ts +2 -2
- package/esm/guide-panel/index.js.map +1 -1
- package/esm/help-text/index.d.ts +1 -1
- package/esm/link/Link.d.ts +1 -1
- package/esm/link/index.d.ts +1 -1
- package/esm/link-panel/LinkPanelTitle.d.ts +1 -1
- package/esm/link-panel/index.d.ts +1 -1
- package/esm/loader/index.d.ts +1 -1
- package/esm/modal/index.d.ts +2 -2
- package/esm/modal/index.js.map +1 -1
- package/esm/pagination/index.d.ts +1 -1
- package/esm/pagination/index.js.map +1 -1
- package/esm/panel/Panel.d.ts +1 -1
- package/esm/panel/index.d.ts +1 -1
- package/esm/popover/index.d.ts +2 -2
- package/esm/popover/index.js.map +1 -1
- package/esm/read-more/index.d.ts +1 -1
- package/esm/stepper/index.d.ts +1 -1
- package/esm/stepper/index.js.map +1 -1
- package/esm/table/index.d.ts +8 -8
- package/esm/table/index.js.map +1 -1
- package/esm/tabs/index.d.ts +4 -4
- package/esm/tabs/index.js.map +1 -1
- package/esm/tag/index.d.ts +1 -1
- package/esm/tag/index.js.map +1 -1
- package/esm/toggle-group/index.d.ts +2 -2
- package/esm/toggle-group/index.js.map +1 -1
- package/esm/tooltip/index.d.ts +1 -1
- package/esm/tooltip/index.js.map +1 -1
- package/esm/typography/BodyLong.d.ts +1 -1
- package/esm/typography/BodyShort.d.ts +1 -1
- package/esm/typography/Detail.d.ts +1 -1
- package/esm/typography/ErrorMessage.d.ts +1 -1
- package/esm/typography/Heading.d.ts +1 -1
- package/esm/typography/Ingress.d.ts +1 -1
- package/esm/typography/Label.d.ts +1 -1
- package/esm/typography/index.d.ts +7 -7
- package/esm/typography/index.js +1 -1
- package/esm/typography/index.js.map +1 -1
- package/package.json +3 -3
- package/src/accordion/AccordionContent.tsx +1 -1
- package/src/accordion/AccordionHeader.tsx +1 -1
- package/src/accordion/accordion.stories.tsx +16 -14
- package/src/accordion/index.ts +1 -1
- package/src/alert/Alert.tsx +1 -1
- package/src/alert/alert.stories.tsx +35 -27
- package/src/alert/index.ts +1 -1
- package/src/button/button.stories.tsx +95 -83
- package/src/button/index.ts +1 -1
- package/src/chat/Chat.tsx +1 -1
- package/src/chat/chat.stories.tsx +27 -25
- package/src/chat/index.ts +1 -1
- package/src/chips/Removable.tsx +1 -1
- package/src/chips/Toggle.tsx +1 -1
- package/src/chips/chips.stories.tsx +32 -29
- package/src/chips/index.ts +1 -1
- package/src/date/datepicker/datepicker.stories.tsx +103 -81
- package/src/date/hooks/useDatepicker.tsx +7 -1
- package/src/date/hooks/useMonthPicker.tsx +7 -1
- package/src/date/hooks/useRangeDatepicker.tsx +3 -2
- package/src/date/index.ts +8 -8
- package/src/date/monthpicker/monthpicker.stories.tsx +13 -11
- package/src/date/utils/index.ts +1 -1
- package/src/form/Fieldset/index.ts +1 -1
- package/src/form/checkbox/checkbox.stories.tsx +66 -61
- package/src/form/checkbox/index.ts +5 -2
- package/src/form/error-summary/error-summary.stories.tsx +16 -14
- package/src/form/error-summary/index.ts +1 -1
- package/src/form/index.ts +16 -11
- package/src/form/radio/index.ts +2 -2
- package/src/form/radio/radio.stories.tsx +39 -34
- package/src/form/search/index.ts +5 -1
- package/src/form/search/search.stories.tsx +26 -23
- package/src/form/stories/confirmation-panel.stories.tsx +19 -17
- package/src/form/stories/fieldset.stories.tsx +13 -11
- package/src/form/stories/select.stories.tsx +12 -10
- package/src/form/stories/switch.stories.tsx +9 -7
- package/src/form/stories/text-field.stories.tsx +8 -6
- package/src/form/stories/textarea.stories.tsx +16 -14
- package/src/grid/index.ts +3 -3
- package/src/guide-panel/guidepanel.stories.tsx +21 -19
- package/src/guide-panel/index.ts +2 -2
- package/src/help-text/help-text.stories.tsx +11 -9
- package/src/help-text/index.ts +1 -1
- package/src/link/Link.tsx +1 -1
- package/src/link/index.ts +1 -1
- package/src/link/link.stories.tsx +24 -22
- package/src/link-panel/LinkPanelTitle.tsx +1 -1
- package/src/link-panel/index.ts +1 -1
- package/src/link-panel/link-panel.stories.tsx +19 -17
- package/src/loader/index.ts +1 -1
- package/src/loader/loader.stories.tsx +8 -6
- package/src/modal/index.ts +2 -2
- package/src/modal/modal.stories.tsx +35 -30
- package/src/pagination/index.ts +1 -1
- package/src/pagination/pagination.stories.tsx +41 -36
- package/src/panel/Panel.tsx +1 -1
- package/src/panel/index.ts +1 -1
- package/src/panel/panel.stories.tsx +17 -15
- package/src/popover/index.ts +2 -2
- package/src/popover/popover.stories.tsx +25 -19
- package/src/read-more/index.ts +1 -1
- package/src/read-more/readmore.stories.tsx +20 -17
- package/src/stepper/index.ts +1 -1
- package/src/stepper/stepper.stories.tsx +44 -41
- package/src/table/index.ts +8 -8
- package/src/tabs/Tabs.stories.tsx +24 -22
- package/src/tabs/index.ts +4 -4
- package/src/tag/index.ts +1 -1
- package/src/tag/tag.stories.tsx +9 -7
- package/src/toggle-group/ToggleGroup.stories.tsx +21 -18
- package/src/toggle-group/index.ts +2 -2
- package/src/tooltip/index.ts +1 -1
- package/src/tooltip/tooltip.stories.tsx +22 -20
- package/src/typography/BodyLong.tsx +1 -1
- package/src/typography/BodyShort.tsx +1 -1
- package/src/typography/Detail.tsx +1 -1
- package/src/typography/ErrorMessage.tsx +1 -1
- package/src/typography/Heading.tsx +1 -1
- package/src/typography/Ingress.tsx +1 -1
- package/src/typography/Label.tsx +1 -1
- package/src/typography/heading.stories.tsx +5 -3
- package/src/typography/index.ts +10 -7
- package/src/typography/typography.stories.tsx +0 -44
|
@@ -8,6 +8,45 @@ export default {
|
|
|
8
8
|
parameters: {
|
|
9
9
|
chromatic: { delay: 600 },
|
|
10
10
|
},
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const variants: Array<"primary" | "secondary" | "tertiary" | "danger"> = [
|
|
14
|
+
"primary",
|
|
15
|
+
"secondary",
|
|
16
|
+
"tertiary",
|
|
17
|
+
"danger",
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
const varSwitch = {
|
|
21
|
+
primary: "Primary",
|
|
22
|
+
secondary: "Secondary",
|
|
23
|
+
tertiary: "Tertiary",
|
|
24
|
+
danger: "Danger",
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export const Default = {
|
|
28
|
+
render: (props) => {
|
|
29
|
+
return (
|
|
30
|
+
<Button
|
|
31
|
+
variant={props.variant}
|
|
32
|
+
size={props.size}
|
|
33
|
+
loading={props.loading}
|
|
34
|
+
icon={props.icon ? <Star /> : undefined}
|
|
35
|
+
iconPosition={props.iconPosition}
|
|
36
|
+
>
|
|
37
|
+
{props.children}
|
|
38
|
+
</Button>
|
|
39
|
+
);
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
args: {
|
|
43
|
+
icon: false,
|
|
44
|
+
loading: false,
|
|
45
|
+
iconPosition: "left",
|
|
46
|
+
children: "Knapp",
|
|
47
|
+
variant: "primary",
|
|
48
|
+
size: "medium",
|
|
49
|
+
},
|
|
11
50
|
argTypes: {
|
|
12
51
|
variant: {
|
|
13
52
|
control: {
|
|
@@ -30,41 +69,6 @@ export default {
|
|
|
30
69
|
},
|
|
31
70
|
};
|
|
32
71
|
|
|
33
|
-
const variants: Array<"primary" | "secondary" | "tertiary" | "danger"> = [
|
|
34
|
-
"primary",
|
|
35
|
-
"secondary",
|
|
36
|
-
"tertiary",
|
|
37
|
-
"danger",
|
|
38
|
-
];
|
|
39
|
-
|
|
40
|
-
const varSwitch = {
|
|
41
|
-
primary: "Primary",
|
|
42
|
-
secondary: "Secondary",
|
|
43
|
-
tertiary: "Tertiary",
|
|
44
|
-
danger: "Danger",
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
export const Default = (props) => {
|
|
48
|
-
return (
|
|
49
|
-
<Button
|
|
50
|
-
variant={props.variant}
|
|
51
|
-
size={props.size}
|
|
52
|
-
loading={props.loading}
|
|
53
|
-
icon={props.icon ? <Star /> : undefined}
|
|
54
|
-
iconPosition={props.iconPosition}
|
|
55
|
-
>
|
|
56
|
-
{props.children}
|
|
57
|
-
</Button>
|
|
58
|
-
);
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
Default.args = {
|
|
62
|
-
icon: false,
|
|
63
|
-
loading: false,
|
|
64
|
-
iconPosition: "left",
|
|
65
|
-
children: "Knapp",
|
|
66
|
-
};
|
|
67
|
-
|
|
68
72
|
export const Small = () => (
|
|
69
73
|
<div className="rowgap">
|
|
70
74
|
{variants.map((variant) => (
|
|
@@ -95,31 +99,35 @@ export const Link = () => (
|
|
|
95
99
|
</div>
|
|
96
100
|
);
|
|
97
101
|
|
|
98
|
-
export const Loading =
|
|
99
|
-
|
|
100
|
-
<div className="
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
{
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
{
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
{
|
|
118
|
-
|
|
119
|
-
|
|
102
|
+
export const Loading = {
|
|
103
|
+
render: () => (
|
|
104
|
+
<div className="colgap">
|
|
105
|
+
<div className="rowgap">
|
|
106
|
+
{variants.map((variant) => (
|
|
107
|
+
<Button key={variant} variant={variant} loading>
|
|
108
|
+
{varSwitch[variant]}
|
|
109
|
+
</Button>
|
|
110
|
+
))}
|
|
111
|
+
</div>
|
|
112
|
+
<div className="rowgap">
|
|
113
|
+
{variants.map((variant) => (
|
|
114
|
+
<Button key={variant} variant={variant} loading size="small">
|
|
115
|
+
{varSwitch[variant]}
|
|
116
|
+
</Button>
|
|
117
|
+
))}
|
|
118
|
+
</div>
|
|
119
|
+
<div className="rowgap">
|
|
120
|
+
{variants.map((variant) => (
|
|
121
|
+
<Button key={variant} variant={variant} loading size="xsmall">
|
|
122
|
+
{varSwitch[variant]}
|
|
123
|
+
</Button>
|
|
124
|
+
))}
|
|
125
|
+
</div>
|
|
120
126
|
</div>
|
|
121
|
-
|
|
122
|
-
|
|
127
|
+
),
|
|
128
|
+
|
|
129
|
+
args: { chromatic: { delay: 300 } },
|
|
130
|
+
};
|
|
123
131
|
|
|
124
132
|
export const Icon = () => (
|
|
125
133
|
<div className="colgap">
|
|
@@ -217,28 +225,32 @@ export const Disabled = () => (
|
|
|
217
225
|
</div>
|
|
218
226
|
);
|
|
219
227
|
|
|
220
|
-
export const LoadingWithAs =
|
|
221
|
-
|
|
222
|
-
<div className="
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
{
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
228
|
+
export const LoadingWithAs = {
|
|
229
|
+
render: () => (
|
|
230
|
+
<div className="colgap">
|
|
231
|
+
<div className="rowgap">
|
|
232
|
+
{variants.map((variant) => (
|
|
233
|
+
<Button key={variant} variant={variant} loading size="small">
|
|
234
|
+
{varSwitch[variant]}
|
|
235
|
+
</Button>
|
|
236
|
+
))}
|
|
237
|
+
</div>
|
|
238
|
+
<div className="rowgap">
|
|
239
|
+
{variants.map((variant) => (
|
|
240
|
+
<Button
|
|
241
|
+
key={variant}
|
|
242
|
+
variant={variant}
|
|
243
|
+
loading
|
|
244
|
+
size="small"
|
|
245
|
+
as="a"
|
|
246
|
+
href="#"
|
|
247
|
+
>
|
|
248
|
+
{varSwitch[variant]}
|
|
249
|
+
</Button>
|
|
250
|
+
))}
|
|
251
|
+
</div>
|
|
242
252
|
</div>
|
|
243
|
-
|
|
244
|
-
|
|
253
|
+
),
|
|
254
|
+
|
|
255
|
+
args: { chromatic: { delay: 300 } },
|
|
256
|
+
};
|
package/src/button/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { default as Button } from "./Button";
|
|
2
|
-
export { ButtonProps } from "./Button";
|
|
2
|
+
export { type ButtonProps } from "./Button";
|
package/src/chat/Chat.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { forwardRef, HTMLAttributes } from "react";
|
|
2
2
|
import cl from "clsx";
|
|
3
3
|
import Bubble, { BubbleType } from "./Bubble";
|
|
4
|
-
import { BodyLong, BodyShort } from "
|
|
4
|
+
import { BodyLong, BodyShort } from "../typography";
|
|
5
5
|
|
|
6
6
|
export interface ChatProps extends HTMLAttributes<HTMLDivElement> {
|
|
7
7
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Chat } from "../index";
|
|
3
|
-
import { Meta } from "@storybook/react
|
|
3
|
+
import { Meta } from "@storybook/react";
|
|
4
4
|
|
|
5
5
|
export default {
|
|
6
6
|
title: "ds-react/Chat",
|
|
@@ -19,31 +19,33 @@ export default {
|
|
|
19
19
|
},
|
|
20
20
|
} as Meta;
|
|
21
21
|
|
|
22
|
-
export const Default =
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
22
|
+
export const Default = {
|
|
23
|
+
render: (props) => {
|
|
24
|
+
return (
|
|
25
|
+
<Chat
|
|
26
|
+
avatar={props?.avatar ?? "ON"}
|
|
27
|
+
name={props?.name ?? "Ola Normann"}
|
|
28
|
+
timestamp={props?.timestamp ?? "01.01.21 14:00"}
|
|
29
|
+
avatarBgColor={props?.avatarBgColor}
|
|
30
|
+
backgroundColor={props?.backgroundColor}
|
|
31
|
+
>
|
|
32
|
+
<Chat.Bubble>
|
|
33
|
+
Aute minim nisi sunt mollit duis sunt nulla minim non proident.
|
|
34
|
+
</Chat.Bubble>
|
|
35
|
+
<Chat.Bubble>Tempor fugiat amet eu sint in in ullamco.</Chat.Bubble>
|
|
36
|
+
<Chat.Bubble>
|
|
37
|
+
Adipisicing laborum est eu laborum est sit in commodo enim sint
|
|
38
|
+
laboris labore nisi ut.
|
|
39
|
+
</Chat.Bubble>
|
|
40
|
+
</Chat>
|
|
41
|
+
);
|
|
42
|
+
},
|
|
42
43
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
args: {
|
|
45
|
+
name: "Ola Normann",
|
|
46
|
+
timestamp: "01.01.21 14:00",
|
|
47
|
+
avatar: "ON",
|
|
48
|
+
},
|
|
47
49
|
};
|
|
48
50
|
|
|
49
51
|
export const Farger = () => {
|
package/src/chat/index.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Chat, ChatProps } from "./Chat";
|
|
1
|
+
export { default as Chat, type ChatProps } from "./Chat";
|
package/src/chips/Removable.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Close } from "@navikt/ds-icons";
|
|
2
2
|
import cl from "clsx";
|
|
3
3
|
import React, { forwardRef } from "react";
|
|
4
|
-
import { OverridableComponent } from "
|
|
4
|
+
import { OverridableComponent } from "../util/OverridableComponent";
|
|
5
5
|
|
|
6
6
|
export interface RemovableChipsProps
|
|
7
7
|
extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
package/src/chips/Toggle.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SuccessStroke } from "@navikt/ds-icons";
|
|
2
2
|
import cl from "clsx";
|
|
3
3
|
import React, { forwardRef } from "react";
|
|
4
|
-
import { OverridableComponent } from "
|
|
4
|
+
import { OverridableComponent } from "../util/OverridableComponent";
|
|
5
5
|
|
|
6
6
|
export interface ToggleChipsProps
|
|
7
7
|
extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable react-hooks/rules-of-hooks */
|
|
1
2
|
import React, { useState } from "react";
|
|
2
3
|
import { Chips } from ".";
|
|
3
4
|
|
|
@@ -22,44 +23,46 @@ export default {
|
|
|
22
23
|
|
|
23
24
|
const options = ["Norsk", "Dansk", "Svensk", "Tysk", "Spansk"];
|
|
24
25
|
|
|
25
|
-
export const Default =
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
export const Default = {
|
|
27
|
+
render: (props) => {
|
|
28
|
+
const [selected, setSelected] = useState(["Dansk", "Svensk"]);
|
|
29
|
+
const [filter, setFilter] = useState(options);
|
|
30
|
+
|
|
31
|
+
if (props.type === "toggle") {
|
|
32
|
+
return (
|
|
33
|
+
<Chips size={props.size ?? "medium"}>
|
|
34
|
+
{options.map((c) => (
|
|
35
|
+
<Chips.Toggle
|
|
36
|
+
selected={selected.includes(c)}
|
|
37
|
+
key={c}
|
|
38
|
+
onClick={() =>
|
|
39
|
+
setSelected(
|
|
40
|
+
selected.includes(c)
|
|
41
|
+
? selected.filter((x) => x !== c)
|
|
42
|
+
: [...selected, c]
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
>
|
|
46
|
+
{c}
|
|
47
|
+
</Chips.Toggle>
|
|
48
|
+
))}
|
|
49
|
+
</Chips>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
28
52
|
|
|
29
|
-
if (props.type === "toggle") {
|
|
30
53
|
return (
|
|
31
54
|
<Chips size={props.size ?? "medium"}>
|
|
32
|
-
{
|
|
33
|
-
<Chips.
|
|
34
|
-
selected={selected.includes(c)}
|
|
55
|
+
{filter.map((c) => (
|
|
56
|
+
<Chips.Removable
|
|
35
57
|
key={c}
|
|
36
|
-
onClick={() =>
|
|
37
|
-
setSelected(
|
|
38
|
-
selected.includes(c)
|
|
39
|
-
? selected.filter((x) => x !== c)
|
|
40
|
-
: [...selected, c]
|
|
41
|
-
)
|
|
42
|
-
}
|
|
58
|
+
onClick={() => setFilter((x) => x.filter((y) => y !== c))}
|
|
43
59
|
>
|
|
44
60
|
{c}
|
|
45
|
-
</Chips.
|
|
61
|
+
</Chips.Removable>
|
|
46
62
|
))}
|
|
47
63
|
</Chips>
|
|
48
64
|
);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return (
|
|
52
|
-
<Chips size={props.size ?? "medium"}>
|
|
53
|
-
{filter.map((c) => (
|
|
54
|
-
<Chips.Removable
|
|
55
|
-
key={c}
|
|
56
|
-
onClick={() => setFilter((x) => x.filter((y) => y !== c))}
|
|
57
|
-
>
|
|
58
|
-
{c}
|
|
59
|
-
</Chips.Removable>
|
|
60
|
-
))}
|
|
61
|
-
</Chips>
|
|
62
|
-
);
|
|
65
|
+
},
|
|
63
66
|
};
|
|
64
67
|
|
|
65
68
|
export const Toggle = () => {
|
package/src/chips/index.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Chips, ChipsProps } from "./Chips";
|
|
1
|
+
export { default as Chips, type ChipsProps } from "./Chips";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable react-hooks/rules-of-hooks */
|
|
1
2
|
import React, { useId, useState } from "react";
|
|
2
3
|
import { UNSAFE_useDatepicker, UNSAFE_useRangeDatepicker } from "..";
|
|
3
4
|
import { Button } from "../..";
|
|
@@ -34,93 +35,95 @@ export default {
|
|
|
34
35
|
},
|
|
35
36
|
};
|
|
36
37
|
|
|
37
|
-
export const Default =
|
|
38
|
-
|
|
38
|
+
export const Default = {
|
|
39
|
+
render: (props) => {
|
|
40
|
+
const [open, setOpen] = useState(false);
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
const rangeCtx = UNSAFE_useRangeDatepicker({
|
|
43
|
+
fromDate: new Date("Aug 23 2020"),
|
|
44
|
+
toDate: new Date("Aug 23 2023"),
|
|
45
|
+
});
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
const singleCtx = UNSAFE_useDatepicker({
|
|
48
|
+
fromDate: new Date("Aug 23 2020"),
|
|
49
|
+
toDate: new Date("Aug 23 2023"),
|
|
50
|
+
});
|
|
49
51
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
52
|
+
const newProps = {
|
|
53
|
+
...(!props.inputfield || props.mode === "multiple"
|
|
54
|
+
? {
|
|
55
|
+
open,
|
|
56
|
+
onClose: () => setOpen(false),
|
|
57
|
+
fromDate: new Date("Aug 23 2020"),
|
|
58
|
+
toDate: new Date("Aug 23 2023"),
|
|
59
|
+
}
|
|
60
|
+
: {}),
|
|
61
|
+
};
|
|
60
62
|
|
|
61
|
-
|
|
63
|
+
const Comp = !props.standalone ? DatePicker : DatePicker.Standalone;
|
|
62
64
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
65
|
+
return (
|
|
66
|
+
<div>
|
|
67
|
+
<Comp
|
|
68
|
+
locale={props?.locale}
|
|
69
|
+
dropdownCaption={props?.dropdownCaption}
|
|
70
|
+
disableWeekends={props?.disableWeekends}
|
|
71
|
+
showWeekNumber={props.showWeekNumber}
|
|
72
|
+
mode={props.mode}
|
|
73
|
+
{...(props.mode === "single"
|
|
74
|
+
? singleCtx.datepickerProps
|
|
75
|
+
: props.mode === "range"
|
|
76
|
+
? rangeCtx.datepickerProps
|
|
77
|
+
: {})}
|
|
78
|
+
{...newProps}
|
|
79
|
+
>
|
|
80
|
+
{!props.standalone && (
|
|
81
|
+
<>
|
|
82
|
+
{props.inputfield && props.mode !== "multiple" ? (
|
|
83
|
+
<>
|
|
84
|
+
{props.mode === "range" ? (
|
|
85
|
+
<div style={{ display: "flex", gap: "1rem" }}>
|
|
86
|
+
<DatePicker.Input
|
|
87
|
+
label="Fra"
|
|
88
|
+
size={props?.size}
|
|
89
|
+
{...rangeCtx.fromInputProps}
|
|
90
|
+
/>
|
|
91
|
+
<DatePicker.Input
|
|
92
|
+
label="Til"
|
|
93
|
+
size={props?.size}
|
|
94
|
+
{...rangeCtx.toInputProps}
|
|
95
|
+
/>
|
|
96
|
+
</div>
|
|
97
|
+
) : (
|
|
98
|
+
<>
|
|
99
|
+
<DatePicker.Input
|
|
100
|
+
label="Velg dato"
|
|
101
|
+
size={props?.size}
|
|
102
|
+
{...singleCtx.inputProps}
|
|
103
|
+
/>
|
|
104
|
+
</>
|
|
105
|
+
)}
|
|
106
|
+
</>
|
|
107
|
+
) : (
|
|
108
|
+
<Button onClick={() => setOpen((x) => !x)}>
|
|
109
|
+
Åpne datovelger
|
|
110
|
+
</Button>
|
|
111
|
+
)}
|
|
112
|
+
</>
|
|
113
|
+
)}
|
|
114
|
+
</Comp>
|
|
115
|
+
</div>
|
|
116
|
+
);
|
|
117
|
+
},
|
|
116
118
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
119
|
+
args: {
|
|
120
|
+
dropdownCaption: false,
|
|
121
|
+
disableWeekends: false,
|
|
122
|
+
showWeekNumber: false,
|
|
123
|
+
inputfield: true,
|
|
124
|
+
standalone: false,
|
|
125
|
+
openOnFocus: true,
|
|
126
|
+
},
|
|
124
127
|
};
|
|
125
128
|
|
|
126
129
|
export const DropdownCaption = () => (
|
|
@@ -148,6 +151,7 @@ export const UseDatepicker = () => {
|
|
|
148
151
|
fromDate: new Date("Aug 23 2019"),
|
|
149
152
|
onDateChange: console.log,
|
|
150
153
|
locale: "en",
|
|
154
|
+
openOnFocus: false,
|
|
151
155
|
});
|
|
152
156
|
|
|
153
157
|
return (
|
|
@@ -179,12 +183,29 @@ export const UseRangedDatepicker = () => {
|
|
|
179
183
|
);
|
|
180
184
|
};
|
|
181
185
|
|
|
186
|
+
export const OpenOnFocus = () => {
|
|
187
|
+
const { datepickerProps, inputProps } = UNSAFE_useDatepicker({
|
|
188
|
+
onDateChange: console.log,
|
|
189
|
+
openOnFocus: false,
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
return (
|
|
193
|
+
<div style={{ display: "flex", gap: "1rem" }}>
|
|
194
|
+
<DatePicker {...datepickerProps}>
|
|
195
|
+
<DatePicker.Input {...inputProps} label="Velg dato" />
|
|
196
|
+
</DatePicker>
|
|
197
|
+
</div>
|
|
198
|
+
);
|
|
199
|
+
};
|
|
200
|
+
|
|
182
201
|
export const NB = () => (
|
|
183
202
|
<DatePicker.Standalone locale="nb" today={new Date("2006-07-01")} />
|
|
184
203
|
);
|
|
204
|
+
|
|
185
205
|
export const NN = () => (
|
|
186
206
|
<DatePicker.Standalone locale="nn" today={new Date("2006-07-01")} />
|
|
187
207
|
);
|
|
208
|
+
|
|
188
209
|
export const EN = () => (
|
|
189
210
|
<DatePicker.Standalone locale="en" today={new Date("2006-07-01")} />
|
|
190
211
|
);
|
|
@@ -196,6 +217,7 @@ export const Standalone = () => (
|
|
|
196
217
|
export const StandaloneRange = () => (
|
|
197
218
|
<DatePicker.Standalone mode="range" today={new Date("2006-07-01")} />
|
|
198
219
|
);
|
|
220
|
+
|
|
199
221
|
export const StandaloneMultiple = () => (
|
|
200
222
|
<DatePicker.Standalone mode="multiple" today={new Date("2006-07-01")} />
|
|
201
223
|
);
|
|
@@ -56,6 +56,11 @@ export interface UseDatepickerOptions
|
|
|
56
56
|
* In 2023 this equals to 1943 - 2042
|
|
57
57
|
*/
|
|
58
58
|
allowTwoDigitYear?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Opens datepicker on input-focus
|
|
61
|
+
* @default true
|
|
62
|
+
*/
|
|
63
|
+
openOnFocus?: boolean;
|
|
59
64
|
}
|
|
60
65
|
|
|
61
66
|
interface UseDatepickerValue {
|
|
@@ -123,6 +128,7 @@ export const useDatepicker = (
|
|
|
123
128
|
onValidate,
|
|
124
129
|
defaultMonth,
|
|
125
130
|
allowTwoDigitYear = true,
|
|
131
|
+
openOnFocus = true,
|
|
126
132
|
} = opt;
|
|
127
133
|
|
|
128
134
|
const locale = getLocaleFromString(_locale);
|
|
@@ -198,7 +204,7 @@ export const useDatepicker = (
|
|
|
198
204
|
};
|
|
199
205
|
|
|
200
206
|
const handleFocus: React.FocusEventHandler<HTMLInputElement> = (e) => {
|
|
201
|
-
!open && setOpen(true);
|
|
207
|
+
!open && openOnFocus && setOpen(true);
|
|
202
208
|
let day = parseDate(
|
|
203
209
|
e.target.value,
|
|
204
210
|
today,
|