ngwr 5.0.3 → 6.1.1

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 (160) hide show
  1. package/alert/index.d.ts +30 -3
  2. package/avatar/index.d.ts +30 -5
  3. package/button/index.d.ts +43 -3
  4. package/cdk/index.d.ts +22 -3
  5. package/cdk/rxjs/index.d.ts +38 -3
  6. package/cdk/types/index.d.ts +25 -3
  7. package/cdk/utils/index.d.ts +12 -3
  8. package/checkbox/index.d.ts +29 -3
  9. package/dialog/index.d.ts +191 -3
  10. package/divider/index.d.ts +16 -5
  11. package/dropdown/index.d.ts +68 -0
  12. package/dropdown/styles/_index.scss +91 -0
  13. package/dropdown/styles/vars.scss +18 -0
  14. package/fesm2022/ngwr-alert.mjs +8 -28
  15. package/fesm2022/ngwr-alert.mjs.map +1 -1
  16. package/fesm2022/ngwr-avatar.mjs +8 -28
  17. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  18. package/fesm2022/ngwr-button.mjs +10 -31
  19. package/fesm2022/ngwr-button.mjs.map +1 -1
  20. package/fesm2022/ngwr-cdk.mjs +9 -4
  21. package/fesm2022/ngwr-cdk.mjs.map +1 -1
  22. package/fesm2022/ngwr-checkbox.mjs +7 -26
  23. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  24. package/fesm2022/ngwr-dialog.mjs +135 -159
  25. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  26. package/fesm2022/ngwr-divider.mjs +5 -19
  27. package/fesm2022/ngwr-divider.mjs.map +1 -1
  28. package/fesm2022/ngwr-dropdown.mjs +315 -0
  29. package/fesm2022/ngwr-dropdown.mjs.map +1 -0
  30. package/fesm2022/ngwr-form.mjs +8 -29
  31. package/fesm2022/ngwr-form.mjs.map +1 -1
  32. package/fesm2022/ngwr-icon.mjs +11 -32
  33. package/fesm2022/ngwr-icon.mjs.map +1 -1
  34. package/fesm2022/ngwr-input.mjs +12 -32
  35. package/fesm2022/ngwr-input.mjs.map +1 -1
  36. package/fesm2022/ngwr-pagination.mjs +125 -0
  37. package/fesm2022/ngwr-pagination.mjs.map +1 -0
  38. package/fesm2022/ngwr-pipes.mjs +5 -25
  39. package/fesm2022/ngwr-pipes.mjs.map +1 -1
  40. package/fesm2022/ngwr-progress.mjs +6 -25
  41. package/fesm2022/ngwr-progress.mjs.map +1 -1
  42. package/fesm2022/ngwr-qr.mjs +15 -37
  43. package/fesm2022/ngwr-qr.mjs.map +1 -1
  44. package/fesm2022/ngwr-select.mjs +405 -0
  45. package/fesm2022/ngwr-select.mjs.map +1 -0
  46. package/fesm2022/ngwr-skeleton.mjs +5 -19
  47. package/fesm2022/ngwr-skeleton.mjs.map +1 -1
  48. package/fesm2022/ngwr-spinner.mjs +16 -28
  49. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  50. package/fesm2022/ngwr-table.mjs +258 -0
  51. package/fesm2022/ngwr-table.mjs.map +1 -0
  52. package/fesm2022/ngwr-tag.mjs +7 -21
  53. package/fesm2022/ngwr-tag.mjs.map +1 -1
  54. package/fesm2022/ngwr-textarea.mjs +8 -27
  55. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  56. package/form/index.d.ts +26 -3
  57. package/icon/index.d.ts +828 -3
  58. package/index.d.ts +2 -5
  59. package/input/index.d.ts +41 -3
  60. package/package.json +35 -7
  61. package/pagination/index.d.ts +34 -0
  62. package/pagination/styles/_index.scss +60 -0
  63. package/pagination/styles/vars.scss +14 -0
  64. package/pipes/index.d.ts +15 -3
  65. package/progress/index.d.ts +13 -5
  66. package/qr/index.d.ts +127 -5
  67. package/select/index.d.ts +121 -0
  68. package/select/styles/_index.scss +237 -0
  69. package/select/styles/vars.scss +32 -0
  70. package/skeleton/index.d.ts +13 -2
  71. package/spinner/index.d.ts +23 -2
  72. package/spinner/styles/_index.scss +10 -3
  73. package/styles.scss +4 -0
  74. package/table/index.d.ts +101 -0
  75. package/table/styles/_index.scss +4 -0
  76. package/table/styles/table-filter.scss +202 -0
  77. package/table/styles/table-sort.scss +47 -0
  78. package/table/styles/table.scss +232 -0
  79. package/table/styles/vars.scss +21 -0
  80. package/tag/index.d.ts +24 -5
  81. package/textarea/index.d.ts +44 -4
  82. package/alert/alert-type.d.ts +0 -7
  83. package/alert/alert.component.d.ts +0 -21
  84. package/alert/alert.module.d.ts +0 -7
  85. package/alert/public-api.d.ts +0 -9
  86. package/avatar/avatar.component.d.ts +0 -27
  87. package/avatar/avatar.module.d.ts +0 -7
  88. package/avatar/public-api.d.ts +0 -8
  89. package/button/button-group.component.d.ts +0 -12
  90. package/button/button.component.d.ts +0 -31
  91. package/button/button.module.d.ts +0 -8
  92. package/button/public-api.d.ts +0 -9
  93. package/cdk/base.directive.d.ts +0 -15
  94. package/cdk/public-api.d.ts +0 -7
  95. package/cdk/rxjs/is-array.d.ts +0 -8
  96. package/cdk/rxjs/is-defined.d.ts +0 -8
  97. package/cdk/rxjs/is-not-empty-array.d.ts +0 -8
  98. package/cdk/rxjs/is-observable.d.ts +0 -9
  99. package/cdk/rxjs/public-api.d.ts +0 -10
  100. package/cdk/types/maybe.d.ts +0 -7
  101. package/cdk/types/public-api.d.ts +0 -9
  102. package/cdk/types/safe-any.d.ts +0 -7
  103. package/cdk/types/theme-color.d.ts +0 -8
  104. package/cdk/utils/generate-random-id.d.ts +0 -12
  105. package/cdk/utils/public-api.d.ts +0 -7
  106. package/checkbox/checkbox.component.d.ts +0 -28
  107. package/checkbox/checkbox.module.d.ts +0 -7
  108. package/checkbox/public-api.d.ts +0 -8
  109. package/dialog/dialog-animations.d.ts +0 -22
  110. package/dialog/dialog-base.directive.d.ts +0 -40
  111. package/dialog/dialog-close.directive.d.ts +0 -9
  112. package/dialog/dialog-content.directive.d.ts +0 -6
  113. package/dialog/dialog-data.token.d.ts +0 -8
  114. package/dialog/dialog-footer.directive.d.ts +0 -8
  115. package/dialog/dialog-options.d.ts +0 -19
  116. package/dialog/dialog-ref.d.ts +0 -26
  117. package/dialog/dialog-title.directive.d.ts +0 -6
  118. package/dialog/dialog.component.d.ts +0 -28
  119. package/dialog/dialog.module.d.ts +0 -11
  120. package/dialog/dialog.service.d.ts +0 -28
  121. package/dialog/public-api.d.ts +0 -18
  122. package/divider/divider.component.d.ts +0 -13
  123. package/divider/divider.module.d.ts +0 -7
  124. package/divider/public-api.d.ts +0 -8
  125. package/form/form-error.component.d.ts +0 -11
  126. package/form/form-item.component.d.ts +0 -14
  127. package/form/form.module.d.ts +0 -8
  128. package/form/public-api.d.ts +0 -9
  129. package/icon/icon.component.d.ts +0 -24
  130. package/icon/icon.module.d.ts +0 -7
  131. package/icon/icon.service.d.ts +0 -23
  132. package/icon/icons.d.ts +0 -770
  133. package/icon/provide-wr-icons.d.ts +0 -9
  134. package/icon/public-api.d.ts +0 -11
  135. package/input/input-types.d.ts +0 -1
  136. package/input/input.component.d.ts +0 -38
  137. package/input/input.module.d.ts +0 -7
  138. package/input/public-api.d.ts +0 -9
  139. package/pipes/new-array.pipe.d.ts +0 -13
  140. package/pipes/pipes.module.d.ts +0 -7
  141. package/pipes/public-api.d.ts +0 -8
  142. package/progress/progress.component.d.ts +0 -10
  143. package/progress/progress.module.d.ts +0 -7
  144. package/progress/public-api.d.ts +0 -8
  145. package/public-api.d.ts +0 -2
  146. package/qr/generator.d.ts +0 -7
  147. package/qr/public-api.d.ts +0 -8
  148. package/qr/qr.component.d.ts +0 -31
  149. package/qr/qr.module.d.ts +0 -7
  150. package/qr/qrcodegen.d.ts +0 -94
  151. package/skeleton/skeleton.component.d.ts +0 -10
  152. package/skeleton/skeleton.module.d.ts +0 -7
  153. package/spinner/spinner.component.d.ts +0 -11
  154. package/spinner/spinner.module.d.ts +0 -7
  155. package/tag/public-api.d.ts +0 -8
  156. package/tag/tag.component.d.ts +0 -21
  157. package/tag/tag.module.d.ts +0 -7
  158. package/textarea/public-api.d.ts +0 -8
  159. package/textarea/textarea.component.d.ts +0 -44
  160. package/textarea/textarea.module.d.ts +0 -7
@@ -0,0 +1,237 @@
1
+ @forward './vars';
2
+
3
+ .wr-select {
4
+ position: relative;
5
+ width: 100%;
6
+
7
+ color: var(--wr-select-color);
8
+ font-size: var(--wr-select-font-size);
9
+ font-weight: var(--wr-select-font-weight);
10
+ line-height: var(--wr-select-line-height);
11
+
12
+ background-color: var(--wr-select-bg-color);
13
+ border: 1px solid var(--wr-select-border-color);
14
+ border-radius: var(--wr-select-border-radius);
15
+ box-shadow: var(--wr-select-box-shadow);
16
+
17
+ transition: var(--wr-transition-base);
18
+
19
+ &--disabled {
20
+ opacity: 0.6;
21
+ cursor: not-allowed;
22
+ pointer-events: none;
23
+ }
24
+
25
+ &--focused {
26
+ --wr-select-border-color: var(--wr-color-primary);
27
+ --wr-select-box-shadow: 0 0 0 3px rgba(var(--wr-color-primary-rgb), 0.125);
28
+ }
29
+
30
+ &__trigger {
31
+ display: flex;
32
+ align-items: center;
33
+ padding: var(--wr-select-padding-y) var(--wr-select-padding-x);
34
+ cursor: pointer;
35
+ min-height: var(--wr-select-option-height);
36
+ }
37
+
38
+ &__value {
39
+ display: flex;
40
+ flex: 1;
41
+ min-width: 0;
42
+ margin-right: 8px;
43
+
44
+ &:empty::before {
45
+ content: attr(placeholder);
46
+ color: var(--wr-select-placeholder-color);
47
+ }
48
+
49
+ wr-tag {
50
+ line-height: var(--wr-select-tag-line-height);
51
+ }
52
+ }
53
+
54
+ &__arrow {
55
+ --wr-icon-size: 1rem;
56
+ transition: transform 0.2s;
57
+
58
+ .wr-select--open & {
59
+ transform: rotate(180deg);
60
+ }
61
+ }
62
+
63
+ &__dropdown {
64
+ position: absolute;
65
+ top: 100%;
66
+ left: 0;
67
+ right: 0;
68
+ z-index: 1000;
69
+ margin-top: 4px;
70
+
71
+ background: var(--wr-select-dropdown-bg);
72
+ border: 1px solid var(--wr-select-dropdown-border-color);
73
+ border-radius: var(--wr-select-border-radius);
74
+ box-shadow: var(--wr-select-dropdown-shadow);
75
+
76
+ opacity: 0;
77
+ visibility: hidden;
78
+ transform: translateY(-10px);
79
+ transition: var(--wr-transition-base);
80
+
81
+ &--open {
82
+ opacity: 1;
83
+ visibility: visible;
84
+ transform: translateY(0);
85
+ }
86
+
87
+ &-content {
88
+ max-height: var(--wr-select-dropdown-max-height);
89
+ overflow-y: auto;
90
+ }
91
+ }
92
+
93
+ &__counter {
94
+ display: inline-flex;
95
+ align-items: center;
96
+ margin-right: 4px;
97
+ margin-left: auto;
98
+ padding: 2px 6px;
99
+ font-size: var(--wr-select-counter-font-size);
100
+ color: var(--wr-color-medium);
101
+ border-radius: var(--wr-select-tag-border-radius);
102
+ }
103
+
104
+ &__tags {
105
+ display: flex;
106
+ flex-wrap: wrap;
107
+ gap: 4px;
108
+ align-items: center;
109
+ width: 100%;
110
+
111
+ &-container {
112
+ display: flex;
113
+ flex-wrap: wrap;
114
+ gap: 4px;
115
+ }
116
+ }
117
+
118
+ &__tag {
119
+ &-remove {
120
+ display: inline-flex;
121
+ align-items: center;
122
+ justify-content: center;
123
+ width: 16px;
124
+ height: var(--wr-select-tag-line-height);
125
+ margin-right: -3px;
126
+ padding: 0;
127
+ font-size: 14px;
128
+ background: none;
129
+ border: none;
130
+ border-radius: 50%;
131
+ cursor: pointer;
132
+ }
133
+ }
134
+
135
+ &__search-wrapper {
136
+ padding: var(--wr-select-padding-y) var(--wr-select-padding-x);
137
+ border-bottom: 1px solid var(--wr-select-border-color);
138
+ }
139
+
140
+ &__search {
141
+ flex: 1;
142
+ min-width: 50px;
143
+ border: none;
144
+ background: none;
145
+ outline: none;
146
+ padding: 0;
147
+ font-size: inherit;
148
+ font-family: inherit;
149
+ color: inherit;
150
+
151
+ &::placeholder {
152
+ color: var(--wr-select-placeholder-color);
153
+ }
154
+ }
155
+
156
+ &__clear {
157
+ display: flex;
158
+ align-items: center;
159
+ justify-content: center;
160
+ padding: 0;
161
+ margin: 0 8px 0 0;
162
+ border: none;
163
+ background: none;
164
+ cursor: pointer;
165
+ color: var(--wr-color-medium);
166
+ transition: color 0.2s;
167
+
168
+ &:hover {
169
+ color: var(--wr-color-dark);
170
+ }
171
+
172
+ wr-icon {
173
+ --wr-icon-size: 16px;
174
+ }
175
+
176
+ &--multiple {
177
+ margin-left: auto;
178
+ }
179
+ }
180
+
181
+ &__no-data {
182
+ padding: var(--wr-select-padding-y) var(--wr-select-padding-x);
183
+ color: var(--wr-select-placeholder-color);
184
+ text-align: center;
185
+ }
186
+ }
187
+
188
+ .wr-option {
189
+ display: block;
190
+ padding: var(--wr-select-padding-y) var(--wr-select-padding-x);
191
+ cursor: pointer;
192
+ transition: background-color 0.2s;
193
+ min-height: var(--wr-select-option-height);
194
+
195
+ &__content {
196
+ display: flex;
197
+ align-items: center;
198
+ height: 100%;
199
+ }
200
+
201
+ &:hover:not(&--disabled) {
202
+ background-color: var(--wr-select-option-hover-bg);
203
+ }
204
+
205
+ &--selected {
206
+ color: var(--wr-select-option-selected-color);
207
+ background-color: var(--wr-select-option-selected-bg);
208
+ }
209
+
210
+ &--disabled {
211
+ color: var(--wr-select-option-disabled-color);
212
+ cursor: not-allowed;
213
+ }
214
+
215
+ &--highlighted {
216
+ background-color: var(--wr-select-option-hover-bg);
217
+ }
218
+
219
+ &--filtered {
220
+ display: none;
221
+ }
222
+ }
223
+
224
+ .wr-select-group {
225
+ &__label {
226
+ padding: var(--wr-select-padding-y) var(--wr-select-padding-x);
227
+ color: var(--wr-select-group-label-color);
228
+ font-size: var(--wr-select-group-label-font-size);
229
+ }
230
+
231
+ &__content {
232
+ }
233
+
234
+ &--disabled {
235
+ opacity: 0.6;
236
+ }
237
+ }
@@ -0,0 +1,32 @@
1
+ :root {
2
+ --wr-select-color: var(--wr-color-dark);
3
+ --wr-select-placeholder-color: var(--wr-color-light);
4
+ --wr-select-bg-color: var(--wr-color-white);
5
+ --wr-select-border-color: var(--wr-color-light-lighter);
6
+ --wr-select-border-radius: 0.375rem;
7
+ --wr-select-box-shadow: none;
8
+ --wr-select-font-size: 0.875rem;
9
+ --wr-select-font-weight: 400;
10
+ --wr-select-line-height: 1.25rem;
11
+ --wr-select-padding-y: 0.375rem;
12
+ --wr-select-padding-x: 0.825rem;
13
+
14
+ --wr-select-dropdown-bg: var(--wr-color-white);
15
+ --wr-select-dropdown-border-color: var(--wr-color-light-lighter);
16
+ --wr-select-dropdown-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
17
+ --wr-select-dropdown-max-height: 256px;
18
+
19
+ --wr-select-option-hover-bg: rgba(var(--wr-color-light-rgb), 0.2);
20
+ --wr-select-option-selected-color: var(--wr-color-dark);
21
+ --wr-select-option-selected-bg: rgba(var(--wr-color-primary-rgb), 0.1);
22
+ --wr-select-option-disabled-color: var(--wr-color-medium);
23
+ --wr-select-option-height: 32px;
24
+
25
+ --wr-select-group-label-color: var(--wr-color-medium);
26
+ --wr-select-group-label-font-size: 0.75rem;
27
+
28
+ --wr-select-counter-color: var(--wr-color-medium);
29
+ --wr-select-counter-font-size: 0.775rem;
30
+
31
+ --wr-select-tag-line-height: 0.8rem;
32
+ }
@@ -1,2 +1,13 @@
1
- export * from './skeleton.component';
2
- export * from './skeleton.module';
1
+ import { WrThemeColor, SafeAny } from 'ngwr/cdk/types';
2
+ import * as i0 from '@angular/core';
3
+
4
+ declare class WrSkeletonComponent {
5
+ color: WrThemeColor;
6
+ animated: boolean;
7
+ get elClasses(): SafeAny;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<WrSkeletonComponent, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<WrSkeletonComponent, "wr-skeleton", never, { "color": { "alias": "color"; "required": false; }; "animated": { "alias": "animated"; "required": false; }; }, {}, never, never, true, never>;
10
+ static ngAcceptInputType_animated: unknown;
11
+ }
12
+
13
+ export { WrSkeletonComponent };
@@ -1,2 +1,23 @@
1
- export * from './spinner.component';
2
- export * from './spinner.module';
1
+ import * as i0 from '@angular/core';
2
+
3
+ /**
4
+ * @license
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
8
+ */
9
+ type WrSpinnerSize = 'small' | 'large';
10
+
11
+ /**
12
+ * NGWR spinner component.
13
+ *
14
+ * {@tutorial} [How to use wr-spinner]{@link http://ngwr.dev/docs/components/spinner
15
+ */
16
+ declare class WrSpinnerComponent {
17
+ size: i0.InputSignal<WrSpinnerSize>;
18
+ get hostClasses(): Record<string, boolean>;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<WrSpinnerComponent, never>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<WrSpinnerComponent, "wr-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
21
+ }
22
+
23
+ export { WrSpinnerComponent };
@@ -12,9 +12,6 @@
12
12
 
13
13
  contain: strict;
14
14
 
15
- width: 1em;
16
- height: 1em;
17
-
18
15
  * {
19
16
  line-height: 1;
20
17
  }
@@ -31,4 +28,14 @@
31
28
  animation: dash 1.5s ease-in-out infinite;
32
29
  }
33
30
  }
31
+
32
+ &--small {
33
+ width: 1em;
34
+ height: 1em;
35
+ }
36
+
37
+ &--large {
38
+ width: 2em;
39
+ height: 2em;
40
+ }
34
41
  }
package/styles.scss CHANGED
@@ -21,4 +21,8 @@
21
21
  @forward './spinner/styles';
22
22
  @forward './tag/styles';
23
23
  @forward './textarea/styles';
24
+ @forward './select/styles';
25
+ @forward './dropdown/styles';
26
+ @forward './pagination/styles';
27
+ @forward './table/styles';
24
28
  //@forward './tooltip';
@@ -0,0 +1,101 @@
1
+ import { SafeAny } from 'ngwr/cdk/types';
2
+ import * as _angular_core from '@angular/core';
3
+ import { AfterContentInit, EventEmitter, TemplateRef, OnInit } from '@angular/core';
4
+ import { FormControl } from '@angular/forms';
5
+ import { WrAbstractBase } from 'ngwr/cdk';
6
+
7
+ interface WrTableFilterItem<T = SafeAny> {
8
+ title: string;
9
+ value: T;
10
+ isSelected?: boolean;
11
+ }
12
+
13
+ interface WrTableColumn {
14
+ title: string;
15
+ sortable?: boolean;
16
+ filterItems?: WrTableFilterItem[];
17
+ }
18
+ type WrTableColumns = Record<string, WrTableColumn>;
19
+
20
+ interface WrTableFilterEmit {
21
+ key: string;
22
+ items: WrTableFilterItem[];
23
+ }
24
+
25
+ declare enum WrTableOrder {
26
+ REMOVE = 0,
27
+ ASC = 1,
28
+ DESC = 2
29
+ }
30
+
31
+ interface WrTableOrderItem {
32
+ key: string;
33
+ order: WrTableOrder;
34
+ }
35
+
36
+ interface WrTableCellContext {
37
+ $implicit: unknown;
38
+ item: Record<string, unknown>;
39
+ column: WrTableColumn;
40
+ }
41
+
42
+ declare class WrTableComponent implements AfterContentInit {
43
+ columns: _angular_core.InputSignal<WrTableColumns>;
44
+ items: _angular_core.InputSignal<any[] | undefined>;
45
+ loading: _angular_core.InputSignal<boolean | undefined>;
46
+ pagination: _angular_core.InputSignal<boolean>;
47
+ total: _angular_core.InputSignalWithTransform<number, unknown>;
48
+ currentPage: _angular_core.ModelSignal<number>;
49
+ pageSize: _angular_core.ModelSignal<number>;
50
+ pageSizeOptions: _angular_core.InputSignal<number[]>;
51
+ ordering: _angular_core.ModelSignal<WrTableOrderItem[] | undefined>;
52
+ readonly filterChange: EventEmitter<WrTableFilterEmit>;
53
+ get styles(): Record<string, string | number>;
54
+ onKeypress(evt: KeyboardEvent): void;
55
+ private customCells;
56
+ private cellTemplates;
57
+ ngAfterContentInit(): void;
58
+ protected getCellTemplate(columnKey: string): TemplateRef<WrTableCellContext> | null;
59
+ protected hasCellTemplate(columnKey: string): boolean;
60
+ /**
61
+ * We need to pass null to save original order for keyvalue pipe
62
+ * https://angular.dev/api/common/KeyValuePipe?tab=description
63
+ */
64
+ protected readonly keepOrder: () => SafeAny;
65
+ protected getOrder(key: string): WrTableOrder;
66
+ protected onOrderChange(key: string): void;
67
+ protected onFilterChange(key: string, items: WrTableFilterItem[]): void;
68
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrTableComponent, never>;
69
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrTableComponent, "wr-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "ordering": { "alias": "ordering"; "required": false; "isSignal": true; }; }, { "currentPage": "currentPageChange"; "pageSize": "pageSizeChange"; "ordering": "orderingChange"; "filterChange": "filterChange"; }, ["customCells"], never, true, never>;
70
+ }
71
+
72
+ declare class WrTableCellDirective {
73
+ columnKey: _angular_core.InputSignal<string>;
74
+ template: TemplateRef<any>;
75
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrTableCellDirective, never>;
76
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<WrTableCellDirective, "[wrTableCell]", never, { "columnKey": { "alias": "wrTableCell"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
77
+ }
78
+
79
+ declare class WrTableFilterComponent extends WrAbstractBase implements OnInit {
80
+ items: _angular_core.InputSignal<WrTableFilterItem<any>[]>;
81
+ readonly selectedItems: EventEmitter<WrTableFilterItem<any>[]>;
82
+ protected readonly search: FormControl<string | null>;
83
+ protected readonly filteredItems: _angular_core.WritableSignal<WrTableFilterItem<any>[]>;
84
+ protected get length(): number;
85
+ ngOnInit(): void;
86
+ onItemSelect(item: WrTableFilterItem): void;
87
+ onResetClick(): void;
88
+ getSelectedItems(): void;
89
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrTableFilterComponent, never>;
90
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrTableFilterComponent, "wr-table-filter", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; }, { "selectedItems": "selectedItems"; }, never, never, true, never>;
91
+ }
92
+
93
+ declare class WrTableSortComponent {
94
+ order: _angular_core.InputSignal<WrTableOrder | undefined>;
95
+ protected readonly TableOrder: typeof WrTableOrder;
96
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrTableSortComponent, never>;
97
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrTableSortComponent, "wr-table-sort", never, { "order": { "alias": "order"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
98
+ }
99
+
100
+ export { WrTableCellDirective, WrTableComponent, WrTableFilterComponent, WrTableOrder, WrTableSortComponent };
101
+ export type { WrTableCellContext, WrTableColumn, WrTableColumns, WrTableFilterEmit, WrTableFilterItem, WrTableOrderItem };
@@ -0,0 +1,4 @@
1
+ @forward "./vars";
2
+ @forward "./table";
3
+ @forward "./table-filter";
4
+ @forward "./table-sort";
@@ -0,0 +1,202 @@
1
+ @forward "./vars";
2
+
3
+ .wr-table-filter {
4
+ &--active {
5
+ --wr-table-filter-color: var(--wr-color-medium);
6
+ --wr-table-filter-bg: rgba(var(--wr-color-light-rgb), 0.5);
7
+ }
8
+
9
+ &-icon {
10
+ display: inline-flex;
11
+ flex-direction: column;
12
+ align-items: center;
13
+ justify-content: center;
14
+
15
+ width: calc(var(--wr-table-filter-size) + var(--wr-table-filter-padding));
16
+ height: calc(var(--wr-table-filter-size) + var(--wr-table-filter-padding));
17
+ padding: var(--wr-table-filter-padding);
18
+
19
+ background: var(--wr-table-filter-bg);
20
+ border-radius: 0.25rem;
21
+
22
+ transition: var(--wr-transition-base);
23
+
24
+ &:hover {
25
+ --wr-table-filter-color: var(--wr-color-primary);
26
+ --wr-table-filter-bg: rgba(var(--wr-color-primary-rgb), 0.125);
27
+
28
+ cursor: pointer;
29
+ }
30
+
31
+ &__icon {
32
+ --wr-icon-size: 70%;
33
+
34
+ color: var(--wr-table-filter-color);
35
+ transition: var(--wr-transition-base);
36
+ }
37
+ }
38
+
39
+ &-dropdown {
40
+ display: flex;
41
+ flex-direction: column;
42
+ align-items: stretch;
43
+
44
+ background-color: var(--wr-color-white);
45
+ border-radius: calc(var(--wr-border-radius-base) / 2);
46
+ box-shadow: var(--wr-shadow-md);
47
+
48
+ overflow: hidden;
49
+
50
+ &__input {
51
+ display: block;
52
+ width: 100%;
53
+
54
+ color: var(--wr-color-dark);
55
+ background: var(--wr-color-white);
56
+ border-bottom: 1px solid var(--wr-color-light-lighter);
57
+
58
+ font-size: 0.875rem;
59
+ line-height: 1.25rem;
60
+
61
+ padding: 0.375rem 0.5rem;
62
+
63
+ &::placeholder {
64
+ color: var(--wr-color-medium);
65
+ font-weight: 400;
66
+ font-style: italic;
67
+ }
68
+ }
69
+
70
+ &__reset {
71
+ display: flex;
72
+ flex-direction: column;
73
+ align-items: center;
74
+ justify-content: center;
75
+
76
+ color: var(--wr-color-medium);
77
+
78
+ font-size: 0.75rem;
79
+ font-weight: 500;
80
+ line-height: 0.875rem;
81
+
82
+ border-top: 1px solid var(--wr-color-light-lighter);
83
+ padding: calc(var(--wr-grid-gutter) / 3) var(--wr-table-filter-padding);
84
+
85
+ transition: var(--wr-transition-base);
86
+
87
+ &:hover {
88
+ color: var(--wr-color-primary);
89
+ cursor: pointer;
90
+ }
91
+ }
92
+
93
+ &__body {
94
+ display: grid;
95
+ grid-template-columns: 1fr;
96
+ align-content: flex-start;
97
+
98
+ padding-left: var(--wr-table-filter-dd-padding);
99
+ padding-right: var(--wr-table-filter-dd-padding);
100
+
101
+ max-height: calc(var(--wr-table-filter-dd-max-items) * var(--wr-table-filter-dd-item-height));
102
+ overflow: auto;
103
+ }
104
+
105
+ &-empty {
106
+ display: flex;
107
+ flex-direction: column;
108
+ align-items: center;
109
+ justify-content: center;
110
+
111
+ height: 10rem;
112
+ width: 100%;
113
+
114
+ &__title {
115
+ color: var(--wr-color-medium);
116
+ font-size: 0.75rem;
117
+ font-weight: 500;
118
+ line-height: 0.875rem;
119
+ }
120
+ }
121
+
122
+ &-item {
123
+ // Checkmark variables
124
+ --wr-table-filter-item-color: var(--wr-color-dark);
125
+ --wr-table-filter-item-checkmark-color: transparent;
126
+ --wr-table-filter-item-checkmark-bg: transparent;
127
+ --wr-table-filter-item-checkmark-border-color: var(--wr-color-light-lighter);
128
+
129
+ display: flex;
130
+ align-items: center;
131
+ justify-content: flex-start;
132
+
133
+ gap: calc(var(--wr-grid-gutter) / 4);
134
+
135
+ width: 100%;
136
+
137
+ border-radius: calc(var(--wr-border-radius-base) / 2);
138
+
139
+ padding-top: var(--wr-table-filter-dd-padding);
140
+ padding-bottom: var(--wr-table-filter-dd-padding);
141
+
142
+ cursor: pointer;
143
+ user-select: none;
144
+ transition: var(--wr-transition-base);
145
+
146
+ &:hover {
147
+ --wr-table-filter-item-color: var(--wr-color-primary);
148
+ --wr-table-filter-item-checkmark-bg: rgba(var(--wr-color-primary-rgb), 0.25);
149
+ --wr-table-filter-item-checkmark-border-color: rgba(var(--wr-color-primary-rgb), 0.125);
150
+ }
151
+
152
+ &--selected {
153
+ --wr-table-filter-item-checkmark-color: var(--wr-color-white);
154
+ --wr-table-filter-item-checkmark-bg: var(--wr-color-primary);
155
+ --wr-table-filter-item-checkmark-border-color: var(--wr-color-primary);
156
+
157
+ &:hover {
158
+ --wr-table-filter-item-checkmark-bg: rgba(var(--wr-color-primary-rgb), 0.75);
159
+ }
160
+ }
161
+
162
+ &-check {
163
+ display: flex;
164
+ flex-direction: column;
165
+ align-items: center;
166
+ justify-content: center;
167
+
168
+ width: 1rem;
169
+ height: 1rem;
170
+
171
+ background: var(--wr-table-filter-item-checkmark-bg);
172
+ border: 1px solid var(--wr-table-filter-item-checkmark-border-color);
173
+ border-radius: calc(var(--wr-border-radius-base) / 3);
174
+
175
+ transition: var(--wr-transition-base);
176
+
177
+ &__icon {
178
+ color: var(--wr-table-filter-item-checkmark-color);
179
+ height: 0.5rem;
180
+ width: 0.5rem;
181
+ transition: var(--wr-transition-base);
182
+ }
183
+ }
184
+
185
+ &__title {
186
+ display: block;
187
+ flex: 1;
188
+
189
+ color: var(--wr-table-filter-item-color);
190
+ font-size: 0.75rem;
191
+ font-weight: 400;
192
+ line-height: 0.875rem;
193
+
194
+ text-overflow: ellipsis;
195
+ overflow: hidden;
196
+ white-space: nowrap;
197
+
198
+ transition: var(--wr-transition-base);
199
+ }
200
+ }
201
+ }
202
+ }
@@ -0,0 +1,47 @@
1
+ @forward "./vars";
2
+
3
+ .wr-table-sort {
4
+ display: inline-flex;
5
+ flex-direction: column;
6
+ align-items: center;
7
+ justify-content: center;
8
+
9
+ width: calc(var(--wr-table-sort-size) + var(--wr-table-sort-padding));
10
+ height: calc(var(--wr-table-sort-size) + var(--wr-table-sort-padding));
11
+ padding: var(--wr-table-sort-padding);
12
+
13
+ background: var(--wr-table-sort-bg);
14
+ border-radius: 0.25rem;
15
+
16
+ transition: var(--wr-transition-base);
17
+
18
+ &:hover {
19
+ --wr-table-sort-color: var(--wr-color-primary);
20
+ --wr-table-sort-bg: rgba(var(--wr-color-primary-rgb), 0.125);
21
+
22
+ cursor: pointer;
23
+ }
24
+
25
+ &--asc,
26
+ &--desc {
27
+ --wr-table-sort-color: var(--wr-color-medium);
28
+ --wr-table-sort-bg: rgba(var(--wr-color-light-rgb), 0.5);
29
+ }
30
+
31
+ &--asc {
32
+ --wr-table-sort-rotate: 0deg;
33
+ }
34
+
35
+ &--desc {
36
+ --wr-table-sort-rotate: 180deg;
37
+ }
38
+
39
+ &__icon {
40
+ --wr-icon-size: var(--wr-table-sort-size);
41
+
42
+ color: var(--wr-table-sort-color);
43
+
44
+ transition: var(--wr-transition-base);
45
+ transform: rotate(var(--wr-table-sort-rotate));
46
+ }
47
+ }