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,528 +1,341 @@
|
|
|
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, computed, Directive } from '@angular/core';
|
|
4
|
+
import { createStateToken, createStateProvider, createStateInjector, createState } from 'ng-primitives/state';
|
|
5
|
+
import * as i1 from 'ng-primitives/menu';
|
|
6
|
+
import { NgpMenu, NgpMenuItem } from 'ng-primitives/menu';
|
|
4
7
|
import { twMerge } from 'tailwind-merge';
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
|
8
|
+
import * as i2 from 'ng-primitives/interactions';
|
|
9
|
+
import { NgpFocus } from 'ng-primitives/interactions';
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const FLOWBITE_DROPDOWN_DIVIDER_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_DROPDOWN_DIVIDER_CUSTOM_STYLE_DEFAULT_VALUE');
|
|
40
|
-
const dropdownDividerDefaultValueProvider = makeEnvironmentProviders([
|
|
41
|
-
{
|
|
42
|
-
provide: FLOWBITE_DROPDOWN_DIVIDER_CUSTOM_STYLE_DEFAULT_VALUE,
|
|
43
|
-
useValue: {},
|
|
11
|
+
const flowbiteDropdownTheme = createTheme({
|
|
12
|
+
host: {
|
|
13
|
+
base: 'fixed z-10 w-max divide-y rounded-lg border shadow-sm',
|
|
14
|
+
transition: '',
|
|
15
|
+
color: {
|
|
16
|
+
default: {
|
|
17
|
+
light: 'divide-gray-200 border-gray-200 bg-white',
|
|
18
|
+
dark: 'dark:divide-gray-700 dark:border-gray-700 dark:bg-gray-800',
|
|
19
|
+
},
|
|
20
|
+
info: {
|
|
21
|
+
light: 'divide-blue-200 border-blue-200 bg-white',
|
|
22
|
+
dark: 'dark:divide-blue-700 dark:border-blue-700 dark:bg-gray-800',
|
|
23
|
+
},
|
|
24
|
+
failure: {
|
|
25
|
+
light: 'divide-red-200 border-red-200 bg-white',
|
|
26
|
+
dark: 'dark:divide-red-700 dark:border-red-700 dark:bg-gray-800',
|
|
27
|
+
},
|
|
28
|
+
success: {
|
|
29
|
+
light: 'divide-green-200 border-green-200 bg-white',
|
|
30
|
+
dark: 'dark:divide-green-700 dark:border-green-700 dark:bg-gray-800',
|
|
31
|
+
},
|
|
32
|
+
warning: {
|
|
33
|
+
light: 'divide-yellow-200 border-yellow-200 bg-white',
|
|
34
|
+
dark: 'dark:divide-yellow-700 dark:border-yellow-700 dark:bg-gray-800',
|
|
35
|
+
},
|
|
36
|
+
primary: {
|
|
37
|
+
light: 'divide-primary-200 border-primary-200 bg-white',
|
|
38
|
+
dark: 'dark:divide-primary-700 dark:border-primary-700 dark:bg-gray-800',
|
|
39
|
+
},
|
|
40
|
+
},
|
|
44
41
|
},
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* @see https://flowbite.com/docs/components/dropdowns/
|
|
48
|
-
*/
|
|
49
|
-
class DropdownDividerComponent extends BaseComponent {
|
|
50
|
-
constructor() {
|
|
51
|
-
super(...arguments);
|
|
52
|
-
/**
|
|
53
|
-
* Service injected used to generate class
|
|
54
|
-
*/
|
|
55
|
-
this.themeService = inject(DropdownDividerThemeService);
|
|
56
|
-
/**
|
|
57
|
-
* The parent `DropdownComponent`
|
|
58
|
-
*/
|
|
59
|
-
this.dropdownComponent = inject(DropdownComponent);
|
|
60
|
-
//#region properties
|
|
61
|
-
/**
|
|
62
|
-
* Set the custom style for this dropdown divider
|
|
63
|
-
*/
|
|
64
|
-
this.customStyle = model(inject(FLOWBITE_DROPDOWN_DIVIDER_CUSTOM_STYLE_DEFAULT_VALUE));
|
|
65
|
-
}
|
|
66
|
-
//#endregion
|
|
67
|
-
//#region BaseComponent implementation
|
|
68
|
-
fetchClass() {
|
|
69
|
-
return this.themeService.getClasses({
|
|
70
|
-
customStyle: this.customStyle(),
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: DropdownDividerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.4", type: DropdownDividerComponent, isStandalone: true, selector: "flowbite-dropdown-divider", inputs: { customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { customStyle: "customStyleChange" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
75
|
-
}
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: DropdownDividerComponent, decorators: [{
|
|
77
|
-
type: Component,
|
|
78
|
-
args: [{
|
|
79
|
-
standalone: true,
|
|
80
|
-
selector: 'flowbite-dropdown-divider',
|
|
81
|
-
template: ``,
|
|
82
|
-
encapsulation: ViewEncapsulation.None,
|
|
83
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
84
|
-
}]
|
|
85
|
-
}] });
|
|
42
|
+
});
|
|
86
43
|
|
|
44
|
+
const defaultFlowbiteDropdownConfig = {
|
|
45
|
+
baseTheme: flowbiteDropdownTheme,
|
|
46
|
+
color: 'default',
|
|
47
|
+
customTheme: {},
|
|
48
|
+
};
|
|
49
|
+
const FlowbiteDropdownConfigToken = new InjectionToken('FlowbiteDropdownConfigToken');
|
|
87
50
|
/**
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
* @
|
|
91
|
-
* ```
|
|
92
|
-
* var theme = inject(FLOWBITE_DROPDOWN_HEADER_THEME_TOKEN)
|
|
93
|
-
* ```
|
|
51
|
+
* Provide the default Dropdown configuration
|
|
52
|
+
* @param config The Dropdown configuration
|
|
53
|
+
* @returns The provider
|
|
94
54
|
*/
|
|
95
|
-
const
|
|
96
|
-
class DropdownHeaderThemeService {
|
|
97
|
-
constructor() {
|
|
98
|
-
this.baseTheme = inject(FLOWBITE_DROPDOWN_HEADER_THEME_TOKEN);
|
|
99
|
-
}
|
|
100
|
-
getClasses(properties) {
|
|
101
|
-
const theme = mergeTheme(this.baseTheme, properties.customStyle);
|
|
102
|
-
const output = {
|
|
103
|
-
rootClass: twMerge(theme.root.base),
|
|
104
|
-
root: twMerge(theme.content.base),
|
|
105
|
-
};
|
|
106
|
-
return output;
|
|
107
|
-
}
|
|
108
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: DropdownHeaderThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
109
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: DropdownHeaderThemeService, providedIn: 'root' }); }
|
|
110
|
-
}
|
|
111
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: DropdownHeaderThemeService, decorators: [{
|
|
112
|
-
type: Injectable,
|
|
113
|
-
args: [{
|
|
114
|
-
providedIn: 'root',
|
|
115
|
-
}]
|
|
116
|
-
}] });
|
|
117
|
-
|
|
118
|
-
const FLOWBITE_DROPDOWN_HEADER_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_DROPDOWN_HEADER_CUSTOM_STYLE_DEFAULT_VALUE');
|
|
119
|
-
const dropdownHeaderDefaultValueProvider = makeEnvironmentProviders([
|
|
55
|
+
const provideFlowbiteDropdownConfig = (config) => [
|
|
120
56
|
{
|
|
121
|
-
provide:
|
|
122
|
-
useValue: {},
|
|
57
|
+
provide: FlowbiteDropdownConfigToken,
|
|
58
|
+
useValue: { ...defaultFlowbiteDropdownConfig, ...config },
|
|
123
59
|
},
|
|
124
|
-
]
|
|
60
|
+
];
|
|
125
61
|
/**
|
|
126
|
-
*
|
|
62
|
+
* Inject the Dropdown configuration
|
|
63
|
+
* @see {@link defaultFlowbiteDropdownConfig}
|
|
64
|
+
* @returns The configuration
|
|
127
65
|
*/
|
|
128
|
-
|
|
66
|
+
const injectFlowbiteDropdownConfig = () => inject(FlowbiteDropdownConfigToken, { optional: true }) ?? defaultFlowbiteDropdownConfig;
|
|
67
|
+
|
|
68
|
+
const FlowbiteDropdownStateToken = createStateToken('Flowbite Dropdown');
|
|
69
|
+
const provideFlowbiteDropdownState = createStateProvider(FlowbiteDropdownStateToken);
|
|
70
|
+
const injectFlowbiteDropdownState = createStateInjector(FlowbiteDropdownStateToken);
|
|
71
|
+
const flowbiteDropdownState = createState(FlowbiteDropdownStateToken);
|
|
72
|
+
|
|
73
|
+
class Dropdown {
|
|
129
74
|
constructor() {
|
|
130
|
-
|
|
75
|
+
this.config = injectFlowbiteDropdownConfig();
|
|
131
76
|
/**
|
|
132
|
-
*
|
|
77
|
+
* @see {@link injectFlowbiteDropdownConfig}
|
|
133
78
|
*/
|
|
134
|
-
this.
|
|
79
|
+
this.color = input(this.config.color);
|
|
135
80
|
/**
|
|
136
|
-
*
|
|
81
|
+
* @see {@link injectFlowbiteDropdownConfig}
|
|
137
82
|
*/
|
|
138
|
-
this.
|
|
139
|
-
|
|
83
|
+
this.customTheme = input(this.config.customTheme);
|
|
84
|
+
this.theme = computed(() => {
|
|
85
|
+
const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
|
|
86
|
+
return {
|
|
87
|
+
host: {
|
|
88
|
+
root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, colorToTheme(mergedTheme.host.color, this.state.color())),
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
});
|
|
140
92
|
/**
|
|
141
|
-
*
|
|
93
|
+
* @internal
|
|
142
94
|
*/
|
|
143
|
-
this.
|
|
144
|
-
}
|
|
145
|
-
//#endregion
|
|
146
|
-
//#region BaseComponent implementation
|
|
147
|
-
fetchClass() {
|
|
148
|
-
return this.themeService.getClasses({
|
|
149
|
-
customStyle: this.customStyle(),
|
|
150
|
-
});
|
|
95
|
+
this.state = flowbiteDropdownState(this);
|
|
151
96
|
}
|
|
152
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
153
|
-
static { this.ɵ
|
|
154
|
-
<div [class]="contentClasses().root">
|
|
155
|
-
<ng-content />
|
|
156
|
-
</div>
|
|
157
|
-
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
97
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: Dropdown, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
98
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: Dropdown, isStandalone: true, selector: "\n div[flowbiteDropdown]\n ", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteDropdownState()], exportAs: ["flowbiteDropdown"], hostDirectives: [{ directive: i1.NgpMenu }], ngImport: i0 }); }
|
|
158
99
|
}
|
|
159
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
160
|
-
type:
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: Dropdown, decorators: [{
|
|
101
|
+
type: Directive,
|
|
161
102
|
args: [{
|
|
162
103
|
standalone: true,
|
|
163
|
-
selector:
|
|
164
|
-
|
|
165
|
-
<div [class]="contentClasses().root">
|
|
166
|
-
<ng-content />
|
|
167
|
-
</div>
|
|
104
|
+
selector: `
|
|
105
|
+
div[flowbiteDropdown]
|
|
168
106
|
`,
|
|
169
|
-
|
|
170
|
-
|
|
107
|
+
exportAs: 'flowbiteDropdown',
|
|
108
|
+
hostDirectives: [
|
|
109
|
+
{
|
|
110
|
+
directive: NgpMenu,
|
|
111
|
+
inputs: [],
|
|
112
|
+
outputs: [],
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
providers: [provideFlowbiteDropdownState()],
|
|
116
|
+
host: {
|
|
117
|
+
'[class]': `theme().host.root`,
|
|
118
|
+
},
|
|
171
119
|
}]
|
|
172
120
|
}] });
|
|
173
121
|
|
|
122
|
+
const flowbiteDropdownItemTheme = createTheme({
|
|
123
|
+
host: {
|
|
124
|
+
base: 'flex cursor-pointer items-center justify-between px-4 py-2 font-medium',
|
|
125
|
+
transition: '',
|
|
126
|
+
color: {
|
|
127
|
+
default: {
|
|
128
|
+
light: 'data-hover:bg-gray-100',
|
|
129
|
+
dark: 'dark:data-hover:bg-gray-700 dark:data-hover:text-white',
|
|
130
|
+
},
|
|
131
|
+
info: {
|
|
132
|
+
light: 'data-hover:bg-blue-100',
|
|
133
|
+
dark: 'dark:data-hover:bg-blue-700 dark:data-hover:text-white',
|
|
134
|
+
},
|
|
135
|
+
failure: {
|
|
136
|
+
light: 'data-hover:bg-red-100',
|
|
137
|
+
dark: 'dark:data-hover:bg-red-700 dark:data-hover:text-white',
|
|
138
|
+
},
|
|
139
|
+
success: {
|
|
140
|
+
light: 'data-hover:bg-green-100',
|
|
141
|
+
dark: 'dark:data-hover:bg-green-700 dark:data-hover:text-white',
|
|
142
|
+
},
|
|
143
|
+
warning: {
|
|
144
|
+
light: 'data-hover:bg-yellow-100',
|
|
145
|
+
dark: 'dark:data-hover:bg-yellow-700 dark:data-hover:text-white',
|
|
146
|
+
},
|
|
147
|
+
primary: {
|
|
148
|
+
light: 'data-hover:bg-primary-100',
|
|
149
|
+
dark: 'dark:data-hover:bg-primary-700 dark:data-hover:text-white',
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
const defaultFlowbiteDropdownItemConfig = {
|
|
156
|
+
baseTheme: flowbiteDropdownItemTheme,
|
|
157
|
+
customTheme: {},
|
|
158
|
+
};
|
|
159
|
+
const FlowbiteDropdownItemConfigToken = new InjectionToken('FlowbiteDropdownItemConfigToken');
|
|
174
160
|
/**
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
* @
|
|
178
|
-
* ```
|
|
179
|
-
* var theme = inject(FLOWBITE_DROPDOWN_ITEM_THEME_TOKEN)
|
|
180
|
-
* ```
|
|
161
|
+
* Provide the default Dropdown Item configuration
|
|
162
|
+
* @param config The Dropdown Item configuration
|
|
163
|
+
* @returns The provider
|
|
181
164
|
*/
|
|
182
|
-
const
|
|
183
|
-
class DropdownItemThemeService {
|
|
184
|
-
constructor() {
|
|
185
|
-
this.baseTheme = inject(FLOWBITE_DROPDOWN_ITEM_THEME_TOKEN);
|
|
186
|
-
}
|
|
187
|
-
getClasses(properties) {
|
|
188
|
-
const theme = mergeTheme(this.baseTheme, properties.customStyle);
|
|
189
|
-
const output = {
|
|
190
|
-
rootClass: twMerge(theme.root.base),
|
|
191
|
-
};
|
|
192
|
-
return output;
|
|
193
|
-
}
|
|
194
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: DropdownItemThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
195
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: DropdownItemThemeService, providedIn: 'root' }); }
|
|
196
|
-
}
|
|
197
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: DropdownItemThemeService, decorators: [{
|
|
198
|
-
type: Injectable,
|
|
199
|
-
args: [{
|
|
200
|
-
providedIn: 'root',
|
|
201
|
-
}]
|
|
202
|
-
}] });
|
|
203
|
-
|
|
204
|
-
const FLOWBITE_DROPDOWN_ITEM_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_DROPDOWN_ITEM_CUSTOM_STYLE_DEFAULT_VALUE');
|
|
205
|
-
const dropdownItemDefaultValueProvider = makeEnvironmentProviders([
|
|
165
|
+
const provideFlowbiteDropdownItemConfig = (config) => [
|
|
206
166
|
{
|
|
207
|
-
provide:
|
|
208
|
-
useValue: {},
|
|
167
|
+
provide: FlowbiteDropdownItemConfigToken,
|
|
168
|
+
useValue: { ...defaultFlowbiteDropdownItemConfig, ...config },
|
|
209
169
|
},
|
|
210
|
-
]
|
|
170
|
+
];
|
|
211
171
|
/**
|
|
212
|
-
*
|
|
172
|
+
* Inject the Dropdown Item configuration
|
|
173
|
+
* @see {@link defaultFlowbiteDropdownItemConfig}
|
|
174
|
+
* @returns The configuration
|
|
213
175
|
*/
|
|
214
|
-
|
|
176
|
+
const injectFlowbiteDropdownItemConfig = () => inject(FlowbiteDropdownItemConfigToken, { optional: true }) ?? defaultFlowbiteDropdownItemConfig;
|
|
177
|
+
|
|
178
|
+
const FlowbiteDropdownItemStateToken = createStateToken('Flowbite Dropdown Item');
|
|
179
|
+
const provideFlowbiteDropdownItemState = createStateProvider(FlowbiteDropdownItemStateToken);
|
|
180
|
+
const injectFlowbiteDropdownItemState = createStateInjector(FlowbiteDropdownItemStateToken);
|
|
181
|
+
const flowbiteDropdownItemState = createState(FlowbiteDropdownItemStateToken);
|
|
182
|
+
|
|
183
|
+
class DropdownItem {
|
|
215
184
|
constructor() {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
* Service injected used to generate class
|
|
219
|
-
*/
|
|
220
|
-
this.themeService = inject(DropdownItemThemeService);
|
|
185
|
+
this.config = injectFlowbiteDropdownItemConfig();
|
|
186
|
+
this.dropdownState = injectFlowbiteDropdownState();
|
|
221
187
|
/**
|
|
222
|
-
*
|
|
188
|
+
* @see {@link injectFlowbiteDropdownItemConfig}
|
|
223
189
|
*/
|
|
224
|
-
this.
|
|
225
|
-
|
|
190
|
+
this.customTheme = input(this.config.customTheme);
|
|
191
|
+
this.theme = computed(() => {
|
|
192
|
+
const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
|
|
193
|
+
return {
|
|
194
|
+
host: {
|
|
195
|
+
root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, colorToTheme(mergedTheme.host.color, this.dropdownState().color())),
|
|
196
|
+
},
|
|
197
|
+
};
|
|
198
|
+
});
|
|
226
199
|
/**
|
|
227
|
-
*
|
|
200
|
+
* @internal
|
|
228
201
|
*/
|
|
229
|
-
this.
|
|
230
|
-
}
|
|
231
|
-
//#endregion
|
|
232
|
-
//#region BaseComponent implementation
|
|
233
|
-
fetchClass() {
|
|
234
|
-
return this.themeService.getClasses({
|
|
235
|
-
customStyle: this.customStyle(),
|
|
236
|
-
});
|
|
202
|
+
this.state = flowbiteDropdownItemState(this);
|
|
237
203
|
}
|
|
238
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
239
|
-
static { this.ɵ
|
|
204
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DropdownItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
205
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: DropdownItem, isStandalone: true, selector: "\n li[flowbiteDropdownItem]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteDropdownItemState()], exportAs: ["flowbiteDropdownItem"], hostDirectives: [{ directive: i1.NgpMenuItem }, { directive: i2.NgpFocus }], ngImport: i0 }); }
|
|
240
206
|
}
|
|
241
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
242
|
-
type:
|
|
207
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DropdownItem, decorators: [{
|
|
208
|
+
type: Directive,
|
|
243
209
|
args: [{
|
|
244
210
|
standalone: true,
|
|
245
|
-
selector:
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
211
|
+
selector: `
|
|
212
|
+
li[flowbiteDropdownItem]
|
|
213
|
+
`,
|
|
214
|
+
exportAs: 'flowbiteDropdownItem',
|
|
215
|
+
hostDirectives: [
|
|
216
|
+
{
|
|
217
|
+
directive: NgpMenuItem,
|
|
218
|
+
inputs: [],
|
|
219
|
+
outputs: [],
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
directive: NgpFocus,
|
|
223
|
+
inputs: [],
|
|
224
|
+
outputs: [],
|
|
225
|
+
},
|
|
226
|
+
],
|
|
227
|
+
providers: [provideFlowbiteDropdownItemState()],
|
|
228
|
+
host: {
|
|
229
|
+
'[class]': `theme().host.root`,
|
|
230
|
+
},
|
|
249
231
|
}]
|
|
250
232
|
}] });
|
|
251
233
|
|
|
234
|
+
const flowbiteDropdownContentTheme = createTheme({
|
|
235
|
+
host: {
|
|
236
|
+
base: 'py-2 text-sm',
|
|
237
|
+
transition: '',
|
|
238
|
+
color: {
|
|
239
|
+
default: {
|
|
240
|
+
light: 'text-gray-700',
|
|
241
|
+
dark: 'dark:text-gray-200',
|
|
242
|
+
},
|
|
243
|
+
info: {
|
|
244
|
+
light: 'text-gray-700',
|
|
245
|
+
dark: 'dark:text-gray-200',
|
|
246
|
+
},
|
|
247
|
+
failure: {
|
|
248
|
+
light: 'text-gray-700',
|
|
249
|
+
dark: 'dark:text-gray-200',
|
|
250
|
+
},
|
|
251
|
+
success: {
|
|
252
|
+
light: 'text-gray-700',
|
|
253
|
+
dark: 'dark:text-gray-200',
|
|
254
|
+
},
|
|
255
|
+
warning: {
|
|
256
|
+
light: 'text-gray-700',
|
|
257
|
+
dark: 'dark:text-gray-200',
|
|
258
|
+
},
|
|
259
|
+
primary: {
|
|
260
|
+
light: 'text-gray-700',
|
|
261
|
+
dark: 'dark:text-gray-200',
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
const defaultFlowbiteDropdownContentConfig = {
|
|
268
|
+
baseTheme: flowbiteDropdownContentTheme,
|
|
269
|
+
customTheme: {},
|
|
270
|
+
};
|
|
271
|
+
const FlowbiteDropdownContentConfigToken = new InjectionToken('FlowbiteDropdownContentConfigToken');
|
|
252
272
|
/**
|
|
253
|
-
*
|
|
254
|
-
*
|
|
255
|
-
* @
|
|
256
|
-
* ```
|
|
257
|
-
* var theme = inject(FLOWBITE_DROPDOWN_THEME_TOKEN)
|
|
258
|
-
* ```
|
|
273
|
+
* Provide the default DropdownContent configuration
|
|
274
|
+
* @param config The DropdownContent configuration
|
|
275
|
+
* @returns The provider
|
|
259
276
|
*/
|
|
260
|
-
const
|
|
261
|
-
class DropdownThemeService {
|
|
262
|
-
constructor() {
|
|
263
|
-
this.baseTheme = inject(FLOWBITE_DROPDOWN_THEME_TOKEN);
|
|
264
|
-
}
|
|
265
|
-
getClasses(properties) {
|
|
266
|
-
const theme = mergeTheme(this.baseTheme, properties.customStyle);
|
|
267
|
-
const output = {
|
|
268
|
-
rootClass: twMerge(theme.root.base),
|
|
269
|
-
dropdownClass: twMerge(theme.dropdown.base),
|
|
270
|
-
spanClass: twMerge(theme.span.base),
|
|
271
|
-
containerClass: twMerge(theme.container.base, theme.container.isOpen[properties.isOpen], theme.container.placement[properties.placement]),
|
|
272
|
-
contentClass: twMerge(theme.content.base),
|
|
273
|
-
subContentClass: twMerge(theme.subContent.base),
|
|
274
|
-
};
|
|
275
|
-
return output;
|
|
276
|
-
}
|
|
277
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: DropdownThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
278
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: DropdownThemeService, providedIn: 'root' }); }
|
|
279
|
-
}
|
|
280
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: DropdownThemeService, decorators: [{
|
|
281
|
-
type: Injectable,
|
|
282
|
-
args: [{
|
|
283
|
-
providedIn: 'root',
|
|
284
|
-
}]
|
|
285
|
-
}] });
|
|
286
|
-
|
|
287
|
-
const FLOWBITE_DROPDOWN_LABEL_DEFAULT_VALUE = new InjectionToken('FLOWBITE_DROPDOWN_LABEL_DEFAULT_VALUE');
|
|
288
|
-
const FLOWBITE_DROPDOWN_IS_OPEN_DEFAULT_VALUE = new InjectionToken('FLOWBITE_DROPDOWN_IS_OPEN_DEFAULT_VALUE');
|
|
289
|
-
const FLOWBITE_DROPDOWN_POSITION_DEFAULT_VALUE = new InjectionToken('FLOWBITE_DROPDOWN_POSITION_DEFAULT_VALUE');
|
|
290
|
-
const FLOWBITE_DROPDOWN_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_DROPDOWN_CUSTOM_STYLE_DEFAULT_VALUE');
|
|
291
|
-
const dropdownDefaultValueProvider = makeEnvironmentProviders([
|
|
277
|
+
const provideFlowbiteDropdownContentConfig = (config) => [
|
|
292
278
|
{
|
|
293
|
-
provide:
|
|
294
|
-
useValue:
|
|
279
|
+
provide: FlowbiteDropdownContentConfigToken,
|
|
280
|
+
useValue: { ...defaultFlowbiteDropdownContentConfig, ...config },
|
|
295
281
|
},
|
|
296
|
-
|
|
297
|
-
provide: FLOWBITE_DROPDOWN_IS_OPEN_DEFAULT_VALUE,
|
|
298
|
-
useValue: false,
|
|
299
|
-
},
|
|
300
|
-
{
|
|
301
|
-
provide: FLOWBITE_DROPDOWN_POSITION_DEFAULT_VALUE,
|
|
302
|
-
useValue: 'bottom-center',
|
|
303
|
-
},
|
|
304
|
-
{
|
|
305
|
-
provide: FLOWBITE_DROPDOWN_CUSTOM_STYLE_DEFAULT_VALUE,
|
|
306
|
-
useValue: {},
|
|
307
|
-
},
|
|
308
|
-
]);
|
|
282
|
+
];
|
|
309
283
|
/**
|
|
310
|
-
*
|
|
284
|
+
* Inject the DropdownContent configuration
|
|
285
|
+
* @see {@link defaultFlowbiteDropdownContentConfig}
|
|
286
|
+
* @returns The configuration
|
|
311
287
|
*/
|
|
312
|
-
|
|
288
|
+
const injectFlowbiteDropdownContentConfig = () => inject(FlowbiteDropdownContentConfigToken, { optional: true }) ??
|
|
289
|
+
defaultFlowbiteDropdownContentConfig;
|
|
290
|
+
|
|
291
|
+
const FlowbiteDropdownContentStateToken = createStateToken('Flowbite DropdownContent');
|
|
292
|
+
const provideFlowbiteDropdownContentState = createStateProvider(FlowbiteDropdownContentStateToken);
|
|
293
|
+
const injectFlowbiteDropdownContentState = createStateInjector(FlowbiteDropdownContentStateToken);
|
|
294
|
+
const flowbiteDropdownContentState = createState(FlowbiteDropdownContentStateToken);
|
|
295
|
+
|
|
296
|
+
class DropdownContent {
|
|
313
297
|
constructor() {
|
|
314
|
-
|
|
315
|
-
this.
|
|
316
|
-
this.button = viewChild.required('button');
|
|
317
|
-
/**
|
|
318
|
-
* Service injected used to generate class
|
|
319
|
-
*/
|
|
320
|
-
this.themeService = inject(DropdownThemeService);
|
|
321
|
-
/**
|
|
322
|
-
* `IconRegistry` service
|
|
323
|
-
*/
|
|
324
|
-
this.iconRegistry = inject(IconRegistry);
|
|
325
|
-
/**
|
|
326
|
-
* `DomSanitizer` service
|
|
327
|
-
*/
|
|
328
|
-
this.domSanitizer = inject(DomSanitizer);
|
|
329
|
-
/**
|
|
330
|
-
* List of `DropdownItemComponent`
|
|
331
|
-
*/
|
|
332
|
-
this.dropdownItemChildren = contentChildren(DropdownItemComponent);
|
|
333
|
-
/**
|
|
334
|
-
* List of `DropdownHeaderComponent`
|
|
335
|
-
*/
|
|
336
|
-
this.dropdownHeaderChildren = contentChildren(DropdownHeaderComponent);
|
|
337
|
-
/**
|
|
338
|
-
* List of `DropdownDividerComponent`
|
|
339
|
-
*/
|
|
340
|
-
this.dropdownDividerChildren = contentChildren(DropdownDividerComponent);
|
|
341
|
-
//#region properties
|
|
342
|
-
/**
|
|
343
|
-
* Set the dropdown label
|
|
344
|
-
*
|
|
345
|
-
* @default Dropdown
|
|
346
|
-
*/
|
|
347
|
-
this.label = model(inject(FLOWBITE_DROPDOWN_LABEL_DEFAULT_VALUE));
|
|
348
|
-
/**
|
|
349
|
-
* Set if the dropdown is open
|
|
350
|
-
*
|
|
351
|
-
* @default false
|
|
352
|
-
*/
|
|
353
|
-
this.isOpen = model(inject(FLOWBITE_DROPDOWN_IS_OPEN_DEFAULT_VALUE));
|
|
298
|
+
this.config = injectFlowbiteDropdownContentConfig();
|
|
299
|
+
this.dropdownState = injectFlowbiteDropdownState();
|
|
354
300
|
/**
|
|
355
|
-
*
|
|
356
|
-
*
|
|
357
|
-
* @default bottom-center
|
|
301
|
+
* @see {@link injectFlowbiteDropdownContentConfig}
|
|
358
302
|
*/
|
|
359
|
-
this.
|
|
303
|
+
this.customTheme = input(this.config.customTheme);
|
|
304
|
+
this.theme = computed(() => {
|
|
305
|
+
const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
|
|
306
|
+
return {
|
|
307
|
+
host: {
|
|
308
|
+
root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, colorToTheme(mergedTheme.host.color, this.dropdownState().color())),
|
|
309
|
+
},
|
|
310
|
+
};
|
|
311
|
+
});
|
|
360
312
|
/**
|
|
361
|
-
*
|
|
313
|
+
* @internal
|
|
362
314
|
*/
|
|
363
|
-
this.
|
|
364
|
-
}
|
|
365
|
-
//#endregion
|
|
366
|
-
//#region BaseComponent implementation
|
|
367
|
-
fetchClass() {
|
|
368
|
-
return this.themeService.getClasses({
|
|
369
|
-
label: this.label(),
|
|
370
|
-
isOpen: booleanToFlowbiteBoolean(this.isOpen()),
|
|
371
|
-
placement: this.position(),
|
|
372
|
-
customStyle: this.customStyle(),
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
init() {
|
|
376
|
-
this.iconRegistry.addRawSvgIconInNamepsace('flowbite-angular', 'chevron-down', this.domSanitizer.bypassSecurityTrustHtml(CHEVRON_DOWN_SVG_ICON));
|
|
377
|
-
}
|
|
378
|
-
//#endregion
|
|
379
|
-
/**
|
|
380
|
-
* Toggle dropdown isOpen
|
|
381
|
-
*/
|
|
382
|
-
toggle() {
|
|
383
|
-
this.isOpen.set(!this.isOpen());
|
|
315
|
+
this.state = flowbiteDropdownContentState(this);
|
|
384
316
|
}
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
if (!this.dropdown().nativeElement.contains(event.target) &&
|
|
388
|
-
this.isOpen() &&
|
|
389
|
-
!this.button().nativeElement.contains(event.target)) {
|
|
390
|
-
this.isOpen.set(false);
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: DropdownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
394
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.4", type: DropdownComponent, isStandalone: true, selector: "flowbite-dropdown", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { label: "labelChange", isOpen: "isOpenChange", position: "positionChange", customStyle: "customStyleChange" }, host: { listeners: { "document:click": "clickout($event)" } }, queries: [{ propertyName: "dropdownItemChildren", predicate: DropdownItemComponent, isSignal: true }, { propertyName: "dropdownHeaderChildren", predicate: DropdownHeaderComponent, isSignal: true }, { propertyName: "dropdownDividerChildren", predicate: DropdownDividerComponent, isSignal: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true, isSignal: true }, { propertyName: "button", first: true, predicate: ["button"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
395
|
-
<button
|
|
396
|
-
type="button"
|
|
397
|
-
[class]="contentClasses().dropdownClass"
|
|
398
|
-
(click)="toggle()"
|
|
399
|
-
#button>
|
|
400
|
-
<span [class]="contentClasses().spanClass">
|
|
401
|
-
{{ label() }}
|
|
402
|
-
<flowbite-icon
|
|
403
|
-
svgIcon="flowbite-angular:chevron-down"
|
|
404
|
-
class="ml-2 h-4 w-4" />
|
|
405
|
-
</span>
|
|
406
|
-
</button>
|
|
407
|
-
<div
|
|
408
|
-
[class]="contentClasses().containerClass"
|
|
409
|
-
#dropdown
|
|
410
|
-
[style.display]="isOpen() ? 'block' : 'none'"
|
|
411
|
-
[style.minWidth.px]="button.clientWidth">
|
|
412
|
-
<div [class]="contentClasses().contentClass">
|
|
413
|
-
<ul [class]="contentClasses().subContentClass">
|
|
414
|
-
<ng-content />
|
|
415
|
-
</ul>
|
|
416
|
-
</div>
|
|
417
|
-
</div>
|
|
418
|
-
`, isInline: true, dependencies: [{ kind: "component", type: IconComponent, selector: "flowbite-icon", inputs: ["svgIcon"], outputs: ["svgIconChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
317
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DropdownContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
318
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: DropdownContent, isStandalone: true, selector: "\n ul[flowbiteDropdownContent]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteDropdownContentState()], exportAs: ["flowbiteDropdownContent"], ngImport: i0 }); }
|
|
419
319
|
}
|
|
420
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
421
|
-
type:
|
|
320
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DropdownContent, decorators: [{
|
|
321
|
+
type: Directive,
|
|
422
322
|
args: [{
|
|
423
323
|
standalone: true,
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
template: `
|
|
427
|
-
<button
|
|
428
|
-
type="button"
|
|
429
|
-
[class]="contentClasses().dropdownClass"
|
|
430
|
-
(click)="toggle()"
|
|
431
|
-
#button>
|
|
432
|
-
<span [class]="contentClasses().spanClass">
|
|
433
|
-
{{ label() }}
|
|
434
|
-
<flowbite-icon
|
|
435
|
-
svgIcon="flowbite-angular:chevron-down"
|
|
436
|
-
class="ml-2 h-4 w-4" />
|
|
437
|
-
</span>
|
|
438
|
-
</button>
|
|
439
|
-
<div
|
|
440
|
-
[class]="contentClasses().containerClass"
|
|
441
|
-
#dropdown
|
|
442
|
-
[style.display]="isOpen() ? 'block' : 'none'"
|
|
443
|
-
[style.minWidth.px]="button.clientWidth">
|
|
444
|
-
<div [class]="contentClasses().contentClass">
|
|
445
|
-
<ul [class]="contentClasses().subContentClass">
|
|
446
|
-
<ng-content />
|
|
447
|
-
</ul>
|
|
448
|
-
</div>
|
|
449
|
-
</div>
|
|
324
|
+
selector: `
|
|
325
|
+
ul[flowbiteDropdownContent]
|
|
450
326
|
`,
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
327
|
+
exportAs: 'flowbiteDropdownContent',
|
|
328
|
+
hostDirectives: [],
|
|
329
|
+
providers: [provideFlowbiteDropdownContentState()],
|
|
330
|
+
host: { '[class]': `theme().host.root` },
|
|
456
331
|
}]
|
|
457
332
|
}] });
|
|
458
333
|
|
|
459
|
-
|
|
460
|
-
* Default theme for `DropdownComponent`
|
|
461
|
-
*/
|
|
462
|
-
const dropdownTheme = createTheme({
|
|
463
|
-
root: {
|
|
464
|
-
base: 'relative inline w-fit',
|
|
465
|
-
},
|
|
466
|
-
dropdown: {
|
|
467
|
-
base: 'text-white bg-blue-700 border border-transparent hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 disabled:hover:bg-blue-700 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800 dark:disabled:hover:bg-blue-600 group flex h-min items-center justify-center p-0.5 text-center font-medium focus:z-10 rounded-lg',
|
|
468
|
-
},
|
|
469
|
-
span: {
|
|
470
|
-
base: 'flex items-center rounded-md text-sm px-4 py-2',
|
|
471
|
-
},
|
|
472
|
-
container: {
|
|
473
|
-
base: 'z-10 bg-white divide-y divide-gray-100 rounded-lg shadow dark:bg-gray-700 min-w-fit absolute',
|
|
474
|
-
isOpen: {
|
|
475
|
-
enabled: 'block',
|
|
476
|
-
disabled: 'hidden',
|
|
477
|
-
},
|
|
478
|
-
placement: {
|
|
479
|
-
'top-center': 'bottom-full mb-2.5 left-1/2 -translate-x-1/2',
|
|
480
|
-
'bottom-center': 'top-full mt-2.5 left-1/2 -translate-x-1/2',
|
|
481
|
-
'left-center': 'left-full ml-2.5 top-1/2 -translate-y-1/2',
|
|
482
|
-
'right-center': 'right-full mr-2.5 top-1/2 -translate-y-1/2',
|
|
483
|
-
},
|
|
484
|
-
},
|
|
485
|
-
content: {
|
|
486
|
-
base: 'py-1 text-sm text-gray-700 dark:text-gray-200 shadow-md',
|
|
487
|
-
},
|
|
488
|
-
subContent: {
|
|
489
|
-
base: 'py-1',
|
|
490
|
-
},
|
|
491
|
-
});
|
|
492
|
-
|
|
493
|
-
/**
|
|
494
|
-
* Default theme value for `DropdownItemComponent`
|
|
495
|
-
*/
|
|
496
|
-
const dropdownItemTheme = {
|
|
497
|
-
root: {
|
|
498
|
-
base: 'flex items-center justify-start py-2 px-4 text-sm text-gray-700 cursor-pointer hover:bg-gray-100 dark:text-gray-200 dark:hover:bg-gray-600 dark:hover:text-white',
|
|
499
|
-
},
|
|
500
|
-
};
|
|
501
|
-
|
|
502
|
-
/**
|
|
503
|
-
* Default theme for `DropdownDividerComponent`
|
|
504
|
-
*/
|
|
505
|
-
const dropdownDividerTheme = createTheme({
|
|
506
|
-
root: {
|
|
507
|
-
base: 'block my-1 h-px bg-gray-100 dark:bg-gray-600',
|
|
508
|
-
},
|
|
509
|
-
});
|
|
510
|
-
|
|
511
|
-
/**
|
|
512
|
-
* Default theme for `DropdownHeaderComponent`
|
|
513
|
-
*/
|
|
514
|
-
const dropdownHeaderTheme = createTheme({
|
|
515
|
-
root: {
|
|
516
|
-
base: '',
|
|
517
|
-
},
|
|
518
|
-
content: {
|
|
519
|
-
base: 'block py-2 px-4 text-sm text-gray-700 dark:text-gray-200',
|
|
520
|
-
},
|
|
521
|
-
});
|
|
334
|
+
/* Dropdown */
|
|
522
335
|
|
|
523
336
|
/**
|
|
524
337
|
* Generated bundle index. Do not edit.
|
|
525
338
|
*/
|
|
526
339
|
|
|
527
|
-
export {
|
|
340
|
+
export { Dropdown, DropdownContent, DropdownItem, FlowbiteDropdownConfigToken, FlowbiteDropdownContentConfigToken, FlowbiteDropdownContentStateToken, FlowbiteDropdownItemConfigToken, FlowbiteDropdownItemStateToken, FlowbiteDropdownStateToken, defaultFlowbiteDropdownConfig, defaultFlowbiteDropdownContentConfig, defaultFlowbiteDropdownItemConfig, flowbiteDropdownContentState, flowbiteDropdownContentTheme, flowbiteDropdownItemState, flowbiteDropdownItemTheme, flowbiteDropdownState, flowbiteDropdownTheme, injectFlowbiteDropdownConfig, injectFlowbiteDropdownContentConfig, injectFlowbiteDropdownContentState, injectFlowbiteDropdownItemConfig, injectFlowbiteDropdownItemState, injectFlowbiteDropdownState, provideFlowbiteDropdownConfig, provideFlowbiteDropdownContentConfig, provideFlowbiteDropdownContentState, provideFlowbiteDropdownItemConfig, provideFlowbiteDropdownItemState, provideFlowbiteDropdownState };
|
|
528
341
|
//# sourceMappingURL=flowbite-angular-dropdown.mjs.map
|