dashboard-shell-shell 1.0.1000000113 → 1.0.1000000117

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 (125) hide show
  1. package/assets/images/action.svg +6 -0
  2. package/assets/images/pl/logo.png +0 -0
  3. package/assets/styles/base/_functions.scss +0 -0
  4. package/assets/styles/base/_mixins.scss +1 -1
  5. package/assets/styles/global/_button.scss +17 -10
  6. package/assets/styles/global/_form.scss +2 -2
  7. package/assets/styles/global/_labeled-input.scss +6 -2
  8. package/assets/styles/global/_select.scss +6 -7
  9. package/assets/styles/global/_table.scss +3 -2
  10. package/assets/styles/global/_tooltip.scss +8 -1
  11. package/assets/styles/themes/_dark.scss +2 -0
  12. package/assets/styles/themes/_light.scss +5 -2
  13. package/assets/styles/vendor/vue-select.scss +2 -1
  14. package/assets/translations/en-us.yaml +1 -3
  15. package/assets/translations/zh-hans.yaml +51 -28
  16. package/components/ActionDropdown.vue +1 -0
  17. package/components/ActionMenuShell.vue +6 -3
  18. package/components/BrandImage.vue +22 -0
  19. package/components/ClusterIconMenu.vue +1 -1
  20. package/components/CodeMirror.vue +1 -0
  21. package/components/CruResource.vue +1 -1
  22. package/components/CruResourceFooter.vue +1 -1
  23. package/components/ExplorerProjectsNamespaces.vue +4 -25
  24. package/components/GlobalRoleBindings.vue +112 -48
  25. package/components/IndentedPanel.vue +4 -10
  26. package/components/PromptRemove.vue +3 -3
  27. package/components/ResourceDetail/Masthead.vue +190 -242
  28. package/components/ResourceDetail/index.vue +20 -5
  29. package/components/ResourceList/Masthead.vue +146 -84
  30. package/components/ResourceList/ResourceLoadingIndicator.vue +5 -2
  31. package/components/ResourceTable.vue +76 -1
  32. package/components/SideNav.vue +66 -29
  33. package/components/SortableTable/THead.vue +6 -0
  34. package/components/SortableTable/index.vue +480 -370
  35. package/components/Tabbed/index.vue +4 -5
  36. package/components/auth/Principal.vue +3 -2
  37. package/components/auth/RoleDetailEdit.vue +59 -6
  38. package/components/auth/SelectPrincipal.vue +1 -0
  39. package/components/form/BannerSettings.vue +18 -16
  40. package/components/form/ChangePassword.vue +4 -4
  41. package/components/form/ColorInput.vue +32 -8
  42. package/components/form/Footer.vue +1 -1
  43. package/components/form/InputWithSelect.vue +2 -0
  44. package/components/form/KeyValue.vue +31 -7
  45. package/components/form/LabeledSelect.vue +178 -178
  46. package/components/form/Members/ClusterPermissionsEditor.vue +1 -2
  47. package/components/form/Members/MembershipEditor.vue +1 -1
  48. package/components/form/NameNsDescription.vue +24 -11
  49. package/components/form/Password.vue +6 -2
  50. package/components/form/ResourceQuota/Namespace.vue +1 -1
  51. package/components/form/ResourceQuota/NamespaceRow.vue +13 -10
  52. package/components/form/ResourceQuota/ProjectRow.vue +0 -1
  53. package/components/form/Select.vue +2 -2
  54. package/components/nav/Favorite.vue +5 -1
  55. package/components/nav/Group.vue +69 -23
  56. package/components/nav/Header.vue +82 -17
  57. package/components/nav/HeaderPageActionMenu.vue +1 -0
  58. package/components/nav/NamespaceFilter.vue +0 -3
  59. package/components/nav/TopLevelMenu.vue +182 -119
  60. package/components/nav/Type.vue +48 -11
  61. package/composables/useClickOutside.ts +1 -1
  62. package/config/product/auth.js +16 -7
  63. package/config/product/explorer.js +1 -1
  64. package/config/product/settings.js +17 -8
  65. package/config/router/navigation-guards/index.js +3 -3
  66. package/config/settings.ts +28 -0
  67. package/edit/management.cattle.io.user.vue +17 -4
  68. package/edit/networking.k8s.io.ingress/RulePath.vue +1 -1
  69. package/edit/token.vue +1 -1
  70. package/list/harvesterhci.io.management.cluster.vue +17 -0
  71. package/list/management.cattle.io.setting.vue +22 -13
  72. package/list/management.cattle.io.user.vue +25 -14
  73. package/list/provisioning.cattle.io.cluster.vue +6 -7
  74. package/mixins/brand.js +17 -0
  75. package/package.json +1 -1
  76. package/pages/auth/login.vue +84 -29
  77. package/pages/c/_cluster/auth/roles/index.vue +61 -14
  78. package/pages/c/_cluster/settings/banners.vue +174 -101
  79. package/pages/c/_cluster/settings/brand.vue +348 -301
  80. package/pages/c/_cluster/settings/performance.vue +61 -38
  81. package/pages/home.vue +70 -21
  82. package/pages/prefs.vue +25 -23
  83. package/pkg/tsconfig.json +9 -9
  84. package/pkg/vue.config.js +1 -1
  85. package/promptRemove/mixin/roleDeletionCheck.js +2 -2
  86. package/scripts/clean +0 -0
  87. package/scripts/extension/bundle +0 -0
  88. package/scripts/extension/helm/scripts/package +0 -0
  89. package/scripts/extension/helm/scripts/patch +0 -0
  90. package/scripts/extension/helm/scripts/version +0 -0
  91. package/scripts/extension/helmpatch +0 -0
  92. package/scripts/extension/parse-tag-name +0 -0
  93. package/scripts/extension/publish +0 -0
  94. package/scripts/publish-shell.sh +86 -60
  95. package/scripts/serve-pkgs +0 -0
  96. package/scripts/sync-shell-deps +0 -0
  97. package/scripts/typegen.sh +44 -28
  98. package/store/i18n.js +5 -5
  99. package/store/prefs.js +17 -5
  100. package/store/type-map.js +2 -1
  101. package/types/shell/index.d.ts +1 -1
  102. package/utils/error.js +4 -0
  103. package/utils/router.js +4 -4
  104. package/vue.config.js +1 -6
  105. package/components/rancherResourceDetail/Masthead.vue +0 -769
  106. package/components/rancherResourceDetail/__tests__/Masthead.test.ts +0 -65
  107. package/components/rancherResourceDetail/index.vue +0 -591
  108. package/components/rancherResourceList/Masthead.vue +0 -375
  109. package/components/rancherResourceList/ResourceLoadingIndicator.vue +0 -140
  110. package/components/rancherResourceList/index.vue +0 -307
  111. package/components/rancherResourceList/resource-list.config.js +0 -7
  112. package/components/rancherResourceTable.vue +0 -783
  113. package/components/rancherSortableTable/THead.vue +0 -561
  114. package/components/rancherSortableTable/actions.js +0 -153
  115. package/components/rancherSortableTable/advanced-filtering.js +0 -272
  116. package/components/rancherSortableTable/debug.js +0 -117
  117. package/components/rancherSortableTable/filtering.js +0 -290
  118. package/components/rancherSortableTable/grouping.js +0 -48
  119. package/components/rancherSortableTable/index.vue +0 -2712
  120. package/components/rancherSortableTable/paging.js +0 -155
  121. package/components/rancherSortableTable/selection.js +0 -629
  122. package/components/rancherSortableTable/sortable-config.ts +0 -4
  123. package/components/rancherSortableTable/sorting.js +0 -129
  124. package/types/cloud-shell/index.d.ts +0 -11014
  125. /package/components/{rancherResourceList → ResourceList}/Masthead-btn.vue +0 -0
@@ -823,7 +823,6 @@ export default {
823
823
  }
824
824
  }
825
825
  .create-resource-container {
826
-
827
826
  .resource-container {
828
827
  display: flex; // Ensures content grows in child CruResources
829
828
  flex-direction: column;
@@ -887,6 +886,7 @@ form.create-resource-container .cru {
887
886
  }
888
887
  }
889
888
  .cru {
889
+ height: 100%;
890
890
  display: flex;
891
891
  flex-direction: column;
892
892
  flex-grow: 1;
@@ -120,7 +120,7 @@ export default {
120
120
  z-index: z-index('cruFooter');
121
121
 
122
122
  .btn {
123
- margin-right: 10px;
123
+ margin-left: 10px;
124
124
  }
125
125
  }
126
126
 
@@ -1,13 +1,13 @@
1
1
  <script>
2
2
  import { mapGetters, useStore } from 'vuex';
3
- import ResourceTable, { defaultTableSortGenerationFn } from '@shell/components/rancherResourceTable';
3
+ import ResourceTable, { defaultTableSortGenerationFn } from '@shell/components/ResourceTable';
4
4
  import { STATE, AGE, NAME, NS_SNAPSHOT_QUOTA } from '@shell/config/table-headers';
5
5
  import { uniq } from '@shell/utils/array';
6
6
  import { MANAGEMENT, NAMESPACE, VIRTUAL_TYPES, HCI } from '@shell/config/types';
7
7
  import { PROJECT_ID, FLAT_VIEW } from '@shell/config/query-params';
8
8
  import { PanelLocation, ExtensionPoint } from '@shell/core/types';
9
9
  import ExtensionPanel from '@shell/components/ExtensionPanel';
10
- import Masthead from '@shell/components/rancherResourceList/Masthead';
10
+ import Masthead from '@shell/components/ResourceList/Masthead';
11
11
  import { mapPref, GROUP_RESOURCES, ALL_NAMESPACES, DEV } from '@shell/store/prefs';
12
12
  import MoveModal from '@shell/components/MoveModal';
13
13
  import ButtonMultiAction from '@shell/components/ButtonMultiAction.vue';
@@ -416,7 +416,6 @@ export default {
416
416
  </script>
417
417
 
418
418
  <template>
419
- 测试111111111111111111111111
420
419
  <div class="project-namespaces outlet">
421
420
  <Masthead
422
421
  :schema="projectSchema"
@@ -506,29 +505,11 @@ export default {
506
505
  <div class="right">
507
506
  <router-link
508
507
  v-if="isNamespaceCreatable && (canSeeProjectlessNamespaces || group.group.key !== notInProjectKey)"
509
- class="create-namespace"
510
- style="margin-bottom: 3px;"
508
+ class="create-namespace btn btn-sm mr-5"
511
509
  :to="createNamespaceLocation(group.group)"
512
- >
510
+ >1
513
511
  {{ t('projectNamespaces.createNamespace') }}
514
512
  </router-link>
515
- <span style="color: var(--link);margin-bottom: 3px;">|</span>
516
- <template v-if="featureDropdownMenu">
517
- <ActionMenu
518
- :showIcon="true"
519
- :resource="getProjectActions(group.group)"
520
- :button-aria-label="t('projectNamespaces.tableActionsLabel', { resource: projectResource(group.group) })"
521
- />
522
- </template>
523
- <template v-else>
524
- <ButtonMultiAction
525
- class="project-action"
526
- :borderless="true"
527
- :aria-label="t('projectNamespaces.tableActionsLabel', { resource: projectResource(group.group) })"
528
- :invisible="!showProjectActionButton(group.group)"
529
- @click="showProjectAction($event, group.group)"
530
- />
531
- </template>
532
513
  </div>
533
514
  </div>
534
515
  </template>
@@ -594,7 +575,6 @@ export default {
594
575
  </template>
595
576
  <style lang="scss" scoped>
596
577
  .invisible {
597
- width: 42px;
598
578
  display: inline-block;
599
579
  }
600
580
 
@@ -621,7 +601,6 @@ export default {
621
601
 
622
602
  .create-namespace {
623
603
  color: var(--link);
624
- padding: 0 18px;
625
604
  }
626
605
 
627
606
  .group-tab {
@@ -108,7 +108,12 @@ export default {
108
108
  } catch (e) { }
109
109
  },
110
110
  data() {
111
+
112
+ const topLevelPermissions = sessionStorage.getItem('TOPLEVELPERMISSIONS') || ''
113
+
111
114
  return {
115
+ topLevelPermissions,
116
+
112
117
  // This not only identifies global roles but the order here is the order we want to display them in the UI
113
118
  globalPermissions: [
114
119
  'admin',
@@ -328,60 +333,119 @@ export default {
328
333
 
329
334
  <div v-else>
330
335
  <form v-if="selectedRoles">
331
- <div
332
- v-for="(sortedRole, roleType) in sortedRoles"
333
- :key="roleType"
334
- class="role-group mb-10"
335
- >
336
- <Card
337
- v-if="Object.keys(sortedRole).length"
338
- :show-highlight-border="false"
339
- :show-actions="false"
336
+ <template v-if="topLevelPermissions && topLevelPermissions !== 'superadmin'">
337
+ <div
338
+ v-for="(sortedRole, roleType) in sortedRoles"
339
+ :key="roleType"
340
+ class="role-group mb-10"
341
+ >
342
+ <Card
343
+ v-if="Object.keys(sortedRole).length"
344
+ :show-highlight-border="false"
345
+ :show-actions="false"
346
+ >
347
+ <template v-slot:title>
348
+ <div class="type-title">
349
+ <h3>{{ t(`rbac.globalRoles.types.${roleType}.label`) }}</h3>
350
+ <div class="type-description">
351
+ {{ t(`rbac.globalRoles.types.${roleType}.description`, { isUser }) }}
352
+ </div>
353
+ </div>
354
+ </template>
355
+ <template v-slot:body>
356
+ <div
357
+ class="checkbox-section"
358
+ :class="'checkbox-section--' + roleType"
359
+ >
360
+ <div
361
+ v-for="(role, i) in sortedRoles[roleType]"
362
+ :key="i"
363
+ class="checkbox mb-10 mr-10"
364
+ >
365
+ <Checkbox
366
+ v-model:value="selectedRoles"
367
+ :value-when-true="role.id"
368
+ :disabled="!!assignOnlyRoles[role.id]"
369
+ :label="role.nameDisplay"
370
+ :description="role.descriptionDisplay"
371
+ :mode="mode"
372
+ :data-testId="'grb-checkbox-' + role.id"
373
+ @update:value="checkboxChanged"
374
+ >
375
+ <template #label>
376
+ <div class="checkbox-label-slot">
377
+ <span class="checkbox-label">{{ role.nameDisplay }}</span>
378
+ <i
379
+ v-if="!!assignOnlyRoles[role.id]"
380
+ v-clean-tooltip="t('rbac.globalRoles.assignOnlyRole')"
381
+ class="checkbox-info icon icon-info icon-lg"
382
+ />
383
+ </div>
384
+ </template>
385
+ </Checkbox>
386
+ </div>
387
+ </div>
388
+ </template>
389
+ </Card>
390
+ </div>
391
+ </template>
392
+
393
+ <template v-else>
394
+ <div
395
+ v-for="(sortedRole, roleType) in { global: sortedRoles['global'] }"
396
+ :key="roleType"
397
+ class="role-group mb-10"
340
398
  >
341
- <template v-slot:title>
342
- <div class="type-title">
343
- <h3>{{ t(`rbac.globalRoles.types.${roleType}.label`) }}</h3>
344
- <div class="type-description">
345
- {{ t(`rbac.globalRoles.types.${roleType}.description`, { isUser }) }}
399
+ <Card
400
+ v-if="Object.keys(sortedRole).length"
401
+ :show-highlight-border="false"
402
+ :show-actions="false"
403
+ >
404
+ <template v-slot:title>
405
+ <div class="type-title">
406
+ <h3>{{ t(`rbac.globalRoles.types.${roleType}.label`) }}</h3>
407
+ <div class="type-description">
408
+ {{ t(`rbac.globalRoles.types.${roleType}.description`, { isUser }) }}
409
+ </div>
346
410
  </div>
347
- </div>
348
- </template>
349
- <template v-slot:body>
350
- <div
351
- class="checkbox-section"
352
- :class="'checkbox-section--' + roleType"
353
- >
411
+ </template>
412
+ <template v-slot:body>
354
413
  <div
355
- v-for="(role, i) in sortedRoles[roleType]"
356
- :key="i"
357
- class="checkbox mb-10 mr-10"
414
+ class="checkbox-section"
415
+ :class="'checkbox-section--' + roleType"
358
416
  >
359
- <Checkbox
360
- v-model:value="selectedRoles"
361
- :value-when-true="role.id"
362
- :disabled="!!assignOnlyRoles[role.id]"
363
- :label="role.nameDisplay"
364
- :description="role.descriptionDisplay"
365
- :mode="mode"
366
- :data-testId="'grb-checkbox-' + role.id"
367
- @update:value="checkboxChanged"
417
+ <div
418
+ v-for="(role, i) in sortedRoles[roleType]"
419
+ :key="i"
420
+ class="checkbox mb-10 mr-10"
368
421
  >
369
- <template #label>
370
- <div class="checkbox-label-slot">
371
- <span class="checkbox-label">{{ role.nameDisplay }}</span>
372
- <i
373
- v-if="!!assignOnlyRoles[role.id]"
374
- v-clean-tooltip="t('rbac.globalRoles.assignOnlyRole')"
375
- class="checkbox-info icon icon-info icon-lg"
376
- />
377
- </div>
378
- </template>
379
- </Checkbox>
422
+ <Checkbox
423
+ v-model:value="selectedRoles"
424
+ :value-when-true="role.id"
425
+ :disabled="!!assignOnlyRoles[role.id]"
426
+ :label="role.nameDisplay"
427
+ :description="role.descriptionDisplay"
428
+ :mode="mode"
429
+ :data-testId="'grb-checkbox-' + role.id"
430
+ @update:value="checkboxChanged"
431
+ >
432
+ <template #label>
433
+ <div class="checkbox-label-slot">
434
+ <span class="checkbox-label">{{ role.nameDisplay }}</span>
435
+ <i
436
+ v-if="!!assignOnlyRoles[role.id]"
437
+ v-clean-tooltip="t('rbac.globalRoles.assignOnlyRole')"
438
+ class="checkbox-info icon icon-info icon-lg"
439
+ />
440
+ </div>
441
+ </template>
442
+ </Checkbox>
443
+ </div>
380
444
  </div>
381
- </div>
382
- </template>
383
- </Card>
384
- </div>
445
+ </template>
446
+ </Card>
447
+ </div>
448
+ </template>
385
449
  </form>
386
450
  </div>
387
451
  </template>
@@ -4,23 +4,17 @@ export default {};
4
4
 
5
5
  <template>
6
6
  <div
7
- class="indented-panel"
7
+ class="indented-panels"
8
8
  >
9
9
  <slot />
10
10
  </div>
11
11
  </template>
12
12
 
13
13
  <style lang="scss">
14
- .indented-panel {
14
+ .indented-panels {
15
15
  height: 100%;
16
- width: 90%;
17
- margin-left: 5%;
16
+ width: 100%;
17
+ padding: 0 20px;
18
18
  }
19
19
 
20
- @media only screen and (max-width: map-get($breakpoints, '--viewport-9')) {
21
- .indented-panel {
22
- margin: 0 20px;
23
- width: initial;
24
- }
25
- }
26
20
  </style>
@@ -386,7 +386,7 @@ export default {
386
386
  class="mt-10"
387
387
  >
388
388
  <span
389
- v-clean-html="t('promptRemove.confirmName', { nameToMatch: escapeHtml(nameToMatch) }, true)"
389
+ v-clean-html="t('promptRemove.confirmName', { nameToMatch: escapeHtml(nameToMatch) })"
390
390
  />
391
391
  </div>
392
392
  </div>
@@ -460,8 +460,8 @@ export default {
460
460
  box-shadow: none;
461
461
  }
462
462
  #confirm {
463
- width: 90%;
464
- margin-left: 3px;
463
+ width: 100%;
464
+ // margin-left: 3px;
465
465
  }
466
466
 
467
467
  .actions {