Skip to content

Commit c34a2ca

Browse files
Copilothotlong
andcommitted
feat: hide ViewSwitcher by default for cleaner list page UI
- Add showViewSwitcher prop to ListView (default: false) - Change ObjectView showViewSwitcher default to false - Update ObjectViewSchema documentation - View type is now fixed at creation in ViewDesigner, not runtime - Follows Airtable-like simplicity principle Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
1 parent f856a33 commit c34a2ca

3 files changed

Lines changed: 16 additions & 10 deletions

File tree

packages/plugin-list/src/ListView.tsx

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ export interface ListViewProps {
2424
onSearchChange?: (search: string) => void;
2525
/** Callback when a row/item is clicked (overrides NavigationConfig) */
2626
onRowClick?: (record: Record<string, unknown>) => void;
27+
/** Show view type switcher (Grid/Kanban/etc). Default: false (view type is fixed) */
28+
showViewSwitcher?: boolean;
2729
[key: string]: any;
2830
}
2931

@@ -68,6 +70,7 @@ export const ListView: React.FC<ListViewProps> = ({
6870
onSortChange,
6971
onSearchChange,
7072
onRowClick,
73+
showViewSwitcher = false,
7174
...props
7275
}) => {
7376
// Kernel level default: Ensure viewType is always defined (default to 'grid')
@@ -392,14 +395,16 @@ export const ListView: React.FC<ListViewProps> = ({
392395
{/* Airtable-style Toolbar */}
393396
<div className="border-b px-4 py-2 flex items-center justify-between gap-4 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60">
394397
<div className="flex items-center gap-2 flex-1 overflow-hidden">
395-
{/* View Switcher on the Left */}
396-
<div className="flex items-center pr-2 border-r mr-2">
397-
<ViewSwitcher
398-
currentView={currentView}
399-
availableViews={availableViews}
400-
onViewChange={handleViewChange}
401-
/>
402-
</div>
398+
{/* View Switcher on the Left (optional, hidden by default) */}
399+
{showViewSwitcher && (
400+
<div className="flex items-center pr-2 border-r mr-2">
401+
<ViewSwitcher
402+
currentView={currentView}
403+
availableViews={availableViews}
404+
onViewChange={handleViewChange}
405+
/>
406+
</div>
407+
)}
403408

404409
{/* Action Tools */}
405410
<div className="flex items-center gap-1">

packages/plugin-view/src/ObjectView.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -857,7 +857,7 @@ export const ObjectView: React.FC<ObjectViewProps> = ({
857857
const showSearchBox = schema.showSearch !== false;
858858
const showCreateButton = schema.showCreate !== false && operations.create !== false;
859859
const showRefreshButton = schema.showRefresh !== false;
860-
const showViewSwitcherToggle = schema.showViewSwitcher !== false;
860+
const showViewSwitcherToggle = schema.showViewSwitcher === true; // Changed: default to false (hidden)
861861

862862
return (
863863
<div className="flex flex-col gap-3">

packages/types/src/objectql.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -833,7 +833,8 @@ export interface ObjectViewSchema extends BaseSchema {
833833

834834
/**
835835
* Show view switcher (for multi-view)
836-
* @default true
836+
* When false (default), view type is fixed at creation in ViewDesigner
837+
* @default false
837838
*/
838839
showViewSwitcher?: boolean;
839840

0 commit comments

Comments
 (0)