@entur/datepicker 2.1.3 → 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 +14 -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 +178 -138
- 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 +179 -141
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/styles.css +59 -93
- package/package.json +7 -2
- package/dist/TimePicker.d.ts +0 -68
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,20 @@
|
|
|
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
|
+
|
|
6
20
|
## [2.1.3](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.1.2...@entur/datepicker@2.1.3) (2022-08-31)
|
|
7
21
|
|
|
8
22
|
**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
|
|
|
@@ -482,7 +486,7 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
|
|
|
482
486
|
});
|
|
483
487
|
|
|
484
488
|
var _excluded$2 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],
|
|
485
|
-
_excluded2$
|
|
489
|
+
_excluded2$1 = ["onChange", "variant", "value"];
|
|
486
490
|
var NativeDatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
487
491
|
var className = _ref.className,
|
|
488
492
|
style = _ref.style,
|
|
@@ -519,7 +523,7 @@ var NativeDatePickerBase = /*#__PURE__*/React__default["default"].forwardRef(fun
|
|
|
519
523
|
var onChange = _ref2.onChange,
|
|
520
524
|
variant = _ref2.variant,
|
|
521
525
|
value = _ref2.value,
|
|
522
|
-
rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$
|
|
526
|
+
rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
|
|
523
527
|
|
|
524
528
|
var contextVariant = form.useVariant();
|
|
525
529
|
var currentVariant = variant || contextVariant;
|
|
@@ -561,16 +565,47 @@ var NativeDatePickerBase = /*#__PURE__*/React__default["default"].forwardRef(fun
|
|
|
561
565
|
}, rest));
|
|
562
566
|
});
|
|
563
567
|
|
|
564
|
-
var
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
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"];
|
|
568
606
|
var TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
569
|
-
var
|
|
570
|
-
selectedTime = _ref$selectedTime === void 0 ? null : _ref$selectedTime,
|
|
607
|
+
var selectedTime = _ref.selectedTime,
|
|
571
608
|
onChange = _ref.onChange,
|
|
572
|
-
_ref$placeholder = _ref.placeholder,
|
|
573
|
-
placeholder = _ref$placeholder === void 0 ? 'Velg tid' : _ref$placeholder,
|
|
574
609
|
disabled = _ref.disabled,
|
|
575
610
|
className = _ref.className,
|
|
576
611
|
style = _ref.style,
|
|
@@ -578,137 +613,83 @@ var TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
|
|
|
578
613
|
labelTooltip = _ref.labelTooltip,
|
|
579
614
|
feedback = _ref.feedback,
|
|
580
615
|
variant = _ref.variant,
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
_ref$
|
|
585
|
-
onLeftArrowClick = _ref$onLeftArrowClick === void 0 ? function (selectedTime, event) {
|
|
586
|
-
return selectedTime && onChange(dateFns.sub(selectedTime, {
|
|
587
|
-
minutes: 30
|
|
588
|
-
}), event);
|
|
589
|
-
} : _ref$onLeftArrowClick,
|
|
590
|
-
_ref$onRightArrowClic = _ref.onRightArrowClick,
|
|
591
|
-
onRightArrowClick = _ref$onRightArrowClic === void 0 ? function (selectedTime, event) {
|
|
592
|
-
return selectedTime && onChange(dateFns.add(selectedTime, {
|
|
593
|
-
minutes: 30
|
|
594
|
-
}), event);
|
|
595
|
-
} : _ref$onRightArrowClic,
|
|
616
|
+
customLocale = _ref.locale,
|
|
617
|
+
showTimeZone = _ref.showTimeZone,
|
|
618
|
+
_ref$minuteIncrementF = _ref.minuteIncrementForArrowButtons,
|
|
619
|
+
minuteIncrementForArrowButtons = _ref$minuteIncrementF === void 0 ? 30 : _ref$minuteIncrementF,
|
|
596
620
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
597
621
|
|
|
598
|
-
var
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
labelId: timepickerId,
|
|
604
|
-
labelTooltip: labelTooltip,
|
|
605
|
-
variant: variant,
|
|
606
|
-
feedback: feedback,
|
|
607
|
-
disableLabelAnimation: disableLabelAnimation,
|
|
608
|
-
className: "eds-timepicker-form-control",
|
|
609
|
-
disabled: disabled,
|
|
610
|
-
prepend: React__default["default"].createElement(TimePickerArrowButton, {
|
|
611
|
-
direction: "left",
|
|
612
|
-
tabIndex: -1,
|
|
613
|
-
onClick: function onClick(e) {
|
|
614
|
-
return onLeftArrowClick(selectedTime, e);
|
|
615
|
-
},
|
|
616
|
-
disabled: disabled
|
|
617
|
-
})
|
|
618
|
-
}, React__default["default"].createElement(TimePickerBase, _extends({
|
|
619
|
-
selectedTime: selectedTime,
|
|
622
|
+
var _useLocale = i18n.useLocale(),
|
|
623
|
+
locale = _useLocale.locale;
|
|
624
|
+
|
|
625
|
+
if (customLocale) locale = customLocale;
|
|
626
|
+
var state = datepicker$1.useTimeFieldState(_extends({
|
|
620
627
|
onChange: onChange,
|
|
621
|
-
|
|
622
|
-
className: className,
|
|
628
|
+
label: label,
|
|
623
629
|
locale: locale,
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
}, rest))
|
|
627
|
-
|
|
628
|
-
tabIndex: -1,
|
|
629
|
-
onClick: function onClick(e) {
|
|
630
|
-
return onRightArrowClick(selectedTime, e);
|
|
631
|
-
},
|
|
632
|
-
disabled: disabled
|
|
633
|
-
}));
|
|
634
|
-
});
|
|
635
|
-
var POPPER_MODIFIERS = [{
|
|
636
|
-
name: 'offset',
|
|
637
|
-
enabled: true,
|
|
638
|
-
options: {
|
|
639
|
-
offset: [0, 0]
|
|
640
|
-
}
|
|
641
|
-
}];
|
|
642
|
-
|
|
643
|
-
var TimePickerBase = function TimePickerBase(_ref2) {
|
|
644
|
-
var className = _ref2.className,
|
|
645
|
-
onChange = _ref2.onChange,
|
|
646
|
-
selectedTime = _ref2.selectedTime,
|
|
647
|
-
placeholder = _ref2.placeholder,
|
|
648
|
-
_ref2$timeFormat = _ref2.timeFormat,
|
|
649
|
-
timeFormat = _ref2$timeFormat === void 0 ? 'HH:mm' : _ref2$timeFormat,
|
|
650
|
-
_ref2$dateFormat = _ref2.dateFormat,
|
|
651
|
-
dateFormat = _ref2$dateFormat === void 0 ? ['HH:mm', 'HHmm'] : _ref2$dateFormat,
|
|
652
|
-
rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
|
|
630
|
+
value: selectedTime,
|
|
631
|
+
hideTimeZone: !showTimeZone
|
|
632
|
+
}, rest));
|
|
633
|
+
var timeFieldRef = React.useRef(null);
|
|
653
634
|
|
|
654
|
-
var
|
|
655
|
-
|
|
656
|
-
|
|
635
|
+
var _useTimeField = datepicker.useTimeField(rest, state, timeFieldRef),
|
|
636
|
+
labelProps = _useTimeField.labelProps,
|
|
637
|
+
fieldProps = _useTimeField.fieldProps;
|
|
657
638
|
|
|
658
|
-
utils.
|
|
659
|
-
if (selectedTime) {
|
|
660
|
-
setFiller && !isTimepickerFilled && setFiller(true);
|
|
661
|
-
}
|
|
662
|
-
});
|
|
663
|
-
React__default["default"].useEffect(function () {
|
|
664
|
-
if (selectedTime) {
|
|
665
|
-
setFiller && !isTimepickerFilled && setFiller(true);
|
|
666
|
-
} else {
|
|
667
|
-
setFiller && isTimepickerFilled && setFiller(false);
|
|
668
|
-
}
|
|
669
|
-
}, [selectedTime, setFiller, isTimepickerFilled]);
|
|
670
|
-
|
|
671
|
-
var handleChange = function handleChange(date, event) {
|
|
672
|
-
if (date) {
|
|
673
|
-
setFiller && !isTimepickerFilled && setFiller(true);
|
|
674
|
-
} else {
|
|
675
|
-
setFiller && isTimepickerFilled && setFiller(false);
|
|
676
|
-
}
|
|
639
|
+
var id = utils.useRandomId('timepicker');
|
|
677
640
|
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
641
|
+
var addMinutesToSelectedTime = function addMinutesToSelectedTime(minutes) {
|
|
642
|
+
state.value && state.setValue(state.value && state.value.add({
|
|
643
|
+
minutes: minutes
|
|
644
|
+
}));
|
|
681
645
|
};
|
|
682
646
|
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
},
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
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
|
+
});
|
|
710
691
|
|
|
711
|
-
var _excluded = ["className", "style", "onChange", "label", "feedback", "variant", "
|
|
692
|
+
var _excluded = ["className", "style", "onChange", "label", "feedback", "variant", "prepend"],
|
|
712
693
|
_excluded2 = ["onChange", "value"];
|
|
713
694
|
var NativeTimePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
714
695
|
var className = _ref.className,
|
|
@@ -717,21 +698,19 @@ var NativeTimePicker = /*#__PURE__*/React__default["default"].forwardRef(functio
|
|
|
717
698
|
label = _ref.label,
|
|
718
699
|
feedback = _ref.feedback,
|
|
719
700
|
variant = _ref.variant,
|
|
720
|
-
|
|
721
|
-
_ref$prepend = _ref.prepend,
|
|
722
|
-
prepend = _ref$prepend === void 0 ? React__default["default"].createElement(icons.ClockIcon, null) : _ref$prepend,
|
|
701
|
+
prepend = _ref.prepend,
|
|
723
702
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
724
703
|
|
|
725
|
-
var nativetimepickerId = utils.useRandomId('eds-
|
|
704
|
+
var nativetimepickerId = utils.useRandomId('eds-native-timepicker');
|
|
726
705
|
return React__default["default"].createElement(form.BaseFormControl, {
|
|
727
706
|
style: style,
|
|
728
|
-
className: className,
|
|
707
|
+
className: classNames__default["default"](className, 'eds-native-timepicker'),
|
|
729
708
|
prepend: prepend,
|
|
730
709
|
label: label,
|
|
731
710
|
feedback: feedback,
|
|
732
711
|
variant: variant,
|
|
733
712
|
labelId: nativetimepickerId,
|
|
734
|
-
disableLabelAnimation:
|
|
713
|
+
disableLabelAnimation: true
|
|
735
714
|
}, React__default["default"].createElement(NativeTimePickerBase, _extends({
|
|
736
715
|
onChange: onChange,
|
|
737
716
|
"aria-labelledby": nativetimepickerId,
|
|
@@ -777,16 +756,77 @@ var NativeTimePickerBase = /*#__PURE__*/React__default["default"].forwardRef(fun
|
|
|
777
756
|
ref: ref,
|
|
778
757
|
"aria-invalid": currentVariant === 'error',
|
|
779
758
|
type: "time",
|
|
780
|
-
className: "eds-form-control
|
|
759
|
+
className: "eds-form-control",
|
|
781
760
|
onChange: handleChange,
|
|
782
761
|
value: value
|
|
783
762
|
}, rest));
|
|
784
763
|
});
|
|
785
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
|
+
|
|
786
824
|
utils.warnAboutMissingStyles('datepicker', 'form', 'icons');
|
|
787
825
|
|
|
788
826
|
exports.DatePicker = DatePicker;
|
|
789
827
|
exports.NativeDatePicker = NativeDatePicker;
|
|
790
828
|
exports.NativeTimePicker = NativeTimePicker;
|
|
791
829
|
exports.TimePicker = TimePicker;
|
|
830
|
+
exports.nativeDateToTimeValue = nativeDateToTimeValue;
|
|
831
|
+
exports.timeValueToNativeDate = timeValueToNativeDate;
|
|
792
832
|
//# sourceMappingURL=datepicker.cjs.development.js.map
|