Формат описания фрейма

Фрейм - Массив конфигураций виджетов, который получается в результате работы конструктора, предназначен для вставки в окружение какой-то другой страницы/панели. Примеры - виджеты на главной, фрейм с доп.полями в документе. Фрейм может храниться "по месту" в формате .frame или быть записан в базу данных.

Фрейм состоит из следующих частей:

  • id: string - идентификатор фрейма в формате uuid;
  • widgets: IConstructedWidget - содержимое фрейма.

Пример описания фрейма в .frame файле

{
   "id": "9e73bec4-b30e-4141-8f97-d3d04738d355",
   "widgets": [{
      "id": "5af84c73-6bb1-40c9-ae10-b0ff783f705c",
      "widgetType": "first-widget",
      "props": {
         "somePropName": "somePropValue"
      }
   }, {
      "id": "77528d8c-512d-4c31-8da1-0141da19ee46",
      "widgetType": "second-widget",
      "props": {
         "childWidgets": [{
            "id": "48c2e747-c66a-4df7-9273-e7d3f4d96b44",
            "widgetType": "third-widget"
         }, {
            "id": "d458a5bb-9814-4cff-8f36-ea18ca9259f5",
            "widgetType": "fourth-widget"
         }]
      }
   }]
}

Загрузка фрейма из .frame файла по идентификатору

Для загрузки фрейма необходимо использовать метод SiteEditorBase/Loader:loadFrame.

Метода loadFrame принимает на вход идентификатор фрейма, указанный в .frame файле. Метод вернет Promise, в результате которого будет находиться содержимое фрейма, указанное в поле widgets в .frame файле.

Пример:

import {IConstructedWidget} from 'SiteEditorBase/interfaces/IWidgets';
import {loadFrame} from 'SiteEditorBase/Loader';

loadFrame('9e73bec4-b30e-4141-8f97-d3d04738d355').then((frame: IConstructedWidget[]) => {
    doSomeWithFrame(frame);
});