Skip to content

Commit

Permalink
ADM-99: (Feat) Add form locale to filters
Browse files Browse the repository at this point in the history
  • Loading branch information
Yana Korpan authored and YanaKorpan committed Aug 28, 2023
1 parent 3c684ad commit 3744a1d
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 18 deletions.
7 changes: 5 additions & 2 deletions admiral/crud/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { TopToolbar } from '../layout'
import { useDataProvider } from '../dataProvider'
import React, { useCallback, useState, useEffect, useRef, useMemo } from 'react'
import { CrudIndexPageContextProvider } from './CrudIndexPageContext'
import { AppliedFilters, Filters, QuickFilters } from '../filters'
import { AppliedFilters, Filters } from '../filters'
import { RouterLocationState } from '../router/interfaces'
import { CRUDConfig } from './interfaces'
import styles from './Crud.module.scss'
Expand Down Expand Up @@ -110,7 +110,10 @@ function makeIndexPage<RecordType extends { id: number | string } = any>(
autoupdateTime={config.index.tableConfig?.autoupdateTime}
/>
{!!config.filter && (
<Filters fetchInitialData={fetchInitialFiltersData} locale={locale.filters}>
<Filters
fetchInitialData={fetchInitialFiltersData}
locale={{ filters: locale.filters, form: locale.form }}
>
{config.filter.fields}
</Filters>
)}
Expand Down
2 changes: 1 addition & 1 deletion admiral/crud/interfaces.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { ReactNode } from 'react'
import { Locale as FormLocale } from '../form/interfaces'
import { Locale as FiltersLocale } from '../filters/interfaces'
import { FiltersLocale } from '../filters/interfaces'
import { ColumnsType, ColumnType, TableLocale } from '../ui/Table/interfaces'
import { DrawerProps } from '../ui/Drawer/interfaces'
import { PaginationLocale } from '../ui/Pagination/interfaces'
Expand Down
14 changes: 8 additions & 6 deletions admiral/filters/Filters.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React, { useCallback, useRef, useEffect } from 'react'
import { useCrudIndex } from '../crud/CrudIndexPageContext'
import { Drawer, Button } from '../ui'
import { Form, FormProps, useForm } from '../form'
import { Form, FormProps } from '../form'
import { FiSave, FiX } from 'react-icons/fi'
import { Locale } from './interfaces'
import { enUS } from './locale'
Expand All @@ -13,7 +13,7 @@ export type FiltersProps = {
fetchInitialData?: (urlState: Record<string, any>) => Promise<GetFiltersFormDataResult>
}

export const Filters: React.FC<FiltersProps> = ({ locale = enUS, fetchInitialData, children }) => {
export const Filters: React.FC<FiltersProps> = ({ locale, fetchInitialData, children }) => {
const {
filterDrawer,
setFilterDrawer,
Expand All @@ -22,6 +22,8 @@ export const Filters: React.FC<FiltersProps> = ({ locale = enUS, fetchInitialDat
filter: { setFilterOptions },
} = useCrudIndex()

const filtersLocale = locale?.filters ?? enUS

const formRef = useRef<React.ElementRef<typeof Form>>(null)

useEffect(() => {
Expand Down Expand Up @@ -60,19 +62,19 @@ export const Filters: React.FC<FiltersProps> = ({ locale = enUS, fetchInitialDat
<Drawer
visible={filterDrawer}
onClose={hideDrawer}
title={locale.title}
title={filtersLocale.title}
footer={
<div className={styles.footer}>
<Button type="button" view="secondary" onClick={onReset} iconLeft={<FiX />}>
{locale.clear}
{filtersLocale.clear}
</Button>
<Button type="button" onClick={onSubmit} iconLeft={<FiSave />}>
{locale.submit}
{filtersLocale.submit}
</Button>
</div>
}
>
<Form ref={formRef} fetchInitialData={_fetchInitialData}>
<Form ref={formRef} fetchInitialData={_fetchInitialData} locale={locale?.form}>
<Form.Fields singleColumn>{children}</Form.Fields>
</Form>
</Drawer>
Expand Down
9 changes: 6 additions & 3 deletions admiral/filters/interfaces.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import { Locale as FormLocale } from '../form/interfaces'

export type FiltersLocale = { title: string; clear: string; submit: string }

export type Locale = {
title: string
clear: string
submit: string
filters: FiltersLocale
form: FormLocale
}
4 changes: 2 additions & 2 deletions admiral/filters/locale/enUS.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Locale } from '../interfaces'
import { FiltersLocale } from '../interfaces'

export const enUS: Locale = {
export const enUS: FiltersLocale = {
title: 'Filters',
clear: 'Clear all',
submit: 'Apply',
Expand Down
8 changes: 4 additions & 4 deletions admiral/form/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import { tuple } from '../utils/type'
export type Locale = {
successMessage: string
fields: {
array: ArrayInputLocale
array?: ArrayInputLocale
editor?: EditorLocaleType
datePicker: PickerLocale
select: SelectLocale
upload: UploadLocale
datePicker?: PickerLocale
select?: SelectLocale
upload?: UploadLocale
}
}

Expand Down

0 comments on commit 3744a1d

Please sign in to comment.