@@ -9,11 +9,53 @@ const meta: Meta<typeof TaskDetailsModal> = {
99 layout : 'centered' ,
1010 } ,
1111 tags : [ 'autodocs' ] ,
12+ argTypes : {
13+ onUpdateTask : { action : 'update task' } ,
14+ onDeleteTask : { action : 'delete task' } ,
15+ onClose : { action : 'close' } ,
16+ } ,
1217} ;
1318
1419export default meta ;
1520type Story = StoryObj < typeof TaskDetailsModal > ;
1621
22+ // Mock async functions
23+ const mockUpdateTask = ( taskId : string , updates : any ) => {
24+ return new Promise < void > ( ( resolve ) => {
25+ setTimeout ( ( ) => {
26+ console . log ( 'Task updated:' , taskId , updates ) ;
27+ resolve ( ) ;
28+ } , 2000 ) ; // 2 second delay to show loading state
29+ } ) ;
30+ } ;
31+
32+ const mockDeleteTask = ( taskId : string ) => {
33+ return new Promise < void > ( ( resolve ) => {
34+ setTimeout ( ( ) => {
35+ console . log ( 'Task deleted:' , taskId ) ;
36+ resolve ( ) ;
37+ } , 1500 ) ; // 1.5 second delay to show loading state
38+ } ) ;
39+ } ;
40+
41+ const mockUpdateTaskFail = ( taskId : string , updates : any ) => {
42+ return new Promise < void > ( ( resolve , reject ) => {
43+ setTimeout ( ( ) => {
44+ console . log ( 'Task update failed:' , taskId , updates ) ;
45+ reject ( new Error ( 'Update failed' ) ) ;
46+ } , 2000 ) ;
47+ } ) ;
48+ } ;
49+
50+ const mockDeleteTaskFail = ( taskId : string ) => {
51+ return new Promise < void > ( ( resolve , reject ) => {
52+ setTimeout ( ( ) => {
53+ console . log ( 'Task delete failed:' , taskId ) ;
54+ reject ( new Error ( 'Delete failed' ) ) ;
55+ } , 1500 ) ;
56+ } ) ;
57+ } ;
58+
1759const mockEpics = [
1860 {
1961 id : '1' ,
@@ -81,8 +123,56 @@ export const Default: Story = {
81123 epics : mockEpics ,
82124 sprints : mockSprints ,
83125 onClose : ( ) => { } ,
84- onUpdateTask : ( ) => { } ,
85- onDeleteTask : ( ) => { } ,
126+ onUpdateTask : mockUpdateTask ,
127+ onDeleteTask : mockDeleteTask ,
128+ } ,
129+ } ;
130+
131+ export const WithLoadingStates : Story = {
132+ args : {
133+ isOpen : true ,
134+ task : {
135+ id : '1' ,
136+ title : 'Design login page' ,
137+ description : 'Create wireframes and mockups for the login interface' ,
138+ status : 'in-progress' ,
139+ priority : 'high' ,
140+ type : 'story' ,
141+ epicId : '1' ,
142+ sprintId : '2' ,
143+ assignee : 'John Doe' ,
144+ points : 8 ,
145+ createdAt : new Date ( '2024-01-15' ) ,
146+ } ,
147+ epics : mockEpics ,
148+ sprints : mockSprints ,
149+ onClose : ( ) => { } ,
150+ onUpdateTask : mockUpdateTask ,
151+ onDeleteTask : mockDeleteTask ,
152+ } ,
153+ } ;
154+
155+ export const WithErrorStates : Story = {
156+ args : {
157+ isOpen : true ,
158+ task : {
159+ id : '1' ,
160+ title : 'Design login page' ,
161+ description : 'Create wireframes and mockups for the login interface' ,
162+ status : 'in-progress' ,
163+ priority : 'high' ,
164+ type : 'story' ,
165+ epicId : '1' ,
166+ sprintId : '2' ,
167+ assignee : 'John Doe' ,
168+ points : 8 ,
169+ createdAt : new Date ( '2024-01-15' ) ,
170+ } ,
171+ epics : mockEpics ,
172+ sprints : mockSprints ,
173+ onClose : ( ) => { } ,
174+ onUpdateTask : mockUpdateTaskFail ,
175+ onDeleteTask : mockDeleteTaskFail ,
86176 } ,
87177} ;
88178
@@ -105,8 +195,8 @@ export const BugTask: Story = {
105195 epics : mockEpics ,
106196 sprints : mockSprints ,
107197 onClose : ( ) => { } ,
108- onUpdateTask : ( ) => { } ,
109- onDeleteTask : ( ) => { } ,
198+ onUpdateTask : mockUpdateTask ,
199+ onDeleteTask : mockDeleteTask ,
110200 } ,
111201} ;
112202
@@ -129,8 +219,8 @@ export const CompletedTask: Story = {
129219 epics : mockEpics ,
130220 sprints : mockSprints ,
131221 onClose : ( ) => { } ,
132- onUpdateTask : ( ) => { } ,
133- onDeleteTask : ( ) => { } ,
222+ onUpdateTask : mockUpdateTask ,
223+ onDeleteTask : mockDeleteTask ,
134224 } ,
135225} ;
136226
@@ -153,8 +243,8 @@ export const SpikeTask: Story = {
153243 epics : mockEpics ,
154244 sprints : mockSprints ,
155245 onClose : ( ) => { } ,
156- onUpdateTask : ( ) => { } ,
157- onDeleteTask : ( ) => { } ,
246+ onUpdateTask : mockUpdateTask ,
247+ onDeleteTask : mockDeleteTask ,
158248 } ,
159249} ;
160250
@@ -177,7 +267,7 @@ export const NoSprint: Story = {
177267 epics : mockEpics ,
178268 sprints : mockSprints ,
179269 onClose : ( ) => { } ,
180- onUpdateTask : ( ) => { } ,
181- onDeleteTask : ( ) => { } ,
270+ onUpdateTask : mockUpdateTask ,
271+ onDeleteTask : mockDeleteTask ,
182272 } ,
183273} ;
0 commit comments