|
12 | 12 | import { locale, _ } from 'svelte-i18n';
|
13 | 13 |
|
14 | 14 | let _settings: Settings = loadSettings();
|
15 |
| - $: errorMessage = getErrorMessage(_settings.colorTheme); |
| 15 | + $: errorMessageKey = getErrorMessageKey(_settings.colorTheme); |
16 | 16 |
|
17 | 17 | const dispatch = createEventDispatcher();
|
18 | 18 |
|
|
32 | 32 | }
|
33 | 33 | };
|
34 | 34 |
|
35 |
| - const getErrorMessage = (color: string) => { |
| 35 | + const getErrorMessageKey = (color: string) => { |
36 | 36 | if (!COLOR_REGEX.test(color)) {
|
37 |
| - return 'Invalid color'; |
| 37 | + return 'color-invalid'; |
38 | 38 | } else if (isTooBright(color)) {
|
39 |
| - return 'Color is too bright'; |
| 39 | + return 'color-too-bright'; |
40 | 40 | }
|
41 | 41 | return null;
|
42 | 42 | };
|
43 | 43 |
|
44 | 44 | const handleInputChange = () => {
|
45 |
| - if (errorMessage === null) { |
| 45 | + if (errorMessageKey === null) { |
46 | 46 | setColor(_settings.colorTheme);
|
47 | 47 | }
|
48 | 48 | };
|
49 | 49 |
|
50 | 50 | // handle select change event
|
51 |
| - const handleLanguageChange = (newLanguage: string) => { |
52 |
| - settings.update(oldSettings => ({ ...oldSettings, language: newLanguage })); |
53 |
| - locale.set(newLanguage); |
| 51 | + const handleLanguageChange = () => { |
| 52 | + settings.update(oldSettings => ({ ...oldSettings, language: _settings.language })); |
| 53 | + locale.set(_settings.language); |
54 | 54 | };
|
55 | 55 |
|
56 | 56 | onMount(() => {
|
|
68 | 68 | <IconButton on:click={close} icon={IoMdClose} />
|
69 | 69 | </div>
|
70 | 70 |
|
| 71 | + <!-- Language --> |
71 | 72 | <div class="section">
|
72 | 73 | <span class="section__title">{$_('settings.language')}</span>
|
73 |
| - <select class="section__content" bind:value={_settings.language}> |
| 74 | + <select |
| 75 | + class="section__content" |
| 76 | + bind:value={_settings.language} |
| 77 | + on:change={handleLanguageChange} |
| 78 | + > |
74 | 79 | {#each Object.entries(LANGS) as [key, value]}
|
75 |
| - <option value={key} on:click={() => handleLanguageChange(key)}>{value}</option> |
| 80 | + <option value={key}>{value}</option> |
76 | 81 | {/each}
|
77 | 82 | </select>
|
78 | 83 | </div>
|
79 | 84 |
|
| 85 | + <!-- Sounds --> |
80 | 86 | <div class="section">
|
81 | 87 | <span class="section__title">{$_('settings.sound-effects')}</span>
|
82 | 88 | <label class="switch section__content">
|
|
85 | 91 | </label>
|
86 | 92 | </div>
|
87 | 93 |
|
| 94 | + <!-- Color --> |
88 | 95 | <div class="section">
|
89 |
| - <span class="section__title">{$_('settings.theme')}</span> |
| 96 | + <span class="section__title">{$_('settings.theme.title')}</span> |
90 | 97 | <div class="colors section__content">
|
91 | 98 | <div class="input-container">
|
92 | 99 | <input
|
93 | 100 | type="text"
|
94 | 101 | class="color-input"
|
95 | 102 | placeholder="#353535"
|
96 |
| - class:color-input--invalid={errorMessage !== null} |
| 103 | + class:color-input--invalid={errorMessageKey !== null} |
97 | 104 | bind:value={_settings.colorTheme}
|
98 | 105 | on:input={handleInputChange}
|
99 | 106 | />
|
100 |
| - {#if errorMessage !== null} |
| 107 | + {#if errorMessageKey !== null} |
101 | 108 | <div class="input-error">
|
102 | 109 | <Icon icon={MdDoNotDisturb} />
|
103 |
| - {errorMessage} |
| 110 | + {$_(`settings.theme.errors.${errorMessageKey}`)} |
104 | 111 | </div>
|
105 | 112 | {/if}
|
106 | 113 | </div>
|
|
0 commit comments