New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

react-elements-gu

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-elements-gu - npm Package Compare versions

Comparing version
1.0.6
to
1.0.7
+37
-51
dist/index.es.js

@@ -7,3 +7,2 @@ import React, { Component } from 'react';

import ArrowDropDown from '@material-ui/icons/ArrowDropDown';
import { ThemeProvider, createMuiTheme } from '@material-ui/core/styles';

@@ -289,54 +288,41 @@ var classCallCheck = function (instance, Constructor) {

var TextFieldTheme = createMuiTheme({ palette: theme.palette });
return React.createElement(
'div',
null,
React.createElement(
'form',
null,
React.createElement(
Grid,
{ item: true },
React.createElement(
ThemeProvider,
{ theme: TextFieldTheme },
React.createElement(TextField, {
style: styles(theme).textField,
onChange: function onChange(e) {
_onChange(e);
_this2.handleTextChanges(e);
},
onClick: this.handleOpenItems,
type: 'text',
label: label,
name: name,
autoComplete: 'off',
value: value,
fullWidth: true,
InputProps: {
endAdornment: React.createElement(
InputAdornment,
{ position: 'start' },
React.createElement(ArrowDropDown, {
style: styles(theme).dropDownIcon
})
)
}
Grid,
{ item: true },
React.createElement(TextField, {
style: styles(theme).textField,
onChange: function onChange(e) {
_onChange(e);
_this2.handleTextChanges(e);
},
onClick: this.handleOpenItems,
type: 'text',
label: label,
name: name,
autoComplete: 'off',
value: value,
fullWidth: true,
InputProps: {
endAdornment: React.createElement(
InputAdornment,
{ position: 'start' },
React.createElement(ArrowDropDown, {
style: styles(theme).dropDownIcon
})
),
isItemsOpen && React.createElement(ManageItems, {
handleAddNewItem: onAddNewItem,
handleCustomerPopperClickAway: this.handleClodeItems,
items: !isSearching ? items : searchResults,
handleClodeItems: this.handleClodeItems,
handleSelectionItem: function handleSelectionItem(e) {
onItemSelected(e);
_this2.handleSelectionItem(e);
},
addNewItem: addNewItem || false,
addNewItemCaption: addNewItemCaption,
theme: theme
})
)
)
)
}
}),
isItemsOpen && React.createElement(ManageItems, {
handleAddNewItem: onAddNewItem,
handleCustomerPopperClickAway: this.handleClodeItems,
items: !isSearching ? items : searchResults,
handleClodeItems: this.handleClodeItems,
handleSelectionItem: function handleSelectionItem(e) {
onItemSelected(e);
_this2.handleSelectionItem(e);
},
addNewItem: addNewItem || false,
addNewItemCaption: addNewItemCaption,
theme: theme
})
);

@@ -343,0 +329,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"index.es.js","sources":["../src/defaultStyle.js","../src/ManageItems.js","../src/index.js"],"sourcesContent":["export const defaultTextFieldStyle = {\n width: '400px',\n color: '#919191'\n}\nexport const styles = (theme = {}) => ({\n listItems: {...{\n maxHeight: '300px',\n overflow: 'scroll'\n },\n ...theme.listItems},\n addNewItem: {...{\n padding: '10px',\n textAlign: 'center',\n cursor: 'pointer',\n boxShadow: 'inset 0px 11px 8px -10px #cfcfcf'\n },\n ...theme.addNewItem},\n addNewItemIcon: {...{\n marginRight: '4px',\n marginTop: '3px',\n fontSize: '17px',\n color: '#878205'\n },\n ...theme.addNewItemIcon},\n addNewItemLabel: {...{\n color: '#878205',\n cursor: 'pointer'\n },\n ...theme.addNewItemLabel},\n listContainer: {...{\n marginTop: '5px',\n backgroundColor: '#fcfcfc',\n width: '19.5em'\n },\n ...theme.listContainer},\n textField: {...{\n width: '310px'\n },\n ...theme.textField},\n dropDownIcon: {...{\n marginRight: '-12px',\n color: '#919191'\n },\n ...theme.textField}\n})\n","/* eslint-disable react/prop-types */\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n Grid,\n Paper,\n Typography,\n Popper,\n Fade,\n ClickAwayListener,\n MenuItem,\n MenuList\n} from '@material-ui/core'\nimport { AddCircle } from '@material-ui/icons'\nimport { styles } from './defaultStyle'\n\nexport class ManageItems extends Component {\n hashCode = (s) => {\n let h = 0; let l = s.length; let i = 0\n if (l > 0) {\n while (i < l) { h = (h << 5) - h + s.charCodeAt(i++) | 0 }\n }\n return h\n };\n render() {\n const {\n handleAddNewItem,\n handleCustomerPopperClickAway,\n items,\n handleSelectionItem,\n addNewItem,\n addNewItemCaption,\n theme\n } = this.props\n return (\n <Popper\n open\n transition\n disablePortal\n >\n {({ TransitionProps }) => (\n <ClickAwayListener onClickAway={handleCustomerPopperClickAway}>\n <Fade {...TransitionProps} timeout={350}>\n <Paper style={styles(theme).listContainer}>\n {items.length !== 0 && (\n <Grid container style={styles(theme).listItems}>\n <Grid\n item\n xs={12}\n style={{ paddingBottom: 0 }}\n >\n <MenuList>\n {\n items.map(item => (\n <MenuItem key={this.hashCode(item.name)} value={item.name} onClick={handleSelectionItem}>{item.name}</MenuItem>\n ))\n }\n </MenuList>\n </Grid>\n </Grid>\n )}\n {\n (addNewItem === true) && (\n <Grid container style={styles(theme).addNewItem}>\n <AddCircle style={styles(theme).addNewItemIcon} />\n <Typography\n variant='subtitle2'\n onClick={handleAddNewItem}\n style={styles(theme).addNewItemLabel}\n >\n {addNewItemCaption}\n </Typography>\n </Grid>\n )\n }\n </Paper>\n </Fade>\n </ClickAwayListener>\n )}\n </Popper>\n )\n }\n}\n\nManageItems.propTypes = {\n handleCustomerPopperClickAway: PropTypes.func.isRequired,\n handleAddNewItem: PropTypes.func.isRequired,\n items: PropTypes.instanceOf(Array).isRequired,\n addNewItemCaption: PropTypes.string,\n theme: PropTypes.instanceOf(Object)\n}\n\nexport default ManageItems\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { Grid, TextField } from '@material-ui/core'\nimport InputAdornment from '@material-ui/core/InputAdornment'\nimport ArrowDropDown from '@material-ui/icons/ArrowDropDown'\nimport { ManageItems } from './ManageItems'\nimport {\n ThemeProvider,\n createMuiTheme\n} from '@material-ui/core/styles'\nimport { styles } from './defaultStyle'\n\nexport class Selector extends Component {\n static propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n items: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n addNewItem: PropTypes.bool,\n addNewItemCaption: PropTypes.string,\n theme: PropTypes.instanceOf(Object),\n onAddNewItem: PropTypes.func,\n onItemSelected: PropTypes.func\n };\n state = {\n isItemsOpen: false,\n value: '',\n isSearching: false,\n searchResults: []\n };\n\n handleOpenItems = () => {\n this.setState({ isItemsOpen: true })\n };\n handleClodeItems = () => {\n this.setState({ isItemsOpen: false })\n };\n handleSelectionItem = event => {\n this.handleClodeItems()\n this.setState({ value: event.target.getAttribute('value') })\n };\n handleTextChanges = event => {\n this.handleSearch(event)\n this.setState({ value: event.target.value })\n }\n\n handleSearch = (event) => {\n let searchResults = []\n const searchText = event.target.value\n const searchMatch = new RegExp(searchText, 'i')\n if (searchText !== this.state.value && searchText.length > 0) {\n searchResults = this.props.items.filter(row => searchMatch.test(row.name))\n this.setState({ isSearching: true, searchResults })\n } else {\n this.setState({ isSearching: false })\n }\n };\n\n render() {\n const {\n name,\n label,\n items,\n onChange,\n onItemSelected,\n onAddNewItem,\n addNewItem,\n addNewItemCaption,\n theme\n } = this.props\n const { isItemsOpen, value, isSearching, searchResults } = this.state\n const TextFieldTheme = createMuiTheme({palette: theme.palette})\n return (\n <div>\n <form>\n <Grid item>\n <ThemeProvider theme={TextFieldTheme}>\n <TextField\n style={styles(theme).textField}\n onChange={(e) => {\n onChange(e)\n this.handleTextChanges(e)\n }}\n onClick={this.handleOpenItems}\n type='text'\n label={label}\n name={name}\n autoComplete='off'\n value={value}\n fullWidth\n InputProps={{\n endAdornment: (\n <InputAdornment position='start'>\n <ArrowDropDown\n style={styles(theme).dropDownIcon}\n />\n </InputAdornment>\n )\n }}\n />\n </ThemeProvider>\n\n {isItemsOpen && (\n <ManageItems\n handleAddNewItem={onAddNewItem}\n handleCustomerPopperClickAway={this.handleClodeItems}\n items={!isSearching ? items : searchResults}\n handleClodeItems={this.handleClodeItems}\n handleSelectionItem={(e) => {\n onItemSelected(e)\n this.handleSelectionItem(e)\n }}\n addNewItem={addNewItem || false}\n addNewItemCaption={addNewItemCaption}\n theme={theme}\n />\n )}\n </Grid>\n </form>\n\n </div>\n )\n }\n}\nexport default Selector\n"],"names":["styles","theme","listItems","addNewItem","addNewItemIcon","addNewItemLabel","listContainer","textField","ManageItems","hashCode","s","h","l","length","i","charCodeAt","props","handleAddNewItem","handleCustomerPopperClickAway","items","handleSelectionItem","addNewItemCaption","TransitionProps","paddingBottom","map","item","name","Component","propTypes","PropTypes","func","isRequired","instanceOf","Array","string","Object","Selector","state","handleOpenItems","setState","isItemsOpen","handleClodeItems","value","event","target","getAttribute","handleTextChanges","handleSearch","searchResults","searchText","searchMatch","RegExp","filter","test","row","isSearching","label","onChange","onItemSelected","onAddNewItem","TextFieldTheme","createMuiTheme","palette","e","dropDownIcon","bool"],"mappings":"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"}
{"version":3,"file":"index.es.js","sources":["../src/defaultStyle.js","../src/ManageItems.js","../src/index.js"],"sourcesContent":["export const defaultTextFieldStyle = {\n width: '400px',\n color: '#919191'\n}\nexport const styles = (theme = {}) => ({\n listItems: {...{\n maxHeight: '300px',\n overflow: 'scroll'\n },\n ...theme.listItems},\n addNewItem: {...{\n padding: '10px',\n textAlign: 'center',\n cursor: 'pointer',\n boxShadow: 'inset 0px 11px 8px -10px #cfcfcf'\n },\n ...theme.addNewItem},\n addNewItemIcon: {...{\n marginRight: '4px',\n marginTop: '3px',\n fontSize: '17px',\n color: '#878205'\n },\n ...theme.addNewItemIcon},\n addNewItemLabel: {...{\n color: '#878205',\n cursor: 'pointer'\n },\n ...theme.addNewItemLabel},\n listContainer: {...{\n marginTop: '5px',\n backgroundColor: '#fcfcfc',\n width: '19.5em'\n },\n ...theme.listContainer},\n textField: {...{\n width: '310px'\n },\n ...theme.textField},\n dropDownIcon: {...{\n marginRight: '-12px',\n color: '#919191'\n },\n ...theme.textField}\n})\n","/* eslint-disable react/prop-types */\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n Grid,\n Paper,\n Typography,\n Popper,\n Fade,\n ClickAwayListener,\n MenuItem,\n MenuList\n} from '@material-ui/core'\nimport { AddCircle } from '@material-ui/icons'\nimport { styles } from './defaultStyle'\n\nexport class ManageItems extends Component {\n hashCode = (s) => {\n let h = 0; let l = s.length; let i = 0\n if (l > 0) {\n while (i < l) { h = (h << 5) - h + s.charCodeAt(i++) | 0 }\n }\n return h\n };\n render() {\n const {\n handleAddNewItem,\n handleCustomerPopperClickAway,\n items,\n handleSelectionItem,\n addNewItem,\n addNewItemCaption,\n theme\n } = this.props\n return (\n <Popper\n open\n transition\n disablePortal\n >\n {({ TransitionProps }) => (\n <ClickAwayListener onClickAway={handleCustomerPopperClickAway}>\n <Fade {...TransitionProps} timeout={350}>\n <Paper style={styles(theme).listContainer}>\n {items.length !== 0 && (\n <Grid container style={styles(theme).listItems}>\n <Grid\n item\n xs={12}\n style={{ paddingBottom: 0 }}\n >\n <MenuList>\n {\n items.map(item => (\n <MenuItem key={this.hashCode(item.name)} value={item.name} onClick={handleSelectionItem}>{item.name}</MenuItem>\n ))\n }\n </MenuList>\n </Grid>\n </Grid>\n )}\n {\n (addNewItem === true) && (\n <Grid container style={styles(theme).addNewItem}>\n <AddCircle style={styles(theme).addNewItemIcon} />\n <Typography\n variant='subtitle2'\n onClick={handleAddNewItem}\n style={styles(theme).addNewItemLabel}\n >\n {addNewItemCaption}\n </Typography>\n </Grid>\n )\n }\n </Paper>\n </Fade>\n </ClickAwayListener>\n )}\n </Popper>\n )\n }\n}\n\nManageItems.propTypes = {\n handleCustomerPopperClickAway: PropTypes.func.isRequired,\n handleAddNewItem: PropTypes.func.isRequired,\n items: PropTypes.instanceOf(Array).isRequired,\n addNewItemCaption: PropTypes.string,\n theme: PropTypes.instanceOf(Object)\n}\n\nexport default ManageItems\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { Grid, TextField } from '@material-ui/core'\nimport InputAdornment from '@material-ui/core/InputAdornment'\nimport ArrowDropDown from '@material-ui/icons/ArrowDropDown'\nimport { ManageItems } from './ManageItems'\nimport { styles } from './defaultStyle'\n\nexport class Selector extends Component {\n static propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n items: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n addNewItem: PropTypes.bool,\n addNewItemCaption: PropTypes.string,\n theme: PropTypes.instanceOf(Object),\n onAddNewItem: PropTypes.func,\n onItemSelected: PropTypes.func\n };\n state = {\n isItemsOpen: false,\n value: '',\n isSearching: false,\n searchResults: []\n };\n\n handleOpenItems = () => {\n this.setState({ isItemsOpen: true })\n };\n handleClodeItems = () => {\n this.setState({ isItemsOpen: false })\n };\n handleSelectionItem = event => {\n this.handleClodeItems()\n this.setState({ value: event.target.getAttribute('value') })\n };\n handleTextChanges = event => {\n this.handleSearch(event)\n this.setState({ value: event.target.value })\n }\n\n handleSearch = (event) => {\n let searchResults = []\n const searchText = event.target.value\n const searchMatch = new RegExp(searchText, 'i')\n if (searchText !== this.state.value && searchText.length > 0) {\n searchResults = this.props.items.filter(row => searchMatch.test(row.name))\n this.setState({ isSearching: true, searchResults })\n } else {\n this.setState({ isSearching: false })\n }\n };\n\n render() {\n const {\n name,\n label,\n items,\n onChange,\n onItemSelected,\n onAddNewItem,\n addNewItem,\n addNewItemCaption,\n theme\n } = this.props\n const { isItemsOpen, value, isSearching, searchResults } = this.state\n return (\n <Grid item>\n <TextField\n style={styles(theme).textField}\n onChange={(e) => {\n onChange(e)\n this.handleTextChanges(e)\n }}\n onClick={this.handleOpenItems}\n type='text'\n label={label}\n name={name}\n autoComplete='off'\n value={value}\n fullWidth\n InputProps={{\n endAdornment: (\n <InputAdornment position='start'>\n <ArrowDropDown\n style={styles(theme).dropDownIcon}\n />\n </InputAdornment>\n )\n }}\n />\n\n {isItemsOpen && (\n <ManageItems\n handleAddNewItem={onAddNewItem}\n handleCustomerPopperClickAway={this.handleClodeItems}\n items={!isSearching ? items : searchResults}\n handleClodeItems={this.handleClodeItems}\n handleSelectionItem={(e) => {\n onItemSelected(e)\n this.handleSelectionItem(e)\n }}\n addNewItem={addNewItem || false}\n addNewItemCaption={addNewItemCaption}\n theme={theme}\n />\n )}\n </Grid>\n\n )\n }\n}\nexport default Selector\n"],"names":["styles","theme","listItems","addNewItem","addNewItemIcon","addNewItemLabel","listContainer","textField","ManageItems","hashCode","s","h","l","length","i","charCodeAt","props","handleAddNewItem","handleCustomerPopperClickAway","items","handleSelectionItem","addNewItemCaption","TransitionProps","paddingBottom","map","item","name","Component","propTypes","PropTypes","func","isRequired","instanceOf","Array","string","Object","Selector","state","handleOpenItems","setState","isItemsOpen","handleClodeItems","value","event","target","getAttribute","handleTextChanges","handleSearch","searchResults","searchText","searchMatch","RegExp","filter","test","row","isSearching","label","onChange","onItemSelected","onAddNewItem","e","dropDownIcon","bool"],"mappings":"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"}

@@ -14,3 +14,2 @@ 'use strict';

var ArrowDropDown = _interopDefault(require('@material-ui/icons/ArrowDropDown'));
var styles = require('@material-ui/core/styles');

@@ -79,3 +78,3 @@ var classCallCheck = function (instance, Constructor) {

var styles$1 = function styles$$1() {
var styles = function styles() {
var theme = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

@@ -176,6 +175,6 @@ return {

core.Paper,
{ style: styles$1(theme).listContainer },
{ style: styles(theme).listContainer },
items.length !== 0 && React__default.createElement(
core.Grid,
{ container: true, style: styles$1(theme).listItems },
{ container: true, style: styles(theme).listItems },
React__default.createElement(

@@ -203,4 +202,4 @@ core.Grid,

core.Grid,
{ container: true, style: styles$1(theme).addNewItem },
React__default.createElement(icons.AddCircle, { style: styles$1(theme).addNewItemIcon }),
{ container: true, style: styles(theme).addNewItem },
React__default.createElement(icons.AddCircle, { style: styles(theme).addNewItemIcon }),
React__default.createElement(

@@ -211,3 +210,3 @@ core.Typography,

onClick: handleAddNewItem,
style: styles$1(theme).addNewItemLabel
style: styles(theme).addNewItemLabel
},

@@ -300,54 +299,41 @@ addNewItemCaption

var TextFieldTheme = styles.createMuiTheme({ palette: theme.palette });
return React__default.createElement(
'div',
null,
React__default.createElement(
'form',
null,
React__default.createElement(
core.Grid,
{ item: true },
React__default.createElement(
styles.ThemeProvider,
{ theme: TextFieldTheme },
React__default.createElement(core.TextField, {
style: styles$1(theme).textField,
onChange: function onChange(e) {
_onChange(e);
_this2.handleTextChanges(e);
},
onClick: this.handleOpenItems,
type: 'text',
label: label,
name: name,
autoComplete: 'off',
value: value,
fullWidth: true,
InputProps: {
endAdornment: React__default.createElement(
InputAdornment,
{ position: 'start' },
React__default.createElement(ArrowDropDown, {
style: styles$1(theme).dropDownIcon
})
)
}
core.Grid,
{ item: true },
React__default.createElement(core.TextField, {
style: styles(theme).textField,
onChange: function onChange(e) {
_onChange(e);
_this2.handleTextChanges(e);
},
onClick: this.handleOpenItems,
type: 'text',
label: label,
name: name,
autoComplete: 'off',
value: value,
fullWidth: true,
InputProps: {
endAdornment: React__default.createElement(
InputAdornment,
{ position: 'start' },
React__default.createElement(ArrowDropDown, {
style: styles(theme).dropDownIcon
})
),
isItemsOpen && React__default.createElement(ManageItems, {
handleAddNewItem: onAddNewItem,
handleCustomerPopperClickAway: this.handleClodeItems,
items: !isSearching ? items : searchResults,
handleClodeItems: this.handleClodeItems,
handleSelectionItem: function handleSelectionItem(e) {
onItemSelected(e);
_this2.handleSelectionItem(e);
},
addNewItem: addNewItem || false,
addNewItemCaption: addNewItemCaption,
theme: theme
})
)
)
)
}
}),
isItemsOpen && React__default.createElement(ManageItems, {
handleAddNewItem: onAddNewItem,
handleCustomerPopperClickAway: this.handleClodeItems,
items: !isSearching ? items : searchResults,
handleClodeItems: this.handleClodeItems,
handleSelectionItem: function handleSelectionItem(e) {
onItemSelected(e);
_this2.handleSelectionItem(e);
},
addNewItem: addNewItem || false,
addNewItemCaption: addNewItemCaption,
theme: theme
})
);

@@ -354,0 +340,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sources":["../src/defaultStyle.js","../src/ManageItems.js","../src/index.js"],"sourcesContent":["export const defaultTextFieldStyle = {\n width: '400px',\n color: '#919191'\n}\nexport const styles = (theme = {}) => ({\n listItems: {...{\n maxHeight: '300px',\n overflow: 'scroll'\n },\n ...theme.listItems},\n addNewItem: {...{\n padding: '10px',\n textAlign: 'center',\n cursor: 'pointer',\n boxShadow: 'inset 0px 11px 8px -10px #cfcfcf'\n },\n ...theme.addNewItem},\n addNewItemIcon: {...{\n marginRight: '4px',\n marginTop: '3px',\n fontSize: '17px',\n color: '#878205'\n },\n ...theme.addNewItemIcon},\n addNewItemLabel: {...{\n color: '#878205',\n cursor: 'pointer'\n },\n ...theme.addNewItemLabel},\n listContainer: {...{\n marginTop: '5px',\n backgroundColor: '#fcfcfc',\n width: '19.5em'\n },\n ...theme.listContainer},\n textField: {...{\n width: '310px'\n },\n ...theme.textField},\n dropDownIcon: {...{\n marginRight: '-12px',\n color: '#919191'\n },\n ...theme.textField}\n})\n","/* eslint-disable react/prop-types */\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n Grid,\n Paper,\n Typography,\n Popper,\n Fade,\n ClickAwayListener,\n MenuItem,\n MenuList\n} from '@material-ui/core'\nimport { AddCircle } from '@material-ui/icons'\nimport { styles } from './defaultStyle'\n\nexport class ManageItems extends Component {\n hashCode = (s) => {\n let h = 0; let l = s.length; let i = 0\n if (l > 0) {\n while (i < l) { h = (h << 5) - h + s.charCodeAt(i++) | 0 }\n }\n return h\n };\n render() {\n const {\n handleAddNewItem,\n handleCustomerPopperClickAway,\n items,\n handleSelectionItem,\n addNewItem,\n addNewItemCaption,\n theme\n } = this.props\n return (\n <Popper\n open\n transition\n disablePortal\n >\n {({ TransitionProps }) => (\n <ClickAwayListener onClickAway={handleCustomerPopperClickAway}>\n <Fade {...TransitionProps} timeout={350}>\n <Paper style={styles(theme).listContainer}>\n {items.length !== 0 && (\n <Grid container style={styles(theme).listItems}>\n <Grid\n item\n xs={12}\n style={{ paddingBottom: 0 }}\n >\n <MenuList>\n {\n items.map(item => (\n <MenuItem key={this.hashCode(item.name)} value={item.name} onClick={handleSelectionItem}>{item.name}</MenuItem>\n ))\n }\n </MenuList>\n </Grid>\n </Grid>\n )}\n {\n (addNewItem === true) && (\n <Grid container style={styles(theme).addNewItem}>\n <AddCircle style={styles(theme).addNewItemIcon} />\n <Typography\n variant='subtitle2'\n onClick={handleAddNewItem}\n style={styles(theme).addNewItemLabel}\n >\n {addNewItemCaption}\n </Typography>\n </Grid>\n )\n }\n </Paper>\n </Fade>\n </ClickAwayListener>\n )}\n </Popper>\n )\n }\n}\n\nManageItems.propTypes = {\n handleCustomerPopperClickAway: PropTypes.func.isRequired,\n handleAddNewItem: PropTypes.func.isRequired,\n items: PropTypes.instanceOf(Array).isRequired,\n addNewItemCaption: PropTypes.string,\n theme: PropTypes.instanceOf(Object)\n}\n\nexport default ManageItems\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { Grid, TextField } from '@material-ui/core'\nimport InputAdornment from '@material-ui/core/InputAdornment'\nimport ArrowDropDown from '@material-ui/icons/ArrowDropDown'\nimport { ManageItems } from './ManageItems'\nimport {\n ThemeProvider,\n createMuiTheme\n} from '@material-ui/core/styles'\nimport { styles } from './defaultStyle'\n\nexport class Selector extends Component {\n static propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n items: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n addNewItem: PropTypes.bool,\n addNewItemCaption: PropTypes.string,\n theme: PropTypes.instanceOf(Object),\n onAddNewItem: PropTypes.func,\n onItemSelected: PropTypes.func\n };\n state = {\n isItemsOpen: false,\n value: '',\n isSearching: false,\n searchResults: []\n };\n\n handleOpenItems = () => {\n this.setState({ isItemsOpen: true })\n };\n handleClodeItems = () => {\n this.setState({ isItemsOpen: false })\n };\n handleSelectionItem = event => {\n this.handleClodeItems()\n this.setState({ value: event.target.getAttribute('value') })\n };\n handleTextChanges = event => {\n this.handleSearch(event)\n this.setState({ value: event.target.value })\n }\n\n handleSearch = (event) => {\n let searchResults = []\n const searchText = event.target.value\n const searchMatch = new RegExp(searchText, 'i')\n if (searchText !== this.state.value && searchText.length > 0) {\n searchResults = this.props.items.filter(row => searchMatch.test(row.name))\n this.setState({ isSearching: true, searchResults })\n } else {\n this.setState({ isSearching: false })\n }\n };\n\n render() {\n const {\n name,\n label,\n items,\n onChange,\n onItemSelected,\n onAddNewItem,\n addNewItem,\n addNewItemCaption,\n theme\n } = this.props\n const { isItemsOpen, value, isSearching, searchResults } = this.state\n const TextFieldTheme = createMuiTheme({palette: theme.palette})\n return (\n <div>\n <form>\n <Grid item>\n <ThemeProvider theme={TextFieldTheme}>\n <TextField\n style={styles(theme).textField}\n onChange={(e) => {\n onChange(e)\n this.handleTextChanges(e)\n }}\n onClick={this.handleOpenItems}\n type='text'\n label={label}\n name={name}\n autoComplete='off'\n value={value}\n fullWidth\n InputProps={{\n endAdornment: (\n <InputAdornment position='start'>\n <ArrowDropDown\n style={styles(theme).dropDownIcon}\n />\n </InputAdornment>\n )\n }}\n />\n </ThemeProvider>\n\n {isItemsOpen && (\n <ManageItems\n handleAddNewItem={onAddNewItem}\n handleCustomerPopperClickAway={this.handleClodeItems}\n items={!isSearching ? items : searchResults}\n handleClodeItems={this.handleClodeItems}\n handleSelectionItem={(e) => {\n onItemSelected(e)\n this.handleSelectionItem(e)\n }}\n addNewItem={addNewItem || false}\n addNewItemCaption={addNewItemCaption}\n theme={theme}\n />\n )}\n </Grid>\n </form>\n\n </div>\n )\n }\n}\nexport default Selector\n"],"names":["styles","theme","listItems","addNewItem","addNewItemIcon","addNewItemLabel","listContainer","textField","ManageItems","hashCode","s","h","l","length","i","charCodeAt","props","handleAddNewItem","handleCustomerPopperClickAway","items","handleSelectionItem","addNewItemCaption","React","TransitionProps","paddingBottom","map","item","name","AddCircle","Component","propTypes","PropTypes","func","isRequired","instanceOf","Array","string","Object","Selector","state","handleOpenItems","setState","isItemsOpen","handleClodeItems","value","event","target","getAttribute","handleTextChanges","handleSearch","searchResults","searchText","searchMatch","RegExp","filter","test","row","isSearching","label","onChange","onItemSelected","onAddNewItem","TextFieldTheme","createMuiTheme","palette","TextField","e","dropDownIcon","bool"],"mappings":"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"}
{"version":3,"file":"index.js","sources":["../src/defaultStyle.js","../src/ManageItems.js","../src/index.js"],"sourcesContent":["export const defaultTextFieldStyle = {\n width: '400px',\n color: '#919191'\n}\nexport const styles = (theme = {}) => ({\n listItems: {...{\n maxHeight: '300px',\n overflow: 'scroll'\n },\n ...theme.listItems},\n addNewItem: {...{\n padding: '10px',\n textAlign: 'center',\n cursor: 'pointer',\n boxShadow: 'inset 0px 11px 8px -10px #cfcfcf'\n },\n ...theme.addNewItem},\n addNewItemIcon: {...{\n marginRight: '4px',\n marginTop: '3px',\n fontSize: '17px',\n color: '#878205'\n },\n ...theme.addNewItemIcon},\n addNewItemLabel: {...{\n color: '#878205',\n cursor: 'pointer'\n },\n ...theme.addNewItemLabel},\n listContainer: {...{\n marginTop: '5px',\n backgroundColor: '#fcfcfc',\n width: '19.5em'\n },\n ...theme.listContainer},\n textField: {...{\n width: '310px'\n },\n ...theme.textField},\n dropDownIcon: {...{\n marginRight: '-12px',\n color: '#919191'\n },\n ...theme.textField}\n})\n","/* eslint-disable react/prop-types */\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n Grid,\n Paper,\n Typography,\n Popper,\n Fade,\n ClickAwayListener,\n MenuItem,\n MenuList\n} from '@material-ui/core'\nimport { AddCircle } from '@material-ui/icons'\nimport { styles } from './defaultStyle'\n\nexport class ManageItems extends Component {\n hashCode = (s) => {\n let h = 0; let l = s.length; let i = 0\n if (l > 0) {\n while (i < l) { h = (h << 5) - h + s.charCodeAt(i++) | 0 }\n }\n return h\n };\n render() {\n const {\n handleAddNewItem,\n handleCustomerPopperClickAway,\n items,\n handleSelectionItem,\n addNewItem,\n addNewItemCaption,\n theme\n } = this.props\n return (\n <Popper\n open\n transition\n disablePortal\n >\n {({ TransitionProps }) => (\n <ClickAwayListener onClickAway={handleCustomerPopperClickAway}>\n <Fade {...TransitionProps} timeout={350}>\n <Paper style={styles(theme).listContainer}>\n {items.length !== 0 && (\n <Grid container style={styles(theme).listItems}>\n <Grid\n item\n xs={12}\n style={{ paddingBottom: 0 }}\n >\n <MenuList>\n {\n items.map(item => (\n <MenuItem key={this.hashCode(item.name)} value={item.name} onClick={handleSelectionItem}>{item.name}</MenuItem>\n ))\n }\n </MenuList>\n </Grid>\n </Grid>\n )}\n {\n (addNewItem === true) && (\n <Grid container style={styles(theme).addNewItem}>\n <AddCircle style={styles(theme).addNewItemIcon} />\n <Typography\n variant='subtitle2'\n onClick={handleAddNewItem}\n style={styles(theme).addNewItemLabel}\n >\n {addNewItemCaption}\n </Typography>\n </Grid>\n )\n }\n </Paper>\n </Fade>\n </ClickAwayListener>\n )}\n </Popper>\n )\n }\n}\n\nManageItems.propTypes = {\n handleCustomerPopperClickAway: PropTypes.func.isRequired,\n handleAddNewItem: PropTypes.func.isRequired,\n items: PropTypes.instanceOf(Array).isRequired,\n addNewItemCaption: PropTypes.string,\n theme: PropTypes.instanceOf(Object)\n}\n\nexport default ManageItems\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { Grid, TextField } from '@material-ui/core'\nimport InputAdornment from '@material-ui/core/InputAdornment'\nimport ArrowDropDown from '@material-ui/icons/ArrowDropDown'\nimport { ManageItems } from './ManageItems'\nimport { styles } from './defaultStyle'\n\nexport class Selector extends Component {\n static propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n items: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n addNewItem: PropTypes.bool,\n addNewItemCaption: PropTypes.string,\n theme: PropTypes.instanceOf(Object),\n onAddNewItem: PropTypes.func,\n onItemSelected: PropTypes.func\n };\n state = {\n isItemsOpen: false,\n value: '',\n isSearching: false,\n searchResults: []\n };\n\n handleOpenItems = () => {\n this.setState({ isItemsOpen: true })\n };\n handleClodeItems = () => {\n this.setState({ isItemsOpen: false })\n };\n handleSelectionItem = event => {\n this.handleClodeItems()\n this.setState({ value: event.target.getAttribute('value') })\n };\n handleTextChanges = event => {\n this.handleSearch(event)\n this.setState({ value: event.target.value })\n }\n\n handleSearch = (event) => {\n let searchResults = []\n const searchText = event.target.value\n const searchMatch = new RegExp(searchText, 'i')\n if (searchText !== this.state.value && searchText.length > 0) {\n searchResults = this.props.items.filter(row => searchMatch.test(row.name))\n this.setState({ isSearching: true, searchResults })\n } else {\n this.setState({ isSearching: false })\n }\n };\n\n render() {\n const {\n name,\n label,\n items,\n onChange,\n onItemSelected,\n onAddNewItem,\n addNewItem,\n addNewItemCaption,\n theme\n } = this.props\n const { isItemsOpen, value, isSearching, searchResults } = this.state\n return (\n <Grid item>\n <TextField\n style={styles(theme).textField}\n onChange={(e) => {\n onChange(e)\n this.handleTextChanges(e)\n }}\n onClick={this.handleOpenItems}\n type='text'\n label={label}\n name={name}\n autoComplete='off'\n value={value}\n fullWidth\n InputProps={{\n endAdornment: (\n <InputAdornment position='start'>\n <ArrowDropDown\n style={styles(theme).dropDownIcon}\n />\n </InputAdornment>\n )\n }}\n />\n\n {isItemsOpen && (\n <ManageItems\n handleAddNewItem={onAddNewItem}\n handleCustomerPopperClickAway={this.handleClodeItems}\n items={!isSearching ? items : searchResults}\n handleClodeItems={this.handleClodeItems}\n handleSelectionItem={(e) => {\n onItemSelected(e)\n this.handleSelectionItem(e)\n }}\n addNewItem={addNewItem || false}\n addNewItemCaption={addNewItemCaption}\n theme={theme}\n />\n )}\n </Grid>\n\n )\n }\n}\nexport default Selector\n"],"names":["styles","theme","listItems","addNewItem","addNewItemIcon","addNewItemLabel","listContainer","textField","ManageItems","hashCode","s","h","l","length","i","charCodeAt","props","handleAddNewItem","handleCustomerPopperClickAway","items","handleSelectionItem","addNewItemCaption","React","TransitionProps","paddingBottom","map","item","name","AddCircle","Component","propTypes","PropTypes","func","isRequired","instanceOf","Array","string","Object","Selector","state","handleOpenItems","setState","isItemsOpen","handleClodeItems","value","event","target","getAttribute","handleTextChanges","handleSearch","searchResults","searchText","searchMatch","RegExp","filter","test","row","isSearching","label","onChange","onItemSelected","onAddNewItem","TextField","e","dropDownIcon","bool"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,IAAMA,SAAS,SAATA,MAAS;MAACC,KAAD,uEAAS,EAAT;SAAiB;wBACtB;iBACF,OADE;gBAEH;KAFZ,EAIGA,MAAMC,SAJT,CADqC;yBAMrB;eACL,MADK;iBAEH,QAFG;cAGN,SAHM;iBAIH;KAJb,EAMGD,MAAME,UANT,CANqC;6BAajB;mBACL,KADK;iBAEP,KAFO;gBAGR,MAHQ;aAIX;KAJT,EAMGF,MAAMG,cANT,CAbqC;8BAoBhB;aACZ,SADY;cAEX;KAFV,EAIGH,MAAMI,eAJT,CApBqC;4BAyBlB;iBACN,KADM;uBAEA,SAFA;aAGV;KAHT,EAKGJ,MAAMK,aALT,CAzBqC;wBA+BtB;aACN;KADT,EAGGL,MAAMM,SAHT,CA/BqC;2BAmCnB;mBACH,OADG;aAET;KAFT,EAIGN,MAAMM,SAJT;GAnCoB;CAAf;;ACJP;AACA;AAeA,IAAaC,WAAb;;;;;;;;;;;;;;+LACEC,QADF,GACa,UAACC,CAAD,EAAO;UACZC,IAAI,CAAR,CAAW,IAAIC,IAAIF,EAAEG,MAAV,CAAkB,IAAIC,IAAI,CAAR;UACzBF,IAAI,CAAR,EAAW;eACFE,IAAIF,CAAX,EAAc;cAAM,CAACD,KAAK,CAAN,IAAWA,CAAX,GAAeD,EAAEK,UAAF,CAAaD,GAAb,CAAf,GAAmC,CAAvC;;;aAEXH,CAAP;KANJ;;;;;6BAQW;;;mBASH,KAAKK,KATF;UAELC,gBAFK,UAELA,gBAFK;UAGLC,6BAHK,UAGLA,6BAHK;UAILC,KAJK,UAILA,KAJK;UAKLC,mBALK,UAKLA,mBALK;UAMLjB,UANK,UAMLA,UANK;UAOLkB,iBAPK,UAOLA,iBAPK;UAQLpB,KARK,UAQLA,KARK;;aAWLqB;mBAAA;;oBAAA;0BAAA;;;;cAKMC,eAAH,SAAGA,eAAH;iBACCD;kCAAA;cAAmB,aAAaJ,6BAAhC;;uBACE;2BAAUK,eAAV,IAA2B,SAAS,GAApC;;0BACE;kBAAO,OAAOvB,OAAOC,KAAP,EAAcK,aAA5B;sBACSO,MAAN,KAAiB,CAAjB,IACCS;2BAAA;oBAAM,eAAN,EAAgB,OAAOtB,OAAOC,KAAP,EAAcC,SAArC;;6BACE;;gCAAA;0BAEM,EAFN;6BAGS,EAAEsB,eAAe,CAAjB;;;mCAEP;;4BAEUC,GAAN,CAAU;+BACRH;uCAAA;4BAAU,KAAK,OAAKb,QAAL,CAAciB,KAAKC,IAAnB,CAAf,EAAyC,OAAOD,KAAKC,IAArD,EAA2D,SAASP,mBAApE;+BAA+FO;yBADvF;uBAAV;;;iBAVZ;+BAmBoB,IAAhB,IACEL;2BAAA;oBAAM,eAAN,EAAgB,OAAOtB,OAAOC,KAAP,EAAcE,UAArC;+CACGyB,eAAD,IAAW,OAAO5B,OAAOC,KAAP,EAAcG,cAAhC,GADF;;mCAEE;;+BACU,WADV;+BAEWa,gBAFX;6BAGSjB,OAAOC,KAAP,EAAcI;;;;;;;WA5BpC;;OANL;;;;EAlB6BwB,eAAjC;;AAoEArB,YAAYsB,SAAZ,GAAwB;iCACSC,UAAUC,IAAV,CAAeC,UADxB;oBAEJF,UAAUC,IAAV,CAAeC,UAFX;SAGfF,UAAUG,UAAV,CAAqBC,KAArB,EAA4BF,UAHb;qBAIHF,UAAUK,MAJP;SAKfL,UAAUG,UAAV,CAAqBG,MAArB;CALT;;IC5EaC,QAAb;;;;;;;;;;;;;;yLAYEC,KAZF,GAYU;mBACO,KADP;aAEC,EAFD;mBAGO,KAHP;qBAIS;KAhBnB,QAmBEC,eAnBF,GAmBoB,YAAM;YACjBC,QAAL,CAAc,EAAEC,aAAa,IAAf,EAAd;KApBJ,QAsBEC,gBAtBF,GAsBqB,YAAM;YAClBF,QAAL,CAAc,EAAEC,aAAa,KAAf,EAAd;KAvBJ,QAyBEtB,mBAzBF,GAyBwB,iBAAS;YACxBuB,gBAAL;YACKF,QAAL,CAAc,EAAEG,OAAOC,MAAMC,MAAN,CAAaC,YAAb,CAA0B,OAA1B,CAAT,EAAd;KA3BJ,QA6BEC,iBA7BF,GA6BsB,iBAAS;YACtBC,YAAL,CAAkBJ,KAAlB;YACKJ,QAAL,CAAc,EAAEG,OAAOC,MAAMC,MAAN,CAAaF,KAAtB,EAAd;KA/BJ,QAkCEK,YAlCF,GAkCiB,UAACJ,KAAD,EAAW;UACpBK,gBAAgB,EAApB;UACMC,aAAaN,MAAMC,MAAN,CAAaF,KAAhC;UACMQ,cAAc,IAAIC,MAAJ,CAAWF,UAAX,EAAuB,GAAvB,CAApB;UACIA,eAAe,MAAKZ,KAAL,CAAWK,KAA1B,IAAmCO,WAAWtC,MAAX,GAAoB,CAA3D,EAA8D;wBAC5C,MAAKG,KAAL,CAAWG,KAAX,CAAiBmC,MAAjB,CAAwB;iBAAOF,YAAYG,IAAZ,CAAiBC,IAAI7B,IAArB,CAAP;SAAxB,CAAhB;cACKc,QAAL,CAAc,EAAEgB,aAAa,IAAf,EAAqBP,4BAArB,EAAd;OAFF,MAGO;cACAT,QAAL,CAAc,EAAEgB,aAAa,KAAf,EAAd;;KA1CN;;;;;6BA8CW;;;mBAWH,KAAKzC,KAXF;UAELW,IAFK,UAELA,IAFK;UAGL+B,KAHK,UAGLA,KAHK;UAILvC,KAJK,UAILA,KAJK;UAKLwC,SALK,UAKLA,QALK;UAMLC,cANK,UAMLA,cANK;UAOLC,YAPK,UAOLA,YAPK;UAQL1D,UARK,UAQLA,UARK;UASLkB,iBATK,UASLA,iBATK;UAULpB,KAVK,UAULA,KAVK;mBAYoD,KAAKsC,KAZzD;UAYCG,WAZD,UAYCA,WAZD;UAYcE,KAZd,UAYcA,KAZd;UAYqBa,WAZrB,UAYqBA,WAZrB;UAYkCP,aAZlC,UAYkCA,aAZlC;;aAcL5B;iBAAA;UAAM,UAAN;qCACGwC,cAAD;iBACS9D,OAAOC,KAAP,EAAcM,SADvB;oBAEY,kBAACwD,CAAD,EAAO;sBACNA,CAAT;mBACKf,iBAAL,CAAuBe,CAAvB;WAJJ;mBAMW,KAAKvB,eANhB;gBAOO,MAPP;iBAQSkB,KART;gBASQ/B,IATR;wBAUe,KAVf;iBAWSiB,KAXT;yBAAA;sBAac;0BAERtB;4BAAA;gBAAgB,UAAS,OAAzB;2CACG,aAAD;uBACStB,OAAOC,KAAP,EAAc+D;;;;UAlBjC;uBA0BI1C,6BAAC,WAAD;4BACoBuC,YADpB;yCAEiC,KAAKlB,gBAFtC;iBAGS,CAACc,WAAD,GAAetC,KAAf,GAAuB+B,aAHhC;4BAIoB,KAAKP,gBAJzB;+BAKuB,6BAACoB,CAAD,EAAO;2BACXA,CAAf;mBACK3C,mBAAL,CAAyB2C,CAAzB;WAPJ;sBASc5D,cAAc,KAT5B;6BAUqBkB,iBAVrB;iBAWSpB;;OAtCf;;;;EA3D0B4B,eAA9B;AAAaS,SACJR,YAAY;QACXC,UAAUK,MAAV,CAAiBH,UADN;SAEVF,UAAUK,MAAV,CAAiBH,UAFP;SAGVF,UAAUG,UAAV,CAAqBC,KAArB,CAHU;YAIPJ,UAAUC,IAJH;cAKLD,UAAUkC,IALL;qBAMElC,UAAUK,MANZ;SAOVL,UAAUG,UAAV,CAAqBG,MAArB,CAPU;gBAQHN,UAAUC,IARP;kBASDD,UAAUC;;;;;;"}
{
"name": "react-elements-gu",
"version": "1.0.6",
"version": "1.0.7",
"description": "",

@@ -5,0 +5,0 @@ "author": "Rukundo eric prestein",