@awes-io/ui 2.143.0 → 2.144.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.
- package/assets/css/components/action-card.css +1 -0
- package/assets/css/components/action-icon.css +2 -2
- package/assets/css/components/alert.css +28 -22
- package/assets/css/components/animation.css +14 -0
- package/assets/css/components/badge.css +1 -0
- package/assets/css/components/banner-text.css +15 -4
- package/assets/css/components/card.css +0 -1
- package/assets/css/components/content-placeholder.css +4 -3
- package/assets/css/components/dropdown.css +20 -7
- package/assets/css/components/icon-menu-item.css +12 -7
- package/assets/css/components/mobile-menu-nav.css +8 -4
- package/assets/css/components/text-field.css +4 -0
- package/components/1_atoms/AwActionIcon.vue +11 -2
- package/components/1_atoms/AwFlow.vue +26 -11
- package/components/1_atoms/AwGrid.vue +11 -3
- package/components/1_atoms/AwIcon/AwIcon.vue +5 -3
- package/components/1_atoms/AwIcon/AwIconSystemMono.vue +3 -2
- package/components/1_atoms/AwInput.vue +2 -2
- package/components/1_atoms/AwList.vue +3 -1
- package/components/1_atoms/AwRadio.vue +1 -1
- package/components/1_atoms/AwSlider.vue +15 -1
- package/components/1_atoms/AwTag.vue +6 -1
- package/components/2_molecules/AwAlert.vue +63 -42
- package/components/2_molecules/AwBadge.vue +1 -1
- package/components/2_molecules/AwBannerText.vue +8 -2
- package/components/2_molecules/AwDescriptionInput.vue +19 -1
- package/components/3_organisms/AwBottomBar.vue +22 -4
- package/components/3_organisms/AwSubnav.vue +11 -1
- package/components/3_organisms/AwTable/AwTableBuilder.vue +8 -0
- package/components/3_organisms/AwTable/_AwTableCellDropdown.vue +6 -1
- package/components/3_organisms/AwTable/_AwTableRow.vue +2 -1
- package/components/4_pages/AwPage.vue +1 -0
- package/components/5_layouts/_AwMenuItemIcon.vue +9 -2
- package/components/5_layouts/_AwMobileMenuItem.vue +5 -3
- package/components/_config.js +26 -1
- package/docs/components/atoms/aw-accordion-fold.md +55 -17
- package/docs/components/atoms/aw-action-card-body.md +37 -5
- package/docs/components/atoms/aw-action-card.md +47 -11
- package/docs/components/atoms/aw-action-icon.md +50 -12
- package/docs/components/atoms/aw-card.md +35 -10
- package/docs/components/atoms/aw-checkbox.md +176 -0
- package/docs/components/atoms/aw-content-placeholder.md +33 -2
- package/docs/components/atoms/aw-dock.md +20 -14
- package/docs/components/atoms/aw-dropdown.md +72 -22
- package/docs/components/atoms/aw-flow.md +71 -23
- package/docs/components/atoms/aw-grid.md +30 -12
- package/docs/components/atoms/aw-icon-system-color.md +1 -0
- package/docs/components/atoms/aw-icon-system-mono.md +1 -0
- package/docs/components/atoms/aw-icon.md +3 -3
- package/docs/components/atoms/aw-info.md +38 -0
- package/docs/components/atoms/aw-input.md +94 -2
- package/docs/components/atoms/aw-label.md +62 -9
- package/docs/components/atoms/aw-link.md +61 -9
- package/docs/components/atoms/aw-list.md +68 -4
- package/docs/components/atoms/aw-progress.md +52 -3
- package/docs/components/atoms/aw-radio.md +73 -0
- package/docs/components/atoms/aw-select-native.md +128 -0
- package/docs/components/atoms/aw-slider.md +114 -7
- package/docs/components/atoms/aw-switcher.md +77 -0
- package/docs/components/atoms/aw-tag.md +67 -3
- package/docs/components/atoms/aw-toggler.md +22 -1
- package/docs/components/molecules/aw-action-button.md +58 -11
- package/docs/components/molecules/aw-alert.md +122 -27
- package/docs/components/molecules/aw-badge.md +31 -10
- package/docs/components/molecules/aw-banner-text.md +84 -18
- package/docs/components/molecules/aw-button-nav.md +65 -0
- package/docs/components/molecules/aw-button.md +76 -6
- package/docs/components/molecules/aw-description-input.md +63 -6
- package/docs/components/molecules/aw-empty-container.md +172 -23
- package/docs/components/molecules/aw-island.md +282 -10
- package/docs/components/organisms/aw-filter-select.md +14 -0
- package/docs/components/pages/aw-page-single.md +47 -0
- package/docs/guides/page-patterns/detail-pages.md +89 -26
- package/docs/guides/page-patterns/list-pages.md +158 -10
- package/docs/reference/colors.md +232 -0
- package/docs/reference/icons.md +163 -0
- package/docs/reference/troubleshooting.md +19 -0
- package/package.json +2 -2
- package/store/awesIo.js +11 -0
- package/CHANGELOG.md +0 -4544
- package/dist/css/aw-icons.css +0 -26
- package/dist/fonts/aw-icons.svg +0 -18
- package/dist/fonts/aw-icons.ttf +0 -0
- package/dist/fonts/aw-icons.woff +0 -0
- package/dist/fonts/aw-icons.woff2 +0 -0
- package/nuxt/icons.css +0 -26
|
@@ -1,57 +1,72 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
<span v-if="
|
|
26
|
-
|
|
2
|
+
<div class="aw-alert" :style="styleVariables">
|
|
3
|
+
<div>
|
|
4
|
+
<AwDescription tag="div" class="aw-alert__title">
|
|
5
|
+
<span v-if="icon || $scopedSlots.icon" class="aw-alert__icon">
|
|
6
|
+
<slot name="icon">
|
|
7
|
+
<AwIcon
|
|
8
|
+
v-if="icon"
|
|
9
|
+
:name="icon"
|
|
10
|
+
:color="iconColor"
|
|
11
|
+
size="16"
|
|
12
|
+
/>
|
|
13
|
+
</slot>
|
|
14
|
+
</span>
|
|
15
|
+
|
|
16
|
+
<span class="aw-alert__title-text">
|
|
17
|
+
<slot name="title">{{ title }}</slot>
|
|
18
|
+
|
|
19
|
+
<slot name="description">
|
|
20
|
+
<span v-if="description" class="font-normal block mt-1">
|
|
21
|
+
{{ description }}
|
|
22
|
+
</span>
|
|
23
|
+
</slot>
|
|
24
|
+
|
|
25
|
+
<span v-if="$scopedSlots.default" class="aw-alert__buttons">
|
|
26
|
+
<slot />
|
|
27
27
|
</span>
|
|
28
|
-
</
|
|
29
|
-
</
|
|
30
|
-
</
|
|
28
|
+
</span>
|
|
29
|
+
</AwDescription>
|
|
30
|
+
</div>
|
|
31
31
|
|
|
32
|
-
<div v-if="$scopedSlots.
|
|
33
|
-
<slot />
|
|
32
|
+
<div v-if="$scopedSlots.close" class="aw-alert__close">
|
|
33
|
+
<slot name="close" />
|
|
34
34
|
</div>
|
|
35
35
|
</div>
|
|
36
36
|
</template>
|
|
37
37
|
|
|
38
38
|
<script>
|
|
39
|
-
import { toOnColor } from '@AwUtils/styles'
|
|
39
|
+
import { toColor, toOnColor } from '@AwUtils/styles'
|
|
40
|
+
import { pathOr } from 'rambdax'
|
|
41
|
+
import { AwAlert as _config } from '@AwConfig'
|
|
42
|
+
import { conf } from '@AwUtils/component'
|
|
40
43
|
|
|
41
44
|
export default {
|
|
42
45
|
name: 'AwAlert',
|
|
43
46
|
|
|
47
|
+
_config,
|
|
48
|
+
|
|
44
49
|
props: {
|
|
45
50
|
icon: {
|
|
46
51
|
type: String,
|
|
47
52
|
default: ''
|
|
48
53
|
},
|
|
49
54
|
|
|
50
|
-
|
|
55
|
+
config: {
|
|
51
56
|
type: String,
|
|
52
57
|
default: 'default'
|
|
53
58
|
},
|
|
54
59
|
|
|
60
|
+
color: {
|
|
61
|
+
type: String,
|
|
62
|
+
default: ''
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
onColor: {
|
|
66
|
+
type: String,
|
|
67
|
+
default: ''
|
|
68
|
+
},
|
|
69
|
+
|
|
55
70
|
iconColor: {
|
|
56
71
|
type: String,
|
|
57
72
|
default: ''
|
|
@@ -69,19 +84,25 @@ export default {
|
|
|
69
84
|
},
|
|
70
85
|
|
|
71
86
|
computed: {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
},
|
|
87
|
+
styleVariables() {
|
|
88
|
+
const CONFIG = conf(this, 'configColors')
|
|
75
89
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
90
|
+
let color = pathOr('', `${this.config}.color`, CONFIG)
|
|
91
|
+
let onColor = pathOr('', `${this.config}.onColor`, CONFIG)
|
|
92
|
+
|
|
93
|
+
if (this.color) {
|
|
94
|
+
color = this.color
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (this.onColor) {
|
|
98
|
+
onColor = this.onColor
|
|
99
|
+
}
|
|
79
100
|
|
|
80
|
-
styleVariables() {
|
|
81
101
|
return {
|
|
82
|
-
'--aw-alert-color':
|
|
83
|
-
|
|
84
|
-
|
|
102
|
+
'--aw-alert-color': toColor(color),
|
|
103
|
+
'--aw-alert-on-color': onColor
|
|
104
|
+
? toOnColor(onColor)
|
|
105
|
+
: toOnColor(color)
|
|
85
106
|
}
|
|
86
107
|
}
|
|
87
108
|
}
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
<div class="aw-banner-text">
|
|
3
3
|
<div
|
|
4
4
|
class="aw-banner-text__icon"
|
|
5
|
-
:class="{
|
|
5
|
+
:class="{
|
|
6
|
+
'aw-banner-text__icon--rounded': rounded,
|
|
7
|
+
'aw-banner-text__icon--square': !rounded
|
|
8
|
+
}"
|
|
6
9
|
:style="{ backgroundImage: src ? `url(${src})` : null }"
|
|
7
10
|
>
|
|
8
11
|
<slot name="icon">
|
|
@@ -19,6 +22,7 @@
|
|
|
19
22
|
<AwSubHeadline class="aw-banner-text__title">
|
|
20
23
|
<slot name="title">{{ title }}</slot>
|
|
21
24
|
<AwIconSystemMono
|
|
25
|
+
v-if="titleArrow"
|
|
22
26
|
name="angle"
|
|
23
27
|
rotate="180"
|
|
24
28
|
class="aw-banner-text__title-arrow"
|
|
@@ -61,7 +65,9 @@ export default {
|
|
|
61
65
|
default: ''
|
|
62
66
|
},
|
|
63
67
|
|
|
64
|
-
rounded:
|
|
68
|
+
rounded: Boolean,
|
|
69
|
+
|
|
70
|
+
titleArrow: {
|
|
65
71
|
type: Boolean,
|
|
66
72
|
default: true
|
|
67
73
|
}
|
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
3
|
<slot />
|
|
4
|
-
<AwDescription
|
|
4
|
+
<AwDescription
|
|
5
|
+
v-if="text && !$scopedSlots.text"
|
|
6
|
+
key="default"
|
|
7
|
+
class="mt-2 inline-block"
|
|
8
|
+
v-html="sanitize(text)"
|
|
9
|
+
/>
|
|
10
|
+
<AwDescription
|
|
11
|
+
v-else-if="$scopedSlots.text"
|
|
12
|
+
key="textslot"
|
|
13
|
+
class="mt-2 inline-block"
|
|
14
|
+
>
|
|
15
|
+
<slot name="text"></slot>
|
|
16
|
+
</AwDescription>
|
|
5
17
|
</div>
|
|
6
18
|
</template>
|
|
7
19
|
|
|
8
20
|
<script>
|
|
21
|
+
import { sanitize } from '@AwUtils/string'
|
|
22
|
+
|
|
9
23
|
export default {
|
|
10
24
|
name: 'AwDescriptionInput',
|
|
11
25
|
|
|
@@ -14,6 +28,10 @@ export default {
|
|
|
14
28
|
type: String,
|
|
15
29
|
default: ''
|
|
16
30
|
}
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
methods: {
|
|
34
|
+
sanitize
|
|
17
35
|
}
|
|
18
36
|
}
|
|
19
37
|
</script>
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
2
|
+
<div
|
|
3
|
+
v-if="showMenu"
|
|
4
|
+
class="aw-bottom-bar"
|
|
5
|
+
:style="itemMaxWidthVar"
|
|
6
|
+
@click="scrollToTopOnCurrent"
|
|
7
|
+
>
|
|
3
8
|
<slot name="bottom-bar-items">
|
|
4
9
|
<AwMenuItemIcon
|
|
5
10
|
v-for="(item, i) in items"
|
|
@@ -11,7 +16,13 @@
|
|
|
11
16
|
</slot>
|
|
12
17
|
|
|
13
18
|
<slot name="bottom-bar-toggler">
|
|
19
|
+
<Component
|
|
20
|
+
v-if="bottomBarMoreMenuItemComponent"
|
|
21
|
+
:is="bottomBarMoreMenuItemComponent.is"
|
|
22
|
+
/>
|
|
23
|
+
|
|
14
24
|
<AwMenuItemIcon
|
|
25
|
+
v-else
|
|
15
26
|
:text="$t('Menu')"
|
|
16
27
|
icon="menu-dots"
|
|
17
28
|
:size="$options.ICON_SIZE"
|
|
@@ -43,6 +54,7 @@
|
|
|
43
54
|
import { viewOr, lensProp, omit } from 'rambdax'
|
|
44
55
|
import { getPath } from '@AwUtils/router'
|
|
45
56
|
import AwMenuItemIcon from '@AwLayouts/_AwMenuItemIcon.vue'
|
|
57
|
+
import { mapGetters } from 'vuex'
|
|
46
58
|
|
|
47
59
|
export const VISIBLE_ITEMS_COUNT = 4
|
|
48
60
|
|
|
@@ -66,8 +78,10 @@ export default {
|
|
|
66
78
|
},
|
|
67
79
|
|
|
68
80
|
computed: {
|
|
81
|
+
...mapGetters('awesIo', ['bottomBarMoreMenuItemComponent']),
|
|
82
|
+
|
|
69
83
|
itemMaxWidthVar() {
|
|
70
|
-
return { '--item-width-percent':
|
|
84
|
+
return { '--item-width-percent': 100 / this.items.length + 1 + '%' }
|
|
71
85
|
},
|
|
72
86
|
|
|
73
87
|
actionButton() {
|
|
@@ -135,11 +149,15 @@ export default {
|
|
|
135
149
|
},
|
|
136
150
|
|
|
137
151
|
scrollToTopOnCurrent($event) {
|
|
138
|
-
const link = $event.target.matches('a')
|
|
152
|
+
const link = $event.target.matches('a')
|
|
153
|
+
? $event.target
|
|
154
|
+
: $event.target.closest('a')
|
|
139
155
|
|
|
140
156
|
if (!link) return
|
|
141
157
|
|
|
142
|
-
if (
|
|
158
|
+
if (
|
|
159
|
+
getPath(link.getAttribute('href')) === getPath(this.$route.path)
|
|
160
|
+
) {
|
|
143
161
|
window.scrollTo({ top: 0, behavior: 'smooth' })
|
|
144
162
|
}
|
|
145
163
|
}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<AwMobileMenuNav
|
|
2
|
+
<AwMobileMenuNav
|
|
3
|
+
:title="_title"
|
|
4
|
+
:items="_children"
|
|
5
|
+
:all-divides="!hideSeparator"
|
|
6
|
+
:badge="badge"
|
|
7
|
+
/>
|
|
3
8
|
</template>
|
|
4
9
|
|
|
5
10
|
<script>
|
|
@@ -24,6 +29,11 @@ export default {
|
|
|
24
29
|
default: null
|
|
25
30
|
},
|
|
26
31
|
|
|
32
|
+
badge: {
|
|
33
|
+
type: Object,
|
|
34
|
+
default: null
|
|
35
|
+
},
|
|
36
|
+
|
|
27
37
|
hideTitle: Boolean,
|
|
28
38
|
|
|
29
39
|
hideSeparator: Boolean
|
|
@@ -26,6 +26,14 @@
|
|
|
26
26
|
theme="card"
|
|
27
27
|
icon="awesio/search"
|
|
28
28
|
:title="$t('No results were found for your request')"
|
|
29
|
+
:cta-button="{
|
|
30
|
+
text: $route.query.search
|
|
31
|
+
? $t('Clear search')
|
|
32
|
+
: $t('Reset filters'),
|
|
33
|
+
href: { path: $route.path },
|
|
34
|
+
icon: 'awesio/delete',
|
|
35
|
+
theme: 'outline'
|
|
36
|
+
}"
|
|
29
37
|
class="mb-5"
|
|
30
38
|
/>
|
|
31
39
|
</slot>
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
:options="{ placement: 'bottom-end' }"
|
|
15
15
|
class="aw-table__aw-context-menu"
|
|
16
16
|
>
|
|
17
|
-
<slot :cell="props.rowData"></slot>
|
|
17
|
+
<slot :cell="props.rowData" :index="props.index"></slot>
|
|
18
18
|
</Component>
|
|
19
19
|
</td>
|
|
20
20
|
</template>
|
|
@@ -38,6 +38,11 @@ export default {
|
|
|
38
38
|
|
|
39
39
|
rowData: {
|
|
40
40
|
default: ''
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
index: {
|
|
44
|
+
type: Number,
|
|
45
|
+
required: true
|
|
41
46
|
}
|
|
42
47
|
}
|
|
43
48
|
}
|
|
@@ -13,7 +13,13 @@
|
|
|
13
13
|
class="aw-icon-menu-item__icon-block"
|
|
14
14
|
tabindex="-1"
|
|
15
15
|
v-tooltip:right="
|
|
16
|
-
tooltip
|
|
16
|
+
tooltip
|
|
17
|
+
? {
|
|
18
|
+
content: text,
|
|
19
|
+
offset: [0, 7],
|
|
20
|
+
class: 'aw-icon-menu-item-tooltip'
|
|
21
|
+
}
|
|
22
|
+
: null
|
|
17
23
|
"
|
|
18
24
|
>
|
|
19
25
|
<AwIcon
|
|
@@ -96,7 +102,8 @@ export default {
|
|
|
96
102
|
'bg-success',
|
|
97
103
|
'bg-warning',
|
|
98
104
|
'bg-error',
|
|
99
|
-
'bg-info'
|
|
105
|
+
'bg-info',
|
|
106
|
+
'bg-blue'
|
|
100
107
|
].includes('bg-' + badge.color)
|
|
101
108
|
: true
|
|
102
109
|
}
|
|
@@ -27,7 +27,11 @@
|
|
|
27
27
|
</span>
|
|
28
28
|
|
|
29
29
|
<span class="aw-mobile-menu-item__text" tabindex="-1">
|
|
30
|
-
<span
|
|
30
|
+
<span class="flex items-center gap-2">
|
|
31
|
+
<span v-html="text" />
|
|
32
|
+
|
|
33
|
+
<AwBadge v-if="badge" v-bind="badge" />
|
|
34
|
+
</span>
|
|
31
35
|
|
|
32
36
|
<span
|
|
33
37
|
v-if="description"
|
|
@@ -49,8 +53,6 @@
|
|
|
49
53
|
v-on="switcher.listeners"
|
|
50
54
|
/>
|
|
51
55
|
|
|
52
|
-
<AwBadge v-if="badge" v-bind="badge" />
|
|
53
|
-
|
|
54
56
|
<AwIconSystemMono
|
|
55
57
|
v-if="_linkExternal"
|
|
56
58
|
name="external"
|
package/components/_config.js
CHANGED
|
@@ -266,6 +266,30 @@ export const AwToggleShowAside = {
|
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
|
|
269
|
+
export const AwAlert = {
|
|
270
|
+
configColors: {
|
|
271
|
+
info: {
|
|
272
|
+
color: 'light-grey',
|
|
273
|
+
onColor: 'blue'
|
|
274
|
+
},
|
|
275
|
+
success: {
|
|
276
|
+
color: 'green'
|
|
277
|
+
},
|
|
278
|
+
warning: {
|
|
279
|
+
color: 'yellow'
|
|
280
|
+
},
|
|
281
|
+
error: {
|
|
282
|
+
color: 'red'
|
|
283
|
+
},
|
|
284
|
+
grey: {
|
|
285
|
+
color: 'light-grey'
|
|
286
|
+
},
|
|
287
|
+
default: {
|
|
288
|
+
color: 'light-grey'
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
269
293
|
export default {
|
|
270
294
|
AwAvatar,
|
|
271
295
|
AwBirthdayPicker,
|
|
@@ -290,5 +314,6 @@ export default {
|
|
|
290
314
|
AwTable,
|
|
291
315
|
AwTags,
|
|
292
316
|
AwTel,
|
|
293
|
-
AwToggleShowAside
|
|
317
|
+
AwToggleShowAside,
|
|
318
|
+
AwAlert
|
|
294
319
|
}
|
|
@@ -21,42 +21,80 @@ The `AwAccordionFold` component provides a collapsible content wrapper with smoo
|
|
|
21
21
|
### Basic Example
|
|
22
22
|
|
|
23
23
|
```markup
|
|
24
|
+
<AwButton
|
|
25
|
+
:text="isOpen ? 'Close' : 'Open'"
|
|
26
|
+
color="mono"
|
|
27
|
+
@click="isOpen = !isOpen"
|
|
28
|
+
/>
|
|
24
29
|
<AwAccordionFold :show="isOpen">
|
|
25
|
-
<
|
|
30
|
+
<AwCard>
|
|
31
|
+
<AwDescription>Your content here</AwDescription>
|
|
32
|
+
</AwCard>
|
|
26
33
|
</AwAccordionFold>
|
|
27
34
|
```
|
|
28
35
|
|
|
29
|
-
###
|
|
36
|
+
### Custom Tag
|
|
37
|
+
|
|
38
|
+
```markup
|
|
39
|
+
<AwButton
|
|
40
|
+
text="Toggle Section"
|
|
41
|
+
color="mono"
|
|
42
|
+
@click="isOpen = !isOpen"
|
|
43
|
+
/>
|
|
44
|
+
<AwAccordionFold :show="isOpen" tag="section">
|
|
45
|
+
<AwCard>
|
|
46
|
+
<AwDescription>Content wrapped in a section tag</AwDescription>
|
|
47
|
+
</AwCard>
|
|
48
|
+
</AwAccordionFold>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Multiple Accordions (Single Open)
|
|
30
52
|
|
|
31
53
|
```markup
|
|
32
54
|
<template>
|
|
33
|
-
<
|
|
34
|
-
<
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
55
|
+
<AwGrid :gap="1">
|
|
56
|
+
<div v-for="(item, index) in items" :key="index">
|
|
57
|
+
<AwButton
|
|
58
|
+
:text="item.title"
|
|
59
|
+
color="mono"
|
|
60
|
+
class="w-full"
|
|
61
|
+
@click="toggleItem(index)"
|
|
62
|
+
/>
|
|
63
|
+
<AwAccordionFold :show="openItems.includes(index)">
|
|
64
|
+
<AwCard>
|
|
65
|
+
{{ item.content }}
|
|
66
|
+
</AwCard>
|
|
67
|
+
</AwAccordionFold>
|
|
68
|
+
</div>
|
|
69
|
+
</AwGrid>
|
|
39
70
|
</template>
|
|
40
71
|
|
|
41
72
|
<script>
|
|
42
73
|
export default {
|
|
43
74
|
data() {
|
|
44
75
|
return {
|
|
45
|
-
|
|
76
|
+
openItems: [],
|
|
77
|
+
items: [
|
|
78
|
+
{ title: 'First Item', content: 'Content for the first accordion item.' },
|
|
79
|
+
{ title: 'Second Item', content: 'Content for the second accordion item.' },
|
|
80
|
+
{ title: 'Third Item', content: 'Content for the third accordion item.' }
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
methods: {
|
|
85
|
+
toggleItem(index) {
|
|
86
|
+
const pos = this.openItems.indexOf(index)
|
|
87
|
+
if (pos > -1) {
|
|
88
|
+
this.openItems = []
|
|
89
|
+
} else {
|
|
90
|
+
this.openItems = [index]
|
|
91
|
+
}
|
|
46
92
|
}
|
|
47
93
|
}
|
|
48
94
|
}
|
|
49
95
|
</script>
|
|
50
96
|
```
|
|
51
97
|
|
|
52
|
-
### Custom Tag
|
|
53
|
-
|
|
54
|
-
```markup
|
|
55
|
-
<AwAccordionFold :show="show" tag="section">
|
|
56
|
-
<p>Content in a section tag</p>
|
|
57
|
-
</AwAccordionFold>
|
|
58
|
-
```
|
|
59
|
-
|
|
60
98
|
## API
|
|
61
99
|
|
|
62
100
|
### Props
|
|
@@ -21,9 +21,9 @@ The `AwActionCardBody` component provides a structured body section for `AwActio
|
|
|
21
21
|
### Basic Example
|
|
22
22
|
|
|
23
23
|
```markup
|
|
24
|
-
<AwActionCard title="Card
|
|
24
|
+
<AwActionCard title="Parent Card">
|
|
25
25
|
<AwActionCardBody>
|
|
26
|
-
<
|
|
26
|
+
<AwDescription tag="div">Body content here</AwDescription>
|
|
27
27
|
</AwActionCardBody>
|
|
28
28
|
</AwActionCard>
|
|
29
29
|
```
|
|
@@ -31,9 +31,39 @@ The `AwActionCardBody` component provides a structured body section for `AwActio
|
|
|
31
31
|
### With Title
|
|
32
32
|
|
|
33
33
|
```markup
|
|
34
|
-
<
|
|
35
|
-
<
|
|
36
|
-
</
|
|
34
|
+
<AwActionCard title="Order Details">
|
|
35
|
+
<AwActionCardBody title="Order #12345">
|
|
36
|
+
<AwDescription tag="div">Status: Shipped</AwDescription>
|
|
37
|
+
</AwActionCardBody>
|
|
38
|
+
</AwActionCard>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Multiple Bodies
|
|
42
|
+
|
|
43
|
+
```markup
|
|
44
|
+
<AwActionCard title="User Profile">
|
|
45
|
+
<AwActionCardBody title="Personal Information">
|
|
46
|
+
<AwDescription tag="div">Name: John Doe</AwDescription>
|
|
47
|
+
</AwActionCardBody>
|
|
48
|
+
<AwActionCardBody title="Preferences">
|
|
49
|
+
<AwDescription tag="div">Language: English</AwDescription>
|
|
50
|
+
</AwActionCardBody>
|
|
51
|
+
</AwActionCard>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### With AwInfo for Stats
|
|
55
|
+
|
|
56
|
+
```markup
|
|
57
|
+
<AwActionCard title="Dashboard Stats">
|
|
58
|
+
<AwActionCardBody>
|
|
59
|
+
<AwGrid :col="{ sm: 2 }">
|
|
60
|
+
<AwInfo label="Users" text="1,234" />
|
|
61
|
+
<AwInfo label="Revenue" text="$45,678" />
|
|
62
|
+
<AwInfo label="Orders" text="890" />
|
|
63
|
+
<AwInfo label="Growth" text="+12%" />
|
|
64
|
+
</AwGrid>
|
|
65
|
+
</AwActionCardBody>
|
|
66
|
+
</AwActionCard>
|
|
37
67
|
```
|
|
38
68
|
|
|
39
69
|
## API
|
|
@@ -58,6 +88,8 @@ No events are emitted by this component.
|
|
|
58
88
|
|
|
59
89
|
- `AwActionCard` - Parent card component
|
|
60
90
|
- `AwActionIcon` - Icon component for action cards
|
|
91
|
+
- `AwInfo` - Info component for displaying key-value pairs
|
|
92
|
+
- `AwDescription` - Description text component
|
|
61
93
|
|
|
62
94
|
## Notes
|
|
63
95
|
|