diff --git a/libs/sketch/src/lib/components/list/components/list-item/list-item.component.css b/libs/sketch/src/lib/components/list/components/list-item/list-item.component.css index 002703f..7da0ad8 100644 --- a/libs/sketch/src/lib/components/list/components/list-item/list-item.component.css +++ b/libs/sketch/src/lib/components/list/components/list-item/list-item.component.css @@ -1,9 +1,9 @@ :host { - --sk-list-item-label-background: #ffffff; - --sk-list-item-label-color: #000000; + --sk-list-item-label-background: #fff; + --sk-list-item-label-color: #000; --sk-list-item-label-padding: 0.5rem; - --sk-list-item-label-border: 1px solid #000000; - --sk-list-item-label-active-color: rgb(252, 0, 84); + --sk-list-item-label-border: 1px solid #000; + --sk-list-item-label-active-color: rgb(252 0 84); display: flex; flex-direction: column; @@ -13,6 +13,7 @@ .sk-label { display: flex; align-items: center; + color: var(--sk-list-item-label-color); background: var(--sk-list-item-label-background); padding: var(--sk-list-item-label-padding); border-bottom: var(--sk-list-item-label-border); diff --git a/libs/sketch/src/lib/components/list/list-documentation.md b/libs/sketch/src/lib/components/list/list-documentation.md new file mode 100644 index 0000000..88d1972 --- /dev/null +++ b/libs/sketch/src/lib/components/list/list-documentation.md @@ -0,0 +1,298 @@ +# List + +The List Component gives you the opportunity to list items and even nest them. You can also connect it to routing to have deep links to nested items. + +It can be used for normal lists (with the option for routing) or a Folder like structure with. + +## Basic Usage + +### Without Children (no Routing) + +```html + + @for (item of items(); track item.id) { + +
+ {{ item.label }} +
+
+ } +
+``` + +As you see, you only need the `sk-list` with `skListProvider` and `sk-list-item` with a unique [`[skListItemId]`](#inputsoutputs) and an `skLabel` to get started. + +> The `[skListItemId]` is an identifier for the individual items and must be unique for each item. If it's not there, no item will be displayed. + +The `skLabel` declares the visible part of the item. When you don't set it, it is not visible but still there. It can contain any content you like.
+As element that holds the `skLabel` you can use what you want, for example `
`, ``, `

`, etc. + +### Without Children (with Routing) + +```html + + @for (item of items(); track item.id) { + +

+ {{ item.label }} +
+ + } + +``` + +In addition to the code above you just set the [`skEnableRouting`](#inputsoutputs) (which is the input set to true) and [`(activeIdChanged)`](#inputsoutputs). +(`itemActiveId` is a signal where the event from the output is set. You can use it to add styling depending on the route, conditional displaying of content etc.) + +### With Children (no routing) + +```html + + @for (item of items(); track item.id) { + +
+ {{ item.label }} +
+ + @for (childItem of item.children; track childItem.id) { + +
+ {{ childItem.label }} +
+
+ } +
+
+ } +
+``` + +You just nest another `sk-list` within the `sk-list-item` and add `skChilds` to the list to declare it as children. +Not setting `skChilds` will result in not seeing them. + +> Once you opened a item to see the children, you can't close it to only see the parent elements. If you wish to do so, use the Collapse Component. + +> You can nest the children as deep as you want. It is recommended to nest it only two times. + +### With Children (with Routing) + +```html + + @for (item of items(); track item.id) { + +
+ {{ item.label }} +
+ @if (item.children?.length && itemActiveId() === item.id) { + + @for (childItem of item.children; track childItem.id) { + +
+ {{ childItem.label }} +
+
+ } +
+ } +
+ } +
+``` + +In addition to the code with routing above you just add the child with a `childActiveId`. It is also recommended to wrap it in a condition to check, if the child items are actually there. + +## Styling + +The `sk-list-item` has a basic default styling (You can find them in the [Properties Overview](#styling-with-custom-properties)). +You have the option to style it as you want with custom properties. + +Here is an example: + +```css +sk-list-item { + --sk-list-item-label-background: thistle; + --sk-list-item-label-color: purple; + --sk-list-item-label-padding: 0.5rem 2rem; + --sk-list-item-label-border: 3px solid indigo; + --sk-list-item-label-active-color: navy; +} +``` + +This only targets the list-item itself. Applying other styles does not change it. +To add styles like a `border-radius`, `box-shadow` etc., target the element with `skLabel` in it and add your styles. +The `--sk-list-item-label-background` should be set to transparent. The `--sk-list-item-label-border` should be set to `none` or `transparent` to avoid the lines in the gaps. +The label will have a width fitting it's content. Add your desired width to the label to change it. + +```css +sk-list-item { + --sk-list-item-label-background: transparent; + --sk-list-item-label-border: none; +} + +.sk-label { + width: 100%; + border-radius: 1rem; + background-color: thistle; + box-shadow: rgb(0 0 0 / 20%) 0 10px 20px; +} +``` + +> You can also adjust the displaying of the items. Use `display: flex/grid` to adjust it to your needs. + +### Animations + +You can add animations to your list. Just add the name of the animation to the `sk-list` and you are ready to go. + +### Active Items + +Whe you only want to style the label, use the custom property `--sk-list-item-label-active-color` and add a color. This wills style the text color. + +To style the active items (with routing) you could add a class `[class.active-item]` and add a condition `itemActiveId() === item.route`. This is great for transitions, scaling etc. + +## Properties Overview + +### Inputs/Outputs + + + + + + + + + + + + + + + + + + + +
Name Type Required Description Default Value
+ +`[skListItemId]` + + + +`string` + + yes Determines the unique identifier of the items. +- +
+ +`[skEnableRouting]` + + + +`boolean` + + no/optional Determines if the list should have routing. + +`false` + +
+ + + + + + + + + + +
Name Required Description
+ +`(activeIdChanged)` + + + +only when `skEnableRouting` is `true` + + Handles the change of the active id for routing.
+ +### Styling with custom properties + +Apply the styles to the `sk-list-item`. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name Description Default Value
+ +`--sk-list-item-label-background` + + Defines the background of the item. + +`#ffffff` + +
+ +`--sk-list-item-label-color` + + Defines the color of the text in the item. + +`#000000` + +
+ +`--sk-list-item-label-border` + + Defines the separator lines between the items. + +`1px solid #000000` + +
+ +`--sk-list-item-label-active-color` + + Defines the text color of the active items. + +`rgb(252, 0, 84)` + +
+ +`--sk-list-item-label-padding` + + Defines the padding of the text in the item. + +`0.5rem` + +