Skip to main content

Миграция с 7.16 на 7.17

Изменения в сборке Frontend

  • Версия React изменилась на 17+. Обновите ее в своем проекте в package.json или поставьте *, чтобы использовать транзитивно из N2O
  • Настройка шапки, подвала и боковой панели приложения. Появился параметр templates в котором задаются кастомные компоненты header footer sidebar

Было:

Пример config в 7.16
import ...

const config = {
pages,
regions,
widgets,
controls,
cells,
fieldsets,
fields,
defaultTemplate: AppTemplate,
security: {
authProvider,
externalLoginUrl: './',
},
};

class App extends Component {
render() {
return <N2o {...createFactoryConfig(config)} />;
}
}

export default App;

Стало:

Пример application.xml
<application xmlns="http://n2oapp.net/framework/config/schema/application-1.0" welcome-page-id="index">
<header src="CustomHeader" />
<sidebar src="CustomSidebar" />
<footer src="CustomFooter" />
</application>
Пример config в 7.17
import ...

const config = {
pages,
regions,
widgets,
controls,
cells,
fieldsets,
fields,
templates: {
CustomHeader,
CustomSidebar,
CustomFooter,
},
security: {
authProvider,
externalLoginUrl: './',
},
};

function App() {
return <N2O {...createFactoryConfig(config)} />
}

export default App;

Изменения в XML API

  • Настройка шапки, подвала и боковой панели приложения перенесена в файл application.xml. Это новый тип метаданных, описывающий структуру приложения. Требуется мигрировать содержимое файла *.header.xml в аналогичный файл *.application.xml.
Пример преобразования header в application
Было:
<?xml version='1.0' encoding='UTF-8'?>
<header xmlns="http://n2oapp.net/framework/config/schema/header-2.0"
color="inverse"
welcome-page-id="index"
brand-name="N2O">
<nav>
<page page-id="index" route="/home" label="${contacts}"/>
</nav>
</header>

Стало:
<?xml version='1.0' encoding='UTF-8'?>
<application xmlns="http://n2oapp.net/framework/config/schema/application-1.0"
welcome-page-id="index">
<header title="N2O"
css-class="inverse">
<nav>
<page page-id="index" route="/home" label="${contacts}"/>
</nav>
</header>
</application>

Обратить внимание: -свойство color в header теперь необходимо задавать в css-class; -подвал раньше генерировался автоматически, теперь его необходимо прописывать в application.xml.

  • Настройка n2o.header.homepage.id переименована в n2o.homepage.id.

  • Настройка n2o.header.id переименована в n2o.application.id.

  • Настройка n2o.header.fixed переименована в n2o.navigationLayout.fixed.

  • Упразднена настройка n2o.header.title.

  • У <pagination> в списковых виджетах атрибут hide-single-page (по умолчанию true), отвечающий за скрытие пагинации на единственной странице, был переименован в show-single-page (по умолчанию false). Обратная совместимость сохранена.

  • В компонентах ragio-group и checkbox-group тип n2o (который был по умолчанию) переименован в default. Тип, который раньше назывался default и отвечал за стандартную html верстку компонента, удален.

  • Изменены значения атрибута validate у кнопок с (true, false) на (page, widget, none). Теперь кнопка может валидировать все виджеты страницы с помощью значения page. Значение widget валидирует только текущий виджет и работает так же, как и значение true до этого. Значение none не валидирует ничего и заменяет собой false. Временно сохранена обратная совместимость.

Изменения в API автотестов

  • Методы компонентов с выпадающими элементами (InputSelect, Select, TimePicker, LineFieldSet, LineRegion, PanelRegion) приведены к единому виду. Теперь для изменения и проверки состояния выпадающего элемента в них используются методы: expand(), collapse(), shouldBeExpanded(), shouldBeCollapsed().

Изменения в настройках

  • Появилась возможность управлять положением сообщений об успехе/ошибке. Для этого введены следующие настройки:

n2o.api.message.position - фиксированная (fixed) или относительная (relative) позиция сообщения . Стоит обратить внимание, что по умолчанию значение fixed, что отличается от старого поведения, которое можно вернуть, использовав значение relative.

n2o.api.message.placement - положение сообщения на странице при фиксации (top/bottom). По умолчанию top.