@ngbase/adk 0.1.17 → 0.1.19

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 (205) hide show
  1. package/fesm2022/ngbase-adk-a11y.mjs +42 -42
  2. package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
  3. package/fesm2022/ngbase-adk-accordion.mjs +20 -26
  4. package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
  5. package/fesm2022/ngbase-adk-autocomplete.mjs +11 -11
  6. package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
  7. package/fesm2022/ngbase-adk-avatar.mjs +13 -13
  8. package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
  9. package/fesm2022/ngbase-adk-bidi.mjs +3 -3
  10. package/fesm2022/ngbase-adk-bidi.mjs.map +1 -1
  11. package/fesm2022/ngbase-adk-breadcrumb.mjs +14 -14
  12. package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
  13. package/fesm2022/ngbase-adk-cache.mjs +3 -3
  14. package/fesm2022/ngbase-adk-cache.mjs.map +1 -1
  15. package/fesm2022/ngbase-adk-carousel.mjs +18 -18
  16. package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
  17. package/fesm2022/ngbase-adk-checkbox.mjs +15 -21
  18. package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
  19. package/fesm2022/ngbase-adk-chip.mjs +12 -12
  20. package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
  21. package/fesm2022/ngbase-adk-clipboard.mjs +7 -5
  22. package/fesm2022/ngbase-adk-clipboard.mjs.map +1 -1
  23. package/fesm2022/ngbase-adk-collections.mjs.map +1 -1
  24. package/fesm2022/ngbase-adk-color-picker.mjs +44 -53
  25. package/fesm2022/ngbase-adk-color-picker.mjs.map +1 -1
  26. package/fesm2022/ngbase-adk-cookies.mjs +3 -3
  27. package/fesm2022/ngbase-adk-cookies.mjs.map +1 -1
  28. package/fesm2022/ngbase-adk-datepicker.mjs +70 -89
  29. package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
  30. package/fesm2022/ngbase-adk-dialog.mjs +17 -39
  31. package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
  32. package/fesm2022/ngbase-adk-drag.mjs +20 -20
  33. package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
  34. package/fesm2022/ngbase-adk-form-field.mjs +65 -118
  35. package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
  36. package/fesm2022/ngbase-adk-hover-card.mjs +5 -5
  37. package/fesm2022/ngbase-adk-hover-card.mjs.map +1 -1
  38. package/fesm2022/ngbase-adk-icon.mjs +9 -11
  39. package/fesm2022/ngbase-adk-icon.mjs.map +1 -1
  40. package/fesm2022/ngbase-adk-inline-edit.mjs +27 -35
  41. package/fesm2022/ngbase-adk-inline-edit.mjs.map +1 -1
  42. package/fesm2022/ngbase-adk-jwt.mjs +6 -6
  43. package/fesm2022/ngbase-adk-jwt.mjs.map +1 -1
  44. package/fesm2022/ngbase-adk-keys.mjs +6 -6
  45. package/fesm2022/ngbase-adk-keys.mjs.map +1 -1
  46. package/fesm2022/ngbase-adk-layout.mjs.map +1 -1
  47. package/fesm2022/ngbase-adk-list.mjs +10 -10
  48. package/fesm2022/ngbase-adk-list.mjs.map +1 -1
  49. package/fesm2022/ngbase-adk-mask.mjs +8 -8
  50. package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
  51. package/fesm2022/ngbase-adk-menu.mjs +69 -79
  52. package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
  53. package/fesm2022/ngbase-adk-network.mjs +3 -3
  54. package/fesm2022/ngbase-adk-network.mjs.map +1 -1
  55. package/fesm2022/ngbase-adk-otp.mjs +24 -45
  56. package/fesm2022/ngbase-adk-otp.mjs.map +1 -1
  57. package/fesm2022/ngbase-adk-pagination.mjs +9 -9
  58. package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
  59. package/fesm2022/ngbase-adk-popover.mjs +120 -89
  60. package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
  61. package/fesm2022/ngbase-adk-portal.mjs +139 -47
  62. package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
  63. package/fesm2022/ngbase-adk-progress.mjs +7 -7
  64. package/fesm2022/ngbase-adk-progress.mjs.map +1 -1
  65. package/fesm2022/ngbase-adk-radio.mjs +20 -27
  66. package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
  67. package/fesm2022/ngbase-adk-resizable.mjs +138 -48
  68. package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
  69. package/fesm2022/ngbase-adk-scroll-area.mjs +28 -20
  70. package/fesm2022/ngbase-adk-scroll-area.mjs.map +1 -1
  71. package/fesm2022/ngbase-adk-select.mjs +58 -80
  72. package/fesm2022/ngbase-adk-select.mjs.map +1 -1
  73. package/fesm2022/ngbase-adk-selectable.mjs +19 -30
  74. package/fesm2022/ngbase-adk-selectable.mjs.map +1 -1
  75. package/fesm2022/ngbase-adk-sheet.mjs +6 -20
  76. package/fesm2022/ngbase-adk-sheet.mjs.map +1 -1
  77. package/fesm2022/ngbase-adk-sidenav.mjs +65 -48
  78. package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
  79. package/fesm2022/ngbase-adk-slider.mjs +40 -53
  80. package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
  81. package/fesm2022/ngbase-adk-sonner.mjs +12 -19
  82. package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
  83. package/fesm2022/ngbase-adk-stepper.mjs +17 -25
  84. package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
  85. package/fesm2022/ngbase-adk-switch.mjs +25 -32
  86. package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
  87. package/fesm2022/ngbase-adk-table.mjs +581 -83
  88. package/fesm2022/ngbase-adk-table.mjs.map +1 -1
  89. package/fesm2022/ngbase-adk-tabs.mjs +37 -35
  90. package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
  91. package/fesm2022/ngbase-adk-test.mjs.map +1 -1
  92. package/fesm2022/ngbase-adk-toggle-group.mjs +20 -34
  93. package/fesm2022/ngbase-adk-toggle-group.mjs.map +1 -1
  94. package/fesm2022/ngbase-adk-toggle.mjs +14 -19
  95. package/fesm2022/ngbase-adk-toggle.mjs.map +1 -1
  96. package/fesm2022/ngbase-adk-tooltip.mjs +12 -19
  97. package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
  98. package/fesm2022/ngbase-adk-tour.mjs +47 -52
  99. package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
  100. package/fesm2022/ngbase-adk-translate.mjs +8 -10
  101. package/fesm2022/ngbase-adk-translate.mjs.map +1 -1
  102. package/fesm2022/ngbase-adk-tree.mjs +20 -20
  103. package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
  104. package/fesm2022/ngbase-adk-utils.mjs +30 -43
  105. package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
  106. package/fesm2022/ngbase-adk-virtualizer.mjs +9 -9
  107. package/fesm2022/ngbase-adk-virtualizer.mjs.map +1 -1
  108. package/package.json +101 -101
  109. package/schematics/components/files/accordion/accordion.ts.template +10 -5
  110. package/schematics/components/files/audio/AudioPlayer.ts.template +245 -0
  111. package/schematics/components/files/audio/AudioRecorder.ts.template +377 -0
  112. package/schematics/components/files/audio/AudioVisualizer.ts.template +175 -0
  113. package/schematics/components/files/audio/index.ts.template +3 -0
  114. package/schematics/components/files/badge/badge-llm.md.template +2 -2
  115. package/schematics/components/files/badge/badge.ts.template +29 -9
  116. package/schematics/components/files/card/card.ts.template +1 -1
  117. package/schematics/components/files/charts/area-chart.component.ts.template +278 -0
  118. package/schematics/components/files/charts/bar-chart.component.ts.template +262 -0
  119. package/schematics/components/files/charts/chart-tooltip.component.ts.template +168 -0
  120. package/schematics/components/files/charts/index.ts.template +4 -0
  121. package/schematics/components/files/charts/line-chart.component.ts.template +238 -0
  122. package/schematics/components/files/charts/pie-chart.component.ts.template +283 -0
  123. package/schematics/components/files/checkbox/checkbox.ts.template +4 -7
  124. package/schematics/components/files/color-picker/color-picker.ts.template +2 -2
  125. package/schematics/components/files/dialog/dialog.ts.template +11 -14
  126. package/schematics/components/files/drawer/drawer.ts.template +25 -28
  127. package/schematics/components/files/form-field/form-field.ts.template +59 -23
  128. package/schematics/components/files/inline-edit/inline-edit.ts.template +3 -1
  129. package/schematics/components/files/pagination/pagination.ts.template +6 -6
  130. package/schematics/components/files/picasa/picasa-base.component.ts.template +9 -30
  131. package/schematics/components/files/popover/popover.ts.template +9 -4
  132. package/schematics/components/files/select/list-selection.ts.template +0 -2
  133. package/schematics/components/files/select/option.ts.template +1 -1
  134. package/schematics/components/files/selectable/selectable.ts.template +2 -2
  135. package/schematics/components/files/sheet/sheet.ts.template +20 -14
  136. package/schematics/components/files/sidenav/sidenav.ts.template +69 -6
  137. package/schematics/components/files/sonner/sonner.ts.template +1 -2
  138. package/schematics/components/files/stepper/stepper-llm.md.template +7 -0
  139. package/schematics/components/files/stepper/stepper.ts.template +2 -4
  140. package/schematics/components/files/switch/switch.ts.template +2 -2
  141. package/schematics/components/files/table/table-llm.md.template +14 -2
  142. package/schematics/components/files/table/table.ts.template +42 -3
  143. package/schematics/components/files/theme/theme.service.ts.template +3 -3
  144. package/schematics/components/files/toggle/toggle.ts.template +1 -1
  145. package/schematics/components/files/toggle-group/toggle-group.ts.template +1 -1
  146. package/schematics/components/files/tooltip/tooltip.ts.template +2 -3
  147. package/{accordion/index.d.ts → types/ngbase-adk-accordion.d.ts} +1 -3
  148. package/{autocomplete/index.d.ts → types/ngbase-adk-autocomplete.d.ts} +2 -7
  149. package/{checkbox/index.d.ts → types/ngbase-adk-checkbox.d.ts} +8 -14
  150. package/types/ngbase-adk-clipboard.d.ts +12 -0
  151. package/{color-picker/index.d.ts → types/ngbase-adk-color-picker.d.ts} +14 -26
  152. package/{datepicker/index.d.ts → types/ngbase-adk-datepicker.d.ts} +9 -18
  153. package/{dialog/index.d.ts → types/ngbase-adk-dialog.d.ts} +3 -8
  154. package/types/ngbase-adk-form-field.d.ts +88 -0
  155. package/{inline-edit/index.d.ts → types/ngbase-adk-inline-edit.d.ts} +8 -16
  156. package/{menu/index.d.ts → types/ngbase-adk-menu.d.ts} +6 -5
  157. package/{otp/index.d.ts → types/ngbase-adk-otp.d.ts} +8 -16
  158. package/{popover/index.d.ts → types/ngbase-adk-popover.d.ts} +14 -2
  159. package/{portal/index.d.ts → types/ngbase-adk-portal.d.ts} +30 -8
  160. package/{radio/index.d.ts → types/ngbase-adk-radio.d.ts} +9 -12
  161. package/{resizable/index.d.ts → types/ngbase-adk-resizable.d.ts} +4 -4
  162. package/{scroll-area/index.d.ts → types/ngbase-adk-scroll-area.d.ts} +2 -1
  163. package/{select/index.d.ts → types/ngbase-adk-select.d.ts} +8 -22
  164. package/{selectable/index.d.ts → types/ngbase-adk-selectable.d.ts} +6 -10
  165. package/{sheet/index.d.ts → types/ngbase-adk-sheet.d.ts} +4 -3
  166. package/{sidenav/index.d.ts → types/ngbase-adk-sidenav.d.ts} +7 -8
  167. package/{slider/index.d.ts → types/ngbase-adk-slider.d.ts} +8 -17
  168. package/{sonner/index.d.ts → types/ngbase-adk-sonner.d.ts} +1 -3
  169. package/{stepper/index.d.ts → types/ngbase-adk-stepper.d.ts} +1 -4
  170. package/{switch/index.d.ts → types/ngbase-adk-switch.d.ts} +7 -14
  171. package/{table/index.d.ts → types/ngbase-adk-table.d.ts} +126 -3
  172. package/{test/index.d.ts → types/ngbase-adk-test.d.ts} +1 -1
  173. package/{toggle-group/index.d.ts → types/ngbase-adk-toggle-group.d.ts} +5 -10
  174. package/types/ngbase-adk-toggle.d.ts +14 -0
  175. package/{tooltip/index.d.ts → types/ngbase-adk-tooltip.d.ts} +9 -11
  176. package/{tour/index.d.ts → types/ngbase-adk-tour.d.ts} +3 -6
  177. package/{utils/index.d.ts → types/ngbase-adk-utils.d.ts} +15 -11
  178. package/clipboard/index.d.ts +0 -11
  179. package/form-field/index.d.ts +0 -97
  180. package/toggle/index.d.ts +0 -16
  181. /package/{a11y/index.d.ts → types/ngbase-adk-a11y.d.ts} +0 -0
  182. /package/{avatar/index.d.ts → types/ngbase-adk-avatar.d.ts} +0 -0
  183. /package/{bidi/index.d.ts → types/ngbase-adk-bidi.d.ts} +0 -0
  184. /package/{breadcrumb/index.d.ts → types/ngbase-adk-breadcrumb.d.ts} +0 -0
  185. /package/{cache/index.d.ts → types/ngbase-adk-cache.d.ts} +0 -0
  186. /package/{carousel/index.d.ts → types/ngbase-adk-carousel.d.ts} +0 -0
  187. /package/{chip/index.d.ts → types/ngbase-adk-chip.d.ts} +0 -0
  188. /package/{collections/index.d.ts → types/ngbase-adk-collections.d.ts} +0 -0
  189. /package/{cookies/index.d.ts → types/ngbase-adk-cookies.d.ts} +0 -0
  190. /package/{drag/index.d.ts → types/ngbase-adk-drag.d.ts} +0 -0
  191. /package/{hover-card/index.d.ts → types/ngbase-adk-hover-card.d.ts} +0 -0
  192. /package/{icon/index.d.ts → types/ngbase-adk-icon.d.ts} +0 -0
  193. /package/{jwt/index.d.ts → types/ngbase-adk-jwt.d.ts} +0 -0
  194. /package/{keys/index.d.ts → types/ngbase-adk-keys.d.ts} +0 -0
  195. /package/{layout/index.d.ts → types/ngbase-adk-layout.d.ts} +0 -0
  196. /package/{list/index.d.ts → types/ngbase-adk-list.d.ts} +0 -0
  197. /package/{mask/index.d.ts → types/ngbase-adk-mask.d.ts} +0 -0
  198. /package/{network/index.d.ts → types/ngbase-adk-network.d.ts} +0 -0
  199. /package/{pagination/index.d.ts → types/ngbase-adk-pagination.d.ts} +0 -0
  200. /package/{progress/index.d.ts → types/ngbase-adk-progress.d.ts} +0 -0
  201. /package/{tabs/index.d.ts → types/ngbase-adk-tabs.d.ts} +0 -0
  202. /package/{translate/index.d.ts → types/ngbase-adk-translate.d.ts} +0 -0
  203. /package/{tree/index.d.ts → types/ngbase-adk-tree.d.ts} +0 -0
  204. /package/{virtualizer/index.d.ts → types/ngbase-adk-virtualizer.d.ts} +0 -0
  205. /package/{index.d.ts → types/ngbase-adk.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-test.mjs","sources":["../../../projects/adk/test/utils.ts","../../../projects/adk/test/ngbase-adk-test.ts"],"sourcesContent":["import {\n Component,\n DebugElement,\n Directive,\n EnvironmentProviders,\n OutputEmitterRef,\n Pipe,\n Provider,\n Type,\n} from '@angular/core';\nimport { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\n\n// export function mock<T>(service: new (...args: any[]) => T, properties: () => Partial<T>) {\n// // const cloned = { ...properties } as Partial<T> & { resetMock: () => Partial<T> };\n// // const initialProperties = { ...properties };\n\n// // const resetMock = () => {\n// // Object.keys(initialProperties).forEach(key => {\n// // (cloned as any)[key] = initialProperties[key];\n// // });\n// // return cloned;\n// // };\n\n// // cloned.resetMock = resetMock;\n// return () => ({ provide: service, useValue: properties() });\n// }\n\n// export function mockService<T>(service: new (...args: any[]) => T, properties: Partial<T>) {\n// return mock(service, () => properties)();\n// }\n\nclass AngularQuery {\n constructor(public dEl: DebugElement) {}\n\n viewChild<U>(directive: Type<U>, selector?: string | Type<any>): U {\n return this.queryNative(selector || directive).injector.get(directive);\n }\n\n viewChildren<U>(directive: Type<U>, selector?: string): U[] {\n return this.viewChildrenDebug(selector || directive).map(de => de.injector.get(directive));\n }\n\n viewChildrenDebug<U>(directive: string | Type<U>) {\n return this.dEl.queryAll(this.getDirectiveType(directive));\n }\n\n queryNative<U>(directive: string | Type<U>) {\n return this.dEl.query(this.getDirectiveType(directive));\n }\n\n private getDirectiveType(directive: string | Type<any>) {\n return typeof directive === 'string' ? By.css(directive) : By.directive(directive);\n }\n}\n\nexport class ElementHelper<T extends HTMLElement> extends AngularQuery {\n public el!: T;\n\n constructor(public override dEl: DebugElement) {\n super(dEl);\n this.el = dEl.nativeElement;\n }\n\n get textContent() {\n return this.el.textContent;\n }\n\n $<U extends HTMLElement>(selector: string | Type<any>): ElementHelper<U> {\n const el = this.queryNative(selector);\n return el ? new ElementHelper(el) : (null as any);\n }\n\n $All<U extends HTMLElement>(selector: string | Type<any>): ElementHelper<U>[] {\n return this.viewChildrenDebug(selector).map(de => new ElementHelper(de));\n }\n\n getByText(text: string, root: string | Type<any> = 'body'): HTMLElement | null {\n const rootEl = this.$(root).el;\n const walker = document.createTreeWalker(rootEl, NodeFilter.SHOW_ELEMENT, null);\n let node: Node | null;\n while ((node = walker.nextNode())) {\n if ((node as HTMLElement).textContent?.trim() === text) {\n return node as HTMLElement;\n }\n }\n return null;\n }\n\n hasClass(...classNames: string[]) {\n return classNames.every(className => this.el.classList.contains(className));\n }\n\n attr(name: string, value?: string) {\n if (value !== undefined) {\n this.el.setAttribute(name, value);\n }\n return this.el.getAttribute(name);\n }\n\n css(name: string, value?: string) {\n if (value !== undefined) {\n this.el.style.setProperty(name, value);\n }\n return this.el.style.getPropertyValue(name);\n }\n\n click() {\n this.el.click();\n }\n\n focus() {\n this.el.focus();\n const focusEvent = new Event('focus', { bubbles: true, cancelable: true });\n this.el.dispatchEvent(focusEvent);\n }\n\n keydown(key: string, options?: KeyboardEventInit) {\n const event = new KeyboardEvent('keydown', {\n key,\n cancelable: true,\n bubbles: true,\n ...options,\n });\n this.el.dispatchEvent(event);\n return event;\n }\n\n mouseDown(options?: MouseEventInit) {\n const event = new MouseEvent('mousedown', { cancelable: true, bubbles: true, ...options });\n this.el.dispatchEvent(event);\n return event;\n }\n\n mouseEnter(options?: MouseEventInit) {\n const event = new MouseEvent('mouseenter', { cancelable: true, bubbles: true, ...options });\n this.el.dispatchEvent(event);\n return event;\n }\n\n mouseLeave(options?: MouseEventInit) {\n const event = new MouseEvent('mouseleave', { cancelable: true, bubbles: true, ...options });\n this.el.dispatchEvent(event);\n return event;\n }\n\n input(value: string | ((v: any) => any)) {\n if (this.el instanceof HTMLInputElement) {\n this.el.value = typeof value === 'function' ? value(this.el.value) : value;\n this.el.dispatchEvent(new Event('input'));\n } else {\n throw new Error('Element is not an input');\n }\n }\n\n paste(text: string) {\n const pasteEvent = new CustomEvent('paste', {\n bubbles: true,\n cancelable: true,\n });\n\n Object.defineProperty(pasteEvent, 'clipboardData', {\n writable: true,\n value: {\n getData: () => text,\n },\n });\n\n this.el.dispatchEvent(pasteEvent);\n return pasteEvent;\n }\n\n type(value: string | string[], clear = false) {\n if (clear) {\n this.input('');\n }\n // Ensure the input has focus\n if (document.activeElement !== this.el) {\n this.focus();\n }\n let event: KeyboardEvent | MouseEvent;\n for (const char of value) {\n event = this.keydown(char);\n if (event.defaultPrevented) {\n continue;\n }\n\n // Trigger keypress event (deprecated, but some implementations might use it)\n event = new KeyboardEvent('keypress', { key: char, bubbles: true });\n if (!this.el.dispatchEvent(event)) {\n continue;\n }\n\n // Append character to input value\n if (char === 'Backspace') {\n this.input(v => v.slice(0, -1));\n } else if (char === 'Delete') {\n const caretPosition = (this.el as unknown as HTMLInputElement).selectionStart || 0;\n this.input(v => v.slice(0, caretPosition) + v.slice(caretPosition + 1));\n } else if (/^[a-zA-Z0-9]$/.test(char)) {\n this.input(v => v + char);\n }\n\n // Trigger keyup event\n const keyupEvent = new KeyboardEvent('keyup', { key: char, bubbles: true });\n this.el.dispatchEvent(keyupEvent);\n }\n return event!;\n }\n}\n\nexport class RenderResult<T> extends ElementHelper<HTMLElement> {\n host!: T;\n\n constructor(public fixture: ComponentFixture<T>) {\n super(fixture.debugElement);\n this.host = fixture.componentInstance;\n }\n\n detectChanges(): void {\n this.fixture.detectChanges();\n }\n\n async whenStable(): Promise<void> {\n this.fixture.detectChanges();\n await this.fixture.whenStable();\n }\n\n async formStable(): Promise<void> {\n await this.whenStable();\n // We have to wait for the UI to be updated\n this.fixture.detectChanges();\n }\n\n async sleep(ms: number) {\n await sleep(ms);\n }\n\n inject<U>(directive: Type<U>) {\n return injectService(directive);\n }\n\n injectHost<U>(directive: Type<U>) {\n return this.fixture.debugElement.injector.get(directive);\n }\n\n queryRoot<U extends HTMLElement>(selector: string): ElementHelper<U> {\n const el = document.querySelector(selector) as U;\n return el ? new ElementHelper<U>({ nativeElement: el } as any) : (null as any);\n }\n\n setInput(name: string, value: any) {\n this.fixture.componentRef.setInput(name, value);\n }\n}\n\nexport interface FakeServiceResult<T extends Type<any>, C = any> {\n provide: T;\n useFactory: () => any;\n v: InstanceType<T>;\n _: C;\n}\n\nexport function fakeService<\n T extends Type<any>,\n I extends Partial<InstanceType<T>> | (() => Partial<InstanceType<T>> & { __?: any }),\n>(service: T, impl: I) {\n // Extract the exact type of __ from the implementation\n type ControlsType = I extends () => Partial<InstanceType<T>> & { __: infer C } ? C : never;\n\n const fn = typeof impl === 'function' ? (impl as () => any) : () => impl;\n\n let v: any;\n\n return {\n provide: service,\n useFactory: () => (v = fn()),\n get v() {\n return v as InstanceType<T>;\n },\n get _() {\n return v.__ as ControlsType;\n },\n };\n}\n\nexport type FakeService<\n T extends Type<any>,\n I extends Partial<InstanceType<T>> | (() => Partial<InstanceType<T>> & { __?: any }) = any,\n> = FakeServiceResult<T, I extends () => Partial<InstanceType<T>> & { __: infer C } ? C : never>;\n\ntype RenderProvider = Provider | EnvironmentProviders | FakeService<any>;\n\nexport async function render<T>(\n component: Type<T>,\n providers: RenderProvider[] = [],\n options?: {\n inputs?: [string, any][];\n components?: [Partial<Component>, Partial<Component>][];\n directives?: [Partial<Directive>, Partial<Directive>][];\n pipes?: [Partial<Pipe>, Partial<Pipe>][];\n providers?: FakeService<any>[];\n },\n) {\n if (\n providers.length ||\n options?.providers?.length ||\n options?.components?.length ||\n options?.directives?.length ||\n options?.pipes?.length\n ) {\n const bed = TestBed.configureTestingModule({\n imports: [component],\n providers,\n });\n\n options?.providers?.forEach(({ provide, useFactory }) => {\n bed.overrideProvider(provide, { useFactory });\n });\n\n options?.components?.forEach(([from, to]) => {\n bed.overrideComponent(component, { remove: from, add: to });\n });\n options?.directives?.forEach(([from, to]) => {\n bed.overrideDirective(component, { remove: from, add: to });\n });\n options?.pipes?.forEach(([from, to]) => {\n bed.overridePipe(component, { remove: from, add: to });\n });\n await bed.compileComponents();\n }\n const fixture = TestBed.createComponent(component);\n\n // Set inputs\n options?.inputs?.forEach(([name, value]) => {\n fixture.componentRef.setInput(name, value);\n });\n return new RenderResult(fixture);\n}\n\nexport function injectService<T>(service: Type<T>, providers: RenderProvider[] = []) {\n if (providers.length) {\n TestBed.configureTestingModule({ providers });\n }\n return TestBed.inject(service);\n}\n\nexport function firstOutputFrom<T>(observable: OutputEmitterRef<T>) {\n return new Promise<T>(resolve => {\n const sub = observable.subscribe(value => {\n sub.unsubscribe();\n resolve(value);\n });\n });\n}\n\nexport async function sleep(ms: number) {\n await new Promise(resolve => setTimeout(resolve, ms));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngbase-adk-test.mjs","sources":["../../../projects/adk/test/utils.ts","../../../projects/adk/test/ngbase-adk-test.ts"],"sourcesContent":["import {\n Component,\n DebugElement,\n Directive,\n EnvironmentProviders,\n OutputEmitterRef,\n Pipe,\n Provider,\n Type,\n} from '@angular/core';\nimport { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\n\n// export function mock<T>(service: new (...args: any[]) => T, properties: () => Partial<T>) {\n// // const cloned = { ...properties } as Partial<T> & { resetMock: () => Partial<T> };\n// // const initialProperties = { ...properties };\n\n// // const resetMock = () => {\n// // Object.keys(initialProperties).forEach(key => {\n// // (cloned as any)[key] = initialProperties[key];\n// // });\n// // return cloned;\n// // };\n\n// // cloned.resetMock = resetMock;\n// return () => ({ provide: service, useValue: properties() });\n// }\n\n// export function mockService<T>(service: new (...args: any[]) => T, properties: Partial<T>) {\n// return mock(service, () => properties)();\n// }\n\nclass AngularQuery {\n constructor(public dEl: DebugElement) {}\n\n viewChild<U>(directive: Type<U>, selector?: string | Type<any>): U {\n return this.queryNative(selector || directive).injector.get(directive);\n }\n\n viewChildren<U>(directive: Type<U>, selector?: string): U[] {\n return this.viewChildrenDebug(selector || directive).map(de => de.injector.get(directive));\n }\n\n viewChildrenDebug<U>(directive: string | Type<U>) {\n return this.dEl.queryAll(this.getDirectiveType(directive));\n }\n\n queryNative<U>(directive: string | Type<U>) {\n return this.dEl.query(this.getDirectiveType(directive));\n }\n\n private getDirectiveType(directive: string | Type<any>) {\n return typeof directive === 'string' ? By.css(directive) : By.directive(directive);\n }\n}\n\nexport class ElementHelper<T extends HTMLElement> extends AngularQuery {\n public el!: T;\n\n constructor(public override dEl: DebugElement) {\n super(dEl);\n this.el = dEl.nativeElement;\n }\n\n get textContent() {\n return this.el.textContent;\n }\n\n $<U extends HTMLElement>(selector: string | Type<any>): ElementHelper<U> {\n const el = this.queryNative(selector);\n return el ? new ElementHelper(el) : (null as any);\n }\n\n $All<U extends HTMLElement>(selector: string | Type<any>): ElementHelper<U>[] {\n return this.viewChildrenDebug(selector).map(de => new ElementHelper(de));\n }\n\n getByText(text: string, root: string | Type<any> = 'body'): HTMLElement | null {\n const rootEl = this.$(root).el;\n const walker = document.createTreeWalker(rootEl, NodeFilter.SHOW_ELEMENT, null);\n let node: Node | null;\n while ((node = walker.nextNode())) {\n if ((node as HTMLElement).textContent?.trim() === text) {\n return node as HTMLElement;\n }\n }\n return null;\n }\n\n hasClass(...classNames: string[]) {\n return classNames.every(className => this.el.classList.contains(className));\n }\n\n attr(name: string, value?: string) {\n if (value !== undefined) {\n this.el.setAttribute(name, value);\n }\n return this.el.getAttribute(name);\n }\n\n css(name: string, value?: string) {\n if (value !== undefined) {\n this.el.style.setProperty(name, value);\n }\n return this.el.style.getPropertyValue(name);\n }\n\n click() {\n this.el.click();\n }\n\n focus() {\n this.el.focus();\n const focusEvent = new Event('focus', { bubbles: true, cancelable: true });\n this.el.dispatchEvent(focusEvent);\n }\n\n keydown(key: string, options?: KeyboardEventInit) {\n const event = new KeyboardEvent('keydown', {\n key,\n cancelable: true,\n bubbles: true,\n ...options,\n });\n this.el.dispatchEvent(event);\n return event;\n }\n\n mouseDown(options?: MouseEventInit) {\n const event = new MouseEvent('mousedown', { cancelable: true, bubbles: true, ...options });\n this.el.dispatchEvent(event);\n return event;\n }\n\n mouseEnter(options?: MouseEventInit) {\n const event = new MouseEvent('mouseenter', { cancelable: true, bubbles: true, ...options });\n this.el.dispatchEvent(event);\n return event;\n }\n\n mouseLeave(options?: MouseEventInit) {\n const event = new MouseEvent('mouseleave', { cancelable: true, bubbles: true, ...options });\n this.el.dispatchEvent(event);\n return event;\n }\n\n input(value: string | ((v: any) => any)) {\n if (this.el instanceof HTMLInputElement) {\n this.el.value = typeof value === 'function' ? value(this.el.value) : value;\n this.el.dispatchEvent(new Event('input'));\n } else {\n throw new Error('Element is not an input');\n }\n }\n\n paste(text: string) {\n const pasteEvent = new CustomEvent('paste', {\n bubbles: true,\n cancelable: true,\n });\n\n Object.defineProperty(pasteEvent, 'clipboardData', {\n writable: true,\n value: {\n getData: () => text,\n },\n });\n\n this.el.dispatchEvent(pasteEvent);\n return pasteEvent;\n }\n\n type(value: string | string[], clear = false) {\n if (clear) {\n this.input('');\n }\n // Ensure the input has focus\n if (document.activeElement !== this.el) {\n this.focus();\n }\n let event: KeyboardEvent | MouseEvent;\n for (const char of value) {\n event = this.keydown(char);\n if (event.defaultPrevented) {\n continue;\n }\n\n // Trigger keypress event (deprecated, but some implementations might use it)\n event = new KeyboardEvent('keypress', { key: char, bubbles: true });\n if (!this.el.dispatchEvent(event)) {\n continue;\n }\n\n // Append character to input value\n if (char === 'Backspace') {\n this.input(v => v.slice(0, -1));\n } else if (char === 'Delete') {\n const caretPosition = (this.el as unknown as HTMLInputElement).selectionStart || 0;\n this.input(v => v.slice(0, caretPosition) + v.slice(caretPosition + 1));\n } else if (/^[a-zA-Z0-9]$/.test(char)) {\n this.input(v => v + char);\n }\n\n // Trigger keyup event\n const keyupEvent = new KeyboardEvent('keyup', { key: char, bubbles: true });\n this.el.dispatchEvent(keyupEvent);\n }\n return event!;\n }\n}\n\nexport class RenderResult<T> extends ElementHelper<HTMLElement> {\n host!: T;\n\n constructor(public fixture: ComponentFixture<T>) {\n super(fixture.debugElement);\n this.host = fixture.componentInstance;\n }\n\n detectChanges(): void {\n this.fixture.detectChanges();\n }\n\n async whenStable(): Promise<void> {\n this.fixture.detectChanges();\n await this.fixture.whenStable();\n }\n\n async formStable(): Promise<void> {\n await this.whenStable();\n // We have to wait for the UI to be updated\n this.fixture.detectChanges();\n }\n\n async sleep(ms: number) {\n await sleep(ms);\n }\n\n inject<U>(directive: Type<U>) {\n return injectService(directive);\n }\n\n injectHost<U>(directive: Type<U>) {\n return this.fixture.debugElement.injector.get(directive);\n }\n\n queryRoot<U extends HTMLElement>(selector: string): ElementHelper<U> {\n const el = document.querySelector(selector) as U;\n return el ? new ElementHelper<U>({ nativeElement: el } as any) : (null as any);\n }\n\n setInput(name: string, value: any) {\n this.fixture.componentRef.setInput(name, value);\n }\n}\n\nexport interface FakeServiceResult<T extends Type<any>, C = any> {\n provide: T;\n useFactory: () => any;\n v: InstanceType<T>;\n _: C;\n}\n\nexport function fakeService<\n T extends Type<any>,\n I extends Partial<InstanceType<T>> | (() => Partial<InstanceType<T>> & { __?: any }),\n>(service: T, impl: I) {\n // Extract the exact type of __ from the implementation\n type ControlsType = I extends () => Partial<InstanceType<T>> & { __: infer C } ? C : never;\n\n const fn = typeof impl === 'function' ? (impl as () => any) : () => impl;\n\n let v: any;\n\n return {\n provide: service,\n useFactory: () => (v = fn()),\n get v() {\n return v as InstanceType<T>;\n },\n get _() {\n return v.__ as ControlsType;\n },\n };\n}\n\nexport type FakeService<\n T extends Type<any>,\n I extends Partial<InstanceType<T>> | (() => Partial<InstanceType<T>> & { __?: any }) = any,\n> = FakeServiceResult<T, I extends () => Partial<InstanceType<T>> & { __: infer C } ? C : never>;\n\ntype RenderProvider = Provider | EnvironmentProviders | FakeService<any>;\n\nexport async function render<T>(\n component: Type<T>,\n providers: RenderProvider[] = [],\n options?: {\n inputs?: [string, any][];\n components?: [Partial<Component>, Partial<Component>][];\n directives?: [Partial<Directive>, Partial<Directive>][];\n pipes?: [Partial<Pipe>, Partial<Pipe>][];\n providers?: FakeService<any>[];\n },\n) {\n if (\n providers.length ||\n options?.providers?.length ||\n options?.components?.length ||\n options?.directives?.length ||\n options?.pipes?.length\n ) {\n const bed = TestBed.configureTestingModule({\n imports: [component],\n providers,\n });\n\n options?.providers?.forEach(({ provide, useFactory }) => {\n bed.overrideProvider(provide, { useFactory });\n });\n\n options?.components?.forEach(([from, to]) => {\n bed.overrideComponent(component, { remove: from, add: to });\n });\n options?.directives?.forEach(([from, to]) => {\n bed.overrideDirective(component, { remove: from, add: to });\n });\n options?.pipes?.forEach(([from, to]) => {\n bed.overridePipe(component, { remove: from, add: to });\n });\n await bed.compileComponents();\n }\n const fixture = TestBed.createComponent(component);\n\n // Set inputs\n options?.inputs?.forEach(([name, value]) => {\n fixture.componentRef.setInput(name, value);\n });\n return new RenderResult(fixture);\n}\n\nexport function injectService<T>(service: Type<T>, providers: RenderProvider[] = []) {\n if (providers.length) {\n TestBed.configureTestingModule({ providers });\n }\n return TestBed.inject(service);\n}\n\nexport function firstOutputFrom<T>(observable: OutputEmitterRef<T>) {\n return new Promise<T>(resolve => {\n const sub = observable.subscribe(value => {\n sub.unsubscribe();\n resolve(value);\n });\n });\n}\n\nexport async function sleep(ms: number) {\n await new Promise(resolve => setTimeout(resolve, ms));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -2,13 +2,13 @@ import * as i0 from '@angular/core';
2
2
  import { inject, input, booleanAttribute, computed, linkedSignal, Directive, contentChildren, model } from '@angular/core';
3
3
  import * as i1 from '@ngbase/adk/a11y';
4
4
  import { AccessibleItem, AccessibleGroup } from '@ngbase/adk/a11y';
5
- import { uniqueId, provideValueAccessor } from '@ngbase/adk/utils';
5
+ import { uniqueId } from '@ngbase/adk/utils';
6
6
 
7
7
  class NgbToggleItem {
8
8
  constructor() {
9
9
  this.accessibleItem = inject(AccessibleItem);
10
10
  this.toggleGroup = inject(NgbToggleGroup);
11
- this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
11
+ this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
12
12
  this.value = input.required(...(ngDevMode ? [{ debugName: "value" }] : []));
13
13
  this.active = computed(() => {
14
14
  const values = this.toggleGroup.value();
@@ -18,16 +18,16 @@ class NgbToggleItem {
18
18
  return values === this.value();
19
19
  }, ...(ngDevMode ? [{ debugName: "active" }] : []));
20
20
  this.accessibleItem._ayId.set(this.toggleGroup.ayId);
21
- this.accessibleItem._disabled = linkedSignal(this.disabled);
22
- this.accessibleItem._selected = linkedSignal(this.active);
21
+ this.accessibleItem._disabled = linkedSignal(this.disabled, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
22
+ this.accessibleItem._selected = linkedSignal(this.active, ...(ngDevMode ? [{ debugName: "_selected" }] : []));
23
23
  }
24
24
  updateValue() {
25
25
  this.toggleGroup.updateValue([this.value()]);
26
26
  }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbToggleItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
28
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbToggleItem, isStandalone: true, selector: "button[ngbToggleItem]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "updateValue()" } }, hostDirectives: [{ directive: i1.AccessibleItem, inputs: ["disabled", "disabled"] }], ngImport: i0 }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbToggleItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
28
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: NgbToggleItem, isStandalone: true, selector: "button[ngbToggleItem]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "updateValue()" } }, hostDirectives: [{ directive: i1.AccessibleItem, inputs: ["disabled", "disabled"] }], ngImport: i0 }); }
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbToggleItem, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbToggleItem, decorators: [{
31
31
  type: Directive,
32
32
  args: [{
33
33
  selector: 'button[ngbToggleItem]',
@@ -36,26 +36,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImpor
36
36
  '(click)': 'updateValue()',
37
37
  },
38
38
  }]
39
- }], ctorParameters: () => [] });
39
+ }], ctorParameters: () => [], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }] } });
40
40
 
41
41
  class NgbToggleGroup {
42
42
  constructor() {
43
43
  this.accessibleGroup = inject(AccessibleGroup);
44
- this.multiple = input(true, ...(ngDevMode ? [{ debugName: "multiple", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
44
+ this.multiple = input(true, { ...(ngDevMode ? { debugName: "multiple" } : {}), transform: booleanAttribute });
45
45
  this.toggleItems = contentChildren(NgbToggleItem, ...(ngDevMode ? [{ debugName: "toggleItems" }] : []));
46
46
  this.ayId = uniqueId();
47
- // value can be array or single value
48
47
  this.value = model(...(ngDevMode ? [undefined, { debugName: "value" }] : []));
49
- this.onChange = (_) => { };
50
- this.onTouched = () => { };
51
- this.disabled = model(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
48
+ this.touched = model(false, ...(ngDevMode ? [{ debugName: "touched" }] : []));
49
+ this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
52
50
  this.ariaLabel = input('', ...(ngDevMode ? [{ debugName: "ariaLabel" }] : []));
53
51
  this.ariaLabelledby = input('', ...(ngDevMode ? [{ debugName: "ariaLabelledby" }] : []));
54
52
  this.accessibleGroup._ayId.set(this.ayId);
55
- this.accessibleGroup._ariaLabel = linkedSignal(this.ariaLabel);
56
- this.accessibleGroup._ariaLabelledby = linkedSignal(this.ariaLabelledby);
53
+ this.accessibleGroup._ariaLabel = linkedSignal(this.ariaLabel, ...(ngDevMode ? [{ debugName: "_ariaLabel" }] : []));
54
+ this.accessibleGroup._ariaLabelledby = linkedSignal(this.ariaLabelledby, ...(ngDevMode ? [{ debugName: "_ariaLabelledby" }] : []));
57
55
  }
58
56
  updateValue(value) {
57
+ if (this.disabled())
58
+ return;
59
59
  let values = this.value();
60
60
  if (this.multiple()) {
61
61
  values = values || [];
@@ -72,35 +72,21 @@ class NgbToggleGroup {
72
72
  values = value;
73
73
  }
74
74
  this.value.set(values);
75
- this.onChange(value);
76
- this.onTouched();
75
+ this.touched.set(true);
77
76
  }
78
- writeValue(value) {
79
- this.value.set(value);
80
- }
81
- registerOnChange(fn) {
82
- this.onChange = fn;
83
- }
84
- registerOnTouched(fn) {
85
- this.onTouched = fn;
86
- }
87
- setDisabledState(isDisabled) {
88
- this.disabled.set(isDisabled);
89
- }
90
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbToggleGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
91
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.2.0", type: NgbToggleGroup, isStandalone: true, selector: "[ngbToggleGroup]", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "ariaLabelledby", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", disabled: "disabledChange" }, host: { attributes: { "role": "group" } }, providers: [provideValueAccessor(NgbToggleGroup)], queries: [{ propertyName: "toggleItems", predicate: NgbToggleItem, isSignal: true }], hostDirectives: [{ directive: i1.AccessibleGroup }], ngImport: i0 }); }
77
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbToggleGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
78
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.0", type: NgbToggleGroup, isStandalone: true, selector: "[ngbToggleGroup]", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "ariaLabelledby", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", touched: "touchedChange" }, host: { attributes: { "role": "group" } }, queries: [{ propertyName: "toggleItems", predicate: NgbToggleItem, isSignal: true }], hostDirectives: [{ directive: i1.AccessibleGroup }], ngImport: i0 }); }
92
79
  }
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbToggleGroup, decorators: [{
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbToggleGroup, decorators: [{
94
81
  type: Directive,
95
82
  args: [{
96
83
  selector: '[ngbToggleGroup]',
97
84
  hostDirectives: [AccessibleGroup],
98
- providers: [provideValueAccessor(NgbToggleGroup)],
99
85
  host: {
100
86
  role: 'group',
101
87
  },
102
88
  }]
103
- }], ctorParameters: () => [] });
89
+ }], ctorParameters: () => [], propDecorators: { multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], toggleItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => NgbToggleItem), { isSignal: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }, { type: i0.Output, args: ["touchedChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledby", required: false }] }] } });
104
90
 
105
91
  /*
106
92
  * Public API Surface of toggle-group
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-toggle-group.mjs","sources":["../../../projects/adk/toggle-group/toggle-item.ts","../../../projects/adk/toggle-group/toggle-group.ts","../../../projects/adk/toggle-group/public-api.ts","../../../projects/adk/toggle-group/ngbase-adk-toggle-group.ts"],"sourcesContent":["import { booleanAttribute, computed, Directive, inject, input, linkedSignal } from '@angular/core';\nimport { AccessibleItem } from '@ngbase/adk/a11y';\nimport { NgbToggleGroup } from './toggle-group';\n\n@Directive({\n selector: 'button[ngbToggleItem]',\n hostDirectives: [{ directive: AccessibleItem, inputs: ['disabled'] }],\n host: {\n '(click)': 'updateValue()',\n },\n})\nexport class NgbToggleItem<T> {\n private accessibleItem = inject(AccessibleItem);\n readonly toggleGroup = inject<NgbToggleGroup<T>>(NgbToggleGroup);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly value = input.required<any>();\n\n readonly active = computed(() => {\n const values = this.toggleGroup.value();\n if (Array.isArray(values)) {\n return values.includes(this.value());\n }\n return values === this.value();\n });\n\n constructor() {\n this.accessibleItem._ayId.set(this.toggleGroup.ayId);\n this.accessibleItem._disabled = linkedSignal(this.disabled);\n this.accessibleItem._selected = linkedSignal(this.active);\n }\n\n updateValue() {\n this.toggleGroup.updateValue([this.value()]);\n }\n}\n","import {\n booleanAttribute,\n contentChildren,\n Directive,\n inject,\n input,\n linkedSignal,\n model,\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { AccessibleGroup } from '@ngbase/adk/a11y';\nimport { provideValueAccessor, uniqueId } from '@ngbase/adk/utils';\nimport { NgbToggleItem } from './toggle-item';\n\n@Directive({\n selector: '[ngbToggleGroup]',\n hostDirectives: [AccessibleGroup],\n providers: [provideValueAccessor(NgbToggleGroup)],\n host: {\n role: 'group',\n },\n})\nexport class NgbToggleGroup<T> implements ControlValueAccessor {\n readonly accessibleGroup = inject(AccessibleGroup);\n readonly multiple = input(true, { transform: booleanAttribute });\n readonly toggleItems = contentChildren(NgbToggleItem);\n readonly ayId = uniqueId();\n // value can be array or single value\n readonly value = model<T | T[]>();\n onChange = (_: any) => {};\n onTouched = () => {};\n\n readonly disabled = model(false);\n readonly ariaLabel = input('');\n readonly ariaLabelledby = input('');\n\n constructor() {\n this.accessibleGroup._ayId.set(this.ayId);\n this.accessibleGroup._ariaLabel = linkedSignal(this.ariaLabel);\n this.accessibleGroup._ariaLabelledby = linkedSignal(this.ariaLabelledby);\n }\n\n updateValue(value: T[]) {\n let values = this.value();\n if (this.multiple()) {\n values = (values as T[]) || [];\n for (const val of value) {\n if (values.includes(val)) {\n values = values.filter(v => v !== val);\n } else {\n values = [...values, val];\n }\n }\n } else {\n values = value;\n }\n this.value.set(values);\n this.onChange(value);\n this.onTouched();\n }\n\n writeValue(value: any): void {\n this.value.set(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","/*\n * Public API Surface of toggle-group\n */\n\nexport * from './toggle-group';\nexport * from './toggle-item';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngbase-adk-toggle-group.mjs","sources":["../../../projects/adk/toggle-group/toggle-item.ts","../../../projects/adk/toggle-group/toggle-group.ts","../../../projects/adk/toggle-group/public-api.ts","../../../projects/adk/toggle-group/ngbase-adk-toggle-group.ts"],"sourcesContent":["import { booleanAttribute, computed, Directive, inject, input, linkedSignal } from '@angular/core';\nimport { AccessibleItem } from '@ngbase/adk/a11y';\nimport { NgbToggleGroup } from './toggle-group';\n\n@Directive({\n selector: 'button[ngbToggleItem]',\n hostDirectives: [{ directive: AccessibleItem, inputs: ['disabled'] }],\n host: {\n '(click)': 'updateValue()',\n },\n})\nexport class NgbToggleItem<T> {\n private accessibleItem = inject(AccessibleItem);\n readonly toggleGroup = inject<NgbToggleGroup<T>>(NgbToggleGroup);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly value = input.required<any>();\n\n readonly active = computed(() => {\n const values = this.toggleGroup.value();\n if (Array.isArray(values)) {\n return values.includes(this.value());\n }\n return values === this.value();\n });\n\n constructor() {\n this.accessibleItem._ayId.set(this.toggleGroup.ayId);\n this.accessibleItem._disabled = linkedSignal(this.disabled);\n this.accessibleItem._selected = linkedSignal(this.active);\n }\n\n updateValue() {\n this.toggleGroup.updateValue([this.value()]);\n }\n}\n","import {\n booleanAttribute,\n contentChildren,\n Directive,\n inject,\n input,\n linkedSignal,\n model,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { AccessibleGroup } from '@ngbase/adk/a11y';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbToggleItem } from './toggle-item';\n\n@Directive({\n selector: '[ngbToggleGroup]',\n hostDirectives: [AccessibleGroup],\n host: {\n role: 'group',\n },\n})\nexport class NgbToggleGroup<T> implements FormValueControl<T | T[] | undefined> {\n readonly accessibleGroup = inject(AccessibleGroup);\n readonly multiple = input(true, { transform: booleanAttribute });\n readonly toggleItems = contentChildren(NgbToggleItem);\n readonly ayId = uniqueId();\n\n readonly value = model<T | T[]>();\n readonly touched = model(false);\n readonly disabled = input(false);\n\n readonly ariaLabel = input('');\n readonly ariaLabelledby = input('');\n\n constructor() {\n this.accessibleGroup._ayId.set(this.ayId);\n this.accessibleGroup._ariaLabel = linkedSignal(this.ariaLabel);\n this.accessibleGroup._ariaLabelledby = linkedSignal(this.ariaLabelledby);\n }\n\n updateValue(value: T[]) {\n if (this.disabled()) return;\n let values = this.value();\n if (this.multiple()) {\n values = (values as T[]) || [];\n for (const val of value) {\n if (values.includes(val)) {\n values = values.filter(v => v !== val);\n } else {\n values = [...values, val];\n }\n }\n } else {\n values = value;\n }\n this.value.set(values);\n this.touched.set(true);\n }\n}\n","/*\n * Public API Surface of toggle-group\n */\n\nexport * from './toggle-group';\nexport * from './toggle-item';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,40 +1,35 @@
1
1
  import * as i0 from '@angular/core';
2
- import { model, Directive } from '@angular/core';
3
- import { provideValueAccessor } from '@ngbase/adk/utils';
2
+ import { model, input, Directive } from '@angular/core';
4
3
 
5
4
  class NgbToggle {
6
5
  constructor() {
7
6
  this.value = model(false, ...(ngDevMode ? [{ debugName: "value" }] : []));
8
- this.onChange = (_) => { };
9
- this.onTouched = () => { };
10
- }
11
- writeValue(value) {
12
- this.value.set(value);
13
- }
14
- registerOnChange(fn) {
15
- this.onChange = fn;
16
- }
17
- registerOnTouched(fn) {
18
- this.onTouched = fn;
7
+ this.touched = model(false, ...(ngDevMode ? [{ debugName: "touched" }] : []));
8
+ this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
19
9
  }
20
10
  toggle() {
11
+ if (this.disabled())
12
+ return;
21
13
  this.value.update(v => !v);
22
- this.onChange(this.value());
23
14
  }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbToggle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
25
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbToggle, isStandalone: true, selector: "button[ngbToggle]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "click": "toggle()" }, properties: { "attr.aria-pressed": "value()" } }, providers: [provideValueAccessor(NgbToggle)], ngImport: i0 }); }
15
+ onTouched() {
16
+ this.touched.set(true);
17
+ }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbToggle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
19
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: NgbToggle, isStandalone: true, selector: "button[ngbToggle]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", touched: "touchedChange" }, host: { listeners: { "click": "toggle()", "blur": "onTouched()" }, properties: { "attr.aria-pressed": "value()", "disabled": "disabled() || undefined" } }, ngImport: i0 }); }
26
20
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbToggle, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbToggle, decorators: [{
28
22
  type: Directive,
29
23
  args: [{
30
24
  selector: 'button[ngbToggle]',
31
- providers: [provideValueAccessor(NgbToggle)],
32
25
  host: {
33
26
  '(click)': 'toggle()',
27
+ '(blur)': 'onTouched()',
34
28
  '[attr.aria-pressed]': 'value()',
29
+ '[disabled]': 'disabled() || undefined',
35
30
  },
36
31
  }]
37
- }] });
32
+ }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }, { type: i0.Output, args: ["touchedChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
38
33
 
39
34
  /*
40
35
  * Public API Surface of toggle
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-toggle.mjs","sources":["../../../projects/adk/toggle/toggle.ts","../../../projects/adk/toggle/public-api.ts","../../../projects/adk/toggle/ngbase-adk-toggle.ts"],"sourcesContent":["import { Directive, model } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor } from '@ngbase/adk/utils';\n\n@Directive({\n selector: 'button[ngbToggle]',\n providers: [provideValueAccessor(NgbToggle)],\n host: {\n '(click)': 'toggle()',\n '[attr.aria-pressed]': 'value()',\n },\n})\nexport class NgbToggle implements ControlValueAccessor {\n value = model(false);\n onChange = (_: boolean) => {};\n onTouched = () => {};\n\n writeValue(value: boolean): void {\n this.value.set(value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: VoidFunction): void {\n this.onTouched = fn;\n }\n\n toggle() {\n this.value.update(v => !v);\n this.onChange(this.value());\n }\n}\n","/*\n * Public API Surface of toggle\n */\n\nexport * from './toggle';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAYa,SAAS,CAAA;AARtB,IAAA,WAAA,GAAA;AASE,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,KAAK,iDAAC;AACpB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAU,KAAI,GAAG;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAG;AAkBrB;AAhBC,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGvB,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;IAGrB,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;8GAnBlB,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,qUANT,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAMjC,SAAS,EAAA,UAAA,EAAA,CAAA;kBARrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,SAAS,EAAE,CAAC,oBAAoB,CAAA,SAAA,CAAW,CAAC;AAC5C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,qBAAqB,EAAE,SAAS;AACjC,qBAAA;AACF,iBAAA;;;ACXD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"ngbase-adk-toggle.mjs","sources":["../../../projects/adk/toggle/toggle.ts","../../../projects/adk/toggle/public-api.ts","../../../projects/adk/toggle/ngbase-adk-toggle.ts"],"sourcesContent":["import { Directive, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\n\n@Directive({\n selector: 'button[ngbToggle]',\n host: {\n '(click)': 'toggle()',\n '(blur)': 'onTouched()',\n '[attr.aria-pressed]': 'value()',\n '[disabled]': 'disabled() || undefined',\n },\n})\nexport class NgbToggle implements FormValueControl<boolean> {\n readonly value = model(false);\n readonly touched = model(false);\n readonly disabled = input(false);\n\n toggle() {\n if (this.disabled()) return;\n this.value.update(v => !v);\n }\n\n onTouched() {\n this.touched.set(true);\n }\n}\n","/*\n * Public API Surface of toggle\n */\n\nexport * from './toggle';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAYa,SAAS,CAAA;AATtB,IAAA,WAAA,GAAA;AAUW,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,KAAK,iDAAC;AACpB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AAUjC,IAAA;IARC,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5B;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;8GAZW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBATrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,QAAQ,EAAE,aAAa;AACvB,wBAAA,qBAAqB,EAAE,SAAS;AAChC,wBAAA,YAAY,EAAE,yBAAyB;AACxC,qBAAA;AACF,iBAAA;;;ACXD;;AAEG;;ACFH;;AAEG;;;;"}
@@ -1,15 +1,8 @@
1
- import { trigger, state, style, transition, animate } from '@angular/animations';
2
1
  import * as i0 from '@angular/core';
3
2
  import { inject, ElementRef, signal, afterRenderEffect, Directive, Injectable, InjectionToken, input, computed, untracked } from '@angular/core';
4
3
  import { POPOVER_ARROW_TRACKER, tooltipPosition, providePopoverArrowTracker } from '@ngbase/adk/popover';
5
4
  import { basePortal } from '@ngbase/adk/portal';
6
5
 
7
- const tooltipAnimation = trigger('tooltipAnimation', [
8
- state('1', style({ transform: 'none', opacity: 1 })),
9
- state('void', style({ transform: 'translateY(-5px) scale(0.95)', opacity: 0 })),
10
- state('0', style({ transform: 'translateY(-5px) scale(0.95)', opacity: 0 })),
11
- transition('* => *', animate('150ms ease-out')),
12
- ]);
13
6
  class NgbTooltipTemplate {
14
7
  constructor() {
15
8
  this.el = inject(ElementRef);
@@ -83,15 +76,15 @@ class NgbTooltipTemplate {
83
76
  ngOnDestroy() {
84
77
  this.observer?.disconnect();
85
78
  }
86
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbTooltipTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
87
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0", type: NgbTooltipTemplate, isStandalone: true, selector: "[ngbTooltip]", host: { properties: { "@tooltipAnimation": "" } }, ngImport: i0 }); }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbTooltipTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
80
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: NgbTooltipTemplate, isStandalone: true, selector: "[ngbTooltip]", host: { classAttribute: "tooltip-content" }, ngImport: i0 }); }
88
81
  }
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbTooltipTemplate, decorators: [{
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbTooltipTemplate, decorators: [{
90
83
  type: Directive,
91
84
  args: [{
92
85
  selector: '[ngbTooltip]',
93
86
  host: {
94
- '[@tooltipAnimation]': '',
87
+ class: 'tooltip-content',
95
88
  },
96
89
  }]
97
90
  }], ctorParameters: () => [] });
@@ -128,10 +121,10 @@ class TooltipService {
128
121
  this.tooltipOpen = undefined;
129
122
  this.delay = 100;
130
123
  }
131
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: TooltipService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
132
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: TooltipService, providedIn: 'root' }); }
124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TooltipService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
125
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TooltipService, providedIn: 'root' }); }
133
126
  }
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: TooltipService, decorators: [{
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TooltipService, decorators: [{
135
128
  type: Injectable,
136
129
  args: [{ providedIn: 'root' }]
137
130
  }] });
@@ -224,16 +217,16 @@ class NgbTooltip {
224
217
  ngOnDestroy() {
225
218
  this.remove();
226
219
  }
227
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbTooltip, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
228
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbTooltip, isStandalone: true, selector: "[ngbTooltip]", inputs: { ngbTooltip: { classPropertyName: "ngbTooltip", publicName: "ngbTooltip", isSignal: true, isRequired: false, transformFunction: null }, ngbTooltipPosition: { classPropertyName: "ngbTooltipPosition", publicName: "ngbTooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, providers: [providePopoverArrowTracker()], ngImport: i0 }); }
220
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbTooltip, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
221
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: NgbTooltip, isStandalone: true, selector: "[ngbTooltip]", inputs: { ngbTooltip: { classPropertyName: "ngbTooltip", publicName: "ngbTooltip", isSignal: true, isRequired: false, transformFunction: null }, ngbTooltipPosition: { classPropertyName: "ngbTooltipPosition", publicName: "ngbTooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, providers: [providePopoverArrowTracker()], ngImport: i0 }); }
229
222
  }
230
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbTooltip, decorators: [{
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbTooltip, decorators: [{
231
224
  type: Directive,
232
225
  args: [{
233
226
  selector: '[ngbTooltip]',
234
227
  providers: [providePopoverArrowTracker()],
235
228
  }]
236
- }], ctorParameters: () => [] });
229
+ }], ctorParameters: () => [], propDecorators: { ngbTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngbTooltip", required: false }] }], ngbTooltipPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngbTooltipPosition", required: false }] }], delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "delay", required: false }] }] } });
237
230
 
238
231
  /*
239
232
  * Public API Surface of tooltip
@@ -243,5 +236,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImpor
243
236
  * Generated bundle index. Do not edit.
244
237
  */
245
238
 
246
- export { NgbTooltip, NgbTooltipTemplate, provideNgbTooltipOptions, tooltipAnimation };
239
+ export { NgbTooltip, NgbTooltipTemplate, provideNgbTooltipOptions };
247
240
  //# sourceMappingURL=ngbase-adk-tooltip.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-tooltip.mjs","sources":["../../../projects/adk/tooltip/tooltip.ts","../../../projects/adk/tooltip/tooltip.service.ts","../../../projects/adk/tooltip/tooltip.directive.ts","../../../projects/adk/tooltip/public-api.ts","../../../projects/adk/tooltip/ngbase-adk-tooltip.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Directive, ElementRef, OnDestroy, afterRenderEffect, inject, signal } from '@angular/core';\nimport { POPOVER_ARROW_TRACKER, PopoverPosition, tooltipPosition } from '@ngbase/adk/popover';\n\nexport const tooltipAnimation = trigger('tooltipAnimation', [\n state('1', style({ transform: 'none', opacity: 1 })),\n state('void', style({ transform: 'translateY(-5px) scale(0.95)', opacity: 0 })),\n state('0', style({ transform: 'translateY(-5px) scale(0.95)', opacity: 0 })),\n transition('* => *', animate('150ms ease-out')),\n]);\n\n@Directive({\n selector: '[ngbTooltip]',\n host: {\n '[@tooltipAnimation]': '',\n },\n})\nexport class NgbTooltipTemplate implements OnDestroy {\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly arrowTracker = inject(POPOVER_ARROW_TRACKER, { optional: true });\n\n readonly content = signal('Tooltip');\n private target = signal<HTMLElement | undefined>(undefined);\n private position: PopoverPosition = 'top';\n private hide!: VoidFunction;\n private observer?: MutationObserver;\n\n constructor() {\n afterRenderEffect(() => {\n const _ = this.content();\n const target = this.target();\n // we need for the content to be set before setting the position\n if (target) {\n this.setPosition(target);\n }\n });\n }\n\n update(content: string, target: HTMLElement, position: PopoverPosition, hide: VoidFunction) {\n this.setTarget(target);\n this.hide = hide;\n this.position = position;\n this.el.nativeElement.style.right = '';\n this.el.nativeElement.style.transition = '.15s ease-out all';\n this.content.set(content);\n }\n\n private setTarget(target: HTMLElement) {\n this.ngOnDestroy();\n this.target.set(target);\n this.listenTarget();\n }\n\n private listenTarget() {\n this.observer = new MutationObserver(() => {\n const target = this.target();\n if (target?.isConnected) {\n this.setPosition(target);\n } else {\n this.onRemoved();\n }\n });\n\n this.observer.observe(document.body, { childList: true, subtree: true });\n }\n\n private onRemoved = () => {\n this.hide();\n };\n\n setPosition(target: HTMLElement) {\n const el = this.el.nativeElement;\n\n const { top, bottom, left, right, position } = tooltipPosition({\n target,\n el,\n position: this.position,\n offset: 8,\n });\n if (bottom != undefined) {\n el.style.bottom = `${bottom}px`;\n el.style.top = '';\n } else {\n el.style.top = `${top}px`;\n el.style.bottom = '';\n }\n if (right != undefined) {\n el.style.right = `${right}px`;\n el.style.left = '';\n } else {\n el.style.left = `${left}px`;\n el.style.right = '';\n }\n this.arrowTracker?.values.set({ top, bottom, left, right, target, position });\n }\n\n ngOnDestroy(): void {\n this.observer?.disconnect();\n }\n}\n","import { ComponentRef, Injectable, Type } from '@angular/core';\nimport { basePortal, DialogInput } from '@ngbase/adk/portal';\nimport { PopoverPosition } from '@ngbase/adk/popover';\nimport { NgbTooltipTemplate } from './tooltip';\n\n@Injectable({ providedIn: 'root' })\nexport class TooltipService {\n tooltip = tooltipPortal();\n tooltipOpen: TooltipOpen | undefined;\n private position?: PopoverPosition;\n private timeoutId: any;\n delay = 100;\n\n insert(\n el: HTMLElement,\n content: string,\n position: PopoverPosition,\n hide: VoidFunction,\n component?: Type<NgbTooltipTemplate>,\n ) {\n clearTimeout(this.timeoutId);\n // destroy immediately if position is different\n if (this.position && this.position !== position) this.destroy(true);\n\n // update if tooltip is open\n if (this.tooltipOpen) {\n this.tooltipOpen.parent.instance.update(content, el, position, hide);\n } else {\n this.tooltipOpen = this.tooltip.open(content, el, position, hide, component);\n }\n this.position = position;\n }\n\n destroy = (force?: boolean) => {\n if (force) {\n this.close();\n } else {\n this.timeoutId = setTimeout(() => this.close(), this.delay ?? 100);\n }\n };\n\n private close() {\n this.tooltipOpen?.destroy();\n this.tooltipOpen = undefined;\n this.delay = 100;\n }\n}\n\ninterface TooltipOpen {\n destroy: VoidFunction;\n parent: ComponentRef<NgbTooltipTemplate>;\n replace: ((component: DialogInput<NgbTooltipTemplate>) => void) | undefined;\n}\n\nexport function tooltipPortal() {\n const NAME = 'tooltip';\n const base = basePortal(NAME, NgbTooltipTemplate);\n\n function open(\n content: string,\n target: HTMLElement,\n position: PopoverPosition,\n hide: VoidFunction,\n parentComponent?: Type<NgbTooltipTemplate>,\n ) {\n const { diaRef, parent, replace } = base.open<NgbTooltipTemplate>(\n undefined,\n comp => {\n comp.instance.update(content, target, position || 'top', hide);\n },\n undefined,\n false,\n parentComponent,\n );\n\n function destroy() {\n diaRef.close();\n }\n\n return { destroy, parent, replace } as TooltipOpen;\n }\n\n return { open };\n}\n","import {\n Directive,\n ElementRef,\n InjectionToken,\n OnDestroy,\n Type,\n afterRenderEffect,\n computed,\n inject,\n input,\n untracked,\n} from '@angular/core';\nimport { PopoverPosition, providePopoverArrowTracker } from '@ngbase/adk/popover';\nimport { TooltipService } from './tooltip.service';\nimport { NgbTooltipTemplate } from './tooltip';\n\nexport function provideNgbTooltipOptions(options: TooltipOptions) {\n return { provide: TOOLTIP_OPTIONS, useValue: options };\n}\n\nexport const TOOLTIP_OPTIONS = new InjectionToken<TooltipOptions>('TOOLTIP_OPTIONS');\n\nexport interface TooltipOptions {\n showDelay?: number;\n hideDelay?: number;\n position?: PopoverPosition;\n component?: Type<NgbTooltipTemplate>;\n}\n\n@Directive({\n selector: '[ngbTooltip]',\n providers: [providePopoverArrowTracker()],\n})\nexport class NgbTooltip implements OnDestroy {\n // Dependencies\n private defaultOptions = inject(TOOLTIP_OPTIONS, { optional: true });\n private el = inject(ElementRef);\n private tooltipService = inject(TooltipService);\n\n // Inputs\n readonly ngbTooltip = input<string>();\n readonly ngbTooltipPosition = input<PopoverPosition>();\n readonly delay = input(0);\n\n // State\n readonly options = computed(() => {\n const o = this.defaultOptions || {};\n const options: TooltipOptions = {\n showDelay: this.delay() || o.showDelay || 0,\n hideDelay: o.hideDelay || 0,\n position: this.ngbTooltipPosition() || o.position || 'top',\n component: this.defaultOptions?.component || o.component,\n };\n return options;\n });\n timer: any;\n\n constructor() {\n let active = false;\n afterRenderEffect(() => {\n const content = this.ngbTooltip();\n untracked(() => {\n if (content) {\n if (!active) {\n this.el.nativeElement.addEventListener('mouseenter', this.show);\n this.el.nativeElement.addEventListener('mouseleave', this.hide);\n active = true;\n }\n } else if (active) {\n this.remove();\n active = false;\n }\n });\n });\n }\n\n show = () => {\n // listen when cursor is over and element is removed\n const options = this.options();\n if (options.showDelay === 0 || this.tooltipService.tooltipOpen) {\n this.tooltipService.insert(\n this.el.nativeElement,\n this.ngbTooltip()!,\n options.position!,\n this.quickHide,\n options.component,\n );\n return;\n }\n this.timer = setTimeout(() => {\n this.tooltipService.insert(\n this.el.nativeElement,\n this.ngbTooltip()!,\n options.position!,\n this.hide,\n options.component,\n );\n }, options.showDelay);\n };\n\n removed = () => {\n this.tooltipService.delay = 0;\n this.hide();\n };\n\n hide = () => {\n clearTimeout(this.timer);\n this.tooltipService.destroy();\n };\n\n quickHide = () => {\n this.tooltipService.delay = 0;\n this.hide();\n };\n\n private remove() {\n this.hide();\n this.el.nativeElement.removeEventListener('mouseenter', this.show);\n this.el.nativeElement.removeEventListener('mouseleave', this.hide);\n }\n\n ngOnDestroy() {\n this.remove();\n }\n}\n","/*\n * Public API Surface of tooltip\n */\n\nexport { NgbTooltipTemplate, tooltipAnimation } from './tooltip';\nexport { NgbTooltip, provideNgbTooltipOptions, type TooltipOptions } from './tooltip.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngbase-adk-tooltip.mjs","sources":["../../../projects/adk/tooltip/tooltip.ts","../../../projects/adk/tooltip/tooltip.service.ts","../../../projects/adk/tooltip/tooltip.directive.ts","../../../projects/adk/tooltip/public-api.ts","../../../projects/adk/tooltip/ngbase-adk-tooltip.ts"],"sourcesContent":["import { Directive, ElementRef, OnDestroy, afterRenderEffect, inject, signal } from '@angular/core';\nimport { POPOVER_ARROW_TRACKER, PopoverPosition, tooltipPosition } from '@ngbase/adk/popover';\n\n@Directive({\n selector: '[ngbTooltip]',\n host: {\n class: 'tooltip-content',\n },\n})\nexport class NgbTooltipTemplate implements OnDestroy {\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly arrowTracker = inject(POPOVER_ARROW_TRACKER, { optional: true });\n\n readonly content = signal('Tooltip');\n protected target = signal<HTMLElement | undefined>(undefined);\n protected position: PopoverPosition = 'top';\n protected hide!: VoidFunction;\n protected observer?: MutationObserver;\n\n constructor() {\n afterRenderEffect(() => {\n const _ = this.content();\n const target = this.target();\n // we need for the content to be set before setting the position\n if (target) {\n this.setPosition(target);\n }\n });\n }\n\n update(content: string, target: HTMLElement, position: PopoverPosition, hide: VoidFunction) {\n this.setTarget(target);\n this.hide = hide;\n this.position = position;\n this.el.nativeElement.style.right = '';\n this.el.nativeElement.style.transition = '.15s ease-out all';\n this.content.set(content);\n }\n\n protected setTarget(target: HTMLElement) {\n this.ngOnDestroy();\n this.target.set(target);\n this.listenTarget();\n }\n\n protected listenTarget() {\n this.observer = new MutationObserver(() => {\n const target = this.target();\n if (target?.isConnected) {\n this.setPosition(target);\n } else {\n this.onRemoved();\n }\n });\n\n this.observer.observe(document.body, { childList: true, subtree: true });\n }\n\n protected onRemoved = () => {\n this.hide();\n };\n\n setPosition(target: HTMLElement) {\n const el = this.el.nativeElement;\n\n const { top, bottom, left, right, position } = tooltipPosition({\n target,\n el,\n position: this.position,\n offset: 8,\n });\n if (bottom != undefined) {\n el.style.bottom = `${bottom}px`;\n el.style.top = '';\n } else {\n el.style.top = `${top}px`;\n el.style.bottom = '';\n }\n if (right != undefined) {\n el.style.right = `${right}px`;\n el.style.left = '';\n } else {\n el.style.left = `${left}px`;\n el.style.right = '';\n }\n this.arrowTracker?.values.set({ top, bottom, left, right, target, position });\n }\n\n ngOnDestroy(): void {\n this.observer?.disconnect();\n }\n}\n","import { ComponentRef, Injectable, Type } from '@angular/core';\nimport { basePortal, DialogInput } from '@ngbase/adk/portal';\nimport { PopoverPosition } from '@ngbase/adk/popover';\nimport { NgbTooltipTemplate } from './tooltip';\n\n@Injectable({ providedIn: 'root' })\nexport class TooltipService {\n tooltip = tooltipPortal();\n tooltipOpen: TooltipOpen | undefined;\n private position?: PopoverPosition;\n private timeoutId: any;\n delay = 100;\n\n insert(\n el: HTMLElement,\n content: string,\n position: PopoverPosition,\n hide: VoidFunction,\n component?: Type<NgbTooltipTemplate>,\n ) {\n clearTimeout(this.timeoutId);\n // destroy immediately if position is different\n if (this.position && this.position !== position) this.destroy(true);\n\n // update if tooltip is open\n if (this.tooltipOpen) {\n this.tooltipOpen.parent.instance.update(content, el, position, hide);\n } else {\n this.tooltipOpen = this.tooltip.open(content, el, position, hide, component);\n }\n this.position = position;\n }\n\n destroy = (force?: boolean) => {\n if (force) {\n this.close();\n } else {\n this.timeoutId = setTimeout(() => this.close(), this.delay ?? 100);\n }\n };\n\n private close() {\n this.tooltipOpen?.destroy();\n this.tooltipOpen = undefined;\n this.delay = 100;\n }\n}\n\ninterface TooltipOpen {\n destroy: VoidFunction;\n parent: ComponentRef<NgbTooltipTemplate>;\n replace: ((component: DialogInput<NgbTooltipTemplate>) => void) | undefined;\n}\n\nexport function tooltipPortal() {\n const NAME = 'tooltip';\n const base = basePortal(NAME, NgbTooltipTemplate);\n\n function open(\n content: string,\n target: HTMLElement,\n position: PopoverPosition,\n hide: VoidFunction,\n parentComponent?: Type<NgbTooltipTemplate>,\n ) {\n const { diaRef, parent, replace } = base.open<NgbTooltipTemplate>(\n undefined,\n comp => {\n comp.instance.update(content, target, position || 'top', hide);\n },\n undefined,\n false,\n parentComponent,\n );\n\n function destroy() {\n diaRef.close();\n }\n\n return { destroy, parent, replace } as TooltipOpen;\n }\n\n return { open };\n}\n","import {\n Directive,\n ElementRef,\n InjectionToken,\n OnDestroy,\n Type,\n afterRenderEffect,\n computed,\n inject,\n input,\n untracked,\n} from '@angular/core';\nimport { PopoverPosition, providePopoverArrowTracker } from '@ngbase/adk/popover';\nimport { TooltipService } from './tooltip.service';\nimport { NgbTooltipTemplate } from './tooltip';\n\nexport function provideNgbTooltipOptions(options: TooltipOptions) {\n return { provide: TOOLTIP_OPTIONS, useValue: options };\n}\n\nexport const TOOLTIP_OPTIONS = new InjectionToken<TooltipOptions>('TOOLTIP_OPTIONS');\n\nexport interface TooltipOptions {\n showDelay?: number;\n hideDelay?: number;\n position?: PopoverPosition;\n component?: Type<NgbTooltipTemplate>;\n}\n\n@Directive({\n selector: '[ngbTooltip]',\n providers: [providePopoverArrowTracker()],\n})\nexport class NgbTooltip implements OnDestroy {\n // Dependencies\n private defaultOptions = inject(TOOLTIP_OPTIONS, { optional: true });\n private el = inject(ElementRef);\n private tooltipService = inject(TooltipService);\n\n // Inputs\n readonly ngbTooltip = input<string>();\n readonly ngbTooltipPosition = input<PopoverPosition>();\n readonly delay = input(0);\n\n // State\n readonly options = computed(() => {\n const o = this.defaultOptions || {};\n const options: TooltipOptions = {\n showDelay: this.delay() || o.showDelay || 0,\n hideDelay: o.hideDelay || 0,\n position: this.ngbTooltipPosition() || o.position || 'top',\n component: this.defaultOptions?.component || o.component,\n };\n return options;\n });\n timer: any;\n\n constructor() {\n let active = false;\n afterRenderEffect(() => {\n const content = this.ngbTooltip();\n untracked(() => {\n if (content) {\n if (!active) {\n this.el.nativeElement.addEventListener('mouseenter', this.show);\n this.el.nativeElement.addEventListener('mouseleave', this.hide);\n active = true;\n }\n } else if (active) {\n this.remove();\n active = false;\n }\n });\n });\n }\n\n show = () => {\n // listen when cursor is over and element is removed\n const options = this.options();\n if (options.showDelay === 0 || this.tooltipService.tooltipOpen) {\n this.tooltipService.insert(\n this.el.nativeElement,\n this.ngbTooltip()!,\n options.position!,\n this.quickHide,\n options.component,\n );\n return;\n }\n this.timer = setTimeout(() => {\n this.tooltipService.insert(\n this.el.nativeElement,\n this.ngbTooltip()!,\n options.position!,\n this.hide,\n options.component,\n );\n }, options.showDelay);\n };\n\n removed = () => {\n this.tooltipService.delay = 0;\n this.hide();\n };\n\n hide = () => {\n clearTimeout(this.timer);\n this.tooltipService.destroy();\n };\n\n quickHide = () => {\n this.tooltipService.delay = 0;\n this.hide();\n };\n\n private remove() {\n this.hide();\n this.el.nativeElement.removeEventListener('mouseenter', this.show);\n this.el.nativeElement.removeEventListener('mouseleave', this.hide);\n }\n\n ngOnDestroy() {\n this.remove();\n }\n}\n","/*\n * Public API Surface of tooltip\n */\n\nexport { NgbTooltipTemplate } from './tooltip';\nexport { NgbTooltip, provideNgbTooltipOptions, type TooltipOptions } from './tooltip.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}