@lemonadejs/modal 2.5.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +99 -58
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -168,13 +168,13 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
168
168
|
let items = minimizedModals;
|
|
169
169
|
let numOfItems = items.length;
|
|
170
170
|
let width = 10;
|
|
171
|
-
let height =
|
|
172
|
-
let offsetWidth =
|
|
173
|
-
let offsetHeight =
|
|
171
|
+
let height = 55;
|
|
172
|
+
let offsetWidth = window.innerWidth;
|
|
173
|
+
let offsetHeight = window.innerHeight;
|
|
174
174
|
for (let i = 0; i < numOfItems; i++) {
|
|
175
175
|
let item = items[i];
|
|
176
176
|
item.el.style.left = width + 'px';
|
|
177
|
-
item.el.style.top = offsetHeight -
|
|
177
|
+
item.el.style.top = offsetHeight - height + 'px';
|
|
178
178
|
width += 205;
|
|
179
179
|
|
|
180
180
|
if (offsetWidth - width < 205) {
|
|
@@ -187,39 +187,68 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
187
187
|
const setMini = function(self) {
|
|
188
188
|
// Minimize modals
|
|
189
189
|
minimizedModals.push(self);
|
|
190
|
+
let rect = self.el.getBoundingClientRect();
|
|
191
|
+
self.minimized = true;
|
|
192
|
+
self.el.top = rect.top;
|
|
193
|
+
self.el.left = rect.left;
|
|
194
|
+
if (! self.el.style.top) {
|
|
195
|
+
self.el.style.top = self.el.top + 'px';
|
|
196
|
+
}
|
|
197
|
+
if (! self.el.style.left) {
|
|
198
|
+
self.el.style.left = self.el.left + 'px';
|
|
199
|
+
}
|
|
190
200
|
// Refresh positions
|
|
191
|
-
|
|
201
|
+
setTimeout(() => {
|
|
202
|
+
refreshMinimized();
|
|
203
|
+
}, 10);
|
|
192
204
|
}
|
|
193
205
|
|
|
194
206
|
const removeMini = function(self) {
|
|
195
207
|
minimizedModals.splice(minimizedModals.indexOf(self), 1);
|
|
196
|
-
self.
|
|
197
|
-
self.el.style.
|
|
208
|
+
self.minimized = false;
|
|
209
|
+
self.el.style.top = self.el.top + 'px';
|
|
210
|
+
self.el.style.left = self.el.left + 'px';
|
|
198
211
|
// Refresh positions
|
|
199
|
-
|
|
212
|
+
setTimeout(() => {
|
|
213
|
+
refreshMinimized();
|
|
214
|
+
}, 10);
|
|
215
|
+
// Refresh positions
|
|
216
|
+
setTimeout(() => {
|
|
217
|
+
if (self.top === '') {
|
|
218
|
+
self.el.style.top = '';
|
|
219
|
+
}
|
|
220
|
+
if (self.left === '') {
|
|
221
|
+
self.el.style.left = '';
|
|
222
|
+
}
|
|
223
|
+
}, 400);
|
|
200
224
|
}
|
|
201
225
|
|
|
202
226
|
const adjustVertical = function() {
|
|
203
227
|
let self = this;
|
|
204
228
|
let rect = self.el.getBoundingClientRect();
|
|
205
|
-
let
|
|
229
|
+
let margin = rect.height >= window.innerHeight || self.position ? 0 : 10;
|
|
230
|
+
// Make sure component will be visible on page
|
|
231
|
+
let limit = window.innerHeight + window.scrollY - (rect.top + rect.height);
|
|
206
232
|
if (limit < 0) {
|
|
207
|
-
return rect.top + (limit -
|
|
233
|
+
return rect.top + (limit - margin);
|
|
208
234
|
} else if (rect.top < 0) {
|
|
209
|
-
return
|
|
235
|
+
return margin;
|
|
210
236
|
}
|
|
237
|
+
return false;
|
|
211
238
|
}
|
|
212
239
|
|
|
213
240
|
const adjustHorizontal = function() {
|
|
214
241
|
let self = this;
|
|
215
242
|
let rect = self.el.getBoundingClientRect();
|
|
243
|
+
let margin = rect.width >= window.innerWidth || self.position ? 0 : 10;
|
|
216
244
|
// Make sure component will be visible on page
|
|
217
|
-
let limit =
|
|
245
|
+
let limit = window.innerWidth - (rect.left + rect.width);
|
|
218
246
|
if (limit < 0) {
|
|
219
|
-
return rect.left + (limit -
|
|
247
|
+
return rect.left + (limit - margin);
|
|
220
248
|
} else if (rect.left < 0) {
|
|
221
|
-
return
|
|
249
|
+
return margin;
|
|
222
250
|
}
|
|
251
|
+
return false;
|
|
223
252
|
}
|
|
224
253
|
|
|
225
254
|
const isTrue = function(e) {
|
|
@@ -266,28 +295,54 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
266
295
|
if (self.height) {
|
|
267
296
|
self.el.style.height = self.height + 'px';
|
|
268
297
|
}
|
|
298
|
+
// Position
|
|
299
|
+
if (self.top) {
|
|
300
|
+
self.el.style.top = self.top + 'px';
|
|
301
|
+
}
|
|
302
|
+
if (self.left) {
|
|
303
|
+
self.el.style.left = self.left + 'px';
|
|
304
|
+
}
|
|
269
305
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
306
|
+
if (self.position === 'right' || self.position === 'bottom' || self.position === 'left') {
|
|
307
|
+
|
|
308
|
+
} else {
|
|
309
|
+
if (!self.width && self.el.offsetWidth) {
|
|
273
310
|
self.width = self.el.offsetWidth;
|
|
274
311
|
}
|
|
275
|
-
if (!
|
|
312
|
+
if (!self.height && self.el.offsetHeight) {
|
|
276
313
|
self.height = self.el.offsetHeight;
|
|
277
314
|
}
|
|
278
|
-
} else if (self.position === 'center') {
|
|
279
|
-
self.top = (window.innerHeight - self.height) / 2;
|
|
280
|
-
self.left = (window.innerWidth - self.width) / 2;
|
|
281
|
-
}
|
|
282
315
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
316
|
+
// Initial centralize
|
|
317
|
+
if (self.position === 'center' || !self.top) {
|
|
318
|
+
self.top = (window.innerHeight - self.height) / 2;
|
|
319
|
+
}
|
|
320
|
+
if (self.position === 'center' || !self.left) {
|
|
321
|
+
self.left = (window.innerWidth - self.width) / 2;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// Responsive
|
|
325
|
+
if (document.documentElement.clientWidth < 800) {
|
|
326
|
+
if (self.responsive !== false) {
|
|
327
|
+
self.el.setAttribute('data-responsive', true);
|
|
328
|
+
}
|
|
329
|
+
// Full screen
|
|
330
|
+
if (self.height > 300) {
|
|
331
|
+
self.el.classList.add('fullscreen');
|
|
332
|
+
}
|
|
333
|
+
}
|
|
287
334
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
335
|
+
// Adjust position
|
|
336
|
+
if (isTrue(self['auto-adjust'])) {
|
|
337
|
+
let v = adjustVertical.call(self);
|
|
338
|
+
if (v !== false) {
|
|
339
|
+
self.top = v;
|
|
340
|
+
}
|
|
341
|
+
v = adjustHorizontal.call(self);
|
|
342
|
+
if (v !== false) {
|
|
343
|
+
self.left = v;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
291
346
|
}
|
|
292
347
|
|
|
293
348
|
// Backdrop
|
|
@@ -299,18 +354,6 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
299
354
|
})
|
|
300
355
|
}
|
|
301
356
|
|
|
302
|
-
// Adjust position
|
|
303
|
-
if (isTrue(self['auto-adjust'])) {
|
|
304
|
-
let v = adjustVertical.call(self);
|
|
305
|
-
if (v) {
|
|
306
|
-
self.top = v;
|
|
307
|
-
}
|
|
308
|
-
v = adjustHorizontal.call(self);
|
|
309
|
-
if (v) {
|
|
310
|
-
self.left = v;
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
|
|
314
357
|
// Bring to front on focus
|
|
315
358
|
if (self.layers !== false) {
|
|
316
359
|
self.el.classList.add('lm-modal-layers');
|
|
@@ -326,7 +369,7 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
326
369
|
});
|
|
327
370
|
|
|
328
371
|
// Close and stop propagation
|
|
329
|
-
|
|
372
|
+
self.el.addEventListener('keydown', (e) => {
|
|
330
373
|
if (e.key === 'Escape' && self.closed === false) {
|
|
331
374
|
self.closed = true;
|
|
332
375
|
e.preventDefault();
|
|
@@ -444,6 +487,7 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
444
487
|
if (isTrue(self.closable)) {
|
|
445
488
|
if (corner) {
|
|
446
489
|
self.closed = true;
|
|
490
|
+
|
|
447
491
|
if (isTrue(self.minimizable)) {
|
|
448
492
|
removeMini(self);
|
|
449
493
|
}
|
|
@@ -456,20 +500,11 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
456
500
|
// Check if the click in on minimize
|
|
457
501
|
if (isTrue(self.minimizable)) {
|
|
458
502
|
if (corner) {
|
|
459
|
-
// Minimize
|
|
460
|
-
self.minimized = ! self.minimized;
|
|
461
503
|
// Handles minimized modal positioning
|
|
462
|
-
if (self.minimized) {
|
|
463
|
-
if (! self.top) {
|
|
464
|
-
self.top = self.el.offsetTop;
|
|
465
|
-
}
|
|
466
|
-
if (! self.left) {
|
|
467
|
-
self.left = self.el.offsetLeft;
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
setMini(self);
|
|
471
|
-
} else {
|
|
504
|
+
if (self.minimized === true) {
|
|
472
505
|
removeMini(self);
|
|
506
|
+
} else {
|
|
507
|
+
setMini(self);
|
|
473
508
|
}
|
|
474
509
|
|
|
475
510
|
return;
|
|
@@ -498,10 +533,16 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
498
533
|
controls.type = 'move';
|
|
499
534
|
// Callback
|
|
500
535
|
controls.action = function () {
|
|
501
|
-
let v = adjustVertical.call(self)
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
536
|
+
let v = adjustVertical.call(self);
|
|
537
|
+
if (v === false) {
|
|
538
|
+
v = parseInt(item.style.top);
|
|
539
|
+
}
|
|
540
|
+
let h = adjustHorizontal.call(self);
|
|
541
|
+
if (v === false) {
|
|
542
|
+
h = parseInt(item.style.left);
|
|
543
|
+
}
|
|
544
|
+
self.top = v;
|
|
545
|
+
self.left = h;
|
|
505
546
|
controls.e.classList.remove('moving');
|
|
506
547
|
}
|
|
507
548
|
controls.e.classList.add('moving');
|
package/dist/style.css
CHANGED
package/package.json
CHANGED