Skip to content

Commit bb108b8

Browse files
authored
Merge pull request #799 from objectstack-ai/copilot/add-listview-tab-bar
2 parents ee93610 + 4347f4f commit bb108b8

File tree

18 files changed

+411
-25
lines changed

18 files changed

+411
-25
lines changed

ROADMAP.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -715,6 +715,7 @@ The `FlowDesigner` is a canvas-based flow editor that bridges the gap between th
715715
- [x] Column `summary`: `summary` property added to ListViewSchema column type. Bridge passes through for aggregation rendering. ObjectGrid renders summary footer with count/sum/avg/min/max aggregations via `useColumnSummary` hook. Zod schema updated with `summary` field.
716716
- [x] Column `link`: ObjectGrid renders click-to-navigate buttons on link-type columns with `navigation.handleClick`. Primary field auto-linked.
717717
- [x] Column `action`: ObjectGrid renders action dispatch buttons via `executeAction` on action-type columns.
718+
- [x] `tabs` (ViewTabSchema): TabBar component renders view tabs above the ListView toolbar. Supports icon (Lucide), pinned (always visible), isDefault (auto-selected), visible filtering, order sorting, and active tab state. Tab switch applies filter config. Extracted as reusable `TabBar` component in `packages/plugin-list/src/components/TabBar.tsx`. i18n keys added for all 10 locales.
718719

719720
**P2 — Advanced Features:**
720721
- [x] `rowActions`: Row-level dropdown action menu per row in ObjectGrid. `schema.rowActions` string array items rendered as dropdown menu items, dispatched via `executeAction`.

apps/console/src/components/ObjectView.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,7 @@ export function ObjectView({ dataSource, objects, onEdit, onRowClick }: any) {
344344
virtualScroll: viewDef.virtualScroll ?? listSchema.virtualScroll,
345345
emptyState: viewDef.emptyState ?? listSchema.emptyState,
346346
aria: viewDef.aria ?? listSchema.aria,
347+
tabs: listSchema.tabs,
347348
// Propagate filter/sort as default filters/sort for data flow
348349
...(viewDef.filter?.length ? { filters: viewDef.filter } : {}),
349350
...(viewDef.sort?.length ? { sort: viewDef.sort } : {}),

packages/i18n/src/locales/ar.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ const ar = {
102102
recordCount: '{{count}} سجلات',
103103
recordCountOne: '{{count}} سجل',
104104
addRecord: 'إضافة سجل',
105+
tabs: 'علامات التبويب',
106+
allRecords: 'جميع السجلات',
105107
},
106108
kanban: {
107109
addCard: 'إضافة بطاقة',

packages/i18n/src/locales/de.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ const de = {
101101
recordCount: '{{count}} Datensätze',
102102
recordCountOne: '{{count}} Datensatz',
103103
addRecord: 'Datensatz hinzufügen',
104+
tabs: 'Tabs',
105+
allRecords: 'Alle Datensätze',
104106
},
105107
kanban: {
106108
addCard: 'Karte hinzufügen',

packages/i18n/src/locales/en.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ const en = {
101101
recordCount: '{{count}} records',
102102
recordCountOne: '{{count}} record',
103103
addRecord: 'Add record',
104+
tabs: 'Tabs',
105+
allRecords: 'All Records',
104106
},
105107
kanban: {
106108
addCard: 'Add card',

packages/i18n/src/locales/es.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ const es = {
101101
recordCount: '{{count}} registros',
102102
recordCountOne: '{{count}} registro',
103103
addRecord: 'Agregar registro',
104+
tabs: 'Pestañas',
105+
allRecords: 'Todos los registros',
104106
},
105107
kanban: {
106108
addCard: 'Añadir tarjeta',

packages/i18n/src/locales/fr.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ const fr = {
101101
recordCount: '{{count}} enregistrements',
102102
recordCountOne: '{{count}} enregistrement',
103103
addRecord: 'Ajouter un enregistrement',
104+
tabs: 'Onglets',
105+
allRecords: 'Tous les enregistrements',
104106
},
105107
kanban: {
106108
addCard: 'Ajouter une carte',

packages/i18n/src/locales/ja.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ const ja = {
101101
recordCount: '{{count}} 件のレコード',
102102
recordCountOne: '{{count}} 件のレコード',
103103
addRecord: 'レコードを追加',
104+
tabs: 'タブ',
105+
allRecords: 'すべてのレコード',
104106
},
105107
kanban: {
106108
addCard: 'カードを追加',

packages/i18n/src/locales/ko.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ const ko = {
101101
recordCount: '{{count}}개 레코드',
102102
recordCountOne: '{{count}}개 레코드',
103103
addRecord: '레코드 추가',
104+
tabs: '탭',
105+
allRecords: '전체 레코드',
104106
},
105107
kanban: {
106108
addCard: '카드 추가',

packages/i18n/src/locales/pt.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ const pt = {
101101
recordCount: '{{count}} registros',
102102
recordCountOne: '{{count}} registro',
103103
addRecord: 'Adicionar registro',
104+
tabs: 'Abas',
105+
allRecords: 'Todos os registros',
104106
},
105107
kanban: {
106108
addCard: 'Adicionar cartão',

0 commit comments

Comments
 (0)