// Project: https://github.com/vueComponent/ant-design-vue
// Definitions: https://github.com/vueComponent/ant-design-vue/types

import { AntdComponent, AntdProps } from '../component';
import { Option } from './option';
import { VNodeChild } from 'vue';

export declare class Mentions extends AntdComponent {
  static Option: typeof Option;
  $props: AntdProps & {
    /**
     * Auto get focus when component mounted
     * @default false
     * @type boolean
     */
    autofocus?: boolean;

    /**
     * Default value
     * @type string
     */
    defaultValue?: string;

    /**
     * Customize filter option logic
     * @type false | (input: string, option: OptionProps) => boolean
     */
    filterOption?: false | ((input: string, option: Option) => boolean);

    /**
     * Set mentions content when not match
     * @type any (string | slot)
     */
    notFoundContent?: VNodeChild | JSX.Element;

    /**
     * Set popup placement
     * @default 'top'
     * @type string
     */
    placement?: 'top' | 'bottom';

    /**
     * Set trigger prefix keyword
     * @default '@'
     * @type string | string[]
     */
    prefix?: string | string[];

    /**
     * Set split string before and after selected mention
     * @default ' '
     * @type string
     */
    split?: string;

    /**
     * Customize trigger search logic
     * @type (text: string, props: MentionsProps) => void
     */
    validateSearch?: (text: string, props: Mentions) => void;

    /**
     * Set value of mentions
     * @type string
     */
    value?: string;

    /**
     * Set the mount HTML node for suggestions
     * @default () => HTMLElement
     */
    getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
  };
}