@swimlane/ngx-datatable 20.1.0 → 21.0.0-alpha.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 (139) hide show
  1. package/CHANGELOG.md +720 -0
  2. package/README.md +25 -4
  3. package/assets/app.css +4 -3
  4. package/assets/icons-reference.html +5 -1
  5. package/assets/icons.css +3 -2
  6. package/{fesm2020 → fesm2022}/swimlane-ngx-datatable.mjs +3404 -2536
  7. package/fesm2022/swimlane-ngx-datatable.mjs.map +1 -0
  8. package/index.css +224 -169
  9. package/index.scss +13 -3
  10. package/lib/components/body/body-cell.component.d.ts +28 -23
  11. package/lib/components/body/body-group-header-template.directive.d.ts +3 -4
  12. package/lib/components/body/body-group-header.directive.d.ts +14 -9
  13. package/lib/components/body/body-row-def.component.d.ts +34 -0
  14. package/lib/components/body/body-row-wrapper.component.d.ts +34 -22
  15. package/lib/components/body/body-row.component.d.ts +28 -34
  16. package/lib/components/body/body.component.d.ts +88 -69
  17. package/lib/components/body/ghost-loader/ghost-loader.component.d.ts +12 -0
  18. package/lib/components/body/progress-bar.component.d.ts +1 -1
  19. package/lib/components/body/scroller.component.d.ts +4 -7
  20. package/lib/components/body/selection.component.d.ts +21 -25
  21. package/lib/components/body/summary/summary-row.component.d.ts +4 -3
  22. package/lib/components/columns/column-cell.directive.d.ts +4 -3
  23. package/lib/components/columns/column-ghost-cell.directive.d.ts +6 -0
  24. package/lib/components/columns/column-header.directive.d.ts +3 -4
  25. package/lib/components/columns/column.directive.d.ts +43 -18
  26. package/lib/components/columns/tree.directive.d.ts +1 -2
  27. package/lib/components/datatable.component.d.ts +142 -76
  28. package/lib/components/footer/footer-template.directive.d.ts +3 -4
  29. package/lib/components/footer/footer.component.d.ts +3 -2
  30. package/lib/components/footer/footer.directive.d.ts +6 -4
  31. package/lib/components/footer/pager.component.d.ts +6 -4
  32. package/lib/components/header/header-cell.component.d.ts +18 -18
  33. package/lib/components/header/header.component.d.ts +41 -36
  34. package/lib/components/row-detail/row-detail-template.directive.d.ts +3 -4
  35. package/lib/components/row-detail/row-detail.directive.d.ts +9 -8
  36. package/lib/directives/disable-row.directive.d.ts +22 -0
  37. package/lib/directives/draggable.directive.d.ts +11 -8
  38. package/lib/directives/long-press.directive.d.ts +16 -5
  39. package/lib/directives/orderable.directive.d.ts +21 -10
  40. package/lib/directives/resizeable.directive.d.ts +7 -5
  41. package/lib/directives/visibility.directive.d.ts +2 -3
  42. package/lib/ngx-datatable.module.d.ts +29 -30
  43. package/lib/services/scrollbar-helper.service.d.ts +0 -1
  44. package/lib/types/internal.types.d.ts +31 -0
  45. package/lib/types/public.types.d.ts +142 -0
  46. package/lib/types/table-column.type.d.ts +39 -66
  47. package/lib/utils/column-helper.d.ts +2 -2
  48. package/lib/utils/column-prop-getters.d.ts +1 -1
  49. package/lib/utils/column.d.ts +7 -14
  50. package/lib/utils/keys.d.ts +6 -6
  51. package/lib/utils/math.d.ts +4 -3
  52. package/lib/utils/selection.d.ts +2 -2
  53. package/lib/utils/sort.d.ts +5 -5
  54. package/lib/utils/table-token.d.ts +7 -0
  55. package/lib/utils/tree.d.ts +2 -2
  56. package/package.json +9 -17
  57. package/public-api.d.ts +4 -11
  58. package/themes/_ghost.scss +22 -0
  59. package/themes/_rows.scss +22 -0
  60. package/themes/bootstrap.css +117 -65
  61. package/themes/bootstrap.scss +27 -3
  62. package/themes/dark.css +101 -70
  63. package/themes/dark.scss +12 -0
  64. package/themes/material.css +344 -260
  65. package/themes/material.scss +52 -11
  66. package/esm2020/lib/components/body/body-cell.component.mjs +0 -432
  67. package/esm2020/lib/components/body/body-group-header-template.directive.mjs +0 -16
  68. package/esm2020/lib/components/body/body-group-header.directive.mjs +0 -62
  69. package/esm2020/lib/components/body/body-row-wrapper.component.mjs +0 -140
  70. package/esm2020/lib/components/body/body-row.component.mjs +0 -262
  71. package/esm2020/lib/components/body/body.component.mjs +0 -863
  72. package/esm2020/lib/components/body/progress-bar.component.mjs +0 -27
  73. package/esm2020/lib/components/body/scroller.component.mjs +0 -91
  74. package/esm2020/lib/components/body/selection.component.mjs +0 -150
  75. package/esm2020/lib/components/body/summary/summary-row.component.mjs +0 -105
  76. package/esm2020/lib/components/columns/column-cell.directive.mjs +0 -14
  77. package/esm2020/lib/components/columns/column-header.directive.mjs +0 -14
  78. package/esm2020/lib/components/columns/column.directive.mjs +0 -98
  79. package/esm2020/lib/components/columns/tree.directive.mjs +0 -14
  80. package/esm2020/lib/components/datatable.component.mjs +0 -1008
  81. package/esm2020/lib/components/footer/footer-template.directive.mjs +0 -14
  82. package/esm2020/lib/components/footer/footer.component.mjs +0 -128
  83. package/esm2020/lib/components/footer/footer.directive.mjs +0 -35
  84. package/esm2020/lib/components/footer/pager.component.mjs +0 -181
  85. package/esm2020/lib/components/header/header-cell.component.mjs +0 -243
  86. package/esm2020/lib/components/header/header.component.mjs +0 -376
  87. package/esm2020/lib/components/row-detail/row-detail-template.directive.mjs +0 -16
  88. package/esm2020/lib/components/row-detail/row-detail.directive.mjs +0 -63
  89. package/esm2020/lib/directives/draggable.directive.mjs +0 -108
  90. package/esm2020/lib/directives/long-press.directive.mjs +0 -117
  91. package/esm2020/lib/directives/orderable.directive.mjs +0 -136
  92. package/esm2020/lib/directives/resizeable.directive.mjs +0 -93
  93. package/esm2020/lib/directives/visibility.directive.mjs +0 -63
  94. package/esm2020/lib/events.mjs +0 -7
  95. package/esm2020/lib/ngx-datatable.module.mjs +0 -139
  96. package/esm2020/lib/services/column-changes.service.mjs +0 -24
  97. package/esm2020/lib/services/dimensions-helper.service.mjs +0 -17
  98. package/esm2020/lib/services/scrollbar-helper.service.mjs +0 -37
  99. package/esm2020/lib/types/click.type.mjs +0 -6
  100. package/esm2020/lib/types/column-mode.type.mjs +0 -7
  101. package/esm2020/lib/types/contextmenu.type.mjs +0 -6
  102. package/esm2020/lib/types/selection.type.mjs +0 -9
  103. package/esm2020/lib/types/sort-direction.type.mjs +0 -6
  104. package/esm2020/lib/types/sort-prop-dir.type.mjs +0 -2
  105. package/esm2020/lib/types/sort.type.mjs +0 -6
  106. package/esm2020/lib/types/table-column.type.mjs +0 -2
  107. package/esm2020/lib/utils/camel-case.mjs +0 -28
  108. package/esm2020/lib/utils/column-helper.mjs +0 -95
  109. package/esm2020/lib/utils/column-prop-getters.mjs +0 -96
  110. package/esm2020/lib/utils/column.mjs +0 -69
  111. package/esm2020/lib/utils/elm-from-point.mjs +0 -38
  112. package/esm2020/lib/utils/id.mjs +0 -8
  113. package/esm2020/lib/utils/keys.mjs +0 -10
  114. package/esm2020/lib/utils/math.mjs +0 -146
  115. package/esm2020/lib/utils/prefixes.mjs +0 -38
  116. package/esm2020/lib/utils/row-height-cache.mjs +0 -138
  117. package/esm2020/lib/utils/selection.mjs +0 -40
  118. package/esm2020/lib/utils/sort.mjs +0 -127
  119. package/esm2020/lib/utils/throttle.mjs +0 -60
  120. package/esm2020/lib/utils/translate.mjs +0 -25
  121. package/esm2020/lib/utils/tree.mjs +0 -103
  122. package/esm2020/public-api.mjs +0 -64
  123. package/esm2020/swimlane-ngx-datatable.mjs +0 -5
  124. package/fesm2015/swimlane-ngx-datatable.mjs +0 -5979
  125. package/fesm2015/swimlane-ngx-datatable.mjs.map +0 -1
  126. package/fesm2020/swimlane-ngx-datatable.mjs.map +0 -1
  127. package/lib/events.d.ts +0 -3
  128. package/lib/services/dimensions-helper.service.d.ts +0 -10
  129. package/lib/types/click.type.d.ts +0 -4
  130. package/lib/types/column-mode.type.d.ts +0 -5
  131. package/lib/types/contextmenu.type.d.ts +0 -4
  132. package/lib/types/selection.type.d.ts +0 -7
  133. package/lib/types/sort-direction.type.d.ts +0 -4
  134. package/lib/types/sort-prop-dir.type.d.ts +0 -6
  135. package/lib/types/sort.type.d.ts +0 -4
  136. package/lib/utils/elm-from-point.d.ts +0 -8
  137. package/lib/utils/prefixes.d.ts +0 -1
  138. package/lib/utils/translate.d.ts +0 -1
  139. /package/{swimlane-ngx-datatable.d.ts → index.d.ts} +0 -0
package/index.css CHANGED
@@ -27,172 +27,227 @@
27
27
  */
28
28
  /**
29
29
  * Footer Styles
30
- */ }
31
- .ngx-datatable [hidden] {
32
- display: none !important; }
33
- .ngx-datatable *,
34
- .ngx-datatable *:before,
35
- .ngx-datatable *:after {
36
- -moz-box-sizing: border-box;
37
- -webkit-box-sizing: border-box;
38
- box-sizing: border-box; }
39
- .ngx-datatable.scroll-vertical .datatable-body {
40
- overflow-y: auto; }
41
- .ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper {
42
- position: absolute; }
43
- .ngx-datatable.scroll-horz .datatable-body {
44
- overflow-x: auto;
45
- -webkit-overflow-scrolling: touch; }
46
- .ngx-datatable.fixed-header .datatable-header .datatable-header-inner {
47
- white-space: nowrap; }
48
- .ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell {
49
- white-space: nowrap;
50
- overflow: hidden;
51
- text-overflow: ellipsis; }
52
- .ngx-datatable.fixed-row .datatable-scroll {
53
- white-space: nowrap; }
54
- .ngx-datatable.fixed-row .datatable-scroll .datatable-body-row {
55
- white-space: nowrap; }
56
- .ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell {
57
- overflow: hidden;
58
- white-space: nowrap;
59
- text-overflow: ellipsis; }
60
- .ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell {
61
- overflow: hidden;
62
- white-space: nowrap;
63
- text-overflow: ellipsis; }
64
- .ngx-datatable .datatable-body-row,
65
- .ngx-datatable .datatable-row-center,
66
- .ngx-datatable .datatable-header-inner {
67
- display: -webkit-box;
68
- display: -moz-box;
69
- display: -ms-flexbox;
70
- display: -webkit-flex;
71
- display: flex;
72
- flex-direction: row;
73
- -webkit-flex-flow: row;
74
- -moz-flex-flow: row;
75
- -ms-flex-flow: row;
76
- -o-flex-flow: row;
77
- flex-flow: row; }
78
- .ngx-datatable .datatable-body-cell,
79
- .ngx-datatable .datatable-header-cell {
80
- overflow-x: hidden;
81
- vertical-align: top;
82
- display: inline-block;
83
- line-height: 1.625; }
84
- .ngx-datatable .datatable-body-cell:focus,
85
- .ngx-datatable .datatable-header-cell:focus {
86
- outline: none; }
87
- .ngx-datatable .datatable-row-left,
88
- .ngx-datatable .datatable-row-right {
89
- z-index: 9; }
90
- .ngx-datatable .datatable-row-left,
91
- .ngx-datatable .datatable-row-center,
92
- .ngx-datatable .datatable-row-group,
93
- .ngx-datatable .datatable-row-right {
94
- position: relative; }
95
- .ngx-datatable .datatable-header {
96
- display: block;
97
- overflow: hidden; }
98
- .ngx-datatable .datatable-header .datatable-header-inner {
99
- align-items: stretch;
100
- -webkit-align-items: stretch; }
101
- .ngx-datatable .datatable-header .datatable-header-cell {
102
- position: relative;
103
- display: inline-block; }
104
- .ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper {
105
- cursor: pointer; }
106
- .ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper {
107
- cursor: move; }
108
- .ngx-datatable .datatable-header .datatable-header-cell .sort-btn {
109
- line-height: 100%;
110
- vertical-align: middle;
111
- display: inline-block;
112
- cursor: pointer; }
113
- .ngx-datatable .datatable-header .datatable-header-cell .resize-handle,
114
- .ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable {
115
- display: inline-block;
116
- position: absolute;
117
- right: 0;
118
- top: 0;
119
- bottom: 0;
120
- width: 5px;
121
- padding: 0 4px;
122
- visibility: hidden; }
123
- .ngx-datatable .datatable-header .datatable-header-cell .resize-handle {
124
- cursor: ew-resize; }
125
- .ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle {
126
- visibility: visible; }
127
- .ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable {
128
- visibility: visible; }
129
- .ngx-datatable .datatable-header .datatable-header-cell .targetMarker {
130
- position: absolute;
131
- top: 0;
132
- bottom: 0; }
133
- .ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft {
134
- right: 0; }
135
- .ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight {
136
- left: 0; }
137
- .ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap {
138
- height: inherit; }
139
- .ngx-datatable .datatable-body {
140
- position: relative;
141
- z-index: 10;
142
- display: block; }
143
- .ngx-datatable .datatable-body .datatable-scroll {
144
- display: inline-block; }
145
- .ngx-datatable .datatable-body .datatable-row-detail {
146
- overflow-y: hidden; }
147
- .ngx-datatable .datatable-body .datatable-row-wrapper {
148
- display: -webkit-box;
149
- display: -moz-box;
150
- display: -ms-flexbox;
151
- display: -webkit-flex;
152
- display: flex;
153
- -webkit-box-orient: vertical;
154
- -webkit-box-direction: normal;
155
- -webkit-flex-direction: column;
156
- -moz-box-orient: vertical;
157
- -moz-box-direction: normal;
158
- -ms-flex-direction: column;
159
- flex-direction: column; }
160
- .ngx-datatable .datatable-body .datatable-body-row {
161
- outline: none; }
162
- .ngx-datatable .datatable-body .datatable-body-row > div {
163
- display: -webkit-box;
164
- display: -moz-box;
165
- display: -ms-flexbox;
166
- display: -webkit-flex;
167
- display: flex; }
168
- .ngx-datatable .datatable-footer {
169
- display: block;
170
- width: 100%;
171
- overflow: auto; }
172
- .ngx-datatable .datatable-footer .datatable-footer-inner {
173
- display: flex;
174
- align-items: center;
175
- width: 100%; }
176
- .ngx-datatable .datatable-footer .selected-count .page-count {
177
- flex: 1 1 40%; }
178
- .ngx-datatable .datatable-footer .selected-count .datatable-pager {
179
- flex: 1 1 60%; }
180
- .ngx-datatable .datatable-footer .page-count {
181
- flex: 1 1 20%; }
182
- .ngx-datatable .datatable-footer .datatable-pager {
183
- flex: 1 1 80%;
184
- text-align: right; }
185
- .ngx-datatable .datatable-footer .datatable-pager .pager,
186
- .ngx-datatable .datatable-footer .datatable-pager .pager li {
187
- padding: 0;
188
- margin: 0;
189
- display: inline-block;
190
- list-style: none; }
191
- .ngx-datatable .datatable-footer .datatable-pager .pager li,
192
- .ngx-datatable .datatable-footer .datatable-pager .pager li a {
193
- outline: none; }
194
- .ngx-datatable .datatable-footer .datatable-pager .pager li a {
195
- cursor: pointer;
196
- display: inline-block; }
197
- .ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a {
198
- cursor: not-allowed; }
30
+ */
31
+ }
32
+ .ngx-datatable [hidden] {
33
+ display: none !important;
34
+ }
35
+ .ngx-datatable *,
36
+ .ngx-datatable *:before,
37
+ .ngx-datatable *:after {
38
+ -moz-box-sizing: border-box;
39
+ -webkit-box-sizing: border-box;
40
+ box-sizing: border-box;
41
+ }
42
+ .ngx-datatable.scroll-vertical .datatable-body {
43
+ overflow-y: auto;
44
+ }
45
+ .ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper {
46
+ position: absolute;
47
+ }
48
+ .ngx-datatable.scroll-horz .datatable-body {
49
+ overflow-x: auto;
50
+ -webkit-overflow-scrolling: touch;
51
+ }
52
+ .ngx-datatable.fixed-header .datatable-header .datatable-header-inner {
53
+ white-space: nowrap;
54
+ }
55
+ .ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell {
56
+ white-space: nowrap;
57
+ overflow: hidden;
58
+ text-overflow: ellipsis;
59
+ }
60
+ .ngx-datatable.fixed-row .datatable-scroll {
61
+ white-space: nowrap;
62
+ }
63
+ .ngx-datatable.fixed-row .datatable-scroll .datatable-body-row {
64
+ white-space: nowrap;
65
+ }
66
+ .ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell {
67
+ overflow: hidden;
68
+ white-space: nowrap;
69
+ text-overflow: ellipsis;
70
+ }
71
+ .ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell {
72
+ overflow: hidden;
73
+ white-space: nowrap;
74
+ text-overflow: ellipsis;
75
+ }
76
+ .ngx-datatable .datatable-body-row,
77
+ .ngx-datatable .datatable-row-center,
78
+ .ngx-datatable .datatable-header-inner {
79
+ display: -webkit-box;
80
+ display: -moz-box;
81
+ display: -ms-flexbox;
82
+ display: -webkit-flex;
83
+ display: flex;
84
+ flex-direction: row;
85
+ -webkit-flex-flow: row;
86
+ -moz-flex-flow: row;
87
+ -ms-flex-flow: row;
88
+ -o-flex-flow: row;
89
+ flex-flow: row;
90
+ }
91
+ .ngx-datatable .datatable-body-cell,
92
+ .ngx-datatable .datatable-header-cell {
93
+ overflow-x: hidden;
94
+ vertical-align: top;
95
+ display: inline-block;
96
+ line-height: 1.625;
97
+ }
98
+ .ngx-datatable .datatable-body-cell:focus,
99
+ .ngx-datatable .datatable-header-cell:focus {
100
+ outline: none;
101
+ }
102
+ .ngx-datatable .datatable-row-left,
103
+ .ngx-datatable .datatable-row-right,
104
+ .ngx-datatable .datatable-group-header {
105
+ z-index: 9;
106
+ position: sticky !important;
107
+ }
108
+ .ngx-datatable .datatable-row-left,
109
+ .ngx-datatable .datatable-group-header {
110
+ left: 0;
111
+ }
112
+ .ngx-datatable .datatable-row-right {
113
+ right: 0;
114
+ }
115
+ .ngx-datatable .datatable-row-center,
116
+ .ngx-datatable .datatable-row-group {
117
+ position: relative;
118
+ }
119
+ .ngx-datatable .datatable-header {
120
+ display: block;
121
+ overflow: hidden;
122
+ }
123
+ .ngx-datatable .datatable-header .datatable-header-inner {
124
+ align-items: stretch;
125
+ -webkit-align-items: stretch;
126
+ }
127
+ .ngx-datatable .datatable-header .datatable-header-cell {
128
+ position: relative;
129
+ display: inline-block;
130
+ }
131
+ .ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper {
132
+ cursor: pointer;
133
+ }
134
+ .ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper {
135
+ cursor: move;
136
+ }
137
+ .ngx-datatable .datatable-header .datatable-header-cell .sort-btn {
138
+ line-height: 100%;
139
+ vertical-align: middle;
140
+ display: inline-block;
141
+ cursor: pointer;
142
+ }
143
+ .ngx-datatable .datatable-header .datatable-header-cell .resize-handle,
144
+ .ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable {
145
+ display: inline-block;
146
+ position: absolute;
147
+ right: 0;
148
+ top: 0;
149
+ bottom: 0;
150
+ width: 5px;
151
+ padding: 0 4px;
152
+ visibility: hidden;
153
+ }
154
+ .ngx-datatable .datatable-header .datatable-header-cell .resize-handle {
155
+ cursor: ew-resize;
156
+ }
157
+ .ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle {
158
+ visibility: visible;
159
+ }
160
+ .ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable {
161
+ visibility: visible;
162
+ }
163
+ .ngx-datatable .datatable-header .datatable-header-cell .targetMarker {
164
+ position: absolute;
165
+ top: 0;
166
+ bottom: 0;
167
+ }
168
+ .ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft {
169
+ right: 0;
170
+ }
171
+ .ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight {
172
+ left: 0;
173
+ }
174
+ .ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap {
175
+ height: inherit;
176
+ }
177
+ .ngx-datatable .datatable-body {
178
+ position: relative;
179
+ z-index: 10;
180
+ display: block;
181
+ overflow: hidden;
182
+ }
183
+ .ngx-datatable .datatable-body .datatable-scroll {
184
+ display: inline-block;
185
+ }
186
+ .ngx-datatable .datatable-body .datatable-row-detail {
187
+ overflow-y: hidden;
188
+ }
189
+ .ngx-datatable .datatable-body .datatable-row-wrapper {
190
+ display: -webkit-box;
191
+ display: -moz-box;
192
+ display: -ms-flexbox;
193
+ display: -webkit-flex;
194
+ display: flex;
195
+ -webkit-box-orient: vertical;
196
+ -webkit-box-direction: normal;
197
+ -webkit-flex-direction: column;
198
+ -moz-box-orient: vertical;
199
+ -moz-box-direction: normal;
200
+ -ms-flex-direction: column;
201
+ flex-direction: column;
202
+ }
203
+ .ngx-datatable .datatable-body .datatable-body-row {
204
+ outline: none;
205
+ }
206
+ .ngx-datatable .datatable-body .datatable-body-row > div {
207
+ display: -webkit-box;
208
+ display: -moz-box;
209
+ display: -ms-flexbox;
210
+ display: -webkit-flex;
211
+ display: flex;
212
+ }
213
+ .ngx-datatable .datatable-footer {
214
+ display: block;
215
+ width: 100%;
216
+ overflow: auto;
217
+ }
218
+ .ngx-datatable .datatable-footer .datatable-footer-inner {
219
+ display: flex;
220
+ align-items: center;
221
+ width: 100%;
222
+ }
223
+ .ngx-datatable .datatable-footer .selected-count .page-count {
224
+ flex: 1 1 40%;
225
+ }
226
+ .ngx-datatable .datatable-footer .selected-count .datatable-pager {
227
+ flex: 1 1 60%;
228
+ }
229
+ .ngx-datatable .datatable-footer .page-count {
230
+ flex: 1 1 20%;
231
+ }
232
+ .ngx-datatable .datatable-footer .datatable-pager {
233
+ flex: 1 1 80%;
234
+ text-align: right;
235
+ }
236
+ .ngx-datatable .datatable-footer .datatable-pager .pager,
237
+ .ngx-datatable .datatable-footer .datatable-pager .pager li {
238
+ padding: 0;
239
+ margin: 0;
240
+ display: inline-block;
241
+ list-style: none;
242
+ }
243
+ .ngx-datatable .datatable-footer .datatable-pager .pager li,
244
+ .ngx-datatable .datatable-footer .datatable-pager .pager li a {
245
+ outline: none;
246
+ }
247
+ .ngx-datatable .datatable-footer .datatable-pager .pager li a {
248
+ cursor: pointer;
249
+ display: inline-block;
250
+ }
251
+ .ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a {
252
+ cursor: not-allowed;
253
+ }
package/index.scss CHANGED
@@ -117,14 +117,23 @@
117
117
  }
118
118
 
119
119
  .datatable-row-left,
120
- .datatable-row-right {
120
+ .datatable-row-right,
121
+ .datatable-group-header {
121
122
  z-index: 9;
123
+ position: sticky !important;
122
124
  }
123
125
 
124
126
  .datatable-row-left,
125
- .datatable-row-center,
126
- .datatable-row-group,
127
+ .datatable-group-header {
128
+ left: 0;
129
+ }
130
+
127
131
  .datatable-row-right {
132
+ right: 0;
133
+ }
134
+
135
+ .datatable-row-center,
136
+ .datatable-row-group {
128
137
  position: relative;
129
138
  }
130
139
 
@@ -216,6 +225,7 @@
216
225
  position: relative;
217
226
  z-index: 10;
218
227
  display: block;
228
+ overflow: hidden;
219
229
 
220
230
  .datatable-scroll {
221
231
  display: inline-block;
@@ -1,13 +1,18 @@
1
- import { ChangeDetectorRef, EventEmitter, ElementRef, ViewContainerRef, OnDestroy, DoCheck } from '@angular/core';
1
+ import { DoCheck, EventEmitter, OnDestroy, ViewContainerRef } from '@angular/core';
2
2
  import { TableColumn } from '../../types/table-column.type';
3
- import { SortDirection } from '../../types/sort-direction.type';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { ActivateEvent, CellContext, RowOrGroup, SortDirection, SortPropDir, TreeStatus } from '../../types/public.types';
4
5
  import * as i0 from "@angular/core";
5
- export declare type TreeStatus = 'collapsed' | 'expanded' | 'loading' | 'disabled';
6
- export declare class DataTableBodyCellComponent implements DoCheck, OnDestroy {
6
+ export declare class DataTableBodyCellComponent<TRow extends {
7
+ level?: number;
8
+ } = any> implements DoCheck, OnDestroy {
7
9
  private cd;
8
- displayCheck: (row: any, column?: TableColumn, value?: any) => boolean;
9
- set group(group: any);
10
- get group(): any;
10
+ displayCheck: (row: RowOrGroup<TRow>, column: TableColumn, value: any) => boolean;
11
+ _disable$: BehaviorSubject<boolean>;
12
+ set disable$(val: BehaviorSubject<boolean>);
13
+ get disable$(): BehaviorSubject<boolean>;
14
+ set group(group: TRow[]);
15
+ get group(): TRow[];
11
16
  set rowHeight(val: number);
12
17
  get rowHeight(): number;
13
18
  set isSelected(val: boolean);
@@ -18,27 +23,27 @@ export declare class DataTableBodyCellComponent implements DoCheck, OnDestroy {
18
23
  get rowIndex(): number;
19
24
  set column(column: TableColumn);
20
25
  get column(): TableColumn;
21
- set row(row: any);
22
- get row(): any;
23
- set sorts(val: any[]);
24
- get sorts(): any[];
26
+ set row(row: TRow);
27
+ get row(): TRow;
28
+ set sorts(val: SortPropDir[]);
29
+ get sorts(): SortPropDir[];
25
30
  set treeStatus(status: TreeStatus);
26
31
  get treeStatus(): TreeStatus;
27
- activate: EventEmitter<any>;
32
+ ghostLoadingIndicator: boolean;
33
+ activate: EventEmitter<ActivateEvent<TRow>>;
28
34
  treeAction: EventEmitter<any>;
29
35
  cellTemplate: ViewContainerRef;
30
- get columnCssClasses(): any;
36
+ ghostLoaderTemplate: ViewContainerRef;
37
+ get columnCssClasses(): string;
31
38
  get width(): number;
32
39
  get minWidth(): number;
33
40
  get maxWidth(): number;
34
41
  get height(): string | number;
35
- sanitizedValue: any;
42
+ sanitizedValue: string;
36
43
  value: any;
37
44
  sortDir: SortDirection;
38
45
  isFocused: boolean;
39
- onCheckboxChangeFn: any;
40
- activateFn: any;
41
- cellContext: any;
46
+ cellContext: CellContext<TRow>;
42
47
  private _isSelected;
43
48
  private _sorts;
44
49
  private _column;
@@ -49,7 +54,7 @@ export declare class DataTableBodyCellComponent implements DoCheck, OnDestroy {
49
54
  private _expanded;
50
55
  private _element;
51
56
  private _treeStatus;
52
- constructor(element: ElementRef, cd: ChangeDetectorRef);
57
+ constructor();
53
58
  ngDoCheck(): void;
54
59
  ngOnDestroy(): void;
55
60
  checkValueUpdates(): void;
@@ -58,11 +63,11 @@ export declare class DataTableBodyCellComponent implements DoCheck, OnDestroy {
58
63
  onClick(event: MouseEvent): void;
59
64
  onDblClick(event: MouseEvent): void;
60
65
  onKeyDown(event: KeyboardEvent): void;
61
- onCheckboxChange(event: any): void;
62
- calcSortDir(sorts: any[]): any;
66
+ onCheckboxChange(event: MouseEvent | KeyboardEvent): void;
67
+ calcSortDir(sorts: SortPropDir[]): SortDirection;
63
68
  stripHtml(html: string): string;
64
69
  onTreeAction(): void;
65
- calcLeftMargin(column: any, row: any): number;
66
- static ɵfac: i0.ɵɵFactoryDeclaration<DataTableBodyCellComponent, never>;
67
- static ɵcmp: i0.ɵɵComponentDeclaration<DataTableBodyCellComponent, "datatable-body-cell", never, { "displayCheck": "displayCheck"; "group": "group"; "rowHeight": "rowHeight"; "isSelected": "isSelected"; "expanded": "expanded"; "rowIndex": "rowIndex"; "column": "column"; "row": "row"; "sorts": "sorts"; "treeStatus": "treeStatus"; }, { "activate": "activate"; "treeAction": "treeAction"; }, never, never>;
70
+ calcLeftMargin(column: TableColumn, row: RowOrGroup<TRow>): number;
71
+ static ɵfac: i0.ɵɵFactoryDeclaration<DataTableBodyCellComponent<any>, never>;
72
+ static ɵcmp: i0.ɵɵComponentDeclaration<DataTableBodyCellComponent<any>, "datatable-body-cell", never, { "displayCheck": { "alias": "displayCheck"; "required": false; }; "disable$": { "alias": "disable$"; "required": false; }; "group": { "alias": "group"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "isSelected": { "alias": "isSelected"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; "rowIndex": { "alias": "rowIndex"; "required": false; }; "column": { "alias": "column"; "required": false; }; "row": { "alias": "row"; "required": false; }; "sorts": { "alias": "sorts"; "required": false; }; "treeStatus": { "alias": "treeStatus"; "required": false; }; "ghostLoadingIndicator": { "alias": "ghostLoadingIndicator"; "required": false; }; }, { "activate": "activate"; "treeAction": "treeAction"; }, never, never, true, never>;
68
73
  }
@@ -1,8 +1,7 @@
1
- import { TemplateRef } from '@angular/core';
1
+ import { GroupContext } from '../../types/public.types';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class DatatableGroupHeaderTemplateDirective {
4
- template: TemplateRef<any>;
5
- constructor(template: TemplateRef<any>);
4
+ static ngTemplateContextGuard(directive: DatatableGroupHeaderTemplateDirective, context: unknown): context is GroupContext;
6
5
  static ɵfac: i0.ɵɵFactoryDeclaration<DatatableGroupHeaderTemplateDirective, never>;
7
- static ɵdir: i0.ɵɵDirectiveDeclaration<DatatableGroupHeaderTemplateDirective, "[ngx-datatable-group-header-template]", never, {}, {}, never>;
6
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DatatableGroupHeaderTemplateDirective, "[ngx-datatable-group-header-template]", never, {}, {}, never, never, true, never>;
8
7
  }
@@ -1,21 +1,26 @@
1
1
  import { EventEmitter, TemplateRef } from '@angular/core';
2
+ import { Group, GroupContext, GroupToggleEvents } from '../../types/public.types';
2
3
  import * as i0 from "@angular/core";
3
- export declare class DatatableGroupHeaderDirective {
4
+ export declare class DatatableGroupHeaderDirective<TRow = any> {
4
5
  /**
5
6
  * Row height is required when virtual scroll is enabled.
6
7
  */
7
- rowHeight: number | ((group?: any, index?: number) => number);
8
- _templateInput: TemplateRef<any>;
9
- _templateQuery: TemplateRef<any>;
10
- get template(): TemplateRef<any>;
8
+ rowHeight: number | ((group?: Group<TRow>, index?: number) => number);
9
+ /**
10
+ * Show checkbox at group header to select all rows of the group.
11
+ */
12
+ checkboxable: boolean;
13
+ _templateInput: TemplateRef<GroupContext<TRow>>;
14
+ _templateQuery: TemplateRef<GroupContext<TRow>>;
15
+ get template(): TemplateRef<GroupContext<TRow>>;
11
16
  /**
12
17
  * Track toggling of group visibility
13
18
  */
14
- toggle: EventEmitter<any>;
19
+ toggle: EventEmitter<GroupToggleEvents<TRow>>;
15
20
  /**
16
21
  * Toggle the expansion of a group
17
22
  */
18
- toggleExpandGroup(group: any): void;
23
+ toggleExpandGroup(group: Group<TRow>): void;
19
24
  /**
20
25
  * Expand all groups
21
26
  */
@@ -24,6 +29,6 @@ export declare class DatatableGroupHeaderDirective {
24
29
  * Collapse all groups
25
30
  */
26
31
  collapseAllGroups(): void;
27
- static ɵfac: i0.ɵɵFactoryDeclaration<DatatableGroupHeaderDirective, never>;
28
- static ɵdir: i0.ɵɵDirectiveDeclaration<DatatableGroupHeaderDirective, "ngx-datatable-group-header", never, { "rowHeight": "rowHeight"; "_templateInput": "template"; }, { "toggle": "toggle"; }, ["_templateQuery"]>;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<DatatableGroupHeaderDirective<any>, never>;
33
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DatatableGroupHeaderDirective<any>, "ngx-datatable-group-header", never, { "rowHeight": { "alias": "rowHeight"; "required": false; }; "checkboxable": { "alias": "checkboxable"; "required": false; }; "_templateInput": { "alias": "template"; "required": false; }; }, { "toggle": "toggle"; }, ["_templateQuery"], never, true, never>;
29
34
  }
@@ -0,0 +1,34 @@
1
+ import { OnInit, TemplateRef, ViewContainerRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * This component is passed as ng-template and rendered by BodyComponent.
5
+ * BodyComponent uses rowDefInternal to first inject actual row template.
6
+ * This component will render that actual row template.
7
+ */
8
+ export declare class DatatableRowDefComponent {
9
+ rowDef: DatatableRowDefInternalDirective;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<DatatableRowDefComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<DatatableRowDefComponent, "datatable-row-def", never, {}, {}, never, never, true, never>;
12
+ }
13
+ export declare class DatatableRowDefDirective {
14
+ static ngTemplateContextGuard(_dir: DatatableRowDefDirective, ctx: unknown): ctx is RowDefContext;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<DatatableRowDefDirective, never>;
16
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DatatableRowDefDirective, "[rowDef]", never, {}, {}, never, never, true, never>;
17
+ }
18
+ /**
19
+ * @internal To be used internally by ngx-datatable.
20
+ */
21
+ export declare class DatatableRowDefInternalDirective implements OnInit {
22
+ vc: ViewContainerRef;
23
+ rowDefInternal?: RowDefContext;
24
+ ngOnInit(): void;
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<DatatableRowDefInternalDirective, never>;
26
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DatatableRowDefInternalDirective, "[rowDefInternal]", never, { "rowDefInternal": { "alias": "rowDefInternal"; "required": false; }; }, {}, never, never, true, never>;
27
+ }
28
+ type RowDefContext = {
29
+ template: TemplateRef<unknown>;
30
+ rowTemplate: TemplateRef<unknown>;
31
+ row: any;
32
+ index: number;
33
+ };
34
+ export {};