Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ParentElement's property overflow change to scroll post exception #166

Open
1 task done
pba-cra opened this issue Nov 30, 2022 · 0 comments
Open
1 task done

ParentElement's property overflow change to scroll post exception #166

pba-cra opened this issue Nov 30, 2022 · 0 comments
Labels
bug Something isn't working

Comments

@pba-cra
Copy link
Contributor

pba-cra commented Nov 30, 2022

Affected version

main

No same issues found.

  • Yes, I search all issues but not found.

Steps to Reproduce

Code example

let div;
div = createElement(
  'div',
  {
    style: {
      width: '100%',
      height: '500px',
      background: 'red',
      overflow: 'hidden',
    },
  },
  [
  ]
);
document.body.appendChild(div);
document.body.style.width = '100%';
document.body.style.height = '100vh';
document.body.style.background = '#000';
document.body.style.overflow = 'hidden';
document.body.style.position = 'relative';
document.body.style.color = '#fff';

let div2 = createElement(
  'div',
  {
    style: {
      position: 'absolute',
      width: '20px',
      height: '20px',
      background: 'green',
    },
  },
  []
);
append(div,div2);
div.style.overflow = 'scroll';

function createElement(tag, props, child) {
  const el = document.createElement(tag);
  setElementProps(el, props);
  if (Array.isArray(child)) {
    child.forEach(c => el.appendChild(c));
  } else if (child) {
    el.appendChild(child);
  }
  return el;
}

function append(parent, child) {
  parent.appendChild(child);
}

function createElementWithStyle(tag, style, child) {
  const el = document.createElement(tag);
  setElementStyle(el, style);
  if (Array.isArray(child)) {
    child.forEach(c => el.appendChild(c));
  } else if (child) {
    el.appendChild(child);
  }
  return el;
}
function setElementProps(el, props) {
  let keys = Object.keys(props);
  for (let key of keys) {
    if (key === 'style') {
      setElementStyle(el, props[key]);
    } else {
      el[key] = props[key];
    }
  }
}
function setElementStyle(dom, object) {
  if (object == null) return;
  for (let key in object) {
    if (object.hasOwnProperty(key)) {
      dom.style[key] = object[key];
    }
  }
}
function createText(content) {
  return document.createTextNode(content);
}

Expected results

no exception post

Actual results

post exception

flutter: type 'Null' is not a subtype of type 'ContainerParentDataMixin' in type cast
#0 RenderBoxModel.getPreviousSibling (package:webf/src/rendering/box_model.dart:1371:63)
#1 Element.addToContainingBlock (package:webf/src/dom/element.dart:770:50)
#2 Element._updateRenderBoxModelWithPosition. (package:webf/src/dom/element.dart:750:15)
#3 List.forEach (dart:core-patch/growable_array.dart:416:8)
#4 Element._updateRenderBoxModelWithPosition (package:webf/src/dom/element.dart:749:32)
#5 Element.setRenderStyleProperty (package:webf/src/dom/element.dart:1233:9)
#6 Element.setRenderStyle (package:webf/src/dom/element.dart:1522:5)
#7 BodyElement.setRenderStyle (package:webf/src/html/body.dart:40:15)
#8 Element._onStyleChanged (package:webf/src/dom/element.dart:1599:7)
#9 CSSStyleDeclaration._emitPropertyChanged (package:webf/src/css/style_declaration.dart:559:22)
#10 CSSStyleDeclaration.flushPendingProperties (package<…>

@pba-cra pba-cra added the bug Something isn't working label Nov 30, 2022
@pba-cra pba-cra assigned pba-cra and unassigned pba-cra Nov 30, 2022
@pba-cra pba-cra changed the title ParentElement's property overflow change to scroll post expection ParentElement's property overflow change to scroll post exception Nov 30, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant