UNPKG

@grafana/ui

Version:
1 lines 4.55 kB
{"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,aAAA,CAAqB;AAAA,EAA/C,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAaL,IAAA,IAAA,CAAA,UAAA,GAAa,MAAM;AACjB,MAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAe,WAAA,EAAa,QAAA,KAAa,IAAA,CAAK,KAAA;AAE7D,MAAA,MAAM,OAAA,GAAU,aAAA,CAAc,IAAA,CAAK,KAAK,CAAA;AACxC,MAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,KAAA,CAAM,MAAA,EAAQ;AACnC,QAAA,MAAM,QAAQ,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA;AACrC,QAAA,MAAM,QAAA,GAAW,UAAA,CAAW,KAAA,EAAO,KAAK,CAAA;AACxC,QAAA,OAAA,CAAQ,IAAA,CAAK,eAAA,EAAiB,QAAA,EAAU,KAAK,CAAA;AAC7C,QAAA,QAAA,CAAS,QAAQ,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,MACzC;AAGA,MAAA,IAAI,CAAC,aAAA,IAAiB,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG;AACtC,QAAA,OAAA,CAAQ,IAAA,CAAK,uBAAuB,KAAK,CAAA;AACzC,QAAA,QAAA,CAAS,CAAC,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AAAA,MACrB;AAGA,MAAA,IAAI,WAAA,IAAe,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG;AACnC,QAAA,QAAA,CAAS,CAAC,WAAW,CAAC,CAAA;AAAA,MACxB;AAAA,IACF,CAAA;AAEA,IAAA,IAAA,CAAA,iBAAA,GAAoB,CAAC,IAAA,KAAkC;AACrD,MAAA,MAAM,EAAE,QAAA,EAAS,GAAI,IAAA,CAAK,KAAA;AAC1B,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,QAAA,QAAA,CAAS,KAAK,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,MACnC,CAAA,MAAO;AACL,QAAA,QAAA,CAAS,IAAA,IAAQ,KAAK,KAAA,GAAQ,CAAC,KAAK,KAAK,CAAA,GAAI,EAAE,CAAA;AAAA,MACjD;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,EAtCA,iBAAA,GAAoB;AAClB,IAAA,IAAA,CAAK,UAAA,EAAW;AAAA,EAClB;AAAA,EAEA,mBAAmB,SAAA,EAAkB;AACnC,IAAA,IAAA,CAAK,UAAA,EAAW;AAAA,EAClB;AAAA,EAkCA,MAAA,GAAS;AACP,IAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAe,WAAA,EAAa,WAAA,EAAa,SAAA,EAAW,aAAA,EAAe,KAAA,EAAO,OAAA,EAAS,aAAA,EAAc,GAC9G,IAAA,CAAK,KAAA;AAEP,IAAA,MAAM,MAAA,GAAS,aAAA,CAAc,aAAA,CAAc,KAAA,EAAO,aAAa,CAAA;AAC/D,IAAA,uBACE,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAO,MAAA,CAAO,OAAA;AAAA,QACd,SAAA;AAAA,QACA,aAAa,CAAC,WAAA;AAAA,QACd,OAAA,EAAS,aAAA;AAAA,QACT,KAAA;AAAA,QACA,YAAA,EAAc,IAAA;AAAA,QACd,SAAS,MAAA,CAAO,OAAA;AAAA,QAChB,WAAA;AAAA,QACA,UAAU,IAAA,CAAK,iBAAA;AAAA,QACf,aAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAlEa,WAAA,CACJ,YAAA,GAA+B;AAAA,EACpC,aAAA,EAAe;AACjB,CAAA;;;;"}