1
0
Fork 0
mirror of synced 2024-07-04 05:50:57 +12:00

Fix for field modal infinite render loop once closed from click away (#42)

This commit is contained in:
Conor_Mack 2019-12-04 22:13:06 +00:00 committed by Michael Shanks
parent 5a2ffac934
commit 0e0369052c
2 changed files with 42 additions and 41 deletions

View file

@ -1,41 +1,41 @@
<script>
import UIkit from "uikit";
export let isOpen = false;
export let onClosed = () => {};
export let id = "";
let ukModal;
let listenerAdded = false;
$: {
if(ukModal && !listenerAdded) {
listenerAdded = true;
ukModal.addEventListener("hide", onClosed);
}
if(ukModal) {
if(isOpen) {
UIkit.modal(ukModal).show();
} else {
UIkit.modal(ukModal).hide();
}
}
}
</script>
<div bind:this={ukModal} uk-modal {id}>
<div class="uk-modal-dialog uk-modal-body" uk-overflow-auto>
<slot />
</div>
</div>
<style>
.uk-modal-dialog {
border-radius: .3rem;
}
<script>
import UIkit from "uikit";
export let isOpen = false;
export let onClosed = () => {};
export let id = "";
let ukModal;
let listenerAdded = false;
$: {
if(ukModal && !listenerAdded) {
listenerAdded = true;
ukModal.addEventListener("hidden", onClosed);
}
if(ukModal) {
if(isOpen) {
UIkit.modal(ukModal).show();
} else {
UIkit.modal(ukModal).hide();
}
}
}
</script>
<div bind:this={ukModal} uk-modal {id}>
<div class="uk-modal-dialog uk-modal-body" uk-overflow-auto>
<slot />
</div>
</div>
<style>
.uk-modal-dialog {
border-radius: .3rem;
}
</style>

View file

@ -39,6 +39,7 @@ store.subscribe($store => {
editingField = true;
}
onFinishedFieldEdit = (field) => {
if(field) {
store.saveField(field);
@ -139,7 +140,7 @@ const nameChanged = ev => {
{/if}
{#if editingField}
<Modal bind:isOpen={editingField}>
<Modal bind:isOpen={editingField} onClosed={() => onFinishedFieldEdit(false) }>
<FieldView field={fieldToEdit}
onFinished={onFinishedFieldEdit}
allFields={record.fields}