@grafana/alerting
Version:
Grafana Alerting Library – Build vertical integrations on top of the industry-leading alerting solution
49 lines (44 loc) • 1.95 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var jsxRuntime = require('react/jsx-runtime');
var lodash = require('lodash');
var ui = require('@grafana/ui');
var useContactPoints = require('../../hooks/v0alpha1/useContactPoints.cjs');
var utils = require('../../utils.cjs');
;
const collator = new Intl.Collator("en", { sensitivity: "accent" });
function ContactPointSelector(props) {
const { includeUnusable = false, ...comboboxProps } = props;
const { currentData: contactPoints, isLoading } = useContactPoints.useListContactPoints(
{},
{ refetchOnFocus: true, refetchOnMountOrArgChange: true }
);
const contactPointOptions = lodash.chain(contactPoints == null ? void 0 : contactPoints.items).toArray().filter((contactPoint) => includeUnusable || utils.isUsableContactPoint(contactPoint)).map((contactPoint) => {
var _a;
return {
option: {
label: contactPoint.spec.title,
value: (_a = contactPoint.metadata.uid) != null ? _a : contactPoint.spec.title,
description: utils.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__ */ jsxRuntime.jsx(ui.Combobox, { ...comboboxProps, loading: isLoading, options, onChange: handleChange });
}
exports.ContactPointSelector = ContactPointSelector;
//# sourceMappingURL=ContactPointSelector.cjs.map