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 { selectPureColumnConfig } from './define.js'; @customElement('affine-database-select-cell') export class SelectCell extends BaseCellRenderer { override render() { const value = this.value ? [this.value] : []; return html` `; } } @customElement('affine-database-select-cell-editing') export class SelectCellEditing extends BaseCellRenderer< string, SelectColumnData > { get _options(): SelectTag[] { return this.column.data.options; } get _value() { const value = this.value; return value ? [value] : []; } _onChange = ([id]: string[]) => { this.onChange(id); }; _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, { mode: 'single', options: this._options, onOptionsChange: this._onOptionsChange, value: this._value, onChange: this._onChange, onComplete: this._editComplete, minWidth: 400, } ), }); }; override render() { return html` `; } } columnRenderer.register({ type: selectPureColumnConfig.type, icon: createIcon('DatabaseSelect'), cellRenderer: { view: createFromBaseCellRenderer(SelectCell), edit: createFromBaseCellRenderer(SelectCellEditing), }, }); export const selectColumnConfig = selectPureColumnConfig;