Compare commits

...

5 Commits

Author SHA1 Message Date
semantic-release-bot
b92e6a5b9d chore(release): 0.4.1 [CI SKIP] 2022-06-05 13:11:12 +00:00
Jonas Dellinger
32c355f2a7 fix(textfield): correct type for onChange callback 2022-06-05 15:10:23 +02:00
semantic-release-bot
747d70dcca chore(release): 0.4.0 [CI SKIP] 2022-06-05 13:08:53 +00:00
Jonas Dellinger
7f9dfc5910 fix(typings): export all prop types 2022-06-05 15:07:47 +02:00
Jonas Dellinger
a3c1a7c7b7 feat(textfield): extract TextField component 2022-06-05 15:06:06 +02:00
12 changed files with 65 additions and 15 deletions

View File

@@ -1,3 +1,22 @@
## [0.4.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v0.4.0...v0.4.1) (2022-06-05)
### Bug Fixes
* **textfield:** correct type for onChange callback ([32c355f](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/32c355f2a7e0b6ca6592b956e8174d217766bc5c))
# [0.4.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v0.3.0...v0.4.0) (2022-06-05)
### Bug Fixes
* **typings:** export all prop types ([7f9dfc5](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/7f9dfc5910dfc172ba161d9b63763e85eb289a43))
### Features
* **textfield:** extract TextField component ([a3c1a7c](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/a3c1a7c7b73eae475574a13b6ff9c75ff78cbcb6))
# [0.3.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v0.2.0...v0.3.0) (2022-06-04) # [0.3.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v0.2.0...v0.3.0) (2022-06-04)

View File

@@ -1,6 +1,6 @@
{ {
"name": "decky-frontend-lib", "name": "decky-frontend-lib",
"version": "0.3.0", "version": "0.4.1",
"description": "A library for building decky plugins", "description": "A library for building decky plugins",
"main": "dist/index.js", "main": "dist/index.js",
"types": "dist/index.d.ts", "types": "dist/index.d.ts",

View File

@@ -2,7 +2,7 @@ import { FC } from 'react';
import { CommonUIModule } from '../webpack'; import { CommonUIModule } from '../webpack';
interface ButtonProps { export interface ButtonProps {
className?: string; className?: string;
noFocusRing?: boolean; noFocusRing?: boolean;
disabled?: boolean; disabled?: boolean;

View File

@@ -2,7 +2,7 @@ import { FC } from 'react';
import { CommonUIModule } from '../webpack'; import { CommonUIModule } from '../webpack';
interface ButtonItemProps { export interface ButtonItemProps {
label?: string; label?: string;
description?: string; description?: string;
layout?: 'below'; layout?: 'below';

View File

@@ -11,7 +11,7 @@ export const showContextMenu: (children: ReactNode, parent?: EventTarget) => voi
} }
}); });
interface MenuProps { export interface MenuProps {
label: string; label: string;
onCancel?(): void; onCancel?(): void;
cancelText?: string; cancelText?: string;
@@ -27,7 +27,7 @@ export const Menu: FC<MenuProps> = findModuleChild((m) => {
} }
}); });
interface MenuItemProps { export interface MenuItemProps {
onSelected?(): void; onSelected?(): void;
} }

View File

@@ -1,4 +1,5 @@
import { FC, ReactNode } from 'react'; import { FC, ReactNode } from 'react';
import { findModuleChild } from '../webpack'; import { findModuleChild } from '../webpack';
// TODO: there is another argument, figure out what it does // TODO: there is another argument, figure out what it does
@@ -11,18 +12,18 @@ export const showModal: (children: ReactNode, parent?: EventTarget) => void = fi
} }
}); });
interface ModalRootProps { export interface ModalRootProps {
onMiddleButton?(): void, onMiddleButton?(): void;
onCancel?(): void; onCancel?(): void;
onOK?(): void; onOK?(): void;
bAllowFullSize?: boolean; bAllowFullSize?: boolean;
} }
export const ModalRoot = findModuleChild(m => { export const ModalRoot = findModuleChild((m) => {
if (typeof m !== "object") return undefined; if (typeof m !== 'object') return undefined;
for (let prop in m) { for (let prop in m) {
if (!m[prop]?.prototype?.OK && m[prop]?.prototype?.Cancel && m[prop]?.prototype?.render) { if (!m[prop]?.prototype?.OK && m[prop]?.prototype?.Cancel && m[prop]?.prototype?.render) {
return m[prop]; return m[prop];
} }
} }
}) as FC<ModalRootProps>; }) as FC<ModalRootProps>;

View File

@@ -2,7 +2,7 @@ import { FC } from 'react';
import { findModuleChild } from '../webpack'; import { findModuleChild } from '../webpack';
interface PanelSectionProps { export interface PanelSectionProps {
title?: string; title?: string;
spinner?: boolean; spinner?: boolean;
} }

View File

@@ -17,7 +17,7 @@ export enum QuickAccessTab {
Decky, Decky,
} }
interface Router { export interface Router {
CloseSideMenus(): void; CloseSideMenus(): void;
OpenQuickAccessMenu(quickAccessTab: QuickAccessTab): void; OpenQuickAccessMenu(quickAccessTab: QuickAccessTab): void;
GetQuickAccessTab(): QuickAccessTab; GetQuickAccessTab(): QuickAccessTab;

View File

@@ -2,13 +2,13 @@ import { FC } from 'react';
import { CommonUIModule } from '../webpack'; import { CommonUIModule } from '../webpack';
interface NotchLabel { export interface NotchLabel {
notchIndex: number; notchIndex: number;
label: string; label: string;
value: number; value: number;
} }
interface SliderProps { export interface SliderProps {
label?: string; label?: string;
value: number; value: number;
layout?: 'below'; layout?: 'below';

View File

@@ -0,0 +1,29 @@
import { ChangeEventHandler, ReactNode, VFC } from 'react';
import { CommonUIModule, Module } from '../webpack';
export interface TextFieldProps {
label?: ReactNode;
requiredLabel?: ReactNode;
description?: ReactNode;
bShowCopyAction?: boolean;
bShowClearAction?: boolean;
bAlwaysShowClearAction?: boolean;
bIsPassword?: boolean;
rangeMin?: number;
rangeMax?: number;
mustBeNumeric?: boolean;
mustBeURL?: boolean;
mustBeEmail?: boolean;
focusOnMount?: boolean;
tooltip?: string;
inlineControls?: ReactNode;
onChange?: ChangeEventHandler<HTMLInputElement>;
value?: string;
}
export const TextField = Object.values(CommonUIModule).find(
(mod: Module) => mod?.validateUrl && mod?.validateEmail,
) as VFC<TextFieldProps>;
console.log(TextField);

View File

@@ -2,7 +2,7 @@ import { FC } from 'react';
import { CommonUIModule } from '../webpack'; import { CommonUIModule } from '../webpack';
interface ToggleProps { export interface ToggleProps {
label?: string; label?: string;
description?: string; description?: string;
checked: boolean; checked: boolean;

View File

@@ -8,4 +8,5 @@ export * from './Slider';
export * from './Spinner'; export * from './Spinner';
export * from './static-classes'; export * from './static-classes';
export * from './SteamSpinner'; export * from './SteamSpinner';
export * from './TextField';
export * from './Toggle'; export * from './Toggle';