Информацию о том, как проектировать компоненты, см. в документации по проектированию компонентов.
Прежде чем работать с компонентами EUI или создавать новые, вы можете запустить локальный сервер для сайта документации. Здесь мы демонстрируем, как работают компоненты нашей системы проектирования.
Чтобы просмотреть интерактивную документацию, запустите сервер разработки с помощью следующей команды.
yarn
yarn start
После запуска сервера вы сможете посетить его в браузере по адресу: http://localhost:8030/. Сервер разработки отслеживает изменения в файлах исходного кода и автоматически перекомпилирует компоненты при внесении изменений.
Создание нового компонента состоит из четырёх шагов:
src/components
.src-docs
.Вы можете сделать это с помощью Yeoman или вручную, если хотите.
yarn run test-unit
запускает модульные тесты Jest один раз.
yarn run test-unit button
запустит тесты с «button» в названии спецификации. Вы можете передать другие
аргументы CLI Jest, просто добавив их в конец команды, например:
yarn run test-unit -- -u
обновит ваши снимки. Чтобы передать флаги или другие параметры, вам нужно будет следовать формату yarn run test-unit -- [arguments]
.
Примечание: если у вас возникают сбои сборки в Jenkins, связанные со снимками, попробуйте сначала очистить кэш yarn run test-unit -- --clearCache
.
yarn run test-unit -- --watch
отслеживает изменения и запускает тесты по мере написания кода.
yarn run test-unit -- --coverage
генерирует отчёт о покрытии кода, показывающий, насколько полно протестирован код, расположенный в reports/jest-coverage
.
См. руководство по тестированию для получения рекомендаций по написанию и разработке тестов.
См. руководство по автоматическому тестированию доступности для дополнительной информации.
Обратите внимание, что yarn link
в настоящее время не работает с Kibana. Вам нужно будет упаковать и вставить его в Kibana для локального тестирования.
eui
запустите yarn build
, затем npm pack
. Это создаст файл .tgz
с изменениями в вашем каталоге EUI. На этом этапе вы можете переместить его куда угодно.package.json
в Kibana на этот файл: "@elastic/eui": "/path/to/elastic-eui-xx.x.x.tgz"
и запустите yarn kbn bootstrap
.yarn kbn bootstrap
в Kibana, а затем просто распаковать файл .tgz
и вставить его содержимое в пустую папку /kibana/node_modules/@elastic/eui
. Этот метод позволяет избежать редактирования всех различных файлов package.json
в Kibana, если вам нужно запустить функциональные тесты.FORCE_DLL_CREATION=true node scripts/kibana --dev
, чтобы убедиться, что он не использует ранее кэшированную версию EUI.Если компонент имеет подкомпоненты (<EuiToolBar>
и <EuiToolBarSearch>
), тесно связанные компоненты (<EuiButton>
и <EuiButtonGroup>
) или вы просто хотите сгруппировать некоторые связанные компоненты вместе (<EuiTextInput>
, <EuiTextArea>
и <EuiCheckBox>
), то они принадлежат к одной логической группе. В этом случае вы можете создать дополнительные файлы SCSS для этих компонентов в том же каталоге компонентов.
См. страницу SASS нашего сайта документации для руководства по написанию стилей.
Многие наши компоненты используют... Параметры rest и оператор spread используются для передачи props в базовый элемент DOM. В таких случаях определение компонента TypeScript должно корректно включать props целевого элемента DOM.
Компонент Foo, который передаёт ...rest в элемент button, будет иметь интерфейс props:
// передает дополнительные props кнопке
interface FooProps extends ButtonHTMLAttributes<HTMLButtonElement> {
title: string
}
Некоторые элементы DOM (например, div, span) не имеют атрибутов помимо базовых, предоставляемых всеми элементами HTML. В этих случаях нет конкретного интерфейса *HTMLAttributes, и следует использовать HTMLAttributes.
// передаёт дополнительные props div
interface FooProps extends HTMLAttributes<HTMLDivElement> {
title: string
}
Если компонент перенаправляет ref в базовый элемент, интерфейс дополнительно расширяется с помощью DetailedHTMLProps.
// передаёт дополнительные props и перенаправляет ссылку на кнопку
interface FooProps extends DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement> {
title: string
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )