iter(g208): multiSelect 支持一键清空
This commit is contained in:
@@ -54,7 +54,9 @@ export function multiSelect(props: MultiSelectProps): HTMLElement {
|
||||
box.append(tagWrap, input); // 标签区在前、输入框在后,横向排布
|
||||
const list = h('ul', { class: 'ua-multiselect-list', role: 'listbox', 'aria-multiselectable': 'true' }) as HTMLElement;
|
||||
const pop = h('div', { class: () => `ua-multiselect-pop${open() ? ' ua-open' : ''}${place() === 'top' ? ' is-flip' : ''}` }, list) as HTMLElement;
|
||||
const root = h('div', { class: () => `ua-multiselect${open() ? ' ua-open' : ''}` }, box, pop) as HTMLElement;
|
||||
const clearBtn = h('button', { type: 'button', class: 'ua-select-clear', 'aria-label': '清空所选', hidden: true, onClick: (e: Event) => { e.stopPropagation(); update([]); input.focus(); } }, '×') as HTMLElement; // 复用 select 清空钮样式;阻止冒泡免得清完又展开
|
||||
const root = h('div', { class: () => `ua-multiselect${open() ? ' ua-open' : ''}` }, box, props.clearable ? clearBtn : null, pop) as HTMLElement;
|
||||
effect(() => { clearBtn.hidden = !value().length; }); // 有值才显示(clearable 未开时按钮根本不挂载)
|
||||
|
||||
/*** 重绘标签区与候选:标签带删除钮,候选带勾选态与禁用态 ***/
|
||||
const render = (): void => {
|
||||
|
||||
Reference in New Issue
Block a user