updated ui/dist

This commit is contained in:
Gani Georgiev
2023-03-24 22:30:57 +02:00
parent d8b4daf47f
commit 78a9f7429c
65 changed files with 415 additions and 6697 deletions
@@ -26,7 +26,7 @@
let changePasswordToggle = false;
$: hasChanges =
(admin.isNew && email != "") ||
(admin.$isNew && email != "") ||
changePasswordToggle ||
email !== admin.email ||
avatar !== admin.avatar;
@@ -44,7 +44,7 @@
}
function load(model) {
admin = model?.clone ? model.clone() : new Admin();
admin = model?.$clone ? model.$clone() : new Admin();
reset(); // reset form
}
@@ -65,13 +65,13 @@
isSaving = true;
const data = { email, avatar };
if (admin.isNew || changePasswordToggle) {
if (admin.$isNew || changePasswordToggle) {
data["password"] = password;
data["passwordConfirm"] = passwordConfirm;
}
let request;
if (admin.isNew) {
if (admin.$isNew) {
request = ApiClient.admins.create(data);
} else {
request = ApiClient.admins.update(admin.id, data);
@@ -81,7 +81,7 @@
.then(async (result) => {
confirmClose = false;
hide();
addSuccessToast(admin.isNew ? "Successfully created admin." : "Successfully updated admin.");
addSuccessToast(admin.$isNew ? "Successfully created admin." : "Successfully updated admin.");
dispatch("save", result);
if (ApiClient.authStore.model?.id === result.id) {
@@ -136,12 +136,12 @@
>
<svelte:fragment slot="header">
<h4>
{admin.isNew ? "New admin" : "Edit admin"}
{admin.$isNew ? "New admin" : "Edit admin"}
</h4>
</svelte:fragment>
<form id={formId} class="grid" autocomplete="off" on:submit|preventDefault={save}>
{#if !admin.isNew}
{#if !admin.$isNew}
<Field class="form-field readonly" name="id" let:uniqueId>
<label for={uniqueId}>
<i class={CommonHelper.getFieldTypeIcon("primary")} />
@@ -186,14 +186,14 @@
<input type="email" autocomplete="off" id={uniqueId} required bind:value={email} />
</Field>
{#if !admin.isNew}
{#if !admin.$isNew}
<Field class="form-field form-field-toggle" let:uniqueId>
<input type="checkbox" id={uniqueId} bind:checked={changePasswordToggle} />
<label for={uniqueId}>Change password</label>
</Field>
{/if}
{#if admin.isNew || changePasswordToggle}
{#if admin.$isNew || changePasswordToggle}
<div class="col-12">
<div class="grid" transition:slide|local={{ duration: 150 }}>
<div class="col-sm-6">
@@ -232,7 +232,7 @@
</form>
<svelte:fragment slot="footer">
{#if !admin.isNew}
{#if !admin.$isNew}
<button type="button" aria-label="More" class="btn btn-sm btn-circle btn-transparent">
<!-- empty span for alignment -->
<span />
@@ -257,7 +257,7 @@
class:btn-loading={isSaving}
disabled={!hasChanges || isSaving}
>
<span class="txt">{admin.isNew ? "Create" : "Save changes"}</span>
<span class="txt">{admin.$isNew ? "Create" : "Save changes"}</span>
</button>
</svelte:fragment>
</OverlayPanel>
@@ -91,6 +91,8 @@
<RuleField
label="Manage rule"
formKey="options.manageRule"
placeholder=""
required={collection.options.manageRule !== null}
{collection}
bind:rule={collection.options.manageRule}
>
@@ -51,11 +51,11 @@
schemaTabError = "";
}
$: isSystemUpdate = !collection.isNew && collection.system;
$: isSystemUpdate = !collection.$isNew && collection.system;
$: hasChanges = initialFormHash != calculateFormHash(collection);
$: canSave = collection.isNew || hasChanges;
$: canSave = collection.$isNew || hasChanges;
$: if (activeTab === TAB_OPTIONS && collection.type !== TYPE_AUTH) {
// reset selected tab
@@ -99,7 +99,7 @@
if (typeof model !== "undefined") {
original = model;
collection = model.clone();
collection = model.$clone();
} else {
original = null;
collection = new Collection();
@@ -115,7 +115,7 @@
}
function saveWithConfirm() {
if (collection.isNew) {
if (collection.$isNew) {
save();
} else {
confirmChangesPanel?.show(original, collection);
@@ -132,7 +132,7 @@
const data = exportFormData();
let request;
if (collection.isNew) {
if (collection.$isNew) {
request = ApiClient.collections.create(data);
} else {
request = ApiClient.collections.update(collection.id, data);
@@ -148,11 +148,13 @@
hide();
addSuccessToast(
collection.isNew ? "Successfully created collection." : "Successfully updated collection."
collection.$isNew
? "Successfully created collection."
: "Successfully updated collection."
);
dispatch("save", {
isNew: collection.isNew,
isNew: collection.$isNew,
collection: result,
});
})
@@ -165,7 +167,7 @@
}
function exportFormData() {
const data = collection.export();
const data = collection.$export();
data.schema = data.schema.slice(0);
// remove deleted fields
@@ -221,7 +223,7 @@
}
async function duplicate() {
const clone = original?.clone();
const clone = original?.$clone();
if (clone) {
clone.id = "";
@@ -274,10 +276,10 @@
>
<svelte:fragment slot="header">
<h4 class="upsert-panel-title">
{collection.isNew ? "New collection" : "Edit collection"}
{collection.$isNew ? "New collection" : "Edit collection"}
</h4>
{#if !collection.isNew && !collection.system}
{#if !collection.$isNew && !collection.system}
<div class="flex-fill" />
<button type="button" aria-label="More" class="btn btn-sm btn-circle btn-transparent flex-gap-0">
<i class="ri-more-line" />
@@ -318,7 +320,7 @@
required
disabled={isSystemUpdate}
spellcheck="false"
autofocus={collection.isNew}
autofocus={collection.$isNew}
placeholder={collection.isAuth ? `eg. "users"` : `eg. "posts"`}
value={collection.name}
on:input={(e) => {
@@ -330,15 +332,15 @@
<div class="form-field-addon">
<button
type="button"
class="btn btn-sm p-r-10 p-l-10 {collection.isNew
class="btn btn-sm p-r-10 p-l-10 {collection.$isNew
? 'btn-outline'
: 'btn-transparent'}"
disabled={!collection.isNew}
disabled={!collection.$isNew}
>
<!-- empty span for alignment -->
<span />
<span class="txt">Type: {collectionTypes[collection.type] || "N/A"}</span>
{#if collection.isNew}
{#if collection.$isNew}
<i class="ri-arrow-down-s-fill" />
<Toggler class="dropdown dropdown-right dropdown-nowrap m-t-5">
{#each Object.entries(collectionTypes) as [type, label]}
@@ -452,7 +454,7 @@
disabled={!canSave || isSaving}
on:click={() => saveWithConfirm()}
>
<span class="txt">{collection.isNew ? "Create" : "Save changes"}</span>
<span class="txt">{collection.$isNew ? "Create" : "Save changes"}</span>
</button>
</svelte:fragment>
</OverlayPanel>
@@ -39,7 +39,7 @@
$: hasAnyChange = CommonHelper.hasCollectionChanges(collectionA, collectionB, deleteMissing);
const mainModelProps = Object.keys(new Collection().export()).filter(
const mainModelProps = Object.keys(new Collection().$export()).filter(
(key) => !["schema", "created", "updated"].includes(key)
);
@@ -16,7 +16,7 @@
let codeEditorComponent;
let isCodeEditorComponentLoading = false;
$: presetColumns = collection?.schema?.map((f) => f.name) || [];
$: presetColumns = collection?.schema?.filter((f) => !f.toDelete)?.map((f) => f.name) || [];
$: indexParts = CommonHelper.parseIndex(index);
@@ -12,6 +12,7 @@
export let label = "Rule";
export let formKey = "rule";
export let required = false;
export let placeholder = "Leave empty to grant everyone access...";
let editorRef = null;
let tempValue = null;
@@ -83,7 +84,7 @@
bind:value={rule}
baseCollection={collection}
disabled={isAdminOnly}
placeholder={!isAdminOnly ? "Leave empty to grant everyone access..." : ""}
placeholder={!isAdminOnly ? placeholder : ""}
/>
{#if isAdminOnly}
@@ -109,10 +110,6 @@
{/if}
<style lang="scss">
label .label {
margin: -5px 0;
background: rgba(53, 71, 104, 0.12);
}
.lock-toggle {
position: absolute;
right: 0px;
@@ -72,8 +72,8 @@
async function load(model) {
setErrors({}); // reset errors
original = model || new Record();
if (model?.clone) {
record = model.clone();
if (model?.$clone) {
record = model.$clone();
} else {
record = new Record();
}
@@ -138,7 +138,7 @@
}
function exportFormData() {
const data = record?.export() || {};
const data = record?.$export() || {};
const formData = new FormData();
const exportableFields = {
@@ -237,7 +237,7 @@
}
async function duplicate() {
const clone = original?.clone();
const clone = original?.$clone();
if (clone) {
clone.id = "";
@@ -28,15 +28,15 @@
<div class="grid m-b-base">
<div class="col-lg-6">
<Field class="form-field {!record.isNew ? 'required' : ''}" name="username" let:uniqueId>
<Field class="form-field {!record.$isNew ? 'required' : ''}" name="username" let:uniqueId>
<label for={uniqueId}>
<i class={CommonHelper.getFieldTypeIcon("user")} />
<span class="txt">Username</span>
</label>
<input
type="text"
requried={!record.isNew}
placeholder={record.isNew ? "Leave empty to auto generate..." : originalUsername}
requried={!record.$isNew}
placeholder={record.$isNew ? "Leave empty to auto generate..." : originalUsername}
id={uniqueId}
bind:value={record.username}
/>
@@ -69,7 +69,7 @@
<!-- svelte-ignore a11y-autofocus -->
<input
type="email"
autofocus={record.isNew}
autofocus={record.$isNew}
autocomplete="off"
id={uniqueId}
required={collection.options?.requireEmail}
@@ -79,14 +79,14 @@
</div>
<div class="col-lg-12">
{#if !record.isNew}
{#if !record.$isNew}
<Field class="form-field form-field-toggle" name="verified" let:uniqueId>
<input type="checkbox" id={uniqueId} bind:checked={changePasswordToggle} />
<label for={uniqueId}>Change password</label>
</Field>
{/if}
{#if record.isNew || changePasswordToggle}
{#if record.$isNew || changePasswordToggle}
<div class="block" transition:slide|local={{ duration: 150 }}>
<div class="grid" class:p-t-xs={changePasswordToggle}>
<div class="col-sm-6">
@@ -131,7 +131,7 @@
id={uniqueId}
bind:checked={record.verified}
on:change|preventDefault={(e) => {
if (record.isNew) {
if (record.$isNew) {
return; // no confirmation required
}
confirm(
@@ -44,17 +44,13 @@
isSubmitting = true;
try {
// @todo replace with dedicated SDK method
const result = await ApiClient.send("/api/settings/apple/generate-client-secret", {
method: "POST",
body: {
teamId: teamId,
clientId: clientId,
keyId: keyId,
privateKey: privateKey.trim(),
duration: duration,
},
});
const result = await ApiClient.generateAppleClientSecret(
clientId,
teamId,
keyId,
privateKey.trim(),
duration
);
isSubmitting = false;