Skip to content

Commit 84a3b22

Browse files
Copilothotlong
andcommitted
fix: address code review - revert description to plain text, remove empty callback
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
1 parent 987b9ee commit 84a3b22

5 files changed

Lines changed: 11 additions & 23 deletions

File tree

ROADMAP.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ Everything below has been built, tested, and verified. These items are stable an
4949
- **Animation:** 7 presets, reduced-motion aware, page transitions (9 types with View Transitions API).
5050
- **Notifications:** Toast/banner/snackbar with full CRUD integration.
5151
- **View Enhancements:** Gallery, column summary, grouping, row color, density modes, view sharing, ViewTabBar (reorder, pin, context menu, type-switch, personal/shared grouping).
52-
- **Inline View Config Panel:** Airtable-style right sidebar for view configuration (Page, Data, Appearance, User Filters, Actions, Advanced), breadcrumb header, record count footer, responsive mobile overlay, ARIA accessibility, auto-close on view switch — no page navigation required.
52+
- **Inline View Config Panel:** Airtable-style right sidebar for view configuration (Page, Data, Appearance, User Filters, Actions, Advanced), breadcrumb header, record count footer, responsive mobile overlay, ARIA accessibility, auto-close on view switch — no page navigation required. Full interactive editing support: inline title editing, Switch toggles for all boolean settings, ViewType select, clickable rows to open sub-editors (columns/filters/sort), local draft state with Save/Discard workflow, i18n in all 10 locales.
5353

5454
### Enterprise Features ✅
5555

ROADMAP_CONSOLE.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,7 +1021,7 @@ These were the initial tasks to bring the console prototype to production-qualit
10211021
| **Global Undo/Redo (Ctrl+Z)** | ✅ Done (global UndoManager + batch ops + persistent stack) | Post v1.0 | Phase 16 (L1+L2) |
10221022
| Notification center | ✅ Partial (ActivityFeed with filter preferences) | Post v1.0 | Phase 17 (L2) |
10231023
| Activity feed | ✅ Done | Post v1.0 | Phase 17 (L1) |
1024-
| **Inline View Config Panel** | ✅ Done (Airtable-style right sidebar, breadcrumb header, record count footer, responsive mobile overlay, ARIA accessibility, auto-close on view switch) | Post v1.0 | Phase 20 |
1024+
| **Inline View Config Panel** | ✅ Done (Airtable-style right sidebar, breadcrumb header, record count footer, responsive mobile overlay, ARIA accessibility, auto-close on view switch, full interactive editing: Switch toggles, inline title edit, ViewType select, clickable sub-editor rows, draft state with Save/Discard) | Post v1.0 | Phase 20 |
10251025

10261026
### 5.5 Kanban & Visual Views
10271027

@@ -1103,7 +1103,7 @@ These were the initial tasks to bring the console prototype to production-qualit
11031103
11041104
2027 Q1+ — v2.1: INLINE VIEW DESIGNER (✅ Complete)
11051105
═══════════════════════════════════════════════════════════
1106-
Phase 20: Inline ViewConfigPanel ██████████████ ✅ Complete: Airtable-style right sidebar, breadcrumb header, record count footer, responsive mobile overlay, ARIA accessibility, auto-close on view switch
1106+
Phase 20: Inline ViewConfigPanel ██████████████ ✅ Complete: Airtable-style right sidebar, full interactive editing (Switch toggles, inline title, ViewType select, sub-editor rows, draft Save/Discard), ARIA accessibility
11071107
```
11081108

11091109
### Milestone Summary
@@ -1118,7 +1118,7 @@ These were the initial tasks to bring the console prototype to production-qualit
11181118
| **v1.1** | v1.1.0 | ✅ Complete | Kanban + Forms + Import/Export (Phases 13-15); all L1 ✅ |
11191119
| **v1.2** | v1.2.0 | ✅ L1 Complete | Undo/Redo + Collaboration (Phases 16-17); L1 integrated into console |
11201120
| **v2.0** | v2.0.0 | ✅ L2 Complete | All L2 features: batch undo, expression formatting, conditional triggers, multi-step actions, swimlane persistence, keyboard nav, file validation, thread resolution, notification prefs |
1121-
| **v2.1** | v2.1.0 | ✅ Complete | Inline ViewConfigPanel (Phase 20): Airtable-style right sidebar for view configuration |
1121+
| **v2.1** | v2.1.0 | ✅ Complete | Inline ViewConfigPanel (Phase 20): Airtable-style right sidebar with full interactive editing support |
11221122

11231123
---
11241124

apps/console/src/__tests__/ViewConfigPanel.test.tsx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ describe('ViewConfigPanel', () => {
114114
expect(titleInput).toHaveValue('All Records');
115115
});
116116

117-
it('displays object description in readonly input', () => {
117+
it('displays object description as plain text', () => {
118118
render(
119119
<ViewConfigPanel
120120
open={true}
@@ -124,12 +124,10 @@ describe('ViewConfigPanel', () => {
124124
/>
125125
);
126126

127-
const descInput = screen.getByTestId('view-description-input');
128-
expect(descInput).toHaveValue('Track sales pipeline and deals');
129-
expect(descInput).toHaveAttribute('readOnly');
127+
expect(screen.getByText('Track sales pipeline and deals')).toBeInTheDocument();
130128
});
131129

132-
it('shows placeholder when object has no description', () => {
130+
it('shows "no description" when object has no description', () => {
133131
render(
134132
<ViewConfigPanel
135133
open={true}
@@ -139,8 +137,7 @@ describe('ViewConfigPanel', () => {
139137
/>
140138
);
141139

142-
const descInput = screen.getByTestId('view-description-input');
143-
expect(descInput).toHaveAttribute('placeholder', 'console.objectView.noDescription');
140+
expect(screen.getByText('console.objectView.noDescription')).toBeInTheDocument();
144141
});
145142

146143
it('displays column count', () => {

apps/console/src/components/ObjectView.tsx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,6 @@ export function ObjectView({ dataSource, objects, onEdit, onRowClick }: any) {
6969
// Draft state for view config edits — cached locally, saved on demand
7070
const [viewDraft, setViewDraft] = useState<Record<string, any> | null>(null);
7171

72-
const handleViewConfigUpdate = useCallback((field: string, value: any) => {
73-
// Buffered locally — ViewConfigPanel manages its own draft
74-
}, []);
75-
7672
const handleViewConfigSave = useCallback((draft: Record<string, any>) => {
7773
setViewDraft(draft);
7874
setRefreshKey(k => k + 1);
@@ -505,7 +501,6 @@ export function ObjectView({ dataSource, objects, onEdit, onRowClick }: any) {
505501
activeView={activeView}
506502
objectDef={objectDef}
507503
recordCount={recordCount}
508-
onViewUpdate={handleViewConfigUpdate}
509504
onOpenEditor={handleOpenEditor}
510505
onSave={handleViewConfigSave}
511506
/>

apps/console/src/components/ViewConfigPanel.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -208,13 +208,9 @@ export function ViewConfigPanel({ open, onClose, activeView, objectDef, onViewUp
208208
/>
209209
</ConfigRow>
210210
<ConfigRow label={t('console.objectView.description')}>
211-
<Input
212-
data-testid="view-description-input"
213-
className="h-7 text-xs w-32 text-right italic"
214-
value={objectDef.description || ''}
215-
placeholder={t('console.objectView.noDescription')}
216-
readOnly
217-
/>
211+
<span className="text-xs text-muted-foreground italic truncate ml-4 text-right">
212+
{objectDef.description || t('console.objectView.noDescription')}
213+
</span>
218214
</ConfigRow>
219215
</div>
220216

0 commit comments

Comments
 (0)