mirror of
https://github.com/tiennm99/ccs.git
synced 2026-07-16 20:17:45 +00:00
feat(ui): add value input for new environment variables
- Add newEnvValue state to profile editor - Update add variable section to include key + value inputs - Apply to both OpenRouter and standard profile editors - Clear both key and value after adding variable
This commit is contained in:
@@ -16,7 +16,9 @@ import type { Settings } from './types';
|
||||
interface EnvEditorSectionProps {
|
||||
currentSettings: Settings | undefined;
|
||||
newEnvKey: string;
|
||||
newEnvValue: string;
|
||||
onNewEnvKeyChange: (value: string) => void;
|
||||
onNewEnvValueChange: (value: string) => void;
|
||||
onEnvValueChange: (key: string, value: string) => void;
|
||||
onAddEnvVar: () => void;
|
||||
}
|
||||
@@ -24,7 +26,9 @@ interface EnvEditorSectionProps {
|
||||
export function EnvEditorSection({
|
||||
currentSettings,
|
||||
newEnvKey,
|
||||
newEnvValue,
|
||||
onNewEnvKeyChange,
|
||||
onNewEnvValueChange,
|
||||
onEnvValueChange,
|
||||
onAddEnvVar,
|
||||
}: EnvEditorSectionProps) {
|
||||
@@ -82,8 +86,15 @@ export function EnvEditorSection({
|
||||
placeholder="VARIABLE_NAME"
|
||||
value={newEnvKey}
|
||||
onChange={(e) => onNewEnvKeyChange(e.target.value.toUpperCase())}
|
||||
className="font-mono text-sm h-8"
|
||||
onKeyDown={(e) => e.key === 'Enter' && onAddEnvVar()}
|
||||
className="font-mono text-sm h-8 w-2/5"
|
||||
onKeyDown={(e) => e.key === 'Enter' && newEnvKey.trim() && onAddEnvVar()}
|
||||
/>
|
||||
<Input
|
||||
placeholder="value"
|
||||
value={newEnvValue}
|
||||
onChange={(e) => onNewEnvValueChange(e.target.value)}
|
||||
className="font-mono text-sm h-8 flex-1"
|
||||
onKeyDown={(e) => e.key === 'Enter' && newEnvKey.trim() && onAddEnvVar()}
|
||||
/>
|
||||
<Button
|
||||
variant="outline"
|
||||
|
||||
@@ -26,7 +26,9 @@ interface FriendlyUISectionProps {
|
||||
data: SettingsResponse | undefined;
|
||||
currentSettings: Settings | undefined;
|
||||
newEnvKey: string;
|
||||
newEnvValue: string;
|
||||
onNewEnvKeyChange: (key: string) => void;
|
||||
onNewEnvValueChange: (value: string) => void;
|
||||
onEnvValueChange: (key: string, value: string) => void;
|
||||
onAddEnvVar: () => void;
|
||||
onEnvBulkChange?: (env: Record<string, string>) => void;
|
||||
@@ -37,7 +39,9 @@ export function FriendlyUISection({
|
||||
data,
|
||||
currentSettings,
|
||||
newEnvKey,
|
||||
newEnvValue,
|
||||
onNewEnvKeyChange,
|
||||
onNewEnvValueChange,
|
||||
onEnvValueChange,
|
||||
onAddEnvVar,
|
||||
onEnvBulkChange,
|
||||
@@ -222,8 +226,15 @@ export function FriendlyUISection({
|
||||
placeholder="VARIABLE_NAME"
|
||||
value={newEnvKey}
|
||||
onChange={(e) => onNewEnvKeyChange(e.target.value.toUpperCase())}
|
||||
className="font-mono text-sm h-8"
|
||||
onKeyDown={(e) => e.key === 'Enter' && onAddEnvVar()}
|
||||
className="font-mono text-sm h-8 w-2/5"
|
||||
onKeyDown={(e) => e.key === 'Enter' && newEnvKey.trim() && onAddEnvVar()}
|
||||
/>
|
||||
<Input
|
||||
placeholder="value"
|
||||
value={newEnvValue}
|
||||
onChange={(e) => onNewEnvValueChange(e.target.value)}
|
||||
className="font-mono text-sm h-8 flex-1"
|
||||
onKeyDown={(e) => e.key === 'Enter' && newEnvKey.trim() && onAddEnvVar()}
|
||||
/>
|
||||
<Button
|
||||
variant="outline"
|
||||
@@ -242,7 +253,9 @@ export function FriendlyUISection({
|
||||
<EnvEditorSection
|
||||
currentSettings={currentSettings}
|
||||
newEnvKey={newEnvKey}
|
||||
newEnvValue={newEnvValue}
|
||||
onNewEnvKeyChange={onNewEnvKeyChange}
|
||||
onNewEnvValueChange={onNewEnvValueChange}
|
||||
onEnvValueChange={onEnvValueChange}
|
||||
onAddEnvVar={onAddEnvVar}
|
||||
/>
|
||||
|
||||
@@ -21,6 +21,7 @@ export function ProfileEditor({ profileName, onDelete }: ProfileEditorProps) {
|
||||
const [conflictDialog, setConflictDialog] = useState(false);
|
||||
const [rawJsonEdits, setRawJsonEdits] = useState<string | null>(null);
|
||||
const [newEnvKey, setNewEnvKey] = useState('');
|
||||
const [newEnvValue, setNewEnvValue] = useState('');
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
// Fetch settings for selected profile
|
||||
@@ -69,10 +70,12 @@ export function ProfileEditor({ profileName, onDelete }: ProfileEditorProps) {
|
||||
const addNewEnvVar = () => {
|
||||
if (!newEnvKey.trim()) return;
|
||||
const key = newEnvKey.trim();
|
||||
const newEnv = { ...(currentSettings?.env || {}), [key]: '' };
|
||||
setLocalEdits((prev) => ({ ...prev, [key]: '' }));
|
||||
const value = newEnvValue;
|
||||
const newEnv = { ...(currentSettings?.env || {}), [key]: value };
|
||||
setLocalEdits((prev) => ({ ...prev, [key]: value }));
|
||||
setRawJsonEdits(JSON.stringify({ ...currentSettings, env: newEnv }, null, 2));
|
||||
setNewEnvKey('');
|
||||
setNewEnvValue('');
|
||||
};
|
||||
|
||||
// Computed validity and changes check
|
||||
@@ -172,7 +175,9 @@ export function ProfileEditor({ profileName, onDelete }: ProfileEditorProps) {
|
||||
data={data}
|
||||
currentSettings={currentSettings}
|
||||
newEnvKey={newEnvKey}
|
||||
newEnvValue={newEnvValue}
|
||||
onNewEnvKeyChange={setNewEnvKey}
|
||||
onNewEnvValueChange={setNewEnvValue}
|
||||
onEnvValueChange={updateEnvValue}
|
||||
onAddEnvVar={addNewEnvVar}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user