Skip to content

Instantly share code, notes, and snippets.

@fstbraz
fstbraz / package.json
Last active August 30, 2022 09:51
inclusive-web-components
{
"name": "inclusive-web-components",
"version": "0.0.14",
"description": "Inclusive UI elements library based on web components",
"files": [
"lib/**/*"
],
"main": "lib/index.js",
"types": "lib/index.d.ts",
"scripts": {
@fstbraz
fstbraz / card.ts
Created August 30, 2022 21:02
cross-framework-web-components-1
import { LitElement } from 'lit';
import { customElement } from 'lit/decorators.js';
@customElement('card-image')
export class Card extends LitElement {}
@fstbraz
fstbraz / card.ts
Created August 30, 2022 21:11
cross-framework-web-components-2
...
export interface CardConfig {
altText: string;
ctaText: string;
image: string;
link: string;
text: string;
textDesc: string;
textDescLink: string;
title: string;
@fstbraz
fstbraz / card.ts
Created August 30, 2022 21:13
cross-framework-web-components-2
...
@customElement('card-image')
export class Card extends LitElement {
@property({ type: Object }) card!: CardConfig;
render() {
return html`
<li class="card">
<div class="img">
<img src="${this.card.image}" alt="${this.card.altText}" />
</div>
@fstbraz
fstbraz / card.ts
Created August 30, 2022 21:15
cross-framework-web-components-3
...
import { sharedStyles } from './shared/style';
const componentStyle = css`
h2 {
margin-bottom: 1rem;
}
.card + .card {
margin-top: 1.5rem;
}
@fstbraz
fstbraz / card.ts
Created August 30, 2022 21:18
cross-framework-web-components-4
...
@customElement('card-image')
export class Card extends LitElement {
...
@query('#card-link') cardLinkEl!: HTMLAnchorElement;
render() {
return html`
<li class="card">
<div class="img">
@fstbraz
fstbraz / card.spec.ts
Last active August 31, 2022 15:12
cross-framework-web-components-4
import { Card } from './card';
describe('Card Component', () => {
let el: Card;
const card = {
altText: 'Je suis a image',
ctaText: 'Click me',
image: 'http://example.com/image/',
@fstbraz
fstbraz / card.spec.ts
Last active August 31, 2022 15:04
cross-framework-web-components-5
...
import { assert, expect, fixture, html } from '@open-wc/testing';
describe('Card Component', () => {
...
beforeEach(async () => {
el = await fixture<Card>(html` <card-image .card=${card}></card-image> `);
});
@fstbraz
fstbraz / card.spec.ts
Last active August 31, 2022 14:58
cross-framework-web-components-6
...
describe('Card Component', () => {
...
it('it renders the image', () => {
const image = el.shadowRoot?.querySelector('img');
expect(image).to.exist;
expect(image?.alt).to.equal(card.altText);
expect(image?.src).to.equal(card.image);
@fstbraz
fstbraz / cards.ts
Last active August 31, 2022 15:02
cross-framework-web-components-6
...
import { LitElement } from 'lit';
import { customElement } from 'lit/decorators.js';
@customElement('cards-images')
export class Cards extends LitElement {}