@cute-widgets/base 20.0.4 → 21.0.0

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 (171) hide show
  1. package/CHANGELOG.md +18 -6
  2. package/fesm2022/cute-widgets-base-abstract.mjs +19 -29
  3. package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -1
  4. package/fesm2022/cute-widgets-base-alert.mjs +10 -10
  5. package/fesm2022/cute-widgets-base-alert.mjs.map +1 -1
  6. package/fesm2022/cute-widgets-base-autocomplete.mjs +14 -14
  7. package/fesm2022/cute-widgets-base-autocomplete.mjs.map +1 -1
  8. package/fesm2022/cute-widgets-base-badge.mjs +46 -14
  9. package/fesm2022/cute-widgets-base-badge.mjs.map +1 -1
  10. package/fesm2022/cute-widgets-base-bottom-sheet.mjs +11 -11
  11. package/fesm2022/cute-widgets-base-bottom-sheet.mjs.map +1 -1
  12. package/fesm2022/cute-widgets-base-button-toggle.mjs +61 -37
  13. package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -1
  14. package/fesm2022/cute-widgets-base-button.mjs +176 -112
  15. package/fesm2022/cute-widgets-base-button.mjs.map +1 -1
  16. package/fesm2022/cute-widgets-base-card.mjs +40 -40
  17. package/fesm2022/cute-widgets-base-card.mjs.map +1 -1
  18. package/fesm2022/cute-widgets-base-checkbox.mjs +28 -28
  19. package/fesm2022/cute-widgets-base-checkbox.mjs.map +1 -1
  20. package/fesm2022/cute-widgets-base-chips.mjs +49 -61
  21. package/fesm2022/cute-widgets-base-chips.mjs.map +1 -1
  22. package/fesm2022/cute-widgets-base-collapse.mjs +120 -132
  23. package/fesm2022/cute-widgets-base-collapse.mjs.map +1 -1
  24. package/fesm2022/cute-widgets-base-core-datetime.mjs +11 -11
  25. package/fesm2022/cute-widgets-base-core-datetime.mjs.map +1 -1
  26. package/fesm2022/cute-widgets-base-core-directives.mjs +21 -21
  27. package/fesm2022/cute-widgets-base-core-directives.mjs.map +1 -1
  28. package/fesm2022/cute-widgets-base-core-error.mjs +6 -6
  29. package/fesm2022/cute-widgets-base-core-error.mjs.map +1 -1
  30. package/fesm2022/cute-widgets-base-core-layout.mjs +13 -1
  31. package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -1
  32. package/fesm2022/cute-widgets-base-core-line.mjs +7 -7
  33. package/fesm2022/cute-widgets-base-core-line.mjs.map +1 -1
  34. package/fesm2022/cute-widgets-base-core-nav.mjs +30 -28
  35. package/fesm2022/cute-widgets-base-core-nav.mjs.map +1 -1
  36. package/fesm2022/cute-widgets-base-core-observers.mjs +16 -16
  37. package/fesm2022/cute-widgets-base-core-observers.mjs.map +1 -1
  38. package/fesm2022/cute-widgets-base-core-option.mjs +10 -10
  39. package/fesm2022/cute-widgets-base-core-option.mjs.map +1 -1
  40. package/fesm2022/cute-widgets-base-core-pipes.mjs +6 -6
  41. package/fesm2022/cute-widgets-base-core-pipes.mjs.map +1 -1
  42. package/fesm2022/cute-widgets-base-core-ripple.mjs +3 -3
  43. package/fesm2022/cute-widgets-base-core-ripple.mjs.map +1 -1
  44. package/fesm2022/cute-widgets-base-core-theming.mjs +7 -7
  45. package/fesm2022/cute-widgets-base-core-theming.mjs.map +1 -1
  46. package/fesm2022/cute-widgets-base-core-utils.mjs +3 -3
  47. package/fesm2022/cute-widgets-base-core-utils.mjs.map +1 -1
  48. package/fesm2022/cute-widgets-base-core.mjs +50 -38
  49. package/fesm2022/cute-widgets-base-core.mjs.map +1 -1
  50. package/fesm2022/cute-widgets-base-datepicker.mjs +100 -99
  51. package/fesm2022/cute-widgets-base-datepicker.mjs.map +1 -1
  52. package/fesm2022/cute-widgets-base-dialog.mjs +170 -135
  53. package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -1
  54. package/fesm2022/cute-widgets-base-divider.mjs +7 -7
  55. package/fesm2022/cute-widgets-base-divider.mjs.map +1 -1
  56. package/fesm2022/cute-widgets-base-expansion.mjs +27 -27
  57. package/fesm2022/cute-widgets-base-expansion.mjs.map +1 -1
  58. package/fesm2022/cute-widgets-base-form-field.mjs +28 -28
  59. package/fesm2022/cute-widgets-base-form-field.mjs.map +1 -1
  60. package/fesm2022/cute-widgets-base-grid-list.mjs +22 -22
  61. package/fesm2022/cute-widgets-base-grid-list.mjs.map +1 -1
  62. package/fesm2022/cute-widgets-base-icon.mjs +10 -10
  63. package/fesm2022/cute-widgets-base-icon.mjs.map +1 -1
  64. package/fesm2022/cute-widgets-base-input.mjs +7 -7
  65. package/fesm2022/cute-widgets-base-input.mjs.map +1 -1
  66. package/fesm2022/cute-widgets-base-layout-container.mjs +10 -10
  67. package/fesm2022/cute-widgets-base-layout-container.mjs.map +1 -1
  68. package/fesm2022/cute-widgets-base-layout-stack.mjs +13 -13
  69. package/fesm2022/cute-widgets-base-layout-stack.mjs.map +1 -1
  70. package/fesm2022/cute-widgets-base-layout.mjs +23 -23
  71. package/fesm2022/cute-widgets-base-layout.mjs.map +1 -1
  72. package/fesm2022/cute-widgets-base-list.mjs +56 -56
  73. package/fesm2022/cute-widgets-base-list.mjs.map +1 -1
  74. package/fesm2022/cute-widgets-base-menu.mjs +581 -388
  75. package/fesm2022/cute-widgets-base-menu.mjs.map +1 -1
  76. package/fesm2022/cute-widgets-base-navbar.mjs +101 -61
  77. package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -1
  78. package/fesm2022/cute-widgets-base-paginator.mjs +13 -13
  79. package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -1
  80. package/fesm2022/cute-widgets-base-progress.mjs +10 -10
  81. package/fesm2022/cute-widgets-base-progress.mjs.map +1 -1
  82. package/fesm2022/cute-widgets-base-radio.mjs +11 -11
  83. package/fesm2022/cute-widgets-base-radio.mjs.map +1 -1
  84. package/fesm2022/cute-widgets-base-select.mjs +11 -11
  85. package/fesm2022/cute-widgets-base-select.mjs.map +1 -1
  86. package/fesm2022/cute-widgets-base-sidenav.mjs +26 -26
  87. package/fesm2022/cute-widgets-base-sidenav.mjs.map +1 -1
  88. package/fesm2022/cute-widgets-base-slider.mjs +10 -10
  89. package/fesm2022/cute-widgets-base-slider.mjs.map +1 -1
  90. package/fesm2022/cute-widgets-base-snack-bar.mjs +28 -28
  91. package/fesm2022/cute-widgets-base-snack-bar.mjs.map +1 -1
  92. package/fesm2022/cute-widgets-base-sort.mjs +13 -13
  93. package/fesm2022/cute-widgets-base-sort.mjs.map +1 -1
  94. package/fesm2022/cute-widgets-base-spinner.mjs +8 -8
  95. package/fesm2022/cute-widgets-base-spinner.mjs.map +1 -1
  96. package/fesm2022/cute-widgets-base-stepper.mjs +40 -40
  97. package/fesm2022/cute-widgets-base-stepper.mjs.map +1 -1
  98. package/fesm2022/cute-widgets-base-table.mjs +58 -66
  99. package/fesm2022/cute-widgets-base-table.mjs.map +1 -1
  100. package/fesm2022/cute-widgets-base-tabs.mjs +100 -75
  101. package/fesm2022/cute-widgets-base-tabs.mjs.map +1 -1
  102. package/fesm2022/cute-widgets-base-timepicker.mjs +34 -63
  103. package/fesm2022/cute-widgets-base-timepicker.mjs.map +1 -1
  104. package/fesm2022/cute-widgets-base-toolbar.mjs +13 -13
  105. package/fesm2022/cute-widgets-base-toolbar.mjs.map +1 -1
  106. package/fesm2022/cute-widgets-base-tooltip.mjs +10 -10
  107. package/fesm2022/cute-widgets-base-tooltip.mjs.map +1 -1
  108. package/fesm2022/cute-widgets-base-tree.mjs +25 -25
  109. package/fesm2022/cute-widgets-base-tree.mjs.map +1 -1
  110. package/fesm2022/cute-widgets-base.mjs +4 -4
  111. package/package.json +121 -121
  112. package/{abstract/index.d.ts → types/cute-widgets-base-abstract.d.ts} +9 -3
  113. package/{autocomplete/index.d.ts → types/cute-widgets-base-autocomplete.d.ts} +2 -2
  114. package/{badge/index.d.ts → types/cute-widgets-base-badge.d.ts} +6 -5
  115. package/{bottom-sheet/index.d.ts → types/cute-widgets-base-bottom-sheet.d.ts} +1 -1
  116. package/{button-toggle/index.d.ts → types/cute-widgets-base-button-toggle.d.ts} +15 -5
  117. package/{button/index.d.ts → types/cute-widgets-base-button.d.ts} +44 -22
  118. package/{checkbox/index.d.ts → types/cute-widgets-base-checkbox.d.ts} +1 -1
  119. package/{chips/index.d.ts → types/cute-widgets-base-chips.d.ts} +1 -1
  120. package/types/cute-widgets-base-collapse.d.ts +98 -0
  121. package/{core/layout/index.d.ts → types/cute-widgets-base-core-layout.d.ts} +7 -1
  122. package/{core/nav/index.d.ts → types/cute-widgets-base-core-nav.d.ts} +2 -1
  123. package/{core/observers/index.d.ts → types/cute-widgets-base-core-observers.d.ts} +1 -1
  124. package/{core/option/index.d.ts → types/cute-widgets-base-core-option.d.ts} +1 -1
  125. package/{core/index.d.ts → types/cute-widgets-base-core.d.ts} +7 -1
  126. package/{datepicker/index.d.ts → types/cute-widgets-base-datepicker.d.ts} +2 -2
  127. package/{dialog/index.d.ts → types/cute-widgets-base-dialog.d.ts} +81 -57
  128. package/{expansion/index.d.ts → types/cute-widgets-base-expansion.d.ts} +4 -14
  129. package/{form-field/index.d.ts → types/cute-widgets-base-form-field.d.ts} +1 -1
  130. package/{icon/index.d.ts → types/cute-widgets-base-icon.d.ts} +1 -1
  131. package/{input/index.d.ts → types/cute-widgets-base-input.d.ts} +1 -1
  132. package/{menu/index.d.ts → types/cute-widgets-base-menu.d.ts} +202 -121
  133. package/{navbar/index.d.ts → types/cute-widgets-base-navbar.d.ts} +24 -9
  134. package/{paginator/index.d.ts → types/cute-widgets-base-paginator.d.ts} +2 -2
  135. package/{progress/index.d.ts → types/cute-widgets-base-progress.d.ts} +1 -1
  136. package/{radio/index.d.ts → types/cute-widgets-base-radio.d.ts} +2 -2
  137. package/{sidenav/index.d.ts → types/cute-widgets-base-sidenav.d.ts} +1 -1
  138. package/{snack-bar/index.d.ts → types/cute-widgets-base-snack-bar.d.ts} +1 -1
  139. package/{sort/index.d.ts → types/cute-widgets-base-sort.d.ts} +1 -1
  140. package/{table/index.d.ts → types/cute-widgets-base-table.d.ts} +1 -1
  141. package/{tabs/index.d.ts → types/cute-widgets-base-tabs.d.ts} +35 -14
  142. package/{tree/index.d.ts → types/cute-widgets-base-tree.d.ts} +2 -2
  143. package/collapse/index.d.ts +0 -97
  144. /package/{alert/index.d.ts → types/cute-widgets-base-alert.d.ts} +0 -0
  145. /package/{card/index.d.ts → types/cute-widgets-base-card.d.ts} +0 -0
  146. /package/{core/animation/index.d.ts → types/cute-widgets-base-core-animation.d.ts} +0 -0
  147. /package/{core/datetime/index.d.ts → types/cute-widgets-base-core-datetime.d.ts} +0 -0
  148. /package/{core/directives/index.d.ts → types/cute-widgets-base-core-directives.d.ts} +0 -0
  149. /package/{core/error/index.d.ts → types/cute-widgets-base-core-error.d.ts} +0 -0
  150. /package/{core/interfaces/index.d.ts → types/cute-widgets-base-core-interfaces.d.ts} +0 -0
  151. /package/{core/line/index.d.ts → types/cute-widgets-base-core-line.d.ts} +0 -0
  152. /package/{core/pipes/index.d.ts → types/cute-widgets-base-core-pipes.d.ts} +0 -0
  153. /package/{core/ripple/index.d.ts → types/cute-widgets-base-core-ripple.d.ts} +0 -0
  154. /package/{core/testing/index.d.ts → types/cute-widgets-base-core-testing.d.ts} +0 -0
  155. /package/{core/theming/index.d.ts → types/cute-widgets-base-core-theming.d.ts} +0 -0
  156. /package/{core/types/index.d.ts → types/cute-widgets-base-core-types.d.ts} +0 -0
  157. /package/{core/utils/index.d.ts → types/cute-widgets-base-core-utils.d.ts} +0 -0
  158. /package/{divider/index.d.ts → types/cute-widgets-base-divider.d.ts} +0 -0
  159. /package/{grid-list/index.d.ts → types/cute-widgets-base-grid-list.d.ts} +0 -0
  160. /package/{layout/container/index.d.ts → types/cute-widgets-base-layout-container.d.ts} +0 -0
  161. /package/{layout/stack/index.d.ts → types/cute-widgets-base-layout-stack.d.ts} +0 -0
  162. /package/{layout/index.d.ts → types/cute-widgets-base-layout.d.ts} +0 -0
  163. /package/{list/index.d.ts → types/cute-widgets-base-list.d.ts} +0 -0
  164. /package/{select/index.d.ts → types/cute-widgets-base-select.d.ts} +0 -0
  165. /package/{slider/index.d.ts → types/cute-widgets-base-slider.d.ts} +0 -0
  166. /package/{spinner/index.d.ts → types/cute-widgets-base-spinner.d.ts} +0 -0
  167. /package/{stepper/index.d.ts → types/cute-widgets-base-stepper.d.ts} +0 -0
  168. /package/{timepicker/index.d.ts → types/cute-widgets-base-timepicker.d.ts} +0 -0
  169. /package/{toolbar/index.d.ts → types/cute-widgets-base-toolbar.d.ts} +0 -0
  170. /package/{tooltip/index.d.ts → types/cute-widgets-base-tooltip.d.ts} +0 -0
  171. /package/{index.d.ts → types/cute-widgets-base.d.ts} +0 -0
@@ -136,12 +136,12 @@ class CuteSnackBarConfig {
136
136
  */
137
137
  /** Directive that should be applied to the element containing the snack bar's header elements. */
138
138
  class CuteSnackBarHeader {
139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBarHeader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: CuteSnackBarHeader, isStandalone: true, selector: "cute-snack-bar-header", host: { classAttribute: "cute-snack-bar-header toast-header" }, ngImport: i0, template: `
139
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBarHeader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
140
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CuteSnackBarHeader, isStandalone: true, selector: "cute-snack-bar-header", host: { classAttribute: "cute-snack-bar-header toast-header" }, ngImport: i0, template: `
141
141
  <ng-content></ng-content>
142
142
  `, isInline: true, styles: [".cute-snack-bar-header{display:flex}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
143
143
  }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBarHeader, decorators: [{
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBarHeader, decorators: [{
145
145
  type: Component,
146
146
  args: [{ selector: 'cute-snack-bar-header', template: `
147
147
  <ng-content></ng-content>
@@ -151,10 +151,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
151
151
  }] });
152
152
  /** Directive that should be applied to the element containing the snack bar's body elements. */
153
153
  class CuteSnackBarBody {
154
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBarBody, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
155
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteSnackBarBody, isStandalone: true, selector: "[cuteSnackBarBody]", host: { classAttribute: "cute-snack-bar-body toast-body user-select-none" }, ngImport: i0 }); }
154
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBarBody, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
155
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: CuteSnackBarBody, isStandalone: true, selector: "[cuteSnackBarBody]", host: { classAttribute: "cute-snack-bar-body toast-body user-select-none" }, ngImport: i0 }); }
156
156
  }
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBarBody, decorators: [{
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBarBody, decorators: [{
158
158
  type: Directive,
159
159
  args: [{
160
160
  selector: `[cuteSnackBarBody]`,
@@ -165,10 +165,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
165
165
  }] });
166
166
  /** Directive that should be applied to the text element to be rendered in the snack bar. */
167
167
  class CuteSnackBarLabel {
168
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBarLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
169
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteSnackBarLabel, isStandalone: true, selector: "[cuteSnackBarLabel]", host: { classAttribute: "cute-snack-bar-label" }, ngImport: i0 }); }
168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBarLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
169
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: CuteSnackBarLabel, isStandalone: true, selector: "[cuteSnackBarLabel]", host: { classAttribute: "cute-snack-bar-label" }, ngImport: i0 }); }
170
170
  }
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBarLabel, decorators: [{
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBarLabel, decorators: [{
172
172
  type: Directive,
173
173
  args: [{
174
174
  selector: `[cuteSnackBarLabel]`,
@@ -179,10 +179,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
179
179
  }] });
180
180
  /** Directive that should be applied to the element containing the snack bar's action buttons. */
181
181
  class CuteSnackBarActions {
182
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBarActions, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
183
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteSnackBarActions, isStandalone: true, selector: "[cuteSnackBarActions]", host: { classAttribute: "cute-snack-bar-actions" }, ngImport: i0 }); }
182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBarActions, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
183
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: CuteSnackBarActions, isStandalone: true, selector: "[cuteSnackBarActions]", host: { classAttribute: "cute-snack-bar-actions" }, ngImport: i0 }); }
184
184
  }
185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBarActions, decorators: [{
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBarActions, decorators: [{
186
186
  type: Directive,
187
187
  args: [{
188
188
  selector: `[cuteSnackBarActions]`,
@@ -193,10 +193,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
193
193
  }] });
194
194
  /** Directive that should be applied to each of the snack bar's action buttons. */
195
195
  class CuteSnackBarAction {
196
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBarAction, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
197
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteSnackBarAction, isStandalone: true, selector: "[cuteSnackBarAction]", host: { classAttribute: "cute-snack-bar-action" }, ngImport: i0 }); }
196
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBarAction, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
197
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: CuteSnackBarAction, isStandalone: true, selector: "[cuteSnackBarAction]", host: { classAttribute: "cute-snack-bar-action" }, ngImport: i0 }); }
198
198
  }
199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBarAction, decorators: [{
199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBarAction, decorators: [{
200
200
  type: Directive,
201
201
  args: [{
202
202
  selector: `[cuteSnackBarAction]`,
@@ -236,10 +236,10 @@ class SimpleSnackBar extends CuteLayoutControl {
236
236
  get hasAction() {
237
237
  return !!this.data.action;
238
238
  }
239
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SimpleSnackBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
240
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: SimpleSnackBar, isStandalone: true, selector: "simple-snack-bar", host: { properties: { "attr.id": "id || null" }, classAttribute: "cute-simple-snack-bar" }, exportAs: ["cuteSnackBar"], usesInheritance: true, ngImport: i0, template: "<div cuteSnackBarBody>\r\n <div cuteSnackBarLabel>\r\n {{data.message}}\r\n </div>\r\n</div>\r\n\r\n<div class=\"cute-simple-snack-bar__buttons\">\r\n @if (hasAction) {\r\n <div cuteSnackBarActions>\r\n <button cuteSnackBarAction\r\n cuteButton=\"flat-button\"\r\n [color]=\"color ? color : 'secondary'\"\r\n magnitude=\"small\"\r\n (click)=\"action()\">\r\n {{data.action}}\r\n </button>\r\n </div>\r\n }\r\n @if (config.dismissible) {\r\n <button cuteSnackBarAction\r\n cuteButton=\"close-button\"\r\n magnitude=\"smaller\"\r\n aria-label=\"Close\"\r\n (click)=\"snackBarRef.dismiss()\">\r\n </button>\r\n<!-- i18n-aria-label=\"@@SnackBar.Close\"-->\r\n }\r\n</div>\r\n", styles: [".cute-simple-snack-bar{display:flex;position:relative;align-items:center;justify-content:space-between}.cute-simple-snack-bar .cute-simple-snack-bar__buttons{display:flex;align-items:center;gap:4px;margin-right:var(--bs-toast-padding-x)}\n"], dependencies: [{ kind: "component", type: CuteButton, selector: "button[cuteButton], button[cute-button], a[cuteButton], a[cute-button], ", exportAs: ["cuteButton"] }, { kind: "directive", type: CuteSnackBarLabel, selector: "[cuteSnackBarLabel]" }, { kind: "directive", type: CuteSnackBarActions, selector: "[cuteSnackBarActions]" }, { kind: "directive", type: CuteSnackBarAction, selector: "[cuteSnackBarAction]" }, { kind: "directive", type: CuteSnackBarBody, selector: "[cuteSnackBarBody]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
239
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SimpleSnackBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
240
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: SimpleSnackBar, isStandalone: true, selector: "simple-snack-bar", host: { properties: { "attr.id": "id || null" }, classAttribute: "cute-simple-snack-bar" }, exportAs: ["cuteSnackBar"], usesInheritance: true, ngImport: i0, template: "<div cuteSnackBarBody>\r\n <div cuteSnackBarLabel>\r\n {{data.message}}\r\n </div>\r\n</div>\r\n\r\n<div class=\"cute-simple-snack-bar__buttons\">\r\n @if (hasAction) {\r\n <div cuteSnackBarActions>\r\n <button cuteSnackBarAction\r\n cuteButton=\"flat-button\"\r\n [color]=\"color ? color : 'secondary'\"\r\n magnitude=\"small\"\r\n (click)=\"action()\">\r\n {{data.action}}\r\n </button>\r\n </div>\r\n }\r\n @if (config.dismissible) {\r\n <button cuteSnackBarAction\r\n cuteButton=\"close-button\"\r\n magnitude=\"smaller\"\r\n aria-label=\"Close\"\r\n (click)=\"snackBarRef.dismiss()\">\r\n </button>\r\n<!-- i18n-aria-label=\"@@SnackBar.Close\"-->\r\n }\r\n</div>\r\n", styles: [".cute-simple-snack-bar{display:flex;position:relative;align-items:center;justify-content:space-between}.cute-simple-snack-bar .cute-simple-snack-bar__buttons{display:flex;align-items:center;gap:4px;margin-right:var(--bs-toast-padding-x)}\n"], dependencies: [{ kind: "component", type: CuteButton, selector: "button[cuteButton], button[cute-button], a[cuteButton], a[cute-button], ", exportAs: ["cuteButton"] }, { kind: "directive", type: CuteSnackBarLabel, selector: "[cuteSnackBarLabel]" }, { kind: "directive", type: CuteSnackBarActions, selector: "[cuteSnackBarActions]" }, { kind: "directive", type: CuteSnackBarAction, selector: "[cuteSnackBarAction]" }, { kind: "directive", type: CuteSnackBarBody, selector: "[cuteSnackBarBody]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
241
241
  }
242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SimpleSnackBar, decorators: [{
242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SimpleSnackBar, decorators: [{
243
243
  type: Component,
244
244
  args: [{ selector: 'simple-snack-bar', exportAs: 'cuteSnackBar', host: {
245
245
  'class': 'cute-simple-snack-bar',
@@ -542,10 +542,10 @@ class CuteSnackBarContainer extends BasePortalOutlet {
542
542
  }, this._announceDelay);
543
543
  });
544
544
  }
545
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBarContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
546
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: CuteSnackBarContainer, isStandalone: true, selector: "cute-snack-bar-container", host: { listeners: { "animationend": "onAnimationEnd($event.animationName)", "animationcancel": "onAnimationEnd($event.animationName)" }, properties: { "attr.data-bs-theme": "isLightTheme() ? \"dark\" : \"light\"", "class.cute-snack-bar-container-enter": "_animationState === \"visible\"", "class.cute-snack-bar-container-exit": "_animationState === \"hidden\"", "class.cute-snack-bar-container-animations-enabled": "!_animationsDisabled" }, classAttribute: "cute-snack-bar-container toast-container" }, viewQueries: [{ propertyName: "_portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }, { propertyName: "_label", first: true, predicate: ["label"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<!--\r\n This outer label wrapper will have the class `mdc-snackbar__label` applied if\r\n the attached template/component does not contain it.\r\n -->\r\n<!--<div class=\"cute-snack-bar-label\" #label>-->\r\n <!-- Initially holds the snack bar content, will be empty after announcing to screen readers. -->\r\n <div aria-hidden=\"true\">\r\n <ng-template cdkPortalOutlet />\r\n </div>\r\n\r\n <!-- Will receive the snack bar content from the non-live div, move will happen a short delay after opening -->\r\n <div\r\n [attr.aria-live]=\"_live\"\r\n [attr.role]=\"_role\"\r\n [attr.id]=\"_liveElementId\">\r\n </div>\r\n<!--</div>-->\r\n", styles: [".cute-snack-bar-container{display:flex;justify-content:center}.cute-snack-bar-container.toast-container{position:relative;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:.5rem}.cute-snack-bar-handset .cute-snack-bar-container.toast-container{width:100vw}.cute-snack-bar-container.toast-container .toast{--bs-toast-color: var(--bs-body-color);--bs-toast-bg: rgba(var(--bs-body-bg-rgb), .95)}.cute-snack-bar-container.toast-container .toast:has(.toast-header){flex-direction:column;align-items:normal}.cute-snack-bar-body{display:flex;flex-direction:column}.cute-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.cute-snack-bar-container-animations-enabled{opacity:0}.cute-snack-bar-container-animations-enabled.cute-snack-bar-fallback-visible{opacity:1}.cute-snack-bar-container-animations-enabled.cute-snack-bar-container-enter{animation:_cute-snack-bar-enter .15s cubic-bezier(0,0,.2,1) forwards}.cute-snack-bar-container-animations-enabled.cute-snack-bar-container-exit{animation:_cute-snack-bar-exit 75ms cubic-bezier(.4,0,1,1) forwards}@keyframes _cute-snack-bar-enter{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:.95}}@keyframes _cute-snack-bar-exit{0%{opacity:.95}to{opacity:0}}\n"], dependencies: [{ kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
545
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBarContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
546
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CuteSnackBarContainer, isStandalone: true, selector: "cute-snack-bar-container", host: { listeners: { "animationend": "onAnimationEnd($event.animationName)", "animationcancel": "onAnimationEnd($event.animationName)" }, properties: { "attr.data-bs-theme": "isLightTheme() ? \"dark\" : \"light\"", "class.cute-snack-bar-container-enter": "_animationState === \"visible\"", "class.cute-snack-bar-container-exit": "_animationState === \"hidden\"", "class.cute-snack-bar-container-animations-enabled": "!_animationsDisabled" }, classAttribute: "cute-snack-bar-container toast-container" }, viewQueries: [{ propertyName: "_portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }, { propertyName: "_label", first: true, predicate: ["label"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<!--\r\n This outer label wrapper will have the class `mdc-snackbar__label` applied if\r\n the attached template/component does not contain it.\r\n -->\r\n<!--<div class=\"cute-snack-bar-label\" #label>-->\r\n <!-- Initially holds the snack bar content, will be empty after announcing to screen readers. -->\r\n <div aria-hidden=\"true\">\r\n <ng-template cdkPortalOutlet />\r\n </div>\r\n\r\n <!-- Will receive the snack bar content from the non-live div, move will happen a short delay after opening -->\r\n <div\r\n [attr.aria-live]=\"_live\"\r\n [attr.role]=\"_role\"\r\n [attr.id]=\"_liveElementId\">\r\n </div>\r\n<!--</div>-->\r\n", styles: [".cute-snack-bar-container{display:flex;justify-content:center}.cute-snack-bar-container.toast-container{position:relative;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:.5rem}.cute-snack-bar-handset .cute-snack-bar-container.toast-container{width:100vw}.cute-snack-bar-container.toast-container .toast{--bs-toast-color: var(--bs-body-color);--bs-toast-bg: rgba(var(--bs-body-bg-rgb), .95)}.cute-snack-bar-container.toast-container .toast:has(.toast-header){flex-direction:column;align-items:normal}.cute-snack-bar-body{display:flex;flex-direction:column}.cute-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.cute-snack-bar-container-animations-enabled{opacity:0}.cute-snack-bar-container-animations-enabled.cute-snack-bar-fallback-visible{opacity:1}.cute-snack-bar-container-animations-enabled.cute-snack-bar-container-enter{animation:_cute-snack-bar-enter .15s cubic-bezier(0,0,.2,1) forwards}.cute-snack-bar-container-animations-enabled.cute-snack-bar-container-exit{animation:_cute-snack-bar-exit 75ms cubic-bezier(.4,0,1,1) forwards}@keyframes _cute-snack-bar-enter{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:.95}}@keyframes _cute-snack-bar-exit{0%{opacity:.95}to{opacity:0}}\n"], dependencies: [{ kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
547
547
  }
548
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBarContainer, decorators: [{
548
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBarContainer, decorators: [{
549
549
  type: Component,
550
550
  args: [{ selector: 'cute-snack-bar-container', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, imports: [CdkPortalOutlet], host: {
551
551
  'class': 'cute-snack-bar-container toast-container',
@@ -829,10 +829,10 @@ class CuteSnackBar {
829
829
  ],
830
830
  });
831
831
  }
832
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBar, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
833
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBar, providedIn: 'root' }); }
832
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBar, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
833
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBar, providedIn: 'root' }); }
834
834
  }
835
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackBar, decorators: [{
835
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackBar, decorators: [{
836
836
  type: Injectable,
837
837
  args: [{ providedIn: 'root' }]
838
838
  }], ctorParameters: () => [] });
@@ -865,8 +865,8 @@ const TYPES = [
865
865
  CuteSnackBarLabel,
866
866
  ];
867
867
  class CuteSnackbarModule {
868
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
869
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackbarModule, imports: [CommonModule, SimpleSnackBar, CuteSnackBarContainer,
868
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
869
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackbarModule, imports: [CommonModule, SimpleSnackBar, CuteSnackBarContainer,
870
870
  CuteSnackBarActions,
871
871
  CuteSnackBarAction,
872
872
  CuteSnackBarBody,
@@ -877,9 +877,9 @@ class CuteSnackbarModule {
877
877
  CuteSnackBarBody,
878
878
  CuteSnackBarHeader,
879
879
  CuteSnackBarLabel] }); }
880
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackbarModule, providers: [CuteSnackBar], imports: [CommonModule, SimpleSnackBar] }); }
880
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackbarModule, providers: [CuteSnackBar], imports: [CommonModule, SimpleSnackBar] }); }
881
881
  }
882
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteSnackbarModule, decorators: [{
882
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteSnackbarModule, decorators: [{
883
883
  type: NgModule,
884
884
  args: [{
885
885
  imports: [CommonModule, SimpleSnackBar, ...TYPES],
@@ -1 +1 @@
1
- {"version":3,"file":"cute-widgets-base-snack-bar.mjs","sources":["../../../../projects/cute-widgets/base/snack-bar/src/snack-bar-ref.ts","../../../../projects/cute-widgets/base/snack-bar/src/snack-bar-config.ts","../../../../projects/cute-widgets/base/snack-bar/src/snack-bar-content.ts","../../../../projects/cute-widgets/base/snack-bar/src/simple-snack-bar.ts","../../../../projects/cute-widgets/base/snack-bar/src/simple-snack-bar.html","../../../../projects/cute-widgets/base/snack-bar/src/snack-bar-container.ts","../../../../projects/cute-widgets/base/snack-bar/src/snack-bar-container.html","../../../../projects/cute-widgets/base/snack-bar/src/snack-bar.service.ts","../../../../projects/cute-widgets/base/snack-bar/src/snack-bar.module.ts","../../../../projects/cute-widgets/base/snack-bar/cute-widgets-base-snack-bar.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {OverlayRef} from '@angular/cdk/overlay';\r\nimport {Observable, Subject} from 'rxjs';\r\nimport {CuteSnackBarContainer} from './snack-bar-container';\r\n\r\n/** Event that is emitted when a snack bar is dismissed. */\r\nexport interface CuteSnackBarDismiss {\r\n /** Whether the snack bar was dismissed using the action button. */\r\n dismissedByAction: boolean;\r\n}\r\n\r\n/** Maximum number of milliseconds that can be passed into setTimeout. */\r\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\r\n\r\n/**\r\n * Reference to a snack bar dispatched from the snack bar service.\r\n */\r\nexport class CuteSnackBarRef<T> {\r\n /** The instance of the component making up the content of the snack bar. */\r\n instance: T | undefined;\r\n\r\n /** The instance of the component making up the content of the snack bar. */\r\n containerInstance: CuteSnackBarContainer;\r\n\r\n /** Subject for notifying the user that the snack bar has been dismissed. */\r\n private readonly _afterDismissed = new Subject<CuteSnackBarDismiss>();\r\n\r\n /** Subject for notifying the user that the snack bar has opened and appeared. */\r\n private readonly _afterOpened = new Subject<void>();\r\n\r\n /** Subject for notifying the user that the snack bar action was called. */\r\n private readonly _onAction = new Subject<void>();\r\n\r\n /**\r\n * Timeout ID for the duration setTimeout call. Used to clear the timeout if the snackbar is\r\n * dismissed before the duration passes.\r\n */\r\n private _durationTimeoutId: number | undefined;\r\n\r\n /** Whether the snack bar was dismissed using the action button. */\r\n private _dismissedByAction = false;\r\n\r\n constructor(\r\n containerInstance: CuteSnackBarContainer,\r\n private _overlayRef: OverlayRef,\r\n ) {\r\n this.containerInstance = containerInstance;\r\n containerInstance._onExit.subscribe(() => this._finishDismiss());\r\n }\r\n\r\n /** Dismisses the snack bar. */\r\n dismiss(): void {\r\n if (!this._afterDismissed.closed) {\r\n this.containerInstance.exit();\r\n }\r\n clearTimeout(this._durationTimeoutId);\r\n }\r\n\r\n /** Marks the snackbar action clicked. */\r\n dismissWithAction(): void {\r\n if (!this._onAction.closed) {\r\n this._dismissedByAction = true;\r\n this._onAction.next();\r\n this._onAction.complete();\r\n this.dismiss();\r\n }\r\n clearTimeout(this._durationTimeoutId);\r\n }\r\n\r\n /** Dismisses the snack bar after some duration */\r\n _dismissAfter(duration: number): void {\r\n // Note that we need to cap the duration to the maximum value for setTimeout, because\r\n // it'll revert to 1 if somebody passes in something greater (e.g. `Infinity`). See #17234.\r\n this._durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\r\n }\r\n\r\n /** Marks the snackbar as opened */\r\n _open(): void {\r\n if (!this._afterOpened.closed) {\r\n this._afterOpened.next();\r\n this._afterOpened.complete();\r\n }\r\n }\r\n\r\n /** Cleans up the DOM after closing. */\r\n private _finishDismiss(): void {\r\n this._overlayRef.dispose();\r\n\r\n if (!this._onAction.closed) {\r\n this._onAction.complete();\r\n }\r\n\r\n this._afterDismissed.next({dismissedByAction: this._dismissedByAction});\r\n this._afterDismissed.complete();\r\n this._dismissedByAction = false;\r\n }\r\n\r\n /** Gets an observable notified when the snack bar is finished closing. */\r\n afterDismissed(): Observable<CuteSnackBarDismiss> {\r\n return this._afterDismissed;\r\n }\r\n\r\n /** Gets an observable notified when the snack bar has opened and appeared. */\r\n afterOpened(): Observable<void> {\r\n return this.containerInstance._onEnter;\r\n }\r\n\r\n /** Gets an observable notified when the snack bar action is called. */\r\n onAction(): Observable<void> {\r\n return this._onAction;\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {ViewContainerRef, InjectionToken} from '@angular/core';\r\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\r\nimport {Direction} from '@angular/cdk/bidi';\r\nimport {RichThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\r\nexport const CUTE_SNACK_BAR_DATA = new InjectionToken<any>('CuteSnackBarData');\r\n\r\n/** Possible values for horizontalPosition on CuteSnackBarConfig. */\r\nexport type CuteSnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\r\n\r\n/** Possible values for verticalPosition on CuteSnackBarConfig. */\r\nexport type CuteSnackBarVerticalPosition = 'top' | 'bottom';\r\n\r\n/**\r\n * Configuration used when opening a snack-bar.\r\n */\r\nexport class CuteSnackBarConfig<D = any> {\r\n /** The politeness level for the LiveAnnouncer announcement. */\r\n politeness?: AriaLivePoliteness = 'assertive';\r\n\r\n /**\r\n * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\r\n * component or template, the announcement message will default to the specified message.\r\n */\r\n announcementMessage?: string = '';\r\n\r\n /**\r\n * The view container that serves as the parent for the snackbar for the purposes of dependency\r\n * injection. Note: this does not affect where the snackbar is inserted in the DOM.\r\n */\r\n viewContainerRef?: ViewContainerRef;\r\n\r\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\r\n duration?: number = 0;\r\n\r\n /** Extra CSS classes to be added to the snack bar container. */\r\n panelClass?: string | string[];\r\n\r\n /** Text layout direction for the snack bar. */\r\n direction?: Direction;\r\n\r\n /** Data being injected into the child component. */\r\n data?: D | null = null;\r\n\r\n /** The horizontal position to place the snack bar. */\r\n horizontalPosition?: CuteSnackBarHorizontalPosition = 'center';\r\n\r\n /** The vertical position to place the snack bar. */\r\n verticalPosition?: CuteSnackBarVerticalPosition = 'bottom';\r\n\r\n /** Theme color for the snack bar. */\r\n color?: RichThemeColor;\r\n\r\n /** Adds a linear gradient as background image to the backgrounds */\r\n gradientFill?: boolean;\r\n\r\n /** Whether the user can dismiss the snack bar by clicking close button. */\r\n dismissible?: boolean;\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {ChangeDetectionStrategy, Component, Directive, ViewEncapsulation} from '@angular/core';\r\n\r\n\r\n/** Directive that should be applied to the element containing the snack bar's header elements. */\r\n@Component({\r\n selector: 'cute-snack-bar-header',\r\n template: `\r\n <ng-content></ng-content>\r\n `,\r\n styles: `\r\n .cute-snack-bar-header {\r\n display: flex;\r\n }\r\n `,\r\n host: {\r\n 'class': 'cute-snack-bar-header toast-header',\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CuteSnackBarHeader {}\r\n\r\n/** Directive that should be applied to the element containing the snack bar's body elements. */\r\n@Directive({\r\n selector: `[cuteSnackBarBody]`,\r\n host: {\r\n 'class': 'cute-snack-bar-body toast-body user-select-none',\r\n },\r\n})\r\nexport class CuteSnackBarBody {}\r\n\r\n\r\n/** Directive that should be applied to the text element to be rendered in the snack bar. */\r\n@Directive({\r\n selector: `[cuteSnackBarLabel]`,\r\n host: {\r\n 'class': 'cute-snack-bar-label',\r\n },\r\n})\r\nexport class CuteSnackBarLabel {}\r\n\r\n\r\n/** Directive that should be applied to the element containing the snack bar's action buttons. */\r\n@Directive({\r\n selector: `[cuteSnackBarActions]`,\r\n host: {\r\n 'class': 'cute-snack-bar-actions',\r\n },\r\n})\r\nexport class CuteSnackBarActions {}\r\n\r\n/** Directive that should be applied to each of the snack bar's action buttons. */\r\n@Directive({\r\n selector: `[cuteSnackBarAction]`,\r\n host: {\r\n 'class': 'cute-snack-bar-action',\r\n },\r\n})\r\nexport class CuteSnackBarAction {}\r\n\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {ChangeDetectionStrategy, Component, inject, ViewEncapsulation} from '@angular/core';\r\nimport {CuteButton} from '@cute-widgets/base/button';\r\nimport {CuteSnackBarRef} from './snack-bar-ref';\r\nimport {CUTE_SNACK_BAR_DATA, CuteSnackBarConfig} from './snack-bar-config';\r\nimport {CuteSnackBarAction, CuteSnackBarActions, CuteSnackBarBody, CuteSnackBarLabel} from './snack-bar-content';\r\nimport {CuteLayoutControl} from \"@cute-widgets/base/abstract\";\r\n\r\nlet uniqueID = 0;\r\n\r\n/**\r\n * Interface for a simple snack bar component that has a message and a single action.\r\n */\r\nexport interface TextOnlySnackBar {\r\n data: {message: string; action: string};\r\n snackBarRef: CuteSnackBarRef<TextOnlySnackBar>;\r\n action: () => void;\r\n hasAction: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'simple-snack-bar',\r\n templateUrl: './simple-snack-bar.html',\r\n styleUrls: ['./simple-snack-bar.scss'],\r\n exportAs: 'cuteSnackBar',\r\n host: {\r\n 'class': 'cute-simple-snack-bar',\r\n '[attr.id]': 'id || null',\r\n },\r\n imports: [CuteButton, CuteSnackBarLabel, CuteSnackBarActions, CuteSnackBarAction, CuteSnackBarBody],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SimpleSnackBar extends CuteLayoutControl implements TextOnlySnackBar {\r\n snackBarRef = inject<CuteSnackBarRef<SimpleSnackBar>>(CuteSnackBarRef);\r\n data = inject(CUTE_SNACK_BAR_DATA);\r\n\r\n protected readonly config: CuteSnackBarConfig;\r\n\r\n constructor(...args: unknown[]);\r\n constructor() {\r\n super();\r\n this.config = this.snackBarRef.containerInstance.snackBarConfig;\r\n }\r\n\r\n protected override generateId(): string {\r\n return `cute-simple-snack-bar-${uniqueID++}`;\r\n }\r\n\r\n /** Performs the action on the snack bar. */\r\n action(): void {\r\n this.snackBarRef.dismissWithAction();\r\n }\r\n\r\n /** If the action button should be shown. */\r\n get hasAction(): boolean {\r\n return !!this.data.action;\r\n }\r\n}\r\n","<div cuteSnackBarBody>\r\n <div cuteSnackBarLabel>\r\n {{data.message}}\r\n </div>\r\n</div>\r\n\r\n<div class=\"cute-simple-snack-bar__buttons\">\r\n @if (hasAction) {\r\n <div cuteSnackBarActions>\r\n <button cuteSnackBarAction\r\n cuteButton=\"flat-button\"\r\n [color]=\"color ? color : 'secondary'\"\r\n magnitude=\"small\"\r\n (click)=\"action()\">\r\n {{data.action}}\r\n </button>\r\n </div>\r\n }\r\n @if (config.dismissible) {\r\n <button cuteSnackBarAction\r\n cuteButton=\"close-button\"\r\n magnitude=\"smaller\"\r\n aria-label=\"Close\"\r\n (click)=\"snackBarRef.dismiss()\">\r\n </button>\r\n<!-- i18n-aria-label=\"@@SnackBar.Close\"-->\r\n }\r\n</div>\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ComponentRef,\r\n ElementRef,\r\n EmbeddedViewRef,\r\n inject, isDevMode,\r\n NgZone,\r\n OnDestroy,\r\n ViewChild,\r\n ViewEncapsulation,\r\n DOCUMENT, signal, WritableSignal, OnInit, Injector, afterNextRender\r\n} from '@angular/core';\r\n\r\nimport {\r\n BasePortalOutlet,\r\n CdkPortalOutlet,\r\n ComponentPortal,\r\n DomPortal,\r\n TemplatePortal,\r\n} from '@angular/cdk/portal';\r\nimport {Observable, of, Subject} from 'rxjs';\r\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\r\nimport {Platform} from '@angular/cdk/platform';\r\nimport {CuteSnackBarConfig} from './snack-bar-config';\r\nimport {CuteThemeService} from '@cute-widgets/base/core';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {_animationsDisabled} from '@cute-widgets/base/core/animation';\r\n\r\nconst ENTER_ANIMATION = '_cute-snack-bar-enter';\r\nconst EXIT_ANIMATION = '_cute-snack-bar-exit';\r\n\r\nlet uniqueId = 0;\r\n\r\n/**\r\n * Internal component that wraps user-provided snack bar content.\r\n */\r\n@Component({\r\n selector: 'cute-snack-bar-container',\r\n templateUrl: './snack-bar-container.html',\r\n styleUrls: ['./snack-bar-container.scss'],\r\n // In Ivy, embedded views will be change detected from their declaration place, rather than\r\n // where they were stamped out. This means that we can't have the snack bar container be OnPush,\r\n // because it might cause snack bars that were opened from a template not to be out of date.\r\n // tslint:disable-next-line:validate-decorators\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [CdkPortalOutlet],\r\n host: {\r\n 'class': 'cute-snack-bar-container toast-container',\r\n '[attr.data-bs-theme]': 'isLightTheme() ? \"dark\" : \"light\"',\r\n '[class.cute-snack-bar-container-enter]': '_animationState === \"visible\"',\r\n '[class.cute-snack-bar-container-exit]': '_animationState === \"hidden\"',\r\n '[class.cute-snack-bar-container-animations-enabled]': '!_animationsDisabled',\r\n '(animationend)': 'onAnimationEnd($event.animationName)',\r\n '(animationcancel)': 'onAnimationEnd($event.animationName)', }\r\n})\r\nexport class CuteSnackBarContainer extends BasePortalOutlet implements OnDestroy {\r\n private _ngZone = inject(NgZone);\r\n readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _platform = inject(Platform);\r\n protected _animationsDisabled = _animationsDisabled();\r\n snackBarConfig = inject(CuteSnackBarConfig);\r\n\r\n private _document = inject(DOCUMENT);\r\n private _themeService = inject(CuteThemeService);\r\n private _trackedModals = new Set<Element>();\r\n private _enterFallback: ReturnType<typeof setTimeout> | undefined;\r\n private _exitFallback: ReturnType<typeof setTimeout> | undefined;\r\n private _injector = inject(Injector);\r\n\r\n protected isLightTheme: WritableSignal<boolean>\r\n\r\n /** The number of milliseconds to wait before announcing the snack bar's content. */\r\n private readonly _announceDelay: number = 150;\r\n\r\n /** The timeout for announcing the snack bar's content. */\r\n private _announceTimeoutId: number = 0;\r\n\r\n /** Whether the component has been destroyed. */\r\n private _destroyed = false;\r\n\r\n /** The portal outlet inside this container into which the snack bar content will be loaded. */\r\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet!: CdkPortalOutlet;\r\n\r\n /** Subject for notifying that the snack bar has announced to screen readers. */\r\n readonly _onAnnounce: Subject<void> = new Subject();\r\n\r\n /** Subject for notifying that the snack bar has exited from view. */\r\n readonly _onExit: Subject<void> = new Subject();\r\n\r\n /** Subject for notifying that the snack bar has finished entering the view. */\r\n readonly _onEnter: Subject<void> = new Subject();\r\n\r\n /** The state of the snack bar animations. */\r\n _animationState = 'void';\r\n\r\n /** aria-live value for the live region. */\r\n _live: AriaLivePoliteness;\r\n\r\n /**\r\n * Element that will have the `cute-snackbar__label` class applied if the attached component\r\n * or template does not have it. This ensures that the appropriate structure, typography, and\r\n * color are applied to the attached view.\r\n */\r\n @ViewChild('label', {static: true}) _label: ElementRef | undefined;\r\n\r\n /**\r\n * Role of the live region. This is only for Firefox as there is a known issue where Firefox +\r\n * JAWS does not read out an aria-live message.\r\n */\r\n _role?: 'status' | 'alert';\r\n\r\n /** Unique ID of the aria-live element. */\r\n readonly _liveElementId = `cute-snack-bar-container-live-${uniqueId++}`;\r\n\r\n constructor(...args: unknown[]);\r\n constructor() {\r\n super();\r\n const config = this.snackBarConfig;\r\n\r\n // Use aria-live rather than a live role like 'alert' or 'status'\r\n // because NVDA and JAWS have show inconsistent behavior with live roles.\r\n if (config.politeness === 'assertive' && !config.announcementMessage) {\r\n this._live = 'assertive';\r\n } else if (config.politeness === 'off') {\r\n this._live = 'off';\r\n } else {\r\n this._live = 'polite';\r\n }\r\n\r\n // Only set a role for Firefox. Set role based on aria-live because setting role=\"alert\" implies\r\n // aria-live=\"assertive\" which may cause issues if aria-live is set to \"polite\" above.\r\n if (this._platform.FIREFOX) {\r\n if (this._live === 'polite') {\r\n this._role = 'status';\r\n }\r\n if (this._live === 'assertive') {\r\n this._role = 'alert';\r\n }\r\n }\r\n\r\n this.isLightTheme = signal(this._themeService.isLightTheme());\r\n\r\n this._themeService.change\r\n .pipe(takeUntilDestroyed())\r\n .subscribe(event => {\r\n this.isLightTheme.set( !event.matches );\r\n });\r\n }\r\n\r\n /** Attach a component portal as content to this snack bar container. */\r\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\r\n this._assertNotAttached();\r\n const result = this._portalOutlet.attachComponentPortal(portal);\r\n this._afterPortalAttached();\r\n return result;\r\n }\r\n\r\n /** Attach a template portal as content to this snack bar container. */\r\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\r\n this._assertNotAttached();\r\n const result = this._portalOutlet.attachTemplatePortal(portal);\r\n this._afterPortalAttached();\r\n return result;\r\n }\r\n\r\n /**\r\n * Attaches a DOM portal to the snack bar container.\r\n * @deprecated To be turned into a method.\r\n * @breaking-change 10.0.0\r\n */\r\n override attachDomPortal = (portal: DomPortal) => {\r\n this._assertNotAttached();\r\n const result = this._portalOutlet.attachDomPortal(portal);\r\n this._afterPortalAttached();\r\n return result;\r\n };\r\n\r\n /** Handle end of animations, updating the state of the snackbar. */\r\n onAnimationEnd(animationName: string) {\r\n if (animationName === EXIT_ANIMATION) {\r\n this._completeExit();\r\n } else if (animationName === ENTER_ANIMATION) {\r\n clearTimeout(this._enterFallback);\r\n this._ngZone.run(() => {\r\n this._onEnter.next();\r\n this._onEnter.complete();\r\n });\r\n }\r\n }\r\n\r\n /** Begin animation of snack bar entrance into view. */\r\n enter(): void {\r\n if (!this._destroyed) {\r\n this._animationState = 'visible';\r\n // _animationState lives in host bindings and `detectChanges` does not refresh host bindings\r\n // so we have to call `markForCheck` to ensure the host view is refreshed eventually.\r\n this._changeDetectorRef.markForCheck();\r\n this._changeDetectorRef.detectChanges();\r\n this._screenReaderAnnounce();\r\n\r\n if (this._animationsDisabled) {\r\n afterNextRender(\r\n () => {\r\n this._ngZone.run(() => queueMicrotask(() => this.onAnimationEnd(ENTER_ANIMATION)));\r\n },\r\n {injector: this._injector},\r\n );\r\n } else {\r\n clearTimeout(this._enterFallback);\r\n this._enterFallback = setTimeout(() => {\r\n // The snack bar will stay invisible if it fails to animate. Add a fallback class so it\r\n // becomes visible. This can happen in some apps that do `* {animation: none !important}`.\r\n this._elementRef.nativeElement.classList.add('mat-snack-bar-fallback-visible');\r\n this.onAnimationEnd(ENTER_ANIMATION);\r\n }, 200);\r\n }\r\n }\r\n }\r\n\r\n /** Begin animation of the snack bar exiting from view. */\r\n exit(): Observable<void> {\r\n if (this._destroyed) {\r\n return of(undefined);\r\n }\r\n\r\n // It's common for snack bars to be opened by random outside calls like HTTP requests or\r\n // errors. Run inside the NgZone to ensure that it functions correctly.\r\n this._ngZone.run(() => {\r\n // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\r\n // where multiple snack bars are opened in quick succession (e.g., two consecutive calls to\r\n // `CuteSnackBar.open`).\r\n this._animationState = 'hidden';\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Mark this element with an 'exit' attribute to indicate that the snackbar has\r\n // been dismissed and will soon be removed from the DOM. This is used by the snackbar\r\n // test harness.\r\n this._elementRef.nativeElement.setAttribute('cute-exit', '');\r\n\r\n // If the snack bar hasn't been announced by the time it exits, it wouldn't have been open\r\n // long enough to visually read it too, so clear the timeout for announcing.\r\n clearTimeout(this._announceTimeoutId);\r\n\r\n if (this._animationsDisabled) {\r\n afterNextRender(\r\n () => {\r\n this._ngZone.run(() => queueMicrotask(() => this.onAnimationEnd(EXIT_ANIMATION)));\r\n },\r\n {injector: this._injector},\r\n );\r\n } else {\r\n clearTimeout(this._exitFallback);\r\n this._exitFallback = setTimeout(() => this.onAnimationEnd(EXIT_ANIMATION), 200);\r\n }\r\n });\r\n\r\n return this._onExit;\r\n }\r\n\r\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\r\n ngOnDestroy() {\r\n this._destroyed = true;\r\n this._clearFromModals();\r\n this._completeExit();\r\n }\r\n\r\n /**\r\n * Removes the element in a microtask. Helps prevent errors where we end up\r\n * removing an element which is in the middle of an animation.\r\n */\r\n private _completeExit() {\r\n clearTimeout(this._exitFallback);\r\n queueMicrotask(() => {\r\n this._onExit.next();\r\n this._onExit.complete();\r\n });\r\n }\r\n\r\n /**\r\n * Called after the portal contents have been attached. Can be\r\n * used to modify the DOM once it's guaranteed to be in place.\r\n */\r\n private _afterPortalAttached() {\r\n const element: HTMLElement = this._elementRef.nativeElement;\r\n const panelClasses = this.snackBarConfig.panelClass;\r\n\r\n if (panelClasses) {\r\n if (Array.isArray(panelClasses)) {\r\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\r\n panelClasses.forEach(cssClass => element.classList.add(cssClass));\r\n } else {\r\n element.classList.add(panelClasses);\r\n }\r\n }\r\n this._exposeToModals();\r\n\r\n // Check to see if the attached component or template uses the MDC template structure,\r\n // specifically the MDC label. If not, the container should apply the MDC label class to this\r\n // component's label container, which will apply MDC's label styles to the attached view.\r\n // if (this._label) {\r\n // const label = this._label.nativeElement;\r\n // const labelClass = 'cute-snackbar__label';\r\n // label.classList.toggle(labelClass, !label.querySelector(`.${labelClass}`));\r\n // }\r\n }\r\n\r\n /**\r\n * Some browsers won't expose the accessibility node of the live element if there is an\r\n * `aria-modal` and the live element is outside of it. This method works around the issue by\r\n * pointing the `aria-owns` of all modals to the live element.\r\n */\r\n private _exposeToModals() {\r\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with the\r\n // `LiveAnnouncer` and any other usages.\r\n //\r\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\r\n // section of the DOM we need to look through. This should cover all the cases we support, but\r\n // the selector can be expanded if it turns out to be too narrow.\r\n const id = this._liveElementId;\r\n const modals = this._document.querySelectorAll(\r\n 'body > .cdk-overlay-container [aria-modal=\"true\"]',\r\n );\r\n\r\n for (let i = 0; i < modals.length; i++) {\r\n const modal = modals[i];\r\n const ariaOwns = modal.getAttribute('aria-owns');\r\n this._trackedModals.add(modal);\r\n\r\n if (!ariaOwns) {\r\n modal.setAttribute('aria-owns', id);\r\n } else if (ariaOwns.indexOf(id) === -1) {\r\n modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\r\n }\r\n }\r\n }\r\n\r\n /** Clears the references to the live element from any modals it was added to. */\r\n private _clearFromModals() {\r\n this._trackedModals.forEach(modal => {\r\n const ariaOwns = modal.getAttribute('aria-owns');\r\n\r\n if (ariaOwns) {\r\n const newValue = ariaOwns.replace(this._liveElementId, '').trim();\r\n\r\n if (newValue.length > 0) {\r\n modal.setAttribute('aria-owns', newValue);\r\n } else {\r\n modal.removeAttribute('aria-owns');\r\n }\r\n }\r\n });\r\n this._trackedModals.clear();\r\n }\r\n\r\n /** Asserts that no content is already attached to the container. */\r\n private _assertNotAttached() {\r\n if (this._portalOutlet.hasAttached() && isDevMode()) {\r\n throw Error('Attempting to attach snack bar content after content is already attached');\r\n }\r\n }\r\n\r\n /**\r\n * Starts a timeout to move the snack bar content to the live region so screen readers will\r\n * announce it.\r\n */\r\n private _screenReaderAnnounce() {\r\n if (this._announceTimeoutId) {\r\n return;\r\n }\r\n\r\n this._ngZone.runOutsideAngular(() => {\r\n this._announceTimeoutId = setTimeout(() => {\r\n if (this._destroyed) {\r\n return;\r\n }\r\n\r\n const element = this._elementRef.nativeElement;\r\n const inertElement = element.querySelector('[aria-hidden]');\r\n const liveElement = element.querySelector('[aria-live]');\r\n\r\n if (inertElement && liveElement) {\r\n // If an element in the snack bar content is focused before being moved\r\n // track it and restore focus after moving to the live region.\r\n let focusedElement: HTMLElement | null = null;\r\n if (\r\n this._platform.isBrowser &&\r\n document.activeElement instanceof HTMLElement &&\r\n inertElement.contains(document.activeElement)\r\n ) {\r\n focusedElement = document.activeElement;\r\n }\r\n\r\n inertElement.removeAttribute('aria-hidden');\r\n liveElement.appendChild(inertElement);\r\n focusedElement?.focus();\r\n\r\n this._onAnnounce.next();\r\n this._onAnnounce.complete();\r\n }\r\n }, this._announceDelay);\r\n });\r\n }\r\n}\r\n","<!--\r\n This outer label wrapper will have the class `mdc-snackbar__label` applied if\r\n the attached template/component does not contain it.\r\n -->\r\n<!--<div class=\"cute-snack-bar-label\" #label>-->\r\n <!-- Initially holds the snack bar content, will be empty after announcing to screen readers. -->\r\n <div aria-hidden=\"true\">\r\n <ng-template cdkPortalOutlet />\r\n </div>\r\n\r\n <!-- Will receive the snack bar content from the non-live div, move will happen a short delay after opening -->\r\n <div\r\n [attr.aria-live]=\"_live\"\r\n [attr.role]=\"_role\"\r\n [attr.id]=\"_liveElementId\">\r\n </div>\r\n<!--</div>-->\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {LiveAnnouncer} from '@angular/cdk/a11y';\r\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\r\nimport {ComponentType, Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\r\nimport {\r\n ComponentRef, DestroyRef, ElementRef,\r\n EmbeddedViewRef, inject,\r\n Injectable,\r\n InjectionToken,\r\n Injector,\r\n OnDestroy,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport {SimpleSnackBar, TextOnlySnackBar} from './simple-snack-bar';\r\nimport {CuteSnackBarContainer} from './snack-bar-container';\r\nimport {CUTE_SNACK_BAR_DATA, CuteSnackBarConfig} from './snack-bar-config';\r\nimport {CuteSnackBarRef} from './snack-bar-ref';\r\nimport {ComponentPortal, TemplatePortal} from '@angular/cdk/portal';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {CuteBaseControl} from \"@cute-widgets/base/abstract\";\r\nimport {toTextBgCssClass} from \"@cute-widgets/base/core\";\r\nimport {_animationsDisabled} from '@cute-widgets/base/core/animation';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\n\r\n/** Injection token that can be used to specify the default snack bar. */\r\nexport const CUTE_SNACK_BAR_DEFAULT_OPTIONS = new InjectionToken<CuteSnackBarConfig>(\r\n 'cute-snack-bar-default-options',\r\n {\r\n providedIn: 'root',\r\n factory: () => new CuteSnackBarConfig(),\r\n },\r\n);\r\n\r\n/**\r\n * Service to dispatch Cute snack bar messages.\r\n */\r\n@Injectable({providedIn: 'root'})\r\nexport class CuteSnackBar implements OnDestroy {\r\n private _live = inject(LiveAnnouncer);\r\n private _injector = inject(Injector);\r\n private _overlay = inject(Overlay);\r\n private _breakpointObserver = inject(BreakpointObserver);\r\n private _parentSnackBar = inject(CuteSnackBar, {optional: true, skipSelf: true});\r\n private _defaultConfig = inject<CuteSnackBarConfig>(CUTE_SNACK_BAR_DEFAULT_OPTIONS);\r\n private _animationsDisabled = _animationsDisabled();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n /**\r\n * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\r\n * If there is a parent snack-bar service, all operations should delegate to that parent\r\n * via `_openedSnackBarRef`.\r\n */\r\n private _snackBarRefAtThisLevel: CuteSnackBarRef<any> | null = null;\r\n\r\n /** The component that should be rendered as the snack bar's simple component. */\r\n private _simpleSnackBarComponent = SimpleSnackBar;\r\n\r\n /** The container component that attaches the provided template or component. */\r\n snackBarContainerComponent = CuteSnackBarContainer;\r\n\r\n /** The CSS class to apply for handset mode. */\r\n handsetCssClass = 'cute-snack-bar-handset';\r\n\r\n /** Reference to the currently opened snackbar at *any* level. */\r\n get _openedSnackBarRef(): CuteSnackBarRef<any> | null {\r\n const parent = this._parentSnackBar;\r\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\r\n }\r\n\r\n set _openedSnackBarRef(value: CuteSnackBarRef<any> | null) {\r\n if (this._parentSnackBar) {\r\n this._parentSnackBar._openedSnackBarRef = value;\r\n } else {\r\n this._snackBarRefAtThisLevel = value;\r\n }\r\n }\r\n\r\n constructor(...args: unknown[]);\r\n constructor() {}\r\n\r\n /**\r\n * Creates and dispatches a snack bar with a custom component for the content, removing any\r\n * currently opened snack bars.\r\n *\r\n * @param component Component to be instantiated.\r\n * @param config Extra configuration for the snack bar.\r\n */\r\n openFromComponent<T, D = any>(\r\n component: ComponentType<T>,\r\n config?: CuteSnackBarConfig<D>,\r\n ): CuteSnackBarRef<T> {\r\n return this._attach(component, config) as CuteSnackBarRef<T>;\r\n }\r\n\r\n /**\r\n * Creates and dispatches a snack bar with a custom template for the content, removing any\r\n * currently opened snack bars.\r\n *\r\n * @param template Template to be instantiated.\r\n * @param config Extra configuration for the snack bar.\r\n */\r\n openFromTemplate(\r\n template: TemplateRef<any>,\r\n config?: CuteSnackBarConfig,\r\n ): CuteSnackBarRef<EmbeddedViewRef<any>> {\r\n return this._attach(template, config);\r\n }\r\n\r\n /**\r\n * Opens a snackbar with a message and an optional action.\r\n * @param message The message to show in the snackbar.\r\n * @param action The label for the snackbar action.\r\n * @param config Additional configuration options for the snackbar.\r\n */\r\n open(\r\n message: string,\r\n action: string = '',\r\n config?: CuteSnackBarConfig,\r\n ): CuteSnackBarRef<TextOnlySnackBar> {\r\n const _config: CuteSnackBarConfig = {...this._defaultConfig, ...config};\r\n\r\n // Since the user doesn't have access to the component, we can\r\n // override the data to pass in our own message and action.\r\n _config.data = {message, action};\r\n\r\n // Since the snack bar has `role=\"alert\"`, we don't\r\n // want to announce the same message twice.\r\n if (_config.announcementMessage === message) {\r\n _config.announcementMessage = undefined;\r\n }\r\n\r\n return this.openFromComponent(this._simpleSnackBarComponent, _config);\r\n }\r\n\r\n /**\r\n * Dismisses the currently visible snack bar.\r\n */\r\n dismiss(): void {\r\n if (this._openedSnackBarRef) {\r\n this._openedSnackBarRef.dismiss();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // Only dismiss the snack bar at the current level on destroy.\r\n if (this._snackBarRefAtThisLevel) {\r\n this._snackBarRefAtThisLevel.dismiss();\r\n }\r\n }\r\n\r\n /**\r\n * Attaches the snack bar container component to the overlay.\r\n */\r\n private _attachSnackBarContainer(\r\n overlayRef: OverlayRef,\r\n config: CuteSnackBarConfig,\r\n ): CuteSnackBarContainer {\r\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\r\n const injector = Injector.create({\r\n parent: userInjector || this._injector,\r\n providers: [{provide: CuteSnackBarConfig, useValue: config}],\r\n });\r\n\r\n const containerPortal = new ComponentPortal(\r\n this.snackBarContainerComponent,\r\n config.viewContainerRef,\r\n injector,\r\n );\r\n const containerRef: ComponentRef<CuteSnackBarContainer> = overlayRef.attach(containerPortal);\r\n containerRef.instance.snackBarConfig = config;\r\n return containerRef.instance;\r\n }\r\n\r\n /**\r\n * Places a new component or a template as the content of the snack bar container.\r\n */\r\n private _attach<T>(\r\n content: ComponentType<T> | TemplateRef<T>,\r\n userConfig?: CuteSnackBarConfig,\r\n ): CuteSnackBarRef<T | EmbeddedViewRef<any>> {\r\n const config = {...new CuteSnackBarConfig(), ...this._defaultConfig, ...userConfig};\r\n\r\n const overlayRef = this._createOverlay(config);\r\n const container = this._attachSnackBarContainer(overlayRef, config);\r\n const snackBarRef = new CuteSnackBarRef<T | EmbeddedViewRef<any>>(container, overlayRef);\r\n\r\n let attachedElement: ElementRef;\r\n\r\n if (content instanceof TemplateRef) {\r\n const portal = new TemplatePortal(content, null!, {\r\n $implicit: config.data,\r\n snackBarRef,\r\n } as any);\r\n\r\n snackBarRef.instance = container.attachTemplatePortal(portal);\r\n attachedElement = snackBarRef.instance.rootNodes[0];\r\n } else {\r\n const injector = this._createInjector(config, snackBarRef);\r\n const portal = new ComponentPortal(content, undefined, injector);\r\n const contentRef = container.attachComponentPortal<T>(portal);\r\n\r\n // We can't pass this through the injector because the injector was created earlier\r\n snackBarRef.instance = contentRef.instance;\r\n if (snackBarRef.instance instanceof CuteBaseControl) {\r\n const baseControl = snackBarRef.instance as CuteBaseControl;\r\n baseControl.color = config.color;\r\n baseControl.gradientFill = config.gradientFill || false;\r\n }\r\n\r\n attachedElement = contentRef.location;\r\n }\r\n\r\n // CWT: Adding Bootstrap's classes dynamically\r\n const cssClasses = [\"toast\", \"show\"];\r\n if (config.color) {\r\n //cssClasses.push(\"text-bg-\"+config.color);\r\n cssClasses.push( toTextBgCssClass(config.color) );\r\n }\r\n if (config.gradientFill) {\r\n cssClasses.push(\"bg-gradient\");\r\n }\r\n addClasses(attachedElement.nativeElement, cssClasses);\r\n\r\n // Subscribe to the breakpoint observer and attach the cute-snack-bar-handset class as\r\n // appropriate. This class is applied to the overlay element because the overlay must expand to\r\n // fill the width with the screen for full width snackbars.\r\n this._breakpointObserver\r\n .observe(Breakpoints.HandsetPortrait)\r\n .pipe(takeUntil(overlayRef.detachments()))\r\n .subscribe(state => {\r\n overlayRef.overlayElement.classList.toggle(this.handsetCssClass, state.matches);\r\n });\r\n\r\n if (config.announcementMessage) {\r\n // Wait until the snack bar contents have been announced, then deliver this message.\r\n container._onAnnounce.subscribe(() => {\r\n this._live.announce(config.announcementMessage!, config.politeness);\r\n });\r\n }\r\n\r\n this._animateSnackBar(snackBarRef, config);\r\n this._openedSnackBarRef = snackBarRef;\r\n return this._openedSnackBarRef;\r\n }\r\n\r\n /** Animates the old snack bar out and the new one in. */\r\n private _animateSnackBar(snackBarRef: CuteSnackBarRef<any>, config: CuteSnackBarConfig) {\r\n // When the snackbar is dismissed, clear the reference to it.\r\n snackBarRef.afterDismissed()\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\r\n if (this._openedSnackBarRef == snackBarRef) {\r\n this._openedSnackBarRef = null;\r\n }\r\n\r\n if (config.announcementMessage) {\r\n this._live.clear();\r\n }\r\n });\r\n\r\n // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\r\n if (config.duration && config.duration > 0) {\r\n snackBarRef.afterOpened()\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => snackBarRef._dismissAfter(config.duration!));\r\n }\r\n\r\n if (this._openedSnackBarRef) {\r\n // If a snack bar is already in view, dismiss it and enter the\r\n // new snack bar after exit animation is complete.\r\n this._openedSnackBarRef.afterDismissed()\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n snackBarRef.containerInstance.enter();\r\n });\r\n this._openedSnackBarRef.dismiss();\r\n } else {\r\n // If no snack bar is in view, enter the new snack bar.\r\n snackBarRef.containerInstance.enter();\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new overlay and places it in the correct location.\r\n * @param config The user-specified snack bar config.\r\n */\r\n private _createOverlay(config: CuteSnackBarConfig): OverlayRef {\r\n const overlayConfig = new OverlayConfig();\r\n overlayConfig.direction = config.direction;\r\n\r\n let positionStrategy = this._overlay.position().global();\r\n // Set horizontal position.\r\n const isRtl = config.direction === 'rtl';\r\n const isLeft =\r\n config.horizontalPosition === 'left' ||\r\n (config.horizontalPosition === 'start' && !isRtl) ||\r\n (config.horizontalPosition === 'end' && isRtl);\r\n const isRight = !isLeft && config.horizontalPosition !== 'center';\r\n const OFFSET = '0';\r\n if (isLeft) {\r\n positionStrategy.left(OFFSET);\r\n } else if (isRight) {\r\n positionStrategy.right(OFFSET);\r\n } else {\r\n positionStrategy.centerHorizontally();\r\n }\r\n // Set horizontal position.\r\n if (config.verticalPosition === 'top') {\r\n positionStrategy.top(OFFSET);\r\n } else {\r\n positionStrategy.bottom(OFFSET);\r\n }\r\n\r\n overlayConfig.positionStrategy = positionStrategy;\r\n overlayConfig.disableAnimations = this._animationsDisabled;\r\n return this._overlay.create(overlayConfig);\r\n }\r\n\r\n /**\r\n * Creates an injector to be used inside of a snack bar component.\r\n * @param config Config that was used to create the snack bar.\r\n * @param snackBarRef Reference to the snack bar.\r\n */\r\n private _createInjector<T>(config: CuteSnackBarConfig, snackBarRef: CuteSnackBarRef<T>): Injector {\r\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\r\n\r\n return Injector.create({\r\n parent: userInjector || this._injector,\r\n providers: [\r\n {provide: CuteSnackBarRef, useValue: snackBarRef},\r\n {provide: CUTE_SNACK_BAR_DATA, useValue: config.data},\r\n ],\r\n });\r\n }\r\n}\r\n\r\n\r\nfunction addClasses(element: HTMLElement, classes: string|string[]): void {\r\n if (classes) {\r\n if (Array.isArray(classes)) {\r\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\r\n classes.forEach(cssClass => element.classList.add(cssClass));\r\n } else {\r\n element.classList.add(classes);\r\n }\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {SimpleSnackBar} from \"./simple-snack-bar\";\r\nimport {\r\n CuteSnackBarAction,\r\n CuteSnackBarActions,\r\n CuteSnackBarBody,\r\n CuteSnackBarHeader,\r\n CuteSnackBarLabel\r\n} from \"./snack-bar-content\";\r\nimport {CuteSnackBarContainer} from \"./snack-bar-container\";\r\nimport {CuteSnackBar} from './snack-bar.service';\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteSnackBarContainer,\r\n CuteSnackBarActions,\r\n CuteSnackBarAction,\r\n CuteSnackBarBody,\r\n CuteSnackBarHeader,\r\n CuteSnackBarLabel,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, SimpleSnackBar, ...TYPES],\r\n exports: TYPES,\r\n providers: [CuteSnackBar],\r\n declarations: [],\r\n})\r\nexport class CuteSnackbarModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cute-widgets-base-snack-bar.mjs","sources":["../../../../projects/cute-widgets/base/snack-bar/src/snack-bar-ref.ts","../../../../projects/cute-widgets/base/snack-bar/src/snack-bar-config.ts","../../../../projects/cute-widgets/base/snack-bar/src/snack-bar-content.ts","../../../../projects/cute-widgets/base/snack-bar/src/simple-snack-bar.ts","../../../../projects/cute-widgets/base/snack-bar/src/simple-snack-bar.html","../../../../projects/cute-widgets/base/snack-bar/src/snack-bar-container.ts","../../../../projects/cute-widgets/base/snack-bar/src/snack-bar-container.html","../../../../projects/cute-widgets/base/snack-bar/src/snack-bar.service.ts","../../../../projects/cute-widgets/base/snack-bar/src/snack-bar.module.ts","../../../../projects/cute-widgets/base/snack-bar/cute-widgets-base-snack-bar.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {OverlayRef} from '@angular/cdk/overlay';\r\nimport {Observable, Subject} from 'rxjs';\r\nimport {CuteSnackBarContainer} from './snack-bar-container';\r\n\r\n/** Event that is emitted when a snack bar is dismissed. */\r\nexport interface CuteSnackBarDismiss {\r\n /** Whether the snack bar was dismissed using the action button. */\r\n dismissedByAction: boolean;\r\n}\r\n\r\n/** Maximum number of milliseconds that can be passed into setTimeout. */\r\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\r\n\r\n/**\r\n * Reference to a snack bar dispatched from the snack bar service.\r\n */\r\nexport class CuteSnackBarRef<T> {\r\n /** The instance of the component making up the content of the snack bar. */\r\n instance: T | undefined;\r\n\r\n /** The instance of the component making up the content of the snack bar. */\r\n containerInstance: CuteSnackBarContainer;\r\n\r\n /** Subject for notifying the user that the snack bar has been dismissed. */\r\n private readonly _afterDismissed = new Subject<CuteSnackBarDismiss>();\r\n\r\n /** Subject for notifying the user that the snack bar has opened and appeared. */\r\n private readonly _afterOpened = new Subject<void>();\r\n\r\n /** Subject for notifying the user that the snack bar action was called. */\r\n private readonly _onAction = new Subject<void>();\r\n\r\n /**\r\n * Timeout ID for the duration setTimeout call. Used to clear the timeout if the snackbar is\r\n * dismissed before the duration passes.\r\n */\r\n private _durationTimeoutId: number | undefined;\r\n\r\n /** Whether the snack bar was dismissed using the action button. */\r\n private _dismissedByAction = false;\r\n\r\n constructor(\r\n containerInstance: CuteSnackBarContainer,\r\n private _overlayRef: OverlayRef,\r\n ) {\r\n this.containerInstance = containerInstance;\r\n containerInstance._onExit.subscribe(() => this._finishDismiss());\r\n }\r\n\r\n /** Dismisses the snack bar. */\r\n dismiss(): void {\r\n if (!this._afterDismissed.closed) {\r\n this.containerInstance.exit();\r\n }\r\n clearTimeout(this._durationTimeoutId);\r\n }\r\n\r\n /** Marks the snackbar action clicked. */\r\n dismissWithAction(): void {\r\n if (!this._onAction.closed) {\r\n this._dismissedByAction = true;\r\n this._onAction.next();\r\n this._onAction.complete();\r\n this.dismiss();\r\n }\r\n clearTimeout(this._durationTimeoutId);\r\n }\r\n\r\n /** Dismisses the snack bar after some duration */\r\n _dismissAfter(duration: number): void {\r\n // Note that we need to cap the duration to the maximum value for setTimeout, because\r\n // it'll revert to 1 if somebody passes in something greater (e.g. `Infinity`). See #17234.\r\n this._durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\r\n }\r\n\r\n /** Marks the snackbar as opened */\r\n _open(): void {\r\n if (!this._afterOpened.closed) {\r\n this._afterOpened.next();\r\n this._afterOpened.complete();\r\n }\r\n }\r\n\r\n /** Cleans up the DOM after closing. */\r\n private _finishDismiss(): void {\r\n this._overlayRef.dispose();\r\n\r\n if (!this._onAction.closed) {\r\n this._onAction.complete();\r\n }\r\n\r\n this._afterDismissed.next({dismissedByAction: this._dismissedByAction});\r\n this._afterDismissed.complete();\r\n this._dismissedByAction = false;\r\n }\r\n\r\n /** Gets an observable notified when the snack bar is finished closing. */\r\n afterDismissed(): Observable<CuteSnackBarDismiss> {\r\n return this._afterDismissed;\r\n }\r\n\r\n /** Gets an observable notified when the snack bar has opened and appeared. */\r\n afterOpened(): Observable<void> {\r\n return this.containerInstance._onEnter;\r\n }\r\n\r\n /** Gets an observable notified when the snack bar action is called. */\r\n onAction(): Observable<void> {\r\n return this._onAction;\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {ViewContainerRef, InjectionToken} from '@angular/core';\r\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\r\nimport {Direction} from '@angular/cdk/bidi';\r\nimport {RichThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\r\nexport const CUTE_SNACK_BAR_DATA = new InjectionToken<any>('CuteSnackBarData');\r\n\r\n/** Possible values for horizontalPosition on CuteSnackBarConfig. */\r\nexport type CuteSnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\r\n\r\n/** Possible values for verticalPosition on CuteSnackBarConfig. */\r\nexport type CuteSnackBarVerticalPosition = 'top' | 'bottom';\r\n\r\n/**\r\n * Configuration used when opening a snack-bar.\r\n */\r\nexport class CuteSnackBarConfig<D = any> {\r\n /** The politeness level for the LiveAnnouncer announcement. */\r\n politeness?: AriaLivePoliteness = 'assertive';\r\n\r\n /**\r\n * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\r\n * component or template, the announcement message will default to the specified message.\r\n */\r\n announcementMessage?: string = '';\r\n\r\n /**\r\n * The view container that serves as the parent for the snackbar for the purposes of dependency\r\n * injection. Note: this does not affect where the snackbar is inserted in the DOM.\r\n */\r\n viewContainerRef?: ViewContainerRef;\r\n\r\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\r\n duration?: number = 0;\r\n\r\n /** Extra CSS classes to be added to the snack bar container. */\r\n panelClass?: string | string[];\r\n\r\n /** Text layout direction for the snack bar. */\r\n direction?: Direction;\r\n\r\n /** Data being injected into the child component. */\r\n data?: D | null = null;\r\n\r\n /** The horizontal position to place the snack bar. */\r\n horizontalPosition?: CuteSnackBarHorizontalPosition = 'center';\r\n\r\n /** The vertical position to place the snack bar. */\r\n verticalPosition?: CuteSnackBarVerticalPosition = 'bottom';\r\n\r\n /** Theme color for the snack bar. */\r\n color?: RichThemeColor;\r\n\r\n /** Adds a linear gradient as background image to the backgrounds */\r\n gradientFill?: boolean;\r\n\r\n /** Whether the user can dismiss the snack bar by clicking close button. */\r\n dismissible?: boolean;\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {ChangeDetectionStrategy, Component, Directive, ViewEncapsulation} from '@angular/core';\r\n\r\n\r\n/** Directive that should be applied to the element containing the snack bar's header elements. */\r\n@Component({\r\n selector: 'cute-snack-bar-header',\r\n template: `\r\n <ng-content></ng-content>\r\n `,\r\n styles: `\r\n .cute-snack-bar-header {\r\n display: flex;\r\n }\r\n `,\r\n host: {\r\n 'class': 'cute-snack-bar-header toast-header',\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CuteSnackBarHeader {}\r\n\r\n/** Directive that should be applied to the element containing the snack bar's body elements. */\r\n@Directive({\r\n selector: `[cuteSnackBarBody]`,\r\n host: {\r\n 'class': 'cute-snack-bar-body toast-body user-select-none',\r\n },\r\n})\r\nexport class CuteSnackBarBody {}\r\n\r\n\r\n/** Directive that should be applied to the text element to be rendered in the snack bar. */\r\n@Directive({\r\n selector: `[cuteSnackBarLabel]`,\r\n host: {\r\n 'class': 'cute-snack-bar-label',\r\n },\r\n})\r\nexport class CuteSnackBarLabel {}\r\n\r\n\r\n/** Directive that should be applied to the element containing the snack bar's action buttons. */\r\n@Directive({\r\n selector: `[cuteSnackBarActions]`,\r\n host: {\r\n 'class': 'cute-snack-bar-actions',\r\n },\r\n})\r\nexport class CuteSnackBarActions {}\r\n\r\n/** Directive that should be applied to each of the snack bar's action buttons. */\r\n@Directive({\r\n selector: `[cuteSnackBarAction]`,\r\n host: {\r\n 'class': 'cute-snack-bar-action',\r\n },\r\n})\r\nexport class CuteSnackBarAction {}\r\n\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {ChangeDetectionStrategy, Component, inject, ViewEncapsulation} from '@angular/core';\r\nimport {CuteButton} from '@cute-widgets/base/button';\r\nimport {CuteSnackBarRef} from './snack-bar-ref';\r\nimport {CUTE_SNACK_BAR_DATA, CuteSnackBarConfig} from './snack-bar-config';\r\nimport {CuteSnackBarAction, CuteSnackBarActions, CuteSnackBarBody, CuteSnackBarLabel} from './snack-bar-content';\r\nimport {CuteLayoutControl} from \"@cute-widgets/base/abstract\";\r\n\r\nlet uniqueID = 0;\r\n\r\n/**\r\n * Interface for a simple snack bar component that has a message and a single action.\r\n */\r\nexport interface TextOnlySnackBar {\r\n data: {message: string; action: string};\r\n snackBarRef: CuteSnackBarRef<TextOnlySnackBar>;\r\n action: () => void;\r\n hasAction: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'simple-snack-bar',\r\n templateUrl: './simple-snack-bar.html',\r\n styleUrls: ['./simple-snack-bar.scss'],\r\n exportAs: 'cuteSnackBar',\r\n host: {\r\n 'class': 'cute-simple-snack-bar',\r\n '[attr.id]': 'id || null',\r\n },\r\n imports: [CuteButton, CuteSnackBarLabel, CuteSnackBarActions, CuteSnackBarAction, CuteSnackBarBody],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SimpleSnackBar extends CuteLayoutControl implements TextOnlySnackBar {\r\n snackBarRef = inject<CuteSnackBarRef<SimpleSnackBar>>(CuteSnackBarRef);\r\n data = inject(CUTE_SNACK_BAR_DATA);\r\n\r\n protected readonly config: CuteSnackBarConfig;\r\n\r\n constructor(...args: unknown[]);\r\n constructor() {\r\n super();\r\n this.config = this.snackBarRef.containerInstance.snackBarConfig;\r\n }\r\n\r\n protected override generateId(): string {\r\n return `cute-simple-snack-bar-${uniqueID++}`;\r\n }\r\n\r\n /** Performs the action on the snack bar. */\r\n action(): void {\r\n this.snackBarRef.dismissWithAction();\r\n }\r\n\r\n /** If the action button should be shown. */\r\n get hasAction(): boolean {\r\n return !!this.data.action;\r\n }\r\n}\r\n","<div cuteSnackBarBody>\r\n <div cuteSnackBarLabel>\r\n {{data.message}}\r\n </div>\r\n</div>\r\n\r\n<div class=\"cute-simple-snack-bar__buttons\">\r\n @if (hasAction) {\r\n <div cuteSnackBarActions>\r\n <button cuteSnackBarAction\r\n cuteButton=\"flat-button\"\r\n [color]=\"color ? color : 'secondary'\"\r\n magnitude=\"small\"\r\n (click)=\"action()\">\r\n {{data.action}}\r\n </button>\r\n </div>\r\n }\r\n @if (config.dismissible) {\r\n <button cuteSnackBarAction\r\n cuteButton=\"close-button\"\r\n magnitude=\"smaller\"\r\n aria-label=\"Close\"\r\n (click)=\"snackBarRef.dismiss()\">\r\n </button>\r\n<!-- i18n-aria-label=\"@@SnackBar.Close\"-->\r\n }\r\n</div>\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ComponentRef,\r\n ElementRef,\r\n EmbeddedViewRef,\r\n inject, isDevMode,\r\n NgZone,\r\n OnDestroy,\r\n ViewChild,\r\n ViewEncapsulation,\r\n DOCUMENT, signal, WritableSignal, OnInit, Injector, afterNextRender\r\n} from '@angular/core';\r\n\r\nimport {\r\n BasePortalOutlet,\r\n CdkPortalOutlet,\r\n ComponentPortal,\r\n DomPortal,\r\n TemplatePortal,\r\n} from '@angular/cdk/portal';\r\nimport {Observable, of, Subject} from 'rxjs';\r\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\r\nimport {Platform} from '@angular/cdk/platform';\r\nimport {CuteSnackBarConfig} from './snack-bar-config';\r\nimport {CuteThemeService} from '@cute-widgets/base/core';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {_animationsDisabled} from '@cute-widgets/base/core/animation';\r\n\r\nconst ENTER_ANIMATION = '_cute-snack-bar-enter';\r\nconst EXIT_ANIMATION = '_cute-snack-bar-exit';\r\n\r\nlet uniqueId = 0;\r\n\r\n/**\r\n * Internal component that wraps user-provided snack bar content.\r\n */\r\n@Component({\r\n selector: 'cute-snack-bar-container',\r\n templateUrl: './snack-bar-container.html',\r\n styleUrls: ['./snack-bar-container.scss'],\r\n // In Ivy, embedded views will be change detected from their declaration place, rather than\r\n // where they were stamped out. This means that we can't have the snack bar container be OnPush,\r\n // because it might cause snack bars that were opened from a template not to be out of date.\r\n // tslint:disable-next-line:validate-decorators\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [CdkPortalOutlet],\r\n host: {\r\n 'class': 'cute-snack-bar-container toast-container',\r\n '[attr.data-bs-theme]': 'isLightTheme() ? \"dark\" : \"light\"',\r\n '[class.cute-snack-bar-container-enter]': '_animationState === \"visible\"',\r\n '[class.cute-snack-bar-container-exit]': '_animationState === \"hidden\"',\r\n '[class.cute-snack-bar-container-animations-enabled]': '!_animationsDisabled',\r\n '(animationend)': 'onAnimationEnd($event.animationName)',\r\n '(animationcancel)': 'onAnimationEnd($event.animationName)', }\r\n})\r\nexport class CuteSnackBarContainer extends BasePortalOutlet implements OnDestroy {\r\n private _ngZone = inject(NgZone);\r\n readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _platform = inject(Platform);\r\n protected _animationsDisabled = _animationsDisabled();\r\n snackBarConfig = inject(CuteSnackBarConfig);\r\n\r\n private _document = inject(DOCUMENT);\r\n private _themeService = inject(CuteThemeService);\r\n private _trackedModals = new Set<Element>();\r\n private _enterFallback: ReturnType<typeof setTimeout> | undefined;\r\n private _exitFallback: ReturnType<typeof setTimeout> | undefined;\r\n private _injector = inject(Injector);\r\n\r\n protected isLightTheme: WritableSignal<boolean>\r\n\r\n /** The number of milliseconds to wait before announcing the snack bar's content. */\r\n private readonly _announceDelay: number = 150;\r\n\r\n /** The timeout for announcing the snack bar's content. */\r\n private _announceTimeoutId: number = 0;\r\n\r\n /** Whether the component has been destroyed. */\r\n private _destroyed = false;\r\n\r\n /** The portal outlet inside this container into which the snack bar content will be loaded. */\r\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet!: CdkPortalOutlet;\r\n\r\n /** Subject for notifying that the snack bar has announced to screen readers. */\r\n readonly _onAnnounce: Subject<void> = new Subject();\r\n\r\n /** Subject for notifying that the snack bar has exited from view. */\r\n readonly _onExit: Subject<void> = new Subject();\r\n\r\n /** Subject for notifying that the snack bar has finished entering the view. */\r\n readonly _onEnter: Subject<void> = new Subject();\r\n\r\n /** The state of the snack bar animations. */\r\n _animationState = 'void';\r\n\r\n /** aria-live value for the live region. */\r\n _live: AriaLivePoliteness;\r\n\r\n /**\r\n * Element that will have the `cute-snackbar__label` class applied if the attached component\r\n * or template does not have it. This ensures that the appropriate structure, typography, and\r\n * color are applied to the attached view.\r\n */\r\n @ViewChild('label', {static: true}) _label: ElementRef | undefined;\r\n\r\n /**\r\n * Role of the live region. This is only for Firefox as there is a known issue where Firefox +\r\n * JAWS does not read out an aria-live message.\r\n */\r\n _role?: 'status' | 'alert';\r\n\r\n /** Unique ID of the aria-live element. */\r\n readonly _liveElementId = `cute-snack-bar-container-live-${uniqueId++}`;\r\n\r\n constructor(...args: unknown[]);\r\n constructor() {\r\n super();\r\n const config = this.snackBarConfig;\r\n\r\n // Use aria-live rather than a live role like 'alert' or 'status'\r\n // because NVDA and JAWS have show inconsistent behavior with live roles.\r\n if (config.politeness === 'assertive' && !config.announcementMessage) {\r\n this._live = 'assertive';\r\n } else if (config.politeness === 'off') {\r\n this._live = 'off';\r\n } else {\r\n this._live = 'polite';\r\n }\r\n\r\n // Only set a role for Firefox. Set role based on aria-live because setting role=\"alert\" implies\r\n // aria-live=\"assertive\" which may cause issues if aria-live is set to \"polite\" above.\r\n if (this._platform.FIREFOX) {\r\n if (this._live === 'polite') {\r\n this._role = 'status';\r\n }\r\n if (this._live === 'assertive') {\r\n this._role = 'alert';\r\n }\r\n }\r\n\r\n this.isLightTheme = signal(this._themeService.isLightTheme());\r\n\r\n this._themeService.change\r\n .pipe(takeUntilDestroyed())\r\n .subscribe(event => {\r\n this.isLightTheme.set( !event.matches );\r\n });\r\n }\r\n\r\n /** Attach a component portal as content to this snack bar container. */\r\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\r\n this._assertNotAttached();\r\n const result = this._portalOutlet.attachComponentPortal(portal);\r\n this._afterPortalAttached();\r\n return result;\r\n }\r\n\r\n /** Attach a template portal as content to this snack bar container. */\r\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\r\n this._assertNotAttached();\r\n const result = this._portalOutlet.attachTemplatePortal(portal);\r\n this._afterPortalAttached();\r\n return result;\r\n }\r\n\r\n /**\r\n * Attaches a DOM portal to the snack bar container.\r\n * @deprecated To be turned into a method.\r\n * @breaking-change 10.0.0\r\n */\r\n override attachDomPortal = (portal: DomPortal) => {\r\n this._assertNotAttached();\r\n const result = this._portalOutlet.attachDomPortal(portal);\r\n this._afterPortalAttached();\r\n return result;\r\n };\r\n\r\n /** Handle end of animations, updating the state of the snackbar. */\r\n onAnimationEnd(animationName: string) {\r\n if (animationName === EXIT_ANIMATION) {\r\n this._completeExit();\r\n } else if (animationName === ENTER_ANIMATION) {\r\n clearTimeout(this._enterFallback);\r\n this._ngZone.run(() => {\r\n this._onEnter.next();\r\n this._onEnter.complete();\r\n });\r\n }\r\n }\r\n\r\n /** Begin animation of snack bar entrance into view. */\r\n enter(): void {\r\n if (!this._destroyed) {\r\n this._animationState = 'visible';\r\n // _animationState lives in host bindings and `detectChanges` does not refresh host bindings\r\n // so we have to call `markForCheck` to ensure the host view is refreshed eventually.\r\n this._changeDetectorRef.markForCheck();\r\n this._changeDetectorRef.detectChanges();\r\n this._screenReaderAnnounce();\r\n\r\n if (this._animationsDisabled) {\r\n afterNextRender(\r\n () => {\r\n this._ngZone.run(() => queueMicrotask(() => this.onAnimationEnd(ENTER_ANIMATION)));\r\n },\r\n {injector: this._injector},\r\n );\r\n } else {\r\n clearTimeout(this._enterFallback);\r\n this._enterFallback = setTimeout(() => {\r\n // The snack bar will stay invisible if it fails to animate. Add a fallback class so it\r\n // becomes visible. This can happen in some apps that do `* {animation: none !important}`.\r\n this._elementRef.nativeElement.classList.add('mat-snack-bar-fallback-visible');\r\n this.onAnimationEnd(ENTER_ANIMATION);\r\n }, 200);\r\n }\r\n }\r\n }\r\n\r\n /** Begin animation of the snack bar exiting from view. */\r\n exit(): Observable<void> {\r\n if (this._destroyed) {\r\n return of(undefined);\r\n }\r\n\r\n // It's common for snack bars to be opened by random outside calls like HTTP requests or\r\n // errors. Run inside the NgZone to ensure that it functions correctly.\r\n this._ngZone.run(() => {\r\n // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\r\n // where multiple snack bars are opened in quick succession (e.g., two consecutive calls to\r\n // `CuteSnackBar.open`).\r\n this._animationState = 'hidden';\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Mark this element with an 'exit' attribute to indicate that the snackbar has\r\n // been dismissed and will soon be removed from the DOM. This is used by the snackbar\r\n // test harness.\r\n this._elementRef.nativeElement.setAttribute('cute-exit', '');\r\n\r\n // If the snack bar hasn't been announced by the time it exits, it wouldn't have been open\r\n // long enough to visually read it too, so clear the timeout for announcing.\r\n clearTimeout(this._announceTimeoutId);\r\n\r\n if (this._animationsDisabled) {\r\n afterNextRender(\r\n () => {\r\n this._ngZone.run(() => queueMicrotask(() => this.onAnimationEnd(EXIT_ANIMATION)));\r\n },\r\n {injector: this._injector},\r\n );\r\n } else {\r\n clearTimeout(this._exitFallback);\r\n this._exitFallback = setTimeout(() => this.onAnimationEnd(EXIT_ANIMATION), 200);\r\n }\r\n });\r\n\r\n return this._onExit;\r\n }\r\n\r\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\r\n ngOnDestroy() {\r\n this._destroyed = true;\r\n this._clearFromModals();\r\n this._completeExit();\r\n }\r\n\r\n /**\r\n * Removes the element in a microtask. Helps prevent errors where we end up\r\n * removing an element which is in the middle of an animation.\r\n */\r\n private _completeExit() {\r\n clearTimeout(this._exitFallback);\r\n queueMicrotask(() => {\r\n this._onExit.next();\r\n this._onExit.complete();\r\n });\r\n }\r\n\r\n /**\r\n * Called after the portal contents have been attached. Can be\r\n * used to modify the DOM once it's guaranteed to be in place.\r\n */\r\n private _afterPortalAttached() {\r\n const element: HTMLElement = this._elementRef.nativeElement;\r\n const panelClasses = this.snackBarConfig.panelClass;\r\n\r\n if (panelClasses) {\r\n if (Array.isArray(panelClasses)) {\r\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\r\n panelClasses.forEach(cssClass => element.classList.add(cssClass));\r\n } else {\r\n element.classList.add(panelClasses);\r\n }\r\n }\r\n this._exposeToModals();\r\n\r\n // Check to see if the attached component or template uses the MDC template structure,\r\n // specifically the MDC label. If not, the container should apply the MDC label class to this\r\n // component's label container, which will apply MDC's label styles to the attached view.\r\n // if (this._label) {\r\n // const label = this._label.nativeElement;\r\n // const labelClass = 'cute-snackbar__label';\r\n // label.classList.toggle(labelClass, !label.querySelector(`.${labelClass}`));\r\n // }\r\n }\r\n\r\n /**\r\n * Some browsers won't expose the accessibility node of the live element if there is an\r\n * `aria-modal` and the live element is outside of it. This method works around the issue by\r\n * pointing the `aria-owns` of all modals to the live element.\r\n */\r\n private _exposeToModals() {\r\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with the\r\n // `LiveAnnouncer` and any other usages.\r\n //\r\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\r\n // section of the DOM we need to look through. This should cover all the cases we support, but\r\n // the selector can be expanded if it turns out to be too narrow.\r\n const id = this._liveElementId;\r\n const modals = this._document.querySelectorAll(\r\n 'body > .cdk-overlay-container [aria-modal=\"true\"]',\r\n );\r\n\r\n for (let i = 0; i < modals.length; i++) {\r\n const modal = modals[i];\r\n const ariaOwns = modal.getAttribute('aria-owns');\r\n this._trackedModals.add(modal);\r\n\r\n if (!ariaOwns) {\r\n modal.setAttribute('aria-owns', id);\r\n } else if (ariaOwns.indexOf(id) === -1) {\r\n modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\r\n }\r\n }\r\n }\r\n\r\n /** Clears the references to the live element from any modals it was added to. */\r\n private _clearFromModals() {\r\n this._trackedModals.forEach(modal => {\r\n const ariaOwns = modal.getAttribute('aria-owns');\r\n\r\n if (ariaOwns) {\r\n const newValue = ariaOwns.replace(this._liveElementId, '').trim();\r\n\r\n if (newValue.length > 0) {\r\n modal.setAttribute('aria-owns', newValue);\r\n } else {\r\n modal.removeAttribute('aria-owns');\r\n }\r\n }\r\n });\r\n this._trackedModals.clear();\r\n }\r\n\r\n /** Asserts that no content is already attached to the container. */\r\n private _assertNotAttached() {\r\n if (this._portalOutlet.hasAttached() && isDevMode()) {\r\n throw Error('Attempting to attach snack bar content after content is already attached');\r\n }\r\n }\r\n\r\n /**\r\n * Starts a timeout to move the snack bar content to the live region so screen readers will\r\n * announce it.\r\n */\r\n private _screenReaderAnnounce() {\r\n if (this._announceTimeoutId) {\r\n return;\r\n }\r\n\r\n this._ngZone.runOutsideAngular(() => {\r\n this._announceTimeoutId = setTimeout(() => {\r\n if (this._destroyed) {\r\n return;\r\n }\r\n\r\n const element = this._elementRef.nativeElement;\r\n const inertElement = element.querySelector('[aria-hidden]');\r\n const liveElement = element.querySelector('[aria-live]');\r\n\r\n if (inertElement && liveElement) {\r\n // If an element in the snack bar content is focused before being moved\r\n // track it and restore focus after moving to the live region.\r\n let focusedElement: HTMLElement | null = null;\r\n if (\r\n this._platform.isBrowser &&\r\n document.activeElement instanceof HTMLElement &&\r\n inertElement.contains(document.activeElement)\r\n ) {\r\n focusedElement = document.activeElement;\r\n }\r\n\r\n inertElement.removeAttribute('aria-hidden');\r\n liveElement.appendChild(inertElement);\r\n focusedElement?.focus();\r\n\r\n this._onAnnounce.next();\r\n this._onAnnounce.complete();\r\n }\r\n }, this._announceDelay);\r\n });\r\n }\r\n}\r\n","<!--\r\n This outer label wrapper will have the class `mdc-snackbar__label` applied if\r\n the attached template/component does not contain it.\r\n -->\r\n<!--<div class=\"cute-snack-bar-label\" #label>-->\r\n <!-- Initially holds the snack bar content, will be empty after announcing to screen readers. -->\r\n <div aria-hidden=\"true\">\r\n <ng-template cdkPortalOutlet />\r\n </div>\r\n\r\n <!-- Will receive the snack bar content from the non-live div, move will happen a short delay after opening -->\r\n <div\r\n [attr.aria-live]=\"_live\"\r\n [attr.role]=\"_role\"\r\n [attr.id]=\"_liveElementId\">\r\n </div>\r\n<!--</div>-->\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {LiveAnnouncer} from '@angular/cdk/a11y';\r\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\r\nimport {ComponentType, Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\r\nimport {\r\n ComponentRef, DestroyRef, ElementRef,\r\n EmbeddedViewRef, inject,\r\n Injectable,\r\n InjectionToken,\r\n Injector,\r\n OnDestroy,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport {SimpleSnackBar, TextOnlySnackBar} from './simple-snack-bar';\r\nimport {CuteSnackBarContainer} from './snack-bar-container';\r\nimport {CUTE_SNACK_BAR_DATA, CuteSnackBarConfig} from './snack-bar-config';\r\nimport {CuteSnackBarRef} from './snack-bar-ref';\r\nimport {ComponentPortal, TemplatePortal} from '@angular/cdk/portal';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {CuteBaseControl} from \"@cute-widgets/base/abstract\";\r\nimport {toTextBgCssClass} from \"@cute-widgets/base/core\";\r\nimport {_animationsDisabled} from '@cute-widgets/base/core/animation';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\n\r\n/** Injection token that can be used to specify the default snack bar. */\r\nexport const CUTE_SNACK_BAR_DEFAULT_OPTIONS = new InjectionToken<CuteSnackBarConfig>(\r\n 'cute-snack-bar-default-options',\r\n {\r\n providedIn: 'root',\r\n factory: () => new CuteSnackBarConfig(),\r\n },\r\n);\r\n\r\n/**\r\n * Service to dispatch Cute snack bar messages.\r\n */\r\n@Injectable({providedIn: 'root'})\r\nexport class CuteSnackBar implements OnDestroy {\r\n private _live = inject(LiveAnnouncer);\r\n private _injector = inject(Injector);\r\n private _overlay = inject(Overlay);\r\n private _breakpointObserver = inject(BreakpointObserver);\r\n private _parentSnackBar = inject(CuteSnackBar, {optional: true, skipSelf: true});\r\n private _defaultConfig = inject<CuteSnackBarConfig>(CUTE_SNACK_BAR_DEFAULT_OPTIONS);\r\n private _animationsDisabled = _animationsDisabled();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n /**\r\n * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\r\n * If there is a parent snack-bar service, all operations should delegate to that parent\r\n * via `_openedSnackBarRef`.\r\n */\r\n private _snackBarRefAtThisLevel: CuteSnackBarRef<any> | null = null;\r\n\r\n /** The component that should be rendered as the snack bar's simple component. */\r\n private _simpleSnackBarComponent = SimpleSnackBar;\r\n\r\n /** The container component that attaches the provided template or component. */\r\n snackBarContainerComponent = CuteSnackBarContainer;\r\n\r\n /** The CSS class to apply for handset mode. */\r\n handsetCssClass = 'cute-snack-bar-handset';\r\n\r\n /** Reference to the currently opened snackbar at *any* level. */\r\n get _openedSnackBarRef(): CuteSnackBarRef<any> | null {\r\n const parent = this._parentSnackBar;\r\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\r\n }\r\n\r\n set _openedSnackBarRef(value: CuteSnackBarRef<any> | null) {\r\n if (this._parentSnackBar) {\r\n this._parentSnackBar._openedSnackBarRef = value;\r\n } else {\r\n this._snackBarRefAtThisLevel = value;\r\n }\r\n }\r\n\r\n constructor(...args: unknown[]);\r\n constructor() {}\r\n\r\n /**\r\n * Creates and dispatches a snack bar with a custom component for the content, removing any\r\n * currently opened snack bars.\r\n *\r\n * @param component Component to be instantiated.\r\n * @param config Extra configuration for the snack bar.\r\n */\r\n openFromComponent<T, D = any>(\r\n component: ComponentType<T>,\r\n config?: CuteSnackBarConfig<D>,\r\n ): CuteSnackBarRef<T> {\r\n return this._attach(component, config) as CuteSnackBarRef<T>;\r\n }\r\n\r\n /**\r\n * Creates and dispatches a snack bar with a custom template for the content, removing any\r\n * currently opened snack bars.\r\n *\r\n * @param template Template to be instantiated.\r\n * @param config Extra configuration for the snack bar.\r\n */\r\n openFromTemplate(\r\n template: TemplateRef<any>,\r\n config?: CuteSnackBarConfig,\r\n ): CuteSnackBarRef<EmbeddedViewRef<any>> {\r\n return this._attach(template, config);\r\n }\r\n\r\n /**\r\n * Opens a snackbar with a message and an optional action.\r\n * @param message The message to show in the snackbar.\r\n * @param action The label for the snackbar action.\r\n * @param config Additional configuration options for the snackbar.\r\n */\r\n open(\r\n message: string,\r\n action: string = '',\r\n config?: CuteSnackBarConfig,\r\n ): CuteSnackBarRef<TextOnlySnackBar> {\r\n const _config: CuteSnackBarConfig = {...this._defaultConfig, ...config};\r\n\r\n // Since the user doesn't have access to the component, we can\r\n // override the data to pass in our own message and action.\r\n _config.data = {message, action};\r\n\r\n // Since the snack bar has `role=\"alert\"`, we don't\r\n // want to announce the same message twice.\r\n if (_config.announcementMessage === message) {\r\n _config.announcementMessage = undefined;\r\n }\r\n\r\n return this.openFromComponent(this._simpleSnackBarComponent, _config);\r\n }\r\n\r\n /**\r\n * Dismisses the currently visible snack bar.\r\n */\r\n dismiss(): void {\r\n if (this._openedSnackBarRef) {\r\n this._openedSnackBarRef.dismiss();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // Only dismiss the snack bar at the current level on destroy.\r\n if (this._snackBarRefAtThisLevel) {\r\n this._snackBarRefAtThisLevel.dismiss();\r\n }\r\n }\r\n\r\n /**\r\n * Attaches the snack bar container component to the overlay.\r\n */\r\n private _attachSnackBarContainer(\r\n overlayRef: OverlayRef,\r\n config: CuteSnackBarConfig,\r\n ): CuteSnackBarContainer {\r\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\r\n const injector = Injector.create({\r\n parent: userInjector || this._injector,\r\n providers: [{provide: CuteSnackBarConfig, useValue: config}],\r\n });\r\n\r\n const containerPortal = new ComponentPortal(\r\n this.snackBarContainerComponent,\r\n config.viewContainerRef,\r\n injector,\r\n );\r\n const containerRef: ComponentRef<CuteSnackBarContainer> = overlayRef.attach(containerPortal);\r\n containerRef.instance.snackBarConfig = config;\r\n return containerRef.instance;\r\n }\r\n\r\n /**\r\n * Places a new component or a template as the content of the snack bar container.\r\n */\r\n private _attach<T>(\r\n content: ComponentType<T> | TemplateRef<T>,\r\n userConfig?: CuteSnackBarConfig,\r\n ): CuteSnackBarRef<T | EmbeddedViewRef<any>> {\r\n const config = {...new CuteSnackBarConfig(), ...this._defaultConfig, ...userConfig};\r\n\r\n const overlayRef = this._createOverlay(config);\r\n const container = this._attachSnackBarContainer(overlayRef, config);\r\n const snackBarRef = new CuteSnackBarRef<T | EmbeddedViewRef<any>>(container, overlayRef);\r\n\r\n let attachedElement: ElementRef;\r\n\r\n if (content instanceof TemplateRef) {\r\n const portal = new TemplatePortal(content, null!, {\r\n $implicit: config.data,\r\n snackBarRef,\r\n } as any);\r\n\r\n snackBarRef.instance = container.attachTemplatePortal(portal);\r\n attachedElement = snackBarRef.instance.rootNodes[0];\r\n } else {\r\n const injector = this._createInjector(config, snackBarRef);\r\n const portal = new ComponentPortal(content, undefined, injector);\r\n const contentRef = container.attachComponentPortal<T>(portal);\r\n\r\n // We can't pass this through the injector because the injector was created earlier\r\n snackBarRef.instance = contentRef.instance;\r\n if (snackBarRef.instance instanceof CuteBaseControl) {\r\n const baseControl = snackBarRef.instance as CuteBaseControl;\r\n baseControl.color = config.color;\r\n baseControl.gradientFill = config.gradientFill || false;\r\n }\r\n\r\n attachedElement = contentRef.location;\r\n }\r\n\r\n // CWT: Adding Bootstrap's classes dynamically\r\n const cssClasses = [\"toast\", \"show\"];\r\n if (config.color) {\r\n //cssClasses.push(\"text-bg-\"+config.color);\r\n cssClasses.push( toTextBgCssClass(config.color) );\r\n }\r\n if (config.gradientFill) {\r\n cssClasses.push(\"bg-gradient\");\r\n }\r\n addClasses(attachedElement.nativeElement, cssClasses);\r\n\r\n // Subscribe to the breakpoint observer and attach the cute-snack-bar-handset class as\r\n // appropriate. This class is applied to the overlay element because the overlay must expand to\r\n // fill the width with the screen for full width snackbars.\r\n this._breakpointObserver\r\n .observe(Breakpoints.HandsetPortrait)\r\n .pipe(takeUntil(overlayRef.detachments()))\r\n .subscribe(state => {\r\n overlayRef.overlayElement.classList.toggle(this.handsetCssClass, state.matches);\r\n });\r\n\r\n if (config.announcementMessage) {\r\n // Wait until the snack bar contents have been announced, then deliver this message.\r\n container._onAnnounce.subscribe(() => {\r\n this._live.announce(config.announcementMessage!, config.politeness);\r\n });\r\n }\r\n\r\n this._animateSnackBar(snackBarRef, config);\r\n this._openedSnackBarRef = snackBarRef;\r\n return this._openedSnackBarRef;\r\n }\r\n\r\n /** Animates the old snack bar out and the new one in. */\r\n private _animateSnackBar(snackBarRef: CuteSnackBarRef<any>, config: CuteSnackBarConfig) {\r\n // When the snackbar is dismissed, clear the reference to it.\r\n snackBarRef.afterDismissed()\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\r\n if (this._openedSnackBarRef == snackBarRef) {\r\n this._openedSnackBarRef = null;\r\n }\r\n\r\n if (config.announcementMessage) {\r\n this._live.clear();\r\n }\r\n });\r\n\r\n // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\r\n if (config.duration && config.duration > 0) {\r\n snackBarRef.afterOpened()\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => snackBarRef._dismissAfter(config.duration!));\r\n }\r\n\r\n if (this._openedSnackBarRef) {\r\n // If a snack bar is already in view, dismiss it and enter the\r\n // new snack bar after exit animation is complete.\r\n this._openedSnackBarRef.afterDismissed()\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n snackBarRef.containerInstance.enter();\r\n });\r\n this._openedSnackBarRef.dismiss();\r\n } else {\r\n // If no snack bar is in view, enter the new snack bar.\r\n snackBarRef.containerInstance.enter();\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new overlay and places it in the correct location.\r\n * @param config The user-specified snack bar config.\r\n */\r\n private _createOverlay(config: CuteSnackBarConfig): OverlayRef {\r\n const overlayConfig = new OverlayConfig();\r\n overlayConfig.direction = config.direction;\r\n\r\n let positionStrategy = this._overlay.position().global();\r\n // Set horizontal position.\r\n const isRtl = config.direction === 'rtl';\r\n const isLeft =\r\n config.horizontalPosition === 'left' ||\r\n (config.horizontalPosition === 'start' && !isRtl) ||\r\n (config.horizontalPosition === 'end' && isRtl);\r\n const isRight = !isLeft && config.horizontalPosition !== 'center';\r\n const OFFSET = '0';\r\n if (isLeft) {\r\n positionStrategy.left(OFFSET);\r\n } else if (isRight) {\r\n positionStrategy.right(OFFSET);\r\n } else {\r\n positionStrategy.centerHorizontally();\r\n }\r\n // Set horizontal position.\r\n if (config.verticalPosition === 'top') {\r\n positionStrategy.top(OFFSET);\r\n } else {\r\n positionStrategy.bottom(OFFSET);\r\n }\r\n\r\n overlayConfig.positionStrategy = positionStrategy;\r\n overlayConfig.disableAnimations = this._animationsDisabled;\r\n return this._overlay.create(overlayConfig);\r\n }\r\n\r\n /**\r\n * Creates an injector to be used inside of a snack bar component.\r\n * @param config Config that was used to create the snack bar.\r\n * @param snackBarRef Reference to the snack bar.\r\n */\r\n private _createInjector<T>(config: CuteSnackBarConfig, snackBarRef: CuteSnackBarRef<T>): Injector {\r\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\r\n\r\n return Injector.create({\r\n parent: userInjector || this._injector,\r\n providers: [\r\n {provide: CuteSnackBarRef, useValue: snackBarRef},\r\n {provide: CUTE_SNACK_BAR_DATA, useValue: config.data},\r\n ],\r\n });\r\n }\r\n}\r\n\r\n\r\nfunction addClasses(element: HTMLElement, classes: string|string[]): void {\r\n if (classes) {\r\n if (Array.isArray(classes)) {\r\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\r\n classes.forEach(cssClass => element.classList.add(cssClass));\r\n } else {\r\n element.classList.add(classes);\r\n }\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {SimpleSnackBar} from \"./simple-snack-bar\";\r\nimport {\r\n CuteSnackBarAction,\r\n CuteSnackBarActions,\r\n CuteSnackBarBody,\r\n CuteSnackBarHeader,\r\n CuteSnackBarLabel\r\n} from \"./snack-bar-content\";\r\nimport {CuteSnackBarContainer} from \"./snack-bar-container\";\r\nimport {CuteSnackBar} from './snack-bar.service';\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteSnackBarContainer,\r\n CuteSnackBarActions,\r\n CuteSnackBarAction,\r\n CuteSnackBarBody,\r\n CuteSnackBarHeader,\r\n CuteSnackBarLabel,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, SimpleSnackBar, ...TYPES],\r\n exports: TYPES,\r\n providers: [CuteSnackBar],\r\n declarations: [],\r\n})\r\nexport class CuteSnackbarModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}