@zohodesk/components 1.0.0-temp-129 → 1.0.0-temp-130

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -249,7 +249,8 @@ export class MultiSelectComponent extends React.Component {
249
249
  } = this.state;
250
250
  const {
251
251
  selectedOptions,
252
- needLocalSearch
252
+ needLocalSearch,
253
+ isNeedTick
253
254
  } = this.props;
254
255
  const {
255
256
  suggestions,
@@ -258,7 +259,8 @@ export class MultiSelectComponent extends React.Component {
258
259
  options,
259
260
  selectedOptions,
260
261
  searchStr: getSearchString(searchStr),
261
- needSearch: needLocalSearch
262
+ needSearch: needLocalSearch,
263
+ isNeedTick
262
264
  });
263
265
  this.suggestionsOrder = suggestionIds;
264
266
  return suggestions;
@@ -450,7 +452,8 @@ export class MultiSelectComponent extends React.Component {
450
452
  handleSelectOption(option, value, index, e) {
451
453
  const {
452
454
  selectedOptions,
453
- isSearchClearOnSelect
455
+ isSearchClearOnSelect,
456
+ isNeedTick
454
457
  } = this.props;
455
458
  const {
456
459
  searchStr
@@ -458,7 +461,15 @@ export class MultiSelectComponent extends React.Component {
458
461
  if (searchStr.trim() != '' && isSearchClearOnSelect) {
459
462
  this.handleSearch('');
460
463
  }
461
- this.handleChange([...selectedOptions, option], e);
464
+ if (isNeedTick && selectedOptions.indexOf(option) != -1) {
465
+ let newSelectedOptions = selectedOptions.filter(id => {
466
+ return id != option;
467
+ });
468
+ this.handleChange(newSelectedOptions, e);
469
+ } else {
470
+ this.handleChange([...selectedOptions, option], e);
471
+ }
472
+
462
473
  // e && e.stopPropagation && this.handlePopupClose(e);
463
474
  }
464
475
 
@@ -1,3 +1,4 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
2
  /**** Libraries ****/
2
3
  import React from 'react';
3
4
  import { MultiSelectWithAvatar_propTypes } from './props/propTypes';
@@ -99,8 +100,13 @@ class MultiSelectWithAvatarComponent extends MultiSelectComponent {
99
100
  customChildrenClass,
100
101
  isBoxPaddingNeed,
101
102
  needEffect,
102
- isLoading
103
+ isLoading,
104
+ isNeedTick
103
105
  } = this.props;
106
+ let {
107
+ TextBoxProps = {},
108
+ SuggestionsProps = {}
109
+ } = customProps;
104
110
  const {
105
111
  clearText = 'Clear all'
106
112
  } = i18nKeys;
@@ -183,7 +189,10 @@ class MultiSelectWithAvatarComponent extends MultiSelectComponent {
183
189
  customClass: {
184
190
  customTBoxWrap: style.custmInputWrapper
185
191
  },
186
- autoComplete: false
192
+ autoComplete: false,
193
+ customProps: {
194
+ TextBoxProps: TextBoxProps
195
+ }
187
196
  }, /*#__PURE__*/React.createElement(Container, {
188
197
  isCover: false,
189
198
  alignBox: "row",
@@ -245,7 +254,8 @@ class MultiSelectWithAvatarComponent extends MultiSelectComponent {
245
254
  shrink: true,
246
255
  customClass: !tabletMode && dropBoxSize ? style[dropBoxSize] : '',
247
256
  eleRef: this.suggestionContainerRef
248
- }, suggestions.length ? /*#__PURE__*/React.createElement(Suggestions, {
257
+ }, suggestions.length ? /*#__PURE__*/React.createElement(Suggestions, _extends({
258
+ needTick: isNeedTick,
249
259
  suggestions: suggestions,
250
260
  getRef: this.suggestionItemRef,
251
261
  hoverOption: hoverOption,
@@ -256,8 +266,9 @@ class MultiSelectWithAvatarComponent extends MultiSelectComponent {
256
266
  palette: palette,
257
267
  a11y: {
258
268
  role: 'option'
259
- }
260
- }) : /*#__PURE__*/React.createElement(EmptyState, {
269
+ },
270
+ selectedOptions: this.props.selectedOptions
271
+ }, SuggestionsProps)) : /*#__PURE__*/React.createElement(EmptyState, {
261
272
  isLoading: isFetchingOptions,
262
273
  options: options,
263
274
  searchString: searchStr,
@@ -106,7 +106,8 @@ export const MultiSelect_defaultProps = {
106
106
  needEffect: true,
107
107
  boxSize: 'default',
108
108
  isLoading: false,
109
- dataSelectorId: 'multiSelect'
109
+ dataSelectorId: 'multiSelect',
110
+ isNeedTick: false
110
111
  };
111
112
  export const MultiSelectHeader_defaultProps = {
112
113
  dataId: 'MultiSelectHeader'
@@ -138,7 +139,9 @@ export const MultiSelectWithAvatar_defaultProps = {
138
139
  isSearchClearOnSelect: true,
139
140
  needEffect: true,
140
141
  isLoading: false,
141
- dataSelectorId: 'multiSelectWithAvatar'
142
+ dataSelectorId: 'multiSelectWithAvatar',
143
+ isNeedTick: false,
144
+ customProps: {}
142
145
  };
143
146
  export const SelectedOptions_defaultProps = {
144
147
  size: 'medium'
@@ -239,7 +239,8 @@ export const MultiSelect_propTypes = {
239
239
  needEffect: PropTypes.bool,
240
240
  boxSize: PropTypes.string,
241
241
  isLoading: PropTypes.bool,
242
- dataSelectorId: PropTypes.string
242
+ dataSelectorId: PropTypes.string,
243
+ isNeedTick: PropTypes.bool
243
244
  };
244
245
  export const MultiSelectHeader_propTypes = {
245
246
  dataId: PropTypes.string,
@@ -294,6 +295,11 @@ export const MultiSelectWithAvatar_propTypes = {
294
295
  htmlId: PropTypes.string,
295
296
  isBoxPaddingNeed: PropTypes.bool,
296
297
  needEffect: PropTypes.bool,
298
+ isNeedTick: PropTypes.bool,
299
+ customProps: PropTypes.shape({
300
+ SuggestionsProps: PropTypes.object,
301
+ DropBoxProps: PropTypes.object
302
+ }),
297
303
  /**** Popup props ****/
298
304
  isPopupOpen: PropTypes.bool,
299
305
  isPopupReady: PropTypes.bool,
package/es/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  // export { default as React } from 'react';
2
2
  // export { default as ReactDOM } from 'react-dom';
3
3
  // export { renderToStaticMarkup } from 'react-dom/server';
4
- export { default as Grid } from './ucl/Grid';
5
4
  export * from './Layout';
6
5
  // export { default as Layout__default } from './Layout/docs/Layout__default.docs';
7
6
  // export { default as Layout__two_Column } from './Layout/docs/Layout__two_Column.docs';
@@ -21,9 +21,10 @@ const getSelectedValue = props => getIsEmptyValue(props.selectedValue) ? '' : pr
21
21
  const getSelectedFormatOptions = props => props.selectedFormatOptions || dummyObj;
22
22
  export const getPrefixText = props => props.prefixText || '';
23
23
  const getIsStartWithSearch = props => props.isStartsWithSearch;
24
+ const getIsNeedTick = props => props.isNeedTick;
24
25
  const getDisabledOptions = props => props.disabledOptions || dummyArray;
25
26
  const getListItemProps = props => props.listItemProps || '';
26
- export const makeGetMultiSelectFilterSuggestions = () => createSelector([getOptions, getSelectedOptionsSel, getSearchStr, getNeedSearch, getIsStartWithSearch], (options, selectedOptions, searchStr, needSearch, isStartsWithSearch) => {
27
+ export const makeGetMultiSelectFilterSuggestions = () => createSelector([getOptions, getSelectedOptionsSel, getSearchStr, getNeedSearch, getIsStartWithSearch, getIsNeedTick], (options, selectedOptions, searchStr, needSearch, isStartsWithSearch, isNeedTick) => {
27
28
  const suggestions = [];
28
29
  const suggestionIds = [];
29
30
  options.forEach(option => {
@@ -34,7 +35,7 @@ export const makeGetMultiSelectFilterSuggestions = () => createSelector([getOpti
34
35
  const valueString = getSearchString(value);
35
36
  const searchString = getSearchString(searchStr);
36
37
  const isMatch = needSearch ? isStartsWithSearch ? valueString.startsWith(searchString) : valueString.indexOf(searchString) !== -1 : true;
37
- if (selectedOptions.indexOf(id) === -1 && isMatch) {
38
+ if (selectedOptions.indexOf(id) === -1 && isMatch || isNeedTick) {
38
39
  suggestions.push(option);
39
40
  suggestionIds.push(id);
40
41
  }
@@ -274,12 +274,14 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
274
274
  searchStr = _this$state3$searchSt === void 0 ? '' : _this$state3$searchSt;
275
275
  var _this$props4 = this.props,
276
276
  selectedOptions = _this$props4.selectedOptions,
277
- needLocalSearch = _this$props4.needLocalSearch;
277
+ needLocalSearch = _this$props4.needLocalSearch,
278
+ isNeedTick = _this$props4.isNeedTick;
278
279
  var _this$getFilterSugges = this.getFilterSuggestions({
279
280
  options: options,
280
281
  selectedOptions: selectedOptions,
281
282
  searchStr: (0, _Common.getSearchString)(searchStr),
282
- needSearch: needLocalSearch
283
+ needSearch: needLocalSearch,
284
+ isNeedTick: isNeedTick
283
285
  }),
284
286
  suggestions = _this$getFilterSugges.suggestions,
285
287
  suggestionIds = _this$getFilterSugges.suggestionIds;
@@ -474,12 +476,21 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
474
476
  value: function handleSelectOption(option, value, index, e) {
475
477
  var _this$props6 = this.props,
476
478
  selectedOptions = _this$props6.selectedOptions,
477
- isSearchClearOnSelect = _this$props6.isSearchClearOnSelect;
479
+ isSearchClearOnSelect = _this$props6.isSearchClearOnSelect,
480
+ isNeedTick = _this$props6.isNeedTick;
478
481
  var searchStr = this.state.searchStr;
479
482
  if (searchStr.trim() != '' && isSearchClearOnSelect) {
480
483
  this.handleSearch('');
481
484
  }
482
- this.handleChange([].concat(_toConsumableArray(selectedOptions), [option]), e);
485
+ if (isNeedTick && selectedOptions.indexOf(option) != -1) {
486
+ var newSelectedOptions = selectedOptions.filter(function (id) {
487
+ return id != option;
488
+ });
489
+ this.handleChange(newSelectedOptions, e);
490
+ } else {
491
+ this.handleChange([].concat(_toConsumableArray(selectedOptions), [option]), e);
492
+ }
493
+
483
494
  // e && e.stopPropagation && this.handlePopupClose(e);
484
495
  }
485
496
  }, {
@@ -27,6 +27,7 @@ var _MultiSelectModule = _interopRequireDefault(require("./MultiSelect.module.cs
27
27
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
28
28
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
29
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
30
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
30
31
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
31
32
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
32
33
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
@@ -119,7 +120,13 @@ var MultiSelectWithAvatarComponent = /*#__PURE__*/function (_MultiSelectComponen
119
120
  customChildrenClass = _this$props.customChildrenClass,
120
121
  isBoxPaddingNeed = _this$props.isBoxPaddingNeed,
121
122
  needEffect = _this$props.needEffect,
122
- isLoading = _this$props.isLoading;
123
+ isLoading = _this$props.isLoading,
124
+ isNeedTick = _this$props.isNeedTick;
125
+ var _customProps = customProps,
126
+ _customProps$TextBoxP = _customProps.TextBoxProps,
127
+ TextBoxProps = _customProps$TextBoxP === void 0 ? {} : _customProps$TextBoxP,
128
+ _customProps$Suggesti = _customProps.SuggestionsProps,
129
+ SuggestionsProps = _customProps$Suggesti === void 0 ? {} : _customProps$Suggesti;
123
130
  var _i18nKeys = i18nKeys,
124
131
  _i18nKeys$clearText = _i18nKeys.clearText,
125
132
  clearText = _i18nKeys$clearText === void 0 ? 'Clear all' : _i18nKeys$clearText;
@@ -199,7 +206,10 @@ var MultiSelectWithAvatarComponent = /*#__PURE__*/function (_MultiSelectComponen
199
206
  customClass: {
200
207
  customTBoxWrap: _MultiSelectModule["default"].custmInputWrapper
201
208
  },
202
- autoComplete: false
209
+ autoComplete: false,
210
+ customProps: {
211
+ TextBoxProps: TextBoxProps
212
+ }
203
213
  }, /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
204
214
  isCover: false,
205
215
  alignBox: "row",
@@ -259,7 +269,8 @@ var MultiSelectWithAvatarComponent = /*#__PURE__*/function (_MultiSelectComponen
259
269
  shrink: true,
260
270
  customClass: !tabletMode && dropBoxSize ? _MultiSelectModule["default"][dropBoxSize] : '',
261
271
  eleRef: _this2.suggestionContainerRef
262
- }, suggestions.length ? /*#__PURE__*/_react["default"].createElement(_Suggestions["default"], {
272
+ }, suggestions.length ? /*#__PURE__*/_react["default"].createElement(_Suggestions["default"], _extends({
273
+ needTick: isNeedTick,
263
274
  suggestions: suggestions,
264
275
  getRef: _this2.suggestionItemRef,
265
276
  hoverOption: hoverOption,
@@ -270,8 +281,9 @@ var MultiSelectWithAvatarComponent = /*#__PURE__*/function (_MultiSelectComponen
270
281
  palette: palette,
271
282
  a11y: {
272
283
  role: 'option'
273
- }
274
- }) : /*#__PURE__*/_react["default"].createElement(_EmptyState["default"], {
284
+ },
285
+ selectedOptions: _this2.props.selectedOptions
286
+ }, SuggestionsProps)) : /*#__PURE__*/_react["default"].createElement(_EmptyState["default"], {
275
287
  isLoading: isFetchingOptions,
276
288
  options: options,
277
289
  searchString: searchStr,
@@ -115,7 +115,8 @@ var MultiSelect_defaultProps = {
115
115
  needEffect: true,
116
116
  boxSize: 'default',
117
117
  isLoading: false,
118
- dataSelectorId: 'multiSelect'
118
+ dataSelectorId: 'multiSelect',
119
+ isNeedTick: false
119
120
  };
120
121
  exports.MultiSelect_defaultProps = MultiSelect_defaultProps;
121
122
  var MultiSelectHeader_defaultProps = {
@@ -149,7 +150,9 @@ var MultiSelectWithAvatar_defaultProps = {
149
150
  isSearchClearOnSelect: true,
150
151
  needEffect: true,
151
152
  isLoading: false,
152
- dataSelectorId: 'multiSelectWithAvatar'
153
+ dataSelectorId: 'multiSelectWithAvatar',
154
+ isNeedTick: false,
155
+ customProps: {}
153
156
  };
154
157
  exports.MultiSelectWithAvatar_defaultProps = MultiSelectWithAvatar_defaultProps;
155
158
  var SelectedOptions_defaultProps = {
@@ -249,7 +249,8 @@ var MultiSelect_propTypes = {
249
249
  needEffect: _propTypes["default"].bool,
250
250
  boxSize: _propTypes["default"].string,
251
251
  isLoading: _propTypes["default"].bool,
252
- dataSelectorId: _propTypes["default"].string
252
+ dataSelectorId: _propTypes["default"].string,
253
+ isNeedTick: _propTypes["default"].bool
253
254
  };
254
255
  exports.MultiSelect_propTypes = MultiSelect_propTypes;
255
256
  var MultiSelectHeader_propTypes = {
@@ -306,6 +307,11 @@ var MultiSelectWithAvatar_propTypes = {
306
307
  htmlId: _propTypes["default"].string,
307
308
  isBoxPaddingNeed: _propTypes["default"].bool,
308
309
  needEffect: _propTypes["default"].bool,
310
+ isNeedTick: _propTypes["default"].bool,
311
+ customProps: _propTypes["default"].shape({
312
+ SuggestionsProps: _propTypes["default"].object,
313
+ DropBoxProps: _propTypes["default"].object
314
+ }),
309
315
  /**** Popup props ****/
310
316
  isPopupOpen: _propTypes["default"].bool,
311
317
  isPopupReady: _propTypes["default"].bool,
package/lib/index.js CHANGED
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  var _exportNames = {
7
- Grid: true,
8
7
  AppContainer: true,
9
8
  Accordion: true,
10
9
  Animation: true,
@@ -135,12 +134,6 @@ Object.defineProperty(exports, "DropDownHeading", {
135
134
  return _DropDownHeading["default"];
136
135
  }
137
136
  });
138
- Object.defineProperty(exports, "Grid", {
139
- enumerable: true,
140
- get: function get() {
141
- return _Grid["default"];
142
- }
143
- });
144
137
  Object.defineProperty(exports, "GroupSelect", {
145
138
  enumerable: true,
146
139
  get: function get() {
@@ -327,7 +320,6 @@ Object.defineProperty(exports, "VelocityAnimationGroup", {
327
320
  return _VelocityAnimationGroup["default"];
328
321
  }
329
322
  });
330
- var _Grid = _interopRequireDefault(require("./ucl/Grid"));
331
323
  var _Layout = require("./Layout");
332
324
  Object.keys(_Layout).forEach(function (key) {
333
325
  if (key === "default" || key === "__esModule") return;
@@ -84,6 +84,9 @@ exports.getPrefixText = getPrefixText;
84
84
  var getIsStartWithSearch = function getIsStartWithSearch(props) {
85
85
  return props.isStartsWithSearch;
86
86
  };
87
+ var getIsNeedTick = function getIsNeedTick(props) {
88
+ return props.isNeedTick;
89
+ };
87
90
  var getDisabledOptions = function getDisabledOptions(props) {
88
91
  return props.disabledOptions || dummyArray;
89
92
  };
@@ -91,7 +94,7 @@ var getListItemProps = function getListItemProps(props) {
91
94
  return props.listItemProps || '';
92
95
  };
93
96
  var makeGetMultiSelectFilterSuggestions = function makeGetMultiSelectFilterSuggestions() {
94
- return (0, _reselect.createSelector)([getOptions, getSelectedOptionsSel, getSearchStr, getNeedSearch, getIsStartWithSearch], function (options, selectedOptions, searchStr, needSearch, isStartsWithSearch) {
97
+ return (0, _reselect.createSelector)([getOptions, getSelectedOptionsSel, getSearchStr, getNeedSearch, getIsStartWithSearch, getIsNeedTick], function (options, selectedOptions, searchStr, needSearch, isStartsWithSearch, isNeedTick) {
95
98
  var suggestions = [];
96
99
  var suggestionIds = [];
97
100
  options.forEach(function (option) {
@@ -101,7 +104,7 @@ var makeGetMultiSelectFilterSuggestions = function makeGetMultiSelectFilterSugge
101
104
  var valueString = (0, _Common.getSearchString)(value);
102
105
  var searchString = (0, _Common.getSearchString)(searchStr);
103
106
  var isMatch = needSearch ? isStartsWithSearch ? valueString.startsWith(searchString) : valueString.indexOf(searchString) !== -1 : true;
104
- if (selectedOptions.indexOf(id) === -1 && isMatch) {
107
+ if (selectedOptions.indexOf(id) === -1 && isMatch || isNeedTick) {
105
108
  suggestions.push(option);
106
109
  suggestionIds.push(id);
107
110
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zohodesk/components",
3
- "version": "1.0.0-temp-129",
3
+ "version": "1.0.0-temp-130",
4
4
  "main": "es/index.js",
5
5
  "module": "es/index.js",
6
6
  "private": false,
@@ -56,8 +56,6 @@
56
56
  "@zohodesk/a11y": "1.3.7"
57
57
  },
58
58
  "dependencies": {
59
- "@zohodesk/hooks": "^1.3.8",
60
- "@zohodesk/theme": "^1.3.2",
61
59
  "hoist-non-react-statics": "3.0.1",
62
60
  "react-transition-group": "2.5.0",
63
61
  "reselect": "4.0.0",
@@ -1,42 +0,0 @@
1
- import React from 'react';
2
- import useMergeStyle from '@zohodesk/hooks/es/utils/useMergeStyle';
3
- import defaultProps from './props/defaultProps';
4
- import propTypes from './props/propTypes';
5
- import constantProps from './props/propConstants';
6
- import cssJSLogic from './css/cssJSLogic';
7
- import style from './css/Grid.module.css';
8
- const additionStyle = ['base'];
9
- const Grid = /*#__PURE__*/React.forwardRef((props, ref) => {
10
- let {
11
- tagName,
12
- customStyle,
13
- customId,
14
- tagAttributes,
15
- tagGeneralAttributes,
16
- children,
17
- a11y
18
- } = props;
19
- // external customization - need memorize?
20
- let newStyle = useMergeStyle(style, customStyle, additionStyle);
21
- // css classname added based on logic
22
- const className = cssJSLogic(props, newStyle);
23
- return /*#__PURE__*/React.createElement(tagName, {
24
- ...tagGeneralAttributes,
25
- 'data-id': customId,
26
- className,
27
- ref,
28
- ...tagAttributes,
29
- ...a11y
30
- }, children);
31
- });
32
- Grid.displayName = 'Grid';
33
- Grid.defaultProps = defaultProps;
34
- Grid.propTypes = propTypes;
35
- Grid.constantProps = constantProps;
36
- export default Grid;
37
- Grid.docs = {
38
- componentGroup: 'Grid',
39
- folderName: 'Style Guide',
40
- description: ' ',
41
- external: false
42
- };