Compare commits

...

8 Commits

Author SHA1 Message Date
semantic-release-bot
bb291b211c chore(release): 3.18.0 [CI SKIP] 2022-12-11 15:10:33 +00:00
Jozen Blue Martinez
88f245d476 feat(DialogCheckbox): Add DialogCheckbox component (#58)
* feat(DialogCheckbox): Add DialogCheckbox component

* fix(DialogCheckbox): Better sibling match

* fix(DialogCheckbox): Extend FocusableProps

* fix(DialogCheckbox): Extend FooterLegendProps

i should have probably tested that

* feat(DialogCheckbox): add onClick() prop

* fix(DialogCheckbox): replace default export with named export
2022-12-11 16:10:01 +01:00
semantic-release-bot
5bc78df918 chore(release): 3.17.0 [CI SKIP] 2022-12-11 15:08:02 +00:00
Jozen Blue Martinez
c586afb97d feat(ControlsList): Add ControlsList component (#61)
* feat(ControlsList): Add ControlsList component

* fix(ControlsList): replace default export with named export
2022-12-11 16:07:31 +01:00
semantic-release-bot
d9150c2556 chore(release): 3.16.2 [CI SKIP] 2022-12-11 14:48:15 +00:00
Jonas Dellinger
cd0635e94f fix(Marquee): replace default export with named export 2022-12-11 15:47:39 +01:00
semantic-release-bot
443c7850d7 chore(release): 3.16.1 [CI SKIP] 2022-12-11 14:46:16 +00:00
Jozen Blue Martinez
d24136ecb6 fix(FooterLegend): change description types to ReactNode (#62) 2022-12-11 15:45:40 +01:00
7 changed files with 92 additions and 11 deletions

View File

@@ -1,3 +1,31 @@
# [3.18.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.17.0...v3.18.0) (2022-12-11)
### Features
* **DialogCheckbox:** Add DialogCheckbox component ([#58](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/58)) ([88f245d](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/88f245d476a6477e9fc0cd35e9b675961ecbc26c))
# [3.17.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.16.2...v3.17.0) (2022-12-11)
### Features
* **ControlsList:** Add ControlsList component ([#61](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/61)) ([c586afb](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/c586afb97d59928ecb703b5a254ed1b9405e2c7e))
## [3.16.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.16.1...v3.16.2) (2022-12-11)
### Bug Fixes
* **Marquee:** replace default export with named export ([cd0635e](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/cd0635e94f98499f9f5fc24a7fd4b93efe7dfc38))
## [3.16.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.16.0...v3.16.1) (2022-12-11)
### Bug Fixes
* **FooterLegend:** change description types to ReactNode ([#62](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/62)) ([d24136e](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/d24136ecb6b0c5239b68723e8f92a4822aa7b590))
# [3.16.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.15.0...v3.16.0) (2022-12-11)

View File

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

View File

@@ -0,0 +1,17 @@
import { findModuleChild } from '../webpack';
import { FC } from 'react';
export interface ControlsListProps {
alignItems?: 'left' | 'right' | 'center';
spacing?: 'standard' | 'extra';
}
export const ControlsList: FC<ControlsListProps> = findModuleChild((m) => {
if (typeof m !== 'object') return;
for (const prop in m) {
if (m[prop]?.toString && m[prop].toString().includes('().ControlsListChild') && m[prop].toString().includes('().ControlsListOuterPanel')) {
return m[prop];
}
}
return;
});

View File

@@ -0,0 +1,33 @@
import { FC, ReactNode } from 'react';
import { findModule } from '../webpack';
import { DialogCommonProps } from './Dialog';
import { FooterLegendProps } from './FooterLegend';
export interface DialogCheckboxProps extends DialogCommonProps, FooterLegendProps {
onChange?(checked: boolean): void;
label?: ReactNode;
description?: ReactNode;
disabled?: boolean;
tooltip?: string;
color?: string;
highlightColor?: string;
bottomSeparator?: 'standard' | 'thick' | 'none';
controlled?: boolean;
checked?: boolean;
onClick?(evt: Event): void;
}
export const DialogCheckbox = Object.values(findModule((m: any) => {
if (typeof m !== 'object') return false;
for (const prop in m) {
if (m[prop]?.prototype?.GetPanelElementProps) return true;
}
return false;
})).find((m: any) =>
m.contextType &&
m.prototype?.render.toString().includes('fallback:') &&
m?.prototype?.SetChecked &&
m?.prototype?.Toggle &&
m?.prototype?.GetPanelElementProps
) as FC<DialogCheckboxProps>;

View File

@@ -1,3 +1,5 @@
import { ReactNode } from 'react';
export enum GamepadButton {
INVALID,
OK,
@@ -42,16 +44,16 @@ export interface GamepadEventDetail {
source: number;
}
export declare type ActionDescriptionMap = {
[key in GamepadButton]?: string
[key in GamepadButton]?: ReactNode
}
export declare type GamepadEvent = CustomEvent<GamepadEventDetail>;
export interface FooterLegendProps {
actionDescriptionMap?: ActionDescriptionMap;
onOKActionDescription?: string;
onCancelActionDescription?: string;
onSecondaryActionDescription?: string;
onOptionsActionDescription?: string;
onMenuActionDescription?: string;
onOKActionDescription?: ReactNode;
onCancelActionDescription?: ReactNode;
onSecondaryActionDescription?: ReactNode;
onOptionsActionDescription?: ReactNode;
onMenuActionDescription?: ReactNode;
onButtonDown?: (evt: GamepadEvent) => void;
onButtonUp?: (evt: GamepadEvent) => void;
onOKButton?: (evt: GamepadEvent) => void;

View File

@@ -1,4 +1,5 @@
import { FC, CSSProperties } from 'react';
import { CSSProperties, FC } from 'react';
import { findModuleChild } from '../webpack';
export interface MarqueeProps {
@@ -14,7 +15,7 @@ export interface MarqueeProps {
children: React.ReactNode;
}
const Marquee: FC<MarqueeProps> = findModuleChild((m) => {
export const Marquee: FC<MarqueeProps> = findModuleChild((m) => {
if (typeof m !== 'object') return;
for (const prop in m) {
if (m[prop]?.toString && m[prop].toString().includes('.Marquee') && m[prop].toString().includes('--fade-length')) {
@@ -23,5 +24,3 @@ const Marquee: FC<MarqueeProps> = findModuleChild((m) => {
}
return;
});
export default Marquee;

View File

@@ -1,7 +1,9 @@
export * from './Button';
export * from './ButtonItem';
export * from './Carousel';
export * from './ControlsList';
export * from './Dialog';
export * from './DialogCheckbox';
export * from './Dropdown';
export * from './Field';
export * from './Focusable';