1
0
Эх сурвалжийг харах

fix(web): drop the Close button from the read-only preset view

A shipped preset has nothing to commit or abandon, and the back link above
already leaves the screen; a lone Close button below the composition was a
second way out of the same place. The action row now renders only when the
draft is writable, where Cancel and Save are both real choices.

The composition label named `cordis.yml`; the file a preset actually holds
is `agent.cordis.yml`.
Yichen Jiang 2 сар өмнө
parent
commit
4bb9836abe

+ 11 - 9
packages/client/ui-agent-preset/src/client/AgentPresetSection.tsx

@@ -124,21 +124,23 @@ function Editor({ draft, blocker, t, actions }: EditorProps): ReactNode {
         />
       </label>
       {message === null ? null : <p className={css.error} role="alert">{message}</p>}
-      <div className={css.editorActions}>
-        <Button variant="outline" disabled={draft.saving} onClick={() => { actions.close() }}>
-          {draft.writable ? t('cancel') : t('close')}
-        </Button>
-        {draft.writable
-          ? (
+      {/* Read-only has nothing to commit or abandon, and leaving is already the
+          back link above — a lone Close button would be a second way out. */}
+      {draft.writable
+        ? (
+          <div className={css.editorActions}>
+            <Button variant="outline" disabled={draft.saving} onClick={() => { actions.close() }}>
+              {t('cancel')}
+            </Button>
             <Button
               disabled={draft.saving || blocker !== undefined}
               onClick={() => { void actions.save() }}
             >
               {draft.saving ? t('saving') : t('save')}
             </Button>
-          )
-          : null}
-      </div>
+          </div>
+        )
+        : null}
     </div>
   )
 }

+ 2 - 2
packages/client/ui-agent-preset/src/client/locales.ts

@@ -44,7 +44,7 @@ export const en: Record<AgentPresetSettingsKey, string> = {
   customGroup: 'Custom',
   noDescription: 'No description.',
   copyOf: 'Copied from',
-  composition: 'Composition (cordis.yml)',
+  composition: 'Composition (agent.cordis.yml)',
   readOnlyNotice: 'This preset ships with the deployment and cannot be edited. Duplicate it to make your own.',
   save: 'Save',
   saving: 'Saving…',
@@ -92,7 +92,7 @@ export const zh: Record<AgentPresetSettingsKey, string> = {
   customGroup: '自定义',
   noDescription: '暂无描述。',
   copyOf: '复制自',
-  composition: '组装(cordis.yml)',
+  composition: '组装(agent.cordis.yml)',
   readOnlyNotice: '该预设随部署提供,不可编辑。复制一份即可改成自己的。',
   save: '保存',
   saving: '正在保存…',

+ 4 - 1
packages/client/ui-agent-preset/tests/section.spec.tsx

@@ -239,7 +239,10 @@ describe('the composition editor', () => {
     expect(screen.getByLabelText(en.composition)).toHaveProperty('readOnly', true)
     expect(screen.getByText(en.readOnlyNotice)).toBeTruthy()
     expect(screen.queryByText(en.save)).toBeNull()
-    expect(screen.getByText(en.close)).toBeTruthy()
+    // Nothing to commit or abandon, and the back link above already leaves —
+    // a lone Close button would be a second way out of the same screen.
+    expect(screen.queryByText(en.cancel)).toBeNull()
+    expect(screen.getByRole('button', { name: `← ${en.backToList}` })).toBeTruthy()
   })
 
   it('titles the panel by what it is doing', () => {