import '../../../../_common/components/tags/multi-tag-select.js'; import '../../../../_common/components/tags/multi-tag-view.js'; import { customElement } from 'lit/decorators.js'; import { html } from 'lit/static-html.js'; import { createIcon } from '../../../../_common/components/icon/uni-icon.js'; import type { SelectTag } from '../../../../_common/components/tags/multi-tag-select.js'; import { popTagSelect } from '../../../../_common/components/tags/multi-tag-select.js'; import { BaseCellRenderer } from '../base-cell.js'; import { columnRenderer, createFromBaseCellRenderer } from '../renderer.js'; import type { SelectColumnData } from '../types.js'; import { multiSelectPureColumnConfig } from './define.js'; @customElement('affine-database-multi-select-cell') export class MultiSelectCell extends BaseCellRenderer< string[], SelectColumnData > { override render() { return html` `; } } @customElement('affine-database-multi-select-cell-editing') export class MultiSelectCellEditing extends BaseCellRenderer< string[], SelectColumnData > { get _options(): SelectTag[] { return this.column.data.options; } get _value() { return this.value ?? []; } _onChange = (ids: string[]) => { this.onChange(ids); }; _editComplete = () => { this.selectCurrentCell(false); }; _onOptionsChange = (options: SelectTag[]) => { this.column.updateData(data => { return { ...data, options, }; }); }; override firstUpdated() { this.popTagSelect(); } private popTagSelect = () => { this._disposables.add({ dispose: popTagSelect( this.querySelector('affine-multi-tag-view') ?? this, { options: this._options, onOptionsChange: this._onOptionsChange, value: this._value, onChange: this._onChange, onComplete: this._editComplete, minWidth: 400, } ), }); }; override render() { return html` `; } } columnRenderer.register({ type: multiSelectPureColumnConfig.type, icon: createIcon('DatabaseMultiSelect'), cellRenderer: { view: createFromBaseCellRenderer(MultiSelectCell), edit: createFromBaseCellRenderer(MultiSelectCellEditing), }, }); export const multiSelectColumnConfig = multiSelectPureColumnConfig;