From 48b86bcf751a0570befdff3374bdc59599953bf7 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 23 Jul 2025 19:22:40 +0530 Subject: [PATCH] move: attribute creation on top level. --- src/lib/helpers/sidebar.ts | 2 +- .../collection-[collection]/+layout.svelte | 12 +++---- .../collection-[collection]/+page.svelte | 35 +++++++++++++++---- .../attributes/+page.svelte | 22 +++--------- .../indexes/+page.svelte | 7 ++-- .../layout/sidesheet.svelte | 2 +- .../collection-[collection]/store.ts | 2 ++ 7 files changed, 44 insertions(+), 38 deletions(-) diff --git a/src/lib/helpers/sidebar.ts b/src/lib/helpers/sidebar.ts index fb0c91bd1..5ad4d0ece 100644 --- a/src/lib/helpers/sidebar.ts +++ b/src/lib/helpers/sidebar.ts @@ -8,7 +8,7 @@ const userPreferences = () => get(user)?.prefs; // for spreadsheet, closed with icons const isInDatabasesRoute = (page: Page) => { return page.route.id?.includes('databases/database-[database]'); -} +}; export function updateSidebarState(page: Page, state: 'closed' | 'open' | 'icons') { if (isInDatabasesRoute(page)) return; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte index d319f65c3..c92551f63 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte @@ -202,10 +202,10 @@ -{#if $createAttributeArgs.showCreate} - -{/if} + + + -{#if $showCreateIndex} - -{/if} + + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte index 07375467b..458ef84d7 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte @@ -9,7 +9,13 @@ import { canWriteCollections, canWriteDocuments } from '$lib/stores/roles'; import { Icon, Layout, Divider } from '@appwrite.io/pink-svelte'; import type { PageData } from './$types'; - import { collection, columns, isCsvImportInProgress, showRecordsCreateSheet } from './store'; + import { + collection, + columns, + isCsvImportInProgress, + showRecordsCreateSheet, + showCreateAttributeSheet + } from './store'; import SpreadSheet from './spreadsheet.svelte'; import { writable } from 'svelte/store'; import FilePicker from '$lib/components/filePicker.svelte'; @@ -18,17 +24,20 @@ import { addNotification } from '$lib/stores/notifications'; import { Click, Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { isSmallViewport } from '$lib/stores/viewport'; - import { IconPlus, IconSearch } from '@appwrite.io/pink-icons-svelte'; + import { IconPlus } from '@appwrite.io/pink-icons-svelte'; import type { Models } from '@appwrite.io/console'; import EmptySheet from './layout/emptySheet.svelte'; import CreateRecord from './createRecord.svelte'; - import { goto } from '$app/navigation'; - import { base } from '$app/paths'; + import SideSheet from './layout/sidesheet.svelte'; + import CreateAttribute from './createAttribute.svelte'; + import { type Option } from './attributes/store'; export let data: PageData; let showImportCSV = false; const filterColumns = writable([]); + let createAttribute: CreateAttribute; + let selectedOption: Option['name'] = 'String'; $: selected = preferences.getCustomCollectionColumns(page.params.collection); @@ -185,9 +194,7 @@ primary: { text: 'Create column', onClick: async () => { - await goto( - `${base}/project-${page.params.region}-${page.params.project}/databases/database-${page.params.database}/collection-${page.params.collection}/attributes` - ); + $showCreateAttributeSheet = true; } } }} /> @@ -212,3 +219,17 @@ collection={$collection} bind:showSheet={$showRecordsCreateSheet.show} bind:existingData={$showRecordsCreateSheet.document} /> + + await createAttribute?.submit(), + disabled: !selectedOption + }}> + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte index 0a042943a..1a99bd5d0 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte @@ -14,14 +14,13 @@ Tooltip, Typography } from '@appwrite.io/pink-svelte'; - import CreateAttribute from '../createAttribute.svelte'; import { isRelationship, isString } from '../document-[document]/attributes/store'; import FailedModal from '../failedModal.svelte'; import CreateIndex from '../indexes/createIndex.svelte'; import { attributes, type Attributes, indexes, isCsvImportInProgress } from '../store'; import Delete from './deleteAttribute.svelte'; import EditAttribute from './edit.svelte'; - import { attributeOptions, type Option } from './store'; + import { attributeOptions } from './store'; import { IconArrowSmRight, IconDotsHorizontal, @@ -41,11 +40,10 @@ import SideSheet from '../layout/sidesheet.svelte'; import SpreadsheetContainer from '../layout/spreadsheet.svelte'; import EmptySheet from '../layout/emptySheet.svelte'; + import { showCreateAttributeSheet } from '../store'; let showDropdown = []; - let selectedOption: Option['name'] = 'String'; let selectedAttribute: Attributes = null; - let showCreate = false; let showDelete = false; let showCreateIndex = false; let showFailed = false; @@ -54,7 +52,6 @@ let showEdit = false; let createIndex: CreateIndex; let editAttribute: EditAttribute; - let createAttribute: CreateAttribute; const attributeFormatIcon = { ip: IconLocationMarker, @@ -89,7 +86,7 @@ size="s" secondary disabled={$isCsvImportInProgress} - on:click={() => (showCreate = true)} + on:click={() => ($showCreateAttributeSheet = true)} event="create_attribute"> Create column @@ -273,23 +270,12 @@ showActions={$canWriteCollections} actions={{ primary: { - onClick: () => (showCreate = true) + onClick: () => ($showCreateAttributeSheet = true) } }} /> {/if} - await createAttribute.submit(), - disabled: !selectedOption - }}> - - - {#if showDelete} {/if} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte index 86ea92141..7a77003d1 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte @@ -28,12 +28,11 @@ import { Click, trackEvent } from '$lib/actions/analytics'; import EmptySheet from '../layout/emptySheet.svelte'; import SpreadsheetContainer from '../layout/spreadsheet.svelte'; - import { goto } from '$app/navigation'; - import { base } from '$app/paths'; import { page } from '$app/state'; import SideSheet from '../layout/sidesheet.svelte'; import { flags } from '$lib/flags'; import type { PageData } from './$types'; + import { showCreateAttributeSheet } from '../store'; let { data @@ -201,9 +200,7 @@ primary: { text: 'Create columns', onClick: async () => { - await goto( - `${base}/project-${page.params.region}-${page.params.project}/databases/database-${page.params.database}/collection-${page.params.collection}/attributes` - ); + $showCreateAttributeSheet = true; } } }} /> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/layout/sidesheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/layout/sidesheet.svelte index a7c9009e3..7727cd633 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/layout/sidesheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/layout/sidesheet.svelte @@ -19,7 +19,7 @@ | { text: string; disabled?: boolean; - onClick: () => void | Promise; + onClick?: () => void | Promise; } | undefined; children?: Snippet; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts index 72eaa6804..b3e9a8470 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts @@ -67,3 +67,5 @@ export const sortState = writable({ column: null as string, direction: 'default' as SortDirection }); + +export const showCreateAttributeSheet = writable(false);