Skip to content

Commit

Permalink
feat: delete the field
Browse files Browse the repository at this point in the history
fixes #23
  • Loading branch information
linonetwo committed May 15, 2024
1 parent 2479d1d commit c2e8a65
Showing 1 changed file with 24 additions and 18 deletions.
42 changes: 24 additions & 18 deletions src/super-tag/widgets/utils/formOnChange.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,34 @@
import type * as JSONEditor from '@json-editor/json-editor';

export function formOnChange(currentTiddlerTitle?: string, editor?: JSONEditor.JSONEditor<unknown> | undefined, errorValidatorInfoElement?: HTMLElement) {
if (editor === undefined) return;
if (currentTiddlerTitle === undefined || editor === undefined) return;
const latestFormValue = editor?.getValue() as Record<string, unknown>;
if (currentTiddlerTitle !== undefined && latestFormValue !== undefined && latestFormValue !== null) {
// Get an array of errors from the validator
const errors = editor.validate();
if (errors.length > 0) {
if (errorValidatorInfoElement !== undefined) {
errorValidatorInfoElement.className = 'label label-warning';
errorValidatorInfoElement.textContent = 'Form not valid';
}
} else {
const tiddlerFields = $tw.wiki.getTiddler(currentTiddlerTitle)?.fields ?? ({} as Record<string, unknown>);
if (latestFormValue === undefined || latestFormValue === null) {
return;
}
// Get an array of errors from the validator
const errors = editor.validate();
if (errors.length > 0) {
if (errorValidatorInfoElement !== undefined) {
errorValidatorInfoElement.className = 'label label-warning';
errorValidatorInfoElement.textContent = 'Form not valid';
}
return
} else {
const tiddlerFields = $tw.wiki.getTiddler(currentTiddlerTitle)?.fields ?? ({} as Record<string, unknown>);

let hasChange = false;
Object.keys(latestFormValue).forEach((key) => {
if (tiddlerFields[key] !== latestFormValue[key]) {
hasChange = true;
let hasChange = false;
Object.keys(latestFormValue).forEach((key) => {
if (tiddlerFields[key] !== latestFormValue[key]) {
hasChange = true;
// if user delete the value from the form, also delete the field.
if (tiddlerFields[key] && !latestFormValue[key]) {
delete tiddlerFields[key];
}
});
if (hasChange) {
$tw.wiki.addTiddler({ ...tiddlerFields, ...latestFormValue, title: currentTiddlerTitle });
}
});
if (hasChange) {
$tw.wiki.addTiddler({ ...tiddlerFields, ...latestFormValue, title: currentTiddlerTitle });
}
}
}

0 comments on commit c2e8a65

Please sign in to comment.