@lemonadejs/modal 2.6.0 → 2.6.1
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.d.ts +2 -2
- package/dist/index.js +36 -20
- package/dist/style.css +5 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -22,8 +22,8 @@ declare namespace Modal {
|
|
|
22
22
|
resizable?: boolean;
|
|
23
23
|
/** Modal can be moved from its original position. Default: false */
|
|
24
24
|
draggable?: boolean;
|
|
25
|
-
/** Modal is automatic align during initialization */
|
|
26
|
-
position?: 'center' | 'left' | 'right' | 'bottom' | undefined;
|
|
25
|
+
/** Modal is automatic align during initialization. Absolute change the CSS position to absolute position to respect the screen position */
|
|
26
|
+
position?: 'center' | 'left' | 'right' | 'bottom' | 'absolute' |undefined;
|
|
27
27
|
/** Title of the modal */
|
|
28
28
|
title?: string;
|
|
29
29
|
/** Width of the modal */
|
package/dist/index.js
CHANGED
|
@@ -228,7 +228,11 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
228
228
|
let rect = self.el.getBoundingClientRect();
|
|
229
229
|
let margin = rect.height >= window.innerHeight || self.position ? 0 : 10;
|
|
230
230
|
// Make sure component will be visible on page
|
|
231
|
-
let
|
|
231
|
+
let h = window.innerHeight;
|
|
232
|
+
if (self.position === 'absolute') {
|
|
233
|
+
h = document.body.offsetHeight;
|
|
234
|
+
}
|
|
235
|
+
let limit = h - (rect.top + rect.height);
|
|
232
236
|
if (limit < 0) {
|
|
233
237
|
return rect.top + (limit - margin);
|
|
234
238
|
} else if (rect.top < 0) {
|
|
@@ -242,7 +246,11 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
242
246
|
let rect = self.el.getBoundingClientRect();
|
|
243
247
|
let margin = rect.width >= window.innerWidth || self.position ? 0 : 10;
|
|
244
248
|
// Make sure component will be visible on page
|
|
245
|
-
let
|
|
249
|
+
let w = window.innerWidth;
|
|
250
|
+
if (self.position === 'absolute') {
|
|
251
|
+
w = document.body.offsetWidth;
|
|
252
|
+
}
|
|
253
|
+
let limit = w - (rect.left + rect.width);
|
|
246
254
|
if (limit < 0) {
|
|
247
255
|
return rect.left + (limit - margin);
|
|
248
256
|
} else if (rect.left < 0) {
|
|
@@ -255,6 +263,20 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
255
263
|
return e === true || e === 1 || e === 'true';
|
|
256
264
|
}
|
|
257
265
|
|
|
266
|
+
const autoAdjust = function(s) {
|
|
267
|
+
// Adjust position
|
|
268
|
+
if (isTrue(s['auto-adjust'])) {
|
|
269
|
+
let v = adjustVertical.call(s);
|
|
270
|
+
if (v !== false) {
|
|
271
|
+
s.top = v;
|
|
272
|
+
}
|
|
273
|
+
v = adjustHorizontal.call(s);
|
|
274
|
+
if (v !== false) {
|
|
275
|
+
s.left = v;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
258
280
|
const Modal = function (template) {
|
|
259
281
|
let self = this;
|
|
260
282
|
let backdrop = null;
|
|
@@ -303,7 +325,7 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
303
325
|
self.el.style.left = self.left + 'px';
|
|
304
326
|
}
|
|
305
327
|
|
|
306
|
-
if (self.position === 'right' || self.position === 'bottom' || self.position === 'left') {
|
|
328
|
+
if (self.position === 'absolute' || self.position === 'right' || self.position === 'bottom' || self.position === 'left') {
|
|
307
329
|
|
|
308
330
|
} else {
|
|
309
331
|
if (!self.width && self.el.offsetWidth) {
|
|
@@ -331,20 +353,10 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
331
353
|
self.el.classList.add('fullscreen');
|
|
332
354
|
}
|
|
333
355
|
}
|
|
334
|
-
|
|
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
|
-
}
|
|
346
356
|
}
|
|
347
357
|
|
|
358
|
+
autoAdjust(self);
|
|
359
|
+
|
|
348
360
|
// Backdrop
|
|
349
361
|
if (self.backdrop === true) {
|
|
350
362
|
backdrop = document.createElement('div');
|
|
@@ -399,6 +411,8 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
399
411
|
if (backdrop) {
|
|
400
412
|
self.el.parentNode.insertBefore(backdrop, self.el);
|
|
401
413
|
}
|
|
414
|
+
// Auto adjust
|
|
415
|
+
autoAdjust(self);
|
|
402
416
|
} else {
|
|
403
417
|
// Hide backdrop
|
|
404
418
|
if (backdrop) {
|
|
@@ -415,13 +429,15 @@ if (!lemonade && typeof (require) === 'function') {
|
|
|
415
429
|
self.el.style[property] = '';
|
|
416
430
|
}
|
|
417
431
|
} else if (property === 'position') {
|
|
418
|
-
if (self.position) {
|
|
419
|
-
|
|
432
|
+
if (self.position && self.position !== 'center') {
|
|
433
|
+
self.top = '';
|
|
434
|
+
self.left = '';
|
|
435
|
+
} else {
|
|
436
|
+
if (! self.top) {
|
|
420
437
|
self.top = (window.innerHeight - self.el.offsetHeight) / 2;
|
|
438
|
+
}
|
|
439
|
+
if (! self.left) {
|
|
421
440
|
self.left = (window.innerWidth - self.el.offsetWidth) / 2;
|
|
422
|
-
} else {
|
|
423
|
-
self.top = '';
|
|
424
|
-
self.left = '';
|
|
425
441
|
}
|
|
426
442
|
}
|
|
427
443
|
}
|
package/dist/style.css
CHANGED
|
@@ -135,6 +135,10 @@
|
|
|
135
135
|
background: #888;
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
+
.lm-modal[position="absolute"] {
|
|
139
|
+
position: absolute;
|
|
140
|
+
}
|
|
141
|
+
|
|
138
142
|
.lm-modal[position="left"] {
|
|
139
143
|
top: 0;
|
|
140
144
|
left: 0;
|
|
@@ -165,6 +169,7 @@
|
|
|
165
169
|
}
|
|
166
170
|
|
|
167
171
|
.lm-modal[minimized="true"] {
|
|
172
|
+
position: fixed;
|
|
168
173
|
width: 200px !important;
|
|
169
174
|
height: 45px !important;
|
|
170
175
|
min-width: initial;
|
package/package.json
CHANGED