@k2b/ui 0.21.0 → 0.23.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.
- package/dist/browser/actions/ContextMenu.js +3 -1
- package/dist/browser/actions/ContextMenu.js.map +1 -1
- package/dist/browser/actions/FilterChip.js +3 -1
- package/dist/browser/actions/FilterChip.js.map +1 -1
- package/dist/browser/actions/SpotlightSearch.js +3 -1
- package/dist/browser/actions/SpotlightSearch.js.map +1 -1
- package/dist/browser/actions/filter-messages.js +20 -0
- package/dist/browser/actions/filter-messages.js.map +1 -0
- package/dist/browser/actions/spotlight-messages.js +16 -0
- package/dist/browser/actions/spotlight-messages.js.map +1 -0
- package/dist/browser/chat/ChatComposer.js +47 -41
- package/dist/browser/chat/ChatComposer.js.map +1 -1
- package/dist/browser/chat/ChatPrimitives.js +25 -23
- package/dist/browser/chat/ChatPrimitives.js.map +1 -1
- package/dist/browser/chat/ChatRoot.js +3 -3
- package/dist/browser/chat/ChatRoot.js.map +1 -1
- package/dist/browser/chat/ChatTimeline.js +12 -12
- package/dist/browser/chat/ChatTimeline.js.map +1 -1
- package/dist/browser/chat/chat-messages.js +236 -0
- package/dist/browser/chat/chat-messages.js.map +1 -0
- package/dist/browser/content/Calendar.js +1096 -1060
- package/dist/browser/content/Calendar.js.map +1 -1
- package/dist/browser/content/CalendarDayView.js +1187 -0
- package/dist/browser/content/CalendarDayView.js.map +1 -0
- package/dist/browser/content/CalendarWeekView.js +1571 -0
- package/dist/browser/content/CalendarWeekView.js.map +1 -0
- package/dist/browser/content/Chart.js +15 -8
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/ChartExplorer.js +185 -85
- package/dist/browser/content/ChartExplorer.js.map +1 -1
- package/dist/browser/content/ChartExplorerControls.js +9 -7
- package/dist/browser/content/ChartExplorerControls.js.map +1 -1
- package/dist/browser/content/ChartFilterControls.js +93 -34
- package/dist/browser/content/ChartFilterControls.js.map +1 -1
- package/dist/browser/content/ChartSnapshotView.js +3 -3
- package/dist/browser/content/ChartSnapshotView.js.map +1 -1
- package/dist/browser/content/DataTable.js +238 -201
- package/dist/browser/content/DataTable.js.map +1 -1
- package/dist/browser/content/Docs.js +3 -1
- package/dist/browser/content/Docs.js.map +1 -1
- package/dist/browser/content/FileBrowser.js +30 -26
- package/dist/browser/content/FileBrowser.js.map +1 -1
- package/dist/browser/content/FileTree.js +9 -7
- package/dist/browser/content/FileTree.js.map +1 -1
- package/dist/browser/content/FileView.js +37 -28
- package/dist/browser/content/FileView.js.map +1 -1
- package/dist/browser/content/Lightbox.js +9 -7
- package/dist/browser/content/Lightbox.js.map +1 -1
- package/dist/browser/content/LogEntriesTable.js +3 -3
- package/dist/browser/content/LogEntriesTable.js.map +1 -1
- package/dist/browser/content/MessageRow.js +24 -22
- package/dist/browser/content/MessageRow.js.map +1 -1
- package/dist/browser/content/Pagination.js +7 -7
- package/dist/browser/content/Pagination.js.map +1 -1
- package/dist/browser/content/PdfPreview.js +15 -13
- package/dist/browser/content/PdfPreview.js.map +1 -1
- package/dist/browser/content/RangePicker.js +3 -1
- package/dist/browser/content/RangePicker.js.map +1 -1
- package/dist/browser/content/StructuredDataPreview.js +3 -1
- package/dist/browser/content/StructuredDataPreview.js.map +1 -1
- package/dist/browser/content/Timeline.js +13 -11
- package/dist/browser/content/Timeline.js.map +1 -1
- package/dist/browser/content/VideoPlayer.js +5 -5
- package/dist/browser/content/VideoPlayer.js.map +1 -1
- package/dist/browser/content/VirtualFeed.js +6 -4
- package/dist/browser/content/VirtualFeed.js.map +1 -1
- package/dist/browser/content/ZoomPanViewport.js +10 -7
- package/dist/browser/content/ZoomPanViewport.js.map +1 -1
- package/dist/browser/content/calendar-day-scroll.js +98 -0
- package/dist/browser/content/calendar-day-scroll.js.map +1 -0
- package/dist/browser/content/calendar-days.js +408 -0
- package/dist/browser/content/calendar-days.js.map +1 -0
- package/dist/browser/content/calendar-dialogs.js +236 -0
- package/dist/browser/content/calendar-dialogs.js.map +1 -0
- package/dist/browser/content/calendar-messages.js +249 -3
- package/dist/browser/content/calendar-messages.js.map +1 -1
- package/dist/browser/content/calendar-pointer.js +19 -6
- package/dist/browser/content/calendar-pointer.js.map +1 -1
- package/dist/browser/content/calendar-shared.js +328 -0
- package/dist/browser/content/calendar-shared.js.map +1 -0
- package/dist/browser/content/calendar-time-view.js +1649 -0
- package/dist/browser/content/calendar-time-view.js.map +1 -0
- package/dist/browser/content/chart-messages.js +146 -0
- package/dist/browser/content/chart-messages.js.map +1 -0
- package/dist/browser/content/collection-selection.js +2 -0
- package/dist/browser/content/collection-selection.js.map +1 -1
- package/dist/browser/content/data-table-messages.js +24 -0
- package/dist/browser/content/data-table-messages.js.map +1 -0
- package/dist/browser/content/docs-messages.js +24 -0
- package/dist/browser/content/docs-messages.js.map +1 -0
- package/dist/browser/content/feed-messages.js +34 -0
- package/dist/browser/content/feed-messages.js.map +1 -0
- package/dist/browser/content/file-browser-messages.js +69 -0
- package/dist/browser/content/file-browser-messages.js.map +1 -0
- package/dist/browser/content/file-view-messages.js +64 -0
- package/dist/browser/content/file-view-messages.js.map +1 -0
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/content/lightbox-messages.js +36 -0
- package/dist/browser/content/lightbox-messages.js.map +1 -0
- package/dist/browser/content/log-entries-messages.js +20 -0
- package/dist/browser/content/log-entries-messages.js.map +1 -0
- package/dist/browser/content/markdown-info-block-messages.js +24 -0
- package/dist/browser/content/markdown-info-block-messages.js.map +1 -0
- package/dist/browser/content/markdown-info-blocks.js +3 -3
- package/dist/browser/content/markdown-info-blocks.js.map +1 -1
- package/dist/browser/content/markdown-links.js +2 -2
- package/dist/browser/content/markdown-links.js.map +1 -1
- package/dist/browser/content/markdown-reference-messages.js +30 -0
- package/dist/browser/content/markdown-reference-messages.js.map +1 -0
- package/dist/browser/content/pagination-messages.js +38 -0
- package/dist/browser/content/pagination-messages.js.map +1 -0
- package/dist/browser/content/pdf-messages.js +43 -0
- package/dist/browser/content/pdf-messages.js.map +1 -0
- package/dist/browser/content/range-picker-messages.js +20 -0
- package/dist/browser/content/range-picker-messages.js.map +1 -0
- package/dist/browser/content/structured-data-messages.js +22 -0
- package/dist/browser/content/structured-data-messages.js.map +1 -0
- package/dist/browser/content/timeline-messages.js +62 -0
- package/dist/browser/content/timeline-messages.js.map +1 -0
- package/dist/browser/content/video-messages.js +24 -0
- package/dist/browser/content/video-messages.js.map +1 -0
- package/dist/browser/content/viewport-messages.js +28 -0
- package/dist/browser/content/viewport-messages.js.map +1 -0
- package/dist/browser/feedback/HoverPreview.js +34 -6
- package/dist/browser/feedback/HoverPreview.js.map +1 -1
- package/dist/browser/feedback/InstallGuide.js +18 -18
- package/dist/browser/feedback/InstallGuide.js.map +1 -1
- package/dist/browser/feedback/install-messages.js +104 -0
- package/dist/browser/feedback/install-messages.js.map +1 -0
- package/dist/browser/feedback/prompt-messages.js +65 -0
- package/dist/browser/feedback/prompt-messages.js.map +1 -0
- package/dist/browser/feedback/prompts.js +14 -11
- package/dist/browser/feedback/prompts.js.map +1 -1
- package/dist/browser/feedback/toast-messages.js +18 -0
- package/dist/browser/feedback/toast-messages.js.map +1 -0
- package/dist/browser/feedback/toast.js +4 -3
- package/dist/browser/feedback/toast.js.map +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/inputs/AutocompleteEditor.js +6 -4
- package/dist/browser/inputs/AutocompleteEditor.js.map +1 -1
- package/dist/browser/inputs/AutocompleteSelect.js +10 -8
- package/dist/browser/inputs/AutocompleteSelect.js.map +1 -1
- package/dist/browser/inputs/ChoiceGroups.js +4 -0
- package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
- package/dist/browser/inputs/ChoiceInputs.js +5 -5
- package/dist/browser/inputs/ChoiceInputs.js.map +1 -1
- package/dist/browser/inputs/Combobox.js +3 -2
- package/dist/browser/inputs/Combobox.js.map +1 -1
- package/dist/browser/inputs/FileDropTarget.js +6 -6
- package/dist/browser/inputs/FileDropTarget.js.map +1 -1
- package/dist/browser/inputs/FileInputs.js +30 -21
- package/dist/browser/inputs/FileInputs.js.map +1 -1
- package/dist/browser/inputs/MultiSelectInput.js +7 -5
- package/dist/browser/inputs/MultiSelectInput.js.map +1 -1
- package/dist/browser/inputs/NumberInput.js +4 -2
- package/dist/browser/inputs/NumberInput.js.map +1 -1
- package/dist/browser/inputs/QrScanner.js +5 -5
- package/dist/browser/inputs/QrScanner.js.map +1 -1
- package/dist/browser/inputs/Select.js +7 -5
- package/dist/browser/inputs/Select.js.map +1 -1
- package/dist/browser/inputs/SelectChip.js +3 -3
- package/dist/browser/inputs/SelectChip.js.map +1 -1
- package/dist/browser/inputs/SignatureInput.js +9 -3
- package/dist/browser/inputs/SignatureInput.js.map +1 -1
- package/dist/browser/inputs/SpecialInputs.js +4 -2
- package/dist/browser/inputs/SpecialInputs.js.map +1 -1
- package/dist/browser/inputs/TagEditor.js +8 -6
- package/dist/browser/inputs/TagEditor.js.map +1 -1
- package/dist/browser/inputs/TagsInput.js +5 -5
- package/dist/browser/inputs/TagsInput.js.map +1 -1
- package/dist/browser/inputs/TemplateEditor.js +5 -5
- package/dist/browser/inputs/TemplateEditor.js.map +1 -1
- package/dist/browser/inputs/TextInput.js +3 -1
- package/dist/browser/inputs/TextInput.js.map +1 -1
- package/dist/browser/inputs/completion-messages.js +24 -0
- package/dist/browser/inputs/completion-messages.js.map +1 -0
- package/dist/browser/inputs/file-drop-messages.js +63 -0
- package/dist/browser/inputs/file-drop-messages.js.map +1 -0
- package/dist/browser/inputs/file-drop.js.map +1 -1
- package/dist/browser/inputs/file-input-messages.js +60 -0
- package/dist/browser/inputs/file-input-messages.js.map +1 -0
- package/dist/browser/inputs/icon-messages.js +22 -0
- package/dist/browser/inputs/icon-messages.js.map +1 -0
- package/dist/browser/inputs/input-messages.js +38 -0
- package/dist/browser/inputs/input-messages.js.map +1 -0
- package/dist/browser/inputs/markdown/MarkdownEditor.js +10 -6
- package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/browser/inputs/markdown/Toolbar.js +13 -13
- package/dist/browser/inputs/markdown/Toolbar.js.map +1 -1
- package/dist/browser/inputs/markdown/editor-messages.js +43 -0
- package/dist/browser/inputs/markdown/editor-messages.js.map +1 -0
- package/dist/browser/inputs/markdown/toolbar-messages.js +40 -0
- package/dist/browser/inputs/markdown/toolbar-messages.js.map +1 -0
- package/dist/browser/inputs/qr-messages.js +26 -0
- package/dist/browser/inputs/qr-messages.js.map +1 -0
- package/dist/browser/inputs/select-messages.js +63 -0
- package/dist/browser/inputs/select-messages.js.map +1 -0
- package/dist/browser/inputs/tag-messages.js +44 -0
- package/dist/browser/inputs/tag-messages.js.map +1 -0
- package/dist/browser/inputs/template-messages.js +22 -0
- package/dist/browser/inputs/template-messages.js.map +1 -0
- package/dist/browser/internal/render-error-messages.js +20 -0
- package/dist/browser/internal/render-error-messages.js.map +1 -0
- package/dist/browser/internal/render-error.js +3 -1
- package/dist/browser/internal/render-error.js.map +1 -1
- package/dist/browser/internal/text-selection.js +101 -0
- package/dist/browser/internal/text-selection.js.map +1 -0
- package/dist/browser/intl/messages.js +6 -1155
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +594 -425
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/BottomSheet.js +6 -1
- package/dist/browser/layout/BottomSheet.js.map +1 -1
- package/dist/browser/layout/Discussion.js +8 -5
- package/dist/browser/layout/Discussion.js.map +1 -1
- package/dist/browser/layout/FloatingWindow.js +8 -5
- package/dist/browser/layout/FloatingWindow.js.map +1 -1
- package/dist/browser/layout/Navigation.js +7 -6
- package/dist/browser/layout/Navigation.js.map +1 -1
- package/dist/browser/layout/PageTitle.js +373 -0
- package/dist/browser/layout/PageTitle.js.map +1 -0
- package/dist/browser/layout/PanelDialog.js +8 -6
- package/dist/browser/layout/PanelDialog.js.map +1 -1
- package/dist/browser/layout/Panes.js +23 -15
- package/dist/browser/layout/Panes.js.map +1 -1
- package/dist/browser/layout/PullToRefresh.js +13 -4
- package/dist/browser/layout/PullToRefresh.js.map +1 -1
- package/dist/browser/layout/Settings.js +14 -12
- package/dist/browser/layout/Settings.js.map +1 -1
- package/dist/browser/layout/SettingsCollection.js +6 -5
- package/dist/browser/layout/SettingsCollection.js.map +1 -1
- package/dist/browser/layout/SettingsModal.js +3 -1
- package/dist/browser/layout/SettingsModal.js.map +1 -1
- package/dist/browser/layout/app-workspace-controller.js +821 -12
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/app-workspace-state.js +3 -2
- package/dist/browser/layout/app-workspace-state.js.map +1 -1
- package/dist/browser/layout/floating-window-messages.js +28 -0
- package/dist/browser/layout/floating-window-messages.js.map +1 -0
- package/dist/browser/layout/index.js +2 -0
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/layout/navigation-model.js.map +1 -1
- package/dist/browser/layout/page-title-controller.js +169 -0
- package/dist/browser/layout/page-title-controller.js.map +1 -0
- package/dist/browser/layout/panel-dialog-messages.js +20 -0
- package/dist/browser/layout/panel-dialog-messages.js.map +1 -0
- package/dist/browser/layout/panes-messages.js +48 -0
- package/dist/browser/layout/panes-messages.js.map +1 -0
- package/dist/browser/layout/refresh-messages.js +20 -0
- package/dist/browser/layout/refresh-messages.js.map +1 -0
- package/dist/browser/layout/settings-messages.js +54 -0
- package/dist/browser/layout/settings-messages.js.map +1 -0
- package/dist/browser/layout/workspace-messages.js +56 -0
- package/dist/browser/layout/workspace-messages.js.map +1 -0
- package/dist/browser/surfaces/Avatar.js +5 -5
- package/dist/browser/surfaces/Avatar.js.map +1 -1
- package/dist/browser/surfaces/ResourceCard.js +4 -2
- package/dist/browser/surfaces/ResourceCard.js.map +1 -1
- package/dist/browser/surfaces/StatCell.js +18 -6
- package/dist/browser/surfaces/StatCell.js.map +1 -1
- package/dist/browser/surfaces/Tag.js +3 -3
- package/dist/browser/surfaces/Tag.js.map +1 -1
- package/dist/browser/surfaces/avatar-messages.js +26 -0
- package/dist/browser/surfaces/avatar-messages.js.map +1 -0
- package/dist/browser/surfaces/resource-messages.js +26 -0
- package/dist/browser/surfaces/resource-messages.js.map +1 -0
- package/dist/browser/widgets/Widget.js +6 -0
- package/dist/browser/widgets/Widget.js.map +1 -1
- package/dist/ssr/actions/ContextMenu.js.map +1 -1
- package/dist/ssr/actions/FilterChip.js +3 -1
- package/dist/ssr/actions/FilterChip.js.map +1 -1
- package/dist/ssr/actions/SpotlightSearch.js +3 -1
- package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
- package/dist/ssr/actions/filter-messages.js +20 -0
- package/dist/ssr/actions/filter-messages.js.map +1 -0
- package/dist/ssr/actions/spotlight-messages.js +16 -0
- package/dist/ssr/actions/spotlight-messages.js.map +1 -0
- package/dist/ssr/chat/ChatComposer.js +47 -41
- package/dist/ssr/chat/ChatComposer.js.map +1 -1
- package/dist/ssr/chat/ChatPrimitives.js +23 -21
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
- package/dist/ssr/chat/ChatRoot.js +3 -3
- package/dist/ssr/chat/ChatRoot.js.map +1 -1
- package/dist/ssr/chat/ChatTimeline.js +11 -11
- package/dist/ssr/chat/ChatTimeline.js.map +1 -1
- package/dist/ssr/chat/chat-messages.js +236 -0
- package/dist/ssr/chat/chat-messages.js.map +1 -0
- package/dist/ssr/content/Calendar.js +534 -346
- package/dist/ssr/content/Calendar.js.map +1 -1
- package/dist/ssr/content/CalendarDayView.js +800 -0
- package/dist/ssr/content/CalendarDayView.js.map +1 -0
- package/dist/ssr/content/CalendarWeekView.js +1069 -0
- package/dist/ssr/content/CalendarWeekView.js.map +1 -0
- package/dist/ssr/content/Chart.js +12 -5
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/ChartExplorer.js +98 -37
- package/dist/ssr/content/ChartExplorer.js.map +1 -1
- package/dist/ssr/content/ChartExplorerControls.js +9 -7
- package/dist/ssr/content/ChartExplorerControls.js.map +1 -1
- package/dist/ssr/content/ChartFilterControls.js +52 -8
- package/dist/ssr/content/ChartFilterControls.js.map +1 -1
- package/dist/ssr/content/ChartSnapshotView.js +3 -3
- package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
- package/dist/ssr/content/DataTable.js +77 -53
- package/dist/ssr/content/DataTable.js.map +1 -1
- package/dist/ssr/content/Docs.js +3 -1
- package/dist/ssr/content/Docs.js.map +1 -1
- package/dist/ssr/content/FileBrowser.js +30 -26
- package/dist/ssr/content/FileBrowser.js.map +1 -1
- package/dist/ssr/content/FileTree.js +9 -7
- package/dist/ssr/content/FileTree.js.map +1 -1
- package/dist/ssr/content/FileView.js +37 -28
- package/dist/ssr/content/FileView.js.map +1 -1
- package/dist/ssr/content/Lightbox.js +8 -6
- package/dist/ssr/content/Lightbox.js.map +1 -1
- package/dist/ssr/content/LogEntriesTable.js +3 -3
- package/dist/ssr/content/LogEntriesTable.js.map +1 -1
- package/dist/ssr/content/MessageRow.js +24 -22
- package/dist/ssr/content/MessageRow.js.map +1 -1
- package/dist/ssr/content/Pagination.js +6 -6
- package/dist/ssr/content/Pagination.js.map +1 -1
- package/dist/ssr/content/PdfPreview.js +15 -13
- package/dist/ssr/content/PdfPreview.js.map +1 -1
- package/dist/ssr/content/RangePicker.js +3 -1
- package/dist/ssr/content/RangePicker.js.map +1 -1
- package/dist/ssr/content/StructuredDataPreview.js +3 -1
- package/dist/ssr/content/StructuredDataPreview.js.map +1 -1
- package/dist/ssr/content/Timeline.js +13 -11
- package/dist/ssr/content/Timeline.js.map +1 -1
- package/dist/ssr/content/VideoPlayer.js +5 -5
- package/dist/ssr/content/VideoPlayer.js.map +1 -1
- package/dist/ssr/content/VirtualFeed.js +6 -4
- package/dist/ssr/content/VirtualFeed.js.map +1 -1
- package/dist/ssr/content/ZoomPanViewport.js +7 -4
- package/dist/ssr/content/ZoomPanViewport.js.map +1 -1
- package/dist/ssr/content/calendar-day-scroll.js +98 -0
- package/dist/ssr/content/calendar-day-scroll.js.map +1 -0
- package/dist/ssr/content/calendar-days.js +408 -0
- package/dist/ssr/content/calendar-days.js.map +1 -0
- package/dist/ssr/content/calendar-dialogs.js +159 -0
- package/dist/ssr/content/calendar-dialogs.js.map +1 -0
- package/dist/ssr/content/calendar-messages.js +249 -3
- package/dist/ssr/content/calendar-messages.js.map +1 -1
- package/dist/ssr/content/calendar-pointer.js +19 -6
- package/dist/ssr/content/calendar-pointer.js.map +1 -1
- package/dist/ssr/content/calendar-shared.js +261 -0
- package/dist/ssr/content/calendar-shared.js.map +1 -0
- package/dist/ssr/content/calendar-time-view.js +1306 -0
- package/dist/ssr/content/calendar-time-view.js.map +1 -0
- package/dist/ssr/content/chart-messages.js +146 -0
- package/dist/ssr/content/chart-messages.js.map +1 -0
- package/dist/ssr/content/collection-selection.js +2 -0
- package/dist/ssr/content/collection-selection.js.map +1 -1
- package/dist/ssr/content/data-table-messages.js +24 -0
- package/dist/ssr/content/data-table-messages.js.map +1 -0
- package/dist/ssr/content/docs-messages.js +24 -0
- package/dist/ssr/content/docs-messages.js.map +1 -0
- package/dist/ssr/content/feed-messages.js +34 -0
- package/dist/ssr/content/feed-messages.js.map +1 -0
- package/dist/ssr/content/file-browser-messages.js +69 -0
- package/dist/ssr/content/file-browser-messages.js.map +1 -0
- package/dist/ssr/content/file-view-messages.js +64 -0
- package/dist/ssr/content/file-view-messages.js.map +1 -0
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/content/lightbox-messages.js +36 -0
- package/dist/ssr/content/lightbox-messages.js.map +1 -0
- package/dist/ssr/content/log-entries-messages.js +20 -0
- package/dist/ssr/content/log-entries-messages.js.map +1 -0
- package/dist/ssr/content/markdown-info-block-messages.js +24 -0
- package/dist/ssr/content/markdown-info-block-messages.js.map +1 -0
- package/dist/ssr/content/markdown-info-blocks.js +3 -3
- package/dist/ssr/content/markdown-info-blocks.js.map +1 -1
- package/dist/ssr/content/markdown-links.js +2 -2
- package/dist/ssr/content/markdown-links.js.map +1 -1
- package/dist/ssr/content/markdown-reference-messages.js +30 -0
- package/dist/ssr/content/markdown-reference-messages.js.map +1 -0
- package/dist/ssr/content/pagination-messages.js +38 -0
- package/dist/ssr/content/pagination-messages.js.map +1 -0
- package/dist/ssr/content/pdf-messages.js +43 -0
- package/dist/ssr/content/pdf-messages.js.map +1 -0
- package/dist/ssr/content/range-picker-messages.js +20 -0
- package/dist/ssr/content/range-picker-messages.js.map +1 -0
- package/dist/ssr/content/structured-data-messages.js +22 -0
- package/dist/ssr/content/structured-data-messages.js.map +1 -0
- package/dist/ssr/content/timeline-messages.js +62 -0
- package/dist/ssr/content/timeline-messages.js.map +1 -0
- package/dist/ssr/content/video-messages.js +24 -0
- package/dist/ssr/content/video-messages.js.map +1 -0
- package/dist/ssr/content/viewport-messages.js +28 -0
- package/dist/ssr/content/viewport-messages.js.map +1 -0
- package/dist/ssr/feedback/HoverPreview.js +34 -6
- package/dist/ssr/feedback/HoverPreview.js.map +1 -1
- package/dist/ssr/feedback/InstallGuide.js +18 -18
- package/dist/ssr/feedback/InstallGuide.js.map +1 -1
- package/dist/ssr/feedback/install-messages.js +104 -0
- package/dist/ssr/feedback/install-messages.js.map +1 -0
- package/dist/ssr/feedback/prompt-messages.js +65 -0
- package/dist/ssr/feedback/prompt-messages.js.map +1 -0
- package/dist/ssr/feedback/prompts.js +14 -11
- package/dist/ssr/feedback/prompts.js.map +1 -1
- package/dist/ssr/feedback/toast-messages.js +18 -0
- package/dist/ssr/feedback/toast-messages.js.map +1 -0
- package/dist/ssr/feedback/toast.js +4 -3
- package/dist/ssr/feedback/toast.js.map +1 -1
- package/dist/ssr/index.js +1 -1
- package/dist/ssr/index.js.map +1 -1
- package/dist/ssr/inputs/AutocompleteEditor.js +5 -3
- package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -1
- package/dist/ssr/inputs/AutocompleteSelect.js +10 -8
- package/dist/ssr/inputs/AutocompleteSelect.js.map +1 -1
- package/dist/ssr/inputs/ChoiceGroups.js +4 -0
- package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
- package/dist/ssr/inputs/ChoiceInputs.js +5 -5
- package/dist/ssr/inputs/ChoiceInputs.js.map +1 -1
- package/dist/ssr/inputs/Combobox.js +3 -1
- package/dist/ssr/inputs/Combobox.js.map +1 -1
- package/dist/ssr/inputs/FileDropTarget.js +6 -6
- package/dist/ssr/inputs/FileDropTarget.js.map +1 -1
- package/dist/ssr/inputs/FileInputs.js +29 -20
- package/dist/ssr/inputs/FileInputs.js.map +1 -1
- package/dist/ssr/inputs/MultiSelectInput.js +7 -5
- package/dist/ssr/inputs/MultiSelectInput.js.map +1 -1
- package/dist/ssr/inputs/NumberInput.js +4 -2
- package/dist/ssr/inputs/NumberInput.js.map +1 -1
- package/dist/ssr/inputs/QrScanner.js +4 -4
- package/dist/ssr/inputs/QrScanner.js.map +1 -1
- package/dist/ssr/inputs/Select.js +7 -5
- package/dist/ssr/inputs/Select.js.map +1 -1
- package/dist/ssr/inputs/SelectChip.js +3 -3
- package/dist/ssr/inputs/SelectChip.js.map +1 -1
- package/dist/ssr/inputs/SignatureInput.js +9 -3
- package/dist/ssr/inputs/SignatureInput.js.map +1 -1
- package/dist/ssr/inputs/SpecialInputs.js +4 -2
- package/dist/ssr/inputs/SpecialInputs.js.map +1 -1
- package/dist/ssr/inputs/TagEditor.js +8 -6
- package/dist/ssr/inputs/TagEditor.js.map +1 -1
- package/dist/ssr/inputs/TagsInput.js +5 -5
- package/dist/ssr/inputs/TagsInput.js.map +1 -1
- package/dist/ssr/inputs/TemplateEditor.js +5 -5
- package/dist/ssr/inputs/TemplateEditor.js.map +1 -1
- package/dist/ssr/inputs/TextInput.js +3 -1
- package/dist/ssr/inputs/TextInput.js.map +1 -1
- package/dist/ssr/inputs/completion-messages.js +24 -0
- package/dist/ssr/inputs/completion-messages.js.map +1 -0
- package/dist/ssr/inputs/file-drop-messages.js +63 -0
- package/dist/ssr/inputs/file-drop-messages.js.map +1 -0
- package/dist/ssr/inputs/file-drop.js.map +1 -1
- package/dist/ssr/inputs/file-input-messages.js +60 -0
- package/dist/ssr/inputs/file-input-messages.js.map +1 -0
- package/dist/ssr/inputs/icon-messages.js +22 -0
- package/dist/ssr/inputs/icon-messages.js.map +1 -0
- package/dist/ssr/inputs/input-messages.js +38 -0
- package/dist/ssr/inputs/input-messages.js.map +1 -0
- package/dist/ssr/inputs/markdown/MarkdownEditor.js +9 -5
- package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/ssr/inputs/markdown/Toolbar.js +13 -13
- package/dist/ssr/inputs/markdown/Toolbar.js.map +1 -1
- package/dist/ssr/inputs/markdown/editor-messages.js +43 -0
- package/dist/ssr/inputs/markdown/editor-messages.js.map +1 -0
- package/dist/ssr/inputs/markdown/toolbar-messages.js +40 -0
- package/dist/ssr/inputs/markdown/toolbar-messages.js.map +1 -0
- package/dist/ssr/inputs/qr-messages.js +26 -0
- package/dist/ssr/inputs/qr-messages.js.map +1 -0
- package/dist/ssr/inputs/select-messages.js +63 -0
- package/dist/ssr/inputs/select-messages.js.map +1 -0
- package/dist/ssr/inputs/tag-messages.js +44 -0
- package/dist/ssr/inputs/tag-messages.js.map +1 -0
- package/dist/ssr/inputs/template-messages.js +22 -0
- package/dist/ssr/inputs/template-messages.js.map +1 -0
- package/dist/ssr/internal/render-error-messages.js +20 -0
- package/dist/ssr/internal/render-error-messages.js.map +1 -0
- package/dist/ssr/internal/render-error.js +3 -1
- package/dist/ssr/internal/render-error.js.map +1 -1
- package/dist/ssr/internal/text-selection.js +101 -0
- package/dist/ssr/internal/text-selection.js.map +1 -0
- package/dist/ssr/intl/messages.js +6 -1155
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +219 -103
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/BottomSheet.js +1 -0
- package/dist/ssr/layout/BottomSheet.js.map +1 -1
- package/dist/ssr/layout/Discussion.js +8 -5
- package/dist/ssr/layout/Discussion.js.map +1 -1
- package/dist/ssr/layout/FloatingWindow.js +8 -5
- package/dist/ssr/layout/FloatingWindow.js.map +1 -1
- package/dist/ssr/layout/Navigation.js +6 -5
- package/dist/ssr/layout/Navigation.js.map +1 -1
- package/dist/ssr/layout/PageTitle.js +256 -0
- package/dist/ssr/layout/PageTitle.js.map +1 -0
- package/dist/ssr/layout/PanelDialog.js +8 -6
- package/dist/ssr/layout/PanelDialog.js.map +1 -1
- package/dist/ssr/layout/Panes.js +22 -14
- package/dist/ssr/layout/Panes.js.map +1 -1
- package/dist/ssr/layout/PullToRefresh.js +13 -4
- package/dist/ssr/layout/PullToRefresh.js.map +1 -1
- package/dist/ssr/layout/Settings.js +14 -12
- package/dist/ssr/layout/Settings.js.map +1 -1
- package/dist/ssr/layout/SettingsCollection.js +6 -5
- package/dist/ssr/layout/SettingsCollection.js.map +1 -1
- package/dist/ssr/layout/SettingsModal.js +3 -1
- package/dist/ssr/layout/SettingsModal.js.map +1 -1
- package/dist/ssr/layout/app-workspace-controller.js +821 -12
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/app-workspace-state.js +3 -2
- package/dist/ssr/layout/app-workspace-state.js.map +1 -1
- package/dist/ssr/layout/floating-window-messages.js +28 -0
- package/dist/ssr/layout/floating-window-messages.js.map +1 -0
- package/dist/ssr/layout/index.js +2 -0
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/layout/navigation-model.js.map +1 -1
- package/dist/ssr/layout/page-title-controller.js +169 -0
- package/dist/ssr/layout/page-title-controller.js.map +1 -0
- package/dist/ssr/layout/panel-dialog-messages.js +20 -0
- package/dist/ssr/layout/panel-dialog-messages.js.map +1 -0
- package/dist/ssr/layout/panes-messages.js +48 -0
- package/dist/ssr/layout/panes-messages.js.map +1 -0
- package/dist/ssr/layout/refresh-messages.js +20 -0
- package/dist/ssr/layout/refresh-messages.js.map +1 -0
- package/dist/ssr/layout/settings-messages.js +54 -0
- package/dist/ssr/layout/settings-messages.js.map +1 -0
- package/dist/ssr/layout/workspace-messages.js +56 -0
- package/dist/ssr/layout/workspace-messages.js.map +1 -0
- package/dist/ssr/surfaces/Avatar.js +5 -5
- package/dist/ssr/surfaces/Avatar.js.map +1 -1
- package/dist/ssr/surfaces/ResourceCard.js +4 -2
- package/dist/ssr/surfaces/ResourceCard.js.map +1 -1
- package/dist/ssr/surfaces/StatCell.js +2 -2
- package/dist/ssr/surfaces/StatCell.js.map +1 -1
- package/dist/ssr/surfaces/Tag.js +3 -3
- package/dist/ssr/surfaces/Tag.js.map +1 -1
- package/dist/ssr/surfaces/avatar-messages.js +26 -0
- package/dist/ssr/surfaces/avatar-messages.js.map +1 -0
- package/dist/ssr/surfaces/resource-messages.js +26 -0
- package/dist/ssr/surfaces/resource-messages.js.map +1 -0
- package/dist/ssr/widgets/Widget.js +6 -0
- package/dist/ssr/widgets/Widget.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/actions/filter-messages.d.ts +8 -0
- package/dist/types/actions/spotlight-messages.d.ts +8 -0
- package/dist/types/chat/chat-messages.d.ts +116 -0
- package/dist/types/content/Calendar.d.ts +91 -0
- package/dist/types/content/CalendarDayView.d.ts +7 -0
- package/dist/types/content/CalendarWeekView.d.ts +7 -0
- package/dist/types/content/ChartExplorer.d.ts +36 -1
- package/dist/types/content/ChartFilterControls.d.ts +6 -1
- package/dist/types/content/DataTable.d.ts +7 -0
- package/dist/types/content/FileView.d.ts +0 -10
- package/dist/types/content/calendar-day-scroll.d.ts +42 -0
- package/dist/types/content/calendar-days.d.ts +192 -0
- package/dist/types/content/calendar-dialogs.d.ts +22 -0
- package/dist/types/content/calendar-messages.d.ts +119 -1
- package/dist/types/content/calendar-pointer.d.ts +9 -0
- package/dist/types/content/calendar-shared.d.ts +69 -0
- package/dist/types/content/calendar-time-view.d.ts +252 -0
- package/dist/types/content/chart-messages.d.ts +37 -0
- package/dist/types/content/data-table-messages.d.ts +10 -0
- package/dist/types/content/docs-messages.d.ts +10 -0
- package/dist/types/content/feed-messages.d.ts +15 -0
- package/dist/types/content/file-browser-messages.d.ts +33 -0
- package/dist/types/content/file-view-messages.d.ts +30 -0
- package/dist/types/content/index.d.ts +2 -2
- package/dist/types/content/lightbox-messages.d.ts +16 -0
- package/dist/types/content/log-entries-messages.d.ts +8 -0
- package/dist/types/content/markdown-info-block-messages.d.ts +12 -0
- package/dist/types/content/markdown-reference-messages.d.ts +15 -0
- package/dist/types/content/pagination-messages.d.ts +17 -0
- package/dist/types/content/pdf-messages.d.ts +20 -0
- package/dist/types/content/range-picker-messages.d.ts +8 -0
- package/dist/types/content/structured-data-messages.d.ts +9 -0
- package/dist/types/content/timeline-messages.d.ts +29 -0
- package/dist/types/content/video-messages.d.ts +10 -0
- package/dist/types/content/viewport-messages.d.ts +12 -0
- package/dist/types/feedback/install-messages.d.ts +50 -0
- package/dist/types/feedback/prompt-messages.d.ts +31 -0
- package/dist/types/feedback/toast-messages.d.ts +9 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/inputs/completion-messages.d.ts +10 -0
- package/dist/types/inputs/file-drop-messages.d.ts +30 -0
- package/dist/types/inputs/file-drop.d.ts +3 -3
- package/dist/types/inputs/file-input-messages.d.ts +28 -0
- package/dist/types/inputs/icon-messages.d.ts +9 -0
- package/dist/types/inputs/input-messages.d.ts +17 -0
- package/dist/types/inputs/markdown/editor-messages.d.ts +20 -0
- package/dist/types/inputs/markdown/toolbar-messages.d.ts +18 -0
- package/dist/types/inputs/qr-messages.d.ts +11 -0
- package/dist/types/inputs/select-messages.d.ts +30 -0
- package/dist/types/inputs/tag-messages.d.ts +20 -0
- package/dist/types/inputs/template-messages.d.ts +9 -0
- package/dist/types/internal/render-error-messages.d.ts +8 -0
- package/dist/types/internal/text-selection.d.ts +18 -0
- package/dist/types/intl/messages.d.ts +3 -544
- package/dist/types/layout/AppWorkspace.d.ts +42 -5
- package/dist/types/layout/PageTitle.d.ts +65 -0
- package/dist/types/layout/app-workspace-controller.d.ts +12 -0
- package/dist/types/layout/app-workspace-state.d.ts +3 -2
- package/dist/types/layout/floating-window-messages.d.ts +12 -0
- package/dist/types/layout/index.d.ts +3 -0
- package/dist/types/layout/navigation-model.d.ts +7 -0
- package/dist/types/layout/page-title-controller.d.ts +13 -0
- package/dist/types/layout/panel-dialog-messages.d.ts +8 -0
- package/dist/types/layout/panes-messages.d.ts +22 -0
- package/dist/types/layout/refresh-messages.d.ts +8 -0
- package/dist/types/layout/settings-messages.d.ts +25 -0
- package/dist/types/layout/workspace-messages.d.ts +26 -0
- package/dist/types/surfaces/StatCell.d.ts +5 -0
- package/dist/types/surfaces/avatar-messages.d.ts +11 -0
- package/dist/types/surfaces/resource-messages.d.ts +11 -0
- package/dist/types/widgets/Widget.d.ts +5 -1
- package/package.json +1 -1
|
@@ -1,77 +1,70 @@
|
|
|
1
|
+
import { ssrStyle as _$ssrStyle } from "solid-js/web";
|
|
1
2
|
import { ssrStyleProperty as _$ssrStyleProperty } from "solid-js/web";
|
|
2
3
|
import { memo as _$memo } from "solid-js/web";
|
|
3
|
-
import {
|
|
4
|
-
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
5
|
-
import { ssrStyle as _$ssrStyle } from "solid-js/web";
|
|
4
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
6
5
|
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
7
6
|
import { createComponent as _$createComponent } from "solid-js/web";
|
|
8
|
-
import {
|
|
7
|
+
import { ssrElement as _$ssrElement } from "solid-js/web";
|
|
8
|
+
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
9
9
|
import { escape as _$escape } from "solid-js/web";
|
|
10
|
-
var _tmpl$ = ["<
|
|
11
|
-
_tmpl$2 = "<
|
|
12
|
-
_tmpl$3 = ["<
|
|
13
|
-
_tmpl$4 =
|
|
14
|
-
_tmpl$5 =
|
|
15
|
-
_tmpl$6 = ["<span class=\"k2b-
|
|
16
|
-
_tmpl$7 = ["<
|
|
17
|
-
_tmpl$8 = ["<
|
|
18
|
-
_tmpl$9 =
|
|
19
|
-
_tmpl$0 = ["<
|
|
20
|
-
_tmpl$1 = ["<
|
|
21
|
-
_tmpl$10 = ["<
|
|
22
|
-
_tmpl$11 = ["<
|
|
23
|
-
_tmpl$12 = ["<
|
|
24
|
-
_tmpl$13 = ["<div class=\"k2b-calendar-
|
|
25
|
-
_tmpl$14 = "<
|
|
26
|
-
_tmpl$15 = ["<
|
|
27
|
-
_tmpl$16 = ["<span class=\"k2b-calendar-
|
|
28
|
-
_tmpl$17 = ["<
|
|
29
|
-
_tmpl$18 = ["<
|
|
30
|
-
_tmpl$19 = ["<div class=\"k2b-calendar-
|
|
31
|
-
_tmpl$20 = ["<div class=\"k2b-calendar-
|
|
32
|
-
_tmpl$21 = ["<div class=\"k2b-calendar-
|
|
33
|
-
_tmpl$22 = ["<div class=\"k2b-calendar-
|
|
34
|
-
_tmpl$23 = ["<
|
|
35
|
-
_tmpl$24 = ["<
|
|
36
|
-
_tmpl$25 = ["<
|
|
37
|
-
_tmpl$26 = ["<div class=\"k2b-calendar-
|
|
38
|
-
_tmpl$27 = ["<div class=\"k2b-calendar-
|
|
39
|
-
_tmpl$28 = ["<
|
|
40
|
-
_tmpl$29 =
|
|
41
|
-
_tmpl$30 = ["<div class=\"k2b-calendar-
|
|
42
|
-
_tmpl$31 = ["<
|
|
43
|
-
_tmpl$32 = ["<
|
|
44
|
-
_tmpl$33 =
|
|
45
|
-
_tmpl$34 = ["<div class=\"k2b-calendar-
|
|
46
|
-
_tmpl$35 = ["<
|
|
47
|
-
_tmpl$36 = "<
|
|
48
|
-
_tmpl$37 = ["<
|
|
49
|
-
_tmpl$38 = ["<
|
|
50
|
-
_tmpl$39 = ["<
|
|
51
|
-
_tmpl$40 = "<
|
|
52
|
-
_tmpl$41 = ["<div class=\"k2b-calendar-
|
|
53
|
-
_tmpl$42 = ["<div class=\"k2b-calendar-time-
|
|
54
|
-
_tmpl$43 = ["<div class=\"k2b-calendar-
|
|
55
|
-
_tmpl$44 = ["<
|
|
56
|
-
_tmpl$45 = ["<
|
|
57
|
-
_tmpl$46 = ["<div class=\"k2b-calendar-time-
|
|
58
|
-
_tmpl$47 = ["<
|
|
59
|
-
_tmpl$48 = ["<div class=\"k2b-calendar-time-
|
|
60
|
-
_tmpl$49 = ["<div class=\"k2b-calendar-
|
|
61
|
-
_tmpl$50 = ["<div class=\"k2b-calendar-
|
|
62
|
-
_tmpl$51 = ["<
|
|
63
|
-
_tmpl$52 = ["<
|
|
64
|
-
_tmpl$53 = ["<div class=\"k2b-calendar-
|
|
65
|
-
_tmpl$54 = ["<
|
|
66
|
-
_tmpl$55 = ["<div class=\"k2b-calendar-
|
|
67
|
-
_tmpl$56 = ["<
|
|
68
|
-
_tmpl$57 = ["<div class=\"k2b-calendar-year__month\"><div class=\"k2b-calendar-year__title\">", "</div><div class=\"k2b-calendar-year__grid\">", "</div></div>"],
|
|
69
|
-
_tmpl$58 = ["<span class=\"k2b-calendar-year__indicator\"", " style=\"", "\"></span>"],
|
|
70
|
-
_tmpl$59 = ["<div class=\"k2b-calendar-mobile-month__events\">", "</div>"],
|
|
71
|
-
_tmpl$60 = ["<div class=\"k2b-calendar-mobile-month\">", "<div class=\"k2b-calendar-mobile-month__agenda\"><div class=\"k2b-calendar-mobile-month__title\">", "</div>", "</div></div>"],
|
|
72
|
-
_tmpl$61 = ["<div class=\"k2b-calendar-mobile-month__empty\">", "</div>"],
|
|
73
|
-
_tmpl$62 = ["<div class=\"k2b-calendar-body\">", "</div>"],
|
|
74
|
-
_tmpl$63 = ["<section class=\"", "\"", ">", "", "</section>"];
|
|
10
|
+
var _tmpl$ = ["<div role=\"radiogroup\"", " aria-orientation=\"horizontal\" class=\"k2b-segmented-control k2b-calendar-view-switcher\">", "</div>"],
|
|
11
|
+
_tmpl$2 = ["<i class=\"", "\"></i>"],
|
|
12
|
+
_tmpl$3 = ["<button type=\"button\"", " class=\"k2b-calendar-header__nav-button\"><i class=\"", "\"></i></button>"],
|
|
13
|
+
_tmpl$4 = "<i class=\"ti ti-arrow-narrow-right k2b-calendar-header__today-direction\" aria-hidden=\"true\"></i>",
|
|
14
|
+
_tmpl$5 = "<i class=\"ti ti-point k2b-calendar-header__today-direction\" aria-hidden=\"true\"></i>",
|
|
15
|
+
_tmpl$6 = ["<span class=\"k2b-button__label\">", "</span>"],
|
|
16
|
+
_tmpl$7 = ["<div class=\"k2b-calendar-header__content\">", "</div>"],
|
|
17
|
+
_tmpl$8 = ["<button type=\"button\" class=\"k2b-calendar-header__shortcuts\"", "><i class=\"ti ti-keyboard\" aria-hidden=\"true\"></i></button>"],
|
|
18
|
+
_tmpl$9 = "<span class=\"k2b-calendar-header__progress\" aria-hidden=\"true\"></span>",
|
|
19
|
+
_tmpl$0 = ["<header class=\"k2b-calendar-header\"><div class=\"k2b-calendar-header__navigation\">", "", "<div class=\"k2b-calendar-header__title\"><span>", "</span>", "</div></div>", "<div class=\"k2b-calendar-header__actions\">", "", "", "", "</div>", "</header>"],
|
|
20
|
+
_tmpl$1 = ["<span class=\"k2b-calendar-header__title-size\" aria-hidden=\"true\">", "</span>"],
|
|
21
|
+
_tmpl$10 = ["<div class=\"k2b-calendar-month__weekday\">", "</div>"],
|
|
22
|
+
_tmpl$11 = ["<div class=\"k2b-calendar-month\" style=\"", "\"><div class=\"k2b-calendar-month__weekdays\"", ">", "", "</div>", "</div>"],
|
|
23
|
+
_tmpl$12 = ["<div class=\"k2b-calendar-month__week-number\">", "</div>"],
|
|
24
|
+
_tmpl$13 = ["<div class=\"k2b-calendar-month__week\"", ">", "", "</div>"],
|
|
25
|
+
_tmpl$14 = ["<div class=\"k2b-calendar-preview\">", "</div>"],
|
|
26
|
+
_tmpl$15 = ["<div class=\"k2b-calendar-month__day\"", ">", "<div class=\"k2b-calendar-month__day-header\">", "", "</div><div class=\"k2b-calendar-month__events\">", "", "", "</div><div class=\"k2b-calendar-month__dots\">", "</div></div>"],
|
|
27
|
+
_tmpl$16 = ["<span class=\"k2b-calendar-month__day-number\"", ">", "</span>"],
|
|
28
|
+
_tmpl$17 = ["<span class=\"k2b-calendar-month__badge\">", "", "</span>"],
|
|
29
|
+
_tmpl$18 = ["<span class=\"k2b-calendar-dot\"", " style=\"", "\"></span>"],
|
|
30
|
+
_tmpl$19 = ["<div class=\"k2b-calendar-month__weekday\" role=\"columnheader\">", "</div>"],
|
|
31
|
+
_tmpl$20 = ["<div class=\"k2b-calendar-month\" role=\"grid\"", " aria-multiselectable=\"true\" data-lanes=\"true\" style=\"", "\"><div class=\"k2b-calendar-month__weekdays\" role=\"row\"", ">", "", "</div>", "</div>"],
|
|
32
|
+
_tmpl$21 = ["<div class=\"k2b-calendar-month__weekday\" role=\"columnheader\"", ">", "</div>"],
|
|
33
|
+
_tmpl$22 = ["<div class=\"k2b-calendar-month__week-number\" role=\"rowheader\">", "</div>"],
|
|
34
|
+
_tmpl$23 = ["<div class=\"k2b-calendar-month__week\" role=\"row\"", ">", "", "</div>"],
|
|
35
|
+
_tmpl$24 = ["<button type=\"button\" class=\"k2b-calendar-month__week-link\" tabindex=\"-1\"", ">", "</button>"],
|
|
36
|
+
_tmpl$25 = ["<button type=\"button\" class=\"k2b-calendar-month__more\" tabindex=\"-1\" style=\"", "\"", " aria-haspopup=\"dialog\"", "><span class=\"k2b-calendar-month__more-long\">", "</span><span class=\"k2b-calendar-month__more-short\">+", "</span></button>"],
|
|
37
|
+
_tmpl$26 = ["<div class=\"k2b-calendar-month__day\" role=\"gridcell\"", "><div class=\"k2b-calendar-month__day-header\"><span class=\"k2b-calendar-month__day-number\"", ">", "</span>", "</div><div class=\"k2b-calendar-month__lanes\">", "", "", "</div></div>"],
|
|
38
|
+
_tmpl$27 = ["<div class=\"k2b-calendar-month__segment\" style=\"", "\">", "</div>"],
|
|
39
|
+
_tmpl$28 = ["<ul class=\"k2b-calendar-day-list__events\">", "</ul>"],
|
|
40
|
+
_tmpl$29 = "<i class=\"ti ti-plus\" aria-hidden=\"true\"></i>",
|
|
41
|
+
_tmpl$30 = ["<div class=\"k2b-calendar-day-list\"><div class=\"k2b-calendar-day-list__title\">", "</div>", "<div class=\"k2b-calendar-day-list__actions\">", "", "</div></div>"],
|
|
42
|
+
_tmpl$31 = ["<p class=\"k2b-calendar-day-list__empty\">", "</p>"],
|
|
43
|
+
_tmpl$32 = ["<li>", "</li>"],
|
|
44
|
+
_tmpl$33 = "<i class=\"ti ti-zoom-in\" aria-hidden=\"true\"></i>",
|
|
45
|
+
_tmpl$34 = ["<div class=\"k2b-calendar-popover\" popover=\"auto\" role=\"dialog\"", ">", "</div>"],
|
|
46
|
+
_tmpl$35 = ["<div class=\"k2b-calendar-time-grid__all-day\" style=\"", "\"><div class=\"k2b-calendar-time-grid__all-day-label\">", "</div>", "</div>"],
|
|
47
|
+
_tmpl$36 = ["<div class=\"k2b-calendar-time-grid k2b-detail-trail\"", "><div class=\"k2b-calendar-time-grid__days\" style=\"", "\"><div></div>", "</div>", "<div class=\"k2b-calendar-time-grid__scroll\"><div class=\"k2b-calendar-time-grid__grid\" style=\"", "\"><div class=\"k2b-calendar-time-grid__gutter\" style=\"", "\">", "</div>", "</div></div></div>"],
|
|
48
|
+
_tmpl$37 = ["<span class=\"k2b-calendar-time-grid__day-label\"", ">", "</span>"],
|
|
49
|
+
_tmpl$38 = ["<span class=\"k2b-calendar-time-grid__badge\">", "", "</span>"],
|
|
50
|
+
_tmpl$39 = ["<div class=\"k2b-calendar-time-grid__all-day-events\">", "", "</div>"],
|
|
51
|
+
_tmpl$40 = ["<div class=\"k2b-calendar-time-grid__hour\"", ">", ":00</div>"],
|
|
52
|
+
_tmpl$41 = ["<div class=\"k2b-calendar-time-grid__now\" style=\"", "\"></div>"],
|
|
53
|
+
_tmpl$42 = ["<div class=\"k2b-calendar-time-grid__column\" style=\"", "\">", "", "", "", "", "</div>"],
|
|
54
|
+
_tmpl$43 = ["<div class=\"k2b-calendar-preview__title\">", "</div>"],
|
|
55
|
+
_tmpl$44 = ["<div class=\"k2b-calendar-preview k2b-calendar-preview--timed\"", " style=\"", "\"><div class=\"k2b-calendar-preview__content\">", "<div class=\"k2b-calendar-preview__label\">", " - ", "</div></div></div>"],
|
|
56
|
+
_tmpl$45 = ["<button type=\"button\"", " draggable=\"false\" class=\"k2b-calendar-time-grid__resize\"><span class=\"k2b-calendar-time-grid__resize-icon\" aria-hidden=\"true\"></span></button>"],
|
|
57
|
+
_tmpl$46 = ["<div class=\"k2b-calendar-time-grid__event-position\" style=\"", "\"><div class=\"k2b-calendar-time-grid__event-frame\">", "", "</div></div>"],
|
|
58
|
+
_tmpl$47 = ["<button type=\"button\" class=\"k2b-calendar-time-grid__overflow\" style=\"", "\"", "><span class=\"k2b-calendar-time-grid__overflow-count\">+", "</span></button>"],
|
|
59
|
+
_tmpl$48 = ["<div class=\"k2b-calendar-time-grid__overflow-menu\" style=\"", "\"><div class=\"k2b-calendar-time-grid__overflow-title\">", " - ", "</div>", "</div>"],
|
|
60
|
+
_tmpl$49 = ["<div class=\"k2b-calendar-year\">", "</div>"],
|
|
61
|
+
_tmpl$50 = ["<div class=\"k2b-calendar-year__month\"><div class=\"k2b-calendar-year__title\">", "</div><div class=\"k2b-calendar-year__grid\">", "</div></div>"],
|
|
62
|
+
_tmpl$51 = ["<span class=\"k2b-calendar-year__indicator\"", " style=\"", "\"></span>"],
|
|
63
|
+
_tmpl$52 = ["<div class=\"k2b-calendar-mobile-month__events\">", "</div>"],
|
|
64
|
+
_tmpl$53 = ["<div class=\"k2b-calendar-mobile-month\">", "<div class=\"k2b-calendar-mobile-month__agenda\"><div class=\"k2b-calendar-mobile-month__title\">", "</div>", "</div></div>"],
|
|
65
|
+
_tmpl$54 = ["<div class=\"k2b-calendar-mobile-month__empty\">", "</div>"],
|
|
66
|
+
_tmpl$55 = ["<div class=\"k2b-calendar-body\">", "</div>"],
|
|
67
|
+
_tmpl$56 = ["<section class=\"", "\"", ">", "", "</section>"];
|
|
75
68
|
import { Link } from "@k2b/ssr/nav";
|
|
76
69
|
import { dates as calendar } from "@k2b/stdlib";
|
|
77
70
|
import { createEffect, createMemo, createSignal, For, mergeProps, on, onCleanup, onMount, Show, untrack } from "solid-js";
|
|
@@ -80,31 +73,29 @@ import { GestureMenu } from "../actions/GestureMenu";
|
|
|
80
73
|
import SegmentedControl from "../actions/SegmentedControl";
|
|
81
74
|
import { useDateConfigLocale } from "../intl/locale";
|
|
82
75
|
import { useUiMessages } from "../intl/messages";
|
|
76
|
+
import { CalendarDayView } from "./CalendarDayView";
|
|
77
|
+
import { CalendarWeekView } from "./CalendarWeekView";
|
|
78
|
+
import { openCalendarGoTo, openCalendarShortcuts } from "./calendar-dialogs";
|
|
83
79
|
import { layoutCalendarIntervals } from "./calendar-event-layout";
|
|
84
80
|
import { useCalendarMessages } from "./calendar-messages";
|
|
85
81
|
import { fitMonthWeek, layoutMonthWeek, monthLaneCapacity } from "./calendar-month-layout";
|
|
86
82
|
import { calendarDayIndexAtPoint, calendarMinuteAtPoint, startCalendarPointerSession } from "./calendar-pointer";
|
|
83
|
+
import { EventChip, eventHref, followCalendarHref, formatTime, ownerDateConfig, parseDate, placeCalendarPopover, textWidth, validDate } from "./calendar-shared";
|
|
84
|
+
import { compactGermanDate } from "./calendar-time-view";
|
|
87
85
|
|
|
88
|
-
/**
|
|
86
|
+
/** The days a host loaded events for, from the first day `from` up to `to`, both `YYYY-MM-DD` or dates. */
|
|
89
87
|
|
|
90
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* An action the calendar offers for keyboard shortcuts, the command palette, and its shortcuts dialog. The calendar
|
|
90
|
+
* publishes its own through `onCommandsChange`; the host registers them with its shortcut dispatcher.
|
|
91
|
+
*/
|
|
92
|
+
|
|
93
|
+
/** An entry dragged into the day or week view from outside the calendar, such as a task from a list below it. */
|
|
94
|
+
|
|
95
|
+
/** Actions of the calendar that the host starts from its own controls. */
|
|
96
|
+
|
|
97
|
+
/** A view the application adds to the switcher; the calendar shows its header and toolbar, the application the body. */
|
|
91
98
|
|
|
92
|
-
const ownerDateConfig = owner => ({
|
|
93
|
-
...owner.dateConfig,
|
|
94
|
-
timeZone: owner.timeZone ?? owner.dateConfig?.timeZone,
|
|
95
|
-
firstDayOfWeek: owner.firstDayOfWeek ?? owner.dateConfig?.firstDayOfWeek ?? owner.dateConfig?.weekStartsOn ?? 1
|
|
96
|
-
});
|
|
97
|
-
const dateOnlyPattern = /^\d{4}-\d{2}-\d{2}$/;
|
|
98
|
-
const parseDate = (value, context) => {
|
|
99
|
-
if (value instanceof Date) return new Date(value);
|
|
100
|
-
if (dateOnlyPattern.test(value)) return calendar.parseCalendarDate(value, context);
|
|
101
|
-
const normalized = value.includes("T") ? value : value.replace(" ", "T");
|
|
102
|
-
const parsed = new Date(normalized);
|
|
103
|
-
if (!Number.isNaN(parsed.getTime())) return parsed;
|
|
104
|
-
const [year, month = "1", day = "1"] = value.split("-");
|
|
105
|
-
return new Date(Number(year), Number(month) - 1, Number(day), 12);
|
|
106
|
-
};
|
|
107
|
-
const validDate = value => !Number.isNaN(value.getTime());
|
|
108
99
|
const weekNumber = date => {
|
|
109
100
|
const target = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
|
|
110
101
|
const day = target.getUTCDay() || 7;
|
|
@@ -117,7 +108,6 @@ const zonedWeekNumber = (date, context) => {
|
|
|
117
108
|
const [year = "1970", month = "1", day = "1"] = calendar.formatDateKey(date, context).split("-");
|
|
118
109
|
return weekNumber(new Date(Date.UTC(Number(year), Number(month) - 1, Number(day))));
|
|
119
110
|
};
|
|
120
|
-
const formatTime = (date, context) => calendar.formatTime(date, context);
|
|
121
111
|
const formatDay = (date, context) => date.toLocaleDateString(context?.locale ?? "en", {
|
|
122
112
|
weekday: "short",
|
|
123
113
|
day: "numeric",
|
|
@@ -196,7 +186,6 @@ const normalizeEvents = (events, context) => events.flatMap(event => {
|
|
|
196
186
|
}
|
|
197
187
|
return days;
|
|
198
188
|
});
|
|
199
|
-
const eventHref = (props, event) => props.getEventHref?.(event) ?? event.href;
|
|
200
189
|
const moveEventTo = (event, target, allDay = false, context) => {
|
|
201
190
|
const duration = Math.max(30 * 60 * 1000, event.sourceEndDate.getTime() - event.sourceStartDate.getTime());
|
|
202
191
|
const start = allDay ? startOfDay(target, context) : new Date(target);
|
|
@@ -243,123 +232,6 @@ const timedEventLayouts = events => {
|
|
|
243
232
|
groupEndDate: new Date(groupEnd)
|
|
244
233
|
}));
|
|
245
234
|
};
|
|
246
|
-
const EventChip = props => {
|
|
247
|
-
const messages = useUiMessages();
|
|
248
|
-
const dateConfig = createMemo(() => ownerDateConfig(props.owner));
|
|
249
|
-
const color = () => props.event.color ?? "blue";
|
|
250
|
-
const selected = () => Boolean(props.owner.selectedEventId) && props.owner.selectedEventId === props.event.id;
|
|
251
|
-
const style = () => props.event.colorHex ? {
|
|
252
|
-
"--k2b-calendar-accent": props.event.colorHex
|
|
253
|
-
} : undefined;
|
|
254
|
-
const isInteractive = () => Boolean(props.owner.onEventActivate);
|
|
255
|
-
const durationHours = () => (props.event.endDate.getTime() - props.event.startDate.getTime()) / 3_600_000;
|
|
256
|
-
const short = () => Boolean(props.fill && !props.event.allDay && durationHours() < 0.75);
|
|
257
|
-
const showTime = () => !props.event.allDay && !props.compact && durationHours() >= 0.75;
|
|
258
|
-
const showLocation = () => Boolean(props.event.location && !props.compact && durationHours() >= 1.25);
|
|
259
|
-
const showDescription = () => Boolean(props.event.description?.trim() && props.fill && !props.event.allDay && !props.compact && durationHours() >= 1.5);
|
|
260
|
-
const timeLabel = () => `${formatTime(props.event.startDate, dateConfig())} - ${formatTime(props.event.endDate, dateConfig())}`;
|
|
261
|
-
const ariaLabel = () => {
|
|
262
|
-
const label = props.label ? props.label : props.event.allDay ? props.event.title : messages().calendarEventTime({
|
|
263
|
-
title: props.event.title,
|
|
264
|
-
start: formatTime(props.event.startDate, dateConfig()),
|
|
265
|
-
end: formatTime(props.event.endDate, dateConfig())
|
|
266
|
-
});
|
|
267
|
-
return props.event.accessibleDetail ? `${label}, ${props.event.accessibleDetail}` : label;
|
|
268
|
-
};
|
|
269
|
-
const renderedEvent = () => props.owner.renderEvent?.(props.event, {
|
|
270
|
-
compact: props.compact ?? false,
|
|
271
|
-
fill: props.fill ?? false,
|
|
272
|
-
start: props.event.startDate,
|
|
273
|
-
end: props.event.endDate,
|
|
274
|
-
allDay: props.event.allDay ?? false,
|
|
275
|
-
durationHours: durationHours(),
|
|
276
|
-
timeLabel: timeLabel(),
|
|
277
|
-
leadingTime: props.leadingTime
|
|
278
|
-
});
|
|
279
|
-
const defaultContent = [_$createComponent(Show, {
|
|
280
|
-
get when() {
|
|
281
|
-
return props.leadingTime;
|
|
282
|
-
},
|
|
283
|
-
get children() {
|
|
284
|
-
return _$ssr(_tmpl$, _$escape(props.leadingTime));
|
|
285
|
-
}
|
|
286
|
-
}), _$ssr(_tmpl$3, _$escape(_$createComponent(Show, {
|
|
287
|
-
get when() {
|
|
288
|
-
return props.event.display === "marker";
|
|
289
|
-
},
|
|
290
|
-
get children() {
|
|
291
|
-
return _$ssr(_tmpl$2);
|
|
292
|
-
}
|
|
293
|
-
})), _$escape(props.event.title)), _$createComponent(Show, {
|
|
294
|
-
get when() {
|
|
295
|
-
return showTime();
|
|
296
|
-
},
|
|
297
|
-
get children() {
|
|
298
|
-
return _$ssr(_tmpl$4, _$escape(timeLabel()));
|
|
299
|
-
}
|
|
300
|
-
}), _$createComponent(Show, {
|
|
301
|
-
get when() {
|
|
302
|
-
return showLocation();
|
|
303
|
-
},
|
|
304
|
-
get children() {
|
|
305
|
-
return _$ssr(_tmpl$4, _$escape(props.event.location));
|
|
306
|
-
}
|
|
307
|
-
}), _$createComponent(Show, {
|
|
308
|
-
get when() {
|
|
309
|
-
return showDescription();
|
|
310
|
-
},
|
|
311
|
-
get children() {
|
|
312
|
-
return _$ssr(_tmpl$5, _$escape(props.event.description));
|
|
313
|
-
}
|
|
314
|
-
})];
|
|
315
|
-
const content = () => [_$createComponent(Show, {
|
|
316
|
-
get when() {
|
|
317
|
-
return props.hintStart;
|
|
318
|
-
},
|
|
319
|
-
get children() {
|
|
320
|
-
return _$ssr(_tmpl$6, _$escape(props.hintStart));
|
|
321
|
-
}
|
|
322
|
-
}), renderedEvent() ?? defaultContent, _$createComponent(Show, {
|
|
323
|
-
get when() {
|
|
324
|
-
return props.hintEnd;
|
|
325
|
-
},
|
|
326
|
-
get children() {
|
|
327
|
-
return _$ssr(_tmpl$7, _$escape(props.hintEnd));
|
|
328
|
-
}
|
|
329
|
-
})];
|
|
330
|
-
const isActionable = () => isInteractive() || Boolean(props.onMovePointerDown);
|
|
331
|
-
let suppressClickUntil = 0;
|
|
332
|
-
const onClick = event => {
|
|
333
|
-
if (performance.now() < suppressClickUntil) {
|
|
334
|
-
event.preventDefault();
|
|
335
|
-
event.stopPropagation();
|
|
336
|
-
return;
|
|
337
|
-
}
|
|
338
|
-
if (!props.owner.onEventActivate || props.owner.eventActivation === "double") return;
|
|
339
|
-
event.preventDefault();
|
|
340
|
-
event.stopPropagation();
|
|
341
|
-
props.owner.onEventActivate(props.event);
|
|
342
|
-
};
|
|
343
|
-
const onDoubleClick = event => {
|
|
344
|
-
if (!props.owner.onEventActivate || props.owner.eventActivation !== "double") return;
|
|
345
|
-
event.preventDefault();
|
|
346
|
-
event.stopPropagation();
|
|
347
|
-
props.owner.onEventActivate(props.event);
|
|
348
|
-
};
|
|
349
|
-
const onButtonKeyDown = event => {
|
|
350
|
-
if (!isInteractive() || event.key !== "Enter" && event.key !== " ") return;
|
|
351
|
-
event.preventDefault();
|
|
352
|
-
props.owner.onEventActivate?.(props.event);
|
|
353
|
-
};
|
|
354
|
-
const onPointerDown = event => {
|
|
355
|
-
if (event.pointerType === "touch") return;
|
|
356
|
-
if (props.onMovePointerDown) event.stopPropagation();
|
|
357
|
-
props.onMovePointerDown?.(event, () => {
|
|
358
|
-
suppressClickUntil = performance.now() + 400;
|
|
359
|
-
});
|
|
360
|
-
};
|
|
361
|
-
return props.href ? _$ssr(_tmpl$8, _$ssrAttribute("href", _$escape(props.href, true), false), _$ssrAttribute("data-color", props.event.colorHex ? _$escape(undefined, true) : _$escape(color(), true), false) + _$ssrAttribute("data-selected", selected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-compact", props.compact ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-fill", props.fill ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-short", short() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-moving", props.moving ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-continues-before", props.continuesBefore ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-continues-after", props.continuesAfter ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-bar", props.bar ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-interactive", isInteractive() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-display", _$escape(props.event.display, true), false) + _$ssrAttribute("data-space-item-id", _$escape(props.event.dataSpaceItemId, true), false), _$ssrStyle(style()), _$ssrAttribute("draggable", props.onMovePointerDown ? _$escape(false, true) : _$escape(undefined, true), false) + _$ssrAttribute("aria-label", _$escape(ariaLabel(), true), false), _$escape(content())) : isActionable() ? _$ssr(_tmpl$9, _$ssrAttribute("data-color", props.event.colorHex ? _$escape(undefined, true) : _$escape(color(), true), false) + _$ssrAttribute("data-selected", selected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-compact", props.compact ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-fill", props.fill ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-short", short() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-moving", props.moving ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-continues-before", props.continuesBefore ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-continues-after", props.continuesAfter ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-bar", props.bar ? "true" : _$escape(undefined, true), false), _$ssrAttribute("data-display", _$escape(props.event.display, true), false), _$ssrStyle(style()), _$ssrAttribute("aria-label", _$escape(ariaLabel(), true), false), _$escape(content())) : _$ssr(_tmpl$0, _$ssrAttribute("data-color", props.event.colorHex ? _$escape(undefined, true) : _$escape(color(), true), false) + _$ssrAttribute("data-selected", selected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-compact", props.compact ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-fill", props.fill ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-short", short() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-moving", props.moving ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-continues-before", props.continuesBefore ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-continues-after", props.continuesAfter ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-bar", props.bar ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-interactive", _$escape(undefined, true), false) + _$ssrAttribute("data-display", _$escape(props.event.display, true), false), _$ssrStyle(style()), _$ssrAttribute("aria-label", _$escape(ariaLabel(), true), false), _$escape(content()));
|
|
362
|
-
};
|
|
363
235
|
const slotInteractionProps = (owner, slot, suppressed, nativeControl = false) => {
|
|
364
236
|
const isSlotChild = event => {
|
|
365
237
|
if (!(event.target instanceof Element)) return false;
|
|
@@ -388,12 +260,20 @@ const slotInteractionProps = (owner, slot, suppressed, nativeControl = false) =>
|
|
|
388
260
|
}
|
|
389
261
|
};
|
|
390
262
|
};
|
|
263
|
+
const plainClick = event => !event.defaultPrevented && event.button === 0 && !event.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey;
|
|
264
|
+
|
|
391
265
|
/** A real anchor is the baseline; the optional handler only enhances it after hydration. */
|
|
392
266
|
const CalendarNavigationLink = props => {
|
|
393
267
|
const preload = () => props.owner.onPrefetch?.(props.href);
|
|
268
|
+
const intercepted = event => {
|
|
269
|
+
if (!props.intercept || !plainClick(event) || !props.intercept()) return false;
|
|
270
|
+
event.preventDefault();
|
|
271
|
+
return true;
|
|
272
|
+
};
|
|
394
273
|
const navigateHref = event => {
|
|
274
|
+
if (intercepted(event)) return;
|
|
395
275
|
const anchor = event.currentTarget;
|
|
396
|
-
if (event
|
|
276
|
+
if (!plainClick(event) || anchor.target && anchor.target !== "_self" || anchor.hasAttribute("download") || new URL(anchor.href).origin !== window.location.origin) {
|
|
397
277
|
return;
|
|
398
278
|
}
|
|
399
279
|
event.preventDefault();
|
|
@@ -411,6 +291,7 @@ const CalendarNavigationLink = props => {
|
|
|
411
291
|
get onNavigate() {
|
|
412
292
|
return props.owner.onNavigate;
|
|
413
293
|
},
|
|
294
|
+
onClick: event => void intercepted(event),
|
|
414
295
|
onPointerEnter: preload,
|
|
415
296
|
onFocus: preload,
|
|
416
297
|
get children() {
|
|
@@ -423,7 +304,7 @@ const CalendarNavigationLink = props => {
|
|
|
423
304
|
}), _$escape(props.children), false);
|
|
424
305
|
};
|
|
425
306
|
const CalendarViewLinks = props => {
|
|
426
|
-
const
|
|
307
|
+
const calendarMessages = useCalendarMessages();
|
|
427
308
|
const refs = [];
|
|
428
309
|
const selectRelative = (currentIndex, direction) => {
|
|
429
310
|
if (props.options.length === 0) return;
|
|
@@ -441,7 +322,7 @@ const CalendarViewLinks = props => {
|
|
|
441
322
|
refs[event.key === "Home" ? 0 : props.options.length - 1]?.click();
|
|
442
323
|
}
|
|
443
324
|
};
|
|
444
|
-
return _$ssr(_tmpl
|
|
325
|
+
return _$ssr(_tmpl$, _$ssrAttribute("aria-label", _$escape(calendarMessages().calendarView, true), false), _$escape(_$createComponent(For, {
|
|
445
326
|
get each() {
|
|
446
327
|
return props.options;
|
|
447
328
|
},
|
|
@@ -502,12 +383,62 @@ const openViewAt = (owner, date, view) => {
|
|
|
502
383
|
owner.onViewChange?.(view);
|
|
503
384
|
owner.onDateChange?.(date, view);
|
|
504
385
|
};
|
|
386
|
+
|
|
387
|
+
/** What the header reads from the active view beyond the props: the days a day or week view shows, and its moves. */
|
|
388
|
+
|
|
389
|
+
const dayTitleOptions = {
|
|
390
|
+
weekday: "short",
|
|
391
|
+
day: "numeric",
|
|
392
|
+
month: "short",
|
|
393
|
+
year: "numeric"
|
|
394
|
+
};
|
|
395
|
+
const weekTitleOptions = {
|
|
396
|
+
day: "numeric",
|
|
397
|
+
month: "short",
|
|
398
|
+
year: "numeric"
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
/** Where today lies from the shown day or week before its view measured: the arrow of the Today button, or nothing. */
|
|
402
|
+
const todayDirectionOf = (view, date, context) => {
|
|
403
|
+
const today = calendar.formatDateKey(new Date(), context);
|
|
404
|
+
if (view === "week") {
|
|
405
|
+
const start = calendar.formatDateKey(calendar.startOfWeek(date, context), context);
|
|
406
|
+
const end = calendar.formatDateKey(calendar.addDays(calendar.startOfWeek(date, context), 6, context), context);
|
|
407
|
+
return today < start ? "left" : today > end ? "right" : "";
|
|
408
|
+
}
|
|
409
|
+
const shown = calendar.formatDateKey(date, context);
|
|
410
|
+
return today < shown ? "up" : today > shown ? "down" : "";
|
|
411
|
+
};
|
|
505
412
|
const CalendarHeader = props => {
|
|
506
|
-
const
|
|
413
|
+
const calendarMessages = useCalendarMessages();
|
|
507
414
|
const dateConfig = () => ownerDateConfig(props.owner);
|
|
508
|
-
const
|
|
509
|
-
const
|
|
415
|
+
const timeView = () => props.nav.timeView();
|
|
416
|
+
const parseKey = key => calendar.parseCalendarDate(key, dateConfig());
|
|
417
|
+
/** The date the header pages from: the first day a day or week view shows, else the date. */
|
|
418
|
+
const base = () => {
|
|
419
|
+
const shown = timeView()?.visibleKeys().first;
|
|
420
|
+
return shown ? parseKey(shown) : props.date;
|
|
421
|
+
};
|
|
422
|
+
const previous = () => adjacentCalendarDate(base(), props.view, -1, dateConfig());
|
|
423
|
+
const next = () => adjacentCalendarDate(base(), props.view, 1, dateConfig());
|
|
424
|
+
/** The day view's title, such as "Fri, Oct 9, 2026" or "Fr, 9. Okt 2026". */
|
|
425
|
+
const formatDayTitle = date => compactGermanDate(new Intl.DateTimeFormat(dateConfig().locale ?? "en", {
|
|
426
|
+
...dayTitleOptions,
|
|
427
|
+
timeZone: dateConfig().timeZone
|
|
428
|
+
}).format(date), dateConfig().locale, true);
|
|
429
|
+
const formatRange = (from, to) => compactGermanDate(new Intl.DateTimeFormat(dateConfig().locale ?? "en", {
|
|
430
|
+
...weekTitleOptions,
|
|
431
|
+
timeZone: dateConfig().timeZone
|
|
432
|
+
}).formatRange(from, to), dateConfig().locale);
|
|
433
|
+
/** The day and week views with `dayHours` name the days they show, also on the server before they measured. */
|
|
434
|
+
const timeMode = () => Boolean(props.owner.dayHours) && (props.view === "day" || props.view === "week");
|
|
510
435
|
const title = () => {
|
|
436
|
+
const shown = timeView()?.visibleKeys();
|
|
437
|
+
if (timeMode() && props.view === "day") return formatDayTitle(shown ? parseKey(shown.first) : props.date);
|
|
438
|
+
if (timeMode()) {
|
|
439
|
+
const start = shown ? parseKey(shown.first) : calendar.startOfWeek(props.date, dateConfig());
|
|
440
|
+
return formatRange(start, shown ? parseKey(shown.last) : calendar.addDays(start, 6, dateConfig()));
|
|
441
|
+
}
|
|
511
442
|
if (props.view === "year") return new Intl.DateTimeFormat(dateConfig().locale ?? "en", {
|
|
512
443
|
year: "numeric",
|
|
513
444
|
timeZone: dateConfig().timeZone
|
|
@@ -523,8 +454,8 @@ const CalendarHeader = props => {
|
|
|
523
454
|
return formatMonth(props.date, dateConfig());
|
|
524
455
|
};
|
|
525
456
|
/**
|
|
526
|
-
* The titles this view can show around the current date: the months of the year, the weeks of the month
|
|
527
|
-
* of each weekday in every month. Their widest one sets the title's width.
|
|
457
|
+
* The titles this view can show around the current date: the months of the year, the weeks of the month and across
|
|
458
|
+
* each month boundary, or a day of each weekday in every month. Their widest one sets the title's width.
|
|
528
459
|
*/
|
|
529
460
|
const titleWidths = createMemo(() => {
|
|
530
461
|
const context = dateConfig();
|
|
@@ -537,12 +468,22 @@ const CalendarHeader = props => {
|
|
|
537
468
|
}, (_, month) => formatMonth(zonedMonthDate(year, month, context), context));
|
|
538
469
|
if (props.view === "week") {
|
|
539
470
|
const first = calendar.startOfWeek(calendar.startOfMonth(props.date, context), context);
|
|
540
|
-
|
|
471
|
+
const weeks = Array.from({
|
|
541
472
|
length: 6
|
|
542
473
|
}, (_, week) => {
|
|
543
474
|
const start = calendar.addDays(first, week * 7, context);
|
|
475
|
+
if (timeMode()) return formatRange(start, calendar.addDays(start, 6, context));
|
|
544
476
|
return `${formatDay(start, context)} - ${formatDay(calendar.addDays(start, 6, context), context)}`;
|
|
545
477
|
});
|
|
478
|
+
if (timeMode()) {
|
|
479
|
+
return [...weeks, ...Array.from({
|
|
480
|
+
length: 12
|
|
481
|
+
}, (_, month) => {
|
|
482
|
+
const day28 = calendar.addDays(zonedMonthDate(year, month, context), 27, context);
|
|
483
|
+
return formatRange(day28, calendar.addDays(day28, 6, context));
|
|
484
|
+
})];
|
|
485
|
+
}
|
|
486
|
+
return weeks;
|
|
546
487
|
}
|
|
547
488
|
return Array.from({
|
|
548
489
|
length: 12
|
|
@@ -550,7 +491,7 @@ const CalendarHeader = props => {
|
|
|
550
491
|
const first = zonedMonthDate(year, month, context);
|
|
551
492
|
return Array.from({
|
|
552
493
|
length: 7
|
|
553
|
-
}, (_, offset) => calendar.addDays(first, 21 + offset, context).toLocaleDateString(context.locale ?? "en", {
|
|
494
|
+
}, (_, offset) => timeMode() ? formatDayTitle(calendar.addDays(first, 21 + offset, context)) : calendar.addDays(first, 21 + offset, context).toLocaleDateString(context.locale ?? "en", {
|
|
554
495
|
weekday: "long",
|
|
555
496
|
month: "long",
|
|
556
497
|
day: "numeric",
|
|
@@ -574,49 +515,82 @@ const CalendarHeader = props => {
|
|
|
574
515
|
const href = props.owner.getViewHref?.(view);
|
|
575
516
|
if (href) window.location.href = href;
|
|
576
517
|
};
|
|
577
|
-
const navButton = (date, icon, label) => {
|
|
518
|
+
const navButton = (date, icon, label, direction) => {
|
|
578
519
|
const href = props.owner.getDateHref?.(date, props.view);
|
|
520
|
+
const step = () => timeView()?.step(direction) ?? false;
|
|
521
|
+
const title = props.nav.commands().length > 0 ? `${label} (${direction > 0 ? "J" : "K"})` : label;
|
|
579
522
|
return (props.owner.onNavigateHref || props.owner.onNavigate) && href ? _$createComponent(CalendarNavigationLink, {
|
|
580
523
|
get owner() {
|
|
581
524
|
return props.owner;
|
|
582
525
|
},
|
|
583
526
|
href: href,
|
|
527
|
+
intercept: step,
|
|
584
528
|
anchorProps: {
|
|
585
529
|
"aria-label": label,
|
|
586
|
-
title
|
|
530
|
+
title,
|
|
587
531
|
class: "k2b-calendar-header__nav-button"
|
|
588
532
|
},
|
|
589
533
|
get children() {
|
|
590
|
-
return _$ssr(_tmpl$
|
|
534
|
+
return _$ssr(_tmpl$2, `ti ${_$escape(icon, true)}`);
|
|
591
535
|
}
|
|
592
|
-
}) : props.owner.onDateChange ? _$ssr(_tmpl$
|
|
536
|
+
}) : props.owner.onDateChange ? _$ssr(_tmpl$3, _$ssrAttribute("aria-label", _$escape(label, true), false) + _$ssrAttribute("title", _$escape(title, true), false), `ti ${_$escape(icon, true)}`) : _$createComponent(CalendarNavigationLink, {
|
|
593
537
|
get owner() {
|
|
594
538
|
return props.owner;
|
|
595
539
|
},
|
|
596
540
|
href: href ?? "#",
|
|
541
|
+
intercept: step,
|
|
597
542
|
anchorProps: {
|
|
598
543
|
"aria-label": label,
|
|
599
|
-
title
|
|
544
|
+
title,
|
|
600
545
|
class: "k2b-calendar-header__nav-button"
|
|
601
546
|
},
|
|
602
547
|
get children() {
|
|
603
|
-
return _$ssr(_tmpl$
|
|
548
|
+
return _$ssr(_tmpl$2, `ti ${_$escape(icon, true)}`);
|
|
604
549
|
}
|
|
605
550
|
});
|
|
606
551
|
};
|
|
552
|
+
/**
|
|
553
|
+
* In the day and week views that scroll through their days, Today points where today lies, or shows a calm dot while
|
|
554
|
+
* it is on screen; the icon keeps its place either way. The other views name their period in the title.
|
|
555
|
+
*/
|
|
556
|
+
const direction = () => timeMode() ? (timeView()?.todayDirection() ?? todayDirectionOf(String(props.view), props.date, dateConfig())) || "here" : undefined;
|
|
557
|
+
/** One arrow that the stylesheet turns toward today, or the dot while today shows. */
|
|
558
|
+
const todayIcon = () => _$createComponent(Show, {
|
|
559
|
+
get when() {
|
|
560
|
+
return direction();
|
|
561
|
+
},
|
|
562
|
+
children: current => _$createComponent(Show, {
|
|
563
|
+
get when() {
|
|
564
|
+
return current() !== "here";
|
|
565
|
+
},
|
|
566
|
+
get fallback() {
|
|
567
|
+
return _$ssr(_tmpl$5);
|
|
568
|
+
},
|
|
569
|
+
get children() {
|
|
570
|
+
return _$ssr(_tmpl$4);
|
|
571
|
+
}
|
|
572
|
+
})
|
|
573
|
+
});
|
|
607
574
|
const todayButton = () => {
|
|
608
575
|
const today = calendar.today(dateConfig());
|
|
609
576
|
const href = props.owner.getDateHref?.(today, props.view);
|
|
610
|
-
const
|
|
577
|
+
const intercept = () => timeView()?.today() ?? false;
|
|
578
|
+
const title = () => props.nav.commands().length > 0 ? `${props.labels.today} (H)` : undefined;
|
|
579
|
+
const label = [todayIcon(), _$ssr(_tmpl$6, _$escape(props.labels.today))];
|
|
611
580
|
return (props.owner.onNavigateHref || props.owner.onNavigate) && href ? _$createComponent(CalendarNavigationLink, {
|
|
612
581
|
get owner() {
|
|
613
582
|
return props.owner;
|
|
614
583
|
},
|
|
615
584
|
href: href,
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
585
|
+
intercept: intercept,
|
|
586
|
+
get anchorProps() {
|
|
587
|
+
return {
|
|
588
|
+
class: "k2b-button k2b-calendar-header__today",
|
|
589
|
+
"data-size": "sm",
|
|
590
|
+
"data-variant": "input",
|
|
591
|
+
"data-direction": direction(),
|
|
592
|
+
title: title()
|
|
593
|
+
};
|
|
620
594
|
},
|
|
621
595
|
children: label
|
|
622
596
|
}) : props.owner.onDateChange ? _$createComponent(Button, {
|
|
@@ -624,19 +598,32 @@ const CalendarHeader = props => {
|
|
|
624
598
|
variant: "input",
|
|
625
599
|
size: "sm",
|
|
626
600
|
"class": "k2b-calendar-header__today",
|
|
627
|
-
|
|
601
|
+
get ["data-direction"]() {
|
|
602
|
+
return direction();
|
|
603
|
+
},
|
|
604
|
+
get title() {
|
|
605
|
+
return title();
|
|
606
|
+
},
|
|
607
|
+
onClick: () => {
|
|
608
|
+
if (!intercept()) goDate(today);
|
|
609
|
+
},
|
|
628
610
|
get children() {
|
|
629
|
-
return props.labels.today;
|
|
611
|
+
return [todayIcon(), props.labels.today];
|
|
630
612
|
}
|
|
631
613
|
}) : _$createComponent(CalendarNavigationLink, {
|
|
632
614
|
get owner() {
|
|
633
615
|
return props.owner;
|
|
634
616
|
},
|
|
635
617
|
href: href ?? "#",
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
618
|
+
intercept: intercept,
|
|
619
|
+
get anchorProps() {
|
|
620
|
+
return {
|
|
621
|
+
class: "k2b-button k2b-calendar-header__today",
|
|
622
|
+
"data-size": "sm",
|
|
623
|
+
"data-variant": "input",
|
|
624
|
+
"data-direction": direction(),
|
|
625
|
+
title: title()
|
|
626
|
+
};
|
|
640
627
|
},
|
|
641
628
|
children: label
|
|
642
629
|
});
|
|
@@ -654,17 +641,17 @@ const CalendarHeader = props => {
|
|
|
654
641
|
value: "year",
|
|
655
642
|
label: props.labels.year
|
|
656
643
|
}].filter(option => !props.owner.views || props.owner.views.includes(option.value)), ...(props.owner.customViews ?? [])]);
|
|
657
|
-
return _$ssr(_tmpl$
|
|
644
|
+
return _$ssr(_tmpl$0, _$escape(navButton(previous(), "ti-chevron-left", props.labels.previous, -1)), _$escape(navButton(next(), "ti-chevron-right", props.labels.next, 1)), _$escape(title()), _$escape(_$createComponent(For, {
|
|
658
645
|
get each() {
|
|
659
646
|
return titleWidths();
|
|
660
647
|
},
|
|
661
|
-
children: candidate => _$ssr(_tmpl$
|
|
648
|
+
children: candidate => _$ssr(_tmpl$1, _$escape(candidate))
|
|
662
649
|
})), _$escape(_$createComponent(Show, {
|
|
663
650
|
get when() {
|
|
664
651
|
return props.owner.toolbarContent;
|
|
665
652
|
},
|
|
666
653
|
get children() {
|
|
667
|
-
return _$ssr(_tmpl$
|
|
654
|
+
return _$ssr(_tmpl$7, _$escape(props.owner.toolbarContent));
|
|
668
655
|
}
|
|
669
656
|
})), _$escape(todayButton()), _$escape(_$createComponent(Show, {
|
|
670
657
|
get when() {
|
|
@@ -672,10 +659,11 @@ const CalendarHeader = props => {
|
|
|
672
659
|
},
|
|
673
660
|
get fallback() {
|
|
674
661
|
return _$createComponent(SegmentedControl, {
|
|
662
|
+
"class": "k2b-calendar-view-switcher",
|
|
675
663
|
value: () => props.view === "mobile-month" ? "month" : props.view,
|
|
676
664
|
onValueChange: goView,
|
|
677
665
|
get ariaLabel() {
|
|
678
|
-
return
|
|
666
|
+
return calendarMessages().calendarView;
|
|
679
667
|
},
|
|
680
668
|
get options() {
|
|
681
669
|
return viewOptions();
|
|
@@ -699,18 +687,24 @@ const CalendarHeader = props => {
|
|
|
699
687
|
});
|
|
700
688
|
}
|
|
701
689
|
})), _$escape(props.owner.toolbarActions), _$escape(_$createComponent(Show, {
|
|
690
|
+
get when() {
|
|
691
|
+
return props.nav.commands().length > 0;
|
|
692
|
+
},
|
|
693
|
+
get children() {
|
|
694
|
+
return _$ssr(_tmpl$8, _$ssrAttribute("aria-label", _$escape(calendarMessages().calendarShortcuts, true), false) + _$ssrAttribute("title", _$escape(calendarMessages().calendarShortcuts, true), false));
|
|
695
|
+
}
|
|
696
|
+
})), _$escape(_$createComponent(Show, {
|
|
702
697
|
get when() {
|
|
703
698
|
return props.owner.navigationPending;
|
|
704
699
|
},
|
|
705
700
|
get children() {
|
|
706
|
-
return _$ssr(_tmpl$
|
|
701
|
+
return _$ssr(_tmpl$9);
|
|
707
702
|
}
|
|
708
703
|
})));
|
|
709
704
|
};
|
|
710
705
|
|
|
711
706
|
/** The compact month of `mobile-month`: a picker whose days link to their agenda. */
|
|
712
707
|
const MonthPickerView = props => {
|
|
713
|
-
const messages = useUiMessages();
|
|
714
708
|
const calendarMessages = useCalendarMessages();
|
|
715
709
|
const dateConfig = createMemo(() => ownerDateConfig(props.owner));
|
|
716
710
|
const [movePreview, setMovePreview] = createSignal(null);
|
|
@@ -764,28 +758,28 @@ const MonthPickerView = props => {
|
|
|
764
758
|
});
|
|
765
759
|
};
|
|
766
760
|
onCleanup(() => cancelInteraction?.());
|
|
767
|
-
return _$ssr(_tmpl$
|
|
761
|
+
return _$ssr(_tmpl$11, _$ssrStyleProperty("grid-template-rows:", `auto repeat(${_$escape(weeks().length, true)}, ${props.compact ? "minmax(2.75rem, auto)" : "minmax(5rem, 1fr)"})`), _$ssrAttribute("data-week-numbers", props.owner.withWeekNumbers ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
|
|
768
762
|
get when() {
|
|
769
763
|
return props.owner.withWeekNumbers;
|
|
770
764
|
},
|
|
771
765
|
get children() {
|
|
772
|
-
return _$ssr(_tmpl$
|
|
766
|
+
return _$ssr(_tmpl$10, _$escape(calendarMessages().weekShort));
|
|
773
767
|
}
|
|
774
768
|
})), _$escape(_$createComponent(For, {
|
|
775
769
|
get each() {
|
|
776
770
|
return weekdays();
|
|
777
771
|
},
|
|
778
|
-
children: day => _$ssr(_tmpl$
|
|
772
|
+
children: day => _$ssr(_tmpl$10, _$escape(day))
|
|
779
773
|
})), _$escape(_$createComponent(For, {
|
|
780
774
|
get each() {
|
|
781
775
|
return weeks();
|
|
782
776
|
},
|
|
783
|
-
children: week => _$ssr(_tmpl$
|
|
777
|
+
children: week => _$ssr(_tmpl$13, _$ssrAttribute("data-week-numbers", props.owner.withWeekNumbers ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
|
|
784
778
|
get when() {
|
|
785
779
|
return props.owner.withWeekNumbers;
|
|
786
780
|
},
|
|
787
781
|
get children() {
|
|
788
|
-
return _$ssr(_tmpl$
|
|
782
|
+
return _$ssr(_tmpl$12, _$escape(zonedWeekNumber(week[0], dateConfig())));
|
|
789
783
|
}
|
|
790
784
|
})), _$escape(_$createComponent(For, {
|
|
791
785
|
each: week,
|
|
@@ -814,7 +808,7 @@ const MonthPickerView = props => {
|
|
|
814
808
|
hiddenCount: Math.max(0, candidates.length - visibleLimit)
|
|
815
809
|
};
|
|
816
810
|
});
|
|
817
|
-
return _$ssr(_tmpl$
|
|
811
|
+
return _$ssr(_tmpl$15, _$ssrAttribute("data-calendar-day-key", _$escape(dayKey, true), false) + _$ssrAttribute("data-outside", !sameMonth ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-drop-preview", movePreview()?.start && calendar.formatDateKey(movePreview().start, dateConfig()) === dayKey ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
|
|
818
812
|
get when() {
|
|
819
813
|
return props.owner.onSlotActivate;
|
|
820
814
|
},
|
|
@@ -831,7 +825,7 @@ const MonthPickerView = props => {
|
|
|
831
825
|
get anchorProps() {
|
|
832
826
|
return {
|
|
833
827
|
class: "k2b-calendar-month__day-target",
|
|
834
|
-
"aria-label":
|
|
828
|
+
"aria-label": calendarMessages().openDate({
|
|
835
829
|
label: dayLabel
|
|
836
830
|
})
|
|
837
831
|
};
|
|
@@ -845,7 +839,7 @@ const MonthPickerView = props => {
|
|
|
845
839
|
"class": "k2b-calendar-month__day-target",
|
|
846
840
|
"data-interactive": "true",
|
|
847
841
|
get ["aria-label"]() {
|
|
848
|
-
return
|
|
842
|
+
return calendarMessages().createEventOn({
|
|
849
843
|
label: dayLabel
|
|
850
844
|
});
|
|
851
845
|
}
|
|
@@ -863,7 +857,7 @@ const MonthPickerView = props => {
|
|
|
863
857
|
return props.owner.onSlotActivate && href;
|
|
864
858
|
},
|
|
865
859
|
get fallback() {
|
|
866
|
-
return _$ssr(_tmpl$
|
|
860
|
+
return _$ssr(_tmpl$16, _$ssrAttribute("data-today", isToday ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-outside", !sameMonth ? "true" : _$escape(undefined, true), false), _$escape(calendar.formatDayNumber(day, dateConfig())));
|
|
867
861
|
},
|
|
868
862
|
children: dayHref => _$createComponent(CalendarNavigationLink, {
|
|
869
863
|
get owner() {
|
|
@@ -877,7 +871,7 @@ const MonthPickerView = props => {
|
|
|
877
871
|
class: "k2b-calendar-month__day-number",
|
|
878
872
|
"data-today": isToday ? "true" : undefined,
|
|
879
873
|
"data-outside": !sameMonth ? "true" : undefined,
|
|
880
|
-
"aria-label":
|
|
874
|
+
"aria-label": calendarMessages().openDate({
|
|
881
875
|
label: dayLabel
|
|
882
876
|
})
|
|
883
877
|
};
|
|
@@ -888,18 +882,18 @@ const MonthPickerView = props => {
|
|
|
888
882
|
})
|
|
889
883
|
})), _$escape(_$createComponent(Show, {
|
|
890
884
|
when: dayBadge,
|
|
891
|
-
children: badge => _$ssr(_tmpl$
|
|
885
|
+
children: badge => _$ssr(_tmpl$17, _$escape(_$createComponent(Show, {
|
|
892
886
|
get when() {
|
|
893
887
|
return badge().icon;
|
|
894
888
|
},
|
|
895
|
-
children: icon => _$ssr(_tmpl$
|
|
889
|
+
children: icon => _$ssr(_tmpl$2, `k2b-calendar-month__badge-icon ti ti-${_$escape(icon(), true)}`)
|
|
896
890
|
})), _$escape(badge().label))
|
|
897
891
|
})), _$escape(_$createComponent(Show, {
|
|
898
892
|
get when() {
|
|
899
893
|
return eventStack().preview;
|
|
900
894
|
},
|
|
901
895
|
get children() {
|
|
902
|
-
return _$ssr(_tmpl$
|
|
896
|
+
return _$ssr(_tmpl$14, _$escape(props.events.find(event => event.id === eventStack().preview.id)?.title ?? calendarMessages().moveEvent));
|
|
903
897
|
}
|
|
904
898
|
})), _$escape(_$createComponent(For, {
|
|
905
899
|
get each() {
|
|
@@ -945,7 +939,7 @@ const MonthPickerView = props => {
|
|
|
945
939
|
get each() {
|
|
946
940
|
return events.slice(0, 4);
|
|
947
941
|
},
|
|
948
|
-
children: event => _$ssr(_tmpl$
|
|
942
|
+
children: event => _$ssr(_tmpl$18, _$ssrAttribute("data-color", event.colorHex ? _$escape(undefined, true) : _$escape(event.color ?? "blue", true), false), _$ssrStyle(event.colorHex ? {
|
|
949
943
|
"background-color": event.colorHex
|
|
950
944
|
} : undefined))
|
|
951
945
|
})));
|
|
@@ -956,6 +950,8 @@ const MonthPickerView = props => {
|
|
|
956
950
|
|
|
957
951
|
/** One entry of the month grid: its whole range, and the days it covers as `YYYY-MM-DD` keys. */
|
|
958
952
|
|
|
953
|
+
/** What the calendar's controller asks of the month view. */
|
|
954
|
+
|
|
959
955
|
/** Lane height and gap of the month entries, in rem; the stylesheet reads both from the grid's custom properties. */
|
|
960
956
|
const MONTH_LANE_REM = 1.25;
|
|
961
957
|
const MONTH_LANE_GAP_REM = 0.125;
|
|
@@ -1003,34 +999,6 @@ const monthItems = events => {
|
|
|
1003
999
|
for (const item of items.values()) item.bar = item.firstKey !== item.lastKey || Boolean(item.event.allDay && item.event.display !== "marker");
|
|
1004
1000
|
return [...items.values()].sort((left, right) => Number(right.bar) - Number(left.bar) || left.event.sourceStartDate.getTime() - right.event.sourceStartDate.getTime() || left.event.title.localeCompare(right.event.title));
|
|
1005
1001
|
};
|
|
1006
|
-
|
|
1007
|
-
/** Places a calendar popover below its anchor when there is room and above it otherwise, inside the viewport. */
|
|
1008
|
-
const placeCalendarPopover = (anchor, popover) => {
|
|
1009
|
-
const margin = 8;
|
|
1010
|
-
const gap = 4;
|
|
1011
|
-
const rect = anchor.getBoundingClientRect();
|
|
1012
|
-
const width = Math.min(popover.offsetWidth || 288, window.innerWidth - margin * 2);
|
|
1013
|
-
const height = popover.offsetHeight;
|
|
1014
|
-
const left = Math.max(margin, Math.min(rect.left, window.innerWidth - width - margin));
|
|
1015
|
-
const roomBelow = window.innerHeight - rect.bottom - gap - margin;
|
|
1016
|
-
const above = height > roomBelow && rect.top - gap - margin > roomBelow;
|
|
1017
|
-
const top = above ? Math.max(margin, rect.top - height - gap) : Math.min(rect.bottom + gap, window.innerHeight - height - margin);
|
|
1018
|
-
popover.style.left = `${left}px`;
|
|
1019
|
-
popover.style.top = `${Math.max(margin, top)}px`;
|
|
1020
|
-
};
|
|
1021
|
-
let measureContext;
|
|
1022
|
-
/** The width of a text in a font, from a canvas, so a bar can tell whether its title leaves room for a date hint. */
|
|
1023
|
-
const textWidth = (text, font) => {
|
|
1024
|
-
measureContext ??= typeof document === "undefined" ? null : document.createElement("canvas").getContext("2d");
|
|
1025
|
-
if (!measureContext) return Number.POSITIVE_INFINITY;
|
|
1026
|
-
measureContext.font = font;
|
|
1027
|
-
return measureContext.measureText(text).width;
|
|
1028
|
-
};
|
|
1029
|
-
|
|
1030
|
-
/** Follows a calendar link the way the calendar's own links do: through the host's navigation when it has one. */
|
|
1031
|
-
const followCalendarHref = (owner, href) => {
|
|
1032
|
-
if (owner.onNavigateHref) owner.onNavigateHref(href);else window.location.assign(href);
|
|
1033
|
-
};
|
|
1034
1002
|
const PRINTABLE_KEY = /^.$/u;
|
|
1035
1003
|
|
|
1036
1004
|
/**
|
|
@@ -1040,7 +1008,6 @@ const PRINTABLE_KEY = /^.$/u;
|
|
|
1040
1008
|
* cell shows as many entries as its height holds.
|
|
1041
1009
|
*/
|
|
1042
1010
|
const MonthView = props => {
|
|
1043
|
-
const messages = useUiMessages();
|
|
1044
1011
|
const calendarMessages = useCalendarMessages();
|
|
1045
1012
|
const dateConfig = createMemo(() => ownerDateConfig(props.owner));
|
|
1046
1013
|
// The shown month and its grid change only with the month, so a refresh of the same month keeps every cell and its
|
|
@@ -1171,7 +1138,7 @@ const MonthView = props => {
|
|
|
1171
1138
|
const itemLabel = item => {
|
|
1172
1139
|
if (item.firstKey === item.lastKey) return undefined;
|
|
1173
1140
|
const allDay = Boolean(item.event.allDay);
|
|
1174
|
-
return
|
|
1141
|
+
return calendarMessages().calendarEventTime({
|
|
1175
1142
|
title: item.event.title,
|
|
1176
1143
|
start: monthDayLabel(allDay ? parseKey(item.firstKey) : item.event.sourceStartDate, !allDay),
|
|
1177
1144
|
end: monthDayLabel(allDay ? parseKey(item.lastKey) : item.event.sourceEndDate, !allDay)
|
|
@@ -1264,6 +1231,25 @@ const MonthView = props => {
|
|
|
1264
1231
|
})) return;
|
|
1265
1232
|
if (props.owner.onSlotActivate) props.owner.onSlotActivate(rangeOf(range));
|
|
1266
1233
|
};
|
|
1234
|
+
onMount(() => props.register?.({
|
|
1235
|
+
quickCreate: create => {
|
|
1236
|
+
const range = selection() ?? {
|
|
1237
|
+
first: rovingKey(),
|
|
1238
|
+
last: rovingKey()
|
|
1239
|
+
};
|
|
1240
|
+
select(range.first, range.last);
|
|
1241
|
+
if (!openCreate(range, {
|
|
1242
|
+
active: true,
|
|
1243
|
+
create
|
|
1244
|
+
})) props.owner.onSlotActivate?.(rangeOf(range));
|
|
1245
|
+
},
|
|
1246
|
+
createTarget: () => rangeOf(selection() ?? {
|
|
1247
|
+
first: rovingKey(),
|
|
1248
|
+
last: rovingKey()
|
|
1249
|
+
}),
|
|
1250
|
+
typing: () => popover()?.kind === "create" && !createActive()
|
|
1251
|
+
}));
|
|
1252
|
+
onCleanup(() => props.register?.(null));
|
|
1267
1253
|
const openDayList = key => {
|
|
1268
1254
|
const anchor = cells.get(key);
|
|
1269
1255
|
if (!anchor) return;
|
|
@@ -1584,18 +1570,18 @@ const MonthView = props => {
|
|
|
1584
1570
|
if (linkedItem() === item.key) setLinkedItem("");
|
|
1585
1571
|
}
|
|
1586
1572
|
});
|
|
1587
|
-
const grid = () => _$ssr(_tmpl$
|
|
1573
|
+
const grid = () => _$ssr(_tmpl$20, _$ssrAttribute("aria-label", _$escape(formatMonth(props.date, dateConfig()), true), false), _$ssrStyleProperty("grid-template-rows:", `auto repeat(${_$escape(weeks().length, true)}, minmax(5rem, 1fr))`) + _$ssrStyleProperty(";--k2b-calendar-lane:", "1.25rem") + _$ssrStyleProperty(";--k2b-calendar-lane-gap:", "0.125rem"), _$ssrAttribute("data-week-numbers", props.owner.withWeekNumbers ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
|
|
1588
1574
|
get when() {
|
|
1589
1575
|
return props.owner.withWeekNumbers;
|
|
1590
1576
|
},
|
|
1591
1577
|
get children() {
|
|
1592
|
-
return _$ssr(_tmpl$
|
|
1578
|
+
return _$ssr(_tmpl$19, _$escape(calendarMessages().weekShort));
|
|
1593
1579
|
}
|
|
1594
1580
|
})), _$escape(_$createComponent(For, {
|
|
1595
1581
|
get each() {
|
|
1596
1582
|
return weekdays();
|
|
1597
1583
|
},
|
|
1598
|
-
children: (day, index) => _$ssr(_tmpl$
|
|
1584
|
+
children: (day, index) => _$ssr(_tmpl$21, _$ssrAttribute("data-weekend", index() > 4 ? "true" : _$escape(undefined, true), false), _$escape(day))
|
|
1599
1585
|
})), _$escape(_$createComponent(For, {
|
|
1600
1586
|
get each() {
|
|
1601
1587
|
return weeks();
|
|
@@ -1607,12 +1593,12 @@ const MonthView = props => {
|
|
|
1607
1593
|
}, capacities()[weekIndex()] ?? MONTH_DEFAULT_LANES));
|
|
1608
1594
|
const weekHref = () => viewHref(week[0].key, "week");
|
|
1609
1595
|
const weekNumber = () => zonedWeekNumber(week[0].day, dateConfig());
|
|
1610
|
-
return _$ssr(_tmpl$
|
|
1596
|
+
return _$ssr(_tmpl$23, _$ssrAttribute("data-week-numbers", props.owner.withWeekNumbers ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
|
|
1611
1597
|
get when() {
|
|
1612
1598
|
return props.owner.withWeekNumbers;
|
|
1613
1599
|
},
|
|
1614
1600
|
get children() {
|
|
1615
|
-
return _$ssr(_tmpl$
|
|
1601
|
+
return _$ssr(_tmpl$22, _$escape(_$createComponent(Show, {
|
|
1616
1602
|
get when() {
|
|
1617
1603
|
return weekHref();
|
|
1618
1604
|
},
|
|
@@ -1625,7 +1611,7 @@ const MonthView = props => {
|
|
|
1625
1611
|
return weekNumber();
|
|
1626
1612
|
},
|
|
1627
1613
|
get children() {
|
|
1628
|
-
return _$ssr(_tmpl$
|
|
1614
|
+
return _$ssr(_tmpl$24, _$ssrAttribute("title", _$escape(calendarMessages().calendarOpenWeekNumber({
|
|
1629
1615
|
week: weekNumber()
|
|
1630
1616
|
}), true), false) + _$ssrAttribute("aria-label", _$escape(calendarMessages().calendarOpenWeekNumber({
|
|
1631
1617
|
week: weekNumber()
|
|
@@ -1673,13 +1659,13 @@ const MonthView = props => {
|
|
|
1673
1659
|
shown: [],
|
|
1674
1660
|
hidden: 0
|
|
1675
1661
|
};
|
|
1676
|
-
return _$ssr(_tmpl$
|
|
1662
|
+
return _$ssr(_tmpl$26, _$ssrAttribute("tabindex", rovingKey() === key ? 0 : -1, false) + _$ssrAttribute("aria-label", _$escape(label, true), false) + _$ssrAttribute("aria-selected", within(selection(), key) ? "true" : "false", false) + _$ssrAttribute("aria-current", key === todayKey() ? "date" : _$escape(undefined, true), false) + _$ssrAttribute("data-calendar-day-key", _$escape(key, true), false) + _$ssrAttribute("data-outside", !sameMonth ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-weekend", column() > 4 ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-past", key < todayKey() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-selected", _$escape(selectionPart(key), true), false) + _$ssrAttribute("data-drop-preview", within(dropRange(), key) ? "true" : _$escape(undefined, true), false), _$ssrAttribute("data-today", key === todayKey() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-outside", !sameMonth ? "true" : _$escape(undefined, true), false), _$escape(calendar.formatDayNumber(day, dateConfig())), _$escape(_$createComponent(Show, {
|
|
1677
1663
|
when: dayBadge,
|
|
1678
|
-
children: badge => _$ssr(_tmpl$
|
|
1664
|
+
children: badge => _$ssr(_tmpl$17, _$escape(_$createComponent(Show, {
|
|
1679
1665
|
get when() {
|
|
1680
1666
|
return badge().icon;
|
|
1681
1667
|
},
|
|
1682
|
-
children: icon => _$ssr(_tmpl$
|
|
1668
|
+
children: icon => _$ssr(_tmpl$2, `k2b-calendar-month__badge-icon ti ti-${_$escape(icon(), true)}`)
|
|
1683
1669
|
})), _$escape(badge().label))
|
|
1684
1670
|
})), _$escape(_$createComponent(For, {
|
|
1685
1671
|
get each() {
|
|
@@ -1754,7 +1740,7 @@ const MonthView = props => {
|
|
|
1754
1740
|
get each() {
|
|
1755
1741
|
return cell().shown;
|
|
1756
1742
|
},
|
|
1757
|
-
children: (item, index) => _$ssr(_tmpl$
|
|
1743
|
+
children: (item, index) => _$ssr(_tmpl$27, _$ssrStyleProperty("--k2b-calendar-span:", "1") + _$ssrStyleProperty(";--k2b-calendar-row:", _$escape(String(cell().top + index()), true)), _$escape(_$createComponent(EventChip, {
|
|
1758
1744
|
get event() {
|
|
1759
1745
|
return item.event;
|
|
1760
1746
|
},
|
|
@@ -1780,7 +1766,7 @@ const MonthView = props => {
|
|
|
1780
1766
|
return cell().hidden > 0;
|
|
1781
1767
|
},
|
|
1782
1768
|
get children() {
|
|
1783
|
-
return _$ssr(_tmpl$
|
|
1769
|
+
return _$ssr(_tmpl$25, _$ssrStyleProperty("--k2b-calendar-row:", _$escape(String(cell().top + cell().shown.length), true)), _$ssrAttribute("aria-label", _$escape(calendarMessages().calendarMoreEventsOn({
|
|
1784
1770
|
count: cell().hidden,
|
|
1785
1771
|
label
|
|
1786
1772
|
}), true), false), _$ssrAttribute("aria-expanded", (() => {
|
|
@@ -1800,19 +1786,19 @@ const MonthView = props => {
|
|
|
1800
1786
|
const href = viewHref(dayKey, "day");
|
|
1801
1787
|
// Read where it renders, so a refresh while the list is open updates it as it does the grid.
|
|
1802
1788
|
const entries = () => dayEntries(dayKey);
|
|
1803
|
-
return _$ssr(_tmpl$
|
|
1789
|
+
return _$ssr(_tmpl$30, _$escape(dayLabel(day)), _$escape(_$createComponent(Show, {
|
|
1804
1790
|
get when() {
|
|
1805
1791
|
return entries().length > 0;
|
|
1806
1792
|
},
|
|
1807
1793
|
get fallback() {
|
|
1808
|
-
return _$ssr(_tmpl$
|
|
1794
|
+
return _$ssr(_tmpl$31, _$escape(calendarMessages().calendarNothingPlanned));
|
|
1809
1795
|
},
|
|
1810
1796
|
get children() {
|
|
1811
|
-
return _$ssr(_tmpl$
|
|
1797
|
+
return _$ssr(_tmpl$28, _$escape(_$createComponent(For, {
|
|
1812
1798
|
get each() {
|
|
1813
1799
|
return entries();
|
|
1814
1800
|
},
|
|
1815
|
-
children: item => _$ssr(_tmpl$
|
|
1801
|
+
children: item => _$ssr(_tmpl$32, _$escape(_$createComponent(EventChip, {
|
|
1816
1802
|
get event() {
|
|
1817
1803
|
return item.event;
|
|
1818
1804
|
},
|
|
@@ -1849,7 +1835,7 @@ const MonthView = props => {
|
|
|
1849
1835
|
size: "sm",
|
|
1850
1836
|
onClick: () => openView(dayKey, "day"),
|
|
1851
1837
|
get children() {
|
|
1852
|
-
return [_$ssr(_tmpl$
|
|
1838
|
+
return [_$ssr(_tmpl$33), calendarMessages().calendarOpenDay];
|
|
1853
1839
|
}
|
|
1854
1840
|
});
|
|
1855
1841
|
}
|
|
@@ -1868,7 +1854,7 @@ const MonthView = props => {
|
|
|
1868
1854
|
"data-size": "sm"
|
|
1869
1855
|
},
|
|
1870
1856
|
get children() {
|
|
1871
|
-
return [_$ssr(_tmpl$
|
|
1857
|
+
return [_$ssr(_tmpl$33), calendarMessages().calendarOpenDay];
|
|
1872
1858
|
}
|
|
1873
1859
|
})
|
|
1874
1860
|
})), _$escape(_$createComponent(Show, {
|
|
@@ -1890,7 +1876,7 @@ const MonthView = props => {
|
|
|
1890
1876
|
});
|
|
1891
1877
|
},
|
|
1892
1878
|
get children() {
|
|
1893
|
-
return [_$ssr(_tmpl$
|
|
1879
|
+
return [_$ssr(_tmpl$29), calendarMessages().calendarNewEvent];
|
|
1894
1880
|
}
|
|
1895
1881
|
});
|
|
1896
1882
|
}
|
|
@@ -1919,7 +1905,7 @@ const MonthView = props => {
|
|
|
1919
1905
|
}
|
|
1920
1906
|
});
|
|
1921
1907
|
}
|
|
1922
|
-
}), _$ssr(_tmpl$
|
|
1908
|
+
}), _$ssr(_tmpl$34, _$ssrAttribute("aria-label", (() => {
|
|
1923
1909
|
const current = popover();
|
|
1924
1910
|
if (current?.kind === "day") return dayLabel(parseKey(current.dayKey));
|
|
1925
1911
|
return _$escape(calendarMessages().calendarQuickCreate, true);
|
|
@@ -1937,7 +1923,7 @@ const MonthView = props => {
|
|
|
1937
1923
|
})))];
|
|
1938
1924
|
};
|
|
1939
1925
|
const TimeGridView = props => {
|
|
1940
|
-
const
|
|
1926
|
+
const calendarMessages = useCalendarMessages();
|
|
1941
1927
|
const dateConfig = createMemo(() => ownerDateConfig(props.owner));
|
|
1942
1928
|
const gridStartHour = () => props.owner.visibleStartHour ?? 0;
|
|
1943
1929
|
const gridEndHour = () => props.owner.visibleEndHour ?? 23;
|
|
@@ -2108,10 +2094,12 @@ const TimeGridView = props => {
|
|
|
2108
2094
|
}
|
|
2109
2095
|
return [...groups.values()];
|
|
2110
2096
|
};
|
|
2097
|
+
// 12 rem per lane. The 40 rem grid is wider than one or two lanes, so only
|
|
2098
|
+
// three or more make the day scroll, and one lane fits beside a tablet drawer.
|
|
2111
2099
|
const dayColumnMinWidth = layouts => {
|
|
2112
2100
|
if (!isDayView()) return undefined;
|
|
2113
2101
|
const lanes = Math.max(1, ...layouts.map(layout => layout.lanes));
|
|
2114
|
-
return `${
|
|
2102
|
+
return `${lanes * 12}rem`;
|
|
2115
2103
|
};
|
|
2116
2104
|
const laneStyle = layoutItem => {
|
|
2117
2105
|
if (isDayView()) {
|
|
@@ -2147,7 +2135,7 @@ const TimeGridView = props => {
|
|
|
2147
2135
|
});
|
|
2148
2136
|
});
|
|
2149
2137
|
});
|
|
2150
|
-
return _$ssr(_tmpl$
|
|
2138
|
+
return _$ssr(_tmpl$36, _$ssrAttribute("data-view", isDayView() ? "day" : "week", false), _$ssrStyleProperty("grid-template-columns:", `4rem repeat(${_$escape(props.days.length, true)}, minmax(0, 1fr))`), _$escape(_$createComponent(For, {
|
|
2151
2139
|
get each() {
|
|
2152
2140
|
return props.days;
|
|
2153
2141
|
},
|
|
@@ -2165,13 +2153,13 @@ const TimeGridView = props => {
|
|
|
2165
2153
|
class: "k2b-calendar-time-grid__day"
|
|
2166
2154
|
},
|
|
2167
2155
|
get children() {
|
|
2168
|
-
return [_$ssr(_tmpl$
|
|
2156
|
+
return [_$ssr(_tmpl$37, _$ssrAttribute("data-today", today() ? "true" : _$escape(undefined, true), false), _$escape(formatDay(day, dateConfig()))), _$createComponent(Show, {
|
|
2169
2157
|
when: dayBadge,
|
|
2170
|
-
children: badge => _$ssr(_tmpl$
|
|
2158
|
+
children: badge => _$ssr(_tmpl$38, _$escape(_$createComponent(Show, {
|
|
2171
2159
|
get when() {
|
|
2172
2160
|
return badge().icon;
|
|
2173
2161
|
},
|
|
2174
|
-
children: icon => _$ssr(_tmpl$
|
|
2162
|
+
children: icon => _$ssr(_tmpl$2, `k2b-calendar-time-grid__badge-icon ti ti-${_$escape(icon(), true)}`)
|
|
2175
2163
|
})), _$escape(badge().label))
|
|
2176
2164
|
})];
|
|
2177
2165
|
}
|
|
@@ -2182,7 +2170,7 @@ const TimeGridView = props => {
|
|
|
2182
2170
|
return !props.owner.hideAllDay;
|
|
2183
2171
|
},
|
|
2184
2172
|
get children() {
|
|
2185
|
-
return _$ssr(_tmpl$
|
|
2173
|
+
return _$ssr(_tmpl$35, _$ssrStyleProperty("grid-template-columns:", `4rem repeat(${_$escape(props.days.length, true)}, minmax(0, 1fr))`) + _$ssrStyleProperty(";max-height:", `${_$escape(props.owner.allDayMaxHeightRem ?? 7, true)}rem`), _$escape(props.labels.allDay), _$escape(_$createComponent(For, {
|
|
2186
2174
|
get each() {
|
|
2187
2175
|
return props.days;
|
|
2188
2176
|
},
|
|
@@ -2206,9 +2194,9 @@ const TimeGridView = props => {
|
|
|
2206
2194
|
end: calendar.addDays(start, 1, dateConfig()),
|
|
2207
2195
|
allDay: true
|
|
2208
2196
|
};
|
|
2209
|
-
}, () => performance.now() < suppressSlotClickUntil)), _$ssr(_tmpl$
|
|
2197
|
+
}, () => performance.now() < suppressSlotClickUntil)), _$ssr(_tmpl$39, _$escape(_$createComponent(For, {
|
|
2210
2198
|
each: previewAllDay,
|
|
2211
|
-
children: event => _$ssr(_tmpl$
|
|
2199
|
+
children: event => _$ssr(_tmpl$14, _$escape(event.title))
|
|
2212
2200
|
})), _$escape(_$createComponent(For, {
|
|
2213
2201
|
get each() {
|
|
2214
2202
|
return allDay();
|
|
@@ -2237,7 +2225,7 @@ const TimeGridView = props => {
|
|
|
2237
2225
|
get each() {
|
|
2238
2226
|
return hours();
|
|
2239
2227
|
},
|
|
2240
|
-
children: hour => _$ssr(_tmpl$
|
|
2228
|
+
children: hour => _$ssr(_tmpl$40, _$ssrAttribute("data-outside-business", hour < businessStartHour() || hour > businessEndHour() ? "true" : _$escape(undefined, true), false), _$escape(`${hour}`.padStart(2, "0")))
|
|
2241
2229
|
})), _$escape(_$createComponent(For, {
|
|
2242
2230
|
get each() {
|
|
2243
2231
|
return props.days;
|
|
@@ -2245,12 +2233,12 @@ const TimeGridView = props => {
|
|
|
2245
2233
|
children: day => {
|
|
2246
2234
|
const dayKey = calendar.formatDateKey(day, dateConfig());
|
|
2247
2235
|
const layouts = createMemo(() => timedEventLayouts(eventsByDay().get(dayKey)?.timed ?? []));
|
|
2248
|
-
return _$ssr(_tmpl$
|
|
2236
|
+
return _$ssr(_tmpl$42, _$ssrStyleProperty("min-width:", _$escape(dayColumnMinWidth(layouts()), true)) + _$ssrStyleProperty(";grid-template-rows:", `repeat(${_$escape(hours().length, true)}, minmax(4rem, 1fr))`), _$escape(_$createComponent(Show, {
|
|
2249
2237
|
get when() {
|
|
2250
2238
|
return currentTimeLine(day) !== null;
|
|
2251
2239
|
},
|
|
2252
2240
|
get children() {
|
|
2253
|
-
return _$ssr(_tmpl$
|
|
2241
|
+
return _$ssr(_tmpl$41, _$ssrStyleProperty("top:", `${_$escape(currentTimeLine(day) ?? 0, true)}%`));
|
|
2254
2242
|
}
|
|
2255
2243
|
})), _$escape(_$createComponent(For, {
|
|
2256
2244
|
get each() {
|
|
@@ -2279,12 +2267,12 @@ const TimeGridView = props => {
|
|
|
2279
2267
|
children: event => {
|
|
2280
2268
|
const layout = eventLayout(event);
|
|
2281
2269
|
const short = event.endDate.getTime() - event.startDate.getTime() < 60 * 60_000;
|
|
2282
|
-
return _$ssr(_tmpl$
|
|
2270
|
+
return _$ssr(_tmpl$44, _$ssrAttribute("data-short", short ? "true" : _$escape(undefined, true), false), _$ssrStyleProperty("top:", `${_$escape(layout.top, true)}%`) + _$ssrStyleProperty(";height:", `${_$escape(layout.height, true)}%`), _$escape(_$createComponent(Show, {
|
|
2283
2271
|
get when() {
|
|
2284
2272
|
return event.title;
|
|
2285
2273
|
},
|
|
2286
2274
|
get children() {
|
|
2287
|
-
return _$ssr(_tmpl$
|
|
2275
|
+
return _$ssr(_tmpl$43, _$escape(event.title));
|
|
2288
2276
|
}
|
|
2289
2277
|
})), _$escape(formatTime(event.startDate, dateConfig())), _$escape(formatTime(event.endDate, dateConfig())));
|
|
2290
2278
|
}
|
|
@@ -2330,7 +2318,7 @@ const TimeGridView = props => {
|
|
|
2330
2318
|
onCancel: clearInteraction
|
|
2331
2319
|
});
|
|
2332
2320
|
};
|
|
2333
|
-
return _$ssr(_tmpl$
|
|
2321
|
+
return _$ssr(_tmpl$46, _$ssrStyleProperty("top:", `${_$escape(layout.top, true)}%`) + _$ssrStyleProperty(";height:", `${_$escape(layout.height, true)}%`) + _$ssrStyleProperty(";left:", _$escape(position.left, true)) + _$ssrStyleProperty(";width:", _$escape(position.width, true)) + _$ssrStyleProperty(";z-index:", _$escape(String(20 + layoutItem.lane), true)), _$escape(_$createComponent(EventChip, {
|
|
2334
2322
|
event: event,
|
|
2335
2323
|
get owner() {
|
|
2336
2324
|
return props.owner;
|
|
@@ -2350,7 +2338,7 @@ const TimeGridView = props => {
|
|
|
2350
2338
|
return props.owner.onEventResize;
|
|
2351
2339
|
},
|
|
2352
2340
|
get children() {
|
|
2353
|
-
return _$ssr(_tmpl$
|
|
2341
|
+
return _$ssr(_tmpl$45, _$ssrAttribute("aria-label", _$escape(calendarMessages().resizeEvent, true), false));
|
|
2354
2342
|
}
|
|
2355
2343
|
})));
|
|
2356
2344
|
}
|
|
@@ -2362,14 +2350,14 @@ const TimeGridView = props => {
|
|
|
2362
2350
|
const layout = timeRangeLayout(overflow.groupStartDate, overflow.groupEndDate);
|
|
2363
2351
|
const key = `${dayKey}-${overflow.groupId}`;
|
|
2364
2352
|
const hiddenTitle = () => overflow.hiddenEvents.map(event => `${formatTime(event.startDate, dateConfig())} ${event.title}`).join("\n");
|
|
2365
|
-
return [_$ssr(_tmpl$
|
|
2353
|
+
return [_$ssr(_tmpl$47, _$ssrStyleProperty("top:", `${_$escape(layout.top, true)}%`) + _$ssrStyleProperty(";height:", `${_$escape(layout.height, true)}%`), _$ssrAttribute("title", _$escape(hiddenTitle(), true), false) + _$ssrAttribute("aria-label", _$escape(calendarMessages().hiddenOverlappingEvents({
|
|
2366
2354
|
count: overflow.hiddenEvents.length
|
|
2367
2355
|
}), true), false), _$escape(overflow.hiddenEvents.length)), _$createComponent(Show, {
|
|
2368
2356
|
get when() {
|
|
2369
2357
|
return expandedOverflow() === key;
|
|
2370
2358
|
},
|
|
2371
2359
|
get children() {
|
|
2372
|
-
return _$ssr(_tmpl$
|
|
2360
|
+
return _$ssr(_tmpl$48, _$ssrStyleProperty("top:", `${_$escape(layout.top, true)}%`), _$escape(formatTime(overflow.groupStartDate, dateConfig())), _$escape(formatTime(overflow.groupEndDate, dateConfig())), _$escape(_$createComponent(For, {
|
|
2373
2361
|
get each() {
|
|
2374
2362
|
return overflow.hiddenEvents;
|
|
2375
2363
|
},
|
|
@@ -2428,11 +2416,11 @@ const YearView = props => {
|
|
|
2428
2416
|
};
|
|
2429
2417
|
});
|
|
2430
2418
|
});
|
|
2431
|
-
return _$ssr(_tmpl$
|
|
2419
|
+
return _$ssr(_tmpl$49, _$escape(_$createComponent(For, {
|
|
2432
2420
|
get each() {
|
|
2433
2421
|
return months();
|
|
2434
2422
|
},
|
|
2435
|
-
children: month => _$ssr(_tmpl$
|
|
2423
|
+
children: month => _$ssr(_tmpl$50, _$escape(month.label), _$escape(_$createComponent(For, {
|
|
2436
2424
|
get each() {
|
|
2437
2425
|
return month.days;
|
|
2438
2426
|
},
|
|
@@ -2455,7 +2443,7 @@ const YearView = props => {
|
|
|
2455
2443
|
get when() {
|
|
2456
2444
|
return day.events[0];
|
|
2457
2445
|
},
|
|
2458
|
-
children: event => _$ssr(_tmpl$
|
|
2446
|
+
children: event => _$ssr(_tmpl$51, _$ssrAttribute("data-color", event().colorHex ? _$escape(undefined, true) : _$escape(event().color ?? "blue", true), false) + _$ssrAttribute("data-today", day.isToday ? "true" : _$escape(undefined, true), false), _$ssrStyle(event().colorHex ? {
|
|
2459
2447
|
"background-color": day.isToday ? "white" : event().colorHex
|
|
2460
2448
|
} : undefined))
|
|
2461
2449
|
})];
|
|
@@ -2468,7 +2456,7 @@ const MobileMonthView = props => {
|
|
|
2468
2456
|
const dateConfig = createMemo(() => ownerDateConfig(props.owner));
|
|
2469
2457
|
const selectedDateKey = createMemo(() => calendar.formatDateKey(props.selectedDate, dateConfig()));
|
|
2470
2458
|
const selectedEvents = createMemo(() => props.events.filter(event => event.dayKey === selectedDateKey()));
|
|
2471
|
-
return _$ssr(_tmpl$
|
|
2459
|
+
return _$ssr(_tmpl$53, _$escape(_$createComponent(MonthPickerView, {
|
|
2472
2460
|
get owner() {
|
|
2473
2461
|
return {
|
|
2474
2462
|
...props.owner,
|
|
@@ -2498,10 +2486,10 @@ const MobileMonthView = props => {
|
|
|
2498
2486
|
return selectedEvents().length > 0;
|
|
2499
2487
|
},
|
|
2500
2488
|
get fallback() {
|
|
2501
|
-
return _$ssr(_tmpl$
|
|
2489
|
+
return _$ssr(_tmpl$54, _$escape(props.labels.noEvents));
|
|
2502
2490
|
},
|
|
2503
2491
|
get children() {
|
|
2504
|
-
return _$ssr(_tmpl$
|
|
2492
|
+
return _$ssr(_tmpl$52, _$escape(_$createComponent(For, {
|
|
2505
2493
|
get each() {
|
|
2506
2494
|
return selectedEvents();
|
|
2507
2495
|
},
|
|
@@ -2518,9 +2506,10 @@ const MobileMonthView = props => {
|
|
|
2518
2506
|
}
|
|
2519
2507
|
})));
|
|
2520
2508
|
};
|
|
2521
|
-
const CalendarBody = props => _$ssr(_tmpl$
|
|
2509
|
+
const CalendarBody = props => _$ssr(_tmpl$55, _$escape(props.children));
|
|
2522
2510
|
const CalendarRoot = props => {
|
|
2523
2511
|
const messages = useUiMessages();
|
|
2512
|
+
const calendarMessages = useCalendarMessages();
|
|
2524
2513
|
// Subviews derive their date config from the owner props, so the inherited
|
|
2525
2514
|
// render locale is merged here once; an explicit dateConfig.locale wins.
|
|
2526
2515
|
const localizedConfig = useDateConfigLocale(() => props.dateConfig);
|
|
@@ -2549,7 +2538,7 @@ const CalendarRoot = props => {
|
|
|
2549
2538
|
month: messages().month,
|
|
2550
2539
|
year: messages().year,
|
|
2551
2540
|
allDay: messages().allDay,
|
|
2552
|
-
noEvents:
|
|
2541
|
+
noEvents: calendarMessages().noEvents,
|
|
2553
2542
|
previous: messages().previous,
|
|
2554
2543
|
next: messages().next,
|
|
2555
2544
|
...props.labels
|
|
@@ -2567,7 +2556,181 @@ const CalendarRoot = props => {
|
|
|
2567
2556
|
document.removeEventListener("visibilitychange", updateNow);
|
|
2568
2557
|
});
|
|
2569
2558
|
});
|
|
2570
|
-
|
|
2559
|
+
|
|
2560
|
+
// The day and week views with `dayHours` scroll through their days; the header and the commands ask them first.
|
|
2561
|
+
const [timeView, setTimeView] = createSignal(null);
|
|
2562
|
+
const [monthCreate, setMonthCreate] = createSignal(null);
|
|
2563
|
+
const timeMode = () => Boolean(props.dayHours) && (view() === "day" || view() === "week");
|
|
2564
|
+
const parseKey = key => calendar.parseCalendarDate(key, dateConfig());
|
|
2565
|
+
/** The first shown day of a day or week view, or the selected day of the month view, for the other views. */
|
|
2566
|
+
const shownDay = () => {
|
|
2567
|
+
const first = timeView()?.visibleKeys().first;
|
|
2568
|
+
if (first) return parseKey(first);
|
|
2569
|
+
return view() === "month" ? focusDay() : null;
|
|
2570
|
+
};
|
|
2571
|
+
const go = (target, nextView) => {
|
|
2572
|
+
const href = props.getDateHref?.(target, nextView);
|
|
2573
|
+
if (href) followCalendarHref(owner, href);else openViewAt(props, target, nextView);
|
|
2574
|
+
};
|
|
2575
|
+
const step = direction => {
|
|
2576
|
+
if (timeView()?.step(direction)) return;
|
|
2577
|
+
go(adjacentCalendarDate(shownDay() ?? date(), view(), direction, dateConfig()), view());
|
|
2578
|
+
};
|
|
2579
|
+
const goToday = () => {
|
|
2580
|
+
if (timeView()?.today()) return;
|
|
2581
|
+
go(calendar.today(dateConfig()), view());
|
|
2582
|
+
};
|
|
2583
|
+
const goView = nextView => {
|
|
2584
|
+
const day = shownDay();
|
|
2585
|
+
if (day) {
|
|
2586
|
+
go(day, nextView);
|
|
2587
|
+
return;
|
|
2588
|
+
}
|
|
2589
|
+
const href = props.getViewHref?.(nextView);
|
|
2590
|
+
if (href) followCalendarHref(owner, href);else props.onViewChange?.(nextView);
|
|
2591
|
+
};
|
|
2592
|
+
const goToKey = key => {
|
|
2593
|
+
if (timeView()?.goTo(key)) return;
|
|
2594
|
+
go(parseKey(key), view());
|
|
2595
|
+
};
|
|
2596
|
+
const openGoTo = () => void openCalendarGoTo({
|
|
2597
|
+
messages: calendarMessages(),
|
|
2598
|
+
today: calendar.formatDateKey(new Date(), dateConfig()),
|
|
2599
|
+
describe: key => parseKey(key).toLocaleDateString(dateConfig().locale ?? "en", {
|
|
2600
|
+
weekday: "long",
|
|
2601
|
+
day: "numeric",
|
|
2602
|
+
month: "long",
|
|
2603
|
+
year: "numeric",
|
|
2604
|
+
timeZone: dateConfig().timeZone
|
|
2605
|
+
}),
|
|
2606
|
+
onGo: goToKey
|
|
2607
|
+
});
|
|
2608
|
+
const ownCommands = createMemo(() => {
|
|
2609
|
+
const text = calendarMessages();
|
|
2610
|
+
const available = ["day", "week", "month", "year"].filter(option => !props.views || props.views.includes(option));
|
|
2611
|
+
const viewLabels = {
|
|
2612
|
+
day: mergedLabels().day,
|
|
2613
|
+
week: mergedLabels().week,
|
|
2614
|
+
month: mergedLabels().month,
|
|
2615
|
+
year: mergedLabels().year
|
|
2616
|
+
};
|
|
2617
|
+
return [{
|
|
2618
|
+
id: "calendar.today",
|
|
2619
|
+
label: text.calendarCommandToday,
|
|
2620
|
+
description: text.calendarCommandTodayDescription,
|
|
2621
|
+
shortcut: "h",
|
|
2622
|
+
icon: "ti ti-calendar-event",
|
|
2623
|
+
run: goToday
|
|
2624
|
+
}, {
|
|
2625
|
+
id: "calendar.next",
|
|
2626
|
+
label: text.calendarCommandNext,
|
|
2627
|
+
description: text.calendarCommandNextDescription,
|
|
2628
|
+
shortcut: "j",
|
|
2629
|
+
icon: "ti ti-chevron-right",
|
|
2630
|
+
run: () => step(1)
|
|
2631
|
+
}, {
|
|
2632
|
+
id: "calendar.previous",
|
|
2633
|
+
label: text.calendarCommandPrevious,
|
|
2634
|
+
description: text.calendarCommandPreviousDescription,
|
|
2635
|
+
shortcut: "k",
|
|
2636
|
+
icon: "ti ti-chevron-left",
|
|
2637
|
+
run: () => step(-1)
|
|
2638
|
+
}, ...available.map((option, index) => ({
|
|
2639
|
+
id: `calendar.view.${option}`,
|
|
2640
|
+
label: text.calendarCommandView({
|
|
2641
|
+
view: viewLabels[option]
|
|
2642
|
+
}),
|
|
2643
|
+
description: text.calendarCommandViewDescription({
|
|
2644
|
+
view: viewLabels[option]
|
|
2645
|
+
}),
|
|
2646
|
+
shortcut: String(index + 1),
|
|
2647
|
+
icon: "ti ti-layout-columns",
|
|
2648
|
+
run: () => goView(option)
|
|
2649
|
+
})), {
|
|
2650
|
+
id: "calendar.goto",
|
|
2651
|
+
label: text.calendarCommandGoTo,
|
|
2652
|
+
description: text.calendarCommandGoToDescription,
|
|
2653
|
+
shortcut: "g",
|
|
2654
|
+
icon: "ti ti-calendar-search",
|
|
2655
|
+
run: openGoTo
|
|
2656
|
+
}];
|
|
2657
|
+
});
|
|
2658
|
+
const allCommands = createMemo(() => [...ownCommands(), ...(props.commands ?? [])]);
|
|
2659
|
+
/** While the month's quiet quick create waits for typing, a single key is the first letter of a title. */
|
|
2660
|
+
const typing = () => view() === "month" && (monthCreate()?.typing() ?? false);
|
|
2661
|
+
createEffect(() => {
|
|
2662
|
+
const commands = typing() ? allCommands().map(command => command.shortcut && singleKey(command.shortcut) ? {
|
|
2663
|
+
...command,
|
|
2664
|
+
shortcut: undefined
|
|
2665
|
+
} : command) : allCommands();
|
|
2666
|
+
untrack(() => props.onCommandsChange?.(commands));
|
|
2667
|
+
});
|
|
2668
|
+
// The arrow keys page like J and K while the keyboard is in the calendar or nowhere, unless something there uses
|
|
2669
|
+
// them, such as the grid of the week or the month.
|
|
2670
|
+
let root;
|
|
2671
|
+
onMount(() => {
|
|
2672
|
+
const onKeyDown = event => {
|
|
2673
|
+
if (event.key !== "ArrowLeft" && event.key !== "ArrowRight") return;
|
|
2674
|
+
if (event.defaultPrevented || event.isComposing || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;
|
|
2675
|
+
if (!props.onCommandsChange || custom() || document.querySelector('dialog[open], [role="dialog"][aria-modal="true"]')) return;
|
|
2676
|
+
const target = event.target;
|
|
2677
|
+
const inCalendar = target instanceof Element && Boolean(root?.contains(target));
|
|
2678
|
+
if (!inCalendar && target !== document.body && target !== document.documentElement) return;
|
|
2679
|
+
if (target instanceof Element && target.closest("input, textarea, select, [contenteditable]:not([contenteditable=false]), [role=textbox], [popover], [role=dialog]")) return;
|
|
2680
|
+
event.preventDefault();
|
|
2681
|
+
step(event.key === "ArrowRight" ? 1 : -1);
|
|
2682
|
+
};
|
|
2683
|
+
window.addEventListener("keydown", onKeyDown);
|
|
2684
|
+
onCleanup(() => window.removeEventListener("keydown", onKeyDown));
|
|
2685
|
+
});
|
|
2686
|
+
const headerNav = {
|
|
2687
|
+
timeView,
|
|
2688
|
+
commands: () => props.onCommandsChange ? allCommands() : [],
|
|
2689
|
+
// The arrow keys page like J and K, so the list names them beside those keys.
|
|
2690
|
+
openShortcuts: () => void openCalendarShortcuts(allCommands(), calendarMessages(), custom() ? {} : {
|
|
2691
|
+
"calendar.next": "arrowright",
|
|
2692
|
+
"calendar.previous": "arrowleft"
|
|
2693
|
+
})
|
|
2694
|
+
};
|
|
2695
|
+
const controller = {
|
|
2696
|
+
quickCreate: create => {
|
|
2697
|
+
const active = timeView();
|
|
2698
|
+
if (active) active.controller.quickCreate(create);else monthCreate()?.quickCreate(create);
|
|
2699
|
+
},
|
|
2700
|
+
createTarget: () => {
|
|
2701
|
+
const active = timeView()?.controller.createTarget() ?? monthCreate()?.createTarget();
|
|
2702
|
+
if (active) return active;
|
|
2703
|
+
const start = calendar.today(dateConfig());
|
|
2704
|
+
return {
|
|
2705
|
+
start,
|
|
2706
|
+
end: calendar.addDays(start, 1, dateConfig()),
|
|
2707
|
+
allDay: true
|
|
2708
|
+
};
|
|
2709
|
+
},
|
|
2710
|
+
dragIn: (event, item, onDrop) => timeView()?.controller.dragIn(event, item, onDrop)
|
|
2711
|
+
};
|
|
2712
|
+
onMount(() => props.controller?.(controller));
|
|
2713
|
+
const timeProps = timeViewName => ({
|
|
2714
|
+
owner,
|
|
2715
|
+
view: timeViewName,
|
|
2716
|
+
get date() {
|
|
2717
|
+
return date();
|
|
2718
|
+
},
|
|
2719
|
+
get now() {
|
|
2720
|
+
return now();
|
|
2721
|
+
},
|
|
2722
|
+
get events() {
|
|
2723
|
+
return props.events;
|
|
2724
|
+
},
|
|
2725
|
+
get labels() {
|
|
2726
|
+
return mergedLabels();
|
|
2727
|
+
},
|
|
2728
|
+
get hours() {
|
|
2729
|
+
return props.dayHours ?? [0, 24];
|
|
2730
|
+
},
|
|
2731
|
+
register: setTimeView
|
|
2732
|
+
});
|
|
2733
|
+
return _$ssr(_tmpl$56, `k2b-content-calendar ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("aria-busy", props.navigationPending ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(CalendarHeader, {
|
|
2571
2734
|
get date() {
|
|
2572
2735
|
return date();
|
|
2573
2736
|
},
|
|
@@ -2579,8 +2742,9 @@ const CalendarRoot = props => {
|
|
|
2579
2742
|
},
|
|
2580
2743
|
owner: owner,
|
|
2581
2744
|
get focusDay() {
|
|
2582
|
-
return _$memo(() => view() === "month")() ? focusDay() : null;
|
|
2583
|
-
}
|
|
2745
|
+
return _$memo(() => view() === "month")() ? focusDay() : _$memo(() => !!timeView())() ? shownDay() : null;
|
|
2746
|
+
},
|
|
2747
|
+
nav: headerNav
|
|
2584
2748
|
})), _$escape(_$createComponent(Show, {
|
|
2585
2749
|
get when() {
|
|
2586
2750
|
return !custom();
|
|
@@ -2614,7 +2778,8 @@ const CalendarRoot = props => {
|
|
|
2614
2778
|
get labels() {
|
|
2615
2779
|
return mergedLabels();
|
|
2616
2780
|
},
|
|
2617
|
-
onFocusDay: setFocusDay
|
|
2781
|
+
onFocusDay: setFocusDay,
|
|
2782
|
+
register: setMonthCreate
|
|
2618
2783
|
});
|
|
2619
2784
|
}
|
|
2620
2785
|
});
|
|
@@ -2672,22 +2837,42 @@ const CalendarRoot = props => {
|
|
|
2672
2837
|
});
|
|
2673
2838
|
},
|
|
2674
2839
|
get children() {
|
|
2675
|
-
return _$createComponent(
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
return date();
|
|
2840
|
+
return _$createComponent(Show, {
|
|
2841
|
+
get when() {
|
|
2842
|
+
return timeMode();
|
|
2679
2843
|
},
|
|
2680
|
-
get
|
|
2681
|
-
return
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2844
|
+
get fallback() {
|
|
2845
|
+
return _$createComponent(TimeGridView, {
|
|
2846
|
+
owner: owner,
|
|
2847
|
+
get date() {
|
|
2848
|
+
return date();
|
|
2849
|
+
},
|
|
2850
|
+
get now() {
|
|
2851
|
+
return now();
|
|
2852
|
+
},
|
|
2853
|
+
get events() {
|
|
2854
|
+
return normalizedEvents();
|
|
2855
|
+
},
|
|
2856
|
+
get labels() {
|
|
2857
|
+
return mergedLabels();
|
|
2858
|
+
},
|
|
2859
|
+
get days() {
|
|
2860
|
+
return days();
|
|
2861
|
+
}
|
|
2862
|
+
});
|
|
2688
2863
|
},
|
|
2689
|
-
get
|
|
2690
|
-
return
|
|
2864
|
+
get children() {
|
|
2865
|
+
return _$createComponent(Show, {
|
|
2866
|
+
get when() {
|
|
2867
|
+
return view() === "day";
|
|
2868
|
+
},
|
|
2869
|
+
get fallback() {
|
|
2870
|
+
return _$createComponent(CalendarWeekView, _$mergeProps(() => timeProps("week")));
|
|
2871
|
+
},
|
|
2872
|
+
get children() {
|
|
2873
|
+
return _$createComponent(CalendarDayView, _$mergeProps(() => timeProps("day")));
|
|
2874
|
+
}
|
|
2875
|
+
});
|
|
2691
2876
|
}
|
|
2692
2877
|
});
|
|
2693
2878
|
}
|
|
@@ -2700,6 +2885,9 @@ const CalendarRoot = props => {
|
|
|
2700
2885
|
})));
|
|
2701
2886
|
};
|
|
2702
2887
|
|
|
2888
|
+
/** A shortcut without Ctrl, Meta, or Mod, which typing would set off. */
|
|
2889
|
+
const singleKey = shortcut => !/(^|\+)(ctrl|meta|mod)\+/i.test(shortcut);
|
|
2890
|
+
|
|
2703
2891
|
/** JSX infers the values of `customViews`; inference from the last signature, as in `createComponent`, sees plain props. */
|
|
2704
2892
|
|
|
2705
2893
|
function Calendar(props) {
|