Skip to content

Commit

Permalink
experiment: add Lit based version of vaadin-item
Browse files Browse the repository at this point in the history
  • Loading branch information
web-padawan committed Oct 4, 2024
1 parent 7dbd5dc commit d0a1258
Show file tree
Hide file tree
Showing 6 changed files with 69 additions and 3 deletions.
2 changes: 2 additions & 0 deletions packages/item/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
"type": "module",
"files": [
"src",
"!src/vaadin-lit-item.d.ts",
"!src/vaadin-lit-item.js",
"theme",
"vaadin-*.d.ts",
"vaadin-*.js",
Expand Down
1 change: 1 addition & 0 deletions packages/item/src/vaadin-lit-item.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './vaadin-item.js';
59 changes: 59 additions & 0 deletions packages/item/src/vaadin-lit-item.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/**
* @license
* Copyright (c) 2017 - 2024 Vaadin Ltd.
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
*/
import { css, html, LitElement } from 'lit';
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
import { DirMixin } from '@vaadin/component-base/src/dir-mixin.js';
import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
import { ItemMixin } from './vaadin-item-mixin.js';

/**
* LitElement based version of `<vaadin-integer-field>` web component.
*
* ## Disclaimer
*
* This component is an experiment and not yet a part of Vaadin platform.
* There is no ETA regarding specific Vaadin version where it'll land.
* Feel free to try this code in your apps as per Apache 2.0 license.
*/
class Item extends ItemMixin(ThemableMixin(DirMixin(PolylitMixin(LitElement)))) {
static get is() {
return 'vaadin-item';
}

static get styles() {
return css`
:host {
display: inline-block;
}
:host([hidden]) {
display: none !important;
}
`;
}

/** @protected */
render() {
return html`
<span part="checkmark" aria-hidden="true"></span>
<div part="content">
<slot></slot>
</div>
`;
}

/** @protected */
ready() {
super.ready();

this.setAttribute('role', 'option');
}
}

defineCustomElement(Item);

export { Item };
2 changes: 2 additions & 0 deletions packages/item/test/item-lit.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import '../src/vaadin-lit-item.js';
import './item.common.js';
2 changes: 2 additions & 0 deletions packages/item/test/item-polymer.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import '../src/vaadin-item.js';
import './item.common.js';
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync } from '@vaadin/testing-helpers';
import '../vaadin-item.js';
import { fixtureSync, nextRender } from '@vaadin/testing-helpers';

describe('vaadin-item', () => {
let item, tagName;

beforeEach(() => {
beforeEach(async () => {
item = fixtureSync('<vaadin-item>label</vaadin-item>');
await nextRender();
tagName = item.tagName.toLowerCase();
});

Expand Down

0 comments on commit d0a1258

Please sign in to comment.