@navikt/ds-react 5.8.0 → 5.9.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/_docs.json +1794 -1749
- package/cjs/date/context/useDateInputContext.js +1 -5
- package/cjs/date/datepicker/DatePicker.js +26 -25
- package/cjs/date/hooks/useDatepicker.js +9 -17
- package/cjs/date/hooks/useMonthPicker.js +9 -17
- package/cjs/date/hooks/useRangeDatepicker.js +9 -20
- package/cjs/date/monthpicker/MonthPicker.js +11 -6
- package/cjs/date/{DateInput.js → parts/DateInput.js} +14 -10
- package/cjs/date/parts/DateWrapper.js +55 -0
- package/cjs/date/utils/labels.js +77 -1
- package/cjs/form/combobox/Combobox.js +2 -2
- package/cjs/form/combobox/ComboboxProvider.js +1 -2
- package/cjs/form/combobox/FilteredOptions/FilteredOptions.js +15 -14
- package/cjs/form/combobox/FilteredOptions/filtered-options-util.js +24 -0
- package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js +23 -106
- package/cjs/form/combobox/FilteredOptions/useVirtualFocus.js +55 -0
- package/cjs/form/combobox/Input/Input.js +22 -13
- package/cjs/form/combobox/customOptionsContext.js +2 -3
- package/cjs/modal/Modal.js +4 -1
- package/cjs/popover/Popover.js +5 -7
- package/cjs/util/useMedia.js +30 -0
- package/esm/date/context/useDateInputContext.d.ts +6 -2
- package/esm/date/context/useDateInputContext.js +1 -5
- package/esm/date/context/useDateInputContext.js.map +1 -1
- package/esm/date/datepicker/DatePicker.d.ts +1 -1
- package/esm/date/datepicker/DatePicker.js +28 -27
- package/esm/date/datepicker/DatePicker.js.map +1 -1
- package/esm/date/datepicker/types.d.ts +0 -5
- package/esm/date/hooks/useDatepicker.d.ts +8 -5
- package/esm/date/hooks/useDatepicker.js +10 -18
- package/esm/date/hooks/useDatepicker.js.map +1 -1
- package/esm/date/hooks/useMonthPicker.d.ts +7 -4
- package/esm/date/hooks/useMonthPicker.js +10 -18
- package/esm/date/hooks/useMonthPicker.js.map +1 -1
- package/esm/date/hooks/useRangeDatepicker.d.ts +9 -3
- package/esm/date/hooks/useRangeDatepicker.js +10 -21
- package/esm/date/hooks/useRangeDatepicker.js.map +1 -1
- package/esm/date/index.d.ts +1 -1
- package/esm/date/index.js.map +1 -1
- package/esm/date/monthpicker/MonthPicker.d.ts +1 -1
- package/esm/date/monthpicker/MonthPicker.js +13 -8
- package/esm/date/monthpicker/MonthPicker.js.map +1 -1
- package/esm/date/monthpicker/types.d.ts +0 -5
- package/esm/date/{DateInput.d.ts → parts/DateInput.d.ts} +5 -1
- package/esm/date/{DateInput.js → parts/DateInput.js} +15 -11
- package/esm/date/parts/DateInput.js.map +1 -0
- package/esm/date/parts/DateWrapper.d.ts +15 -0
- package/esm/date/parts/DateWrapper.js +26 -0
- package/esm/date/parts/DateWrapper.js.map +1 -0
- package/esm/date/utils/labels.d.ts +2 -0
- package/esm/date/utils/labels.js +74 -0
- package/esm/date/utils/labels.js.map +1 -1
- package/esm/form/combobox/Combobox.js +2 -2
- package/esm/form/combobox/Combobox.js.map +1 -1
- package/esm/form/combobox/ComboboxProvider.js +1 -2
- package/esm/form/combobox/ComboboxProvider.js.map +1 -1
- package/esm/form/combobox/FilteredOptions/FilteredOptions.js +15 -14
- package/esm/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
- package/esm/form/combobox/FilteredOptions/filtered-options-util.d.ts +12 -0
- package/esm/form/combobox/FilteredOptions/filtered-options-util.js +23 -0
- package/esm/form/combobox/FilteredOptions/filtered-options-util.js.map +1 -0
- package/esm/form/combobox/FilteredOptions/filteredOptionsContext.d.ts +10 -13
- package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js +24 -107
- package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
- package/esm/form/combobox/FilteredOptions/useVirtualFocus.d.ts +15 -0
- package/esm/form/combobox/FilteredOptions/useVirtualFocus.js +54 -0
- package/esm/form/combobox/FilteredOptions/useVirtualFocus.js.map +1 -0
- package/esm/form/combobox/Input/Input.js +22 -13
- package/esm/form/combobox/Input/Input.js.map +1 -1
- package/esm/form/combobox/customOptionsContext.d.ts +4 -1
- package/esm/form/combobox/customOptionsContext.js +2 -3
- package/esm/form/combobox/customOptionsContext.js.map +1 -1
- package/esm/modal/Modal.js +4 -1
- package/esm/modal/Modal.js.map +1 -1
- package/esm/popover/Popover.d.ts +0 -5
- package/esm/popover/Popover.js +5 -7
- package/esm/popover/Popover.js.map +1 -1
- package/esm/util/useMedia.d.ts +8 -0
- package/esm/util/useMedia.js +27 -0
- package/esm/util/useMedia.js.map +1 -0
- package/package.json +3 -3
- package/src/date/context/useDateInputContext.tsx +5 -5
- package/src/date/datepicker/DatePicker.tsx +58 -65
- package/src/date/datepicker/datepicker.stories.tsx +37 -46
- package/src/date/datepicker/types.ts +0 -5
- package/src/date/hooks/useDatepicker.tsx +20 -25
- package/src/date/hooks/useMonthPicker.tsx +18 -24
- package/src/date/hooks/useRangeDatepicker.tsx +27 -30
- package/src/date/index.ts +1 -1
- package/src/date/monthpicker/MonthPicker.tsx +39 -43
- package/src/date/monthpicker/types.ts +0 -5
- package/src/date/{DateInput.tsx → parts/DateInput.tsx} +23 -12
- package/src/date/parts/DateWrapper.tsx +80 -0
- package/src/date/utils/labels.ts +83 -0
- package/src/form/combobox/Combobox.tsx +2 -2
- package/src/form/combobox/ComboboxProvider.tsx +1 -2
- package/src/form/combobox/FilteredOptions/FilteredOptions.tsx +28 -16
- package/src/form/combobox/FilteredOptions/filtered-options-util.ts +38 -0
- package/src/form/combobox/FilteredOptions/filteredOptionsContext.tsx +70 -140
- package/src/form/combobox/FilteredOptions/useVirtualFocus.ts +87 -0
- package/src/form/combobox/Input/Input.tsx +22 -18
- package/src/form/combobox/customOptionsContext.tsx +10 -5
- package/src/guide-panel/guidepanel.stories.tsx +2 -2
- package/src/modal/Modal.tsx +4 -1
- package/src/popover/Popover.tsx +4 -12
- package/src/util/__tests__/useMedia.test.tsx +19 -0
- package/src/util/useMedia.ts +38 -0
- package/cjs/date/hooks/useEscape.js +0 -23
- package/cjs/date/hooks/useOutsideClickHandler.js +0 -26
- package/esm/date/DateInput.js.map +0 -1
- package/esm/date/hooks/useEscape.d.ts +0 -2
- package/esm/date/hooks/useEscape.js +0 -20
- package/esm/date/hooks/useEscape.js.map +0 -1
- package/esm/date/hooks/useOutsideClickHandler.d.ts +0 -1
- package/esm/date/hooks/useOutsideClickHandler.js +0 -23
- package/esm/date/hooks/useOutsideClickHandler.js.map +0 -1
- package/src/date/hooks/useEscape.tsx +0 -30
- package/src/date/hooks/useOutsideClickHandler.tsx +0 -34
|
@@ -2,11 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useDateInputContext = exports.DateContext = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
|
-
exports.DateContext = (0, react_1.createContext)(
|
|
6
|
-
open: false,
|
|
7
|
-
onOpen: () => null,
|
|
8
|
-
ariaId: undefined,
|
|
9
|
-
});
|
|
5
|
+
exports.DateContext = (0, react_1.createContext)(null);
|
|
10
6
|
const useDateInputContext = () => {
|
|
11
7
|
const context = (0, react_1.useContext)(exports.DateContext);
|
|
12
8
|
if (!context) {
|
|
@@ -42,10 +42,10 @@ const clsx_1 = __importDefault(require("clsx"));
|
|
|
42
42
|
const isWeekend_1 = __importDefault(require("date-fns/isWeekend"));
|
|
43
43
|
const react_1 = __importStar(require("react"));
|
|
44
44
|
const react_day_picker_1 = require("react-day-picker");
|
|
45
|
-
const popover_1 = require("../../popover");
|
|
46
45
|
const util_1 = require("../../util");
|
|
47
|
-
const DateInput_1 = require("../DateInput");
|
|
48
46
|
const context_1 = require("../context");
|
|
47
|
+
const DateInput_1 = require("../parts/DateInput");
|
|
48
|
+
const DateWrapper_1 = require("../parts/DateWrapper");
|
|
49
49
|
const utils_1 = require("../utils");
|
|
50
50
|
const DatePickerStandalone_1 = __importDefault(require("./DatePickerStandalone"));
|
|
51
51
|
const Caption_1 = __importDefault(require("./parts/Caption"));
|
|
@@ -79,10 +79,11 @@ const WeekNumber_1 = __importDefault(require("./parts/WeekNumber"));
|
|
|
79
79
|
*/
|
|
80
80
|
exports.DatePicker = (0, react_1.forwardRef)((_a, ref) => {
|
|
81
81
|
var _b;
|
|
82
|
-
var { children, locale = "nb", dropdownCaption, disabled = [], disableWeekends = false, showWeekNumber = false, selected, id, defaultSelected, className, wrapperClassName, open: _open, onClose, onOpenToggle, strategy,
|
|
82
|
+
var { children, locale = "nb", dropdownCaption, disabled = [], disableWeekends = false, showWeekNumber = false, selected, id, defaultSelected, className, wrapperClassName, open: _open, onClose, onOpenToggle, strategy, onWeekNumberClick } = _a, rest = __rest(_a, ["children", "locale", "dropdownCaption", "disabled", "disableWeekends", "showWeekNumber", "selected", "id", "defaultSelected", "className", "wrapperClassName", "open", "onClose", "onOpenToggle", "strategy", "onWeekNumberClick"]);
|
|
83
83
|
const ariaId = (0, util_1.useId)(id);
|
|
84
84
|
const [open, setOpen] = (0, react_1.useState)(_open !== null && _open !== void 0 ? _open : false);
|
|
85
85
|
const wrapperRef = (0, react_1.useRef)(null);
|
|
86
|
+
const mergedRef = (0, react_1.useMemo)(() => (0, util_1.mergeRefs)([wrapperRef, ref]), [ref]);
|
|
86
87
|
const [selectedDates, setSelectedDates] = react_1.default.useState(defaultSelected);
|
|
87
88
|
const mode = (_b = rest.mode) !== null && _b !== void 0 ? _b : "single";
|
|
88
89
|
/**
|
|
@@ -99,6 +100,22 @@ exports.DatePicker = (0, react_1.forwardRef)((_a, ref) => {
|
|
|
99
100
|
}
|
|
100
101
|
(_c = rest === null || rest === void 0 ? void 0 : rest.onSelect) === null || _c === void 0 ? void 0 : _c.call(rest, newSelected);
|
|
101
102
|
};
|
|
103
|
+
const DatePickerComponent = (react_1.default.createElement(react_day_picker_1.DayPicker, Object.assign({ locale: (0, utils_1.getLocaleFromString)(locale), mode: mode, onSelect: handleSelect, selected: selected !== null && selected !== void 0 ? selected : selectedDates, components: {
|
|
104
|
+
Caption: dropdownCaption ? DropdownCaption_1.default : Caption_1.default,
|
|
105
|
+
Head: TableHead_1.default,
|
|
106
|
+
HeadRow: HeadRow_1.HeadRow,
|
|
107
|
+
WeekNumber: WeekNumber_1.default,
|
|
108
|
+
Row: Row_1.default,
|
|
109
|
+
Day: DayButton_1.default,
|
|
110
|
+
}, className: (0, clsx_1.default)("navds-date", className), classNames: {
|
|
111
|
+
vhidden: "navds-sr-only",
|
|
112
|
+
}, disabled: (day) => {
|
|
113
|
+
return (disableWeekends && (0, isWeekend_1.default)(day)) || (0, react_day_picker_1.isMatch)(day, disabled);
|
|
114
|
+
}, weekStartsOn: 1, initialFocus: false, labels: utils_1.labels, modifiers: {
|
|
115
|
+
weekend: (day) => disableWeekends && (0, isWeekend_1.default)(day),
|
|
116
|
+
}, modifiersClassNames: {
|
|
117
|
+
weekend: "rdp-day__weekend",
|
|
118
|
+
}, showWeekNumber: showWeekNumber, onWeekNumberClick: mode === "multiple" ? onWeekNumberClick : undefined, fixedWeeks: true, showOutsideDays: true }, (0, util_1.omit)(rest, ["onSelect"]))));
|
|
102
119
|
return (react_1.default.createElement(context_1.DateContext.Provider, { value: {
|
|
103
120
|
open: _open !== null && _open !== void 0 ? _open : open,
|
|
104
121
|
onOpen: () => {
|
|
@@ -106,30 +123,14 @@ exports.DatePicker = (0, react_1.forwardRef)((_a, ref) => {
|
|
|
106
123
|
onOpenToggle === null || onOpenToggle === void 0 ? void 0 : onOpenToggle();
|
|
107
124
|
},
|
|
108
125
|
ariaId,
|
|
126
|
+
defined: true,
|
|
109
127
|
} },
|
|
110
|
-
react_1.default.createElement("div", { ref:
|
|
128
|
+
react_1.default.createElement("div", { ref: mergedRef, className: (0, clsx_1.default)("navds-date__wrapper", wrapperClassName) },
|
|
111
129
|
children,
|
|
112
|
-
(_open !== null && _open !== void 0 ? _open : open
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
react_1.default.createElement(react_day_picker_1.DayPicker, Object.assign({ locale: (0, utils_1.getLocaleFromString)(locale), mode: mode, onSelect: handleSelect, selected: selected !== null && selected !== void 0 ? selected : selectedDates, components: {
|
|
117
|
-
Caption: dropdownCaption ? DropdownCaption_1.default : Caption_1.default,
|
|
118
|
-
Head: TableHead_1.default,
|
|
119
|
-
HeadRow: HeadRow_1.HeadRow,
|
|
120
|
-
WeekNumber: WeekNumber_1.default,
|
|
121
|
-
Row: Row_1.default,
|
|
122
|
-
Day: DayButton_1.default,
|
|
123
|
-
}, className: (0, clsx_1.default)("navds-date", className), classNames: {
|
|
124
|
-
vhidden: "navds-sr-only",
|
|
125
|
-
}, disabled: (day) => {
|
|
126
|
-
return ((disableWeekends && (0, isWeekend_1.default)(day)) ||
|
|
127
|
-
(0, react_day_picker_1.isMatch)(day, disabled));
|
|
128
|
-
}, weekStartsOn: 1, initialFocus: false, labels: utils_1.labels, modifiers: {
|
|
129
|
-
weekend: (day) => disableWeekends && (0, isWeekend_1.default)(day),
|
|
130
|
-
}, modifiersClassNames: {
|
|
131
|
-
weekend: "rdp-day__weekend",
|
|
132
|
-
}, showWeekNumber: showWeekNumber, onWeekNumberClick: mode === "multiple" ? onWeekNumberClick : undefined, fixedWeeks: true, showOutsideDays: true }, (0, util_1.omit)(rest, ["onSelect"]))))))));
|
|
130
|
+
react_1.default.createElement(DateWrapper_1.DateWrapper, { open: _open !== null && _open !== void 0 ? _open : open, anchor: wrapperRef.current, onClose: () => { var _a; return (_a = onClose === null || onClose === void 0 ? void 0 : onClose()) !== null && _a !== void 0 ? _a : setOpen(false); }, locale: locale, variant: mode, popoverProps: {
|
|
131
|
+
id: ariaId,
|
|
132
|
+
strategy,
|
|
133
|
+
} }, DatePickerComponent))));
|
|
133
134
|
});
|
|
134
135
|
exports.DatePicker.Standalone = DatePickerStandalone_1.default;
|
|
135
136
|
exports.DatePicker.Input = DateInput_1.DatePickerInput;
|
|
@@ -9,8 +9,6 @@ const isWeekend_1 = __importDefault(require("date-fns/isWeekend"));
|
|
|
9
9
|
const react_1 = require("react");
|
|
10
10
|
const react_day_picker_1 = require("react-day-picker");
|
|
11
11
|
const utils_1 = require("../utils");
|
|
12
|
-
const useEscape_1 = require("./useEscape");
|
|
13
|
-
const useOutsideClickHandler_1 = require("./useOutsideClickHandler");
|
|
14
12
|
const getValidationMessage = (val = {}) => (Object.assign({ isDisabled: false, isWeekend: false, isEmpty: false, isInvalid: false, isBefore: false, isAfter: false, isValidDate: true }, val));
|
|
15
13
|
/**
|
|
16
14
|
*
|
|
@@ -26,11 +24,10 @@ const getValidationMessage = (val = {}) => (Object.assign({ isDisabled: false, i
|
|
|
26
24
|
* });
|
|
27
25
|
*/
|
|
28
26
|
const useDatepicker = (opt = {}) => {
|
|
29
|
-
var _a
|
|
30
|
-
const { locale: _locale = "nb", required, defaultSelected: _defaultSelected, today = new Date(), fromDate, toDate, disabled, disableWeekends, onDateChange, inputFormat, onValidate, defaultMonth, allowTwoDigitYear = true,
|
|
27
|
+
var _a;
|
|
28
|
+
const { locale: _locale = "nb", required, defaultSelected: _defaultSelected, today = new Date(), fromDate, toDate, disabled, disableWeekends, onDateChange, inputFormat, onValidate, defaultMonth, allowTwoDigitYear = true, } = opt;
|
|
29
|
+
const [anchorRef, setAnchorRef] = (0, react_1.useState)(null);
|
|
31
30
|
const locale = (0, utils_1.getLocaleFromString)(_locale);
|
|
32
|
-
const inputRef = (0, react_1.useRef)(null);
|
|
33
|
-
const [daypickerRef, setDaypickerRef] = (0, react_1.useState)();
|
|
34
31
|
const [defaultSelected, setDefaultSelected] = (0, react_1.useState)(_defaultSelected);
|
|
35
32
|
// Initialize states
|
|
36
33
|
const [month, setMonth] = (0, react_1.useState)((_a = defaultSelected !== null && defaultSelected !== void 0 ? defaultSelected : defaultMonth) !== null && _a !== void 0 ? _a : today);
|
|
@@ -46,12 +43,6 @@ const useDatepicker = (opt = {}) => {
|
|
|
46
43
|
newOpen &&
|
|
47
44
|
setMonth((_b = (_a = selectedDay !== null && selectedDay !== void 0 ? selectedDay : defaultSelected) !== null && _a !== void 0 ? _a : defaultMonth) !== null && _b !== void 0 ? _b : today);
|
|
48
45
|
}, [defaultMonth, defaultSelected, selectedDay, today]);
|
|
49
|
-
(0, useOutsideClickHandler_1.useOutsideClickHandler)(open, handleOpen, [
|
|
50
|
-
daypickerRef,
|
|
51
|
-
inputRef.current,
|
|
52
|
-
(_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.nextSibling,
|
|
53
|
-
]);
|
|
54
|
-
(0, useEscape_1.useEscape)(open, handleOpen, inputRef);
|
|
55
46
|
const updateDate = (date) => {
|
|
56
47
|
onDateChange === null || onDateChange === void 0 ? void 0 : onDateChange(date);
|
|
57
48
|
setSelectedDay(date);
|
|
@@ -74,7 +65,6 @@ const useDatepicker = (opt = {}) => {
|
|
|
74
65
|
if (e.target.readOnly) {
|
|
75
66
|
return;
|
|
76
67
|
}
|
|
77
|
-
!open && openOnFocus && handleOpen(true);
|
|
78
68
|
const day = (0, utils_1.parseDate)(e.target.value, today, locale, "date", allowTwoDigitYear);
|
|
79
69
|
if ((0, utils_1.isValidDate)(day)) {
|
|
80
70
|
setInputValue((0, utils_1.formatDateForInput)(day, locale, "date", inputFormat));
|
|
@@ -92,7 +82,7 @@ const useDatepicker = (opt = {}) => {
|
|
|
92
82
|
const handleDayClick = (day, { selected }) => {
|
|
93
83
|
if (day && !selected) {
|
|
94
84
|
handleOpen(false);
|
|
95
|
-
|
|
85
|
+
anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.focus();
|
|
96
86
|
}
|
|
97
87
|
if (!required && selected) {
|
|
98
88
|
updateDate(undefined);
|
|
@@ -151,18 +141,20 @@ const useDatepicker = (opt = {}) => {
|
|
|
151
141
|
toDate,
|
|
152
142
|
today,
|
|
153
143
|
open,
|
|
144
|
+
onClose: () => {
|
|
145
|
+
handleOpen(false);
|
|
146
|
+
anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.focus();
|
|
147
|
+
},
|
|
154
148
|
onOpenToggle: () => handleOpen(!open),
|
|
155
149
|
disabled,
|
|
156
150
|
disableWeekends,
|
|
157
|
-
bubbleEscape: true,
|
|
158
|
-
ref: setDaypickerRef,
|
|
159
151
|
};
|
|
160
152
|
const inputProps = {
|
|
161
153
|
onChange: handleChange,
|
|
162
154
|
onFocus: handleFocus,
|
|
163
155
|
onBlur: handleBlur,
|
|
164
156
|
value: inputValue,
|
|
165
|
-
|
|
157
|
+
setAnchorRef,
|
|
166
158
|
};
|
|
167
159
|
return { datepickerProps, inputProps, reset, selectedDay, setSelected };
|
|
168
160
|
};
|
|
@@ -3,8 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useMonthpicker = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
|
-
const useEscape_1 = require("./useEscape");
|
|
7
|
-
const useOutsideClickHandler_1 = require("./useOutsideClickHandler");
|
|
8
6
|
const getValidationMessage = (val = {}) => (Object.assign({ isDisabled: false, isEmpty: false, isInvalid: false, isBefore: false, isAfter: false, isValidMonth: true }, val));
|
|
9
7
|
const getIsBefore = (opt) => opt.fromDate &&
|
|
10
8
|
opt.date &&
|
|
@@ -30,13 +28,12 @@ const getIsAfter = (opt) => opt.toDate &&
|
|
|
30
28
|
* });
|
|
31
29
|
*/
|
|
32
30
|
const useMonthpicker = (opt = {}) => {
|
|
33
|
-
var _a
|
|
34
|
-
const { locale: _locale = "nb", defaultSelected: _defaultSelected, fromDate, toDate, disabled, required, onMonthChange, inputFormat, onValidate, defaultYear, allowTwoDigitYear = true,
|
|
31
|
+
var _a;
|
|
32
|
+
const { locale: _locale = "nb", defaultSelected: _defaultSelected, fromDate, toDate, disabled, required, onMonthChange, inputFormat, onValidate, defaultYear, allowTwoDigitYear = true, } = opt;
|
|
33
|
+
const [anchorRef, setAnchorRef] = (0, react_1.useState)(null);
|
|
35
34
|
const [defaultSelected, setDefaultSelected] = (0, react_1.useState)(_defaultSelected);
|
|
36
35
|
const today = (0, react_1.useMemo)(() => new Date(), []);
|
|
37
36
|
const locale = (0, utils_1.getLocaleFromString)(_locale);
|
|
38
|
-
const inputRef = (0, react_1.useRef)(null);
|
|
39
|
-
const [monthpickerRef, setMonthpickerRef] = (0, react_1.useState)();
|
|
40
37
|
// Initialize states
|
|
41
38
|
const [year, setYear] = (0, react_1.useState)((_a = defaultSelected !== null && defaultSelected !== void 0 ? defaultSelected : defaultYear) !== null && _a !== void 0 ? _a : today);
|
|
42
39
|
const [selectedMonth, setSelectedMonth] = (0, react_1.useState)(defaultSelected);
|
|
@@ -51,12 +48,6 @@ const useMonthpicker = (opt = {}) => {
|
|
|
51
48
|
newOpen &&
|
|
52
49
|
setYear((_b = (_a = selectedMonth !== null && selectedMonth !== void 0 ? selectedMonth : defaultSelected) !== null && _a !== void 0 ? _a : defaultYear) !== null && _b !== void 0 ? _b : today);
|
|
53
50
|
}, [defaultSelected, defaultYear, selectedMonth, today]);
|
|
54
|
-
(0, useOutsideClickHandler_1.useOutsideClickHandler)(open, handleOpen, [
|
|
55
|
-
monthpickerRef,
|
|
56
|
-
inputRef.current,
|
|
57
|
-
(_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.nextSibling,
|
|
58
|
-
]);
|
|
59
|
-
(0, useEscape_1.useEscape)(open, handleOpen, inputRef);
|
|
60
51
|
const updateMonth = (date) => {
|
|
61
52
|
onMonthChange === null || onMonthChange === void 0 ? void 0 : onMonthChange(date);
|
|
62
53
|
setSelectedMonth(date);
|
|
@@ -80,7 +71,6 @@ const useMonthpicker = (opt = {}) => {
|
|
|
80
71
|
if (e.target.readOnly) {
|
|
81
72
|
return;
|
|
82
73
|
}
|
|
83
|
-
!open && openOnFocus && handleOpen(true);
|
|
84
74
|
const day = (0, utils_1.parseDate)(e.target.value, today, locale, "month", allowTwoDigitYear);
|
|
85
75
|
const isBefore = getIsBefore({ fromDate, date: day });
|
|
86
76
|
const isAfter = getIsAfter({ toDate, date: day });
|
|
@@ -101,8 +91,8 @@ const useMonthpicker = (opt = {}) => {
|
|
|
101
91
|
const handleMonthClick = (month) => {
|
|
102
92
|
if (month) {
|
|
103
93
|
handleOpen(false);
|
|
104
|
-
inputRef.current && inputRef.current.focus();
|
|
105
94
|
setYear(month);
|
|
95
|
+
anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.focus();
|
|
106
96
|
}
|
|
107
97
|
if (!required && !month) {
|
|
108
98
|
updateMonth(undefined);
|
|
@@ -160,16 +150,18 @@ const useMonthpicker = (opt = {}) => {
|
|
|
160
150
|
toDate,
|
|
161
151
|
open,
|
|
162
152
|
onOpenToggle: () => handleOpen(!open),
|
|
153
|
+
onClose: () => {
|
|
154
|
+
handleOpen(false);
|
|
155
|
+
anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.focus();
|
|
156
|
+
},
|
|
163
157
|
disabled,
|
|
164
|
-
bubbleEscape: true,
|
|
165
|
-
ref: setMonthpickerRef,
|
|
166
158
|
};
|
|
167
159
|
const inputProps = {
|
|
168
160
|
onChange: handleChange,
|
|
169
161
|
onFocus: handleFocus,
|
|
170
162
|
onBlur: handleBlur,
|
|
171
163
|
value: inputValue,
|
|
172
|
-
|
|
164
|
+
setAnchorRef,
|
|
173
165
|
};
|
|
174
166
|
return { monthpickerProps, inputProps, reset, selectedMonth, setSelected };
|
|
175
167
|
};
|
|
@@ -10,8 +10,6 @@ const isWeekend_1 = __importDefault(require("date-fns/isWeekend"));
|
|
|
10
10
|
const react_1 = require("react");
|
|
11
11
|
const react_day_picker_1 = require("react-day-picker");
|
|
12
12
|
const utils_1 = require("../utils");
|
|
13
|
-
const useEscape_1 = require("./useEscape");
|
|
14
|
-
const useOutsideClickHandler_1 = require("./useOutsideClickHandler");
|
|
15
13
|
const getValidationMessage = (from = {}, to = {}) => ({
|
|
16
14
|
from: Object.assign({ isDisabled: false, isWeekend: false, isEmpty: false, isInvalid: false, isBefore: false, isAfter: false, isValidDate: true }, from),
|
|
17
15
|
to: Object.assign({ isDisabled: false, isWeekend: false, isEmpty: false, isInvalid: false, isBefore: false, isAfter: false, isBeforeFrom: false, isValidDate: true }, to),
|
|
@@ -93,12 +91,9 @@ const initialValidation = (range, opt) => {
|
|
|
93
91
|
* });
|
|
94
92
|
*/
|
|
95
93
|
const useRangeDatepicker = (opt = {}) => {
|
|
96
|
-
|
|
97
|
-
const
|
|
94
|
+
const { locale: _locale = "nb", defaultSelected: _defaultSelected, today = new Date(), fromDate, toDate, disabled, disableWeekends, onRangeChange, inputFormat, onValidate, defaultMonth, allowTwoDigitYear = true, } = opt;
|
|
95
|
+
const [anchorRef, setAnchorRef] = (0, react_1.useState)(null);
|
|
98
96
|
const locale = (0, utils_1.getLocaleFromString)(_locale);
|
|
99
|
-
const inputRefTo = (0, react_1.useRef)(null);
|
|
100
|
-
const inputRefFrom = (0, react_1.useRef)(null);
|
|
101
|
-
const [daypickerRef, setDaypickerRef] = (0, react_1.useState)();
|
|
102
97
|
const [defaultSelected, setDefaultSelected] = (0, react_1.useState)(_defaultSelected);
|
|
103
98
|
// Initialize states
|
|
104
99
|
const [month, setMonth] = (0, react_1.useState)(defaultSelected ? defaultSelected === null || defaultSelected === void 0 ? void 0 : defaultSelected.from : defaultMonth !== null && defaultMonth !== void 0 ? defaultMonth : today);
|
|
@@ -111,14 +106,6 @@ const useRangeDatepicker = (opt = {}) => {
|
|
|
111
106
|
: "");
|
|
112
107
|
const [validation, setValidation] = (0, react_1.useState)(initialValidation(selectedRange, opt));
|
|
113
108
|
const [open, setOpen] = (0, react_1.useState)(false);
|
|
114
|
-
(0, useOutsideClickHandler_1.useOutsideClickHandler)(open, setOpen, [
|
|
115
|
-
daypickerRef,
|
|
116
|
-
inputRefTo.current,
|
|
117
|
-
inputRefFrom.current,
|
|
118
|
-
(_a = inputRefTo.current) === null || _a === void 0 ? void 0 : _a.nextSibling,
|
|
119
|
-
(_b = inputRefFrom.current) === null || _b === void 0 ? void 0 : _b.nextSibling,
|
|
120
|
-
]);
|
|
121
|
-
(0, useEscape_1.useEscape)(open, setOpen, (selectedRange === null || selectedRange === void 0 ? void 0 : selectedRange.from) && !(selectedRange === null || selectedRange === void 0 ? void 0 : selectedRange.to) ? inputRefTo : inputRefFrom);
|
|
122
109
|
const updateRange = (range) => {
|
|
123
110
|
onRangeChange === null || onRangeChange === void 0 ? void 0 : onRangeChange(range);
|
|
124
111
|
setSelectedRange(range);
|
|
@@ -154,7 +141,6 @@ const useRangeDatepicker = (opt = {}) => {
|
|
|
154
141
|
if (e.target.readOnly) {
|
|
155
142
|
return;
|
|
156
143
|
}
|
|
157
|
-
!open && openOnFocus && setOpen(true);
|
|
158
144
|
const day = (0, utils_1.parseDate)(e.target.value, today, locale, "date", allowTwoDigitYear);
|
|
159
145
|
if ((0, utils_1.isValidDate)(day)) {
|
|
160
146
|
src === RANGE.FROM
|
|
@@ -185,6 +171,7 @@ const useRangeDatepicker = (opt = {}) => {
|
|
|
185
171
|
const handleSelect = (range) => {
|
|
186
172
|
if ((range === null || range === void 0 ? void 0 : range.from) && (range === null || range === void 0 ? void 0 : range.to)) {
|
|
187
173
|
setOpen(false);
|
|
174
|
+
anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.focus();
|
|
188
175
|
}
|
|
189
176
|
const prevToRange = !(selectedRange === null || selectedRange === void 0 ? void 0 : selectedRange.from) && (selectedRange === null || selectedRange === void 0 ? void 0 : selectedRange.to) ? selectedRange === null || selectedRange === void 0 ? void 0 : selectedRange.to : range === null || range === void 0 ? void 0 : range.to;
|
|
190
177
|
const resetTo = (0, isBefore_1.default)(prevToRange, range === null || range === void 0 ? void 0 : range.from);
|
|
@@ -301,24 +288,26 @@ const useRangeDatepicker = (opt = {}) => {
|
|
|
301
288
|
mode: "range",
|
|
302
289
|
open,
|
|
303
290
|
onOpenToggle: () => setOpen((x) => !x),
|
|
291
|
+
onClose: () => {
|
|
292
|
+
setOpen(false);
|
|
293
|
+
anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.focus();
|
|
294
|
+
},
|
|
304
295
|
disabled,
|
|
305
296
|
disableWeekends,
|
|
306
|
-
bubbleEscape: true,
|
|
307
|
-
ref: setDaypickerRef,
|
|
308
297
|
};
|
|
309
298
|
const fromInputProps = {
|
|
310
299
|
onChange: (e) => handleChange(e, RANGE.FROM),
|
|
311
300
|
onFocus: (e) => handleFocus(e, RANGE.FROM),
|
|
312
301
|
onBlur: (e) => handleBlur(e, RANGE.FROM),
|
|
313
302
|
value: fromInputValue,
|
|
314
|
-
|
|
303
|
+
setAnchorRef,
|
|
315
304
|
};
|
|
316
305
|
const toInputProps = {
|
|
317
306
|
onChange: (e) => handleChange(e, RANGE.TO),
|
|
318
307
|
onFocus: (e) => handleFocus(e, RANGE.TO),
|
|
319
308
|
onBlur: (e) => handleBlur(e, RANGE.TO),
|
|
320
309
|
value: toInputValue,
|
|
321
|
-
|
|
310
|
+
setAnchorRef,
|
|
322
311
|
};
|
|
323
312
|
return {
|
|
324
313
|
datepickerProps,
|
|
@@ -30,10 +30,10 @@ exports.MonthPicker = void 0;
|
|
|
30
30
|
const clsx_1 = __importDefault(require("clsx"));
|
|
31
31
|
const react_1 = __importStar(require("react"));
|
|
32
32
|
const react_day_picker_1 = require("react-day-picker");
|
|
33
|
-
const popover_1 = require("../../popover");
|
|
34
33
|
const util_1 = require("../../util");
|
|
35
|
-
const DateInput_1 = require("../DateInput");
|
|
36
34
|
const context_1 = require("../context");
|
|
35
|
+
const DateInput_1 = require("../parts/DateInput");
|
|
36
|
+
const DateWrapper_1 = require("../parts/DateWrapper");
|
|
37
37
|
const utils_1 = require("../utils");
|
|
38
38
|
const MonthCaption_1 = __importDefault(require("./MonthCaption"));
|
|
39
39
|
const MonthPickerStandalone_1 = __importDefault(require("./MonthPickerStandalone"));
|
|
@@ -60,10 +60,11 @@ const MonthSelector_1 = __importDefault(require("./MonthSelector"));
|
|
|
60
60
|
* );
|
|
61
61
|
* ```
|
|
62
62
|
*/
|
|
63
|
-
exports.MonthPicker = (0, react_1.forwardRef)(({ children, dropdownCaption = false, fromDate, toDate, disabled = [], selected, open: _open, id, onClose, onOpenToggle, locale = "nb", onMonthSelect, className, wrapperClassName, defaultSelected, year, onYearChange, strategy = "absolute",
|
|
63
|
+
exports.MonthPicker = (0, react_1.forwardRef)(({ children, dropdownCaption = false, fromDate, toDate, disabled = [], selected, open: _open, id, onClose, onOpenToggle, locale = "nb", onMonthSelect, className, wrapperClassName, defaultSelected, year, onYearChange, strategy = "absolute", }, ref) => {
|
|
64
64
|
const ariaId = (0, util_1.useId)(id);
|
|
65
65
|
const [open, setOpen] = (0, react_1.useState)(_open !== null && _open !== void 0 ? _open : false);
|
|
66
66
|
const wrapperRef = (0, react_1.useRef)(null);
|
|
67
|
+
const mergedRef = (0, react_1.useMemo)(() => (0, util_1.mergeRefs)([wrapperRef, ref]), [ref]);
|
|
67
68
|
const [selectedMonth, setSelectedMonth] = (0, react_1.useState)(defaultSelected);
|
|
68
69
|
const handleSelect = (month) => {
|
|
69
70
|
var _a;
|
|
@@ -82,15 +83,19 @@ exports.MonthPicker = (0, react_1.forwardRef)(({ children, dropdownCaption = fal
|
|
|
82
83
|
onOpenToggle === null || onOpenToggle === void 0 ? void 0 : onOpenToggle();
|
|
83
84
|
},
|
|
84
85
|
ariaId,
|
|
86
|
+
defined: true,
|
|
85
87
|
} },
|
|
86
|
-
react_1.default.createElement("div", { ref:
|
|
88
|
+
react_1.default.createElement("div", { ref: mergedRef, className: (0, clsx_1.default)("navds-date__wrapper", wrapperClassName) },
|
|
87
89
|
children,
|
|
88
|
-
|
|
90
|
+
react_1.default.createElement(DateWrapper_1.DateWrapper, { open: _open !== null && _open !== void 0 ? _open : open, anchor: wrapperRef.current, onClose: () => { var _a; return (_a = onClose === null || onClose === void 0 ? void 0 : onClose()) !== null && _a !== void 0 ? _a : setOpen(false); }, locale: locale, variant: "month", popoverProps: {
|
|
91
|
+
id: ariaId,
|
|
92
|
+
strategy,
|
|
93
|
+
} },
|
|
89
94
|
react_1.default.createElement(react_day_picker_1.RootProvider, { locale: (0, utils_1.getLocaleFromString)(locale), selected: selected !== null && selected !== void 0 ? selected : selectedMonth, toDate: toDate, fromDate: fromDate, month: selected !== null && selected !== void 0 ? selected : selectedMonth },
|
|
90
95
|
react_1.default.createElement("div", { className: (0, clsx_1.default)("rdp-month", className) },
|
|
91
96
|
react_1.default.createElement(context_1.SharedMonthProvider, { dropdownCaption: dropdownCaption, disabled: disabled, selected: selected !== null && selected !== void 0 ? selected : selectedMonth, onSelect: handleSelect, year: year, onYearChange: onYearChange },
|
|
92
97
|
react_1.default.createElement(MonthCaption_1.default, null),
|
|
93
|
-
react_1.default.createElement(MonthSelector_1.default, null))))))))
|
|
98
|
+
react_1.default.createElement(MonthSelector_1.default, null))))))));
|
|
94
99
|
});
|
|
95
100
|
exports.MonthPicker.Standalone = MonthPickerStandalone_1.default;
|
|
96
101
|
exports.MonthPicker.Input = DateInput_1.MonthPickerInput;
|
|
@@ -41,13 +41,14 @@ exports.MonthPickerInput = exports.DatePickerInput = void 0;
|
|
|
41
41
|
const aksel_icons_1 = require("@navikt/aksel-icons");
|
|
42
42
|
const clsx_1 = __importDefault(require("clsx"));
|
|
43
43
|
const react_1 = __importStar(require("react"));
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
const
|
|
44
|
+
const ReadOnlyIcon_1 = require("../../form/ReadOnlyIcon");
|
|
45
|
+
const useFormField_1 = require("../../form/useFormField");
|
|
46
|
+
const typography_1 = require("../../typography");
|
|
47
|
+
const util_1 = require("../../util");
|
|
48
|
+
const context_1 = require("../context");
|
|
49
49
|
const DateInput = (0, react_1.forwardRef)((props, ref) => {
|
|
50
|
-
const { className, hideLabel = false, label, description, variant = "datepicker" } = props, rest = __rest(props, ["className", "hideLabel", "label", "description", "variant"]);
|
|
50
|
+
const { className, hideLabel = false, label, description, variant = "datepicker", setAnchorRef } = props, rest = __rest(props, ["className", "hideLabel", "label", "description", "variant", "setAnchorRef"]);
|
|
51
|
+
const buttonRef = (0, react_1.useRef)(null);
|
|
51
52
|
const isDatepickerVariant = variant === "datepicker";
|
|
52
53
|
const conditionalVariables = {
|
|
53
54
|
prefix: isDatepickerVariant ? "datepicker-input" : "monthpicker-input",
|
|
@@ -56,7 +57,7 @@ const DateInput = (0, react_1.forwardRef)((props, ref) => {
|
|
|
56
57
|
close: isDatepickerVariant ? "Lukk datovelger" : "Lukk månedsvelger",
|
|
57
58
|
},
|
|
58
59
|
};
|
|
59
|
-
const
|
|
60
|
+
const context = (0, context_1.useDateInputContext)();
|
|
60
61
|
const { inputProps, size = "medium", inputDescriptionId, errorId, showErrorMsg, hasError, readOnly, } = (0, useFormField_1.useFormField)(props, conditionalVariables.prefix);
|
|
61
62
|
return (react_1.default.createElement("div", { className: (0, clsx_1.default)(className, "navds-form-field", `navds-form-field--${size}`, "navds-date__field", {
|
|
62
63
|
"navds-text-field--error": hasError,
|
|
@@ -76,9 +77,12 @@ const DateInput = (0, react_1.forwardRef)((props, ref) => {
|
|
|
76
77
|
"navds-sr-only": hideLabel,
|
|
77
78
|
}), id: inputDescriptionId, size: size }, description)),
|
|
78
79
|
react_1.default.createElement("div", { className: "navds-date__field-wrapper" },
|
|
79
|
-
react_1.default.createElement("input", Object.assign({ ref: ref }, (0, util_1.omit)(rest, ["error", "errorId", "size"]), inputProps, { autoComplete: "off", "aria-controls": open ? ariaId : undefined, readOnly: readOnly, className: (0, clsx_1.default)("navds-date__field-input", "navds-text-field__input", "navds-body-short", `navds-body-short--${size}`), size: isDatepickerVariant ?
|
|
80
|
-
react_1.default.createElement("button", { disabled: inputProps.disabled || readOnly, tabIndex: readOnly ? -1 : open ? -1 : 0, onClick: () =>
|
|
81
|
-
|
|
80
|
+
react_1.default.createElement("input", Object.assign({ ref: ref }, (0, util_1.omit)(rest, ["error", "errorId", "size"]), inputProps, { autoComplete: "off", "aria-controls": (context === null || context === void 0 ? void 0 : context.open) ? context.ariaId : undefined, readOnly: readOnly, className: (0, clsx_1.default)("navds-date__field-input", "navds-text-field__input", "navds-body-short", `navds-body-short--${size}`), size: isDatepickerVariant ? 11 : 14 })),
|
|
81
|
+
react_1.default.createElement("button", { disabled: inputProps.disabled || readOnly, tabIndex: readOnly ? -1 : (context === null || context === void 0 ? void 0 : context.open) ? -1 : 0, onClick: () => {
|
|
82
|
+
context === null || context === void 0 ? void 0 : context.onOpen();
|
|
83
|
+
setAnchorRef === null || setAnchorRef === void 0 ? void 0 : setAnchorRef(buttonRef.current);
|
|
84
|
+
}, type: "button", className: "navds-date__field-button", ref: buttonRef },
|
|
85
|
+
react_1.default.createElement(aksel_icons_1.CalendarIcon, { pointerEvents: "none", title: (context === null || context === void 0 ? void 0 : context.open)
|
|
82
86
|
? conditionalVariables.iconTitle.close
|
|
83
87
|
: conditionalVariables.iconTitle.open }))),
|
|
84
88
|
react_1.default.createElement("div", { className: "navds-form-field__error", id: errorId, "aria-relevant": "additions removals", "aria-live": "polite" }, showErrorMsg && react_1.default.createElement(typography_1.ErrorMessage, { size: size }, props.error))));
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.DateWrapper = void 0;
|
|
30
|
+
const clsx_1 = __importDefault(require("clsx"));
|
|
31
|
+
const react_1 = __importStar(require("react"));
|
|
32
|
+
const button_1 = require("../../button");
|
|
33
|
+
const modal_1 = require("../../modal");
|
|
34
|
+
const ModalContext_1 = require("../../modal/ModalContext");
|
|
35
|
+
const popover_1 = require("../../popover");
|
|
36
|
+
const useMedia_1 = require("../../util/useMedia");
|
|
37
|
+
const labels_1 = require("../utils/labels");
|
|
38
|
+
const DateWrapper = ({ open, children, onClose, anchor, locale, variant, popoverProps, }) => {
|
|
39
|
+
const modalRef = (0, react_1.useRef)(null);
|
|
40
|
+
const isInModal = (0, react_1.useContext)(ModalContext_1.ModalContext) !== null;
|
|
41
|
+
const hideModal = (0, useMedia_1.useMedia)("screen and (min-width: 768px)", true) && !isInModal;
|
|
42
|
+
if (hideModal) {
|
|
43
|
+
return (react_1.default.createElement(popover_1.Popover, Object.assign({ arrow: false, anchorEl: anchor, open: open, onClose: onClose, placement: "bottom-start", role: "dialog", className: (0, clsx_1.default)("navds-date__popover", {
|
|
44
|
+
"navds-date": variant === "month",
|
|
45
|
+
}), flip: false }, popoverProps), children));
|
|
46
|
+
}
|
|
47
|
+
return (react_1.default.createElement(modal_1.Modal, { ref: modalRef, open: open, onClose: onClose, "aria-label": (0, labels_1.modalLabel)(locale, variant), className: (0, clsx_1.default)("navds-date__modal", {
|
|
48
|
+
"navds-date__nested-modal": isInModal,
|
|
49
|
+
"navds-date": variant === "month",
|
|
50
|
+
}), closeOnBackdropClick: true },
|
|
51
|
+
react_1.default.createElement("div", { className: "navds-date__modal-body" },
|
|
52
|
+
children,
|
|
53
|
+
react_1.default.createElement(button_1.Button, { variant: "tertiary", onClick: () => { var _a; return (_a = modalRef === null || modalRef === void 0 ? void 0 : modalRef.current) === null || _a === void 0 ? void 0 : _a.close(); }, size: "small" }, (0, labels_1.modalCloseButtonLabel)(locale)))));
|
|
54
|
+
};
|
|
55
|
+
exports.DateWrapper = DateWrapper;
|
package/cjs/date/utils/labels.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.labelWeek = exports.labelWeekNumberButton = exports.labelWeekNumber = exports.labels = exports.labelPrevYear = exports.labelNextYear = exports.labelMonthDropdown = exports.labelYearDropdown = void 0;
|
|
3
|
+
exports.modalCloseButtonLabel = exports.modalLabel = exports.labelWeek = exports.labelWeekNumberButton = exports.labelWeekNumber = exports.labels = exports.labelPrevYear = exports.labelNextYear = exports.labelMonthDropdown = exports.labelYearDropdown = void 0;
|
|
4
4
|
const labelNext = (date, options) => {
|
|
5
5
|
var _a;
|
|
6
6
|
switch ((_a = options === null || options === void 0 ? void 0 : options.locale) === null || _a === void 0 ? void 0 : _a.code) {
|
|
@@ -122,3 +122,79 @@ const labelWeek = (localeCode) => {
|
|
|
122
122
|
}
|
|
123
123
|
};
|
|
124
124
|
exports.labelWeek = labelWeek;
|
|
125
|
+
const modalLabelSingle = (localeCode) => {
|
|
126
|
+
switch (localeCode) {
|
|
127
|
+
case "nb":
|
|
128
|
+
return `Velg dato`;
|
|
129
|
+
case "nn":
|
|
130
|
+
return `Vel dato`;
|
|
131
|
+
case "en-GB":
|
|
132
|
+
return `Pick a date`;
|
|
133
|
+
default:
|
|
134
|
+
return `Velg dato`;
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
const modalLabelMultiple = (localeCode) => {
|
|
138
|
+
switch (localeCode) {
|
|
139
|
+
case "nb":
|
|
140
|
+
return `Velg datoer`;
|
|
141
|
+
case "nn":
|
|
142
|
+
return `Vel datoar`;
|
|
143
|
+
case "en-GB":
|
|
144
|
+
return `Pick dates`;
|
|
145
|
+
default:
|
|
146
|
+
return `Velg datoer`;
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
const modalLabelRanged = (localeCode) => {
|
|
150
|
+
switch (localeCode) {
|
|
151
|
+
case "nb":
|
|
152
|
+
return `Velg start- og sluttdato`;
|
|
153
|
+
case "nn":
|
|
154
|
+
return `Vel start- og sluttdato`;
|
|
155
|
+
case "en-GB":
|
|
156
|
+
return `Pick a start and end date`;
|
|
157
|
+
default:
|
|
158
|
+
return `Velg start- og sluttdato`;
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
const modalLabelMonth = (localeCode) => {
|
|
162
|
+
switch (localeCode) {
|
|
163
|
+
case "nb":
|
|
164
|
+
return `Velg måned`;
|
|
165
|
+
case "nn":
|
|
166
|
+
return `Vel månad`;
|
|
167
|
+
case "en-GB":
|
|
168
|
+
return `Pick a month`;
|
|
169
|
+
default:
|
|
170
|
+
return `Velg måned`;
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
const modalLabel = (localeCode, variant) => {
|
|
174
|
+
switch (variant) {
|
|
175
|
+
case "single":
|
|
176
|
+
return modalLabelSingle(localeCode);
|
|
177
|
+
case "multiple":
|
|
178
|
+
return modalLabelMultiple(localeCode);
|
|
179
|
+
case "range":
|
|
180
|
+
return modalLabelRanged(localeCode);
|
|
181
|
+
case "month":
|
|
182
|
+
return modalLabelMonth(localeCode);
|
|
183
|
+
default:
|
|
184
|
+
return modalLabelSingle(localeCode);
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
exports.modalLabel = modalLabel;
|
|
188
|
+
const modalCloseButtonLabel = (localeCode) => {
|
|
189
|
+
switch (localeCode) {
|
|
190
|
+
case "nb":
|
|
191
|
+
return `Lukk`;
|
|
192
|
+
case "nn":
|
|
193
|
+
return `Lukk`;
|
|
194
|
+
case "en-GB":
|
|
195
|
+
return `Close`;
|
|
196
|
+
default:
|
|
197
|
+
return `Lukk`;
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
exports.modalCloseButtonLabel = modalCloseButtonLabel;
|
|
@@ -54,7 +54,7 @@ const typography_1 = require("../../typography");
|
|
|
54
54
|
exports.Combobox = (0, react_1.forwardRef)((props, ref) => {
|
|
55
55
|
const { className, hideLabel = false, description, label, clearButton = true, clearButtonLabel, toggleListButton = true, toggleListButtonLabel, inputClassName, shouldShowSelectedOptions = true } = props, rest = __rest(props, ["className", "hideLabel", "description", "label", "clearButton", "clearButtonLabel", "toggleListButton", "toggleListButtonLabel", "inputClassName", "shouldShowSelectedOptions"]);
|
|
56
56
|
const toggleListButtonRef = (0, react_1.useRef)(null);
|
|
57
|
-
const {
|
|
57
|
+
const { activeDecendantId, toggleIsListOpen } = (0, filteredOptionsContext_1.useFilteredOptionsContext)();
|
|
58
58
|
const { selectedOptions } = (0, selectedOptionsContext_1.useSelectedOptionsContext)();
|
|
59
59
|
const { clearInput, error, errorId, focusInput, hasError, inputDescriptionId, inputProps, inputRef, value, showErrorMsg, size = "medium", } = (0, inputContext_1.useInputContext)();
|
|
60
60
|
const mergedInputRef = (0, react_1.useMemo)(() => (0, util_1.mergeRefs)([inputRef, ref]), [inputRef, ref]);
|
|
@@ -67,7 +67,7 @@ exports.Combobox = (0, react_1.forwardRef)((props, ref) => {
|
|
|
67
67
|
}), id: inputDescriptionId, size: size }, description)),
|
|
68
68
|
react_1.default.createElement("div", { className: "navds-combobox__wrapper" },
|
|
69
69
|
react_1.default.createElement("div", { className: (0, clsx_1.default)("navds-combobox__wrapper-inner navds-text-field__input", {
|
|
70
|
-
"navds-combobox__wrapper-inner--virtually-unfocused":
|
|
70
|
+
"navds-combobox__wrapper-inner--virtually-unfocused": activeDecendantId !== null,
|
|
71
71
|
}), onClick: focusInput },
|
|
72
72
|
!shouldShowSelectedOptions ? (react_1.default.createElement(Input_1.default, Object.assign({ id: inputProps.id, ref: mergedInputRef, inputClassName: inputClassName }, rest))) : (react_1.default.createElement(SelectedOptions_1.default, { selectedOptions: selectedOptions, size: size },
|
|
73
73
|
react_1.default.createElement(Input_1.default, Object.assign({ id: inputProps.id, ref: mergedInputRef, inputClassName: inputClassName }, rest)))),
|
|
@@ -78,7 +78,7 @@ const ComboboxProvider = (0, react_1.forwardRef)((props, ref) => {
|
|
|
78
78
|
shouldAutocomplete,
|
|
79
79
|
size,
|
|
80
80
|
} },
|
|
81
|
-
react_1.default.createElement(customOptionsContext_1.CustomOptionsProvider,
|
|
81
|
+
react_1.default.createElement(customOptionsContext_1.CustomOptionsProvider, { value: { isMultiSelect } },
|
|
82
82
|
react_1.default.createElement(selectedOptionsContext_1.SelectedOptionsProvider, { value: {
|
|
83
83
|
allowNewValues,
|
|
84
84
|
isMultiSelect,
|
|
@@ -91,7 +91,6 @@ const ComboboxProvider = (0, react_1.forwardRef)((props, ref) => {
|
|
|
91
91
|
filteredOptions,
|
|
92
92
|
isListOpen,
|
|
93
93
|
isLoading,
|
|
94
|
-
isMultiSelect,
|
|
95
94
|
options,
|
|
96
95
|
} },
|
|
97
96
|
react_1.default.createElement(Combobox_1.default, Object.assign({ ref: ref }, rest), children))))));
|