@koobiq/components 19.4.1 → 19.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/LICENSE +1 -1
  2. package/accordion/accordion-content.d.ts +1 -1
  3. package/accordion/accordion-content.directive.d.ts +22 -7
  4. package/accordion/accordion-header.directive.d.ts +2 -2
  5. package/accordion/accordion-item.d.ts +74 -3
  6. package/accordion/accordion-trigger.component.d.ts +15 -2
  7. package/accordion/accordion-trigger.directive.d.ts +13 -5
  8. package/accordion/accordion.component.d.ts +67 -6
  9. package/accordion/accordion.component.scss +9 -27
  10. package/accordion/public-api.d.ts +0 -2
  11. package/actions-panel/actions-panel-container.scss +6 -0
  12. package/actions-panel/actions-panel-tokens.scss +4 -1
  13. package/autocomplete/autocomplete.component.d.ts +6 -1
  14. package/autocomplete/autocomplete.module.d.ts +1 -1
  15. package/autocomplete/autocomplete.scss +14 -3
  16. package/badge/badge-tokens.scss +3 -3
  17. package/button/button-group.d.ts +45 -0
  18. package/button/button-group.scss +17 -0
  19. package/button/button.component.d.ts +3 -0
  20. package/button/button.module.d.ts +2 -1
  21. package/button/public-api.d.ts +1 -0
  22. package/button-toggle/button-toggle-tokens.scss +1 -1
  23. package/checkbox/checkbox.d.ts +5 -4
  24. package/checkbox/checkbox.scss +5 -5
  25. package/clamped-text/clamped-list.d.ts +41 -0
  26. package/clamped-text/clamped-text.d.ts +10 -6
  27. package/clamped-text/constants.d.ts +21 -1
  28. package/clamped-text/index.d.ts +1 -0
  29. package/clamped-text/module.d.ts +2 -1
  30. package/code-block/code-block-tokens.scss +35 -16
  31. package/code-block/code-block.d.ts +17 -5
  32. package/code-block/code-block.module.d.ts +1 -1
  33. package/code-block/code-block.scss +1 -0
  34. package/code-block/types.d.ts +9 -0
  35. package/core/common-behaviors/flex.d.ts +4 -0
  36. package/core/common-behaviors/index.d.ts +1 -0
  37. package/core/error/error-state-matcher.d.ts +10 -0
  38. package/core/form-field/form-field-ref.d.ts +3 -1
  39. package/core/forms/_forms.scss +10 -3
  40. package/core/locales/en-US.d.ts +2 -0
  41. package/core/locales/es-LA.d.ts +2 -0
  42. package/core/locales/locale-service.d.ts +10 -0
  43. package/core/locales/pt-BR.d.ts +2 -0
  44. package/core/locales/ru-RU.d.ts +2 -0
  45. package/core/locales/tk-TM.d.ts +2 -0
  46. package/core/locales/types.d.ts +2 -0
  47. package/core/option/_option-action-theme.scss +1 -0
  48. package/core/option/_option-theme.scss +4 -17
  49. package/core/option/action-container.scss +4 -6
  50. package/core/option/option.d.ts +5 -1
  51. package/core/option/option.scss +5 -0
  52. package/core/pop-up/pop-up-trigger.d.ts +11 -2
  53. package/core/select/common.d.ts +4 -4
  54. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +2 -2
  55. package/core/styles/common/_groups-mixins.scss +79 -0
  56. package/core/styles/common/_groups.scss +4 -34
  57. package/core/styles/common/_overlay.scss +5 -1
  58. package/core/styles/common/_select.scss +4 -0
  59. package/core/styles/theming/scrollbar-tokens.scss +6 -6
  60. package/core/styles/visual/_layout.scss +0 -2
  61. package/core/utils/utils.d.ts +2 -0
  62. package/datepicker/datepicker-input.directive.d.ts +1 -0
  63. package/dropdown/dropdown-trigger.directive.d.ts +5 -0
  64. package/dropdown/dropdown.component.d.ts +2 -1
  65. package/ellipsis-center/ellipsis-center.directive.d.ts +0 -1
  66. package/fesm2022/koobiq-components-accordion.mjs +301 -237
  67. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  68. package/fesm2022/koobiq-components-actions-panel.mjs +12 -12
  69. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  70. package/fesm2022/koobiq-components-alert.mjs +16 -16
  71. package/fesm2022/koobiq-components-app-switcher.mjs +25 -25
  72. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  73. package/fesm2022/koobiq-components-autocomplete.mjs +39 -23
  74. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  75. package/fesm2022/koobiq-components-badge.mjs +14 -14
  76. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  77. package/fesm2022/koobiq-components-breadcrumbs.mjs +25 -25
  78. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  79. package/fesm2022/koobiq-components-button-toggle.mjs +12 -12
  80. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  81. package/fesm2022/koobiq-components-button.mjs +146 -24
  82. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  83. package/fesm2022/koobiq-components-checkbox.mjs +18 -20
  84. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  85. package/fesm2022/koobiq-components-clamped-text.mjs +134 -47
  86. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  87. package/fesm2022/koobiq-components-code-block.mjs +54 -22
  88. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  89. package/fesm2022/koobiq-components-content-panel.mjs +28 -28
  90. package/fesm2022/koobiq-components-core.mjs +313 -257
  91. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  92. package/fesm2022/koobiq-components-datepicker.mjs +40 -64
  93. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  94. package/fesm2022/koobiq-components-divider.mjs +7 -7
  95. package/fesm2022/koobiq-components-dl.mjs +13 -13
  96. package/fesm2022/koobiq-components-dropdown.mjs +48 -23
  97. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  98. package/fesm2022/koobiq-components-dynamic-translation.mjs +13 -13
  99. package/fesm2022/koobiq-components-ellipsis-center.mjs +8 -9
  100. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  101. package/fesm2022/koobiq-components-empty-state.mjs +19 -19
  102. package/fesm2022/koobiq-components-file-upload.mjs +39 -39
  103. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  104. package/fesm2022/koobiq-components-filter-bar.mjs +118 -106
  105. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  106. package/fesm2022/koobiq-components-form-field.mjs +77 -65
  107. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  108. package/fesm2022/koobiq-components-icon.mjs +32 -28
  109. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  110. package/fesm2022/koobiq-components-inline-edit.mjs +115 -65
  111. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  112. package/fesm2022/koobiq-components-input.mjs +28 -26
  113. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  114. package/fesm2022/koobiq-components-link.mjs +23 -17
  115. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  116. package/fesm2022/koobiq-components-list.mjs +19 -19
  117. package/fesm2022/koobiq-components-loader-overlay.mjs +28 -19
  118. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  119. package/fesm2022/koobiq-components-markdown.mjs +54 -22
  120. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  121. package/fesm2022/koobiq-components-modal.mjs +96 -63
  122. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  123. package/fesm2022/koobiq-components-navbar-ic.mjs +34 -34
  124. package/fesm2022/koobiq-components-navbar.mjs +53 -46
  125. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  126. package/fesm2022/koobiq-components-notification-center.mjs +16 -16
  127. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  128. package/fesm2022/koobiq-components-overflow-items.mjs +29 -17
  129. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  130. package/fesm2022/koobiq-components-popover.mjs +52 -23
  131. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  132. package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
  133. package/fesm2022/koobiq-components-progress-spinner.mjs +14 -14
  134. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  135. package/fesm2022/koobiq-components-radio.mjs +10 -10
  136. package/fesm2022/koobiq-components-resizer.mjs +10 -10
  137. package/fesm2022/koobiq-components-risk-level.mjs +7 -7
  138. package/fesm2022/koobiq-components-scrollbar.mjs +12 -12
  139. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  140. package/fesm2022/koobiq-components-search-expandable.mjs +17 -8
  141. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  142. package/fesm2022/koobiq-components-select.mjs +342 -58
  143. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  144. package/fesm2022/koobiq-components-sidebar.mjs +13 -13
  145. package/fesm2022/koobiq-components-sidepanel.mjs +50 -41
  146. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  147. package/fesm2022/koobiq-components-skeleton.mjs +62 -13
  148. package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
  149. package/fesm2022/koobiq-components-split-button.mjs +9 -9
  150. package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
  151. package/fesm2022/koobiq-components-splitter.mjs +16 -16
  152. package/fesm2022/koobiq-components-table.mjs +10 -10
  153. package/fesm2022/koobiq-components-tabs.mjs +54 -54
  154. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  155. package/fesm2022/koobiq-components-tags.mjs +44 -47
  156. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  157. package/fesm2022/koobiq-components-textarea.mjs +10 -9
  158. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  159. package/fesm2022/koobiq-components-time-range.mjs +25 -25
  160. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  161. package/fesm2022/koobiq-components-timepicker.mjs +10 -10
  162. package/fesm2022/koobiq-components-timezone.mjs +26 -26
  163. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  164. package/fesm2022/koobiq-components-title.mjs +8 -9
  165. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  166. package/fesm2022/koobiq-components-toast.mjs +16 -16
  167. package/fesm2022/koobiq-components-toggle.mjs +12 -9
  168. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  169. package/fesm2022/koobiq-components-tooltip.mjs +95 -52
  170. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  171. package/fesm2022/koobiq-components-top-bar.mjs +15 -15
  172. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  173. package/fesm2022/koobiq-components-tree-select.mjs +15 -12
  174. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  175. package/fesm2022/koobiq-components-tree.mjs +64 -52
  176. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  177. package/fesm2022/koobiq-components-username.mjs +28 -28
  178. package/fesm2022/koobiq-components-username.mjs.map +1 -1
  179. package/filter-bar/filter-search.d.ts +10 -1
  180. package/filter-bar/pipes/pipe-date.scss +5 -16
  181. package/form-field/form-field.d.ts +25 -1
  182. package/form-field/form-field.scss +26 -2
  183. package/icon/icon-button.component.d.ts +3 -0
  184. package/icon/icon-button.scss +4 -0
  185. package/inline-edit/inline-edit-tokens.scss +3 -3
  186. package/inline-edit/inline-edit.d.ts +31 -11
  187. package/inline-edit/inline-edit.scss +28 -30
  188. package/input/input-password.d.ts +1 -0
  189. package/input/input.d.ts +1 -0
  190. package/link/_link-theme.scss +18 -8
  191. package/link/link-tokens.scss +9 -6
  192. package/link/link.component.d.ts +9 -5
  193. package/loader-overlay/_loader-overlay-theme.scss +12 -0
  194. package/loader-overlay/loader-overlay-tokens.scss +1 -0
  195. package/loader-overlay/loader-overlay.component.d.ts +7 -1
  196. package/markdown/_markdown-theme.scss +3 -31
  197. package/markdown/markdown-tokens.scss +0 -11
  198. package/markdown/markdown.component.d.ts +12 -7
  199. package/markdown/markdown.scss +0 -11
  200. package/modal/modal-ref.class.d.ts +1 -0
  201. package/modal/modal.component.d.ts +14 -8
  202. package/modal/modal.scss +1 -0
  203. package/modal/modal.type.d.ts +5 -0
  204. package/navbar/navbar-item.component.d.ts +3 -1
  205. package/navbar/navbar.scss +3 -0
  206. package/overflow-items/overflow-items.d.ts +8 -2
  207. package/package.json +4 -5
  208. package/popover/popover.component.d.ts +15 -2
  209. package/prebuilt-themes/dark-theme.css +1 -1
  210. package/prebuilt-themes/light-theme.css +1 -1
  211. package/prebuilt-themes/theme.css +1 -1
  212. package/progress-spinner/progress-spinner.scss +1 -0
  213. package/schematics/ng-add/index.js +4 -6
  214. package/scrollbar/scrollbar-tokens.scss +7 -7
  215. package/search-expandable/search-expandable.d.ts +6 -2
  216. package/select/public-api.d.ts +1 -0
  217. package/select/select-common.d.ts +30 -0
  218. package/select/select.component.d.ts +193 -29
  219. package/select/select.module.d.ts +3 -2
  220. package/sidepanel/_sidepanel-theme.scss +1 -7
  221. package/sidepanel/sidepanel-config.d.ts +10 -2
  222. package/sidepanel/sidepanel.service.d.ts +0 -1
  223. package/skeleton/skeleton.d.ts +12 -3
  224. package/skeleton/skeleton.scss +22 -7
  225. package/split-button/_split-button-theme.scss +2 -1
  226. package/tabs/_tabs-common.scss +2 -1
  227. package/tags/tag-input.d.ts +4 -3
  228. package/tags/tag-list.component.d.ts +1 -0
  229. package/tags/tag-tokens.scss +4 -4
  230. package/textarea/textarea.component.d.ts +1 -0
  231. package/title/title.directive.d.ts +0 -1
  232. package/toggle/toggle.component.d.ts +4 -3
  233. package/tooltip/tooltip-tokens.scss +4 -4
  234. package/tooltip/tooltip.component.d.ts +22 -2
  235. package/top-bar/top-bar.scss +3 -0
  236. package/tree/_tree-theme.scss +0 -19
  237. package/tree/tree-option.component.d.ts +9 -3
  238. package/tree/tree-option.scss +9 -5
  239. package/tree/tree-selection.component.d.ts +2 -0
  240. package/tree-select/tree-select.component.d.ts +1 -0
  241. package/accordion/accordion-item.directive.d.ts +0 -72
  242. package/accordion/accordion-root.directive.d.ts +0 -64
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-time-range.mjs","sources":["../../../packages/components/time-range/constants.ts","../../../packages/components/time-range/time-range.service.ts","../../../packages/components/time-range/time-range-editor.ts","../../../packages/components/time-range/time-range-editor.html","../../../packages/components/time-range/time-range-title.ts","../../../packages/components/time-range/time-range.ts","../../../packages/components/time-range/time-range-title-as-form-field.ts","../../../packages/components/time-range/module.ts","../../../packages/components/time-range/koobiq-components-time-range.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { KbqTimeRangeService } from './time-range.service';\nimport { KbqCustomTimeRangeType, KbqTimeRangeType } from './types';\n\n/** Preset of selectable time ranges, provided by DI. */\nexport const KBQ_DEFAULT_TIME_RANGE_TYPES = new InjectionToken<KbqTimeRangeType[]>('KBQ_DEFAULT_TIME_RANGE_TYPES');\n\n/** Preset of custom time ranges, provided by DI. */\nexport const KBQ_CUSTOM_TIME_RANGE_TYPES = new InjectionToken<KbqCustomTimeRangeType[]>('KBQ_CUSTOM_TIME_RANGE_TYPES');\n\n/** Time range types in range editor if nothing provided */\nexport const defaultTimeRangeTypes: KbqTimeRangeType[] = [\n 'lastHour',\n 'last24Hours',\n 'last3Days',\n 'last7Days',\n 'last14Days',\n 'currentQuarter',\n 'currentYear',\n 'allTime',\n 'range'\n];\n\n/** @docs-private */\nexport function createMissingDateImplError(componentName: string, provider: string): Error {\n return Error(\n `${componentName}: No provider found for ${provider}. You must import one of the existing ` +\n `modules at your application root or provide a custom implementation or use exists ones.`\n );\n}\n\n/**\n * Validates that the 'from' date-time is not greater than the 'to' date-time in a range form.\n * Returns an error if the start date-time occurs after the end date-time.\n *\n * @param timeRangeService - Service used to manipulate date-time values.\n */\nexport const rangeValidator = <T>(timeRangeService: KbqTimeRangeService<T>): ValidatorFn => {\n return (control: AbstractControl) => {\n const form = control.value;\n\n if (!form.fromTime || !form.fromDate || !form.toTime || !form.toDate) {\n return null;\n }\n\n const fromDateTime = timeRangeService.combineDateAndTime(form.fromDate, form.fromTime);\n const toDateTime = timeRangeService.combineDateAndTime(form.toDate, form.toTime);\n\n return timeRangeService.dateAdapter.compareDate(fromDateTime, toDateTime) > 0\n ? { fromIsGreaterThanTo: fromDateTime }\n : null;\n };\n};\n","import { inject, Injectable } from '@angular/core';\nimport { DateAdapter, DateFormatter } from '@koobiq/components/core';\nimport {\n createMissingDateImplError,\n defaultTimeRangeTypes,\n KBQ_CUSTOM_TIME_RANGE_TYPES,\n KBQ_DEFAULT_TIME_RANGE_TYPES\n} from './constants';\nimport {\n KbqCustomTimeRangeType,\n KbqRange,\n KbqRangeValue,\n KbqTimeRangeRange,\n KbqTimeRangeTranslationType,\n KbqTimeRangeType,\n KbqTimeRangeUnits\n} from './types';\n\n@Injectable()\nexport class KbqTimeRangeService<T> {\n readonly dateAdapter = inject<DateAdapter<T>>(DateAdapter);\n readonly dateFormatter = inject<DateFormatter<T>>(DateFormatter);\n\n readonly providedDefaultTimeRangeTypes =\n inject(KBQ_DEFAULT_TIME_RANGE_TYPES, { optional: true }) || defaultTimeRangeTypes;\n\n readonly customTimeRangeTypes = inject(KBQ_CUSTOM_TIME_RANGE_TYPES, { optional: true });\n\n readonly DEFAULT_RANGE_TYPE: KbqTimeRangeType = 'lastHour';\n\n readonly timeRangeConfig: Record<KbqTimeRangeType, Omit<KbqCustomTimeRangeType, 'type'>> = {\n lastMinute: { units: { minutes: -1 }, translationType: 'minutes' },\n last5Minutes: { units: { minutes: -5 }, translationType: 'minutes' },\n last15Minutes: { units: { minutes: -15 }, translationType: 'minutes' },\n last30Minutes: { units: { minutes: -30 }, translationType: 'minutes' },\n\n lastHour: { units: { hours: -1 }, translationType: 'hours' },\n last24Hours: { units: { hours: -24 }, translationType: 'hours' },\n\n last3Days: { units: { days: -3 }, translationType: 'days' },\n last7Days: { units: { days: -7 }, translationType: 'days' },\n last14Days: { units: { days: -14 }, translationType: 'days' },\n last30Days: { units: { days: -30 }, translationType: 'days' },\n\n last3Months: { units: { months: -3 }, translationType: 'months' },\n last12Months: { units: { months: -12 }, translationType: 'months' },\n\n allTime: { units: {}, translationType: 'other' },\n currentQuarter: { units: {}, translationType: 'other' },\n currentYear: { units: {}, translationType: 'other' },\n range: { units: {}, translationType: 'other' }\n };\n\n constructor() {\n if (!this.dateAdapter) {\n throw createMissingDateImplError('KbqTimeRange', 'DateAdapter');\n }\n\n this.customTimeRangeTypes\n ?.filter(({ type }) => {\n return !this.timeRangeConfig[type];\n })\n .forEach((type) => this.add(type));\n }\n\n static range = (dateTimeISOString: string): KbqRange => ({\n startDateTime: dateTimeISOString\n });\n\n add({ type, ...customTimeRangeConfig }: KbqCustomTimeRangeType): void {\n this.timeRangeConfig[type] = customTimeRangeConfig;\n }\n\n getTimeRangeTypeUnits(type: KbqTimeRangeType): KbqTimeRangeUnits {\n return this.timeRangeConfig[type].units;\n }\n\n getTimeRangeUnitByType(type: KbqTimeRangeType): KbqTimeRangeTranslationType {\n return this.timeRangeConfig[type].translationType;\n }\n\n getDefaultRangeValue(): Required<KbqRangeValue<T>> {\n const from = this.dateAdapter!.addCalendarUnits(this.dateAdapter!.today(), { days: -1 });\n const to = this.dateAdapter!.today();\n\n return {\n fromTime: this.omitMilliseconds(from),\n fromDate: this.omitMilliseconds(from),\n toTime: this.omitMilliseconds(to),\n toDate: this.omitMilliseconds(to)\n };\n }\n\n getTimeRangeDefaultValue(\n rangeValue: KbqRangeValue<T>,\n availableTimeRangeTypes: KbqTimeRangeType[] = []\n ): KbqTimeRangeRange {\n const defaultType =\n availableTimeRangeTypes[0] ?? this.providedDefaultTimeRangeTypes[0] ?? this.DEFAULT_RANGE_TYPE;\n\n return {\n ...this.calculateTimeRange(defaultType, rangeValue || this.getDefaultRangeValue()),\n type: defaultType\n };\n }\n\n calculateTimeRange(type?: KbqTimeRangeType, rangeValue?: KbqRangeValue<T>): KbqRange {\n if (!type) {\n return {};\n }\n\n if (type === 'range') {\n const checkedRangeValue = rangeValue || this.getDefaultRangeValue();\n\n return {\n startDateTime:\n checkedRangeValue.fromDate && checkedRangeValue.fromTime\n ? this.dateAdapter.toIso8601(\n this.combineDateAndTime(checkedRangeValue.fromDate, checkedRangeValue.fromTime)\n )\n : '',\n endDateTime:\n checkedRangeValue.toDate && checkedRangeValue.toTime\n ? this.dateAdapter.toIso8601(\n this.combineDateAndTime(checkedRangeValue.toDate, checkedRangeValue.toTime)\n )\n : ''\n };\n }\n\n switch (this.getTimeRangeUnitByType(type)) {\n case 'other': {\n switch (type) {\n case 'currentQuarter':\n return KbqTimeRangeService.range(\n this.dateAdapter.toIso8601(this.dateAdapter.startOf(this.dateAdapter.today(), 'quarter'))\n );\n case 'currentYear':\n return KbqTimeRangeService.range(\n this.dateAdapter.toIso8601(this.dateAdapter.startOf(this.dateAdapter.today(), 'year'))\n );\n case 'allTime':\n default: {\n return this.timeRangeConfig[type].range ?? {};\n }\n }\n }\n default: {\n return this.lastUnitsRange(this.getTimeRangeTypeUnits(type));\n }\n }\n }\n\n combineDateAndTime(date: T, time: T): T {\n return this.dateAdapter!.createDateTime(\n this.dateAdapter.getYear(date),\n this.dateAdapter.getMonth(date),\n this.dateAdapter.getDate(date),\n this.dateAdapter.getHours(time),\n this.dateAdapter.getMinutes(time),\n this.dateAdapter.getSeconds(time),\n this.dateAdapter.getMilliseconds(time)\n );\n }\n\n lastUnitsRange = (unitsInfo: KbqTimeRangeUnits): KbqRange =>\n KbqTimeRangeService.range(\n this.dateAdapter.toIso8601(this.dateAdapter.addCalendarUnits(this.dateAdapter.today(), unitsInfo))\n );\n\n checkAndCorrectTimeRangeValue(\n value: KbqTimeRangeRange | null | undefined,\n availableTimeRangeTypes: KbqTimeRangeType[],\n rangeValue: KbqRangeValue<T>\n ): KbqTimeRangeRange {\n let result =\n value && (!availableTimeRangeTypes.length || availableTimeRangeTypes.includes(value.type))\n ? value\n : this.getTimeRangeDefaultValue(rangeValue, availableTimeRangeTypes);\n\n if (!result.startDateTime || (result.type === 'range' && (!result.startDateTime || !result.endDateTime))) {\n result = {\n ...this.calculateTimeRange(result.type, rangeValue),\n type: result.type\n };\n }\n\n return result;\n }\n\n omitMilliseconds(date: T): T {\n return this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(date),\n this.dateAdapter.getMonth(date),\n this.dateAdapter.getDate(date),\n this.dateAdapter.getHours(date),\n this.dateAdapter.getMinutes(date),\n this.dateAdapter.getSeconds(date),\n 0\n );\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n OnInit,\n TemplateRef,\n viewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n FormGroup,\n FormGroupDirective,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgForm,\n ReactiveFormsModule,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { ErrorStateMatcher, KbqTimeRangeLocaleConfig } from '@koobiq/components/core';\nimport { KbqDatepickerModule } from '@koobiq/components/datepicker';\nimport { KbqFieldset, KbqFieldsetItem, KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqRadioModule } from '@koobiq/components/radio';\nimport { KbqTimepicker, KbqTimepickerModule, TimeFormats } from '@koobiq/components/timepicker';\nimport { merge } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { rangeValidator } from './constants';\nimport { KbqTimeRangeService } from './time-range.service';\nimport {\n KbqRangeValue,\n KbqTimeRangeOptionContext,\n KbqTimeRangeRange,\n KbqTimeRangeType,\n KbqTimeRangeTypeContext\n} from './types';\n\ninterface FormValue<T> {\n type: FormControl<KbqTimeRangeType>;\n fromTime: FormControl<T>;\n fromDate: FormControl<T>;\n toTime: FormControl<T>;\n toDate: FormControl<T>;\n}\n\nclass RangeErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!form?.invalid || !!control?.invalid;\n }\n}\n\n/** @docs-private */\n@Component({\n selector: 'kbq-time-range-editor',\n imports: [\n NgTemplateOutlet,\n ReactiveFormsModule,\n KbqFieldset,\n KbqFieldsetItem,\n KbqDatepickerModule,\n KbqFormFieldModule,\n KbqTimepickerModule,\n KbqRadioModule,\n KbqIcon\n ],\n templateUrl: './time-range-editor.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-time-range__editor'\n },\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: KbqTimeRangeEditor\n },\n {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: KbqTimeRangeEditor\n }\n ]\n})\nexport class KbqTimeRangeEditor<T> implements ControlValueAccessor, Validator, OnInit {\n private readonly timeRangeService = inject(KbqTimeRangeService);\n\n /** The maximum selectable date. */\n readonly maxDate = input<T | null>(null);\n /** The minimum selectable date. */\n readonly minDate = input<T | null>(null);\n /** Preset of selectable ranges */\n readonly availableTimeRangeTypes = input<KbqTimeRangeType[]>(this.timeRangeService.providedDefaultTimeRangeTypes);\n /** Provided value of selected range */\n readonly rangeValue = input<Required<KbqRangeValue<T>>>(this.timeRangeService.getDefaultRangeValue());\n readonly showRangeAsDefault = input.required<boolean>();\n readonly localeConfiguration = input.required<KbqTimeRangeLocaleConfig>();\n /** Customizable option output */\n readonly optionTemplate = input<TemplateRef<KbqTimeRangeOptionContext>>();\n\n /** @docs-private */\n protected readonly isRangeVisible = computed(\n () => this.showRangeAsDefault() || this.availableTimeRangeTypes().includes('range')\n );\n\n /** @docs-private */\n protected readonly timeRangeTypesWithoutRange = computed<KbqTimeRangeOptionContext[]>(() => {\n const localeConfig = this.localeConfiguration();\n\n return this.availableTimeRangeTypes()\n .filter((type) => type !== 'range')\n .map((type) => ({\n type,\n translationType: this.timeRangeService.getTimeRangeUnitByType(type),\n units: this.timeRangeService.getTimeRangeTypeUnits(type),\n formattedValue: this.getFormattedOption(type, localeConfig)\n }));\n });\n\n /** @docs-private */\n protected readonly timepickerList = viewChildren<KbqTimepicker<T>>(KbqTimepicker);\n\n /** @docs-private */\n protected readonly form: FormGroup<FormValue<T>>;\n /** @docs-private */\n protected readonly timepickerFormat = TimeFormats.HHmmss;\n /** @docs-private */\n protected readonly rangeStateMatcher = new RangeErrorStateMatcher();\n\n private lastValidationErrorOnEmit: ValidationErrors | null = null;\n\n constructor() {\n const defaultRangeValue = this.rangeValue();\n\n this.form = new FormGroup(\n {\n type: new FormControl<KbqTimeRangeType>(this.timeRangeService.DEFAULT_RANGE_TYPE, {\n nonNullable: true\n }),\n fromTime: new FormControl<T>(defaultRangeValue.fromTime, { nonNullable: true }),\n fromDate: new FormControl<T>(defaultRangeValue.fromDate, { nonNullable: true }),\n toTime: new FormControl<T>(defaultRangeValue.toTime, { nonNullable: true }),\n toDate: new FormControl<T>(defaultRangeValue.toDate, { nonNullable: true })\n },\n { validators: rangeValidator(this.timeRangeService) }\n );\n\n const rangeControls = [\n this.form.controls.fromTime,\n this.form.controls.fromDate,\n this.form.controls.toTime,\n this.form.controls.toDate\n ];\n\n merge(...rangeControls.map((control) => control.statusChanges))\n .pipe(takeUntilDestroyed())\n .subscribe(() => (this.lastValidationErrorOnEmit = this.concatControlValidationErrors()));\n\n this.form.valueChanges\n .pipe(\n map((formValue) => formValue.type),\n distinctUntilChanged(),\n takeUntilDestroyed()\n )\n .subscribe((type) => {\n const isDisabled = type !== 'range';\n\n rangeControls.forEach((control) => {\n if (isDisabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n });\n });\n\n this.form.valueChanges.pipe(takeUntilDestroyed()).subscribe((formValue) => {\n const range = this.mapTimeRange(formValue);\n\n if (range) this.onChange(range);\n });\n\n this.form.statusChanges.pipe(takeUntilDestroyed()).subscribe((status) => {\n const timepickerList = this.timepickerList();\n\n if (timepickerList.at(0)) {\n timepickerList.at(0)!.errorState = status === 'INVALID';\n }\n });\n }\n\n ngOnInit(): void {\n const defaultRangeValue = this.rangeValue();\n const availableTimeRangeTypes = this.availableTimeRangeTypes();\n\n this.form.setValue({\n type: (availableTimeRangeTypes.length && availableTimeRangeTypes[0]) || 'range',\n fromTime: defaultRangeValue.fromTime,\n fromDate: defaultRangeValue.fromDate,\n toTime: defaultRangeValue.toTime,\n toDate: defaultRangeValue.toDate\n });\n }\n\n /** @docs-private */\n validate(): ValidationErrors | null {\n return this.form.errors || this.lastValidationErrorOnEmit;\n }\n\n /** Implemented as part of ControlValueAccessor */\n writeValue(value?: KbqTimeRangeRange): void {\n if (!value) return;\n\n const corrected = this.timeRangeService.checkAndCorrectTimeRangeValue(\n value,\n this.availableTimeRangeTypes(),\n this.form.value\n );\n\n this.form.controls.type.setValue(corrected.type);\n\n if (corrected.type === 'range' && corrected.startDateTime && corrected.endDateTime) {\n const from: T = this.timeRangeService.dateAdapter.deserialize(corrected.startDateTime);\n const to: T = this.timeRangeService.dateAdapter.deserialize(corrected.endDateTime);\n\n this.form.patchValue({\n fromTime: from,\n fromDate: from,\n toTime: to,\n toDate: to\n });\n }\n }\n\n /** @docs-private */\n onChange = (_value: KbqTimeRangeRange) => {};\n /** @docs-private */\n onTouch = () => {};\n /** Implemented as part of ControlValueAccessor */\n registerOnChange(fn: (value: KbqTimeRangeRange) => void): void {\n this.onChange = fn;\n }\n /** Implemented as part of ControlValueAccessor */\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n private mapTimeRange({ type }: Partial<KbqTimeRangeTypeContext> & KbqRangeValue<T>): KbqTimeRangeRange | undefined {\n if (!type) return;\n\n return {\n type,\n ...this.timeRangeService.calculateTimeRange(type, {\n // use control.value, since via form.value control values can be undefined\n fromTime: this.form.controls.fromTime.value,\n fromDate: this.form.controls.fromDate.value,\n toDate: this.form.controls.toTime.value,\n toTime: this.form.controls.toTime.value\n })\n };\n }\n\n private getFormattedOption(type: KbqTimeRangeType, localeConfig: KbqTimeRangeLocaleConfig): string {\n const translationType = this.timeRangeService.getTimeRangeUnitByType(type);\n\n if (translationType === 'other') return '';\n\n const range = this.timeRangeService.calculateTimeRange(type);\n\n return this.timeRangeService.dateFormatter.duration(\n this.timeRangeService.dateAdapter.deserialize(range.startDateTime!),\n this.timeRangeService.dateAdapter.today(),\n [translationType],\n false,\n localeConfig.durationTemplate.option\n );\n }\n\n private concatControlValidationErrors(): ValidationErrors | null {\n let result: ValidationErrors | null = this.form.errors;\n\n Object.values(this.form.controls).forEach((control: AbstractControl) => {\n if (control.errors) {\n result = {\n ...result,\n ...control.errors\n };\n }\n });\n\n return result;\n }\n}\n","<form [formGroup]=\"form\">\n <kbq-radio-group class=\"kbq-time-range-editor__container\" [formControl]=\"form.controls.type\">\n @let types = timeRangeTypesWithoutRange();\n\n @if (types.length) {\n <div class=\"kbq-time-range-editor__predefined\">\n @for (type of types; track type) {\n <kbq-radio-button class=\"kbq-time-range-editor__predefined-option\" [value]=\"type.type\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate() || defaultOptionTemplate; context: { $implicit: type }\"\n />\n </kbq-radio-button>\n }\n </div>\n }\n\n @if (isRangeVisible()) {\n @let localeConfig = localeConfiguration();\n\n <div class=\"kbq-time-range-editor__range\" role=\"group\">\n @if (types.length) {\n <kbq-radio-button [value]=\"'range'\">{{ localeConfig.editor.rangeLabel }}</kbq-radio-button>\n }\n\n <div class=\"kbq-time-range-editor__date-time\">\n <span class=\"kbq-time-range-editor__date-time-prefix\" [attr.aria-label]=\"localeConfig.editor.from\">\n {{ localeConfig.editor.from }}\n </span>\n <kbq-fieldset>\n <kbq-form-field kbqFieldsetItem>\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix [autoColor]=\"true\"></i>\n <input kbqTimepicker [format]=\"timepickerFormat\" [formControl]=\"form.controls.fromTime\" />\n </kbq-form-field>\n\n <kbq-form-field>\n <input\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [kbqDatepicker]=\"datepickerFrom\"\n [formControl]=\"form.controls.fromDate\"\n [errorStateMatcher]=\"rangeStateMatcher\"\n />\n <kbq-datepicker-toggle-icon kbqSuffix [for]=\"datepickerFrom\" />\n <kbq-datepicker #datepickerFrom [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" />\n </kbq-form-field>\n </kbq-fieldset>\n </div>\n\n <div class=\"kbq-time-range-editor__date-time\">\n <span class=\"kbq-time-range-editor__date-time-prefix\" [attr.aria-label]=\"localeConfig.editor.to\">\n {{ localeConfig.editor.to }}\n </span>\n <kbq-fieldset>\n <kbq-form-field kbqFieldsetItem>\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix [autoColor]=\"true\"></i>\n <input kbqTimepicker [format]=\"timepickerFormat\" [formControl]=\"form.controls.toTime\" />\n </kbq-form-field>\n\n <kbq-form-field>\n <input\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [kbqDatepicker]=\"datepickerTo\"\n [formControl]=\"form.controls.toDate\"\n [errorStateMatcher]=\"rangeStateMatcher\"\n />\n <kbq-datepicker-toggle-icon kbqSuffix [for]=\"datepickerTo\" />\n <kbq-datepicker #datepickerTo [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" />\n </kbq-form-field>\n </kbq-fieldset>\n </div>\n </div>\n }\n </kbq-radio-group>\n</form>\n\n<ng-template #defaultOptionTemplate let-context>\n @let localeConfig = localeConfiguration();\n @switch (context.translationType) {\n @case ('other') {\n @switch (context.type) {\n @case ('allTime') {\n {{ localeConfig.editor.allTime }}\n }\n @case ('currentQuarter') {\n {{ localeConfig.editor.currentQuarter }}\n }\n @case ('currentYear') {\n {{ localeConfig.editor.currentYear }}\n }\n }\n }\n @default {\n {{ context.formattedValue }}\n }\n }\n</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, Injector, input, TemplateRef } from '@angular/core';\nimport { KbqTimeRangeLocaleConfig } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLinkModule } from '@koobiq/components/link';\nimport { KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTimeRangeService } from './time-range.service';\nimport { KbqTimeRangeCustomizableTitleContext, KbqTimeRangeRange, KbqTimeRangeTitleContext } from './types';\n\n/** @docs-private */\n@Component({\n selector: 'kbq-time-range-title',\n imports: [\n NgTemplateOutlet,\n KbqLinkModule,\n KbqIconModule\n ],\n template: `\n @if (titleTemplate()) {\n <ng-container *ngTemplateOutlet=\"titleTemplate()!; context: titleContext() ?? null; injector: injector\" />\n } @else {\n <a kbq-link pseudo>\n <span class=\"kbq-link__text\">{{ formattedDate() }}</span>\n\n <i kbq-icon=\"kbq-calendar-o_16\"></i>\n </a>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqTimeRangeTitle {\n private readonly timeRangeService = inject(KbqTimeRangeService);\n private readonly popover = inject(KbqPopoverTrigger, { host: true });\n protected readonly injector = inject(Injector);\n\n readonly timeRange = input.required<KbqTimeRangeRange | null>();\n readonly localeConfiguration = input.required<KbqTimeRangeLocaleConfig>();\n readonly titleTemplate = input<TemplateRef<any>>();\n\n protected readonly context = computed<KbqTimeRangeTitleContext | undefined>(() => {\n const timeRange = this.timeRange();\n\n if (!timeRange) return undefined;\n\n return {\n ...timeRange,\n ...this.timeRangeService.getTimeRangeTypeUnits(timeRange.type)\n };\n });\n\n protected readonly titleContext = computed<KbqTimeRangeCustomizableTitleContext | undefined>(() => {\n const context = this.context();\n const formattedDate = this.formattedDate();\n\n let customizableTitleContext = { formattedDate, popover: this.popover };\n\n if (context) {\n customizableTitleContext = { ...context, ...customizableTitleContext };\n }\n\n return {\n $implicit: customizableTitleContext,\n ...customizableTitleContext\n };\n });\n\n protected readonly formattedDate = computed(() => {\n const context = this.context();\n const localeConfiguration = this.localeConfiguration();\n\n if (!context) {\n return localeConfiguration.title.placeholder;\n }\n\n const timeRangeUnit = this.timeRangeService.getTimeRangeUnitByType(context.type);\n\n if (timeRangeUnit === 'other') {\n switch (context.type) {\n case 'range': {\n return (\n localeConfiguration.title.for +\n ' ' +\n this.timeRangeService.dateFormatter.rangeLongDate(\n this.timeRangeService.dateAdapter.deserialize(context.startDateTime ?? ''),\n this.timeRangeService.dateAdapter.deserialize(context.endDateTime ?? '')\n )\n );\n }\n case 'allTime': {\n return localeConfiguration.editor.allTime;\n }\n case 'currentQuarter': {\n return localeConfiguration.editor.currentQuarter;\n }\n case 'currentYear': {\n return localeConfiguration.editor.currentYear;\n }\n default: {\n return '';\n }\n }\n }\n\n if (!context.startDateTime) return '';\n\n return (\n localeConfiguration.title.for +\n ' ' +\n this.timeRangeService.dateFormatter.duration(\n this.timeRangeService.dateAdapter.deserialize(context.startDateTime),\n this.timeRangeService.dateAdapter.today(),\n [timeRangeUnit],\n false,\n localeConfiguration.durationTemplate.title\n )\n );\n });\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n InjectionToken,\n input,\n OnInit,\n output,\n Provider,\n signal,\n TemplateRef,\n ViewEncapsulation,\n WritableSignal\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport {\n KBQ_LOCALE_SERVICE,\n KbqTimeRangeLocaleConfig,\n PopUpPlacements,\n PopUpSizes,\n ruRULocaleData\n} from '@koobiq/components/core';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTimeRangeEditor } from './time-range-editor';\nimport { KbqTimeRangeTitle } from './time-range-title';\nimport { KbqTimeRangeService } from './time-range.service';\nimport {\n KbqRangeValue,\n KbqTimeRangeCustomizableTitleContext,\n KbqTimeRangeOptionContext,\n KbqTimeRangeRange,\n KbqTimeRangeType\n} from './types';\n\n/** Localization configuration provider. */\nexport const KBQ_TIME_RANGE_LOCALE_CONFIGURATION = new InjectionToken<KbqTimeRangeLocaleConfig>(\n 'KBQ_TIME_RANGE_LOCALE_CONFIGURATION',\n { factory: () => ruRULocaleData.timeRange }\n);\n\n/** Utility provider for `KBQ_TIME_RANGE_LOCALE_CONFIGURATION`. */\nexport const kbqTimeRangeLocaleConfigurationProvider = (configuration: KbqTimeRangeLocaleConfig): Provider => ({\n provide: KBQ_TIME_RANGE_LOCALE_CONFIGURATION,\n useValue: configuration\n});\n\n@Component({\n selector: 'kbq-time-range',\n imports: [\n ReactiveFormsModule,\n KbqPopoverModule,\n KbqButtonModule,\n KbqTimeRangeEditor,\n KbqTimeRangeTitle\n ],\n template: `\n @let localeConfig = localeConfiguration();\n <kbq-time-range-title\n #popover=\"kbqPopover\"\n class=\"kbq-time-range__trigger\"\n kbqPopover\n kbqPopoverClass=\"kbq-time-range__popover\"\n [kbqPopoverSize]=\"popoverSize\"\n [kbqPopoverContent]=\"timeRangePopoverContent\"\n [kbqPopoverFooter]=\"timeRangePopoverFooter\"\n [kbqPopoverPlacement]=\"popupPlacement\"\n [kbqPopoverArrow]=\"arrow()\"\n [titleTemplate]=\"titleTemplate()\"\n [timeRange]=\"titleValue()\"\n [localeConfiguration]=\"localeConfig\"\n (kbqPopoverVisibleChange)=\"onVisibleChange($event)\"\n />\n\n <ng-template #timeRangePopoverContent>\n <kbq-time-range-editor\n [maxDate]=\"maxDate()\"\n [minDate]=\"minDate()\"\n [formControl]=\"rangeEditorControl\"\n [localeConfiguration]=\"localeConfig\"\n [showRangeAsDefault]=\"showRangeAsDefault()\"\n [rangeValue]=\"normalizedDefaultRangeValue()\"\n [availableTimeRangeTypes]=\"availableTimeRangeTypes()\"\n [optionTemplate]=\"optionTemplate()\"\n />\n </ng-template>\n\n <ng-template #timeRangePopoverFooter>\n <div class=\"kbq-time-range__buttons\" role=\"group\">\n <button\n kbq-button\n [color]=\"'contrast'\"\n [disabled]=\"rangeEditorControl.invalid\"\n (click)=\"onApply(popover)\"\n >\n {{ localeConfig.editor.apply }}\n </button>\n\n <button kbq-button (click)=\"onCancel(popover)\">{{ localeConfig.editor.cancel }}</button>\n </div>\n </ng-template>\n `,\n styleUrls: ['./time-range.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-time-range'\n },\n providers: [KbqTimeRangeService]\n})\nexport class KbqTimeRange<T> implements ControlValueAccessor, OnInit {\n private readonly timeRangeService = inject<KbqTimeRangeService<T>>(KbqTimeRangeService);\n private readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n /** The minimum selectable date. */\n readonly minDate = input<T>();\n /** The maximum selectable date. */\n readonly maxDate = input<T>();\n /** provided value of selected range */\n readonly defaultRangeValue = input<KbqRangeValue<T>>();\n /** Preset of selectable ranges */\n readonly availableTimeRangeTypes = input<KbqTimeRangeType[]>(this.timeRangeService.providedDefaultTimeRangeTypes);\n /** Customizable trigger output */\n readonly titleTemplate = input<TemplateRef<KbqTimeRangeCustomizableTitleContext>>();\n /** Customizable option output */\n readonly optionTemplate = input<TemplateRef<KbqTimeRangeOptionContext>>();\n /** Whether to show popover with arrow */\n readonly arrow = input(true, { transform: booleanAttribute });\n /**\n * Whether to show range in popover if not provided\n * @see availableTimeRangeTypes\n */\n readonly showRangeAsDefault = input(true);\n /** Whether component should fallback to default value if null provided */\n readonly nonNullable = input(true, { transform: booleanAttribute });\n\n /** Emit value update if provided value via formControl wasn't valid */\n readonly valueCorrected = output<KbqTimeRangeRange>();\n\n /**\n * Used to calculate time range.\n * @docs-private */\n protected readonly normalizedDefaultRangeValue = computed(() => ({\n ...this.timeRangeService.getDefaultRangeValue(),\n ...this.defaultRangeValue()\n }));\n\n /** @docs-private */\n protected readonly titleValue: WritableSignal<KbqTimeRangeRange | null>;\n /** @docs-private */\n protected readonly rangeEditorControl: FormControl<KbqTimeRangeRange>;\n\n /** @docs-private */\n protected readonly popoverSize = PopUpSizes.Medium;\n /** @docs-private */\n protected readonly popupPlacement = PopUpPlacements.BottomLeft;\n\n /** @docs-private */\n protected readonly localeConfiguration = signal(inject(KBQ_TIME_RANGE_LOCALE_CONFIGURATION));\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n const defaultValue = this.timeRangeService.getTimeRangeDefaultValue(\n this.normalizedDefaultRangeValue(),\n this.availableTimeRangeTypes()\n );\n\n this.titleValue = signal(this.nonNullable() ? defaultValue : null);\n this.rangeEditorControl = new FormControl<KbqTimeRangeRange>(defaultValue, { nonNullable: true });\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(() => {\n this.localeConfiguration.set(this.localeService?.getParams('timeRange') ?? ruRULocaleData.timeRange);\n });\n\n toObservable(this.availableTimeRangeTypes)\n .pipe(takeUntilDestroyed())\n .subscribe(this.handleAvailableTypesChange);\n }\n\n ngOnInit(): void {\n // call again on init, so input signals values will be correct\n this.writeValue(this.ngControl?.value ?? null);\n }\n\n /** Implemented as part of ControlValueAccessor */\n writeValue(value: KbqTimeRangeRange | null): void {\n const nonNullable = this.nonNullable();\n\n const availableTimeRangeTypes = this.availableTimeRangeTypes();\n\n const corrected = this.timeRangeService.checkAndCorrectTimeRangeValue(\n value,\n availableTimeRangeTypes,\n this.normalizedDefaultRangeValue()\n );\n\n if (\n (value && value.type && !('startDateTime' in value && availableTimeRangeTypes.includes(value.type))) ||\n (nonNullable && value === null)\n ) {\n this.valueCorrected.emit(corrected);\n }\n\n this.titleValue.set(nonNullable || value !== null ? corrected : null);\n this.rangeEditorControl.setValue(corrected);\n }\n\n /** @docs-private */\n onApply(popover: KbqPopoverTrigger): void {\n this.titleValue.set(this.rangeEditorControl.value);\n this.onChange(this.rangeEditorControl.value);\n popover.hide();\n }\n\n /** @docs-private */\n onCancel(popover: KbqPopoverTrigger): void {\n popover.hide();\n }\n\n onVisibleChange(isVisible: boolean) {\n const titleValue = this.titleValue();\n\n if (!isVisible && titleValue) {\n this.rangeEditorControl.setValue(titleValue);\n }\n }\n\n /** @docs-private */\n onChange = (_value: KbqTimeRangeRange) => {};\n /** @docs-private */\n onTouch = () => {};\n /** Implemented as part of ControlValueAccessor */\n registerOnChange(fn: (_value: KbqTimeRangeRange) => void): void {\n this.onChange = fn;\n }\n /** Implemented as part of ControlValueAccessor */\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n private handleAvailableTypesChange = (types: KbqTimeRangeType[]): void => {\n if (types.includes(this.rangeEditorControl.value.type) || this.rangeEditorControl.value.type === 'range') {\n return;\n }\n\n const timeRangeDefaultValue = this.timeRangeService.getTimeRangeDefaultValue(\n this.normalizedDefaultRangeValue(),\n types.length ? types : ['range']\n );\n\n this.titleValue.set(timeRangeDefaultValue);\n this.rangeEditorControl.setValue(timeRangeDefaultValue);\n this.onChange(timeRangeDefaultValue);\n };\n}\n","import { ChangeDetectionStrategy, Component, Directive, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { Observable, Subject } from 'rxjs';\nimport { KbqTimeRange } from './time-range';\n\n/** Directive for easy using styles of time-range placeholder publicly. */\n@Directive({\n selector: '[kbqTimeRangeTitlePlaceholder]',\n host: {\n class: 'kbq-time-range-title__placeholder'\n }\n})\nexport class KbqTimeRangeTitlePlaceholder {}\n\n/** Component simulates `KbqFormFieldControl` allowing to provide custom content inside `KbqFormField` */\n@Component({\n selector: 'kbq-time-range-title-as-control',\n template: `\n <ng-content />\n `,\n providers: [\n {\n provide: KbqFormFieldControl,\n useExisting: KbqTimeRangeTitleAsControl\n }\n ],\n host: {\n '[attr.tabindex]': '0',\n class: 'kbq-time-range-title-as-form-field'\n },\n styles: `\n :host {\n &:focus-visible {\n outline: none;\n }\n display: flex;\n align-items: center;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqTimeRangeTitleAsControl implements KbqFormFieldControl<any> {\n private timeRange = inject(KbqTimeRange);\n\n /** @docs-private */\n controlType = 'select';\n /** @docs-private */\n stateChanges: Observable<void> = new Subject<void>();\n /** @docs-private */\n ngControl: NgControl | null = this.timeRange.ngControl;\n /** @docs-private */\n value: any;\n /** @docs-private */\n id: string;\n /** @docs-private */\n placeholder: string;\n /** @docs-private */\n focused: boolean;\n /** @docs-private */\n empty: boolean;\n /** @docs-private */\n required: boolean;\n /** @docs-private */\n disabled: boolean;\n /** @docs-private */\n errorState: boolean;\n /** @docs-private */\n onContainerClick(_event: MouseEvent): void {}\n /** @docs-private */\n focus(_options?: FocusOptions): void {}\n}\n","import { NgModule } from '@angular/core';\nimport { KbqTimeRange } from './time-range';\nimport { KbqTimeRangeEditor } from './time-range-editor';\nimport { KbqTimeRangeTitle } from './time-range-title';\nimport { KbqTimeRangeTitleAsControl, KbqTimeRangeTitlePlaceholder } from './time-range-title-as-form-field';\n\nconst COMPONENTS = [\n KbqTimeRange,\n KbqTimeRangeTitle,\n KbqTimeRangeEditor,\n KbqTimeRangeTitlePlaceholder,\n KbqTimeRangeTitleAsControl\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqTimeRangeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-time-range.mjs","sources":["../../../packages/components/time-range/constants.ts","../../../packages/components/time-range/time-range.service.ts","../../../packages/components/time-range/time-range-editor.ts","../../../packages/components/time-range/time-range-editor.html","../../../packages/components/time-range/time-range-title.ts","../../../packages/components/time-range/time-range.ts","../../../packages/components/time-range/time-range-title-as-form-field.ts","../../../packages/components/time-range/module.ts","../../../packages/components/time-range/koobiq-components-time-range.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { KbqTimeRangeService } from './time-range.service';\nimport { KbqCustomTimeRangeType, KbqTimeRangeType } from './types';\n\n/** Preset of selectable time ranges, provided by DI. */\nexport const KBQ_DEFAULT_TIME_RANGE_TYPES = new InjectionToken<KbqTimeRangeType[]>('KBQ_DEFAULT_TIME_RANGE_TYPES');\n\n/** Preset of custom time ranges, provided by DI. */\nexport const KBQ_CUSTOM_TIME_RANGE_TYPES = new InjectionToken<KbqCustomTimeRangeType[]>('KBQ_CUSTOM_TIME_RANGE_TYPES');\n\n/** Time range types in range editor if nothing provided */\nexport const defaultTimeRangeTypes: KbqTimeRangeType[] = [\n 'lastHour',\n 'last24Hours',\n 'last3Days',\n 'last7Days',\n 'last14Days',\n 'currentQuarter',\n 'currentYear',\n 'allTime',\n 'range'\n];\n\n/** @docs-private */\nexport function createMissingDateImplError(componentName: string, provider: string): Error {\n return Error(\n `${componentName}: No provider found for ${provider}. You must import one of the existing ` +\n `modules at your application root or provide a custom implementation or use exists ones.`\n );\n}\n\n/**\n * Validates that the 'from' date-time is not greater than the 'to' date-time in a range form.\n * Returns an error if the start date-time occurs after the end date-time.\n *\n * @param timeRangeService - Service used to manipulate date-time values.\n */\nexport const rangeValidator = <T>(timeRangeService: KbqTimeRangeService<T>): ValidatorFn => {\n return (control: AbstractControl) => {\n const form = control.value;\n\n if (!form.fromTime || !form.fromDate || !form.toTime || !form.toDate) {\n return null;\n }\n\n const fromDateTime = timeRangeService.combineDateAndTime(form.fromDate, form.fromTime);\n const toDateTime = timeRangeService.combineDateAndTime(form.toDate, form.toTime);\n\n return timeRangeService.dateAdapter.compareDate(fromDateTime, toDateTime) > 0\n ? { fromIsGreaterThanTo: fromDateTime }\n : null;\n };\n};\n","import { inject, Injectable } from '@angular/core';\nimport { DateAdapter, DateFormatter } from '@koobiq/components/core';\nimport {\n createMissingDateImplError,\n defaultTimeRangeTypes,\n KBQ_CUSTOM_TIME_RANGE_TYPES,\n KBQ_DEFAULT_TIME_RANGE_TYPES\n} from './constants';\nimport {\n KbqCustomTimeRangeType,\n KbqRange,\n KbqRangeValue,\n KbqTimeRangeRange,\n KbqTimeRangeTranslationType,\n KbqTimeRangeType,\n KbqTimeRangeUnits\n} from './types';\n\n@Injectable()\nexport class KbqTimeRangeService<T> {\n readonly dateAdapter = inject<DateAdapter<T>>(DateAdapter);\n readonly dateFormatter = inject<DateFormatter<T>>(DateFormatter);\n\n readonly providedDefaultTimeRangeTypes =\n inject(KBQ_DEFAULT_TIME_RANGE_TYPES, { optional: true }) || defaultTimeRangeTypes;\n\n readonly customTimeRangeTypes = inject(KBQ_CUSTOM_TIME_RANGE_TYPES, { optional: true });\n\n readonly DEFAULT_RANGE_TYPE: KbqTimeRangeType = 'lastHour';\n\n readonly timeRangeConfig: Record<KbqTimeRangeType, Omit<KbqCustomTimeRangeType, 'type'>> = {\n lastMinute: { units: { minutes: -1 }, translationType: 'minutes' },\n last5Minutes: { units: { minutes: -5 }, translationType: 'minutes' },\n last15Minutes: { units: { minutes: -15 }, translationType: 'minutes' },\n last30Minutes: { units: { minutes: -30 }, translationType: 'minutes' },\n\n lastHour: { units: { hours: -1 }, translationType: 'hours' },\n last24Hours: { units: { hours: -24 }, translationType: 'hours' },\n\n last3Days: { units: { days: -3 }, translationType: 'days' },\n last7Days: { units: { days: -7 }, translationType: 'days' },\n last14Days: { units: { days: -14 }, translationType: 'days' },\n last30Days: { units: { days: -30 }, translationType: 'days' },\n\n last3Months: { units: { months: -3 }, translationType: 'months' },\n last12Months: { units: { months: -12 }, translationType: 'months' },\n\n allTime: { units: {}, translationType: 'other' },\n currentQuarter: { units: {}, translationType: 'other' },\n currentYear: { units: {}, translationType: 'other' },\n range: { units: {}, translationType: 'other' }\n };\n\n constructor() {\n if (!this.dateAdapter) {\n throw createMissingDateImplError('KbqTimeRange', 'DateAdapter');\n }\n\n this.customTimeRangeTypes\n ?.filter(({ type }) => {\n return !this.timeRangeConfig[type];\n })\n .forEach((type) => this.add(type));\n }\n\n static range = (dateTimeISOString: string): KbqRange => ({\n startDateTime: dateTimeISOString\n });\n\n add({ type, ...customTimeRangeConfig }: KbqCustomTimeRangeType): void {\n this.timeRangeConfig[type] = customTimeRangeConfig;\n }\n\n getTimeRangeTypeUnits(type: KbqTimeRangeType): KbqTimeRangeUnits {\n return this.timeRangeConfig[type].units;\n }\n\n getTimeRangeUnitByType(type: KbqTimeRangeType): KbqTimeRangeTranslationType {\n return this.timeRangeConfig[type].translationType;\n }\n\n getDefaultRangeValue(): Required<KbqRangeValue<T>> {\n const from = this.dateAdapter!.addCalendarUnits(this.dateAdapter!.today(), { days: -1 });\n const to = this.dateAdapter!.today();\n\n return {\n fromTime: this.omitMilliseconds(from),\n fromDate: this.omitMilliseconds(from),\n toTime: this.omitMilliseconds(to),\n toDate: this.omitMilliseconds(to)\n };\n }\n\n getTimeRangeDefaultValue(\n rangeValue: KbqRangeValue<T>,\n availableTimeRangeTypes: KbqTimeRangeType[] = []\n ): KbqTimeRangeRange {\n const defaultType =\n availableTimeRangeTypes[0] ?? this.providedDefaultTimeRangeTypes[0] ?? this.DEFAULT_RANGE_TYPE;\n\n return {\n ...this.calculateTimeRange(defaultType, rangeValue || this.getDefaultRangeValue()),\n type: defaultType\n };\n }\n\n calculateTimeRange(type?: KbqTimeRangeType, rangeValue?: KbqRangeValue<T>): KbqRange {\n if (!type) {\n return {};\n }\n\n if (type === 'range') {\n const checkedRangeValue = rangeValue || this.getDefaultRangeValue();\n\n return {\n startDateTime:\n checkedRangeValue.fromDate && checkedRangeValue.fromTime\n ? this.dateAdapter.toIso8601(\n this.combineDateAndTime(checkedRangeValue.fromDate, checkedRangeValue.fromTime)\n )\n : '',\n endDateTime:\n checkedRangeValue.toDate && checkedRangeValue.toTime\n ? this.dateAdapter.toIso8601(\n this.combineDateAndTime(checkedRangeValue.toDate, checkedRangeValue.toTime)\n )\n : ''\n };\n }\n\n switch (this.getTimeRangeUnitByType(type)) {\n case 'other': {\n switch (type) {\n case 'currentQuarter':\n return KbqTimeRangeService.range(\n this.dateAdapter.toIso8601(this.dateAdapter.startOf(this.dateAdapter.today(), 'quarter'))\n );\n case 'currentYear':\n return KbqTimeRangeService.range(\n this.dateAdapter.toIso8601(this.dateAdapter.startOf(this.dateAdapter.today(), 'year'))\n );\n case 'allTime':\n default: {\n return this.timeRangeConfig[type].range ?? {};\n }\n }\n }\n default: {\n return this.lastUnitsRange(this.getTimeRangeTypeUnits(type));\n }\n }\n }\n\n combineDateAndTime(date: T, time: T): T {\n return this.dateAdapter!.createDateTime(\n this.dateAdapter.getYear(date),\n this.dateAdapter.getMonth(date),\n this.dateAdapter.getDate(date),\n this.dateAdapter.getHours(time),\n this.dateAdapter.getMinutes(time),\n this.dateAdapter.getSeconds(time),\n this.dateAdapter.getMilliseconds(time)\n );\n }\n\n lastUnitsRange = (unitsInfo: KbqTimeRangeUnits): KbqRange =>\n KbqTimeRangeService.range(\n this.dateAdapter.toIso8601(this.dateAdapter.addCalendarUnits(this.dateAdapter.today(), unitsInfo))\n );\n\n checkAndCorrectTimeRangeValue(\n value: KbqTimeRangeRange | null | undefined,\n availableTimeRangeTypes: KbqTimeRangeType[],\n rangeValue: KbqRangeValue<T>\n ): KbqTimeRangeRange {\n let result =\n value && (!availableTimeRangeTypes.length || availableTimeRangeTypes.includes(value.type))\n ? value\n : this.getTimeRangeDefaultValue(rangeValue, availableTimeRangeTypes);\n\n if (!result.startDateTime || (result.type === 'range' && (!result.startDateTime || !result.endDateTime))) {\n result = {\n ...this.calculateTimeRange(result.type, rangeValue),\n type: result.type\n };\n }\n\n return result;\n }\n\n omitMilliseconds(date: T): T {\n return this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(date),\n this.dateAdapter.getMonth(date),\n this.dateAdapter.getDate(date),\n this.dateAdapter.getHours(date),\n this.dateAdapter.getMinutes(date),\n this.dateAdapter.getSeconds(date),\n 0\n );\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n OnInit,\n TemplateRef,\n viewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n FormGroup,\n FormGroupDirective,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgForm,\n ReactiveFormsModule,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { ErrorStateMatcher, KbqTimeRangeLocaleConfig } from '@koobiq/components/core';\nimport { KbqDatepickerModule } from '@koobiq/components/datepicker';\nimport { KbqFieldset, KbqFieldsetItem, KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqRadioModule } from '@koobiq/components/radio';\nimport { KbqTimepicker, KbqTimepickerModule, TimeFormats } from '@koobiq/components/timepicker';\nimport { merge } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { rangeValidator } from './constants';\nimport { KbqTimeRangeService } from './time-range.service';\nimport {\n KbqRangeValue,\n KbqTimeRangeOptionContext,\n KbqTimeRangeRange,\n KbqTimeRangeType,\n KbqTimeRangeTypeContext\n} from './types';\n\ninterface FormValue<T> {\n type: FormControl<KbqTimeRangeType>;\n fromTime: FormControl<T>;\n fromDate: FormControl<T>;\n toTime: FormControl<T>;\n toDate: FormControl<T>;\n}\n\nclass RangeErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!form?.invalid || !!control?.invalid;\n }\n}\n\n/** @docs-private */\n@Component({\n selector: 'kbq-time-range-editor',\n imports: [\n NgTemplateOutlet,\n ReactiveFormsModule,\n KbqFieldset,\n KbqFieldsetItem,\n KbqDatepickerModule,\n KbqFormFieldModule,\n KbqTimepickerModule,\n KbqRadioModule,\n KbqIcon\n ],\n templateUrl: './time-range-editor.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-time-range__editor'\n },\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: KbqTimeRangeEditor\n },\n {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: KbqTimeRangeEditor\n }\n ]\n})\nexport class KbqTimeRangeEditor<T> implements ControlValueAccessor, Validator, OnInit {\n private readonly timeRangeService = inject(KbqTimeRangeService);\n\n /** The maximum selectable date. */\n readonly maxDate = input<T | null>(null);\n /** The minimum selectable date. */\n readonly minDate = input<T | null>(null);\n /** Preset of selectable ranges */\n readonly availableTimeRangeTypes = input<KbqTimeRangeType[]>(this.timeRangeService.providedDefaultTimeRangeTypes);\n /** Provided value of selected range */\n readonly rangeValue = input<Required<KbqRangeValue<T>>>(this.timeRangeService.getDefaultRangeValue());\n readonly showRangeAsDefault = input.required<boolean>();\n readonly localeConfiguration = input.required<KbqTimeRangeLocaleConfig>();\n /** Customizable option output */\n readonly optionTemplate = input<TemplateRef<KbqTimeRangeOptionContext>>();\n\n /** @docs-private */\n protected readonly isRangeVisible = computed(\n () => this.showRangeAsDefault() || this.availableTimeRangeTypes().includes('range')\n );\n\n /** @docs-private */\n protected readonly timeRangeTypesWithoutRange = computed<KbqTimeRangeOptionContext[]>(() => {\n const localeConfig = this.localeConfiguration();\n\n return this.availableTimeRangeTypes()\n .filter((type) => type !== 'range')\n .map((type) => ({\n type,\n translationType: this.timeRangeService.getTimeRangeUnitByType(type),\n units: this.timeRangeService.getTimeRangeTypeUnits(type),\n formattedValue: this.getFormattedOption(type, localeConfig)\n }));\n });\n\n /** @docs-private */\n protected readonly timepickerList = viewChildren<KbqTimepicker<T>>(KbqTimepicker);\n\n /** @docs-private */\n protected readonly form: FormGroup<FormValue<T>>;\n /** @docs-private */\n protected readonly timepickerFormat = TimeFormats.HHmmss;\n /** @docs-private */\n protected readonly rangeStateMatcher = new RangeErrorStateMatcher();\n\n private lastValidationErrorOnEmit: ValidationErrors | null = null;\n\n constructor() {\n const defaultRangeValue = this.rangeValue();\n\n this.form = new FormGroup(\n {\n type: new FormControl<KbqTimeRangeType>(this.timeRangeService.DEFAULT_RANGE_TYPE, {\n nonNullable: true\n }),\n fromTime: new FormControl<T>(defaultRangeValue.fromTime, { nonNullable: true }),\n fromDate: new FormControl<T>(defaultRangeValue.fromDate, { nonNullable: true }),\n toTime: new FormControl<T>(defaultRangeValue.toTime, { nonNullable: true }),\n toDate: new FormControl<T>(defaultRangeValue.toDate, { nonNullable: true })\n },\n { validators: rangeValidator(this.timeRangeService) }\n );\n\n const rangeControls = [\n this.form.controls.fromTime,\n this.form.controls.fromDate,\n this.form.controls.toTime,\n this.form.controls.toDate\n ];\n\n merge(...rangeControls.map((control) => control.statusChanges))\n .pipe(takeUntilDestroyed())\n .subscribe(() => (this.lastValidationErrorOnEmit = this.concatControlValidationErrors()));\n\n this.form.valueChanges\n .pipe(\n map((formValue) => formValue.type),\n distinctUntilChanged(),\n takeUntilDestroyed()\n )\n .subscribe((type) => {\n const isDisabled = type !== 'range';\n\n rangeControls.forEach((control) => {\n if (isDisabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n });\n });\n\n this.form.valueChanges.pipe(takeUntilDestroyed()).subscribe((formValue) => {\n const range = this.mapTimeRange(formValue);\n\n if (range) this.onChange(range);\n });\n\n this.form.statusChanges.pipe(takeUntilDestroyed()).subscribe((status) => {\n const timepickerList = this.timepickerList();\n\n if (timepickerList.at(0)) {\n timepickerList.at(0)!.errorState = status === 'INVALID';\n }\n });\n }\n\n ngOnInit(): void {\n const defaultRangeValue = this.rangeValue();\n const availableTimeRangeTypes = this.availableTimeRangeTypes();\n\n this.form.setValue({\n type: (availableTimeRangeTypes.length && availableTimeRangeTypes[0]) || 'range',\n fromTime: defaultRangeValue.fromTime,\n fromDate: defaultRangeValue.fromDate,\n toTime: defaultRangeValue.toTime,\n toDate: defaultRangeValue.toDate\n });\n }\n\n /** @docs-private */\n validate(): ValidationErrors | null {\n return this.form.errors || this.lastValidationErrorOnEmit;\n }\n\n /** Implemented as part of ControlValueAccessor */\n writeValue(value?: KbqTimeRangeRange): void {\n if (!value) return;\n\n const corrected = this.timeRangeService.checkAndCorrectTimeRangeValue(\n value,\n this.availableTimeRangeTypes(),\n this.form.value\n );\n\n this.form.controls.type.setValue(corrected.type);\n\n if (corrected.type === 'range' && corrected.startDateTime && corrected.endDateTime) {\n const from: T = this.timeRangeService.dateAdapter.deserialize(corrected.startDateTime);\n const to: T = this.timeRangeService.dateAdapter.deserialize(corrected.endDateTime);\n\n this.form.patchValue({\n fromTime: from,\n fromDate: from,\n toTime: to,\n toDate: to\n });\n }\n }\n\n /** @docs-private */\n onChange = (_value: KbqTimeRangeRange) => {};\n /** @docs-private */\n onTouch = () => {};\n /** Implemented as part of ControlValueAccessor */\n registerOnChange(fn: (value: KbqTimeRangeRange) => void): void {\n this.onChange = fn;\n }\n /** Implemented as part of ControlValueAccessor */\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n private mapTimeRange({ type }: Partial<KbqTimeRangeTypeContext> & KbqRangeValue<T>): KbqTimeRangeRange | undefined {\n if (!type) return;\n\n return {\n type,\n ...this.timeRangeService.calculateTimeRange(type, {\n // use control.value, since via form.value control values can be undefined\n fromTime: this.form.controls.fromTime.value,\n fromDate: this.form.controls.fromDate.value,\n toDate: this.form.controls.toTime.value,\n toTime: this.form.controls.toTime.value\n })\n };\n }\n\n private getFormattedOption(type: KbqTimeRangeType, localeConfig: KbqTimeRangeLocaleConfig): string {\n const translationType = this.timeRangeService.getTimeRangeUnitByType(type);\n\n if (translationType === 'other') return '';\n\n const range = this.timeRangeService.calculateTimeRange(type);\n\n return this.timeRangeService.dateFormatter.duration(\n this.timeRangeService.dateAdapter.deserialize(range.startDateTime!),\n this.timeRangeService.dateAdapter.today(),\n [translationType],\n false,\n localeConfig.durationTemplate.option\n );\n }\n\n private concatControlValidationErrors(): ValidationErrors | null {\n let result: ValidationErrors | null = this.form.errors;\n\n Object.values(this.form.controls).forEach((control: AbstractControl) => {\n if (control.errors) {\n result = {\n ...result,\n ...control.errors\n };\n }\n });\n\n return result;\n }\n}\n","<form [formGroup]=\"form\">\n <kbq-radio-group class=\"kbq-time-range-editor__container\" [formControl]=\"form.controls.type\">\n @let types = timeRangeTypesWithoutRange();\n\n @if (types.length) {\n <div class=\"kbq-time-range-editor__predefined\">\n @for (type of types; track type) {\n <kbq-radio-button class=\"kbq-time-range-editor__predefined-option\" [value]=\"type.type\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate() || defaultOptionTemplate; context: { $implicit: type }\"\n />\n </kbq-radio-button>\n }\n </div>\n }\n\n @if (isRangeVisible()) {\n @let localeConfig = localeConfiguration();\n\n <div class=\"kbq-time-range-editor__range\" role=\"group\">\n @if (types.length) {\n <kbq-radio-button [value]=\"'range'\">{{ localeConfig.editor.rangeLabel }}</kbq-radio-button>\n }\n\n <div class=\"kbq-time-range-editor__date-time\">\n <span class=\"kbq-time-range-editor__date-time-prefix\" [attr.aria-label]=\"localeConfig.editor.from\">\n {{ localeConfig.editor.from }}\n </span>\n <kbq-fieldset>\n <kbq-form-field kbqFieldsetItem>\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix [autoColor]=\"true\"></i>\n <input kbqTimepicker [format]=\"timepickerFormat\" [formControl]=\"form.controls.fromTime\" />\n </kbq-form-field>\n\n <kbq-form-field>\n <input\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [kbqDatepicker]=\"datepickerFrom\"\n [formControl]=\"form.controls.fromDate\"\n [errorStateMatcher]=\"rangeStateMatcher\"\n />\n <kbq-datepicker-toggle-icon kbqSuffix [for]=\"datepickerFrom\" />\n <kbq-datepicker #datepickerFrom [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" />\n </kbq-form-field>\n </kbq-fieldset>\n </div>\n\n <div class=\"kbq-time-range-editor__date-time\">\n <span class=\"kbq-time-range-editor__date-time-prefix\" [attr.aria-label]=\"localeConfig.editor.to\">\n {{ localeConfig.editor.to }}\n </span>\n <kbq-fieldset>\n <kbq-form-field kbqFieldsetItem>\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix [autoColor]=\"true\"></i>\n <input kbqTimepicker [format]=\"timepickerFormat\" [formControl]=\"form.controls.toTime\" />\n </kbq-form-field>\n\n <kbq-form-field>\n <input\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [kbqDatepicker]=\"datepickerTo\"\n [formControl]=\"form.controls.toDate\"\n [errorStateMatcher]=\"rangeStateMatcher\"\n />\n <kbq-datepicker-toggle-icon kbqSuffix [for]=\"datepickerTo\" />\n <kbq-datepicker #datepickerTo [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" />\n </kbq-form-field>\n </kbq-fieldset>\n </div>\n </div>\n }\n </kbq-radio-group>\n</form>\n\n<ng-template #defaultOptionTemplate let-context>\n @let localeConfig = localeConfiguration();\n @switch (context.translationType) {\n @case ('other') {\n @switch (context.type) {\n @case ('allTime') {\n {{ localeConfig.editor.allTime }}\n }\n @case ('currentQuarter') {\n {{ localeConfig.editor.currentQuarter }}\n }\n @case ('currentYear') {\n {{ localeConfig.editor.currentYear }}\n }\n }\n }\n @default {\n {{ context.formattedValue }}\n }\n }\n</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, Injector, input, TemplateRef } from '@angular/core';\nimport { KbqTimeRangeLocaleConfig } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLinkModule } from '@koobiq/components/link';\nimport { KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTimeRangeService } from './time-range.service';\nimport { KbqTimeRangeCustomizableTitleContext, KbqTimeRangeRange, KbqTimeRangeTitleContext } from './types';\n\n/** @docs-private */\n@Component({\n selector: 'kbq-time-range-title',\n imports: [\n NgTemplateOutlet,\n KbqLinkModule,\n KbqIconModule\n ],\n template: `\n @if (titleTemplate()) {\n <ng-container *ngTemplateOutlet=\"titleTemplate()!; context: titleContext() ?? null; injector: injector\" />\n } @else {\n <a kbq-link pseudo>\n <span class=\"kbq-link__text\">{{ formattedDate() }}</span>\n\n <i kbq-icon=\"kbq-calendar-o_16\"></i>\n </a>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqTimeRangeTitle {\n private readonly timeRangeService = inject(KbqTimeRangeService);\n private readonly popover = inject(KbqPopoverTrigger, { host: true });\n protected readonly injector = inject(Injector);\n\n readonly timeRange = input.required<KbqTimeRangeRange | null>();\n readonly localeConfiguration = input.required<KbqTimeRangeLocaleConfig>();\n readonly titleTemplate = input<TemplateRef<any>>();\n\n protected readonly context = computed<KbqTimeRangeTitleContext | undefined>(() => {\n const timeRange = this.timeRange();\n\n if (!timeRange) return undefined;\n\n return {\n ...timeRange,\n ...this.timeRangeService.getTimeRangeTypeUnits(timeRange.type)\n };\n });\n\n protected readonly titleContext = computed<KbqTimeRangeCustomizableTitleContext | undefined>(() => {\n const context = this.context();\n const formattedDate = this.formattedDate();\n\n let customizableTitleContext = { formattedDate, popover: this.popover };\n\n if (context) {\n customizableTitleContext = { ...context, ...customizableTitleContext };\n }\n\n return {\n $implicit: customizableTitleContext,\n ...customizableTitleContext\n };\n });\n\n protected readonly formattedDate = computed(() => {\n const context = this.context();\n const localeConfiguration = this.localeConfiguration();\n\n if (!context) {\n return localeConfiguration.title.placeholder;\n }\n\n const timeRangeUnit = this.timeRangeService.getTimeRangeUnitByType(context.type);\n\n if (timeRangeUnit === 'other') {\n switch (context.type) {\n case 'range': {\n return (\n localeConfiguration.title.for +\n ' ' +\n this.timeRangeService.dateFormatter.rangeLongDate(\n this.timeRangeService.dateAdapter.deserialize(context.startDateTime ?? ''),\n this.timeRangeService.dateAdapter.deserialize(context.endDateTime ?? '')\n )\n );\n }\n case 'allTime': {\n return localeConfiguration.editor.allTime;\n }\n case 'currentQuarter': {\n return localeConfiguration.editor.currentQuarter;\n }\n case 'currentYear': {\n return localeConfiguration.editor.currentYear;\n }\n default: {\n return '';\n }\n }\n }\n\n if (!context.startDateTime) return '';\n\n return (\n localeConfiguration.title.for +\n ' ' +\n this.timeRangeService.dateFormatter.duration(\n this.timeRangeService.dateAdapter.deserialize(context.startDateTime),\n this.timeRangeService.dateAdapter.today(),\n [timeRangeUnit],\n false,\n localeConfiguration.durationTemplate.title\n )\n );\n });\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n InjectionToken,\n input,\n OnInit,\n output,\n Provider,\n signal,\n TemplateRef,\n ViewEncapsulation,\n WritableSignal\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport {\n KBQ_LOCALE_SERVICE,\n KbqTimeRangeLocaleConfig,\n PopUpPlacements,\n PopUpSizes,\n ruRULocaleData\n} from '@koobiq/components/core';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTimeRangeEditor } from './time-range-editor';\nimport { KbqTimeRangeTitle } from './time-range-title';\nimport { KbqTimeRangeService } from './time-range.service';\nimport {\n KbqRangeValue,\n KbqTimeRangeCustomizableTitleContext,\n KbqTimeRangeOptionContext,\n KbqTimeRangeRange,\n KbqTimeRangeType\n} from './types';\n\n/** Localization configuration provider. */\nexport const KBQ_TIME_RANGE_LOCALE_CONFIGURATION = new InjectionToken<KbqTimeRangeLocaleConfig>(\n 'KBQ_TIME_RANGE_LOCALE_CONFIGURATION',\n { factory: () => ruRULocaleData.timeRange }\n);\n\n/** Utility provider for `KBQ_TIME_RANGE_LOCALE_CONFIGURATION`. */\nexport const kbqTimeRangeLocaleConfigurationProvider = (configuration: KbqTimeRangeLocaleConfig): Provider => ({\n provide: KBQ_TIME_RANGE_LOCALE_CONFIGURATION,\n useValue: configuration\n});\n\n@Component({\n selector: 'kbq-time-range',\n imports: [\n ReactiveFormsModule,\n KbqPopoverModule,\n KbqButtonModule,\n KbqTimeRangeEditor,\n KbqTimeRangeTitle\n ],\n template: `\n @let localeConfig = localeConfiguration();\n <kbq-time-range-title\n #popover=\"kbqPopover\"\n class=\"kbq-time-range__trigger\"\n kbqPopover\n kbqPopoverClass=\"kbq-time-range__popover\"\n [kbqPopoverSize]=\"popoverSize\"\n [kbqPopoverContent]=\"timeRangePopoverContent\"\n [kbqPopoverFooter]=\"timeRangePopoverFooter\"\n [kbqPopoverPlacement]=\"popupPlacement\"\n [kbqPopoverArrow]=\"arrow()\"\n [titleTemplate]=\"titleTemplate()\"\n [timeRange]=\"titleValue()\"\n [localeConfiguration]=\"localeConfig\"\n (kbqPopoverVisibleChange)=\"onVisibleChange($event)\"\n />\n\n <ng-template #timeRangePopoverContent>\n <kbq-time-range-editor\n [maxDate]=\"maxDate()\"\n [minDate]=\"minDate()\"\n [formControl]=\"rangeEditorControl\"\n [localeConfiguration]=\"localeConfig\"\n [showRangeAsDefault]=\"showRangeAsDefault()\"\n [rangeValue]=\"normalizedDefaultRangeValue()\"\n [availableTimeRangeTypes]=\"availableTimeRangeTypes()\"\n [optionTemplate]=\"optionTemplate()\"\n />\n </ng-template>\n\n <ng-template #timeRangePopoverFooter>\n <div class=\"kbq-time-range__buttons\" role=\"group\">\n <button\n kbq-button\n [color]=\"'contrast'\"\n [disabled]=\"rangeEditorControl.invalid\"\n (click)=\"onApply(popover)\"\n >\n {{ localeConfig.editor.apply }}\n </button>\n\n <button kbq-button (click)=\"onCancel(popover)\">{{ localeConfig.editor.cancel }}</button>\n </div>\n </ng-template>\n `,\n styleUrls: ['./time-range.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-time-range'\n },\n providers: [KbqTimeRangeService]\n})\nexport class KbqTimeRange<T> implements ControlValueAccessor, OnInit {\n private readonly timeRangeService = inject<KbqTimeRangeService<T>>(KbqTimeRangeService);\n private readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n /** The minimum selectable date. */\n readonly minDate = input<T>();\n /** The maximum selectable date. */\n readonly maxDate = input<T>();\n /** provided value of selected range */\n readonly defaultRangeValue = input<KbqRangeValue<T>>();\n /** Preset of selectable ranges */\n readonly availableTimeRangeTypes = input<KbqTimeRangeType[]>(this.timeRangeService.providedDefaultTimeRangeTypes);\n /** Customizable trigger output */\n readonly titleTemplate = input<TemplateRef<KbqTimeRangeCustomizableTitleContext>>();\n /** Customizable option output */\n readonly optionTemplate = input<TemplateRef<KbqTimeRangeOptionContext>>();\n /** Whether to show popover with arrow */\n readonly arrow = input(true, { transform: booleanAttribute });\n /**\n * Whether to show range in popover if not provided\n * @see availableTimeRangeTypes\n */\n readonly showRangeAsDefault = input(true);\n /** Whether component should fallback to default value if null provided */\n readonly nonNullable = input(true, { transform: booleanAttribute });\n\n /** Emit value update if provided value via formControl wasn't valid */\n readonly valueCorrected = output<KbqTimeRangeRange>();\n\n /**\n * Used to calculate time range.\n * @docs-private */\n protected readonly normalizedDefaultRangeValue = computed(() => ({\n ...this.timeRangeService.getDefaultRangeValue(),\n ...this.defaultRangeValue()\n }));\n\n /** @docs-private */\n protected readonly titleValue: WritableSignal<KbqTimeRangeRange | null>;\n /** @docs-private */\n protected readonly rangeEditorControl: FormControl<KbqTimeRangeRange>;\n\n /** @docs-private */\n protected readonly popoverSize = PopUpSizes.Medium;\n /** @docs-private */\n protected readonly popupPlacement = PopUpPlacements.BottomLeft;\n\n /** @docs-private */\n protected readonly localeConfiguration = signal(inject(KBQ_TIME_RANGE_LOCALE_CONFIGURATION));\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n const defaultValue = this.timeRangeService.getTimeRangeDefaultValue(\n this.normalizedDefaultRangeValue(),\n this.availableTimeRangeTypes()\n );\n\n this.titleValue = signal(this.nonNullable() ? defaultValue : null);\n this.rangeEditorControl = new FormControl<KbqTimeRangeRange>(defaultValue, { nonNullable: true });\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(() => {\n this.localeConfiguration.set(this.localeService?.getParams('timeRange') ?? ruRULocaleData.timeRange);\n });\n\n toObservable(this.availableTimeRangeTypes)\n .pipe(takeUntilDestroyed())\n .subscribe(this.handleAvailableTypesChange);\n }\n\n ngOnInit(): void {\n // call again on init, so input signals values will be correct\n this.writeValue(this.ngControl?.value ?? null);\n }\n\n /** Implemented as part of ControlValueAccessor */\n writeValue(value: KbqTimeRangeRange | null): void {\n const nonNullable = this.nonNullable();\n\n const availableTimeRangeTypes = this.availableTimeRangeTypes();\n\n const corrected = this.timeRangeService.checkAndCorrectTimeRangeValue(\n value,\n availableTimeRangeTypes,\n this.normalizedDefaultRangeValue()\n );\n\n if (\n (value && value.type && !('startDateTime' in value && availableTimeRangeTypes.includes(value.type))) ||\n (nonNullable && value === null)\n ) {\n this.valueCorrected.emit(corrected);\n }\n\n this.titleValue.set(nonNullable || value !== null ? corrected : null);\n this.rangeEditorControl.setValue(corrected);\n }\n\n /** @docs-private */\n onApply(popover: KbqPopoverTrigger): void {\n this.titleValue.set(this.rangeEditorControl.value);\n this.onChange(this.rangeEditorControl.value);\n popover.hide();\n }\n\n /** @docs-private */\n onCancel(popover: KbqPopoverTrigger): void {\n popover.hide();\n }\n\n onVisibleChange(isVisible: boolean) {\n const titleValue = this.titleValue();\n\n if (!isVisible && titleValue) {\n this.rangeEditorControl.setValue(titleValue);\n }\n }\n\n /** @docs-private */\n onChange = (_value: KbqTimeRangeRange) => {};\n /** @docs-private */\n onTouch = () => {};\n /** Implemented as part of ControlValueAccessor */\n registerOnChange(fn: (_value: KbqTimeRangeRange) => void): void {\n this.onChange = fn;\n }\n /** Implemented as part of ControlValueAccessor */\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n private handleAvailableTypesChange = (types: KbqTimeRangeType[]): void => {\n if (types.includes(this.rangeEditorControl.value.type) || this.rangeEditorControl.value.type === 'range') {\n return;\n }\n\n const timeRangeDefaultValue = this.timeRangeService.getTimeRangeDefaultValue(\n this.normalizedDefaultRangeValue(),\n types.length ? types : ['range']\n );\n\n this.titleValue.set(timeRangeDefaultValue);\n this.rangeEditorControl.setValue(timeRangeDefaultValue);\n this.onChange(timeRangeDefaultValue);\n };\n}\n","import { ChangeDetectionStrategy, Component, Directive, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { Observable, Subject } from 'rxjs';\nimport { KbqTimeRange } from './time-range';\n\n/** Directive for easy using styles of time-range placeholder publicly. */\n@Directive({\n selector: '[kbqTimeRangeTitlePlaceholder]',\n host: {\n class: 'kbq-time-range-title__placeholder'\n }\n})\nexport class KbqTimeRangeTitlePlaceholder {}\n\n/** Component simulates `KbqFormFieldControl` allowing to provide custom content inside `KbqFormField` */\n@Component({\n selector: 'kbq-time-range-title-as-control',\n template: `\n <ng-content />\n `,\n providers: [\n {\n provide: KbqFormFieldControl,\n useExisting: KbqTimeRangeTitleAsControl\n }\n ],\n host: {\n '[attr.tabindex]': '0',\n class: 'kbq-time-range-title-as-form-field'\n },\n styles: `\n :host {\n &:focus-visible {\n outline: none;\n }\n display: flex;\n align-items: center;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqTimeRangeTitleAsControl implements KbqFormFieldControl<any> {\n private timeRange = inject(KbqTimeRange);\n\n /** @docs-private */\n controlType = 'select';\n /** @docs-private */\n stateChanges: Observable<void> = new Subject<void>();\n /** @docs-private */\n ngControl: NgControl | null = this.timeRange.ngControl;\n /** @docs-private */\n value: any;\n /** @docs-private */\n id: string;\n /** @docs-private */\n placeholder: string;\n /** @docs-private */\n focused: boolean;\n /** @docs-private */\n empty: boolean;\n /** @docs-private */\n required: boolean;\n /** @docs-private */\n disabled: boolean;\n /** @docs-private */\n errorState: boolean;\n /** @docs-private */\n onContainerClick(_event: MouseEvent): void {}\n /** @docs-private */\n focus(_options?: FocusOptions): void {}\n}\n","import { NgModule } from '@angular/core';\nimport { KbqTimeRange } from './time-range';\nimport { KbqTimeRangeEditor } from './time-range-editor';\nimport { KbqTimeRangeTitle } from './time-range-title';\nimport { KbqTimeRangeTitleAsControl, KbqTimeRangeTitlePlaceholder } from './time-range-title-as-form-field';\n\nconst COMPONENTS = [\n KbqTimeRange,\n KbqTimeRangeTitle,\n KbqTimeRangeEditor,\n KbqTimeRangeTitlePlaceholder,\n KbqTimeRangeTitleAsControl\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqTimeRangeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":"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"}
@@ -55,10 +55,10 @@ class KbqTimepickerErrorStateMatcher {
55
55
  isErrorState(control) {
56
56
  return !!control?.invalid;
57
57
  }
58
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqTimepickerErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
59
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqTimepickerErrorStateMatcher }); }
58
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqTimepickerErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
59
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqTimepickerErrorStateMatcher }); }
60
60
  }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqTimepickerErrorStateMatcher, decorators: [{
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqTimepickerErrorStateMatcher, decorators: [{
62
62
  type: Injectable
63
63
  }] });
64
64
  const KBQ_TIMEPICKER_ERROR_STATE_MATCHER = {
@@ -698,15 +698,15 @@ class KbqTimepicker {
698
698
  // @TODO resolve types
699
699
  this.errorStateTracker.ngControl = { control };
700
700
  }
701
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqTimepicker, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.DateAdapter, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
702
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: KbqTimepicker, isStandalone: true, selector: "input[kbqTimepicker]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", format: "format", min: "min", max: "max", value: "value", kbqValidationTooltip: "kbqValidationTooltip" }, outputs: { incorrectInput: "incorrectInput" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "paste": "onPaste($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "attr.required": "required", "attr.size": "getSize()", "attr.autocomplete": "\"off\"" }, classAttribute: "kbq-input kbq-timepicker" }, providers: [
701
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqTimepicker, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.DateAdapter, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
702
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: KbqTimepicker, isStandalone: true, selector: "input[kbqTimepicker]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", format: "format", min: "min", max: "max", value: "value", kbqValidationTooltip: "kbqValidationTooltip" }, outputs: { incorrectInput: "incorrectInput" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "paste": "onPaste($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "attr.required": "required", "attr.size": "getSize()", "attr.autocomplete": "\"off\"" }, classAttribute: "kbq-input kbq-timepicker" }, providers: [
703
703
  KBQ_TIMEPICKER_VALIDATORS,
704
704
  KBQ_TIMEPICKER_VALUE_ACCESSOR,
705
705
  KBQ_TIMEPICKER_ERROR_STATE_MATCHER,
706
706
  { provide: KbqFormFieldControl, useExisting: KbqTimepicker }
707
707
  ], exportAs: ["kbqTimepicker"], ngImport: i0 }); }
708
708
  }
709
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqTimepicker, decorators: [{
709
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqTimepicker, decorators: [{
710
710
  type: Directive,
711
711
  args: [{
712
712
  selector: 'input[kbqTimepicker]',
@@ -765,16 +765,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
765
765
  }] } });
766
766
 
767
767
  class KbqTimepickerModule {
768
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
769
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.18", ngImport: i0, type: KbqTimepickerModule, imports: [A11yModule,
768
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
769
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: KbqTimepickerModule, imports: [A11yModule,
770
770
  PlatformModule,
771
771
  FormsModule,
772
772
  KbqTimepicker], exports: [KbqTimepicker, KbqFormFieldModule] }); }
773
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqTimepickerModule, imports: [A11yModule,
773
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqTimepickerModule, imports: [A11yModule,
774
774
  PlatformModule,
775
775
  FormsModule, KbqFormFieldModule] }); }
776
776
  }
777
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqTimepickerModule, decorators: [{
777
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqTimepickerModule, decorators: [{
778
778
  type: NgModule,
779
779
  args: [{
780
780
  imports: [