Git Product home page Git Product logo

react-dropdown-select's Introduction

react-dropdown-select

Customisable dropdown select for react

Coverage Status Codacy Badge

Features

  • configurable via props
  • total custom components overrides for all internals via render prop callbacks (with access to internal props, state and methods)
  • stylable via css (or custom components)
  • portal support for rendering dropdown outside local DOM tree. e.g. in document.body
  • auto position
  • small bundle size

Installation

npm install --save react-dropdown-select

Web site

Web site, docs and demo

Motivation

react-select is very nice, but sometimes project requirements are beyond it's abilities

Usage

import:

import Select from "react-dropdown-select";

and use as:

const options = [
  {
    value: 1,
    label: 'Leanne Graham'
  },
  {
    value: 2,
    label: 'Ervin Howell'
  }
];

<Select options={options} onChange={(values) => this.setValues(values)} />;

If your options don't have value and label fields, include labelField and valueField in the props:

const options = [
  {
    id: 1,
    name: 'Leanne Graham'
  },
  {
    id: 2,
    name: 'Ervin Howell'
  }
];

<Select
  options={options}
  labelField="name"
  valueField="id"
  onChange={(values) => this.setValues(values)}
/>;

options and onChange are the minimum required props

Help and Contributions

How to help/contribute

  • fix issues, pull request are very welcome
  • write, improve docs
  • write tests (we use jest)
  • suggest features and improvements

Demo

Edit react-dropdown-select

API

Component props

Prop Type Default Description
values array [] Selected values
options array [] Available options, (option with key disabled: true will be disabled)
keepOpen bool false If true, dropdown will always stay open (good for debugging)
defaultMenuIsOpen bool false If true, dropdown will be open by default
autoFocus bool false If true, and searchable, dropdown will auto focus
clearOnBlur bool true If true, and searchable, search value will be cleared on blur
clearOnSelect bool true If true, and searchable, search value will be cleared upon value select/de-select
name string null If set, input type hidden would be added in the component with the value of the name prop as name and select's values as value
required bool false If set, input type hidden would be added in the component with required prop as true/false
pattern string null If set, input type hidden would be added in the component with pattern prop as regex
dropdownGap number 5 Gap between select element and dropdown
multi bool false If true - will act as multi-select, if false - only one option will be selected at the time
placeholder string "Select..." Placeholder shown where there are no selected values
addPlaceholder string "" Secondary placeholder on search field if any value selected
disabled bool false Disable select and all interactions
style object {} Style object to pass to select
className string CSS class attribute to pass to select
loading bool false Loading indicator
clearable bool false Clear all indicator
searchable bool true If true, select will have search input text
separator bool false Separator line between close all and dropdown handle
dropdownHandle bool true Dropdown handle to open/close dropdown
dropdownHeight string "300px" Minimum height of a dropdown
direction string "ltr" direction of a dropdown "ltr", "rtl" or "auto"
searchBy string label Search by object property in values
sortBy string null Sort by object property in values
labelField string "label" Field in data to use for label
valueField string "value" Field in data to use for value
color string "#0074D9" Base color to use in component, also can be overwritten via CSS
closeOnScroll bool false If true, scrolling the page will close the dropdown
closeOnSelect bool false If true, selecting option will close the dropdown
closeOnClickInput bool false If true, clicking input will close the dropdown if you are not searching.
dropdownPosition string "bottom" Available options are "auto", "top" and "bottom" defaults to "bottom". Auto will adjust itself according Select's position on the page
keepSelectedInList bool true If false, selected item will not appear in a list
portal DOM element false If valid dom element specified - dropdown will break out to render inside the specified element
create bool false If true, select will create value from search string and fire onCreateNew callback prop
backspaceDelete bool true If true, backspace key will delete last value
createNewLabel string "add {search}" If create set to true, this will be the label of the "add new" component. {search} will be replaced by search value
disabledLabel string "disabled" Label shown on disabled field (after) the text
selectAll bool false Allow to select all
selectAllLabel string "Select all" Label for "Select all"
clearAllLabel string "Clear all" Label for "Clear all"
additionalProps object null Additional props to pass to Select

Callback props

by using renderer props to override components some of the functionality will have to be handled manually with a help of internal props, states and methods exposed

Prop Type Default Description
onChange func On values change callback, returns array of values objects
onDropdownClose func Fires upon dropdown close
onDropdownOpen func Fires upon dropdown open
onCreateNew func Fires upon creation of new item if create prop set to true
onClearAll func Fires upon clearing all values (via custom renderers)
onSelectAll func Fires upon selecting all values (via custom renderers)
onDropdownCloseRequest func undefined Fires upon dropdown closing state, stops the closing and provides own method close()
contentRenderer func Overrides internal content component (the contents of the select component)
itemRenderer func Overrides internal item in a dropdown
noDataRenderer func Overrides internal "no data" (shown where search has no results)
optionRenderer func Overrides internal option (the pillow with an "x") on the select content
inputRenderer func Overrides internal input text
loadingRenderer func Overrides internal loading
clearRenderer func Overrides internal clear button
separatorRenderer func Overrides internal separator
dropdownRenderer func Overrides internal dropdown component
dropdownHandleRenderer func Overrides internal dropdown handle
searchFn func undefined Overrides internal search function
handleKeyDownFn func undefined Overrides internal keyDown function

License

MIT

react-dropdown-select's People

Contributors

akdjr avatar akuji1993 avatar alxpub avatar arjun-sna avatar dependabot[bot] avatar devduck-max avatar gandalf92 avatar govindsartaj avatar joshnoe avatar jpranays avatar kkkrist avatar leonardoelias avatar lopesc avatar musasahinkundakci avatar nix6839 avatar s-shiva1995 avatar sanusart avatar voneiden avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-dropdown-select's Issues

Encountered two children with same key

In your demo change the following:
searchBy : username to name
labelField : username to name
valueField: email to address

If the value field is json object then the demo is not working and shows the error "Encountered two children with same key"

So your library is not supporting the json kind of value field

Error in Dropdown

Hi @sanusart
I was trying using your component, but with a simple setup (from the code below ) I always getting an error about the "key" prop which is missing in Dropdown component
Am I made something wrong?

Each child in a list should have a unique "key" prop.
Check the render method of Dropdown.

<Select
  options={[
    {
      id: "1654as6d54as",
      label: "label 1",
      name: "Tony"
    },
    {
      id: "2asdasdsadsas654",
      label: "label 2",
      name: "Tony's uncle"
    }
  ]}
  onChange={values => console.log(`%c > onChange ${values}`)}
/>;

Component not updating selected value on data change

Currently I've got two Select components on my page. The second select's options set depends on what option is selected in the first select component. When having selected something in the second components options and then swapping to another option in the first select, the second select box's options change however the currently selected item which is shown in the Select does not change.

Is there a way to combat this? I'm not sure if I'm being stupid and missing the obvious.

Cycling dowpdowns with Tab wont allow to search them

I have a couple of searchable dropdowns on a page, and when I use tab to cycle, they become focused, but the searchable input is not. I have to click to open and them make the search.
Is it possible to expose an onFocus callback?
Or if the dropdown is focused and searchable... It should allow to search on key down?

dropdownPosition "top" does not work with portal

Hello, when using the portal option and dropdown="auto", the dropdown does not appear above the select input as expected when it is at the bottom of a page. Instead it clips the the dropdown underneath the slider to fit in the window.

Unable to pass data-* attributes or id attribute

It would be really helpful, for our testing purposes, to be able to pass data-* attributes through to the select and also an id attribute. Currently these properties are not passed to the component when provided in the Select tag.

Select fields can't be blured by tab

Problem:
When deaktivating tab-behavior inside of the handleKeyPress-callback by something writing like this:

if (key === 'tab') {
  methods.dropDown('close');
  return true;
}

the select can't be blurred.

Solution:

Prevent event-bubbleing and set tabindex of the input in index.js to -1.

Allow Custom Key Pre or Post

Currently, I am showing multiple Selects on the screen that offer the same options, this leads to React complaining about duplicate keys. There are no alternative options for me at this time, and while no specific issues occur at this time, allowing us to set a pre or post fix to the generated key would allow us the ability make them unique in this case. While it works now, I'd like to make sure it works into the future without warnings/errors.

I'm currently finishing up a project I'm on right now, after that is complete I can look at spending some time to try to implement something simple as a pull request if you like the idea and someone hasn't beaten me to it (or maybe there already is a solution I missed?).

No focus bug

https://codesandbox.io/s/3kx74jlp0m

Click next to the x (on the left, not too far from the x) once to open the dropdown and then click on the same place again. The input does not get focus although there is a blue border indicating focus.

Enhancement. Important for my data use case.

Can you please add callbacks as options for valueField/labelField to access data? We use nested data structure so need something like: labelField={(item) => { return item.attributes.name;}}

Currently you're just assuming data structure are flat.

Typescript Error when using searchFn

Hi Sasha,

we are using react-dropdown-select component in our project. It really works great but we have one issue with typescript.

When giving a own searchFn to the component, typescript brings up an error because the function is typed as () => void. May it be possible to chenge the type to something like 'searchFn?: ({ props, state, methods }: IRenderer) => object[];' ?

A lot of thanks and best wishes
Max

ISelectProps Interface contains initialize values instead of types.

Current Interface

export interface ISelectProps {
addPlaceholder: '';
placeholder: 'Select...';
values: [];
options: [];
multi: false;
disabled: false;
searchBy: 'label';
sortBy: null;
clearable: false;
searchable: true;
dropdownHandle: true;
separator: false;
keepOpen: undefined;
noDataLabel: 'No data';
createNewLabel: 'add {search}';
disabledLabel: 'disabled';
dropdownGap: 5;
closeOnScroll: false;
debounceDelay: 0;
labelField: 'label';
valueField: 'value';
color: '#0074D9';
keepSelectedInList: true;
closeOnSelect: false;
clearOnBlur: true;
clearOnSelect: true;
dropdownPosition: 'bottom';
dropdownHeight: '300px';
autoFocus: false;
portal: null;
create: false;
direction: 'ltr';
name: null;
onChange: () => void;
onDropdownOpen: () => void;
onDropdownClose: () => void;
onClearAll: () => void;
onSelectAll: () => void;
onCreateNew: () => void;
searchFn: () => void;
clearRenderer: ({ props: ISelectProps, state: IState, methods: IMethods }) => void;
contentRenderer: ({ props: ISelectProps, state: IState, methods: IMethods }) => void;
dropdownRenderer: ({ props: ISelectProps, state: IState, methods: IMethods }) => void;
dropdownHandleRenderer: ({ props: ISelectProps, state: IState, methods: IMethods }) => void;
inputRenderer: ({ props: ISelectProps, state: IState, methods: IMethods, inputRef: any }) => void;
itemRenderer: ({
item: number,
itemIndex: number,
props: ISelectProps,
state: IState,
methods: IMethods
}) => void;
loadingRenderer: ({ props: ISelectProps }) => void;
noDataRenderer: ({ props: ISelectProps, state: IState, methods: IMethods }) => void;
optionRenderer: ({ item, props: ISelectProps, state: IState, methods: IMethods }) => void;
separatorRenderer: ({ props: ISelectProps, state: IState, methods: IMethods }) => void;
}

Error thrown in typescript
->Type '"Search..."' is not assignable to type '"Select..."'.
-> Type 'true' is not assignable to type 'false'.

className prop is missing in types.d.ts define of ISelectProps, not inherited from elsehwere

Creating a select in a typescript environment: (pseudo code)

let options, // = options from somewhere
  onChange // = onChange from somewhere
<Select className={'class'} options={options} values={[]} onChange={onChange}/>

yields the error:
Property 'className' does not exist on type 'IntrinsicAttributes & ISelectProps & { children?: ReactNode; }'.

Observing types.d.ts in the npm package, there is no entry for className. Fixable by adding a line like:
className?: string; to interface ISelectProps

Workaround is to add monkey patch in code files that need className for Select:

...
declare module 'react-dropdown-select' {
  interface ISelectProps {
    className?: string;
  }
}
...

Resize basic dropdown container?

It seems like regardless of setting the height the outer dropdown stays at roughly 36px. I've attempted this via a styled component, a normal css class, and React inline styling to no avail.

const dynamicStyle = (props) =>
            css`
                background-color: ${props};
                color: ${props};
                height: 10px !important;
            `;
const StyledSelect = styled(Select)`
            ${dynamicStyle};
            height: 10px !important;
            background-color: #A0E6FF;
            .react-dropdown-select {
               ${dynamicStyle};
            background-color: #A0E6FF;
            }
            .react-dropdown-select-clear,
            .react-dropdown-select-dropdown-handle {
               ${dynamicStyle};
            }
            .react-dropdown-select-option {
               border: 0;
            }
            .react-dropdown-select-item {
               ${dynamicStyle};
            }
            .react-dropdown-select-input {
               ${dynamicStyle};
               height: 10px;
               background-color: #A0E6FF;
            }
            .react-dropdown-select-dropdown {
                position: absolute;
                left: 0;
                border: none;
                width: 100%;
                padding: 0;
                display: flex;
                flex-direction: column;
                border-radius: 0;
                //max-height: 300px;
                //height: 300px;
                overflow: auto;
                z-index: 9;
                ${dynamicStyle};
            }
            .react-dropdown-select-item {
                ${dynamicStyle};
            }
            .react-dropdown-select-item.react-dropdown-select-item-selected,
            .react-dropdown-select-item.react-dropdown-select-item-active {
               border-bottom: 0;
               height: 10px;
            }
            .react-dropdown-select-item.react-dropdown-select-item-disabled {
               ${dynamicStyle};
            }
        `;

        <StyledSelect
           color={this.props.user.tertiary}
           background-color={this.props.user.secondary}
           placeholder={"Select"}
           searchable={false}
           clearable
           options={this.props.config.choices}
           style={{borderWidth: 0, height: 10}}
           // onChange={this.handleChange}
        />

Dropdown-Input is selectable when disabled and using tab-key.

Expected behavior:
The input should not be selectable when it is disabled using the tab-key.

Current Behavior:
The input is selectable via tab-key and the dropdown is visible.

Fix:
Set tabindex to -1 on outer container when disabled and don't render options-list.

handleKeyDown override

Hi there,
we are currently trying to use the react-dropdown-select in our project. Is it possible to override the handleKeyDown Function of index.js line 346?
We would really appreciate to handle it by ourselves because we want to use tabs, open the dropdown on input and so on.

Thank you and best wishes
Max

Dropdown list bug - arrow down / up

https://codesandbox.io/s/3kx74jlp0m

click on the input to show the dropdown list.

click down keyboard key many times. more times than there are dropdown items.
The selection seems to go far beyond the last item, and for every down click past the last item, you'll need an up key to bring it back up, until it actually reaches the last item again.

What I did in my script, Tagify, was to cycle the list items, so after the last one you'll get to the top one again.

Clear on Select - Searchable

Maybe I am not clear on how clearOnSelect works but I am would like the users to select one item from the select menu which calls the onChange method but not remember the items so the user can search for a new item right away. I will be showing the selected results in another component.

<Select
    searchable={true}
    clearOnSelect={true}
    clearOnBlur={true}
    options={items}
    onChange={values => console.log(values)}
/>

https://stackblitz.com/edit/react-mzsu7r

Rerendering getting out of hands

image
There's uncontrolled state changing spam happening, please see the attachment above.
I believe setting a value to 'dropdownPosition' prop should preserve checking for boundaries

Required Flag missing

Hi Sasha,
we have an issue with test automation when the dropdown is a required field. Is it possible to add the required flag to the html of the component?

Thanks a lot and best wishes
Max

Span element is not blockable

The span element used in the dropdown content is not able to be restricted to its parents size. My use case is being able to set the dropdown to a particular size and any options with labels too long having ellipsis applied in the content.

The below screen shot shows a name that is too long for the parent size, the span overflows the parent and the text is unreadable.

Screenshot 2019-10-01 at 15 46 03 (2)

The below screen shot shows desired behaviour which can be achieved by swapping the span element for a div element
Screenshot 2019-10-01 at 15 44 50

`values` props are not working with `multi` option

I was trying to set the values prop externally to the Select dropdown. It would work perfectly when the reference of the values props are same. But if we are using redux or any other external state management it will not work.

I created a small reproducible scenario here.
https://codesandbox.io/s/external-clear-68i29

I have also had a look at the code and the issue which i suspect is

if (prevProps.values !== this.props.values && prevProps.values === prevState.values) {

We may need to have a proper array comparison here.
eg:

 JSON.stringify(prevProps.values) ===  JSON.stringify(prevState.values)

Let me know if you need any more info from my side!

thanks for the nice lib.

Using react-dropdown-select with Typescript

Hello, I've found out that creating my own component to represent ListItem in TS is a bit difficult.

Zrzut ekranu z 2019-11-13 12-46-55

Methods don't accept any parameters in types, so getting it to work later on requires either //@ts-ignores or just always checking at the beginning if(param!==undefined).

Zrzut ekranu z 2019-11-13 12-48-38

Maybe I'm doing something wrong, in which case, please let me know.

Endless Loop in Select

When I implement Select something like this:

const [value, setValue] = useState('1');
const onChange = (changedValue) => {
    setValue(changedValue);
}
return <Select values={value} options={['1', '2', '3']} onChange={onChange} />

And then pick 2 as the new option, you actually trigger an endless loop.

This is the case, because in componentDidUpdate in your index.js (Select), you call

onChange with the old state value, then afterwards update your state with the new value given from outside. This means, it will jump from old to new to old to new value (and so on) in our case (with Redux Saga handling some changes asynchronously). It's fixed when you write it like this (which conforms with React concept):

componentDidUpdate() {
...
    this.setState({value: this.props.value}, () => {
         this.props.onChange(this.state.value);
    })
}

That way it's using the callback on setState to ensure it only propagates the changed state AFTER it was set on the component state and thus, not propagating the old state. Your order was wrong and even the other way around you cannot rely on setState to be done when onChange is triggered since it works asynchronously.

styling with css-modules?

any thoughts as to how to style the component using css-modules instead of CSS-in-JS? i kindof got around this using global styles, but that also feels pretty gross. would appreciate any guidance.

Error unique "key" prop

Hi, I try to make the same Dropdown as your baisc example, but I've got Warning: Each child in a list should have a unique "key" prop. error.

I use the same code of this example and the same data taken from Options.js by your CodeSandbox

And in my HTML part i render by this code:

import { options } from './Options';
import Basic from './Basic';

<Basic
    options={options}
    title="example"
/>

And I've got this error:

Warning: Each child in a list should have a unique "key" prop.

Check the render method of `Dropdown`. See https://fb.me/react-warning-keys for more information.
    in b (created by Dropdown)
    in Dropdown (created by b)
    in div (created by Context.Consumer)
    in ReactDropdownSelect (created by b)
    in div (created by b)
    in b (created by b)
    in b (at Basic.js:13)
    in Basic (at ConfigurationScreenContentPlaylist.js:77)
    in div (at ConfigurationScreenContentPlaylist.js:76)
    in div (at ConfigurationScreenContentPlaylist.js:75)
    in div (at ConfigurationScreenContentPlaylist.js:58)
    in div (at ConfigurationScreenContentPlaylist.js:56)
    in div (at ConfigurationScreenContentPlaylist.js:18)
    in aux (at ConfigurationScreenContentPlaylist.js:17)
    in ConfigurationScreenContentPlaylist (at ConfigurationScreenBase.js:24)
    in div (at ConfigurationScreenBase.js:41)
    in div (at ConfigurationScreenBase.js:34)
    in div (at ConfigurationScreenBase.js:33)
    in aux (at ConfigurationScreenBase.js:32)
    in ConfigurationScreenBase (created by Context.Consumer)
    in Route (at Layout.js:19)
    in aux (at Layout.js:13)
    in layout (at App.js:11)
    in Router (created by BrowserRouter)
    in BrowserRouter (at App.js:10)
    in App (at src/index.js:7)

How can I resolve?

Tab Handling

Hi Sasha,
currently we are having some troubles with tab-handling. During reasearch I found out, that there is no possibility to give the component an own tabIndex. Might it be possible to give tabIndex as a prop to the main component for setting it to the high div and also to the input component? (we have an own content renderer but currently using the default input)

If you wish us to contribute, just tell me.

Thanks a lot and best wishes
Max

cannot use inputrenderred prop

when custom input is passed through inputrenderer props, the app breaks where ref of original input is used. cannot attach ref to the custom input.

this.input.current.focus() is the line that breaks in Input.js

Not able to set Default value.

Want to set the 1st value in options as the first value as selected. Please suggest some option for it.

Here is my code.

<Select options={timeOptions} value={timeOptions[0]} name="Time Period" />

Thank you.

Incompatible with SSR

The core component seems to be adding event listeners on the window object without checking the environment it's being executing on, which causes errors in Node during SSR.

Not able to select 6th option onwards v2.2.3

options =[0: {id: "10", value: "10", label: "Channel 1 10", type: "channels", valid_routing_id: 50, …}
1: {id: "1", value: "1", label: "Channel 2 1", type: "channels", valid_routing_id: 41, …}
2: {id: "2", value: "2", label: "Channel 3 2", type: "channels", valid_routing_id: 42, …}
3: {id: "3", value: "3", label: "Channel 4 3", type: "channels", valid_routing_id: 43, …}
4: {id: "4", value: "4", label: "Channel 5 4", type: "channels", valid_routing_id: 44, …}
5: {id: "5", value: "5", label: "Channel 6 5", type: "channels", valid_routing_id: 45, …}
6: {id: "6", value: "6", label: "Channel 7 6", type: "channels", valid_routing_id: 46, …}
7: {id: "7", value: "7", label: "Channel 8 7", type: "channels", valid_routing_id: 47, …}
8: {id: "8", value: "8", label: "Channel 9 8", type: "channels", valid_routing_id: 48, …}
9: {id: "9", value: "9", label: "Channel 10 9", type: "channels", valid_routing_id: 49, …}
];

/* This is where I am invoking the object, 6th option onwards I cannot select. I had to degrade my npm module to 2.0.0 from 2.2.3 and it is working fine */

<MultiSelect
            values={preSelectedValues}
             options={options}
            searchable={false}
            onChange={(arr) => optionClicked(arr)}
            onDropdownClose={() => this.closeDropDown()}
            onDropdownOpen={() => this.openDropDown()}/>

Adding duplicate items

When you add an item in multi this check will always return -1

if (this.state.values.indexOf(item) !== -1) {

since item is an object and values is an array of objects

it should be
this.state.values.findIndex(value => value.label === item.label)

or similar you can't compare to objects like that in indexOf in Javascript

Typescript support ?

It is really really useful component. I love that. But Is there typescript support ?

Dropdown items double highlight

It seems weird to me that two items can be highlighted at the same time from the dropdown list. one with the keyboard and another one with the mouse, and each has a slightly different style. The keyboard one seems to have a "bold" text.

Is this a feature or a bug?

searchFn accept async function?

Is there a way to have searchFn accept an async function or promise? All my API lookups use async functions and I can't seem to find any other function that will allow for the intercepting of the search to populate the values in the dropdown?

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.