mis-crystal-design-system 2.2.4 → 2.3.2

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 (37) hide show
  1. package/bundles/mis-crystal-design-system-datepicker_v2.umd.js +643 -0
  2. package/bundles/mis-crystal-design-system-datepicker_v2.umd.js.map +1 -0
  3. package/bundles/mis-crystal-design-system-datepicker_v2.umd.min.js +16 -0
  4. package/bundles/mis-crystal-design-system-datepicker_v2.umd.min.js.map +1 -0
  5. package/bundles/mis-crystal-design-system-table.umd.js +2 -1
  6. package/bundles/mis-crystal-design-system-table.umd.js.map +1 -1
  7. package/bundles/mis-crystal-design-system-table.umd.min.js +1 -1
  8. package/bundles/mis-crystal-design-system-table.umd.min.js.map +1 -1
  9. package/datepicker_v2/datepicker-constants.d.ts +4 -0
  10. package/datepicker_v2/datepicker.module.d.ts +2 -0
  11. package/datepicker_v2/index.d.ts +1 -0
  12. package/datepicker_v2/mis-crystal-design-system-datepicker_v2.d.ts +7 -0
  13. package/datepicker_v2/mis-crystal-design-system-datepicker_v2.metadata.json +1 -0
  14. package/datepicker_v2/models/dp-config.model.d.ts +30 -0
  15. package/datepicker_v2/package.json +11 -0
  16. package/datepicker_v2/public_api.d.ts +3 -0
  17. package/datepicker_v2/tz-datepicker.directive.d.ts +26 -0
  18. package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +23 -0
  19. package/datepicker_v2/utils/index.d.ts +2 -0
  20. package/esm2015/datepicker/sub-components/tooltip/tooltip.config.js +2 -3
  21. package/esm2015/datepicker_v2/datepicker-constants.js +5 -0
  22. package/esm2015/datepicker_v2/datepicker.module.js +16 -0
  23. package/esm2015/datepicker_v2/index.js +2 -0
  24. package/esm2015/datepicker_v2/mis-crystal-design-system-datepicker_v2.js +7 -0
  25. package/esm2015/datepicker_v2/models/dp-config.model.js +2 -0
  26. package/esm2015/datepicker_v2/public_api.js +3 -0
  27. package/esm2015/datepicker_v2/tz-datepicker.directive.js +107 -0
  28. package/esm2015/datepicker_v2/tz-dp-container/tz-dp-container.component.js +123 -0
  29. package/esm2015/datepicker_v2/utils/index.js +45 -0
  30. package/esm2015/table/filter/filter.component.js +1 -1
  31. package/esm2015/table/table.component.js +2 -1
  32. package/fesm2015/mis-crystal-design-system-datepicker_v2.js +293 -0
  33. package/fesm2015/mis-crystal-design-system-datepicker_v2.js.map +1 -0
  34. package/fesm2015/mis-crystal-design-system-table.js +2 -1
  35. package/fesm2015/mis-crystal-design-system-table.js.map +1 -1
  36. package/package.json +1 -1
  37. package/table/mis-crystal-design-system-table.metadata.json +1 -1
@@ -0,0 +1,293 @@
1
+ import { InjectionToken, Component, Inject, EventEmitter, Injector, Directive, Self, Optional, ElementRef, ViewContainerRef, Input, Output, HostListener, NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { parseZone } from 'moment-timezone';
4
+ import { ToastService, ToastModule } from 'mis-crystal-design-system/toast';
5
+ import { ConnectionPositionPair, OverlayConfig, Overlay } from '@angular/cdk/overlay';
6
+ import { ComponentPortal } from '@angular/cdk/portal';
7
+ import { NgControl } from '@angular/forms';
8
+ import { take } from 'rxjs/operators';
9
+
10
+ /** @format */
11
+ const CONTAINER_DATA = new InjectionToken('CONTAINER_DATA');
12
+ const DATE_FORMAT = "DD-MM-YYYY";
13
+
14
+ const getMonth = (index) => {
15
+ let month;
16
+ switch (index) {
17
+ case 0:
18
+ month = 'January';
19
+ break;
20
+ case 1:
21
+ month = 'February';
22
+ break;
23
+ case 2:
24
+ month = 'March';
25
+ break;
26
+ case 3:
27
+ month = 'April';
28
+ break;
29
+ case 4:
30
+ month = 'May';
31
+ break;
32
+ case 5:
33
+ month = 'June';
34
+ break;
35
+ case 6:
36
+ month = 'July';
37
+ break;
38
+ case 7:
39
+ month = 'August';
40
+ break;
41
+ case 8:
42
+ month = 'September';
43
+ break;
44
+ case 9:
45
+ month = 'October';
46
+ break;
47
+ case 10:
48
+ month = 'November';
49
+ break;
50
+ case 11:
51
+ month = 'December';
52
+ break;
53
+ default:
54
+ break;
55
+ }
56
+ return month;
57
+ };
58
+
59
+ class TzDpContainerComponent {
60
+ constructor(data, toast) {
61
+ var _a, _b, _c, _d;
62
+ this.toast = toast;
63
+ this.parseZoneInstance = (...args) => {
64
+ return parseZone(...args);
65
+ };
66
+ this.rawWeekDays = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];
67
+ this.weekDays = [];
68
+ this.currentMonthNumber = this.parseZoneInstance().month();
69
+ this.currentMonth = getMonth(this.currentMonthNumber);
70
+ this.currentYearNumber = this.parseZoneInstance().year();
71
+ this.currentMonthDates = [];
72
+ this.isPreviousMonthDisabled = false;
73
+ this.isNextMonthDisabled = false;
74
+ this.data = data;
75
+ if ((_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.dpConfig) === null || _b === void 0 ? void 0 : _b.timezone) {
76
+ this.parseZoneInstance = (...args) => {
77
+ return parseZone(...args).tz(this.data.dpConfig.timezone);
78
+ };
79
+ }
80
+ this.weekDays = this.rawWeekDays.map((day, index) => ({
81
+ label: `${day[0]}${day.slice(1).toLowerCase()}`,
82
+ isCurrentDay: this.parseZoneInstance().day() === index,
83
+ }));
84
+ if (!((_d = (_c = this.data) === null || _c === void 0 ? void 0 : _c.dpConfig) === null || _d === void 0 ? void 0 : _d.format)) {
85
+ this.data.dpConfig = Object.assign(Object.assign({}, this.data.dpConfig), { format: DATE_FORMAT });
86
+ }
87
+ }
88
+ ngOnInit() {
89
+ this.currentDateInstance();
90
+ this.calculateMinMaxDays();
91
+ }
92
+ currentDateInstance() {
93
+ const selectedDate = this.parseZoneInstance(this.data.date, this.data.dpConfig.format);
94
+ if (selectedDate.isValid()) {
95
+ this.currentYearNumber = selectedDate.year();
96
+ this.currentMonthNumber = selectedDate.month();
97
+ this.currentMonth = getMonth(this.currentMonthNumber);
98
+ }
99
+ this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);
100
+ }
101
+ calculateMinMaxDays() {
102
+ const currentInstance = this.parseZoneInstance().year(this.currentYearNumber).month(this.currentMonthNumber);
103
+ const minDate = this.parseZoneInstance(this.data.dpConfig.minDate, this.data.dpConfig.format);
104
+ if (minDate.isValid()) {
105
+ this.isPreviousMonthDisabled = minDate.isSameOrAfter(currentInstance, 'month');
106
+ }
107
+ const maxDate = this.parseZoneInstance(this.data.dpConfig.maxDate, this.data.dpConfig.format);
108
+ if (maxDate.isValid()) {
109
+ this.isNextMonthDisabled = maxDate.isSameOrBefore(currentInstance, 'month');
110
+ }
111
+ }
112
+ navigateMonth(direction) {
113
+ let thisMonth = this.parseZoneInstance().year(this.currentYearNumber).month(this.currentMonthNumber);
114
+ if (direction === "NEXT") {
115
+ thisMonth = thisMonth.add(1, 'month');
116
+ }
117
+ else if (direction === "PREVIOUS") {
118
+ thisMonth = thisMonth.subtract(1, 'month');
119
+ }
120
+ this.currentMonthNumber = thisMonth.month();
121
+ this.currentMonth = getMonth(this.currentMonthNumber);
122
+ this.currentYearNumber = thisMonth.year();
123
+ this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);
124
+ this.calculateMinMaxDays();
125
+ }
126
+ generateDates(month, currentYearNumber) {
127
+ var _a;
128
+ let dates = [];
129
+ const thisMonth = this.parseZoneInstance().year(currentYearNumber).month(month);
130
+ for (let startDate = 1; startDate <= thisMonth.endOf('month').date(); startDate++) {
131
+ let isDisabledDay = this.data.datesDisabled.some(d => d === thisMonth.date(startDate).format(this.data.dpConfig.format));
132
+ const minDate = this.parseZoneInstance(this.data.dpConfig.minDate, this.data.dpConfig.format);
133
+ if (!isDisabledDay && minDate.isValid()) {
134
+ isDisabledDay = minDate.isAfter(thisMonth.date(startDate), 'day');
135
+ }
136
+ const maxDate = this.parseZoneInstance(this.data.dpConfig.maxDate, this.data.dpConfig.format);
137
+ if (!isDisabledDay && maxDate.isValid()) {
138
+ isDisabledDay = maxDate.isBefore(thisMonth.date(startDate), 'day');
139
+ }
140
+ dates.push({
141
+ date: startDate,
142
+ weekDay: thisMonth.date(startDate).day(),
143
+ isCurrentDay: thisMonth.date(startDate).isSame(this.parseZoneInstance(), 'day'),
144
+ isSelectedDay: thisMonth.date(startDate).isSame(this.parseZoneInstance(this.data.date, this.data.dpConfig.format), 'day'),
145
+ toastMessage: ((_a = this.data.messages.find(q => thisMonth.date(startDate).isSame(this.parseZoneInstance(q.date, this.data.dpConfig.format), 'day'))) === null || _a === void 0 ? void 0 : _a.message) || '',
146
+ isDisabledDay,
147
+ });
148
+ }
149
+ for (let i = dates[0].weekDay; i > 0; i--) {
150
+ dates.unshift({ date: 0, weekDay: i - 1 });
151
+ }
152
+ return dates;
153
+ }
154
+ selectDay(day) {
155
+ if (day.date <= 0)
156
+ return;
157
+ if (!day.isDisabledDay) {
158
+ this.data.dateChange(this.parseZoneInstance().year(this.currentYearNumber).month(this.currentMonthNumber).date(day.date).format(this.data.dpConfig.format));
159
+ }
160
+ if (day.toastMessage) {
161
+ this.toast.displayMsg(day.toastMessage, 4000);
162
+ }
163
+ }
164
+ }
165
+ TzDpContainerComponent.decorators = [
166
+ { type: Component, args: [{
167
+ selector: "mis-tz-dp",
168
+ template: "<div class=\"datepicker-container\">\n <div class=\"datepicker-container__header\">\n <div\n class=\"datepicker-container__arrow__icon\"\n (click)=\"!isPreviousMonthDisabled && navigateMonth('PREVIOUS')\"\n [ngClass]=\"{\n 'disabled-month': isPreviousMonthDisabled\n }\"\n >\n <svg\n width=\"20\"\n height=\"16\"\n viewBox=\"0 0 20 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n <span> {{ currentMonth }} {{ currentYearNumber }} </span>\n <div\n class=\"datepicker-container__arrow__icon\"\n (click)=\"!isNextMonthDisabled && navigateMonth('NEXT')\"\n [ngClass]=\"{\n 'disabled-month': isNextMonthDisabled\n }\"\n >\n <svg\n width=\"20\"\n height=\"16\"\n viewBox=\"0 0 20 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n </div>\n <div class=\"datepicker-container__body\">\n <div class=\"datepicker-container__weekdays\">\n <div\n class=\"datepicker-container__weekday\"\n *ngFor=\"let weekDay of weekDays\"\n >\n <span [ngClass]=\"{ 'current-day': weekDay.isCurrentDay }\">{{\n weekDay.label\n }}</span>\n </div>\n </div>\n <div class=\"datepicker-container__days\">\n <div\n class=\"datepicker-container__day\"\n [ngClass]=\"{\n 'selected-day': day.isSelectedDay,\n 'disabled-day': day.isDisabledDay,\n 'is-valid-date': day.date > 0 && !day.isSelectedDay\n }\"\n *ngFor=\"let day of currentMonthDates\"\n (click)=\"selectDay(day)\"\n >\n <span\n *ngIf=\"day.date > 0\"\n [ngClass]=\"{\n 'current-day': day.isCurrentDay,\n 'selected-day': day.isSelectedDay,\n 'disabled-day': day.isDisabledDay\n }\"\n >\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n</div>\n",
169
+ styles: [".datepicker-container{background:#fff;border:1px solid #e0e0e0;box-shadow:0 12px 24px rgba(0,0,0,.12),0 4px 8px rgba(0,0,0,.12);border-radius:12px;display:flex;flex-direction:column;padding:16px;font-family:Lato;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker-container .datepicker-container__header{display:flex;height:32px;justify-content:space-between;align-items:center;width:100%}.datepicker-container .datepicker-container__header span{font-size:16px;font-style:normal;font-weight:700;line-height:24px;letter-spacing:.2px;text-align:center}.datepicker-container .datepicker-container__header .datepicker-container__arrow__icon{height:20px;width:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:4px}.datepicker-container .datepicker-container__header .datepicker-container__arrow__icon.disabled-month{opacity:.5;cursor:not-allowed}.datepicker-container .datepicker-container__header .datepicker-container__arrow__icon:not(.disabled-month):hover{cursor:pointer;background-color:#cbddfb}.datepicker-container .datepicker-container__header .datepicker-container__arrow__icon:first-child{transform:rotate(180deg)}.datepicker-container .datepicker-container__body{height:100%;width:252px}.datepicker-container .datepicker-container__body .datepicker-container__weekdays{width:100%;display:flex;padding-bottom:10px}.datepicker-container .datepicker-container__body .datepicker-container__weekdays .datepicker-container__weekday{width:36px;height:18px;text-align:center}.datepicker-container .datepicker-container__body .datepicker-container__weekdays .datepicker-container__weekday span{font-size:12px;font-style:normal;font-weight:400;line-height:18px;letter-spacing:.2px;text-align:center;color:#6a737d}.datepicker-container .datepicker-container__body .datepicker-container__weekdays .datepicker-container__weekday span.current-day{font-weight:700;letter-spacing:.25px;color:#181f33}.datepicker-container .datepicker-container__body .datepicker-container__days{display:flex;flex-wrap:wrap;gap:2px}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day{width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:4px}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.selected-day{background-color:#0937b2;cursor:pointer}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.disabled-day{cursor:default}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.disabled-day:hover{background-color:transparent}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.is-valid-date:not(.disabled-day):hover{background-color:#cbddfb;cursor:pointer}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day.is-valid-date:not(.disabled-day):hover span.selected-day{color:#181f33!important}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day span{font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.2px;text-align:center;color:#181f33}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day span.current-day{font-weight:700;letter-spacing:.25px}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day span.selected-day{color:#fff}.datepicker-container .datepicker-container__body .datepicker-container__days .datepicker-container__day span.disabled-day{color:#6a737d}"]
170
+ },] }
171
+ ];
172
+ TzDpContainerComponent.ctorParameters = () => [
173
+ { type: undefined, decorators: [{ type: Inject, args: [CONTAINER_DATA,] }] },
174
+ { type: ToastService }
175
+ ];
176
+
177
+ class TzDatepickerDirective {
178
+ constructor(control, element, overlay, viewContainerRef) {
179
+ this.control = control;
180
+ this.element = element;
181
+ this.overlay = overlay;
182
+ this.viewContainerRef = viewContainerRef;
183
+ this.dpConfig = {
184
+ format: DATE_FORMAT,
185
+ minDate: "",
186
+ maxDate: ""
187
+ };
188
+ this.dateMessages = [];
189
+ this.positionX = "start";
190
+ this.positionY = "bottom";
191
+ this.dateChange = new EventEmitter(true);
192
+ this.isOpen = false;
193
+ this.dpDisabledDates = [];
194
+ }
195
+ // dd-mm-yyyy 01-12-2022
196
+ set selectedDate(date) {
197
+ this.date = date;
198
+ }
199
+ set datesDisabled(dates) {
200
+ this.dpDisabledDates = dates;
201
+ }
202
+ toggleDatePicker() {
203
+ if (this.isOpen) {
204
+ this.close();
205
+ }
206
+ else {
207
+ this.open();
208
+ }
209
+ }
210
+ open() {
211
+ var _a;
212
+ this.isOpen = true;
213
+ const positionStrategy = this.overlay
214
+ .position()
215
+ .flexibleConnectedTo(this.element)
216
+ .withPositions([
217
+ new ConnectionPositionPair({ originX: this.positionX, originY: this.positionY }, { overlayX: this.positionX, overlayY: this.positionY === "bottom" ? "top" : "bottom" }),
218
+ new ConnectionPositionPair({ originX: "start", originY: "bottom" }, { overlayX: "start", overlayY: "top" }),
219
+ new ConnectionPositionPair({ originX: "end", originY: "top" }, { overlayX: "end", overlayY: "bottom" }),
220
+ ])
221
+ .withPush(true);
222
+ const config = new OverlayConfig({
223
+ hasBackdrop: true,
224
+ positionStrategy,
225
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
226
+ backdropClass: "cdk-overlay-transparent-backdrop",
227
+ });
228
+ this.overlayRef = this.overlay.create(config);
229
+ const tempRef = new ComponentPortal(TzDpContainerComponent, this.viewContainerRef, Injector.create({
230
+ providers: [
231
+ { provide: CONTAINER_DATA, useValue: { messages: this.dateMessages, date: ((_a = this.control) === null || _a === void 0 ? void 0 : _a.control.value) || this.date, dpConfig: this.dpConfig, datesDisabled: this.dpDisabledDates, dateChange: this.applyDate.bind(this) } },
232
+ ]
233
+ }));
234
+ this.overlayRef.attach(tempRef);
235
+ this.overlayRef
236
+ .backdropClick()
237
+ .pipe(take(1))
238
+ .subscribe(() => {
239
+ this.close();
240
+ });
241
+ }
242
+ applyDate(date) {
243
+ var _a;
244
+ this.dateChange.emit(date);
245
+ (_a = this.control) === null || _a === void 0 ? void 0 : _a.control.patchValue(date);
246
+ this.date = date;
247
+ this.close();
248
+ }
249
+ close() {
250
+ this.isOpen = false;
251
+ this.overlayRef.detach();
252
+ this.overlayRef.dispose();
253
+ }
254
+ }
255
+ TzDatepickerDirective.decorators = [
256
+ { type: Directive, args: [{
257
+ selector: "input[misTzDp]",
258
+ },] }
259
+ ];
260
+ TzDatepickerDirective.ctorParameters = () => [
261
+ { type: NgControl, decorators: [{ type: Self }, { type: Optional }] },
262
+ { type: ElementRef },
263
+ { type: Overlay },
264
+ { type: ViewContainerRef }
265
+ ];
266
+ TzDatepickerDirective.propDecorators = {
267
+ dpConfig: [{ type: Input }],
268
+ selectedDate: [{ type: Input }],
269
+ datesDisabled: [{ type: Input }],
270
+ dateMessages: [{ type: Input }],
271
+ positionX: [{ type: Input }],
272
+ positionY: [{ type: Input }],
273
+ dateChange: [{ type: Output }],
274
+ toggleDatePicker: [{ type: HostListener, args: ["click",] }]
275
+ };
276
+
277
+ class DatepickerModuleV2 {
278
+ }
279
+ DatepickerModuleV2.decorators = [
280
+ { type: NgModule, args: [{
281
+ declarations: [TzDpContainerComponent, TzDatepickerDirective],
282
+ imports: [CommonModule, ToastModule.forRoot()],
283
+ exports: [TzDpContainerComponent, TzDatepickerDirective],
284
+ entryComponents: [TzDpContainerComponent]
285
+ },] }
286
+ ];
287
+
288
+ /**
289
+ * Generated bundle index. Do not edit.
290
+ */
291
+
292
+ export { DatepickerModuleV2, TzDatepickerDirective, TzDpContainerComponent as ɵb, CONTAINER_DATA as ɵc };
293
+ //# sourceMappingURL=mis-crystal-design-system-datepicker_v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mis-crystal-design-system-datepicker_v2.js","sources":["../../../projects/mis-components/datepicker_v2/datepicker-constants.ts","../../../projects/mis-components/datepicker_v2/utils/index.ts","../../../projects/mis-components/datepicker_v2/tz-dp-container/tz-dp-container.component.ts","../../../projects/mis-components/datepicker_v2/tz-datepicker.directive.ts","../../../projects/mis-components/datepicker_v2/datepicker.module.ts","../../../projects/mis-components/datepicker_v2/mis-crystal-design-system-datepicker_v2.ts"],"sourcesContent":["/** @format */\n\nimport { InjectionToken } from \"@angular/core\";\n\nexport const CONTAINER_DATA = new InjectionToken<{}>('CONTAINER_DATA');\nexport const DATE_FORMAT = \"DD-MM-YYYY\";","import { ICurrentMonth } from \"../models/dp-config.model\";\n\nexport const getMonth = (index: number): ICurrentMonth => {\n let month;\n switch (index) {\n case 0:\n month = 'January'\n break;\n case 1:\n month = 'February'\n break;\n case 2:\n month = 'March'\n break;\n case 3:\n month = 'April'\n break;\n case 4:\n month = 'May'\n break;\n case 5:\n month = 'June'\n break;\n case 6:\n month = 'July'\n break;\n case 7:\n month = 'August'\n break;\n case 8:\n month = 'September'\n break;\n case 9:\n month = 'October'\n break;\n case 10:\n month = 'November'\n break;\n case 11:\n month = 'December'\n break;\n default:\n break;\n }\n return month;\n}","import { Component, Inject, OnInit } from \"@angular/core\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"../datepicker-constants\";\nimport { ICurrentMonth, ICurrentMonthDates, IDatePickerData, IWeekDay } from \"../models/dp-config.model\";\nimport { parseZone, Moment } from 'moment-timezone';\nimport { getMonth } from \"../utils\";\nimport { ToastService } from 'mis-crystal-design-system/toast'\n\n@Component({\n selector: \"mis-tz-dp\",\n templateUrl: \"./tz-dp-container.component.html\",\n styleUrls: [\"./tz-dp-container.component.scss\"],\n})\nexport class TzDpContainerComponent implements OnInit {\n data: IDatePickerData;\n private parseZoneInstance = (...args) => {\n return parseZone(...args);\n };\n private rawWeekDays: string[] = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']\n weekDays: IWeekDay[] = [];\n currentMonthNumber: number = this.parseZoneInstance().month();\n currentMonth: ICurrentMonth = getMonth(this.currentMonthNumber);\n currentYearNumber: number = this.parseZoneInstance().year();\n currentMonthDates: ICurrentMonthDates[] = [];\n isPreviousMonthDisabled: boolean = false;\n isNextMonthDisabled: boolean = false;\n\n constructor(@Inject(CONTAINER_DATA) data: IDatePickerData, private toast: ToastService) {\n this.data = data;\n if (this.data?.dpConfig?.timezone) {\n this.parseZoneInstance = (...args) => {\n return parseZone(...args).tz(this.data.dpConfig.timezone);\n }\n }\n this.weekDays = this.rawWeekDays.map((day, index) => ({\n label: `${day[0]}${day.slice(1).toLowerCase()}`,\n isCurrentDay: this.parseZoneInstance().day() === index,\n }));\n if (!this.data?.dpConfig?.format) {\n this.data.dpConfig = {\n ...this.data.dpConfig,\n format: DATE_FORMAT,\n };\n }\n }\n\n ngOnInit(): void {\n this.currentDateInstance();\n this.calculateMinMaxDays();\n }\n\n private currentDateInstance(): void {\n const selectedDate = this.parseZoneInstance(this.data.date, this.data.dpConfig.format);\n if (selectedDate.isValid()) {\n this.currentYearNumber = selectedDate.year();\n this.currentMonthNumber = selectedDate.month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n }\n this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);\n }\n\n private calculateMinMaxDays() {\n const currentInstance = this.parseZoneInstance().year(this.currentYearNumber).month(this.currentMonthNumber);\n const minDate = this.parseZoneInstance(this.data.dpConfig.minDate, this.data.dpConfig.format);\n if (minDate.isValid()) {\n this.isPreviousMonthDisabled = minDate.isSameOrAfter(currentInstance, 'month');\n }\n const maxDate = this.parseZoneInstance(this.data.dpConfig.maxDate, this.data.dpConfig.format);\n if (maxDate.isValid()) {\n this.isNextMonthDisabled = maxDate.isSameOrBefore(currentInstance, 'month');\n }\n }\n\n navigateMonth(direction: \"NEXT\" | \"PREVIOUS\"): void {\n let thisMonth: Moment = this.parseZoneInstance().year(this.currentYearNumber).month(this.currentMonthNumber);\n if (direction === \"NEXT\") {\n thisMonth = thisMonth.add(1, 'month');\n } else if (direction === \"PREVIOUS\") {\n thisMonth = thisMonth.subtract(1, 'month');\n }\n this.currentMonthNumber = thisMonth.month();\n this.currentMonth = getMonth(this.currentMonthNumber);\n this.currentYearNumber = thisMonth.year();\n this.currentMonthDates = this.generateDates(this.currentMonthNumber, this.currentYearNumber);\n this.calculateMinMaxDays();\n }\n\n private generateDates(month: number, currentYearNumber: number): ICurrentMonthDates[] {\n let dates: ICurrentMonthDates[] = [];\n const thisMonth = this.parseZoneInstance().year(currentYearNumber).month(month);\n for (let startDate = 1; startDate <= thisMonth.endOf('month').date(); startDate++) {\n let isDisabledDay = this.data.datesDisabled.some(d => d === thisMonth.date(startDate).format(this.data.dpConfig.format));\n const minDate = this.parseZoneInstance(this.data.dpConfig.minDate, this.data.dpConfig.format);\n if (!isDisabledDay && minDate.isValid()) {\n isDisabledDay = minDate.isAfter(thisMonth.date(startDate), 'day');\n }\n const maxDate = this.parseZoneInstance(this.data.dpConfig.maxDate, this.data.dpConfig.format);\n if (!isDisabledDay && maxDate.isValid()) {\n isDisabledDay = maxDate.isBefore(thisMonth.date(startDate), 'day');\n }\n dates.push({\n date: startDate,\n weekDay: thisMonth.date(startDate).day(),\n isCurrentDay: thisMonth.date(startDate).isSame(this.parseZoneInstance(), 'day'),\n isSelectedDay: thisMonth.date(startDate).isSame(this.parseZoneInstance(this.data.date, this.data.dpConfig.format), 'day'),\n toastMessage: this.data.messages.find(q => thisMonth.date(startDate).isSame(this.parseZoneInstance(q.date, this.data.dpConfig.format), 'day'))?.message || '',\n isDisabledDay,\n });\n }\n for (let i = dates[0].weekDay; i > 0; i--) {\n dates.unshift({ date: 0, weekDay: i - 1 });\n }\n return dates;\n }\n\n selectDay(day: ICurrentMonthDates) {\n if (day.date <= 0) return;\n if (!day.isDisabledDay) {\n this.data.dateChange(this.parseZoneInstance().year(this.currentYearNumber).month(this.currentMonthNumber).date(day.date).format(this.data.dpConfig.format));\n }\n if (day.toastMessage) {\n this.toast.displayMsg(day.toastMessage, 4000);\n }\n }\n\n}\n","import { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Directive, ElementRef, EventEmitter, HostListener, Injector, Input, Optional, Output, Self, ViewContainerRef } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { take } from \"rxjs/operators\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"./datepicker-constants\";\nimport { IDatePickerConfig, IDatePickerToastText } from \"./models/dp-config.model\";\nimport { TzDpContainerComponent } from './tz-dp-container/tz-dp-container.component';\n\n@Directive({\n selector: \"input[misTzDp]\",\n})\nexport class TzDatepickerDirective {\n @Input() dpConfig: Partial<IDatePickerConfig> = {\n format: DATE_FORMAT,\n minDate: \"\",\n maxDate: \"\"\n };\n // dd-mm-yyyy 01-12-2022\n @Input() set selectedDate(date: string) {\n this.date = date;\n }\n @Input() set datesDisabled(dates: string[]) {\n this.dpDisabledDates = dates;\n }\n @Input() dateMessages: IDatePickerToastText[] = [];\n @Input() positionX: \"start\" | \"end\" = \"start\";\n @Input() positionY: \"top\" | \"bottom\" = \"bottom\";\n private overlayRef: OverlayRef;\n @Output() dateChange = new EventEmitter<string>(true);\n private isOpen = false;\n date: string;\n\n private dpDisabledDates: string[] = [];\n\n constructor(@Self() @Optional() private control: NgControl, private element: ElementRef, private overlay: Overlay, private viewContainerRef: ViewContainerRef) { }\n\n @HostListener(\"click\")\n toggleDatePicker() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n private open() {\n this.isOpen = true;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions([\n new ConnectionPositionPair(\n { originX: this.positionX, originY: this.positionY },\n { overlayX: this.positionX, overlayY: this.positionY === \"bottom\" ? \"top\" : \"bottom\" },\n ),\n new ConnectionPositionPair(\n { originX: \"start\", originY: \"bottom\" },\n { overlayX: \"start\", overlayY: \"top\" },\n ),\n new ConnectionPositionPair(\n { originX: \"end\", originY: \"top\" },\n { overlayX: \"end\", overlayY: \"bottom\" },\n ),\n ])\n .withPush(true);\n const config = new OverlayConfig({\n hasBackdrop: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n });\n this.overlayRef = this.overlay.create(config);\n const tempRef = new ComponentPortal(TzDpContainerComponent, this.viewContainerRef, Injector.create({\n providers: [\n { provide: CONTAINER_DATA, useValue: { messages: this.dateMessages, date: this.control?.control.value || this.date, dpConfig: this.dpConfig, datesDisabled: this.dpDisabledDates, dateChange: this.applyDate.bind(this) } },\n ]\n }));\n this.overlayRef.attach(tempRef);\n this.overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => {\n this.close();\n });\n }\n\n applyDate(date: string) {\n this.dateChange.emit(date);\n this.control?.control.patchValue(date);\n this.date = date;\n this.close();\n }\n\n private close() {\n this.isOpen = false;\n this.overlayRef.detach();\n this.overlayRef.dispose();\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { TzDpContainerComponent } from \"./tz-dp-container/tz-dp-container.component\";\nimport { TzDatepickerDirective } from \"./tz-datepicker.directive\";\nimport { ToastModule } from 'mis-crystal-design-system/toast';\n@NgModule({\n declarations: [TzDpContainerComponent, TzDatepickerDirective],\n imports: [CommonModule, ToastModule.forRoot()],\n exports: [TzDpContainerComponent, TzDatepickerDirective],\n entryComponents: [TzDpContainerComponent]\n})\nexport class DatepickerModuleV2 {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {CONTAINER_DATA as ɵc} from './datepicker-constants';\nexport {IDatePickerData as ɵa} from './models/dp-config.model';\nexport {TzDpContainerComponent as ɵb} from './tz-dp-container/tz-dp-container.component';"],"names":[],"mappings":"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"}
@@ -34,6 +34,7 @@ class TableComponent {
34
34
  let targetElement = event.target;
35
35
  if (targetElement.className === 'checkmark') {
36
36
  isCheckBoxClicked = true;
37
+ this.showFilter = true;
37
38
  }
38
39
  let isClickInsideElement = this.filter.container.nativeElement.contains(event.target);
39
40
  if (!isClickInsideElement && !isCheckBoxClicked) {
@@ -369,7 +370,7 @@ TableFilterComponent.decorators = [
369
370
  { type: Component, args: [{
370
371
  selector: 'mis-table-filter',
371
372
  template: "<div id=\"main-container\"\n #mainContainer\n [ngStyle]=\"containerStyles\"\n>\n <div id=\"search-bar-container\">\n <input (keyup)=\"updateSearchValue($event)\" type=\"text\" placeholder=\"Search\">\n <svg id=\"search-icon\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.21496 8.14563C1.21496 4.3179 4.33709 1.21165 8.19249 1.21165C12.0479 1.21165 15.17 4.3179 15.17 8.14563C15.17 9.69308 14.6598 11.1226 13.797 12.2767L12.3684 13.7013C11.2043 14.5668 9.75891 15.0796 8.19249 15.0796C4.33709 15.0796 1.21496 11.9734 1.21496 8.14563ZM12.9419 14.7835C11.602 15.7329 9.96259 16.2913 8.19249 16.2913C3.66965 16.2913 -0.00012207 12.6461 -0.00012207 8.14563C-0.00012207 3.64512 3.66965 0 8.19249 0C12.7153 0 16.3851 3.64512 16.3851 8.14563C16.3851 9.93713 15.8036 11.5931 14.8183 12.9375L16.836 14.4048C17.6704 14.912 18.7553 15.6543 17.2453 17.215C15.7352 18.7756 15.0098 17.6663 14.499 16.8364L12.9419 14.7835Z\" fill=\"#6A737D\"/>\n </svg>\n </div>\n <div id=\"filters-main-container\">\n <div class=\"filters-sub-container\">\n <div *ngFor=\"let filter of getCheckedFilters()\">\n <div class=\"filter\">\n <mis-checkbox\n [checked]=\"true\"\n [name]=\"filter.value\"\n (valueChange)=\"updateFilter($event)\"\n ></mis-checkbox>\n <span class=\"filter-text\">{{filter.name}}</span>\n </div>\n </div>\n </div>\n <div class=\"separator\" style=\"margin: 16px 0px;\" *ngIf=\"getCheckedFilters().length && (getCheckedFilters().length < filtersData.length)\"></div>\n <div class=\"filters-sub-container\">\n <div *ngFor=\"let filter of getFiltersBasedOnSearchValue()\">\n <div class=\"filter\" *ngIf=\"!filter.checked\">\n <mis-checkbox\n [checked]=\"false\"\n [name]=\"filter.value\"\n (valueChange)=\"updateFilter($event)\"\n ></mis-checkbox>\n <span class=\"filter-text\">{{filter.name}}</span>\n </div>\n </div>\n <div id=\"no-results-container\" *ngIf=\"getFiltersBasedOnSearchValue().length < 1\">\n <span class=\"filter-text\">No matches found</span>\n </div>\n </div>\n <div class=\"separator\" style=\"margin: 16px 0px;\"></div>\n <div id=\"buttons-container\">\n <button id=\"reset-btn\" style=\"margin-right: 8px;\" (click)=\"resetFilters()\">Reset</button>\n <button id=\"apply-btn\" (click)=\"applyFilters()\">Apply</button>\n </div>\n </div>\n</div>\n",
372
- styles: ["#main-container{position:absolute;background:#fff;z-index:2;right:calc(50% - 128px);width:256px;padding:16px;font-family:Lato,sans-serif;box-shadow:0 12px 24px rgba(0,0,0,.12),0 4px 8px rgba(0,0,0,.12);border-radius:8px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#9aa7b4}#search-bar-container{width:100%;position:relative;margin-bottom:8px}input{width:100%;padding:12px 12px 12px 42px;border:1px solid #000;border-radius:4px;height:48px;box-shadow:none;outline:none;font-style:normal;font-weight:400;font-size:15px;line-height:20px;letter-spacing:.1px;color:#181f33}input:focus{border:1px solid #0937b2}#search-icon{position:absolute;top:15px;left:12px}.filters-sub-container{max-height:144px;overflow-y:auto}.filter{height:36px;display:flex;justify-content:flex-start;align-items:center}.filter-text{font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#no-results-container{height:36px;display:flex;justify-content:center;align-items:center}.separator{border:1px solid #e0e0e0}#buttons-container{display:flex;justify-content:center;align-items:center}button{width:calc(50% - 4px);border:none;box-shadow:none;outline:none;font-size:16px;line-height:24px;text-align:center;letter-spacing:.2px;padding:10px 30px;background:none;border-radius:8px}#apply-btn{background:#0937b2;color:#fff}#reset-btn{background:#fff;color:#0937b2}"]
373
+ styles: ["#main-container{position:absolute;background:#fff;z-index:2;right:calc(50% - 128px);width:256px;padding:16px;font-family:Lato,sans-serif;box-shadow:0 12px 24px rgba(0,0,0,.12),0 4px 8px rgba(0,0,0,.12);border-radius:8px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#9aa7b4}#search-bar-container{width:100%;position:relative;margin-bottom:8px}input{width:100%;padding:12px 12px 12px 42px;border:1px solid #000;border-radius:4px;height:48px;box-shadow:none;outline:none;font-style:normal;font-weight:400;font-size:15px;line-height:20px;letter-spacing:.1px;color:#181f33}input:focus{border:1px solid #0937b2}#search-icon{position:absolute;top:15px;left:12px}.filters-sub-container{max-height:144px;overflow-y:auto}.filter{height:36px;display:flex;justify-content:flex-start;align-items:center}.filter-text{font-size:14px;line-height:20px;padding-right:8px;letter-spacing:.2px;color:#181f33;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#no-results-container{height:36px;display:flex;justify-content:center;align-items:center}.separator{border:1px solid #e0e0e0}#buttons-container{display:flex;justify-content:center;align-items:center}button{width:calc(50% - 4px);border:none;box-shadow:none;outline:none;font-size:16px;line-height:24px;text-align:center;letter-spacing:.2px;padding:10px 30px;background:none;border-radius:8px}#apply-btn{background:#0937b2;color:#fff}#reset-btn{background:#fff;color:#0937b2}"]
373
374
  },] }
374
375
  ];
375
376
  TableFilterComponent.ctorParameters = () => [];
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-table.js","sources":["../../../projects/mis-components/table/table.component.ts","../../../projects/mis-components/table/custom-table-cell.directive.ts","../../../projects/mis-components/table/sub-table/sub-table.component.ts","../../../projects/mis-components/table/filter/filter.component.ts","../../../projects/mis-components/table/table.module.ts","../../../projects/mis-components/table/mis-crystal-design-system-table.ts"],"sourcesContent":["import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { Filter, TableFilterComponent } from './filter/filter.component';\n\n@Component({\n selector: 'mis-table',\n templateUrl: 'table.component.html',\n styleUrls: ['table.component.css'],\n})\nexport class TableComponent implements OnInit, AfterViewInit {\n // Filter related variables\n showFilter: boolean = false;\n filterName: string = '';\n filterData: Array<Filter> = [];\n filterContainerStyles: any = {};\n appliedFilters: { [key: string]: Array<{ name: string; value: string }> } =\n {};\n @Output() filtersUpdated = new EventEmitter<{\n [key: string]: Array<{ name: string; value: string }>;\n }>();\n\n @ViewChild('filter') filter: TableFilterComponent | any;\n @ViewChildren('colHeaderRef') colHeaders: QueryList<ElementRef> | any;\n\n // Pagination related variables\n selectedPage = 1;\n pages: Array<number> = [];\n\n @Output() pageSelected = new EventEmitter<number>();\n\n @Input('tableConfig') config: TableConfig | any;\n @Input() subTableconfig: TableConfig | any;\n @Input() tableDataLoading: boolean | any;\n @Input() expandedIndex: number | any;\n @Input() tableData: Array<Array<any>> = [];\n @Input() subTableData: Array<Array<any>> = [];\n @Input() subTableDataLoading: boolean | any;\n @ViewChild('table') table: ElementRef | any;\n\n constructor(private renderer: Renderer2) { }\n\n ngOnInit(): void {\n this.initializeFilters()\n if (this.config.paginationConfig) {\n this.initializePagination();\n }\n if (this.config.canScrollHorizontally === undefined) {\n this.config.canScrollHorizontally = false;\n }\n document.addEventListener('click', (event) => {\n if (this.filter) {\n let isCheckBoxClicked = false;\n let targetElement = event.target as HTMLSpanElement;\n if (targetElement.className === 'checkmark') {\n isCheckBoxClicked = true;\n }\n let isClickInsideElement = this.filter.container.nativeElement.contains(\n event.target\n );\n if (!isClickInsideElement && !isCheckBoxClicked) {\n this.toggleFilter(this.filterName);\n }\n }\n });\n }\n ngAfterViewInit() {\n if (this.config.paginationConfig) {\n let height = this.table.nativeElement.offsetHeight;\n this.renderer.setStyle(\n this.table.nativeElement,\n 'height',\n (height - 56) + 'px'\n );\n }\n }\n\n // Filter related functions\n initializeFilters() {\n for (let colHeader of this.config.colHeaderConfig) {\n if (colHeader.filters) {\n let filters = []\n for (let filter of colHeader.filters) {\n if (filter.checked) {\n filters.push({\n name: filter.name,\n value: filter.value\n })\n }\n }\n if (filters.length > 0) this.appliedFilters[colHeader.data] = filters\n }\n }\n }\n toggleFilter(filterName: string) {\n if (!this.showFilter) {\n this.filterName = filterName\n this.showFilter = true\n\n let offSet = 0;\n let colHeadersReversed = this.colHeaders.toArray().reverse();\n\n for (let header of colHeadersReversed) {\n if (header.nativeElement.innerText === filterName) break;\n offSet += header.nativeElement.offsetWidth;\n }\n this.filterContainerStyles = {\n top: '44px',\n right: offSet > 0 ? offSet - 116 + 'px' : '12px',\n };\n } else {\n this.filterName = '';\n this.filterData = [];\n this.showFilter = false;\n }\n }\n updateAppliedFilters(appliedFilters: Array<{ name: string; value: string }>) {\n if (appliedFilters.length == 0) {\n delete this.appliedFilters[this.filterName];\n } else {\n this.appliedFilters[this.filterName] = appliedFilters;\n }\n this.filtersUpdated.emit({ ...this.appliedFilters });\n this.toggleFilter(this.filterName);\n }\n\n // Pagination related functions\n initializePagination() {\n if (this.config.paginationConfig) {\n let len = this.config.paginationConfig.noOfPages;\n if (len <= 7) {\n for (let i = 1; i <= len; i++) {\n this.pages.push(i);\n }\n } else {\n this.pages = [1, 2, 3, 4, 0, len];\n }\n }\n }\n updateSelectedPage(pageNumber: number) {\n if (pageNumber < 1 || pageNumber > this.config.paginationConfig.noOfPages)\n return;\n this.selectedPage = pageNumber;\n let len = this.config.paginationConfig.noOfPages;\n if (len > 7) {\n if (pageNumber - 2 <= 1) {\n this.pages = [1, 2, 3, 4, 0, len];\n } else if (pageNumber - 2 > 1 && pageNumber + 2 < len) {\n this.pages = [1, 0, pageNumber - 1, pageNumber, pageNumber + 1, 0, len];\n } else if (pageNumber + 2 >= len) {\n this.pages = [1, 0, len - 3, len - 2, len - 1, len];\n }\n }\n this.pageSelected.emit(this.selectedPage);\n }\n\n // Main container related functions\n getContainerHeight() {\n if (this.config.height) return this.config.height;\n else return '';\n }\n getContainerWidth() {\n if (this.config.width) return this.config.width;\n else return '';\n }\n\n // Column Headers related functions\n getColHeadersRowHeight() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.height\n ) {\n return this.config.colHeadersRowConfig.height;\n } else return '44px';\n }\n getColHeadersRowBorderTop() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.style?.borderTop\n ) {\n return this.config.colHeadersRowConfig.style?.borderTop;\n } else return '';\n }\n getColHeadersRowBorderBottom() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.style?.borderBottom\n ) {\n return this.config.colHeadersRowConfig.style?.borderBottom;\n } else return '1px solid #E0E0E0';\n }\n}\n\nexport interface TableConfig {\n height: string | '100%';\n width: string | '100%';\n paginationConfig?: PaginationConfig | undefined | null;\n colHeadersRowConfig: RowConfig | undefined | null;\n rowConfig: RowConfig | undefined | null;\n colHeaderConfig: Array<ColHeaderConfig>;\n colConfig: Array<ColConfig>;\n canExpand?: boolean | false;\n canScrollHorizontally?: boolean | false;\n}\nexport interface PaginationConfig {\n noOfPages: number;\n rowsPerPage: number;\n totalNoOfRows: number;\n}\nexport interface RowConfig {\n height?: string | undefined | null;\n style?: {};\n}\nexport interface ColHeaderConfig {\n type: 'text' | 'number' | 'custom';\n data: any;\n componentRef?: any;\n filters?: Array<Filter> | null;\n style?: {};\n action?: any;\n}\nexport interface ColConfig {\n type: 'text' | 'number' | 'custom';\n componentRef?: any;\n style?: {};\n action?: any;\n}\n","import {\n ComponentFactoryResolver,\n Directive,\n Input,\n ViewContainerRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[customTableCell]',\n})\nexport class CustomTableCellDirective {\n private ref: any;\n private component: any;\n private cellData: any;\n\n @Input() set customComponent(value: any) {\n this.component = value;\n this.createComponent();\n }\n @Input() set data(value: any) {\n this.cellData = value;\n if (this.ref) { this.ref.instance.data = this.cellData; }\n }\n\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver\n ) { }\n\n createComponent() {\n if (this.component) {\n const cmpFactoryResolver =\n this.componentFactoryResolver.resolveComponentFactory(this.component);\n this.viewContainerRef.clear();\n this.ref = this.viewContainerRef.createComponent(cmpFactoryResolver);\n this.setData();\n }\n }\n setData() {\n this.ref.instance.data = this.cellData;\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnInit,\n Renderer2,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'sub-table',\n templateUrl: 'sub-table.component.html',\n styleUrls: ['sub-table.component.css'],\n})\nexport class SubTableComponent implements OnInit, AfterViewInit {\n selectedPage = 1;\n pages: Array<number> = [];\n\n @Input() config: SubTableConfig | any;\n @Input() tableData: Array<Array<any>> = [];\n @ViewChild('table') table: ElementRef | any;\n constructor(private renderer: Renderer2) { }\n\n ngOnInit() { }\n\n ngAfterViewInit() {\n if (this.config.paginationConfig) {\n let height = this.table.nativeElement.offsetHeight;\n this.renderer.setStyle(\n this.table.nativeElement,\n 'height',\n height - 56 + 'px'\n );\n }\n }\n\n // Main container related functions\n getContainerHeight() {\n if (this.config.height) return this.config.height;\n else return '';\n }\n getContainerWidth() {\n if (this.config.width) return this.config.width;\n else return '';\n }\n\n // Column Headers related functions\n getColHeadersRowHeight() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.height\n ) {\n return this.config.colHeadersRowConfig.height;\n } else return '44px';\n }\n getColHeadersRowBorderTop() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.style?.borderTop\n ) {\n return this.config.colHeadersRowConfig.style?.borderTop;\n } else return '';\n }\n getColHeadersRowBorderBottom() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.style?.borderBottom\n ) {\n return this.config.colHeadersRowConfig.style?.borderBottom;\n } else return '1px solid #E0E0E0';\n }\n}\n\nexport interface SubTableConfig {\n height: string | '100%';\n width: string | '100%';\n dataContainerMaxHeight: string | '400px';\n showHeader?: boolean | undefined;\n rowConfig: SubTableRowConfig | undefined | null;\n colHeaderConfig?: Array<SubTableColHeaderConfig>;\n colConfig: Array<SubTableColConfig>;\n}\n\nexport interface SubTableRowConfig {\n height?: string | undefined | null;\n style?: {};\n}\nexport interface SubTableColHeaderConfig {\n type: 'text' | 'number' | 'custom';\n data: any;\n componentRef?: any;\n style?: {};\n action?: any;\n}\nexport interface SubTableColConfig {\n type: 'text' | 'number' | 'custom';\n componentRef?: any;\n style?: {};\n action?: any;\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'mis-table-filter',\n templateUrl: 'filter.component.html',\n styleUrls: ['filter.component.css'],\n})\nexport class TableFilterComponent implements OnInit {\n @Input() filtersData: Array<Filter> = [];\n @Input() containerStyles: any = {};\n\n @Output() filtersApplied = new EventEmitter<any>();\n\n @ViewChild('mainContainer') container: ElementRef | undefined;\n\n filtersMap: any = {};\n searchValue: string = '';\n\n constructor() { }\n\n ngOnInit(): void {\n this.filtersData.forEach((filter) => {\n this.filtersMap[filter.value] = filter;\n });\n }\n resetFilters() {\n this.filtersData.forEach((filter) => {\n this.filtersMap[filter.value].checked = false;\n });\n this.filtersApplied.emit([]);\n }\n applyFilters() {\n let list = Object.values(this.filtersMap)\n .filter((filter: Filter | any) => filter.checked)\n .map((filter: Filter | any) => {\n return {\n name: filter.name,\n value: filter.value,\n };\n });\n this.filtersApplied.emit(list);\n }\n updateSearchValue(event: any) {\n this.searchValue = event.target.value;\n }\n updateFilter(data: any) {\n if (this.filtersMap[data.name]) {\n this.filtersMap[data.name].checked = !this.filtersMap[data.name].checked;\n }\n }\n getFiltersBasedOnSearchValue(): Filter[] | any {\n let list = Object.values(this.filtersMap);\n list = list.filter((filter: Filter | any) => {\n return filter.name.match(new RegExp(this.searchValue, 'i'));\n });\n return list.sort(this.mySort);\n }\n getCheckedFilters(): Filter[] | any {\n let list = Object.values(this.filtersMap);\n list = list\n .filter((filter: Filter | any) => filter.checked)\n .sort(this.mySort);\n return list;\n }\n mySort = (a: Filter | any, b: Filter | any) => {\n if (a.name < b.name) return -1;\n else if (b.name < a.name) return 1;\n else return 0;\n };\n}\nexport interface Filter {\n name: string;\n value: string;\n checked: boolean;\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { TableComponent } from \"./table.component\";\nimport { CustomTableCellDirective } from \"./custom-table-cell.directive\";\nimport { SubTableComponent } from './sub-table/sub-table.component';\nimport { CommonModule } from \"@angular/common\";\nimport { TableFilterComponent } from \"./filter/filter.component\";\nimport { CheckboxModule } from 'mis-crystal-design-system/checkbox';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n@NgModule({\n declarations: [\n TableComponent,\n SubTableComponent,\n TableFilterComponent,\n CustomTableCellDirective,\n ],\n imports: [\n CommonModule,\n CheckboxModule,\n ScrollingModule\n ],\n exports: [\n TableComponent,\n SubTableComponent,\n TableFilterComponent,\n CustomTableCellDirective\n ]\n})\nexport class TableModule {\n static forRoot(): ModuleWithProviders<TableModule> {\n return { ngModule: TableModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {SubTableComponent as ɵa} from './sub-table/sub-table.component';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-table.js","sources":["../../../projects/mis-components/table/table.component.ts","../../../projects/mis-components/table/custom-table-cell.directive.ts","../../../projects/mis-components/table/sub-table/sub-table.component.ts","../../../projects/mis-components/table/filter/filter.component.ts","../../../projects/mis-components/table/table.module.ts","../../../projects/mis-components/table/mis-crystal-design-system-table.ts"],"sourcesContent":["import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { Filter, TableFilterComponent } from './filter/filter.component';\n\n@Component({\n selector: 'mis-table',\n templateUrl: 'table.component.html',\n styleUrls: ['table.component.css'],\n})\nexport class TableComponent implements OnInit, AfterViewInit {\n // Filter related variables\n showFilter: boolean = false;\n filterName: string = '';\n filterData: Array<Filter> = [];\n filterContainerStyles: any = {};\n appliedFilters: { [key: string]: Array<{ name: string; value: string }> } =\n {};\n @Output() filtersUpdated = new EventEmitter<{\n [key: string]: Array<{ name: string; value: string }>;\n }>();\n\n @ViewChild('filter') filter: TableFilterComponent | any;\n @ViewChildren('colHeaderRef') colHeaders: QueryList<ElementRef> | any;\n\n // Pagination related variables\n selectedPage = 1;\n pages: Array<number> = [];\n\n @Output() pageSelected = new EventEmitter<number>();\n\n @Input('tableConfig') config: TableConfig | any;\n @Input() subTableconfig: TableConfig | any;\n @Input() tableDataLoading: boolean | any;\n @Input() expandedIndex: number | any;\n @Input() tableData: Array<Array<any>> = [];\n @Input() subTableData: Array<Array<any>> = [];\n @Input() subTableDataLoading: boolean | any;\n @ViewChild('table') table: ElementRef | any;\n\n constructor(private renderer: Renderer2) { }\n\n ngOnInit(): void {\n this.initializeFilters()\n if (this.config.paginationConfig) {\n this.initializePagination();\n }\n if (this.config.canScrollHorizontally === undefined) {\n this.config.canScrollHorizontally = false;\n }\n document.addEventListener('click', (event) => {\n if (this.filter) {\n let isCheckBoxClicked = false;\n let targetElement = event.target as HTMLSpanElement;\n if (targetElement.className === 'checkmark') {\n isCheckBoxClicked = true;\n this.showFilter = true;\n }\n let isClickInsideElement = this.filter.container.nativeElement.contains(\n event.target\n );\n if (!isClickInsideElement && !isCheckBoxClicked) {\n this.toggleFilter(this.filterName);\n }\n }\n });\n }\n ngAfterViewInit() {\n if (this.config.paginationConfig) {\n let height = this.table.nativeElement.offsetHeight;\n this.renderer.setStyle(\n this.table.nativeElement,\n 'height',\n (height - 56) + 'px'\n );\n }\n }\n\n // Filter related functions\n initializeFilters() {\n for (let colHeader of this.config.colHeaderConfig) {\n if (colHeader.filters) {\n let filters = []\n for (let filter of colHeader.filters) {\n if (filter.checked) {\n filters.push({\n name: filter.name,\n value: filter.value\n })\n }\n }\n if (filters.length > 0) this.appliedFilters[colHeader.data] = filters\n }\n }\n }\n toggleFilter(filterName: string) {\n if (!this.showFilter) {\n this.filterName = filterName\n this.showFilter = true\n\n let offSet = 0;\n let colHeadersReversed = this.colHeaders.toArray().reverse();\n\n for (let header of colHeadersReversed) {\n if (header.nativeElement.innerText === filterName) break;\n offSet += header.nativeElement.offsetWidth;\n }\n this.filterContainerStyles = {\n top: '44px',\n right: offSet > 0 ? offSet - 116 + 'px' : '12px',\n };\n } else {\n this.filterName = '';\n this.filterData = [];\n this.showFilter = false;\n }\n }\n updateAppliedFilters(appliedFilters: Array<{ name: string; value: string }>) {\n if (appliedFilters.length == 0) {\n delete this.appliedFilters[this.filterName];\n } else {\n this.appliedFilters[this.filterName] = appliedFilters;\n }\n this.filtersUpdated.emit({ ...this.appliedFilters });\n this.toggleFilter(this.filterName);\n }\n\n // Pagination related functions\n initializePagination() {\n if (this.config.paginationConfig) {\n let len = this.config.paginationConfig.noOfPages;\n if (len <= 7) {\n for (let i = 1; i <= len; i++) {\n this.pages.push(i);\n }\n } else {\n this.pages = [1, 2, 3, 4, 0, len];\n }\n }\n }\n updateSelectedPage(pageNumber: number) {\n if (pageNumber < 1 || pageNumber > this.config.paginationConfig.noOfPages)\n return;\n this.selectedPage = pageNumber;\n let len = this.config.paginationConfig.noOfPages;\n if (len > 7) {\n if (pageNumber - 2 <= 1) {\n this.pages = [1, 2, 3, 4, 0, len];\n } else if (pageNumber - 2 > 1 && pageNumber + 2 < len) {\n this.pages = [1, 0, pageNumber - 1, pageNumber, pageNumber + 1, 0, len];\n } else if (pageNumber + 2 >= len) {\n this.pages = [1, 0, len - 3, len - 2, len - 1, len];\n }\n }\n this.pageSelected.emit(this.selectedPage);\n }\n\n // Main container related functions\n getContainerHeight() {\n if (this.config.height) return this.config.height;\n else return '';\n }\n getContainerWidth() {\n if (this.config.width) return this.config.width;\n else return '';\n }\n\n // Column Headers related functions\n getColHeadersRowHeight() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.height\n ) {\n return this.config.colHeadersRowConfig.height;\n } else return '44px';\n }\n getColHeadersRowBorderTop() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.style?.borderTop\n ) {\n return this.config.colHeadersRowConfig.style?.borderTop;\n } else return '';\n }\n getColHeadersRowBorderBottom() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.style?.borderBottom\n ) {\n return this.config.colHeadersRowConfig.style?.borderBottom;\n } else return '1px solid #E0E0E0';\n }\n}\n\nexport interface TableConfig {\n height: string | '100%';\n width: string | '100%';\n paginationConfig?: PaginationConfig | undefined | null;\n colHeadersRowConfig: RowConfig | undefined | null;\n rowConfig: RowConfig | undefined | null;\n colHeaderConfig: Array<ColHeaderConfig>;\n colConfig: Array<ColConfig>;\n canExpand?: boolean | false;\n canScrollHorizontally?: boolean | false;\n}\nexport interface PaginationConfig {\n noOfPages: number;\n rowsPerPage: number;\n totalNoOfRows: number;\n}\nexport interface RowConfig {\n height?: string | undefined | null;\n style?: {};\n}\nexport interface ColHeaderConfig {\n type: 'text' | 'number' | 'custom';\n data: any;\n componentRef?: any;\n filters?: Array<Filter> | null;\n style?: {};\n action?: any;\n}\nexport interface ColConfig {\n type: 'text' | 'number' | 'custom';\n componentRef?: any;\n style?: {};\n action?: any;\n}\n","import {\n ComponentFactoryResolver,\n Directive,\n Input,\n ViewContainerRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[customTableCell]',\n})\nexport class CustomTableCellDirective {\n private ref: any;\n private component: any;\n private cellData: any;\n\n @Input() set customComponent(value: any) {\n this.component = value;\n this.createComponent();\n }\n @Input() set data(value: any) {\n this.cellData = value;\n if (this.ref) { this.ref.instance.data = this.cellData; }\n }\n\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver\n ) { }\n\n createComponent() {\n if (this.component) {\n const cmpFactoryResolver =\n this.componentFactoryResolver.resolveComponentFactory(this.component);\n this.viewContainerRef.clear();\n this.ref = this.viewContainerRef.createComponent(cmpFactoryResolver);\n this.setData();\n }\n }\n setData() {\n this.ref.instance.data = this.cellData;\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnInit,\n Renderer2,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'sub-table',\n templateUrl: 'sub-table.component.html',\n styleUrls: ['sub-table.component.css'],\n})\nexport class SubTableComponent implements OnInit, AfterViewInit {\n selectedPage = 1;\n pages: Array<number> = [];\n\n @Input() config: SubTableConfig | any;\n @Input() tableData: Array<Array<any>> = [];\n @ViewChild('table') table: ElementRef | any;\n constructor(private renderer: Renderer2) { }\n\n ngOnInit() { }\n\n ngAfterViewInit() {\n if (this.config.paginationConfig) {\n let height = this.table.nativeElement.offsetHeight;\n this.renderer.setStyle(\n this.table.nativeElement,\n 'height',\n height - 56 + 'px'\n );\n }\n }\n\n // Main container related functions\n getContainerHeight() {\n if (this.config.height) return this.config.height;\n else return '';\n }\n getContainerWidth() {\n if (this.config.width) return this.config.width;\n else return '';\n }\n\n // Column Headers related functions\n getColHeadersRowHeight() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.height\n ) {\n return this.config.colHeadersRowConfig.height;\n } else return '44px';\n }\n getColHeadersRowBorderTop() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.style?.borderTop\n ) {\n return this.config.colHeadersRowConfig.style?.borderTop;\n } else return '';\n }\n getColHeadersRowBorderBottom() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.style?.borderBottom\n ) {\n return this.config.colHeadersRowConfig.style?.borderBottom;\n } else return '1px solid #E0E0E0';\n }\n}\n\nexport interface SubTableConfig {\n height: string | '100%';\n width: string | '100%';\n dataContainerMaxHeight: string | '400px';\n showHeader?: boolean | undefined;\n rowConfig: SubTableRowConfig | undefined | null;\n colHeaderConfig?: Array<SubTableColHeaderConfig>;\n colConfig: Array<SubTableColConfig>;\n}\n\nexport interface SubTableRowConfig {\n height?: string | undefined | null;\n style?: {};\n}\nexport interface SubTableColHeaderConfig {\n type: 'text' | 'number' | 'custom';\n data: any;\n componentRef?: any;\n style?: {};\n action?: any;\n}\nexport interface SubTableColConfig {\n type: 'text' | 'number' | 'custom';\n componentRef?: any;\n style?: {};\n action?: any;\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'mis-table-filter',\n templateUrl: 'filter.component.html',\n styleUrls: ['filter.component.css'],\n})\nexport class TableFilterComponent implements OnInit {\n @Input() filtersData: Array<Filter> = [];\n @Input() containerStyles: any = {};\n\n @Output() filtersApplied = new EventEmitter<any>();\n\n @ViewChild('mainContainer') container: ElementRef | undefined;\n\n filtersMap: any = {};\n searchValue: string = '';\n\n constructor() { }\n\n ngOnInit(): void {\n this.filtersData.forEach((filter) => {\n this.filtersMap[filter.value] = filter;\n });\n }\n resetFilters() {\n this.filtersData.forEach((filter) => {\n this.filtersMap[filter.value].checked = false;\n });\n this.filtersApplied.emit([]);\n }\n applyFilters() {\n let list = Object.values(this.filtersMap)\n .filter((filter: Filter | any) => filter.checked)\n .map((filter: Filter | any) => {\n return {\n name: filter.name,\n value: filter.value,\n };\n });\n this.filtersApplied.emit(list);\n }\n updateSearchValue(event: any) {\n this.searchValue = event.target.value;\n }\n updateFilter(data: any) {\n if (this.filtersMap[data.name]) {\n this.filtersMap[data.name].checked = !this.filtersMap[data.name].checked;\n }\n }\n getFiltersBasedOnSearchValue(): Filter[] | any {\n let list = Object.values(this.filtersMap);\n list = list.filter((filter: Filter | any) => {\n return filter.name.match(new RegExp(this.searchValue, 'i'));\n });\n return list.sort(this.mySort);\n }\n getCheckedFilters(): Filter[] | any {\n let list = Object.values(this.filtersMap);\n list = list\n .filter((filter: Filter | any) => filter.checked)\n .sort(this.mySort);\n return list;\n }\n mySort = (a: Filter | any, b: Filter | any) => {\n if (a.name < b.name) return -1;\n else if (b.name < a.name) return 1;\n else return 0;\n };\n}\nexport interface Filter {\n name: string;\n value: string;\n checked: boolean;\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { TableComponent } from \"./table.component\";\nimport { CustomTableCellDirective } from \"./custom-table-cell.directive\";\nimport { SubTableComponent } from './sub-table/sub-table.component';\nimport { CommonModule } from \"@angular/common\";\nimport { TableFilterComponent } from \"./filter/filter.component\";\nimport { CheckboxModule } from 'mis-crystal-design-system/checkbox';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n@NgModule({\n declarations: [\n TableComponent,\n SubTableComponent,\n TableFilterComponent,\n CustomTableCellDirective,\n ],\n imports: [\n CommonModule,\n CheckboxModule,\n ScrollingModule\n ],\n exports: [\n TableComponent,\n SubTableComponent,\n TableFilterComponent,\n CustomTableCellDirective\n ]\n})\nexport class TableModule {\n static forRoot(): ModuleWithProviders<TableModule> {\n return { ngModule: TableModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {SubTableComponent as ɵa} from './sub-table/sub-table.component';"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mis-crystal-design-system",
3
- "version": "2.2.4",
3
+ "version": "2.3.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "*",
6
6
  "@angular/core": "*",