Files
LingChair/mdui_patched/components/select/index.d.ts
CrescentLeaf 1cb8ac3fff 移动目录
2025-11-23 13:27:15 +08:00

224 lines
8.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { MduiElement } from '@mdui/shared/base/mdui-element.js';
import '../chip.js';
import '../dropdown.js';
import '../menu.js';
import '../text-field.js';
import type { FormControl } from '@mdui/jq/shared/form.js';
import type { CSSResultGroup, TemplateResult } from 'lit';
declare const Select_base: import("@lit/reactive-element/decorators/base.js").Constructor<import("@mdui/shared/mixins/focusable.js").FocusableMixinInterface> & typeof MduiElement;
/**
* @summary 选择框组件。需配合 `<mdui-menu-item>` 组件使用
*
* ```html
* <mdui-select>
* ..<mdui-menu-item value="item-1">Item 1</mdui-menu-item>
* ..<mdui-menu-item value="item-2">Item 2</mdui-menu-item>
* </mdui-select>
* ```
*
* @event focus - 获得焦点时触发
* @event blur - 失去焦点时触发
* @event change - 选中的值变更时触发
* @event invalid - 表单字段验证未通过时触发
* @event clear - 在点击由 `clearable` 属性生成的清空按钮时触发。可以通过调用 `event.preventDefault()` 阻止清空选择框
*
* @slot - `<mdui-menu-item>` 元素
* @slot icon - 左侧图标
* @slot end-icon - 右侧图标
* @slot error-icon - 验证失败状态的右侧图标
* @slot prefix - 左侧文本
* @slot suffix - 右侧文本
* @slot clear-button - 清空按钮
* @slot clear-icon - 清空按钮中的图标
* @slot helper - 底部的帮助文本
*
* @csspart chips - 多选时,放置选中值对应的 chip 的容器
* @csspart chip - 多选时,每一个选中的值对应的 chip
* @csspart chip__button - chip 内部的 `<button>` 元素
* @csspart chip__label - chip 内部的文本
* @csspart chip__delete-icon - chip 内部的删除图标
* @csspart text-field - 文本框,即 [`<mdui-text-field>`](/docs/2/components/text-field) 元素
* @csspart text-field__container - text-field 内部的文本框容器
* @csspart text-field__icon - text-field 内部的左侧图标
* @csspart text-field__end-icon - text-field 内部的右侧图标
* @csspart text-field__error-icon - text-field 内部的验证失败状态的右侧图标
* @csspart text-field__prefix - text-field 内部的左侧文本
* @csspart text-field__suffix - text-field 内部的右侧文本
* @csspart text-field__label - text-field 内部的标签文本
* @csspart text-field__input - text-field 内部的 `<input>` 元素
* @csspart text-field__clear-button - text-field 内部的清空按钮
* @csspart text-field__clear-icon - text-field 内部的清空按钮中的图标
* @csspart text-field__supporting - text-field 内部的底部辅助信息容器,包括 helper 和 error
* @csspart text-field__helper - text-field 内部的底部帮助文本
* @csspart text-field__error - text-field 内部的底部错误描述文本
* @csspart menu - 下拉菜单,即 [`<mdui-menu>`](/docs/2/components/menu) 元素
*/
export declare class Select extends Select_base<SelectEventMap> implements FormControl {
static styles: CSSResultGroup;
/**
* 选择框的样式。可选值包括:
*
* * `filled`:带背景色的选择框,视觉效果较强
* * `outlined`:带边框的选择框,视觉效果较弱
*/
variant: /*带背景色的选择框,视觉效果较强*/ 'filled' | /*带边框的选择框,视觉效果较弱*/ 'outlined';
/**
* 是否支持多选
*/
multiple: boolean;
/**
* 选择框的名称,将与表单数据一起提交
*/
name: string;
/**
* 选择框的值,将与表单数据一起提交。
*
* 如果未指定 `multiple` 属性,该值为字符串;如果指定了 `multiple` 属性该值为字符串数组。HTML 属性只能设置字符串值;如果需要设置数组值,请通过 JavaScript 属性设置。
*/
value: string | string[];
/**
* 默认选中的值。在重置表单时,将重置为该默认值。该属性只能通过 JavaScript 属性设置
*/
defaultValue: string | string[];
/**
* 标签文本
*/
label?: string;
/**
* 占位符文本
*/
placeholder?: string;
/**
* 选择框底部的帮助文本。也可以通过 `slot="helper"` 设置
*/
helper?: string;
/**
* 是否可以清空选择框
*/
clearable: boolean;
/**
* 当选择框可清空时,显示在选择框右侧的清空按钮的 Material Icons 图标名。也可以通过 `slot="clear-icon"` 设置
*/
clearIcon?: string;
/**
* 选择框的位置。可选值包括:
*
* * `auto`:自动判断位置
* * `bottom`:位于下方
* * `top`:位于上方
*/
placement: /*自动判断位置*/ 'auto' | /*位于下方*/ 'bottom' | /*位于上方*/ 'top';
/**
* 文本是否右对齐
*/
endAligned: boolean;
/**
* 选择框的前缀文本。仅在聚焦状态,或选择框有值时才会显示。也可以通过 `slot="prefix"` 设置
*/
prefix: string;
/**
* 选择框的后缀文本。仅在聚焦状态,或选择框有值时才会显示。也可以通过 `slot="suffix"` 设置
*/
suffix?: string;
/**
* 选择框的前缀图标的 Material Icons 图标名。也可以通过 `slot="icon"` 设置
*/
icon?: string;
/**
* 选择框的后缀图标的 Material Icons 图标名。也可以通过 `slot="end-icon"` 设置
*/
endIcon?: string;
/**
* 表单字段验证失败时,显示在选择框右侧的 Material Icons 图标名。也可以通过 `slot="error-icon"` 设置
*/
errorIcon?: string;
/**
* 关联的 `<form>` 元素。此属性值应为同一页面中的一个 `<form>` 元素的 `id`。
*
* 如果未指定此属性,则该元素必须是 `<form>` 元素的子元素。通过此属性,你可以将元素放置在页面的任何位置,而不仅仅是 `<form>` 元素的子元素。
*/
form?: string;
/**
* 是否为只读状态
*/
readonly: boolean;
/**
* 是否为禁用状态
*/
disabled: boolean;
/**
* 提交表单时,是否必须填写该字段
*/
required: boolean;
/**
* 是否验证未通过
*
* 该验证为浏览器原生验证 API基于 `required` 属性的验证结果
*/
private invalid;
private readonly menuItems;
private observeResize?;
private readonly menuRef;
private readonly textFieldRef;
private readonly hiddenInputRef;
private readonly formController;
private readonly hasSlotController;
private readonly definedController;
/**
* 表单验证状态对象,具体参见 [`ValidityState`](https://developer.mozilla.org/zh-CN/docs/Web/API/ValidityState)
*/
get validity(): ValidityState;
/**
* 如果表单验证未通过,此属性将包含提示信息。如果验证通过,此属性将为空字符串
*/
get validationMessage(): string;
protected get focusElement(): HTMLElement;
protected get focusDisabled(): boolean;
connectedCallback(): void;
disconnectedCallback(): void;
/**
* 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true`
*/
checkValidity(): boolean;
/**
* 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true`。
*
* 如果验证未通过,还会在组件上显示验证失败的提示。
*/
reportValidity(): boolean;
/**
* 设置自定义的错误提示文本。只要这个文本不为空,就表示字段未通过验证
*
* @param message 自定义的错误提示文本
*/
setCustomValidity(message: string): void;
protected render(): TemplateResult;
private getMenuItemLabelByValue;
private resizeMenu;
private onDropdownOpen;
private onDropdownClose;
private onValueChange;
/**
* multiple 为 true 时,点 chip 的删除按钮,删除其中一个值
*/
private onDeleteOneValue;
private onClear;
/**
* 焦点在 text-field 上时,按下回车键,打开下拉选项
*/
private onTextFieldKeyDown;
}
export interface SelectEventMap {
focus: FocusEvent;
blur: FocusEvent;
change: CustomEvent<void>;
invalid: CustomEvent<void>;
clear: CustomEvent<void>;
}
declare global {
interface HTMLElementTagNameMap {
'mdui-select': Select;
}
}
export {};