aboutsummaryrefslogtreecommitdiff
path: root/src/components/list
diff options
context:
space:
mode:
authorHenry Jameson <me@hjkos.com>2024-02-29 17:49:56 +0200
committerHenry Jameson <me@hjkos.com>2024-02-29 17:49:56 +0200
commit28c7fac9f0b740473575200051bc2983ec5c9be9 (patch)
treeb079ae51ff67d8ece4b9012d49ab71c884dba500 /src/components/list
parent3f6b9fbf9cc59d5ae20f9bda7c8fdf9f55d5675e (diff)
implement list item styles
Diffstat (limited to 'src/components/list')
-rw-r--r--src/components/list/list.vue22
-rw-r--r--src/components/list/list_item.style.js48
2 files changed, 53 insertions, 17 deletions
diff --git a/src/components/list/list.vue b/src/components/list/list.vue
index a3562c5d..b8fcaf9d 100644
--- a/src/components/list/list.vue
+++ b/src/components/list/list.vue
@@ -7,6 +7,7 @@
v-for="item in items"
:key="getKey(item)"
class="list-item"
+ :class="getClass(item)"
role="listitem"
>
<slot
@@ -33,24 +34,11 @@ export default {
getKey: {
type: Function,
default: item => item.id
+ },
+ getClass: {
+ type: Function,
+ default: item => ''
}
}
}
</script>
-
-<style lang="scss">
-@import "../../variables";
-
-.list {
- &-item:not(:last-child) {
- border-bottom: 1px solid;
- border-bottom-color: $fallback--border;
- border-bottom-color: var(--border, $fallback--border);
- }
-
- &-empty-content {
- text-align: center;
- padding: 10px;
- }
-}
-</style>
diff --git a/src/components/list/list_item.style.js b/src/components/list/list_item.style.js
new file mode 100644
index 00000000..ae8dc5f4
--- /dev/null
+++ b/src/components/list/list_item.style.js
@@ -0,0 +1,48 @@
+export default {
+ name: 'ListItem',
+ selector: '.list-item',
+ states: {
+ active: '.-active',
+ hover: ':hover'
+ },
+ validInnerComponents: [
+ 'Text',
+ 'Link',
+ 'Icon',
+ 'Border',
+ 'Button',
+ 'ButtonUnstyled',
+ 'RichContent',
+ 'Input',
+ 'Avatar'
+ ],
+ defaultRules: [
+ {
+ directives: {
+ background: '--bg',
+ opacity: 0
+ }
+ },
+ {
+ state: ['active'],
+ directives: {
+ background: '--inheritedBackground, 10',
+ opacity: 1
+ }
+ },
+ {
+ state: ['hover'],
+ directives: {
+ background: '--inheritedBackground, 10',
+ opacity: 1
+ }
+ },
+ {
+ state: ['hover', 'active'],
+ directives: {
+ background: '--inheritedBackground, 20',
+ opacity: 1
+ }
+ }
+ ]
+}