@koobiq/components 18.36.0 → 18.37.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.
- package/autocomplete/autocomplete.scss +2 -17
- package/breadcrumbs/breadcrumbs.d.ts +2 -1
- package/breadcrumbs/breadcrumbs.scss +4 -4
- package/button/button.component.d.ts +1 -0
- package/button-toggle/button-toggle.scss +0 -2
- package/content-panel/content-panel.d.ts +1 -1
- package/content-panel/index.d.ts +0 -1
- package/core/common-behaviors/hover.d.ts +15 -0
- package/core/common-behaviors/index.d.ts +1 -1
- package/core/locales/formatters.d.ts +0 -72
- package/core/locales/index.d.ts +0 -2
- package/core/locales/locale-service.d.ts +0 -392
- package/core/option/option.d.ts +3 -2
- package/core/select/common.d.ts +3 -1
- package/core/styles/common/_select.scss +20 -0
- package/core/styles/typography/_typography.scss +23 -82
- package/datepicker/datepicker-module.d.ts +2 -1
- package/dropdown/dropdown-item.scss +8 -7
- package/dropdown/dropdown.scss +5 -14
- package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +4 -4
- package/esm2022/breadcrumbs/breadcrumbs.mjs +46 -37
- package/esm2022/button/button.component.mjs +6 -4
- package/esm2022/button-toggle/button-toggle.component.mjs +2 -2
- package/esm2022/code-block/code-block-highlight.mjs +6 -1
- package/esm2022/content-panel/content-panel.mjs +2 -2
- package/esm2022/content-panel/index.mjs +1 -2
- package/esm2022/core/common-behaviors/color.mjs +2 -1
- package/esm2022/core/common-behaviors/common-module.mjs +2 -1
- package/esm2022/core/common-behaviors/disabled.mjs +2 -1
- package/esm2022/core/common-behaviors/error-state.mjs +2 -1
- package/esm2022/core/common-behaviors/hover.mjs +34 -0
- package/esm2022/core/common-behaviors/index.mjs +2 -2
- package/esm2022/core/common-behaviors/tabindex.mjs +2 -1
- package/esm2022/core/form-field/field-sizing-content.mjs +5 -2
- package/esm2022/core/formatters/number/formatter.mjs +2 -2
- package/esm2022/core/locales/es-LA.mjs +10 -10
- package/esm2022/core/locales/formatters.mjs +1 -73
- package/esm2022/core/locales/index.mjs +1 -3
- package/esm2022/core/locales/locale-service.mjs +2 -8
- package/esm2022/core/locales/pt-BR.mjs +19 -19
- package/esm2022/core/locales/tk-TM.mjs +24 -24
- package/esm2022/core/option/option.mjs +10 -6
- package/esm2022/core/pop-up/pop-up-trigger.mjs +2 -1
- package/esm2022/core/select/common.mjs +10 -4
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-header.component.mjs +5 -4
- package/esm2022/datepicker/datepicker-module.mjs +7 -4
- package/esm2022/dropdown/dropdown-item.component.mjs +2 -2
- package/esm2022/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +5 -2
- package/esm2022/file-upload/file-drop.mjs +5 -3
- package/esm2022/file-upload/multiple-file-upload.component.mjs +9 -13
- package/esm2022/file-upload/single-file-upload.component.mjs +9 -4
- package/esm2022/filter-bar/filter-bar.mjs +6 -2
- package/esm2022/filter-bar/filter-search.mjs +3 -3
- package/esm2022/filter-bar/filters.mjs +10 -5
- package/esm2022/filter-bar/pipe-add.mjs +3 -2
- package/esm2022/filter-bar/pipes/base-pipe.mjs +11 -3
- package/esm2022/filter-bar/pipes/pipe-date.mjs +3 -3
- package/esm2022/filter-bar/pipes/pipe-datetime.mjs +3 -3
- package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +5 -4
- package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-select.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-text.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-title.mjs +24 -19
- package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +2 -2
- package/esm2022/form-field/fieldset.mjs +2 -2
- package/esm2022/form-field/form-field.mjs +2 -2
- package/esm2022/form-field/stepper.mjs +41 -10
- package/esm2022/inline-edit/inline-edit.mjs +9 -5
- package/esm2022/input/input-number.mjs +7 -6
- package/esm2022/input/input.module.mjs +7 -4
- package/esm2022/list/list-selection.component.mjs +31 -15
- package/esm2022/markdown/markdown.component.mjs +7 -7
- package/esm2022/modal/modal-util.mjs +7 -3
- package/esm2022/modal/modal.component.mjs +2 -2
- package/esm2022/modal/modal.service.mjs +2 -1
- package/esm2022/navbar/navbar-item.component.mjs +5 -7
- package/esm2022/navbar/navbar.component.mjs +8 -4
- package/esm2022/navbar/vertical-navbar.component.mjs +2 -2
- package/esm2022/navbar-ic/navbar-ic-header.mjs +20 -4
- package/esm2022/navbar-ic/navbar-ic-item.mjs +7 -8
- package/esm2022/navbar-ic/navbar-ic.animation.mjs +10 -2
- package/esm2022/navbar-ic/navbar-ic.mjs +33 -9
- package/esm2022/popover/popover-confirm.component.mjs +3 -3
- package/esm2022/popover/popover.component.mjs +17 -4
- package/esm2022/resizer/index.mjs +3 -0
- package/esm2022/resizer/koobiq-components-resizer.mjs +5 -0
- package/esm2022/resizer/module.mjs +17 -0
- package/esm2022/resizer/resizer.mjs +135 -0
- package/esm2022/scrollbar/scrollbar.directive.mjs +4 -3
- package/esm2022/search-expandable/search-expandable.mjs +5 -5
- package/esm2022/select/select.component.mjs +2 -14
- package/esm2022/select/select.module.mjs +8 -4
- package/esm2022/sidepanel/sidepanel-container.component.mjs +3 -3
- package/esm2022/split-button/split-button.mjs +47 -6
- package/esm2022/tags/tag-input.mjs +24 -28
- package/esm2022/tags/tag-list.component.mjs +76 -87
- package/esm2022/tags/tag.component.mjs +29 -34
- package/esm2022/textarea/textarea.module.mjs +5 -4
- package/esm2022/time-range/constants.mjs +22 -1
- package/esm2022/time-range/time-range-editor.mjs +11 -6
- package/esm2022/time-range/time-range-title-as-form-field.mjs +2 -1
- package/esm2022/time-range/time-range.mjs +8 -3
- package/esm2022/time-range/time-range.service.mjs +43 -106
- package/esm2022/time-range/types.mjs +1 -1
- package/esm2022/timepicker/timepicker.module.mjs +5 -4
- package/esm2022/timezone/timezone-option.component.mjs +2 -2
- package/esm2022/timezone/timezone.module.mjs +6 -4
- package/esm2022/title/title.directive.mjs +6 -2
- package/esm2022/toggle/toggle.component.mjs +3 -3
- package/esm2022/top-bar/top-bar.mjs +2 -2
- package/esm2022/tree/tree-option.component.mjs +7 -6
- package/esm2022/tree/tree-selection.component.mjs +23 -13
- package/esm2022/tree-select/tree-select.component.mjs +97 -79
- package/esm2022/tree-select/tree-select.module.mjs +7 -4
- package/fesm2022/koobiq-components-autocomplete.mjs +3 -3
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +45 -36
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +2 -2
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +5 -3
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +5 -0
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +3 -137
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +90 -478
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +8 -5
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +4 -4
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +4 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +19 -17
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +64 -41
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +44 -17
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +8 -4
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +12 -9
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +30 -14
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +6 -6
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +9 -4
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar-ic.mjs +70 -26
- package/fesm2022/koobiq-components-navbar-ic.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +13 -11
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +18 -5
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-resizer.mjs +156 -0
- package/fesm2022/koobiq-components-resizer.mjs.map +1 -0
- package/fesm2022/koobiq-components-scrollbar.mjs +3 -2
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +4 -4
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +8 -17
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +2 -2
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +46 -5
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +125 -146
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +4 -4
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +81 -112
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +4 -4
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +7 -5
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +5 -1
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +2 -2
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +2 -2
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +102 -82
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +28 -17
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/file-upload/_file-upload-theme.scss +32 -34
- package/file-upload/file-upload-tokens.scss +1 -2
- package/file-upload/file-upload.scss +4 -7
- package/file-upload/multiple-file-upload.component.d.ts +1 -1
- package/file-upload/multiple-file-upload.component.scss +12 -14
- package/file-upload/single-file-upload.component.d.ts +1 -0
- package/file-upload/single-file-upload.component.scss +5 -7
- package/filter-bar/filter-bar.d.ts +3 -1
- package/filter-bar/filter-search.scss +1 -3
- package/filter-bar/filters.d.ts +1 -0
- package/filter-bar/pipes/base-pipe.d.ts +5 -1
- package/filter-bar/pipes/pipe-date.scss +4 -2
- package/filter-bar/pipes/pipe-title.d.ts +2 -0
- package/form-field/fieldset-tokens.scss +2 -1
- package/form-field/form-field-tokens.scss +2 -2
- package/form-field/form-field.scss +9 -1
- package/form-field/stepper.d.ts +28 -6
- package/inline-edit/inline-edit.d.ts +5 -1
- package/input/input.module.d.ts +2 -1
- package/list/list-selection.component.d.ts +12 -1
- package/markdown/_markdown-theme.scss +0 -1
- package/markdown/markdown.scss +2 -4
- package/modal/modal-tokens.scss +2 -1
- package/modal/modal-util.d.ts +5 -2
- package/modal/modal.scss +3 -4
- package/navbar/_navbar-item_vertical.scss +10 -0
- package/navbar/navbar-brand.scss +5 -2
- package/navbar/vertical-navbar.scss +1 -0
- package/navbar-ic/navbar-ic-header.d.ts +3 -2
- package/navbar-ic/navbar-ic-header.scss +0 -4
- package/navbar-ic/navbar-ic-item.d.ts +1 -0
- package/navbar-ic/navbar-ic-item.scss +0 -4
- package/navbar-ic/navbar-ic.animation.d.ts +1 -0
- package/navbar-ic/navbar-ic.d.ts +7 -0
- package/package.json +16 -10
- package/popover/popover-tokens.scss +1 -0
- package/popover/popover.component.d.ts +5 -1
- package/popover/popover.scss +3 -4
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/resizer/index.d.ts +2 -0
- package/resizer/module.d.ts +7 -0
- package/{content-panel/resizable.d.ts → resizer/resizer.d.ts} +18 -13
- package/schematics/collection.json +5 -0
- package/schematics/migrations/icons-replacement/README.md +93 -0
- package/schematics/migrations/icons-replacement/data.js +92 -0
- package/schematics/migrations/icons-replacement/index.js +84 -0
- package/schematics/migrations/icons-replacement/schema.json +32 -0
- package/schematics/ng-add/index.js +6 -6
- package/scrollbar/scrollbar.component.scss +2 -3
- package/select/select.module.d.ts +2 -1
- package/select/select.scss +1 -17
- package/sidepanel/sidepanel-tokens.scss +2 -0
- package/sidepanel/sidepanel.scss +2 -0
- package/split-button/_split-button-theme.scss +89 -34
- package/split-button/split-button.d.ts +11 -5
- package/split-button/split-button.scss +40 -51
- package/tags/tag-input.d.ts +16 -7
- package/tags/tag-list.component.d.ts +44 -21
- package/tags/tag-list.scss +13 -14
- package/tags/tag.component.d.ts +20 -15
- package/textarea/textarea-tokens.scss +6 -1
- package/textarea/textarea.module.d.ts +2 -1
- package/textarea/textarea.scss +4 -0
- package/time-range/constants.d.ts +12 -1
- package/time-range/time-range-editor.d.ts +7 -9
- package/time-range/time-range-title-as-form-field.d.ts +1 -0
- package/time-range/time-range.d.ts +5 -2
- package/time-range/time-range.service.d.ts +7 -11
- package/time-range/types.d.ts +37 -11
- package/timepicker/timepicker.module.d.ts +2 -1
- package/timezone/timezone-option.component.scss +6 -0
- package/timezone/timezone.module.d.ts +1 -1
- package/toggle/_toggle-theme.scss +8 -5
- package/toggle/toggle-tokens.scss +0 -1
- package/toggle/toggle.scss +11 -15
- package/top-bar/top-bar-tokens.scss +1 -1
- package/top-bar/top-bar.scss +3 -0
- package/tree/tree-option.component.d.ts +1 -0
- package/tree/tree-selection.component.d.ts +11 -2
- package/tree-select/tree-select.component.d.ts +5 -5
- package/tree-select/tree-select.module.d.ts +2 -1
- package/tree-select/tree-select.scss +4 -0
- package/core/common-behaviors/hovered.d.ts +0 -13
- package/core/locales/fa-IR.d.ts +0 -162
- package/core/locales/zh-CN.d.ts +0 -162
- package/esm2022/content-panel/resizable.mjs +0 -138
- package/esm2022/core/common-behaviors/hovered.mjs +0 -31
- package/esm2022/core/locales/fa-IR.mjs +0 -173
- package/esm2022/core/locales/zh-CN.mjs +0 -161
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Directive, inject, NgZone, DestroyRef, Renderer2, input, output, computed, afterNextRender, NgModule } from '@angular/core';
|
|
3
|
+
import { coerceCssPixelValue } from '@angular/cdk/coercion';
|
|
4
|
+
import { DOCUMENT } from '@angular/common';
|
|
5
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
|
+
import { kbqInjectNativeElement } from '@koobiq/components/core';
|
|
7
|
+
import { fromEvent } from 'rxjs';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Directive (container) sets whether the element is resizable.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
*
|
|
14
|
+
* ```html
|
|
15
|
+
* <div kbqResizable>
|
|
16
|
+
* <div [kbqResizer]="[-1, 0]"></div>
|
|
17
|
+
* </div>
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
class KbqResizable {
|
|
21
|
+
constructor() {
|
|
22
|
+
/**
|
|
23
|
+
* @docs-private
|
|
24
|
+
*/
|
|
25
|
+
this.element = kbqInjectNativeElement();
|
|
26
|
+
}
|
|
27
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqResizable, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
28
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KbqResizable, isStandalone: true, selector: "[kbqResizable]", host: { classAttribute: "kbq-resizable" }, exportAs: ["kbqResizable"], ngImport: i0 }); }
|
|
29
|
+
}
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqResizable, decorators: [{
|
|
31
|
+
type: Directive,
|
|
32
|
+
args: [{
|
|
33
|
+
standalone: true,
|
|
34
|
+
selector: '[kbqResizable]',
|
|
35
|
+
exportAs: 'kbqResizable',
|
|
36
|
+
host: {
|
|
37
|
+
class: 'kbq-resizable'
|
|
38
|
+
}
|
|
39
|
+
}]
|
|
40
|
+
}] });
|
|
41
|
+
/**
|
|
42
|
+
* Directive which defines element resizing direction.
|
|
43
|
+
*/
|
|
44
|
+
class KbqResizer {
|
|
45
|
+
constructor() {
|
|
46
|
+
this.element = kbqInjectNativeElement();
|
|
47
|
+
this.resizable = inject(KbqResizable);
|
|
48
|
+
this.zone = inject(NgZone);
|
|
49
|
+
this.document = inject(DOCUMENT);
|
|
50
|
+
this.destroyRef = inject(DestroyRef);
|
|
51
|
+
this.renderer = inject(Renderer2);
|
|
52
|
+
this.x = NaN;
|
|
53
|
+
this.y = NaN;
|
|
54
|
+
this.width = 0;
|
|
55
|
+
this.height = 0;
|
|
56
|
+
/**
|
|
57
|
+
* Direction of element resizing.
|
|
58
|
+
*/
|
|
59
|
+
this.direction = input.required({ alias: 'kbqResizer' });
|
|
60
|
+
/**
|
|
61
|
+
* Emits the new size of the element after resizing.
|
|
62
|
+
*/
|
|
63
|
+
this.sizeChange = output();
|
|
64
|
+
/**
|
|
65
|
+
* @docs-private
|
|
66
|
+
*/
|
|
67
|
+
this.cursor = computed(() => {
|
|
68
|
+
const [x, y] = this.direction();
|
|
69
|
+
if (x === 0 && y === 0)
|
|
70
|
+
return 'default';
|
|
71
|
+
if (!x)
|
|
72
|
+
return 'ns-resize';
|
|
73
|
+
if (!y)
|
|
74
|
+
return 'ew-resize';
|
|
75
|
+
if (x * y > 0)
|
|
76
|
+
return 'nwse-resize';
|
|
77
|
+
return 'nesw-resize';
|
|
78
|
+
});
|
|
79
|
+
afterNextRender(() => {
|
|
80
|
+
this.zone.runOutsideAngular(() => {
|
|
81
|
+
fromEvent(this.element, 'pointerdown')
|
|
82
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
83
|
+
.subscribe((event) => this.handleElementPointerDown(event));
|
|
84
|
+
fromEvent(this.document, 'pointermove')
|
|
85
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
86
|
+
.subscribe((event) => this.handleDocumentPointerMove(event));
|
|
87
|
+
fromEvent(this.document, 'pointerup')
|
|
88
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
89
|
+
.subscribe((event) => this.handleDocumentPointerUp(event));
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
handleElementPointerDown(event) {
|
|
94
|
+
event.preventDefault();
|
|
95
|
+
this.x = event.x;
|
|
96
|
+
this.y = event.y;
|
|
97
|
+
const { clientWidth, clientHeight } = this.resizable.element;
|
|
98
|
+
this.width = clientWidth;
|
|
99
|
+
this.height = clientHeight;
|
|
100
|
+
}
|
|
101
|
+
handleDocumentPointerMove(event) {
|
|
102
|
+
if (!event.buttons)
|
|
103
|
+
return this.handleDocumentPointerUp(event);
|
|
104
|
+
this.updateSize(event);
|
|
105
|
+
}
|
|
106
|
+
handleDocumentPointerUp(_event) {
|
|
107
|
+
this.x = NaN;
|
|
108
|
+
}
|
|
109
|
+
updateSize({ x, y }) {
|
|
110
|
+
if (Number.isNaN(this.x))
|
|
111
|
+
return;
|
|
112
|
+
const [directionX, directionY] = this.direction();
|
|
113
|
+
const width = this.width + directionX * (x - this.x);
|
|
114
|
+
const height = this.height + directionY * (y - this.y);
|
|
115
|
+
if (directionX)
|
|
116
|
+
this.renderer.setStyle(this.resizable.element, 'width', coerceCssPixelValue(width));
|
|
117
|
+
if (directionY)
|
|
118
|
+
this.renderer.setStyle(this.resizable.element, 'height', coerceCssPixelValue(height));
|
|
119
|
+
this.sizeChange.emit({ width, height });
|
|
120
|
+
}
|
|
121
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqResizer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
122
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: KbqResizer, isStandalone: true, selector: "[kbqResizer]", inputs: { direction: { classPropertyName: "direction", publicName: "kbqResizer", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { sizeChange: "sizeChange" }, host: { properties: { "style.cursor": "cursor()" }, classAttribute: "kbq-resizer" }, exportAs: ["kbqResizer"], ngImport: i0 }); }
|
|
123
|
+
}
|
|
124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqResizer, decorators: [{
|
|
125
|
+
type: Directive,
|
|
126
|
+
args: [{
|
|
127
|
+
standalone: true,
|
|
128
|
+
selector: '[kbqResizer]',
|
|
129
|
+
exportAs: 'kbqResizer',
|
|
130
|
+
host: {
|
|
131
|
+
class: 'kbq-resizer',
|
|
132
|
+
'[style.cursor]': 'cursor()'
|
|
133
|
+
}
|
|
134
|
+
}]
|
|
135
|
+
}], ctorParameters: () => [] });
|
|
136
|
+
|
|
137
|
+
const COMPONENTS = [KbqResizable, KbqResizer];
|
|
138
|
+
class KbqResizerModule {
|
|
139
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqResizerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
140
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqResizerModule, imports: [KbqResizable, KbqResizer], exports: [KbqResizable, KbqResizer] }); }
|
|
141
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqResizerModule }); }
|
|
142
|
+
}
|
|
143
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqResizerModule, decorators: [{
|
|
144
|
+
type: NgModule,
|
|
145
|
+
args: [{
|
|
146
|
+
imports: COMPONENTS,
|
|
147
|
+
exports: COMPONENTS
|
|
148
|
+
}]
|
|
149
|
+
}] });
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Generated bundle index. Do not edit.
|
|
153
|
+
*/
|
|
154
|
+
|
|
155
|
+
export { KbqResizable, KbqResizer, KbqResizerModule };
|
|
156
|
+
//# sourceMappingURL=koobiq-components-resizer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"koobiq-components-resizer.mjs","sources":["../../../packages/components/resizer/resizer.ts","../../../packages/components/resizer/module.ts","../../../packages/components/resizer/koobiq-components-resizer.ts"],"sourcesContent":["import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n afterNextRender,\n computed,\n DestroyRef,\n Directive,\n inject,\n input,\n NgZone,\n output,\n Renderer2\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { kbqInjectNativeElement } from '@koobiq/components/core';\nimport { fromEvent } from 'rxjs';\n\n/**\n * Directions for resizing.\n *\n * Horizontal direction (x):\n * - Left: -1\n * - None: 0\n * - Right: 1\n *\n * Vertical direction (y):\n * - Up: -1\n * - None: 0\n * - Down: 1\n */\nexport type KbqResizerDirection = [x: -1 | 0 | 1, y: -1 | 0 | 1];\n\n/**\n * Event emitted when the size of the resizable element changes.\n */\nexport type KbqResizerSizeChangeEvent = {\n width: number;\n height: number;\n};\n\n/**\n * Directive (container) sets whether the element is resizable.\n *\n * @example\n *\n * ```html\n * <div kbqResizable>\n * <div [kbqResizer]=\"[-1, 0]\"></div>\n * </div>\n * ```\n */\n@Directive({\n standalone: true,\n selector: '[kbqResizable]',\n exportAs: 'kbqResizable',\n host: {\n class: 'kbq-resizable'\n }\n})\nexport class KbqResizable {\n /**\n * @docs-private\n */\n readonly element = kbqInjectNativeElement();\n}\n\n/**\n * Directive which defines element resizing direction.\n */\n@Directive({\n standalone: true,\n selector: '[kbqResizer]',\n exportAs: 'kbqResizer',\n host: {\n class: 'kbq-resizer',\n '[style.cursor]': 'cursor()'\n }\n})\nexport class KbqResizer {\n private readonly element = kbqInjectNativeElement();\n private readonly resizable = inject(KbqResizable);\n private readonly zone = inject(NgZone);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly renderer = inject(Renderer2);\n\n private x = NaN;\n private y = NaN;\n\n private width = 0;\n private height = 0;\n\n /**\n * Direction of element resizing.\n */\n readonly direction = input.required<KbqResizerDirection>({ alias: 'kbqResizer' });\n\n /**\n * Emits the new size of the element after resizing.\n */\n readonly sizeChange = output<KbqResizerSizeChangeEvent>();\n\n /**\n * @docs-private\n */\n protected readonly cursor = computed(() => {\n const [x, y] = this.direction();\n\n if (x === 0 && y === 0) return 'default';\n if (!x) return 'ns-resize';\n if (!y) return 'ew-resize';\n if (x * y > 0) return 'nwse-resize';\n\n return 'nesw-resize';\n });\n\n constructor() {\n afterNextRender(() => {\n this.zone.runOutsideAngular(() => {\n fromEvent<PointerEvent>(this.element, 'pointerdown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.handleElementPointerDown(event));\n\n fromEvent<PointerEvent>(this.document, 'pointermove')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.handleDocumentPointerMove(event));\n\n fromEvent<PointerEvent>(this.document, 'pointerup')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.handleDocumentPointerUp(event));\n });\n });\n }\n\n private handleElementPointerDown(event: PointerEvent): void {\n event.preventDefault();\n\n this.x = event.x;\n this.y = event.y;\n\n const { clientWidth, clientHeight } = this.resizable.element;\n\n this.width = clientWidth;\n this.height = clientHeight;\n }\n\n private handleDocumentPointerMove(event: PointerEvent): void {\n if (!event.buttons) return this.handleDocumentPointerUp(event);\n\n this.updateSize(event);\n }\n\n private handleDocumentPointerUp(_event: PointerEvent): void {\n this.x = NaN;\n }\n\n private updateSize({ x, y }: PointerEvent): void {\n if (Number.isNaN(this.x)) return;\n\n const [directionX, directionY] = this.direction();\n const width = this.width + directionX * (x - this.x);\n const height = this.height + directionY * (y - this.y);\n\n if (directionX) this.renderer.setStyle(this.resizable.element, 'width', coerceCssPixelValue(width));\n if (directionY) this.renderer.setStyle(this.resizable.element, 'height', coerceCssPixelValue(height));\n\n this.sizeChange.emit({ width, height });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqResizable, KbqResizer } from './resizer';\n\nconst COMPONENTS = [KbqResizable, KbqResizer];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqResizerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -17,15 +17,16 @@ const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER = {
|
|
|
17
17
|
useValue: KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
/* eslint-disable no-restricted-globals */
|
|
21
20
|
const createDefer = () => {
|
|
21
|
+
// For SSR compatibility
|
|
22
|
+
// eslint-disable-next-line no-restricted-globals
|
|
22
23
|
if (typeof window === 'undefined') {
|
|
23
|
-
// mock ssr calls with "noop"
|
|
24
24
|
const noop = () => { };
|
|
25
25
|
return [noop, noop];
|
|
26
26
|
}
|
|
27
27
|
let idleId;
|
|
28
28
|
let rafId;
|
|
29
|
+
// eslint-disable-next-line no-restricted-globals
|
|
29
30
|
const { requestIdleCallback, requestAnimationFrame, cancelAnimationFrame, cancelIdleCallback } = window;
|
|
30
31
|
const idleSupported = typeof requestIdleCallback === 'function';
|
|
31
32
|
const rIdle = idleSupported ? requestIdleCallback : requestAnimationFrame;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-scrollbar.mjs","sources":["../../../packages/components/scrollbar/scrollbar.types.ts","../../../packages/components/scrollbar/scrollbar.directive.ts","../../../packages/components/scrollbar/scrollbar.component.ts","../../../packages/components/scrollbar/scrollbar.module.ts","../../../packages/components/scrollbar/koobiq-components-scrollbar.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\nimport { EventListenerArgs, EventListeners, InitializationTarget, PartialOptions } from 'overlayscrollbars';\n\nexport type KbqScrollbarEvents = EventListeners;\nexport type KbqScrollbarEventListenerArgs = EventListenerArgs;\nexport type KbqScrollbarOptions = PartialOptions;\nexport type KbqScrollbarTarget = InitializationTarget;\n\nexport const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG: KbqScrollbarOptions = {\n scrollbars: {\n autoHide: 'leave',\n autoHideDelay: 100\n }\n};\n\nexport const KBQ_SCROLLBAR_CONFIG = new InjectionToken<KbqScrollbarOptions>('KBQ_SCROLLBAR_CONFIG');\n\n/** Default scroll behavior */\nexport const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER: Provider = {\n provide: KBQ_SCROLLBAR_CONFIG,\n useValue: KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG\n};\n","/* eslint-disable no-restricted-globals */\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { Directive, Inject, Input, NgZone, OnDestroy } from '@angular/core';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nimport { KBQ_SCROLLBAR_CONFIG, KbqScrollbarEvents, KbqScrollbarOptions, KbqScrollbarTarget } from './scrollbar.types';\n\ntype Defer = [\n requestDefer: (callback: () => any, options?: boolean | IdleRequestOptions) => void,\n cancelDefer: () => void\n];\n\nconst createDefer = (): Defer => {\n if (typeof window === 'undefined') {\n // mock ssr calls with \"noop\"\n const noop = () => {};\n\n return [noop, noop];\n }\n\n let idleId: number;\n let rafId: number;\n\n const { requestIdleCallback, requestAnimationFrame, cancelAnimationFrame, cancelIdleCallback } = window;\n\n const idleSupported = typeof requestIdleCallback === 'function';\n const rIdle = idleSupported ? requestIdleCallback : requestAnimationFrame;\n const cIdle = idleSupported ? cancelIdleCallback : cancelAnimationFrame;\n const clear = () => {\n cIdle(idleId);\n cancelAnimationFrame(rafId);\n };\n\n return [\n (callback, options) => {\n clear();\n idleId = rIdle(\n idleSupported\n ? () => {\n clear();\n // inside idle its best practice to use rAF to change DOM for best performance\n rafId = requestAnimationFrame(callback);\n }\n : callback,\n typeof options === 'object' ? options : { timeout: 2233 }\n );\n },\n clear\n\n ];\n};\n\n/**\n * A directive for adding `overlayscrollbars` to an element.\n */\n@Directive({\n standalone: true,\n selector: '[kbqScrollbar]',\n hostDirectives: [CdkScrollable]\n})\nexport class KbqScrollbarDirective implements OnDestroy {\n private requestDefer: ReturnType<typeof createDefer>[0];\n private cancelDefer: ReturnType<typeof createDefer>[1];\n\n private _options: KbqScrollbarOptions;\n\n @Input()\n set options(value: KbqScrollbarOptions) {\n this._options = value;\n\n if (OverlayScrollbars.valid(this.scrollbarInstance)) {\n this.scrollbarInstance.options(value || {}, true);\n }\n }\n\n /** Scrollbar behavior customization object */\n get options(): KbqScrollbarOptions | undefined {\n return this._options;\n }\n\n private _events?: KbqScrollbarEvents;\n\n @Input()\n set events(value: KbqScrollbarEvents) {\n this._events = value;\n\n if (OverlayScrollbars.valid(this.scrollbarInstance)) {\n this.scrollbarInstance.on(value || {}, true);\n }\n }\n\n get events(): KbqScrollbarEvents | undefined {\n return this._events;\n }\n\n /** Whether to defer the initialization to a point in time when the browser is idle. (or to the next frame if `window.requestIdleCallback` is not supported) */\n @Input()\n defer?: boolean | IdleRequestOptions;\n\n scrollbarInstance?: OverlayScrollbars;\n\n constructor(\n private ngZone: NgZone,\n @Inject(KBQ_SCROLLBAR_CONFIG) private scrollbarConfig?: KbqScrollbarOptions\n ) {\n const [requestDefer, cancelDefer] = createDefer();\n\n this.requestDefer = requestDefer;\n this.cancelDefer = cancelDefer;\n }\n\n initialize(target: KbqScrollbarTarget) {\n this.ngZone.runOutsideAngular(() => {\n const init = () => {\n this.scrollbarInstance = OverlayScrollbars(\n target,\n this.options || this.scrollbarConfig || {},\n this.events || {}\n );\n };\n\n if (this.defer) {\n this.requestDefer(init, this.defer);\n } else {\n init();\n }\n });\n }\n\n ngOnDestroy() {\n this.cancelDefer();\n }\n}\n","import {\n afterNextRender,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqScrollbarDirective } from './scrollbar.directive';\nimport {\n KbqScrollbarEventListenerArgs,\n KbqScrollbarEvents,\n KbqScrollbarOptions,\n KbqScrollbarTarget\n} from './scrollbar.types';\n\nconst filterEvents = (emits: KbqScrollbarEvents, events: KbqScrollbarEvents) =>\n (Object.keys(emits) as (keyof KbqScrollbarEvents)[]).reduce<KbqScrollbarEvents>(\n <N extends keyof KbqScrollbarEvents>(obj: KbqScrollbarEvents, name: N) => {\n const emitListener = emits[name];\n const eventListener = events[name];\n\n // merge & check listeners\n obj[name] = [\n emitListener,\n ...(Array.isArray(eventListener) ? eventListener : [eventListener]).filter(Boolean)];\n\n return obj;\n },\n {}\n );\n\n/**\n * The component-wrapper for `overlayscrollbars` library.\n */\n@Component({\n standalone: true,\n imports: [KbqScrollbarDirective],\n selector: 'kbq-scrollbar, [kbq-scrollbar]',\n exportAs: 'kbqScrollbar',\n host: {\n 'data-overlayscrollbars-initialize': '',\n class: 'kbq-scrollbar-component'\n },\n template: `\n <div\n #content\n data-overlayscrollbars-contents=\"\"\n kbqScrollbar\n [options]=\"options\"\n [events]=\"mergeEvents()\"\n [defer]=\"defer\"\n >\n <ng-content />\n </div>\n `,\n styleUrls: ['./scrollbar.component.scss', 'scrollbar-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqScrollbar implements AfterViewInit, OnDestroy {\n /** Element that is being overflowed */\n @ViewChild('content') contentElement: ElementRef<HTMLDivElement>;\n @ViewChild('content', { read: KbqScrollbarDirective }) private kbqScrollbarDirective?: KbqScrollbarDirective;\n\n /** Elements scrollbar applied on */\n @Input() initializationTarget?: KbqScrollbarTarget;\n /** Scrollbar behavior customization object */\n @Input() options: KbqScrollbarOptions;\n @Input() events: KbqScrollbarEvents;\n /** Whether to defer the initialization to a point in time when the browser is idle. (or to the next frame if `window.requestIdleCallback` is not supported) */\n @Input() defer?: boolean | IdleRequestOptions;\n\n @Output() readonly onInitialize = new EventEmitter<KbqScrollbarEventListenerArgs['initialized']>();\n /** Event triggered when options or event listeners updated */\n @Output() readonly onUpdate = new EventEmitter<KbqScrollbarEventListenerArgs['updated']>();\n /** Event triggered when scrollbar instance destroyed */\n @Output() readonly onDestroy = new EventEmitter<KbqScrollbarEventListenerArgs['destroyed']>();\n @Output() readonly onScroll = new EventEmitter<KbqScrollbarEventListenerArgs['scroll']>();\n\n get element(): HTMLElement {\n return this.targetElement.nativeElement;\n }\n\n private readonly injector = inject(Injector);\n\n constructor(\n private ngZone: NgZone,\n private targetElement: ElementRef<HTMLElement>\n ) {}\n\n ngAfterViewInit() {\n afterNextRender(\n () => {\n if (this.element && this.contentElement.nativeElement) {\n this.kbqScrollbarDirective?.initialize(\n this.initializationTarget || {\n target: this.targetElement.nativeElement,\n elements: {\n viewport: this.contentElement.nativeElement,\n content: this.contentElement.nativeElement\n }\n }\n );\n }\n },\n { injector: this.injector }\n );\n }\n\n ngOnDestroy() {\n this.kbqScrollbarDirective?.scrollbarInstance?.destroy();\n }\n\n /** Wrapper function for native scroll */\n scrollTo(options?: ScrollToOptions): void {\n this.contentElement.nativeElement.scroll(options);\n }\n\n mergeEvents(): KbqScrollbarEvents {\n const defaultListeners: KbqScrollbarEvents = {\n initialized: (...args) => this.dispatchEventIfHasObservers(this.onInitialize, args),\n updated: (...args) => this.dispatchEventIfHasObservers(this.onUpdate, args),\n destroyed: (...args) => this.dispatchEventIfHasObservers(this.onDestroy, args),\n scroll: (...args) => this.dispatchEventIfHasObservers(this.onScroll, args)\n };\n\n if (!this.events) {\n return defaultListeners;\n }\n\n // merge default listeners with custom listeners in case of Input binding\n return {\n ...defaultListeners,\n ...filterEvents(this.events, defaultListeners)\n };\n }\n\n private dispatchEventIfHasObservers<T>(eventEmitter: EventEmitter<T>, args: T): void {\n // `observed` is available since RxJS@7.2 because `observers` is being deprecated.\n if ((eventEmitter as any).observed || eventEmitter.observers.length > 0) {\n // This is required to re-enter the Angular zone to call the event handler in the Angular\n // zone too. This will not re-enter the Angular zone if emitter doesn't have any observers,\n // for instance, it's being listened: `<overlay-scrollbars (osInitialized)=\"...\"`.\n // Events are dispatched outside of the Angular zone because instance is created in the\n // `<root>` zone\n this.ngZone.run(() => eventEmitter.emit(args));\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqScrollbar } from './scrollbar.component';\nimport { KbqScrollbarDirective } from './scrollbar.directive';\nimport { KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER } from './scrollbar.types';\n\nconst COMPONENTS = [\n KbqScrollbar,\n KbqScrollbarDirective\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS,\n providers: [KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER]\n})\nexport class KbqScrollbarModule {}\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-scrollbar.mjs","sources":["../../../packages/components/scrollbar/scrollbar.types.ts","../../../packages/components/scrollbar/scrollbar.directive.ts","../../../packages/components/scrollbar/scrollbar.component.ts","../../../packages/components/scrollbar/scrollbar.module.ts","../../../packages/components/scrollbar/koobiq-components-scrollbar.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\nimport { EventListenerArgs, EventListeners, InitializationTarget, PartialOptions } from 'overlayscrollbars';\n\nexport type KbqScrollbarEvents = EventListeners;\nexport type KbqScrollbarEventListenerArgs = EventListenerArgs;\nexport type KbqScrollbarOptions = PartialOptions;\nexport type KbqScrollbarTarget = InitializationTarget;\n\nexport const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG: KbqScrollbarOptions = {\n scrollbars: {\n autoHide: 'leave',\n autoHideDelay: 100\n }\n};\n\nexport const KBQ_SCROLLBAR_CONFIG = new InjectionToken<KbqScrollbarOptions>('KBQ_SCROLLBAR_CONFIG');\n\n/** Default scroll behavior */\nexport const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER: Provider = {\n provide: KBQ_SCROLLBAR_CONFIG,\n useValue: KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG\n};\n","import { CdkScrollable } from '@angular/cdk/overlay';\nimport { Directive, Inject, Input, NgZone, OnDestroy } from '@angular/core';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nimport { KBQ_SCROLLBAR_CONFIG, KbqScrollbarEvents, KbqScrollbarOptions, KbqScrollbarTarget } from './scrollbar.types';\n\ntype Defer = [\n requestDefer: (callback: () => any, options?: boolean | IdleRequestOptions) => void,\n cancelDefer: () => void\n];\n\nconst createDefer = (): Defer => {\n // For SSR compatibility\n // eslint-disable-next-line no-restricted-globals\n if (typeof window === 'undefined') {\n const noop = () => {};\n\n return [noop, noop];\n }\n\n let idleId: number;\n let rafId: number;\n\n // eslint-disable-next-line no-restricted-globals\n const { requestIdleCallback, requestAnimationFrame, cancelAnimationFrame, cancelIdleCallback } = window;\n\n const idleSupported = typeof requestIdleCallback === 'function';\n const rIdle = idleSupported ? requestIdleCallback : requestAnimationFrame;\n const cIdle = idleSupported ? cancelIdleCallback : cancelAnimationFrame;\n const clear = () => {\n cIdle(idleId);\n cancelAnimationFrame(rafId);\n };\n\n return [\n (callback, options) => {\n clear();\n idleId = rIdle(\n idleSupported\n ? () => {\n clear();\n // inside idle its best practice to use rAF to change DOM for best performance\n rafId = requestAnimationFrame(callback);\n }\n : callback,\n typeof options === 'object' ? options : { timeout: 2233 }\n );\n },\n clear\n\n ];\n};\n\n/**\n * A directive for adding `overlayscrollbars` to an element.\n */\n@Directive({\n standalone: true,\n selector: '[kbqScrollbar]',\n hostDirectives: [CdkScrollable]\n})\nexport class KbqScrollbarDirective implements OnDestroy {\n private requestDefer: ReturnType<typeof createDefer>[0];\n private cancelDefer: ReturnType<typeof createDefer>[1];\n\n private _options: KbqScrollbarOptions;\n\n @Input()\n set options(value: KbqScrollbarOptions) {\n this._options = value;\n\n if (OverlayScrollbars.valid(this.scrollbarInstance)) {\n this.scrollbarInstance.options(value || {}, true);\n }\n }\n\n /** Scrollbar behavior customization object */\n get options(): KbqScrollbarOptions | undefined {\n return this._options;\n }\n\n private _events?: KbqScrollbarEvents;\n\n @Input()\n set events(value: KbqScrollbarEvents) {\n this._events = value;\n\n if (OverlayScrollbars.valid(this.scrollbarInstance)) {\n this.scrollbarInstance.on(value || {}, true);\n }\n }\n\n get events(): KbqScrollbarEvents | undefined {\n return this._events;\n }\n\n /** Whether to defer the initialization to a point in time when the browser is idle. (or to the next frame if `window.requestIdleCallback` is not supported) */\n @Input()\n defer?: boolean | IdleRequestOptions;\n\n scrollbarInstance?: OverlayScrollbars;\n\n constructor(\n private ngZone: NgZone,\n @Inject(KBQ_SCROLLBAR_CONFIG) private scrollbarConfig?: KbqScrollbarOptions\n ) {\n const [requestDefer, cancelDefer] = createDefer();\n\n this.requestDefer = requestDefer;\n this.cancelDefer = cancelDefer;\n }\n\n initialize(target: KbqScrollbarTarget) {\n this.ngZone.runOutsideAngular(() => {\n const init = () => {\n this.scrollbarInstance = OverlayScrollbars(\n target,\n this.options || this.scrollbarConfig || {},\n this.events || {}\n );\n };\n\n if (this.defer) {\n this.requestDefer(init, this.defer);\n } else {\n init();\n }\n });\n }\n\n ngOnDestroy() {\n this.cancelDefer();\n }\n}\n","import {\n afterNextRender,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqScrollbarDirective } from './scrollbar.directive';\nimport {\n KbqScrollbarEventListenerArgs,\n KbqScrollbarEvents,\n KbqScrollbarOptions,\n KbqScrollbarTarget\n} from './scrollbar.types';\n\nconst filterEvents = (emits: KbqScrollbarEvents, events: KbqScrollbarEvents) =>\n (Object.keys(emits) as (keyof KbqScrollbarEvents)[]).reduce<KbqScrollbarEvents>(\n <N extends keyof KbqScrollbarEvents>(obj: KbqScrollbarEvents, name: N) => {\n const emitListener = emits[name];\n const eventListener = events[name];\n\n // merge & check listeners\n obj[name] = [\n emitListener,\n ...(Array.isArray(eventListener) ? eventListener : [eventListener]).filter(Boolean)];\n\n return obj;\n },\n {}\n );\n\n/**\n * The component-wrapper for `overlayscrollbars` library.\n */\n@Component({\n standalone: true,\n imports: [KbqScrollbarDirective],\n selector: 'kbq-scrollbar, [kbq-scrollbar]',\n exportAs: 'kbqScrollbar',\n host: {\n 'data-overlayscrollbars-initialize': '',\n class: 'kbq-scrollbar-component'\n },\n template: `\n <div\n #content\n data-overlayscrollbars-contents=\"\"\n kbqScrollbar\n [options]=\"options\"\n [events]=\"mergeEvents()\"\n [defer]=\"defer\"\n >\n <ng-content />\n </div>\n `,\n styleUrls: ['./scrollbar.component.scss', 'scrollbar-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqScrollbar implements AfterViewInit, OnDestroy {\n /** Element that is being overflowed */\n @ViewChild('content') contentElement: ElementRef<HTMLDivElement>;\n @ViewChild('content', { read: KbqScrollbarDirective }) private kbqScrollbarDirective?: KbqScrollbarDirective;\n\n /** Elements scrollbar applied on */\n @Input() initializationTarget?: KbqScrollbarTarget;\n /** Scrollbar behavior customization object */\n @Input() options: KbqScrollbarOptions;\n @Input() events: KbqScrollbarEvents;\n /** Whether to defer the initialization to a point in time when the browser is idle. (or to the next frame if `window.requestIdleCallback` is not supported) */\n @Input() defer?: boolean | IdleRequestOptions;\n\n @Output() readonly onInitialize = new EventEmitter<KbqScrollbarEventListenerArgs['initialized']>();\n /** Event triggered when options or event listeners updated */\n @Output() readonly onUpdate = new EventEmitter<KbqScrollbarEventListenerArgs['updated']>();\n /** Event triggered when scrollbar instance destroyed */\n @Output() readonly onDestroy = new EventEmitter<KbqScrollbarEventListenerArgs['destroyed']>();\n @Output() readonly onScroll = new EventEmitter<KbqScrollbarEventListenerArgs['scroll']>();\n\n get element(): HTMLElement {\n return this.targetElement.nativeElement;\n }\n\n private readonly injector = inject(Injector);\n\n constructor(\n private ngZone: NgZone,\n private targetElement: ElementRef<HTMLElement>\n ) {}\n\n ngAfterViewInit() {\n afterNextRender(\n () => {\n if (this.element && this.contentElement.nativeElement) {\n this.kbqScrollbarDirective?.initialize(\n this.initializationTarget || {\n target: this.targetElement.nativeElement,\n elements: {\n viewport: this.contentElement.nativeElement,\n content: this.contentElement.nativeElement\n }\n }\n );\n }\n },\n { injector: this.injector }\n );\n }\n\n ngOnDestroy() {\n this.kbqScrollbarDirective?.scrollbarInstance?.destroy();\n }\n\n /** Wrapper function for native scroll */\n scrollTo(options?: ScrollToOptions): void {\n this.contentElement.nativeElement.scroll(options);\n }\n\n mergeEvents(): KbqScrollbarEvents {\n const defaultListeners: KbqScrollbarEvents = {\n initialized: (...args) => this.dispatchEventIfHasObservers(this.onInitialize, args),\n updated: (...args) => this.dispatchEventIfHasObservers(this.onUpdate, args),\n destroyed: (...args) => this.dispatchEventIfHasObservers(this.onDestroy, args),\n scroll: (...args) => this.dispatchEventIfHasObservers(this.onScroll, args)\n };\n\n if (!this.events) {\n return defaultListeners;\n }\n\n // merge default listeners with custom listeners in case of Input binding\n return {\n ...defaultListeners,\n ...filterEvents(this.events, defaultListeners)\n };\n }\n\n private dispatchEventIfHasObservers<T>(eventEmitter: EventEmitter<T>, args: T): void {\n // `observed` is available since RxJS@7.2 because `observers` is being deprecated.\n if ((eventEmitter as any).observed || eventEmitter.observers.length > 0) {\n // This is required to re-enter the Angular zone to call the event handler in the Angular\n // zone too. This will not re-enter the Angular zone if emitter doesn't have any observers,\n // for instance, it's being listened: `<overlay-scrollbars (osInitialized)=\"...\"`.\n // Events are dispatched outside of the Angular zone because instance is created in the\n // `<root>` zone\n this.ngZone.run(() => eventEmitter.emit(args));\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqScrollbar } from './scrollbar.component';\nimport { KbqScrollbarDirective } from './scrollbar.directive';\nimport { KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER } from './scrollbar.types';\n\nconst COMPONENTS = [\n KbqScrollbar,\n KbqScrollbarDirective\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS,\n providers: [KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER]\n})\nexport class KbqScrollbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -3,18 +3,18 @@ import { AsyncPipe } from '@angular/common';
|
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { InjectionToken, inject, DestroyRef, ChangeDetectorRef, ElementRef, EventEmitter, booleanAttribute, numberAttribute, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChildren, ViewChild, Input, Output, NgModule } from '@angular/core';
|
|
5
5
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
|
-
import * as
|
|
6
|
+
import * as i5 from '@angular/forms';
|
|
7
7
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
8
8
|
import * as i1 from '@koobiq/components/button';
|
|
9
9
|
import { KbqButton, KbqButtonModule } from '@koobiq/components/button';
|
|
10
10
|
import { ruRULocaleData, KBQ_LOCALE_SERVICE } from '@koobiq/components/core';
|
|
11
|
-
import * as
|
|
11
|
+
import * as i4 from '@koobiq/components/form-field';
|
|
12
12
|
import { KbqFormFieldModule } from '@koobiq/components/form-field';
|
|
13
13
|
import * as i2 from '@koobiq/components/icon';
|
|
14
14
|
import { KbqIconModule } from '@koobiq/components/icon';
|
|
15
15
|
import * as i3 from '@koobiq/components/input';
|
|
16
16
|
import { KbqInput, KbqInputModule } from '@koobiq/components/input';
|
|
17
|
-
import * as
|
|
17
|
+
import * as i6 from '@koobiq/components/tooltip';
|
|
18
18
|
import { KbqTooltipTrigger, KbqToolTipModule } from '@koobiq/components/tooltip';
|
|
19
19
|
import { BehaviorSubject, distinctUntilChanged, filter, debounceTime } from 'rxjs';
|
|
20
20
|
import { map } from 'rxjs/operators';
|
|
@@ -131,7 +131,7 @@ class KbqSearchExpandable {
|
|
|
131
131
|
useExisting: KbqSearchExpandable,
|
|
132
132
|
multi: true
|
|
133
133
|
}
|
|
134
|
-
], viewQueries: [{ propertyName: "tooltip", first: true, predicate: KbqTooltipTrigger, descendants: true }, { propertyName: "input", predicate: KbqInput, descendants: true }, { propertyName: "button", predicate: KbqButton, descendants: true }], ngImport: i0, template: "@if (!isOpened) {\n <button\n type=\"button\"\n kbq-button\n class=\"kbq-search-expandable__button\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n kbqTooltip=\"{{ localeData.tooltip }}\"\n (click)=\"toggle()\"\n >\n <i kbq-icon=\"kbq-magnifying-glass_16\"></i>\n </button>\n} @else {\n <kbq-form-field class=\"kbq-search-expandable__search\">\n <i kbqPrefix kbq-icon=\"kbq-magnifying-glass_16\"></i>\n\n <input\n kbqInput\n name=\"value\"\n type=\"text\"\n autocomplete=\"off\"\n [placeholder]=\"placeholder\"\n [ngModel]=\"value | async\"\n (ngModelChange)=\"value.next($event)\"\n (blur)=\"onTouch()\"\n (keyup.escape)=\"toggle()\"\n />\n\n <i kbqSuffix kbq-icon-button=\"kbq-xmark-circle_16\" (click)=\"toggle()\" (keyup.enter)=\"toggle()\"></i>\n </kbq-form-field>\n}\n", styles: [".kbq-search-expandable{display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;min-width:0;min-height:0}.kbq-search-expandable__search .kbq-icon-button.kbq-suffix{display:flex;align-items:center;justify-content:center;border-radius:var(--kbq-size-xxs);height:var(--kbq-size-xxl)}\n"], dependencies: [{ kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "component", type: i2.KbqIconButton, selector: "[kbq-icon-button]", inputs: ["small", "kbq-icon-button", "tabindex", "disabled"] }, { kind: "ngmodule", type: KbqInputModule }, { kind: "directive", type: i3.KbqInput, selector: "input[kbqInput],input[kbqNumberInput]", inputs: ["errorStateMatcher", "placeholder", "disabled", "id", "required", "type", "value"], exportAs: ["kbqInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type:
|
|
134
|
+
], viewQueries: [{ propertyName: "tooltip", first: true, predicate: KbqTooltipTrigger, descendants: true }, { propertyName: "input", predicate: KbqInput, descendants: true }, { propertyName: "button", predicate: KbqButton, descendants: true }], ngImport: i0, template: "@if (!isOpened) {\n <button\n type=\"button\"\n kbq-button\n class=\"kbq-search-expandable__button\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n kbqTooltip=\"{{ localeData.tooltip }}\"\n (click)=\"toggle()\"\n >\n <i kbq-icon=\"kbq-magnifying-glass_16\"></i>\n </button>\n} @else {\n <kbq-form-field class=\"kbq-search-expandable__search\">\n <i kbqPrefix kbq-icon=\"kbq-magnifying-glass_16\"></i>\n\n <input\n kbqInput\n name=\"value\"\n type=\"text\"\n autocomplete=\"off\"\n [placeholder]=\"placeholder\"\n [ngModel]=\"value | async\"\n (ngModelChange)=\"value.next($event)\"\n (blur)=\"onTouch()\"\n (keyup.escape)=\"toggle()\"\n />\n\n <i kbqSuffix kbq-icon-button=\"kbq-xmark-circle_16\" (click)=\"toggle()\" (keyup.enter)=\"toggle()\"></i>\n </kbq-form-field>\n}\n", styles: [".kbq-search-expandable{display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;min-width:0;min-height:0}.kbq-search-expandable__search .kbq-icon-button.kbq-suffix{display:flex;align-items:center;justify-content:center;border-radius:var(--kbq-size-xxs);height:var(--kbq-size-xxl)}\n"], dependencies: [{ kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "component", type: i2.KbqIconButton, selector: "[kbq-icon-button]", inputs: ["small", "kbq-icon-button", "tabindex", "disabled"] }, { kind: "ngmodule", type: KbqInputModule }, { kind: "directive", type: i3.KbqInput, selector: "input[kbqInput],input[kbqNumberInput]", inputs: ["errorStateMatcher", "placeholder", "disabled", "id", "required", "type", "value"], exportAs: ["kbqInput"] }, { kind: "component", type: i4.KbqFormField, selector: "kbq-form-field", inputs: ["noBorders"], exportAs: ["kbqFormField"] }, { kind: "directive", type: i4.KbqPrefix, selector: "[kbqPrefix]", exportAs: ["kbqPrefix"] }, { kind: "directive", type: i4.KbqSuffix, selector: "[kbqSuffix]" }, { kind: "directive", type: i4.KbqValidateDirective, selector: " input[kbqInput], input[kbqNumberInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", exportAs: ["KbqValidate"] }, { kind: "directive", type: i4.KbqTrim, selector: "[kbqInput], [kbqTextarea]", exportAs: ["KbqTrim"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: KbqToolTipModule }, { kind: "directive", type: i6.KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["hideWithTimeout", "kbqVisible", "kbqPlacement", "kbqRelativeToPointer", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }, { kind: "ngmodule", type: KbqFormFieldModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
135
135
|
}
|
|
136
136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqSearchExpandable, decorators: [{
|
|
137
137
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-search-expandable.mjs","sources":["../../../packages/components/search-expandable/search-expandable.ts","../../../packages/components/search-expandable/search-expandable.html","../../../packages/components/search-expandable/search-expandable.module.ts","../../../packages/components/search-expandable/koobiq-components-search-expandable.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n numberAttribute,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KbqButton, KbqButtonModule } from '@koobiq/components/button';\nimport { KBQ_LOCALE_SERVICE, ruRULocaleData } from '@koobiq/components/core';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInput, KbqInputModule } from '@koobiq/components/input';\nimport { KbqToolTipModule, KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { BehaviorSubject, debounceTime, distinctUntilChanged, filter } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/** default configuration of search-expandable */\nexport const KBQ_SEARCH_EXPANDABLE_DEFAULT_CONFIGURATION = ruRULocaleData.searchExpandable;\n\n/** Injection Token for providing configuration of search-expandable */\nexport const KBQ_SEARCH_EXPANDABLE_CONFIGURATION = new InjectionToken('KbqSearchExpandableConfiguration');\n\nexport const defaultValue = '';\nexport const defaultEmitValueTimeout = 200;\n\n@Component({\n standalone: true,\n selector: 'kbq-search-expandable',\n templateUrl: './search-expandable.html',\n styleUrls: ['./search-expandable.scss'],\n host: {\n class: 'kbq-search-expandable',\n '[class.kbq-search-expandable_opened]': 'isOpened'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n KbqButtonModule,\n KbqIconModule,\n KbqInputModule,\n FormsModule,\n AsyncPipe,\n KbqToolTipModule,\n KbqFormFieldModule\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: KbqSearchExpandable,\n multi: true\n }\n ]\n})\nexport class KbqSearchExpandable implements ControlValueAccessor, AfterViewInit {\n /** @docs-private */\n protected readonly focusMonitor = inject(FocusMonitor);\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly nativeElement: HTMLElement = inject(ElementRef).nativeElement;\n\n readonly externalConfiguration = inject(KBQ_SEARCH_EXPANDABLE_CONFIGURATION, { optional: true });\n\n @ViewChildren(KbqInput) private input: QueryList<KbqInput>;\n @ViewChildren(KbqButton) private button: QueryList<KbqButton>;\n @ViewChild(KbqTooltipTrigger) private tooltip: KbqTooltipTrigger;\n\n configuration;\n\n /** Current value in input. */\n value = new BehaviorSubject(defaultValue);\n\n protected lastFocusOrigin: 'touch' | 'mouse' | 'keyboard' | 'program' | null;\n\n /** state of component. */\n @Input({ transform: booleanAttribute }) isOpened = false;\n /** Emit event by enter or not. Default is false */\n @Input() isEmitValueByEnterEnabled = false;\n /** Timeout in milliseconds for emit event. The default value is taken from defaultEmitValueTimeout */\n @Input({ transform: numberAttribute }) emitValueTimeout = defaultEmitValueTimeout;\n\n /** Placeholder for input when expanded */\n @Input()\n get placeholder(): string {\n return this._placeholder ?? this.localeData?.placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n }\n\n private _placeholder = this.localeData?.placeholder;\n\n /** Event emitted when the search has been toggled. */\n @Output() readonly isOpenedChange = new EventEmitter<boolean>();\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.configuration;\n }\n\n private lastEmittedValue = defaultValue;\n\n constructor() {\n this.focusMonitor\n .monitor(this.nativeElement, true)\n .pipe(takeUntilDestroyed())\n .subscribe((origin) => (this.lastFocusOrigin = origin));\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n this.value\n .pipe(\n distinctUntilChanged(),\n filter(() => !this.isEmitValueByEnterEnabled),\n debounceTime(this.emitValueTimeout),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(this.emitValue);\n }\n\n ngAfterViewInit(): void {\n this.button.changes\n .pipe(\n filter((queryList) => queryList.length),\n map((queryList) => queryList.first),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((button: KbqButton) => {\n this.tooltip.disabled = true;\n\n this.focusMonitor.focusVia(button.elementRef.nativeElement, this.lastFocusOrigin);\n\n this.tooltip.disabled = false;\n });\n\n this.input.changes\n .pipe(\n filter((queryList) => queryList.length),\n map((queryList) => queryList.first),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((input: KbqInput) => input.focus());\n }\n\n /** @docs-private */\n onChange: (value: string) => void;\n\n /** @docs-private */\n onTouch: () => void = () => {};\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n writeValue(value: string): void {\n this.value.next(value || defaultValue);\n }\n\n toggle(): void {\n this.isOpened = !this.isOpened;\n\n if (!this.isOpened) {\n this.value.next(defaultValue);\n\n if (this.isEmitValueByEnterEnabled) {\n this.emitValue(defaultValue, true);\n }\n }\n\n this.tooltip?.hide();\n\n this.isOpenedChange.emit(this.isOpened);\n }\n\n private updateLocaleParams = () => {\n this.configuration = this.externalConfiguration || this.localeService?.getParams('searchExpandable');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.configuration = KBQ_SEARCH_EXPANDABLE_DEFAULT_CONFIGURATION;\n }\n\n private emitValue = (value: string, forced = false): void => {\n if (value !== this.lastEmittedValue || forced) {\n this.onChange(value);\n this.lastEmittedValue = value;\n }\n };\n}\n","@if (!isOpened) {\n <button\n type=\"button\"\n kbq-button\n class=\"kbq-search-expandable__button\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n kbqTooltip=\"{{ localeData.tooltip }}\"\n (click)=\"toggle()\"\n >\n <i kbq-icon=\"kbq-magnifying-glass_16\"></i>\n </button>\n} @else {\n <kbq-form-field class=\"kbq-search-expandable__search\">\n <i kbqPrefix kbq-icon=\"kbq-magnifying-glass_16\"></i>\n\n <input\n kbqInput\n name=\"value\"\n type=\"text\"\n autocomplete=\"off\"\n [placeholder]=\"placeholder\"\n [ngModel]=\"value | async\"\n (ngModelChange)=\"value.next($event)\"\n (blur)=\"onTouch()\"\n (keyup.escape)=\"toggle()\"\n />\n\n <i kbqSuffix kbq-icon-button=\"kbq-xmark-circle_16\" (click)=\"toggle()\" (keyup.enter)=\"toggle()\"></i>\n </kbq-form-field>\n}\n","import { NgModule } from '@angular/core';\nimport { KbqSearchExpandable } from './search-expandable';\n\n@NgModule({\n imports: [\n KbqSearchExpandable\n ],\n exports: [KbqSearchExpandable]\n})\nexport class KbqSearchExpandableModule {}\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-search-expandable.mjs","sources":["../../../packages/components/search-expandable/search-expandable.ts","../../../packages/components/search-expandable/search-expandable.html","../../../packages/components/search-expandable/search-expandable.module.ts","../../../packages/components/search-expandable/koobiq-components-search-expandable.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n numberAttribute,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KbqButton, KbqButtonModule } from '@koobiq/components/button';\nimport { KBQ_LOCALE_SERVICE, ruRULocaleData } from '@koobiq/components/core';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInput, KbqInputModule } from '@koobiq/components/input';\nimport { KbqToolTipModule, KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { BehaviorSubject, debounceTime, distinctUntilChanged, filter } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/** default configuration of search-expandable */\nexport const KBQ_SEARCH_EXPANDABLE_DEFAULT_CONFIGURATION = ruRULocaleData.searchExpandable;\n\n/** Injection Token for providing configuration of search-expandable */\nexport const KBQ_SEARCH_EXPANDABLE_CONFIGURATION = new InjectionToken('KbqSearchExpandableConfiguration');\n\nexport const defaultValue = '';\nexport const defaultEmitValueTimeout = 200;\n\n@Component({\n standalone: true,\n selector: 'kbq-search-expandable',\n templateUrl: './search-expandable.html',\n styleUrls: ['./search-expandable.scss'],\n host: {\n class: 'kbq-search-expandable',\n '[class.kbq-search-expandable_opened]': 'isOpened'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n KbqButtonModule,\n KbqIconModule,\n KbqInputModule,\n FormsModule,\n AsyncPipe,\n KbqToolTipModule,\n KbqFormFieldModule\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: KbqSearchExpandable,\n multi: true\n }\n ]\n})\nexport class KbqSearchExpandable implements ControlValueAccessor, AfterViewInit {\n /** @docs-private */\n protected readonly focusMonitor = inject(FocusMonitor);\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly nativeElement: HTMLElement = inject(ElementRef).nativeElement;\n\n readonly externalConfiguration = inject(KBQ_SEARCH_EXPANDABLE_CONFIGURATION, { optional: true });\n\n @ViewChildren(KbqInput) private input: QueryList<KbqInput>;\n @ViewChildren(KbqButton) private button: QueryList<KbqButton>;\n @ViewChild(KbqTooltipTrigger) private tooltip: KbqTooltipTrigger;\n\n configuration;\n\n /** Current value in input. */\n value = new BehaviorSubject(defaultValue);\n\n protected lastFocusOrigin: 'touch' | 'mouse' | 'keyboard' | 'program' | null;\n\n /** state of component. */\n @Input({ transform: booleanAttribute }) isOpened = false;\n /** Emit event by enter or not. Default is false */\n @Input() isEmitValueByEnterEnabled = false;\n /** Timeout in milliseconds for emit event. The default value is taken from defaultEmitValueTimeout */\n @Input({ transform: numberAttribute }) emitValueTimeout = defaultEmitValueTimeout;\n\n /** Placeholder for input when expanded */\n @Input()\n get placeholder(): string {\n return this._placeholder ?? this.localeData?.placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n }\n\n private _placeholder = this.localeData?.placeholder;\n\n /** Event emitted when the search has been toggled. */\n @Output() readonly isOpenedChange = new EventEmitter<boolean>();\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.configuration;\n }\n\n private lastEmittedValue = defaultValue;\n\n constructor() {\n this.focusMonitor\n .monitor(this.nativeElement, true)\n .pipe(takeUntilDestroyed())\n .subscribe((origin) => (this.lastFocusOrigin = origin));\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n this.value\n .pipe(\n distinctUntilChanged(),\n filter(() => !this.isEmitValueByEnterEnabled),\n debounceTime(this.emitValueTimeout),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(this.emitValue);\n }\n\n ngAfterViewInit(): void {\n this.button.changes\n .pipe(\n filter((queryList) => queryList.length),\n map((queryList) => queryList.first),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((button: KbqButton) => {\n this.tooltip.disabled = true;\n\n this.focusMonitor.focusVia(button.elementRef.nativeElement, this.lastFocusOrigin);\n\n this.tooltip.disabled = false;\n });\n\n this.input.changes\n .pipe(\n filter((queryList) => queryList.length),\n map((queryList) => queryList.first),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((input: KbqInput) => input.focus());\n }\n\n /** @docs-private */\n onChange: (value: string) => void;\n\n /** @docs-private */\n onTouch: () => void = () => {};\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n writeValue(value: string): void {\n this.value.next(value || defaultValue);\n }\n\n toggle(): void {\n this.isOpened = !this.isOpened;\n\n if (!this.isOpened) {\n this.value.next(defaultValue);\n\n if (this.isEmitValueByEnterEnabled) {\n this.emitValue(defaultValue, true);\n }\n }\n\n this.tooltip?.hide();\n\n this.isOpenedChange.emit(this.isOpened);\n }\n\n private updateLocaleParams = () => {\n this.configuration = this.externalConfiguration || this.localeService?.getParams('searchExpandable');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.configuration = KBQ_SEARCH_EXPANDABLE_DEFAULT_CONFIGURATION;\n }\n\n private emitValue = (value: string, forced = false): void => {\n if (value !== this.lastEmittedValue || forced) {\n this.onChange(value);\n this.lastEmittedValue = value;\n }\n };\n}\n","@if (!isOpened) {\n <button\n type=\"button\"\n kbq-button\n class=\"kbq-search-expandable__button\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n kbqTooltip=\"{{ localeData.tooltip }}\"\n (click)=\"toggle()\"\n >\n <i kbq-icon=\"kbq-magnifying-glass_16\"></i>\n </button>\n} @else {\n <kbq-form-field class=\"kbq-search-expandable__search\">\n <i kbqPrefix kbq-icon=\"kbq-magnifying-glass_16\"></i>\n\n <input\n kbqInput\n name=\"value\"\n type=\"text\"\n autocomplete=\"off\"\n [placeholder]=\"placeholder\"\n [ngModel]=\"value | async\"\n (ngModelChange)=\"value.next($event)\"\n (blur)=\"onTouch()\"\n (keyup.escape)=\"toggle()\"\n />\n\n <i kbqSuffix kbq-icon-button=\"kbq-xmark-circle_16\" (click)=\"toggle()\" (keyup.enter)=\"toggle()\"></i>\n </kbq-form-field>\n}\n","import { NgModule } from '@angular/core';\nimport { KbqSearchExpandable } from './search-expandable';\n\n@NgModule({\n imports: [\n KbqSearchExpandable\n ],\n exports: [KbqSearchExpandable]\n})\nexport class KbqSearchExpandableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ import * as i4 from '@angular/forms';
|
|
|
17
17
|
import { ActiveDescendantKeyManager } from '@koobiq/cdk/a11y';
|
|
18
18
|
import { DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, ENTER, SPACE, ESCAPE, TAB, HOME, END, PAGE_UP, PAGE_DOWN, A, BACKSPACE, DELETE } from '@koobiq/cdk/keycodes';
|
|
19
19
|
import * as i5 from '@koobiq/components/form-field';
|
|
20
|
-
import { KbqFormFieldControl } from '@koobiq/components/form-field';
|
|
20
|
+
import { KbqFormFieldControl, KbqFormFieldModule } from '@koobiq/components/form-field';
|
|
21
21
|
import * as i7 from '@koobiq/components/tags';
|
|
22
22
|
import { KbqTag, KbqTagsModule } from '@koobiq/components/tags';
|
|
23
23
|
import { SizeXxs } from '@koobiq/design-tokens';
|
|
@@ -888,6 +888,7 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
888
888
|
catch (error) {
|
|
889
889
|
if (isDevMode()) {
|
|
890
890
|
// Notify developers of errors in their comparator.
|
|
891
|
+
// eslint-disable-next-line no-console
|
|
891
892
|
console.warn(error);
|
|
892
893
|
}
|
|
893
894
|
return false;
|
|
@@ -969,19 +970,6 @@ class KbqSelect extends KbqAbstractSelect {
|
|
|
969
970
|
}
|
|
970
971
|
if (this.multiSelection) {
|
|
971
972
|
this.sortValues();
|
|
972
|
-
if (isUserInput) {
|
|
973
|
-
// In case the user selected the option with their mouse, we
|
|
974
|
-
// want to restore focus back to the trigger, in order to
|
|
975
|
-
// prevent the select keyboard controls from clashing with
|
|
976
|
-
// the ones from `kbq-option`.
|
|
977
|
-
// If search is available then we focus search again.
|
|
978
|
-
if (this.search) {
|
|
979
|
-
this.search.focus();
|
|
980
|
-
}
|
|
981
|
-
else {
|
|
982
|
-
this.focus();
|
|
983
|
-
}
|
|
984
|
-
}
|
|
985
973
|
}
|
|
986
974
|
}
|
|
987
975
|
if (wasSelected !== this.selectionModel.isSelected(option)) {
|
|
@@ -1253,13 +1241,15 @@ class KbqSelectModule {
|
|
|
1253
1241
|
KbqSelectFooter,
|
|
1254
1242
|
KbqSelectMatcher,
|
|
1255
1243
|
KbqSelectTrigger,
|
|
1256
|
-
KbqSelectSearchEmptyResult
|
|
1244
|
+
KbqSelectSearchEmptyResult,
|
|
1245
|
+
KbqFormFieldModule] }); }
|
|
1257
1246
|
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqSelectModule, providers: [KBQ_SELECT_SCROLL_STRATEGY_PROVIDER], imports: [OverlayModule,
|
|
1258
1247
|
KbqOptionModule,
|
|
1259
1248
|
KbqIconModule,
|
|
1260
1249
|
KbqTagsModule,
|
|
1261
1250
|
KbqToolTipModule,
|
|
1262
|
-
A11yModule, KbqOptionModule
|
|
1251
|
+
A11yModule, KbqOptionModule,
|
|
1252
|
+
KbqFormFieldModule] }); }
|
|
1263
1253
|
}
|
|
1264
1254
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqSelectModule, decorators: [{
|
|
1265
1255
|
type: NgModule,
|
|
@@ -1287,7 +1277,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
1287
1277
|
KbqSelectFooter,
|
|
1288
1278
|
KbqSelectMatcher,
|
|
1289
1279
|
KbqSelectTrigger,
|
|
1290
|
-
KbqSelectSearchEmptyResult
|
|
1280
|
+
KbqSelectSearchEmptyResult,
|
|
1281
|
+
KbqFormFieldModule
|
|
1291
1282
|
],
|
|
1292
1283
|
declarations: [
|
|
1293
1284
|
KbqSelect,
|