UNPKG

matrix-react-sdk

Version:
140 lines (136 loc) 19.9 kB
"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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