@lumston/ds-angular 0.0.6 → 0.0.8
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/fesm2022/lumston-ds-angular-src-data-display.mjs +215 -0
- package/fesm2022/lumston-ds-angular-src-data-display.mjs.map +1 -0
- package/fesm2022/lumston-ds-angular-src-dropdown.mjs +94 -0
- package/fesm2022/lumston-ds-angular-src-dropdown.mjs.map +1 -0
- package/fesm2022/lumston-ds-angular-src-feedback.mjs +400 -0
- package/fesm2022/lumston-ds-angular-src-feedback.mjs.map +1 -0
- package/fesm2022/lumston-ds-angular-src-icon.mjs +148 -0
- package/fesm2022/lumston-ds-angular-src-icon.mjs.map +1 -0
- package/fesm2022/lumston-ds-angular-src-inputs.mjs +1132 -0
- package/fesm2022/lumston-ds-angular-src-inputs.mjs.map +1 -0
- package/fesm2022/lumston-ds-angular-src-navigation.mjs +473 -0
- package/fesm2022/lumston-ds-angular-src-navigation.mjs.map +1 -0
- package/fesm2022/lumston-ds-angular-src-overlay.mjs +1038 -0
- package/fesm2022/lumston-ds-angular-src-overlay.mjs.map +1 -0
- package/fesm2022/lumston-ds-angular-src-typography.mjs +303 -0
- package/fesm2022/lumston-ds-angular-src-typography.mjs.map +1 -0
- package/fesm2022/lumston-ds-angular.mjs +90 -65
- package/fesm2022/lumston-ds-angular.mjs.map +1 -1
- package/package.json +58 -32
- package/styles/index.css +4 -0
- package/styles/ls-icons.css +482 -0
- package/types/lumston-ds-angular-src-data-display.d.ts +50 -0
- package/types/lumston-ds-angular-src-data-display.d.ts.map +1 -0
- package/types/lumston-ds-angular-src-dropdown.d.ts +28 -0
- package/types/lumston-ds-angular-src-dropdown.d.ts.map +1 -0
- package/types/lumston-ds-angular-src-feedback.d.ts +75 -0
- package/types/lumston-ds-angular-src-feedback.d.ts.map +1 -0
- package/types/lumston-ds-angular-src-icon.d.ts +27 -0
- package/types/lumston-ds-angular-src-icon.d.ts.map +1 -0
- package/types/lumston-ds-angular-src-inputs.d.ts +201 -0
- package/types/lumston-ds-angular-src-inputs.d.ts.map +1 -0
- package/types/lumston-ds-angular-src-navigation.d.ts +186 -0
- package/types/lumston-ds-angular-src-navigation.d.ts.map +1 -0
- package/types/lumston-ds-angular-src-overlay.d.ts +357 -0
- package/types/lumston-ds-angular-src-overlay.d.ts.map +1 -0
- package/types/lumston-ds-angular-src-typography.d.ts +51 -0
- package/types/lumston-ds-angular-src-typography.d.ts.map +1 -0
- package/types/lumston-ds-angular.d.ts.map +1 -1
- package/styles/data-display/badge/badge.styles.css +0 -244
- package/styles/data-display/chip/chip.styles.css +0 -245
- package/styles/dropdown/dropdown.styles.css +0 -14
- package/styles/feedback/alert/alert.styles.css +0 -304
- package/styles/feedback/loader/loader.styles.css +0 -132
- package/styles/feedback/progress-bar/progress-bar.styles.css +0 -193
- package/styles/icon/icon.styles.css +0 -11
- package/styles/inputs/button/button.styles.css +0 -377
- package/styles/inputs/checkbox/checkbox.styles.css +0 -157
- package/styles/inputs/icon-button/icon-button.styles.css +0 -157
- package/styles/inputs/radio-button/radio-button.styles.css +0 -274
- package/styles/inputs/slider/slider.styles.css +0 -228
- package/styles/inputs/switch/switch.styles.css +0 -483
- package/styles/media/avatar/avatar.styles.css +0 -112
- package/styles/media/avatar-group/avatar-group.styles.css +0 -37
- package/styles/media/logo/logo.styles.css +0 -40
- package/styles/navigation/breadcrumb/breadcrumb.styles.css +0 -144
- package/styles/navigation/pagination/pagination.styles.css +0 -336
- package/styles/overlay/menu/menu.styles.css +0 -138
- package/styles/overlay/modal/modal.styles.css +0 -178
- package/styles/overlay/popover/popover.styles.css +0 -112
- package/styles/overlay/tooltip/tooltip.styles.css +0 -172
- package/styles/styles/index.css +0 -28
- package/styles/typography/link/link.styles.css +0 -93
- package/styles/typography/tag/tag.styles.css +0 -274
- package/styles/typography/text/text.styles.css +0 -176
- /package/styles/{styles/_base.css → _base.css} +0 -0
- /package/styles/{styles/_tokens.css → _tokens.css} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lumston-ds-angular-src-overlay.mjs","sources":["../../../../libs/ds-angular/src/overlay/menu/menu.component.ts","../../../../libs/ds-angular/src/overlay/menu/menu-item.component.ts","../../../../libs/ds-angular/src/overlay/menu/menu-trigger.directive.ts","../../../../libs/ds-angular/src/overlay/modal/modal-actions.component.ts","../../../../libs/ds-angular/src/overlay/modal/modal-title.component.ts","../../../../libs/ds-angular/src/overlay/modal/modal.service.ts","../../../../libs/ds-angular/src/overlay/modal/modal.component.ts","../../../../libs/ds-angular/src/overlay/modal/modal-content.component.ts","../../../../libs/ds-angular/src/overlay/popover/popover.component.ts","../../../../libs/ds-angular/src/overlay/tooltip/tooltip.component.ts","../../../../libs/ds-angular/src/overlay/lumston-ds-angular-src-overlay.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n HostListener,\r\n effect,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n untracked,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n/**\r\n * Defines an origin point on an element used for menu positioning.\r\n *\r\n * Combines a vertical and horizontal anchor designation. Used by both\r\n * `anchorOrigin` (point on the trigger element) and `transformOrigin`\r\n * (point on the menu panel) to compute the final panel placement.\r\n */\r\nexport interface MenuOriginPoint {\r\n vertical: 'top' | 'center' | 'bottom';\r\n horizontal: 'left' | 'center' | 'right';\r\n}\r\n\r\n/**\r\n * Renders an anchored floating menu panel attached to a trigger element.\r\n *\r\n * Supports both **controlled** and **directive-driven** open modes:\r\n * - **Controlled**: bind `[(open)]` and respond to `opened`/`closed` outputs.\r\n * - **Directive-driven**: apply `lsMenuTriggerFor` to any host element;\r\n * the directive calls `setAnchorEl()` and `toggle()` automatically.\r\n *\r\n * Panel position is derived from the anchor element's bounding rect combined\r\n * with `anchorOrigin` (attachment point on the trigger) and `transformOrigin`\r\n * (attachment point on the panel). Position is recomputed each time the\r\n * panel opens via a `setTimeout(0)` deferral to ensure the panel is measured.\r\n *\r\n * When `disablePortal` is `false` (default), the panel uses `position: fixed`\r\n * for viewport-relative placement. When `true`, it uses `position: absolute`.\r\n *\r\n * Keyboard: `Escape` closes the panel; `ArrowDown`/`ArrowUp` move focus\r\n * between enabled `[role=\"menuitem\"]` elements inside the panel.\r\n *\r\n * @example\r\n * ```html\r\n * <!-- Controlled -->\r\n * <ls-menu [(open)]=\"isOpen\" [anchorEl]=\"triggerEl\">\r\n * <ls-menu-item (itemClick)=\"onEdit()\">Edit</ls-menu-item>\r\n * </ls-menu>\r\n *\r\n * <!-- Directive-driven -->\r\n * <button [lsMenuTriggerFor]=\"myMenu\">Open</button>\r\n * <ls-menu #myMenu>\r\n * <ls-menu-item>Delete</ls-menu-item>\r\n * </ls-menu>\r\n * ```\r\n */\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [],\r\n selector: 'ls-menu',\r\n standalone: true,\r\n styleUrls: ['./menu.component.css'],\r\n template: `\r\n @if (open() || _isAnimating()) {\r\n <div class=\"menu-backdrop\" (click)=\"onBackdropClick($event)\"></div>\r\n <div\r\n #panelRef\r\n class=\"menu-panel\"\r\n [class.menu-panel-inline]=\"disablePortal()\"\r\n [class.menu-enter]=\"open() && _isAnimating()\"\r\n [class.menu-leave]=\"!open() && _isAnimating()\"\r\n role=\"menu\"\r\n tabindex=\"-1\"\r\n (click)=\"onPanelClick($event)\"\r\n (animationend)=\"onAnimationEnd()\">\r\n <ng-content />\r\n </div>\r\n }\r\n `,\r\n})\r\nexport class MenuComponent {\r\n private readonly _document = inject(DOCUMENT);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n /** Controls the visibility of the menu panel. Supports two-way binding. */\r\n readonly open = model<boolean>(false);\r\n\r\n /**\r\n * Element used to position the menu panel.\r\n *\r\n * Accepts a native DOM element, an `ElementRef`, or any Angular component\r\n * that exposes a `nativeElement: HTMLElement` property (e.g. `ls-button`).\r\n * In templates, pass a template reference variable directly:\r\n * `[anchorEl]=\"btn\"` where `#btn` is on any element or component.\r\n *\r\n * When using `lsMenuTriggerFor`, this is set automatically by the directive\r\n * via `setAnchorEl()`. When using controlled mode, bind directly.\r\n *\r\n * @default null\r\n */\r\n readonly anchorEl = input<\r\n HTMLElement | ElementRef<HTMLElement> | { nativeElement: HTMLElement } | null\r\n >(null);\r\n\r\n /**\r\n * Defines the attachment point on the anchor element.\r\n *\r\n * Combined with `transformOrigin` to compute the panel's `top`/`left`\r\n * position via `getBoundingClientRect()`.\r\n *\r\n * @default { vertical: 'bottom', horizontal: 'left' }\r\n */\r\n readonly anchorOrigin = input<MenuOriginPoint>({\r\n vertical: 'bottom',\r\n horizontal: 'left',\r\n });\r\n\r\n /**\r\n * Defines the attachment point on the menu panel surface.\r\n *\r\n * The panel is translated so this point aligns with `anchorOrigin`.\r\n *\r\n * @default { vertical: 'top', horizontal: 'left' }\r\n */\r\n readonly transformOrigin = input<MenuOriginPoint>({\r\n vertical: 'top',\r\n horizontal: 'left',\r\n });\r\n\r\n /**\r\n * When `false` (default), the panel uses `position: fixed` for\r\n * viewport-relative placement. When `true`, uses `position: absolute`\r\n * and renders relative to the nearest positioned ancestor.\r\n *\r\n * @default false\r\n */\r\n readonly disablePortal = input<boolean>(false);\r\n\r\n /**\r\n * When `true`, the panel closes automatically after the user activates\r\n * a `ls-menu-item` (i.e., a `[role=\"menuitem\"]` element) inside it.\r\n *\r\n * @default true\r\n */\r\n readonly closeOnClick = input<boolean>(true);\r\n\r\n /**\r\n * Emits when the panel's opening animation completes.\r\n * Does NOT emit when `open` is set programmatically without animation.\r\n */\r\n readonly opened = output<void>();\r\n\r\n /**\r\n * Emits when the panel's closing animation completes and the panel\r\n * is fully hidden. In controlled mode, the host can use this to update\r\n * state after the transition finishes.\r\n */\r\n readonly closed = output<void>();\r\n\r\n /**\r\n * Emits when the user clicks the transparent backdrop behind the panel.\r\n * The menu closes automatically after this output emits.\r\n */\r\n readonly backdropClick = output<MouseEvent>();\r\n\r\n private readonly _panelRef = viewChild<ElementRef<HTMLElement>>('panelRef');\r\n\r\n protected readonly _isAnimating = signal(false);\r\n\r\n private _wasOpen = false;\r\n private _previouslyFocused: Element | null = null;\r\n private _savedBodyOverflow = '';\r\n private _savedBodyPaddingRight = '';\r\n private readonly _resolvedAnchorEl = signal<HTMLElement | null>(null);\r\n private readonly _repositionHandler = () => this._computeAndApplyPosition();\r\n\r\n constructor() {\r\n // Manages animation state, scroll lock, focus, and repositioning listeners\r\n // when the panel opens or closes.\r\n effect(() => {\r\n const isOpen = this.open();\r\n untracked(() => {\r\n if (isOpen) {\r\n this._isAnimating.set(true);\r\n this._previouslyFocused = this._document.activeElement;\r\n this._savedBodyOverflow = this._document.body.style.overflow;\r\n this._savedBodyPaddingRight = this._document.body.style.paddingRight;\r\n\r\n const scrollbarWidth = this._getScrollbarWidth();\r\n\r\n if (scrollbarWidth > 0) {\r\n this._document.body.style.paddingRight = `${scrollbarWidth}px`;\r\n }\r\n\r\n this._document.body.style.overflow = 'hidden';\r\n setTimeout(() => this._panelRef()?.nativeElement.focus(), 0);\r\n window.addEventListener('resize', this._repositionHandler);\r\n window.addEventListener('scroll', this._repositionHandler, true);\r\n this._wasOpen = true;\r\n } else if (this._wasOpen) {\r\n this._isAnimating.set(true);\r\n window.removeEventListener('resize', this._repositionHandler);\r\n window.removeEventListener('scroll', this._repositionHandler, true);\r\n this._wasOpen = false;\r\n }\r\n });\r\n });\r\n\r\n // Computes and applies panel position whenever the panel enters the DOM\r\n // or any positioning input changes. Using a separate effect (rather than\r\n // setTimeout) guarantees that Angular has already updated the viewChild\r\n // signal before this runs, so _panelRef() is always non-null here.\r\n effect(() => {\r\n const panel = this._panelRef()?.nativeElement;\r\n if (!panel) return;\r\n this._computeAndApplyPosition();\r\n });\r\n\r\n this._destroyRef.onDestroy(() => {\r\n window.removeEventListener('resize', this._repositionHandler);\r\n window.removeEventListener('scroll', this._repositionHandler, true);\r\n if (this._wasOpen) {\r\n this._document.body.style.overflow = this._savedBodyOverflow;\r\n this._document.body.style.paddingRight = this._savedBodyPaddingRight;\r\n (this._previouslyFocused as HTMLElement)?.focus?.();\r\n }\r\n });\r\n }\r\n\r\n /** Toggles the panel between open and closed. */\r\n toggle(): void {\r\n this.open.set(!this.open());\r\n }\r\n\r\n /**\r\n * Sets the anchor element used for panel positioning.\r\n * Called automatically by `MenuTriggerDirective`.\r\n */\r\n setAnchorEl(el: HTMLElement | null): void {\r\n this._resolvedAnchorEl.set(el);\r\n }\r\n\r\n /** Closes the panel without waiting for a user interaction. */\r\n requestClose(): void {\r\n this.open.set(false);\r\n }\r\n\r\n protected onBackdropClick(event: MouseEvent): void {\r\n this.backdropClick.emit(event);\r\n this.open.set(false);\r\n }\r\n\r\n protected onPanelClick(event: MouseEvent): void {\r\n if (!this.closeOnClick()) return;\r\n const target = event.target as HTMLElement;\r\n if (target.closest('[role=\"menuitem\"]') !== null) {\r\n this.open.set(false);\r\n }\r\n }\r\n\r\n protected onAnimationEnd(): void {\r\n this._isAnimating.set(false);\r\n if (this.open()) {\r\n this.opened.emit();\r\n } else {\r\n this._document.body.style.overflow = this._savedBodyOverflow;\r\n this._document.body.style.paddingRight = this._savedBodyPaddingRight;\r\n this.closed.emit();\r\n (this._previouslyFocused as HTMLElement)?.focus?.();\r\n this._previouslyFocused = null;\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n protected onEscape(): void {\r\n if (this.open()) {\r\n this.open.set(false);\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.arrowdown', ['$event'])\r\n protected onArrowDown(event: Event): void {\r\n if (!this.open()) return;\r\n event.preventDefault();\r\n this._moveFocus(1);\r\n }\r\n\r\n @HostListener('document:keydown.arrowup', ['$event'])\r\n protected onArrowUp(event: Event): void {\r\n if (!this.open()) return;\r\n event.preventDefault();\r\n this._moveFocus(-1);\r\n }\r\n\r\n private _computeAndApplyPosition(): void {\r\n const rawAnchor = this.anchorEl() ?? this._resolvedAnchorEl();\r\n const panel = this._panelRef()?.nativeElement;\r\n if (!rawAnchor || !panel) return;\r\n\r\n const anchorEl = this._toHTMLElement(rawAnchor);\r\n if (!anchorEl) return;\r\n\r\n const anchorRect = anchorEl.getBoundingClientRect();\r\n const panelRect = panel.getBoundingClientRect();\r\n const ao = this.anchorOrigin();\r\n const to = this.transformOrigin();\r\n\r\n const anchorX =\r\n anchorRect.left +\r\n (ao.horizontal === 'center'\r\n ? anchorRect.width / 2\r\n : ao.horizontal === 'right'\r\n ? anchorRect.width\r\n : 0);\r\n\r\n const anchorY =\r\n anchorRect.top +\r\n (ao.vertical === 'center'\r\n ? anchorRect.height / 2\r\n : ao.vertical === 'bottom'\r\n ? anchorRect.height\r\n : 0);\r\n\r\n const transformX =\r\n to.horizontal === 'center'\r\n ? panelRect.width / 2\r\n : to.horizontal === 'right'\r\n ? panelRect.width\r\n : 0;\r\n\r\n const transformY =\r\n to.vertical === 'center'\r\n ? panelRect.height / 2\r\n : to.vertical === 'bottom'\r\n ? panelRect.height\r\n : 0;\r\n\r\n panel.style.setProperty('--menu-top', `${anchorY - transformY}px`);\r\n panel.style.setProperty('--menu-left', `${anchorX - transformX}px`);\r\n }\r\n\r\n /**\r\n * Resolves any supported anchor value to a plain `HTMLElement`.\r\n *\r\n * Handles: `HTMLElement`, `ElementRef<HTMLElement>`, and objects that expose\r\n * a `nativeElement: HTMLElement` property (e.g. `ls-button` component refs).\r\n */\r\n private _toHTMLElement(anchor: unknown): HTMLElement | null {\r\n if (!anchor) return null;\r\n if (anchor instanceof HTMLElement) return anchor;\r\n if (\r\n typeof anchor === 'object' &&\r\n anchor !== null &&\r\n 'nativeElement' in anchor\r\n ) {\r\n const el = (anchor as { nativeElement: unknown }).nativeElement;\r\n return el instanceof HTMLElement ? el : null;\r\n }\r\n return null;\r\n }\r\n\r\n private _moveFocus(direction: 1 | -1): void {\r\n const panel = this._panelRef()?.nativeElement;\r\n if (!panel) return;\r\n\r\n const items = Array.from(\r\n panel.querySelectorAll<HTMLElement>(\r\n '[role=\"menuitem\"]:not([aria-disabled=\"true\"])'\r\n )\r\n );\r\n if (items.length === 0) return;\r\n\r\n const currentIndex = items.indexOf(\r\n this._document.activeElement as HTMLElement\r\n );\r\n const nextIndex =\r\n currentIndex === -1\r\n ? direction === 1\r\n ? 0\r\n : items.length - 1\r\n : (currentIndex + direction + items.length) % items.length;\r\n\r\n items[nextIndex]?.focus();\r\n }\r\n\r\n private _getScrollbarWidth(): number {\r\n return window.innerWidth - this._document.documentElement.clientWidth;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Interactive item rendered inside an `ls-menu` panel.\r\n *\r\n * Renders a `<button role=\"menuitem\">` that projects its label via\r\n * `<ng-content>`. Visual density, gutters, and a bottom divider are\r\n * configurable via inputs. When `disabled` is `true`, the item is not\r\n * interactive and the `itemClick` output will not emit.\r\n *\r\n * @example\r\n * ```html\r\n * <ls-menu-item [dense]=\"true\" (itemClick)=\"onEdit($event)\">\r\n * Edit\r\n * </ls-menu-item>\r\n * ```\r\n */\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [],\r\n selector: 'ls-menu-item',\r\n standalone: true,\r\n styleUrls: ['./menu.component.css'],\r\n template: `\r\n <button\r\n type=\"button\"\r\n [class]=\"_itemClasses()\"\r\n [disabled]=\"disabled()\"\r\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\r\n role=\"menuitem\"\r\n (click)=\"handleClick($event)\">\r\n <ng-content />\r\n </button>\r\n `,\r\n})\r\nexport class MenuItemComponent {\r\n /**\r\n * Reduces the vertical padding of the item for compact layouts.\r\n *\r\n * @default false\r\n */\r\n readonly dense = input<boolean>(false);\r\n\r\n /**\r\n * Removes left and right padding when `true`.\r\n *\r\n * @default false\r\n */\r\n readonly disableGutters = input<boolean>(false);\r\n\r\n /**\r\n * Adds a 1px border at the bottom of the item to act as a visual divider.\r\n *\r\n * @default false\r\n */\r\n readonly divider = input<boolean>(false);\r\n\r\n /**\r\n * Prevents interaction. Applies disabled styling, sets `aria-disabled=\"true\"`,\r\n * and suppresses the `itemClick` output.\r\n *\r\n * @default false\r\n */\r\n readonly disabled = input<boolean>(false);\r\n\r\n /**\r\n * Emits the originating `MouseEvent` when the user activates the item.\r\n * Does NOT emit when `disabled` is `true`.\r\n */\r\n readonly itemClick = output<MouseEvent>();\r\n\r\n protected readonly _itemClasses = computed(() => {\r\n const classes = ['menu-item'];\r\n if (this.dense()) classes.push('menu-item-dense');\r\n if (this.disableGutters()) classes.push('menu-item-no-gutters');\r\n if (this.divider()) classes.push('menu-item-divider');\r\n if (this.disabled()) classes.push('menu-item-disabled');\r\n return classes.join(' ');\r\n });\r\n\r\n protected handleClick(event: MouseEvent): void {\r\n if (this.disabled()) return;\r\n this.itemClick.emit(event);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { MenuComponent } from './menu.component';\r\n\r\n/**\r\n * Connects any host element to a `MenuComponent` instance, enabling\r\n * click-to-toggle behavior without manual open-state management.\r\n *\r\n * Sets `anchorEl` on the linked `MenuComponent` to the host element\r\n * before toggling visibility, so the panel is correctly positioned\r\n * relative to the trigger. Also applies `aria-haspopup=\"menu\"` to the\r\n * host for accessibility.\r\n *\r\n * @example\r\n * ```html\r\n * <button type=\"button\" [lsMenuTriggerFor]=\"myMenu\">Options</button>\r\n * <ls-menu #myMenu>\r\n * <ls-menu-item>Delete</ls-menu-item>\r\n * </ls-menu>\r\n * ```\r\n */\r\n@Directive({\r\n host: { 'aria-haspopup': 'menu' },\r\n selector: '[lsMenuTriggerFor]',\r\n standalone: true,\r\n})\r\nexport class MenuTriggerDirective {\r\n /**\r\n * The `MenuComponent` instance this directive controls.\r\n * Assign a template reference variable of `ls-menu`.\r\n */\r\n readonly lsMenuTriggerFor = input.required<MenuComponent>();\r\n\r\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\r\n\r\n @HostListener('click')\r\n protected onClick(): void {\r\n const menu = this.lsMenuTriggerFor();\r\n menu.setAnchorEl(this._resolveAnchorElement());\r\n menu.toggle();\r\n }\r\n\r\n /**\r\n * Resolves the first ancestor element that has a real layout box.\r\n *\r\n * Angular component hosts commonly use `:host { display: contents }`,\r\n * which means the element itself has no bounding box and\r\n * `getBoundingClientRect()` returns all zeros. This method walks down\r\n * through `display: contents` wrappers until it reaches the first child\r\n * that participates in layout, so the menu panel is positioned relative\r\n * to the visible trigger element rather than a phantom box.\r\n */\r\n private _resolveAnchorElement(): HTMLElement {\r\n let el = this._elementRef.nativeElement as HTMLElement;\r\n while (el.firstElementChild && getComputedStyle(el).display === 'contents') {\r\n el = el.firstElementChild as HTMLElement;\r\n }\r\n return el;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'modal-actions' },\r\n imports: [],\r\n selector: 'ls-modal-actions',\r\n standalone: true,\r\n template: `<ng-content />`,\r\n})\r\nexport class ModalActionsComponent {}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nlet _titleIdCounter = 0;\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'modal-title', '[id]': 'id' },\r\n imports: [],\r\n selector: 'ls-modal-title',\r\n standalone: true,\r\n template: `<ng-content />`,\r\n})\r\nexport class ModalTitleComponent {\r\n public readonly id = `ls-modal-title-${++_titleIdCounter}`;\r\n}\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ModalStackService {\r\n private readonly _stack = signal<string[]>([]);\r\n\r\n push(id: string): void {\r\n this._stack.update(stack => [...stack, id]);\r\n }\r\n\r\n pop(id: string): void {\r\n this._stack.update(stack => stack.filter(s => s !== id));\r\n }\r\n\r\n isTop(id: string): boolean {\r\n const stack = this._stack();\r\n return stack.length > 0 && stack[stack.length - 1] === id;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n OnDestroy,\r\n computed,\r\n contentChild,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n untracked,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ModalTitleComponent } from './modal-title.component';\r\nimport { ModalStackService } from './modal.service';\r\n\r\nlet _modalIdCounter = 0;\r\n\r\nexport type ModalMaxWidth = 'sm' | 'md' | 'lg' | 'xl' | 'full';\r\nexport type ModalScroll = 'dialog' | 'body';\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [],\r\n selector: 'ls-modal',\r\n standalone: true,\r\n styleUrls: ['./modal.component.css'],\r\n template: `\r\n @if (open()) {\r\n <div [class]=\"overlayClasses()\" (click)=\"onBackdropClick()\">\r\n <div\r\n #panel\r\n [attr.aria-labelledby]=\"labelledById()\"\r\n [attr.aria-modal]=\"true\"\r\n [class]=\"panelClasses()\"\r\n role=\"dialog\"\r\n tabindex=\"-1\"\r\n (click)=\"$event.stopPropagation()\">\r\n @if (showCloseButton()) {\r\n <button\r\n aria-label=\"Close\"\r\n class=\"modal-close-btn\"\r\n type=\"button\"\r\n (click)=\"onCloseButtonClick()\">\r\n <i class=\"ls-icon ls-x ls-icon-sm\"></i>\r\n </button>\r\n }\r\n <ng-content />\r\n </div>\r\n </div>\r\n }\r\n `,\r\n})\r\nexport class ModalComponent implements OnDestroy {\r\n readonly open = input<boolean>(false);\r\n readonly disableBackdropClose = input<boolean>(false);\r\n readonly fullScreen = input<boolean>(false);\r\n readonly fullWidth = input<boolean>(false);\r\n readonly maxWidth = input<ModalMaxWidth>('md');\r\n readonly scroll = input<ModalScroll>('dialog');\r\n readonly showCloseButton = input<boolean>(true);\r\n readonly closed = output<void>();\r\n\r\n private readonly _modalStackService = inject(ModalStackService);\r\n private readonly _titleComponent = contentChild(ModalTitleComponent);\r\n private readonly _panel = viewChild<ElementRef<HTMLElement>>('panel');\r\n private readonly _id = `ls-modal-${++_modalIdCounter}`;\r\n private _previouslyFocused: Element | null = null;\r\n\r\n protected readonly labelledById = computed(() => {\r\n const title = this._titleComponent();\r\n return title ? title.id : null;\r\n });\r\n\r\n protected readonly overlayClasses = computed(() => {\r\n const classes = ['modal-overlay'];\r\n if (this.scroll() === 'body') classes.push('modal-overlay-body');\r\n return classes.join(' ');\r\n });\r\n\r\n protected readonly panelClasses = computed(() => {\r\n const classes = [\r\n 'modal-panel',\r\n `modal-max-${this.maxWidth()}`,\r\n `modal-scroll-${this.scroll()}`,\r\n ];\r\n if (this.fullScreen()) classes.push('modal-full-screen');\r\n if (this.fullWidth()) classes.push('modal-full-width');\r\n if (this.showCloseButton()) classes.push('modal-has-close-btn');\r\n return classes.join(' ');\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.open()) {\r\n this._previouslyFocused = document.activeElement;\r\n this._modalStackService.push(this._id);\r\n setTimeout(() => {\r\n untracked(() => this._panel()?.nativeElement.focus());\r\n }, 0);\r\n } else {\r\n this._modalStackService.pop(this._id);\r\n (this._previouslyFocused as HTMLElement)?.focus?.();\r\n this._previouslyFocused = null;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.open()) {\r\n this._modalStackService.pop(this._id);\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n protected onEscape(): void {\r\n if (this.open() && this._modalStackService.isTop(this._id)) {\r\n this.closed.emit();\r\n }\r\n }\r\n\r\n protected onBackdropClick(): void {\r\n if (!this.disableBackdropClose()) {\r\n this.closed.emit();\r\n }\r\n }\r\n\r\n protected onCloseButtonClick(): void {\r\n this.closed.emit();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'modal-content' },\r\n imports: [],\r\n selector: 'ls-modal-content',\r\n standalone: true,\r\n template: `<ng-content />`,\r\n})\r\nexport class ModalContentComponent {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n DestroyRef,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n Renderer2,\r\n signal,\r\n untracked,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nexport type PopoverPlacement = 'top' | 'bottom' | 'left' | 'right';\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'ls-popover',\r\n standalone: true,\r\n styleUrls: ['./popover.component.css'],\r\n template: `\r\n @if (isOpen() || _isAnimating()) {\r\n <div\r\n [class]=\"_panelClasses()\"\r\n [class.popover-enter]=\"isOpen() && _isAnimating()\"\r\n [class.popover-exit]=\"!isOpen() && _isAnimating()\"\r\n (animationend)=\"_onAnimationEnd()\"\r\n (mouseenter)=\"_onPanelMouseEnter()\"\r\n (mouseleave)=\"_onPanelMouseLeave()\"\r\n role=\"dialog\"\r\n aria-modal=\"false\"\r\n #panelRef>\r\n @if (showArrow()) {\r\n <span [class]=\"_arrowClasses()\"></span>\r\n }\r\n <ng-content />\r\n </div>\r\n }\r\n `,\r\n})\r\nexport class PopoverComponent {\r\n private readonly _renderer = inject(Renderer2);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n private readonly _document = inject(DOCUMENT);\r\n private readonly _elementRef = inject(ElementRef);\r\n private _cleanupScroll: (() => void) | null = null;\r\n\r\n readonly placement = input<PopoverPlacement>('bottom');\r\n readonly showArrow = input<boolean>(true);\r\n readonly offset = input<number>(8);\r\n readonly autoFlip = input<boolean>(true);\r\n readonly trigger = input<HTMLElement | undefined>(undefined);\r\n\r\n readonly isOpen = model<boolean>(false);\r\n\r\n readonly onOpened = output<void>();\r\n readonly onHidden = output<void>();\r\n\r\n private readonly _panelRef = viewChild<ElementRef>('panelRef');\r\n\r\n readonly _currentPlacement = signal<PopoverPlacement>('bottom');\r\n readonly _isAnimating = signal(false);\r\n\r\n private _cleanupClickOutside: (() => void) | null = null;\r\n private _cleanupEscape: (() => void) | null = null;\r\n private _hoverBridgeTimeout: ReturnType<typeof setTimeout> | null =\r\n null;\r\n private _wasOpen = false;\r\n\r\n readonly _panelClasses = computed(() =>\r\n ['popover-panel', `popover-${this._currentPlacement()}`].join(' '),\r\n );\r\n\r\n readonly _arrowClasses = computed(\r\n () =>\r\n `popover-arrow popover-arrow-${this._currentPlacement()}`,\r\n );\r\n\r\n constructor() {\r\n effect(() => {\r\n const isOpen = this.isOpen();\r\n\r\n untracked(() => {\r\n if (isOpen) {\r\n this._currentPlacement.set(this.placement());\r\n this._isAnimating.set(true);\r\n this._setupListeners();\r\n setTimeout(() => {\r\n if (this.isOpen()) {\r\n this._computePosition();\r\n }\r\n }, 0);\r\n this._wasOpen = true;\r\n } else if (this._wasOpen) {\r\n this._isAnimating.set(true);\r\n this._wasOpen = false;\r\n } else {\r\n this._removeListeners();\r\n }\r\n });\r\n });\r\n\r\n this._destroyRef.onDestroy(() => {\r\n this._removeListeners();\r\n if (this._hoverBridgeTimeout) {\r\n clearTimeout(this._hoverBridgeTimeout);\r\n }\r\n });\r\n }\r\n\r\n open(): void {\r\n this.isOpen.set(true);\r\n }\r\n\r\n close(): void {\r\n this.isOpen.set(false);\r\n }\r\n\r\n toggle(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n _onAnimationEnd(): void {\r\n this._isAnimating.set(false);\r\n if (this.isOpen()) {\r\n this.onOpened.emit();\r\n } else {\r\n this._removeListeners();\r\n this.onHidden.emit();\r\n }\r\n }\r\n\r\n _onPanelMouseEnter(): void {\r\n if (this._hoverBridgeTimeout) {\r\n clearTimeout(this._hoverBridgeTimeout);\r\n this._hoverBridgeTimeout = null;\r\n }\r\n }\r\n\r\n _onPanelMouseLeave(): void {\r\n this._hoverBridgeTimeout = setTimeout(\r\n () => this.close(),\r\n 100,\r\n );\r\n }\r\n\r\n private _computePosition(): void {\r\n const anchor =\r\n this.trigger() ??\r\n this._elementRef.nativeElement.parentElement;\r\n const panel = this._panelRef()?.nativeElement;\r\n\r\n if (!anchor || !panel) return;\r\n\r\n const anchorRect = anchor.getBoundingClientRect();\r\n const panelRect = panel.getBoundingClientRect();\r\n const offset = this.offset();\r\n\r\n let placement = this._currentPlacement();\r\n if (this.autoFlip()) {\r\n placement = this._getFlippedPlacement(\r\n placement,\r\n anchorRect,\r\n panelRect,\r\n offset,\r\n );\r\n this._currentPlacement.set(placement);\r\n }\r\n\r\n let top = 0;\r\n let left = 0;\r\n\r\n switch (placement) {\r\n case 'top':\r\n top = anchorRect.top - panelRect.height - offset;\r\n left =\r\n anchorRect.left +\r\n (anchorRect.width - panelRect.width) / 2;\r\n break;\r\n case 'bottom':\r\n top = anchorRect.bottom + offset;\r\n left =\r\n anchorRect.left +\r\n (anchorRect.width - panelRect.width) / 2;\r\n break;\r\n case 'left':\r\n top =\r\n anchorRect.top +\r\n (anchorRect.height - panelRect.height) / 2;\r\n left = anchorRect.left - panelRect.width - offset;\r\n break;\r\n case 'right':\r\n top =\r\n anchorRect.top +\r\n (anchorRect.height - panelRect.height) / 2;\r\n left = anchorRect.right + offset;\r\n break;\r\n }\r\n\r\n panel.style.setProperty('--popover-top', `${top}px`);\r\n panel.style.setProperty('--popover-left', `${left}px`);\r\n }\r\n\r\n private _getFlippedPlacement(\r\n placement: PopoverPlacement,\r\n anchorRect: DOMRect,\r\n panelRect: DOMRect,\r\n offset: number,\r\n ): PopoverPlacement {\r\n const viewportWidth =\r\n this._document.defaultView?.innerWidth ?? 0;\r\n const viewportHeight =\r\n this._document.defaultView?.innerHeight ?? 0;\r\n\r\n const opposites: Record<\r\n PopoverPlacement,\r\n PopoverPlacement\r\n > = {\r\n top: 'bottom',\r\n bottom: 'top',\r\n left: 'right',\r\n right: 'left',\r\n };\r\n\r\n switch (placement) {\r\n case 'top':\r\n if (anchorRect.top - panelRect.height - offset < 0) {\r\n return opposites[placement];\r\n }\r\n break;\r\n case 'bottom':\r\n if (\r\n anchorRect.bottom + panelRect.height + offset >\r\n viewportHeight\r\n ) {\r\n return opposites[placement];\r\n }\r\n break;\r\n case 'left':\r\n if (anchorRect.left - panelRect.width - offset < 0) {\r\n return opposites[placement];\r\n }\r\n break;\r\n case 'right':\r\n if (\r\n anchorRect.right + panelRect.width + offset >\r\n viewportWidth\r\n ) {\r\n return opposites[placement];\r\n }\r\n break;\r\n }\r\n\r\n return placement;\r\n }\r\n\r\n private _setupListeners(): void {\r\n this._removeListeners();\r\n\r\n this._cleanupClickOutside = this._renderer.listen(\r\n this._document,\r\n 'click',\r\n (event: MouseEvent) => {\r\n const anchor =\r\n this.trigger() ??\r\n this._elementRef.nativeElement.parentElement;\r\n const panel = this._panelRef()?.nativeElement;\r\n const target = event.target as Node;\r\n\r\n if (\r\n panel &&\r\n !panel.contains(target) &&\r\n anchor &&\r\n !anchor.contains(target)\r\n ) {\r\n this.close();\r\n }\r\n },\r\n );\r\n\r\n this._cleanupEscape = this._renderer.listen(\r\n this._document,\r\n 'keydown',\r\n (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n this.close();\r\n }\r\n },\r\n );\r\n\r\n this._cleanupScroll = this._renderer.listen(\r\n 'window',\r\n 'scroll',\r\n () => {\r\n if (this.isOpen()) {\r\n this.close();\r\n }\r\n },\r\n { capture: true }\r\n );\r\n }\r\n\r\n private _removeListeners(): void {\r\n if (this._cleanupClickOutside) {\r\n this._cleanupClickOutside();\r\n this._cleanupClickOutside = null;\r\n }\r\n if (this._cleanupEscape) {\r\n this._cleanupEscape();\r\n this._cleanupEscape = null;\r\n }\r\n if (this._cleanupScroll) {\r\n this._cleanupScroll();\r\n this._cleanupScroll = null;\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\n\r\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';\r\nexport type TooltipBackground =\r\n | 'primary'\r\n | 'success'\r\n | 'info'\r\n | 'danger'\r\n | 'warning'\r\n | 'secondary'\r\n | 'dark';\r\n\r\nlet nextId = 0;\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'ls-tooltip',\r\n standalone: true,\r\n styleUrls: ['./tooltip.component.css'],\r\n template: `\r\n <span\r\n class=\"ls-tooltip-trigger\"\r\n [class.ls-tooltip-disabled]=\"disabled()\"\r\n [attr.aria-describedby]=\"disabled() ? null : _tooltipId\"\r\n (mouseenter)=\"show()\"\r\n (mouseleave)=\"hide()\"\r\n (focus)=\"show()\"\r\n (blur)=\"hide()\">\r\n <ng-content />\r\n @if (_isVisible() && !disabled()) {\r\n <span\r\n [id]=\"_tooltipId\"\r\n role=\"tooltip\"\r\n [attr.aria-hidden]=\"!_isVisible()\"\r\n [class]=\"tooltipClasses\">\r\n {{ content() }}\r\n <span class=\"tooltip-arrow\"></span>\r\n </span>\r\n }\r\n </span>\r\n `,\r\n})\r\nexport class TooltipComponent {\r\n readonly content = input.required<string>();\r\n readonly placement = input<TooltipPlacement>('top');\r\n readonly backgroundClass = input<TooltipBackground>('dark');\r\n readonly disabled = input<boolean>(false);\r\n\r\n protected readonly _isVisible = signal(false);\r\n protected readonly _tooltipId = `ls-tooltip-${nextId++}`;\r\n\r\n get tooltipClasses(): string {\r\n return [\r\n 'tooltip-box',\r\n `tooltip-${this.placement()}`,\r\n `tooltip-bg-${this.backgroundClass()}`,\r\n ].join(' ');\r\n }\r\n\r\n show() {\r\n this._isVisible.set(true);\r\n }\r\n\r\n hide() {\r\n this._isVisible.set(false);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, computed, ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
3
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
4
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
5
|
+
|
|
6
|
+
class LinkComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.variant = input('inherit', ...(ngDevMode ? [{ debugName: "variant" }] : []));
|
|
9
|
+
this.align = input('inherit', ...(ngDevMode ? [{ debugName: "align" }] : []));
|
|
10
|
+
this.color = input('primary', ...(ngDevMode ? [{ debugName: "color" }] : []));
|
|
11
|
+
this.href = input('', ...(ngDevMode ? [{ debugName: "href" }] : []));
|
|
12
|
+
this.underline = input('always', ...(ngDevMode ? [{ debugName: "underline" }] : []));
|
|
13
|
+
this.target = input('', ...(ngDevMode ? [{ debugName: "target" }] : []));
|
|
14
|
+
this.rel = input('', ...(ngDevMode ? [{ debugName: "rel" }] : []));
|
|
15
|
+
this.linkClasses = computed(() => {
|
|
16
|
+
const v = this.variant();
|
|
17
|
+
const c = this.color();
|
|
18
|
+
const a = this.align();
|
|
19
|
+
const u = this.underline();
|
|
20
|
+
return `link text text-${v} link-color-${c} text-align-${a} link-underline-${u}`;
|
|
21
|
+
}, ...(ngDevMode ? [{ debugName: "linkClasses" }] : []));
|
|
22
|
+
this.safeRel = computed(() => {
|
|
23
|
+
const t = this.target();
|
|
24
|
+
const r = this.rel();
|
|
25
|
+
if (t !== '_blank') {
|
|
26
|
+
return r;
|
|
27
|
+
}
|
|
28
|
+
if (!r) {
|
|
29
|
+
return 'noopener';
|
|
30
|
+
}
|
|
31
|
+
const lower = r.toLowerCase();
|
|
32
|
+
if (lower.includes('noopener') || lower.includes('noreferrer')) {
|
|
33
|
+
return r;
|
|
34
|
+
}
|
|
35
|
+
return `${r} noopener`;
|
|
36
|
+
}, ...(ngDevMode ? [{ debugName: "safeRel" }] : []));
|
|
37
|
+
}
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: LinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.2", type: LinkComponent, isStandalone: true, selector: "ls-link", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, underline: { classPropertyName: "underline", publicName: "underline", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, rel: { classPropertyName: "rel", publicName: "rel", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
40
|
+
<a
|
|
41
|
+
[attr.href]="href() || null"
|
|
42
|
+
[attr.rel]="safeRel() || null"
|
|
43
|
+
[attr.target]="target() || null"
|
|
44
|
+
[class]="linkClasses()"
|
|
45
|
+
>
|
|
46
|
+
<ng-content />
|
|
47
|
+
</a>
|
|
48
|
+
`, isInline: true, styles: [":host{display:contents}.link.text{display:inline;margin:0;cursor:pointer;transition:color var(--ls-transition-duration),text-decoration var(--ls-transition-duration)}.link-color-inherit{color:inherit}.link-color-primary{color:var(--ls-color-primary)}.link-color-secondary{color:var(--ls-color-secondary)}.link-color-success{color:var(--ls-color-success)}.link-color-error{color:var(--ls-color-danger)}.link-color-info{color:var(--ls-color-info)}.link-color-warning{color:var(--ls-color-warning)}.link-color-primary:hover,.link-color-secondary:hover,.link-color-success:hover,.link-color-error:hover,.link-color-info:hover,.link-color-warning:hover{opacity:.8}.link-underline-always{text-decoration:underline}.link-underline-hover{text-decoration:none}.link-underline-hover:hover{text-decoration:underline}.link-underline-none{text-decoration:none}body.dark .link-color-inherit{color:#e0e6ed}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
49
|
+
}
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: LinkComponent, decorators: [{
|
|
51
|
+
type: Component,
|
|
52
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ls-link', standalone: true, template: `
|
|
53
|
+
<a
|
|
54
|
+
[attr.href]="href() || null"
|
|
55
|
+
[attr.rel]="safeRel() || null"
|
|
56
|
+
[attr.target]="target() || null"
|
|
57
|
+
[class]="linkClasses()"
|
|
58
|
+
>
|
|
59
|
+
<ng-content />
|
|
60
|
+
</a>
|
|
61
|
+
`, styles: [":host{display:contents}.link.text{display:inline;margin:0;cursor:pointer;transition:color var(--ls-transition-duration),text-decoration var(--ls-transition-duration)}.link-color-inherit{color:inherit}.link-color-primary{color:var(--ls-color-primary)}.link-color-secondary{color:var(--ls-color-secondary)}.link-color-success{color:var(--ls-color-success)}.link-color-error{color:var(--ls-color-danger)}.link-color-info{color:var(--ls-color-info)}.link-color-warning{color:var(--ls-color-warning)}.link-color-primary:hover,.link-color-secondary:hover,.link-color-success:hover,.link-color-error:hover,.link-color-info:hover,.link-color-warning:hover{opacity:.8}.link-underline-always{text-decoration:underline}.link-underline-hover{text-decoration:none}.link-underline-hover:hover{text-decoration:underline}.link-underline-none{text-decoration:none}body.dark .link-color-inherit{color:#e0e6ed}\n"] }]
|
|
62
|
+
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], underline: [{ type: i0.Input, args: [{ isSignal: true, alias: "underline", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], rel: [{ type: i0.Input, args: [{ isSignal: true, alias: "rel", required: false }] }] } });
|
|
63
|
+
|
|
64
|
+
class TextComponent {
|
|
65
|
+
constructor() {
|
|
66
|
+
this.variant = input('h1', ...(ngDevMode ? [{ debugName: "variant" }] : []));
|
|
67
|
+
this.color = input('inherit', ...(ngDevMode ? [{ debugName: "color" }] : []));
|
|
68
|
+
this.align = input('inherit', ...(ngDevMode ? [{ debugName: "align" }] : []));
|
|
69
|
+
this.textClasses = computed(() => {
|
|
70
|
+
return `text text-${this.variant()} text-color-${this.color()} text-align-${this.align()}`;
|
|
71
|
+
}, ...(ngDevMode ? [{ debugName: "textClasses" }] : []));
|
|
72
|
+
}
|
|
73
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: TextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: TextComponent, isStandalone: true, selector: "ls-text", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
75
|
+
<ng-template #content>
|
|
76
|
+
<ng-content></ng-content>
|
|
77
|
+
</ng-template>
|
|
78
|
+
|
|
79
|
+
@switch (variant()) {
|
|
80
|
+
@case ('h1') {
|
|
81
|
+
<h1 [class]="textClasses()">
|
|
82
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
83
|
+
</h1>
|
|
84
|
+
}
|
|
85
|
+
@case ('h2') {
|
|
86
|
+
<h2 [class]="textClasses()">
|
|
87
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
88
|
+
</h2>
|
|
89
|
+
}
|
|
90
|
+
@case ('h3') {
|
|
91
|
+
<h3 [class]="textClasses()">
|
|
92
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
93
|
+
</h3>
|
|
94
|
+
}
|
|
95
|
+
@case ('h4') {
|
|
96
|
+
<h4 [class]="textClasses()">
|
|
97
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
98
|
+
</h4>
|
|
99
|
+
}
|
|
100
|
+
@case ('h5') {
|
|
101
|
+
<h5 [class]="textClasses()">
|
|
102
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
103
|
+
</h5>
|
|
104
|
+
}
|
|
105
|
+
@case ('h6') {
|
|
106
|
+
<h6 [class]="textClasses()">
|
|
107
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
108
|
+
</h6>
|
|
109
|
+
}
|
|
110
|
+
@case ('body1') {
|
|
111
|
+
<p [class]="textClasses()">
|
|
112
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
113
|
+
</p>
|
|
114
|
+
}
|
|
115
|
+
@case ('body2') {
|
|
116
|
+
<p [class]="textClasses()">
|
|
117
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
118
|
+
</p>
|
|
119
|
+
}
|
|
120
|
+
@case ('subtitle1') {
|
|
121
|
+
<h6 [class]="textClasses()">
|
|
122
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
123
|
+
</h6>
|
|
124
|
+
}
|
|
125
|
+
@case ('subtitle2') {
|
|
126
|
+
<h6 [class]="textClasses()">
|
|
127
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
128
|
+
</h6>
|
|
129
|
+
}
|
|
130
|
+
@case ('caption') {
|
|
131
|
+
<span [class]="textClasses()">
|
|
132
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
133
|
+
</span>
|
|
134
|
+
}
|
|
135
|
+
@case ('overline') {
|
|
136
|
+
<span [class]="textClasses()">
|
|
137
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
138
|
+
</span>
|
|
139
|
+
}
|
|
140
|
+
@case ('button') {
|
|
141
|
+
<span [class]="textClasses()">
|
|
142
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
143
|
+
</span>
|
|
144
|
+
}
|
|
145
|
+
@case ('inherit') {
|
|
146
|
+
<span [class]="textClasses()">
|
|
147
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
148
|
+
</span>
|
|
149
|
+
}
|
|
150
|
+
@default {
|
|
151
|
+
<span [class]="textClasses()">
|
|
152
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
153
|
+
</span>
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
`, isInline: true, styles: [".text{margin-bottom:.5rem;margin-top:0}.text-h1{font-size:40px;font-weight:600;line-height:1}.text-h2{font-size:32px;font-weight:600;line-height:1}.text-h3{font-size:28px;font-weight:600;line-height:1}.text-h4{font-size:24px;font-weight:600;line-height:1}.text-h5{font-size:20px;font-weight:600;line-height:1}.text-h6{font-size:16px;font-weight:600;line-height:1}.text-body1{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:.00938em}.text-body2{font-size:.875rem;font-weight:400;line-height:1.43;letter-spacing:.01071em}.text-subtitle1{font-size:1rem;font-weight:400;line-height:1.75;letter-spacing:.00938em}.text-subtitle2{font-size:.875rem;font-weight:500;line-height:1.57;letter-spacing:.00714em}.text-caption{font-size:.75rem;font-weight:400;line-height:1.66;letter-spacing:.03333em}.text-overline{font-size:.75rem;font-weight:400;line-height:2.66;letter-spacing:.08333em;text-transform:uppercase}.text-button{font-size:.875rem;font-weight:500;line-height:1.75;letter-spacing:.02857em;text-transform:uppercase}.text-inherit{font-size:inherit;font-weight:inherit;line-height:inherit;letter-spacing:inherit}.text-color-default{color:var(--ls-color-dark)}.text-color-primary{color:var(--ls-color-primary)}.text-color-secondary{color:var(--ls-color-secondary)}.text-color-success{color:var(--ls-color-success)}.text-color-error{color:var(--ls-color-danger)}.text-color-warning{color:var(--ls-color-warning)}.text-color-info{color:var(--ls-color-info)}.text-color-dark{color:var(--ls-color-dark)}.text-align-left{text-align:left}.text-align-center{text-align:center}.text-align-right{text-align:right}.text-align-justify{text-align:justify}.text-align-inherit{text-align:inherit}body.dark .text-color-default,body.dark .text-color-dark{color:#e0e6ed}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
157
|
+
}
|
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: TextComponent, decorators: [{
|
|
159
|
+
type: Component,
|
|
160
|
+
args: [{ selector: 'ls-text', standalone: true, imports: [NgTemplateOutlet], template: `
|
|
161
|
+
<ng-template #content>
|
|
162
|
+
<ng-content></ng-content>
|
|
163
|
+
</ng-template>
|
|
164
|
+
|
|
165
|
+
@switch (variant()) {
|
|
166
|
+
@case ('h1') {
|
|
167
|
+
<h1 [class]="textClasses()">
|
|
168
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
169
|
+
</h1>
|
|
170
|
+
}
|
|
171
|
+
@case ('h2') {
|
|
172
|
+
<h2 [class]="textClasses()">
|
|
173
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
174
|
+
</h2>
|
|
175
|
+
}
|
|
176
|
+
@case ('h3') {
|
|
177
|
+
<h3 [class]="textClasses()">
|
|
178
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
179
|
+
</h3>
|
|
180
|
+
}
|
|
181
|
+
@case ('h4') {
|
|
182
|
+
<h4 [class]="textClasses()">
|
|
183
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
184
|
+
</h4>
|
|
185
|
+
}
|
|
186
|
+
@case ('h5') {
|
|
187
|
+
<h5 [class]="textClasses()">
|
|
188
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
189
|
+
</h5>
|
|
190
|
+
}
|
|
191
|
+
@case ('h6') {
|
|
192
|
+
<h6 [class]="textClasses()">
|
|
193
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
194
|
+
</h6>
|
|
195
|
+
}
|
|
196
|
+
@case ('body1') {
|
|
197
|
+
<p [class]="textClasses()">
|
|
198
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
199
|
+
</p>
|
|
200
|
+
}
|
|
201
|
+
@case ('body2') {
|
|
202
|
+
<p [class]="textClasses()">
|
|
203
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
204
|
+
</p>
|
|
205
|
+
}
|
|
206
|
+
@case ('subtitle1') {
|
|
207
|
+
<h6 [class]="textClasses()">
|
|
208
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
209
|
+
</h6>
|
|
210
|
+
}
|
|
211
|
+
@case ('subtitle2') {
|
|
212
|
+
<h6 [class]="textClasses()">
|
|
213
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
214
|
+
</h6>
|
|
215
|
+
}
|
|
216
|
+
@case ('caption') {
|
|
217
|
+
<span [class]="textClasses()">
|
|
218
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
219
|
+
</span>
|
|
220
|
+
}
|
|
221
|
+
@case ('overline') {
|
|
222
|
+
<span [class]="textClasses()">
|
|
223
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
224
|
+
</span>
|
|
225
|
+
}
|
|
226
|
+
@case ('button') {
|
|
227
|
+
<span [class]="textClasses()">
|
|
228
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
229
|
+
</span>
|
|
230
|
+
}
|
|
231
|
+
@case ('inherit') {
|
|
232
|
+
<span [class]="textClasses()">
|
|
233
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
234
|
+
</span>
|
|
235
|
+
}
|
|
236
|
+
@default {
|
|
237
|
+
<span [class]="textClasses()">
|
|
238
|
+
<ng-container *ngTemplateOutlet="content" />
|
|
239
|
+
</span>
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".text{margin-bottom:.5rem;margin-top:0}.text-h1{font-size:40px;font-weight:600;line-height:1}.text-h2{font-size:32px;font-weight:600;line-height:1}.text-h3{font-size:28px;font-weight:600;line-height:1}.text-h4{font-size:24px;font-weight:600;line-height:1}.text-h5{font-size:20px;font-weight:600;line-height:1}.text-h6{font-size:16px;font-weight:600;line-height:1}.text-body1{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:.00938em}.text-body2{font-size:.875rem;font-weight:400;line-height:1.43;letter-spacing:.01071em}.text-subtitle1{font-size:1rem;font-weight:400;line-height:1.75;letter-spacing:.00938em}.text-subtitle2{font-size:.875rem;font-weight:500;line-height:1.57;letter-spacing:.00714em}.text-caption{font-size:.75rem;font-weight:400;line-height:1.66;letter-spacing:.03333em}.text-overline{font-size:.75rem;font-weight:400;line-height:2.66;letter-spacing:.08333em;text-transform:uppercase}.text-button{font-size:.875rem;font-weight:500;line-height:1.75;letter-spacing:.02857em;text-transform:uppercase}.text-inherit{font-size:inherit;font-weight:inherit;line-height:inherit;letter-spacing:inherit}.text-color-default{color:var(--ls-color-dark)}.text-color-primary{color:var(--ls-color-primary)}.text-color-secondary{color:var(--ls-color-secondary)}.text-color-success{color:var(--ls-color-success)}.text-color-error{color:var(--ls-color-danger)}.text-color-warning{color:var(--ls-color-warning)}.text-color-info{color:var(--ls-color-info)}.text-color-dark{color:var(--ls-color-dark)}.text-align-left{text-align:left}.text-align-center{text-align:center}.text-align-right{text-align:right}.text-align-justify{text-align:justify}.text-align-inherit{text-align:inherit}body.dark .text-color-default,body.dark .text-color-dark{color:#e0e6ed}\n"] }]
|
|
243
|
+
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }] } });
|
|
244
|
+
|
|
245
|
+
class TagComponent {
|
|
246
|
+
constructor() {
|
|
247
|
+
this._sanitizer = inject(DomSanitizer);
|
|
248
|
+
this.variant = input('filled', ...(ngDevMode ? [{ debugName: "variant" }] : []));
|
|
249
|
+
this.color = input('primary', ...(ngDevMode ? [{ debugName: "color" }] : []));
|
|
250
|
+
this.startIcon = input(...(ngDevMode ? [undefined, { debugName: "startIcon" }] : []));
|
|
251
|
+
this.endIcon = input(...(ngDevMode ? [undefined, { debugName: "endIcon" }] : []));
|
|
252
|
+
}
|
|
253
|
+
get sanitizedStartIcon() {
|
|
254
|
+
return this._sanitizer.bypassSecurityTrustHtml(this.startIcon() ?? '');
|
|
255
|
+
}
|
|
256
|
+
get sanitizedEndIcon() {
|
|
257
|
+
return this._sanitizer.bypassSecurityTrustHtml(this.endIcon() ?? '');
|
|
258
|
+
}
|
|
259
|
+
get tagClasses() {
|
|
260
|
+
return `tag tag-${this.variant()}-${this.color()}`;
|
|
261
|
+
}
|
|
262
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: TagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
263
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: TagComponent, isStandalone: true, selector: "ls-tag", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, startIcon: { classPropertyName: "startIcon", publicName: "startIcon", isSignal: true, isRequired: false, transformFunction: null }, endIcon: { classPropertyName: "endIcon", publicName: "endIcon", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
264
|
+
<span [class]="tagClasses">
|
|
265
|
+
@if (startIcon()) {
|
|
266
|
+
<span
|
|
267
|
+
class="tag-icon tag-icon--start"
|
|
268
|
+
[innerHTML]="sanitizedStartIcon"></span>
|
|
269
|
+
}
|
|
270
|
+
<ng-content />
|
|
271
|
+
@if (endIcon()) {
|
|
272
|
+
<span
|
|
273
|
+
class="tag-icon tag-icon--end"
|
|
274
|
+
[innerHTML]="sanitizedEndIcon"></span>
|
|
275
|
+
}
|
|
276
|
+
</span>
|
|
277
|
+
`, isInline: true, styles: [":host{display:contents}.tag{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:.75rem;font-weight:600;line-height:1;height:24px;padding:0 8px;border-radius:6px;white-space:nowrap;cursor:default;-webkit-user-select:none;user-select:none;transition:all .15s ease-in-out}.tag-icon{display:inline-flex;align-items:center;flex-shrink:0;width:16px;height:16px}.tag-icon svg{width:100%;height:100%}.tag-filled-primary{border:none;color:#fff;background-color:var(--ls-color-primary)}.tag-filled-secondary{border:none;color:#fff;background-color:var(--ls-color-secondary)}.tag-filled-success{border:none;color:#fff;background-color:var(--ls-color-success)}.tag-filled-error{border:none;color:#fff;background-color:var(--ls-color-error)}.tag-filled-info{border:none;color:#fff;background-color:var(--ls-color-info)}.tag-filled-warning{border:none;color:#fff;background-color:var(--ls-color-warning)}.tag-filled-inherit{border:none;color:#fff;background-color:var(--ls-color-dark)}.tag-outlined-primary{background-color:transparent;border:1px solid var(--ls-color-primary);color:var(--ls-color-primary)}.tag-outlined-secondary{background-color:transparent;border:1px solid var(--ls-color-secondary);color:var(--ls-color-secondary)}.tag-outlined-success{background-color:transparent;border:1px solid var(--ls-color-success);color:var(--ls-color-success)}.tag-outlined-error{background-color:transparent;border:1px solid var(--ls-color-error);color:var(--ls-color-error)}.tag-outlined-info{background-color:transparent;border:1px solid var(--ls-color-info);color:var(--ls-color-info)}.tag-outlined-warning{background-color:transparent;border:1px solid var(--ls-color-warning);color:var(--ls-color-warning)}.tag-outlined-inherit{background-color:transparent;border:1px solid var(--ls-color-dark);color:var(--ls-color-dark)}.tag-soft-primary{border:none;color:var(--ls-color-primary);background-color:var(--ls-color-primary-dark-light)}.tag-soft-secondary{border:none;color:var(--ls-color-secondary);background-color:var(--ls-color-secondary-dark-light)}.tag-soft-success{border:none;color:var(--ls-color-success);background-color:var(--ls-color-success-dark-light)}.tag-soft-error{border:none;color:var(--ls-color-error);background-color:var(--ls-color-error-dark-light)}.tag-soft-info{border:none;color:var(--ls-color-info);background-color:var(--ls-color-info-dark-light)}.tag-soft-warning{border:none;color:var(--ls-color-warning);background-color:var(--ls-color-warning-dark-light)}.tag-soft-inherit{border:none;color:var(--ls-color-dark);background-color:var(--ls-color-dark-dark-light)}.tag-inverted-primary{border:none;background-color:#fff;color:var(--ls-color-primary)}.tag-inverted-secondary{border:none;background-color:#fff;color:var(--ls-color-secondary)}.tag-inverted-success{border:none;background-color:#fff;color:var(--ls-color-success)}.tag-inverted-error{border:none;background-color:#fff;color:var(--ls-color-error)}.tag-inverted-info{border:none;background-color:#fff;color:var(--ls-color-info)}.tag-inverted-warning{border:none;background-color:#fff;color:var(--ls-color-warning)}.tag-inverted-inherit{border:none;background-color:#fff;color:var(--ls-color-dark)}body.dark .tag-filled-inherit{color:var(--ls-color-dark);background-color:#e0e6ed}body.dark .tag-outlined-inherit{border-color:#e0e6ed;color:#e0e6ed}body.dark .tag-soft-inherit{color:#e0e6ed;background-color:#e0e6ed26}body.dark .tag-inverted-primary,body.dark .tag-inverted-secondary,body.dark .tag-inverted-success,body.dark .tag-inverted-error,body.dark .tag-inverted-info,body.dark .tag-inverted-warning{background-color:var(--ls-color-dark)}body.dark .tag-inverted-inherit{color:#e0e6ed;background-color:var(--ls-color-dark)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
278
|
+
}
|
|
279
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: TagComponent, decorators: [{
|
|
280
|
+
type: Component,
|
|
281
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ls-tag', standalone: true, template: `
|
|
282
|
+
<span [class]="tagClasses">
|
|
283
|
+
@if (startIcon()) {
|
|
284
|
+
<span
|
|
285
|
+
class="tag-icon tag-icon--start"
|
|
286
|
+
[innerHTML]="sanitizedStartIcon"></span>
|
|
287
|
+
}
|
|
288
|
+
<ng-content />
|
|
289
|
+
@if (endIcon()) {
|
|
290
|
+
<span
|
|
291
|
+
class="tag-icon tag-icon--end"
|
|
292
|
+
[innerHTML]="sanitizedEndIcon"></span>
|
|
293
|
+
}
|
|
294
|
+
</span>
|
|
295
|
+
`, styles: [":host{display:contents}.tag{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:.75rem;font-weight:600;line-height:1;height:24px;padding:0 8px;border-radius:6px;white-space:nowrap;cursor:default;-webkit-user-select:none;user-select:none;transition:all .15s ease-in-out}.tag-icon{display:inline-flex;align-items:center;flex-shrink:0;width:16px;height:16px}.tag-icon svg{width:100%;height:100%}.tag-filled-primary{border:none;color:#fff;background-color:var(--ls-color-primary)}.tag-filled-secondary{border:none;color:#fff;background-color:var(--ls-color-secondary)}.tag-filled-success{border:none;color:#fff;background-color:var(--ls-color-success)}.tag-filled-error{border:none;color:#fff;background-color:var(--ls-color-error)}.tag-filled-info{border:none;color:#fff;background-color:var(--ls-color-info)}.tag-filled-warning{border:none;color:#fff;background-color:var(--ls-color-warning)}.tag-filled-inherit{border:none;color:#fff;background-color:var(--ls-color-dark)}.tag-outlined-primary{background-color:transparent;border:1px solid var(--ls-color-primary);color:var(--ls-color-primary)}.tag-outlined-secondary{background-color:transparent;border:1px solid var(--ls-color-secondary);color:var(--ls-color-secondary)}.tag-outlined-success{background-color:transparent;border:1px solid var(--ls-color-success);color:var(--ls-color-success)}.tag-outlined-error{background-color:transparent;border:1px solid var(--ls-color-error);color:var(--ls-color-error)}.tag-outlined-info{background-color:transparent;border:1px solid var(--ls-color-info);color:var(--ls-color-info)}.tag-outlined-warning{background-color:transparent;border:1px solid var(--ls-color-warning);color:var(--ls-color-warning)}.tag-outlined-inherit{background-color:transparent;border:1px solid var(--ls-color-dark);color:var(--ls-color-dark)}.tag-soft-primary{border:none;color:var(--ls-color-primary);background-color:var(--ls-color-primary-dark-light)}.tag-soft-secondary{border:none;color:var(--ls-color-secondary);background-color:var(--ls-color-secondary-dark-light)}.tag-soft-success{border:none;color:var(--ls-color-success);background-color:var(--ls-color-success-dark-light)}.tag-soft-error{border:none;color:var(--ls-color-error);background-color:var(--ls-color-error-dark-light)}.tag-soft-info{border:none;color:var(--ls-color-info);background-color:var(--ls-color-info-dark-light)}.tag-soft-warning{border:none;color:var(--ls-color-warning);background-color:var(--ls-color-warning-dark-light)}.tag-soft-inherit{border:none;color:var(--ls-color-dark);background-color:var(--ls-color-dark-dark-light)}.tag-inverted-primary{border:none;background-color:#fff;color:var(--ls-color-primary)}.tag-inverted-secondary{border:none;background-color:#fff;color:var(--ls-color-secondary)}.tag-inverted-success{border:none;background-color:#fff;color:var(--ls-color-success)}.tag-inverted-error{border:none;background-color:#fff;color:var(--ls-color-error)}.tag-inverted-info{border:none;background-color:#fff;color:var(--ls-color-info)}.tag-inverted-warning{border:none;background-color:#fff;color:var(--ls-color-warning)}.tag-inverted-inherit{border:none;background-color:#fff;color:var(--ls-color-dark)}body.dark .tag-filled-inherit{color:var(--ls-color-dark);background-color:#e0e6ed}body.dark .tag-outlined-inherit{border-color:#e0e6ed;color:#e0e6ed}body.dark .tag-soft-inherit{color:#e0e6ed;background-color:#e0e6ed26}body.dark .tag-inverted-primary,body.dark .tag-inverted-secondary,body.dark .tag-inverted-success,body.dark .tag-inverted-error,body.dark .tag-inverted-info,body.dark .tag-inverted-warning{background-color:var(--ls-color-dark)}body.dark .tag-inverted-inherit{color:#e0e6ed;background-color:var(--ls-color-dark)}\n"] }]
|
|
296
|
+
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], startIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "startIcon", required: false }] }], endIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "endIcon", required: false }] }] } });
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Generated bundle index. Do not edit.
|
|
300
|
+
*/
|
|
301
|
+
|
|
302
|
+
export { LinkComponent, TagComponent, TextComponent };
|
|
303
|
+
//# sourceMappingURL=lumston-ds-angular-src-typography.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lumston-ds-angular-src-typography.mjs","sources":["../../../../libs/ds-angular/src/typography/link/link.component.ts","../../../../libs/ds-angular/src/typography/text/text.component.ts","../../../../libs/ds-angular/src/typography/tag/tag.component.ts","../../../../libs/ds-angular/src/typography/lumston-ds-angular-src-typography.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\n\r\nexport type LinkVariant =\r\n | 'h1'\r\n | 'h2'\r\n | 'h3'\r\n | 'h4'\r\n | 'h5'\r\n | 'h6'\r\n | 'body1'\r\n | 'body2'\r\n | 'subtitle1'\r\n | 'subtitle2'\r\n | 'overline'\r\n | 'caption'\r\n | 'button'\r\n | 'inherit';\r\n\r\nexport type LinkAlign =\r\n | 'center'\r\n | 'inherit'\r\n | 'justify'\r\n | 'left'\r\n | 'right';\r\n\r\nexport type LinkColor =\r\n | 'inherit'\r\n | 'primary'\r\n | 'secondary'\r\n | 'success'\r\n | 'error'\r\n | 'info'\r\n | 'warning';\r\n\r\nexport type LinkUnderline = 'always' | 'hover' | 'none';\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'ls-link',\r\n standalone: true,\r\n styleUrls: ['./link.component.css'],\r\n template: `\r\n <a\r\n [attr.href]=\"href() || null\"\r\n [attr.rel]=\"safeRel() || null\"\r\n [attr.target]=\"target() || null\"\r\n [class]=\"linkClasses()\"\r\n >\r\n <ng-content />\r\n </a>\r\n `,\r\n})\r\nexport class LinkComponent {\r\n readonly variant = input<LinkVariant>('inherit');\r\n readonly align = input<LinkAlign>('inherit');\r\n readonly color = input<LinkColor>('primary');\r\n readonly href = input<string>('');\r\n readonly underline = input<LinkUnderline>('always');\r\n readonly target = input<string>('');\r\n readonly rel = input<string>('');\r\n\r\n protected readonly linkClasses = computed(() => {\r\n const v = this.variant();\r\n const c = this.color();\r\n const a = this.align();\r\n const u = this.underline();\r\n return `link text text-${v} link-color-${c} text-align-${a} link-underline-${u}`;\r\n });\r\n\r\n protected readonly safeRel = computed(() => {\r\n const t = this.target();\r\n const r = this.rel();\r\n\r\n if (t !== '_blank') {\r\n return r;\r\n }\r\n\r\n if (!r) {\r\n return 'noopener';\r\n }\r\n\r\n const lower = r.toLowerCase();\r\n if (lower.includes('noopener') || lower.includes('noreferrer')) {\r\n return r;\r\n }\r\n\r\n return `${r} noopener`;\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n input,\r\n computed,\r\n} from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\nexport type TextVariant =\r\n | 'h1'\r\n | 'h2'\r\n | 'h3'\r\n | 'h4'\r\n | 'h5'\r\n | 'h6'\r\n | 'body1'\r\n | 'body2'\r\n | 'subtitle1'\r\n | 'subtitle2'\r\n | 'caption'\r\n | 'overline'\r\n | 'button'\r\n | 'inherit';\r\n\r\nexport type TextColor =\r\n | 'inherit'\r\n | 'primary'\r\n | 'secondary'\r\n | 'success'\r\n | 'error'\r\n | 'warning'\r\n | 'info'\r\n | 'dark';\r\nexport type TextAlign = 'center' | 'inherit' | 'justify' | 'left' | 'right';\r\n\r\n@Component({\r\n selector: 'ls-text',\r\n standalone: true,\r\n imports: [NgTemplateOutlet],\r\n styleUrls: ['./text.component.css'],\r\n template: `\r\n <ng-template #content>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n\r\n @switch (variant()) {\r\n @case ('h1') {\r\n <h1 [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </h1>\r\n }\r\n @case ('h2') {\r\n <h2 [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </h2>\r\n }\r\n @case ('h3') {\r\n <h3 [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </h3>\r\n }\r\n @case ('h4') {\r\n <h4 [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </h4>\r\n }\r\n @case ('h5') {\r\n <h5 [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </h5>\r\n }\r\n @case ('h6') {\r\n <h6 [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </h6>\r\n }\r\n @case ('body1') {\r\n <p [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </p>\r\n }\r\n @case ('body2') {\r\n <p [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </p>\r\n }\r\n @case ('subtitle1') {\r\n <h6 [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </h6>\r\n }\r\n @case ('subtitle2') {\r\n <h6 [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </h6>\r\n }\r\n @case ('caption') {\r\n <span [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </span>\r\n }\r\n @case ('overline') {\r\n <span [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </span>\r\n }\r\n @case ('button') {\r\n <span [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </span>\r\n }\r\n @case ('inherit') {\r\n <span [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </span>\r\n }\r\n @default {\r\n <span [class]=\"textClasses()\">\r\n <ng-container *ngTemplateOutlet=\"content\" />\r\n </span>\r\n }\r\n }\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class TextComponent {\r\n readonly variant = input<TextVariant>('h1');\r\n readonly color = input<TextColor>('inherit');\r\n readonly align = input<TextAlign>('inherit');\r\n\r\n protected readonly textClasses = computed(() => {\r\n return `text text-${this.variant()} text-color-${this.color()} text-align-${this.align()}`;\r\n });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\nexport type TagVariant = 'filled' | 'outlined' | 'soft' | 'inverted';\r\nexport type TagColor =\r\n | 'inherit'\r\n | 'primary'\r\n | 'secondary'\r\n | 'success'\r\n | 'error'\r\n | 'info'\r\n | 'warning';\r\n\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'ls-tag',\r\n standalone: true,\r\n styleUrls: ['./tag.component.css'],\r\n template: `\r\n <span [class]=\"tagClasses\">\r\n @if (startIcon()) {\r\n <span\r\n class=\"tag-icon tag-icon--start\"\r\n [innerHTML]=\"sanitizedStartIcon\"></span>\r\n }\r\n <ng-content />\r\n @if (endIcon()) {\r\n <span\r\n class=\"tag-icon tag-icon--end\"\r\n [innerHTML]=\"sanitizedEndIcon\"></span>\r\n }\r\n </span>\r\n `,\r\n})\r\nexport class TagComponent {\r\n private readonly _sanitizer = inject(DomSanitizer);\r\n\r\n readonly variant = input<TagVariant>('filled');\r\n readonly color = input<TagColor>('primary');\r\n readonly startIcon = input<string>();\r\n readonly endIcon = input<string>();\r\n\r\n get sanitizedStartIcon(): SafeHtml {\r\n return this._sanitizer.bypassSecurityTrustHtml(\r\n this.startIcon() ?? ''\r\n );\r\n }\r\n\r\n get sanitizedEndIcon(): SafeHtml {\r\n return this._sanitizer.bypassSecurityTrustHtml(\r\n this.endIcon() ?? ''\r\n );\r\n }\r\n\r\n get tagClasses(): string {\r\n return `tag tag-${this.variant()}-${this.color()}`;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|