diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6891fef59..8fcb73389 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -61,6 +61,7 @@ Follow the [install instructions](https://appwrite.io/docs/advanced/self-hosting ### 4. Setup environment variables Add a `.env` file by copying the `.env.example` file as a template in the project's root directory. + > **Note** > If you are updating from Appwrite `1.5.x`, be aware that the variables for the console in the `.env` / `.env.example` file have changed in `1.6.x`. diff --git a/src/lib/components/drop.svelte b/src/lib/components/drop.svelte index 9d4e07e0d..2d4ee2b73 100644 --- a/src/lib/components/drop.svelte +++ b/src/lib/components/drop.svelte @@ -120,7 +120,7 @@ bind:this={tooltip} class:u-width-full-line={fullWidth} style:--arrow-size={`${arrowSize}px`} - style:z-index="10"> + style:z-index="21">
+ style:--drop-width-size-desktop={width ? `${width}rem` : ''} + style:position> {#if $$slots.list}
{#if isCloud} diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 28e5be689..707d0f66f 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -65,200 +65,239 @@ export const scopes: { scope: string; description: string; category: string; + icon: string; }[] = [ { scope: 'sessions.write', description: "Access to create, update and delete your project's sessions", - category: 'Auth' + category: 'Auth', + icon: 'user-group' }, { scope: 'users.read', description: "Access to read your project's users", - category: 'Auth' + category: 'Auth', + icon: 'user-group' }, { scope: 'users.write', description: "Access to create, update, and delete your project's users", - category: 'Auth' + category: 'Auth', + icon: 'user-group' }, { scope: 'teams.read', description: "Access to read your project's teams", - category: 'Auth' + category: 'Auth', + icon: 'user-group' }, { scope: 'teams.write', description: "Access to create, update, and delete your project's teams", - category: 'Auth' + category: 'Auth', + icon: 'user-group' }, { scope: 'databases.read', description: "Access to read your project's databases", - category: 'Database' + category: 'Database', + icon: 'database' }, { scope: 'databases.write', description: "Access to create, update, and delete your project's databases", - category: 'Database' + category: 'Database', + icon: 'database' }, { scope: 'collections.read', description: "Access to read your project's database collections", - category: 'Database' + category: 'Database', + icon: 'database' }, { scope: 'collections.write', description: "Access to create, update, and delete your project's database collections", - category: 'Database' + category: 'Database', + icon: 'database' }, { scope: 'attributes.read', description: "Access to read your project's database collection's attributes", - category: 'Database' + category: 'Database', + icon: 'database' }, { scope: 'attributes.write', description: "Access to create, update, and delete your project's database collection's attributes", - category: 'Database' + category: 'Database', + icon: 'database' }, { scope: 'indexes.read', description: "Access to read your project's database collection's indexes", - category: 'Database' + category: 'Database', + icon: 'database' }, { scope: 'indexes.write', description: "Access to create, update, and delete your project's database collection's indexes", - category: 'Database' + category: 'Database', + icon: 'database' }, { scope: 'documents.read', description: "Access to read your project's database documents", - category: 'Database' + category: 'Database', + icon: 'database' }, { scope: 'documents.write', description: "Access to create, update, and delete your project's database documents", - category: 'Database' + category: 'Database', + icon: 'database' }, { scope: 'files.read', description: "Access to read your project's storage files and preview images", - category: 'Storage' + category: 'Storage', + icon: 'folder' }, { scope: 'files.write', description: "Access to create, update, and delete your project's storage files", - category: 'Storage' + category: 'Storage', + icon: 'folder' }, { scope: 'buckets.read', description: "Access to read your project's storage buckets", - category: 'Storage' + category: 'Storage', + icon: 'folder' }, { scope: 'buckets.write', description: "Access to create, update, and delete your project's storage buckets", - category: 'Storage' + category: 'Storage', + icon: 'folder' }, { scope: 'functions.read', description: "Access to read your project's functions and code deployments", - category: 'Functions' + category: 'Functions', + icon: 'lightning-bolt' }, { scope: 'functions.write', description: "Access to create, update, and delete your project's functions and code deployments", - category: 'Functions' + category: 'Functions', + icon: 'lightning-bolt' }, { scope: 'execution.read', description: "Access to read your project's execution logs", - category: 'Functions' + category: 'Functions', + icon: 'lightning-bolt' }, { scope: 'execution.write', description: "Access to execute your project's functions", - category: 'Functions' + category: 'Functions', + icon: 'lightning-bolt' }, { scope: 'targets.read', description: "Access to read your project's messaging targets", - category: 'Messaging' + category: 'Messaging', + icon: 'send' }, { scope: 'targets.write', description: "Access to create, update, and delete your project's messaging targets", - category: 'Messaging' + category: 'Messaging', + icon: 'send' }, { scope: 'providers.read', description: "Access to read your project's messaging providers", - category: 'Messaging' + category: 'Messaging', + icon: 'send' }, { scope: 'providers.write', description: "Access to create, update, and delete your project's messaging providers", - category: 'Messaging' + category: 'Messaging', + icon: 'send' }, { scope: 'messages.read', description: "Access to read your project's messages", - category: 'Messaging' + category: 'Messaging', + icon: 'send' }, { scope: 'messages.write', description: "Access to create, update, and delete your project's messages", - category: 'Messaging' + category: 'Messaging', + icon: 'send' }, { scope: 'topics.read', description: "Access to read your project's messaging topics", - category: 'Messaging' + category: 'Messaging', + icon: 'send' }, { scope: 'topics.write', description: "Access to create, update, and delete your project's messaging topics", - category: 'Messaging' + category: 'Messaging', + icon: 'send' }, { scope: 'subscribers.read', description: "Access to read your project's messaging topic subscribers", - category: 'Messaging' + category: 'Messaging', + icon: 'send' }, { scope: 'subscribers.write', description: "Access to create, update, and delete your project's messaging topic subscribers", - category: 'Messaging' + category: 'Messaging', + icon: 'send' }, { scope: 'locale.read', description: "Access to access your project's Locale service", - category: 'Other' + category: 'Other', + icon: 'globe' }, { scope: 'avatars.read', description: "Access to access your project's Avatars service", - category: 'Other' + category: 'Other', + icon: 'globe' }, { scope: 'health.read', description: "Access to read your project's health status", - category: 'Other' + category: 'Other', + icon: 'globe' }, { scope: 'migrations.read', description: "Access to read your project's migration status", - category: 'Other' + category: 'Other', + icon: 'globe' }, { scope: 'migrations.write', description: 'Access to create migrations', - category: 'Other' + category: 'Other', + icon: 'globe' } ]; diff --git a/src/lib/elements/forms/inputFile.svelte b/src/lib/elements/forms/inputFile.svelte index 3ecb27959..76c3babcc 100644 --- a/src/lib/elements/forms/inputFile.svelte +++ b/src/lib/elements/forms/inputFile.svelte @@ -32,7 +32,7 @@ } function isFileExtensionAllowed(fileExtension: string) { - if (allowedFileExtensions.length && !allowedFileExtensions.includes(fileExtension)) { + if (allowedFileExtensions?.length && !allowedFileExtensions.includes(fileExtension)) { return false; } return true; @@ -42,7 +42,7 @@ hovering = false; if (!ev.dataTransfer.items) return; for (let i = 0; i < ev.dataTransfer.items.length; i++) { - const fileExtension = ev.dataTransfer.items[i].getAsFile().name.split('.')[1]; + const fileExtension = ev.dataTransfer.items[i].getAsFile().name.split('.').pop(); if (!isFileExtensionAllowed(fileExtension)) { error = 'Invalid file extension'; return; @@ -183,15 +183,16 @@ {#if files?.length}