diff --git a/app/javascript/admin/__tests__/controllers/article_controller.test.js b/app/javascript/admin/__tests__/controllers/article_controller.test.js index f8b7e5656..4880e8283 100644 --- a/app/javascript/admin/__tests__/controllers/article_controller.test.js +++ b/app/javascript/admin/__tests__/controllers/article_controller.test.js @@ -3,12 +3,15 @@ import ArticleController from '../../controllers/article_controller'; describe('ArticleController', () => { beforeEach(() => { - document.body.innerHTML = `
If you disable Email address as a registration option, people cannot create an account with their email address.
However, people who have already created an account using their email address can continue to login.
You must confirm and update site config to save below this action.
'; +const emailAuthModalBody = ` +If you disable Email address as a registration option, people cannot create an account with their email address.
+However, people who have already created an account using their email address can continue to login.
+You must confirm and update site config to save below this action.
`; export default class ConfigController extends Controller { static targets = [ diff --git a/app/javascript/admin/controllers/image_upload_controller.js b/app/javascript/admin/controllers/image_upload_controller.js index 9f1369050..4118aa75e 100644 --- a/app/javascript/admin/controllers/image_upload_controller.js +++ b/app/javascript/admin/controllers/image_upload_controller.js @@ -2,20 +2,22 @@ import { Controller } from 'stimulus'; export default class ImageUploadController extends Controller { static targets = ['fileField', 'imageResult']; + static values = { url: String }; onFormSubmit(event) { event.preventDefault(); - let token = document.getElementsByName('authenticity_token')[0].value; - let image = this.fileFieldTarget.files[0]; + + const token = document.getElementsByName('authenticity_token')[0].value; + const image = this.fileFieldTarget.files[0]; let formData = new FormData(); formData.append('authenticity_token', token); formData.append('image', image); - fetch('/image_uploads', { + fetch(this.urlValue, { method: 'POST', headers: { - 'X-CSRF_Token': window.csrfToken, + 'X-CSRF-Token': window.csrfToken, }, body: formData, credentials: 'same-origin', diff --git a/app/javascript/admin/controllers/modal_controller.js b/app/javascript/admin/controllers/modal_controller.js index 1bd569119..dc47db382 100644 --- a/app/javascript/admin/controllers/modal_controller.js +++ b/app/javascript/admin/controllers/modal_controller.js @@ -1,11 +1,12 @@ import { Controller } from 'stimulus'; export default class ModalController extends Controller { + static classes = ['hidden']; static targets = ['toggle']; toggleModal() { - if (this.toggleTarget) { - this.toggleTarget.classList.toggle('hidden'); + if (this.hasToggleTarget) { + this.toggleTarget.classList.toggle(this.hiddenClass); } } } diff --git a/app/javascript/admin/controllers/reaction_controller.js b/app/javascript/admin/controllers/reaction_controller.js index be2d68a2e..e33f2940d 100644 --- a/app/javascript/admin/controllers/reaction_controller.js +++ b/app/javascript/admin/controllers/reaction_controller.js @@ -1,13 +1,16 @@ -/* eslint-disable no-alert */ import { Controller } from 'stimulus'; export default class ReactionController extends Controller { static targets = ['invalid', 'confirmed']; + static values = { + id: Number, + url: String, + }; - // eslint-disable-next-line class-methods-use-this - /* eslint no-alert: "error" */ - updateReaction(id, status) { - fetch(`/admin/reactions/${id}`, { + updateReaction(status) { + const id = this.idValue; + + fetch(this.urlValue, { method: 'PATCH', headers: { Accept: 'application/json', @@ -28,46 +31,45 @@ export default class ReactionController extends Controller { this.element.remove(); document.getElementById(`js__reaction__div__hr__${id}`).remove(); } else { - alert(json.error); + window.alert(json.error); } }) .catch((error) => { - alert(error); + window.alert(error); }), ); } updateReactionInvalid() { - this.updateReaction(this.reactionId, this.invalidStatus); + this.updateReaction(this.invalidStatus); } updateReactionConfirmed() { - this.updateReaction(this.reactionId, this.confirmedStatus); + this.updateReaction(this.confirmedStatus); } reactableUserCheck() { if (this.reactableType === 'user') { - // eslint-disable-next-line no-restricted-globals - if (confirm('You are confirming a User vomit reaction; are you sure?')) { - this.updateReaction(this.reactionId, this.confirmedStatus); + if ( + window.confirm( + 'You are confirming a User vomit reaction; are you sure?', + ) + ) { + this.updateReaction(this.confirmedStatus); } } else { - this.updateReaction(this.reactionId, this.confirmedStatus); + this.updateReaction(this.confirmedStatus); } } - get reactionId() { - return parseInt(this.data.get('id'), 10); - } - - get confirmedStatus() { - return this.confirmedTarget.dataset.status; - } - get reactableType() { return this.confirmedTarget.dataset.reactable; } + get confirmedStatus() { + return this.confirmedTarget.dataset.status; + } + get invalidStatus() { return this.invalidTarget.dataset.altstatus; } diff --git a/app/views/admin/articles/_individual_article.html.erb b/app/views/admin/articles/_individual_article.html.erb index 14241a5c6..9ccd4b444 100644 --- a/app/views/admin/articles/_individual_article.html.erb +++ b/app/views/admin/articles/_individual_article.html.erb @@ -4,19 +4,29 @@ } -<%= Tag.find_by(id: buffer_update.tag_id)&.name || buffer_update.social_service_name %>:
- <%= form_with url: admin_buffer_update_path(buffer_update.id), class: "buffer-form buffer-confirm", html: { data: { action: "submit->buffer#highlightElement" } } do |f| %>
+ <%= form_with(
+ url: admin_buffer_update_path(buffer_update.id),
+ class: "buffer-form buffer-confirm",
+ html: { data: { action: "submit->buffer#highlightElement" } },
+ ) do |f| %>