Skip to content

tieredmenu: стилизация, сторисы#159

Open
khaliulin wants to merge 33 commits intostorybook-updatefrom
menu.TieredMenu
Open

tieredmenu: стилизация, сторисы#159
khaliulin wants to merge 33 commits intostorybook-updatefrom
menu.TieredMenu

Conversation

@khaliulin
Copy link
Copy Markdown
Collaborator

No description provided.

@khaliulin khaliulin requested a review from Skosov March 20, 2026 11:40
@Skosov
Copy link
Copy Markdown
Member

Skosov commented Mar 25, 2026

image Сделай больше область, чтоб не скролилась при открытии подменю

@khaliulin
Copy link
Copy Markdown
Collaborator Author

@Skosov фикс высоты превью для Docs; удаление артефакта: 8d39f74

Comment thread src/plugins/prime/stories/Menu/TieredMenu/TieredMenu.mdx Outdated
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачем это удалять? Это пример как можно работать через класс p-menuitem-checked, он сам по себе не может появиться, нужна какая-то логика, которая будет описана в сториках

Судя по твоим сторикам всё работает само, ничего делать не надо, что абсолютно неверно, ты везде используешь хук useMenu

Copy link
Copy Markdown
Collaborator Author

@khaliulin khaliulin Apr 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Skosov 77ad9aa:
что сделано:

  1. TieredMenuSelected.vue (новый файл) — обёртка, которая инкапсулирует useMenu и управляет
    динамическим выделением.
  2. WithSelectedTemplate — теперь просто рендерит без лишнего setup-кода.
  3. Source code сниппет в stories — показывает, как реализовать динамическое выделение в своём
    приложении: clearSelectedClass + addCommandHandler с command handlers.
  4. MDX — текст обновлён: описывает динамическое поведение вместо статичного


### With Selected Item

Меню с выделенным активным пунктом через класс `p-menuitem-checked`.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Что такое p-menuitem-checked? Откуда оно берется? Как мне это прокинуть на сторону проекта? Непонятно

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Skosov предлагаю добавить блок с гайдом:
image

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Skosov добавил 03beab1 блок с комментарием по использованию

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У этого компонента всегда один и тот же список items, он не передается. Хук в целом был только для сториков

не проксируются пропсы из прайма

не экспортируется компонент

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Skosov фикс faf33cb

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачем в историях использовать компонент из прайма вообще, если была написана обертка?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Skosov фикс faf33cb


export const Basic = {
render: BasicTemplate,
decorators: [
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

почему сразу в шаблоне нельзя высоту задать?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

какой-то оверинжиниринг

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Skosov Storybook просит через декоратор.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Где просит?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я не нашел там такой рекомендации)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это просто статья, описывающая их работу

Copy link
Copy Markdown
Collaborator Author

@khaliulin khaliulin Apr 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Skosov убрал декораторы, высоту задал в шаблоне напрямую
ca73efc

import { TieredMenu } from 'primevue';
import type { MenuItem } from 'primevue/menuitem';

defineProps<{
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

я не вижу, чтоб пропсы наследоваились от оригинального TieredMenu, не вижу эмитов, прокинутых из TieredMenu, не вижу прокидывания слотов, не вижу экспорта из библиотеки

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Skosov вынес обёртку в primeBlocks, экспортировал из либы dc2d18a

Comment thread src/plugins/prime/theme3.0/css.ts Outdated
padding-bottom: 0.625rem;
}

[class*="menu"][class*="item"].p-disabled, .p-panelmenu-panel > .p-disabled {
Copy link
Copy Markdown
Member

@Skosov Skosov Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

какова цель двух стилизаций? (в отдельном файле и глобально)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Skosov перенёс стили disabled/checked из css.ts в обёртку 74c5bcb

@@ -0,0 +1,43 @@
const css = ({ dt }: { dt: (token: string) => string }) => `
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

если у нас обертка, то для чего стили в теме?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Skosov удалил тему, перенёс стили в обёртку bef00b5

<CodeSnippet :code="items"/>
<div class="card flex justify-center">
<TieredMenuSelected :model="items" v-bind="args">
<template #item="{ item, props, hasSubmenu }">
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

это точно будет работать? В шаблоне нет упоминаний слотов вообще

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Skosov добавил прокидывание слотов в обёртке 2e6d83b

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Может просто описать их прямо в шаблоне для наглядности?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Пример из PBlockToggleButton

   <template #icon>
      <slot name="icon" />
    </template>

Copy link
Copy Markdown
Collaborator Author

@khaliulin khaliulin Apr 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Skosov прописал слоты явно по образцу PBlockToggleButton
ca73efc

Record<string, unknown>
>;

defineProps<{
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

я так и не вижу поддержки всех пропсов TieredMenu. Импорт тоже странный

В готовом примере PBlockToggleButton.vue

import { ToggleButton, type ToggleButtonProps } from 'primevue';

interface IPBlockToggleButton extends ToggleButtonProps {
  baseIcon?: string;
  baseLabel?: string;
  modelValue?: boolean;
}

defineProps<IPBlockToggleButton>();

Copy link
Copy Markdown
Collaborator Author

@khaliulin khaliulin Apr 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Skosov добавил TieredMenuProps, импорт из primevue, все пропсы прокидываются через v-bind
ca73efc

@Skosov Skosov self-requested a review April 29, 2026 05:11
Comment thread src/plugins/prime/stories/Menu/TieredMenu/TieredMenu.stories.js
Comment thread src/primeBlocks/PBlockTieredMenu/PBlockTieredMenu.vue Outdated
Comment thread src/primeBlocks/PBlockTieredMenu/PBlockTieredMenu.vue Outdated
Comment thread src/plugins/prime/stories/Menu/TieredMenu/TieredMenu.stories.js
@Skosov
Copy link
Copy Markdown
Member

Skosov commented May 8, 2026

Ждем MenuBar, потом тут напишу комменты

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants