1 Commits

Author SHA1 Message Date
Zoë Bijl 7c2e1f0984 add <select> to settings pane 2025-10-16 00:13:38 +02:00
2 changed files with 43 additions and 1 deletions
@@ -6,6 +6,7 @@ import { defineMessages, FormattedMessage, injectIntl } from "react-intl";
import ImmutablePropTypes from "react-immutable-proptypes";
import { languages as preloadedLanguages } from "flavours/glitch/initial_state";
// Our imports
import LocalSettingsPageItem from "./item";
@@ -35,6 +36,12 @@ const messages = defineMessages({
direct: { id: "privacy.direct.short", defaultMessage: "Mentioned people only" },
});
const langs = []
for (const lang of preloadedLanguages) {
langs.push({"value": lang[0], "label": lang[1]})
}
class LocalSettingsPage extends PureComponent {
static propTypes = {
@@ -203,6 +210,16 @@ class LocalSettingsPage extends PureComponent {
({ intl, onChange, settings }) => (
<div className='glitch local-settings__page compose_box_opts'>
<h1><FormattedMessage id='settings.compose_box_opts' defaultMessage='Compose box' /></h1>
<LocalSettingsPageItem
settings={settings}
item={["default_language"]}
id='mastodon-settings--default-language'
select={langs}
onChange={onChange}
>
<FormattedMessage id='settings.default_language' defaultMessage='Default language for new toots' />
</LocalSettingsPageItem>
<LocalSettingsPageItem
settings={settings}
item={["always_show_spoilers_field"]}
@@ -39,7 +39,7 @@ export default class LocalSettingsPageItem extends PureComponent {
render () {
const { handleChange } = this;
const { settings, item, id, inputProps, options, children, dependsOn, dependsOnNot, placeholder, disabled } = this.props;
const { settings, item, id, inputProps, select, options, children, dependsOn, dependsOnNot, placeholder, disabled } = this.props;
let enabled = !disabled;
if (dependsOn) {
@@ -52,6 +52,31 @@ export default class LocalSettingsPageItem extends PureComponent {
enabled = enabled && !settings.getIn(dependsOnNot[i]);
}
}
if (select && select.length > 0) {
const currentValue = settings.getIn(item);
const optionElems = select && select.length > 0 && select.map((opt) => {
return (
<option
value={opt.value}
selected={currentValue === opt.value}
>
{opt.label}
</option>
)
})
return (
<div className='glitch local-settings__page__item select'>
<fieldset>
<label>Default language:
<select>
{optionElems}
</select>
</label>
</fieldset>
</div>
);
}
if (options && options.length > 0) {
const currentValue = settings.getIn(item);