diff --git a/apps/web/src/components/features/input/Mentions/ShortcutsSuggestions/ShortcutsSuggestions.tsx b/apps/web/src/components/features/input/Mentions/ShortcutsSuggestions/ShortcutsSuggestions.tsx
index 5eefe4039..b204b8f6b 100644
--- a/apps/web/src/components/features/input/Mentions/ShortcutsSuggestions/ShortcutsSuggestions.tsx
+++ b/apps/web/src/components/features/input/Mentions/ShortcutsSuggestions/ShortcutsSuggestions.tsx
@@ -8,6 +8,7 @@ import PenWriting from '@/components/ui/icons/NucleoIconOutlined/pen-writing';
import Plus from '@/components/ui/icons/NucleoIconOutlined/plus';
import {
createMentionSuggestionExtension,
+ type MentionInputTriggerItem,
MentionSecondaryContentDropdown,
type MentionTriggerItem,
} from '@/components/ui/inputs/MentionInput';
@@ -38,8 +39,13 @@ export const useCreateShortcutsMentionsSuggestions = (
trigger: SHORTCUT_MENTION_TRIGGER,
items: ({ defaultQueryMentionsFilter, editor, query }) => {
const shortcuts = currentItemsRef.current;
- const allItems = [
- ...shortcuts.map((s) => createShortcutForMention(s, editor)),
+ const allItems: MentionInputTriggerItem[] = [
+ {
+ type: 'group',
+ items: shortcuts.map((s) => createShortcutForMention(s, editor)),
+
+ className: 'max-h-[300px] overflow-y-auto',
+ },
{ type: 'separator' as const },
{
value: 'manageShortcuts',
@@ -65,6 +71,7 @@ export const useCreateShortcutsMentionsSuggestions = (
return defaultQueryMentionsFilter(query, allItems);
},
popoverContent: ShortcutPopoverContent,
+ popoverClassName: '',
onChangeTransform: (v) => {
const foundShortcut = shortcuts.find((shortcut) => shortcut.name === v.label);
if (foundShortcut) {
diff --git a/apps/web/src/components/ui/inputs/MentionInput/MentionInput.stories.tsx b/apps/web/src/components/ui/inputs/MentionInput/MentionInput.stories.tsx
index 9494886e7..f64231fb0 100644
--- a/apps/web/src/components/ui/inputs/MentionInput/MentionInput.stories.tsx
+++ b/apps/web/src/components/ui/inputs/MentionInput/MentionInput.stories.tsx
@@ -298,6 +298,7 @@ const spongebobSuggestions = createMentionSuggestionExtension({
popoverContent: (props) => {
return
This is a custom popover content for {props.value}
;
},
+ popoverClassName: 'bg-green-100 max-h-auto',
});
export const Default: Story = {
diff --git a/apps/web/src/components/ui/inputs/MentionInput/MentionInput.types.ts b/apps/web/src/components/ui/inputs/MentionInput/MentionInput.types.ts
index 5291b923c..59c418a3b 100644
--- a/apps/web/src/components/ui/inputs/MentionInput/MentionInput.types.ts
+++ b/apps/web/src/components/ui/inputs/MentionInput/MentionInput.types.ts
@@ -42,7 +42,7 @@ export type MentionTriggerItem =
export type MentionInputTriggerGroup = {
items: MentionTriggerItem[];
- label: string | React.ReactNode;
+ label?: string | React.ReactNode | null;
icon?: React.ReactNode;
type: 'group';
disabled?: boolean;
diff --git a/apps/web/src/components/ui/inputs/MentionInput/MentionList/MentionList.tsx b/apps/web/src/components/ui/inputs/MentionInput/MentionList/MentionList.tsx
index 441c4e15b..8854257ac 100644
--- a/apps/web/src/components/ui/inputs/MentionInput/MentionList/MentionList.tsx
+++ b/apps/web/src/components/ui/inputs/MentionInput/MentionList/MentionList.tsx
@@ -30,7 +30,15 @@ export type MentionListProps = SuggestionProps<
> & { trigger: string; emptyState?: React.ReactNode; className?: string };
function MentionListInner(
- { trigger, emptyState, items, command, className }: MentionListProps,
+ {
+ trigger,
+ emptyState,
+ items,
+ command,
+ className,
+ query: _query,
+ editor: _editor,
+ }: MentionListProps,
ref: React.ForwardedRef
) {
const listRef = useRef(null);
diff --git a/apps/web/src/components/ui/inputs/MentionInput/MentionList/MentionListGroup.tsx b/apps/web/src/components/ui/inputs/MentionInput/MentionList/MentionListGroup.tsx
index 1051220b8..cc2921656 100644
--- a/apps/web/src/components/ui/inputs/MentionInput/MentionList/MentionListGroup.tsx
+++ b/apps/web/src/components/ui/inputs/MentionInput/MentionList/MentionListGroup.tsx
@@ -12,16 +12,19 @@ export function MentionListGroup({
className,
disabled, //this is consumed by the children items, we can stylized this if we want
}: MentionListGroupExtended) {
+ const hasLabelContent = !!label || !!icon;
return (
-
- {icon && {icon}}
- {label}
-
+ {hasLabelContent && (
+
+ {icon && {icon}}
+ {label}
+
+ )}
{items.map((item, index) => (
= () => {
- return
;
+ return
;
};
diff --git a/apps/web/src/components/ui/inputs/MentionInput/createMentionSuggestionOption.tsx b/apps/web/src/components/ui/inputs/MentionInput/createMentionSuggestionOption.tsx
index 0c802401e..dee2c83d0 100644
--- a/apps/web/src/components/ui/inputs/MentionInput/createMentionSuggestionOption.tsx
+++ b/apps/web/src/components/ui/inputs/MentionInput/createMentionSuggestionOption.tsx
@@ -18,6 +18,7 @@ export const createMentionSuggestionExtension = ({
popoverContent,
onChangeTransform,
pillStyling,
+ popoverClassName,
}: {
trigger: string;
items:
@@ -29,6 +30,7 @@ export const createMentionSuggestionExtension = ({
}) => MentionInputTriggerItem[]); //if no function is provided we will use a literal string match
popoverContent?: MentionPopoverContentCallback;
pillStyling?: MentionStylePillProps;
+ popoverClassName?: string;
onChangeTransform?: MentionSuggestionExtension['onChangeTransform'];
}): MentionSuggestionExtension => ({
char: trigger,
@@ -51,8 +53,9 @@ export const createMentionSuggestionExtension = ({
const { editor } = props;
component = new ReactRenderer(
MentionList as React.ComponentType>,
- { props: { ...props, trigger }, editor: props.editor }
+ { props: { ...props, trigger, className: popoverClassName }, editor: props.editor }
);
+ console.log(popoverClassName);
if (!props.clientRect) {
console.warn('No client rect for mention suggestion');