todo-input.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
  2. var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
  3. if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
  4. else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  5. return c > 3 && r && Object.defineProperty(target, key, r), r;
  6. };
  7. import { LitElement, html, css } from 'lit-element';
  8. import { customElement, query } from 'lit/decorators.js';
  9. // const ENTER_KEY = 13;
  10. // const ESC_KEY = 27
  11. const TodoInputEventType = {
  12. SUBMIT_TODO: 'submit-todo'
  13. };
  14. let TodoInputElement = class TodoInputElement extends LitElement {
  15. render() {
  16. return html `
  17. <input type="text"
  18. @keyup="${this._onkeyup}"
  19. @input="${this._oninput}">
  20. `;
  21. }
  22. _onkeyup(event) {
  23. if (event.code === 'Enter' || event.code === 'NumpadEnter') {
  24. this.dispatchEvent(new CustomEvent(TodoInputEventType.SUBMIT_TODO, {
  25. bubbles: true,
  26. composed: true,
  27. detail: this._input.value
  28. }));
  29. }
  30. }
  31. _oninput(event) {
  32. console.log('oninput:', event);
  33. }
  34. };
  35. TodoInputElement.styles = css `
  36. :host {
  37. display: block;
  38. }
  39. `;
  40. __decorate([
  41. query('input', true)
  42. ], TodoInputElement.prototype, "_input", void 0);
  43. TodoInputElement = __decorate([
  44. customElement('todo-input')
  45. ], TodoInputElement);
  46. export { TodoInputElement };
  47. //# sourceMappingURL=todo-input.js.map