Update list settings types (#1165)
This commit is contained in:
parent
236548a897
commit
64c0f0fcc4
6 changed files with 28 additions and 17 deletions
|
@ -10,6 +10,7 @@ import Metadata from "@saleor/components/Metadata/Metadata";
|
||||||
import { MetadataFormData } from "@saleor/components/Metadata/types";
|
import { MetadataFormData } from "@saleor/components/Metadata/types";
|
||||||
import PageHeader from "@saleor/components/PageHeader";
|
import PageHeader from "@saleor/components/PageHeader";
|
||||||
import SaveButtonBar from "@saleor/components/SaveButtonBar";
|
import SaveButtonBar from "@saleor/components/SaveButtonBar";
|
||||||
|
import { ListSettingsUpdate } from "@saleor/components/TablePagination";
|
||||||
import { AttributeDetailsFragment } from "@saleor/fragments/types/AttributeDetailsFragment";
|
import { AttributeDetailsFragment } from "@saleor/fragments/types/AttributeDetailsFragment";
|
||||||
import { AttributeErrorFragment } from "@saleor/fragments/types/AttributeErrorFragment";
|
import { AttributeErrorFragment } from "@saleor/fragments/types/AttributeErrorFragment";
|
||||||
import { sectionNames } from "@saleor/intl";
|
import { sectionNames } from "@saleor/intl";
|
||||||
|
@ -46,7 +47,7 @@ export interface AttributePageProps {
|
||||||
onValueReorder: ReorderAction;
|
onValueReorder: ReorderAction;
|
||||||
onValueUpdate: (id: string) => void;
|
onValueUpdate: (id: string) => void;
|
||||||
settings?: ListSettings;
|
settings?: ListSettings;
|
||||||
onUpdateListSettings?: (key: keyof ListSettings, value: any) => void;
|
onUpdateListSettings?: ListSettingsUpdate;
|
||||||
pageInfo: {
|
pageInfo: {
|
||||||
hasNextPage: boolean;
|
hasNextPage: boolean;
|
||||||
hasPreviousPage: boolean;
|
hasPreviousPage: boolean;
|
||||||
|
|
|
@ -3,8 +3,6 @@ import { makeStyles } from "@saleor/theme";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { FormattedMessage } from "react-intl";
|
import { FormattedMessage } from "react-intl";
|
||||||
|
|
||||||
import { ListSettings } from "../../types";
|
|
||||||
|
|
||||||
const useStyles = makeStyles(
|
const useStyles = makeStyles(
|
||||||
theme => ({
|
theme => ({
|
||||||
label: {
|
label: {
|
||||||
|
@ -34,14 +32,14 @@ const useStyles = makeStyles(
|
||||||
interface RowNumberSelectProps {
|
interface RowNumberSelectProps {
|
||||||
choices: number[];
|
choices: number[];
|
||||||
className?: string;
|
className?: string;
|
||||||
settings: ListSettings;
|
rowNumber: number;
|
||||||
onChange(key: keyof ListSettings, value: any);
|
onChange(value: number);
|
||||||
}
|
}
|
||||||
|
|
||||||
const RowNumberSelect: React.FC<RowNumberSelectProps> = ({
|
const RowNumberSelect: React.FC<RowNumberSelectProps> = ({
|
||||||
className,
|
className,
|
||||||
choices,
|
choices,
|
||||||
settings,
|
rowNumber,
|
||||||
onChange
|
onChange
|
||||||
}) => {
|
}) => {
|
||||||
const classes = useStyles({});
|
const classes = useStyles({});
|
||||||
|
@ -54,8 +52,8 @@ const RowNumberSelect: React.FC<RowNumberSelectProps> = ({
|
||||||
<Select
|
<Select
|
||||||
data-test-id="rowNumberSelect"
|
data-test-id="rowNumberSelect"
|
||||||
className={classes.select}
|
className={classes.select}
|
||||||
value={settings.rowNumber}
|
value={rowNumber}
|
||||||
onChange={event => onChange("rowNumber", event.target.value)}
|
onChange={event => onChange(event.target.value as number)}
|
||||||
>
|
>
|
||||||
{choices.length > 0 &&
|
{choices.length > 0 &&
|
||||||
choices.map(choice => (
|
choices.map(choice => (
|
||||||
|
|
|
@ -52,6 +52,11 @@ const useStyles = makeStyles(
|
||||||
{ name: "TablePagination" }
|
{ name: "TablePagination" }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
export type ListSettingsUpdate = <T extends keyof ListSettings>(
|
||||||
|
key: T,
|
||||||
|
value: ListSettings[T]
|
||||||
|
) => void;
|
||||||
|
|
||||||
interface TablePaginationProps {
|
interface TablePaginationProps {
|
||||||
backIconButtonProps?: Partial<IconButtonProps>;
|
backIconButtonProps?: Partial<IconButtonProps>;
|
||||||
colSpan: number;
|
colSpan: number;
|
||||||
|
@ -60,9 +65,9 @@ interface TablePaginationProps {
|
||||||
hasNextPage: boolean;
|
hasNextPage: boolean;
|
||||||
hasPreviousPage: boolean;
|
hasPreviousPage: boolean;
|
||||||
nextIconButtonProps?: Partial<IconButtonProps>;
|
nextIconButtonProps?: Partial<IconButtonProps>;
|
||||||
|
onUpdateListSettings?: ListSettingsUpdate;
|
||||||
onNextPage(event);
|
onNextPage(event);
|
||||||
onPreviousPage(event);
|
onPreviousPage(event);
|
||||||
onUpdateListSettings?(key: keyof ListSettings, value: any): void;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const TablePagination: React.FC<TablePaginationProps> = props => {
|
const TablePagination: React.FC<TablePaginationProps> = props => {
|
||||||
|
@ -94,8 +99,8 @@ const TablePagination: React.FC<TablePaginationProps> = props => {
|
||||||
{maybe(() => settings.rowNumber) && (
|
{maybe(() => settings.rowNumber) && (
|
||||||
<RowNumberSelect
|
<RowNumberSelect
|
||||||
choices={[10, 20, 30, 50, 100]}
|
choices={[10, 20, 30, 50, 100]}
|
||||||
settings={settings}
|
rowNumber={settings.rowNumber}
|
||||||
onChange={onUpdateListSettings}
|
onChange={value => onUpdateListSettings("rowNumber", value)}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -6,7 +6,10 @@ import { ListSettings, ListViews } from "./../types";
|
||||||
|
|
||||||
export interface UseListSettings<TColumns extends string = string> {
|
export interface UseListSettings<TColumns extends string = string> {
|
||||||
settings: ListSettings<TColumns>;
|
settings: ListSettings<TColumns>;
|
||||||
updateListSettings: (key: keyof ListSettings<TColumns>, value: any) => void;
|
updateListSettings: <T extends keyof ListSettings<TColumns>>(
|
||||||
|
key: T,
|
||||||
|
value: ListSettings<TColumns>[T]
|
||||||
|
) => void;
|
||||||
}
|
}
|
||||||
export default function useListSettings<TColumns extends string = string>(
|
export default function useListSettings<TColumns extends string = string>(
|
||||||
listName: ListViews
|
listName: ListViews
|
||||||
|
@ -25,7 +28,10 @@ export default function useListSettings<TColumns extends string = string>(
|
||||||
}
|
}
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const updateListSettings = (key: keyof ListSettings, value: any) =>
|
const updateListSettings = <T extends keyof ListSettings>(
|
||||||
|
key: T,
|
||||||
|
value: ListSettings[T]
|
||||||
|
) =>
|
||||||
setListSettings(settings => ({
|
setListSettings(settings => ({
|
||||||
...settings,
|
...settings,
|
||||||
[listName]: {
|
[listName]: {
|
||||||
|
|
|
@ -3,6 +3,7 @@ import CardSpacer from "@saleor/components/CardSpacer";
|
||||||
import Container from "@saleor/components/Container";
|
import Container from "@saleor/components/Container";
|
||||||
import LanguageSwitch from "@saleor/components/LanguageSwitch";
|
import LanguageSwitch from "@saleor/components/LanguageSwitch";
|
||||||
import PageHeader from "@saleor/components/PageHeader";
|
import PageHeader from "@saleor/components/PageHeader";
|
||||||
|
import { ListSettingsUpdate } from "@saleor/components/TablePagination";
|
||||||
import { AttributeTranslationDetailsFragment } from "@saleor/fragments/types/AttributeTranslationDetailsFragment";
|
import { AttributeTranslationDetailsFragment } from "@saleor/fragments/types/AttributeTranslationDetailsFragment";
|
||||||
import { commonMessages, sectionNames } from "@saleor/intl";
|
import { commonMessages, sectionNames } from "@saleor/intl";
|
||||||
import { TranslationsEntitiesPageProps } from "@saleor/translations/types";
|
import { TranslationsEntitiesPageProps } from "@saleor/translations/types";
|
||||||
|
@ -27,7 +28,7 @@ export interface TranslationsProductTypesPageProps
|
||||||
extends TranslationsEntitiesPageProps {
|
extends TranslationsEntitiesPageProps {
|
||||||
data: AttributeTranslationDetailsFragment;
|
data: AttributeTranslationDetailsFragment;
|
||||||
settings?: ListSettings;
|
settings?: ListSettings;
|
||||||
onUpdateListSettings?: (key: keyof ListSettings, value: any) => void;
|
onUpdateListSettings?: ListSettingsUpdate;
|
||||||
pageInfo: {
|
pageInfo: {
|
||||||
hasNextPage: boolean;
|
hasNextPage: boolean;
|
||||||
hasPreviousPage: boolean;
|
hasPreviousPage: boolean;
|
||||||
|
|
|
@ -55,9 +55,9 @@ export interface ListProps<TColumns extends string = string> {
|
||||||
onNextPage: () => void;
|
onNextPage: () => void;
|
||||||
onPreviousPage: () => void;
|
onPreviousPage: () => void;
|
||||||
onRowClick: (id: string) => () => void;
|
onRowClick: (id: string) => () => void;
|
||||||
onUpdateListSettings?: (
|
onUpdateListSettings?: <T extends keyof ListSettings<TColumns>>(
|
||||||
key: keyof ListSettings<TColumns>,
|
key: T,
|
||||||
value: any
|
value: ListSettings<TColumns>[T]
|
||||||
) => void;
|
) => void;
|
||||||
onListSettingsReset?: () => void;
|
onListSettingsReset?: () => void;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue