@entur/datepicker 2.1.1 → 3.0.0-alpha.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/CHANGELOG.md +22 -0
- package/dist/{NativeTimePicker.d.ts → TimePicker/NativeTimePicker.d.ts} +3 -14
- package/dist/TimePicker/TimePicker.d.ts +62 -0
- package/dist/TimePicker/TimePickerArrowButton.d.ts +6 -0
- package/dist/TimePicker/TimeSegment.d.ts +10 -0
- package/dist/TimePicker/index.d.ts +3 -0
- package/dist/TimePicker/utils.d.ts +18 -0
- package/dist/datepicker.cjs.development.js +179 -193
- package/dist/datepicker.cjs.development.js.map +1 -1
- package/dist/datepicker.cjs.production.min.js +1 -1
- package/dist/datepicker.cjs.production.min.js.map +1 -1
- package/dist/datepicker.esm.js +180 -196
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/styles.css +59 -93
- package/package.json +12 -7
- package/dist/TimePicker.d.ts +0 -68
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [3.0.0-alpha.0](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.1.3...@entur/datepicker@3.0.0-alpha.0) (2022-09-02)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **native time picker:** update native timepicker with small tweaks ([9d72bf7](https://bitbucket.org/enturas/design-system/commits/9d72bf79951aed9b236fb55a007fc96d019b9c46))
|
|
11
|
+
- **timepicker:** add new timepicker component using react-aria ([cd90a09](https://bitbucket.org/enturas/design-system/commits/cd90a092de72ebf1cf1cef61147ada5f42fb67b4))
|
|
12
|
+
- **timepicker utils:** add utility functions for converting between TimeValue and JS Date ([f5ee77e](https://bitbucket.org/enturas/design-system/commits/f5ee77e9b3666816bda82b7e0deceaf27672f536))
|
|
13
|
+
|
|
14
|
+
### BREAKING CHANGES
|
|
15
|
+
|
|
16
|
+
- **native time picker:** disableLabelAnimation prop has been removed (is always true now)
|
|
17
|
+
- **timepicker:** This is a complete rewrite. Changes in the API will need to be accounted for when using this new
|
|
18
|
+
version
|
|
19
|
+
|
|
20
|
+
## [2.1.3](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.1.2...@entur/datepicker@2.1.3) (2022-08-31)
|
|
21
|
+
|
|
22
|
+
**Note:** Version bump only for package @entur/datepicker
|
|
23
|
+
|
|
24
|
+
## [2.1.2](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.1.1...@entur/datepicker@2.1.2) (2022-08-24)
|
|
25
|
+
|
|
26
|
+
**Note:** Version bump only for package @entur/datepicker
|
|
27
|
+
|
|
6
28
|
## [2.1.1](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.1.0...@entur/datepicker@2.1.1) (2022-08-12)
|
|
7
29
|
|
|
8
30
|
**Note:** Version bump only for package @entur/datepicker
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { VariantType } from '@entur/form';
|
|
3
|
+
import './NativeTimePicker.scss';
|
|
3
4
|
export declare type NativeTimePickerProps = {
|
|
4
5
|
/** Ekstra klassenavn */
|
|
5
6
|
className?: string;
|
|
@@ -9,13 +10,7 @@ export declare type NativeTimePickerProps = {
|
|
|
9
10
|
feedback?: string;
|
|
10
11
|
/** Valideringsvariant */
|
|
11
12
|
variant?: VariantType;
|
|
12
|
-
/**
|
|
13
|
-
* @default false
|
|
14
|
-
*/
|
|
15
|
-
disableLabelAnimation?: boolean;
|
|
16
|
-
/** Tekst eller ikon som kommer før inputfelter
|
|
17
|
-
* @default <ClockIcon />
|
|
18
|
-
*/
|
|
13
|
+
/** Tekst eller ikon som kommer før inputfelter */
|
|
19
14
|
prepend?: React.ReactNode;
|
|
20
15
|
} & React.InputHTMLAttributes<HTMLInputElement>;
|
|
21
16
|
export declare const NativeTimePicker: React.ForwardRefExoticComponent<{
|
|
@@ -27,12 +22,6 @@ export declare const NativeTimePicker: React.ForwardRefExoticComponent<{
|
|
|
27
22
|
feedback?: string | undefined;
|
|
28
23
|
/** Valideringsvariant */
|
|
29
24
|
variant?: VariantType | undefined;
|
|
30
|
-
/**
|
|
31
|
-
* @default false
|
|
32
|
-
*/
|
|
33
|
-
disableLabelAnimation?: boolean | undefined;
|
|
34
|
-
/** Tekst eller ikon som kommer før inputfelter
|
|
35
|
-
* @default <ClockIcon />
|
|
36
|
-
*/
|
|
25
|
+
/** Tekst eller ikon som kommer før inputfelter */
|
|
37
26
|
prepend?: React.ReactNode;
|
|
38
27
|
} & React.InputHTMLAttributes<HTMLInputElement> & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { TimePickerProps as ReactAriaTimePickerProps, TimeValue } from '@react-types/datepicker';
|
|
3
|
+
import { VariantType } from '@entur/form';
|
|
4
|
+
import './TimePicker.scss';
|
|
5
|
+
export declare type TimePickerProps = {
|
|
6
|
+
/** Den valgte tiden. Tid i '@internationalized/date'-pakkens format */
|
|
7
|
+
selectedTime?: TimeValue;
|
|
8
|
+
/** Kalles når tiden endres. Tid i '@internationalized/date'-pakkens format */
|
|
9
|
+
onChange: (value: TimeValue) => void;
|
|
10
|
+
/** Label til TimePicker */
|
|
11
|
+
label: string;
|
|
12
|
+
/** Minutter som legges til eller trekkes fra ved klikk på pilene i TimePicker
|
|
13
|
+
* @default 30
|
|
14
|
+
*/
|
|
15
|
+
minuteIncrementForArrowButtons?: number;
|
|
16
|
+
/** BCP47-språkkoden til locale-en du ønsker å bruke.
|
|
17
|
+
* @default Brukerenhetens selvvalgte locale
|
|
18
|
+
*/
|
|
19
|
+
locale?: string;
|
|
20
|
+
/** Viser den gjeldende tidssonen hvis en er valgt
|
|
21
|
+
* @default false
|
|
22
|
+
*/
|
|
23
|
+
showTimeZone?: boolean;
|
|
24
|
+
/** Varselmelding, som vil komme under TimePicker */
|
|
25
|
+
feedback?: string;
|
|
26
|
+
/** Valideringsvariant */
|
|
27
|
+
variant?: VariantType;
|
|
28
|
+
labelTooltip?: React.ReactNode;
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
/** Ekstra klassenavn */
|
|
31
|
+
className?: string;
|
|
32
|
+
style?: React.CSSProperties;
|
|
33
|
+
} & Omit<ReactAriaTimePickerProps<TimeValue>, 'onChange' | 'label' | 'hideTimeZone' | 'placeholder'>;
|
|
34
|
+
export declare const TimePicker: React.ForwardRefExoticComponent<{
|
|
35
|
+
/** Den valgte tiden. Tid i '@internationalized/date'-pakkens format */
|
|
36
|
+
selectedTime?: TimeValue | undefined;
|
|
37
|
+
/** Kalles når tiden endres. Tid i '@internationalized/date'-pakkens format */
|
|
38
|
+
onChange: (value: TimeValue) => void;
|
|
39
|
+
/** Label til TimePicker */
|
|
40
|
+
label: string;
|
|
41
|
+
/** Minutter som legges til eller trekkes fra ved klikk på pilene i TimePicker
|
|
42
|
+
* @default 30
|
|
43
|
+
*/
|
|
44
|
+
minuteIncrementForArrowButtons?: number | undefined;
|
|
45
|
+
/** BCP47-språkkoden til locale-en du ønsker å bruke.
|
|
46
|
+
* @default Brukerenhetens selvvalgte locale
|
|
47
|
+
*/
|
|
48
|
+
locale?: string | undefined;
|
|
49
|
+
/** Viser den gjeldende tidssonen hvis en er valgt
|
|
50
|
+
* @default false
|
|
51
|
+
*/
|
|
52
|
+
showTimeZone?: boolean | undefined;
|
|
53
|
+
/** Varselmelding, som vil komme under TimePicker */
|
|
54
|
+
feedback?: string | undefined;
|
|
55
|
+
/** Valideringsvariant */
|
|
56
|
+
variant?: VariantType | undefined;
|
|
57
|
+
labelTooltip?: React.ReactNode;
|
|
58
|
+
disabled?: boolean | undefined;
|
|
59
|
+
/** Ekstra klassenavn */
|
|
60
|
+
className?: string | undefined;
|
|
61
|
+
style?: React.CSSProperties | undefined;
|
|
62
|
+
} & Omit<ReactAriaTimePickerProps<TimeValue>, "onChange" | "label" | "hideTimeZone" | "placeholder"> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare type TimePickerArrowButtonProps = {
|
|
3
|
+
direction: 'left' | 'right';
|
|
4
|
+
} & React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>;
|
|
5
|
+
export declare const TimePickerArrowButton: React.FC<TimePickerArrowButtonProps>;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { DateSegment, DateFieldState } from '@react-stately/datepicker';
|
|
3
|
+
declare type TimeSegmentProps = {
|
|
4
|
+
segment: DateSegment;
|
|
5
|
+
state: DateFieldState;
|
|
6
|
+
isAmPm: boolean;
|
|
7
|
+
index: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const TimeSegment: ({ segment, state, isAmPm, index, }: TimeSegmentProps) => JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ZonedDateTime, CalendarDateTime, Time } from '@internationalized/date';
|
|
2
|
+
import { TimeValue } from '@react-types/datepicker';
|
|
3
|
+
/**
|
|
4
|
+
* Tar inn et JS Date-objekt og returnerer et av TimeValue-objektene fra @internationalized/date-pakken
|
|
5
|
+
* @param {Date} date JS Date-objekt som ønskes konvertert til et TimeValue-objekt
|
|
6
|
+
* @param {boolean} noDateOnlyTime Hvis datoen er irrelevant kan denne settes til true, da får man et Time-objekt uten dato tilbake
|
|
7
|
+
* @param {string} timeZone Tidssonen på IANA-formatet som tidpunktet skal konverteres til. Utelates denne får man et tidspunkt uten tidssone. Kan brukes med og uten en UTC-offset Vær obs på annen oppførsel med offset, les mer på beskrivelsen av offset
|
|
8
|
+
* @param {number} offset UTC-offset i millisekunder, må brukes med en tidssone. Ved å legge på en offset lager du en variant av en tidssone. Det betyr at tidspunktet ikke endres (time, minutt, sekund uendret), men tidssonen, med tilhørende offset, tidspunktet er i endres.
|
|
9
|
+
* @returns {Time | CalendarDateTime | ZonedDateTime} et av TimeValue-objektene med verdier fra date
|
|
10
|
+
*/
|
|
11
|
+
export declare const nativeDateToTimeValue: (date: Date, noDateOnlyTime?: boolean, timeZone?: string | undefined, offset?: number | undefined) => Time | CalendarDateTime | ZonedDateTime;
|
|
12
|
+
/**
|
|
13
|
+
* Tar inn et av TimeValue-objektene fra @internationalized/date-pakken og returnerer et JS Date-objekt
|
|
14
|
+
* @param {TimeValue} time Et tidspunkt på TimeValue-formatet som ønsket konvertert til et JS Date-objekt
|
|
15
|
+
* @param {string} timeZoneForCalendarDateTime Tidssonen time er i. Fungerer kun med typen er CalendarDateTime
|
|
16
|
+
* @returns {Date} et Date-objekt med verdier fra time
|
|
17
|
+
*/
|
|
18
|
+
export declare const timeValueToNativeDate: (time: TimeValue, timeZoneForCalendarDateTime?: string | undefined) => Date;
|
|
@@ -14,6 +14,10 @@ var button = require('@entur/button');
|
|
|
14
14
|
var form = require('@entur/form');
|
|
15
15
|
var tooltip = require('@entur/tooltip');
|
|
16
16
|
require('react-datepicker/dist/react-datepicker.css');
|
|
17
|
+
var datepicker = require('@react-aria/datepicker');
|
|
18
|
+
var i18n = require('@react-aria/i18n');
|
|
19
|
+
var datepicker$1 = require('@react-stately/datepicker');
|
|
20
|
+
var date = require('@internationalized/date');
|
|
17
21
|
|
|
18
22
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
19
23
|
|
|
@@ -54,44 +58,6 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
54
58
|
return target;
|
|
55
59
|
}
|
|
56
60
|
|
|
57
|
-
function _unsupportedIterableToArray(o, minLen) {
|
|
58
|
-
if (!o) return;
|
|
59
|
-
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
60
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
61
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
62
|
-
if (n === "Map" || n === "Set") return Array.from(o);
|
|
63
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
function _arrayLikeToArray(arr, len) {
|
|
67
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
68
|
-
|
|
69
|
-
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
70
|
-
|
|
71
|
-
return arr2;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
function _createForOfIteratorHelperLoose(o, allowArrayLike) {
|
|
75
|
-
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
76
|
-
if (it) return (it = it.call(o)).next.bind(it);
|
|
77
|
-
|
|
78
|
-
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
79
|
-
if (it) o = it;
|
|
80
|
-
var i = 0;
|
|
81
|
-
return function () {
|
|
82
|
-
if (i >= o.length) return {
|
|
83
|
-
done: true
|
|
84
|
-
};
|
|
85
|
-
return {
|
|
86
|
-
done: false,
|
|
87
|
-
value: o[i++]
|
|
88
|
-
};
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
93
|
-
}
|
|
94
|
-
|
|
95
61
|
var DatePickerHeader = function DatePickerHeader(_ref) {
|
|
96
62
|
var _date$getMonth;
|
|
97
63
|
|
|
@@ -217,7 +183,7 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
|
|
|
217
183
|
feedback: feedback,
|
|
218
184
|
variant: variant,
|
|
219
185
|
disableLabelAnimation: disableLabelAnimation,
|
|
220
|
-
ref: mergeRefs(ref, inputRef, forwardRef),
|
|
186
|
+
ref: utils.mergeRefs(ref, inputRef, forwardRef),
|
|
221
187
|
onClick: handleOnClickInputField,
|
|
222
188
|
ariaAlertOnFeedback: true,
|
|
223
189
|
append: !hideCalendarButton && React__default["default"].createElement(tooltip.Tooltip, {
|
|
@@ -235,22 +201,6 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
|
|
|
235
201
|
}, rest));
|
|
236
202
|
});
|
|
237
203
|
|
|
238
|
-
var mergeRefs = function mergeRefs() {
|
|
239
|
-
for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
240
|
-
refs[_key] = arguments[_key];
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
return function (node) {
|
|
244
|
-
for (var _iterator = _createForOfIteratorHelperLoose(refs), _step; !(_step = _iterator()).done;) {
|
|
245
|
-
var ref = _step.value;
|
|
246
|
-
|
|
247
|
-
if (typeof ref === 'function') {
|
|
248
|
-
ref(node);
|
|
249
|
-
} else if (ref) ref.current = node;
|
|
250
|
-
}
|
|
251
|
-
};
|
|
252
|
-
};
|
|
253
|
-
|
|
254
204
|
var _excluded$3 = ["style", "className", "selectedDate", "label", "placeholder", "onChange", "onKeyDown", "dateFormats", "minDate", "maxDate", "inline", "disabled", "prepend", "feedback", "variant", "validationFeedback", "validationVariant", "disableLabelAnimation", "calendarButtonTooltipOpen", "calendarButtonTooltipClose", "hideCalendarButton", "hideCalendar", "hideValidation", "weekLabel", "chooseDayAriaLabelPrefix", "previousMonthAriaLabel", "nextMonthAriaLabel", "locale", "open"];
|
|
255
205
|
ReactDatepicker.registerLocale('nb', locale.nb);
|
|
256
206
|
var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
@@ -536,7 +486,7 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
|
|
|
536
486
|
});
|
|
537
487
|
|
|
538
488
|
var _excluded$2 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],
|
|
539
|
-
_excluded2$
|
|
489
|
+
_excluded2$1 = ["onChange", "variant", "value"];
|
|
540
490
|
var NativeDatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
541
491
|
var className = _ref.className,
|
|
542
492
|
style = _ref.style,
|
|
@@ -573,7 +523,7 @@ var NativeDatePickerBase = /*#__PURE__*/React__default["default"].forwardRef(fun
|
|
|
573
523
|
var onChange = _ref2.onChange,
|
|
574
524
|
variant = _ref2.variant,
|
|
575
525
|
value = _ref2.value,
|
|
576
|
-
rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$
|
|
526
|
+
rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
|
|
577
527
|
|
|
578
528
|
var contextVariant = form.useVariant();
|
|
579
529
|
var currentVariant = variant || contextVariant;
|
|
@@ -615,16 +565,47 @@ var NativeDatePickerBase = /*#__PURE__*/React__default["default"].forwardRef(fun
|
|
|
615
565
|
}, rest));
|
|
616
566
|
});
|
|
617
567
|
|
|
618
|
-
var
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
568
|
+
var TimeSegment = function TimeSegment(_ref) {
|
|
569
|
+
var segment = _ref.segment,
|
|
570
|
+
state = _ref.state,
|
|
571
|
+
isAmPm = _ref.isAmPm,
|
|
572
|
+
index = _ref.index;
|
|
573
|
+
var ref = React.useRef(null);
|
|
574
|
+
|
|
575
|
+
var _useDateSegment = datepicker.useDateSegment(segment, state, ref),
|
|
576
|
+
segmentProps = _useDateSegment.segmentProps;
|
|
577
|
+
|
|
578
|
+
var segmentDisplayText = function segmentDisplayText() {
|
|
579
|
+
if (isAmPm) return segment.text;
|
|
580
|
+
if (index === 0 && segment.text.length === 1) return '0' + segment.text;
|
|
581
|
+
return segment.text;
|
|
582
|
+
};
|
|
583
|
+
|
|
584
|
+
return React__default["default"].createElement("div", _extends({}, segmentProps, {
|
|
585
|
+
ref: ref,
|
|
586
|
+
className: "eds-timepicker__segment " + (segment.isPlaceholder ? 'eds-timepicker__segment--placeholder' : '')
|
|
587
|
+
}), segmentDisplayText());
|
|
588
|
+
};
|
|
589
|
+
|
|
590
|
+
var TimePickerArrowButton = function TimePickerArrowButton(_ref) {
|
|
591
|
+
var direction = _ref.direction,
|
|
592
|
+
onClick = _ref.onClick,
|
|
593
|
+
disabled = _ref.disabled,
|
|
594
|
+
ariaLabel = _ref['aria-label'];
|
|
595
|
+
return React__default["default"].createElement(button.IconButton, {
|
|
596
|
+
className: classNames__default["default"]('eds-timepicker__arrowbutton', "eds-timepicker__arrowbutton--" + direction),
|
|
597
|
+
type: "button",
|
|
598
|
+
tabIndex: -1,
|
|
599
|
+
onClick: onClick,
|
|
600
|
+
disabled: disabled,
|
|
601
|
+
"aria-label": ariaLabel
|
|
602
|
+
}, direction === 'left' ? React__default["default"].createElement(icons.LeftArrowIcon, null) : React__default["default"].createElement(icons.RightArrowIcon, null));
|
|
603
|
+
};
|
|
604
|
+
|
|
605
|
+
var _excluded$1 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "variant", "locale", "showTimeZone", "minuteIncrementForArrowButtons", "children"];
|
|
622
606
|
var TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
623
|
-
var
|
|
624
|
-
selectedTime = _ref$selectedTime === void 0 ? null : _ref$selectedTime,
|
|
607
|
+
var selectedTime = _ref.selectedTime,
|
|
625
608
|
onChange = _ref.onChange,
|
|
626
|
-
_ref$placeholder = _ref.placeholder,
|
|
627
|
-
placeholder = _ref$placeholder === void 0 ? 'Velg tid' : _ref$placeholder,
|
|
628
609
|
disabled = _ref.disabled,
|
|
629
610
|
className = _ref.className,
|
|
630
611
|
style = _ref.style,
|
|
@@ -632,137 +613,83 @@ var TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
|
|
|
632
613
|
labelTooltip = _ref.labelTooltip,
|
|
633
614
|
feedback = _ref.feedback,
|
|
634
615
|
variant = _ref.variant,
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
_ref$
|
|
639
|
-
onLeftArrowClick = _ref$onLeftArrowClick === void 0 ? function (selectedTime, event) {
|
|
640
|
-
return selectedTime && onChange(dateFns.sub(selectedTime, {
|
|
641
|
-
minutes: 30
|
|
642
|
-
}), event);
|
|
643
|
-
} : _ref$onLeftArrowClick,
|
|
644
|
-
_ref$onRightArrowClic = _ref.onRightArrowClick,
|
|
645
|
-
onRightArrowClick = _ref$onRightArrowClic === void 0 ? function (selectedTime, event) {
|
|
646
|
-
return selectedTime && onChange(dateFns.add(selectedTime, {
|
|
647
|
-
minutes: 30
|
|
648
|
-
}), event);
|
|
649
|
-
} : _ref$onRightArrowClic,
|
|
616
|
+
customLocale = _ref.locale,
|
|
617
|
+
showTimeZone = _ref.showTimeZone,
|
|
618
|
+
_ref$minuteIncrementF = _ref.minuteIncrementForArrowButtons,
|
|
619
|
+
minuteIncrementForArrowButtons = _ref$minuteIncrementF === void 0 ? 30 : _ref$minuteIncrementF,
|
|
650
620
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
651
621
|
|
|
652
|
-
var
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
labelId: timepickerId,
|
|
658
|
-
labelTooltip: labelTooltip,
|
|
659
|
-
variant: variant,
|
|
660
|
-
feedback: feedback,
|
|
661
|
-
disableLabelAnimation: disableLabelAnimation,
|
|
662
|
-
className: "eds-timepicker-form-control",
|
|
663
|
-
disabled: disabled,
|
|
664
|
-
prepend: React__default["default"].createElement(TimePickerArrowButton, {
|
|
665
|
-
direction: "left",
|
|
666
|
-
tabIndex: -1,
|
|
667
|
-
onClick: function onClick(e) {
|
|
668
|
-
return onLeftArrowClick(selectedTime, e);
|
|
669
|
-
},
|
|
670
|
-
disabled: disabled
|
|
671
|
-
})
|
|
672
|
-
}, React__default["default"].createElement(TimePickerBase, _extends({
|
|
673
|
-
selectedTime: selectedTime,
|
|
622
|
+
var _useLocale = i18n.useLocale(),
|
|
623
|
+
locale = _useLocale.locale;
|
|
624
|
+
|
|
625
|
+
if (customLocale) locale = customLocale;
|
|
626
|
+
var state = datepicker$1.useTimeFieldState(_extends({
|
|
674
627
|
onChange: onChange,
|
|
675
|
-
|
|
676
|
-
className: className,
|
|
628
|
+
label: label,
|
|
677
629
|
locale: locale,
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
}, rest))
|
|
681
|
-
|
|
682
|
-
tabIndex: -1,
|
|
683
|
-
onClick: function onClick(e) {
|
|
684
|
-
return onRightArrowClick(selectedTime, e);
|
|
685
|
-
},
|
|
686
|
-
disabled: disabled
|
|
687
|
-
}));
|
|
688
|
-
});
|
|
689
|
-
var POPPER_MODIFIERS = [{
|
|
690
|
-
name: 'offset',
|
|
691
|
-
enabled: true,
|
|
692
|
-
options: {
|
|
693
|
-
offset: [0, 0]
|
|
694
|
-
}
|
|
695
|
-
}];
|
|
696
|
-
|
|
697
|
-
var TimePickerBase = function TimePickerBase(_ref2) {
|
|
698
|
-
var className = _ref2.className,
|
|
699
|
-
onChange = _ref2.onChange,
|
|
700
|
-
selectedTime = _ref2.selectedTime,
|
|
701
|
-
placeholder = _ref2.placeholder,
|
|
702
|
-
_ref2$timeFormat = _ref2.timeFormat,
|
|
703
|
-
timeFormat = _ref2$timeFormat === void 0 ? 'HH:mm' : _ref2$timeFormat,
|
|
704
|
-
_ref2$dateFormat = _ref2.dateFormat,
|
|
705
|
-
dateFormat = _ref2$dateFormat === void 0 ? ['HH:mm', 'HHmm'] : _ref2$dateFormat,
|
|
706
|
-
rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
|
|
707
|
-
|
|
708
|
-
var _useInputGroupContext = form.useInputGroupContext(),
|
|
709
|
-
isTimepickerFilled = _useInputGroupContext.isFilled,
|
|
710
|
-
setFiller = _useInputGroupContext.setFilled;
|
|
630
|
+
value: selectedTime,
|
|
631
|
+
hideTimeZone: !showTimeZone
|
|
632
|
+
}, rest));
|
|
633
|
+
var timeFieldRef = React.useRef(null);
|
|
711
634
|
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
}
|
|
716
|
-
});
|
|
717
|
-
React__default["default"].useEffect(function () {
|
|
718
|
-
if (selectedTime) {
|
|
719
|
-
setFiller && !isTimepickerFilled && setFiller(true);
|
|
720
|
-
} else {
|
|
721
|
-
setFiller && isTimepickerFilled && setFiller(false);
|
|
722
|
-
}
|
|
723
|
-
}, [selectedTime, setFiller, isTimepickerFilled]);
|
|
635
|
+
var _useTimeField = datepicker.useTimeField(rest, state, timeFieldRef),
|
|
636
|
+
labelProps = _useTimeField.labelProps,
|
|
637
|
+
fieldProps = _useTimeField.fieldProps;
|
|
724
638
|
|
|
725
|
-
var
|
|
726
|
-
if (date) {
|
|
727
|
-
setFiller && !isTimepickerFilled && setFiller(true);
|
|
728
|
-
} else {
|
|
729
|
-
setFiller && isTimepickerFilled && setFiller(false);
|
|
730
|
-
}
|
|
639
|
+
var id = utils.useRandomId('timepicker');
|
|
731
640
|
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
641
|
+
var addMinutesToSelectedTime = function addMinutesToSelectedTime(minutes) {
|
|
642
|
+
state.value && state.setValue(state.value && state.value.add({
|
|
643
|
+
minutes: minutes
|
|
644
|
+
}));
|
|
735
645
|
};
|
|
736
646
|
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
},
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
647
|
+
var isAmPm = state.segments.some(function (segment) {
|
|
648
|
+
return segment.text === 'AM' || segment.text === 'PM';
|
|
649
|
+
});
|
|
650
|
+
return React__default["default"].createElement(i18n.I18nProvider, {
|
|
651
|
+
locale: locale
|
|
652
|
+
}, React__default["default"].createElement("div", {
|
|
653
|
+
className: classNames__default["default"](className, 'eds-timepicker__wrapper'),
|
|
654
|
+
style: style
|
|
655
|
+
}, React__default["default"].createElement(TimePickerArrowButton, {
|
|
656
|
+
direction: "left",
|
|
657
|
+
disabled: disabled,
|
|
658
|
+
"aria-label": "Trekk fra " + minuteIncrementForArrowButtons + " minutter",
|
|
659
|
+
onClick: function onClick() {
|
|
660
|
+
return addMinutesToSelectedTime(minuteIncrementForArrowButtons * -1);
|
|
661
|
+
}
|
|
662
|
+
}), React__default["default"].createElement(form.BaseFormControl, _extends({
|
|
663
|
+
className: 'eds-timepicker',
|
|
664
|
+
labelId: id,
|
|
665
|
+
label: label,
|
|
666
|
+
labelProps: _extends({}, labelProps),
|
|
667
|
+
ref: utils.mergeRefs(timeFieldRef, ref),
|
|
668
|
+
disabled: disabled,
|
|
669
|
+
disableLabelAnimation: true,
|
|
670
|
+
labelTooltip: labelTooltip
|
|
671
|
+
}, fieldProps, {
|
|
672
|
+
variant: variant,
|
|
673
|
+
feedback: feedback
|
|
674
|
+
}), state.segments.map(function (segment, i) {
|
|
675
|
+
return React__default["default"].createElement(TimeSegment, {
|
|
676
|
+
segment: segment,
|
|
677
|
+
state: state,
|
|
678
|
+
isAmPm: isAmPm,
|
|
679
|
+
index: i,
|
|
680
|
+
key: i
|
|
681
|
+
});
|
|
682
|
+
})), React__default["default"].createElement(TimePickerArrowButton, {
|
|
683
|
+
direction: "right",
|
|
684
|
+
disabled: disabled,
|
|
685
|
+
"aria-label": "Legg til " + minuteIncrementForArrowButtons + " minutter",
|
|
686
|
+
onClick: function onClick() {
|
|
687
|
+
return addMinutesToSelectedTime(minuteIncrementForArrowButtons);
|
|
688
|
+
}
|
|
689
|
+
})));
|
|
690
|
+
});
|
|
764
691
|
|
|
765
|
-
var _excluded = ["className", "style", "onChange", "label", "feedback", "variant", "
|
|
692
|
+
var _excluded = ["className", "style", "onChange", "label", "feedback", "variant", "prepend"],
|
|
766
693
|
_excluded2 = ["onChange", "value"];
|
|
767
694
|
var NativeTimePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
768
695
|
var className = _ref.className,
|
|
@@ -771,21 +698,19 @@ var NativeTimePicker = /*#__PURE__*/React__default["default"].forwardRef(functio
|
|
|
771
698
|
label = _ref.label,
|
|
772
699
|
feedback = _ref.feedback,
|
|
773
700
|
variant = _ref.variant,
|
|
774
|
-
|
|
775
|
-
_ref$prepend = _ref.prepend,
|
|
776
|
-
prepend = _ref$prepend === void 0 ? React__default["default"].createElement(icons.ClockIcon, null) : _ref$prepend,
|
|
701
|
+
prepend = _ref.prepend,
|
|
777
702
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
778
703
|
|
|
779
|
-
var nativetimepickerId = utils.useRandomId('eds-
|
|
704
|
+
var nativetimepickerId = utils.useRandomId('eds-native-timepicker');
|
|
780
705
|
return React__default["default"].createElement(form.BaseFormControl, {
|
|
781
706
|
style: style,
|
|
782
|
-
className: className,
|
|
707
|
+
className: classNames__default["default"](className, 'eds-native-timepicker'),
|
|
783
708
|
prepend: prepend,
|
|
784
709
|
label: label,
|
|
785
710
|
feedback: feedback,
|
|
786
711
|
variant: variant,
|
|
787
712
|
labelId: nativetimepickerId,
|
|
788
|
-
disableLabelAnimation:
|
|
713
|
+
disableLabelAnimation: true
|
|
789
714
|
}, React__default["default"].createElement(NativeTimePickerBase, _extends({
|
|
790
715
|
onChange: onChange,
|
|
791
716
|
"aria-labelledby": nativetimepickerId,
|
|
@@ -831,16 +756,77 @@ var NativeTimePickerBase = /*#__PURE__*/React__default["default"].forwardRef(fun
|
|
|
831
756
|
ref: ref,
|
|
832
757
|
"aria-invalid": currentVariant === 'error',
|
|
833
758
|
type: "time",
|
|
834
|
-
className: "eds-form-control
|
|
759
|
+
className: "eds-form-control",
|
|
835
760
|
onChange: handleChange,
|
|
836
761
|
value: value
|
|
837
762
|
}, rest));
|
|
838
763
|
});
|
|
839
764
|
|
|
765
|
+
/**
|
|
766
|
+
* Tar inn et JS Date-objekt og returnerer et av TimeValue-objektene fra @internationalized/date-pakken
|
|
767
|
+
* @param {Date} date JS Date-objekt som ønskes konvertert til et TimeValue-objekt
|
|
768
|
+
* @param {boolean} noDateOnlyTime Hvis datoen er irrelevant kan denne settes til true, da får man et Time-objekt uten dato tilbake
|
|
769
|
+
* @param {string} timeZone Tidssonen på IANA-formatet som tidpunktet skal konverteres til. Utelates denne får man et tidspunkt uten tidssone. Kan brukes med og uten en UTC-offset Vær obs på annen oppførsel med offset, les mer på beskrivelsen av offset
|
|
770
|
+
* @param {number} offset UTC-offset i millisekunder, må brukes med en tidssone. Ved å legge på en offset lager du en variant av en tidssone. Det betyr at tidspunktet ikke endres (time, minutt, sekund uendret), men tidssonen, med tilhørende offset, tidspunktet er i endres.
|
|
771
|
+
* @returns {Time | CalendarDateTime | ZonedDateTime} et av TimeValue-objektene med verdier fra date
|
|
772
|
+
*/
|
|
773
|
+
|
|
774
|
+
var nativeDateToTimeValue = function nativeDateToTimeValue(date$1, noDateOnlyTime, timeZone, offset) {
|
|
775
|
+
if (noDateOnlyTime === void 0) {
|
|
776
|
+
noDateOnlyTime = false;
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
if (timeZone) {
|
|
780
|
+
if (offset) {
|
|
781
|
+
return new date.ZonedDateTime(date$1.getFullYear(), date$1.getMonth() + 1, date$1.getDate(), timeZone, offset, date$1.getHours(), date$1.getMinutes(), date$1.getSeconds());
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
return date.parseAbsolute(date$1.toISOString(), timeZone);
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
if (noDateOnlyTime) return new date.Time(date$1.getHours(), date$1.getMinutes(), date$1.getSeconds(), 0);
|
|
788
|
+
return new date.CalendarDateTime(date$1.getFullYear(), date$1.getMonth() + 1, date$1.getDate(), date$1.getHours(), date$1.getMinutes(), date$1.getSeconds());
|
|
789
|
+
};
|
|
790
|
+
/**
|
|
791
|
+
* Tar inn et av TimeValue-objektene fra @internationalized/date-pakken og returnerer et JS Date-objekt
|
|
792
|
+
* @param {TimeValue} time Et tidspunkt på TimeValue-formatet som ønsket konvertert til et JS Date-objekt
|
|
793
|
+
* @param {string} timeZoneForCalendarDateTime Tidssonen time er i. Fungerer kun med typen er CalendarDateTime
|
|
794
|
+
* @returns {Date} et Date-objekt med verdier fra time
|
|
795
|
+
*/
|
|
796
|
+
// This function uses a lot of @ts-expect-error to make it work with all TimeValue types. Sorry ...
|
|
797
|
+
|
|
798
|
+
var timeValueToNativeDate = function timeValueToNativeDate(time, timeZoneForCalendarDateTime) {
|
|
799
|
+
// @ts-expect-error .day does not exist on Time-object
|
|
800
|
+
if (!time.day) {
|
|
801
|
+
// type is Time
|
|
802
|
+
var date = new Date();
|
|
803
|
+
date.setHours(time.hour);
|
|
804
|
+
date.setMinutes(time.minute);
|
|
805
|
+
date.setSeconds(time.second);
|
|
806
|
+
return date;
|
|
807
|
+
} // @ts-expect-error .timeZone does not exist in type Time and CalendarDateTime
|
|
808
|
+
|
|
809
|
+
|
|
810
|
+
if (!time.timeZone) {
|
|
811
|
+
// type is CalendarDateTime
|
|
812
|
+
if (timeZoneForCalendarDateTime) // @ts-expect-error .toDate(timeZone) does not exist in type Time
|
|
813
|
+
return time.toDate(timeZoneForCalendarDateTime);
|
|
814
|
+
return new Date( // @ts-expect-error not in type Time
|
|
815
|
+
time.year, // @ts-expect-error not in type Time
|
|
816
|
+
time.month - 1, // @ts-expect-error not in type Time
|
|
817
|
+
time.day, time.hour, time.minute, time.second);
|
|
818
|
+
} // @ts-expect-error .toDate() does not exist in type Time or CalendarDateTime
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
return time.toDate();
|
|
822
|
+
};
|
|
823
|
+
|
|
840
824
|
utils.warnAboutMissingStyles('datepicker', 'form', 'icons');
|
|
841
825
|
|
|
842
826
|
exports.DatePicker = DatePicker;
|
|
843
827
|
exports.NativeDatePicker = NativeDatePicker;
|
|
844
828
|
exports.NativeTimePicker = NativeTimePicker;
|
|
845
829
|
exports.TimePicker = TimePicker;
|
|
830
|
+
exports.nativeDateToTimeValue = nativeDateToTimeValue;
|
|
831
|
+
exports.timeValueToNativeDate = timeValueToNativeDate;
|
|
846
832
|
//# sourceMappingURL=datepicker.cjs.development.js.map
|