flowbite-angular 1.3.0 → 20.0.2
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/README.md +30 -39
- package/accordion/index.d.ts +569 -16
- package/alert/index.d.ts +602 -4
- package/badge/index.d.ts +636 -4
- package/breadcrumb/index.d.ts +452 -8
- package/button/index.d.ts +335 -4
- package/button-group/README.md +4 -0
- package/button-group/index.d.ts +85 -0
- package/{core → card}/README.md +2 -2
- package/card/index.d.ts +640 -0
- package/{accordion → clipboard}/README.md +2 -2
- package/clipboard/index.d.ts +103 -0
- package/dropdown/index.d.ts +536 -16
- package/fesm2022/flowbite-angular-accordion.mjs +339 -479
- package/fesm2022/flowbite-angular-accordion.mjs.map +1 -1
- package/fesm2022/flowbite-angular-alert.mjs +308 -240
- package/fesm2022/flowbite-angular-alert.mjs.map +1 -1
- package/fesm2022/flowbite-angular-badge.mjs +332 -238
- package/fesm2022/flowbite-angular-badge.mjs.map +1 -1
- package/fesm2022/flowbite-angular-breadcrumb.mjs +262 -191
- package/fesm2022/flowbite-angular-breadcrumb.mjs.map +1 -1
- package/fesm2022/flowbite-angular-button-group.mjs +86 -0
- package/fesm2022/flowbite-angular-button-group.mjs.map +1 -0
- package/fesm2022/flowbite-angular-button.mjs +189 -270
- package/fesm2022/flowbite-angular-button.mjs.map +1 -1
- package/fesm2022/flowbite-angular-card.mjs +344 -0
- package/fesm2022/flowbite-angular-card.mjs.map +1 -0
- package/fesm2022/flowbite-angular-clipboard.mjs +174 -0
- package/fesm2022/flowbite-angular-clipboard.mjs.map +1 -0
- package/fesm2022/flowbite-angular-dropdown.mjs +272 -459
- package/fesm2022/flowbite-angular-dropdown.mjs.map +1 -1
- package/fesm2022/flowbite-angular-form.mjs +444 -0
- package/fesm2022/flowbite-angular-form.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-brand.mjs +71 -0
- package/fesm2022/flowbite-angular-icon-brand.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-outline-arrows.mjs +51 -0
- package/fesm2022/flowbite-angular-icon-outline-arrows.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-outline-e-commerce.mjs +23 -0
- package/fesm2022/flowbite-angular-icon-outline-e-commerce.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-outline-emoji.mjs +13 -0
- package/fesm2022/flowbite-angular-icon-outline-emoji.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-outline-files-folders.mjs +42 -0
- package/fesm2022/flowbite-angular-icon-outline-files-folders.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-outline-general.mjs +145 -0
- package/fesm2022/flowbite-angular-icon-outline-general.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-outline-media.mjs +25 -0
- package/fesm2022/flowbite-angular-icon-outline-media.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-outline-text.mjs +20 -0
- package/fesm2022/flowbite-angular-icon-outline-text.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-outline-user.mjs +17 -0
- package/fesm2022/flowbite-angular-icon-outline-user.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-outline-weather.mjs +9 -0
- package/fesm2022/flowbite-angular-icon-outline-weather.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-outline.mjs +6 -0
- package/fesm2022/flowbite-angular-icon-outline.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-solid-arrows.mjs +17 -0
- package/fesm2022/flowbite-angular-icon-solid-arrows.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-solid-brands.mjs +33 -0
- package/fesm2022/flowbite-angular-icon-solid-brands.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-solid-e-commerce.mjs +21 -0
- package/fesm2022/flowbite-angular-icon-solid-e-commerce.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-solid-emoji.mjs +13 -0
- package/fesm2022/flowbite-angular-icon-solid-emoji.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-solid-files-folder.mjs +42 -0
- package/fesm2022/flowbite-angular-icon-solid-files-folder.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-solid-general.mjs +123 -0
- package/fesm2022/flowbite-angular-icon-solid-general.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-solid-media.mjs +24 -0
- package/fesm2022/flowbite-angular-icon-solid-media.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-solid-text.mjs +11 -0
- package/fesm2022/flowbite-angular-icon-solid-text.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-solid-user.mjs +17 -0
- package/fesm2022/flowbite-angular-icon-solid-user.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-solid-weather.mjs +9 -0
- package/fesm2022/flowbite-angular-icon-solid-weather.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon-solid.mjs +6 -0
- package/fesm2022/flowbite-angular-icon-solid.mjs.map +1 -0
- package/fesm2022/flowbite-angular-icon.mjs +318 -219
- package/fesm2022/flowbite-angular-icon.mjs.map +1 -1
- package/fesm2022/flowbite-angular-indicator.mjs +119 -231
- package/fesm2022/flowbite-angular-indicator.mjs.map +1 -1
- package/fesm2022/flowbite-angular-modal.mjs +337 -486
- package/fesm2022/flowbite-angular-modal.mjs.map +1 -1
- package/fesm2022/flowbite-angular-navbar.mjs +600 -604
- package/fesm2022/flowbite-angular-navbar.mjs.map +1 -1
- package/fesm2022/flowbite-angular-pagination.mjs +994 -0
- package/fesm2022/flowbite-angular-pagination.mjs.map +1 -0
- package/fesm2022/flowbite-angular-sidebar.mjs +400 -776
- package/fesm2022/flowbite-angular-sidebar.mjs.map +1 -1
- package/fesm2022/flowbite-angular-tab.mjs +465 -0
- package/fesm2022/flowbite-angular-tab.mjs.map +1 -0
- package/fesm2022/flowbite-angular-theme-toggle.mjs +263 -0
- package/fesm2022/flowbite-angular-theme-toggle.mjs.map +1 -0
- package/fesm2022/flowbite-angular-tooltip.mjs +117 -0
- package/fesm2022/flowbite-angular-tooltip.mjs.map +1 -0
- package/fesm2022/flowbite-angular.mjs +53 -66
- package/fesm2022/flowbite-angular.mjs.map +1 -1
- package/flowbite-angular.css +2 -0
- package/{alert → form}/README.md +2 -2
- package/form/index.d.ts +684 -0
- package/{breadcrumb → icon/brand}/README.md +2 -2
- package/icon/brand/index.d.ts +66 -0
- package/icon/index.d.ts +322 -5
- package/icon/outline/README.md +4 -0
- package/icon/outline/arrows/index.d.ts +46 -0
- package/icon/outline/e-commerce/index.d.ts +18 -0
- package/icon/outline/emoji/index.d.ts +8 -0
- package/icon/outline/files-folders/index.d.ts +37 -0
- package/icon/outline/general/index.d.ts +140 -0
- package/icon/outline/index.d.ts +2 -0
- package/icon/outline/media/index.d.ts +20 -0
- package/icon/outline/text/index.d.ts +15 -0
- package/icon/outline/user/index.d.ts +12 -0
- package/icon/outline/weather/index.d.ts +4 -0
- package/icon/solid/README.md +4 -0
- package/icon/solid/arrows/index.d.ts +12 -0
- package/icon/solid/brands/index.d.ts +28 -0
- package/icon/solid/e-commerce/index.d.ts +16 -0
- package/icon/solid/emoji/index.d.ts +8 -0
- package/icon/solid/files-folder/index.d.ts +37 -0
- package/icon/solid/general/index.d.ts +118 -0
- package/icon/solid/index.d.ts +2 -0
- package/icon/solid/media/index.d.ts +19 -0
- package/icon/solid/text/index.d.ts +6 -0
- package/icon/solid/user/index.d.ts +12 -0
- package/icon/solid/weather/index.d.ts +4 -0
- package/index.d.ts +126 -3
- package/indicator/index.d.ts +242 -4
- package/modal/index.d.ts +458 -16
- package/navbar/index.d.ts +1467 -24
- package/package.json +133 -38
- package/pagination/README.md +4 -0
- package/pagination/index.d.ts +1135 -0
- package/sidebar/index.d.ts +880 -24
- package/styles/flowbite-angular.css +8 -0
- package/styles/part/animation.css +0 -0
- package/styles/part/color.css +125 -0
- package/styles/part/font-size.css +67 -0
- package/styles/part/rounded.css +11 -0
- package/styles/part/shadow.css +9 -0
- package/styles/part/spacing.css +38 -0
- package/{badge → tab}/README.md +2 -2
- package/tab/index.d.ts +791 -0
- package/theme-toggle/README.md +4 -0
- package/theme-toggle/index.d.ts +342 -0
- package/{button → tooltip}/README.md +2 -2
- package/tooltip/index.d.ts +158 -0
- package/accordion/accordion-content.component.d.ts +0 -69
- package/accordion/accordion-content.theme.d.ts +0 -28
- package/accordion/accordion-content.theme.service.d.ts +0 -19
- package/accordion/accordion-panel.component.d.ts +0 -67
- package/accordion/accordion-panel.theme.d.ts +0 -23
- package/accordion/accordion-panel.theme.service.d.ts +0 -20
- package/accordion/accordion-title.component.d.ts +0 -106
- package/accordion/accordion-title.theme.d.ts +0 -35
- package/accordion/accordion-title.theme.service.d.ts +0 -19
- package/accordion/accordion.component.d.ts +0 -61
- package/accordion/accordion.theme.d.ts +0 -29
- package/accordion/accordion.theme.service.d.ts +0 -19
- package/alert/alert.component.d.ts +0 -150
- package/alert/alert.theme.d.ts +0 -39
- package/alert/alert.theme.service.d.ts +0 -19
- package/badge/badge.component.d.ts +0 -196
- package/badge/badge.theme.d.ts +0 -53
- package/badge/badge.theme.service.d.ts +0 -19
- package/base-component.directive.d.ts +0 -51
- package/breadcrumb/breadcrumb-item.component.d.ts +0 -84
- package/breadcrumb/breadcrumb-item.theme.d.ts +0 -33
- package/breadcrumb/breadcrumb-item.theme.service.d.ts +0 -19
- package/breadcrumb/breadcrumb.component.d.ts +0 -43
- package/breadcrumb/breadcrumb.theme.d.ts +0 -29
- package/breadcrumb/breadcrumb.theme.service.d.ts +0 -19
- package/button/button.component.d.ts +0 -250
- package/button/button.theme.d.ts +0 -79
- package/button/button.theme.service.d.ts +0 -19
- package/core/flowbite.theme.init.d.ts +0 -9
- package/core/index.d.ts +0 -1
- package/dark-theme-toggle/README.md +0 -4
- package/dark-theme-toggle/dark-theme-toggle.component.d.ts +0 -51
- package/dark-theme-toggle/dark-theme-toggle.theme.d.ts +0 -23
- package/dark-theme-toggle/dark-theme-toggle.theme.service.d.ts +0 -19
- package/dark-theme-toggle/index.d.ts +0 -3
- package/dropdown/README.md +0 -4
- package/dropdown/dropdown-divider.component.d.ts +0 -36
- package/dropdown/dropdown-divider.theme.d.ts +0 -23
- package/dropdown/dropdown-divider.theme.service.d.ts +0 -19
- package/dropdown/dropdown-header.component.d.ts +0 -42
- package/dropdown/dropdown-header.theme.d.ts +0 -28
- package/dropdown/dropdown-header.theme.service.d.ts +0 -19
- package/dropdown/dropdown-item.component.d.ts +0 -36
- package/dropdown/dropdown-item.theme.d.ts +0 -23
- package/dropdown/dropdown-item.theme.service.d.ts +0 -19
- package/dropdown/dropdown.component.d.ts +0 -136
- package/dropdown/dropdown.theme.d.ts +0 -56
- package/dropdown/dropdown.theme.service.d.ts +0 -19
- package/fesm2022/flowbite-angular-core.mjs +0 -322
- package/fesm2022/flowbite-angular-core.mjs.map +0 -1
- package/fesm2022/flowbite-angular-dark-theme-toggle.mjs +0 -139
- package/fesm2022/flowbite-angular-dark-theme-toggle.mjs.map +0 -1
- package/fesm2022/flowbite-angular-router-link-active.mjs +0 -68
- package/fesm2022/flowbite-angular-router-link-active.mjs.map +0 -1
- package/fesm2022/flowbite-angular-router-link.mjs +0 -73
- package/fesm2022/flowbite-angular-router-link.mjs.map +0 -1
- package/fesm2022/flowbite-angular-sanitize-html.mjs +0 -39
- package/fesm2022/flowbite-angular-sanitize-html.mjs.map +0 -1
- package/fesm2022/flowbite-angular-scroll-top.mjs +0 -193
- package/fesm2022/flowbite-angular-scroll-top.mjs.map +0 -1
- package/fesm2022/flowbite-angular-theme.mjs +0 -78
- package/fesm2022/flowbite-angular-theme.mjs.map +0 -1
- package/fesm2022/flowbite-angular-utils.mjs +0 -210
- package/fesm2022/flowbite-angular-utils.mjs.map +0 -1
- package/flowbite.theme.service.d.ts +0 -12
- package/icon/icon-registry.d.ts +0 -45
- package/icon/icon.component.d.ts +0 -22
- package/icon/trusted-types.d.ts +0 -15
- package/indicator/indicators.component.d.ts +0 -224
- package/indicator/indicators.theme.d.ts +0 -59
- package/indicator/indicators.theme.service.d.ts +0 -19
- package/modal/modal-body.component.d.ts +0 -36
- package/modal/modal-body.theme.d.ts +0 -23
- package/modal/modal-body.theme.service.d.ts +0 -19
- package/modal/modal-footer.component.d.ts +0 -36
- package/modal/modal-footer.theme.d.ts +0 -23
- package/modal/modal-footer.theme.service.d.ts +0 -19
- package/modal/modal-header.component.d.ts +0 -60
- package/modal/modal-header.theme.d.ts +0 -32
- package/modal/modal-header.theme.service.d.ts +0 -19
- package/modal/modal.component.d.ts +0 -146
- package/modal/modal.theme.d.ts +0 -35
- package/modal/modal.theme.service.d.ts +0 -19
- package/navbar/navbar-brand.component.d.ts +0 -36
- package/navbar/navbar-brand.theme.d.ts +0 -23
- package/navbar/navbar-brand.theme.service.d.ts +0 -19
- package/navbar/navbar-content.component.d.ts +0 -50
- package/navbar/navbar-content.theme.d.ts +0 -28
- package/navbar/navbar-content.theme.service.d.ts +0 -19
- package/navbar/navbar-icon-button.component.d.ts +0 -59
- package/navbar/navbar-icon-button.theme.d.ts +0 -26
- package/navbar/navbar-icon-button.theme.service.d.ts +0 -19
- package/navbar/navbar-item.component.d.ts +0 -67
- package/navbar/navbar-item.theme.d.ts +0 -26
- package/navbar/navbar-item.theme.service.d.ts +0 -19
- package/navbar/navbar-toggle.component.d.ts +0 -51
- package/navbar/navbar-toggle.theme.d.ts +0 -23
- package/navbar/navbar-toggle.theme.service.d.ts +0 -19
- package/navbar/navbar.component.d.ts +0 -121
- package/navbar/navbar.theme.d.ts +0 -21
- package/navbar/navbar.theme.service.d.ts +0 -19
- package/router-link/README.md +0 -4
- package/router-link/flowbite-router-link.directive.d.ts +0 -28
- package/router-link/index.d.ts +0 -1
- package/router-link-active/README.md +0 -4
- package/router-link-active/flowbite-router-link-active.directive.d.ts +0 -37
- package/router-link-active/index.d.ts +0 -1
- package/sanitize-html/README.md +0 -4
- package/sanitize-html/index.d.ts +0 -1
- package/sanitize-html/sanitize-html.pipe.d.ts +0 -20
- package/scroll-top/README.md +0 -4
- package/scroll-top/index.d.ts +0 -4
- package/scroll-top/scroll-top.component.d.ts +0 -114
- package/scroll-top/scroll-top.theme.d.ts +0 -39
- package/scroll-top/scroll-top.theme.service.d.ts +0 -19
- package/sidebar/sidebar-item-group.component.d.ts +0 -100
- package/sidebar/sidebar-item-group.theme.d.ts +0 -31
- package/sidebar/sidebar-item-group.theme.service.d.ts +0 -19
- package/sidebar/sidebar-item.component.d.ts +0 -101
- package/sidebar/sidebar-item.theme.d.ts +0 -33
- package/sidebar/sidebar-item.theme.service.d.ts +0 -19
- package/sidebar/sidebar-menu.component.d.ts +0 -93
- package/sidebar/sidebar-menu.theme.d.ts +0 -30
- package/sidebar/sidebar-menu.theme.service.d.ts +0 -19
- package/sidebar/sidebar-page-content.component.d.ts +0 -46
- package/sidebar/sidebar-page-content.theme.d.ts +0 -27
- package/sidebar/sidebar-page-content.theme.service.d.ts +0 -19
- package/sidebar/sidebar-toggle.component.d.ts +0 -95
- package/sidebar/sidebar-toggle.theme.d.ts +0 -34
- package/sidebar/sidebar-toggle.theme.service.d.ts +0 -19
- package/sidebar/sidebar.component.d.ts +0 -84
- package/sidebar/sidebar.theme.d.ts +0 -22
- package/sidebar/sidebar.theme.service.d.ts +0 -19
- package/tailwind.config.js +0 -303
- package/theme/README.md +0 -4
- package/theme/flowbite-theme.directive.d.ts +0 -36
- package/theme/index.d.ts +0 -1
- package/type-definitions/colors/flowbite.colors.d.ts +0 -19
- package/type-definitions/colors/flowbite.gradient-colors.d.ts +0 -11
- package/type-definitions/colors/flowbite.gradient-duo-tone-colors.d.ts +0 -12
- package/type-definitions/colors/index.d.ts +0 -3
- package/type-definitions/flowbite.boolean.d.ts +0 -14
- package/type-definitions/flowbite.class.d.ts +0 -6
- package/type-definitions/flowbite.combination.d.ts +0 -8
- package/type-definitions/flowbite.content-positions.d.ts +0 -6
- package/type-definitions/flowbite.deep-partial.d.ts +0 -6
- package/type-definitions/flowbite.heading-levels.d.ts +0 -4
- package/type-definitions/flowbite.positions.d.ts +0 -14
- package/type-definitions/flowbite.router-link-parameter.d.ts +0 -5
- package/type-definitions/flowbite.sizes.d.ts +0 -10
- package/type-definitions/flowbite.themes.d.ts +0 -4
- package/type-definitions/index.d.ts +0 -12
- package/utils/README.md +0 -4
- package/utils/icon.list.d.ts +0 -7
- package/utils/id.generator.d.ts +0 -59
- package/utils/index.d.ts +0 -8
- package/utils/theme/clone-deep.d.ts +0 -7
- package/utils/theme/create-class.d.ts +0 -7
- package/utils/theme/create-theme.d.ts +0 -7
- package/utils/theme/is-object.d.ts +0 -7
- package/utils/theme/merge-theme.d.ts +0 -8
- package/utils/theme/to-string.d.ts +0 -7
|
@@ -1,893 +1,517 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createTheme, mergeDeep, colorToTheme } from 'flowbite-angular';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { InjectionToken, inject,
|
|
3
|
+
import { InjectionToken, inject, input, booleanAttribute, computed, Directive, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
|
|
4
|
+
import { createStateToken, createStateProvider, createStateInjector, createState } from 'ng-primitives/state';
|
|
4
5
|
import { twMerge } from 'tailwind-merge';
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
6
|
+
import * as i1 from 'flowbite-angular/button';
|
|
7
|
+
import { BaseButton } from 'flowbite-angular/button';
|
|
8
|
+
import { barsFromLeft } from 'flowbite-angular/icon/outline/general';
|
|
9
|
+
import { provideIcons } from '@ng-icons/core';
|
|
10
|
+
import * as i2 from 'ng-primitives/button';
|
|
11
|
+
import { NgpButton } from 'ng-primitives/button';
|
|
12
|
+
import * as i3 from 'ng-primitives/interactions';
|
|
13
|
+
import { NgpFocus } from 'ng-primitives/interactions';
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
constructor() {
|
|
24
|
-
this.baseTheme = inject(FLOWBITE_SIDEBAR_ITEM_GROUP_THEME_TOKEN);
|
|
25
|
-
}
|
|
26
|
-
getClasses(properties) {
|
|
27
|
-
const theme = mergeTheme(this.baseTheme, properties.customStyle);
|
|
28
|
-
const output = {
|
|
29
|
-
rootClass: twMerge(theme.root.base),
|
|
30
|
-
spanClass: twMerge(theme.spanText.base, theme.spanText.color[properties.color]),
|
|
31
|
-
};
|
|
32
|
-
return output;
|
|
33
|
-
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarItemGroupThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarItemGroupThemeService, providedIn: 'root' }); }
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarItemGroupThemeService, decorators: [{
|
|
38
|
-
type: Injectable,
|
|
39
|
-
args: [{
|
|
40
|
-
providedIn: 'root',
|
|
41
|
-
}]
|
|
42
|
-
}] });
|
|
15
|
+
const flowbiteSidebarTheme = createTheme({
|
|
16
|
+
host: {
|
|
17
|
+
base: 'fixed inset-0 top-0 left-0 z-40 h-screen lg:w-64',
|
|
18
|
+
transition: '',
|
|
19
|
+
open: {
|
|
20
|
+
on: 'w-full backdrop-blur-sm',
|
|
21
|
+
off: 'w-0',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
});
|
|
43
25
|
|
|
26
|
+
const defaultFlowbiteSidebarConfig = {
|
|
27
|
+
baseTheme: flowbiteSidebarTheme,
|
|
28
|
+
open: false,
|
|
29
|
+
color: 'default',
|
|
30
|
+
customTheme: {},
|
|
31
|
+
};
|
|
32
|
+
const FlowbiteSidebarConfigToken = new InjectionToken('FlowbiteSidebarConfigToken');
|
|
44
33
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* @
|
|
48
|
-
* ```
|
|
49
|
-
* var theme = inject(FLOWBITE_SIDEBAR_ITEM_THEME_TOKEN)
|
|
50
|
-
* ```
|
|
34
|
+
* Provide the default Sidebar configuration
|
|
35
|
+
* @param config The Sidebar configuration
|
|
36
|
+
* @returns The provider
|
|
51
37
|
*/
|
|
52
|
-
const
|
|
53
|
-
class SidebarItemThemeService {
|
|
54
|
-
constructor() {
|
|
55
|
-
this.baseTheme = inject(FLOWBITE_SIDEBAR_ITEM_THEME_TOKEN);
|
|
56
|
-
}
|
|
57
|
-
getClasses(properties) {
|
|
58
|
-
const theme = mergeTheme(this.baseTheme, properties.customStyle);
|
|
59
|
-
const output = {
|
|
60
|
-
rootClass: twMerge(theme.root.base, theme.root.color[properties.color]),
|
|
61
|
-
sidebarIconClass: twMerge(theme.icon.base),
|
|
62
|
-
};
|
|
63
|
-
return output;
|
|
64
|
-
}
|
|
65
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarItemThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
66
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarItemThemeService, providedIn: 'root' }); }
|
|
67
|
-
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarItemThemeService, decorators: [{
|
|
69
|
-
type: Injectable,
|
|
70
|
-
args: [{
|
|
71
|
-
providedIn: 'root',
|
|
72
|
-
}]
|
|
73
|
-
}] });
|
|
74
|
-
|
|
75
|
-
const FLOWBITE_SIDEBAR_ITEM_ICON_DEFAULT_VALUE = new InjectionToken('FLOWBITE_SIDEBAR_ITEM_ICON_DEFAULT_VALUE');
|
|
76
|
-
const FLOWBITE_SIDEBAR_ITEM_LABEL_DEFAULT_VALUE = new InjectionToken('FLOWBITE_SIDEBAR_ITEM_LABEL_DEFAULT_VALUE');
|
|
77
|
-
const FLOWBITE_SIDEBAR_ITEM_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_SIDEBAR_ITEM_CUSTOM_STYLE_DEFAULT_VALUE');
|
|
78
|
-
const sidebarItemDefaultValueProvider = makeEnvironmentProviders([
|
|
38
|
+
const provideFlowbiteSidebarConfig = (config) => [
|
|
79
39
|
{
|
|
80
|
-
provide:
|
|
81
|
-
useValue:
|
|
40
|
+
provide: FlowbiteSidebarConfigToken,
|
|
41
|
+
useValue: { ...defaultFlowbiteSidebarConfig, ...config },
|
|
82
42
|
},
|
|
83
|
-
|
|
84
|
-
provide: FLOWBITE_SIDEBAR_ITEM_LABEL_DEFAULT_VALUE,
|
|
85
|
-
useValue: undefined,
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
provide: FLOWBITE_SIDEBAR_ITEM_CUSTOM_STYLE_DEFAULT_VALUE,
|
|
89
|
-
useValue: {},
|
|
90
|
-
},
|
|
91
|
-
]);
|
|
43
|
+
];
|
|
92
44
|
/**
|
|
93
|
-
*
|
|
45
|
+
* Inject the Sidebar configuration
|
|
46
|
+
* @see {@link defaultFlowbiteSidebarConfig}
|
|
47
|
+
* @returns The configuration
|
|
94
48
|
*/
|
|
95
|
-
|
|
49
|
+
const injectFlowbiteSidebarConfig = () => inject(FlowbiteSidebarConfigToken, { optional: true }) ?? defaultFlowbiteSidebarConfig;
|
|
50
|
+
|
|
51
|
+
const FlowbiteSidebarStateToken = createStateToken('Flowbite Sidebar');
|
|
52
|
+
const provideFlowbiteSidebarState = createStateProvider(FlowbiteSidebarStateToken);
|
|
53
|
+
const injectFlowbiteSidebarState = createStateInjector(FlowbiteSidebarStateToken);
|
|
54
|
+
const flowbiteSidebarState = createState(FlowbiteSidebarStateToken);
|
|
55
|
+
|
|
56
|
+
class Sidebar {
|
|
96
57
|
constructor() {
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Optional `FlowbiteRouterLinkDirective` injected
|
|
100
|
-
*/
|
|
101
|
-
this.flowbiteRouterLink = inject(FlowbiteRouterLinkDirective, { optional: true });
|
|
102
|
-
/**
|
|
103
|
-
* Optional `FlowbiteRouterLinkActiveDirective` injected
|
|
104
|
-
*/
|
|
105
|
-
this.flowbiteRouterLinkActive = inject(FlowbiteRouterLinkActiveDirective, {
|
|
106
|
-
optional: true,
|
|
107
|
-
});
|
|
108
|
-
/**
|
|
109
|
-
* Service injected used to generate class
|
|
110
|
-
*/
|
|
111
|
-
this.themeService = inject(SidebarItemThemeService);
|
|
112
|
-
/**
|
|
113
|
-
* The optional parent `SidebarItemGroupComponent`
|
|
114
|
-
*/
|
|
115
|
-
this.sidebarItemGroupComponent = inject(SidebarItemGroupComponent, { optional: true });
|
|
58
|
+
this.config = injectFlowbiteSidebarConfig();
|
|
116
59
|
/**
|
|
117
|
-
*
|
|
60
|
+
* @see {@link injectFlowbiteSidebarConfig}
|
|
118
61
|
*/
|
|
119
|
-
this.
|
|
120
|
-
//#region properties
|
|
62
|
+
this.open = input(this.config.open, { transform: booleanAttribute });
|
|
121
63
|
/**
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
* @default undefined
|
|
64
|
+
* @see {@link injectFlowbiteSidebarConfig}
|
|
125
65
|
*/
|
|
126
|
-
this.
|
|
66
|
+
this.color = input(this.config.color);
|
|
127
67
|
/**
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* @default `SidebarItemGroupComponent`'s color
|
|
131
|
-
* @default `SidebarMenuComponent`'s color
|
|
68
|
+
* @see {@link injectFlowbiteSidebarConfig}
|
|
132
69
|
*/
|
|
133
|
-
this.
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
70
|
+
this.customTheme = input(this.config.customTheme);
|
|
71
|
+
this.theme = computed(() => {
|
|
72
|
+
const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
|
|
73
|
+
return {
|
|
74
|
+
host: {
|
|
75
|
+
root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, mergedTheme.host.open[this.state.open() ? 'on' : 'off']),
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
});
|
|
140
79
|
/**
|
|
141
|
-
*
|
|
80
|
+
* @internal
|
|
142
81
|
*/
|
|
143
|
-
this.
|
|
144
|
-
}
|
|
145
|
-
//#endregion
|
|
146
|
-
//#region BaseComponent implementation
|
|
147
|
-
fetchClass() {
|
|
148
|
-
return this.themeService.getClasses({
|
|
149
|
-
icon: this.icon(),
|
|
150
|
-
color: this.color(),
|
|
151
|
-
label: this.label(),
|
|
152
|
-
customStyle: this.customStyle(),
|
|
153
|
-
});
|
|
82
|
+
this.state = flowbiteSidebarState(this);
|
|
154
83
|
}
|
|
155
|
-
//#endregion
|
|
156
84
|
/**
|
|
157
|
-
*
|
|
85
|
+
* @internal
|
|
158
86
|
*/
|
|
159
87
|
onClick() {
|
|
160
|
-
|
|
161
|
-
(this.sidebarMenuComponent || this.sidebarItemGroupComponent?.sidebarMenuComponent)?.sidebarComponent.toggleVisibility(false);
|
|
88
|
+
this.toggle();
|
|
162
89
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
<span
|
|
172
|
-
[class]="contentClasses().sidebarIconClass"
|
|
173
|
-
[class.ml-3]="icon()">
|
|
174
|
-
<ng-content />
|
|
175
|
-
</span>
|
|
176
|
-
@if (label()) {
|
|
177
|
-
<flowbite-badge>{{ label() }}</flowbite-badge>
|
|
90
|
+
/**
|
|
91
|
+
* @internal
|
|
92
|
+
*/
|
|
93
|
+
toggle(newState) {
|
|
94
|
+
newState ??= !this.state.open();
|
|
95
|
+
this.state.open.set(newState);
|
|
178
96
|
}
|
|
179
|
-
|
|
97
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: Sidebar, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
98
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: Sidebar, isStandalone: true, selector: "\n aside[flowbiteSidebar]\n ", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick()" }, properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteSidebarState({ inherit: true })], exportAs: ["flowbiteSidebar"], ngImport: i0 }); }
|
|
180
99
|
}
|
|
181
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
182
|
-
type:
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: Sidebar, decorators: [{
|
|
101
|
+
type: Directive,
|
|
183
102
|
args: [{
|
|
184
103
|
standalone: true,
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
template: `
|
|
188
|
-
@if (icon()) {
|
|
189
|
-
<span
|
|
190
|
-
class="flex-shrink-0"
|
|
191
|
-
[innerHTML]="icon()! | sanitizeHtml"></span>
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
<span
|
|
195
|
-
[class]="contentClasses().sidebarIconClass"
|
|
196
|
-
[class.ml-3]="icon()">
|
|
197
|
-
<ng-content />
|
|
198
|
-
</span>
|
|
199
|
-
@if (label()) {
|
|
200
|
-
<flowbite-badge>{{ label() }}</flowbite-badge>
|
|
201
|
-
}
|
|
104
|
+
selector: `
|
|
105
|
+
aside[flowbiteSidebar]
|
|
202
106
|
`,
|
|
107
|
+
exportAs: 'flowbiteSidebar',
|
|
108
|
+
hostDirectives: [],
|
|
109
|
+
providers: [provideFlowbiteSidebarState({ inherit: true })],
|
|
203
110
|
host: {
|
|
111
|
+
'[class]': `theme().host.root`,
|
|
204
112
|
'(click)': 'onClick()',
|
|
205
113
|
},
|
|
206
|
-
encapsulation: ViewEncapsulation.None,
|
|
207
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
208
114
|
}]
|
|
209
115
|
}] });
|
|
210
116
|
|
|
211
|
-
const
|
|
212
|
-
|
|
117
|
+
const flowbiteSidebarContentTheme = createTheme({
|
|
118
|
+
host: {
|
|
119
|
+
base: 'h-full overflow-y-auto border-r px-3 py-4 lg:translate-x-0 lg:border-0',
|
|
120
|
+
transition: '',
|
|
121
|
+
open: {
|
|
122
|
+
on: 'w-64 translate-x-0',
|
|
123
|
+
off: '-translate-x-full',
|
|
124
|
+
},
|
|
125
|
+
color: {
|
|
126
|
+
default: {
|
|
127
|
+
light: 'border-gray-200 bg-gray-100',
|
|
128
|
+
dark: 'dark:border-gray-800 dark:bg-gray-900',
|
|
129
|
+
},
|
|
130
|
+
info: {
|
|
131
|
+
light: 'border-blue-200 bg-gray-100',
|
|
132
|
+
dark: 'dark:border-blue-800 dark:bg-gray-900',
|
|
133
|
+
},
|
|
134
|
+
failure: {
|
|
135
|
+
light: 'border-red-200 bg-gray-100',
|
|
136
|
+
dark: 'dark:border-red-800 dark:bg-gray-900',
|
|
137
|
+
},
|
|
138
|
+
success: {
|
|
139
|
+
light: 'border-green-200 bg-gray-100',
|
|
140
|
+
dark: 'dark:border-green-800 dark:bg-gray-900',
|
|
141
|
+
},
|
|
142
|
+
warning: {
|
|
143
|
+
light: 'border-yellow-200 bg-gray-100',
|
|
144
|
+
dark: 'dark:border-yellow-800 dark:bg-gray-900',
|
|
145
|
+
},
|
|
146
|
+
primary: {
|
|
147
|
+
light: 'border-primary-200 bg-gray-100',
|
|
148
|
+
dark: 'dark:border-primary-800 dark:bg-gray-900',
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
container: {
|
|
153
|
+
base: 'space-y-2 font-medium',
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
const defaultFlowbiteSidebarContentConfig = {
|
|
158
|
+
baseTheme: flowbiteSidebarContentTheme,
|
|
159
|
+
customTheme: {},
|
|
160
|
+
};
|
|
161
|
+
const FlowbiteSidebarContentConfigToken = new InjectionToken('FlowbiteSidebarContentConfigToken');
|
|
162
|
+
/**
|
|
163
|
+
* Provide the default SidebarContent configuration
|
|
164
|
+
* @param config The SidebarContent configuration
|
|
165
|
+
* @returns The provider
|
|
166
|
+
*/
|
|
167
|
+
const provideFlowbiteSidebarContentConfig = (config) => [
|
|
213
168
|
{
|
|
214
|
-
provide:
|
|
215
|
-
useValue: {},
|
|
169
|
+
provide: FlowbiteSidebarContentConfigToken,
|
|
170
|
+
useValue: { ...defaultFlowbiteSidebarContentConfig, ...config },
|
|
216
171
|
},
|
|
217
|
-
]
|
|
172
|
+
];
|
|
218
173
|
/**
|
|
219
|
-
*
|
|
174
|
+
* Inject the SidebarContent configuration
|
|
175
|
+
* @see {@link defaultFlowbiteSidebarContentConfig}
|
|
176
|
+
* @returns The configuration
|
|
220
177
|
*/
|
|
221
|
-
|
|
178
|
+
const injectFlowbiteSidebarContentConfig = () => inject(FlowbiteSidebarContentConfigToken, { optional: true }) ??
|
|
179
|
+
defaultFlowbiteSidebarContentConfig;
|
|
180
|
+
|
|
181
|
+
const FlowbiteSidebarContentStateToken = createStateToken('Flowbite SidebarContent');
|
|
182
|
+
const provideFlowbiteSidebarContentState = createStateProvider(FlowbiteSidebarContentStateToken);
|
|
183
|
+
const injectFlowbiteSidebarContentState = createStateInjector(FlowbiteSidebarContentStateToken);
|
|
184
|
+
const flowbiteSidebarContentState = createState(FlowbiteSidebarContentStateToken);
|
|
185
|
+
|
|
186
|
+
class SidebarContent {
|
|
222
187
|
constructor() {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* List of `SidebarItemComponent`
|
|
242
|
-
*/
|
|
243
|
-
this.sidebarItemChildren = contentChildren(SidebarItemComponent);
|
|
244
|
-
//#region properties
|
|
245
|
-
/**
|
|
246
|
-
* Set if the sidebar item group is open
|
|
247
|
-
*
|
|
248
|
-
* @default One of children is active
|
|
249
|
-
* @default false
|
|
250
|
-
*/
|
|
251
|
-
this.isOpen = model(this.sidebarItemChildren().some((x) => x.flowbiteRouterLinkActive?.isActive() ?? false));
|
|
252
|
-
/**
|
|
253
|
-
* Set the sidebar item group color
|
|
254
|
-
*
|
|
255
|
-
* @default `SidebarMenuComponent`'s color
|
|
256
|
-
*/
|
|
257
|
-
this.color = model(this.sidebarMenuComponent.color());
|
|
258
|
-
/**
|
|
259
|
-
* Set the sidebar item group title
|
|
260
|
-
*/
|
|
261
|
-
this.title = model.required();
|
|
188
|
+
this.config = injectFlowbiteSidebarContentConfig();
|
|
189
|
+
this.sidebarState = injectFlowbiteSidebarState();
|
|
190
|
+
/**
|
|
191
|
+
* @see {@link injectFlowbiteSidebarContentConfig}
|
|
192
|
+
*/
|
|
193
|
+
this.customTheme = input(this.config.customTheme);
|
|
194
|
+
this.theme = computed(() => {
|
|
195
|
+
const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
|
|
196
|
+
return {
|
|
197
|
+
host: {
|
|
198
|
+
root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, mergedTheme.host.open[this.sidebarState().open() ? 'on' : 'off'], colorToTheme(mergedTheme.host.color, this.sidebarState().color())),
|
|
199
|
+
},
|
|
200
|
+
container: {
|
|
201
|
+
root: twMerge(mergedTheme.container.base),
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
});
|
|
262
205
|
/**
|
|
263
|
-
*
|
|
206
|
+
* @internal
|
|
264
207
|
*/
|
|
265
|
-
this.
|
|
266
|
-
}
|
|
267
|
-
//#endregion
|
|
268
|
-
//#region BaseComponent implementation
|
|
269
|
-
fetchClass() {
|
|
270
|
-
return this.themeService.getClasses({
|
|
271
|
-
color: this.color(),
|
|
272
|
-
customStyle: this.customStyle(),
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
init() {
|
|
276
|
-
this.iconRegistry.addRawSvgIconInNamepsace('flowbite-angular', 'chevron-down', this.domSanitizer.bypassSecurityTrustHtml(CHEVRON_DOWN_SVG_ICON));
|
|
208
|
+
this.state = flowbiteSidebarContentState(this);
|
|
277
209
|
}
|
|
278
|
-
//#endregion
|
|
279
210
|
/**
|
|
280
|
-
*
|
|
281
|
-
*
|
|
282
|
-
* @param isOpen If provided force isOpen value
|
|
211
|
+
* @internal
|
|
283
212
|
*/
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
isOpen = untracked(() => !this.isOpen());
|
|
287
|
-
}
|
|
288
|
-
this.isOpen.set(isOpen);
|
|
213
|
+
onClick($event) {
|
|
214
|
+
$event.stopPropagation();
|
|
289
215
|
}
|
|
290
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
291
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
292
|
-
<
|
|
293
|
-
[class]="contentClasses().spanClass"
|
|
294
|
-
(click)="toggleVisibility()">
|
|
295
|
-
<h4>{{ title() }}</h4>
|
|
296
|
-
<flowbite-icon
|
|
297
|
-
svgIcon="flowbite-angular:chevron-down"
|
|
298
|
-
class="h-6 w-6 shrink-0 duration-200"
|
|
299
|
-
[class.rotate-180]="!isOpen()" />
|
|
300
|
-
</span>
|
|
301
|
-
@if (isOpen()) {
|
|
216
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SidebarContent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
217
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.6", type: SidebarContent, isStandalone: true, selector: "\n div[flowbiteSidebarContent]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick($event)" }, properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteSidebarContentState()], exportAs: ["flowbiteSidebarContent"], ngImport: i0, template: `
|
|
218
|
+
<ul [class]="theme().container.root">
|
|
302
219
|
<ng-content />
|
|
303
|
-
|
|
304
|
-
`, isInline: true,
|
|
220
|
+
</ul>
|
|
221
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
305
222
|
}
|
|
306
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SidebarContent, decorators: [{
|
|
307
224
|
type: Component,
|
|
308
225
|
args: [{
|
|
309
226
|
standalone: true,
|
|
310
|
-
|
|
311
|
-
|
|
227
|
+
selector: `
|
|
228
|
+
div[flowbiteSidebarContent]
|
|
229
|
+
`,
|
|
230
|
+
exportAs: 'flowbiteSidebarContent',
|
|
231
|
+
hostDirectives: [],
|
|
232
|
+
imports: [],
|
|
233
|
+
providers: [provideFlowbiteSidebarContentState()],
|
|
234
|
+
host: {
|
|
235
|
+
'[class]': `theme().host.root`,
|
|
236
|
+
'(click)': 'onClick($event)',
|
|
237
|
+
},
|
|
312
238
|
template: `
|
|
313
|
-
<
|
|
314
|
-
[class]="contentClasses().spanClass"
|
|
315
|
-
(click)="toggleVisibility()">
|
|
316
|
-
<h4>{{ title() }}</h4>
|
|
317
|
-
<flowbite-icon
|
|
318
|
-
svgIcon="flowbite-angular:chevron-down"
|
|
319
|
-
class="h-6 w-6 shrink-0 duration-200"
|
|
320
|
-
[class.rotate-180]="!isOpen()" />
|
|
321
|
-
</span>
|
|
322
|
-
@if (isOpen()) {
|
|
239
|
+
<ul [class]="theme().container.root">
|
|
323
240
|
<ng-content />
|
|
324
|
-
|
|
241
|
+
</ul>
|
|
325
242
|
`,
|
|
326
243
|
encapsulation: ViewEncapsulation.None,
|
|
327
244
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
328
245
|
}]
|
|
329
246
|
}] });
|
|
330
247
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
248
|
+
const flowbiteSidebarToggleTheme = createTheme({
|
|
249
|
+
host: {
|
|
250
|
+
base: 'inline-flex h-10 w-10 cursor-pointer items-center justify-center rounded-lg p-2 text-sm lg:hidden',
|
|
251
|
+
transition: '',
|
|
252
|
+
focus: 'data-focus:ring-0 data-focus:outline-none data-focus-visible:ring-2 data-focus-visible:outline-none',
|
|
253
|
+
disabled: 'data-disabled:cursor-not-allowed data-disabled:opacity-50',
|
|
254
|
+
size: {},
|
|
255
|
+
pill: {},
|
|
256
|
+
color: {
|
|
257
|
+
default: {
|
|
258
|
+
light: 'text-gray-900',
|
|
259
|
+
dark: 'dark:text-gray-100',
|
|
260
|
+
},
|
|
261
|
+
info: {
|
|
262
|
+
light: 'text-blue-900',
|
|
263
|
+
dark: 'dark:text-blue-100',
|
|
264
|
+
},
|
|
265
|
+
failure: {
|
|
266
|
+
light: 'text-red-900',
|
|
267
|
+
dark: 'dark:text-red-100',
|
|
268
|
+
},
|
|
269
|
+
success: {
|
|
270
|
+
light: 'text-green-900',
|
|
271
|
+
dark: 'dark:text-green-100',
|
|
272
|
+
},
|
|
273
|
+
warning: {
|
|
274
|
+
light: 'text-yellow-900',
|
|
275
|
+
dark: 'dark:text-yellow-100',
|
|
276
|
+
},
|
|
277
|
+
primary: {
|
|
278
|
+
light: 'text-primary-900',
|
|
279
|
+
dark: 'dark:text-primary-100',
|
|
280
|
+
},
|
|
281
|
+
},
|
|
282
|
+
colorOutline: {},
|
|
366
283
|
},
|
|
367
|
-
|
|
368
|
-
/**
|
|
369
|
-
* @see https://flowbite.com/docs/components/sidebar/
|
|
370
|
-
*/
|
|
371
|
-
class SidebarMenuComponent extends BaseComponent {
|
|
372
|
-
constructor() {
|
|
373
|
-
super(...arguments);
|
|
374
|
-
/**
|
|
375
|
-
* Service injected used to generate class
|
|
376
|
-
*/
|
|
377
|
-
this.themeService = inject(SidebarMenuThemeService);
|
|
378
|
-
/**
|
|
379
|
-
* The parent `SidebarComponent`
|
|
380
|
-
*/
|
|
381
|
-
this.sidebarComponent = inject(SidebarComponent);
|
|
382
|
-
/**
|
|
383
|
-
* List of `SidebarItemGroupComponent`
|
|
384
|
-
*/
|
|
385
|
-
this.sidebarItemGroupChildren = contentChildren(SidebarItemGroupComponent);
|
|
386
|
-
/**
|
|
387
|
-
* List of `SidebarItemComponent`
|
|
388
|
-
*/
|
|
389
|
-
this.sidebarItemChildren = contentChildren(SidebarItemComponent);
|
|
390
|
-
//#region properties
|
|
391
|
-
/**
|
|
392
|
-
* Set the sidebar menu color
|
|
393
|
-
*
|
|
394
|
-
* @default `SidebarComponent`'s color
|
|
395
|
-
*/
|
|
396
|
-
this.color = model(this.sidebarComponent.color());
|
|
397
|
-
/**
|
|
398
|
-
* Set the custom style for this sidebar menu
|
|
399
|
-
*/
|
|
400
|
-
this.customStyle = model(inject(FLOWBITE_SIDEBAR_MENU_CUSTOM_STYLE_DEFAULT_VALUE));
|
|
401
|
-
}
|
|
402
|
-
//#endregion
|
|
403
|
-
fetchClass() {
|
|
404
|
-
return this.themeService.getClasses({
|
|
405
|
-
isOpen: booleanToFlowbiteBoolean(this.sidebarComponent.isOpen()),
|
|
406
|
-
color: this.color(),
|
|
407
|
-
displayMode: this.sidebarComponent.displayMode(),
|
|
408
|
-
customStyle: this.customStyle(),
|
|
409
|
-
});
|
|
410
|
-
}
|
|
411
|
-
/**
|
|
412
|
-
* Toggle visibility of ll children to false
|
|
413
|
-
*/
|
|
414
|
-
closeAll() {
|
|
415
|
-
this.sidebarItemGroupChildren().forEach((x) => x.toggleVisibility(false));
|
|
416
|
-
}
|
|
417
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarMenuComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
418
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.4", type: SidebarMenuComponent, isStandalone: true, selector: "flowbite-sidebar-menu", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { color: "colorChange", customStyle: "customStyleChange" }, queries: [{ propertyName: "sidebarItemGroupChildren", predicate: SidebarItemGroupComponent, isSignal: true }, { propertyName: "sidebarItemChildren", predicate: SidebarItemComponent, isSignal: true }], usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
419
|
-
}
|
|
420
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarMenuComponent, decorators: [{
|
|
421
|
-
type: Component,
|
|
422
|
-
args: [{
|
|
423
|
-
standalone: true,
|
|
424
|
-
selector: 'flowbite-sidebar-menu',
|
|
425
|
-
template: '<ng-content />',
|
|
426
|
-
encapsulation: ViewEncapsulation.None,
|
|
427
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
428
|
-
}]
|
|
429
|
-
}] });
|
|
284
|
+
});
|
|
430
285
|
|
|
286
|
+
const defaultFlowbiteSidebarToggleConfig = {
|
|
287
|
+
baseTheme: flowbiteSidebarToggleTheme,
|
|
288
|
+
customTheme: {},
|
|
289
|
+
};
|
|
290
|
+
const FlowbiteSidebarToggleConfigToken = new InjectionToken('FlowbiteSidebarToggleConfigToken');
|
|
431
291
|
/**
|
|
432
|
-
*
|
|
433
|
-
*
|
|
434
|
-
* @
|
|
435
|
-
* ```
|
|
436
|
-
* var theme = inject(FLOWBITE_SIDEBAR_PAGE_CONTENT_THEME_TOKEN)
|
|
437
|
-
* ```
|
|
292
|
+
* Provide the default SidebarToggle configuration
|
|
293
|
+
* @param config The SidebarToggle configuration
|
|
294
|
+
* @returns The provider
|
|
438
295
|
*/
|
|
439
|
-
const
|
|
440
|
-
class SidebarPageContentThemeService {
|
|
441
|
-
constructor() {
|
|
442
|
-
this.baseTheme = inject(FLOWBITE_SIDEBAR_PAGE_CONTENT_THEME_TOKEN);
|
|
443
|
-
}
|
|
444
|
-
getClasses(properties) {
|
|
445
|
-
const theme = mergeTheme(this.baseTheme, properties.customStyle);
|
|
446
|
-
const output = {
|
|
447
|
-
rootClass: twMerge(theme.root.base, properties.isOpen === 'enabled' && theme.root.displayMode[properties.displayMode]),
|
|
448
|
-
};
|
|
449
|
-
return output;
|
|
450
|
-
}
|
|
451
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarPageContentThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
452
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarPageContentThemeService, providedIn: 'root' }); }
|
|
453
|
-
}
|
|
454
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarPageContentThemeService, decorators: [{
|
|
455
|
-
type: Injectable,
|
|
456
|
-
args: [{
|
|
457
|
-
providedIn: 'root',
|
|
458
|
-
}]
|
|
459
|
-
}] });
|
|
460
|
-
|
|
461
|
-
const FLOWBITE_SIDEBAR_PAGE_CONTENT_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_SIDEBAR_PAGE_CONTENT_CUSTOM_STYLE_DEFAULT_VALUE');
|
|
462
|
-
const sidebarPageContentDefaultValueProvider = makeEnvironmentProviders([
|
|
296
|
+
const provideFlowbiteSidebarToggleConfig = (config) => [
|
|
463
297
|
{
|
|
464
|
-
provide:
|
|
465
|
-
useValue: {},
|
|
298
|
+
provide: FlowbiteSidebarToggleConfigToken,
|
|
299
|
+
useValue: { ...defaultFlowbiteSidebarToggleConfig, ...config },
|
|
466
300
|
},
|
|
467
|
-
]
|
|
301
|
+
];
|
|
468
302
|
/**
|
|
469
|
-
*
|
|
303
|
+
* Inject the SidebarToggle configuration
|
|
304
|
+
* @see {@link defaultFlowbiteSidebarToggleConfig}
|
|
305
|
+
* @returns The configuration
|
|
470
306
|
*/
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
super(...arguments);
|
|
474
|
-
/**
|
|
475
|
-
* Service injected used to generate class
|
|
476
|
-
*/
|
|
477
|
-
this.themeService = inject(SidebarPageContentThemeService);
|
|
478
|
-
/**
|
|
479
|
-
* The parent `SidebarComponent`
|
|
480
|
-
*/
|
|
481
|
-
this.sidebarComponent = inject(SidebarComponent);
|
|
482
|
-
//#region properties
|
|
483
|
-
/**
|
|
484
|
-
* Set the custom style for this sidebar page content
|
|
485
|
-
*/
|
|
486
|
-
this.customStyle = model(inject(FLOWBITE_SIDEBAR_PAGE_CONTENT_CUSTOM_STYLE_DEFAULT_VALUE));
|
|
487
|
-
}
|
|
488
|
-
//endregion
|
|
489
|
-
//region BaseComponent implementation
|
|
490
|
-
fetchClass() {
|
|
491
|
-
return this.themeService.getClasses({
|
|
492
|
-
isOpen: booleanToFlowbiteBoolean(this.sidebarComponent.isOpen()),
|
|
493
|
-
displayMode: this.sidebarComponent.displayMode(),
|
|
494
|
-
customStyle: this.customStyle(),
|
|
495
|
-
});
|
|
496
|
-
}
|
|
497
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarPageContentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
498
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.4", type: SidebarPageContentComponent, isStandalone: true, selector: "flowbite-sidebar-page-content", inputs: { customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { customStyle: "customStyleChange" }, usesInheritance: true, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
499
|
-
}
|
|
500
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarPageContentComponent, decorators: [{
|
|
501
|
-
type: Component,
|
|
502
|
-
args: [{
|
|
503
|
-
standalone: true,
|
|
504
|
-
selector: 'flowbite-sidebar-page-content',
|
|
505
|
-
template: `<ng-content />`,
|
|
506
|
-
encapsulation: ViewEncapsulation.None,
|
|
507
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
508
|
-
}]
|
|
509
|
-
}] });
|
|
307
|
+
const injectFlowbiteSidebarToggleConfig = () => inject(FlowbiteSidebarToggleConfigToken, { optional: true }) ??
|
|
308
|
+
defaultFlowbiteSidebarToggleConfig;
|
|
510
309
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
* ```
|
|
516
|
-
* var theme = inject(FLOWBITE_SIDEBAR_THEME_TOKEN)
|
|
517
|
-
* ```
|
|
518
|
-
*/
|
|
519
|
-
const FLOWBITE_SIDEBAR_THEME_TOKEN = new InjectionToken('FLOWBITE_SIDEBAR_THEME_TOKEN');
|
|
520
|
-
class SidebarThemeService {
|
|
521
|
-
constructor() {
|
|
522
|
-
this.baseTheme = inject(FLOWBITE_SIDEBAR_THEME_TOKEN);
|
|
523
|
-
}
|
|
524
|
-
getClasses(properties) {
|
|
525
|
-
const theme = mergeTheme(this.baseTheme, properties.customStyle);
|
|
526
|
-
const output = {
|
|
527
|
-
rootClass: twMerge(theme.root.base, theme.root.isRounded[properties.isRounded]),
|
|
528
|
-
};
|
|
529
|
-
return output;
|
|
530
|
-
}
|
|
531
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
532
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarThemeService, providedIn: 'root' }); }
|
|
533
|
-
}
|
|
534
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarThemeService, decorators: [{
|
|
535
|
-
type: Injectable,
|
|
536
|
-
args: [{
|
|
537
|
-
providedIn: 'root',
|
|
538
|
-
}]
|
|
539
|
-
}] });
|
|
310
|
+
const FlowbiteSidebarToggleStateToken = createStateToken('Flowbite SidebarToggle');
|
|
311
|
+
const provideFlowbiteSidebarToggleState = createStateProvider(FlowbiteSidebarToggleStateToken);
|
|
312
|
+
const injectFlowbiteSidebarToggleState = createStateInjector(FlowbiteSidebarToggleStateToken);
|
|
313
|
+
const flowbiteSidebarToggleState = createState(FlowbiteSidebarToggleStateToken);
|
|
540
314
|
|
|
541
|
-
|
|
542
|
-
const FLOWBITE_SIDEBAR_DISPLAY_MODE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_SIDEBAR_DISPLAY_MODE_DEFAULT_VALUE');
|
|
543
|
-
const FLOWBITE_SIDEBAR_IS_OPEN_DEFAULT_VALUE = new InjectionToken('FLOWBITE_SIDEBAR_IS_OPEN_DEFAULT_VALUE');
|
|
544
|
-
const FLOWBITE_SIDEBAR_IS_ROUNDED_DEFAULT_VALUE = new InjectionToken('FLOWBITE_SIDEBAR_IS_ROUNDED_DEFAULT_VALUE');
|
|
545
|
-
const FLOWBITE_SIDEBAR_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_SIDEBAR_CUSTOM_STYLE_DEFAULT_VALUE');
|
|
546
|
-
const sidebarDefaultValueProvider = makeEnvironmentProviders([
|
|
547
|
-
{
|
|
548
|
-
provide: FLOWBITE_SIDEBAR_COLOR_DEFAULT_VALUE,
|
|
549
|
-
useValue: 'primary',
|
|
550
|
-
},
|
|
551
|
-
{
|
|
552
|
-
provide: FLOWBITE_SIDEBAR_DISPLAY_MODE_DEFAULT_VALUE,
|
|
553
|
-
useValue: 'push',
|
|
554
|
-
},
|
|
555
|
-
{
|
|
556
|
-
provide: FLOWBITE_SIDEBAR_IS_OPEN_DEFAULT_VALUE,
|
|
557
|
-
useValue: false,
|
|
558
|
-
},
|
|
559
|
-
{
|
|
560
|
-
provide: FLOWBITE_SIDEBAR_IS_ROUNDED_DEFAULT_VALUE,
|
|
561
|
-
useValue: false,
|
|
562
|
-
},
|
|
563
|
-
{
|
|
564
|
-
provide: FLOWBITE_SIDEBAR_CUSTOM_STYLE_DEFAULT_VALUE,
|
|
565
|
-
useValue: {},
|
|
566
|
-
},
|
|
567
|
-
]);
|
|
568
|
-
/**
|
|
569
|
-
* @see https://flowbite.com/docs/components/sidebar/
|
|
570
|
-
*/
|
|
571
|
-
class SidebarComponent extends BaseComponent {
|
|
315
|
+
class SidebarToggle {
|
|
572
316
|
constructor() {
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
/**
|
|
588
|
-
* Set the sidebar color
|
|
589
|
-
*
|
|
590
|
-
* @default primary
|
|
591
|
-
*/
|
|
592
|
-
this.color = model(inject(FLOWBITE_SIDEBAR_COLOR_DEFAULT_VALUE));
|
|
593
|
-
/**
|
|
594
|
-
* Set the sidebar display mode
|
|
595
|
-
*
|
|
596
|
-
* @default push
|
|
597
|
-
*/
|
|
598
|
-
this.displayMode = model(inject(FLOWBITE_SIDEBAR_DISPLAY_MODE_DEFAULT_VALUE));
|
|
599
|
-
/**
|
|
600
|
-
* Set is the sidebar is open
|
|
601
|
-
*
|
|
602
|
-
* @default false
|
|
603
|
-
*/
|
|
604
|
-
this.isOpen = model(inject(FLOWBITE_SIDEBAR_IS_OPEN_DEFAULT_VALUE));
|
|
605
|
-
/**
|
|
606
|
-
* Set is the sidebar is rounded
|
|
607
|
-
*
|
|
608
|
-
* @default false
|
|
609
|
-
*/
|
|
610
|
-
this.isRounded = model(inject(FLOWBITE_SIDEBAR_IS_ROUNDED_DEFAULT_VALUE));
|
|
317
|
+
this.config = injectFlowbiteSidebarToggleConfig();
|
|
318
|
+
this.sidebarState = injectFlowbiteSidebarState();
|
|
319
|
+
/**
|
|
320
|
+
* @see {@link injectFlowbiteSidebarToggleConfig}
|
|
321
|
+
*/
|
|
322
|
+
this.customTheme = input(this.config.customTheme);
|
|
323
|
+
this.theme = computed(() => {
|
|
324
|
+
const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
|
|
325
|
+
return {
|
|
326
|
+
host: {
|
|
327
|
+
root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, mergedTheme.host.focus, mergedTheme.host.disabled, colorToTheme(mergedTheme.host.color, this.sidebarState().color())),
|
|
328
|
+
},
|
|
329
|
+
};
|
|
330
|
+
});
|
|
611
331
|
/**
|
|
612
|
-
*
|
|
332
|
+
* @internal
|
|
613
333
|
*/
|
|
614
|
-
this.
|
|
334
|
+
this.state = flowbiteSidebarToggleState(this);
|
|
615
335
|
}
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
isRounded: booleanToFlowbiteBoolean(this.isRounded()),
|
|
622
|
-
customStyle: this.customStyle(),
|
|
623
|
-
});
|
|
336
|
+
/**
|
|
337
|
+
* @internal
|
|
338
|
+
*/
|
|
339
|
+
onClick() {
|
|
340
|
+
this.toggleSidebar();
|
|
624
341
|
}
|
|
625
|
-
//#endregion
|
|
626
342
|
/**
|
|
627
|
-
*
|
|
628
|
-
*
|
|
629
|
-
* @param isOpen If provided force isOpen value
|
|
343
|
+
* @internal
|
|
630
344
|
*/
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
isOpen = untracked(() => !this.isOpen());
|
|
634
|
-
}
|
|
635
|
-
this.isOpen.set(isOpen);
|
|
345
|
+
toggleSidebar() {
|
|
346
|
+
this.sidebarState().toggle();
|
|
636
347
|
}
|
|
637
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
638
|
-
static { this.ɵ
|
|
348
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SidebarToggle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
349
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: SidebarToggle, isStandalone: true, selector: "\n button[flowbiteSidebarToggle]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick()" }, properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteSidebarToggleState(), provideIcons({ barsFromLeft })], exportAs: ["flowbiteSidebarToggle"], hostDirectives: [{ directive: i1.BaseButton }], ngImport: i0 }); }
|
|
639
350
|
}
|
|
640
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
641
|
-
type:
|
|
351
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SidebarToggle, decorators: [{
|
|
352
|
+
type: Directive,
|
|
642
353
|
args: [{
|
|
643
354
|
standalone: true,
|
|
644
|
-
selector:
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
355
|
+
selector: `
|
|
356
|
+
button[flowbiteSidebarToggle]
|
|
357
|
+
`,
|
|
358
|
+
exportAs: 'flowbiteSidebarToggle',
|
|
359
|
+
hostDirectives: [
|
|
360
|
+
{
|
|
361
|
+
directive: BaseButton,
|
|
362
|
+
inputs: [],
|
|
363
|
+
outputs: [],
|
|
364
|
+
},
|
|
365
|
+
],
|
|
366
|
+
providers: [provideFlowbiteSidebarToggleState(), provideIcons({ barsFromLeft })],
|
|
367
|
+
host: {
|
|
368
|
+
'[class]': `theme().host.root`,
|
|
369
|
+
'(click)': 'onClick()',
|
|
370
|
+
},
|
|
648
371
|
}]
|
|
649
372
|
}] });
|
|
650
373
|
|
|
651
|
-
const
|
|
652
|
-
|
|
653
|
-
base: 'flex flex-row
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
},
|
|
658
|
-
|
|
659
|
-
});
|
|
660
|
-
|
|
661
|
-
/**
|
|
662
|
-
* Default theme for `SidebarItemComponent`
|
|
663
|
-
*/
|
|
664
|
-
const sidebarItemTheme = createTheme({
|
|
665
|
-
root: {
|
|
666
|
-
base: 'group flex cursor-pointer items-center rounded-lg p-2 text-base font-normal text-gray-900 dark:text-white',
|
|
667
|
-
color: {
|
|
668
|
-
primary: 'aria-current:text-primary-500 dark:aria-current:text-primary-300 hover:bg-primary-200/35 dark:hover:bg-primary-700/35',
|
|
669
|
-
dark: 'aria-current:text-gray-500 dark:aria-current:text-gray-300 hover:bg-gray-200/35 dark:hover:bg-gray-700/35',
|
|
670
|
-
blue: 'aria-current:text-blue-500 dark:aria-current:text-blue-300 hover:bg-blue-200/35 dark:hover:bg-blue-700/35',
|
|
671
|
-
red: 'aria-current:text-red-500 dark:aria-current:text-red-300 hover:bg-red-200/35 dark:hover:bg-red-700/35',
|
|
672
|
-
green: 'aria-current:text-green-500 dark:aria-current:text-green-300 hover:bg-green-200/35 dark:hover:bg-green-700/35',
|
|
673
|
-
yellow: 'aria-current:text-yellow-500 dark:aria-current:text-yellow-300 hover:bg-yellow-200/35 dark:hover:bg-yellow-700/35',
|
|
674
|
-
},
|
|
675
|
-
},
|
|
676
|
-
icon: {
|
|
677
|
-
base: 'flex-1 whitespace-nowrap',
|
|
678
|
-
},
|
|
679
|
-
});
|
|
680
|
-
|
|
681
|
-
/**
|
|
682
|
-
* Default theme for `SidebarItemGroupComponent`
|
|
683
|
-
*/
|
|
684
|
-
const sidebarItemGroupTheme = createTheme({
|
|
685
|
-
root: {
|
|
686
|
-
base: 'flex flex-col py-2 font-semibold cursor-pointer',
|
|
687
|
-
},
|
|
688
|
-
spanText: {
|
|
689
|
-
base: 'flex flex-row justify-between m-2',
|
|
374
|
+
const flowbiteSidebarItemTheme = createTheme({
|
|
375
|
+
host: {
|
|
376
|
+
base: 'm-0 flex cursor-pointer flex-row rounded-sm px-3 py-2',
|
|
377
|
+
transition: '',
|
|
378
|
+
focus: 'data-focus:ring-0 data-focus:outline-none data-focus-visible:ring-2 data-focus-visible:outline-none',
|
|
379
|
+
disabled: 'data-disabled:cursor-not-allowed data-disabled:opacity-50',
|
|
380
|
+
size: {},
|
|
381
|
+
pill: {},
|
|
690
382
|
color: {
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
383
|
+
default: {
|
|
384
|
+
light: 'text-gray-800 data-hover:text-gray-900',
|
|
385
|
+
dark: 'dark:text-white dark:data-hover:text-gray-100',
|
|
386
|
+
},
|
|
387
|
+
info: {
|
|
388
|
+
light: 'text-gray-800 data-hover:text-blue-900',
|
|
389
|
+
dark: 'dark:text-white dark:data-hover:text-blue-100',
|
|
390
|
+
},
|
|
391
|
+
failure: {
|
|
392
|
+
light: 'text-gray-800 data-hover:text-red-900',
|
|
393
|
+
dark: 'dark:text-white dark:data-hover:text-red-100',
|
|
394
|
+
},
|
|
395
|
+
success: {
|
|
396
|
+
light: 'text-gray-800 data-hover:text-green-900',
|
|
397
|
+
dark: 'dark:text-white dark:data-hover:text-green-100',
|
|
398
|
+
},
|
|
399
|
+
warning: {
|
|
400
|
+
light: 'text-gray-800 data-hover:text-yellow-900',
|
|
401
|
+
dark: 'dark:text-white dark:data-hover:text-yellow-100',
|
|
402
|
+
},
|
|
403
|
+
primary: {
|
|
404
|
+
light: 'data-hover:text-primary-900 text-gray-800',
|
|
405
|
+
dark: 'dark:data-hover:text-primary-100 dark:text-white',
|
|
406
|
+
},
|
|
697
407
|
},
|
|
408
|
+
colorOutline: {},
|
|
698
409
|
},
|
|
699
410
|
});
|
|
700
411
|
|
|
412
|
+
const defaultFlowbiteSidebarItemConfig = {
|
|
413
|
+
baseTheme: flowbiteSidebarItemTheme,
|
|
414
|
+
customTheme: {},
|
|
415
|
+
};
|
|
416
|
+
const FlowbiteSidebarItemConfigToken = new InjectionToken('FlowbiteSidebarItemConfigToken');
|
|
701
417
|
/**
|
|
702
|
-
*
|
|
703
|
-
*
|
|
704
|
-
* @
|
|
705
|
-
* ```
|
|
706
|
-
* var theme = inject(FLOWBITE_SIDEBAR_TOGGLE_THEME_TOKEN)
|
|
707
|
-
* ```
|
|
418
|
+
* Provide the default SidebarItem configuration
|
|
419
|
+
* @param config The SidebarItem configuration
|
|
420
|
+
* @returns The provider
|
|
708
421
|
*/
|
|
709
|
-
const
|
|
710
|
-
class SidebarToggleThemeService {
|
|
711
|
-
constructor() {
|
|
712
|
-
this.baseTheme = inject(FLOWBITE_SIDEBAR_TOGGLE_THEME_TOKEN);
|
|
713
|
-
}
|
|
714
|
-
getClasses(properties) {
|
|
715
|
-
const theme = mergeTheme(this.baseTheme, properties.customStyle);
|
|
716
|
-
const output = {
|
|
717
|
-
rootClass: twMerge(theme.root.base, theme.root.color[properties.color], theme.root.size[properties.color]),
|
|
718
|
-
};
|
|
719
|
-
return output;
|
|
720
|
-
}
|
|
721
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarToggleThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
722
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarToggleThemeService, providedIn: 'root' }); }
|
|
723
|
-
}
|
|
724
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: SidebarToggleThemeService, decorators: [{
|
|
725
|
-
type: Injectable,
|
|
726
|
-
args: [{
|
|
727
|
-
providedIn: 'root',
|
|
728
|
-
}]
|
|
729
|
-
}] });
|
|
730
|
-
|
|
731
|
-
const FLOWBITE_SIDEBAR_TOGGLE_COLOR_DEFAULT_VALUE = new InjectionToken('FLOWBITE_SIDEBAR_TOGGLE_COLOR_DEFAULT_VALUE');
|
|
732
|
-
const FLOWBITE_SIDEBAR_TOGGLE_SIZE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_SIDEBAR_TOGGLE_SIZE_DEFAULT_VALUE');
|
|
733
|
-
const FLOWBITE_SIDEBAR_TOGGLE_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_SIDEBAR_TOGGLE_CUSTOM_STYLE_DEFAULT_VALUE');
|
|
734
|
-
const sidebarToggleDefaultValueProvider = makeEnvironmentProviders([
|
|
422
|
+
const provideFlowbiteSidebarItemConfig = (config) => [
|
|
735
423
|
{
|
|
736
|
-
provide:
|
|
737
|
-
useValue:
|
|
424
|
+
provide: FlowbiteSidebarItemConfigToken,
|
|
425
|
+
useValue: { ...defaultFlowbiteSidebarItemConfig, ...config },
|
|
738
426
|
},
|
|
739
|
-
|
|
740
|
-
provide: FLOWBITE_SIDEBAR_TOGGLE_SIZE_DEFAULT_VALUE,
|
|
741
|
-
useValue: 'sm',
|
|
742
|
-
},
|
|
743
|
-
{
|
|
744
|
-
provide: FLOWBITE_SIDEBAR_TOGGLE_CUSTOM_STYLE_DEFAULT_VALUE,
|
|
745
|
-
useValue: {},
|
|
746
|
-
},
|
|
747
|
-
]);
|
|
427
|
+
];
|
|
748
428
|
/**
|
|
749
|
-
*
|
|
429
|
+
* Inject the SidebarItem configuration
|
|
430
|
+
* @see {@link defaultFlowbiteSidebarItemConfig}
|
|
431
|
+
* @returns The configuration
|
|
750
432
|
*/
|
|
751
|
-
|
|
433
|
+
const injectFlowbiteSidebarItemConfig = () => inject(FlowbiteSidebarItemConfigToken, { optional: true }) ?? defaultFlowbiteSidebarItemConfig;
|
|
434
|
+
|
|
435
|
+
const FlowbiteSidebarItemStateToken = createStateToken('Flowbite SidebarItem');
|
|
436
|
+
const provideFlowbiteSidebarItemState = createStateProvider(FlowbiteSidebarItemStateToken);
|
|
437
|
+
const injectFlowbiteSidebarItemState = createStateInjector(FlowbiteSidebarItemStateToken);
|
|
438
|
+
const flowbiteSidebarItemState = createState(FlowbiteSidebarItemStateToken);
|
|
439
|
+
|
|
440
|
+
class SidebarItem {
|
|
752
441
|
constructor() {
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
* The `SidebarComponent` to use
|
|
768
|
-
*
|
|
769
|
-
* @default The injected `SidebarComponent`
|
|
770
|
-
*/
|
|
771
|
-
this.sidebarComponent = model(inject(SidebarComponent));
|
|
772
|
-
//#region properties
|
|
773
|
-
/**
|
|
774
|
-
* Set the sidebar toggle color
|
|
775
|
-
*
|
|
776
|
-
* @default primary
|
|
777
|
-
*/
|
|
778
|
-
this.color = model(inject(FLOWBITE_SIDEBAR_TOGGLE_COLOR_DEFAULT_VALUE));
|
|
779
|
-
/**
|
|
780
|
-
* Set the sidebar toggle size
|
|
781
|
-
*
|
|
782
|
-
* @default sm
|
|
783
|
-
*/
|
|
784
|
-
this.size = model(inject(FLOWBITE_SIDEBAR_TOGGLE_SIZE_DEFAULT_VALUE));
|
|
442
|
+
this.config = injectFlowbiteSidebarItemConfig();
|
|
443
|
+
this.sidebarState = injectFlowbiteSidebarState();
|
|
444
|
+
/**
|
|
445
|
+
* @see {@link injectFlowbiteSidebarItemConfig}
|
|
446
|
+
*/
|
|
447
|
+
this.customTheme = input(this.config.customTheme);
|
|
448
|
+
this.theme = computed(() => {
|
|
449
|
+
const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
|
|
450
|
+
return {
|
|
451
|
+
host: {
|
|
452
|
+
root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, mergedTheme.host.focus, mergedTheme.host.disabled, colorToTheme(mergedTheme.host.color, this.sidebarState().color())),
|
|
453
|
+
},
|
|
454
|
+
};
|
|
455
|
+
});
|
|
785
456
|
/**
|
|
786
|
-
*
|
|
457
|
+
* @internal
|
|
787
458
|
*/
|
|
788
|
-
this.
|
|
789
|
-
}
|
|
790
|
-
//#endregion
|
|
791
|
-
//#region BaseComponent implementation
|
|
792
|
-
fetchClass() {
|
|
793
|
-
return this.themeService.getClasses({
|
|
794
|
-
color: this.color(),
|
|
795
|
-
size: this.size(),
|
|
796
|
-
customStyle: this.customStyle(),
|
|
797
|
-
});
|
|
798
|
-
}
|
|
799
|
-
init() {
|
|
800
|
-
this.iconRegistry.addRawSvgIconInNamepsace('flowbite-angular', 'tabs', this.domSanitizer.bypassSecurityTrustHtml(BARS_SVG_ICON));
|
|
459
|
+
this.state = flowbiteSidebarItemState(this);
|
|
801
460
|
}
|
|
802
|
-
//#endregion
|
|
803
461
|
/**
|
|
804
|
-
*
|
|
462
|
+
* @internal
|
|
805
463
|
*/
|
|
806
464
|
onClick() {
|
|
807
|
-
|
|
808
|
-
this.sidebarComponent().isOpen.set(!isOpen);
|
|
465
|
+
this.toggleSidebar();
|
|
809
466
|
}
|
|
810
|
-
|
|
811
|
-
|
|
467
|
+
/**
|
|
468
|
+
* @internal
|
|
469
|
+
*/
|
|
470
|
+
toggleSidebar() {
|
|
471
|
+
this.sidebarState().toggle();
|
|
472
|
+
}
|
|
473
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SidebarItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
474
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: SidebarItem, isStandalone: true, selector: "\n a[flowbiteSidebarItem],\n button[flowbiteSidebarItem]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick()" }, properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteSidebarItemState()], exportAs: ["flowbiteSidebarItem"], hostDirectives: [{ directive: i1.BaseButton }, { directive: i2.NgpButton, inputs: ["disabled", "disabled"] }, { directive: i3.NgpFocus, inputs: ["ngpFocusDisabled", "focusDisabled"], outputs: ["ngpFocus", "ngpFocus"] }], ngImport: i0 }); }
|
|
812
475
|
}
|
|
813
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
814
|
-
type:
|
|
476
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SidebarItem, decorators: [{
|
|
477
|
+
type: Directive,
|
|
815
478
|
args: [{
|
|
816
479
|
standalone: true,
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
480
|
+
selector: `
|
|
481
|
+
a[flowbiteSidebarItem],
|
|
482
|
+
button[flowbiteSidebarItem]
|
|
483
|
+
`,
|
|
484
|
+
exportAs: 'flowbiteSidebarItem',
|
|
485
|
+
hostDirectives: [
|
|
486
|
+
{
|
|
487
|
+
directive: BaseButton,
|
|
488
|
+
inputs: [],
|
|
489
|
+
outputs: [],
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
directive: NgpButton,
|
|
493
|
+
inputs: ['disabled:disabled'],
|
|
494
|
+
outputs: [],
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
directive: NgpFocus,
|
|
498
|
+
inputs: ['ngpFocusDisabled:focusDisabled'],
|
|
499
|
+
outputs: ['ngpFocus'],
|
|
500
|
+
},
|
|
501
|
+
],
|
|
502
|
+
providers: [provideFlowbiteSidebarItemState()],
|
|
820
503
|
host: {
|
|
504
|
+
'[class]': `theme().host.root`,
|
|
821
505
|
'(click)': 'onClick()',
|
|
822
506
|
},
|
|
823
|
-
encapsulation: ViewEncapsulation.None,
|
|
824
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
825
507
|
}]
|
|
826
508
|
}] });
|
|
827
509
|
|
|
828
|
-
|
|
829
|
-
* Default theme for `SidebarToggleComponent`
|
|
830
|
-
*/
|
|
831
|
-
const sidebarToggleTheme = createTheme({
|
|
832
|
-
root: {
|
|
833
|
-
base: 'cursor-pointer inline-flex items-center p-2 justify-center rounded-lg focus:outline-none focus:ring-2',
|
|
834
|
-
color: {
|
|
835
|
-
primary: 'text-primary-500 dark:text-primary-400 hover:bg-primary-100 dark:hover:bg-gray-700 focus:ring-primary-200 dark:focus:ring-primary-600',
|
|
836
|
-
dark: 'text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:ring-gray-200 dark:focus:ring-gray-600',
|
|
837
|
-
blue: 'text-blue-500 dark:text-blue-400 hover:bg-blue-100 dark:hover:bg-blue-700 focus:ring-blue-200 dark:focus:ring-blue-600',
|
|
838
|
-
red: 'text-red-500 dark:text-red-400 hover:bg-red-100 dark:hover:bg-red-700 focus:ring-red-200 dark:focus:ring-red-600',
|
|
839
|
-
green: 'text-green-500 dark:text-green-400 hover:bg-green-100 dark:hover:bg-green-700 focus:ring-green-200 dark:focus:ring-green-600',
|
|
840
|
-
yellow: 'text-yellow-500 dark:text-yellow-400 hover:bg-yellow-100 dark:hover:bg-yellow-700 focus:ring-yellow-200 dark:focus:ring-yellow-600',
|
|
841
|
-
},
|
|
842
|
-
size: {
|
|
843
|
-
sm: 'text-sm',
|
|
844
|
-
},
|
|
845
|
-
},
|
|
846
|
-
});
|
|
847
|
-
|
|
848
|
-
/**
|
|
849
|
-
* Default theme for `SidebarPageContentComponent`
|
|
850
|
-
*/
|
|
851
|
-
const sidebarPageContentTheme = createTheme({
|
|
852
|
-
root: {
|
|
853
|
-
base: 'flex flex-1',
|
|
854
|
-
displayMode: {
|
|
855
|
-
push: '',
|
|
856
|
-
over: '',
|
|
857
|
-
backdrop: 'sticky left-0 right-0 z-30 bg-gray-500 bg-opacity-50 blur-md',
|
|
858
|
-
},
|
|
859
|
-
},
|
|
860
|
-
});
|
|
861
|
-
|
|
862
|
-
/**
|
|
863
|
-
* Default theme for `SidebarMenuComponent`
|
|
864
|
-
*/
|
|
865
|
-
const sidebarMenuTheme = createTheme({
|
|
866
|
-
root: {
|
|
867
|
-
base: 'flex-col min-h-full overflow-y-auto shrink-0 pr-1 border-r bg-white dark:bg-gray-800',
|
|
868
|
-
displayMode: {
|
|
869
|
-
push: '',
|
|
870
|
-
over: 'sticky top-0 z-50',
|
|
871
|
-
backdrop: 'sticky top-0 z-50',
|
|
872
|
-
},
|
|
873
|
-
isOpen: {
|
|
874
|
-
enabled: 'flex',
|
|
875
|
-
disabled: 'hidden',
|
|
876
|
-
},
|
|
877
|
-
color: {
|
|
878
|
-
primary: 'border-primary-200 dark:border-primary-700',
|
|
879
|
-
dark: 'border-gray-200 dark:border-gray-800',
|
|
880
|
-
blue: 'border-blue-200 dark:border-blue-700',
|
|
881
|
-
red: 'border-red-200 dark:border-red-700',
|
|
882
|
-
green: 'border-green-200 dark:border-green-700',
|
|
883
|
-
yellow: 'border-yellow-200 dark:border-yellow-700',
|
|
884
|
-
},
|
|
885
|
-
},
|
|
886
|
-
});
|
|
510
|
+
/* Sidebar */
|
|
887
511
|
|
|
888
512
|
/**
|
|
889
513
|
* Generated bundle index. Do not edit.
|
|
890
514
|
*/
|
|
891
515
|
|
|
892
|
-
export {
|
|
516
|
+
export { FlowbiteSidebarConfigToken, FlowbiteSidebarContentConfigToken, FlowbiteSidebarContentStateToken, FlowbiteSidebarItemConfigToken, FlowbiteSidebarItemStateToken, FlowbiteSidebarStateToken, FlowbiteSidebarToggleConfigToken, FlowbiteSidebarToggleStateToken, Sidebar, SidebarContent, SidebarItem, SidebarToggle, defaultFlowbiteSidebarConfig, defaultFlowbiteSidebarContentConfig, defaultFlowbiteSidebarItemConfig, defaultFlowbiteSidebarToggleConfig, flowbiteSidebarContentState, flowbiteSidebarContentTheme, flowbiteSidebarItemState, flowbiteSidebarItemTheme, flowbiteSidebarState, flowbiteSidebarTheme, flowbiteSidebarToggleState, flowbiteSidebarToggleTheme, injectFlowbiteSidebarConfig, injectFlowbiteSidebarContentConfig, injectFlowbiteSidebarContentState, injectFlowbiteSidebarItemConfig, injectFlowbiteSidebarItemState, injectFlowbiteSidebarState, injectFlowbiteSidebarToggleConfig, injectFlowbiteSidebarToggleState, provideFlowbiteSidebarConfig, provideFlowbiteSidebarContentConfig, provideFlowbiteSidebarContentState, provideFlowbiteSidebarItemConfig, provideFlowbiteSidebarItemState, provideFlowbiteSidebarState, provideFlowbiteSidebarToggleConfig, provideFlowbiteSidebarToggleState };
|
|
893
517
|
//# sourceMappingURL=flowbite-angular-sidebar.mjs.map
|