diff --git a/apps/core-lib-dev/src/app/app.element.ts b/apps/core-lib-dev/src/app/app.element.ts index dbf8245c4b..335080057a 100644 --- a/apps/core-lib-dev/src/app/app.element.ts +++ b/apps/core-lib-dev/src/app/app.element.ts @@ -33,8 +33,7 @@ import '@sebgroup/green-core/components/menu-button/index.js' import '@sebgroup/green-core/components/segmented-control/index.js' import '../components/header' -import '../components/quicklinks' -import '../components/news-widget' + import './chlorophyll.scss' import './form-validation.element' import './datepicker.element' diff --git a/apps/core-lib-dev/src/app/dashboard/dashboard.element.ts b/apps/core-lib-dev/src/app/dashboard/dashboard.element.ts index 589fb59aea..77a74487ac 100644 --- a/apps/core-lib-dev/src/app/dashboard/dashboard.element.ts +++ b/apps/core-lib-dev/src/app/dashboard/dashboard.element.ts @@ -22,6 +22,8 @@ import '@sebgroup/green-core/components/icon/icons/arrow-out-of-box.js' import '@sebgroup/green-core/components/mask/mask.js' import '@sebgroup/green-core/components/icon/icons/chevron-bottom.js' import '../../components/jit' +import '../../components/news-widget' +import '../../components/todos' import './dashboard.css' import '../../components/savings-outside' import '../../components/savings-goal' @@ -67,9 +69,10 @@ export class CardExample extends LitElement { - + + diff --git a/apps/core-lib-dev/src/app/theme-page/theme-page.element.ts b/apps/core-lib-dev/src/app/theme-page/theme-page.element.ts index 90deb70252..4e66a4b75a 100644 --- a/apps/core-lib-dev/src/app/theme-page/theme-page.element.ts +++ b/apps/core-lib-dev/src/app/theme-page/theme-page.element.ts @@ -20,6 +20,7 @@ import '../../components/carousel-pink' import '../../components/savings-outside' import '../../components/news-widget' import '../../components/savings-calculator' +import '../../components/todos' import './style.css' import { PageHeader } from './page-header' @@ -76,9 +77,7 @@ export class ThemePage extends LitElement { flex-direction="column" gap="l" > - Todo + diff --git a/apps/core-lib-dev/src/components/todos.ts b/apps/core-lib-dev/src/components/todos.ts new file mode 100644 index 0000000000..17e1f50461 --- /dev/null +++ b/apps/core-lib-dev/src/components/todos.ts @@ -0,0 +1,183 @@ +/* eslint-disable @nx/enforce-module-boundaries */ +import { LitElement } from 'lit' +import { customElement, property, query } from 'lit/decorators.js' + +import {ref} from 'lit/directives/ref.js'; + +import { html } from '@sebgroup/green-core/scoping' + +import '@sebgroup/green-core/components/theme/index.js' +import '@sebgroup/green-core/components/card/index.js' +import '@sebgroup/green-core/components/flex/index.js' +import '@sebgroup/green-core/components/grid/index.js' +import '@sebgroup/green-core/components/text/index.js' +import '@sebgroup/green-core/components/link/index.js' +import '@sebgroup/green-core/components/icon/icons/wallet.js' + +import { viewportBreakpoints } from '../../../../libs/core/src/utils/helpers/style-expression-parser' +import { GdsLink } from '@sebgroup/green-core/components/link/index.js' + +type Todo = { + text: string + url: string +} + +const todos: Todo[] = [ + { + text: 'Todo 1', + url: '#', + }, + { + text: 'Todo 2', + url: '#', + }, + { + text: 'Todo 3', + url: '#', + }, + { + text: 'Todo 1', + url: '#', + }, +] + + +@customElement('tp-todos') +export class TpTodos extends LitElement { + @property({ type: Boolean }) + accessor expanded = !window.matchMedia(`(max-width: ${viewportBreakpoints.s})`).matches + + @query(".todo") + accessor todo: GdsLink | undefined + + connectedCallback() { + super.connectedCallback() + } + + renderTodo(todo: Todo) { + return html` + + + + + ${todo.text} + + + ` + } + + #handleClick(){ + if(!this.expanded){ + this.expanded = true + } + } + + #handleClickButton(){ + this.expanded = !this.expanded + } + + firstUpdated() { + setTimeout(() => { + this.style.setProperty("--todo-height", `${this.todo.getBoundingClientRect().height}px`) + }, 0) + } + + onRef(ref?: GdsLink){ + + if(ref){ + + ref.classList.add("loaded") + } + } + + + render() { + return html` + + + Att göra + + + + + ${todos.map( + (todo, index) => + html` + ${this.renderTodo(todo)} + `, + )} + ` + } +} diff --git a/libs/core/src/components/link/link.styles.ts b/libs/core/src/components/link/link.styles.ts index d03af97be2..3032ed9ecd 100644 --- a/libs/core/src/components/link/link.styles.ts +++ b/libs/core/src/components/link/link.styles.ts @@ -32,6 +32,10 @@ const style = css` text-decoration: underline; } } + + &.hidden { + text-decoration: none; + } } } ` diff --git a/libs/core/src/components/link/link.ts b/libs/core/src/components/link/link.ts index fdeb211e21..484cade570 100644 --- a/libs/core/src/components/link/link.ts +++ b/libs/core/src/components/link/link.ts @@ -57,7 +57,7 @@ export class GdsLink extends GdsElement { * Defines the link variants */ @property() - variant: 'default' | 'secondary' = 'default' + variant: 'default' | 'secondary' | 'hidden' = 'default' constructor() { super() @@ -66,6 +66,7 @@ export class GdsLink extends GdsElement { render() { const CLASSES = { secondary: this.variant === 'secondary', + hidden: this.variant === 'hidden', } return staticHtml` diff --git a/libs/core/src/utils/helpers/style-expression-parser.ts b/libs/core/src/utils/helpers/style-expression-parser.ts index cd162c9b1b..87eb596f2b 100644 --- a/libs/core/src/utils/helpers/style-expression-parser.ts +++ b/libs/core/src/utils/helpers/style-expression-parser.ts @@ -6,7 +6,7 @@ type BreakpointValues = { sel: string; values: string[] } type BreakpointData = { breakpoint: string; values: BreakpointValues[] } type BreakpointTree = BreakpointData[] -const viewportBreakpoints: Record = { +export const viewportBreakpoints: Record = { '0': '0px', '2xs': '320px', xs: '425px',