Сделана компактная кнопка скрытия ключей в UI
This commit is contained in:
parent
68ed93dd24
commit
d2205648e6
@ -1,2 +1,2 @@
|
||||
client.version=1.2.112
|
||||
server.version=1.2.104
|
||||
client.version=1.2.113
|
||||
server.version=1.2.105
|
||||
|
||||
@ -40,13 +40,28 @@ export function render({ navigate }) {
|
||||
const renderField = (id, label) => {
|
||||
const row = document.createElement('div');
|
||||
row.className = 'key-card stack';
|
||||
const eyeIcon = `
|
||||
<svg class="key-toggle-icon" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
|
||||
<path d="M2.4 12s3.6-6.5 9.6-6.5S21.6 12 21.6 12s-3.6 6.5-9.6 6.5S2.4 12 2.4 12Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/>
|
||||
<circle cx="12" cy="12" r="2.9" fill="none" stroke="currentColor" stroke-width="1.8"/>
|
||||
</svg>
|
||||
`;
|
||||
const eyeOffIcon = `
|
||||
<svg class="key-toggle-icon" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
|
||||
<path d="M3 4l18 16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>
|
||||
<path d="M2.4 12s3.6-6.5 9.6-6.5c2.4 0 4.5.8 6.1 1.9" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/>
|
||||
<path d="M21.6 12s-3.6 6.5-9.6 6.5c-2.4 0-4.5-.8-6.1-1.9" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
`;
|
||||
row.innerHTML = `
|
||||
<div class="row">
|
||||
<span class="field-label">${label}</span>
|
||||
<button class="icon-btn small-btn" type="button" data-toggle="${id}">Показать</button>
|
||||
<button class="icon-btn key-toggle-btn" type="button" data-toggle="${id}" aria-label="Показать ключ" title="Показать ключ">${eyeOffIcon}</button>
|
||||
</div>
|
||||
<div class="key-value key-value--compact" data-value="${id}">*****</div>
|
||||
`;
|
||||
row._eyeIcon = eyeIcon;
|
||||
row._eyeOffIcon = eyeOffIcon;
|
||||
return row;
|
||||
};
|
||||
|
||||
@ -59,21 +74,29 @@ export function render({ navigate }) {
|
||||
const setMissingState = (id) => {
|
||||
const valueEl = card.querySelector(`[data-value="${id}"]`);
|
||||
const btnEl = card.querySelector(`[data-toggle="${id}"]`);
|
||||
const field = btnEl?.closest('.key-card');
|
||||
valueEl.textContent = 'нет данных';
|
||||
btnEl.disabled = true;
|
||||
btnEl.textContent = 'Нет';
|
||||
btnEl.innerHTML = field?._eyeOffIcon || '';
|
||||
btnEl.setAttribute('aria-label', 'Нет данных');
|
||||
btnEl.title = 'Нет данных';
|
||||
};
|
||||
|
||||
const updateField = (id) => {
|
||||
const valueEl = card.querySelector(`[data-value="${id}"]`);
|
||||
const btnEl = card.querySelector(`[data-toggle="${id}"]`);
|
||||
const field = btnEl?.closest('.key-card');
|
||||
if (!keys[id]) {
|
||||
setMissingState(id);
|
||||
return;
|
||||
}
|
||||
valueEl.textContent = visible[id] ? keys[id] : '*****';
|
||||
btnEl.disabled = false;
|
||||
btnEl.textContent = visible[id] ? 'Скрыть' : 'Показать';
|
||||
btnEl.innerHTML = visible[id]
|
||||
? field?._eyeIcon || ''
|
||||
: field?._eyeOffIcon || '';
|
||||
btnEl.setAttribute('aria-label', visible[id] ? 'Скрыть ключ' : 'Показать ключ');
|
||||
btnEl.title = visible[id] ? 'Скрыть ключ' : 'Показать ключ';
|
||||
};
|
||||
|
||||
card.querySelectorAll('[data-toggle]').forEach((button) => {
|
||||
|
||||
@ -1281,6 +1281,24 @@ textarea.input {
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.key-toggle-btn {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
min-height: 36px;
|
||||
min-width: 36px;
|
||||
padding: 0;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
flex: 0 0 auto;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.key-toggle-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.qr-demo {
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user