Skip to content

fix: responsive layout for input fields and tables on mobile devices#2639

Merged
ItzNotABug merged 2 commits intoappwrite:mainfrom
AbhiVarde:fix-2629-mobile-responsive-tables
Dec 4, 2025
Merged

fix: responsive layout for input fields and tables on mobile devices#2639
ItzNotABug merged 2 commits intoappwrite:mainfrom
AbhiVarde:fix-2629-mobile-responsive-tables

Conversation

@AbhiVarde
Copy link
Copy Markdown
Contributor

@AbhiVarde AbhiVarde commented Nov 25, 2025

What does this PR do?

Problem

Three console pages had responsive layout issues on mobile and tablet viewports (< 768px):

  • Bucket Settings: InputTags component and extension tags overflowed horizontally beyond viewport
  • Platforms Table: Columns compressed improperly with no horizontal scroll, making content unreadable
  • Messaging Providers Table: Table overflowed horizontally with no scroll functionality

Solution

Implemented responsive fixes across all three pages:

  • Wrapped InputTags in a flex container with proper width constraints and wrapping behavior
  • Added horizontal scroll containers with touch-friendly scrolling for both tables
  • Configured explicit grid column sizing with minimum widths to maintain readability
  • Ensured all elements respect container boundaries on small screens

Changes Made

Files Modified:

  1. src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/page.svelte

    • Wrapped InputTags in container with min-width: 0; width: 100%;
    • Added flex-wrap: wrap; overflow-x: auto; to extension tags
  2. src/routes/(console)/project-[region]-[project]/overview/platforms/page.svelte

    • Added .table-scroll-wrapper with horizontal scroll and SCSS grid styles
  3. src/routes/(console)/project-[region]-[project]/messaging/providers/table.svelte

    • Added .table-scroll-wrapper with horizontal scroll and SCSS grid styles

Test Plan

  • ✅ Chrome DevTools mobile simulation
  • ✅ Physical device testing (Chrome 142.0.7444.60 on Windows 11)
  • ✅ Tablet viewports (768px - 1024px)
  • ✅ Desktop layout verification (no regressions)
  • ✅ Touch scrolling functionality on all affected tables

Screenshots

Page / Section Before (Current Issue) After (Fixed)
Storage Page - Bucket Settings Section (Mobile) Bucket Settings Mobile Before Bucket Settings Mobile After
Overview Page - Platforms Section (Mobile) Platforms Table Mobile Before Platforms Table Mobile After
Messaging Page - Providers Section (Mobile) Messaging Providers Mobile Before Messaging Providers Mobile After

Related PRs and Issues

Fixes #2629

Have you read the Contributing Guidelines?

Yes, I have read and followed the contributing guidelines.

Summary by CodeRabbit

  • New Features

    • Platform overview now supports dynamic column configuration for improved flexibility
  • Bug Fixes

    • Fixed file extension tags not wrapping properly in bucket settings
  • Style

    • Enhanced column width optimization across tables for better visual presentation and readability

✏️ Tip: You can customize this high-level summary in your review settings.

@appwrite
Copy link
Copy Markdown

appwrite Bot commented Nov 25, 2025

Console (appwrite/console)

Project ID: 688b7bf400350cbd60e9

Sites (1)
Site Status Logs Preview QR
 console-stage
688b7cf6003b1842c9dc
Failed Failed Authorize Preview URL QR Code

Tip

Schedule functions to run as often as every minute with cron expressions

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Nov 25, 2025

Walkthrough

This PR refactors column management for the platforms table by introducing a dedicated columns store and updates its configuration across multiple modules. The platforms page component was modified to dynamically render table headers using data from the new columns store instead of hardcoded definitions. Column width specifications were added to the messaging providers store. Additionally, tag wrapping behavior was enabled in the storage bucket settings section for improved layout flexibility.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

  • Minor refactoring applying consistent patterns across files (dynamic columns configuration and width specifications)
  • Single UI layout adjustment (tag wrapping)
  • Low logic density with straightforward data structure changes

Areas requiring attention:

  • Verify that column definitions in platforms/store.ts (name, type, identifier, updatedAt) align with the table structure expected by the page component
  • Confirm column width constraints in messaging/providers/store.ts provide adequate space for content without truncation
  • Test tag wrapping behavior in storage settings to ensure visual consistency across different screen sizes and container widths

Pre-merge checks and finishing touches

❌ Failed checks (2 inconclusive)
Check name Status Explanation Resolution
Linked Issues check ❓ Inconclusive The PR partially addresses issue #2629 requirements. Dynamic column definitions and width specifications improve table layouts, but CSS-level fixes for wrapping and scrolling mentioned in the issue appear incomplete in the code changes shown. Verify that all responsive fixes (flex containers, overflow-x, touch-friendly scrolling) from the PR description are actually implemented in the modified files, particularly CSS or styling changes not visible in the provided summaries.
Out of Scope Changes check ❓ Inconclusive The changes are within scope of issue #2629, but the raw_summary shows only Svelte template and store modifications without the CSS fixes described in the PR objectives (flex containers, scroll wrappers, grid sizing). Confirm that all CSS-level responsive layout changes referenced in the PR description are present in the actual files or were omitted from the provided summary.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main objective of fixing responsive layout issues for input fields and tables on mobile devices, matching the primary changes across three console pages.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e2c8613 and 5ccfd08.

📒 Files selected for processing (4)
  • src/routes/(console)/project-[region]-[project]/messaging/providers/store.ts (1 hunks)
  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte (2 hunks)
  • src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts (1 hunks)
  • src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/+page.svelte (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/+page.svelte
🧰 Additional context used
📓 Path-based instructions (6)
**/*.{ts,tsx,js,jsx,svelte}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx,js,jsx,svelte}: Import reusable modules from the src/lib directory using the $lib alias
Use minimal comments in code; reserve comments for TODOs or complex logic explanations
Use $lib, $routes, and $themes aliases instead of relative paths for module imports

Files:

  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
  • src/routes/(console)/project-[region]-[project]/messaging/providers/store.ts
  • src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts
src/routes/**/*.svelte

📄 CodeRabbit inference engine (AGENTS.md)

Use SvelteKit file conventions: +page.svelte for components, +page.ts for data loaders, +layout.svelte for wrappers, +error.svelte for error handling, and dynamic route params in square brackets like [param]

Files:

  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
**/*.{ts,tsx,js,jsx,svelte,json}

📄 CodeRabbit inference engine (AGENTS.md)

Use 4 spaces for indentation, single quotes, 100 character line width, and no trailing commas per Prettier configuration

Files:

  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
  • src/routes/(console)/project-[region]-[project]/messaging/providers/store.ts
  • src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts
**/*.svelte

📄 CodeRabbit inference engine (AGENTS.md)

Use Svelte 5 + SvelteKit 2 syntax with TypeScript for component development

Files:

  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
src/routes/**

📄 CodeRabbit inference engine (AGENTS.md)

Configure dynamic routes using SvelteKit convention with [param] syntax in route directory names

Files:

  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
  • src/routes/(console)/project-[region]-[project]/messaging/providers/store.ts
  • src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts
**/*.ts

📄 CodeRabbit inference engine (AGENTS.md)

**/*.ts: Define types inline or in .d.ts files, avoid creating separate .types.ts files
Use TypeScript in non-strict mode; any type is tolerated in this project

Files:

  • src/routes/(console)/project-[region]-[project]/messaging/providers/store.ts
  • src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts
🧠 Learnings (6)
📓 Common learnings
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2413
File: src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/indexes/view.svelte:84-84
Timestamp: 2025-10-09T12:22:41.099Z
Learning: In the Appwrite console databases UI, user-facing labels like "Columns" should remain unchanged even when internal terminology changes to "fields". The multi-terminology support refactors internal data models without changing the user-facing text.
📚 Learning: 2025-09-30T07:41:06.679Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2425
File: src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte:454-468
Timestamp: 2025-09-30T07:41:06.679Z
Learning: In `src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte`, the column suggestions API (console.suggestColumns) has a maximum limit of 7 columns returned, which aligns with the initial placeholder count of 7 in customColumns.

Applied to files:

  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
  • src/routes/(console)/project-[region]-[project]/messaging/providers/store.ts
  • src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts
📚 Learning: 2025-11-19T11:22:42.553Z
Learnt from: atharvadeosthale
Repo: appwrite/console PR: 2512
File: src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte:51-83
Timestamp: 2025-11-19T11:22:42.553Z
Learning: In src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte, the Cursor integration URL format `https://cursor.com/link/prompt` with the `text` query parameter is correct and functional.

Applied to files:

  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
📚 Learning: 2025-11-19T11:22:42.553Z
Learnt from: atharvadeosthale
Repo: appwrite/console PR: 2512
File: src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte:51-83
Timestamp: 2025-11-19T11:22:42.553Z
Learning: In src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte, the Lovable integration URL format `https://lovable.dev/` with `autosubmit` and `prompt` as query parameters (set via searchParams) is correct and functional.

Applied to files:

  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
📚 Learning: 2025-11-25T03:15:27.539Z
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Applies to src/routes/**/*.svelte : Use SvelteKit file conventions: +page.svelte for components, +page.ts for data loaders, +layout.svelte for wrappers, +error.svelte for error handling, and dynamic route params in square brackets like [param]

Applied to files:

  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
📚 Learning: 2025-09-08T13:20:47.308Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2316
File: src/routes/(console)/project-[region]-[project]/functions/create-function/deploy/+page.svelte:29-29
Timestamp: 2025-09-08T13:20:47.308Z
Learning: The Form.svelte component in the Appwrite console creates a FormContext with isSubmitting as writable(false) and expects consumers to work with Svelte writable stores, not plain booleans.

Applied to files:

  • src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts
🧬 Code graph analysis (1)
src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts (2)
src/routes/(console)/project-[region]-[project]/messaging/providers/store.ts (1)
  • columns (21-27)
src/lib/helpers/types.ts (1)
  • Column (44-61)
🔇 Additional comments (6)
src/routes/(console)/project-[region]-[project]/messaging/providers/store.ts (1)

22-26: LGTM! Width specifications support responsive behavior.

The width constraints are well-chosen: fixed 200px for the Provider ID column (consistent length) and minimum 120px for other columns to maintain readability while allowing flexibility. This aligns with the responsive layout objectives.

src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts (2)

3-4: LGTM! Correct imports for the new columns store.

The imports for writable and Column type are properly added to support the new dynamic column definitions.


6-11: LGTM! Well-structured columns store for responsive table behavior.

The new columns store provides a clean, centralized definition of table columns with appropriate minimum width constraints (120px) to ensure readability on small screens. The column IDs and titles align with the table rendering in +page.svelte.

src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte (3)

2-2: LGTM! Correct import for dynamic column definitions.

The import of the columns store enables the dynamic table header rendering and responsive width behavior.


125-125: LGTM! Table.Root now uses dynamic column definitions.

Passing $columns instead of a hardcoded number enables the table to apply width constraints and support responsive behavior. Based on the past review comments, this approach was confirmed working by the developer.


127-131: LGTM! Dynamic header rendering correctly implemented.

The dynamic header iterates over $columns and properly renders each header cell using column.id for the column identifier and column.title for display text. This replaces the previous static header cells and integrates cleanly with the column definitions in the store.

Tip

📝 Customizable high-level summaries are now available in beta!

You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.

  • Provide your own instructions using the high_level_summary_instructions setting.
  • Format the summary however you like (bullet lists, tables, multi-section layouts, contributor stats, etc.).
  • Use high_level_summary_in_walkthrough to move the summary from the description to the walkthrough section.

Example instruction:

"Divide the high-level summary into five sections:

  1. 📝 Description — Summarize the main change in 50–60 words, explaining what was done.
  2. 📓 References — List relevant issues, discussions, documentation, or related PRs.
  3. 📦 Dependencies & Requirements — Mention any new/updated dependencies, environment variable changes, or configuration updates.
  4. 📊 Contributor Summary — Include a Markdown table showing contributions:
    | Contributor | Lines Added | Lines Removed | Files Changed |
  5. ✔️ Additional Notes — Add any extra reviewer context.
    Keep each section concise (under 200 words) and use bullet or numbered lists for clarity."

Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
src/routes/(console)/project-[region]-[project]/messaging/providers/table.svelte (1)

42-91: Responsive wrapper and grid look correct; watch tight coupling to column count

The table-scroll-wrapper and the grid-based [role='table'] styling are a good way to get horizontal scroll and keep columns readable on small viewports. One thing to keep in mind: the grid-template-columns currently hard-codes 6 columns, while $columns comes from ./store. If someone later adds/removes a column, the visual layout could become misaligned unless this SCSS is updated in lockstep.

If the column set is expected to evolve, consider either:

  • Documenting this coupling next to the columns store, or
  • Using a more generic pattern (e.g. grid-auto-columns / repeat(...)) so the grid adapts automatically.

Also applies to: 93-105

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4371c8f and e2c8613.

📒 Files selected for processing (3)
  • src/routes/(console)/project-[region]-[project]/messaging/providers/table.svelte (1 hunks)
  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte (2 hunks)
  • src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/+page.svelte (2 hunks)
🧰 Additional context used
📓 Path-based instructions (5)
**/*.{ts,tsx,js,jsx,svelte}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx,js,jsx,svelte}: Import reusable modules from the src/lib directory using the $lib alias
Use minimal comments in code; reserve comments for TODOs or complex logic explanations
Use $lib, $routes, and $themes aliases instead of relative paths for module imports

Files:

  • src/routes/(console)/project-[region]-[project]/messaging/providers/table.svelte
  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
  • src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/+page.svelte
src/routes/**/*.svelte

📄 CodeRabbit inference engine (AGENTS.md)

Use SvelteKit file conventions: +page.svelte for components, +page.ts for data loaders, +layout.svelte for wrappers, +error.svelte for error handling, and dynamic route params in square brackets like [param]

Files:

  • src/routes/(console)/project-[region]-[project]/messaging/providers/table.svelte
  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
  • src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/+page.svelte
**/*.{ts,tsx,js,jsx,svelte,json}

📄 CodeRabbit inference engine (AGENTS.md)

Use 4 spaces for indentation, single quotes, 100 character line width, and no trailing commas per Prettier configuration

Files:

  • src/routes/(console)/project-[region]-[project]/messaging/providers/table.svelte
  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
  • src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/+page.svelte
**/*.svelte

📄 CodeRabbit inference engine (AGENTS.md)

Use Svelte 5 + SvelteKit 2 syntax with TypeScript for component development

Files:

  • src/routes/(console)/project-[region]-[project]/messaging/providers/table.svelte
  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
  • src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/+page.svelte
src/routes/**

📄 CodeRabbit inference engine (AGENTS.md)

Configure dynamic routes using SvelteKit convention with [param] syntax in route directory names

Files:

  • src/routes/(console)/project-[region]-[project]/messaging/providers/table.svelte
  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
  • src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/+page.svelte
🧠 Learnings (5)
📓 Common learnings
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2413
File: src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/indexes/view.svelte:84-84
Timestamp: 2025-10-09T12:22:41.099Z
Learning: In the Appwrite console databases UI, user-facing labels like "Columns" should remain unchanged even when internal terminology changes to "fields". The multi-terminology support refactors internal data models without changing the user-facing text.
📚 Learning: 2025-09-30T07:41:06.679Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2425
File: src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte:454-468
Timestamp: 2025-09-30T07:41:06.679Z
Learning: In `src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte`, the column suggestions API (console.suggestColumns) has a maximum limit of 7 columns returned, which aligns with the initial placeholder count of 7 in customColumns.

Applied to files:

  • src/routes/(console)/project-[region]-[project]/messaging/providers/table.svelte
  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
📚 Learning: 2025-11-19T11:22:42.553Z
Learnt from: atharvadeosthale
Repo: appwrite/console PR: 2512
File: src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte:51-83
Timestamp: 2025-11-19T11:22:42.553Z
Learning: In src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte, the Cursor integration URL format `https://cursor.com/link/prompt` with the `text` query parameter is correct and functional.

Applied to files:

  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
📚 Learning: 2025-11-19T11:22:42.553Z
Learnt from: atharvadeosthale
Repo: appwrite/console PR: 2512
File: src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte:51-83
Timestamp: 2025-11-19T11:22:42.553Z
Learning: In src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte, the Lovable integration URL format `https://lovable.dev/` with `autosubmit` and `prompt` as query parameters (set via searchParams) is correct and functional.

Applied to files:

  • src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte
  • src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/+page.svelte
📚 Learning: 2025-11-25T03:15:27.510Z
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.510Z
Learning: Applies to src/routes/**/*.svelte : Use SvelteKit file conventions: +page.svelte for components, +page.ts for data loaders, +layout.svelte for wrappers, +error.svelte for error handling, and dynamic route params in square brackets like [param]

Applied to files:

  • src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/+page.svelte
🔇 Additional comments (3)
src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/+page.svelte (2)

414-420: InputTags container and tag wrapping are appropriate for small screens

Wrapping InputTags in a min-width: 0; width: 100% div and enabling flex-wrap: wrap on the tag row is a solid way to stop horizontal overflow and keep the chips usable on narrow viewports. This should address the reported overflow without affecting desktop layouts.

Also applies to: 422-438


463-470: Delete button change is formatting-only

The updated brace/closing tag layout in the on:click handler doesn’t affect behavior and is consistent with the rest of the file.

src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte (1)

123-160: Scrollable wrapper and grid column sizing align well with the platforms table

Wrapping Table.Root in .table-scroll-wrapper and applying the grid-based [role='table'] styles gives you the needed horizontal scroll and preserves readable column widths on smaller viewports. The four minmax(calc(...), …) columns correctly match the four table columns and columns={4}, and -webkit-overflow-scrolling: touch will help on mobile.

This looks consistent with the pattern used for other responsive tables in the console.

Also applies to: 209-223

<Table.Header.Cell column={id} {root}>{title}</Table.Header.Cell>
{/each}
{/snippet}
<div class="table-scroll-wrapper">
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we don't need to add custom classes here, best to add width: { min: xxx } on the columns itself. You can easily search for the most commonly used dimensions.
Same for table on Overview as well 👍

Comment on lines +94 to +105
.table-scroll-wrapper {
overflow-x: auto;
-webkit-overflow-scrolling: touch;

:global([role='table']) {
display: grid;
grid-template-columns:
minmax(60px, 0.5fr) minmax(200px, 2.5fr) minmax(120px, 1fr) minmax(120px, 1fr)
minmax(120px, 1fr) minmax(120px, 1.5fr);
width: 100%;
}
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not needed as per the comment above.

</Table.Row.Link>
{/each}
</Table.Root>
<div class="table-scroll-wrapper">
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same as above.

Copy link
Copy Markdown
Contributor Author

@AbhiVarde AbhiVarde Nov 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @ItzNotABug, the overview platforms table originally had no columns in store.ts, so I added them with width: { min: xxx } and made the header dynamic:

// store.ts - newly added
export const columns = writable<Column[]>([
    { id: 'name', title: 'Name', type: 'string', width: { min: 120 } },
    // ...
]);
<!-- page.svelte - made dynamic -->
{#each $columns as column}
    <Table.Header.Cell {root} column={column.id}>
        {column.title}
    </Table.Header.Cell>
{/each}

However, unlike the messaging table which uses MultiSelectionTable, this uses Table.Root directly, so the width properties don't get applied and overflow still appears.

Should I keep the current wrapper classes, or is there another approach for Table.Root?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AbhiVarde
make sure to apply the created columns on the Table.Root as well like <Table.Root columns={$columns} let:root>

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Works perfectly, thanks! 🎉

label="Labels"
placeholder="Select or type user labels"
bind:tags={extensions} />
<div style="min-width: 0; width: 100%;">
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is not needed, the overflow is due to the Stack below.

</div>
{/key}
<Layout.Stack direction="row">
<Layout.Stack direction="row" style="flex-wrap: wrap; overflow-x: auto;">
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can just do <Layout.Stack direction="row" wrap="wrap">.

@AbhiVarde
Copy link
Copy Markdown
Contributor Author

All review comments addressed, ready for another look! 🙏
cc: @ItzNotABug

@AbhiVarde AbhiVarde requested a review from ItzNotABug November 25, 2025 15:10
@ItzNotABug ItzNotABug merged commit 4531063 into appwrite:main Dec 4, 2025
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🐛 Bug: Input fields and extension tags overflow on small devices in bucket settings, platforms table, and messaging providers table

2 participants