Created a dirty site variable and cloned the edited site. Fixes the focus bug and prevents unsaved changes from appearing in the table after cancelling the editor.
This commit is contained in:
@@ -48,14 +48,19 @@
|
|||||||
const deleteSite = site => {
|
const deleteSite = site => {
|
||||||
//TODO:
|
//TODO:
|
||||||
};
|
};
|
||||||
|
// Create a holder for the site being edited. This allows us to clear the editor when the user finishes, and allows the table or parent view to setup the editor.
|
||||||
let editedSite = writable(null);
|
let editedSite = writable(null);
|
||||||
|
let dirtySite = null;
|
||||||
|
// Copy the edited site when ever it changes, set some defaults for a new site object (to make the view happy).
|
||||||
|
editedSite.subscribe(site => {dirtySite = Object.assign({name: ""}, site)});
|
||||||
|
// Load the sites (reactive).
|
||||||
let sites = Sites.find({});
|
let sites = Sites.find({});
|
||||||
|
|
||||||
const applySiteChanges = () => {
|
const applySiteChanges = () => {
|
||||||
if($editedSite._id)
|
if(dirtySite._id)
|
||||||
Meteor.call("sites.update", $editedSite._id,$editedSite.name);
|
Meteor.call("sites.update", dirtySite._id, dirtySite.name);
|
||||||
else
|
else
|
||||||
Meteor.call("sites.add", $editedSite.name);
|
Meteor.call("sites.add", dirtySite.name);
|
||||||
editedSite.set(null);
|
editedSite.set(null);
|
||||||
}
|
}
|
||||||
const rejectSiteChanges = () => {
|
const rejectSiteChanges = () => {
|
||||||
@@ -65,10 +70,10 @@
|
|||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<GridTable bind:rows={sites} columns="{siteColumns}" actions="{actions}" rowKey="{(user) => {return user._id}}" bind:edited="{editedSite}">
|
<GridTable bind:rows={sites} columns="{siteColumns}" actions="{actions}" rowKey="{(user) => {return user._id}}" bind:edited="{editedSite}">
|
||||||
{#if $editedSite}
|
{#if dirtySite}
|
||||||
<div class="editorContainer">
|
<div class="editorContainer">
|
||||||
<div style="grid-column: 1/span 1">
|
<div style="grid-column: 1/span 1">
|
||||||
<TextField type="text" style="width: 100%" bind:value={$editedSite.name} label="Name">
|
<TextField type="text" style="width: 100%" bind:value={dirtySite.name} label="Name">
|
||||||
<HelperText slot="helper">Provide a unique name for the site.</HelperText>
|
<HelperText slot="helper">Provide a unique name for the site.</HelperText>
|
||||||
</TextField>
|
</TextField>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user