flowbite-angular 1.2.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 +340 -479
- package/fesm2022/flowbite-angular-accordion.mjs.map +1 -1
- package/fesm2022/flowbite-angular-alert.mjs +309 -240
- package/fesm2022/flowbite-angular-alert.mjs.map +1 -1
- package/fesm2022/flowbite-angular-badge.mjs +334 -136
- package/fesm2022/flowbite-angular-badge.mjs.map +1 -1
- package/fesm2022/flowbite-angular-breadcrumb.mjs +263 -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 +190 -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 +273 -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 +338 -486
- package/fesm2022/flowbite-angular-modal.mjs.map +1 -1
- package/fesm2022/flowbite-angular-navbar.mjs +601 -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 +403 -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 -122
- package/badge/badge.theme.d.ts +0 -45
- 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 -138
- 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 -192
- 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,581 +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.
|
|
246
|
+
this.state = flowbiteModalHeaderState(this);
|
|
233
247
|
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
fetchClass() {
|
|
237
|
-
return this.stateService.getClasses({
|
|
238
|
-
customStyle: this.customStyle(),
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
init() {
|
|
242
|
-
this.iconRegistry.addRawSvgIconInNamepsace('flowbite-angular', 'close', this.domSanitizer.bypassSecurityTrustHtml(CLOSE_SVG_ICON));
|
|
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
|
-
|
|
265
|
-
selector:
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
[class]="contentClasses().modalHeaderButtonClass"
|
|
273
|
-
data-modal-hide="medium-modal"
|
|
274
|
-
(click)="modalComponent.close()">
|
|
275
|
-
<flowbite-icon
|
|
276
|
-
svgIcon="flowbite-angular:close"
|
|
277
|
-
class="w-5 h-5" />
|
|
278
|
-
<span class="sr-only">Close modal</span>
|
|
279
|
-
</button>
|
|
254
|
+
standalone: true,
|
|
255
|
+
selector: `
|
|
256
|
+
h1[flowbiteModalHeader],
|
|
257
|
+
h2[flowbiteModalHeader],
|
|
258
|
+
h3[flowbiteModalHeader],
|
|
259
|
+
h4[flowbiteModalHeader],
|
|
260
|
+
h5[flowbiteModalHeader],
|
|
261
|
+
h6[flowbiteModalHeader]
|
|
280
262
|
`,
|
|
281
|
-
|
|
282
|
-
|
|
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` },
|
|
283
273
|
}]
|
|
284
274
|
}] });
|
|
285
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');
|
|
286
288
|
/**
|
|
287
|
-
*
|
|
288
|
-
*
|
|
289
|
-
* @
|
|
290
|
-
* ```
|
|
291
|
-
* var theme = inject(FLOWBITE_MODAL_THEME_TOKEN)
|
|
292
|
-
* ```
|
|
289
|
+
* Provide the default ModalContent configuration
|
|
290
|
+
* @param config The ModalContent configuration
|
|
291
|
+
* @returns The provider
|
|
293
292
|
*/
|
|
294
|
-
const
|
|
295
|
-
class ModalThemeService {
|
|
296
|
-
constructor() {
|
|
297
|
-
this.baseTheme = inject(FLOWBITE_MODAL_THEME_TOKEN);
|
|
298
|
-
}
|
|
299
|
-
getClasses(properties) {
|
|
300
|
-
const theme = mergeTheme(this.baseTheme, properties.customStyle);
|
|
301
|
-
const output = {
|
|
302
|
-
rootClass: twMerge(theme.root.base),
|
|
303
|
-
modalWrapperClass: twMerge(theme.wrapper.base, theme.wrapper.position[properties.position]),
|
|
304
|
-
modalContainerClass: twMerge(theme.container.base, theme.container.size[properties.size]),
|
|
305
|
-
modalContentClass: twMerge(theme.content.base),
|
|
306
|
-
};
|
|
307
|
-
return output;
|
|
308
|
-
}
|
|
309
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
310
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalThemeService, providedIn: 'root' }); }
|
|
311
|
-
}
|
|
312
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalThemeService, decorators: [{
|
|
313
|
-
type: Injectable,
|
|
314
|
-
args: [{
|
|
315
|
-
providedIn: 'root',
|
|
316
|
-
}]
|
|
317
|
-
}] });
|
|
318
|
-
|
|
319
|
-
const FLOWBITE_MODAL_SIZE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_SIZE_DEFAULT_VALUE');
|
|
320
|
-
const FLOWBITE_MODAL_POSITION_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_POSITION_DEFAULT_VALUE');
|
|
321
|
-
const FLOWBITE_MODAL_IS_DISMISSABLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_IS_DISMISSABLE_DEFAULT_VALUE');
|
|
322
|
-
const FLOWBITE_MODAL_IS_OPEN_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_IS_OPEN_DEFAULT_VALUE');
|
|
323
|
-
const FLOWBITE_MODAL_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_CUSTOM_STYLE_DEFAULT_VALUE');
|
|
324
|
-
const modalDefaultValueProvider = makeEnvironmentProviders([
|
|
293
|
+
const provideFlowbiteModalContentConfig = (config) => [
|
|
325
294
|
{
|
|
326
|
-
provide:
|
|
327
|
-
useValue:
|
|
295
|
+
provide: FlowbiteModalContentConfigToken,
|
|
296
|
+
useValue: { ...defaultFlowbiteModalContentConfig, ...config },
|
|
328
297
|
},
|
|
329
|
-
|
|
330
|
-
provide: FLOWBITE_MODAL_POSITION_DEFAULT_VALUE,
|
|
331
|
-
useValue: 'center',
|
|
332
|
-
},
|
|
333
|
-
{
|
|
334
|
-
provide: FLOWBITE_MODAL_IS_DISMISSABLE_DEFAULT_VALUE,
|
|
335
|
-
useValue: false,
|
|
336
|
-
},
|
|
337
|
-
{
|
|
338
|
-
provide: FLOWBITE_MODAL_IS_OPEN_DEFAULT_VALUE,
|
|
339
|
-
useValue: false,
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
provide: FLOWBITE_MODAL_CUSTOM_STYLE_DEFAULT_VALUE,
|
|
343
|
-
useValue: {},
|
|
344
|
-
},
|
|
345
|
-
]);
|
|
298
|
+
];
|
|
346
299
|
/**
|
|
347
|
-
*
|
|
300
|
+
* Inject the ModalContent configuration
|
|
301
|
+
* @see {@link defaultFlowbiteModalContentConfig}
|
|
302
|
+
* @returns The configuration
|
|
348
303
|
*/
|
|
349
|
-
|
|
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 {
|
|
350
312
|
constructor() {
|
|
351
|
-
|
|
352
|
-
this.destroyed = new Subject();
|
|
353
|
-
/**
|
|
354
|
-
* Service injected used to generate class
|
|
355
|
-
*/
|
|
356
|
-
this.themeService = inject(ModalThemeService);
|
|
357
|
-
/**
|
|
358
|
-
* The child `ModalHeaderComponent`
|
|
359
|
-
*/
|
|
360
|
-
this.modalHeaderChild = contentChild(ModalHeaderComponent);
|
|
361
|
-
/**
|
|
362
|
-
* The child `ModalBodyComponent`
|
|
363
|
-
*/
|
|
364
|
-
this.modalBodyChild = contentChild.required(ModalBodyComponent);
|
|
365
|
-
/**
|
|
366
|
-
* The child `ModalFooterComponent`
|
|
367
|
-
*/
|
|
368
|
-
this.modalFooterChild = contentChild(ModalFooterComponent);
|
|
369
|
-
//#region template properties
|
|
370
|
-
this.template = viewChild.required('modal', { read: TemplateRef });
|
|
371
|
-
this.viewContainer = inject(ViewContainerRef);
|
|
372
|
-
this.router = inject(Router);
|
|
373
|
-
//#endregion
|
|
374
|
-
//#region properties
|
|
375
|
-
/**
|
|
376
|
-
* Set the modal size
|
|
377
|
-
*
|
|
378
|
-
* @default md
|
|
379
|
-
*/
|
|
380
|
-
this.size = model(inject(FLOWBITE_MODAL_SIZE_DEFAULT_VALUE));
|
|
381
|
-
/**
|
|
382
|
-
* Set the modal position
|
|
383
|
-
*
|
|
384
|
-
* @default center
|
|
385
|
-
*/
|
|
386
|
-
this.position = model(inject(FLOWBITE_MODAL_POSITION_DEFAULT_VALUE));
|
|
313
|
+
this.config = injectFlowbiteModalContentConfig();
|
|
387
314
|
/**
|
|
388
|
-
*
|
|
389
|
-
*
|
|
390
|
-
* @default false
|
|
315
|
+
* @see {@link injectFlowbiteModalContentConfig}
|
|
391
316
|
*/
|
|
392
|
-
this.
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
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
|
+
});
|
|
399
326
|
/**
|
|
400
|
-
*
|
|
327
|
+
* @internal
|
|
401
328
|
*/
|
|
402
|
-
this.
|
|
403
|
-
}
|
|
404
|
-
//#endregion
|
|
405
|
-
//#region BaseComponent implementation
|
|
406
|
-
fetchClass() {
|
|
407
|
-
return this.themeService.getClasses({
|
|
408
|
-
isOpen: booleanToFlowbiteBoolean(this.isOpen()),
|
|
409
|
-
size: this.size(),
|
|
410
|
-
position: this.position(),
|
|
411
|
-
customStyle: this.customStyle(),
|
|
412
|
-
});
|
|
413
|
-
}
|
|
414
|
-
init() {
|
|
415
|
-
// close modal if it's not destroyed on route change
|
|
416
|
-
this.router.events
|
|
417
|
-
.pipe(takeUntil(this.destroyed), filter(() => this.isOpen()), filter((event) => event instanceof NavigationStart))
|
|
418
|
-
.subscribe(() => this.close());
|
|
419
|
-
}
|
|
420
|
-
//#endregion
|
|
421
|
-
ngOnDestroy() {
|
|
422
|
-
this.destroyed.next();
|
|
423
|
-
this.destroyed.complete();
|
|
424
|
-
}
|
|
425
|
-
open() {
|
|
426
|
-
this.isOpen.set(true);
|
|
427
|
-
this.changeBackdrop();
|
|
428
|
-
}
|
|
429
|
-
close() {
|
|
430
|
-
this.isOpen.set(false);
|
|
431
|
-
this.changeBackdrop();
|
|
432
|
-
}
|
|
433
|
-
toggle() {
|
|
434
|
-
this.isOpen.set(!this.isOpen());
|
|
435
|
-
this.changeBackdrop();
|
|
436
|
-
}
|
|
437
|
-
// If isOpen changes, add or remove template
|
|
438
|
-
changeBackdrop() {
|
|
439
|
-
if (this.isOpen()) {
|
|
440
|
-
this.createTemplate();
|
|
441
|
-
}
|
|
442
|
-
else {
|
|
443
|
-
this.destroyTemplate();
|
|
444
|
-
}
|
|
329
|
+
this.state = flowbiteModalContentState(this);
|
|
445
330
|
}
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
this.destroyTemplate();
|
|
449
|
-
}
|
|
450
|
-
this.embeddedView = this.viewContainer.createEmbeddedView(this.template());
|
|
451
|
-
}
|
|
452
|
-
destroyTemplate() {
|
|
453
|
-
this.embeddedView?.destroy();
|
|
454
|
-
}
|
|
455
|
-
onKeydownHandler(event) {
|
|
456
|
-
if (event.key === 'Escape') {
|
|
457
|
-
this.close();
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
onBackdropClick(event) {
|
|
461
|
-
if (event.target == event.currentTarget && this.isDismissable()) {
|
|
462
|
-
this.close();
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
466
|
-
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: `
|
|
467
|
-
<ng-template #modal>
|
|
468
|
-
<div class="bg-gray-900 bg-opacity-50 dark:bg-opacity-80 fixed inset-0 z-[99]"></div>
|
|
469
|
-
|
|
470
|
-
<div
|
|
471
|
-
[class]="contentClasses().modalWrapperClass"
|
|
472
|
-
(click)="onBackdropClick($event)">
|
|
473
|
-
<div [class]="contentClasses().modalContainerClass">
|
|
474
|
-
<div [class]="contentClasses().modalContentClass">
|
|
475
|
-
<ng-content />
|
|
476
|
-
</div>
|
|
477
|
-
</div>
|
|
478
|
-
</div>
|
|
479
|
-
</ng-template>
|
|
480
|
-
`, 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 }); }
|
|
481
333
|
}
|
|
482
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
483
|
-
type:
|
|
334
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalContent, decorators: [{
|
|
335
|
+
type: Directive,
|
|
484
336
|
args: [{
|
|
485
337
|
standalone: true,
|
|
486
|
-
selector:
|
|
487
|
-
|
|
488
|
-
<ng-template #modal>
|
|
489
|
-
<div class="bg-gray-900 bg-opacity-50 dark:bg-opacity-80 fixed inset-0 z-[99]"></div>
|
|
490
|
-
|
|
491
|
-
<div
|
|
492
|
-
[class]="contentClasses().modalWrapperClass"
|
|
493
|
-
(click)="onBackdropClick($event)">
|
|
494
|
-
<div [class]="contentClasses().modalContainerClass">
|
|
495
|
-
<div [class]="contentClasses().modalContentClass">
|
|
496
|
-
<ng-content />
|
|
497
|
-
</div>
|
|
498
|
-
</div>
|
|
499
|
-
</div>
|
|
500
|
-
</ng-template>
|
|
338
|
+
selector: `
|
|
339
|
+
[flowbiteModalContent]
|
|
501
340
|
`,
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
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` },
|
|
508
351
|
}]
|
|
509
352
|
}] });
|
|
510
353
|
|
|
511
|
-
const
|
|
512
|
-
|
|
513
|
-
base: '',
|
|
514
|
-
|
|
515
|
-
wrapper: {
|
|
516
|
-
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',
|
|
517
|
-
position: {
|
|
518
|
-
'top-left': 'items-start justify-start',
|
|
519
|
-
'top-center': 'items-start justify-center',
|
|
520
|
-
'top-right': 'items-start justify-end',
|
|
521
|
-
'center-left': 'items-center justify-start',
|
|
522
|
-
center: 'items-center justify-center',
|
|
523
|
-
'center-right': 'items-center justify-end',
|
|
524
|
-
'bottom-left': 'items-end justify-start',
|
|
525
|
-
'bottom-center': 'items-end justify-center',
|
|
526
|
-
'bottom-right': 'items-end justify-end',
|
|
527
|
-
},
|
|
528
|
-
},
|
|
529
|
-
container: {
|
|
530
|
-
base: 'relative w-full h-full md:h-auto',
|
|
531
|
-
size: {
|
|
532
|
-
sm: 'max-w-md',
|
|
533
|
-
md: 'max-w-lg',
|
|
534
|
-
lg: 'max-w-4xl',
|
|
535
|
-
xl: 'max-w-7xl',
|
|
536
|
-
},
|
|
537
|
-
},
|
|
538
|
-
content: {
|
|
539
|
-
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: '',
|
|
540
358
|
},
|
|
541
359
|
});
|
|
542
360
|
|
|
361
|
+
const defaultFlowbiteModalFooterConfig = {
|
|
362
|
+
baseTheme: flowbiteModalFooterTheme,
|
|
363
|
+
customTheme: {},
|
|
364
|
+
};
|
|
365
|
+
const FlowbiteModalFooterConfigToken = new InjectionToken('FlowbiteModalFooterConfigToken');
|
|
543
366
|
/**
|
|
544
|
-
*
|
|
367
|
+
* Provide the default ModalFooter configuration
|
|
368
|
+
* @param config The ModalFooter configuration
|
|
369
|
+
* @returns The provider
|
|
545
370
|
*/
|
|
546
|
-
const
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
title: {
|
|
551
|
-
base: 'text-xl font-medium text-gray-900 dark:text-white',
|
|
552
|
-
},
|
|
553
|
-
button: {
|
|
554
|
-
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 },
|
|
555
375
|
},
|
|
556
|
-
|
|
557
|
-
|
|
376
|
+
];
|
|
558
377
|
/**
|
|
559
|
-
*
|
|
378
|
+
* Inject the ModalFooter configuration
|
|
379
|
+
* @see {@link defaultFlowbiteModalFooterConfig}
|
|
380
|
+
* @returns The configuration
|
|
560
381
|
*/
|
|
561
|
-
const
|
|
562
|
-
root: {
|
|
563
|
-
base: 'block p-6 space-y-6',
|
|
564
|
-
},
|
|
565
|
-
});
|
|
382
|
+
const injectFlowbiteModalFooterConfig = () => inject(FlowbiteModalFooterConfigToken, { optional: true }) ?? defaultFlowbiteModalFooterConfig;
|
|
566
383
|
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
const
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
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 */
|
|
575
427
|
|
|
576
428
|
/**
|
|
577
429
|
* Generated bundle index. Do not edit.
|
|
578
430
|
*/
|
|
579
431
|
|
|
580
|
-
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 };
|
|
581
433
|
//# sourceMappingURL=flowbite-angular-modal.mjs.map
|