Skip to content

Commit 800933d

Browse files
committed
a bit more styling for site icon & add "remove icon" button
1 parent b59a3aa commit 800933d

3 files changed

Lines changed: 96 additions & 0 deletions

File tree

assets/css/onboarding/onboarding.css

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1221,12 +1221,42 @@
12211221
border-color: var(--prpl-color-field-border-active);
12221222
}
12231223

1224+
/* When an image has been uploaded. */
1225+
.prpl-file-drop-zone.has-image {
1226+
border-color: var(--prpl-color-field-border-active);
1227+
background-color: var(--prpl-background-field-active);
1228+
1229+
& > .prpl-icon-image,
1230+
& > p,
1231+
& > .prpl-file-upload-hints {
1232+
display: none;
1233+
}
1234+
1235+
.prpl-file-preview img {
1236+
border: 2px solid var(--prpl-color-field-border);
1237+
border-radius: 8px;
1238+
padding: 8px;
1239+
background: var(--prpl-color-background-white);
1240+
}
1241+
}
1242+
12241243
.prpl-file-browse-link {
12251244
color: var(--prpl-color-link);
12261245
text-decoration: underline;
12271246
cursor: pointer;
12281247
}
12291248

1249+
.prpl-file-remove-btn {
1250+
border: none;
1251+
background: none;
1252+
cursor: pointer;
1253+
padding: 0;
1254+
margin: 12px 0 0;
1255+
font-size: 16px;
1256+
color: var(--prpl-color-link);
1257+
text-decoration: underline;
1258+
}
1259+
12301260
.prpl-file-upload-hints {
12311261
display: flex;
12321262
flex-direction: column;

assets/js/onboarding/OnboardTask.js

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,13 @@ class PrplOnboardTask {
322322
);
323323
}
324324
} );
325+
326+
// Remove button handler.
327+
const removeBtn = uploadContainer.querySelector( '.prpl-file-remove-btn' );
328+
const previewDiv = uploadContainer.querySelector( '.prpl-file-preview' );
329+
removeBtn?.addEventListener( 'click', () => {
330+
this.removeUploadedFile( uploadContainer, previewDiv );
331+
} );
325332
}
326333

327334
async uploadFile( file, statusDiv ) {
@@ -365,6 +372,22 @@ class PrplOnboardTask {
365372
if ( previewDiv ) {
366373
previewDiv.innerHTML = `<img src="${ response.source_url }" alt="${ file.name }" />`;
367374
previewDiv.style.display = 'block';
375+
376+
// Add has-image class to drop zone to update styling.
377+
const dropZone = this.taskContent.querySelector(
378+
'.prpl-file-drop-zone'
379+
);
380+
if ( dropZone ) {
381+
dropZone.classList.add( 'has-image' );
382+
383+
// Show the remove button.
384+
const removeBtn = dropZone.querySelector(
385+
'.prpl-file-remove-btn'
386+
);
387+
if ( removeBtn ) {
388+
removeBtn.hidden = false;
389+
}
390+
}
368391
}
369392
return response;
370393
} )
@@ -402,4 +425,46 @@ class PrplOnboardTask {
402425
return false;
403426
} );
404427
}
428+
429+
/**
430+
* Remove uploaded file and reset the drop zone state.
431+
* @param {HTMLElement} dropZone The drop zone element.
432+
* @param {HTMLElement} previewDiv The preview container element.
433+
*/
434+
removeUploadedFile( dropZone, previewDiv ) {
435+
// Clear the preview.
436+
previewDiv.innerHTML = '';
437+
previewDiv.style.display = 'none';
438+
439+
// Remove has-image class.
440+
dropZone.classList.remove( 'has-image' );
441+
442+
// Hide the remove button.
443+
const removeBtn = dropZone.querySelector( '.prpl-file-remove-btn' );
444+
if ( removeBtn ) {
445+
removeBtn.hidden = true;
446+
}
447+
448+
// Clear the file input.
449+
const fileInput = dropZone.querySelector( 'input[type="file"]' );
450+
if ( fileInput ) {
451+
fileInput.value = '';
452+
}
453+
454+
// Clear the hidden post_id input and trigger validation.
455+
const postIdInput = dropZone.querySelector( 'input[name="post_id"]' );
456+
if ( postIdInput ) {
457+
postIdInput.value = '';
458+
postIdInput.dispatchEvent(
459+
new CustomEvent( 'change', { bubbles: true } )
460+
);
461+
}
462+
463+
// Show status div again.
464+
const statusDiv = dropZone.querySelector( '.prpl-upload-status' );
465+
if ( statusDiv ) {
466+
statusDiv.style.display = '';
467+
statusDiv.textContent = '';
468+
}
469+
}
405470
}

views/onboarding/tasks/core-siteicon.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
<input type="hidden" name="post_id" value="" data-validate="required">
4444
<div class="prpl-upload-status"></div> <!-- WIP -->
4545
<div class="prpl-file-preview"></div>
46+
<button type="button" class="prpl-file-remove-btn" hidden><?php \esc_html_e( 'Remove icon', 'progress-planner' ); ?></button>
4647
</div>
4748
<button type="button" data-task-id="<?php echo esc_attr( $task['task_id'] ); ?>" class="prpl-complete-task-btn prpl-btn prpl-btn-secondary">
4849
<?php \esc_html_e( 'Set site icon', 'progress-planner' ); ?>

0 commit comments

Comments
 (0)