@grafana/ui
Version:
Grafana Components Library
1 lines • 4.49 kB
Source Map (JSON)
{"version":3,"file":"StatsPicker.mjs","sources":["../../../../src/components/StatsPicker/StatsPicker.tsx"],"sourcesContent":["import { difference } from 'lodash';\nimport { PureComponent } from 'react';\n\nimport { fieldReducers, SelectableValue, FieldReducerInfo } from '@grafana/data';\n\nimport { Select } from '../Select/Select';\n\nexport interface Props {\n placeholder?: string;\n onChange: (stats: string[]) => void;\n stats: string[];\n allowMultiple?: boolean;\n defaultStat?: string;\n className?: string;\n width?: number;\n menuPlacement?: 'auto' | 'bottom' | 'top';\n inputId?: string;\n filterOptions?: (ext: FieldReducerInfo) => boolean;\n}\n\nexport class StatsPicker extends PureComponent<Props> {\n static defaultProps: Partial<Props> = {\n allowMultiple: false,\n };\n\n componentDidMount() {\n this.checkInput();\n }\n\n componentDidUpdate(prevProps: Props) {\n this.checkInput();\n }\n\n checkInput = () => {\n const { stats, allowMultiple, defaultStat, onChange } = this.props;\n\n const current = fieldReducers.list(stats);\n if (current.length !== stats.length) {\n const found = current.map((v) => v.id);\n const notFound = difference(stats, found);\n console.warn('Unknown stats', notFound, stats);\n onChange(current.map((stat) => stat.id));\n }\n\n // Make sure there is only one\n if (!allowMultiple && stats.length > 1) {\n console.warn('Removing extra stat', stats);\n onChange([stats[0]]);\n }\n\n // Set the reducer from callback\n if (defaultStat && stats.length < 1) {\n onChange([defaultStat]);\n }\n };\n\n onSelectionChange = (item: SelectableValue<string>) => {\n const { onChange } = this.props;\n if (Array.isArray(item)) {\n onChange(item.map((v) => v.value));\n } else {\n onChange(item && item.value ? [item.value] : []);\n }\n };\n\n render() {\n const { stats, allowMultiple, defaultStat, placeholder, className, menuPlacement, width, inputId, filterOptions } =\n this.props;\n\n const select = fieldReducers.selectOptions(stats, filterOptions);\n return (\n <Select\n value={select.current}\n className={className}\n isClearable={!defaultStat}\n isMulti={allowMultiple}\n width={width}\n isSearchable={true}\n options={select.options}\n placeholder={placeholder}\n onChange={this.onSelectionChange}\n menuPlacement={menuPlacement}\n inputId={inputId}\n />\n );\n }\n}\n"],"names":[],"mappings":";;;;;;AAoBO,MAAM,oBAAoB,aAAqB,CAAA;AAAA,EAA/C,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAaL,IAAA,IAAA,CAAA,UAAA,GAAa,MAAM;AACjB,MAAA,MAAM,EAAE,KAAO,EAAA,aAAA,EAAe,WAAa,EAAA,QAAA,KAAa,IAAK,CAAA,KAAA;AAE7D,MAAM,MAAA,OAAA,GAAU,aAAc,CAAA,IAAA,CAAK,KAAK,CAAA;AACxC,MAAI,IAAA,OAAA,CAAQ,MAAW,KAAA,KAAA,CAAM,MAAQ,EAAA;AACnC,QAAA,MAAM,QAAQ,OAAQ,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA;AACrC,QAAM,MAAA,QAAA,GAAW,UAAW,CAAA,KAAA,EAAO,KAAK,CAAA;AACxC,QAAQ,OAAA,CAAA,IAAA,CAAK,eAAiB,EAAA,QAAA,EAAU,KAAK,CAAA;AAC7C,QAAA,QAAA,CAAS,QAAQ,GAAI,CAAA,CAAC,IAAS,KAAA,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA;AAIzC,MAAA,IAAI,CAAC,aAAA,IAAiB,KAAM,CAAA,MAAA,GAAS,CAAG,EAAA;AACtC,QAAQ,OAAA,CAAA,IAAA,CAAK,uBAAuB,KAAK,CAAA;AACzC,QAAA,QAAA,CAAS,CAAC,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AAAA;AAIrB,MAAI,IAAA,WAAA,IAAe,KAAM,CAAA,MAAA,GAAS,CAAG,EAAA;AACnC,QAAS,QAAA,CAAA,CAAC,WAAW,CAAC,CAAA;AAAA;AACxB,KACF;AAEA,IAAA,IAAA,CAAA,iBAAA,GAAoB,CAAC,IAAkC,KAAA;AACrD,MAAM,MAAA,EAAE,QAAS,EAAA,GAAI,IAAK,CAAA,KAAA;AAC1B,MAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,IAAI,CAAG,EAAA;AACvB,QAAA,QAAA,CAAS,KAAK,GAAI,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,OAC5B,MAAA;AACL,QAAS,QAAA,CAAA,IAAA,IAAQ,KAAK,KAAQ,GAAA,CAAC,KAAK,KAAK,CAAA,GAAI,EAAE,CAAA;AAAA;AACjD,KACF;AAAA;AAAA,EAtCA,iBAAoB,GAAA;AAClB,IAAA,IAAA,CAAK,UAAW,EAAA;AAAA;AAClB,EAEA,mBAAmB,SAAkB,EAAA;AACnC,IAAA,IAAA,CAAK,UAAW,EAAA;AAAA;AAClB,EAkCA,MAAS,GAAA;AACP,IAAM,MAAA,EAAE,KAAO,EAAA,aAAA,EAAe,WAAa,EAAA,WAAA,EAAa,SAAW,EAAA,aAAA,EAAe,KAAO,EAAA,OAAA,EAAS,aAAc,EAAA,GAC9G,IAAK,CAAA,KAAA;AAEP,IAAA,MAAM,MAAS,GAAA,aAAA,CAAc,aAAc,CAAA,KAAA,EAAO,aAAa,CAAA;AAC/D,IACE,uBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAO,MAAO,CAAA,OAAA;AAAA,QACd,SAAA;AAAA,QACA,aAAa,CAAC,WAAA;AAAA,QACd,OAAS,EAAA,aAAA;AAAA,QACT,KAAA;AAAA,QACA,YAAc,EAAA,IAAA;AAAA,QACd,SAAS,MAAO,CAAA,OAAA;AAAA,QAChB,WAAA;AAAA,QACA,UAAU,IAAK,CAAA,iBAAA;AAAA,QACf,aAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA;AAGN;AAlEa,WAAA,CACJ,YAA+B,GAAA;AAAA,EACpC,aAAe,EAAA;AACjB,CAAA;;;;"}