@progressive-development/pd-calendar 0.9.2 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/LICENSE +21 -2
  2. package/README.md +32 -57
  3. package/dist/generated/locales/be.d.ts +3 -0
  4. package/dist/generated/locales/be.d.ts.map +1 -1
  5. package/dist/generated/locales/de.d.ts +3 -0
  6. package/dist/generated/locales/de.d.ts.map +1 -1
  7. package/dist/generated/locales/en.d.ts +3 -0
  8. package/dist/generated/locales/en.d.ts.map +1 -1
  9. package/dist/index.d.ts +10 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +16 -0
  12. package/dist/locales/be.js +4 -1
  13. package/dist/locales/de.js +3 -0
  14. package/dist/locales/en.js +4 -1
  15. package/dist/pd-calendar/PdCalendar.d.ts +101 -18
  16. package/dist/pd-calendar/PdCalendar.d.ts.map +1 -1
  17. package/dist/pd-calendar/PdCalendar.js +380 -264
  18. package/dist/pd-calendar/pd-calendar-cell/PdCalendarCell.d.ts +40 -33
  19. package/dist/pd-calendar/pd-calendar-cell/PdCalendarCell.d.ts.map +1 -1
  20. package/dist/pd-calendar/pd-calendar-cell/PdCalendarCell.js +173 -113
  21. package/dist/pd-calendar/pd-calendar-day-events-panel/PdCalendarDayEventsPanel.d.ts +27 -0
  22. package/dist/pd-calendar/pd-calendar-day-events-panel/PdCalendarDayEventsPanel.d.ts.map +1 -0
  23. package/dist/pd-calendar/pd-calendar-day-events-panel/PdCalendarDayEventsPanel.js +160 -0
  24. package/dist/pd-calendar/pd-calendar-day-events-panel/pd-calendar-day-events-panel.d.ts +3 -0
  25. package/dist/pd-calendar/pd-calendar-day-events-panel/pd-calendar-day-events-panel.d.ts.map +1 -0
  26. package/dist/pd-calendar/pd-calendar-day-events-panel/pd-calendar-day-events-panel.js +8 -0
  27. package/dist/pd-calendar/pd-calendar-event-cell/PdCalendarEventCell.d.ts +55 -0
  28. package/dist/pd-calendar/pd-calendar-event-cell/PdCalendarEventCell.d.ts.map +1 -0
  29. package/dist/pd-calendar/pd-calendar-event-cell/PdCalendarEventCell.js +341 -0
  30. package/dist/pd-calendar/pd-calendar-event-cell/pd-calendar-event-cell.d.ts +3 -0
  31. package/dist/pd-calendar/pd-calendar-event-cell/pd-calendar-event-cell.d.ts.map +1 -0
  32. package/dist/pd-calendar/pd-calendar-event-cell/pd-calendar-event-cell.js +8 -0
  33. package/dist/pd-calendar/pd-calendar-event-info-panel/PdCalendarEventInfoPanel.d.ts +29 -0
  34. package/dist/pd-calendar/pd-calendar-event-info-panel/PdCalendarEventInfoPanel.d.ts.map +1 -0
  35. package/dist/pd-calendar/pd-calendar-event-info-panel/PdCalendarEventInfoPanel.js +211 -0
  36. package/dist/pd-calendar/pd-calendar-event-info-panel/pd-calendar-event-info-panel.d.ts +3 -0
  37. package/dist/pd-calendar/pd-calendar-event-info-panel/pd-calendar-event-info-panel.d.ts.map +1 -0
  38. package/dist/pd-calendar/pd-calendar-event-info-panel/pd-calendar-event-info-panel.js +8 -0
  39. package/dist/pd-calendar/pd-calendar-list-cell/PdCalendarListCell.d.ts +28 -0
  40. package/dist/pd-calendar/pd-calendar-list-cell/PdCalendarListCell.d.ts.map +1 -0
  41. package/dist/pd-calendar/pd-calendar-list-cell/PdCalendarListCell.js +252 -0
  42. package/dist/pd-calendar/pd-calendar-list-cell/pd-calendar-list-cell.d.ts +3 -0
  43. package/dist/pd-calendar/pd-calendar-list-cell/pd-calendar-list-cell.d.ts.map +1 -0
  44. package/dist/pd-calendar/pd-calendar-list-cell/pd-calendar-list-cell.js +8 -0
  45. package/dist/pd-calendar/pd-calendar-list-view/PdCalendarListView.d.ts +26 -0
  46. package/dist/pd-calendar/pd-calendar-list-view/PdCalendarListView.d.ts.map +1 -0
  47. package/dist/pd-calendar/pd-calendar-list-view/PdCalendarListView.js +165 -0
  48. package/dist/pd-calendar/pd-calendar-list-view/pd-calendar-list-view.d.ts +3 -0
  49. package/dist/pd-calendar/pd-calendar-list-view/pd-calendar-list-view.d.ts.map +1 -0
  50. package/dist/pd-calendar/pd-calendar-list-view/pd-calendar-list-view.js +8 -0
  51. package/dist/pd-calendar/pd-calendar-month-view/PdCalendarMonthView.d.ts +55 -0
  52. package/dist/pd-calendar/pd-calendar-month-view/PdCalendarMonthView.d.ts.map +1 -0
  53. package/dist/pd-calendar/pd-calendar-month-view/PdCalendarMonthView.js +461 -0
  54. package/dist/pd-calendar/pd-calendar-month-view/pd-calendar-month-view.d.ts +3 -0
  55. package/dist/pd-calendar/pd-calendar-month-view/pd-calendar-month-view.d.ts.map +1 -0
  56. package/dist/pd-calendar/pd-calendar-month-view/pd-calendar-month-view.js +8 -0
  57. package/dist/pd-calendar/pd-calendar-time-grid-view/PdCalendarTimeGridView.d.ts +32 -0
  58. package/dist/pd-calendar/pd-calendar-time-grid-view/PdCalendarTimeGridView.d.ts.map +1 -0
  59. package/dist/pd-calendar/pd-calendar-time-grid-view/PdCalendarTimeGridView.js +468 -0
  60. package/dist/pd-calendar/pd-calendar-time-grid-view/pd-calendar-time-grid-view.d.ts +3 -0
  61. package/dist/pd-calendar/pd-calendar-time-grid-view/pd-calendar-time-grid-view.d.ts.map +1 -0
  62. package/dist/pd-calendar/pd-calendar-time-grid-view/pd-calendar-time-grid-view.js +8 -0
  63. package/dist/pd-calendar/pd-calendar-week-cell/PdCalendarWeekCell.d.ts +31 -0
  64. package/dist/pd-calendar/pd-calendar-week-cell/PdCalendarWeekCell.d.ts.map +1 -0
  65. package/dist/pd-calendar/pd-calendar-week-cell/PdCalendarWeekCell.js +134 -0
  66. package/dist/pd-calendar/pd-calendar-week-cell/pd-calendar-week-cell.d.ts +3 -0
  67. package/dist/pd-calendar/pd-calendar-week-cell/pd-calendar-week-cell.d.ts.map +1 -0
  68. package/dist/pd-calendar/pd-calendar-week-cell/pd-calendar-week-cell.js +8 -0
  69. package/dist/pd-calendar/pd-calendar.stories.d.ts +79 -19
  70. package/dist/pd-calendar/pd-calendar.stories.d.ts.map +1 -1
  71. package/dist/pd-calendar/pd-year-popup/PdYearPopup.d.ts +22 -11
  72. package/dist/pd-calendar/pd-year-popup/PdYearPopup.d.ts.map +1 -1
  73. package/dist/pd-calendar/pd-year-popup/PdYearPopup.js +152 -34
  74. package/dist/pd-datepicker/PdDatepicker.d.ts +76 -7
  75. package/dist/pd-datepicker/PdDatepicker.d.ts.map +1 -1
  76. package/dist/pd-datepicker/PdDatepicker.js +257 -50
  77. package/dist/pd-datepicker/pd-date-picker.stories.d.ts +78 -20
  78. package/dist/pd-datepicker/pd-date-picker.stories.d.ts.map +1 -1
  79. package/dist/pd-slot-picker/PdSlotPicker.d.ts +102 -0
  80. package/dist/pd-slot-picker/PdSlotPicker.d.ts.map +1 -0
  81. package/dist/pd-slot-picker/PdSlotPicker.js +339 -0
  82. package/dist/pd-slot-picker/pd-slot-cell/PdSlotCell.d.ts +35 -0
  83. package/dist/pd-slot-picker/pd-slot-cell/PdSlotCell.d.ts.map +1 -0
  84. package/dist/pd-slot-picker/pd-slot-cell/PdSlotCell.js +188 -0
  85. package/dist/pd-slot-picker/pd-slot-cell/pd-slot-cell.d.ts +3 -0
  86. package/dist/pd-slot-picker/pd-slot-cell/pd-slot-cell.d.ts.map +1 -0
  87. package/dist/pd-slot-picker/pd-slot-cell/pd-slot-cell.js +8 -0
  88. package/dist/pd-slot-picker/pd-slot-picker.d.ts +3 -0
  89. package/dist/pd-slot-picker/pd-slot-picker.d.ts.map +1 -0
  90. package/dist/pd-slot-picker/pd-slot-picker.stories.d.ts +67 -0
  91. package/dist/pd-slot-picker/pd-slot-picker.stories.d.ts.map +1 -0
  92. package/dist/pd-slot-picker.d.ts +2 -0
  93. package/dist/pd-slot-picker.js +8 -0
  94. package/dist/shared/PdBaseCell.d.ts +68 -0
  95. package/dist/shared/PdBaseCell.d.ts.map +1 -0
  96. package/dist/shared/PdBaseCell.js +120 -0
  97. package/dist/shared/PdBaseView.d.ts +22 -0
  98. package/dist/shared/PdBaseView.d.ts.map +1 -0
  99. package/dist/shared/PdBaseView.js +46 -0
  100. package/dist/shared/PdCalendarPanelBase.d.ts +34 -0
  101. package/dist/shared/PdCalendarPanelBase.d.ts.map +1 -0
  102. package/dist/shared/PdCalendarPanelBase.js +169 -0
  103. package/dist/shared/calendar-button-bar/calendar-button-bar.d.ts +41 -0
  104. package/dist/shared/calendar-button-bar/calendar-button-bar.d.ts.map +1 -0
  105. package/dist/shared/calendar-button-bar/calendar-button-bar.js +435 -0
  106. package/dist/shared/calendar-locales.d.ts +9 -0
  107. package/dist/shared/calendar-locales.d.ts.map +1 -0
  108. package/dist/shared/calendar-locales.js +30 -0
  109. package/dist/shared/calendar-utils.d.ts +34 -0
  110. package/dist/shared/calendar-utils.d.ts.map +1 -0
  111. package/dist/shared/calendar-utils.js +99 -0
  112. package/dist/shared/calendar-utils.test.d.ts +2 -0
  113. package/dist/shared/calendar-utils.test.d.ts.map +1 -0
  114. package/dist/types.d.ts +102 -1
  115. package/dist/types.d.ts.map +1 -1
  116. package/package.json +10 -5
  117. package/dist/pd-calendar/pd-calendar-cell/pd-calendar-cell.stories.d.ts +0 -15
  118. package/dist/pd-calendar/pd-calendar-cell/pd-calendar-cell.stories.d.ts.map +0 -1
@@ -1,23 +1,83 @@
1
- import { StoryObj } from '@storybook/web-components';
2
- declare const meta: {
3
- title: string;
4
- render: ({ hideWeekend, refDate, data, prevMonthConstraint, nextMonthConstraint, addSlot, }: import('@storybook/web-components').Args) => import('lit').TemplateResult<1>;
5
- argTypes: {};
6
- parameters: {
7
- actions: {
8
- argTypesRegex: string;
9
- };
10
- };
11
- };
1
+ import { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ import { CalendarData, AvailableCalendarViewTypes } from '../types.js';
3
+ /**
4
+ * Story arguments interface for pd-calendar component.
5
+ * Maps to the component's public API.
6
+ */
7
+ interface PdCalendarArgs {
8
+ /** Reference date for initial calendar view */
9
+ refDate?: Date;
10
+ /** Whether weekends should be hidden */
11
+ hideWeekend: boolean;
12
+ /** Calendar data with info per date */
13
+ data: CalendarData;
14
+ /** Number of months allowed to navigate backwards (-1 = unlimited) */
15
+ prevMonthConstraint: number;
16
+ /** Number of months allowed to navigate forwards (-1 = unlimited) */
17
+ nextMonthConstraint: number;
18
+ /** Whether dates are selectable */
19
+ selectableDates: boolean;
20
+ /** Whether to show selection highlight */
21
+ showSelection: boolean;
22
+ /** Year selection popup values */
23
+ withYearPopup: string[];
24
+ /** CSS class for number positioning */
25
+ numberClass: string;
26
+ /** Enable mouse wheel navigation between months */
27
+ withWheelNavigation: boolean;
28
+ /** Enable touch swipe navigation between months */
29
+ withTouchNavigation: boolean;
30
+ /** Available view types for view toggle */
31
+ availableViewTypes?: AvailableCalendarViewTypes;
32
+ }
33
+ /**
34
+ * ## pd-calendar
35
+ *
36
+ * A full-featured calendar component supporting month, list, and week views with
37
+ * date info, selection, navigation, and event management.
38
+ *
39
+ * ### Features
40
+ * - **Month View**: Displays a full month with navigation controls and date info
41
+ * - **List View**: Shows only dates with data in a compact list format
42
+ * - **Week View (timeGrid)**: Displays a weekly time grid with overlapping events
43
+ * - **Event Calendar**: Month view with event bars and info panel (`cellType="events"`)
44
+ * - **Special Days**: Highlight specific dates with category-based styling
45
+ * - **Navigation**: Arrow buttons, keyboard, mouse wheel, touch swipe, year popup
46
+ * - **Navigation Constraints**: Limit forward/backward month navigation
47
+ * - **Weekend Hiding**: Option to hide Saturday and Sunday
48
+ * - **Custom Date Range**: List view can display a specific date range
49
+ *
50
+ * ### Accessibility
51
+ * - `role="grid"` on the calendar grid with `aria-label` for current month/year
52
+ * - Arrow keys navigate between dates, Enter/Space selects
53
+ * - Home/End for first/last day of month
54
+ * - `aria-selected` on selected dates
55
+ * - `tabindex` management for keyboard focus (0 when selectable, -1 when read-only)
56
+ * - Focus-visible styling for keyboard users
57
+ */
58
+ declare const meta: Meta<PdCalendarArgs>;
12
59
  export default meta;
13
- type Story = StoryObj;
14
- export declare const Basic: Story;
60
+ type Story = StoryObj<PdCalendarArgs>;
61
+ /** Default calendar without data or constraints. Interactive via Controls panel. */
62
+ export declare const Default: Story;
63
+ /** Calendar with price info per date and forward/backward navigation constraints. */
15
64
  export declare const WithInfoAndConstraints: Story;
65
+ /** Calendar with category-highlighted special days (green background). */
16
66
  export declare const WithSpecialDays: Story;
17
- export declare const WithSpecialDaysHideWeekend: Story;
18
- export declare const WithSpecificDateAndConstraints: Story;
19
- export declare const BasicSmall: Story;
20
- export declare const BasicSmallHugeYearSelection: Story;
21
- export declare const BasicSmallWithRefDate: Story;
22
- export declare const BasicSmallWithoutWeekend: Story;
67
+ /** Compact selectable calendar with year popup, centered numbers, and reduced width. */
68
+ export declare const Selectable: Story;
69
+ /** List view with title, description, time, and category colors. Toggle between month and list view. */
70
+ export declare const ListView: Story;
71
+ /** All time display variants in list view: no time, start only, start+end, and full day. */
72
+ export declare const ListViewTimeVariants: Story;
73
+ /** List view with a custom date range spanning multiple months. Navigation is disabled in range mode. */
74
+ export declare const ListViewCustomRange: Story;
75
+ /** Week view (timeGrid) with timed events, full-day events, and overlapping events. */
76
+ export declare const WeekView: Story;
77
+ /** Week view with custom time window (8:00-18:00) and visible days configuration. */
78
+ export declare const WeekViewBusinessHours: Story;
79
+ /** Month view with event bars per day using `cellType="events"`. Click an event bar to open the info panel. */
80
+ export declare const EventCalendar: Story;
81
+ /** CSS Custom Properties -- Branded and Redesigned calendar variants. */
82
+ export declare const CustomStyling: Story;
23
83
  //# sourceMappingURL=pd-calendar.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pd-calendar.stories.d.ts","sourceRoot":"","sources":["../../src/pd-calendar/pd-calendar.stories.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAIhE,OAAO,kBAAkB,CAAC;AAG1B,QAAA,MAAM,IAAI;;;;;;;;;CAwBM,CAAC;AAEjB,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AActB,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAUF,eAAO,MAAM,sBAAsB,EAAE,KAOpC,CAAC;AAiBF,eAAO,MAAM,eAAe,EAAE,KAO7B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,KAQxC,CAAC;AAIF,eAAO,MAAM,8BAA8B,EAAE,KAM5C,CAAC;AA2CF,eAAO,MAAM,UAAU,EAAE,KA0BxB,CAAC;AAOF,eAAO,MAAM,2BAA2B,EAAE,KA2BzC,CAAC;AAIF,eAAO,MAAM,qBAAqB,EAAE,KA+BnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,KA0BtC,CAAC"}
1
+ {"version":3,"file":"pd-calendar.stories.d.ts","sourceRoot":"","sources":["../../src/pd-calendar/pd-calendar.stories.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAKrE,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,YAAY,EACZ,0BAA0B,EAI3B,MAAM,aAAa,CAAC;AAMrB;;;GAGG;AACH,UAAU,cAAc;IACtB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,wCAAwC;IACxC,WAAW,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,sEAAsE;IACtE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mCAAmC;IACnC,eAAe,EAAE,OAAO,CAAC;IACzB,0CAA0C;IAC1C,aAAa,EAAE,OAAO,CAAC;IACvB,kCAAkC;IAClC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,mDAAmD;IACnD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,0BAA0B,CAAC;CACjD;AA+ED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,cAAc,CAoG9B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;AAMtC,oFAAoF;AACpF,eAAO,MAAM,OAAO,EAAE,KAgBrB,CAAC;AAMF,qFAAqF;AACrF,eAAO,MAAM,sBAAsB,EAAE,KAiBpC,CAAC;AAMF,0EAA0E;AAC1E,eAAO,MAAM,eAAe,EAAE,KAgB7B,CAAC;AAMF,wFAAwF;AACxF,eAAO,MAAM,UAAU,EAAE,KAwCxB,CAAC;AAMF,wGAAwG;AACxG,eAAO,MAAM,QAAQ,EAAE,KA4FtB,CAAC;AAMF,4FAA4F;AAC5F,eAAO,MAAM,oBAAoB,EAAE,KAiElC,CAAC;AAMF,yGAAyG;AACzG,eAAO,MAAM,mBAAmB,EAAE,KAkEjC,CAAC;AAMF,uFAAuF;AACvF,eAAO,MAAM,QAAQ,EAAE,KAuHtB,CAAC;AAMF,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,EAAE,KA2EnC,CAAC;AAMF,+GAA+G;AAC/G,eAAO,MAAM,aAAa,EAAE,KAmI3B,CAAC;AAMF,yEAAyE;AACzE,eAAO,MAAM,aAAa,EAAE,KAyF3B,CAAC"}
@@ -1,27 +1,38 @@
1
1
  import { LitElement, CSSResultGroup } from 'lit';
2
2
  /**
3
- * Web Component zur Anzeige eines Jahresauswahl-Popups.
3
+ * Accessible year selection popup component.
4
4
  *
5
- * Wird typischerweise als Dropdown unterhalb eines Buttons eingeblendet und
6
- * zeigt eine Liste von auswählbaren Jahren an.
5
+ * Displays a listbox of selectable years with full keyboard navigation
6
+ * and ARIA support for screen readers.
7
7
  *
8
- * @fires change-year-selection wenn ein Jahr ausgewählt wurde
9
- * @fires abort-year-selection wenn außerhalb geklickt wird / keine Auswahl
8
+ * @event change-year-selection - Fired when a year is selected. Detail: `{ year: string }`.
9
+ * @event abort-year-selection - Fired when popup is closed without selection (Escape, click outside).
10
10
  *
11
11
  * @tagname pd-year-popup
12
+ *
13
+ * @cssprop --pd-year-popup-bg-col - Background color. Default: `var(--pd-default-bg-col)`.
14
+ * @cssprop --pd-year-popup-border-col - Border color. Default: `var(--pd-default-disabled-light-col)`.
12
15
  */
13
16
  export declare class PdYearPopup extends LitElement {
14
- /**
15
- * Liste der auswählbaren Jahre.
16
- */
17
+ /** List of selectable years. */
17
18
  yearSelection: string[];
18
- /**
19
- * Aktuell ausgewähltes Jahr.
20
- */
19
+ /** Currently selected year (highlighted). */
21
20
  currentYear: string;
21
+ /** @ignore - Index of currently focused item for keyboard navigation */
22
+ private _focusedIndex;
23
+ private _listEl;
24
+ private _boundHandleClickOutside;
22
25
  static styles: CSSResultGroup;
26
+ connectedCallback(): void;
27
+ disconnectedCallback(): void;
28
+ firstUpdated(): void;
23
29
  render(): import('lit').TemplateResult<1>;
30
+ private _getItemClasses;
31
+ private _onKeyDown;
32
+ private _scrollToFocused;
24
33
  private _yearSelection;
34
+ private _selectYear;
25
35
  private _closeSelection;
36
+ private _handleClickOutside;
26
37
  }
27
38
  //# sourceMappingURL=PdYearPopup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PdYearPopup.d.ts","sourceRoot":"","sources":["../../../src/pd-calendar/pd-year-popup/PdYearPopup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAG5D;;;;;;;;;;GAUG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACzC;;OAEG;IAEH,aAAa,EAAE,MAAM,EAAE,CAAM;IAE7B;;OAEG;IAEH,WAAW,SAAM;IAEjB,OAAgB,MAAM,EAAE,cAAc,CA6DpC;IAEO,MAAM;IAkBf,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,eAAe;CAQxB"}
1
+ {"version":3,"file":"PdYearPopup.d.ts","sourceRoot":"","sources":["../../../src/pd-calendar/pd-year-popup/PdYearPopup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAG5D;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACzC,gCAAgC;IAEhC,aAAa,EAAE,MAAM,EAAE,CAAM;IAE7B,6CAA6C;IAE7C,WAAW,SAAM;IAEjB,wEAAwE;IAExE,OAAO,CAAC,aAAa,CAAM;IAG3B,OAAO,CAAC,OAAO,CAAoB;IAEnC,OAAO,CAAC,wBAAwB,CAAuC;IAEvE,OAAgB,MAAM,EAAE,cAAc,CAgFpC;IAEO,iBAAiB,IAAI,IAAI;IAQzB,oBAAoB,IAAI,IAAI;IAK5B,YAAY,IAAI,IAAI;IAYpB,MAAM;IA8Bf,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,UAAU;IAiDlB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,mBAAmB;CAM5B"}
@@ -1,5 +1,5 @@
1
1
  import { LitElement, css, html } from 'lit';
2
- import { property } from 'lit/decorators.js';
2
+ import { property, state, query } from 'lit/decorators.js';
3
3
 
4
4
  var __defProp = Object.defineProperty;
5
5
  var __decorateClass = (decorators, target, key, kind) => {
@@ -15,6 +15,8 @@ class PdYearPopup extends LitElement {
15
15
  super(...arguments);
16
16
  this.yearSelection = [];
17
17
  this.currentYear = "";
18
+ this._focusedIndex = -1;
19
+ this._boundHandleClickOutside = this._handleClickOutside.bind(this);
18
20
  }
19
21
  static {
20
22
  this.styles = [
@@ -32,12 +34,13 @@ class PdYearPopup extends LitElement {
32
34
  overflow-y: auto;
33
35
 
34
36
  margin: 0;
35
- padding: 4px 0;
37
+ padding: var(--pd-spacing-xs) 0;
36
38
  width: 90px;
37
- background: var(--pd-default-light-col, #ffffff);
38
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
39
- border-radius: 8px;
40
- border: 1px solid var(--pd-default-border-col, #ddd);
39
+ background: var(--pd-year-popup-bg-col, var(--pd-default-bg-col));
40
+ box-shadow: var(--pd-shadow-lg);
41
+ border-radius: var(--pd-radius-lg);
42
+ border: 1px solid
43
+ var(--pd-year-popup-border-col, var(--pd-default-disabled-light-col));
41
44
 
42
45
  display: flex;
43
46
  flex-direction: column;
@@ -45,49 +48,95 @@ class PdYearPopup extends LitElement {
45
48
  scrollbar-width: thin;
46
49
  }
47
50
 
51
+ ul:focus {
52
+ outline: none;
53
+ }
54
+
55
+ ul:focus-visible {
56
+ outline: 2px solid var(--pd-focus-ring-col);
57
+ outline-offset: 2px;
58
+ }
59
+
48
60
  ul::-webkit-scrollbar {
49
61
  width: 6px;
50
62
  }
51
63
 
52
64
  ul::-webkit-scrollbar-thumb {
53
- background-color: rgba(0, 0, 0, 0.2);
54
- border-radius: 3px;
65
+ background-color: var(--pd-default-disabled-col);
66
+ border-radius: var(--pd-radius-sm);
55
67
  }
56
68
 
57
69
  li {
58
70
  text-align: center;
59
- padding: 8px 0;
60
- margin: 0 4px;
61
- font-size: 14px;
62
- border-radius: 4px;
63
- color: var(--pd-default-dark-col, #333);
71
+ padding: var(--pd-spacing-xs) var(--pd-spacing-sm);
72
+ margin: 0 var(--pd-spacing-xs);
73
+ font-size: 0.9em;
74
+ font-family: var(--pd-default-font-content-family);
75
+ border-radius: var(--pd-radius-sm);
76
+ color: var(--pd-default-dark-col);
77
+ cursor: pointer;
64
78
  transition:
65
- background-color 0.2s ease,
66
- color 0.2s ease;
79
+ background-color 0.15s ease,
80
+ color 0.15s ease;
67
81
  }
68
82
 
69
- li.selectable:hover {
70
- background-color: var(--pd-default-hover-bg, #f0f0f0);
71
- color: var(--pd-default-hover-col, #000);
72
- cursor: pointer;
83
+ li:hover {
84
+ background-color: var(--pd-default-bg-light-col);
85
+ }
86
+
87
+ li.focused {
88
+ outline: 2px solid var(--pd-focus-ring-col);
89
+ outline-offset: -2px;
73
90
  }
74
91
 
75
92
  li.current {
76
- background-color: var(--pd-default-primary-col, #007acc);
77
- color: white;
78
- font-weight: bold;
93
+ background-color: var(--pd-default-col);
94
+ color: var(--pd-on-primary-col);
95
+ font-weight: 600;
96
+ }
97
+
98
+ li.current:hover {
99
+ background-color: var(--pd-default-dark-col);
79
100
  }
80
101
  `
81
102
  ];
82
103
  }
104
+ connectedCallback() {
105
+ super.connectedCallback();
106
+ setTimeout(() => {
107
+ document.addEventListener("click", this._boundHandleClickOutside);
108
+ }, 0);
109
+ }
110
+ disconnectedCallback() {
111
+ super.disconnectedCallback();
112
+ document.removeEventListener("click", this._boundHandleClickOutside);
113
+ }
114
+ firstUpdated() {
115
+ const currentIndex = this.yearSelection.indexOf(this.currentYear);
116
+ this._focusedIndex = currentIndex >= 0 ? currentIndex : 0;
117
+ this.updateComplete.then(() => {
118
+ this._listEl?.focus();
119
+ this._scrollToFocused();
120
+ });
121
+ }
83
122
  render() {
84
123
  return html`
85
- <ul>
124
+ <ul
125
+ role="listbox"
126
+ aria-label="Jahr auswählen"
127
+ aria-activedescendant="${this._focusedIndex >= 0 ? `year-option-${this._focusedIndex}` : ""}"
128
+ tabindex="0"
129
+ @keydown=${this._onKeyDown}
130
+ >
86
131
  ${this.yearSelection.map(
87
- (year) => html`
132
+ (year, index) => html`
88
133
  <li
89
- class="${this.currentYear === year ? "current" : "selectable"}"
134
+ id="year-option-${index}"
135
+ role="option"
136
+ aria-selected="${this.currentYear === year}"
137
+ class="${this._getItemClasses(year, index)}"
90
138
  data-year="${year}"
139
+ data-index="${index}"
91
140
  @click=${this._yearSelection}
92
141
  >
93
142
  ${year}
@@ -97,21 +146,78 @@ class PdYearPopup extends LitElement {
97
146
  </ul>
98
147
  `;
99
148
  }
149
+ _getItemClasses(year, index) {
150
+ const classes = [];
151
+ if (this.currentYear === year) {
152
+ classes.push("current");
153
+ }
154
+ if (this._focusedIndex === index) {
155
+ classes.push("focused");
156
+ }
157
+ return classes.join(" ");
158
+ }
159
+ _onKeyDown(e) {
160
+ const lastIndex = this.yearSelection.length - 1;
161
+ switch (e.key) {
162
+ case "ArrowDown":
163
+ e.preventDefault();
164
+ this._focusedIndex = Math.min(this._focusedIndex + 1, lastIndex);
165
+ this._scrollToFocused();
166
+ break;
167
+ case "ArrowUp":
168
+ e.preventDefault();
169
+ this._focusedIndex = Math.max(this._focusedIndex - 1, 0);
170
+ this._scrollToFocused();
171
+ break;
172
+ case "Home":
173
+ e.preventDefault();
174
+ this._focusedIndex = 0;
175
+ this._scrollToFocused();
176
+ break;
177
+ case "End":
178
+ e.preventDefault();
179
+ this._focusedIndex = lastIndex;
180
+ this._scrollToFocused();
181
+ break;
182
+ case "Enter":
183
+ case " ":
184
+ e.preventDefault();
185
+ if (this._focusedIndex >= 0) {
186
+ this._selectYear(this.yearSelection[this._focusedIndex]);
187
+ }
188
+ break;
189
+ case "Escape":
190
+ e.preventDefault();
191
+ e.stopPropagation();
192
+ this._closeSelection();
193
+ break;
194
+ case "Tab":
195
+ this._closeSelection();
196
+ break;
197
+ }
198
+ }
199
+ _scrollToFocused() {
200
+ const focusedEl = this.shadowRoot?.getElementById(
201
+ `year-option-${this._focusedIndex}`
202
+ );
203
+ focusedEl?.scrollIntoView({ block: "nearest" });
204
+ }
100
205
  _yearSelection(event) {
101
206
  const target = event.currentTarget;
102
207
  const year = target.dataset.year;
103
208
  if (year) {
104
- this.dispatchEvent(
105
- new CustomEvent("change-year-selection", {
106
- detail: { year },
107
- bubbles: true,
108
- composed: true
109
- })
110
- );
111
- } else {
112
- this._closeSelection();
209
+ this._selectYear(year);
113
210
  }
114
211
  }
212
+ _selectYear(year) {
213
+ this.dispatchEvent(
214
+ new CustomEvent("change-year-selection", {
215
+ detail: { year },
216
+ bubbles: true,
217
+ composed: true
218
+ })
219
+ );
220
+ }
115
221
  _closeSelection() {
116
222
  this.dispatchEvent(
117
223
  new CustomEvent("abort-year-selection", {
@@ -120,6 +226,12 @@ class PdYearPopup extends LitElement {
120
226
  })
121
227
  );
122
228
  }
229
+ _handleClickOutside(event) {
230
+ const path = event.composedPath();
231
+ if (!path.includes(this)) {
232
+ this._closeSelection();
233
+ }
234
+ }
123
235
  }
124
236
  __decorateClass([
125
237
  property({ type: Array })
@@ -127,5 +239,11 @@ __decorateClass([
127
239
  __decorateClass([
128
240
  property({ type: String })
129
241
  ], PdYearPopup.prototype, "currentYear");
242
+ __decorateClass([
243
+ state()
244
+ ], PdYearPopup.prototype, "_focusedIndex");
245
+ __decorateClass([
246
+ query("ul")
247
+ ], PdYearPopup.prototype, "_listEl");
130
248
 
131
249
  export { PdYearPopup };
@@ -1,33 +1,70 @@
1
1
  import { PropertyValues, CSSResultGroup } from 'lit';
2
2
  import { PdBaseInputElement } from '@progressive-development/pd-forms';
3
3
  /**
4
+ * Datepicker component for selecting single dates or date ranges with optional time selection.
5
+ *
4
6
  * @tagname pd-datepicker
7
+ * @summary Date/time picker with calendar popup, range selection, and form integration.
8
+ *
9
+ * @event pd-form-element-change - Fired when the selected date/time value changes. Detail: `{ value: string, parsedValue: { start?: Date, end?: Date } }`.
10
+ * @event pd-form-element-blur - Fired when the field loses focus.
11
+ * @event pd-form-element-focus - Fired when the field gains focus.
5
12
  *
6
- * Datepicker Komponente zur Auswahl einzelner oder von Zeiträumen, inkl. optionaler Uhrzeitangabe.
7
- * Unterstützt Darstellung über eingebetteten Kalender mit konfigurierbarem Jahr-Popup.
13
+ * @cssprop --pd-input-field-width - Width of the datepicker input. Default: `250px`.
14
+ * @cssprop --pd-input-field-height - Height of the datepicker input. Default: `32px`.
15
+ * @cssprop --pd-datepicker-z-index - Z-index of the calendar popup. Default: `1000`.
16
+ * @cssprop --pd-menu-shadow - Box shadow for the calendar popup. Default: `var(--pd-shadow-lg)`.
8
17
  */
9
18
  export declare class PdDatepicker extends PdBaseInputElement {
19
+ /** Locale for date formatting. */
10
20
  locale?: string;
21
+ /** Initial date value to pre-populate the field. */
11
22
  initialDate?: Date;
12
- /**
13
- * Format für Datum. Default ist "yyyy-MM-dd".
14
- */
23
+ /** Date format string (date-fns format). Default: `yyyy-MM-dd`. */
15
24
  dateFormat?: string;
25
+ /** Enable date range selection mode. */
16
26
  dateRange: boolean;
27
+ /** Hide the "Today" button in the calendar popup. */
17
28
  hideToday: boolean;
29
+ /** Year values for year selection dropdown. Empty array disables popup. */
18
30
  withYearPopup: string[];
31
+ /** Placeholder text for time selection. */
19
32
  placeHolderTime?: string;
33
+ /** Enable time selection alongside date. */
20
34
  withTime: boolean;
35
+ /** Minimum selectable date (YYYY-MM-DD format). */
21
36
  min?: string;
37
+ /** Maximum selectable date (YYYY-MM-DD format). */
22
38
  max?: string;
39
+ /** Array of specific dates to disable (YYYY-MM-DD format). */
40
+ disabledDays: string[];
41
+ /** Force modal display regardless of screen size. */
42
+ modal: boolean;
43
+ /** Breakpoint (in px) below which modal is automatically used. Default: 480 */
44
+ modalBreakpoint: number;
45
+ /** @ignore */
23
46
  private _showCalendar;
47
+ /** @ignore */
24
48
  private _startDateValue?;
49
+ /** @ignore */
25
50
  private _endDateValue?;
51
+ /** @ignore */
26
52
  private _rangeSelection?;
53
+ /** @ignore */
27
54
  private _timeSelection;
55
+ /** @ignore */
56
+ private _useModal;
57
+ /** @ignore */
58
+ private _displayedMonth;
59
+ /** @ignore */
28
60
  private _calendarPosition;
61
+ /** @ignore */
62
+ private _boundHandleClickOutside?;
63
+ /** Time selection options with i18n placeholder. */
64
+ private get _timeOptions();
29
65
  static styles: CSSResultGroup;
30
66
  constructor();
67
+ disconnectedCallback(): void;
31
68
  private _requiredDateTimeValidator;
32
69
  update(changedProps: PropertyValues<this>): void;
33
70
  render(): import('lit').TemplateResult<1>;
@@ -47,7 +84,8 @@ export declare class PdDatepicker extends PdBaseInputElement {
47
84
  */
48
85
  _getInitialValue(): string;
49
86
  /**
50
- * @returns parsed date
87
+ * Returns the parsed date values.
88
+ * @returns Object with start and optional end date: `{ start?: Date; end?: Date }`
51
89
  */
52
90
  _getParsedValue(): any;
53
91
  /**
@@ -63,9 +101,30 @@ export declare class PdDatepicker extends PdBaseInputElement {
63
101
  */
64
102
  private _updateInputField;
65
103
  /**
66
- * Toogle view calendar on click into pd-input field.
104
+ * Toggle view calendar on click into pd-input field.
67
105
  */
68
106
  private _inputClick;
107
+ /**
108
+ * Handle keyboard events on the input field.
109
+ * Enter toggles calendar, Space/ArrowDown opens, Escape closes.
110
+ */
111
+ private _onInputKeyDown;
112
+ /**
113
+ * Handle keyboard events within the popup.
114
+ */
115
+ private _onPopupKeyDown;
116
+ /**
117
+ * Open the calendar popup.
118
+ */
119
+ private _openCalendar;
120
+ /**
121
+ * Close the calendar popup and return focus to input.
122
+ */
123
+ private _closeCalendar;
124
+ /**
125
+ * Handle clicks outside the popup.
126
+ */
127
+ private _handleClickOutside;
69
128
  /**
70
129
  * Triggered by date selection in small calendar.
71
130
  * Set internal values depending on daterange configuration.
@@ -88,6 +147,11 @@ export declare class PdDatepicker extends PdBaseInputElement {
88
147
  * Set selected value and close calendar.
89
148
  */
90
149
  private _triggerSetValueButton;
150
+ /**
151
+ * Handle month change from calendar navigation.
152
+ * Updates _displayedMonth to recalculate constraints for the new month.
153
+ */
154
+ private _onCalendarMonthChange;
91
155
  /**
92
156
  * Calculate range of dates between two dates on mouse over.
93
157
  * Only needed for date range visuell selection in small calendar.
@@ -102,6 +166,11 @@ export declare class PdDatepicker extends PdBaseInputElement {
102
166
  * @returns string with date value
103
167
  */
104
168
  private _formatDateValue;
169
+ /**
170
+ * Builds calendar data with disabled days based on min/max constraints and disabledDays.
171
+ * Merges with existing range selection data.
172
+ */
173
+ private _buildConstrainedData;
105
174
  private _innerEnter;
106
175
  private _innerRegister;
107
176
  private _innerUnRegister;
@@ -1 +1 @@
1
- {"version":3,"file":"PdDatepicker.d.ts","sourceRoot":"","sources":["../../src/pd-datepicker/PdDatepicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAMhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAIvE,OAAO,4CAA4C,CAAC;AACpD,OAAO,6CAA6C,CAAC;AACrD,OAAO,6CAA6C,CAAC;AAIrD,OAAO,+BAA+B,CAAC;AA2EvC;;;;;GAKG;AACH,qBACa,YAAa,SAAQ,kBAAkB;IAElD,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,WAAW,CAAC,EAAE,IAAI,CAAC;IAEnB;;OAEG;IAEH,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,SAAS,UAAS;IAGlB,SAAS,UAAS;IAGlB,aAAa,EAAE,MAAM,EAAE,CAAM;IAG7B,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,QAAQ,UAAS;IAGjB,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,eAAe,CAAC,CAAO;IAG/B,OAAO,CAAC,aAAa,CAAC,CAAO;IAG7B,OAAO,CAAC,eAAe,CAAC,CAAe;IAGvC,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,iBAAiB,CAA8B;IAEvD,OAAgB,MAAM,EAAE,cAAc,CAqDpC;;IAQF,OAAO,CAAC,0BAA0B;IAUzB,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC;IAQzC,MAAM;IAuFf;;;;OAIG;IACH,IAAI,UAAU,IAAI;QAAE,KAAK,CAAC,EAAE,IAAI,CAAC;QAAC,GAAG,CAAC,EAAE,IAAI,CAAA;KAAE,CAU7C;IAEQ,KAAK;IASL,KAAK;IAKd;;OAEG;IACM,gBAAgB,IAAI,MAAM;IAInC;;OAEG;IACM,eAAe,IAAI,GAAG;IAI/B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAclC;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,WAAW;IAkBnB;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IA8CpC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAcnC;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,gBAAgB;CAGzB"}
1
+ {"version":3,"file":"PdDatepicker.d.ts","sourceRoot":"","sources":["../../src/pd-datepicker/PdDatepicker.ts"],"names":[],"mappings":"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"}