import { ApplicationController } from './application_controller'; import { show } from '@utils'; export class ReplaceAttachmentController extends ApplicationController { static targets = ['input']; declare readonly inputTarget: HTMLInputElement; open(event: Event) { show(this.inputTarget); this.inputTarget.click(); // opens input prompt const target = event.currentTarget as HTMLButtonElement; if (target.dataset.autoAttachUrl) { // set the auto attach url specific to this button to replace the related attachment this.inputTarget.dataset.originalAutoAttachUrl = this.inputTarget.dataset.autoAttachUrl; this.inputTarget.dataset.autoAttachUrl = target.dataset.autoAttachUrl; // reset autoAttachUrl which would add an attachment // when replace is not finalized this.on(this.inputTarget, 'cancel', () => { this.inputTarget.dataset.autoAttachUrl = this.inputTarget.dataset.originalAutoAttachUrl; }); } } }