flowbite-angular 1.0.0 → 1.1.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.
Files changed (139) hide show
  1. package/README.md +15 -15
  2. package/accordion/accordion-content.component.d.ts +20 -4
  3. package/accordion/accordion-content.theme.d.ts +0 -2
  4. package/accordion/accordion-panel.component.d.ts +10 -3
  5. package/accordion/accordion-title.component.d.ts +27 -0
  6. package/accordion/accordion.component.d.ts +10 -1
  7. package/accordion/index.d.ts +4 -4
  8. package/alert/alert.component.d.ts +42 -1
  9. package/alert/index.d.ts +1 -1
  10. package/badge/badge.component.d.ts +40 -0
  11. package/badge/index.d.ts +1 -1
  12. package/base-component.directive.d.ts +0 -4
  13. package/breadcrumb/breadcrumb-item.component.d.ts +19 -0
  14. package/breadcrumb/breadcrumb.component.d.ts +8 -1
  15. package/breadcrumb/index.d.ts +2 -2
  16. package/button/button.component.d.ts +100 -1
  17. package/button/index.d.ts +1 -1
  18. package/dark-theme-toggle/dark-theme-toggle.component.d.ts +12 -17
  19. package/dark-theme-toggle/index.d.ts +1 -1
  20. package/dropdown/dropdown-divider.component.d.ts +13 -2
  21. package/dropdown/dropdown-divider.theme.d.ts +2 -2
  22. package/dropdown/dropdown-header.component.d.ts +19 -2
  23. package/dropdown/dropdown-item.component.d.ts +7 -0
  24. package/dropdown/dropdown.component.d.ts +39 -13
  25. package/dropdown/index.d.ts +4 -4
  26. package/esm2022/accordion/accordion-content.component.mjs +29 -16
  27. package/esm2022/accordion/accordion-content.theme.mjs +2 -6
  28. package/esm2022/accordion/accordion-content.theme.service.mjs +2 -2
  29. package/esm2022/accordion/accordion-panel.component.mjs +18 -15
  30. package/esm2022/accordion/accordion-title.component.mjs +14 -8
  31. package/esm2022/accordion/accordion.component.mjs +28 -13
  32. package/esm2022/accordion/index.mjs +5 -5
  33. package/esm2022/alert/alert.component.mjs +93 -37
  34. package/esm2022/alert/index.mjs +2 -2
  35. package/esm2022/badge/badge.component.mjs +34 -9
  36. package/esm2022/badge/index.mjs +2 -2
  37. package/esm2022/base-component.directive.mjs +1 -7
  38. package/esm2022/breadcrumb/breadcrumb-item.component.mjs +14 -8
  39. package/esm2022/breadcrumb/breadcrumb.component.mjs +16 -11
  40. package/esm2022/breadcrumb/index.mjs +3 -3
  41. package/esm2022/button/button.component.mjs +72 -34
  42. package/esm2022/button/index.mjs +2 -2
  43. package/esm2022/core/flowbite.theme.init.mjs +48 -14
  44. package/esm2022/dark-theme-toggle/dark-theme-toggle.component.mjs +17 -42
  45. package/esm2022/dark-theme-toggle/index.mjs +2 -2
  46. package/esm2022/dropdown/dropdown-divider.component.mjs +10 -5
  47. package/esm2022/dropdown/dropdown-divider.theme.mjs +1 -1
  48. package/esm2022/dropdown/dropdown-header.component.mjs +13 -10
  49. package/esm2022/dropdown/dropdown-item.component.mjs +10 -5
  50. package/esm2022/dropdown/dropdown.component.mjs +51 -72
  51. package/esm2022/dropdown/dropdown.theme.mjs +6 -6
  52. package/esm2022/dropdown/index.mjs +5 -5
  53. package/esm2022/indicator/index.mjs +2 -2
  54. package/esm2022/indicator/indicators.component.mjs +64 -14
  55. package/esm2022/modal/index.mjs +5 -5
  56. package/esm2022/modal/modal-body.component.mjs +10 -5
  57. package/esm2022/modal/modal-footer.component.mjs +10 -5
  58. package/esm2022/modal/modal-header.component.mjs +16 -10
  59. package/esm2022/modal/modal.component.mjs +42 -23
  60. package/esm2022/navbar/index.mjs +7 -7
  61. package/esm2022/navbar/navbar-brand.component.mjs +10 -5
  62. package/esm2022/navbar/navbar-content.component.mjs +35 -11
  63. package/esm2022/navbar/navbar-content.theme.mjs +2 -6
  64. package/esm2022/navbar/navbar-content.theme.service.mjs +2 -2
  65. package/esm2022/navbar/navbar-icon-button.component.mjs +10 -9
  66. package/esm2022/navbar/navbar-item.component.mjs +10 -5
  67. package/esm2022/navbar/navbar-toggle.component.mjs +12 -6
  68. package/esm2022/navbar/navbar.component.mjs +41 -16
  69. package/esm2022/navbar/navbar.theme.mjs +2 -2
  70. package/esm2022/scroll-top/index.mjs +2 -2
  71. package/esm2022/scroll-top/scroll-top.component.mjs +22 -5
  72. package/esm2022/sidebar/index.mjs +7 -7
  73. package/esm2022/sidebar/sidebar-item-group.component.mjs +19 -14
  74. package/esm2022/sidebar/sidebar-item.component.mjs +45 -26
  75. package/esm2022/sidebar/sidebar-menu.component.mjs +10 -9
  76. package/esm2022/sidebar/sidebar-page-content.component.mjs +10 -4
  77. package/esm2022/sidebar/sidebar-toggle.component.mjs +22 -5
  78. package/esm2022/sidebar/sidebar.component.mjs +36 -19
  79. package/esm2022/theme/flowbite-angular-theme.mjs +5 -0
  80. package/esm2022/theme/flowbite-theme.directive.mjs +71 -0
  81. package/esm2022/theme/index.mjs +2 -0
  82. package/fesm2022/flowbite-angular-accordion.mjs +85 -50
  83. package/fesm2022/flowbite-angular-accordion.mjs.map +1 -1
  84. package/fesm2022/flowbite-angular-alert.mjs +93 -37
  85. package/fesm2022/flowbite-angular-alert.mjs.map +1 -1
  86. package/fesm2022/flowbite-angular-badge.mjs +34 -9
  87. package/fesm2022/flowbite-angular-badge.mjs.map +1 -1
  88. package/fesm2022/flowbite-angular-breadcrumb.mjs +28 -16
  89. package/fesm2022/flowbite-angular-breadcrumb.mjs.map +1 -1
  90. package/fesm2022/flowbite-angular-button.mjs +72 -34
  91. package/fesm2022/flowbite-angular-button.mjs.map +1 -1
  92. package/fesm2022/flowbite-angular-core.mjs +47 -13
  93. package/fesm2022/flowbite-angular-core.mjs.map +1 -1
  94. package/fesm2022/flowbite-angular-dark-theme-toggle.mjs +17 -42
  95. package/fesm2022/flowbite-angular-dark-theme-toggle.mjs.map +1 -1
  96. package/fesm2022/flowbite-angular-dropdown.mjs +83 -88
  97. package/fesm2022/flowbite-angular-dropdown.mjs.map +1 -1
  98. package/fesm2022/flowbite-angular-indicator.mjs +64 -14
  99. package/fesm2022/flowbite-angular-indicator.mjs.map +1 -1
  100. package/fesm2022/flowbite-angular-modal.mjs +72 -34
  101. package/fesm2022/flowbite-angular-modal.mjs.map +1 -1
  102. package/fesm2022/flowbite-angular-navbar.mjs +110 -44
  103. package/fesm2022/flowbite-angular-navbar.mjs.map +1 -1
  104. package/fesm2022/flowbite-angular-scroll-top.mjs +22 -5
  105. package/fesm2022/flowbite-angular-scroll-top.mjs.map +1 -1
  106. package/fesm2022/flowbite-angular-sidebar.mjs +132 -65
  107. package/fesm2022/flowbite-angular-sidebar.mjs.map +1 -1
  108. package/fesm2022/flowbite-angular-theme.mjs +78 -0
  109. package/fesm2022/flowbite-angular-theme.mjs.map +1 -0
  110. package/fesm2022/flowbite-angular.mjs +0 -6
  111. package/fesm2022/flowbite-angular.mjs.map +1 -1
  112. package/indicator/index.d.ts +1 -1
  113. package/indicator/indicators.component.d.ts +81 -0
  114. package/modal/index.d.ts +4 -4
  115. package/modal/modal-body.component.d.ts +7 -0
  116. package/modal/modal-footer.component.d.ts +7 -0
  117. package/modal/modal-header.component.d.ts +13 -0
  118. package/modal/modal.component.d.ts +40 -2
  119. package/navbar/index.d.ts +6 -6
  120. package/navbar/navbar-brand.component.d.ts +7 -0
  121. package/navbar/navbar-content.component.d.ts +13 -4
  122. package/navbar/navbar-content.theme.d.ts +1 -3
  123. package/navbar/navbar-icon-button.component.d.ts +12 -1
  124. package/navbar/navbar-item.component.d.ts +12 -0
  125. package/navbar/navbar-toggle.component.d.ts +7 -0
  126. package/navbar/navbar.component.d.ts +30 -2
  127. package/package.json +7 -2
  128. package/scroll-top/index.d.ts +1 -1
  129. package/scroll-top/scroll-top.component.d.ts +31 -0
  130. package/sidebar/index.d.ts +6 -6
  131. package/sidebar/sidebar-item-group.component.d.ts +19 -1
  132. package/sidebar/sidebar-item.component.d.ts +21 -1
  133. package/sidebar/sidebar-menu.component.d.ts +25 -1
  134. package/sidebar/sidebar-page-content.component.d.ts +12 -0
  135. package/sidebar/sidebar-toggle.component.d.ts +22 -0
  136. package/sidebar/sidebar.component.d.ts +17 -3
  137. package/theme/README.md +4 -0
  138. package/theme/flowbite-theme.directive.d.ts +36 -0
  139. package/theme/index.d.ts +1 -0
@@ -1,11 +1,11 @@
1
1
  import { mergeTheme, CLOSE_SVG_ICON, createTheme } from 'flowbite-angular/utils';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, inject, Injectable, model, Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
3
+ import { InjectionToken, inject, Injectable, makeEnvironmentProviders, model, Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import { BaseComponent, booleanToFlowbiteBoolean } from 'flowbite-angular';
6
- import { ButtonComponent } from 'flowbite-angular/button';
7
6
  import { IconRegistry, IconComponent } from 'flowbite-angular/icon';
8
- import { NgIf, NgClass, NgTemplateOutlet } from '@angular/common';
7
+ import { trigger, transition, style, animate } from '@angular/animations';
8
+ import { NgTemplateOutlet } from '@angular/common';
9
9
  import { DomSanitizer } from '@angular/platform-browser';
10
10
 
11
11
  /**
@@ -39,6 +39,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
39
39
  }]
40
40
  }] });
41
41
 
42
+ const FLOWBITE_ALERT_COLOR_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_COLOR_DEFAULT_VALUE');
43
+ const FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE');
44
+ const FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE');
45
+ const FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE');
46
+ const FLOWBITE_ALERT_ICON_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_ICON_DEFAULT_VALUE');
47
+ const FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE');
48
+ const FLOWBITE_ALERT_IS_DISMISSABLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_IS_DISMISSABLE_DEFAULT_VALUE');
49
+ const FLOWBITE_ALERT_ON_DISMISS_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_ON_DISMISS_DEFAULT_VALUE');
50
+ const alertDefaultValueProvider = makeEnvironmentProviders([
51
+ {
52
+ provide: FLOWBITE_ALERT_COLOR_DEFAULT_VALUE,
53
+ useValue: 'primary',
54
+ },
55
+ {
56
+ provide: FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE,
57
+ useValue: false,
58
+ },
59
+ {
60
+ provide: FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE,
61
+ useValue: false,
62
+ },
63
+ {
64
+ provide: FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE,
65
+ useValue: {},
66
+ },
67
+ {
68
+ provide: FLOWBITE_ALERT_ICON_DEFAULT_VALUE,
69
+ useValue: null,
70
+ },
71
+ {
72
+ provide: FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE,
73
+ useValue: null,
74
+ },
75
+ {
76
+ provide: FLOWBITE_ALERT_IS_DISMISSABLE_DEFAULT_VALUE,
77
+ useValue: false,
78
+ },
79
+ {
80
+ provide: FLOWBITE_ALERT_ON_DISMISS_DEFAULT_VALUE,
81
+ useValue: undefined,
82
+ },
83
+ ]);
42
84
  /**
43
85
  * @see https://flowbite.com/docs/components/alerts/
44
86
  */
@@ -63,47 +105,47 @@ class AlertComponent extends BaseComponent {
63
105
  *
64
106
  * @default primary
65
107
  */
66
- this.color = model('primary');
108
+ this.color = model(inject(FLOWBITE_ALERT_COLOR_DEFAULT_VALUE));
67
109
  /**
68
110
  * Set if the alert has border
69
111
  *
70
112
  * @default false
71
113
  */
72
- this.hasBorder = model(false);
114
+ this.hasBorder = model(inject(FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE));
73
115
  /**
74
116
  * Set if the alert has border accent
75
117
  *
76
118
  * @default false
77
119
  */
78
- this.hasBorderAccent = model(false);
120
+ this.hasBorderAccent = model(inject(FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE));
79
121
  /**
80
122
  * Set the custom style for this alert
81
123
  */
82
- this.customStyle = model({});
124
+ this.customStyle = model(inject(FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE));
83
125
  /**
84
126
  * Set the custom icon
85
127
  *
86
128
  * @default null
87
129
  */
88
- this.icon = model(null);
130
+ this.icon = model(inject(FLOWBITE_ALERT_ICON_DEFAULT_VALUE));
89
131
  /**
90
132
  * Set the additional content
91
133
  *
92
134
  * @default null
93
135
  */
94
- this.additionalContent = model(null);
136
+ this.additionalContent = model(inject(FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE));
95
137
  /**
96
138
  * Set if the alert is dismissable
97
139
  *
98
140
  * @default false
99
141
  */
100
- this.isDismissable = model(false);
142
+ this.isDismissable = model(inject(FLOWBITE_ALERT_IS_DISMISSABLE_DEFAULT_VALUE));
101
143
  /**
102
144
  * Set the function called when the alert is dismissed
103
145
  *
104
146
  * @default undefined
105
147
  */
106
- this.onDismiss = model();
148
+ this.onDismiss = model(inject(FLOWBITE_ALERT_ON_DISMISS_DEFAULT_VALUE));
107
149
  }
108
150
  //#endregion
109
151
  //#region BaseComponent implementation
@@ -128,32 +170,38 @@ class AlertComponent extends BaseComponent {
128
170
  func();
129
171
  }
130
172
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AlertComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
131
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.0", type: AlertComponent, isStandalone: true, selector: "flowbite-alert", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, hasBorder: { classPropertyName: "hasBorder", publicName: "hasBorder", isSignal: true, isRequired: false, transformFunction: null }, hasBorderAccent: { classPropertyName: "hasBorderAccent", publicName: "hasBorderAccent", isSignal: true, isRequired: false, transformFunction: null }, customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, additionalContent: { classPropertyName: "additionalContent", publicName: "additionalContent", isSignal: true, isRequired: false, transformFunction: null }, isDismissable: { classPropertyName: "isDismissable", publicName: "isDismissable", isSignal: true, isRequired: false, transformFunction: null }, onDismiss: { classPropertyName: "onDismiss", publicName: "onDismiss", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { color: "colorChange", hasBorder: "hasBorderChange", hasBorderAccent: "hasBorderAccentChange", customStyle: "customStyleChange", icon: "iconChange", additionalContent: "additionalContentChange", isDismissable: "isDismissableChange", onDismiss: "onDismissChange" }, host: { properties: { "attr.role": "alert" } }, usesInheritance: true, ngImport: i0, template: `
173
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: AlertComponent, isStandalone: true, selector: "flowbite-alert", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, hasBorder: { classPropertyName: "hasBorder", publicName: "hasBorder", isSignal: true, isRequired: false, transformFunction: null }, hasBorderAccent: { classPropertyName: "hasBorderAccent", publicName: "hasBorderAccent", isSignal: true, isRequired: false, transformFunction: null }, customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, additionalContent: { classPropertyName: "additionalContent", publicName: "additionalContent", isSignal: true, isRequired: false, transformFunction: null }, isDismissable: { classPropertyName: "isDismissable", publicName: "isDismissable", isSignal: true, isRequired: false, transformFunction: null }, onDismiss: { classPropertyName: "onDismiss", publicName: "onDismiss", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { color: "colorChange", hasBorder: "hasBorderChange", hasBorderAccent: "hasBorderAccentChange", customStyle: "customStyleChange", icon: "iconChange", additionalContent: "additionalContentChange", isDismissable: "isDismissableChange", onDismiss: "onDismissChange" }, host: { properties: { "attr.role": "alert", "@onDestroyAnimation": "" } }, usesInheritance: true, ngImport: i0, template: `
132
174
  <div class="flex items-center">
133
175
  <ng-container [ngTemplateOutlet]="icon()"></ng-container>
134
176
  <div>
135
177
  <ng-content />
136
178
  </div>
137
- <button
138
- type="button"
139
- [ngClass]="contentClasses()!.closeButtonClass"
140
- *ngIf="isDismissable()"
141
- aria-label="Close"
142
- (click)="onDismissClick()">
143
- <span class="sr-only">Close</span>
144
- <flowbite-icon
145
- svgIcon="flowbite-angular:close"
146
- class="h-5 w-5" />
147
- </button>
179
+ @if (isDismissable()) {
180
+ <button
181
+ type="button"
182
+ [class]="contentClasses()!.closeButtonClass"
183
+ aria-label="Close"
184
+ (click)="onDismissClick()">
185
+ <span class="sr-only">Close</span>
186
+ <flowbite-icon
187
+ svgIcon="flowbite-angular:close"
188
+ class="h-5 w-5" />
189
+ </button>
190
+ }
148
191
  </div>
149
192
  <ng-container [ngTemplateOutlet]="additionalContent()"></ng-container>
150
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconComponent, selector: "flowbite-icon", inputs: ["svgIcon"], outputs: ["svgIconChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
193
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconComponent, selector: "flowbite-icon", inputs: ["svgIcon"], outputs: ["svgIconChange"] }], animations: [
194
+ trigger('onDestroyAnimation', [
195
+ transition(':enter', [style({ opacity: 0 }), animate('300ms', style({ opacity: 1 }))]),
196
+ transition(':leave', [animate('300ms', style({ opacity: 0 }))]),
197
+ ]),
198
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
151
199
  }
152
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AlertComponent, decorators: [{
153
201
  type: Component,
154
202
  args: [{
155
203
  standalone: true,
156
- imports: [NgIf, NgClass, NgTemplateOutlet, IconComponent, ButtonComponent],
204
+ imports: [NgTemplateOutlet, IconComponent],
157
205
  selector: 'flowbite-alert',
158
206
  template: `
159
207
  <div class="flex items-center">
@@ -161,23 +209,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
161
209
  <div>
162
210
  <ng-content />
163
211
  </div>
164
- <button
165
- type="button"
166
- [ngClass]="contentClasses()!.closeButtonClass"
167
- *ngIf="isDismissable()"
168
- aria-label="Close"
169
- (click)="onDismissClick()">
170
- <span class="sr-only">Close</span>
171
- <flowbite-icon
172
- svgIcon="flowbite-angular:close"
173
- class="h-5 w-5" />
174
- </button>
212
+ @if (isDismissable()) {
213
+ <button
214
+ type="button"
215
+ [class]="contentClasses()!.closeButtonClass"
216
+ aria-label="Close"
217
+ (click)="onDismissClick()">
218
+ <span class="sr-only">Close</span>
219
+ <flowbite-icon
220
+ svgIcon="flowbite-angular:close"
221
+ class="h-5 w-5" />
222
+ </button>
223
+ }
175
224
  </div>
176
225
  <ng-container [ngTemplateOutlet]="additionalContent()"></ng-container>
177
226
  `,
178
227
  host: {
179
228
  '[attr.role]': 'alert',
229
+ '[@onDestroyAnimation]': '',
180
230
  },
231
+ animations: [
232
+ trigger('onDestroyAnimation', [
233
+ transition(':enter', [style({ opacity: 0 }), animate('300ms', style({ opacity: 1 }))]),
234
+ transition(':leave', [animate('300ms', style({ opacity: 0 }))]),
235
+ ]),
236
+ ],
181
237
  encapsulation: ViewEncapsulation.None,
182
238
  changeDetection: ChangeDetectionStrategy.OnPush,
183
239
  }]
@@ -223,5 +279,5 @@ const alertTheme = createTheme({
223
279
  * Generated bundle index. Do not edit.
224
280
  */
225
281
 
226
- export { AlertComponent, AlertThemeService, FLOWBITE_ALERT_THEME_TOKEN, alertTheme };
282
+ export { AlertComponent, AlertThemeService, FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE, FLOWBITE_ALERT_COLOR_DEFAULT_VALUE, FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE, FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE, FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE, FLOWBITE_ALERT_ICON_DEFAULT_VALUE, FLOWBITE_ALERT_IS_DISMISSABLE_DEFAULT_VALUE, FLOWBITE_ALERT_ON_DISMISS_DEFAULT_VALUE, FLOWBITE_ALERT_THEME_TOKEN, alertDefaultValueProvider, alertTheme };
227
283
  //# sourceMappingURL=flowbite-angular-alert.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"flowbite-angular-alert.mjs","sources":["../../../../libs/flowbite-angular/alert/alert.theme.service.ts","../../../../libs/flowbite-angular/alert/alert.component.ts","../../../../libs/flowbite-angular/alert/alert.theme.ts","../../../../libs/flowbite-angular/alert/flowbite-angular-alert.ts"],"sourcesContent":["import type { AlertClass, AlertProperties, AlertTheme } from './alert.theme';\n\nimport type { FlowbiteThemeService } from 'flowbite-angular';\nimport { mergeTheme } from 'flowbite-angular/utils';\n\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * `InjectionToken` used to import `AlertTheme` value\n *\n * @example\n * ```\n * var theme = inject(FLOWBITE_ALERT_THEME_TOKEN)\n * ```\n */\nexport const FLOWBITE_ALERT_THEME_TOKEN = new InjectionToken<AlertTheme>(\n 'FLOWBITE_ALERT_THEME_TOKEN'\n);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AlertThemeService implements FlowbiteThemeService<AlertProperties> {\n private readonly baseTheme = inject(FLOWBITE_ALERT_THEME_TOKEN);\n\n public getClasses(properties: AlertProperties): AlertClass {\n const theme: AlertTheme = mergeTheme(this.baseTheme, properties.customStyle);\n\n const output: AlertClass = {\n rootClass: twMerge(\n theme.root.base,\n theme.root.color[properties.color],\n theme.root.hasBorder[properties.hasBorder],\n theme.root.hasBorderAccent[properties.hasBorderAccent]\n ),\n closeButtonClass: twMerge(theme.closeButton.base, theme.closeButton.color[properties.color]),\n };\n\n return output;\n }\n}\n","import type { AlertClass, AlertColors, AlertTheme } from './alert.theme';\nimport { AlertThemeService } from './alert.theme.service';\n\nimport { BaseComponent, booleanToFlowbiteBoolean } from 'flowbite-angular';\nimport type { DeepPartial } from 'flowbite-angular';\nimport { ButtonComponent } from 'flowbite-angular/button';\nimport { IconComponent, IconRegistry } from 'flowbite-angular/icon';\nimport { CLOSE_SVG_ICON } from 'flowbite-angular/utils';\n\nimport { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\nimport type { OnInit, TemplateRef } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n model,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n/**\n * @see https://flowbite.com/docs/components/alerts/\n */\n@Component({\n standalone: true,\n imports: [NgIf, NgClass, NgTemplateOutlet, IconComponent, ButtonComponent],\n selector: 'flowbite-alert',\n template: `\n <div class=\"flex items-center\">\n <ng-container [ngTemplateOutlet]=\"icon()\"></ng-container>\n <div>\n <ng-content />\n </div>\n <button\n type=\"button\"\n [ngClass]=\"contentClasses()!.closeButtonClass\"\n *ngIf=\"isDismissable()\"\n aria-label=\"Close\"\n (click)=\"onDismissClick()\">\n <span class=\"sr-only\">Close</span>\n <flowbite-icon\n svgIcon=\"flowbite-angular:close\"\n class=\"h-5 w-5\" />\n </button>\n </div>\n <ng-container [ngTemplateOutlet]=\"additionalContent()\"></ng-container>\n `,\n host: {\n '[attr.role]': 'alert',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AlertComponent extends BaseComponent<AlertClass> implements OnInit {\n /**\n * Service injected used to generate class\n */\n public readonly themeService = inject(AlertThemeService);\n /**\n * `IcoRegistry` service\n */\n public readonly iconRegistry = inject(IconRegistry);\n /**\n * `DomSanitizer` service\n */\n public readonly domSanitizer = inject(DomSanitizer);\n\n //#region properties\n /**\n * Set the indicator color\n *\n * @default primary\n */\n public color = model<keyof AlertColors>('primary');\n /**\n * Set if the alert has border\n *\n * @default false\n */\n public hasBorder = model<boolean>(false);\n /**\n * Set if the alert has border accent\n *\n * @default false\n */\n public hasBorderAccent = model<boolean>(false);\n /**\n * Set the custom style for this alert\n */\n public customStyle = model<DeepPartial<AlertTheme>>({});\n /**\n * Set the custom icon\n *\n * @default null\n */\n public icon = model<TemplateRef<unknown> | null>(null);\n /**\n * Set the additional content\n *\n * @default null\n */\n public additionalContent = model<TemplateRef<unknown> | null>(null);\n /**\n * Set if the alert is dismissable\n *\n * @default false\n */\n public isDismissable = model<boolean>(false);\n /**\n * Set the function called when the alert is dismissed\n *\n * @default undefined\n */\n public onDismiss = model<() => void | undefined>();\n //#endregion\n\n //#region BaseComponent implementation\n public override fetchClass(): AlertClass {\n return this.themeService.getClasses({\n color: this.color(),\n hasBorder: booleanToFlowbiteBoolean(this.hasBorder()),\n hasBorderAccent: booleanToFlowbiteBoolean(this.hasBorderAccent()),\n customStyle: this.customStyle(),\n });\n }\n\n public override init(): void {\n this.iconRegistry.addRawSvgIconInNamepsace(\n 'flowbite-angular',\n 'close',\n this.domSanitizer.bypassSecurityTrustHtml(CLOSE_SVG_ICON)\n );\n }\n //#endregion\n\n /**\n * Call the onDismiss function if it's not undefined\n */\n public onDismissClick() {\n const func = this.onDismiss();\n\n if (func) func();\n }\n}\n","import type { DeepPartial, FlowbiteBoolean, FlowbiteClass, FlowbiteColors } from 'flowbite-angular';\nimport { createTheme } from 'flowbite-angular/utils';\n\n//#region Component theme option\n/**\n * Available colors for `AlertComponent`\n */\nexport type AlertColors = Pick<\n FlowbiteColors,\n 'primary' | 'dark' | 'blue' | 'red' | 'green' | 'yellow'\n>;\n//#endregion\n\n/**\n * Required properties for the class generation of `AlertComponent`\n */\nexport interface AlertProperties {\n color: keyof AlertColors;\n hasBorder: keyof FlowbiteBoolean;\n hasBorderAccent: keyof FlowbiteBoolean;\n customStyle: DeepPartial<AlertTheme>;\n}\n\n/**\n * Theme definition for `AlertComponent`\n */\nexport interface AlertTheme {\n root: {\n base: string;\n color: AlertColors;\n hasBorder: FlowbiteBoolean;\n hasBorderAccent: FlowbiteBoolean;\n };\n closeButton: {\n base: string;\n color: AlertColors;\n };\n}\n\n/**\n * Default theme for `AlertComponent`\n */\nexport const alertTheme: AlertTheme = createTheme({\n root: {\n base: 'flex flex-col gap-2 p-4 text-sm rounded-lg',\n color: {\n primary:\n 'text-primary-800 dark:text-primary-400 bg-primary-50 dark:bg-gray-800 border-primary-300 dark:border-primary-800',\n dark: 'text-gray-800 dark:text-gray-300 bg-gray-100 dark:bg-gray-800 border-gray-300 dark:border-gray-600',\n blue: 'text-blue-800 dark:text-blue-400 bg-blue-50 dark:bg-gray-800 border-blue-300 dark:border-blue-800',\n red: 'text-red-800 dark:text-red-400 bg-red-100 dark:bg-gray-800 border-red-300 dark:border-red-800',\n green:\n 'text-green-800 dark:text-green-400 bg-green-100 dark:bg-gray-800 border-green-300 dark:border-green-800',\n yellow:\n 'text-yellow-800 dark:text-yellow-300 bg-yellow-100 dark:bg-gray-800 border-yellow-300 dark:border-yellow-800',\n },\n hasBorder: {\n enabled: 'border',\n disabled: 'border-0',\n },\n hasBorderAccent: {\n enabled: 'border-t-4',\n disabled: '',\n },\n },\n closeButton: {\n base: '-mx-1.5 -my-1.5 ml-auto inline-flex h-8 w-8 rounded-lg p-1.5 focus:ring-2',\n color: {\n primary:\n 'text-primary-500 dark:text-primary-600 hover:bg-primary-200 dark:hover:bg-primary-300',\n dark: 'text-gray-500 dark:text-gray-600 hover:bg-gray-200 dark:hover:bg-gray-300',\n blue: 'text-blue-500 dark:text-blue-600 hover:bg-blue-200 dark:hover:bg-blue-300',\n red: 'text-red-500 dark:text-red-600 hover:bg-red-200 dark:hover:bg-red-300',\n green: 'text-green-500 dark:text-green-600 hover:bg-green-200 dark:hover:bg-green-300',\n yellow: 'text-yellow-500 dark:text-yellow-600 hover:bg-yellow-200 dark:hover:bg-yellow-300',\n },\n },\n});\n\n/**\n * Generated class definition for `AlertComponent`\n */\nexport interface AlertClass extends FlowbiteClass {\n closeButtonClass: string;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flowbite-angular-alert.mjs","sources":["../../../../libs/flowbite-angular/alert/alert.theme.service.ts","../../../../libs/flowbite-angular/alert/alert.component.ts","../../../../libs/flowbite-angular/alert/alert.theme.ts","../../../../libs/flowbite-angular/alert/flowbite-angular-alert.ts"],"sourcesContent":["import type { AlertClass, AlertProperties, AlertTheme } from './alert.theme';\n\nimport type { FlowbiteThemeService } from 'flowbite-angular';\nimport { mergeTheme } from 'flowbite-angular/utils';\n\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * `InjectionToken` used to import `AlertTheme` value\n *\n * @example\n * ```\n * var theme = inject(FLOWBITE_ALERT_THEME_TOKEN)\n * ```\n */\nexport const FLOWBITE_ALERT_THEME_TOKEN = new InjectionToken<AlertTheme>(\n 'FLOWBITE_ALERT_THEME_TOKEN'\n);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AlertThemeService implements FlowbiteThemeService<AlertProperties> {\n private readonly baseTheme = inject(FLOWBITE_ALERT_THEME_TOKEN);\n\n public getClasses(properties: AlertProperties): AlertClass {\n const theme: AlertTheme = mergeTheme(this.baseTheme, properties.customStyle);\n\n const output: AlertClass = {\n rootClass: twMerge(\n theme.root.base,\n theme.root.color[properties.color],\n theme.root.hasBorder[properties.hasBorder],\n theme.root.hasBorderAccent[properties.hasBorderAccent]\n ),\n closeButtonClass: twMerge(theme.closeButton.base, theme.closeButton.color[properties.color]),\n };\n\n return output;\n }\n}\n","import type { AlertClass, AlertColors, AlertTheme } from './alert.theme';\nimport { AlertThemeService } from './alert.theme.service';\n\nimport { BaseComponent, booleanToFlowbiteBoolean } from 'flowbite-angular';\nimport type { DeepPartial } from 'flowbite-angular';\nimport { IconComponent, IconRegistry } from 'flowbite-angular/icon';\nimport { CLOSE_SVG_ICON } from 'flowbite-angular/utils';\n\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { NgTemplateOutlet } from '@angular/common';\nimport type { OnInit, TemplateRef } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n InjectionToken,\n makeEnvironmentProviders,\n model,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport const FLOWBITE_ALERT_COLOR_DEFAULT_VALUE = new InjectionToken<keyof AlertColors>(\n 'FLOWBITE_ALERT_COLOR_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE = new InjectionToken<boolean>(\n 'FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE = new InjectionToken<boolean>(\n 'FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken<\n DeepPartial<AlertTheme>\n>('FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE');\n\nexport const FLOWBITE_ALERT_ICON_DEFAULT_VALUE = new InjectionToken<TemplateRef<unknown> | null>(\n 'FLOWBITE_ALERT_ICON_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE =\n new InjectionToken<TemplateRef<unknown> | null>(\n 'FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE'\n );\n\nexport const FLOWBITE_ALERT_IS_DISMISSABLE_DEFAULT_VALUE = new InjectionToken<boolean>(\n 'FLOWBITE_ALERT_IS_DISMISSABLE_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_ALERT_ON_DISMISS_DEFAULT_VALUE = new InjectionToken<(() => void) | undefined>(\n 'FLOWBITE_ALERT_ON_DISMISS_DEFAULT_VALUE'\n);\n\nexport const alertDefaultValueProvider = makeEnvironmentProviders([\n {\n provide: FLOWBITE_ALERT_COLOR_DEFAULT_VALUE,\n useValue: 'primary',\n },\n {\n provide: FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE,\n useValue: false,\n },\n {\n provide: FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE,\n useValue: false,\n },\n {\n provide: FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE,\n useValue: {},\n },\n {\n provide: FLOWBITE_ALERT_ICON_DEFAULT_VALUE,\n useValue: null,\n },\n {\n provide: FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE,\n useValue: null,\n },\n {\n provide: FLOWBITE_ALERT_IS_DISMISSABLE_DEFAULT_VALUE,\n useValue: false,\n },\n {\n provide: FLOWBITE_ALERT_ON_DISMISS_DEFAULT_VALUE,\n useValue: undefined,\n },\n]);\n\n/**\n * @see https://flowbite.com/docs/components/alerts/\n */\n@Component({\n standalone: true,\n imports: [NgTemplateOutlet, IconComponent],\n selector: 'flowbite-alert',\n template: `\n <div class=\"flex items-center\">\n <ng-container [ngTemplateOutlet]=\"icon()\"></ng-container>\n <div>\n <ng-content />\n </div>\n @if (isDismissable()) {\n <button\n type=\"button\"\n [class]=\"contentClasses()!.closeButtonClass\"\n aria-label=\"Close\"\n (click)=\"onDismissClick()\">\n <span class=\"sr-only\">Close</span>\n <flowbite-icon\n svgIcon=\"flowbite-angular:close\"\n class=\"h-5 w-5\" />\n </button>\n }\n </div>\n <ng-container [ngTemplateOutlet]=\"additionalContent()\"></ng-container>\n `,\n host: {\n '[attr.role]': 'alert',\n '[@onDestroyAnimation]': '',\n },\n animations: [\n trigger('onDestroyAnimation', [\n transition(':enter', [style({ opacity: 0 }), animate('300ms', style({ opacity: 1 }))]),\n transition(':leave', [animate('300ms', style({ opacity: 0 }))]),\n ]),\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AlertComponent extends BaseComponent<AlertClass> implements OnInit {\n /**\n * Service injected used to generate class\n */\n public readonly themeService = inject(AlertThemeService);\n /**\n * `IcoRegistry` service\n */\n public readonly iconRegistry = inject(IconRegistry);\n /**\n * `DomSanitizer` service\n */\n public readonly domSanitizer = inject(DomSanitizer);\n\n //#region properties\n /**\n * Set the indicator color\n *\n * @default primary\n */\n public color = model(inject(FLOWBITE_ALERT_COLOR_DEFAULT_VALUE));\n /**\n * Set if the alert has border\n *\n * @default false\n */\n public hasBorder = model(inject(FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE));\n /**\n * Set if the alert has border accent\n *\n * @default false\n */\n public hasBorderAccent = model(inject(FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE));\n /**\n * Set the custom style for this alert\n */\n public customStyle = model(inject(FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE));\n /**\n * Set the custom icon\n *\n * @default null\n */\n public icon = model(inject(FLOWBITE_ALERT_ICON_DEFAULT_VALUE));\n /**\n * Set the additional content\n *\n * @default null\n */\n public additionalContent = model(inject(FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE));\n /**\n * Set if the alert is dismissable\n *\n * @default false\n */\n public isDismissable = model(inject(FLOWBITE_ALERT_IS_DISMISSABLE_DEFAULT_VALUE));\n /**\n * Set the function called when the alert is dismissed\n *\n * @default undefined\n */\n public onDismiss = model(inject(FLOWBITE_ALERT_ON_DISMISS_DEFAULT_VALUE));\n //#endregion\n\n //#region BaseComponent implementation\n public override fetchClass(): AlertClass {\n return this.themeService.getClasses({\n color: this.color(),\n hasBorder: booleanToFlowbiteBoolean(this.hasBorder()),\n hasBorderAccent: booleanToFlowbiteBoolean(this.hasBorderAccent()),\n customStyle: this.customStyle(),\n });\n }\n\n public override init(): void {\n this.iconRegistry.addRawSvgIconInNamepsace(\n 'flowbite-angular',\n 'close',\n this.domSanitizer.bypassSecurityTrustHtml(CLOSE_SVG_ICON)\n );\n }\n //#endregion\n\n /**\n * Call the onDismiss function if it's not undefined\n */\n public onDismissClick() {\n const func = this.onDismiss();\n\n if (func) func();\n }\n}\n","import type { DeepPartial, FlowbiteBoolean, FlowbiteClass, FlowbiteColors } from 'flowbite-angular';\nimport { createTheme } from 'flowbite-angular/utils';\n\n//#region Component theme option\n/**\n * Available colors for `AlertComponent`\n */\nexport type AlertColors = Pick<\n FlowbiteColors,\n 'primary' | 'dark' | 'blue' | 'red' | 'green' | 'yellow'\n>;\n//#endregion\n\n/**\n * Required properties for the class generation of `AlertComponent`\n */\nexport interface AlertProperties {\n color: keyof AlertColors;\n hasBorder: keyof FlowbiteBoolean;\n hasBorderAccent: keyof FlowbiteBoolean;\n customStyle: DeepPartial<AlertTheme>;\n}\n\n/**\n * Theme definition for `AlertComponent`\n */\nexport interface AlertTheme {\n root: {\n base: string;\n color: AlertColors;\n hasBorder: FlowbiteBoolean;\n hasBorderAccent: FlowbiteBoolean;\n };\n closeButton: {\n base: string;\n color: AlertColors;\n };\n}\n\n/**\n * Default theme for `AlertComponent`\n */\nexport const alertTheme: AlertTheme = createTheme({\n root: {\n base: 'flex flex-col gap-2 p-4 text-sm rounded-lg',\n color: {\n primary:\n 'text-primary-800 dark:text-primary-400 bg-primary-50 dark:bg-gray-800 border-primary-300 dark:border-primary-800',\n dark: 'text-gray-800 dark:text-gray-300 bg-gray-100 dark:bg-gray-800 border-gray-300 dark:border-gray-600',\n blue: 'text-blue-800 dark:text-blue-400 bg-blue-50 dark:bg-gray-800 border-blue-300 dark:border-blue-800',\n red: 'text-red-800 dark:text-red-400 bg-red-100 dark:bg-gray-800 border-red-300 dark:border-red-800',\n green:\n 'text-green-800 dark:text-green-400 bg-green-100 dark:bg-gray-800 border-green-300 dark:border-green-800',\n yellow:\n 'text-yellow-800 dark:text-yellow-300 bg-yellow-100 dark:bg-gray-800 border-yellow-300 dark:border-yellow-800',\n },\n hasBorder: {\n enabled: 'border',\n disabled: 'border-0',\n },\n hasBorderAccent: {\n enabled: 'border-t-4',\n disabled: '',\n },\n },\n closeButton: {\n base: '-mx-1.5 -my-1.5 ml-auto inline-flex h-8 w-8 rounded-lg p-1.5 focus:ring-2',\n color: {\n primary:\n 'text-primary-500 dark:text-primary-600 hover:bg-primary-200 dark:hover:bg-primary-300',\n dark: 'text-gray-500 dark:text-gray-600 hover:bg-gray-200 dark:hover:bg-gray-300',\n blue: 'text-blue-500 dark:text-blue-600 hover:bg-blue-200 dark:hover:bg-blue-300',\n red: 'text-red-500 dark:text-red-600 hover:bg-red-200 dark:hover:bg-red-300',\n green: 'text-green-500 dark:text-green-600 hover:bg-green-200 dark:hover:bg-green-300',\n yellow: 'text-yellow-500 dark:text-yellow-600 hover:bg-yellow-200 dark:hover:bg-yellow-300',\n },\n },\n});\n\n/**\n * Generated class definition for `AlertComponent`\n */\nexport interface AlertClass extends FlowbiteClass {\n closeButtonClass: string;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  import { mergeTheme, createTheme } from 'flowbite-angular/utils';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, inject, Injectable, model, Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
3
+ import { InjectionToken, inject, Injectable, makeEnvironmentProviders, model, Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import { BaseComponent, booleanToFlowbiteBoolean } from 'flowbite-angular';
6
6
  import { FlowbiteRouterLinkDirective } from 'flowbite-angular/router-link';
7
- import { NgClass } from '@angular/common';
8
7
 
9
8
  /**
10
9
  * `InjectionToken` used to import `BadgeTheme` value
@@ -38,6 +37,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
38
37
  }]
39
38
  }] });
40
39
 
40
+ const FLOWBITE_BADGE_COLOR_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BADGE_COLOR_DEFAULT_VALUE');
41
+ const FLOWBITE_BADGE_SIZE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BADGE_SIZE_DEFAULT_VALUE');
42
+ const FLOWBITE_BADGE_IS_ICON_ONLY_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BADGE_IS_ICON_ONLY_DEFAULT_VALUE');
43
+ const FLOWBITE_BADGE_IS_PILL_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BADGE_IS_PILL_DEFAULT_VALUE');
44
+ const FLOWBITE_BADGE_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BADGE_CUSTOM_STYLE_DEFAULT_VALUE');
45
+ const badgeDefaultValueProvider = makeEnvironmentProviders([
46
+ {
47
+ provide: FLOWBITE_BADGE_COLOR_DEFAULT_VALUE,
48
+ useValue: 'primary',
49
+ },
50
+ {
51
+ provide: FLOWBITE_BADGE_SIZE_DEFAULT_VALUE,
52
+ useValue: 'xs',
53
+ },
54
+ {
55
+ provide: FLOWBITE_BADGE_IS_ICON_ONLY_DEFAULT_VALUE,
56
+ useValue: false,
57
+ },
58
+ {
59
+ provide: FLOWBITE_BADGE_IS_PILL_DEFAULT_VALUE,
60
+ useValue: false,
61
+ },
62
+ {
63
+ provide: FLOWBITE_BADGE_CUSTOM_STYLE_DEFAULT_VALUE,
64
+ useValue: {},
65
+ },
66
+ ]);
41
67
  /**
42
68
  * @see https://flowbite.com/docs/components/badge/
43
69
  */
@@ -58,29 +84,29 @@ class BadgeComponent extends BaseComponent {
58
84
  *
59
85
  * @default primary
60
86
  */
61
- this.color = model('primary');
87
+ this.color = model(inject(FLOWBITE_BADGE_COLOR_DEFAULT_VALUE));
62
88
  /**
63
89
  * Set the badge size
64
90
  *
65
91
  * @default xs
66
92
  */
67
- this.size = model('xs');
93
+ this.size = model(inject(FLOWBITE_BADGE_SIZE_DEFAULT_VALUE));
68
94
  /**
69
95
  * Set if the badge is icon only
70
96
  *
71
97
  * @default false
72
98
  */
73
- this.isIconOnly = model(false);
99
+ this.isIconOnly = model(inject(FLOWBITE_BADGE_IS_ICON_ONLY_DEFAULT_VALUE));
74
100
  /**
75
101
  * Set if the badge is pill
76
102
  *
77
103
  * @default false
78
104
  */
79
- this.isPill = model(false);
105
+ this.isPill = model(inject(FLOWBITE_BADGE_IS_PILL_DEFAULT_VALUE));
80
106
  /**
81
107
  * Set the custom style for this badge
82
108
  */
83
- this.customStyle = model({});
109
+ this.customStyle = model(inject(FLOWBITE_BADGE_CUSTOM_STYLE_DEFAULT_VALUE));
84
110
  }
85
111
  //#endregion
86
112
  //#region BaseComponent implementation
@@ -101,7 +127,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
101
127
  type: Component,
102
128
  args: [{
103
129
  standalone: true,
104
- imports: [NgClass],
105
130
  selector: 'flowbite-badge',
106
131
  template: `<ng-content />`,
107
132
  encapsulation: ViewEncapsulation.None,
@@ -149,5 +174,5 @@ const badgeTheme = createTheme({
149
174
  * Generated bundle index. Do not edit.
150
175
  */
151
176
 
152
- export { BadgeComponent, BadgeThemeService, FLOWBITE_BADGE_THEME_TOKEN, badgeTheme };
177
+ export { BadgeComponent, BadgeThemeService, FLOWBITE_BADGE_COLOR_DEFAULT_VALUE, FLOWBITE_BADGE_CUSTOM_STYLE_DEFAULT_VALUE, FLOWBITE_BADGE_IS_ICON_ONLY_DEFAULT_VALUE, FLOWBITE_BADGE_IS_PILL_DEFAULT_VALUE, FLOWBITE_BADGE_SIZE_DEFAULT_VALUE, FLOWBITE_BADGE_THEME_TOKEN, badgeDefaultValueProvider, badgeTheme };
153
178
  //# sourceMappingURL=flowbite-angular-badge.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"flowbite-angular-badge.mjs","sources":["../../../../libs/flowbite-angular/badge/badge.theme.service.ts","../../../../libs/flowbite-angular/badge/badge.component.ts","../../../../libs/flowbite-angular/badge/badge.theme.ts","../../../../libs/flowbite-angular/badge/flowbite-angular-badge.ts"],"sourcesContent":["import type { BadgeClass, BadgeProperties, BadgeTheme } from './badge.theme';\n\nimport type { FlowbiteThemeService } from 'flowbite-angular';\nimport { mergeTheme } from 'flowbite-angular/utils';\n\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * `InjectionToken` used to import `BadgeTheme` value\n *\n * @example\n * ```\n * var theme = inject(FLOWBITE_BADGE_THEME_TOKEN)\n * ```\n */\nexport const FLOWBITE_BADGE_THEME_TOKEN = new InjectionToken<BadgeTheme>(\n 'FLOWBITE_BADGE_THEME_TOKEN'\n);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BadgeThemeService implements FlowbiteThemeService<BadgeProperties> {\n private readonly baseTheme = inject(FLOWBITE_BADGE_THEME_TOKEN);\n\n public getClasses(properties: BadgeProperties): BadgeClass {\n const theme: BadgeTheme = mergeTheme(this.baseTheme, properties.customStyle);\n\n const output: BadgeClass = {\n rootClass: twMerge(\n theme.root.base,\n theme.root.color[properties.color],\n theme.root.size[properties.size],\n theme.root.isPill[\n properties.isPill == 'enabled' || properties.isIconOnly == 'enabled'\n ? 'enabled'\n : properties.isPill\n ],\n theme.root.isIconOnly[properties.isIconOnly],\n theme.root.link[properties.link ? 'enabled' : 'disabled']\n ),\n };\n\n return output;\n }\n}\n","import type { BadgeClass, BadgeColors, BadgeSizes, BadgeTheme } from './badge.theme';\nimport { BadgeThemeService } from './badge.theme.service';\n\nimport type { DeepPartial } from 'flowbite-angular';\nimport { BaseComponent, booleanToFlowbiteBoolean } from 'flowbite-angular';\nimport { FlowbiteRouterLinkDirective } from 'flowbite-angular/router-link';\n\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n model,\n ViewEncapsulation,\n} from '@angular/core';\n\n/**\n * @see https://flowbite.com/docs/components/badge/\n */\n@Component({\n standalone: true,\n imports: [NgClass],\n selector: 'flowbite-badge',\n template: `<ng-content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeComponent extends BaseComponent<BadgeClass> {\n /**\n * Optional `FlowbiteRouterLinkDirective` injected\n */\n public readonly flowbiteRouterLink = inject(FlowbiteRouterLinkDirective, { optional: true });\n /**\n * Service injected used to generate class\n */\n public readonly themeService = inject(BadgeThemeService);\n\n //#region properties\n /**\n * Set the badge color\n *\n * @default primary\n */\n public color = model<keyof BadgeColors>('primary');\n /**\n * Set the badge size\n *\n * @default xs\n */\n public size = model<keyof BadgeSizes>('xs');\n /**\n * Set if the badge is icon only\n *\n * @default false\n */\n public isIconOnly = model<boolean>(false);\n /**\n * Set if the badge is pill\n *\n * @default false\n */\n public isPill = model<boolean>(false);\n /**\n * Set the custom style for this badge\n */\n public customStyle = model<DeepPartial<BadgeTheme>>({});\n //#endregion\n\n //#region BaseComponent implementation\n public override fetchClass(): BadgeClass {\n return this.themeService.getClasses({\n color: this.color(),\n size: this.size(),\n isIconOnly: booleanToFlowbiteBoolean(this.isIconOnly()),\n isPill: booleanToFlowbiteBoolean(this.isPill()),\n link: this.flowbiteRouterLink?.routerLink.urlTree ?? null,\n customStyle: this.customStyle(),\n });\n }\n //#endregion\n}\n","import type {\n DeepPartial,\n FlowbiteBoolean,\n FlowbiteClass,\n FlowbiteColors,\n FlowbiteSizes,\n RouterLinkParameter,\n} from 'flowbite-angular';\nimport { createTheme } from 'flowbite-angular/utils';\n\n//#region Component theme option\n/**\n * Available colors for `BadgeComponent`\n */\nexport interface BadgeColors\n extends Pick<\n FlowbiteColors,\n 'primary' | 'dark' | 'blue' | 'red' | 'green' | 'yellow' | 'indigo' | 'purple' | 'pink'\n > {\n [key: string]: string;\n}\n\n/**\n * Available sizes for `BadgeComponent`\n */\nexport interface BadgeSizes extends Pick<FlowbiteSizes, 'xs' | 'sm'> {\n [key: string]: string;\n}\n//#endregion\n\n/**\n * Required properties for the class generation of `BadgeComponent`\n */\nexport interface BadgeProperties {\n color: keyof BadgeColors;\n size: keyof BadgeSizes;\n isIconOnly: keyof FlowbiteBoolean;\n isPill: keyof FlowbiteBoolean;\n link: RouterLinkParameter;\n customStyle: DeepPartial<BadgeTheme>;\n}\n\n/**\n * Theme definition for `BadgeComponent`\n */\nexport interface BadgeTheme {\n root: {\n base: string;\n color: BadgeColors;\n size: BadgeSizes;\n isPill: FlowbiteBoolean;\n isIconOnly: FlowbiteBoolean;\n link: FlowbiteBoolean;\n };\n}\n\n/**\n * Default theme for `BadgeComponent`\n */\nexport const badgeTheme: BadgeTheme = createTheme({\n root: {\n base: 'flex h-fit items-center gap-1 font-semibold',\n color: {\n primary:\n 'bg-primary-100 dark:bg-primary-700 text-primary-800 dark:text-primary-300 group-hover:bg-primary-200 dark:group-hover:bg-primary-600',\n dark: 'bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-300 group-hover:bg-gray-200 dark:group-hover:bg-gray-600',\n blue: 'bg-blue-100 dark:bg-blue-200 text-blue-800 dark:text-blue-800 group-hover:bg-blue-200 dark:group-hover:bg-blue-300',\n red: 'bg-red-100 dark:bg-red-200 text-red-800 dark:text-red-900 group-hover:bg-red-200 dark:group-hover:bg-red-300',\n green:\n 'bg-green-100 dark:bg-green-200 text-green-800 dark:text-green-900 group-hover:bg-green-200 dark:group-hover:bg-green-300',\n yellow:\n 'bg-yellow-100 dark:bg-yellow-200 text-yellow-800 dark:text-yellow-900 group-hover:bg-yellow-200 dark:group-hover:bg-yellow-300',\n indigo:\n 'bg-indigo-100 dark:bg-indigo-200 text-indigo-800 dark:text-indigo-900 group-hover:bg-indigo-200 dark:group-hover:bg-indigo-300',\n purple:\n 'bg-purple-100 dark:bg-purple-200 text-purple-800 dark:text-purple-900 group-hover:bg-purple-200 dark:group-hover:bg-purple-300',\n pink: 'bg-pink-100 dark:bg-pink-200 text-pink-800 dark:text-pink-900 group-hover:bg-pink-200 dark:group-hover:bg-pink-300',\n },\n size: {\n xs: 'text-xs p-1',\n sm: 'text-sm p-1.5',\n },\n isPill: {\n enabled: 'rounded-full',\n disabled: 'rounded',\n },\n link: {\n enabled: 'group cursor-pointer',\n disabled: '',\n },\n isIconOnly: {\n enabled: '',\n disabled: 'px-2 py-0.5',\n },\n },\n});\n\n/**\n * Generated class definition for `BadgeComponent`\n */\nexport type BadgeClass = FlowbiteClass;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flowbite-angular-badge.mjs","sources":["../../../../libs/flowbite-angular/badge/badge.theme.service.ts","../../../../libs/flowbite-angular/badge/badge.component.ts","../../../../libs/flowbite-angular/badge/badge.theme.ts","../../../../libs/flowbite-angular/badge/flowbite-angular-badge.ts"],"sourcesContent":["import type { BadgeClass, BadgeProperties, BadgeTheme } from './badge.theme';\n\nimport type { FlowbiteThemeService } from 'flowbite-angular';\nimport { mergeTheme } from 'flowbite-angular/utils';\n\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * `InjectionToken` used to import `BadgeTheme` value\n *\n * @example\n * ```\n * var theme = inject(FLOWBITE_BADGE_THEME_TOKEN)\n * ```\n */\nexport const FLOWBITE_BADGE_THEME_TOKEN = new InjectionToken<BadgeTheme>(\n 'FLOWBITE_BADGE_THEME_TOKEN'\n);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BadgeThemeService implements FlowbiteThemeService<BadgeProperties> {\n private readonly baseTheme = inject(FLOWBITE_BADGE_THEME_TOKEN);\n\n public getClasses(properties: BadgeProperties): BadgeClass {\n const theme: BadgeTheme = mergeTheme(this.baseTheme, properties.customStyle);\n\n const output: BadgeClass = {\n rootClass: twMerge(\n theme.root.base,\n theme.root.color[properties.color],\n theme.root.size[properties.size],\n theme.root.isPill[\n properties.isPill == 'enabled' || properties.isIconOnly == 'enabled'\n ? 'enabled'\n : properties.isPill\n ],\n theme.root.isIconOnly[properties.isIconOnly],\n theme.root.link[properties.link ? 'enabled' : 'disabled']\n ),\n };\n\n return output;\n }\n}\n","import type { BadgeClass, BadgeColors, BadgeSizes, BadgeTheme } from './badge.theme';\nimport { BadgeThemeService } from './badge.theme.service';\n\nimport type { DeepPartial } from 'flowbite-angular';\nimport { BaseComponent, booleanToFlowbiteBoolean } from 'flowbite-angular';\nimport { FlowbiteRouterLinkDirective } from 'flowbite-angular/router-link';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n InjectionToken,\n makeEnvironmentProviders,\n model,\n ViewEncapsulation,\n} from '@angular/core';\n\nexport const FLOWBITE_BADGE_COLOR_DEFAULT_VALUE = new InjectionToken<keyof BadgeColors>(\n 'FLOWBITE_BADGE_COLOR_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_BADGE_SIZE_DEFAULT_VALUE = new InjectionToken<keyof BadgeSizes>(\n 'FLOWBITE_BADGE_SIZE_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_BADGE_IS_ICON_ONLY_DEFAULT_VALUE = new InjectionToken<boolean>(\n 'FLOWBITE_BADGE_IS_ICON_ONLY_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_BADGE_IS_PILL_DEFAULT_VALUE = new InjectionToken<boolean>(\n 'FLOWBITE_BADGE_IS_PILL_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_BADGE_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken<\n DeepPartial<BadgeTheme>\n>('FLOWBITE_BADGE_CUSTOM_STYLE_DEFAULT_VALUE');\n\nexport const badgeDefaultValueProvider = makeEnvironmentProviders([\n {\n provide: FLOWBITE_BADGE_COLOR_DEFAULT_VALUE,\n useValue: 'primary',\n },\n {\n provide: FLOWBITE_BADGE_SIZE_DEFAULT_VALUE,\n useValue: 'xs',\n },\n {\n provide: FLOWBITE_BADGE_IS_ICON_ONLY_DEFAULT_VALUE,\n useValue: false,\n },\n {\n provide: FLOWBITE_BADGE_IS_PILL_DEFAULT_VALUE,\n useValue: false,\n },\n {\n provide: FLOWBITE_BADGE_CUSTOM_STYLE_DEFAULT_VALUE,\n useValue: {},\n },\n]);\n\n/**\n * @see https://flowbite.com/docs/components/badge/\n */\n@Component({\n standalone: true,\n selector: 'flowbite-badge',\n template: `<ng-content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeComponent extends BaseComponent<BadgeClass> {\n /**\n * Optional `FlowbiteRouterLinkDirective` injected\n */\n public readonly flowbiteRouterLink = inject(FlowbiteRouterLinkDirective, { optional: true });\n /**\n * Service injected used to generate class\n */\n public readonly themeService = inject(BadgeThemeService);\n\n //#region properties\n /**\n * Set the badge color\n *\n * @default primary\n */\n public color = model(inject(FLOWBITE_BADGE_COLOR_DEFAULT_VALUE));\n /**\n * Set the badge size\n *\n * @default xs\n */\n public size = model(inject(FLOWBITE_BADGE_SIZE_DEFAULT_VALUE));\n /**\n * Set if the badge is icon only\n *\n * @default false\n */\n public isIconOnly = model(inject(FLOWBITE_BADGE_IS_ICON_ONLY_DEFAULT_VALUE));\n /**\n * Set if the badge is pill\n *\n * @default false\n */\n public isPill = model(inject(FLOWBITE_BADGE_IS_PILL_DEFAULT_VALUE));\n /**\n * Set the custom style for this badge\n */\n public customStyle = model(inject(FLOWBITE_BADGE_CUSTOM_STYLE_DEFAULT_VALUE));\n //#endregion\n\n //#region BaseComponent implementation\n public override fetchClass(): BadgeClass {\n return this.themeService.getClasses({\n color: this.color(),\n size: this.size(),\n isIconOnly: booleanToFlowbiteBoolean(this.isIconOnly()),\n isPill: booleanToFlowbiteBoolean(this.isPill()),\n link: this.flowbiteRouterLink?.routerLink.urlTree ?? null,\n customStyle: this.customStyle(),\n });\n }\n //#endregion\n}\n","import type {\n DeepPartial,\n FlowbiteBoolean,\n FlowbiteClass,\n FlowbiteColors,\n FlowbiteSizes,\n RouterLinkParameter,\n} from 'flowbite-angular';\nimport { createTheme } from 'flowbite-angular/utils';\n\n//#region Component theme option\n/**\n * Available colors for `BadgeComponent`\n */\nexport interface BadgeColors\n extends Pick<\n FlowbiteColors,\n 'primary' | 'dark' | 'blue' | 'red' | 'green' | 'yellow' | 'indigo' | 'purple' | 'pink'\n > {\n [key: string]: string;\n}\n\n/**\n * Available sizes for `BadgeComponent`\n */\nexport interface BadgeSizes extends Pick<FlowbiteSizes, 'xs' | 'sm'> {\n [key: string]: string;\n}\n//#endregion\n\n/**\n * Required properties for the class generation of `BadgeComponent`\n */\nexport interface BadgeProperties {\n color: keyof BadgeColors;\n size: keyof BadgeSizes;\n isIconOnly: keyof FlowbiteBoolean;\n isPill: keyof FlowbiteBoolean;\n link: RouterLinkParameter;\n customStyle: DeepPartial<BadgeTheme>;\n}\n\n/**\n * Theme definition for `BadgeComponent`\n */\nexport interface BadgeTheme {\n root: {\n base: string;\n color: BadgeColors;\n size: BadgeSizes;\n isPill: FlowbiteBoolean;\n isIconOnly: FlowbiteBoolean;\n link: FlowbiteBoolean;\n };\n}\n\n/**\n * Default theme for `BadgeComponent`\n */\nexport const badgeTheme: BadgeTheme = createTheme({\n root: {\n base: 'flex h-fit items-center gap-1 font-semibold',\n color: {\n primary:\n 'bg-primary-100 dark:bg-primary-700 text-primary-800 dark:text-primary-300 group-hover:bg-primary-200 dark:group-hover:bg-primary-600',\n dark: 'bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-300 group-hover:bg-gray-200 dark:group-hover:bg-gray-600',\n blue: 'bg-blue-100 dark:bg-blue-200 text-blue-800 dark:text-blue-800 group-hover:bg-blue-200 dark:group-hover:bg-blue-300',\n red: 'bg-red-100 dark:bg-red-200 text-red-800 dark:text-red-900 group-hover:bg-red-200 dark:group-hover:bg-red-300',\n green:\n 'bg-green-100 dark:bg-green-200 text-green-800 dark:text-green-900 group-hover:bg-green-200 dark:group-hover:bg-green-300',\n yellow:\n 'bg-yellow-100 dark:bg-yellow-200 text-yellow-800 dark:text-yellow-900 group-hover:bg-yellow-200 dark:group-hover:bg-yellow-300',\n indigo:\n 'bg-indigo-100 dark:bg-indigo-200 text-indigo-800 dark:text-indigo-900 group-hover:bg-indigo-200 dark:group-hover:bg-indigo-300',\n purple:\n 'bg-purple-100 dark:bg-purple-200 text-purple-800 dark:text-purple-900 group-hover:bg-purple-200 dark:group-hover:bg-purple-300',\n pink: 'bg-pink-100 dark:bg-pink-200 text-pink-800 dark:text-pink-900 group-hover:bg-pink-200 dark:group-hover:bg-pink-300',\n },\n size: {\n xs: 'text-xs p-1',\n sm: 'text-sm p-1.5',\n },\n isPill: {\n enabled: 'rounded-full',\n disabled: 'rounded',\n },\n link: {\n enabled: 'group cursor-pointer',\n disabled: '',\n },\n isIconOnly: {\n enabled: '',\n disabled: 'px-2 py-0.5',\n },\n },\n});\n\n/**\n * Generated class definition for `BadgeComponent`\n */\nexport type BadgeClass = FlowbiteClass;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
1
  import { mergeTheme, CHEVRON_RIGHT_SVG_ICON, createTheme } from 'flowbite-angular/utils';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, inject, Injectable, model, Component, ViewEncapsulation, ChangeDetectionStrategy, contentChildren } from '@angular/core';
3
+ import { InjectionToken, inject, Injectable, makeEnvironmentProviders, model, Component, ViewEncapsulation, ChangeDetectionStrategy, contentChildren } from '@angular/core';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import { BaseComponent } from 'flowbite-angular';
6
6
  import { IconRegistry, IconComponent } from 'flowbite-angular/icon';
7
7
  import { FlowbiteRouterLinkDirective } from 'flowbite-angular/router-link';
8
- import { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';
9
8
  import { DomSanitizer } from '@angular/platform-browser';
10
9
 
11
10
  /**
@@ -39,6 +38,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
39
38
  }]
40
39
  }] });
41
40
 
41
+ const FLOWBITE_BREADCRUMB_ITEM_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BREADCRUMB_ITEM_CUSTOM_STYLE_DEFAULT_VALUE');
42
+ const breadcrumbItemDefaultValueProvider = makeEnvironmentProviders([
43
+ {
44
+ provide: FLOWBITE_BREADCRUMB_ITEM_CUSTOM_STYLE_DEFAULT_VALUE,
45
+ useValue: {},
46
+ },
47
+ ]);
42
48
  /**
43
49
  * @see https://flowbite.com/docs/components/breadcrumb/
44
50
  */
@@ -75,7 +81,7 @@ class BreadcrumbItemComponent extends BaseComponent {
75
81
  /**
76
82
  * Set the custom style for this breadcrumb item
77
83
  */
78
- this.customStyle = model({});
84
+ this.customStyle = model(inject(FLOWBITE_BREADCRUMB_ITEM_CUSTOM_STYLE_DEFAULT_VALUE));
79
85
  }
80
86
  //#endregion
81
87
  //#region BaseComponent implementation
@@ -92,20 +98,20 @@ class BreadcrumbItemComponent extends BaseComponent {
92
98
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: BreadcrumbItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
93
99
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.0", type: BreadcrumbItemComponent, isStandalone: true, selector: "flowbite-breadcrumb-item", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { color: "colorChange", customStyle: "customStyleChange" }, usesInheritance: true, ngImport: i0, template: `
94
100
  <flowbite-icon
95
- [ngClass]="contentClasses().breadcrumbIconClass"
101
+ [class]="contentClasses().breadcrumbIconClass"
96
102
  svgIcon="flowbite-angular:chevron-right" />
97
103
  <ng-content />
98
- `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IconComponent, selector: "flowbite-icon", inputs: ["svgIcon"], outputs: ["svgIconChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
104
+ `, isInline: true, dependencies: [{ kind: "component", type: IconComponent, selector: "flowbite-icon", inputs: ["svgIcon"], outputs: ["svgIconChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
99
105
  }
100
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: BreadcrumbItemComponent, decorators: [{
101
107
  type: Component,
102
108
  args: [{
103
109
  standalone: true,
104
- imports: [NgIf, NgClass, NgTemplateOutlet, IconComponent],
110
+ imports: [IconComponent],
105
111
  selector: 'flowbite-breadcrumb-item',
106
112
  template: `
107
113
  <flowbite-icon
108
- [ngClass]="contentClasses().breadcrumbIconClass"
114
+ [class]="contentClasses().breadcrumbIconClass"
109
115
  svgIcon="flowbite-angular:chevron-right" />
110
116
  <ng-content />
111
117
  `,
@@ -144,6 +150,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
144
150
  }]
145
151
  }] });
146
152
 
153
+ const FLOWBITE_BREADCRUMB_COLOR_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BREADCRUMB_COLOR_DEFAULT_VALUE');
154
+ const FLOWBITE_BREADCRUMB_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BREADCRUMB_CUSTOM_STYLE_DEFAULT_VALUE');
155
+ const breadcrumbDefaultValueProvider = makeEnvironmentProviders([
156
+ {
157
+ provide: FLOWBITE_BREADCRUMB_COLOR_DEFAULT_VALUE,
158
+ useValue: 'primary',
159
+ },
160
+ {
161
+ provide: FLOWBITE_BREADCRUMB_CUSTOM_STYLE_DEFAULT_VALUE,
162
+ useValue: {},
163
+ },
164
+ ]);
147
165
  /**
148
166
  * @see https://flowbite.com/docs/components/breadcrumb/
149
167
  */
@@ -164,11 +182,11 @@ class BreadcrumbComponent extends BaseComponent {
164
182
  *
165
183
  * @default primary
166
184
  */
167
- this.color = model('primary');
185
+ this.color = model(inject(FLOWBITE_BREADCRUMB_COLOR_DEFAULT_VALUE));
168
186
  /**
169
187
  * Set the custom style for this breadcrumb
170
188
  */
171
- this.customStyle = model({});
189
+ this.customStyle = model(inject(FLOWBITE_BREADCRUMB_CUSTOM_STYLE_DEFAULT_VALUE));
172
190
  }
173
191
  //#endregion
174
192
  //#region BaseComponent implementation
@@ -177,11 +195,6 @@ class BreadcrumbComponent extends BaseComponent {
177
195
  customStyle: this.customStyle(),
178
196
  });
179
197
  }
180
- verify() {
181
- if (this.breadcrumbItemChildren().length === 0) {
182
- throw new Error('No BreadcrumbItemComponent available');
183
- }
184
- }
185
198
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: BreadcrumbComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
186
199
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.0.0", type: BreadcrumbComponent, isStandalone: true, selector: "flowbite-breadcrumb", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { color: "colorChange", customStyle: "customStyleChange" }, host: { properties: { "attr.aria-label": "breadcrumb" } }, queries: [{ propertyName: "breadcrumbItemChildren", predicate: BreadcrumbItemComponent, isSignal: true }], usesInheritance: true, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
187
200
  }
@@ -189,7 +202,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
189
202
  type: Component,
190
203
  args: [{
191
204
  standalone: true,
192
- imports: [NgClass],
193
205
  selector: 'flowbite-breadcrumb',
194
206
  template: `<ng-content />`,
195
207
  host: {
@@ -233,5 +245,5 @@ const breadcrumbItemTheme = createTheme({
233
245
  * Generated bundle index. Do not edit.
234
246
  */
235
247
 
236
- export { BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbItemThemeService, BreadcrumbThemeService, FLOWBITE_BREADCRUMB_ITEM_THEME_TOKEN, FLOWBITE_BREADCRUMB_THEME_TOKEN, breadcrumbItemTheme, breadcrumbTheme };
248
+ export { BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbItemThemeService, BreadcrumbThemeService, FLOWBITE_BREADCRUMB_COLOR_DEFAULT_VALUE, FLOWBITE_BREADCRUMB_CUSTOM_STYLE_DEFAULT_VALUE, FLOWBITE_BREADCRUMB_ITEM_CUSTOM_STYLE_DEFAULT_VALUE, FLOWBITE_BREADCRUMB_ITEM_THEME_TOKEN, FLOWBITE_BREADCRUMB_THEME_TOKEN, breadcrumbDefaultValueProvider, breadcrumbItemDefaultValueProvider, breadcrumbItemTheme, breadcrumbTheme };
237
249
  //# sourceMappingURL=flowbite-angular-breadcrumb.mjs.map