matrix-react-sdk
Version:
SDK for matrix.org using React
129 lines (105 loc) • 14.3 kB
JavaScript
"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