Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: types for Suggestion
command
, allowing generic overrides (#4136)
* Fix typing for Suggestion `command` with new MentionAttrs generic As of 7cae967, new generics were added for Suggestion options and props. However, there is a subtle bug in the current typing: the object selected with the suggestion `command` need not have the same types as the `items` in the suggestion options. For instance, in Tiptap's official demo https://tiptap.dev/api/nodes/mention, the suggestion `items` are all `string`s, but the selected Mention is of type `{id: string}` (which are the attributes of the Mention node, as the Mention extension requires): ```ts const selectItem = index => { const item = props.items[index] if (item) { props.command({ id: item }) } } ``` i.e., there should be no restriction that when you select something with the suggestion `command`, it must use the identical structure as the suggested items. When using the suggestion plugin with the Mention extension, for instance, the value passed to the SuggestionProps `props.command()` function must be a `Record<string, any>`, as it's directly/exclusively used to set the `attrs` of a `Node` via `insertContentAt` (and you need not use that shape for suggestion options, as in the Tiptap example above): https://github.com/ueberdosis/tiptap/blob/44996d60bebd80f3dcc897909f59d83a0eff6337/packages/extension-mention/src/mention.ts#L42 https://github.com/ueberdosis/tiptap/blob/f8695073968c5c6865ad8faf05351020abb2a3cc/packages/core/src/types.ts#L79 This fixes the typing so that suggestions can correctly refer separately to their own items (of any type), while ensuring the `command`ed item be of whatever type is necessary (and so in the Mention context, could be restricted further). * Add generics to override selected suggestion type --------- Co-authored-by: Steven DeMartini <sjdemartini@users.noreply.github.com>
- Loading branch information