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 🙏

© 2024 – Pkg Stats / Ryan Hefner

dialob-fill-ui

v2.0.1-47

Published

dialob-fill-ui React component

Downloads

7

Readme

Dialob Fill Client Component

import {Dialob, createDialobReducer, createDialobMiddleware } from 'dialob-fill-ui';

const DIALOB_CONFIG = {
  transport: {
    mode: 'rest', // REST is currently supported
    endpoint: 'http://localhost:8080/session/dialob', // Filling REST service endpoint location
    credentials: 'same-origin' // Optional request credentials mode, see https://fetch.spec.whatwg.org/#concept-request-credentials-mode
  }
}

// Add Dialob reducer and middleware to you application's store
const reducers = {
  dialob: createDialobReducer()
};
const reducer = combineReducers(reducers);
const store = createStore(reducer, applyMiddleware(createDialobMiddleware(DIALOB_CONFIG)));

// ....

<Dialob sessionId='7ad5de43d18bf491eb555bd80e00c654'
  onComplete={() => console.log('complete callback!')}
  onError={(message) => console.log('error:', message)}
/>

props

  • sessionId Filling session ID
  • onComplete Optional: Callback handler for completion
  • onError Optional: Callback for hard errors, like connection problems etc.
  • itemConfig Optional: Customized items (see below)
  • overrideMessages Optional: Override static text translations

Custom items configuration

import {Dialob, createDialobReducer, createDialobMiddleware, DEFAULT_ITEM_CONFIG } from 'dialob-fill-ui';
import {CustomText} from './CustomText';

// Create custom item config
const customItemConfig = {
  items: [
    {
      // Match item attributes
      matcher: item => item.get('type') === 'text' && item.get('className') && item.get('className').includes('custom'),
      // Use this component, if matcher returns true
      component: CustomText
    },
    // Add additional matchers here for other components
  ].concat(DEFAULT_ITEM_CONFIG.items) // Concat default item configuration, if partial customization is needed
}

Item configuration matchers are applied from top to bottom, first match is returned. If custom items need to override built-ins, add matchers before DEFAULT_ITEM_CONFIG.items as above. If custom items need to have lower priority, add them after.

Custom item example code:

This creates a customized text entry item. For items that take user's typing input, extend from DebouncedItem, for single-action items (selects, etc.) extend from Item.

In case of extending from DebouncedItem input element should have id attribute set to item's id element value to ensure correct detection of currently active item. If id is not initialized then user input may be lost.

import React from 'react';
import {DebouncedItem} from 'dialob-fill-ui';
import {Form, Input} from 'semantic-ui-react';

class CustomText extends DebouncedItem {
  onChangeText(event) {
    this.handleChange(!event.target.value ? null : event.target.value);
  }

  render() {
    const {item, entryType} = this.props;
    return (
      <Form.Field required={item.get('required')} className={this.getStyles()} error={!!this.getErrors()}>
        <label>{item.get('label')} {this.renderDescription()}</label>
        <Input icon='tags' iconPosition='left' label={{tag: true, content: 'A tag'}} labelPosition='right' size='massive' id={item.get('id')} name={item.get('id')} type={entryType || 'text'} value={this.getDisplayValue()} onChange={this.onChangeText.bind(this)}/>
        {this.renderErrors()}
      </Form.Field>
    );
  }
}

export {
  CustomText as default
};

Use custom items

Use itemConfig prop to set your custom item configuration.

<Dialob sessionId='7ad5de43d18bf491eb555bd80e00c654'
  onComplete={() => console.log('complete callback!')}
  onError={(message) => console.log('error:', message)}
  itemConfig={customItemConfig}
/>