@grafana/ui
Version:
Grafana Components Library
56 lines (51 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var jsxRuntime = require('react/jsx-runtime');
var React = require('react');
var data = require('@grafana/data');
var i18n = require('@grafana/i18n');
var useCombinedRefs = require('../../utils/useCombinedRefs.cjs');
var Button = require('../Button/Button.cjs');
var Icon = require('../Icon/Icon.cjs');
var Input = require('../Input/Input.cjs');
;
const FilterInput = React.forwardRef(
({ value, width, onChange, escapeRegex = true, suffix: _suffix, ...restProps }, ref) => {
const innerRef = React.useRef(null);
const combinedRef = useCombinedRefs.useCombinedRefs(ref, innerRef);
const suffix = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
value !== "" && /* @__PURE__ */ jsxRuntime.jsx(
Button.Button,
{
icon: "times",
fill: "text",
size: "sm",
onClick: (e) => {
var _a;
(_a = innerRef.current) == null ? void 0 : _a.focus();
onChange("");
e.stopPropagation();
},
children: /* @__PURE__ */ jsxRuntime.jsx(i18n.Trans, { i18nKey: "grafana-ui.filter-input.clear", children: "Clear" })
}
),
_suffix
] });
return /* @__PURE__ */ jsxRuntime.jsx(
Input.Input,
{
prefix: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { name: "search" }),
suffix,
width,
type: "text",
value: escapeRegex ? data.unEscapeStringFromRegex(value != null ? value : "") : value,
onChange: (event) => onChange(escapeRegex ? data.escapeStringForRegex(event.currentTarget.value) : event.currentTarget.value),
...restProps,
ref: combinedRef
}
);
}
);
FilterInput.displayName = "FilterInput";
exports.FilterInput = FilterInput;
//# sourceMappingURL=FilterInput.cjs.map