dashboard-shell-shell 3.0.5-test.6 → 3.0.5-test.9

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.
Files changed (218) hide show
  1. package/assets/brand/harvester/favicon.png +0 -0
  2. package/assets/brand/suse/favicon.png +0 -0
  3. package/assets/icons/demo.css +539 -0
  4. package/assets/icons/demo.css:Zone.Identifier +0 -0
  5. package/assets/icons/demo_index.html +1131 -0
  6. package/assets/icons/demo_index.html:Zone.Identifier +0 -0
  7. package/assets/icons/iconfont.css +216 -0
  8. package/assets/icons/iconfont.css:Zone.Identifier +0 -0
  9. package/assets/icons/iconfont.js +1 -0
  10. package/assets/icons/iconfont.js:Zone.Identifier +0 -0
  11. package/assets/icons/iconfont.json +324 -0
  12. package/assets/icons/iconfont.json:Zone.Identifier +0 -0
  13. package/assets/icons/iconfont.ttf +0 -0
  14. package/assets/icons/iconfont.ttf:Zone.Identifier +0 -0
  15. package/assets/icons/iconfont.woff +0 -0
  16. package/assets/icons/iconfont.woff2 +0 -0
  17. package/assets/icons/iconfont.woff2:Zone.Identifier +0 -0
  18. package/assets/icons/iconfont.woff:Zone.Identifier +0 -0
  19. package/assets/images/API.svg +3 -0
  20. package/assets/images/action.svg +6 -0
  21. package/assets/images/login/password.svg +20 -0
  22. package/assets/images/login/user.svg +6 -0
  23. package/assets/images/login-bg.png +0 -0
  24. package/assets/images/login-left.png +0 -0
  25. package/assets/images/login-logo.svg +19 -0
  26. package/assets/images/logo.png +0 -0
  27. package/assets/images/pl/half-logo.svg +2 -23
  28. package/assets/images/pl/harvester.png +0 -0
  29. package/assets/images/pl/logo.png +0 -0
  30. package/assets/images/promp-yellow.svg +5 -0
  31. package/assets/images/user.png +0 -0
  32. package/assets/styles/all.scss +63 -0
  33. package/assets/styles/app.scss +4 -0
  34. package/assets/styles/base/_basic.scss +2 -2
  35. package/assets/styles/base/_mixins.scss +1 -1
  36. package/assets/styles/base/_typography.scss +2 -1
  37. package/assets/styles/base/_variables.scss +14 -7
  38. package/assets/styles/global/_button.scss +43 -25
  39. package/assets/styles/global/_columns.scss +3 -1
  40. package/assets/styles/global/_form.scss +45 -13
  41. package/assets/styles/global/_labeled-input.scss +54 -26
  42. package/assets/styles/global/_layout.scss +8 -3
  43. package/assets/styles/global/_select.scss +25 -17
  44. package/assets/styles/global/_table.scss +7 -1
  45. package/assets/styles/global/_tooltip.scss +56 -8
  46. package/assets/styles/themes/_dark.scss +3 -0
  47. package/assets/styles/themes/_light.scss +66 -43
  48. package/assets/styles/vendor/vue-select.scss +22 -9
  49. package/assets/translations/en-us.yaml +28 -4
  50. package/assets/translations/zh-hans.yaml +452 -189
  51. package/components/ActionDropdown.vue +2 -1
  52. package/components/ActionMenu.vue +2 -2
  53. package/components/ActionMenuShell.vue +2 -0
  54. package/components/AppModal.vue +46 -5
  55. package/components/BrandImage.vue +1 -0
  56. package/components/ButtonDropdown.vue +26 -4
  57. package/components/ButtonMultiAction.vue +1 -0
  58. package/components/ClusterIconMenu.vue +1 -1
  59. package/components/CodeMirror.vue +20 -6
  60. package/components/ConsumptionGauge.vue +24 -5
  61. package/components/CopyToClipboard.vue +15 -0
  62. package/components/CruResource.vue +9 -8
  63. package/components/CruResourceFooter.vue +2 -2
  64. package/components/DashboardOptions.vue +29 -17
  65. package/components/DotState.vue +84 -0
  66. package/components/Drawer/Chrome.vue +2 -2
  67. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +22 -22
  68. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +1 -1
  69. package/components/Drawer/ResourceDetailDrawer/index.vue +2 -1
  70. package/components/ExplorerMembers.vue +18 -3
  71. package/components/ExplorerProjectsNamespaces.vue +19 -5
  72. package/components/GlobalRoleBindings.vue +112 -48
  73. package/components/GrafanaDashboard.vue +4 -4
  74. package/components/GrowlManager.vue +3 -1
  75. package/components/HardwareResourceGauge.vue +39 -3
  76. package/components/IndentedPanel.vue +4 -10
  77. package/components/InfoBox.vue +3 -3
  78. package/components/InputOrDisplay.vue +28 -2
  79. package/components/LabelValue.vue +20 -1
  80. package/components/ModalWithCard.vue +12 -3
  81. package/components/PodSecurityAdmission.vue +1 -1
  82. package/components/PromptModal.vue +1 -1
  83. package/components/PromptRemove.vue +30 -11
  84. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +1 -3
  85. package/components/Resource/Detail/Metadata/KeyValue.vue +8 -4
  86. package/components/Resource/Detail/Metadata/index.vue +3 -1
  87. package/components/Resource/Detail/TitleBar/Title.vue +4 -3
  88. package/components/Resource/Detail/TitleBar/Top.vue +2 -0
  89. package/components/Resource/Detail/TitleBar/index.vue +109 -24
  90. package/components/ResourceDetail/Masthead/legacy.vue +181 -38
  91. package/components/ResourceDetail/legacy.vue +32 -14
  92. package/components/ResourceList/Masthead.vue +226 -54
  93. package/components/ResourceList/ResourceLoadingIndicator.vue +5 -2
  94. package/components/ResourceTable.vue +24 -2
  95. package/components/SideNav.vue +74 -20
  96. package/components/SortableTable/THead.vue +33 -3
  97. package/components/SortableTable/index.vue +1016 -463
  98. package/components/SortableTable/paging.js +26 -16
  99. package/components/SortableTable/selection.js +2 -2
  100. package/components/Tabbed/Tab.vue +3 -3
  101. package/components/Tabbed/index.vue +47 -29
  102. package/components/YamlEditor.vue +0 -1
  103. package/components/auth/Principal.vue +37 -13
  104. package/components/auth/RoleDetailEdit.vue +58 -7
  105. package/components/auth/SelectPrincipal.vue +1 -0
  106. package/components/breadcrumb/index.vue +316 -0
  107. package/components/form/ArrayList.vue +41 -33
  108. package/components/form/ArrayListGrouped.vue +10 -2
  109. package/components/form/ArrayListSelect.vue +1 -1
  110. package/components/form/BannerSettings.vue +64 -59
  111. package/components/form/ChangePassword.vue +4 -4
  112. package/components/form/ColorInput.vue +32 -8
  113. package/components/form/Footer.vue +11 -8
  114. package/components/form/InputWithSelect.vue +8 -5
  115. package/components/form/KeyValue.vue +47 -7
  116. package/components/form/LabeledSelect.vue +214 -242
  117. package/components/form/Labels.vue +3 -3
  118. package/components/form/MatchExpressions.vue +24 -7
  119. package/components/form/Members/ClusterPermissionsEditor.vue +1 -2
  120. package/components/form/Members/MembershipEditor.vue +1 -1
  121. package/components/form/NameNsDescription.vue +59 -20
  122. package/components/form/Password.vue +16 -7
  123. package/components/form/PodAffinity.vue +4 -5
  124. package/components/form/ResourceQuota/Namespace.vue +4 -4
  125. package/components/form/ResourceQuota/NamespaceRow.vue +18 -17
  126. package/components/form/ResourceQuota/Project.vue +4 -4
  127. package/components/form/ResourceQuota/ProjectRow.vue +3 -6
  128. package/components/form/Select.vue +5 -2
  129. package/components/form/SimpleSecretSelector.vue +29 -9
  130. package/components/form/Taints.vue +2 -1
  131. package/components/form/UnitInput.vue +8 -3
  132. package/components/form/WorkloadPorts.vue +143 -123
  133. package/components/formatter/BadgeStateFormatter.vue +8 -5
  134. package/components/formatter/LiveDate.vue +3 -3
  135. package/components/nav/Favorite.vue +5 -1
  136. package/components/nav/Group.vue +132 -99
  137. package/components/nav/Header.vue +124 -27
  138. package/components/nav/HeaderPageActionMenu.vue +1 -0
  139. package/components/nav/NamespaceFilter.vue +20 -17
  140. package/components/nav/TopLevelMenu.vue +182 -119
  141. package/components/nav/Type.vue +63 -41
  142. package/composables/useClickOutside.ts +1 -1
  143. package/config/private-label.js +15 -11
  144. package/config/product/auth.js +17 -7
  145. package/config/product/settings.js +19 -9
  146. package/config/settings.ts +28 -0
  147. package/config/table-headers.js +3 -2
  148. package/dialog/ForceMachineRemoveDialog.vue +2 -2
  149. package/dialog/ScalePoolDownDialog.vue +2 -2
  150. package/edit/management.cattle.io.user.vue +17 -4
  151. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +19 -19
  152. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +31 -31
  153. package/edit/monitoring.coreos.com.alertmanagerconfig/routeConfig.vue +36 -12
  154. package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +6 -6
  155. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +10 -10
  156. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +4 -4
  157. package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +4 -4
  158. package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +1 -1
  159. package/edit/monitoring.coreos.com.receiver/types/email.vue +6 -6
  160. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +10 -10
  161. package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +5 -5
  162. package/edit/monitoring.coreos.com.receiver/types/slack.vue +4 -4
  163. package/edit/namespace.vue +1 -2
  164. package/edit/token.vue +31 -12
  165. package/edit/workload/index.vue +4 -4
  166. package/list/management.cattle.io.setting.vue +22 -13
  167. package/list/management.cattle.io.user.vue +7 -3
  168. package/list/namespace.vue +3 -0
  169. package/list/provisioning.cattle.io.cluster.vue +6 -7
  170. package/mixins/brand.js +17 -0
  171. package/package.json +1 -1
  172. package/pages/account/pri.vue +229 -0
  173. package/pages/auth/login.vue +220 -52
  174. package/pages/auth/setup.vue +142 -19
  175. package/pages/c/_cluster/_product/namespaces.vue +5 -5
  176. package/pages/c/_cluster/auth/roles/index.vue +56 -5
  177. package/pages/c/_cluster/monitoring/monitor/index.vue +2 -2
  178. package/pages/c/_cluster/settings/banners.vue +174 -102
  179. package/pages/c/_cluster/settings/brand.vue +350 -302
  180. package/pages/c/_cluster/settings/performance.vue +61 -38
  181. package/pages/home.vue +70 -30
  182. package/pages/prefs.vue +27 -25
  183. package/pkg/tsconfig.json +9 -9
  184. package/pkg/vue.config.js +1 -1
  185. package/plugins/dashboard-store/resource-class.js +28 -27
  186. package/promptRemove/mixin/roleDeletionCheck.js +2 -2
  187. package/public/index.html +4 -4
  188. package/rancher-components/BadgeState/BadgeState.vue +38 -55
  189. package/rancher-components/Banner/Banner.vue +12 -8
  190. package/rancher-components/Card/Card.vue +7 -8
  191. package/rancher-components/Form/Checkbox/Checkbox.vue +4 -0
  192. package/rancher-components/Form/LabeledInput/LabeledInput.vue +42 -3
  193. package/rancher-components/Form/Radio/RadioButton.vue +35 -11
  194. package/rancher-components/Form/Radio/RadioGroup.vue +13 -5
  195. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +3 -3
  196. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +1 -0
  197. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +12 -4
  198. package/rancher-components/RcDropdown/RcDropdown.vue +35 -7
  199. package/rancher-components/RcDropdown/RcDropdownItem.vue +2 -2
  200. package/rancher-components/RcDropdown/RcDropdownMenu.vue +12 -6
  201. package/rancher-components/RcDropdown/types.ts +1 -0
  202. package/rancher-components/StringList/StringList.vue +1 -1
  203. package/scripts/publish-shell.sh +1 -1
  204. package/static/favicon.ico +0 -0
  205. package/static/favicon.png +0 -0
  206. package/static/loading-indicator.html +3 -3
  207. package/store/i18n.js +5 -2
  208. package/store/modal.ts +3 -3
  209. package/store/prefs.js +11 -4
  210. package/store/type-map.js +32 -2
  211. package/types/shell/index.d.ts +78 -97
  212. package/utils/error.js +89 -8
  213. package/utils/errorTranslate.json +1351 -0
  214. package/utils/router.js +21 -0
  215. package/utils/select.js +26 -3
  216. package/utils/string.js +8 -5
  217. package/utils/title.ts +1 -1
  218. package/vue.config.js +1 -1
@@ -112,8 +112,7 @@ export default {
112
112
 
113
113
  <template>
114
114
  <div
115
- class="color-input"
116
- :class="{[mode]:mode, disabled: isDisabled}"
115
+ class="color-input-box"
117
116
  :data-testid="componentTestid + '-color-input'"
118
117
  :tabindex="isDisabled ? -1 : 0"
119
118
  @keydown.space.prevent
@@ -135,6 +134,7 @@ export default {
135
134
  </label>
136
135
  <div
137
136
  :data-testid="componentTestid + '-color-input_preview-container'"
137
+ :class="{[mode]:mode, disabled: isDisabled}"
138
138
  class="preview-container"
139
139
  @click.stop="$refs.input.click($event)"
140
140
  >
@@ -143,28 +143,31 @@ export default {
143
143
  class="color-display"
144
144
  >
145
145
  <input
146
+ style="margin-bottom: 6px;"
146
147
  ref="input"
147
148
  :aria-disabled="isDisabled ? 'true' : 'false'"
148
149
  :aria-label="ariaLabel"
149
150
  :aria-describedby="ariaDescribedBy"
150
151
  type="color"
152
+ class="color-input"
151
153
  :disabled="isDisabled"
152
154
  tabindex="-1"
153
155
  :value="inputValue"
154
156
  @input="$emit('update:value', $event.target.value)"
155
157
  >
156
158
  </span>
157
- <span class="text-muted color-value">{{ inputValue }}</span>
159
+ <span class="color-value">{{ inputValue }}</span>
158
160
  </div>
159
161
  </div>
160
162
  </template>
161
163
 
162
164
  <style lang='scss' scoped>
163
- .color-input {
164
- border: 1px solid var(--border);
165
- border-radius: var(--border-radius);
166
- padding: 10px;
167
-
165
+ .color-input-box {
166
+ display: flex;
167
+ .text-label {
168
+ display: flex;
169
+ align-items: center;
170
+ }
168
171
  &:focus-visible {
169
172
  @include focus-outline;
170
173
  }
@@ -201,6 +204,26 @@ export default {
201
204
 
202
205
  .color-value {
203
206
  margin-left: 4px;
207
+ color: var(--input-label);
208
+ }
209
+
210
+ &.disabled, &.disabled .selected, &[disabled], &[disabled]:hover {
211
+ color: var(--input-disabled-text);
212
+ outline-width: 0;
213
+ border-color: var(--input-disabled-border);
214
+ cursor: not-allowed;
215
+
216
+ label, span, div, input {
217
+ cursor: not-allowed !important;
218
+ }
219
+
220
+ .color-value {
221
+ color: var(--muted);
222
+ }
223
+
224
+ &::placeholder {
225
+ color: var(--input-disabled-placeholder);
226
+ }
204
227
  }
205
228
  }
206
229
 
@@ -226,4 +249,5 @@ export default {
226
249
  }
227
250
  }
228
251
  }
252
+
229
253
  </style>
@@ -55,7 +55,7 @@ export default defineComponent({
55
55
  <div v-if="!isView">
56
56
  <div class="spacer-small" />
57
57
 
58
- <div
58
+ <!-- <div
59
59
  v-for="(err,idx) in errors"
60
60
  :key="idx"
61
61
  >
@@ -65,7 +65,7 @@ export default defineComponent({
65
65
  :closable="true"
66
66
  @close="closeError(idx)"
67
67
  />
68
- </div>
68
+ </div> -->
69
69
  <div class="buttons">
70
70
  <div class="left">
71
71
  <slot name="left" />
@@ -97,9 +97,10 @@ export default defineComponent({
97
97
 
98
98
  <style lang='scss'>
99
99
  .buttons {
100
- display: grid;
100
+ /* display: grid;
101
101
  grid-template-areas: "left right";
102
- grid-template-columns: "min-content auto";
102
+ grid-template-columns: "min-content auto"; */
103
+ display: flex;
103
104
 
104
105
  .left {
105
106
  grid-area: left;
@@ -111,11 +112,13 @@ export default defineComponent({
111
112
  }
112
113
 
113
114
  .right {
114
- grid-area: right;
115
- text-align: right;
116
-
115
+ /* grid-area: right;
116
+ text-align: right; */
117
+ display: flex;
118
+ justify-content: flex-end;
117
119
  .btn, button {
118
- margin: 0 0 0 $column-gutter;
120
+ /* margin: 0 0 0 $column-gutter; */
121
+ margin: 0 10px 0 0px;
119
122
  }
120
123
  }
121
124
  }
@@ -217,6 +217,7 @@ export default {
217
217
 
218
218
  &.labeled-select {
219
219
  .selected {
220
+ background-color: var(--input-bg);
220
221
  color: var(--input-text);
221
222
  text-align: center;
222
223
  margin-right: 1em;
@@ -269,19 +270,19 @@ export default {
269
270
  margin-right: 0;
270
271
 
271
272
  &:hover:not(.focused):not(.disabled):not(.view) {
272
- border: 1px solid var(--input-hover-border) !important;
273
+ border: 0px solid var(--input-hover-border) !important;
273
274
  }
274
275
 
275
276
  &.focused {
276
- border: 1px solid var(--outline) !important;
277
+ border: 0px solid var(--outline) !important;
277
278
  }
278
279
 
279
280
  &:hover:not(.focused):not(.disabled) {
280
- border: 1px solid var(--input-hover-border) !important;
281
+ border: 0px solid var(--input-hover-border) !important;
281
282
  }
282
283
 
283
284
  &.focused {
284
- border: 1px solid var(--outline) !important;
285
+ border: 0px solid var(--outline) !important;
285
286
  }
286
287
 
287
288
  &.labeled-select.focused :deep(),
@@ -291,7 +292,8 @@ export default {
291
292
 
292
293
  &.labeled-select:not(.disabled):not(.view) :deep(),
293
294
  &.unlabeled-select:not(.disabled):not(.view) :deep() {
294
- border: solid 1px var(--input-border);
295
+ /* border: solid 1px var(--input-border); */
296
+ height: 32px;
295
297
  }
296
298
 
297
299
  &.labeled-select :deep(),
@@ -302,6 +304,7 @@ export default {
302
304
  // position: relative;
303
305
 
304
306
  .vs__selected {
307
+ background-color: var(--input-bg);
305
308
  color: var(--input-text);
306
309
  }
307
310
 
@@ -283,7 +283,7 @@ export default {
283
283
  const gap = this.canRemove ? ' 50px' : '';
284
284
  const size = 2 + this.extraColumns.length;
285
285
 
286
- return `grid-template-columns: repeat(${ size }, 1fr)${ gap };`;
286
+ return `grid-template-columns: repeat(${ size }, 400px)${ gap };`;
287
287
  },
288
288
  usedKeyOptions() {
289
289
  return this.rows.map((row) => row[this.keyName]);
@@ -330,7 +330,7 @@ export default {
330
330
  },
331
331
 
332
332
  getRows(value) {
333
- const rows = [];
333
+ let rows = [];
334
334
 
335
335
  if ( this.asMap ) {
336
336
  const input = value || {};
@@ -403,6 +403,18 @@ export default {
403
403
  obj.binary = false;
404
404
  obj.canEncode = this.handleBase64;
405
405
  obj.supported = true;
406
+
407
+ // 上传镜像问题
408
+ const s = this.rows.filter(item => {
409
+ // 如果 item.key 或 obj.key 为空,直接保留
410
+ if (!item.key || !obj.key) {
411
+ return true;
412
+ }
413
+ // 两者都有值时才比较
414
+ return item.key !== obj.key;
415
+ });
416
+ this.rows = s;
417
+
406
418
  this.rows.push(obj);
407
419
  this.queueUpdate();
408
420
  this.$nextTick(() => {
@@ -466,8 +478,11 @@ export default {
466
478
  const valueName = this.valueName;
467
479
 
468
480
  for ( const row of this.rows ) {
469
- let value = (row[valueName] || '');
481
+ // let value = (row[valueName] || '');
482
+ // const key = (row[keyName] || '').trim();
483
+
470
484
  const key = (row[keyName] || '').trim();
485
+ let value = (row[valueName] || '').trim();
471
486
 
472
487
  if (value && typeOf(value) === 'object') {
473
488
  out[key] = JSON.parse(JSON.stringify(value));
@@ -588,6 +603,7 @@ export default {
588
603
  </script>
589
604
  <template>
590
605
  <div class="key-value">
606
+ <!-- 标题部分:如果传了 title 或者插槽 title 才显示 -->
591
607
  <div
592
608
  v-if="title || $slots.title"
593
609
  class="clearfix"
@@ -595,6 +611,7 @@ export default {
595
611
  <slot name="title">
596
612
  <h3>
597
613
  {{ title }}
614
+ <!-- 标题右侧提示信息 -->
598
615
  <i
599
616
  v-if="titleProtip"
600
617
  v-clean-tooltip="titleProtip"
@@ -603,6 +620,8 @@ export default {
603
620
  </h3>
604
621
  </slot>
605
622
  </div>
623
+
624
+ <!-- 整个 Key-Value 表格容器 -->
606
625
  <div
607
626
  class="kv-container"
608
627
  role="grid"
@@ -611,6 +630,8 @@ export default {
611
630
  :aria-colcount="extraColumns.length + 2"
612
631
  :style="containerStyle"
613
632
  >
633
+
634
+ <!-- 表头:有数据或者处于 view 模式才显示 -->
614
635
  <template v-if="rows.length || isView">
615
636
  <div class="rowgroup">
616
637
  <div class="row">
@@ -660,6 +681,8 @@ export default {
660
681
  </div>
661
682
  </div>
662
683
  </template>
684
+
685
+ <!-- 如果是 view 模式但没有数据,显示占位符 -->
663
686
  <template v-if="!rows.length && isView">
664
687
  <div class="rowgroup">
665
688
  <div class="row">
@@ -678,6 +701,8 @@ export default {
678
701
  </div>
679
702
  </div>
680
703
  </template>
704
+
705
+ <!-- 遍历 rows 渲染每一行 -->
681
706
  <template
682
707
  v-for="(row,i) in rows"
683
708
  v-else
@@ -786,7 +811,7 @@ export default {
786
811
  :disabled="disabled"
787
812
  :mode="mode"
788
813
  :placeholder="_valuePlaceholder"
789
- :min-height="40"
814
+ :min-height="32"
790
815
  :spellcheck="false"
791
816
  :aria-label="t('generic.ariaLabel.value', {index: i+1})"
792
817
  @update:value="queueUpdate"
@@ -865,6 +890,8 @@ export default {
865
890
  </div>
866
891
  </template>
867
892
  </div>
893
+
894
+ <!-- 底部新增/从文件导入 -->
868
895
  <div
869
896
  v-if="(addAllowed || readAllowed) && !isView"
870
897
  class="footer mt-10"
@@ -873,6 +900,8 @@ export default {
873
900
  name="add"
874
901
  :add="add"
875
902
  >
903
+
904
+ <!-- 添加按钮 -->
876
905
  <button
877
906
  v-if="addAllowed"
878
907
  type="button"
@@ -889,6 +918,8 @@ export default {
889
918
  :class="loading ? ['icon-lg', 'icon-spinner','icon-spin']: [addIcon]"
890
919
  /> {{ _addLabel }}
891
920
  </button>
921
+
922
+ <!-- 从文件读取 -->
892
923
  <FileSelector
893
924
  v-if="readAllowed"
894
925
  :aria-label="t('generic.ariaLabel.readKeyValue')"
@@ -913,8 +944,8 @@ export default {
913
944
  }
914
945
  .kv-container {
915
946
  display: grid;
916
- align-items: center;
917
- column-gap: 20px;
947
+ /* align-items: center; */
948
+ column-gap: 10px;
918
949
 
919
950
  .key-value-label {
920
951
  margin-bottom: 0;
@@ -939,6 +970,9 @@ export default {
939
970
  }
940
971
  &.value textarea {
941
972
  padding: 10px 10px 10px 10px;
973
+ min-height:32px;
974
+ line-height: 12px;
975
+ border: solid var(--border-width) var(--input-border);
942
976
  }
943
977
 
944
978
  .text-monospace:not(.conceal) {
@@ -977,8 +1011,14 @@ export default {
977
1011
  }
978
1012
  }
979
1013
  input {
980
- height: 40px;
1014
+ height: 32px;
981
1015
  line-height: 1;
1016
+ border: solid var(--border-width) var(--input-border);
1017
+ padding: 4px 11px;
1018
+ &:hover{
1019
+ border: solid var(--border-width) var(--input-border);
1020
+ box-shadow: 0 4px 6px 0 var(--input-border-box-shadow);
1021
+ }
982
1022
  }
983
1023
  .footer {
984
1024
  .protip {