@appscode/design-system 2.2.67 → 2.4.0

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 (42) hide show
  1. package/main.scss +1 -0
  2. package/package.json +1 -1
  3. package/plugins/time-convert.js +0 -1
  4. package/vue-components/styles/base/utilities/_all.scss +1 -0
  5. package/vue-components/styles/base/utilities/_animation.scss +11 -0
  6. package/vue-components/styles/base/utilities/_colors.scss +8 -2
  7. package/vue-components/styles/base/utilities/_global.scss +3 -1
  8. package/vue-components/styles/components/_table.scss +3 -1
  9. package/vue-components/styles/components/form-fields/_all.scss +1 -0
  10. package/vue-components/styles/components/form-fields/_custom-selectbox.scss +135 -0
  11. package/vue-components/styles/components/form-fields/_input.scss +2 -9
  12. package/vue-components/v3/accordion/Accordion.vue +14 -7
  13. package/vue-components/v3/breadcrumbs/Breadcrumb.vue +1 -1
  14. package/vue-components/v3/button/Buttons.vue +1 -1
  15. package/vue-components/v3/cards/FeatureCard.vue +1 -1
  16. package/vue-components/v3/dropdown/DropdownMenu.vue +1 -1
  17. package/vue-components/v3/editor/Editor.vue +2 -2
  18. package/vue-components/v3/editor/FilteredFileEditor.vue +2 -2
  19. package/vue-components/v3/editor/MonacoEditor.vue +1 -1
  20. package/vue-components/v3/editor/ResourceKeyValueEditor.vue +1 -1
  21. package/vue-components/v3/form-fields/AcInput.vue +1 -1
  22. package/vue-components/v3/form-fields/AcTextArea.vue +1 -1
  23. package/vue-components/v3/form-fields/CustomSelect.vue +122 -0
  24. package/vue-components/v3/form-fields/ListInputField.vue +118 -0
  25. package/vue-components/v3/icons/ArrowDownIcon.vue +14 -0
  26. package/vue-components/v3/icons/CloseIcon.vue +14 -0
  27. package/vue-components/v3/icons/RefreshIcon.vue +18 -0
  28. package/vue-components/v3/modal/DialogModal.vue +1 -1
  29. package/vue-components/v3/navbar/NavbarItem.vue +2 -2
  30. package/vue-components/v3/navbar/Notification.vue +1 -1
  31. package/vue-components/v3/pagination/Pagination.vue +1 -1
  32. package/vue-components/v3/sidebar/AccentColorPicker.vue +2 -2
  33. package/vue-components/v3/sidebar/ClusterSwitcher.vue +2 -2
  34. package/vue-components/v3/sidebar/SidebarItem.vue +1 -1
  35. package/vue-components/v3/sidebar/SidebarItemWithDropDown.vue +1 -1
  36. package/vue-components/v3/table/InfoTable.vue +1 -1
  37. package/vue-components/v3/table/MultiInfoTable.vue +1 -1
  38. package/vue-components/v3/table/Table.vue +1 -1
  39. package/vue-components/v3/table/TableCell.vue +1 -3
  40. package/vue-components/v3/table/table-cell/CellValue.vue +2 -2
  41. package/vue-components/v3/table/table-cell/GenericCell.vue +1 -1
  42. package/plugins/vue-toaster.js +0 -85
package/main.scss CHANGED
@@ -22,6 +22,7 @@
22
22
  @import "@/components/vue-components/styles/components/terminal";
23
23
  @import "@/components/vue-components/styles/components/code-preview/all";
24
24
  @import "@/components/vue-components/styles/components/form-fields/input";
25
+ @import "@/components/vue-components/styles/components/form-fields/custom-selectbox";
25
26
  @import "@/components/vue-components/styles/components/ui-builder/vue-open-api";
26
27
  @import "@/components/vue-components/styles/components/ui-builder/ui-builder";
27
28
  // @import "@/components/vue-components/styles/theme/appscode.scss";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appscode/design-system",
3
- "version": "2.2.67",
3
+ "version": "2.4.0",
4
4
  "description": "A design system for Appscode websites and dashboards made using Bulma",
5
5
  "main": "main.scss",
6
6
  "scripts": {
@@ -1,5 +1,4 @@
1
1
  import moment from "moment";
2
- import { useNow, useThrottleFn } from "@vueuse/core";
3
2
 
4
3
  const getTime = (option) => {
5
4
  if (parseInt(option.time, 10) < 0 || !option.time) {
@@ -5,6 +5,7 @@
5
5
  @import "mixin";
6
6
  @import "extended";
7
7
  @import "global";
8
+ @import "animation";
8
9
  @import "grid";
9
10
  @import "spacing";
10
11
  @import "layouts";
@@ -0,0 +1,11 @@
1
+ .is-spin {
2
+ animation: spin 1000ms linear infinite;
3
+ }
4
+ @keyframes spin {
5
+ from {
6
+ transform: rotate(0deg);
7
+ }
8
+ to {
9
+ transform: rotate(360deg);
10
+ }
11
+ }
@@ -178,10 +178,16 @@ $gray-97: hsl($gray-hue, $gray-saturation, 97%);
178
178
  // Box Shadow
179
179
  $ac-shadow-1: 0 1px 4px rgba(26, 80, 151, 0.16);
180
180
  $ac-shadow-2: 0px 8px 57px rgba(0, 0, 0, 0.16);
181
- $ac-shadow-3: 0 3px 4px 0 rgba(0, 0, 0, 0.18), 0 3px 3px -2px rgba(0, 0, 0, 0.16), 0 1px 6px 0 rgba(0, 0, 0, 0.12);
181
+ $ac-shadow-3:
182
+ 0 3px 4px 0 rgba(0, 0, 0, 0.18),
183
+ 0 3px 3px -2px rgba(0, 0, 0, 0.16),
184
+ 0 1px 6px 0 rgba(0, 0, 0, 0.12);
182
185
 
183
186
  $shadow-sm: 0 1px 4px rgba(26, 80, 151, 0.16);
184
187
  $shadow-xl: 0px 8px 57px rgba(0, 0, 0, 0.16);
185
- $shadow-lg: 0 3px 4px 0 rgba(0, 0, 0, 0.18), 0 3px 3px -2px rgba(0, 0, 0, 0.16), 0 1px 6px 0 rgba(0, 0, 0, 0.12);
188
+ $shadow-lg:
189
+ 0 3px 4px 0 rgba(0, 0, 0, 0.18),
190
+ 0 3px 3px -2px rgba(0, 0, 0, 0.16),
191
+ 0 1px 6px 0 rgba(0, 0, 0, 0.12);
186
192
 
187
193
  // @import "../../theme/appscode";
@@ -637,7 +637,9 @@ $border_color_4: transparent transparent #585d6e transparent;
637
637
  &[aria-hidden="true"] {
638
638
  visibility: hidden;
639
639
  opacity: 0;
640
- transition: opacity 0.15s, visibility 0.15s;
640
+ transition:
641
+ opacity 0.15s,
642
+ visibility 0.15s;
641
643
  }
642
644
 
643
645
  &[aria-hidden="false"] {
@@ -417,7 +417,9 @@
417
417
  .table-inner-shadow {
418
418
  border-radius: 0px;
419
419
  background: $color-border;
420
- box-shadow: inset 5px 5px 10px #e3e6e9, inset -5px -5px 10px $white-100;
420
+ box-shadow:
421
+ inset 5px 5px 10px #e3e6e9,
422
+ inset -5px -5px 10px $white-100;
421
423
  }
422
424
 
423
425
  @keyframes expand {
@@ -1,4 +1,5 @@
1
1
  @import "input";
2
+ @import "custom-selectbox";
2
3
  @import "check-radio-switch";
3
4
  @import "file-upload";
4
5
  @import "image-upload";
@@ -0,0 +1,135 @@
1
+ .is-selectbox {
2
+ position: relative;
3
+ z-index: 9;
4
+
5
+ input[type="text"] {
6
+ padding-right: 32px;
7
+ }
8
+
9
+ &.is-extra-small {
10
+ .buttons {
11
+ .button {
12
+ height: 28px;
13
+ }
14
+ }
15
+ }
16
+
17
+ .ac-field {
18
+ position: absolute;
19
+ top: 7px;
20
+ left: 12px;
21
+ width: calc(100% - 15px);
22
+ }
23
+
24
+ &.is-open {
25
+ .options {
26
+ opacity: 1;
27
+ visibility: visible;
28
+ }
29
+ }
30
+
31
+ .buttons {
32
+ position: absolute;
33
+ gap: 0;
34
+ right: 2px;
35
+ top: 2px;
36
+ margin: 0;
37
+
38
+ .button {
39
+ margin: 0 !important;
40
+ color: #616161 !important;
41
+ padding: 0;
42
+ width: 32px;
43
+ height: 32px;
44
+ }
45
+ }
46
+
47
+ .options {
48
+ border: 1px solid $color-border;
49
+ box-shadow: $ac-shadow-1;
50
+ background-color: $white-100;
51
+ border-radius: 4px;
52
+ padding: 2px;
53
+ position: absolute;
54
+ width: 100%;
55
+ max-height: 500px;
56
+ overflow-y: auto;
57
+ transition: 0.3s ease-in-out;
58
+ opacity: 0;
59
+ visibility: hidden;
60
+
61
+ input[type="checkbox"] {
62
+ width: 16px;
63
+ height: 16px;
64
+ }
65
+
66
+ label {
67
+ position: inherit;
68
+ }
69
+
70
+ &.group {
71
+ li {
72
+ display: block;
73
+
74
+ ul {
75
+ li {
76
+ display: flex;
77
+
78
+ &:hover:not(.is-active) {
79
+ background-color: $primary-light-gray;
80
+ color: $color-heading;
81
+
82
+ label {
83
+ color: $color-heading;
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ }
90
+
91
+ li {
92
+ display: flex;
93
+ align-items: center;
94
+ padding: 6px 12px;
95
+ border-radius: 4px;
96
+ gap: 8px;
97
+ cursor: pointer;
98
+ transition: 0.2s ease-in-out;
99
+ color: $color-text;
100
+
101
+ label {
102
+ color: $color-text;
103
+ cursor: pointer;
104
+ }
105
+
106
+ &:hover:not(.group li, .is-active) {
107
+ background-color: $primary-light-gray;
108
+ color: $color-heading;
109
+
110
+ label {
111
+ color: $color-heading;
112
+ }
113
+ }
114
+
115
+ strong {
116
+ color: $color-heading;
117
+ font-weight: 500;
118
+ }
119
+
120
+ &.is-active {
121
+ background-color: $ac-primary;
122
+ color: $white-100;
123
+
124
+ label {
125
+ color: $white-100;
126
+ }
127
+ }
128
+
129
+ &.is-disabled {
130
+ opacity: 0.6;
131
+ cursor: not-allowed;
132
+ }
133
+ }
134
+ }
135
+ }
@@ -42,7 +42,6 @@
42
42
  }
43
43
 
44
44
  &.is-success {
45
-
46
45
  input,
47
46
  .ac-card,
48
47
  textarea,
@@ -56,7 +55,6 @@
56
55
  }
57
56
 
58
57
  &.is-danger {
59
-
60
58
  input,
61
59
  .ac-card,
62
60
  textarea,
@@ -70,7 +68,6 @@
70
68
  }
71
69
 
72
70
  &.is-loading {
73
-
74
71
  input,
75
72
  .ac-card,
76
73
  textarea {
@@ -112,7 +109,6 @@
112
109
  }
113
110
 
114
111
  &.is-normal {
115
-
116
112
  input,
117
113
  select {
118
114
  height: 45px;
@@ -161,7 +157,6 @@
161
157
  }
162
158
 
163
159
  &.is-small {
164
-
165
160
  input,
166
161
  select {
167
162
  height: 36px;
@@ -220,7 +215,6 @@
220
215
  }
221
216
 
222
217
  &.is-extra-small {
223
-
224
218
  input,
225
219
  select {
226
220
  height: 32px;
@@ -505,7 +499,7 @@
505
499
  // check radio
506
500
 
507
501
  .ac-single-radio {
508
- .is-checkradio[type="radio"]+label {
502
+ .is-checkradio[type="radio"] + label {
509
503
  padding-left: 25px;
510
504
 
511
505
  &:before {
@@ -575,7 +569,6 @@
575
569
  }
576
570
 
577
571
  &:hover {
578
-
579
572
  .file-cta,
580
573
  .file-name {
581
574
  border-color: $ac-primary;
@@ -632,4 +625,4 @@
632
625
  }
633
626
  }
634
627
  }
635
- }
628
+ }
@@ -4,23 +4,30 @@ withDefaults(defineProps<{ isActive?: boolean; bodyInside?: boolean }>(), {
4
4
  bodyInside: false,
5
5
  });
6
6
 
7
- defineEmits(['onClick'])
8
-
7
+ defineEmits(["onClick"]);
9
8
  </script>
10
9
 
11
-
12
10
  <template>
13
11
  <div class="single-accordion-item">
14
12
  <div @click.prevent="$emit('onClick')" class="accordion-heading is-clickable">
15
13
  <slot name="title" />
16
14
  <div class="accordion-right is-flex is-align-items-center">
17
- <div v-show="!isActive"
18
- class="accordion-description is-justify-content-flex-end has-text-right is-flex-direction-column">
15
+ <div
16
+ v-show="!isActive"
17
+ class="accordion-description is-justify-content-flex-end has-text-right is-flex-direction-column"
18
+ >
19
19
  <slot name="description" />
20
20
  </div>
21
21
  <button class="icon">
22
- <svg :style="{ transform: isActive ? 'rotate(-180deg)' : 'rotate(0deg)' }" xmlns="http://www.w3.org/2000/svg"
23
- fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
22
+ <svg
23
+ :style="{ transform: isActive ? 'rotate(-180deg)' : 'rotate(0deg)' }"
24
+ xmlns="http://www.w3.org/2000/svg"
25
+ fill="none"
26
+ viewBox="0 0 24 24"
27
+ stroke-width="1.5"
28
+ stroke="currentColor"
29
+ class="size-6"
30
+ >
24
31
  <path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5" />
25
32
  </svg>
26
33
  </button>
@@ -75,7 +75,7 @@ watch(
75
75
  {
76
76
  immediate: true,
77
77
  deep: true,
78
- }
78
+ },
79
79
  );
80
80
  </script>
81
81
 
@@ -3,7 +3,7 @@ withDefaults(
3
3
  defineProps<{
4
4
  isMaxWidth?: boolean;
5
5
  }>(),
6
- { isMaxWidth: false }
6
+ { isMaxWidth: false },
7
7
  );
8
8
  </script>
9
9
  <template>
@@ -7,7 +7,7 @@ withDefaults(
7
7
  {
8
8
  isRequired: false,
9
9
  statusClass: "has-background-primary-light has-text-primary",
10
- }
10
+ },
11
11
  );
12
12
  </script>
13
13
  <template>
@@ -79,7 +79,7 @@ watch(
79
79
  }, 200);
80
80
  }
81
81
  }
82
- }
82
+ },
83
83
  );
84
84
  </script>
85
85
 
@@ -90,7 +90,7 @@ watch(
90
90
  },
91
91
  {
92
92
  immediate: true,
93
- }
93
+ },
94
94
  );
95
95
 
96
96
  watch(
@@ -102,7 +102,7 @@ watch(
102
102
  },
103
103
  {
104
104
  immediate: true,
105
- }
105
+ },
106
106
  );
107
107
  </script>
108
108
 
@@ -100,14 +100,14 @@ watch(
100
100
  {
101
101
  immediate: true,
102
102
  deep: true,
103
- }
103
+ },
104
104
  );
105
105
 
106
106
  watch(
107
107
  () => props.toggleHideValue,
108
108
  (n) => {
109
109
  hideValue.value = n;
110
- }
110
+ },
111
111
  );
112
112
  </script>
113
113
 
@@ -59,7 +59,7 @@ export default defineComponent({
59
59
  // remove the schema
60
60
  if (this.$monacoValidationOptions) {
61
61
  this.$monacoValidationOptions.schemas = this.$monacoValidationOptions.schemas.filter(
62
- (schema) => !schema.fileMatch.includes(this.modelId)
62
+ (schema) => !schema.fileMatch.includes(this.modelId),
63
63
  );
64
64
  }
65
65
  // dispose editor
@@ -60,7 +60,7 @@ watch(
60
60
  (n) => {
61
61
  emit("activeKey", n);
62
62
  },
63
- { immediate: true }
63
+ { immediate: true },
64
64
  );
65
65
  </script>
66
66
 
@@ -56,7 +56,7 @@ watch(
56
56
  (n) => {
57
57
  if (n) triggerInput();
58
58
  },
59
- { immediate: true }
59
+ { immediate: true },
60
60
  );
61
61
  </script>
62
62
 
@@ -53,7 +53,7 @@ watch(
53
53
  (n) => {
54
54
  if (n) triggerInput();
55
55
  },
56
- { immediate: true }
56
+ { immediate: true },
57
57
  );
58
58
  </script>
59
59
 
@@ -0,0 +1,122 @@
1
+ <script setup lang="ts">
2
+ import { defineAsyncComponent } from "vue";
3
+
4
+ interface prop {
5
+ multiselect?: boolean;
6
+ custom?: boolean;
7
+ group?: boolean;
8
+ isOpen?: boolean;
9
+ }
10
+
11
+ withDefaults(defineProps<prop>(), {
12
+ multiselect: false,
13
+ custom: false,
14
+ isOpen: false,
15
+ });
16
+
17
+ const AcButtons = defineAsyncComponent(() => import("../button/Buttons.vue"));
18
+ const AcButton = defineAsyncComponent(() => import("../button/Button.vue"));
19
+
20
+ const ArrowDownIcon = defineAsyncComponent(() => import("../icons/ArrowDownIcon.vue"));
21
+ const RefreshIcon = defineAsyncComponent(() => import("../icons/RefreshIcon.vue"));
22
+ const CloseIcon = defineAsyncComponent(() => import("../icons/CloseIcon.vue"));
23
+ </script>
24
+
25
+ <template>
26
+ <!-- add dynamic 'z-index', use 'is-open' for show hide options -->
27
+ <div class="ac-single-input is-small is-selectbox" :class="[isOpen ? 'is-open' : '']" style="z-index: 2">
28
+ <!-- add 'show-label' class for move top -->
29
+ <label for="custom-select" class="ac-label show-label">Select Option</label>
30
+ <input type="text" value="Select" />
31
+
32
+ <div v-if="multiselect" class="ac-field field is-grouped is-clipped">
33
+ <div class="control">
34
+ <div class="tags has-addons">
35
+ <span class="tag is-primary is-light">Alex Smith</span>
36
+ <a class="tag is-delete"></a>
37
+ </div>
38
+ </div>
39
+
40
+ <div class="control">
41
+ <div class="tags has-addons">
42
+ <span class="tag is-info is-light">Alex Smith</span>
43
+ <a class="tag is-delete"></a>
44
+ </div>
45
+ </div>
46
+
47
+ <div class="control">
48
+ <div class="tags has-addons">
49
+ <span class="tag is-secondary is-light">Alex Smith</span>
50
+ <a class="tag is-delete"></a>
51
+ </div>
52
+ </div>
53
+
54
+ <div class="control">
55
+ <div class="tags has-addons">
56
+ <span class="tag is-primary is-clickable">+3</span>
57
+ </div>
58
+ </div>
59
+ </div>
60
+
61
+ <ac-buttons>
62
+ <button class="button ac-button is-white">
63
+ <ArrowDownIcon />
64
+ </button>
65
+
66
+ <ac-button modifier-classes="is-white">
67
+ <RefreshIcon class="is-spin" />
68
+ </ac-button>
69
+
70
+ <ac-button modifier-classes="is-white">
71
+ <CloseIcon style="rotate: 180deg" />
72
+ </ac-button>
73
+ </ac-buttons>
74
+
75
+ <ul v-if="group" class="options group">
76
+ <li v-for="i in 2" :key="i">
77
+ <strong>Group one</strong>
78
+ <ul>
79
+ <li>
80
+ <input v-if="multiselect" type="checkbox" name="" id="opt-five" />
81
+ <label for="opt-five">Select option five</label>
82
+ </li>
83
+ <li>
84
+ <input v-if="multiselect" type="checkbox" name="" id="opt-six" checked />
85
+ <label for="opt-six">Select option six</label>
86
+ </li>
87
+ <li class="is-disabled">
88
+ <input v-if="multiselect" type="checkbox" name="" id="opt-seven" />
89
+ <label for="opt-seven">Select option seven</label>
90
+ </li>
91
+ <li>
92
+ <input v-if="multiselect" type="checkbox" name="" id="opt-eight" />
93
+ <label for="opt-eight">Select option eight</label>
94
+ </li>
95
+ </ul>
96
+ </li>
97
+ </ul>
98
+ <div v-else-if="custom" class="custom-select options">
99
+ <slot />
100
+ </div>
101
+
102
+ <ul v-else class="options">
103
+ <li>
104
+ <input v-if="multiselect" type="checkbox" name="" id="opt-one" />
105
+ <label for="opt-one">Select option one</label>
106
+ </li>
107
+ <li class="is-active">
108
+ <input v-if="multiselect" type="checkbox" name="" id="opt-two" />
109
+ <label for="opt-two">Select option Two</label>
110
+ </li>
111
+ <li class="is-disabled">
112
+ <input v-if="multiselect" type="checkbox" name="" id="opt-three" />
113
+ <label for="opt-three">Select option three</label>
114
+ </li>
115
+ <li>
116
+ <input v-if="multiselect" type="checkbox" name="" id="opt-four" />
117
+ <label for="opt-four">Select option four</label>
118
+ </li>
119
+ </ul>
120
+ </div>
121
+ <!-- <single-input /> -->
122
+ </template>
@@ -0,0 +1,118 @@
1
+ <template>
2
+ <div>
3
+ <div class="input-container">
4
+ <AcInput v-model="newItem" @keyup.enter="addItem" :placeholderText="placeholderText" class="input-field" />
5
+ <AcButton @click="addItem">Add</AcButton>
6
+ </div>
7
+ <transition-group name="list" tag="ul" class="item-list">
8
+ <li v-for="(item, index) in items" :key="item" class="list-item">
9
+ <span>{{ item }}</span>
10
+ <AcButton @click="removeItem(index)" class="remove-button">&times;</AcButton>
11
+ </li>
12
+ </transition-group>
13
+ </div>
14
+ </template>
15
+
16
+ <script setup lang="ts">
17
+ import { ref } from "vue";
18
+ import AcInput from "./AcInput.vue";
19
+ import AcButton from "../button/Button.vue";
20
+
21
+ withDefaults(
22
+ defineProps<{
23
+ placeholderText?: string;
24
+ }>(),
25
+ { placeholderText: "Enter a New Item" },
26
+ );
27
+
28
+ const newItem = ref("");
29
+ const items = ref<string[]>([]);
30
+
31
+ const emit = defineEmits<{
32
+ (e: "update:items", value: string[]): void;
33
+ }>();
34
+
35
+ const addItem = () => {
36
+ if (newItem.value.trim()) {
37
+ items.value.unshift(newItem.value.trim());
38
+ newItem.value = "";
39
+ emit("update:items", items.value);
40
+ }
41
+ };
42
+
43
+ const removeItem = (index: number) => {
44
+ items.value.splice(index, 1);
45
+ emit("update:items", items.value);
46
+ };
47
+ </script>
48
+
49
+ <style scoped>
50
+ .title {
51
+ color: #2c3e50;
52
+ text-align: center;
53
+ margin-bottom: 20px;
54
+ font-size: 24px;
55
+ font-weight: bold;
56
+ }
57
+
58
+ .input-field {
59
+ border-radius: 8px;
60
+ transition: border-color 0.3s;
61
+ margin-right: 8px;
62
+ width: 100%;
63
+ }
64
+ .input-container {
65
+ display: flex;
66
+ }
67
+
68
+ .item-list {
69
+ list-style-type: none;
70
+ padding: 0;
71
+ }
72
+
73
+ .list-item {
74
+ display: flex;
75
+ justify-content: space-between;
76
+ align-items: center;
77
+ padding: 12px;
78
+ background-color: #ecf0f1;
79
+ margin-bottom: 12px;
80
+ border-radius: 8px;
81
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
82
+ transition: all 0.3s;
83
+ }
84
+
85
+ .list-item:hover {
86
+ background-color: #e0e6e8;
87
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
88
+ }
89
+
90
+ .remove-button {
91
+ background-color: #e74c3c;
92
+ color: white;
93
+ border: none;
94
+ border-radius: 50%;
95
+ width: 30px;
96
+ height: 30px;
97
+ font-size: 18px;
98
+ cursor: pointer;
99
+ display: flex;
100
+ align-items: center;
101
+ justify-content: center;
102
+ transition: background-color 0.3s;
103
+ }
104
+
105
+ .remove-button:hover {
106
+ background-color: #c0392b;
107
+ }
108
+
109
+ .list-enter-active,
110
+ .list-leave-active {
111
+ transition: all 0.5s;
112
+ }
113
+ .list-enter,
114
+ .list-leave-to {
115
+ opacity: 0;
116
+ transform: translateY(30px);
117
+ }
118
+ </style>
@@ -0,0 +1,14 @@
1
+ <template>
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ fill="none"
5
+ width="16px"
6
+ height="16px"
7
+ viewBox="0 0 24 24"
8
+ stroke-width="1.5"
9
+ stroke="currentColor"
10
+ class="size-6"
11
+ >
12
+ <path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12" />
13
+ </svg>
14
+ </template>
@@ -0,0 +1,14 @@
1
+ <template>
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ fill="none"
5
+ height="16px"
6
+ width="16px"
7
+ viewBox="0 0 24 24"
8
+ stroke-width="1.5"
9
+ stroke="currentColor"
10
+ class="size-6"
11
+ >
12
+ <path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5" />
13
+ </svg>
14
+ </template>
@@ -0,0 +1,18 @@
1
+ <template>
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ fill="none"
5
+ width="16px"
6
+ height="16px"
7
+ viewBox="0 0 24 24"
8
+ stroke-width="1.5"
9
+ stroke="currentColor"
10
+ class="size-6"
11
+ >
12
+ <path
13
+ stroke-linecap="round"
14
+ stroke-linejoin="round"
15
+ d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"
16
+ />
17
+ </svg>
18
+ </template>
@@ -50,7 +50,7 @@ watch(
50
50
  } else {
51
51
  destroyModal();
52
52
  }
53
- }
53
+ },
54
54
  );
55
55
 
56
56
  const handleBackdropClick = (event: MouseEvent) => {
@@ -25,10 +25,10 @@ function clickEvent() {
25
25
  const route = useRoute();
26
26
  watch(
27
27
  () => route.fullPath,
28
- (n) => {
28
+ () => {
29
29
  isActive.value = "";
30
30
  emit("onRouteChange");
31
- }
31
+ },
32
32
  );
33
33
  onClickOutside(navbarItem, () => {
34
34
  isActive.value = "";
@@ -12,7 +12,7 @@ withDefaults(
12
12
  {
13
13
  notifications: () => [],
14
14
  unreadNotification: 0,
15
- }
15
+ },
16
16
  );
17
17
  function notificationTime(time: number) {
18
18
  return TimeConvert.getDayDifferences({ past: time });
@@ -103,7 +103,7 @@ watch(
103
103
  {
104
104
  deep: true,
105
105
  immediate: true,
106
- }
106
+ },
107
107
  );
108
108
  </script>
109
109
 
@@ -63,7 +63,7 @@ watch(
63
63
  document.documentElement.style.setProperty("--hsl-lightness", lightness);
64
64
  });
65
65
  },
66
- { deep: true }
66
+ { deep: true },
67
67
  );
68
68
 
69
69
  watch(
@@ -76,7 +76,7 @@ watch(
76
76
  document.documentElement.style.setProperty("--font-hsl-lightness", lightness);
77
77
  });
78
78
  },
79
- { deep: true }
79
+ { deep: true },
80
80
  );
81
81
  </script>
82
82
 
@@ -32,7 +32,7 @@ watch(
32
32
  (n) => {
33
33
  selectedClusterName.value = n;
34
34
  },
35
- { immediate: true }
35
+ { immediate: true },
36
36
  );
37
37
 
38
38
  watch(selectedCluster, (n) => {
@@ -62,7 +62,7 @@ watch(
62
62
  return selectedClusterName.value === item.name;
63
63
  }) || null;
64
64
  },
65
- { immediate: true, deep: true }
65
+ { immediate: true, deep: true },
66
66
  );
67
67
  </script>
68
68
 
@@ -38,7 +38,7 @@ watch(
38
38
  });
39
39
  }
40
40
  },
41
- { immediate: true }
41
+ { immediate: true },
42
42
  );
43
43
  </script>
44
44
 
@@ -22,7 +22,7 @@ watch(
22
22
  dropDownStatus.value = "open";
23
23
  }
24
24
  },
25
- { immediate: true }
25
+ { immediate: true },
26
26
  );
27
27
 
28
28
  const toggleDropDownStatus = () => {
@@ -53,7 +53,7 @@ const isFullTableLoaderActive = computed(() => {
53
53
  }"
54
54
  >
55
55
  <template v-if="!isTableEmpty">
56
- <table-row v-for="(tableHeader, idx) in tableHeaders" :key="(tableHeader as string)">
56
+ <table-row v-for="(tableHeader, idx) in tableHeaders" :key="tableHeader as string">
57
57
  <table-cell>
58
58
  <span class="is-flex is-align-items-center">
59
59
  <slot :name="`table-cell-icon-${idx}`" />
@@ -58,7 +58,7 @@ watch(
58
58
  }
59
59
  });
60
60
  }
61
- }
61
+ },
62
62
  );
63
63
  </script>
64
64
 
@@ -119,7 +119,7 @@ watch(
119
119
  });
120
120
  }
121
121
  },
122
- { immediate: true }
122
+ { immediate: true },
123
123
  );
124
124
 
125
125
  onUpdated(() => {
@@ -1,11 +1,9 @@
1
1
  <script setup lang="ts">
2
- import { computed } from "vue";
3
-
4
2
  interface Props {
5
3
  cellWidth?: number | null;
6
4
  }
7
5
 
8
- const props = withDefaults(defineProps<Props>(), {
6
+ withDefaults(defineProps<Props>(), {
9
7
  cellWidth: null,
10
8
  });
11
9
  </script>
@@ -17,7 +17,7 @@ const props = withDefaults(defineProps<Props>(), {
17
17
  });
18
18
 
19
19
  const ContentLoader = defineAsyncComponent(() =>
20
- import("vue-content-loader").then(({ ContentLoader }) => ContentLoader)
20
+ import("vue-content-loader").then(({ ContentLoader }) => ContentLoader),
21
21
  );
22
22
  const ObjectCell = defineAsyncComponent(() => import("../../table/table-cell/ObjectCell.vue"));
23
23
  const ArrayCell = defineAsyncComponent(() => import("../../table/table-cell/ArrayCell.vue"));
@@ -58,7 +58,7 @@ watch(
58
58
  oldDivValue = n;
59
59
  }
60
60
  },
61
- { immediate: true }
61
+ { immediate: true },
62
62
  );
63
63
 
64
64
  const primaryColor = computed(() => {
@@ -66,7 +66,7 @@ function redirectTo() {
66
66
  <cell-value
67
67
  v-else
68
68
  :cell-title="cellDescriptor.name"
69
- :value="cellValue.data as {} || '-'"
69
+ :value="(cellValue.data as {}) || '-'"
70
70
  :tooltip="cellValue.tooltip || JSON.stringify(cellValue.data)"
71
71
  />
72
72
  </span>
@@ -1,85 +0,0 @@
1
- module.exports = {
2
- position: "top-center",
3
- theme: "toasted-primary",
4
- iconPack: "fontawesome",
5
- className: "ac-toast",
6
- action: {
7
- icon: "close",
8
- class: "ac-toast-action",
9
- onClick: (e, toastObject) => {
10
- toastObject.goAway(0);
11
- },
12
- },
13
- register: [
14
- {
15
- name: "success",
16
- message: (payload) => {
17
- if (payload) {
18
- if (typeof payload === "string") return payload;
19
- else if (payload.message) return payload.message;
20
- else return "Operation Completed Successfully";
21
- }
22
- // if there is no message passed show default message
23
- else return "Operation Completed Successfully";
24
- },
25
- options: {
26
- icon: "fa-check",
27
- duration: 2500,
28
- type: "success",
29
- className: "ac-toast is-success",
30
- },
31
- },
32
- {
33
- name: "error",
34
- message: (payload) => {
35
- if (payload) {
36
- if (typeof payload === "string") return payload;
37
- else if (payload.response && payload.response.data && payload.response.data.message)
38
- return payload.response.data.message;
39
- else if (payload.message) return payload.message;
40
- else return "Something Went Wrong";
41
- } else return "Something Went Wrong";
42
- },
43
- options: {
44
- icon: "fa-warning",
45
- duration: 20000,
46
- type: "error",
47
- className: "ac-toast is-danger",
48
- },
49
- },
50
- {
51
- name: "info",
52
- message: (payload) => {
53
- if (payload) {
54
- if (typeof payload === "string") return payload;
55
- else if (payload.message) return payload.message;
56
- else return "Something Went Wrong";
57
- } else return "Something Went Wrong";
58
- },
59
- options: {
60
- icon: "fa-info",
61
- duration: 20000,
62
- type: "info",
63
- className: "ac-toast is-info",
64
- },
65
- },
66
- {
67
- name: "warning",
68
- message: (payload) => {
69
- if (payload) {
70
- if (typeof payload === "string") return payload;
71
- else if (payload.message) return payload.message;
72
- else return "Something Went Wrong";
73
- }
74
- // if there is no message passed show default message
75
- else return "Something Went Wrong";
76
- },
77
- options: {
78
- icon: "fa-warning",
79
- duration: 2500,
80
- type: "error",
81
- className: "ac-toast is-warning",
82
- },
83
- },
84
- ],
85
- };