2023-02-18 23:06:14 -05:00
|
|
|
import {hideElem, showElem} from '../utils/dom.js';
|
2022-01-28 16:00:11 -05:00
|
|
|
|
2023-09-26 00:56:20 -05:00
|
|
|
function onPronounsDropdownUpdate() {
|
|
|
|
const pronounsCustom = document.getElementById('pronouns-custom');
|
2023-09-26 01:21:52 -05:00
|
|
|
const pronounsDropdown = document.getElementById('pronouns-dropdown');
|
|
|
|
const pronounsInput = pronounsDropdown.querySelector('input');
|
2024-02-26 14:43:04 -05:00
|
|
|
// must be kept in sync with `routers/web/user/setting/profile.go`
|
2023-09-26 00:56:20 -05:00
|
|
|
const isCustom = !(
|
2023-09-26 01:21:52 -05:00
|
|
|
pronounsInput.value === '' ||
|
2023-09-26 00:56:20 -05:00
|
|
|
pronounsInput.value === 'he/him' ||
|
|
|
|
pronounsInput.value === 'she/her' ||
|
|
|
|
pronounsInput.value === 'they/them' ||
|
2023-09-26 12:54:18 -05:00
|
|
|
pronounsInput.value === 'it/its' ||
|
2024-02-24 13:24:12 -05:00
|
|
|
pronounsInput.value === 'any pronouns'
|
2023-09-26 00:56:20 -05:00
|
|
|
);
|
|
|
|
if (isCustom) {
|
2023-09-26 01:21:52 -05:00
|
|
|
if (pronounsInput.value === '!') {
|
|
|
|
pronounsCustom.value = '';
|
|
|
|
} else {
|
|
|
|
pronounsCustom.value = pronounsInput.value;
|
|
|
|
}
|
2023-09-26 00:56:20 -05:00
|
|
|
pronounsCustom.style.display = '';
|
|
|
|
} else {
|
|
|
|
pronounsCustom.style.display = 'none';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function onPronounsCustomUpdate() {
|
|
|
|
const pronounsCustom = document.getElementById('pronouns-custom');
|
|
|
|
const pronounsInput = document.querySelector('#pronouns-dropdown input');
|
|
|
|
pronounsInput.value = pronounsCustom.value;
|
|
|
|
}
|
|
|
|
|
2021-10-16 12:28:04 -05:00
|
|
|
export function initUserSettings() {
|
2024-03-25 13:37:55 -05:00
|
|
|
if (!document.querySelectorAll('.user.settings.profile').length) return;
|
2024-02-16 10:52:50 -05:00
|
|
|
|
|
|
|
const usernameInput = document.getElementById('username');
|
|
|
|
if (!usernameInput) return;
|
|
|
|
usernameInput.addEventListener('input', function () {
|
|
|
|
const prompt = document.getElementById('name-change-prompt');
|
|
|
|
const promptRedirect = document.getElementById('name-change-redirect-prompt');
|
|
|
|
if (this.value.toLowerCase() !== this.getAttribute('data-name').toLowerCase()) {
|
|
|
|
showElem(prompt);
|
|
|
|
showElem(promptRedirect);
|
|
|
|
} else {
|
|
|
|
hideElem(prompt);
|
|
|
|
hideElem(promptRedirect);
|
|
|
|
}
|
|
|
|
});
|
2023-09-26 00:56:20 -05:00
|
|
|
|
|
|
|
const pronounsDropdown = document.getElementById('pronouns-dropdown');
|
|
|
|
const pronounsCustom = document.getElementById('pronouns-custom');
|
|
|
|
const pronounsInput = pronounsDropdown.querySelector('input');
|
2024-02-26 14:43:04 -05:00
|
|
|
|
|
|
|
// If JS is disabled, the page will show the custom input, as the dropdown requires JS to work.
|
|
|
|
// JS progressively enhances the input by adding a dropdown, but it works regardless.
|
2023-09-26 00:56:20 -05:00
|
|
|
pronounsCustom.removeAttribute('name');
|
2024-02-26 14:47:05 -05:00
|
|
|
pronounsInput.setAttribute('name', 'pronouns');
|
2023-09-26 00:56:20 -05:00
|
|
|
pronounsDropdown.style.display = '';
|
2024-02-26 14:43:04 -05:00
|
|
|
|
2023-09-26 00:56:20 -05:00
|
|
|
onPronounsDropdownUpdate();
|
|
|
|
pronounsInput.addEventListener('change', onPronounsDropdownUpdate);
|
|
|
|
pronounsCustom.addEventListener('input', onPronounsCustomUpdate);
|
2021-10-16 12:28:04 -05:00
|
|
|
}
|