0}
+ canMoveDown={index < props.draft.loginUris.length - 1}
+ canRemove={props.draft.loginUris.length > 1}
+ onUpdateUri={props.onUpdateDraftLoginUri}
+ onUpdateMatch={props.onUpdateDraftLoginUriMatch}
+ onMove={moveLoginUri}
+ onRemove={removeLoginUri}
+ />
+ ))}
{props.draft.loginFido2Credentials.length > 0 && (
<>
diff --git a/webapp/src/lib/i18n/locales/en.ts b/webapp/src/lib/i18n/locales/en.ts
index 6aeb7e4..ebb60be 100644
--- a/webapp/src/lib/i18n/locales/en.ts
+++ b/webapp/src/lib/i18n/locales/en.ts
@@ -550,8 +550,9 @@ const en: Record = {
"txt_master_password_reprompt_2": "Master Password Reprompt",
"txt_max_access_count": "Max Access Count",
"txt_middle_name": "Middle Name",
- "txt_drag_to_reorder": "Drag to reorder",
"txt_move": "Move",
+ "txt_move_up": "Move up",
+ "txt_move_down": "Move down",
"txt_move_selected_items": "Move Selected Items",
"txt_moved_selected_items": "Moved selected items",
"txt_name": "Name",
diff --git a/webapp/src/lib/i18n/locales/es.ts b/webapp/src/lib/i18n/locales/es.ts
index b711653..b6d968e 100644
--- a/webapp/src/lib/i18n/locales/es.ts
+++ b/webapp/src/lib/i18n/locales/es.ts
@@ -550,8 +550,9 @@ const es: Record = {
"txt_master_password_reprompt_2": "Solicitar contraseña maestra de nuevo",
"txt_max_access_count": "Número máximo de accesos",
"txt_middle_name": "Segundo nombre",
- "txt_drag_to_reorder": "Arrastre para reordenar",
"txt_move": "Mover",
+ "txt_move_up": "Mover arriba",
+ "txt_move_down": "Mover abajo",
"txt_move_selected_items": "Mover elementos seleccionados",
"txt_moved_selected_items": "Elementos seleccionados movidos",
"txt_name": "Nombre",
diff --git a/webapp/src/lib/i18n/locales/ru.ts b/webapp/src/lib/i18n/locales/ru.ts
index 2829b14..ed1fdf7 100644
--- a/webapp/src/lib/i18n/locales/ru.ts
+++ b/webapp/src/lib/i18n/locales/ru.ts
@@ -550,8 +550,9 @@ const ru: Record = {
"txt_master_password_reprompt_2": "Повторный запрос мастер-пароля",
"txt_max_access_count": "Максимальное количество доступов",
"txt_middle_name": "Второе имя",
- "txt_drag_to_reorder": "Перетащите, чтобы изменить порядок",
"txt_move": "Переместить",
+ "txt_move_up": "Переместить вверх",
+ "txt_move_down": "Переместить вниз",
"txt_move_selected_items": "Переместить выбранные элементы",
"txt_moved_selected_items": "Перемещены выбранные элементы",
"txt_name": "Имя",
diff --git a/webapp/src/lib/i18n/locales/zh-CN.ts b/webapp/src/lib/i18n/locales/zh-CN.ts
index 54abf07..cdf373f 100644
--- a/webapp/src/lib/i18n/locales/zh-CN.ts
+++ b/webapp/src/lib/i18n/locales/zh-CN.ts
@@ -550,8 +550,9 @@ const zhCN: Record = {
"txt_master_password_reprompt_2": "主密码二次确认",
"txt_max_access_count": "最大访问次数",
"txt_middle_name": "中间名",
- "txt_drag_to_reorder": "拖动调整顺序",
"txt_move": "移动",
+ "txt_move_up": "上移",
+ "txt_move_down": "下移",
"txt_move_selected_items": "移动所选项目",
"txt_moved_selected_items": "已移动所选项目",
"txt_name": "名称",
diff --git a/webapp/src/lib/i18n/locales/zh-TW.ts b/webapp/src/lib/i18n/locales/zh-TW.ts
index 71da06b..7d6a240 100644
--- a/webapp/src/lib/i18n/locales/zh-TW.ts
+++ b/webapp/src/lib/i18n/locales/zh-TW.ts
@@ -550,8 +550,9 @@ const zhTW: Record = {
"txt_master_password_reprompt_2": "主密碼二次確認",
"txt_max_access_count": "最大訪問次數",
"txt_middle_name": "中間名",
- "txt_drag_to_reorder": "拖動調整順序",
"txt_move": "移動",
+ "txt_move_up": "上移",
+ "txt_move_down": "下移",
"txt_move_selected_items": "移動所選項目",
"txt_moved_selected_items": "已移動所選項目",
"txt_name": "名稱",
diff --git a/webapp/src/styles/management.css b/webapp/src/styles/management.css
index bd06b23..f22ace6 100644
--- a/webapp/src/styles/management.css
+++ b/webapp/src/styles/management.css
@@ -587,46 +587,21 @@
opacity var(--dur-fast) var(--ease-smooth);
}
-.website-row.is-dragging {
- @apply opacity-50;
- border-color: rgba(37, 99, 235, 0.24);
- background: color-mix(in srgb, var(--panel-soft) 92%, white 8%);
- box-shadow: var(--shadow-sm);
+.website-order-actions {
+ @apply grid gap-1;
}
-.website-drag-btn {
- @apply relative h-12 w-7 min-w-7 cursor-grab gap-0 overflow-visible rounded-[10px] p-0 opacity-[0.82];
+.website-order-btn {
+ @apply h-[22px] w-7 min-w-7 gap-0 rounded-[8px] p-0;
color: var(--muted);
- border-color: transparent;
- background: transparent;
- box-shadow: none;
- touch-action: none;
- -webkit-user-select: none;
- user-select: none;
}
-.website-drag-btn:hover {
+.website-order-btn:hover:not(:disabled) {
color: var(--primary-strong);
- border-color: transparent;
- background: transparent;
- box-shadow: none;
- opacity: 1;
}
-.website-drag-btn:active {
- cursor: grabbing;
- border-color: transparent;
- background: transparent;
- box-shadow: none;
-}
-
-.website-drag-btn::before {
- content: '';
- @apply absolute -inset-2 rounded-xl;
-}
-
-.website-drag-btn .btn-icon {
- @apply opacity-90;
+.website-order-btn:disabled {
+ @apply opacity-35;
}
.website-match-select {
diff --git a/webapp/src/styles/vault.css b/webapp/src/styles/vault.css
index 81a2b1c..63cfdc1 100644
--- a/webapp/src/styles/vault.css
+++ b/webapp/src/styles/vault.css
@@ -779,7 +779,7 @@
.totp-code-row {
@apply grid w-full min-w-0 max-w-none items-center gap-2.5 rounded-xl border p-3;
- grid-template-columns: auto minmax(0, 1fr) auto;
+ grid-template-columns: minmax(0, 1fr) auto;
border-color: #e2e8f0;
background: #f8fafc;
transition:
@@ -790,52 +790,10 @@
opacity var(--dur-fast) var(--ease-smooth);
}
-.totp-code-row.is-dragging {
- @apply z-[2];
- border-color: rgba(37, 99, 235, 0.3);
- background: color-mix(in srgb, var(--panel) 88%, white 12%);
- box-shadow: 0 18px 36px rgba(15, 23, 42, 0.14);
-}
-
.totp-code-info {
@apply flex min-w-0 items-center gap-2.5;
}
-.totp-drag-btn {
- @apply relative h-[34px] w-6 min-w-6 cursor-grab self-center overflow-visible rounded-[10px] p-0 opacity-[0.82];
- color: var(--muted);
- touch-action: none;
- -webkit-user-select: none;
- user-select: none;
- border-color: transparent;
- background: transparent;
- box-shadow: none;
-}
-
-.totp-drag-btn:hover {
- color: var(--primary-strong);
- border-color: transparent;
- background: transparent;
- box-shadow: none;
- opacity: 1;
-}
-
-.totp-drag-btn:active {
- cursor: grabbing;
- border-color: transparent;
- background: transparent;
- box-shadow: none;
-}
-
-.totp-drag-btn::before {
- content: '';
- @apply absolute -inset-2.5 rounded-xl;
-}
-
-.totp-drag-btn .btn-icon {
- @apply opacity-90;
-}
-
.totp-code-main {
@apply flex min-w-0 shrink-0 items-center gap-1.5;
}