Compare commits

...

12 Commits

Author SHA1 Message Date
semantic-release-bot
b5192cf590 chore(release): 0.4.2 [CI SKIP] 2022-06-06 21:21:44 +00:00
AAGaming
2e7b4b664a fix(classes): add gamepadDialogClasses and quickAccessControlsClasses 2022-06-06 17:20:55 -04:00
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
semantic-release-bot
fccfdd6f11 chore(release): 0.3.0 [CI SKIP] 2022-06-04 17:43:17 +00:00
AAGaming
f124480af8 feat(typings): add Navigate to router typings 2022-06-04 13:42:23 -04:00
semantic-release-bot
15e672afef chore(release): 0.2.0 [CI SKIP] 2022-06-04 08:54:45 +00:00
Jonas Dellinger
bf0c2b17bf feat(router): expose GetQuickAccessTab and rename QuickAccessTabs to QuickAccessTab 2022-06-04 10:54:01 +02:00
Jonas Dellinger
0625dc385a chore(release): add NPM releaser 2022-06-04 10:49:30 +02:00
14 changed files with 201 additions and 17 deletions

View File

@@ -4,6 +4,7 @@
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/npm",
"@semantic-release/github",
[
"@semantic-release/git",

View File

@@ -1,3 +1,43 @@
## [0.4.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v0.4.1...v0.4.2) (2022-06-06)
### Bug Fixes
* **classes:** add gamepadDialogClasses and quickAccessControlsClasses ([2e7b4b6](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/2e7b4b664a673b46b402b995fb58f0ce8ffbafac))
## [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)
### Features
* **typings:** add Navigate to router typings ([f124480](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/f124480af8082d24730ed03fdf88742f76abc026))
# [0.2.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v0.1.0...v0.2.0) (2022-06-04)
### Features
* **router:** expose GetQuickAccessTab and rename QuickAccessTabs to QuickAccessTab ([bf0c2b1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/bf0c2b17bfc4e67a8aa90cfee6a91bd1482720d4))
# [0.1.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v0.0.6...v0.1.0) (2022-06-04)

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,4 +1,5 @@
import { FC, ReactNode } from 'react';
import { findModuleChild } from '../webpack';
// 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 {
onMiddleButton?(): void,
export interface ModalRootProps {
onMiddleButton?(): void;
onCancel?(): void;
onOK?(): void;
bAllowFullSize?: boolean;
}
export const ModalRoot = findModuleChild(m => {
if (typeof m !== "object") return undefined;
export const ModalRoot = findModuleChild((m) => {
if (typeof m !== 'object') return undefined;
for (let prop in m) {
if (!m[prop]?.prototype?.OK && m[prop]?.prototype?.Cancel && m[prop]?.prototype?.render) {
return m[prop];
}
}
}) as FC<ModalRootProps>;
}) as FC<ModalRootProps>;

View File

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

View File

@@ -6,7 +6,7 @@ export enum SideMenu {
QuickAccess,
}
export enum QuickAccessTabs {
export enum QuickAccessTab {
Notifications,
RemotePlayTogetherControls,
VoiceChat,
@@ -17,9 +17,11 @@ export enum QuickAccessTabs {
Decky,
}
interface Router {
export interface Router {
CloseSideMenus(): void;
OpenQuickAccessMenu(quickAccessTab: QuickAccessTabs): void;
OpenQuickAccessMenu(quickAccessTab: QuickAccessTab): void;
GetQuickAccessTab(): QuickAccessTab;
Navigate(path: string): void;
NavigateToExternalWeb(url: string): void;
ToggleSideMenu(sideMenu: SideMenu): void;
CloseSideMenus(): void;

View File

@@ -2,13 +2,13 @@ import { FC } from 'react';
import { CommonUIModule } from '../webpack';
interface NotchLabel {
export interface NotchLabel {
notchIndex: number;
label: string;
value: number;
}
interface SliderProps {
export interface SliderProps {
label?: string;
value: number;
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';
interface ToggleProps {
export interface ToggleProps {
label?: string;
description?: string;
checked: boolean;

View File

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

View File

@@ -63,6 +63,100 @@ type StaticClasses = Record<
string
>;
type GamepadDialogClasses = Record<
| 'duration-app-launch'
| 'GamepadDialogContent'
| 'GamepadDialogContent_InnerWidth'
| 'Field'
| 'Button'
| 'NoMinWidth'
| 'ActiveAndUnfocused'
| 'StandaloneFieldSeparator'
| 'StandardPadding'
| 'CompactPadding'
| 'WithDescription'
| 'WithBottomSeparatorStandard'
| 'WithBottomSeparatorThick'
| 'HighlightOnFocus'
| 'ItemFocusAnim-darkerGrey'
| 'ItemFocusAnim-darkGrey'
| 'WithBottomSeparator'
| 'Disabled'
| 'Clickable'
| 'FieldClickTarget'
| 'FieldChildren'
| 'FieldLeadIcon'
| 'FieldLabelRow'
| 'VerticalAlignCenter'
| 'InlineWrapShiftsChildrenBelow'
| 'ExtraPaddingOnChildrenBelow'
| 'ChildrenWidthFixed'
| 'ChildrenWidthGrow'
| 'WithFirstRow'
| 'WithChildrenBelow'
| 'FieldLabel'
| 'FieldLabelValue'
| 'FieldDescription'
| 'ModalPosition'
| 'WithStandardPadding'
| 'slideInAnimation'
| 'BasicTextInput'
| 'Toggle'
| 'ToggleRail'
| 'On'
| 'ToggleSwitch'
| 'LabelFieldValue'
| 'DropDownControlButtonContents'
| 'Spacer'
| 'ControlsListOuterPanel'
| 'StandardSpacing'
| 'ExtraSpacing'
| 'AlignRight'
| 'AlignLeft'
| 'AlignCenter'
| 'ControlsListChild'
| 'QuickAccess-Menu'
| 'BigButtons'
| 'BottomButtons'
| 'ItemFocusAnim-darkerGrey-nocolor'
| 'ItemFocusAnim-grey'
| 'ItemFocusAnimBorder-darkGrey'
| 'ItemFocusAnim-green'
| 'focusAnimation'
| 'hoverAnimation',
string
>;
type QuickAccessControlsClasses = Record<
| 'duration-app-launch'
| 'PanelSection'
| 'PanelSectionTitle'
| 'Text'
| 'PanelSectionRow'
| 'Label'
| 'ComingSoon'
| 'LowBattery'
| 'ReallyLow'
| 'LowBatteryGauge'
| 'Remaining'
| 'EmptyNotifications'
| 'BatterySectionContainer'
| 'BatteryIcon'
| 'BatteryPercentageLabel'
| 'BatteryDetailsLabels'
| 'BatteryProjectedValue'
| 'BatteryProjectedLabel'
| 'ItemFocusAnim-darkerGrey-nocolor'
| 'ItemFocusAnim-darkerGrey'
| 'ItemFocusAnim-darkGrey'
| 'ItemFocusAnim-grey'
| 'ItemFocusAnimBorder-darkGrey'
| 'ItemFocusAnim-green'
| 'focusAnimation'
| 'hoverAnimation',
string
>;
export const staticClasses: StaticClasses = findModuleChild((mod) => {
if (typeof mod !== 'object') return false;
@@ -70,3 +164,19 @@ export const staticClasses: StaticClasses = findModuleChild((mod) => {
return mod;
}
});
export const gamepadDialogClasses: GamepadDialogClasses = findModuleChild((mod) => {
if (typeof mod !== 'object') return false;
if (mod.WithFirstRow) {
return mod;
}
});
export const quickAccessControlsClasses: QuickAccessControlsClasses = findModuleChild((mod) => {
if (typeof mod !== 'object') return false;
if (mod.PanelSectionRow) {
return mod;
}
});