@rancher/shell 3.0.11 → 3.0.12-rc.2

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 (219) hide show
  1. package/assets/images/providers/entraid-black.svg +4 -0
  2. package/assets/images/providers/entraid.svg +9 -0
  3. package/assets/images/vendor/entraid.svg +9 -0
  4. package/assets/styles/app.scss +0 -1
  5. package/assets/styles/base/_mixins.scss +31 -0
  6. package/assets/styles/base/_variables.scss +2 -0
  7. package/assets/styles/themes/_modern.scss +6 -5
  8. package/assets/translations/en-us.yaml +24 -21
  9. package/assets/translations/zh-hans.yaml +4 -11
  10. package/chart/__tests__/S3.test.ts +10 -3
  11. package/components/CountBox.vue +20 -0
  12. package/components/CreateDriver.vue +0 -12
  13. package/components/DetailText.vue +12 -3
  14. package/components/EmptyProductPage.vue +76 -0
  15. package/components/Resource/Detail/CopyToClipboard.vue +1 -2
  16. package/components/Resource/Detail/Metadata/KeyValueRow.vue +9 -3
  17. package/components/Resource/Detail/TitleBar/__tests__/__snapshots__/index.test.ts.snap +31 -0
  18. package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +45 -1
  19. package/components/Resource/Detail/TitleBar/index.vue +1 -1
  20. package/components/Resource/Detail/ViewOptions/__tests__/__snapshots__/index.test.ts.snap +9 -0
  21. package/components/Resource/Detail/ViewOptions/__tests__/index.test.ts +62 -0
  22. package/components/Resource/Detail/ViewOptions/index.vue +2 -1
  23. package/components/ResourceList/Masthead.vue +25 -2
  24. package/components/SelectIconGrid.vue +5 -0
  25. package/components/SideNav.vue +13 -0
  26. package/components/__tests__/CountBox.test.ts +72 -0
  27. package/components/__tests__/DetailText.test.ts +113 -0
  28. package/components/__tests__/PromptModal.test.ts +2 -0
  29. package/components/fleet/FleetClusterTargets/index.vue +18 -1
  30. package/components/fleet/FleetClusters.vue +1 -0
  31. package/components/fleet/__tests__/FleetClusters.test.ts +71 -0
  32. package/components/form/InputWithSelect.vue +18 -10
  33. package/components/form/KeyValue.vue +17 -1
  34. package/components/form/LabeledSelect.vue +82 -24
  35. package/components/form/NodeScheduling.vue +17 -3
  36. package/components/form/PrivateRegistry.vue +69 -0
  37. package/components/form/Select.vue +73 -56
  38. package/components/form/ServiceNameSelect.vue +13 -11
  39. package/components/form/__tests__/KeyValue.test.ts +66 -0
  40. package/components/form/__tests__/NodeScheduling.test.ts +9 -0
  41. package/components/form/__tests__/PrivateRegistry.test.ts +133 -0
  42. package/components/form/labeled-select-utils/useLabeledSelectPagination.ts +138 -0
  43. package/components/formatter/WorkloadHealthScale.vue +3 -1
  44. package/components/nav/Group.vue +33 -9
  45. package/components/nav/Header.vue +56 -10
  46. package/components/nav/NotificationCenter/Notification.vue +4 -1
  47. package/components/nav/NotificationCenter/NotificationHeader.vue +20 -8
  48. package/components/nav/NotificationCenter/__tests__/NotificationHeader.test.ts +80 -0
  49. package/components/nav/TopLevelMenu.vue +15 -1
  50. package/components/nav/Type.vue +8 -7
  51. package/components/nav/WindowManager/index.vue +2 -1
  52. package/components/nav/WorkspaceSwitcher.vue +13 -0
  53. package/components/nav/__tests__/Group.test.ts +67 -0
  54. package/components/nav/__tests__/Header.test.ts +235 -0
  55. package/components/nav/__tests__/Type.test.ts +20 -3
  56. package/components/templates/default.vue +34 -4
  57. package/components/templates/home.vue +12 -25
  58. package/components/templates/plain.vue +13 -26
  59. package/composables/useLabeledFormElement.ts +10 -2
  60. package/composables/useLabeledSelect.ts +60 -0
  61. package/composables/useUserRetentionValidation.ts +1 -49
  62. package/config/cookies.js +0 -1
  63. package/config/labels-annotations.js +1 -0
  64. package/config/pagination-table-headers.js +8 -1
  65. package/config/product/apps.js +2 -1
  66. package/config/product/auth.js +1 -0
  67. package/config/product/backup.js +1 -0
  68. package/config/product/compliance.js +1 -1
  69. package/config/product/explorer.js +25 -6
  70. package/config/product/fleet.js +1 -0
  71. package/config/product/gatekeeper.js +1 -0
  72. package/config/product/istio.js +1 -0
  73. package/config/product/logging.js +1 -0
  74. package/config/product/longhorn.js +2 -1
  75. package/config/product/manager.js +1 -0
  76. package/config/product/monitoring.js +1 -0
  77. package/config/product/navlinks.js +1 -0
  78. package/config/product/neuvector.js +2 -1
  79. package/config/product/settings.js +1 -0
  80. package/config/product/uiplugins.js +1 -0
  81. package/config/query-params.js +1 -0
  82. package/config/router/routes.js +0 -8
  83. package/core/__tests__/plugin-products-helpers.test.ts +454 -0
  84. package/core/__tests__/plugin-products.test.ts +3810 -0
  85. package/core/extension-manager-impl.js +30 -1
  86. package/core/plugin-products-base.ts +392 -0
  87. package/core/plugin-products-extending.ts +44 -0
  88. package/core/plugin-products-helpers.ts +263 -0
  89. package/core/plugin-products-top-level.ts +66 -0
  90. package/core/plugin-products-type-guards.ts +33 -0
  91. package/core/plugin-products.ts +50 -0
  92. package/core/plugin-types.ts +237 -0
  93. package/core/plugin.ts +45 -10
  94. package/core/productDebugger.js +48 -0
  95. package/core/types.ts +97 -11
  96. package/detail/__tests__/__snapshots__/fleet.cattle.io.bundle.test.ts.snap +52 -0
  97. package/detail/__tests__/fleet.cattle.io.bundle.test.ts +171 -0
  98. package/detail/__tests__/management.cattle.io.fleetworkspace.test.ts +128 -0
  99. package/detail/fleet.cattle.io.bundle.vue +21 -34
  100. package/detail/management.cattle.io.fleetworkspace.vue +49 -0
  101. package/dialog/ExtensionCatalogInstallDialog.vue +1 -1
  102. package/dialog/InstallExtensionDialog.vue +6 -27
  103. package/dialog/UninstallExistingExtensionDialog.vue +141 -0
  104. package/dialog/UninstallExtensionDialog.vue +4 -26
  105. package/dialog/__tests__/UninstallExistingExtensionDialog.test.ts +114 -0
  106. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -0
  107. package/edit/__tests__/fleet.cattle.io.helmop.test.ts +9 -0
  108. package/edit/__tests__/kontainerDriver.test.ts +0 -13
  109. package/edit/__tests__/nodeDriver.test.ts +5 -11
  110. package/edit/__tests__/resources.cattle.io.restore.test.ts +9 -0
  111. package/edit/auditlog.cattle.io.auditpolicy/__tests__/__snapshots__/General.test.ts.snap +6 -0
  112. package/edit/auth/__tests__/oidc.test.ts +54 -0
  113. package/edit/auth/azuread.vue +1 -1
  114. package/edit/auth/oidc.vue +8 -0
  115. package/edit/kontainerDriver.vue +1 -2
  116. package/edit/nodeDriver.vue +0 -2
  117. package/edit/provisioning.cattle.io.cluster/AgentEnv.vue +1 -0
  118. package/edit/provisioning.cattle.io.cluster/__tests__/AgentEnv.test.ts +25 -0
  119. package/edit/provisioning.cattle.io.cluster/__tests__/Ingress.test.ts +176 -0
  120. package/edit/provisioning.cattle.io.cluster/index.vue +70 -99
  121. package/edit/provisioning.cattle.io.cluster/rke2.vue +4 -1
  122. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +6 -0
  123. package/edit/provisioning.cattle.io.cluster/tabs/Ingress.vue +7 -2
  124. package/initialize/App.vue +29 -2
  125. package/initialize/install-plugins.js +0 -2
  126. package/list/__tests__/management.cattle.io.feature.test.ts +105 -0
  127. package/list/catalog.cattle.io.app.vue +25 -5
  128. package/list/management.cattle.io.feature.vue +1 -1
  129. package/list/management.cattle.io.fleetworkspace.vue +8 -0
  130. package/list/provisioning.cattle.io.cluster.vue +0 -1
  131. package/list/workload.vue +11 -4
  132. package/machine-config/amazonec2.vue +1 -0
  133. package/mixins/chart.js +40 -9
  134. package/mixins/resource-fetch.js +12 -3
  135. package/models/__tests__/catalog.cattle.io.app.test.ts +15 -1
  136. package/models/__tests__/catalog.cattle.io.clusterrepo.test.ts +84 -0
  137. package/models/__tests__/chart.test.ts +99 -6
  138. package/models/__tests__/management.cattle.io.feature.test.ts +131 -0
  139. package/models/__tests__/monitoring.coreos.com.alertmanagerconfig.test.ts +98 -0
  140. package/models/catalog.cattle.io.app.js +21 -17
  141. package/models/catalog.cattle.io.clusterrepo.js +39 -11
  142. package/models/chart.js +33 -19
  143. package/models/fleet-application.js +1 -1
  144. package/models/fleet.cattle.io.bundle.js +1 -1
  145. package/models/kontainerdriver.js +11 -0
  146. package/models/management.cattle.io.authconfig.js +5 -1
  147. package/models/management.cattle.io.cluster.js +0 -53
  148. package/models/management.cattle.io.feature.js +3 -3
  149. package/models/management.cattle.io.kontainerdriver.js +1 -26
  150. package/models/monitoring.coreos.com.alertmanagerconfig.js +31 -17
  151. package/models/nodedriver.js +7 -0
  152. package/models/pod.js +18 -0
  153. package/models/workload.js +20 -2
  154. package/package.json +13 -13
  155. package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +0 -1
  156. package/pages/c/_cluster/apps/charts/__tests__/chart.test.ts +189 -0
  157. package/pages/c/_cluster/apps/charts/__tests__/index.test.ts +55 -0
  158. package/pages/c/_cluster/apps/charts/__tests__/install.test.ts +53 -0
  159. package/pages/c/_cluster/apps/charts/chart.vue +217 -33
  160. package/pages/c/_cluster/apps/charts/index.vue +2 -2
  161. package/pages/c/_cluster/apps/charts/install.vue +8 -3
  162. package/pages/c/_cluster/auth/user.retention/index.vue +55 -22
  163. package/pages/c/_cluster/manager/drivers/kontainerDriver/index.vue +5 -7
  164. package/pages/c/_cluster/settings/brand.vue +4 -4
  165. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +39 -2
  166. package/pages/c/_cluster/uiplugins/__tests__/PluginInfoPanel.test.ts +61 -0
  167. package/pages/c/_cluster/uiplugins/__tests__/index.test.ts +246 -23
  168. package/pages/c/_cluster/uiplugins/index.vue +166 -62
  169. package/plugins/dashboard-store/__tests__/resource-class.test.ts +1 -0
  170. package/plugins/dashboard-store/actions.js +3 -2
  171. package/plugins/dashboard-store/resource-class.js +62 -6
  172. package/plugins/plugin.js +16 -0
  173. package/plugins/steve/steve-pagination-utils.ts +7 -0
  174. package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +205 -1
  175. package/rancher-components/Form/LabeledInput/LabeledInput.vue +82 -4
  176. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +1 -1
  177. package/scripts/test-plugins-build.sh +5 -2
  178. package/scripts/typegen.sh +13 -1
  179. package/server/server-middleware.js +2 -2
  180. package/static/humans.txt +1 -0
  181. package/static/robots.txt +34 -0
  182. package/static/welcome-cow.svg +18 -0
  183. package/store/__tests__/catalog.test.ts +161 -11
  184. package/store/__tests__/type-map.test.ts +84 -24
  185. package/store/auth.js +0 -3
  186. package/store/catalog.js +60 -8
  187. package/store/type-map.js +42 -3
  188. package/tsconfig.paths.json +1 -0
  189. package/types/resources/pod.ts +18 -0
  190. package/types/shell/index.d.ts +8539 -2938
  191. package/types/store/dashboard-store.types.ts +5 -0
  192. package/types/store/pagination.types.ts +6 -0
  193. package/utils/__tests__/git.test.ts +270 -0
  194. package/utils/__tests__/inactivity.test.ts +316 -0
  195. package/utils/__tests__/object.test.ts +77 -0
  196. package/utils/__tests__/time.test.ts +14 -1
  197. package/utils/__tests__/url.test.ts +246 -0
  198. package/utils/axios.js +1 -4
  199. package/utils/dynamic-importer.js +3 -2
  200. package/utils/object.js +33 -2
  201. package/utils/pagination-utils.ts +1 -1
  202. package/utils/time.ts +5 -0
  203. package/utils/uiplugins.ts +12 -16
  204. package/utils/validators/__tests__/private-registry.test.ts +76 -0
  205. package/utils/validators/private-registry.ts +28 -0
  206. package/vue.config.js +0 -9
  207. package/assets/images/providers/azuread-black.svg +0 -22
  208. package/assets/images/providers/azuread.svg +0 -25
  209. package/assets/images/vendor/azuread.svg +0 -18
  210. package/assets/styles/fonts/_dots.scss +0 -18
  211. package/components/EmberPage.vue +0 -622
  212. package/components/EmberPageView.vue +0 -39
  213. package/components/form/labeled-select-utils/labeled-select-pagination.ts +0 -116
  214. package/mixins/labeled-form-element.ts +0 -225
  215. package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -28
  216. package/pages/c/_cluster/manager/pages/_page.vue +0 -22
  217. package/pages/c/_cluster/mcapps/pages/_page.vue +0 -22
  218. package/plugins/ember-cookie.js +0 -17
  219. package/utils/ember-page.js +0 -30
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg id="uuid-224e3580-d59f-48a8-9bb3-c822840f911d" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
3
+ <path d="m17.558,9.638L10.436,1.632c-.358-.402-.881-.632-1.435-.632h0c-.554,0-1.078.231-1.435.632L.442,9.638c-.346.389-.5.9-.423,1.403.077.503.379.952.827,1.231l7.123,4.436c.313.195.672.293,1.031.293s.718-.098,1.031-.293l7.123-4.436c.448-.279.75-.728.827-1.231.077-.503-.077-1.014-.423-1.403Zm-8.557,2.564l-3.47-2.161,3.47-3.9,3.47,3.9-3.47,2.161Zm-4.821-1.975l3.995,2.489-1.137.708-.016.01c-.394.25-.854.382-1.33.382-.528,0-1.059-.214-1.38-.413l-2.969-1.849c-.235-.147-.387-.373-.428-.637-.04-.264.037-.521.219-.725L8.257,2.186c.185-.208.456-.327.743-.328.287,0,.558.119.743.328l1.576,1.771c-.009,0-.018,0-.028,0-.856,0-1.668.313-2.278.866l-4.833,5.404Zm12.905.69c-.041.264-.192.49-.428.637l-7.123,4.436c-.325.202-.744.202-1.068,0l-2.192-1.365c.451-.076.88-.238,1.264-.484l6.259-3.898-4.197-4.759c.448-.425,1.053-.667,1.692-.667.335,0,.661.07.97.201l4.605,5.175c.181.204.259.461.219.725Z"/>
4
+ </svg>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg id="uuid-f8d4d392-7c12-4bd9-baff-66fbf7814b91" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
3
+ <path d="m3.802,14.032c.388.242,1.033.511,1.715.511.621,0,1.198-.18,1.676-.487,0,0,.001,0,.002-.001l1.805-1.128v4.073c-.286,0-.574-.078-.824-.234l-4.374-2.734Z" fill="#225086"/>
4
+ <path d="m7.853,1.507L.353,9.967c-.579.654-.428,1.642.323,2.111,0,0,2.776,1.735,3.126,1.954.388.242,1.033.511,1.715.511.621,0,1.198-.18,1.676-.487,0,0,.001,0,.002-.001l1.805-1.128-4.364-2.728,4.365-4.924V1s0,0,0,0c-.424,0-.847.169-1.147.507Z" fill="#6df"/>
5
+ <polygon points="4.636 10.199 4.688 10.231 9 12.927 9.001 12.927 9.001 12.927 9.001 5.276 9 5.275 4.636 10.199" fill="#cbf8ff"/>
6
+ <path d="m17.324,12.078c.751-.469.902-1.457.323-2.111l-4.921-5.551c-.397-.185-.842-.291-1.313-.291-.925,0-1.752.399-2.302,1.026l-.109.123h0s4.364,4.924,4.364,4.924h0s0,0,0,0l-4.365,2.728v4.073c.287,0,.573-.078.823-.234l7.5-4.688Z" fill="#074793"/>
7
+ <path d="m9.001,1v4.275s.109-.123.109-.123c.55-.627,1.377-1.026,2.302-1.026.472,0,.916.107,1.313.291l-2.579-2.909c-.299-.338-.723-.507-1.146-.507Z" fill="#0294e4"/>
8
+ <polygon points="13.365 10.199 13.365 10.199 13.365 10.199 9.001 5.276 9.001 12.926 13.365 10.199" fill="#96bcc2"/>
9
+ </svg>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg id="uuid-f8d4d392-7c12-4bd9-baff-66fbf7814b91" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
3
+ <path d="m3.802,14.032c.388.242,1.033.511,1.715.511.621,0,1.198-.18,1.676-.487,0,0,.001,0,.002-.001l1.805-1.128v4.073c-.286,0-.574-.078-.824-.234l-4.374-2.734Z" fill="#225086"/>
4
+ <path d="m7.853,1.507L.353,9.967c-.579.654-.428,1.642.323,2.111,0,0,2.776,1.735,3.126,1.954.388.242,1.033.511,1.715.511.621,0,1.198-.18,1.676-.487,0,0,.001,0,.002-.001l1.805-1.128-4.364-2.728,4.365-4.924V1s0,0,0,0c-.424,0-.847.169-1.147.507Z" fill="#6df"/>
5
+ <polygon points="4.636 10.199 4.688 10.231 9 12.927 9.001 12.927 9.001 12.927 9.001 5.276 9 5.275 4.636 10.199" fill="#cbf8ff"/>
6
+ <path d="m17.324,12.078c.751-.469.902-1.457.323-2.111l-4.921-5.551c-.397-.185-.842-.291-1.313-.291-.925,0-1.752.399-2.302,1.026l-.109.123h0s4.364,4.924,4.364,4.924h0s0,0,0,0l-4.365,2.728v4.073c.287,0,.573-.078.823-.234l7.5-4.688Z" fill="#074793"/>
7
+ <path d="m9.001,1v4.275s.109-.123.109-.123c.55-.627,1.377-1.026,2.302-1.026.472,0,.916.107,1.313.291l-2.579-2.909c-.299-.338-.723-.507-1.146-.507Z" fill="#0294e4"/>
8
+ <polygon points="13.365 10.199 13.365 10.199 13.365 10.199 9.001 5.276 9.001 12.926 13.365 10.199" fill="#96bcc2"/>
9
+ </svg>
@@ -10,7 +10,6 @@
10
10
  @import "./base/spacing";
11
11
 
12
12
  @import "./fonts/fontstack";
13
- @import "./fonts/dots";
14
13
  @import "./fonts/zerowidthspace";
15
14
  @import "./fonts/icons";
16
15
 
@@ -161,3 +161,34 @@
161
161
  // we need to use !important because it needs to superseed other classes that might impact outlines
162
162
  outline: 2px solid var(--primary-keyboard-focus);
163
163
  }
164
+
165
+ // -------------------------------------------------------------------------------------------------
166
+ // Extension dialog styles
167
+
168
+ @mixin extension-dialog {
169
+ padding: 8px 16px 16px 16px;
170
+
171
+ h4 {
172
+ font-weight: bold;
173
+ }
174
+
175
+ .dialog-panel {
176
+ display: flex;
177
+ flex-direction: column;
178
+ min-height: 96px;
179
+
180
+ .dialog-info {
181
+ flex: 1;
182
+ }
183
+ }
184
+
185
+ .dialog-buttons {
186
+ display: flex;
187
+ justify-content: flex-end;
188
+ margin-top: 24px;
189
+
190
+ > *:not(:last-child) {
191
+ margin-right: 8px;
192
+ }
193
+ }
194
+ }
@@ -42,6 +42,8 @@ $z-indexes: (
42
42
 
43
43
  cruFooter: 19,
44
44
 
45
+ copyToClipboard: 20,
46
+
45
47
  loadingMain: 51,
46
48
 
47
49
  slide-in: 52,
@@ -74,6 +74,7 @@ $contrasted-light: $lightest !default;
74
74
  $selected: rgba(#3D98D3, .5);
75
75
 
76
76
  $drag-over: #DCDEE7;
77
+ $body-bg : $lightest;
77
78
 
78
79
  BODY, .theme-light {
79
80
 
@@ -418,7 +419,7 @@ BODY, .theme-light {
418
419
  }
419
420
 
420
421
 
421
- --body-bg : #{$lightest};
422
+ --body-bg : #{$body-bg};
422
423
  --body-text : #{$darkest};
423
424
  --body-text-hover : var(--body-text);
424
425
  --scrollbar-thumb : #{$dark};
@@ -724,8 +725,8 @@ BODY, .theme-light {
724
725
  --rc-disabled-background: #{$gray001};
725
726
  --rc-disabled-text-color: #{$gray004};
726
727
 
727
- --rc-section-background-primary: #{$lightest};
728
- --rc-section-background-secondary: #{$lighter};
728
+ --rc-section-background-primary: #{$body-bg};
729
+ --rc-section-background-secondary: #{$grey-5};
729
730
  --rc-section-action-color: #{$gray009};
730
731
 
731
732
  --rc-image-bg: #{$lightest};
@@ -1072,8 +1073,8 @@ BODY, .theme-dark {
1072
1073
  --rc-disabled-background: #{$gray005};
1073
1074
  --rc-disabled-text-color: #{$gray004};
1074
1075
 
1075
- --rc-section-background-primary: #{$gray007};
1076
- --rc-section-background-secondary: #{$gray008};
1076
+ --rc-section-background-primary: #{$body-bg};
1077
+ --rc-section-background-secondary: #{$darkest};
1077
1078
  --rc-section-action-color: #{$gray010};
1078
1079
 
1079
1080
  --rc-image-bg: #{$lightest};
@@ -132,6 +132,7 @@ generic:
132
132
  deprecated: Deprecated
133
133
  upgradeable: Upgradeable
134
134
  installed: Installed
135
+ installedMultiple: Installed (multiple)
135
136
  featured: Featured
136
137
  shortFeatured: Feat
137
138
  category: Category
@@ -184,6 +185,7 @@ locale:
184
185
  none: (None)
185
186
 
186
187
  nav:
188
+ skipToContent: Skip to main content
187
189
  ariaLabel:
188
190
  clusterIconKeyCombo: Cluster keyboard shortcut combination icon
189
191
  localClusterIcon: Local Cluster icon
@@ -712,7 +714,7 @@ authConfig:
712
714
  azuread:
713
715
  tenantId:
714
716
  label: Tenant ID
715
- tooltip: From the Azure AD portal
717
+ tooltip: From the Microsoft Entra admin center
716
718
  placeholder: A long UUID string
717
719
  applicationId:
718
720
  label: Application ID
@@ -739,17 +741,17 @@ authConfig:
739
741
  externalHelp: See the OData filter expression documentation for more information.
740
742
  externalHelpLink: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/webservices/use-filter-expressions-in-odata-uris#filter-expressions
741
743
  reply:
742
- info: 'Azure AD requires a whitelisted URL for your Rancher server before beginning this setup. Please ensure that the following URL is set in the Reply URL section of your Azure Portal. Please note that it may take up to 5 minutes for the whitelisted URL to propagate.'
744
+ info: 'Microsoft Entra ID requires a whitelisted URL for your Rancher server before beginning this setup. Please ensure that the following URL is set in the Reply URL section of your Microsoft Entra admin center. Please note that it may take up to 5 minutes for the whitelisted URL to propagate.'
743
745
  label: Reply URL
744
746
  ariaLabel: Copy Reply URL to clipboard
745
747
  updateEndpoint:
746
748
  button: Update Endpoint
747
749
  banner:
748
- message: 'Azure AD Authentication must be updated: it is using the Azure Graph API, which will be deprecated at the end of 2022.'
750
+ message: 'Microsoft Entra ID Authentication must be updated: it is using the Azure AD Graph API, which was deprecated at the end of 2022.'
749
751
  linkText: 'Update it here.'
750
752
  modal:
751
753
  title: Are you sure? This update is irreversible.
752
- body: '<p><b>You may need to make some additional changes</b>. Please ensure the Azure AD app has the Directory.Read.All <b>Application</b> permission added to Microsoft Graph.<br> If any endpoints were customized while configuring Azure AD authentication in Rancher, they will not be automatically updated. </p>'
754
+ body: '<p><b>You may need to make some additional changes</b>. Please ensure the Microsoft Entra ID app has the Directory.Read.All <b>Application</b> permission added to Microsoft Graph.<br> If any endpoints were customized while configuring Microsoft Entra ID authentication in Rancher, they will not be automatically updated. </p>'
753
755
  oidc:
754
756
  endSessionEndpoint:
755
757
  title: End Session Endpoint
@@ -806,6 +808,9 @@ authConfig:
806
808
  groupSearch:
807
809
  label: Enable group search
808
810
  tooltip: Allows users with appropriate permissions to search and view all groups within the OIDC provider's realm. This can be useful for administrators who need to assign global roles to groups that they are not currently a member of.
811
+ clientAuthenticatedSearch:
812
+ label: Enable client authenticated search
813
+ tooltip: Use the OIDC Client Credentials to authenticate to Keycloak when searching for users or groups. This will bypass user-based RBAC within the realm
809
814
  stateBanner:
810
815
  disabled: 'The {provider} authentication provider is currently disabled.'
811
816
  enabled: 'The {provider} authentication provider is currently enabled.'
@@ -1138,7 +1143,6 @@ catalog:
1138
1143
  label: Chart Versions
1139
1144
  showMore: Show More
1140
1145
  showLess: Show Less
1141
- missingVersionDate: No date available for this chart version
1142
1146
  home: Homepage
1143
1147
  repository: Repository Page
1144
1148
  maintainers: Maintainers
@@ -1152,12 +1156,15 @@ catalog:
1152
1156
  deprecatedWarning: '{chartName} has been marked as deprecated. Use caution when installing this helm chart as it might be removed in the future.'
1153
1157
  experimentalWarning: '{chartName} has been marked as experimental. Use caution when installing this helm chart as it might not function as expected.'
1154
1158
  deprecatedAndExperimentalWarning: '{chartName} has been marked as deprecated and experimental. Use caution when installing this helm chart as it might be removed in the future and might not function as expected.'
1159
+ installedAppsSelector:
1160
+ ariaLabel: Select installed app instance
1155
1161
  chartButton:
1156
1162
  action:
1157
1163
  install: Install this version
1158
1164
  edit: Edit the current version
1159
1165
  upgrade: Upgrade to this version
1160
1166
  downgrade: Downgrade to this version
1167
+ installNew: Install as a new instance
1161
1168
  charts:
1162
1169
  browseAriaLabel: Show only charts grid
1163
1170
  iconAlt: Icon for {app} card/grid item
@@ -1183,15 +1190,11 @@ catalog:
1183
1190
  all: All Operating Systems
1184
1191
  linux: Linux
1185
1192
  windows: Windows
1186
- search: Search the catalogue...
1187
- deprecatedChartsFilter:
1188
- label: Show deprecated apps
1193
+ search: Search the catalog...
1189
1194
  addNewRepo:
1190
1195
  label: Add new
1191
1196
  ariaLabel: Add a new repository
1192
1197
  appChartCard:
1193
- subHeaderItem:
1194
- missingVersionDate: Last updated date is not available for this chart
1195
1198
  footerItem:
1196
1199
  ariaLabel: 'Apply {filter} filter'
1197
1200
  statusFilterCautions:
@@ -1435,6 +1438,8 @@ catalog:
1435
1438
  refreshInterval:
1436
1439
  label: Refresh Interval
1437
1440
  placeholder: 'default: {hours}'
1441
+ error:
1442
+ refresh: Error refreshing repository
1438
1443
  tools:
1439
1444
  iconAlt: Icon for {app} Cluster Tool
1440
1445
  header: Cluster Tools
@@ -2836,8 +2841,8 @@ providers:
2836
2841
  drivers:
2837
2842
  kontainer:
2838
2843
  title: Cluster Drivers
2839
- emberDeprecationMessage: 'Support for UI Plugins (based on Ember) for cluster and node drivers was deprecated in Rancher 2.11.0 and will be removed in a future release. These need to be migrated to the new <a href="https://extensions.rancher.io" target="_blank" rel="noopener noreferrer nofollow">UI Extensions framework</a>.'
2840
- refreshError: 'Error refreshing cluster drivers: {error}'
2844
+ emberRemovalMessage: 'Support for UI Plugins (based on Ember) for cluster and node drivers was deprecated in Rancher 2.11.0 and has been removed in 2.15.0. If you still need one of these plugins, it will need to be migrated to the new <a href="https://extensions.rancher.io/extensions/next/provisioning/hosted-provider/overview" target="_blank" rel="noopener noreferrer nofollow">UI Extensions framework</a>.'
2845
+ emberRemovalTooltip: 'Support for UI Plugins (based on Ember) for cluster and node drivers was deprecated in Rancher 2.11.0 and has been removed in 2.15.0. If you still need this plugin, it will need to be migrated to the new UI Extensions framework.'
2841
2846
  node:
2842
2847
  title: Node Drivers
2843
2848
  add:
@@ -2989,7 +2994,7 @@ fleet:
2989
2994
  add: Add Selector
2990
2995
  tolerations:
2991
2996
  label: Tolerations
2992
- description: "List of node taints to tolerate (requires Kubernetes >= 1.6)"
2997
+ description: "List of node taints to tolerate."
2993
2998
  add: Add Toleration
2994
2999
  priorityClassName:
2995
3000
  label: Priority Class Name
@@ -5446,6 +5451,7 @@ inactivity:
5446
5451
  # Rancher Extensions
5447
5452
  plugins:
5448
5453
  altIcon: Icon for {extension} extension card
5454
+ deprecatedExtension: This extension is deprecated and may soon be removed from the catalog.
5449
5455
  incompatiblePrimeOnly: "The latest version of this extension ({ version }) needs Rancher Prime in order to be installed."
5450
5456
  incompatibleRancherVersion: "The latest version of this extension ({ version }) is not compatible with the current Rancher version ({ required })."
5451
5457
  incompatibleKubeVersion: "The latest version of this extension ({ version }) is not compatible with the current Kube version ({ required })."
@@ -5578,6 +5584,9 @@ plugins:
5578
5584
  prompt: "Are you sure that you want to install this extension?"
5579
5585
  version: Version
5580
5586
  warnNotCertified: Please ensure that you are aware of the risks of installing Extensions from untrusted authors
5587
+ alreadyInstalledTitle: This extension is already installed from another source
5588
+ alreadyInstalledPrompt: To install it from this source, you need to uninstall the existing version first and reload the page (required). Would you like to continue?
5589
+ uninstallExisting: Uninstall existing version
5581
5590
  upgrade:
5582
5591
  label: Upgrade
5583
5592
  title: Upgrade extension {name}
@@ -6988,6 +6997,7 @@ tableHeaders:
6988
6997
  progress: Progress
6989
6998
  podImages: Image
6990
6999
  podRestarts: Restarts
7000
+ podLastRestart: Last Restart
6991
7001
  pods: Pods
6992
7002
  pod-Selector: Pod-Selector
6993
7003
  providers: Providers
@@ -7971,7 +7981,7 @@ model:
7971
7981
  local: Local
7972
7982
  multiple: Multiple
7973
7983
  activedirectory: ActiveDirectory
7974
- azuread: AzureAD
7984
+ azuread: Microsoft Entra ID
7975
7985
  github: GitHub
7976
7986
  githubapp: GitHub App
7977
7987
  keycloak: Keycloak
@@ -8045,10 +8055,7 @@ typeDescription:
8045
8055
  monitoring.coreos.com.prometheus: A Prometheus server is a Prometheus deployment whose scrape configuration and rules are determined by selected ServiceMonitors, PodMonitors, and PrometheusRules and whose alerts will be sent to all selected Alertmanagers with the custom resource's configuration.
8046
8056
  monitoring.coreos.com.alertmanager: An alert manager is deployment whose configuration will be specified by a secret in the same namespace, which determines which alerts should go to which receiver.
8047
8057
  node: The base Kubernetes Node resource represents a virtual or physical machine which hosts deployments. To manage the machine lifecycle, if available, go to Cluster Management.
8048
- catalog.cattle.io.clusterrepo: 'A chart repository is a Helm repository or {vendor} git based application catalog. It provides the list of available charts in the cluster.'
8049
- catalog.cattle.io.clusterrepo.local: ' A chart repository is a Helm repository or {vendor} git based application catalog. It provides the list of available charts in the cluster. Cluster Templates are deployed via Helm charts.'
8050
8058
  catalog.cattle.io.operation: An operation is the list of recent Helm operations that have been applied to the cluster.
8051
- catalog.cattle.io.app: An installed application is a Helm 3 chart that was installed either via our charts or through the Helm CLI.
8052
8059
  logging.banzaicloud.io.clusterflow: Logs from the cluster will be collected and logged to the selected Cluster Output.
8053
8060
  logging.banzaicloud.io.clusteroutput: A cluster output defines which logging providers that logs can be sent to and is only effective when deployed in the namespace that the logging operator is in.
8054
8061
  logging.banzaicloud.io.flow: A flow defines which logs to collect and filter as well as which output to send the logs. The flow is a namespaced resource, which means logs will only be collected from the namespace that the flow is deployed in.
@@ -9173,10 +9180,6 @@ support:
9173
9180
  title: Innovate with Freedom
9174
9181
  text: Take advantage of our certified compatibility with a wide range of Kubernetes providers, operating systems, and open source software.
9175
9182
 
9176
- embedding:
9177
- retry: Retry
9178
- unavailable: Cluster Manager UI is not available
9179
-
9180
9183
  serverUpgrade:
9181
9184
  title: "{vendor} Server Changed"
9182
9185
  message: "The page reloaded because the version of {vendor} running on your server changed."
@@ -531,16 +531,16 @@ authConfig:
531
531
  tokenEndpoint: Token 端点
532
532
  authEndpoint: Auth 端点
533
533
  reply:
534
- info: '在开始设置之前,Azure AD 需要 Rancher Server 的白名单 URL。请确保在 Azure 门户的回复 URL 中设置了以下 URL。请注意,白名单 URL 可能需要 5 分钟才能生效。'
534
+ info: '在开始设置之前,Microsoft Entra ID 需要 Rancher Server 的白名单 URL。请确保在 Microsoft Entra 管理中心的回复 URL 中设置了以下 URL。请注意,白名单 URL 可能需要 5 分钟才能生效。'
535
535
  label: 回复 URL
536
536
  updateEndpoint:
537
537
  button: 更新端点
538
538
  banner:
539
- message: '必须更新 Azure AD 身份认证:它使用了 Azure Graph API,该 API 将于 2022 年底弃用。'
539
+ message: '必须更新 Microsoft Entra ID 身份认证:它使用了 Azure AD Graph API,该 API 已于 2022 年底弃用。'
540
540
  linkText: '在此处进行更新。'
541
541
  modal:
542
542
  title: 是否确认?此更新是不可逆的。
543
- body: '<p><b>你可能需要进行额外的更改</b>。请确保 Azure AD 应用已将 Directory.Read.All <b>Application</b> 权限添加到 Microsoft Graph。<br> 如果在 Rancher 中配置 Azure AD 身份认证时自定义了端点,这些端点将不会自动更新。</p>'
543
+ body: '<p><b>你可能需要进行额外的更改</b>。请确保 Microsoft Entra ID 应用已将 Directory.Read.All <b>Application</b> 权限添加到 Microsoft Graph。<br> 如果在 Rancher 中配置 Microsoft Entra ID 身份认证时自定义了端点,这些端点将不会自动更新。</p>'
544
544
  oidc:
545
545
  oidc: 配置 OIDC 账号
546
546
  keycloakoidc: 配置 Keycloak OIDC 账号
@@ -6269,7 +6269,7 @@ model:
6269
6269
  local: 本地
6270
6270
  multiple: Multiple
6271
6271
  activedirectory: Active Directory
6272
- azuread: AzureAD
6272
+ azuread: Microsoft Entra ID
6273
6273
  github: GitHub
6274
6274
  keycloak: Keycloak
6275
6275
  ldap: LDAP
@@ -6339,10 +6339,7 @@ typeDescription:
6339
6339
  monitoring.coreos.com.prometheus: Prometheus server 是一个 Prometheus deployment,其抓取的配置和规则由选定的 ServiceMonitor、PodMonitor 和 PrometheusRule 决定。它将其告警信息发送给所有选择的具有定制资源配置的 AlertManager。
6340
6340
  monitoring.coreos.com.alertmanager: Alertmanager 是一个 deployment。其配置由同一命名空间中的密文指定,该密文决定了告警的接收器。
6341
6341
  node: Kubernetes 节点资源展示了承载 Deployment 的虚拟机或物理机。请进入"集群管理"页面管理可用节点的生命周期。
6342
- catalog.cattle.io.clusterrepo: 'Chart 仓库是一个 Helm 仓库或 {vendor} 基于 Git 的应用商店。此处列出了集群中可用的 Chart。'
6343
- catalog.cattle.io.clusterrepo.local: ' Chart 仓库是一个 Helm 仓库或 {vendor} 基于 Git 的应用商店。此处列出了集群中可用的 Chart。集群模板是通过 Helm Chart 部署的。'
6344
6342
  catalog.cattle.io.operation: 最近的操作指的是最近应用于集群的一系列 Helm 操作。
6345
- catalog.cattle.io.app: 已安装的应用指的是通过我们的 Chart 或 Helm CLI 安装的 Helm 3 Chart。
6346
6343
  logging.banzaicloud.io.clusterflow: 集群日志将被收集并投递到选定的 ClusterOutput 中。
6347
6344
  logging.banzaicloud.io.clusteroutput: ClusterOutput 定义了日志可以发送到哪些日志提供程序。只有部署在 Logging operator 所在的命名空间中时,ClusterOutput 才生效。
6348
6345
  logging.banzaicloud.io.flow: Flow 定义了要收集和过滤的日志,以及日志的输出目标。Flow 是一个命名空间资源。换言之,只有部署了该 Flow 的命名空间日志才能被该 Flow 收集。
@@ -7310,10 +7307,6 @@ support:
7310
7307
  title: 自由创新
7311
7308
  text: 基于我们与众多 Kubernetes 供应商、操作系统和开源软件认证的兼容性,实现自主创新。
7312
7309
 
7313
- embedding:
7314
- retry: 重试
7315
- unavailable: Cluster Manager UI 不可用
7316
-
7317
7310
  legacy:
7318
7311
  alerts: 告警
7319
7312
  apps: 应用
@@ -3,7 +3,7 @@ import { nextTick } from 'vue';
3
3
  import { mount } from '@vue/test-utils';
4
4
 
5
5
  import S3 from '@shell/chart/rancher-backup/S3';
6
- import Vuex from 'vuex';
6
+ import { createStore } from 'vuex';
7
7
 
8
8
  describe('rancher-backup: S3', () => {
9
9
  const mockStore = {
@@ -16,8 +16,15 @@ describe('rancher-backup: S3', () => {
16
16
  }
17
17
  };
18
18
  const wrapper = mount(S3, {
19
- plugins: [Vuex],
20
- global: { mocks: { $store: mockStore, $fetchState: { pending: false } } }
19
+ global: { mocks: { $store: mockStore, $fetchState: { pending: false } } },
20
+ provide: {
21
+ store: createStore({
22
+ getters: {
23
+ 'cluster/paginationEnabled': () => () => false,
24
+ currentStore: () => 'cluster'
25
+ }
26
+ })
27
+ },
21
28
  });
22
29
 
23
30
  it('should emit invalid when form is not filled', () => {
@@ -3,6 +3,8 @@
3
3
  export default {
4
4
  name: 'CountBox',
5
5
 
6
+ emits: ['click'],
7
+
6
8
  props: {
7
9
  name: {
8
10
  type: String,
@@ -19,6 +21,10 @@ export default {
19
21
  compact: {
20
22
  type: Boolean,
21
23
  default: false
24
+ },
25
+ clickable: {
26
+ type: Boolean,
27
+ default: false
22
28
  }
23
29
  },
24
30
  computed: {
@@ -34,6 +40,12 @@ export default {
34
40
  methods: {
35
41
  customizePrimaryColorOpacity(opacity) {
36
42
  return `rgba(var(${ this.primaryColorVar }), ${ opacity })`;
43
+ },
44
+
45
+ handleClick() {
46
+ if (this.clickable) {
47
+ this.$emit('click');
48
+ }
37
49
  }
38
50
  }
39
51
  };
@@ -42,7 +54,9 @@ export default {
42
54
  <template>
43
55
  <div
44
56
  class="count-container"
57
+ :class="{ 'clickable': clickable }"
45
58
  :style="sideStyle"
59
+ @click="handleClick"
46
60
  >
47
61
  <div
48
62
  class="count"
@@ -61,6 +75,12 @@ export default {
61
75
  </template>
62
76
 
63
77
  <style lang="scss" scoped>
78
+ .count-container {
79
+ &.clickable {
80
+ cursor: pointer;
81
+ }
82
+ }
83
+
64
84
  .count {
65
85
  $padding: 10px;
66
86
 
@@ -22,7 +22,6 @@ export default {
22
22
  rules: {
23
23
  default: () => ({
24
24
  url: [],
25
- uiUrl: [],
26
25
  checksum: [],
27
26
  whitelistDomains: []
28
27
  }),
@@ -56,17 +55,6 @@ export default {
56
55
  :data-testid="'driver-create-checksum-field'"
57
56
  />
58
57
  </div>
59
- <div class="row mb-20">
60
- <LabeledInput
61
- v-model:value.trim="value.uiUrl"
62
- :label="t('drivers.add.customUiUrl.label')"
63
- :tooltip="t('drivers.add.customUiUrl.tooltip', null, true)"
64
- :placeholder="t('drivers.add.customUiUrl.placeholder', null, true)"
65
- :mode="mode"
66
- :rules="rules.uiUrl"
67
- :data-testid="'driver-create-uiurl-field'"
68
- />
69
- </div>
70
58
  <div class="col span-6">
71
59
  <ArrayList
72
60
  v-model:value="value.whitelistDomains"
@@ -187,10 +187,9 @@ export default {
187
187
  >{{ body }}</span>
188
188
 
189
189
  <CodeMirror
190
- v-else-if="jsonStr"
190
+ v-else-if="jsonStr && !concealed"
191
191
  :options="{mode:{name:'javascript', json:true}, lineNumbers:false, foldGutter:false, readOnly:true}"
192
192
  :value="jsonStr"
193
- :class="{'conceal': concealed}"
194
193
  aria-live="polite"
195
194
  />
196
195
 
@@ -199,9 +198,16 @@ export default {
199
198
  :class="{'conceal-wrapper': concealed}"
200
199
  >
201
200
  <span
201
+ v-if="concealed"
202
+ data-testid="detail-top_html"
203
+ class="conceal"
204
+ aria-live="polite"
205
+ />
206
+ <span
207
+ v-else
202
208
  v-clean-html="bodyHtml"
203
209
  data-testid="detail-top_html"
204
- :class="{'conceal': concealed, 'monospace': monospace && !isBinary}"
210
+ :class="{'monospace': monospace && !isBinary}"
205
211
  aria-live="polite"
206
212
  />
207
213
  </div>
@@ -270,6 +276,9 @@ export default {
270
276
  .conceal {
271
277
  white-space: nowrap;
272
278
  display: block;
279
+ &::before {
280
+ content: '••••••••••••••••••••••••';
281
+ }
273
282
  }
274
283
 
275
284
  .action-group {
@@ -0,0 +1,76 @@
1
+ <script>
2
+ export default {
3
+ name: 'EmptyProductPage',
4
+ layout: 'plain',
5
+ data() {
6
+ const err = this.$route.meta?.pageError;
7
+
8
+ let msg;
9
+
10
+ switch (err) {
11
+ case 'no-nav':
12
+ msg = [
13
+ 'When a component is not provided for a product, the layout with side navigation is used',
14
+ 'No child items were specified, so this "Default" empty view has been added',
15
+ 'Please add child items to this product'
16
+ ];
17
+ break;
18
+ default:
19
+ msg = ['No component defined for this extension product... Define a component or child pages so it can be rendered here.'];
20
+ }
21
+
22
+ return {
23
+ img: require('~shell/assets/images/generic-plugin.svg'),
24
+ msg,
25
+ };
26
+ },
27
+ };
28
+ </script>
29
+
30
+ <template>
31
+ <div class="empty-product-page">
32
+ <img
33
+ :src="img"
34
+ alt="Extension Product Error"
35
+ >
36
+ <div class="err-messages">
37
+ <p
38
+ v-for="(m, index) in msg"
39
+ :key="index"
40
+ >
41
+ {{ m }}
42
+ </p>
43
+ </div>
44
+ </div>
45
+ </template>
46
+
47
+ <style lang="scss" scoped>
48
+ .empty-product-page {
49
+ align-items: center;
50
+ display: flex;
51
+ justify-content: center;
52
+ opacity: 0.75;
53
+
54
+ > img {
55
+ width: 128px;
56
+ margin-bottom: 20px;
57
+ }
58
+
59
+ .err-messages {
60
+ display: flex;
61
+ align-items: center;
62
+ text-align: center;
63
+ flex-direction: column;
64
+
65
+ > * {
66
+ margin-bottom: 8px;
67
+ font-size: 16px;
68
+
69
+ &:last-child {
70
+ font-weight: bold;
71
+ color: var(--error);
72
+ }
73
+ }
74
+ }
75
+ }
76
+ </style>
@@ -70,8 +70,7 @@ const onClick = (ev: MouseEvent) => {
70
70
  border-color: var(--success-border);
71
71
  color: var(--success-text);
72
72
 
73
- transition: all 0.25s;
74
- transition-timing-function: ease;
73
+ transition: background-color 0.25s ease, border-color 0.25s ease, color 0.25s ease;
75
74
  }
76
75
 
77
76
  &:focus-visible {
@@ -77,12 +77,15 @@ const previewId = randomStr();
77
77
  position: relative;
78
78
  padding: 0;
79
79
 
80
+ $topShift: -6px;
81
+ $topShiftHidden: -100vh; //100% of the viewport
82
+
80
83
  .copy-to-clipboard {
81
84
  position: fixed;
82
85
 
83
86
  right: -20px;
84
- top: -6px;
85
- z-index: 20px;
87
+ top: $topShiftHidden;
88
+ z-index: z-index('copyToClipboard');
86
89
  }
87
90
 
88
91
  &, .btn, .rc-tag {
@@ -126,13 +129,16 @@ const previewId = randomStr();
126
129
  }
127
130
 
128
131
  & + .copy-to-clipboard {
132
+ // This is how we "hide" the component but still allow it to be visible to accessibility (tab focus)
129
133
  position: absolute;
134
+ top: $topShift;
130
135
  }
131
136
  }
132
137
 
133
138
  .copy-to-clipboard:focus-visible, .copy-to-clipboard:hover {
139
+ // This is how we "hide" the component but still allow it to be visible to accessibility (tab focus)
134
140
  position: absolute;
135
-
141
+ top: $topShift;
136
142
  }
137
143
 
138
144
  .btn:has(+ .copy-to-clipboard:focus-visible), .btn:has(+ .copy-to-clipboard:hover) {
@@ -0,0 +1,31 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`component: TitleBar/index should match the full component snapshot 1`] = `
4
+ <div class="title-bar">
5
+ <div class="top">
6
+ <h1 class="title">
7
+ <!----><a class="resource-link">RESOURCE_TYPE_LABEL: </a><span class="resource-name masthead-resource-title">RESOURCE_NAME</span><span class="badge-state bg-success badge-state"><!--v-if--><span class="msg">Active</span></span>
8
+ </h1>
9
+ <div class="actions"><button role="button" class="rc-button btn variant-primary btn-medium">
10
+ <!--v-if-->Deploy
11
+ <!--v-if-->
12
+ </button><button role="button" class="rc-button btn variant-secondary btn-large">
13
+ <!--v-if-->Rollback
14
+ <!--v-if-->
15
+ </button><button role="button" class="rc-button btn variant-primary btn-large show-configuration" data-testid="show-configuration-cta" aria-label="component.resource.detail.titleBar.ariaLabel.showConfiguration-{&quot;resource&quot;:&quot;RESOURCE_NAME&quot;}">
16
+ <!--v-if--><i class="icon icon-document" aria-hidden="true"></i> component.resource.detail.titleBar.showConfiguration
17
+ <!--v-if-->
18
+ </button>
19
+ <div class="v-popper v-popper--theme-dropdown"><button role="button" class="rc-button btn variant-multi-action btn-medium" aria-haspopup="menu" aria-expanded="false" data-testid="masthead-action-menu" aria-label="component.resource.detail.titleBar.ariaLabel.actionMenu-{&quot;resource&quot;:&quot;RESOURCE_NAME&quot;}">
20
+ <!--v-if--><i class="icon icon-actions"></i>
21
+ <!--v-if-->
22
+ </button></div>
23
+ <div class="popperContainer">
24
+ <!--Empty container for mounting popper content-->
25
+ </div>
26
+ </div>
27
+ </div>
28
+ <div class="bottom description text-deemphasized">A test description</div>
29
+ <!--v-if-->
30
+ </div>
31
+ `;