@innovastudio/contentbuilder 1.5.19 → 1.5.21

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@innovastudio/contentbuilder",
3
3
  "type": "module",
4
- "version": "1.5.19",
4
+ "version": "1.5.21",
5
5
  "description": "",
6
6
  "main": "public/contentbuilder/contentbuilder.esm.js",
7
7
  "files": [
@@ -52757,26 +52757,37 @@ class RowTool {
52757
52757
  if (btnCellAdd) dom.addEventListener(btnCellAdd, 'click', () => {
52758
52758
  let cell = util.cellSelected();
52759
52759
  if (!cell) return;
52760
+ const viewportHeight = window.innerHeight;
52761
+ const newPos = util.getElementPosition(btnCellAdd);
52762
+ let top = newPos.top;
52763
+ let left = newPos.left;
52760
52764
  renderQuickAdd(this.builder);
52761
52765
  let quickadd = this.builder.builderStuff.querySelector('.is-pop.quickadd');
52762
52766
  let tabs = quickadd.querySelector('.is-pop-tabs');
52763
52767
  tabs.style.display = 'flex';
52764
- const newPos = util.getElementPosition(btnCellAdd);
52765
- let top = newPos.top + window.pageYOffset;
52766
- let left = newPos.left + window.pageXOffset;
52767
- if (this.builder.iframe) {
52768
- left = left + 3;
52769
- }
52770
52768
  util.showPop(quickadd, false, btnCellAdd);
52771
- quickadd.style.top = top + 35 + 'px';
52772
- quickadd.style.left = left + 'px';
52773
- dom.removeClass(quickadd, 'arrow-bottom');
52774
- dom.removeClass(quickadd, 'arrow-left');
52775
- dom.removeClass(quickadd, 'arrow-right');
52776
- dom.removeClass(quickadd, 'center');
52777
- dom.removeClass(quickadd, 'right');
52778
- dom.addClass(quickadd, 'arrow-top');
52779
- dom.addClass(quickadd, 'left');
52769
+ const h = quickadd.offsetHeight;
52770
+ if (viewportHeight - top > h) {
52771
+ // pop bottom
52772
+ quickadd.style.top = top + window.pageYOffset + 35 + 'px';
52773
+ quickadd.style.left = left + 'px';
52774
+ dom.removeClass(quickadd, 'arrow-bottom');
52775
+ dom.removeClass(quickadd, 'arrow-right');
52776
+ dom.removeClass(quickadd, 'arrow-left');
52777
+ dom.removeClass(quickadd, 'center');
52778
+ dom.addClass(quickadd, 'arrow-top');
52779
+ dom.addClass(quickadd, 'left');
52780
+ } else {
52781
+ // pop top
52782
+ quickadd.style.top = top + window.pageYOffset - h - 8 + 'px';
52783
+ quickadd.style.left = left + 'px';
52784
+ dom.removeClass(quickadd, 'arrow-top');
52785
+ dom.removeClass(quickadd, 'arrow-right');
52786
+ dom.removeClass(quickadd, 'arrow-left');
52787
+ dom.removeClass(quickadd, 'center');
52788
+ dom.addClass(quickadd, 'arrow-bottom');
52789
+ dom.addClass(quickadd, 'left');
52790
+ }
52780
52791
  let val = quickadd.querySelector('.active').getAttribute('data-value');
52781
52792
  if (val === 'left') {
52782
52793
  quickadd.setAttribute('data-mode', 'cell-left');
@@ -52816,21 +52827,38 @@ class RowTool {
52816
52827
  if (btnCellMore) dom.addEventListener(btnCellMore, 'click', () => {
52817
52828
  let cell = util.cellSelected();
52818
52829
  if (!cell) return;
52830
+ const viewportHeight = window.innerHeight;
52819
52831
  const newPos = util.getElementPosition(btnCellMore);
52820
- let top = newPos.top + window.pageYOffset;
52821
- let left = newPos.left + window.pageXOffset;
52832
+ let top = newPos.top;
52833
+ let left = newPos.left;
52822
52834
  this.builder.colTool.renderColMore();
52823
52835
  const columnMore = builderStuff.querySelector('.columnmore');
52824
- util.showPop(columnMore, false, btnCellMore);
52825
- columnMore.style.top = top + 35 + 'px';
52826
- columnMore.style.left = left - 7 + 'px';
52827
- dom.removeClass(columnMore, 'arrow-bottom');
52828
- dom.removeClass(columnMore, 'arrow-left');
52829
- dom.removeClass(columnMore, 'arrow-right');
52830
- dom.removeClass(columnMore, 'center');
52831
- dom.removeClass(columnMore, 'right');
52832
- dom.addClass(columnMore, 'arrow-top');
52833
- dom.addClass(columnMore, 'left');
52836
+ setTimeout(() => {
52837
+ // give delay after renderColMore()
52838
+ util.showPop(columnMore, false, btnCellMore);
52839
+ const h = columnMore.offsetHeight;
52840
+ if (viewportHeight - top > h) {
52841
+ columnMore.style.top = top + window.pageYOffset + 35 + 'px';
52842
+ columnMore.style.left = left - 7 + 'px';
52843
+ dom.removeClass(columnMore, 'arrow-bottom');
52844
+ dom.removeClass(columnMore, 'arrow-right');
52845
+ dom.removeClass(columnMore, 'arrow-left');
52846
+ dom.removeClass(columnMore, 'center');
52847
+ dom.removeClass(columnMore, 'right');
52848
+ dom.addClass(columnMore, 'arrow-top');
52849
+ dom.addClass(columnMore, 'left');
52850
+ } else {
52851
+ columnMore.style.top = top + window.pageYOffset - h - 8 + 'px';
52852
+ columnMore.style.left = left - 7 + 'px';
52853
+ dom.removeClass(columnMore, 'arrow-top');
52854
+ dom.removeClass(columnMore, 'arrow-right');
52855
+ dom.removeClass(columnMore, 'arrow-left');
52856
+ dom.removeClass(columnMore, 'center');
52857
+ dom.removeClass(columnMore, 'right');
52858
+ dom.addClass(columnMore, 'arrow-bottom');
52859
+ dom.addClass(columnMore, 'left');
52860
+ }
52861
+ }, 0);
52834
52862
  const btnCellLocking = columnMore.querySelector('.cell-locking');
52835
52863
  if (cell.hasAttribute('data-noedit')) {
52836
52864
  dom.addClass(btnCellLocking, 'on');
@@ -52984,32 +53012,67 @@ class RowTool {
52984
53012
 
52985
53013
  //Hide Column tool (new!)
52986
53014
  util.hideColumnTool();
53015
+
53016
+ /*
52987
53017
  const newPos = util.getElementPosition(btnMore);
52988
53018
  let top = newPos.top + window.pageYOffset;
52989
53019
  let left = newPos.left + window.pageXOffset;
52990
- this.renderRowMore();
53020
+ this.renderRowMore();
52991
53021
  const rowMore = this.rowMore;
52992
-
52993
- // rowMore.style.display = 'flex';
53022
+ // rowMore.style.display = 'flex';
52994
53023
  util.showPop(rowMore, false, btnMore);
52995
53024
  //const w = rowMore.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.
52996
53025
  //const h = rowMore.offsetHeight;
52997
- rowMore.style.top = top - 8 + 'px';
52998
- dom.removeClass(rowMore, 'arrow-bottom');
52999
- dom.removeClass(rowMore, 'arrow-left');
53000
- dom.removeClass(rowMore, 'arrow-right');
53001
- dom.removeClass(rowMore, 'center');
53002
- dom.removeClass(rowMore, 'right');
53003
- dom.removeClass(rowMore, 'left');
53004
- if (this.builder.opts.rowTool === 'right') {
53005
- rowMore.style.left = left - rowMore.offsetWidth - 10 + 'px';
53006
- dom.addClass(rowMore, 'arrow-right');
53007
- dom.addClass(rowMore, 'left');
53008
- } else {
53009
- rowMore.style.left = left + 35 + 'px';
53010
- dom.addClass(rowMore, 'arrow-left');
53011
- dom.addClass(rowMore, 'left');
53012
- }
53026
+ rowMore.style.top = (top - 8) + 'px';
53027
+ dom.removeClass(rowMore,'arrow-bottom');
53028
+ dom.removeClass(rowMore,'arrow-left');
53029
+ dom.removeClass(rowMore,'arrow-right');
53030
+ dom.removeClass(rowMore,'center');
53031
+ dom.removeClass(rowMore,'right');
53032
+ dom.removeClass(rowMore,'left');
53033
+ if(this.builder.opts.rowTool === 'right') {
53034
+
53035
+ rowMore.style.left = (left - rowMore.offsetWidth - 10) + 'px';
53036
+ dom.addClass(rowMore,'arrow-right');
53037
+ dom.addClass(rowMore,'left');
53038
+ } else {
53039
+ rowMore.style.left = (left + 35) + 'px';
53040
+ dom.addClass(rowMore,'arrow-left');
53041
+ dom.addClass(rowMore,'left');
53042
+ }
53043
+ */
53044
+
53045
+ const viewportHeight = window.innerHeight;
53046
+ const newPos = util.getElementPosition(btnMore);
53047
+ let top = newPos.top;
53048
+ let left = newPos.left;
53049
+ this.renderRowMore();
53050
+ const rowMore = this.rowMore;
53051
+ setTimeout(() => {
53052
+ // give delay after renderRowMore()
53053
+ util.showPop(rowMore, false, btnMore);
53054
+ const h = rowMore.offsetHeight;
53055
+ dom.removeClass(rowMore, 'arrow-bottom');
53056
+ dom.removeClass(rowMore, 'arrow-left');
53057
+ dom.removeClass(rowMore, 'arrow-right');
53058
+ dom.removeClass(rowMore, 'center');
53059
+ dom.removeClass(rowMore, 'right');
53060
+ dom.removeClass(rowMore, 'left');
53061
+ if (this.builder.opts.rowTool === 'right') {
53062
+ rowMore.style.left = left - rowMore.offsetWidth - 10 + 'px';
53063
+ dom.addClass(rowMore, 'arrow-right');
53064
+ dom.addClass(rowMore, 'left');
53065
+ } else {
53066
+ rowMore.style.left = left + 35 + 'px';
53067
+ dom.addClass(rowMore, 'arrow-left');
53068
+ dom.addClass(rowMore, 'left');
53069
+ }
53070
+ if (viewportHeight - top > h) {
53071
+ rowMore.style.top = top + window.pageYOffset - 8 + 'px';
53072
+ } else {
53073
+ rowMore.style.top = top + window.pageYOffset - h + btnMore.offsetHeight + 'px';
53074
+ }
53075
+ }, 0);
53013
53076
  let btnRowHtml = rowMore.querySelector('.row-html');
53014
53077
  let btnRowDuplicate = rowMore.querySelector('.row-duplicate');
53015
53078
  if (row.querySelector('[data-html]')) {
@@ -81896,7 +81959,7 @@ class Common {
81896
81959
 
81897
81960
  if (topTouched && bottomTouched) {
81898
81961
  block.style.top = 0;
81899
- block.style.bottom = 0;
81962
+ if (!block.classList.contains('height-auto')) block.style.bottom = 0; // height-auto should not have bottom=0
81900
81963
  block.style.height = '';
81901
81964
  }
81902
81965
  if (leftTouched && rightTouched) {
@@ -81905,13 +81968,21 @@ class Common {
81905
81968
  block.style.width = '';
81906
81969
  }
81907
81970
  if (bottomTouched && !topTouched) {
81908
- block.style.bottom = 0;
81971
+ if (!block.classList.contains('height-auto')) block.style.bottom = 0; // height-auto should not have bottom=0
81909
81972
  block.style.height = '';
81910
81973
  }
81911
81974
  if (rightTouched && !leftTouched) {
81912
81975
  block.style.right = 0;
81913
81976
  block.style.width = '';
81914
81977
  }
81978
+
81979
+ // reset
81980
+ setTimeout(() => {
81981
+ this.horizontalRulerTop.removeAttribute('data-topTouched');
81982
+ this.horizontalRulerBottom.removeAttribute('data-bottomTouched');
81983
+ this.verticalRulerLeft.removeAttribute('data-leftTouched');
81984
+ this.verticalRulerRight.removeAttribute('data-rightTouched');
81985
+ }, 10);
81915
81986
  }
81916
81987
  applyPixels(block) {
81917
81988
  const zoom = this.zoom;
@@ -83613,8 +83684,12 @@ class Draggable {
83613
83684
  target.setAttribute('data-starty', y);
83614
83685
 
83615
83686
  // reset (from applyPercentage bottomTouched)
83616
- target.style.height = target.offsetHeight + 'px';
83617
- target.style.bottom = '';
83687
+ if (target.style.bottom) {
83688
+ if (!target.classList.contains('height-auto')) {
83689
+ target.style.height = target.offsetHeight + 'px';
83690
+ }
83691
+ target.style.bottom = '';
83692
+ }
83618
83693
  this.common.applyPixels(target);
83619
83694
  });
83620
83695
  this.clickedBlock = this.common.getSelectedBlock();
@@ -83737,6 +83812,15 @@ class Draggable {
83737
83812
  if (this.onChange) this.onChange();
83738
83813
  }
83739
83814
  handleSelect(event) {
83815
+ if (!this.doc.querySelector(this.selector + '.active')) {
83816
+ // Make the current scrollbar state (visible or not) to stay during the block select (drag or resize)
83817
+ let scrollbar = this.doc.documentElement.scrollHeight > this.doc.documentElement.clientHeight;
83818
+ if (!scrollbar) {
83819
+ this.doc.body.style.overflowY = 'hidden';
83820
+ } else {
83821
+ this.doc.body.style.overflowY = 'scroll';
83822
+ }
83823
+ }
83740
83824
  const element = event.target;
83741
83825
  if (element.classList.contains('rotate-handle')) return;
83742
83826
  const block = element.closest(this.selector);
@@ -83786,6 +83870,9 @@ class Draggable {
83786
83870
  this.doc.querySelectorAll(this.selector + '.active').forEach(elm => elm.classList.remove('active'));
83787
83871
  this.doc.querySelectorAll('.block-active').forEach(elm => elm.classList.remove('block-active'));
83788
83872
  if (this.onSelectClear) this.onSelectClear();
83873
+
83874
+ // Return back the scrollbar state when clicking on page (not block)
83875
+ this.doc.body.style.overflowY = ''; // see handleSelect()
83789
83876
  }
83790
83877
 
83791
83878
  // Check if multiple selection occurs. If so, add 'multi' class to hide all the handles