@fundamental-ngx/core 0.63.2-rc.4 → 0.63.2-rc.6

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 (201) hide show
  1. package/fesm2022/fundamental-ngx-core-action-bar.mjs +27 -26
  2. package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +25 -22
  4. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs +35 -31
  6. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +52 -43
  8. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-core-avatar.mjs +67 -43
  10. package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-core-bar.mjs +50 -41
  12. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +18 -14
  14. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +34 -23
  16. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-core-button.mjs +56 -37
  18. package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-core-calendar.mjs +87 -62
  20. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-core-card.mjs +264 -188
  22. package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-core-carousel.mjs +35 -26
  24. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-core-checkbox.mjs +7 -7
  26. package/fesm2022/fundamental-ngx-core-combobox.mjs +19 -18
  27. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  28. package/fesm2022/fundamental-ngx-core-content-density.mjs +46 -36
  29. package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
  30. package/fesm2022/fundamental-ngx-core-date-picker.mjs +13 -13
  31. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  32. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +15 -14
  33. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  34. package/fesm2022/fundamental-ngx-core-datetime.mjs +32 -31
  35. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  36. package/fesm2022/fundamental-ngx-core-dialog.mjs +116 -89
  37. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  38. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +100 -77
  39. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  40. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +13 -13
  41. package/fesm2022/fundamental-ngx-core-facets.mjs +24 -20
  42. package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
  43. package/fesm2022/fundamental-ngx-core-feed-input.mjs +18 -17
  44. package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
  45. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +22 -22
  46. package/fesm2022/fundamental-ngx-core-file-uploader.mjs +16 -16
  47. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +17 -15
  48. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  49. package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs +7 -7
  50. package/fesm2022/fundamental-ngx-core-form.mjs +74 -74
  51. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  52. package/fesm2022/fundamental-ngx-core-formatted-text.mjs +17 -12
  53. package/fesm2022/fundamental-ngx-core-formatted-text.mjs.map +1 -1
  54. package/fesm2022/fundamental-ngx-core-generic-tag.mjs +19 -13
  55. package/fesm2022/fundamental-ngx-core-generic-tag.mjs.map +1 -1
  56. package/fesm2022/fundamental-ngx-core-grid-list.mjs +56 -51
  57. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  58. package/fesm2022/fundamental-ngx-core-icon.mjs +33 -20
  59. package/fesm2022/fundamental-ngx-core-icon.mjs.map +1 -1
  60. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +42 -31
  61. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  62. package/fesm2022/fundamental-ngx-core-infinite-scroll.mjs +11 -9
  63. package/fesm2022/fundamental-ngx-core-infinite-scroll.mjs.map +1 -1
  64. package/fesm2022/fundamental-ngx-core-info-label.mjs +29 -18
  65. package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
  66. package/fesm2022/fundamental-ngx-core-inline-help.mjs +35 -25
  67. package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
  68. package/fesm2022/fundamental-ngx-core-input-group.mjs +21 -21
  69. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  70. package/fesm2022/fundamental-ngx-core-layout-grid.mjs +40 -27
  71. package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  72. package/fesm2022/fundamental-ngx-core-layout-panel.mjs +41 -37
  73. package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  74. package/fesm2022/fundamental-ngx-core-link.mjs +24 -19
  75. package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
  76. package/fesm2022/fundamental-ngx-core-list.mjs +100 -91
  77. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  78. package/fesm2022/fundamental-ngx-core-menu.mjs +125 -101
  79. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  80. package/fesm2022/fundamental-ngx-core-message-box.mjs +39 -38
  81. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  82. package/fesm2022/fundamental-ngx-core-message-page.mjs +19 -19
  83. package/fesm2022/fundamental-ngx-core-message-strip.mjs +79 -55
  84. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-message-toast.mjs +17 -17
  86. package/fesm2022/fundamental-ngx-core-message-toast.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +21 -20
  88. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-mobile-mode.mjs +3 -3
  90. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +98 -66
  91. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  92. package/fesm2022/fundamental-ngx-core-multi-input.mjs +27 -21
  93. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  94. package/fesm2022/fundamental-ngx-core-nested-list.mjs +46 -43
  95. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  96. package/fesm2022/fundamental-ngx-core-notification.mjs +178 -132
  97. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  98. package/fesm2022/fundamental-ngx-core-object-attribute.mjs +7 -7
  99. package/fesm2022/fundamental-ngx-core-object-identifier.mjs +24 -17
  100. package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
  101. package/fesm2022/fundamental-ngx-core-object-marker.mjs +41 -24
  102. package/fesm2022/fundamental-ngx-core-object-marker.mjs.map +1 -1
  103. package/fesm2022/fundamental-ngx-core-object-number.mjs +33 -21
  104. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  105. package/fesm2022/fundamental-ngx-core-object-status.mjs +41 -26
  106. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  107. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +33 -32
  108. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  109. package/fesm2022/fundamental-ngx-core-pagination.mjs +10 -10
  110. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  111. package/fesm2022/fundamental-ngx-core-panel.mjs +51 -35
  112. package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
  113. package/fesm2022/fundamental-ngx-core-popover.mjs +267 -164
  114. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  115. package/fesm2022/fundamental-ngx-core-product-switch.mjs +46 -32
  116. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  117. package/fesm2022/fundamental-ngx-core-progress-indicator.mjs +7 -7
  118. package/fesm2022/fundamental-ngx-core-quick-view.mjs +47 -44
  119. package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
  120. package/fesm2022/fundamental-ngx-core-radio.mjs +8 -8
  121. package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
  122. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +61 -39
  123. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  124. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +12 -11
  125. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  126. package/fesm2022/fundamental-ngx-core-scroll-spy.mjs +17 -12
  127. package/fesm2022/fundamental-ngx-core-scroll-spy.mjs.map +1 -1
  128. package/fesm2022/fundamental-ngx-core-scrollbar.mjs +14 -12
  129. package/fesm2022/fundamental-ngx-core-scrollbar.mjs.map +1 -1
  130. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +9 -8
  131. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  132. package/fesm2022/fundamental-ngx-core-select.mjs +22 -21
  133. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  134. package/fesm2022/fundamental-ngx-core-settings.mjs +70 -60
  135. package/fesm2022/fundamental-ngx-core-settings.mjs.map +1 -1
  136. package/fesm2022/fundamental-ngx-core-shared.mjs +3 -3
  137. package/fesm2022/fundamental-ngx-core-shellbar.mjs +77 -63
  138. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  139. package/fesm2022/fundamental-ngx-core-side-navigation.mjs +13 -13
  140. package/fesm2022/fundamental-ngx-core-skeleton.mjs +24 -16
  141. package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
  142. package/fesm2022/fundamental-ngx-core-slider.mjs +15 -13
  143. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  144. package/fesm2022/fundamental-ngx-core-split-button.mjs +10 -10
  145. package/fesm2022/fundamental-ngx-core-status-indicator.mjs +62 -35
  146. package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  147. package/fesm2022/fundamental-ngx-core-step-input.mjs +11 -9
  148. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  149. package/fesm2022/fundamental-ngx-core-switch.mjs +8 -8
  150. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  151. package/fesm2022/fundamental-ngx-core-table.mjs +51 -50
  152. package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
  153. package/fesm2022/fundamental-ngx-core-tabs.mjs +56 -55
  154. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  155. package/fesm2022/fundamental-ngx-core-text.mjs +29 -19
  156. package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
  157. package/fesm2022/fundamental-ngx-core-theming.mjs +7 -7
  158. package/fesm2022/fundamental-ngx-core-tile.mjs +171 -136
  159. package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
  160. package/fesm2022/fundamental-ngx-core-time-picker.mjs +9 -8
  161. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  162. package/fesm2022/fundamental-ngx-core-time.mjs +16 -13
  163. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  164. package/fesm2022/fundamental-ngx-core-timeline.mjs +43 -43
  165. package/fesm2022/fundamental-ngx-core-title.mjs +12 -10
  166. package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
  167. package/fesm2022/fundamental-ngx-core-token.mjs +33 -24
  168. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  169. package/fesm2022/fundamental-ngx-core-toolbar.mjs +35 -32
  170. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  171. package/fesm2022/fundamental-ngx-core-tree.mjs +41 -36
  172. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  173. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +37 -37
  174. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  175. package/fesm2022/fundamental-ngx-core-user-menu.mjs +108 -84
  176. package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
  177. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +20 -17
  178. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  179. package/fesm2022/fundamental-ngx-core-wizard.mjs +41 -32
  180. package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
  181. package/fesm2022/fundamental-ngx-core.mjs +4 -4
  182. package/package.json +11 -10
  183. package/schematics/add-styles/index.js +3 -3
  184. package/schematics/add-styles/index.js.map +1 -1
  185. package/schematics/add-theming/index.js +1 -1
  186. package/schematics/add-theming/index.js.map +1 -1
  187. package/schematics/package.json +7 -0
  188. package/schematics/tsconfig.json +12 -6
  189. package/schematics/tsconfig.spec.json +2 -0
  190. package/schematics/utils/calls-providers-function.js +34 -1
  191. package/schematics/utils/calls-providers-function.js.map +1 -1
  192. package/schematics/utils/ng-module-utils.js +34 -1
  193. package/schematics/utils/ng-module-utils.js.map +1 -1
  194. package/types/fundamental-ngx-core-avatar-group-legacy.d.ts +1 -0
  195. package/types/fundamental-ngx-core-carousel.d.ts +2 -0
  196. package/types/fundamental-ngx-core-list.d.ts +2 -2
  197. package/types/fundamental-ngx-core-menu.d.ts +4 -4
  198. package/types/fundamental-ngx-core-notification.d.ts +0 -2
  199. package/types/fundamental-ngx-core-popover.d.ts +8 -6
  200. package/types/fundamental-ngx-core-product-switch.d.ts +6 -3
  201. package/types/fundamental-ngx-core-wizard.d.ts +4 -1
@@ -435,10 +435,10 @@ class TimeColumnComponent {
435
435
  }
436
436
  this._changeDetRef.markForCheck();
437
437
  }
438
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TimeColumnComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
439
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: TimeColumnComponent, isStandalone: true, selector: "fd-time-column", inputs: { rows: "rows", spinners: "spinners", activeValue: "activeValue", active: "active", meridian: "meridian", id: "id", timeConfig: "timeConfig", columnTranslationsPreset: "columnTranslationsPreset", offset: "offset", elementsAtOnce: "elementsAtOnce" }, outputs: { activeValueChange: "activeValueChange", activeStateChange: "activeStateChange" }, host: { listeners: { "click": "onItemClick()", "keydown": "keyDownHandler($event)", "wheel": "mouseScrollHandler($event)" }, properties: { "class.fd-time__col--period": "this.meridian" }, classAttribute: "fd-time__col" }, viewQueries: [{ propertyName: "carousel", first: true, predicate: CarouselDirective, descendants: true }, { propertyName: "indicator", first: true, predicate: ["indicator"], descendants: true, read: ElementRef }, { propertyName: "items", predicate: CarouselItemDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label class=\"fd-time__slider-label\">{{\n timeConfig?.label || (internalTranslationConfig && (internalTranslationConfig.label | fdTranslate)())\n}}</label>\n@if (active && spinners) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-up-arrow\"\n tabindex=\"-1\"\n [title]=\"\n timeConfig?.decreaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.decreaseLabel | fdTranslate)())\n \"\n [ariaLabel]=\"\n timeConfig?.decreaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.decreaseLabel | fdTranslate)())\n \"\n (keyup)=\"spinnerButtonKeyupHandle($event, true)\"\n (click)=\"scrollUp($event)\"\n ></button>\n}\n<div\n class=\"fd-time__wrapper\"\n [class.fd-time__wrapper--active]=\"active\"\n [class.fd-time__wrapper--meridian]=\"meridian\"\n [style.height.px]=\"active ? wrapperHeight : ''\"\n>\n <ul\n class=\"fd-time__list\"\n [class.fd-time-column-custom-hidden]=\"!active\"\n [config]=\"config\"\n (click)=\"indicator.focus()\"\n (activeChange)=\"activeChangedHandle($event)\"\n (dragStateChange)=\"handleDrag($event)\"\n fdCarousel\n >\n @for (row of rows; track row.value; let index = $index) {\n <li\n class=\"fd-time__item\"\n fdCarouselItem\n #item=\"fdCarouselItem\"\n [id]=\"_createColumnItemIdByIndex(index)\"\n [attr.data-displayed-value]=\"row.value\"\n [value]=\"row\"\n >\n <span class=\"fd-time__unit\" role=\"button\" [attr.aria-label]=\"row.label\" (click)=\"pick(item, index)\">\n {{ row.label }}\n </span>\n </li>\n }\n </ul>\n <div\n class=\"fd-time__current-indicator\"\n #indicator\n tabindex=\"0\"\n role=\"listbox\"\n [attr.id]=\"currentIndicatorId\"\n [class.fd-time-column-custom-hidden]=\"!active\"\n [attr.aria-labelledby]=\"currentIndicatorValueId\"\n [attr.aria-description]=\"\n timeConfig?.navigationInstruction ||\n (internalTranslationConfig && (internalTranslationConfig.navigationInstruction | fdTranslate)())\n \"\n (focus)=\"_onFocusIndicator()\"\n >\n <span\n class=\"fd-time-column-custom-hidden\"\n aria-atomic=\"true\"\n [attr.aria-hidden]=\"!active\"\n [attr.id]=\"currentIndicatorValueId\"\n [class.fd-time-column-custom-hidden]=\"active\"\n >\n {{ activeValue?.label }}\n {{\n timeConfig?.label ||\n (internalTranslationConfig && (internalTranslationConfig.fullLabel | fdTranslate)())\n }}\n </span>\n </div>\n @if (!active) {\n <span class=\"fd-time__item fd-time__item--collapsed\">\n {{ activeValue?.label }}\n </span>\n }\n</div>\n@if (active && spinners) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-down-arrow\"\n tabindex=\"-1\"\n [title]=\"\n timeConfig?.increaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.increaseLabel | fdTranslate)())\n \"\n [ariaLabel]=\"\n timeConfig?.increaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.increaseLabel | fdTranslate)())\n \"\n (keyup)=\"spinnerButtonKeyupHandle($event)\"\n (click)=\"scrollDown()\"\n ></button>\n}\n", styles: [".fd-time__col .fd-carousel{transition:all .2s ease-in}.fd-time__list{overflow:visible}.fd-time-column-custom-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.fd-time__current-indicator{pointer-events:none}.fd-time__current-indicator:focus{outline:none}.fd-time--compact .fd-time__wrapper--meridian .fd-time__item:last-child.fd-time__item--collapsed,.fd-time .fd-time__wrapper--meridian .fd-time__item:last-child.fd-time__item--collapsed{margin-bottom:0;margin-top:0}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }, { kind: "directive", type: CarouselDirective, selector: "[fdCarousel]", inputs: ["config", "active"], outputs: ["activeChange", "dragStateChange"] }, { kind: "directive", type: CarouselItemDirective, selector: "[fd-carousel-item], [fdCarouselItem]", inputs: ["value", "initialHeight", "initialWidth", "id"], exportAs: ["fdCarouselItem"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
438
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TimeColumnComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
439
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: TimeColumnComponent, isStandalone: true, selector: "fd-time-column", inputs: { rows: "rows", spinners: "spinners", activeValue: "activeValue", active: "active", meridian: "meridian", id: "id", timeConfig: "timeConfig", columnTranslationsPreset: "columnTranslationsPreset", offset: "offset", elementsAtOnce: "elementsAtOnce" }, outputs: { activeValueChange: "activeValueChange", activeStateChange: "activeStateChange" }, host: { listeners: { "click": "onItemClick()", "keydown": "keyDownHandler($event)", "wheel": "mouseScrollHandler($event)" }, properties: { "class.fd-time__col--period": "this.meridian" }, classAttribute: "fd-time__col" }, viewQueries: [{ propertyName: "carousel", first: true, predicate: CarouselDirective, descendants: true }, { propertyName: "indicator", first: true, predicate: ["indicator"], descendants: true, read: ElementRef }, { propertyName: "items", predicate: CarouselItemDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label class=\"fd-time__slider-label\">{{\n timeConfig?.label || (internalTranslationConfig && (internalTranslationConfig.label | fdTranslate)())\n}}</label>\n@if (active && spinners) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-up-arrow\"\n tabindex=\"-1\"\n [title]=\"\n timeConfig?.decreaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.decreaseLabel | fdTranslate)())\n \"\n [ariaLabel]=\"\n timeConfig?.decreaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.decreaseLabel | fdTranslate)())\n \"\n (keyup)=\"spinnerButtonKeyupHandle($event, true)\"\n (click)=\"scrollUp($event)\"\n ></button>\n}\n<div\n class=\"fd-time__wrapper\"\n [class.fd-time__wrapper--active]=\"active\"\n [class.fd-time__wrapper--meridian]=\"meridian\"\n [style.height.px]=\"active ? wrapperHeight : ''\"\n>\n <ul\n class=\"fd-time__list\"\n [class.fd-time-column-custom-hidden]=\"!active\"\n [config]=\"config\"\n (click)=\"indicator.focus()\"\n (activeChange)=\"activeChangedHandle($event)\"\n (dragStateChange)=\"handleDrag($event)\"\n fdCarousel\n >\n @for (row of rows; track row.value; let index = $index) {\n <li\n class=\"fd-time__item\"\n fdCarouselItem\n #item=\"fdCarouselItem\"\n [id]=\"_createColumnItemIdByIndex(index)\"\n [attr.data-displayed-value]=\"row.value\"\n [value]=\"row\"\n >\n <span class=\"fd-time__unit\" role=\"button\" [attr.aria-label]=\"row.label\" (click)=\"pick(item, index)\">\n {{ row.label }}\n </span>\n </li>\n }\n </ul>\n <div\n class=\"fd-time__current-indicator\"\n #indicator\n tabindex=\"0\"\n role=\"listbox\"\n [attr.id]=\"currentIndicatorId\"\n [class.fd-time-column-custom-hidden]=\"!active\"\n [attr.aria-labelledby]=\"currentIndicatorValueId\"\n [attr.aria-description]=\"\n timeConfig?.navigationInstruction ||\n (internalTranslationConfig && (internalTranslationConfig.navigationInstruction | fdTranslate)())\n \"\n (focus)=\"_onFocusIndicator()\"\n >\n <span\n class=\"fd-time-column-custom-hidden\"\n aria-atomic=\"true\"\n [attr.aria-hidden]=\"!active\"\n [attr.id]=\"currentIndicatorValueId\"\n [class.fd-time-column-custom-hidden]=\"active\"\n >\n {{ activeValue?.label }}\n {{\n timeConfig?.label ||\n (internalTranslationConfig && (internalTranslationConfig.fullLabel | fdTranslate)())\n }}\n </span>\n </div>\n @if (!active) {\n <span class=\"fd-time__item fd-time__item--collapsed\">\n {{ activeValue?.label }}\n </span>\n }\n</div>\n@if (active && spinners) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-down-arrow\"\n tabindex=\"-1\"\n [title]=\"\n timeConfig?.increaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.increaseLabel | fdTranslate)())\n \"\n [ariaLabel]=\"\n timeConfig?.increaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.increaseLabel | fdTranslate)())\n \"\n (keyup)=\"spinnerButtonKeyupHandle($event)\"\n (click)=\"scrollDown()\"\n ></button>\n}\n", styles: [".fd-time__col .fd-carousel{transition:all .2s ease-in}.fd-time__list{overflow:visible}.fd-time-column-custom-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.fd-time__current-indicator{pointer-events:none}.fd-time__current-indicator:focus{outline:none}.fd-time--compact .fd-time__wrapper--meridian .fd-time__item:last-child.fd-time__item--collapsed,.fd-time .fd-time__wrapper--meridian .fd-time__item:last-child.fd-time__item--collapsed{margin-bottom:0;margin-top:0}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }, { kind: "directive", type: CarouselDirective, selector: "[fdCarousel]", inputs: ["config", "active"], outputs: ["activeChange", "dragStateChange"] }, { kind: "directive", type: CarouselItemDirective, selector: "[fd-carousel-item], [fdCarouselItem]", inputs: ["value", "initialHeight", "initialWidth", "id"], exportAs: ["fdCarouselItem"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
440
440
  }
441
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TimeColumnComponent, decorators: [{
441
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TimeColumnComponent, decorators: [{
442
442
  type: Component,
443
443
  args: [{ selector: 'fd-time-column', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
444
444
  class: 'fd-time__col'
@@ -541,7 +541,8 @@ class TimeComponent {
541
541
  * The interval between selectable minutes (e.g., 1 for every minute, 5 for 5-minute intervals, 15 for 15-minute intervals).
542
542
  * Defaults to 1 (every minute).
543
543
  */
544
- this.minuteStep = input(1, ...(ngDevMode ? [{ debugName: "minuteStep" }] : []));
544
+ this.minuteStep = input(1, /* @ts-ignore */
545
+ ...(ngDevMode ? [{ debugName: "minuteStep" }] : /* istanbul ignore next */ []));
545
546
  /** Active column view to iterate with */
546
547
  this.activeView = 'hour';
547
548
  /**
@@ -565,7 +566,8 @@ class TimeComponent {
565
566
  */
566
567
  this.meridianViewItems = [];
567
568
  /** Offset computed signal */
568
- this.offset = computed(() => Math.floor(this.elementsAtOnce / 2), ...(ngDevMode ? [{ debugName: "offset" }] : []));
569
+ this.offset = computed(() => Math.floor(this.elementsAtOnce / 2), /* @ts-ignore */
570
+ ...(ngDevMode ? [{ debugName: "offset" }] : /* istanbul ignore next */ []));
569
571
  /** Offset for minutes column, adjusted for minuteStep */
570
572
  this.minuteOffset = computed(() => {
571
573
  const step = this.minuteStep();
@@ -574,7 +576,8 @@ class TimeComponent {
574
576
  // Ensure effective count is odd for proper centering (need equal items above and below focused item)
575
577
  const adjustedElementsAtOnce = effectiveElementsAtOnce % 2 === 0 ? effectiveElementsAtOnce - 1 : effectiveElementsAtOnce;
576
578
  return Math.floor(adjustedElementsAtOnce / 2);
577
- }, ...(ngDevMode ? [{ debugName: "minuteOffset" }] : []));
579
+ }, /* @ts-ignore */
580
+ ...(ngDevMode ? [{ debugName: "minuteOffset" }] : /* istanbul ignore next */ []));
578
581
  /** @hidden */
579
582
  this._rtlService = inject(RtlService, { optional: true });
580
583
  /** @hidden */
@@ -866,8 +869,8 @@ class TimeComponent {
866
869
  _getDefaultValue() {
867
870
  return this._dateTimeAdapter.today();
868
871
  }
869
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TimeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.DatetimeAdapter, optional: true }, { token: i2.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component }); }
870
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: TimeComponent, isStandalone: true, selector: "fd-time", inputs: { meridian: { classPropertyName: "meridian", publicName: "meridian", isSignal: false, isRequired: false, transformFunction: null }, validate: { classPropertyName: "validate", publicName: "validate", isSignal: false, isRequired: false, transformFunction: null }, keepTwoDigits: { classPropertyName: "keepTwoDigits", publicName: "keepTwoDigits", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, displaySeconds: { classPropertyName: "displaySeconds", publicName: "displaySeconds", isSignal: false, isRequired: false, transformFunction: null }, displayMinutes: { classPropertyName: "displayMinutes", publicName: "displayMinutes", isSignal: false, isRequired: false, transformFunction: null }, displayHours: { classPropertyName: "displayHours", publicName: "displayHours", isSignal: false, isRequired: false, transformFunction: null }, tablet: { classPropertyName: "tablet", publicName: "tablet", isSignal: false, isRequired: false, transformFunction: null }, elementsAtOnce: { classPropertyName: "elementsAtOnce", publicName: "elementsAtOnce", isSignal: false, isRequired: false, transformFunction: null }, time: { classPropertyName: "time", publicName: "time", isSignal: false, isRequired: false, transformFunction: null }, spinnerButtons: { classPropertyName: "spinnerButtons", publicName: "spinnerButtons", isSignal: false, isRequired: false, transformFunction: null }, minuteStep: { classPropertyName: "minuteStep", publicName: "minuteStep", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "focusout": "_focusOut($event)", "blur": "onTouched()" } }, providers: [
872
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TimeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.DatetimeAdapter, optional: true }, { token: i2.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component }); }
873
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: TimeComponent, isStandalone: true, selector: "fd-time", inputs: { meridian: { classPropertyName: "meridian", publicName: "meridian", isSignal: false, isRequired: false, transformFunction: null }, validate: { classPropertyName: "validate", publicName: "validate", isSignal: false, isRequired: false, transformFunction: null }, keepTwoDigits: { classPropertyName: "keepTwoDigits", publicName: "keepTwoDigits", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, displaySeconds: { classPropertyName: "displaySeconds", publicName: "displaySeconds", isSignal: false, isRequired: false, transformFunction: null }, displayMinutes: { classPropertyName: "displayMinutes", publicName: "displayMinutes", isSignal: false, isRequired: false, transformFunction: null }, displayHours: { classPropertyName: "displayHours", publicName: "displayHours", isSignal: false, isRequired: false, transformFunction: null }, tablet: { classPropertyName: "tablet", publicName: "tablet", isSignal: false, isRequired: false, transformFunction: null }, elementsAtOnce: { classPropertyName: "elementsAtOnce", publicName: "elementsAtOnce", isSignal: false, isRequired: false, transformFunction: null }, time: { classPropertyName: "time", publicName: "time", isSignal: false, isRequired: false, transformFunction: null }, spinnerButtons: { classPropertyName: "spinnerButtons", publicName: "spinnerButtons", isSignal: false, isRequired: false, transformFunction: null }, minuteStep: { classPropertyName: "minuteStep", publicName: "minuteStep", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "focusout": "_focusOut($event)", "blur": "onTouched()" } }, providers: [
871
874
  {
872
875
  provide: NG_VALUE_ACCESSOR,
873
876
  useExisting: forwardRef(() => TimeComponent),
@@ -876,7 +879,7 @@ class TimeComponent {
876
879
  contentDensityObserverProviders()
877
880
  ], viewQueries: [{ propertyName: "columns", predicate: TimeColumnComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"fd-time\"\n [class.is-compact]=\"_contentDensityObserver.isCompactSignal()\"\n (keydown)=\"handleKeyDownEvent($event)\"\n [class.fd-time--tablet]=\"tablet\"\n [attr.aria-label]=\"('coreTime.componentAriaName' | fdTranslate)()\"\n>\n <fd-time-column\n [active]=\"isActive('hour')\"\n [rows]=\"hourViewItems\"\n [offset]=\"offset()\"\n [elementsAtOnce]=\"elementsAtOnce\"\n [activeValue]=\"activeHourViewItem\"\n columnTranslationsPreset=\"hours\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleHourChange($event.value.value)\"\n (activeStateChange)=\"changeActive('hour')\"\n ></fd-time-column>\n @if (displayMinutes) {\n <fd-time-column\n [active]=\"isActive('minute')\"\n [rows]=\"minuteViewItems\"\n [offset]=\"minuteOffset()\"\n [elementsAtOnce]=\"elementsAtOnce\"\n [activeValue]=\"activeMinuteViewItem\"\n columnTranslationsPreset=\"minutes\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleMinuteChange($event.value.value)\"\n (activeStateChange)=\"changeActive('minute')\"\n ></fd-time-column>\n }\n @if (displaySeconds) {\n <fd-time-column\n [active]=\"isActive('second')\"\n [rows]=\"secondViewItems\"\n [offset]=\"offset()\"\n [elementsAtOnce]=\"elementsAtOnce\"\n [activeValue]=\"activeSecondViewItem\"\n columnTranslationsPreset=\"seconds\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleSecondChange($event.value.value)\"\n (activeStateChange)=\"changeActive('second')\"\n ></fd-time-column>\n }\n @if (meridian) {\n <fd-time-column\n [active]=\"isActive('meridian')\"\n [rows]=\"meridianViewItems\"\n [activeValue]=\"activeMeridianViewItem\"\n [offset]=\"0\"\n [elementsAtOnce]=\"elementsAtOnce\"\n columnTranslationsPreset=\"period\"\n [meridian]=\"true\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleMeridianChange($event.value.value)\"\n (activeStateChange)=\"changeActive('meridian')\"\n ></fd-time-column>\n }\n</div>\n", styles: [".fd-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--sapField_BackgroundStyle,var(--sapField_BackgroundStyle));background-color:var(--sapField_Background,var(--sapField_Background));border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);-webkit-box-shadow:var(--sapField_Shadow);box-shadow:var(--sapField_Shadow);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdInput_Height,var(--sapElement_Height));line-height:normal;margin-block:0;margin-block:var(--fdInput_Field_Margin_Block,.25rem);margin-inline:0;min-height:var(--fdInput_Height,var(--sapElement_Height));min-width:2.75rem;outline:none;overflow:hidden;padding-block:0;padding-inline:0;padding-inline:var(--fdInput_Field_Padding_Inline,.625rem);text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input:after,.fd-input:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-input::-webkit-input-placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input::-moz-placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input:-ms-input-placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input::-ms-input-placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input[dir=rtl]::-webkit-input-placeholder,[dir=rtl] .fd-input::-webkit-input-placeholder{text-indent:.125rem}.fd-input[dir=rtl]::-moz-placeholder,[dir=rtl] .fd-input::-moz-placeholder{text-indent:.125rem}.fd-input[dir=rtl]:-ms-input-placeholder,[dir=rtl] .fd-input:-ms-input-placeholder{text-indent:.125rem}.fd-input[dir=rtl]::-ms-input-placeholder,[dir=rtl] .fd-input::-ms-input-placeholder{text-indent:.125rem}.fd-input[dir=rtl]::placeholder,[dir=rtl] .fd-input::placeholder{text-indent:.125rem}.fd-input::-moz-selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::-ms-clear{display:none}.fd-input.is-hover,.fd-input:hover{background:var(--sapField_Hover_BackgroundStyle,var(--sapField_Hover_BackgroundStyle));background-color:var(--sapField_Hover_Background,var(--sapField_Hover_Background));border-color:var(--sapField_Hover_BorderColor);-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input.is-focus,.fd-input:focus{background:var(--sapField_Focus_Background,var(--sapField_Focus_Background));-webkit-box-shadow:none;box-shadow:none;outline:var(--fdInput_Outline_Color) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth);outline-offset:var(--fdInput_Outline_Offset);z-index:5}.fd-input[type=search]::-webkit-search-cancel-button,.fd-input[type=search]::-webkit-search-decoration,.fd-input[type=search]::-webkit-search-results-button,.fd-input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none;appearance:none}.fd-input[aria-expanded=false]{z-index:0}.fd-input.is-expanded,.fd-input[aria-expanded=true]{z-index:4}.fd-input[class*=-compact],.fd-input[class*=-condensed],[class*=-compact] .fd-input:not([class*=-cozy]),[class*=-condensed] .fd-input:not([class*=-cozy]){-webkit-box-sizing:border-box;box-sizing:border-box;height:var(--fdInput_Compact_Height,var(--sapElement_Compact_Height));margin-block:var(--fdInput_Field_Compact_Margin_Block,.1875rem);margin-inline:0;min-height:var(--fdInput_Compact_Height,var(--sapElement_Compact_Height));min-width:var(--fdInput_Field_Compact_Min_Width,2rem);padding-block:0;padding-inline:var(--fdInput_Field_Compact_Padding,.5rem)}.fd-input--no-number-spinner{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.fd-input--no-number-spinner::-webkit-inner-spin-button,.fd-input--no-number-spinner::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin-block:0;margin-inline:0}.fd-input.right-align{text-align:right}.fd-input__sr-only{position:absolute;clip:rect(0 0 0 0);border:0;height:1px;margin-block:-1px;margin-inline:-1px;overflow:hidden;padding-block:0;padding-inline:0;white-space:nowrap;width:1px}.fd-input.is-success{background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle);-webkit-box-shadow:var(--sapField_SuccessShadow);box-shadow:var(--sapField_SuccessShadow)}.fd-input.is-success.is-hover,.fd-input.is-success:hover{background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input.is-success.is-focus,.fd-input.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input.is-success.is-focus.is-hover,.fd-input.is-success.is-focus:hover,.fd-input.is-success:focus.is-hover,.fd-input.is-success:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-success.is-expanded,.fd-input.is-success[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Success_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-error{background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle);-webkit-box-shadow:var(--sapField_InvalidShadow);box-shadow:var(--sapField_InvalidShadow)}.fd-input.is-error.is-hover,.fd-input.is-error:hover{background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input.is-error.is-focus,.fd-input.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input.is-error.is-focus.is-hover,.fd-input.is-error.is-focus:hover,.fd-input.is-error:focus.is-hover,.fd-input.is-error:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-error.is-expanded,.fd-input.is-error[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Error_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-warning{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle);-webkit-box-shadow:var(--sapField_WarningShadow);box-shadow:var(--sapField_WarningShadow)}.fd-input.is-warning.is-hover,.fd-input.is-warning:hover{background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-warning.is-focus.is-hover,.fd-input.is-warning.is-focus:hover,.fd-input.is-warning:focus.is-hover,.fd-input.is-warning:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-warning.is-expanded,.fd-input.is-warning[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Warning_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-alert.is-hover,.fd-input.is-alert:hover{background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-alert.is-focus.is-hover,.fd-input.is-alert.is-focus:hover,.fd-input.is-alert:focus.is-hover,.fd-input.is-alert:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-alert.is-expanded,.fd-input.is-alert[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Warning_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-information{background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle);-webkit-box-shadow:var(--sapField_InformationShadow);box-shadow:var(--sapField_InformationShadow)}.fd-input.is-information.is-hover,.fd-input.is-information:hover{background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input.is-information.is-focus,.fd-input.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input.is-information.is-focus.is-hover,.fd-input.is-information.is-focus:hover,.fd-input.is-information:focus.is-hover,.fd-input.is-information:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-information.is-expanded,.fd-input.is-information[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Information_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-alert,.fd-input.is-error,.fd-input.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::-webkit-input-placeholder,.fd-input.is-error::-webkit-input-placeholder,.fd-input.is-warning::-webkit-input-placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::-moz-placeholder,.fd-input.is-error::-moz-placeholder,.fd-input.is-warning::-moz-placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert:-ms-input-placeholder,.fd-input.is-error:-ms-input-placeholder,.fd-input.is-warning:-ms-input-placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::-ms-input-placeholder,.fd-input.is-error::-ms-input-placeholder,.fd-input.is-warning::-ms-input-placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::placeholder,.fd-input.is-error::placeholder,.fd-input.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus,.fd-input.is-error.is-focus,.fd-input.is-error:focus,.fd-input.is-information.is-focus,.fd-input.is-information:focus,.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input.is-error::-webkit-input-placeholder{color:var(--sapField_TextColor)}.fd-input.is-error::-moz-placeholder{color:var(--sapField_TextColor)}.fd-input.is-error:-ms-input-placeholder{color:var(--sapField_TextColor)}.fd-input.is-error::-ms-input-placeholder{color:var(--sapField_TextColor)}.fd-input.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input.is-disabled,.fd-input:disabled,.fd-input[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input.is-disabled::-webkit-input-placeholder,.fd-input:disabled::-webkit-input-placeholder,.fd-input[aria-disabled=true]::-webkit-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-disabled::-moz-placeholder,.fd-input:disabled::-moz-placeholder,.fd-input[aria-disabled=true]::-moz-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-disabled:-ms-input-placeholder,.fd-input:disabled:-ms-input-placeholder,.fd-input[aria-disabled=true]:-ms-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-disabled::-ms-input-placeholder,.fd-input:disabled::-ms-input-placeholder,.fd-input[aria-disabled=true]::-ms-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-disabled::placeholder,.fd-input:disabled::placeholder,.fd-input[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly,.fd-input[aria-readonly=true],.fd-input[readonly]{--fdInput_Outline_Offset:-.25rem;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);-webkit-box-shadow:none;box-shadow:none}.fd-input.is-readonly::-webkit-input-placeholder,.fd-input[aria-readonly=true]::-webkit-input-placeholder,.fd-input[readonly]::-webkit-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly::-moz-placeholder,.fd-input[aria-readonly=true]::-moz-placeholder,.fd-input[readonly]::-moz-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly:-ms-input-placeholder,.fd-input[aria-readonly=true]:-ms-input-placeholder,.fd-input[readonly]:-ms-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly::-ms-input-placeholder,.fd-input[aria-readonly=true]::-ms-input-placeholder,.fd-input[readonly]::-ms-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly::placeholder,.fd-input[aria-readonly=true]::placeholder,.fd-input[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly.is-focus,.fd-input.is-readonly.is-hover,.fd-input.is-readonly:focus,.fd-input.is-readonly:hover,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true].is-hover,.fd-input[aria-readonly=true]:focus,.fd-input[aria-readonly=true]:hover,.fd-input[readonly].is-focus,.fd-input[readonly].is-hover,.fd-input[readonly]:focus,.fd-input[readonly]:hover{--fdInput_Outline_Offset:-.25rem;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);-webkit-box-shadow:none;box-shadow:none}.fd-input.is-readonly.is-focus,.fd-input.is-readonly:focus,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true]:focus,.fd-input[readonly].is-focus,.fd-input[readonly]:focus{z-index:5}.fd-time{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;--fdTime_Item_Height:2.875rem;--fdTime_Dropdown_Padding:1rem;--fdTime_Wrapper_Height:20.125rem;--fdTime_Unit_Line_Height:2.75rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-block:var(--fdTime_Dropdown_Padding);padding-inline:var(--fdTime_Dropdown_Padding)}.fd-time:after,.fd-time:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__col{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.fd-time__col:after,.fd-time__col:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__col:last-child{-webkit-margin-end:0;margin-inline-end:0}.fd-time__current-indicator{border:0;border:.0625rem solid var(--sapList_SelectionBorderColor);border-radius:var(--sapButton_BorderCornerRadius);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdTime_Item_Height);left:0;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:3rem}.fd-time__current-indicator:after,.fd-time__current-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__wrapper{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:3rem}.fd-time__wrapper:after,.fd-time__wrapper:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__wrapper--active{height:var(--fdTime_Wrapper_Height);max-height:var(--fdTime_Wrapper_Height);-webkit-box-pack:initial;-ms-flex-pack:initial;justify-content:normal}.fd-time__wrapper--meridian .fd-time__item:first-child{margin-top:calc(var(--fdTime_Item_Height)*3)}.fd-time__wrapper--meridian .fd-time__item:last-child{-webkit-margin-after:calc(var(--fdTime_Item_Height)*3);margin-block-end:calc(var(--fdTime_Item_Height)*3)}.fd-time__wrapper--meridian .fd-time__list{height:var(--fdTime_Wrapper_Height)}.fd-time__item{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--sapLegend_WorkingBackground);border:.0625rem solid var(--sapList_Background);border-radius:var(--sapButton_BorderCornerRadius);cursor:default;height:var(--fdTime_Item_Height);min-height:var(--fdTime_Item_Height);text-shadow:var(--fdTime_Text_Shadow);width:3rem}.fd-time__item:after,.fd-time__item:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__item:hover{background-color:var(--sapList_Hover_Background)}.fd-time__item:active{background-color:var(--sapContent_Selected_Background);border-color:transparent;color:var(--sapContent_Selected_TextColor)}.fd-time__item--current{background-color:var(--sapList_Background);border-color:var(--sapList_SelectionBorderColor)}.fd-time__item--current:hover{background-color:var(--sapList_Hover_Background)}.fd-time__item--collapsed,.fd-time__item--current:active{background-color:var(--sapContent_Selected_Background);border-color:transparent;color:var(--sapContent_Selected_TextColor)}.fd-time__item--collapsed:hover{background-color:var(--sapContent_Selected_Hover_Background)}.fd-time__item--hidden{visibility:hidden}.fd-time__unit{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:inherit;display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;line-height:var(--fdTime_Unit_Line_Height);margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;width:100%;z-index:2}.fd-time__unit:after,.fd-time__unit:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__list{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-ms-overflow-style:none;overflow:hidden;scrollbar-width:none}.fd-time__list:after,.fd-time__list:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__list::-webkit-scrollbar{display:none}.fd-time__slider-label{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;max-width:100%;position:relative;text-overflow:ellipsis;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;-webkit-margin-end:.5rem;cursor:text;margin-inline-end:.5rem;-ms-flex-item-align:start;align-self:flex-start;font-size:var(--sapFontSmallSize);height:2rem;line-height:2rem;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:clip;white-space:nowrap;-ms-flex-item-align:auto;align-self:auto}.fd-time__slider-label:after,.fd-time__slider-label:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__control{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-time__control:after,.fd-time__control:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time--tablet{--fdTime_Dropdown_Padding:.5rem;--fdTime_Item_Height:2.875rem}.fd-time[class*=-compact],.fd-time[class*=-condensed],[class*=-compact] .fd-time:not([class*=-cozy]),[class*=-condensed] .fd-time:not([class*=-cozy]){--fdTime_Dropdown_Padding:.5rem;--fdTime_Item_Height:2rem;--fdTime_Wrapper_Height:14rem;--fdTime_Unit_Line_Height:1.875rem}.fd-time--scrollable .fd-time__list{overflow:auto}.fd-time__list{touch-action:pan-x;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}\n/*! Bundled license information:\n\nfundamental-styles/dist/time.css:\n (*!\n * Fundamental Library Styles v0.41.8\n * Copyright (c) 2026 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"], dependencies: [{ kind: "component", type: TimeColumnComponent, selector: "fd-time-column", inputs: ["rows", "spinners", "activeValue", "active", "meridian", "id", "timeConfig", "columnTranslationsPreset", "offset", "elementsAtOnce"], outputs: ["activeValueChange", "activeStateChange"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
878
881
  }
879
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TimeComponent, decorators: [{
882
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TimeComponent, decorators: [{
880
883
  type: Component,
881
884
  args: [{ selector: 'fd-time', host: {
882
885
  '(focusout)': '_focusOut($event)',
@@ -923,11 +926,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
923
926
  * Use direct imports of `TimeComponent`, `TimeColumnComponent`
924
927
  */
925
928
  class TimeModule {
926
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
927
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.0", ngImport: i0, type: TimeModule, imports: [TimeComponent, TimeColumnComponent], exports: [TimeComponent, TimeColumnComponent] }); }
928
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TimeModule, imports: [TimeComponent, TimeColumnComponent] }); }
929
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
930
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: TimeModule, imports: [TimeComponent, TimeColumnComponent], exports: [TimeComponent, TimeColumnComponent] }); }
931
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TimeModule, imports: [TimeComponent, TimeColumnComponent] }); }
929
932
  }
930
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TimeModule, decorators: [{
933
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TimeModule, decorators: [{
931
934
  type: NgModule,
932
935
  args: [{
933
936
  imports: [TimeComponent, TimeColumnComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-time.mjs","sources":["../../../../libs/core/time/time-column/time-column.component.ts","../../../../libs/core/time/time-column/time-column.component.html","../../../../libs/core/time/errors.ts","../../../../libs/core/time/time.component.ts","../../../../libs/core/time/time.component.html","../../../../libs/core/time/time.module.ts","../../../../libs/core/time/fundamental-ngx-core-time.ts"],"sourcesContent":["import { DOWN_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { BehaviorSubject, Subject, Subscription, combineLatest } from 'rxjs';\nimport { buffer, debounceTime, filter, map, tap } from 'rxjs/operators';\n\nimport { KeyUtil, resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { CarouselConfig, CarouselDirective, CarouselItemDirective, PanEndOutput } from '@fundamental-ngx/core/carousel';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SelectableViewItem } from '../models';\nimport { TimeColumnConfig } from './time-column-config';\n\nlet timeColumnUniqueId = 0;\n\nexport interface TimeColumnItemOutput<T> {\n value: T;\n after?: boolean;\n}\n\n@Component({\n selector: 'fd-time-column',\n templateUrl: './time-column.component.html',\n styleUrl: './time-column.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'fd-time__col'\n },\n imports: [ButtonComponent, CarouselDirective, CarouselItemDirective, FdTranslatePipe]\n})\nexport class TimeColumnComponent<K extends number, T extends SelectableViewItem<K> = SelectableViewItem<K>>\n implements AfterViewInit, OnInit, OnDestroy, OnChanges\n{\n /** items in row */\n @Input()\n rows: T[] = [];\n\n /**\n * @Input When set to false, hides the buttons that increment\n * and decrement the corresponding columns.\n */\n @Input()\n spinners = true;\n\n /** Currently chosen, centered time column item */\n @Input()\n set activeValue(activeItem: Nullable<T>) {\n if (!activeItem) {\n // omitting \"null\" and \"undefined\"\n return;\n }\n if (this._viewInit$.value && this._activeValue !== activeItem) {\n this._pickTime(this._getItem(activeItem), false);\n }\n this._activeValue = activeItem;\n }\n\n get activeValue(): Nullable<T> {\n return this._activeValue;\n }\n\n /** Defines if column is active, it has impact on behavior and visual */\n @Input()\n set active(value: boolean) {\n this._active = value;\n if (value && this._viewInit$.value) {\n this._changeDetRef.detectChanges();\n this._pickTime(this._getItem(this.activeValue), false);\n this._focusIndicator();\n }\n }\n\n get active(): boolean {\n return this._active;\n }\n\n /** Whether time column is meridian */\n @Input()\n @HostBinding('class.fd-time__col--period')\n meridian = false;\n\n /** Id of column, initiated with some default value */\n @Input()\n id: string = 'fd-time-column-' + timeColumnUniqueId++;\n\n /** I18n and labels */\n @Input()\n timeConfig: Nullable<TimeColumnConfig>;\n\n /** I18n and labels */\n @Input()\n columnTranslationsPreset: 'seconds' | 'minutes' | 'hours' | 'period';\n\n /**\n * Offset for carousel directive, active item is always the first one.\n * In case of having more items in carousel than 1, middle element should be active\n */\n @Input()\n set offset(value: number) {\n this._offset$.next(value);\n }\n get offset(): number {\n return this._offset$.value;\n }\n\n /**\n * Quantity of the elements to be shown at the same time in column\n */\n @Input()\n set elementsAtOnce(value: number) {\n this._elementsAtOnce$.next(value);\n }\n\n /** Event emitted, when active item is changed, by carousel */\n @Output()\n activeValueChange: EventEmitter<TimeColumnItemOutput<T>> = new EventEmitter<TimeColumnItemOutput<T>>();\n\n /** Event emitted, when certain column is activated */\n @Output()\n activeStateChange: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden */\n @ViewChild(CarouselDirective)\n carousel: CarouselDirective;\n\n /** @hidden */\n @ViewChildren(CarouselItemDirective)\n items: QueryList<CarouselItemDirective<T>>;\n\n /** @hidden */\n @ViewChild('indicator', { read: ElementRef })\n indicator: ElementRef;\n\n /** @hidden */\n wrapperHeight: number;\n\n /**\n * Time to wait in milliseconds after the last keydown before\n * focusing or selecting option based on numeric/alpha keys.\n * @hidden\n */\n typeaheadDebounceInterval = 750;\n\n /** @hidden */\n config: CarouselConfig;\n\n /** @hidden */\n internalTranslationConfig: TimeColumnConfig | null = null;\n\n /** @hidden */\n get currentIndicatorId(): string {\n return this.id + '-current-indicator';\n }\n\n /** @hidden */\n get currentIndicatorValueId(): string {\n return this.currentIndicatorId + '-value';\n }\n\n /** @hidden */\n private _elementsAtOnce$ = new BehaviorSubject(7);\n\n /** @hidden */\n private _offset$ = new BehaviorSubject(3);\n\n /** @hidden */\n private _active = false;\n\n /** @hidden */\n private _queryKeyDownEvent: Subject<string> = new Subject<string>();\n\n /** @hidden */\n private _activeValue: Nullable<T>;\n\n /** @hidden */\n private _activeCarouselItem: CarouselItemDirective<T>;\n\n /** @hidden */\n private _isDragging = false;\n\n /** @hidden */\n private _viewInit$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n private _resize$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden\n * logs numeric key inputs to set time using keyboard input.\n */\n private _keyLog: string[] = [];\n\n /** @hidden\n * Timeout variable used to set timeout for subsequent numeric key input to set time.\n */\n private _numericInputTimeout: ReturnType<typeof setTimeout>;\n\n /** @hidden */\n constructor(\n private _changeDetRef: ChangeDetectorRef,\n private _elmRef: ElementRef\n ) {\n this._subscriptions.add(\n combineLatest([this._viewInit$, this._elementsAtOnce$, this._offset$, this._resize$])\n .pipe(\n filter(([viewInit]) => viewInit),\n tap(([, elementsAtOnce, offset]) => {\n const averageHeight =\n this.items.toArray().reduce((acc, next) => acc + next.getHeight(), 0) / this.items.length;\n this.wrapperHeight = averageHeight * elementsAtOnce;\n const visibleButNotSelectedElements = Math.floor(elementsAtOnce / 2);\n if (offset === 0) {\n this.items.first.element.style.marginTop = `${\n visibleButNotSelectedElements * averageHeight\n }px`;\n this.items.last.element.style.marginBottom = `${\n visibleButNotSelectedElements * averageHeight\n }px`;\n }\n\n if (this.activeValue) {\n this._pickTime(this._getItem(this.activeValue), false);\n }\n\n this._changeDetRef.detectChanges();\n })\n )\n .subscribe()\n );\n }\n\n /** @hidden */\n @HostListener('click')\n onItemClick(): void {\n this.activeStateChange.emit();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n this.scrollDown();\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n this.scrollUp();\n event.preventDefault();\n } else if (KeyUtil.isKeyType(event, 'numeric')) {\n this._numericKeyInputHandler(event);\n } else if (KeyUtil.isKeyType(event, 'alphabetical')) {\n this._alphaKeyInputHandler(event);\n }\n }\n\n /** @hidden */\n @HostListener('wheel', ['$event'])\n mouseScrollHandler(event: WheelEvent): void {\n event.preventDefault();\n if (this._active) {\n event.deltaY > 0 ? this.scrollDown() : this.scrollUp();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._subscriptions.add(this._elementsAtOnce$.pipe(tap(() => this._setUpCarouselConfiguration())).subscribe());\n this._setUpQuerySubscription();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._subscriptions.add(\n resizeObservable(this._elmRef.nativeElement).subscribe(() => {\n this._resize$.next(true);\n })\n );\n this._viewInit$.next(true);\n }\n\n /** @hidde */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.columnTranslationsPreset) {\n this._updateInternalTranslationConfig();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n spinnerButtonKeyupHandle(event: KeyboardEvent, upButton?: boolean): void {\n if (KeyUtil.isKeyCode(event, SPACE)) {\n if (upButton) {\n this.scrollUp();\n } else {\n this.scrollDown();\n }\n\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n /** @hidden */\n setValueOfActive(): void {\n if (this._active) {\n this._setUpInitialValue();\n }\n }\n\n /** It prevents from accidentally change the item by click event */\n handleDrag(isDragging: boolean): void {\n this._isDragging = isDragging;\n }\n\n /** Method that handles active item change */\n activeChangedHandle(output: PanEndOutput): void {\n const array = this.items.toArray();\n let index: number = array.findIndex((__item) => __item === output.item) + this.offset;\n\n if (index >= array.length) {\n index = index - array.length;\n }\n\n const _item = array[index];\n\n this._activeValue = _item.value;\n\n this.activeValueChange.emit({\n value: this._activeValue!,\n after: output.after\n });\n\n this._activeCarouselItem = _item;\n }\n\n /** Method that changes active item and triggers carousel scroll */\n pick(item: CarouselItemDirective<T>, index: number): void {\n const currentIndex: number = this.items.toArray().findIndex((_item) => _item === this._activeCarouselItem);\n /** To prevent from switching time, when it's being dragged */\n if (!this._isDragging) {\n this._pickTime(item, true, true, currentIndex < index);\n }\n }\n\n /** Method triggered by keyboard, or increment button */\n scrollUp(event?: MouseEvent): void {\n /** Keyboard events in reactive forms, shouldn't trigger this method */\n if (event && !event.clientX) {\n return;\n }\n let index: number = this.items.toArray().findIndex((_item) => _item === this._activeCarouselItem);\n if (index > 0) {\n index--;\n } else {\n index = this.rows.length - 1;\n }\n\n this._pickTime(this.items.toArray()[index], true, true, false);\n }\n\n /** Method triggered by keyboard, or decrement button */\n scrollDown(): void {\n let index: number = this.items.toArray().findIndex((_item) => _item === this._activeCarouselItem);\n if (index < this.rows.length - 1) {\n index++;\n } else {\n index = 0;\n }\n\n this._pickTime(this.items.toArray()[index], true, true, true);\n }\n\n /** Focus on column */\n focus(): void {\n this.indicator?.nativeElement.focus();\n }\n\n /**\n * Create id for column item\n * @param index column item index\n * @returns column item id\n * @hidden\n */\n _createColumnItemIdByIndex(index: number): string {\n return this.id + index;\n }\n\n /**\n * On focus callback\n * @hidden\n */\n _onFocusIndicator(): void {\n this.activeStateChange.emit();\n }\n\n /** @hidden\n * handles alphabetical key inputs to set period.\n */\n private _alphaKeyInputHandler(event: KeyboardEvent): void {\n if (event.key.toLowerCase() === 'a') {\n this._pickTimeOnValue('AM');\n } else if (event.key.toLowerCase() === 'p') {\n this._pickTimeOnValue('PM');\n }\n }\n\n /** @hidden\n * handles numeric key inputs to set time.\n */\n private _numericKeyInputHandler(event: KeyboardEvent): void {\n const lastItemValue = this.items.last.value.value; // value of last item in column\n\n this._numericInputTimeout && clearTimeout(this._numericInputTimeout);\n this._keyLog.push(event.key);\n const inputValue = parseInt(this._keyLog.join(''), 10); // converts keyLog elements to a number\n\n if (inputValue * 10 > lastItemValue || this._keyLog.length === lastItemValue.toString().length) {\n this._pickTimeOnValue(inputValue);\n } else {\n this._numericInputTimeout = setTimeout(() => {\n this._pickTimeOnValue(inputValue);\n }, 500);\n }\n }\n\n /** @hidden\n * set the time for given item value. used by _numericKeyInputHandler.\n */\n private _pickTimeOnValue(value: string | number): void {\n this._pickTime(\n this.items.find((item) => item.value.value === value),\n false,\n true,\n false\n );\n this._keyLog = []; // clear key log\n }\n\n /**\n * Method triggered by keyboard, or decrement button\n * Args:\n * item => picked carousel item, that should be centered\n * smooth => defines if transition time should be included in transform\n * emitEvent => defines if EventEmitter should be triggered by this change, set to false, when changed from outside\n * after => Defines if value was incremented/decremented, needed for hours to trigger AM/PM change\n * @hidden\n */\n private _pickTime(item?: CarouselItemDirective<T>, smooth?: boolean, emitEvent?: boolean, after?: boolean): void {\n if (!item) {\n return;\n }\n\n if (this.active) {\n this._triggerCarousel(item, smooth);\n }\n\n this._activeCarouselItem = item;\n this._activeValue = item.value;\n\n if (emitEvent) {\n this.activeValueChange.emit({\n value: item.value,\n after\n });\n }\n }\n\n /**\n * Returns item with passed value\n * @hidden\n */\n private _getItem(_item: Nullable<T>): CarouselItemDirective<T> | undefined {\n return this.items.find((item) => item.value?.value === _item?.value);\n }\n\n /** @hidden */\n private _triggerCarousel(item: CarouselItemDirective<T>, smooth?: boolean): void {\n const array = this.items.toArray();\n let index: number = array.findIndex((_item) => _item === item) - this.offset;\n\n if (index < 0) {\n index = array.length + index;\n }\n\n this.carousel.goToItem(array[index], smooth);\n }\n\n /**\n * Focus current indicator, which allows to handle keydown events inside column\n * @hidden\n */\n private _focusIndicator(): void {\n document.getElementById(this.currentIndicatorId)?.focus();\n }\n\n /** @hidden */\n private _getValue(value: string): any {\n if (!isNaN(Number(value))) {\n return Number(value);\n } else {\n return value;\n }\n }\n\n /** @hidden */\n private _setUpQuerySubscription(): void {\n const trigger = this._queryKeyDownEvent.pipe(debounceTime(this.typeaheadDebounceInterval));\n\n this._subscriptions.add(\n this._queryKeyDownEvent\n .pipe(\n buffer(trigger),\n map((keys) => keys.join('')),\n map((value) => this._getValue(value)),\n map((value) => this._getItem(value))\n )\n .subscribe((item) => this._pickTime(item, false, true))\n );\n }\n\n /** @hidden */\n private _setUpCarouselConfiguration(): void {\n const config: CarouselConfig = {\n gestureSupport: true,\n vertical: true,\n elementsAtOnce: this._elementsAtOnce$.value,\n transition: '150ms'\n };\n // Enable infinite scrolling only if not meridian column and have enough items\n // Need more items than elementsAtOnce for infinite scrolling to work\n if (!this.meridian && this.rows.length > this._elementsAtOnce$.value) {\n config.infinite = true;\n }\n this.config = config;\n }\n\n /** @hidden */\n private _setUpInitialValue(): void {\n if (!this._activeValue) {\n this._activeValue = this.items.first.value;\n }\n this._pickTime(this._getItem(this._activeValue), false);\n }\n\n /** @hidden */\n private _updateInternalTranslationConfig(): void {\n switch (this.columnTranslationsPreset) {\n case 'hours':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increaseHoursLabel',\n label: 'coreTime.hrsLabel',\n fullLabel: 'coreTime.hoursLabel',\n decreaseLabel: 'coreTime.decreaseHoursLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n case 'minutes':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increaseMinutesLabel',\n label: 'coreTime.minLabel',\n fullLabel: 'coreTime.minutesLabel',\n decreaseLabel: 'coreTime.decreaseMinutesLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n case 'seconds':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increaseSecondsLabel',\n label: 'coreTime.secLabel',\n fullLabel: 'coreTime.secondsLabel',\n decreaseLabel: 'coreTime.decreaseSecondsLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n case 'period':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increasePeriodLabel',\n label: 'coreTime.periodLabel',\n fullLabel: 'coreTime.periodLabel',\n decreaseLabel: 'coreTime.decreasePeriodLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n\n default:\n this.internalTranslationConfig = null;\n break;\n }\n this._changeDetRef.markForCheck();\n }\n}\n","<label class=\"fd-time__slider-label\">{{\n timeConfig?.label || (internalTranslationConfig && (internalTranslationConfig.label | fdTranslate)())\n}}</label>\n@if (active && spinners) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-up-arrow\"\n tabindex=\"-1\"\n [title]=\"\n timeConfig?.decreaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.decreaseLabel | fdTranslate)())\n \"\n [ariaLabel]=\"\n timeConfig?.decreaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.decreaseLabel | fdTranslate)())\n \"\n (keyup)=\"spinnerButtonKeyupHandle($event, true)\"\n (click)=\"scrollUp($event)\"\n ></button>\n}\n<div\n class=\"fd-time__wrapper\"\n [class.fd-time__wrapper--active]=\"active\"\n [class.fd-time__wrapper--meridian]=\"meridian\"\n [style.height.px]=\"active ? wrapperHeight : ''\"\n>\n <ul\n class=\"fd-time__list\"\n [class.fd-time-column-custom-hidden]=\"!active\"\n [config]=\"config\"\n (click)=\"indicator.focus()\"\n (activeChange)=\"activeChangedHandle($event)\"\n (dragStateChange)=\"handleDrag($event)\"\n fdCarousel\n >\n @for (row of rows; track row.value; let index = $index) {\n <li\n class=\"fd-time__item\"\n fdCarouselItem\n #item=\"fdCarouselItem\"\n [id]=\"_createColumnItemIdByIndex(index)\"\n [attr.data-displayed-value]=\"row.value\"\n [value]=\"row\"\n >\n <span class=\"fd-time__unit\" role=\"button\" [attr.aria-label]=\"row.label\" (click)=\"pick(item, index)\">\n {{ row.label }}\n </span>\n </li>\n }\n </ul>\n <div\n class=\"fd-time__current-indicator\"\n #indicator\n tabindex=\"0\"\n role=\"listbox\"\n [attr.id]=\"currentIndicatorId\"\n [class.fd-time-column-custom-hidden]=\"!active\"\n [attr.aria-labelledby]=\"currentIndicatorValueId\"\n [attr.aria-description]=\"\n timeConfig?.navigationInstruction ||\n (internalTranslationConfig && (internalTranslationConfig.navigationInstruction | fdTranslate)())\n \"\n (focus)=\"_onFocusIndicator()\"\n >\n <span\n class=\"fd-time-column-custom-hidden\"\n aria-atomic=\"true\"\n [attr.aria-hidden]=\"!active\"\n [attr.id]=\"currentIndicatorValueId\"\n [class.fd-time-column-custom-hidden]=\"active\"\n >\n {{ activeValue?.label }}\n {{\n timeConfig?.label ||\n (internalTranslationConfig && (internalTranslationConfig.fullLabel | fdTranslate)())\n }}\n </span>\n </div>\n @if (!active) {\n <span class=\"fd-time__item fd-time__item--collapsed\">\n {{ activeValue?.label }}\n </span>\n }\n</div>\n@if (active && spinners) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-down-arrow\"\n tabindex=\"-1\"\n [title]=\"\n timeConfig?.increaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.increaseLabel | fdTranslate)())\n \"\n [ariaLabel]=\"\n timeConfig?.increaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.increaseLabel | fdTranslate)())\n \"\n (keyup)=\"spinnerButtonKeyupHandle($event)\"\n (click)=\"scrollDown()\"\n ></button>\n}\n","/** Creates an error to be thrown when attempting to use an invalid date implementation. */\nexport function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdTime: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`\n );\n}\n","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Input,\n input,\n OnChanges,\n OnInit,\n Optional,\n QueryList,\n SimpleChanges,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { createMissingDateImplementationError } from './errors';\nimport { Meridian, SelectableViewItem } from './models';\nimport { TimeColumnComponent } from './time-column/time-column.component';\n\nexport type FdTimeActiveView = 'hour' | 'minute' | 'second' | 'meridian';\n\ntype HourViewItem = SelectableViewItem<number>;\ntype MinuteViewItem = SelectableViewItem<number>;\ntype SecondViewItem = SelectableViewItem<number>;\ntype MeridianViewItem = SelectableViewItem<Meridian>;\n\n@Component({\n selector: 'fd-time',\n templateUrl: './time.component.html',\n styleUrl: './time.component.scss',\n host: {\n '(focusout)': '_focusOut($event)',\n '(blur)': 'onTouched()'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimeComponent),\n multi: true\n },\n contentDensityObserverProviders()\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [TimeColumnComponent, FdTranslatePipe]\n})\nexport class TimeComponent<D> implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor {\n /**\n * @Input When set to false, uses the 24 hour clock (hours ranging from 0 to 23)\n * and does not display a period control.\n */\n @Input()\n meridian = false;\n\n /**\n * @Input When set to false, does not set the input field to invalid state on invalid entry.\n */\n @Input()\n validate = true;\n\n /**\n * @Input when set to true, time inputs won't allow to have 1 digit\n * for example 9 will become 09\n * but 12 will be kept as 12.\n */\n @Input()\n keepTwoDigits = false;\n\n /**\n * @Input Disables the component.\n */\n @Input()\n disabled: boolean;\n\n /**\n * @Input When set to false, hides the input for seconds.\n */\n @Input()\n displaySeconds = true;\n\n /** @Input When set to false, hides the input for minutes. */\n @Input()\n displayMinutes = true;\n\n /**\n * When set to false, hides the input for hours\n */\n @Input()\n displayHours = true;\n\n /** @Input Defines if time component should be used in tablet mode */\n @Input()\n tablet = false;\n\n /** @Input Defines quantity of the elements, that are visible at the same time. Should be odd number */\n @Input()\n elementsAtOnce = 7;\n\n /**\n * @Input An object that contains datetime representation\n */\n @Input()\n time: D;\n\n /** @Input Whether to show spinner buttons */\n @Input()\n spinnerButtons = true;\n\n /** @hidden */\n @ViewChildren(TimeColumnComponent)\n columns: QueryList<TimeColumnComponent<number, SelectableViewItem<number>>>;\n\n /**\n * The interval between selectable minutes (e.g., 1 for every minute, 5 for 5-minute intervals, 15 for 15-minute intervals).\n * Defaults to 1 (every minute).\n */\n readonly minuteStep = input<number>(1);\n\n /** Active column view to iterate with */\n activeView: FdTimeActiveView = 'hour';\n\n /**\n * @hidden\n * container for [0 - 23] hours\n */\n protected hourViewItems: HourViewItem[] = [];\n /**\n * @hidden\n * reference to currently selected hourViewItems element\n */\n protected activeHourViewItem?: HourViewItem;\n\n /**\n * @hidden\n * container for [0 - 59] minutes\n */\n protected minuteViewItems: MinuteViewItem[] = [];\n /**\n * @hidden\n * reference to currently selected minuteViewItems element\n */\n protected activeMinuteViewItem?: MinuteViewItem;\n\n /**\n * @hidden\n * container for [0 - 59] seconds\n */\n protected secondViewItems: SecondViewItem[] = [];\n /**\n * @hidden\n * reference to currently selected secondViewItems element\n */\n protected activeSecondViewItem?: SecondViewItem;\n\n /**\n * @hidden\n * container for [am, pm] meridian values\n */\n protected meridianViewItems: MeridianViewItem[] = [];\n /**\n * @hidden\n * reference to currently selected meridianViewItems element\n */\n protected activeMeridianViewItem?: MeridianViewItem;\n\n /** Offset computed signal */\n protected readonly offset = computed(() => Math.floor(this.elementsAtOnce / 2));\n\n /** Offset for minutes column, adjusted for minuteStep */\n protected readonly minuteOffset = computed(() => {\n const step = this.minuteStep();\n const stepCount = Math.ceil(60 / step);\n const effectiveElementsAtOnce = Math.min(this.elementsAtOnce, stepCount);\n // Ensure effective count is odd for proper centering (need equal items above and below focused item)\n const adjustedElementsAtOnce =\n effectiveElementsAtOnce % 2 === 0 ? effectiveElementsAtOnce - 1 : effectiveElementsAtOnce;\n return Math.floor(adjustedElementsAtOnce / 2);\n });\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _elementRef: ElementRef,\n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {\n if (!_dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n\n this.time = this._getDefaultValue();\n\n effect(() => {\n this._dateTimeAdapter.locale();\n this._setUpViewGrid();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._setUpViewGrid();\n }\n\n /** @hidden\n * Reacts only when there is meridian, time, or minuteStep input change\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.meridian || changes.time || changes.minuteStep) {\n this._setUpViewGrid();\n }\n if (changes.elementsAtOnce && changes.elementsAtOnce.currentValue % 2 === 0) {\n throw new Error('[elementsAtOnce] should be odd number');\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.refreshColumns();\n }\n\n /** @hidden */\n onChange: (value: D) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n registerOnChange(fn: (time: D) => void): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n refreshColumns(): void {\n this.columns.forEach((column) => column.setValueOfActive());\n }\n\n /**\n * @hidden\n * Handles meridian change.\n * This implicitly changes hours by +/- 12\n */\n handleMeridianChange(meridian: Meridian): void {\n let hourOffset: number = meridian === Meridian.AM ? -12 : 12;\n let currentHour = this._getModelHour();\n\n if (currentHour > 12 && meridian === Meridian.PM) {\n currentHour -= 12;\n } else if (currentHour === 12) {\n currentHour = 0;\n } else if (currentHour < 12 && meridian === Meridian.AM) {\n hourOffset = 0;\n }\n\n const newHour = Math.max(0, Math.min(23, currentHour + hourOffset));\n\n this.handleHourChange(newHour);\n }\n\n /** @hidden */\n handleSecondChange(second: number): void {\n this.time = this._dateTimeAdapter.setSeconds(this.time, second);\n this._calculateActiveSecondViewItem();\n this.onChange(this.time);\n }\n\n /** @hidden */\n handleMinuteChange(minute: number): void {\n this.time = this._dateTimeAdapter.setMinutes(this.time, minute);\n this._calculateActiveMinuteViewItem();\n this.onChange(this.time);\n }\n\n /**\n * @hidden\n * Handles changes of displayed hour value from template.\n */\n handleHourChange(hour: number): void {\n this.time = this._dateTimeAdapter.setHours(this.time, hour);\n this._calculateActiveHourViewItem();\n\n if (this.meridian) {\n this._calculateActiveMeridianViewItem();\n }\n\n this.onChange(this.time);\n }\n\n /** @hidden */\n handleNextColumnFocus(column: FdTimeActiveView): void {\n const columns = this._getVisibleColumnsWithRtl();\n let nextIndex = columns.indexOf(column) + 1;\n if (nextIndex >= columns.length) {\n nextIndex = 0;\n }\n this.changeActive(columns[nextIndex]);\n }\n\n /** @hidden */\n handlePreviousColumnFocus(column: FdTimeActiveView): void {\n const columns = this._getVisibleColumnsWithRtl();\n let nextIndex = columns.indexOf(column) - 1;\n if (nextIndex < 0) {\n nextIndex = columns.length - 1;\n }\n this.changeActive(columns[nextIndex]);\n }\n\n /** @hidden */\n handleKeyDownEvent(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n this.handlePreviousColumnFocus(this.activeView);\n event.preventDefault();\n this.focusActiveColumn();\n } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n this.handleNextColumnFocus(this.activeView);\n event.preventDefault();\n this.focusActiveColumn();\n }\n }\n\n /** @hidden */\n writeValue(time: D): void {\n if (!time || !this._dateTimeAdapter.isValid(time)) {\n time = this._getDefaultValue();\n }\n this.time = time;\n\n this._setUpActiveViewItems();\n\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n changeActive(view: FdTimeActiveView): void {\n this.activeView = view;\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n isActive(view: FdTimeActiveView): boolean {\n return this.activeView === view;\n }\n\n /** @hidden */\n focusActiveColumn(): void {\n const column = this.columns.find(({ active }) => active);\n column?.focus();\n }\n\n /** @hidden */\n protected _focusOut(event: FocusEvent): void {\n if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {\n this.onTouched();\n }\n }\n\n /**\n * Get visible time columns\n * @returns visible columns list @see {FdTimeActiveView[]}\n */\n private _getVisibleColumns(): FdTimeActiveView[] {\n const allOptions: Array<[boolean, FdTimeActiveView]> = [\n [this.displayHours, 'hour'],\n [this.displayMinutes, 'minute'],\n [this.displaySeconds, 'second'],\n [this.meridian, 'meridian']\n ];\n return allOptions.filter(([enabled]) => enabled).map(([, view]) => view);\n }\n\n /**\n * Get visible columns taking into account RTL\n * @returns visible columns list @see {FdTimeActiveView[]}\n */\n private _getVisibleColumnsWithRtl(): FdTimeActiveView[] {\n const columns = this._getVisibleColumns();\n return this._rtlService?.rtl() ? columns.reverse() : columns;\n }\n\n /** @hidden */\n private _setUpViewGrid(): void {\n this._constructHourViewItems();\n this._constructMinuteViewItems();\n this._constructSecondViewItems();\n this._constructMeridianViewItems();\n // update reference to active view items\n this._setUpActiveViewItems();\n }\n\n /** @hidden */\n private _setUpActiveViewItems(): void {\n this._calculateActiveHourViewItem();\n this._calculateActiveMinuteViewItem();\n this._calculateActiveSecondViewItem();\n this._calculateActiveMeridianViewItem();\n }\n\n /** @hidden */\n private _constructHourViewItems(): void {\n this.hourViewItems = this._dateTimeAdapter\n .getHourNames({ meridian: this.meridian, twoDigit: this.keepTwoDigits })\n .map((name, hour) => ({\n value: hour,\n label: name\n }));\n }\n\n /** @hidden */\n private _constructMinuteViewItems(): void {\n const step = this.minuteStep();\n this.minuteViewItems = this._dateTimeAdapter\n .getMinuteNames({ twoDigit: this.keepTwoDigits, minuteStep: step })\n .map((name, index) => ({\n value: index * step,\n label: name\n }));\n }\n\n /** @hidden */\n private _constructSecondViewItems(): void {\n this.secondViewItems = this._dateTimeAdapter\n .getSecondNames({ twoDigit: this.keepTwoDigits })\n .map((name, second) => ({\n value: second,\n label: name\n }));\n }\n\n /** @hidden */\n private _constructMeridianViewItems(): void {\n const [amLabel, pmLabel] = this._dateTimeAdapter.getDayPeriodNames();\n this.meridianViewItems = [\n { value: Meridian.AM, label: amLabel },\n { value: Meridian.PM, label: pmLabel }\n ];\n }\n\n /** @hidden */\n private _calculateActiveHourViewItem(): void {\n const hour = this._getModelHour();\n this.activeHourViewItem = this.hourViewItems.find(({ value }) => value === hour);\n }\n\n /** @hidden */\n private _calculateActiveMinuteViewItem(): void {\n const minute = this._getModelMinute();\n const step = this.minuteStep();\n\n // Round to the nearest valid step and clamp to valid range\n const roundedMinute = Math.min(Math.round(minute / step) * step, 59);\n\n this.activeMinuteViewItem = this.minuteViewItems.find(({ value }) => value === roundedMinute);\n }\n\n /** @hidden */\n private _calculateActiveSecondViewItem(): void {\n const second = this._getModelSecond();\n this.activeSecondViewItem = this.secondViewItems.find(({ value }) => value === second);\n }\n\n /** @hidden */\n private _calculateActiveMeridianViewItem(): void {\n const meridian = this._getDayPeriodByHour();\n this.activeMeridianViewItem = this.meridianViewItems.find(({ value }) => value === meridian);\n }\n\n /**\n * @hidden\n * Model hours (0 - 23)\n */\n private _getModelHour(): number {\n return this._dateTimeAdapter.getHours(this.time);\n }\n\n /**\n * @hidden\n * Model minutes (0 - 59)\n */\n private _getModelMinute(): number {\n return this._dateTimeAdapter.getMinutes(this.time);\n }\n\n /**\n * @hidden\n * Model seconds (0 - 59)\n */\n private _getModelSecond(): number {\n return this._dateTimeAdapter.getSeconds(this.time);\n }\n\n /**\n * @hidden\n * Get meridian period based on a given hours\n */\n private _getDayPeriodByHour(hour = this._getModelHour()): Meridian {\n return this._isPm(hour) ? Meridian.PM : Meridian.AM;\n }\n\n /** @hidden */\n private _isPm(hours: number = this._getModelHour()): boolean {\n return hours >= 12;\n }\n\n /**\n * @hidden\n * @returns default time 00:00:00\n */\n private _getDefaultValue(): D {\n return this._dateTimeAdapter.today();\n }\n}\n","<div\n class=\"fd-time\"\n [class.is-compact]=\"_contentDensityObserver.isCompactSignal()\"\n (keydown)=\"handleKeyDownEvent($event)\"\n [class.fd-time--tablet]=\"tablet\"\n [attr.aria-label]=\"('coreTime.componentAriaName' | fdTranslate)()\"\n>\n <fd-time-column\n [active]=\"isActive('hour')\"\n [rows]=\"hourViewItems\"\n [offset]=\"offset()\"\n [elementsAtOnce]=\"elementsAtOnce\"\n [activeValue]=\"activeHourViewItem\"\n columnTranslationsPreset=\"hours\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleHourChange($event.value.value)\"\n (activeStateChange)=\"changeActive('hour')\"\n ></fd-time-column>\n @if (displayMinutes) {\n <fd-time-column\n [active]=\"isActive('minute')\"\n [rows]=\"minuteViewItems\"\n [offset]=\"minuteOffset()\"\n [elementsAtOnce]=\"elementsAtOnce\"\n [activeValue]=\"activeMinuteViewItem\"\n columnTranslationsPreset=\"minutes\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleMinuteChange($event.value.value)\"\n (activeStateChange)=\"changeActive('minute')\"\n ></fd-time-column>\n }\n @if (displaySeconds) {\n <fd-time-column\n [active]=\"isActive('second')\"\n [rows]=\"secondViewItems\"\n [offset]=\"offset()\"\n [elementsAtOnce]=\"elementsAtOnce\"\n [activeValue]=\"activeSecondViewItem\"\n columnTranslationsPreset=\"seconds\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleSecondChange($event.value.value)\"\n (activeStateChange)=\"changeActive('second')\"\n ></fd-time-column>\n }\n @if (meridian) {\n <fd-time-column\n [active]=\"isActive('meridian')\"\n [rows]=\"meridianViewItems\"\n [activeValue]=\"activeMeridianViewItem\"\n [offset]=\"0\"\n [elementsAtOnce]=\"elementsAtOnce\"\n columnTranslationsPreset=\"period\"\n [meridian]=\"true\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleMeridianChange($event.value.value)\"\n (activeStateChange)=\"changeActive('meridian')\"\n ></fd-time-column>\n }\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { TimeColumnComponent } from './time-column/time-column.component';\nimport { TimeComponent } from './time.component';\n\n/**\n * @deprecated\n * Use direct imports of `TimeComponent`, `TimeColumnComponent`\n */\n@NgModule({\n imports: [TimeComponent, TimeColumnComponent],\n exports: [TimeComponent, TimeColumnComponent]\n})\nexport class TimeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-time.mjs","sources":["../../../../libs/core/time/time-column/time-column.component.ts","../../../../libs/core/time/time-column/time-column.component.html","../../../../libs/core/time/errors.ts","../../../../libs/core/time/time.component.ts","../../../../libs/core/time/time.component.html","../../../../libs/core/time/time.module.ts","../../../../libs/core/time/fundamental-ngx-core-time.ts"],"sourcesContent":["import { DOWN_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { BehaviorSubject, Subject, Subscription, combineLatest } from 'rxjs';\nimport { buffer, debounceTime, filter, map, tap } from 'rxjs/operators';\n\nimport { KeyUtil, resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { CarouselConfig, CarouselDirective, CarouselItemDirective, PanEndOutput } from '@fundamental-ngx/core/carousel';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SelectableViewItem } from '../models';\nimport { TimeColumnConfig } from './time-column-config';\n\nlet timeColumnUniqueId = 0;\n\nexport interface TimeColumnItemOutput<T> {\n value: T;\n after?: boolean;\n}\n\n@Component({\n selector: 'fd-time-column',\n templateUrl: './time-column.component.html',\n styleUrl: './time-column.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'fd-time__col'\n },\n imports: [ButtonComponent, CarouselDirective, CarouselItemDirective, FdTranslatePipe]\n})\nexport class TimeColumnComponent<K extends number, T extends SelectableViewItem<K> = SelectableViewItem<K>>\n implements AfterViewInit, OnInit, OnDestroy, OnChanges\n{\n /** items in row */\n @Input()\n rows: T[] = [];\n\n /**\n * @Input When set to false, hides the buttons that increment\n * and decrement the corresponding columns.\n */\n @Input()\n spinners = true;\n\n /** Currently chosen, centered time column item */\n @Input()\n set activeValue(activeItem: Nullable<T>) {\n if (!activeItem) {\n // omitting \"null\" and \"undefined\"\n return;\n }\n if (this._viewInit$.value && this._activeValue !== activeItem) {\n this._pickTime(this._getItem(activeItem), false);\n }\n this._activeValue = activeItem;\n }\n\n get activeValue(): Nullable<T> {\n return this._activeValue;\n }\n\n /** Defines if column is active, it has impact on behavior and visual */\n @Input()\n set active(value: boolean) {\n this._active = value;\n if (value && this._viewInit$.value) {\n this._changeDetRef.detectChanges();\n this._pickTime(this._getItem(this.activeValue), false);\n this._focusIndicator();\n }\n }\n\n get active(): boolean {\n return this._active;\n }\n\n /** Whether time column is meridian */\n @Input()\n @HostBinding('class.fd-time__col--period')\n meridian = false;\n\n /** Id of column, initiated with some default value */\n @Input()\n id: string = 'fd-time-column-' + timeColumnUniqueId++;\n\n /** I18n and labels */\n @Input()\n timeConfig: Nullable<TimeColumnConfig>;\n\n /** I18n and labels */\n @Input()\n columnTranslationsPreset: 'seconds' | 'minutes' | 'hours' | 'period';\n\n /**\n * Offset for carousel directive, active item is always the first one.\n * In case of having more items in carousel than 1, middle element should be active\n */\n @Input()\n set offset(value: number) {\n this._offset$.next(value);\n }\n get offset(): number {\n return this._offset$.value;\n }\n\n /**\n * Quantity of the elements to be shown at the same time in column\n */\n @Input()\n set elementsAtOnce(value: number) {\n this._elementsAtOnce$.next(value);\n }\n\n /** Event emitted, when active item is changed, by carousel */\n @Output()\n activeValueChange: EventEmitter<TimeColumnItemOutput<T>> = new EventEmitter<TimeColumnItemOutput<T>>();\n\n /** Event emitted, when certain column is activated */\n @Output()\n activeStateChange: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden */\n @ViewChild(CarouselDirective)\n carousel: CarouselDirective;\n\n /** @hidden */\n @ViewChildren(CarouselItemDirective)\n items: QueryList<CarouselItemDirective<T>>;\n\n /** @hidden */\n @ViewChild('indicator', { read: ElementRef })\n indicator: ElementRef;\n\n /** @hidden */\n wrapperHeight: number;\n\n /**\n * Time to wait in milliseconds after the last keydown before\n * focusing or selecting option based on numeric/alpha keys.\n * @hidden\n */\n typeaheadDebounceInterval = 750;\n\n /** @hidden */\n config: CarouselConfig;\n\n /** @hidden */\n internalTranslationConfig: TimeColumnConfig | null = null;\n\n /** @hidden */\n get currentIndicatorId(): string {\n return this.id + '-current-indicator';\n }\n\n /** @hidden */\n get currentIndicatorValueId(): string {\n return this.currentIndicatorId + '-value';\n }\n\n /** @hidden */\n private _elementsAtOnce$ = new BehaviorSubject(7);\n\n /** @hidden */\n private _offset$ = new BehaviorSubject(3);\n\n /** @hidden */\n private _active = false;\n\n /** @hidden */\n private _queryKeyDownEvent: Subject<string> = new Subject<string>();\n\n /** @hidden */\n private _activeValue: Nullable<T>;\n\n /** @hidden */\n private _activeCarouselItem: CarouselItemDirective<T>;\n\n /** @hidden */\n private _isDragging = false;\n\n /** @hidden */\n private _viewInit$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n private _resize$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden\n * logs numeric key inputs to set time using keyboard input.\n */\n private _keyLog: string[] = [];\n\n /** @hidden\n * Timeout variable used to set timeout for subsequent numeric key input to set time.\n */\n private _numericInputTimeout: ReturnType<typeof setTimeout>;\n\n /** @hidden */\n constructor(\n private _changeDetRef: ChangeDetectorRef,\n private _elmRef: ElementRef\n ) {\n this._subscriptions.add(\n combineLatest([this._viewInit$, this._elementsAtOnce$, this._offset$, this._resize$])\n .pipe(\n filter(([viewInit]) => viewInit),\n tap(([, elementsAtOnce, offset]) => {\n const averageHeight =\n this.items.toArray().reduce((acc, next) => acc + next.getHeight(), 0) / this.items.length;\n this.wrapperHeight = averageHeight * elementsAtOnce;\n const visibleButNotSelectedElements = Math.floor(elementsAtOnce / 2);\n if (offset === 0) {\n this.items.first.element.style.marginTop = `${\n visibleButNotSelectedElements * averageHeight\n }px`;\n this.items.last.element.style.marginBottom = `${\n visibleButNotSelectedElements * averageHeight\n }px`;\n }\n\n if (this.activeValue) {\n this._pickTime(this._getItem(this.activeValue), false);\n }\n\n this._changeDetRef.detectChanges();\n })\n )\n .subscribe()\n );\n }\n\n /** @hidden */\n @HostListener('click')\n onItemClick(): void {\n this.activeStateChange.emit();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n this.scrollDown();\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n this.scrollUp();\n event.preventDefault();\n } else if (KeyUtil.isKeyType(event, 'numeric')) {\n this._numericKeyInputHandler(event);\n } else if (KeyUtil.isKeyType(event, 'alphabetical')) {\n this._alphaKeyInputHandler(event);\n }\n }\n\n /** @hidden */\n @HostListener('wheel', ['$event'])\n mouseScrollHandler(event: WheelEvent): void {\n event.preventDefault();\n if (this._active) {\n event.deltaY > 0 ? this.scrollDown() : this.scrollUp();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._subscriptions.add(this._elementsAtOnce$.pipe(tap(() => this._setUpCarouselConfiguration())).subscribe());\n this._setUpQuerySubscription();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._subscriptions.add(\n resizeObservable(this._elmRef.nativeElement).subscribe(() => {\n this._resize$.next(true);\n })\n );\n this._viewInit$.next(true);\n }\n\n /** @hidde */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.columnTranslationsPreset) {\n this._updateInternalTranslationConfig();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n spinnerButtonKeyupHandle(event: KeyboardEvent, upButton?: boolean): void {\n if (KeyUtil.isKeyCode(event, SPACE)) {\n if (upButton) {\n this.scrollUp();\n } else {\n this.scrollDown();\n }\n\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n /** @hidden */\n setValueOfActive(): void {\n if (this._active) {\n this._setUpInitialValue();\n }\n }\n\n /** It prevents from accidentally change the item by click event */\n handleDrag(isDragging: boolean): void {\n this._isDragging = isDragging;\n }\n\n /** Method that handles active item change */\n activeChangedHandle(output: PanEndOutput): void {\n const array = this.items.toArray();\n let index: number = array.findIndex((__item) => __item === output.item) + this.offset;\n\n if (index >= array.length) {\n index = index - array.length;\n }\n\n const _item = array[index];\n\n this._activeValue = _item.value;\n\n this.activeValueChange.emit({\n value: this._activeValue!,\n after: output.after\n });\n\n this._activeCarouselItem = _item;\n }\n\n /** Method that changes active item and triggers carousel scroll */\n pick(item: CarouselItemDirective<T>, index: number): void {\n const currentIndex: number = this.items.toArray().findIndex((_item) => _item === this._activeCarouselItem);\n /** To prevent from switching time, when it's being dragged */\n if (!this._isDragging) {\n this._pickTime(item, true, true, currentIndex < index);\n }\n }\n\n /** Method triggered by keyboard, or increment button */\n scrollUp(event?: MouseEvent): void {\n /** Keyboard events in reactive forms, shouldn't trigger this method */\n if (event && !event.clientX) {\n return;\n }\n let index: number = this.items.toArray().findIndex((_item) => _item === this._activeCarouselItem);\n if (index > 0) {\n index--;\n } else {\n index = this.rows.length - 1;\n }\n\n this._pickTime(this.items.toArray()[index], true, true, false);\n }\n\n /** Method triggered by keyboard, or decrement button */\n scrollDown(): void {\n let index: number = this.items.toArray().findIndex((_item) => _item === this._activeCarouselItem);\n if (index < this.rows.length - 1) {\n index++;\n } else {\n index = 0;\n }\n\n this._pickTime(this.items.toArray()[index], true, true, true);\n }\n\n /** Focus on column */\n focus(): void {\n this.indicator?.nativeElement.focus();\n }\n\n /**\n * Create id for column item\n * @param index column item index\n * @returns column item id\n * @hidden\n */\n _createColumnItemIdByIndex(index: number): string {\n return this.id + index;\n }\n\n /**\n * On focus callback\n * @hidden\n */\n _onFocusIndicator(): void {\n this.activeStateChange.emit();\n }\n\n /** @hidden\n * handles alphabetical key inputs to set period.\n */\n private _alphaKeyInputHandler(event: KeyboardEvent): void {\n if (event.key.toLowerCase() === 'a') {\n this._pickTimeOnValue('AM');\n } else if (event.key.toLowerCase() === 'p') {\n this._pickTimeOnValue('PM');\n }\n }\n\n /** @hidden\n * handles numeric key inputs to set time.\n */\n private _numericKeyInputHandler(event: KeyboardEvent): void {\n const lastItemValue = this.items.last.value.value; // value of last item in column\n\n this._numericInputTimeout && clearTimeout(this._numericInputTimeout);\n this._keyLog.push(event.key);\n const inputValue = parseInt(this._keyLog.join(''), 10); // converts keyLog elements to a number\n\n if (inputValue * 10 > lastItemValue || this._keyLog.length === lastItemValue.toString().length) {\n this._pickTimeOnValue(inputValue);\n } else {\n this._numericInputTimeout = setTimeout(() => {\n this._pickTimeOnValue(inputValue);\n }, 500);\n }\n }\n\n /** @hidden\n * set the time for given item value. used by _numericKeyInputHandler.\n */\n private _pickTimeOnValue(value: string | number): void {\n this._pickTime(\n this.items.find((item) => item.value.value === value),\n false,\n true,\n false\n );\n this._keyLog = []; // clear key log\n }\n\n /**\n * Method triggered by keyboard, or decrement button\n * Args:\n * item => picked carousel item, that should be centered\n * smooth => defines if transition time should be included in transform\n * emitEvent => defines if EventEmitter should be triggered by this change, set to false, when changed from outside\n * after => Defines if value was incremented/decremented, needed for hours to trigger AM/PM change\n * @hidden\n */\n private _pickTime(item?: CarouselItemDirective<T>, smooth?: boolean, emitEvent?: boolean, after?: boolean): void {\n if (!item) {\n return;\n }\n\n if (this.active) {\n this._triggerCarousel(item, smooth);\n }\n\n this._activeCarouselItem = item;\n this._activeValue = item.value;\n\n if (emitEvent) {\n this.activeValueChange.emit({\n value: item.value,\n after\n });\n }\n }\n\n /**\n * Returns item with passed value\n * @hidden\n */\n private _getItem(_item: Nullable<T>): CarouselItemDirective<T> | undefined {\n return this.items.find((item) => item.value?.value === _item?.value);\n }\n\n /** @hidden */\n private _triggerCarousel(item: CarouselItemDirective<T>, smooth?: boolean): void {\n const array = this.items.toArray();\n let index: number = array.findIndex((_item) => _item === item) - this.offset;\n\n if (index < 0) {\n index = array.length + index;\n }\n\n this.carousel.goToItem(array[index], smooth);\n }\n\n /**\n * Focus current indicator, which allows to handle keydown events inside column\n * @hidden\n */\n private _focusIndicator(): void {\n document.getElementById(this.currentIndicatorId)?.focus();\n }\n\n /** @hidden */\n private _getValue(value: string): any {\n if (!isNaN(Number(value))) {\n return Number(value);\n } else {\n return value;\n }\n }\n\n /** @hidden */\n private _setUpQuerySubscription(): void {\n const trigger = this._queryKeyDownEvent.pipe(debounceTime(this.typeaheadDebounceInterval));\n\n this._subscriptions.add(\n this._queryKeyDownEvent\n .pipe(\n buffer(trigger),\n map((keys) => keys.join('')),\n map((value) => this._getValue(value)),\n map((value) => this._getItem(value))\n )\n .subscribe((item) => this._pickTime(item, false, true))\n );\n }\n\n /** @hidden */\n private _setUpCarouselConfiguration(): void {\n const config: CarouselConfig = {\n gestureSupport: true,\n vertical: true,\n elementsAtOnce: this._elementsAtOnce$.value,\n transition: '150ms'\n };\n // Enable infinite scrolling only if not meridian column and have enough items\n // Need more items than elementsAtOnce for infinite scrolling to work\n if (!this.meridian && this.rows.length > this._elementsAtOnce$.value) {\n config.infinite = true;\n }\n this.config = config;\n }\n\n /** @hidden */\n private _setUpInitialValue(): void {\n if (!this._activeValue) {\n this._activeValue = this.items.first.value;\n }\n this._pickTime(this._getItem(this._activeValue), false);\n }\n\n /** @hidden */\n private _updateInternalTranslationConfig(): void {\n switch (this.columnTranslationsPreset) {\n case 'hours':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increaseHoursLabel',\n label: 'coreTime.hrsLabel',\n fullLabel: 'coreTime.hoursLabel',\n decreaseLabel: 'coreTime.decreaseHoursLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n case 'minutes':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increaseMinutesLabel',\n label: 'coreTime.minLabel',\n fullLabel: 'coreTime.minutesLabel',\n decreaseLabel: 'coreTime.decreaseMinutesLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n case 'seconds':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increaseSecondsLabel',\n label: 'coreTime.secLabel',\n fullLabel: 'coreTime.secondsLabel',\n decreaseLabel: 'coreTime.decreaseSecondsLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n case 'period':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increasePeriodLabel',\n label: 'coreTime.periodLabel',\n fullLabel: 'coreTime.periodLabel',\n decreaseLabel: 'coreTime.decreasePeriodLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n\n default:\n this.internalTranslationConfig = null;\n break;\n }\n this._changeDetRef.markForCheck();\n }\n}\n","<label class=\"fd-time__slider-label\">{{\n timeConfig?.label || (internalTranslationConfig && (internalTranslationConfig.label | fdTranslate)())\n}}</label>\n@if (active && spinners) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-up-arrow\"\n tabindex=\"-1\"\n [title]=\"\n timeConfig?.decreaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.decreaseLabel | fdTranslate)())\n \"\n [ariaLabel]=\"\n timeConfig?.decreaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.decreaseLabel | fdTranslate)())\n \"\n (keyup)=\"spinnerButtonKeyupHandle($event, true)\"\n (click)=\"scrollUp($event)\"\n ></button>\n}\n<div\n class=\"fd-time__wrapper\"\n [class.fd-time__wrapper--active]=\"active\"\n [class.fd-time__wrapper--meridian]=\"meridian\"\n [style.height.px]=\"active ? wrapperHeight : ''\"\n>\n <ul\n class=\"fd-time__list\"\n [class.fd-time-column-custom-hidden]=\"!active\"\n [config]=\"config\"\n (click)=\"indicator.focus()\"\n (activeChange)=\"activeChangedHandle($event)\"\n (dragStateChange)=\"handleDrag($event)\"\n fdCarousel\n >\n @for (row of rows; track row.value; let index = $index) {\n <li\n class=\"fd-time__item\"\n fdCarouselItem\n #item=\"fdCarouselItem\"\n [id]=\"_createColumnItemIdByIndex(index)\"\n [attr.data-displayed-value]=\"row.value\"\n [value]=\"row\"\n >\n <span class=\"fd-time__unit\" role=\"button\" [attr.aria-label]=\"row.label\" (click)=\"pick(item, index)\">\n {{ row.label }}\n </span>\n </li>\n }\n </ul>\n <div\n class=\"fd-time__current-indicator\"\n #indicator\n tabindex=\"0\"\n role=\"listbox\"\n [attr.id]=\"currentIndicatorId\"\n [class.fd-time-column-custom-hidden]=\"!active\"\n [attr.aria-labelledby]=\"currentIndicatorValueId\"\n [attr.aria-description]=\"\n timeConfig?.navigationInstruction ||\n (internalTranslationConfig && (internalTranslationConfig.navigationInstruction | fdTranslate)())\n \"\n (focus)=\"_onFocusIndicator()\"\n >\n <span\n class=\"fd-time-column-custom-hidden\"\n aria-atomic=\"true\"\n [attr.aria-hidden]=\"!active\"\n [attr.id]=\"currentIndicatorValueId\"\n [class.fd-time-column-custom-hidden]=\"active\"\n >\n {{ activeValue?.label }}\n {{\n timeConfig?.label ||\n (internalTranslationConfig && (internalTranslationConfig.fullLabel | fdTranslate)())\n }}\n </span>\n </div>\n @if (!active) {\n <span class=\"fd-time__item fd-time__item--collapsed\">\n {{ activeValue?.label }}\n </span>\n }\n</div>\n@if (active && spinners) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-down-arrow\"\n tabindex=\"-1\"\n [title]=\"\n timeConfig?.increaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.increaseLabel | fdTranslate)())\n \"\n [ariaLabel]=\"\n timeConfig?.increaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.increaseLabel | fdTranslate)())\n \"\n (keyup)=\"spinnerButtonKeyupHandle($event)\"\n (click)=\"scrollDown()\"\n ></button>\n}\n","/** Creates an error to be thrown when attempting to use an invalid date implementation. */\nexport function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdTime: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`\n );\n}\n","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Input,\n input,\n OnChanges,\n OnInit,\n Optional,\n QueryList,\n SimpleChanges,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { createMissingDateImplementationError } from './errors';\nimport { Meridian, SelectableViewItem } from './models';\nimport { TimeColumnComponent } from './time-column/time-column.component';\n\nexport type FdTimeActiveView = 'hour' | 'minute' | 'second' | 'meridian';\n\ntype HourViewItem = SelectableViewItem<number>;\ntype MinuteViewItem = SelectableViewItem<number>;\ntype SecondViewItem = SelectableViewItem<number>;\ntype MeridianViewItem = SelectableViewItem<Meridian>;\n\n@Component({\n selector: 'fd-time',\n templateUrl: './time.component.html',\n styleUrl: './time.component.scss',\n host: {\n '(focusout)': '_focusOut($event)',\n '(blur)': 'onTouched()'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimeComponent),\n multi: true\n },\n contentDensityObserverProviders()\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [TimeColumnComponent, FdTranslatePipe]\n})\nexport class TimeComponent<D> implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor {\n /**\n * @Input When set to false, uses the 24 hour clock (hours ranging from 0 to 23)\n * and does not display a period control.\n */\n @Input()\n meridian = false;\n\n /**\n * @Input When set to false, does not set the input field to invalid state on invalid entry.\n */\n @Input()\n validate = true;\n\n /**\n * @Input when set to true, time inputs won't allow to have 1 digit\n * for example 9 will become 09\n * but 12 will be kept as 12.\n */\n @Input()\n keepTwoDigits = false;\n\n /**\n * @Input Disables the component.\n */\n @Input()\n disabled: boolean;\n\n /**\n * @Input When set to false, hides the input for seconds.\n */\n @Input()\n displaySeconds = true;\n\n /** @Input When set to false, hides the input for minutes. */\n @Input()\n displayMinutes = true;\n\n /**\n * When set to false, hides the input for hours\n */\n @Input()\n displayHours = true;\n\n /** @Input Defines if time component should be used in tablet mode */\n @Input()\n tablet = false;\n\n /** @Input Defines quantity of the elements, that are visible at the same time. Should be odd number */\n @Input()\n elementsAtOnce = 7;\n\n /**\n * @Input An object that contains datetime representation\n */\n @Input()\n time: D;\n\n /** @Input Whether to show spinner buttons */\n @Input()\n spinnerButtons = true;\n\n /** @hidden */\n @ViewChildren(TimeColumnComponent)\n columns: QueryList<TimeColumnComponent<number, SelectableViewItem<number>>>;\n\n /**\n * The interval between selectable minutes (e.g., 1 for every minute, 5 for 5-minute intervals, 15 for 15-minute intervals).\n * Defaults to 1 (every minute).\n */\n readonly minuteStep = input<number>(1);\n\n /** Active column view to iterate with */\n activeView: FdTimeActiveView = 'hour';\n\n /**\n * @hidden\n * container for [0 - 23] hours\n */\n protected hourViewItems: HourViewItem[] = [];\n /**\n * @hidden\n * reference to currently selected hourViewItems element\n */\n protected activeHourViewItem?: HourViewItem;\n\n /**\n * @hidden\n * container for [0 - 59] minutes\n */\n protected minuteViewItems: MinuteViewItem[] = [];\n /**\n * @hidden\n * reference to currently selected minuteViewItems element\n */\n protected activeMinuteViewItem?: MinuteViewItem;\n\n /**\n * @hidden\n * container for [0 - 59] seconds\n */\n protected secondViewItems: SecondViewItem[] = [];\n /**\n * @hidden\n * reference to currently selected secondViewItems element\n */\n protected activeSecondViewItem?: SecondViewItem;\n\n /**\n * @hidden\n * container for [am, pm] meridian values\n */\n protected meridianViewItems: MeridianViewItem[] = [];\n /**\n * @hidden\n * reference to currently selected meridianViewItems element\n */\n protected activeMeridianViewItem?: MeridianViewItem;\n\n /** Offset computed signal */\n protected readonly offset = computed(() => Math.floor(this.elementsAtOnce / 2));\n\n /** Offset for minutes column, adjusted for minuteStep */\n protected readonly minuteOffset = computed(() => {\n const step = this.minuteStep();\n const stepCount = Math.ceil(60 / step);\n const effectiveElementsAtOnce = Math.min(this.elementsAtOnce, stepCount);\n // Ensure effective count is odd for proper centering (need equal items above and below focused item)\n const adjustedElementsAtOnce =\n effectiveElementsAtOnce % 2 === 0 ? effectiveElementsAtOnce - 1 : effectiveElementsAtOnce;\n return Math.floor(adjustedElementsAtOnce / 2);\n });\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _elementRef: ElementRef,\n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {\n if (!_dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n\n this.time = this._getDefaultValue();\n\n effect(() => {\n this._dateTimeAdapter.locale();\n this._setUpViewGrid();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._setUpViewGrid();\n }\n\n /** @hidden\n * Reacts only when there is meridian, time, or minuteStep input change\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.meridian || changes.time || changes.minuteStep) {\n this._setUpViewGrid();\n }\n if (changes.elementsAtOnce && changes.elementsAtOnce.currentValue % 2 === 0) {\n throw new Error('[elementsAtOnce] should be odd number');\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.refreshColumns();\n }\n\n /** @hidden */\n onChange: (value: D) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n registerOnChange(fn: (time: D) => void): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n refreshColumns(): void {\n this.columns.forEach((column) => column.setValueOfActive());\n }\n\n /**\n * @hidden\n * Handles meridian change.\n * This implicitly changes hours by +/- 12\n */\n handleMeridianChange(meridian: Meridian): void {\n let hourOffset: number = meridian === Meridian.AM ? -12 : 12;\n let currentHour = this._getModelHour();\n\n if (currentHour > 12 && meridian === Meridian.PM) {\n currentHour -= 12;\n } else if (currentHour === 12) {\n currentHour = 0;\n } else if (currentHour < 12 && meridian === Meridian.AM) {\n hourOffset = 0;\n }\n\n const newHour = Math.max(0, Math.min(23, currentHour + hourOffset));\n\n this.handleHourChange(newHour);\n }\n\n /** @hidden */\n handleSecondChange(second: number): void {\n this.time = this._dateTimeAdapter.setSeconds(this.time, second);\n this._calculateActiveSecondViewItem();\n this.onChange(this.time);\n }\n\n /** @hidden */\n handleMinuteChange(minute: number): void {\n this.time = this._dateTimeAdapter.setMinutes(this.time, minute);\n this._calculateActiveMinuteViewItem();\n this.onChange(this.time);\n }\n\n /**\n * @hidden\n * Handles changes of displayed hour value from template.\n */\n handleHourChange(hour: number): void {\n this.time = this._dateTimeAdapter.setHours(this.time, hour);\n this._calculateActiveHourViewItem();\n\n if (this.meridian) {\n this._calculateActiveMeridianViewItem();\n }\n\n this.onChange(this.time);\n }\n\n /** @hidden */\n handleNextColumnFocus(column: FdTimeActiveView): void {\n const columns = this._getVisibleColumnsWithRtl();\n let nextIndex = columns.indexOf(column) + 1;\n if (nextIndex >= columns.length) {\n nextIndex = 0;\n }\n this.changeActive(columns[nextIndex]);\n }\n\n /** @hidden */\n handlePreviousColumnFocus(column: FdTimeActiveView): void {\n const columns = this._getVisibleColumnsWithRtl();\n let nextIndex = columns.indexOf(column) - 1;\n if (nextIndex < 0) {\n nextIndex = columns.length - 1;\n }\n this.changeActive(columns[nextIndex]);\n }\n\n /** @hidden */\n handleKeyDownEvent(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n this.handlePreviousColumnFocus(this.activeView);\n event.preventDefault();\n this.focusActiveColumn();\n } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n this.handleNextColumnFocus(this.activeView);\n event.preventDefault();\n this.focusActiveColumn();\n }\n }\n\n /** @hidden */\n writeValue(time: D): void {\n if (!time || !this._dateTimeAdapter.isValid(time)) {\n time = this._getDefaultValue();\n }\n this.time = time;\n\n this._setUpActiveViewItems();\n\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n changeActive(view: FdTimeActiveView): void {\n this.activeView = view;\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n isActive(view: FdTimeActiveView): boolean {\n return this.activeView === view;\n }\n\n /** @hidden */\n focusActiveColumn(): void {\n const column = this.columns.find(({ active }) => active);\n column?.focus();\n }\n\n /** @hidden */\n protected _focusOut(event: FocusEvent): void {\n if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {\n this.onTouched();\n }\n }\n\n /**\n * Get visible time columns\n * @returns visible columns list @see {FdTimeActiveView[]}\n */\n private _getVisibleColumns(): FdTimeActiveView[] {\n const allOptions: Array<[boolean, FdTimeActiveView]> = [\n [this.displayHours, 'hour'],\n [this.displayMinutes, 'minute'],\n [this.displaySeconds, 'second'],\n [this.meridian, 'meridian']\n ];\n return allOptions.filter(([enabled]) => enabled).map(([, view]) => view);\n }\n\n /**\n * Get visible columns taking into account RTL\n * @returns visible columns list @see {FdTimeActiveView[]}\n */\n private _getVisibleColumnsWithRtl(): FdTimeActiveView[] {\n const columns = this._getVisibleColumns();\n return this._rtlService?.rtl() ? columns.reverse() : columns;\n }\n\n /** @hidden */\n private _setUpViewGrid(): void {\n this._constructHourViewItems();\n this._constructMinuteViewItems();\n this._constructSecondViewItems();\n this._constructMeridianViewItems();\n // update reference to active view items\n this._setUpActiveViewItems();\n }\n\n /** @hidden */\n private _setUpActiveViewItems(): void {\n this._calculateActiveHourViewItem();\n this._calculateActiveMinuteViewItem();\n this._calculateActiveSecondViewItem();\n this._calculateActiveMeridianViewItem();\n }\n\n /** @hidden */\n private _constructHourViewItems(): void {\n this.hourViewItems = this._dateTimeAdapter\n .getHourNames({ meridian: this.meridian, twoDigit: this.keepTwoDigits })\n .map((name, hour) => ({\n value: hour,\n label: name\n }));\n }\n\n /** @hidden */\n private _constructMinuteViewItems(): void {\n const step = this.minuteStep();\n this.minuteViewItems = this._dateTimeAdapter\n .getMinuteNames({ twoDigit: this.keepTwoDigits, minuteStep: step })\n .map((name, index) => ({\n value: index * step,\n label: name\n }));\n }\n\n /** @hidden */\n private _constructSecondViewItems(): void {\n this.secondViewItems = this._dateTimeAdapter\n .getSecondNames({ twoDigit: this.keepTwoDigits })\n .map((name, second) => ({\n value: second,\n label: name\n }));\n }\n\n /** @hidden */\n private _constructMeridianViewItems(): void {\n const [amLabel, pmLabel] = this._dateTimeAdapter.getDayPeriodNames();\n this.meridianViewItems = [\n { value: Meridian.AM, label: amLabel },\n { value: Meridian.PM, label: pmLabel }\n ];\n }\n\n /** @hidden */\n private _calculateActiveHourViewItem(): void {\n const hour = this._getModelHour();\n this.activeHourViewItem = this.hourViewItems.find(({ value }) => value === hour);\n }\n\n /** @hidden */\n private _calculateActiveMinuteViewItem(): void {\n const minute = this._getModelMinute();\n const step = this.minuteStep();\n\n // Round to the nearest valid step and clamp to valid range\n const roundedMinute = Math.min(Math.round(minute / step) * step, 59);\n\n this.activeMinuteViewItem = this.minuteViewItems.find(({ value }) => value === roundedMinute);\n }\n\n /** @hidden */\n private _calculateActiveSecondViewItem(): void {\n const second = this._getModelSecond();\n this.activeSecondViewItem = this.secondViewItems.find(({ value }) => value === second);\n }\n\n /** @hidden */\n private _calculateActiveMeridianViewItem(): void {\n const meridian = this._getDayPeriodByHour();\n this.activeMeridianViewItem = this.meridianViewItems.find(({ value }) => value === meridian);\n }\n\n /**\n * @hidden\n * Model hours (0 - 23)\n */\n private _getModelHour(): number {\n return this._dateTimeAdapter.getHours(this.time);\n }\n\n /**\n * @hidden\n * Model minutes (0 - 59)\n */\n private _getModelMinute(): number {\n return this._dateTimeAdapter.getMinutes(this.time);\n }\n\n /**\n * @hidden\n * Model seconds (0 - 59)\n */\n private _getModelSecond(): number {\n return this._dateTimeAdapter.getSeconds(this.time);\n }\n\n /**\n * @hidden\n * Get meridian period based on a given hours\n */\n private _getDayPeriodByHour(hour = this._getModelHour()): Meridian {\n return this._isPm(hour) ? Meridian.PM : Meridian.AM;\n }\n\n /** @hidden */\n private _isPm(hours: number = this._getModelHour()): boolean {\n return hours >= 12;\n }\n\n /**\n * @hidden\n * @returns default time 00:00:00\n */\n private _getDefaultValue(): D {\n return this._dateTimeAdapter.today();\n }\n}\n","<div\n class=\"fd-time\"\n [class.is-compact]=\"_contentDensityObserver.isCompactSignal()\"\n (keydown)=\"handleKeyDownEvent($event)\"\n [class.fd-time--tablet]=\"tablet\"\n [attr.aria-label]=\"('coreTime.componentAriaName' | fdTranslate)()\"\n>\n <fd-time-column\n [active]=\"isActive('hour')\"\n [rows]=\"hourViewItems\"\n [offset]=\"offset()\"\n [elementsAtOnce]=\"elementsAtOnce\"\n [activeValue]=\"activeHourViewItem\"\n columnTranslationsPreset=\"hours\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleHourChange($event.value.value)\"\n (activeStateChange)=\"changeActive('hour')\"\n ></fd-time-column>\n @if (displayMinutes) {\n <fd-time-column\n [active]=\"isActive('minute')\"\n [rows]=\"minuteViewItems\"\n [offset]=\"minuteOffset()\"\n [elementsAtOnce]=\"elementsAtOnce\"\n [activeValue]=\"activeMinuteViewItem\"\n columnTranslationsPreset=\"minutes\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleMinuteChange($event.value.value)\"\n (activeStateChange)=\"changeActive('minute')\"\n ></fd-time-column>\n }\n @if (displaySeconds) {\n <fd-time-column\n [active]=\"isActive('second')\"\n [rows]=\"secondViewItems\"\n [offset]=\"offset()\"\n [elementsAtOnce]=\"elementsAtOnce\"\n [activeValue]=\"activeSecondViewItem\"\n columnTranslationsPreset=\"seconds\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleSecondChange($event.value.value)\"\n (activeStateChange)=\"changeActive('second')\"\n ></fd-time-column>\n }\n @if (meridian) {\n <fd-time-column\n [active]=\"isActive('meridian')\"\n [rows]=\"meridianViewItems\"\n [activeValue]=\"activeMeridianViewItem\"\n [offset]=\"0\"\n [elementsAtOnce]=\"elementsAtOnce\"\n columnTranslationsPreset=\"period\"\n [meridian]=\"true\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleMeridianChange($event.value.value)\"\n (activeStateChange)=\"changeActive('meridian')\"\n ></fd-time-column>\n }\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { TimeColumnComponent } from './time-column/time-column.component';\nimport { TimeComponent } from './time.component';\n\n/**\n * @deprecated\n * Use direct imports of `TimeComponent`, `TimeColumnComponent`\n */\n@NgModule({\n imports: [TimeComponent, TimeColumnComponent],\n exports: [TimeComponent, TimeColumnComponent]\n})\nexport class TimeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}