@entur/datepicker 9.4.12 → 10.0.0-beta.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.
@@ -1,4 +1,4 @@
1
- import { useRandomId, ConditionalWrapper, mergeRefs, useWindowDimensions, useOnClickOutside, useOnEscape, useOnMount, warnAboutMissingStyles } from '@entur/utils';
1
+ import { useRandomId, ConditionalWrapper, useWindowDimensions, useOnClickOutside, useOnEscape, useOnMount, mergeRefs, warnAboutMissingStyles } from '@entur/utils';
2
2
  import React, { useRef, useState, useEffect } from 'react';
3
3
  import { useDateFieldState, useDatePickerState, useTimeFieldState } from '@react-stately/datepicker';
4
4
  import { useDateSegment, useDateField, useDatePicker, useTimeField } from '@react-aria/datepicker';
@@ -211,8 +211,8 @@ function getWeekNumberForDate(date) {
211
211
  return weekNumber;
212
212
  }
213
213
 
214
- var _excluded$a = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "append"];
215
- var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
214
+ var _excluded$a = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "fieldProps", "groupProps", "append", "prepend", "dateFieldRef"];
215
+ var DateField = function DateField(_ref) {
216
216
  var selectedDate = _ref.selectedDate,
217
217
  onChange = _ref.onChange,
218
218
  label = _ref.label,
@@ -235,7 +235,11 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
235
235
  style = _ref.style,
236
236
  className = _ref.className,
237
237
  parentLabelProps = _ref.labelProps,
238
+ parentFieldProps = _ref.fieldProps,
239
+ parentGroupProps = _ref.groupProps,
238
240
  append = _ref.append,
241
+ prepend = _ref.prepend,
242
+ ref = _ref.dateFieldRef,
239
243
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
240
244
  var _useLocale = useLocale(),
241
245
  locale = _useLocale.locale;
@@ -243,6 +247,7 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
243
247
  locale: customLocale != null ? customLocale : locale,
244
248
  createCalendar: createCalendar,
245
249
  value: selectedDate,
250
+ //@ts-expect-error incorrect type in package
246
251
  onChange: onChange,
247
252
  hideTimeZone: !showTimeZone,
248
253
  granularity: showTime ? 'minute' : granularity,
@@ -253,7 +258,7 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
253
258
  shouldForceLeadingZeros: true
254
259
  }));
255
260
  var dateFieldRef = useRef(null);
256
- var _useDateField = useDateField(_extends({}, rest, {
261
+ var _useDateField = useDateField(_extends({}, parentFieldProps, rest, {
257
262
  label: label
258
263
  }), state, dateFieldRef),
259
264
  labelProps = _useDateField.labelProps,
@@ -267,28 +272,36 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
267
272
  }, child);
268
273
  }
269
274
  }, React.createElement(BaseFormControl, _extends({
270
- style: style,
271
- className: classNames('eds-datefield', className),
272
- labelId: id,
273
- ref: mergeRefs(dateFieldRef, ref),
275
+ append: append,
276
+ ariaAlertOnFeedback: true,
277
+ className: classNames('eds-datefield', className, {
278
+ 'eds-datefield--has-tooltip': labelTooltip !== undefined
279
+ }),
274
280
  disabled: isDisabled || disabled,
275
281
  disableLabelAnimation: true,
282
+ feedback: feedback != null ? feedback : state.validationState === 'invalid' ? validationFeedback : undefined,
276
283
  label: label,
284
+ labelId: id,
285
+ labelProps: parentLabelProps != null ? parentLabelProps : labelProps,
277
286
  labelTooltip: labelTooltip,
278
- labelProps: parentLabelProps != null ? parentLabelProps : labelProps
287
+ prepend: prepend,
288
+ ref: ref,
289
+ style: style,
290
+ variant: variant != null ? variant : state.validationState === 'invalid' ? validationVariant : undefined
291
+ }, parentGroupProps), React.createElement("span", _extends({
292
+ ref: dateFieldRef
279
293
  }, fieldProps, {
280
- variant: variant != null ? variant : state.validationState === 'invalid' ? validationVariant : undefined,
281
- feedback: feedback != null ? feedback : state.validationState === 'invalid' ? validationFeedback : undefined,
282
- append: append,
283
- ariaAlertOnFeedback: true
294
+ style: {
295
+ display: 'contents'
296
+ }
284
297
  }), state.segments.map(function (segment, i) {
285
298
  return React.createElement(FieldSegment, {
286
299
  segment: segment,
287
300
  state: state,
288
301
  key: i
289
302
  });
290
- })));
291
- });
303
+ }))));
304
+ };
292
305
 
293
306
  var _excluded$9 = ["children", "className", "style"];
294
307
  var CalendarButton = function CalendarButton(_ref) {
@@ -495,7 +508,7 @@ var CalendarBase = function CalendarBase(_ref2) {
495
508
  }));
496
509
  };
497
510
 
498
- var _excluded$5 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "classNameForDate", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "showWeekNumbers", "weekNumberHeader", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold", "forcedReturnType", "ariaLabelForDate"];
511
+ var _excluded$5 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "classNameForDate", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "showWeekNumbers", "weekNumberHeader", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold", "forcedReturnType", "ariaLabelForDate", "append", "prepend"];
499
512
  var DatePicker = function DatePicker(_ref) {
500
513
  var selectedDate = _ref.selectedDate,
501
514
  onChange = _ref.onChange,
@@ -506,6 +519,7 @@ var DatePicker = function DatePicker(_ref) {
506
519
  showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
507
520
  classNameForDate = _ref.classNameForDate,
508
521
  className = _ref.className,
522
+ style = _ref.style,
509
523
  variant = _ref.variant,
510
524
  feedback = _ref.feedback,
511
525
  validationVariant = _ref.validationVariant,
@@ -522,6 +536,8 @@ var DatePicker = function DatePicker(_ref) {
522
536
  modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
523
537
  forcedReturnType = _ref.forcedReturnType,
524
538
  ariaLabelForDate = _ref.ariaLabelForDate,
539
+ append = _ref.append,
540
+ prepend = _ref.prepend,
525
541
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
526
542
  var CALENDAR_MODAL_MAX_SCREEN_WIDTH = modalTreshold;
527
543
  var datePickerRef = useRef(null);
@@ -617,38 +633,45 @@ var DatePicker = function DatePicker(_ref) {
617
633
  locale: locale
618
634
  }, child);
619
635
  }
620
- }, React.createElement("div", {
621
- className: classNames('eds-datepicker', className)
622
- }, React.createElement("div", _extends({}, groupProps, {
623
- ref: datePickerRef,
624
- id: undefined,
625
- className: "eds-datepicker__datefield__wrapper"
626
- }), React.createElement(DateField, _extends({}, fieldProps, {
627
- selectedDate: selectedDate,
628
- onChange: handleOnChange,
636
+ }, React.createElement(DateField, {
637
+ append: !disabled && React.createElement("div", {
638
+ style: {
639
+ display: 'flex',
640
+ alignItems: 'center'
641
+ }
642
+ }, append, React.createElement(CalendarButton, _extends({}, buttonProps, {
643
+ onPress: function onPress() {
644
+ state.setOpen(!state.isOpen);
645
+ update();
646
+ },
647
+ className: "eds-datepicker__open-calendar-button"
648
+ }), React.createElement(CalendarIcon, null))),
649
+ prepend: prepend,
650
+ className: classNames('eds-datepicker', className, {
651
+ 'eds-datepicker--disabled': disabled
652
+ }),
653
+ disabled: disabled,
654
+ feedback: feedback,
655
+ fieldProps: fieldProps,
656
+ groupProps: groupProps,
629
657
  label: rest.label,
630
658
  labelProps: labelProps,
631
- disabled: disabled,
632
- minDate: minDate,
659
+ labelTooltip: labelTooltip,
633
660
  maxDate: maxDate,
661
+ minDate: minDate,
662
+ onChange: handleOnChange,
663
+ dateFieldRef: function dateFieldRef(node) {
664
+ refs.setReference(node);
665
+ datePickerRef.current = node;
666
+ },
667
+ selectedDate: selectedDate,
634
668
  showTime: showTime,
635
669
  showTimeZone: showTimeZone,
636
- ref: refs.setReference,
637
- variant: variant,
638
- feedback: feedback,
639
- validationVariant: validationVariant,
670
+ style: style,
640
671
  validationFeedback: validationFeedback,
641
- labelTooltip: labelTooltip,
642
- className: classNames('eds-datepicker__datefield', {
643
- 'eds-datepicker__datefield--disabled': disabled
644
- })
645
- })), !disabled && React.createElement(CalendarButton, _extends({}, buttonProps, {
646
- onPress: function onPress() {
647
- state.setOpen(!state.isOpen);
648
- update();
649
- },
650
- className: "eds-datepicker__open-calendar-button"
651
- }), React.createElement(CalendarIcon, null)), useModal ? modalCalendar : popoverCalendar)));
672
+ validationVariant: validationVariant,
673
+ variant: variant
674
+ }), useModal ? modalCalendar : popoverCalendar);
652
675
  };
653
676
 
654
677
  var _excluded$4 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],
@@ -743,7 +766,7 @@ var TimePickerArrowButton = function TimePickerArrowButton(_ref) {
743
766
  }, rest), direction === 'left' ? React.createElement(LeftArrowIcon, null) : React.createElement(RightArrowIcon, null));
744
767
  };
745
768
 
746
- var _excluded$2 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "granularity", "variant", "locale", "showTimeZone", "showSeconds", "minuteIncrementForArrowButtons", "leftArrowButtonAriaLabel", "rightArrowButtonAriaLabel", "inputRef", "forcedReturnType", "forcedTimeZone"];
769
+ var _excluded$2 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "granularity", "variant", "locale", "showTimeZone", "showSeconds", "minuteIncrementForArrowButtons", "leftArrowButtonAriaLabel", "rightArrowButtonAriaLabel", "inputRef", "forcedReturnType", "forcedTimeZone", "append", "prepend"];
747
770
  var TimePicker = function TimePicker(_ref) {
748
771
  var selectedTime = _ref.selectedTime,
749
772
  onChange = _ref.onChange,
@@ -768,6 +791,8 @@ var TimePicker = function TimePicker(_ref) {
768
791
  inputRef = _ref.inputRef,
769
792
  forcedReturnType = _ref.forcedReturnType,
770
793
  forcedTimeZone = _ref.forcedTimeZone,
794
+ append = _ref.append,
795
+ prepend = _ref.prepend,
771
796
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
772
797
  var _useLocale = useLocale(),
773
798
  locale = _useLocale.locale;
@@ -823,28 +848,44 @@ var TimePicker = function TimePicker(_ref) {
823
848
  };
824
849
  return React.createElement(I18nProvider, {
825
850
  locale: locale
826
- }, React.createElement("div", {
827
- className: classNames(className, 'eds-timepicker__wrapper')
828
- }, React.createElement(BaseFormControl, _extends({
829
- style: style,
830
- className: classNames('eds-timepicker', {
831
- 'eds-timepicker--disabled': disabled
851
+ }, React.createElement(BaseFormControl, {
852
+ append: React.createElement("div", {
853
+ style: {
854
+ display: 'flex',
855
+ alignItems: 'center'
856
+ }
857
+ }, append, React.createElement(TimePickerArrowButton, {
858
+ direction: "right",
859
+ disabled: disabled,
860
+ "aria-label": rightArrowButtonAriaLabel,
861
+ onClick: function onClick() {
862
+ return handleOnClickArrowButton('add');
863
+ },
864
+ onFocus: function onFocus() {
865
+ return focusSegment(timeFieldRef, 'last');
866
+ }
867
+ })),
868
+ ariaAlertOnFeedback: true,
869
+ "aria-describedby": timePickerId + 'description',
870
+ className: classNames('eds-timepicker', className, {
871
+ 'eds-timepicker--disabled': disabled,
872
+ 'eds-timepicker--has-tooltip': labelTooltip !== undefined
832
873
  }),
833
- labelId: id,
874
+ disabled: disabled,
875
+ disableLabelAnimation: true,
876
+ feedback: feedback,
834
877
  label: label,
878
+ labelId: id,
835
879
  labelProps: _extends({}, labelProps, {
836
880
  'aria-describedby': timePickerId + 'description'
837
881
  }),
838
- ref: mergeRefs(timeFieldRef, inputRef),
839
- disabled: disabled,
840
- disableLabelAnimation: true,
841
- labelTooltip: labelTooltip
842
- }, fieldProps, {
843
- variant: variant,
844
- feedback: feedback,
845
- ariaAlertOnFeedback: true,
846
- "aria-describedby": timePickerId + 'description',
847
- prepend: React.createElement(TimePickerArrowButton, {
882
+ labelTooltip: labelTooltip,
883
+ prepend: React.createElement("div", {
884
+ style: {
885
+ display: 'flex',
886
+ alignItems: 'center'
887
+ }
888
+ }, React.createElement(TimePickerArrowButton, {
848
889
  direction: "left",
849
890
  disabled: disabled,
850
891
  "aria-label": leftArrowButtonAriaLabel,
@@ -854,18 +895,16 @@ var TimePicker = function TimePicker(_ref) {
854
895
  onFocus: function onFocus() {
855
896
  return focusSegment(timeFieldRef, 'first');
856
897
  }
857
- }),
858
- append: React.createElement(TimePickerArrowButton, {
859
- direction: "right",
860
- disabled: disabled,
861
- "aria-label": rightArrowButtonAriaLabel,
862
- onClick: function onClick() {
863
- return handleOnClickArrowButton('add');
864
- },
865
- onFocus: function onFocus() {
866
- return focusSegment(timeFieldRef, 'last');
867
- }
868
- })
898
+ }), prepend),
899
+ ref: inputRef,
900
+ style: style,
901
+ variant: variant
902
+ }, React.createElement("span", _extends({
903
+ ref: timeFieldRef
904
+ }, fieldProps, {
905
+ style: {
906
+ display: 'contents'
907
+ }
869
908
  }), state.segments.map(function (segment, i) {
870
909
  return React.createElement(FieldSegment, {
871
910
  segment: segment,
@@ -1090,12 +1129,14 @@ var SimpleTimePicker = function SimpleTimePicker(_ref) {
1090
1129
  onClick: function onClick() {
1091
1130
  var _timeFieldRef$current;
1092
1131
  return timeFieldRef == null ? void 0 : (_timeFieldRef$current = timeFieldRef.current) == null ? void 0 : _timeFieldRef$current.focus();
1093
- }
1132
+ },
1133
+ inline: true
1094
1134
  }) : undefined),
1095
1135
  className: classNames('eds-simple-timepicker', {
1096
1136
  'eds-simple-timepicker--padding-large': padding === 'large',
1097
1137
  'eds-simple-timepicker--show-seconds': showSeconds,
1098
- 'eds-simple-timepicker--hide-clock': !showClockIcon
1138
+ 'eds-simple-timepicker--hide-clock': !showClockIcon,
1139
+ 'eds-simple-timepicker--has-tooltip': labelTooltip !== undefined
1099
1140
  }),
1100
1141
  disabled: disabled,
1101
1142
  disableLabelAnimation: true,