@angular-generic-table/core 5.0.0-rc.1 → 5.0.0-rc.12

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 (69) hide show
  1. package/angular-generic-table-core.d.ts +1 -3
  2. package/esm2020/angular-generic-table-core.mjs +5 -0
  3. package/esm2020/lib/core.component.mjs +161 -0
  4. package/esm2020/lib/core.module.mjs +40 -0
  5. package/esm2020/lib/core.service.mjs +14 -0
  6. package/esm2020/lib/enums/order.enum.mjs +6 -0
  7. package/esm2020/lib/gt-delta/gt-delta.component.mjs +115 -0
  8. package/esm2020/lib/models/gt-pagination.mjs +2 -0
  9. package/esm2020/lib/models/table-column.interface.mjs +2 -0
  10. package/esm2020/lib/models/table-config.interface.mjs +2 -0
  11. package/esm2020/lib/models/table-info.interface.mjs +2 -0
  12. package/esm2020/lib/models/table-meta.interface.mjs +2 -0
  13. package/esm2020/lib/models/table-row.interface.mjs +2 -0
  14. package/esm2020/lib/models/table-sort.interface.mjs +2 -0
  15. package/esm2020/lib/pagination/pagination.component.mjs +98 -0
  16. package/esm2020/lib/pagination/pagination.module.mjs +18 -0
  17. package/esm2020/lib/pipes/capital-case.pipe.mjs +17 -0
  18. package/esm2020/lib/pipes/dash-case.pipe.mjs +17 -0
  19. package/esm2020/lib/pipes/dynamic.pipe.mjs +25 -0
  20. package/esm2020/lib/pipes/highlight.pipe.mjs +48 -0
  21. package/esm2020/lib/pipes/sort-class.pipe.mjs +22 -0
  22. package/esm2020/lib/utilities/utilities.mjs +53 -0
  23. package/esm2020/public-api.mjs +16 -0
  24. package/fesm2015/angular-generic-table-core.mjs +610 -0
  25. package/fesm2015/angular-generic-table-core.mjs.map +1 -0
  26. package/fesm2020/angular-generic-table-core.mjs +603 -0
  27. package/fesm2020/angular-generic-table-core.mjs.map +1 -0
  28. package/lib/core.component.d.ts +20 -18
  29. package/lib/core.module.d.ts +12 -0
  30. package/lib/core.service.d.ts +3 -0
  31. package/lib/gt-delta/gt-delta.component.d.ts +20 -0
  32. package/lib/models/gt-pagination.d.ts +10 -0
  33. package/lib/models/table-column.interface.d.ts +13 -1
  34. package/lib/models/table-config.interface.d.ts +12 -3
  35. package/lib/models/table-meta.interface.d.ts +8 -0
  36. package/lib/models/table-row.interface.d.ts +2 -1
  37. package/lib/pagination/pagination.component.d.ts +24 -0
  38. package/lib/pagination/pagination.module.d.ts +8 -0
  39. package/lib/pipes/capital-case.pipe.d.ts +7 -0
  40. package/lib/pipes/dash-case.pipe.d.ts +3 -0
  41. package/lib/pipes/dynamic.pipe.d.ts +9 -0
  42. package/lib/pipes/highlight.pipe.d.ts +3 -0
  43. package/lib/pipes/sort-class.pipe.d.ts +4 -1
  44. package/lib/utilities/utilities.d.ts +1 -0
  45. package/package.json +21 -9
  46. package/public-api.d.ts +9 -0
  47. package/scss/index.scss +259 -0
  48. package/angular-generic-table-core.metadata.json +0 -1
  49. package/bundles/angular-generic-table-core.umd.js +0 -594
  50. package/bundles/angular-generic-table-core.umd.js.map +0 -1
  51. package/bundles/angular-generic-table-core.umd.min.js +0 -2
  52. package/bundles/angular-generic-table-core.umd.min.js.map +0 -1
  53. package/esm2015/angular-generic-table-core.js +0 -8
  54. package/esm2015/lib/core.component.js +0 -107
  55. package/esm2015/lib/core.module.js +0 -16
  56. package/esm2015/lib/core.service.js +0 -13
  57. package/esm2015/lib/enums/order.enum.js +0 -6
  58. package/esm2015/lib/models/table-column.interface.js +0 -2
  59. package/esm2015/lib/models/table-config.interface.js +0 -2
  60. package/esm2015/lib/models/table-info.interface.js +0 -2
  61. package/esm2015/lib/models/table-row.interface.js +0 -2
  62. package/esm2015/lib/models/table-sort.interface.js +0 -2
  63. package/esm2015/lib/pipes/dash-case.pipe.js +0 -13
  64. package/esm2015/lib/pipes/highlight.pipe.js +0 -44
  65. package/esm2015/lib/pipes/sort-class.pipe.js +0 -12
  66. package/esm2015/lib/utilities/utilities.js +0 -25
  67. package/esm2015/public-api.js +0 -7
  68. package/fesm2015/angular-generic-table-core.js +0 -234
  69. package/fesm2015/angular-generic-table-core.js.map +0 -1
@@ -0,0 +1,259 @@
1
+ $highlight-background-color: #ffdd00 !default;
2
+ $style-selector: '.table' !default;
3
+ $mobile-style-selector: 'table.table-mobile:not(.table-horizontal)' !default;
4
+ $mobile-style-max-width: 576px !default;
5
+ $mobile-style-header-font-weight: 500 !default;
6
+ $mobile-style-header-background-color: var(--bs-body-bg, #fff) !default;
7
+ $mobile-style-button-selector: '.btn-sm' !default;
8
+ $mobile-style-border-bottom: var(--bs-border-style, solid) var(--bs-border-width, 1px) var(--bs-border-color, #dedede) !default;
9
+ $mobile-style-button-font-size: 1rem !default;
10
+ $mobile-style-button-padding: 0.375rem 0.75rem !default;
11
+ $pagination-ellipsis-content: '...' !default;
12
+ $pagination-active-color: var(--bs-light, #000) !default;
13
+ $pagination-justify-content: center !default;
14
+ $cell-padding-y: 0.5rem !default;
15
+ $cell-padding-x: 0.5rem !default;
16
+ $sort-selector: '.gt-sort' !default;
17
+
18
+ $table-column-header-bg: var(--bs-body-bg);
19
+ $table-row-header-bg: var(--bs-body-bg);
20
+
21
+ $delta-positive-prefix: '+' !default;
22
+
23
+ $sort-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 448 644'%3E%3Cpath transform='translate(0 240)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath transform='translate(0 -100)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E") !default;
24
+ //$sort-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-arrows-sort' width='24' height='24' viewBox='0 0 24 24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M3 9l4 -4l4 4m-4 -4v14'%3E%3C/path%3E%3Cpath d='M21 15l-4 4l-4 -4m4 4v-14'%3E%3C/path%3E%3C/svg%3E") !default;
25
+ $sort-icon-size: 1rem;
26
+ $sort-icon-color: rgba(var(--bs-secondary-rgb, #000),0.25) !default;
27
+ $sort-icon-color-active: var(--bs-primary, #000) !default;
28
+ $ascending-sort-gradient: linear-gradient(1turn,
29
+ $sort-icon-color 50%,
30
+ $sort-icon-color-active 50%
31
+ ) !default;
32
+ $descending-sort-gradient: linear-gradient(
33
+ $sort-icon-color 50%,
34
+ $sort-icon-color-active 50%
35
+ ) !default;
36
+ /*$ascending-sort-gradient: linear-gradient(0.25turn,
37
+ $sort-icon-color 50%,
38
+ $sort-icon-color-active 50%
39
+ ) !default;
40
+ $descending-sort-gradient: linear-gradient(0.75turn,
41
+ $sort-icon-color 50%,
42
+ $sort-icon-color-active 50%
43
+ ) !default;
44
+ */
45
+
46
+ $skeleton-loader-highlight-color: var(--bs-gray-300, rgb(200,200,200)) !default;
47
+ $skeleton-loader-background-color: var(--bs-gray-200, rgb(240,240,240)) !default;
48
+ $skeleton-loader-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='768' height='159'%3E%3Cpath fill-rule='evenodd' fill='%23FFF' d='M0 124.999v-1h768v1H0ZM660 114V90h73.999v24H660Zm-144.001 0V90h120v24h-120ZM402 114V90h80v24h-80Zm-134 0V90h100v24H268Zm-154.001 0V90h130v24h-130ZM0 78.999h768v1H0v-1ZM660 69V45h63.999v24H660Zm-144.001 0V45h110v24h-110ZM402 69V45h69.999v24H402Zm-134 0V45h80v24h-80Zm-154.001 0V45h120v24h-120ZM0 33.999h768V35H0v-1.001ZM660 0h83.999v24H660V0ZM515.999 0h90v24h-90V0ZM402 0h90v24h-90V0ZM268 0h100v24H268V0ZM113.999 0h100v24h-100V0ZM0 0h90v24H0V0Zm70 69H0V45h70v24Zm10 45H0V90h80v24Zm10 45H0v-24h90v24Zm134 0H113.999v-24H224v24Zm154 0H268v-24h110v24Zm114 0h-90v-24h90v24Zm124 0H515.999v-24H616v24Zm127.999 0H660v-24h83.999v24Z'/%3E%3C/svg%3E") !default;
49
+
50
+ @mixin styles() {
51
+ @include default-style;
52
+ @include search-style;
53
+ @include mobile-style;
54
+ @include pagination-style;
55
+ @include delta-style;
56
+ @include sticky-style;
57
+ @include skeleton-loader-styles;
58
+ }
59
+
60
+ @mixin default-style {
61
+ #{$style-selector} {
62
+ thead tr th {
63
+ // sort button
64
+ &[aria-sort],
65
+ &.gt-sortable {
66
+ > #{$sort-selector} {
67
+ appearance: none;
68
+ font: inherit;
69
+ margin: 0;
70
+ padding: $cell-padding-y $cell-padding-x;
71
+ margin: -#{$cell-padding-y} -#{$cell-padding-x};
72
+ border: none;
73
+ background: none;
74
+ color: inherit;
75
+ width: 100%;
76
+ text-align: left;
77
+ display: flex;
78
+ align-items: center;
79
+ transition: box-shadow 0.25s ease-in-out;
80
+ &::after {
81
+ content: '';
82
+ background: $sort-icon-color;
83
+ width: $sort-icon-size;
84
+ height: $sort-icon-size;
85
+ margin-left: 0.25rem;
86
+ mask-image: $sort-icon;
87
+ mask-repeat: no-repeat;
88
+ mask-size: cover;
89
+ mask-position: right;
90
+ display: block;
91
+ flex-shrink: 0;
92
+ }
93
+ &:focus-visible {
94
+ box-shadow: inset rgba(var(--bs-primary-rgb, (0,0,0)),0.35) 0 0 0 4px;
95
+ outline: none;
96
+ border-radius: 4px;
97
+ }
98
+ }
99
+ }
100
+ &[aria-sort='ascending'] {
101
+ #{$sort-selector}::after {
102
+ background: $ascending-sort-gradient;
103
+ }
104
+ }
105
+ &[aria-sort='descending'] {
106
+ #{$sort-selector}::after {
107
+ background: $descending-sort-gradient;
108
+ }
109
+ }
110
+ }
111
+ tr {
112
+ th, td {
113
+ padding: $cell-padding-y $cell-padding-x;
114
+ }
115
+ }
116
+ }
117
+ }
118
+
119
+ @mixin search-style {
120
+ .gt-highlight-search {
121
+ background: $highlight-background-color;
122
+ }
123
+ }
124
+ @mixin mobile-style($selector: $mobile-style-selector) {
125
+ @media (max-width: $mobile-style-max-width) {
126
+ #{$selector} {
127
+ table-layout: fixed;
128
+ border-bottom: none;
129
+ thead {
130
+ position: sticky;
131
+ top: 0;
132
+ display: block;
133
+ @media (hover: none) and (pointer: coarse) {
134
+ display: table-header-group;
135
+ }
136
+ background: $mobile-style-header-background-color;
137
+ tr {
138
+ display: flex;
139
+ overflow: auto;
140
+ &::-webkit-scrollbar {
141
+ display: none;
142
+ }
143
+ th {
144
+ flex: auto;
145
+ text-align: left !important;
146
+ white-space: nowrap;
147
+ }
148
+ }
149
+ }
150
+ tbody {
151
+ tr {
152
+ display: flex;
153
+ flex-direction: column;
154
+ border-bottom: $mobile-style-border-bottom;
155
+ }
156
+ td {
157
+ display: flex;
158
+ justify-content: space-between;
159
+ align-items: center;
160
+ border-top: none !important;
161
+ &::before {
162
+ content: attr(data-label);
163
+ display: block;
164
+ font-weight: $mobile-style-header-font-weight;
165
+ }
166
+
167
+ #{$mobile-style-button-selector} {
168
+ width: 100%;
169
+ font-size: $mobile-style-button-font-size;
170
+ padding: $mobile-style-button-padding;
171
+ }
172
+ }
173
+ }
174
+ }
175
+ }
176
+ }
177
+ @mixin pagination-style() {
178
+ nav.gt-pagination {
179
+ display: flex;
180
+ justify-content: $pagination-justify-content;
181
+ ul {
182
+ display: inline-flex;
183
+ list-style: none;
184
+ margin: 0;
185
+ padding: 0;
186
+ li {
187
+ &.gt-ellipsis > button::after {
188
+ content: $pagination-ellipsis-content;
189
+ display: inline-flex;
190
+ }
191
+ &.active button {
192
+ color: $pagination-active-color;
193
+ }
194
+ }
195
+ }
196
+ }
197
+ }
198
+
199
+ @mixin delta-style() {
200
+ .gt-delta {
201
+ display: flex;
202
+ &.gt-delta-positive::before {
203
+ display: block;
204
+ content: $delta-positive-prefix;
205
+ }
206
+ }
207
+ }
208
+ @mixin sticky-style() {
209
+ .gt-sticky-column-header thead tr th {
210
+ position: sticky;
211
+ top: 0;
212
+ background: $table-column-header-bg;
213
+ z-index: 2;
214
+ white-space: nowrap;
215
+ }
216
+
217
+ .gt-sticky-row-header {
218
+ tbody tr th.row-header, thead tr th:first-child {
219
+ position: sticky;
220
+ left: 0;
221
+ background: $table-row-header-bg;
222
+ z-index: 1;
223
+ white-space: nowrap;
224
+ }
225
+ thead tr th:first-child {
226
+ z-index: 3;
227
+ }
228
+ }
229
+ }
230
+
231
+ @mixin skeleton-loader-styles() {
232
+ .gt-skeleton-loader {
233
+ margin: 0.625rem 0;
234
+ --gt-skeleton-loader-mask: #{$skeleton-loader-mask};
235
+ --gt-skeleton-loader-highlight-color: #{$skeleton-loader-highlight-color};
236
+ --gt-skeleton-loader-bg-color: #{$skeleton-loader-background-color};
237
+ @keyframes skeleton-loader {
238
+ 0% {
239
+ background-position: 0 0;
240
+ }
241
+ 25%,
242
+ 100% {
243
+ background-position: 200vw 0;
244
+ }
245
+ }
246
+ height: 158px;
247
+ mask-image: var(--gt-skeleton-loader-mask);
248
+ background: linear-gradient(
249
+ 280deg,
250
+ $skeleton-loader-background-color 12.5%,
251
+ $skeleton-loader-highlight-color 17.5%,
252
+ $skeleton-loader-background-color 37.5%
253
+ );
254
+ background-size: 200vw 100vw;
255
+ background-position: 0 0;
256
+ animation: skeleton-loader 3000ms linear infinite;
257
+ }
258
+ }
259
+
@@ -1 +0,0 @@
1
- {"__symbolic":"module","version":4,"metadata":{"CoreService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":2,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}]},"statics":{"ɵprov":{}}},"CoreComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"angular-generic-table","styles":[],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":16,"character":19},"member":"OnPush"},"template":"<table class=\"table text-nowrap mb-0\" id=\"agreementList_table\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let column of (tableConfig$ | async)!.columns | keyvalue: columnOrder\">\n <th\n *ngIf=\"!column.value?.hidden\"\n ngClass=\"{{ column.value?.sortable ? 'sort ' : '' }} {{ sortBy$ | async | sortClass: column.key }} {{\n (column.key | dashCase) + '-column'\n }}\"\n [class.disabled]=\"loading$ | async\"\n (click)=\"!column.value.sortable || sort(column.key)\"\n >\n <span>{{ column.value?.header || column.key }}</span>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody *ngIf=\"false !== false; else tableContent\">\n <tr>\n <!-- <td class=\"p-0\" [colSpan]=\"colspan$ | async\">-->\n <td class=\"p-0\">\n <div class=\"skeleton-loader skeleton-loader-table\"></div>\n </td>\n </tr>\n </tbody>\n</table>\n<ng-template #tableContent>\n <ng-container\n *ngIf=\"(table$ | async)! as table\"\n >\n <tbody id=\"agreementList_tableContent\" *ngIf=\"table!.data!.length > 0; else noData\">\n <tr *ngFor=\"let row of table!.data![(currentPage$ | async) || 0]; let i = index\" [attr.id]=\"'tableRow_' + i\">\n <ng-container *ngFor=\"let column of table.config?.columns | keyvalue: columnOrder\">\n <td *ngIf=\"!column.value?.hidden\">\n <!--<ng-container *ngIf=\"column.value.template === 'actions'\">\n <ng-container\n *ngTemplateOutlet=\"actionsColumn; context: { agreement: agreement, index: i }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"column.value.template === 'date'\">\n <ng-container\n *ngTemplateOutlet=\"dateColumn; context: { agreement: agreement, column: column.key }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"column.value.template === 'name'\">\n <ng-container *ngTemplateOutlet=\"nameColumn; context: { agreement: agreement }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"column.value.template === 'badge'\">\n <ng-container *ngTemplateOutlet=\"badgeColumn; context: { agreement: agreement }\"></ng-container>\n </ng-container>-->\n <ng-container [ngTemplateOutlet]=\"(searchBy$ | async) ? highlighted: tableRow\" [ngTemplateOutletContext]=\"{row: row, column: column, search: (searchBy$ | async) }\"></ng-container>\n </td>\n </ng-container>\n </tr>\n </tbody>\n </ng-container>\n</ng-template>\n<ng-template #noData></ng-template>\n<ng-template #highlighted let-row=\"row\" let-column=\"column\" let-search=\"search\">\n <div [innerHTML]=\"(row[column.key] | highlight: search)\"></div>\n</ng-template>\n<ng-template #tableRow let-row=\"row\" let-column=\"column\">\n {{row[column.key]}}\n</ng-template>\n"}]}],"members":{"page":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"search":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"sort":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}]}},"GenericTableCoreModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"CoreComponent"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":12}],"exports":[{"__symbolic":"reference","name":"CoreComponent"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"sortClass"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":3,"character":1},"arguments":[{"name":"dashCase"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":2,"character":1},"arguments":[{"name":"highlight"}]}],"members":{"transform":[{"__symbolic":"method"}]}}},"origins":{"CoreService":"./lib/core.service","CoreComponent":"./lib/core.component","GenericTableCoreModule":"./lib/core.module","ɵa":"./lib/pipes/sort-class.pipe","ɵb":"./lib/pipes/dash-case.pipe","ɵc":"./lib/pipes/highlight.pipe"},"importAs":"@angular-generic-table/core"}