import { AllI18nKeys, Localization } from "@Component/Localization/Localization"; import { Callout, DirectionalHint, Icon } from "@fluentui/react"; import { CtrlObject } from "@Model/CtrlObject"; import { Group } from "@Model/Group"; import { Label } from "@Model/Label"; import { Range } from "@Model/Range"; import { Component, ReactNode, RefObject } from "react"; import "./PickerList.scss"; type IPickerListItem = CtrlObject | Label; type IDisplayItem = { nameKey: AllI18nKeys; key: string; } interface IPickerListProps { displayItems?: IDisplayItem[]; objectList?: IPickerListItem[]; target?: RefObject; noData?: AllI18nKeys; dismiss?: () => any; clickObjectItems?: (item: IPickerListItem) => any; clickDisplayItems?: (item: IDisplayItem) => any; } class PickerList extends Component { private renderItem(item: IPickerListItem) { let color: number[] = []; let icon: string = "tag"; let name: string = ""; if (item instanceof Range) { icon = "CubeShape" } if (item instanceof Group) { icon = "WebAppBuilderFragment" } if (item instanceof CtrlObject) { color[0] = Math.round(item.color[0] * 255); color[1] = Math.round(item.color[1] * 255); color[2] = Math.round(item.color[2] * 255); name = item.displayName; } if (item instanceof Label) { icon = "tag"; color = item.color.concat([]); name = item.name; } return
{ if (this.props.clickObjectItems) { this.props.clickObjectItems(item) } }} >
{name}
; } private renderString(item: IDisplayItem) { return
{ if (this.props.clickDisplayItems) { this.props.clickDisplayItems(item) } }} >
; } public render(): ReactNode { return
{this.props.objectList ? this.props.objectList.map((item) => { return this.renderItem(item); }) : null} {this.props.displayItems ? this.props.displayItems.map((item) => { return this.renderString(item); }) : null} { !(this.props.objectList || this.props.displayItems) || !( this.props.objectList && this.props.objectList.length > 0 || this.props.displayItems && this.props.displayItems.length > 0 ) ? : null }
} } export { PickerList, IDisplayItem }