matrix-react-sdk
Version:
SDK for matrix.org using React
140 lines (136 loc) • 19.9 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _lodash = require("lodash");
var _classnames = _interopRequireDefault(require("classnames"));
var _AccessibleButton = _interopRequireDefault(require("../../components/views/elements/AccessibleButton"));
var _KeyBindingsManager = require("../../KeyBindingsManager");
var _KeyboardShortcuts = require("../../accessibility/KeyboardShortcuts");
const _excluded = ["onSearch", "onCleared", "onKeyDown", "onFocus", "onBlur", "className", "placeholder", "blurredPlaceholder", "autoFocus", "initialValue", "collapsed"];
/*
Copyright 2024 New Vector Ltd.
Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
Copyright 2015, 2016 OpenMarket Ltd
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
class SearchBox extends _react.default.Component {
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "search", /*#__PURE__*/(0, _react.createRef)());
(0, _defineProperty2.default)(this, "onChange", () => {
if (!this.search.current) return;
this.setState({
searchTerm: this.search.current.value
});
this.onSearch();
});
(0, _defineProperty2.default)(this, "onSearch", (0, _lodash.throttle)(() => {
this.props.onSearch(this.search.current?.value ?? "");
}, 200, {
trailing: true,
leading: true
}));
(0, _defineProperty2.default)(this, "onKeyDown", ev => {
const action = (0, _KeyBindingsManager.getKeyBindingsManager)().getAccessibilityAction(ev);
switch (action) {
case _KeyboardShortcuts.KeyBindingAction.Escape:
this.clearSearch("keyboard");
break;
}
if (this.props.onKeyDown) this.props.onKeyDown(ev);
});
(0, _defineProperty2.default)(this, "onFocus", ev => {
this.setState({
blurred: false
});
ev.target.select();
if (this.props.onFocus) {
this.props.onFocus(ev);
}
});
(0, _defineProperty2.default)(this, "onBlur", ev => {
this.setState({
blurred: true
});
if (this.props.onBlur) {
this.props.onBlur(ev);
}
});
this.state = {
searchTerm: props.initialValue || "",
blurred: true
};
}
clearSearch(source) {
if (this.search.current) this.search.current.value = "";
this.onChange();
this.props.onCleared?.(source);
}
render() {
/* eslint @typescript-eslint/no-unused-vars: ["error", { "ignoreRestSiblings": true }] */
const _this$props = this.props,
{
onSearch,
onCleared,
onKeyDown,
onFocus,
onBlur,
className = "",
placeholder,
blurredPlaceholder,
autoFocus,
initialValue,
collapsed
} = _this$props,
props = (0, _objectWithoutProperties2.default)(_this$props, _excluded);
// check for collapsed here and
// not at parent so we keep
// searchTerm in our state
// when collapsing and expanding
if (collapsed) {
return null;
}
const clearButton = !this.state.blurred || this.state.searchTerm ? /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
key: "button",
tabIndex: -1,
className: "mx_SearchBox_closeButton",
onClick: () => {
this.clearSearch("button");
}
}) : undefined;
// show a shorter placeholder when blurred, if requested
// this is used for the room filter field that has
// the explore button next to it when blurred
return /*#__PURE__*/_react.default.createElement("div", {
className: (0, _classnames.default)("mx_SearchBox", "mx_textinput", {
mx_SearchBox_blurred: this.state.blurred
})
}, /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({}, props, {
key: "searchfield",
type: "text",
ref: this.search,
className: "mx_textinput_icon mx_textinput_search " + className,
value: this.state.searchTerm,
onFocus: this.onFocus,
onChange: this.onChange,
onKeyDown: this.onKeyDown,
onBlur: this.onBlur,
placeholder: this.state.blurred ? blurredPlaceholder || placeholder : placeholder,
autoComplete: "off",
autoFocus: this.props.autoFocus,
"data-testid": "searchbox-input"
})), clearButton);
}
}
exports.default = SearchBox;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0FjY2Vzc2libGVCdXR0b24iLCJfS2V5QmluZGluZ3NNYW5hZ2VyIiwiX0tleWJvYXJkU2hvcnRjdXRzIiwiX2V4Y2x1ZGVkIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU2VhcmNoQm94IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5MiIsImNyZWF0ZVJlZiIsInNlYXJjaCIsImN1cnJlbnQiLCJzZXRTdGF0ZSIsInNlYXJjaFRlcm0iLCJ2YWx1ZSIsIm9uU2VhcmNoIiwidGhyb3R0bGUiLCJ0cmFpbGluZyIsImxlYWRpbmciLCJldiIsImFjdGlvbiIsImdldEtleUJpbmRpbmdzTWFuYWdlciIsImdldEFjY2Vzc2liaWxpdHlBY3Rpb24iLCJLZXlCaW5kaW5nQWN0aW9uIiwiRXNjYXBlIiwiY2xlYXJTZWFyY2giLCJvbktleURvd24iLCJibHVycmVkIiwidGFyZ2V0Iiwic2VsZWN0Iiwib25Gb2N1cyIsIm9uQmx1ciIsInN0YXRlIiwiaW5pdGlhbFZhbHVlIiwic291cmNlIiwib25DaGFuZ2UiLCJvbkNsZWFyZWQiLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsImNsYXNzTmFtZSIsInBsYWNlaG9sZGVyIiwiYmx1cnJlZFBsYWNlaG9sZGVyIiwiYXV0b0ZvY3VzIiwiY29sbGFwc2VkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsImNsZWFyQnV0dG9uIiwiY3JlYXRlRWxlbWVudCIsImtleSIsInRhYkluZGV4Iiwib25DbGljayIsInVuZGVmaW5lZCIsImNsYXNzTmFtZXMiLCJteF9TZWFyY2hCb3hfYmx1cnJlZCIsIl9leHRlbmRzMiIsInR5cGUiLCJyZWYiLCJhdXRvQ29tcGxldGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc3RydWN0dXJlcy9TZWFyY2hCb3gudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDE5IE1pY2hhZWwgVGVsYXR5bnNraSA8N3QzY2hndXlAZ21haWwuY29tPlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7IGNyZWF0ZVJlZiwgSFRNTFByb3BzIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0aHJvdHRsZSB9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5cbmltcG9ydCBBY2Nlc3NpYmxlQnV0dG9uIGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3ZpZXdzL2VsZW1lbnRzL0FjY2Vzc2libGVCdXR0b25cIjtcbmltcG9ydCB7IGdldEtleUJpbmRpbmdzTWFuYWdlciB9IGZyb20gXCIuLi8uLi9LZXlCaW5kaW5nc01hbmFnZXJcIjtcbmltcG9ydCB7IEtleUJpbmRpbmdBY3Rpb24gfSBmcm9tIFwiLi4vLi4vYWNjZXNzaWJpbGl0eS9LZXlib2FyZFNob3J0Y3V0c1wiO1xuXG5pbnRlcmZhY2UgSVByb3BzIGV4dGVuZHMgSFRNTFByb3BzPEhUTUxJbnB1dEVsZW1lbnQ+IHtcbiAgICBvblNlYXJjaDogKHF1ZXJ5OiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgb25DbGVhcmVkPzogKHNvdXJjZT86IHN0cmluZykgPT4gdm9pZDtcbiAgICBvbktleURvd24/OiAoZXY6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+IHZvaWQ7XG4gICAgb25Gb2N1cz86IChldjogUmVhY3QuRm9jdXNFdmVudCkgPT4gdm9pZDtcbiAgICBvbkJsdXI/OiAoZXY6IFJlYWN0LkZvY3VzRXZlbnQpID0+IHZvaWQ7XG4gICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgYmx1cnJlZFBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIGF1dG9Gb2N1cz86IGJvb2xlYW47XG4gICAgaW5pdGlhbFZhbHVlPzogc3RyaW5nO1xuICAgIGNvbGxhcHNlZD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBJU3RhdGUge1xuICAgIHNlYXJjaFRlcm06IHN0cmluZztcbiAgICBibHVycmVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWFyY2hCb3ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBwcml2YXRlIHNlYXJjaCA9IGNyZWF0ZVJlZjxIVE1MSW5wdXRFbGVtZW50PigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBJUHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBzZWFyY2hUZXJtOiBwcm9wcy5pbml0aWFsVmFsdWUgfHwgXCJcIixcbiAgICAgICAgICAgIGJsdXJyZWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaC5jdXJyZW50KSByZXR1cm47XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzZWFyY2hUZXJtOiB0aGlzLnNlYXJjaC5jdXJyZW50LnZhbHVlIH0pO1xuICAgICAgICB0aGlzLm9uU2VhcmNoKCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgb25TZWFyY2ggPSB0aHJvdHRsZShcbiAgICAgICAgKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vblNlYXJjaCh0aGlzLnNlYXJjaC5jdXJyZW50Py52YWx1ZSA/PyBcIlwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgMjAwLFxuICAgICAgICB7IHRyYWlsaW5nOiB0cnVlLCBsZWFkaW5nOiB0cnVlIH0sXG4gICAgKTtcblxuICAgIHByaXZhdGUgb25LZXlEb3duID0gKGV2OiBSZWFjdC5LZXlib2FyZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGdldEtleUJpbmRpbmdzTWFuYWdlcigpLmdldEFjY2Vzc2liaWxpdHlBY3Rpb24oZXYpO1xuICAgICAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgICAgICAgY2FzZSBLZXlCaW5kaW5nQWN0aW9uLkVzY2FwZTpcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU2VhcmNoKFwia2V5Ym9hcmRcIik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25LZXlEb3duKSB0aGlzLnByb3BzLm9uS2V5RG93bihldik7XG4gICAgfTtcblxuICAgIHByaXZhdGUgb25Gb2N1cyA9IChldjogUmVhY3QuRm9jdXNFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgYmx1cnJlZDogZmFsc2UgfSk7XG4gICAgICAgIChldi50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuc2VsZWN0KCk7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uRm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25Gb2N1cyhldik7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBvbkJsdXIgPSAoZXY6IFJlYWN0LkZvY3VzRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGJsdXJyZWQ6IHRydWUgfSk7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uQmx1cikge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkJsdXIoZXYpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgY2xlYXJTZWFyY2goc291cmNlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaC5jdXJyZW50KSB0aGlzLnNlYXJjaC5jdXJyZW50LnZhbHVlID0gXCJcIjtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSgpO1xuICAgICAgICB0aGlzLnByb3BzLm9uQ2xlYXJlZD8uKHNvdXJjZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAgICAgICAvKiBlc2xpbnQgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzOiBbXCJlcnJvclwiLCB7IFwiaWdub3JlUmVzdFNpYmxpbmdzXCI6IHRydWUgfV0gKi9cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgb25TZWFyY2gsXG4gICAgICAgICAgICBvbkNsZWFyZWQsXG4gICAgICAgICAgICBvbktleURvd24sXG4gICAgICAgICAgICBvbkZvY3VzLFxuICAgICAgICAgICAgb25CbHVyLFxuICAgICAgICAgICAgY2xhc3NOYW1lID0gXCJcIixcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgYmx1cnJlZFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgYXV0b0ZvY3VzLFxuICAgICAgICAgICAgaW5pdGlhbFZhbHVlLFxuICAgICAgICAgICAgY29sbGFwc2VkLFxuICAgICAgICAgICAgLi4ucHJvcHNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgLy8gY2hlY2sgZm9yIGNvbGxhcHNlZCBoZXJlIGFuZFxuICAgICAgICAvLyBub3QgYXQgcGFyZW50IHNvIHdlIGtlZXBcbiAgICAgICAgLy8gc2VhcmNoVGVybSBpbiBvdXIgc3RhdGVcbiAgICAgICAgLy8gd2hlbiBjb2xsYXBzaW5nIGFuZCBleHBhbmRpbmdcbiAgICAgICAgaWYgKGNvbGxhcHNlZCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2xlYXJCdXR0b24gPVxuICAgICAgICAgICAgIXRoaXMuc3RhdGUuYmx1cnJlZCB8fCB0aGlzLnN0YXRlLnNlYXJjaFRlcm0gPyAoXG4gICAgICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAga2V5PVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9TZWFyY2hCb3hfY2xvc2VCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU2VhcmNoKFwiYnV0dG9uXCIpO1xuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIHNob3cgYSBzaG9ydGVyIHBsYWNlaG9sZGVyIHdoZW4gYmx1cnJlZCwgaWYgcmVxdWVzdGVkXG4gICAgICAgIC8vIHRoaXMgaXMgdXNlZCBmb3IgdGhlIHJvb20gZmlsdGVyIGZpZWxkIHRoYXQgaGFzXG4gICAgICAgIC8vIHRoZSBleHBsb3JlIGJ1dHRvbiBuZXh0IHRvIGl0IHdoZW4gYmx1cnJlZFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJteF9TZWFyY2hCb3hcIiwgXCJteF90ZXh0aW5wdXRcIiwgeyBteF9TZWFyY2hCb3hfYmx1cnJlZDogdGhpcy5zdGF0ZS5ibHVycmVkIH0pfT5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgICAgICAgICBrZXk9XCJzZWFyY2hmaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtcIm14X3RleHRpbnB1dF9pY29uIG14X3RleHRpbnB1dF9zZWFyY2ggXCIgKyBjbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnNlYXJjaFRlcm19XG4gICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9e3RoaXMub25Gb2N1c31cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17dGhpcy5vbktleURvd259XG4gICAgICAgICAgICAgICAgICAgIG9uQmx1cj17dGhpcy5vbkJsdXJ9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0aGlzLnN0YXRlLmJsdXJyZWQgPyBibHVycmVkUGxhY2Vob2xkZXIgfHwgcGxhY2Vob2xkZXIgOiBwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzPXt0aGlzLnByb3BzLmF1dG9Gb2N1c31cbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWFyY2hib3gtaW5wdXRcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAge2NsZWFyQnV0dG9ufVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1h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