fix: таблица организаций без дублирующей подписи «Организация»

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
gorbenko.pavel
2026-10-02 14:00:23 +05:00
parent 9e6c56c2e7
commit 8cdee83496
2 changed files with 10 additions and 6 deletions
@@ -20,6 +20,11 @@
color: $gray-700; color: $gray-700;
} }
// Блок таблицы на всю ширину сетки формы (без FormField — его подпись дублировала бы заголовок колонки).
.tableWrap {
grid-column: 1 / -1;
}
// Таблица организаций: те же цвета, что у .line — «подставлено автоматически». // Таблица организаций: те же цвета, что у .line — «подставлено автоматически».
.table { .table {
width: 100%; width: 100%;
@@ -1,12 +1,10 @@
import * as React from 'react'; import * as React from 'react';
import styles from './OrganizationField.module.scss'; import styles from './OrganizationField.module.scss';
import { FormField } from '@tnsu/ui-kit';
import { parseOrganizationLine } from '../../dictionary/organizationLines'; import { parseOrganizationLine } from '../../dictionary/organizationLines';
interface IOrganizationTableProps { interface IOrganizationTableProps {
/** `\n`-joined «Компания — должность — подразделение» на организацию (см. formatEmployeeOrganizationsWithDepartment). */ /** `\n`-joined «Компания — должность — подразделение» на организацию (см. formatEmployeeOrganizationsWithDepartment). */
value: string; value: string;
label?: string;
/** Индекс строки, остающейся в печати (см. OrganizationField.printIndex); остальные — `rp-no-print`. */ /** Индекс строки, остающейся в печати (см. OrganizationField.printIndex); остальные — `rp-no-print`. */
printIndex?: number; printIndex?: number;
} }
@@ -14,14 +12,15 @@ interface IOrganizationTableProps {
/** /**
* Организации сотрудника таблицей «Организация · Должность · Подразделение» — * Организации сотрудника таблицей «Организация · Должность · Подразделение» —
* read-only, подтягивается из Employee/ByEmail. На каждую организацию своё * read-only, подтягивается из Employee/ByEmail. На каждую организацию своё
* подразделение (сотрудник может состоять в нескольких). Нет данных — ничего не рендерим. * подразделение (сотрудник может состоять в нескольких). Без внешней подписи: её роль
* играет заголовок колонки «Организация». Нет данных — ничего не рендерим.
*/ */
export const OrganizationTable: React.FC<IOrganizationTableProps> = ({ value, label = 'Организация', printIndex }) => { export const OrganizationTable: React.FC<IOrganizationTableProps> = ({ value, printIndex }) => {
const rows = value ? value.split('\n').map(parseOrganizationLine) : []; const rows = value ? value.split('\n').map(parseOrganizationLine) : [];
if (rows.length === 0) return null; if (rows.length === 0) return null;
return ( return (
<FormField label={label} full> <div className={styles.tableWrap}>
<table className={styles.table}> <table className={styles.table}>
<thead> <thead>
<tr> <tr>
@@ -40,6 +39,6 @@ export const OrganizationTable: React.FC<IOrganizationTableProps> = ({ value, la
))} ))}
</tbody> </tbody>
</table> </table>
</FormField> </div>
); );
}; };