Как сделать по умолчанию реагирующую администраторскую тему RTL - PullRequest
0 голосов
/ 19 июня 2019

Мне нужно сделать response-admin, который использует material-ui под RTL, пока ничего не работает, потому что есть стили для каждого элемента, переопределяющего dir="rtl" в теге body, создавая собственную тему, такую ​​как:

const theme = {
  direction: 'rtl',
  isRtl: true
};
const themeWithDirection = createMuiTheme({...defaultTheme, ...theme});

и использование его в компоненте Admin, например:

<Admin locale="ar" dataProvider={dataProvider} i18nProvider={i18nProvider} theme={themeWithDirection} layout={layout}>

не работает.Кроме того, использование StyleProvider в пользовательском макете не работает:

import React from 'react';
import { Layout } from 'react-admin';

import { create } from 'jss';
import rtl from 'jss-rtl';
import {  jssPreset } from '@material-ui/core/styles';
import { StylesProvider } from '@material-ui/core/styles';

const jss = create({ plugins: [...jssPreset().plugins, rtl()] });

const MyLayout = props => 
  <StylesProvider jss={jss}>
    <Layout
      {...props}
    />
  </StylesProvider>;

Проблема заключается в том, что такие компоненты, как TextField, используют text-align: left;, так как я могу перевернуть их CSS, не переопределяя их в пользовательском файле CSS

1 Ответ

1 голос
/ 19 июня 2019

Использование ListGuesser Мне не повезло, переключая сетку на RTL, однако после написания настраиваемого компонента списка и JssProvider он теперь работает:

import React from 'react';
import { List, Datagrid, TextField, EmailField } from 'react-admin';

import { create } from 'jss';
import rtl from 'jss-rtl';
import JssProvider from 'react-jss/lib/JssProvider';
import { jssPreset } from '@material-ui/core/styles';


const jss = create({ plugins: [...jssPreset().plugins, rtl()] });

export const UserList = props => (
  <JssProvider jss={jss}>
    <List {...props}>
      <Datagrid rowClick="edit">
        <TextField source="id" />
        <TextField source="name" />
        <TextField source="username" />
        <EmailField source="email" />
        <TextField source="address.street" />
        <TextField source="phone" />
        <TextField source="website" />
        <TextField source="company.name" />
      </Datagrid>
    </List>
  </JssProvider>
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...