@ngbase/adk 0.1.1 → 0.1.3

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 (275) hide show
  1. package/a11y/accessibility-group.d.ts +2 -5
  2. package/accordion/accordion-item.d.ts +7 -1
  3. package/accordion/public-api.d.ts +1 -1
  4. package/autocomplete/autocomplete-input.d.ts +2 -4
  5. package/autocomplete/autocomplete.d.ts +13 -4
  6. package/avatar/avatar.d.ts +1 -1
  7. package/breadcrumb/breadcrumb.d.ts +2 -3
  8. package/breadcrumb/public-api.d.ts +1 -1
  9. package/carousel/carousel.d.ts +3 -3
  10. package/checkbox/checkbox.d.ts +11 -3
  11. package/checkbox/public-api.d.ts +1 -1
  12. package/chip/chip.d.ts +2 -2
  13. package/datepicker/calendar.d.ts +3 -3
  14. package/datepicker/datepicker-trigger.d.ts +22 -5
  15. package/datepicker/datepicker.d.ts +4 -3
  16. package/datepicker/time.d.ts +2 -2
  17. package/dialog/dialog.d.ts +1 -1
  18. package/drag/drag.d.ts +1 -2
  19. package/fesm2022/ngbase-adk-a11y.mjs +29 -26
  20. package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
  21. package/fesm2022/ngbase-adk-accordion.mjs +16 -3
  22. package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
  23. package/fesm2022/ngbase-adk-autocomplete.mjs +23 -52
  24. package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
  25. package/fesm2022/ngbase-adk-avatar.mjs +2 -2
  26. package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
  27. package/fesm2022/ngbase-adk-breadcrumb.mjs +2 -2
  28. package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
  29. package/fesm2022/ngbase-adk-carousel.mjs +7 -7
  30. package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
  31. package/fesm2022/ngbase-adk-checkbox.mjs +8 -6
  32. package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
  33. package/fesm2022/ngbase-adk-chip.mjs +4 -2
  34. package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
  35. package/fesm2022/ngbase-adk-datepicker.mjs +187 -350
  36. package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
  37. package/fesm2022/ngbase-adk-dialog.mjs +14 -15
  38. package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
  39. package/fesm2022/ngbase-adk-drag.mjs +1 -2
  40. package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
  41. package/fesm2022/ngbase-adk-form-field.mjs +2 -156
  42. package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
  43. package/fesm2022/ngbase-adk-list.mjs +2 -2
  44. package/fesm2022/ngbase-adk-list.mjs.map +1 -1
  45. package/fesm2022/ngbase-adk-mask.mjs +5 -3
  46. package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
  47. package/fesm2022/ngbase-adk-menu.mjs +34 -34
  48. package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
  49. package/fesm2022/ngbase-adk-otp.mjs +164 -0
  50. package/fesm2022/ngbase-adk-otp.mjs.map +1 -0
  51. package/fesm2022/ngbase-adk-pagination.mjs +10 -67
  52. package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
  53. package/fesm2022/ngbase-adk-popover.mjs +434 -556
  54. package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
  55. package/fesm2022/ngbase-adk-portal.mjs +5 -10
  56. package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
  57. package/fesm2022/ngbase-adk-radio.mjs +8 -19
  58. package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
  59. package/fesm2022/ngbase-adk-resizable.mjs +10 -43
  60. package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
  61. package/fesm2022/ngbase-adk-select.mjs +87 -185
  62. package/fesm2022/ngbase-adk-select.mjs.map +1 -1
  63. package/fesm2022/ngbase-adk-sheet.mjs +95 -0
  64. package/fesm2022/ngbase-adk-sheet.mjs.map +1 -0
  65. package/fesm2022/ngbase-adk-sidenav.mjs +2 -2
  66. package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
  67. package/fesm2022/ngbase-adk-slider.mjs +12 -23
  68. package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
  69. package/fesm2022/ngbase-adk-sonner.mjs +13 -63
  70. package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
  71. package/fesm2022/ngbase-adk-stepper.mjs +16 -114
  72. package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
  73. package/fesm2022/ngbase-adk-switch.mjs +2 -2
  74. package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
  75. package/fesm2022/ngbase-adk-table.mjs +17 -35
  76. package/fesm2022/ngbase-adk-table.mjs.map +1 -1
  77. package/fesm2022/ngbase-adk-tabs.mjs +14 -94
  78. package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
  79. package/fesm2022/ngbase-adk-test.mjs +11 -1
  80. package/fesm2022/ngbase-adk-test.mjs.map +1 -1
  81. package/fesm2022/ngbase-adk-tooltip.mjs +49 -39
  82. package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
  83. package/fesm2022/ngbase-adk-tour.mjs +3 -3
  84. package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
  85. package/fesm2022/ngbase-adk-tree.mjs +11 -43
  86. package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
  87. package/fesm2022/ngbase-adk-utils.mjs +12 -9
  88. package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
  89. package/form-field/public-api.d.ts +0 -1
  90. package/mask/mask.d.ts +1 -2
  91. package/menu/menu-trigger.d.ts +3 -3
  92. package/menu/menu.d.ts +13 -7
  93. package/otp/index.d.ts +5 -0
  94. package/{form-field → otp}/otp.d.ts +1 -1
  95. package/otp/public-api.d.ts +1 -0
  96. package/package.json +27 -19
  97. package/pagination/pagination.d.ts +7 -3
  98. package/popover/base-popover.service.d.ts +1 -1
  99. package/popover/popover-arrow.ng.d.ts +34 -0
  100. package/popover/popover.d.ts +17 -7
  101. package/popover/popover.service.d.ts +5 -4
  102. package/popover/public-api.d.ts +1 -0
  103. package/popover/utils.d.ts +32 -48
  104. package/portal/dialog-ref.d.ts +0 -1
  105. package/portal/portal-base.service.d.ts +3 -3
  106. package/portal/portal-close.directive.d.ts +3 -2
  107. package/radio/radio.d.ts +5 -1
  108. package/resizable/resizable-group.d.ts +2 -2
  109. package/resizable/resizable.d.ts +2 -2
  110. package/select/option-group.d.ts +3 -3
  111. package/select/option.d.ts +1 -1
  112. package/select/select-base.d.ts +8 -6
  113. package/select/select.d.ts +6 -3
  114. package/sheet/index.d.ts +5 -0
  115. package/sheet/public-api.d.ts +2 -0
  116. package/sheet/sheet.d.ts +26 -0
  117. package/sheet/sheet.service.d.ts +13 -0
  118. package/sidenav/public-api.d.ts +1 -1
  119. package/sidenav/sidenav.d.ts +1 -1
  120. package/slider/public-api.d.ts +1 -1
  121. package/slider/slider.d.ts +6 -5
  122. package/sonner/sonner.d.ts +2 -1
  123. package/stepper/animation.d.ts +1 -1
  124. package/stepper/step.d.ts +1 -1
  125. package/stepper/stepper.d.ts +2 -2
  126. package/switch/switch.d.ts +1 -1
  127. package/table/body-row.d.ts +3 -3
  128. package/table/head-row.d.ts +3 -3
  129. package/table/table.d.ts +3 -3
  130. package/tabs/tab-group.d.ts +4 -4
  131. package/tabs/tab.d.ts +2 -2
  132. package/test/utils.d.ts +19 -3
  133. package/tooltip/public-api.d.ts +1 -1
  134. package/tooltip/tooltip.d.ts +5 -1
  135. package/tooltip/tooltip.directive.d.ts +1 -1
  136. package/tooltip/tooltip.service.d.ts +4 -2
  137. package/tour/tour.service.d.ts +3 -4
  138. package/tree/public-api.d.ts +2 -2
  139. package/tree/tree-node.d.ts +2 -2
  140. package/tree/tree.d.ts +2 -2
  141. package/utils/utils.d.ts +5 -4
  142. package/schematics/collection.json +0 -15
  143. package/schematics/components/files/accordion/accordion.ts.template +0 -55
  144. package/schematics/components/files/accordion/index.ts.template +0 -5
  145. package/schematics/components/files/alert/alert.ts.template +0 -62
  146. package/schematics/components/files/alert/index.ts.template +0 -1
  147. package/schematics/components/files/autocomplete/autocomplete.ts.template +0 -48
  148. package/schematics/components/files/autocomplete/index.ts.template +0 -5
  149. package/schematics/components/files/avatar/avatar.ts.template +0 -31
  150. package/schematics/components/files/avatar/index.ts.template +0 -1
  151. package/schematics/components/files/badge/badge.ts.template +0 -11
  152. package/schematics/components/files/badge/index.ts.template +0 -1
  153. package/schematics/components/files/breadcrumb/breadcrumb.ts.template +0 -49
  154. package/schematics/components/files/breadcrumb/index.ts.template +0 -1
  155. package/schematics/components/files/button/button.ts.template +0 -29
  156. package/schematics/components/files/button/index.ts.template +0 -5
  157. package/schematics/components/files/card/card.ts.template +0 -11
  158. package/schematics/components/files/card/index.ts.template +0 -5
  159. package/schematics/components/files/carousel/carousel.ts.template +0 -44
  160. package/schematics/components/files/carousel/index.ts.template +0 -1
  161. package/schematics/components/files/checkbox/checkbox.ts.template +0 -46
  162. package/schematics/components/files/checkbox/focus-style.directive.ts.template +0 -12
  163. package/schematics/components/files/checkbox/index.ts.template +0 -6
  164. package/schematics/components/files/chip/chip.ts.template +0 -36
  165. package/schematics/components/files/chip/index.ts.template +0 -1
  166. package/schematics/components/files/color-picker/color-picker.ts.template +0 -104
  167. package/schematics/components/files/color-picker/index.ts.template +0 -5
  168. package/schematics/components/files/command/command.ts.template +0 -82
  169. package/schematics/components/files/command/index.ts.template +0 -1
  170. package/schematics/components/files/datepicker/calendar.ts.template +0 -117
  171. package/schematics/components/files/datepicker/datepicker-trigger.ts.template +0 -27
  172. package/schematics/components/files/datepicker/datepicker.ts.template +0 -28
  173. package/schematics/components/files/datepicker/index.ts.template +0 -3
  174. package/schematics/components/files/datepicker/time.ts.template +0 -46
  175. package/schematics/components/files/dialog/dialog.ts.template +0 -89
  176. package/schematics/components/files/dialog/index.ts.template +0 -5
  177. package/schematics/components/files/drawer/drawer.ts.template +0 -104
  178. package/schematics/components/files/drawer/index.ts.template +0 -5
  179. package/schematics/components/files/form-field/index.ts.template +0 -7
  180. package/schematics/components/files/form-field/input-style.directive.ts.template +0 -11
  181. package/schematics/components/files/form-field/input.ts.template +0 -100
  182. package/schematics/components/files/form-field/otp.ts.template +0 -37
  183. package/schematics/components/files/hover-card/hover-card.ts.template +0 -13
  184. package/schematics/components/files/hover-card/index.ts.template +0 -5
  185. package/schematics/components/files/icon/icon.ts.template +0 -16
  186. package/schematics/components/files/icon/index.ts.template +0 -1
  187. package/schematics/components/files/inline-edit/index.ts.template +0 -1
  188. package/schematics/components/files/inline-edit/inline-edit.ts.template +0 -24
  189. package/schematics/components/files/keys/index.ts.template +0 -5
  190. package/schematics/components/files/keys/key.ts.template +0 -35
  191. package/schematics/components/files/list/index.ts.template +0 -5
  192. package/schematics/components/files/list/list.ts.template +0 -28
  193. package/schematics/components/files/mask/index.ts.template +0 -1
  194. package/schematics/components/files/mask/mask.ts.template +0 -8
  195. package/schematics/components/files/menu/context-menu.ts.template +0 -14
  196. package/schematics/components/files/menu/index.ts.template +0 -8
  197. package/schematics/components/files/menu/mention.ts.template +0 -14
  198. package/schematics/components/files/menu/menu.ts.template +0 -37
  199. package/schematics/components/files/menu/navigation-menu.ts.template +0 -8
  200. package/schematics/components/files/pagination/index.ts.template +0 -1
  201. package/schematics/components/files/pagination/pagination.ts.template +0 -71
  202. package/schematics/components/files/picasa/index.ts.template +0 -1
  203. package/schematics/components/files/picasa/picasa-base.component.ts.template +0 -80
  204. package/schematics/components/files/picasa/picasa.component.ts.template +0 -57
  205. package/schematics/components/files/picasa/picasa.directive.ts.template +0 -41
  206. package/schematics/components/files/picasa/picase.service.ts.template +0 -24
  207. package/schematics/components/files/popover/index.ts.template +0 -1
  208. package/schematics/components/files/popover/popover.ts.template +0 -87
  209. package/schematics/components/files/progress/index.ts.template +0 -5
  210. package/schematics/components/files/progress/progress.ts.template +0 -14
  211. package/schematics/components/files/radio/index.ts.template +0 -5
  212. package/schematics/components/files/radio/radio.ts.template +0 -40
  213. package/schematics/components/files/resizable/index.ts.template +0 -5
  214. package/schematics/components/files/resizable/resizable.ts.template +0 -56
  215. package/schematics/components/files/scroll-area/index.ts.template +0 -1
  216. package/schematics/components/files/scroll-area/scroll-area.ts.template +0 -40
  217. package/schematics/components/files/select/index.ts.template +0 -8
  218. package/schematics/components/files/select/list-selection.ts.template +0 -15
  219. package/schematics/components/files/select/option.ts.template +0 -34
  220. package/schematics/components/files/select/select-input.ts.template +0 -21
  221. package/schematics/components/files/select/select.ts.template +0 -96
  222. package/schematics/components/files/selectable/index.ts.template +0 -1
  223. package/schematics/components/files/selectable/selectable.ts.template +0 -34
  224. package/schematics/components/files/separator/index.ts.template +0 -5
  225. package/schematics/components/files/separator/separator.ts.template +0 -19
  226. package/schematics/components/files/sheet/index.ts.template +0 -5
  227. package/schematics/components/files/sheet/sheet.ts.template +0 -134
  228. package/schematics/components/files/sidenav/index.ts.template +0 -1
  229. package/schematics/components/files/sidenav/sidenav.ts.template +0 -48
  230. package/schematics/components/files/skeleton/index.ts.template +0 -1
  231. package/schematics/components/files/skeleton/skeleton.ts.template +0 -15
  232. package/schematics/components/files/slider/index.ts.template +0 -5
  233. package/schematics/components/files/slider/slider.ts.template +0 -42
  234. package/schematics/components/files/sonner/index.ts.template +0 -5
  235. package/schematics/components/files/sonner/sonner.ts.template +0 -58
  236. package/schematics/components/files/spinner/index.ts.template +0 -1
  237. package/schematics/components/files/spinner/spinner.ts.template +0 -79
  238. package/schematics/components/files/stepper/index.ts.template +0 -1
  239. package/schematics/components/files/stepper/stepper.ts.template +0 -88
  240. package/schematics/components/files/switch/index.ts.template +0 -5
  241. package/schematics/components/files/switch/switch.ts.template +0 -29
  242. package/schematics/components/files/table/body-cell.ts.template +0 -19
  243. package/schematics/components/files/table/body-row.ts.template +0 -21
  244. package/schematics/components/files/table/column.ts.template +0 -8
  245. package/schematics/components/files/table/head-cell.ts.template +0 -19
  246. package/schematics/components/files/table/head-row.ts.template +0 -27
  247. package/schematics/components/files/table/index.ts.template +0 -26
  248. package/schematics/components/files/table/table.ts.template +0 -20
  249. package/schematics/components/files/tabs/index.ts.template +0 -5
  250. package/schematics/components/files/tabs/tab.ts.template +0 -89
  251. package/schematics/components/files/theme/index.ts.template +0 -2
  252. package/schematics/components/files/theme/theme-button.component.ts.template +0 -26
  253. package/schematics/components/files/theme/theme.component.ts.template +0 -165
  254. package/schematics/components/files/theme/theme.service.ts.template +0 -44
  255. package/schematics/components/files/toggle/index.ts.template +0 -5
  256. package/schematics/components/files/toggle/toggle.ts.template +0 -13
  257. package/schematics/components/files/toggle-group/index.ts.template +0 -5
  258. package/schematics/components/files/toggle-group/toggle-group.ts.template +0 -25
  259. package/schematics/components/files/tooltip/index.ts.template +0 -5
  260. package/schematics/components/files/tooltip/tooltip.ts.template +0 -40
  261. package/schematics/components/files/tour/index.ts.template +0 -3
  262. package/schematics/components/files/tour/tour-step.ts.template +0 -8
  263. package/schematics/components/files/tour/tour.service.ts.template +0 -7
  264. package/schematics/components/files/tour/tour.ts.template +0 -8
  265. package/schematics/components/files/tree/index.ts.template +0 -1
  266. package/schematics/components/files/tree/tree.ts.template +0 -66
  267. package/schematics/components/index.d.ts +0 -3
  268. package/schematics/components/index.js +0 -17
  269. package/schematics/components/index.js.map +0 -1
  270. package/schematics/components/index.ts +0 -29
  271. package/schematics/components/schema.d.ts +0 -6
  272. package/schematics/components/schema.js +0 -3
  273. package/schematics/components/schema.js.map +0 -1
  274. package/schematics/components/schema.json +0 -137
  275. package/schematics/components/schema.ts +0 -6
@@ -1,15 +1,15 @@
1
- import { NgTemplateOutlet, NgClass } from '@angular/common';
2
1
  import * as i0 from '@angular/core';
3
- import { InjectionToken, inject, ElementRef, Injector, input, booleanAttribute, computed, effect, afterNextRender, Directive, viewChild, model, signal, Component, ChangeDetectionStrategy, output, untracked, viewChildren } from '@angular/core';
2
+ import { InjectionToken, inject, ElementRef, input, effect, Directive, Injector, booleanAttribute, computed, afterNextRender, viewChild, model, signal, viewChildren, output, untracked } from '@angular/core';
4
3
  import * as i1$1 from '@ngbase/adk/a11y';
5
4
  import { AccessibleGroup, AccessibleItem } from '@ngbase/adk/a11y';
6
5
  import { Directionality } from '@ngbase/adk/bidi';
7
6
  import { DialogRef } from '@ngbase/adk/portal';
8
7
  import * as i1$2 from '@ngbase/adk/utils';
9
- import { uniqueId, RangePipe, NumberOnly, padString, provideValueAccessor } from '@ngbase/adk/utils';
8
+ import { uniqueId, NumberOnly, padString, provideValueAccessor } from '@ngbase/adk/utils';
10
9
  import * as i1 from '@ngbase/adk/form-field';
11
10
  import { InputBase } from '@ngbase/adk/form-field';
12
11
  import { ngbPopoverPortal } from '@ngbase/adk/popover';
12
+ import { NgbSelectTarget } from '@ngbase/adk/select';
13
13
 
14
14
  const NgbDateAdapter = new InjectionToken('mat-date-formats');
15
15
  function injectNgbDateAdapter() {
@@ -115,54 +115,85 @@ const DEFAULT_FIELD_FORMAT = 'ISO';
115
115
  const DEFAULT_FORMAT = 'M/d/yyyy';
116
116
  const DEFAULT_TIME_FORMAT = 'M/d/yyyy, HH:mm a';
117
117
  const DatePicker = new InjectionToken('DatePicker');
118
+ class NgbEndDate {
119
+ constructor() {
120
+ this.el = inject(ElementRef);
121
+ this.inputS = inject(InputBase);
122
+ this.ngbEndDate = input.required();
123
+ this.hidden = false;
124
+ effect(() => {
125
+ this.ngbEndDate().endDate = this;
126
+ });
127
+ }
128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbEndDate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
129
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbEndDate, isStandalone: true, selector: "[ngbEndDate]", inputs: { ngbEndDate: { classPropertyName: "ngbEndDate", publicName: "ngbEndDate", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "open()" } }, exportAs: ["ngbEndDate"], hostDirectives: [{ directive: i1.InputBase, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
130
+ }
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbEndDate, decorators: [{
132
+ type: Directive,
133
+ args: [{
134
+ selector: '[ngbEndDate]',
135
+ exportAs: 'ngbEndDate',
136
+ hostDirectives: [{ directive: InputBase, inputs: ['value'], outputs: ['valueChange'] }],
137
+ host: {
138
+ '(click)': 'open()',
139
+ },
140
+ }]
141
+ }], ctorParameters: () => [] });
118
142
  class NgbDatepickerTrigger {
119
143
  constructor() {
120
144
  this.el = inject(ElementRef);
121
145
  this.inputS = inject(InputBase);
146
+ this.target = inject(NgbSelectTarget, { optional: true });
122
147
  this.injector = inject(Injector);
123
148
  this.adapter = injectNgbDateAdapter();
124
149
  this.popover = ngbPopoverPortal();
125
150
  this.datepicker = inject(DatePicker, { optional: true }) ?? (NgbDatePicker);
126
151
  // readonly datepicker = input<NgbDatePicker<D>>();
127
- this.noOfCalendars = input(1, { transform: (v) => Math.max(1, v) });
152
+ this.noOfCalendars = input(1, { transform: (v) => Math.max(1, Number(v)) });
128
153
  this.range = input(false, { transform: booleanAttribute });
129
154
  this.time = input(false, { transform: booleanAttribute });
130
155
  this.format = input('');
131
156
  this.fieldFormat = input(DEFAULT_FIELD_FORMAT);
132
- this.displayFormat = computed(() => {
133
- return this.format() || (this.time() ? DEFAULT_TIME_FORMAT : DEFAULT_FORMAT);
134
- });
135
157
  this.dateFilter = input(() => true);
136
158
  this.pickerType = input('date');
137
159
  this.pickerTemplate = input(null);
160
+ this.displayFormat = computed(() => {
161
+ return this.format() || (this.time() ? DEFAULT_TIME_FORMAT : DEFAULT_FORMAT);
162
+ });
163
+ this.inputValue = computed(() => this.getInputValue());
138
164
  effect(() => {
139
- const value = this.getInputValue();
165
+ const value = this.inputValue();
140
166
  this.updateField(value);
141
167
  });
142
168
  }
143
169
  getInputValue() {
144
170
  const v = this.inputS.value();
171
+ const e = this.endDate?.inputS.value();
145
172
  let value = [];
146
173
  if (v) {
147
- value = this.range() ? v : [v];
174
+ value = Array.isArray(v) ? v : [v];
175
+ }
176
+ if (e) {
177
+ value[1] = e;
148
178
  }
149
179
  return value.map(x => this.adapter.parse(x));
150
180
  }
151
181
  open() {
182
+ const target = this.target?.target() || this.el.nativeElement;
152
183
  const data = {
153
- value: this.getInputValue(),
184
+ target,
185
+ value: this.inputValue,
154
186
  pickerType: this.pickerType(),
155
187
  noOfCalendars: this.noOfCalendars(),
156
188
  range: this.range(),
157
189
  format: this.displayFormat(),
158
190
  fieldFormat: this.fieldFormat(),
159
- target: this.el.nativeElement,
160
191
  template: this.pickerTemplate(),
161
192
  dateFilter: this.dateFilter(),
162
193
  time: this.time(),
163
194
  };
164
195
  const { diaRef } = this.popover.open(this.datepicker, {
165
- target: this.el.nativeElement,
196
+ target,
166
197
  position: 'bl',
167
198
  data,
168
199
  width: 'none',
@@ -173,40 +204,53 @@ class NgbDatepickerTrigger {
173
204
  const filtered = dates.filter(x => x);
174
205
  const formatDate = dates.map(x => (x ? this.adapter.format(x, this.fieldFormat()) : x));
175
206
  if (this.range()) {
176
- if (filtered.length === 1) {
207
+ if (filtered.length < 2) {
177
208
  return;
178
209
  }
179
- this.inputS?.setValue(formatDate);
210
+ if (this.endDate) {
211
+ this.inputS.setValue(formatDate[0], true);
212
+ this.endDate.inputS.setValue(formatDate[1], true);
213
+ }
214
+ else {
215
+ this.inputS?.setValue(formatDate, true);
216
+ }
180
217
  }
181
218
  else if (filtered.length) {
182
- this.inputS?.setValue(formatDate[0]);
219
+ this.inputS?.setValue(formatDate[0], true);
183
220
  }
184
221
  this.updateField(filtered);
185
222
  }
186
223
  updateField(filtered) {
187
224
  // console.log(this.fieldFormat());
188
- const d = filtered
189
- .map(x => this.adapter.format(x, this.displayFormat()))
190
- .filter(x => x)
191
- .join(' - ');
192
- afterNextRender(() => (this.el.nativeElement.value = d), { injector: this.injector });
225
+ const d = filtered.map(x => this.adapter.format(x, this.displayFormat())).filter(x => x);
226
+ afterNextRender(() => {
227
+ if (this.endDate && !this.endDate.hidden) {
228
+ this.el.nativeElement.value = d[0] || '';
229
+ this.endDate.el.nativeElement.value = d[1] || '';
230
+ }
231
+ else {
232
+ this.el.nativeElement.value = d.join(' - ');
233
+ }
234
+ }, { injector: this.injector });
193
235
  }
194
236
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbDatepickerTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
195
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbDatepickerTrigger, isStandalone: true, selector: "[ngbDatepickerTrigger]", inputs: { noOfCalendars: { classPropertyName: "noOfCalendars", publicName: "noOfCalendars", isSignal: true, isRequired: false, transformFunction: null }, range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null }, time: { classPropertyName: "time", publicName: "time", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, fieldFormat: { classPropertyName: "fieldFormat", publicName: "fieldFormat", isSignal: true, isRequired: false, transformFunction: null }, dateFilter: { classPropertyName: "dateFilter", publicName: "dateFilter", isSignal: true, isRequired: false, transformFunction: null }, pickerType: { classPropertyName: "pickerType", publicName: "pickerType", isSignal: true, isRequired: false, transformFunction: null }, pickerTemplate: { classPropertyName: "pickerTemplate", publicName: "pickerTemplate", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "readonly": "true" }, listeners: { "click": "open()" }, classAttribute: "cursor-pointer hover:bg-muted-background" }, exportAs: ["ngbDatepickerTrigger"], hostDirectives: [{ directive: i1.InputBase }], ngImport: i0 }); }
237
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbDatepickerTrigger, isStandalone: true, selector: "[ngbDatepickerTrigger]", inputs: { noOfCalendars: { classPropertyName: "noOfCalendars", publicName: "noOfCalendars", isSignal: true, isRequired: false, transformFunction: null }, range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null }, time: { classPropertyName: "time", publicName: "time", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, fieldFormat: { classPropertyName: "fieldFormat", publicName: "fieldFormat", isSignal: true, isRequired: false, transformFunction: null }, dateFilter: { classPropertyName: "dateFilter", publicName: "dateFilter", isSignal: true, isRequired: false, transformFunction: null }, pickerType: { classPropertyName: "pickerType", publicName: "pickerType", isSignal: true, isRequired: false, transformFunction: null }, pickerTemplate: { classPropertyName: "pickerTemplate", publicName: "pickerTemplate", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "readonly": "true" }, listeners: { "click": "open()" } }, exportAs: ["ngbDatepickerTrigger"], hostDirectives: [{ directive: i1.InputBase, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
196
238
  }
197
239
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbDatepickerTrigger, decorators: [{
198
240
  type: Directive,
199
241
  args: [{
200
242
  selector: '[ngbDatepickerTrigger]',
201
243
  exportAs: 'ngbDatepickerTrigger',
202
- hostDirectives: [InputBase],
244
+ hostDirectives: [{ directive: InputBase, inputs: ['value'], outputs: ['valueChange'] }],
203
245
  host: {
204
- class: 'cursor-pointer hover:bg-muted-background',
205
246
  '(click)': 'open()',
206
247
  readonly: 'true',
207
248
  },
208
249
  }]
209
250
  }], ctorParameters: () => [] });
251
+ function aliasDatePickerTrigger(trigger) {
252
+ return { provide: NgbDatepickerTrigger, useExisting: trigger };
253
+ }
210
254
  function registerDatePicker(datePicker) {
211
255
  return {
212
256
  provide: DatePicker,
@@ -235,6 +279,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
235
279
  }], ctorParameters: () => [] });
236
280
  class NgbDatePicker {
237
281
  constructor() {
282
+ this.injector = inject(Injector);
238
283
  this.datepickerTrigger = inject(NgbDatepickerTrigger, {
239
284
  optional: true,
240
285
  });
@@ -282,11 +327,16 @@ class NgbDatePicker {
282
327
  return v;
283
328
  });
284
329
  this.ayId = uniqueId();
285
- this.init();
330
+ effect(() => {
331
+ this.init();
332
+ });
286
333
  // this.allyGroup.focusChanged.subscribe(item => this.focusChanged(item));
287
334
  }
288
335
  init() {
289
- const v = this.data?.value?.filter(x => x).map(x => this.adapter.parse(x));
336
+ const v = this.data
337
+ ?.value()
338
+ ?.filter(x => x)
339
+ .map(x => this.adapter.parse(x));
290
340
  if (Array.isArray(v) && v.length) {
291
341
  let date;
292
342
  let dates;
@@ -390,183 +440,22 @@ class NgbDatePicker {
390
440
  }
391
441
  this.showType.set(type);
392
442
  }
393
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbDatePicker, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
394
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: NgbDatePicker, isStandalone: true, selector: "[ngbDatepicker]", inputs: { dateFilter: { classPropertyName: "dateFilter", publicName: "dateFilter", isSignal: true, isRequired: false, transformFunction: null }, pickerType: { classPropertyName: "pickerType", publicName: "pickerType", isSignal: true, isRequired: false, transformFunction: null }, noOfCalendar: { classPropertyName: "noOfCalendar", publicName: "noOfCalendar", isSignal: true, isRequired: false, transformFunction: null }, range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { noOfCalendar: "noOfCalendarChange", range: "rangeChange" }, host: { classAttribute: "inline-block" }, viewQueries: [{ propertyName: "allyGroup", first: true, predicate: AccessibleGroup, descendants: true, isSignal: true }], ngImport: i0, template: `
395
- <div class="flex" ngbDatepickerGroup>
396
- @for (no of noOfCalendar() | range; track no) {
397
- <ngb-calendar [first]="$first" [last]="$last" [index]="$index" />
398
- }
399
- </div>
400
- @if (template()) {
401
- <div class="px-2 pb-2">
402
- <ng-container *ngTemplateOutlet="template()" />
403
- </div>
404
- }
405
- `, isInline: true, dependencies: [{ kind: "component", type: NgbCalendar, selector: "ngb-calendar", inputs: ["first", "last", "index"] }, { kind: "pipe", type: RangePipe, name: "range" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: DatepickerGroup, selector: "[ngbDatepickerGroup]", exportAs: ["ngbDatepickerGroup"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
443
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbDatePicker, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
444
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbDatePicker, isStandalone: true, selector: "[ngbDatepicker]", inputs: { dateFilter: { classPropertyName: "dateFilter", publicName: "dateFilter", isSignal: true, isRequired: false, transformFunction: null }, pickerType: { classPropertyName: "pickerType", publicName: "pickerType", isSignal: true, isRequired: false, transformFunction: null }, noOfCalendar: { classPropertyName: "noOfCalendar", publicName: "noOfCalendar", isSignal: true, isRequired: false, transformFunction: null }, range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { noOfCalendar: "noOfCalendarChange", range: "rangeChange" }, viewQueries: [{ propertyName: "allyGroup", first: true, predicate: AccessibleGroup, descendants: true, isSignal: true }], ngImport: i0 }); }
406
445
  }
407
446
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbDatePicker, decorators: [{
408
- type: Component,
447
+ type: Directive,
409
448
  args: [{
410
449
  selector: '[ngbDatepicker]',
411
- changeDetection: ChangeDetectionStrategy.OnPush,
412
- imports: [NgbCalendar, RangePipe, NgTemplateOutlet, AccessibleGroup, DatepickerGroup],
413
- template: `
414
- <div class="flex" ngbDatepickerGroup>
415
- @for (no of noOfCalendar() | range; track no) {
416
- <ngb-calendar [first]="$first" [last]="$last" [index]="$index" />
417
- }
418
- </div>
419
- @if (template()) {
420
- <div class="px-2 pb-2">
421
- <ng-container *ngTemplateOutlet="template()" />
422
- </div>
423
- }
424
- `,
425
- host: {
426
- class: 'inline-block',
427
- },
428
450
  }]
429
451
  }], ctorParameters: () => [] });
430
- function provideDatePicker(picker) {
452
+ function aliasDatePicker(picker) {
431
453
  return {
432
454
  provide: NgbDatePicker,
433
455
  useExisting: picker,
434
456
  };
435
457
  }
436
458
 
437
- class NgbTimeInput {
438
- constructor() {
439
- this.numberOnly = inject(NumberOnly);
440
- this.timePicker = inject(NgbTimePicker);
441
- this.ngbTimeInput = input.required();
442
- this.numberOnly._min.set(0);
443
- this.numberOnly._len.set(2);
444
- effect(() => {
445
- const type = this.ngbTimeInput();
446
- if (type === 'hours') {
447
- this.numberOnly._max.set(this.timePicker.is24() ? 23 : 11);
448
- }
449
- else {
450
- this.numberOnly._max.set(59);
451
- }
452
- });
453
- }
454
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimeInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
455
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbTimeInput, isStandalone: true, selector: "[ngbTimeInput]", inputs: { ngbTimeInput: { classPropertyName: "ngbTimeInput", publicName: "ngbTimeInput", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "type": "tel" } }, hostDirectives: [{ directive: i1$2.NumberOnly, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
456
- }
457
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimeInput, decorators: [{
458
- type: Directive,
459
- args: [{
460
- selector: '[ngbTimeInput]',
461
- hostDirectives: [{ directive: NumberOnly, inputs: ['value'], outputs: ['valueChange'] }],
462
- host: {
463
- type: 'tel',
464
- },
465
- }]
466
- }], ctorParameters: () => [] });
467
- class NgbTimePicker {
468
- constructor() {
469
- this.is24 = input(false);
470
- this.value = input();
471
- this.valueChange = output();
472
- this.time = computed(() => {
473
- return (`${padString(this.hours())}:${padString(this.minutes())}:${padString(this.seconds())}` +
474
- (!this.is24() ? ` ${this.am() ? 'AM' : 'PM'}` : ''));
475
- });
476
- this.hours = signal('00');
477
- this.minutes = signal('00');
478
- this.seconds = signal('00');
479
- this.am = signal(true);
480
- this.onChange = (_) => { };
481
- this.onTouched = () => { };
482
- effect(() => {
483
- const value = this.value();
484
- untracked(() => {
485
- this.parseValue(value);
486
- });
487
- });
488
- }
489
- parseValue(value) {
490
- if (value) {
491
- const [time, period] = value.split(' ');
492
- const [hours, minutes, seconds] = time.split(':');
493
- const am = period === 'AM';
494
- this.hours.set(padString(hours));
495
- this.minutes.set(padString(minutes));
496
- this.seconds.set(padString(seconds));
497
- this.am.set(am);
498
- }
499
- }
500
- changeAm(active) {
501
- this.am.set(active);
502
- this.updateValue();
503
- }
504
- updateValue() {
505
- this.notify(this.time());
506
- }
507
- notify(time) {
508
- this.valueChange.emit(time);
509
- this.onChange(time);
510
- this.onTouched();
511
- }
512
- writeValue(value) {
513
- if (value) {
514
- this.parseValue(value);
515
- }
516
- }
517
- registerOnChange(fn) {
518
- this.onChange = fn;
519
- }
520
- registerOnTouched(fn) {
521
- this.onTouched = fn;
522
- }
523
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimePicker, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
524
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: NgbTimePicker, isStandalone: true, selector: "[ngbTime]", inputs: { is24: { classPropertyName: "is24", publicName: "is24", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "inline-flex gap-1 items-center justify-center" }, providers: [_provide(NgbTimePicker)], ngImport: i0, template: `
525
- <input ngbTimeInput="hours" [(value)]="hours" (valueChange)="updateValue()" />
526
- <span>:</span>
527
- <input ngbTimeInput="minutes" [(value)]="minutes" (valueChange)="updateValue()" />
528
- <span>:</span>
529
- <input ngbTimeInput="seconds" [(value)]="seconds" (valueChange)="updateValue()" />
530
- @if (!is24()) {
531
- <div class="ml-1 flex gap-2">
532
- <button type="button" class="small" (click)="changeAm(true)">AM</button>
533
- <button type="button" class="small" (click)="changeAm(false)">PM</button>
534
- </div>
535
- }
536
- `, isInline: true, dependencies: [{ kind: "directive", type: NgbTimeInput, selector: "[ngbTimeInput]", inputs: ["ngbTimeInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
537
- }
538
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimePicker, decorators: [{
539
- type: Component,
540
- args: [{
541
- selector: '[ngbTime]',
542
- changeDetection: ChangeDetectionStrategy.OnPush,
543
- providers: [_provide(NgbTimePicker)],
544
- imports: [NumberOnly, NgbTimeInput],
545
- template: `
546
- <input ngbTimeInput="hours" [(value)]="hours" (valueChange)="updateValue()" />
547
- <span>:</span>
548
- <input ngbTimeInput="minutes" [(value)]="minutes" (valueChange)="updateValue()" />
549
- <span>:</span>
550
- <input ngbTimeInput="seconds" [(value)]="seconds" (valueChange)="updateValue()" />
551
- @if (!is24()) {
552
- <div class="ml-1 flex gap-2">
553
- <button type="button" class="small" (click)="changeAm(true)">AM</button>
554
- <button type="button" class="small" (click)="changeAm(false)">PM</button>
555
- </div>
556
- }
557
- `,
558
- host: {
559
- class: 'inline-flex gap-1 items-center justify-center',
560
- },
561
- }]
562
- }], ctorParameters: () => [] });
563
- function _provide(picker) {
564
- return [provideValueAccessor(picker)];
565
- }
566
- function provideTimePicker(picker) {
567
- return [_provide(picker), { provide: NgbTimePicker, useExisting: picker }];
568
- }
569
-
570
459
  class CalendarBtn {
571
460
  constructor() {
572
461
  this.cal = inject(NgbCalendar);
@@ -951,180 +840,128 @@ class NgbCalendar {
951
840
  ngOnDestroy() {
952
841
  this.clearListeners();
953
842
  }
954
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
955
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: NgbCalendar, isStandalone: true, selector: "ngb-calendar", inputs: { first: { classPropertyName: "first", publicName: "first", isSignal: true, isRequired: false, transformFunction: null }, last: { classPropertyName: "last", publicName: "last", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "days", predicate: CalendarDayBtn, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
956
- <div class="mb-2 flex items-center justify-between">
957
- <button ngbCalendarBtn="left">{{ dir.isRtl() ? '>' : '<' }}</button>
958
- <button ngbCalendarTitle>{{ title() }}</button>
959
- <button ngbCalendarBtn="right">{{ dir.isRtl() ? '<' : '>' }}</button>
960
- </div>
961
-
962
- @if (datePicker.showType() === 'year') {
963
- <div class="grid grid-cols-3">
964
- @for (year of years(); track year.year) {
965
- <button
966
- [ngbCalYearBtn]="year"
967
- #yearBtn="ngbCalYearBtn"
968
- class="items-center justify-center rounded-md py-2 h-9 w-[84px] {{
969
- year.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
970
- }}"
971
- [ngClass]="{
972
- 'border bg-muted-background': yearBtn.selected(),
973
- '!bg-primary text-foreground': yearBtn.active(),
974
- }"
975
- >
976
- {{ year.year }}
977
- </button>
978
- }
979
- </div>
980
- } @else if (datePicker.showType() === 'month') {
981
- <div class="grid grid-cols-3">
982
- @for (month of months(); track month.value) {
983
- <button
984
- [ngbCalMonthBtn]="month"
985
- #monthBtn="ngbCalMonthBtn"
986
- class="items-center justify-center rounded-md py-2 h-9 w-[84px] {{
987
- month.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
988
- }}"
989
- [ngClass]="{
990
- 'border bg-muted-background': monthBtn.selected(),
991
- '!bg-primary text-foreground': monthBtn.active(),
992
- }"
993
- >
994
- {{ month.name }}
995
- </button>
996
- }
997
- </div>
998
- } @else {
999
- <div class="day-names grid grid-cols-7">
1000
- @for (dayName of dayNames; track dayName) {
1001
- <div class="p-1 text-center text-muted">{{ dayName }}</div>
1002
- }
1003
- </div>
1004
- <div class="grid grid-cols-7 gap-y-2">
1005
- @for (day of getDaysArray(); track day.day + '-' + day.mon) {
1006
- <button
1007
- #days="ngbCalDayBtn"
1008
- [ngbCalDayBtn]="day"
1009
- class="mx-auto flex h-9 w-9 items-center justify-center text-center {{
1010
- day.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
1011
- }}"
1012
- [ngClass]="{
1013
- 'bg-muted-background': days.selected(),
1014
- 'opacity-40': days.dummy(),
1015
- '!bg-primary text-foreground': days.active(),
1016
- }"
1017
- >
1018
- {{ day.day }}
1019
- </button>
1020
- }
1021
- </div>
1022
- @if (datePicker.time() && datePicker.range()) {
1023
- <div ngbTime [(value)]="time1" (valueChange)="timeChanged(0, time1()!)"></div>
1024
- <div ngbTime [(value)]="time2" (valueChange)="timeChanged(1, time2()!)"></div>
1025
- }
1026
- }
1027
- `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: NgbTimePicker, selector: "[ngbTime]", inputs: ["is24", "value"], outputs: ["valueChange"] }, { kind: "directive", type: CalendarBtn, selector: "[ngbCalendarBtn]", inputs: ["ngbCalendarBtn"] }, { kind: "directive", type: CalendarTitle, selector: "[ngbCalendarTitle]" }, { kind: "directive", type: CalendarYearBtn, selector: "[ngbCalYearBtn]", inputs: ["ngbCalYearBtn"], exportAs: ["ngbCalYearBtn"] }, { kind: "directive", type: CalendarMonthBtn, selector: "[ngbCalMonthBtn]", inputs: ["ngbCalMonthBtn"], exportAs: ["ngbCalMonthBtn"] }, { kind: "directive", type: CalendarDayBtn, selector: "[ngbCalDayBtn]", inputs: ["ngbCalDayBtn"], exportAs: ["ngbCalDayBtn"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
843
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbCalendar, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
844
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbCalendar, isStandalone: true, selector: "ngb-calendar", inputs: { first: { classPropertyName: "first", publicName: "first", isSignal: true, isRequired: false, transformFunction: null }, last: { classPropertyName: "last", publicName: "last", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "days", predicate: CalendarDayBtn, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0 }); }
1028
845
  }
1029
846
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbCalendar, decorators: [{
1030
- type: Component,
847
+ type: Directive,
1031
848
  args: [{
1032
849
  selector: 'ngb-calendar',
1033
- changeDetection: ChangeDetectionStrategy.OnPush,
1034
- imports: [
1035
- NgClass,
1036
- NgbTimePicker,
1037
- CalendarBtn,
1038
- CalendarTitle,
1039
- CalendarYearBtn,
1040
- CalendarMonthBtn,
1041
- CalendarDayBtn,
1042
- ],
1043
- template: `
1044
- <div class="mb-2 flex items-center justify-between">
1045
- <button ngbCalendarBtn="left">{{ dir.isRtl() ? '>' : '<' }}</button>
1046
- <button ngbCalendarTitle>{{ title() }}</button>
1047
- <button ngbCalendarBtn="right">{{ dir.isRtl() ? '<' : '>' }}</button>
1048
- </div>
1049
-
1050
- @if (datePicker.showType() === 'year') {
1051
- <div class="grid grid-cols-3">
1052
- @for (year of years(); track year.year) {
1053
- <button
1054
- [ngbCalYearBtn]="year"
1055
- #yearBtn="ngbCalYearBtn"
1056
- class="items-center justify-center rounded-md py-2 h-9 w-[84px] {{
1057
- year.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
1058
- }}"
1059
- [ngClass]="{
1060
- 'border bg-muted-background': yearBtn.selected(),
1061
- '!bg-primary text-foreground': yearBtn.active(),
1062
- }"
1063
- >
1064
- {{ year.year }}
1065
- </button>
1066
- }
1067
- </div>
1068
- } @else if (datePicker.showType() === 'month') {
1069
- <div class="grid grid-cols-3">
1070
- @for (month of months(); track month.value) {
1071
- <button
1072
- [ngbCalMonthBtn]="month"
1073
- #monthBtn="ngbCalMonthBtn"
1074
- class="items-center justify-center rounded-md py-2 h-9 w-[84px] {{
1075
- month.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
1076
- }}"
1077
- [ngClass]="{
1078
- 'border bg-muted-background': monthBtn.selected(),
1079
- '!bg-primary text-foreground': monthBtn.active(),
1080
- }"
1081
- >
1082
- {{ month.name }}
1083
- </button>
1084
- }
1085
- </div>
1086
- } @else {
1087
- <div class="day-names grid grid-cols-7">
1088
- @for (dayName of dayNames; track dayName) {
1089
- <div class="p-1 text-center text-muted">{{ dayName }}</div>
1090
- }
1091
- </div>
1092
- <div class="grid grid-cols-7 gap-y-2">
1093
- @for (day of getDaysArray(); track day.day + '-' + day.mon) {
1094
- <button
1095
- #days="ngbCalDayBtn"
1096
- [ngbCalDayBtn]="day"
1097
- class="mx-auto flex h-9 w-9 items-center justify-center text-center {{
1098
- day.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
1099
- }}"
1100
- [ngClass]="{
1101
- 'bg-muted-background': days.selected(),
1102
- 'opacity-40': days.dummy(),
1103
- '!bg-primary text-foreground': days.active(),
1104
- }"
1105
- >
1106
- {{ day.day }}
1107
- </button>
1108
- }
1109
- </div>
1110
- @if (datePicker.time() && datePicker.range()) {
1111
- <div ngbTime [(value)]="time1" (valueChange)="timeChanged(0, time1()!)"></div>
1112
- <div ngbTime [(value)]="time2" (valueChange)="timeChanged(1, time2()!)"></div>
1113
- }
1114
- }
1115
- `,
1116
850
  }]
1117
851
  }], ctorParameters: () => [] });
1118
- function provideCalendar(cal) {
852
+ function aliasCalendar(cal) {
1119
853
  return {
1120
854
  provide: NgbCalendar,
1121
855
  useExisting: cal,
1122
856
  };
1123
857
  }
1124
858
 
859
+ class NgbTimeInput {
860
+ constructor() {
861
+ this.numberOnly = inject(NumberOnly);
862
+ this.timePicker = inject(NgbTimePicker);
863
+ this.ngbTimeInput = input.required();
864
+ this.numberOnly._min.set(0);
865
+ this.numberOnly._len.set(2);
866
+ effect(() => {
867
+ const type = this.ngbTimeInput();
868
+ if (type === 'hours') {
869
+ this.numberOnly._max.set(this.timePicker.is24() ? 23 : 11);
870
+ }
871
+ else {
872
+ this.numberOnly._max.set(59);
873
+ }
874
+ });
875
+ }
876
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimeInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
877
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbTimeInput, isStandalone: true, selector: "[ngbTimeInput]", inputs: { ngbTimeInput: { classPropertyName: "ngbTimeInput", publicName: "ngbTimeInput", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "type": "tel" } }, hostDirectives: [{ directive: i1$2.NumberOnly, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
878
+ }
879
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimeInput, decorators: [{
880
+ type: Directive,
881
+ args: [{
882
+ selector: '[ngbTimeInput]',
883
+ hostDirectives: [{ directive: NumberOnly, inputs: ['value'], outputs: ['valueChange'] }],
884
+ host: {
885
+ type: 'tel',
886
+ },
887
+ }]
888
+ }], ctorParameters: () => [] });
889
+ class NgbTimePicker {
890
+ constructor() {
891
+ this.is24 = input(false);
892
+ this.value = input();
893
+ this.valueChange = output();
894
+ this.time = computed(() => {
895
+ return (`${padString(this.hours())}:${padString(this.minutes())}:${padString(this.seconds())}` +
896
+ (!this.is24() ? ` ${this.am() ? 'AM' : 'PM'}` : ''));
897
+ });
898
+ this.hours = signal('00');
899
+ this.minutes = signal('00');
900
+ this.seconds = signal('00');
901
+ this.am = signal(true);
902
+ this.onChange = (_) => { };
903
+ this.onTouched = () => { };
904
+ effect(() => {
905
+ const value = this.value();
906
+ untracked(() => {
907
+ this.parseValue(value);
908
+ });
909
+ });
910
+ }
911
+ parseValue(value) {
912
+ if (value) {
913
+ const [time, period] = value.split(' ');
914
+ const [hours, minutes, seconds = '00'] = time.split(':');
915
+ const am = period === 'AM';
916
+ this.hours.set(padString(hours));
917
+ this.minutes.set(padString(minutes));
918
+ this.seconds.set(padString(seconds));
919
+ this.am.set(am);
920
+ }
921
+ }
922
+ changeAm(active) {
923
+ this.am.set(active);
924
+ this.updateValue();
925
+ }
926
+ updateValue() {
927
+ this.notify(this.time());
928
+ }
929
+ notify(time) {
930
+ this.valueChange.emit(time);
931
+ this.onChange(time);
932
+ this.onTouched();
933
+ }
934
+ writeValue(value) {
935
+ if (value) {
936
+ this.parseValue(value);
937
+ }
938
+ }
939
+ registerOnChange(fn) {
940
+ this.onChange = fn;
941
+ }
942
+ registerOnTouched(fn) {
943
+ this.onTouched = fn;
944
+ }
945
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimePicker, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
946
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbTimePicker, isStandalone: true, selector: "[ngbTime]", inputs: { is24: { classPropertyName: "is24", publicName: "is24", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, providers: [_provide(NgbTimePicker)], ngImport: i0 }); }
947
+ }
948
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimePicker, decorators: [{
949
+ type: Directive,
950
+ args: [{
951
+ selector: '[ngbTime]',
952
+ providers: [_provide(NgbTimePicker)],
953
+ }]
954
+ }], ctorParameters: () => [] });
955
+ function _provide(picker) {
956
+ return [provideValueAccessor(picker)];
957
+ }
958
+ function aliasTimePicker(picker) {
959
+ return [_provide(picker), { provide: NgbTimePicker, useExisting: picker }];
960
+ }
961
+
1125
962
  /**
1126
963
  * Generated bundle index. Do not edit.
1127
964
  */
1128
965
 
1129
- export { CalendarBtn, CalendarDayBtn, CalendarMonthBtn, CalendarTitle, CalendarYearBtn, DatepickerGroup, NgbCalendar, NgbDateAdapter, NgbDatePicker, NgbDatepickerTrigger, NgbNativeDateAdapter, NgbTimeInput, NgbTimePicker, injectNgbDateAdapter, provideCalendar, provideDatePicker, provideTimePicker, registerDatePicker };
966
+ export { CalendarBtn, CalendarDayBtn, CalendarMonthBtn, CalendarTitle, CalendarYearBtn, DatepickerGroup, NgbCalendar, NgbDateAdapter, NgbDatePicker, NgbDatepickerTrigger, NgbEndDate, NgbNativeDateAdapter, NgbTimeInput, NgbTimePicker, aliasCalendar, aliasDatePicker, aliasDatePickerTrigger, aliasTimePicker, injectNgbDateAdapter, registerDatePicker };
1130
967
  //# sourceMappingURL=ngbase-adk-datepicker.mjs.map