UNPKG

@grafana/alerting

Version:

Grafana Alerting Library – Build vertical integrations on top of the industry-leading alerting solution

45 lines (42 loc) 1.85 kB
import { jsx } from 'react/jsx-runtime'; import { chain } from 'lodash'; import { Combobox } from '@grafana/ui'; import { useListContactPoints } from '../../hooks/v0alpha1/useContactPoints.mjs'; import { isUsableContactPoint, getContactPointDescription } from '../../utils.mjs'; "use strict"; const collator = new Intl.Collator("en", { sensitivity: "accent" }); function ContactPointSelector(props) { const { includeUnusable = false, ...comboboxProps } = props; const { currentData: contactPoints, isLoading } = useListContactPoints( {}, { refetchOnFocus: true, refetchOnMountOrArgChange: true } ); const contactPointOptions = chain(contactPoints == null ? void 0 : contactPoints.items).toArray().filter((contactPoint) => includeUnusable || isUsableContactPoint(contactPoint)).map((contactPoint) => { var _a; return { option: { label: contactPoint.spec.title, value: (_a = contactPoint.metadata.uid) != null ? _a : contactPoint.spec.title, description: getContactPointDescription(contactPoint) }, contactPoint }; }).value().sort((a, b) => collator.compare(a.option.label, b.option.label)); const options = contactPointOptions.map((item) => item.option); const handleChange = (selectedOption) => { if (selectedOption == null && comboboxProps.isClearable) { comboboxProps.onChange(null); return; } if (selectedOption) { const matchedOption = contactPointOptions.find(({ option }) => option.value === selectedOption.value); if (!matchedOption) { return; } comboboxProps.onChange(matchedOption.contactPoint); } }; return /* @__PURE__ */ jsx(Combobox, { ...comboboxProps, loading: isLoading, options, onChange: handleChange }); } export { ContactPointSelector }; //# sourceMappingURL=ContactPointSelector.mjs.map