diff --git a/package-lock.json b/package-lock.json index 0242ff2..a984264 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@microsoft/sp-webpart-base": "1.22.1", "@pnp/sp": "^4.20.0", "@pnp/spfx-controls-react": "^3.25.0", - "@tnsu/ui-kit": "^0.2.0", + "@tnsu/ui-kit": "^0.3.0", "react": "17.0.1", "react-dom": "17.0.1", "tslib": "2.3.1" @@ -9870,9 +9870,9 @@ "license": "0BSD" }, "node_modules/@tnsu/ui-kit": { - "version": "0.2.0", - "resolved": "http://git.tnsu.kz/api/packages/timur.gorodetskiy/npm/%40tnsu%2Fui-kit/-/0.2.0/ui-kit-0.2.0.tgz", - "integrity": "sha512-8vQsA91lSbmtlqROlIYkgSH3cNEH5DCVI5vM4mks2RWwvSpYet0zfe2B3wfBcnb+cAWrbLGfCwe81KRDcJ/k+Q==", + "version": "0.3.0", + "resolved": "http://git.tnsu.kz/api/packages/timur.gorodetskiy/npm/%40tnsu%2Fui-kit/-/0.3.0/ui-kit-0.3.0.tgz", + "integrity": "sha512-V9pTS/rBmU9KInczI8jJ/KHT96hfX0OlnjIJ2NZ/iEQTOE93I9xMfmgpj83PSRrI6/xzyybu+8k/qVO6LP926w==", "license": "ISC", "peerDependencies": { "@fluentui/react": "^8.106.4", diff --git a/package.json b/package.json index f9bc860..50ca8b8 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@microsoft/sp-webpart-base": "1.22.1", "@pnp/sp": "^4.20.0", "@pnp/spfx-controls-react": "^3.25.0", - "@tnsu/ui-kit": "^0.2.0", + "@tnsu/ui-kit": "^0.3.0", "react": "17.0.1", "react-dom": "17.0.1", "tslib": "2.3.1" diff --git a/src/webparts/requestPortal/shared/approval/ui/StatusBadge.module.scss b/src/webparts/requestPortal/shared/approval/ui/StatusBadge.module.scss deleted file mode 100644 index 3753365..0000000 --- a/src/webparts/requestPortal/shared/approval/ui/StatusBadge.module.scss +++ /dev/null @@ -1,63 +0,0 @@ -@import '../../../../../styles/design-tokens'; - -.badge { - display: inline-flex; - align-items: center; - padding: 5px 12px; - border-radius: $r-sm; - font-family: $font-sans; - font-size: 12.5px; - font-weight: 600; - letter-spacing: .2px; - white-space: nowrap; -} - -// Компактный вариант — для ячейки таблицы (RequestsTableView/SearchView), -// повторяет размеры, что были у их собственной .status до объединения. -.sm { - padding: 3px 10px; - border-radius: $r-md; - font-size: $fs-caption; - font-weight: 600; - letter-spacing: normal; -} - -.draft { - background: $gray-100; - color: $gray-700; -} - -.queued { - background: $gray-100; - color: $gray-500; -} - -.onApproval { - background: $blue-50; - color: $blue-600; -} - -.approved { - background: $green-50; - color: $green-600; -} - -.rejected { - background: $red-50; - color: $red-500; -} - -.returned { - background: $gold-50; - color: $amber-700; -} - -.execution { - background: $navy-50; - color: $navy-800; -} - -.closed { - background: $gray-100; - color: $gray-500; -} diff --git a/src/webparts/requestPortal/shared/approval/ui/StatusBadge.tsx b/src/webparts/requestPortal/shared/approval/ui/StatusBadge.tsx index 9f4d0cc..e611cda 100644 --- a/src/webparts/requestPortal/shared/approval/ui/StatusBadge.tsx +++ b/src/webparts/requestPortal/shared/approval/ui/StatusBadge.tsx @@ -1,40 +1,33 @@ import * as React from 'react'; -import styles from './StatusBadge.module.scss'; +import { Badge, BadgeVariant } from '@tnsu/ui-kit'; import { REQUEST_STATUS } from '../models/statuses'; -// Цвет бейджа по статусу заявки. Неизвестный статус → нейтральный (как черновик). -const VARIANT: Record = { - [REQUEST_STATUS.draft]: styles.draft, - [REQUEST_STATUS.queued]: styles.queued, - [REQUEST_STATUS.onApproval]: styles.onApproval, - [REQUEST_STATUS.onExecution]: styles.onApproval, // активный шаг — как «на согласовании» - [REQUEST_STATUS.approved]: styles.approved, - [REQUEST_STATUS.executed]: styles.approved, // выполнено — как «согласовано» (зелёный) - [REQUEST_STATUS.rejected]: styles.rejected, - [REQUEST_STATUS.returned]: styles.returned, - [REQUEST_STATUS.execution]: styles.execution, - [REQUEST_STATUS.closed]: styles.closed, +// Единственное место, где СТАТУС ЗАЯВКИ превращается в цвет. Сам цвет живёт в +// generic Badge (@tnsu/ui-kit) — здесь только смысловой маппинг «статус → variant». +// Раньше у таблиц была своя копия этой раскраски (statusClass) — она разошлась с +// этой, поэтому обе копии убраны в пользу общего компонента. +const STATUS_VARIANT: Record = { + [REQUEST_STATUS.draft]: 'neutral', + [REQUEST_STATUS.queued]: 'muted', + [REQUEST_STATUS.onApproval]: 'info', + [REQUEST_STATUS.onExecution]: 'info', // активный шаг — как «на согласовании» + [REQUEST_STATUS.approved]: 'success', + [REQUEST_STATUS.executed]: 'success', // выполнено — как «согласовано» (зелёный) + [REQUEST_STATUS.rejected]: 'danger', + [REQUEST_STATUS.returned]: 'warning', + [REQUEST_STATUS.execution]: 'primary', + [REQUEST_STATUS.closed]: 'muted' }; export interface IStatusBadgeProps { status: string; - /** - * 'md' (по умолчанию) — шапка формы/просмотра заявки; 'sm' — компактный - * вариант для ячейки таблицы (RequestsTableView/SearchView). Цвет статуса - * не зависит от размера — единственный источник цвета: VARIANT выше. - */ + /** 'md' (по умолчанию) — шапка формы; 'sm' — компактный для ячейки таблицы. */ size?: 'sm' | 'md'; } -/** - * Цветная плашка статуса заявки — ЕДИНСТВЕННОЕ место, где статус превращается - * в цвет. У таблиц раньше была своя копия этой раскраски (statusClass в - * RequestsTableView.tsx/SearchView.tsx) — она разошлась с этой (на согласовании - * и возвращена на доработку оказались перепутаны местами), поэтому обе копии - * убраны в пользу общего компонента. - */ +/** Цветная плашка статуса заявки поверх generic Badge из @tnsu/ui-kit. */ export const StatusBadge: React.FC = ({ status, size = 'md' }) => ( - + {status} - + );