@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-inline-edit.mjs","sources":["../../../packages/components/inline-edit/inline-edit.ts","../../../packages/components/inline-edit/inline-edit.html","../../../packages/components/inline-edit/module.ts","../../../packages/components/inline-edit/koobiq-components-inline-edit.ts"],"sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\nimport { CdkMonitorFocus, CdkTrapFocus, FocusMonitor } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n ElementRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n viewChild,\n viewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport {\n KbqAnimationCurves,\n KbqAnimationDurations,\n KbqComponentColors,\n PopUpPlacements\n} from '@koobiq/components/core';\nimport { KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqFormField, KbqLabel } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { skip } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nconst KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION = trigger('panelAnimation', [\n transition(':enter', [\n style({ transform: 'translateY(100%)', opacity: 0 }),\n animate(\n `${KbqAnimationDurations.Instant} ${KbqAnimationCurves.DecelerationCurve}`,\n style({ transform: 'translateY(0%)', opacity: 1 })\n )\n ])\n]);\n\nconst baseClass = 'kbq-inline-edit';\n\n/** @docs-private */\n@Directive({\n selector: '[kbqFocusRegionItem]',\n exportAs: 'kbqFocusRegionItem',\n host: {\n '(focusin)': 'isFocused = true',\n '(keydown.tab)': 'onTabOut($event)',\n '(keydown.shift.tab)': 'onTabOut($event)'\n }\n})\nexport class KbqFocusRegionItem {\n readonly tabOut = output<KeyboardEvent>();\n\n protected isFocused = false;\n\n protected onTabOut(event: KeyboardEvent) {\n if (this.isFocused) {\n this.tabOut.emit(event);\n }\n\n this.isFocused = !this.isFocused;\n }\n}\n\n/** Directive for easy using styles of inline edit placeholder publicly. */\n@Directive({\n selector: '[kbqInlineEditPlaceholder]',\n exportAs: 'kbqInlineEditPlaceholder',\n host: {\n class: 'kbq-inline-edit__placeholder'\n }\n})\nexport class KbqInlineEditPlaceholder {}\n\n/**\n * This directive enhances element acting as dropdown trigger,\n * visually indicating the active state with the `kbq-active` class.\n * Also, it prevents click/keydown events from being propagated to disable mode toggling of parent component.\n */\n@Directive({\n selector: '[kbqInlineEditMenu]',\n exportAs: 'kbqInlineEditMenu',\n host: {\n role: 'button',\n class: 'kbq-inline-edit__menu',\n '[class.kbq-active]': 'dropdownTrigger?.opened',\n '(click)': '$event.stopPropagation()',\n '(keydown.enter)': '$event.stopPropagation()',\n '(keydown.space)': '$event.stopPropagation()'\n }\n})\nexport class KbqInlineEditMenu {\n /** @docs-private */\n protected readonly dropdownTrigger = inject(KbqDropdownTrigger, { optional: true });\n}\n\n/**\n * Customizable component that enables edit-in-place logic for specified control and it's view.\n * This component is projecting edit/view mode templates and adds keyboard/pointer handlers.\n * Edit mode opens in a positioned overlay that matches the view mode width or can be customized.\n */\n@Component({\n selector: 'kbq-inline-edit',\n imports: [\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n KbqButtonModule,\n KbqIcon,\n KbqTooltipTrigger,\n KbqFocusRegionItem,\n CdkTrapFocus,\n CdkMonitorFocus\n ],\n templateUrl: './inline-edit.html',\n styleUrls: ['./inline-edit.scss', './inline-edit-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kbqInlineEdit',\n host: {\n class: baseClass,\n '[class]': 'className()',\n '[class.kbq-inline-edit_with-label]': '!!label()',\n '[class.kbq-inline-edit_with-menu]': '!!menu()',\n '[class.kbq-inline-edit_disabled]': 'disabled()',\n '(click)': 'onClick($event)',\n '(keydown.enter)': 'onClick($event)',\n '(keydown.space)': 'onClick($event)'\n },\n animations: [KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION]\n})\nexport class KbqInlineEdit {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly overlay = inject(Overlay);\n private readonly document = inject(DOCUMENT);\n\n /**\n * Whether to show save/cancel action buttons in edit mode.\n * @default false\n */\n readonly showActions = input(false, { transform: booleanAttribute });\n /**\n * Whether to automatically show validation error tooltips on save attempts.\n * @default true\n */\n readonly showTooltipOnError = input(true, { transform: booleanAttribute });\n /** Custom validation tooltip message. */\n readonly validationTooltip = input<string | TemplateRef<any>>();\n /**\n * Disables the component, preventing interaction and mode switching. Only allows menu dropdown.\n * @default false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Custom width in pixels for the edit mode overlay. Auto-calculated if not set. */\n readonly editModeWidth = input(undefined, { transform: numberAttribute });\n /** User-defined tooltip placement */\n readonly tooltipPlacement = input<PopUpPlacements>();\n /** Handler function to retrieve the current value */\n readonly getValueHandler = input<() => unknown>();\n /** Handler function to update the value */\n readonly setValueHandler = input<(value: any) => void>();\n /**\n * Customizable function that checks if saving on enter available.\n */\n readonly canSaveOnEnter = input(\n (event: KeyboardEvent): boolean =>\n hasModifierKey(event, 'ctrlKey', 'metaKey') || !(event.target instanceof HTMLTextAreaElement)\n );\n\n /** Emitted when the inline edit is saved successfully. */\n protected readonly saved = output();\n /** Emitted when the inline edit is canceled and changes are discarded. */\n protected readonly canceled = output();\n /** Emitted when mode switched to edit/view */\n protected readonly modeChange = output<'view' | 'edit'>();\n\n /** @docs-private */\n protected readonly menu = contentChild(KbqInlineEditMenu);\n /** @docs-private */\n protected readonly label = contentChild(KbqLabel);\n /** @docs-private */\n protected readonly formFieldRef = contentChild(KbqFormField);\n\n /** @docs-private */\n protected readonly overlayOrigin = viewChild.required(CdkOverlayOrigin);\n /** @docs-private */\n protected readonly tooltipTrigger = viewChild(KbqTooltipTrigger);\n /** @docs-private */\n protected readonly overlayDir = viewChild(CdkConnectedOverlay);\n /** @docs-private */\n protected readonly regionItems = viewChildren(KbqFocusRegionItem);\n\n /** @docs-private */\n protected readonly mode = signal<'view' | 'edit'>('view');\n /** @docs-private */\n protected readonly overlayWidth = signal<number | string>('');\n /** @docs-private */\n protected readonly scrollStrategy = signal<ScrollStrategy>(this.overlay.scrollStrategies.reposition());\n /** @docs-private */\n readonly modeAsReadonly = computed(() => this.mode());\n\n /** @docs-private */\n protected readonly className = computed(() => `${baseClass}_${this.mode()}`);\n /** @docs-private */\n protected readonly isEditMode = computed(() => this.mode() === 'edit');\n /** @docs-private */\n protected readonly tabIndex = computed(() => (this.isEditMode() || this.disabled() ? -1 : 0));\n\n /** @docs-private */\n protected readonly placements = PopUpPlacements;\n\n /** @docs-private */\n protected readonly colors = KbqComponentColors;\n\n private initialValue: unknown;\n\n constructor() {\n toObservable(this.mode)\n .pipe(skip(1), takeUntilDestroyed())\n .subscribe((currentMode) => this.modeChange.emit(currentMode));\n }\n\n /** Manually switch mode */\n toggleMode(): void {\n this.mode.update((mode) => (mode === 'view' ? 'edit' : 'view'));\n }\n\n /** @docs-private */\n protected onClick(event: Event): void {\n if (this.disabled() || this.isEditMode()) return;\n\n event.preventDefault();\n event.stopPropagation();\n this.focusMonitor.focusVia(this.overlayOrigin().elementRef, 'program');\n\n this.toggleMode();\n }\n\n /** @docs-private */\n protected onAttach(): void {\n this.setOverlayWidth();\n this.setOverlayKeydownListener();\n\n const formFieldRef = this.formFieldRef();\n\n formFieldRef?.control.stateChanges\n .pipe(takeUntil(this.overlayDir()!.overlayRef.detachments()))\n .subscribe(() => {\n if (!this.isInvalid()) {\n const tooltipTrigger = this.tooltipTrigger();\n\n tooltipTrigger?.isOpen && tooltipTrigger?.hide();\n }\n });\n\n setTimeout(() => {\n formFieldRef?.focus();\n this.initialValue = this.getValue();\n\n const input = this.getInputNativeElement();\n\n if (this.initialValue) input?.select();\n\n if (formFieldRef) {\n this.openPanel(formFieldRef);\n }\n }, 0);\n }\n\n /** @docs-private */\n protected save($event?: Event): void {\n if (this.isInvalid()) {\n $event?.stopPropagation();\n this.showTooltipOnError() && this.tooltipTrigger()?.show();\n } else {\n this.toggleMode();\n this.saved.emit();\n }\n }\n\n /** @docs-private */\n protected cancel(): void {\n this.setValue(this.initialValue);\n\n const input = this.getInputNativeElement();\n\n if (input) {\n input.selectionStart = input.selectionEnd = null;\n }\n\n this.toggleMode();\n this.canceled.emit();\n }\n\n /** @docs-private */\n protected onOverlayKeydown(event: KeyboardEvent): void {\n this.formFieldRef()?.control.ngControl?.control?.markAsTouched();\n const canSaveOnEnter = this.canSaveOnEnter();\n\n switch (event.key) {\n case 'Escape': {\n this.cancel();\n break;\n }\n case 'Enter': {\n if (canSaveOnEnter(event)) {\n event.preventDefault();\n this.formFieldRef()?.control.ngControl?.control?.markAsTouched();\n setTimeout(() => this.save(event));\n }\n\n break;\n }\n default: {\n return;\n }\n }\n }\n\n /**\n * Sets up Tab key listeners on region items.\n * Single item: Tab moves to next edit.\n * Multiple items: Shift+Tab on first or Tab on last moves to next edit.\n */\n private setOverlayKeydownListener(): void {\n const regionItems = this.regionItems();\n\n if (regionItems.length === 0) return;\n\n const firstItem = regionItems.at(0);\n const lastItem = regionItems.at(regionItems.length - 1);\n\n if (regionItems.length === 1) {\n firstItem?.tabOut.subscribe((event) => this.saveAndFocusNextInlineEdit(event));\n } else {\n firstItem?.tabOut.subscribe(\n (event) => hasModifierKey(event, 'shiftKey') && this.saveAndFocusNextInlineEdit(event)\n );\n\n lastItem?.tabOut.subscribe(\n (event) => !hasModifierKey(event, 'shiftKey') && this.saveAndFocusNextInlineEdit(event)\n );\n }\n }\n\n private saveAndFocusNextInlineEdit(event: KeyboardEvent): void {\n this.save(event);\n if (this.isInvalid()) return;\n\n setTimeout(() => {\n const activeElement = this.document.activeElement;\n\n if (activeElement?.classList?.contains('kbq-inline-edit__focus_container')) {\n activeElement.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter' }));\n }\n });\n }\n\n private isInvalid(): boolean {\n const formFieldRef = this.formFieldRef();\n\n if (!formFieldRef) return false;\n\n return formFieldRef.invalid;\n }\n\n private getValue() {\n const getValueHandler = this.getValueHandler();\n\n if (getValueHandler) return getValueHandler();\n\n const control = this.coerceControl();\n\n return control?.value;\n }\n\n private setValue<T>(value: T): void {\n const setValue = this.setValueHandler();\n\n if (setValue) {\n setValue(this.initialValue);\n\n return;\n }\n\n const control = this.coerceControl();\n\n if (!control) return;\n\n if (control instanceof AbstractControl) {\n control.setValue(value);\n } else {\n control.value = value;\n }\n }\n\n private coerceControl() {\n const formFieldRef = this.formFieldRef();\n\n if (!formFieldRef) return null;\n\n if (formFieldRef.control.ngControl instanceof NgControl) {\n return formFieldRef.control.ngControl.control;\n }\n\n return formFieldRef.control;\n }\n\n private setOverlayWidth(): void {\n const editModeWidth = this.editModeWidth();\n\n if (editModeWidth) {\n this.overlayWidth.set(editModeWidth);\n\n return;\n }\n\n const elementRef: ElementRef<HTMLElement> | undefined = this.label()\n ? this.overlayOrigin().elementRef\n : this.elementRef;\n\n this.overlayWidth.set(elementRef?.nativeElement.offsetWidth ?? '');\n }\n\n private openPanel(formFieldRef: KbqFormField) {\n const control = formFieldRef.control;\n\n control?.open?.();\n }\n\n private getInputNativeElement(): HTMLInputElement | HTMLTextAreaElement | null {\n return this.overlayDir()?.overlayRef.overlayElement.querySelector('input:not([type=\"file\"]),textarea') ?? null;\n }\n}\n","@if (label()) {\n <div class=\"kbq-inline-edit__label\">\n <ng-content select=\"kbq-label\" />\n </div>\n}\n\n<div class=\"kbq-inline-edit__view-container\">\n <ng-content select=\"[kbqInlineEditViewMode]\" />\n\n <div\n #overlayOrigin\n class=\"kbq-inline-edit__focus_container kbq-inline-edit__overlay-origin\"\n cdkMonitorElementFocus\n cdkOverlayOrigin\n [tabIndex]=\"tabIndex()\"\n (keydown.enter)=\"onClick($event)\"\n ></div>\n\n @if (menu() && mode() === 'view') {\n <div class=\"kbq-inline-edit__menu-mask kbq-mask\">\n <div class=\"kbq-inline-edit__menu-mask-fade kbq-mask__fade\"></div>\n <div class=\"kbq-inline-edit__menu-mask-container kbq-mask__container\">\n <ng-content select=\"[kbqInlineEditMenu]\" />\n </div>\n </div>\n }\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOpen]=\"isEditMode()\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOffsetY]=\"-overlayOrigin.offsetHeight\"\n [cdkConnectedOverlayWidth]=\"overlayWidth()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy()\"\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n (attach)=\"onAttach()\"\n (overlayOutsideClick)=\"save($event)\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n >\n <div class=\"kbq-inline-edit__panel\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div\n class=\"kbq-inline-edit__control-container\"\n kbqFocusRegionItem\n [kbqTooltipColor]=\"colors.Error\"\n [kbqTooltip]=\"validationTooltip() ?? ''\"\n [kbqTooltipArrow]=\"false\"\n [kbqTrigger]=\"'manual'\"\n [kbqPlacement]=\"tooltipPlacement() ?? placements.TopLeft\"\n >\n <ng-content select=\"[kbqInlineEditEditMode]\" />\n </div>\n\n @if (showActions()) {\n <div class=\"kbq-inline-edit__action-buttons\" role=\"group\" [@panelAnimation]>\n <button kbq-button [color]=\"'contrast'\" (click)=\"save($event)\">\n <i kbq-icon=\"kbq-check_16\"></i>\n </button>\n <button\n kbqFocusRegionItem\n kbq-button\n [color]=\"'contrast-fade'\"\n (click)=\"cancel()\"\n (keydown.enter)=\"cancel()\"\n >\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n }\n </div>\n </ng-template>\n</div>\n","import { NgModule } from '@angular/core';\nimport { KbqInlineEdit, KbqInlineEditMenu, KbqInlineEditPlaceholder } from './inline-edit';\n\nconst COMPONENTS = [\n KbqInlineEdit,\n KbqInlineEditPlaceholder,\n KbqInlineEditMenu\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqInlineEditModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-inline-edit.mjs","sources":["../../../packages/components/inline-edit/inline-edit.ts","../../../packages/components/inline-edit/inline-edit.html","../../../packages/components/inline-edit/module.ts","../../../packages/components/inline-edit/koobiq-components-inline-edit.ts"],"sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\nimport { CdkMonitorFocus, CdkTrapFocus } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { CdkConnectedOverlay, Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n contentChildren,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n viewChild,\n viewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport {\n isElement,\n KbqAnimationCurves,\n KbqAnimationDurations,\n KbqComponentColors,\n PopUpPlacements\n} from '@koobiq/components/core';\nimport { KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqFormField, KbqLabel } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { merge, skip } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nconst KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION = trigger('panelAnimation', [\n transition(':enter', [\n style({ transform: 'translateY(100%)', opacity: 0 }),\n animate(\n `${KbqAnimationDurations.Instant} ${KbqAnimationCurves.DecelerationCurve}`,\n style({ transform: 'translateY(0%)', opacity: 1 })\n )\n ])\n]);\n\nconst baseClass = 'kbq-inline-edit';\n\nexport type KbqInlineEditMode = 'view' | 'edit';\n\n/** @docs-private */\n@Directive({\n selector: '[kbqFocusRegionItem]',\n exportAs: 'kbqFocusRegionItem',\n host: {\n '(focusin)': 'isFocused = true',\n '(keydown.tab)': 'onTabOut($event)',\n '(keydown.shift.tab)': 'onTabOut($event)'\n }\n})\nexport class KbqFocusRegionItem {\n readonly tabOut = output<KeyboardEvent>();\n\n protected isFocused = false;\n\n protected onTabOut(event: KeyboardEvent) {\n if (this.isFocused) {\n this.tabOut.emit(event);\n }\n\n this.isFocused = !this.isFocused;\n }\n}\n\n/** Directive for easy using styles of inline edit placeholder publicly. */\n@Directive({\n selector: '[kbqInlineEditPlaceholder]',\n exportAs: 'kbqInlineEditPlaceholder',\n host: {\n class: 'kbq-inline-edit__placeholder'\n }\n})\nexport class KbqInlineEditPlaceholder {}\n\n/**\n * This directive enhances element acting as dropdown trigger,\n * visually indicating the active state with the `kbq-active` class.\n * Also, it prevents click/keydown events from being propagated to disable mode toggling of parent component.\n */\n@Directive({\n selector: '[kbqInlineEditMenu]',\n exportAs: 'kbqInlineEditMenu',\n host: {\n role: 'button',\n class: 'kbq-inline-edit__menu',\n '[class.kbq-active]': 'dropdownTrigger?.opened',\n '(click)': '$event.stopPropagation()',\n '(keydown.enter)': '$event.stopPropagation()',\n '(keydown.space)': '$event.stopPropagation()'\n }\n})\nexport class KbqInlineEditMenu {\n /** @docs-private */\n protected readonly dropdownTrigger = inject(KbqDropdownTrigger, { optional: true });\n}\n\n/**\n * Customizable component that enables edit-in-place logic for specified control and it's view.\n * This component is projecting edit/view mode templates and adds keyboard/pointer handlers.\n * Edit mode opens in a positioned overlay that matches the view mode width or can be customized.\n */\n@Component({\n selector: 'kbq-inline-edit',\n imports: [\n CdkConnectedOverlay,\n KbqButtonModule,\n KbqIcon,\n KbqTooltipTrigger,\n KbqFocusRegionItem,\n CdkTrapFocus\n ],\n templateUrl: './inline-edit.html',\n styleUrls: ['./inline-edit.scss', './inline-edit-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kbqInlineEdit',\n host: {\n class: baseClass,\n // @TODO: resolve tab queue with content-first (DS-4810)\n '[attr.tabindex]': 'tabIndex()',\n '[class]': 'className()',\n '[class.kbq-inline-edit_with-label]': '!!label()',\n '[class.kbq-inline-edit_with-menu]': '!!menu()',\n '[class.kbq-inline-edit_disabled]': 'disabled()',\n '(click)': 'onClick($event)',\n '(keydown.enter)': 'onClick($event)',\n '(keydown.space)': 'onClick($event)'\n },\n hostDirectives: [\n CdkMonitorFocus\n ],\n animations: [KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION]\n})\nexport class KbqInlineEdit {\n private readonly overlay = inject(Overlay);\n private readonly document = inject(DOCUMENT);\n private readonly resizeObserver = inject(SharedResizeObserver);\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Whether to show save/cancel action buttons in edit mode.\n * @default false\n */\n readonly showActions = input(false, { transform: booleanAttribute });\n /**\n * Whether to automatically show validation error tooltips on save attempts.\n * @default true\n */\n readonly showTooltipOnError = input(true, { transform: booleanAttribute });\n /** Custom validation tooltip message. */\n readonly validationTooltip = input<string | TemplateRef<any>>();\n /**\n * Disables the component, preventing interaction and mode switching. Only allows menu dropdown.\n * @default false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Custom width in pixels for the edit mode overlay. Auto-calculated if not set. */\n readonly editModeWidth = input(undefined, { transform: numberAttribute });\n /** User-defined tooltip placement */\n readonly tooltipPlacement = input<PopUpPlacements>();\n /** Handler function to retrieve the current value */\n readonly getValueHandler = input<() => unknown>();\n /** Handler function to update the value */\n readonly setValueHandler = input<(value: any) => void>();\n /** Customizable function that checks if saving on enter available. */\n readonly canSaveOnEnter = input(\n (event: KeyboardEvent): boolean =>\n hasModifierKey(event, 'ctrlKey', 'metaKey') || !(event.target instanceof HTMLTextAreaElement)\n );\n\n /**\n * CSS selectors for elements in view mode that should handle clicks instead of opening edit mode.\n * Override to replace or extend the default list.\n *\n * @example\n * `<kbq-inline-edit [interactiveSelectors]=\"['a', 'kbq-tag', 'button']\">`\n */\n readonly interactiveSelectors = input<string[]>(['a', 'kbq-tag']);\n\n /** Emitted when the inline edit is saved successfully. */\n protected readonly saved = output();\n /** Emitted when the inline edit is canceled and changes are discarded. */\n protected readonly canceled = output();\n /** Emitted when mode switched to edit/view */\n protected readonly modeChange = output<KbqInlineEditMode>();\n\n /** @docs-private */\n protected readonly menu = contentChild(KbqInlineEditMenu);\n /** @docs-private */\n protected readonly label = contentChild(KbqLabel);\n\n /** @docs-private */\n protected readonly formFieldRef = computed<KbqFormField | undefined>(() => this.formFieldRefList()[0]);\n /** @docs-private */\n protected readonly formFieldRefList = contentChildren(KbqFormField, { descendants: true });\n\n /** @docs-private */\n protected overlayOrigin: HTMLElement = this.elementRef.nativeElement;\n /** @docs-private */\n protected readonly tooltipTrigger = viewChild(KbqTooltipTrigger);\n /** @docs-private */\n protected readonly viewContainer = viewChild.required<ElementRef<HTMLElement>>('viewContainer');\n /** @docs-private */\n protected readonly overlayDir = viewChild(CdkConnectedOverlay);\n /** @docs-private */\n protected readonly regionItems = viewChildren(KbqFocusRegionItem);\n\n /** @docs-private */\n protected readonly mode = signal<KbqInlineEditMode>('view');\n /** @docs-private */\n protected readonly overlayWidth = signal<number | string>('');\n /** @docs-private */\n protected readonly scrollStrategy = signal<ScrollStrategy>(this.overlay.scrollStrategies.reposition());\n /** @docs-private */\n readonly modeAsReadonly = computed(() => this.mode());\n\n /** @docs-private */\n protected readonly className = computed(() => `${baseClass}_${this.mode()}`);\n /** @docs-private */\n protected readonly isEditMode = computed(() => this.mode() === 'edit');\n /** @docs-private */\n protected readonly tabIndex = computed(() => (this.isEditMode() || this.disabled() ? -1 : 0));\n\n /** @docs-private */\n protected readonly placements = PopUpPlacements;\n\n /** @docs-private */\n protected readonly colors = KbqComponentColors;\n\n private initialValue: unknown;\n\n constructor() {\n toObservable(this.mode)\n .pipe(skip(1), takeUntilDestroyed())\n .subscribe((currentMode) => this.modeChange.emit(currentMode));\n\n effect(() => {\n this.overlayOrigin = this.label() ? this.viewContainer().nativeElement : this.elementRef.nativeElement;\n });\n }\n\n /** Manually switch mode */\n toggleMode(): void {\n this.mode.update((mode) => (mode === 'view' ? 'edit' : 'view'));\n }\n\n /** @docs-private */\n protected onClick(event: Event): void {\n if (this.disabled() || this.isEditMode() || this.isInteractiveElement(event.target)) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n this.toggleMode();\n }\n\n /** @docs-private */\n protected onAttach(): void {\n this.setOverlayWidth();\n this.setOverlayKeydownListener();\n\n const formFieldRefList = this.formFieldRefList();\n\n merge(formFieldRefList.map((ref) => ref.control.stateChanges))\n .pipe(takeUntil(this.overlayDir()!.overlayRef.detachments()))\n .subscribe(() => {\n if (!this.isInvalid()) {\n const tooltipTrigger = this.tooltipTrigger();\n\n tooltipTrigger?.isOpen && tooltipTrigger?.hide();\n }\n });\n\n setTimeout(() => {\n const formFieldRef = this.formFieldRef();\n\n if (!formFieldRef) return;\n\n formFieldRef.focus();\n\n this.initialValue = this.getValue();\n\n const input = this.getInputNativeElement();\n\n if (this.initialValue) input?.select();\n\n this.openPanel(formFieldRef);\n }, 0);\n }\n\n /** @docs-private */\n protected save($event?: Event): void {\n if (this.isInvalid()) {\n $event?.stopPropagation();\n this.showTooltipOnError() && this.tooltipTrigger()?.show();\n } else {\n this.toggleMode();\n this.saved.emit();\n }\n }\n\n /** @docs-private */\n protected cancel(): void {\n this.setValue(this.initialValue);\n\n const input = this.getInputNativeElement();\n\n if (input) {\n input.selectionStart = input.selectionEnd = null;\n }\n\n this.toggleMode();\n this.canceled.emit();\n }\n\n /** @docs-private */\n protected onOverlayKeydown(event: KeyboardEvent): void {\n this.markAllAsTouched();\n const canSaveOnEnter = this.canSaveOnEnter();\n\n switch (event.key) {\n case 'Escape': {\n this.cancel();\n break;\n }\n case 'Enter': {\n if (canSaveOnEnter(event)) {\n event.preventDefault();\n this.markAllAsTouched();\n setTimeout(() => this.save(event));\n }\n\n break;\n }\n default: {\n return;\n }\n }\n }\n\n /**\n * Block propagation of overlay outside click.\n * Used to prevent reopening when target is inline edit itself.\n * @docs-private\n */\n protected onOverlayOutsideClick($event: Event) {\n if (isElement($event.target) && this.elementRef.nativeElement.contains($event.target)) {\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n this.save($event);\n }\n\n private isInteractiveElement(target: EventTarget | null): boolean {\n const selectors = this.interactiveSelectors();\n\n if (!selectors.length) return false;\n\n return isElement(target) && !!target.closest(this.interactiveSelectors().join(','));\n }\n\n /**\n * Sets up Tab key listeners on region items.\n * Single item: Tab moves to next edit.\n * Multiple items: Shift+Tab on first or Tab on last moves to next edit.\n */\n private setOverlayKeydownListener(): void {\n const regionItems = this.regionItems();\n\n if (regionItems.length === 0) return;\n\n const firstItem = regionItems.at(0);\n const lastItem = regionItems.at(regionItems.length - 1);\n\n if (regionItems.length === 1) {\n firstItem?.tabOut.subscribe((event) => this.saveAndFocusNextInlineEdit(event));\n } else {\n firstItem?.tabOut.subscribe(\n (event) => hasModifierKey(event, 'shiftKey') && this.saveAndFocusNextInlineEdit(event)\n );\n\n lastItem?.tabOut.subscribe(\n (event) => !hasModifierKey(event, 'shiftKey') && this.saveAndFocusNextInlineEdit(event)\n );\n }\n }\n\n private saveAndFocusNextInlineEdit(event: Event): void {\n this.save(event);\n if (this.isInvalid()) return;\n\n setTimeout(() => {\n const activeElement = this.document.activeElement;\n\n if (activeElement?.classList?.contains('kbq-inline-edit')) {\n activeElement.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter' }));\n }\n });\n }\n\n private isInvalid(): boolean {\n const formFieldRefList = this.formFieldRefList();\n\n if (!formFieldRefList.length) return false;\n\n return formFieldRefList.some((ref) => ref.invalid);\n }\n\n private getValue() {\n const getValueHandler = this.getValueHandler();\n\n if (getValueHandler) return getValueHandler();\n\n const formFieldRefList = this.formFieldRefList();\n\n if (!formFieldRefList.length) return;\n\n return this.formFieldRefList().map((ref) => this.coerceControl(ref)?.value);\n }\n\n private setValue<T>(value: T): void {\n const setValue = this.setValueHandler();\n\n if (setValue) {\n setValue(value);\n\n return;\n }\n\n const formFieldRefList = this.formFieldRefList();\n\n if (!formFieldRefList.length || !Array.isArray(value)) return;\n\n value.forEach((controlValue, index) => {\n const control = this.coerceControl(formFieldRefList[index]);\n\n if (!control) return;\n\n if (control instanceof AbstractControl) {\n control.setValue(controlValue);\n } else {\n control.value = controlValue;\n }\n });\n }\n\n private coerceControl(formFieldRef: KbqFormField) {\n if (formFieldRef.control.ngControl instanceof NgControl) {\n return formFieldRef.control.ngControl.control;\n }\n\n return formFieldRef.control;\n }\n\n private setOverlayWidth(): void {\n const editModeWidth = this.editModeWidth();\n\n if (editModeWidth) {\n this.overlayWidth.set(editModeWidth);\n\n return;\n }\n\n const element: HTMLElement | null = this.label()\n ? this.elementRef.nativeElement.querySelector('.kbq-inline-edit__focus_container')\n : this.elementRef.nativeElement;\n\n if (element) {\n this.resizeObserver\n .observe(element)\n .pipe(takeUntil(this.overlayDir()!.overlayRef.detachments()))\n .subscribe(() => {\n this.overlayWidth.set(element.offsetWidth);\n });\n }\n\n this.overlayWidth.set(element?.offsetWidth ?? '');\n }\n\n private openPanel(formFieldRef: KbqFormField) {\n const control = formFieldRef.control;\n\n control?.open?.();\n }\n\n private getInputNativeElement(): HTMLInputElement | HTMLTextAreaElement | null {\n return this.overlayDir()?.overlayRef.overlayElement.querySelector('input:not([type=\"file\"]),textarea') ?? null;\n }\n\n private markAllAsTouched(): void {\n this.formFieldRefList().forEach((formField) => formField.control.ngControl?.control?.markAsTouched());\n }\n}\n","<div class=\"kbq-inline-edit__focus_container\">\n @if (label()) {\n <div class=\"kbq-inline-edit__label\">\n <ng-content select=\"kbq-label\" />\n </div>\n }\n\n <div #viewContainer class=\"kbq-inline-edit__view-container\">\n <div class=\"kbq-inline-edit__view-content\">\n <ng-content select=\"[kbqInlineEditViewMode]\" />\n </div>\n\n @if (menu() && mode() === 'view') {\n <div class=\"kbq-inline-edit__menu-mask kbq-mask\">\n <div class=\"kbq-inline-edit__menu-mask-fade kbq-mask__fade\"></div>\n <div class=\"kbq-inline-edit__menu-mask-container kbq-mask__container\">\n <ng-content select=\"[kbqInlineEditMenu]\" />\n </div>\n </div>\n }\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOpen]=\"isEditMode()\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOffsetY]=\"-overlayOrigin.offsetHeight\"\n [cdkConnectedOverlayWidth]=\"overlayWidth()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy()\"\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n (attach)=\"onAttach()\"\n (overlayOutsideClick)=\"onOverlayOutsideClick($event)\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n >\n <div class=\"cdk-visually-hidden\" aria-hidden=\"true\" kbqFocusRegionItem tabindex=\"0\"></div>\n <div class=\"kbq-inline-edit__panel\" cdkTrapFocusAutoCapture [cdkTrapFocus]=\"false\">\n <div\n class=\"kbq-inline-edit__control-container\"\n [kbqTooltipColor]=\"colors.Error\"\n [kbqTooltip]=\"validationTooltip() ?? ''\"\n [kbqTooltipArrow]=\"false\"\n [kbqTrigger]=\"'manual'\"\n [kbqPlacement]=\"tooltipPlacement() ?? placements.TopLeft\"\n >\n <ng-content select=\"[kbqInlineEditEditMode]\" />\n </div>\n\n @if (showActions()) {\n <div class=\"kbq-inline-edit__action-buttons\" role=\"group\" [@panelAnimation]>\n <button kbq-button [color]=\"'contrast'\" (click)=\"save($event)\">\n <i kbq-icon=\"kbq-check_16\"></i>\n </button>\n <button kbq-button [color]=\"'contrast-fade'\" (click)=\"cancel()\">\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n }\n </div>\n <div class=\"cdk-visually-hidden\" aria-hidden=\"true\" kbqFocusRegionItem tabindex=\"0\"></div>\n </ng-template>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { KbqInlineEdit, KbqInlineEditMenu, KbqInlineEditPlaceholder } from './inline-edit';\n\nconst COMPONENTS = [\n KbqInlineEdit,\n KbqInlineEditPlaceholder,\n KbqInlineEditMenu\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqInlineEditModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
2
  import { getSupportedInputTypes } from '@angular/cdk/platform';
3
3
  import * as i0 from '@angular/core';
4
- import { forwardRef, EventEmitter, booleanAttribute, Input, Attribute, Optional, Inject, Directive, InjectionToken, Self, NgModule } from '@angular/core';
4
+ import { forwardRef, EventEmitter, booleanAttribute, Input, Attribute, Optional, Inject, Directive, InjectionToken, inject, Self, NgModule } from '@angular/core';
5
5
  import * as i1 from '@angular/forms';
6
6
  import { NG_VALUE_ACCESSOR, NG_VALIDATORS, Validators, FormsModule } from '@angular/forms';
7
7
  import * as i3 from '@koobiq/components/core';
8
- import { ruRUFormattersData, KBQ_DEFAULT_PRECISION_SEPARATOR, normalizeNumber, checkAndNormalizeLocalizedNumber, formatNumberWithLocale, KBQ_LOCALE_SERVICE } from '@koobiq/components/core';
8
+ import { ruRUFormattersData, KBQ_DEFAULT_PRECISION_SEPARATOR, normalizeNumber, checkAndNormalizeLocalizedNumber, formatNumberWithLocale, KBQ_LOCALE_SERVICE, KBQ_VALIDATION } from '@koobiq/components/core';
9
9
  import { KbqFormFieldControl, KbqFormFieldModule } from '@koobiq/components/form-field';
10
10
  import { Subject } from 'rxjs';
11
11
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@@ -340,10 +340,10 @@ class KbqNumberInput {
340
340
  }
341
341
  return `${formattedIntPart}${this.fractionSeparator}${formattedFractionPart}`;
342
342
  }
343
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqNumberInput, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: 'step', attribute: true }, { token: 'big-step', attribute: true }, { token: 'min', attribute: true }, { token: 'max', attribute: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
344
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.18", type: KbqNumberInput, isStandalone: true, selector: "input[kbqNumberInput]", inputs: { integer: ["integer", "integer", booleanAttribute], bigStep: "bigStep", step: "step", min: "min", max: "max", withThousandSeparator: ["withThousandSeparator", "withThousandSeparator", booleanAttribute], startFormattingFrom: "startFormattingFrom", value: "value", disabled: "disabled" }, host: { listeners: { "blur": "focusChanged(false)", "focus": "focusChanged(true)", "paste": "onPaste($event)", "keydown": "onKeyDown($event)", "input": "onInput($event)" } }, providers: [KBQ_NUMBER_INPUT_VALUE_ACCESSOR], exportAs: ["kbqNumericalInput"], ngImport: i0 }); }
343
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqNumberInput, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: 'step', attribute: true }, { token: 'big-step', attribute: true }, { token: 'min', attribute: true }, { token: 'max', attribute: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
344
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.20", type: KbqNumberInput, isStandalone: true, selector: "input[kbqNumberInput]", inputs: { integer: ["integer", "integer", booleanAttribute], bigStep: "bigStep", step: "step", min: "min", max: "max", withThousandSeparator: ["withThousandSeparator", "withThousandSeparator", booleanAttribute], startFormattingFrom: "startFormattingFrom", value: "value", disabled: "disabled" }, host: { listeners: { "blur": "focusChanged(false)", "focus": "focusChanged(true)", "paste": "onPaste($event)", "keydown": "onKeyDown($event)", "input": "onInput($event)" } }, providers: [KBQ_NUMBER_INPUT_VALUE_ACCESSOR], exportAs: ["kbqNumericalInput"], ngImport: i0 }); }
345
345
  }
346
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqNumberInput, decorators: [{
346
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqNumberInput, decorators: [{
347
347
  type: Directive,
348
348
  args: [{
349
349
  selector: `input[kbqNumberInput]`,
@@ -484,6 +484,7 @@ class KbqInput {
484
484
  this.parentForm = parentForm;
485
485
  this.parentFormGroup = parentFormGroup;
486
486
  this.defaultErrorStateMatcher = defaultErrorStateMatcher;
487
+ this.useLegacyValidation = inject(KBQ_VALIDATION, { optional: true })?.useValidation ?? false;
487
488
  /** Whether the component is in an error state. */
488
489
  this.errorState = false;
489
490
  /**
@@ -554,7 +555,7 @@ class KbqInput {
554
555
  }
555
556
  onBlur() {
556
557
  this.focusChanged(false);
557
- if (this.ngControl?.control) {
558
+ if (this.useLegacyValidation && this.ngControl?.control) {
558
559
  const control = this.ngControl.control;
559
560
  control.updateValueAndValidity({ emitEvent: false });
560
561
  control.statusChanges.emit(control.status);
@@ -605,15 +606,15 @@ class KbqInput {
605
606
  const validity = this.elementRef.nativeElement.validity;
606
607
  return validity?.badInput;
607
608
  }
608
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqInput, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: KbqNumberInput, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: KBQ_INPUT_VALUE_ACCESSOR, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
609
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: KbqInput, isStandalone: true, selector: "input[kbqInput],input[kbqNumberInput]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", type: "type", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "kbq-input" }, providers: [
609
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqInput, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: KbqNumberInput, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: KBQ_INPUT_VALUE_ACCESSOR, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
610
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: KbqInput, isStandalone: true, selector: "input[kbqInput],input[kbqNumberInput]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", type: "type", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "kbq-input" }, providers: [
610
611
  {
611
612
  provide: KbqFormFieldControl,
612
613
  useExisting: KbqInput
613
614
  }
614
615
  ], exportAs: ["kbqInput"], usesOnChanges: true, ngImport: i0 }); }
615
616
  }
616
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqInput, decorators: [{
617
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqInput, decorators: [{
617
618
  type: Directive,
618
619
  args: [{
619
620
  selector: `input[kbqInput],input[kbqNumberInput]`,
@@ -671,10 +672,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
671
672
  type: Input
672
673
  }] } });
673
674
  class KbqInputMono {
674
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqInputMono, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
675
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: KbqInputMono, isStandalone: true, selector: "input[kbqInputMonospace]", host: { classAttribute: "kbq-input_monospace" }, exportAs: ["KbqInputMonospace"], ngImport: i0 }); }
675
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqInputMono, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
676
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: KbqInputMono, isStandalone: true, selector: "input[kbqInputMonospace]", host: { classAttribute: "kbq-input_monospace" }, exportAs: ["KbqInputMonospace"], ngImport: i0 }); }
676
677
  }
677
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqInputMono, decorators: [{
678
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqInputMono, decorators: [{
678
679
  type: Directive,
679
680
  args: [{
680
681
  selector: 'input[kbqInputMonospace]',
@@ -710,10 +711,10 @@ class MinValidator {
710
711
  createValidator() {
711
712
  this.validator = Validators.min(parseInt(this.min, 10));
712
713
  }
713
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: MinValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
714
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: MinValidator, isStandalone: true, selector: "[min][formControlName],[min][formControl],[min][ngModel]", inputs: { min: "min" }, host: { properties: { "attr.min": "min ? min : null" } }, providers: [MIN_VALIDATOR], usesOnChanges: true, ngImport: i0 }); }
714
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MinValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
715
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: MinValidator, isStandalone: true, selector: "[min][formControlName],[min][formControl],[min][ngModel]", inputs: { min: "min" }, host: { properties: { "attr.min": "min ? min : null" } }, providers: [MIN_VALIDATOR], usesOnChanges: true, ngImport: i0 }); }
715
716
  }
716
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: MinValidator, decorators: [{
717
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MinValidator, decorators: [{
717
718
  type: Directive,
718
719
  args: [{
719
720
  selector: '[min][formControlName],[min][formControl],[min][ngModel]',
@@ -752,10 +753,10 @@ class MaxValidator {
752
753
  createValidator() {
753
754
  this.validator = Validators.max(parseInt(this.max, 10));
754
755
  }
755
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: MaxValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
756
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: MaxValidator, isStandalone: true, selector: "[max][formControlName],[max][formControl],[max][ngModel]", inputs: { max: "max" }, host: { properties: { "attr.max": "max ? max : null" } }, providers: [MAX_VALIDATOR], usesOnChanges: true, ngImport: i0 }); }
756
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MaxValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
757
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: MaxValidator, isStandalone: true, selector: "[max][formControlName],[max][formControl],[max][ngModel]", inputs: { max: "max" }, host: { properties: { "attr.max": "max ? max : null" } }, providers: [MAX_VALIDATOR], usesOnChanges: true, ngImport: i0 }); }
757
758
  }
758
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: MaxValidator, decorators: [{
759
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MaxValidator, decorators: [{
759
760
  type: Directive,
760
761
  args: [{
761
762
  selector: '[max][formControlName],[max][formControl],[max][ngModel]',
@@ -837,6 +838,7 @@ class KbqInputPassword {
837
838
  this.parentForm = parentForm;
838
839
  this.parentFormGroup = parentFormGroup;
839
840
  this.defaultErrorStateMatcher = defaultErrorStateMatcher;
841
+ this.useLegacyValidation = inject(KBQ_VALIDATION, { optional: true })?.useValidation ?? false;
840
842
  /** Whether the component is in an error state. */
841
843
  this.errorState = false;
842
844
  /**
@@ -907,7 +909,7 @@ class KbqInputPassword {
907
909
  }
908
910
  onBlur() {
909
911
  this.focusChanged(false);
910
- if (this.ngControl?.control) {
912
+ if (this.useLegacyValidation && this.ngControl?.control) {
911
913
  const control = this.ngControl.control;
912
914
  control.updateValueAndValidity({ emitEvent: false });
913
915
  control.statusChanges.emit(control.status);
@@ -949,15 +951,15 @@ class KbqInputPassword {
949
951
  // The `validity` property won't be present on platform-server.
950
952
  return this.elementRef.nativeElement.validity?.badInput;
951
953
  }
952
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqInputPassword, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: KBQ_INPUT_VALUE_ACCESSOR, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
953
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: KbqInputPassword, isStandalone: true, selector: "input[kbqInputPassword]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "input": "onInput()" }, properties: { "attr.id": "id", "attr.type": "elementType", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "kbq-input kbq-input-password" }, providers: [
954
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqInputPassword, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: KBQ_INPUT_VALUE_ACCESSOR, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
955
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: KbqInputPassword, isStandalone: true, selector: "input[kbqInputPassword]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "input": "onInput()" }, properties: { "attr.id": "id", "attr.type": "elementType", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "kbq-input kbq-input-password" }, providers: [
954
956
  {
955
957
  provide: KbqFormFieldControl,
956
958
  useExisting: KbqInputPassword
957
959
  }
958
960
  ], exportAs: ["kbqInputPassword"], usesOnChanges: true, ngImport: i0 }); }
959
961
  }
960
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqInputPassword, decorators: [{
962
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqInputPassword, decorators: [{
961
963
  type: Directive,
962
964
  args: [{
963
965
  selector: `input[kbqInputPassword]`,
@@ -1012,8 +1014,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
1012
1014
  }] } });
1013
1015
 
1014
1016
  class KbqInputModule {
1015
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1016
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.18", ngImport: i0, type: KbqInputModule, imports: [A11yModule,
1017
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1018
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: KbqInputModule, imports: [A11yModule,
1017
1019
  FormsModule,
1018
1020
  KbqIconModule,
1019
1021
  KbqInput,
@@ -1028,11 +1030,11 @@ class KbqInputModule {
1028
1030
  MinValidator,
1029
1031
  MaxValidator,
1030
1032
  KbqFormFieldModule] }); }
1031
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqInputModule, imports: [A11yModule,
1033
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqInputModule, imports: [A11yModule,
1032
1034
  FormsModule,
1033
1035
  KbqIconModule, KbqFormFieldModule] }); }
1034
1036
  }
1035
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqInputModule, decorators: [{
1037
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: KbqInputModule, decorators: [{
1036
1038
  type: NgModule,
1037
1039
  args: [{
1038
1040
  imports: [