@semantic-components/ui 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/README.md +13 -13
  2. package/fesm2022/semantic-components-ui.mjs +8738 -1137
  3. package/fesm2022/semantic-components-ui.mjs.map +1 -1
  4. package/index.d.ts +15 -6
  5. package/lib/components/breadcrumb/breadcrumb-elipssis.d.ts +5 -0
  6. package/lib/components/breadcrumb/breadcrumb-item.d.ts +5 -0
  7. package/lib/components/breadcrumb/breadcrumb-link.d.ts +5 -0
  8. package/lib/components/breadcrumb/breadcrumb-list.d.ts +5 -0
  9. package/lib/components/breadcrumb/breadcrumb-page.d.ts +5 -0
  10. package/lib/components/breadcrumb/breadcrumb-separator.d.ts +5 -0
  11. package/lib/components/breadcrumb/breadcrumb.d.ts +6 -0
  12. package/lib/components/breadcrumb/index.d.ts +7 -0
  13. package/lib/components/button/button.d.ts +7 -0
  14. package/lib/components/button/index.d.ts +1 -0
  15. package/lib/components/editor/editor.d.ts +25 -0
  16. package/lib/components/editor/extensions/extension-blockquote.d.ts +11 -0
  17. package/lib/components/editor/extensions/extension-bold.d.ts +11 -0
  18. package/lib/components/editor/extensions/extension-bullet-list.d.ts +11 -0
  19. package/lib/components/editor/extensions/extension-code.d.ts +11 -0
  20. package/lib/components/editor/extensions/extension-color.d.ts +12 -0
  21. package/lib/components/editor/extensions/extension-font-family.d.ts +11 -0
  22. package/lib/components/editor/extensions/extension-heading.d.ts +9 -0
  23. package/lib/components/editor/extensions/extension-highlight.d.ts +11 -0
  24. package/lib/components/editor/extensions/extension-history.d.ts +12 -0
  25. package/lib/components/editor/extensions/extension-horizontal-rule.d.ts +11 -0
  26. package/lib/components/editor/extensions/extension-image.d.ts +15 -0
  27. package/lib/components/editor/extensions/extension-italic.d.ts +11 -0
  28. package/lib/components/editor/extensions/extension-link.d.ts +14 -0
  29. package/lib/components/editor/extensions/extension-ordered-list.d.ts +11 -0
  30. package/lib/components/editor/extensions/extension-paragraph.d.ts +8 -0
  31. package/lib/components/editor/extensions/extension-strike.d.ts +11 -0
  32. package/lib/components/editor/extensions/extension-table.d.ts +30 -0
  33. package/lib/components/editor/extensions/extension-text-align.d.ts +13 -0
  34. package/lib/components/editor/extensions/extension-text-style.d.ts +11 -0
  35. package/lib/components/editor/extensions/extension-underline.d.ts +11 -0
  36. package/lib/components/editor/extensions/extension-youtube.d.ts +15 -0
  37. package/lib/components/editor/extensions/extensions.d.ts +24 -0
  38. package/lib/components/editor/toolbar/add-cell-attribute-dialog.d.ts +18 -0
  39. package/lib/components/editor/toolbar/add-image-dialog.d.ts +21 -0
  40. package/lib/components/editor/toolbar/add-link-dialog.d.ts +15 -0
  41. package/lib/components/editor/toolbar/add-video-dialog.d.ts +26 -0
  42. package/lib/components/editor/toolbar/extensions-group.d.ts +5 -0
  43. package/lib/components/editor/toolbar/extensions-separator.d.ts +5 -0
  44. package/lib/components/input/index.d.ts +1 -0
  45. package/lib/components/input/input.d.ts +5 -0
  46. package/lib/components/label/index.d.ts +1 -0
  47. package/lib/components/label/label.d.ts +5 -0
  48. package/lib/components/nav/index.d.ts +5 -0
  49. package/lib/components/nav/nav-button-base.d.ts +5 -0
  50. package/lib/components/nav/nav-button.d.ts +6 -0
  51. package/lib/components/nav/nav-item-dropdown.d.ts +6 -0
  52. package/lib/components/nav/nav-item.d.ts +5 -0
  53. package/lib/components/nav/nav-link.d.ts +6 -0
  54. package/lib/components/nav/nav-list.d.ts +5 -0
  55. package/lib/components/nav/nav.d.ts +5 -0
  56. package/lib/components/paginator/index.d.ts +2 -0
  57. package/lib/components/paginator/page-event.d.ts +10 -0
  58. package/lib/components/paginator/page-item.d.ts +10 -0
  59. package/lib/components/paginator/paginator.d.ts +37 -0
  60. package/lib/components/progress/index.d.ts +1 -0
  61. package/lib/components/progress/progress.d.ts +8 -0
  62. package/lib/components/select/index.d.ts +2 -0
  63. package/lib/components/select/option.d.ts +11 -0
  64. package/lib/components/select/select-state.d.ts +9 -0
  65. package/lib/components/select/select.d.ts +40 -0
  66. package/lib/components/sidebar/constants.d.ts +2 -0
  67. package/lib/components/sidebar/index.d.ts +1 -0
  68. package/lib/components/sidebar/sidebar-content.d.ts +5 -0
  69. package/lib/components/sidebar/sidebar-footer.d.ts +5 -0
  70. package/lib/components/sidebar/sidebar-header.d.ts +5 -0
  71. package/lib/components/sidebar/sidebar-layout.d.ts +20 -0
  72. package/lib/components/sidebar/sidebar.d.ts +10 -0
  73. package/lib/components/textarea/index.d.ts +1 -0
  74. package/lib/components/textarea/textarea.d.ts +5 -0
  75. package/lib/components/theme-toggler/index.d.ts +2 -0
  76. package/lib/components/theme-toggler/theme-provider-factory.d.ts +1 -0
  77. package/lib/components/theme-toggler/theme-toggler.d.ts +9 -0
  78. package/lib/components/theme-toggler/theme.d.ts +8 -0
  79. package/lib/components/tooltip/tooltip-container.d.ts +6 -0
  80. package/{components → lib/components}/tooltip/tooltip.d.ts +5 -3
  81. package/package.json +35 -10
  82. package/components/editor/editor.d.ts +0 -5
  83. package/components/nav/index.d.ts +0 -3
  84. package/components/nav/nav-item-dropdown.component.d.ts +0 -5
  85. package/components/nav/nav-item.component.d.ts +0 -5
  86. package/components/nav/nav.component.d.ts +0 -5
  87. package/components/select/index.d.ts +0 -2
  88. package/components/select/select-option.component.d.ts +0 -7
  89. package/components/select/select.component.d.ts +0 -55
  90. package/components/tooltip/tooltip-container.d.ts +0 -7
  91. package/esm2022/components/date-picker/date-picker.component.mjs +0 -189
  92. package/esm2022/components/date-picker/index.mjs +0 -3
  93. package/esm2022/components/date-picker/inline-date-picker.component.mjs +0 -185
  94. package/esm2022/components/date-picker/month-days.component.mjs +0 -69
  95. package/esm2022/components/date-picker/month-year-header.component.mjs +0 -124
  96. package/esm2022/components/date-picker/week-days-names.component.mjs +0 -37
  97. package/esm2022/components/dropdown/dropdown-divider.component.mjs +0 -16
  98. package/esm2022/components/dropdown/dropdown-item.component.mjs +0 -33
  99. package/esm2022/components/dropdown/dropdown.component.mjs +0 -85
  100. package/esm2022/components/dropdown/index.mjs +0 -4
  101. package/esm2022/components/editor/editor.mjs +0 -16
  102. package/esm2022/components/editor/index.mjs +0 -2
  103. package/esm2022/components/nav/index.mjs +0 -4
  104. package/esm2022/components/nav/nav-item-dropdown.component.mjs +0 -148
  105. package/esm2022/components/nav/nav-item.component.mjs +0 -16
  106. package/esm2022/components/nav/nav.component.mjs +0 -16
  107. package/esm2022/components/select/index.mjs +0 -3
  108. package/esm2022/components/select/select-option.component.mjs +0 -28
  109. package/esm2022/components/select/select.component.mjs +0 -252
  110. package/esm2022/components/tooltip/index.mjs +0 -2
  111. package/esm2022/components/tooltip/tooltip-container.mjs +0 -58
  112. package/esm2022/components/tooltip/tooltip.mjs +0 -79
  113. package/esm2022/index.mjs +0 -7
  114. package/esm2022/semantic-components-ui.mjs +0 -5
  115. /package/{components → lib/components}/date-picker/date-picker.component.d.ts +0 -0
  116. /package/{components → lib/components}/date-picker/index.d.ts +0 -0
  117. /package/{components → lib/components}/date-picker/inline-date-picker.component.d.ts +0 -0
  118. /package/{components → lib/components}/date-picker/month-days.component.d.ts +0 -0
  119. /package/{components → lib/components}/date-picker/month-year-header.component.d.ts +0 -0
  120. /package/{components → lib/components}/date-picker/week-days-names.component.d.ts +0 -0
  121. /package/{components → lib/components}/dropdown/dropdown-divider.component.d.ts +0 -0
  122. /package/{components → lib/components}/dropdown/dropdown-item.component.d.ts +0 -0
  123. /package/{components → lib/components}/dropdown/dropdown.component.d.ts +0 -0
  124. /package/{components → lib/components}/dropdown/index.d.ts +0 -0
  125. /package/{components → lib/components}/editor/index.d.ts +0 -0
  126. /package/{components → lib/components}/tooltip/index.d.ts +0 -0
@@ -1,189 +0,0 @@
1
- import { Directionality } from '@angular/cdk/bidi';
2
- import { Overlay } from '@angular/cdk/overlay';
3
- import { _getEventTarget } from '@angular/cdk/platform';
4
- import { ComponentPortal } from '@angular/cdk/portal';
5
- import { CommonModule } from '@angular/common';
6
- import { ChangeDetectionStrategy, Component, Inject, Injector, LOCALE_ID, ViewEncapsulation, inject, output, signal, viewChild, } from '@angular/core';
7
- import { InlineDatePickerComponent } from './inline-date-picker.component';
8
- import * as i0 from "@angular/core";
9
- export class DatePickerComponent {
10
- localeId;
11
- dateFormatPattern = signal('');
12
- constructor(localeId) {
13
- this.localeId = localeId;
14
- }
15
- ngOnInit() {
16
- this.dateFormatPattern.set(this.getDateFormatPattern(this.localeId));
17
- }
18
- getDateFormatPattern(localeId) {
19
- const getPatternForPart = (part) => {
20
- switch (part.type) {
21
- case 'day':
22
- return 'd'.repeat(part.value.length);
23
- case 'month':
24
- return 'M'.repeat(part.value.length);
25
- case 'year':
26
- return 'y'.repeat(part.value.length);
27
- case 'literal':
28
- return part.value;
29
- default:
30
- throw new Error('no default');
31
- }
32
- };
33
- return new Intl.DateTimeFormat(localeId)
34
- .formatToParts(new Date('2022-01-01'))
35
- .map(getPatternForPart)
36
- .join('');
37
- }
38
- _injector = inject(Injector);
39
- _dir = inject(Directionality, { optional: true });
40
- _overlay = inject(Overlay);
41
- _isOpen = signal(false);
42
- _input = viewChild('input');
43
- _overlayOrigin = viewChild('overlayOrigin');
44
- _overlayRef = null;
45
- _portal = null;
46
- /** Emits when the datepicker is opened. */
47
- opened = output();
48
- /** Emits when the datepicker is closed. */
49
- closed = output();
50
- /** Emits when the user selects a date. */
51
- selected = output();
52
- /** Opens the datepicker. */
53
- open() {
54
- if (!this._input) {
55
- return;
56
- }
57
- // Focus should already be on the input, but this call is in case the datepicker is opened
58
- // programmatically. We need to call this even if the datepicker is already open, because
59
- // the user might be clicking the toggle.
60
- this._input()?.nativeElement.focus();
61
- if (this._isOpen()) {
62
- return;
63
- }
64
- this._isOpen.set(true);
65
- const overlayRef = this._getOverlayRef();
66
- overlayRef.updateSize({ width: this._overlayOrigin()?.nativeElement.offsetWidth });
67
- this._portal ??= new ComponentPortal(InlineDatePickerComponent);
68
- overlayRef.attach(this._portal);
69
- this.opened.emit();
70
- }
71
- /** Closes the datepicker. */
72
- close() {
73
- if (this._isOpen()) {
74
- this._isOpen.set(false);
75
- this._overlayRef?.detach();
76
- this.closed.emit();
77
- }
78
- }
79
- /** Creates an overlay reference for the datepicker panel. */
80
- _getOverlayRef() {
81
- if (this._overlayRef) {
82
- return this._overlayRef;
83
- }
84
- const _overlayOrigin = this._overlayOrigin();
85
- if (_overlayOrigin === undefined) {
86
- throw new Error('_overlayOrigin is undefined');
87
- }
88
- const positionStrategy = this._overlay
89
- .position()
90
- .flexibleConnectedTo(_overlayOrigin)
91
- .withFlexibleDimensions(false)
92
- .withPush(false)
93
- // .withTransformOriginOn('.mat-datepicker-panel')
94
- .withPositions([
95
- {
96
- originX: 'start',
97
- originY: 'bottom',
98
- overlayX: 'start',
99
- overlayY: 'top',
100
- },
101
- {
102
- originX: 'start',
103
- originY: 'top',
104
- overlayX: 'start',
105
- overlayY: 'bottom',
106
- //panelClass: 'mat-datepicker-above',
107
- },
108
- ]);
109
- this._overlayRef = this._overlay.create({
110
- positionStrategy,
111
- scrollStrategy: this._overlay.scrollStrategies.reposition(),
112
- direction: this._dir || 'ltr',
113
- hasBackdrop: false,
114
- });
115
- this._overlayRef.keydownEvents().subscribe((event) => {
116
- console.log(event);
117
- });
118
- this._overlayRef.outsidePointerEvents().subscribe((event) => {
119
- const target = _getEventTarget(event);
120
- const origin = this._overlayOrigin()?.nativeElement;
121
- if (target && target !== origin && !origin?.contains(target)) {
122
- this.close();
123
- }
124
- });
125
- return this._overlayRef;
126
- }
127
- /** Selects a specific date value. */
128
- _selectValue(value) {
129
- this.close();
130
- this.selected.emit(value);
131
- this._input()?.nativeElement.focus();
132
- }
133
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DatePickerComponent, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
134
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.11", type: DatePickerComponent, isStandalone: true, selector: "sc-date-picker", outputs: { opened: "opened", closed: "closed", selected: "selected" }, viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true, isSignal: true }, { propertyName: "_overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true, isSignal: true }], ngImport: i0, template: `
135
- <div class="relative max-w-sm" #overlayOrigin>
136
- <button class="absolute inset-y-0 end-0 flex items-center pe-3.5" (click)="open()">
137
- <svg
138
- class="size-4 text-gray-500 dark:text-gray-400"
139
- aria-hidden="true"
140
- xmlns="http://www.w3.org/2000/svg"
141
- fill="currentColor"
142
- viewBox="0 0 20 20"
143
- >
144
- <path
145
- d="M20 4a2 2 0 0 0-2-2h-2V1a1 1 0 0 0-2 0v1h-3V1a1 1 0 0 0-2 0v1H6V1a1 1 0 0 0-2 0v1H2a2 2 0 0 0-2 2v2h20V4ZM0 18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8H0v10Zm5-8h10a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2Z"
146
- />
147
- </svg>
148
- </button>
149
- <input
150
- class="block w-full rounded-lg border border-gray-300 bg-gray-50 p-2.5 pe-10 text-sm text-gray-900 focus:border-blue-500 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder:text-gray-400 dark:focus:border-blue-500 dark:focus:ring-blue-500"
151
- #input
152
- type="text"
153
- placeholder="Select date"
154
- />
155
- </div>
156
- {{ dateFormatPattern() }}
157
- `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
158
- }
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DatePickerComponent, decorators: [{
160
- type: Component,
161
- args: [{ selector: 'sc-date-picker', standalone: true, imports: [CommonModule, InlineDatePickerComponent], template: `
162
- <div class="relative max-w-sm" #overlayOrigin>
163
- <button class="absolute inset-y-0 end-0 flex items-center pe-3.5" (click)="open()">
164
- <svg
165
- class="size-4 text-gray-500 dark:text-gray-400"
166
- aria-hidden="true"
167
- xmlns="http://www.w3.org/2000/svg"
168
- fill="currentColor"
169
- viewBox="0 0 20 20"
170
- >
171
- <path
172
- d="M20 4a2 2 0 0 0-2-2h-2V1a1 1 0 0 0-2 0v1h-3V1a1 1 0 0 0-2 0v1H6V1a1 1 0 0 0-2 0v1H2a2 2 0 0 0-2 2v2h20V4ZM0 18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8H0v10Zm5-8h10a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2Z"
173
- />
174
- </svg>
175
- </button>
176
- <input
177
- class="block w-full rounded-lg border border-gray-300 bg-gray-50 p-2.5 pe-10 text-sm text-gray-900 focus:border-blue-500 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder:text-gray-400 dark:focus:border-blue-500 dark:focus:ring-blue-500"
178
- #input
179
- type="text"
180
- placeholder="Select date"
181
- />
182
- </div>
183
- {{ dateFormatPattern() }}
184
- `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
185
- }], ctorParameters: () => [{ type: undefined, decorators: [{
186
- type: Inject,
187
- args: [LOCALE_ID]
188
- }] }] });
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zcmMvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxNQUFNLEVBQ04sUUFBUSxFQUNSLFNBQVMsRUFHVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQWtDM0UsTUFBTSxPQUFPLG1CQUFtQjtJQUdrQjtJQUZoRCxpQkFBaUIsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7SUFFdkMsWUFBZ0QsUUFBZ0I7UUFBaEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtJQUFHLENBQUM7SUFFcEUsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxRQUFnQjtRQUNuQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBNkIsRUFBRSxFQUFFO1lBQzFELFFBQVEsSUFBSSxDQUFD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QUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgX2dldEV2ZW50VGFyZ2V0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIExPQ0FMRV9JRCxcbiAgT25Jbml0LFxuICBPdXRwdXRFbWl0dGVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSW5saW5lRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vaW5saW5lLWRhdGUtcGlja2VyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NjLWRhdGUtcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW5saW5lRGF0ZVBpY2tlckNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIG1heC13LXNtXCIgI292ZXJsYXlPcmlnaW4+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQteS0wIGVuZC0wIGZsZXggaXRlbXMtY2VudGVyIHBlLTMuNVwiIChjbGljayk9XCJvcGVuKClcIj5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIGNsYXNzPVwic2l6ZS00IHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgICAgICA+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMjAgNGEyIDIgMCAwIDAtMi0yaC0yVjFhMSAxIDAgMCAwLTIgMHYxaC0zVjFhMSAxIDAgMCAwLTIgMHYxSDZWMWExIDEgMCAwIDAtMiAwdjFIMmEyIDIgMCAwIDAtMiAydjJoMjBWNFpNMCAxOGEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJWOEgwdjEwWm01LThoMTBhMSAxIDAgMCAxIDAgMkg1YTEgMSAwIDAgMSAwLTJaXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiYmxvY2sgdy1mdWxsIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHAtMi41IHBlLTEwIHRleHQtc20gdGV4dC1ncmF5LTkwMCBmb2N1czpib3JkZXItYmx1ZS01MDAgZm9jdXM6cmluZy1ibHVlLTUwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOnBsYWNlaG9sZGVyOnRleHQtZ3JheS00MDAgZGFyazpmb2N1czpib3JkZXItYmx1ZS01MDAgZGFyazpmb2N1czpyaW5nLWJsdWUtNTAwXCJcbiAgICAgICAgI2lucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZGF0ZVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIHt7IGRhdGVGb3JtYXRQYXR0ZXJuKCkgfX1cbiAgYCxcbiAgc3R5bGVzOiBgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBkYXRlRm9ybWF0UGF0dGVybiA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSByZWFkb25seSBsb2NhbGVJZDogc3RyaW5nKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZGF0ZUZvcm1hdFBhdHRlcm4uc2V0KHRoaXMuZ2V0RGF0ZUZvcm1hdFBhdHRlcm4odGhpcy5sb2NhbGVJZCkpO1xuICB9XG5cbiAgZ2V0RGF0ZUZvcm1hdFBhdHRlcm4obG9jYWxlSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGdldFBhdHRlcm5Gb3JQYXJ0ID0gKHBhcnQ6IEludGwuRGF0ZVRpbWVGb3JtYXRQYXJ0KSA9PiB7XG4gICAgICBzd2l0Y2ggKHBhcnQudHlwZSkge1xuICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgIHJldHVybiAnZCcucmVwZWF0KHBhcnQudmFsdWUubGVuZ3RoKTtcbiAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgIHJldHVybiAnTScucmVwZWF0KHBhcnQudmFsdWUubGVuZ3RoKTtcbiAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgcmV0dXJuICd5Jy5yZXBlYXQocGFydC52YWx1ZS5sZW5ndGgpO1xuICAgICAgICBjYXNlICdsaXRlcmFsJzpcbiAgICAgICAgICByZXR1cm4gcGFydC52YWx1ZTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vIGRlZmF1bHQnKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZUlkKVxuICAgICAgLmZvcm1hdFRvUGFydHMobmV3IERhdGUoJzIwMjItMDEtMDEnKSlcbiAgICAgIC5tYXAoZ2V0UGF0dGVybkZvclBhcnQpXG4gICAgICAuam9pbignJyk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGlyID0gaW5qZWN0KERpcmVjdGlvbmFsaXR5LCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lucHV0ID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KCdpbnB1dCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vdmVybGF5T3JpZ2luID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+Pignb3ZlcmxheU9yaWdpbicpO1xuICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3BvcnRhbDogQ29tcG9uZW50UG9ydGFsPHVua25vd24+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIGRhdGVwaWNrZXIgaXMgb3BlbmVkLiAqL1xuICByZWFkb25seSBvcGVuZWQ6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcbiAgLyoqIEVtaXRzIHdoZW4gdGhlIGRhdGVwaWNrZXIgaXMgY2xvc2VkLiAqL1xuICByZWFkb25seSBjbG9zZWQ6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgZGF0ZS4gKi9cbiAgcmVhZG9ubHkgc2VsZWN0ZWQ6IE91dHB1dEVtaXR0ZXJSZWY8c3RyaW5nPiA9IG91dHB1dCgpO1xuXG4gIC8qKiBPcGVucyB0aGUgZGF0ZXBpY2tlci4gKi9cbiAgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRm9jdXMgc2hvdWxkIGFscmVhZHkgYmUgb24gdGhlIGlucHV0LCBidXQgdGhpcyBjYWxsIGlzIGluIGNhc2UgdGhlIGRhdGVwaWNrZXIgaXMgb3BlbmVkXG4gICAgLy8gcHJvZ3JhbW1hdGljYWxseS4gV2UgbmVlZCB0byBjYWxsIHRoaXMgZXZlbiBpZiB0aGUgZGF0ZXBpY2tlciBpcyBhbHJlYWR5IG9wZW4sIGJlY2F1c2VcbiAgICAvLyB0aGUgdXNlciBtaWdodCBiZSBjbGlja2luZyB0aGUgdG9nZ2xlLlxuICAgIHRoaXMuX2lucHV0KCk/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblxuICAgIGlmICh0aGlzLl9pc09wZW4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzT3Blbi5zZXQodHJ1ZSk7XG5cbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5fZ2V0T3ZlcmxheVJlZigpO1xuXG4gICAgb3ZlcmxheVJlZi51cGRhdGVTaXplKHsgd2lkdGg6IHRoaXMuX292ZXJsYXlPcmlnaW4oKT8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCB9KTtcblxuICAgIHRoaXMuX3BvcnRhbCA/Pz0gbmV3IENvbXBvbmVudFBvcnRhbChJbmxpbmVEYXRlUGlja2VyQ29tcG9uZW50KTtcblxuICAgIG92ZXJsYXlSZWYuYXR0YWNoKHRoaXMuX3BvcnRhbCk7XG5cbiAgICB0aGlzLm9wZW5lZC5lbWl0KCk7XG4gIH1cblxuICAvKiogQ2xvc2VzIHRoZSBkYXRlcGlja2VyLiAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuX2lzT3Blbi5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZj8uZGV0YWNoKCk7XG4gICAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENyZWF0ZXMgYW4gb3ZlcmxheSByZWZlcmVuY2UgZm9yIHRoZSBkYXRlcGlja2VyIHBhbmVsLiAqL1xuICBwcml2YXRlIF9nZXRPdmVybGF5UmVmKCk6IE92ZXJsYXlSZWYge1xuICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVJlZjtcbiAgICB9XG5cbiAgICBjb25zdCBfb3ZlcmxheU9yaWdpbiA9IHRoaXMuX292ZXJsYXlPcmlnaW4oKTtcbiAgICBpZiAoX292ZXJsYXlPcmlnaW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdfb3ZlcmxheU9yaWdpbiBpcyB1bmRlZmluZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKF9vdmVybGF5T3JpZ2luKVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAud2l0aFB1c2goZmFsc2UpXG4gICAgICAvLyAud2l0aFRyYW5zZm9ybU9yaWdpbk9uKCcubWF0LWRhdGVwaWNrZXItcGFuZWwnKVxuICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgICAvL3BhbmVsQ2xhc3M6ICdtYXQtZGF0ZXBpY2tlci1hYm92ZScsXG4gICAgICAgIH0sXG4gICAgICBdKTtcblxuICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBkaXJlY3Rpb246IHRoaXMuX2RpciB8fCAnbHRyJyxcbiAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHRoaXMuX292ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICB9KTtcblxuICAgIHRoaXMuX292ZXJsYXlSZWYub3V0c2lkZVBvaW50ZXJFdmVudHMoKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBfZ2V0RXZlbnRUYXJnZXQoZXZlbnQpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5fb3ZlcmxheU9yaWdpbigpPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldCAhPT0gb3JpZ2luICYmICFvcmlnaW4/LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuX292ZXJsYXlSZWY7XG4gIH1cblxuICAvKiogU2VsZWN0cyBhIHNwZWNpZmljIGRhdGUgdmFsdWUuICovXG4gIHByb3RlY3RlZCBfc2VsZWN0VmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgICB0aGlzLnNlbGVjdGVkLmVtaXQodmFsdWUpO1xuICAgIHRoaXMuX2lucHV0KCk/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxufVxuIl19
@@ -1,3 +0,0 @@
1
- export * from './date-picker.component';
2
- export * from './inline-date-picker.component';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9jb21wb25lbnRzL2RhdGUtcGlja2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaW5saW5lLWRhdGUtcGlja2VyLmNvbXBvbmVudCc7XG4iXX0=
@@ -1,185 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, Inject, LOCALE_ID, ViewEncapsulation, computed, signal, } from '@angular/core';
3
- import { MonthDaysComponent } from './month-days.component';
4
- import { MonthYearHeaderComponent } from './month-year-header.component';
5
- import { WeekDaysNamesComponent } from './week-days-names.component';
6
- import * as i0 from "@angular/core";
7
- export class InlineDatePickerComponent {
8
- localeId;
9
- year = signal(0);
10
- month = signal(0);
11
- weekDaysNames = signal([]);
12
- monthYear = computed(() => {
13
- const options = {
14
- month: 'long',
15
- year: 'numeric',
16
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
- };
18
- const s = new Intl.DateTimeFormat(this.localeId, options).format(new Date(this.year(), this.month(), 1));
19
- return s;
20
- });
21
- monthDays = computed(() => {
22
- // Month in JavaScript is 0-indexed (January is 0, February is 1, etc),
23
- // but by using 0 as the day it will give us the last day of the prior
24
- // month. So passing in 1 as the month number will return the last day
25
- // of January, not February
26
- const numOfDays = new Date(this.year(), this.month() + 1, 0).getDate();
27
- const days = [];
28
- for (let i = 1; i <= numOfDays; i++) {
29
- const date = new Date(this.year(), this.month(), i);
30
- days.push(`${date.getFullYear()}-${this.twoDigits(date.getMonth() + 1)}-${this.twoDigits(date.getDate())}`);
31
- }
32
- return days;
33
- });
34
- firstDayMonth = computed(() => {
35
- const date = new Date(this.year(), this.month(), 1);
36
- const intlLongFormatter = new Intl.DateTimeFormat(this.localeId, { weekday: 'long' });
37
- const dayName = intlLongFormatter.format(date);
38
- return this.weekDaysNames()
39
- .map((e) => e.long)
40
- .indexOf(dayName);
41
- });
42
- selectedDay = signal('');
43
- constructor(localeId) {
44
- this.localeId = localeId;
45
- }
46
- ngOnInit() {
47
- this.init();
48
- this.setLocaleDayNames();
49
- }
50
- init() {
51
- const today = new Date();
52
- this.year.set(today.getFullYear());
53
- this.month.set(today.getMonth());
54
- }
55
- setSelectedDay(day) {
56
- this.selectedDay.set(day);
57
- }
58
- //https://github.com/angular/angular/issues/57193
59
- setLocaleDayNames() {
60
- const weekDaysNames = [];
61
- const intlNarrowFormatter = new Intl.DateTimeFormat(this.localeId, { weekday: 'narrow' });
62
- const intlShortFormatter = new Intl.DateTimeFormat(this.localeId, { weekday: 'short' });
63
- const intlLongFormatter = new Intl.DateTimeFormat(this.localeId, { weekday: 'long' });
64
- let k = 0;
65
- const firstDayOfWeek = this.getFirstDayOfWeek();
66
- if (firstDayOfWeek === 7) {
67
- // First day of the week is Sunday
68
- k = 3; // 3th January 2021 is a Sunday
69
- }
70
- if (firstDayOfWeek === 1) {
71
- // First day of the week is Monday
72
- k = 4; // 4th January 2021 is a Monday
73
- }
74
- for (let i = 0; i < 7; i += 1) {
75
- const date = new Date(Date.UTC(2021, 0, i + k));
76
- weekDaysNames.push({
77
- narrow: intlNarrowFormatter.format(date),
78
- short: intlShortFormatter.format(date),
79
- long: intlLongFormatter.format(date),
80
- });
81
- }
82
- this.weekDaysNames.set(weekDaysNames);
83
- }
84
- getFirstDayOfWeek() {
85
- const locale = new Intl.Locale(this.localeId);
86
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
- return locale.getWeekInfo().firstDay;
88
- }
89
- setMonthYear(n) {
90
- if (n === 1) {
91
- if (this.month() < 11) {
92
- this.month.update((value) => value + 1);
93
- }
94
- else {
95
- this.month.set(0);
96
- this.year.update((value) => value + 1);
97
- }
98
- }
99
- if (n === -1) {
100
- if (this.month() > 0) {
101
- this.month.update((value) => value - 1);
102
- }
103
- else {
104
- this.month.set(11);
105
- this.year.update((value) => value - 1);
106
- }
107
- }
108
- }
109
- twoDigits(n) {
110
- return n.toLocaleString(this.localeId, {
111
- minimumIntegerDigits: 2,
112
- useGrouping: false,
113
- });
114
- }
115
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: InlineDatePickerComponent, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
116
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.11", type: InlineDatePickerComponent, isStandalone: true, selector: "sc-inline-date-picker", ngImport: i0, template: `
117
- <div class="inline-block rounded-lg bg-white p-4 shadow-lg dark:bg-gray-700">
118
- <div class="bg-white px-2 py-3 text-center font-semibold dark:bg-gray-700 dark:text-white">
119
- <sc-month-year-header [monthYear]="monthYear()" (monthYearChange)="setMonthYear($event)" />
120
- </div>
121
-
122
- <sc-week-days-names [weekDaysNames]="weekDaysNames()" />
123
-
124
- <sc-month-days
125
- [days]="monthDays()"
126
- [firstDayMonth]="firstDayMonth()"
127
- [selectedDay]="selectedDay()"
128
- (selectedDayChange)="setSelectedDay($event)"
129
- />
130
-
131
- <div class="mt-2 flex space-x-2 rtl:space-x-reverse">
132
- <button
133
- class="bg-primary-700 hover:bg-primary-800 dark:hover:bg-primary-700 focus:ring-primary-300 dark:bg-primary-600 w-1/2 rounded-lg px-5 py-2 text-center text-sm font-medium text-white focus:ring-4"
134
- type="button"
135
- >
136
- Today
137
- </button>
138
- <button
139
- class="focus:ring-primary-300 w-1/2 rounded-lg border border-gray-300 bg-white px-5 py-2 text-center text-sm font-medium text-gray-900 hover:bg-gray-100 focus:ring-4 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600"
140
- type="button"
141
- >
142
- Clear
143
- </button>
144
- </div>
145
- </div>
146
- `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: WeekDaysNamesComponent, selector: "sc-week-days-names", inputs: ["weekDaysNames"] }, { kind: "component", type: MonthYearHeaderComponent, selector: "sc-month-year-header", inputs: ["monthYear"], outputs: ["monthYearChange"] }, { kind: "component", type: MonthDaysComponent, selector: "sc-month-days", inputs: ["days", "firstDayMonth", "selectedDay"], outputs: ["selectedDayChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
147
- }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: InlineDatePickerComponent, decorators: [{
149
- type: Component,
150
- args: [{ selector: 'sc-inline-date-picker', standalone: true, imports: [CommonModule, WeekDaysNamesComponent, MonthYearHeaderComponent, MonthDaysComponent], template: `
151
- <div class="inline-block rounded-lg bg-white p-4 shadow-lg dark:bg-gray-700">
152
- <div class="bg-white px-2 py-3 text-center font-semibold dark:bg-gray-700 dark:text-white">
153
- <sc-month-year-header [monthYear]="monthYear()" (monthYearChange)="setMonthYear($event)" />
154
- </div>
155
-
156
- <sc-week-days-names [weekDaysNames]="weekDaysNames()" />
157
-
158
- <sc-month-days
159
- [days]="monthDays()"
160
- [firstDayMonth]="firstDayMonth()"
161
- [selectedDay]="selectedDay()"
162
- (selectedDayChange)="setSelectedDay($event)"
163
- />
164
-
165
- <div class="mt-2 flex space-x-2 rtl:space-x-reverse">
166
- <button
167
- class="bg-primary-700 hover:bg-primary-800 dark:hover:bg-primary-700 focus:ring-primary-300 dark:bg-primary-600 w-1/2 rounded-lg px-5 py-2 text-center text-sm font-medium text-white focus:ring-4"
168
- type="button"
169
- >
170
- Today
171
- </button>
172
- <button
173
- class="focus:ring-primary-300 w-1/2 rounded-lg border border-gray-300 bg-white px-5 py-2 text-center text-sm font-medium text-gray-900 hover:bg-gray-100 focus:ring-4 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600"
174
- type="button"
175
- >
176
- Clear
177
- </button>
178
- </div>
179
- </div>
180
- `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
181
- }], ctorParameters: () => [{ type: undefined, decorators: [{
182
- type: Inject,
183
- args: [LOCALE_ID]
184
- }] }] });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWRhdGUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvaW5saW5lLWRhdGUtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQWUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUF5Q2xGLE1BQU0sT0FBTyx5QkFBeUI7SUFtRFk7SUFsRGhELElBQUksR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDekIsS0FBSyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUMxQixhQUFhLEdBQUcsTUFBTSxDQUFnQixFQUFFLENBQUMsQ0FBQztJQUUxQyxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN4QixNQUFNLE9BQU8sR0FBRztZQUNkLEtBQUssRUFBRSxNQUFNO1lBQ2IsSUFBSSxFQUFFLFNBQVM7WUFDZiw4REFBOEQ7U0FDeEQsQ0FBQztRQUVULE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FDOUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDdkMsQ0FBQztRQUVGLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN4Qix1RUFBdUU7UUFDdkUsc0VBQXNFO1FBQ3RFLHNFQUFzRTtRQUN0RSwyQkFBMkI7UUFDM0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFdkUsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWhCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXBELElBQUksQ0FBQyxJQUFJLENBQ1AsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUNqRyxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDLENBQUM7SUFFSCxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUM1QixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUV0RixNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFO2FBQ3hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUNsQixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxXQUFXLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBRWpDLFlBQWdELFFBQWdCO1FBQWhCLGFBQVEsR0FBUixRQUFRLENBQVE7SUFBRyxDQUFDO0lBRXBFLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSTtRQUNGLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFXO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxpREFBaUQ7SUFDekMsaUJBQWlCO1FBQ3ZCLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLG1CQUFtQixHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDMUYsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUV0RixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNoRCxJQUFJLGNBQWMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixrQ0FBa0M7WUFDbEMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtRQUN4QyxDQUFDO1FBQ0QsSUFBSSxjQUFjLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsa0NBQWtDO1lBQ2xDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQywrQkFBK0I7UUFDeEMsQ0FBQztRQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRCxhQUFhLENBQUMsSUFBSSxDQUFDO2dCQUNqQixNQUFNLEVBQUUsbUJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDeEMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ3RDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ3JDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsOERBQThEO1FBQzlELE9BQVEsTUFBYyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUNoRCxDQUFDO0lBRUQsWUFBWSxDQUFDLENBQVM7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDWixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMxQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxDQUFTO1FBQ2pCLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3JDLG9CQUFvQixFQUFFLENBQUM7WUFDdkIsV0FBVyxFQUFFLEtBQUs7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FqSVUseUJBQXlCLGtCQW1EaEIsU0FBUzs0RkFuRGxCLHlCQUF5QixpRkFuQzFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4QlQseUVBL0JTLFlBQVksK0JBQUUsc0JBQXNCLDBGQUFFLHdCQUF3QixzSEFBRSxrQkFBa0I7OzRGQW9DakYseUJBQXlCO2tCQXZDckMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixDQUFDLFlBQ25GOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4QlQsaUJBRWMsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTs7MEJBcURsQyxNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBMT0NBTEVfSUQsXG4gIE9uSW5pdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNb250aERheXNDb21wb25lbnQgfSBmcm9tICcuL21vbnRoLWRheXMuY29tcG9uZW50JztcbmltcG9ydCB7IE1vbnRoWWVhckhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vbW9udGgteWVhci1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFdlZWtEYXlOYW1lLCBXZWVrRGF5c05hbWVzQ29tcG9uZW50IH0gZnJvbSAnLi93ZWVrLWRheXMtbmFtZXMuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2MtaW5saW5lLWRhdGUtcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgV2Vla0RheXNOYW1lc0NvbXBvbmVudCwgTW9udGhZZWFySGVhZGVyQ29tcG9uZW50LCBNb250aERheXNDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJpbmxpbmUtYmxvY2sgcm91bmRlZC1sZyBiZy13aGl0ZSBwLTQgc2hhZG93LWxnIGRhcms6YmctZ3JheS03MDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSBweC0yIHB5LTMgdGV4dC1jZW50ZXIgZm9udC1zZW1pYm9sZCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZVwiPlxuICAgICAgICA8c2MtbW9udGgteWVhci1oZWFkZXIgW21vbnRoWWVhcl09XCJtb250aFllYXIoKVwiIChtb250aFllYXJDaGFuZ2UpPVwic2V0TW9udGhZZWFyKCRldmVudClcIiAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxzYy13ZWVrLWRheXMtbmFtZXMgW3dlZWtEYXlzTmFtZXNdPVwid2Vla0RheXNOYW1lcygpXCIgLz5cblxuICAgICAgPHNjLW1vbnRoLWRheXNcbiAgICAgICAgW2RheXNdPVwibW9udGhEYXlzKClcIlxuICAgICAgICBbZmlyc3REYXlNb250aF09XCJmaXJzdERheU1vbnRoKClcIlxuICAgICAgICBbc2VsZWN0ZWREYXldPVwic2VsZWN0ZWREYXkoKVwiXG4gICAgICAgIChzZWxlY3RlZERheUNoYW5nZSk9XCJzZXRTZWxlY3RlZERheSgkZXZlbnQpXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGZsZXggc3BhY2UteC0yIHJ0bDpzcGFjZS14LXJldmVyc2VcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYmctcHJpbWFyeS03MDAgaG92ZXI6YmctcHJpbWFyeS04MDAgZGFyazpob3ZlcjpiZy1wcmltYXJ5LTcwMCBmb2N1czpyaW5nLXByaW1hcnktMzAwIGRhcms6YmctcHJpbWFyeS02MDAgdy0xLzIgcm91bmRlZC1sZyBweC01IHB5LTIgdGV4dC1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXdoaXRlIGZvY3VzOnJpbmctNFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICBUb2RheVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiZm9jdXM6cmluZy1wcmltYXJ5LTMwMCB3LTEvMiByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctd2hpdGUgcHgtNSBweS0yIHRleHQtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpyaW5nLTQgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICBDbGVhclxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IGBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgSW5saW5lRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHllYXIgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgbW9udGggPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgd2Vla0RheXNOYW1lcyA9IHNpZ25hbDxXZWVrRGF5TmFtZVtdPihbXSk7XG5cbiAgbW9udGhZZWFyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB9IGFzIGFueTtcblxuICAgIGNvbnN0IHMgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZUlkLCBvcHRpb25zKS5mb3JtYXQoXG4gICAgICBuZXcgRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCAxKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHM7XG4gIH0pO1xuXG4gIG1vbnRoRGF5cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAvLyBNb250aCBpbiBKYXZhU2NyaXB0IGlzIDAtaW5kZXhlZCAoSmFudWFyeSBpcyAwLCBGZWJydWFyeSBpcyAxLCBldGMpLFxuICAgIC8vIGJ1dCBieSB1c2luZyAwIGFzIHRoZSBkYXkgaXQgd2lsbCBnaXZlIHVzIHRoZSBsYXN0IGRheSBvZiB0aGUgcHJpb3JcbiAgICAvLyBtb250aC4gU28gcGFzc2luZyBpbiAxIGFzIHRoZSBtb250aCBudW1iZXIgd2lsbCByZXR1cm4gdGhlIGxhc3QgZGF5XG4gICAgLy8gb2YgSmFudWFyeSwgbm90IEZlYnJ1YXJ5XG4gICAgY29uc3QgbnVtT2ZEYXlzID0gbmV3IERhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSArIDEsIDApLmdldERhdGUoKTtcblxuICAgIGNvbnN0IGRheXMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IG51bU9mRGF5czsgaSsrKSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgaSk7XG5cbiAgICAgIGRheXMucHVzaChcbiAgICAgICAgYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0ke3RoaXMudHdvRGlnaXRzKGRhdGUuZ2V0TW9udGgoKSArIDEpfS0ke3RoaXMudHdvRGlnaXRzKGRhdGUuZ2V0RGF0ZSgpKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF5cztcbiAgfSk7XG5cbiAgZmlyc3REYXlNb250aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgMSk7XG4gICAgY29uc3QgaW50bExvbmdGb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZUlkLCB7IHdlZWtkYXk6ICdsb25nJyB9KTtcblxuICAgIGNvbnN0IGRheU5hbWUgPSBpbnRsTG9uZ0Zvcm1hdHRlci5mb3JtYXQoZGF0ZSk7XG4gICAgcmV0dXJuIHRoaXMud2Vla0RheXNOYW1lcygpXG4gICAgICAubWFwKChlKSA9PiBlLmxvbmcpXG4gICAgICAuaW5kZXhPZihkYXlOYW1lKTtcbiAgfSk7XG5cbiAgc2VsZWN0ZWREYXkgPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlSWQ6IHN0cmluZykge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLnNldExvY2FsZURheU5hbWVzKCk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICB0aGlzLnllYXIuc2V0KHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xuICAgIHRoaXMubW9udGguc2V0KHRvZGF5LmdldE1vbnRoKCkpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWREYXkoZGF5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkRGF5LnNldChkYXkpO1xuICB9XG5cbiAgLy9odHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy81NzE5M1xuICBwcml2YXRlIHNldExvY2FsZURheU5hbWVzKCkge1xuICAgIGNvbnN0IHdlZWtEYXlzTmFtZXMgPSBbXTtcbiAgICBjb25zdCBpbnRsTmFycm93Rm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGVJZCwgeyB3ZWVrZGF5OiAnbmFycm93JyB9KTtcbiAgICBjb25zdCBpbnRsU2hvcnRGb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZUlkLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSk7XG4gICAgY29uc3QgaW50bExvbmdGb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZUlkLCB7IHdlZWtkYXk6ICdsb25nJyB9KTtcblxuICAgIGxldCBrID0gMDtcbiAgICBjb25zdCBmaXJzdERheU9mV2VlayA9IHRoaXMuZ2V0Rmlyc3REYXlPZldlZWsoKTtcbiAgICBpZiAoZmlyc3REYXlPZldlZWsgPT09IDcpIHtcbiAgICAgIC8vIEZpcnN0IGRheSBvZiB0aGUgd2VlayBpcyBTdW5kYXlcbiAgICAgIGsgPSAzOyAvLyAzdGggSmFudWFyeSAyMDIxIGlzIGEgU3VuZGF5XG4gICAgfVxuICAgIGlmIChmaXJzdERheU9mV2VlayA9PT0gMSkge1xuICAgICAgLy8gRmlyc3QgZGF5IG9mIHRoZSB3ZWVrIGlzIE1vbmRheVxuICAgICAgayA9IDQ7IC8vIDR0aCBKYW51YXJ5IDIwMjEgaXMgYSBNb25kYXlcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkgKz0gMSkge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDAsIGkgKyBrKSk7XG4gICAgICB3ZWVrRGF5c05hbWVzLnB1c2goe1xuICAgICAgICBuYXJyb3c6IGludGxOYXJyb3dGb3JtYXR0ZXIuZm9ybWF0KGRhdGUpLFxuICAgICAgICBzaG9ydDogaW50bFNob3J0Rm9ybWF0dGVyLmZvcm1hdChkYXRlKSxcbiAgICAgICAgbG9uZzogaW50bExvbmdGb3JtYXR0ZXIuZm9ybWF0KGRhdGUpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy53ZWVrRGF5c05hbWVzLnNldCh3ZWVrRGF5c05hbWVzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICBjb25zdCBsb2NhbGUgPSBuZXcgSW50bC5Mb2NhbGUodGhpcy5sb2NhbGVJZCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICByZXR1cm4gKGxvY2FsZSBhcyBhbnkpLmdldFdlZWtJbmZvKCkuZmlyc3REYXk7XG4gIH1cblxuICBzZXRNb250aFllYXIobjogbnVtYmVyKSB7XG4gICAgaWYgKG4gPT09IDEpIHtcbiAgICAgIGlmICh0aGlzLm1vbnRoKCkgPCAxMSkge1xuICAgICAgICB0aGlzLm1vbnRoLnVwZGF0ZSgodmFsdWUpID0+IHZhbHVlICsgMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1vbnRoLnNldCgwKTtcbiAgICAgICAgdGhpcy55ZWFyLnVwZGF0ZSgodmFsdWUpID0+IHZhbHVlICsgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG4gPT09IC0xKSB7XG4gICAgICBpZiAodGhpcy5tb250aCgpID4gMCkge1xuICAgICAgICB0aGlzLm1vbnRoLnVwZGF0ZSgodmFsdWUpID0+IHZhbHVlIC0gMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1vbnRoLnNldCgxMSk7XG4gICAgICAgIHRoaXMueWVhci51cGRhdGUoKHZhbHVlKSA9PiB2YWx1ZSAtIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHR3b0RpZ2l0cyhuOiBudW1iZXIpIHtcbiAgICByZXR1cm4gbi50b0xvY2FsZVN0cmluZyh0aGlzLmxvY2FsZUlkLCB7XG4gICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0czogMixcbiAgICAgIHVzZUdyb3VwaW5nOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,69 +0,0 @@
1
- import { CommonModule, NgClass } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, ViewEncapsulation, input, output, } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- export class MonthDaysComponent {
6
- days = input.required();
7
- firstDayMonth = input.required();
8
- selectedDay = input('');
9
- selectedDayChange = output();
10
- isSelected(day) {
11
- return day === this.selectedDay();
12
- }
13
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
- setSelectedDay(event) {
15
- const selectedDay = event.target.dataset.scDay;
16
- this.selectedDayChange.emit(selectedDay);
17
- }
18
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: MonthDaysComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: MonthDaysComponent, isStandalone: true, selector: "sc-month-days", inputs: { days: { classPropertyName: "days", publicName: "days", isSignal: true, isRequired: true, transformFunction: null }, firstDayMonth: { classPropertyName: "firstDayMonth", publicName: "firstDayMonth", isSignal: true, isRequired: true, transformFunction: null }, selectedDay: { classPropertyName: "selectedDay", publicName: "selectedDay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedDayChange: "selectedDayChange" }, ngImport: i0, template: `
20
- <div class="grid w-64 grid-cols-7">
21
- @for (day of days(); track $index; let index = $index) {
22
- <button
23
- class="block flex-1 cursor-pointer rounded-lg border-0 text-center text-sm font-semibold leading-9 text-gray-900 hover:bg-gray-100 dark:text-white dark:hover:bg-gray-600"
24
- [ngClass]="{
25
- 'col-start-1': index === 0 && firstDayMonth() === 0,
26
- 'col-start-2': index === 0 && firstDayMonth() === 1,
27
- 'col-start-3': index === 0 && firstDayMonth() === 2,
28
- 'col-start-4': index === 0 && firstDayMonth() === 3,
29
- 'col-start-5': index === 0 && firstDayMonth() === 4,
30
- 'col-start-6': index === 0 && firstDayMonth() === 5,
31
- 'col-start-7': index === 0 && firstDayMonth() === 6,
32
- '!bg-primary-700 dark:!bg-primary-600 !text-white': isSelected(day),
33
- }"
34
- [attr.data-sc-day]="day"
35
- (click)="setSelectedDay($event)"
36
- >
37
- {{ day.slice(-2) }}
38
- </button>
39
- }
40
- </div>
41
- `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
42
- }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: MonthDaysComponent, decorators: [{
44
- type: Component,
45
- args: [{ selector: 'sc-month-days', standalone: true, imports: [CommonModule, NgClass], template: `
46
- <div class="grid w-64 grid-cols-7">
47
- @for (day of days(); track $index; let index = $index) {
48
- <button
49
- class="block flex-1 cursor-pointer rounded-lg border-0 text-center text-sm font-semibold leading-9 text-gray-900 hover:bg-gray-100 dark:text-white dark:hover:bg-gray-600"
50
- [ngClass]="{
51
- 'col-start-1': index === 0 && firstDayMonth() === 0,
52
- 'col-start-2': index === 0 && firstDayMonth() === 1,
53
- 'col-start-3': index === 0 && firstDayMonth() === 2,
54
- 'col-start-4': index === 0 && firstDayMonth() === 3,
55
- 'col-start-5': index === 0 && firstDayMonth() === 4,
56
- 'col-start-6': index === 0 && firstDayMonth() === 5,
57
- 'col-start-7': index === 0 && firstDayMonth() === 6,
58
- '!bg-primary-700 dark:!bg-primary-600 !text-white': isSelected(day),
59
- }"
60
- [attr.data-sc-day]="day"
61
- (click)="setSelectedDay($event)"
62
- >
63
- {{ day.slice(-2) }}
64
- </button>
65
- }
66
- </div>
67
- `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
68
- }] });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtZGF5cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9jb21wb25lbnRzL2RhdGUtcGlja2VyL21vbnRoLWRheXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7OztBQWlDdkIsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBWSxDQUFDO0lBQ2xDLGFBQWEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDekMsV0FBVyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUVoQyxpQkFBaUIsR0FBRyxNQUFNLEVBQVUsQ0FBQztJQUVyQyxVQUFVLENBQUMsR0FBVztRQUNwQixPQUFPLEdBQUcsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELDhEQUE4RDtJQUM5RCxjQUFjLENBQUMsS0FBVTtRQUN2QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDL0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO3dHQWZVLGtCQUFrQjs0RkFBbEIsa0JBQWtCLHVoQkEzQm5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JULHlFQXZCUyxZQUFZOzs0RkE0Qlgsa0JBQWtCO2tCQS9COUIsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCVCxpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2MtbW9udGgtZGF5cycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE5nQ2xhc3NdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJncmlkIHctNjQgZ3JpZC1jb2xzLTdcIj5cbiAgICAgIEBmb3IgKGRheSBvZiBkYXlzKCk7IHRyYWNrICRpbmRleDsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJsb2NrIGZsZXgtMSBjdXJzb3ItcG9pbnRlciByb3VuZGVkLWxnIGJvcmRlci0wIHRleHQtY2VudGVyIHRleHQtc20gZm9udC1zZW1pYm9sZCBsZWFkaW5nLTkgdGV4dC1ncmF5LTkwMCBob3ZlcjpiZy1ncmF5LTEwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2NvbC1zdGFydC0xJzogaW5kZXggPT09IDAgJiYgZmlyc3REYXlNb250aCgpID09PSAwLFxuICAgICAgICAgICAgJ2NvbC1zdGFydC0yJzogaW5kZXggPT09IDAgJiYgZmlyc3REYXlNb250aCgpID09PSAxLFxuICAgICAgICAgICAgJ2NvbC1zdGFydC0zJzogaW5kZXggPT09IDAgJiYgZmlyc3REYXlNb250aCgpID09PSAyLFxuICAgICAgICAgICAgJ2NvbC1zdGFydC00JzogaW5kZXggPT09IDAgJiYgZmlyc3REYXlNb250aCgpID09PSAzLFxuICAgICAgICAgICAgJ2NvbC1zdGFydC01JzogaW5kZXggPT09IDAgJiYgZmlyc3REYXlNb250aCgpID09PSA0LFxuICAgICAgICAgICAgJ2NvbC1zdGFydC02JzogaW5kZXggPT09IDAgJiYgZmlyc3REYXlNb250aCgpID09PSA1LFxuICAgICAgICAgICAgJ2NvbC1zdGFydC03JzogaW5kZXggPT09IDAgJiYgZmlyc3REYXlNb250aCgpID09PSA2LFxuICAgICAgICAgICAgJyFiZy1wcmltYXJ5LTcwMCBkYXJrOiFiZy1wcmltYXJ5LTYwMCAhdGV4dC13aGl0ZSc6IGlzU2VsZWN0ZWQoZGF5KSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXNjLWRheV09XCJkYXlcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRTZWxlY3RlZERheSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGRheS5zbGljZSgtMikgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogYGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNb250aERheXNDb21wb25lbnQge1xuICBkYXlzID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nW10+KCk7XG4gIGZpcnN0RGF5TW9udGggPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gIHNlbGVjdGVkRGF5ID0gaW5wdXQ8c3RyaW5nPignJyk7XG5cbiAgc2VsZWN0ZWREYXlDaGFuZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gIGlzU2VsZWN0ZWQoZGF5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZGF5ID09PSB0aGlzLnNlbGVjdGVkRGF5KCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBzZXRTZWxlY3RlZERheShldmVudDogYW55KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWREYXkgPSBldmVudC50YXJnZXQuZGF0YXNldC5zY0RheTtcbiAgICB0aGlzLnNlbGVjdGVkRGF5Q2hhbmdlLmVtaXQoc2VsZWN0ZWREYXkpO1xuICB9XG59XG4iXX0=
@@ -1,124 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, ViewEncapsulation, input, output, } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- export class MonthYearHeaderComponent {
5
- monthYear = input.required();
6
- monthYearChange = output();
7
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: MonthYearHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: MonthYearHeaderComponent, isStandalone: true, selector: "sc-month-year-header", inputs: { monthYear: { classPropertyName: "monthYear", publicName: "monthYear", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { monthYearChange: "monthYearChange" }, ngImport: i0, template: `
9
- <div class="mb-2 flex justify-between">
10
- <button
11
- class="rounded-lg bg-white p-2.5 text-lg text-gray-500 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-gray-200 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600 dark:hover:text-white"
12
- (click)="monthYearChange.emit(-1)"
13
- aria-label="Previous month"
14
- type="button"
15
- >
16
- <svg
17
- class="size-4 text-gray-800 rtl:rotate-180 dark:text-white"
18
- aria-hidden="true"
19
- xmlns="http://www.w3.org/2000/svg"
20
- fill="none"
21
- viewBox="0 0 14 10"
22
- >
23
- <path
24
- stroke="currentColor"
25
- stroke-linecap="round"
26
- stroke-linejoin="round"
27
- stroke-width="2"
28
- d="M13 5H1m0 0 4 4M1 5l4-4"
29
- ></path>
30
- </svg>
31
- </button>
32
-
33
- <button
34
- class="rounded-lg bg-white px-5 py-2.5 text-sm font-semibold text-gray-900 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-gray-200 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600"
35
- type="button"
36
- >
37
- {{ monthYear() }}
38
- </button>
39
-
40
- <button
41
- class="rounded-lg bg-white p-2.5 text-lg text-gray-500 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-gray-200 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600 dark:hover:text-white"
42
- (click)="monthYearChange.emit(1)"
43
- type="button"
44
- aria-label="Next month"
45
- >
46
- <svg
47
- class="size-4 text-gray-800 rtl:rotate-180 dark:text-white"
48
- aria-hidden="true"
49
- xmlns="http://www.w3.org/2000/svg"
50
- fill="none"
51
- viewBox="0 0 14 10"
52
- >
53
- <path
54
- stroke="currentColor"
55
- stroke-linecap="round"
56
- stroke-linejoin="round"
57
- stroke-width="2"
58
- d="M1 5h12m0 0L9 1m4 4L9 9"
59
- ></path>
60
- </svg>
61
- </button>
62
- </div>
63
- `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
64
- }
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: MonthYearHeaderComponent, decorators: [{
66
- type: Component,
67
- args: [{ selector: 'sc-month-year-header', standalone: true, imports: [CommonModule], template: `
68
- <div class="mb-2 flex justify-between">
69
- <button
70
- class="rounded-lg bg-white p-2.5 text-lg text-gray-500 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-gray-200 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600 dark:hover:text-white"
71
- (click)="monthYearChange.emit(-1)"
72
- aria-label="Previous month"
73
- type="button"
74
- >
75
- <svg
76
- class="size-4 text-gray-800 rtl:rotate-180 dark:text-white"
77
- aria-hidden="true"
78
- xmlns="http://www.w3.org/2000/svg"
79
- fill="none"
80
- viewBox="0 0 14 10"
81
- >
82
- <path
83
- stroke="currentColor"
84
- stroke-linecap="round"
85
- stroke-linejoin="round"
86
- stroke-width="2"
87
- d="M13 5H1m0 0 4 4M1 5l4-4"
88
- ></path>
89
- </svg>
90
- </button>
91
-
92
- <button
93
- class="rounded-lg bg-white px-5 py-2.5 text-sm font-semibold text-gray-900 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-gray-200 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600"
94
- type="button"
95
- >
96
- {{ monthYear() }}
97
- </button>
98
-
99
- <button
100
- class="rounded-lg bg-white p-2.5 text-lg text-gray-500 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-gray-200 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600 dark:hover:text-white"
101
- (click)="monthYearChange.emit(1)"
102
- type="button"
103
- aria-label="Next month"
104
- >
105
- <svg
106
- class="size-4 text-gray-800 rtl:rotate-180 dark:text-white"
107
- aria-hidden="true"
108
- xmlns="http://www.w3.org/2000/svg"
109
- fill="none"
110
- viewBox="0 0 14 10"
111
- >
112
- <path
113
- stroke="currentColor"
114
- stroke-linecap="round"
115
- stroke-linejoin="round"
116
- stroke-width="2"
117
- d="M1 5h12m0 0L9 1m4 4L9 9"
118
- ></path>
119
- </svg>
120
- </button>
121
- </div>
122
- `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }]
123
- }] });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgteWVhci1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zcmMvY29tcG9uZW50cy9kYXRlLXBpY2tlci9tb250aC15ZWFyLWhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOztBQWtFdkIsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBRXJDLGVBQWUsR0FBRyxNQUFNLEVBQVUsQ0FBQzt3R0FIeEIsd0JBQXdCOzRGQUF4Qix3QkFBd0IsZ1JBNUR6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVEVCx5RUF4RFMsWUFBWTs7NEZBNkRYLHdCQUF3QjtrQkFoRXBDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdURULGlCQUVjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGlucHV0LFxuICBvdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYy1tb250aC15ZWFyLWhlYWRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJtYi0yIGZsZXgganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwicm91bmRlZC1sZyBiZy13aGl0ZSBwLTIuNSB0ZXh0LWxnIHRleHQtZ3JheS01MDAgaG92ZXI6YmctZ3JheS0xMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctZ3JheS0yMDAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGVcIlxuICAgICAgICAoY2xpY2spPVwibW9udGhZZWFyQ2hhbmdlLmVtaXQoLTEpXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlByZXZpb3VzIG1vbnRoXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxzdmdcbiAgICAgICAgICBjbGFzcz1cInNpemUtNCB0ZXh0LWdyYXktODAwIHJ0bDpyb3RhdGUtMTgwIGRhcms6dGV4dC13aGl0ZVwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCAxNCAxMFwiXG4gICAgICAgID5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICBkPVwiTTEzIDVIMW0wIDAgNCA0TTEgNWw0LTRcIlxuICAgICAgICAgID48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWxnIGJnLXdoaXRlIHB4LTUgcHktMi41IHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ncmF5LTIwMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNjAwXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIHt7IG1vbnRoWWVhcigpIH19XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInJvdW5kZWQtbGcgYmctd2hpdGUgcC0yLjUgdGV4dC1sZyB0ZXh0LWdyYXktNTAwIGhvdmVyOmJnLWdyYXktMTAwIGhvdmVyOnRleHQtZ3JheS05MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWdyYXktMjAwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlXCJcbiAgICAgICAgKGNsaWNrKT1cIm1vbnRoWWVhckNoYW5nZS5lbWl0KDEpXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJOZXh0IG1vbnRoXCJcbiAgICAgID5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIGNsYXNzPVwic2l6ZS00IHRleHQtZ3JheS04MDAgcnRsOnJvdGF0ZS0xODAgZGFyazp0ZXh0LXdoaXRlXCJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE0IDEwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgIGQ9XCJNMSA1aDEybTAgMEw5IDFtNCA0TDkgOVwiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1vbnRoWWVhckhlYWRlckNvbXBvbmVudCB7XG4gIG1vbnRoWWVhciA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblxuICBtb250aFllYXJDaGFuZ2UgPSBvdXRwdXQ8bnVtYmVyPigpO1xufVxuIl19