К содержанию

Навигация

Представление свойств

<sf-property-view> — карточка одного объекта: поля сгруппированы в области, области — в разделы, а каждое поле рисуется отрисовщиком своего типа. Берите его для записи, настроек сайта или профиля; множество записей показывает представление данных.

Компонент поставляется пакетом larena из репозитория simai/larena-ui (папка components/, лицензия Apache-2.0), а не выпуском Framework.

Пример

Применение

Подключение пакета

Элемент загружается, только если пакет larena объявлен до подключения Core: window.SF_BOOT_CONFIG = {packages: {larena: {base: '/assets/larena/<коммит пакета>/smart'}}}. Сборка пакета публикуется выпуском репозитория simai/larena-ui (см. Пакет larena для проекта без Larena). Подробнее — в разделе Подключение Smart-компонентов.

Запись и порт свойств

Компонент не владеет данными. Разметка называет только объект: record-id — какой объект читать, collection — его тип в словаре приложения. Значения, ревизию, права и адреса отдаёт приложение через порт simai.property-view-port. Смена record-id перечитывает объект и ничего не сохраняет от предыдущего.

Порт — объект с полями version, capabilities и методом raise(intent, payload, {signal}), который возвращает ответ приложения. Компонент принимает версии порта от 1.0.0 до 1.13.0. Передайте порт методом setHostPort или в ответ на событие sf-host-port-request, которое компонент отправляет при подключении, пока порта у него нет.

Пример выше сам играет роль приложения: record.load отдаёт запись, group.save принимает изменённые поля и возвращает следующую ревизию. Нажмите карандаш у области, измените значение и сохраните — панель выходит из правки только после ответа.

Возможности и намерения

capabilities перечисляет, что приложение умеет. Управление, за которым нет возможности, компонент не рисует; приложение без возможности не сломано — поле просто показывает значение только для чтения.

Намерение Возможность Когда поднимается Ответ applied
record.load — при подключении и при смене record-id {answer, record}
group.save — по кнопке сохранения области запись следующей ревизии
record.save — сохранение всего объекта в режиме edit запись следующей ревизии
record.create — создание объекта в режиме create созданная запись
record.delete — по удалению, если в record.actions есть record.delete подтверждение удаления
field.options field-options поле-ссылка открывает список кандидатов страница вариантов
field.upload field-upload человек выбрал файл, по намерению на файл сохранённый файл
record.open record-open активировано значение-ссылка {answer}
view.save, view.reset view-settings человек меняет раскладку или сбрасывает слой раскладка новой ревизии
view.profile, view.create, view.rename, view.delete view-settings работа с именованными видами запись через выбранный вид

Ответ — объект с полем answer: applied, conflict, refused или unavailable. При сохранении conflict оставляет введённое и показывает сообщение приложения (или conflict-text), refused с картой errors ставит ошибки у конкретных полей, unavailable переводит карточку в состояние ошибки.

Режимы: просмотр, правка, создание

Одна поверхность служит для любого объекта; что она предлагает, решают режим mode и права из записи:

  • view — только показать объект: без правки, подвала, удаления и расстановки, какие бы права ни были у человека;
  • auto (по умолчанию) — показать и предложить то, что этому человеку можно: правку, если в record.actions есть record.edit, действия жизненного цикла и слои вида, доступные для записи;
  • edit — все области открыты сразу, весь объект сохраняется одним намерением record.save одной ревизией;
  • create — record.load с режимом create отдаёт пустой объект коллекции, разложенный по её раскладке, все поля открыты, объект создаёт одно намерение record.create. После создания компонент показывает новый объект в режиме auto, а приложение может перейти к его собственной странице.

Отмена в режимах edit и create отбрасывает введённое и отправляет sf-property-view-cancel; панель при этом закрывается. Эти режимы требуют порта версии 1.12.0.

Сохранение области

Область правится и сохраняется целиком: одно нажатие кнопки — одно намерение group.save и одна ревизия. Ничего не отправляется при уходе фокуса и по одному полю. Намерение несёт только изменённые поля и ревизию, прочитанную при загрузке; сравнивает ревизии приложение.

JavaScript
{
  record_id: 'record-00829e9f',
  collection: 'docs.demo_solutions',
  section: 'main',
  group: 'main',
  values: { title: 'Новое название' },
  revision: 4
}

Структура записи

JavaScript
{
  record_id: 'record-00829e9f',
  collection: 'docs.demo_solutions',
  revision: 4,
  sections: [
    { key: 'main', label: 'Общее', groups: [
      { key: 'main', label: 'Основное', columns: 2, fields: [
        { key: 'title', label: 'Название', propertyType: 'string', value: '…', width: 'half', required: true },
      ] },
    ] },
  ],
}

sections обязателен даже для одного раздела; один раздел рисуется без списка разделов. Поле занимает половину или всю ширину области (width), область раскладывается в одну или две колонки (columns). Отрисовщик поля выбирается по propertyType, а не по имени компонента. Типы свойств, их значения и элементы правки описывает глава Поля по типу свойства. Поле с несколькими значениями (choices) в просмотре переносит метки на новые строки, и каждая метка остаётся шириной в свой текст, а в правке при 13 вариантах и больше становится списком флажков.

Раздел, область или поле с rare: true скрыты, пока не задан show-rare; приложение присылает их всегда, поэтому показ редких полей ничего не перечитывает и не меняет значений. Поля с hidden: true не рисуются.

Разделы и раскладка

sections-as="list" ставит список разделов колонкой рядом с полями — для экрана настроек с большим числом разделов; sections-as="tabs" — рядом вкладок над полями — для записи с несколькими разделами. На узком экране раздел открывается отдельным экраном с кнопкой возврата к списку (back-label).

Шапка и подвал закреплены: прокручиваются только колонки разделов и полей.

Панель рядом со списком

panel показывает карточку немодальной панелью рядом со списком, из которого открыт объект: список остаётся видимым и доступным. panel-label — название записи в шапке панели и её доступное имя; ширину задают panel-size (1/2, 1, 2, full) или точная длина в panel-width.

Шапка панели предлагает то, что разрешило приложение:

  • закрытие — событие sf-property-view-close с {reason, record_id, unsaved_fields}; закрывает панель приложение;
  • звезду избранного — sf-property-view-favourite с {record_id, collection, favourite}; звезда меняется, когда приложение задаёт favourite;
  • копирование ссылки, если в записи есть address, — sf-property-view-address-copy с {address, url, copied, record_id};
  • открытие на отдельной странице, если есть address и возможность record-open, — sf-property-view-open-full с {address, record_id};
  • удаление, если в record.actions есть record.delete, — после ответа приходит sf-property-view-delete-record с {record_id, collection, revision, answer}; спрашивать ли подтверждение, решает приложение.

Значение-ссылка поднимает record.open и затем отправляет sf-property-view-open-record с {field, value, answer}. Смена состояния карточки (загрузка, готово, правка, ошибка) отправляет sf-property-view-state с {state, message}.

Именованные виды

Вид — целая раскладка с постоянным именем, а не фильтр поверх текущей. Человек выбирает из плоского списка: «Обычный», «Экспертный», «Для продаж», «Персональный». Слои — общий и личный — разрешаются внутри выбранного вида. Список видов приходит в записи:

JavaScript
view: {
  profiles: [
    {id: 'default', label: 'Обычный', shared: true},
    {id: 'expert', label: 'Экспертный', shared: true},
    {id: 'mine', label: 'Персональный', shared: false}
  ],
  profile: 'default',
  layers: { … },
  editable: ['personal']
}
  • Идентификатор вида постоянен: переименование меняет только подпись, и всё, что ссылается на вид, продолжает на него ссылаться.
  • shared говорит, чей вид: общий видят все, личный — только его хозяин. Кто вправе писать общий слой, сказано в editable.
  • Выбранный вид — собственный выбор человека (порт 1.13.0). Приложение хранит его для человека и коллекции и отвечает на record.load и record.open через него, пока человек не выберет другой или этот вид не удалят; после перезагрузки человек видит тот вид, который выбрал.
  • Если вид один, выбора нет и компонент его не рисует.
  • Последний общий вид удалить нельзя: компонент не предлагает это действие, а приложение отказывает, если его всё же попросили.

Каких решений здесь нет:

  • Вида по умолчанию в компоненте: какой вид человек получает до первого выбора — или когда выбранный вид удалён, — решает приложение, например по группе человека.
  • Хранения выбора в компоненте: выбор, сохранённый в браузере, исчез бы в другом браузере, поэтому выбор хранит приложение.
  • Наследования видов: каждый вид — полная раскладка.
Намерение Когда Что возвращает приложение
view.profile выбран другой вид запись, прочитанную через него; приложение запоминает выбор для человека и коллекции
view.create заведён новый вид запись через новый вид; идентификатор даёт приложение
view.rename изменена подпись запись; идентификатор не меняется
view.delete вид удалён запись через вид, который стал текущим

Расстановка вида

Если приложение заявило возможность view-settings и человек вправе менять хотя бы один слой, в шапке появляется кнопка «Настроить вид» (configure-text). В режиме расстановки:

  • поля перетаскивают между группами и на раздел в списке слева; на узкой панели, где список разделов — отдельный экран, поля переносят только между группами;
  • группы переставляют перетаскиванием или кнопками «Выше» и «Ниже» для тех, кому удобнее нажимать;
  • кнопки рядом с группой и полем добавляют область, переименовывают и удаляют её, убирают поле из области; разделу меняют название и значок или удаляют его — его области переходят в оставшийся раздел;
  • поля, которых вид не показывает, лежат в области «Не размещённые»; убранное поле попадает туда же и ничего не теряет;
  • «Настройки поля» ставят поле на всю ширину строки или в половину, его название в этом виде, шаблон и подсказку.

Каждое изменение сохраняется сразу намерением view.save с целевым слоем (общий или личный) и его ревизией, поэтому «Готово» только закрывает режим. «Отменить» возвращает раскладку, с которой режим был открыт. «Сбросить» спрашивает подтверждение и намерением view.reset убирает весь слой, открывая то, что лежит под ним. Если слой тем временем изменил кто-то другой, компонент перечитывает раскладку и говорит об этом (view-conflict-text). Слой, который человеку писать нельзя, показан недоступным с причиной от приложения.

Подписи

Подписи кнопок, подсказок и состояний компонент берёт на языке страницы (русском или английском). Атрибуты *-text и *-label — edit-text, save-text, empty-text, close-label и другие из справочника ниже — заменяют их своими, например словами предметной области.

Доступность

  • Карточка — область region. Задайте ей имя через aria-label, а у панели — через panel-label, который также виден в шапке: в стопке панелей человеку важно знать, какая запись открыта.
  • Поля и кнопки — нативные элементы управления и дочерние Smart-компоненты в обычном порядке Tab; у каждого поля есть видимая подпись из label.
  • Перечитывание записи не перемещает фокус.
  • Ошибки, с которыми приложение отклонило сохранение, показываются у самих полей, а их число — на панели действий (errors-text).
  • Кнопки без текста — закрытие, копирование ссылки, звезда, меню «…» — берут доступное имя на языке страницы; заменить его можно атрибутами close-label, copy-link-label, favourite-label и menu-label.

Справочник API

Раздел собран из манифеста компонента выпуска ui-106d5901f8c3 и обновляется вместе с выпуском. Чтобы исправить описание, исправьте манифест.

Каждому атрибуту соответствует свойство элемента с тем же именем в camelCase: search-placeholder — searchPlaceholder. Свойство атрибута template называется templateName.

Тег <sf-property-view>
Назначение Поля одного объекта по разделам, группам и полям; каждое поле рисует набор рендереров своего типа, данные идут через отдельный порт хоста. Группа редактируется и сохраняется одной ревизией по кнопке, а значение ссылочного поля выбирается из кандидатов элемента постранично. Парный компонент к представлению данных: то показывает набор записей, этот — один объект.
Контракт smart.property-view, версия 1.4.0
Поставка пакет larena (SF_BOOT_CONFIG.packages.larena)
Жизненный цикл экспериментальный: API может меняться между выпусками
Готовность host-required
Заготовка до прихода кода сервер пишет data-sf-skeleton="record"; пока ждёт данные, рисует свой скелетон (Заготовка до прихода кода)

Атрибуты

  • add-field-text — string, по умолчанию Add a field. Открывает список полей, которые может принять эта группа: тех, что представление никуда не помещает, и тех, что находятся в другой группе.
  • add-group-text — string, по умолчанию Add an area. Называет кнопку, создающую новую область в конце компоновки.
  • add-section-text — string, по умолчанию Add a section. Называет кнопку, создающую новый раздел.
  • back-label — string, по умолчанию Back. Элемент управления, который возвращает с экрана раздела к списку разделов; существует только ниже контрольной точки drawer. Выше неё разделы стоят рядом с группами, и возвращаться неоткуда.
  • cancel-configuring-text — string, по умолчанию Cancel. Называет элемент управления, выходящий из режима компоновки с той компоновкой, с которой в него вошли. Это не сброс: сброс убирает слой, а этот элемент возвращает то, что было.
  • cancel-name-text — string, по умолчанию Leave the name. Называет крестик, оставляющий имя без изменений.
  • cancel-text — string, по умолчанию Cancel. Подпись действия, которое отбрасывает введённое. Ничего не записано, поэтому отменять нечего.
  • changed-text — string, по умолчанию Fields changed. Подпись перед количеством изменённых полей на панели действий.
  • close-label — string, по умолчанию Close. Доступное имя элемента закрытия панели. По умолчанию — слово на языке страницы; атрибут его переопределяет.
  • collection — string, по умолчанию пусто. Тип объекта в словаре самого хоста. Передаётся обратно хосту и здесь не интерпретируется.
  • collection-icon — string, по умолчанию пусто. Значок рядом с названием коллекции из иконочного шрифта Framework.
  • collection-label — string, по умолчанию пусто. Название коллекции, показанное отдельной строкой над названием записи. Порт передаёт ключ коллекции; читаемое название принадлежит хосту и приходит сюда.
  • configure-hint-narrow-text — string, по умолчанию Drag fields between groups. Applied at once.. Выводится на полосе, пока представление настраивается в узкой панели, где список разделов — отдельный экран и поле нельзя перетащить на него.
  • configure-hint-text — string, по умолчанию Drag fields between groups and onto a section on the left. Applied at once.. Выводится на полосе, пока представление настраивается: что делает перетаскивание и что изменение применяется сразу.
  • configure-text — string, по умолчанию Arrange the view. Элемент управления, который включает режим настройки. Показывается, только если хост объявляет view-settings и пользователь может записывать хотя бы один слой.
  • conflict-text — string, по умолчанию The record changed; read it again. Текст конфликта, когда хост не передаёт своё сообщение.
  • copy-link-label — string, по умолчанию Copy link. Доступное имя элемента управления копированием; он появляется, только если хост передал адрес.
  • delete-text — string, по умолчанию Delete. Элемент управления, который просит хост удалить запись. Предлагается, только если среди действий записи есть record.delete.
  • done-configuring-text — string, по умолчанию Done. Выходит из режима настройки. Изменения уже сохранены, поэтому действие закрывает режим, а не подтверждает что-либо.
  • edit-text — string, по умолчанию edit. Подпись, открывающая группу для редактирования. По умолчанию — слово на языке страницы; атрибут его переопределяет.
  • empty-record-text — string, по умолчанию This record has nothing to show. Выводится вместо полей, когда хост ответил записью без видимого содержимого. Без этой подписи панель выглядит пустой рамкой, которая читается как незавершённая загрузка.
  • empty-text — string, по умолчанию not filled in. Как читается пустое значение. По умолчанию — слово на языке страницы; атрибут его переопределяет.
  • errors-text — string, по умолчанию Errors. Подпись перед количеством ошибок полей, с которыми хост отклонил сохранение.
  • favourite — boolean, по умолчанию false. Входит ли запись в избранное пользователя. Звезда сообщает о нажатии и перерисовывается, когда хост устанавливает это значение обратно: хранить признак избранного — задача хоста.
  • favourite-label — string, по умолчанию Favourite. Доступное имя звезды рядом с названием записи.
  • field-label-text — string, по умолчанию Name. Называет поле в собственных настройках поля, где вводится имя поля в этом представлении. Коллекция хранит своё имя; сброс слоя возвращает его.
  • field-settings-text — string, по умолчанию Field settings. Называет поверхность с шириной, шаблоном и подсказкой поля во время компоновки представления.
  • hidden-text — string, по умолчанию Hide. Скрывает запись в этом слое. Отключено, если её скрыл слой выше; хост указывает это для каждой записи.
  • hide-rare-text — string, по умолчанию Hide rare fields. Предлагает снова перестать показывать редкие записи.
  • hint-text — string, по умолчанию Hint. Подсказка, сохранённая для поля в этом слое.
  • in-this-group-text — string, по умолчанию In this area. Называет часть списка добавления полей, которую эта область уже содержит. Список один раз указывает, где поле находится сейчас, над полями, которые там находятся.
  • inherited-text — string, по умолчанию by default. Отметка значения, которое запись не задала и которое унаследовано от пакета или темы. Увидев её, пользователь понимает, что изменение источника изменит и это значение.
  • link-copied-label — string, по умолчанию Link copied. Название элемента управления копированием, пока на нём отображается галочка. Копирование не оставляет видимого следа, поэтому элемент сообщает о нём столько, сколько это делает буфер обмена Framework, а затем возвращается в исходное состояние.
  • menu-label — string, по умолчанию More. Доступное имя меню «…» в шапке.
  • move-down-text — string, по умолчанию Move down. Перемещает группу на одну позицию вниз.
  • move-up-text — string, по умолчанию Move up. Перемещает группу на одну позицию вверх среди групп своего раздела — для тех, кто предпочитает нажимать, а не перетаскивать.
  • new-group-title — string, по умолчанию New area. Имя, с которым создаётся новая область, пока пользователь не ввёл своё.
  • new-section-title — string, по умолчанию New section. Имя, с которым создаётся новый раздел, пока пользователь не ввёл своё.
  • no-match-text — string, по умолчанию Nothing matches. Выводится вместо списка, когда поиск не нашёл ни одного поля.
  • open-full-label — string, по умолчанию Open as a page. Доступное имя элемента управления открытием на полной странице; он появляется, только если хост передал адрес.
  • panel — boolean, по умолчанию false. Отображается в немодальной панели рядом со списком, из которого открыт объект, а не в рабочей области. Панель немодальная намеренно: список остаётся видимым и доступным.
  • panel-label — string, по умолчанию пусто. Название записи в шапке панели и доступное имя панели. Одного доступного имени недостаточно: панель без видимого заголовка не сообщает, какая запись открыта, а в стеке панелей это пользователю нужнее всего. Полная шапка с коллекцией и звездой — отдельный шаг.
  • panel-size — string, по умолчанию 1, значения: 1/2, 1, 2, full. Ширина панели по собственной шкале панели.
  • size — string, по умолчанию 1, значения: 1, 1/2. Размер представления: текст, подписи полей, заголовки и элементы управления. 1/2 совпадает с таблицей размера 1/2.
  • mode — string, по умолчанию auto, значения: view, auto, edit, create. Для чего поставлена поверхность. view: показать объект без правки, подвала, удаления и расстановки, что бы человеку ни было разрешено. auto: показать и предложить то, что этому человеку можно (record.edit, действия жизненного цикла, слои, доступные для записи). edit: все группы открыты сразу, одно record.save. create: пустой объект коллекции, прочитанный через record.load в режиме create, все поля открыты, одно record.create.
  • panel-width — string, по умолчанию пусто. Точная ширина панели — для потребителя, макету которого не подходит шаг шкалы. Пустое значение оставляет управление panel-size; заданная здесь длина имеет приоритет. Панель в стопке сужается от этой ширины, а не от шкалы.
  • personal-layer-text — string, по умолчанию Personal. Слой, который видит только этот пользователь. Он стоит в списке именованных представлений рядом с «Обычный» и «Экспертный», поэтому его название отвечает на тот же вопрос, что и остальные.
  • rare-text — string, по умолчанию rare. Отмечает рядом с именем запись, которую коллекция объявляет редкой.
  • record-id — string, по умолчанию пусто. Какой объект читать. При изменении значения данные перечитываются через порт; от предыдущего объекта компонент ничего не сохраняет.
  • remove-field-text — string, по умолчанию Remove from this area. Называет элемент управления, убирающий поле из его области. Поле переходит в неразмещённые, откуда список области может вернуть его, и ничего не теряется.
  • remove-group-text — string, по умолчанию Remove this area. Называет элемент управления, убирающий область из представления. Её поля переходят в неразмещённые, а не удаляются вместе с ней.
  • remove-section-text — string, по умолчанию Remove this section. Называет элемент управления, убирающий раздел из представления. Его области переходят в оставшийся раздел.
  • rename-text — string, по умолчанию Rename. Называет карандаш рядом с именем области или раздела во время компоновки представления, а также открываемое им поле.
  • reset-view-ask-text — string, по умолчанию Reset the whole view?. Вопрос, который задаёт сброс перед удалением слоя. Сброс отменяет всё, что пользователь настроил в этом слое, а это больше, чем должно происходить от одного нажатия кнопки рядом с «готово».
  • reset-view-text — string, по умолчанию Reset. Возвращает выбранный слой к тому, что лежит под ним.
  • save-name-text — string, по умолчанию Save the name. Называет галочку, записывающую вводимое имя в слой.
  • save-text — string, по умолчанию Save. Подпись действия, которое сохраняет открытую группу. Одно нажатие — одна ревизия.
  • section-icon-text — string, по умолчанию Section glyph. Называет выбор символа раздела во время компоновки представления.
  • section-icons — string, по умолчанию пусто. Значки, которыми можно пометить раздел, — имена из набора иконок Framework через пробел или запятую. Пустое значение означает собственные сто двадцать иконок компонента, наиболее востребованные в продуктах; хост со своим словарём заменяет их, а не дополняет.
  • sections-as — string, по умолчанию list, значения: list, tabs. Как отображаются разделы: списком рядом с группами — для экрана настроек с большим числом разделов, или рядом вкладок над ними — для записи с несколькими разделами. Сами разделы одинаковы в обоих вариантах.
  • sections-label — string, по умолчанию Sections. Доступное имя списка разделов. По умолчанию — слово на языке страницы; атрибут его переопределяет.
  • shared-layer-text — string, по умолчанию Everyone's. Слой, который видят все. Если этот пользователь не может его записывать, слой отображается отключённым с причиной от хоста, а не скрывается — отсутствующий элемент управления воспринимается как отсутствующая функция.
  • show-rare — boolean, по умолчанию false. Показывает разделы, группы и поля, которые хост пометил как редкие. Это решение представления: оно ничего не записывает и не меняет значений.
  • show-rare-text — string, по умолчанию Show rare fields. Предлагает показать записи, которые коллекция объявляет редкими. Предлагается, только если запись содержит такую.
  • shown-text — string, по умолчанию Shown. Называет элемент управления, показывающий или скрывающий запись в этом слое.
  • template — string, по умолчанию default, значения: default. Шаблон, которым рисуется представление.
  • unplaced-hint-text — string, по умолчанию Fields this view does not show. Drag one into a group to place it, or drag a field here to take it out.. Устаревший атрибут: значение разбирается и игнорируется. Неразмещённые поля показывает аккордеон Framework, строки подсказки в нём нет.
  • unplaced-title — string, по умолчанию Not placed. Называет область с полями, которые это представление не помещает ни в одну группу. Отображается только во время компоновки представления.
  • variant-text — string, по умолчанию Template. Выбирает вариант шаблона из предлагаемых хостом для этого поля.
  • view-conflict-text — string, по умолчанию The view changed and was read again. Выводится, когда слой изменился без участия этого пользователя и расположение было прочитано заново.
  • view-denied-text — string, по умолчанию You may not change this layer. Причина по умолчанию для слоя, который этот пользователь не может записывать; используется, когда хост не передаёт свою.
  • width-text — string, по умолчанию Full width. Называет переключатель, при котором поле занимает всю строку, а не половину.
  • view-profile-label — string, по умолчанию View. Доступное имя элемента выбора, который определяет, какое именованное представление показано. Если не задано, компонент использует язык страницы.
  • add-view-text — string, по умолчанию Add a view. Текст элемента управления, который создаёт новое именованное представление из расположения на экране. Если не задан, компонент использует язык страницы.
  • new-view-text — string, по умолчанию New view. Название представления в момент создания, пока пользователь его не заменил. Представление «Новое представление» среди четырёх настоящих невозможно отличить от остальных, поэтому имя сразу открывается для ввода.
  • delete-view-text — string, по умолчанию Remove the view. Доступное имя элемента управления, который удаляет именованное представление.
  • last-shared-view-text — string, по умолчанию The only view everyone has. Почему удаление не предлагается для последнего общего представления: область без представлений ничего не даёт пользователю, у которого нет своих. Показывается на недоступном элементе управления, а не как отказ после нажатия.

Свойства в документе макета

Узел типа smart.property-view в документе макета (simai.composition.document.v1) принимает:

  • свойства: cancel-text, changed-text, close-label, collection, conflict-text, copy-link-label, edit-text, empty-text, errors-text, mode, open-full-label, panel, panel-label, panel-size, record-id, save-text, sections-label, show-rare, size, template.

Значения свойств те же, что у одноимённых атрибутов, и того же типа, что в списке атрибутов: строковое значение пишется строкой ("size": "1", а не 1 — число отклоняется с диагностикой schema_enum или schema_type), логическое — true или false.

Методы

  • setHostPort(host: object) — возвращает object. Подключает адаптер хоста, предоставляющий raise(intent, payload, {signal}), version и capabilities.
  • load(reason?: string) — возвращает object. Повторно читает объект через порт.
  • editGroup(section: string, group: string) — возвращает object. Открывает одну группу для редактирования.
  • cancelEdit() — возвращает object. Закрывает открытую группу, отбрасывая введённое. Ничего не записывает.
  • saveGroup() — возвращает object. Сохраняет изменённые поля открытой группы одной ревизией.
  • selectSection(key: string) — возвращает object. Открывает один раздел.
  • changeField(field: object, value: any) — возвращает object. Фиксирует изменение поля; undefined отменяет изменение, и сохранение ничего не передаёт для этого поля. Вызывается шаблоном редактирования; хосту он не нужен.
  • getFieldOptionsPage(field: object) — возвращает object | null. Страница кандидатов, которую хост последней вернул для одного поля.
  • getFieldOptionSearch(field: object) — возвращает string. Текст, введённый пользователем в элемент выбора одного поля.
  • setFieldOptionSearch(field: object, text: string) — возвращает object. Записывает введённый текст, не обращаясь к хосту.
  • loadFieldOptions(field: object, options?: object) — возвращает object. Запрашивает у хоста страницу вариантов для одного поля.
  • closePanel(reason?: string) — возвращает object. Сообщает, что панель следует закрыть. Решение о закрытии принимает хост.
  • copyAddress() — возвращает object. Копирует адрес, переданный хостом, и сообщает, разрешил ли это браузер.
  • openFullPage() — возвращает object. Сообщает, что этот объект следует открыть на отдельной странице.
  • getFieldUploads(field: object) — возвращает array. Файлы одного поля в процессе загрузки, в форме, которую читает sf-file-upload.
  • startFieldUpload(field: object, items: array) — возвращает object. Передаёт хосту выбранные человеком файлы, по одному намерению на файл.
  • retryFieldUpload(field: object, index: number) — возвращает object. Повторно отправляет один файл, загрузка которого не удалась.
  • openReference(field: object, value: any) — возвращает object. Просит хост открыть ссылку, которую активировал человек.

События

Все события приходят на сам элемент и всплывают. Общие события базового элемента перечислены в главе Жизненный цикл → Этапы.

  • sf-property-view-state — detail не описан.
  • sf-property-view-close — detail не описан. Панель просит закрыть её и передаёт количество изменённых, но не сохранённых полей.
  • sf-property-view-address-copy — detail не описан. Адрес окна скопирован, или браузер отказал в доступе к буферу обмена.
  • sf-property-view-open-full — detail не описан. Пользователь запросил этот объект на полной странице по адресу, который передал хост.
  • sf-property-view-delete-record — detail не описан. Пользователь запросил удаление записи; хост решает, спрашивать ли подтверждение и удалять ли вообще.
  • sf-property-view-open-record — detail не описан. Активировано значение-ссылка; что открыть и где, решает хост.
  • sf-host-port-request — detail: { component?: object, context?: object }. Запрашивает у страницы порт хоста — один раз за подключение и только пока у элемента его нет. Общее соглашение для всех компонентов, принимающих setHostPort. Ответ — вызов setHostPort на цели события, сразу или позже.
  • sf-property-view-favourite — detail: { record_id?: string|null, collection?: string|null, favourite?: boolean }. Нажата звезда. Передаёт запись, коллекцию и запрошенное состояние; компонент ничего не меняет, пока хост не установит favourite обратно.
  • sf-property-view-menu — detail: { items?: array, open?: boolean }. Открыто меню «…» в шапке с пунктами, которые компонент предлагает для представления. Хост добавляет свои пункты через слот menu.
  • sf-property-view-created — detail: { record_id?: string|integer|null, collection?: string|null }. Форма создания создала объект; хост может перейти к его собственному месту. Компонент показывает новый объект в режиме auto.
  • sf-property-view-cancel — detail: { mode?: any }. Поверхность, открытая целиком (edit, create), отменена: введённое отбрасывается, а куда перейти, решает хост. Панель закрывается.

Доступность

  • Роль: область (region).
  • Доступное имя: обязательно.
  • Клавиши: Нативные элементы управления и дочерние Smart-компоненты.
  • Фокус: Фокус не перемещается при повторном чтении

Минимальная разметка

HTML
<sf-property-view collection="storage" record-id="42" aria-label="Запись"></sf-property-view>

Источник

  • simai/larena-ui@5f33ba576aebde377d5195ec71836eb4430aa84d:components/src/smart/property-view
  • simai/larena-ui@5f33ba576aebde377d5195ec71836eb4430aa84d:components/src/smart/property-view/rule.js#name=cl-property-view

См. также

Поиск по документации

Введите минимум 2 символа

    Настройки

    Тема
    Размер шрифта
    Ширина страницы