mirror of
https://github.com/SteamDeckHomebrew/decky-frontend-lib.git
synced 2026-05-22 19:08:46 +02:00
Compare commits
2 Commits
aa/menu-ho
...
v3.18.5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a656f4e57f | ||
|
|
0b50f2cf0b |
@@ -1,3 +1,10 @@
|
||||
## [3.18.5](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.4...v3.18.5) (2022-12-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* fixed prop interfaces ([#70](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/70)) ([0b50f2c](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/0b50f2cf0baa76fc00aa0a41a8435d7a512bff19))
|
||||
|
||||
## [3.18.4](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.3...v3.18.4) (2022-12-16)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "decky-frontend-lib",
|
||||
"version": "3.18.4",
|
||||
"version": "3.18.5",
|
||||
"description": "A library for building decky plugins",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { CSSProperties, FC, ReactNode } from 'react';
|
||||
import { CSSProperties, FC } from 'react';
|
||||
|
||||
import { findModuleChild } from '../webpack';
|
||||
|
||||
@@ -12,7 +12,7 @@ export interface MarqueeProps {
|
||||
resetOnPause?: boolean;
|
||||
style?: CSSProperties;
|
||||
className?: string;
|
||||
children: ReactNode;
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
export const Marquee: FC<MarqueeProps> = findModuleChild((m) => {
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { FC } from 'react';
|
||||
import { FC, ReactNode } from 'react';
|
||||
|
||||
import { findModuleChild } from '../webpack';
|
||||
|
||||
export interface PanelSectionProps {
|
||||
title?: string;
|
||||
spinner?: boolean;
|
||||
children?: ReactNode
|
||||
}
|
||||
|
||||
const [panelSection, mod] = findModuleChild((mod: any) => {
|
||||
@@ -18,6 +19,10 @@ const [panelSection, mod] = findModuleChild((mod: any) => {
|
||||
|
||||
export const PanelSection = panelSection as FC<PanelSectionProps>;
|
||||
|
||||
export interface PanelSectionRowProps {
|
||||
children?: ReactNode
|
||||
}
|
||||
|
||||
export const PanelSectionRow = Object.values(mod).filter(
|
||||
(exp: any) => !exp?.toString()?.includes('.PanelSection'),
|
||||
)[0] as FC;
|
||||
)[0] as FC<PanelSectionRowProps>;
|
||||
|
||||
@@ -21,52 +21,6 @@ interface ServerResponseError {
|
||||
|
||||
export type ServerResponse<TRes> = ServerResponseSuccess<TRes> | ServerResponseError;
|
||||
|
||||
export interface MainMenuItem {
|
||||
/** Called when clicking this menu item, useful if you do not want to navigate to a route.
|
||||
* For navigating to a route, use route instead. */
|
||||
action?: () => void;
|
||||
/** The route this menu item navigates to @example "/steamweb" */
|
||||
route?: string;
|
||||
/** Props for the route this item navigates to. Currently only used for /steamweb to determine what webpack to navigate to @example {url: 'https://store.steampowered.com/'} */
|
||||
routeState?: any;
|
||||
/** Label for this menu item, @example "Store" */
|
||||
label: ReactNode;
|
||||
/** Runs when this item is selected. Defaults to setting the focused app to null.
|
||||
* If you override this you must also call the original to retain proper behaivour */
|
||||
onFocus?: () => void;
|
||||
/** Icon of this menu item, you probably want a react SVG node */
|
||||
children: ReactNode;
|
||||
}
|
||||
|
||||
export interface CustomMainMenuItem extends MainMenuItem {
|
||||
index: number;
|
||||
}
|
||||
|
||||
export interface MainMenuItemReactNode {
|
||||
props: MainMenuItem;
|
||||
type: ComponentType;
|
||||
key: any;
|
||||
}
|
||||
|
||||
export interface OverlayReactNode {
|
||||
props: MainMenuItem;
|
||||
type: ComponentType;
|
||||
}
|
||||
|
||||
export type ItemPatch = (item: MainMenuItemReactNode) => MainMenuItemReactNode;
|
||||
export type OverlayPatch = (overlay: OverlayReactNode) => OverlayReactNode;
|
||||
|
||||
export interface MenuHook {
|
||||
addItem(item: CustomMainMenuItem): CustomMainMenuItem;
|
||||
addPatch(path: string, patch: ItemPatch): ItemPatch;
|
||||
addOverlayPatch(patch: OverlayPatch): OverlayPatch;
|
||||
addOverlayComponent(component: ReactNode): ReactNode;
|
||||
removePatch(path: string, patch: ItemPatch): void;
|
||||
removeOverlayPatch(patch: OverlayPatch): void;
|
||||
removeOverlayComponent(component: ReactNode): void;
|
||||
removeItem(item: CustomMainMenuItem): void;
|
||||
}
|
||||
|
||||
export type RoutePatch = (route: RouteProps) => RouteProps;
|
||||
|
||||
export interface RouterHook {
|
||||
@@ -105,7 +59,6 @@ export interface FilePickerRes {
|
||||
|
||||
export interface ServerAPI {
|
||||
routerHook: RouterHook;
|
||||
menuHook: MenuHook;
|
||||
toaster: Toaster;
|
||||
openFilePicker(startPath: string, includeFiles?: boolean, regex?: RegExp): Promise<FilePickerRes>;
|
||||
callPluginMethod<TArgs = {}, TRes = {}>(methodName: string, args: TArgs): Promise<ServerResponse<TRes>>;
|
||||
|
||||
Reference in New Issue
Block a user