UNPKG

matrix-react-sdk

Version:
129 lines (105 loc) 14.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var sdk = _interopRequireWildcard(require("../../../index")); var languageHandler = _interopRequireWildcard(require("../../../languageHandler")); var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore")); var _replaceableComponent = require("../../../utils/replaceableComponent"); var _dec, _class; function languageMatchesSearchQuery(query, language) { if (language.label.toUpperCase().includes(query.toUpperCase())) return true; if (language.value.toUpperCase() === query.toUpperCase()) return true; return false; } let LanguageDropdown = (_dec = (0, _replaceableComponent.replaceableComponent)("views.elements.LanguageDropdown"), _dec(_class = class LanguageDropdown extends _react.default.Component { constructor(props) { super(props); this._onSearchChange = this._onSearchChange.bind(this); this.state = { searchQuery: '', langs: null }; } componentDidMount() { languageHandler.getAllLanguagesFromJson().then(langs => { langs.sort(function (a, b) { if (a.label < b.label) return -1; if (a.label > b.label) return 1; return 0; }); this.setState({ langs }); }).catch(() => { this.setState({ langs: ['en'] }); }); if (!this.props.value) { // If no value is given, we start with the first // country selected, but our parent component // doesn't know this, therefore we do this. const language = languageHandler.getUserLanguage(); this.props.onOptionChange(language); } } _onSearchChange(search) { this.setState({ searchQuery: search }); } render() { if (this.state.langs === null) { const Spinner = sdk.getComponent('elements.Spinner'); return /*#__PURE__*/_react.default.createElement(Spinner, null); } const Dropdown = sdk.getComponent('elements.Dropdown'); let displayedLanguages; if (this.state.searchQuery) { displayedLanguages = this.state.langs.filter(lang => { return languageMatchesSearchQuery(this.state.searchQuery, lang); }); } else { displayedLanguages = this.state.langs; } const options = displayedLanguages.map(language => { return /*#__PURE__*/_react.default.createElement("div", { key: language.value }, language.label); }); // default value here too, otherwise we need to handle null / undefined // values between mounting and the initial value propgating let language = _SettingsStore.default.getValue("language", null, /*excludeDefault:*/ true); let value = null; if (language) { value = this.props.value || language; } else { language = navigator.language || navigator.userLanguage; value = this.props.value || language; } return /*#__PURE__*/_react.default.createElement(Dropdown, { id: "mx_LanguageDropdown", className: this.props.className, onOptionChange: this.props.onOptionChange, onSearchChange: this._onSearchChange, searchEnabled: true, value: value, label: (0, languageHandler._t)("Language Dropdown"), disabled: this.props.disabled }, options); } }) || _class); exports.default = LanguageDropdown; LanguageDropdown.propTypes = { className: _propTypes.default.string, onOptionChange: _propTypes.default.func.isRequired, value: _propTypes.default.string }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2VsZW1lbnRzL0xhbmd1YWdlRHJvcGRvd24uanMiXSwibmFtZXMiOlsibGFuZ3VhZ2VNYXRjaGVzU2VhcmNoUXVlcnkiLCJxdWVyeSIsImxhbmd1YWdlIiwibGFiZWwiLCJ0b1VwcGVyQ2FzZSIsImluY2x1ZGVzIiwidmFsdWUiLCJMYW5ndWFnZURyb3Bkb3duIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX29uU2VhcmNoQ2hhbmdlIiwiYmluZCIsInN0YXRlIiwic2VhcmNoUXVlcnkiLCJsYW5ncyIsImNvbXBvbmVudERpZE1vdW50IiwibGFuZ3VhZ2VIYW5kbGVyIiwiZ2V0QWxsTGFuZ3VhZ2VzRnJvbUpzb24iLCJ0aGVuIiwic29ydCIsImEiLCJiIiwic2V0U3RhdGUiLCJjYXRjaCIsImdldFVzZXJMYW5ndWFnZSIsIm9uT3B0aW9uQ2hhbmdlIiwic2VhcmNoIiwicmVuZGVyIiwiU3Bpbm5lciIsInNkayIsImdldENvbXBvbmVudCIsIkRyb3Bkb3duIiwiZGlzcGxheWVkTGFuZ3VhZ2VzIiwiZmlsdGVyIiwibGFuZyIsIm9wdGlvbnMiLCJtYXAiLCJTZXR0aW5nc1N0b3JlIiwiZ2V0VmFsdWUiLCJuYXZpZ2F0b3IiLCJ1c2VyTGFuZ3VhZ2UiLCJjbGFzc05hbWUiLCJkaXNhYmxlZCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsImZ1bmMiLCJpc1JlcXVpcmVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWlCQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztBQUVBLFNBQVNBLDBCQUFULENBQW9DQyxLQUFwQyxFQUEyQ0MsUUFBM0MsRUFBcUQ7QUFDakQsTUFBSUEsUUFBUSxDQUFDQyxLQUFULENBQWVDLFdBQWYsR0FBNkJDLFFBQTdCLENBQXNDSixLQUFLLENBQUNHLFdBQU4sRUFBdEMsQ0FBSixFQUFnRSxPQUFPLElBQVA7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LEdBQUdxQyx1QkFBY0MsUUFBZCxDQUF1QixVQUF2QixFQUFtQyxJQUFuQztBQUF5QztBQUFtQixRQUE1RCxDQUFmOztBQUNBLFFBQUlsQyxLQUFLLEdBQUcsSUFBWjs7QUFDQSxRQUFJSixRQUFKLEVBQWM7QUFDVkksTUFBQUEsS0FBSyxHQUFHLEtBQUtLLEtBQUwsQ0FBV0wsS0FBWCxJQUFvQkosUUFBNUI7QUFDSCxLQUZELE1BRU87QUFDSEEsTUFBQUEsUUFBUSxHQUFHdUMsU0FBUyxDQUFDdkMsUUFBVixJQUFzQnVDLFNBQVMsQ0FBQ0MsWUFBM0M7QUFDQXBDLE1BQUFBLEtBQUssR0FBRyxLQUFLSyxLQUFMLENBQVdMLEtBQVgsSUFBb0JKLFFBQTVCO0FBQ0g7O0FBRUQsd0JBQU8sNkJBQUMsUUFBRDtBQUNILE1BQUEsRUFBRSxFQUFDLHFCQURBO0FBRUgsTUFBQSxTQUFTLEVBQUUsS0FBS1MsS0FBTCxDQUFXZ0MsU0FGbkI7QUFHSCxNQUFBLGNBQWMsRUFBRSxLQUFLaEMsS0FBTCxDQUFXZ0IsY0FIeEI7QUFJSCxNQUFBLGNBQWMsRUFBRSxLQUFLZixlQUpsQjtBQUtILE1BQUEsYUFBYSxFQUFFLElBTFo7QUFNSCxNQUFBLEtBQUssRUFBRU4sS0FOSjtBQU9ILE1BQUEsS0FBSyxFQUFFLHdCQUFHLG1CQUFILENBUEo7QUFRSCxNQUFBLFFBQVEsRUFBRSxLQUFLSyxLQUFMLENBQVdpQztBQVJsQixPQVVEUCxPQVZDLENBQVA7QUFZSDs7QUFwRnlELEM7O0FBdUY5RDlCLGdCQUFnQixDQUFDc0MsU0FBakIsR0FBNkI7QUFDekJGLEVBQUFBLFNBQVMsRUFBRUcsbUJBQVVDLE1BREk7QUFFekJwQixFQUFBQSxjQUFjLEVBQUVtQixtQkFBVUUsSUFBVixDQUFlQyxVQUZOO0FBR3pCM0MsRUFBQUEsS0FBSyxFQUFFd0MsbUJBQVVDO0FBSFEsQ0FBN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMTcgTWFyY2VsIFJhZHppbyAoTVRSTm9yZClcbkNvcHlyaWdodCAyMDE3IFZlY3RvciBDcmVhdGlvbnMgTHRkLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG5pbXBvcnQgKiBhcyBzZGsgZnJvbSAnLi4vLi4vLi4vaW5kZXgnO1xuaW1wb3J0ICogYXMgbGFuZ3VhZ2VIYW5kbGVyIGZyb20gJy4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlcic7XG5pbXBvcnQgU2V0dGluZ3NTdG9yZSBmcm9tIFwiLi4vLi4vLi4vc2V0dGluZ3MvU2V0dGluZ3NTdG9yZVwiO1xuaW1wb3J0IHsgX3QgfSBmcm9tIFwiLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQge3JlcGxhY2VhYmxlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcmVwbGFjZWFibGVDb21wb25lbnRcIjtcblxuZnVuY3Rpb24gbGFuZ3VhZ2VNYXRjaGVzU2VhcmNoUXVlcnkocXVlcnksIGxhbmd1YWdlKSB7XG4gICAgaWYgKGxhbmd1YWdlLmxhYmVsLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkudG9VcHBlckNhc2UoKSkpIHJldHVybiB0cnVlO1xuICAgIGlmIChsYW5ndWFnZS52YWx1ZS50b1VwcGVyQ2FzZSgpID09PSBxdWVyeS50b1VwcGVyQ2FzZSgpKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbkByZXBsYWNlYWJsZUNvbXBvbmVudChcInZpZXdzLmVsZW1lbnRzLkxhbmd1YWdlRHJvcGRvd25cIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExhbmd1YWdlRHJvcGRvd24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgdGhpcy5fb25TZWFyY2hDaGFuZ2UgPSB0aGlzLl9vblNlYXJjaENoYW5nZS5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBzZWFyY2hRdWVyeTogJycsXG4gICAgICAgICAgICBsYW5nczogbnVsbCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgbGFuZ3VhZ2VIYW5kbGVyLmdldEFsbExhbmd1YWdlc0Zyb21Kc29uKCkudGhlbigobGFuZ3MpID0+IHtcbiAgICAgICAgICAgIGxhbmdzLnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgICAgICAgICAgICAgIGlmIChhLmxhYmVsIDwgYi5sYWJlbCkgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIGlmIChhLmxhYmVsID4gYi5sYWJlbCkgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe2xhbmdzfSk7XG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe2xhbmdzOiBbJ2VuJ119KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLnZhbHVlKSB7XG4gICAgICAgICAgICAvLyBJZiBubyB2YWx1ZSBpcyBnaXZlbiwgd2Ugc3RhcnQgd2l0aCB0aGUgZmlyc3RcbiAgICAgICAgICAgIC8vIGNvdW50cnkgc2VsZWN0ZWQsIGJ1dCBvdXIgcGFyZW50IGNvbXBvbmVudFxuICAgICAgICAgICAgLy8gZG9lc24ndCBrbm93IHRoaXMsIHRoZXJlZm9yZSB3ZSBkbyB0aGlzLlxuICAgICAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBsYW5ndWFnZUhhbmRsZXIuZ2V0VXNlckxhbmd1YWdlKCk7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uT3B0aW9uQ2hhbmdlKGxhbmd1YWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9vblNlYXJjaENoYW5nZShzZWFyY2gpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBzZWFyY2hRdWVyeTogc2VhcmNoLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmxhbmdzID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBTcGlubmVyID0gc2RrLmdldENvbXBvbmVudCgnZWxlbWVudHMuU3Bpbm5lcicpO1xuICAgICAgICAgICAgcmV0dXJuIDxTcGlubmVyIC8+O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgRHJvcGRvd24gPSBzZGsuZ2V0Q29tcG9uZW50KCdlbGVtZW50cy5Ecm9wZG93bicpO1xuXG4gICAgICAgIGxldCBkaXNwbGF5ZWRMYW5ndWFnZXM7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnNlYXJjaFF1ZXJ5KSB7XG4gICAgICAgICAgICBkaXNwbGF5ZWRMYW5ndWFnZXMgPSB0aGlzLnN0YXRlLmxhbmdzLmZpbHRlcigobGFuZykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZU1hdGNoZXNTZWFyY2hRdWVyeSh0aGlzLnN0YXRlLnNlYXJjaFF1ZXJ5LCBsYW5nKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGlzcGxheWVkTGFuZ3VhZ2VzID0gdGhpcy5zdGF0ZS5sYW5ncztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBkaXNwbGF5ZWRMYW5ndWFnZXMubWFwKChsYW5ndWFnZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtsYW5ndWFnZS52YWx1ZX0+XG4gICAgICAgICAgICAgICAgeyBsYW5ndWFnZS5sYWJlbCB9XG4gICAgICAgICAgICA8L2Rpdj47XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGRlZmF1bHQgdmFsdWUgaGVyZSB0b28sIG90aGVyd2lzZSB3ZSBuZWVkIHRvIGhhbmRsZSBudWxsIC8gdW5kZWZpbmVkXG4gICAgICAgIC8vIHZhbHVlcyBiZXR3ZWVuIG1vdW50aW5nIGFuZCB0aGUgaW5pdGlhbCB2YWx1ZSBwcm9wZ2F0aW5nXG4gICAgICAgIGxldCBsYW5ndWFnZSA9IFNldHRpbmdzU3RvcmUuZ2V0VmFsdWUoXCJsYW5ndWFnZVwiLCBudWxsLCAvKmV4Y2x1ZGVEZWZhdWx0OiovdHJ1ZSk7XG4gICAgICAgIGxldCB2YWx1ZSA9IG51bGw7XG4gICAgICAgIGlmIChsYW5ndWFnZSkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnByb3BzLnZhbHVlIHx8IGxhbmd1YWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGFuZ3VhZ2UgPSBuYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgbmF2aWdhdG9yLnVzZXJMYW5ndWFnZTtcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5wcm9wcy52YWx1ZSB8fCBsYW5ndWFnZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiA8RHJvcGRvd25cbiAgICAgICAgICAgIGlkPVwibXhfTGFuZ3VhZ2VEcm9wZG93blwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lfVxuICAgICAgICAgICAgb25PcHRpb25DaGFuZ2U9e3RoaXMucHJvcHMub25PcHRpb25DaGFuZ2V9XG4gICAgICAgICAgICBvblNlYXJjaENoYW5nZT17dGhpcy5fb25TZWFyY2hDaGFuZ2V9XG4gICAgICAgICAgICBzZWFyY2hFbmFibGVkPXt0cnVlfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgbGFiZWw9e190KFwiTGFuZ3VhZ2UgRHJvcGRvd25cIil9XG4gICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5wcm9wcy5kaXNhYmxlZH1cbiAgICAgICAgPlxuICAgICAgICAgICAgeyBvcHRpb25zIH1cbiAgICAgICAgPC9Ecm9wZG93bj47XG4gICAgfVxufVxuXG5MYW5ndWFnZURyb3Bkb3duLnByb3BUeXBlcyA9IHtcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb25PcHRpb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgdmFsdWU6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuIl19