Merge pull request woocommerce/woocommerce-admin#496 from woocommerce/add/search-inline-tags
Search: Add inline tags
This commit is contained in:
commit
22f28bfa11
|
@ -25,5 +25,8 @@
|
||||||
"wpcalypso/import-no-redux-combine-reducers": 0,
|
"wpcalypso/import-no-redux-combine-reducers": 0,
|
||||||
"wpcalypso/jsx-classname-namespace": 0,
|
"wpcalypso/jsx-classname-namespace": 0,
|
||||||
"wpcalypso/redux-no-bound-selectors": 1,
|
"wpcalypso/redux-no-bound-selectors": 1,
|
||||||
|
"jsx-a11y/label-has-for": [ "error", {
|
||||||
|
"required": "id"
|
||||||
|
} ]
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,6 +70,7 @@ class SearchFilter extends Component {
|
||||||
placeholder={ labels.placeholder }
|
placeholder={ labels.placeholder }
|
||||||
selected={ selected }
|
selected={ selected }
|
||||||
ariaLabelledby={ `${ key }-${ instanceId }` }
|
ariaLabelledby={ `${ key }-${ instanceId }` }
|
||||||
|
inlineTags
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
|
|
|
@ -3,12 +3,28 @@ import { Search } from '@woocommerce/components';
|
||||||
|
|
||||||
const MySearch = withState( {
|
const MySearch = withState( {
|
||||||
selected: [],
|
selected: [],
|
||||||
} )( ( { selected, setState } ) => (
|
inlineSelected: [],
|
||||||
<Search
|
} )( ( { selected, inlineSelected, setState } ) => (
|
||||||
type="products"
|
<div>
|
||||||
placeholder="Search for a product"
|
<H>Tags Below Input</H>
|
||||||
selected={ selected }
|
<Section component={ false }>
|
||||||
onChange={ items => setState( { selected: items } ) }
|
<Search
|
||||||
/>
|
type="products"
|
||||||
|
placeholder="Search for a product"
|
||||||
|
selected={ selected }
|
||||||
|
onChange={ items => setState( { selected: items } ) }
|
||||||
|
/>
|
||||||
|
</Section>
|
||||||
|
<H>Tags Inline with Input</H>
|
||||||
|
<Section component={ false }>
|
||||||
|
<Search
|
||||||
|
type="products"
|
||||||
|
placeholder="Search for a product"
|
||||||
|
selected={ inlineSelected }
|
||||||
|
onChange={ items => setState( { inlineSelected: items } ) }
|
||||||
|
inlineTags
|
||||||
|
/>
|
||||||
|
</Section>
|
||||||
|
</div>
|
||||||
) );
|
) );
|
||||||
```
|
```
|
||||||
|
|
|
@ -3,10 +3,12 @@
|
||||||
* External dependencies
|
* External dependencies
|
||||||
*/
|
*/
|
||||||
import { __, sprintf } from '@wordpress/i18n';
|
import { __, sprintf } from '@wordpress/i18n';
|
||||||
import { Component } from '@wordpress/element';
|
import { Component, createRef } from '@wordpress/element';
|
||||||
|
import { withInstanceId } from '@wordpress/compose';
|
||||||
import { findIndex, noop } from 'lodash';
|
import { findIndex, noop } from 'lodash';
|
||||||
import Gridicon from 'gridicons';
|
import Gridicon from 'gridicons';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
import classnames from 'classnames';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
|
@ -25,11 +27,16 @@ class Search extends Component {
|
||||||
super( props );
|
super( props );
|
||||||
this.state = {
|
this.state = {
|
||||||
value: '',
|
value: '',
|
||||||
|
isActive: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.input = createRef();
|
||||||
|
|
||||||
this.selectResult = this.selectResult.bind( this );
|
this.selectResult = this.selectResult.bind( this );
|
||||||
this.removeResult = this.removeResult.bind( this );
|
this.removeResult = this.removeResult.bind( this );
|
||||||
this.updateSearch = this.updateSearch.bind( this );
|
this.updateSearch = this.updateSearch.bind( this );
|
||||||
|
this.onFocus = this.onFocus.bind( this );
|
||||||
|
this.onBlur = this.onBlur.bind( this );
|
||||||
}
|
}
|
||||||
|
|
||||||
selectResult( value ) {
|
selectResult( value ) {
|
||||||
|
@ -71,10 +78,44 @@ class Search extends Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
renderTags() {
|
||||||
|
const { selected } = this.props;
|
||||||
|
return selected.length ? (
|
||||||
|
<div className="woocommerce-search__token-list">
|
||||||
|
{ selected.map( ( item, i ) => {
|
||||||
|
const screenReaderLabel = sprintf(
|
||||||
|
__( '%1$s (%2$s of %3$s)', 'wc-admin' ),
|
||||||
|
item.label,
|
||||||
|
i + 1,
|
||||||
|
selected.length
|
||||||
|
);
|
||||||
|
return (
|
||||||
|
<Tag
|
||||||
|
key={ item.id }
|
||||||
|
id={ item.id }
|
||||||
|
label={ item.label }
|
||||||
|
remove={ this.removeResult }
|
||||||
|
removeLabel={ __( 'Remove product', 'wc-admin' ) }
|
||||||
|
screenReaderLabel={ screenReaderLabel }
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
} ) }
|
||||||
|
</div>
|
||||||
|
) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
onFocus() {
|
||||||
|
this.setState( { isActive: true } );
|
||||||
|
}
|
||||||
|
|
||||||
|
onBlur() {
|
||||||
|
this.setState( { isActive: false } );
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const autocompleter = this.getAutocompleter();
|
const autocompleter = this.getAutocompleter();
|
||||||
const { placeholder, selected } = this.props;
|
const { placeholder, inlineTags, selected, instanceId } = this.props;
|
||||||
const { value = '' } = this.state;
|
const { value = '', isActive } = this.state;
|
||||||
const aria = {
|
const aria = {
|
||||||
'aria-labelledby': this.props[ 'aria-labelledby' ],
|
'aria-labelledby': this.props[ 'aria-labelledby' ],
|
||||||
'aria-label': this.props[ 'aria-label' ],
|
'aria-label': this.props[ 'aria-label' ],
|
||||||
|
@ -83,43 +124,65 @@ class Search extends Component {
|
||||||
<div className="woocommerce-search">
|
<div className="woocommerce-search">
|
||||||
<Gridicon className="woocommerce-search__icon" icon="search" size={ 18 } />
|
<Gridicon className="woocommerce-search__icon" icon="search" size={ 18 } />
|
||||||
<Autocomplete completer={ autocompleter } onSelect={ this.selectResult }>
|
<Autocomplete completer={ autocompleter } onSelect={ this.selectResult }>
|
||||||
{ ( { listBoxId, activeId, onChange } ) => (
|
{ ( { listBoxId, activeId, onChange } ) =>
|
||||||
<input
|
// Disable reason: The div below visually simulates an input field. Its
|
||||||
type="search"
|
// child input is the actual input and responds accordingly to all keyboard
|
||||||
value={ value }
|
// events, but click events need to be passed onto the child input. There
|
||||||
placeholder={ placeholder }
|
// is no appropriate aria role for describing this situation, which is only
|
||||||
className="woocommerce-search__input"
|
// for the benefit of sighted users.
|
||||||
onChange={ this.updateSearch( onChange ) }
|
/* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */
|
||||||
aria-owns={ listBoxId }
|
inlineTags ? (
|
||||||
aria-activedescendant={ activeId }
|
<div
|
||||||
{ ...aria }
|
className={ classnames( 'woocommerce-search__inline-container', {
|
||||||
/>
|
'is-active': isActive,
|
||||||
) }
|
} ) }
|
||||||
</Autocomplete>
|
onClick={ () => {
|
||||||
{ selected.length ? (
|
this.input.current.focus();
|
||||||
<div className="woocommerce-search__token-list">
|
} }
|
||||||
{ selected.map( ( item, i ) => {
|
>
|
||||||
const screenReaderLabel = sprintf(
|
{ this.renderTags() }
|
||||||
__( '%1$s (%2$s of %3$s)', 'wc-admin' ),
|
<input
|
||||||
item.label,
|
ref={ this.input }
|
||||||
i,
|
type="text"
|
||||||
selected.length
|
size={
|
||||||
);
|
( ( value.length === 0 && placeholder && placeholder.length ) ||
|
||||||
return (
|
value.length ) + 1
|
||||||
<Tag
|
}
|
||||||
key={ item.id }
|
value={ value }
|
||||||
id={ item.id }
|
placeholder={ ( selected.length === 0 && placeholder ) || '' }
|
||||||
label={ item.label }
|
className="woocommerce-search__inline-input"
|
||||||
remove={ this.removeResult }
|
onChange={ this.updateSearch( onChange ) }
|
||||||
removeLabel={ __( 'Remove product', 'wc-admin' ) }
|
aria-owns={ listBoxId }
|
||||||
screenReaderLabel={ screenReaderLabel }
|
aria-activedescendant={ activeId }
|
||||||
|
onFocus={ this.onFocus }
|
||||||
|
onBlur={ this.onBlur }
|
||||||
|
aria-describedby={
|
||||||
|
selected.length ? `search-inline-input-${ instanceId }` : null
|
||||||
|
}
|
||||||
|
{ ...aria }
|
||||||
/>
|
/>
|
||||||
);
|
<span id={ `search-inline-input-${ instanceId }` } className="screen-reader-text">
|
||||||
} ) }
|
{ __( 'Move backward for selected items' ) }
|
||||||
</div>
|
</span>
|
||||||
) : null }
|
</div>
|
||||||
|
) : (
|
||||||
|
<input
|
||||||
|
type="search"
|
||||||
|
value={ value }
|
||||||
|
placeholder={ placeholder }
|
||||||
|
className="woocommerce-search__input"
|
||||||
|
onChange={ this.updateSearch( onChange ) }
|
||||||
|
aria-owns={ listBoxId }
|
||||||
|
aria-activedescendant={ activeId }
|
||||||
|
{ ...aria }
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</Autocomplete>
|
||||||
|
{ ! inlineTags && this.renderTags() }
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
/* eslint-enable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,11 +209,16 @@ Search.propTypes = {
|
||||||
label: PropTypes.string.isRequired,
|
label: PropTypes.string.isRequired,
|
||||||
} )
|
} )
|
||||||
),
|
),
|
||||||
|
/**
|
||||||
|
* Render tags inside input, otherwise render below input
|
||||||
|
*/
|
||||||
|
inlineTags: PropTypes.bool,
|
||||||
};
|
};
|
||||||
|
|
||||||
Search.defaultProps = {
|
Search.defaultProps = {
|
||||||
onChange: noop,
|
onChange: noop,
|
||||||
selected: [],
|
selected: [],
|
||||||
|
inlineTags: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default Search;
|
export default withInstanceId( Search );
|
||||||
|
|
|
@ -10,6 +10,30 @@
|
||||||
fill: $core-grey-light-900;
|
fill: $core-grey-light-900;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.woocommerce-search__inline-container {
|
||||||
|
width: 100%;
|
||||||
|
padding: 2px 2px 2px 36px;
|
||||||
|
border: 1px solid $core-grey-light-700;
|
||||||
|
background-color: $white;
|
||||||
|
|
||||||
|
&.is-active {
|
||||||
|
border-color: $input-active-border;
|
||||||
|
box-shadow: inset 0 0 0 $input-active-inner, 0 0 1px 2px $input-active-outer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.woocommerce-search__token-list {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.woocommerce-search__inline-input,
|
||||||
|
.woocommerce-search__inline-input:focus {
|
||||||
|
border: none;
|
||||||
|
outline: none;
|
||||||
|
box-shadow: none;
|
||||||
|
padding: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
.woocommerce-search__input {
|
.woocommerce-search__input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: $gap-smaller $gap-small $gap-smaller 36px;
|
padding: $gap-smaller $gap-small $gap-smaller 36px;
|
||||||
|
|
|
@ -48,6 +48,9 @@ $woocommerce: $woocommerce-500;
|
||||||
$button-hover: #fafafa;
|
$button-hover: #fafafa;
|
||||||
$button-focus-inner: #00435d;
|
$button-focus-inner: #00435d;
|
||||||
$button-focus-outer: #bfe7f3;
|
$button-focus-outer: #bfe7f3;
|
||||||
|
$input-active-border: #00a0d2;
|
||||||
|
$input-active-inner: $button-focus-inner;
|
||||||
|
$input-active-outer: $button-focus-outer;
|
||||||
|
|
||||||
// wp-admin
|
// wp-admin
|
||||||
$wp-admin-background: #f1f1f1;
|
$wp-admin-background: #f1f1f1;
|
||||||
|
|
|
@ -20,6 +20,13 @@ An array of data.
|
||||||
|
|
||||||
Format to parse dates into d3 time format
|
Format to parse dates into d3 time format
|
||||||
|
|
||||||
|
### `pointLabelFormat`
|
||||||
|
|
||||||
|
- Type: String
|
||||||
|
- Default: null
|
||||||
|
|
||||||
|
Date format of the point labels (might be used in tooltips and ARIA properties).
|
||||||
|
|
||||||
### `tooltipFormat`
|
### `tooltipFormat`
|
||||||
|
|
||||||
- Type: String
|
- Type: String
|
||||||
|
@ -64,6 +71,14 @@ A number formatting string, passed to d3Format.
|
||||||
`standard` (default) legend layout in the header or `comparison` moves legend layout
|
`standard` (default) legend layout in the header or `comparison` moves legend layout
|
||||||
to the left or 'compact' has the legend below
|
to the left or 'compact' has the legend below
|
||||||
|
|
||||||
|
### `mode`
|
||||||
|
|
||||||
|
- Type: One of: 'item-comparison', 'time-comparison'
|
||||||
|
- Default: `'item-comparison'`
|
||||||
|
|
||||||
|
`item-comparison` (default) or `time-comparison`, this is used to generate correct
|
||||||
|
ARIA properties.
|
||||||
|
|
||||||
### `title`
|
### `title`
|
||||||
|
|
||||||
- Type: String
|
- Type: String
|
||||||
|
@ -157,6 +172,13 @@ Interval specification (hourly, daily, weekly etc.)
|
||||||
`standard` (default) legend layout in the header or `comparison` moves legend layout
|
`standard` (default) legend layout in the header or `comparison` moves legend layout
|
||||||
to the left or 'compact' has the legend below
|
to the left or 'compact' has the legend below
|
||||||
|
|
||||||
|
### `pointLabelFormat`
|
||||||
|
|
||||||
|
- Type: String
|
||||||
|
- Default: null
|
||||||
|
|
||||||
|
Date format of the point labels (might be used in tooltips and ARIA properties).
|
||||||
|
|
||||||
### `margin`
|
### `margin`
|
||||||
|
|
||||||
- Type: Object
|
- Type: Object
|
||||||
|
@ -173,6 +195,14 @@ to the left or 'compact' has the legend below
|
||||||
|
|
||||||
Margins for axis and chart padding.
|
Margins for axis and chart padding.
|
||||||
|
|
||||||
|
### `mode`
|
||||||
|
|
||||||
|
- Type: One of: 'item-comparison', 'time-comparison'
|
||||||
|
- Default: `'item-comparison'`
|
||||||
|
|
||||||
|
`items-comparison` (default) or `time-comparison`, this is used to generate correct
|
||||||
|
ARIA properties.
|
||||||
|
|
||||||
### `orderedKeys`
|
### `orderedKeys`
|
||||||
|
|
||||||
- Type: Array
|
- Type: Array
|
||||||
|
|
|
@ -85,6 +85,63 @@ The `path` parameter supplied by React-Router.
|
||||||
|
|
||||||
The query string represented in object form.
|
The query string represented in object form.
|
||||||
|
|
||||||
|
`CompareFilter` (component)
|
||||||
|
===========================
|
||||||
|
|
||||||
|
Displays a card + search used to filter results as a comparison between objects.
|
||||||
|
|
||||||
|
Props
|
||||||
|
-----
|
||||||
|
|
||||||
|
### `getLabels`
|
||||||
|
|
||||||
|
- **Required**
|
||||||
|
- Type: Function
|
||||||
|
- Default: null
|
||||||
|
|
||||||
|
Function used to fetch object labels via an API request, returns a Promise.
|
||||||
|
|
||||||
|
### `labels`
|
||||||
|
|
||||||
|
- Type: Object
|
||||||
|
- placeholder: String - Label for the search placeholder.
|
||||||
|
- title: String - Label for the card title.
|
||||||
|
- update: String - Label for button which updates the URL/report.
|
||||||
|
- Default: `{}`
|
||||||
|
|
||||||
|
Object of localized labels.
|
||||||
|
|
||||||
|
### `param`
|
||||||
|
|
||||||
|
- **Required**
|
||||||
|
- Type: String
|
||||||
|
- Default: null
|
||||||
|
|
||||||
|
The parameter to use in the querystring.
|
||||||
|
|
||||||
|
### `path`
|
||||||
|
|
||||||
|
- **Required**
|
||||||
|
- Type: String
|
||||||
|
- Default: null
|
||||||
|
|
||||||
|
The `path` parameter supplied by React-Router
|
||||||
|
|
||||||
|
### `query`
|
||||||
|
|
||||||
|
- Type: Object
|
||||||
|
- Default: `{}`
|
||||||
|
|
||||||
|
The query string represented in object form
|
||||||
|
|
||||||
|
### `type`
|
||||||
|
|
||||||
|
- **Required**
|
||||||
|
- Type: String
|
||||||
|
- Default: null
|
||||||
|
|
||||||
|
Which type of autocompleter should be used in the Search
|
||||||
|
|
||||||
`DatePicker` (component)
|
`DatePicker` (component)
|
||||||
========================
|
========================
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ Function called when selected results change, passed result list.
|
||||||
### `type`
|
### `type`
|
||||||
|
|
||||||
- **Required**
|
- **Required**
|
||||||
- Type: One of: 'products', 'product_cats', 'orders', 'customers'
|
- Type: One of: 'products', 'product_cats', 'orders', 'customers', 'coupons'
|
||||||
- Default: null
|
- Default: null
|
||||||
|
|
||||||
The object type to be used in searching.
|
The object type to be used in searching.
|
||||||
|
@ -38,3 +38,10 @@ A placeholder for the search input.
|
||||||
|
|
||||||
An array of objects describing selected values.
|
An array of objects describing selected values.
|
||||||
|
|
||||||
|
### `inlineTags`
|
||||||
|
|
||||||
|
- Type: Boolean
|
||||||
|
- Default: `false`
|
||||||
|
|
||||||
|
Render tags inside input, otherwise render below input
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,17 @@ The string to use as a query parameter when comparing row items.
|
||||||
|
|
||||||
An array of column headers (see `Table` props).
|
An array of column headers (see `Table` props).
|
||||||
|
|
||||||
|
### `labels`
|
||||||
|
|
||||||
|
- Type: Object
|
||||||
|
- compareButton: String
|
||||||
|
- downloadButton: String
|
||||||
|
- helpText: String
|
||||||
|
- placeholder: String
|
||||||
|
- Default: null
|
||||||
|
|
||||||
|
Custom labels for table header actions.
|
||||||
|
|
||||||
### `ids`
|
### `ids`
|
||||||
|
|
||||||
- Type: Array
|
- Type: Array
|
||||||
|
@ -118,6 +129,13 @@ The total number of rows (across all pages).
|
||||||
Props
|
Props
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
### `query`
|
||||||
|
|
||||||
|
- Type: Object
|
||||||
|
- Default: null
|
||||||
|
|
||||||
|
An object of the query parameters passed to the page, ex `{ page: 2, per_page: 5 }`.
|
||||||
|
|
||||||
### `caption`
|
### `caption`
|
||||||
|
|
||||||
- **Required**
|
- **Required**
|
||||||
|
|
|
@ -2563,7 +2563,7 @@
|
||||||
},
|
},
|
||||||
"babel-plugin-syntax-class-properties": {
|
"babel-plugin-syntax-class-properties": {
|
||||||
"version": "6.13.0",
|
"version": "6.13.0",
|
||||||
"resolved": "http://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz",
|
||||||
"integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=",
|
"integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
@ -2975,7 +2975,7 @@
|
||||||
},
|
},
|
||||||
"browserify-aes": {
|
"browserify-aes": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
|
||||||
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
|
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -3012,7 +3012,7 @@
|
||||||
},
|
},
|
||||||
"browserify-rsa": {
|
"browserify-rsa": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
"resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
|
||||||
"integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
|
"integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -3098,7 +3098,7 @@
|
||||||
},
|
},
|
||||||
"buffer": {
|
"buffer": {
|
||||||
"version": "4.9.1",
|
"version": "4.9.1",
|
||||||
"resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
|
||||||
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
|
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -3834,7 +3834,7 @@
|
||||||
},
|
},
|
||||||
"create-hash": {
|
"create-hash": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
|
||||||
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
|
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -3847,7 +3847,7 @@
|
||||||
},
|
},
|
||||||
"create-hmac": {
|
"create-hmac": {
|
||||||
"version": "1.1.7",
|
"version": "1.1.7",
|
||||||
"resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
|
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
|
||||||
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
|
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -4514,7 +4514,7 @@
|
||||||
},
|
},
|
||||||
"diffie-hellman": {
|
"diffie-hellman": {
|
||||||
"version": "5.0.3",
|
"version": "5.0.3",
|
||||||
"resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
|
||||||
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
|
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -4614,7 +4614,7 @@
|
||||||
},
|
},
|
||||||
"os-locale": {
|
"os-locale": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
|
||||||
"integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
|
"integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -5651,7 +5651,7 @@
|
||||||
},
|
},
|
||||||
"external-editor": {
|
"external-editor": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
|
||||||
"integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
|
"integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -7330,7 +7330,7 @@
|
||||||
},
|
},
|
||||||
"http-errors": {
|
"http-errors": {
|
||||||
"version": "1.6.3",
|
"version": "1.6.3",
|
||||||
"resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
|
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
|
||||||
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
|
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -7895,7 +7895,7 @@
|
||||||
},
|
},
|
||||||
"is-obj": {
|
"is-obj": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
|
||||||
"integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
|
"integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
@ -9908,7 +9908,7 @@
|
||||||
},
|
},
|
||||||
"jsonfile": {
|
"jsonfile": {
|
||||||
"version": "2.4.0",
|
"version": "2.4.0",
|
||||||
"resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
|
||||||
"integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
|
"integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -11055,7 +11055,7 @@
|
||||||
},
|
},
|
||||||
"chalk": {
|
"chalk": {
|
||||||
"version": "1.1.3",
|
"version": "1.1.3",
|
||||||
"resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
||||||
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -11111,7 +11111,7 @@
|
||||||
},
|
},
|
||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
@ -11535,7 +11535,7 @@
|
||||||
},
|
},
|
||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
@ -11749,7 +11749,7 @@
|
||||||
},
|
},
|
||||||
"parse-asn1": {
|
"parse-asn1": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
|
||||||
"integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
|
"integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -12679,7 +12679,7 @@
|
||||||
},
|
},
|
||||||
"public-encrypt": {
|
"public-encrypt": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "http://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
|
||||||
"integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==",
|
"integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -12836,7 +12836,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
|
@ -13840,7 +13840,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
|
@ -13875,7 +13875,7 @@
|
||||||
},
|
},
|
||||||
"os-locale": {
|
"os-locale": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
|
||||||
"integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
|
"integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -14156,7 +14156,7 @@
|
||||||
},
|
},
|
||||||
"sha.js": {
|
"sha.js": {
|
||||||
"version": "2.4.11",
|
"version": "2.4.11",
|
||||||
"resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
|
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
|
||||||
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
|
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -15611,7 +15611,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue