@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
@@ -20,10 +20,10 @@ import { CommonModule } from '@angular/common';
20
20
  * counted by checking the query list's length.
21
21
  */
22
22
  class CuteLine {
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteLine, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
24
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteLine, isStandalone: true, selector: "[cute-line], [cuteLine]", host: { classAttribute: "cute-line" }, ngImport: i0 }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteLine, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
24
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: CuteLine, isStandalone: true, selector: "[cute-line], [cuteLine]", host: { classAttribute: "cute-line" }, ngImport: i0 }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteLine, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteLine, decorators: [{
27
27
  type: Directive,
28
28
  args: [{
29
29
  selector: '[cute-line], [cuteLine]',
@@ -66,11 +66,11 @@ const TYPES = [
66
66
  CuteLine
67
67
  ];
68
68
  class CuteLineModule {
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteLineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
70
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: CuteLineModule, imports: [CommonModule, CuteLine], exports: [CuteLine] }); }
71
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteLineModule, imports: [CommonModule] }); }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteLineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
70
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: CuteLineModule, imports: [CommonModule, CuteLine], exports: [CuteLine] }); }
71
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteLineModule, imports: [CommonModule] }); }
72
72
  }
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteLineModule, decorators: [{
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteLineModule, decorators: [{
74
74
  type: NgModule,
75
75
  args: [{
76
76
  imports: [CommonModule, ...TYPES],
@@ -1 +1 @@
1
- {"version":3,"file":"cute-widgets-base-core-line.mjs","sources":["../../../../projects/cute-widgets/base/core/line/src/line.ts","../../../../projects/cute-widgets/base/core/line/src/line.module.ts","../../../../projects/cute-widgets/base/core/line/cute-widgets-base-core-line.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 {Directive, ElementRef, QueryList} from '@angular/core';\r\nimport {startWith} from 'rxjs/operators';\r\n\r\n/**\r\n * Shared directive to count lines inside a text area, such as a list item.\r\n * Line elements can be extracted with a @ContentChildren(CuteLine) query, then\r\n * counted by checking the query list's length.\r\n */\r\n@Directive({\r\n selector: '[cute-line], [cuteLine]',\r\n host: {'class': 'cute-line'},\r\n standalone: true,\r\n})\r\nexport class CuteLine {}\r\n\r\n/**\r\n * Helper that takes a query list of lines and sets the correct class on the host.\r\n */\r\nexport function setLines(\r\n lines: QueryList<unknown>,\r\n element: ElementRef<HTMLElement>,\r\n prefix = 'cute',\r\n) {\r\n // Note: doesn't need to unsubscribe, because `changes`\r\n // gets completed by Angular when the view is destroyed.\r\n lines.changes.pipe(startWith(lines)).subscribe(({length}) => {\r\n setClass(element, `${prefix}-2-line`, false);\r\n setClass(element, `${prefix}-3-line`, false);\r\n setClass(element, `${prefix}-multi-line`, false);\r\n\r\n if (length === 2 || length === 3) {\r\n setClass(element, `${prefix}-${length}-line`, true);\r\n } else if (length > 3) {\r\n setClass(element, `${prefix}-multi-line`, true);\r\n }\r\n });\r\n}\r\n\r\n/** Adds or removes a class from an element. */\r\nfunction setClass(element: ElementRef<HTMLElement>, className: string, isAdd: boolean): void {\r\n element.nativeElement.classList.toggle(className, isAdd);\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 {CuteLine} from \"./line\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteLine\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CuteLineModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;;;;;;;;;;AAUG;AAIH;;;;AAIG;MAMU,QAAQ,CAAA;+GAAR,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBALpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,IAAI,EAAE,EAAC,OAAO,EAAE,WAAW,EAAC;AAC5B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;AAGD;;AAEG;AACG,SAAU,QAAQ,CACtB,KAAyB,EACzB,OAAgC,EAChC,MAAM,GAAG,MAAM,EAAA;;;AAIf,IAAA,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,MAAM,EAAC,KAAI;QAC1D,QAAQ,CAAC,OAAO,EAAE,CAAA,EAAG,MAAM,CAAA,OAAA,CAAS,EAAE,KAAK,CAAC;QAC5C,QAAQ,CAAC,OAAO,EAAE,CAAA,EAAG,MAAM,CAAA,OAAA,CAAS,EAAE,KAAK,CAAC;QAC5C,QAAQ,CAAC,OAAO,EAAE,CAAA,EAAG,MAAM,CAAA,WAAA,CAAa,EAAE,KAAK,CAAC;QAEhD,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;YAChC,QAAQ,CAAC,OAAO,EAAE,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,KAAA,CAAO,EAAE,IAAI,CAAC;QACrD;AAAO,aAAA,IAAI,MAAM,GAAG,CAAC,EAAE;YACrB,QAAQ,CAAC,OAAO,EAAE,CAAA,EAAG,MAAM,CAAA,WAAA,CAAa,EAAE,IAAI,CAAC;QACjD;AACF,IAAA,CAAC,CAAC;AACJ;AAEA;AACA,SAAS,QAAQ,CAAC,OAAgC,EAAE,SAAiB,EAAE,KAAc,EAAA;IACnF,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;AAC1D;;ACpDA;;;;;;;AAOG;AAKH,MAAM,KAAK,GAAwB;IACjC;CACD;MAOY,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAAA,OAAA,EAAA,CAJf,YAAY,EAJtB,QAAQ,aAAR,QAAQ,CAAA,EAAA,CAAA,CAAA;AAQG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAJf,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAIX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC;AACjC,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,YAAY,EAAE,EAAE;AACjB,iBAAA;;;ACpBD;;AAEG;;;;"}
1
+ {"version":3,"file":"cute-widgets-base-core-line.mjs","sources":["../../../../projects/cute-widgets/base/core/line/src/line.ts","../../../../projects/cute-widgets/base/core/line/src/line.module.ts","../../../../projects/cute-widgets/base/core/line/cute-widgets-base-core-line.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 {Directive, ElementRef, QueryList} from '@angular/core';\r\nimport {startWith} from 'rxjs/operators';\r\n\r\n/**\r\n * Shared directive to count lines inside a text area, such as a list item.\r\n * Line elements can be extracted with a @ContentChildren(CuteLine) query, then\r\n * counted by checking the query list's length.\r\n */\r\n@Directive({\r\n selector: '[cute-line], [cuteLine]',\r\n host: {'class': 'cute-line'},\r\n standalone: true,\r\n})\r\nexport class CuteLine {}\r\n\r\n/**\r\n * Helper that takes a query list of lines and sets the correct class on the host.\r\n */\r\nexport function setLines(\r\n lines: QueryList<unknown>,\r\n element: ElementRef<HTMLElement>,\r\n prefix = 'cute',\r\n) {\r\n // Note: doesn't need to unsubscribe, because `changes`\r\n // gets completed by Angular when the view is destroyed.\r\n lines.changes.pipe(startWith(lines)).subscribe(({length}) => {\r\n setClass(element, `${prefix}-2-line`, false);\r\n setClass(element, `${prefix}-3-line`, false);\r\n setClass(element, `${prefix}-multi-line`, false);\r\n\r\n if (length === 2 || length === 3) {\r\n setClass(element, `${prefix}-${length}-line`, true);\r\n } else if (length > 3) {\r\n setClass(element, `${prefix}-multi-line`, true);\r\n }\r\n });\r\n}\r\n\r\n/** Adds or removes a class from an element. */\r\nfunction setClass(element: ElementRef<HTMLElement>, className: string, isAdd: boolean): void {\r\n element.nativeElement.classList.toggle(className, isAdd);\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 {CuteLine} from \"./line\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteLine\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CuteLineModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;;;;;;;;;;AAUG;AAIH;;;;AAIG;MAMU,QAAQ,CAAA;8GAAR,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBALpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,IAAI,EAAE,EAAC,OAAO,EAAE,WAAW,EAAC;AAC5B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;AAGD;;AAEG;AACG,SAAU,QAAQ,CACtB,KAAyB,EACzB,OAAgC,EAChC,MAAM,GAAG,MAAM,EAAA;;;AAIf,IAAA,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,MAAM,EAAC,KAAI;QAC1D,QAAQ,CAAC,OAAO,EAAE,CAAA,EAAG,MAAM,CAAA,OAAA,CAAS,EAAE,KAAK,CAAC;QAC5C,QAAQ,CAAC,OAAO,EAAE,CAAA,EAAG,MAAM,CAAA,OAAA,CAAS,EAAE,KAAK,CAAC;QAC5C,QAAQ,CAAC,OAAO,EAAE,CAAA,EAAG,MAAM,CAAA,WAAA,CAAa,EAAE,KAAK,CAAC;QAEhD,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;YAChC,QAAQ,CAAC,OAAO,EAAE,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,KAAA,CAAO,EAAE,IAAI,CAAC;QACrD;AAAO,aAAA,IAAI,MAAM,GAAG,CAAC,EAAE;YACrB,QAAQ,CAAC,OAAO,EAAE,CAAA,EAAG,MAAM,CAAA,WAAA,CAAa,EAAE,IAAI,CAAC;QACjD;AACF,IAAA,CAAC,CAAC;AACJ;AAEA;AACA,SAAS,QAAQ,CAAC,OAAgC,EAAE,SAAiB,EAAE,KAAc,EAAA;IACnF,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;AAC1D;;ACpDA;;;;;;;AAOG;AAKH,MAAM,KAAK,GAAwB;IACjC;CACD;MAOY,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAAA,OAAA,EAAA,CAJf,YAAY,EAJtB,QAAQ,aAAR,QAAQ,CAAA,EAAA,CAAA,CAAA;AAQG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAJf,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC;AACjC,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,YAAY,EAAE,EAAE;AACjB,iBAAA;;;ACpBD;;AAEG;;;;"}
@@ -29,9 +29,11 @@ class CuteNavLink extends CuteFocusableControl {
29
29
  this._document = inject(DOCUMENT);
30
30
  this._ngZone = inject(NgZone);
31
31
  this.nav = inject(CUTE_NAV, { optional: true });
32
+ this._isAnchor = false;
32
33
  this.toThemeColor = toThemeColor;
33
34
  /** Whether the link is active. */
34
35
  this.active = false;
36
+ this._isAnchor = (this._nativeElement.tagName == "A");
35
37
  this._focusMonitor.monitor(this._elementRef)
36
38
  .pipe(takeUntilDestroyed())
37
39
  .subscribe(origin => {
@@ -97,10 +99,10 @@ class CuteNavLink extends CuteFocusableControl {
97
99
  this.role = "tab";
98
100
  }
99
101
  }
100
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavLink, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
101
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.15", type: CuteNavLink, isStandalone: true, selector: "a[cute-nav-link], a[cuteNavLink],\n button[cute-nav-link], button[cuteNavLink]\n ", inputs: { active: ["active", "active", booleanAttribute], ariaControls: ["aria-controls", "ariaControls"] }, host: { listeners: { "click": "onClick($event)" }, properties: { "class.active": "active", "class.disabled": "disabled", "disabled": "disabled", "attr.aria-disabled": "disabled", "attr.aria-current": "active ? \"page\" : null", "attr.aria-selected": "active || null", "aria-controls": "ariaControls || getAriaControls()", "attr.id": "id || null", "attr.role": "role || null", "attr.tabindex": "active && !disabled ? 0 : -1", "style.--bs-btn-border-radius": "0", "style.--bs-navbar-active-color": "!nav.isTab() ? \"var(\"+(color ? \"--bs-\"+toThemeColor(color)+\"-text-emphasis\" : \"--bs-emphasis-color\")+\")\" : undefined" }, classAttribute: "cute-nav-link nav-link" }, exportAs: ["cuteNavLink"], usesInheritance: true, ngImport: i0 }); }
102
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavLink, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
103
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.2.0", type: CuteNavLink, isStandalone: true, selector: "a[cute-nav-link], a[cuteNavLink],\n button[cute-nav-link], button[cuteNavLink]\n ", inputs: { active: ["active", "active", booleanAttribute], ariaControls: ["aria-controls", "ariaControls"] }, host: { listeners: { "click": "onClick($event)" }, properties: { "class.active": "active", "class.disabled": "disabled", "attr.disabled": "_isAnchor && disabled ? true : null", "attr.aria-disabled": "disabled", "attr.aria-current": "active ? \"page\" : null", "attr.aria-selected": "active || null", "aria-controls": "ariaControls || getAriaControls()", "attr.id": "id || null", "attr.role": "role || null", "attr.tabindex": "active && !disabled ? 0 : -1", "style.--bs-btn-border-radius": "0", "style.--bs-navbar-active-color": "nav && !nav.isTab() ? \"var(\"+(color ? \"--bs-\"+toThemeColor(color)+\"-text-emphasis\" : \"--bs-emphasis-color\")+\")\" : undefined" }, classAttribute: "cute-nav-link nav-link" }, exportAs: ["cuteNavLink"], usesInheritance: true, ngImport: i0 }); }
102
104
  }
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavLink, decorators: [{
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavLink, decorators: [{
104
106
  type: Directive,
105
107
  args: [{
106
108
  selector: `a[cute-nav-link], a[cuteNavLink],
@@ -112,7 +114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
112
114
  //'[class]': 'color ? "link-"+toThemeColor(color) : undefined',
113
115
  '[class.active]': 'active',
114
116
  '[class.disabled]': 'disabled',
115
- '[disabled]': 'disabled',
117
+ '[attr.disabled]': '_isAnchor && disabled ? true : null',
116
118
  '[attr.aria-disabled]': 'disabled',
117
119
  '[attr.aria-current]': 'active ? "page" : null',
118
120
  '[attr.aria-selected]': 'active || null',
@@ -121,7 +123,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
121
123
  '[attr.role]': 'role || null',
122
124
  '[attr.tabindex]': 'active && !disabled ? 0 : -1',
123
125
  '[style.--bs-btn-border-radius]': '0', // bootstrap's tab-link already stylized with radius of top angles
124
- '[style.--bs-navbar-active-color]': '!nav.isTab() ? "var("+(color ? "--bs-"+toThemeColor(color)+"-text-emphasis" : "--bs-emphasis-color")+")" : undefined',
126
+ '[style.--bs-navbar-active-color]': 'nav && !nav.isTab() ? "var("+(color ? "--bs-"+toThemeColor(color)+"-text-emphasis" : "--bs-emphasis-color")+")" : undefined',
125
127
  '(click)': 'onClick($event)',
126
128
  //'(touchstart)': 'onTouchStart($event)',
127
129
  },
@@ -150,10 +152,10 @@ class CuteNavContent /* extends ... */ {
150
152
  constructor() {
151
153
  this.template = inject(TemplateRef);
152
154
  }
153
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavContent /* extends ... */, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
154
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteNavContent /* extends ... */, isStandalone: true, selector: "ng-template[cuteNavContent], ng-template[cute-nav-content]", exportAs: ["cuteNavContent"], ngImport: i0 }); }
155
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavContent /* extends ... */, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
156
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: CuteNavContent /* extends ... */, isStandalone: true, selector: "ng-template[cuteNavContent], ng-template[cute-nav-content]", exportAs: ["cuteNavContent"], ngImport: i0 }); }
155
157
  }
156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavContent /* extends ... */, decorators: [{
158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavContent /* extends ... */, decorators: [{
157
159
  type: Directive,
158
160
  args: [{
159
161
  selector: 'ng-template[cuteNavContent], ng-template[cute-nav-content]',
@@ -227,8 +229,8 @@ class CuteNavItem extends CuteLayoutControl {
227
229
  this._contentPortal = new TemplatePortal(contentTemplate, this._viewContainerRef);
228
230
  }
229
231
  }
230
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
231
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.15", type: CuteNavItem, isStandalone: true, selector: "cute-nav-item, [cute-nav-item], [cuteNavItem]", inputs: { preserveTabContent: ["preserveTabContent", "preserveTabContent", booleanAttribute] }, host: { properties: { "attr.role": "role || null" }, classAttribute: "cute-nav-item nav-item" }, providers: [{ provide: CUTE_NAV_ITEM, useExisting: CuteNavItem }], queries: [{ propertyName: "navLink", first: true, predicate: CuteNavLink, descendants: true }, { propertyName: "_navContent", first: true, predicate: CuteNavContent, descendants: true, static: true }], viewQueries: [{ propertyName: "_staticContentTemplate", first: true, predicate: ["staticContent"], descendants: true, read: TemplateRef, static: true }], exportAs: ["cuteNavItem"], usesInheritance: true, ngImport: i0, template: `
232
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
233
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.0", type: CuteNavItem, isStandalone: true, selector: "cute-nav-item, [cute-nav-item], [cuteNavItem]", inputs: { preserveTabContent: ["preserveTabContent", "preserveTabContent", booleanAttribute] }, host: { properties: { "attr.role": "role || null" }, classAttribute: "cute-nav-item nav-item" }, providers: [{ provide: CUTE_NAV_ITEM, useExisting: CuteNavItem }], queries: [{ propertyName: "navLink", first: true, predicate: CuteNavLink, descendants: true }, { propertyName: "_navContent", first: true, predicate: CuteNavContent, descendants: true, static: true }], viewQueries: [{ propertyName: "_staticContentTemplate", first: true, predicate: ["staticContent"], descendants: true, read: TemplateRef, static: true }], exportAs: ["cuteNavItem"], usesInheritance: true, ngImport: i0, template: `
232
234
  <ng-content select="[cute-nav-link], [cuteNavLink]"></ng-content>
233
235
  <ng-content select="[cute-nav-content], [cuteNavContent]"></ng-content>
234
236
  <ng-template #staticContent>
@@ -236,7 +238,7 @@ class CuteNavItem extends CuteLayoutControl {
236
238
  </ng-template>
237
239
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
238
240
  }
239
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavItem, decorators: [{
241
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavItem, decorators: [{
240
242
  type: Component,
241
243
  args: [{
242
244
  selector: 'cute-nav-item, [cute-nav-item], [cuteNavItem]',
@@ -592,10 +594,10 @@ class CuteNav extends CuteLayoutControl {
592
594
  super.ngOnDestroy();
593
595
  this._keyManager?.destroy();
594
596
  }
595
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNav, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
596
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.15", type: CuteNav, isStandalone: true, selector: "[cute-nav], [cuteNav]", inputs: { navStyle: ["cuteNav", "navStyle"], orientation: "orientation", alignment: "alignment", stretchItems: "stretchItems", preserveTabContent: ["preserveTabContent", "preserveTabContent", booleanAttribute], animation: ["animation", "animation", booleanAttribute], autoSelect: ["autoSelect", "autoSelect", booleanAttribute], selectedIndex: ["selectedIndex", "selectedIndex", numberAttribute] }, outputs: { selectedIndexChange: "selectedIndexChange", selectedLinkChange: "selectedLinkChange", selectedLinkChanging: "selectedLinkChanging", focusChange: "focusChange" }, host: { listeners: { "keydown": "onKeydown($event)" }, properties: { "class.nav-tabs": "isTab()", "class.nav-pills": "navStyle==\"pills\"", "class.nav-underline": "navStyle==\"underline\"", "class.nav-fill": "stretchItems==\"fill\"", "class.nav-justified": "stretchItems==\"justified\"", "attr.aria-orientation": "orientation", "attr.role": "role || null", "class": "this.classBinding" }, classAttribute: "cute-nav nav" }, providers: [{ provide: CUTE_NAV, useExisting: CuteNav }], queries: [{ propertyName: "navItems", predicate: CuteNavItem, descendants: true }, { propertyName: "navLinks", predicate: CuteNavLink, descendants: true }], exportAs: ["cuteNav"], usesInheritance: true, ngImport: i0 }); }
597
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNav, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
598
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.2.0", type: CuteNav, isStandalone: true, selector: "[cute-nav], [cuteNav]", inputs: { navStyle: ["cuteNav", "navStyle"], orientation: "orientation", alignment: "alignment", stretchItems: "stretchItems", preserveTabContent: ["preserveTabContent", "preserveTabContent", booleanAttribute], animation: ["animation", "animation", booleanAttribute], autoSelect: ["autoSelect", "autoSelect", booleanAttribute], selectedIndex: ["selectedIndex", "selectedIndex", numberAttribute] }, outputs: { selectedIndexChange: "selectedIndexChange", selectedLinkChange: "selectedLinkChange", selectedLinkChanging: "selectedLinkChanging", focusChange: "focusChange" }, host: { listeners: { "keydown": "onKeydown($event)" }, properties: { "class.nav-tabs": "isTab()", "class.nav-pills": "navStyle==\"pills\"", "class.nav-underline": "navStyle==\"underline\"", "class.nav-fill": "stretchItems==\"fill\"", "class.nav-justified": "stretchItems==\"justified\"", "attr.aria-orientation": "orientation", "attr.role": "role || null", "class": "this.classBinding" }, classAttribute: "cute-nav nav" }, providers: [{ provide: CUTE_NAV, useExisting: CuteNav }], queries: [{ propertyName: "navItems", predicate: CuteNavItem, descendants: true }, { propertyName: "navLinks", predicate: CuteNavLink, descendants: true }], exportAs: ["cuteNav"], usesInheritance: true, ngImport: i0 }); }
597
599
  }
598
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNav, decorators: [{
600
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNav, decorators: [{
599
601
  type: Directive,
600
602
  args: [{
601
603
  selector: '[cute-nav], [cuteNav]',
@@ -686,10 +688,10 @@ class CuteNavPaneOutlet extends CdkPortalOutlet {
686
688
  }
687
689
  });
688
690
  }
689
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavPaneOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
690
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteNavPaneOutlet, isStandalone: true, selector: "[cuteNavPaneOutlet]", inputs: { portal: ["cuteNavPaneOutlet", "portal"] }, exportAs: ["cuteNavPaneOutlet"], usesInheritance: true, hostDirectives: [{ directive: i1.CdkScrollable }], ngImport: i0 }); }
691
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavPaneOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
692
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: CuteNavPaneOutlet, isStandalone: true, selector: "[cuteNavPaneOutlet]", inputs: { portal: ["cuteNavPaneOutlet", "portal"] }, exportAs: ["cuteNavPaneOutlet"], usesInheritance: true, hostDirectives: [{ directive: i1.CdkScrollable }], ngImport: i0 }); }
691
693
  }
692
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavPaneOutlet, decorators: [{
694
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavPaneOutlet, decorators: [{
693
695
  type: Directive,
694
696
  args: [{
695
697
  selector: '[cuteNavPaneOutlet]',
@@ -739,17 +741,17 @@ class CuteNavPane extends CuteLayoutControl {
739
741
  this._subs.unsubscribe();
740
742
  }
741
743
  }
742
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavPane, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
743
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.15", type: CuteNavPane, isStandalone: true, selector: "[cute-nav-pane], [cuteNavPane]", inputs: { index: ["index", "index", numberAttribute], item: "item" }, outputs: { hide: "hide", show: "show" }, host: { attributes: { "role": "tabpanel" }, properties: { "class.fade": "item.nav.animation", "class.active": "_active", "class.show": "_show", "attr.tabindex": "0", "attr.aria-labelledby": "ariaLabelledby || null" }, classAttribute: "cute-nav-pane tab-pane" }, exportAs: ["cuteNavPane"], usesInheritance: true, ngImport: i0 }); }
744
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavPane, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
745
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.2.0", type: CuteNavPane, isStandalone: true, selector: "[cute-nav-pane], [cuteNavPane]", inputs: { index: ["index", "index", numberAttribute], item: "item" }, outputs: { hide: "hide", show: "show" }, host: { attributes: { "role": "tabpanel" }, properties: { "class.fade": "item?.nav?.animation", "class.active": "_active", "class.show": "_show", "attr.tabindex": "0", "attr.aria-labelledby": "ariaLabelledby || null" }, classAttribute: "cute-nav-pane tab-pane" }, exportAs: ["cuteNavPane"], usesInheritance: true, ngImport: i0 }); }
744
746
  }
745
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavPane, decorators: [{
747
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavPane, decorators: [{
746
748
  type: Directive,
747
749
  args: [{
748
750
  selector: '[cute-nav-pane], [cuteNavPane]',
749
751
  exportAs: 'cuteNavPane',
750
752
  host: {
751
753
  'class': 'cute-nav-pane tab-pane',
752
- '[class.fade]': 'item.nav.animation',
754
+ '[class.fade]': 'item?.nav?.animation',
753
755
  '[class.active]': '_active',
754
756
  '[class.show]': '_show',
755
757
  '[attr.tabindex]': '0', //'_active ? 0 : -1',
@@ -780,8 +782,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
780
782
  class CuteNavOutlet /*implements AfterViewChecked*/ {
781
783
  get nav() { return this._nav; }
782
784
  set nav(value) { this._nav = value; }
783
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavOutlet /*implements AfterViewChecked*/, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
784
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: CuteNavOutlet /*implements AfterViewChecked*/, isStandalone: true, selector: "cute-nav-outlet", inputs: { nav: ["for", "nav"] }, host: { classAttribute: "cute-nav-outlet tab-content" }, exportAs: ["cuteNavOutlet"], ngImport: i0, template: `
785
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavOutlet /*implements AfterViewChecked*/, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
786
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: CuteNavOutlet /*implements AfterViewChecked*/, isStandalone: true, selector: "cute-nav-outlet", inputs: { nav: ["for", "nav"] }, host: { classAttribute: "cute-nav-outlet tab-content" }, exportAs: ["cuteNavOutlet"], ngImport: i0, template: `
785
787
  @for (item of nav?.navItems; track item.id; let i=$index) {
786
788
  <div cute-nav-pane
787
789
  [index]="i"
@@ -793,7 +795,7 @@ class CuteNavOutlet /*implements AfterViewChecked*/ {
793
795
  }
794
796
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: CuteNavPane, selector: "[cute-nav-pane], [cuteNavPane]", inputs: ["index", "item"], outputs: ["hide", "show"], exportAs: ["cuteNavPane"] }, { kind: "directive", type: CuteNavPaneOutlet, selector: "[cuteNavPaneOutlet]", inputs: ["cuteNavPaneOutlet"], exportAs: ["cuteNavPaneOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
795
797
  }
796
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavOutlet /*implements AfterViewChecked*/, decorators: [{
798
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavOutlet /*implements AfterViewChecked*/, decorators: [{
797
799
  type: Component,
798
800
  args: [{ selector: 'cute-nav-outlet', exportAs: 'cuteNavOutlet', template: `
799
801
  @for (item of nav?.navItems; track item.id; let i=$index) {
@@ -830,8 +832,8 @@ const TYPES = [
830
832
  CuteNavPane,
831
833
  ];
832
834
  class CuteNavModule {
833
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
834
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: CuteNavModule, imports: [CommonModule, CuteNav,
835
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
836
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: CuteNavModule, imports: [CommonModule, CuteNav,
835
837
  CuteNavItem,
836
838
  CuteNavLink,
837
839
  CuteNavOutlet,
@@ -842,9 +844,9 @@ class CuteNavModule {
842
844
  CuteNavOutlet,
843
845
  CuteNavContent,
844
846
  CuteNavPane] }); }
845
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavModule, imports: [CommonModule, CuteNavOutlet] }); }
847
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavModule, imports: [CommonModule, CuteNavOutlet] }); }
846
848
  }
847
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteNavModule, decorators: [{
849
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CuteNavModule, decorators: [{
848
850
  type: NgModule,
849
851
  args: [{
850
852
  declarations: [],
@@ -1 +1 @@
1
- {"version":3,"file":"cute-widgets-base-core-nav.mjs","sources":["../../../../projects/cute-widgets/base/core/nav/src/nav-link.directive.ts","../../../../projects/cute-widgets/base/core/nav/src/nav-content.directive.ts","../../../../projects/cute-widgets/base/core/nav/src/nav-item.component.ts","../../../../projects/cute-widgets/base/core/nav/src/nav.directive.ts","../../../../projects/cute-widgets/base/core/nav/src/nav-pane.directive.ts","../../../../projects/cute-widgets/base/core/nav/src/nav-outlet.component.ts","../../../../projects/cute-widgets/base/core/nav/src/nav.module.ts","../../../../projects/cute-widgets/base/core/nav/cute-widgets-base-core-nav.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\nimport {booleanAttribute, Directive, inject, Input, NgZone, DOCUMENT} from \"@angular/core\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {toThemeColor} from '@cute-widgets/base/core';\r\nimport {CUTE_NAV} from \"./nav.directive\";\r\nimport {fromEvent} from \"rxjs\";\r\n\r\nlet nextId: number = -1;\r\n\r\n/**\r\n * This class can be used to create a navigation menu, where it is applied to `<a>` elements.\r\n */\r\n@Directive({\r\n selector: `a[cute-nav-link], a[cuteNavLink],\r\n button[cute-nav-link], button[cuteNavLink]\r\n `,\r\n exportAs: 'cuteNavLink',\r\n host: {\r\n 'class': 'cute-nav-link nav-link',\r\n //'[class]': 'color ? \"link-\"+toThemeColor(color) : undefined',\r\n '[class.active]': 'active',\r\n '[class.disabled]': 'disabled',\r\n '[disabled]': 'disabled',\r\n '[attr.aria-disabled]': 'disabled',\r\n '[attr.aria-current]': 'active ? \"page\" : null',\r\n '[attr.aria-selected]': 'active || null',\r\n '[aria-controls]': 'ariaControls || getAriaControls()',\r\n '[attr.id]': 'id || null',\r\n '[attr.role]': 'role || null',\r\n '[attr.tabindex]': 'active && !disabled ? 0 : -1',\r\n '[style.--bs-btn-border-radius]': '0', // bootstrap's tab-link already stylized with radius of top angles\r\n '[style.--bs-navbar-active-color]': '!nav.isTab() ? \"var(\"+(color ? \"--bs-\"+toThemeColor(color)+\"-text-emphasis\" : \"--bs-emphasis-color\")+\")\" : undefined',\r\n '(click)': 'onClick($event)',\r\n //'(touchstart)': 'onTouchStart($event)',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteNavLink extends CuteFocusableControl {\r\n protected _document = inject(DOCUMENT);\r\n protected _ngZone = inject(NgZone);\r\n protected readonly nav = inject(CUTE_NAV, {optional: true});\r\n\r\n protected toThemeColor = toThemeColor;\r\n\r\n /** Whether the link is active. */\r\n @Input({transform: booleanAttribute})\r\n active: boolean = false;\r\n\r\n /** Explicit element identifier(s) whose content or presence are controlled by the link */\r\n @Input(\"aria-controls\")\r\n ariaControls: string | undefined;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._focusMonitor.monitor(this._elementRef)\r\n .pipe(takeUntilDestroyed())\r\n .subscribe(origin => {\r\n this._ngZone.run(() => {\r\n if (this.nav) {\r\n this.nav._focusChanged(this, origin);\r\n }\r\n });\r\n });\r\n\r\n // MouseDown event\r\n fromEvent<MouseEvent>(this._nativeElement, \"mousedown\", {capture: true})\r\n .pipe(takeUntilDestroyed())\r\n .subscribe((event) => this.onMouseDown(event));\r\n }\r\n\r\n protected generateId(): string {\r\n return `cute-nav-link-${++nextId}`;\r\n }\r\n\r\n /** Gets fallback element identifier(s) whose content or presence are controlled by the link. */\r\n protected getAriaControls(): string {\r\n if ( !(this.nav && this.nav.isTab()) ) return \"\";\r\n const index = this.nav.getNavLinkIndex(this);\r\n let ids: string = \"\";\r\n if (index >= 0) {\r\n ids = `${this.nav.id}-pane-${index}`;\r\n }\r\n return ids;\r\n }\r\n\r\n /**\r\n * MouseDown event handler in `capture` state of the event propagation.\r\n * @param event MouseEvent\r\n * @protected\r\n */\r\n protected onMouseDown(event: MouseEvent): void {\r\n if (this.nav) {\r\n if (!this.nav.activateNavLink(this, 'mouse')) {\r\n // we need to prevent default action so CSS-styles may be applied incorrectly\r\n event.stopImmediatePropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n protected onClick(event: MouseEvent): void {\r\n const elem = event.target as HTMLElement;\r\n event.preventDefault();\r\n if (elem instanceof HTMLAnchorElement && elem.hash && elem.hash.startsWith(\"#\")) {\r\n event.stopPropagation();\r\n const target = this._document.getElementById(elem.hash.substring(1));\r\n if (target) {\r\n target.scrollIntoView({behavior: \"smooth\", block: \"nearest\"});\r\n }\r\n }\r\n }\r\n\r\n protected onTouchStart(event: TouchEvent): void {\r\n if (this.nav) {\r\n this.nav.activateNavLink(this, 'touch');\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n if (this.nav?.role == \"tablist\") {\r\n this.role = \"tab\";\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 {Directive, inject, TemplateRef} from \"@angular/core\";\r\n\r\n/**\r\n * Lazy loading content of the `cute-nav-item` element.\r\n */\r\n@Directive({\r\n selector: 'ng-template[cuteNavContent], ng-template[cute-nav-content]',\r\n exportAs: 'cuteNavContent',\r\n standalone: true,\r\n})\r\nexport class CuteNavContent /* extends ... */ {\r\n public readonly template = inject<TemplateRef<unknown>>(TemplateRef);\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 {\r\n booleanAttribute, ChangeDetectionStrategy, Component,\r\n ContentChild,\r\n inject,\r\n InjectionToken,\r\n Input, TemplateRef, ViewChild,\r\n ViewContainerRef, ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {CuteNavContent} from \"./nav-content.directive\";\r\nimport {CUTE_NAV, CuteNav} from \"./nav.directive\";\r\nimport {CuteLayoutControl} from \"@cute-widgets/base/abstract\";\r\nimport {CdkPortal, TemplatePortal} from \"@angular/cdk/portal\";\r\nimport {CuteNavLink} from \"./nav-link.directive\";\r\nimport {RichThemeColor} from \"@cute-widgets/base/core\";\r\n\r\nlet nextId: number = 0;\r\n\r\n/**\r\n* Token used to provide a `CuteNavItem` to `CuteNavLink`.\r\n* Used to avoid circular imports between `CuteNavItem` and `CuteNavLink`.\r\n*/\r\nexport const CUTE_NAV_ITEM = new InjectionToken<CuteNavItem>('CUTE_NAV_ITEM');\r\n\r\n/**\r\n * The purpose of this class is to ensure that the list items in the navigation have the correct spacing in **Bootstrap** framework.\r\n */\r\n@Component({\r\n selector: 'cute-nav-item, [cute-nav-item], [cuteNavItem]',\r\n template: `\r\n <ng-content select=\"[cute-nav-link], [cuteNavLink]\"></ng-content>\r\n <ng-content select=\"[cute-nav-content], [cuteNavContent]\"></ng-content>\r\n <ng-template #staticContent>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n `,\r\n exportAs: 'cuteNavItem',\r\n host: {\r\n 'class': 'cute-nav-item nav-item',\r\n '[attr.role]': 'role || null',\r\n },\r\n standalone: true,\r\n providers: [{provide: CUTE_NAV_ITEM, useExisting: CuteNavItem}],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CuteNavItem extends CuteLayoutControl {\r\n // DI\r\n protected _viewContainerRef = inject(ViewContainerRef);\r\n readonly nav: CuteNav = inject(CUTE_NAV);\r\n\r\n /** Nested `nav-link` element */\r\n @ContentChild(CuteNavLink, {descendants: true})\r\n readonly navLink: CuteNavLink | undefined;\r\n\r\n /** Nested <ng-template cuteNavContent> projected content */\r\n @ContentChild(CuteNavContent, {static: true})\r\n private _navContent: CuteNavContent | null = null;\r\n\r\n /** Unscoped projected content */\r\n @ViewChild('staticContent', {read: TemplateRef, static: true})\r\n private _staticContentTemplate: TemplateRef<any> | undefined;\r\n\r\n /**\r\n * By default, tabs remove their content from the DOM while it's off-screen. Setting this to _true_ will keep it in\r\n * the DOM which will prevent elements like `iframes` and `videos` from reloading next time it comes back into the view.\r\n */\r\n @Input({transform: booleanAttribute})\r\n get preserveTabContent(): boolean { return this._preserveTabContent || this.nav.preserveTabContent; }\r\n set preserveTabContent(value: boolean | undefined) {\r\n this._preserveTabContent = value;\r\n }\r\n private _preserveTabContent: boolean | undefined;\r\n\r\n /** Portal that will be the hosted content of the nav */\r\n get content(): CdkPortal | null { return this._contentPortal; }\r\n private _contentPortal: CdkPortal | null = null;\r\n\r\n /**\r\n * Whether the tab/nav is currently active.\r\n */\r\n get isActive(): boolean {\r\n return this.navLink?.active || false;\r\n }\r\n\r\n /** Override the `color` setting for Tab control */\r\n override get color(): RichThemeColor|undefined { return undefined; /* super.color;*/}\r\n override set color(value: RichThemeColor|undefined) {\r\n if (this.nav.isTab()) {\r\n this.defaultColor = value;\r\n } else {\r\n super.color = value;\r\n }\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.role = this.nav.isTab() ? \"presentation\" : \"listitem\";\r\n }\r\n\r\n protected generateId(): string {\r\n // Used as a track id in the @for() loop\r\n return `cute-nav-item-${nextId++}`;\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n const contentTemplate = (this._navContent && this._navContent.template) || this._staticContentTemplate;\r\n if (contentTemplate) {\r\n this._contentPortal = new TemplatePortal(contentTemplate, this._viewContainerRef);\r\n }\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 {\r\n booleanAttribute,\r\n ContentChildren, DestroyRef,\r\n Directive, EventEmitter,\r\n HostBinding, inject,\r\n InjectionToken,\r\n Input, numberAttribute, Output,\r\n QueryList,\r\n} from \"@angular/core\";\r\nimport {FocusKeyManager, FocusOrigin, ListKeyManager} from \"@angular/cdk/a11y\";\r\nimport {Directionality} from \"@angular/cdk/bidi\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {CuteLayoutControl} from \"@cute-widgets/base/abstract\";\r\nimport {ContentAlignment, LayoutOrientation} from \"@cute-widgets/base/core\";\r\nimport {CuteNavLink} from \"./nav-link.directive\";\r\nimport {CuteNavItem} from \"./nav-item.component\";\r\n\r\n/** Navigation's presentation style */\r\nexport type CuteNavStyle = \"base\" | \"tabs\" | \"pills\" | \"underline\";\r\n/** Stretching level */\r\nexport type CuteNavStretch = \"none\"|\"fill\"|\"justified\";\r\n\r\n/**\r\n * Token used to provide a `CuteNav` to `CuteNavItem` or `CuteNavLink`.\r\n * Used to avoid circular imports between `CuteNav` and `CuteNavItem`.\r\n */\r\nexport const CUTE_NAV = new InjectionToken<CuteNav>('CUTE_NAV');\r\n\r\n/** Event emitted when the `nav-link` selection has changed. */\r\nexport class CuteNavChangeEvent extends Event {\r\n constructor(\r\n /** Index of the currently-selected link item. */\r\n readonly index: number,\r\n /** Reference to the currently-selected link item. */\r\n readonly link: CuteNavLink,\r\n /** Index of the previously-selected link item. */\r\n readonly fromIndex: number|null,\r\n /** Reference to the currently-selected link item. */\r\n readonly fromLink: CuteNavLink | null,\r\n /** How the link was focused. */\r\n readonly origin: FocusOrigin,\r\n ) {\r\n super(\"navChange\");\r\n }\r\n}\r\n\r\n/** Cancelable event emitted when the current `nav-link` selection is about to change. */\r\nexport class CuteNavChangingEvent extends Event {\r\n constructor(\r\n /** Index of the currently-selected link item. */\r\n readonly index: number,\r\n /** Reference to the currently-selected link item. */\r\n readonly link: CuteNavLink,\r\n /** Index of the previously-selected link item. */\r\n readonly fromIndex: number|null,\r\n /** Reference to the currently-selected link item. */\r\n readonly fromLink: CuteNavLink | null,\r\n /** How the link was focused. */\r\n readonly origin: FocusOrigin,\r\n ) {\r\n super(\"navChanging\", {cancelable: true});\r\n }\r\n}\r\n\r\nlet nextId: number = -1;\r\n\r\n/**\r\n * The navigation component that is built with `flexbox` and provide a strong foundation for building other types of navigation components.\r\n * It includes some style overrides (for working with lists), some _link_ padding for larger hit areas, and basic _disabled_ styling.\r\n * @example\r\n * ```html\r\n * <nav cute-nav alignment=\"center\">\r\n * <a cute-nav-link active href=\"#\">Active</a>\r\n * <a cute-nav-link href=\"#\">Link</a>\r\n * <a cute-nav-link href=\"#\">Link</a>\r\n * <a cute-nav-link disabled>Disabled</a>\r\n * </nav>\r\n * ```\r\n */\r\n@Directive({\r\n selector: '[cute-nav], [cuteNav]',\r\n exportAs: 'cuteNav',\r\n host: {\r\n 'class': 'cute-nav nav',\r\n '[class.nav-tabs]': 'isTab()',\r\n '[class.nav-pills]': 'navStyle==\"pills\"',\r\n '[class.nav-underline]': 'navStyle==\"underline\"',\r\n '[class.nav-fill]': 'stretchItems==\"fill\"',\r\n '[class.nav-justified]': 'stretchItems==\"justified\"',\r\n '[attr.aria-orientation]': 'orientation',\r\n '[attr.role]': 'role || null',\r\n '(keydown)': 'onKeydown($event)',\r\n },\r\n providers: [{provide: CUTE_NAV, useExisting: CuteNav}],\r\n standalone: true,\r\n})\r\nexport class CuteNav extends CuteLayoutControl {\r\n\r\n protected _dir = inject(Directionality);\r\n protected _keyManager: ListKeyManager<CuteNavLink> | undefined;\r\n\r\n private _oldFocusLink: CuteNavLink | null = null;\r\n /** To synchronize selectedIndex and keyManager.activeIndex */\r\n private _selectedIndexToChange: number | null = null;\r\n\r\n @ContentChildren(CuteNavItem, {descendants: true})\r\n readonly navItems: QueryList<CuteNavItem> | undefined;\r\n\r\n @ContentChildren(CuteNavLink, {descendants: true})\r\n protected navLinks: QueryList<CuteNavLink> | undefined;\r\n\r\n /** The type of the navigation component */\r\n @Input(\"cuteNav\") navStyle: CuteNavStyle = \"base\";\r\n\r\n /** Orientation of the navigation items */\r\n @Input()\r\n get orientation(): LayoutOrientation {return this._orientation;}\r\n set orientation(value: LayoutOrientation) {\r\n if (value !== this._orientation) {\r\n this._orientation = value;\r\n if (this._keyManager) {\r\n if (value == \"horizontal\") {\r\n this._keyManager.withHorizontalOrientation(this._dir.value);\r\n } else {\r\n this._keyManager.withVerticalOrientation(true).withPageUpDown();\r\n }\r\n this.markForCheck();\r\n }\r\n }\r\n }\r\n private _orientation: LayoutOrientation = \"horizontal\";\r\n\r\n /** The alignment of navigation items on the main flexbox' axis */\r\n @Input() alignment: ContentAlignment = \"start\";\r\n\r\n /**\r\n * Determines how the `cute-nav`'s content is stretched, such as taking up the entire available width (**none**), proportionally (**fill**) or equally (**justified**).\r\n * The width is determined by the longest `cute-nav-link`'s label. By default, stretching of items is not used (**none**).\r\n */\r\n @Input() stretchItems: CuteNavStretch = \"none\";\r\n\r\n /**\r\n * By default, tabs remove their content from the DOM while it's off-screen. Setting this to _true_ will keep it in\r\n * the DOM which will prevent elements like `iframes` and `videos` from reloading next time it comes back into the view.\r\n */\r\n @Input({transform: booleanAttribute})\r\n preserveTabContent: boolean = false;\r\n\r\n /** @deprecated */\r\n @Input({transform: booleanAttribute})\r\n animation: boolean = true;\r\n\r\n /** Should the first not disabled link item be automatically selected if none were activated during initialization. */\r\n @Input({transform: booleanAttribute})\r\n autoSelect: boolean = false;\r\n\r\n /** The index of the active link item. */\r\n @Input({transform: numberAttribute})\r\n get selectedIndex(): number|null {return this._selectedIndex;}\r\n set selectedIndex(value: number) {\r\n if (value !== this._selectedIndex) {\r\n this._selectedIndexToChange = value;\r\n Promise.resolve().then(() => this.activateNavLink(value));\r\n }\r\n }\r\n private _selectedIndex: number | null = null;\r\n\r\n /** Output to enable support for two-way binding on `[(selectedIndex)]` */\r\n @Output() selectedIndexChange = new EventEmitter<number>();\r\n\r\n /** Event emitted when the `nav` selection has changed. */\r\n @Output() selectedLinkChange = new EventEmitter<CuteNavChangeEvent>();\r\n\r\n /** Event emitted when the `nav` selection gets changing. */\r\n @Output() selectedLinkChanging = new EventEmitter<CuteNavChangeEvent>();\r\n\r\n /** Event emitted when focus has changed within a `nav`-element. */\r\n @Output() focusChange = new EventEmitter<CuteNavChangeEvent>();\r\n\r\n @HostBinding(\"class\")\r\n get classBinding(): string {\r\n let classList = \"justify-content-\"+this.alignment;\r\n switch (this.orientation) {\r\n case \"vertical\":\r\n if (this.breakpoint) {\r\n classList += \" flex-\"+this.breakpoint+\"-column\";\r\n } else {\r\n classList += \" flex-column\";\r\n }\r\n break;\r\n case \"horizontal\":\r\n if (this.breakpoint) {\r\n // Nav will be stacked on the lowest breakpoint, then adapt to a horizontal layout that fills the available width starting\r\n // from the small breakpoint.\r\n classList += \" flex-column flex-\"+this.breakpoint+\"-row\";\r\n }\r\n break;\r\n }\r\n return classList;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected generateId(): string {\r\n return `cute-nav-${++nextId}`;\r\n }\r\n\r\n /** Whether the navigation component has a `tab` presentation style. */\r\n isTab(): boolean {\r\n return this.navStyle == \"tabs\";\r\n }\r\n\r\n /**\r\n * Gets an index of the navigation link in the links array.\r\n * @param link Navigation link reference\r\n * @returns An index of the navigation link or **-1** if it was not found\r\n */\r\n getNavLinkIndex(link: CuteNavLink): number {\r\n return this.navLinks?.toArray().indexOf(link) ?? -1;\r\n }\r\n\r\n /**\r\n * Request to activate cute-nav-link element\r\n * @param linkToActivate `cute-nav-link` or its index in the links array to activate. Set _null_ for use the currently selected or first `cute-nav-link` in the list.\r\n * @param origin (optional) Tells how the element was focused (via the mouse, keyboard, touch, or programmatically). The latter is the default value.\r\n * @returns _true_ when succeeded, otherwise _false_.\r\n */\r\n activateNavLink(linkToActivate: CuteNavLink|number|null, origin: FocusOrigin = \"program\"): boolean {\r\n if (linkToActivate == null) {\r\n if (this.selectedIndex != null) {\r\n linkToActivate = this.selectedIndex;\r\n } else if (this.navLinks) {\r\n const firstEnabled = this.navLinks.find(link => !link.disabled);\r\n if (firstEnabled) {\r\n linkToActivate = firstEnabled;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n if (!this.navLinks || this.navLinks.length == 0) { return false; }\r\n\r\n if (typeof linkToActivate === \"number\") {\r\n const linkIndex = linkToActivate;\r\n linkToActivate = this.navLinks.get(linkIndex) ?? null;\r\n }\r\n\r\n if (!linkToActivate) { return false; }\r\n\r\n const navLink = <CuteNavLink> linkToActivate;\r\n const newIndex = this.getNavLinkIndex(navLink);\r\n\r\n if (this.selectedIndex == newIndex) {\r\n // The link has already been activated\r\n this._keyManager?.updateActiveItem(newIndex);\r\n return true;\r\n }\r\n\r\n if (newIndex >= 0 && !navLink.disabled) {\r\n const oldIndex = this._selectedIndex;\r\n const oldLink = oldIndex != null ? this.navLinks.get(oldIndex)??null : null\r\n\r\n if (oldLink) {\r\n // Check before index changing condition\r\n const event = new CuteNavChangingEvent(newIndex, navLink, oldIndex, oldLink, origin);\r\n this.selectedLinkChanging.emit( event );\r\n if (event.defaultPrevented) {\r\n return false;\r\n }\r\n }\r\n\r\n this._keyManager?.updateActiveItem(newIndex);\r\n\r\n this.navLinks.forEach(link => {\r\n link.active = false;\r\n });\r\n\r\n navLink.active = true;\r\n this._selectedIndexToChange = null;\r\n this._selectedIndex = newIndex;\r\n\r\n this._focusChanged(newIndex, \"program\");\r\n this.selectedIndexChange.emit(newIndex);\r\n this.selectedLinkChange.emit( new CuteNavChangeEvent(newIndex, navLink, oldIndex, oldLink, origin) );\r\n\r\n this.markForCheck();\r\n\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Link focus changed handler\r\n * @param link Source link\r\n * @param origin Focus origin\r\n */\r\n _focusChanged(link: CuteNavLink|number, origin: FocusOrigin): void {\r\n let linkIndex: number;\r\n if (typeof link === \"number\") {\r\n if (this.isValidLinkIndex(link)) {\r\n linkIndex = link;\r\n link = this.navLinks!.get(linkIndex)!;\r\n } else {\r\n // Error\r\n return;\r\n }\r\n } else {\r\n linkIndex = this.getNavLinkIndex(link);\r\n }\r\n if (origin && this._oldFocusLink !== link) {\r\n const oldIndex = this._oldFocusLink ? this.getNavLinkIndex(this._oldFocusLink) : null;\r\n this.focusChange.emit( new CuteNavChangeEvent(linkIndex, link, oldIndex, this._oldFocusLink, origin) );\r\n this._oldFocusLink = link;\r\n }\r\n }\r\n\r\n /** Whether the specified link index is a valid nav index. */\r\n protected isValidLinkIndex(index: number): boolean {\r\n return this.navLinks != null && (index >= 0 && index < this.navLinks.length);\r\n }\r\n\r\n protected onKeydown(event: KeyboardEvent) {\r\n if (event.code == \"Space\" || event.code == \"Enter\") {\r\n if (this._keyManager\r\n && this._keyManager.activeItemIndex != null\r\n && this.selectedIndex != this._keyManager.activeItemIndex)\r\n {\r\n this.activateNavLink(this._keyManager.activeItemIndex, \"keyboard\");\r\n }\r\n event.preventDefault();\r\n } else {\r\n this._keyManager?.onKeydown(event);\r\n }\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n const tagName = this._elementRef.nativeElement.tagName;\r\n\r\n if (this.isTab() && !this.role && !(tagName.toLowerCase()===\"nav\")) {\r\n this.role = \"tablist\";\r\n }\r\n }\r\n\r\n override ngAfterContentInit() {\r\n super.ngAfterContentInit();\r\n\r\n if (this.navLinks) {\r\n this._keyManager = new FocusKeyManager(this.navLinks)\r\n .withWrap(true)\r\n .withHomeAndEnd(true)\r\n // Allow focus to land on disabled tabs, as per https://w3c.github.io/aria-practices/#kbd_disabled_controls\r\n .skipPredicate(() => false);\r\n\r\n if (this.orientation == \"horizontal\") {\r\n this._keyManager.withHorizontalOrientation(this._dir.value);\r\n } else {\r\n this._keyManager.withVerticalOrientation(true).withPageUpDown(true);\r\n }\r\n // Immediate activation on focus changing\r\n this._keyManager.change\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(newIndex => {\r\n this._focusChanged(newIndex, \"keyboard\");\r\n });\r\n\r\n this._keyManager.tabOut\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n if (this.selectedIndex != null) {\r\n this._keyManager?.updateActiveItem(this.selectedIndex)\r\n }\r\n });\r\n\r\n if (this._selectedIndexToChange == null && this.autoSelect) {\r\n Promise.resolve().then(()=> this.activateNavLink(null));\r\n }\r\n }\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n\r\n this._keyManager?.destroy();\r\n }\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 {\r\n Directive, EventEmitter, forwardRef, inject,\r\n Input, numberAttribute, OnDestroy, Output,\r\n} from \"@angular/core\";\r\nimport {CdkPortalOutlet} from \"@angular/cdk/portal\";\r\nimport {CdkScrollable} from \"@angular/cdk/overlay\";\r\nimport {CuteNavItem} from \"./nav-item.component\";\r\nimport {CuteLayoutControl} from \"@cute-widgets/base/abstract\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {getOverallTransitionDuration} from \"@cute-widgets/base/core\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\n\r\n@Directive({\r\n selector: '[cuteNavPaneOutlet]',\r\n exportAs: 'cuteNavPaneOutlet',\r\n inputs: ['portal: cuteNavPaneOutlet'],\r\n hostDirectives: [CdkScrollable],\r\n standalone: true,\r\n})\r\nexport class CuteNavPaneOutlet extends CdkPortalOutlet implements OnDestroy {\r\n private _pane: CuteNavPane = inject(forwardRef(() => CuteNavPane));\r\n\r\n constructor() {\r\n super();\r\n\r\n this._pane.show\r\n .pipe(takeUntilDestroyed())\r\n .subscribe(()=> {\r\n const panePortal = this._pane.item?.content;\r\n if (panePortal && !panePortal.isAttached) {\r\n panePortal.attach(this);\r\n }\r\n });\r\n this._pane.hide\r\n .pipe(takeUntilDestroyed())\r\n .subscribe(()=> {\r\n const item = this._pane.item;\r\n const panePortal = item?.content;\r\n if (panePortal && panePortal.isAttached) {\r\n if (!item?.preserveTabContent) {\r\n panePortal.detach();\r\n }\r\n }\r\n });\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[cute-nav-pane], [cuteNavPane]',\r\n exportAs: 'cuteNavPane',\r\n host: {\r\n 'class': 'cute-nav-pane tab-pane',\r\n '[class.fade]': 'item.nav.animation',\r\n '[class.active]': '_active',\r\n '[class.show]': '_show',\r\n '[attr.tabindex]': '0', //'_active ? 0 : -1',\r\n '[attr.aria-labelledby]': 'ariaLabelledby || null',\r\n 'role': 'tabpanel',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteNavPane extends CuteLayoutControl {\r\n private _subs: Subscription | undefined;\r\n protected _active: boolean = false;\r\n protected _show: boolean = false;\r\n\r\n /** Pane index */\r\n @Input({transform: numberAttribute})\r\n index: number = NaN;\r\n\r\n /** Navigation item reference */\r\n @Input()\r\n item: CuteNavItem | undefined;\r\n\r\n @Output() hide = new EventEmitter<void>();\r\n @Output() show = new EventEmitter<void>();\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected generateId(): string {\r\n return \"\";\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.id = `${this.item?.nav.id}-pane-${this.index}`;\r\n\r\n if (this.item) {\r\n this._subs = this.item.nav.selectedLinkChange.subscribe(ev => {\r\n this._active = (ev.index === this.index);\r\n if (this._active) {\r\n this.show.emit();\r\n setTimeout(()=> {\r\n this._show = true;\r\n this.markForCheck();\r\n }, getOverallTransitionDuration(this._nativeElement));\r\n } else {\r\n this.hide.emit();\r\n this._show = false;\r\n }\r\n this.markForCheck();\r\n });\r\n }\r\n\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n\r\n if (this._subs) {\r\n this._subs.unsubscribe();\r\n }\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 {\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport {NgFor} from \"@angular/common\";\r\nimport {PortalModule} from \"@angular/cdk/portal\";\r\nimport {CuteNav} from \"./nav.directive\";\r\nimport {CuteNavPane, CuteNavPaneOutlet} from \"./nav-pane.directive\";\r\n\r\n@Component({\r\n selector: 'cute-nav-outlet',\r\n exportAs: 'cuteNavOutlet',\r\n template: `\r\n @for (item of nav?.navItems; track item.id; let i=$index) {\r\n <div cute-nav-pane\r\n [index]=\"i\"\r\n [item]=\"item\"\r\n [color]=\"item.defaultColor\"\r\n [aria-labelledby]=\"item.navLink?.id || null\">\r\n <ng-container [cuteNavPaneOutlet]=\"null\"></ng-container>\r\n </div>\r\n }\r\n `,\r\n styles: [],\r\n host: {\r\n 'class': 'cute-nav-outlet tab-content'\r\n },\r\n imports: [PortalModule, CuteNavPane, CuteNavPaneOutlet],\r\n //providers: [CuteAnimationService]\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuteNavOutlet /*implements AfterViewChecked*/ {\r\n\r\n @Input({alias: \"for\", required: true})\r\n get nav(): CuteNav|undefined {return this._nav;}\r\n set nav(value: CuteNav|undefined) { this._nav = value; }\r\n private _nav: CuteNav | undefined;\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 {CuteNavItem} from \"./nav-item.component\";\r\nimport {CuteNavLink} from \"./nav-link.directive\";\r\nimport {CuteNav} from \"./nav.directive\";\r\nimport {CuteNavOutlet} from \"./nav-outlet.component\";\r\nimport {CuteNavContent} from \"./nav-content.directive\";\r\nimport {CuteNavPane} from \"./nav-pane.directive\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteNav,\r\n CuteNavItem,\r\n CuteNavLink,\r\n CuteNavOutlet,\r\n CuteNavContent,\r\n CuteNavPane,\r\n];\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, ...TYPES],\r\n exports: [TYPES],\r\n providers: [],\r\n})\r\nexport class CuteNavModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId"],"mappings":"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"}
1
+ {"version":3,"file":"cute-widgets-base-core-nav.mjs","sources":["../../../../projects/cute-widgets/base/core/nav/src/nav-link.directive.ts","../../../../projects/cute-widgets/base/core/nav/src/nav-content.directive.ts","../../../../projects/cute-widgets/base/core/nav/src/nav-item.component.ts","../../../../projects/cute-widgets/base/core/nav/src/nav.directive.ts","../../../../projects/cute-widgets/base/core/nav/src/nav-pane.directive.ts","../../../../projects/cute-widgets/base/core/nav/src/nav-outlet.component.ts","../../../../projects/cute-widgets/base/core/nav/src/nav.module.ts","../../../../projects/cute-widgets/base/core/nav/cute-widgets-base-core-nav.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\nimport {booleanAttribute, Directive, inject, Input, NgZone, DOCUMENT} from \"@angular/core\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {toThemeColor} from '@cute-widgets/base/core';\r\nimport {CUTE_NAV} from \"./nav.directive\";\r\nimport {fromEvent} from \"rxjs\";\r\n\r\nlet nextId: number = -1;\r\n\r\n/**\r\n * This class can be used to create a navigation menu, where it is applied to `<a>` elements.\r\n */\r\n@Directive({\r\n selector: `a[cute-nav-link], a[cuteNavLink],\r\n button[cute-nav-link], button[cuteNavLink]\r\n `,\r\n exportAs: 'cuteNavLink',\r\n host: {\r\n 'class': 'cute-nav-link nav-link',\r\n //'[class]': 'color ? \"link-\"+toThemeColor(color) : undefined',\r\n '[class.active]': 'active',\r\n '[class.disabled]': 'disabled',\r\n '[attr.disabled]': '_isAnchor && disabled ? true : null',\r\n '[attr.aria-disabled]': 'disabled',\r\n '[attr.aria-current]': 'active ? \"page\" : null',\r\n '[attr.aria-selected]': 'active || null',\r\n '[aria-controls]': 'ariaControls || getAriaControls()',\r\n '[attr.id]': 'id || null',\r\n '[attr.role]': 'role || null',\r\n '[attr.tabindex]': 'active && !disabled ? 0 : -1',\r\n '[style.--bs-btn-border-radius]': '0', // bootstrap's tab-link already stylized with radius of top angles\r\n '[style.--bs-navbar-active-color]': 'nav && !nav.isTab() ? \"var(\"+(color ? \"--bs-\"+toThemeColor(color)+\"-text-emphasis\" : \"--bs-emphasis-color\")+\")\" : undefined',\r\n '(click)': 'onClick($event)',\r\n //'(touchstart)': 'onTouchStart($event)',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteNavLink extends CuteFocusableControl {\r\n protected _document = inject(DOCUMENT);\r\n protected _ngZone = inject(NgZone);\r\n protected readonly nav = inject(CUTE_NAV, {optional: true});\r\n\r\n protected _isAnchor: boolean = false;\r\n protected toThemeColor = toThemeColor;\r\n\r\n /** Whether the link is active. */\r\n @Input({transform: booleanAttribute})\r\n active: boolean = false;\r\n\r\n /** Explicit element identifier(s) whose content or presence are controlled by the link */\r\n @Input(\"aria-controls\")\r\n ariaControls: string | undefined;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._isAnchor = (this._nativeElement.tagName == \"A\");\r\n\r\n this._focusMonitor.monitor(this._elementRef)\r\n .pipe(takeUntilDestroyed())\r\n .subscribe(origin => {\r\n this._ngZone.run(() => {\r\n if (this.nav) {\r\n this.nav._focusChanged(this, origin);\r\n }\r\n });\r\n });\r\n\r\n // MouseDown event\r\n fromEvent<MouseEvent>(this._nativeElement, \"mousedown\", {capture: true})\r\n .pipe(takeUntilDestroyed())\r\n .subscribe((event) => this.onMouseDown(event));\r\n }\r\n\r\n protected generateId(): string {\r\n return `cute-nav-link-${++nextId}`;\r\n }\r\n\r\n /** Gets fallback element identifier(s) whose content or presence are controlled by the link. */\r\n protected getAriaControls(): string {\r\n if ( !(this.nav && this.nav.isTab()) ) return \"\";\r\n const index = this.nav.getNavLinkIndex(this);\r\n let ids: string = \"\";\r\n if (index >= 0) {\r\n ids = `${this.nav.id}-pane-${index}`;\r\n }\r\n return ids;\r\n }\r\n\r\n /**\r\n * MouseDown event handler in `capture` state of the event propagation.\r\n * @param event MouseEvent\r\n * @protected\r\n */\r\n protected onMouseDown(event: MouseEvent): void {\r\n if (this.nav) {\r\n if (!this.nav.activateNavLink(this, 'mouse')) {\r\n // we need to prevent default action so CSS-styles may be applied incorrectly\r\n event.stopImmediatePropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n protected onClick(event: Event): void {\r\n const elem = event.target as HTMLElement;\r\n event.preventDefault();\r\n if (elem instanceof HTMLAnchorElement && elem.hash && elem.hash.startsWith(\"#\")) {\r\n event.stopPropagation();\r\n const target = this._document.getElementById(elem.hash.substring(1));\r\n if (target) {\r\n target.scrollIntoView({behavior: \"smooth\", block: \"nearest\"});\r\n }\r\n }\r\n }\r\n\r\n protected onTouchStart(event: TouchEvent): void {\r\n if (this.nav) {\r\n this.nav.activateNavLink(this, 'touch');\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n if (this.nav?.role == \"tablist\") {\r\n this.role = \"tab\";\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 {Directive, inject, TemplateRef} from \"@angular/core\";\r\n\r\n/**\r\n * Lazy loading content of the `cute-nav-item` element.\r\n */\r\n@Directive({\r\n selector: 'ng-template[cuteNavContent], ng-template[cute-nav-content]',\r\n exportAs: 'cuteNavContent',\r\n standalone: true,\r\n})\r\nexport class CuteNavContent /* extends ... */ {\r\n public readonly template = inject<TemplateRef<unknown>>(TemplateRef);\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 {\r\n booleanAttribute, ChangeDetectionStrategy, Component,\r\n ContentChild,\r\n inject,\r\n InjectionToken,\r\n Input, TemplateRef, ViewChild,\r\n ViewContainerRef, ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {CuteNavContent} from \"./nav-content.directive\";\r\nimport {CUTE_NAV, CuteNav} from \"./nav.directive\";\r\nimport {CuteLayoutControl} from \"@cute-widgets/base/abstract\";\r\nimport {CdkPortal, TemplatePortal} from \"@angular/cdk/portal\";\r\nimport {CuteNavLink} from \"./nav-link.directive\";\r\nimport {RichThemeColor} from \"@cute-widgets/base/core\";\r\n\r\nlet nextId: number = 0;\r\n\r\n/**\r\n* Token used to provide a `CuteNavItem` to `CuteNavLink`.\r\n* Used to avoid circular imports between `CuteNavItem` and `CuteNavLink`.\r\n*/\r\nexport const CUTE_NAV_ITEM = new InjectionToken<CuteNavItem>('CUTE_NAV_ITEM');\r\n\r\n/**\r\n * The purpose of this class is to ensure that the list items in the navigation have the correct spacing in **Bootstrap** framework.\r\n */\r\n@Component({\r\n selector: 'cute-nav-item, [cute-nav-item], [cuteNavItem]',\r\n template: `\r\n <ng-content select=\"[cute-nav-link], [cuteNavLink]\"></ng-content>\r\n <ng-content select=\"[cute-nav-content], [cuteNavContent]\"></ng-content>\r\n <ng-template #staticContent>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n `,\r\n exportAs: 'cuteNavItem',\r\n host: {\r\n 'class': 'cute-nav-item nav-item',\r\n '[attr.role]': 'role || null',\r\n },\r\n standalone: true,\r\n providers: [{provide: CUTE_NAV_ITEM, useExisting: CuteNavItem}],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CuteNavItem extends CuteLayoutControl {\r\n // DI\r\n protected _viewContainerRef = inject(ViewContainerRef);\r\n readonly nav: CuteNav = inject(CUTE_NAV);\r\n\r\n /** Nested `nav-link` element */\r\n @ContentChild(CuteNavLink, {descendants: true})\r\n readonly navLink: CuteNavLink | undefined;\r\n\r\n /** Nested <ng-template cuteNavContent> projected content */\r\n @ContentChild(CuteNavContent, {static: true})\r\n private _navContent: CuteNavContent | null = null;\r\n\r\n /** Unscoped projected content */\r\n @ViewChild('staticContent', {read: TemplateRef, static: true})\r\n private _staticContentTemplate: TemplateRef<any> | undefined;\r\n\r\n /**\r\n * By default, tabs remove their content from the DOM while it's off-screen. Setting this to _true_ will keep it in\r\n * the DOM which will prevent elements like `iframes` and `videos` from reloading next time it comes back into the view.\r\n */\r\n @Input({transform: booleanAttribute})\r\n get preserveTabContent(): boolean { return this._preserveTabContent || this.nav.preserveTabContent; }\r\n set preserveTabContent(value: boolean | undefined) {\r\n this._preserveTabContent = value;\r\n }\r\n private _preserveTabContent: boolean | undefined;\r\n\r\n /** Portal that will be the hosted content of the nav */\r\n get content(): CdkPortal | null { return this._contentPortal; }\r\n private _contentPortal: CdkPortal | null = null;\r\n\r\n /**\r\n * Whether the tab/nav is currently active.\r\n */\r\n get isActive(): boolean {\r\n return this.navLink?.active || false;\r\n }\r\n\r\n /** Override the `color` setting for Tab control */\r\n override get color(): RichThemeColor|undefined { return undefined; /* super.color;*/}\r\n override set color(value: RichThemeColor|undefined) {\r\n if (this.nav.isTab()) {\r\n this.defaultColor = value;\r\n } else {\r\n super.color = value;\r\n }\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.role = this.nav.isTab() ? \"presentation\" : \"listitem\";\r\n }\r\n\r\n protected generateId(): string {\r\n // Used as a track id in the @for() loop\r\n return `cute-nav-item-${nextId++}`;\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n const contentTemplate = (this._navContent && this._navContent.template) || this._staticContentTemplate;\r\n if (contentTemplate) {\r\n this._contentPortal = new TemplatePortal(contentTemplate, this._viewContainerRef);\r\n }\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 {\r\n booleanAttribute,\r\n ContentChildren, DestroyRef,\r\n Directive, EventEmitter,\r\n HostBinding, inject,\r\n InjectionToken,\r\n Input, numberAttribute, Output,\r\n QueryList,\r\n} from \"@angular/core\";\r\nimport {FocusKeyManager, FocusOrigin, ListKeyManager} from \"@angular/cdk/a11y\";\r\nimport {Directionality} from \"@angular/cdk/bidi\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {CuteLayoutControl} from \"@cute-widgets/base/abstract\";\r\nimport {ContentAlignment, LayoutOrientation} from \"@cute-widgets/base/core\";\r\nimport {CuteNavLink} from \"./nav-link.directive\";\r\nimport {CuteNavItem} from \"./nav-item.component\";\r\n\r\n/** Navigation's presentation style */\r\nexport type CuteNavStyle = \"base\" | \"tabs\" | \"pills\" | \"underline\";\r\n/** Stretching level */\r\nexport type CuteNavStretch = \"none\"|\"fill\"|\"justified\";\r\n\r\n/**\r\n * Token used to provide a `CuteNav` to `CuteNavItem` or `CuteNavLink`.\r\n * Used to avoid circular imports between `CuteNav` and `CuteNavItem`.\r\n */\r\nexport const CUTE_NAV = new InjectionToken<CuteNav>('CUTE_NAV');\r\n\r\n/** Event emitted when the `nav-link` selection has changed. */\r\nexport class CuteNavChangeEvent extends Event {\r\n constructor(\r\n /** Index of the currently-selected link item. */\r\n readonly index: number,\r\n /** Reference to the currently-selected link item. */\r\n readonly link: CuteNavLink,\r\n /** Index of the previously-selected link item. */\r\n readonly fromIndex: number|null,\r\n /** Reference to the currently-selected link item. */\r\n readonly fromLink: CuteNavLink | null,\r\n /** How the link was focused. */\r\n readonly origin: FocusOrigin,\r\n ) {\r\n super(\"navChange\");\r\n }\r\n}\r\n\r\n/** Cancelable event emitted when the current `nav-link` selection is about to change. */\r\nexport class CuteNavChangingEvent extends Event {\r\n constructor(\r\n /** Index of the currently-selected link item. */\r\n readonly index: number,\r\n /** Reference to the currently-selected link item. */\r\n readonly link: CuteNavLink,\r\n /** Index of the previously-selected link item. */\r\n readonly fromIndex: number|null,\r\n /** Reference to the currently-selected link item. */\r\n readonly fromLink: CuteNavLink | null,\r\n /** How the link was focused. */\r\n readonly origin: FocusOrigin,\r\n ) {\r\n super(\"navChanging\", {cancelable: true});\r\n }\r\n}\r\n\r\nlet nextId: number = -1;\r\n\r\n/**\r\n * The navigation component that is built with `flexbox` and provide a strong foundation for building other types of navigation components.\r\n * It includes some style overrides (for working with lists), some _link_ padding for larger hit areas, and basic _disabled_ styling.\r\n * @example\r\n * ```html\r\n * <nav cute-nav alignment=\"center\">\r\n * <a cute-nav-link active href=\"#\">Active</a>\r\n * <a cute-nav-link href=\"#\">Link</a>\r\n * <a cute-nav-link href=\"#\">Link</a>\r\n * <a cute-nav-link disabled>Disabled</a>\r\n * </nav>\r\n * ```\r\n */\r\n@Directive({\r\n selector: '[cute-nav], [cuteNav]',\r\n exportAs: 'cuteNav',\r\n host: {\r\n 'class': 'cute-nav nav',\r\n '[class.nav-tabs]': 'isTab()',\r\n '[class.nav-pills]': 'navStyle==\"pills\"',\r\n '[class.nav-underline]': 'navStyle==\"underline\"',\r\n '[class.nav-fill]': 'stretchItems==\"fill\"',\r\n '[class.nav-justified]': 'stretchItems==\"justified\"',\r\n '[attr.aria-orientation]': 'orientation',\r\n '[attr.role]': 'role || null',\r\n '(keydown)': 'onKeydown($event)',\r\n },\r\n providers: [{provide: CUTE_NAV, useExisting: CuteNav}],\r\n standalone: true,\r\n})\r\nexport class CuteNav extends CuteLayoutControl {\r\n\r\n protected _dir = inject(Directionality);\r\n protected _keyManager: ListKeyManager<CuteNavLink> | undefined;\r\n\r\n private _oldFocusLink: CuteNavLink | null = null;\r\n /** To synchronize selectedIndex and keyManager.activeIndex */\r\n private _selectedIndexToChange: number | null = null;\r\n\r\n @ContentChildren(CuteNavItem, {descendants: true})\r\n readonly navItems: QueryList<CuteNavItem> | undefined;\r\n\r\n @ContentChildren(CuteNavLink, {descendants: true})\r\n protected navLinks: QueryList<CuteNavLink> | undefined;\r\n\r\n /** The type of the navigation component */\r\n @Input(\"cuteNav\") navStyle: CuteNavStyle = \"base\";\r\n\r\n /** Orientation of the navigation items */\r\n @Input()\r\n get orientation(): LayoutOrientation {return this._orientation;}\r\n set orientation(value: LayoutOrientation) {\r\n if (value !== this._orientation) {\r\n this._orientation = value;\r\n if (this._keyManager) {\r\n if (value == \"horizontal\") {\r\n this._keyManager.withHorizontalOrientation(this._dir.value);\r\n } else {\r\n this._keyManager.withVerticalOrientation(true).withPageUpDown();\r\n }\r\n this.markForCheck();\r\n }\r\n }\r\n }\r\n private _orientation: LayoutOrientation = \"horizontal\";\r\n\r\n /** The alignment of navigation items on the main flexbox' axis */\r\n @Input() alignment: ContentAlignment = \"start\";\r\n\r\n /**\r\n * Determines how the `cute-nav`'s content is stretched, such as taking up the entire available width (**none**), proportionally (**fill**) or equally (**justified**).\r\n * The width is determined by the longest `cute-nav-link`'s label. By default, stretching of items is not used (**none**).\r\n */\r\n @Input() stretchItems: CuteNavStretch = \"none\";\r\n\r\n /**\r\n * By default, tabs remove their content from the DOM while it's off-screen. Setting this to _true_ will keep it in\r\n * the DOM which will prevent elements like `iframes` and `videos` from reloading next time it comes back into the view.\r\n */\r\n @Input({transform: booleanAttribute})\r\n preserveTabContent: boolean = false;\r\n\r\n /** @deprecated */\r\n @Input({transform: booleanAttribute})\r\n animation: boolean = true;\r\n\r\n /** Should the first not disabled link item be automatically selected if none were activated during initialization. */\r\n @Input({transform: booleanAttribute})\r\n autoSelect: boolean = false;\r\n\r\n /** The index of the active link item. */\r\n @Input({transform: numberAttribute})\r\n get selectedIndex(): number|null {return this._selectedIndex;}\r\n set selectedIndex(value: number) {\r\n if (value !== this._selectedIndex) {\r\n this._selectedIndexToChange = value;\r\n Promise.resolve().then(() => this.activateNavLink(value));\r\n }\r\n }\r\n private _selectedIndex: number | null = null;\r\n\r\n /** Output to enable support for two-way binding on `[(selectedIndex)]` */\r\n @Output() selectedIndexChange = new EventEmitter<number>();\r\n\r\n /** Event emitted when the `nav` selection has changed. */\r\n @Output() selectedLinkChange = new EventEmitter<CuteNavChangeEvent>();\r\n\r\n /** Event emitted when the `nav` selection gets changing. */\r\n @Output() selectedLinkChanging = new EventEmitter<CuteNavChangeEvent>();\r\n\r\n /** Event emitted when focus has changed within a `nav`-element. */\r\n @Output() focusChange = new EventEmitter<CuteNavChangeEvent>();\r\n\r\n @HostBinding(\"class\")\r\n get classBinding(): string {\r\n let classList = \"justify-content-\"+this.alignment;\r\n switch (this.orientation) {\r\n case \"vertical\":\r\n if (this.breakpoint) {\r\n classList += \" flex-\"+this.breakpoint+\"-column\";\r\n } else {\r\n classList += \" flex-column\";\r\n }\r\n break;\r\n case \"horizontal\":\r\n if (this.breakpoint) {\r\n // Nav will be stacked on the lowest breakpoint, then adapt to a horizontal layout that fills the available width starting\r\n // from the small breakpoint.\r\n classList += \" flex-column flex-\"+this.breakpoint+\"-row\";\r\n }\r\n break;\r\n }\r\n return classList;\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected generateId(): string {\r\n return `cute-nav-${++nextId}`;\r\n }\r\n\r\n /** Whether the navigation component has a `tab` presentation style. */\r\n isTab(): boolean {\r\n return this.navStyle == \"tabs\";\r\n }\r\n\r\n /**\r\n * Gets an index of the navigation link in the links array.\r\n * @param link Navigation link reference\r\n * @returns An index of the navigation link or **-1** if it was not found\r\n */\r\n getNavLinkIndex(link: CuteNavLink): number {\r\n return this.navLinks?.toArray().indexOf(link) ?? -1;\r\n }\r\n\r\n /**\r\n * Request to activate cute-nav-link element\r\n * @param linkToActivate `cute-nav-link` or its index in the links array to activate. Set _null_ for use the currently selected or first `cute-nav-link` in the list.\r\n * @param origin (optional) Tells how the element was focused (via the mouse, keyboard, touch, or programmatically). The latter is the default value.\r\n * @returns _true_ when succeeded, otherwise _false_.\r\n */\r\n activateNavLink(linkToActivate: CuteNavLink|number|null, origin: FocusOrigin = \"program\"): boolean {\r\n if (linkToActivate == null) {\r\n if (this.selectedIndex != null) {\r\n linkToActivate = this.selectedIndex;\r\n } else if (this.navLinks) {\r\n const firstEnabled = this.navLinks.find(link => !link.disabled);\r\n if (firstEnabled) {\r\n linkToActivate = firstEnabled;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n if (!this.navLinks || this.navLinks.length == 0) { return false; }\r\n\r\n if (typeof linkToActivate === \"number\") {\r\n const linkIndex = linkToActivate;\r\n linkToActivate = this.navLinks.get(linkIndex) ?? null;\r\n }\r\n\r\n if (!linkToActivate) { return false; }\r\n\r\n const navLink = <CuteNavLink> linkToActivate;\r\n const newIndex = this.getNavLinkIndex(navLink);\r\n\r\n if (this.selectedIndex == newIndex) {\r\n // The link has already been activated\r\n this._keyManager?.updateActiveItem(newIndex);\r\n return true;\r\n }\r\n\r\n if (newIndex >= 0 && !navLink.disabled) {\r\n const oldIndex = this._selectedIndex;\r\n const oldLink = oldIndex != null ? this.navLinks.get(oldIndex)??null : null\r\n\r\n if (oldLink) {\r\n // Check before index changing condition\r\n const event = new CuteNavChangingEvent(newIndex, navLink, oldIndex, oldLink, origin);\r\n this.selectedLinkChanging.emit( event );\r\n if (event.defaultPrevented) {\r\n return false;\r\n }\r\n }\r\n\r\n this._keyManager?.updateActiveItem(newIndex);\r\n\r\n this.navLinks.forEach(link => {\r\n link.active = false;\r\n });\r\n\r\n navLink.active = true;\r\n this._selectedIndexToChange = null;\r\n this._selectedIndex = newIndex;\r\n\r\n this._focusChanged(newIndex, \"program\");\r\n this.selectedIndexChange.emit(newIndex);\r\n this.selectedLinkChange.emit( new CuteNavChangeEvent(newIndex, navLink, oldIndex, oldLink, origin) );\r\n\r\n this.markForCheck();\r\n\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Link focus changed handler\r\n * @param link Source link\r\n * @param origin Focus origin\r\n */\r\n _focusChanged(link: CuteNavLink|number, origin: FocusOrigin): void {\r\n let linkIndex: number;\r\n if (typeof link === \"number\") {\r\n if (this.isValidLinkIndex(link)) {\r\n linkIndex = link;\r\n link = this.navLinks!.get(linkIndex)!;\r\n } else {\r\n // Error\r\n return;\r\n }\r\n } else {\r\n linkIndex = this.getNavLinkIndex(link);\r\n }\r\n if (origin && this._oldFocusLink !== link) {\r\n const oldIndex = this._oldFocusLink ? this.getNavLinkIndex(this._oldFocusLink) : null;\r\n this.focusChange.emit( new CuteNavChangeEvent(linkIndex, link, oldIndex, this._oldFocusLink, origin) );\r\n this._oldFocusLink = link;\r\n }\r\n }\r\n\r\n /** Whether the specified link index is a valid nav index. */\r\n protected isValidLinkIndex(index: number): boolean {\r\n return this.navLinks != null && (index >= 0 && index < this.navLinks.length);\r\n }\r\n\r\n protected onKeydown(event: KeyboardEvent) {\r\n if (event.code == \"Space\" || event.code == \"Enter\") {\r\n if (this._keyManager\r\n && this._keyManager.activeItemIndex != null\r\n && this.selectedIndex != this._keyManager.activeItemIndex)\r\n {\r\n this.activateNavLink(this._keyManager.activeItemIndex, \"keyboard\");\r\n }\r\n event.preventDefault();\r\n } else {\r\n this._keyManager?.onKeydown(event);\r\n }\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n const tagName = this._elementRef.nativeElement.tagName;\r\n\r\n if (this.isTab() && !this.role && !(tagName.toLowerCase()===\"nav\")) {\r\n this.role = \"tablist\";\r\n }\r\n }\r\n\r\n override ngAfterContentInit() {\r\n super.ngAfterContentInit();\r\n\r\n if (this.navLinks) {\r\n this._keyManager = new FocusKeyManager(this.navLinks)\r\n .withWrap(true)\r\n .withHomeAndEnd(true)\r\n // Allow focus to land on disabled tabs, as per https://w3c.github.io/aria-practices/#kbd_disabled_controls\r\n .skipPredicate(() => false);\r\n\r\n if (this.orientation == \"horizontal\") {\r\n this._keyManager.withHorizontalOrientation(this._dir.value);\r\n } else {\r\n this._keyManager.withVerticalOrientation(true).withPageUpDown(true);\r\n }\r\n // Immediate activation on focus changing\r\n this._keyManager.change\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(newIndex => {\r\n this._focusChanged(newIndex, \"keyboard\");\r\n });\r\n\r\n this._keyManager.tabOut\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n if (this.selectedIndex != null) {\r\n this._keyManager?.updateActiveItem(this.selectedIndex)\r\n }\r\n });\r\n\r\n if (this._selectedIndexToChange == null && this.autoSelect) {\r\n Promise.resolve().then(()=> this.activateNavLink(null));\r\n }\r\n }\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n\r\n this._keyManager?.destroy();\r\n }\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 {\r\n Directive, EventEmitter, forwardRef, inject,\r\n Input, numberAttribute, OnDestroy, Output,\r\n} from \"@angular/core\";\r\nimport {CdkPortalOutlet} from \"@angular/cdk/portal\";\r\nimport {CdkScrollable} from \"@angular/cdk/overlay\";\r\nimport {CuteNavItem} from \"./nav-item.component\";\r\nimport {CuteLayoutControl} from \"@cute-widgets/base/abstract\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {getOverallTransitionDuration} from \"@cute-widgets/base/core\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\n\r\n@Directive({\r\n selector: '[cuteNavPaneOutlet]',\r\n exportAs: 'cuteNavPaneOutlet',\r\n inputs: ['portal: cuteNavPaneOutlet'],\r\n hostDirectives: [CdkScrollable],\r\n standalone: true,\r\n})\r\nexport class CuteNavPaneOutlet extends CdkPortalOutlet implements OnDestroy {\r\n private _pane: CuteNavPane = inject(forwardRef(() => CuteNavPane));\r\n\r\n constructor() {\r\n super();\r\n\r\n this._pane.show\r\n .pipe(takeUntilDestroyed())\r\n .subscribe(()=> {\r\n const panePortal = this._pane.item?.content;\r\n if (panePortal && !panePortal.isAttached) {\r\n panePortal.attach(this);\r\n }\r\n });\r\n this._pane.hide\r\n .pipe(takeUntilDestroyed())\r\n .subscribe(()=> {\r\n const item = this._pane.item;\r\n const panePortal = item?.content;\r\n if (panePortal && panePortal.isAttached) {\r\n if (!item?.preserveTabContent) {\r\n panePortal.detach();\r\n }\r\n }\r\n });\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[cute-nav-pane], [cuteNavPane]',\r\n exportAs: 'cuteNavPane',\r\n host: {\r\n 'class': 'cute-nav-pane tab-pane',\r\n '[class.fade]': 'item?.nav?.animation',\r\n '[class.active]': '_active',\r\n '[class.show]': '_show',\r\n '[attr.tabindex]': '0', //'_active ? 0 : -1',\r\n '[attr.aria-labelledby]': 'ariaLabelledby || null',\r\n 'role': 'tabpanel',\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteNavPane extends CuteLayoutControl {\r\n private _subs: Subscription | undefined;\r\n protected _active: boolean = false;\r\n protected _show: boolean = false;\r\n\r\n /** Pane index */\r\n @Input({transform: numberAttribute})\r\n index: number = NaN;\r\n\r\n /** Navigation item reference */\r\n @Input()\r\n item: CuteNavItem | undefined;\r\n\r\n @Output() hide = new EventEmitter<void>();\r\n @Output() show = new EventEmitter<void>();\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected generateId(): string {\r\n return \"\";\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.id = `${this.item?.nav.id}-pane-${this.index}`;\r\n\r\n if (this.item) {\r\n this._subs = this.item.nav.selectedLinkChange.subscribe(ev => {\r\n this._active = (ev.index === this.index);\r\n if (this._active) {\r\n this.show.emit();\r\n setTimeout(()=> {\r\n this._show = true;\r\n this.markForCheck();\r\n }, getOverallTransitionDuration(this._nativeElement));\r\n } else {\r\n this.hide.emit();\r\n this._show = false;\r\n }\r\n this.markForCheck();\r\n });\r\n }\r\n\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n\r\n if (this._subs) {\r\n this._subs.unsubscribe();\r\n }\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 {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport {PortalModule} from \"@angular/cdk/portal\";\r\nimport {CuteNav} from \"./nav.directive\";\r\nimport {CuteNavPane, CuteNavPaneOutlet} from \"./nav-pane.directive\";\r\n\r\n@Component({\r\n selector: 'cute-nav-outlet',\r\n exportAs: 'cuteNavOutlet',\r\n template: `\r\n @for (item of nav?.navItems; track item.id; let i=$index) {\r\n <div cute-nav-pane\r\n [index]=\"i\"\r\n [item]=\"item\"\r\n [color]=\"item.defaultColor\"\r\n [aria-labelledby]=\"item.navLink?.id || null\">\r\n <ng-container [cuteNavPaneOutlet]=\"null\"></ng-container>\r\n </div>\r\n }\r\n `,\r\n styles: [],\r\n host: {\r\n 'class': 'cute-nav-outlet tab-content'\r\n },\r\n imports: [PortalModule, CuteNavPane, CuteNavPaneOutlet],\r\n //providers: [CuteAnimationService]\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuteNavOutlet /*implements AfterViewChecked*/ {\r\n\r\n @Input({alias: \"for\", required: true})\r\n get nav(): CuteNav|undefined {return this._nav;}\r\n set nav(value: CuteNav|undefined) { this._nav = value; }\r\n private _nav: CuteNav | undefined;\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 {CuteNavItem} from \"./nav-item.component\";\r\nimport {CuteNavLink} from \"./nav-link.directive\";\r\nimport {CuteNav} from \"./nav.directive\";\r\nimport {CuteNavOutlet} from \"./nav-outlet.component\";\r\nimport {CuteNavContent} from \"./nav-content.directive\";\r\nimport {CuteNavPane} from \"./nav-pane.directive\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteNav,\r\n CuteNavItem,\r\n CuteNavLink,\r\n CuteNavOutlet,\r\n CuteNavContent,\r\n CuteNavPane,\r\n];\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, ...TYPES],\r\n exports: [TYPES],\r\n providers: [],\r\n})\r\nexport class CuteNavModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId"],"mappings":"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"}