Skip to content

Error using as part of crud editor in position OVERLAYย #23

@dominik42

Description

@dominik42

Describe the bug

If the MarkdownEditor is used as part of a Vaadin Crud Editor with position OVERLAY, the following error occur.
If the crud editor position is set to ASIDE or BOTTOM, it works properly.

Unexpected Application Error!
Node.removeChild: The node to be removed is not a child of this node

removeChildFromContainer@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:56627:22
commitDeletionEffectsOnFiber@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:65672:43
recursivelyTraverseDeletionEffects@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:65649:39
commitDeletionEffectsOnFiber@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:65774:47
recursivelyTraverseDeletionEffects@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:65649:39
...
recursivelyTraverseMutationEffects@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:65849:41
commitMutationEffectsOnFiber@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:65863:47
recursivelyTraverseMutationEffects@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:65849:41
commitMutationEffectsOnFiber@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:65958:47
commitMutationEffects@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:65827:37
commitRootImpl@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:67507:32
commitRoot@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:67437:25
finishConcurrentRender@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:66966:23
performConcurrentWorkOnRoot@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:66876:35
workLoop@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:48303:50
flushWork@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:48282:22
performWorkUntilDeadline@http://localhost:8080/VAADIN/build/indexhtml-XewVLE9m.js:48490:29

๐Ÿ’ฟ Hey developer ๐Ÿ‘‹

You can provide a way better UX than this when your app throws errors by providing your own ErrorBoundary or errorElement prop on your route.

Expected behavior

MarkdownEditor should work for all crud editor positions.

Minimal reproducible example

public HelpCrudView(ApplicationContext springContext) {
        this.crud = new Crud<>(HelpRecord.class, createEditor());
        this.crud.setEditorPosition(CrudEditorPosition.OVERLAY);

        // layout
        setSizeFull();
        this.crud.setSizeFull();

        add(this.crud);
    }

    private CrudEditor<HelpRecord> createEditor() {
        TextField id = new TextField("ID");
        MarkdownEditor content = new MarkdownEditor();
        content.setSizeFull();
        content.setPlaceholder("Enter Markdown here");
        content.setMaxLength(500);

        VerticalLayout form = new VerticalLayout(id, content);
        form.setSizeFull();

        Binder<HelpRecord> binder = new Binder<>(HelpRecord.class);
        binder.forField(id)
                .asRequired()
                .bind(HelpRecord::getId, HelpRecord::setId);

        binder.forField(content)
                .asRequired()
                .bind(HelpRecord::getContent, HelpRecord::setContent);

        return new BinderCrudEditor<>(binder, form);
    }

Add-on Version

2.0.1

Vaadin Version

24.8.7

Additional information

MacOS 15.6.1
Firefox 142.0

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

Inbox (needs triage)

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions