@appscode/design-system 1.0.43-alpha.14 → 1.0.43-alpha.142

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 (112) hide show
  1. package/base/utilities/_default.scss +283 -21
  2. package/base/utilities/_derived-variables.scss +0 -13
  3. package/base/utilities/_initial-variables.scss +78 -56
  4. package/base/utilities/_mixin.scss +10 -17
  5. package/base/utilities/_typography.scss +23 -7
  6. package/base/utilities/dark-theme.scss +25 -0
  7. package/components/_ac-accordion.scss +1 -0
  8. package/components/_ac-alert-box.scss +18 -10
  9. package/components/_ac-card.scss +55 -20
  10. package/components/_ac-code-highlight.scss +7 -1
  11. package/components/_ac-content-layout.scss +4 -4
  12. package/components/_ac-drag.scss +6 -6
  13. package/components/_ac-input.scss +74 -40
  14. package/components/_ac-modal.scss +5 -4
  15. package/components/_ac-multi-select.scss +195 -13
  16. package/components/_ac-options.scss +31 -16
  17. package/components/_ac-select-box.scss +15 -5
  18. package/components/_ac-table.scss +42 -36
  19. package/components/_ac-tabs.scss +72 -23
  20. package/components/_ac-tags.scss +2 -2
  21. package/components/_ac-terminal.scss +272 -0
  22. package/components/_app-drawer.scss +6 -6
  23. package/components/_breadcumb.scss +7 -2
  24. package/components/_buttons.scss +60 -27
  25. package/components/_card-body-wrapper.scss +3 -3
  26. package/components/_dashboard-header.scss +33 -1
  27. package/components/_direct-deploy.scss +69 -0
  28. package/components/_go-to-top.scss +1 -1
  29. package/components/_graph.scss +45 -0
  30. package/components/_image-upload.scss +6 -4
  31. package/components/_left-sidebar-menu.scss +200 -46
  32. package/components/_monaco-editor.scss +1 -1
  33. package/components/_navbar.scss +129 -26
  34. package/components/_overview-info.scss +4 -4
  35. package/components/_overview-page.scss +1 -2
  36. package/components/_pagination.scss +10 -2
  37. package/components/_payment-card.scss +28 -12
  38. package/components/_preview-modal.scss +19 -8
  39. package/components/_pricing-table.scss +1 -1
  40. package/components/_progress-bar.scss +5 -5
  41. package/components/_subscription-card.scss +15 -8
  42. package/components/_table-of-content.scss +1 -1
  43. package/components/_tfa.scss +69 -0
  44. package/components/_transitions.scss +261 -0
  45. package/components/_widget-menu.scss +9 -9
  46. package/components/_wizard.scss +31 -19
  47. package/components/ac-toaster/_ac-toasted.scss +5 -5
  48. package/components/bbum/_card-team.scss +18 -10
  49. package/components/bbum/_information-center.scss +17 -3
  50. package/components/bbum/_mobile-desktop.scss +6 -6
  51. package/components/bbum/_post.scss +5 -4
  52. package/components/bbum/_sign-up-notification.scss +6 -6
  53. package/components/bbum/_single-post-preview.scss +9 -9
  54. package/components/bbum/_user-profile.scss +97 -90
  55. package/components/ui-builder/_ui-builder.scss +29 -10
  56. package/components/ui-builder/_vue-open-api.scss +98 -0
  57. package/layouts/_404.scss +2 -1
  58. package/layouts/_code-preview.scss +14 -7
  59. package/main.scss +4 -0
  60. package/package.json +2 -7
  61. package/plugins/theme.js +4 -0
  62. package/vue-components/v2/banner/Banner.vue +2 -2
  63. package/vue-components/v2/breadcrumbs/Breadcrumb.vue +97 -0
  64. package/vue-components/v2/button/Button.vue +5 -0
  65. package/vue-components/v2/button/DownloadBtn.vue +45 -0
  66. package/vue-components/v2/card/PaymentCards.vue +11 -2
  67. package/vue-components/v2/content/ContentTable.vue +12 -7
  68. package/vue-components/v2/editor/Editor.vue +29 -1
  69. package/vue-components/v2/editor/FilteredFileEditor.vue +188 -0
  70. package/vue-components/v2/editor/ResourceKeyValueEditor.vue +209 -0
  71. package/vue-components/v2/loaders/ResourceLoader.vue +101 -0
  72. package/vue-components/v2/loaders/SidebarLoader.vue +43 -0
  73. package/vue-components/v2/modal/Modal.vue +33 -12
  74. package/vue-components/v2/modals/DeleteConfirmationModal.vue +77 -0
  75. package/vue-components/v2/modals/JsonShowModal.vue +12 -2
  76. package/vue-components/v2/navbar/Appdrawer.vue +10 -9
  77. package/vue-components/v2/navbar/ThemeMode.vue +120 -0
  78. package/vue-components/v2/navbar/User.vue +166 -15
  79. package/vue-components/v2/preloader/Preloader.vue +5 -5
  80. package/vue-components/v2/sidebar/ClusterSwitcher.vue +126 -0
  81. package/vue-components/v2/sidebar/SidebarItem.vue +23 -1
  82. package/vue-components/v2/sidebar/SidebarItemWithDropDown.vue +19 -20
  83. package/vue-components/v2/table/Table.vue +44 -8
  84. package/vue-components/v2/table/TableRow.vue +17 -8
  85. package/vue-components/v2/table/table-cell/CellValue.vue +31 -4
  86. package/vue-components/v2/table/table-cell/GenericCell.vue +56 -0
  87. package/vue-components/v2/table/table-cell/ObjectCell.vue +4 -1
  88. package/vue-components/v2/tabs/EditorTabs.vue +1 -1
  89. package/vue-components/v3/button/Button.vue +5 -0
  90. package/vue-components/v3/content/ContentTable.vue +5 -0
  91. package/vue-components/v3/dropdown/DropdownMenu.vue +1 -1
  92. package/vue-components/v3/editor/Editor.vue +50 -30
  93. package/vue-components/v3/editor/FilteredFileEditor.vue +166 -0
  94. package/vue-components/v3/editor/MonacoEditor.vue +124 -0
  95. package/vue-components/v3/editor/ResourceKeyValueEditor.vue +124 -0
  96. package/vue-components/v3/header/HeaderItem.vue +5 -0
  97. package/vue-components/v3/header/HeaderItems.vue +5 -0
  98. package/vue-components/v3/loaders/ResourceLoader.vue +83 -0
  99. package/vue-components/v3/loaders/SidebarLoader.vue +34 -0
  100. package/vue-components/v3/modal/Modal.vue +10 -1
  101. package/vue-components/v3/modals/JsonShowModal.vue +25 -16
  102. package/vue-components/v3/navbar/Appdrawer.vue +12 -7
  103. package/vue-components/v3/navbar/ThemeMode.vue +128 -0
  104. package/vue-components/v3/navbar/User.vue +166 -15
  105. package/vue-components/v3/sidebar/ClusterSwitcher.vue +133 -0
  106. package/vue-components/v3/sidebar/SidebarItemWithDropDown.vue +120 -0
  107. package/vue-components/v3/table/Table.vue +28 -5
  108. package/vue-components/v3/table/TableRow.vue +1 -1
  109. package/vue-components/v3/table/table-cell/CellValue.vue +26 -3
  110. package/vue-components/v3/table/table-cell/GenericCell.vue +62 -0
  111. package/vue-components/v3/table/table-cell/ObjectCell.vue +5 -1
  112. package/vue-components/v3/tabs/EditorTabs.vue +1 -1
@@ -0,0 +1,120 @@
1
+ <template>
2
+ <li :class="`is-${dropDownStatus}`">
3
+ <a class="ac-dropdown-button" :title="title" @click="toggleDropDownStatus">
4
+ <span>
5
+ <img :src="icon" alt="icon" />
6
+ </span>
7
+ <strong>{{ title || "-" }}</strong>
8
+ <span class="ac-arrow-down">
9
+ <i class="fa fa-angle-down" aria-hidden="true"> </i>
10
+ </span>
11
+ </a>
12
+
13
+ <ul ref="sectionItems" :style="{ maxHeight: dropDownSectionHeight }">
14
+ <slot />
15
+ </ul>
16
+ </li>
17
+ </template>
18
+
19
+ <script>
20
+ import { defineComponent } from "vue";
21
+
22
+ export default defineComponent({
23
+ props: {
24
+ isDropDownOpen: {
25
+ type: Boolean,
26
+ default: false,
27
+ },
28
+ title: {
29
+ type: String,
30
+ default: "Sidebar Item",
31
+ },
32
+ icon: {
33
+ type: String,
34
+ default: "@/assets/images/icons/basic.svg",
35
+ },
36
+ },
37
+
38
+ emits: ["dropDownItemChange"],
39
+
40
+ data() {
41
+ return {
42
+ dropDownStatus: "close",
43
+ dropDownSectionHeight: null,
44
+ isCompMounted: false,
45
+ };
46
+ },
47
+
48
+ mounted() {
49
+ this.isCompMounted = true;
50
+ setTimeout(() => {
51
+ // for expanding dropdown
52
+ if (this.isDropDownOpen) {
53
+ this.setDropdownMaxHeight("open");
54
+ } else {
55
+ this.setDropdownMaxHeight("close");
56
+ }
57
+ }, 700);
58
+ },
59
+
60
+ watch: {
61
+ title(n, o) {
62
+ if (n && this.isCompMounted) {
63
+ this.$nextTick(() => {
64
+ // for expanding dropdown
65
+ this.setDropdownMaxHeight("open");
66
+ });
67
+ }
68
+
69
+ if (o && this.isCompMounted) {
70
+ this.$nextTick(() => {
71
+ // for expanding dropdown
72
+ this.setDropdownMaxHeight("close");
73
+ });
74
+ }
75
+ },
76
+ isDropDownOpen: {
77
+ immediate: true,
78
+ handler(n) {
79
+ if (n) {
80
+ this.dropDownStatus = "open";
81
+ } else this.dropDownStatus = "close";
82
+ },
83
+ },
84
+ dropDownStatus: {
85
+ immediate: true,
86
+ handler(n) {
87
+ if (n === "open") {
88
+ // emit event to close other drop down items
89
+ this.$emit("dropDownItemChange");
90
+
91
+ this.$nextTick(() => {
92
+ const dropDownUl = this.$refs["sectionItems"];
93
+ // debugger;
94
+ if (dropDownUl)
95
+ this.dropDownSectionHeight = `${dropDownUl.scrollHeight}px`;
96
+ });
97
+ } else {
98
+ // emit event to close other drop down items
99
+ this.dropDownSectionHeight = null;
100
+ }
101
+ },
102
+ },
103
+ },
104
+
105
+ methods: {
106
+ setDropdownMaxHeight(mode) {
107
+ if (mode === "open") {
108
+ this.dropDownSectionHeight = `${this.$refs["sectionItems"].scrollHeight}px`;
109
+ } else {
110
+ this.dropDownSectionHeight = null;
111
+ }
112
+ },
113
+ toggleDropDownStatus() {
114
+ if (this.dropDownStatus === "open") {
115
+ this.dropDownStatus = "close";
116
+ } else this.dropDownStatus = "open";
117
+ },
118
+ },
119
+ });
120
+ </script>
@@ -25,10 +25,33 @@
25
25
  sorting: headerSortables[idx].enabled,
26
26
  'sorting-desc': headerSortables[idx].mode === 'desc',
27
27
  'sorting-asc': headerSortables[idx].mode === 'asc',
28
+ 'has-text-centered':
29
+ typeof tableHeader === 'string'
30
+ ? false
31
+ : tableHeader.textAlign === 'center',
32
+ 'has-text-left':
33
+ typeof tableHeader === 'string'
34
+ ? false
35
+ : tableHeader.textAlign === 'left',
36
+ 'has-text-right':
37
+ typeof tableHeader === 'string'
38
+ ? false
39
+ : tableHeader.textAlign === 'right',
28
40
  }"
29
41
  @click.prevent="headerSortables[idx].enabled && emitSortEvent(idx)"
30
42
  >
31
43
  {{ headerLabels[idx] }}
44
+ <span
45
+ v-if="
46
+ tableHeader.dashboard &&
47
+ tableHeader.dashboard.status &&
48
+ tableHeader.dashboard.status !== 'Success'
49
+ "
50
+ :title="tableHeader.dashboard && tableHeader.dashboard.message"
51
+ class="icon has-text-danger"
52
+ >
53
+ <i class="fa fa-exclamation-triangle" />
54
+ </span>
32
55
  </th>
33
56
  <th
34
57
  ref="action-section"
@@ -165,7 +188,7 @@ export default defineComponent({
165
188
  },
166
189
  headerLabels() {
167
190
  return this.tableHeaders.map((th) =>
168
- typeof th === "string" ? th : th?.label || "Label"
191
+ typeof th === "string" ? th : th?.name || "Label"
169
192
  );
170
193
  },
171
194
  },
@@ -176,8 +199,8 @@ export default defineComponent({
176
199
  handler(n) {
177
200
  if (this.headerSortables.length === n.length) {
178
201
  n.forEach((th, idx) => {
179
- if (this.headerSortables[idx].enabled !== !!th?.sortable) {
180
- this.headerSortables[idx].enabled = !!th?.sortable;
202
+ if (this.headerSortables[idx].enabled !== !!th?.sort?.enable) {
203
+ this.headerSortables[idx].enabled = !!th?.sort?.enable;
181
204
  this.headerSortables[idx].mode = "";
182
205
  }
183
206
  });
@@ -190,7 +213,7 @@ export default defineComponent({
190
213
  };
191
214
  } else {
192
215
  return {
193
- enabled: !!th?.sortable,
216
+ enabled: !!th?.sort?.enable,
194
217
  mode: "",
195
218
  };
196
219
  }
@@ -217,7 +240,7 @@ export default defineComponent({
217
240
  emitSortEvent(index) {
218
241
  const emitValue = {
219
242
  index,
220
- label: this.tableHeaders[index].label,
243
+ label: this.tableHeaders[index].name,
221
244
  mode: "",
222
245
  };
223
246
 
@@ -6,7 +6,7 @@
6
6
  custom
7
7
  v-slot="{ navigate }"
8
8
  >
9
- <tr @click="navigate" v-bind="$attrs">
9
+ <tr class="is-link" @click="navigate" v-bind="$attrs">
10
10
  <slot />
11
11
  <fake-table-cell
12
12
  v-if="fakeCellWidth > 0"
@@ -4,9 +4,11 @@
4
4
  :view-box="`0 0 ${computedCellWidth || 300} 10`"
5
5
  :speed="2"
6
6
  :key="computedCellWidth"
7
+ :primaryColor="primaryColor"
8
+ :secondaryColor="secondaryColor"
7
9
  />
8
10
  </div>
9
- <div v-else class="haha" ref="cellDiv">
11
+ <div v-else ref="cellDiv">
10
12
  <object-cell
11
13
  v-if="valueType === 'object'"
12
14
  :obj="value"
@@ -20,7 +22,7 @@
20
22
  :max-character-length="maxCharacterLength"
21
23
  />
22
24
  <template v-else>
23
- <span class="is-ellipsis-1" :title="value">{{
25
+ <span class="is-ellipsis-1" :title="tooltip">{{
24
26
  value || (value === 0 ? 0 : "-")
25
27
  }}</span>
26
28
  </template>
@@ -29,6 +31,12 @@
29
31
 
30
32
  <script>
31
33
  import { defineComponent, defineAsyncComponent } from "vue";
34
+ import {
35
+ loaderLightThemePrimaryColor,
36
+ loaderDarkThemePrimaryColor,
37
+ loaderLightThemeSecondaryColor,
38
+ loaderDarkThemeSecondaryColor,
39
+ } from "@appscode/design-system/plugins/theme";
32
40
 
33
41
  export default defineComponent({
34
42
  props: {
@@ -44,6 +52,10 @@ export default defineComponent({
44
52
  type: null,
45
53
  default: "",
46
54
  },
55
+ tooltip: {
56
+ type: String,
57
+ defualt: "",
58
+ },
47
59
  },
48
60
  components: {
49
61
  ContentLoader: defineAsyncComponent(() =>
@@ -60,13 +72,24 @@ export default defineComponent({
60
72
  computed: {
61
73
  valueType() {
62
74
  if (typeof this.value === "object") {
63
- if (Array.isArray(this.value)) return "array";
75
+ if (this.value === null) return "null";
76
+ else if (Array.isArray(this.value)) return "array";
64
77
  else return "object";
65
78
  } else return typeof this.value;
66
79
  },
67
80
  maxCharacterLength() {
68
81
  return Math.ceil(this.computedCellWidth / 8);
69
82
  },
83
+ primaryColor() {
84
+ return document.documentElement.classList.contains("is-dark-theme")
85
+ ? loaderDarkThemePrimaryColor
86
+ : loaderLightThemePrimaryColor;
87
+ },
88
+ secondaryColor() {
89
+ return document.documentElement.classList.contains("is-dark-theme")
90
+ ? loaderDarkThemeSecondaryColor
91
+ : loaderLightThemeSecondaryColor;
92
+ },
70
93
  },
71
94
 
72
95
  data() {
@@ -0,0 +1,62 @@
1
+ <template>
2
+ <span
3
+ :class="{
4
+ 'is-flex': cellDescriptor.type !== 'object',
5
+ 'is-align-items-center': cellValue.icon,
6
+ 'is-justify-content-center': cellDescriptor.textAlign === 'center',
7
+ 'is-justify-content-left': cellDescriptor.textAlign === 'left',
8
+ 'is-justify-content-right': cellDescriptor.textAlign === 'right'
9
+ }"
10
+ >
11
+ <span v-if="cellValue.icon" class="icon p-0 mr-10">
12
+ <img width="15" :src="cellValue.icon" />
13
+ </span>
14
+ <router-link v-if="cellValue.link" :to="getCellLink(cellValue)">
15
+ {{ cellValue.data }}
16
+ </router-link>
17
+ <tag v-else-if="cellValue.color" :class="`is-${cellValue.color}`">
18
+ {{ cellValue.data }}
19
+ </tag>
20
+ <cell-value
21
+ v-else
22
+ :cell-title="cellDescriptor.name"
23
+ :value="cellValue.data || '-'"
24
+ :tooltip="cellValue.tooltip || JSON.stringify(cellValue.data)"
25
+ />
26
+ </span>
27
+ </template>
28
+
29
+ <script>
30
+ import { defineAsyncComponent, defineComponent } from "vue";
31
+ import { useRoute } from "vue-router";
32
+
33
+ export default defineComponent({
34
+ components: {
35
+ Tag: defineAsyncComponent(() => import("../../tag/Tag.vue")),
36
+ CellValue: defineAsyncComponent(() => import("../table-cell/CellValue.vue"))
37
+ },
38
+ props: {
39
+ cellDescriptor: {
40
+ type: Object,
41
+ default: () => ({})
42
+ },
43
+ cellValue: {
44
+ type: Object,
45
+ default: () => ({})
46
+ }
47
+ },
48
+ setup() {
49
+ function getCellLink(cell) {
50
+ const route = useRoute();
51
+ const inject = (str, obj) => str.replace(/\${(.*?)}/g, (x, g) => obj[g]);
52
+ const { user, cluster } = route.params;
53
+ const link = inject(cell.link || "", {
54
+ username: user,
55
+ clustername: cluster
56
+ });
57
+ return link;
58
+ }
59
+ return { getCellLink };
60
+ }
61
+ });
62
+ </script>
@@ -79,7 +79,10 @@ export default defineComponent({
79
79
  },
80
80
  printableStringObjs() {
81
81
  return this.objKeys.map((key) => {
82
- const value = this.obj[key];
82
+ let value = this.obj[key];
83
+ if (typeof value === "object" && value !== null) {
84
+ value = JSON.stringify(value);
85
+ }
83
86
  const keyValue = `${key}: ${value}`;
84
87
  const exceededLength = keyValue.length > 30;
85
88
  const print = exceededLength ? key : keyValue;
@@ -103,3 +106,4 @@ export default defineComponent({
103
106
  },
104
107
  });
105
108
  </script>
109
+
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <tabs-body class="mt-20">
2
+ <tabs-body class="mt-10">
3
3
  <tabs class="is-line">
4
4
  <tab-item :is-active="activeTab === 'edit'">
5
5
  <a @click.prevent="$emit('tabchange', 'edit')">Edit</a>