Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/18
This commit was merged in pull request #18.
This commit is contained in:
@@ -128,6 +128,7 @@
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
|
||||
.matrix {
|
||||
width: 100%;
|
||||
min-width: 480px; // колонки не сжимаются; при нехватке места .matrixScroll прокручивает
|
||||
@@ -355,3 +356,16 @@
|
||||
padding-top: $sp-2 !important;
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Печать ----
|
||||
// Прокрутка на бумаге недоступна: неуместившееся вбок просто не попало бы на
|
||||
// лист. Обе оси отпускаем — overflow-y здесь стоит только ради анимации
|
||||
// перестановки строк (см. .matrixScroll), а в печати её нет.
|
||||
//
|
||||
// В конце файла намеренно: @media print не повышает специфичность, и любое
|
||||
// базовое правило ниже перебило бы это (см. CostGroupsEditor.module.scss).
|
||||
@media print {
|
||||
.matrixScroll {
|
||||
overflow: visible;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import { friendlyErrorMessage } from '../diagnostics';
|
||||
import { IMatrixRow } from './models/IMatrixRow';
|
||||
import { ISiteUser } from './models/ISiteUser';
|
||||
|
||||
@@ -175,13 +176,22 @@ export function useMatrixEditor(
|
||||
})
|
||||
.catch((err: Error) => {
|
||||
if (!active) return;
|
||||
setError(err.message);
|
||||
// Через friendlyErrorMessage, а не err.message: PnPjs кладёт в message
|
||||
// тело ответа SharePoint целиком, и кириллица в нём остаётся
|
||||
// \u-escape-последовательностями — пользователь видел «Поле или
|
||||
// свойство…» набором «Поле».
|
||||
setError(friendlyErrorMessage(err));
|
||||
setLoading(false);
|
||||
});
|
||||
return () => {
|
||||
active = false;
|
||||
};
|
||||
// load — стабильная ссылка от вызывающего (useCallback); перезагрузка по reloadKey/ready/retrySeq.
|
||||
// load в зависимостях СОЗНАТЕЛЬНО нет: когда матрицу перечитывать —
|
||||
// решает вызывающий через reloadKey (у него это, например, «выбранный
|
||||
// сотрудник + id заявки»), а сам load пересоздаётся и от тех данных,
|
||||
// которые перезагрузки не требуют. С load в массиве маршрут дёргался бы
|
||||
// на каждое такое изменение. Устаревшего замыкания при этом нет: любой
|
||||
// повторный запуск (reloadKey/ready/retrySeq) берёт свежий load.
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [reloadKey, ready, retrySeq]);
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import type { WebPartContext } from '@microsoft/sp-webpart-base';
|
||||
import { friendlyErrorMessage } from '../diagnostics';
|
||||
import { getRequestTypeIdByPageUrl } from './approvalRoute.service';
|
||||
|
||||
export interface IRequestTypeIdState {
|
||||
@@ -33,7 +34,9 @@ export function useRequestTypeId(context: WebPartContext, pageUrl: string): IReq
|
||||
})
|
||||
.catch((e: Error) => {
|
||||
if (alive) {
|
||||
setError(e.message);
|
||||
// См. useMatrixEditor: сырой message от PnPjs/SharePoint показывает
|
||||
// кириллицу \u-escape-последовательностями.
|
||||
setError(friendlyErrorMessage(e));
|
||||
setLoading(false);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user