npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

qinputex

v0.4.3

Published

An Advance QInput for Quasar

Readme

The Advance Input Component for Quasar@v1

The Advance Input Component for Quasar is used as single-line input box for date, time, password, color, selete etc.

Usage

Above [email protected].

You should enable these quasar components before used(quasar.conf.js):

QBtn, QIcon, QPopupProxy, QCard, QCardSection, QToolbar, QToolbarTitle, QInput, QSelect, QDate, QTime, QColor, QChip

The quasar directive: close-popup and the vue-i18n plugin.

There are four internal slots as the same as the QInput component:

  • before
  • prepend
  • append
  • after

There are new two external slots in the QInputEx component:

  • top: the slot on the top of QInput Component
  • bottom: the slot on the bottom of QInput Component

new properties:

  • type string|InputType
    • string: the exists(registered) input type name.
    • InputType: customize input type or override exists InputType.
      • name string : it will override the exists InputType if the name is exists
  • slots: (TODO: not done)
    • replaced: {'slotName': true } | 'slotName' | ['slotName', ...]
      • replaced the original attach slot, not insert to the original attach slot if true.
    • afterAttach: {'slotName': true } | 'slotName' | ['slotName', ...]
      • the user defined slot will be inserted after the original attach slot if true.

The qinputex/dist/ is output for es2015, esm, umd, cjs.

require('qinputex/dist/es2015/components/qinputex/qinputex') will only register the basic input types(text, textarea, number) to QInputEx.

require('qinputex/dist/es2015/') will register all input types to QInputEx

  • text, textarea, number
  • color
  • date
  • datetime
  • fulltime
  • time
  • password: show password or not.
  • search:
    • search event
    • q-input-history as chips
      • history: ['search history', 'history2', ...]
      • pinHistory: fixed position
        • [{icon:'cake',value:'some cake', textColor: 'white', color:'secondary'}],
      • maxHistory: 3 the max history item to keep.
      • icon: 'search' default chip icon.
      • color: 'primary' default chip color,
      • textColor: 'white' default chip text color...

Demo

import { QInputEx, InputHistoryItem } from 'qinputex';
import { Vue, Component, Prop, Mixins, Watch } from 'vue-property-decorator';
import { VNode, CreateElement } from 'vue';

@Component({
  components: {
    QInputEx,
  }
})
export class MyApp extends Vue {
  protected searchHistory: InputHistoryItem[] = [];
  render(h: CreateElement) {
    // return h(QInputEx, {props:{type: 'color', value: '#ff0000'}})
    return <q-input-ex type="color" value="#ff0000"/>;
    return <q-input-ex type="search"
      onSearch={text: string => console.log(`search... ${text}`)}
      q-input-history={{
        history: this.searchHistory,
        pinHistory:[{icon:'cake',value:'nice cake'}],
        maxHistory: 3,
        icon: 'search',
        color: 'white',
        textColor: 'black',
      }}
    />;
  }
}

Create a new input type

It can register other input types more easy. such as the date type for QDate:

import { QInputEx, register, InputType } from 'qinputex';

function padStr(value: number, size: number = 2): string {
  var s = String(value);
  while (s.length < size) {s = "0" + s;}
  return s;
}

function getCurrentYM() {
  const vDate = new Date();
  const result = vDate.getFullYear() + '/' + padStr(vDate.getMonth()+1, 2);
  return result;
}

export const DateInput: InputType = {
  name: 'date',
  type: 'text',
  mask: 'date',
  rules: ['date'],
  attaches: {
    'append': {
      icon: 'event',
      popup: {
        ref: 'date',
        name: 'QDate',
        attrs: {
          'default-year-month': getCurrentYM()
        },
        on: {
          input(value, reason, detail, attach) {
            // close the popup.
            if (['day', 'today'].indexOf(reason) !== -1) attach.popup.hide();
            // if you wanna change the value here:
            return value;
          }
        }
      }

    }
  }
}

const PasswordInput = {
  name: 'password',
  type: 'password',
  attaches: {
    'before': {
      icon: 'vpn_key',
    },
    'append': {
      icon: 'visibility',
      click: function() {
        this.isVisiblePwd = !this.isVisiblePwd;
        this.attaches.append.icon = this.isVisiblePwd ? 'visibility_off' : 'visibility';
        this.nativeType = this.isVisiblePwd ? 'text': 'password';
      }
    }
  }
}

register(DateInput);
register(PasswordInput);