@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 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 limit = window.innerHeight + window.scrollY - (rect.top + rect.height);
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 limit = window.innerWidth - (rect.left + rect.width);
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
- if (self.position === 'center') {
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
@@ -17,5 +17,5 @@
17
17
  },
18
18
  "main": "dist/index.js",
19
19
  "types": "dist/index.d.ts",
20
- "version": "2.6.0"
20
+ "version": "2.6.1"
21
21
  }