flowbite-angular 1.3.0 → 20.0.1
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/{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 +137 -42
- 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,582 +1,433 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createTheme, mergeDeep } 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/dialog';
|
|
6
|
+
import { NgpDialog, NgpDialogOverlay, NgpDialogTitle, NgpDialogDescription } from 'ng-primitives/dialog';
|
|
4
7
|
import { twMerge } from 'tailwind-merge';
|
|
5
|
-
import { BaseComponent, booleanToFlowbiteBoolean } from 'flowbite-angular';
|
|
6
|
-
import { IconRegistry, IconComponent } from 'flowbite-angular/icon';
|
|
7
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
|
8
|
-
import { Router, NavigationStart } from '@angular/router';
|
|
9
|
-
import { Subject, takeUntil, filter } from 'rxjs';
|
|
10
8
|
|
|
9
|
+
const flowbiteModalTheme = createTheme({
|
|
10
|
+
host: {
|
|
11
|
+
base: 'h-max w-full rounded-lg bg-white shadow dark:bg-gray-700',
|
|
12
|
+
transition: '',
|
|
13
|
+
size: {
|
|
14
|
+
sm: 'max-w-md',
|
|
15
|
+
md: 'max-w-lg',
|
|
16
|
+
lg: 'max-w-4xl',
|
|
17
|
+
xl: 'max-w-7xl',
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const defaultFlowbiteModalConfig = {
|
|
23
|
+
baseTheme: flowbiteModalTheme,
|
|
24
|
+
size: 'md',
|
|
25
|
+
customTheme: {},
|
|
26
|
+
};
|
|
27
|
+
const FlowbiteModalConfigToken = new InjectionToken('FlowbiteModalConfigToken');
|
|
11
28
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* @
|
|
15
|
-
* ```
|
|
16
|
-
* var theme = inject(FLOWBITE_MODAL_BODY_THEME_TOKEN)
|
|
17
|
-
* ```
|
|
29
|
+
* Provide the default Modal configuration
|
|
30
|
+
* @param config The Modal configuration
|
|
31
|
+
* @returns The provider
|
|
18
32
|
*/
|
|
19
|
-
const
|
|
20
|
-
class ModalBodyThemeService {
|
|
21
|
-
constructor() {
|
|
22
|
-
this.baseTheme = inject(FLOWBITE_MODAL_BODY_THEME_TOKEN);
|
|
23
|
-
}
|
|
24
|
-
getClasses(properties) {
|
|
25
|
-
const theme = mergeTheme(this.baseTheme, properties.customStyle);
|
|
26
|
-
const output = {
|
|
27
|
-
rootClass: twMerge(theme.root.base),
|
|
28
|
-
};
|
|
29
|
-
return output;
|
|
30
|
-
}
|
|
31
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalBodyThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
32
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalBodyThemeService, providedIn: 'root' }); }
|
|
33
|
-
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalBodyThemeService, decorators: [{
|
|
35
|
-
type: Injectable,
|
|
36
|
-
args: [{
|
|
37
|
-
providedIn: 'root',
|
|
38
|
-
}]
|
|
39
|
-
}] });
|
|
40
|
-
|
|
41
|
-
const FLOWBITE_MODAL_BODY_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_BODY_CUSTOM_STYLE_DEFAULT_VALUE');
|
|
42
|
-
const modalBodyDefaultValueProvider = makeEnvironmentProviders([
|
|
33
|
+
const provideFlowbiteModalConfig = (config) => [
|
|
43
34
|
{
|
|
44
|
-
provide:
|
|
45
|
-
useValue: {},
|
|
35
|
+
provide: FlowbiteModalConfigToken,
|
|
36
|
+
useValue: { ...defaultFlowbiteModalConfig, ...config },
|
|
46
37
|
},
|
|
47
|
-
]
|
|
38
|
+
];
|
|
48
39
|
/**
|
|
49
|
-
*
|
|
40
|
+
* Inject the Modal configuration
|
|
41
|
+
* @see {@link defaultFlowbiteModalConfig}
|
|
42
|
+
* @returns The configuration
|
|
50
43
|
*/
|
|
51
|
-
|
|
44
|
+
const injectFlowbiteModalConfig = () => inject(FlowbiteModalConfigToken, { optional: true }) ?? defaultFlowbiteModalConfig;
|
|
45
|
+
|
|
46
|
+
const FlowbiteModalStateToken = createStateToken('Flowbite Modal');
|
|
47
|
+
const provideFlowbiteModalState = createStateProvider(FlowbiteModalStateToken);
|
|
48
|
+
const injectFlowbiteModalState = createStateInjector(FlowbiteModalStateToken);
|
|
49
|
+
const flowbiteModalState = createState(FlowbiteModalStateToken);
|
|
50
|
+
|
|
51
|
+
class Modal {
|
|
52
52
|
constructor() {
|
|
53
|
-
|
|
53
|
+
this.config = injectFlowbiteModalConfig();
|
|
54
54
|
/**
|
|
55
|
-
*
|
|
55
|
+
* @see {@link injectFlowbiteModalConfig}
|
|
56
56
|
*/
|
|
57
|
-
this.
|
|
57
|
+
this.size = input(this.config.size);
|
|
58
58
|
/**
|
|
59
|
-
*
|
|
59
|
+
* @see {@link injectFlowbiteModalConfig}
|
|
60
60
|
*/
|
|
61
|
-
this.
|
|
62
|
-
|
|
61
|
+
this.customTheme = input(this.config.customTheme);
|
|
62
|
+
this.theme = computed(() => {
|
|
63
|
+
const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
|
|
64
|
+
return {
|
|
65
|
+
host: {
|
|
66
|
+
root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, mergedTheme.host.size[this.state.size()]),
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
});
|
|
63
70
|
/**
|
|
64
|
-
*
|
|
71
|
+
* @internal
|
|
65
72
|
*/
|
|
66
|
-
this.
|
|
67
|
-
}
|
|
68
|
-
//#endregion
|
|
69
|
-
//#region BaseComponent implementation
|
|
70
|
-
fetchClass() {
|
|
71
|
-
return this.themeService.getClasses({
|
|
72
|
-
customStyle: this.customStyle(),
|
|
73
|
-
});
|
|
73
|
+
this.state = flowbiteModalState(this);
|
|
74
74
|
}
|
|
75
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
76
|
-
static { this.ɵ
|
|
75
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: Modal, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
76
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: Modal, isStandalone: true, selector: "\n div[flowbiteModal],\n section[flowbiteModal]\n ", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteModalState()], exportAs: ["flowbiteModal"], hostDirectives: [{ directive: i1.NgpDialog, inputs: ["id", "id", "ngpDialogRole", "role", "ngpDialogModal", "modal"] }], ngImport: i0 }); }
|
|
77
77
|
}
|
|
78
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
79
|
-
type:
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: Modal, decorators: [{
|
|
79
|
+
type: Directive,
|
|
80
80
|
args: [{
|
|
81
81
|
standalone: true,
|
|
82
|
-
selector:
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
selector: `
|
|
83
|
+
div[flowbiteModal],
|
|
84
|
+
section[flowbiteModal]
|
|
85
|
+
`,
|
|
86
|
+
exportAs: 'flowbiteModal',
|
|
87
|
+
hostDirectives: [
|
|
88
|
+
{
|
|
89
|
+
directive: NgpDialog,
|
|
90
|
+
inputs: ['id:id', 'ngpDialogRole:role', 'ngpDialogModal:modal'],
|
|
91
|
+
outputs: [],
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
providers: [provideFlowbiteModalState()],
|
|
95
|
+
host: { '[class]': `theme().host.root` },
|
|
86
96
|
}]
|
|
87
97
|
}] });
|
|
88
98
|
|
|
99
|
+
const flowbiteModalOverlayTheme = createTheme({
|
|
100
|
+
host: {
|
|
101
|
+
base: 'fixed inset-0 flex bg-gray-900/50 p-4 dark:bg-gray-900/80',
|
|
102
|
+
transition: '',
|
|
103
|
+
position: {
|
|
104
|
+
'top-left': 'items-start justify-start',
|
|
105
|
+
'top-center': 'items-start justify-center',
|
|
106
|
+
'top-right': 'items-start justify-end',
|
|
107
|
+
'center-left': 'items-center justify-start',
|
|
108
|
+
center: 'items-center justify-center',
|
|
109
|
+
'center-right': 'items-center justify-end',
|
|
110
|
+
'bottom-left': 'items-end justify-start',
|
|
111
|
+
'bottom-center': 'items-end justify-center',
|
|
112
|
+
'bottom-right': 'items-end justify-end',
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
const defaultFlowbiteModalOverlayConfig = {
|
|
118
|
+
baseTheme: flowbiteModalOverlayTheme,
|
|
119
|
+
position: 'center',
|
|
120
|
+
customTheme: {},
|
|
121
|
+
};
|
|
122
|
+
const FlowbiteModalOverlayConfigToken = new InjectionToken('FlowbiteModalOverlayConfigToken');
|
|
89
123
|
/**
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* @
|
|
93
|
-
* ```
|
|
94
|
-
* var theme = inject(FLOWBITE_MODAL_FOOTER_THEME_TOKEN)
|
|
95
|
-
* ```
|
|
124
|
+
* Provide the default ModalOverlay configuration
|
|
125
|
+
* @param config The ModalOverlay configuration
|
|
126
|
+
* @returns The provider
|
|
96
127
|
*/
|
|
97
|
-
const
|
|
98
|
-
class ModalFooterThemeService {
|
|
99
|
-
constructor() {
|
|
100
|
-
this.baseTheme = inject(FLOWBITE_MODAL_FOOTER_THEME_TOKEN);
|
|
101
|
-
}
|
|
102
|
-
getClasses(properties) {
|
|
103
|
-
const theme = mergeTheme(this.baseTheme, properties.customStyle);
|
|
104
|
-
const output = {
|
|
105
|
-
rootClass: twMerge(theme.root.base),
|
|
106
|
-
};
|
|
107
|
-
return output;
|
|
108
|
-
}
|
|
109
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalFooterThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
110
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalFooterThemeService, providedIn: 'root' }); }
|
|
111
|
-
}
|
|
112
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalFooterThemeService, decorators: [{
|
|
113
|
-
type: Injectable,
|
|
114
|
-
args: [{
|
|
115
|
-
providedIn: 'root',
|
|
116
|
-
}]
|
|
117
|
-
}] });
|
|
118
|
-
|
|
119
|
-
const FLOWBITE_MODAL_FOOTER_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_FOOTER_CUSTOM_STYLE_DEFAULT_VALUE');
|
|
120
|
-
const modalFooterDefaultValueProvider = makeEnvironmentProviders([
|
|
128
|
+
const provideFlowbiteModalOverlayConfig = (config) => [
|
|
121
129
|
{
|
|
122
|
-
provide:
|
|
123
|
-
useValue: {},
|
|
130
|
+
provide: FlowbiteModalOverlayConfigToken,
|
|
131
|
+
useValue: { ...defaultFlowbiteModalOverlayConfig, ...config },
|
|
124
132
|
},
|
|
125
|
-
]
|
|
133
|
+
];
|
|
126
134
|
/**
|
|
127
|
-
*
|
|
135
|
+
* Inject the ModalOverlay configuration
|
|
136
|
+
* @see {@link defaultFlowbiteModalOverlayConfig}
|
|
137
|
+
* @returns The configuration
|
|
128
138
|
*/
|
|
129
|
-
|
|
139
|
+
const injectFlowbiteModalOverlayConfig = () => inject(FlowbiteModalOverlayConfigToken, { optional: true }) ?? defaultFlowbiteModalOverlayConfig;
|
|
140
|
+
|
|
141
|
+
const FlowbiteModalOverlayStateToken = createStateToken('Flowbite ModalOverlay');
|
|
142
|
+
const provideFlowbiteModalOverlayState = createStateProvider(FlowbiteModalOverlayStateToken);
|
|
143
|
+
const injectFlowbiteModalOverlayState = createStateInjector(FlowbiteModalOverlayStateToken);
|
|
144
|
+
const flowbiteModalOverlayState = createState(FlowbiteModalOverlayStateToken);
|
|
145
|
+
|
|
146
|
+
class ModalOverlay {
|
|
130
147
|
constructor() {
|
|
131
|
-
|
|
148
|
+
this.config = injectFlowbiteModalOverlayConfig();
|
|
132
149
|
/**
|
|
133
|
-
*
|
|
150
|
+
* @see {@link injectFlowbiteModalOverlayConfig}
|
|
134
151
|
*/
|
|
135
|
-
this.
|
|
152
|
+
this.position = input(this.config.position);
|
|
136
153
|
/**
|
|
137
|
-
*
|
|
154
|
+
* @see {@link injectFlowbiteModalOverlayConfig}
|
|
138
155
|
*/
|
|
139
|
-
this.
|
|
140
|
-
|
|
156
|
+
this.customTheme = input(this.config.customTheme);
|
|
157
|
+
this.theme = computed(() => {
|
|
158
|
+
const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
|
|
159
|
+
return {
|
|
160
|
+
host: {
|
|
161
|
+
root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, mergedTheme.host.position[this.state.position()]),
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
});
|
|
141
165
|
/**
|
|
142
|
-
*
|
|
166
|
+
* @internal
|
|
143
167
|
*/
|
|
144
|
-
this.
|
|
168
|
+
this.state = flowbiteModalOverlayState(this);
|
|
145
169
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
fetchClass() {
|
|
149
|
-
return this.themeService.getClasses({
|
|
150
|
-
customStyle: this.customStyle(),
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalFooterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
154
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.4", type: ModalFooterComponent, isStandalone: true, selector: "flowbite-modal-footer", 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 }); }
|
|
170
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalOverlay, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
171
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: ModalOverlay, isStandalone: true, selector: "\n div[flowbiteModalOverlay]\n ", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteModalOverlayState()], exportAs: ["flowbiteModalOverlay"], hostDirectives: [{ directive: i1.NgpDialogOverlay, inputs: ["ngpDialogOverlayCloseOnClick", "closeOnClick"] }], ngImport: i0 }); }
|
|
155
172
|
}
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
157
|
-
type:
|
|
173
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalOverlay, decorators: [{
|
|
174
|
+
type: Directive,
|
|
158
175
|
args: [{
|
|
159
176
|
standalone: true,
|
|
160
|
-
selector:
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
177
|
+
selector: `
|
|
178
|
+
div[flowbiteModalOverlay]
|
|
179
|
+
`,
|
|
180
|
+
exportAs: 'flowbiteModalOverlay',
|
|
181
|
+
hostDirectives: [
|
|
182
|
+
{
|
|
183
|
+
directive: NgpDialogOverlay,
|
|
184
|
+
inputs: ['ngpDialogOverlayCloseOnClick:closeOnClick'],
|
|
185
|
+
outputs: [],
|
|
186
|
+
},
|
|
187
|
+
],
|
|
188
|
+
providers: [provideFlowbiteModalOverlayState()],
|
|
189
|
+
host: { '[class]': `theme().host.root` },
|
|
164
190
|
}]
|
|
165
191
|
}] });
|
|
166
192
|
|
|
193
|
+
const flowbiteModalHeaderTheme = createTheme({
|
|
194
|
+
host: {
|
|
195
|
+
base: 'items-center justify-between rounded-t border-b border-gray-200 p-5 text-xl font-medium text-gray-900 dark:border-gray-600 dark:text-white',
|
|
196
|
+
transition: '',
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
const defaultFlowbiteModalHeaderConfig = {
|
|
201
|
+
baseTheme: flowbiteModalHeaderTheme,
|
|
202
|
+
customTheme: {},
|
|
203
|
+
};
|
|
204
|
+
const FlowbiteModalHeaderConfigToken = new InjectionToken('FlowbiteModalHeaderConfigToken');
|
|
167
205
|
/**
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
* @
|
|
171
|
-
* ```
|
|
172
|
-
* var theme = inject(FLOWBITE_MODAL_HEADER_THEME_TOKEN)
|
|
173
|
-
* ```
|
|
206
|
+
* Provide the default ModalHeader configuration
|
|
207
|
+
* @param config The ModalHeader configuration
|
|
208
|
+
* @returns The provider
|
|
174
209
|
*/
|
|
175
|
-
const
|
|
176
|
-
class ModalHeaderThemeService {
|
|
177
|
-
constructor() {
|
|
178
|
-
this.baseTheme = inject(FLOWBITE_MODAL_HEADER_THEME_TOKEN);
|
|
179
|
-
}
|
|
180
|
-
getClasses(properties) {
|
|
181
|
-
const theme = mergeTheme(this.baseTheme, properties.customStyle);
|
|
182
|
-
const output = {
|
|
183
|
-
rootClass: twMerge(theme.root.base),
|
|
184
|
-
modalHeaderTitleClass: twMerge(theme.title.base),
|
|
185
|
-
modalHeaderButtonClass: twMerge(theme.button.base),
|
|
186
|
-
};
|
|
187
|
-
return output;
|
|
188
|
-
}
|
|
189
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalHeaderThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
190
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalHeaderThemeService, providedIn: 'root' }); }
|
|
191
|
-
}
|
|
192
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalHeaderThemeService, decorators: [{
|
|
193
|
-
type: Injectable,
|
|
194
|
-
args: [{
|
|
195
|
-
providedIn: 'root',
|
|
196
|
-
}]
|
|
197
|
-
}] });
|
|
198
|
-
|
|
199
|
-
const FLOWBITE_MODAL_HEADER_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_HEADER_CUSTOM_STYLE_DEFAULT_VALUE');
|
|
200
|
-
const modalHeaderDefaultValueProvider = makeEnvironmentProviders([
|
|
210
|
+
const provideFlowbiteModalHeaderConfig = (config) => [
|
|
201
211
|
{
|
|
202
|
-
provide:
|
|
203
|
-
useValue: {},
|
|
212
|
+
provide: FlowbiteModalHeaderConfigToken,
|
|
213
|
+
useValue: { ...defaultFlowbiteModalHeaderConfig, ...config },
|
|
204
214
|
},
|
|
205
|
-
]
|
|
215
|
+
];
|
|
206
216
|
/**
|
|
207
|
-
*
|
|
217
|
+
* Inject the ModalHeader configuration
|
|
218
|
+
* @see {@link defaultFlowbiteModalHeaderConfig}
|
|
219
|
+
* @returns The configuration
|
|
208
220
|
*/
|
|
209
|
-
|
|
221
|
+
const injectFlowbiteModalHeaderConfig = () => inject(FlowbiteModalHeaderConfigToken, { optional: true }) ?? defaultFlowbiteModalHeaderConfig;
|
|
222
|
+
|
|
223
|
+
const FlowbiteModalHeaderStateToken = createStateToken('Flowbite ModalHeader');
|
|
224
|
+
const provideFlowbiteModalHeaderState = createStateProvider(FlowbiteModalHeaderStateToken);
|
|
225
|
+
const injectFlowbiteModalHeaderState = createStateInjector(FlowbiteModalHeaderStateToken);
|
|
226
|
+
const flowbiteModalHeaderState = createState(FlowbiteModalHeaderStateToken);
|
|
227
|
+
|
|
228
|
+
class ModalHeader {
|
|
210
229
|
constructor() {
|
|
211
|
-
|
|
230
|
+
this.config = injectFlowbiteModalHeaderConfig();
|
|
212
231
|
/**
|
|
213
|
-
*
|
|
232
|
+
* @see {@link injectFlowbiteModalHeaderConfig}
|
|
214
233
|
*/
|
|
215
|
-
this.
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* `DomSanitizer` service
|
|
226
|
-
*/
|
|
227
|
-
this.domSanitizer = inject(DomSanitizer);
|
|
228
|
-
//#region properties
|
|
234
|
+
this.customTheme = input(this.config.customTheme);
|
|
235
|
+
this.theme = computed(() => {
|
|
236
|
+
const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
|
|
237
|
+
return {
|
|
238
|
+
host: {
|
|
239
|
+
root: twMerge(mergedTheme.host.base, mergedTheme.host.transition),
|
|
240
|
+
},
|
|
241
|
+
};
|
|
242
|
+
});
|
|
229
243
|
/**
|
|
230
|
-
*
|
|
244
|
+
* @internal
|
|
231
245
|
*/
|
|
232
|
-
this.
|
|
233
|
-
}
|
|
234
|
-
//#endregion
|
|
235
|
-
//#region BaseComponent implementation
|
|
236
|
-
fetchClass() {
|
|
237
|
-
return this.stateService.getClasses({
|
|
238
|
-
customStyle: this.customStyle(),
|
|
239
|
-
});
|
|
246
|
+
this.state = flowbiteModalHeaderState(this);
|
|
240
247
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
}
|
|
244
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalHeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
245
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.4", type: ModalHeaderComponent, isStandalone: true, selector: "flowbite-modal-header", inputs: { customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { customStyle: "customStyleChange" }, usesInheritance: true, ngImport: i0, template: `
|
|
246
|
-
<h3 [class]="contentClasses().modalHeaderTitleClass">
|
|
247
|
-
<ng-content />
|
|
248
|
-
</h3>
|
|
249
|
-
<button
|
|
250
|
-
type="button"
|
|
251
|
-
[class]="contentClasses().modalHeaderButtonClass"
|
|
252
|
-
data-modal-hide="medium-modal"
|
|
253
|
-
(click)="modalComponent.close()">
|
|
254
|
-
<flowbite-icon
|
|
255
|
-
svgIcon="flowbite-angular:close"
|
|
256
|
-
class="w-5 h-5" />
|
|
257
|
-
<span class="sr-only">Close modal</span>
|
|
258
|
-
</button>
|
|
259
|
-
`, isInline: true, dependencies: [{ kind: "component", type: IconComponent, selector: "flowbite-icon", inputs: ["svgIcon"], outputs: ["svgIconChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
248
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
249
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: ModalHeader, isStandalone: true, selector: "\n h1[flowbiteModalHeader],\n h2[flowbiteModalHeader],\n h3[flowbiteModalHeader],\n h4[flowbiteModalHeader],\n h5[flowbiteModalHeader],\n h6[flowbiteModalHeader]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteModalHeaderState()], exportAs: ["flowbiteModalHeader"], hostDirectives: [{ directive: i1.NgpDialogTitle, inputs: ["id", "id"] }], ngImport: i0 }); }
|
|
260
250
|
}
|
|
261
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
262
|
-
type:
|
|
251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalHeader, decorators: [{
|
|
252
|
+
type: Directive,
|
|
263
253
|
args: [{
|
|
264
254
|
standalone: true,
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
type="button"
|
|
273
|
-
[class]="contentClasses().modalHeaderButtonClass"
|
|
274
|
-
data-modal-hide="medium-modal"
|
|
275
|
-
(click)="modalComponent.close()">
|
|
276
|
-
<flowbite-icon
|
|
277
|
-
svgIcon="flowbite-angular:close"
|
|
278
|
-
class="w-5 h-5" />
|
|
279
|
-
<span class="sr-only">Close modal</span>
|
|
280
|
-
</button>
|
|
255
|
+
selector: `
|
|
256
|
+
h1[flowbiteModalHeader],
|
|
257
|
+
h2[flowbiteModalHeader],
|
|
258
|
+
h3[flowbiteModalHeader],
|
|
259
|
+
h4[flowbiteModalHeader],
|
|
260
|
+
h5[flowbiteModalHeader],
|
|
261
|
+
h6[flowbiteModalHeader]
|
|
281
262
|
`,
|
|
282
|
-
|
|
283
|
-
|
|
263
|
+
exportAs: 'flowbiteModalHeader',
|
|
264
|
+
hostDirectives: [
|
|
265
|
+
{
|
|
266
|
+
directive: NgpDialogTitle,
|
|
267
|
+
inputs: ['id:id'],
|
|
268
|
+
outputs: [],
|
|
269
|
+
},
|
|
270
|
+
],
|
|
271
|
+
providers: [provideFlowbiteModalHeaderState()],
|
|
272
|
+
host: { '[class]': `theme().host.root` },
|
|
284
273
|
}]
|
|
285
274
|
}] });
|
|
286
275
|
|
|
276
|
+
const flowbiteModalContentTheme = createTheme({
|
|
277
|
+
host: {
|
|
278
|
+
base: 'block space-y-6 p-6',
|
|
279
|
+
transition: '',
|
|
280
|
+
},
|
|
281
|
+
});
|
|
282
|
+
|
|
283
|
+
const defaultFlowbiteModalContentConfig = {
|
|
284
|
+
baseTheme: flowbiteModalContentTheme,
|
|
285
|
+
customTheme: {},
|
|
286
|
+
};
|
|
287
|
+
const FlowbiteModalContentConfigToken = new InjectionToken('FlowbiteModalContentConfigToken');
|
|
287
288
|
/**
|
|
288
|
-
*
|
|
289
|
-
*
|
|
290
|
-
* @
|
|
291
|
-
* ```
|
|
292
|
-
* var theme = inject(FLOWBITE_MODAL_THEME_TOKEN)
|
|
293
|
-
* ```
|
|
289
|
+
* Provide the default ModalContent configuration
|
|
290
|
+
* @param config The ModalContent configuration
|
|
291
|
+
* @returns The provider
|
|
294
292
|
*/
|
|
295
|
-
const
|
|
296
|
-
class ModalThemeService {
|
|
297
|
-
constructor() {
|
|
298
|
-
this.baseTheme = inject(FLOWBITE_MODAL_THEME_TOKEN);
|
|
299
|
-
}
|
|
300
|
-
getClasses(properties) {
|
|
301
|
-
const theme = mergeTheme(this.baseTheme, properties.customStyle);
|
|
302
|
-
const output = {
|
|
303
|
-
rootClass: twMerge(theme.root.base),
|
|
304
|
-
modalWrapperClass: twMerge(theme.wrapper.base, theme.wrapper.position[properties.position]),
|
|
305
|
-
modalContainerClass: twMerge(theme.container.base, theme.container.size[properties.size]),
|
|
306
|
-
modalContentClass: twMerge(theme.content.base),
|
|
307
|
-
};
|
|
308
|
-
return output;
|
|
309
|
-
}
|
|
310
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
311
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalThemeService, providedIn: 'root' }); }
|
|
312
|
-
}
|
|
313
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalThemeService, decorators: [{
|
|
314
|
-
type: Injectable,
|
|
315
|
-
args: [{
|
|
316
|
-
providedIn: 'root',
|
|
317
|
-
}]
|
|
318
|
-
}] });
|
|
319
|
-
|
|
320
|
-
const FLOWBITE_MODAL_SIZE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_SIZE_DEFAULT_VALUE');
|
|
321
|
-
const FLOWBITE_MODAL_POSITION_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_POSITION_DEFAULT_VALUE');
|
|
322
|
-
const FLOWBITE_MODAL_IS_DISMISSABLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_IS_DISMISSABLE_DEFAULT_VALUE');
|
|
323
|
-
const FLOWBITE_MODAL_IS_OPEN_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_IS_OPEN_DEFAULT_VALUE');
|
|
324
|
-
const FLOWBITE_MODAL_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_CUSTOM_STYLE_DEFAULT_VALUE');
|
|
325
|
-
const modalDefaultValueProvider = makeEnvironmentProviders([
|
|
293
|
+
const provideFlowbiteModalContentConfig = (config) => [
|
|
326
294
|
{
|
|
327
|
-
provide:
|
|
328
|
-
useValue:
|
|
295
|
+
provide: FlowbiteModalContentConfigToken,
|
|
296
|
+
useValue: { ...defaultFlowbiteModalContentConfig, ...config },
|
|
329
297
|
},
|
|
330
|
-
|
|
331
|
-
provide: FLOWBITE_MODAL_POSITION_DEFAULT_VALUE,
|
|
332
|
-
useValue: 'center',
|
|
333
|
-
},
|
|
334
|
-
{
|
|
335
|
-
provide: FLOWBITE_MODAL_IS_DISMISSABLE_DEFAULT_VALUE,
|
|
336
|
-
useValue: false,
|
|
337
|
-
},
|
|
338
|
-
{
|
|
339
|
-
provide: FLOWBITE_MODAL_IS_OPEN_DEFAULT_VALUE,
|
|
340
|
-
useValue: false,
|
|
341
|
-
},
|
|
342
|
-
{
|
|
343
|
-
provide: FLOWBITE_MODAL_CUSTOM_STYLE_DEFAULT_VALUE,
|
|
344
|
-
useValue: {},
|
|
345
|
-
},
|
|
346
|
-
]);
|
|
298
|
+
];
|
|
347
299
|
/**
|
|
348
|
-
*
|
|
300
|
+
* Inject the ModalContent configuration
|
|
301
|
+
* @see {@link defaultFlowbiteModalContentConfig}
|
|
302
|
+
* @returns The configuration
|
|
349
303
|
*/
|
|
350
|
-
|
|
304
|
+
const injectFlowbiteModalContentConfig = () => inject(FlowbiteModalContentConfigToken, { optional: true }) ?? defaultFlowbiteModalContentConfig;
|
|
305
|
+
|
|
306
|
+
const FlowbiteModalContentStateToken = createStateToken('Flowbite ModalContent');
|
|
307
|
+
const provideFlowbiteModalContentState = createStateProvider(FlowbiteModalContentStateToken);
|
|
308
|
+
const injectFlowbiteModalContentState = createStateInjector(FlowbiteModalContentStateToken);
|
|
309
|
+
const flowbiteModalContentState = createState(FlowbiteModalContentStateToken);
|
|
310
|
+
|
|
311
|
+
class ModalContent {
|
|
351
312
|
constructor() {
|
|
352
|
-
|
|
353
|
-
this.destroyed = new Subject();
|
|
354
|
-
/**
|
|
355
|
-
* Service injected used to generate class
|
|
356
|
-
*/
|
|
357
|
-
this.themeService = inject(ModalThemeService);
|
|
358
|
-
/**
|
|
359
|
-
* The child `ModalHeaderComponent`
|
|
360
|
-
*/
|
|
361
|
-
this.modalHeaderChild = contentChild(ModalHeaderComponent);
|
|
362
|
-
/**
|
|
363
|
-
* The child `ModalBodyComponent`
|
|
364
|
-
*/
|
|
365
|
-
this.modalBodyChild = contentChild.required(ModalBodyComponent);
|
|
366
|
-
/**
|
|
367
|
-
* The child `ModalFooterComponent`
|
|
368
|
-
*/
|
|
369
|
-
this.modalFooterChild = contentChild(ModalFooterComponent);
|
|
370
|
-
//#region template properties
|
|
371
|
-
this.template = viewChild.required('modal', { read: TemplateRef });
|
|
372
|
-
this.viewContainer = inject(ViewContainerRef);
|
|
373
|
-
this.router = inject(Router);
|
|
374
|
-
//#endregion
|
|
375
|
-
//#region properties
|
|
376
|
-
/**
|
|
377
|
-
* Set the modal size
|
|
378
|
-
*
|
|
379
|
-
* @default md
|
|
380
|
-
*/
|
|
381
|
-
this.size = model(inject(FLOWBITE_MODAL_SIZE_DEFAULT_VALUE));
|
|
382
|
-
/**
|
|
383
|
-
* Set the modal position
|
|
384
|
-
*
|
|
385
|
-
* @default center
|
|
386
|
-
*/
|
|
387
|
-
this.position = model(inject(FLOWBITE_MODAL_POSITION_DEFAULT_VALUE));
|
|
313
|
+
this.config = injectFlowbiteModalContentConfig();
|
|
388
314
|
/**
|
|
389
|
-
*
|
|
390
|
-
*
|
|
391
|
-
* @default false
|
|
315
|
+
* @see {@link injectFlowbiteModalContentConfig}
|
|
392
316
|
*/
|
|
393
|
-
this.
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
317
|
+
this.customTheme = input(this.config.customTheme);
|
|
318
|
+
this.theme = computed(() => {
|
|
319
|
+
const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
|
|
320
|
+
return {
|
|
321
|
+
host: {
|
|
322
|
+
root: twMerge(mergedTheme.host.base, mergedTheme.host.transition),
|
|
323
|
+
},
|
|
324
|
+
};
|
|
325
|
+
});
|
|
400
326
|
/**
|
|
401
|
-
*
|
|
327
|
+
* @internal
|
|
402
328
|
*/
|
|
403
|
-
this.
|
|
404
|
-
}
|
|
405
|
-
//#endregion
|
|
406
|
-
//#region BaseComponent implementation
|
|
407
|
-
fetchClass() {
|
|
408
|
-
return this.themeService.getClasses({
|
|
409
|
-
isOpen: booleanToFlowbiteBoolean(this.isOpen()),
|
|
410
|
-
size: this.size(),
|
|
411
|
-
position: this.position(),
|
|
412
|
-
customStyle: this.customStyle(),
|
|
413
|
-
});
|
|
414
|
-
}
|
|
415
|
-
init() {
|
|
416
|
-
// close modal if it's not destroyed on route change
|
|
417
|
-
this.router.events
|
|
418
|
-
.pipe(takeUntil(this.destroyed), filter(() => this.isOpen()), filter((event) => event instanceof NavigationStart))
|
|
419
|
-
.subscribe(() => this.close());
|
|
420
|
-
}
|
|
421
|
-
//#endregion
|
|
422
|
-
ngOnDestroy() {
|
|
423
|
-
this.destroyed.next();
|
|
424
|
-
this.destroyed.complete();
|
|
425
|
-
}
|
|
426
|
-
open() {
|
|
427
|
-
this.isOpen.set(true);
|
|
428
|
-
this.changeBackdrop();
|
|
429
|
-
}
|
|
430
|
-
close() {
|
|
431
|
-
this.isOpen.set(false);
|
|
432
|
-
this.changeBackdrop();
|
|
433
|
-
}
|
|
434
|
-
toggle() {
|
|
435
|
-
this.isOpen.set(!this.isOpen());
|
|
436
|
-
this.changeBackdrop();
|
|
437
|
-
}
|
|
438
|
-
// If isOpen changes, add or remove template
|
|
439
|
-
changeBackdrop() {
|
|
440
|
-
if (this.isOpen()) {
|
|
441
|
-
this.createTemplate();
|
|
442
|
-
}
|
|
443
|
-
else {
|
|
444
|
-
this.destroyTemplate();
|
|
445
|
-
}
|
|
329
|
+
this.state = flowbiteModalContentState(this);
|
|
446
330
|
}
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
this.destroyTemplate();
|
|
450
|
-
}
|
|
451
|
-
this.embeddedView = this.viewContainer.createEmbeddedView(this.template());
|
|
452
|
-
}
|
|
453
|
-
destroyTemplate() {
|
|
454
|
-
this.embeddedView?.destroy();
|
|
455
|
-
}
|
|
456
|
-
onKeydownHandler(event) {
|
|
457
|
-
if (event.key === 'Escape') {
|
|
458
|
-
this.close();
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
onBackdropClick(event) {
|
|
462
|
-
if (event.target == event.currentTarget && this.isDismissable()) {
|
|
463
|
-
this.close();
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
467
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.4", type: ModalComponent, isStandalone: true, selector: "flowbite-modal", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, isDismissable: { classPropertyName: "isDismissable", publicName: "isDismissable", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { size: "sizeChange", position: "positionChange", isDismissable: "isDismissableChange", isOpen: "isOpenChange", customStyle: "customStyleChange" }, host: { attributes: { "tabindex": "-1" }, listeners: { "document:keydown": "onKeydownHandler($event)" } }, queries: [{ propertyName: "modalHeaderChild", first: true, predicate: ModalHeaderComponent, descendants: true, isSignal: true }, { propertyName: "modalBodyChild", first: true, predicate: ModalBodyComponent, descendants: true, isSignal: true }, { propertyName: "modalFooterChild", first: true, predicate: ModalFooterComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "template", first: true, predicate: ["modal"], descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
468
|
-
<ng-template #modal>
|
|
469
|
-
<div class="bg-gray-900 bg-opacity-50 dark:bg-opacity-80 fixed inset-0 z-[99]"></div>
|
|
470
|
-
|
|
471
|
-
<div
|
|
472
|
-
[class]="contentClasses().modalWrapperClass"
|
|
473
|
-
(click)="onBackdropClick($event)">
|
|
474
|
-
<div [class]="contentClasses().modalContainerClass">
|
|
475
|
-
<div [class]="contentClasses().modalContentClass">
|
|
476
|
-
<ng-content />
|
|
477
|
-
</div>
|
|
478
|
-
</div>
|
|
479
|
-
</div>
|
|
480
|
-
</ng-template>
|
|
481
|
-
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
331
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
332
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: ModalContent, isStandalone: true, selector: "\n [flowbiteModalContent]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteModalContentState()], exportAs: ["flowbiteModalContent"], hostDirectives: [{ directive: i1.NgpDialogDescription, inputs: ["id", "id"] }], ngImport: i0 }); }
|
|
482
333
|
}
|
|
483
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
484
|
-
type:
|
|
334
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalContent, decorators: [{
|
|
335
|
+
type: Directive,
|
|
485
336
|
args: [{
|
|
486
337
|
standalone: true,
|
|
487
|
-
selector:
|
|
488
|
-
|
|
489
|
-
<ng-template #modal>
|
|
490
|
-
<div class="bg-gray-900 bg-opacity-50 dark:bg-opacity-80 fixed inset-0 z-[99]"></div>
|
|
491
|
-
|
|
492
|
-
<div
|
|
493
|
-
[class]="contentClasses().modalWrapperClass"
|
|
494
|
-
(click)="onBackdropClick($event)">
|
|
495
|
-
<div [class]="contentClasses().modalContainerClass">
|
|
496
|
-
<div [class]="contentClasses().modalContentClass">
|
|
497
|
-
<ng-content />
|
|
498
|
-
</div>
|
|
499
|
-
</div>
|
|
500
|
-
</div>
|
|
501
|
-
</ng-template>
|
|
338
|
+
selector: `
|
|
339
|
+
[flowbiteModalContent]
|
|
502
340
|
`,
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
341
|
+
exportAs: 'flowbiteModalContent',
|
|
342
|
+
hostDirectives: [
|
|
343
|
+
{
|
|
344
|
+
directive: NgpDialogDescription,
|
|
345
|
+
inputs: ['id:id'],
|
|
346
|
+
outputs: [],
|
|
347
|
+
},
|
|
348
|
+
],
|
|
349
|
+
providers: [provideFlowbiteModalContentState()],
|
|
350
|
+
host: { '[class]': `theme().host.root` },
|
|
509
351
|
}]
|
|
510
352
|
}] });
|
|
511
353
|
|
|
512
|
-
const
|
|
513
|
-
|
|
514
|
-
base: '',
|
|
515
|
-
|
|
516
|
-
wrapper: {
|
|
517
|
-
base: 'fixed top-0 left-0 right-0 z-[100] w-full p-4 overflow-x-hidden overflow-y-auto md:inset-0 h-[calc(100%-1rem)] md:h-full flex',
|
|
518
|
-
position: {
|
|
519
|
-
'top-left': 'items-start justify-start',
|
|
520
|
-
'top-center': 'items-start justify-center',
|
|
521
|
-
'top-right': 'items-start justify-end',
|
|
522
|
-
'center-left': 'items-center justify-start',
|
|
523
|
-
center: 'items-center justify-center',
|
|
524
|
-
'center-right': 'items-center justify-end',
|
|
525
|
-
'bottom-left': 'items-end justify-start',
|
|
526
|
-
'bottom-center': 'items-end justify-center',
|
|
527
|
-
'bottom-right': 'items-end justify-end',
|
|
528
|
-
},
|
|
529
|
-
},
|
|
530
|
-
container: {
|
|
531
|
-
base: 'relative w-full h-full md:h-auto',
|
|
532
|
-
size: {
|
|
533
|
-
sm: 'max-w-md',
|
|
534
|
-
md: 'max-w-lg',
|
|
535
|
-
lg: 'max-w-4xl',
|
|
536
|
-
xl: 'max-w-7xl',
|
|
537
|
-
},
|
|
538
|
-
},
|
|
539
|
-
content: {
|
|
540
|
-
base: 'relative bg-white rounded-lg shadow dark:bg-gray-700',
|
|
354
|
+
const flowbiteModalFooterTheme = createTheme({
|
|
355
|
+
host: {
|
|
356
|
+
base: 'flex items-center space-x-2 rounded-b border-t border-gray-200 p-6 dark:border-gray-600',
|
|
357
|
+
transition: '',
|
|
541
358
|
},
|
|
542
359
|
});
|
|
543
360
|
|
|
361
|
+
const defaultFlowbiteModalFooterConfig = {
|
|
362
|
+
baseTheme: flowbiteModalFooterTheme,
|
|
363
|
+
customTheme: {},
|
|
364
|
+
};
|
|
365
|
+
const FlowbiteModalFooterConfigToken = new InjectionToken('FlowbiteModalFooterConfigToken');
|
|
544
366
|
/**
|
|
545
|
-
*
|
|
367
|
+
* Provide the default ModalFooter configuration
|
|
368
|
+
* @param config The ModalFooter configuration
|
|
369
|
+
* @returns The provider
|
|
546
370
|
*/
|
|
547
|
-
const
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
title: {
|
|
552
|
-
base: 'text-xl font-medium text-gray-900 dark:text-white',
|
|
553
|
-
},
|
|
554
|
-
button: {
|
|
555
|
-
base: 'text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-gray-600 dark:hover:text-white',
|
|
371
|
+
const provideFlowbiteModalFooterConfig = (config) => [
|
|
372
|
+
{
|
|
373
|
+
provide: FlowbiteModalFooterConfigToken,
|
|
374
|
+
useValue: { ...defaultFlowbiteModalFooterConfig, ...config },
|
|
556
375
|
},
|
|
557
|
-
|
|
558
|
-
|
|
376
|
+
];
|
|
559
377
|
/**
|
|
560
|
-
*
|
|
378
|
+
* Inject the ModalFooter configuration
|
|
379
|
+
* @see {@link defaultFlowbiteModalFooterConfig}
|
|
380
|
+
* @returns The configuration
|
|
561
381
|
*/
|
|
562
|
-
const
|
|
563
|
-
root: {
|
|
564
|
-
base: 'block p-6 space-y-6',
|
|
565
|
-
},
|
|
566
|
-
});
|
|
382
|
+
const injectFlowbiteModalFooterConfig = () => inject(FlowbiteModalFooterConfigToken, { optional: true }) ?? defaultFlowbiteModalFooterConfig;
|
|
567
383
|
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
const
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
384
|
+
const FlowbiteModalFooterStateToken = createStateToken('Flowbite ModalFooter');
|
|
385
|
+
const provideFlowbiteModalFooterState = createStateProvider(FlowbiteModalFooterStateToken);
|
|
386
|
+
const injectFlowbiteModalFooterState = createStateInjector(FlowbiteModalFooterStateToken);
|
|
387
|
+
const flowbiteModalFooterState = createState(FlowbiteModalFooterStateToken);
|
|
388
|
+
|
|
389
|
+
class ModalFooter {
|
|
390
|
+
constructor() {
|
|
391
|
+
this.config = injectFlowbiteModalFooterConfig();
|
|
392
|
+
/**
|
|
393
|
+
* @see {@link injectFlowbiteModalFooterConfig}
|
|
394
|
+
*/
|
|
395
|
+
this.customTheme = input(this.config.customTheme);
|
|
396
|
+
this.theme = computed(() => {
|
|
397
|
+
const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
|
|
398
|
+
return {
|
|
399
|
+
host: {
|
|
400
|
+
root: twMerge(mergedTheme.host.base, mergedTheme.host.transition),
|
|
401
|
+
},
|
|
402
|
+
};
|
|
403
|
+
});
|
|
404
|
+
/**
|
|
405
|
+
* @internal
|
|
406
|
+
*/
|
|
407
|
+
this.state = flowbiteModalFooterState(this);
|
|
408
|
+
}
|
|
409
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
410
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: ModalFooter, isStandalone: true, selector: "\n div[flowbiteModalFooter]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteModalFooterState()], exportAs: ["flowbiteModalFooter"], ngImport: i0 }); }
|
|
411
|
+
}
|
|
412
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalFooter, decorators: [{
|
|
413
|
+
type: Directive,
|
|
414
|
+
args: [{
|
|
415
|
+
standalone: true,
|
|
416
|
+
selector: `
|
|
417
|
+
div[flowbiteModalFooter]
|
|
418
|
+
`,
|
|
419
|
+
exportAs: 'flowbiteModalFooter',
|
|
420
|
+
hostDirectives: [],
|
|
421
|
+
providers: [provideFlowbiteModalFooterState()],
|
|
422
|
+
host: { '[class]': `theme().host.root` },
|
|
423
|
+
}]
|
|
424
|
+
}] });
|
|
425
|
+
|
|
426
|
+
/* Modal */
|
|
576
427
|
|
|
577
428
|
/**
|
|
578
429
|
* Generated bundle index. Do not edit.
|
|
579
430
|
*/
|
|
580
431
|
|
|
581
|
-
export {
|
|
432
|
+
export { FlowbiteModalConfigToken, FlowbiteModalContentConfigToken, FlowbiteModalContentStateToken, FlowbiteModalFooterConfigToken, FlowbiteModalFooterStateToken, FlowbiteModalHeaderConfigToken, FlowbiteModalHeaderStateToken, FlowbiteModalOverlayConfigToken, FlowbiteModalOverlayStateToken, FlowbiteModalStateToken, Modal, ModalContent, ModalFooter, ModalHeader, ModalOverlay, defaultFlowbiteModalConfig, defaultFlowbiteModalContentConfig, defaultFlowbiteModalFooterConfig, defaultFlowbiteModalHeaderConfig, defaultFlowbiteModalOverlayConfig, flowbiteModalContentState, flowbiteModalContentTheme, flowbiteModalFooterState, flowbiteModalFooterTheme, flowbiteModalHeaderState, flowbiteModalHeaderTheme, flowbiteModalOverlayState, flowbiteModalOverlayTheme, flowbiteModalState, flowbiteModalTheme, injectFlowbiteModalConfig, injectFlowbiteModalContentConfig, injectFlowbiteModalContentState, injectFlowbiteModalFooterConfig, injectFlowbiteModalFooterState, injectFlowbiteModalHeaderConfig, injectFlowbiteModalHeaderState, injectFlowbiteModalOverlayConfig, injectFlowbiteModalOverlayState, injectFlowbiteModalState, provideFlowbiteModalConfig, provideFlowbiteModalContentConfig, provideFlowbiteModalContentState, provideFlowbiteModalFooterConfig, provideFlowbiteModalFooterState, provideFlowbiteModalHeaderConfig, provideFlowbiteModalHeaderState, provideFlowbiteModalOverlayConfig, provideFlowbiteModalOverlayState, provideFlowbiteModalState };
|
|
582
433
|
//# sourceMappingURL=flowbite-angular-modal.mjs.map
|