mirror of
https://github.com/SteamDeckHomebrew/decky-frontend-lib.git
synced 2026-05-21 02:19:12 +02:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
09ab2fed4b | ||
|
|
4328385391 |
@@ -1,3 +1,10 @@
|
||||
# [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)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "decky-frontend-lib",
|
||||
"version": "0.6.0",
|
||||
"version": "0.7.0",
|
||||
"description": "A library for building decky plugins",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
|
||||
@@ -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) =>
|
||||
|
||||
@@ -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"'),
|
||||
|
||||
11
src/deck-components/Item.tsx
Normal file
11
src/deck-components/Item.tsx
Normal 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;
|
||||
}
|
||||
18
src/deck-components/ProgressBar.tsx
Normal file
18
src/deck-components/ProgressBar.tsx
Normal 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>;
|
||||
@@ -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>;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user