flowbite-angular
Version:
<div align="center"> <h1>:construction: flowbite-angular (unreleased) :construction:</h1> <p> <a href="https://flowbite.com"> <img alt="Flowbite - Tailwind CSS components" width="350" src="https://flowbite.s3.amazonaws.com/github/logo-github
1 lines • 12.5 kB
Source Map (JSON)
{"version":3,"file":"flowbite-angular-scroll-top.mjs","sources":["../../../../libs/flowbite-angular/scroll-top/scroll-top.theme.service.ts","../../../../libs/flowbite-angular/scroll-top/scroll-top.component.ts","../../../../libs/flowbite-angular/scroll-top/scroll-top.theme.ts","../../../../libs/flowbite-angular/scroll-top/flowbite-angular-scroll-top.ts"],"sourcesContent":["import type { ScrollTopClass, ScrollTopProperties, ScrollTopTheme } from './scroll-top.theme';\n\nimport type { FlowbiteThemeService } from 'flowbite-angular';\nimport { mergeTheme } from 'flowbite-angular/utils';\n\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * `InjectionToken` used to import `ScrollTopTheme` value\n *\n * @example\n * ```\n * var theme = inject(FLOWBITE_SCROLL_TOP_THEME_TOKEN)\n * ```\n */\nexport const FLOWBITE_SCROLL_TOP_THEME_TOKEN = new InjectionToken<ScrollTopTheme>(\n 'FLOWBITE_SCROLL_TOP_THEME_TOKEN'\n);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScrollTopThemeService implements FlowbiteThemeService<ScrollTopProperties> {\n private readonly baseTheme = inject(FLOWBITE_SCROLL_TOP_THEME_TOKEN);\n\n public getClasses(properties: ScrollTopProperties): ScrollTopClass {\n const theme: ScrollTopTheme = mergeTheme(this.baseTheme, properties.customStyle);\n\n const output: ScrollTopClass = {\n rootClass: twMerge(\n theme.root.base,\n theme.root.color[properties.color],\n theme.root.position[properties.position]\n ),\n };\n\n return output;\n }\n}\n","import type {\n ScrollTopClass,\n ScrollTopColors,\n ScrollTopPositions,\n ScrollTopTheme,\n} from './scroll-top.theme';\nimport { ScrollTopThemeService } from './scroll-top.theme.service';\n\nimport type { DeepPartial } from 'flowbite-angular';\nimport { BaseComponent } from 'flowbite-angular';\nimport { IconComponent, IconRegistry } from 'flowbite-angular/icon';\nimport { CHEVRON_UP_SVG_ICON } from 'flowbite-angular/utils';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport type { OnInit, TemplateRef } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n InjectionToken,\n makeEnvironmentProviders,\n model,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport const FLOWBITE_SCROLL_TOP_COLOR_DEFAULT_VALUE = new InjectionToken<keyof ScrollTopColors>(\n 'FLOWBITE_SCROLL_TOP_COLOR_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_SCROLL_TOP_POSITION_DEFAULT_VALUE = new InjectionToken<\n keyof ScrollTopPositions\n>('FLOWBITE_SCROLL_TOP_POSITION_DEFAULT_VALUE');\n\nexport const FLOWBITE_SCROLL_TOP_ICON_DEFAULT_VALUE = new InjectionToken<\n TemplateRef<unknown> | undefined\n>('FLOWBITE_SCROLL_TOP_ICON_DEFAULT_VALUE');\n\nexport const FLOWBITE_SCROLL_TOP_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken<\n DeepPartial<ScrollTopTheme>\n>('FLOWBITE_SCROLL_TOP_CUSTOM_STYLE_DEFAULT_VALUE');\n\nexport const scrollTopDefaultValueProvider = makeEnvironmentProviders([\n {\n provide: FLOWBITE_SCROLL_TOP_COLOR_DEFAULT_VALUE,\n useValue: 'primary',\n },\n {\n provide: FLOWBITE_SCROLL_TOP_POSITION_DEFAULT_VALUE,\n useValue: 'bottom-right',\n },\n {\n provide: FLOWBITE_SCROLL_TOP_ICON_DEFAULT_VALUE,\n useValue: undefined,\n },\n {\n provide: FLOWBITE_SCROLL_TOP_CUSTOM_STYLE_DEFAULT_VALUE,\n useValue: {},\n },\n]);\n\n/**\n * Provide a way to go at the top of the page via a button\n */\n@Component({\n standalone: true,\n selector: 'flowbite-scroll-top',\n imports: [IconComponent, NgTemplateOutlet],\n template: `\n @if (icon()) {\n <ng-container [ngTemplateOutlet]=\"icon()!\" />\n } @else {\n <flowbite-icon\n svgIcon=\"flowbite-angular:chevron-up\"\n class=\"w-5 h-5\" />\n }\n `,\n host: {\n '(click)': 'onClick()',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScrollTopComponent extends BaseComponent<ScrollTopClass> implements OnInit {\n /**\n * Service injected used to generate class\n */\n public readonly themeService = inject(ScrollTopThemeService);\n /**\n * `IconRegistry` service\n */\n public readonly iconRegistry = inject(IconRegistry);\n /**\n * `DomSanitizer` service\n */\n public readonly domSanitizer = inject(DomSanitizer);\n\n //#region properties\n /**\n * Set the scroll top color\n *\n * @default primary\n */\n public color = model(inject(FLOWBITE_SCROLL_TOP_COLOR_DEFAULT_VALUE));\n /**\n * Set the scroll top position\n *\n * @default bottom-right\n */\n public position = model(inject(FLOWBITE_SCROLL_TOP_POSITION_DEFAULT_VALUE));\n /**\n * Set the scroll top icon\n *\n * @default undefined\n */\n public icon = model(inject(FLOWBITE_SCROLL_TOP_ICON_DEFAULT_VALUE));\n /**\n * Set the custom style for this scroll top\n *\n * @default {}\n */\n public customStyle = model(inject(FLOWBITE_SCROLL_TOP_CUSTOM_STYLE_DEFAULT_VALUE));\n //#endregion\n\n //#region BaseComponent implemenation\n public override fetchClass(): ScrollTopClass {\n return this.themeService.getClasses({\n color: this.color(),\n position: this.position(),\n customStyle: this.customStyle(),\n });\n }\n\n public override init(): void {\n this.iconRegistry.addRawSvgIconInNamepsace(\n 'flowbite-angular',\n 'chevron-up',\n this.domSanitizer.bypassSecurityTrustHtml(CHEVRON_UP_SVG_ICON)\n );\n }\n //#endregion\n\n /**\n * Navigate to the top of the page\n */\n public onClick(): void {\n window.scrollTo(window.scrollX, 0);\n }\n}\n","import type {\n DeepPartial,\n FlowbiteClass,\n FlowbiteColors,\n FlowbitePositions,\n} from 'flowbite-angular';\nimport { createTheme } from 'flowbite-angular/utils';\n\n//#region region Component theme option\n/**\n * Available colors for `ScrollTopComponent`\n */\nexport interface ScrollTopColors\n extends Pick<\n FlowbiteColors,\n 'primary' | 'dark' | 'blue' | 'gray' | 'green' | 'lime' | 'purple' | 'red'\n > {\n [key: string]: string;\n}\n\n/**\n * Available positions for `ScrollTopComponent`\n */\nexport interface ScrollTopPositions extends Omit<FlowbitePositions, 'center'> {\n [key: string]: string;\n}\n//#endregion\n\n/**\n * Required properties for the class generation for `ScrollTopComponent`\n */\nexport interface ScrollTopProperties {\n color: keyof ScrollTopColors;\n position: keyof ScrollTopPositions;\n customStyle: DeepPartial<ScrollTopTheme>;\n}\n\n/**\n * Theme definition for `ScrollTopComponent`\n */\nexport interface ScrollTopTheme {\n root: {\n base: string;\n color: ScrollTopColors;\n position: ScrollTopPositions;\n };\n}\n\n/**\n * Default theme for `ScrollTopComponent`\n */\nexport const scrollTopTheme: ScrollTopTheme = createTheme({\n root: {\n base: 'cursor-pointer fixed flex flex-row place-items-center p-2 rounded-lg',\n color: {\n primary: 'bg-primary-100',\n dark: 'bg-gray-100 dark:bg-gray-800 dark:text-white',\n blue: 'bg-blue-100',\n gray: 'bg-gray-100',\n green: 'bg-green-100',\n lime: 'bg-lime-100',\n purple: 'bg-purple-100',\n red: 'bg-red-100',\n },\n position: {\n 'bottom-center': 'bottom-3 left-1/2 right-1/2',\n 'bottom-left': 'bottom-3 left-3',\n 'bottom-right': 'bottom-3 right-3',\n 'center-left': 'left-3 top-1/2 bottom-1/2',\n 'center-right': 'right-3 top-1/2 bottom-1/2',\n 'top-center': 'top-3 left-1/2 right-1/2',\n 'top-left': 'top-3 left-3',\n 'top-right': 'top-3 right-3',\n },\n },\n});\n\n/**\n * Generated class definition for `ScrollTopComponent`\n */\nexport type ScrollTopClass = FlowbiteClass;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}