From 25ad3fefab7d7a659ecedfc1f7792386369745bf Mon Sep 17 00:00:00 2001 From: lexx Date: Thu, 8 Jan 2026 15:19:08 +0200 Subject: [PATCH] edit schema wip --- front/css/app.css | 6 + front/js/common/DeleteButton.svelte | 36 +++++ front/js/common/Sortable.svelte | 150 ++++++++++++++++++ .../FieldCreateEntry/FieldCreateEntry.svelte | 7 +- .../FieldEditEntry/FieldEditEntry.svelte | 90 +++++++++++ .../FieldEditEntry/TextFieldProps.svelte | 49 ++++++ .../SchemaEditEntry/SchemaEditEntry.svelte | 61 +++++++ front/js/entry/SchemaEntry/SchemaEntry.svelte | 45 +++++- front/js/helpers.js | 132 +++++++++++---- front/js/main.js | 4 + src/Core/Repository/FieldRepo.php | 27 +++- src/Core/Repository/SchemaRepo.php | 9 ++ src/Core/Schema/Data/Field.php | 1 + src/Core/Schema/Data/FieldProp/FieldProp.php | 9 +- src/Core/Schema/FieldModule.php | 7 +- src/Http/Controller/FieldController.php | 91 +++++++++++ src/Http/Controller/SchemaController.php | 21 +++ src/Http/web.php | 14 ++ 18 files changed, 714 insertions(+), 45 deletions(-) create mode 100644 front/js/common/DeleteButton.svelte create mode 100644 front/js/common/Sortable.svelte create mode 100644 front/js/entry/FieldEditEntry/FieldEditEntry.svelte create mode 100644 front/js/entry/FieldEditEntry/TextFieldProps.svelte create mode 100644 front/js/entry/SchemaEditEntry/SchemaEditEntry.svelte diff --git a/front/css/app.css b/front/css/app.css index 32c5534..96aba75 100644 --- a/front/css/app.css +++ b/front/css/app.css @@ -8,3 +8,9 @@ main { padding: 20px; } } + +button.danger { + background-color: #d93526; + border-color: #d93526; + color: white; +} diff --git a/front/js/common/DeleteButton.svelte b/front/js/common/DeleteButton.svelte new file mode 100644 index 0000000..43d7496 --- /dev/null +++ b/front/js/common/DeleteButton.svelte @@ -0,0 +1,36 @@ + + +{#if !isClicked} +
+ +
+{/if} +{#if isClicked} + Are you sure? +
+ +
+
+ +
+{/if} diff --git a/front/js/common/Sortable.svelte b/front/js/common/Sortable.svelte new file mode 100644 index 0000000..abbdf59 --- /dev/null +++ b/front/js/common/Sortable.svelte @@ -0,0 +1,150 @@ + + +{#if type === "table"} + + {#each items as item (getItem(item, itemKey))} + handleDragStart(e, item)} + ondragover={handleDragOver} + ondragleave={handleDragLeave} + ondrop={(e) => handleDrop(e, item)} + ondragend={handleDragEnd} + > + {@render itemView(item)} + + {/each} + +{:else} +
+ {#each items as item (getItem(item, itemKey))} +
handleDragStart(e, item)} + ondragover={handleDragOver} + ondragleave={handleDragLeave} + ondrop={(e) => handleDrop(e, item)} + ondragend={handleDragEnd} + > + {@render itemView(item)} +
+ {/each} +
+{/if} diff --git a/front/js/entry/FieldCreateEntry/FieldCreateEntry.svelte b/front/js/entry/FieldCreateEntry/FieldCreateEntry.svelte index 6042f2a..d259ce0 100644 --- a/front/js/entry/FieldCreateEntry/FieldCreateEntry.svelte +++ b/front/js/entry/FieldCreateEntry/FieldCreateEntry.svelte @@ -2,14 +2,13 @@ import ChannelLayout from "../../layouts/ChannelLayout.svelte"; import { post } from "../../modules/remote"; import { getApp } from "../../app"; - let { channel, user, data } = $props(); + let { channel, user, data, newRank } = $props(); let name = $state(""); let alias = $state(""); const app = getApp(); - function handleSchemaCreate(e) { + function handleCreate(e) { e.preventDefault(); - console.log(data); post( app.url("fields"), { @@ -33,7 +32,7 @@ {#snippet body()}

Create a {data.type} field

-
+