UNPKG

flowbite-angular

Version:

<div align="center"> <h1>flowbite-angular</h1> <p> Build websites even faster with components on top of Angular and Tailwind CSS </p> <p> <a href="https://discord.com/invite/4eeurUVvTy"> <img src="https://img.shields.io/discord/90291

87 lines (79 loc) 3.95 kB
import { createTheme, mergeDeep } from 'flowbite-angular'; import * as i0 from '@angular/core'; import { InjectionToken, inject, input, computed, Directive } from '@angular/core'; import { createStateToken, createStateProvider, createStateInjector, createState } from 'ng-primitives/state'; import { twMerge } from 'tailwind-merge'; const flowbiteButtonGroupTheme = createTheme({ host: { base: 'flex flex-row rounded-lg shadow-xs *:rounded-none *:first:rounded-l-lg *:last:rounded-r-lg', transition: '', }, }); const defaultFlowbiteButtonGroupConfig = { baseTheme: flowbiteButtonGroupTheme, customTheme: {}, }; const FlowbiteButtonGroupConfigToken = new InjectionToken('FlowbiteButtonGroupConfigToken'); /** * Provide the default ButtonGroup configuration * @param config The ButtonGroup configuration * @returns The provider */ const provideFlowbiteButtonGroupConfig = (config) => [ { provide: FlowbiteButtonGroupConfigToken, useValue: { ...defaultFlowbiteButtonGroupConfig, ...config }, }, ]; /** * Inject the ButtonGroup configuration * @see {@link defaultFlowbiteButtonGroupConfig} * @returns The configuration */ const injectFlowbiteButtonGroupConfig = () => inject(FlowbiteButtonGroupConfigToken, { optional: true }) ?? defaultFlowbiteButtonGroupConfig; const FlowbiteButtonGroupStateToken = createStateToken('Flowbite ButtonGroup'); const provideFlowbiteButtonGroupState = createStateProvider(FlowbiteButtonGroupStateToken); const injectFlowbiteButtonGroupState = createStateInjector(FlowbiteButtonGroupStateToken); const flowbiteButtonGroupState = createState(FlowbiteButtonGroupStateToken); class ButtonGroup { constructor() { this.config = injectFlowbiteButtonGroupConfig(); /** * @see {@link injectFlowbiteButtonGroupConfig} */ this.customTheme = input(this.config.customTheme); this.theme = computed(() => { const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme()); return { host: { root: twMerge(mergedTheme.host.base, mergedTheme.host.transition), }, }; }); /** * @internal */ this.state = flowbiteButtonGroupState(this); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ButtonGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: ButtonGroup, isStandalone: true, selector: "\n div[flowbiteButtonGroup]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteButtonGroupState()], exportAs: ["flowbiteButtonGroup"], ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ButtonGroup, decorators: [{ type: Directive, args: [{ standalone: true, selector: ` div[flowbiteButtonGroup] `, exportAs: 'flowbiteButtonGroup', hostDirectives: [], providers: [provideFlowbiteButtonGroupState()], host: { '[class]': `theme().host.root` }, }] }] }); /* ButtonGroup */ /** * Generated bundle index. Do not edit. */ export { ButtonGroup, FlowbiteButtonGroupConfigToken, FlowbiteButtonGroupStateToken, defaultFlowbiteButtonGroupConfig, flowbiteButtonGroupState, flowbiteButtonGroupTheme, injectFlowbiteButtonGroupConfig, injectFlowbiteButtonGroupState, provideFlowbiteButtonGroupConfig, provideFlowbiteButtonGroupState }; //# sourceMappingURL=flowbite-angular-button-group.mjs.map