@koobiq/components 18.2.1 → 18.4.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 (131) hide show
  1. package/code-block/_code-block-theme.scss +1 -1
  2. package/code-block/actionbar.component.d.ts +14 -4
  3. package/code-block/code-block-tokens.scss +4 -4
  4. package/code-block/code-block.component.d.ts +12 -15
  5. package/code-block/code-block.types.d.ts +12 -0
  6. package/core/common-behaviors/color.d.ts +1 -1
  7. package/core/common-behaviors/error-state.d.ts +1 -1
  8. package/core/error/error-state-matcher.d.ts +26 -0
  9. package/core/form-field/form-field-ref.d.ts +7 -0
  10. package/core/forms/index.d.ts +1 -0
  11. package/core/forms/validators.d.ts +107 -0
  12. package/core/locales/en-US.d.ts +13 -0
  13. package/core/locales/es-LA.d.ts +13 -0
  14. package/core/locales/fa-IR.d.ts +13 -0
  15. package/core/locales/locale-service.d.ts +89 -0
  16. package/core/locales/pt-BR.d.ts +13 -0
  17. package/core/locales/ru-RU.d.ts +13 -0
  18. package/core/locales/zh-CN.d.ts +13 -0
  19. package/core/public-api.d.ts +1 -2
  20. package/core/select/common.d.ts +2 -0
  21. package/core/services/theme.service.d.ts +2 -2
  22. package/core/styles/theming/_components-theming.scss +1 -1
  23. package/core/validation/validation.d.ts +1 -0
  24. package/datepicker/_datepicker-theme.scss +1 -1
  25. package/datepicker/datepicker-tokens.scss +2 -2
  26. package/dropdown/_dropdown-theme.scss +1 -1
  27. package/dropdown/dropdown-tokens.scss +1 -1
  28. package/esm2022/code-block/actionbar.component.mjs +35 -8
  29. package/esm2022/code-block/code-block.component.mjs +28 -19
  30. package/esm2022/code-block/code-block.types.mjs +5 -2
  31. package/esm2022/core/common-behaviors/color.mjs +2 -2
  32. package/esm2022/core/common-behaviors/error-state.mjs +1 -1
  33. package/esm2022/core/error/error-state-matcher.mjs +43 -0
  34. package/esm2022/core/form-field/form-field-ref.mjs +4 -1
  35. package/esm2022/core/forms/index.mjs +2 -1
  36. package/esm2022/core/forms/validators.mjs +163 -0
  37. package/esm2022/core/locales/en-US.mjs +14 -1
  38. package/esm2022/core/locales/es-LA.mjs +14 -1
  39. package/esm2022/core/locales/fa-IR.mjs +14 -1
  40. package/esm2022/core/locales/locale-service.mjs +30 -1
  41. package/esm2022/core/locales/pt-BR.mjs +14 -1
  42. package/esm2022/core/locales/ru-RU.mjs +14 -1
  43. package/esm2022/core/locales/zh-CN.mjs +14 -1
  44. package/esm2022/core/public-api.mjs +2 -3
  45. package/esm2022/core/select/common.mjs +7 -1
  46. package/esm2022/core/services/theme.service.mjs +3 -3
  47. package/esm2022/core/validation/validation.mjs +2 -1
  48. package/esm2022/core/version.mjs +2 -2
  49. package/esm2022/datepicker/calendar-header.component.mjs +5 -6
  50. package/esm2022/datepicker/datepicker.component.mjs +3 -3
  51. package/esm2022/dropdown/dropdown.component.mjs +3 -3
  52. package/esm2022/file-upload/file-upload.mjs +2 -3
  53. package/esm2022/file-upload/multiple-file-upload.component.mjs +57 -17
  54. package/esm2022/file-upload/single-file-upload.component.mjs +31 -19
  55. package/esm2022/form-field/form-field-control.mjs +1 -1
  56. package/esm2022/icon/icon.component.mjs +2 -2
  57. package/esm2022/icon/icon.module.mjs +1 -1
  58. package/esm2022/input/input-number.mjs +74 -80
  59. package/esm2022/markdown/markdown.values.mjs +4 -2
  60. package/esm2022/modal/modal.component.mjs +2 -2
  61. package/esm2022/navbar/navbar-item.component.mjs +2 -2
  62. package/esm2022/navbar/navbar.component.mjs +2 -2
  63. package/esm2022/navbar/vertical-navbar.component.mjs +2 -2
  64. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  65. package/esm2022/popover/popover.component.mjs +3 -3
  66. package/esm2022/select/select.component.mjs +1 -1
  67. package/esm2022/select/select.module.mjs +3 -7
  68. package/esm2022/sidepanel/sidepanel-container.component.mjs +3 -3
  69. package/esm2022/timezone/timezone-select.component.mjs +20 -10
  70. package/esm2022/tooltip/tooltip.component.mjs +13 -1
  71. package/fesm2022/koobiq-components-code-block.mjs +58 -24
  72. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  73. package/fesm2022/koobiq-components-core.mjs +310 -16
  74. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  75. package/fesm2022/koobiq-components-datepicker.mjs +10 -11
  76. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  77. package/fesm2022/koobiq-components-dropdown.mjs +2 -2
  78. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  79. package/fesm2022/koobiq-components-file-upload.mjs +76 -27
  80. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  81. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  82. package/fesm2022/koobiq-components-icon.mjs +1 -1
  83. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  84. package/fesm2022/koobiq-components-input.mjs +74 -80
  85. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  86. package/fesm2022/koobiq-components-markdown.mjs +3 -1
  87. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  88. package/fesm2022/koobiq-components-modal.mjs +2 -2
  89. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  90. package/fesm2022/koobiq-components-navbar.mjs +6 -6
  91. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  92. package/fesm2022/koobiq-components-popover.mjs +4 -4
  93. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  94. package/fesm2022/koobiq-components-select.mjs +3 -6
  95. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  96. package/fesm2022/koobiq-components-sidepanel.mjs +2 -2
  97. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  98. package/fesm2022/koobiq-components-timezone.mjs +18 -8
  99. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  100. package/fesm2022/koobiq-components-tooltip.mjs +12 -0
  101. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  102. package/file-upload/_file-upload-theme.scss +6 -10
  103. package/file-upload/file-upload.d.ts +3 -0
  104. package/file-upload/file-upload.scss +6 -0
  105. package/file-upload/multiple-file-upload.component.d.ts +28 -5
  106. package/file-upload/multiple-file-upload.component.scss +0 -4
  107. package/file-upload/single-file-upload.component.d.ts +13 -4
  108. package/file-upload/single-file-upload.component.scss +0 -12
  109. package/form-field/form-field-control.d.ts +3 -2
  110. package/form-field/hint.scss +0 -3
  111. package/input/input-number.d.ts +24 -14
  112. package/markdown/markdown.values.d.ts +3 -0
  113. package/modal/_modal-theme.scss +1 -1
  114. package/modal/modal-tokens.scss +2 -2
  115. package/navbar/_navbar-theme.scss +1 -1
  116. package/navbar/navbar-tokens.scss +2 -8
  117. package/package.json +5 -4
  118. package/popover/_popover-theme.scss +2 -2
  119. package/popover/popover-tokens.scss +2 -2
  120. package/popover/popover.scss +2 -2
  121. package/schematics/ng-add/index.js +2 -2
  122. package/select/select.component.d.ts +1 -1
  123. package/select/select.module.d.ts +1 -2
  124. package/sidepanel/_sidepanel-theme.scss +1 -1
  125. package/sidepanel/sidepanel-tokens.scss +2 -2
  126. package/timezone/timezone-select.component.d.ts +5 -6
  127. package/tooltip/tooltip.component.d.ts +9 -0
  128. package/core/error/error-options.d.ts +0 -14
  129. package/core/label/label-options.d.ts +0 -13
  130. package/esm2022/core/error/error-options.mjs +0 -26
  131. package/esm2022/core/label/label-options.mjs +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-code-block.mjs","sources":["../../../packages/components/code-block/actionbar.component.ts","../../../packages/components/code-block/actionbar.component.html","../../../packages/components/code-block/code-block.component.ts","../../../packages/components/code-block/code-block.component.html","../../../packages/components/code-block/code-block.module.ts","../../../packages/components/code-block/koobiq-components-code-block.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { filter } from 'rxjs/operators';\nimport { KbqCodeBlockConfiguration, KbqCodeFile } from './code-block.types';\n\n@Component({\n selector: 'kbq-actionbar-block',\n templateUrl: './actionbar.component.html',\n styleUrls: ['./actionbar.component.scss'],\n host: {\n class: 'kbq-code-block-actionbar'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqActionBarComponent implements AfterViewInit {\n @ViewChild('copyTooltip') copyTooltip: KbqTooltipTrigger;\n\n @Input() config: KbqCodeBlockConfiguration;\n @Input() codeFiles: KbqCodeFile[];\n @Input() selectedTabIndex = 0;\n @Input() multiLine: boolean;\n @Input() softWrap: boolean;\n @Input() canLoad: boolean;\n\n @Output() toggleSoftWrap = new EventEmitter<void>();\n @Output() downloadCode = new EventEmitter<void>();\n @Output() copyCode = new EventEmitter<void>();\n @Output() openExternalSystem = new EventEmitter<void>();\n\n copyTooltipText: string;\n\n ngAfterViewInit(): void {\n this.copyTooltipText = this.config.copyTooltip;\n\n this.copyTooltip.visibleChange.pipe(filter((state) => !state)).subscribe(() => {\n if (this.copyTooltipText === this.config.copiedTooltip) {\n this.copyTooltipText = this.config.copyTooltip;\n }\n });\n }\n\n onCopy() {\n this.copyCode.emit();\n\n setTimeout(() => {\n this.copyTooltipText = this.config.copiedTooltip;\n this.copyTooltip.show();\n });\n }\n}\n","<div class=\"kbq-code-block__fade-gradient\"></div>\n\n<div class=\"kbq-actionbar-block__button-stack layout-row\">\n @if (multiLine) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"softWrap ? config.softWrapOffTooltip : config.softWrapOnTooltip\"\n (click)=\"toggleSoftWrap.emit()\"\n >\n @if (!softWrap) {\n <i kbq-icon=\"kbq-wrap-text_16\"></i>\n }\n @if (softWrap) {\n <i kbq-icon=\"kbq-wrap-text-slash_16\"></i>\n }\n </button>\n }\n\n @if (canLoad) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"config.downloadTooltip\"\n (click)=\"downloadCode.emit()\"\n >\n <i kbq-icon=\"kbq-arrow-down-to-line_16\"></i>\n </button>\n }\n\n <button\n #copyTooltip=\"kbqTooltip\"\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"copyTooltipText\"\n (click)=\"onCopy()\"\n >\n <i kbq-icon=\"kbq-file-multiple-o_16\"></i>\n </button>\n\n @if (codeFiles[selectedTabIndex].link) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"config.openExternalSystemTooltip\"\n (click)=\"openExternalSystem.emit()\"\n >\n <i kbq-icon=\"kbq-arrow-up-right-from-square_16\"></i>\n </button>\n }\n</div>\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqTabChangeEvent, KbqTabGroup } from '@koobiq/components/tabs';\nimport { Subject, Subscription, fromEvent, merge, pairwise } from 'rxjs';\nimport { debounceTime, filter, map, startWith, switchMap } from 'rxjs/operators';\nimport { KbqCodeBlockConfiguration, KbqCodeFile } from './code-block.types';\n\nexport const COPIED_MESSAGE_TOOLTIP_TIMEOUT = 100;\nexport const DEFAULT_EXTENSION = 'txt';\nexport const LANGUAGES_EXTENSIONS = {\n html: 'html',\n css: 'css',\n php: 'php',\n java: 'java',\n bash: 'sh',\n javascript: 'js',\n typescript: 'ts',\n python: 'py',\n ruby: 'rb',\n c: 'c',\n 'c++': 'cpp',\n 'c#': 'cs',\n csharp: 'cs',\n lua: 'lua',\n xml: 'xml',\n json: 'json'\n};\n\nexport const KBQ_CODE_BLOCK_CONFIGURATION = new InjectionToken<any>('KbqCodeBlockConfiguration');\n\nexport const KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION = {\n softWrapOnTooltip: 'Включить перенос по словам',\n softWrapOffTooltip: 'Выключить перенос по словам',\n downloadTooltip: 'Скачать',\n copiedTooltip: '✓ Скопировано',\n copyTooltip: 'Скопировать',\n viewAllText: 'Показать все',\n viewLessText: 'Свернуть',\n openExternalSystemTooltip: 'Открыть во внешней системе'\n};\n\nconst actionBarBlockLeftMargin = 24;\n\nconst hasScroll = (element: HTMLElement) => {\n const { scrollHeight, scrollWidth, clientHeight, clientWidth } = element;\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\n};\n\n@Component({\n selector: 'kbq-code-block',\n exportAs: 'kbqCodeBlock',\n templateUrl: './code-block.component.html',\n styleUrls: ['./code-block.scss', './code-block-tokens.scss'],\n host: {\n class: 'kbq-code-block',\n '[class.kbq-code-block_filled]': 'filled',\n '[class.kbq-code-block_outline]': '!filled',\n '[class.kbq-code-block_hide-line-numbers]': '!lineNumbers',\n '[class.kbq-code-block_single-file]': 'singleFile',\n '[class.kbq-code-block_no-header]': 'noHeader',\n '[class.kbq-code-block_header-with-shadow]': 'isTopOverflow',\n '(window:resize)': 'resizeStream.next($event)'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqCodeBlockComponent implements AfterViewInit, OnDestroy {\n @ViewChild(KbqTabGroup) tabGroup: KbqTabGroup;\n\n @Input() lineNumbers = true;\n @Input() filled: boolean;\n @Input() maxHeight: number;\n @Input() softWrap: boolean = false;\n @Input() canLoad: boolean = true;\n @Input() get codeFiles(): KbqCodeFile[] {\n return this._codeFiles;\n }\n\n set codeFiles(files: KbqCodeFile[]) {\n this._codeFiles = files;\n this.hideActionBarIfNoHeader();\n this.subscribeToHover();\n }\n\n private _codeFiles: KbqCodeFile[];\n\n // TODO: replace with property\n get noHeader(): any {\n return this.codeFiles.length === 1 && !this.codeFiles[0].filename;\n }\n\n get singleFile(): boolean {\n return this.codeFiles.length === 1;\n }\n\n selectedTabIndex = 0;\n copied: boolean = false;\n viewAll: boolean = false;\n multiLine: boolean = false;\n isTopOverflow: boolean = false;\n hasKeyboardFocus: boolean = false;\n /**\n * @docs-private\n */\n actionbarHidden?: boolean;\n\n readonly resizeStream = new Subject<Event>();\n readonly currentCodeBlock = new Subject<HTMLElement>();\n\n private readonly resizeDebounceInterval: number = 100;\n private resizeSubscription = Subscription.EMPTY;\n private codeBlockSubscription = Subscription.EMPTY;\n private hoverSubscription: Subscription | null = null;\n\n constructor(\n private elementRef: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n private clipboard: Clipboard,\n private renderer: Renderer2,\n private focusMonitor: FocusMonitor,\n @Optional() @Inject(KBQ_CODE_BLOCK_CONFIGURATION) public config: KbqCodeBlockConfiguration\n ) {\n this.config = config || KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION;\n\n this.resizeSubscription = this.resizeStream\n .pipe(debounceTime(this.resizeDebounceInterval))\n .subscribe(this.updateHeader);\n }\n\n ngAfterViewInit() {\n // render focus border if origin is keyboard\n this.codeBlockSubscription = this.currentCodeBlock\n .pipe(\n startWith(null),\n pairwise(),\n switchMap(([prev, current]) => {\n if (prev) {\n this.focusMonitor.stopMonitoring(prev);\n }\n\n return this.focusMonitor.monitor(current!);\n }),\n filter((origin: FocusOrigin) => origin === 'keyboard')\n )\n .subscribe(() => {\n this.hasKeyboardFocus = true;\n this.changeDetectorRef.markForCheck();\n });\n\n this.hideActionBarIfNoHeader();\n this.subscribeToHover();\n this.currentCodeBlock.next(this.elementRef.nativeElement.querySelector('code'));\n }\n\n ngOnDestroy(): void {\n this.resizeSubscription.unsubscribe();\n this.codeBlockSubscription.unsubscribe();\n }\n\n updateHeader = () => {\n const clientWidth: number = this.elementRef.nativeElement.querySelector('kbq-actionbar-block').clientWidth;\n\n this.renderer.setStyle(\n this.tabGroup.tabHeader.elementRef.nativeElement,\n 'padding-right',\n `${actionBarBlockLeftMargin + clientWidth}px`\n );\n\n this.changeDetectorRef.markForCheck();\n };\n\n toggleSoftWrap() {\n this.softWrap = !this.softWrap;\n }\n\n toggleViewAll() {\n this.viewAll = !this.viewAll;\n }\n\n downloadCode() {\n const codeFile = this.codeFiles[this.selectedTabIndex];\n const blob = new Blob([codeFile.content], { type: 'text/plain' });\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n\n link.setAttribute('href', url);\n link.setAttribute('download', `${this.getFullFileName(codeFile)}`);\n link.click();\n }\n\n copyCode() {\n this.clipboard.copy(this.codeFiles[this.selectedTabIndex].content);\n this.copied = true;\n }\n\n openExternalSystem() {\n const externalLink = this.codeFiles[this.selectedTabIndex].link;\n window.open(externalLink, '_blank');\n }\n\n onHighlighted() {\n setTimeout(this.updateMultiline, 1);\n }\n\n getMaxHeight(): string {\n return this.maxHeight > 0 && !this.viewAll ? `${this.maxHeight}px` : '';\n }\n\n onSelectTab($event: KbqTabChangeEvent) {\n this.selectedTabIndex = $event.index;\n this.updateMultiline();\n this.isTopOverflow = false;\n\n setTimeout(this.updateHeader);\n setTimeout(() => this.currentCodeBlock.next(this.elementRef.nativeElement.querySelector('code')));\n }\n\n checkOverflow(currentCodeContentElement: HTMLElement) {\n if (this.noHeader) {\n return;\n }\n this.isTopOverflow = currentCodeContentElement.scrollTop > 0;\n }\n\n onShowMoreClick(currentCodeContentElement: HTMLPreElement) {\n this.toggleViewAll();\n\n if (this.viewAll) {\n this.showActionBarIfNecessary();\n } else {\n // Should explicitly scroll to top so content will be cropped from the bottom\n currentCodeContentElement?.scroll({ top: 0, behavior: 'instant' });\n }\n }\n\n // TODO: replace with property to reduce calculations\n canShowFocus(currentCodeContent: HTMLPreElement): boolean {\n const currentCodeBlock = currentCodeContent.querySelector('code')!;\n\n return (\n (hasScroll(currentCodeContent) || hasScroll(currentCodeBlock)) &&\n ((!!this.maxHeight && this.viewAll) || !this.maxHeight)\n );\n }\n\n onEnter(currentCodeBlock: HTMLPreElement) {\n // defer execution after toggle view mode\n setTimeout(() => {\n if (this.canShowFocus(currentCodeBlock)) {\n this.focusMonitor.focusVia(currentCodeBlock.querySelector('code')!, 'keyboard');\n }\n }, 0);\n }\n\n /** @docs-private */\n showActionBarIfNecessary(): void {\n if (!this.actionbarHidden) return;\n this.actionbarHidden = false;\n }\n\n /** @docs-private */\n hideActionBarIfNoHeader(event?: FocusEvent | null): void {\n if (!this.noHeader) return;\n if (event) {\n this.actionbarHidden = !this.elementRef.nativeElement.contains(event.relatedTarget);\n return;\n }\n\n this.actionbarHidden = this.noHeader;\n }\n\n private updateMultiline = () => {\n this.multiLine = this.elementRef.nativeElement.querySelectorAll('.hljs-ln-numbers').length > 1;\n\n this.updateHeader();\n\n this.changeDetectorRef.markForCheck();\n };\n\n private getFullFileName(codeFile: KbqCodeFile): string {\n const fileName = codeFile.filename || 'code';\n const extension = LANGUAGES_EXTENSIONS[codeFile.language] || DEFAULT_EXTENSION;\n\n return `${fileName}.${extension}`;\n }\n\n private subscribeToHover() {\n if (!this.noHeader) {\n this.hoverSubscription?.unsubscribe();\n this.hoverSubscription = null;\n return;\n }\n if (this.hoverSubscription) return;\n\n this.hoverSubscription = merge(\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'focusin'),\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'mouseenter')\n ).subscribe(() => {\n this.showActionBarIfNecessary();\n this.changeDetectorRef.markForCheck();\n });\n\n const blur = merge(\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'focusout'),\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'mouseleave').pipe(map(() => null))\n ).subscribe((event: FocusEvent | null) => {\n if (!this.hasKeyboardFocus) {\n this.hideActionBarIfNoHeader(event);\n }\n this.changeDetectorRef.markForCheck();\n });\n this.hoverSubscription.add(blur);\n }\n}\n","<kbq-tab-group\n [class.kbq-focused]=\"hasKeyboardFocus\"\n (selectedTabChange)=\"onSelectTab($event)\"\n>\n @for (codeFile of codeFiles; track codeFile; let i = $index) {\n <kbq-tab [disabled]=\"singleFile\">\n <ng-template kbq-tab-label>{{ codeFile.filename }}</ng-template>\n <pre\n #codeContent\n class=\"kbq-code-block__code kbq-scrollbar\"\n [class.kbq-code-block__code_soft-wrap]=\"softWrap\"\n [class.kbq-code-block__code_view-all]=\"viewAll\"\n [style.max-height]=\"getMaxHeight()\"\n (scroll)=\"checkOverflow(codeContent)\"\n ><kbq-actionbar-block\n [class.kbq-actionbar-block_floating]=\"noHeader\"\n [config]=\"config\"\n [codeFiles]=\"codeFiles\"\n [selectedTabIndex]=\"selectedTabIndex\"\n [multiLine]=\"multiLine\"\n [softWrap]=\"softWrap\"\n [canLoad]=\"canLoad\"\n [style.opacity]=\"actionbarHidden ? 0 : null\"\n (toggleSoftWrap)=\"toggleSoftWrap()\"\n (downloadCode)=\"downloadCode()\"\n (copyCode)=\"copyCode()\"\n (openExternalSystem)=\"openExternalSystem()\" /><code class=\"hljs\"\n [id]=\"codeFile.filename + '_' + i\"\n [class.hljs-line-numbers]=\"lineNumbers\"\n [highlight]=\"codeFiles[i].content\"\n [lineNumbers]=\"true\"\n [tabIndex]=\"canShowFocus(codeContent) ? 0 : -1\"\n (highlighted)=\"onHighlighted()\"\n (blur)=\"hasKeyboardFocus = false\">\n </code></pre>\n @if (maxHeight) {\n <div\n class=\"kbq-code-block__show-more\"\n [class.kbq-code-block__show-more_collapsed]=\"!viewAll\"\n [class.kbq-code-block__show-more_expanded]=\"viewAll\"\n >\n <span class=\"bg-wrapper\">\n <button\n kbq-button\n [color]=\"'theme'\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"onShowMoreClick(codeContent)\"\n (keydown.enter)=\"onEnter(codeContent)\"\n >\n @if (!viewAll) {\n <i kbq-icon=\"kbq-chevron-down_16\"></i>\n }\n @if (viewAll) {\n <i kbq-icon=\"kbq-chevron-up_16\"></i>\n }\n {{ viewAll ? config.viewLessText : config.viewAllText }}\n </button>\n </span>\n </div>\n }\n </kbq-tab>\n }\n</kbq-tab-group>\n","import { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTabsModule } from '@koobiq/components/tabs';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { HIGHLIGHT_OPTIONS, HighlightModule } from 'ngx-highlightjs';\nimport { KbqActionBarComponent } from './actionbar.component';\nimport { KbqCodeBlockComponent } from './code-block.component';\n\n@NgModule({\n imports: [\n KbqButtonModule,\n KbqToolTipModule,\n KbqIconModule,\n HighlightModule,\n KbqTabsModule\n ],\n declarations: [\n KbqCodeBlockComponent,\n KbqActionBarComponent\n ],\n providers: [\n {\n provide: HIGHLIGHT_OPTIONS,\n useValue: {\n fullLibraryLoader: () => import('highlight.js'),\n lineNumbersLoader: () => import('ngx-highlightjs/line-numbers'),\n lineNumbers: true\n }\n }\n ],\n exports: [KbqCodeBlockComponent]\n})\nexport class KbqCodeBlockModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i4","i7.KbqActionBarComponent"],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-code-block.mjs","sources":["../../../packages/components/code-block/code-block.types.ts","../../../packages/components/code-block/actionbar.component.ts","../../../packages/components/code-block/actionbar.component.html","../../../packages/components/code-block/code-block.component.ts","../../../packages/components/code-block/code-block.component.html","../../../packages/components/code-block/code-block.module.ts","../../../packages/components/code-block/koobiq-components-code-block.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { ruRULocaleData } from '@koobiq/components/core';\n\nexport const KBQ_CODE_BLOCK_CONFIGURATION = new InjectionToken<any>('KbqCodeBlockConfiguration');\n\nexport const KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION = ruRULocaleData.codeBlock;\n\nexport interface KbqCodeBlockConfiguration {\n softWrapOnTooltip: string;\n softWrapOffTooltip: string;\n\n downloadTooltip: string;\n\n copiedTooltip: string;\n copyTooltip: string;\n\n viewAllText: string;\n viewLessText: string;\n\n openExternalSystemTooltip: string;\n}\n\nexport interface KbqCodeFile {\n filename: string;\n content: string;\n language: string;\n\n link?: string;\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KBQ_LOCALE_SERVICE, KbqLocaleService } from '@koobiq/components/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { filter } from 'rxjs/operators';\nimport {\n KBQ_CODE_BLOCK_CONFIGURATION,\n KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION,\n KbqCodeBlockConfiguration,\n KbqCodeFile\n} from './code-block.types';\n\n@Component({\n selector: 'kbq-actionbar-block',\n templateUrl: './actionbar.component.html',\n styleUrls: ['./actionbar.component.scss'],\n host: {\n class: 'kbq-code-block-actionbar'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqActionBarComponent implements AfterViewInit {\n @ViewChild('copyTooltip') copyTooltip: KbqTooltipTrigger;\n\n @Input() codeFiles: KbqCodeFile[];\n @Input() selectedTabIndex = 0;\n @Input() multiLine: boolean;\n @Input() softWrap: boolean;\n @Input() canLoad: boolean;\n\n @Output() toggleSoftWrap = new EventEmitter<void>();\n @Output() downloadCode = new EventEmitter<void>();\n @Output() copyCode = new EventEmitter<void>();\n @Output() openExternalSystem = new EventEmitter<void>();\n\n copyTooltipText: string;\n /**\n * @docs-private\n */\n config: KbqCodeBlockConfiguration;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(KBQ_CODE_BLOCK_CONFIGURATION) protected configuration?: KbqCodeBlockConfiguration,\n @Optional() @Inject(KBQ_LOCALE_SERVICE) protected localeService?: KbqLocaleService\n ) {\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n }\n\n ngAfterViewInit(): void {\n this.copyTooltipText = this.config.copyTooltip;\n\n this.copyTooltip.visibleChange.pipe(filter((state) => !state)).subscribe(() => {\n if (this.copyTooltipText === this.config.copiedTooltip) {\n this.copyTooltipText = this.config.copyTooltip;\n }\n });\n }\n\n onCopy() {\n this.copyCode.emit();\n\n setTimeout(() => {\n this.copyTooltipText = this.config.copiedTooltip;\n this.copyTooltip.show();\n });\n }\n\n private updateLocaleParams = () => {\n this.config = this.configuration || this.localeService?.getParams('codeBlock');\n\n this.copyTooltipText = this.config.copyTooltip;\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.config = KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION;\n }\n}\n","<div class=\"kbq-code-block__fade-gradient\"></div>\n\n<div class=\"kbq-actionbar-block__button-stack layout-row\">\n @if (multiLine) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"softWrap ? config.softWrapOffTooltip : config.softWrapOnTooltip\"\n (click)=\"toggleSoftWrap.emit()\"\n >\n @if (!softWrap) {\n <i kbq-icon=\"kbq-wrap-text_16\"></i>\n }\n @if (softWrap) {\n <i kbq-icon=\"kbq-wrap-text-slash_16\"></i>\n }\n </button>\n }\n\n @if (canLoad) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"config.downloadTooltip\"\n (click)=\"downloadCode.emit()\"\n >\n <i kbq-icon=\"kbq-arrow-down-to-line_16\"></i>\n </button>\n }\n\n <button\n #copyTooltip=\"kbqTooltip\"\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"copyTooltipText\"\n (click)=\"onCopy()\"\n >\n <i kbq-icon=\"kbq-file-multiple-o_16\"></i>\n </button>\n\n @if (codeFiles[selectedTabIndex].link) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"config.openExternalSystemTooltip\"\n (click)=\"openExternalSystem.emit()\"\n >\n <i kbq-icon=\"kbq-arrow-up-right-from-square_16\"></i>\n </button>\n }\n</div>\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KBQ_LOCALE_SERVICE, KbqLocaleService } from '@koobiq/components/core';\nimport { KbqTabChangeEvent, KbqTabGroup } from '@koobiq/components/tabs';\nimport { Subject, Subscription, fromEvent, merge, pairwise } from 'rxjs';\nimport { debounceTime, filter, map, startWith, switchMap } from 'rxjs/operators';\nimport {\n KBQ_CODE_BLOCK_CONFIGURATION,\n KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION,\n KbqCodeBlockConfiguration,\n KbqCodeFile\n} from './code-block.types';\n\nexport const COPIED_MESSAGE_TOOLTIP_TIMEOUT = 100;\nexport const DEFAULT_EXTENSION = 'txt';\nexport const LANGUAGES_EXTENSIONS = {\n html: 'html',\n css: 'css',\n php: 'php',\n java: 'java',\n bash: 'sh',\n javascript: 'js',\n typescript: 'ts',\n python: 'py',\n ruby: 'rb',\n c: 'c',\n 'c++': 'cpp',\n 'c#': 'cs',\n csharp: 'cs',\n lua: 'lua',\n xml: 'xml',\n json: 'json'\n};\n\nconst actionBarBlockLeftMargin = 24;\n\nconst hasScroll = (element: HTMLElement) => {\n const { scrollHeight, scrollWidth, clientHeight, clientWidth } = element;\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\n};\n\n@Component({\n selector: 'kbq-code-block',\n exportAs: 'kbqCodeBlock',\n templateUrl: './code-block.component.html',\n styleUrls: ['./code-block.scss', './code-block-tokens.scss'],\n host: {\n class: 'kbq-code-block',\n '[class.kbq-code-block_filled]': 'filled',\n '[class.kbq-code-block_outline]': '!filled',\n '[class.kbq-code-block_hide-line-numbers]': '!lineNumbers',\n '[class.kbq-code-block_single-file]': 'singleFile',\n '[class.kbq-code-block_no-header]': 'noHeader',\n '[class.kbq-code-block_header-with-shadow]': 'isTopOverflow',\n '(window:resize)': 'resizeStream.next($event)'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqCodeBlockComponent implements AfterViewInit, OnDestroy {\n @ViewChild(KbqTabGroup) tabGroup: KbqTabGroup;\n\n @Input() lineNumbers = true;\n @Input() filled: boolean;\n @Input() maxHeight: number;\n @Input() softWrap: boolean = false;\n @Input() canLoad: boolean = true;\n @Input() get codeFiles(): KbqCodeFile[] {\n return this._codeFiles;\n }\n\n set codeFiles(files: KbqCodeFile[]) {\n this._codeFiles = files;\n this.hideActionBarIfNoHeader();\n this.subscribeToHover();\n }\n\n private _codeFiles: KbqCodeFile[];\n\n // TODO: replace with property\n get noHeader(): any {\n return this.codeFiles.length === 1 && !this.codeFiles[0].filename;\n }\n\n get singleFile(): boolean {\n return this.codeFiles.length === 1;\n }\n\n selectedTabIndex = 0;\n copied: boolean = false;\n viewAll: boolean = false;\n multiLine: boolean = false;\n isTopOverflow: boolean = false;\n hasKeyboardFocus: boolean = false;\n /**\n * @docs-private\n */\n actionbarHidden?: boolean;\n\n /**\n * @docs-private\n */\n config: KbqCodeBlockConfiguration;\n\n readonly resizeStream = new Subject<Event>();\n readonly currentCodeBlock = new Subject<HTMLElement>();\n\n private readonly resizeDebounceInterval: number = 100;\n private resizeSubscription = Subscription.EMPTY;\n private codeBlockSubscription = Subscription.EMPTY;\n private hoverSubscription: Subscription | null = null;\n\n constructor(\n private elementRef: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n private clipboard: Clipboard,\n private renderer: Renderer2,\n private focusMonitor: FocusMonitor,\n @Optional() @Inject(KBQ_CODE_BLOCK_CONFIGURATION) protected configuration?: KbqCodeBlockConfiguration,\n @Optional() @Inject(KBQ_LOCALE_SERVICE) protected localeService?: KbqLocaleService\n ) {\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n this.resizeSubscription = this.resizeStream\n .pipe(debounceTime(this.resizeDebounceInterval))\n .subscribe(this.updateHeader);\n }\n\n ngAfterViewInit() {\n // render focus border if origin is keyboard\n this.codeBlockSubscription = this.currentCodeBlock\n .pipe(\n startWith(null),\n pairwise(),\n switchMap(([prev, current]) => {\n if (prev) {\n this.focusMonitor.stopMonitoring(prev);\n }\n\n return this.focusMonitor.monitor(current!);\n }),\n filter((origin: FocusOrigin) => origin === 'keyboard')\n )\n .subscribe(() => {\n this.hasKeyboardFocus = true;\n this.changeDetectorRef.markForCheck();\n });\n\n this.hideActionBarIfNoHeader();\n this.subscribeToHover();\n this.currentCodeBlock.next(this.elementRef.nativeElement.querySelector('code'));\n }\n\n ngOnDestroy(): void {\n this.resizeSubscription.unsubscribe();\n this.codeBlockSubscription.unsubscribe();\n }\n\n updateHeader = () => {\n const clientWidth: number = this.elementRef.nativeElement.querySelector('kbq-actionbar-block').clientWidth;\n\n this.renderer.setStyle(\n this.tabGroup.tabHeader.elementRef.nativeElement,\n 'padding-right',\n `${actionBarBlockLeftMargin + clientWidth}px`\n );\n\n this.changeDetectorRef.markForCheck();\n };\n\n toggleSoftWrap() {\n this.softWrap = !this.softWrap;\n }\n\n toggleViewAll() {\n this.viewAll = !this.viewAll;\n }\n\n downloadCode() {\n const codeFile = this.codeFiles[this.selectedTabIndex];\n const blob = new Blob([codeFile.content], { type: 'text/plain' });\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n\n link.setAttribute('href', url);\n link.setAttribute('download', `${this.getFullFileName(codeFile)}`);\n link.click();\n }\n\n copyCode() {\n this.clipboard.copy(this.codeFiles[this.selectedTabIndex].content);\n this.copied = true;\n }\n\n openExternalSystem() {\n const externalLink = this.codeFiles[this.selectedTabIndex].link;\n window.open(externalLink, '_blank');\n }\n\n onHighlighted() {\n setTimeout(this.updateMultiline, 1);\n }\n\n getMaxHeight(): string {\n return this.maxHeight > 0 && !this.viewAll ? `${this.maxHeight}px` : '';\n }\n\n onSelectTab($event: KbqTabChangeEvent) {\n this.selectedTabIndex = $event.index;\n this.updateMultiline();\n this.isTopOverflow = false;\n\n setTimeout(this.updateHeader);\n setTimeout(() => this.currentCodeBlock.next(this.elementRef.nativeElement.querySelector('code')));\n }\n\n checkOverflow(currentCodeContentElement: HTMLElement) {\n if (this.noHeader) {\n return;\n }\n this.isTopOverflow = currentCodeContentElement.scrollTop > 0;\n }\n\n onShowMoreClick(currentCodeContentElement: HTMLPreElement) {\n this.toggleViewAll();\n\n if (this.viewAll) {\n this.showActionBarIfNecessary();\n } else {\n // Should explicitly scroll to top so content will be cropped from the bottom\n currentCodeContentElement?.scroll({ top: 0, behavior: 'instant' });\n }\n }\n\n // TODO: replace with property to reduce calculations\n canShowFocus(currentCodeContent: HTMLPreElement): boolean {\n const currentCodeBlock = currentCodeContent.querySelector('code')!;\n\n return (\n (hasScroll(currentCodeContent) || hasScroll(currentCodeBlock)) &&\n ((!!this.maxHeight && this.viewAll) || !this.maxHeight)\n );\n }\n\n onEnter(currentCodeBlock: HTMLPreElement) {\n // defer execution after toggle view mode\n setTimeout(() => {\n if (this.canShowFocus(currentCodeBlock)) {\n this.focusMonitor.focusVia(currentCodeBlock.querySelector('code')!, 'keyboard');\n }\n }, 0);\n }\n\n /** @docs-private */\n showActionBarIfNecessary(): void {\n if (!this.actionbarHidden) return;\n this.actionbarHidden = false;\n }\n\n /** @docs-private */\n hideActionBarIfNoHeader(event?: FocusEvent | null): void {\n if (!this.noHeader) return;\n if (event) {\n this.actionbarHidden = !this.elementRef.nativeElement.contains(event.relatedTarget);\n return;\n }\n\n this.actionbarHidden = this.noHeader;\n }\n\n private updateLocaleParams = () => {\n this.config = this.configuration || this.localeService?.getParams('codeBlock');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.config = KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION;\n }\n\n private updateMultiline = () => {\n this.multiLine = this.elementRef.nativeElement.querySelectorAll('.hljs-ln-numbers').length > 1;\n\n this.updateHeader();\n\n this.changeDetectorRef.markForCheck();\n };\n\n private getFullFileName(codeFile: KbqCodeFile): string {\n const fileName = codeFile.filename || 'code';\n const extension = LANGUAGES_EXTENSIONS[codeFile.language] || DEFAULT_EXTENSION;\n\n return `${fileName}.${extension}`;\n }\n\n private subscribeToHover() {\n if (!this.noHeader) {\n this.hoverSubscription?.unsubscribe();\n this.hoverSubscription = null;\n return;\n }\n if (this.hoverSubscription) return;\n\n this.hoverSubscription = merge(\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'focusin'),\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'mouseenter')\n ).subscribe(() => {\n this.showActionBarIfNecessary();\n this.changeDetectorRef.markForCheck();\n });\n\n const blur = merge(\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'focusout'),\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'mouseleave').pipe(map(() => null))\n ).subscribe((event: FocusEvent | null) => {\n if (!this.hasKeyboardFocus) {\n this.hideActionBarIfNoHeader(event);\n }\n this.changeDetectorRef.markForCheck();\n });\n this.hoverSubscription.add(blur);\n }\n}\n","<kbq-tab-group\n [class.kbq-focused]=\"hasKeyboardFocus\"\n (selectedTabChange)=\"onSelectTab($event)\"\n>\n @for (codeFile of codeFiles; track codeFile; let i = $index) {\n <kbq-tab [disabled]=\"singleFile\">\n <ng-template kbq-tab-label>{{ codeFile.filename }}</ng-template>\n <pre\n #codeContent\n class=\"kbq-code-block__code kbq-scrollbar\"\n [class.kbq-code-block__code_soft-wrap]=\"softWrap\"\n [class.kbq-code-block__code_view-all]=\"viewAll\"\n [style.max-height]=\"getMaxHeight()\"\n (scroll)=\"checkOverflow(codeContent)\"\n ><kbq-actionbar-block\n [class.kbq-actionbar-block_floating]=\"noHeader\"\n [codeFiles]=\"codeFiles\"\n [selectedTabIndex]=\"selectedTabIndex\"\n [multiLine]=\"multiLine\"\n [softWrap]=\"softWrap\"\n [canLoad]=\"canLoad\"\n [style.opacity]=\"actionbarHidden ? 0 : null\"\n (toggleSoftWrap)=\"toggleSoftWrap()\"\n (downloadCode)=\"downloadCode()\"\n (copyCode)=\"copyCode()\"\n (openExternalSystem)=\"openExternalSystem()\" /><code class=\"hljs\"\n [id]=\"codeFile.filename + '_' + i\"\n [class.hljs-line-numbers]=\"lineNumbers\"\n [highlight]=\"codeFiles[i].content\"\n [lineNumbers]=\"true\"\n [tabIndex]=\"canShowFocus(codeContent) ? 0 : -1\"\n (highlighted)=\"onHighlighted()\"\n (blur)=\"hasKeyboardFocus = false\">\n </code></pre>\n @if (maxHeight) {\n <div\n class=\"kbq-code-block__show-more\"\n [class.kbq-code-block__show-more_collapsed]=\"!viewAll\"\n [class.kbq-code-block__show-more_expanded]=\"viewAll\"\n >\n <span class=\"bg-wrapper\">\n <button\n kbq-button\n [color]=\"'theme'\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"onShowMoreClick(codeContent)\"\n (keydown.enter)=\"onEnter(codeContent)\"\n >\n @if (!viewAll) {\n <i kbq-icon=\"kbq-chevron-down_16\"></i>\n }\n @if (viewAll) {\n <i kbq-icon=\"kbq-chevron-up_16\"></i>\n }\n {{ viewAll ? config.viewLessText : config.viewAllText }}\n </button>\n </span>\n </div>\n }\n </kbq-tab>\n }\n</kbq-tab-group>\n","import { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTabsModule } from '@koobiq/components/tabs';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { HIGHLIGHT_OPTIONS, HighlightModule } from 'ngx-highlightjs';\nimport { KbqActionBarComponent } from './actionbar.component';\nimport { KbqCodeBlockComponent } from './code-block.component';\n\n@NgModule({\n imports: [\n KbqButtonModule,\n KbqToolTipModule,\n KbqIconModule,\n HighlightModule,\n KbqTabsModule\n ],\n declarations: [\n KbqCodeBlockComponent,\n KbqActionBarComponent\n ],\n providers: [\n {\n provide: HIGHLIGHT_OPTIONS,\n useValue: {\n fullLibraryLoader: () => import('highlight.js'),\n lineNumbersLoader: () => import('ngx-highlightjs/line-numbers'),\n lineNumbers: true\n }\n }\n ],\n exports: [KbqCodeBlockComponent]\n})\nexport class KbqCodeBlockModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4","i7.KbqActionBarComponent"],"mappings":"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"}
@@ -96,7 +96,7 @@ var KbqComponentColors;
96
96
  KbqComponentColors["Warning"] = "warning";
97
97
  KbqComponentColors["Success"] = "success";
98
98
  KbqComponentColors["Default"] = "contrast";
99
- KbqComponentColors["Empty"] = "";
99
+ KbqComponentColors["Empty"] = "empty";
100
100
  })(KbqComponentColors || (KbqComponentColors = {}));
101
101
  function mixinColor(base, defaultColor = KbqComponentColors.Empty) {
102
102
  return class extends base {
@@ -269,21 +269,38 @@ class DateAdapter extends DateAdapter$1 {
269
269
 
270
270
  const KBQ_DATE_FORMATS = new InjectionToken('kbq-date-formats');
271
271
 
272
- /** Error state matcher that matches when a control is invalid and dirty. */
273
- class ShowOnDirtyErrorStateMatcher {
272
+ /**
273
+ * Error state matcher that matches when a control is invalid and form is submitted.
274
+ * Requires use FormGroupDirective or NgForm.
275
+ */
276
+ class ShowOnFormSubmitErrorStateMatcher {
277
+ isErrorState(control, form) {
278
+ return !!(control?.invalid && form?.submitted);
279
+ }
280
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnFormSubmitErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
281
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnFormSubmitErrorStateMatcher }); }
282
+ }
283
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnFormSubmitErrorStateMatcher, decorators: [{
284
+ type: Injectable
285
+ }] });
286
+ /** Error state matcher that matches when a control is invalid and dirty or form is submitted. */
287
+ class ShowOnControlDirtyErrorStateMatcher {
274
288
  isErrorState(control, form) {
275
- return !!(control && control.invalid && (control.dirty || (form && form.submitted)));
289
+ return !!(control?.invalid && (control.dirty || form?.submitted));
276
290
  }
277
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
278
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnDirtyErrorStateMatcher }); }
291
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnControlDirtyErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
292
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnControlDirtyErrorStateMatcher }); }
279
293
  }
280
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, decorators: [{
294
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnControlDirtyErrorStateMatcher, decorators: [{
281
295
  type: Injectable
282
296
  }] });
283
- /** Provider that defines how form controls behave with regards to displaying error messages. */
297
+ /**
298
+ * Provider that defines how form controls behave with regards to displaying error messages.
299
+ * Error state matcher that matches when a control is invalid and touched or form is submitted.
300
+ */
284
301
  class ErrorStateMatcher {
285
302
  isErrorState(control, form) {
286
- return !!(control && control.invalid && (control.touched || (form && form.submitted)));
303
+ return !!(control?.invalid && (control.touched || form?.submitted));
287
304
  }
288
305
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
289
306
  /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ErrorStateMatcher, providedIn: 'root' }); }
@@ -293,6 +310,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
293
310
  args: [{ providedIn: 'root' }]
294
311
  }] });
295
312
 
313
+ /**
314
+ * @TODO move into form-field.ts, add correct type for `InjectionToken<KbqFormField>` (#DS-2915)
315
+ */
296
316
  /**
297
317
  * Injection token that can be used to inject an instances of `KbqFormField`. It serves
298
318
  * as alternative token to the actual `KbqFormField` class which would cause unnecessary
@@ -557,6 +577,19 @@ const enUSLocaleData = {
557
577
  size: 'Size'
558
578
  }
559
579
  }
580
+ },
581
+ codeBlock: {
582
+ softWrapOnTooltip: 'Enable word wrap',
583
+ softWrapOffTooltip: 'Disable word wrap',
584
+ downloadTooltip: 'Download',
585
+ copiedTooltip: '✓ Copied',
586
+ copyTooltip: 'Copy',
587
+ viewAllText: 'Show all',
588
+ viewLessText: 'Show less',
589
+ openExternalSystemTooltip: 'Open in the external system'
590
+ },
591
+ timezone: {
592
+ searchPlaceholder: 'City or time zone'
560
593
  }
561
594
  };
562
595
 
@@ -587,6 +620,19 @@ const esLALocaleData = {
587
620
  size: 'Tamaño'
588
621
  }
589
622
  }
623
+ },
624
+ codeBlock: {
625
+ softWrapOnTooltip: 'Activar el ajuste de texto',
626
+ softWrapOffTooltip: 'Desactivar el ajuste de texto',
627
+ downloadTooltip: 'Descargar',
628
+ copiedTooltip: '✓ Copiado',
629
+ copyTooltip: 'Copiar',
630
+ viewAllText: 'Mostrar todo',
631
+ viewLessText: 'Mostrar menos',
632
+ openExternalSystemTooltip: 'Abrir en el sistema externo'
633
+ },
634
+ timezone: {
635
+ searchPlaceholder: 'Ciudad o zona horaria'
590
636
  }
591
637
  };
592
638
 
@@ -617,6 +663,19 @@ const faIRLocaleData = {
617
663
  size: 'اندازه'
618
664
  }
619
665
  }
666
+ },
667
+ codeBlock: {
668
+ softWrapOnTooltip: 'فعال‌سازی سطربندی',
669
+ softWrapOffTooltip: 'غیرفعال‌سازی سطربندی',
670
+ downloadTooltip: 'دانلود',
671
+ copiedTooltip: '✓ کپی شد',
672
+ copyTooltip: 'کپی',
673
+ viewAllText: 'نمایش همه',
674
+ viewLessText: 'نمایش کمتر',
675
+ openExternalSystemTooltip: 'باز کردن در سیستم خارجی'
676
+ },
677
+ timezone: {
678
+ searchPlaceholder: ' شهر یا منطقه زمانی '
620
679
  }
621
680
  };
622
681
 
@@ -647,6 +706,19 @@ const ptBRLocaleData = {
647
706
  size: 'Tamanho'
648
707
  }
649
708
  }
709
+ },
710
+ codeBlock: {
711
+ softWrapOnTooltip: 'Ativar quebra de linha',
712
+ softWrapOffTooltip: 'Desativar quebra de linha',
713
+ downloadTooltip: 'Baixar',
714
+ copiedTooltip: '✓ Copiado',
715
+ copyTooltip: 'Copiar',
716
+ viewAllText: 'Mostrar todos',
717
+ viewLessText: 'Mostrar menos',
718
+ openExternalSystemTooltip: 'Abrir em sistema externo'
719
+ },
720
+ timezone: {
721
+ searchPlaceholder: 'Cidade ou fuso horário'
650
722
  }
651
723
  };
652
724
 
@@ -678,6 +750,19 @@ const ruRULocaleData = {
678
750
  size: 'Размер'
679
751
  }
680
752
  }
753
+ },
754
+ codeBlock: {
755
+ softWrapOnTooltip: 'Включить перенос по словам',
756
+ softWrapOffTooltip: 'Выключить перенос по словам',
757
+ downloadTooltip: 'Скачать',
758
+ copiedTooltip: '✓ Скопировано',
759
+ copyTooltip: 'Скопировать',
760
+ viewAllText: 'Показать все',
761
+ viewLessText: 'Свернуть',
762
+ openExternalSystemTooltip: 'Открыть во внешней системе'
763
+ },
764
+ timezone: {
765
+ searchPlaceholder: 'Город или часовой пояс'
681
766
  }
682
767
  };
683
768
 
@@ -708,6 +793,19 @@ const zhCNLocaleData = {
708
793
  size: '大小'
709
794
  }
710
795
  }
796
+ },
797
+ codeBlock: {
798
+ softWrapOnTooltip: '启用文本换行',
799
+ softWrapOffTooltip: '禁用文本换行',
800
+ downloadTooltip: '下载',
801
+ copiedTooltip: '✓已复制',
802
+ copyTooltip: '复制',
803
+ viewAllText: '显示全部',
804
+ viewLessText: '显示部分',
805
+ openExternalSystemTooltip: '在外部系统中打开'
806
+ },
807
+ timezone: {
808
+ searchPlaceholder: '城市或时区'
711
809
  }
712
810
  };
713
811
 
@@ -996,6 +1094,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
996
1094
  type: Inject,
997
1095
  args: [KBQ_LOCALE_DATA]
998
1096
  }] }] });
1097
+ /**
1098
+ * Function that returns a string representation of a number without localized separators
1099
+ */
1100
+ function normalizeNumber(value, customConfig) {
1101
+ if (value === null || value === undefined)
1102
+ return '';
1103
+ const { groupSeparator, fractionSeparator } = customConfig;
1104
+ const groupSeparatorRegexp = new RegExp(`[${groupSeparator.join('')}]`, 'g');
1105
+ const fractionSeparatorRegexp = new RegExp(`\\${fractionSeparator}`, 'g');
1106
+ return value.toString().replace(groupSeparatorRegexp, '').replace(fractionSeparatorRegexp, '.');
1107
+ }
1108
+ /**
1109
+ * Function that parse string and return a number. The string can be in any locale.
1110
+ */
1111
+ function checkAndNormalizeLocalizedNumber(num) {
1112
+ if (num === null || num === undefined)
1113
+ return null;
1114
+ /* if some locale input config satisfies pasted number, try to normalise with selected locale config */
1115
+ let numberOutput = null;
1116
+ const locales = KBQ_DEFAULT_LOCALE_DATA_FACTORY();
1117
+ for (const config of locales.items.map(({ id }) => locales[id].input.number)) {
1118
+ const normalized = +normalizeNumber(num, config);
1119
+ if (!Number.isNaN(normalized)) {
1120
+ numberOutput = normalized;
1121
+ break;
1122
+ }
1123
+ }
1124
+ return numberOutput;
1125
+ }
999
1126
 
1000
1127
  class KbqLocaleServiceModule {
1001
1128
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqLocaleServiceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -1517,6 +1644,169 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
1517
1644
  }]
1518
1645
  }] });
1519
1646
 
1647
+ /** Provides a set of validators for password form controls. */
1648
+ class PasswordValidators {
1649
+ /**
1650
+ * Validator that requires the control's value length to be at least `min` characters.
1651
+ *
1652
+ * `min` - number of characters.
1653
+ *
1654
+ * ## Usage:
1655
+ *
1656
+ * ```typescript
1657
+ * const control = new FormControl('password', PasswordValidators.minLength(10));
1658
+ * console.log(control.errors); // {minLength: {min: 10, actual: 8}}
1659
+ * ```
1660
+ */
1661
+ static minLength(min) {
1662
+ return ({ value }) => {
1663
+ if (typeof value !== 'string') {
1664
+ return null;
1665
+ }
1666
+ return value.length >= min ? null : { minLength: { min, actual: value.length } };
1667
+ };
1668
+ }
1669
+ /**
1670
+ * Validator that requires the control's value length to be at most `max` characters.
1671
+ *
1672
+ * `max` - number of characters.
1673
+ *
1674
+ * ## Usage:
1675
+ * ```typescript
1676
+ * const control = new FormControl('password', PasswordValidators.maxLength(6));
1677
+ * console.log(control.errors); // {maxLength: {max: 6, actual: 8}}
1678
+ * ```
1679
+ */
1680
+ static maxLength(max) {
1681
+ return ({ value }) => {
1682
+ if (typeof value !== 'string') {
1683
+ return null;
1684
+ }
1685
+ return value.length <= max ? null : { maxLength: { max, actual: value.length } };
1686
+ };
1687
+ }
1688
+ /**
1689
+ * Validator that requires the control's value to be at least `min` uppercase characters.
1690
+ *
1691
+ * `min` - number of uppercase characters.
1692
+ *
1693
+ * ### Usage:
1694
+ *
1695
+ * ```typescript
1696
+ * const control = new FormControl('Password', PasswordValidators.minUppercase(2));
1697
+ * console.log(control.errors); // {minUppercase: {min: 2, actual: 1}}
1698
+ * ```
1699
+ */
1700
+ static minUppercase(min) {
1701
+ return ({ value }) => {
1702
+ if (typeof value !== 'string') {
1703
+ return null;
1704
+ }
1705
+ const matches = (value.match(/[A-Z]/g) || []).length;
1706
+ return matches >= min ? null : { minUppercase: { min, actual: matches } };
1707
+ };
1708
+ }
1709
+ /**
1710
+ * Validator that requires the control's value to be at least `min` lowercase characters.
1711
+ *
1712
+ * `min` - number of lowercase characters.
1713
+ *
1714
+ * ### Usage:
1715
+ *
1716
+ * ```typescript
1717
+ * const control = new FormControl('PASSWORD', PasswordValidators.minLowercase());
1718
+ * console.log(control.errors); // {minLowercase: {min: 1, actual: 0}}
1719
+ * ```
1720
+ */
1721
+ static minLowercase(min) {
1722
+ return ({ value }) => {
1723
+ if (typeof value !== 'string') {
1724
+ return null;
1725
+ }
1726
+ const matches = (value.match(/[a-z]/g) || []).length;
1727
+ return matches >= min ? null : { minLowercase: { min, actual: matches } };
1728
+ };
1729
+ }
1730
+ /**
1731
+ * Validator that requires the control's value to be at least `min` number characters.
1732
+ *
1733
+ * `min` - number of number characters.
1734
+ *
1735
+ * ### Usage:
1736
+ *
1737
+ * ```typescript
1738
+ * const control = new FormControl('passw0rd', PasswordValidators.minNumber(2));
1739
+ * console.log(control.errors); // {minNumber: {min: 2, actual: 1}}
1740
+ * ```
1741
+ */
1742
+ static minNumber(min) {
1743
+ return ({ value }) => {
1744
+ if (typeof value !== 'string') {
1745
+ return null;
1746
+ }
1747
+ const matches = (value.match(/[\d]/g) || []).length;
1748
+ return matches >= min ? null : { minNumber: { min, actual: matches } };
1749
+ };
1750
+ }
1751
+ /**
1752
+ * Validator that requires the control's value to be at least `min` special characters.
1753
+ *
1754
+ * `min` - number of special characters.
1755
+ *
1756
+ * ### Special characters:
1757
+ * ```js
1758
+ * ['!','@','#','$','%','^','&','*']
1759
+ * ```
1760
+ *
1761
+ * ### Usage:
1762
+ *
1763
+ * ```typescript
1764
+ * const control = new FormControl('pa$sword', PasswordValidators.minSpecial(2));
1765
+ * console.log(control.errors); // {minSpecial: {min: 2, actual: 1}}
1766
+ * ```
1767
+ */
1768
+ static minSpecial(min) {
1769
+ return ({ value }) => {
1770
+ if (typeof value !== 'string') {
1771
+ return null;
1772
+ }
1773
+ const matches = (value.match(/[!@#$%^&*]/g) || []).length;
1774
+ return matches >= min ? null : { minSpecial: { min, actual: matches } };
1775
+ };
1776
+ }
1777
+ }
1778
+ /** Provides a set of validators for file-related form controls. */
1779
+ class FileValidators {
1780
+ /**
1781
+ * Validator that checks if the file size is less than or equal to the provided `maxSize`.
1782
+ *
1783
+ * @param maxSize - The maximum allowed file size in bytes.
1784
+ *
1785
+ * @returns A ValidatorFn function that checks the file size.
1786
+ *
1787
+ * ## Usage:
1788
+ *
1789
+ * ```typescript
1790
+ * const control = new FormControl(null, [FileValidators.maxFileSize(1024 * 1024)]); // 1MB
1791
+ * control.setValue(FILE_LESS_OR_EQUAL_THAN_1MB);
1792
+ * console.log(control.errors); // null
1793
+ * control.setValue(FILE_MORE_THAN_1MB);
1794
+ * console.log(control.errors); // {maxFileSize: { max: 1048576, actual: FILE_MORE_THAN_1MB.size }}
1795
+ * ```
1796
+ */
1797
+ static maxFileSize(maxSize) {
1798
+ return ({ value }) => {
1799
+ if (!value)
1800
+ return null;
1801
+ const size = value instanceof File ? value.size : value.file.size;
1802
+ if (size > maxSize) {
1803
+ return { maxFileSize: { max: maxSize, actual: size } };
1804
+ }
1805
+ return null;
1806
+ };
1807
+ }
1808
+ }
1809
+
1520
1810
  function escapeRegExp(value) {
1521
1811
  if (value) {
1522
1812
  return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
@@ -1552,9 +1842,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
1552
1842
  }]
1553
1843
  }] });
1554
1844
 
1555
- /** InjectionToken that can be used to specify the global label options. */
1556
- const KBQ_LABEL_GLOBAL_OPTIONS = new InjectionToken('kbq-label-global-options');
1557
-
1558
1845
  /**
1559
1846
  * Shared directive to count lines inside a text area, such as a list item.
1560
1847
  * Line elements can be extracted with a @ContentChildren(KbqLine) query, then
@@ -2837,6 +3124,12 @@ class KbqSelectSearch {
2837
3124
  this.isSearchChanged = false;
2838
3125
  formField.canCleanerClearByEsc = false;
2839
3126
  }
3127
+ setPlaceholder(value) {
3128
+ this.formField.control.placeholder = value;
3129
+ }
3130
+ hasPlaceholder() {
3131
+ return !!this.formField?.control.placeholder;
3132
+ }
2840
3133
  focus() {
2841
3134
  this.formField.focusViaKeyboard();
2842
3135
  }
@@ -3012,11 +3305,11 @@ var KbqThemeSelector;
3012
3305
  * This is the standard theme that is applied
3013
3306
  * when the application is first loaded if nothing else provided
3014
3307
  */
3015
- KbqThemeSelector["Default"] = "kbq-theme-light";
3308
+ KbqThemeSelector["Default"] = "kbq-light";
3016
3309
  /**
3017
3310
  * This theme is used to provide a darker visual experience, often preferred in low-light environments.
3018
3311
  */
3019
- KbqThemeSelector["Dark"] = "kbq-theme-dark";
3312
+ KbqThemeSelector["Dark"] = "kbq-dark";
3020
3313
  })(KbqThemeSelector || (KbqThemeSelector = {}));
3021
3314
  const KbqDefaultThemes = [
3022
3315
  {
@@ -3180,15 +3473,16 @@ function toBoolean(value) {
3180
3473
 
3181
3474
  const validationTooltipShowDelay = 10;
3182
3475
  const validationTooltipHideDelay = 3000;
3476
+ /** @deprecated Will be removed in next major release (#DS-2838) */
3183
3477
  const KBQ_VALIDATION = new InjectionToken('KbqUseValidation', {
3184
3478
  factory: () => ({ useValidation: true })
3185
3479
  });
3186
3480
 
3187
- const VERSION = new Version('18.2.1+sha-782536d');
3481
+ const VERSION = new Version('18.4.0+sha-440edc1');
3188
3482
 
3189
3483
  /**
3190
3484
  * Generated bundle index. Do not edit.
3191
3485
  */
3192
3486
 
3193
- export { AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterPipe, AnimationCurves, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, DateAdapter, DateFormatter, EXTENDED_OVERLAY_POSITIONS, ErrorStateMatcher, KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER, KBQ_DATE_FORMATS, KBQ_DATE_LOCALE, KBQ_DATE_LOCALE_FACTORY, KBQ_DEFAULT_LOCALE_DATA_FACTORY, KBQ_DEFAULT_LOCALE_ID, KBQ_FORM_FIELD_REF, KBQ_LABEL_GLOBAL_OPTIONS, KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS, KBQ_NUMBER_FORMATTER_OPTIONS, KBQ_OPTION_ACTION_PARENT, KBQ_OPTION_PARENT_COMPONENT, KBQ_PARENT_ANIMATION_COMPONENT, KBQ_SANITY_CHECKS, KBQ_SELECT_SCROLL_STRATEGY, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER, KBQ_SIZE_UNITS_CONFIG, KBQ_SIZE_UNITS_DEFAULT_CONFIG, KBQ_TITLE_TEXT_REF, KBQ_VALIDATION, KbqCommonModule, KbqComponentColors, KbqDataSizePipe, KbqDecimalPipe, KbqDefaultThemes, KbqForm, KbqFormElement, KbqFormattersModule, KbqFormsModule, KbqHighlightModule, KbqHighlightPipe, KbqLine, KbqLineModule, KbqLineSetter, KbqLocaleService, KbqLocaleServiceModule, KbqMeasureScrollbarService, KbqOptgroup, KbqOptgroupBase, KbqOptgroupMixinBase, KbqOption, KbqOptionActionBase, KbqOptionActionComponent, KbqOptionActionMixinBase, KbqOptionBase, KbqOptionModule, KbqOptionSelectionChange, KbqPopUp, KbqPopUpTrigger, KbqPseudoCheckbox, KbqPseudoCheckboxBase, KbqPseudoCheckboxMixinBase, KbqPseudoCheckboxModule, KbqRoundDecimalPipe, KbqSelectFooter, KbqSelectMatcher, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqSelectTrigger, KbqTableNumberPipe, KbqThemeSelector, KbqVirtualOption, LEFT_BOTTOM_POSITION_PRIORITY, LEFT_POSITION_PRIORITY, LEFT_TOP_POSITION_PRIORITY, MeasurementSystem, MultipleMode, NUMBER_FORMAT_REGEXP, POSITION_MAP, POSITION_PRIORITY_STRATEGY, POSITION_TO_CSS_MAP, PopUpPlacements, PopUpSizes, PopUpTriggers, PopUpVisibility, RIGHT_BOTTOM_POSITION_PRIORITY, RIGHT_POSITION_PRIORITY, RIGHT_TOP_POSITION_PRIORITY, RangeDateFormatterPipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterPipe, SELECT_PANEL_INDENT_PADDING_X, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, ShowOnDirtyErrorStateMatcher, TOP_LEFT_POSITION_PRIORITY, TOP_POSITION_PRIORITY, TOP_RIGHT_POSITION_PRIORITY, ThemePalette, ThemeService, VERSION, applyPopupMargins, countGroupLabelsBeforeOption, enUSFormattersData, enUSLocaleData, esLAFormattersData, esLALocaleData, escapeRegExp, faIRFormattersData, faIRLocaleData, fadeAnimation, formatDataSize, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getOptionScrollPosition, isBoolean, isWithin, kbqSelectAnimations, kbqSelectScrollStrategyProviderFactory, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, ptBRFormattersData, ptBRLocaleData, ruRUFormattersData, ruRULocaleData, selectEvents, toBoolean, validationTooltipHideDelay, validationTooltipShowDelay, zhCNFormattersData, zhCNLocaleData };
3487
+ export { AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterPipe, AnimationCurves, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, DateAdapter, DateFormatter, EXTENDED_OVERLAY_POSITIONS, ErrorStateMatcher, FileValidators, KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER, KBQ_DATE_FORMATS, KBQ_DATE_LOCALE, KBQ_DATE_LOCALE_FACTORY, KBQ_DEFAULT_LOCALE_DATA_FACTORY, KBQ_DEFAULT_LOCALE_ID, KBQ_FORM_FIELD_REF, KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS, KBQ_NUMBER_FORMATTER_OPTIONS, KBQ_OPTION_ACTION_PARENT, KBQ_OPTION_PARENT_COMPONENT, KBQ_PARENT_ANIMATION_COMPONENT, KBQ_SANITY_CHECKS, KBQ_SELECT_SCROLL_STRATEGY, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER, KBQ_SIZE_UNITS_CONFIG, KBQ_SIZE_UNITS_DEFAULT_CONFIG, KBQ_TITLE_TEXT_REF, KBQ_VALIDATION, KbqCommonModule, KbqComponentColors, KbqDataSizePipe, KbqDecimalPipe, KbqDefaultThemes, KbqForm, KbqFormElement, KbqFormattersModule, KbqFormsModule, KbqHighlightModule, KbqHighlightPipe, KbqLine, KbqLineModule, KbqLineSetter, KbqLocaleService, KbqLocaleServiceModule, KbqMeasureScrollbarService, KbqOptgroup, KbqOptgroupBase, KbqOptgroupMixinBase, KbqOption, KbqOptionActionBase, KbqOptionActionComponent, KbqOptionActionMixinBase, KbqOptionBase, KbqOptionModule, KbqOptionSelectionChange, KbqPopUp, KbqPopUpTrigger, KbqPseudoCheckbox, KbqPseudoCheckboxBase, KbqPseudoCheckboxMixinBase, KbqPseudoCheckboxModule, KbqRoundDecimalPipe, KbqSelectFooter, KbqSelectMatcher, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqSelectTrigger, KbqTableNumberPipe, KbqThemeSelector, KbqVirtualOption, LEFT_BOTTOM_POSITION_PRIORITY, LEFT_POSITION_PRIORITY, LEFT_TOP_POSITION_PRIORITY, MeasurementSystem, MultipleMode, NUMBER_FORMAT_REGEXP, POSITION_MAP, POSITION_PRIORITY_STRATEGY, POSITION_TO_CSS_MAP, PasswordValidators, PopUpPlacements, PopUpSizes, PopUpTriggers, PopUpVisibility, RIGHT_BOTTOM_POSITION_PRIORITY, RIGHT_POSITION_PRIORITY, RIGHT_TOP_POSITION_PRIORITY, RangeDateFormatterPipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterPipe, SELECT_PANEL_INDENT_PADDING_X, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, ShowOnControlDirtyErrorStateMatcher, ShowOnFormSubmitErrorStateMatcher, TOP_LEFT_POSITION_PRIORITY, TOP_POSITION_PRIORITY, TOP_RIGHT_POSITION_PRIORITY, ThemePalette, ThemeService, VERSION, applyPopupMargins, checkAndNormalizeLocalizedNumber, countGroupLabelsBeforeOption, enUSFormattersData, enUSLocaleData, esLAFormattersData, esLALocaleData, escapeRegExp, faIRFormattersData, faIRLocaleData, fadeAnimation, formatDataSize, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getOptionScrollPosition, isBoolean, isWithin, kbqSelectAnimations, kbqSelectScrollStrategyProviderFactory, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, normalizeNumber, ptBRFormattersData, ptBRLocaleData, ruRUFormattersData, ruRULocaleData, selectEvents, toBoolean, validationTooltipHideDelay, validationTooltipShowDelay, zhCNFormattersData, zhCNLocaleData };
3194
3488
  //# sourceMappingURL=koobiq-components-core.mjs.map