@navikt/ds-react 6.5.0 → 6.6.0
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/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js +2 -4
- package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
- package/cjs/form/combobox/Input/Input.js +6 -1
- package/cjs/form/combobox/Input/Input.js.map +1 -1
- package/cjs/form/form-summary/FormSummary.d.ts +82 -0
- package/cjs/form/form-summary/FormSummary.js +81 -0
- package/cjs/form/form-summary/FormSummary.js.map +1 -0
- package/cjs/form/form-summary/FormSummaryAnswer.d.ts +11 -0
- package/cjs/form/form-summary/FormSummaryAnswer.js +25 -0
- package/cjs/form/form-summary/FormSummaryAnswer.js.map +1 -0
- package/cjs/form/form-summary/FormSummaryAnswers.d.ts +9 -0
- package/cjs/form/form-summary/FormSummaryAnswers.js +48 -0
- package/cjs/form/form-summary/FormSummaryAnswers.js.map +1 -0
- package/cjs/form/form-summary/FormSummaryEditLink.d.ts +17 -0
- package/cjs/form/form-summary/FormSummaryEditLink.js +49 -0
- package/cjs/form/form-summary/FormSummaryEditLink.js.map +1 -0
- package/cjs/form/form-summary/FormSummaryHeader.d.ts +9 -0
- package/cjs/form/form-summary/FormSummaryHeader.js +48 -0
- package/cjs/form/form-summary/FormSummaryHeader.js.map +1 -0
- package/cjs/form/form-summary/FormSummaryHeading.d.ts +14 -0
- package/cjs/form/form-summary/FormSummaryHeading.js +31 -0
- package/cjs/form/form-summary/FormSummaryHeading.js.map +1 -0
- package/cjs/form/form-summary/FormSummaryLabel.d.ts +6 -0
- package/cjs/form/form-summary/FormSummaryLabel.js +45 -0
- package/cjs/form/form-summary/FormSummaryLabel.js.map +1 -0
- package/cjs/form/form-summary/FormSummaryValue.d.ts +6 -0
- package/cjs/form/form-summary/FormSummaryValue.js +49 -0
- package/cjs/form/form-summary/FormSummaryValue.js.map +1 -0
- package/cjs/form/form-summary/index.d.ts +8 -0
- package/cjs/form/form-summary/index.js +24 -0
- package/cjs/form/form-summary/index.js.map +1 -0
- package/cjs/index.d.ts +3 -2
- package/cjs/index.js +5 -3
- package/cjs/index.js.map +1 -1
- package/cjs/util/hooks/descendants/descendant.js +10 -1
- package/cjs/util/hooks/descendants/descendant.js.map +1 -1
- package/cjs/util/hooks/descendants/useDescendant.js +0 -5
- package/cjs/util/hooks/descendants/useDescendant.js.map +1 -1
- package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js +2 -4
- package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
- package/esm/form/combobox/Input/Input.js +6 -1
- package/esm/form/combobox/Input/Input.js.map +1 -1
- package/esm/form/form-summary/FormSummary.d.ts +82 -0
- package/esm/form/form-summary/FormSummary.js +52 -0
- package/esm/form/form-summary/FormSummary.js.map +1 -0
- package/esm/form/form-summary/FormSummaryAnswer.d.ts +11 -0
- package/esm/form/form-summary/FormSummaryAnswer.js +19 -0
- package/esm/form/form-summary/FormSummaryAnswer.js.map +1 -0
- package/esm/form/form-summary/FormSummaryAnswers.d.ts +9 -0
- package/esm/form/form-summary/FormSummaryAnswers.js +19 -0
- package/esm/form/form-summary/FormSummaryAnswers.js.map +1 -0
- package/esm/form/form-summary/FormSummaryEditLink.d.ts +17 -0
- package/esm/form/form-summary/FormSummaryEditLink.js +20 -0
- package/esm/form/form-summary/FormSummaryEditLink.js.map +1 -0
- package/esm/form/form-summary/FormSummaryHeader.d.ts +9 -0
- package/esm/form/form-summary/FormSummaryHeader.js +19 -0
- package/esm/form/form-summary/FormSummaryHeader.js.map +1 -0
- package/esm/form/form-summary/FormSummaryHeading.d.ts +14 -0
- package/esm/form/form-summary/FormSummaryHeading.js +5 -0
- package/esm/form/form-summary/FormSummaryHeading.js.map +1 -0
- package/esm/form/form-summary/FormSummaryLabel.d.ts +6 -0
- package/esm/form/form-summary/FormSummaryLabel.js +19 -0
- package/esm/form/form-summary/FormSummaryLabel.js.map +1 -0
- package/esm/form/form-summary/FormSummaryValue.d.ts +6 -0
- package/esm/form/form-summary/FormSummaryValue.js +20 -0
- package/esm/form/form-summary/FormSummaryValue.js.map +1 -0
- package/esm/form/form-summary/index.d.ts +8 -0
- package/esm/form/form-summary/index.js +10 -0
- package/esm/form/form-summary/index.js.map +1 -0
- package/esm/index.d.ts +3 -2
- package/esm/index.js +2 -1
- package/esm/index.js.map +1 -1
- package/esm/util/hooks/descendants/descendant.js +10 -1
- package/esm/util/hooks/descendants/descendant.js.map +1 -1
- package/esm/util/hooks/descendants/useDescendant.js +0 -5
- package/esm/util/hooks/descendants/useDescendant.js.map +1 -1
- package/package.json +15 -4
- package/src/form/combobox/FilteredOptions/filteredOptionsContext.tsx +9 -1
- package/src/form/combobox/Input/Input.tsx +5 -0
- package/src/form/form-summary/FormSummary.tsx +106 -0
- package/src/form/form-summary/FormSummaryAnswer.tsx +27 -0
- package/src/form/form-summary/FormSummaryAnswers.tsx +25 -0
- package/src/form/form-summary/FormSummaryEditLink.tsx +35 -0
- package/src/form/form-summary/FormSummaryHeader.tsx +25 -0
- package/src/form/form-summary/FormSummaryHeading.tsx +23 -0
- package/src/form/form-summary/FormSummaryLabel.tsx +17 -0
- package/src/form/form-summary/FormSummaryValue.tsx +24 -0
- package/src/form/form-summary/index.ts +30 -0
- package/src/index.ts +16 -15
- package/src/util/hooks/descendants/descendant.ts +15 -1
- package/src/util/hooks/descendants/useDescendant.tsx +0 -5
- package/src/accordion/accordion.stories.tsx +0 -286
- package/src/alert/alert.stories.tsx +0 -306
- package/src/button/button.stories.tsx +0 -185
- package/src/chat/chat.stories.tsx +0 -341
- package/src/chips/chips.stories.tsx +0 -260
- package/src/copybutton/copy-button.stories.tsx +0 -261
- package/src/date/datepicker/datepicker.stories.tsx +0 -614
- package/src/date/monthpicker/monthpicker.stories.tsx +0 -221
- package/src/dropdown/dropdown.stories.tsx +0 -124
- package/src/expansion-card/expansion-card.stories.tsx +0 -282
- package/src/form/checkbox/checkbox.stories.tsx +0 -281
- package/src/form/combobox/combobox.stories.tsx +0 -626
- package/src/form/confirmation-panel/confirmation-panel.stories.tsx +0 -128
- package/src/form/error-summary/error-summary.stories.tsx +0 -81
- package/src/form/fieldset/fieldset.stories.tsx +0 -157
- package/src/form/file-upload/file-upload-dropzone.stories.tsx +0 -123
- package/src/form/file-upload/file-upload-item.stories.tsx +0 -148
- package/src/form/file-upload/file-upload.stories.tsx +0 -248
- package/src/form/radio/radio.stories.tsx +0 -230
- package/src/form/search/search.stories.tsx +0 -238
- package/src/form/select/select.stories.tsx +0 -172
- package/src/form/switch/switch.stories.tsx +0 -171
- package/src/form/textarea/textarea.stories.tsx +0 -254
- package/src/form/textfield/text-field.stories.tsx +0 -143
- package/src/guide-panel/guidepanel.stories.tsx +0 -90
- package/src/help-text/help-text.stories.tsx +0 -91
- package/src/internal-header/header.stories.tsx +0 -229
- package/src/layout/bleed/Bleed.stories.tsx +0 -395
- package/src/layout/box/Box.stories.tsx +0 -380
- package/src/layout/grid/h-grid.stories.tsx +0 -122
- package/src/layout/page/Page.stories.tsx +0 -271
- package/src/layout/responsive/hide.stories.tsx +0 -80
- package/src/layout/responsive/show.stories.tsx +0 -80
- package/src/layout/sidemal-test/navno-sidemal.stories.tsx +0 -69
- package/src/layout/stack/stack.stories.tsx +0 -183
- package/src/link/stories/link.stories.tsx +0 -304
- package/src/link-panel/link-panel.stories.tsx +0 -59
- package/src/list/list.stories.tsx +0 -280
- package/src/loader/loader.stories.tsx +0 -82
- package/src/modal/modal.stories.tsx +0 -391
- package/src/pagination/pagination.stories.tsx +0 -110
- package/src/popover/popover.stories.tsx +0 -113
- package/src/portal/Portal.stories.tsx +0 -102
- package/src/read-more/readmore.stories.tsx +0 -91
- package/src/skeleton/skeleton.stories.tsx +0 -130
- package/src/stepper/stepper.stories.tsx +0 -200
- package/src/table/stories/table-1.stories.tsx +0 -292
- package/src/table/stories/table-2-expandable.stories.tsx +0 -298
- package/src/table/stories/table-3-async.stories.tsx +0 -179
- package/src/table/stories/tests/table.stories.tsx +0 -102
- package/src/tabs/Tabs.stories.tsx +0 -311
- package/src/tag/tag.stories.tsx +0 -126
- package/src/timeline/timeline.stories.tsx +0 -445
- package/src/toggle-group/ToggleGroup.stories.tsx +0 -198
- package/src/tooltip/tooltip.stories.tsx +0 -101
- package/src/typography/stories/bodylong.stories.tsx +0 -209
- package/src/typography/stories/bodyshort.stories.tsx +0 -208
- package/src/typography/stories/detail.stories.tsx +0 -115
- package/src/typography/stories/error-message.stories.tsx +0 -122
- package/src/typography/stories/heading.stories.tsx +0 -169
- package/src/typography/stories/label.stories.tsx +0 -131
- package/src/util/hooks/descendants/descendant.stories.tsx +0 -147
|
@@ -1,614 +0,0 @@
|
|
|
1
|
-
import { Meta, StoryObj } from "@storybook/react";
|
|
2
|
-
import { expect, userEvent, within } from "@storybook/test";
|
|
3
|
-
import { isSameDay } from "date-fns";
|
|
4
|
-
import React, { useId, useState } from "react";
|
|
5
|
-
import { act } from "react-dom/test-utils";
|
|
6
|
-
import { Button } from "../../button";
|
|
7
|
-
import { HGrid } from "../../layout/grid";
|
|
8
|
-
import { VStack } from "../../layout/stack";
|
|
9
|
-
import Modal from "../../modal/Modal";
|
|
10
|
-
import { BodyLong } from "../../typography";
|
|
11
|
-
import { useDatepicker, useRangeDatepicker } from "../hooks";
|
|
12
|
-
import DatePicker, { DatePickerProps } from "./DatePicker";
|
|
13
|
-
|
|
14
|
-
const disabledDays = [
|
|
15
|
-
new Date("Oct 10 2022"),
|
|
16
|
-
{ from: new Date("Aug 31 2022"), to: new Date("Sep 8 2022") },
|
|
17
|
-
];
|
|
18
|
-
|
|
19
|
-
export default {
|
|
20
|
-
title: "ds-react/Datepicker",
|
|
21
|
-
component: DatePicker,
|
|
22
|
-
parameters: {
|
|
23
|
-
chromatic: { disable: true },
|
|
24
|
-
},
|
|
25
|
-
} satisfies Meta<typeof DatePicker>;
|
|
26
|
-
|
|
27
|
-
type Story = StoryObj<typeof DatePicker>;
|
|
28
|
-
|
|
29
|
-
type DefaultStoryProps = DatePickerProps & {
|
|
30
|
-
size: "medium" | "small";
|
|
31
|
-
inputfield: boolean;
|
|
32
|
-
standalone: boolean;
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export const Default: StoryObj<DefaultStoryProps> = {
|
|
36
|
-
render: (props) => {
|
|
37
|
-
const [open, setOpen] = useState(false);
|
|
38
|
-
|
|
39
|
-
const rangeCtx = useRangeDatepicker({
|
|
40
|
-
fromDate: new Date("Aug 23 2023"),
|
|
41
|
-
toDate: new Date("Aug 23 2029"),
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
const singleCtx = useDatepicker({
|
|
45
|
-
fromDate: new Date("Aug 23 2020"),
|
|
46
|
-
toDate: new Date("Aug 23 2029"),
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
const newProps = {
|
|
50
|
-
...(!props.inputfield || props.mode === "multiple"
|
|
51
|
-
? {
|
|
52
|
-
open,
|
|
53
|
-
onClose: () => setOpen(false),
|
|
54
|
-
fromDate: new Date("Aug 23 2020"),
|
|
55
|
-
toDate: new Date("Aug 23 2029"),
|
|
56
|
-
}
|
|
57
|
-
: {}),
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
const Comp = !props.standalone ? DatePicker : DatePicker.Standalone;
|
|
61
|
-
|
|
62
|
-
return (
|
|
63
|
-
<div>
|
|
64
|
-
<Comp
|
|
65
|
-
dropdownCaption={props.dropdownCaption}
|
|
66
|
-
showWeekNumber={props.showWeekNumber}
|
|
67
|
-
mode={props.mode}
|
|
68
|
-
{...(props.mode === "single"
|
|
69
|
-
? singleCtx.datepickerProps
|
|
70
|
-
: props.mode === "range"
|
|
71
|
-
? rangeCtx.datepickerProps
|
|
72
|
-
: {})}
|
|
73
|
-
{...newProps}
|
|
74
|
-
locale={props.locale}
|
|
75
|
-
disableWeekends={props.disableWeekends}
|
|
76
|
-
>
|
|
77
|
-
{!props.standalone && (
|
|
78
|
-
<>
|
|
79
|
-
{props.inputfield && props.mode !== "multiple" ? (
|
|
80
|
-
<>
|
|
81
|
-
{props.mode === "range" ? (
|
|
82
|
-
<div style={{ display: "flex", gap: "1rem" }}>
|
|
83
|
-
<DatePicker.Input
|
|
84
|
-
label="Fra"
|
|
85
|
-
size={props?.size}
|
|
86
|
-
{...rangeCtx.fromInputProps}
|
|
87
|
-
/>
|
|
88
|
-
<DatePicker.Input
|
|
89
|
-
label="Til"
|
|
90
|
-
size={props?.size}
|
|
91
|
-
{...rangeCtx.toInputProps}
|
|
92
|
-
/>
|
|
93
|
-
</div>
|
|
94
|
-
) : (
|
|
95
|
-
<>
|
|
96
|
-
<DatePicker.Input
|
|
97
|
-
label="Velg dato"
|
|
98
|
-
size={props?.size}
|
|
99
|
-
{...singleCtx.inputProps}
|
|
100
|
-
/>
|
|
101
|
-
</>
|
|
102
|
-
)}
|
|
103
|
-
</>
|
|
104
|
-
) : (
|
|
105
|
-
<Button onClick={() => setOpen((x) => !x)}>
|
|
106
|
-
Åpne datovelger
|
|
107
|
-
</Button>
|
|
108
|
-
)}
|
|
109
|
-
</>
|
|
110
|
-
)}
|
|
111
|
-
</Comp>
|
|
112
|
-
</div>
|
|
113
|
-
);
|
|
114
|
-
},
|
|
115
|
-
|
|
116
|
-
args: {
|
|
117
|
-
dropdownCaption: false,
|
|
118
|
-
disableWeekends: false,
|
|
119
|
-
showWeekNumber: false,
|
|
120
|
-
mode: "single",
|
|
121
|
-
inputfield: true,
|
|
122
|
-
standalone: false,
|
|
123
|
-
},
|
|
124
|
-
argTypes: {
|
|
125
|
-
size: {
|
|
126
|
-
options: ["medium", "small"],
|
|
127
|
-
control: { type: "radio" },
|
|
128
|
-
},
|
|
129
|
-
locale: {
|
|
130
|
-
options: ["nb", "nn", "en"],
|
|
131
|
-
control: { type: "radio" },
|
|
132
|
-
},
|
|
133
|
-
mode: {
|
|
134
|
-
options: ["single", "multiple", "range"],
|
|
135
|
-
control: { type: "radio" },
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
export const DropdownCaption = () => (
|
|
141
|
-
<DatePicker.Standalone
|
|
142
|
-
dropdownCaption
|
|
143
|
-
fromDate={new Date("Aug 23 2018")}
|
|
144
|
-
toDate={new Date("Aug 23 2022")}
|
|
145
|
-
/>
|
|
146
|
-
);
|
|
147
|
-
|
|
148
|
-
export const DisabledDays = () => (
|
|
149
|
-
<DatePicker.Standalone
|
|
150
|
-
disabled={disabledDays}
|
|
151
|
-
disableWeekends
|
|
152
|
-
today={new Date("2006-07-01")}
|
|
153
|
-
/>
|
|
154
|
-
);
|
|
155
|
-
|
|
156
|
-
export const ShowWeekNumber = () => (
|
|
157
|
-
<DatePicker.Standalone showWeekNumber today={new Date("2006-07-01")} />
|
|
158
|
-
);
|
|
159
|
-
|
|
160
|
-
export const UseDatepicker = () => {
|
|
161
|
-
const { datepickerProps, inputProps } = useDatepicker({
|
|
162
|
-
fromDate: new Date("Aug 23 2019"),
|
|
163
|
-
toDate: new Date("Feb 23 2024"),
|
|
164
|
-
onDateChange: console.log,
|
|
165
|
-
onValidate: console.log,
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
return (
|
|
169
|
-
<div style={{ display: "flex", gap: "1rem" }}>
|
|
170
|
-
<DatePicker {...datepickerProps} dropdownCaption>
|
|
171
|
-
<DatePicker.Input {...inputProps} label="Velg dato" />
|
|
172
|
-
</DatePicker>
|
|
173
|
-
</div>
|
|
174
|
-
);
|
|
175
|
-
};
|
|
176
|
-
|
|
177
|
-
export const UseRangedDatepicker = () => {
|
|
178
|
-
const { datepickerProps, fromInputProps, toInputProps } = useRangeDatepicker({
|
|
179
|
-
fromDate: new Date("Aug 23 2019"),
|
|
180
|
-
onRangeChange: console.log,
|
|
181
|
-
onValidate: console.log,
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
return (
|
|
185
|
-
<div style={{ display: "flex", gap: "1rem" }}>
|
|
186
|
-
<DatePicker {...datepickerProps}>
|
|
187
|
-
<div style={{ display: "flex", gap: "1rem" }}>
|
|
188
|
-
<DatePicker.Input {...fromInputProps} label="Fra" />
|
|
189
|
-
<DatePicker.Input {...toInputProps} label="Til" />
|
|
190
|
-
</div>
|
|
191
|
-
</DatePicker>
|
|
192
|
-
</div>
|
|
193
|
-
);
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
export const NB = () => (
|
|
197
|
-
<DatePicker.Standalone locale="nb" today={new Date("2006-07-01")} />
|
|
198
|
-
);
|
|
199
|
-
|
|
200
|
-
export const NN = () => (
|
|
201
|
-
<DatePicker.Standalone locale="nn" today={new Date("2006-07-01")} />
|
|
202
|
-
);
|
|
203
|
-
|
|
204
|
-
export const EN = () => (
|
|
205
|
-
<DatePicker.Standalone locale="en" today={new Date("2006-07-01")} />
|
|
206
|
-
);
|
|
207
|
-
|
|
208
|
-
export const Standalone = () => (
|
|
209
|
-
<DatePicker.Standalone today={new Date("2006-07-01")} />
|
|
210
|
-
);
|
|
211
|
-
|
|
212
|
-
export const StandaloneRange = () => (
|
|
213
|
-
<DatePicker.Standalone mode="range" today={new Date("2006-07-01")} />
|
|
214
|
-
);
|
|
215
|
-
|
|
216
|
-
export const StandaloneMultiple = () => (
|
|
217
|
-
<DatePicker.Standalone mode="multiple" today={new Date("2006-07-01")} />
|
|
218
|
-
);
|
|
219
|
-
|
|
220
|
-
export const UserControlled = () => {
|
|
221
|
-
const [open, setOpen] = useState(false);
|
|
222
|
-
const id = useId();
|
|
223
|
-
|
|
224
|
-
return (
|
|
225
|
-
<div>
|
|
226
|
-
<DatePicker
|
|
227
|
-
mode="multiple"
|
|
228
|
-
open={open}
|
|
229
|
-
onClose={() => setOpen(false)}
|
|
230
|
-
id={id}
|
|
231
|
-
>
|
|
232
|
-
<Button aria-controls={id} onClick={() => setOpen((x) => !x)}>
|
|
233
|
-
Legg til dager
|
|
234
|
-
</Button>
|
|
235
|
-
</DatePicker>
|
|
236
|
-
</div>
|
|
237
|
-
);
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
export const Validering = () => {
|
|
241
|
-
const [error, setError] = useState(false);
|
|
242
|
-
const { datepickerProps, inputProps } = useDatepicker({
|
|
243
|
-
fromDate: new Date("Aug 2 2019"),
|
|
244
|
-
onValidate: (val) => setError(val.isWeekend),
|
|
245
|
-
defaultSelected: new Date("Nov 26 2022"),
|
|
246
|
-
disableWeekends: true,
|
|
247
|
-
onDateChange: console.log,
|
|
248
|
-
});
|
|
249
|
-
|
|
250
|
-
return (
|
|
251
|
-
<div style={{ display: "flex", gap: "1rem" }}>
|
|
252
|
-
<DatePicker {...datepickerProps}>
|
|
253
|
-
<DatePicker.Input
|
|
254
|
-
error={
|
|
255
|
-
error
|
|
256
|
-
? "NAV-kontoret er ikke åpent i helger. Velg en annen dag."
|
|
257
|
-
: undefined
|
|
258
|
-
}
|
|
259
|
-
{...inputProps}
|
|
260
|
-
label="Velg dato"
|
|
261
|
-
/>
|
|
262
|
-
</DatePicker>
|
|
263
|
-
</div>
|
|
264
|
-
);
|
|
265
|
-
};
|
|
266
|
-
|
|
267
|
-
export const DisabledInput = () => {
|
|
268
|
-
return (
|
|
269
|
-
<div style={{ display: "flex", gap: "1rem" }}>
|
|
270
|
-
<DatePicker>
|
|
271
|
-
<DatePicker.Input disabled label="Velg dato" />
|
|
272
|
-
</DatePicker>
|
|
273
|
-
</div>
|
|
274
|
-
);
|
|
275
|
-
};
|
|
276
|
-
|
|
277
|
-
export const ErrorInput = () => {
|
|
278
|
-
return (
|
|
279
|
-
<div style={{ display: "flex", gap: "1rem" }}>
|
|
280
|
-
<DatePicker>
|
|
281
|
-
<DatePicker.Input error="feilmelding" label="Velg dato" />
|
|
282
|
-
</DatePicker>
|
|
283
|
-
</div>
|
|
284
|
-
);
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
export const UseRangedDatepickerValidation = () => {
|
|
288
|
-
const { datepickerProps, fromInputProps, toInputProps } = useRangeDatepicker({
|
|
289
|
-
fromDate: new Date("Aug 23 2019"),
|
|
290
|
-
disableWeekends: true,
|
|
291
|
-
disabled: [new Date("Oct 10 2022")],
|
|
292
|
-
onValidate: console.table,
|
|
293
|
-
});
|
|
294
|
-
|
|
295
|
-
return (
|
|
296
|
-
<div style={{ display: "flex", gap: "1rem" }}>
|
|
297
|
-
<DatePicker {...datepickerProps}>
|
|
298
|
-
<div style={{ display: "flex", gap: "1rem" }}>
|
|
299
|
-
<DatePicker.Input {...fromInputProps} label="Fra" />
|
|
300
|
-
<DatePicker.Input {...toInputProps} label="Til" />
|
|
301
|
-
</div>
|
|
302
|
-
</DatePicker>
|
|
303
|
-
</div>
|
|
304
|
-
);
|
|
305
|
-
};
|
|
306
|
-
|
|
307
|
-
export const DefaultShownMonth = () => {
|
|
308
|
-
const { datepickerProps, inputProps } = useDatepicker({
|
|
309
|
-
fromDate: new Date("Aug 23 2019"),
|
|
310
|
-
onDateChange: console.log,
|
|
311
|
-
defaultMonth: new Date("Oct 23 2022"),
|
|
312
|
-
});
|
|
313
|
-
|
|
314
|
-
return (
|
|
315
|
-
<div style={{ display: "flex", gap: "1rem" }}>
|
|
316
|
-
<DatePicker {...datepickerProps}>
|
|
317
|
-
<DatePicker.Input {...inputProps} label="Velg dato" />
|
|
318
|
-
</DatePicker>
|
|
319
|
-
</div>
|
|
320
|
-
);
|
|
321
|
-
};
|
|
322
|
-
|
|
323
|
-
export const Size = () => {
|
|
324
|
-
const { datepickerProps, inputProps } = useDatepicker({
|
|
325
|
-
fromDate: new Date("Aug 23 2019"),
|
|
326
|
-
toDate: new Date("Feb 23 2024"),
|
|
327
|
-
onDateChange: console.log,
|
|
328
|
-
defaultSelected: new Date("Feb 23 2023"),
|
|
329
|
-
});
|
|
330
|
-
const { datepickerProps: d2, inputProps: i2 } = useDatepicker({
|
|
331
|
-
fromDate: new Date("Aug 23 2019"),
|
|
332
|
-
toDate: new Date("Feb 23 2024"),
|
|
333
|
-
onDateChange: console.log,
|
|
334
|
-
defaultSelected: new Date("Feb 23 2023"),
|
|
335
|
-
});
|
|
336
|
-
|
|
337
|
-
return (
|
|
338
|
-
<div style={{ display: "flex", gap: "1rem" }}>
|
|
339
|
-
<DatePicker {...datepickerProps} dropdownCaption>
|
|
340
|
-
<DatePicker.Input
|
|
341
|
-
placeholder="10/10/2023"
|
|
342
|
-
size="medium"
|
|
343
|
-
{...inputProps}
|
|
344
|
-
label="Velg dato"
|
|
345
|
-
/>
|
|
346
|
-
</DatePicker>
|
|
347
|
-
<DatePicker {...d2} dropdownCaption>
|
|
348
|
-
<DatePicker.Input
|
|
349
|
-
placeholder="10/10/2023"
|
|
350
|
-
size="small"
|
|
351
|
-
{...i2}
|
|
352
|
-
label="Velg dato"
|
|
353
|
-
/>
|
|
354
|
-
</DatePicker>
|
|
355
|
-
</div>
|
|
356
|
-
);
|
|
357
|
-
};
|
|
358
|
-
|
|
359
|
-
export const Readonly = () => {
|
|
360
|
-
const { datepickerProps, inputProps } = useDatepicker({
|
|
361
|
-
fromDate: new Date("Aug 23 2019"),
|
|
362
|
-
toDate: new Date("Feb 23 2024"),
|
|
363
|
-
onDateChange: console.log,
|
|
364
|
-
});
|
|
365
|
-
|
|
366
|
-
return (
|
|
367
|
-
<div style={{ display: "flex", gap: "1rem" }}>
|
|
368
|
-
<DatePicker {...datepickerProps} dropdownCaption>
|
|
369
|
-
<DatePicker.Input
|
|
370
|
-
size="medium"
|
|
371
|
-
{...inputProps}
|
|
372
|
-
value="01.02.2021"
|
|
373
|
-
label="Velg dato"
|
|
374
|
-
readOnly
|
|
375
|
-
/>
|
|
376
|
-
</DatePicker>
|
|
377
|
-
</div>
|
|
378
|
-
);
|
|
379
|
-
};
|
|
380
|
-
|
|
381
|
-
export const StandaloneOptions = () => {
|
|
382
|
-
return (
|
|
383
|
-
<HGrid columns={{ xs: 1, md: 2 }} gap="8">
|
|
384
|
-
<DatePicker.Standalone today={new Date("Nov 23 2022")} />
|
|
385
|
-
<DatePicker.Standalone
|
|
386
|
-
dropdownCaption
|
|
387
|
-
fromDate={new Date("Aug 23 2019")}
|
|
388
|
-
toDate={new Date("Feb 23 2024")}
|
|
389
|
-
today={new Date("Nov 23 2022")}
|
|
390
|
-
/>
|
|
391
|
-
<DatePicker.Standalone showWeekNumber today={new Date("Nov 23 2022")} />
|
|
392
|
-
<DatePicker.Standalone
|
|
393
|
-
showWeekNumber
|
|
394
|
-
mode="multiple"
|
|
395
|
-
onWeekNumberClick={console.log}
|
|
396
|
-
today={new Date("Nov 23 2022")}
|
|
397
|
-
disableWeekends
|
|
398
|
-
/>
|
|
399
|
-
<DatePicker.Standalone
|
|
400
|
-
mode="range"
|
|
401
|
-
today={new Date("Nov 23 2022")}
|
|
402
|
-
disableWeekends
|
|
403
|
-
/>
|
|
404
|
-
</HGrid>
|
|
405
|
-
);
|
|
406
|
-
};
|
|
407
|
-
|
|
408
|
-
export const WeekDayClick = () => {
|
|
409
|
-
const [days, setDays] = useState<Date[]>([]);
|
|
410
|
-
|
|
411
|
-
const handleWeekClick = (dates: Date[]) => {
|
|
412
|
-
const hasDayInWeek = !!days.find((x) => dates.find((y) => isSameDay(x, y)));
|
|
413
|
-
|
|
414
|
-
const cleanup = days.filter((y) => !dates.find((z) => isSameDay(y, z)));
|
|
415
|
-
if (hasDayInWeek) {
|
|
416
|
-
setDays(cleanup);
|
|
417
|
-
} else {
|
|
418
|
-
setDays([...dates, ...cleanup]);
|
|
419
|
-
}
|
|
420
|
-
};
|
|
421
|
-
|
|
422
|
-
return (
|
|
423
|
-
<VStack gap="8">
|
|
424
|
-
<DatePicker.Standalone
|
|
425
|
-
showWeekNumber
|
|
426
|
-
mode="multiple"
|
|
427
|
-
onWeekNumberClick={(_, dates) => handleWeekClick(dates)}
|
|
428
|
-
onSelect={(dates) => dates && setDays(dates)}
|
|
429
|
-
selected={days}
|
|
430
|
-
today={new Date("Nov 23 2022")}
|
|
431
|
-
/>
|
|
432
|
-
<DatePicker.Standalone
|
|
433
|
-
showWeekNumber
|
|
434
|
-
mode="multiple"
|
|
435
|
-
onWeekNumberClick={(_, dates) => handleWeekClick(dates)}
|
|
436
|
-
onSelect={(dates) => dates && setDays(dates)}
|
|
437
|
-
selected={days}
|
|
438
|
-
today={new Date("Nov 23 2022")}
|
|
439
|
-
disableWeekends
|
|
440
|
-
/>
|
|
441
|
-
</VStack>
|
|
442
|
-
);
|
|
443
|
-
};
|
|
444
|
-
|
|
445
|
-
export const Required = {
|
|
446
|
-
render: () => {
|
|
447
|
-
const { datepickerProps } = useDatepicker({
|
|
448
|
-
defaultSelected: new Date("Apr 10 2024"),
|
|
449
|
-
required: true,
|
|
450
|
-
});
|
|
451
|
-
|
|
452
|
-
return (
|
|
453
|
-
<div style={{ height: "20rem" }}>
|
|
454
|
-
<DatePicker.Standalone {...datepickerProps} />
|
|
455
|
-
</div>
|
|
456
|
-
);
|
|
457
|
-
},
|
|
458
|
-
play: async ({ canvasElement }) => {
|
|
459
|
-
const canvas = within(canvasElement);
|
|
460
|
-
|
|
461
|
-
const button10 = canvas.getByRole("button", { pressed: true });
|
|
462
|
-
|
|
463
|
-
await act(async () => {
|
|
464
|
-
await userEvent.click(button10);
|
|
465
|
-
});
|
|
466
|
-
|
|
467
|
-
expect(button10.ariaPressed).toBe("true");
|
|
468
|
-
|
|
469
|
-
const button17 = canvas.getByText("17").closest("button");
|
|
470
|
-
|
|
471
|
-
expect(button17?.ariaPressed).toBe("false");
|
|
472
|
-
|
|
473
|
-
await act(async () => {
|
|
474
|
-
button17 && (await userEvent.click(button17));
|
|
475
|
-
});
|
|
476
|
-
|
|
477
|
-
expect(button17?.ariaPressed).toBe("true");
|
|
478
|
-
expect(button10.ariaPressed).toBe("false");
|
|
479
|
-
},
|
|
480
|
-
};
|
|
481
|
-
|
|
482
|
-
export const ModalDemo = () => {
|
|
483
|
-
const { datepickerProps, inputProps } = useDatepicker({
|
|
484
|
-
fromDate: new Date("Aug 23 2019"),
|
|
485
|
-
toDate: new Date("Feb 23 2024"),
|
|
486
|
-
onDateChange: console.log,
|
|
487
|
-
});
|
|
488
|
-
const [open, setOpen] = useState(true);
|
|
489
|
-
|
|
490
|
-
return (
|
|
491
|
-
<>
|
|
492
|
-
<Button onClick={() => setOpen(!open)}>Open modal</Button>
|
|
493
|
-
<Modal
|
|
494
|
-
open={open}
|
|
495
|
-
onClose={() => setOpen(false)}
|
|
496
|
-
header={{ heading: "Modal-demo" }}
|
|
497
|
-
>
|
|
498
|
-
<Modal.Body style={{ position: "relative" }}>
|
|
499
|
-
<BodyLong spacing>
|
|
500
|
-
Lorem ipsum dolor sit, amet consectetur adipisicing elit.
|
|
501
|
-
</BodyLong>
|
|
502
|
-
|
|
503
|
-
<DatePicker {...datepickerProps} dropdownCaption>
|
|
504
|
-
<DatePicker.Input
|
|
505
|
-
{...inputProps}
|
|
506
|
-
label="Velg dato"
|
|
507
|
-
description="Format: dd.mm.yyyy"
|
|
508
|
-
/>
|
|
509
|
-
</DatePicker>
|
|
510
|
-
</Modal.Body>
|
|
511
|
-
<Modal.Footer>
|
|
512
|
-
<Button>Neste</Button>
|
|
513
|
-
<Button variant="secondary">Tilbake</Button>
|
|
514
|
-
<Button variant="tertiary">Avbryt</Button>
|
|
515
|
-
</Modal.Footer>
|
|
516
|
-
</Modal>
|
|
517
|
-
</>
|
|
518
|
-
);
|
|
519
|
-
};
|
|
520
|
-
ModalDemo.parameters = { chromatic: { pauseAnimationAtEnd: true } };
|
|
521
|
-
|
|
522
|
-
export const Chromatic: Story = {
|
|
523
|
-
render: () => (
|
|
524
|
-
<div>
|
|
525
|
-
<div>
|
|
526
|
-
<h2>DropdownCaption</h2>
|
|
527
|
-
<DropdownCaption />
|
|
528
|
-
</div>
|
|
529
|
-
<div>
|
|
530
|
-
<h2>DisabledDays</h2>
|
|
531
|
-
<DisabledDays />
|
|
532
|
-
</div>
|
|
533
|
-
<div>
|
|
534
|
-
<h2>ShowWeekNumber</h2>
|
|
535
|
-
<ShowWeekNumber />
|
|
536
|
-
</div>
|
|
537
|
-
<div>
|
|
538
|
-
<h2>UseDatepicker</h2>
|
|
539
|
-
<UseDatepicker />
|
|
540
|
-
</div>
|
|
541
|
-
<div>
|
|
542
|
-
<h2>UseRangedDatepicker</h2>
|
|
543
|
-
<UseRangedDatepicker />
|
|
544
|
-
</div>
|
|
545
|
-
<div>
|
|
546
|
-
<h2>NB</h2>
|
|
547
|
-
<NB />
|
|
548
|
-
</div>
|
|
549
|
-
<div>
|
|
550
|
-
<h2>NN</h2>
|
|
551
|
-
<NN />
|
|
552
|
-
</div>
|
|
553
|
-
<div>
|
|
554
|
-
<h2>EN</h2>
|
|
555
|
-
<EN />
|
|
556
|
-
</div>
|
|
557
|
-
<div>
|
|
558
|
-
<h2>Standalone</h2>
|
|
559
|
-
<Standalone />
|
|
560
|
-
</div>
|
|
561
|
-
<div>
|
|
562
|
-
<h2>StandaloneRange</h2>
|
|
563
|
-
<StandaloneRange />
|
|
564
|
-
</div>
|
|
565
|
-
<div>
|
|
566
|
-
<h2>StandaloneMultiple</h2>
|
|
567
|
-
<StandaloneMultiple />
|
|
568
|
-
</div>
|
|
569
|
-
<div>
|
|
570
|
-
<h2>UserControlled</h2>
|
|
571
|
-
<UserControlled />
|
|
572
|
-
</div>
|
|
573
|
-
<div>
|
|
574
|
-
<h2>Validering</h2>
|
|
575
|
-
<Validering />
|
|
576
|
-
</div>
|
|
577
|
-
<div>
|
|
578
|
-
<h2>DisabledInput</h2>
|
|
579
|
-
<DisabledInput />
|
|
580
|
-
</div>
|
|
581
|
-
<div>
|
|
582
|
-
<h2>ErrorInput</h2>
|
|
583
|
-
<ErrorInput />
|
|
584
|
-
</div>
|
|
585
|
-
<div>
|
|
586
|
-
<h2>UseRangedDatepickerValidation</h2>
|
|
587
|
-
<UseRangedDatepickerValidation />
|
|
588
|
-
</div>
|
|
589
|
-
<div>
|
|
590
|
-
<h2>DefaultShownMonth</h2>
|
|
591
|
-
<DefaultShownMonth />
|
|
592
|
-
</div>
|
|
593
|
-
<div>
|
|
594
|
-
<h2>Size</h2>
|
|
595
|
-
<Size />
|
|
596
|
-
</div>
|
|
597
|
-
<div>
|
|
598
|
-
<h2>Readonly</h2>
|
|
599
|
-
<Readonly />
|
|
600
|
-
</div>
|
|
601
|
-
<div>
|
|
602
|
-
<h2>StandaloneOptions</h2>
|
|
603
|
-
<StandaloneOptions />
|
|
604
|
-
</div>
|
|
605
|
-
<div>
|
|
606
|
-
<h2>WeekDayClick</h2>
|
|
607
|
-
<WeekDayClick />
|
|
608
|
-
</div>
|
|
609
|
-
</div>
|
|
610
|
-
),
|
|
611
|
-
parameters: {
|
|
612
|
-
chromatic: { disable: false },
|
|
613
|
-
},
|
|
614
|
-
};
|