dashboard-shell-shell 1.0.112 → 1.0.113

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 (161) hide show
  1. package/.DS_Store +0 -0
  2. package/assets/icons/demo.css +539 -0
  3. package/assets/icons/demo_index.html +1131 -0
  4. package/assets/icons/iconfont.css +200 -0
  5. package/assets/icons/iconfont.js +1 -0
  6. package/assets/icons/iconfont.json +296 -0
  7. package/assets/icons/iconfont.ttf +0 -0
  8. package/assets/icons/iconfont.woff +0 -0
  9. package/assets/icons/iconfont.woff2 +0 -0
  10. package/assets/images/API.svg +3 -0
  11. package/assets/images/login/password.svg +20 -0
  12. package/assets/images/login/user.svg +6 -0
  13. package/assets/images/login-bg.png +0 -0
  14. package/assets/images/login-left.png +0 -0
  15. package/assets/images/login-logo.svg +19 -0
  16. package/assets/images/logo.png +0 -0
  17. package/assets/images/pl/harvester.png +0 -0
  18. package/assets/images/promp-yellow.svg +5 -0
  19. package/assets/images/user.png +0 -0
  20. package/assets/styles/all.scss +63 -0
  21. package/assets/styles/app.scss +2 -0
  22. package/assets/styles/base/_basic.scss +8 -2
  23. package/assets/styles/base/_helpers.scss +4 -0
  24. package/assets/styles/base/_typography.scss +2 -1
  25. package/assets/styles/base/_variables.scss +10 -2
  26. package/assets/styles/global/_button.scss +37 -25
  27. package/assets/styles/global/_columns.scss +3 -1
  28. package/assets/styles/global/_form.scss +45 -13
  29. package/assets/styles/global/_labeled-input.scss +50 -25
  30. package/assets/styles/global/_layout.scss +9 -3
  31. package/assets/styles/global/_select.scss +20 -13
  32. package/assets/styles/global/_table.scss +1 -1
  33. package/assets/styles/global/_tooltip.scss +47 -6
  34. package/assets/styles/themes/_dark.scss +1 -0
  35. package/assets/styles/themes/_light.scss +59 -46
  36. package/assets/styles/themes/_suse.scss +1 -0
  37. package/assets/styles/vendor/vue-select.scss +18 -7
  38. package/assets/translations/en-us.yaml +93 -12
  39. package/assets/translations/zh-hans.yaml +278 -141
  40. package/components/ActionDropdown.vue +1 -1
  41. package/components/ActionDropdownShell.vue +71 -0
  42. package/components/ActionMenu.vue +2 -2
  43. package/components/ActionMenuShell.vue +1 -0
  44. package/components/AppModal.vue +78 -6
  45. package/components/AssignTo.vue +25 -11
  46. package/components/AsyncButton.vue +24 -7
  47. package/components/BannerGraphic.vue +1 -0
  48. package/components/ButtonDropdown.vue +26 -4
  49. package/components/ButtonGroup.vue +4 -0
  50. package/components/ButtonMultiAction.vue +1 -0
  51. package/components/CommunityLinks.vue +3 -3
  52. package/components/ConsumptionGauge.vue +24 -5
  53. package/components/CopyToClipboardText.vue +2 -1
  54. package/components/CruResource.vue +12 -7
  55. package/components/CruResourceFooter.vue +2 -2
  56. package/components/DashboardOptions.vue +21 -15
  57. package/components/DetailText.vue +5 -0
  58. package/components/DisableAuthProviderModal.vue +1 -0
  59. package/components/DotState.vue +84 -0
  60. package/components/ExplorerMembers.vue +1 -1
  61. package/components/ExplorerProjectsNamespaces.vue +56 -14
  62. package/components/FixedBanner.vue +19 -12
  63. package/components/GlobalRoleBindings.vue +5 -1
  64. package/components/GrafanaDashboard.vue +4 -4
  65. package/components/GrowlManager.vue +4 -1
  66. package/components/HardwareResourceGauge.vue +39 -3
  67. package/components/InfoBox.vue +3 -3
  68. package/components/InputOrDisplay.vue +28 -2
  69. package/components/LabelValue.vue +16 -1
  70. package/components/LandingPagePreference.vue +5 -3
  71. package/components/LocaleSelector.vue +39 -93
  72. package/components/ModalManager.vue +55 -0
  73. package/components/ModalWithCard.vue +2 -0
  74. package/components/MoveModal.vue +1 -0
  75. package/components/PromptChangePassword.vue +1 -1
  76. package/components/PromptModal.vue +15 -2
  77. package/components/PromptRemove.vue +28 -8
  78. package/components/PromptRestore.vue +1 -0
  79. package/components/ResourceCancelModal.vue +1 -0
  80. package/components/ResourceDetail/Masthead.vue +188 -43
  81. package/components/ResourceDetail/__tests__/Masthead.test.ts +5 -1
  82. package/components/ResourceDetail/index.vue +49 -14
  83. package/components/ResourceList/Masthead.vue +80 -18
  84. package/components/ResourceTable.vue +60 -19
  85. package/components/SideNav.vue +32 -12
  86. package/components/SlideInPanelManager.vue +126 -0
  87. package/components/SortableTable/THead.vue +34 -5
  88. package/components/SortableTable/actions.js +1 -1
  89. package/components/SortableTable/index.vue +649 -142
  90. package/components/SortableTable/paging.js +36 -28
  91. package/components/SortableTable/selection.js +0 -11
  92. package/components/StatusBadge.vue +77 -0
  93. package/components/Tabbed/Tab.vue +3 -3
  94. package/components/Tabbed/index.vue +44 -26
  95. package/components/Wizard.vue +2 -2
  96. package/components/__tests__/AsyncButton.test.ts +2 -2
  97. package/components/__tests__/FixedBanner.test.ts +3 -3
  98. package/components/__tests__/ModalManager.spec.ts +176 -0
  99. package/components/__tests__/SlideInPanelManager.spec.ts +166 -0
  100. package/components/auth/Principal.vue +10 -3
  101. package/components/auth/__tests__/RoleDetailEdit.test.ts +3 -2
  102. package/components/form/ArrayList.vue +123 -85
  103. package/components/form/ArrayListGrouped.vue +10 -2
  104. package/components/form/Command.vue +6 -15
  105. package/components/form/EnvVars.vue +16 -8
  106. package/components/form/Footer.vue +8 -5
  107. package/components/form/HealthCheck.vue +3 -3
  108. package/components/form/HookOption.vue +11 -16
  109. package/components/form/KeyValue.vue +16 -7
  110. package/components/form/LabeledSelect.vue +59 -76
  111. package/components/form/LifecycleHooks.vue +3 -3
  112. package/components/form/MatchExpressions.vue +35 -12
  113. package/components/form/NameNsDescription.vue +147 -115
  114. package/components/form/Networking.vue +20 -12
  115. package/components/form/NodeAffinity.vue +31 -23
  116. package/components/form/NodeScheduling.vue +13 -3
  117. package/components/form/Password.vue +11 -5
  118. package/components/form/PodAffinity.vue +43 -44
  119. package/components/form/Probe.vue +68 -66
  120. package/components/form/ResourceQuota/Project.vue +5 -1
  121. package/components/form/ResourceSelector.vue +7 -9
  122. package/components/form/SSHKnownHosts/KnownHostsEditDialog.vue +6 -3
  123. package/components/form/SSHKnownHosts/__tests__/KnownHostsEditDialog.test.ts +12 -1
  124. package/components/form/SSHKnownHosts/index.vue +16 -2
  125. package/components/form/Security.vue +54 -56
  126. package/components/form/Select.vue +41 -7
  127. package/components/form/ShellInput.vue +5 -1
  128. package/components/form/Tolerations.vue +5 -1
  129. package/components/form/UnitInput.vue +2 -2
  130. package/components/form/ValueFromResource.vue +134 -121
  131. package/components/form/WorkloadPorts.vue +18 -18
  132. package/components/form/__tests__/ArrayList.test.ts +5 -2
  133. package/components/form/__tests__/MatchExpressions.test.ts +12 -12
  134. package/components/form/__tests__/NameNsDescription.test.ts +115 -14
  135. package/components/form/__tests__/Probe.test.ts +12 -8
  136. package/components/form/__tests__/SSHKnownHosts.test.ts +11 -0
  137. package/components/form/__tests__/Select.test.ts +37 -0
  138. package/components/form/__tests__/UnitInput.test.ts +4 -5
  139. package/components/formatter/BadgeStateFormatter.vue +8 -5
  140. package/components/formatter/InternalExternalIP.vue +2 -0
  141. package/components/formatter/SecretData.vue +20 -7
  142. package/components/nav/Favorite.vue +5 -1
  143. package/components/nav/Group.vue +60 -27
  144. package/components/nav/Header.vue +39 -13
  145. package/components/nav/Jump.vue +7 -0
  146. package/components/nav/NamespaceFilter.vue +14 -8
  147. package/components/nav/Pinned.vue +1 -1
  148. package/components/nav/TopLevelMenu.vue +5 -17
  149. package/components/nav/Type.vue +32 -35
  150. package/components/nav/__tests__/TopLevelMenu.test.ts +0 -40
  151. package/components/templates/blank.vue +4 -1
  152. package/components/templates/default.vue +8 -0
  153. package/components/templates/home.vue +10 -1
  154. package/components/templates/plain.vue +10 -1
  155. package/package.json +1 -1
  156. package/store/type-map.js +29 -2
  157. package/utils/error.js +30 -8
  158. package/utils/errorTranslate.json +916 -0
  159. package/components/formatter/ExtensionCache.vue +0 -74
  160. package/components/formatter/Port.vue +0 -24
  161. package/components/formatter/SecretType.vue +0 -41
@@ -28,23 +28,18 @@ export default {
28
28
  },
29
29
 
30
30
  data() {
31
- const selectHook = null;
32
-
33
- const defaultExec = { exec: { command: [] } };
34
- const defaultHttpGet = {
35
- httpGet: {
36
- host: '',
37
- path: '',
38
- port: null,
39
- scheme: '',
40
- httpHeaders: null
41
- }
42
- };
43
-
44
31
  return {
45
- selectHook,
46
- defaultExec,
47
- defaultHttpGet,
32
+ selectHook: null,
33
+ defaultExec: { exec: { command: [] } },
34
+ defaultHttpGet: {
35
+ httpGet: {
36
+ host: '',
37
+ path: '',
38
+ port: null,
39
+ scheme: '',
40
+ httpHeaders: null
41
+ }
42
+ },
48
43
  schemeOptions: ['HTTP', 'HTTPS']
49
44
  };
50
45
  },
@@ -277,7 +277,7 @@ export default {
277
277
  const gap = this.canRemove ? ' 50px' : '';
278
278
  const size = 2 + this.extraColumns.length;
279
279
 
280
- return `grid-template-columns: repeat(${ size }, 1fr)${ gap };`;
280
+ return `grid-template-columns: repeat(${ size }, 400px)${ gap };`;
281
281
  },
282
282
  usedKeyOptions() {
283
283
  return this.rows.map((row) => row[this.keyName]);
@@ -760,7 +760,7 @@ export default {
760
760
  :disabled="disabled || isProtected(row.key)"
761
761
  :mode="mode"
762
762
  :placeholder="_valuePlaceholder"
763
- :min-height="40"
763
+ :min-height="32"
764
764
  :spellcheck="false"
765
765
  :aria-label="t('generic.ariaLabel.value', {index: i})"
766
766
  @update:value="queueUpdate"
@@ -823,7 +823,7 @@ export default {
823
823
  type="button"
824
824
  role="button"
825
825
  :disabled="isView || isProtected(row.key) || disabled"
826
- :aria-label="removeLabel || t('generic.remove')"
826
+ :aria-label="`${removeLabel || t('generic.remove')} ${ i+1 }`"
827
827
  class="btn role-link"
828
828
  @click="remove(i)"
829
829
  >
@@ -837,7 +837,7 @@ export default {
837
837
  </div>
838
838
  <div
839
839
  v-if="(addAllowed || readAllowed) && !isView"
840
- class="footer mt-20"
840
+ class="footer mt-10"
841
841
  >
842
842
  <slot
843
843
  name="add"
@@ -880,8 +880,8 @@ export default {
880
880
  }
881
881
  .kv-container {
882
882
  display: grid;
883
- align-items: center;
884
- column-gap: 20px;
883
+ /* align-items: center; */
884
+ column-gap: 10px;
885
885
  label {
886
886
  margin-bottom: 0;
887
887
  }
@@ -905,6 +905,9 @@ export default {
905
905
  }
906
906
  &.value textarea {
907
907
  padding: 10px 10px 10px 10px;
908
+ min-height:32px;
909
+ line-height: 12px;
910
+ border: solid var(--border-width) var(--input-border);
908
911
  }
909
912
 
910
913
  .text-monospace:not(.conceal) {
@@ -943,8 +946,14 @@ export default {
943
946
  }
944
947
  }
945
948
  input {
946
- height: 40px;
949
+ height: 32px;
947
950
  line-height: 1;
951
+ border: solid var(--border-width) var(--input-border);
952
+ padding: 4px 11px;
953
+ &:hover{
954
+ border: solid var(--border-width) var(--input-border);
955
+ box-shadow: 0 4px 6px 0 var(--input-border-box-shadow);
956
+ }
948
957
  }
949
958
  .footer {
950
959
  .protip {
@@ -50,6 +50,10 @@ export default {
50
50
  default: false,
51
51
  type: Boolean
52
52
  },
53
+ isLabel: {
54
+ default: false,
55
+ type: Boolean
56
+ },
53
57
  localizedLabel: {
54
58
  default: false,
55
59
  type: Boolean
@@ -227,7 +231,7 @@ export default {
227
231
  },
228
232
 
229
233
  positionDropdown(dropdownList, component, { width }) {
230
- calculatePosition(dropdownList, component, width, this.placement);
234
+ calculatePosition(dropdownList, component, width, this.placement, 'label', this.isLabel);
231
235
  },
232
236
 
233
237
  get,
@@ -278,6 +282,25 @@ export default {
278
282
  </script>
279
283
 
280
284
  <template>
285
+ <div style="display: flex;">
286
+ <div
287
+ :class="{ 'labeled-container': true, raised, empty, [mode]: true, 'is-lable': isLabel }"
288
+ :style="{ border: 'none', width: '160px',lineHeight: '32px' }"
289
+ >
290
+ <label v-if="hasLabel" :id="`labeled-select-uid-${uid}`">
291
+ <t
292
+ v-if="labelKey"
293
+ :k="labelKey"
294
+ />
295
+ <template v-else-if="label">{{ label }}</template>
296
+
297
+ <span
298
+ v-if="requiredField"
299
+ class="required"
300
+ >*</span>
301
+ </label>
302
+ </div>
303
+ <!-- label -->
281
304
  <div
282
305
  ref="select"
283
306
  class="labeled-select"
@@ -296,12 +319,13 @@ export default {
296
319
  }
297
320
  ]"
298
321
  :tabindex="isView || disabled ? -1 : 0"
322
+ role="listbox"
299
323
  @click="focusSearch"
300
324
  @keydown.enter="focusSearch"
301
325
  @keydown.down.prevent="focusSearch"
302
326
  @keydown.space.prevent="focusSearch"
303
327
  >
304
- <div
328
+ <!-- <div
305
329
  :class="{ 'labeled-container': true, raised, empty, [mode]: true }"
306
330
  :style="{ border: 'none' }"
307
331
  >
@@ -320,7 +344,7 @@ export default {
320
344
  class="required"
321
345
  >*</span>
322
346
  </label>
323
- </div>
347
+ </div> -->
324
348
  <v-select
325
349
  ref="select-input"
326
350
  :aria-labelledby="hasLabel ? `labeled-select-uid-${uid}` : ''"
@@ -344,7 +368,7 @@ export default {
344
368
  :modelValue="value != null && !loading ? value : ''"
345
369
  :dropdown-should-open="dropdownShouldOpen"
346
370
  :tabindex="-1"
347
- role="listbox"
371
+ role="listitem"
348
372
  @update:modelValue="$emit('selecting', $event); $emit('update:value', $event)"
349
373
  @search:blur="onBlur"
350
374
  @search:focus="onFocus"
@@ -354,6 +378,7 @@ export default {
354
378
  @option:selecting="$emit('selecting', $event)"
355
379
  @option:deselecting="$emit('deselecting', $event)"
356
380
  >
381
+
357
382
  <template #option="option">
358
383
  <template v-if="showTagPrompts">
359
384
  <div class="only-user-opts">
@@ -373,9 +398,9 @@ export default {
373
398
  </div>
374
399
  </div>
375
400
  </template>
376
- <template v-else-if="option.kind === 'divider'">
377
- <hr>
378
- </template>
401
+ <!-- <template v-else-if="option.kind === 'divider'">
402
+ <hr role="none">
403
+ </template> -->
379
404
  <template v-else-if="option.kind === 'highlighted'">
380
405
  <div class="option-kind-highlighted">
381
406
  {{ option.label }}
@@ -466,6 +491,7 @@ export default {
466
491
  :value="validationMessage"
467
492
  />
468
493
  </div>
494
+ </div>
469
495
  </template>
470
496
 
471
497
  <style lang='scss' scoped>
@@ -475,7 +501,11 @@ export default {
475
501
  // Prevent namespace field from wiggling or changing
476
502
  // height when it is toggled from a LabeledInput to a
477
503
  // LabeledSelect.
504
+ &:deep() .vs__actions:after {
505
+ padding-top: 10px;
506
+ }
478
507
  padding-bottom: 1px;
508
+ /* flex: 1; */
479
509
 
480
510
  &.no-label.compact-input {
481
511
  :deep() .vs__actions:after {
@@ -489,7 +519,7 @@ export default {
489
519
 
490
520
  &.no-label:not(.compact-input) {
491
521
  height: $input-height;
492
- padding-top: 4px;
522
+ padding-top: 0px;
493
523
 
494
524
  :deep() .vs__actions:after {
495
525
  top: 0;
@@ -551,6 +581,7 @@ export default {
551
581
 
552
582
  &.taggable {
553
583
  :deep() .vs__selected-options {
584
+
554
585
  padding: 3px 0;
555
586
  .vs__selected {
556
587
  border-color: var(--accent-btn);
@@ -576,7 +607,7 @@ export default {
576
607
  }
577
608
 
578
609
  :deep() .vs__selected-options {
579
- margin-top: -5px;
610
+ margin-top: 0px;
580
611
  }
581
612
 
582
613
  :deep() .v-select:not(.vs--single) {
@@ -588,7 +619,7 @@ export default {
588
619
  :deep() .vs__actions {
589
620
  &:after {
590
621
  position: relative;
591
- top: -10px;
622
+ top: 0px;
592
623
  }
593
624
  }
594
625
 
@@ -626,73 +657,21 @@ export default {
626
657
  }
627
658
  }
628
659
 
629
- $icon-size: 18px;
630
-
631
- // This represents the drop down area. Note - it might be attached to body and NOT the parent label select div
632
- .vs__dropdown-menu {
633
-
634
- // Styling for individual options
635
- .vs__dropdown-option .vs__option-kind {
636
- &-group {
637
- display: flex;
638
- align-items: center;
639
-
640
- i { // icon
641
- width: $icon-size;
642
- }
643
-
644
- > b { // group label
645
- flex: 1;
646
- }
647
-
648
- > div { // badge
649
- background-color: var(--primary);
650
- border-radius: 4px;
651
- color: var(--primary-text);
652
- font-size: 12px;
653
- height: 18px;
654
- line-height: 18px;
655
- margin-top: 1px;
656
- padding: 0 10px;
657
- }
658
- }
659
-
660
- &.has-icon {
661
- padding-left: $icon-size;
662
- }
660
+ // Styling for option group badge
661
+ .vs__dropdown-menu .vs__dropdown-option .vs__option-kind-group {
662
+ display: flex;
663
+ > b {
664
+ flex: 1;
663
665
  }
664
-
665
- &.has-icon .vs__option-kind div{
666
- padding-left: $icon-size;
667
- }
668
-
669
- .pagination-slot {
670
- display: flex;
671
- align-items: center;
672
- justify-content: center;
673
- position: relative;
674
- margin-top: 5px;
675
-
676
- .load-more {
677
- display: flex;
678
- align-items: center;
679
- height: 19px;
680
-
681
- a {
682
- cursor: pointer;
683
- }
684
- }
685
-
686
- .count {
687
- position: absolute;
688
- right: 10px;
689
- }
690
- }
691
-
692
- .no-options-slot .paginating {
693
- display: flex;
694
- align-items: center;
695
- justify-content: center;
666
+ > div {
667
+ background-color: var(--primary);
668
+ border-radius: 4px;
669
+ color: var(--primary-text);
670
+ font-size: 12px;
671
+ height: 18px;
672
+ line-height: 18px;
673
+ margin-top: 1px;
674
+ padding: 0 10px;
696
675
  }
697
676
  }
698
677
 
@@ -720,4 +699,8 @@ $icon-size: 18px;
720
699
  margin: 0px calc(-#{$input-padding-sm}/2);
721
700
  padding: 3px 20px;
722
701
  }
702
+
703
+ .is-lable{
704
+ width: 0px !important;
705
+ }
723
706
  </style>
@@ -24,10 +24,10 @@ export default {
24
24
  },
25
25
 
26
26
  data() {
27
- const { postStart, preStop } = this.value;
28
-
29
27
  return {
30
- postStart, preStop, hookOptions: ['postStart', 'preStop']
28
+ postStart: this.value.postStart,
29
+ preStop: this.value.preStop,
30
+ hookOptions: ['postStart', 'preStop']
31
31
  };
32
32
  },
33
33
 
@@ -70,6 +70,14 @@ export default {
70
70
  },
71
71
 
72
72
  data() {
73
+ return {
74
+ ops: [],
75
+ rules: [],
76
+ custom: []
77
+ };
78
+ },
79
+
80
+ created() {
73
81
  const t = this.$store.getters['i18n/t'];
74
82
 
75
83
  const podOptions = [
@@ -88,8 +96,6 @@ export default {
88
96
  { label: t('workload.scheduling.affinity.matchExpressions.greaterThan'), value: 'Gt' },
89
97
  ];
90
98
 
91
- const ops = this.type === NODE ? nodeOptions : podOptions;
92
-
93
99
  let rules;
94
100
 
95
101
  // special case for matchFields and matchExpressions
@@ -127,11 +133,8 @@ export default {
127
133
  rules.push(newRule);
128
134
  }
129
135
 
130
- return {
131
- ops,
132
- rules,
133
- custom: []
134
- };
136
+ this.rules = rules;
137
+ this.ops = this.type === NODE ? nodeOptions : podOptions;
135
138
  },
136
139
 
137
140
  computed: {
@@ -242,6 +245,10 @@ export default {
242
245
 
243
246
  <template>
244
247
  <div>
248
+ <slot
249
+ v-if="rules.length"
250
+ name="header"
251
+ />
245
252
  <button
246
253
  v-if="showRemove && !isView"
247
254
  type="button"
@@ -418,14 +425,20 @@ export default {
418
425
  justify-content: center;
419
426
  }
420
427
 
428
+ .match-expression-header{
429
+ margin-top: 24px;
430
+ }
421
431
  .match-expression-row, .match-expression-header {
422
- display: grid;
423
- grid-template-columns: 1fr 1fr 1fr;
432
+ /* display: grid; */
433
+ display: flex;
434
+ /* grid-template-columns: 1fr 1fr 1fr; */
424
435
  margin: 5px 0;
425
- grid-gap: $column-gutter;
436
+ /* grid-gap: $column-gutter; */
437
+ grid-gap: 10px;
426
438
 
427
439
  & > LABEL {
428
440
  margin: 0;
441
+ width: 400px;
429
442
  }
430
443
 
431
444
  &:not(.view){
@@ -434,7 +447,13 @@ export default {
434
447
  }
435
448
 
436
449
  .match-expression-row > div > input {
437
- min-height: 40px !important;
450
+ min-height: 32px !important;
451
+ border: solid var(--border-width) var(--input-border);
452
+ padding: 4px 11px;
453
+ width: 400px;
454
+ &:hover{
455
+ box-shadow: 0 4px 6px 0 var(--input-border-box-shadow);
456
+ }
438
457
  }
439
458
  .match-expression-row-matching, .match-expression-header-matching {
440
459
  grid-template-columns: 1fr 1fr 1fr 1fr;
@@ -443,4 +462,8 @@ export default {
443
462
  grid-template-columns: 1fr 1fr 1fr 1fr 100px;
444
463
  }
445
464
  }
446
- </style>
465
+
466
+ .view-item-value{
467
+ width: 400px;
468
+ }
469
+ </style>