1
1
import { MouseEvent , useCallback , useEffect , useState } from "react" ;
2
2
import dayjs , { Dayjs } from "dayjs" ;
3
- import { OpenChangeReason } from "@floating-ui/react" ;
4
3
import {
5
4
Priorities ,
6
5
SOMEDAY_WEEK_LIMIT_MSG ,
@@ -26,7 +25,6 @@ import {
26
25
selectDraftStatus ,
27
26
} from "@web/ducks/events/selectors/draft.selectors" ;
28
27
import { GRID_TIME_STEP } from "@web/views/Calendar/layout.constants" ;
29
- import { useEventForm } from "@web/views/Forms/hooks/useEventForm" ;
30
28
import {
31
29
selectIsAtWeeklyLimit ,
32
30
selectSomedayWeekCount ,
@@ -35,6 +33,7 @@ import { getUserId } from "@web/auth/auth.util";
35
33
36
34
import { DateCalcs } from "../grid/useDateCalcs" ;
37
35
import { WeekProps } from "../useWeek" ;
36
+ import { useDraftForm } from "./form/useDraftForm" ;
38
37
export interface Status_Drag {
39
38
durationMin : number ;
40
39
hasMoved ?: boolean ;
@@ -71,38 +70,6 @@ export const useDraftUtil = (
71
70
"startDate" | "endDate" | null
72
71
> ( "endDate" ) ;
73
72
const [ isFormOpen , setIsFormOpen ] = useState ( false ) ;
74
- const onIsFormOpenChange = ( isOpen : boolean , reason ?: OpenChangeReason ) => {
75
- const formAlreadyOpen = isFormOpen === true ;
76
-
77
- if ( formAlreadyOpen ) {
78
- reset ( ) ;
79
-
80
- // Not including click or outside press reasons
81
- // to avoid conflicting with custom mouse
82
- // handlers (useMouseHandlers.ts)
83
- if ( reason === "escape-key" ) {
84
- discard ( ) ;
85
- }
86
- return ;
87
- }
88
- setIsFormOpen ( isOpen ) ;
89
-
90
- if ( isOpen === false ) {
91
- reset ( ) ;
92
- discard ( ) ;
93
- }
94
- } ;
95
- const formProps = useEventForm ( "grid" , isFormOpen , onIsFormOpenChange ) ;
96
-
97
- const reset = ( ) => {
98
- setDraft ( null ) ;
99
- setIsDragging ( false ) ;
100
- setIsFormOpen ( false ) ;
101
- setIsResizing ( false ) ;
102
- setDragStatus ( null ) ;
103
- setResizeStatus ( null ) ;
104
- setDateBeingChanged ( null ) ;
105
- } ;
106
73
107
74
useEffect ( ( ) => {
108
75
reset ( ) ;
@@ -124,6 +91,25 @@ export const useDraftUtil = (
124
91
}
125
92
} , [ isDrafting , isFormOpen ] ) ;
126
93
94
+ const reset = ( ) => {
95
+ setDraft ( null ) ;
96
+ setIsDragging ( false ) ;
97
+ setIsFormOpen ( false ) ;
98
+ setIsResizing ( false ) ;
99
+ setDragStatus ( null ) ;
100
+ setResizeStatus ( null ) ;
101
+ setDateBeingChanged ( null ) ;
102
+ } ;
103
+ const discard = useCallback ( ( ) => {
104
+ if ( draft ) {
105
+ setDraft ( null ) ;
106
+ }
107
+
108
+ if ( reduxDraft || reduxDraftType ) {
109
+ dispatch ( draftSlice . actions . discard ( ) ) ;
110
+ }
111
+ } , [ dispatch , draft , reduxDraft , reduxDraftType ] ) ;
112
+
127
113
const handleResizing = useCallback ( ( ) => {
128
114
console . log ( "-setting local draft to:" , reduxDraft ) ;
129
115
setDraft ( reduxDraft ) ;
@@ -225,16 +211,6 @@ export const useDraftUtil = (
225
211
discard ( ) ;
226
212
} ;
227
213
228
- const discard = useCallback ( ( ) => {
229
- if ( draft ) {
230
- setDraft ( null ) ;
231
- }
232
-
233
- if ( reduxDraft || reduxDraftType ) {
234
- dispatch ( draftSlice . actions . discard ( ) ) ;
235
- }
236
- } , [ dispatch , draft , reduxDraft , reduxDraftType ] ) ;
237
-
238
214
const drag = useCallback (
239
215
( e : MouseEvent ) => {
240
216
const updateTimesDuringDrag = ( e : MouseEvent ) => {
@@ -445,6 +421,8 @@ export const useDraftUtil = (
445
421
discard ( ) ;
446
422
} ;
447
423
424
+ const { formProps } = useDraftForm ( isFormOpen , reset , discard , setIsFormOpen ) ;
425
+
448
426
return {
449
427
draftState : {
450
428
draft,
0 commit comments