@progressive-development/pd-calendar 0.6.8 → 1.0.0

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 (141) hide show
  1. package/LICENSE +21 -2
  2. package/README.md +32 -57
  3. package/dist/generated/locales/be.d.ts +7 -0
  4. package/dist/generated/locales/be.d.ts.map +1 -1
  5. package/dist/generated/locales/de.d.ts +7 -0
  6. package/dist/generated/locales/de.d.ts.map +1 -1
  7. package/dist/generated/locales/en.d.ts +7 -0
  8. package/dist/generated/locales/en.d.ts.map +1 -1
  9. package/dist/index.d.ts +12 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +23 -10
  12. package/dist/locales/be.js +10 -4
  13. package/dist/locales/de.js +10 -4
  14. package/dist/locales/en.js +10 -4
  15. package/dist/pd-calendar/PdCalendar.d.ts +133 -0
  16. package/dist/pd-calendar/PdCalendar.d.ts.map +1 -0
  17. package/dist/pd-calendar/PdCalendar.js +550 -0
  18. package/dist/pd-calendar/pd-calendar-cell/PdCalendarCell.d.ts +56 -0
  19. package/dist/pd-calendar/pd-calendar-cell/PdCalendarCell.d.ts.map +1 -0
  20. package/dist/pd-calendar/pd-calendar-cell/PdCalendarCell.js +337 -0
  21. package/dist/pd-calendar/pd-calendar-cell/pd-calendar-cell.d.ts +3 -0
  22. package/dist/pd-calendar/pd-calendar-cell/pd-calendar-cell.d.ts.map +1 -0
  23. package/dist/pd-calendar/pd-calendar-cell/pd-calendar-cell.js +8 -0
  24. package/dist/pd-calendar/pd-calendar-day-events-panel/PdCalendarDayEventsPanel.d.ts +27 -0
  25. package/dist/pd-calendar/pd-calendar-day-events-panel/PdCalendarDayEventsPanel.d.ts.map +1 -0
  26. package/dist/pd-calendar/pd-calendar-day-events-panel/PdCalendarDayEventsPanel.js +160 -0
  27. package/dist/pd-calendar/pd-calendar-day-events-panel/pd-calendar-day-events-panel.d.ts +3 -0
  28. package/dist/pd-calendar/pd-calendar-day-events-panel/pd-calendar-day-events-panel.d.ts.map +1 -0
  29. package/dist/pd-calendar/pd-calendar-day-events-panel/pd-calendar-day-events-panel.js +8 -0
  30. package/dist/pd-calendar/pd-calendar-event-cell/PdCalendarEventCell.d.ts +55 -0
  31. package/dist/pd-calendar/pd-calendar-event-cell/PdCalendarEventCell.d.ts.map +1 -0
  32. package/dist/pd-calendar/pd-calendar-event-cell/PdCalendarEventCell.js +341 -0
  33. package/dist/pd-calendar/pd-calendar-event-cell/pd-calendar-event-cell.d.ts +3 -0
  34. package/dist/pd-calendar/pd-calendar-event-cell/pd-calendar-event-cell.d.ts.map +1 -0
  35. package/dist/pd-calendar/pd-calendar-event-cell/pd-calendar-event-cell.js +8 -0
  36. package/dist/pd-calendar/pd-calendar-event-info-panel/PdCalendarEventInfoPanel.d.ts +29 -0
  37. package/dist/pd-calendar/pd-calendar-event-info-panel/PdCalendarEventInfoPanel.d.ts.map +1 -0
  38. package/dist/pd-calendar/pd-calendar-event-info-panel/PdCalendarEventInfoPanel.js +211 -0
  39. package/dist/pd-calendar/pd-calendar-event-info-panel/pd-calendar-event-info-panel.d.ts +3 -0
  40. package/dist/pd-calendar/pd-calendar-event-info-panel/pd-calendar-event-info-panel.d.ts.map +1 -0
  41. package/dist/pd-calendar/pd-calendar-event-info-panel/pd-calendar-event-info-panel.js +8 -0
  42. package/dist/pd-calendar/pd-calendar-list-cell/PdCalendarListCell.d.ts +28 -0
  43. package/dist/pd-calendar/pd-calendar-list-cell/PdCalendarListCell.d.ts.map +1 -0
  44. package/dist/pd-calendar/pd-calendar-list-cell/PdCalendarListCell.js +252 -0
  45. package/dist/pd-calendar/pd-calendar-list-cell/pd-calendar-list-cell.d.ts +3 -0
  46. package/dist/pd-calendar/pd-calendar-list-cell/pd-calendar-list-cell.d.ts.map +1 -0
  47. package/dist/pd-calendar/pd-calendar-list-cell/pd-calendar-list-cell.js +8 -0
  48. package/dist/pd-calendar/pd-calendar-list-view/PdCalendarListView.d.ts +26 -0
  49. package/dist/pd-calendar/pd-calendar-list-view/PdCalendarListView.d.ts.map +1 -0
  50. package/dist/pd-calendar/pd-calendar-list-view/PdCalendarListView.js +165 -0
  51. package/dist/pd-calendar/pd-calendar-list-view/pd-calendar-list-view.d.ts +3 -0
  52. package/dist/pd-calendar/pd-calendar-list-view/pd-calendar-list-view.d.ts.map +1 -0
  53. package/dist/pd-calendar/pd-calendar-list-view/pd-calendar-list-view.js +8 -0
  54. package/dist/pd-calendar/pd-calendar-month-view/PdCalendarMonthView.d.ts +55 -0
  55. package/dist/pd-calendar/pd-calendar-month-view/PdCalendarMonthView.d.ts.map +1 -0
  56. package/dist/pd-calendar/pd-calendar-month-view/PdCalendarMonthView.js +461 -0
  57. package/dist/pd-calendar/pd-calendar-month-view/pd-calendar-month-view.d.ts +3 -0
  58. package/dist/pd-calendar/pd-calendar-month-view/pd-calendar-month-view.d.ts.map +1 -0
  59. package/dist/pd-calendar/pd-calendar-month-view/pd-calendar-month-view.js +8 -0
  60. package/dist/pd-calendar/pd-calendar-time-grid-view/PdCalendarTimeGridView.d.ts +32 -0
  61. package/dist/pd-calendar/pd-calendar-time-grid-view/PdCalendarTimeGridView.d.ts.map +1 -0
  62. package/dist/pd-calendar/pd-calendar-time-grid-view/PdCalendarTimeGridView.js +468 -0
  63. package/dist/pd-calendar/pd-calendar-time-grid-view/pd-calendar-time-grid-view.d.ts +3 -0
  64. package/dist/pd-calendar/pd-calendar-time-grid-view/pd-calendar-time-grid-view.d.ts.map +1 -0
  65. package/dist/pd-calendar/pd-calendar-time-grid-view/pd-calendar-time-grid-view.js +8 -0
  66. package/dist/pd-calendar/pd-calendar-week-cell/PdCalendarWeekCell.d.ts +31 -0
  67. package/dist/pd-calendar/pd-calendar-week-cell/PdCalendarWeekCell.d.ts.map +1 -0
  68. package/dist/pd-calendar/pd-calendar-week-cell/PdCalendarWeekCell.js +134 -0
  69. package/dist/pd-calendar/pd-calendar-week-cell/pd-calendar-week-cell.d.ts +3 -0
  70. package/dist/pd-calendar/pd-calendar-week-cell/pd-calendar-week-cell.d.ts.map +1 -0
  71. package/dist/pd-calendar/pd-calendar-week-cell/pd-calendar-week-cell.js +8 -0
  72. package/dist/pd-calendar/pd-calendar.d.ts +3 -0
  73. package/dist/pd-calendar/pd-calendar.d.ts.map +1 -0
  74. package/dist/pd-calendar/pd-calendar.stories.d.ts +83 -0
  75. package/dist/pd-calendar/pd-calendar.stories.d.ts.map +1 -0
  76. package/dist/pd-calendar/pd-year-popup/PdYearPopup.d.ts +38 -0
  77. package/dist/pd-calendar/pd-year-popup/PdYearPopup.d.ts.map +1 -0
  78. package/dist/pd-calendar/pd-year-popup/PdYearPopup.js +249 -0
  79. package/dist/pd-calendar/pd-year-popup/pd-year-popup.d.ts +3 -0
  80. package/dist/pd-calendar/pd-year-popup/pd-year-popup.d.ts.map +1 -0
  81. package/dist/pd-calendar/pd-year-popup/pd-year-popup.js +8 -0
  82. package/dist/pd-calendar.d.ts +2 -48
  83. package/dist/pd-calendar.js +6 -437
  84. package/dist/pd-datepicker/PdDatepicker.d.ts +181 -0
  85. package/dist/pd-datepicker/PdDatepicker.d.ts.map +1 -0
  86. package/dist/pd-datepicker/PdDatepicker.js +701 -0
  87. package/dist/pd-datepicker/pd-date-picker.stories.d.ts +81 -0
  88. package/dist/pd-datepicker/pd-date-picker.stories.d.ts.map +1 -0
  89. package/dist/pd-datepicker/pd-datepicker.d.ts +3 -0
  90. package/dist/pd-datepicker/pd-datepicker.d.ts.map +1 -0
  91. package/dist/pd-datepicker.d.ts +2 -0
  92. package/dist/pd-datepicker.js +8 -0
  93. package/dist/pd-slot-picker/PdSlotPicker.d.ts +102 -0
  94. package/dist/pd-slot-picker/PdSlotPicker.d.ts.map +1 -0
  95. package/dist/pd-slot-picker/PdSlotPicker.js +339 -0
  96. package/dist/pd-slot-picker/pd-slot-cell/PdSlotCell.d.ts +35 -0
  97. package/dist/pd-slot-picker/pd-slot-cell/PdSlotCell.d.ts.map +1 -0
  98. package/dist/pd-slot-picker/pd-slot-cell/PdSlotCell.js +188 -0
  99. package/dist/pd-slot-picker/pd-slot-cell/pd-slot-cell.d.ts +3 -0
  100. package/dist/pd-slot-picker/pd-slot-cell/pd-slot-cell.d.ts.map +1 -0
  101. package/dist/pd-slot-picker/pd-slot-cell/pd-slot-cell.js +8 -0
  102. package/dist/pd-slot-picker/pd-slot-picker.d.ts +3 -0
  103. package/dist/pd-slot-picker/pd-slot-picker.d.ts.map +1 -0
  104. package/dist/pd-slot-picker/pd-slot-picker.stories.d.ts +67 -0
  105. package/dist/pd-slot-picker/pd-slot-picker.stories.d.ts.map +1 -0
  106. package/dist/pd-slot-picker.d.ts +2 -0
  107. package/dist/pd-slot-picker.js +8 -0
  108. package/dist/shared/PdBaseCell.d.ts +68 -0
  109. package/dist/shared/PdBaseCell.d.ts.map +1 -0
  110. package/dist/shared/PdBaseCell.js +120 -0
  111. package/dist/shared/PdBaseView.d.ts +22 -0
  112. package/dist/shared/PdBaseView.d.ts.map +1 -0
  113. package/dist/shared/PdBaseView.js +46 -0
  114. package/dist/shared/PdCalendarPanelBase.d.ts +34 -0
  115. package/dist/shared/PdCalendarPanelBase.d.ts.map +1 -0
  116. package/dist/shared/PdCalendarPanelBase.js +169 -0
  117. package/dist/shared/calendar-button-bar/calendar-button-bar.d.ts +41 -0
  118. package/dist/shared/calendar-button-bar/calendar-button-bar.d.ts.map +1 -0
  119. package/dist/shared/calendar-button-bar/calendar-button-bar.js +435 -0
  120. package/dist/shared/calendar-locales.d.ts +9 -0
  121. package/dist/shared/calendar-locales.d.ts.map +1 -0
  122. package/dist/shared/calendar-locales.js +30 -0
  123. package/dist/shared/calendar-utils.d.ts +34 -0
  124. package/dist/shared/calendar-utils.d.ts.map +1 -0
  125. package/dist/shared/calendar-utils.js +99 -0
  126. package/dist/shared/calendar-utils.test.d.ts +2 -0
  127. package/dist/shared/calendar-utils.test.d.ts.map +1 -0
  128. package/dist/types.d.ts +102 -1
  129. package/dist/types.d.ts.map +1 -1
  130. package/package.json +35 -47
  131. package/dist/pd-calendar-cell.d.ts +0 -47
  132. package/dist/pd-calendar-cell.d.ts.map +0 -1
  133. package/dist/pd-calendar-cell.js +0 -282
  134. package/dist/pd-calendar.d.ts.map +0 -1
  135. package/dist/pd-year-popup.d.ts +0 -25
  136. package/dist/pd-year-popup.d.ts.map +0 -1
  137. package/dist/pd-year-popup.js +0 -136
  138. package/dist/stories/cell.stories.d.ts +0 -15
  139. package/dist/stories/cell.stories.d.ts.map +0 -1
  140. package/dist/stories/index.stories.d.ts +0 -23
  141. package/dist/stories/index.stories.d.ts.map +0 -1
@@ -0,0 +1,252 @@
1
+ import { css, html } from 'lit';
2
+ import { property, customElement } from 'lit/decorators.js';
3
+ import { PdBaseCell } from '../../shared/PdBaseCell.js';
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __decorateClass = (decorators, target, key, kind) => {
8
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
9
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
10
+ if (decorator = decorators[i])
11
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
12
+ if (kind && result) __defProp(target, key, result);
13
+ return result;
14
+ };
15
+ let PdCalendarListCell = class extends PdBaseCell {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.monthNumber = 0;
19
+ this.yearNumber = 0;
20
+ this.entryIndex = 0;
21
+ /** Weekday abbreviations (German). */
22
+ this._weekDayNames = ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"];
23
+ }
24
+ render() {
25
+ const dateFormatted = this._formatDate();
26
+ const weekDay = this._weekDayNames[this.weekDayNumber];
27
+ const timeInfo = this._formatTime("-");
28
+ const cellClasses = this.category ? "list-cell categorized" : "list-cell";
29
+ const style = this._getCategoryStyle(
30
+ "--pd-calendar-list-cell-category-bg-col",
31
+ "--pd-calendar-list-cell-category-text-col"
32
+ );
33
+ return html`
34
+ <div
35
+ class="${cellClasses}"
36
+ style="${style}"
37
+ data-date="${this.key}"
38
+ @click="${this._handleClick}"
39
+ @keydown="${this._handleKeyDown}"
40
+ >
41
+ <div class="date-group">
42
+ <span class="date-formatted">${dateFormatted}</span>
43
+ <span class="weekday"
44
+ >${weekDay}${timeInfo ? html` ${timeInfo}` : ""}</span
45
+ >
46
+ </div>
47
+ <div class="content-group">
48
+ ${this.title ? html`<span class="title">${this.title}</span>` : ""}
49
+ ${this.desc ? html`<span class="description">${this.desc}</span>` : ""}
50
+ </div>
51
+ </div>
52
+ `;
53
+ }
54
+ _handleSelect() {
55
+ if (this.disabled) return;
56
+ this.dispatchEvent(
57
+ new CustomEvent("select-event", {
58
+ detail: {
59
+ dateKey: this.key,
60
+ entry: this.entry,
61
+ index: this.entryIndex,
62
+ anchorRect: this.getBoundingClientRect()
63
+ },
64
+ bubbles: true,
65
+ composed: true
66
+ })
67
+ );
68
+ }
69
+ /**
70
+ * Formats the date as dd.mm.yy
71
+ */
72
+ _formatDate() {
73
+ const day = this.dayNumber.toString().padStart(2, "0");
74
+ const month = this.monthNumber.toString().padStart(2, "0");
75
+ const year = this.yearNumber.toString().slice(-2);
76
+ return `${day}.${month}.${year}`;
77
+ }
78
+ _handleClick() {
79
+ this._handleSelect();
80
+ }
81
+ };
82
+ PdCalendarListCell.styles = [
83
+ css`
84
+ :host {
85
+ display: block;
86
+ container-type: inline-size;
87
+ }
88
+
89
+ .list-cell {
90
+ display: flex;
91
+ flex-direction: column;
92
+ gap: var(--pd-spacing-xs, 0.25rem);
93
+ padding: var(--pd-spacing-sm, 0.5rem) var(--pd-spacing-md, 1rem);
94
+ background-color: var(
95
+ --pd-calendar-list-cell-bg-col,
96
+ var(--pd-default-lightest-col, #f9fafb)
97
+ );
98
+ border-radius: var(--pd-radius-sm, 4px);
99
+ cursor: pointer;
100
+ transition: background-color 0.15s ease;
101
+ }
102
+
103
+ .list-cell:hover {
104
+ background-color: var(
105
+ --pd-calendar-list-cell-bg-col-hover,
106
+ var(--pd-default-light-col, #f3f4f6)
107
+ );
108
+ }
109
+
110
+ :host([selected]) .list-cell {
111
+ background-color: var(
112
+ --pd-calendar-list-cell-selected-bg-col,
113
+ var(--pd-default-success-light-col, #dcfce7)
114
+ );
115
+ border-left: 3px solid
116
+ var(
117
+ --pd-calendar-list-cell-selected-border-col,
118
+ var(--pd-default-success-col, #22c55e)
119
+ );
120
+ }
121
+
122
+ :host([disabled]) .list-cell {
123
+ opacity: 0.4;
124
+ cursor: not-allowed;
125
+ pointer-events: none;
126
+ }
127
+
128
+ /* Categorized cells - colors set via inline style from category config */
129
+ .list-cell.categorized {
130
+ background-color: var(
131
+ --pd-calendar-list-cell-category-bg-col,
132
+ var(--pd-default-success-light-col, #dcfce7)
133
+ );
134
+ }
135
+
136
+ .list-cell.categorized .date-formatted,
137
+ .list-cell.categorized .weekday,
138
+ .list-cell.categorized .title,
139
+ .list-cell.categorized .description {
140
+ color: var(--pd-calendar-list-cell-category-text-col);
141
+ }
142
+
143
+ /* === COMPACT LAYOUT (default, < 400px) === */
144
+ /* Row 1: Date, Weekday, Title inline */
145
+ .date-group {
146
+ display: flex;
147
+ align-items: center;
148
+ gap: var(--pd-spacing-sm, 0.5rem);
149
+ }
150
+
151
+ .content-group {
152
+ display: contents;
153
+ }
154
+
155
+ .date-formatted {
156
+ font-size: var(--pd-calendar-list-cell-date-size, 0.9rem);
157
+ font-weight: 600;
158
+ color: var(
159
+ --pd-calendar-list-cell-date-col,
160
+ var(--pd-default-font-col, #374151)
161
+ );
162
+ white-space: nowrap;
163
+ }
164
+
165
+ .weekday {
166
+ font-size: var(--pd-calendar-list-cell-weekday-size, 0.75rem);
167
+ color: var(
168
+ --pd-calendar-list-cell-weekday-col,
169
+ var(--pd-default-font-light-col, #6b7280)
170
+ );
171
+ text-transform: uppercase;
172
+ white-space: nowrap;
173
+ }
174
+
175
+ .title {
176
+ font-size: var(--pd-calendar-list-cell-title-size, 1rem);
177
+ font-weight: 500;
178
+ color: var(
179
+ --pd-calendar-list-cell-title-col,
180
+ var(--pd-default-font-col, #111827)
181
+ );
182
+ overflow: hidden;
183
+ text-overflow: ellipsis;
184
+ }
185
+
186
+ /* Row 2: Description full width */
187
+ .description {
188
+ font-size: var(--pd-calendar-list-cell-desc-size, 0.875rem);
189
+ color: var(
190
+ --pd-calendar-list-cell-desc-col,
191
+ var(--pd-default-font-light-col, #6b7280)
192
+ );
193
+ white-space: nowrap;
194
+ overflow: hidden;
195
+ text-overflow: ellipsis;
196
+ }
197
+
198
+ /* === WIDE LAYOUT (>= 400px) === */
199
+ @container (min-width: 400px) {
200
+ .list-cell {
201
+ flex-direction: row;
202
+ align-items: flex-start;
203
+ gap: var(--pd-spacing-md, 1rem);
204
+ }
205
+
206
+ /* Left column: Date + Weekday stacked */
207
+ .date-group {
208
+ flex-direction: column;
209
+ align-items: flex-start;
210
+ gap: 0;
211
+ min-width: 5.5em;
212
+ }
213
+
214
+ /* Right column: Title + Description stacked */
215
+ .content-group {
216
+ display: flex;
217
+ flex-direction: column;
218
+ flex: 1;
219
+ min-width: 0;
220
+ gap: var(--pd-spacing-xs, 0.25rem);
221
+ }
222
+
223
+ .title {
224
+ white-space: nowrap;
225
+ }
226
+ }
227
+
228
+ /* Focus styles for keyboard navigation */
229
+ :host(:focus-visible) .list-cell {
230
+ outline: 2px solid
231
+ var(--pd-focus-ring-col, var(--pd-default-info-col, #3b82f6));
232
+ outline-offset: 2px;
233
+ }
234
+ `
235
+ ];
236
+ __decorateClass([
237
+ property({ type: Number })
238
+ ], PdCalendarListCell.prototype, "monthNumber", 2);
239
+ __decorateClass([
240
+ property({ type: Number })
241
+ ], PdCalendarListCell.prototype, "yearNumber", 2);
242
+ __decorateClass([
243
+ property({ type: Object })
244
+ ], PdCalendarListCell.prototype, "entry", 2);
245
+ __decorateClass([
246
+ property({ type: Number })
247
+ ], PdCalendarListCell.prototype, "entryIndex", 2);
248
+ PdCalendarListCell = __decorateClass([
249
+ customElement("pd-calendar-list-cell")
250
+ ], PdCalendarListCell);
251
+
252
+ export { PdCalendarListCell };
@@ -0,0 +1,3 @@
1
+ import { PdCalendarListCell } from './PdCalendarListCell.js';
2
+ export { PdCalendarListCell };
3
+ //# sourceMappingURL=pd-calendar-list-cell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-calendar-list-cell.d.ts","sourceRoot":"","sources":["../../../src/pd-calendar/pd-calendar-list-cell/pd-calendar-list-cell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAO7D,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { PdCalendarListCell } from './PdCalendarListCell.js';
2
+
3
+ const tag = "pd-calendar-list-cell";
4
+ if (!customElements.get(tag)) {
5
+ customElements.define(tag, PdCalendarListCell);
6
+ }
7
+
8
+ export { PdCalendarListCell };
@@ -0,0 +1,26 @@
1
+ import { CSSResultGroup } from 'lit';
2
+ import { PdBaseView } from '../../shared/PdBaseView.js';
3
+ import { CalendarListRange } from '../../types.js';
4
+ /**
5
+ * List view component for the calendar.
6
+ * Shows only dates that have data entries (info or desc).
7
+ *
8
+ * @internal - Not exported from package, used only by PdCalendar.
9
+ */
10
+ export declare class PdCalendarListView extends PdBaseView {
11
+ /** Current date for determining the displayed month. */
12
+ currentDate: Date;
13
+ /** Custom date range. When set, shows entries within this range instead of current month. */
14
+ listRange?: CalendarListRange;
15
+ static styles: CSSResultGroup;
16
+ render(): import('lit').TemplateResult<1>;
17
+ /**
18
+ * Parses a date from Date object or string (YYYY-MM-DD format).
19
+ */
20
+ private _parseDate;
21
+ /**
22
+ * Gets list entries from calendar data for the current month or custom range.
23
+ */
24
+ private _getListEntries;
25
+ }
26
+ //# sourceMappingURL=PdCalendarListView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PdCalendarListView.d.ts","sourceRoot":"","sources":["../../../src/pd-calendar/pd-calendar-list-view/PdCalendarListView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAKhD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAoB,MAAM,gBAAgB,CAAC;AAErE,OAAO,mDAAmD,CAAC;AAE3D;;;;;GAKG;AACH,qBACa,kBAAmB,SAAQ,UAAU;IAChD,wDAAwD;IAExD,WAAW,OAAc;IAEzB,6FAA6F;IAE7F,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAE9B,OAAgB,MAAM,EAAE,cAAc,CAkCpC;IAEO,MAAM;IA2Cf;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACH,OAAO,CAAC,eAAe;CA8FxB"}
@@ -0,0 +1,165 @@
1
+ import { css, html } from 'lit';
2
+ import { property } from 'lit/decorators.js';
3
+ import { localized, msg } from '@lit/localize';
4
+ import { format } from 'fecha';
5
+ import { PdBaseView } from '../../shared/PdBaseView.js';
6
+ import '../pd-calendar-list-cell/pd-calendar-list-cell.js';
7
+
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __decorateClass = (decorators, target, key, kind) => {
11
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
12
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
13
+ if (decorator = decorators[i])
14
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
15
+ if (kind && result) __defProp(target, key, result);
16
+ return result;
17
+ };
18
+ let PdCalendarListView = class extends PdBaseView {
19
+ constructor() {
20
+ super(...arguments);
21
+ this.currentDate = /* @__PURE__ */ new Date();
22
+ }
23
+ render() {
24
+ const listEntries = this._getListEntries();
25
+ const emptyMessage = msg("Keine Einträge vorhanden", {
26
+ id: "pd.calendar.list.empty"
27
+ });
28
+ this.currentDate.getFullYear();
29
+ this.currentDate.getMonth();
30
+ return html`
31
+ <div class="list-view" role="list" tabindex="0">
32
+ ${listEntries.length > 0 ? listEntries.map(
33
+ (entry) => html`
34
+ <pd-calendar-list-cell
35
+ role="listitem"
36
+ key="${entry.key}"
37
+ .dayNumber="${entry.day}"
38
+ .monthNumber="${entry.month}"
39
+ .yearNumber="${entry.year}"
40
+ .weekDayNumber="${entry.weekDay}"
41
+ .title="${entry.title}"
42
+ .desc="${entry.desc}"
43
+ .category="${entry.category}"
44
+ .categoryColor="${entry.categoryColor}"
45
+ .categoryTextColor="${entry.categoryTextColor}"
46
+ .startTime="${entry.startTime}"
47
+ .endTime="${entry.endTime}"
48
+ ?fullDay="${entry.fullDay}"
49
+ ?disabled="${entry.disabled}"
50
+ ?selected="${this.showSelection && entry.key === format(this.refDate ?? /* @__PURE__ */ new Date(), "YYYY-MM-DD")}"
51
+ .entry="${entry.entry}"
52
+ .entryIndex="${entry.entryIndex}"
53
+ ></pd-calendar-list-cell>
54
+ `
55
+ ) : html`<div class="list-empty">${emptyMessage}</div>`}
56
+ </div>
57
+ `;
58
+ }
59
+ /**
60
+ * Parses a date from Date object or string (YYYY-MM-DD format).
61
+ */
62
+ _parseDate(value) {
63
+ if (value instanceof Date) return value;
64
+ const [year, month, day] = value.split("-").map(Number);
65
+ return new Date(year, month - 1, day);
66
+ }
67
+ /**
68
+ * Gets list entries from calendar data for the current month or custom range.
69
+ */
70
+ _getListEntries() {
71
+ const entries = [];
72
+ if (!this.data) return entries;
73
+ const year = this.currentDate.getFullYear();
74
+ const month = this.currentDate.getMonth();
75
+ const numberOfDays = new Date(year, month + 1, 0).getDate();
76
+ let startDate;
77
+ let endDate;
78
+ if (this.listRange) {
79
+ startDate = this._parseDate(this.listRange.start);
80
+ endDate = this._parseDate(this.listRange.end);
81
+ } else {
82
+ startDate = new Date(year, month, 1);
83
+ endDate = new Date(year, month, numberOfDays);
84
+ }
85
+ const currentDate = new Date(startDate);
86
+ while (currentDate <= endDate) {
87
+ const key = format(currentDate, "YYYY-MM-DD");
88
+ const cellDataArray = this.data[key];
89
+ if (cellDataArray && cellDataArray.length > 0) {
90
+ cellDataArray.forEach((cellData, idx) => {
91
+ if (cellData.info || cellData.desc) {
92
+ const category = cellData.category || "";
93
+ const categoryConfig = this._resolveCategoryConfig(category);
94
+ entries.push({
95
+ key,
96
+ day: currentDate.getDate(),
97
+ month: currentDate.getMonth() + 1,
98
+ year: currentDate.getFullYear(),
99
+ weekDay: currentDate.getDay(),
100
+ title: cellData.info || "",
101
+ desc: cellData.desc || "",
102
+ category,
103
+ categoryColor: categoryConfig?.color || "",
104
+ categoryTextColor: categoryConfig?.textColor || "",
105
+ disabled: cellData.disabled ?? false,
106
+ startTime: cellData.startTime || "",
107
+ endTime: cellData.endTime || "",
108
+ fullDay: cellData.fullDay ?? false,
109
+ entry: cellData,
110
+ entryIndex: idx
111
+ });
112
+ }
113
+ });
114
+ }
115
+ currentDate.setDate(currentDate.getDate() + 1);
116
+ }
117
+ return entries;
118
+ }
119
+ };
120
+ PdCalendarListView.styles = [
121
+ PdBaseView.baseStyles,
122
+ css`
123
+ .list-view {
124
+ display: flex;
125
+ flex-direction: column;
126
+ gap: var(--pd-spacing-sm, 0.5rem);
127
+ padding: var(--pd-spacing-sm, 0.5rem) 0;
128
+ background-color: var(
129
+ --pd-calendar-list-bg-col,
130
+ var(--pd-default-bg-col)
131
+ );
132
+ border-radius: var(--pd-radius-md);
133
+ max-height: var(--pd-calendar-list-max-height, 400px);
134
+ overflow-y: auto;
135
+ }
136
+
137
+ .list-view:focus {
138
+ outline: none;
139
+ }
140
+
141
+ .list-view:focus-visible {
142
+ outline: 2px solid var(--pd-focus-ring-col);
143
+ outline-offset: 2px;
144
+ border-radius: var(--pd-radius-md, 4px);
145
+ }
146
+
147
+ .list-empty {
148
+ padding: var(--pd-spacing-lg, 1.5rem);
149
+ text-align: center;
150
+ color: var(--pd-default-font-light-col, #6b7280);
151
+ font-style: italic;
152
+ }
153
+ `
154
+ ];
155
+ __decorateClass([
156
+ property({ type: Object })
157
+ ], PdCalendarListView.prototype, "currentDate", 2);
158
+ __decorateClass([
159
+ property({ type: Object })
160
+ ], PdCalendarListView.prototype, "listRange", 2);
161
+ PdCalendarListView = __decorateClass([
162
+ localized()
163
+ ], PdCalendarListView);
164
+
165
+ export { PdCalendarListView };
@@ -0,0 +1,3 @@
1
+ import { PdCalendarListView } from './PdCalendarListView.js';
2
+ export { PdCalendarListView };
3
+ //# sourceMappingURL=pd-calendar-list-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-calendar-list-view.d.ts","sourceRoot":"","sources":["../../../src/pd-calendar/pd-calendar-list-view/pd-calendar-list-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAO7D,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { PdCalendarListView } from './PdCalendarListView.js';
2
+
3
+ const tag = "pd-calendar-list-view";
4
+ if (!customElements.get(tag)) {
5
+ customElements.define(tag, PdCalendarListView);
6
+ }
7
+
8
+ export { PdCalendarListView };
@@ -0,0 +1,55 @@
1
+ import { CSSResultGroup, PropertyValues } from 'lit';
2
+ import { PdBaseView } from '../../shared/PdBaseView.js';
3
+ /**
4
+ * Month grid view component for the calendar.
5
+ * Displays a month with week rows, weekday headers, and day cells.
6
+ * Supports keyboard, wheel, and touch navigation.
7
+ *
8
+ * @event pd-navigate - Fired when the user navigates via wheel/touch/keyboard. Detail: `{ direction: "next" | "prev" }`.
9
+ *
10
+ * @internal - Not exported from package, used only by PdCalendar.
11
+ */
12
+ export declare class PdCalendarMonthView extends PdBaseView {
13
+ /** Current date determining the displayed month. */
14
+ currentDate: Date;
15
+ /** Hide Saturday and Sunday columns. */
16
+ hideWeekend: boolean;
17
+ /** Whether dates are selectable. */
18
+ selectableDates: boolean;
19
+ /** CSS class for day number positioning ('top-left' or 'center'). */
20
+ numberClass: string;
21
+ /** Enable mouse wheel navigation between months. */
22
+ withWheelNavigation: boolean;
23
+ /** Enable touch swipe navigation between months. */
24
+ withTouchNavigation: boolean;
25
+ /** Cell rendering mode: "simple" uses PdCalendarCell, "events" uses PdCalendarEventCell. */
26
+ cellType: "simple" | "events";
27
+ /** @ignore */
28
+ private _wheelDelta;
29
+ /** @ignore - Currently focused day (1-31) for keyboard navigation, -1 if none */
30
+ private _focusedDay;
31
+ /** @ignore - Whether the calendar grid has focus */
32
+ private _gridHasFocus;
33
+ private _numberOfDays;
34
+ private _firstDayOfMonth;
35
+ private _year;
36
+ private _month;
37
+ private _prevCurrentDate?;
38
+ static styles: CSSResultGroup;
39
+ willUpdate(changedProperties: PropertyValues<this>): void;
40
+ render(): import('lit').TemplateResult<1>;
41
+ private _renderDay;
42
+ private _renderEventDay;
43
+ private _getWeekDays;
44
+ private _dispatchNavigate;
45
+ private _onGridFocusIn;
46
+ private _onGridFocusOut;
47
+ private _wheelEvent;
48
+ private _touchStartEvent;
49
+ private _touchEndEvent;
50
+ private _onGridKeyDown;
51
+ private _getNextSelectableDay;
52
+ private _selectFocusedDay;
53
+ private _scrollFocusedDayIntoView;
54
+ }
55
+ //# sourceMappingURL=PdCalendarMonthView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PdCalendarMonthView.d.ts","sourceRoot":"","sources":["../../../src/pd-calendar/pd-calendar-month-view/PdCalendarMonthView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAKzE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AASxD,OAAO,yCAAyC,CAAC;AACjD,OAAO,qDAAqD,CAAC;AAI7D;;;;;;;;GAQG;AACH,qBACa,mBAAoB,SAAQ,UAAU;IACjD,oDAAoD;IAEpD,WAAW,OAAc;IAEzB,wCAAwC;IAExC,WAAW,UAAS;IAEpB,oCAAoC;IAEpC,eAAe,UAAS;IAExB,qEAAqE;IAErE,WAAW,SAAc;IAEzB,oDAAoD;IAEpD,mBAAmB,UAAS;IAE5B,oDAAoD;IAEpD,mBAAmB,UAAS;IAE5B,4FAA4F;IAE5F,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAY;IAEzC,cAAc;IAEd,OAAO,CAAC,WAAW,CAAK;IAExB,iFAAiF;IAEjF,OAAO,CAAC,WAAW,CAAM;IAEzB,oDAAoD;IAEpD,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,gBAAgB,CAAC,CAAO;IAEhC,OAAgB,MAAM,EAAE,cAAc,CA8HpC;IAEO,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAwBzD,MAAM;IA2Cf,OAAO,CAAC,UAAU;IAwClB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,cAAc;IA4DtB,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,yBAAyB;CAQlC"}