44 *
55 * A script that triggers confetti on the container element.
66 *
7- * Dependencies: particles-confetti
7+ * Dependencies: particles-confetti, progress-planner/suggested-task
88 */
99/* eslint-disable camelcase */
1010
@@ -13,7 +13,7 @@ document.addEventListener( 'prpl/celebrateTasks', ( event ) => {
1313 /**
1414 * Trigger the confetti on the container element.
1515 */
16- const containerElement = event . detail ?. element
16+ const containerEl = event . detail ?. element
1717 ? event . detail . element . closest ( '.prpl-suggested-tasks-list' )
1818 : document . querySelector (
1919 '.prpl-widget-wrapper.prpl-suggested-tasks .prpl-suggested-tasks-list'
@@ -30,14 +30,14 @@ document.addEventListener( 'prpl/celebrateTasks', ( event ) => {
3030
3131 const prplRenderAttemptshoot = ( ) => {
3232 // Get the tasks list position
33- const origin = containerElement
33+ const origin = containerEl
3434 ? {
3535 x :
36- ( containerElement . getBoundingClientRect ( ) . left +
37- containerElement . offsetWidth / 2 ) /
36+ ( containerEl . getBoundingClientRect ( ) . left +
37+ containerEl . offsetWidth / 2 ) /
3838 window . innerWidth ,
3939 y :
40- ( containerElement . getBoundingClientRect ( ) . top + 50 ) /
40+ ( containerEl . getBoundingClientRect ( ) . top + 50 ) /
4141 window . innerHeight ,
4242 }
4343 : { x : 0.5 , y : 0.3 } ; // fallback if list not found
@@ -83,75 +83,23 @@ document.addEventListener( 'prpl/celebrateTasks', ( event ) => {
8383 setTimeout ( prplRenderAttemptshoot , 0 ) ;
8484 setTimeout ( prplRenderAttemptshoot , 100 ) ;
8585 setTimeout ( prplRenderAttemptshoot , 200 ) ;
86-
87- /**
88- * Strike completed tasks.
89- */
90- document . dispatchEvent ( new CustomEvent ( 'prpl/strikeCelebratedTasks' ) ) ;
91-
92- // Remove celebrated tasks and add them to the completed tasks.
93- setTimeout ( ( ) => {
94- document . dispatchEvent (
95- new CustomEvent ( 'prpl/markTasksAsCompleted' )
96- ) ;
97- } , 2000 ) ;
98- } ) ;
99-
100- /**
101- * Mark tasks as completed.
102- */
103- document . addEventListener ( 'prpl/markTasksAsCompleted' , ( event ) => {
104- const taskList = event . detail ?. taskList || 'prplSuggestedTasks' ;
105- document
106- . querySelectorAll ( '.prpl-suggested-task-celebrated' )
107- . forEach ( ( item ) => {
108- const task_id = item . getAttribute ( 'data-task-id' ) ;
109- const providerID = item . getAttribute ( 'data-task-provider-id' ) ;
110- const category = item . getAttribute ( 'data-task-category' ) ;
111- const el = document . querySelector (
112- `.prpl-suggested-task[data-task-id="${ task_id } "]`
113- ) ;
114-
115- if ( el ) {
116- el . parentElement . remove ( ) ;
117- }
118-
119- // Get the task index.
120- let taskIndex = false ;
121- window [ taskList ] . tasks . forEach ( ( taskItem , index ) => {
122- if ( taskItem . task_id === task_id ) {
123- taskIndex = index ;
124- }
125- } ) ;
126-
127- // Mark the task as completed.
128- if ( false !== taskIndex ) {
129- window [ taskList ] . tasks [ taskIndex ] . status = 'completed' ;
130- }
131-
132- // Refresh the list.
133- document . dispatchEvent (
134- new CustomEvent ( 'prpl/suggestedTask/maybeInjectItem' , {
135- detail : {
136- task_id,
137- providerID,
138- category,
139- } ,
140- } )
141- ) ;
142- } ) ;
14386} ) ;
14487
14588/**
146- * Strike completed tasks.
89+ * Remove tasks from the DOM.
90+ * The task will be striked through, before removed, if it has points.
14791 */
148- document . addEventListener ( 'prpl/strikeCelebratedTasks ' , ( ) => {
92+ document . addEventListener ( 'prpl/removeCelebratedTasks ' , ( ) => {
14993 document
15094 . querySelectorAll (
15195 '.prpl-suggested-task[data-task-action="celebrate"]'
15296 )
15397 . forEach ( ( item ) => {
98+ // Triggers the strikethrough animation.
15499 item . classList . add ( 'prpl-suggested-task-celebrated' ) ;
100+
101+ // Remove the item from the DOM.
102+ setTimeout ( ( ) => item . remove ( ) , 2000 ) ;
155103 } ) ;
156104} ) ;
157105
@@ -163,9 +111,7 @@ document.addEventListener( 'prpl/celebrateTasks', () => {
163111 '#adminmenu #toplevel_page_progress-planner .update-plugins'
164112 ) ;
165113 if ( points ) {
166- points . forEach ( ( point ) => {
167- point . remove ( ) ;
168- } ) ;
114+ points . forEach ( ( point ) => point . remove ( ) ) ;
169115 }
170116} ) ;
171117
0 commit comments