feat: ui overhaul (#676)
This commit is contained in:
committed by
GitHub
parent
5c86462859
commit
66b81e9228
@ -9,7 +9,7 @@ import type {
|
||||
} from 'react';
|
||||
import type { t, TranslateProps as ReactPolyglotTranslateProps } from 'react-polyglot';
|
||||
import type { MediaFile as BackendMediaFile } from './backend';
|
||||
import type { EditorControlProps } from './components/Editor/EditorControlPane/EditorControl';
|
||||
import type { EditorControlProps } from './components/entry-editor/editor-control-pane/EditorControl';
|
||||
import type {
|
||||
SORT_DIRECTION_ASCENDING,
|
||||
SORT_DIRECTION_DESCENDING,
|
||||
@ -111,6 +111,15 @@ export interface FieldsErrors {
|
||||
[field: string]: FieldError[];
|
||||
}
|
||||
|
||||
export type FieldGetValidValueMethod<T = unknown> = (
|
||||
value: T | undefined | null,
|
||||
) => T | undefined | null;
|
||||
|
||||
export type FieldGetDefaultMethod<T = unknown, F extends BaseField = UnknownField> = (
|
||||
defaultValue: T | undefined | null,
|
||||
field: F,
|
||||
) => T;
|
||||
|
||||
export interface FieldValidationMethodProps<T = unknown, F extends BaseField = UnknownField> {
|
||||
field: F;
|
||||
value: T | undefined | null;
|
||||
@ -173,6 +182,7 @@ export interface BaseCollection {
|
||||
icon?: string;
|
||||
isFetching?: boolean;
|
||||
summary?: string;
|
||||
summary_fields?: string[];
|
||||
filter?: FilterRule;
|
||||
label_singular?: string;
|
||||
label: string;
|
||||
@ -234,40 +244,26 @@ export interface DisplayURLState {
|
||||
|
||||
export type TranslatedProps<T> = T & ReactPolyglotTranslateProps;
|
||||
|
||||
/**
|
||||
* @deprecated Use `useMediaAsset` React hook instead. Will be removed in v2.0.0
|
||||
*/
|
||||
export type GetAssetFunction<F extends BaseField = UnknownField> = (
|
||||
path: string,
|
||||
field?: F,
|
||||
) => Promise<AssetProxy>;
|
||||
export interface MediaPath<T = string | string[]> {
|
||||
path: T;
|
||||
alt?: string;
|
||||
}
|
||||
|
||||
export interface WidgetControlProps<T, F extends BaseField = UnknownField> {
|
||||
export interface WidgetControlProps<T, F extends BaseField = UnknownField, EV = ObjectValue> {
|
||||
collection: Collection<F>;
|
||||
config: Config<F>;
|
||||
entry: Entry;
|
||||
entry: Entry<EV>;
|
||||
field: F;
|
||||
fieldsErrors: FieldsErrors;
|
||||
submitted: boolean;
|
||||
forList: boolean;
|
||||
/**
|
||||
* @deprecated Use `useMediaAsset` React hook instead. Will be removed in v2.0.0
|
||||
*/
|
||||
getAsset: GetAssetFunction<F>;
|
||||
isDisabled: boolean;
|
||||
isDuplicate: boolean;
|
||||
/**
|
||||
* @deprecated Use `isDuplicate` instead. Will be removed in v2.0.0
|
||||
*/
|
||||
isFieldDuplicate: EditorControlProps['isFieldDuplicate'];
|
||||
isHidden: boolean;
|
||||
/**
|
||||
* @deprecated Use `isHidden` instead. Will be removed in v2.0.0
|
||||
*/
|
||||
isFieldHidden: EditorControlProps['isFieldHidden'];
|
||||
forSingleList: boolean;
|
||||
disabled: boolean;
|
||||
duplicate: boolean;
|
||||
hidden: boolean;
|
||||
label: string;
|
||||
locale: string | undefined;
|
||||
mediaPaths: Record<string, string | string[]>;
|
||||
mediaPaths: Record<string, MediaPath>;
|
||||
onChange: (value: T | null | undefined) => void;
|
||||
clearMediaControl: EditorControlProps['clearMediaControl'];
|
||||
openMediaLibrary: EditorControlProps['openMediaLibrary'];
|
||||
@ -275,10 +271,12 @@ export interface WidgetControlProps<T, F extends BaseField = UnknownField> {
|
||||
removeMediaControl: EditorControlProps['removeMediaControl'];
|
||||
i18n: I18nSettings | undefined;
|
||||
hasErrors: boolean;
|
||||
errors: FieldError[];
|
||||
path: string;
|
||||
query: EditorControlProps['query'];
|
||||
t: t;
|
||||
value: T | undefined | null;
|
||||
theme: 'dark' | 'light';
|
||||
}
|
||||
|
||||
export interface WidgetPreviewProps<T = unknown, F extends BaseField = UnknownField> {
|
||||
@ -286,11 +284,8 @@ export interface WidgetPreviewProps<T = unknown, F extends BaseField = UnknownFi
|
||||
collection: Collection<F>;
|
||||
entry: Entry;
|
||||
field: RenderedField<F>;
|
||||
/**
|
||||
* @deprecated Should use `useMediaAsset` React hook instead
|
||||
*/
|
||||
getAsset: GetAssetFunction<F>;
|
||||
value: T | undefined | null;
|
||||
theme: 'dark' | 'light';
|
||||
}
|
||||
|
||||
export type WidgetPreviewComponent<T = unknown, F extends BaseField = UnknownField> =
|
||||
@ -298,9 +293,9 @@ export type WidgetPreviewComponent<T = unknown, F extends BaseField = UnknownFie
|
||||
| ReactElement<unknown, string | JSXElementConstructor<any>>
|
||||
| ComponentType<WidgetPreviewProps<T, F>>;
|
||||
|
||||
export type WidgetFor<P = EntryData> = <K extends keyof P>(name: K) => ReactNode;
|
||||
export type WidgetFor<P = ObjectValue> = <K extends keyof P>(name: K) => ReactNode;
|
||||
|
||||
export type WidgetsFor<P = EntryData> = <K extends keyof P>(
|
||||
export type WidgetsFor<P = ObjectValue> = <K extends keyof P>(
|
||||
name: K,
|
||||
) => P[K] extends Array<infer U>
|
||||
? {
|
||||
@ -312,22 +307,19 @@ export type WidgetsFor<P = EntryData> = <K extends keyof P>(
|
||||
widgets: Record<keyof P[K], ReactNode>;
|
||||
};
|
||||
|
||||
export interface TemplatePreviewProps<T = EntryData, EF extends BaseField = UnknownField> {
|
||||
export interface TemplatePreviewProps<T = ObjectValue, EF extends BaseField = UnknownField> {
|
||||
collection: Collection<EF>;
|
||||
fields: Field<EF>[];
|
||||
entry: Entry<T>;
|
||||
document: Document | undefined | null;
|
||||
window: Window | undefined | null;
|
||||
/**
|
||||
* @deprecated Should use `useMediaAsset` React hook instead
|
||||
*/
|
||||
getAsset: GetAssetFunction<Field<EF>>;
|
||||
widgetFor: WidgetFor<T>;
|
||||
widgetsFor: WidgetsFor<T>;
|
||||
theme: 'dark' | 'light';
|
||||
}
|
||||
|
||||
export type TemplatePreviewComponent<
|
||||
T = EntryData,
|
||||
T = ObjectValue,
|
||||
EF extends BaseField = UnknownField,
|
||||
> = ComponentType<TemplatePreviewProps<T, EF>>;
|
||||
|
||||
@ -335,9 +327,9 @@ export interface TemplatePreviewCardProps<T = EntryData, EF extends BaseField =
|
||||
collection: Collection<EF>;
|
||||
fields: Field<EF>[];
|
||||
entry: Entry<T>;
|
||||
viewStyle: 'list' | 'grid';
|
||||
widgetFor: WidgetFor<T>;
|
||||
widgetsFor: WidgetsFor<T>;
|
||||
theme: 'dark' | 'light';
|
||||
}
|
||||
|
||||
export type TemplatePreviewCardComponent<
|
||||
@ -345,6 +337,17 @@ export type TemplatePreviewCardComponent<
|
||||
EF extends BaseField = UnknownField,
|
||||
> = ComponentType<TemplatePreviewCardProps<T, EF>>;
|
||||
|
||||
export interface FieldPreviewProps<T = unknown, F extends BaseField = UnknownField> {
|
||||
collection: Collection<F>;
|
||||
field: Field<F>;
|
||||
value: T;
|
||||
theme: 'dark' | 'light';
|
||||
}
|
||||
|
||||
export type FieldPreviewComponent<T = unknown, F extends BaseField = UnknownField> = ComponentType<
|
||||
FieldPreviewProps<T, F>
|
||||
>;
|
||||
|
||||
export interface WidgetOptions<T = unknown, F extends BaseField = UnknownField> {
|
||||
validator?: Widget<T, F>['validator'];
|
||||
getValidValue?: Widget<T, F>['getValidValue'];
|
||||
@ -356,8 +359,8 @@ export interface Widget<T = unknown, F extends BaseField = UnknownField> {
|
||||
control: ComponentType<WidgetControlProps<T, F>>;
|
||||
preview?: WidgetPreviewComponent<T, F>;
|
||||
validator: FieldValidationMethod<T, F>;
|
||||
getValidValue: (value: T | undefined | null) => T | undefined | null;
|
||||
getDefaultValue?: (defaultValue: T | undefined | null, field: F) => T;
|
||||
getValidValue: FieldGetValidValueMethod<T>;
|
||||
getDefaultValue?: FieldGetDefaultMethod<T, F>;
|
||||
schema?: PropertiesSchema<unknown>;
|
||||
}
|
||||
|
||||
@ -521,7 +524,7 @@ export type MapWidgetType = 'Point' | 'LineString' | 'Polygon';
|
||||
|
||||
export interface SelectWidgetOptionObject {
|
||||
label: string;
|
||||
value: string;
|
||||
value: string | number;
|
||||
}
|
||||
|
||||
export type AuthScope = 'repo' | 'public_repo';
|
||||
@ -633,7 +636,7 @@ export interface NumberField extends BaseField {
|
||||
widget: 'number';
|
||||
default?: string | number;
|
||||
|
||||
value_type?: 'int' | 'float' | string;
|
||||
value_type?: 'int' | 'float' | 'string';
|
||||
min?: number;
|
||||
max?: number;
|
||||
|
||||
@ -907,6 +910,7 @@ export interface MarkdownEditorOptions {
|
||||
export type ShortcodeControlProps<P = {}> = P & {
|
||||
onChange: (props: P) => void;
|
||||
controlProps: WidgetControlProps<string, MarkdownField>;
|
||||
theme: 'dark' | 'light';
|
||||
};
|
||||
|
||||
export type ShortcodePreviewProps<P = {}> = P & {
|
||||
@ -943,3 +947,23 @@ export interface InferredField {
|
||||
fallbackToFirstField: boolean;
|
||||
showError: boolean;
|
||||
}
|
||||
|
||||
export interface SvgProps {
|
||||
className: string;
|
||||
}
|
||||
|
||||
export interface Breadcrumb {
|
||||
name?: string;
|
||||
to?: string;
|
||||
}
|
||||
|
||||
export interface MediaLibraryDisplayURL {
|
||||
url?: string;
|
||||
isFetching: boolean;
|
||||
err?: unknown;
|
||||
}
|
||||
|
||||
export interface MediaLibrarInsertOptions {
|
||||
showAlt?: boolean;
|
||||
chooseUrl?: boolean;
|
||||
}
|
||||
|
Reference in New Issue
Block a user