@koobiq/components 18.18.0 → 18.19.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 (207) hide show
  1. package/actions-panel/actions-panel-config.d.ts +79 -0
  2. package/actions-panel/actions-panel-container.d.ts +90 -0
  3. package/actions-panel/actions-panel-container.scss +33 -0
  4. package/actions-panel/actions-panel-ref.d.ts +31 -0
  5. package/actions-panel/actions-panel-tokens.scss +13 -0
  6. package/actions-panel/actions-panel.d.ts +144 -0
  7. package/actions-panel/index.d.ts +5 -0
  8. package/actions-panel/module.d.ts +7 -0
  9. package/core/animation/animation.d.ts +26 -0
  10. package/core/form-field/form-field-ref.d.ts +4 -0
  11. package/core/locales/en-US.d.ts +45 -0
  12. package/core/locales/es-LA.d.ts +45 -0
  13. package/core/locales/fa-IR.d.ts +45 -0
  14. package/core/locales/locale-service.d.ts +315 -0
  15. package/core/locales/pt-BR.d.ts +45 -0
  16. package/core/locales/ru-RU.d.ts +45 -0
  17. package/core/locales/tk-TM.d.ts +45 -0
  18. package/core/locales/types.d.ts +6 -0
  19. package/core/locales/zh-CN.d.ts +45 -0
  20. package/core/option/option.d.ts +3 -1
  21. package/datepicker/calendar.component.d.ts +9 -0
  22. package/datepicker/datepicker-input.directive.d.ts +5 -1
  23. package/dl/dl.component.d.ts +3 -4
  24. package/dropdown/_dropdown-theme.scss +9 -10
  25. package/dropdown/dropdown-tokens.scss +1 -0
  26. package/dropdown/dropdown.component.d.ts +1 -1
  27. package/dropdown/dropdown.scss +5 -0
  28. package/dropdown/dropdown.types.d.ts +3 -1
  29. package/esm2022/accordion/accordion-trigger.component.mjs +1 -1
  30. package/esm2022/actions-panel/actions-panel-config.mjs +55 -0
  31. package/esm2022/actions-panel/actions-panel-container.mjs +217 -0
  32. package/esm2022/actions-panel/actions-panel-ref.mjs +62 -0
  33. package/esm2022/actions-panel/actions-panel.mjs +220 -0
  34. package/esm2022/actions-panel/index.mjs +6 -0
  35. package/esm2022/actions-panel/koobiq-components-actions-panel.mjs +5 -0
  36. package/esm2022/actions-panel/module.mjs +21 -0
  37. package/esm2022/breadcrumbs/breadcrumbs.mjs +2 -2
  38. package/esm2022/code-block/code-block.mjs +1 -1
  39. package/esm2022/core/animation/animation.mjs +29 -1
  40. package/esm2022/core/common-behaviors/common-module.mjs +2 -2
  41. package/esm2022/core/form-field/form-field-ref.mjs +1 -1
  42. package/esm2022/core/locales/en-US.mjs +46 -1
  43. package/esm2022/core/locales/es-LA.mjs +46 -1
  44. package/esm2022/core/locales/fa-IR.mjs +46 -1
  45. package/esm2022/core/locales/pt-BR.mjs +46 -1
  46. package/esm2022/core/locales/ru-RU.mjs +46 -1
  47. package/esm2022/core/locales/tk-TM.mjs +46 -1
  48. package/esm2022/core/locales/types.mjs +1 -1
  49. package/esm2022/core/locales/zh-CN.mjs +46 -1
  50. package/esm2022/core/option/option.mjs +10 -3
  51. package/esm2022/core/version.mjs +2 -2
  52. package/esm2022/datepicker/calendar-header.component.mjs +1 -1
  53. package/esm2022/datepicker/calendar.component.mjs +20 -2
  54. package/esm2022/datepicker/datepicker-input.directive.mjs +22 -11
  55. package/esm2022/datepicker/datepicker-toggle.component.mjs +1 -1
  56. package/esm2022/dl/dl.component.mjs +8 -7
  57. package/esm2022/dropdown/dropdown-item.component.mjs +1 -1
  58. package/esm2022/dropdown/dropdown-trigger.directive.mjs +6 -1
  59. package/esm2022/dropdown/dropdown.component.mjs +4 -4
  60. package/esm2022/dropdown/dropdown.types.mjs +1 -1
  61. package/esm2022/file-upload/multiple-file-upload.component.mjs +1 -1
  62. package/esm2022/file-upload/single-file-upload.component.mjs +1 -1
  63. package/esm2022/filter-bar/filter-bar-button.mjs +30 -0
  64. package/esm2022/filter-bar/filter-bar.mjs +168 -0
  65. package/esm2022/filter-bar/filter-bar.module.mjs +65 -0
  66. package/esm2022/filter-bar/filter-bar.types.mjs +13 -0
  67. package/esm2022/filter-bar/filter-refresher.mjs +34 -0
  68. package/esm2022/filter-bar/filter-reset.mjs +38 -0
  69. package/esm2022/filter-bar/filter-search.mjs +132 -0
  70. package/esm2022/filter-bar/filters.mjs +225 -0
  71. package/esm2022/filter-bar/index.mjs +2 -0
  72. package/esm2022/filter-bar/koobiq-components-filter-bar.mjs +5 -0
  73. package/esm2022/filter-bar/pipe-add.mjs +129 -0
  74. package/esm2022/filter-bar/pipe.directive.mjs +55 -0
  75. package/esm2022/filter-bar/pipes/base-pipe.mjs +106 -0
  76. package/esm2022/filter-bar/pipes/pipe-button.mjs +59 -0
  77. package/esm2022/filter-bar/pipes/pipe-date.mjs +171 -0
  78. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +172 -0
  79. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +96 -0
  80. package/esm2022/filter-bar/pipes/pipe-select.mjs +88 -0
  81. package/esm2022/filter-bar/pipes/pipe-state.mjs +45 -0
  82. package/esm2022/filter-bar/pipes/pipe-text.mjs +89 -0
  83. package/esm2022/filter-bar/pipes/pipe-title.mjs +96 -0
  84. package/esm2022/filter-bar/public-api.mjs +20 -0
  85. package/esm2022/form-field/cleaner.mjs +1 -1
  86. package/esm2022/form-field/form-field.mjs +13 -6
  87. package/esm2022/form-field/password-hint.mjs +1 -1
  88. package/esm2022/form-field/password-toggle.mjs +1 -1
  89. package/esm2022/form-field/stepper.mjs +1 -1
  90. package/esm2022/icon/icon-button.component.mjs +9 -9
  91. package/esm2022/icon/icon-item.component.mjs +10 -10
  92. package/esm2022/icon/icon.component.mjs +9 -12
  93. package/esm2022/list/list-selection.component.mjs +4 -4
  94. package/esm2022/modal/modal.component.mjs +1 -1
  95. package/esm2022/modal/modal.directive.mjs +1 -1
  96. package/esm2022/navbar/navbar-item.component.mjs +2 -2
  97. package/esm2022/overflow-items/overflow-items.mjs +129 -139
  98. package/esm2022/popover/popover.component.mjs +30 -10
  99. package/esm2022/select/select.component.mjs +3 -3
  100. package/esm2022/sidepanel/sidepanel-directives.mjs +2 -2
  101. package/esm2022/tabs/tab-header.component.mjs +1 -1
  102. package/esm2022/tabs/tab-nav-bar.mjs +2 -2
  103. package/esm2022/textarea/textarea.component.mjs +9 -5
  104. package/esm2022/timezone/timezone-select.component.mjs +2 -2
  105. package/esm2022/title/title.directive.mjs +12 -5
  106. package/esm2022/toast/toast.component.mjs +2 -2
  107. package/esm2022/tree/toggle.mjs +1 -1
  108. package/esm2022/tree/tree-option.component.mjs +3 -2
  109. package/esm2022/tree/tree-selection.component.mjs +4 -2
  110. package/esm2022/tree-select/tree-select.component.mjs +6 -4
  111. package/fesm2022/koobiq-components-accordion.mjs +1 -1
  112. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  113. package/fesm2022/koobiq-components-actions-panel.mjs +567 -0
  114. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -0
  115. package/fesm2022/koobiq-components-breadcrumbs.mjs +1 -1
  116. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  117. package/fesm2022/koobiq-components-code-block.mjs +1 -1
  118. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  119. package/fesm2022/koobiq-components-core.mjs +355 -5
  120. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  121. package/fesm2022/koobiq-components-datepicker.mjs +40 -12
  122. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  123. package/fesm2022/koobiq-components-dl.mjs +7 -6
  124. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  125. package/fesm2022/koobiq-components-dropdown.mjs +9 -4
  126. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  127. package/fesm2022/koobiq-components-file-upload.mjs +2 -2
  128. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  129. package/fesm2022/koobiq-components-filter-bar.mjs +1596 -0
  130. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -0
  131. package/fesm2022/koobiq-components-form-field.mjs +16 -9
  132. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  133. package/fesm2022/koobiq-components-icon.mjs +23 -26
  134. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  135. package/fesm2022/koobiq-components-list.mjs +3 -3
  136. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  137. package/fesm2022/koobiq-components-modal.mjs +2 -2
  138. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  139. package/fesm2022/koobiq-components-navbar.mjs +2 -2
  140. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  141. package/fesm2022/koobiq-components-overflow-items.mjs +129 -139
  142. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  143. package/fesm2022/koobiq-components-popover.mjs +29 -9
  144. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  145. package/fesm2022/koobiq-components-select.mjs +2 -2
  146. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  147. package/fesm2022/koobiq-components-sidepanel.mjs +1 -1
  148. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  149. package/fesm2022/koobiq-components-tabs.mjs +2 -2
  150. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  151. package/fesm2022/koobiq-components-textarea.mjs +8 -4
  152. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  153. package/fesm2022/koobiq-components-timezone.mjs +2 -2
  154. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  155. package/fesm2022/koobiq-components-title.mjs +11 -4
  156. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  157. package/fesm2022/koobiq-components-toast.mjs +1 -1
  158. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  159. package/fesm2022/koobiq-components-tree-select.mjs +5 -3
  160. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  161. package/fesm2022/koobiq-components-tree.mjs +6 -3
  162. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  163. package/filter-bar/_filter-bar-theme.scss +61 -0
  164. package/filter-bar/filter-bar-button.d.ts +8 -0
  165. package/filter-bar/filter-bar.d.ts +55 -0
  166. package/filter-bar/filter-bar.module.d.ts +17 -0
  167. package/filter-bar/filter-bar.scss +60 -0
  168. package/filter-bar/filter-bar.types.d.ts +97 -0
  169. package/filter-bar/filter-refresher.d.ts +5 -0
  170. package/filter-bar/filter-refresher.scss +6 -0
  171. package/filter-bar/filter-reset.d.ts +11 -0
  172. package/filter-bar/filter-search.d.ts +25 -0
  173. package/filter-bar/filter-search.scss +14 -0
  174. package/filter-bar/filters.d.ts +72 -0
  175. package/filter-bar/filters.scss +92 -0
  176. package/filter-bar/index.d.ts +1 -0
  177. package/filter-bar/pipe-add.d.ts +18 -0
  178. package/filter-bar/pipe-add.scss +5 -0
  179. package/filter-bar/pipe.directive.d.ts +13 -0
  180. package/filter-bar/pipes/base-pipe.d.ts +40 -0
  181. package/filter-bar/pipes/base-pipe.scss +117 -0
  182. package/filter-bar/pipes/pipe-button.d.ts +13 -0
  183. package/filter-bar/pipes/pipe-button.scss +5 -0
  184. package/filter-bar/pipes/pipe-date.d.ts +41 -0
  185. package/filter-bar/pipes/pipe-date.scss +132 -0
  186. package/filter-bar/pipes/pipe-datetime.d.ts +41 -0
  187. package/filter-bar/pipes/pipe-multi-select.d.ts +22 -0
  188. package/filter-bar/pipes/pipe-multiselect.scss +15 -0
  189. package/filter-bar/pipes/pipe-select.d.ts +21 -0
  190. package/filter-bar/pipes/pipe-select.scss +3 -0
  191. package/filter-bar/pipes/pipe-state.d.ts +14 -0
  192. package/filter-bar/pipes/pipe-text.d.ts +19 -0
  193. package/filter-bar/pipes/pipe-title.d.ts +25 -0
  194. package/filter-bar/public-api.d.ts +19 -0
  195. package/form-field/form-field.d.ts +6 -1
  196. package/form-field/form-field.scss +1 -0
  197. package/icon/icon-button.component.d.ts +5 -3
  198. package/icon/icon-item.component.d.ts +5 -3
  199. package/icon/icon.component.d.ts +5 -4
  200. package/overflow-items/overflow-items.d.ts +59 -71
  201. package/package.json +18 -6
  202. package/popover/popover.component.d.ts +6 -1
  203. package/schematics/ng-add/index.js +5 -5
  204. package/select/_select-theme.scss +9 -1
  205. package/textarea/textarea.component.d.ts +2 -1
  206. package/title/title.directive.d.ts +2 -0
  207. package/tree-select/_tree-select-theme.scss +9 -1
@@ -0,0 +1,61 @@
1
+ @use '../core/styles/common/tokens' as *;
2
+
3
+ @mixin kbq-filter-bar-typography() {
4
+ .kbq-hint.kbq-date-period__hint .kbq-hint__text {
5
+ @include kbq-typography-level-to-styles-css-variables(typography, text-compact);
6
+ }
7
+ }
8
+
9
+ @mixin _icon($left-icon, $right-icon) {
10
+ .kbq-icon {
11
+ color: $left-icon;
12
+
13
+ &.kbq-icon_left {
14
+ color: $left-icon;
15
+ }
16
+
17
+ &.kbq-icon_right {
18
+ color: $right-icon;
19
+ }
20
+ }
21
+ }
22
+
23
+ @mixin kbq-button-changed-filter() {
24
+ .kbq-button-overlay {
25
+ display: none;
26
+ }
27
+
28
+ .kbq-button,
29
+ .kbq-button-icon {
30
+ -webkit-font-smoothing: antialiased;
31
+
32
+ &.kbq-button_changed-filter {
33
+ color: var(--kbq-foreground-theme);
34
+ background: var(--kbq-states-background-theme-less-active);
35
+
36
+ @include _icon(var(--kbq-icon-theme), var(--kbq-icon-theme));
37
+
38
+ &:hover:not(.kbq-disabled),
39
+ &.kbq-hover:not(.kbq-disabled) {
40
+ background: var(--kbq-states-background-theme-less-hover);
41
+ }
42
+
43
+ &:active:not(.kbq-disabled),
44
+ &.kbq-active:not(.kbq-disabled) {
45
+ background: var(--kbq-states-background-theme-fade-active);
46
+ }
47
+
48
+ &.cdk-keyboard-focused {
49
+ outline: 1px solid var(--kbq-states-line-focus-theme);
50
+ border-color: var(--kbq-states-line-focus-theme);
51
+ }
52
+
53
+ &.kbq-disabled {
54
+ color: var(--kbq-states-foreground-disable);
55
+ background: var(--kbq-states-background-disable);
56
+
57
+ @include _icon(var(--kbq-states-icon-disabled), var(--kbq-states-icon-disabled));
58
+ }
59
+ }
60
+ }
61
+ }
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class KbqFilterBarButton {
3
+ private readonly button;
4
+ private readonly filterBar;
5
+ constructor();
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilterBarButton, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqFilterBarButton, "[kbqFilterBarButton]", never, {}, {}, never, never, true, never>;
8
+ }
@@ -0,0 +1,55 @@
1
+ import { ChangeDetectorRef, EventEmitter } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { KbqFilter, KbqPipe, KbqPipeTemplate } from './filter-bar.types';
4
+ import { KbqFilterReset } from './filter-reset';
5
+ import { KbqFilters } from './filters';
6
+ import * as i0 from "@angular/core";
7
+ export declare class KbqFilterBar {
8
+ protected readonly changeDetectorRef: ChangeDetectorRef;
9
+ protected readonly localeService: import("@koobiq/components/core").KbqLocaleService | null;
10
+ readonly externalConfiguration: unknown;
11
+ configuration: any;
12
+ filters: KbqFilters;
13
+ filterReset: KbqFilterReset;
14
+ /** Filter that is currently selected */
15
+ get filter(): KbqFilter | null;
16
+ set filter(value: KbqFilter | null);
17
+ private _filter;
18
+ /** An array of templates that are used when adding a pipe. Also contains lists of options to select (values). */
19
+ set pipeTemplates(value: KbqPipeTemplate[]);
20
+ get pipeTemplates(): KbqPipeTemplate[];
21
+ private _templates;
22
+ /**
23
+ * Event that emits whenever the raw value of the filter changes. This is here primarily
24
+ * to facilitate the two-way binding for the `filter` input.
25
+ * @docs-private
26
+ */
27
+ readonly filterChange: EventEmitter<KbqFilter | null>;
28
+ /** Event that emits whenever the value of the pipe changes. */
29
+ readonly onChangePipe: EventEmitter<KbqPipe>;
30
+ /** Event that emits whenever the pipe deleted. */
31
+ readonly onRemovePipe: EventEmitter<KbqPipe>;
32
+ get isSavedAndChanged(): boolean;
33
+ get isSaved(): boolean;
34
+ get isChanged(): boolean;
35
+ get isReadOnly(): boolean;
36
+ get isDisabled(): boolean;
37
+ private savedFilter;
38
+ readonly changes: BehaviorSubject<void>;
39
+ readonly internalFilterChanges: BehaviorSubject<KbqFilter | null>;
40
+ readonly internalTemplatesChanges: BehaviorSubject<KbqPipeTemplate[] | null>;
41
+ readonly openPipe: BehaviorSubject<string | number | null>;
42
+ constructor();
43
+ /** Remove pipe from current filter and emit event */
44
+ removePipe(pipe: KbqPipe): void;
45
+ /** Save current state of filter */
46
+ saveFilterState(filter?: KbqFilter): void;
47
+ /** Restore previously saved filter state */
48
+ restoreFilterState(filter?: KbqFilter): void;
49
+ /** Set the filter state "changed" to false */
50
+ resetFilterChangedState(): void;
51
+ private updateLocaleParams;
52
+ private initDefaultParams;
53
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilterBar, never>;
54
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqFilterBar, "kbq-filter-bar, [kbq-filter-bar]", never, { "filter": { "alias": "filter"; "required": false; }; "pipeTemplates": { "alias": "pipeTemplates"; "required": false; }; }, { "filterChange": "filterChange"; "onChangePipe": "onChangePipe"; "onRemovePipe": "onRemovePipe"; }, ["filters", "filterReset"], ["kbq-filters", "*", "kbq-pipe-add", "kbq-filter-reset", "kbq-filter-search, [kbq-filter-search]", "kbq-filter-refresher, [kbq-filter-refresher]"], true, never>;
55
+ }
@@ -0,0 +1,17 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./filter-bar";
3
+ import * as i2 from "./filters";
4
+ import * as i3 from "./filter-refresher";
5
+ import * as i4 from "./filter-bar-button";
6
+ import * as i5 from "./filter-reset";
7
+ import * as i6 from "./pipe-add";
8
+ import * as i7 from "./pipe.directive";
9
+ import * as i8 from "./pipes/pipe-button";
10
+ import * as i9 from "./filter-search";
11
+ import * as i10 from "./pipes/pipe-title";
12
+ import * as i11 from "./pipes/pipe-state";
13
+ export declare class KbqFilterBarModule {
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilterBarModule, never>;
15
+ static ɵmod: i0.ɵɵNgModuleDeclaration<KbqFilterBarModule, never, [typeof i1.KbqFilterBar, typeof i2.KbqFilters, typeof i3.KbqFilterBarRefresher, typeof i4.KbqFilterBarButton, typeof i5.KbqFilterReset, typeof i6.KbqPipeAdd, typeof i7.KbqPipeDirective, typeof i8.KbqPipeButton, typeof i9.KbqFilterBarSearch, typeof i10.KbqPipeTitleDirective, typeof i11.KbqPipeState], [typeof i1.KbqFilterBar, typeof i2.KbqFilters, typeof i3.KbqFilterBarRefresher, typeof i4.KbqFilterBarButton, typeof i5.KbqFilterReset, typeof i6.KbqPipeAdd, typeof i7.KbqPipeDirective, typeof i8.KbqPipeButton, typeof i9.KbqFilterBarSearch, typeof i10.KbqPipeTitleDirective, typeof i11.KbqPipeState]>;
16
+ static ɵinj: i0.ɵɵInjectorDeclaration<KbqFilterBarModule>;
17
+ }
@@ -0,0 +1,60 @@
1
+ @use './filter-bar-theme' as *;
2
+
3
+ .kbq-filter-bar {
4
+ display: flex;
5
+ flex-direction: row;
6
+ justify-content: space-between;
7
+
8
+ width: 100%;
9
+
10
+ .kbq-filter-bar__left {
11
+ display: flex;
12
+ flex-direction: row;
13
+ flex-wrap: wrap;
14
+
15
+ gap: var(--kbq-size-s);
16
+
17
+ .kbq-button > .kbq-icon {
18
+ margin-right: var(--kbq-size-xxs);
19
+ }
20
+
21
+ & > .kbq-icon {
22
+ align-self: center;
23
+ }
24
+ }
25
+
26
+ .kbq-filter-bar__right {
27
+ display: flex;
28
+ flex-direction: row;
29
+
30
+ margin-left: var(--kbq-size-3xl);
31
+ }
32
+ }
33
+
34
+ .kbq-pipe__popover {
35
+ .kbq-popover__container {
36
+ min-width: 320px;
37
+ }
38
+
39
+ .kbq-popover__content {
40
+ padding: var(--kbq-size-m) var(--kbq-size-m) 1px !important;
41
+ }
42
+
43
+ .kbq-popover__footer {
44
+ padding: var(--kbq-size-xxs);
45
+
46
+ & .kbq-button:not(.kbq-disabled) {
47
+ display: flex;
48
+ flex-direction: row;
49
+ width: 100%;
50
+ justify-content: flex-start;
51
+
52
+ & .kbq-button_hot-key {
53
+ color: var(--kbq-foreground-contrast-secondary);
54
+ }
55
+ }
56
+ }
57
+ }
58
+
59
+ @include kbq-button-changed-filter();
60
+ @include kbq-filter-bar-typography();
@@ -0,0 +1,97 @@
1
+ import { InjectionToken, TemplateRef } from '@angular/core';
2
+ import { KbqFilterBar } from './filter-bar';
3
+ export declare const KBQ_FILTER_BAR_CONFIGURATION: InjectionToken<unknown>;
4
+ export declare const KBQ_FILTER_BAR_DEFAULT_CONFIGURATION: {
5
+ reset: {
6
+ buttonName: string;
7
+ };
8
+ search: {
9
+ tooltip: string;
10
+ placeholder: string;
11
+ };
12
+ filters: {
13
+ defaultName: string;
14
+ saveNewFilterTooltip: string;
15
+ searchPlaceholder: string;
16
+ searchEmptyResult: string;
17
+ saveAsNewFilter: string;
18
+ saveChanges: string;
19
+ saveAsNew: string;
20
+ change: string;
21
+ resetChanges: string;
22
+ remove: string;
23
+ name: string;
24
+ error: string;
25
+ errorHint: string;
26
+ saveButton: string;
27
+ cancelButton: string;
28
+ };
29
+ add: {
30
+ tooltip: string;
31
+ };
32
+ pipe: {
33
+ clearButtonTooltip: string;
34
+ removeButtonTooltip: string;
35
+ applyButton: string;
36
+ emptySearchResult: string;
37
+ };
38
+ datePipe: {
39
+ customPeriod: string;
40
+ customPeriodFrom: string;
41
+ customPeriodTo: string;
42
+ customPeriodErrorHint: string;
43
+ backToPeriodSelection: string;
44
+ };
45
+ };
46
+ export declare enum KbqPipeTypes {
47
+ Text = "text",
48
+ Select = "select",
49
+ MultiSelect = "multiselect",
50
+ Date = "date",
51
+ Datetime = "datetime"
52
+ }
53
+ export interface KbqDateTimeValue {
54
+ name?: string;
55
+ start?: string;
56
+ end?: string;
57
+ }
58
+ export interface KbqSelectValue {
59
+ name: string;
60
+ value: unknown;
61
+ }
62
+ export interface KbqFilter {
63
+ name: string;
64
+ pipes: KbqPipe[];
65
+ readonly: boolean;
66
+ disabled: boolean;
67
+ changed: boolean;
68
+ saved: boolean;
69
+ }
70
+ export interface KbqPipe {
71
+ name: string;
72
+ id?: string | number;
73
+ type: KbqPipeTypes;
74
+ value: unknown | null;
75
+ search?: boolean;
76
+ required: boolean;
77
+ cleanable: boolean;
78
+ removable: boolean;
79
+ disabled: boolean;
80
+ }
81
+ export interface KbqPipeData<V> extends KbqPipe {
82
+ value: V | null;
83
+ search?: boolean;
84
+ openOnAdd?: boolean;
85
+ }
86
+ export interface KbqPipeTemplate extends Omit<KbqPipe, 'value'> {
87
+ values?: unknown[];
88
+ valueTemplate?: TemplateRef<any> | string;
89
+ }
90
+ export interface KbqSaveFilterError {
91
+ text?: string;
92
+ nameAlreadyExists?: boolean;
93
+ }
94
+ export interface KbqSaveFilterEvent {
95
+ filter: KbqFilter | null;
96
+ filterBar: KbqFilterBar;
97
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class KbqFilterBarRefresher {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilterBarRefresher, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqFilterBarRefresher, "kbq-filter-refresher, [kbq-filter-refresher]", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,6 @@
1
+ .kbq-filter-refresher {
2
+ display: flex;
3
+ align-items: center;
4
+
5
+ min-width: 64px;
6
+ }
@@ -0,0 +1,11 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { KbqFilterBar } from './filter-bar';
3
+ import { KbqFilter } from './filter-bar.types';
4
+ import * as i0 from "@angular/core";
5
+ export declare class KbqFilterReset {
6
+ protected readonly filterBar: KbqFilterBar;
7
+ /** Event that is generated whenever the user reset a filter. */
8
+ readonly onResetFilter: EventEmitter<KbqFilter | null>;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilterReset, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqFilterReset, "kbq-filter-reset", never, {}, { "onResetFilter": "onResetFilter"; }, never, ["*"], true, never>;
11
+ }
@@ -0,0 +1,25 @@
1
+ import { ChangeDetectorRef, EventEmitter } from '@angular/core';
2
+ import { UntypedFormControl } from '@angular/forms';
3
+ import { KbqButton } from '@koobiq/components/button';
4
+ import { KbqInput } from '@koobiq/components/input';
5
+ import { KbqTooltipTrigger } from '@koobiq/components/tooltip';
6
+ import { KbqFilterBar } from './filter-bar';
7
+ import * as i0 from "@angular/core";
8
+ export declare class KbqFilterBarSearch {
9
+ protected readonly filterBar: KbqFilterBar;
10
+ protected readonly changeDetectorRef: ChangeDetectorRef;
11
+ input: KbqInput;
12
+ button: KbqButton;
13
+ tooltip: KbqTooltipTrigger;
14
+ searchControl: UntypedFormControl;
15
+ isSearchActive: boolean;
16
+ readonly onSearch: EventEmitter<string>;
17
+ constructor();
18
+ openSearch(): void;
19
+ onBlur(): void;
20
+ onEscape(): void;
21
+ onClear(): void;
22
+ onReset: () => void;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilterBarSearch, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqFilterBarSearch, "kbq-filter-search, [kbq-filter-search]", never, {}, { "onSearch": "onSearch"; }, never, never, true, never>;
25
+ }
@@ -0,0 +1,14 @@
1
+ .kbq-filter-search {
2
+ display: flex;
3
+ align-items: start;
4
+
5
+ max-width: 260px;
6
+
7
+ & .kbq-input {
8
+ width: 260px;
9
+ }
10
+
11
+ .kbq-filter_hidden {
12
+ display: none;
13
+ }
14
+ }
@@ -0,0 +1,72 @@
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, OnInit } from '@angular/core';
2
+ import { FormControl, UntypedFormControl } from '@angular/forms';
3
+ import { KbqButton, KbqButtonStyles } from '@koobiq/components/button';
4
+ import { KbqComponentColors, PopUpPlacements, PopUpSizes } from '@koobiq/components/core';
5
+ import { KbqDropdownTrigger } from '@koobiq/components/dropdown';
6
+ import { KbqPopoverTrigger } from '@koobiq/components/popover';
7
+ import { Observable } from 'rxjs';
8
+ import { KbqFilterBar } from './filter-bar';
9
+ import { KbqFilter, KbqSaveFilterError, KbqSaveFilterEvent } from './filter-bar.types';
10
+ import * as i0 from "@angular/core";
11
+ export declare class KbqFilters implements OnInit {
12
+ protected readonly placements: typeof PopUpPlacements;
13
+ protected readonly filterBar: KbqFilterBar;
14
+ protected readonly changeDetectorRef: ChangeDetectorRef;
15
+ button: KbqButton;
16
+ popover: KbqPopoverTrigger;
17
+ dropdown: KbqDropdownTrigger;
18
+ search: ElementRef;
19
+ newFilterName: ElementRef;
20
+ protected readonly styles: typeof KbqButtonStyles;
21
+ protected readonly colors: typeof KbqComponentColors;
22
+ searchControl: UntypedFormControl;
23
+ filteredOptions: Observable<KbqFilter[]>;
24
+ popoverSize: PopUpSizes;
25
+ filterName: FormControl<string | null>;
26
+ saveNewFilter: boolean;
27
+ showFilterSavingError: boolean;
28
+ filterSavingErrorText: string;
29
+ filters: KbqFilter[];
30
+ /** Event that is generated whenever the user selects a filter. */
31
+ readonly onSelectFilter: EventEmitter<KbqFilter>;
32
+ /** Event that is generated whenever the user save a filter. */
33
+ readonly onSave: EventEmitter<KbqSaveFilterEvent>;
34
+ /** Event that is generated whenever the user change a filter. */
35
+ readonly onChangeFilter: EventEmitter<KbqSaveFilterEvent>;
36
+ /** Event that is generated whenever the user saves a filter as new. */
37
+ readonly onSaveAsNew: EventEmitter<KbqSaveFilterEvent>;
38
+ /** Event that is generated whenever the user remove a filter. */
39
+ readonly onRemoveFilter: EventEmitter<KbqFilter>;
40
+ /** Event that is generated whenever the user reset a filter changes. */
41
+ readonly onResetFilterChanges: EventEmitter<KbqFilter | null>;
42
+ get popoverHeader(): string;
43
+ /** Component state. true if opened dropdown or popup */
44
+ get opened(): boolean;
45
+ /** Selected filter */
46
+ get filter(): KbqFilter | null;
47
+ /** Component state. True if 'filters' input contains no elements. */
48
+ get isEmpty(): boolean;
49
+ constructor();
50
+ ngOnInit(): void;
51
+ selectFilter(filter: KbqFilter): void;
52
+ saveChanges(): void;
53
+ saveAsNew(): void;
54
+ showError(error?: KbqSaveFilterError): void;
55
+ restoreFocus(): void;
56
+ preparePopover(): void;
57
+ openSaveAsNewFilterPopover(): void;
58
+ openChangeFilterNamePopover(): void;
59
+ closePopover: () => void;
60
+ stopEventPropagation(event: Event): void;
61
+ searchKeydownHandler(event: KeyboardEvent): void;
62
+ onDropdownOpen(): void;
63
+ resetFilterChanges(): void;
64
+ /** Hide the popup and restore focus.
65
+ * Use this method in the onSave, onSaveAsNew, or onChangeFilter events after the data has been successfully saved. */
66
+ filterSavedSuccessfully(): void;
67
+ /** Shows an error. Use this method in the onSave, onSaveAsNew, or onChangeFilter events if saving data failed. */
68
+ filterSavedUnsuccessfully(error?: KbqSaveFilterError): void;
69
+ private getFilteredOptions;
70
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilters, never>;
71
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqFilters, "kbq-filters", ["kbqFilters"], { "filters": { "alias": "filters"; "required": false; }; }, { "onSelectFilter": "onSelectFilter"; "onSave": "onSave"; "onChangeFilter": "onChangeFilter"; "onSaveAsNew": "onSaveAsNew"; "onRemoveFilter": "onRemoveFilter"; "onResetFilterChanges": "onResetFilterChanges"; }, never, ["*"], true, never>;
72
+ }
@@ -0,0 +1,92 @@
1
+ @use '../core/styles/common';
2
+ @use './filter-bar-theme' as *;
3
+
4
+ .kbq-filters {
5
+ display: flex;
6
+
7
+ > .kbq-button {
8
+ max-width: 320px;
9
+
10
+ & .kbq-button-wrapper {
11
+ width: 100%;
12
+ }
13
+ }
14
+
15
+ > .kbq-button .kbq-icon {
16
+ margin-right: var(--kbq-size-xxs);
17
+ }
18
+
19
+ & .kbq-filters__filter-name {
20
+ @include common.kbq-truncate-line();
21
+ }
22
+
23
+ & .kbq-filter-bar__separator {
24
+ align-self: center;
25
+
26
+ height: var(--kbq-size-m) !important;
27
+
28
+ margin-left: calc(var(--kbq-size-s) + var(--kbq-size-xs)) !important;
29
+ margin-right: var(--kbq-size-xs) !important;
30
+ }
31
+
32
+ & .kbq-filter-bar__arrow {
33
+ align-self: center;
34
+
35
+ margin-left: var(--kbq-size-s);
36
+ }
37
+
38
+ .kbq-button.kbq-button_changed-filter {
39
+ border-bottom-right-radius: unset;
40
+ border-top-right-radius: unset;
41
+ }
42
+
43
+ .kbq-button-icon {
44
+ margin-left: -1px;
45
+
46
+ border-bottom-left-radius: unset;
47
+ border-top-left-radius: unset;
48
+ }
49
+
50
+ .kbq-button_changed-saved-filter {
51
+ &::before {
52
+ content: '';
53
+ position: absolute;
54
+ right: -4px;
55
+ top: -4px;
56
+
57
+ width: var(--kbq-size-s);
58
+ height: var(--kbq-size-s);
59
+
60
+ border: 2px solid var(--kbq-background-bg);
61
+ border-radius: var(--kbq-size-xs);
62
+
63
+ background: var(--kbq-icon-warning);
64
+ }
65
+ }
66
+
67
+ .kbq-button:not(:hover, .kbq-active) + .kbq-button_action:not(:hover, .kbq-active)::after {
68
+ content: '';
69
+ position: absolute;
70
+ left: 0;
71
+ top: 10px;
72
+
73
+ width: 1px;
74
+ height: var(--kbq-size-m);
75
+
76
+ background: var(--kbq-line-contrast-less);
77
+ }
78
+ }
79
+
80
+ .kbq-filters__save-as-new-filter-popover {
81
+ & .kbq-popover__container {
82
+ width: 400px;
83
+ }
84
+
85
+ & .kbq-popover__content {
86
+ padding: var(--kbq-size-s) var(--kbq-size-xxl);
87
+ }
88
+ }
89
+
90
+ .kbq-filters__dropdown .kbq-dropdown-item {
91
+ padding-right: var(--kbq-size-s);
92
+ }
@@ -0,0 +1 @@
1
+ export * from './public-api';
@@ -0,0 +1,18 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { KbqOption } from '@koobiq/components/core';
3
+ import { KbqSelect } from '@koobiq/components/select';
4
+ import { KbqFilterBar } from './filter-bar';
5
+ import { KbqFilter, KbqPipe, KbqPipeTemplate } from './filter-bar.types';
6
+ import * as i0 from "@angular/core";
7
+ export declare class KbqPipeAdd {
8
+ protected readonly filterBar: KbqFilterBar;
9
+ select: KbqSelect;
10
+ readonly onAddPipe: EventEmitter<KbqPipeTemplate>;
11
+ filterTemplate: KbqFilter;
12
+ addedPipes: (string | number)[];
13
+ constructor();
14
+ addPipeFromTemplate(option: KbqOption): void;
15
+ compareWith(o1: KbqPipe, o2: string): boolean;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeAdd, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqPipeAdd, "kbq-pipe-add", never, { "filterTemplate": { "alias": "filterTemplate"; "required": false; }; }, { "onAddPipe": "onAddPipe"; }, never, never, true, never>;
18
+ }
@@ -0,0 +1,5 @@
1
+ .kbq-pipe-add {
2
+ & .kbq-select .kbq-select__trigger {
3
+ height: unset;
4
+ }
5
+ }
@@ -0,0 +1,13 @@
1
+ import { AfterContentInit, Injector, ViewContainerRef } from '@angular/core';
2
+ import { KbqPipe, KbqPipeTemplate } from './filter-bar.types';
3
+ import * as i0 from "@angular/core";
4
+ export declare class KbqPipeDirective<T extends KbqPipe> implements AfterContentInit {
5
+ private injector;
6
+ protected readonly viewContainerRef: ViewContainerRef;
7
+ values: KbqPipeTemplate[];
8
+ pipe: T;
9
+ ngAfterContentInit(): void;
10
+ getInjector(pipe: T): Injector;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeDirective<any>, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqPipeDirective<any>, "[kbqPipe]", never, { "pipe": { "alias": "kbqPipe"; "required": false; }; }, {}, never, never, true, never>;
13
+ }
@@ -0,0 +1,40 @@
1
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, InjectionToken, TemplateRef } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { KbqFilterBar } from '../filter-bar';
4
+ import { KbqPipeData, KbqPipeTemplate } from '../filter-bar.types';
5
+ import * as i0 from "@angular/core";
6
+ export declare const KBQ_PIPE_DATA: InjectionToken<unknown>;
7
+ export declare abstract class KbqBasePipe<V> implements AfterViewInit {
8
+ readonly stateChanges: Subject<void>;
9
+ readonly data: KbqPipeData<V>;
10
+ protected readonly filterBar: KbqFilterBar | null;
11
+ protected readonly changeDetectorRef: ChangeDetectorRef;
12
+ protected values: any;
13
+ protected valueTemplate?: TemplateRef<any> | string;
14
+ isMac: boolean;
15
+ $implicit: unknown;
16
+ get isEmpty(): boolean;
17
+ get showRemoveButton(): boolean;
18
+ get localeData(): any;
19
+ constructor();
20
+ ngAfterViewInit(): void;
21
+ isTemplateRef(value: any): boolean;
22
+ updateTemplates: (templates: KbqPipeTemplate[] | null) => void;
23
+ onRemove(): void;
24
+ onClear(): void;
25
+ abstract open(): void;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqBasePipe<any>, never>;
27
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqBasePipe<any>, never, never, {}, {}, never, never, true, never>;
28
+ }
29
+ export declare class KbqPipeMinWidth {
30
+ protected readonly filterBar: KbqFilterBar | null;
31
+ protected readonly elementRef: ElementRef<any>;
32
+ protected readonly changeDetectorRef: ChangeDetectorRef;
33
+ minWidth: string;
34
+ maxSymbolsForFitContent: number;
35
+ get textLength(): number;
36
+ constructor();
37
+ update: () => void;
38
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeMinWidth, never>;
39
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqPipeMinWidth, "[kbqPipeMinWidth]", never, {}, {}, never, never, true, never>;
40
+ }