@appscode/design-system 1.0.43-alpha.13 → 1.0.43-alpha.130

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 (102) 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 +103 -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/_widget-menu.scss +9 -9
  45. package/components/_wizard.scss +31 -19
  46. package/components/ac-toaster/_ac-toasted.scss +5 -5
  47. package/components/bbum/_card-team.scss +18 -10
  48. package/components/bbum/_information-center.scss +17 -3
  49. package/components/bbum/_mobile-desktop.scss +6 -6
  50. package/components/bbum/_post.scss +5 -4
  51. package/components/bbum/_sign-up-notification.scss +6 -6
  52. package/components/bbum/_single-post-preview.scss +9 -9
  53. package/components/bbum/_user-profile.scss +97 -90
  54. package/components/ui-builder/_ui-builder.scss +29 -10
  55. package/components/ui-builder/_vue-open-api.scss +98 -0
  56. package/layouts/_404.scss +2 -1
  57. package/layouts/_code-preview.scss +14 -7
  58. package/main.scss +4 -0
  59. package/package.json +2 -7
  60. package/plugins/theme.js +130 -128
  61. package/vue-components/v2/banner/Banner.vue +2 -2
  62. package/vue-components/v2/breadcrumbs/Breadcrumb.vue +97 -0
  63. package/vue-components/v2/button/Button.vue +5 -0
  64. package/vue-components/v2/button/DownloadBtn.vue +45 -0
  65. package/vue-components/v2/card/PaymentCards.vue +11 -2
  66. package/vue-components/v2/content/ContentTable.vue +12 -7
  67. package/vue-components/v2/editor/Editor.vue +29 -1
  68. package/vue-components/v2/editor/FilteredFileEditor.vue +153 -0
  69. package/vue-components/v2/editor/ResourceKeyValueEditor.vue +196 -0
  70. package/vue-components/v2/loaders/ResourceLoader.vue +90 -0
  71. package/vue-components/v2/loaders/SidebarLoader.vue +32 -0
  72. package/vue-components/v2/modal/Modal.vue +33 -12
  73. package/vue-components/v2/modals/DeleteConfirmationModal.vue +77 -0
  74. package/vue-components/v2/modals/JsonShowModal.vue +12 -2
  75. package/vue-components/v2/navbar/Appdrawer.vue +10 -9
  76. package/vue-components/v2/navbar/ThemeMode.vue +120 -0
  77. package/vue-components/v2/navbar/User.vue +3 -0
  78. package/vue-components/v2/preloader/Preloader.vue +5 -5
  79. package/vue-components/v2/sidebar/ClusterSwitcher.vue +126 -0
  80. package/vue-components/v2/sidebar/SidebarItem.vue +23 -1
  81. package/vue-components/v2/sidebar/SidebarItemWithDropDown.vue +19 -20
  82. package/vue-components/v2/table/Table.vue +33 -8
  83. package/vue-components/v2/table/TableRow.vue +17 -8
  84. package/vue-components/v2/table/table-cell/CellValue.vue +31 -4
  85. package/vue-components/v2/table/table-cell/GenericCell.vue +56 -0
  86. package/vue-components/v2/table/table-cell/ObjectCell.vue +4 -1
  87. package/vue-components/v2/tabs/EditorTabs.vue +1 -1
  88. package/vue-components/v3/button/Button.vue +5 -0
  89. package/vue-components/v3/dropdown/DropdownMenu.vue +1 -1
  90. package/vue-components/v3/editor/Editor.vue +32 -11
  91. package/vue-components/v3/modal/Modal.vue +10 -1
  92. package/vue-components/v3/modals/JsonShowModal.vue +13 -4
  93. package/vue-components/v3/navbar/Appdrawer.vue +12 -7
  94. package/vue-components/v3/navbar/ThemeMode.vue +128 -0
  95. package/vue-components/v3/sidebar/ClusterSwitcher.vue +133 -0
  96. package/vue-components/v3/sidebar/SidebarItemWithDropDown.vue +120 -0
  97. package/vue-components/v3/table/Table.vue +17 -5
  98. package/vue-components/v3/table/TableRow.vue +1 -1
  99. package/vue-components/v3/table/table-cell/CellValue.vue +26 -3
  100. package/vue-components/v3/table/table-cell/GenericCell.vue +62 -0
  101. package/vue-components/v3/table/table-cell/ObjectCell.vue +5 -1
  102. 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,6 +25,18 @@
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
  >
@@ -165,7 +177,7 @@ export default defineComponent({
165
177
  },
166
178
  headerLabels() {
167
179
  return this.tableHeaders.map((th) =>
168
- typeof th === "string" ? th : th?.label || "Label"
180
+ typeof th === "string" ? th : th?.name || "Label"
169
181
  );
170
182
  },
171
183
  },
@@ -176,8 +188,8 @@ export default defineComponent({
176
188
  handler(n) {
177
189
  if (this.headerSortables.length === n.length) {
178
190
  n.forEach((th, idx) => {
179
- if (this.headerSortables[idx].enabled !== !!th?.sortable) {
180
- this.headerSortables[idx].enabled = !!th?.sortable;
191
+ if (this.headerSortables[idx].enabled !== !!th?.sort?.enable) {
192
+ this.headerSortables[idx].enabled = !!th?.sort?.enable;
181
193
  this.headerSortables[idx].mode = "";
182
194
  }
183
195
  });
@@ -190,7 +202,7 @@ export default defineComponent({
190
202
  };
191
203
  } else {
192
204
  return {
193
- enabled: !!th?.sortable,
205
+ enabled: !!th?.sort?.enable,
194
206
  mode: "",
195
207
  };
196
208
  }
@@ -217,7 +229,7 @@ export default defineComponent({
217
229
  emitSortEvent(index) {
218
230
  const emitValue = {
219
231
  index,
220
- label: this.tableHeaders[index].label,
232
+ label: this.tableHeaders[index].name,
221
233
  mode: "",
222
234
  };
223
235
 
@@ -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>