@@ -5,6 +5,7 @@ export default function () {
5
5
component . targetedLoadingElsByAction = { }
6
6
component . genericLoadingEls = [ ]
7
7
component . currentlyActiveLoadingEls = [ ]
8
+ component . currentlyActiveUploadLoadingEls = [ ]
8
9
} )
9
10
10
11
store . registerHook ( 'elementInitialized' , ( el , component ) => {
@@ -105,13 +106,41 @@ function setLoading(component, actions) {
105
106
106
107
const allEls = component . genericLoadingEls . concat ( actionTargetedEls )
107
108
108
- allEls . forEach ( ( { el, directive } ) => {
109
+ startLoading ( allEls )
110
+
111
+ component . currentlyActiveLoadingEls = allEls
112
+ }
113
+
114
+ export function setUploadLoading ( component , modelName ) {
115
+ const actionTargetedEls = component . targetedLoadingElsByAction [ modelName ] || [ ]
116
+
117
+ const allEls = component . genericLoadingEls . concat ( actionTargetedEls )
118
+
119
+ startLoading ( allEls )
120
+
121
+ component . currentlyActiveUploadLoadingEls = allEls
122
+ }
123
+
124
+ export function unsetUploadLoading ( component ) {
125
+ endLoading ( component . currentlyActiveUploadLoadingEls )
126
+
127
+ component . currentlyActiveUploadLoadingEls = [ ]
128
+ }
129
+
130
+ function unsetLoading ( component ) {
131
+ endLoading ( component . currentlyActiveLoadingEls )
132
+
133
+ component . currentlyActiveLoadingEls = [ ]
134
+ }
135
+
136
+ function startLoading ( els ) {
137
+ els . forEach ( ( { el, directive } ) => {
109
138
el = el . el // I'm so sorry @todo
110
139
111
140
if ( directive . modifiers . includes ( 'class' ) ) {
112
141
// This is because wire:loading.class="border border-red"
113
142
// wouldn't work with classList.add.
114
- const classes = directive . value . split ( ' ' )
143
+ const classes = directive . value . split ( ' ' ) . filter ( Boolean )
115
144
116
145
if ( directive . modifiers . includes ( 'remove' ) ) {
117
146
el . classList . remove ( ...classes )
@@ -132,16 +161,14 @@ function setLoading(component, actions) {
132
161
}
133
162
}
134
163
} )
135
-
136
- component . currentlyActiveLoadingEls = allEls
137
164
}
138
165
139
- function unsetLoading ( component ) {
140
- component . currentlyActiveLoadingEls . forEach ( ( { el, directive } ) => {
166
+ function endLoading ( els ) {
167
+ els . forEach ( ( { el, directive } ) => {
141
168
el = el . el // I'm so sorry @todo
142
169
143
170
if ( directive . modifiers . includes ( 'class' ) ) {
144
- const classes = directive . value . split ( ' ' )
171
+ const classes = directive . value . split ( ' ' ) . filter ( Boolean )
145
172
146
173
if ( directive . modifiers . includes ( 'remove' ) ) {
147
174
el . classList . add ( ...classes )
@@ -158,6 +185,4 @@ function unsetLoading(component) {
158
185
el . style . display = 'none'
159
186
}
160
187
} )
161
-
162
- component . currentlyActiveLoadingEls = [ ]
163
188
}
0 commit comments