5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-22 08:56:20 +00:00

feat: informar que se va a modificar el archivo #4101

This commit is contained in:
f 2024-03-25 15:33:10 -03:00
parent 3f9714f6d0
commit d577075615
No known key found for this signature in database
7 changed files with 36 additions and 20 deletions

View file

@ -0,0 +1,19 @@
import { Controller } from 'stimulus'
import bsCustomFileInput from "bs-custom-file-input";
document.addEventListener("turbolinks:load", () => {
bsCustomFileInput.init();
});
export default class extends Controller {
static targets = ["preview", "input"];
connect() {
}
update(event = undefined) {
if (!this.hasPreviewTarget) return;
this.previewTarget.src = window.URL.createObjectURL(this.inputTarget.files[0])
}
}

View file

@ -1,11 +0,0 @@
document.addEventListener('turbolinks:load', () => {
document.querySelectorAll('input[type=file]').forEach(file => {
if (!file.dataset.preview) return
file.addEventListener('change', event => {
if (file.files.length === 0) return
document.querySelector('#' + file.dataset.preview).src = window.URL.createObjectURL(file.files[0])
})
})
})

View file

@ -1,5 +1,4 @@
import './external_links' import './external_links'
import './image_preview'
import './input-date' import './input-date'
import './input-tag' import './input-tag'
import './prosemirror' import './prosemirror'

View file

@ -1,12 +1,14 @@
.form-group .form-group{ data: { controller: 'file-preview' } }
- if metadata.static_file - if metadata.static_file
- case metadata.static_file.blob.content_type - case metadata.static_file.blob.content_type
- when %r{\Avideo/} - when %r{\Avideo/}
= video_tag url_for(metadata.static_file), = video_tag url_for(metadata.static_file),
controls: true, class: 'img-fluid' controls: true, class: 'img-fluid',
data: { target: 'file-preview.preview' }
- when %r{\Aaudio/} - when %r{\Aaudio/}
= audio_tag url_for(metadata.static_file), = audio_tag url_for(metadata.static_file),
controls: true, class: 'img-fluid' controls: true, class: 'img-fluid',
data: { target: 'file-preview.preview' }
- when 'application/pdf' - when 'application/pdf'
%iframe{ src: url_for(metadata.static_file) } %iframe{ src: url_for(metadata.static_file) }
- else - else
@ -24,7 +26,7 @@
= file_field(*field_name_for(base, attribute, :path), = file_field(*field_name_for(base, attribute, :path),
**field_options(attribute, metadata, required: (metadata.required && !metadata.path?)), **field_options(attribute, metadata, required: (metadata.required && !metadata.path?)),
class: "custom-file-input #{invalid(post, attribute)}", class: "custom-file-input #{invalid(post, attribute)}",
data: { preview: "#{attribute}-preview" }) data: { target: 'file-preview.input', action: 'file-preview#update' })
= label_tag "#{base}_#{attribute}_path", = label_tag "#{base}_#{attribute}_path",
post_label_t(attribute, :path, post: post), class: 'custom-file-label' post_label_t(attribute, :path, post: post), class: 'custom-file-label'
= render 'posts/attribute_feedback', = render 'posts/attribute_feedback',

View file

@ -1,9 +1,9 @@
.form-group .form-group{ data: { controller: 'file-preview' } }
- if metadata.static_file - if metadata.static_file
= image_tag url_for(metadata.static_file), = image_tag url_for(metadata.static_file),
alt: metadata.value['description'], alt: metadata.value['description'],
class: 'img-fluid', class: 'img-fluid',
id: "#{attribute}-preview" data: { target: 'file-preview.preview' }
-# Mantener el valor si no enviamos ninguna imagen -# Mantener el valor si no enviamos ninguna imagen
= hidden_field_tag "#{base}[#{attribute}][path]", metadata.value['path'] = hidden_field_tag "#{base}[#{attribute}][path]", metadata.value['path']
@ -16,13 +16,14 @@
= image_tag '', = image_tag '',
alt: metadata.value['description'], alt: metadata.value['description'],
class: 'img-fluid', class: 'img-fluid',
id: "#{attribute}-preview" data: { target: 'file-preview.preview' }
.custom-file .custom-file
= file_field(*field_name_for(base, attribute, :path), = file_field(*field_name_for(base, attribute, :path),
**field_options(attribute, metadata, required: (metadata.required && !metadata.path?)), **field_options(attribute, metadata, required: (metadata.required && !metadata.path?)),
class: "custom-file-input #{invalid(post, attribute)}", class: "custom-file-input #{invalid(post, attribute)}",
accept: ActiveStorage.web_image_content_types.join(','), data: { preview: "#{attribute}-preview" }) accept: ActiveStorage.web_image_content_types.join(','),
data: { target: 'file-preview.input', action: 'file-preview#update' })
= label_tag "#{base}_#{attribute}_path", = label_tag "#{base}_#{attribute}_path",
post_label_t(attribute, :path, post: post), class: 'custom-file-label' post_label_t(attribute, :path, post: post), class: 'custom-file-label'
= render 'posts/attribute_feedback', = render 'posts/attribute_feedback',

View file

@ -15,6 +15,7 @@
"@rails/webpacker": "5.4.4", "@rails/webpacker": "5.4.4",
"@suttyweb/editor": "^0.1.25", "@suttyweb/editor": "^0.1.25",
"babel-loader": "^8.2.2", "babel-loader": "^8.2.2",
"bs-custom-file-input": "^1.3.4",
"chart.js": "^3.5.1", "chart.js": "^3.5.1",
"chartkick": "^4.0.5", "chartkick": "^4.0.5",
"circular-dependency-plugin": "^5.2.2", "circular-dependency-plugin": "^5.2.2",

View file

@ -2677,6 +2677,11 @@ browserslist@^4.22.2:
node-releases "^2.0.14" node-releases "^2.0.14"
update-browserslist-db "^1.0.13" update-browserslist-db "^1.0.13"
bs-custom-file-input@^1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/bs-custom-file-input/-/bs-custom-file-input-1.3.4.tgz#c275cb8d4f1c02ba026324292509fa9a747dbda8"
integrity sha512-NBsQzTnef3OW1MvdKBbMHAYHssCd613MSeJV7z2McXznWtVMnJCy7Ckyc+PwxV6Pk16cu6YBcYWh/ZE0XWNKCA==
buffer-from@^1.0.0: buffer-from@^1.0.0:
version "1.1.1" version "1.1.1"
resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz" resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz"