Compare commits

...

7 Commits

Author SHA1 Message Date
semantic-release-bot
af2d3a29e2 chore(release): 0.7.2 [CI SKIP] 2022-06-08 22:30:10 +00:00
AAGaming
e5e561edd6 fix(package): fix pnpm peer dependencies errors 2022-06-08 18:29:27 -04:00
semantic-release-bot
7111d18667 chore(release): 0.7.1 [CI SKIP] 2022-06-08 21:55:07 +00:00
AAGaming
24244f6e91 fix(spinners): add SVG props 2022-06-08 17:54:20 -04:00
AAGaming
dd5c42c57d fix(Router): add NavigateToStore to interface 2022-06-08 17:53:49 -04:00
semantic-release-bot
09ab2fed4b chore(release): 0.7.0 [CI SKIP] 2022-06-08 17:25:30 +00:00
Jonas Dellinger
4328385391 feat(components): added shared item-props, progressbar, and more types for slider 2022-06-08 19:24:53 +02:00
12 changed files with 84 additions and 29 deletions

View File

@@ -1,3 +1,25 @@
## [0.7.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v0.7.1...v0.7.2) (2022-06-08)
### Bug Fixes
* **package:** fix pnpm peer dependencies errors ([e5e561e](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/e5e561edd67994b8c55f99c1228e47d77b1c2ee2))
## [0.7.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v0.7.0...v0.7.1) (2022-06-08)
### Bug Fixes
* **Router:** add NavigateToStore to interface ([dd5c42c](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/dd5c42c57d9ce6266f56237607bf37d8b5bd3b4c))
* **spinners:** add SVG props ([24244f6](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/24244f6e91e39a11bb964ee2779662084dcd0fd0))
# [0.7.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v0.6.0...v0.7.0) (2022-06-08)
### Features
* **components:** added shared item-props, progressbar, and more types for slider ([4328385](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/43283853916f3993d92f6841b12f7ee47667e75b))
# [0.6.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v0.5.1...v0.6.0) (2022-06-08)

View File

@@ -1,6 +1,6 @@
{
"name": "decky-frontend-lib",
"version": "0.6.0",
"version": "0.7.2",
"description": "A library for building decky plugins",
"main": "dist/index.js",
"types": "dist/index.d.ts",
@@ -58,6 +58,14 @@
"ts-jest": "^27.1.4",
"typescript": "^4.6.3"
},
"pnpm": {
"peerDependencyRules": {
"ignoreMissing": [
"react",
"react-dom"
]
}
},
"importSort": {
".js, .jsx, .ts, .tsx": {
"style": "module",

View File

@@ -1,15 +1,11 @@
import { FC } from 'react';
import { CommonUIModule } from '../webpack';
import { ItemProps } from './Item';
export interface ButtonItemProps {
label?: string;
description?: string;
layout?: 'below';
icon?: JSX.Element;
export interface ButtonItemProps extends ItemProps {
onClick?(e: MouseEvent): void;
disabled?: boolean;
bottomSeparator?: boolean;
}
export const ButtonItem = Object.values(CommonUIModule).find((mod: any) =>

View File

@@ -1,6 +1,7 @@
import { ReactNode, VFC } from 'react';
import { CommonUIModule } from '../webpack';
import { ItemProps } from './Item';
export interface SingleDropdownOption {
data: number;
@@ -36,14 +37,7 @@ export const Dropdown = Object.values(CommonUIModule).find(
(mod: any) => mod?.prototype?.SetSelectedOption && mod?.prototype?.BuildMenu,
) as VFC<DropdownProps>;
export interface DropdownItemProps extends DropdownProps {
label?: string;
tooltip?: string;
description?: string;
layout?: 'below';
bottomSeparator?: boolean;
indentLevel?: number;
}
export interface DropdownItemProps extends DropdownProps, ItemProps {}
export const DropdownItem = Object.values(CommonUIModule).find((mod: any) =>
mod?.toString()?.includes('"dropDownControlRef","description"'),

View File

@@ -0,0 +1,11 @@
import { ReactNode } from 'react';
export interface ItemProps {
label?: string;
description?: string;
layout?: 'below' | 'inline';
icon?: ReactNode;
bottomSeparator?: boolean;
indentLevel?: number;
tooltip?: string;
}

View File

@@ -0,0 +1,18 @@
import { VFC } from 'react';
import { findModuleChild } from '../webpack';
import { ItemProps } from './Item';
export interface ProgressBarItem extends ItemProps {
indeterminate?: boolean;
nTransitionSec?: number;
nProgress?: number;
focusable?: boolean;
}
export const ProgressBarItem = findModuleChild((m) => {
if (typeof m !== 'object') return undefined;
for (let prop in m) {
if (m[prop]?.toString()?.includes('"indeterminate","nTransitionSec"')) return m[prop];
}
}) as VFC<ProgressBarItem>;

View File

@@ -23,6 +23,7 @@ export interface Router {
GetQuickAccessTab(): QuickAccessTab;
Navigate(path: string): void;
NavigateToExternalWeb(url: string): void;
NavigateToStore(): void;
ToggleSideMenu(sideMenu: SideMenu): void;
CloseSideMenus(): void;
OpenSideMenu(sideMenu: SideMenu): void;

View File

@@ -1,26 +1,32 @@
import { FC } from 'react';
import { CommonUIModule } from '../webpack';
import { ItemProps } from './Item';
export interface NotchLabel {
notchIndex: number;
label: string;
value: number;
value?: number;
}
export interface SliderProps {
label?: string;
export interface SliderProps extends ItemProps {
value: number;
layout?: 'below';
icon?: JSX.Element;
min?: number;
max?: number;
step?: number;
notchCount?: number;
notchLabels?: NotchLabel[];
notchTicksVisible?: boolean;
showValue?: boolean;
resetValue?: number;
disabled?: boolean;
editableValue?: boolean;
validValues?: 'steps' | 'range' | ((value: number) => boolean);
valueSuffix?: string;
minimumDpadGranularity?: number;
onChange?(value: number): void;
}
export const Slider = Object.values(CommonUIModule).find((mod: any) =>
mod?.render?.toString()?.includes('SliderField,fallback'),
mod?.toString()?.includes('SliderField,fallback'),
) as FC<SliderProps>;

View File

@@ -1,8 +1,8 @@
import { FC } from 'react';
import { FC, SVGAttributes } from 'react';
import { IconsModule } from '../webpack';
// TODO type this and other icons?
export const Spinner = Object.values(IconsModule).find((mod: any) =>
mod?.toString && /Spinner\)}\),.\.createElement\(\"path\",{d:\"M18 /.test(mod.toString())
) as FC<{}>;
) as FC<SVGAttributes<SVGElement>>;

View File

@@ -1,4 +1,4 @@
import { FC } from 'react';
import { FC, SVGAttributes } from 'react';
import { findModuleChild } from '../webpack';
export const SteamSpinner = findModuleChild((m) => {
@@ -6,4 +6,4 @@ export const SteamSpinner = findModuleChild((m) => {
for (let prop in m) {
if (m[prop]?.toString()?.includes("Steam Spinner") && m[prop].toString().includes("PreloadThrobber")) return m[prop]
}
}) as FC<{}>;
}) as FC<SVGAttributes<SVGElement>>;

View File

@@ -1,12 +1,10 @@
import { FC } from 'react';
import { CommonUIModule } from '../webpack';
import { ItemProps } from './Item';
export interface ToggleProps {
label?: string;
description?: string;
export interface ToggleProps extends ItemProps {
checked: boolean;
icon?: JSX.Element;
disabled?: boolean;
onChange?(checked: boolean): void;
}

View File

@@ -4,6 +4,7 @@ export * from './Dropdown';
export * from './Menu';
export * from './Modal';
export * from './Panel';
export * from './ProgressBar';
export * from './Router';
export * from './SidebarNavigation';
export * from './Slider';