@evergis/react 4.0.151 → 4.0.153

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/react.esm.js CHANGED
@@ -11459,7 +11459,7 @@ const saveToSource = async ({ api, layerName, rows, schema, }) => {
11459
11459
  };
11460
11460
 
11461
11461
  /**
11462
- * Запись черновика: сперва в источник (если он поддерживает запись), затем в фильтр.
11462
+ * Запись черновика: сперва в слой (если задан — то есть включён `saveToLayer`), затем в фильтр.
11463
11463
  *
11464
11464
  * Порядок не случаен: потребители фильтра не должны увидеть данные, которых источник не принял.
11465
11465
  * При ошибке черновик остаётся нетронутым — пользователь может исправить значения и повторить.
@@ -11508,9 +11508,9 @@ const getSourceAttributes = (attributesConfiguration) => {
11508
11508
  * поле сервер всё равно не примет, поэтому конфиг может такую ячейку только ЗАПРЕТИТЬ, но не
11509
11509
  * разрешить.
11510
11510
  *
11511
- * Источник без записи (EQL-запрос, python-скрипт, внешний url) их не накладывает вовсе: его
11512
- * строки уходят только в фильтр, и «нередактируемо» там значит лишь «нельзя записать обратно».
11513
- * Решает конфиг — по умолчанию правка разрешена.
11511
+ * Без записи в слой — источник без него (EQL-запрос, python-скрипт, внешний url) или слой без
11512
+ * `saveToLayer` — они не накладываются вовсе: строки уходят только в фильтр, и «нередактируемо»
11513
+ * там значит лишь «нельзя записать обратно». Решает конфиг — по умолчанию правка разрешена.
11514
11514
  */
11515
11515
  const resolveIsEditable = ({ description, source, idAttribute, canWriteToSource }) => {
11516
11516
  const sourceEditable = source && canWriteToSource
@@ -11580,18 +11580,22 @@ const buildStructuredDataSchema = ({ attributesDescription, attributesConfigurat
11580
11580
  * Источник резолвится через общий `useRelatedDataSourceAttributes`: он собирает layerInfo
11581
11581
  * реального слоя, а для EQL/python-источников — синтетический из атрибутов ответа.
11582
11582
  *
11583
- * `layerName` берётся из конфига страницы, а не из загруженного источника: от него зависит,
11584
- * какие ячейки редактируемы, и до окончания загрузки схема не должна меняться.
11583
+ * `layerName` — слой ЗАПИСИ, а не просто слой источника: он задан только при `saveToLayer` и
11584
+ * источнике со слоем. Без опции правка уходит лишь в фильтр, и слой ни на что не влияет — ни на
11585
+ * адресат «Сохранить», ни на ограничения схемы, ни на предупреждение при удалении строки.
11586
+ *
11587
+ * Берётся из конфига страницы, а не из загруженного источника: от него зависит, какие ячейки
11588
+ * редактируемы, и до окончания загрузки схема не должна меняться.
11585
11589
  */
11586
11590
  const useStructuredDataSchema = (type, elementConfig) => {
11587
11591
  const { dataSources } = useWidgetContext(type);
11588
- const { attributesDescription, relatedDataSource } = elementConfig?.options || {};
11592
+ const { attributesDescription, relatedDataSource, saveToLayer } = elementConfig?.options || {};
11589
11593
  const { layerInfo, dataSource, configDataSource } = useRelatedDataSourceAttributes({
11590
11594
  type,
11591
11595
  elementConfig,
11592
11596
  dataSources,
11593
11597
  });
11594
- const layerName = configDataSource?.layerName;
11598
+ const layerName = useMemo(() => (saveToLayer ? configDataSource?.layerName : undefined), [configDataSource?.layerName, saveToLayer]);
11595
11599
  const attributesConfiguration = useMemo(() => (relatedDataSource ? getAttributesConfiguration(layerInfo) : undefined), [layerInfo, relatedDataSource]);
11596
11600
  const schema = useMemo(() => buildStructuredDataSchema({ attributesDescription, attributesConfiguration, canWriteToSource: !!layerName }), [attributesDescription, attributesConfiguration, layerName]);
11597
11601
  return { schema, dataSource, layerName };
@@ -11604,9 +11608,9 @@ const useStructuredDataSchema = (type, elementConfig) => {
11604
11608
  * редакторов ячеек, добавления, удаления и кнопок сохранения. Состав строк закрывается отдельно:
11605
11609
  * с `editOnly` у представления правка ячеек остаётся, а добавление и удаление уходят.
11606
11610
  *
11607
- * Вид источника на права правки не влияет — от него зависит только адресат «Сохранить». Слой
11608
- * принимает запись через features-API, источник без `layerName` (EQL, python-скрипт, внешний
11609
- * url) не принимает ничего, и правка такой таблицы уходит только в фильтр.
11611
+ * Вид источника на права правки не влияет. Адресат «Сохранить» — фильтр всегда, а слой — только
11612
+ * с `options.saveToLayer`: слой принимает запись через features-API, источник без `layerName`
11613
+ * (EQL, python-скрипт, внешний url) не принимает ничего, и опция у него уходит вхолостую.
11610
11614
  *
11611
11615
  * Значение фильтра читается так же, как его читают остальные потребители дашборда: выбор
11612
11616
  * пользователя, а пока его нет — `defaultValue` из конфига фильтра. Общего стейта, залитого