zhongrj
2025-11-25 b89962006164a462404b79a738bee8cbb6d7fe7e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import React, { PureComponent, Fragment } from "react";
import IonAssetLabel from "./IonAssetLabel";
import { AssetConfig } from "../defaults";
 
import "./IonAssetButton.scss";
 
export default class IonAssetButton extends PureComponent {
    static defaultProps = {
        assets: [],
        assetComponent: IonAssetLabel,
        onSelect: () => {}
    };
 
    handleClick = asset => () => this.props.onSelect(asset);
 
    render() {
        const {
            assets,
            onSelect,
            children,
            assetComponent: AssetComponent
        } = this.props;
    
        const menuItems = assets
            .sort((a, b) => AssetConfig[a].name.localeCompare(AssetConfig[b].name))
            .map(asset => (
                <li>
                    <a key={asset} style={{cursor:'pointer'}} onClick={this.handleClick(asset)}>
                        <AssetComponent asset={asset} showIcon={true} />
                    </a>
                </li>
            ));
    
        const title = (
            <Fragment>
                <i className={"fa fa-cesium"} />
                {children}
            </Fragment>
        );
    
        return (
            <div className={"btn-group"}>
                <button type="button" className={"btn btn-sm btn-primary"} data-toggle="dropdown">
                    {title}
                </button>
                <button type="button" className={"btn btn-sm dropdown-toggle btn-primary"} data-toggle="dropdown">
                    <span className="caret"></span>
                </button>
                <ul className="dropdown-menu">
                    {menuItems}
                </ul>
            </div>
        );
    }
}