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
@@ -53,6 +53,10 @@ export default {
53
53
  default: false,
54
54
  type: Boolean
55
55
  },
56
+ isLabel: {
57
+ default: false,
58
+ type: Boolean
59
+ },
56
60
  localizedLabel: {
57
61
  default: false,
58
62
  type: Boolean
@@ -114,7 +118,15 @@ export default {
114
118
  noOptionsLabelKey: {
115
119
  type: String,
116
120
  default: 'labelSelect.noOptions.empty'
117
- }
121
+ },
122
+ selectWidth: {
123
+ type: String,
124
+ default: ''
125
+ },
126
+ leftWidth: {
127
+ type: String,
128
+ default: ''
129
+ },
118
130
  },
119
131
 
120
132
  setup() {
@@ -257,7 +269,7 @@ export default {
257
269
  },
258
270
 
259
271
  positionDropdown(dropdownList, component, { width }) {
260
- calculatePosition(dropdownList, component, width, this.placement);
272
+ calculatePosition(dropdownList, component, width, this.placement, this.selectWidth===''?'label': this.selectWidth, this.isLabel, this.leftWidth);
261
273
  },
262
274
 
263
275
  get,
@@ -312,42 +324,13 @@ export default {
312
324
  </script>
313
325
 
314
326
  <template>
315
- <div
316
- :id="hasLabel ? labeledSelectLabelId : undefined"
317
- ref="select"
318
- class="labeled-select"
319
- :class="[
320
- $attrs.class,
321
- {
322
- disabled: isView || disabled,
323
- focused,
324
- [mode]: true,
325
- [status]: status,
326
- taggable: $attrs.taggable,
327
- taggable: $attrs.multiple,
328
- hoverable: hoverTooltip,
329
- 'compact-input': isCompact,
330
- 'no-label': !hasLabel
331
- }
332
- ]"
333
- :tabindex="isView || disabled ? -1 : 0"
334
- role="combobox"
335
- :aria-expanded="isOpen"
336
- :aria-describedby="$attrs['aria-describedby'] || undefined"
337
- :aria-required="requiredField"
338
- @click="clickSelect"
339
- @keydown.self.enter="clickSelect"
340
- @keydown.self.down.prevent="clickSelect"
341
- @keydown.self.space.prevent="clickSelect"
342
- >
327
+ <div style="display: flex;">
343
328
  <div
344
- :class="{ 'labeled-container': true, raised, empty, [mode]: true }"
345
- :style="{ border: 'none' }"
329
+ v-if="hasLabel"
330
+ :class="{ 'labeled-container': true, raised, empty, [mode]: true, 'is-lable': isLabel }"
331
+ :style="{ border: 'none', width: selectWidth===''?'160px':selectWidth,lineHeight: '32px' }"
346
332
  >
347
- <label
348
- v-if="hasLabel"
349
- :for="labeledSelectLabelId"
350
- >
333
+ <label v-if="hasLabel" :id="`labeled-select-uid-${uid}`">
351
334
  <t
352
335
  v-if="labelKey"
353
336
  :k="labelKey"
@@ -357,157 +340,186 @@ export default {
357
340
  <span
358
341
  v-if="requiredField"
359
342
  class="required"
360
- :aria-hidden="true"
361
343
  >*</span>
362
344
  </label>
363
345
  </div>
364
- <v-select
365
- ref="select-input"
366
- v-bind="filteredAttrs"
367
- class="inline"
368
- :close-on-select="false"
369
- :append-to-body="appendToBody"
370
- :calculate-position="positionDropdown"
371
- :class="{ 'no-label': !(label || '').length}"
372
- :clearable="clearable"
373
- :disabled="isView || disabled || loading"
374
- :get-option-key="getOptionKey"
375
- :get-option-label="(opt) => getOptionLabel(opt)"
376
- :label="optionLabel"
377
- :options="_options"
378
- :map-keydown="mappedKeys"
379
- :placeholder="placeholder"
380
- :reduce="(x) => reduce(x)"
381
- :filterable="isFilterable"
382
- :searchable="isSearchable"
383
- :selectable="selectable"
384
- :modelValue="value != null && !loading ? value : ''"
385
- :dropdown-should-open="dropdownShouldOpen"
386
- :tabindex="-1"
387
- :uid="generatedUid"
388
- :aria-label="'-'"
389
- @update:modelValue="$emit('selecting', $event); $emit('update:value', $event)"
390
- @search:blur="onBlur"
391
- @search:focus="onFocus"
392
- @search="onSearch"
393
- @open="onOpen"
394
- @close="onClose"
395
- @option:selecting="closeOnSelecting"
396
- @option:selected="close"
397
- @option:deselecting="$emit('deselecting', $event)"
398
- @keydown.enter.stop
346
+ <!-- label -->
347
+ <div
348
+ :id="hasLabel ? labeledSelectLabelId : undefined"
349
+ ref="select"
350
+ class="labeled-select"
351
+ :class="[
352
+ $attrs.class && $attrs.class.replace('mb-20', ''),
353
+ {
354
+ disabled: isView || disabled,
355
+ focused,
356
+ [mode]: true,
357
+ [status]: status,
358
+ taggable: $attrs.taggable,
359
+ taggable: $attrs.multiple,
360
+ hoverable: hoverTooltip,
361
+ 'compact-input': isCompact,
362
+ 'no-label': !hasLabel
363
+ }
364
+ ]"
365
+ :tabindex="isView || disabled ? -1 : 0"
366
+ role="combobox"
367
+ :aria-expanded="isOpen"
368
+ :aria-describedby="$attrs['aria-describedby'] || undefined"
369
+ :aria-required="requiredField"
370
+ @click="clickSelect"
371
+ @keydown.self.enter="clickSelect"
372
+ @keydown.self.down.prevent="clickSelect"
373
+ @keydown.self.space.prevent="clickSelect"
399
374
  >
400
- <template #option="option">
401
- <template v-if="showTagPrompts">
402
- <div class="only-user-opts">
403
- {{ t('labeledSelect.pressEnter', {input:getOptionLabel(option.label)}) }}
404
- </div>
405
- </template>
406
- <template v-else-if="option.kind === 'group'">
407
- <div class="vs__option-kind-group">
375
+ <v-select
376
+ ref="select-input"
377
+ v-bind="filteredAttrs"
378
+ class="inline"
379
+ :close-on-select="false"
380
+ :append-to-body="appendToBody"
381
+ :calculate-position="positionDropdown"
382
+ :class="{ 'no-label': !(label || '').length}"
383
+ :clearable="clearable"
384
+ :disabled="isView || disabled || loading"
385
+ :get-option-key="getOptionKey"
386
+ :get-option-label="(opt) => getOptionLabel(opt)"
387
+ :label="optionLabel"
388
+ :options="_options"
389
+ :map-keydown="mappedKeys"
390
+ :placeholder="placeholder"
391
+ :reduce="(x) => reduce(x)"
392
+ :filterable="isFilterable"
393
+ :searchable="isSearchable"
394
+ :selectable="selectable"
395
+ :modelValue="value != null && !loading ? value : ''"
396
+ :dropdown-should-open="dropdownShouldOpen"
397
+ :tabindex="-1"
398
+ :uid="generatedUid"
399
+ :aria-label="'-'"
400
+ @update:modelValue="$emit('selecting', $event); $emit('update:value', $event)"
401
+ @search:blur="onBlur"
402
+ @search:focus="onFocus"
403
+ @search="onSearch"
404
+ @open="onOpen"
405
+ @close="onClose"
406
+ @option:selecting="closeOnSelecting"
407
+ @option:selected="close"
408
+ @option:deselecting="$emit('deselecting', $event)"
409
+ @keydown.enter.stop
410
+ >
411
+ <template #option="option">
412
+ <template v-if="showTagPrompts">
413
+ <div class="only-user-opts">
414
+ {{ t('labeledSelect.pressEnter', {input:getOptionLabel(option.label)}) }}
415
+ </div>
416
+ </template>
417
+ <template v-else-if="option.kind === 'group'">
418
+ <div class="vs__option-kind-group">
419
+ <i
420
+ v-if="option.icon"
421
+ class="icon"
422
+ :class="{ [option.icon]: true}"
423
+ />
424
+ <b>{{ getOptionLabel(option) }}</b>
425
+ <div v-if="option.badge">
426
+ {{ option.badge }}
427
+ </div>
428
+ </div>
429
+ </template>
430
+ <template v-else-if="option.kind === 'divider'">
431
+ <hr role="none">
432
+ </template>
433
+ <template v-else-if="option.kind === 'highlighted'">
434
+ <div class="option-kind-highlighted">
435
+ {{ option.label }}
436
+ </div>
437
+ </template>
438
+ <div
439
+ v-else
440
+ class="vs__option-kind"
441
+ :class="{ 'has-icon' : hasGroupIcon}"
442
+ @mousedown="(e) => onClickOption(option, e)"
443
+ >
444
+ {{ getOptionLabel(option) }}
408
445
  <i
409
- v-if="option.icon"
410
- class="icon"
411
- :class="{ [option.icon]: true}"
446
+ v-if="option.error"
447
+ class="icon icon-warning pull-right"
448
+ style="font-size: 20px;"
412
449
  />
413
- <b>{{ getOptionLabel(option) }}</b>
414
- <div v-if="option.badge">
415
- {{ option.badge }}
416
- </div>
417
450
  </div>
418
451
  </template>
419
- <template v-else-if="option.kind === 'divider'">
420
- <hr role="none">
421
- </template>
422
- <template v-else-if="option.kind === 'highlighted'">
423
- <div class="option-kind-highlighted">
424
- {{ option.label }}
425
- </div>
426
- </template>
427
- <div
428
- v-else
429
- class="vs__option-kind"
430
- :class="{ 'has-icon' : hasGroupIcon}"
431
- @mousedown="(e) => onClickOption(option, e)"
452
+ <!-- Pass down templates provided by the caller -->
453
+ <template
454
+ v-for="(_, slot) of $slots"
455
+ :key="slot"
456
+ #[slot]="scope"
432
457
  >
433
- {{ getOptionLabel(option) }}
434
- <i
435
- v-if="option.error"
436
- class="icon icon-warning pull-right"
437
- style="font-size: 20px;"
458
+ <slot
459
+ :name="slot"
460
+ v-bind="scope"
438
461
  />
439
- </div>
440
- </template>
441
- <!-- Pass down templates provided by the caller -->
442
- <template
443
- v-for="(_, slot) of $slots"
444
- :key="slot"
445
- #[slot]="scope"
446
- >
447
- <slot
448
- :name="slot"
449
- v-bind="scope"
450
- />
451
- </template>
462
+ </template>
452
463
 
453
- <template #list-footer>
454
- <div
455
- v-if="canPaginate && totalResults && pages > 1"
456
- class="pagination-slot"
457
- >
458
- <div class="load-more">
459
- <i
460
- v-if="paginating"
461
- class="icon icon-spinner icon-spin"
462
- />
463
- <div v-else>
464
- <a
465
- v-if="canLoadMore"
466
- @click="loadMore"
467
- > {{ t('labelSelect.pagination.more') }}</a>
464
+ <template #list-footer>
465
+ <div
466
+ v-if="canPaginate && totalResults && pages > 1"
467
+ class="pagination-slot"
468
+ >
469
+ <div class="load-more">
470
+ <i
471
+ v-if="paginating"
472
+ class="icon icon-spinner icon-spin"
473
+ />
474
+ <div v-else>
475
+ <a
476
+ v-if="canLoadMore"
477
+ @click="loadMore"
478
+ > {{ t('labelSelect.pagination.more') }}</a>
479
+ </div>
468
480
  </div>
469
- </div>
470
481
 
471
- <div class="count">
472
- {{ optionCounts }}
482
+ <div class="count">
483
+ {{ optionCounts }}
484
+ </div>
473
485
  </div>
474
- </div>
475
- </template>
476
- <template #no-options="{ search }">
477
- <div class="no-options-slot">
478
- <template v-if="showTagPrompts">
479
- <span v-if="!searching">{{ t('labeledSelect.startTyping') }}</span>
480
- </template>
481
- <div
482
- v-else-if="paginating"
483
- class="paginating"
484
- >
485
- <i class="icon icon-spinner icon-spin" />
486
+ </template>
487
+ <template #no-options="{ search }">
488
+ <div class="no-options-slot">
489
+ <template v-if="showTagPrompts">
490
+ <span v-if="!searching">{{ t('labeledSelect.startTyping') }}</span>
491
+ </template>
492
+ <div
493
+ v-else-if="paginating"
494
+ class="paginating"
495
+ >
496
+ <i class="icon icon-spinner icon-spin" />
497
+ </div>
498
+ <template v-else-if="search">
499
+ {{ t('labelSelect.noOptions.noMatch') }}
500
+ </template>
501
+ <template v-else>
502
+ {{ t(noOptionsLabelKey) }}
503
+ </template>
486
504
  </div>
487
- <template v-else-if="search">
488
- {{ t('labelSelect.noOptions.noMatch') }}
489
- </template>
490
- <template v-else>
491
- {{ t(noOptionsLabelKey) }}
492
- </template>
493
- </div>
494
- </template>
495
- </v-select>
496
- <i
497
- v-if="loading"
498
- class="icon icon-spinner icon-spin icon-lg"
499
- />
500
- <LabeledTooltip
501
- v-if="tooltip && !focused"
502
- :hover="hoverTooltip"
503
- :value="tooltip"
504
- :status="status"
505
- />
506
- <LabeledTooltip
507
- v-if="!!validationMessage"
508
- :hover="hoverTooltip"
509
- :value="validationMessage"
510
- />
505
+ </template>
506
+ </v-select>
507
+ <i
508
+ v-if="loading"
509
+ class="icon icon-spinner icon-spin icon-lg"
510
+ />
511
+ <LabeledTooltip
512
+ v-if="tooltip && !focused"
513
+ :hover="hoverTooltip"
514
+ :value="tooltip"
515
+ :status="status"
516
+ />
517
+ <LabeledTooltip
518
+ v-if="!!validationMessage"
519
+ :hover="hoverTooltip"
520
+ :value="validationMessage"
521
+ />
522
+ </div>
511
523
  </div>
512
524
  </template>
513
525
 
@@ -518,7 +530,10 @@ export default {
518
530
  // Prevent namespace field from wiggling or changing
519
531
  // height when it is toggled from a LabeledInput to a
520
532
  // LabeledSelect.
521
- padding-bottom: 1px;
533
+ // padding-bottom: 1px;
534
+ &:deep() .vs__actions:after {
535
+ padding-top: 10px;
536
+ }
522
537
 
523
538
  &.no-label.compact-input {
524
539
  :deep() .vs__actions:after {
@@ -532,7 +547,7 @@ export default {
532
547
 
533
548
  &.no-label:not(.compact-input) {
534
549
  height: $input-height;
535
- padding-top: 4px;
550
+ padding-top: 0px;
536
551
 
537
552
  :deep() .vs__actions:after {
538
553
  top: 0;
@@ -619,7 +634,7 @@ export default {
619
634
  }
620
635
 
621
636
  :deep() .vs__selected-options {
622
- margin-top: -5px;
637
+ margin-top: 0px;
623
638
  }
624
639
 
625
640
  :deep() .v-select:not(.vs--single) {
@@ -631,7 +646,7 @@ export default {
631
646
  :deep() .vs__actions {
632
647
  &:after {
633
648
  position: relative;
634
- top: -10px;
649
+ top: 0px;
635
650
  }
636
651
  }
637
652
 
@@ -669,73 +684,21 @@ export default {
669
684
  }
670
685
  }
671
686
 
672
- $icon-size: 18px;
673
-
674
- // This represents the drop down area. Note - it might be attached to body and NOT the parent label select div
675
- .vs__dropdown-menu {
676
-
677
- // Styling for individual options
678
- .vs__dropdown-option .vs__option-kind {
679
- &-group {
680
- display: flex;
681
- align-items: center;
682
-
683
- i { // icon
684
- width: $icon-size;
685
- }
686
-
687
- > b { // group label
688
- flex: 1;
689
- }
690
-
691
- > div { // badge
692
- background-color: var(--primary);
693
- border-radius: 4px;
694
- color: var(--primary-text);
695
- font-size: 12px;
696
- height: 18px;
697
- line-height: 18px;
698
- margin-top: 1px;
699
- padding: 0 10px;
700
- }
701
- }
702
-
703
- &.has-icon {
704
- padding-left: $icon-size;
705
- }
687
+ // Styling for option group badge
688
+ .vs__dropdown-menu .vs__dropdown-option .vs__option-kind-group {
689
+ display: flex;
690
+ > b {
691
+ flex: 1;
706
692
  }
707
-
708
- &.has-icon .vs__option-kind div{
709
- padding-left: $icon-size;
710
- }
711
-
712
- .pagination-slot {
713
- display: flex;
714
- align-items: center;
715
- justify-content: center;
716
- position: relative;
717
- margin-top: 5px;
718
-
719
- .load-more {
720
- display: flex;
721
- align-items: center;
722
- height: 19px;
723
-
724
- a {
725
- cursor: pointer;
726
- }
727
- }
728
-
729
- .count {
730
- position: absolute;
731
- right: 10px;
732
- }
733
- }
734
-
735
- .no-options-slot .paginating {
736
- display: flex;
737
- align-items: center;
738
- justify-content: center;
693
+ > div {
694
+ background-color: var(--primary);
695
+ border-radius: 4px;
696
+ color: var(--primary-text);
697
+ font-size: 12px;
698
+ height: 18px;
699
+ line-height: 18px;
700
+ margin-top: 1px;
701
+ padding: 0 10px;
739
702
  }
740
703
  }
741
704
 
@@ -763,4 +726,13 @@ $icon-size: 18px;
763
726
  margin: 0px calc(-#{$input-padding-sm}/2);
764
727
  padding: 3px 20px;
765
728
  }
729
+
730
+ .is-lable{
731
+ width: 0px !important;
732
+ }
733
+
734
+ .gafanana-select{
735
+ width: 300px;
736
+
737
+ }
766
738
  </style>
@@ -162,9 +162,9 @@ export default {
162
162
  <div :class="defaultSectionClass">
163
163
  <div class="labels">
164
164
  <div class="labels__header">
165
- <h3 v-if="showLabelTitle">
165
+ <div v-if="showLabelTitle">
166
166
  <t k="labels.labels.title" />
167
- </h3>
167
+ </div>
168
168
  <ToggleSwitch
169
169
  v-if="showToggler"
170
170
  v-model:value="toggler"
@@ -172,7 +172,7 @@ export default {
172
172
  :on-label="t('labels.labels.show')"
173
173
  />
174
174
  </div>
175
- <p class="mt-10 mb-10">
175
+ <p class="mb-20">
176
176
  <t k="labels.labels.description" />
177
177
  </p>
178
178
  <div :class="columnsClass">
@@ -344,7 +344,7 @@ export default {
344
344
  <div
345
345
  :data-testid="`input-match-expression-key-${index}`"
346
346
  >
347
- <div v-if="isView">
347
+ <div v-if="isView" class="view-item-value">
348
348
  {{ row.key }}
349
349
  </div>
350
350
  <input
@@ -367,7 +367,7 @@ export default {
367
367
  <div
368
368
  :data-testid="`input-match-expression-operator-${index}`"
369
369
  >
370
- <div v-if="isView">
370
+ <div v-if="isView" class="view-item-value">
371
371
  {{ row.operator }}
372
372
  </div>
373
373
  <Select
@@ -393,7 +393,7 @@ export default {
393
393
  v-else
394
394
  :data-testid="`input-match-expression-values-${index}`"
395
395
  >
396
- <div v-if="isView">
396
+ <div v-if="isView" class="view-item-value">
397
397
  {{ row.values }}
398
398
  </div>
399
399
  <input
@@ -473,14 +473,20 @@ export default {
473
473
  justify-content: center;
474
474
  }
475
475
 
476
+ .match-expression-header{
477
+ margin-top: 24px;
478
+ }
476
479
  .match-expression-row, .match-expression-header {
477
- display: grid;
478
- grid-template-columns: 1fr 1fr 1fr;
480
+ /* display: grid; */
481
+ display: flex;
482
+ /* grid-template-columns: 1fr 1fr 1fr; */
479
483
  margin: 5px 0;
480
- grid-gap: $column-gutter;
484
+ /* grid-gap: $column-gutter; */
485
+ grid-gap: 10px;
481
486
 
482
487
  & > LABEL {
483
488
  margin: 0;
489
+ width: 400px;
484
490
  }
485
491
 
486
492
  &:not(.view){
@@ -489,8 +495,15 @@ export default {
489
495
  }
490
496
 
491
497
  .match-expression-row > div > input {
492
- min-height: 40px !important;
498
+ min-height: 32px !important;
499
+ border: solid var(--border-width) var(--input-border);
500
+ padding: 4px 11px;
501
+ width: 400px;
502
+ &:hover{
503
+ box-shadow: 0 4px 6px 0 var(--input-border-box-shadow);
504
+ }
493
505
  }
506
+
494
507
  .match-expression-row-matching, .match-expression-header-matching {
495
508
  grid-template-columns: 1fr 1fr 1fr 1fr;
496
509
 
@@ -498,4 +511,8 @@ export default {
498
511
  grid-template-columns: 1fr 1fr 1fr 1fr 100px;
499
512
  }
500
513
  }
514
+
515
+ .view-item-value{
516
+ width: 400px;
517
+ }
501
518
  </style>
@@ -232,11 +232,10 @@ export default {
232
232
  v-else
233
233
  class="cluster-permissions-editor"
234
234
  >
235
- <div class="row mt-10">
235
+ <div class="row mt-10 mb-20">
236
236
  <div class="col span-12">
237
237
  <SelectPrincipal
238
238
  v-focus
239
- class="mb-20"
240
239
  :mode="mode"
241
240
  :retain-selection="true"
242
241
  data-testid="cluster-member-select"
@@ -170,7 +170,7 @@ export default {
170
170
  >
171
171
  <template #column-headers>
172
172
  <div class="box mb-0">
173
- <div class="column-headers row">
173
+ <div class="column-headers row" style="width: 95%;">
174
174
  <div class="col span-6">
175
175
  <label class="text-label">{{ t('membershipEditor.user') }}</label>
176
176
  </div>