@rancher/shell 3.0.0-rc.1 → 3.0.0-rc.3

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 (123) hide show
  1. package/assets/styles/base/_variables.scss +1 -0
  2. package/assets/styles/global/_layout.scss +12 -3
  3. package/assets/styles/global/_select.scss +1 -1
  4. package/assets/styles/global/_tooltip.scss +47 -69
  5. package/assets/translations/en-us.yaml +1 -0
  6. package/components/ActionDropdown.vue +10 -14
  7. package/components/ActionMenu.vue +1 -1
  8. package/components/ButtonDropdown.vue +9 -8
  9. package/components/CodeMirror.vue +82 -67
  10. package/components/CruResource.vue +61 -61
  11. package/components/Import.vue +0 -1
  12. package/components/InputOrDisplay.vue +21 -33
  13. package/components/LocaleSelector.vue +5 -3
  14. package/components/Questions/__tests__/Boolean.test.ts +1 -2
  15. package/components/Questions/__tests__/Float.test.ts +1 -2
  16. package/components/Questions/__tests__/Int.test.ts +1 -2
  17. package/components/Questions/__tests__/String.test.ts +1 -2
  18. package/components/Questions/__tests__/Yaml.test.ts +1 -1
  19. package/components/Questions/__tests__/utils/questions-defaults.ts +2 -2
  20. package/components/SideNav.vue +3 -3
  21. package/components/SortableTable/index.vue +2 -1
  22. package/components/Wizard.vue +2 -0
  23. package/components/YamlEditor.vue +1 -1
  24. package/components/__tests__/CodeMirror.test.ts +91 -94
  25. package/components/__tests__/ConsumptionGauge.test.ts +2 -2
  26. package/components/__tests__/ContainerResourceLimit.test.ts +35 -0
  27. package/components/__tests__/NamespaceFilter.test.ts +10 -7
  28. package/components/auth/AllowedPrincipals.vue +2 -2
  29. package/components/auth/RoleDetailEdit.vue +13 -17
  30. package/components/auth/SelectPrincipal.vue +2 -2
  31. package/components/fleet/FleetStatus.vue +15 -16
  32. package/components/form/ArrayList.vue +1 -1
  33. package/components/form/ArrayListGrouped.vue +18 -5
  34. package/components/form/LabeledSelect.vue +16 -11
  35. package/components/form/Labels.vue +11 -13
  36. package/components/form/Select.vue +17 -1
  37. package/components/form/UnitInput.vue +2 -0
  38. package/components/form/__tests__/Command.test.ts +6 -5
  39. package/components/form/__tests__/Taints.test.ts +9 -9
  40. package/components/form/__tests__/UnitInput.test.ts +68 -0
  41. package/components/formatter/AppSummaryGraph.vue +3 -3
  42. package/components/formatter/FleetSummaryGraph.vue +3 -3
  43. package/components/formatter/InternalExternalIP.vue +13 -15
  44. package/components/formatter/MachineSummaryGraph.vue +3 -3
  45. package/components/formatter/Scale.vue +3 -3
  46. package/components/formatter/Weight.vue +3 -3
  47. package/components/nav/Header.vue +31 -14
  48. package/components/nav/NamespaceFilter.vue +3 -2
  49. package/components/nav/TopLevelMenu.vue +11 -10
  50. package/components/nav/WindowManager/ContainerLogs.vue +3 -2
  51. package/components/nav/WindowManager/ContainerShell.vue +7 -2
  52. package/components/nav/WindowManager/__tests__/ContainerLogs.test.ts +195 -192
  53. package/components/nav/WindowManager/__tests__/ContainerShell.test.ts +23 -19
  54. package/composables/useUserRetentionValidation.test.ts +1 -1
  55. package/composables/useUserRetentionValidation.ts +1 -1
  56. package/core/{plugin-helpers.js → plugin-helpers.ts} +25 -7
  57. package/core/plugin-routes.ts +41 -29
  58. package/core/plugin.ts +30 -3
  59. package/core/plugins-loader.js +2 -0
  60. package/detail/__tests__/autoscaling.horizontalpodautoscaler.test.ts +16 -8
  61. package/detail/helm.cattle.io.projecthelmchart.vue +32 -35
  62. package/edit/__tests__/namespace.test.ts +7 -9
  63. package/edit/__tests__/service.test.ts +14 -2
  64. package/edit/auth/__tests__/azuread.test.ts +10 -11
  65. package/edit/auth/azuread.vue +1 -1
  66. package/edit/auth/ldap/config.vue +280 -280
  67. package/edit/auth/saml.vue +1 -4
  68. package/edit/cis.cattle.io.clusterscan.vue +80 -82
  69. package/edit/cis.cattle.io.clusterscanprofile.vue +29 -31
  70. package/edit/fleet.cattle.io.clustergroup.vue +3 -3
  71. package/edit/management.cattle.io.clusterroletemplatebinding.vue +1 -0
  72. package/edit/management.cattle.io.fleetworkspace.vue +3 -3
  73. package/edit/management.cattle.io.node.vue +3 -2
  74. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +3 -2
  75. package/edit/namespace.vue +3 -1
  76. package/edit/networking.k8s.io.ingress/index.vue +3 -2
  77. package/edit/networking.k8s.io.networkpolicy/index.vue +2 -2
  78. package/edit/node.vue +3 -3
  79. package/edit/persistentvolume/__tests__/persistentvolume.test.ts +9 -4
  80. package/edit/persistentvolume/index.vue +3 -3
  81. package/edit/persistentvolumeclaim.vue +3 -3
  82. package/edit/policy.poddisruptionbudget.vue +3 -3
  83. package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +5 -6
  84. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +13 -6
  85. package/edit/provisioning.cattle.io.cluster/rke2.vue +7 -1
  86. package/edit/provisioning.cattle.io.cluster/tabs/registries/__tests__/RegistryConfigs.test.ts +6 -7
  87. package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +30 -32
  88. package/edit/resources.cattle.io.backup.vue +95 -97
  89. package/edit/resources.cattle.io.restore.vue +96 -98
  90. package/edit/service.vue +12 -4
  91. package/edit/serviceaccount.vue +3 -3
  92. package/edit/storage.k8s.io.storageclass/index.vue +3 -3
  93. package/edit/workload/Job.vue +2 -2
  94. package/edit/workload/__tests__/Job.test.ts +5 -5
  95. package/edit/workload/__tests__/index.test.ts +9 -7
  96. package/edit/workload/index.vue +17 -11
  97. package/edit/workload/storage/Mount.vue +7 -4
  98. package/edit/workload/storage/__tests__/Mount.test.ts +6 -2
  99. package/edit/workload/storage/index.vue +10 -23
  100. package/initialize/entry-helpers.js +0 -5
  101. package/initialize/install-plugins.js +2 -2
  102. package/mixins/fetch.client.js +2 -1
  103. package/mixins/page-actions.js +1 -1
  104. package/package.json +3 -3
  105. package/pages/auth/login.vue +2 -1
  106. package/pages/c/_cluster/auth/user.retention/index.vue +1 -1
  107. package/pages/c/_cluster/istio/index.vue +2 -2
  108. package/pages/c/_cluster/longhorn/__tests__/longhorn.index.test.ts +3 -2
  109. package/pages/c/_cluster/monitoring/index.vue +1 -1
  110. package/pages/c/_cluster/uiplugins/AddExtensionRepos.vue +34 -36
  111. package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +7 -29
  112. package/pages/index.vue +10 -2
  113. package/plugins/i18n.js +1 -1
  114. package/promptRemove/management.cattle.io.roletemplate.vue +3 -5
  115. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +4 -32
  116. package/store/type-map.js +3 -2
  117. package/vue.config.js +409 -391
  118. package/composables/useStore.ts +0 -16
  119. package/plugins/clean-html-directive.js +0 -10
  120. package/plugins/clean-tooltip-directive.js +0 -9
  121. package/plugins/int-number.js +0 -9
  122. package/plugins/positive-int-number.js +0 -9
  123. package/plugins/trim-whitespace.js +0 -10
@@ -7,6 +7,7 @@ $max-width: 1440px !default;
7
7
  $min-width: 75% !default;
8
8
  $input-height: 61px;
9
9
  $unlabeled-input-height: 40px;
10
+ $unlabaled-select-padding: 3px 0;
10
11
 
11
12
  $input-padding-lg: 18px;
12
13
  $input-padding-sm: 10px;
@@ -119,18 +119,27 @@ HEADER {
119
119
  }
120
120
 
121
121
  .localeSelector {
122
- :deep(.popover-inner) {
122
+ :deep(.v-popper__inner) {
123
123
  padding: 50px 0;
124
124
  }
125
125
 
126
- :deep(.popover-arrow) {
126
+ :deep(.v-popper__arrow-container) {
127
127
  display: none;
128
128
  }
129
129
 
130
- :deep(.popover:focus) {
130
+ :deep(.v-popper:focus) {
131
131
  outline: 0;
132
132
  }
133
133
 
134
+ &[data-popper-placement^="top"] {
135
+ .v-popper__arrow-container {
136
+ .v-popper__arrow-inner {
137
+ top: 0;
138
+ border-color: var(--tooltip-bg);
139
+ }
140
+ }
141
+ }
142
+
134
143
  li {
135
144
  padding: 8px 20px;
136
145
 
@@ -142,7 +142,7 @@
142
142
  background-color: var(--input-bg);
143
143
  border-radius: var(--border-radius);
144
144
  color: var(--input-text);
145
- padding: 3px 0;
145
+ padding: $unlabaled-select-padding;
146
146
 
147
147
  .vs--single .vs__selected-options {
148
148
  flex-wrap: nowrap;
@@ -1,4 +1,4 @@
1
- .tooltip {
1
+ .v-popper__popper.v-popper--theme-tooltip {
2
2
  $triangle-size: 8px;
3
3
  $triangle-inner-size: $triangle-size - 1px;
4
4
  $center: calc(50% - #{$triangle-size});
@@ -7,130 +7,105 @@
7
7
  z-index: z-index('tooltip');
8
8
  max-width: 50vw;
9
9
 
10
- .tooltip-inner {
10
+ .v-popper__inner {
11
11
  background: var(--tooltip-bg);
12
12
  color: var(--tooltip-text);
13
13
  border-radius: var(--border-radius);
14
14
  padding: 8px;
15
15
  }
16
16
 
17
- .tooltip-arrow {
17
+ .v-popper__arrow-container {
18
18
  width: 0;
19
19
  height: 0;
20
20
  border: 0 solid transparent;
21
21
  position: absolute;
22
22
  z-index: 1;
23
23
 
24
- &:after {
25
- position: absolute;
24
+ .v-popper__arrow-inner {
26
25
  border: $triangle-inner-size solid transparent;
27
- content: '';
28
26
  }
29
27
  }
30
28
 
31
- &[x-placement^="top"] {
32
- margin-bottom: $triangle-size;
29
+ &[data-popper-placement^="top"] {
30
+ .v-popper__arrow-container {
33
31
 
34
- .tooltip-arrow {
35
- border-width: 5px 5px 0 5px;
36
- bottom: -4px;
37
- }
38
-
39
- margin-bottom: $triangle-size;
40
-
41
- .tooltip-arrow {
42
- bottom: -$triangle-inner-size;
43
-
44
- &:after {
32
+ .v-popper__arrow-outer {
45
33
  border-bottom-width: 0;
46
34
  border-top-color: var(--tooltip-bg);
47
- bottom: 1px;
48
35
  left: -$triangle-inner-size;
49
36
  }
50
37
  }
51
38
  }
52
39
 
53
40
 
54
- &[x-placement^="bottom"] {
55
- margin-top: $triangle-size;
41
+ &[data-popper-placement^="bottom"] {
42
+ .v-popper__arrow-container {
56
43
 
57
- .tooltip-arrow {
58
- top: -$triangle-inner-size;
59
-
60
- &:after {
44
+ .v-popper__arrow-outer {
61
45
  border-top-width: 0;
62
46
  border-bottom-color: var(--tooltip-bg);
63
- top: 1px;
64
47
  left: -$triangle-inner-size;
65
48
  background: transparent;
66
49
  }
67
50
  }
68
51
  }
69
52
 
70
- &[x-placement^="right"] {
71
- margin-left: $triangle-size;
72
-
73
- .tooltip-arrow {
74
- left: -$triangle-inner-size;
53
+ &[data-popper-placement^="right"] {
54
+ .v-popper__arrow-container {
75
55
 
76
- &:after {
77
- border-left-width: 0;
56
+ .v-popper__arrow-outer {
78
57
  border-right-color: var(--tooltip-bg);
79
- left: 1px;
80
58
  top: -$triangle-inner-size;
59
+ border-left-width: 0;
81
60
  }
82
61
  }
83
62
  }
84
63
 
85
- &[x-placement^="left"] {
86
- margin-right: $triangle-size;
64
+ &[data-popper-placement^="left"] {
65
+ .v-popper__arrow-container {
87
66
 
88
- .tooltip-arrow {
89
- right: -$triangle-inner-size;
90
-
91
- &:after {
67
+ .v-popper__arrow-outer {
92
68
  border-right-width: 0;
93
69
  border-left-color: var(--tooltip-bg);
94
- right: 1px;
95
70
  top: -$triangle-inner-size;
96
71
  }
97
72
  }
98
73
  }
99
74
 
100
75
  &.tooltip-warning {
101
- .tooltip-inner {
76
+ .v-popper__inner {
102
77
  background: var(--tooltip-bg-warning);
103
78
  color: var(--tooltip-text-warning);
104
79
  }
105
80
 
106
- &[x-placement^="top"] {
107
- .tooltip-arrow {
108
- &:after {
81
+ &[data-popper-placement^="top"] {
82
+ .v-popper__arrow-container {
83
+ .v-popper__arrow-outer {
109
84
  border-top-color: var(--tooltip-bg-warning);
110
85
  }
111
86
  }
112
87
  }
113
88
 
114
89
 
115
- &[x-placement^="bottom"] {
116
- .tooltip-arrow {
117
- &:after {
90
+ &[data-popper-placement^="bottom"] {
91
+ .v-popper__arrow-container {
92
+ .v-popper__arrow-outer {
118
93
  border-bottom-color: var(--body-bg);
119
94
  }
120
95
  }
121
96
  }
122
97
 
123
- &[x-placement^="right"] {
124
- .tooltip-arrow {
125
- &:after {
98
+ &[data-popper-placement^="right"] {
99
+ .v-popper__arrow-container {
100
+ .v-popper__arrow-outer {
126
101
  border-right-color: var(--tooltip-bg-warning);
127
102
  }
128
103
  }
129
104
  }
130
105
 
131
- &[x-placement^="left"] {
132
- .tooltip-arrow {
133
- &:after {
106
+ &[data-popper-placement^="left"] {
107
+ .v-popper__arrow-container {
108
+ .v-popper__arrow-outer {
134
109
  border-left-color: var(--tooltip-bg-warning);
135
110
  }
136
111
  }
@@ -138,44 +113,47 @@
138
113
  }
139
114
  }
140
115
 
141
- .popover {
116
+ .v-popper__popper {
142
117
  $color: var(--popover-bg);
143
118
  border: 1px solid var(--border);
144
119
  border-radius: var(--border-radius);
145
120
 
146
- .popover-inner {
121
+ .v-popper__inner {
147
122
  background: $color;
148
123
  color: var(--popover-text);
149
124
  padding: 10px;
150
125
  border-radius: var(--border-radius);
151
- box-shadow: 0 5px 20px var(--shadow);
126
+ border: none;
152
127
 
153
128
  a {
154
129
  color: var(--popover-text);
155
130
  }
156
131
  }
157
132
 
158
- .popover-arrow {
133
+ .v-popper__arrow-container {
159
134
  border-color: transparent;
135
+ .v-popper__arrow-outer {
136
+ border-color: transparent;
137
+ }
160
138
  }
139
+ }
161
140
 
162
- &[x-placement^="bottom"] {
163
- .popover-arrow {
164
- &:after {
165
- // border-bottom-color: var(--popover-bg);
166
- border-bottom-width: 0;
167
- }
141
+ .v-popper__popper.v-popper--theme-dropdown {
142
+ z-index: z-index('tooltip');
143
+
144
+ &.containerLogsDropdown {
145
+ .v-popper__arrow-container {
146
+ display: none;
168
147
  }
169
148
  }
170
-
171
149
  }
172
150
 
173
- .v-popover {
151
+ .v-popper {
174
152
  display: inline;
175
153
  }
176
154
 
177
- .tooltip,
178
- .popover {
155
+ .v-popper__popper.v-popper--theme-tooltip,
156
+ .v-popper {
179
157
  &[aria-hidden='true'] {
180
158
  // This removes it from the layout of ButtondropDown (so it doesn't render huge for SSR) but
181
159
  // still allows it to maintain it's dimensions for v-tooltip to calculate the appropriate position.
@@ -6287,6 +6287,7 @@ workload:
6287
6287
  workload: Workload
6288
6288
  pods: Pods by State
6289
6289
  runs: Runs
6290
+ error: Pod { name } Security Policy Violation { policy }
6290
6291
  gaugeStates:
6291
6292
  succeeded: Successful
6292
6293
  running: Running
@@ -66,7 +66,7 @@ export default {
66
66
  placement="bottom"
67
67
  :container="false"
68
68
  :disabled="disableButton"
69
- :popper-options="{modifiers: { flip: { enabled: false } } }"
69
+ :flip="false"
70
70
  >
71
71
  <slot
72
72
  name="button-content"
@@ -82,7 +82,7 @@ export default {
82
82
  Button <i class="icon icon-chevron-down" />
83
83
  </button>
84
84
  </slot>
85
- <template #popover>
85
+ <template #popper>
86
86
  <slot name="popover-content" />
87
87
  </template>
88
88
  </v-dropdown>
@@ -123,7 +123,7 @@ export default {
123
123
  $sm-trigger-padding: 10px 10px 10px 10px;
124
124
  $lg-trigger-padding: 18px 10px 10px 10px;
125
125
 
126
- .v-popover {
126
+ .v-popper {
127
127
  .text-right {
128
128
  margin-top: 5px;
129
129
  }
@@ -179,7 +179,7 @@ export default {
179
179
  &>.btn {
180
180
  padding: 15px 35px 15px 15px;
181
181
  }
182
- .v-popover{
182
+ .v-popper{
183
183
  .trigger{
184
184
  position: absolute;
185
185
  top: 0px;
@@ -194,23 +194,19 @@ export default {
194
194
  }
195
195
  }
196
196
  }
197
- .popover {
197
+ .v-popper__popper {
198
198
  border: none;
199
199
  }
200
- .tooltip {
200
+ .v-popper__popper {
201
201
  margin-top: 0px;
202
202
 
203
- &[x-placement^="bottom"] {
204
- .tooltip-arrow {
205
- border-bottom-color: var(--dropdown-border);
206
-
207
- &:after {
208
- border-bottom-color: var(--dropdown-bg);
209
- }
203
+ &[data-popper-placement^="bottom"] {
204
+ .v-popper__arrow-container {
205
+ display: none;
210
206
  }
211
207
  }
212
208
 
213
- .tooltip-inner {
209
+ .v-popper__inner {
214
210
  color: var(--dropdown-text);
215
211
  background-color: var(--dropdown-bg);
216
212
  border: 1px solid var(--dropdown-border);
@@ -258,7 +258,7 @@ export default {
258
258
  <li
259
259
  v-for="(opt, i) in menuOptions"
260
260
  :key="i"
261
- :disabled="opt.disabled"
261
+ :disabled="opt.disabled ? true : null"
262
262
  :class="{divider: opt.divider}"
263
263
  :data-testid="componentTestid + '-' + i + '-item'"
264
264
  @click="execute(opt, $event)"
@@ -181,7 +181,7 @@ export default {
181
181
  :clearable="false"
182
182
  :close-on-select="closeOnSelect"
183
183
  :filterable="false"
184
- :value="buttonLabel"
184
+ :modelValue="buttonLabel"
185
185
  :options="dropdownOptions"
186
186
  :map-keydown="mappedKeys"
187
187
  :get-option-key="
@@ -191,7 +191,7 @@ export default {
191
191
  :selectable="selectable"
192
192
  @search:blur="onBlur"
193
193
  @search:focus="onFocus"
194
- @update:value="$emit('click-action', $event)"
194
+ @update:modelValue="$emit('click-action', $event)"
195
195
  >
196
196
  <template #no-options>
197
197
  <slot name="no-options" />
@@ -211,14 +211,15 @@ export default {
211
211
  <!-- Pass down templates provided by the caller -->
212
212
  <template
213
213
  v-for="(_, slot) of $slots"
214
+ #[slot]="scope"
214
215
  :key="slot"
215
- v-slot:[slot]="scope"
216
216
  >
217
- <slot
218
- v-if="slot !== 'selected-option'"
219
- :name="slot"
220
- v-bind="scope"
221
- />
217
+ <template v-if="slot !== 'selected-option' && typeof $slots[slot] === 'function'">
218
+ <slot
219
+ :name="slot"
220
+ v-bind="scope"
221
+ />
222
+ </template>
222
223
  </template>
223
224
  </v-select>
224
225
  </template>
@@ -57,7 +57,7 @@ export default {
57
57
  theme: `base16-${ theme }`,
58
58
  lineNumbers: true,
59
59
  line: true,
60
- styleActiveLine: true,
60
+ styleActiveLine: false,
61
61
  lineWrapping: true,
62
62
  foldGutter: true,
63
63
  styleSelectedText: true,
@@ -66,6 +66,7 @@ export default {
66
66
 
67
67
  if (this.asTextArea) {
68
68
  out.lineNumbers = false;
69
+ out.foldGutter = false;
69
70
  out.tabSize = 0;
70
71
  out.extraKeys = { Tab: false };
71
72
  }
@@ -178,6 +179,7 @@ export default {
178
179
  :value="value"
179
180
  :options="combinedOptions"
180
181
  :disabled="isDisabled"
182
+ :original-style="true"
181
183
  @ready="onReady"
182
184
  @input="onInput"
183
185
  @changes="onChanges"
@@ -194,72 +196,8 @@ export default {
194
196
  <style lang="scss">
195
197
  $code-mirror-animation-time: 0.1s;
196
198
 
197
- .codemirror-container {
198
- z-index: 0;
199
-
200
- // Keyboard mapping overlap
201
- .keymap.overlay {
202
- position: absolute;
203
- display: flex;
204
- top: 7px;
205
- right: 7px;
206
- z-index: 1;
207
- cursor: pointer;
208
-
209
- .keymap-indicator {
210
- width: 48px;
211
- height: 32px;
212
- display: flex;
213
- align-items: center;
214
- justify-content: center;
215
- border: 1px solid transparent;
216
- color: var(--darker);
217
- background-color: var(--overlay-bg);
218
- font-size: 12px;
219
-
220
- .close-indicator {
221
- width: 0;
222
-
223
- .icon-close {
224
- color: var(--primary);
225
- opacity: 0;
226
- }
227
- }
228
-
229
- .keymap-icon {
230
- font-size: 24px;
231
- opacity: 0.8;
232
- transition: margin-right $code-mirror-animation-time ease-in-out;
233
- }
234
-
235
- &:hover {
236
- border: 1px solid var(--primary);
237
- border-radius: var(--border-radius);;
238
-
239
- .close-indicator {
240
- margin-left: -6px;
241
- width: auto;
242
-
243
- .icon-close {
244
- opacity: 1;
245
- transition: opacity $code-mirror-animation-time ease-in-out $code-mirror-animation-time; // Only animate when being shown
246
- }
247
- }
248
-
249
- .keymap-icon {
250
- opacity: 0.6;
251
- margin-right: 10px;
252
- }
253
- }
254
- }
255
- }
256
-
257
- .vue-codemirror .CodeMirror {
258
- height: initial;
259
- background: none
260
- }
261
-
262
- &.as-text-area {
199
+ .code-mirror {
200
+ &.as-text-area .codemirror-container{
263
201
  min-height: 40px;
264
202
  position: relative;
265
203
  display: block;
@@ -345,6 +283,83 @@ export default {
345
283
  color: var(--primary-text);
346
284
  background-color: var(--primary);
347
285
  }
286
+
287
+ .CodeMirror-gutters .CodeMirror-foldgutter:empty {
288
+ display: none;
289
+ }
290
+ }
291
+ }
292
+
293
+ .code-mirror .codemirror-container {
294
+ z-index: 0;
295
+ font-size: inherit !important;
296
+
297
+ // Keyboard mapping overlap
298
+ .keymap.overlay {
299
+ position: absolute;
300
+ display: flex;
301
+ top: 7px;
302
+ right: 7px;
303
+ z-index: 1;
304
+ cursor: pointer;
305
+
306
+ .keymap-indicator {
307
+ width: 48px;
308
+ height: 32px;
309
+ display: flex;
310
+ align-items: center;
311
+ justify-content: center;
312
+ border: 1px solid transparent;
313
+ color: var(--darker);
314
+ background-color: var(--overlay-bg);
315
+ font-size: 12px;
316
+
317
+ .close-indicator {
318
+ width: 0;
319
+
320
+ .icon-close {
321
+ color: var(--primary);
322
+ opacity: 0;
323
+ }
324
+ }
325
+
326
+ .keymap-icon {
327
+ font-size: 24px;
328
+ opacity: 0.8;
329
+ transition: margin-right $code-mirror-animation-time ease-in-out;
330
+ }
331
+
332
+ &:hover {
333
+ border: 1px solid var(--primary);
334
+ border-radius: var(--border-radius);;
335
+
336
+ .close-indicator {
337
+ margin-left: -6px;
338
+ width: auto;
339
+
340
+ .icon-close {
341
+ opacity: 1;
342
+ transition: opacity $code-mirror-animation-time ease-in-out $code-mirror-animation-time; // Only animate when being shown
343
+ }
344
+ }
345
+
346
+ .keymap-icon {
347
+ opacity: 0.6;
348
+ margin-right: 10px;
349
+ }
350
+ }
351
+ }
352
+ }
353
+
354
+ //rm no longer extant selector
355
+ .CodeMirror {
356
+ height: initial;
357
+ background: none
358
+ }
359
+
360
+ .CodeMirror-gutters {
361
+ background: inherit;
348
362
  }
363
+
349
364
  }
350
365
  </style>