bullet_train-fields 1.7.17 → 1.7.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ea795bdf61d25fd9f74878d7cba64dce840b8e86a0eaba6fff611952b7063e8
4
- data.tar.gz: b204540e4973df6c404535d198d3a94de37203ff1a394b19c555e642bcac7006
3
+ metadata.gz: f9b14ac3386fb54947b395cdfe52c4b6e67daf66d85bfc2835ca57a902f595f3
4
+ data.tar.gz: 3f83062cbb1c93c12aba34a905e6b7e9aad844d9d2d5bea3cb838fc7aae70ffd
5
5
  SHA512:
6
- metadata.gz: c745588654f061b8193f5e3f2641b8a5190d6cf67098886fe49556239e9f9f38bea95de760e767e89627f70056bd03141dbf9abfff65112feb9cd25c321a612d
7
- data.tar.gz: 950055225b86c1ea4a087a8426bbab88f2628c81fc4c42d864abe93e6e7ee8df9beae3785a6366d4888101258e8da27a1af8b474ab5ed14ed16ac7247dd86f0a
6
+ metadata.gz: b156011b5b6c7829d09d15afc81bffa8db7731d979353e8e32e2faa87a3af647bc0877209276561faa39c2dba63115962744414e8779de6f8e0e9e1c954a4bcd
7
+ data.tar.gz: 44096f02396db0eab961f73859d980cbd4b13aede5f99b9af82ee0a3a6a869565f9da8aee74d6ab6bd30ca1774f5ccb54790779e93eda0c880c3144100d6af5c
@@ -7,11 +7,23 @@ export default class extends Controller {
7
7
  "downloadFileButton",
8
8
  "removeFileButton",
9
9
  "selectFileButton",
10
+ "selectFileButtonText",
11
+ "selectFileButtonIcon",
12
+ "selectedFileListContainer",
13
+ "selectedFileList",
14
+ "selectedFileRowTemplate",
10
15
  "progressBar",
11
16
  "progressLabel",
12
17
  ];
13
18
 
19
+ static values = {
20
+ selectDifferentFile: String
21
+ }
22
+
14
23
  connect() {
24
+ const statusText = this.selectFileButtonTextTarget;
25
+ this.originalStatusText = statusText.innerText;
26
+
15
27
  // Add upload event listeners
16
28
  const initializeListener = document.addEventListener(
17
29
  "direct-upload:initialize",
@@ -77,16 +89,56 @@ export default class extends Controller {
77
89
  this.removeFileFlagTarget.value = true;
78
90
  }
79
91
 
80
- handleFileSelected() {
81
- const statusText = this.selectFileButtonTarget.querySelector("span");
82
- const icon = this.selectFileButtonTarget.querySelector("i");
83
-
92
+ handleFileSelected(event) {
84
93
  if (this.hasDownloadFileButtonTarget) {
85
94
  this.downloadFileButtonTarget.remove();
86
95
  }
87
96
 
88
- statusText.innerText = "Select Another File";
89
- icon.classList.remove("ti-upload");
90
- icon.classList.add("ti-check");
97
+ const files = event.target.files;
98
+ this.updateSelectedFileList(files);
99
+ }
100
+
101
+ cancelFileUpload(event){
102
+ const fileInput = this.fileFieldTarget;
103
+ const files = fileInput.files;
104
+ const fileToCancel = event.target.dataset.filename;
105
+
106
+ const dt = new DataTransfer();
107
+ for (const file of files) {
108
+ if(file.name != fileToCancel){
109
+ dt.items.add(file);
110
+ }
111
+ }
112
+ fileInput.files = dt.files;
113
+ this.updateSelectedFileList(dt.files);
114
+ }
115
+
116
+ updateSelectedFileList(files){
117
+ const statusText = this.selectFileButtonTextTarget;
118
+ const icon = this.selectFileButtonIconTarget;
119
+
120
+ this.selectedFileListTarget.innerHTML = "";
121
+
122
+ if(files.length){
123
+ for (const file of files) {
124
+ this.addSelectedFile(file);
125
+ }
126
+ statusText.innerText = this.selectDifferentFileValue;
127
+ icon.classList.remove("ti-upload");
128
+ icon.classList.add("ti-check");
129
+ this.selectedFileListContainerTarget.classList.remove('hidden')
130
+ }else{
131
+ statusText.innerText = this.originalStatusText;
132
+ icon.classList.add("ti-upload");
133
+ icon.classList.remove("ti-check");
134
+ this.selectedFileListContainerTarget.classList.add('hidden')
135
+ }
136
+ }
137
+
138
+ addSelectedFile(file){
139
+ let template = this.selectedFileRowTemplateTarget.innerHTML;
140
+ template = template.replaceAll("@FILENAME@", file.name);
141
+ this.selectedFileListTarget.insertAdjacentHTML('beforeend', template);
91
142
  }
143
+
92
144
  }
@@ -5,6 +5,7 @@ export default class extends Controller {
5
5
  "removeFileFlag",
6
6
  "downloadFileButton",
7
7
  "removeFileButton",
8
+ "cancelRemoveFileButton",
8
9
  "fileName"
9
10
  ];
10
11
 
@@ -16,8 +17,20 @@ export default class extends Controller {
16
17
  }
17
18
 
18
19
  this.removeFileButtonTarget.classList.add("hidden");
19
- this.fileNameTarget.classList.add("hidden");
20
+ this.cancelRemoveFileButtonTarget.classList.remove("hidden");
20
21
  this.removeFileFlagTarget.value = this.idValue;
22
+ this.element.classList.add("bg-red-100", "dark:bg-red-700");
23
+ }
24
+
25
+ cancelRemoveFile(){
26
+ if (this.hasDownloadFileButtonTarget) {
27
+ this.downloadFileButtonTarget.classList.remove("hidden");
28
+ }
29
+
30
+ this.removeFileButtonTarget.classList.remove("hidden");
31
+ this.cancelRemoveFileButtonTarget.classList.add("hidden");
32
+ this.removeFileFlagTarget.value = null;
33
+ this.element.classList.remove("bg-red-100", "dark:bg-red-700/40");
21
34
  }
22
35
 
23
36
  }
@@ -1,5 +1,5 @@
1
1
  module BulletTrain
2
2
  module Fields
3
- VERSION = "1.7.17"
3
+ VERSION = "1.7.18"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bullet_train-fields
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.17
4
+ version: 1.7.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Culver
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-11 00:00:00.000000000 Z
11
+ date: 2024-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: standard