feat: перенос быстрой пачки компонентов 0.1.0
This commit is contained in:
+44
@@ -67,6 +67,48 @@ web part через `npm i`, и держать единый вид через д
|
||||
- **Шаг 2 в работе**: переписан package.json (@tnsu/ui-kit, exports, peerDeps, Vite-скрипты),
|
||||
ставятся devDependencies, добавлен .gitignore.
|
||||
|
||||
## План переноса компонентов (инвентаризация + решения, 2026-08-13)
|
||||
|
||||
Источник — request-portal `shared/ui/`, `shared/approval/ui/`, `shared/dictionary/ui/`,
|
||||
и (фаза 2) `components/`.
|
||||
|
||||
### Группа 1 — чистая презентация, переносим КАК ЕСТЬ
|
||||
Alert, FormCard, FormGrid, FormField, TextInput, TextArea, PhoneInput, MoneyInput,
|
||||
Select, Toggle, CollapseSection, FormActions, Icon (+ IconSprite/iconNames),
|
||||
RequestNumber, StatusBadge, ErrorOverlay, FormMode (FormModeProvider + useFormReadOnly).
|
||||
|
||||
### Группа 2 — презентация с нюансами (решения приняты)
|
||||
- ConfirmDialog (+ confirmModal), FileDropzone, useFlipRows → переносим КАК ЕСТЬ (проверено: чисты).
|
||||
- AttachmentList → переносим, но РАЗВЯЗАТЬ тип: вместо `import { IAttachmentInfo }`
|
||||
из attachments.service объявить локальный `{ url: string; fileName: string }`.
|
||||
- PrintButton → переносим КАК ЕСТЬ; сохраняем соглашение классов `.rp-print-root` /
|
||||
`.rp-no-print` — задокументировать в README, чтобы потребители их соблюдали.
|
||||
- ItemsTable → ОБОБЩАЕМ в generic `DataTable` (колонки через проп: {key,title,width?,
|
||||
align?,editable?,render?}, value/onChange/readOnly). Excel-вставка — ОПЦИОНАЛЬНАЯ/
|
||||
подключаемая (не хардкодить parseExcelRows под ТМЦ; проект даёт свой маппинг/парсер).
|
||||
ТМЦ-таблица = конфиг колонок поверх DataTable. Это ОТДЕЛЬНАЯ design-задача (не copy-paste),
|
||||
делать позже, сверяя абстракцию со 2-м реальным примером таблицы.
|
||||
|
||||
### Группа 3 — бизнес-логика / SharePoint, НЕ в ui-kit (как есть)
|
||||
PeopleField/PeopleFieldMulti, UserPicker, InitiatorLine, SubmitActions, useRequestSubmit,
|
||||
DecisionPanel, ApprovalMatrix, DepartmentPicker, ProjectPicker.
|
||||
- SubmitActions — на обсуждении: можно «очистить» от useRequestSubmit → презентационный → в ui-kit.
|
||||
- Пикеры — возможно позже РАЗДЕЛИТЬ: презентационный UI (ui-kit) + data-обёртка (проект).
|
||||
- Логику согласования — возможно в отдельный пакет @tnsu/approval (или @tnsu/sp-core). На будущее.
|
||||
|
||||
### Группа 4 — навигация / app shell (ФАЗА 2)
|
||||
Tabs (из CategoryTabs), Breadcrumbs (новый), Sidebar (из SideNav), AppLayout (из RequestPortal),
|
||||
Drawer(?). Сначала «расцепить» от роутинга портала → сделать controlled
|
||||
(items + activeId + onSelect), потом переносить. Даёт новым приложениям готовую оболочку.
|
||||
|
||||
### Порядок работ
|
||||
1. [СДЕЛАНО в 0.1.0] Быстрая пачка (20 компонентов): вся Группа 1 (кроме ErrorOverlay/
|
||||
StatusBadge — оказались связаны с diagnostics/statuses, отложены) + ConfirmDialog/
|
||||
FileDropzone/useFlipRows + AttachmentList (тип развязан на локальный {url,fileName}) +
|
||||
PrintButton. Сборка чистая, типы ок.
|
||||
2. DataTable — отдельной design-задачей.
|
||||
3. Группа 3/4 — по мере надобности.
|
||||
|
||||
## Как мигрировать старый проект (памятка на будущее)
|
||||
|
||||
1. `npm i @tnsu/ui-kit` — ничего не ломается, пакет просто лежит рядом.
|
||||
@@ -90,6 +132,8 @@ web part через `npm i`, и держать единый вид через д
|
||||
публикацией (npm не даёт перезаписать уже опубликованную версию).
|
||||
- Потребителю (request-portal и др.) нужен такой же `@tnsu:registry` в его `.npmrc` +
|
||||
свой токен на чтение пакетов.
|
||||
- ПРОВЕРЕНО: коллега (другой пользователь Gitea) успешно установил @tnsu/ui-kit со своим
|
||||
read-токеном — кросс-доступ к личным пакетам работает, переносить в организацию пока НЕ нужно.
|
||||
|
||||
## Окружение
|
||||
|
||||
|
||||
Reference in New Issue
Block a user