GithubHelp home page GithubHelp logo

mixins's Introduction

@pwrs/mixins

Useful mixins for custom-element authors.

SelectMixin

Manages the state of a [multi-]select element, e.g. a dropdown or a data table.

class SelectElement extends SelectMixin(LitElement) {
  static allowedChildren = ['select-item']
}
  <select-element>
    <select-item></select-item>
    <select-item></select-item>
    <select-item></select-item>
  </select-element>

See SelectMixin README

FireMixin

<fire-element></fire-element>

<script defer async>
  document.querySelector("fire-element")
    .addEventListener('๐Ÿ˜›', e => console.log(e.detail));

  customElements.define('fire-element',
    class FireElement extends FireMixin(HTMLElement) {
      connectedCallback() {
        this.fire('๐Ÿ˜›', 'Haha!');
      }
    });

</script>

logs: Haha!;

See FireMixin README

mixins's People

Contributors

bennypowers avatar dependabot[bot] avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

eavichay

mixins's Issues

Update to lit 2

diff --git a/node_modules/@pwrs/mixins/select/select-mixin.ts b/node_modules/@pwrs/mixins/select/select-mixin.ts
index ddff56b..4c28d9b 100644
--- a/node_modules/@pwrs/mixins/select/select-mixin.ts
+++ b/node_modules/@pwrs/mixins/select/select-mixin.ts
@@ -1,6 +1,6 @@
-import type { Constructor, PropertyValues, LitElement } from 'lit-element';
+import type { PropertyValues, ReactiveElement } from 'lit';
 import { dedupeMixin } from '@open-wc/dedupe-mixin'
-import { property, query } from 'lit-element';
+import { property, query } from 'lit/decorators.js';
 
 import { propOr } from '../lib/propOr';
 import { not } from '../lib/logic';
@@ -12,6 +12,10 @@ import { FireMixin, FireMixinElement } from '../fire/fire-mixin';
 import { matches, isFocusedOrActive } from '../lib/dom';
 import { elem } from '../lib/pointfree';
 
+type Constructor<T = {}> = {
+  new (...args: any[]): T
+}
+
 type SlotchangeEvent = Event & { target: HTMLSlotElement };
 
 export interface Item extends HTMLElement {
@@ -22,7 +26,7 @@ export interface SelectMixinElementClassType {
   allowedChildren: string[]|RegExp;
 }
 
-export interface SelectMixinElement extends LitElement {
+export interface SelectMixinElement extends ReactiveElement {
   itemsMutationObserver: MutationObserver;
 
   _items: Item[];
@@ -250,7 +254,7 @@ const SelectedIndexConverter = {
 }
 
 export const SelectMixin = dedupeMixin(
-  function SelectMixin<TBase extends Constructor<LitElement>>(superclass: TBase): TBase & Constructor<SelectMixinElement & FireMixinElement> & SelectMixinElementClassType {
+  function SelectMixin<TBase extends Constructor<ReactiveElement>>(superclass: TBase): TBase & Constructor<SelectMixinElement & FireMixinElement> & SelectMixinElementClassType {
   /**
     * Provides methods and properties for a selecting element.
     *

This issue body was partially generated by patch-package.

CI/CD

probably github actions and semantic release. can use stripe-elements as a template

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.