@goodandready/dsh-subscriptions 0.2.8 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/client.js +26 -6
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -14,10 +14,10 @@ window.__ModuleLoader__.load({
|
|
|
14
14
|
'.dsub-header:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}' +
|
|
15
15
|
'.dsub-headText{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}' +
|
|
16
16
|
'.dsub-name{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}' +
|
|
17
|
-
'.dsub-description{color:var(--dsw-alias-label-
|
|
17
|
+
'.dsub-description{color:var(--dsw-alias-label-secondary);font-size:13px}' +
|
|
18
18
|
'.dsub-chevron{color:var(--dsw-alias-label-tertiary);flex:none;transition:transform .16s}' +
|
|
19
19
|
'.dsub-chevronOpen{transform:rotate(180deg)}' +
|
|
20
|
-
'.dsub-body{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding:
|
|
20
|
+
'.dsub-body{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding-bottom:8px}' +
|
|
21
21
|
// existing dsub classes kept for SubsSection internals
|
|
22
22
|
'.dsub-wrap{display:flex;flex-direction:column;gap:22px;padding:4px 0;max-width:760px}' +
|
|
23
23
|
'.dsub-block{display:flex;flex-direction:column;gap:10px}' +
|
|
@@ -26,9 +26,11 @@ window.__ModuleLoader__.load({
|
|
|
26
26
|
'.dsub-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}' +
|
|
27
27
|
'.dsub-row input,.dsub-field input,.dsub-row select{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);border-radius:6px;padding:6px 8px;font-size:13px}' +
|
|
28
28
|
'.dsub-grow{flex:1;min-width:180px}' +
|
|
29
|
-
'.dsub-field{display:flex;flex-direction:column;gap:
|
|
29
|
+
'.dsub-field{display:flex;flex-direction:column;gap:6px;padding:12px 0}' +
|
|
30
|
+
'.dsub-input{height:34px;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);border-radius:8px;padding:0 12px;font-size:13px}' +
|
|
30
31
|
'.dsub-mini{border:1px solid var(--dsw-alias-border-l2);background:transparent;color:var(--dsw-alias-label-primary);border-radius:6px;height:28px;padding:0 8px;cursor:pointer}' +
|
|
31
|
-
'.dsub-
|
|
32
|
+
'.dsub-foot{border-top:1px solid var(--dsw-alias-border-l2);display:flex;justify-content:flex-end;align-items:center;gap:8px;padding:12px 0 4px}' +
|
|
33
|
+
'.dsub-save{appearance:none;font:inherit;cursor:pointer;border:1px solid transparent;border-radius:8px;padding:5px 14px;font-size:13px;background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3)}' +
|
|
32
34
|
'.dsub-ok{font-size:12px;color:var(--dsw-alias-state-success-primary)}' +
|
|
33
35
|
'.dsub-bad{font-size:12px;color:var(--dsw-alias-state-error-primary)}' +
|
|
34
36
|
'.dsub-badge{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);white-space:nowrap}' +
|
|
@@ -372,7 +374,7 @@ const cssId = 'dsh-subscriptions/settings.module.css'
|
|
|
372
374
|
}, t('addAccount')),
|
|
373
375
|
)
|
|
374
376
|
}),
|
|
375
|
-
React.createElement('div', { className: 'dsub-
|
|
377
|
+
React.createElement('div', { className: 'dsub-foot' },
|
|
376
378
|
React.createElement('button', {
|
|
377
379
|
type: 'button', className: 'dsub-save',
|
|
378
380
|
onClick: () => save().catch((e) => setErr(String(e.message || e))),
|
|
@@ -418,7 +420,25 @@ const cssId = 'dsh-subscriptions/settings.module.css'
|
|
|
418
420
|
}
|
|
419
421
|
|
|
420
422
|
function registerSettings(ctx) {
|
|
421
|
-
|
|
423
|
+
// Язык может принести не только плагин: словарные пакеты объявляют
|
|
424
|
+
// русский для чужих пространств. Ядро на повторное объявление той же
|
|
425
|
+
// пары «пространство + язык» бросает исключение, и незащищённый вызов
|
|
426
|
+
// уносил с собой весь плагин — в интерфейсе это выглядело как «Failed to
|
|
427
|
+
// load plugins» с перечнем ни в чём не повинных соседей.
|
|
428
|
+
//
|
|
429
|
+
// Поэтому каждый язык объявляется отдельно и по-хорошему: заняли до нас —
|
|
430
|
+
// уступаем, свой английский при этом всё равно встаёт на место.
|
|
431
|
+
const addLocale = (locale, dictionary) => {
|
|
432
|
+
try {
|
|
433
|
+
return ctx.locale.register(NS, locale, dictionary)
|
|
434
|
+
} catch (alreadyTaken) {
|
|
435
|
+
return () => {}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
ctx.effect(() => {
|
|
439
|
+
const undo = [addLocale('en', en), addLocale('ru', ru)]
|
|
440
|
+
return () => { for (const off of undo) off() }
|
|
441
|
+
}, 'dsh-subscriptions: словари')
|
|
422
442
|
// Подписи вне компонента берут переводчик, привязанный к namespace.
|
|
423
443
|
const t = ctx.locale.bind(NS)
|
|
424
444
|
// Штатное место — вкладка «Плагины»: карточка со своим заголовком и
|
package/package.json
CHANGED