@bitrise/bitkit 12.79.0 → 12.80.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bitrise/bitkit",
3
3
  "description": "Bitrise React component library",
4
- "version": "12.79.0",
4
+ "version": "12.80.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+ssh://git@github.com/bitrise-io/bitkit.git"
@@ -1,4 +1,4 @@
1
- import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
1
+ import { useCallback, useEffect, useMemo, useState } from 'react';
2
2
  import { DateTime } from 'luxon';
3
3
  import FocusLock from 'react-focus-lock';
4
4
  import { PopoverAnchor } from '@chakra-ui/react';
@@ -44,8 +44,6 @@ export type DatePickerProps = {
44
44
  const DatePicker = (props: DatePickerProps) => {
45
45
  const { children, onApply, onClose, onClear, visible, selectable, selected, mode, variant = 'default' } = props;
46
46
 
47
- const isSelectionHappened = useRef(false);
48
-
49
47
  const { isMobile } = useResponsive();
50
48
  const today = DateTime.now().startOf('day');
51
49
 
@@ -73,12 +71,12 @@ const DatePicker = (props: DatePickerProps) => {
73
71
  setDateFrom(undefined);
74
72
  };
75
73
 
76
- const handleApply = () => {
74
+ const handleApply = (from: typeof dateFrom, to: typeof dateTo) => {
77
75
  if (onApply) {
78
76
  if (mode === 'day') {
79
- onApply(dateFrom);
77
+ onApply(from);
80
78
  } else {
81
- onApply(new DateRange(dateFrom, dateTo));
79
+ onApply(new DateRange(from, to));
82
80
  }
83
81
  }
84
82
 
@@ -113,46 +111,49 @@ const DatePicker = (props: DatePickerProps) => {
113
111
 
114
112
  const handleSelect = useCallback(
115
113
  (date: DateTime) => {
116
- isSelectionHappened.current = true;
114
+ let previewNew: 'from' | 'to' | undefined;
115
+ let dateFromNew = dateFrom;
116
+ let dateToNew = dateTo;
117
117
 
118
- setPreview(undefined);
119
118
  if (mode === 'day') {
120
- setDateFrom(date);
119
+ dateFromNew = date;
121
120
  } else if (dateFrom && dateTo) {
122
121
  if (!preview) {
123
- setPreview('from');
124
- setDateFrom(date);
125
- setDateTo(undefined);
122
+ previewNew = 'from';
123
+ dateFromNew = date;
124
+ dateToNew = undefined;
126
125
  }
127
126
  } else if (dateTo && date > dateTo) {
128
- setDateFrom(dateTo);
129
- setDateTo(date);
127
+ dateFromNew = dateTo;
128
+ dateToNew = date;
130
129
  } else if (dateFrom && date < dateFrom) {
131
- setDateFrom(date);
132
- setDateTo(dateFrom);
130
+ dateFromNew = date;
131
+ dateToNew = dateFrom;
133
132
  } else if (dateFrom) {
134
- setDateTo(date);
133
+ dateToNew = date;
135
134
  } else {
136
- setPreview('from');
137
- setDateFrom(date);
135
+ previewNew = 'from';
136
+ dateFromNew = date;
138
137
  }
139
- },
140
- [dateFrom, dateTo, preview],
141
- );
142
138
 
143
- useEffect(() => {
144
- if (variant === 'default') {
145
- if (!dateFrom || !isSelectionHappened.current || preview) {
146
- return;
147
- }
139
+ setPreview(previewNew);
140
+ setDateFrom(dateFromNew);
141
+ setDateTo(dateToNew);
148
142
 
149
- if (mode !== 'day' && !dateTo) {
150
- return;
151
- }
143
+ if (variant === 'default') {
144
+ if (!dateFromNew || previewNew) {
145
+ return;
146
+ }
152
147
 
153
- handleApply();
154
- }
155
- }, [dateFrom, dateTo, preview, isSelectionHappened.current]);
148
+ if (mode !== 'day' && !dateToNew) {
149
+ return;
150
+ }
151
+
152
+ handleApply(dateFromNew, dateToNew);
153
+ }
154
+ },
155
+ [dateFrom, dateTo, preview],
156
+ );
156
157
 
157
158
  const currentSelected = useDateRange([dateFrom, dateTo]);
158
159
  const ctx = useObjectMemo({
@@ -213,7 +214,7 @@ const DatePicker = (props: DatePickerProps) => {
213
214
  </Box>
214
215
  {variant === 'filter' && (
215
216
  <DatePickerFooter
216
- onApply={handleApply}
217
+ onApply={() => handleApply(dateFrom, dateTo)}
217
218
  onClose={handleClose}
218
219
  onClear={onClear}
219
220
  selected={currentSelected}