diff options
author | Thibaut Girka <thib@sitedethib.com> | 2018-10-01 17:40:56 +0200 |
---|---|---|
committer | ThibG <thib@sitedethib.com> | 2018-10-08 13:49:25 +0200 |
commit | faecb35fe0197ddc025b971aa9538d5ddbdea713 (patch) | |
tree | dde9fe88bc7d4ff0697165a24a417a5f8a0fc66c /app/javascript/flavours | |
parent | a3677a828d4e52b09422d4f800f3482785b03243 (diff) |
Switch from selects to radio buttons for local settings, improve styling
Diffstat (limited to 'app/javascript/flavours')
-rw-r--r-- | app/javascript/flavours/glitch/features/local_settings/page/item/index.js | 93 | ||||
-rw-r--r-- | app/javascript/flavours/glitch/styles/components/local_settings.scss | 25 |
2 files changed, 70 insertions, 48 deletions
diff --git a/app/javascript/flavours/glitch/features/local_settings/page/item/index.js b/app/javascript/flavours/glitch/features/local_settings/page/item/index.js index fe237f11e..eacc7419c 100644 --- a/app/javascript/flavours/glitch/features/local_settings/page/item/index.js +++ b/app/javascript/flavours/glitch/features/local_settings/page/item/index.js @@ -48,57 +48,62 @@ export default class LocalSettingsPageItem extends React.PureComponent { if (options && options.length > 0) { const currentValue = settings.getIn(item); - const optionElems = options && options.length > 0 && options.map((opt) => ( - <option - key={opt.value} - value={opt.value} - > - {opt.message} - </option> - )); - return ( - <label className='glitch local-settings__page__item' htmlFor={id}> - <p>{children}</p> - <p> - <select - id={id} - disabled={!enabled} + const optionElems = options && options.length > 0 && options.map((opt) => { + let optionId = `${id}--${opt.value}`; + return ( + <label htmlFor={optionId}> + <input type='radio' + name={id} + id={optionId} + value={opt.value} onBlur={handleChange} onChange={handleChange} - value={currentValue} - > - {optionElems} - </select> - </p> - </label> + checked={ currentValue === opt.value } + disabled={!enabled} + /> + {opt.message} + </label> + ); + }); + return ( + <div class='glitch local-settings__page__item radio_buttons'> + <fieldset> + <legend>{children}</legend> + {optionElems} + </fieldset> + </div> ); } else if (placeholder) { return ( - <label className='glitch local-settings__page__item' htmlFor={id}> - <p>{children}</p> - <p> - <input - id={id} - type='text' - value={settings.getIn(item)} - placeholder={placeholder} - onChange={handleChange} - disabled={!enabled} - /> - </p> - </label> + <div className='glitch local-settings__page__item string'> + <label htmlFor={id}> + <p>{children}</p> + <p> + <input + id={id} + type='text' + value={settings.getIn(item)} + placeholder={placeholder} + onChange={handleChange} + disabled={!enabled} + /> + </p> + </label> + </div> ); } else return ( - <label className='glitch local-settings__page__item' htmlFor={id}> - <input - id={id} - type='checkbox' - checked={settings.getIn(item)} - onChange={handleChange} - disabled={!enabled} - /> - {children} - </label> + <div className='glitch local-settings__page__item boolean'> + <label htmlFor={id}> + <input + id={id} + type='checkbox' + checked={settings.getIn(item)} + onChange={handleChange} + disabled={!enabled} + /> + {children} + </label> + </div> ); } diff --git a/app/javascript/flavours/glitch/styles/components/local_settings.scss b/app/javascript/flavours/glitch/styles/components/local_settings.scss index 9cd4e1fbe..a6e5c9892 100644 --- a/app/javascript/flavours/glitch/styles/components/local_settings.scss +++ b/app/javascript/flavours/glitch/styles/components/local_settings.scss @@ -11,8 +11,21 @@ max-height: 450px; overflow: hidden; - label { + label, legend { display: block; + font-size: 14px; + } + + .boolean label, .radio_buttons label { + position: relative; + padding-left: 28px; + padding-top: 3px; + + input { + position: absolute; + left: 0; + top: 0; + } } h1 { @@ -74,7 +87,11 @@ } .glitch.local-settings__page__item { - select { - margin-bottom: 5px; - } + margin-bottom: 2px; +} + +.glitch.local-settings__page__item.string, +.glitch.local-settings__page__item.radio_buttons { + margin-top: 10px; + margin-bottom: 10px; } |