【发布时间】:2020-06-09 13:13:10
【问题描述】:
我正在尝试创建一个简单的“卡片”列表,我可以通过拖放重新排序。
我遇到了this fluid-grid web component 并取得了一些成功。我创建了一个卡片列表,我可以拖动它们。问题是,如何处理 'drop' 事件,以便我可以更新列表中被删除项目的位置。
这是我的代码:
import {LitElement, html, customElement, property, css} from 'lit-element';
import { repeat } from 'lit-html/directives/repeat'
import '@fluidnext-polymer/paper-grid';
import '@polymer/paper-card/paper-card'
interface VaadinRouterLocation {
baseUrl?: string
params?: {
id: string
}
pathname?: string
route?: {
path: string
component: string
search: string
}
}
@customElement('my-element')
export class MyElement extends LitElement {
static styles = css`
:host {
display: block;
border: solid 1px gray;
padding: 16px;
max-width: 800px;
}
`;
@property({type: Object})
location:VaadinRouterLocation = {};
constructor() {
super();
}
@property({type: Array})
tasks = [
{"name": "Task 1", "sequence": 1, "id": "A"},
{"name": "Task 2", "sequence": 2, "id": "B"},
{"name": "Task 3", "sequence": 3, "id": "C"},
]
render() {
return html`
<div id="container" @ondrop="(e) => console.log(e.target)">
<paper-grid animated id="grid" draggable cell-margin="5" col-count="2" row-count="${this.tasks.length}" ondrop="(e) => console.log(e.target)">
${repeat(this.tasks, (task) => html`
<paper-card col="0" row=${task.sequence} height="1" width="1" @drop="${this.handleDrop}">
<div class="card-content">${task.name}</div>
</paper-card>
`)}
</paper-grid>
</div>
`
}
handleDrop(e:any) {
console.log("Event", e)
}
allowDrop(e:any){
e.preventDefault()
}
}
declare global {
interface HTMLElementTagNameMap {
'my-element': MyElement;
}
}
【问题讨论】:
标签: javascript polymer web-component lit-element