feat(FN-1493): add directory browsing UX to plugin install flow
- Add DirectoryPicker component for browsing filesystem to select plugin source - Add dist-folder and package-root install-source resolution in backend - Wire frontend installPlugin to mode-discriminated endpoint (/plugins/install-local) - Add comprehensive regression tests for browse-driven plugin install workflow - Update PluginManager UI with directory picker integration and CSS styles
This commit is contained in:
@@ -6,6 +6,8 @@ export interface DirectoryPickerProps {
|
||||
value: string;
|
||||
onChange: (path: string) => void;
|
||||
placeholder?: string;
|
||||
/** Optional keydown handler forwarded to the text input (e.g. Enter-to-submit). */
|
||||
onInputKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
|
||||
}
|
||||
|
||||
interface BrowserState {
|
||||
@@ -18,7 +20,7 @@ interface BrowserState {
|
||||
showHidden: boolean;
|
||||
}
|
||||
|
||||
export function DirectoryPicker({ value, onChange, placeholder }: DirectoryPickerProps) {
|
||||
export function DirectoryPicker({ value, onChange, placeholder, onInputKeyDown }: DirectoryPickerProps) {
|
||||
const [browser, setBrowser] = useState<BrowserState>({
|
||||
isOpen: false,
|
||||
loading: false,
|
||||
@@ -105,6 +107,7 @@ export function DirectoryPicker({ value, onChange, placeholder }: DirectoryPicke
|
||||
className="directory-picker-input"
|
||||
value={value}
|
||||
onChange={(e) => onChange(e.target.value)}
|
||||
onKeyDown={onInputKeyDown}
|
||||
placeholder={placeholder || "/path/to/your/project"}
|
||||
/>
|
||||
<button
|
||||
|
||||
Reference in New Issue
Block a user