diff --git a/package.json b/package.json index f12341aefc..b3477013e1 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@appwrite.io/pink-icons": "0.25.0", "@appwrite.io/pink-icons-svelte": "^2.0.0-RC.1", "@appwrite.io/pink-legacy": "^1.0.3", - "@appwrite.io/pink-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@ee1b778", + "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@3228c15", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", "@stripe/stripe-js": "^3.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3664a807f..ed57cd44d3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,8 +24,8 @@ importers: specifier: ^1.0.3 version: 1.0.3 '@appwrite.io/pink-svelte': - specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@ee1b778 - version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@ee1b778(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@3228c15 + version: https://pkg.vc/-/@appwrite/%40appwrite.io%2Fpink-svelte@3228c15(svelte@5.25.3) '@popperjs/core': specifier: ^2.11.8 version: 2.11.8 @@ -260,9 +260,8 @@ packages: '@appwrite.io/console@1.9.0': resolution: {integrity: sha512-g8+zfdBF8mz7tRUER4CGVe5FHWQVLp8TlY/UOGCZ2TgUF1qnpNu/DhiQgph8uF+QZ9jDKCLAAZlP5//9t7ckWA==} - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@ee1b7788cd3f877c9aa1b6487976bd63a6196870': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@ee1b7788cd3f877c9aa1b6487976bd63a6196870} - version: 2.0.0-RC.1 + '@appwrite.io/pink-icons-svelte@2.0.0-RC.1': + resolution: {integrity: sha512-iLFlV55hj8mGuAbmxJGenxN5RaZMmVT4GJb9dv/MP1xBAtYibFq7JvBcxm18qV2KU8c31Rntf+Ub4GL7HwqTYg==} peerDependencies: svelte: ^4.0.0 @@ -281,8 +280,8 @@ packages: '@appwrite.io/pink-legacy@1.0.3': resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==} - '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@ee1b778': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@ee1b778} + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/%40appwrite.io%2Fpink-svelte@3228c15': + resolution: {tarball: https://pkg.vc/-/@appwrite/%40appwrite.io%2Fpink-svelte@3228c15} version: 2.0.0-RC.2 peerDependencies: svelte: ^4.0.0 @@ -1265,6 +1264,14 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@tanstack/svelte-virtual@3.13.10': + resolution: {integrity: sha512-MVpi/yJpliu6ab7ScrYWk3VYhRh2gwyXZxEV12G5TYZqu/hNEqvw6GUTYBcAg6xzRq4VKtxt89rQSqlGyG4OMA==} + peerDependencies: + svelte: ^3.48.0 || ^4.0.0 || ^5.0.0 + + '@tanstack/virtual-core@3.13.10': + resolution: {integrity: sha512-sPEDhXREou5HyZYqSWIqdU580rsF6FGeN7vpzijmP3KTiOGjOMZASz4Y6+QKjiFQwhWrR58OP8izYaNGVxvViA==} + '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} @@ -3637,7 +3644,7 @@ snapshots: '@appwrite.io/console@1.9.0': {} - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@ee1b7788cd3f877c9aa1b6487976bd63a6196870(svelte@5.25.3)': + '@appwrite.io/pink-icons-svelte@2.0.0-RC.1(svelte@5.25.3)': dependencies: svelte: 5.25.3 @@ -3654,12 +3661,13 @@ snapshots: '@appwrite.io/pink-icons': 1.0.0 the-new-css-reset: 1.11.3 - '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@ee1b778(svelte@5.25.3)': + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/%40appwrite.io%2Fpink-svelte@3228c15(svelte@5.25.3)': dependencies: - '@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@ee1b7788cd3f877c9aa1b6487976bd63a6196870(svelte@5.25.3) + '@appwrite.io/pink-icons-svelte': 2.0.0-RC.1(svelte@5.25.3) '@floating-ui/dom': 1.6.13 '@melt-ui/pp': 0.3.2(@melt-ui/svelte@0.86.6(svelte@5.25.3))(svelte@5.25.3) '@melt-ui/svelte': 0.86.6(svelte@5.25.3) + '@tanstack/svelte-virtual': 3.13.10(svelte@5.25.3) ansicolor: 2.0.3 d3: 7.9.0 fuse.js: 7.1.0 @@ -4710,6 +4718,13 @@ snapshots: dependencies: tslib: 2.8.1 + '@tanstack/svelte-virtual@3.13.10(svelte@5.25.3)': + dependencies: + '@tanstack/virtual-core': 3.13.10 + svelte: 5.25.3 + + '@tanstack/virtual-core@3.13.10': {} + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.26.2 diff --git a/src/lib/components/columnSelector.svelte b/src/lib/components/columnSelector.svelte index c113d5e9ca..e09fa74fcc 100644 --- a/src/lib/components/columnSelector.svelte +++ b/src/lib/components/columnSelector.svelte @@ -19,7 +19,7 @@ } = $props(); let maxHeight = $state('none'); - let containerRef; + let containerRef: HTMLDivElement = $state(); const calcMaxHeight = () => { if (containerRef) { @@ -67,7 +67,7 @@ calcMaxHeight(); }); - let selectedColumnsNumber = $derived( + const selectedColumnsNumber = $derived( $columns.reduce((acc, column) => { if (column.hide === true) return acc; diff --git a/src/lib/helpers/types.ts b/src/lib/helpers/types.ts index 7f4e6a66ed..961c992d06 100644 --- a/src/lib/helpers/types.ts +++ b/src/lib/helpers/types.ts @@ -60,7 +60,8 @@ export type TableRootProp = { selectedAll: boolean; selectedNone: boolean; selectedSome: boolean; - columns: Record; + columns: Array | number; + columnsMap: Record; toggle: (id: string) => void; toggleAll: () => void; addAvailableId: (id: string) => void; diff --git a/src/lib/stores/preferences.ts b/src/lib/stores/preferences.ts index 8513fa9c2f..8fedc3f522 100644 --- a/src/lib/stores/preferences.ts +++ b/src/lib/stores/preferences.ts @@ -108,7 +108,7 @@ function createPreferences() { ); }, getCustomCollectionColumns: (collectionId: string): Preferences['columns'] => { - return preferences?.collections?.[collectionId] ?? []; + return preferences?.collections?.[collectionId] ?? null; }, setLimit: (limit: Preferences['limit']) => updateAndSync((n) => { 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 289cb6368f..1a1d8d2fbe 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 @@ -14,7 +14,6 @@ import CreateAttribute from './createAttribute.svelte'; import { collection, columns, isCsvImportInProgress } from './store'; import Table from './table.svelte'; - import { writable } from 'svelte/store'; import FilePicker from '$lib/components/filePicker.svelte'; import { page } from '$app/state'; import { sdk } from '$lib/stores/sdk'; @@ -32,28 +31,22 @@ let showCreateAttribute = false; let selectedAttribute: Option['name'] = null; - const filterColumns = writable([]); - $: selected = preferences.getCustomCollectionColumns(page.params.collection); - $: columns.set( - $collection.attributes.map((attribute) => ({ + + $: columns.set([ + { id: '$id', width: 200, title: 'Document ID', type: 'string' }, + ...$collection.attributes.map((attribute) => ({ id: attribute.key, title: attribute.key, type: attribute.type as ColumnType, - show: selected?.includes(attribute.key) ?? true, + hide: !(selected?.includes(attribute.key) ?? true), array: attribute?.array, + width: { min: 168 }, format: 'format' in attribute && attribute?.format === 'enum' ? attribute.format : null, elements: 'elements' in attribute ? attribute.elements : null - })) - ); - $: filterColumns.set([ - ...$columns, - ...['$id', '$createdAt', '$updatedAt'].map((id) => ({ - id, - title: id, - show: true, - type: (id === '$id' ? 'string' : 'datetime') as ColumnType - })) + })), + { id: '$created', width: 200, title: 'Created', type: 'datetime' }, + { id: '$updated', width: 200, title: 'Updated', type: 'datetime' } ]); $: hasAttributes = !!$collection.attributes.length; @@ -99,7 +92,7 @@ disabled={!(hasAttributes && hasValidAttributes)} analyticsSource="database_documents" /> - + {#if flags.showCsvImport(data)}