cmat 0.0.86 → 0.0.88

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 (228) hide show
  1. package/fesm2022/cmat-components-adapter.mjs +9 -9
  2. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  3. package/fesm2022/cmat-components-breadcrumb.mjs +98 -80
  4. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  5. package/fesm2022/cmat-components-card.mjs +26 -34
  6. package/fesm2022/cmat-components-card.mjs.map +1 -1
  7. package/fesm2022/cmat-components-carousel.mjs +467 -556
  8. package/fesm2022/cmat-components-carousel.mjs.map +1 -1
  9. package/fesm2022/cmat-components-cascade.mjs +270 -259
  10. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  11. package/fesm2022/cmat-components-chip-input.mjs +200 -116
  12. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  13. package/fesm2022/cmat-components-code-editor.mjs +85 -38
  14. package/fesm2022/cmat-components-code-editor.mjs.map +1 -1
  15. package/fesm2022/cmat-components-color-picker.mjs +841 -0
  16. package/fesm2022/cmat-components-color-picker.mjs.map +1 -0
  17. package/fesm2022/cmat-components-custom-formly.mjs +1395 -838
  18. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  19. package/fesm2022/cmat-components-data-picker.mjs +996 -0
  20. package/fesm2022/cmat-components-data-picker.mjs.map +1 -0
  21. package/fesm2022/cmat-components-date-range.mjs +310 -264
  22. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  23. package/fesm2022/cmat-components-date-time-display.mjs +16 -20
  24. package/fesm2022/cmat-components-date-time-display.mjs.map +1 -1
  25. package/fesm2022/cmat-components-drawer.mjs +120 -137
  26. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  27. package/fesm2022/cmat-components-empty-state.mjs +17 -24
  28. package/fesm2022/cmat-components-empty-state.mjs.map +1 -1
  29. package/fesm2022/cmat-components-file-preview.mjs +18 -24
  30. package/fesm2022/cmat-components-file-preview.mjs.map +1 -1
  31. package/fesm2022/cmat-components-filter-toolbar.mjs +30 -39
  32. package/fesm2022/cmat-components-filter-toolbar.mjs.map +1 -1
  33. package/fesm2022/cmat-components-form-actions.mjs +12 -12
  34. package/fesm2022/cmat-components-form-actions.mjs.map +1 -1
  35. package/fesm2022/cmat-components-fullscreen.mjs +10 -10
  36. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  37. package/fesm2022/cmat-components-highlight.mjs +48 -41
  38. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  39. package/fesm2022/cmat-components-image-viewer.mjs +104 -107
  40. package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
  41. package/fesm2022/cmat-components-inline-loading.mjs +12 -15
  42. package/fesm2022/cmat-components-inline-loading.mjs.map +1 -1
  43. package/fesm2022/cmat-components-json-editor.mjs +118 -75
  44. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  45. package/fesm2022/cmat-components-knob-input.mjs +196 -178
  46. package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
  47. package/fesm2022/cmat-components-masonry.mjs +26 -41
  48. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  49. package/fesm2022/cmat-components-material-color-picker.mjs +81 -80
  50. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  51. package/fesm2022/cmat-components-material-datetimepicker.mjs +1212 -1287
  52. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  53. package/fesm2022/cmat-components-navigation.mjs +467 -450
  54. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  55. package/fesm2022/cmat-components-opt-input.mjs +143 -132
  56. package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
  57. package/fesm2022/cmat-components-org-chart.mjs +68 -83
  58. package/fesm2022/cmat-components-org-chart.mjs.map +1 -1
  59. package/fesm2022/cmat-components-page-header.mjs +18 -24
  60. package/fesm2022/cmat-components-page-header.mjs.map +1 -1
  61. package/fesm2022/cmat-components-pagination.mjs +220 -136
  62. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  63. package/fesm2022/cmat-components-password-strength.mjs +262 -215
  64. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  65. package/fesm2022/cmat-components-popover.mjs +227 -195
  66. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  67. package/fesm2022/cmat-components-progress-bar.mjs +15 -34
  68. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  69. package/fesm2022/cmat-components-qrcode.mjs +95 -88
  70. package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
  71. package/fesm2022/cmat-components-rating.mjs +70 -67
  72. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  73. package/fesm2022/cmat-components-rich-text-editor.mjs +23 -26
  74. package/fesm2022/cmat-components-rich-text-editor.mjs.map +1 -1
  75. package/fesm2022/cmat-components-select-search.mjs +190 -159
  76. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  77. package/fesm2022/cmat-components-select-table.mjs +276 -213
  78. package/fesm2022/cmat-components-select-table.mjs.map +1 -1
  79. package/fesm2022/cmat-components-select-tree.mjs +178 -128
  80. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  81. package/fesm2022/cmat-components-skeleton.mjs +44 -28
  82. package/fesm2022/cmat-components-skeleton.mjs.map +1 -1
  83. package/fesm2022/cmat-components-speed-dial.mjs +107 -163
  84. package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
  85. package/fesm2022/cmat-components-status-tag.mjs +29 -36
  86. package/fesm2022/cmat-components-status-tag.mjs.map +1 -1
  87. package/fesm2022/cmat-components-table-toolbar.mjs +14 -18
  88. package/fesm2022/cmat-components-table-toolbar.mjs.map +1 -1
  89. package/fesm2022/cmat-components-timeline.mjs +111 -118
  90. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  91. package/fesm2022/cmat-components-toast.mjs +65 -66
  92. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  93. package/fesm2022/cmat-components-transfer-picker.mjs +130 -160
  94. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  95. package/fesm2022/cmat-components-treetable.mjs +32 -39
  96. package/fesm2022/cmat-components-treetable.mjs.map +1 -1
  97. package/fesm2022/cmat-components-upload.mjs +186 -176
  98. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  99. package/fesm2022/cmat-directives-animate-on-scroll.mjs +25 -28
  100. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
  101. package/fesm2022/cmat-directives-arrow-cursor.mjs +85 -92
  102. package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -1
  103. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  104. package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
  105. package/fesm2022/cmat-directives-data-exporter.mjs +49 -50
  106. package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
  107. package/fesm2022/cmat-directives-debounce.mjs +16 -19
  108. package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
  109. package/fesm2022/cmat-directives-digit-only.mjs +60 -69
  110. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  111. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  112. package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
  113. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +31 -30
  114. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs.map +1 -1
  115. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  116. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  117. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  118. package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
  119. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  120. package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
  121. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  122. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
  123. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  124. package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
  125. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  126. package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
  127. package/fesm2022/cmat-pipes-secure.mjs +7 -13
  128. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  129. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  130. package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -1
  131. package/fesm2022/cmat-services-alert.mjs +26 -27
  132. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  133. package/fesm2022/cmat-services-config.mjs +14 -23
  134. package/fesm2022/cmat-services-config.mjs.map +1 -1
  135. package/fesm2022/cmat-services-confirmation.mjs +8 -8
  136. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  137. package/fesm2022/cmat-services-data.mjs +6 -10
  138. package/fesm2022/cmat-services-data.mjs.map +1 -1
  139. package/fesm2022/cmat-services-export-as.mjs +3 -3
  140. package/fesm2022/cmat-services-export-as.mjs.map +1 -1
  141. package/fesm2022/cmat-services-loading.mjs +30 -47
  142. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  143. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  144. package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
  145. package/fesm2022/cmat-services-media-watcher.mjs +43 -34
  146. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  147. package/fesm2022/cmat-services-platform.mjs +3 -3
  148. package/fesm2022/cmat-services-platform.mjs.map +1 -1
  149. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  150. package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
  151. package/fesm2022/cmat-services-title.mjs +3 -3
  152. package/fesm2022/cmat-services-title.mjs.map +1 -1
  153. package/fesm2022/cmat-services-translation.mjs +11 -11
  154. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  155. package/fesm2022/cmat-services-utils.mjs +4 -4
  156. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  157. package/fesm2022/cmat.mjs +9229 -7508
  158. package/fesm2022/cmat.mjs.map +1 -1
  159. package/icons/material-icons/heroicons-outline.svg +3 -0
  160. package/icons/material-icons/heroicons-solid.svg +3 -0
  161. package/package.json +10 -1
  162. package/styles/components/bundle.scss +21 -0
  163. package/styles/overrides/angular-material.scss +22 -1
  164. package/tailwind/plugins/theming.js +183 -183
  165. package/types/cmat-components-breadcrumb.d.ts +40 -37
  166. package/types/cmat-components-card.d.ts +11 -13
  167. package/types/cmat-components-carousel.d.ts +87 -113
  168. package/types/cmat-components-cascade.d.ts +84 -65
  169. package/types/cmat-components-chip-input.d.ts +29 -24
  170. package/types/cmat-components-code-editor.d.ts +28 -12
  171. package/types/cmat-components-color-picker.d.ts +236 -0
  172. package/types/cmat-components-custom-formly.d.ts +316 -184
  173. package/types/cmat-components-data-picker.d.ts +372 -0
  174. package/types/cmat-components-date-range.d.ts +31 -36
  175. package/types/cmat-components-date-time-display.d.ts +8 -8
  176. package/types/cmat-components-drawer.d.ts +30 -32
  177. package/types/cmat-components-empty-state.d.ts +9 -10
  178. package/types/cmat-components-file-preview.d.ts +9 -9
  179. package/types/cmat-components-filter-toolbar.d.ts +15 -15
  180. package/types/cmat-components-form-actions.d.ts +5 -5
  181. package/types/cmat-components-fullscreen.d.ts +5 -5
  182. package/types/cmat-components-highlight.d.ts +13 -14
  183. package/types/cmat-components-image-viewer.d.ts +29 -33
  184. package/types/cmat-components-inline-loading.d.ts +6 -6
  185. package/types/cmat-components-json-editor.d.ts +15 -17
  186. package/types/cmat-components-knob-input.d.ts +58 -55
  187. package/types/cmat-components-masonry.d.ts +9 -12
  188. package/types/cmat-components-material-color-picker.d.ts +16 -21
  189. package/types/cmat-components-material-datetimepicker.d.ts +174 -216
  190. package/types/cmat-components-navigation.d.ts +34 -39
  191. package/types/cmat-components-opt-input.d.ts +35 -33
  192. package/types/cmat-components-org-chart.d.ts +8 -9
  193. package/types/cmat-components-page-header.d.ts +9 -9
  194. package/types/cmat-components-pagination.d.ts +36 -40
  195. package/types/cmat-components-password-strength.d.ts +58 -64
  196. package/types/cmat-components-popover.d.ts +22 -32
  197. package/types/cmat-components-progress-bar.d.ts +7 -10
  198. package/types/cmat-components-qrcode.d.ts +22 -22
  199. package/types/cmat-components-rating.d.ts +17 -19
  200. package/types/cmat-components-rich-text-editor.d.ts +11 -12
  201. package/types/cmat-components-select-search.d.ts +48 -36
  202. package/types/cmat-components-select-table.d.ts +38 -34
  203. package/types/cmat-components-select-tree.d.ts +17 -15
  204. package/types/cmat-components-skeleton.d.ts +27 -10
  205. package/types/cmat-components-speed-dial.d.ts +24 -33
  206. package/types/cmat-components-status-tag.d.ts +19 -9
  207. package/types/cmat-components-table-toolbar.d.ts +7 -7
  208. package/types/cmat-components-timeline.d.ts +33 -34
  209. package/types/cmat-components-toast.d.ts +26 -30
  210. package/types/cmat-components-transfer-picker.d.ts +51 -56
  211. package/types/cmat-components-treetable.d.ts +12 -13
  212. package/types/cmat-components-upload.d.ts +33 -38
  213. package/types/cmat-components-x6-angular-shape.d.ts +1 -1
  214. package/types/cmat-directives-animate-on-scroll.d.ts +7 -7
  215. package/types/cmat-directives-arrow-cursor.d.ts +18 -20
  216. package/types/cmat-directives-data-exporter.d.ts +10 -10
  217. package/types/cmat-directives-debounce.d.ts +5 -5
  218. package/types/cmat-directives-digit-only.d.ts +13 -13
  219. package/types/cmat-directives-seamless-auto-scroll.d.ts +7 -7
  220. package/types/cmat-pipes-secure.d.ts +1 -3
  221. package/types/cmat-services-alert.d.ts +11 -12
  222. package/types/cmat-services-config.d.ts +2 -7
  223. package/types/cmat-services-confirmation.d.ts +2 -2
  224. package/types/cmat-services-data.d.ts +0 -1
  225. package/types/cmat-services-loading.d.ts +14 -22
  226. package/types/cmat-services-media-watcher.d.ts +5 -5
  227. package/types/cmat-services-translation.d.ts +4 -5
  228. package/types/cmat.d.ts +2167 -1746
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-breadcrumb.mjs","sources":["../../../projects/cmat/components/breadcrumb/breadcrumb-item.directive.ts","../../../projects/cmat/components/breadcrumb/breadcrumb.service.ts","../../../projects/cmat/components/breadcrumb/breadcrumb.component.ts","../../../projects/cmat/components/breadcrumb/breadcrumb.component.html","../../../projects/cmat/components/breadcrumb/cmat-components-breadcrumb.ts"],"sourcesContent":["import { Directive } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n selector: '[cmatBreadcrumbItem]'\r\n})\r\nexport class CmatBreadcrumbItemDirective {\r\n}\r\n","import { DestroyRef, Injectable, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, GuardsCheckEnd, Route, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { CmatBreadcrumb } from './types/breadcrumb';\r\nimport { CmatBreadcrumbFunction, CmatBreadcrumbObject } from './types/breadcrumb.config';\r\n\r\ntype CmatBreadcrumbConfig = CmatBreadcrumbObject | CmatBreadcrumbFunction | string;\r\ntype StoreMatcherKey = 'routeLink' | 'routeRegex' | 'alias';\r\nexport type CmatBreadcrumbDefinition = CmatBreadcrumb & CmatBreadcrumbObject;\r\n\r\ninterface CmatBreadcrumbRouteConfig {\r\n path?: string | null;\r\n loadChildren?: unknown;\r\n _loadedRoutes?: Route[];\r\n data?: {\r\n breadcrumb?: CmatBreadcrumbConfig;\r\n };\r\n children?: Route[];\r\n}\r\n\r\ninterface CmatBreadcrumbRouteData {\r\n path?: string;\r\n breadcrumb: CmatBreadcrumbObject;\r\n}\r\n\r\ntype BreadcrumbRouteDataInput = CmatBreadcrumbConfig | undefined;\r\n\r\ninterface CmatBreadcrumbStore {\r\n alias: Map<string, CmatBreadcrumbDefinition>;\r\n routeLink: Map<string, CmatBreadcrumbDefinition>;\r\n routeRegex: Map<string, CmatBreadcrumbDefinition>;\r\n}\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\nconst PATH_PARAM = {\r\n PREFIX: ':',\r\n REGEX_IDENTIFIER: '/:[^/]+',\r\n REGEX_REPLACER: '/[^/]+',\r\n};\r\n\r\n\r\nconst ALIAS_PREFIX = '@';\r\nconst isNonEmpty = (obj: object | undefined): boolean => !!obj && Object.keys(obj).length > 0;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CmatBreadcrumbService {\r\n private _activatedRoute = inject(ActivatedRoute);\r\n private _router = inject(Router);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _baseHref = '/';\r\n\r\n \r\n private readonly _dynamicBreadcrumbStore: CmatBreadcrumbStore = {\r\n alias: new Map<string, CmatBreadcrumbDefinition>(),\r\n routeLink: new Map<string, CmatBreadcrumbDefinition>(),\r\n routeRegex: new Map<string, CmatBreadcrumbDefinition>(),\r\n };\r\n\r\n \r\n private _currentBreadcrumbs: CmatBreadcrumbDefinition[] = [];\r\n private _previousBreadcrumbs: CmatBreadcrumbDefinition[] = [];\r\n\r\n \r\n private _breadcrumbs = signal<CmatBreadcrumbDefinition[]>([]);\r\n private readonly _breadcrumbs$ = toObservable(this._breadcrumbs);\r\n\r\n \r\n\r\n constructor() {\r\n this._detectRouteChanges();\r\n }\r\n\r\n get breadcrumbs$(): Observable<CmatBreadcrumbDefinition[]> {\r\n return this._breadcrumbs$;\r\n }\r\n\r\n \r\n set(key: string, breadcrumb: string | CmatBreadcrumbObject): void {\r\n const breadcrumbObject = this._extractObject(breadcrumb);\r\n let updateArgs: [StoreMatcherKey, CmatBreadcrumbDefinition];\r\n\r\n if (key.startsWith(ALIAS_PREFIX)) {\r\n updateArgs = ['alias', { ...breadcrumbObject, alias: key.slice(1) }];\r\n } else if (key.includes(PATH_PARAM.PREFIX)) {\r\n updateArgs = [\r\n 'routeRegex',\r\n { ...breadcrumbObject, routeRegex: this._buildRegex(key) },\r\n ];\r\n } else {\r\n updateArgs = [\r\n 'routeLink',\r\n { ...breadcrumbObject, routeLink: this._ensureLeadingSlash(key) },\r\n ];\r\n }\r\n updateArgs[1].isAutoGeneratedLabel = false;\r\n\r\n this._updateStore(...updateArgs);\r\n this._updateCurrentBreadcrumbs(...updateArgs);\r\n }\r\n\r\n\r\n\r\n \r\n private _detectRouteChanges(): void {\r\n this._setupBreadcrumbs(this._activatedRoute.snapshot);\r\n\r\n this._router.events\r\n .pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter((event): event is GuardsCheckEnd => event instanceof GuardsCheckEnd))\r\n .subscribe((event) => {\r\n if (event.shouldActivate) {\r\n this._setupBreadcrumbs(event.state.root);\r\n }\r\n });\r\n }\r\n\r\n private _setupBreadcrumbs(activatedRouteSnapshot: ActivatedRouteSnapshot): void {\r\n this._previousBreadcrumbs = this._currentBreadcrumbs;\r\n const rootBreadcrumb = this._getRootBreadcrumb();\r\n this._currentBreadcrumbs = rootBreadcrumb ? [rootBreadcrumb] : [];\r\n this._prepareBreadcrumbList(activatedRouteSnapshot, this._baseHref);\r\n }\r\n\r\n private _getRootBreadcrumb(): CmatBreadcrumb | void {\r\n const rootConfig = this._router.config.find(config => config.path === '');\r\n const rootBreadcrumb = this._extractObject(rootConfig?.data?.['breadcrumb'] as CmatBreadcrumbConfig | undefined);\r\n const storeItem = this._getFromStore('/', rootBreadcrumb.alias);\r\n\r\n if (isNonEmpty(rootBreadcrumb) || isNonEmpty(storeItem as object | undefined)) {\r\n return {\r\n ...storeItem,\r\n ...rootBreadcrumb,\r\n routeLink: this._baseHref,\r\n ...this._getQueryParamsFromPreviousList('/'),\r\n };\r\n }\r\n }\r\n\r\n private _prepareBreadcrumbItem(\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n routeLinkPrefix: string\r\n ): CmatBreadcrumbDefinition {\r\n const routeData = this._parseRouteData(\r\n activatedRouteSnapshot.routeConfig\r\n );\r\n\r\n if (!routeData) {\r\n return {\r\n label: '',\r\n routeLink: routeLinkPrefix,\r\n isAutoGeneratedLabel: true,\r\n };\r\n }\r\n\r\n const { path, breadcrumb } = routeData;\r\n\r\n const resolvedSegment = this._resolvePathSegment(path ?? '', activatedRouteSnapshot);\r\n const routeLink = `${routeLinkPrefix}${resolvedSegment}`;\r\n const storeItem = this._getFromStore(routeLink, breadcrumb.alias);\r\n\r\n const label = this._extractLabel(\r\n storeItem?.label ?? breadcrumb?.label ?? '',\r\n resolvedSegment\r\n );\r\n let isAutoGeneratedLabel = false;\r\n let autoGeneratedLabel = '';\r\n if (!label) {\r\n isAutoGeneratedLabel = true;\r\n autoGeneratedLabel = resolvedSegment;\r\n }\r\n\r\n return {\r\n ...storeItem,\r\n ...breadcrumb,\r\n label: isAutoGeneratedLabel ? autoGeneratedLabel : (label ?? ''),\r\n routeLink,\r\n isAutoGeneratedLabel,\r\n ...this._getQueryParamsFromPreviousList(routeLink),\r\n };\r\n }\r\n\r\n private _prepareBreadcrumbList(\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n routeLinkPrefix: string\r\n ): CmatBreadcrumb[] | void {\r\n if (activatedRouteSnapshot.routeConfig?.path) {\r\n const breadcrumbItem = this._prepareBreadcrumbItem(\r\n activatedRouteSnapshot,\r\n routeLinkPrefix\r\n );\r\n this._currentBreadcrumbs.push(breadcrumbItem);\r\n\r\n if (activatedRouteSnapshot.firstChild) {\r\n return this._prepareBreadcrumbList(\r\n activatedRouteSnapshot.firstChild,\r\n breadcrumbItem.routeLink + '/'\r\n );\r\n }\r\n } else if (activatedRouteSnapshot.firstChild) {\r\n return this._prepareBreadcrumbList(\r\n activatedRouteSnapshot.firstChild,\r\n routeLinkPrefix\r\n );\r\n }\r\n const lastCrumb = this._currentBreadcrumbs[\r\n this._currentBreadcrumbs.length - 1\r\n ];\r\n this._setQueryParamsForActiveBreadcrumb(lastCrumb, activatedRouteSnapshot);\r\n const breadcrumbsToShow = this._currentBreadcrumbs.filter(\r\n item => !item.skip\r\n );\r\n this._breadcrumbs.set([...breadcrumbsToShow]);\r\n\r\n return void 0;\r\n }\r\n\r\n private _getFromStore(routeLink: string, alias?: string): CmatBreadcrumbDefinition | void {\r\n if (alias) {\r\n const aliasBreadcrumb = this._dynamicBreadcrumbStore.alias.get(alias);\r\n\r\n if (aliasBreadcrumb) {\r\n return aliasBreadcrumb;\r\n }\r\n }\r\n\r\n const routeLinkBreadcrumb = this._dynamicBreadcrumbStore.routeLink.get(routeLink);\r\n\r\n if (routeLinkBreadcrumb) {\r\n return routeLinkBreadcrumb;\r\n }\r\n\r\n for (const breadcrumb of this._dynamicBreadcrumbStore.routeRegex.values()) {\r\n if (this._matchRegex(routeLink, breadcrumb.routeRegex)) {\r\n return breadcrumb;\r\n }\r\n }\r\n\r\n return void 0;\r\n }\r\n\r\n \r\n private _matchRegex(routeLink?: string, routeRegex?: string): boolean | null {\r\n if (routeRegex && routeLink) {\r\n const match = new RegExp(routeRegex).exec(routeLink);\r\n return match?.[0] === routeLink;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n \r\n private _resolvePathSegment(segment: string, activatedRouteSnapshot: ActivatedRouteSnapshot): string {\r\n if (segment.includes(PATH_PARAM.PREFIX)) {\r\n Object.entries(activatedRouteSnapshot.params).forEach(([key, value]) => {\r\n segment = segment.replace(`:${key}`, `${value}`);\r\n });\r\n }\r\n return segment;\r\n }\r\n\r\n \r\n private _getQueryParamsFromPreviousList(routeLink: string): CmatBreadcrumb {\r\n const { queryParams, fragment } =\r\n this._previousBreadcrumbs.find(item => item.routeLink === routeLink) ??\r\n {};\r\n return { queryParams, fragment };\r\n }\r\n\r\n \r\n private _setQueryParamsForActiveBreadcrumb(\r\n lastItem: CmatBreadcrumb,\r\n activatedRouteSnapshot: ActivatedRouteSnapshot\r\n ): void {\r\n if (lastItem) {\r\n const { queryParams, fragment } = activatedRouteSnapshot;\r\n lastItem.queryParams = queryParams ? { ...queryParams } : undefined;\r\n lastItem.fragment = fragment ?? void 0;\r\n }\r\n }\r\n\r\n \r\n private _parseRouteData(routeConfig: Route | null): CmatBreadcrumbRouteData | void {\r\n if (!routeConfig) {\r\n return void 0;\r\n }\r\n\r\n const { path, data } = routeConfig;\r\n const breadcrumb = this._mergeWithBaseChildData(\r\n routeConfig,\r\n data?.['breadcrumb'] as BreadcrumbRouteDataInput\r\n );\r\n\r\n return { path, breadcrumb };\r\n }\r\n\r\n \r\n private _mergeWithBaseChildData(\r\n routeConfig: CmatBreadcrumbRouteConfig | null,\r\n config: BreadcrumbRouteDataInput\r\n ): CmatBreadcrumbObject {\r\n if (!routeConfig) {\r\n return this._extractObject(config);\r\n }\r\n\r\n let baseChild: Route | void = void 0;\r\n if (routeConfig.loadChildren) {\r\n baseChild = routeConfig._loadedRoutes?.find(route => route.path === '');\r\n } else if (routeConfig.children) {\r\n baseChild = routeConfig.children.find(route => route.path === '');\r\n }\r\n\r\n const childConfig = baseChild?.data?.['breadcrumb'] as BreadcrumbRouteDataInput;\r\n return childConfig\r\n ? this._mergeWithBaseChildData(baseChild ?? null, {\r\n ...this._extractObject(config),\r\n ...this._extractObject(childConfig),\r\n })\r\n : this._extractObject(config);\r\n }\r\n\r\n \r\n private _updateStore(key: StoreMatcherKey, breadcrumb: CmatBreadcrumbDefinition): void {\r\n if (key === 'alias' && breadcrumb.alias) {\r\n this._dynamicBreadcrumbStore.alias.set(breadcrumb.alias, { ...this._dynamicBreadcrumbStore.alias.get(breadcrumb.alias), ...breadcrumb });\r\n return;\r\n }\r\n\r\n if (key === 'routeLink' && breadcrumb.routeLink) {\r\n this._dynamicBreadcrumbStore.routeLink.set(breadcrumb.routeLink, { ...this._dynamicBreadcrumbStore.routeLink.get(breadcrumb.routeLink), ...breadcrumb });\r\n return;\r\n }\r\n\r\n if (key === 'routeRegex' && breadcrumb.routeRegex) {\r\n this._dynamicBreadcrumbStore.routeRegex.set(breadcrumb.routeRegex, { ...this._dynamicBreadcrumbStore.routeRegex.get(breadcrumb.routeRegex), ...breadcrumb });\r\n }\r\n }\r\n\r\n \r\n private _updateCurrentBreadcrumbs(\r\n key: StoreMatcherKey,\r\n breadcrumb: CmatBreadcrumbDefinition\r\n ): void {\r\n const itemIndex = this._currentBreadcrumbs.findIndex((item) => {\r\n if (key === 'routeRegex') {\r\n return this._matchRegex(item.routeLink, breadcrumb.routeRegex);\r\n }\r\n\r\n if (key === 'alias') {\r\n return item.alias === breadcrumb.alias;\r\n }\r\n\r\n return item.routeLink === breadcrumb.routeLink;\r\n });\r\n\r\n if (itemIndex > -1) {\r\n this._currentBreadcrumbs[itemIndex] = {\r\n ...this._currentBreadcrumbs[itemIndex],\r\n ...breadcrumb,\r\n };\r\n this._publishCurrentBreadcrumbs();\r\n }\r\n }\r\n\r\n \r\n private _buildRegex(path: string): string {\r\n return this._ensureLeadingSlash(path).replace(\r\n new RegExp(PATH_PARAM.REGEX_IDENTIFIER, 'g'),\r\n PATH_PARAM.REGEX_REPLACER\r\n );\r\n }\r\n\r\n private _ensureLeadingSlash(path: string): string {\r\n return path.startsWith('/') ? path : `/${path}`;\r\n }\r\n\r\n \r\n private _extractLabel(config: CmatBreadcrumbConfig | undefined, resolvedParam?: string): string | undefined {\r\n if (!config) {\r\n return undefined;\r\n }\r\n\r\n const label = typeof config === 'object' ? config.label : config;\r\n if (typeof label === 'function') {\r\n return label(resolvedParam);\r\n }\r\n return label;\r\n }\r\n\r\n private _extractObject(config: CmatBreadcrumbConfig | undefined): CmatBreadcrumbObject {\r\n if (\r\n config &&\r\n (typeof config === 'string' || typeof config === 'function')\r\n ) {\r\n return { label: config };\r\n }\r\n return (config as CmatBreadcrumbObject) || {};\r\n }\r\n\r\n private _publishCurrentBreadcrumbs(): void {\r\n this._breadcrumbs.set(this._currentBreadcrumbs.filter(item => !item.skip));\r\n }\r\n}\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation, computed, inject, signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { RouterLink } from '@angular/router';\r\nimport { CmatBreadcrumbItemDirective } from './breadcrumb-item.directive';\r\nimport { CmatBreadcrumbDefinition, CmatBreadcrumbService } from './breadcrumb.service';\r\nimport { CmatBreadcrumbFunction } from './types/breadcrumb.config';\r\n\r\n/* eslint-disable @typescript-eslint/member-ordering */\r\n\r\ninterface CmatBreadcrumbTemplateContext {\r\n $implicit: string | undefined | CmatBreadcrumbFunction;\r\n info: unknown;\r\n last: boolean;\r\n first: boolean;\r\n index: number;\r\n count: number;\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-breadcrumb',\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrls: ['./breadcrumb.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatBreadcrumb',\r\n imports: [NgClass, RouterLink, NgTemplateOutlet]\r\n})\r\nexport class CmatBreadcrumbComponent {\r\n @ContentChild(CmatBreadcrumbItemDirective, { static: false, read: TemplateRef })\r\n itemTemplate: TemplateRef<CmatBreadcrumbTemplateContext> | null = null;\r\n\r\n\r\n @Input()\r\n set autoGenerate(value: boolean) {\r\n this._autoGenerate.set(value);\r\n }\r\n\r\n get autoGenerate(): boolean {\r\n return this._autoGenerate();\r\n }\r\n\r\n\r\n @Input() preserveQueryParams = true;\r\n\r\n\r\n @Input() preserveFragment = true;\r\n\r\n\r\n @Input() class = '';\r\n\r\n\r\n @Input() anchorTarget: '_blank' | void;\r\n\r\n separatorTemplate: TemplateRef<void> | null = null;\r\n\r\n readonly breadcrumbs = computed(() => {\r\n const breadcrumbs = this._breadcrumbItems();\r\n\r\n if (this._autoGenerate()) {\r\n return breadcrumbs;\r\n }\r\n\r\n return breadcrumbs.filter(breadcrumb => !breadcrumb.isAutoGeneratedLabel);\r\n });\r\n\r\n private readonly _breadcrumbService = inject(CmatBreadcrumbService);\r\n private readonly _autoGenerate = signal(true);\r\n private readonly _breadcrumbItems = toSignal(this._breadcrumbService.breadcrumbs$, { initialValue: [] as CmatBreadcrumbDefinition[] });\r\n @Input()\r\n set separator(value: string | void) {\r\n this._separator = value;\r\n }\r\n\r\n get separator(): string | void {\r\n return this._separator;\r\n }\r\n\r\n private _separator: string | void = '/';\r\n}\r\n","<nav aria-label=\"breadcrumb\" class=\"m-0\" [ngClass]=\"class\">\r\n <ol class=\"flex items-center flex-wrap m-0 p-0\">\r\n @for (\r\n breadcrumb of breadcrumbs(); track\r\n breadcrumb.routeLink ?? $index; let isLast = $last; let isFirst = $first; let index = $index; let count = $count) {\r\n <li class=\"list-none\">\r\n @if (!isLast) {\r\n <a class=\"cmat-breadcrumb-link\"\r\n rel=\"noopener noreferrer\"\r\n [ngClass]=\"{ 'pointer-events-none cursor-not-allowed': breadcrumb.disable }\" [attr.aria-disabled]=\"breadcrumb.disable\"\r\n [attr.tabIndex]=\"breadcrumb.disable ? -1 : 0\" [routerLink]=\"\r\n breadcrumb.routeInterceptor\r\n ? breadcrumb.routeInterceptor( breadcrumb,breadcrumb.routeLink)\r\n : breadcrumb.routeLink\" [queryParams]=\"preserveQueryParams ? breadcrumb.queryParams : undefined\"\r\n [fragment]=\"preserveFragment ? breadcrumb.fragment : undefined\"\r\n [target]=\"anchorTarget ? anchorTarget : '_self'\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: breadcrumb.label, info: breadcrumb.info, last: isLast, first: isFirst, index: index, count: count }\"></ng-container>\r\n @if (!itemTemplate) {\r\n {{\r\n breadcrumb.label\r\n }}\r\n }\r\n </a>\r\n }\r\n @if (isLast) {\r\n <span class=\"flex items-center\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: breadcrumb.label, info: breadcrumb.info, last: isLast, first: isFirst, index: index, count: count }\"></ng-container>\r\n @if (!itemTemplate) {\r\n {{\r\n breadcrumb.label\r\n }}\r\n }\r\n </span>\r\n }\r\n </li>\r\n @if (!isLast) {\r\n <li class=\"flex select-none mx-4\" aria-hidden=\"true\" role=\"separator\">\r\n <ng-container *ngTemplateOutlet=\"separatorTemplate\"></ng-container>\r\n @if (separatorTemplate===null) {\r\n {{ separator }}\r\n }\r\n </li>\r\n }\r\n}\r\n</ol>\r\n</nav>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmat-components-breadcrumb.mjs","sources":["../../../projects/cmat/components/breadcrumb/breadcrumb-item.directive.ts","../../../projects/cmat/components/breadcrumb/breadcrumb.service.ts","../../../projects/cmat/components/breadcrumb/breadcrumb.component.ts","../../../projects/cmat/components/breadcrumb/breadcrumb.component.html","../../../projects/cmat/components/breadcrumb/cmat-components-breadcrumb.ts"],"sourcesContent":["import { Directive } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n selector: '[cmatBreadcrumbItem]'\r\n})\r\nexport class CmatBreadcrumbItemDirective {\r\n}\r\n","import { DestroyRef, Injectable, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, GuardsCheckEnd, Route, Router } from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\nimport { CmatBreadcrumb } from './types/breadcrumb';\r\nimport { CmatBreadcrumbFunction, CmatBreadcrumbObject } from './types/breadcrumb.config';\r\n\r\ntype CmatBreadcrumbConfig = CmatBreadcrumbObject | CmatBreadcrumbFunction | string;\r\ntype StoreMatcherKey = 'routeLink' | 'routeRegex' | 'alias';\r\nexport type CmatBreadcrumbDefinition = CmatBreadcrumb & CmatBreadcrumbObject;\r\n\r\ninterface CmatBreadcrumbRouteConfig {\r\n path?: string | null;\r\n loadChildren?: unknown;\r\n _loadedRoutes?: Route[];\r\n data?: {\r\n breadcrumb?: CmatBreadcrumbConfig;\r\n };\r\n children?: Route[];\r\n}\r\n\r\ninterface CmatBreadcrumbRouteData {\r\n path?: string;\r\n breadcrumb: CmatBreadcrumbObject;\r\n}\r\n\r\ntype BreadcrumbRouteDataInput = CmatBreadcrumbConfig | undefined;\r\n\r\ninterface CmatBreadcrumbStore {\r\n alias: Map<string, CmatBreadcrumbDefinition>;\r\n routeLink: Map<string, CmatBreadcrumbDefinition>;\r\n routeRegex: Map<string, CmatBreadcrumbDefinition>;\r\n}\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\nconst PATH_PARAM = {\r\n PREFIX: ':',\r\n REGEX_IDENTIFIER: '/:[^/]+',\r\n REGEX_REPLACER: '/[^/]+',\r\n};\r\n\r\n\r\nconst ALIAS_PREFIX = '@';\r\nconst BREADCRUMB_DATA_KEY = 'breadcrumb';\r\nconst isNonEmpty = (obj: object | undefined): boolean => !!obj && Object.keys(obj).length > 0;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CmatBreadcrumbService {\r\n\r\n private readonly _breadcrumbs = signal<CmatBreadcrumbDefinition[]>([]);\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n readonly breadcrumbs = this._breadcrumbs.asReadonly();\r\n\r\n private _activatedRoute = inject(ActivatedRoute);\r\n private _router = inject(Router);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _baseHref = '/';\r\n private readonly _compiledRegexCache = new Map<string, RegExp>();\r\n\r\n private readonly _dynamicBreadcrumbStore: CmatBreadcrumbStore = {\r\n alias: new Map<string, CmatBreadcrumbDefinition>(),\r\n routeLink: new Map<string, CmatBreadcrumbDefinition>(),\r\n routeRegex: new Map<string, CmatBreadcrumbDefinition>(),\r\n };\r\n\r\n\r\n private _currentBreadcrumbs: CmatBreadcrumbDefinition[] = [];\r\n private _previousBreadcrumbs: CmatBreadcrumbDefinition[] = [];\r\n\r\n constructor() {\r\n this._detectRouteChanges();\r\n }\r\n\r\n\r\n set(key: string, breadcrumb: string | CmatBreadcrumbObject): void {\r\n const breadcrumbObject = this._extractObject(breadcrumb);\r\n let updateArgs: [StoreMatcherKey, CmatBreadcrumbDefinition];\r\n\r\n if (key.startsWith(ALIAS_PREFIX)) {\r\n const aliasName = key.slice(1);\r\n // 简单冲突检测\r\n if (this._dynamicBreadcrumbStore.routeLink.has(aliasName) || this._dynamicBreadcrumbStore.routeRegex.has(aliasName)) {\r\n console.warn(`CmatBreadcrumbService: Alias '${aliasName}' conflicts with an existing route link or regex.`);\r\n }\r\n updateArgs = ['alias', { ...breadcrumbObject, alias: aliasName }];\r\n } else if (key.includes(PATH_PARAM.PREFIX)) {\r\n updateArgs = [\r\n 'routeRegex',\r\n { ...breadcrumbObject, routeRegex: this._buildRegex(key) },\r\n ];\r\n } else {\r\n const normalizedKey = this._ensureLeadingSlash(key);\r\n if (this._dynamicBreadcrumbStore.alias.has(normalizedKey)) {\r\n console.warn(`CmatBreadcrumbService: Route link '${normalizedKey}' conflicts with an existing alias.`);\r\n }\r\n updateArgs = [\r\n 'routeLink',\r\n { ...breadcrumbObject, routeLink: normalizedKey },\r\n ];\r\n }\r\n updateArgs[1].isAutoGeneratedLabel = false;\r\n\r\n this._updateStore(...updateArgs);\r\n this._updateCurrentBreadcrumbs(...updateArgs);\r\n }\r\n\r\n private _detectRouteChanges(): void {\r\n this._setupBreadcrumbs(this._activatedRoute.snapshot);\r\n\r\n this._router.events\r\n .pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter((event): event is GuardsCheckEnd => event instanceof GuardsCheckEnd))\r\n .subscribe((event) => {\r\n if (event.shouldActivate) {\r\n this._setupBreadcrumbs(event.state.root);\r\n }\r\n });\r\n }\r\n\r\n private _setupBreadcrumbs(activatedRouteSnapshot: ActivatedRouteSnapshot): void {\r\n this._previousBreadcrumbs = this._currentBreadcrumbs;\r\n const rootBreadcrumb = this._getRootBreadcrumb();\r\n this._currentBreadcrumbs = rootBreadcrumb ? [rootBreadcrumb] : [];\r\n this._prepareBreadcrumbList(activatedRouteSnapshot, this._baseHref);\r\n }\r\n\r\n private _getRootBreadcrumb(): CmatBreadcrumb | void {\r\n const rootConfig = this._router.config.find(config => config.path === '');\r\n const rootBreadcrumb = this._extractObject(rootConfig?.data?.['breadcrumb'] as CmatBreadcrumbConfig | undefined);\r\n const storeItem = this._getFromStore('/', rootBreadcrumb.alias);\r\n\r\n if (isNonEmpty(rootBreadcrumb) || isNonEmpty(storeItem as object | undefined)) {\r\n return {\r\n ...storeItem,\r\n ...rootBreadcrumb,\r\n routeLink: this._baseHref,\r\n ...this._getQueryParamsFromPreviousList('/'),\r\n };\r\n }\r\n }\r\n\r\n private _prepareBreadcrumbItem(\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n routeLinkPrefix: string\r\n ): CmatBreadcrumbDefinition {\r\n const routeData = this._parseRouteData(\r\n activatedRouteSnapshot.routeConfig\r\n );\r\n\r\n if (!routeData) {\r\n return {\r\n label: '',\r\n routeLink: routeLinkPrefix,\r\n isAutoGeneratedLabel: true,\r\n };\r\n }\r\n\r\n const { path, breadcrumb } = routeData;\r\n\r\n const resolvedSegment = this._resolvePathSegment(path ?? '', activatedRouteSnapshot);\r\n const routeLink = `${routeLinkPrefix}${resolvedSegment}`;\r\n const storeItem = this._getFromStore(routeLink, breadcrumb.alias);\r\n\r\n const label = this._extractLabel(\r\n storeItem?.label ?? breadcrumb?.label ?? '',\r\n resolvedSegment\r\n );\r\n let isAutoGeneratedLabel = false;\r\n let autoGeneratedLabel = '';\r\n if (!label) {\r\n isAutoGeneratedLabel = true;\r\n autoGeneratedLabel = resolvedSegment;\r\n }\r\n\r\n return {\r\n ...storeItem,\r\n ...breadcrumb,\r\n label: isAutoGeneratedLabel ? autoGeneratedLabel : (label ?? ''),\r\n routeLink,\r\n isAutoGeneratedLabel,\r\n ...this._getQueryParamsFromPreviousList(routeLink),\r\n };\r\n }\r\n\r\n private _prepareBreadcrumbList(\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n routeLinkPrefix: string\r\n ): void {\r\n if (activatedRouteSnapshot.routeConfig?.path) {\r\n const breadcrumbItem = this._prepareBreadcrumbItem(\r\n activatedRouteSnapshot,\r\n routeLinkPrefix\r\n );\r\n\r\n if (!breadcrumbItem.skip) {\r\n this._currentBreadcrumbs.push(breadcrumbItem);\r\n }\r\n\r\n if (activatedRouteSnapshot.firstChild) {\r\n return this._prepareBreadcrumbList(\r\n activatedRouteSnapshot.firstChild,\r\n breadcrumbItem.routeLink + '/'\r\n );\r\n }\r\n } else if (activatedRouteSnapshot.firstChild) {\r\n return this._prepareBreadcrumbList(\r\n activatedRouteSnapshot.firstChild,\r\n routeLinkPrefix\r\n );\r\n }\r\n\r\n const lastCrumb = this._currentBreadcrumbs[this._currentBreadcrumbs.length - 1];\r\n this._setQueryParamsForActiveBreadcrumb(lastCrumb, activatedRouteSnapshot);\r\n this._breadcrumbs.set([...this._currentBreadcrumbs]);\r\n }\r\n\r\n private _getFromStore(routeLink: string, alias?: string): CmatBreadcrumbDefinition | void {\r\n if (alias) {\r\n const aliasBreadcrumb = this._dynamicBreadcrumbStore.alias.get(alias);\r\n if (aliasBreadcrumb) {\r\n return aliasBreadcrumb;\r\n }\r\n }\r\n\r\n const routeLinkBreadcrumb = this._dynamicBreadcrumbStore.routeLink.get(routeLink);\r\n if (routeLinkBreadcrumb) {\r\n return routeLinkBreadcrumb;\r\n }\r\n\r\n for (const breadcrumb of this._dynamicBreadcrumbStore.routeRegex.values()) {\r\n if (this._matchRegex(routeLink, breadcrumb.routeRegex)) {\r\n return breadcrumb;\r\n }\r\n }\r\n\r\n return void 0;\r\n }\r\n\r\n\r\n private _matchRegex(routeLink?: string, routeRegex?: string): boolean {\r\n if (!routeRegex || !routeLink) {\r\n return false;\r\n }\r\n\r\n let regex = this._compiledRegexCache.get(routeRegex);\r\n if (!regex) {\r\n regex = new RegExp(routeRegex);\r\n this._compiledRegexCache.set(routeRegex, regex);\r\n }\r\n\r\n const match = regex.exec(routeLink);\r\n return match?.[0] === routeLink;\r\n }\r\n\r\n private _resolvePathSegment(segment: string, activatedRouteSnapshot: ActivatedRouteSnapshot): string {\r\n if (segment.includes(PATH_PARAM.PREFIX)) {\r\n Object.entries(activatedRouteSnapshot.params).forEach(([key, value]) => {\r\n const paramPattern = `:${key}`;\r\n const regex = new RegExp(`(?<=^|/)${paramPattern}(?=/|$)`);\r\n segment = segment.replace(regex, String(value));\r\n });\r\n }\r\n return segment;\r\n }\r\n\r\n\r\n private _getQueryParamsFromPreviousList(routeLink: string): CmatBreadcrumb {\r\n const { queryParams, fragment } =\r\n this._previousBreadcrumbs.find(item => item.routeLink === routeLink) ??\r\n {};\r\n return { queryParams, fragment };\r\n }\r\n\r\n\r\n private _setQueryParamsForActiveBreadcrumb(\r\n lastItem: CmatBreadcrumb,\r\n activatedRouteSnapshot: ActivatedRouteSnapshot\r\n ): void {\r\n if (lastItem) {\r\n const { queryParams, fragment } = activatedRouteSnapshot;\r\n lastItem.queryParams = queryParams ? { ...queryParams } : undefined;\r\n lastItem.fragment = fragment ?? void 0;\r\n }\r\n }\r\n\r\n\r\n private _parseRouteData(routeConfig: Route | null): CmatBreadcrumbRouteData | void {\r\n if (!routeConfig) {\r\n return void 0;\r\n }\r\n\r\n const { path, data } = routeConfig;\r\n const breadcrumb = this._mergeWithBaseChildData(\r\n routeConfig,\r\n data?.[BREADCRUMB_DATA_KEY] as BreadcrumbRouteDataInput\r\n );\r\n\r\n return { path, breadcrumb };\r\n }\r\n\r\n\r\n private _mergeWithBaseChildData(\r\n routeConfig: CmatBreadcrumbRouteConfig | null,\r\n config: BreadcrumbRouteDataInput\r\n ): CmatBreadcrumbObject {\r\n if (!routeConfig) {\r\n return this._extractObject(config);\r\n }\r\n\r\n let baseChild: Route | void = void 0;\r\n if (routeConfig.children) {\r\n baseChild = routeConfig.children.find(route => route.path === '');\r\n }\r\n\r\n if (!baseChild && routeConfig.loadChildren && routeConfig._loadedRoutes) {\r\n baseChild = routeConfig._loadedRoutes.find((route: Route) => route.path === '');\r\n }\r\n\r\n const childConfig = baseChild?.data?.[BREADCRUMB_DATA_KEY] as BreadcrumbRouteDataInput;\r\n return childConfig\r\n ? this._mergeWithBaseChildData(baseChild ?? null, {\r\n ...this._extractObject(config),\r\n ...this._extractObject(childConfig),\r\n })\r\n : this._extractObject(config);\r\n }\r\n\r\n\r\n\r\n private _updateStore(key: StoreMatcherKey, breadcrumb: CmatBreadcrumbDefinition): void {\r\n if (key === 'alias' && breadcrumb.alias) {\r\n const existing = this._dynamicBreadcrumbStore.alias.get(breadcrumb.alias);\r\n this._dynamicBreadcrumbStore.alias.set(breadcrumb.alias, { ...(existing ?? {}), ...breadcrumb });\r\n return;\r\n }\r\n\r\n if (key === 'routeLink' && breadcrumb.routeLink) {\r\n const existing = this._dynamicBreadcrumbStore.routeLink.get(breadcrumb.routeLink);\r\n this._dynamicBreadcrumbStore.routeLink.set(breadcrumb.routeLink, { ...(existing ?? {}), ...breadcrumb });\r\n return;\r\n }\r\n\r\n if (key === 'routeRegex' && breadcrumb.routeRegex) {\r\n const existing = this._dynamicBreadcrumbStore.routeRegex.get(breadcrumb.routeRegex);\r\n this._dynamicBreadcrumbStore.routeRegex.set(breadcrumb.routeRegex, { ...(existing ?? {}), ...breadcrumb });\r\n }\r\n }\r\n\r\n\r\n private _updateCurrentBreadcrumbs(\r\n key: StoreMatcherKey,\r\n breadcrumb: CmatBreadcrumbDefinition\r\n ): void {\r\n const itemIndex = this._currentBreadcrumbs.findIndex((item) => {\r\n if (key === 'routeRegex') {\r\n return this._matchRegex(item.routeLink, breadcrumb.routeRegex);\r\n }\r\n\r\n if (key === 'alias') {\r\n return item.alias === breadcrumb.alias;\r\n }\r\n\r\n return item.routeLink === breadcrumb.routeLink;\r\n });\r\n\r\n if (itemIndex > -1) {\r\n this._currentBreadcrumbs[itemIndex] = {\r\n ...this._currentBreadcrumbs[itemIndex],\r\n ...breadcrumb,\r\n };\r\n this._publishCurrentBreadcrumbs();\r\n }\r\n }\r\n\r\n\r\n private _buildRegex(path: string): string {\r\n return this._ensureLeadingSlash(path).replace(\r\n new RegExp(PATH_PARAM.REGEX_IDENTIFIER, 'g'),\r\n PATH_PARAM.REGEX_REPLACER\r\n );\r\n }\r\n\r\n private _ensureLeadingSlash(path: string): string {\r\n return path.startsWith('/') ? path : `/${path}`;\r\n }\r\n\r\n\r\n private _extractLabel(config: CmatBreadcrumbConfig | undefined, resolvedParam?: string): string | undefined {\r\n if (!config) {\r\n return undefined;\r\n }\r\n\r\n const label = typeof config === 'object' ? config.label : config;\r\n if (typeof label === 'function') {\r\n return label(resolvedParam);\r\n }\r\n return label;\r\n }\r\n\r\n private _extractObject(config: CmatBreadcrumbConfig | undefined): CmatBreadcrumbObject {\r\n if (\r\n config &&\r\n (typeof config === 'string' || typeof config === 'function')\r\n ) {\r\n return { label: config };\r\n }\r\n return (config as CmatBreadcrumbObject) || {};\r\n }\r\n\r\n private _publishCurrentBreadcrumbs(): void {\r\n this._breadcrumbs.set(this._currentBreadcrumbs);\r\n }\r\n}\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { RouterLink } from '@angular/router';\r\nimport { CmatBreadcrumbItemDirective } from './breadcrumb-item.directive';\r\nimport { CmatBreadcrumbService } from './breadcrumb.service';\r\n\r\n@Component({\r\n selector: 'cmat-breadcrumb',\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrls: ['./breadcrumb.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatBreadcrumb',\r\n imports: [NgClass, RouterLink, NgTemplateOutlet]\r\n})\r\nexport class CmatBreadcrumbComponent {\r\n readonly itemTemplate = contentChild(CmatBreadcrumbItemDirective, { read: TemplateRef });\r\n\r\n readonly autoGenerate = input<boolean>(true);\r\n readonly preserveQueryParams = input<boolean>(true);\r\n readonly preserveFragment = input<boolean>(true);\r\n readonly class = input<string>('');\r\n readonly anchorTarget = input<'_blank' | void>(undefined);\r\n readonly separatorTemplate = signal<TemplateRef<void> | null>(null);\r\n readonly separator = input<string | TemplateRef<void> | void>(undefined);\r\n\r\n\r\n readonly breadcrumbs = computed(() => {\r\n const items = this._breadcrumbItems();\r\n const filtered = this._autoGenerate()\r\n ? items\r\n : items.filter(breadcrumb => !breadcrumb.isAutoGeneratedLabel);\r\n\r\n return filtered.map(item => ({\r\n ...item,\r\n label: item.label as string,\r\n finalRouteLink: item.routeInterceptor\r\n ? item.routeInterceptor(item, item.routeLink)\r\n : item.routeLink\r\n }));\r\n });\r\n\r\n private readonly _breadcrumbService = inject(CmatBreadcrumbService);\r\n private readonly _autoGenerate = signal(true);\r\n private readonly _breadcrumbItems =this._breadcrumbService.breadcrumbs; \r\n constructor() {\r\n effect(() => {\r\n if (this.separator() instanceof TemplateRef) {\r\n this.separatorTemplate.set(this.separator() as TemplateRef<void>);\r\n } else {\r\n this.separatorTemplate.set(null);\r\n }\r\n });\r\n }\r\n}\r\n","<nav aria-label=\"breadcrumb\" class=\"m-0\" [ngClass]=\"class\">\r\n <ol class=\"flex items-center flex-wrap m-0 p-0\">\r\n @for (\r\n breadcrumb of breadcrumbs(); track\r\n breadcrumb.routeLink ?? $index; let isLast = $last; let isFirst = $first; let index = $index; let count = $count) {\r\n <li class=\"list-none\">\r\n @if (!isLast) {\r\n <a class=\"cmat-breadcrumb-link\"\r\n rel=\"noopener noreferrer\"\r\n [ngClass]=\"{ 'pointer-events-none cursor-not-allowed': breadcrumb.disable }\" \r\n [attr.aria-disabled]=\"breadcrumb.disable\"\r\n [attr.tabIndex]=\"breadcrumb.disable ? -1 : 0\" \r\n [routerLink]=\"breadcrumb.finalRouteLink\" \r\n [queryParams]=\"preserveQueryParams() ? breadcrumb.queryParams : undefined\"\r\n [fragment]=\"preserveFragment() ? breadcrumb.fragment : undefined\"\r\n [target]=\"anchorTarget() === '_blank' ? '_blank' : '_self'\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate()\"></ng-container>\r\n @if (!itemTemplate()) {\r\n {{ breadcrumb.label }}\r\n }\r\n </a>\r\n }\r\n @if (isLast) {\r\n <span class=\"flex items-center\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate()\"></ng-container>\r\n @if (!itemTemplate()) {\r\n {{ breadcrumb.label }}\r\n }\r\n </span>\r\n }\r\n </li>\r\n @if (!isLast) {\r\n <li class=\"flex select-none mx-4\" aria-hidden=\"true\" role=\"separator\">\r\n <ng-container *ngTemplateOutlet=\"separatorTemplate()\"></ng-container>\r\n @if (separatorTemplate===null) {\r\n {{ separator() }}\r\n }\r\n </li>\r\n }\r\n }\r\n </ol>\r\n</nav>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,47 +1,39 @@
1
1
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
2
  import * as i0 from '@angular/core';
3
- import { HostBinding, Input, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
3
+ import { model, input, output, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
4
4
 
5
+ /* eslint-disable @typescript-eslint/naming-convention */
5
6
  class CmatCardComponent {
6
7
  constructor() {
7
- this.expanded = false;
8
- this.face = 'front';
9
- this.flippable = false;
8
+ this.face = model('front', /* @ts-ignore */
9
+ ...(ngDevMode ? [{ debugName: "face" }] : /* istanbul ignore next */ []));
10
+ this.expanded = model(false, /* @ts-ignore */
11
+ ...(ngDevMode ? [{ debugName: "expanded" }] : /* istanbul ignore next */ []));
12
+ this.flippable = input(false, { ...(ngDevMode ? { debugName: "flippable" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
13
+ this.faceChanged = output();
14
+ this.expandedChanged = output();
10
15
  }
11
- get classList() {
12
- /* eslint-disable @typescript-eslint/naming-convention */
13
- return {
14
- 'cmat-card-expanded': this.expanded,
15
- 'cmat-card-face-back': this.flippable && this.face === 'back',
16
- 'cmat-card-face-front': this.flippable && this.face === 'front',
17
- 'cmat-card-flippable': this.flippable
18
- };
19
- /* eslint-enable @typescript-eslint/naming-convention */
16
+ toggleFace() {
17
+ const newFace = this.face() === 'front' ? 'back' : 'front';
18
+ this.face.set(newFace);
19
+ this.faceChanged.emit(newFace);
20
20
  }
21
- ngOnChanges(changes) {
22
- if ('expanded' in changes) {
23
- this.expanded = coerceBooleanProperty(changes['expanded'].currentValue);
24
- }
25
- if ('flippable' in changes) {
26
- this.flippable = coerceBooleanProperty(changes['flippable'].currentValue);
27
- }
21
+ toggleExpand() {
22
+ this.expanded.update(v => !v);
23
+ this.expandedChanged.emit(this.expanded());
28
24
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CmatCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: CmatCardComponent, isStandalone: true, selector: "cmat-card", inputs: { expanded: "expanded", face: "face", flippable: "flippable" }, host: { properties: { "class": "this.classList" } }, exportAs: ["cmatCard"], usesOnChanges: true, ngImport: i0, template: "\r\n@if (flippable) {\r\n\r\n<div class=\"cmat-card-front\">\r\n <ng-content select=\"[cmatCardFront]\"></ng-content>\r\n</div>\r\n\r\n<div class=\"cmat-card-back overflow-y-auto scrollbar-custom\">\r\n <ng-content select=\"[cmatCardBack]\"></ng-content>\r\n</div>\r\n}\r\n\r\n\r\n@if (!flippable) {\r\n\r\n<ng-content></ng-content>\r\n\r\n@if (expanded) {\r\n<div class=\"cmat-card-expansion expand-collapse-animation\" animate.leave=\"expand-collapse-animation-leaving\">\r\n <div>\r\n <ng-content select=\"[cmatCardExpansion]\"></ng-content>\r\n </div>\r\n</div>\r\n}\r\n}", styles: ["cmat-card{position:relative;display:flex;overflow:hidden;border-radius:1rem}cmat-card.cmat-card-flippable{border-width:0!important;border-radius:1rem;overflow:visible;transform-style:preserve-3d;transition:transform 1s;perspective:600px;background:transparent!important}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-back{visibility:visible;opacity:1;transform:rotateY(360deg)}cmat-card.cmat-card-flippable .cmat-card-front,cmat-card.cmat-card-flippable .cmat-card-back{display:flex;flex-direction:column;flex:1 1 auto;z-index:10;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;backface-visibility:hidden;border-radius:1rem}cmat-card.cmat-card-flippable .cmat-card-front{position:relative;opacity:1;visibility:visible;transform:rotateY(0);overflow:hidden}cmat-card.cmat-card-flippable .cmat-card-back{position:absolute;inset:0;opacity:0;visibility:hidden;transform:rotateY(180deg)}\n", ".expand-collapse-animation{display:grid!important;grid-template-rows:1fr;overflow:hidden;transition:grid-template-rows 225ms cubic-bezier(.4,0,.2,1)}@starting-style{.expand-collapse-animation{grid-template-rows:0fr}}.expand-collapse-animation>div{min-height:0;transition:opacity 225ms ease-in-out}.expand-collapse-animation.collapsed{grid-template-rows:0fr}.expand-collapse-animation.collapsed>div{opacity:0}.expand-collapse-animation-leaving{grid-template-rows:0fr}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: CmatCardComponent, isStandalone: true, selector: "cmat-card", inputs: { face: { classPropertyName: "face", publicName: "face", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, flippable: { classPropertyName: "flippable", publicName: "flippable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { face: "faceChange", expanded: "expandedChange", faceChanged: "faceChanged", expandedChanged: "expandedChanged" }, host: { properties: { "class.cmat-card-expanded": "expanded()", "class.cmat-card-face-back": "flippable() && face() === \"back\"", "class.cmat-card-face-front": "flippable() && face() === \"front\"", "class.cmat-card-flippable": "flippable()" } }, exportAs: ["cmatCard"], ngImport: i0, template: "@if (flippable()) {\r\n<div class=\"cmat-card-front\" [attr.aria-hidden]=\"face() !== 'front'\">\r\n <ng-content select=\"[cmatCardFront]\"></ng-content>\r\n</div>\r\n<div class=\"cmat-card-back overflow-y-auto scrollbar-custom\" [attr.aria-hidden]=\"face() !== 'back'\">\r\n <ng-content select=\"[cmatCardBack]\"></ng-content>\r\n</div>\r\n}\r\n @else {\r\n<ng-content></ng-content>\r\n\r\n@if (expanded()) {\r\n<div class=\"cmat-card-expansion expand-collapse-animation\" role=\"region\"\r\n animate.leave=\"expand-collapse-animation-leaving\" [attr.aria-labelledby]=\"'header'\">\r\n <div>\r\n <ng-content select=\"[cmatCardExpansion]\"></ng-content>\r\n </div>\r\n</div>\r\n}\r\n}", styles: ["cmat-card{position:relative;display:flex;overflow:hidden;border-radius:1rem}cmat-card.cmat-card-flippable{border-width:0!important;border-radius:1rem;overflow:visible;transform-style:preserve-3d;transition:transform 1s;perspective:600px;background:transparent!important}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-back{visibility:visible;opacity:1;transform:rotateY(360deg)}cmat-card.cmat-card-flippable .cmat-card-front,cmat-card.cmat-card-flippable .cmat-card-back{display:flex;flex-direction:column;flex:1 1 auto;z-index:10;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;backface-visibility:hidden;border-radius:1rem}cmat-card.cmat-card-flippable .cmat-card-front{position:relative;opacity:1;visibility:visible;transform:rotateY(0);overflow:hidden}cmat-card.cmat-card-flippable .cmat-card-back{position:absolute;inset:0;opacity:0;visibility:hidden;transform:rotateY(180deg)}\n", ".expand-collapse-animation{display:grid!important;grid-template-rows:1fr;overflow:hidden;transition:grid-template-rows 225ms cubic-bezier(.4,0,.2,1)}@starting-style{.expand-collapse-animation{grid-template-rows:0fr}}.expand-collapse-animation>div{min-height:0;transition:opacity 225ms ease-in-out}.expand-collapse-animation.collapsed{grid-template-rows:0fr}.expand-collapse-animation.collapsed>div{opacity:0}.expand-collapse-animation-leaving{grid-template-rows:0fr}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
31
27
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CmatCardComponent, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatCardComponent, decorators: [{
33
29
  type: Component,
34
- args: [{ selector: 'cmat-card', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatCard', imports: [], template: "\r\n@if (flippable) {\r\n\r\n<div class=\"cmat-card-front\">\r\n <ng-content select=\"[cmatCardFront]\"></ng-content>\r\n</div>\r\n\r\n<div class=\"cmat-card-back overflow-y-auto scrollbar-custom\">\r\n <ng-content select=\"[cmatCardBack]\"></ng-content>\r\n</div>\r\n}\r\n\r\n\r\n@if (!flippable) {\r\n\r\n<ng-content></ng-content>\r\n\r\n@if (expanded) {\r\n<div class=\"cmat-card-expansion expand-collapse-animation\" animate.leave=\"expand-collapse-animation-leaving\">\r\n <div>\r\n <ng-content select=\"[cmatCardExpansion]\"></ng-content>\r\n </div>\r\n</div>\r\n}\r\n}", styles: ["cmat-card{position:relative;display:flex;overflow:hidden;border-radius:1rem}cmat-card.cmat-card-flippable{border-width:0!important;border-radius:1rem;overflow:visible;transform-style:preserve-3d;transition:transform 1s;perspective:600px;background:transparent!important}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-back{visibility:visible;opacity:1;transform:rotateY(360deg)}cmat-card.cmat-card-flippable .cmat-card-front,cmat-card.cmat-card-flippable .cmat-card-back{display:flex;flex-direction:column;flex:1 1 auto;z-index:10;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;backface-visibility:hidden;border-radius:1rem}cmat-card.cmat-card-flippable .cmat-card-front{position:relative;opacity:1;visibility:visible;transform:rotateY(0);overflow:hidden}cmat-card.cmat-card-flippable .cmat-card-back{position:absolute;inset:0;opacity:0;visibility:hidden;transform:rotateY(180deg)}\n", ".expand-collapse-animation{display:grid!important;grid-template-rows:1fr;overflow:hidden;transition:grid-template-rows 225ms cubic-bezier(.4,0,.2,1)}@starting-style{.expand-collapse-animation{grid-template-rows:0fr}}.expand-collapse-animation>div{min-height:0;transition:opacity 225ms ease-in-out}.expand-collapse-animation.collapsed{grid-template-rows:0fr}.expand-collapse-animation.collapsed>div{opacity:0}.expand-collapse-animation-leaving{grid-template-rows:0fr}\n"] }]
35
- }], propDecorators: { expanded: [{
36
- type: Input
37
- }], face: [{
38
- type: Input
39
- }], flippable: [{
40
- type: Input
41
- }], classList: [{
42
- type: HostBinding,
43
- args: ['class']
44
- }] } });
30
+ args: [{ selector: 'cmat-card', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
31
+ '[class.cmat-card-expanded]': 'expanded()',
32
+ '[class.cmat-card-face-back]': 'flippable() && face() === "back"',
33
+ '[class.cmat-card-face-front]': 'flippable() && face() === "front"',
34
+ '[class.cmat-card-flippable]': 'flippable()',
35
+ }, exportAs: 'cmatCard', imports: [], template: "@if (flippable()) {\r\n<div class=\"cmat-card-front\" [attr.aria-hidden]=\"face() !== 'front'\">\r\n <ng-content select=\"[cmatCardFront]\"></ng-content>\r\n</div>\r\n<div class=\"cmat-card-back overflow-y-auto scrollbar-custom\" [attr.aria-hidden]=\"face() !== 'back'\">\r\n <ng-content select=\"[cmatCardBack]\"></ng-content>\r\n</div>\r\n}\r\n @else {\r\n<ng-content></ng-content>\r\n\r\n@if (expanded()) {\r\n<div class=\"cmat-card-expansion expand-collapse-animation\" role=\"region\"\r\n animate.leave=\"expand-collapse-animation-leaving\" [attr.aria-labelledby]=\"'header'\">\r\n <div>\r\n <ng-content select=\"[cmatCardExpansion]\"></ng-content>\r\n </div>\r\n</div>\r\n}\r\n}", styles: ["cmat-card{position:relative;display:flex;overflow:hidden;border-radius:1rem}cmat-card.cmat-card-flippable{border-width:0!important;border-radius:1rem;overflow:visible;transform-style:preserve-3d;transition:transform 1s;perspective:600px;background:transparent!important}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-back{visibility:visible;opacity:1;transform:rotateY(360deg)}cmat-card.cmat-card-flippable .cmat-card-front,cmat-card.cmat-card-flippable .cmat-card-back{display:flex;flex-direction:column;flex:1 1 auto;z-index:10;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;backface-visibility:hidden;border-radius:1rem}cmat-card.cmat-card-flippable .cmat-card-front{position:relative;opacity:1;visibility:visible;transform:rotateY(0);overflow:hidden}cmat-card.cmat-card-flippable .cmat-card-back{position:absolute;inset:0;opacity:0;visibility:hidden;transform:rotateY(180deg)}\n", ".expand-collapse-animation{display:grid!important;grid-template-rows:1fr;overflow:hidden;transition:grid-template-rows 225ms cubic-bezier(.4,0,.2,1)}@starting-style{.expand-collapse-animation{grid-template-rows:0fr}}.expand-collapse-animation>div{min-height:0;transition:opacity 225ms ease-in-out}.expand-collapse-animation.collapsed{grid-template-rows:0fr}.expand-collapse-animation.collapsed>div{opacity:0}.expand-collapse-animation-leaving{grid-template-rows:0fr}\n"] }]
36
+ }], propDecorators: { face: [{ type: i0.Input, args: [{ isSignal: true, alias: "face", required: false }] }, { type: i0.Output, args: ["faceChange"] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }, { type: i0.Output, args: ["expandedChange"] }], flippable: [{ type: i0.Input, args: [{ isSignal: true, alias: "flippable", required: false }] }], faceChanged: [{ type: i0.Output, args: ["faceChanged"] }], expandedChanged: [{ type: i0.Output, args: ["expandedChanged"] }] } });
45
37
 
46
38
  /**
47
39
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-card.mjs","sources":["../../../projects/cmat/components/card/card.component.ts","../../../projects/cmat/components/card/card.component.html","../../../projects/cmat/components/card/cmat-components-card.ts"],"sourcesContent":["import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';\r\nimport { CmatCardFace } from './card.types';\r\n\r\n@Component({\r\n selector: 'cmat-card',\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss', '../../animations/expand-collapse.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatCard',\r\n imports: []\r\n})\r\nexport class CmatCardComponent implements OnChanges {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n static ngAcceptInputType_expanded: BooleanInput;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n static ngAcceptInputType_flippable: BooleanInput;\r\n\r\n @Input() expanded: boolean = false;\r\n @Input() face: CmatCardFace = 'front';\r\n @Input() flippable: boolean = false;\r\n @HostBinding('class') get classList(): Record<string, boolean> {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n return {\r\n 'cmat-card-expanded': this.expanded,\r\n 'cmat-card-face-back': this.flippable && this.face === 'back',\r\n 'cmat-card-face-front': this.flippable && this.face === 'front',\r\n 'cmat-card-flippable': this.flippable\r\n };\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if ('expanded' in changes) {\r\n this.expanded = coerceBooleanProperty(changes['expanded'].currentValue);\r\n }\r\n if ('flippable' in changes) {\r\n this.flippable = coerceBooleanProperty(changes['flippable'].currentValue);\r\n }\r\n }\r\n}","\r\n@if (flippable) {\r\n\r\n<div class=\"cmat-card-front\">\r\n <ng-content select=\"[cmatCardFront]\"></ng-content>\r\n</div>\r\n\r\n<div class=\"cmat-card-back overflow-y-auto scrollbar-custom\">\r\n <ng-content select=\"[cmatCardBack]\"></ng-content>\r\n</div>\r\n}\r\n\r\n\r\n@if (!flippable) {\r\n\r\n<ng-content></ng-content>\r\n\r\n@if (expanded) {\r\n<div class=\"cmat-card-expansion expand-collapse-animation\" animate.leave=\"expand-collapse-animation-leaving\">\r\n <div>\r\n <ng-content select=\"[cmatCardExpansion]\"></ng-content>\r\n </div>\r\n</div>\r\n}\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAaa,iBAAiB,CAAA;AAT9B,IAAA,WAAA,GAAA;QAea,IAAA,CAAA,QAAQ,GAAY,KAAK;QACzB,IAAA,CAAA,IAAI,GAAiB,OAAO;QAC5B,IAAA,CAAA,SAAS,GAAY,KAAK;AAoBtC,IAAA;AAnBG,IAAA,IAA0B,SAAS,GAAA;;QAE/B,OAAO;YACH,oBAAoB,EAAE,IAAI,CAAC,QAAQ;YACnC,qBAAqB,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAC7D,sBAAsB,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAC/D,qBAAqB,EAAE,IAAI,CAAC;SAC/B;;IAEL;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,UAAU,IAAI,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC;QAC3E;AACA,QAAA,IAAI,WAAW,IAAI,OAAO,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC;QAC7E;IACJ;+GA3BS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,+OCb9B,wkBAwBC,EAAA,MAAA,EAAA,CAAA,kiCAAA,EAAA,sdAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDXY,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;+BACI,WAAW,EAAA,aAAA,EAGN,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,UAAU,EAAA,OAAA,EACX,EAAE,EAAA,QAAA,EAAA,wkBAAA,EAAA,MAAA,EAAA,CAAA,kiCAAA,EAAA,sdAAA,CAAA,EAAA;;sBAQV;;sBACA;;sBACA;;sBACA,WAAW;uBAAC,OAAO;;;AEtBxB;;AAEG;;;;"}
1
+ {"version":3,"file":"cmat-components-card.mjs","sources":["../../../projects/cmat/components/card/card.component.ts","../../../projects/cmat/components/card/card.component.html","../../../projects/cmat/components/card/cmat-components-card.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n input,\r\n model,\r\n output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CmatCardFace } from './card.types';\r\n\r\n@Component({\r\n selector: 'cmat-card',\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss', '../../animations/expand-collapse.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class.cmat-card-expanded]': 'expanded()', \r\n '[class.cmat-card-face-back]': 'flippable() && face() === \"back\"', \r\n '[class.cmat-card-face-front]': 'flippable() && face() === \"front\"', \r\n '[class.cmat-card-flippable]': 'flippable()',\r\n },\r\n exportAs: 'cmatCard',\r\n imports: []\r\n})\r\nexport class CmatCardComponent {\r\n readonly face = model<CmatCardFace>('front');\r\n readonly expanded = model(false);\r\n readonly flippable = input(false, { transform: coerceBooleanProperty });\r\n\r\n readonly faceChanged = output<CmatCardFace>();\r\n readonly expandedChanged = output<boolean>();\r\n\r\n toggleFace(): void {\r\n const newFace = this.face() === 'front' ? 'back' : 'front';\r\n this.face.set(newFace);\r\n this.faceChanged.emit(newFace);\r\n }\r\n\r\n toggleExpand(): void {\r\n this.expanded.update(v => !v);\r\n this.expandedChanged.emit(this.expanded());\r\n }\r\n}","@if (flippable()) {\r\n<div class=\"cmat-card-front\" [attr.aria-hidden]=\"face() !== 'front'\">\r\n <ng-content select=\"[cmatCardFront]\"></ng-content>\r\n</div>\r\n<div class=\"cmat-card-back overflow-y-auto scrollbar-custom\" [attr.aria-hidden]=\"face() !== 'back'\">\r\n <ng-content select=\"[cmatCardBack]\"></ng-content>\r\n</div>\r\n}\r\n @else {\r\n<ng-content></ng-content>\r\n\r\n@if (expanded()) {\r\n<div class=\"cmat-card-expansion expand-collapse-animation\" role=\"region\"\r\n animate.leave=\"expand-collapse-animation-leaving\" [attr.aria-labelledby]=\"'header'\">\r\n <div>\r\n <ng-content select=\"[cmatCardExpansion]\"></ng-content>\r\n </div>\r\n</div>\r\n}\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAAA;MA2Ba,iBAAiB,CAAA;AAf9B,IAAA,WAAA,GAAA;QAgBa,IAAA,CAAA,IAAI,GAAG,KAAK,CAAe,OAAO;iFAAC;QACnC,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK;qFAAC;QACvB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,qBAAqB,EAAA,CAAG;QAE9D,IAAA,CAAA,WAAW,GAAG,MAAM,EAAgB;QACpC,IAAA,CAAA,eAAe,GAAG,MAAM,EAAW;AAY/C,IAAA;IAVG,UAAU,GAAA;AACN,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO;AAC1D,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;IAClC;IAEA,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9C;8GAjBS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,w1BC3B9B,srBAmBC,EAAA,MAAA,EAAA,CAAA,kiCAAA,EAAA,sdAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDQY,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAf7B,SAAS;+BACI,WAAW,EAAA,aAAA,EAGN,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,4BAA4B,EAAE,YAAY;AAC1C,wBAAA,6BAA6B,EAAE,kCAAkC;AACjE,wBAAA,8BAA8B,EAAE,mCAAmC;AACnE,wBAAA,6BAA6B,EAAE,aAAa;qBAC/C,EAAA,QAAA,EACS,UAAU,WACX,EAAE,EAAA,QAAA,EAAA,srBAAA,EAAA,MAAA,EAAA,CAAA,kiCAAA,EAAA,sdAAA,CAAA,EAAA;;;AEzBf;;AAEG;;;;"}