@rancher/shell 0.1.4 → 0.2.1

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 (170) hide show
  1. package/assets/brand/suse/favicon.png +0 -0
  2. package/assets/images/generic-plugin.svg +1 -7
  3. package/assets/styles/global/_button.scss +1 -0
  4. package/assets/translations/en-us.yaml +129 -53
  5. package/assets/translations/zh-hans.yaml +18 -0
  6. package/components/CommunityLinks.vue +40 -49
  7. package/components/ExplorerProjectsNamespaces.vue +20 -3
  8. package/components/HarvesterServiceAddOnConfig.vue +10 -10
  9. package/components/LazyImage.vue +21 -8
  10. package/components/PromptRemove.vue +2 -2
  11. package/components/ResourceList/Masthead.vue +21 -1
  12. package/components/ResourceList/ResourceLoadingIndicator.vue +0 -8
  13. package/components/ResourceList/index.vue +42 -36
  14. package/components/ResourceTable.vue +19 -0
  15. package/components/SortableTable/THead.vue +311 -70
  16. package/components/SortableTable/advanced-filtering.js +272 -0
  17. package/components/SortableTable/filtering.js +90 -29
  18. package/components/SortableTable/index.vue +486 -280
  19. package/components/Tabbed/index.vue +25 -7
  20. package/components/TypeDescription.vue +10 -1
  21. package/components/fleet/FleetClusters.vue +6 -0
  22. package/components/fleet/FleetRepos.vue +7 -1
  23. package/components/form/Command.vue +5 -0
  24. package/components/form/EnvVars.vue +5 -0
  25. package/components/form/NameNsDescription.vue +3 -1
  26. package/components/form/NodeScheduling.vue +6 -1
  27. package/components/form/PodAffinity.vue +5 -0
  28. package/components/form/ServiceNameSelect.vue +5 -0
  29. package/components/form/ValueFromResource.vue +7 -1
  30. package/components/form/WorkloadPorts.vue +2 -2
  31. package/components/nav/TopLevelMenu.vue +2 -1
  32. package/config/home-links.js +155 -0
  33. package/config/private-label.js +1 -1
  34. package/config/product/manager.js +0 -2
  35. package/config/product/settings.js +1 -0
  36. package/config/product/uiplugins.js +2 -1
  37. package/config/settings.js +3 -1
  38. package/config/uiplugins.js +76 -6
  39. package/config/version.js +17 -0
  40. package/core/plugin.ts +12 -0
  41. package/core/plugins.js +29 -5
  42. package/core/types.ts +6 -0
  43. package/creators/app/{.eslintignore → files/.eslintignore} +0 -0
  44. package/creators/app/{.eslintrc.js → files/.eslintrc.js} +0 -0
  45. package/creators/app/{.vscode → files/.vscode}/settings.json +0 -0
  46. package/creators/app/{babel.config.js → files/babel.config.js} +0 -0
  47. package/creators/app/{nuxt.config.js → files/nuxt.config.js} +0 -0
  48. package/creators/app/{tsconfig.json → files/tsconfig.json} +2 -1
  49. package/creators/app/init +16 -17
  50. package/creators/app/package.json +7 -1
  51. package/creators/pkg/{babel.config.js → files/babel.config.js} +0 -0
  52. package/creators/pkg/{index.ts → files/index.ts} +0 -0
  53. package/creators/pkg/{tsconfig.json → files/tsconfig.json} +13 -12
  54. package/creators/pkg/{vue.config.js → files/vue.config.js} +0 -0
  55. package/creators/pkg/init +1 -1
  56. package/creators/pkg/package.json +1 -1
  57. package/creators/update/init +54 -0
  58. package/creators/update/package.json +20 -0
  59. package/creators/update/upgrade +56 -0
  60. package/creators/update/yarn-error.log +54 -0
  61. package/detail/provisioning.cattle.io.cluster.vue +1 -1
  62. package/detail/workload/index.vue +1 -0
  63. package/edit/persistentvolume/index.vue +48 -13
  64. package/edit/persistentvolumeclaim.vue +31 -13
  65. package/edit/provisioning.cattle.io.cluster/ACE.vue +2 -1
  66. package/edit/provisioning.cattle.io.cluster/DrainOptions.vue +0 -1
  67. package/edit/provisioning.cattle.io.cluster/rke2.vue +52 -43
  68. package/edit/service.vue +1 -1
  69. package/edit/workload/index.vue +19 -9
  70. package/edit/workload/mixins/workload.js +109 -114
  71. package/edit/workload/storage/index.vue +11 -17
  72. package/edit/workload/storage/persistentVolumeClaim/index.vue +5 -0
  73. package/edit/workload/storage/secret.vue +6 -1
  74. package/list/catalog.cattle.io.app.vue +10 -9
  75. package/list/catalog.cattle.io.clusterrepo.vue +6 -61
  76. package/list/cis.cattle.io.clusterscan.vue +12 -12
  77. package/list/fleet.cattle.io.bundle.vue +33 -28
  78. package/list/fleet.cattle.io.cluster.vue +26 -22
  79. package/list/fleet.cattle.io.clustergroup.vue +6 -0
  80. package/list/fleet.cattle.io.clusterregistrationtoken.vue +28 -24
  81. package/list/fleet.cattle.io.gitrepo.vue +25 -14
  82. package/list/helm.cattle.io.projecthelmchart.vue +52 -33
  83. package/list/logging.banzaicloud.io.clusterflow.vue +7 -12
  84. package/list/logging.banzaicloud.io.flow.vue +7 -14
  85. package/list/management.cattle.io.cluster.vue +26 -15
  86. package/list/management.cattle.io.feature.vue +13 -8
  87. package/list/management.cattle.io.user.vue +38 -19
  88. package/list/monitoring.coreos.com.alertmanagerconfig.vue +8 -15
  89. package/list/namespace.vue +14 -1
  90. package/list/node.vue +13 -16
  91. package/list/persistentvolume.vue +16 -9
  92. package/list/persistentvolumeclaim.vue +5 -8
  93. package/list/provisioning.cattle.io.cluster.vue +34 -8
  94. package/list/service.vue +24 -12
  95. package/list/ui.cattle.io.navlink.vue +6 -0
  96. package/list/workload.vue +2 -2
  97. package/middleware/authenticated.js +6 -0
  98. package/mixins/resource-fetch.js +12 -18
  99. package/mixins/resource-manager.js +126 -0
  100. package/models/catalog.cattle.io.uiplugin.js +4 -0
  101. package/models/management.cattle.io.cluster.js +9 -1
  102. package/models/pod.js +15 -5
  103. package/models/provisioning.cattle.io.cluster.js +4 -0
  104. package/models/workload.service.js +10 -0
  105. package/nuxt.config.js +2 -1
  106. package/package.json +1 -1
  107. package/pages/auth/login.vue +10 -0
  108. package/pages/auth/verify.vue +9 -0
  109. package/pages/c/_cluster/apps/charts/install.vue +119 -31
  110. package/pages/c/_cluster/settings/DefaultLinksEditor.vue +108 -0
  111. package/pages/c/_cluster/settings/links.vue +53 -101
  112. package/pages/c/_cluster/settings/performance.vue +90 -7
  113. package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +3 -3
  114. package/pages/c/_cluster/uiplugins/InstallDialog.vue +72 -21
  115. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +26 -7
  116. package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +2 -7
  117. package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +23 -15
  118. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +12 -5
  119. package/pages/c/_cluster/uiplugins/index.vue +223 -72
  120. package/pages/support/index.vue +31 -142
  121. package/plugins/dashboard-store/actions.js +19 -0
  122. package/plugins/dashboard-store/getters.js +20 -3
  123. package/plugins/dashboard-store/mutations.js +13 -7
  124. package/plugins/plugin.js +18 -15
  125. package/plugins/steve/getters.js +12 -0
  126. package/plugins/version.js +21 -0
  127. package/promptRemove/mixin/roleDeletionCheck.js +15 -1
  128. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +6 -7
  129. package/rancher-components/components/BadgeState/BadgeState.spec.ts +12 -0
  130. package/rancher-components/components/BadgeState/BadgeState.vue +107 -0
  131. package/rancher-components/components/BadgeState/index.ts +1 -0
  132. package/rancher-components/components/Banner/Banner.test.ts +13 -0
  133. package/rancher-components/components/Banner/Banner.vue +163 -0
  134. package/rancher-components/components/Banner/index.ts +1 -0
  135. package/rancher-components/components/Card/Card.vue +150 -0
  136. package/rancher-components/components/Card/index.ts +1 -0
  137. package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +77 -0
  138. package/rancher-components/components/Form/Checkbox/Checkbox.vue +395 -0
  139. package/rancher-components/components/Form/Checkbox/index.ts +1 -0
  140. package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +29 -0
  141. package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +343 -0
  142. package/rancher-components/components/Form/LabeledInput/index.ts +1 -0
  143. package/rancher-components/components/Form/Radio/RadioButton.vue +270 -0
  144. package/rancher-components/components/Form/Radio/RadioGroup.vue +235 -0
  145. package/rancher-components/components/Form/Radio/index.ts +2 -0
  146. package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +168 -0
  147. package/rancher-components/components/Form/TextArea/index.ts +1 -0
  148. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +107 -0
  149. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +137 -0
  150. package/rancher-components/components/Form/ToggleSwitch/index.ts +1 -0
  151. package/rancher-components/components/Form/index.ts +5 -0
  152. package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +137 -0
  153. package/rancher-components/components/LabeledTooltip/index.ts +1 -0
  154. package/scripts/publish-shell.sh +39 -6
  155. package/scripts/record-deps.js +37 -0
  156. package/scripts/test-plugins-build.sh +8 -5
  157. package/scripts/typegen.sh +84 -0
  158. package/store/auth.js +3 -0
  159. package/store/index.js +12 -3
  160. package/store/type-map.js +2 -0
  161. package/types/shell/index.d.ts +3046 -0
  162. package/utils/favicon.js +8 -2
  163. package/utils/gc/gc-interval.ts +40 -0
  164. package/utils/gc/gc-root-store.js +76 -0
  165. package/utils/gc/gc-route-changed.ts +44 -0
  166. package/utils/gc/gc-types.ts +21 -0
  167. package/utils/gc/gc.ts +282 -0
  168. package/config/footer.js +0 -18
  169. package/creators/pkg/nuxt.config.js +0 -6
  170. package/yarn-error.log +0 -195
@@ -1,9 +1,11 @@
1
1
  <script>
2
2
  import { Checkbox } from '@components/Form/Checkbox';
3
3
  import { SOME, NONE } from './selection';
4
+ import { AUTO, CENTER, fitOnScreen } from '@shell/utils/position';
5
+ import LabeledSelect from '@shell/components/form/LabeledSelect';
4
6
 
5
7
  export default {
6
- components: { Checkbox },
8
+ components: { Checkbox, LabeledSelect },
7
9
  props: {
8
10
  columns: {
9
11
  type: Array,
@@ -17,10 +19,26 @@ export default {
17
19
  type: String,
18
20
  default: ''
19
21
  },
22
+ group: {
23
+ type: String,
24
+ default: ''
25
+ },
26
+ groupOptions: {
27
+ type: Array,
28
+ default: () => []
29
+ },
20
30
  descending: {
21
31
  type: Boolean,
22
32
  required: true
23
33
  },
34
+ hasAdvancedFiltering: {
35
+ type: Boolean,
36
+ required: false
37
+ },
38
+ tableColsOptions: {
39
+ type: Array,
40
+ default: () => [],
41
+ },
24
42
  tableActions: {
25
43
  type: Boolean,
26
44
  required: true,
@@ -67,6 +85,31 @@ export default {
67
85
  },
68
86
  },
69
87
 
88
+ data() {
89
+ return {
90
+ tableColsOptionsVisibility: false,
91
+ tableColsMenuPosition: null
92
+ };
93
+ },
94
+
95
+ watch: {
96
+ advancedFilteringValues() {
97
+ // passing different dummy args to make sure update is triggered
98
+ this.watcherUpdateLiveAndDelayed(true, false);
99
+ },
100
+ tableColsOptionsVisibility(neu) {
101
+ if (neu) {
102
+ // check if user clicked outside the table cols options box
103
+ window.addEventListener('click', this.onClickOutside);
104
+
105
+ // update filtering options and toggable cols every time dropdown is open
106
+ this.$emit('update-cols-options');
107
+ } else {
108
+ // unregister click event
109
+ window.removeEventListener('click', this.onClickOutside);
110
+ }
111
+ }
112
+ },
70
113
  computed: {
71
114
  isAll: {
72
115
  get() {
@@ -77,10 +120,22 @@ export default {
77
120
  this.$emit('on-toggle-all', value);
78
121
  }
79
122
  },
123
+ hasAdvGrouping() {
124
+ return this.group?.length && this.groupOptions?.length;
125
+ },
126
+ advGroup: {
127
+ get() {
128
+ return this.group || this.advGroup;
129
+ },
130
+
131
+ set(val) {
132
+ this.$emit('group-value-change', val);
133
+ }
134
+ },
80
135
 
81
136
  isIndeterminate() {
82
137
  return this.howMuchSelected === SOME;
83
- }
138
+ },
84
139
  },
85
140
 
86
141
  methods: {
@@ -101,7 +156,43 @@ export default {
101
156
  isCurrent(col) {
102
157
  return col.name === this.sortBy;
103
158
  },
159
+
160
+ tableColsOptionsClick(ev) {
161
+ // set menu position
162
+ const menu = document.querySelector('.table-options-container');
163
+ const elem = document.querySelector('.table-options-btn');
164
+
165
+ if (!this.tableColsMenuPosition) {
166
+ this.tableColsMenuPosition = fitOnScreen(menu, ev || elem, {
167
+ overlapX: true,
168
+ fudgeX: 26,
169
+ fudgeY: -22,
170
+ positionX: CENTER,
171
+ positionY: AUTO,
172
+ });
173
+ }
174
+
175
+ // toggle visibility
176
+ this.tableColsOptionsVisibility = !this.tableColsOptionsVisibility;
177
+ },
178
+
179
+ onClickOutside(event) {
180
+ const tableOpts = this.$refs['table-options'];
181
+
182
+ if (!tableOpts || tableOpts.contains(event.target)) {
183
+ return;
184
+ }
185
+ this.tableColsOptionsVisibility = false;
186
+ },
187
+
188
+ tableOptionsCheckbox(value, label) {
189
+ this.$emit('col-visibility-change', {
190
+ label,
191
+ value
192
+ });
193
+ },
104
194
  }
195
+
105
196
  };
106
197
  </script>
107
198
 
@@ -119,103 +210,253 @@ export default {
119
210
  <th v-if="subExpandColumn" :width="expandWidth"></th>
120
211
  <th
121
212
  v-for="col in columns"
213
+ v-show="!hasAdvancedFiltering || (hasAdvancedFiltering && col.isColVisible)"
122
214
  :key="col.name"
123
215
  :align="col.align || 'left'"
124
216
  :width="col.width"
125
217
  :class="{ sortable: col.sort, [col.breakpoint]: !!col.breakpoint}"
126
218
  @click.prevent="changeSort($event, col)"
127
219
  >
128
- <span v-if="col.sort" v-tooltip="col.tooltip">
129
- <span v-html="labelFor(col)" />
130
- <span class="icon-stack">
131
- <i class="icon icon-sort icon-stack-1x faded" />
132
- <i v-if="isCurrent(col) && !descending" class="icon icon-sort-down icon-stack-1x" />
133
- <i v-if="isCurrent(col) && descending" class="icon icon-sort-up icon-stack-1x" />
220
+ <div
221
+ class="table-header-container"
222
+ :class="{ 'not-filterable': hasAdvancedFiltering && !col.isFilter }"
223
+ >
224
+ <span v-if="col.sort" v-tooltip="col.tooltip">
225
+ <span v-html="labelFor(col)" />
226
+ <i
227
+ v-show="hasAdvancedFiltering && !col.isFilter"
228
+ v-tooltip="t('sortableTable.tableHeader.noFilter')"
229
+ class="icon icon-info not-filter-icon"
230
+ />
231
+ <span class="icon-stack">
232
+ <i class="icon icon-sort icon-stack-1x faded" />
233
+ <i v-if="isCurrent(col) && !descending" class="icon icon-sort-down icon-stack-1x" />
234
+ <i v-if="isCurrent(col) && descending" class="icon icon-sort-up icon-stack-1x" />
235
+ </span>
134
236
  </span>
135
- </span>
136
- <span v-else v-tooltip="col.tooltip">{{ labelFor(col) }}</span>
237
+ <span v-else v-tooltip="col.tooltip">{{ labelFor(col) }}</span>
238
+ </div>
239
+ </th>
240
+ <th
241
+ v-if="rowActions && hasAdvancedFiltering && tableColsOptions.length"
242
+ :width="rowActionsWidth"
243
+ >
244
+ <div
245
+ ref="table-options"
246
+ class="table-options-group"
247
+ >
248
+ <button
249
+ aria-haspopup="true"
250
+ aria-expanded="false"
251
+ type="button"
252
+ class="btn btn-sm role-multi-action table-options-btn"
253
+ @click="tableColsOptionsClick"
254
+ >
255
+ <i class="icon icon-actions" />
256
+ </button>
257
+ <div
258
+ v-show="tableColsOptionsVisibility"
259
+ class="table-options-container"
260
+ :style="tableColsMenuPosition"
261
+ >
262
+ <div
263
+ v-if="hasAdvGrouping"
264
+ class="table-options-grouping"
265
+ >
266
+ <span class="table-options-col-subtitle">{{ t('sortableTable.tableHeader.groupBy') }}:</span>
267
+ <LabeledSelect
268
+ v-model="advGroup"
269
+ class="table-options-grouping-select"
270
+ :clearable="true"
271
+ :options="groupOptions"
272
+ :disabled="false"
273
+ :searchable="false"
274
+ mode="edit"
275
+ :multiple="false"
276
+ :taggable="false"
277
+ />
278
+ </div>
279
+ <p class="table-options-col-subtitle mb-20">
280
+ {{ t('sortableTable.tableHeader.show') }}:
281
+ </p>
282
+ <ul>
283
+ <li
284
+ v-for="(col, index) in tableColsOptions"
285
+ v-show="col.isTableOption"
286
+ :key="index"
287
+ :class="{ 'visible': !col.preventColToggle }"
288
+ >
289
+ <Checkbox
290
+ v-show="!col.preventColToggle"
291
+ v-model="col.isColVisible"
292
+ class="table-options-checkbox"
293
+ :label="col.label"
294
+ @input="tableOptionsCheckbox($event, col.label)"
295
+ />
296
+ </li>
297
+ </ul>
298
+ </div>
299
+ </div>
137
300
  </th>
138
- <th v-if="rowActions" :width="rowActionsWidth">
301
+ <th v-else-if="rowActions" :width="rowActionsWidth">
139
302
  </th>
140
303
  </tr>
141
304
  </thead>
142
305
  </template>
143
306
 
144
- <style lang="scss" scoped>
145
- .sortable > SPAN {
146
- cursor: pointer;
147
- user-select: none;
148
- white-space: nowrap;
149
- &:hover,
150
- &:active {
151
- text-decoration: underline;
152
- color: var(--body-text);
153
- }
154
- }
155
-
156
- thead {
157
- tr {
158
- background-color: var(--sortable-table-header-bg);
159
- color: var(--body-text);
160
- text-align: left;
307
+ <style lang="scss" scoped>
308
+ .table-options-group {
161
309
 
162
- &:not(.loading) {
163
- border-bottom: 1px solid var(--sortable-table-top-divider);
310
+ .table-options-btn.role-multi-action {
311
+ background-color: transparent;
312
+ border: none;
313
+ font-size: 18px;
314
+ &:hover, &:focus {
315
+ background-color: var(--accent-btn);
316
+ box-shadow: none;
317
+ }
164
318
  }
165
- }
166
- }
319
+ .table-options-container {
320
+ width: 320px;
321
+ border: 1px solid var(--primary);
322
+ background-color: var(--body-bg);
323
+ padding: 20px;
324
+ z-index: 1;
325
+
326
+ .table-options-grouping {
327
+ display: flex;
328
+ align-items: center;
329
+ margin-bottom: 20px;
330
+
331
+ span {
332
+ white-space: nowrap;
333
+ margin-right: 10px;
334
+ }
335
+ }
336
+
337
+ ul {
338
+ list-style: none;
339
+ margin: 0;
340
+ padding: 0;
341
+ display: flex;
342
+ flex-wrap: wrap;
167
343
 
168
- th {
169
- padding: 8px 5px;
170
- font-weight: normal;
171
- border: 0;
172
- color: var(--body-text);
344
+ li {
345
+ flex: 1 1 136px;
346
+ margin: 0;
347
+ padding: 0;
173
348
 
174
- &:first-child {
175
- padding-left: 10px;
349
+ &.visible {
350
+ margin: 0 0 10px 0;
351
+ }
352
+ }
353
+ }
354
+ }
176
355
  }
177
356
 
178
- &:last-child {
179
- padding-right: 10px;
357
+ .sortable > SPAN {
358
+ cursor: pointer;
359
+ user-select: none;
360
+ white-space: nowrap;
361
+ &:hover,
362
+ &:active {
363
+ text-decoration: underline;
364
+ color: var(--body-text);
365
+ }
180
366
  }
181
367
 
182
- &:not(.sortable) > SPAN {
183
- display: block;
184
- margin-bottom: 2px;
368
+ thead {
369
+ tr {
370
+ background-color: var(--sortable-table-header-bg);
371
+ color: var(--body-text);
372
+ text-align: left;
373
+
374
+ &:not(.loading) {
375
+ border-bottom: 1px solid var(--sortable-table-top-divider);
376
+ }
377
+ }
185
378
  }
186
379
 
187
- & A {
380
+ th {
381
+ padding: 8px 5px;
382
+ font-weight: normal;
383
+ border: 0;
188
384
  color: var(--body-text);
189
- }
190
385
 
191
- // Aligns with COLUMN_BREAKPOINTS
192
- @media only screen and (max-width: map-get($breakpoints, '--viewport-4')) {
193
- // HIDE column on sizes below 480px
194
- &.tablet, &.laptop, &.desktop {
195
- display: none;
386
+ .table-header-container {
387
+ display: flex;
388
+ align-items: center;
389
+
390
+ &.not-filterable {
391
+ margin-top: -2px;
392
+
393
+ .icon-stack {
394
+ margin-top: -2px;
395
+ }
396
+ }
397
+
398
+ .not-filter-icon {
399
+ font-size: 16px;
400
+ color: var(--primary);
401
+ vertical-align: super;
402
+ }
196
403
  }
197
- }
198
- @media only screen and (max-width: map-get($breakpoints, '--viewport-9')) {
199
- // HIDE column on sizes below 992px
200
- &.laptop, &.desktop {
201
- display: none;
404
+
405
+ &:first-child {
406
+ padding-left: 10px;
202
407
  }
203
- }
204
- @media only screen and (max-width: map-get($breakpoints, '--viewport-12')) {
205
- // HIDE column on sizes below 1281px
206
- &.desktop {
207
- display: none;
408
+
409
+ &:last-child {
410
+ padding-right: 10px;
411
+ }
412
+
413
+ &:not(.sortable) > SPAN {
414
+ display: block;
415
+ margin-bottom: 2px;
416
+ }
417
+
418
+ & A {
419
+ color: var(--body-text);
420
+ }
421
+
422
+ // Aligns with COLUMN_BREAKPOINTS
423
+ @media only screen and (max-width: map-get($breakpoints, '--viewport-4')) {
424
+ // HIDE column on sizes below 480px
425
+ &.tablet, &.laptop, &.desktop {
426
+ display: none;
427
+ }
428
+ }
429
+ @media only screen and (max-width: map-get($breakpoints, '--viewport-9')) {
430
+ // HIDE column on sizes below 992px
431
+ &.laptop, &.desktop {
432
+ display: none;
433
+ }
434
+ }
435
+ @media only screen and (max-width: map-get($breakpoints, '--viewport-12')) {
436
+ // HIDE column on sizes below 1281px
437
+ &.desktop {
438
+ display: none;
439
+ }
208
440
  }
209
441
  }
210
- }
211
442
 
212
- .icon-stack {
213
- width: 12px;
214
- }
443
+ .icon-stack {
444
+ width: 12px;
445
+ }
215
446
 
216
- .icon-sort {
217
- &.faded {
218
- opacity: .3;
447
+ .icon-sort {
448
+ &.faded {
449
+ opacity: .3;
450
+ }
219
451
  }
220
- }
221
- </style>
452
+ </style>
453
+ <style lang="scss">
454
+ .table-options-checkbox .checkbox-label {
455
+ color: var(--body-text);
456
+ text-overflow: ellipsis;
457
+ width: 100px;
458
+ display: inline-block;
459
+ white-space: nowrap;
460
+ overflow: hidden;
461
+ }
462
+ </style>