@innovastudio/contentbox 1.6.37 → 1.6.38

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@innovastudio/contentbox",
3
3
  "type": "module",
4
- "version": "1.6.37",
4
+ "version": "1.6.38",
5
5
  "description": "",
6
6
  "main": "public/contentbox/contentbox.esm.js",
7
7
  "files": [
@@ -52,7 +52,7 @@
52
52
  "ws": "^8.13.0"
53
53
  },
54
54
  "dependencies": {
55
- "@innovastudio/contentbuilder": "^1.5.17",
55
+ "@innovastudio/contentbuilder": "^1.5.22",
56
56
  "js-beautify": "^1.14.0"
57
57
  }
58
58
  }
@@ -78220,26 +78220,37 @@ class RowTool {
78220
78220
  if (btnCellAdd) dom.addEventListener(btnCellAdd, 'click', () => {
78221
78221
  let cell = util.cellSelected();
78222
78222
  if (!cell) return;
78223
+ const viewportHeight = window.innerHeight;
78224
+ const newPos = util.getElementPosition(btnCellAdd);
78225
+ let top = newPos.top;
78226
+ let left = newPos.left;
78223
78227
  renderQuickAdd(this.builder);
78224
78228
  let quickadd = this.builder.builderStuff.querySelector('.is-pop.quickadd');
78225
78229
  let tabs = quickadd.querySelector('.is-pop-tabs');
78226
78230
  tabs.style.display = 'flex';
78227
- const newPos = util.getElementPosition(btnCellAdd);
78228
- let top = newPos.top + window.pageYOffset;
78229
- let left = newPos.left + window.pageXOffset;
78230
- if (this.builder.iframe) {
78231
- left = left + 3;
78232
- }
78233
78231
  util.showPop(quickadd, false, btnCellAdd);
78234
- quickadd.style.top = top + 35 + 'px';
78235
- quickadd.style.left = left + 'px';
78236
- dom.removeClass(quickadd, 'arrow-bottom');
78237
- dom.removeClass(quickadd, 'arrow-left');
78238
- dom.removeClass(quickadd, 'arrow-right');
78239
- dom.removeClass(quickadd, 'center');
78240
- dom.removeClass(quickadd, 'right');
78241
- dom.addClass(quickadd, 'arrow-top');
78242
- dom.addClass(quickadd, 'left');
78232
+ const h = quickadd.offsetHeight;
78233
+ if (viewportHeight - top > h) {
78234
+ // pop bottom
78235
+ quickadd.style.top = top + window.pageYOffset + 35 + 'px';
78236
+ quickadd.style.left = left + 'px';
78237
+ dom.removeClass(quickadd, 'arrow-bottom');
78238
+ dom.removeClass(quickadd, 'arrow-right');
78239
+ dom.removeClass(quickadd, 'arrow-left');
78240
+ dom.removeClass(quickadd, 'center');
78241
+ dom.addClass(quickadd, 'arrow-top');
78242
+ dom.addClass(quickadd, 'left');
78243
+ } else {
78244
+ // pop top
78245
+ quickadd.style.top = top + window.pageYOffset - h - 8 + 'px';
78246
+ quickadd.style.left = left + 'px';
78247
+ dom.removeClass(quickadd, 'arrow-top');
78248
+ dom.removeClass(quickadd, 'arrow-right');
78249
+ dom.removeClass(quickadd, 'arrow-left');
78250
+ dom.removeClass(quickadd, 'center');
78251
+ dom.addClass(quickadd, 'arrow-bottom');
78252
+ dom.addClass(quickadd, 'left');
78253
+ }
78243
78254
  let val = quickadd.querySelector('.active').getAttribute('data-value');
78244
78255
  if (val === 'left') {
78245
78256
  quickadd.setAttribute('data-mode', 'cell-left');
@@ -78279,21 +78290,38 @@ class RowTool {
78279
78290
  if (btnCellMore) dom.addEventListener(btnCellMore, 'click', () => {
78280
78291
  let cell = util.cellSelected();
78281
78292
  if (!cell) return;
78293
+ const viewportHeight = window.innerHeight;
78282
78294
  const newPos = util.getElementPosition(btnCellMore);
78283
- let top = newPos.top + window.pageYOffset;
78284
- let left = newPos.left + window.pageXOffset;
78295
+ let top = newPos.top;
78296
+ let left = newPos.left;
78285
78297
  this.builder.colTool.renderColMore();
78286
78298
  const columnMore = builderStuff.querySelector('.columnmore');
78287
- util.showPop(columnMore, false, btnCellMore);
78288
- columnMore.style.top = top + 35 + 'px';
78289
- columnMore.style.left = left - 7 + 'px';
78290
- dom.removeClass(columnMore, 'arrow-bottom');
78291
- dom.removeClass(columnMore, 'arrow-left');
78292
- dom.removeClass(columnMore, 'arrow-right');
78293
- dom.removeClass(columnMore, 'center');
78294
- dom.removeClass(columnMore, 'right');
78295
- dom.addClass(columnMore, 'arrow-top');
78296
- dom.addClass(columnMore, 'left');
78299
+ setTimeout(() => {
78300
+ // give delay after renderColMore()
78301
+ util.showPop(columnMore, false, btnCellMore);
78302
+ const h = columnMore.offsetHeight;
78303
+ if (viewportHeight - top > h) {
78304
+ columnMore.style.top = top + window.pageYOffset + 35 + 'px';
78305
+ columnMore.style.left = left - 7 + 'px';
78306
+ dom.removeClass(columnMore, 'arrow-bottom');
78307
+ dom.removeClass(columnMore, 'arrow-right');
78308
+ dom.removeClass(columnMore, 'arrow-left');
78309
+ dom.removeClass(columnMore, 'center');
78310
+ dom.removeClass(columnMore, 'right');
78311
+ dom.addClass(columnMore, 'arrow-top');
78312
+ dom.addClass(columnMore, 'left');
78313
+ } else {
78314
+ columnMore.style.top = top + window.pageYOffset - h - 8 + 'px';
78315
+ columnMore.style.left = left - 7 + 'px';
78316
+ dom.removeClass(columnMore, 'arrow-top');
78317
+ dom.removeClass(columnMore, 'arrow-right');
78318
+ dom.removeClass(columnMore, 'arrow-left');
78319
+ dom.removeClass(columnMore, 'center');
78320
+ dom.removeClass(columnMore, 'right');
78321
+ dom.addClass(columnMore, 'arrow-bottom');
78322
+ dom.addClass(columnMore, 'left');
78323
+ }
78324
+ }, 0);
78297
78325
  const btnCellLocking = columnMore.querySelector('.cell-locking');
78298
78326
  if (cell.hasAttribute('data-noedit')) {
78299
78327
  dom.addClass(btnCellLocking, 'on');
@@ -78447,32 +78475,67 @@ class RowTool {
78447
78475
 
78448
78476
  //Hide Column tool (new!)
78449
78477
  util.hideColumnTool();
78478
+
78479
+ /*
78450
78480
  const newPos = util.getElementPosition(btnMore);
78451
78481
  let top = newPos.top + window.pageYOffset;
78452
78482
  let left = newPos.left + window.pageXOffset;
78453
- this.renderRowMore();
78483
+ this.renderRowMore();
78454
78484
  const rowMore = this.rowMore;
78455
-
78456
- // rowMore.style.display = 'flex';
78485
+ // rowMore.style.display = 'flex';
78457
78486
  util.showPop(rowMore, false, btnMore);
78458
78487
  //const w = rowMore.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.
78459
78488
  //const h = rowMore.offsetHeight;
78460
- rowMore.style.top = top - 8 + 'px';
78461
- dom.removeClass(rowMore, 'arrow-bottom');
78462
- dom.removeClass(rowMore, 'arrow-left');
78463
- dom.removeClass(rowMore, 'arrow-right');
78464
- dom.removeClass(rowMore, 'center');
78465
- dom.removeClass(rowMore, 'right');
78466
- dom.removeClass(rowMore, 'left');
78467
- if (this.builder.opts.rowTool === 'right') {
78468
- rowMore.style.left = left - rowMore.offsetWidth - 10 + 'px';
78469
- dom.addClass(rowMore, 'arrow-right');
78470
- dom.addClass(rowMore, 'left');
78471
- } else {
78472
- rowMore.style.left = left + 35 + 'px';
78473
- dom.addClass(rowMore, 'arrow-left');
78474
- dom.addClass(rowMore, 'left');
78475
- }
78489
+ rowMore.style.top = (top - 8) + 'px';
78490
+ dom.removeClass(rowMore,'arrow-bottom');
78491
+ dom.removeClass(rowMore,'arrow-left');
78492
+ dom.removeClass(rowMore,'arrow-right');
78493
+ dom.removeClass(rowMore,'center');
78494
+ dom.removeClass(rowMore,'right');
78495
+ dom.removeClass(rowMore,'left');
78496
+ if(this.builder.opts.rowTool === 'right') {
78497
+
78498
+ rowMore.style.left = (left - rowMore.offsetWidth - 10) + 'px';
78499
+ dom.addClass(rowMore,'arrow-right');
78500
+ dom.addClass(rowMore,'left');
78501
+ } else {
78502
+ rowMore.style.left = (left + 35) + 'px';
78503
+ dom.addClass(rowMore,'arrow-left');
78504
+ dom.addClass(rowMore,'left');
78505
+ }
78506
+ */
78507
+
78508
+ const viewportHeight = window.innerHeight;
78509
+ const newPos = util.getElementPosition(btnMore);
78510
+ let top = newPos.top;
78511
+ let left = newPos.left;
78512
+ this.renderRowMore();
78513
+ const rowMore = this.rowMore;
78514
+ setTimeout(() => {
78515
+ // give delay after renderRowMore()
78516
+ util.showPop(rowMore, false, btnMore);
78517
+ const h = rowMore.offsetHeight;
78518
+ dom.removeClass(rowMore, 'arrow-bottom');
78519
+ dom.removeClass(rowMore, 'arrow-left');
78520
+ dom.removeClass(rowMore, 'arrow-right');
78521
+ dom.removeClass(rowMore, 'center');
78522
+ dom.removeClass(rowMore, 'right');
78523
+ dom.removeClass(rowMore, 'left');
78524
+ if (this.builder.opts.rowTool === 'right') {
78525
+ rowMore.style.left = left - rowMore.offsetWidth - 10 + 'px';
78526
+ dom.addClass(rowMore, 'arrow-right');
78527
+ dom.addClass(rowMore, 'left');
78528
+ } else {
78529
+ rowMore.style.left = left + 35 + 'px';
78530
+ dom.addClass(rowMore, 'arrow-left');
78531
+ dom.addClass(rowMore, 'left');
78532
+ }
78533
+ if (viewportHeight - top > h) {
78534
+ rowMore.style.top = top + window.pageYOffset - 8 + 'px';
78535
+ } else {
78536
+ rowMore.style.top = top + window.pageYOffset - h + btnMore.offsetHeight + 'px';
78537
+ }
78538
+ }, 0);
78476
78539
  let btnRowHtml = rowMore.querySelector('.row-html');
78477
78540
  let btnRowDuplicate = rowMore.querySelector('.row-duplicate');
78478
78541
  if (row.querySelector('[data-html]')) {
@@ -91350,9 +91413,25 @@ class Rte {
91350
91413
  // Reset Zoom
91351
91414
  const btnResetZoom = builderStuff.querySelector('.reset-zoom');
91352
91415
  btnResetZoom.addEventListener('click', () => {
91416
+ this.rteZoomSlider.value = 100;
91353
91417
  this.builder.opts.zoom = 1;
91354
91418
  localStorage.setItem('_zoom', 1); // Save
91355
91419
 
91420
+ // setZoomOnControl
91421
+ if (this.builder.isContentBox) {
91422
+ const wrapper = this.builder.doc.querySelector(this.builder.opts.page);
91423
+ this.builder.setZoomOnControl(wrapper);
91424
+ } else if (this.builder.canvas && !this.builder.isContentBox && this.builder.docContainer) {
91425
+ // freeform
91426
+ const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
91427
+ this.builder.setZoomOnControl(docContainer);
91428
+ } else {
91429
+ const builders = this.builder.doc.querySelectorAll(this.builder.opts.container);
91430
+ builders.forEach(builder => {
91431
+ this.builder.setZoomOnControl(builder);
91432
+ });
91433
+ }
91434
+
91356
91435
  // setZoomOnArea
91357
91436
  this.builder.setZoomOnArea();
91358
91437
  });
@@ -99475,7 +99554,6 @@ class ContentStuff$1 {
99475
99554
  display:flex;
99476
99555
  }
99477
99556
 
99478
-
99479
99557
  .row-outline .is-rowadd-tool,
99480
99558
  .row-active .is-rowadd-tool {
99481
99559
  display:block;
@@ -99884,6 +99962,12 @@ class ContentStuff$1 {
99884
99962
  /*padding: 0 2px 4px !important;*/
99885
99963
  z-index: 1 !important;
99886
99964
  }
99965
+
99966
+ /* Row Lock will hide row tool */
99967
+ .row-lock .is-row-tool,
99968
+ .row-lock .is-rowadd-tool {
99969
+ display: none !important;
99970
+ }
99887
99971
 
99888
99972
  div[data-html] {
99889
99973
  min-height: 70px;
@@ -107343,7 +107427,7 @@ class Common {
107343
107427
 
107344
107428
  if (topTouched && bottomTouched) {
107345
107429
  block.style.top = 0;
107346
- block.style.bottom = 0;
107430
+ if (!block.classList.contains('height-auto')) block.style.bottom = 0; // height-auto should not have bottom=0
107347
107431
  block.style.height = '';
107348
107432
  }
107349
107433
  if (leftTouched && rightTouched) {
@@ -107352,13 +107436,21 @@ class Common {
107352
107436
  block.style.width = '';
107353
107437
  }
107354
107438
  if (bottomTouched && !topTouched) {
107355
- block.style.bottom = 0;
107439
+ if (!block.classList.contains('height-auto')) block.style.bottom = 0; // height-auto should not have bottom=0
107356
107440
  block.style.height = '';
107357
107441
  }
107358
107442
  if (rightTouched && !leftTouched) {
107359
107443
  block.style.right = 0;
107360
107444
  block.style.width = '';
107361
107445
  }
107446
+
107447
+ // reset
107448
+ setTimeout(() => {
107449
+ this.horizontalRulerTop.removeAttribute('data-topTouched');
107450
+ this.horizontalRulerBottom.removeAttribute('data-bottomTouched');
107451
+ this.verticalRulerLeft.removeAttribute('data-leftTouched');
107452
+ this.verticalRulerRight.removeAttribute('data-rightTouched');
107453
+ }, 10);
107362
107454
  }
107363
107455
  applyPixels(block) {
107364
107456
  const zoom = this.zoom;
@@ -109060,8 +109152,12 @@ class Draggable {
109060
109152
  target.setAttribute('data-starty', y);
109061
109153
 
109062
109154
  // reset (from applyPercentage bottomTouched)
109063
- target.style.height = target.offsetHeight + 'px';
109064
- target.style.bottom = '';
109155
+ if (target.style.bottom) {
109156
+ if (!target.classList.contains('height-auto')) {
109157
+ target.style.height = target.offsetHeight + 'px';
109158
+ }
109159
+ target.style.bottom = '';
109160
+ }
109065
109161
  this.common.applyPixels(target);
109066
109162
  });
109067
109163
  this.clickedBlock = this.common.getSelectedBlock();
@@ -109184,6 +109280,15 @@ class Draggable {
109184
109280
  if (this.onChange) this.onChange();
109185
109281
  }
109186
109282
  handleSelect(event) {
109283
+ if (!this.doc.querySelector(this.selector + '.active')) {
109284
+ // Make the current scrollbar state (visible or not) to stay during the block select (drag or resize)
109285
+ let scrollbar = this.doc.documentElement.scrollHeight > this.doc.documentElement.clientHeight;
109286
+ if (!scrollbar) {
109287
+ this.doc.body.style.overflowY = 'hidden';
109288
+ } else {
109289
+ this.doc.body.style.overflowY = 'scroll';
109290
+ }
109291
+ }
109187
109292
  const element = event.target;
109188
109293
  if (element.classList.contains('rotate-handle')) return;
109189
109294
  const block = element.closest(this.selector);
@@ -109233,6 +109338,9 @@ class Draggable {
109233
109338
  this.doc.querySelectorAll(this.selector + '.active').forEach(elm => elm.classList.remove('active'));
109234
109339
  this.doc.querySelectorAll('.block-active').forEach(elm => elm.classList.remove('block-active'));
109235
109340
  if (this.onSelectClear) this.onSelectClear();
109341
+
109342
+ // Return back the scrollbar state when clicking on page (not block)
109343
+ this.doc.body.style.overflowY = ''; // see handleSelect()
109236
109344
  }
109237
109345
 
109238
109346
  // Check if multiple selection occurs. If so, add 'multi' class to hide all the handles
@@ -145384,7 +145492,7 @@ class ContentBox {
145384
145492
  assetRefresh: false,
145385
145493
  slider: '',
145386
145494
  navbar: false,
145387
- screenMode: 'desktop',
145495
+ screenMode: 'fullview',
145388
145496
  onRender: function () {},
145389
145497
  onChange: function () {},
145390
145498
  // onImageBrowseClick: function () { },
@@ -149285,10 +149393,14 @@ Add an image for each feature.`, 'Create a new block showcasing a photo gallery
149285
149393
  display: none !important;
149286
149394
  }
149287
149395
  .hard-select .box-select {
149288
- outline: #00da89 1px solid;
149289
- outline-offset: -1px;
149290
- z-index: 1;
149396
+ outline: #00da89 1px solid;
149397
+ outline-offset: -1px;
149398
+ z-index: 1;
149399
+ }
149400
+ .hard-select .box-select.box-canvas {
149401
+ outline: #ff9fda 1px solid;
149291
149402
  }
149403
+
149292
149404
  .hard-select .box-select .is-box-tool {
149293
149405
  display: flex !important;
149294
149406
  }