@koobiq/components 18.29.0 → 18.31.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 (137) hide show
  1. package/code-block/_code-block-theme.scss +4 -12
  2. package/code-block/code-block-tokens.scss +3 -2
  3. package/code-block/code-block.scss +41 -10
  4. package/core/common-behaviors/error-state.d.ts +18 -0
  5. package/core/common-behaviors/index.d.ts +1 -1
  6. package/core/formatters/filesize/size.d.ts +19 -3
  7. package/core/forms/validators.d.ts +13 -0
  8. package/core/option/_option-theme.scss +24 -2
  9. package/core/pop-up/pop-up-trigger.d.ts +3 -4
  10. package/core/pop-up/pop-up.d.ts +2 -1
  11. package/core/select/common.d.ts +3 -3
  12. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +1 -1
  13. package/datepicker/datepicker-input.directive.d.ts +14 -5
  14. package/datepicker/datepicker-module.d.ts +1 -1
  15. package/datepicker/datepicker-toggle.component.d.ts +22 -0
  16. package/datepicker/datepicker-toggle.scss +6 -0
  17. package/ellipsis-center/ellipsis-center.directive.d.ts +8 -2
  18. package/esm2022/actions-panel/actions-panel-container.mjs +2 -2
  19. package/esm2022/code-block/code-block.mjs +6 -3
  20. package/esm2022/core/common-behaviors/error-state.mjs +28 -1
  21. package/esm2022/core/common-behaviors/index.mjs +2 -2
  22. package/esm2022/core/formatters/filesize/formatter.mjs +6 -9
  23. package/esm2022/core/formatters/filesize/size.mjs +15 -17
  24. package/esm2022/core/forms/validators.mjs +22 -1
  25. package/esm2022/core/option/option.mjs +2 -2
  26. package/esm2022/core/pop-up/pop-up-trigger.mjs +19 -10
  27. package/esm2022/core/pop-up/pop-up.mjs +6 -2
  28. package/esm2022/core/select/common.mjs +6 -4
  29. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
  30. package/esm2022/core/version.mjs +2 -2
  31. package/esm2022/datepicker/calendar-header.component.mjs +1 -1
  32. package/esm2022/datepicker/datepicker-input.directive.mjs +66 -6
  33. package/esm2022/datepicker/datepicker-module.mjs +8 -3
  34. package/esm2022/datepicker/datepicker-toggle.component.mjs +94 -10
  35. package/esm2022/dropdown/dropdown.component.mjs +3 -3
  36. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +14 -4
  37. package/esm2022/file-upload/file-upload.mjs +2 -1
  38. package/esm2022/file-upload/multiple-file-upload.component.mjs +21 -7
  39. package/esm2022/file-upload/single-file-upload.component.mjs +16 -7
  40. package/esm2022/filter-bar/filter-bar.mjs +11 -3
  41. package/esm2022/filter-bar/filter-bar.types.mjs +1 -1
  42. package/esm2022/filter-bar/filter-search.mjs +2 -2
  43. package/esm2022/filter-bar/filters.mjs +2 -2
  44. package/esm2022/filter-bar/pipe-add.mjs +2 -2
  45. package/esm2022/filter-bar/pipes/pipe-button.mjs +1 -1
  46. package/esm2022/filter-bar/pipes/pipe-date.mjs +2 -2
  47. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +2 -2
  48. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +29 -9
  49. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +30 -10
  50. package/esm2022/filter-bar/pipes/pipe-select.mjs +2 -2
  51. package/esm2022/filter-bar/pipes/pipe-text.mjs +2 -2
  52. package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +2 -2
  53. package/esm2022/form-field/form-field.mjs +8 -8
  54. package/esm2022/form-field/stepper.mjs +20 -4
  55. package/esm2022/icon/icon-button.component.mjs +2 -2
  56. package/esm2022/list/list-selection.component.mjs +5 -4
  57. package/esm2022/list/list.component.mjs +2 -2
  58. package/esm2022/overflow-items/overflow-items.mjs +43 -70
  59. package/esm2022/popover/popover.component.mjs +10 -4
  60. package/esm2022/select/select.component.mjs +34 -17
  61. package/esm2022/tabs/tab-group.component.mjs +1 -1
  62. package/esm2022/timezone/timezone-option.component.mjs +2 -2
  63. package/esm2022/timezone/timezone-select.component.mjs +2 -2
  64. package/esm2022/tooltip/tooltip.component.mjs +12 -3
  65. package/esm2022/top-bar/top-bar.mjs +2 -2
  66. package/esm2022/tree/toggle.mjs +2 -2
  67. package/esm2022/tree/tree-option.component.mjs +5 -4
  68. package/esm2022/tree/tree-selection.component.mjs +2 -2
  69. package/esm2022/tree/tree.mjs +2 -2
  70. package/esm2022/tree-select/tree-select.component.mjs +32 -13
  71. package/fesm2022/koobiq-components-actions-panel.mjs +1 -1
  72. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  73. package/fesm2022/koobiq-components-code-block.mjs +5 -2
  74. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  75. package/fesm2022/koobiq-components-core.mjs +99 -41
  76. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  77. package/fesm2022/koobiq-components-datepicker.mjs +159 -11
  78. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  79. package/fesm2022/koobiq-components-dropdown.mjs +2 -2
  80. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  81. package/fesm2022/koobiq-components-ellipsis-center.mjs +13 -3
  82. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  83. package/fesm2022/koobiq-components-file-upload.mjs +32 -10
  84. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  85. package/fesm2022/koobiq-components-filter-bar.mjs +75 -27
  86. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  87. package/fesm2022/koobiq-components-form-field.mjs +25 -10
  88. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  89. package/fesm2022/koobiq-components-icon.mjs +2 -2
  90. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  91. package/fesm2022/koobiq-components-list.mjs +6 -5
  92. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  93. package/fesm2022/koobiq-components-overflow-items.mjs +42 -69
  94. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  95. package/fesm2022/koobiq-components-popover.mjs +9 -3
  96. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  97. package/fesm2022/koobiq-components-select.mjs +33 -16
  98. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  99. package/fesm2022/koobiq-components-tabs.mjs +1 -1
  100. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  101. package/fesm2022/koobiq-components-timezone.mjs +4 -4
  102. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  103. package/fesm2022/koobiq-components-tooltip.mjs +11 -2
  104. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  105. package/fesm2022/koobiq-components-top-bar.mjs +2 -2
  106. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  107. package/fesm2022/koobiq-components-tree-select.mjs +31 -12
  108. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  109. package/fesm2022/koobiq-components-tree.mjs +10 -9
  110. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  111. package/file-upload/_file-upload-theme.scss +38 -22
  112. package/file-upload/file-upload-tokens.scss +37 -14
  113. package/file-upload/file-upload.d.ts +1 -0
  114. package/file-upload/multiple-file-upload.component.d.ts +12 -5
  115. package/file-upload/multiple-file-upload.component.scss +66 -69
  116. package/file-upload/single-file-upload.component.d.ts +7 -1
  117. package/file-upload/single-file-upload.component.scss +8 -0
  118. package/filter-bar/filter-bar.d.ts +7 -1
  119. package/filter-bar/filter-bar.types.d.ts +5 -0
  120. package/filter-bar/pipes/pipe-multi-select.d.ts +5 -1
  121. package/filter-bar/pipes/pipe-multi-tree-select.d.ts +5 -1
  122. package/form-field/form-field.d.ts +3 -1
  123. package/form-field/stepper.d.ts +15 -1
  124. package/icon/_icon-button-theme.scss +67 -85
  125. package/list/_list-theme.scss +24 -2
  126. package/list/list-tokens.scss +5 -0
  127. package/overflow-items/overflow-items.d.ts +16 -25
  128. package/package.json +6 -6
  129. package/popover/popover.component.d.ts +4 -2
  130. package/schematics/ng-add/index.js +5 -5
  131. package/select/select.component.d.ts +8 -1
  132. package/tooltip/tooltip.component.d.ts +8 -1
  133. package/top-bar/top-bar.scss +1 -0
  134. package/tree/_tree-theme.scss +30 -7
  135. package/tree/tree-option.scss +5 -2
  136. package/tree/tree-tokens.scss +5 -0
  137. package/tree-select/tree-select.component.d.ts +8 -1
@@ -3,19 +3,17 @@
3
3
  @use '../core/styles/common/tokens';
4
4
 
5
5
  @mixin kbq-file-upload-theme() {
6
- .kbq-file-upload {
7
- .kbq-focused,
8
- .kbq-link.kbq-focused {
9
- border: 2px solid var(--kbq-file-upload-single-states-focused-focus-outline-color);
10
- }
11
- }
12
-
13
6
  .kbq-single-file-upload {
14
7
  .kbq-file-upload {
15
8
  // FIXME: move to mixin kbq-file-upload-state
16
9
  background-color: var(--kbq-file-upload-single-default-container-background);
17
10
  border-color: var(--kbq-file-upload-single-default-container-border) !important;
18
11
 
12
+ .kbq-focused,
13
+ .kbq-link.kbq-focused {
14
+ border: 2px solid var(--kbq-file-upload-single-states-focused-focus-outline-color);
15
+ }
16
+
19
17
  &:not(.kbq-disabled, .kbq-error) {
20
18
  .kbq-file-upload__action {
21
19
  color: var(--kbq-file-upload-single-default-icon-button-color);
@@ -28,6 +26,10 @@
28
26
  .file-item__text-wrapper .kbq-icon.kbq-empty {
29
27
  color: var(--kbq-file-upload-single-default-left-icon-color);
30
28
  }
29
+
30
+ .kbq-file-item__size {
31
+ color: var(--kbq-file-upload-single-default-file-size-text-color);
32
+ }
31
33
  }
32
34
 
33
35
  &.dragover {
@@ -54,6 +56,10 @@
54
56
  color: var(--kbq-file-upload-single-states-error-text-block-color);
55
57
  }
56
58
 
59
+ .kbq-file-item__size {
60
+ color: var(--kbq-file-upload-single-states-error-file-size-text-color);
61
+ }
62
+
57
63
  .kbq-file-upload__action {
58
64
  color: var(--kbq-file-upload-single-states-error-icon-button-color);
59
65
  }
@@ -76,6 +82,10 @@
76
82
  color: var(--kbq-file-upload-single-states-disabled-text-block-color);
77
83
  }
78
84
 
85
+ .kbq-file-item__size {
86
+ color: var(--kbq-file-upload-single-states-disabled-file-size-text-color);
87
+ }
88
+
79
89
  .kbq-file-upload__action {
80
90
  color: var(--kbq-file-upload-single-states-disabled-icon-button-color);
81
91
  }
@@ -88,11 +98,17 @@
88
98
  background-color: var(--kbq-file-upload-multiple-default-container-background);
89
99
  border-color: var(--kbq-file-upload-multiple-default-container-border) !important;
90
100
 
101
+ .kbq-focused,
102
+ .kbq-link.kbq-focused {
103
+ border: 2px solid var(--kbq-file-upload-multiple-states-focused-focus-outline-color);
104
+ }
105
+
91
106
  .btn-upload {
92
107
  border-top-color: var(--kbq-file-upload-multiple-default-container-border);
93
108
  }
94
109
 
95
110
  .kbq-file-multiple-uploaded__header {
111
+ color: var(--kbq-foreground-contrast-secondary);
96
112
  border-bottom-color: var(--kbq-file-upload-multiple-default-grid-divider-color);
97
113
  }
98
114
 
@@ -106,19 +122,17 @@
106
122
  background-color: var(--kbq-file-upload-multiple-states-on-drag-container-background);
107
123
  border-color: var(--kbq-file-upload-multiple-states-on-drag-container-border) !important;
108
124
 
125
+ .btn-upload {
126
+ border-top-color: var(--kbq-file-upload-multiple-states-on-drag-container-border);
127
+ }
128
+
109
129
  .kbq-file-multiple-uploaded__header {
110
- border-bottom-color: var(--kbq-file-upload-multiple-states-on-drag-container-background) !important;
130
+ border-bottom-color: var(--kbq-file-upload-multiple-states-on-drag-grid-divider-color) !important;
111
131
  }
112
132
 
113
133
  .kbq-dropzone__icon {
114
134
  color: var(--kbq-file-upload-multiple-states-on-drag-upload-icon-color);
115
135
  }
116
-
117
- &.selected {
118
- .dropzone {
119
- border-top-color: var(--kbq-file-upload-multiple-states-on-drag-container-border);
120
- }
121
- }
122
136
  }
123
137
 
124
138
  &.kbq-disabled {
@@ -134,6 +148,10 @@
134
148
  color: var(--kbq-file-upload-multiple-states-disabled-text-block-color);
135
149
  }
136
150
 
151
+ .kbq-file-multiple-uploaded__header {
152
+ border-bottom-color: var(--kbq-file-upload-multiple-states-disabled-grid-divider-color) !important;
153
+ }
154
+
137
155
  .multiple__uploaded-item {
138
156
  .kbq-file-upload__file .kbq-icon.kbq-empty {
139
157
  color: var(--kbq-file-upload-multiple-states-disabled-left-icon-color);
@@ -148,12 +166,6 @@
148
166
  color: var(--kbq-file-upload-multiple-states-disabled-icon-button-color);
149
167
  }
150
168
  }
151
-
152
- &.selected {
153
- .dropzone {
154
- border-top-color: var(--kbq-file-upload-multiple-states-disabled-container-border);
155
- }
156
- }
157
169
  }
158
170
 
159
171
  &:not(.kbq-disabled) {
@@ -162,12 +174,12 @@
162
174
  border-color: var(--kbq-line-error) !important;
163
175
 
164
176
  .kbq-dropzone__icon {
165
- color: var(--kbq-file-upload-single-states-error-upload-icon-color);
177
+ color: var(--kbq-file-upload-multiple-states-error-upload-icon-color);
166
178
  }
167
179
 
168
180
  .dropzone__text:not(.kbq-link),
169
181
  .kbq-file-multiple-uploaded__header {
170
- color: var(--kbq-file-upload-single-states-error-text-block-color);
182
+ color: var(--kbq-file-upload-multiple-states-error-text-block-color);
171
183
  }
172
184
  }
173
185
 
@@ -196,6 +208,10 @@
196
208
  color: var(--kbq-file-upload-multiple-default-left-icon-color);
197
209
  }
198
210
 
211
+ .kbq-file-upload__size {
212
+ color: var(--kbq-file-upload-multiple-default-file-size-text-color);
213
+ }
214
+
199
215
  .kbq-file-upload__action .kbq-icon.kbq-empty {
200
216
  color: var(--kbq-file-upload-multiple-default-icon-button-color);
201
217
  }
@@ -1,4 +1,8 @@
1
- .kbq-file-upload {
1
+ :where(.kbq-file-upload) {
2
+ --kbq-form-field-hint-text: var(--kbq-foreground-contrast-secondary);
3
+ }
4
+
5
+ :where(.kbq-single-file-upload) {
2
6
  --kbq-file-upload-size-single-container-border-radius: var(--kbq-size-s);
3
7
  --kbq-file-upload-size-single-container-border-width: 1px;
4
8
  --kbq-file-upload-size-single-container-content-gap-horizontal: var(--kbq-size-s);
@@ -7,18 +11,6 @@
7
11
  --kbq-file-upload-size-single-text-block-padding-vertical: var(--kbq-size-3xs);
8
12
  --kbq-file-upload-size-single-text-block-content-gap-horizontal: var(--kbq-size-xxs);
9
13
  --kbq-file-upload-single-min-height: var(--kbq-size-5xl);
10
- --kbq-file-upload-size-multiple-big-container-min-height: 160px;
11
- --kbq-file-upload-size-multiple-big-container-min-width: 320px;
12
- --kbq-file-upload-size-multiple-big-container-border-radius: var(--kbq-size-s);
13
- --kbq-file-upload-size-multiple-big-container-border-width: 1px;
14
- --kbq-file-upload-size-multiple-big-container-content-gap-horizontal: var(--kbq-size-m);
15
- --kbq-file-upload-size-multiple-big-container-padding-vertical: var(--kbq-size-xxl);
16
- --kbq-file-upload-size-multiple-big-container-padding-horizontal: var(--kbq-size-xxl);
17
- --kbq-file-upload-size-multiple-big-text-block-content-gap-vertical: 0px;
18
- --kbq-file-upload-size-multiple-big-text-block-content-gap-horizontal: var(--kbq-size-xxs);
19
- --kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal: var(--kbq-size-s);
20
- --kbq-file-upload-size-multiple-big-grid-cell-padding-vertical: var(--kbq-size-s);
21
- --kbq-file-upload-size-multiple-big-grid-cell-content-gap-horizontal: var(--kbq-size-xxs);
22
14
  /* THEME TOKENS */
23
15
  --kbq-file-upload-single-default-container-border: var(--kbq-line-contrast-fade);
24
16
  --kbq-file-upload-single-default-container-background: var(--kbq-background-bg);
@@ -26,6 +18,7 @@
26
18
  --kbq-file-upload-single-default-left-icon-color: var(--kbq-icon-contrast-fade);
27
19
  --kbq-file-upload-single-default-text-block-color: var(--kbq-foreground-contrast);
28
20
  --kbq-file-upload-single-default-icon-button-color: var(--kbq-icon-contrast);
21
+ --kbq-file-upload-single-default-file-size-text-color: var(--kbq-foreground-contrast-secondary);
29
22
  --kbq-file-upload-single-states-on-drag-container-border: var(--kbq-line-theme-fade);
30
23
  --kbq-file-upload-single-states-on-drag-container-background: var(--kbq-background-theme-fade);
31
24
  --kbq-file-upload-single-states-on-drag-upload-icon-color: var(--kbq-icon-contrast-fade);
@@ -37,13 +30,33 @@
37
30
  --kbq-file-upload-single-states-error-left-icon-color: var(--kbq-icon-error);
38
31
  --kbq-file-upload-single-states-error-text-block-color: var(--kbq-foreground-error);
39
32
  --kbq-file-upload-single-states-error-icon-button-color: var(--kbq-icon-error);
33
+ --kbq-file-upload-single-states-error-file-size-text-color: var(--kbq-foreground-error);
40
34
  --kbq-file-upload-single-states-disabled-container-border: var(--kbq-states-line-disabled);
41
35
  --kbq-file-upload-single-states-disabled-container-background: var(--kbq-states-background-disabled);
42
36
  --kbq-file-upload-single-states-disabled-upload-icon-color: var(--kbq-states-icon-disabled);
43
37
  --kbq-file-upload-single-states-disabled-left-icon-color: var(--kbq-states-icon-disabled);
44
38
  --kbq-file-upload-single-states-disabled-icon-button-color: var(--kbq-states-icon-disabled);
45
39
  --kbq-file-upload-single-states-disabled-text-block-color: var(--kbq-states-foreground-disabled);
40
+ --kbq-file-upload-single-states-disabled-file-size-text-color: var(--kbq-states-foreground-disabled);
46
41
  --kbq-file-upload-single-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);
42
+ }
43
+
44
+ :where(.kbq-multiple-file-upload) {
45
+ --kbq-file-upload-size-multiple-big-container-min-height: 192px;
46
+ --kbq-file-upload-size-multiple-big-container-min-width: 320px;
47
+ --kbq-file-upload-size-multiple-big-container-border-radius: var(--kbq-size-s);
48
+ --kbq-file-upload-size-multiple-big-container-border-width: 1px;
49
+ --kbq-file-upload-size-multiple-big-container-content-gap-horizontal: var(--kbq-size-m);
50
+ --kbq-file-upload-size-multiple-big-container-padding-vertical: var(--kbq-size-xxl);
51
+ --kbq-file-upload-size-multiple-big-container-padding-horizontal: var(--kbq-size-xxl);
52
+ --kbq-file-upload-size-multiple-big-dropzone-content-gap-horizontal: var(--kbq-size-s);
53
+ --kbq-file-upload-size-multiple-big-text-block-content-gap-vertical: 0px;
54
+ --kbq-file-upload-size-multiple-big-text-block-content-gap-horizontal: var(--kbq-size-xxs);
55
+ --kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal: var(--kbq-size-s);
56
+ --kbq-file-upload-size-multiple-big-grid-cell-padding-vertical: var(--kbq-size-s);
57
+ --kbq-file-upload-size-multiple-big-grid-cell-content-gap-horizontal: var(--kbq-size-xxs);
58
+ --kbq-file-upload-size-multiple-big-grid-cell-file-size-width: var(--kbq-size-7xl);
59
+ /* THEME TOKENS */
47
60
  --kbq-file-upload-multiple-default-container-border: var(--kbq-line-contrast-fade);
48
61
  --kbq-file-upload-multiple-default-container-background: var(--kbq-background-bg);
49
62
  --kbq-file-upload-multiple-default-upload-icon-color: var(--kbq-icon-contrast-fade);
@@ -51,6 +64,7 @@
51
64
  --kbq-file-upload-multiple-default-text-block-color: var(--kbq-foreground-contrast);
52
65
  --kbq-file-upload-multiple-default-icon-button-color: var(--kbq-icon-contrast);
53
66
  --kbq-file-upload-multiple-default-grid-divider-color: var(--kbq-line-contrast-less);
67
+ --kbq-file-upload-multiple-default-file-size-text-color: var(--kbq-foreground-contrast-secondary);
54
68
  --kbq-file-upload-multiple-states-on-drag-container-border: var(--kbq-line-theme-fade);
55
69
  --kbq-file-upload-multiple-states-on-drag-container-background: var(--kbq-background-theme-fade);
56
70
  --kbq-file-upload-multiple-states-on-drag-upload-icon-color: var(--kbq-icon-contrast-fade);
@@ -59,6 +73,7 @@
59
73
  --kbq-file-upload-multiple-states-on-drag-text-block-color: var(--kbq-foreground-contrast);
60
74
  --kbq-file-upload-multiple-states-on-drag-grid-divider-color: var(--kbq-line-contrast-less);
61
75
  --kbq-file-upload-multiple-states-error-grid-cell-background: var(--kbq-background-error-less);
76
+ --kbq-file-upload-multiple-states-error-upload-icon-color: var(--kbq-icon-error);
62
77
  --kbq-file-upload-multiple-states-error-left-icon-color: var(--kbq-icon-error);
63
78
  --kbq-file-upload-multiple-states-error-text-block-color: var(--kbq-foreground-error);
64
79
  --kbq-file-upload-multiple-states-error-icon-button-color: var(--kbq-icon-error);
@@ -69,5 +84,13 @@
69
84
  --kbq-file-upload-multiple-states-disabled-icon-button-color: var(--kbq-states-icon-disabled);
70
85
  --kbq-file-upload-multiple-states-disabled-text-block-color: var(--kbq-states-foreground-disabled);
71
86
  --kbq-file-upload-multiple-states-disabled-grid-divider-color: var(--kbq-states-line-disabled);
72
- --kbq-form-field-hint-text: var(--kbq-foreground-contrast-secondary);
87
+ --kbq-file-upload-multiple-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);
88
+ }
89
+
90
+ /* stylelint-disable-next-line selector-class-pattern */
91
+ :where(.kbq-file-upload.compact) {
92
+ --kbq-file-upload-multiple-compact-container-content-gap-horizontal: var(--kbq-size-s);
93
+ --kbq-file-upload-multiple-compact-text-block-padding-vertical: var(--kbq-size-3xs);
94
+ --kbq-file-upload-multiple-compact-container-padding-vertical: 11px;
95
+ --kbq-file-upload-multiple-compact-container-padding-horizontal: 11px;
73
96
  }
@@ -27,6 +27,7 @@ export interface KbqInputFileLabel {
27
27
  */
28
28
  export type KbqFileValidatorFn = (file: File) => string | null;
29
29
  export declare const KBQ_FILE_UPLOAD_CONFIGURATION: InjectionToken<KbqInputFileLabel>;
30
+ /** @deprecated use `FileValidators.isCorrectExtension` instead. Will be removed in next major release. */
30
31
  export declare const isCorrectExtension: (file: File, accept?: string[]) => boolean;
31
32
  /** @docs-private */
32
33
  export declare abstract class KbqFileUploadBase implements CanUpdateErrorState {
@@ -42,21 +42,23 @@ export declare class KbqMultipleFileUploadComponent extends KbqFileUploadBase im
42
42
  set files(currentFileList: KbqFileItem[]);
43
43
  /** Emits an event containing updated file list.
44
44
  * public output will be renamed to filesChange in next major release (#DS-3700) */
45
- filesChange: EventEmitter<KbqFileItem[]>;
45
+ readonly filesChange: EventEmitter<KbqFileItem[]>;
46
46
  /**
47
47
  * Emits an event containing a chunk of files added to the file list.
48
48
  * Useful when handling added files, skipping filtering file list.
49
49
  */
50
- filesAdded: EventEmitter<KbqFileItem[]>;
50
+ readonly filesAdded: EventEmitter<KbqFileItem[]>;
51
51
  /**
52
52
  * Emits an event containing a tuple of file and file's index when removed from the file list.
53
53
  * Useful when handle removed files, skipping filtering file list.
54
54
  */
55
- fileRemoved: EventEmitter<[KbqFileItem, number]>;
55
+ readonly fileRemoved: EventEmitter<[KbqFileItem, number]>;
56
56
  /** File Icon Template */
57
- customFileIcon: TemplateRef<HTMLElement>;
57
+ protected readonly customFileIcon: TemplateRef<HTMLElement>;
58
58
  /** @docs-private */
59
- input: ElementRef<HTMLInputElement>;
59
+ readonly input: ElementRef<HTMLInputElement>;
60
+ private readonly listSelection;
61
+ private readonly fileSizeHeaderCell;
60
62
  /** @docs-private */
61
63
  protected readonly hint: QueryList<TemplateRef<any>>;
62
64
  /** @docs-private */
@@ -95,6 +97,11 @@ export declare class KbqMultipleFileUploadComponent extends KbqFileUploadBase im
95
97
  * @docs-private
96
98
  */
97
99
  get invalid(): boolean;
100
+ /**
101
+ * Set maxWidth for filesize cell to enable proper ellipsis center,
102
+ * @docs-private
103
+ */
104
+ protected get fileSizeCellMaxWidth(): number;
98
105
  /** @docs-private */
99
106
  readonly configuration: KbqInputFileMultipleLabel | null;
100
107
  constructor();
@@ -18,58 +18,35 @@
18
18
 
19
19
  min-width: var(--kbq-file-upload-size-multiple-big-container-min-width);
20
20
 
21
- & .dropzone {
21
+ .dropzone {
22
22
  gap: var(--kbq-file-upload-size-multiple-big-container-content-gap-horizontal);
23
23
  }
24
24
 
25
- & .dropzone__text {
26
- & .multiple__header {
27
- display: block;
28
- }
29
-
30
- & .multiple__caption {
31
- display: block;
25
+ .dropzone__text {
26
+ .multiple__caption {
32
27
  padding-top: var(--kbq-file-upload-size-multiple-big-text-block-content-gap-vertical);
33
- // гап не применяется тк не флекс. в целом гап не нужен, тк по логике дизайна ссылка от текста отделяется пробелом
34
- gap: var(--kbq-file-upload-size-multiple-big-text-block-content-gap-horizontal);
35
28
  }
36
29
  }
37
30
  }
38
31
 
39
32
  &.compact:not(.selected) {
40
- padding: var(--kbq-file-upload-size-single-container-padding-vertical)
41
- var(--kbq-file-upload-size-single-container-padding-horizontal);
42
-
43
- & .dropzone {
44
- gap: var(--kbq-file-upload-size-single-container-content-gap-horizontal);
33
+ padding: var(--kbq-file-upload-multiple-compact-container-padding-vertical)
34
+ var(--kbq-file-upload-multiple-compact-container-padding-horizontal);
45
35
 
46
- & .dropzone__text.multiple__caption {
47
- padding-top: var(--kbq-file-upload-size-single-text-block-padding-vertical);
36
+ .dropzone {
37
+ gap: var(--kbq-file-upload-multiple-compact-container-content-gap-horizontal);
48
38
 
49
- padding-bottom: var(--kbq-file-upload-size-single-text-block-padding-vertical);
39
+ .dropzone__text.multiple__caption {
40
+ padding-top: var(--kbq-file-upload-multiple-compact-text-block-padding-vertical);
50
41
 
51
- gap: var(--kbq-file-upload-size-single-text-block-content-gap-horizontal);
42
+ padding-bottom: var(--kbq-file-upload-multiple-compact-text-block-padding-vertical);
52
43
  }
53
44
  }
54
45
  }
55
46
 
56
- & .kbq-list-option.multiple__uploaded-item {
57
- padding: 0;
58
-
59
- & .kbq-list-text {
60
- padding: calc(
61
- var(--kbq-file-upload-size-multiple-big-grid-cell-padding-vertical) - var(
62
- --kbq-list-size-container-focus-outline-width,
63
- var(--kbq-size-3xs)
64
- )
65
- )
66
- calc(
67
- var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal) - var(
68
- --kbq-list-size-container-focus-outline-width,
69
- var(--kbq-size-3xs)
70
- )
71
- );
72
- }
47
+ .kbq-list-option.multiple__uploaded-item {
48
+ border-radius: 0;
49
+ padding: 0 calc(var(--kbq-size-3xs) - var(--kbq-file-upload-size-multiple-big-container-border-width));
73
50
 
74
51
  .kbq-icon {
75
52
  margin-right: 0;
@@ -86,67 +63,87 @@
86
63
  align-items: center;
87
64
 
88
65
  .kbq-file-upload__file {
89
- width: 65%;
90
- max-width: 65%;
91
-
92
- gap: var(--kbq-file-upload-size-multiple-big-grid-cell-content-gap-horizontal);
66
+ flex-grow: 1;
93
67
  }
94
68
 
95
69
  .kbq-file-upload__size {
96
- width: var(--kbq-size-7xl);
97
- min-width: var(--kbq-size-7xl);
98
- text-align: left;
70
+ width: var(--kbq-file-upload-size-multiple-big-grid-cell-file-size-width);
71
+ min-width: var(--kbq-file-upload-size-multiple-big-grid-cell-file-size-width);
72
+ max-width: var(--kbq-file-upload-size-multiple-big-grid-cell-file-size-width);
99
73
  flex-grow: 1;
74
+ flex-shrink: 1;
75
+ text-align: left;
100
76
  }
101
77
  }
102
78
 
103
79
  .kbq-file-upload__row {
80
+ .kbq-file-upload__grid-cell {
81
+ padding: 0 var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal);
82
+ }
83
+
104
84
  .kbq-file-upload__file {
105
85
  display: flex;
106
86
  align-items: center;
87
+ gap: var(--kbq-file-upload-size-multiple-big-grid-cell-content-gap-horizontal);
107
88
 
108
89
  .file-item__text {
109
- margin-left: 0;
110
90
  width: 90%;
111
91
  }
112
92
  }
93
+
94
+ .kbq-file-upload__action {
95
+ $list-option-border-width: var(--kbq-size-3xs);
96
+ display: flex;
97
+ justify-content: center;
98
+ align-items: center;
99
+ padding-top: calc(
100
+ var(--kbq-file-upload-size-multiple-big-grid-cell-padding-vertical) - $list-option-border-width
101
+ );
102
+ padding-bottom: calc(
103
+ var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal) - $list-option-border-width
104
+ );
105
+ min-height: var(--kbq-size-xxl);
106
+ min-width: var(--kbq-size-xxl);
107
+ }
113
108
  }
114
109
 
115
110
  .kbq-file-multiple-uploaded__header {
116
- border-bottom-width: 1px;
111
+ margin: -1px;
112
+ border-bottom-width: var(--kbq-file-upload-size-multiple-big-container-border-width);
117
113
  border-bottom-style: solid;
118
114
 
119
- .kbq-file-multiple-uploaded__header-inner {
120
- padding: kbq-sum-series-css-variables([file-upload-size-multiple-big-grid-cell-padding-vertical, 2px])
121
- kbq-sum-series-css-variables([file-upload-size-multiple-big-grid-cell-padding-horizontal 2px]);
115
+ padding: 0 var(--kbq-size-xxs);
116
+
117
+ .kbq-file-upload__grid-cell {
118
+ $header-cell-vertical-padding: 10px;
119
+ padding: $header-cell-vertical-padding var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal)
120
+ calc($header-cell-vertical-padding - var(--kbq-file-upload-size-multiple-big-container-border-width))
121
+ var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal);
122
+ }
123
+
124
+ .kbq-file-upload__action {
125
+ min-height: var(--kbq-size-xxl);
126
+ min-width: var(--kbq-size-xxl);
127
+ padding: var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal)
128
+ var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal)
129
+ calc(
130
+ var(--kbq-file-upload-size-multiple-big-grid-cell-padding-vertical) - var(
131
+ --kbq-file-upload-size-multiple-big-container-border-width
132
+ )
133
+ );
122
134
  }
123
135
  }
124
136
 
125
137
  .btn-upload {
126
- padding: kbq-difference-series-css-variables(
127
- [ file-upload-size-single-container-padding-vertical,
128
- file-upload-size-single-container-border-width]
129
- )
130
- kbq-difference-series-css-variables(
131
- [ file-upload-size-single-container-padding-horizontal,
132
- file-upload-size-single-container-border-width]
133
- );
134
- border-top-left-radius: var(--kbq-file-upload-size-single-container-border-radius);
138
+ margin: -1px;
139
+ padding: calc(var(--kbq-size-m) - var(--kbq-file-upload-size-multiple-big-container-border-width))
140
+ var(--kbq-size-m) var(--kbq-size-m) var(--kbq-size-m);
135
141
 
136
- border-top-right-radius: var(--kbq-file-upload-size-single-container-border-radius);
137
- border-top-width: var(--kbq-file-upload-size-single-container-border-width);
142
+ border-top-width: var(--kbq-file-upload-size-multiple-big-container-border-width);
138
143
  border-top-style: dashed;
139
144
 
140
- & .dropzone {
141
- gap: var(--kbq-file-upload-size-single-container-content-gap-horizontal);
142
-
143
- & .dropzone__text.multiple__caption {
144
- padding-top: var(--kbq-file-upload-size-single-text-block-padding-vertical);
145
-
146
- padding-bottom: var(--kbq-file-upload-size-single-text-block-padding-vertical);
147
-
148
- gap: var(--kbq-file-upload-size-single-text-block-content-gap-horizontal);
149
- }
145
+ .dropzone {
146
+ gap: var(--kbq-file-upload-size-multiple-big-dropzone-content-gap-horizontal);
150
147
  }
151
148
  }
152
149
 
@@ -27,6 +27,11 @@ export declare class KbqSingleFileUploadComponent extends KbqFileUploadBase impl
27
27
  private _file;
28
28
  get file(): KbqFileItem | null;
29
29
  set file(currentFile: KbqFileItem | null);
30
+ /**
31
+ * Controls whether to display the file size information.
32
+ * @default true
33
+ */
34
+ showFileSize: boolean;
30
35
  /** Emits an event containing updated file.
31
36
  * public output will be renamed to fileChange in next major release (#DS-3700) */
32
37
  fileChange: EventEmitter<KbqFileItem | null>;
@@ -88,5 +93,6 @@ export declare class KbqSingleFileUploadComponent extends KbqFileUploadBase impl
88
93
  private initDefaultParams;
89
94
  private getCaptionText;
90
95
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqSingleFileUploadComponent, never>;
91
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqSingleFileUploadComponent, "kbq-single-file-upload,kbq-file-upload:not([multiple])", never, { "progressMode": { "alias": "progressMode"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "customValidation": { "alias": "customValidation"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "file": { "alias": "file"; "required": false; }; }, { "fileChange": "fileQueueChange"; }, ["hint"], ["[kbq-icon]", "kbq-hint"], false, never>;
96
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqSingleFileUploadComponent, "kbq-single-file-upload,kbq-file-upload:not([multiple])", never, { "progressMode": { "alias": "progressMode"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "customValidation": { "alias": "customValidation"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "file": { "alias": "file"; "required": false; }; "showFileSize": { "alias": "showFileSize"; "required": false; }; }, { "fileChange": "fileQueueChange"; }, ["hint"], ["[kbq-icon]", "kbq-hint"], false, never>;
97
+ static ngAcceptInputType_showFileSize: unknown;
92
98
  }
@@ -44,5 +44,13 @@
44
44
  flex-grow: 1;
45
45
  }
46
46
  }
47
+
48
+ .kbq-file-item__size {
49
+ padding: 0 var(--kbq-size-s);
50
+ }
51
+
52
+ .kbq-file-upload__action {
53
+ padding: var(--kbq-size-xxs);
54
+ }
47
55
  }
48
56
  }
@@ -15,6 +15,11 @@ export declare class KbqFilterBar {
15
15
  filters: KbqFilters;
16
16
  /** @docs-private */
17
17
  filterReset: KbqFilterReset;
18
+ /**
19
+ * This is special logic that unselect all items when all selected because "all selected = nothing selected".
20
+ * Default is true
21
+ * */
22
+ selectedAllEqualsSelectedNothing: boolean;
18
23
  /** Filter that is currently selected */
19
24
  get filter(): KbqFilter | null;
20
25
  set filter(value: KbqFilter | null);
@@ -67,5 +72,6 @@ export declare class KbqFilterBar {
67
72
  private updateLocaleParams;
68
73
  private initDefaultParams;
69
74
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilterBar, never>;
70
- 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"; "onClosePipe": "onClosePipe"; }, ["filters", "filterReset"], ["kbq-filters", "*", "kbq-pipe-add", "kbq-filter-reset", "kbq-filter-search, [kbq-filter-search]", "kbq-filter-refresher, [kbq-filter-refresher]"], true, never>;
75
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqFilterBar, "kbq-filter-bar, [kbq-filter-bar]", never, { "selectedAllEqualsSelectedNothing": { "alias": "selectedAllEqualsSelectedNothing"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "pipeTemplates": { "alias": "pipeTemplates"; "required": false; }; }, { "filterChange": "filterChange"; "onChangePipe": "onChangePipe"; "onRemovePipe": "onRemovePipe"; "onClosePipe": "onClosePipe"; }, ["filters", "filterReset"], ["kbq-filters", "*", "kbq-pipe-add", "kbq-filter-reset", "kbq-filter-search, [kbq-filter-search]", "kbq-filter-refresher, [kbq-filter-refresher]"], true, never>;
76
+ static ngAcceptInputType_selectedAllEqualsSelectedNothing: unknown;
71
77
  }
@@ -88,6 +88,11 @@ export interface KbqPipe {
88
88
  value: unknown | null;
89
89
  search?: boolean;
90
90
  selectAll?: boolean;
91
+ /**
92
+ * This is special logic that unselect all items when all selected because "all selected = nothing selected".
93
+ * Default is true
94
+ * */
95
+ selectedAllEqualsSelectedNothing?: boolean;
91
96
  /** @deprecated use cleanable = false and removable = false instead */
92
97
  required?: boolean;
93
98
  cleanable: boolean;
@@ -25,6 +25,7 @@ export declare class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectVa
25
25
  get allVisibleOptionsSelected(): boolean;
26
26
  /** true if all options selected */
27
27
  get allOptionsSelected(): boolean;
28
+ get selectedAllEqualsSelectedNothing(): boolean;
28
29
  private get visibleOptions();
29
30
  private selectionAllInProgress;
30
31
  /** @docs-private */
@@ -38,9 +39,12 @@ export declare class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectVa
38
39
  /** @docs-private */
39
40
  toggleSelectionAllByEnterKey(): void;
40
41
  /** @docs-private */
41
- toggleSelectionAll(): void;
42
+ toggleSelectionAll(emitEvent?: boolean): void;
43
+ private emitChangePipeEvent;
42
44
  /** Comparator of selected options */
43
45
  compareByValue: (o1: any, o2: any) => boolean;
46
+ /** handler for select all options in select */
47
+ selectAllHandler: (event: KeyboardEvent) => void;
44
48
  onClose(): void;
45
49
  /** opens select */
46
50
  open(): void;
@@ -28,6 +28,7 @@ export declare class KbqPipeMultiTreeSelectComponent extends KbqBasePipe<KbqSele
28
28
  get numberOfSelectedLeaves(): number;
29
29
  /** true if all options selected */
30
30
  get allOptionsSelected(): boolean;
31
+ get selectedAllEqualsSelectedNothing(): boolean;
31
32
  /** true if all visible options selected */
32
33
  get allVisibleOptionsSelected(): boolean;
33
34
  constructor();
@@ -38,13 +39,16 @@ export declare class KbqPipeMultiTreeSelectComponent extends KbqBasePipe<KbqSele
38
39
  value: any;
39
40
  }): void;
40
41
  searchKeydownHandler(): void;
41
- toggleSelectAllNode(): void;
42
+ toggleSelectAllNode(emitEvent?: boolean): void;
42
43
  /** updates values for selection and value template */
43
44
  updateTemplates: (templates: KbqPipeTemplate[] | null) => void;
44
45
  /** opens select */
45
46
  open(): void;
46
47
  onOpen(): void;
47
48
  onClose(): void;
49
+ /** handler for select all options in select */
50
+ selectAllHandler: (event: KeyboardEvent) => void;
51
+ private emitChangePipeEvent;
48
52
  private toggleParents;
49
53
  private transformer;
50
54
  private getLevel;
@@ -38,7 +38,9 @@ export declare class KbqFormField extends KbqColorDirective implements AfterCont
38
38
  get hasPasswordToggle(): boolean;
39
39
  get canShowCleaner(): boolean;
40
40
  get disabled(): boolean;
41
- get canShowStepper(): boolean;
41
+ /** @deprecated stepper should be always visible when provided, so this parameter is redundant,
42
+ * use `hasStepper` instead */
43
+ canShowStepper: boolean;
42
44
  constructor(changeDetectorRef: ChangeDetectorRef, focusMonitor: FocusMonitor);
43
45
  ngAfterContentInit(): void;
44
46
  ngAfterContentChecked(): void;
@@ -1,11 +1,25 @@
1
1
  import { EventEmitter } from '@angular/core';
2
+ import { KbqFormFieldControl } from './form-field-control';
2
3
  import * as i0 from "@angular/core";
4
+ /**
5
+ * Used as temporary solution to resolve circular dependency.
6
+ * Moving `KbqStepper` to standalone will resolve the issue
7
+ */
8
+ type KbqNumberInput = KbqFormFieldControl<unknown> & {
9
+ stepUp: (val: number) => void;
10
+ stepDown: (val: number) => void;
11
+ step: number;
12
+ };
3
13
  export declare class KbqStepper {
14
+ private readonly formField;
4
15
  readonly stepUp: EventEmitter<void>;
5
16
  readonly stepDown: EventEmitter<void>;
6
- connectTo(numberInput: any): void;
17
+ /** Form field number control. */
18
+ protected get control(): KbqNumberInput;
19
+ connectTo(numberInput: KbqNumberInput): void;
7
20
  onStepUp($event: MouseEvent): void;
8
21
  onStepDown($event: MouseEvent): void;
9
22
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqStepper, never>;
10
23
  static ɵcmp: i0.ɵɵComponentDeclaration<KbqStepper, "kbq-stepper", never, {}, { "stepUp": "stepUp"; "stepDown": "stepDown"; }, never, never, false, never>;
11
24
  }
25
+ export {};