@appscode/design-system 1.1.0-beta.2 → 1.1.0-beta.4
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.
- package/base/_video-player.scss +65 -0
- package/base/utilities/_all.scss +5 -4
- package/base/utilities/_colors.scss +446 -0
- package/base/utilities/_customize-bulma.scss +23 -27
- package/base/utilities/_extended.scss +3 -2
- package/base/utilities/{_default.scss → _global.scss} +159 -306
- package/base/utilities/_layouts.scss +157 -0
- package/base/utilities/_spacing.scss +96 -0
- package/base/utilities/_typography.scss +34 -2
- package/components/_ac-accordion.scss +117 -117
- package/components/_ac-alert-box.scss +205 -262
- package/components/_ac-card.scss +0 -597
- package/components/_ac-input.scss +0 -482
- package/components/_ac-modal.scss +212 -212
- package/components/_ac-multi-select.scss +84 -55
- package/components/_ac-options.scss +122 -122
- package/components/_ac-table.scss +503 -502
- package/components/_ac-tabs.scss +4 -3
- package/components/_ac-tags.scss +116 -116
- package/components/_ac-terminal.scss +275 -231
- package/components/_all.scss +31 -28
- package/components/_app-drawer.scss +0 -134
- package/components/_breadcumb.scss +0 -71
- package/components/_buttons.scss +779 -779
- package/components/_dashboard-header.scss +0 -115
- package/components/_image-upload.scss +2 -2
- package/components/_left-sidebar-menu.scss +346 -475
- package/components/_navbar.scss +786 -752
- package/components/_pagination.scss +9 -27
- package/components/_payment-card.scss +1 -1
- package/components/_widget-menu.scss +247 -247
- package/components/ac-toaster/_ac-toasted.scss +6 -11
- package/components/ui-builder/_ui-builder.scss +1 -1
- package/components/ui-builder/_vue-open-api.scss +512 -0
- package/main.scss +26 -10
- package/package.json +1 -1
- package/plugins/theme.js +11 -9
- package/plugins/vue-toaster.js +1 -1
- package/vue-components/v2/card/Card.vue +1 -1
- package/vue-components/v3/alert/Alert.vue +5 -5
- package/vue-components/v3/button/Button.vue +8 -0
- package/vue-components/v3/cards/Card.vue +1 -1
- package/vue-components/v3/cards/Cluster.vue +0 -4
- package/vue-components/v3/cards/Counter.vue +12 -0
- package/vue-components/v3/cards/FeatureCard.vue +31 -0
- package/vue-components/v3/cards/InfoCard.vue +4 -9
- package/vue-components/v3/cards/Monitoring.vue +1 -1
- package/vue-components/v3/cards/Vendor.vue +67 -5
- package/vue-components/v3/content/ContentTable.vue +7 -2
- package/vue-components/v3/editor/FilteredFileEditor.vue +195 -2
- package/vue-components/v3/footer/FooterItem.vue +4 -1
- package/vue-components/v3/form-fields/AcSingleInput.vue +1 -1
- package/vue-components/v3/header/Header.vue +3 -2
- package/vue-components/v3/loaders/InfoCardLoader.vue +65 -0
- package/vue-components/v3/notification/AlertBox.vue +4 -4
- package/vue-components/v3/searchbars/SearchBar.vue +10 -2
- package/vue-components/v3/sidebar/ClusterSwitcher.vue +4 -4
- package/vue-components/v3/sidebar/Sidebar.vue +3 -8
- package/vue-components/v3/sidebar/SidebarFooter.vue +3 -3
- package/vue-components/v3/sidebar/SidebarHeader.vue +3 -3
- package/vue-components/v3/sidebar/Steps.vue +148 -0
- package/vue-components/v3/table/Table.vue +27 -20
- package/base/utilities/_derived-variables.scss +0 -24
- package/base/utilities/_initial-variables.scss +0 -217
- package/components/_basic-card.scss +0 -118
|
@@ -23,5 +23,17 @@
|
|
|
23
23
|
width: calc(25% - 8px);
|
|
24
24
|
max-width: 390px;
|
|
25
25
|
min-width: 290px;
|
|
26
|
+
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-direction: column;
|
|
29
|
+
justify-content: space-between;
|
|
30
|
+
height: 200px;
|
|
31
|
+
|
|
32
|
+
border: 1px solid $primary-90;
|
|
33
|
+
|
|
34
|
+
.card-header {
|
|
35
|
+
display: flex;
|
|
36
|
+
justify-content: space-between;
|
|
37
|
+
}
|
|
26
38
|
}
|
|
27
39
|
</style>
|
|
@@ -38,3 +38,34 @@ withDefaults(
|
|
|
38
38
|
</div>
|
|
39
39
|
<!-- single card wrapper end -->
|
|
40
40
|
</template>
|
|
41
|
+
|
|
42
|
+
<style lang="scss" scoped>
|
|
43
|
+
// ac card
|
|
44
|
+
.card-basic {
|
|
45
|
+
padding: 20px;
|
|
46
|
+
width: calc(25% - 8px);
|
|
47
|
+
max-width: 390px;
|
|
48
|
+
min-width: 290px;
|
|
49
|
+
position: relative;
|
|
50
|
+
|
|
51
|
+
.required {
|
|
52
|
+
position: absolute;
|
|
53
|
+
left: 20px;
|
|
54
|
+
top: -9px;
|
|
55
|
+
}
|
|
56
|
+
.c-header {
|
|
57
|
+
.c-title {
|
|
58
|
+
h4 {
|
|
59
|
+
font-size: 18px;
|
|
60
|
+
color: #061b2d;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.c-body {
|
|
66
|
+
p {
|
|
67
|
+
color: #0c365a;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
</style>
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { defineAsyncComponent } from "vue";
|
|
3
|
-
import type {
|
|
3
|
+
import type { AcTableRow } from "../../types/table";
|
|
4
4
|
interface Props {
|
|
5
5
|
title?: string;
|
|
6
6
|
modifierClasses?: string;
|
|
7
|
-
|
|
7
|
+
rowData?: AcTableRow;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
withDefaults(defineProps<Props>(), {
|
|
11
11
|
title: "no-title",
|
|
12
12
|
modifierClasses: "",
|
|
13
|
-
|
|
13
|
+
rowData: () => ({ cells: [] }),
|
|
14
14
|
});
|
|
15
15
|
|
|
16
16
|
const OptionDots = defineAsyncComponent(
|
|
@@ -19,12 +19,7 @@ const OptionDots = defineAsyncComponent(
|
|
|
19
19
|
</script>
|
|
20
20
|
|
|
21
21
|
<template>
|
|
22
|
-
<div
|
|
23
|
-
class="info-card"
|
|
24
|
-
:class="modifierClasses"
|
|
25
|
-
v-for="(rowData, idx) in data.rows"
|
|
26
|
-
:key="idx"
|
|
27
|
-
>
|
|
22
|
+
<div class="info-card" :class="modifierClasses">
|
|
28
23
|
<div class="header">
|
|
29
24
|
<div class="logo">
|
|
30
25
|
<img :src="rowData.cells[0].icon" alt="icon" />
|
|
@@ -1,23 +1,85 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
interface Props {
|
|
3
3
|
title?: string;
|
|
4
|
+
subTitle?: string;
|
|
5
|
+
logo?: string;
|
|
4
6
|
}
|
|
5
7
|
|
|
6
8
|
withDefaults(defineProps<Props>(), {
|
|
7
9
|
title: "no title",
|
|
10
|
+
subTitle: "",
|
|
11
|
+
logo: "https://bb-developer-v1.web.app/_nuxt/img/azure-logo.4fa9281.svg",
|
|
8
12
|
});
|
|
9
13
|
</script>
|
|
10
14
|
<template>
|
|
11
|
-
|
|
15
|
+
<!-- use "is-selected" for select item -->
|
|
16
|
+
<a class="ac-single-card has-text-centered">
|
|
12
17
|
<div class="ac-card-logo">
|
|
13
18
|
<div class="card-status"></div>
|
|
14
|
-
<img
|
|
15
|
-
src="https://bb-developer-v1.web.app/_nuxt/img/azure-logo.4fa9281.svg"
|
|
16
|
-
alt="azure-logo"
|
|
17
|
-
/>
|
|
19
|
+
<img :src="logo" alt="vendor logo" />
|
|
18
20
|
</div>
|
|
19
21
|
<div class="ac-card-name">
|
|
20
22
|
<p>{{ title }}</p>
|
|
23
|
+
<p class="has-text-weight-normal mt-8" v-if="subTitle">{{ subTitle }}</p>
|
|
21
24
|
</div>
|
|
22
25
|
</a>
|
|
23
26
|
</template>
|
|
27
|
+
|
|
28
|
+
<style lang="scss" scoped>
|
|
29
|
+
.ac-single-card {
|
|
30
|
+
border: 1px solid $primary-90;
|
|
31
|
+
transition: 0.3s ease-in-out;
|
|
32
|
+
|
|
33
|
+
display: flex;
|
|
34
|
+
flex-direction: column;
|
|
35
|
+
justify-content: space-between;
|
|
36
|
+
background-color: $primary-97;
|
|
37
|
+
min-width: 220px;
|
|
38
|
+
padding: 30px 20px 20px;
|
|
39
|
+
cursor: pointer;
|
|
40
|
+
|
|
41
|
+
.ac-card-name {
|
|
42
|
+
p {
|
|
43
|
+
font-size: 13px;
|
|
44
|
+
color: $primary-10;
|
|
45
|
+
line-height: 1;
|
|
46
|
+
font-weight: 500;
|
|
47
|
+
|
|
48
|
+
&.free {
|
|
49
|
+
color: $primary;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
.ac-card-logo {
|
|
54
|
+
width: 70px;
|
|
55
|
+
height: 70px;
|
|
56
|
+
border: 1px solid $primary-90;
|
|
57
|
+
background-color: #fff;
|
|
58
|
+
border-radius: 50%;
|
|
59
|
+
padding: 16px;
|
|
60
|
+
margin-inline: auto;
|
|
61
|
+
margin-bottom: 20px;
|
|
62
|
+
display: flex;
|
|
63
|
+
align-items: center;
|
|
64
|
+
|
|
65
|
+
img {
|
|
66
|
+
width: 100%;
|
|
67
|
+
height: auto;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
&.is-selected {
|
|
71
|
+
border: 1px solid $primary !important;
|
|
72
|
+
}
|
|
73
|
+
&:hover {
|
|
74
|
+
border: 1px solid $primary;
|
|
75
|
+
|
|
76
|
+
.ac-card-title {
|
|
77
|
+
h4 {
|
|
78
|
+
a {
|
|
79
|
+
color: $primary;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
</style>
|
|
@@ -19,7 +19,7 @@ interface Props {
|
|
|
19
19
|
removeBorderBottom?: boolean;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
withDefaults(defineProps<Props>(), {
|
|
22
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
23
23
|
removeTableHeaderPadding: false,
|
|
24
24
|
tableTitle: "Table",
|
|
25
25
|
tableSubTitle: "",
|
|
@@ -28,6 +28,7 @@ withDefaults(defineProps<Props>(), {
|
|
|
28
28
|
removeBorderBottom: false,
|
|
29
29
|
});
|
|
30
30
|
|
|
31
|
+
const acInuptId = props.tableTitle.trim()?.replace(/ /g, "-")?.toLowerCase();
|
|
31
32
|
const searchText = ref("");
|
|
32
33
|
|
|
33
34
|
const updateSearchText = (text: string) => {
|
|
@@ -50,7 +51,11 @@ const updateSearchText = (text: string) => {
|
|
|
50
51
|
</template>
|
|
51
52
|
<slot name="content-left-controls" />
|
|
52
53
|
<header-item>
|
|
53
|
-
<search-bar
|
|
54
|
+
<search-bar
|
|
55
|
+
v-if="searchable"
|
|
56
|
+
@search="updateSearchText"
|
|
57
|
+
:id="acInuptId"
|
|
58
|
+
/>
|
|
54
59
|
</header-item>
|
|
55
60
|
<slot name="content-right-controls" />
|
|
56
61
|
</content-header>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { defineAsyncComponent, ref, watch
|
|
2
|
+
import { computed, defineAsyncComponent, ref, watch } from "vue";
|
|
3
3
|
import type { PreviewYamlType } from "../../types/previewYaml";
|
|
4
4
|
|
|
5
5
|
interface Props {
|
|
@@ -122,7 +122,7 @@ watch(
|
|
|
122
122
|
</script>
|
|
123
123
|
|
|
124
124
|
<template>
|
|
125
|
-
<div class="ac-preview
|
|
125
|
+
<div class="ac-preview">
|
|
126
126
|
<div class="ac-preview-inner">
|
|
127
127
|
<!-- preview body start -->
|
|
128
128
|
<div
|
|
@@ -181,3 +181,196 @@ watch(
|
|
|
181
181
|
</div>
|
|
182
182
|
</div>
|
|
183
183
|
</template>
|
|
184
|
+
<style lang="scss" scoped>
|
|
185
|
+
// .preview-icon {
|
|
186
|
+
// width: 60px;
|
|
187
|
+
// height: 60px;
|
|
188
|
+
// background-color: rgba(25, 113, 189, 0.4);
|
|
189
|
+
// box-shadow: 0px 2px 20px rgba(0, 0, 0, 0.16);
|
|
190
|
+
// border-radius: 4px 0px 0px 4px;
|
|
191
|
+
// position: fixed;
|
|
192
|
+
// right: 0;
|
|
193
|
+
// top: 400px;
|
|
194
|
+
// border: none;
|
|
195
|
+
// cursor: pointer;
|
|
196
|
+
// color: $white-100;
|
|
197
|
+
// z-index: 9999;
|
|
198
|
+
// transition: 0.3s ease-in-out;
|
|
199
|
+
|
|
200
|
+
// img {
|
|
201
|
+
// margin-bottom: 4px;
|
|
202
|
+
// }
|
|
203
|
+
|
|
204
|
+
// &:hover {
|
|
205
|
+
// background-color: $primary;
|
|
206
|
+
// }
|
|
207
|
+
// }
|
|
208
|
+
|
|
209
|
+
.ac-preview {
|
|
210
|
+
padding-inline: 20px;
|
|
211
|
+
// position: fixed;
|
|
212
|
+
// width: calc(100% - 90px);
|
|
213
|
+
// height: 100%;
|
|
214
|
+
// top: 50px;
|
|
215
|
+
// right: -100%;
|
|
216
|
+
// z-index: 99999;
|
|
217
|
+
// transition: 0.3s;
|
|
218
|
+
|
|
219
|
+
// &.is-active {
|
|
220
|
+
// right: 0;
|
|
221
|
+
|
|
222
|
+
// &.is-not-fixed {
|
|
223
|
+
// width: 100%;
|
|
224
|
+
|
|
225
|
+
// .ac-preview-body {
|
|
226
|
+
// padding: 20px 0 0;
|
|
227
|
+
// }
|
|
228
|
+
// }
|
|
229
|
+
// }
|
|
230
|
+
|
|
231
|
+
.ac-preview-inner {
|
|
232
|
+
// background-color: $white-100;
|
|
233
|
+
// border-radius: 10px 0px 0px 10px;
|
|
234
|
+
// height: calc(100% - 90px);
|
|
235
|
+
|
|
236
|
+
&:after {
|
|
237
|
+
// position: absolute;
|
|
238
|
+
// content: "";
|
|
239
|
+
// left: -90px;
|
|
240
|
+
// top: -50px;
|
|
241
|
+
// width: calc(100% + 90px);
|
|
242
|
+
// height: 100%;
|
|
243
|
+
// background-color: $white-100;
|
|
244
|
+
|
|
245
|
+
// remove opacity for fix cluster ui project
|
|
246
|
+
// opacity: 0.8;
|
|
247
|
+
// z-index: -1;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// .ac-preview-header {
|
|
251
|
+
// padding: 20px;
|
|
252
|
+
// border-bottom: 1px solid $black-60;
|
|
253
|
+
|
|
254
|
+
// h5 {
|
|
255
|
+
// font-style: normal;
|
|
256
|
+
// font-weight: 500;
|
|
257
|
+
// font-size: 24px;
|
|
258
|
+
// line-height: 28px;
|
|
259
|
+
|
|
260
|
+
// color: $primary-10;
|
|
261
|
+
// }
|
|
262
|
+
|
|
263
|
+
// .ms-back-button {
|
|
264
|
+
// .is-transparent {
|
|
265
|
+
// font-style: normal;
|
|
266
|
+
// font-weight: normal;
|
|
267
|
+
// font-size: 16px;
|
|
268
|
+
// line-height: 100%;
|
|
269
|
+
// color: $black-80;
|
|
270
|
+
// cursor: pointer;
|
|
271
|
+
|
|
272
|
+
// i.fa {
|
|
273
|
+
// color: $black-80;
|
|
274
|
+
// padding-left: 5px;
|
|
275
|
+
// }
|
|
276
|
+
// }
|
|
277
|
+
// }
|
|
278
|
+
// }
|
|
279
|
+
|
|
280
|
+
.ac-preview-body {
|
|
281
|
+
display: flex;
|
|
282
|
+
// margin-top: 10px;
|
|
283
|
+
// padding: 20px;
|
|
284
|
+
|
|
285
|
+
.left-content {
|
|
286
|
+
width: 250px;
|
|
287
|
+
margin-right: 15px;
|
|
288
|
+
|
|
289
|
+
.ac-files {
|
|
290
|
+
ul {
|
|
291
|
+
li {
|
|
292
|
+
&.is-active {
|
|
293
|
+
a {
|
|
294
|
+
background-color: $primary;
|
|
295
|
+
border-radius: 5px;
|
|
296
|
+
color: $white-100;
|
|
297
|
+
padding: 10px 10px;
|
|
298
|
+
margin-left: -10px;
|
|
299
|
+
border-top: 1px solid transparent;
|
|
300
|
+
|
|
301
|
+
span {
|
|
302
|
+
img {
|
|
303
|
+
filter: brightness(100);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
&:last-child {
|
|
309
|
+
&.is-active {
|
|
310
|
+
a {
|
|
311
|
+
border-top: 1px solid transparent;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
a {
|
|
318
|
+
padding: 10px 0px;
|
|
319
|
+
display: flex;
|
|
320
|
+
font-style: normal;
|
|
321
|
+
font-weight: 500;
|
|
322
|
+
font-size: 14px;
|
|
323
|
+
line-height: 100%;
|
|
324
|
+
color: $primary-10;
|
|
325
|
+
border-top: 1px solid $primary-90;
|
|
326
|
+
|
|
327
|
+
span {
|
|
328
|
+
img {
|
|
329
|
+
margin-right: 5px;
|
|
330
|
+
height: 13px;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
&:last-child {
|
|
336
|
+
a {
|
|
337
|
+
border-bottom: 1px solid $primary-90;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
.right-content {
|
|
346
|
+
width: calc(100% - 265px);
|
|
347
|
+
|
|
348
|
+
.code-preview {
|
|
349
|
+
background-color: $primary-90;
|
|
350
|
+
border-radius: 4px;
|
|
351
|
+
display: flex;
|
|
352
|
+
|
|
353
|
+
.code-left {
|
|
354
|
+
width: 50%;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
.code-right {
|
|
358
|
+
width: 50%;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
.left-content {
|
|
366
|
+
.ac-files {
|
|
367
|
+
max-height: 350px;
|
|
368
|
+
overflow-y: auto;
|
|
369
|
+
padding: 10px;
|
|
370
|
+
span {
|
|
371
|
+
width: 20px;
|
|
372
|
+
white-space: nowrap;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
</style>
|
|
@@ -7,16 +7,18 @@ const HeaderItems = defineAsyncComponent(() => import("./HeaderItems.vue"));
|
|
|
7
7
|
interface Props {
|
|
8
8
|
title?: string;
|
|
9
9
|
isContainer?: boolean;
|
|
10
|
+
topValue?: string;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
withDefaults(defineProps<Props>(), {
|
|
13
14
|
title: "No Title",
|
|
14
15
|
isContainer: false,
|
|
16
|
+
topValue: "86px",
|
|
15
17
|
});
|
|
16
18
|
</script>
|
|
17
19
|
|
|
18
20
|
<template>
|
|
19
|
-
<div class="inner-header">
|
|
21
|
+
<div class="inner-header" :style="{ top: topValue }">
|
|
20
22
|
<div
|
|
21
23
|
class="is-flex is-justify-content-space-between"
|
|
22
24
|
:class="{ container: isContainer }"
|
|
@@ -41,7 +43,6 @@ withDefaults(defineProps<Props>(), {
|
|
|
41
43
|
padding: 6px 20px;
|
|
42
44
|
border-bottom: 1px solid $primary-90;
|
|
43
45
|
position: sticky;
|
|
44
|
-
top: 86px;
|
|
45
46
|
background: $white-100;
|
|
46
47
|
z-index: 99;
|
|
47
48
|
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { ContentLoader } from "vue-content-loader";
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<template>
|
|
6
|
+
<div>
|
|
7
|
+
<svg
|
|
8
|
+
role="img"
|
|
9
|
+
width="230"
|
|
10
|
+
height="115"
|
|
11
|
+
aria-labelledby="loading-aria"
|
|
12
|
+
viewBox="0 0 230 115"
|
|
13
|
+
preserveAspectRatio="none"
|
|
14
|
+
>
|
|
15
|
+
<title id="loading-aria">Loading...</title>
|
|
16
|
+
<rect
|
|
17
|
+
x="0"
|
|
18
|
+
y="0"
|
|
19
|
+
width="100%"
|
|
20
|
+
height="100%"
|
|
21
|
+
clip-path="url(#clip-path)"
|
|
22
|
+
style="fill: url('#fill')"
|
|
23
|
+
></rect>
|
|
24
|
+
<defs>
|
|
25
|
+
<clipPath id="clip-path">
|
|
26
|
+
<rect x="150" y="40" rx="3" ry="3" width="60" height="50" />
|
|
27
|
+
<rect x="10" y="70" rx="3" ry="3" width="120" height="11" />
|
|
28
|
+
<rect x="10" y="100" rx="3" ry="3" width="120" height="11" />
|
|
29
|
+
<rect x="150" y="100" rx="3" ry="3" width="60" height="11" />
|
|
30
|
+
<rect x="10" y="1" rx="3" ry="3" width="200" height="22" />
|
|
31
|
+
<rect x="10" y="40" rx="3" ry="3" width="120" height="11" />
|
|
32
|
+
</clipPath>
|
|
33
|
+
<linearGradient id="fill">
|
|
34
|
+
<stop offset="0.599964" stop-color="#cfcfcf" stop-opacity="1">
|
|
35
|
+
<animate
|
|
36
|
+
attributeName="offset"
|
|
37
|
+
values="-2; -2; 1"
|
|
38
|
+
keyTimes="0; 0.25; 1"
|
|
39
|
+
dur="2s"
|
|
40
|
+
repeatCount="indefinite"
|
|
41
|
+
></animate>
|
|
42
|
+
</stop>
|
|
43
|
+
<stop offset="1.59996" stop-color="#ecebeb" stop-opacity="1">
|
|
44
|
+
<animate
|
|
45
|
+
attributeName="offset"
|
|
46
|
+
values="-1; -1; 2"
|
|
47
|
+
keyTimes="0; 0.25; 1"
|
|
48
|
+
dur="2s"
|
|
49
|
+
repeatCount="indefinite"
|
|
50
|
+
></animate>
|
|
51
|
+
</stop>
|
|
52
|
+
<stop offset="2.59996" stop-color="#cfcfcf" stop-opacity="1">
|
|
53
|
+
<animate
|
|
54
|
+
attributeName="offset"
|
|
55
|
+
values="0; 0; 3"
|
|
56
|
+
keyTimes="0; 0.25; 1"
|
|
57
|
+
dur="2s"
|
|
58
|
+
repeatCount="indefinite"
|
|
59
|
+
></animate>
|
|
60
|
+
</stop>
|
|
61
|
+
</linearGradient>
|
|
62
|
+
</defs>
|
|
63
|
+
</svg>
|
|
64
|
+
</div>
|
|
65
|
+
</template>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { toRefs, computed, defineAsyncComponent } from "vue";
|
|
3
2
|
import DOMPurify from "dompurify";
|
|
3
|
+
import { computed, defineAsyncComponent, toRefs } from "vue";
|
|
4
4
|
|
|
5
5
|
const AcButton = defineAsyncComponent(() => import("../button/Button.vue"));
|
|
6
6
|
|
|
@@ -28,7 +28,7 @@ const { notificationType, content, hideIcon, actionButton } = toRefs(props);
|
|
|
28
28
|
const iconClass = computed(() => {
|
|
29
29
|
if (notificationType.value === "success") return "fa-check-circle";
|
|
30
30
|
else if (notificationType.value === "info") return "fa-info-circle";
|
|
31
|
-
else if (notificationType.value === "
|
|
31
|
+
else if (notificationType.value === "danger") return "fa-times-circle";
|
|
32
32
|
else return "fa-info-circle";
|
|
33
33
|
});
|
|
34
34
|
|
|
@@ -39,8 +39,8 @@ const getSanitizedHtml = (content: string) => {
|
|
|
39
39
|
|
|
40
40
|
<template>
|
|
41
41
|
<!-- alert-message area start -->
|
|
42
|
-
<!-- plsease, use this class name ('.is-info' 'is-success', 'is-
|
|
43
|
-
<div :class="`
|
|
42
|
+
<!-- plsease, use this class name ('.is-info' 'is-success', 'is-danger', 'is-warning') -->
|
|
43
|
+
<div :class="`notification is-${notificationType} mb-15`">
|
|
44
44
|
<p>
|
|
45
45
|
<i v-if="!hideIcon" :class="`fa ${iconClass} mr-5`"></i
|
|
46
46
|
><span v-html="getSanitizedHtml(content)"></span>
|
|
@@ -7,6 +7,14 @@ const AcSingleInput = defineAsyncComponent(
|
|
|
7
7
|
|
|
8
8
|
const AcInput = defineAsyncComponent(() => import("../form-fields/Input.vue"));
|
|
9
9
|
|
|
10
|
+
interface Props {
|
|
11
|
+
acInputId?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
withDefaults(defineProps<Props>(), {
|
|
15
|
+
acInputId: "search",
|
|
16
|
+
});
|
|
17
|
+
|
|
10
18
|
const emit = defineEmits(["search"]);
|
|
11
19
|
|
|
12
20
|
const searchText = ref("");
|
|
@@ -19,7 +27,7 @@ watch(searchText, (n) => {
|
|
|
19
27
|
<template>
|
|
20
28
|
<ac-single-input modifier-classes="is-extra-small width-auto">
|
|
21
29
|
<template #button>
|
|
22
|
-
<label class="ac-search-button" for="
|
|
30
|
+
<label class="ac-search-button" :for="acInputId">
|
|
23
31
|
<svg
|
|
24
32
|
xmlns="http://www.w3.org/2000/svg"
|
|
25
33
|
viewBox="0 0 20 20"
|
|
@@ -39,7 +47,7 @@ watch(searchText, (n) => {
|
|
|
39
47
|
placeholder="Search"
|
|
40
48
|
type="search"
|
|
41
49
|
class="ac-search"
|
|
42
|
-
id="
|
|
50
|
+
:id="acInputId"
|
|
43
51
|
v-model="searchText"
|
|
44
52
|
/>
|
|
45
53
|
</ac-single-input>
|
|
@@ -120,7 +120,7 @@ watch(
|
|
|
120
120
|
</template>
|
|
121
121
|
<style lang="scss">
|
|
122
122
|
.multiselect {
|
|
123
|
-
margin-top: 3px;
|
|
123
|
+
// margin-top: 3px;
|
|
124
124
|
// display: flex;
|
|
125
125
|
// align-items: center;
|
|
126
126
|
max-width: 350px;
|
|
@@ -401,7 +401,7 @@ watch(
|
|
|
401
401
|
font-size: 13px !important;
|
|
402
402
|
font-weight: 500;
|
|
403
403
|
line-height: 1.5;
|
|
404
|
-
padding-bottom: 4px;
|
|
404
|
+
// padding-bottom: 4px;
|
|
405
405
|
|
|
406
406
|
&::placeholder {
|
|
407
407
|
font-weight: 500;
|
|
@@ -469,7 +469,7 @@ watch(
|
|
|
469
469
|
font-size: 13px !important;
|
|
470
470
|
font-weight: 500;
|
|
471
471
|
line-height: 1.5;
|
|
472
|
-
padding-bottom: 4px;
|
|
472
|
+
// padding-bottom: 4px;
|
|
473
473
|
|
|
474
474
|
&::placeholder {
|
|
475
475
|
font-weight: 500;
|
|
@@ -505,7 +505,7 @@ watch(
|
|
|
505
505
|
}
|
|
506
506
|
}
|
|
507
507
|
|
|
508
|
-
.is-
|
|
508
|
+
.is-danger {
|
|
509
509
|
font-size: 12px;
|
|
510
510
|
line-height: 22px;
|
|
511
511
|
color: $danger;
|
|
@@ -1,22 +1,17 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
interface Props {
|
|
3
3
|
type: string;
|
|
4
|
-
isCollapsible: boolean;
|
|
5
4
|
}
|
|
6
5
|
|
|
7
6
|
withDefaults(defineProps<Props>(), {
|
|
8
7
|
type: "cluster-main",
|
|
9
|
-
isCollapsible: false,
|
|
10
8
|
});
|
|
11
9
|
</script>
|
|
12
10
|
|
|
13
11
|
<template>
|
|
14
12
|
<div class="ac-system-left-sidebar">
|
|
15
13
|
<!-- is-collapsed -->
|
|
16
|
-
<div
|
|
17
|
-
class="ac-left-sidebar-wrapper is-collapsed"
|
|
18
|
-
:class="{ 'style-2': isCollapsible }"
|
|
19
|
-
>
|
|
14
|
+
<div class="ac-left-sidebar-wrapper">
|
|
20
15
|
<div class="ac-left-sidebar-inner">
|
|
21
16
|
<aside class="ac-left-sidebar">
|
|
22
17
|
<!-- sidebar header start -->
|
|
@@ -107,7 +102,7 @@ withDefaults(defineProps<Props>(), {
|
|
|
107
102
|
top: 0;
|
|
108
103
|
width: calc(100% - 20px);
|
|
109
104
|
height: 100%;
|
|
110
|
-
background:
|
|
105
|
+
background: $primary;
|
|
111
106
|
border-radius: 4px;
|
|
112
107
|
z-index: -1;
|
|
113
108
|
transition: 0.3s ease-in-out;
|
|
@@ -144,7 +139,7 @@ withDefaults(defineProps<Props>(), {
|
|
|
144
139
|
|
|
145
140
|
&:after {
|
|
146
141
|
color: $primary;
|
|
147
|
-
opacity: 0.
|
|
142
|
+
opacity: 0.2;
|
|
148
143
|
visibility: visible;
|
|
149
144
|
}
|
|
150
145
|
|