@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.
- package/README.md +13 -13
- package/fesm2022/semantic-components-ui.mjs +8738 -1137
- package/fesm2022/semantic-components-ui.mjs.map +1 -1
- package/index.d.ts +15 -6
- package/lib/components/breadcrumb/breadcrumb-elipssis.d.ts +5 -0
- package/lib/components/breadcrumb/breadcrumb-item.d.ts +5 -0
- package/lib/components/breadcrumb/breadcrumb-link.d.ts +5 -0
- package/lib/components/breadcrumb/breadcrumb-list.d.ts +5 -0
- package/lib/components/breadcrumb/breadcrumb-page.d.ts +5 -0
- package/lib/components/breadcrumb/breadcrumb-separator.d.ts +5 -0
- package/lib/components/breadcrumb/breadcrumb.d.ts +6 -0
- package/lib/components/breadcrumb/index.d.ts +7 -0
- package/lib/components/button/button.d.ts +7 -0
- package/lib/components/button/index.d.ts +1 -0
- package/lib/components/editor/editor.d.ts +25 -0
- package/lib/components/editor/extensions/extension-blockquote.d.ts +11 -0
- package/lib/components/editor/extensions/extension-bold.d.ts +11 -0
- package/lib/components/editor/extensions/extension-bullet-list.d.ts +11 -0
- package/lib/components/editor/extensions/extension-code.d.ts +11 -0
- package/lib/components/editor/extensions/extension-color.d.ts +12 -0
- package/lib/components/editor/extensions/extension-font-family.d.ts +11 -0
- package/lib/components/editor/extensions/extension-heading.d.ts +9 -0
- package/lib/components/editor/extensions/extension-highlight.d.ts +11 -0
- package/lib/components/editor/extensions/extension-history.d.ts +12 -0
- package/lib/components/editor/extensions/extension-horizontal-rule.d.ts +11 -0
- package/lib/components/editor/extensions/extension-image.d.ts +15 -0
- package/lib/components/editor/extensions/extension-italic.d.ts +11 -0
- package/lib/components/editor/extensions/extension-link.d.ts +14 -0
- package/lib/components/editor/extensions/extension-ordered-list.d.ts +11 -0
- package/lib/components/editor/extensions/extension-paragraph.d.ts +8 -0
- package/lib/components/editor/extensions/extension-strike.d.ts +11 -0
- package/lib/components/editor/extensions/extension-table.d.ts +30 -0
- package/lib/components/editor/extensions/extension-text-align.d.ts +13 -0
- package/lib/components/editor/extensions/extension-text-style.d.ts +11 -0
- package/lib/components/editor/extensions/extension-underline.d.ts +11 -0
- package/lib/components/editor/extensions/extension-youtube.d.ts +15 -0
- package/lib/components/editor/extensions/extensions.d.ts +24 -0
- package/lib/components/editor/toolbar/add-cell-attribute-dialog.d.ts +18 -0
- package/lib/components/editor/toolbar/add-image-dialog.d.ts +21 -0
- package/lib/components/editor/toolbar/add-link-dialog.d.ts +15 -0
- package/lib/components/editor/toolbar/add-video-dialog.d.ts +26 -0
- package/lib/components/editor/toolbar/extensions-group.d.ts +5 -0
- package/lib/components/editor/toolbar/extensions-separator.d.ts +5 -0
- package/lib/components/input/index.d.ts +1 -0
- package/lib/components/input/input.d.ts +5 -0
- package/lib/components/label/index.d.ts +1 -0
- package/lib/components/label/label.d.ts +5 -0
- package/lib/components/nav/index.d.ts +5 -0
- package/lib/components/nav/nav-button-base.d.ts +5 -0
- package/lib/components/nav/nav-button.d.ts +6 -0
- package/lib/components/nav/nav-item-dropdown.d.ts +6 -0
- package/lib/components/nav/nav-item.d.ts +5 -0
- package/lib/components/nav/nav-link.d.ts +6 -0
- package/lib/components/nav/nav-list.d.ts +5 -0
- package/lib/components/nav/nav.d.ts +5 -0
- package/lib/components/paginator/index.d.ts +2 -0
- package/lib/components/paginator/page-event.d.ts +10 -0
- package/lib/components/paginator/page-item.d.ts +10 -0
- package/lib/components/paginator/paginator.d.ts +37 -0
- package/lib/components/progress/index.d.ts +1 -0
- package/lib/components/progress/progress.d.ts +8 -0
- package/lib/components/select/index.d.ts +2 -0
- package/lib/components/select/option.d.ts +11 -0
- package/lib/components/select/select-state.d.ts +9 -0
- package/lib/components/select/select.d.ts +40 -0
- package/lib/components/sidebar/constants.d.ts +2 -0
- package/lib/components/sidebar/index.d.ts +1 -0
- package/lib/components/sidebar/sidebar-content.d.ts +5 -0
- package/lib/components/sidebar/sidebar-footer.d.ts +5 -0
- package/lib/components/sidebar/sidebar-header.d.ts +5 -0
- package/lib/components/sidebar/sidebar-layout.d.ts +20 -0
- package/lib/components/sidebar/sidebar.d.ts +10 -0
- package/lib/components/textarea/index.d.ts +1 -0
- package/lib/components/textarea/textarea.d.ts +5 -0
- package/lib/components/theme-toggler/index.d.ts +2 -0
- package/lib/components/theme-toggler/theme-provider-factory.d.ts +1 -0
- package/lib/components/theme-toggler/theme-toggler.d.ts +9 -0
- package/lib/components/theme-toggler/theme.d.ts +8 -0
- package/lib/components/tooltip/tooltip-container.d.ts +6 -0
- package/{components → lib/components}/tooltip/tooltip.d.ts +5 -3
- package/package.json +35 -10
- package/components/editor/editor.d.ts +0 -5
- package/components/nav/index.d.ts +0 -3
- package/components/nav/nav-item-dropdown.component.d.ts +0 -5
- package/components/nav/nav-item.component.d.ts +0 -5
- package/components/nav/nav.component.d.ts +0 -5
- package/components/select/index.d.ts +0 -2
- package/components/select/select-option.component.d.ts +0 -7
- package/components/select/select.component.d.ts +0 -55
- package/components/tooltip/tooltip-container.d.ts +0 -7
- package/esm2022/components/date-picker/date-picker.component.mjs +0 -189
- package/esm2022/components/date-picker/index.mjs +0 -3
- package/esm2022/components/date-picker/inline-date-picker.component.mjs +0 -185
- package/esm2022/components/date-picker/month-days.component.mjs +0 -69
- package/esm2022/components/date-picker/month-year-header.component.mjs +0 -124
- package/esm2022/components/date-picker/week-days-names.component.mjs +0 -37
- package/esm2022/components/dropdown/dropdown-divider.component.mjs +0 -16
- package/esm2022/components/dropdown/dropdown-item.component.mjs +0 -33
- package/esm2022/components/dropdown/dropdown.component.mjs +0 -85
- package/esm2022/components/dropdown/index.mjs +0 -4
- package/esm2022/components/editor/editor.mjs +0 -16
- package/esm2022/components/editor/index.mjs +0 -2
- package/esm2022/components/nav/index.mjs +0 -4
- package/esm2022/components/nav/nav-item-dropdown.component.mjs +0 -148
- package/esm2022/components/nav/nav-item.component.mjs +0 -16
- package/esm2022/components/nav/nav.component.mjs +0 -16
- package/esm2022/components/select/index.mjs +0 -3
- package/esm2022/components/select/select-option.component.mjs +0 -28
- package/esm2022/components/select/select.component.mjs +0 -252
- package/esm2022/components/tooltip/index.mjs +0 -2
- package/esm2022/components/tooltip/tooltip-container.mjs +0 -58
- package/esm2022/components/tooltip/tooltip.mjs +0 -79
- package/esm2022/index.mjs +0 -7
- package/esm2022/semantic-components-ui.mjs +0 -5
- /package/{components → lib/components}/date-picker/date-picker.component.d.ts +0 -0
- /package/{components → lib/components}/date-picker/index.d.ts +0 -0
- /package/{components → lib/components}/date-picker/inline-date-picker.component.d.ts +0 -0
- /package/{components → lib/components}/date-picker/month-days.component.d.ts +0 -0
- /package/{components → lib/components}/date-picker/month-year-header.component.d.ts +0 -0
- /package/{components → lib/components}/date-picker/week-days-names.component.d.ts +0 -0
- /package/{components → lib/components}/dropdown/dropdown-divider.component.d.ts +0 -0
- /package/{components → lib/components}/dropdown/dropdown-item.component.d.ts +0 -0
- /package/{components → lib/components}/dropdown/dropdown.component.d.ts +0 -0
- /package/{components → lib/components}/dropdown/index.d.ts +0 -0
- /package/{components → lib/components}/editor/index.d.ts +0 -0
- /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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWRhdGUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvaW5saW5lLWRhdGUtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQWUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUF5Q2xGLE1BQU0sT0FBTyx5QkFBeUI7SUFtRFk7SUFsRGhELElBQUksR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDekIsS0FBSyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUMxQixhQUFhLEdBQUcsTUFBTSxDQUFnQixFQUFFLENBQUMsQ0FBQztJQUUxQyxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN4QixNQUFNLE9BQU8sR0FBRztZQUNkLEtBQUssRUFBRSxNQUFNO1lBQ2IsSUFBSSxFQUFFLFNBQVM7WUFDZiw4REFBOEQ7U0FDeEQsQ0FBQztRQUVULE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FDOUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVB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Q0FBQyxDQUFTO1FBQ2pCLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3JDLG9CQUFvQixFQUFFLENBQUM7WUFDdkIsV0FBVyxFQUFFLEtBQUs7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FqSVUseUJBQXlCLGtCQW1EaEIsU0FBUzs0RkFuRGxCLHlCQUF5QixpRkFuQzFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4QlQseUVBL0JTLFlBQVksK0JBQUUsc0JBQXNCLDBGQUFFLHdCQUF3QixzSEFBRSxrQkFBa0I7OzRGQW9DakYseUJBQXlCO2tCQXZDckMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixDQUFDLFlBQ25GOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4QlQsaUJBRWMsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTs7MEJBcURsQyxNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBMT0NBTEVfSUQsXG4gIE9uSW5pdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNb250aERheXNDb21wb25lbnQgfSBmcm9tICcuL21vbnRoLWRheXMuY29tcG9uZW50JztcbmltcG9ydCB7IE1vbnRoWWVhckhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vbW9udGgteWVhci1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFdlZWtEYXlOYW1lLCBXZWVrRGF5c05hbWVzQ29tcG9uZW50IH0gZnJvbSAnLi93ZWVrLWRheXMtbmFtZXMuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2MtaW5saW5lLWRhdGUtcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgV2Vla0RheXNOYW1lc0NvbXBvbmVudCwgTW9udGhZZWFySGVhZGVyQ29tcG9uZW50LCBNb250aERheXNDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJpbmxpbmUtYmxvY2sgcm91bmRlZC1sZyBiZy13aGl0ZSBwLTQgc2hhZG93LWxnIGRhcms6YmctZ3JheS03MDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSBweC0yIHB5LTMgdGV4dC1jZW50ZXIgZm9udC1zZW1pYm9sZCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC13aGl0ZVwiPlxuICAgICAgICA8c2MtbW9udGgteWVhci1oZWFkZXIgW21vbnRoWWVhcl09XCJtb250aFllYXIoKVwiIChtb250aFllYXJDaGFuZ2UpPVwic2V0TW9udGhZZWFyKCRldmVudClcIiAvPlxuICAgICAgPC9kaXY+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
|