forked from Mirrors/gomuks
web/settings: allow editing string fields
This commit is contained in:
parent
68385fef5d
commit
09a586df3e
2 changed files with 41 additions and 2 deletions
|
@ -14,8 +14,23 @@ div.settings-view {
|
||||||
table {
|
table {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
|
||||||
|
tr {
|
||||||
|
height: 2.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
div.preference {
|
div.preference {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
|
&.select-preference > select {
|
||||||
|
padding: .25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.string-preference > input {
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
padding: .25rem;
|
||||||
|
/* TODO make this less hacky */
|
||||||
|
width: 8rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,16 @@ const BooleanPreferenceCell = ({ context, name, setPref, value, inheritedValue }
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TextPreferenceCell = ({ context, name, setPref, value, inheritedValue }: PreferenceCellProps<string>) => {
|
||||||
|
const onChange = useCallback((evt: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
setPref(context, name, evt.target.value)
|
||||||
|
}, [setPref, context, name])
|
||||||
|
return <div className="preference string-preference">
|
||||||
|
<input value={value ?? inheritedValue} onChange={onChange}/>
|
||||||
|
{useRemover(context, setPref, name, value)}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
const SelectPreferenceCell = ({ context, name, pref, setPref, value, inheritedValue }: PreferenceCellProps<string>) => {
|
const SelectPreferenceCell = ({ context, name, pref, setPref, value, inheritedValue }: PreferenceCellProps<string>) => {
|
||||||
const onChange = useCallback((evt: React.ChangeEvent<HTMLSelectElement>) => {
|
const onChange = useCallback((evt: React.ChangeEvent<HTMLSelectElement>) => {
|
||||||
setPref(context, name, evt.target.value)
|
setPref(context, name, evt.target.value)
|
||||||
|
@ -83,11 +93,16 @@ interface PreferenceRowProps {
|
||||||
roomLocal?: PreferenceValueType
|
roomLocal?: PreferenceValueType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const customUIPrefs = new Set([
|
||||||
|
"custom_css",
|
||||||
|
"custom_notification_sound",
|
||||||
|
] as (keyof Preferences)[])
|
||||||
|
|
||||||
const PreferenceRow = ({
|
const PreferenceRow = ({
|
||||||
name, pref, setPref, globalServer, globalLocal, roomServer, roomLocal,
|
name, pref, setPref, globalServer, globalLocal, roomServer, roomLocal,
|
||||||
}: PreferenceRowProps) => {
|
}: PreferenceRowProps) => {
|
||||||
const prefType = typeof pref.defaultValue
|
const prefType = typeof pref.defaultValue
|
||||||
if (prefType !== "boolean" && !pref.allowedValues) {
|
if (customUIPrefs.has(name)) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
const makeContentCell = (
|
const makeContentCell = (
|
||||||
|
@ -104,7 +119,7 @@ const PreferenceRow = ({
|
||||||
value={val as boolean | undefined}
|
value={val as boolean | undefined}
|
||||||
inheritedValue={inheritedVal as boolean}
|
inheritedValue={inheritedVal as boolean}
|
||||||
/>
|
/>
|
||||||
} else if (typeof prefType === "string" && pref.allowedValues) {
|
} else if (pref.allowedValues) {
|
||||||
return <SelectPreferenceCell
|
return <SelectPreferenceCell
|
||||||
name={name}
|
name={name}
|
||||||
setPref={setPref}
|
setPref={setPref}
|
||||||
|
@ -113,6 +128,15 @@ const PreferenceRow = ({
|
||||||
value={val as string | undefined}
|
value={val as string | undefined}
|
||||||
inheritedValue={inheritedVal as string}
|
inheritedValue={inheritedVal as string}
|
||||||
/>
|
/>
|
||||||
|
} else if (prefType === "string") {
|
||||||
|
return <TextPreferenceCell
|
||||||
|
name={name}
|
||||||
|
setPref={setPref}
|
||||||
|
context={context}
|
||||||
|
pref={pref as Preference<string>}
|
||||||
|
value={val as string | undefined}
|
||||||
|
inheritedValue={inheritedVal as string}
|
||||||
|
/>
|
||||||
} else {
|
} else {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue