Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
4ca25b6
fileupload: стилизация, сторисы, обёртки
Apr 22, 2026
7a40401
фикс вызова аплоадера; стилизация интерфейса после загрузки файла
Apr 22, 2026
a4c934a
messageCss восстановлен в map-tokens.ts
Apr 23, 2026
7c9f246
Merge pull request #79 from cdek-it/overlay.dialog
AxyIX May 30, 2026
dbd76b0
Merge feature/styles-debug into file.upload, resolve conflicts
Jun 1, 2026
01dd0d0
исправлен импорт ExtraButtonComponent в fileupload
Jun 1, 2026
f4da1ae
отключён hover у dropzone в состоянии disabled
Jun 1, 2026
acb5a63
добавлена поддержка drag and drop на кастомный dropzone
Jun 1, 2026
4458850
реализован ControlValueAccessor, добавлена стори с реактивной формой
Jun 1, 2026
bf84438
кнопки удаления файлов и управления отправкой
Jun 1, 2026
1fa6c4e
удалён отладочный вывод статуса формы
Jun 2, 2026
1a94e87
@khaliulin валидация accept по MIME-типу, фильтрация файлов при drop
Jun 5, 2026
d676b2b
Merge branch 'feature/styles-debug' into file.upload
khaliulin Jun 9, 2026
4221b2b
figma-to-code
Jun 16, 2026
2b19ea0
файл с пребилдом
Jun 18, 2026
5e1bea9
Merge pull request #85 from cdek-it/feature/styles-debug
AxyIX Jun 18, 2026
0e3fbd1
fix
AxyIX Jun 18, 2026
274a9e2
Merge pull request #86 from cdek-it/fix-publish
AxyIX Jun 18, 2026
2aed3ec
починить сборку storybook: index.ts для lib/shared и baseUrl в tsconfig
Jun 18, 2026
0e94b80
добавить валидатор эквивалентности токенов (equiv/dangling/R11, с учё…
Jun 18, 2026
f8eb368
генератор боевых токенов: новая модель + backward-compat (equiv 1:1, …
Jun 18, 2026
1e1ffd3
перевести боевые токены на новую модель (фаза 1, с backward-compat); …
Jun 18, 2026
bec4731
перевести цветовые dt-ссылки CSS на новые роли (8 имён; overlay.modal…
Jun 18, 2026
24212dc
перевести размерные dt-ссылки CSS на dimension-токены (11 имён; sizin…
Jun 18, 2026
ea1365d
снять superset размеров: единая size-лестница, удалить дубль-шкалы pr…
Jun 18, 2026
c3f67bb
fix
AxyIX Jun 18, 2026
5fe1166
удалить мёртвые dimension-бакеты (list/content/navigation/overlay/fee…
Jun 18, 2026
a3001b8
фиксы ревью: confirmpopup padding (4 значения), accordion borderWidth…
Jun 18, 2026
9c529cb
лин-консолидация semantic: статус свёрнут до structured subtle/bold/t…
Jun 18, 2026
e143449
B: все CSS-стили компонентов переведены на компонентный уровень (187 …
Jun 18, 2026
67647ce
A: tokens.json переведён на чистую prebuild-модель без Aura-superset …
Jun 18, 2026
48cb47d
semantic.typography только роли: атомарные шкалы убраны, 190 ссылок п…
Jun 18, 2026
ca15f0c
нейминг обёрток выровнен по Figma
Jun 18, 2026
601ff9a
синхронизация package-lock с @primeuix/themes
Jun 19, 2026
f60ad95
обновление базы токенов для семантики
Jun 22, 2026
69cb6f5
chore: ignore .worktrees/
Jun 22, 2026
42fed01
docs(figma-cc): add spec and implementation plan
Jun 22, 2026
38cf258
feat(figma-cc): add validator and fixtures
Jun 22, 2026
ba3a2f6
feat(figma-cc): add schema and README
Jun 22, 2026
7b4e24c
feat(figma-cc): add conventions
Jun 22, 2026
f32a3f3
feat(figma-cc): add tokens, icons, missing globals
Jun 22, 2026
9f7f4f6
fix(figma-cc): tokens.md heading syntax for valid anchors
Jun 22, 2026
4e482b3
feat(figma-cc): add button.figma.md pilot
Jun 22, 2026
db5075c
fix(figma-cc): align code-fence rule with CommonMark — language on op…
Jun 22, 2026
8418b48
feat(figma-cc): add inputtext.figma.md pilot
Jun 22, 2026
5b08c68
docs(figma-cc): clarify fileKey is per-component (linked libraries)
Jun 22, 2026
59ad77a
feat(figma-cc): add dialog.figma.md pilot
Jun 22, 2026
34eb593
fix(figma-cc): drop inline icon from dialog Large variant
Jun 22, 2026
be3cfbe
fix(figma-cc): correct README directory map
Jun 22, 2026
fadd04d
fix(figma-cc): add orphan-code to status enum + validator check
Jun 22, 2026
269893a
fix(figma-cc): enforce bare closing fence in validator
Jun 22, 2026
5ab9b1e
feat(figma-cc): cross-link warnings + nodeId uniqueness in validator
Jun 22, 2026
f7b63be
feat(figma-cc): add 6 component contracts (checkbox, radiobutton, tag…
Jun 22, 2026
d7689da
feat(figma-cc): add 7 contracts wave1 (avatar, badge, chip, divider, …
Jun 23, 2026
ef17a78
feat(figma-cc): add 7 contracts wave2 (textarea, inputnumber, inputma…
Jun 23, 2026
a468da4
feat(figma-cc): add 7 contracts wave3 (select, select-button, slider,…
Jun 23, 2026
4ff7b01
feat(figma-cc): add 7 contracts wave4 (menu, menubar, megamenu, tiere…
Jun 23, 2026
5da4328
feat(figma-cc): add 7 contracts wave5 (accordion, drawer, popover, to…
Jun 23, 2026
505ee2f
feat(figma-cc): add 6 contracts wave6 (autocomplete, date-picker, lis…
Jun 23, 2026
d29d001
refactor(figma-cc): normalize fileKey to Khh7arsuXss3ncqy1Dz3OZ acros…
Jun 23, 2026
a668e0a
fix(figma-cc): correct figma.name to live node (date-picker DatePicke…
Jun 23, 2026
ad8dd20
fix(figma-cc): rebind 4 contracts to live non-deprecated nodes (megam…
Jun 23, 2026
9c448be
fix(figma-cc): rebind menubar to live non-deprecated node 16194:4260
Jun 23, 2026
185e593
fix(figma-cc): correct panelmenu nodeId to valid live node 16194:4870
Jun 23, 2026
3c70644
fix(figma-cc): rebind toast to live <Toast> node 15953:4478 (orphan-c…
Jun 23, 2026
5349a76
fix(figma-cc): real toast componentKey + drop dangling form-field link
Jun 23, 2026
dad5c43
chore(figma-cc): remove internal spec and plan from PR
Jun 23, 2026
e6f6bfb
+add tailwind configs build & publishing
evvis Jun 24, 2026
f7f41e0
OnPush-стратегия и markForCheck вместо detectChanges в fileupload
Jun 24, 2026
884a155
Типизация событий fileupload через типы PrimeNG вместо any
Jun 24, 2026
e3d8720
Регистрация CSS компонента fileupload в map-tokens
Jun 24, 2026
5246885
Merge pull request #71 from cdek-it/file.upload
persi14 Jun 24, 2026
f1284d3
~fix
evvis Jun 25, 2026
5aebc55
~update
evvis Jun 25, 2026
aa99fb2
Merge pull request #89 from cdek-it/feature/tailwind
AxyIX Jun 25, 2026
ade7de3
Merge pull request #83 from cdek-it/api-refactor
AxyIX Jun 26, 2026
b44323c
Merge pull request #84 from cdek-it/tokens-update
AxyIX Jun 26, 2026
e366690
public package preparation
AxyIX Jun 26, 2026
daa8ec5
Merge branch 'refs/heads/main' into feature/styles-debug
AxyIX Jun 26, 2026
a199484
public package preparation
AxyIX Jun 26, 2026
b810f86
public package preparation
AxyIX Jun 26, 2026
07d1289
Merge pull request #91 from cdek-it/feature/styles-debug
AxyIX Jun 26, 2026
cc175af
public package preparation
AxyIX Jun 26, 2026
a6b9f40
public package preparation
AxyIX Jun 30, 2026
76de6c9
Merge remote-tracking branch 'origin/main' into feat/figma-code-conne…
AxyIX Jun 30, 2026
5ec2365
Оставить в ветке только файлы *.figma.md, прочие изменения откатить к…
khaliulin Jul 17, 2026
30f9e7c
Убрать тест-фикстуры валидатора, оставить только *.figma.md компонентов
khaliulin Jul 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 132 additions & 0 deletions src/lib/components/accordion/accordion.figma.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
---
component: ExtraAccordion
selector: extra-accordion
import:
symbol: ExtraAccordionComponent
from: '@cdek-it/angular-ui-kit'
figma:
fileKey: 'Khh7arsuXss3ncqy1Dz3OZ'
nodeId: '1153:3084'
componentKey: '6d041d9db66babf7fe442165f3ab97f9bea7710a'
name: '<Accordion>'
status: stable
updated: '2026-06-22'
---

## Overview

`ExtraAccordionComponent` — компонент аккордеона, который группирует связанный контент в вертикальный набор раскрываемых/сворачиваемых секций. Экономит место при большом объёме информации и поддерживает прогрессивное раскрытие. Оборачивает PrimeNG `p-accordion` с под-элементами `p-accordion-panel`, `p-accordion-header` и `p-accordion-content`.

Компонент соответствует Figma-компоненту `<Accordion>` (nodeId `1153:3084`, fileKey `Khh7arsuXss3ncqy1Dz3OZ`, библиотека «UI Kit (DS) v2.0»). В отличие от диалога, содержимое задаётся декларативно через массив `items`, а не через слоты проекции контента — каждая секция описывается объектом `ExtraAccordionItem`.

## Props mapping

| Свойство | Тип | По умолчанию | Описание |
|----------|-----|--------------|---------|
| `items` | `ExtraAccordionItem[]` | `[]` | Массив секций аккордеона; каждый элемент рендерится как отдельная панель с заголовком и содержимым |
| `multiple` | `boolean` | `false` | Разрешить одновременное раскрытие нескольких панелей — соответствует Figma-режиму single/multiple |
| `activeValue` | `string \| null` | `'0'` | Значение (`value`) изначально раскрытой панели; `null` — все панели свёрнуты |

> `activeValueChange` — `@Output() EventEmitter<string \| number \| string[] \| number[] \| null \| undefined>`. Используйте синтаксис `[(activeValue)]` для двусторонней привязки активной секции.

Структура одного элемента `ExtraAccordionItem`:

| Поле | Тип | Описание |
|------|-----|---------|
| `value` | `string` | Уникальный идентификатор панели (ключ раскрытия и `track` в цикле) |
| `header` | `string` | Текст заголовка панели |
| `content` | `string` | Текстовое содержимое раскрываемой панели |
| `icon` | `string` (опц.) | CSS-класс иконки в заголовке; доступные иконки — [icons.md](../../figma-code-connect/icons.md) |
| `disabled` | `boolean` (опц.) | Заблокировать панель — она недоступна для раскрытия |

## Variants

### Одиночное раскрытие (single, по умолчанию)

Figma: `<Accordion>`, режим single — раскрыта ровно одна панель.

```html
<extra-accordion
[items]="items"
activeValue="0"
></extra-accordion>
```

```ts
import { ExtraAccordionComponent, ExtraAccordionItem } from '@cdek-it/angular-ui-kit';

// В компоненте:
items: ExtraAccordionItem[] = [
{ value: '0', header: 'Данные отправления', content: 'Заказ №ЦД-00123456' },
{ value: '1', header: 'Маршрут доставки', content: 'Москва → Новосибирск' },
];
```

### Множественное раскрытие (multiple)

Figma: `<Accordion>`, режим multiple — одновременно могут быть раскрыты несколько панелей.

```html
<extra-accordion
[items]="items"
[multiple]="true"
activeValue="0"
></extra-accordion>
```

```ts
import { ExtraAccordionComponent, ExtraAccordionItem } from '@cdek-it/angular-ui-kit';
```

### С заблокированной панелью (disabled)

Заблокированная панель задаётся через `disabled: true` в соответствующем `ExtraAccordionItem` и недоступна для раскрытия.

```html
<extra-accordion
[items]="items"
activeValue="0"
></extra-accordion>
```

```ts
import { ExtraAccordionComponent, ExtraAccordionItem } from '@cdek-it/angular-ui-kit';

// В компоненте:
items: ExtraAccordionItem[] = [
{ value: '0', header: 'Данные отправления', content: 'Заказ №ЦД-00123456' },
{ value: '1', header: 'Документы (недоступно)', content: 'Недоступно', disabled: true },
];
```

## Slots

Не используются. Аккордеон не применяет проекцию содержимого — структура секций задаётся декларативно через массив `items`.

Внутренняя композиция каждой секции (рендерится компонентом автоматически по элементу `ExtraAccordionItem`):

| Часть | PrimeNG-узел | Источник |
|-------|--------------|----------|
| Панель | `p-accordion-panel` | один элемент массива `items` (`value`, `disabled`) |
| Заголовок | `p-accordion-header` | `item.header` + опциональная `item.icon` |
| Содержимое | `p-accordion-content` | `item.content` |

## Related

- [Button](../button/button.figma.md) — кнопки действий внутри или рядом с панелями
- [Иконки](../../figma-code-connect/icons.md) — CSS-классы иконок для заголовков панелей
- [Токены](../../figma-code-connect/tokens.md) — цветовые токены поверхности и границ панелей
- [Conventions](../../figma-code-connect/conventions.md) — соглашения маппинга Figma → Angular

## Do / Don't

**Do:**
- Задавайте уникальный `value` для каждого элемента `items` — он используется как ключ раскрытия и `track`.
- Используйте `[(activeValue)]` для двусторонней синхронизации раскрытой секции с состоянием компонента.
- Включайте `[multiple]="true"`, когда пользователю полезно сравнивать содержимое нескольких секций одновременно.
- Помечайте недоступные секции через `disabled: true` в `ExtraAccordionItem`, а не скрывайте их полностью.

**Don't:**
- Не используйте аккордеон для критичной информации, которая должна быть всегда видна.
- Не путайте с Tabs — вкладки показывают параллельные равноправные разделы, а аккордеон раскрывает секции контента.
- Не задавайте `activeValue`, не существующий среди `value` элементов `items` — ни одна панель не раскроется.
Loading
Loading