UNPKG

@grafana/ui

Version:
1 lines 4.69 kB
{"version":3,"file":"ValueContainer.mjs","sources":["../../../../src/components/Select/ValueContainer.tsx"],"sourcesContent":["import { cx } from '@emotion/css';\nimport { isEqual } from 'lodash';\nimport { Component, createRef, ReactNode } from 'react';\nimport { ValueContainerProps as BaseValueContainerProps, type GroupBase } from 'react-select';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { withTheme2 } from '../../themes/ThemeContext';\n\nimport { getSelectStyles } from './getSelectStyles';\nimport type { CustomComponentProps } from './types';\n\ntype ValueContainerProps<Option, isMulti extends boolean, Group extends GroupBase<Option>> = BaseValueContainerProps<\n Option,\n isMulti,\n Group\n> &\n CustomComponentProps<Option, isMulti, Group>;\n\nclass UnthemedValueContainer<Option, isMulti extends boolean, Group extends GroupBase<Option>> extends Component<\n ValueContainerProps<Option, isMulti, Group> & { theme: GrafanaTheme2 }\n> {\n private ref = createRef<HTMLDivElement>();\n\n componentDidUpdate(prevProps: ValueContainerProps<Option, isMulti, Group>) {\n if (\n this.ref.current &&\n this.props.selectProps.autoWidth &&\n !isEqual(prevProps.selectProps.value, this.props.selectProps.value)\n ) {\n // Reset in order to measure the new width\n this.ref.current.style.minWidth = '0px';\n\n const width = this.ref.current.offsetWidth;\n\n this.ref.current.style.minWidth = `${width}px`;\n }\n }\n\n render() {\n const { children } = this.props;\n const { selectProps } = this.props;\n\n if (\n selectProps &&\n Array.isArray(children) &&\n Array.isArray(children[0]) &&\n selectProps.maxVisibleValues !== undefined &&\n !(selectProps.showAllSelectedWhenOpen && selectProps.menuIsOpen)\n ) {\n const [valueChildren, ...otherChildren] = children;\n const truncatedValues = valueChildren.slice(0, selectProps.maxVisibleValues);\n\n return this.renderContainer([truncatedValues, ...otherChildren]);\n }\n\n return this.renderContainer(children);\n }\n\n renderContainer(children?: ReactNode) {\n const { isMulti, theme, selectProps } = this.props;\n const noWrap = this.props.selectProps?.noMultiValueWrap && !this.props.selectProps?.menuIsOpen;\n const styles = getSelectStyles(theme);\n const dataTestid = selectProps['data-testid'];\n const className = cx(styles.valueContainer, {\n [styles.valueContainerMulti]: isMulti && !noWrap,\n [styles.valueContainerMultiNoWrap]: isMulti && noWrap,\n });\n\n return (\n <div ref={this.ref} data-testid={dataTestid} className={className}>\n {children}\n </div>\n );\n }\n}\n\nexport const ValueContainer = withTheme2(UnthemedValueContainer);\n"],"names":[],"mappings":";;;;;;;;AAmBA,MAAM,+BAAiG,SAAA,CAErG;AAAA,EAFF,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAGE,IAAA,IAAA,CAAQ,MAAM,SAAA,EAA0B;AAAA,EAAA;AAAA,EAExC,mBAAmB,SAAA,EAAwD;AACzE,IAAA,IACE,KAAK,GAAA,CAAI,OAAA,IACT,IAAA,CAAK,KAAA,CAAM,YAAY,SAAA,IACvB,CAAC,OAAA,CAAQ,SAAA,CAAU,YAAY,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,WAAA,CAAY,KAAK,CAAA,EAClE;AAEA,MAAA,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,KAAA,CAAM,QAAA,GAAW,KAAA;AAElC,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,WAAA;AAE/B,MAAA,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,KAAA,CAAM,QAAA,GAAW,GAAG,KAAK,CAAA,EAAA,CAAA;AAAA,IAC5C;AAAA,EACF;AAAA,EAEA,MAAA,GAAS;AACP,IAAA,MAAM,EAAE,QAAA,EAAS,GAAI,IAAA,CAAK,KAAA;AAC1B,IAAA,MAAM,EAAE,WAAA,EAAY,GAAI,IAAA,CAAK,KAAA;AAE7B,IAAA,IACE,eACA,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,IACtB,KAAA,CAAM,QAAQ,QAAA,CAAS,CAAC,CAAC,CAAA,IACzB,YAAY,gBAAA,KAAqB,KAAA,CAAA,IACjC,EAAE,WAAA,CAAY,uBAAA,IAA2B,YAAY,UAAA,CAAA,EACrD;AACA,MAAA,MAAM,CAAC,aAAA,EAAe,GAAG,aAAa,CAAA,GAAI,QAAA;AAC1C,MAAA,MAAM,eAAA,GAAkB,aAAA,CAAc,KAAA,CAAM,CAAA,EAAG,YAAY,gBAAgB,CAAA;AAE3E,MAAA,OAAO,KAAK,eAAA,CAAgB,CAAC,eAAA,EAAiB,GAAG,aAAa,CAAC,CAAA;AAAA,IACjE;AAEA,IAAA,OAAO,IAAA,CAAK,gBAAgB,QAAQ,CAAA;AAAA,EACtC;AAAA,EAEA,gBAAgB,QAAA,EAAsB;AA3DxC,IAAA,IAAA,EAAA,EAAA,EAAA;AA4DI,IAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAO,WAAA,KAAgB,IAAA,CAAK,KAAA;AAC7C,IAAA,MAAM,MAAA,GAAA,CAAA,CAAS,EAAA,GAAA,IAAA,CAAK,KAAA,CAAM,WAAA,KAAX,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAwB,qBAAoB,EAAA,CAAC,EAAA,GAAA,IAAA,CAAK,KAAA,CAAM,WAAA,KAAX,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAwB,UAAA,CAAA;AACpF,IAAA,MAAM,MAAA,GAAS,gBAAgB,KAAK,CAAA;AACpC,IAAA,MAAM,UAAA,GAAa,YAAY,aAAa,CAAA;AAC5C,IAAA,MAAM,SAAA,GAAY,EAAA,CAAG,MAAA,CAAO,cAAA,EAAgB;AAAA,MAC1C,CAAC,MAAA,CAAO,mBAAmB,GAAG,WAAW,CAAC,MAAA;AAAA,MAC1C,CAAC,MAAA,CAAO,yBAAyB,GAAG,OAAA,IAAW;AAAA,KAChD,CAAA;AAED,IAAA,uBACE,GAAA,CAAC,SAAI,GAAA,EAAK,IAAA,CAAK,KAAK,aAAA,EAAa,UAAA,EAAY,WAC1C,QAAA,EACH,CAAA;AAAA,EAEJ;AACF;AAEO,MAAM,cAAA,GAAiB,WAAW,sBAAsB;;;;"}