@zohodesk/dot 1.0.0-beta.270 → 1.0.0-beta.271

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.
package/README.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  In this Library, we Provide Some Basic Components to Build Your Application
4
4
 
5
+ # 1.0.0-beta.271
6
+
7
+ - **Drawer, Lookup** - `focusScopeProps` will be served by `customProps` from now.
8
+
9
+ - **ToggleDropDown** - `FocusScope` navigation has been implemented.
10
+
5
11
  # 1.0.0-beta.270
6
12
 
7
13
  - **StatusListItem** - TickIcon Vertical position Ui issue fixed
@@ -150,8 +150,19 @@ export default class Drawer extends React.Component {
150
150
  subDrawerChildren,
151
151
  onBodyClick,
152
152
  onClose,
153
- needFocusScope
153
+ needFocusScope,
154
+ customProps
154
155
  } = this.props;
156
+ const {
157
+ focusScopeProps = {}
158
+ } = customProps;
159
+ const {
160
+ autoFocus = true,
161
+ restoreFocus = true,
162
+ needArrowLoop = false,
163
+ needTabLoop = true,
164
+ enableEnterAction = false
165
+ } = focusScopeProps;
155
166
  let childrenWithProps = React.Children.map(children, child => {
156
167
  if (child.type === Header || child.type === Footer || child.type === Content) {
157
168
  let {
@@ -166,7 +177,7 @@ export default class Drawer extends React.Component {
166
177
  });
167
178
  let content = /*#__PURE__*/React.createElement(Box, {
168
179
  className: `${style.container} ${style.columns} ${style.drawerModal} ${uptoTablet ? style.mbleSize : style[size]}`,
169
- "data-a11y-container-focus": false,
180
+ "data-a11y-need-focus-style": "false",
170
181
  tabindex: -1,
171
182
  eleRef: this.createRef
172
183
  }, /*#__PURE__*/React.createElement(Card, {
@@ -189,10 +200,12 @@ export default class Drawer extends React.Component {
189
200
  flexible: true
190
201
  }, subDrawerChildren))))) : null, needFocusScope ? /*#__PURE__*/React.createElement(FocusScope, {
191
202
  elementRef: this.createRef,
192
- autoFocus: true,
193
- focusTabLoop: true,
194
- restoreFocus: true,
195
- focusClose: onClose
203
+ autoFocus: autoFocus,
204
+ needTabLoop: needTabLoop,
205
+ restoreFocus: restoreFocus,
206
+ needArrowLoop: needArrowLoop,
207
+ onClose: onClose,
208
+ enableEnterAction: enableEnterAction
196
209
  }, content) : content);
197
210
  }
198
211
 
@@ -17,5 +17,6 @@ export const Drawer_defaultProps = {
17
17
  customClass: '',
18
18
  needAutoZindex: true,
19
19
  onBodyClick: () => {},
20
- needFocusScope: false
20
+ needFocusScope: false,
21
+ customProps: {}
21
22
  };
@@ -46,5 +46,6 @@ export const Drawer_propTypes = {
46
46
  subDrawerChildren: PropTypes.func,
47
47
  subDrawerClass: PropTypes.string,
48
48
  subDrawerSize: PropTypes.oneOf(['xsmall', 'small', 'medium']),
49
- needFocusScope: PropTypes.bool
49
+ needFocusScope: PropTypes.bool,
50
+ customProps: PropTypes.object
50
51
  };
@@ -26,13 +26,13 @@ export class ToggleDropDown extends Component {
26
26
  super(props);
27
27
  this.state = {
28
28
  searchValue: '',
29
- selectedIndex: -1,
29
+ // selectedIndex: -1,
30
30
  options: props.options,
31
31
  isFetchingOptions: false
32
32
  };
33
33
  this._isMounted = false;
34
- this.handleChange = this.handleChange.bind(this);
35
- this.handleKeyDown = this.handleKeyDown.bind(this);
34
+ this.handleChange = this.handleChange.bind(this); // this.handleKeyDown = this.handleKeyDown.bind(this);
35
+
36
36
  this.onSelect = this.onSelect.bind(this);
37
37
  this.handleTogglePopup = this.handleTogglePopup.bind(this);
38
38
  this.showTogglePopup = this.showTogglePopup.bind(this);
@@ -40,16 +40,16 @@ export class ToggleDropDown extends Component {
40
40
  this.onSearchAPI = this.onSearchAPI.bind(this);
41
41
  this.onSearchClear = this.onSearchClear.bind(this);
42
42
  this.handleFilterSuggestions = this.handleFilterSuggestions.bind(this);
43
- this.scrollContentRef = this.scrollContentRef.bind(this);
44
- this.handleMouseEnter = this.handleMouseEnter.bind(this);
43
+ this.scrollContentRef = this.scrollContentRef.bind(this); // this.handleMouseEnter = this.handleMouseEnter.bind(this);
44
+
45
45
  this.searchInputRef = this.searchInputRef.bind(this);
46
- this.itemRef = this.itemRef.bind(this);
47
- this.inputRef = this.inputRef.bind(this);
48
- this.handleScroll = this.handleScroll.bind(this);
49
- this.getOptionsArray = this.getOptionsArray.bind(this);
46
+ this.itemRef = this.itemRef.bind(this); // this.inputRef = this.inputRef.bind(this);
47
+
48
+ this.handleScroll = this.handleScroll.bind(this); // this.getOptionsArray = this.getOptionsArray.bind(this);
49
+
50
50
  this.emptySearchSVG = this.emptySearchSVG.bind(this);
51
- this.getAriaId = getUniqueId(this);
52
- this.getSelectedIndex = this.getSelectedIndex.bind(this);
51
+ this.getAriaId = getUniqueId(this); // this.getSelectedIndex = this.getSelectedIndex.bind(this);
52
+
53
53
  this.handleGetNextOptions = this.handleGetNextOptions.bind(this);
54
54
  this.handleFetchOptions = this.handleFetchOptions.bind(this);
55
55
  }
@@ -66,11 +66,10 @@ export class ToggleDropDown extends Component {
66
66
  return /*#__PURE__*/React.createElement(EmptySearch, {
67
67
  size: "small"
68
68
  });
69
- }
69
+ } // inputRef(el) {
70
+ // this.hiddenInput = el;
71
+ // }
70
72
 
71
- inputRef(el) {
72
- this.hiddenInput = el;
73
- }
74
73
 
75
74
  itemRef(ele, index, id) {
76
75
  this[`suggestion_${id}`] = ele;
@@ -156,26 +155,21 @@ export class ToggleDropDown extends Component {
156
155
  searchValue
157
156
  } = this.state;
158
157
 
159
- if (prevProps.isPopupReady !== isPopupReady) {
160
- setTimeout(() => {
161
- isPopupReady ? isSearch ? this.searchInput.focus({
162
- preventScroll: true
163
- }) : this.hiddenInput.focus({
164
- preventScroll: true
165
- }) : this.hiddenInput.focus({
166
- preventScroll: true
167
- });
168
- }, 10);
169
- }
158
+ if (prevProps.isPopupReady !== isPopupReady) {// setTimeout(() => {
159
+ // isPopupReady
160
+ // ? isSearch
161
+ // ? this.searchInput.focus({ preventScroll: true })
162
+ // : this.hiddenInput.focus({ preventScroll: true })
163
+ // : this.hiddenInput.focus({ preventScroll: true });
164
+ // }, 10);
165
+ } // const optionsArr = this.getOptionsArray();
166
+ // const option = optionsArr[selectedIndex];
167
+ // const id = (option && option[idName]) || {};
168
+ // const selSuggestion = this[`suggestion_${id}`];
169
+ // if (isPopupOpen) {
170
+ // this.optionsContainer && scrollTo(this.optionsContainer, selSuggestion);
171
+ // }
170
172
 
171
- const optionsArr = this.getOptionsArray();
172
- const option = optionsArr[selectedIndex];
173
- const id = option && option[idName] || {};
174
- const selSuggestion = this[`suggestion_${id}`];
175
-
176
- if (isPopupOpen) {
177
- this.optionsContainer && scrollTo(this.optionsContainer, selSuggestion);
178
- }
179
173
 
180
174
  if (!prevProps.isPopupOpen && isPopupOpen && searchValue.length) {
181
175
  this.onSearchClear();
@@ -207,9 +201,8 @@ export class ToggleDropDown extends Component {
207
201
  onDropDownOpen && onDropDownOpen();
208
202
  } else {
209
203
  onDropDownClose && onDropDownClose();
210
- }
204
+ } // this.getSelectedIndex(optionsArr);
211
205
 
212
- this.getSelectedIndex(optionsArr);
213
206
  }
214
207
  }
215
208
 
@@ -283,139 +276,92 @@ export class ToggleDropDown extends Component {
283
276
  }
284
277
 
285
278
  return result;
286
- }
287
-
288
- getOptionsArray() {
289
- const {
290
- searchValue
291
- } = this.state;
292
- const {
293
- isGroupDropDown,
294
- groupOptionsKey
295
- } = this.props;
296
- const options = searchValue.length ? this.handleFilterSuggestions(searchValue) : this.props.options;
297
- let optionsArr = [];
298
-
299
- if (isGroupDropDown) {
300
- for (let i = 0; i < options.length; i++) {
301
- const groupOptions = options[i][groupOptionsKey];
302
- Array.prototype.push.apply(optionsArr, groupOptions);
303
- }
304
- } else {
305
- optionsArr = options.filter(item => !item.needDivider);
306
- }
307
-
308
- return optionsArr;
309
- }
310
-
311
- handleKeyDown(e) {
312
- const {
313
- keyCode
314
- } = e;
315
- const {
316
- selectedIndex,
317
- searchValue
318
- } = this.state;
319
- const optionsArr = this.getOptionsArray();
320
- const totalIndex = optionsArr.length;
321
- const {
322
- togglePopup,
323
- onClick,
324
- boxPosition,
325
- isPopupReady,
326
- value,
327
- keyName,
328
- idName,
329
- preventPopupClose,
330
- isSearch
331
- } = this.props;
279
+ } // getOptionsArray() {
280
+ // const { searchValue } = this.state;
281
+ // const { isGroupDropDown, groupOptionsKey } = this.props;
282
+ // const options = searchValue.length ? this.handleFilterSuggestions(searchValue) : this.props.options;
283
+ // let optionsArr = [];
284
+ // if (isGroupDropDown) {
285
+ // for (let i = 0; i < options.length; i++) {
286
+ // const groupOptions = options[i][groupOptionsKey];
287
+ // Array.prototype.push.apply(optionsArr, groupOptions);
288
+ // }
289
+ // } else {
290
+ // optionsArr = options.filter((item) => !item.needDivider);
291
+ // }
292
+ // return optionsArr;
293
+ // }
294
+ // handleKeyDown(e) {
295
+ // const { keyCode } = e;
296
+ // const { selectedIndex, searchValue } = this.state;
297
+ // const optionsArr = this.getOptionsArray();
298
+ // const totalIndex = optionsArr.length;
299
+ // const { togglePopup, onClick, boxPosition, isPopupReady, value, keyName, idName, preventPopupClose, isSearch } =
300
+ // this.props;
301
+ // if (isPopupReady && (keyCode === 38 || keyCode === 40) && e.preventDefault) {
302
+ // e.preventDefault(); //prevent body scroll
303
+ // }
304
+ // if (isPopupReady) {
305
+ // switch (keyCode) {
306
+ // case 40:
307
+ // if (selectedIndex === totalIndex - 1) {
308
+ // this.setState({ selectedIndex: 0 });
309
+ // } else {
310
+ // if (selectedIndex === totalIndex - 3) {
311
+ // this.handleGetNextOptions();
312
+ // }
313
+ // this.setState({
314
+ // selectedIndex: selectedIndex + 1
315
+ // });
316
+ // }
317
+ // break;
318
+ // case 38:
319
+ // if (selectedIndex === 0) {
320
+ // this.setState({ selectedIndex: totalIndex - 1 });
321
+ // } else {
322
+ // this.setState({
323
+ // selectedIndex: selectedIndex - 1
324
+ // });
325
+ // }
326
+ // break;
327
+ // case 13: {
328
+ // const selectedId = optionsArr[selectedIndex][idName] || '';
329
+ // onClick && onClick(selectedId, optionsArr[selectedIndex]);
330
+ // if (!preventPopupClose) {
331
+ // togglePopup(e, boxPosition);
332
+ // } else if (isSearch) {
333
+ // this.searchInput.focus({ preventScroll: true });
334
+ // } else {
335
+ // this.hiddenInput.focus({ preventScroll: true });
336
+ // }
337
+ // break;
338
+ // }
339
+ // }
340
+ // } else {
341
+ // if (keyCode === 13 || keyCode === 40) {
342
+ // togglePopup(e, boxPosition);
343
+ // }
344
+ // }
345
+ // }
346
+ // getSelectedIndex(optionsArr) {
347
+ // const { selectedId, idName } = this.props;
348
+ // if (selectedId) {
349
+ // for (let i = 0; i < optionsArr.length; i++) {
350
+ // const indexId = optionsArr[i][idName];
351
+ // if (selectedId === indexId) {
352
+ // this.setState({
353
+ // selectedIndex: i
354
+ // });
355
+ // break;
356
+ // }
357
+ // }
358
+ // } else {
359
+ // this.setState({
360
+ // selectedIndex: -1
361
+ // });
362
+ // }
363
+ // }
332
364
 
333
- if (isPopupReady && (keyCode === 38 || keyCode === 40) && e.preventDefault) {
334
- e.preventDefault(); //prevent body scroll
335
- }
336
-
337
- if (isPopupReady) {
338
- switch (keyCode) {
339
- case 40:
340
- if (selectedIndex === totalIndex - 1) {
341
- this.setState({
342
- selectedIndex: 0
343
- });
344
- } else {
345
- if (selectedIndex === totalIndex - 3) {
346
- this.handleGetNextOptions();
347
- }
348
-
349
- this.setState({
350
- selectedIndex: selectedIndex + 1
351
- });
352
- }
353
-
354
- break;
355
-
356
- case 38:
357
- if (selectedIndex === 0) {
358
- this.setState({
359
- selectedIndex: totalIndex - 1
360
- });
361
- } else {
362
- this.setState({
363
- selectedIndex: selectedIndex - 1
364
- });
365
- }
366
-
367
- break;
368
-
369
- case 13:
370
- {
371
- const selectedId = optionsArr[selectedIndex][idName] || '';
372
- onClick && onClick(selectedId, optionsArr[selectedIndex]);
373
-
374
- if (!preventPopupClose) {
375
- togglePopup(e, boxPosition);
376
- } else if (isSearch) {
377
- this.searchInput.focus({
378
- preventScroll: true
379
- });
380
- } else {
381
- this.hiddenInput.focus({
382
- preventScroll: true
383
- });
384
- }
385
-
386
- break;
387
- }
388
- }
389
- } else {
390
- if (keyCode === 13 || keyCode === 40) {
391
- togglePopup(e, boxPosition);
392
- }
393
- }
394
- }
395
-
396
- getSelectedIndex(optionsArr) {
397
- const {
398
- selectedId,
399
- idName
400
- } = this.props;
401
-
402
- if (selectedId) {
403
- for (let i = 0; i < optionsArr.length; i++) {
404
- const indexId = optionsArr[i][idName];
405
-
406
- if (selectedId === indexId) {
407
- this.setState({
408
- selectedIndex: i
409
- });
410
- break;
411
- }
412
- }
413
- } else {
414
- this.setState({
415
- selectedIndex: -1
416
- });
417
- }
418
- }
419
365
 
420
366
  onSearchAPI() {
421
367
  const {
@@ -435,7 +381,7 @@ export class ToggleDropDown extends Component {
435
381
  const filteredOptions = this.handleFilterSuggestions(value);
436
382
  this.setState({
437
383
  searchValue: value,
438
- selectedIndex: -1,
384
+ // selectedIndex: -1,
439
385
  options: filteredOptions
440
386
  }, () => {
441
387
  this.onSearchAPI();
@@ -450,13 +396,12 @@ export class ToggleDropDown extends Component {
450
396
  }, () => {
451
397
  this.onSearchAPI();
452
398
  });
453
- }
399
+ } // handleMouseEnter(id, value, index, e) {
400
+ // this.setState({
401
+ // selectedIndex: index
402
+ // });
403
+ // }
454
404
 
455
- handleMouseEnter(id, value, index, e) {
456
- this.setState({
457
- selectedIndex: index
458
- });
459
- }
460
405
 
461
406
  handleScroll(e) {
462
407
  let ele = e.target;
@@ -599,8 +544,8 @@ export class ToggleDropDown extends Component {
599
544
  } = this.state;
600
545
  const commonClass = `${className ? className : ''} ${isPopupReady ? activeStyle ? activeStyle : '' : ''} ${isDisabled ? CssProvider('isDisable') : isReadOnly || !isEditable ? style.cursorDefault : !showOnHover ? `${style.cursor} ${hoverStyle ? hoverStyle : ''}` : `${hoverStyle ? hoverStyle : ''} ${style.cursorDefault}`}`;
601
546
  let listIndex = -1;
602
- const ariaTitleId = this.getAriaId();
603
- const allyOptionsArr = this.getOptionsArray();
547
+ const ariaTitleId = this.getAriaId(); // const allyOptionsArr = this.getOptionsArray();
548
+
604
549
  return /*#__PURE__*/React.createElement("div", _extends({
605
550
  className: style.wrapper,
606
551
  onMouseEnter: showOnHover && !isDisabled && !isReadOnly && isEditable ? this.showTogglePopup : undefined,
@@ -613,15 +558,7 @@ export class ToggleDropDown extends Component {
613
558
  align: "vertical",
614
559
  isCover: false,
615
560
  dataId: dataId
616
- }, /*#__PURE__*/React.createElement("div", {
617
- className: style.hiddenInput
618
- }, /*#__PURE__*/React.createElement("input", {
619
- type: "text",
620
- ref: this.inputRef,
621
- onKeyDown: this.handleKeyDown,
622
- tabIndex: "-1",
623
- className: style.hiddenInputElement
624
- })), children ? isToggleStateNeeded ? /*#__PURE__*/React.createElement(Component, _extends({}, componentProps, {
561
+ }, children ? isToggleStateNeeded ? /*#__PURE__*/React.createElement(Component, _extends({}, componentProps, {
625
562
  isActive: isPopupOpen
626
563
  })) : children : /*#__PURE__*/React.createElement(RippleEffect, {
627
564
  hoverType: hoverType,
@@ -685,21 +622,37 @@ export class ToggleDropDown extends Component {
685
622
  ariaLabelledby: !isSearch ? ariaTitleId : undefined
686
623
  },
687
624
  palette: palette,
688
- isResponsivePadding: true
689
- }, DropBoxProps), /*#__PURE__*/React.createElement(React.Fragment, null, isSearch ? /*#__PURE__*/React.createElement(Box, {
625
+ isResponsivePadding: true,
626
+ needFocusScope: true,
627
+ customProps: {
628
+ focusScopeProps: {
629
+ loadNextOptions: this.handleGetNextOptions,
630
+ searchValue: searchValue,
631
+ isFetchingOptions: isFetchingOptions
632
+ }
633
+ }
634
+ }, DropBoxProps, {
635
+ onClose: this.handleTogglePopup
636
+ }), /*#__PURE__*/React.createElement(React.Fragment, null, isSearch ? /*#__PURE__*/React.createElement(Box, {
690
637
  className: style.search
691
638
  }, /*#__PURE__*/React.createElement(TextBoxIcon, _extends({
692
639
  placeHolder: placeHolderText,
693
640
  onChange: this.handleChange,
694
641
  value: searchValue,
695
642
  onClear: this.onSearchClear,
696
- size: searchBoxSize,
697
- inputRef: this.searchInputRef,
698
- onKeyDown: this.handleKeyDown,
643
+ size: searchBoxSize // inputRef={this.searchInputRef}
644
+ ,
645
+ customProps: {
646
+ TextBoxProps: {
647
+ 'data-a11y-autofocus': true
648
+ }
649
+ } //search
650
+ // onKeyDown={this.handleKeyDown}
651
+ ,
699
652
  a11y: {
700
653
  role: 'combobox',
701
654
  ariaOwns: ariaTitleId,
702
- ariaActivedescendant: allyOptionsArr[selectedIndex] && allyOptionsArr[selectedIndex][keyName],
655
+ // ariaActivedescendant: allyOptionsArr[selectedIndex] && allyOptionsArr[selectedIndex][keyName],
703
656
  ariaAutocomplete: 'list',
704
657
  ariaHaspopup: true,
705
658
  ariaExpanded: true
@@ -724,8 +677,9 @@ export class ToggleDropDown extends Component {
724
677
  className: `${tabletMode ? style.responsivemaxHgt : style.maxHgt} ${customListBox}`,
725
678
  eleRef: this.scrollContentRef,
726
679
  onScroll: this.handleScroll,
727
- role: isSearch ? 'listbox' : undefined,
728
- "aria-labelledby": isSearch ? ariaTitleId : undefined
680
+ role: isSearch ? 'listbox' : 'menu',
681
+ "aria-labelledby": isSearch ? ariaTitleId : undefined,
682
+ "data-scroll": "true"
729
683
  }, isDataLoaded ? options && options.length != 0 ? isGroupDropDown ? /*#__PURE__*/React.createElement(React.Fragment, null, options.map(group => {
730
684
  const groupName = group[groupNameKey];
731
685
  const groupOptions = group[groupOptionsKey];
@@ -761,20 +715,21 @@ export class ToggleDropDown extends Component {
761
715
  id: item[idName],
762
716
  active: selectedId === item[idName],
763
717
  onClick: this.onSelect.bind(this, item),
764
- index: listIndex,
765
- highlight: selectedIndex === listIndex,
718
+ index: listIndex // highlight={selectedIndex === listIndex}
719
+ ,
766
720
  disableTitle: disableTitle,
767
721
  isDisabled: isDisabled,
768
722
  iconName: iconName,
769
723
  iconClass: iconClass,
770
724
  iconSize: iconSize,
771
725
  needTick: needTick,
772
- needBorder: false,
773
- onMouseEnter: this.handleMouseEnter,
726
+ needBorder: false // onMouseEnter={this.handleMouseEnter}
727
+ ,
774
728
  getRef: this.itemRef,
775
729
  title: title ? title : item[keyName],
776
730
  palette: palette,
777
731
  needMultiLineText: needMultiLineText,
732
+ autoHover: true,
778
733
  a11y: {
779
734
  role: isSearch ? 'option' : 'menuitem',
780
735
  ariaSelected: selectedId === item[idName],
@@ -789,15 +744,16 @@ export class ToggleDropDown extends Component {
789
744
  onClick: this.onSelect.bind(this, item),
790
745
  isDisabled: isDisabled,
791
746
  disableTitle: disableTitle,
792
- index: listIndex,
793
- highlight: selectedIndex === listIndex,
747
+ index: listIndex // highlight={selectedIndex === listIndex}
748
+ ,
794
749
  needTick: needTick,
795
- needBorder: false,
796
- onMouseEnter: this.handleMouseEnter,
750
+ needBorder: false // onMouseEnter={this.handleMouseEnter}
751
+ ,
797
752
  getRef: this.itemRef,
798
753
  title: title ? title : item[keyName],
799
754
  palette: palette,
800
755
  needMultiLineText: needMultiLineText,
756
+ autoHover: true,
801
757
  a11y: {
802
758
  role: isSearch ? 'option' : 'menuitem',
803
759
  ariaSelected: selectedId === item[idName],
@@ -835,19 +791,20 @@ export class ToggleDropDown extends Component {
835
791
  onClick: this.onSelect.bind(this, item),
836
792
  index: listIndex,
837
793
  disableTitle: disableTitle,
838
- isDisabled: isDisabled,
839
- highlight: selectedIndex === listIndex,
794
+ isDisabled: isDisabled // highlight={selectedIndex === listIndex}
795
+ ,
840
796
  iconName: iconName,
841
797
  iconClass: iconClass,
842
798
  iconSize: iconSize,
843
799
  needTick: needTick,
844
- needBorder: false,
845
- onMouseEnter: this.handleMouseEnter,
800
+ needBorder: false // onMouseEnter={this.handleMouseEnter}
801
+ ,
846
802
  getRef: this.itemRef,
847
803
  title: title ? title : item[keyName],
848
804
  key: listIndex,
849
805
  palette: palette,
850
806
  needMultiLineText: needMultiLineText,
807
+ autoHover: true,
851
808
  a11y: {
852
809
  role: isSearch ? 'option' : 'menuitem',
853
810
  ariaSelected: selectedId === item[idName],
@@ -862,15 +819,16 @@ export class ToggleDropDown extends Component {
862
819
  isDisabled: isDisabled,
863
820
  active: selectedId === item[idName],
864
821
  onClick: this.onSelect.bind(this, item),
865
- index: listIndex,
866
- highlight: selectedIndex === listIndex,
822
+ index: listIndex // highlight={selectedIndex === listIndex}
823
+ ,
867
824
  needTick: needTick,
868
- needBorder: false,
869
- onMouseEnter: this.handleMouseEnter,
825
+ needBorder: false // onMouseEnter={this.handleMouseEnter}
826
+ ,
870
827
  getRef: this.itemRef,
871
828
  title: title ? title : item[keyName],
872
829
  palette: palette,
873
830
  needMultiLineText: needMultiLineText,
831
+ autoHover: true,
874
832
  a11y: {
875
833
  role: isSearch ? 'option' : 'menuitem',
876
834
  ariaSelected: selectedId === item[idName],
@@ -45,7 +45,7 @@ export default class ListLayout extends Component {
45
45
  "data-title": dataTitle,
46
46
  tabIndex: "0",
47
47
  role: role,
48
- "data-a11y-inside-focus": true,
48
+ "data-a11y-inset-focus": true,
49
49
  "aria-label": ariaLabel,
50
50
  "aria-setsize": ariaSetsize,
51
51
  "aria-posinset": ariaPosinset
@@ -53,7 +53,8 @@ export default class Lookup extends Component {
53
53
  a11y,
54
54
  childAnimationName,
55
55
  onClose,
56
- needFocusScope
56
+ needFocusScope,
57
+ customProps
57
58
  } = this.props;
58
59
  const {
59
60
  role = 'dialog',
@@ -61,10 +62,20 @@ export default class Lookup extends Component {
61
62
  ariaDescribedby,
62
63
  ariaModal = isActive ? true : undefined
63
64
  } = a11y;
65
+ const {
66
+ focusScopeProps = {}
67
+ } = customProps;
68
+ const {
69
+ autoFocus = true,
70
+ restoreFocus = true,
71
+ needArrowLoop = false,
72
+ needTabLoop = true,
73
+ enableEnterAction = false
74
+ } = focusScopeProps;
64
75
  const content = /*#__PURE__*/React.createElement("div", {
65
76
  ref: this.createRef,
66
77
  tabIndex: "-1",
67
- "data-a11y-container-focus": false,
78
+ "data-a11y-need-focus-style": "false",
68
79
  role: role,
69
80
  "aria-labelledby": ariaLabelledby,
70
81
  "aria-describedby": ariaDescribedby,
@@ -88,11 +99,13 @@ export default class Lookup extends Component {
88
99
  className: style.container,
89
100
  dataId: "fldValue"
90
101
  }, needFocusScope ? /*#__PURE__*/React.createElement(FocusScope, {
91
- focusTabLoop: true,
102
+ needTabLoop: needTabLoop,
103
+ needArrowLoop: needArrowLoop,
92
104
  elementRef: this.createRef,
93
- autoFocus: true,
94
- restoreFocus: true,
95
- focusClose: onClose
105
+ autoFocus: autoFocus,
106
+ restoreFocus: restoreFocus,
107
+ onClose: onClose,
108
+ enableEnterAction: enableEnterAction
96
109
  }, content) : content));
97
110
  }
98
111
 
@@ -3,5 +3,6 @@ export const defaultProps = {
3
3
  customClass: '',
4
4
  a11y: {},
5
5
  childAnimationName: 'flyDown',
6
- needFocusScope: false
6
+ needFocusScope: false,
7
+ customProps: {}
7
8
  };