1 | import React, { Component } from "react";
|
2 | import PropTypes from 'prop-types';
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | export default function keyDownMenu(Menus) {
|
14 | return class KeyDownMenu extends Component {
|
15 | constructor(props) {
|
16 | super(props);
|
17 |
|
18 | this.dataMap = {};
|
19 | this.getChildToMap(this.props.children);
|
20 | this.state = {
|
21 | openKeys:this.getOpenKeys()
|
22 | };
|
23 | }
|
24 |
|
25 | getOpenKeys=(key='')=>{
|
26 | let defaultKeys = this.props.defaultOpenKeys?[...this.props.defaultOpenKeys]:[];
|
27 | let keys = this.props.openKeys?[...this.props.openKeys,...defaultKeys]:[...defaultKeys];
|
28 | if(key != ''){
|
29 | keys.push(keys)
|
30 | }
|
31 | return keys;
|
32 | }
|
33 |
|
34 | getChildToMap(childrens){
|
35 | childrens.forEach(element => {
|
36 | this.dataMap[element.key] = element;
|
37 | let itemChildren = element.props.children;
|
38 | if(itemChildren && Array.isArray(itemChildren) && itemChildren.length > 0){
|
39 | return this.getChildToMap(itemChildren);
|
40 | }
|
41 | });
|
42 | return this.dataMap;
|
43 | }
|
44 |
|
45 |
|
46 | onKeyDown = (e,item) =>{
|
47 | let {_key} = item;
|
48 | const keyCode = e.keyCode;
|
49 | this.setState({
|
50 | openKeys:this.getOpenKeys()
|
51 | })
|
52 |
|
53 |
|
54 | console.log("----gaojie---onKeyDown -- lib ---- ");
|
55 | console.log(e.target);
|
56 | console.log(item);
|
57 | }
|
58 |
|
59 | onSelect = ({item,key,selectedKeys}) => {
|
60 | console.log(`${key} selected`);
|
61 |
|
62 |
|
63 |
|
64 |
|
65 | this.setState({
|
66 | openKeys:this.getOpenKeys(key)
|
67 | })
|
68 | }
|
69 |
|
70 | render(){
|
71 | let {openKeys} = this.props;
|
72 | let _openKeys = openKeys?openKeys:[];
|
73 | console.log("----openKeys---- ",openKeys);
|
74 | return <Menus {...this.props} onKeyDown={this.onKeyDown}
|
75 | openKeys={['demo3sub1','demo3sub4']}
|
76 | onClick={this.onSelect}
|
77 | // openKeys={_openKeys}
|
78 | />
|
79 | }
|
80 | };
|
81 | // KeyDownMenu.defaultProps = defaultProps;
|
82 | // KeyDownMenu.propTypes = propTypes;
|
83 | }
|
84 |
|
\ | No newline at end of file |