@datarailsshared/datarailsshared 1.2.2 → 1.3.2-beta

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 (72) hide show
  1. package/bundles/datarailsshared-datarailsshared.umd.js +1546 -0
  2. package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -0
  3. package/datarailsshared-datarailsshared-1.3.2-beta.tgz +0 -0
  4. package/datarailsshared-datarailsshared.d.ts +5 -0
  5. package/datarailsshared-datarailsshared.metadata.json +1 -0
  6. package/esm2015/datarailsshared-datarailsshared.js +6 -0
  7. package/esm2015/lib/date-tags/date-tag.component.js +70 -0
  8. package/esm2015/lib/date-tags/date-tag.module.js +50 -0
  9. package/esm2015/lib/date-tags/day-tag/day-tag.component.js +79 -0
  10. package/esm2015/lib/date-tags/forecast-tag/forecast-tag.component.js +143 -0
  11. package/esm2015/lib/date-tags/month-tag/month-tag.component.js +86 -0
  12. package/esm2015/lib/date-tags/quarter-tag/quarter-tag.component.js +101 -0
  13. package/esm2015/lib/date-tags/week-tag/week-tag.component.js +124 -0
  14. package/esm2015/lib/date-tags/year-tag/year-tag.component.js +92 -0
  15. package/esm2015/lib/dr-inputs/checkbox/checkbox.component.js +46 -0
  16. package/esm2015/lib/dr-inputs/dr-input/dr-input.component.js +147 -0
  17. package/esm2015/lib/dr-inputs/dr-inputs.module.js +31 -0
  18. package/esm2015/lib/dr-inputs/radio-button/radio-button.component.js +50 -0
  19. package/esm2015/lib/dr-tags/dr-tag.component.js +54 -0
  20. package/esm2015/lib/dr-tags/dr-tag.module.js +22 -0
  21. package/esm2015/lib/list-tags/list-tag.component.js +41 -0
  22. package/esm2015/lib/list-tags/list-tag.module.js +29 -0
  23. package/esm2015/lib/models/serverTags.js +2 -0
  24. package/esm2015/public-api.js +21 -0
  25. package/fesm2015/datarailsshared-datarailsshared.js +1108 -0
  26. package/fesm2015/datarailsshared-datarailsshared.js.map +1 -0
  27. package/{DateTags/dateTag.component.d.ts → lib/date-tags/date-tag.component.d.ts} +27 -26
  28. package/lib/date-tags/date-tag.module.d.ts +4 -0
  29. package/lib/date-tags/day-tag/day-tag.component.d.ts +12 -0
  30. package/{DateTags/forecastTag/forecastTag.component.d.ts → lib/date-tags/forecast-tag/forecast-tag.component.d.ts} +21 -18
  31. package/lib/date-tags/month-tag/month-tag.component.d.ts +14 -0
  32. package/{DateTags/quarterTag/quarterTag.component.d.ts → lib/date-tags/quarter-tag/quarter-tag.component.d.ts} +17 -15
  33. package/{DateTags/weekTag/weekTag.component.d.ts → lib/date-tags/week-tag/week-tag.component.d.ts} +19 -15
  34. package/lib/date-tags/year-tag/year-tag.component.d.ts +14 -0
  35. package/lib/dr-inputs/checkbox/checkbox.component.d.ts +14 -0
  36. package/lib/dr-inputs/dr-input/dr-input.component.d.ts +44 -0
  37. package/lib/dr-inputs/dr-inputs.module.d.ts +2 -0
  38. package/lib/dr-inputs/radio-button/radio-button.component.d.ts +15 -0
  39. package/{DrTags/drTag.component.d.ts → lib/dr-tags/dr-tag.component.d.ts} +15 -14
  40. package/{DrTags/drTag.module.d.ts → lib/dr-tags/dr-tag.module.d.ts} +2 -2
  41. package/{ListTags/listTag.component.d.ts → lib/list-tags/list-tag.component.d.ts} +14 -14
  42. package/{ListTags/listTag.module.d.ts → lib/list-tags/list-tag.module.d.ts} +2 -2
  43. package/{models → lib/models}/serverTags.d.ts +28 -25
  44. package/package.json +11 -11
  45. package/public-api.d.ts +17 -0
  46. package/DateTags/dateTag.module.d.ts +0 -2
  47. package/DateTags/dayTag/dayTag.component.d.ts +0 -7
  48. package/DateTags/monthTag/monthTag.component.d.ts +0 -7
  49. package/DateTags/yearTag/yearTag.component.d.ts +0 -7
  50. package/bundles/ng-datarails.umd.js +0 -986
  51. package/bundles/ng-datarails.umd.js.map +0 -1
  52. package/datarailsshared-datarailsshared-1.2.2.tgz +0 -0
  53. package/esm2015/DateTags/dateTag.component.js +0 -71
  54. package/esm2015/DateTags/dateTag.module.js +0 -54
  55. package/esm2015/DateTags/dayTag/dayTag.component.js +0 -41
  56. package/esm2015/DateTags/forecastTag/forecastTag.component.js +0 -118
  57. package/esm2015/DateTags/monthTag/monthTag.component.js +0 -41
  58. package/esm2015/DateTags/quarterTag/quarterTag.component.js +0 -82
  59. package/esm2015/DateTags/weekTag/weekTag.component.js +0 -84
  60. package/esm2015/DateTags/yearTag/yearTag.component.js +0 -43
  61. package/esm2015/DrTags/drTag.component.js +0 -52
  62. package/esm2015/DrTags/drTag.module.js +0 -26
  63. package/esm2015/ListTags/listTag.component.js +0 -41
  64. package/esm2015/ListTags/listTag.module.js +0 -33
  65. package/esm2015/index.js +0 -5
  66. package/esm2015/models/serverTags.js +0 -2
  67. package/esm2015/ng-datarails.js +0 -14
  68. package/fesm2015/ng-datarails.js +0 -653
  69. package/fesm2015/ng-datarails.js.map +0 -1
  70. package/index.d.ts +0 -4
  71. package/ng-datarails.d.ts +0 -13
  72. package/ng-datarails.metadata.json +0 -1
@@ -0,0 +1,86 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import { AnyTagComponent } from "../date-tag.component";
3
+ import { FormControl } from "@angular/forms";
4
+ import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from "@angular/material/core";
5
+ import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from "@angular/material-moment-adapter";
6
+ // @ts-ignore
7
+ const moment = require("moment");
8
+ const MONTH_FORMATS = {
9
+ parse: {
10
+ dateInput: "DD-MM-YYYY",
11
+ },
12
+ display: {
13
+ dateInput: "MMMM YYYY",
14
+ monthYearLabel: "MMMM YYYY",
15
+ dateA11yLabel: "LL",
16
+ monthYearA11yLabel: "MMMM YYYY"
17
+ },
18
+ };
19
+ const ɵ0 = MONTH_FORMATS;
20
+ export class MonthTagComponent extends AnyTagComponent {
21
+ constructor() {
22
+ super();
23
+ this.lockedDate = [];
24
+ this.date = new FormControl(moment());
25
+ this.dateFilter = (date) => {
26
+ const calendarDate = moment(date);
27
+ let status = true;
28
+ this.lockedDate.forEach(timestamp => {
29
+ const lockDate = moment.unix(timestamp);
30
+ return status = !(lockDate.year() === calendarDate.year() && lockDate.month() === calendarDate.month());
31
+ });
32
+ return status;
33
+ };
34
+ }
35
+ initDate() {
36
+ if (this.defaultValue) {
37
+ this.dateObj.date = moment(new Date(this.defaultValue * 1000)).utc().format("YYYY-MM");
38
+ }
39
+ else {
40
+ this.dateObj.date = moment(new Date()).format("YYYY-MM");
41
+ }
42
+ }
43
+ initName() {
44
+ if (!this.name) {
45
+ this.name = "Month and Year";
46
+ }
47
+ }
48
+ chosenTagHandler(value) {
49
+ const resultDate = moment.utc(value);
50
+ resultDate.hour(12);
51
+ const resultTag = {
52
+ name: this.name,
53
+ value: parseInt(resultDate.format("X"), 10),
54
+ label: resultDate.format("MMMM YYYY"),
55
+ locked: !this.dateFilter(value)
56
+ };
57
+ console.log(resultTag, value);
58
+ this.dateChange.emit(resultTag);
59
+ }
60
+ chosenMonthHandler(normalizedMonth, datepicker) {
61
+ this.date.setValue(normalizedMonth);
62
+ this.dateObj.date = this.date.value;
63
+ this.chosenTagHandler(this.date.value);
64
+ datepicker.close();
65
+ }
66
+ }
67
+ MonthTagComponent.decorators = [
68
+ { type: Component, args: [{
69
+ template: "<div>\r\n <mat-form-field class=\"date-select-box\">\r\n <input\r\n matInput\r\n placeholder=\"{{name}}\"\r\n name=\"Month\"\r\n [formControl]=\"date\"\r\n [matDatepickerFilter]=\"dateFilter\"\r\n [matDatepicker]=\"datepicker\">\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n <mat-datepicker\r\n #datepicker\r\n startView=\"year\"\r\n (monthSelected)=\"chosenMonthHandler($event, datepicker)\"\r\n ></mat-datepicker>\r\n </mat-form-field>\r\n</div>\r\n",
70
+ selector: "month-tag",
71
+ providers: [
72
+ {
73
+ provide: DateAdapter,
74
+ useClass: MomentDateAdapter,
75
+ deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
76
+ },
77
+ { provide: MAT_DATE_FORMATS, useValue: ɵ0 },
78
+ ]
79
+ },] }
80
+ ];
81
+ MonthTagComponent.ctorParameters = () => [];
82
+ MonthTagComponent.propDecorators = {
83
+ lockedDate: [{ type: Input }]
84
+ };
85
+ export { ɵ0 };
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9tb250aC10YWcvbW9udGgtdGFnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBZ0IsS0FBSyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUdoRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEYsT0FBTyxFQUFDLCtCQUErQixFQUFFLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDcEcsYUFBYTtBQUNiLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVqQyxNQUFNLGFBQWEsR0FBRztJQUNwQixLQUFLLEVBQUU7UUFDTCxTQUFTLEVBQUUsWUFBWTtLQUN4QjtJQUNELE9BQU8sRUFBRTtRQUNQLFNBQVMsRUFBRSxXQUFXO1FBQ3RCLGNBQWMsRUFBRSxXQUFXO1FBQzNCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLGtCQUFrQixFQUFFLFdBQVc7S0FDaEM7Q0FDRixDQUFDO1dBVzBDLGFBQWE7QUFJekQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGVBQWU7SUFLbEQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQUxILGVBQVUsR0FBVSxFQUFFLENBQUM7UUFFaEMsU0FBSSxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUEwQ2pDLGVBQVUsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3BCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFFbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ2xDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBRXhDLE9BQU8sTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMxRyxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQTtJQWpERCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN4RjthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztTQUM5QjtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFLO1FBQ2xCLE1BQU0sVUFBVSxHQUFXLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQixNQUFNLFNBQVMsR0FBYTtZQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixLQUFLLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNDLEtBQUssRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUNyQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztTQUNsQyxDQUFDO1FBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGtCQUFrQixDQUFDLGVBQXVCLEVBQUUsVUFBaUM7UUFDekUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7OztZQXhESixTQUFTLFNBQUM7Z0JBQ1AsNm5CQUF1QztnQkFDdkMsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsV0FBVzt3QkFDcEIsUUFBUSxFQUFFLGlCQUFpQjt3QkFDM0IsSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLCtCQUErQixDQUFDO3FCQUN6RDtvQkFDRCxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLElBQWUsRUFBQztpQkFDckQ7YUFDSjs7Ozt5QkFHSSxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtNb21lbnR9IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHtJRGF0ZVRhZ30gZnJvbSBcIi4uLy4uL21vZGVscy9zZXJ2ZXJUYWdzXCI7XHJcbmltcG9ydCB7QW55VGFnQ29tcG9uZW50fSBmcm9tIFwiLi4vZGF0ZS10YWcuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7TWF0RGF0ZXBpY2tlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXJcIjtcclxuaW1wb3J0IHtGb3JtQ29udHJvbH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7RGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMsIE1BVF9EQVRFX0xPQ0FMRX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuaW1wb3J0IHtNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCBNb21lbnREYXRlQWRhcHRlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyXCI7XHJcbi8vIEB0cy1pZ25vcmVcclxuY29uc3QgbW9tZW50ID0gcmVxdWlyZShcIm1vbWVudFwiKTtcclxuXHJcbmNvbnN0IE1PTlRIX0ZPUk1BVFMgPSB7XHJcbiAgcGFyc2U6IHtcclxuICAgIGRhdGVJbnB1dDogXCJERC1NTS1ZWVlZXCIsXHJcbiAgfSxcclxuICBkaXNwbGF5OiB7XHJcbiAgICBkYXRlSW5wdXQ6IFwiTU1NTSBZWVlZXCIsXHJcbiAgICBtb250aFllYXJMYWJlbDogXCJNTU1NIFlZWVlcIixcclxuICAgIGRhdGVBMTF5TGFiZWw6IFwiTExcIixcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogXCJNTU1NIFlZWVlcIlxyXG4gIH0sXHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHRlbXBsYXRlVXJsOiBcIm1vbnRoLXRhZy5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc2VsZWN0b3I6IFwibW9udGgtdGFnXCIsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAge1xyXG4gICAgICAgIHByb3ZpZGU6IERhdGVBZGFwdGVyLFxyXG4gICAgICAgIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlcixcclxuICAgICAgICBkZXBzOiBbTUFUX0RBVEVfTE9DQUxFLCBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TXSxcclxuICAgICAgfSxcclxuICAgICAge3Byb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBNT05USF9GT1JNQVRTfSxcclxuICAgIF0sXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgTW9udGhUYWdDb21wb25lbnQgZXh0ZW5kcyBBbnlUYWdDb21wb25lbnQge1xyXG4gICAgQElucHV0KCkgbG9ja2VkRGF0ZTogYW55W10gPSBbXTtcclxuXHJcbiAgICBkYXRlID0gbmV3IEZvcm1Db250cm9sKG1vbWVudCgpKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXREYXRlKCkge1xyXG4gICAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICB0aGlzLmRhdGVPYmouZGF0ZSA9IG1vbWVudChuZXcgRGF0ZSh0aGlzLmRlZmF1bHRWYWx1ZSAqIDEwMDApKS51dGMoKS5mb3JtYXQoXCJZWVlZLU1NXCIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGF0ZU9iai5kYXRlID0gbW9tZW50KG5ldyBEYXRlKCkpLmZvcm1hdChcIllZWVktTU1cIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbml0TmFtZSgpIHtcclxuICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgICB0aGlzLm5hbWUgPSBcIk1vbnRoIGFuZCBZZWFyXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjaG9zZW5UYWdIYW5kbGVyKHZhbHVlKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0RGF0ZTogTW9tZW50ID0gbW9tZW50LnV0Yyh2YWx1ZSk7XHJcbiAgICAgICAgcmVzdWx0RGF0ZS5ob3VyKDEyKTtcclxuICAgICAgICBjb25zdCByZXN1bHRUYWc6IElEYXRlVGFnID0ge1xyXG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICAgICAgICAgIHZhbHVlOiBwYXJzZUludChyZXN1bHREYXRlLmZvcm1hdChcIlhcIiksIDEwKSxcclxuICAgICAgICAgICAgbGFiZWw6IHJlc3VsdERhdGUuZm9ybWF0KFwiTU1NTSBZWVlZXCIpLFxyXG4gICAgICAgICAgICBsb2NrZWQ6ICF0aGlzLmRhdGVGaWx0ZXIodmFsdWUpXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRUYWcsIHZhbHVlKTtcclxuICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChyZXN1bHRUYWcpO1xyXG4gICAgfVxyXG5cclxuICAgIGNob3Nlbk1vbnRoSGFuZGxlcihub3JtYWxpemVkTW9udGg6IE1vbWVudCwgZGF0ZXBpY2tlcjogTWF0RGF0ZXBpY2tlcjxNb21lbnQ+KSB7XHJcbiAgICAgICAgdGhpcy5kYXRlLnNldFZhbHVlKG5vcm1hbGl6ZWRNb250aCk7XHJcbiAgICAgICAgdGhpcy5kYXRlT2JqLmRhdGUgPSB0aGlzLmRhdGUudmFsdWU7XHJcblxyXG4gICAgICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcih0aGlzLmRhdGUudmFsdWUpO1xyXG5cclxuICAgICAgICBkYXRlcGlja2VyLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGF0ZUZpbHRlciA9IChkYXRlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNhbGVuZGFyRGF0ZSA9IG1vbWVudChkYXRlKTtcclxuICAgICAgbGV0IHN0YXR1cyA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmxvY2tlZERhdGUuZm9yRWFjaCh0aW1lc3RhbXAgPT4ge1xyXG4gICAgICAgIGNvbnN0IGxvY2tEYXRlID0gbW9tZW50LnVuaXgodGltZXN0YW1wKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHN0YXR1cyA9ICEobG9ja0RhdGUueWVhcigpID09PSBjYWxlbmRhckRhdGUueWVhcigpICYmIGxvY2tEYXRlLm1vbnRoKCkgPT09IGNhbGVuZGFyRGF0ZS5tb250aCgpKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gc3RhdHVzO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,101 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import { AnyTagComponent } from "../date-tag.component";
3
+ // @ts-ignore
4
+ const moment = require("moment");
5
+ export class QuarterTagComponent extends AnyTagComponent {
6
+ constructor() {
7
+ super();
8
+ this.lockedDate = [];
9
+ this.selectedValue = 0;
10
+ this.quarters = [];
11
+ this.dateFilter = (date) => {
12
+ let status = true;
13
+ this.lockedDate.forEach(timestamp => {
14
+ const lockDate = moment.unix(timestamp);
15
+ const quarterDate = moment.unix(date.value);
16
+ if (lockDate.year() === quarterDate.year() && lockDate.month() === quarterDate.month()) {
17
+ date.disable = true;
18
+ status = false;
19
+ }
20
+ });
21
+ return status;
22
+ };
23
+ }
24
+ ngOnInit() {
25
+ this.initName();
26
+ this.quarters = this.getQuarterOptions();
27
+ for (const quarter of this.quarters) {
28
+ quarter.disable = false;
29
+ if (quarter.isSelected) {
30
+ this.selectedValue = quarter.value;
31
+ this.chosenTagHandler(quarter.value);
32
+ }
33
+ this.dateFilter(quarter);
34
+ }
35
+ }
36
+ initName() {
37
+ if (!this.name) {
38
+ this.name = "Quarter";
39
+ }
40
+ }
41
+ changeSelectHandler(event) {
42
+ this.chosenTagHandler(event.value);
43
+ }
44
+ chosenTagHandler(value) {
45
+ const date = new Date(value * 1000);
46
+ const resultDate = moment.utc(date);
47
+ const resultTag = {
48
+ name: this.name,
49
+ value: parseInt(resultDate.format("X"), 10),
50
+ label: this.getQuarterLabel(resultDate.toString()),
51
+ locked: !this.dateFilter(value)
52
+ };
53
+ this.dateChange.emit(resultTag);
54
+ }
55
+ getQuarterOptions() {
56
+ const quartersBeforeToday = 8;
57
+ const quartersAfterToday = 8;
58
+ const dateNow = new Date();
59
+ const dateNowUnix = this.getUTCTimestamp(dateNow);
60
+ let defaultValue = dateNowUnix;
61
+ let tempDate = new Date();
62
+ if (this.defaultValue) {
63
+ defaultValue = this.defaultValue * 1000;
64
+ }
65
+ let afterDefault = Math.round(Math.abs(dateNowUnix - defaultValue) / 7776000000) + quartersAfterToday;
66
+ afterDefault = Math.min(afterDefault, 100);
67
+ let i, tempValue;
68
+ const to_return = [];
69
+ for (i = 0 - quartersBeforeToday; i <= afterDefault; i++) {
70
+ tempDate = new Date(defaultValue);
71
+ tempDate.setDate(15);
72
+ tempDate.setMonth(tempDate.getMonth() + 3 * i);
73
+ tempValue = this.getUTCTimestamp(tempDate);
74
+ to_return.push({
75
+ value: tempValue / 1000,
76
+ label: this.getQuarterLabel(tempValue),
77
+ isSelected: (i === 0),
78
+ });
79
+ }
80
+ return to_return;
81
+ }
82
+ getQuarterLabel(timeValue) {
83
+ const date = new Date(timeValue);
84
+ return "Q" + Math.floor((date.getMonth() / 3) + 1) + " " + date.getFullYear();
85
+ }
86
+ getUTCTimestamp(date) {
87
+ const month = Math.floor(date.getMonth() / 3) * 3;
88
+ return Date.UTC(date.getFullYear(), month, 1, 12, 0, 0, 0);
89
+ }
90
+ }
91
+ QuarterTagComponent.decorators = [
92
+ { type: Component, args: [{
93
+ template: "<div>\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{name}}\" (selectionChange)=\"changeSelectHandler($event)\" [(value)]=\"selectedValue\">\r\n <mat-option *ngFor=\"let quarter of quarters\" [value]=\"quarter.value\" [disabled]=\"quarter.disable\">{{quarter.label}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n",
94
+ selector: "quarter-tag"
95
+ },] }
96
+ ];
97
+ QuarterTagComponent.ctorParameters = () => [];
98
+ QuarterTagComponent.propDecorators = {
99
+ lockedDate: [{ type: Input }]
100
+ };
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhcnRlci10YWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZGF0ZS10YWdzL3F1YXJ0ZXItdGFnL3F1YXJ0ZXItdGFnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUd2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsYUFBYTtBQUNiLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQU1qQyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsZUFBZTtJQUtwRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBTEgsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixhQUFRLEdBQVUsRUFBRSxDQUFDO1FBbUZ2QixlQUFVLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNwQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFFbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ2xDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3hDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUU1QyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDdEYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ3BCLE1BQU0sR0FBRyxLQUFLLENB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IElucHV0LCBPbkluaXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SURhdGVUYWd9IGZyb20gXCIuLi8uLi9tb2RlbHMvc2VydmVyVGFnc1wiO1xyXG5pbXBvcnQge01vbWVudH0gZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQge0FueVRhZ0NvbXBvbmVudH0gZnJvbSBcIi4uL2RhdGUtdGFnLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge01hdFNlbGVjdENoYW5nZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NlbGVjdFwiO1xyXG4vLyBAdHMtaWdub3JlXHJcbmNvbnN0IG1vbWVudCA9IHJlcXVpcmUoXCJtb21lbnRcIik7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHRlbXBsYXRlVXJsOiBcInF1YXJ0ZXItdGFnLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzZWxlY3RvcjogXCJxdWFydGVyLXRhZ1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUXVhcnRlclRhZ0NvbXBvbmVudCBleHRlbmRzIEFueVRhZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSBsb2NrZWREYXRlOiBhbnlbXSA9IFtdO1xyXG4gICAgc2VsZWN0ZWRWYWx1ZSA9IDA7XHJcbiAgICBxdWFydGVyczogYW55W10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICB0aGlzLmluaXROYW1lKCk7XHJcbiAgICAgIHRoaXMucXVhcnRlcnMgPSB0aGlzLmdldFF1YXJ0ZXJPcHRpb25zKCk7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IHF1YXJ0ZXIgb2YgdGhpcy5xdWFydGVycykge1xyXG4gICAgICAgICAgcXVhcnRlci5kaXNhYmxlID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgaWYgKHF1YXJ0ZXIuaXNTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHF1YXJ0ZXIudmFsdWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaG9zZW5UYWdIYW5kbGVyKHF1YXJ0ZXIudmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuZGF0ZUZpbHRlcihxdWFydGVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGluaXROYW1lKCkge1xyXG4gICAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICAgIHRoaXMubmFtZSA9IFwiUXVhcnRlclwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlU2VsZWN0SGFuZGxlcihldmVudDogTWF0U2VsZWN0Q2hhbmdlKSB7XHJcbiAgICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcihldmVudC52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hvc2VuVGFnSGFuZGxlcih2YWx1ZSkge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSAqIDEwMDApO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdERhdGU6IE1vbWVudCA9IG1vbWVudC51dGMoZGF0ZSk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0VGFnOiBJRGF0ZVRhZyA9IHtcclxuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxyXG4gICAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQocmVzdWx0RGF0ZS5mb3JtYXQoXCJYXCIpLCAxMCksXHJcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldFF1YXJ0ZXJMYWJlbChyZXN1bHREYXRlLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICBsb2NrZWQ6ICF0aGlzLmRhdGVGaWx0ZXIodmFsdWUpXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChyZXN1bHRUYWcpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFF1YXJ0ZXJPcHRpb25zKCkge1xyXG4gICAgICAgIGNvbnN0IHF1YXJ0ZXJzQmVmb3JlVG9kYXkgPSA4O1xyXG4gICAgICAgIGNvbnN0IHF1YXJ0ZXJzQWZ0ZXJUb2RheSA9IDg7XHJcbiAgICAgICAgY29uc3QgZGF0ZU5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgY29uc3QgZGF0ZU5vd1VuaXggPSB0aGlzLmdldFVUQ1RpbWVzdGFtcChkYXRlTm93KTtcclxuICAgICAgICBsZXQgZGVmYXVsdFZhbHVlID0gZGF0ZU5vd1VuaXg7XHJcbiAgICAgICAgbGV0IHRlbXBEYXRlID0gIG5ldyBEYXRlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlKSB7XHJcbiAgICAgICAgICBkZWZhdWx0VmFsdWUgPSB0aGlzLmRlZmF1bHRWYWx1ZSAqIDEwMDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYWZ0ZXJEZWZhdWx0ID0gTWF0aC5yb3VuZChNYXRoLmFicyhkYXRlTm93VW5peCAtIGRlZmF1bHRWYWx1ZSkgLyA3Nzc2MDAwMDAwKSArIHF1YXJ0ZXJzQWZ0ZXJUb2RheTtcclxuICAgICAgICBhZnRlckRlZmF1bHQgPSBNYXRoLm1pbihhZnRlckRlZmF1bHQsIDEwMCk7XHJcbiAgICAgICAgbGV0IGksIHRlbXBWYWx1ZTtcclxuICAgICAgICBjb25zdCB0b19yZXR1cm46IGFueVtdID0gW107XHJcbiAgICAgICAgZm9yIChpID0gMCAtIHF1YXJ0ZXJzQmVmb3JlVG9kYXk7IGkgPD0gYWZ0ZXJEZWZhdWx0OyBpKyspIHtcclxuICAgICAgICAgICAgdGVtcERhdGUgPSBuZXcgRGF0ZShkZWZhdWx0VmFsdWUpO1xyXG4gICAgICAgICAgICB0ZW1wRGF0ZS5zZXREYXRlKDE1KTtcclxuICAgICAgICAgICAgdGVtcERhdGUuc2V0TW9udGgodGVtcERhdGUuZ2V0TW9udGgoKSArIDMgKiBpKTtcclxuICAgICAgICAgICAgdGVtcFZhbHVlID0gdGhpcy5nZXRVVENUaW1lc3RhbXAodGVtcERhdGUpO1xyXG4gICAgICAgICAgICB0b19yZXR1cm4ucHVzaCh7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGVtcFZhbHVlIC8gMTAwMCxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldFF1YXJ0ZXJMYWJlbCh0ZW1wVmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgaXNTZWxlY3RlZDogKGkgPT09IDApLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRvX3JldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFF1YXJ0ZXJMYWJlbCh0aW1lVmFsdWUpIHtcclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGltZVZhbHVlKTtcclxuICAgICAgICByZXR1cm4gXCJRXCIgKyBNYXRoLmZsb29yKChkYXRlLmdldE1vbnRoKCkgLyAzKSArIDEpICsgXCIgXCIgKyBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRVVENUaW1lc3RhbXAoZGF0ZSkge1xyXG4gICAgICAgIGNvbnN0IG1vbnRoID0gTWF0aC5mbG9vcihkYXRlLmdldE1vbnRoKCkgLyAzKSAqIDM7XHJcbiAgICAgICAgcmV0dXJuIERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgbW9udGgsIDEsIDEyLCAwLCAwLCAwKTtcclxuICAgIH1cclxuXHJcbiAgZGF0ZUZpbHRlciA9IChkYXRlKSA9PiB7XHJcbiAgICBsZXQgc3RhdHVzID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmxvY2tlZERhdGUuZm9yRWFjaCh0aW1lc3RhbXAgPT4ge1xyXG4gICAgICBjb25zdCBsb2NrRGF0ZSA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XHJcbiAgICAgIGNvbnN0IHF1YXJ0ZXJEYXRlID0gbW9tZW50LnVuaXgoZGF0ZS52YWx1ZSk7XHJcblxyXG4gICAgICBpZiAobG9ja0RhdGUueWVhcigpID09PSBxdWFydGVyRGF0ZS55ZWFyKCkgJiYgbG9ja0RhdGUubW9udGgoKSA9PT0gcXVhcnRlckRhdGUubW9udGgoKSkge1xyXG4gICAgICAgIGRhdGUuZGlzYWJsZSA9IHRydWU7XHJcbiAgICAgICAgc3RhdHVzID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBzdGF0dXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,124 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import { AnyTagComponent } from "../date-tag.component";
3
+ import { FormControl } from "@angular/forms";
4
+ import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from "@angular/material/core";
5
+ import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from "@angular/material-moment-adapter";
6
+ // @ts-ignore
7
+ const moment = require("moment");
8
+ const WEEK_FORMATS = {
9
+ parse: {
10
+ dateInput: "WW-YYYY",
11
+ },
12
+ display: {
13
+ dateInput: "[Week] WW, YYYY",
14
+ monthYearLabel: "MMMM YYYY",
15
+ dateA11yLabel: "LL",
16
+ monthYearA11yLabel: "MMMM YYYY"
17
+ },
18
+ };
19
+ const ɵ0 = WEEK_FORMATS;
20
+ export class WeekTagComponent extends AnyTagComponent {
21
+ constructor() {
22
+ super();
23
+ this.lockedDate = [];
24
+ this.date = new FormControl(moment());
25
+ this.selectedValue = "";
26
+ this.dateFilter = (date) => {
27
+ const calendarDate = moment(date);
28
+ let status = true;
29
+ this.lockedDate.forEach(timestamp => {
30
+ const lockDate = moment.unix(timestamp);
31
+ return status = !(lockDate.week() === calendarDate.week() && lockDate.year() === calendarDate.year());
32
+ });
33
+ return status;
34
+ };
35
+ }
36
+ ngOnInit() {
37
+ this.initName();
38
+ const now = new Date();
39
+ now.setHours(0, 0, 0, 0);
40
+ const dateUnix = this.getUTCTimestamp(this.getMonday(now));
41
+ let default_value_time = dateUnix;
42
+ const one_day_in_seconds = 86400;
43
+ if (this.defaultValue) {
44
+ default_value_time = (this.defaultValue + one_day_in_seconds) * 1000;
45
+ }
46
+ const default_date = new Date(default_value_time);
47
+ const weekNumber = this.getWeekNumberByDate(default_date);
48
+ const yearNumber = default_date.getFullYear();
49
+ const dateStr = `${yearNumber}-W${weekNumber}`;
50
+ this.dateObj.date = dateStr;
51
+ this.selectedValue = dateStr;
52
+ this.chosenTagHandler(default_date);
53
+ }
54
+ initName() {
55
+ if (!this.name) {
56
+ this.name = "Week";
57
+ }
58
+ }
59
+ chosenDateHandler(normalizedDay) {
60
+ const date = moment(normalizedDay).unix();
61
+ this.chosenTagHandler(date);
62
+ }
63
+ chosenTagHandler(value) {
64
+ let date;
65
+ console.log("chosenTag", value);
66
+ if (value > 1000000000000) {
67
+ date = new Date(value);
68
+ }
69
+ else {
70
+ date = new Date(value * 1000);
71
+ }
72
+ const resultDate = moment(date);
73
+ const resultTag = {
74
+ name: this.name,
75
+ value: parseInt(resultDate.format("X"), 10),
76
+ label: this.getWeekLabel(date),
77
+ locked: !this.dateFilter(value)
78
+ };
79
+ console.log("resultTag", resultTag);
80
+ this.dateChange.emit(resultTag);
81
+ }
82
+ getWeekLabel(date) {
83
+ return "W" + this.pad(moment(date).isoWeek(), 2) +
84
+ " " + moment(date).year();
85
+ }
86
+ getUTCTimestamp(date) {
87
+ return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), 12, 0, 0, 0);
88
+ }
89
+ getMonday(date) {
90
+ const day = date.getDay() || 7;
91
+ if (day !== 1) {
92
+ date.setHours(-24 * (day - 1));
93
+ }
94
+ return date;
95
+ }
96
+ getWeekNumberByDate(date) {
97
+ return this.pad(moment(date).isoWeek(), 2);
98
+ }
99
+ pad(n, width, z = "0") {
100
+ z = z || "0";
101
+ n = n + "";
102
+ return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
103
+ }
104
+ }
105
+ WeekTagComponent.decorators = [
106
+ { type: Component, args: [{
107
+ template: "<div>\r\n <mat-form-field class=\"date-select-box\">\r\n <input\r\n matInput\r\n placeholder=\"{{name}}\"\r\n name=\"week\"\r\n [formControl]=\"date\"\r\n [matDatepicker]=\"datepicker\"\r\n [matDatepickerFilter]=\"dateFilter\"\r\n (ngModelChange)=\"chosenDateHandler($event)\">\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n <mat-datepicker\r\n #datepicker\r\n startView=\"month\"\r\n ></mat-datepicker>\r\n </mat-form-field>\r\n</div>\r\n",
108
+ selector: "week-tag",
109
+ providers: [
110
+ {
111
+ provide: DateAdapter,
112
+ useClass: MomentDateAdapter,
113
+ deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
114
+ },
115
+ { provide: MAT_DATE_FORMATS, useValue: ɵ0 },
116
+ ]
117
+ },] }
118
+ ];
119
+ WeekTagComponent.ctorParameters = () => [];
120
+ WeekTagComponent.propDecorators = {
121
+ lockedDate: [{ type: Input }]
122
+ };
123
+ export { ɵ0 };
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vlay10YWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZGF0ZS10YWdzL3dlZWstdGFnL3dlZWstdGFnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUd2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEYsT0FBTyxFQUFDLCtCQUErQixFQUFFLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDcEcsYUFBYTtBQUNiLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVqQyxNQUFNLFlBQVksR0FBRztJQUNuQixLQUFLLEVBQUU7UUFDTCxTQUFTLEVBQUUsU0FBUztLQUNyQjtJQUNELE9BQU8sRUFBRTtRQUNQLFNBQVMsRUFBRSxpQkFBaUI7UUFDNUIsY0FBYyxFQUFFLFdBQVc7UUFDM0IsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsV0FBVztLQUNoQztDQUNGLENBQUM7V0FXMEMsWUFBWTtBQUd4RCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZUFBZTtJQU1qRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBTkgsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQUVoQyxTQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNqQyxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQXVDbkIsZUFBVSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEIs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QUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxHQUFHO1FBQzNCLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO1FBQ2IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDWCxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0UsQ0FBQzs7O1lBakhKLFNBQVMsU0FBQztnQkFDUCxnbkJBQXNDO2dCQUN0QyxRQUFRLEVBQUUsVUFBVTtnQkFDcEIsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxXQUFXO3dCQUNwQixRQUFRLEVBQUUsaUJBQWlCO3dCQUMzQixJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsK0JBQStCLENBQUM7cUJBQ3pEO29CQUNELEVBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsSUFBYyxFQUFDO2lCQUNwRDthQUNKOzs7O3lCQUVJLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtJRGF0ZVRhZ30gZnJvbSBcIi4uLy4uL21vZGVscy9zZXJ2ZXJUYWdzXCI7XHJcbmltcG9ydCB7TW9tZW50fSBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7QW55VGFnQ29tcG9uZW50fSBmcm9tIFwiLi4vZGF0ZS10YWcuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7Rm9ybUNvbnRyb2x9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0RhdGVBZGFwdGVyLCBNQVRfREFURV9GT1JNQVRTLCBNQVRfREFURV9MT0NBTEV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XHJcbmltcG9ydCB7TUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgTW9tZW50RGF0ZUFkYXB0ZXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlclwiO1xyXG4vLyBAdHMtaWdub3JlXHJcbmNvbnN0IG1vbWVudCA9IHJlcXVpcmUoXCJtb21lbnRcIik7XHJcblxyXG5jb25zdCBXRUVLX0ZPUk1BVFMgPSB7XHJcbiAgcGFyc2U6IHtcclxuICAgIGRhdGVJbnB1dDogXCJXVy1ZWVlZXCIsXHJcbiAgfSxcclxuICBkaXNwbGF5OiB7XHJcbiAgICBkYXRlSW5wdXQ6IFwiW1dlZWtdIFdXLCBZWVlZXCIsXHJcbiAgICBtb250aFllYXJMYWJlbDogXCJNTU1NIFlZWVlcIixcclxuICAgIGRhdGVBMTF5TGFiZWw6IFwiTExcIixcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogXCJNTU1NIFlZWVlcIlxyXG4gIH0sXHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHRlbXBsYXRlVXJsOiBcIndlZWstdGFnLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzZWxlY3RvcjogXCJ3ZWVrLXRhZ1wiLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcclxuICAgICAgICB1c2VDbGFzczogTW9tZW50RGF0ZUFkYXB0ZXIsXHJcbiAgICAgICAgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU10sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogV0VFS19GT1JNQVRTfSxcclxuICAgIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXZWVrVGFnQ29tcG9uZW50IGV4dGVuZHMgQW55VGFnQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIGxvY2tlZERhdGU6IGFueVtdID0gW107XHJcblxyXG4gICAgZGF0ZSA9IG5ldyBGb3JtQ29udHJvbChtb21lbnQoKSk7XHJcbiAgICBzZWxlY3RlZFZhbHVlID0gXCJcIjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICB0aGlzLmluaXROYW1lKCk7XHJcblxyXG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBub3cuc2V0SG91cnMoMCwgMCwgMCwgMCk7XHJcblxyXG4gICAgICBjb25zdCBkYXRlVW5peCA9IHRoaXMuZ2V0VVRDVGltZXN0YW1wKHRoaXMuZ2V0TW9uZGF5KG5vdykpO1xyXG4gICAgICBsZXQgZGVmYXVsdF92YWx1ZV90aW1lID0gZGF0ZVVuaXg7XHJcbiAgICAgIGNvbnN0IG9uZV9kYXlfaW5fc2Vjb25kcyA9IDg2NDAwO1xyXG4gICAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICBkZWZhdWx0X3ZhbHVlX3RpbWUgPSAodGhpcy5kZWZhdWx0VmFsdWUgKyBvbmVfZGF5X2luX3NlY29uZHMpICogMTAwMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgZGVmYXVsdF9kYXRlID0gbmV3IERhdGUoZGVmYXVsdF92YWx1ZV90aW1lKTtcclxuICAgICAgY29uc3Qgd2Vla051bWJlciA9IHRoaXMuZ2V0V2Vla051bWJlckJ5RGF0ZShkZWZhdWx0X2RhdGUpO1xyXG4gICAgICBjb25zdCB5ZWFyTnVtYmVyID0gZGVmYXVsdF9kYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSBgJHt5ZWFyTnVtYmVyfS1XJHt3ZWVrTnVtYmVyfWA7XHJcbiAgICAgIHRoaXMuZGF0ZU9iai5kYXRlID0gZGF0ZVN0cjtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gZGF0ZVN0cjtcclxuICAgICAgdGhpcy5jaG9zZW5UYWdIYW5kbGVyKGRlZmF1bHRfZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdE5hbWUoKSB7XHJcbiAgICAgIGlmICghdGhpcy5uYW1lKSB7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gXCJXZWVrXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjaG9zZW5EYXRlSGFuZGxlcihub3JtYWxpemVkRGF5KSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQobm9ybWFsaXplZERheSkudW5peCgpO1xyXG4gICAgICB0aGlzLmNob3NlblRhZ0hhbmRsZXIoZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGF0ZUZpbHRlciA9IChkYXRlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNhbGVuZGFyRGF0ZSA9IG1vbWVudChkYXRlKTtcclxuICAgICAgbGV0IHN0YXR1cyA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmxvY2tlZERhdGUuZm9yRWFjaCh0aW1lc3RhbXAgPT4ge1xyXG4gICAgICAgIGNvbnN0IGxvY2tEYXRlID0gbW9tZW50LnVuaXgodGltZXN0YW1wKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHN0YXR1cyA9ICEobG9ja0RhdGUud2VlaygpID09PSBjYWxlbmRhckRhdGUud2VlaygpICYmIGxvY2tEYXRlLnllYXIoKSA9PT0gY2FsZW5kYXJEYXRlLnllYXIoKSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIHN0YXR1cztcclxuICAgIH1cclxuXHJcbiAgICBjaG9zZW5UYWdIYW5kbGVyKHZhbHVlKSB7XHJcbiAgICAgICAgbGV0IGRhdGU7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJjaG9zZW5UYWdcIiwgdmFsdWUpO1xyXG4gICAgICAgIGlmICh2YWx1ZSA+IDEwMDAwMDAwMDAwMDApIHtcclxuICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSAqIDEwMDApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcmVzdWx0RGF0ZTogTW9tZW50ID0gbW9tZW50KGRhdGUpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdFRhZzogSURhdGVUYWcgPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcclxuICAgICAgICAgICAgdmFsdWU6IHBhcnNlSW50KHJlc3VsdERhdGUuZm9ybWF0KFwiWFwiKSwgMTApLFxyXG4gICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRXZWVrTGFiZWwoZGF0ZSksXHJcbiAgICAgICAgICAgIGxvY2tlZDogIXRoaXMuZGF0ZUZpbHRlcih2YWx1ZSlcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwicmVzdWx0VGFnXCIsIHJlc3VsdFRhZyk7XHJcbiAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQocmVzdWx0VGFnKTtcclxuICAgICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0V2Vla0xhYmVsKGRhdGUpIHtcclxuICAgICAgcmV0dXJuIFwiV1wiICsgdGhpcy5wYWQoIG1vbWVudChkYXRlKS5pc29XZWVrKCksIDIpICtcclxuICAgICAgICBcIiBcIiArIG1vbWVudChkYXRlKS55ZWFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRVVENUaW1lc3RhbXAoZGF0ZSkge1xyXG4gICAgICAgIHJldHVybiBEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCksIDEyLCAwLCAwLCAwKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldE1vbmRheShkYXRlKSB7XHJcbiAgICAgICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXkoKSB8fCA3O1xyXG4gICAgICAgIGlmIChkYXkgIT09IDEpIHtcclxuICAgICAgICAgICAgZGF0ZS5zZXRIb3VycygtMjQgKiAoZGF5IC0gMSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFdlZWtOdW1iZXJCeURhdGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5wYWQobW9tZW50KGRhdGUpLmlzb1dlZWsoKSwgMik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwYWQobiwgd2lkdGgsIHogPSBcIjBcIikge1xyXG4gICAgICB6ID0geiB8fCBcIjBcIjtcclxuICAgICAgbiA9IG4gKyBcIlwiO1xyXG4gICAgICByZXR1cm4gbi5sZW5ndGggPj0gd2lkdGggPyBuIDogbmV3IEFycmF5KHdpZHRoIC0gbi5sZW5ndGggKyAxKS5qb2luKHopICsgbjtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,92 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import { FormControl } from "@angular/forms";
3
+ import { AnyTagComponent } from "../date-tag.component";
4
+ import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from "@angular/material/core";
5
+ import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from "@angular/material-moment-adapter";
6
+ // @ts-ignore
7
+ const moment = require("moment");
8
+ const YEAR_FORMATS = {
9
+ parse: {
10
+ dateInput: "YYYY",
11
+ },
12
+ display: {
13
+ dateInput: "YYYY",
14
+ monthYearLabel: "MMMM YYYY",
15
+ dateA11yLabel: "LL",
16
+ monthYearA11yLabel: "MMMM YYYY"
17
+ },
18
+ };
19
+ const ɵ0 = YEAR_FORMATS;
20
+ export class YearTagComponent extends AnyTagComponent {
21
+ constructor() {
22
+ super();
23
+ this.lockedDate = [];
24
+ this.date = new FormControl(moment());
25
+ this.dateFilter = (date) => {
26
+ const calendarDateYear = moment(date).year();
27
+ let status = true;
28
+ this.lockedDate.forEach(timestamp => {
29
+ const lockDate = moment.unix(timestamp);
30
+ return status = !(lockDate.year() === calendarDateYear);
31
+ });
32
+ return status;
33
+ };
34
+ }
35
+ initDate() {
36
+ if (this.defaultValue) {
37
+ this.dateObj.date = moment(new Date(this.defaultValue * 1000)).utc().format("YYYY");
38
+ }
39
+ else {
40
+ this.dateObj.date = moment(new Date()).format("YYYY");
41
+ }
42
+ }
43
+ initName() {
44
+ if (!this.name) {
45
+ this.name = "Year";
46
+ }
47
+ }
48
+ chosenTagHandler(value) {
49
+ const date = new Date();
50
+ const year = moment(value).year();
51
+ date.setTime(0);
52
+ date.setFullYear(year, 0, 1);
53
+ const resultDate = moment.utc(date);
54
+ resultDate.hour(12);
55
+ const resultTag = {
56
+ name: this.name,
57
+ value: parseInt(resultDate.format("X"), 10),
58
+ label: resultDate.format("YYYY"),
59
+ locked: !this.dateFilter(value)
60
+ };
61
+ console.log("resultTag", resultTag);
62
+ this.dateChange.emit(resultTag);
63
+ }
64
+ chosenYearHandler(normalizedYear, datepicker) {
65
+ const ctrlValue = this.date.value;
66
+ ctrlValue.year(normalizedYear.year());
67
+ this.date.setValue(ctrlValue);
68
+ this.dateObj.date = this.date.value;
69
+ this.chosenTagHandler(this.date.value);
70
+ datepicker.close();
71
+ }
72
+ }
73
+ YearTagComponent.decorators = [
74
+ { type: Component, args: [{
75
+ template: "<div>\r\n <mat-form-field class=\"date-select-box\">\r\n <input\r\n matInput\r\n placeholder=\"{{name}}\"\r\n name=\"Year\"\r\n [formControl]=\"date\"\r\n [matDatepicker]=\"datepicker\"\r\n [matDatepickerFilter]=\"dateFilter\">\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n <mat-datepicker\r\n #datepicker\r\n startView=\"multi-year\"\r\n (yearSelected)=\"chosenYearHandler($event, datepicker)\"\r\n panelClass=\"date-month-picker\"\r\n ></mat-datepicker>\r\n </mat-form-field>\r\n</div>\r\n",
76
+ selector: "year-tag",
77
+ providers: [
78
+ {
79
+ provide: DateAdapter,
80
+ useClass: MomentDateAdapter,
81
+ deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
82
+ },
83
+ { provide: MAT_DATE_FORMATS, useValue: ɵ0 },
84
+ ]
85
+ },] }
86
+ ];
87
+ YearTagComponent.ctorParameters = () => [];
88
+ YearTagComponent.propDecorators = {
89
+ lockedDate: [{ type: Input }]
90
+ };
91
+ export { ɵ0 };
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci10YWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZGF0ZS10YWdzL3llYXItdGFnL3llYXItdGFnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFJM0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEYsT0FBTyxFQUFDLCtCQUErQixFQUFFLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDcEcsYUFBYTtBQUNiLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVqQyxNQUFNLFlBQVksR0FBRztJQUNuQixLQUFLLEVBQUU7UUFDTCxTQUFTLEVBQUUsTUFBTTtLQUNsQjtJQUNELE9BQU8sRUFBRTtRQUNQLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLGNBQWMsRUFBRSxXQUFXO1FBQzNCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLGtCQUFrQixFQUFFLFdBQVc7S0FDaEM7Q0FDRixDQUFDO1dBVzBDLFlBQVk7QUFJeEQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGVBQWU7SUFLbkQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUxELGVBQVUsR0FBVSxFQUFFLENBQUM7UUFFaEMsU0FBSSxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFnRGpDLGVBQVUsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3BCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLElB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UyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxXQUFXO3dCQUNwQixRQUFRLEVBQUUsaUJBQWlCO3dCQUMzQixJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsK0JBQStCLENBQUM7cUJBQ3pEO29CQUNELEVBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsSUFBYyxFQUFDO2lCQUNwRDthQUNKOzs7O3lCQUdFLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtGb3JtQ29udHJvbH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7TWF0RGF0ZXBpY2tlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXJcIjtcclxuaW1wb3J0IHtNb21lbnR9IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHtJRGF0ZVRhZ30gZnJvbSBcIi4uLy4uL21vZGVscy9zZXJ2ZXJUYWdzXCI7XHJcbmltcG9ydCB7QW55VGFnQ29tcG9uZW50fSBmcm9tIFwiLi4vZGF0ZS10YWcuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMsIE1BVF9EQVRFX0xPQ0FMRX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuaW1wb3J0IHtNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCBNb21lbnREYXRlQWRhcHRlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyXCI7XHJcbi8vIEB0cy1pZ25vcmVcclxuY29uc3QgbW9tZW50ID0gcmVxdWlyZShcIm1vbWVudFwiKTtcclxuXHJcbmNvbnN0IFlFQVJfRk9STUFUUyA9IHtcclxuICBwYXJzZToge1xyXG4gICAgZGF0ZUlucHV0OiBcIllZWVlcIixcclxuICB9LFxyXG4gIGRpc3BsYXk6IHtcclxuICAgIGRhdGVJbnB1dDogXCJZWVlZXCIsXHJcbiAgICBtb250aFllYXJMYWJlbDogXCJNTU1NIFlZWVlcIixcclxuICAgIGRhdGVBMTF5TGFiZWw6IFwiTExcIixcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogXCJNTU1NIFlZWVlcIlxyXG4gIH0sXHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHRlbXBsYXRlVXJsOiBcInllYXItdGFnLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzZWxlY3RvcjogXCJ5ZWFyLXRhZ1wiLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcclxuICAgICAgICB1c2VDbGFzczogTW9tZW50RGF0ZUFkYXB0ZXIsXHJcbiAgICAgICAgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU10sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogWUVBUl9GT1JNQVRTfSxcclxuICAgIF0sXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWWVhclRhZ0NvbXBvbmVudCBleHRlbmRzIEFueVRhZ0NvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgbG9ja2VkRGF0ZTogYW55W10gPSBbXTtcclxuXHJcbiAgZGF0ZSA9IG5ldyBGb3JtQ29udHJvbChtb21lbnQoKSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIGluaXREYXRlKCkge1xyXG4gICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZGF0ZU9iai5kYXRlID0gbW9tZW50KG5ldyBEYXRlKHRoaXMuZGVmYXVsdFZhbHVlICogMTAwMCkpLnV0YygpLmZvcm1hdChcIllZWVlcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVPYmouZGF0ZSA9IG1vbWVudChuZXcgRGF0ZSgpKS5mb3JtYXQoXCJZWVlZXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdE5hbWUoKSB7XHJcbiAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICB0aGlzLm5hbWUgPSBcIlllYXJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNob3NlblRhZ0hhbmRsZXIodmFsdWUpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IHllYXIgPSBtb21lbnQodmFsdWUpLnllYXIoKTtcclxuICAgICAgZGF0ZS5zZXRUaW1lKDApO1xyXG4gICAgICBkYXRlLnNldEZ1bGxZZWFyKHllYXIsIDAsIDEpO1xyXG4gICAgICBjb25zdCByZXN1bHREYXRlOiBNb21lbnQgPSBtb21lbnQudXRjKGRhdGUpO1xyXG4gICAgICByZXN1bHREYXRlLmhvdXIoMTIpO1xyXG4gICAgICBjb25zdCByZXN1bHRUYWc6IElEYXRlVGFnID0ge1xyXG4gICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxyXG4gICAgICAgICAgdmFsdWU6IHBhcnNlSW50KHJlc3VsdERhdGUuZm9ybWF0KFwiWFwiKSwgMTApLFxyXG4gICAgICAgICAgbGFiZWw6IHJlc3VsdERhdGUuZm9ybWF0KFwiWVlZWVwiKSxcclxuICAgICAgICAgIGxvY2tlZDogIXRoaXMuZGF0ZUZpbHRlcih2YWx1ZSlcclxuICAgICAgfTtcclxuICAgICAgY29uc29sZS5sb2coXCJyZXN1bHRUYWdcIiwgcmVzdWx0VGFnKTtcclxuICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQocmVzdWx0VGFnKTtcclxuICB9XHJcblxyXG4gIGNob3NlblllYXJIYW5kbGVyKG5vcm1hbGl6ZWRZZWFyOiBNb21lbnQsIGRhdGVwaWNrZXI6IE1hdERhdGVwaWNrZXI8TW9tZW50Pikge1xyXG4gICAgY29uc3QgY3RybFZhbHVlID0gdGhpcy5kYXRlLnZhbHVlO1xyXG4gICAgY3RybFZhbHVlLnllYXIobm9ybWFsaXplZFllYXIueWVhcigpKTtcclxuXHJcbiAgICB0aGlzLmRhdGUuc2V0VmFsdWUoY3RybFZhbHVlKTtcclxuICAgIHRoaXMuZGF0ZU9iai5kYXRlID0gdGhpcy5kYXRlLnZhbHVlO1xyXG4gICAgdGhpcy5jaG9zZW5UYWdIYW5kbGVyKHRoaXMuZGF0ZS52YWx1ZSk7XHJcblxyXG4gICAgZGF0ZXBpY2tlci5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUZpbHRlciA9IChkYXRlKSA9PiB7XHJcbiAgICBjb25zdCBjYWxlbmRhckRhdGVZZWFyID0gbW9tZW50KGRhdGUpLnllYXIoKTtcclxuICAgIGxldCBzdGF0dXMgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMubG9ja2VkRGF0ZS5mb3JFYWNoKHRpbWVzdGFtcCA9PiB7XHJcbiAgICAgIGNvbnN0IGxvY2tEYXRlID0gbW9tZW50LnVuaXgodGltZXN0YW1wKTtcclxuXHJcbiAgICAgIHJldHVybiBzdGF0dXMgPSAhKGxvY2tEYXRlLnllYXIoKSA9PT0gY2FsZW5kYXJEYXRlWWVhcilcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBzdGF0dXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,46 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from "@angular/core";
2
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
+ export class CheckboxComponent {
4
+ constructor() {
5
+ this.disabled = false;
6
+ this.checkedChange = new EventEmitter();
7
+ this.onChange = () => { };
8
+ this.onTouched = () => { };
9
+ }
10
+ writeValue(value) {
11
+ this.checkedStatus = value;
12
+ }
13
+ registerOnChange(fn) {
14
+ this.onChange = fn;
15
+ }
16
+ registerOnTouched(fn) {
17
+ this.onTouched = fn;
18
+ }
19
+ setDisabledState(isDisabled) {
20
+ this.disabled = isDisabled;
21
+ }
22
+ setValue() {
23
+ this.checkedStatus = !this.checkedStatus;
24
+ this.onChange(this.checkedStatus);
25
+ this.checkedChange.emit(this.checkedStatus);
26
+ this.onTouched();
27
+ }
28
+ }
29
+ CheckboxComponent.decorators = [
30
+ { type: Component, args: [{
31
+ selector: 'dr-checkbox',
32
+ template: "<label>\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"checkedStatus\"\r\n [disabled]=\"disabled\"\r\n (click)=\"setValue()\">\r\n <span>\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n",
33
+ providers: [
34
+ { provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }
35
+ ],
36
+ changeDetection: ChangeDetectionStrategy.OnPush,
37
+ encapsulation: ViewEncapsulation.ShadowDom,
38
+ styles: ["input+span{vertical-align:middle;line-height:30px}input+span,input+span:before{box-sizing:content-box!important;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important}input{visibility:hidden;position:absolute}label input+span{position:relative;z-index:19;display:inline-block;margin:0 5px 0 0;line-height:17px;min-height:14px;min-width:14px}label input+span:hover{cursor:pointer}label input+span:before{content:\"\";font-size:14px;border-radius:0;display:inline-block;text-align:center;vertical-align:middle;padding:1px;min-height:12px;line-height:12px;min-width:12px;margin-right:5px;border:1.5px solid #85889C;background-color:#f4f4f4;font-weight:normal;margin-top:-1px}label input+span:before,label:hover input+span:before{background-color:#fff;border-color:#85889c;color:#579bf2;border-radius:2px}label input:checked+span:before,label:hover input:checked+span:before{content:url('data:image/svg+xml; utf8, <svg width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M1 5L4.5 8.5L11 1.5\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/> </svg>');background:#579BF2;border-color:#579bf2;color:#fff}label input:disabled+span:before{border-color:#bcbcbc;pointer-events:none}label input[disabled]:checked+span:before{background:#BCBCBC;border-color:#bcbcbc;pointer-events:none}label input:not([disabled])+span:hover:after{content:\"\";width:28px;height:28px;background:#F6F7F8;border-radius:50%;position:absolute;left:-6px;top:-5px;z-index:-1}\n"]
39
+ },] }
40
+ ];
41
+ CheckboxComponent.propDecorators = {
42
+ checkedStatus: [{ type: Input }],
43
+ disabled: [{ type: Input }],
44
+ checkedChange: [{ type: Output }]
45
+ };
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBWXpFLE1BQU0sT0FBTyxpQkFBaUI7SUFWOUI7UUFjRSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ1Asa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTdDLGFBQVEsR0FBNkIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzlDLGNBQVMsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUF1Qm5DLENBQUM7SUFyQkMsVUFBVSxDQUFDLEtBQWM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUNELGdCQUFnQixDQUFFLFVBQW1CO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDOzs7WUF4Q0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2dCQUN2QixxT0FBd0M7Z0JBRXhDLFNBQVMsRUFBRTtvQkFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztpQkFDMUU7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxTQUFTOzthQUMzQzs7OzRCQUVFLEtBQUs7dUJBRUwsS0FBSzs0QkFFTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkci1jaGVja2JveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogQ2hlY2tib3hDb21wb25lbnQsIG11bHRpOiB0cnVlfVxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQElucHV0KClcclxuICBjaGVja2VkU3RhdHVzOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgY2hlY2tlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgb25DaGFuZ2U6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmNoZWNrZWRTdGF0dXMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZSgpIHtcclxuICAgIHRoaXMuY2hlY2tlZFN0YXR1cyA9ICF0aGlzLmNoZWNrZWRTdGF0dXM7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuY2hlY2tlZFN0YXR1cyk7XHJcbiAgICB0aGlzLmNoZWNrZWRDaGFuZ2UuZW1pdCh0aGlzLmNoZWNrZWRTdGF0dXMpO1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICB9XHJcbn1cclxuIl19