TinyBase logoTinyBase

<EditableValueView />

In this demo, we showcase the EditableValueView component, which allows you to edit Values in the Store in a web environment.

Rather than building the whole demo and boilerplate from scratch, we're making changes to the <ValuesInHtmlTable /> demo to show this new component.

Set Up

We start off by simply adding the component to the imports:

-const {ValuesInHtmlTable} = TinyBaseUiReactDom;
+const {EditableValueView, ValuesInHtmlTable} = TinyBaseUiReactDom;

Using the EditableValueView Component

The EditableValueView component simply needs the valueId to render and make editable. We replace one of the tables from the original demo to add the control:

 const Body = () => {
   return (
     <>
      <ValuesInHtmlTable />
-     <ValuesInHtmlTable headerRow={false} idColumn={false} />
+     <div id='edit'>
+       Username:
+       <EditableValueView valueId='username' />
+     </div>
     </>
   );
 };

We can style its container and the button that lets you change type:

#edit {
  background: white;
  box-shadow: 0 0 1rem #0004;
  margin: 2rem;
  min-width: 16rem;
  padding: 0.5rem 1rem 1rem;
}
.editableValue {
  button {
    width: 4rem;
    margin-right: 0.5rem;
  }
}

And finally, we can enable the editable prop on the original ValuesInHtmlTable component so that it uses this view for its own rendering:

-     <ValuesInHtmlTable />
+     <ValuesInHtmlTable editable={true}/>

And just like that you have an internally consistent editing experience!

There's a very similar component for Cells that we will now explore in the equivalent <EditableCellView /> demo.