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
JavaScript
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