@k2b/ui 0.20.0 → 0.22.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/Button.js +20 -31
- package/dist/browser/actions/Button.js.map +1 -1
- package/dist/browser/actions/ContextMenu.js +10 -4
- package/dist/browser/actions/ContextMenu.js.map +1 -1
- package/dist/browser/actions/CopyButton.js +10 -8
- package/dist/browser/actions/CopyButton.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/GestureMenu.js +4 -0
- package/dist/browser/actions/GestureMenu.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 +1960 -575
- package/dist/browser/content/Calendar.js.map +1 -1
- package/dist/browser/content/Chart.js +15 -8
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/ChartExplorer.js +20 -12
- 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 +4 -2
- 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 +68 -59
- 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-messages.js +121 -0
- package/dist/browser/content/calendar-messages.js.map +1 -0
- package/dist/browser/content/calendar-month-layout.js +108 -0
- package/dist/browser/content/calendar-month-layout.js.map +1 -0
- package/dist/browser/content/calendar-pointer.js +4 -3
- package/dist/browser/content/calendar-pointer.js.map +1 -1
- package/dist/browser/content/chart-messages.js +136 -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 -1
- package/dist/browser/inputs/Combobox.js.map +1 -1
- package/dist/browser/inputs/DatePicker.js +46 -10
- package/dist/browser/inputs/DatePicker.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/date-picker.js +24 -0
- package/dist/browser/inputs/date-picker.js.map +1 -1
- 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 +12 -1155
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +561 -418
- 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 +370 -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 +743 -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/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/Button.js +21 -32
- package/dist/ssr/actions/Button.js.map +1 -1
- package/dist/ssr/actions/ContextMenu.js +7 -3
- package/dist/ssr/actions/ContextMenu.js.map +1 -1
- package/dist/ssr/actions/CopyButton.js +9 -7
- package/dist/ssr/actions/CopyButton.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/GestureMenu.js +4 -0
- package/dist/ssr/actions/GestureMenu.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 +1232 -115
- package/dist/ssr/content/Calendar.js.map +1 -1
- package/dist/ssr/content/Chart.js +12 -5
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/ChartExplorer.js +10 -8
- 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 +4 -2
- 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 +10 -4
- 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-messages.js +121 -0
- package/dist/ssr/content/calendar-messages.js.map +1 -0
- package/dist/ssr/content/calendar-month-layout.js +108 -0
- package/dist/ssr/content/calendar-month-layout.js.map +1 -0
- package/dist/ssr/content/calendar-pointer.js +4 -3
- package/dist/ssr/content/calendar-pointer.js.map +1 -1
- package/dist/ssr/content/chart-messages.js +136 -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/DatePicker.js +34 -4
- package/dist/ssr/inputs/DatePicker.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/date-picker.js +24 -0
- package/dist/ssr/inputs/date-picker.js.map +1 -1
- 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 +12 -1155
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +203 -96
- 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 +253 -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 +743 -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/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/GestureMenu.d.ts +2 -0
- 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 +32 -0
- package/dist/types/content/DataTable.d.ts +2 -0
- package/dist/types/content/FileView.d.ts +0 -10
- package/dist/types/content/calendar-messages.d.ts +60 -0
- package/dist/types/content/calendar-month-layout.d.ts +52 -0
- package/dist/types/content/chart-messages.d.ts +32 -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 +1 -1
- 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/date-picker.d.ts +7 -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 +6 -544
- package/dist/types/layout/AppWorkspace.d.ts +19 -4
- package/dist/types/layout/PageTitle.d.ts +64 -0
- package/dist/types/layout/app-workspace-controller.d.ts +4 -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/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
|
@@ -2,7 +2,6 @@ import { template as _$template } from "solid-js/web";
|
|
|
2
2
|
import { delegateEvents as _$delegateEvents } from "solid-js/web";
|
|
3
3
|
import { use as _$use } from "solid-js/web";
|
|
4
4
|
import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
|
|
5
|
-
import { memo as _$memo } from "solid-js/web";
|
|
6
5
|
import { className as _$className } from "solid-js/web";
|
|
7
6
|
import { spread as _$spread } from "solid-js/web";
|
|
8
7
|
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
@@ -11,65 +10,90 @@ import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
|
11
10
|
import { effect as _$effect } from "solid-js/web";
|
|
12
11
|
import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
|
|
13
12
|
import { addEventListener as _$addEventListener } from "solid-js/web";
|
|
13
|
+
import { memo as _$memo } from "solid-js/web";
|
|
14
14
|
import { getNextMarker as _$getNextMarker } from "solid-js/web";
|
|
15
|
-
import { insert as _$insert } from "solid-js/web";
|
|
16
15
|
import { createComponent as _$createComponent } from "solid-js/web";
|
|
17
16
|
import { getNextElement as _$getNextElement } from "solid-js/web";
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
_tmpl$
|
|
21
|
-
_tmpl$
|
|
22
|
-
_tmpl$
|
|
23
|
-
_tmpl$
|
|
24
|
-
_tmpl$
|
|
25
|
-
_tmpl$
|
|
26
|
-
_tmpl$
|
|
27
|
-
_tmpl$
|
|
28
|
-
_tmpl$
|
|
29
|
-
_tmpl$
|
|
30
|
-
_tmpl$
|
|
31
|
-
_tmpl$
|
|
32
|
-
_tmpl$
|
|
33
|
-
_tmpl$
|
|
34
|
-
_tmpl$
|
|
35
|
-
_tmpl$
|
|
36
|
-
_tmpl$
|
|
37
|
-
_tmpl$
|
|
38
|
-
_tmpl$
|
|
39
|
-
_tmpl$
|
|
40
|
-
_tmpl$
|
|
41
|
-
_tmpl$
|
|
42
|
-
_tmpl$
|
|
43
|
-
_tmpl$
|
|
44
|
-
_tmpl$
|
|
45
|
-
_tmpl$
|
|
46
|
-
_tmpl$
|
|
47
|
-
_tmpl$
|
|
48
|
-
_tmpl$
|
|
49
|
-
_tmpl$
|
|
50
|
-
_tmpl$
|
|
51
|
-
_tmpl$
|
|
52
|
-
_tmpl$
|
|
53
|
-
_tmpl$
|
|
54
|
-
_tmpl$
|
|
55
|
-
_tmpl$
|
|
56
|
-
_tmpl$
|
|
57
|
-
_tmpl$
|
|
58
|
-
_tmpl$
|
|
59
|
-
_tmpl$
|
|
60
|
-
_tmpl$
|
|
61
|
-
_tmpl$
|
|
62
|
-
_tmpl$
|
|
63
|
-
_tmpl$
|
|
64
|
-
_tmpl$
|
|
17
|
+
import { insert as _$insert } from "solid-js/web";
|
|
18
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<span class=k2b-calendar-event__time>`),
|
|
19
|
+
_tmpl$2 = /*#__PURE__*/_$template(`<span class=k2b-calendar-event__marker aria-hidden=true>`),
|
|
20
|
+
_tmpl$3 = /*#__PURE__*/_$template(`<span class=k2b-calendar-event__title><!$><!/><!$><!/>`),
|
|
21
|
+
_tmpl$4 = /*#__PURE__*/_$template(`<span class=k2b-calendar-event__meta>`),
|
|
22
|
+
_tmpl$5 = /*#__PURE__*/_$template(`<span class=k2b-calendar-event__description>`),
|
|
23
|
+
_tmpl$6 = /*#__PURE__*/_$template(`<span class=k2b-calendar-event__hint data-edge=start aria-hidden=true>`),
|
|
24
|
+
_tmpl$7 = /*#__PURE__*/_$template(`<span class=k2b-calendar-event__hint data-edge=end aria-hidden=true>`),
|
|
25
|
+
_tmpl$8 = /*#__PURE__*/_$template(`<a class=k2b-calendar-event data-calendar-event>`),
|
|
26
|
+
_tmpl$9 = /*#__PURE__*/_$template(`<button type=button class=k2b-calendar-event data-calendar-event data-interactive=true>`),
|
|
27
|
+
_tmpl$0 = /*#__PURE__*/_$template(`<div class=k2b-calendar-event role=group data-calendar-event>`),
|
|
28
|
+
_tmpl$1 = /*#__PURE__*/_$template(`<a>`),
|
|
29
|
+
_tmpl$10 = /*#__PURE__*/_$template(`<div role=radiogroup aria-orientation=horizontal class="k2b-segmented-control k2b-calendar-view-switcher">`),
|
|
30
|
+
_tmpl$11 = /*#__PURE__*/_$template(`<i>`),
|
|
31
|
+
_tmpl$12 = /*#__PURE__*/_$template(`<button type=button class=k2b-calendar-header__nav-button><i>`),
|
|
32
|
+
_tmpl$13 = /*#__PURE__*/_$template(`<span class=k2b-button__label>`),
|
|
33
|
+
_tmpl$14 = /*#__PURE__*/_$template(`<div class=k2b-calendar-header__content>`),
|
|
34
|
+
_tmpl$15 = /*#__PURE__*/_$template(`<span class=k2b-calendar-header__progress aria-hidden=true>`),
|
|
35
|
+
_tmpl$16 = /*#__PURE__*/_$template(`<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><!$><!/>`),
|
|
36
|
+
_tmpl$17 = /*#__PURE__*/_$template(`<span class=k2b-calendar-header__title-size aria-hidden=true>`),
|
|
37
|
+
_tmpl$18 = /*#__PURE__*/_$template(`<div class=k2b-calendar-month__weekday>`),
|
|
38
|
+
_tmpl$19 = /*#__PURE__*/_$template(`<div class=k2b-calendar-month><div class=k2b-calendar-month__weekdays><!$><!/><!$><!/></div><!$><!/>`),
|
|
39
|
+
_tmpl$20 = /*#__PURE__*/_$template(`<div class=k2b-calendar-month__week-number>`),
|
|
40
|
+
_tmpl$21 = /*#__PURE__*/_$template(`<div class=k2b-calendar-month__week><!$><!/><!$><!/>`),
|
|
41
|
+
_tmpl$22 = /*#__PURE__*/_$template(`<button type=button class=k2b-calendar-month__day-target data-interactive=true>`),
|
|
42
|
+
_tmpl$23 = /*#__PURE__*/_$template(`<div class=k2b-calendar-preview>`),
|
|
43
|
+
_tmpl$24 = /*#__PURE__*/_$template(`<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>`),
|
|
44
|
+
_tmpl$25 = /*#__PURE__*/_$template(`<span class=k2b-calendar-month__day-number>`),
|
|
45
|
+
_tmpl$26 = /*#__PURE__*/_$template(`<span class=k2b-calendar-month__badge><!$><!/><!$><!/>`),
|
|
46
|
+
_tmpl$27 = /*#__PURE__*/_$template(`<span class=k2b-calendar-dot>`),
|
|
47
|
+
_tmpl$28 = /*#__PURE__*/_$template(`<div class=k2b-calendar-month__weekday role=columnheader>`),
|
|
48
|
+
_tmpl$29 = /*#__PURE__*/_$template(`<div class=k2b-calendar-month role=grid aria-multiselectable=true data-lanes=true style=--k2b-calendar-lane:1.25rem;--k2b-calendar-lane-gap:0.125rem><div class=k2b-calendar-month__weekdays role=row><!$><!/><!$><!/></div><!$><!/>`),
|
|
49
|
+
_tmpl$30 = /*#__PURE__*/_$template(`<div class=k2b-calendar-month__week-number role=rowheader>`),
|
|
50
|
+
_tmpl$31 = /*#__PURE__*/_$template(`<div class=k2b-calendar-month__week role=row><!$><!/><!$><!/>`),
|
|
51
|
+
_tmpl$32 = /*#__PURE__*/_$template(`<button type=button class=k2b-calendar-month__week-link tabindex=-1>`),
|
|
52
|
+
_tmpl$33 = /*#__PURE__*/_$template(`<button type=button class=k2b-calendar-month__more tabindex=-1 aria-haspopup=dialog><span class=k2b-calendar-month__more-long></span><span class=k2b-calendar-month__more-short>+<!$><!/>`),
|
|
53
|
+
_tmpl$34 = /*#__PURE__*/_$template(`<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><!$><!/><!$><!/><!$><!/>`),
|
|
54
|
+
_tmpl$35 = /*#__PURE__*/_$template(`<div class=k2b-calendar-month__segment data-bar=true>`),
|
|
55
|
+
_tmpl$36 = /*#__PURE__*/_$template(`<div class=k2b-calendar-month__segment style=--k2b-calendar-span:1>`),
|
|
56
|
+
_tmpl$37 = /*#__PURE__*/_$template(`<ul class=k2b-calendar-day-list__events>`),
|
|
57
|
+
_tmpl$38 = /*#__PURE__*/_$template(`<i class="ti ti-plus"aria-hidden=true>`),
|
|
58
|
+
_tmpl$39 = /*#__PURE__*/_$template(`<div class=k2b-calendar-day-list><div class=k2b-calendar-day-list__title></div><!$><!/><div class=k2b-calendar-day-list__actions><!$><!/><!$><!/>`),
|
|
59
|
+
_tmpl$40 = /*#__PURE__*/_$template(`<p class=k2b-calendar-day-list__empty>`),
|
|
60
|
+
_tmpl$41 = /*#__PURE__*/_$template(`<li>`),
|
|
61
|
+
_tmpl$42 = /*#__PURE__*/_$template(`<i class="ti ti-zoom-in"aria-hidden=true>`),
|
|
62
|
+
_tmpl$43 = /*#__PURE__*/_$template(`<div class=k2b-calendar-popover popover=auto role=dialog>`),
|
|
63
|
+
_tmpl$44 = /*#__PURE__*/_$template(`<div class=k2b-calendar-time-grid__all-day><div class=k2b-calendar-time-grid__all-day-label></div><!$><!/>`),
|
|
64
|
+
_tmpl$45 = /*#__PURE__*/_$template(`<div class=k2b-calendar-time-grid><div class=k2b-calendar-time-grid__days><div></div><!$><!/></div><!$><!/><div class=k2b-calendar-time-grid__scroll><div class=k2b-calendar-time-grid__grid><div class=k2b-calendar-time-grid__gutter></div><!$><!/>`),
|
|
65
|
+
_tmpl$46 = /*#__PURE__*/_$template(`<span class=k2b-calendar-time-grid__day-label>`),
|
|
66
|
+
_tmpl$47 = /*#__PURE__*/_$template(`<span class=k2b-calendar-time-grid__badge><!$><!/><!$><!/>`),
|
|
67
|
+
_tmpl$48 = /*#__PURE__*/_$template(`<div class=k2b-calendar-time-grid__all-day-cell><div class=k2b-calendar-time-grid__all-day-events><!$><!/><!$><!/>`),
|
|
68
|
+
_tmpl$49 = /*#__PURE__*/_$template(`<div class=k2b-calendar-time-grid__hour><!$><!/>:00`),
|
|
69
|
+
_tmpl$50 = /*#__PURE__*/_$template(`<div class=k2b-calendar-time-grid__now>`),
|
|
70
|
+
_tmpl$51 = /*#__PURE__*/_$template(`<div class=k2b-calendar-time-grid__column><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/>`),
|
|
71
|
+
_tmpl$52 = /*#__PURE__*/_$template(`<div class=k2b-calendar-time-grid__slot>`),
|
|
72
|
+
_tmpl$53 = /*#__PURE__*/_$template(`<div class=k2b-calendar-preview__title>`),
|
|
73
|
+
_tmpl$54 = /*#__PURE__*/_$template(`<div class="k2b-calendar-preview k2b-calendar-preview--timed"><div class=k2b-calendar-preview__content><!$><!/><div class=k2b-calendar-preview__label><!$><!/> - <!$><!/>`),
|
|
74
|
+
_tmpl$55 = /*#__PURE__*/_$template(`<button type=button class=k2b-calendar-time-grid__resize><span class=k2b-calendar-time-grid__resize-icon aria-hidden=true>`),
|
|
75
|
+
_tmpl$56 = /*#__PURE__*/_$template(`<div class=k2b-calendar-time-grid__event-position><div class=k2b-calendar-time-grid__event-frame><!$><!/><!$><!/>`),
|
|
76
|
+
_tmpl$57 = /*#__PURE__*/_$template(`<button type=button class=k2b-calendar-time-grid__overflow><span class=k2b-calendar-time-grid__overflow-count>+<!$><!/>`),
|
|
77
|
+
_tmpl$58 = /*#__PURE__*/_$template(`<div class=k2b-calendar-time-grid__overflow-menu><div class=k2b-calendar-time-grid__overflow-title><!$><!/> - <!$><!/></div><!$><!/>`),
|
|
78
|
+
_tmpl$59 = /*#__PURE__*/_$template(`<div class=k2b-calendar-year>`),
|
|
79
|
+
_tmpl$60 = /*#__PURE__*/_$template(`<div class=k2b-calendar-year__month><div class=k2b-calendar-year__title></div><div class=k2b-calendar-year__grid>`),
|
|
80
|
+
_tmpl$61 = /*#__PURE__*/_$template(`<span class=k2b-calendar-year__indicator>`),
|
|
81
|
+
_tmpl$62 = /*#__PURE__*/_$template(`<div class=k2b-calendar-mobile-month__events>`),
|
|
82
|
+
_tmpl$63 = /*#__PURE__*/_$template(`<div class=k2b-calendar-mobile-month><!$><!/><div class=k2b-calendar-mobile-month__agenda><div class=k2b-calendar-mobile-month__title></div><!$><!/>`),
|
|
83
|
+
_tmpl$64 = /*#__PURE__*/_$template(`<div class=k2b-calendar-mobile-month__empty>`),
|
|
84
|
+
_tmpl$65 = /*#__PURE__*/_$template(`<div class=k2b-calendar-body>`),
|
|
85
|
+
_tmpl$66 = /*#__PURE__*/_$template(`<section><!$><!/><!$><!/>`);
|
|
65
86
|
import { Link } from "@k2b/ssr/nav";
|
|
66
87
|
import { dates as calendar } from "@k2b/stdlib";
|
|
67
|
-
import { createMemo, createSignal, For, mergeProps, onCleanup, onMount, Show } from "solid-js";
|
|
88
|
+
import { createEffect, createMemo, createSignal, For, mergeProps, on, onCleanup, onMount, Show, untrack } from "solid-js";
|
|
68
89
|
import { Button } from "../actions/Button";
|
|
90
|
+
import { GestureMenu } from "../actions/GestureMenu";
|
|
69
91
|
import SegmentedControl from "../actions/SegmentedControl";
|
|
70
92
|
import { useDateConfigLocale } from "../intl/locale";
|
|
71
93
|
import { useUiMessages } from "../intl/messages";
|
|
72
94
|
import { layoutCalendarIntervals } from "./calendar-event-layout";
|
|
95
|
+
import { useCalendarMessages } from "./calendar-messages";
|
|
96
|
+
import { fitMonthWeek, layoutMonthWeek, monthLaneCapacity } from "./calendar-month-layout";
|
|
73
97
|
import { calendarDayIndexAtPoint, calendarMinuteAtPoint, startCalendarPointerSession } from "./calendar-pointer";
|
|
74
98
|
|
|
75
99
|
/** A view the application adds to the switcher; the calendar shows its header and toolbar, the application the body. */
|
|
@@ -231,7 +255,7 @@ const timedEventLayouts = events => {
|
|
|
231
255
|
}));
|
|
232
256
|
};
|
|
233
257
|
const EventChip = props => {
|
|
234
|
-
const
|
|
258
|
+
const calendarMessages = useCalendarMessages();
|
|
235
259
|
const dateConfig = createMemo(() => ownerDateConfig(props.owner));
|
|
236
260
|
const color = () => props.event.color ?? "blue";
|
|
237
261
|
const selected = () => Boolean(props.owner.selectedEventId) && props.owner.selectedEventId === props.event.id;
|
|
@@ -246,7 +270,7 @@ const EventChip = props => {
|
|
|
246
270
|
const showDescription = () => Boolean(props.event.description?.trim() && props.fill && !props.event.allDay && !props.compact && durationHours() >= 1.5);
|
|
247
271
|
const timeLabel = () => `${formatTime(props.event.startDate, dateConfig())} - ${formatTime(props.event.endDate, dateConfig())}`;
|
|
248
272
|
const ariaLabel = () => {
|
|
249
|
-
const label = props.event.allDay ? props.event.title :
|
|
273
|
+
const label = props.label ? props.label : props.event.allDay ? props.event.title : calendarMessages().calendarEventTime({
|
|
250
274
|
title: props.event.title,
|
|
251
275
|
start: formatTime(props.event.startDate, dateConfig()),
|
|
252
276
|
end: formatTime(props.event.endDate, dateConfig())
|
|
@@ -260,53 +284,81 @@ const EventChip = props => {
|
|
|
260
284
|
end: props.event.endDate,
|
|
261
285
|
allDay: props.event.allDay ?? false,
|
|
262
286
|
durationHours: durationHours(),
|
|
263
|
-
timeLabel: timeLabel()
|
|
287
|
+
timeLabel: timeLabel(),
|
|
288
|
+
leadingTime: props.leadingTime
|
|
264
289
|
});
|
|
265
|
-
const defaultContent = [(
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
290
|
+
const defaultContent = [_$createComponent(Show, {
|
|
291
|
+
get when() {
|
|
292
|
+
return props.leadingTime;
|
|
293
|
+
},
|
|
294
|
+
get children() {
|
|
295
|
+
var _el$ = _$getNextElement(_tmpl$);
|
|
296
|
+
_$insert(_el$, () => props.leadingTime);
|
|
297
|
+
return _el$;
|
|
298
|
+
}
|
|
299
|
+
}), (() => {
|
|
300
|
+
var _el$2 = _$getNextElement(_tmpl$3),
|
|
301
|
+
_el$4 = _el$2.firstChild,
|
|
302
|
+
[_el$5, _co$] = _$getNextMarker(_el$4.nextSibling),
|
|
303
|
+
_el$6 = _el$5.nextSibling,
|
|
304
|
+
[_el$7, _co$2] = _$getNextMarker(_el$6.nextSibling);
|
|
305
|
+
_$insert(_el$2, _$createComponent(Show, {
|
|
272
306
|
get when() {
|
|
273
307
|
return props.event.display === "marker";
|
|
274
308
|
},
|
|
275
309
|
get children() {
|
|
276
|
-
return _$getNextElement(_tmpl$);
|
|
310
|
+
return _$getNextElement(_tmpl$2);
|
|
277
311
|
}
|
|
278
|
-
}), _el$
|
|
279
|
-
_$insert(_el
|
|
280
|
-
return _el
|
|
312
|
+
}), _el$5, _co$);
|
|
313
|
+
_$insert(_el$2, () => props.event.title, _el$7, _co$2);
|
|
314
|
+
return _el$2;
|
|
281
315
|
})(), _$createComponent(Show, {
|
|
282
316
|
get when() {
|
|
283
317
|
return showTime();
|
|
284
318
|
},
|
|
285
319
|
get children() {
|
|
286
|
-
var _el$
|
|
287
|
-
_$insert(_el$
|
|
288
|
-
return _el$
|
|
320
|
+
var _el$8 = _$getNextElement(_tmpl$4);
|
|
321
|
+
_$insert(_el$8, timeLabel);
|
|
322
|
+
return _el$8;
|
|
289
323
|
}
|
|
290
324
|
}), _$createComponent(Show, {
|
|
291
325
|
get when() {
|
|
292
326
|
return showLocation();
|
|
293
327
|
},
|
|
294
328
|
get children() {
|
|
295
|
-
var _el$
|
|
296
|
-
_$insert(_el$
|
|
297
|
-
return _el$
|
|
329
|
+
var _el$9 = _$getNextElement(_tmpl$4);
|
|
330
|
+
_$insert(_el$9, () => props.event.location);
|
|
331
|
+
return _el$9;
|
|
298
332
|
}
|
|
299
333
|
}), _$createComponent(Show, {
|
|
300
334
|
get when() {
|
|
301
335
|
return showDescription();
|
|
302
336
|
},
|
|
303
337
|
get children() {
|
|
304
|
-
var _el$
|
|
305
|
-
_$insert(_el$
|
|
306
|
-
return _el$
|
|
338
|
+
var _el$0 = _$getNextElement(_tmpl$5);
|
|
339
|
+
_$insert(_el$0, () => props.event.description);
|
|
340
|
+
return _el$0;
|
|
341
|
+
}
|
|
342
|
+
})];
|
|
343
|
+
const content = () => [_$createComponent(Show, {
|
|
344
|
+
get when() {
|
|
345
|
+
return props.hintStart;
|
|
346
|
+
},
|
|
347
|
+
get children() {
|
|
348
|
+
var _el$1 = _$getNextElement(_tmpl$6);
|
|
349
|
+
_$insert(_el$1, () => props.hintStart);
|
|
350
|
+
return _el$1;
|
|
351
|
+
}
|
|
352
|
+
}), _$memo(() => renderedEvent() ?? defaultContent), _$createComponent(Show, {
|
|
353
|
+
get when() {
|
|
354
|
+
return props.hintEnd;
|
|
355
|
+
},
|
|
356
|
+
get children() {
|
|
357
|
+
var _el$10 = _$getNextElement(_tmpl$7);
|
|
358
|
+
_$insert(_el$10, () => props.hintEnd);
|
|
359
|
+
return _el$10;
|
|
307
360
|
}
|
|
308
361
|
})];
|
|
309
|
-
const content = () => renderedEvent() ?? defaultContent;
|
|
310
362
|
const isActionable = () => isInteractive() || Boolean(props.onMovePointerDown);
|
|
311
363
|
let suppressClickUntil = 0;
|
|
312
364
|
const onClick = event => {
|
|
@@ -339,12 +391,12 @@ const EventChip = props => {
|
|
|
339
391
|
});
|
|
340
392
|
};
|
|
341
393
|
return props.href ? (() => {
|
|
342
|
-
var _el$
|
|
343
|
-
_el$
|
|
344
|
-
_$addEventListener(_el$
|
|
345
|
-
_el$
|
|
346
|
-
_el$
|
|
347
|
-
_$insert(_el$
|
|
394
|
+
var _el$11 = _$getNextElement(_tmpl$8);
|
|
395
|
+
_el$11.$$pointerdown = onPointerDown;
|
|
396
|
+
_$addEventListener(_el$11, "dragstart", props.onMovePointerDown ? event => event.preventDefault() : undefined);
|
|
397
|
+
_el$11.$$dblclick = onDoubleClick;
|
|
398
|
+
_el$11.$$click = onClick;
|
|
399
|
+
_$insert(_el$11, content);
|
|
348
400
|
_$effect(_p$ => {
|
|
349
401
|
var _v$ = props.href,
|
|
350
402
|
_v$2 = props.event.colorHex ? undefined : color(),
|
|
@@ -353,25 +405,31 @@ const EventChip = props => {
|
|
|
353
405
|
_v$5 = props.fill ? "true" : undefined,
|
|
354
406
|
_v$6 = short() ? "true" : undefined,
|
|
355
407
|
_v$7 = props.moving ? "true" : undefined,
|
|
356
|
-
_v$8 =
|
|
357
|
-
_v$9 = props.
|
|
358
|
-
_v$0 = props.
|
|
359
|
-
_v$1 =
|
|
360
|
-
_v$10 = props.
|
|
361
|
-
_v$11 =
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
_v$
|
|
366
|
-
_v$
|
|
367
|
-
_v$
|
|
368
|
-
_v$
|
|
369
|
-
_v$
|
|
370
|
-
_v$
|
|
371
|
-
_v$
|
|
372
|
-
_p$.
|
|
373
|
-
_v$
|
|
374
|
-
_v$
|
|
408
|
+
_v$8 = props.continuesBefore ? "true" : undefined,
|
|
409
|
+
_v$9 = props.continuesAfter ? "true" : undefined,
|
|
410
|
+
_v$0 = props.bar ? "true" : undefined,
|
|
411
|
+
_v$1 = isInteractive() ? "true" : undefined,
|
|
412
|
+
_v$10 = props.event.display,
|
|
413
|
+
_v$11 = props.event.dataSpaceItemId,
|
|
414
|
+
_v$12 = style(),
|
|
415
|
+
_v$13 = props.onMovePointerDown ? false : undefined,
|
|
416
|
+
_v$14 = ariaLabel();
|
|
417
|
+
_v$ !== _p$.e && _$setAttribute(_el$11, "href", _p$.e = _v$);
|
|
418
|
+
_v$2 !== _p$.t && _$setAttribute(_el$11, "data-color", _p$.t = _v$2);
|
|
419
|
+
_v$3 !== _p$.a && _$setAttribute(_el$11, "data-selected", _p$.a = _v$3);
|
|
420
|
+
_v$4 !== _p$.o && _$setAttribute(_el$11, "data-compact", _p$.o = _v$4);
|
|
421
|
+
_v$5 !== _p$.i && _$setAttribute(_el$11, "data-fill", _p$.i = _v$5);
|
|
422
|
+
_v$6 !== _p$.n && _$setAttribute(_el$11, "data-short", _p$.n = _v$6);
|
|
423
|
+
_v$7 !== _p$.s && _$setAttribute(_el$11, "data-moving", _p$.s = _v$7);
|
|
424
|
+
_v$8 !== _p$.h && _$setAttribute(_el$11, "data-continues-before", _p$.h = _v$8);
|
|
425
|
+
_v$9 !== _p$.r && _$setAttribute(_el$11, "data-continues-after", _p$.r = _v$9);
|
|
426
|
+
_v$0 !== _p$.d && _$setAttribute(_el$11, "data-bar", _p$.d = _v$0);
|
|
427
|
+
_v$1 !== _p$.l && _$setAttribute(_el$11, "data-interactive", _p$.l = _v$1);
|
|
428
|
+
_v$10 !== _p$.u && _$setAttribute(_el$11, "data-display", _p$.u = _v$10);
|
|
429
|
+
_v$11 !== _p$.c && _$setAttribute(_el$11, "data-space-item-id", _p$.c = _v$11);
|
|
430
|
+
_p$.w = _$style(_el$11, _v$12, _p$.w);
|
|
431
|
+
_v$13 !== _p$.m && _$setAttribute(_el$11, "draggable", _p$.m = _v$13);
|
|
432
|
+
_v$14 !== _p$.f && _$setAttribute(_el$11, "aria-label", _p$.f = _v$14);
|
|
375
433
|
return _p$;
|
|
376
434
|
}, {
|
|
377
435
|
e: undefined,
|
|
@@ -386,36 +444,45 @@ const EventChip = props => {
|
|
|
386
444
|
d: undefined,
|
|
387
445
|
l: undefined,
|
|
388
446
|
u: undefined,
|
|
389
|
-
c: undefined
|
|
447
|
+
c: undefined,
|
|
448
|
+
w: undefined,
|
|
449
|
+
m: undefined,
|
|
450
|
+
f: undefined
|
|
390
451
|
});
|
|
391
452
|
_$runHydrationEvents();
|
|
392
|
-
return _el$
|
|
453
|
+
return _el$11;
|
|
393
454
|
})() : isActionable() ? (() => {
|
|
394
|
-
var _el$
|
|
395
|
-
_el$
|
|
396
|
-
_el$
|
|
397
|
-
_el$
|
|
398
|
-
_el$
|
|
399
|
-
_$insert(_el$
|
|
455
|
+
var _el$12 = _$getNextElement(_tmpl$9);
|
|
456
|
+
_el$12.$$keydown = onButtonKeyDown;
|
|
457
|
+
_el$12.$$pointerdown = onPointerDown;
|
|
458
|
+
_el$12.$$dblclick = onDoubleClick;
|
|
459
|
+
_el$12.$$click = onClick;
|
|
460
|
+
_$insert(_el$12, content);
|
|
400
461
|
_$effect(_p$ => {
|
|
401
|
-
var _v$
|
|
402
|
-
_v$
|
|
403
|
-
_v$
|
|
404
|
-
_v$
|
|
405
|
-
_v$
|
|
406
|
-
_v$
|
|
407
|
-
_v$
|
|
408
|
-
_v$
|
|
409
|
-
_v$
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
_v$15 !== _p$.
|
|
414
|
-
_v$16 !== _p$.
|
|
415
|
-
_v$17 !== _p$.
|
|
416
|
-
_v$18 !== _p$.
|
|
417
|
-
_p$.
|
|
418
|
-
_v$20 !== _p$.
|
|
462
|
+
var _v$15 = props.event.colorHex ? undefined : color(),
|
|
463
|
+
_v$16 = selected() ? "true" : undefined,
|
|
464
|
+
_v$17 = props.compact ? "true" : undefined,
|
|
465
|
+
_v$18 = props.fill ? "true" : undefined,
|
|
466
|
+
_v$19 = short() ? "true" : undefined,
|
|
467
|
+
_v$20 = props.moving ? "true" : undefined,
|
|
468
|
+
_v$21 = props.continuesBefore ? "true" : undefined,
|
|
469
|
+
_v$22 = props.continuesAfter ? "true" : undefined,
|
|
470
|
+
_v$23 = props.bar ? "true" : undefined,
|
|
471
|
+
_v$24 = props.event.display,
|
|
472
|
+
_v$25 = style(),
|
|
473
|
+
_v$26 = ariaLabel();
|
|
474
|
+
_v$15 !== _p$.e && _$setAttribute(_el$12, "data-color", _p$.e = _v$15);
|
|
475
|
+
_v$16 !== _p$.t && _$setAttribute(_el$12, "data-selected", _p$.t = _v$16);
|
|
476
|
+
_v$17 !== _p$.a && _$setAttribute(_el$12, "data-compact", _p$.a = _v$17);
|
|
477
|
+
_v$18 !== _p$.o && _$setAttribute(_el$12, "data-fill", _p$.o = _v$18);
|
|
478
|
+
_v$19 !== _p$.i && _$setAttribute(_el$12, "data-short", _p$.i = _v$19);
|
|
479
|
+
_v$20 !== _p$.n && _$setAttribute(_el$12, "data-moving", _p$.n = _v$20);
|
|
480
|
+
_v$21 !== _p$.s && _$setAttribute(_el$12, "data-continues-before", _p$.s = _v$21);
|
|
481
|
+
_v$22 !== _p$.h && _$setAttribute(_el$12, "data-continues-after", _p$.h = _v$22);
|
|
482
|
+
_v$23 !== _p$.r && _$setAttribute(_el$12, "data-bar", _p$.r = _v$23);
|
|
483
|
+
_v$24 !== _p$.d && _$setAttribute(_el$12, "data-display", _p$.d = _v$24);
|
|
484
|
+
_p$.l = _$style(_el$12, _v$25, _p$.l);
|
|
485
|
+
_v$26 !== _p$.u && _$setAttribute(_el$12, "aria-label", _p$.u = _v$26);
|
|
419
486
|
return _p$;
|
|
420
487
|
}, {
|
|
421
488
|
e: undefined,
|
|
@@ -426,33 +493,42 @@ const EventChip = props => {
|
|
|
426
493
|
n: undefined,
|
|
427
494
|
s: undefined,
|
|
428
495
|
h: undefined,
|
|
429
|
-
r: undefined
|
|
496
|
+
r: undefined,
|
|
497
|
+
d: undefined,
|
|
498
|
+
l: undefined,
|
|
499
|
+
u: undefined
|
|
430
500
|
});
|
|
431
501
|
_$runHydrationEvents();
|
|
432
|
-
return _el$
|
|
502
|
+
return _el$12;
|
|
433
503
|
})() : (() => {
|
|
434
|
-
var _el$
|
|
435
|
-
_$setAttribute(_el$
|
|
436
|
-
_$insert(_el$
|
|
504
|
+
var _el$13 = _$getNextElement(_tmpl$0);
|
|
505
|
+
_$setAttribute(_el$13, "data-interactive", undefined);
|
|
506
|
+
_$insert(_el$13, content);
|
|
437
507
|
_$effect(_p$ => {
|
|
438
|
-
var _v$
|
|
439
|
-
_v$
|
|
440
|
-
_v$
|
|
441
|
-
_v$
|
|
442
|
-
_v$
|
|
443
|
-
_v$
|
|
444
|
-
_v$
|
|
445
|
-
_v$
|
|
446
|
-
_v$
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
_v$
|
|
451
|
-
_v$
|
|
452
|
-
_v$
|
|
453
|
-
_v$
|
|
454
|
-
_p$.
|
|
455
|
-
_v$
|
|
508
|
+
var _v$27 = props.event.colorHex ? undefined : color(),
|
|
509
|
+
_v$28 = selected() ? "true" : undefined,
|
|
510
|
+
_v$29 = props.compact ? "true" : undefined,
|
|
511
|
+
_v$30 = props.fill ? "true" : undefined,
|
|
512
|
+
_v$31 = short() ? "true" : undefined,
|
|
513
|
+
_v$32 = props.moving ? "true" : undefined,
|
|
514
|
+
_v$33 = props.continuesBefore ? "true" : undefined,
|
|
515
|
+
_v$34 = props.continuesAfter ? "true" : undefined,
|
|
516
|
+
_v$35 = props.bar ? "true" : undefined,
|
|
517
|
+
_v$36 = props.event.display,
|
|
518
|
+
_v$37 = style(),
|
|
519
|
+
_v$38 = ariaLabel();
|
|
520
|
+
_v$27 !== _p$.e && _$setAttribute(_el$13, "data-color", _p$.e = _v$27);
|
|
521
|
+
_v$28 !== _p$.t && _$setAttribute(_el$13, "data-selected", _p$.t = _v$28);
|
|
522
|
+
_v$29 !== _p$.a && _$setAttribute(_el$13, "data-compact", _p$.a = _v$29);
|
|
523
|
+
_v$30 !== _p$.o && _$setAttribute(_el$13, "data-fill", _p$.o = _v$30);
|
|
524
|
+
_v$31 !== _p$.i && _$setAttribute(_el$13, "data-short", _p$.i = _v$31);
|
|
525
|
+
_v$32 !== _p$.n && _$setAttribute(_el$13, "data-moving", _p$.n = _v$32);
|
|
526
|
+
_v$33 !== _p$.s && _$setAttribute(_el$13, "data-continues-before", _p$.s = _v$33);
|
|
527
|
+
_v$34 !== _p$.h && _$setAttribute(_el$13, "data-continues-after", _p$.h = _v$34);
|
|
528
|
+
_v$35 !== _p$.r && _$setAttribute(_el$13, "data-bar", _p$.r = _v$35);
|
|
529
|
+
_v$36 !== _p$.d && _$setAttribute(_el$13, "data-display", _p$.d = _v$36);
|
|
530
|
+
_p$.l = _$style(_el$13, _v$37, _p$.l);
|
|
531
|
+
_v$38 !== _p$.u && _$setAttribute(_el$13, "aria-label", _p$.u = _v$38);
|
|
456
532
|
return _p$;
|
|
457
533
|
}, {
|
|
458
534
|
e: undefined,
|
|
@@ -463,9 +539,12 @@ const EventChip = props => {
|
|
|
463
539
|
n: undefined,
|
|
464
540
|
s: undefined,
|
|
465
541
|
h: undefined,
|
|
466
|
-
r: undefined
|
|
542
|
+
r: undefined,
|
|
543
|
+
d: undefined,
|
|
544
|
+
l: undefined,
|
|
545
|
+
u: undefined
|
|
467
546
|
});
|
|
468
|
-
return _el$
|
|
547
|
+
return _el$13;
|
|
469
548
|
})();
|
|
470
549
|
};
|
|
471
550
|
const slotInteractionProps = (owner, slot, suppressed, nativeControl = false) => {
|
|
@@ -508,8 +587,8 @@ const CalendarNavigationLink = props => {
|
|
|
508
587
|
props.owner.onNavigateHref?.(props.href);
|
|
509
588
|
};
|
|
510
589
|
return props.owner.onNavigateHref ? (() => {
|
|
511
|
-
var _el$
|
|
512
|
-
_$spread(_el$
|
|
590
|
+
var _el$14 = _$getNextElement(_tmpl$1);
|
|
591
|
+
_$spread(_el$14, _$mergeProps(() => props.anchorProps, {
|
|
513
592
|
get href() {
|
|
514
593
|
return props.href;
|
|
515
594
|
},
|
|
@@ -517,9 +596,9 @@ const CalendarNavigationLink = props => {
|
|
|
517
596
|
"onPointerEnter": preload,
|
|
518
597
|
"onFocus": preload
|
|
519
598
|
}), false, true);
|
|
520
|
-
_$insert(_el$
|
|
599
|
+
_$insert(_el$14, () => props.children);
|
|
521
600
|
_$runHydrationEvents();
|
|
522
|
-
return _el$
|
|
601
|
+
return _el$14;
|
|
523
602
|
})() : props.owner.onNavigate ? _$createComponent(Link, _$mergeProps(() => props.anchorProps, {
|
|
524
603
|
get href() {
|
|
525
604
|
return props.href;
|
|
@@ -534,21 +613,21 @@ const CalendarNavigationLink = props => {
|
|
|
534
613
|
return props.children;
|
|
535
614
|
}
|
|
536
615
|
})) : (() => {
|
|
537
|
-
var _el$
|
|
538
|
-
_$spread(_el$
|
|
616
|
+
var _el$15 = _$getNextElement(_tmpl$1);
|
|
617
|
+
_$spread(_el$15, _$mergeProps(() => props.anchorProps, {
|
|
539
618
|
get href() {
|
|
540
619
|
return props.href;
|
|
541
620
|
},
|
|
542
621
|
"onPointerEnter": preload,
|
|
543
622
|
"onFocus": preload
|
|
544
623
|
}), false, true);
|
|
545
|
-
_$insert(_el$
|
|
624
|
+
_$insert(_el$15, () => props.children);
|
|
546
625
|
_$runHydrationEvents();
|
|
547
|
-
return _el$
|
|
626
|
+
return _el$15;
|
|
548
627
|
})();
|
|
549
628
|
};
|
|
550
629
|
const CalendarViewLinks = props => {
|
|
551
|
-
const
|
|
630
|
+
const calendarMessages = useCalendarMessages();
|
|
552
631
|
const refs = [];
|
|
553
632
|
const selectRelative = (currentIndex, direction) => {
|
|
554
633
|
if (props.options.length === 0) return;
|
|
@@ -567,14 +646,18 @@ const CalendarViewLinks = props => {
|
|
|
567
646
|
}
|
|
568
647
|
};
|
|
569
648
|
return (() => {
|
|
570
|
-
var _el$
|
|
571
|
-
_$insert(_el$
|
|
649
|
+
var _el$16 = _$getNextElement(_tmpl$10);
|
|
650
|
+
_$insert(_el$16, _$createComponent(For, {
|
|
572
651
|
get each() {
|
|
573
652
|
return props.options;
|
|
574
653
|
},
|
|
575
654
|
children: (option, index) => {
|
|
576
655
|
const active = () => (props.view === "mobile-month" ? "month" : props.view) === option.value;
|
|
577
|
-
const href = () =>
|
|
656
|
+
const href = () => {
|
|
657
|
+
const day = props.focusDay;
|
|
658
|
+
const atDay = day && !active() ? props.owner.getDateHref?.(day, option.value) : undefined;
|
|
659
|
+
return atDay ?? props.owner.getViewHref?.(option.value) ?? "#";
|
|
660
|
+
};
|
|
578
661
|
return _$createComponent(CalendarNavigationLink, {
|
|
579
662
|
get owner() {
|
|
580
663
|
return props.owner;
|
|
@@ -601,19 +684,35 @@ const CalendarViewLinks = props => {
|
|
|
601
684
|
});
|
|
602
685
|
}
|
|
603
686
|
}));
|
|
604
|
-
_$effect(() => _$setAttribute(_el$
|
|
605
|
-
return _el$
|
|
687
|
+
_$effect(() => _$setAttribute(_el$16, "aria-label", calendarMessages().calendarView));
|
|
688
|
+
return _el$16;
|
|
606
689
|
})();
|
|
607
690
|
};
|
|
608
691
|
|
|
692
|
+
/**
|
|
693
|
+
* The same day some months later, or the last day of that month when it is shorter: a step from January 31 lands on
|
|
694
|
+
* February 28, never in March. stdlib's `addMonths` runs over into the next month.
|
|
695
|
+
*/
|
|
696
|
+
const addMonthsClamped = (date, months, dateConfig) => {
|
|
697
|
+
const moved = calendar.addMonths(date, months, dateConfig);
|
|
698
|
+
if (calendar.formatDateKey(moved, dateConfig).slice(8) === calendar.formatDateKey(date, dateConfig).slice(8)) return moved;
|
|
699
|
+
return calendar.addDays(calendar.startOfMonth(moved, dateConfig), -1, dateConfig);
|
|
700
|
+
};
|
|
701
|
+
|
|
609
702
|
/** Custom views page by day, like the day view. */
|
|
610
703
|
const adjacentCalendarDate = (date, view, direction, dateConfig) => {
|
|
611
|
-
if (view === "year") return
|
|
612
|
-
if (view === "month" || view === "mobile-month") return
|
|
704
|
+
if (view === "year") return addMonthsClamped(date, direction * 12, dateConfig);
|
|
705
|
+
if (view === "month" || view === "mobile-month") return addMonthsClamped(date, direction, dateConfig);
|
|
613
706
|
return calendar.addDays(date, direction * (view === "week" ? 7 : 1), dateConfig);
|
|
614
707
|
};
|
|
708
|
+
|
|
709
|
+
/** Opens a view at a day through the host's callbacks. Hosts may keep the view and the date apart, so both hear it. */
|
|
710
|
+
const openViewAt = (owner, date, view) => {
|
|
711
|
+
owner.onViewChange?.(view);
|
|
712
|
+
owner.onDateChange?.(date, view);
|
|
713
|
+
};
|
|
615
714
|
const CalendarHeader = props => {
|
|
616
|
-
const
|
|
715
|
+
const calendarMessages = useCalendarMessages();
|
|
617
716
|
const dateConfig = () => ownerDateConfig(props.owner);
|
|
618
717
|
const previous = () => adjacentCalendarDate(props.date, props.view, -1, dateConfig());
|
|
619
718
|
const next = () => adjacentCalendarDate(props.date, props.view, 1, dateConfig());
|
|
@@ -632,8 +731,51 @@ const CalendarHeader = props => {
|
|
|
632
731
|
if (props.view === "week") return `${formatDay(calendar.startOfWeek(props.date, dateConfig()), dateConfig())} - ${formatDay(calendar.addDays(calendar.startOfWeek(props.date, dateConfig()), 6, dateConfig()), dateConfig())}`;
|
|
633
732
|
return formatMonth(props.date, dateConfig());
|
|
634
733
|
};
|
|
734
|
+
/**
|
|
735
|
+
* The titles this view can show around the current date: the months of the year, the weeks of the month, or a day
|
|
736
|
+
* of each weekday in every month. Their widest one sets the title's width.
|
|
737
|
+
*/
|
|
738
|
+
const titleWidths = createMemo(() => {
|
|
739
|
+
const context = dateConfig();
|
|
740
|
+
if (props.view === "year") return [];
|
|
741
|
+
const {
|
|
742
|
+
year
|
|
743
|
+
} = zonedYearMonth(props.date, context);
|
|
744
|
+
if (props.view === "month" || props.view === "mobile-month") return Array.from({
|
|
745
|
+
length: 12
|
|
746
|
+
}, (_, month) => formatMonth(zonedMonthDate(year, month, context), context));
|
|
747
|
+
if (props.view === "week") {
|
|
748
|
+
const first = calendar.startOfWeek(calendar.startOfMonth(props.date, context), context);
|
|
749
|
+
return Array.from({
|
|
750
|
+
length: 6
|
|
751
|
+
}, (_, week) => {
|
|
752
|
+
const start = calendar.addDays(first, week * 7, context);
|
|
753
|
+
return `${formatDay(start, context)} - ${formatDay(calendar.addDays(start, 6, context), context)}`;
|
|
754
|
+
});
|
|
755
|
+
}
|
|
756
|
+
return Array.from({
|
|
757
|
+
length: 12
|
|
758
|
+
}, (_, month) => month).flatMap(month => {
|
|
759
|
+
const first = zonedMonthDate(year, month, context);
|
|
760
|
+
return Array.from({
|
|
761
|
+
length: 7
|
|
762
|
+
}, (_, offset) => calendar.addDays(first, 21 + offset, context).toLocaleDateString(context.locale ?? "en", {
|
|
763
|
+
weekday: "long",
|
|
764
|
+
month: "long",
|
|
765
|
+
day: "numeric",
|
|
766
|
+
year: "numeric",
|
|
767
|
+
timeZone: context.timeZone
|
|
768
|
+
}));
|
|
769
|
+
});
|
|
770
|
+
});
|
|
635
771
|
const goDate = date => props.owner.onDateChange?.(date, props.view);
|
|
636
772
|
const goView = view => {
|
|
773
|
+
// Like the switcher's links, the other views open at the day selected in the month view.
|
|
774
|
+
const day = props.focusDay;
|
|
775
|
+
if (day && props.owner.onDateChange && view !== props.view) {
|
|
776
|
+
openViewAt(props.owner, day, view);
|
|
777
|
+
return;
|
|
778
|
+
}
|
|
637
779
|
if (props.owner.onViewChange) {
|
|
638
780
|
props.owner.onViewChange(view);
|
|
639
781
|
return;
|
|
@@ -654,18 +796,18 @@ const CalendarHeader = props => {
|
|
|
654
796
|
class: "k2b-calendar-header__nav-button"
|
|
655
797
|
},
|
|
656
798
|
get children() {
|
|
657
|
-
var _el$
|
|
658
|
-
_$className(_el$
|
|
659
|
-
return _el$
|
|
799
|
+
var _el$17 = _$getNextElement(_tmpl$11);
|
|
800
|
+
_$className(_el$17, `ti ${icon}`);
|
|
801
|
+
return _el$17;
|
|
660
802
|
}
|
|
661
803
|
}) : props.owner.onDateChange ? (() => {
|
|
662
|
-
var _el$
|
|
663
|
-
_el$
|
|
664
|
-
_el$
|
|
665
|
-
_$setAttribute(_el$
|
|
666
|
-
_$className(_el$
|
|
804
|
+
var _el$18 = _$getNextElement(_tmpl$12),
|
|
805
|
+
_el$19 = _el$18.firstChild;
|
|
806
|
+
_el$18.$$click = () => goDate(date);
|
|
807
|
+
_$setAttribute(_el$18, "aria-label", label);
|
|
808
|
+
_$className(_el$19, `ti ${icon}`);
|
|
667
809
|
_$runHydrationEvents();
|
|
668
|
-
return _el$
|
|
810
|
+
return _el$18;
|
|
669
811
|
})() : _$createComponent(CalendarNavigationLink, {
|
|
670
812
|
get owner() {
|
|
671
813
|
return props.owner;
|
|
@@ -677,9 +819,9 @@ const CalendarHeader = props => {
|
|
|
677
819
|
class: "k2b-calendar-header__nav-button"
|
|
678
820
|
},
|
|
679
821
|
get children() {
|
|
680
|
-
var _el$
|
|
681
|
-
_$className(_el$
|
|
682
|
-
return _el$
|
|
822
|
+
var _el$20 = _$getNextElement(_tmpl$11);
|
|
823
|
+
_$className(_el$20, `ti ${icon}`);
|
|
824
|
+
return _el$20;
|
|
683
825
|
}
|
|
684
826
|
});
|
|
685
827
|
};
|
|
@@ -687,9 +829,9 @@ const CalendarHeader = props => {
|
|
|
687
829
|
const today = calendar.today(dateConfig());
|
|
688
830
|
const href = props.owner.getDateHref?.(today, props.view);
|
|
689
831
|
const label = (() => {
|
|
690
|
-
var _el$
|
|
691
|
-
_$insert(_el$
|
|
692
|
-
return _el$
|
|
832
|
+
var _el$21 = _$getNextElement(_tmpl$13);
|
|
833
|
+
_$insert(_el$21, () => props.labels.today);
|
|
834
|
+
return _el$21;
|
|
693
835
|
})();
|
|
694
836
|
return (props.owner.onNavigateHref || props.owner.onNavigate) && href ? _$createComponent(CalendarNavigationLink, {
|
|
695
837
|
get owner() {
|
|
@@ -738,27 +880,52 @@ const CalendarHeader = props => {
|
|
|
738
880
|
label: props.labels.year
|
|
739
881
|
}].filter(option => !props.owner.views || props.owner.views.includes(option.value)), ...(props.owner.customViews ?? [])]);
|
|
740
882
|
return (() => {
|
|
741
|
-
var _el$
|
|
742
|
-
_el$
|
|
743
|
-
_el$
|
|
744
|
-
[_el$
|
|
745
|
-
_el$
|
|
746
|
-
[_el$
|
|
747
|
-
_el$
|
|
748
|
-
_el$
|
|
749
|
-
_el$
|
|
750
|
-
[_el$
|
|
751
|
-
_el$
|
|
752
|
-
[_el$
|
|
753
|
-
_el$
|
|
754
|
-
|
|
755
|
-
_el$
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
883
|
+
var _el$22 = _$getNextElement(_tmpl$16),
|
|
884
|
+
_el$23 = _el$22.firstChild,
|
|
885
|
+
_el$28 = _el$23.firstChild,
|
|
886
|
+
[_el$29, _co$4] = _$getNextMarker(_el$28.nextSibling),
|
|
887
|
+
_el$30 = _el$29.nextSibling,
|
|
888
|
+
[_el$31, _co$5] = _$getNextMarker(_el$30.nextSibling),
|
|
889
|
+
_el$24 = _el$31.nextSibling,
|
|
890
|
+
_el$25 = _el$24.firstChild,
|
|
891
|
+
_el$26 = _el$25.nextSibling,
|
|
892
|
+
[_el$27, _co$3] = _$getNextMarker(_el$26.nextSibling),
|
|
893
|
+
_el$41 = _el$23.nextSibling,
|
|
894
|
+
[_el$42, _co$9] = _$getNextMarker(_el$41.nextSibling),
|
|
895
|
+
_el$33 = _el$42.nextSibling,
|
|
896
|
+
_el$34 = _el$33.firstChild,
|
|
897
|
+
[_el$35, _co$6] = _$getNextMarker(_el$34.nextSibling),
|
|
898
|
+
_el$36 = _el$35.nextSibling,
|
|
899
|
+
[_el$37, _co$7] = _$getNextMarker(_el$36.nextSibling),
|
|
900
|
+
_el$38 = _el$37.nextSibling,
|
|
901
|
+
[_el$39, _co$8] = _$getNextMarker(_el$38.nextSibling),
|
|
902
|
+
_el$43 = _el$33.nextSibling,
|
|
903
|
+
[_el$44, _co$0] = _$getNextMarker(_el$43.nextSibling);
|
|
904
|
+
_$insert(_el$23, () => navButton(previous(), "ti-chevron-left", props.labels.previous), _el$29, _co$4);
|
|
905
|
+
_$insert(_el$23, () => navButton(next(), "ti-chevron-right", props.labels.next), _el$31, _co$5);
|
|
906
|
+
_$insert(_el$25, title);
|
|
907
|
+
_$insert(_el$24, _$createComponent(For, {
|
|
908
|
+
get each() {
|
|
909
|
+
return titleWidths();
|
|
910
|
+
},
|
|
911
|
+
children: candidate => (() => {
|
|
912
|
+
var _el$45 = _$getNextElement(_tmpl$17);
|
|
913
|
+
_$insert(_el$45, candidate);
|
|
914
|
+
return _el$45;
|
|
915
|
+
})()
|
|
916
|
+
}), _el$27, _co$3);
|
|
917
|
+
_$insert(_el$22, _$createComponent(Show, {
|
|
918
|
+
get when() {
|
|
919
|
+
return props.owner.toolbarContent;
|
|
920
|
+
},
|
|
921
|
+
get children() {
|
|
922
|
+
var _el$32 = _$getNextElement(_tmpl$14);
|
|
923
|
+
_$insert(_el$32, () => props.owner.toolbarContent);
|
|
924
|
+
return _el$32;
|
|
925
|
+
}
|
|
926
|
+
}), _el$42, _co$9);
|
|
927
|
+
_$insert(_el$33, todayButton, _el$35, _co$6);
|
|
928
|
+
_$insert(_el$33, _$createComponent(Show, {
|
|
762
929
|
get when() {
|
|
763
930
|
return _$memo(() => !!!props.owner.onViewChange)() && props.owner.getViewHref;
|
|
764
931
|
},
|
|
@@ -767,7 +934,7 @@ const CalendarHeader = props => {
|
|
|
767
934
|
value: () => props.view === "mobile-month" ? "month" : props.view,
|
|
768
935
|
onValueChange: goView,
|
|
769
936
|
get ariaLabel() {
|
|
770
|
-
return
|
|
937
|
+
return calendarMessages().calendarView;
|
|
771
938
|
},
|
|
772
939
|
get options() {
|
|
773
940
|
return viewOptions();
|
|
@@ -784,24 +951,29 @@ const CalendarHeader = props => {
|
|
|
784
951
|
},
|
|
785
952
|
get options() {
|
|
786
953
|
return viewOptions();
|
|
954
|
+
},
|
|
955
|
+
get focusDay() {
|
|
956
|
+
return props.focusDay;
|
|
787
957
|
}
|
|
788
958
|
});
|
|
789
959
|
}
|
|
790
|
-
}), _el$
|
|
791
|
-
_$insert(_el$
|
|
792
|
-
_$insert(_el$
|
|
960
|
+
}), _el$37, _co$7);
|
|
961
|
+
_$insert(_el$33, () => props.owner.toolbarActions, _el$39, _co$8);
|
|
962
|
+
_$insert(_el$22, _$createComponent(Show, {
|
|
793
963
|
get when() {
|
|
794
964
|
return props.owner.navigationPending;
|
|
795
965
|
},
|
|
796
966
|
get children() {
|
|
797
|
-
return _$getNextElement(_tmpl$
|
|
967
|
+
return _$getNextElement(_tmpl$15);
|
|
798
968
|
}
|
|
799
|
-
}), _el$
|
|
800
|
-
return _el$
|
|
969
|
+
}), _el$44, _co$0);
|
|
970
|
+
return _el$22;
|
|
801
971
|
})();
|
|
802
972
|
};
|
|
803
|
-
|
|
804
|
-
|
|
973
|
+
|
|
974
|
+
/** The compact month of `mobile-month`: a picker whose days link to their agenda. */
|
|
975
|
+
const MonthPickerView = props => {
|
|
976
|
+
const calendarMessages = useCalendarMessages();
|
|
805
977
|
const dateConfig = createMemo(() => ownerDateConfig(props.owner));
|
|
806
978
|
const [movePreview, setMovePreview] = createSignal(null);
|
|
807
979
|
const [movingEventId, setMovingEventId] = createSignal("");
|
|
@@ -855,55 +1027,55 @@ const MonthView = props => {
|
|
|
855
1027
|
};
|
|
856
1028
|
onCleanup(() => cancelInteraction?.());
|
|
857
1029
|
return (() => {
|
|
858
|
-
var _el$
|
|
859
|
-
_el$
|
|
860
|
-
_el$
|
|
861
|
-
[_el$
|
|
862
|
-
_el$
|
|
863
|
-
[_el$
|
|
864
|
-
_el$
|
|
865
|
-
[_el$
|
|
866
|
-
_$insert(_el$
|
|
1030
|
+
var _el$46 = _$getNextElement(_tmpl$19),
|
|
1031
|
+
_el$47 = _el$46.firstChild,
|
|
1032
|
+
_el$49 = _el$47.firstChild,
|
|
1033
|
+
[_el$50, _co$1] = _$getNextMarker(_el$49.nextSibling),
|
|
1034
|
+
_el$51 = _el$50.nextSibling,
|
|
1035
|
+
[_el$52, _co$10] = _$getNextMarker(_el$51.nextSibling),
|
|
1036
|
+
_el$53 = _el$47.nextSibling,
|
|
1037
|
+
[_el$54, _co$11] = _$getNextMarker(_el$53.nextSibling);
|
|
1038
|
+
_$insert(_el$47, _$createComponent(Show, {
|
|
867
1039
|
get when() {
|
|
868
1040
|
return props.owner.withWeekNumbers;
|
|
869
1041
|
},
|
|
870
1042
|
get children() {
|
|
871
|
-
var _el$
|
|
872
|
-
_$insert(_el$
|
|
873
|
-
return _el$
|
|
1043
|
+
var _el$48 = _$getNextElement(_tmpl$18);
|
|
1044
|
+
_$insert(_el$48, () => calendarMessages().weekShort);
|
|
1045
|
+
return _el$48;
|
|
874
1046
|
}
|
|
875
|
-
}), _el$
|
|
876
|
-
_$insert(_el$
|
|
1047
|
+
}), _el$50, _co$1);
|
|
1048
|
+
_$insert(_el$47, _$createComponent(For, {
|
|
877
1049
|
get each() {
|
|
878
1050
|
return weekdays();
|
|
879
1051
|
},
|
|
880
1052
|
children: day => (() => {
|
|
881
|
-
var _el$
|
|
882
|
-
_$insert(_el$
|
|
883
|
-
return _el$
|
|
1053
|
+
var _el$55 = _$getNextElement(_tmpl$18);
|
|
1054
|
+
_$insert(_el$55, day);
|
|
1055
|
+
return _el$55;
|
|
884
1056
|
})()
|
|
885
|
-
}), _el$
|
|
886
|
-
_$insert(_el$
|
|
1057
|
+
}), _el$52, _co$10);
|
|
1058
|
+
_$insert(_el$46, _$createComponent(For, {
|
|
887
1059
|
get each() {
|
|
888
1060
|
return weeks();
|
|
889
1061
|
},
|
|
890
1062
|
children: week => (() => {
|
|
891
|
-
var _el$
|
|
892
|
-
_el$
|
|
893
|
-
[_el$
|
|
894
|
-
_el$
|
|
895
|
-
[_el$
|
|
896
|
-
_$insert(_el$
|
|
1063
|
+
var _el$56 = _$getNextElement(_tmpl$21),
|
|
1064
|
+
_el$58 = _el$56.firstChild,
|
|
1065
|
+
[_el$59, _co$12] = _$getNextMarker(_el$58.nextSibling),
|
|
1066
|
+
_el$60 = _el$59.nextSibling,
|
|
1067
|
+
[_el$61, _co$13] = _$getNextMarker(_el$60.nextSibling);
|
|
1068
|
+
_$insert(_el$56, _$createComponent(Show, {
|
|
897
1069
|
get when() {
|
|
898
1070
|
return props.owner.withWeekNumbers;
|
|
899
1071
|
},
|
|
900
1072
|
get children() {
|
|
901
|
-
var _el$
|
|
902
|
-
_$insert(_el$
|
|
903
|
-
return _el$
|
|
1073
|
+
var _el$57 = _$getNextElement(_tmpl$20);
|
|
1074
|
+
_$insert(_el$57, () => zonedWeekNumber(week[0], dateConfig()));
|
|
1075
|
+
return _el$57;
|
|
904
1076
|
}
|
|
905
|
-
}), _el$
|
|
906
|
-
_$insert(_el$
|
|
1077
|
+
}), _el$59, _co$12);
|
|
1078
|
+
_$insert(_el$56, _$createComponent(For, {
|
|
907
1079
|
each: week,
|
|
908
1080
|
children: day => {
|
|
909
1081
|
const dayKey = calendar.formatDateKey(day, dateConfig());
|
|
@@ -931,25 +1103,25 @@ const MonthView = props => {
|
|
|
931
1103
|
};
|
|
932
1104
|
});
|
|
933
1105
|
return (() => {
|
|
934
|
-
var _el$
|
|
935
|
-
_el$
|
|
936
|
-
[_el$
|
|
937
|
-
_el$
|
|
938
|
-
_el$
|
|
939
|
-
[_el$
|
|
940
|
-
_el$
|
|
941
|
-
[_el$
|
|
942
|
-
_el$
|
|
943
|
-
_el$
|
|
944
|
-
[_el$
|
|
945
|
-
_el$
|
|
946
|
-
[_el$
|
|
947
|
-
_el$
|
|
948
|
-
[_el$
|
|
949
|
-
_el$
|
|
950
|
-
_$setAttribute(_el$
|
|
951
|
-
_$setAttribute(_el$
|
|
952
|
-
_$insert(_el$
|
|
1106
|
+
var _el$62 = _$getNextElement(_tmpl$24),
|
|
1107
|
+
_el$78 = _el$62.firstChild,
|
|
1108
|
+
[_el$79, _co$19] = _$getNextMarker(_el$78.nextSibling),
|
|
1109
|
+
_el$64 = _el$79.nextSibling,
|
|
1110
|
+
_el$65 = _el$64.firstChild,
|
|
1111
|
+
[_el$66, _co$14] = _$getNextMarker(_el$65.nextSibling),
|
|
1112
|
+
_el$67 = _el$66.nextSibling,
|
|
1113
|
+
[_el$68, _co$15] = _$getNextMarker(_el$67.nextSibling),
|
|
1114
|
+
_el$69 = _el$64.nextSibling,
|
|
1115
|
+
_el$71 = _el$69.firstChild,
|
|
1116
|
+
[_el$72, _co$16] = _$getNextMarker(_el$71.nextSibling),
|
|
1117
|
+
_el$73 = _el$72.nextSibling,
|
|
1118
|
+
[_el$74, _co$17] = _$getNextMarker(_el$73.nextSibling),
|
|
1119
|
+
_el$75 = _el$74.nextSibling,
|
|
1120
|
+
[_el$76, _co$18] = _$getNextMarker(_el$75.nextSibling),
|
|
1121
|
+
_el$77 = _el$69.nextSibling;
|
|
1122
|
+
_$setAttribute(_el$62, "data-calendar-day-key", dayKey);
|
|
1123
|
+
_$setAttribute(_el$62, "data-outside", !sameMonth ? "true" : undefined);
|
|
1124
|
+
_$insert(_el$62, _$createComponent(Show, {
|
|
953
1125
|
get when() {
|
|
954
1126
|
return props.owner.onSlotActivate;
|
|
955
1127
|
},
|
|
@@ -966,7 +1138,7 @@ const MonthView = props => {
|
|
|
966
1138
|
get anchorProps() {
|
|
967
1139
|
return {
|
|
968
1140
|
class: "k2b-calendar-month__day-target",
|
|
969
|
-
"aria-label":
|
|
1141
|
+
"aria-label": calendarMessages().openDate({
|
|
970
1142
|
label: dayLabel
|
|
971
1143
|
})
|
|
972
1144
|
};
|
|
@@ -975,10 +1147,10 @@ const MonthView = props => {
|
|
|
975
1147
|
});
|
|
976
1148
|
},
|
|
977
1149
|
get children() {
|
|
978
|
-
var _el$
|
|
979
|
-
_$spread(_el$
|
|
1150
|
+
var _el$63 = _$getNextElement(_tmpl$22);
|
|
1151
|
+
_$spread(_el$63, _$mergeProps({
|
|
980
1152
|
get ["aria-label"]() {
|
|
981
|
-
return
|
|
1153
|
+
return calendarMessages().createEventOn({
|
|
982
1154
|
label: dayLabel
|
|
983
1155
|
});
|
|
984
1156
|
}
|
|
@@ -991,20 +1163,20 @@ const MonthView = props => {
|
|
|
991
1163
|
};
|
|
992
1164
|
}, () => performance.now() < suppressSlotClickUntil, true)), false, false);
|
|
993
1165
|
_$runHydrationEvents();
|
|
994
|
-
return _el$
|
|
1166
|
+
return _el$63;
|
|
995
1167
|
}
|
|
996
|
-
}), _el$
|
|
997
|
-
_$insert(_el$
|
|
1168
|
+
}), _el$79, _co$19);
|
|
1169
|
+
_$insert(_el$64, _$createComponent(Show, {
|
|
998
1170
|
get when() {
|
|
999
1171
|
return props.owner.onSlotActivate && href;
|
|
1000
1172
|
},
|
|
1001
1173
|
get fallback() {
|
|
1002
1174
|
return (() => {
|
|
1003
|
-
var _el$
|
|
1004
|
-
_$setAttribute(_el$
|
|
1005
|
-
_$setAttribute(_el$
|
|
1006
|
-
_$insert(_el$
|
|
1007
|
-
return _el$
|
|
1175
|
+
var _el$80 = _$getNextElement(_tmpl$25);
|
|
1176
|
+
_$setAttribute(_el$80, "data-today", isToday ? "true" : undefined);
|
|
1177
|
+
_$setAttribute(_el$80, "data-outside", !sameMonth ? "true" : undefined);
|
|
1178
|
+
_$insert(_el$80, () => calendar.formatDayNumber(day, dateConfig()));
|
|
1179
|
+
return _el$80;
|
|
1008
1180
|
})();
|
|
1009
1181
|
},
|
|
1010
1182
|
children: dayHref => _$createComponent(CalendarNavigationLink, {
|
|
@@ -1019,7 +1191,7 @@ const MonthView = props => {
|
|
|
1019
1191
|
class: "k2b-calendar-month__day-number",
|
|
1020
1192
|
"data-today": isToday ? "true" : undefined,
|
|
1021
1193
|
"data-outside": !sameMonth ? "true" : undefined,
|
|
1022
|
-
"aria-label":
|
|
1194
|
+
"aria-label": calendarMessages().openDate({
|
|
1023
1195
|
label: dayLabel
|
|
1024
1196
|
})
|
|
1025
1197
|
};
|
|
@@ -1028,40 +1200,40 @@ const MonthView = props => {
|
|
|
1028
1200
|
return calendar.formatDayNumber(day, dateConfig());
|
|
1029
1201
|
}
|
|
1030
1202
|
})
|
|
1031
|
-
}), _el$
|
|
1032
|
-
_$insert(_el$
|
|
1203
|
+
}), _el$66, _co$14);
|
|
1204
|
+
_$insert(_el$64, _$createComponent(Show, {
|
|
1033
1205
|
when: dayBadge,
|
|
1034
1206
|
children: badge => (() => {
|
|
1035
|
-
var _el$
|
|
1036
|
-
_el$
|
|
1037
|
-
[_el$
|
|
1038
|
-
_el$
|
|
1039
|
-
[_el$
|
|
1040
|
-
_$insert(_el$
|
|
1207
|
+
var _el$81 = _$getNextElement(_tmpl$26),
|
|
1208
|
+
_el$82 = _el$81.firstChild,
|
|
1209
|
+
[_el$83, _co$20] = _$getNextMarker(_el$82.nextSibling),
|
|
1210
|
+
_el$84 = _el$83.nextSibling,
|
|
1211
|
+
[_el$85, _co$21] = _$getNextMarker(_el$84.nextSibling);
|
|
1212
|
+
_$insert(_el$81, _$createComponent(Show, {
|
|
1041
1213
|
get when() {
|
|
1042
1214
|
return badge().icon;
|
|
1043
1215
|
},
|
|
1044
1216
|
children: icon => (() => {
|
|
1045
|
-
var _el$
|
|
1046
|
-
_$effect(() => _$className(_el$
|
|
1047
|
-
return _el$
|
|
1217
|
+
var _el$86 = _$getNextElement(_tmpl$11);
|
|
1218
|
+
_$effect(() => _$className(_el$86, `k2b-calendar-month__badge-icon ti ti-${icon()}`));
|
|
1219
|
+
return _el$86;
|
|
1048
1220
|
})()
|
|
1049
|
-
}), _el$
|
|
1050
|
-
_$insert(_el$
|
|
1051
|
-
return _el$
|
|
1221
|
+
}), _el$83, _co$20);
|
|
1222
|
+
_$insert(_el$81, () => badge().label, _el$85, _co$21);
|
|
1223
|
+
return _el$81;
|
|
1052
1224
|
})()
|
|
1053
|
-
}), _el$
|
|
1054
|
-
_$insert(_el$
|
|
1225
|
+
}), _el$68, _co$15);
|
|
1226
|
+
_$insert(_el$69, _$createComponent(Show, {
|
|
1055
1227
|
get when() {
|
|
1056
1228
|
return eventStack().preview;
|
|
1057
1229
|
},
|
|
1058
1230
|
get children() {
|
|
1059
|
-
var _el$
|
|
1060
|
-
_$insert(_el$
|
|
1061
|
-
return _el$
|
|
1231
|
+
var _el$70 = _$getNextElement(_tmpl$23);
|
|
1232
|
+
_$insert(_el$70, () => props.events.find(event => event.id === eventStack().preview.id)?.title ?? calendarMessages().moveEvent);
|
|
1233
|
+
return _el$70;
|
|
1062
1234
|
}
|
|
1063
|
-
}), _el$
|
|
1064
|
-
_$insert(_el$
|
|
1235
|
+
}), _el$72, _co$16);
|
|
1236
|
+
_$insert(_el$69, _$createComponent(For, {
|
|
1065
1237
|
get each() {
|
|
1066
1238
|
return eventStack().visibleEvents;
|
|
1067
1239
|
},
|
|
@@ -1081,8 +1253,8 @@ const MonthView = props => {
|
|
|
1081
1253
|
return props.owner.onEventDrop ? (pointerEvent, markDragged) => startMove(pointerEvent, event, markDragged) : undefined;
|
|
1082
1254
|
}
|
|
1083
1255
|
})
|
|
1084
|
-
}), _el$
|
|
1085
|
-
_$insert(_el$
|
|
1256
|
+
}), _el$74, _co$17);
|
|
1257
|
+
_$insert(_el$69, _$createComponent(Show, {
|
|
1086
1258
|
get when() {
|
|
1087
1259
|
return eventStack().hiddenCount > 0;
|
|
1088
1260
|
},
|
|
@@ -1096,56 +1268,1265 @@ const MonthView = props => {
|
|
|
1096
1268
|
class: "k2b-calendar-month__more"
|
|
1097
1269
|
},
|
|
1098
1270
|
get children() {
|
|
1099
|
-
return
|
|
1271
|
+
return calendarMessages().calendarMoreEvents({
|
|
1272
|
+
count: eventStack().hiddenCount
|
|
1273
|
+
});
|
|
1100
1274
|
}
|
|
1101
1275
|
});
|
|
1102
1276
|
}
|
|
1103
|
-
}), _el$
|
|
1104
|
-
_$insert(_el$
|
|
1277
|
+
}), _el$76, _co$18);
|
|
1278
|
+
_$insert(_el$77, _$createComponent(For, {
|
|
1105
1279
|
get each() {
|
|
1106
1280
|
return events.slice(0, 4);
|
|
1107
1281
|
},
|
|
1108
1282
|
children: event => (() => {
|
|
1109
|
-
var _el$
|
|
1283
|
+
var _el$87 = _$getNextElement(_tmpl$27);
|
|
1110
1284
|
_$effect(_p$ => {
|
|
1111
|
-
var _v$
|
|
1112
|
-
_v$
|
|
1285
|
+
var _v$41 = event.colorHex ? undefined : event.color ?? "blue",
|
|
1286
|
+
_v$42 = event.colorHex ? {
|
|
1113
1287
|
"background-color": event.colorHex
|
|
1114
1288
|
} : undefined;
|
|
1115
|
-
_v$
|
|
1116
|
-
_p$.t = _$style(_el$
|
|
1289
|
+
_v$41 !== _p$.e && _$setAttribute(_el$87, "data-color", _p$.e = _v$41);
|
|
1290
|
+
_p$.t = _$style(_el$87, _v$42, _p$.t);
|
|
1117
1291
|
return _p$;
|
|
1118
1292
|
}, {
|
|
1119
1293
|
e: undefined,
|
|
1120
1294
|
t: undefined
|
|
1121
1295
|
});
|
|
1122
|
-
return _el$
|
|
1296
|
+
return _el$87;
|
|
1123
1297
|
})()
|
|
1124
1298
|
}));
|
|
1125
|
-
_$effect(() => _$setAttribute(_el$
|
|
1126
|
-
return _el$
|
|
1299
|
+
_$effect(() => _$setAttribute(_el$62, "data-drop-preview", movePreview()?.start && calendar.formatDateKey(movePreview().start, dateConfig()) === dayKey ? "true" : undefined));
|
|
1300
|
+
return _el$62;
|
|
1127
1301
|
})();
|
|
1128
1302
|
}
|
|
1129
|
-
}), _el$
|
|
1130
|
-
_$effect(() => _$setAttribute(_el$
|
|
1131
|
-
return _el$
|
|
1303
|
+
}), _el$61, _co$13);
|
|
1304
|
+
_$effect(() => _$setAttribute(_el$56, "data-week-numbers", props.owner.withWeekNumbers ? "true" : undefined));
|
|
1305
|
+
return _el$56;
|
|
1132
1306
|
})()
|
|
1133
|
-
}), _el$
|
|
1307
|
+
}), _el$54, _co$11);
|
|
1134
1308
|
_$effect(_p$ => {
|
|
1135
|
-
var _v$
|
|
1136
|
-
_v$
|
|
1137
|
-
_v$
|
|
1138
|
-
_v$
|
|
1309
|
+
var _v$39 = `auto repeat(${weeks().length}, ${props.compact ? "minmax(2.75rem, auto)" : "minmax(5rem, 1fr)"})`,
|
|
1310
|
+
_v$40 = props.owner.withWeekNumbers ? "true" : undefined;
|
|
1311
|
+
_v$39 !== _p$.e && _$setStyleProperty(_el$46, "grid-template-rows", _p$.e = _v$39);
|
|
1312
|
+
_v$40 !== _p$.t && _$setAttribute(_el$47, "data-week-numbers", _p$.t = _v$40);
|
|
1139
1313
|
return _p$;
|
|
1140
1314
|
}, {
|
|
1141
1315
|
e: undefined,
|
|
1142
1316
|
t: undefined
|
|
1143
1317
|
});
|
|
1144
|
-
return _el$
|
|
1318
|
+
return _el$46;
|
|
1319
|
+
})();
|
|
1320
|
+
};
|
|
1321
|
+
|
|
1322
|
+
/** One entry of the month grid: its whole range, and the days it covers as `YYYY-MM-DD` keys. */
|
|
1323
|
+
|
|
1324
|
+
/** Lane height and gap of the month entries, in rem; the stylesheet reads both from the grid's custom properties. */
|
|
1325
|
+
const MONTH_LANE_REM = 1.25;
|
|
1326
|
+
const MONTH_LANE_GAP_REM = 0.125;
|
|
1327
|
+
/** Rows drawn before the browser has measured the cells, as in the server response. */
|
|
1328
|
+
const MONTH_DEFAULT_LANES = 3;
|
|
1329
|
+
/** Room a bar keeps beside its title and date hint: padding, torn edge, gap, and an icon such as a task box or a flag. */
|
|
1330
|
+
const MONTH_HINT_SLACK_REM = 2.25;
|
|
1331
|
+
const dayKeyNumber = key => {
|
|
1332
|
+
const [year = "1970", month = "1", day = "1"] = key.split("-");
|
|
1333
|
+
return Date.UTC(Number(year), Number(month) - 1, Number(day)) / 86_400_000;
|
|
1334
|
+
};
|
|
1335
|
+
const orderedSelection = (anchor, focus) => anchor <= focus ? {
|
|
1336
|
+
first: anchor,
|
|
1337
|
+
last: focus
|
|
1338
|
+
} : {
|
|
1339
|
+
first: focus,
|
|
1340
|
+
last: anchor
|
|
1341
|
+
};
|
|
1342
|
+
|
|
1343
|
+
/** Groups the per-day pieces of the events back into one entry each: bars first, then the others by time. */
|
|
1344
|
+
const monthItems = events => {
|
|
1345
|
+
const items = new Map();
|
|
1346
|
+
for (const piece of events) {
|
|
1347
|
+
const key = `${piece.id}\u0000${piece.sourceStartDate.getTime()}`;
|
|
1348
|
+
const item = items.get(key);
|
|
1349
|
+
if (item) {
|
|
1350
|
+
if (piece.dayKey < item.firstKey) item.firstKey = piece.dayKey;
|
|
1351
|
+
if (piece.dayKey > item.lastKey) item.lastKey = piece.dayKey;
|
|
1352
|
+
item.days.set(piece.dayKey, piece);
|
|
1353
|
+
continue;
|
|
1354
|
+
}
|
|
1355
|
+
items.set(key, {
|
|
1356
|
+
key,
|
|
1357
|
+
event: {
|
|
1358
|
+
...piece,
|
|
1359
|
+
startDate: piece.sourceStartDate,
|
|
1360
|
+
endDate: piece.sourceEndDate
|
|
1361
|
+
},
|
|
1362
|
+
firstKey: piece.dayKey,
|
|
1363
|
+
lastKey: piece.dayKey,
|
|
1364
|
+
bar: false,
|
|
1365
|
+
days: new Map([[piece.dayKey, piece]])
|
|
1366
|
+
});
|
|
1367
|
+
}
|
|
1368
|
+
for (const item of items.values()) item.bar = item.firstKey !== item.lastKey || Boolean(item.event.allDay && item.event.display !== "marker");
|
|
1369
|
+
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));
|
|
1370
|
+
};
|
|
1371
|
+
|
|
1372
|
+
/** Places a calendar popover below its anchor when there is room and above it otherwise, inside the viewport. */
|
|
1373
|
+
const placeCalendarPopover = (anchor, popover) => {
|
|
1374
|
+
const margin = 8;
|
|
1375
|
+
const gap = 4;
|
|
1376
|
+
const rect = anchor.getBoundingClientRect();
|
|
1377
|
+
const width = Math.min(popover.offsetWidth || 288, window.innerWidth - margin * 2);
|
|
1378
|
+
const height = popover.offsetHeight;
|
|
1379
|
+
const left = Math.max(margin, Math.min(rect.left, window.innerWidth - width - margin));
|
|
1380
|
+
const roomBelow = window.innerHeight - rect.bottom - gap - margin;
|
|
1381
|
+
const above = height > roomBelow && rect.top - gap - margin > roomBelow;
|
|
1382
|
+
const top = above ? Math.max(margin, rect.top - height - gap) : Math.min(rect.bottom + gap, window.innerHeight - height - margin);
|
|
1383
|
+
popover.style.left = `${left}px`;
|
|
1384
|
+
popover.style.top = `${Math.max(margin, top)}px`;
|
|
1385
|
+
};
|
|
1386
|
+
let measureContext;
|
|
1387
|
+
/** 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. */
|
|
1388
|
+
const textWidth = (text, font) => {
|
|
1389
|
+
measureContext ??= typeof document === "undefined" ? null : document.createElement("canvas").getContext("2d");
|
|
1390
|
+
if (!measureContext) return Number.POSITIVE_INFINITY;
|
|
1391
|
+
measureContext.font = font;
|
|
1392
|
+
return measureContext.measureText(text).width;
|
|
1393
|
+
};
|
|
1394
|
+
|
|
1395
|
+
/** Follows a calendar link the way the calendar's own links do: through the host's navigation when it has one. */
|
|
1396
|
+
const followCalendarHref = (owner, href) => {
|
|
1397
|
+
if (owner.onNavigateHref) owner.onNavigateHref(href);else window.location.assign(href);
|
|
1398
|
+
};
|
|
1399
|
+
const PRINTABLE_KEY = /^.$/u;
|
|
1400
|
+
|
|
1401
|
+
/**
|
|
1402
|
+
* The month grid. A click selects a day and never navigates, a drag or Shift selects a range, and the arrow keys move
|
|
1403
|
+
* the selection. The quick create opens at the selection: quietly after a click, with the focus after a drag, a
|
|
1404
|
+
* double-click, Enter, or N. Every event is one bar per week row in a lane it keeps on each of its days, and each
|
|
1405
|
+
* cell shows as many entries as its height holds.
|
|
1406
|
+
*/
|
|
1407
|
+
const MonthView = props => {
|
|
1408
|
+
const calendarMessages = useCalendarMessages();
|
|
1409
|
+
const dateConfig = createMemo(() => ownerDateConfig(props.owner));
|
|
1410
|
+
// The shown month and its grid change only with the month, so a refresh of the same month keeps every cell and its
|
|
1411
|
+
// focus.
|
|
1412
|
+
const month = createMemo(() => zonedYearMonth(props.date, dateConfig()), undefined, {
|
|
1413
|
+
equals: (previous, next) => previous.year === next.year && previous.month === next.month
|
|
1414
|
+
});
|
|
1415
|
+
const weeks = createMemo(() => calendar.getMonthGrid(month().year, month().month, dateConfig()).map(week => week.map(day => ({
|
|
1416
|
+
day,
|
|
1417
|
+
key: calendar.formatDateKey(day, dateConfig())
|
|
1418
|
+
}))), undefined, {
|
|
1419
|
+
equals: (previous, next) => previous.map(week => week[0]?.key).join() === next.map(week => week[0]?.key).join()
|
|
1420
|
+
});
|
|
1421
|
+
const weekdays = createMemo(() => calendar.weekdays(dateConfig()));
|
|
1422
|
+
const todayKey = createMemo(() => calendar.formatDateKey(props.now, dateConfig()));
|
|
1423
|
+
const items = createMemo(() => monthItems(props.events));
|
|
1424
|
+
const weekLayouts = createMemo(() => weeks().map(week => layoutMonthWeek(week.map(entry => entry.key), items().map(item => ({
|
|
1425
|
+
item,
|
|
1426
|
+
firstKey: item.firstKey,
|
|
1427
|
+
lastKey: item.lastKey,
|
|
1428
|
+
bar: item.bar
|
|
1429
|
+
})))));
|
|
1430
|
+
const [capacities, setCapacities] = createSignal([]);
|
|
1431
|
+
const [cellWidth, setCellWidth] = createSignal(0);
|
|
1432
|
+
const [barFont, setBarFont] = createSignal("");
|
|
1433
|
+
const [anchorKey, setAnchorKey] = createSignal(null);
|
|
1434
|
+
const [focusKey, setFocusKey] = createSignal(null);
|
|
1435
|
+
const [popover, setPopover] = createSignal(null);
|
|
1436
|
+
/** Whether the quick create holds the focus; until then the grid keeps it. */
|
|
1437
|
+
const [createActive, setCreateActive] = createSignal(false);
|
|
1438
|
+
const [linkedItem, setLinkedItem] = createSignal("");
|
|
1439
|
+
const [movePreview, setMovePreview] = createSignal(null);
|
|
1440
|
+
const [movingEventId, setMovingEventId] = createSignal("");
|
|
1441
|
+
const cells = new Map();
|
|
1442
|
+
let popoverElement;
|
|
1443
|
+
let cancelInteraction;
|
|
1444
|
+
let suppressClickUntil = 0;
|
|
1445
|
+
let lastPointer = "mouse";
|
|
1446
|
+
let menuKey = null;
|
|
1447
|
+
/** The day to select once paging with Page Up or Page Down has shown its month. */
|
|
1448
|
+
let pendingKey = null;
|
|
1449
|
+
const selection = createMemo(() => {
|
|
1450
|
+
const anchor = anchorKey();
|
|
1451
|
+
const focus = focusKey();
|
|
1452
|
+
return anchor && focus ? orderedSelection(anchor, focus) : null;
|
|
1453
|
+
});
|
|
1454
|
+
const parseKey = key => calendar.parseCalendarDate(key, dateConfig());
|
|
1455
|
+
const rangeOf = range => ({
|
|
1456
|
+
start: parseKey(range.first),
|
|
1457
|
+
end: calendar.addDays(parseKey(range.last), 1, dateConfig()),
|
|
1458
|
+
allDay: true
|
|
1459
|
+
});
|
|
1460
|
+
const visibleKeys = createMemo(() => weeks().flatMap(week => week.map(entry => entry.key)));
|
|
1461
|
+
const rovingKey = createMemo(() => {
|
|
1462
|
+
const keys = visibleKeys();
|
|
1463
|
+
const focus = focusKey();
|
|
1464
|
+
if (focus && keys.includes(focus)) return focus;
|
|
1465
|
+
if (keys.includes(todayKey())) return todayKey();
|
|
1466
|
+
return calendar.formatDateKey(zonedMonthDate(month().year, month().month, dateConfig()), dateConfig());
|
|
1467
|
+
});
|
|
1468
|
+
const dropRange = createMemo(() => {
|
|
1469
|
+
const preview = movePreview();
|
|
1470
|
+
if (!preview) return null;
|
|
1471
|
+
const keys = previewSegments(preview, visibleKeys().map(parseKey), dateConfig()).map(piece => piece.dayKey);
|
|
1472
|
+
if (keys.length === 0) return null;
|
|
1473
|
+
keys.sort();
|
|
1474
|
+
return {
|
|
1475
|
+
first: keys[0],
|
|
1476
|
+
last: keys[keys.length - 1]
|
|
1477
|
+
};
|
|
1478
|
+
});
|
|
1479
|
+
const within = (range, key) => Boolean(range && key >= range.first && key <= range.last);
|
|
1480
|
+
/** Where a day sits in the selection: alone, at its start or end, or in between. */
|
|
1481
|
+
const selectionPart = key => {
|
|
1482
|
+
const range = selection();
|
|
1483
|
+
if (!range || !within(range, key)) return undefined;
|
|
1484
|
+
if (range.first === range.last) return "single";
|
|
1485
|
+
return key === range.first ? "start" : key === range.last ? "end" : "middle";
|
|
1486
|
+
};
|
|
1487
|
+
const select = (anchor, focus = anchor) => {
|
|
1488
|
+
setAnchorKey(anchor);
|
|
1489
|
+
setFocusKey(focus);
|
|
1490
|
+
};
|
|
1491
|
+
// The host learns every change of the selected days, and a new month starts without a selection. The selection
|
|
1492
|
+
// goes with the view, so switching to another view reports that nothing is selected.
|
|
1493
|
+
createEffect(on(selection, range => props.owner.onSelectionChange?.(range ? rangeOf(range) : null), {
|
|
1494
|
+
defer: true
|
|
1495
|
+
}));
|
|
1496
|
+
onCleanup(() => {
|
|
1497
|
+
if (untrack(selection)) props.owner.onSelectionChange?.(null);
|
|
1498
|
+
});
|
|
1499
|
+
createEffect(on(selection, range => props.onFocusDay?.(range ? parseKey(range.first) : null)));
|
|
1500
|
+
createEffect(on(month, () => {
|
|
1501
|
+
setPopover(null);
|
|
1502
|
+
const key = pendingKey;
|
|
1503
|
+
pendingKey = null;
|
|
1504
|
+
if (key && visibleKeys().includes(key)) {
|
|
1505
|
+
select(key);
|
|
1506
|
+
queueMicrotask(() => focusCell(key));
|
|
1507
|
+
} else select(null);
|
|
1508
|
+
}, {
|
|
1509
|
+
defer: true
|
|
1510
|
+
}));
|
|
1511
|
+
const dayLabel = day => day.toLocaleDateString(dateConfig().locale ?? "en", {
|
|
1512
|
+
weekday: "long",
|
|
1513
|
+
year: "numeric",
|
|
1514
|
+
month: "long",
|
|
1515
|
+
day: "numeric",
|
|
1516
|
+
timeZone: dateConfig().timeZone
|
|
1517
|
+
});
|
|
1518
|
+
const shortDayLabel = (key, withMonth = true) => parseKey(key).toLocaleDateString(dateConfig().locale ?? "en", {
|
|
1519
|
+
day: "numeric",
|
|
1520
|
+
...(withMonth ? {
|
|
1521
|
+
month: "short"
|
|
1522
|
+
} : {}),
|
|
1523
|
+
timeZone: dateConfig().timeZone
|
|
1524
|
+
});
|
|
1525
|
+
const monthDayLabel = (date, withTime) => date.toLocaleString(dateConfig().locale ?? "en", {
|
|
1526
|
+
month: "long",
|
|
1527
|
+
day: "numeric",
|
|
1528
|
+
...(withTime ? {
|
|
1529
|
+
hour: "2-digit",
|
|
1530
|
+
minute: "2-digit"
|
|
1531
|
+
} : {}),
|
|
1532
|
+
timeZone: dateConfig().timeZone
|
|
1533
|
+
});
|
|
1534
|
+
/** A long event names the days it spans; a one-day event keeps the chip's own title and time. */
|
|
1535
|
+
const itemLabel = item => {
|
|
1536
|
+
if (item.firstKey === item.lastKey) return undefined;
|
|
1537
|
+
const allDay = Boolean(item.event.allDay);
|
|
1538
|
+
return calendarMessages().calendarEventTime({
|
|
1539
|
+
title: item.event.title,
|
|
1540
|
+
start: monthDayLabel(allDay ? parseKey(item.firstKey) : item.event.sourceStartDate, !allDay),
|
|
1541
|
+
end: monthDayLabel(allDay ? parseKey(item.lastKey) : item.event.sourceEndDate, !allDay)
|
|
1542
|
+
});
|
|
1543
|
+
};
|
|
1544
|
+
/** The start time before the title of a one-day entry; bars and all-day entries show none. */
|
|
1545
|
+
const leadingTime = item => item.bar || item.event.allDay ? undefined : formatTime(item.event.sourceStartDate, dateConfig());
|
|
1546
|
+
/** The day at a torn end of a bar, with its month when that day lies outside the shown month. */
|
|
1547
|
+
const hintDate = target => ({
|
|
1548
|
+
day: Number(target.slice(8, 10)),
|
|
1549
|
+
month: Number(target.slice(0, 4)) === month().year && Number(target.slice(5, 7)) === month().month + 1 ? undefined : parseKey(target).toLocaleDateString(dateConfig().locale ?? "en", {
|
|
1550
|
+
month: "short",
|
|
1551
|
+
timeZone: dateConfig().timeZone
|
|
1552
|
+
}).replace(/\.$/, "")
|
|
1553
|
+
});
|
|
1554
|
+
const selectionHeading = range => {
|
|
1555
|
+
if (range.first === range.last) return parseKey(range.first).toLocaleDateString(dateConfig().locale ?? "en", {
|
|
1556
|
+
weekday: "long",
|
|
1557
|
+
month: "long",
|
|
1558
|
+
day: "numeric",
|
|
1559
|
+
timeZone: dateConfig().timeZone
|
|
1560
|
+
});
|
|
1561
|
+
const days = dayKeyNumber(range.last) - dayKeyNumber(range.first) + 1;
|
|
1562
|
+
return calendarMessages().calendarSelectedDays({
|
|
1563
|
+
start: shortDayLabel(range.first),
|
|
1564
|
+
end: shortDayLabel(range.last),
|
|
1565
|
+
count: days
|
|
1566
|
+
});
|
|
1567
|
+
};
|
|
1568
|
+
const viewAvailable = view => !props.owner.views || props.owner.views.includes(view);
|
|
1569
|
+
const viewHref = (key, view) => viewAvailable(view) ? props.owner.getDateHref?.(parseKey(key), view) : undefined;
|
|
1570
|
+
/** Whether the calendar can open another view at a day: through a link, or through the host's date change. */
|
|
1571
|
+
const canOpenView = view => viewAvailable(view) && Boolean(props.owner.getDateHref || props.owner.onDateChange);
|
|
1572
|
+
const openView = (key, view) => {
|
|
1573
|
+
const href = viewHref(key, view);
|
|
1574
|
+
if (href) followCalendarHref(props.owner, href);else openViewAt(props.owner, parseKey(key), view);
|
|
1575
|
+
};
|
|
1576
|
+
/** The calendar's own entries of the day menu, Open day and Open week, need no application entries. */
|
|
1577
|
+
const hasMenu = () => Boolean(props.owner.selectionMenu) || canOpenView("day") || canOpenView("week");
|
|
1578
|
+
|
|
1579
|
+
/** The day cell under a point, from the cells' boxes: a bar lies over days that are not its parent. */
|
|
1580
|
+
const dayKeyAtPoint = (clientX, clientY) => {
|
|
1581
|
+
for (const [key, cell] of cells) {
|
|
1582
|
+
if (!cell.isConnected) continue;
|
|
1583
|
+
const rect = cell.getBoundingClientRect();
|
|
1584
|
+
if (clientX >= rect.left && clientX < rect.right && clientY >= rect.top && clientY < rect.bottom) return key;
|
|
1585
|
+
}
|
|
1586
|
+
return null;
|
|
1587
|
+
};
|
|
1588
|
+
const focusCell = key => cells.get(key)?.focus({
|
|
1589
|
+
preventScroll: true
|
|
1590
|
+
});
|
|
1591
|
+
const closePopover = (restoreFocus = true) => {
|
|
1592
|
+
if (!popover()) return;
|
|
1593
|
+
setPopover(null);
|
|
1594
|
+
setCreateActive(false);
|
|
1595
|
+
if (restoreFocus) focusCell(rovingKey());
|
|
1596
|
+
};
|
|
1597
|
+
const popoverFocusable = () => popoverElement?.querySelector("input,textarea,select,button,a[href],[tabindex]:not([tabindex='-1'])") ?? null;
|
|
1598
|
+
|
|
1599
|
+
/**
|
|
1600
|
+
* Opens the quick create at the selection. Quietly, it only shows beside the grid, which keeps the focus until the
|
|
1601
|
+
* person types or tabs into it; otherwise it takes the focus at once.
|
|
1602
|
+
*/
|
|
1603
|
+
const openCreate = (range, options) => {
|
|
1604
|
+
if (!props.owner.renderQuickCreate) return false;
|
|
1605
|
+
const anchor = cells.get(focusKey() && within(range, focusKey()) ? focusKey() : range.last);
|
|
1606
|
+
if (!anchor) return false;
|
|
1607
|
+
setCreateActive(options.active);
|
|
1608
|
+
setPopover({
|
|
1609
|
+
kind: "create",
|
|
1610
|
+
range,
|
|
1611
|
+
anchor,
|
|
1612
|
+
create: options.create
|
|
1613
|
+
});
|
|
1614
|
+
return true;
|
|
1615
|
+
};
|
|
1616
|
+
const activateCreate = () => {
|
|
1617
|
+
if (popover()?.kind !== "create") return false;
|
|
1618
|
+
setCreateActive(true);
|
|
1619
|
+
popoverFocusable()?.focus();
|
|
1620
|
+
return true;
|
|
1621
|
+
};
|
|
1622
|
+
/** Enter, a double-click, and N create on the selection, with the quick create or the host's own create action. */
|
|
1623
|
+
const createOnSelection = () => {
|
|
1624
|
+
const range = selection();
|
|
1625
|
+
if (!range) return;
|
|
1626
|
+
if (openCreate(range, {
|
|
1627
|
+
active: true
|
|
1628
|
+
})) return;
|
|
1629
|
+
if (props.owner.onSlotActivate) props.owner.onSlotActivate(rangeOf(range));
|
|
1630
|
+
};
|
|
1631
|
+
const openDayList = key => {
|
|
1632
|
+
const anchor = cells.get(key);
|
|
1633
|
+
if (!anchor) return;
|
|
1634
|
+
setCreateActive(true);
|
|
1635
|
+
setPopover({
|
|
1636
|
+
kind: "day",
|
|
1637
|
+
dayKey: key,
|
|
1638
|
+
anchor
|
|
1639
|
+
});
|
|
1640
|
+
};
|
|
1641
|
+
/** A quiet quick create follows the selection; any other popover closes when the selection changes. */
|
|
1642
|
+
const followSelection = () => {
|
|
1643
|
+
const current = popover();
|
|
1644
|
+
const range = selection();
|
|
1645
|
+
if (!current) return;
|
|
1646
|
+
if (current.kind === "create" && !createActive() && range) openCreate(range, {
|
|
1647
|
+
active: false
|
|
1648
|
+
});else closePopover(false);
|
|
1649
|
+
};
|
|
1650
|
+
const pageTo = target => {
|
|
1651
|
+
const date = parseKey(target);
|
|
1652
|
+
const href = props.owner.getDateHref?.(date, "month");
|
|
1653
|
+
// Only a month that is on its way may select the day, so a host that cannot page never leaves one behind.
|
|
1654
|
+
if (props.owner.onDateChange) {
|
|
1655
|
+
pendingKey = target;
|
|
1656
|
+
props.owner.onDateChange(date, "month");
|
|
1657
|
+
} else if (href) {
|
|
1658
|
+
pendingKey = target;
|
|
1659
|
+
followCalendarHref(props.owner, href);
|
|
1660
|
+
}
|
|
1661
|
+
};
|
|
1662
|
+
const moveFocus = (key, extend) => {
|
|
1663
|
+
if (!visibleKeys().includes(key)) {
|
|
1664
|
+
pageTo(key);
|
|
1665
|
+
return;
|
|
1666
|
+
}
|
|
1667
|
+
if (extend) select(anchorKey() ?? focusKey() ?? key, key);else select(key);
|
|
1668
|
+
focusCell(key);
|
|
1669
|
+
followSelection();
|
|
1670
|
+
};
|
|
1671
|
+
const onCellKeyDown = (event, key) => {
|
|
1672
|
+
if (event.target !== event.currentTarget || event.ctrlKey || event.metaKey || event.altKey) return;
|
|
1673
|
+
const current = popover();
|
|
1674
|
+
const quiet = current?.kind === "create" && !createActive();
|
|
1675
|
+
// The quiet quick create takes over once the person types or tabs into it. Space stays the grid's key for the day
|
|
1676
|
+
// list; N is a title's first letter like any other, as the quick create it would open is already there.
|
|
1677
|
+
if (quiet && (event.key === "Tab" && !event.shiftKey || PRINTABLE_KEY.test(event.key) && event.key !== " ")) {
|
|
1678
|
+
const field = popoverFocusable();
|
|
1679
|
+
if (field) {
|
|
1680
|
+
if (event.key === "Tab") event.preventDefault();
|
|
1681
|
+
setCreateActive(true);
|
|
1682
|
+
field.focus();
|
|
1683
|
+
return;
|
|
1684
|
+
}
|
|
1685
|
+
}
|
|
1686
|
+
const day = parseKey(key);
|
|
1687
|
+
const shift = days => calendar.formatDateKey(calendar.addDays(day, days, dateConfig()), dateConfig());
|
|
1688
|
+
const weekday = (dayKeyNumber(key) - dayKeyNumber(calendar.formatDateKey(calendar.startOfWeek(day, dateConfig()), dateConfig()))) % 7;
|
|
1689
|
+
const target = event.key === "ArrowLeft" ? shift(-1) : event.key === "ArrowRight" ? shift(1) : event.key === "ArrowUp" ? shift(-7) : event.key === "ArrowDown" ? shift(7) : event.key === "Home" ? shift(-weekday) : event.key === "End" ? shift(6 - weekday) : null;
|
|
1690
|
+
if (target) {
|
|
1691
|
+
event.preventDefault();
|
|
1692
|
+
moveFocus(target, event.shiftKey);
|
|
1693
|
+
return;
|
|
1694
|
+
}
|
|
1695
|
+
if (event.key === "PageUp" || event.key === "PageDown") {
|
|
1696
|
+
event.preventDefault();
|
|
1697
|
+
pageTo(calendar.formatDateKey(addMonthsClamped(day, event.key === "PageUp" ? -1 : 1, dateConfig()), dateConfig()));
|
|
1698
|
+
return;
|
|
1699
|
+
}
|
|
1700
|
+
if (event.key === "Enter" || (event.key === "n" || event.key === "N") && !event.shiftKey) {
|
|
1701
|
+
event.preventDefault();
|
|
1702
|
+
if (!within(selection(), key)) select(key);
|
|
1703
|
+
createOnSelection();
|
|
1704
|
+
return;
|
|
1705
|
+
}
|
|
1706
|
+
if (event.key === " ") {
|
|
1707
|
+
event.preventDefault();
|
|
1708
|
+
if (!within(selection(), key)) select(key);
|
|
1709
|
+
openDayList(key);
|
|
1710
|
+
return;
|
|
1711
|
+
}
|
|
1712
|
+
if (event.key === "Escape") {
|
|
1713
|
+
if (current) closePopover(false);else if (selection()) select(null);else return;
|
|
1714
|
+
event.preventDefault();
|
|
1715
|
+
return;
|
|
1716
|
+
}
|
|
1717
|
+
// The keyboard opens the day's menu where the day is, as a right-click there would.
|
|
1718
|
+
if (hasMenu() && (event.key === "ContextMenu" || event.shiftKey && event.key === "F10")) {
|
|
1719
|
+
event.preventDefault();
|
|
1720
|
+
event.stopPropagation();
|
|
1721
|
+
menuKey = key;
|
|
1722
|
+
const rect = event.currentTarget.getBoundingClientRect();
|
|
1723
|
+
event.currentTarget?.dispatchEvent(new MouseEvent("contextmenu", {
|
|
1724
|
+
bubbles: true,
|
|
1725
|
+
cancelable: true,
|
|
1726
|
+
clientX: rect.left + 12,
|
|
1727
|
+
clientY: rect.top + 12
|
|
1728
|
+
}));
|
|
1729
|
+
}
|
|
1730
|
+
};
|
|
1731
|
+
const fromControl = event => event.target instanceof Element && Boolean(event.target.closest("a,button,[data-calendar-event],.k2b-calendar-month__lanes > *"));
|
|
1732
|
+
const onCellClick = (event, key) => {
|
|
1733
|
+
if (fromControl(event) || performance.now() < suppressClickUntil) return;
|
|
1734
|
+
// A second tap on the one selected day opens the quick create, as a double-click does with a mouse.
|
|
1735
|
+
if (lastPointer === "touch") {
|
|
1736
|
+
const range = selection();
|
|
1737
|
+
if (range && range.first === key && range.last === key && openCreate(range, {
|
|
1738
|
+
active: true
|
|
1739
|
+
})) return;
|
|
1740
|
+
select(key);
|
|
1741
|
+
closePopover(false);
|
|
1742
|
+
return;
|
|
1743
|
+
}
|
|
1744
|
+
if (event.shiftKey && anchorKey()) select(anchorKey(), key);else select(key);
|
|
1745
|
+
focusCell(key);
|
|
1746
|
+
const range = selection();
|
|
1747
|
+
if (range) openCreate(range, {
|
|
1748
|
+
active: false
|
|
1749
|
+
});
|
|
1750
|
+
};
|
|
1751
|
+
const onCellDoubleClick = (event, key) => {
|
|
1752
|
+
if (fromControl(event) || lastPointer === "touch") return;
|
|
1753
|
+
event.preventDefault();
|
|
1754
|
+
if (!within(selection(), key)) select(key);
|
|
1755
|
+
if (popover()?.kind === "create") activateCreate();else createOnSelection();
|
|
1756
|
+
};
|
|
1757
|
+
/** The day under the pointer: a bar that spans several days sits in the cell of its first day. */
|
|
1758
|
+
const pressedKey = (event, key) => dayKeyAtPoint(event.clientX, event.clientY) ?? key;
|
|
1759
|
+
const onCellPointerDown = (event, key) => {
|
|
1760
|
+
lastPointer = event.pointerType;
|
|
1761
|
+
// The menu acts on the pressed day, or on the selection when the press is inside it.
|
|
1762
|
+
menuKey = pressedKey(event, key);
|
|
1763
|
+
if (event.pointerType !== "mouse" || event.button !== 0 || event.shiftKey || fromControl(event)) return;
|
|
1764
|
+
cancelInteraction?.();
|
|
1765
|
+
cancelInteraction = startCalendarPointerSession({
|
|
1766
|
+
event,
|
|
1767
|
+
resolve: (clientX, clientY) => dayKeyAtPoint(clientX, clientY),
|
|
1768
|
+
onActivate: () => {
|
|
1769
|
+
suppressClickUntil = performance.now() + 400;
|
|
1770
|
+
closePopover(false);
|
|
1771
|
+
select(key);
|
|
1772
|
+
},
|
|
1773
|
+
onPreview: current => select(key, current),
|
|
1774
|
+
onCommit: current => {
|
|
1775
|
+
select(key, current);
|
|
1776
|
+
focusCell(current);
|
|
1777
|
+
const range = orderedSelection(key, current);
|
|
1778
|
+
openCreate(range, {
|
|
1779
|
+
active: range.first !== range.last
|
|
1780
|
+
});
|
|
1781
|
+
},
|
|
1782
|
+
onCancel: () => select(key)
|
|
1783
|
+
});
|
|
1784
|
+
};
|
|
1785
|
+
const onMenuOpen = () => {
|
|
1786
|
+
closePopover(false);
|
|
1787
|
+
const key = menuKey;
|
|
1788
|
+
if (key && !within(selection(), key)) select(key);
|
|
1789
|
+
};
|
|
1790
|
+
// Until a day is selected, the menu acts on the day that takes focus, so it is never empty.
|
|
1791
|
+
const menuItems = createMemo(() => {
|
|
1792
|
+
if (!hasMenu()) return [];
|
|
1793
|
+
const range = selection() ?? {
|
|
1794
|
+
first: rovingKey(),
|
|
1795
|
+
last: rovingKey()
|
|
1796
|
+
};
|
|
1797
|
+
const own = props.owner.selectionMenu?.(rangeOf(range), {
|
|
1798
|
+
quickCreate: create => {
|
|
1799
|
+
select(range.first, range.last);
|
|
1800
|
+
if (!openCreate(range, {
|
|
1801
|
+
active: true,
|
|
1802
|
+
create
|
|
1803
|
+
})) props.owner.onSlotActivate?.(rangeOf(range));
|
|
1804
|
+
}
|
|
1805
|
+
}) ?? [];
|
|
1806
|
+
const actions = own.filter(item => !("items" in item));
|
|
1807
|
+
const sections = own.filter(item => "items" in item);
|
|
1808
|
+
const navigation = [...(canOpenView("day") ? [{
|
|
1809
|
+
label: calendarMessages().calendarOpenDay,
|
|
1810
|
+
icon: "ti ti-zoom-in",
|
|
1811
|
+
action: () => openView(range.first, "day")
|
|
1812
|
+
}] : []), ...(canOpenView("week") ? [{
|
|
1813
|
+
label: calendarMessages().calendarOpenWeek,
|
|
1814
|
+
icon: "ti ti-calendar-week",
|
|
1815
|
+
action: () => openView(range.first, "week")
|
|
1816
|
+
}] : []), ...(range.first !== range.last ? [{
|
|
1817
|
+
label: calendarMessages().calendarClearSelection,
|
|
1818
|
+
icon: "ti ti-x",
|
|
1819
|
+
action: () => select(null)
|
|
1820
|
+
}] : [])];
|
|
1821
|
+
const groups = [{
|
|
1822
|
+
items: actions
|
|
1823
|
+
}, ...sections, {
|
|
1824
|
+
items: navigation
|
|
1825
|
+
}].filter(section => section.items.length > 0);
|
|
1826
|
+
// The first group names the days the menu acts on, also when the calendar's own entries are all it has.
|
|
1827
|
+
const [first, ...rest] = groups;
|
|
1828
|
+
return first && !first.sectionLabel ? [{
|
|
1829
|
+
...first,
|
|
1830
|
+
sectionLabel: selectionHeading(range)
|
|
1831
|
+
}, ...rest] : groups;
|
|
1832
|
+
});
|
|
1833
|
+
const clearMove = () => {
|
|
1834
|
+
setMovePreview(null);
|
|
1835
|
+
setMovingEventId("");
|
|
1836
|
+
};
|
|
1837
|
+
const startMove = (pointerEvent, item, markDragged) => {
|
|
1838
|
+
if (!props.owner.onEventDrop) return;
|
|
1839
|
+
const event = item.event;
|
|
1840
|
+
const grabbed = dayKeyAtPoint(pointerEvent.clientX, pointerEvent.clientY) ?? item.firstKey;
|
|
1841
|
+
const firstDay = startOfDay(event.sourceStartDate, dateConfig());
|
|
1842
|
+
cancelInteraction?.();
|
|
1843
|
+
cancelInteraction = startCalendarPointerSession({
|
|
1844
|
+
event: pointerEvent,
|
|
1845
|
+
resolve: (clientX, clientY) => {
|
|
1846
|
+
const key = dayKeyAtPoint(clientX, clientY);
|
|
1847
|
+
if (!key) return null;
|
|
1848
|
+
// The event moves by as many days as the pointer, wherever on the bar it was grabbed.
|
|
1849
|
+
const day = calendar.addDays(firstDay, dayKeyNumber(key) - dayKeyNumber(grabbed), dateConfig());
|
|
1850
|
+
return {
|
|
1851
|
+
id: event.id,
|
|
1852
|
+
title: event.title,
|
|
1853
|
+
...moveEventToDay(event, day, dateConfig())
|
|
1854
|
+
};
|
|
1855
|
+
},
|
|
1856
|
+
onActivate: () => {
|
|
1857
|
+
markDragged();
|
|
1858
|
+
suppressClickUntil = performance.now() + 400;
|
|
1859
|
+
closePopover(false);
|
|
1860
|
+
setMovingEventId(event.id);
|
|
1861
|
+
},
|
|
1862
|
+
onPreview: setMovePreview,
|
|
1863
|
+
onCommit: next => {
|
|
1864
|
+
clearMove();
|
|
1865
|
+
if (eventTimeChanged(event, next)) props.owner.onEventDrop?.(event, next);
|
|
1866
|
+
},
|
|
1867
|
+
onCancel: clearMove
|
|
1868
|
+
});
|
|
1869
|
+
};
|
|
1870
|
+
|
|
1871
|
+
// Each week row measures the room below its day numbers; the rows only resize with the grid, never with content.
|
|
1872
|
+
let observer;
|
|
1873
|
+
const lanesOf = new WeakMap();
|
|
1874
|
+
const measure = (element, week) => {
|
|
1875
|
+
const style = getComputedStyle(element);
|
|
1876
|
+
const rootSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;
|
|
1877
|
+
const capacity = monthLaneCapacity(element.clientHeight, MONTH_LANE_REM * rootSize, MONTH_LANE_GAP_REM * rootSize);
|
|
1878
|
+
setCapacities(current => {
|
|
1879
|
+
if (current[week] === capacity) return current;
|
|
1880
|
+
const next = [...current];
|
|
1881
|
+
next[week] = capacity;
|
|
1882
|
+
return next;
|
|
1883
|
+
});
|
|
1884
|
+
if (week === 0) {
|
|
1885
|
+
setCellWidth(element.clientWidth);
|
|
1886
|
+
setBarFont(`600 ${0.6875 * rootSize}px ${style.fontFamily}`);
|
|
1887
|
+
}
|
|
1888
|
+
};
|
|
1889
|
+
const observeLanes = (element, week) => {
|
|
1890
|
+
lanesOf.set(element, week);
|
|
1891
|
+
if (typeof ResizeObserver === "undefined") return;
|
|
1892
|
+
observer ??= new ResizeObserver(entries => {
|
|
1893
|
+
for (const entry of entries) {
|
|
1894
|
+
const index = lanesOf.get(entry.target);
|
|
1895
|
+
if (index !== undefined) measure(entry.target, index);
|
|
1896
|
+
}
|
|
1897
|
+
});
|
|
1898
|
+
observer.observe(element);
|
|
1899
|
+
onCleanup(() => observer?.unobserve(element));
|
|
1900
|
+
};
|
|
1901
|
+
/** A date hint shows only when the bar holds its title and the hint whole; screen readers get the range anyway. */
|
|
1902
|
+
const hintFits = (title, hint, span) => {
|
|
1903
|
+
const width = cellWidth();
|
|
1904
|
+
const font = barFont();
|
|
1905
|
+
if (width <= 0 || !font) return false;
|
|
1906
|
+
const rootSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;
|
|
1907
|
+
return textWidth(title, font) + textWidth(hint, font) + MONTH_HINT_SLACK_REM * rootSize <= span * width;
|
|
1908
|
+
};
|
|
1909
|
+
createEffect(() => {
|
|
1910
|
+
const current = popover();
|
|
1911
|
+
const element = popoverElement;
|
|
1912
|
+
if (!element) return;
|
|
1913
|
+
if (!current) {
|
|
1914
|
+
if (element.matches(":popover-open")) element.hidePopover();
|
|
1915
|
+
return;
|
|
1916
|
+
}
|
|
1917
|
+
if (!element.matches(":popover-open")) element.showPopover();
|
|
1918
|
+
const focus = untrack(createActive);
|
|
1919
|
+
queueMicrotask(() => {
|
|
1920
|
+
if (popover() !== current || !element.isConnected) return;
|
|
1921
|
+
placeCalendarPopover(current.anchor, element);
|
|
1922
|
+
if (focus) popoverFocusable()?.focus();
|
|
1923
|
+
});
|
|
1924
|
+
});
|
|
1925
|
+
onMount(() => {
|
|
1926
|
+
const reposition = () => {
|
|
1927
|
+
const current = popover();
|
|
1928
|
+
if (current && popoverElement) placeCalendarPopover(current.anchor, popoverElement);
|
|
1929
|
+
};
|
|
1930
|
+
window.addEventListener("resize", reposition);
|
|
1931
|
+
window.addEventListener("scroll", reposition, true);
|
|
1932
|
+
onCleanup(() => {
|
|
1933
|
+
window.removeEventListener("resize", reposition);
|
|
1934
|
+
window.removeEventListener("scroll", reposition, true);
|
|
1935
|
+
});
|
|
1936
|
+
});
|
|
1937
|
+
onCleanup(() => {
|
|
1938
|
+
cancelInteraction?.();
|
|
1939
|
+
observer?.disconnect();
|
|
1940
|
+
});
|
|
1941
|
+
const dayEntries = dayKey => items().filter(item => item.days.has(dayKey));
|
|
1942
|
+
/** Every bar of a long entry lights up with the one under the pointer. */
|
|
1943
|
+
const linkProps = item => ({
|
|
1944
|
+
onPointerEnter: event => {
|
|
1945
|
+
if (event.pointerType === "mouse") setLinkedItem(item.key);
|
|
1946
|
+
},
|
|
1947
|
+
onPointerLeave: () => {
|
|
1948
|
+
if (linkedItem() === item.key) setLinkedItem("");
|
|
1949
|
+
}
|
|
1950
|
+
});
|
|
1951
|
+
const grid = () => (() => {
|
|
1952
|
+
var _el$88 = _$getNextElement(_tmpl$29),
|
|
1953
|
+
_el$89 = _el$88.firstChild,
|
|
1954
|
+
_el$91 = _el$89.firstChild,
|
|
1955
|
+
[_el$92, _co$22] = _$getNextMarker(_el$91.nextSibling),
|
|
1956
|
+
_el$93 = _el$92.nextSibling,
|
|
1957
|
+
[_el$94, _co$23] = _$getNextMarker(_el$93.nextSibling),
|
|
1958
|
+
_el$95 = _el$89.nextSibling,
|
|
1959
|
+
[_el$96, _co$24] = _$getNextMarker(_el$95.nextSibling);
|
|
1960
|
+
_$insert(_el$89, _$createComponent(Show, {
|
|
1961
|
+
get when() {
|
|
1962
|
+
return props.owner.withWeekNumbers;
|
|
1963
|
+
},
|
|
1964
|
+
get children() {
|
|
1965
|
+
var _el$90 = _$getNextElement(_tmpl$28);
|
|
1966
|
+
_$insert(_el$90, () => calendarMessages().weekShort);
|
|
1967
|
+
return _el$90;
|
|
1968
|
+
}
|
|
1969
|
+
}), _el$92, _co$22);
|
|
1970
|
+
_$insert(_el$89, _$createComponent(For, {
|
|
1971
|
+
get each() {
|
|
1972
|
+
return weekdays();
|
|
1973
|
+
},
|
|
1974
|
+
children: (day, index) => (() => {
|
|
1975
|
+
var _el$97 = _$getNextElement(_tmpl$28);
|
|
1976
|
+
_$insert(_el$97, day);
|
|
1977
|
+
_$effect(() => _$setAttribute(_el$97, "data-weekend", index() > 4 ? "true" : undefined));
|
|
1978
|
+
return _el$97;
|
|
1979
|
+
})()
|
|
1980
|
+
}), _el$94, _co$23);
|
|
1981
|
+
_$insert(_el$88, _$createComponent(For, {
|
|
1982
|
+
get each() {
|
|
1983
|
+
return weeks();
|
|
1984
|
+
},
|
|
1985
|
+
children: (week, weekIndex) => {
|
|
1986
|
+
const fit = createMemo(() => fitMonthWeek(weekLayouts()[weekIndex()] ?? {
|
|
1987
|
+
bars: [],
|
|
1988
|
+
singles: []
|
|
1989
|
+
}, capacities()[weekIndex()] ?? MONTH_DEFAULT_LANES));
|
|
1990
|
+
const weekHref = () => viewHref(week[0].key, "week");
|
|
1991
|
+
const weekNumber = () => zonedWeekNumber(week[0].day, dateConfig());
|
|
1992
|
+
return (() => {
|
|
1993
|
+
var _el$98 = _$getNextElement(_tmpl$31),
|
|
1994
|
+
_el$100 = _el$98.firstChild,
|
|
1995
|
+
[_el$101, _co$25] = _$getNextMarker(_el$100.nextSibling),
|
|
1996
|
+
_el$102 = _el$101.nextSibling,
|
|
1997
|
+
[_el$103, _co$26] = _$getNextMarker(_el$102.nextSibling);
|
|
1998
|
+
_$insert(_el$98, _$createComponent(Show, {
|
|
1999
|
+
get when() {
|
|
2000
|
+
return props.owner.withWeekNumbers;
|
|
2001
|
+
},
|
|
2002
|
+
get children() {
|
|
2003
|
+
var _el$99 = _$getNextElement(_tmpl$30);
|
|
2004
|
+
_$insert(_el$99, _$createComponent(Show, {
|
|
2005
|
+
get when() {
|
|
2006
|
+
return weekHref();
|
|
2007
|
+
},
|
|
2008
|
+
get fallback() {
|
|
2009
|
+
return _$createComponent(Show, {
|
|
2010
|
+
get when() {
|
|
2011
|
+
return canOpenView("week");
|
|
2012
|
+
},
|
|
2013
|
+
get fallback() {
|
|
2014
|
+
return weekNumber();
|
|
2015
|
+
},
|
|
2016
|
+
get children() {
|
|
2017
|
+
var _el$104 = _$getNextElement(_tmpl$32);
|
|
2018
|
+
_el$104.$$click = () => openView(week[0].key, "week");
|
|
2019
|
+
_$insert(_el$104, weekNumber);
|
|
2020
|
+
_$effect(_p$ => {
|
|
2021
|
+
var _v$46 = calendarMessages().calendarOpenWeekNumber({
|
|
2022
|
+
week: weekNumber()
|
|
2023
|
+
}),
|
|
2024
|
+
_v$47 = calendarMessages().calendarOpenWeekNumber({
|
|
2025
|
+
week: weekNumber()
|
|
2026
|
+
});
|
|
2027
|
+
_v$46 !== _p$.e && _$setAttribute(_el$104, "title", _p$.e = _v$46);
|
|
2028
|
+
_v$47 !== _p$.t && _$setAttribute(_el$104, "aria-label", _p$.t = _v$47);
|
|
2029
|
+
return _p$;
|
|
2030
|
+
}, {
|
|
2031
|
+
e: undefined,
|
|
2032
|
+
t: undefined
|
|
2033
|
+
});
|
|
2034
|
+
_$runHydrationEvents();
|
|
2035
|
+
return _el$104;
|
|
2036
|
+
}
|
|
2037
|
+
});
|
|
2038
|
+
},
|
|
2039
|
+
children: href => _$createComponent(CalendarNavigationLink, {
|
|
2040
|
+
get owner() {
|
|
2041
|
+
return props.owner;
|
|
2042
|
+
},
|
|
2043
|
+
get href() {
|
|
2044
|
+
return href();
|
|
2045
|
+
},
|
|
2046
|
+
get anchorProps() {
|
|
2047
|
+
return {
|
|
2048
|
+
class: "k2b-calendar-month__week-link",
|
|
2049
|
+
tabIndex: -1,
|
|
2050
|
+
title: calendarMessages().calendarOpenWeekNumber({
|
|
2051
|
+
week: weekNumber()
|
|
2052
|
+
}),
|
|
2053
|
+
"aria-label": calendarMessages().calendarOpenWeekNumber({
|
|
2054
|
+
week: weekNumber()
|
|
2055
|
+
})
|
|
2056
|
+
};
|
|
2057
|
+
},
|
|
2058
|
+
get children() {
|
|
2059
|
+
return weekNumber();
|
|
2060
|
+
}
|
|
2061
|
+
})
|
|
2062
|
+
}));
|
|
2063
|
+
return _el$99;
|
|
2064
|
+
}
|
|
2065
|
+
}), _el$101, _co$25);
|
|
2066
|
+
_$insert(_el$98, _$createComponent(For, {
|
|
2067
|
+
each: week,
|
|
2068
|
+
children: ({
|
|
2069
|
+
day,
|
|
2070
|
+
key
|
|
2071
|
+
}, column) => {
|
|
2072
|
+
const dayBadge = props.owner.dayBadges?.[key];
|
|
2073
|
+
const sameMonth = calendar.isSameMonth(day, props.date, dateConfig());
|
|
2074
|
+
const label = dayLabel(day);
|
|
2075
|
+
const bars = createMemo(() => fit().bars.filter(bar => bar.startColumn === column()));
|
|
2076
|
+
const cell = () => fit().cells[column()] ?? {
|
|
2077
|
+
top: 0,
|
|
2078
|
+
shown: [],
|
|
2079
|
+
hidden: 0
|
|
2080
|
+
};
|
|
2081
|
+
return (() => {
|
|
2082
|
+
var _el$105 = _$getNextElement(_tmpl$34),
|
|
2083
|
+
_el$106 = _el$105.firstChild,
|
|
2084
|
+
_el$107 = _el$106.firstChild,
|
|
2085
|
+
_el$108 = _el$107.nextSibling,
|
|
2086
|
+
[_el$109, _co$27] = _$getNextMarker(_el$108.nextSibling),
|
|
2087
|
+
_el$110 = _el$106.nextSibling,
|
|
2088
|
+
_el$117 = _el$110.firstChild,
|
|
2089
|
+
[_el$118, _co$29] = _$getNextMarker(_el$117.nextSibling),
|
|
2090
|
+
_el$119 = _el$118.nextSibling,
|
|
2091
|
+
[_el$120, _co$30] = _$getNextMarker(_el$119.nextSibling),
|
|
2092
|
+
_el$121 = _el$120.nextSibling,
|
|
2093
|
+
[_el$122, _co$31] = _$getNextMarker(_el$121.nextSibling);
|
|
2094
|
+
_el$105.$$keydown = event => onCellKeyDown(event, key);
|
|
2095
|
+
_el$105.$$contextmenu = event => {
|
|
2096
|
+
// The pressed day takes the focus, so closing the menu with Escape returns there.
|
|
2097
|
+
menuKey = pressedKey(event, key);
|
|
2098
|
+
if (hasMenu()) focusCell(menuKey);
|
|
2099
|
+
};
|
|
2100
|
+
_el$105.$$pointerdown = event => onCellPointerDown(event, key);
|
|
2101
|
+
_el$105.$$dblclick = event => onCellDoubleClick(event, key);
|
|
2102
|
+
_el$105.$$click = event => onCellClick(event, key);
|
|
2103
|
+
_$use(element => cells.set(key, element), _el$105);
|
|
2104
|
+
_$setAttribute(_el$105, "aria-label", label);
|
|
2105
|
+
_$setAttribute(_el$105, "data-calendar-day-key", key);
|
|
2106
|
+
_$setAttribute(_el$105, "data-outside", !sameMonth ? "true" : undefined);
|
|
2107
|
+
_$setAttribute(_el$107, "data-outside", !sameMonth ? "true" : undefined);
|
|
2108
|
+
_$insert(_el$107, () => calendar.formatDayNumber(day, dateConfig()));
|
|
2109
|
+
_$insert(_el$106, _$createComponent(Show, {
|
|
2110
|
+
when: dayBadge,
|
|
2111
|
+
children: badge => (() => {
|
|
2112
|
+
var _el$123 = _$getNextElement(_tmpl$26),
|
|
2113
|
+
_el$124 = _el$123.firstChild,
|
|
2114
|
+
[_el$125, _co$32] = _$getNextMarker(_el$124.nextSibling),
|
|
2115
|
+
_el$126 = _el$125.nextSibling,
|
|
2116
|
+
[_el$127, _co$33] = _$getNextMarker(_el$126.nextSibling);
|
|
2117
|
+
_$insert(_el$123, _$createComponent(Show, {
|
|
2118
|
+
get when() {
|
|
2119
|
+
return badge().icon;
|
|
2120
|
+
},
|
|
2121
|
+
children: icon => (() => {
|
|
2122
|
+
var _el$128 = _$getNextElement(_tmpl$11);
|
|
2123
|
+
_$effect(() => _$className(_el$128, `k2b-calendar-month__badge-icon ti ti-${icon()}`));
|
|
2124
|
+
return _el$128;
|
|
2125
|
+
})()
|
|
2126
|
+
}), _el$125, _co$32);
|
|
2127
|
+
_$insert(_el$123, () => badge().label, _el$127, _co$33);
|
|
2128
|
+
return _el$123;
|
|
2129
|
+
})()
|
|
2130
|
+
}), _el$109, _co$27);
|
|
2131
|
+
_$use(element => {
|
|
2132
|
+
if (column() === 0) observeLanes(element, weekIndex());
|
|
2133
|
+
}, _el$110);
|
|
2134
|
+
_$insert(_el$110, _$createComponent(For, {
|
|
2135
|
+
get each() {
|
|
2136
|
+
return bars();
|
|
2137
|
+
},
|
|
2138
|
+
children: bar => {
|
|
2139
|
+
const span = bar.endColumn - bar.startColumn + 1;
|
|
2140
|
+
const startHint = () => {
|
|
2141
|
+
if (!bar.continuesBefore) return undefined;
|
|
2142
|
+
const hint = calendarMessages().calendarContinuesFrom(hintDate(bar.item.firstKey));
|
|
2143
|
+
return hintFits(bar.item.event.title, hint, span) ? hint : undefined;
|
|
2144
|
+
};
|
|
2145
|
+
const endHint = () => {
|
|
2146
|
+
if (!bar.continuesAfter) return undefined;
|
|
2147
|
+
const hint = calendarMessages().calendarContinuesUntil(hintDate(bar.item.lastKey));
|
|
2148
|
+
return hintFits(`${bar.item.event.title}${startHint() ?? ""}`, hint, span) ? hint : undefined;
|
|
2149
|
+
};
|
|
2150
|
+
return (() => {
|
|
2151
|
+
var _el$129 = _$getNextElement(_tmpl$35);
|
|
2152
|
+
_$spread(_el$129, _$mergeProps({
|
|
2153
|
+
get style() {
|
|
2154
|
+
return {
|
|
2155
|
+
"--k2b-calendar-span": String(span),
|
|
2156
|
+
"--k2b-calendar-row": String(bar.lane)
|
|
2157
|
+
};
|
|
2158
|
+
},
|
|
2159
|
+
get ["data-linked"]() {
|
|
2160
|
+
return linkedItem() === bar.item.key && bar.item.firstKey !== bar.item.lastKey ? "true" : undefined;
|
|
2161
|
+
},
|
|
2162
|
+
get ["data-continues-before"]() {
|
|
2163
|
+
return bar.continuesBefore ? "true" : undefined;
|
|
2164
|
+
},
|
|
2165
|
+
get ["data-continues-after"]() {
|
|
2166
|
+
return bar.continuesAfter ? "true" : undefined;
|
|
2167
|
+
}
|
|
2168
|
+
}, () => linkProps(bar.item)), false, true);
|
|
2169
|
+
_$insert(_el$129, _$createComponent(EventChip, {
|
|
2170
|
+
get event() {
|
|
2171
|
+
return bar.item.event;
|
|
2172
|
+
},
|
|
2173
|
+
get owner() {
|
|
2174
|
+
return props.owner;
|
|
2175
|
+
},
|
|
2176
|
+
get href() {
|
|
2177
|
+
return eventHref(props.owner, bar.item.event);
|
|
2178
|
+
},
|
|
2179
|
+
get label() {
|
|
2180
|
+
return itemLabel(bar.item);
|
|
2181
|
+
},
|
|
2182
|
+
compact: true,
|
|
2183
|
+
bar: true,
|
|
2184
|
+
get continuesBefore() {
|
|
2185
|
+
return bar.continuesBefore;
|
|
2186
|
+
},
|
|
2187
|
+
get continuesAfter() {
|
|
2188
|
+
return bar.continuesAfter;
|
|
2189
|
+
},
|
|
2190
|
+
get hintStart() {
|
|
2191
|
+
return startHint();
|
|
2192
|
+
},
|
|
2193
|
+
get hintEnd() {
|
|
2194
|
+
return endHint();
|
|
2195
|
+
},
|
|
2196
|
+
get moving() {
|
|
2197
|
+
return movingEventId() === bar.item.event.id;
|
|
2198
|
+
},
|
|
2199
|
+
get onMovePointerDown() {
|
|
2200
|
+
return props.owner.onEventDrop ? (pointerEvent, markDragged) => startMove(pointerEvent, bar.item, markDragged) : undefined;
|
|
2201
|
+
}
|
|
2202
|
+
}));
|
|
2203
|
+
_$runHydrationEvents();
|
|
2204
|
+
return _el$129;
|
|
2205
|
+
})();
|
|
2206
|
+
}
|
|
2207
|
+
}), _el$118, _co$29);
|
|
2208
|
+
_$insert(_el$110, _$createComponent(For, {
|
|
2209
|
+
get each() {
|
|
2210
|
+
return cell().shown;
|
|
2211
|
+
},
|
|
2212
|
+
children: (item, index) => (() => {
|
|
2213
|
+
var _el$130 = _$getNextElement(_tmpl$36);
|
|
2214
|
+
_$insert(_el$130, _$createComponent(EventChip, {
|
|
2215
|
+
get event() {
|
|
2216
|
+
return item.event;
|
|
2217
|
+
},
|
|
2218
|
+
get owner() {
|
|
2219
|
+
return props.owner;
|
|
2220
|
+
},
|
|
2221
|
+
get href() {
|
|
2222
|
+
return eventHref(props.owner, item.event);
|
|
2223
|
+
},
|
|
2224
|
+
compact: true,
|
|
2225
|
+
get leadingTime() {
|
|
2226
|
+
return leadingTime(item);
|
|
2227
|
+
},
|
|
2228
|
+
get moving() {
|
|
2229
|
+
return movingEventId() === item.event.id;
|
|
2230
|
+
},
|
|
2231
|
+
get onMovePointerDown() {
|
|
2232
|
+
return props.owner.onEventDrop ? (pointerEvent, markDragged) => startMove(pointerEvent, item, markDragged) : undefined;
|
|
2233
|
+
}
|
|
2234
|
+
}));
|
|
2235
|
+
_$effect(_$p => _$setStyleProperty(_el$130, "--k2b-calendar-row", String(cell().top + index())));
|
|
2236
|
+
return _el$130;
|
|
2237
|
+
})()
|
|
2238
|
+
}), _el$120, _co$30);
|
|
2239
|
+
_$insert(_el$110, _$createComponent(Show, {
|
|
2240
|
+
get when() {
|
|
2241
|
+
return cell().hidden > 0;
|
|
2242
|
+
},
|
|
2243
|
+
get children() {
|
|
2244
|
+
var _el$111 = _$getNextElement(_tmpl$33),
|
|
2245
|
+
_el$112 = _el$111.firstChild,
|
|
2246
|
+
_el$113 = _el$112.nextSibling,
|
|
2247
|
+
_el$114 = _el$113.firstChild,
|
|
2248
|
+
_el$115 = _el$114.nextSibling,
|
|
2249
|
+
[_el$116, _co$28] = _$getNextMarker(_el$115.nextSibling);
|
|
2250
|
+
_el$111.$$click = () => {
|
|
2251
|
+
const current = popover();
|
|
2252
|
+
if (current?.kind === "day" && current.dayKey === key) closePopover(false);else openDayList(key);
|
|
2253
|
+
};
|
|
2254
|
+
_$insert(_el$112, () => calendarMessages().calendarMoreEvents({
|
|
2255
|
+
count: cell().hidden
|
|
2256
|
+
}));
|
|
2257
|
+
_$insert(_el$113, () => cell().hidden, _el$116, _co$28);
|
|
2258
|
+
_$effect(_p$ => {
|
|
2259
|
+
var _v$48 = String(cell().top + cell().shown.length),
|
|
2260
|
+
_v$49 = calendarMessages().calendarMoreEventsOn({
|
|
2261
|
+
count: cell().hidden,
|
|
2262
|
+
label
|
|
2263
|
+
}),
|
|
2264
|
+
_v$50 = (() => {
|
|
2265
|
+
const current = popover();
|
|
2266
|
+
return current?.kind === "day" && current.dayKey === key;
|
|
2267
|
+
})();
|
|
2268
|
+
_v$48 !== _p$.e && _$setStyleProperty(_el$111, "--k2b-calendar-row", _p$.e = _v$48);
|
|
2269
|
+
_v$49 !== _p$.t && _$setAttribute(_el$111, "aria-label", _p$.t = _v$49);
|
|
2270
|
+
_v$50 !== _p$.a && _$setAttribute(_el$111, "aria-expanded", _p$.a = _v$50);
|
|
2271
|
+
return _p$;
|
|
2272
|
+
}, {
|
|
2273
|
+
e: undefined,
|
|
2274
|
+
t: undefined,
|
|
2275
|
+
a: undefined
|
|
2276
|
+
});
|
|
2277
|
+
_$runHydrationEvents();
|
|
2278
|
+
return _el$111;
|
|
2279
|
+
}
|
|
2280
|
+
}), _el$122, _co$31);
|
|
2281
|
+
_$effect(_p$ => {
|
|
2282
|
+
var _v$51 = rovingKey() === key ? 0 : -1,
|
|
2283
|
+
_v$52 = within(selection(), key) ? "true" : "false",
|
|
2284
|
+
_v$53 = key === todayKey() ? "date" : undefined,
|
|
2285
|
+
_v$54 = column() > 4 ? "true" : undefined,
|
|
2286
|
+
_v$55 = key < todayKey() ? "true" : undefined,
|
|
2287
|
+
_v$56 = selectionPart(key),
|
|
2288
|
+
_v$57 = within(dropRange(), key) ? "true" : undefined,
|
|
2289
|
+
_v$58 = key === todayKey() ? "true" : undefined;
|
|
2290
|
+
_v$51 !== _p$.e && _$setAttribute(_el$105, "tabindex", _p$.e = _v$51);
|
|
2291
|
+
_v$52 !== _p$.t && _$setAttribute(_el$105, "aria-selected", _p$.t = _v$52);
|
|
2292
|
+
_v$53 !== _p$.a && _$setAttribute(_el$105, "aria-current", _p$.a = _v$53);
|
|
2293
|
+
_v$54 !== _p$.o && _$setAttribute(_el$105, "data-weekend", _p$.o = _v$54);
|
|
2294
|
+
_v$55 !== _p$.i && _$setAttribute(_el$105, "data-past", _p$.i = _v$55);
|
|
2295
|
+
_v$56 !== _p$.n && _$setAttribute(_el$105, "data-selected", _p$.n = _v$56);
|
|
2296
|
+
_v$57 !== _p$.s && _$setAttribute(_el$105, "data-drop-preview", _p$.s = _v$57);
|
|
2297
|
+
_v$58 !== _p$.h && _$setAttribute(_el$107, "data-today", _p$.h = _v$58);
|
|
2298
|
+
return _p$;
|
|
2299
|
+
}, {
|
|
2300
|
+
e: undefined,
|
|
2301
|
+
t: undefined,
|
|
2302
|
+
a: undefined,
|
|
2303
|
+
o: undefined,
|
|
2304
|
+
i: undefined,
|
|
2305
|
+
n: undefined,
|
|
2306
|
+
s: undefined,
|
|
2307
|
+
h: undefined
|
|
2308
|
+
});
|
|
2309
|
+
_$runHydrationEvents();
|
|
2310
|
+
return _el$105;
|
|
2311
|
+
})();
|
|
2312
|
+
}
|
|
2313
|
+
}), _el$103, _co$26);
|
|
2314
|
+
_$effect(() => _$setAttribute(_el$98, "data-week-numbers", props.owner.withWeekNumbers ? "true" : undefined));
|
|
2315
|
+
return _el$98;
|
|
2316
|
+
})();
|
|
2317
|
+
}
|
|
2318
|
+
}), _el$96, _co$24);
|
|
2319
|
+
_$effect(_p$ => {
|
|
2320
|
+
var _v$43 = formatMonth(props.date, dateConfig()),
|
|
2321
|
+
_v$44 = `auto repeat(${weeks().length}, minmax(5rem, 1fr))`,
|
|
2322
|
+
_v$45 = props.owner.withWeekNumbers ? "true" : undefined;
|
|
2323
|
+
_v$43 !== _p$.e && _$setAttribute(_el$88, "aria-label", _p$.e = _v$43);
|
|
2324
|
+
_v$44 !== _p$.t && _$setStyleProperty(_el$88, "grid-template-rows", _p$.t = _v$44);
|
|
2325
|
+
_v$45 !== _p$.a && _$setAttribute(_el$89, "data-week-numbers", _p$.a = _v$45);
|
|
2326
|
+
return _p$;
|
|
2327
|
+
}, {
|
|
2328
|
+
e: undefined,
|
|
2329
|
+
t: undefined,
|
|
2330
|
+
a: undefined
|
|
2331
|
+
});
|
|
2332
|
+
return _el$88;
|
|
1145
2333
|
})();
|
|
2334
|
+
const dayList = dayKey => {
|
|
2335
|
+
const day = parseKey(dayKey);
|
|
2336
|
+
const href = viewHref(dayKey, "day");
|
|
2337
|
+
// Read where it renders, so a refresh while the list is open updates it as it does the grid.
|
|
2338
|
+
const entries = () => dayEntries(dayKey);
|
|
2339
|
+
return (() => {
|
|
2340
|
+
var _el$131 = _$getNextElement(_tmpl$39),
|
|
2341
|
+
_el$132 = _el$131.firstChild,
|
|
2342
|
+
_el$140 = _el$132.nextSibling,
|
|
2343
|
+
[_el$141, _co$36] = _$getNextMarker(_el$140.nextSibling),
|
|
2344
|
+
_el$134 = _el$141.nextSibling,
|
|
2345
|
+
_el$136 = _el$134.firstChild,
|
|
2346
|
+
[_el$137, _co$34] = _$getNextMarker(_el$136.nextSibling),
|
|
2347
|
+
_el$138 = _el$137.nextSibling,
|
|
2348
|
+
[_el$139, _co$35] = _$getNextMarker(_el$138.nextSibling);
|
|
2349
|
+
_$insert(_el$132, () => dayLabel(day));
|
|
2350
|
+
_$insert(_el$131, _$createComponent(Show, {
|
|
2351
|
+
get when() {
|
|
2352
|
+
return entries().length > 0;
|
|
2353
|
+
},
|
|
2354
|
+
get fallback() {
|
|
2355
|
+
return (() => {
|
|
2356
|
+
var _el$142 = _$getNextElement(_tmpl$40);
|
|
2357
|
+
_$insert(_el$142, () => calendarMessages().calendarNothingPlanned);
|
|
2358
|
+
return _el$142;
|
|
2359
|
+
})();
|
|
2360
|
+
},
|
|
2361
|
+
get children() {
|
|
2362
|
+
var _el$133 = _$getNextElement(_tmpl$37);
|
|
2363
|
+
_$insert(_el$133, _$createComponent(For, {
|
|
2364
|
+
get each() {
|
|
2365
|
+
return entries();
|
|
2366
|
+
},
|
|
2367
|
+
children: item => (() => {
|
|
2368
|
+
var _el$143 = _$getNextElement(_tmpl$41);
|
|
2369
|
+
_$insert(_el$143, _$createComponent(EventChip, {
|
|
2370
|
+
get event() {
|
|
2371
|
+
return item.event;
|
|
2372
|
+
},
|
|
2373
|
+
get owner() {
|
|
2374
|
+
return props.owner;
|
|
2375
|
+
},
|
|
2376
|
+
get href() {
|
|
2377
|
+
return eventHref(props.owner, item.event);
|
|
2378
|
+
},
|
|
2379
|
+
get label() {
|
|
2380
|
+
return itemLabel(item);
|
|
2381
|
+
},
|
|
2382
|
+
compact: true,
|
|
2383
|
+
get bar() {
|
|
2384
|
+
return item.bar;
|
|
2385
|
+
},
|
|
2386
|
+
get leadingTime() {
|
|
2387
|
+
return leadingTime(item);
|
|
2388
|
+
}
|
|
2389
|
+
}));
|
|
2390
|
+
return _el$143;
|
|
2391
|
+
})()
|
|
2392
|
+
}));
|
|
2393
|
+
return _el$133;
|
|
2394
|
+
}
|
|
2395
|
+
}), _el$141, _co$36);
|
|
2396
|
+
_$insert(_el$134, _$createComponent(Show, {
|
|
2397
|
+
when: href,
|
|
2398
|
+
get fallback() {
|
|
2399
|
+
return _$createComponent(Show, {
|
|
2400
|
+
get when() {
|
|
2401
|
+
return canOpenView("day");
|
|
2402
|
+
},
|
|
2403
|
+
get children() {
|
|
2404
|
+
return _$createComponent(Button, {
|
|
2405
|
+
type: "button",
|
|
2406
|
+
variant: "ghost",
|
|
2407
|
+
size: "sm",
|
|
2408
|
+
onClick: () => openView(dayKey, "day"),
|
|
2409
|
+
get children() {
|
|
2410
|
+
return [_$getNextElement(_tmpl$42), _$memo(() => calendarMessages().calendarOpenDay)];
|
|
2411
|
+
}
|
|
2412
|
+
});
|
|
2413
|
+
}
|
|
2414
|
+
});
|
|
2415
|
+
},
|
|
2416
|
+
children: dayHref => _$createComponent(CalendarNavigationLink, {
|
|
2417
|
+
get owner() {
|
|
2418
|
+
return props.owner;
|
|
2419
|
+
},
|
|
2420
|
+
get href() {
|
|
2421
|
+
return dayHref();
|
|
2422
|
+
},
|
|
2423
|
+
anchorProps: {
|
|
2424
|
+
class: "k2b-button",
|
|
2425
|
+
"data-variant": "ghost",
|
|
2426
|
+
"data-size": "sm"
|
|
2427
|
+
},
|
|
2428
|
+
get children() {
|
|
2429
|
+
return [_$getNextElement(_tmpl$42), _$memo(() => calendarMessages().calendarOpenDay)];
|
|
2430
|
+
}
|
|
2431
|
+
})
|
|
2432
|
+
}), _el$137, _co$34);
|
|
2433
|
+
_$insert(_el$134, _$createComponent(Show, {
|
|
2434
|
+
get when() {
|
|
2435
|
+
return props.owner.renderQuickCreate;
|
|
2436
|
+
},
|
|
2437
|
+
get children() {
|
|
2438
|
+
return _$createComponent(Button, {
|
|
2439
|
+
type: "button",
|
|
2440
|
+
variant: "ghost",
|
|
2441
|
+
size: "sm",
|
|
2442
|
+
onClick: () => {
|
|
2443
|
+
select(dayKey);
|
|
2444
|
+
openCreate({
|
|
2445
|
+
first: dayKey,
|
|
2446
|
+
last: dayKey
|
|
2447
|
+
}, {
|
|
2448
|
+
active: true
|
|
2449
|
+
});
|
|
2450
|
+
},
|
|
2451
|
+
get children() {
|
|
2452
|
+
return [_$getNextElement(_tmpl$38), _$memo(() => calendarMessages().calendarNewEvent)];
|
|
2453
|
+
}
|
|
2454
|
+
});
|
|
2455
|
+
}
|
|
2456
|
+
}), _el$139, _co$35);
|
|
2457
|
+
return _el$131;
|
|
2458
|
+
})();
|
|
2459
|
+
};
|
|
2460
|
+
return [_$createComponent(Show, {
|
|
2461
|
+
get when() {
|
|
2462
|
+
return hasMenu();
|
|
2463
|
+
},
|
|
2464
|
+
get fallback() {
|
|
2465
|
+
return grid();
|
|
2466
|
+
},
|
|
2467
|
+
get children() {
|
|
2468
|
+
return _$createComponent(GestureMenu, {
|
|
2469
|
+
get items() {
|
|
2470
|
+
return menuItems();
|
|
2471
|
+
},
|
|
2472
|
+
get label() {
|
|
2473
|
+
return calendarMessages().calendarSelectionActions;
|
|
2474
|
+
},
|
|
2475
|
+
tabIndex: -1,
|
|
2476
|
+
onOpen: onMenuOpen,
|
|
2477
|
+
"class": "k2b-calendar-month-menu",
|
|
2478
|
+
get children() {
|
|
2479
|
+
return grid();
|
|
2480
|
+
}
|
|
2481
|
+
});
|
|
2482
|
+
}
|
|
2483
|
+
}), (() => {
|
|
2484
|
+
var _el$146 = _$getNextElement(_tmpl$43);
|
|
2485
|
+
_el$146.addEventListener("toggle", event => {
|
|
2486
|
+
// A late close of the popover that another opening already replaced keeps the new one. Focus returns to the
|
|
2487
|
+
// grid only from inside the popover, never from what a click outside it chose.
|
|
2488
|
+
if (event.newState !== "closed" || !popover() || event.currentTarget.matches(":popover-open")) return;
|
|
2489
|
+
const inside = event.currentTarget.contains(document.activeElement) || document.activeElement === document.body;
|
|
2490
|
+
closePopover(inside);
|
|
2491
|
+
});
|
|
2492
|
+
_el$146.$$focusin = () => setCreateActive(true);
|
|
2493
|
+
var _ref$ = popoverElement;
|
|
2494
|
+
typeof _ref$ === "function" ? _$use(_ref$, _el$146) : popoverElement = _el$146;
|
|
2495
|
+
_$insert(_el$146, _$createComponent(Show, {
|
|
2496
|
+
get when() {
|
|
2497
|
+
return popover();
|
|
2498
|
+
},
|
|
2499
|
+
keyed: true,
|
|
2500
|
+
children: value => value.kind === "create" ? props.owner.renderQuickCreate?.(rangeOf(value.range), {
|
|
2501
|
+
create: value.create,
|
|
2502
|
+
close: () => {
|
|
2503
|
+
if (popover() === value) closePopover();
|
|
2504
|
+
}
|
|
2505
|
+
}) : dayList(value.dayKey)
|
|
2506
|
+
}));
|
|
2507
|
+
_$effect(_p$ => {
|
|
2508
|
+
var _v$59 = (() => {
|
|
2509
|
+
const current = popover();
|
|
2510
|
+
if (current?.kind === "day") return dayLabel(parseKey(current.dayKey));
|
|
2511
|
+
return calendarMessages().calendarQuickCreate;
|
|
2512
|
+
})(),
|
|
2513
|
+
_v$60 = popover()?.kind,
|
|
2514
|
+
_v$61 = popover()?.kind === "create" && !createActive() ? "true" : undefined;
|
|
2515
|
+
_v$59 !== _p$.e && _$setAttribute(_el$146, "aria-label", _p$.e = _v$59);
|
|
2516
|
+
_v$60 !== _p$.t && _$setAttribute(_el$146, "data-kind", _p$.t = _v$60);
|
|
2517
|
+
_v$61 !== _p$.a && _$setAttribute(_el$146, "data-quiet", _p$.a = _v$61);
|
|
2518
|
+
return _p$;
|
|
2519
|
+
}, {
|
|
2520
|
+
e: undefined,
|
|
2521
|
+
t: undefined,
|
|
2522
|
+
a: undefined
|
|
2523
|
+
});
|
|
2524
|
+
_$runHydrationEvents();
|
|
2525
|
+
return _el$146;
|
|
2526
|
+
})()];
|
|
1146
2527
|
};
|
|
1147
2528
|
const TimeGridView = props => {
|
|
1148
|
-
const
|
|
2529
|
+
const calendarMessages = useCalendarMessages();
|
|
1149
2530
|
const dateConfig = createMemo(() => ownerDateConfig(props.owner));
|
|
1150
2531
|
const gridStartHour = () => props.owner.visibleStartHour ?? 0;
|
|
1151
2532
|
const gridEndHour = () => props.owner.visibleEndHour ?? 23;
|
|
@@ -1356,19 +2737,19 @@ const TimeGridView = props => {
|
|
|
1356
2737
|
});
|
|
1357
2738
|
});
|
|
1358
2739
|
return (() => {
|
|
1359
|
-
var _el$
|
|
1360
|
-
_el$
|
|
1361
|
-
_el$
|
|
1362
|
-
_el$
|
|
1363
|
-
[_el$
|
|
1364
|
-
_el$
|
|
1365
|
-
[_el$
|
|
1366
|
-
_el$
|
|
1367
|
-
_el$
|
|
1368
|
-
_el$
|
|
1369
|
-
_el$
|
|
1370
|
-
[_el$
|
|
1371
|
-
_$insert(_el$
|
|
2740
|
+
var _el$147 = _$getNextElement(_tmpl$45),
|
|
2741
|
+
_el$148 = _el$147.firstChild,
|
|
2742
|
+
_el$149 = _el$148.firstChild,
|
|
2743
|
+
_el$150 = _el$149.nextSibling,
|
|
2744
|
+
[_el$151, _co$37] = _$getNextMarker(_el$150.nextSibling),
|
|
2745
|
+
_el$161 = _el$148.nextSibling,
|
|
2746
|
+
[_el$162, _co$40] = _$getNextMarker(_el$161.nextSibling),
|
|
2747
|
+
_el$156 = _el$162.nextSibling,
|
|
2748
|
+
_el$157 = _el$156.firstChild,
|
|
2749
|
+
_el$158 = _el$157.firstChild,
|
|
2750
|
+
_el$159 = _el$158.nextSibling,
|
|
2751
|
+
[_el$160, _co$39] = _$getNextMarker(_el$159.nextSibling);
|
|
2752
|
+
_$insert(_el$148, _$createComponent(For, {
|
|
1372
2753
|
get each() {
|
|
1373
2754
|
return props.days;
|
|
1374
2755
|
},
|
|
@@ -1387,47 +2768,47 @@ const TimeGridView = props => {
|
|
|
1387
2768
|
},
|
|
1388
2769
|
get children() {
|
|
1389
2770
|
return [(() => {
|
|
1390
|
-
var _el$
|
|
1391
|
-
_$insert(_el$
|
|
1392
|
-
_$effect(() => _$setAttribute(_el$
|
|
1393
|
-
return _el$
|
|
2771
|
+
var _el$163 = _$getNextElement(_tmpl$46);
|
|
2772
|
+
_$insert(_el$163, () => formatDay(day, dateConfig()));
|
|
2773
|
+
_$effect(() => _$setAttribute(_el$163, "data-today", today() ? "true" : undefined));
|
|
2774
|
+
return _el$163;
|
|
1394
2775
|
})(), _$createComponent(Show, {
|
|
1395
2776
|
when: dayBadge,
|
|
1396
2777
|
children: badge => (() => {
|
|
1397
|
-
var _el$
|
|
1398
|
-
_el$
|
|
1399
|
-
[_el$
|
|
1400
|
-
_el$
|
|
1401
|
-
[_el$
|
|
1402
|
-
_$insert(_el$
|
|
2778
|
+
var _el$164 = _$getNextElement(_tmpl$47),
|
|
2779
|
+
_el$165 = _el$164.firstChild,
|
|
2780
|
+
[_el$166, _co$41] = _$getNextMarker(_el$165.nextSibling),
|
|
2781
|
+
_el$167 = _el$166.nextSibling,
|
|
2782
|
+
[_el$168, _co$42] = _$getNextMarker(_el$167.nextSibling);
|
|
2783
|
+
_$insert(_el$164, _$createComponent(Show, {
|
|
1403
2784
|
get when() {
|
|
1404
2785
|
return badge().icon;
|
|
1405
2786
|
},
|
|
1406
2787
|
children: icon => (() => {
|
|
1407
|
-
var _el$
|
|
1408
|
-
_$effect(() => _$className(_el$
|
|
1409
|
-
return _el$
|
|
2788
|
+
var _el$169 = _$getNextElement(_tmpl$11);
|
|
2789
|
+
_$effect(() => _$className(_el$169, `k2b-calendar-time-grid__badge-icon ti ti-${icon()}`));
|
|
2790
|
+
return _el$169;
|
|
1410
2791
|
})()
|
|
1411
|
-
}), _el$
|
|
1412
|
-
_$insert(_el$
|
|
1413
|
-
return _el$
|
|
2792
|
+
}), _el$166, _co$41);
|
|
2793
|
+
_$insert(_el$164, () => badge().label, _el$168, _co$42);
|
|
2794
|
+
return _el$164;
|
|
1414
2795
|
})()
|
|
1415
2796
|
})];
|
|
1416
2797
|
}
|
|
1417
2798
|
});
|
|
1418
2799
|
}
|
|
1419
|
-
}), _el$
|
|
1420
|
-
_$insert(_el$
|
|
2800
|
+
}), _el$151, _co$37);
|
|
2801
|
+
_$insert(_el$147, _$createComponent(Show, {
|
|
1421
2802
|
get when() {
|
|
1422
2803
|
return !props.owner.hideAllDay;
|
|
1423
2804
|
},
|
|
1424
2805
|
get children() {
|
|
1425
|
-
var _el$
|
|
1426
|
-
_el$
|
|
1427
|
-
_el$
|
|
1428
|
-
[_el$
|
|
1429
|
-
_$insert(_el$
|
|
1430
|
-
_$insert(_el$
|
|
2806
|
+
var _el$152 = _$getNextElement(_tmpl$44),
|
|
2807
|
+
_el$153 = _el$152.firstChild,
|
|
2808
|
+
_el$154 = _el$153.nextSibling,
|
|
2809
|
+
[_el$155, _co$38] = _$getNextMarker(_el$154.nextSibling);
|
|
2810
|
+
_$insert(_el$153, () => props.labels.allDay);
|
|
2811
|
+
_$insert(_el$152, _$createComponent(For, {
|
|
1431
2812
|
get each() {
|
|
1432
2813
|
return props.days;
|
|
1433
2814
|
},
|
|
@@ -1436,14 +2817,14 @@ const TimeGridView = props => {
|
|
|
1436
2817
|
const allDay = () => eventsByDay().get(dayKey)?.allDay ?? [];
|
|
1437
2818
|
const previewAllDay = previewEvents().filter(event => event.dayKey === dayKey && event.allDay);
|
|
1438
2819
|
return (() => {
|
|
1439
|
-
var _el$
|
|
1440
|
-
_el$
|
|
1441
|
-
_el$
|
|
1442
|
-
[_el$
|
|
1443
|
-
_el$
|
|
1444
|
-
[_el$
|
|
1445
|
-
_$setAttribute(_el$
|
|
1446
|
-
_$spread(_el$
|
|
2820
|
+
var _el$170 = _$getNextElement(_tmpl$48),
|
|
2821
|
+
_el$171 = _el$170.firstChild,
|
|
2822
|
+
_el$172 = _el$171.firstChild,
|
|
2823
|
+
[_el$173, _co$43] = _$getNextMarker(_el$172.nextSibling),
|
|
2824
|
+
_el$174 = _el$173.nextSibling,
|
|
2825
|
+
[_el$175, _co$44] = _$getNextMarker(_el$174.nextSibling);
|
|
2826
|
+
_$setAttribute(_el$170, "data-calendar-day-key", dayKey);
|
|
2827
|
+
_$spread(_el$170, _$mergeProps({
|
|
1447
2828
|
get ["data-drop-preview"]() {
|
|
1448
2829
|
return timePreview()?.allDay && calendar.formatDateKey(timePreview().start, dateConfig()) === dayKey ? "true" : undefined;
|
|
1449
2830
|
},
|
|
@@ -1458,15 +2839,15 @@ const TimeGridView = props => {
|
|
|
1458
2839
|
allDay: true
|
|
1459
2840
|
};
|
|
1460
2841
|
}, () => performance.now() < suppressSlotClickUntil)), false, true);
|
|
1461
|
-
_$insert(_el$
|
|
2842
|
+
_$insert(_el$171, _$createComponent(For, {
|
|
1462
2843
|
each: previewAllDay,
|
|
1463
2844
|
children: event => (() => {
|
|
1464
|
-
var _el$
|
|
1465
|
-
_$insert(_el$
|
|
1466
|
-
return _el$
|
|
2845
|
+
var _el$176 = _$getNextElement(_tmpl$23);
|
|
2846
|
+
_$insert(_el$176, () => event.title);
|
|
2847
|
+
return _el$176;
|
|
1467
2848
|
})()
|
|
1468
|
-
}), _el$
|
|
1469
|
-
_$insert(_el$
|
|
2849
|
+
}), _el$173, _co$43);
|
|
2850
|
+
_$insert(_el$171, _$createComponent(For, {
|
|
1470
2851
|
get each() {
|
|
1471
2852
|
return allDay();
|
|
1472
2853
|
},
|
|
@@ -1486,49 +2867,49 @@ const TimeGridView = props => {
|
|
|
1486
2867
|
return props.owner.onEventDrop ? (pointerEvent, markDragged) => startAllDayMove(pointerEvent, event, markDragged) : undefined;
|
|
1487
2868
|
}
|
|
1488
2869
|
})
|
|
1489
|
-
}), _el$
|
|
2870
|
+
}), _el$175, _co$44);
|
|
1490
2871
|
_$runHydrationEvents();
|
|
1491
|
-
return _el$
|
|
2872
|
+
return _el$170;
|
|
1492
2873
|
})();
|
|
1493
2874
|
}
|
|
1494
|
-
}), _el$
|
|
2875
|
+
}), _el$155, _co$38);
|
|
1495
2876
|
_$effect(_p$ => {
|
|
1496
|
-
var _v$
|
|
1497
|
-
_v$
|
|
1498
|
-
_v$
|
|
1499
|
-
_v$
|
|
2877
|
+
var _v$62 = `4rem repeat(${props.days.length}, minmax(0, 1fr))`,
|
|
2878
|
+
_v$63 = `${props.owner.allDayMaxHeightRem ?? 7}rem`;
|
|
2879
|
+
_v$62 !== _p$.e && _$setStyleProperty(_el$152, "grid-template-columns", _p$.e = _v$62);
|
|
2880
|
+
_v$63 !== _p$.t && _$setStyleProperty(_el$152, "max-height", _p$.t = _v$63);
|
|
1500
2881
|
return _p$;
|
|
1501
2882
|
}, {
|
|
1502
2883
|
e: undefined,
|
|
1503
2884
|
t: undefined
|
|
1504
2885
|
});
|
|
1505
|
-
return _el$
|
|
2886
|
+
return _el$152;
|
|
1506
2887
|
}
|
|
1507
|
-
}), _el$
|
|
1508
|
-
var _ref$ = scrollContainer;
|
|
1509
|
-
typeof _ref$ === "function" ? _$use(_ref
|
|
1510
|
-
var _ref$
|
|
1511
|
-
typeof _ref$
|
|
1512
|
-
var _ref$
|
|
1513
|
-
typeof _ref$
|
|
1514
|
-
_$insert(_el$
|
|
2888
|
+
}), _el$162, _co$40);
|
|
2889
|
+
var _ref$2 = scrollContainer;
|
|
2890
|
+
typeof _ref$2 === "function" ? _$use(_ref$2, _el$156) : scrollContainer = _el$156;
|
|
2891
|
+
var _ref$3 = timeGrid;
|
|
2892
|
+
typeof _ref$3 === "function" ? _$use(_ref$3, _el$157) : timeGrid = _el$157;
|
|
2893
|
+
var _ref$4 = timeGutter;
|
|
2894
|
+
typeof _ref$4 === "function" ? _$use(_ref$4, _el$158) : timeGutter = _el$158;
|
|
2895
|
+
_$insert(_el$158, _$createComponent(For, {
|
|
1515
2896
|
get each() {
|
|
1516
2897
|
return hours();
|
|
1517
2898
|
},
|
|
1518
2899
|
children: hour => (() => {
|
|
1519
|
-
var _el$
|
|
1520
|
-
_el$
|
|
1521
|
-
[_el$
|
|
1522
|
-
_el$
|
|
2900
|
+
var _el$177 = _$getNextElement(_tmpl$49),
|
|
2901
|
+
_el$179 = _el$177.firstChild,
|
|
2902
|
+
[_el$180, _co$45] = _$getNextMarker(_el$179.nextSibling),
|
|
2903
|
+
_el$178 = _el$180.nextSibling;
|
|
1523
2904
|
_$use(element => {
|
|
1524
2905
|
if (hour === businessStartHour()) defaultHourMarker = element;
|
|
1525
|
-
}, _el$
|
|
1526
|
-
_$insert(_el$
|
|
1527
|
-
_$effect(() => _$setAttribute(_el$
|
|
1528
|
-
return _el$
|
|
2906
|
+
}, _el$177);
|
|
2907
|
+
_$insert(_el$177, () => `${hour}`.padStart(2, "0"), _el$180, _co$45);
|
|
2908
|
+
_$effect(() => _$setAttribute(_el$177, "data-outside-business", hour < businessStartHour() || hour > businessEndHour() ? "true" : undefined));
|
|
2909
|
+
return _el$177;
|
|
1529
2910
|
})()
|
|
1530
2911
|
}));
|
|
1531
|
-
_$insert(_el$
|
|
2912
|
+
_$insert(_el$157, _$createComponent(For, {
|
|
1532
2913
|
get each() {
|
|
1533
2914
|
return props.days;
|
|
1534
2915
|
},
|
|
@@ -1536,34 +2917,34 @@ const TimeGridView = props => {
|
|
|
1536
2917
|
const dayKey = calendar.formatDateKey(day, dateConfig());
|
|
1537
2918
|
const layouts = createMemo(() => timedEventLayouts(eventsByDay().get(dayKey)?.timed ?? []));
|
|
1538
2919
|
return (() => {
|
|
1539
|
-
var _el$
|
|
1540
|
-
_el$
|
|
1541
|
-
[_el$
|
|
1542
|
-
_el$
|
|
1543
|
-
[_el$
|
|
1544
|
-
_el$
|
|
1545
|
-
[_el$
|
|
1546
|
-
_el$
|
|
1547
|
-
[_el$
|
|
1548
|
-
_el$
|
|
1549
|
-
[_el$
|
|
1550
|
-
_$insert(_el$
|
|
2920
|
+
var _el$181 = _$getNextElement(_tmpl$51),
|
|
2921
|
+
_el$183 = _el$181.firstChild,
|
|
2922
|
+
[_el$184, _co$46] = _$getNextMarker(_el$183.nextSibling),
|
|
2923
|
+
_el$185 = _el$184.nextSibling,
|
|
2924
|
+
[_el$186, _co$47] = _$getNextMarker(_el$185.nextSibling),
|
|
2925
|
+
_el$187 = _el$186.nextSibling,
|
|
2926
|
+
[_el$188, _co$48] = _$getNextMarker(_el$187.nextSibling),
|
|
2927
|
+
_el$189 = _el$188.nextSibling,
|
|
2928
|
+
[_el$190, _co$49] = _$getNextMarker(_el$189.nextSibling),
|
|
2929
|
+
_el$191 = _el$190.nextSibling,
|
|
2930
|
+
[_el$192, _co$50] = _$getNextMarker(_el$191.nextSibling);
|
|
2931
|
+
_$insert(_el$181, _$createComponent(Show, {
|
|
1551
2932
|
get when() {
|
|
1552
2933
|
return currentTimeLine(day) !== null;
|
|
1553
2934
|
},
|
|
1554
2935
|
get children() {
|
|
1555
|
-
var _el$
|
|
1556
|
-
_$effect(_$p => _$setStyleProperty(_el$
|
|
1557
|
-
return _el$
|
|
2936
|
+
var _el$182 = _$getNextElement(_tmpl$50);
|
|
2937
|
+
_$effect(_$p => _$setStyleProperty(_el$182, "top", `${currentTimeLine(day) ?? 0}%`));
|
|
2938
|
+
return _el$182;
|
|
1558
2939
|
}
|
|
1559
|
-
}), _el$
|
|
1560
|
-
_$insert(_el$
|
|
2940
|
+
}), _el$184, _co$46);
|
|
2941
|
+
_$insert(_el$181, _$createComponent(For, {
|
|
1561
2942
|
get each() {
|
|
1562
2943
|
return hours();
|
|
1563
2944
|
},
|
|
1564
2945
|
children: hour => (() => {
|
|
1565
|
-
var _el$
|
|
1566
|
-
_$spread(_el$
|
|
2946
|
+
var _el$193 = _$getNextElement(_tmpl$52);
|
|
2947
|
+
_$spread(_el$193, _$mergeProps({
|
|
1567
2948
|
get ["data-outside-business"]() {
|
|
1568
2949
|
return hour < businessStartHour() || hour > businessEndHour() ? "true" : undefined;
|
|
1569
2950
|
},
|
|
@@ -1581,10 +2962,10 @@ const TimeGridView = props => {
|
|
|
1581
2962
|
"onPointerDown": startRange
|
|
1582
2963
|
}), false, false);
|
|
1583
2964
|
_$runHydrationEvents();
|
|
1584
|
-
return _el$
|
|
2965
|
+
return _el$193;
|
|
1585
2966
|
})()
|
|
1586
|
-
}), _el$
|
|
1587
|
-
_$insert(_el$
|
|
2967
|
+
}), _el$186, _co$47);
|
|
2968
|
+
_$insert(_el$181, _$createComponent(For, {
|
|
1588
2969
|
get each() {
|
|
1589
2970
|
return previewEvents().filter(event => event.dayKey === dayKey && !event.allDay);
|
|
1590
2971
|
},
|
|
@@ -1592,44 +2973,44 @@ const TimeGridView = props => {
|
|
|
1592
2973
|
const layout = eventLayout(event);
|
|
1593
2974
|
const short = event.endDate.getTime() - event.startDate.getTime() < 60 * 60_000;
|
|
1594
2975
|
return (() => {
|
|
1595
|
-
var _el$
|
|
1596
|
-
_el$
|
|
1597
|
-
_el$
|
|
1598
|
-
[_el$
|
|
1599
|
-
_el$
|
|
1600
|
-
_el$
|
|
1601
|
-
[_el$
|
|
1602
|
-
_el$
|
|
1603
|
-
_el$
|
|
1604
|
-
[_el$
|
|
1605
|
-
_$setAttribute(_el$
|
|
1606
|
-
_$insert(_el$
|
|
2976
|
+
var _el$194 = _$getNextElement(_tmpl$54),
|
|
2977
|
+
_el$195 = _el$194.firstChild,
|
|
2978
|
+
_el$203 = _el$195.firstChild,
|
|
2979
|
+
[_el$204, _co$53] = _$getNextMarker(_el$203.nextSibling),
|
|
2980
|
+
_el$197 = _el$204.nextSibling,
|
|
2981
|
+
_el$199 = _el$197.firstChild,
|
|
2982
|
+
[_el$200, _co$51] = _$getNextMarker(_el$199.nextSibling),
|
|
2983
|
+
_el$198 = _el$200.nextSibling,
|
|
2984
|
+
_el$201 = _el$198.nextSibling,
|
|
2985
|
+
[_el$202, _co$52] = _$getNextMarker(_el$201.nextSibling);
|
|
2986
|
+
_$setAttribute(_el$194, "data-short", short ? "true" : undefined);
|
|
2987
|
+
_$insert(_el$195, _$createComponent(Show, {
|
|
1607
2988
|
get when() {
|
|
1608
2989
|
return event.title;
|
|
1609
2990
|
},
|
|
1610
2991
|
get children() {
|
|
1611
|
-
var _el$
|
|
1612
|
-
_$insert(_el$
|
|
1613
|
-
return _el$
|
|
2992
|
+
var _el$196 = _$getNextElement(_tmpl$53);
|
|
2993
|
+
_$insert(_el$196, () => event.title);
|
|
2994
|
+
return _el$196;
|
|
1614
2995
|
}
|
|
1615
|
-
}), _el$
|
|
1616
|
-
_$insert(_el$
|
|
1617
|
-
_$insert(_el$
|
|
2996
|
+
}), _el$204, _co$53);
|
|
2997
|
+
_$insert(_el$197, () => formatTime(event.startDate, dateConfig()), _el$200, _co$51);
|
|
2998
|
+
_$insert(_el$197, () => formatTime(event.endDate, dateConfig()), _el$202, _co$52);
|
|
1618
2999
|
_$effect(_p$ => {
|
|
1619
|
-
var _v$
|
|
1620
|
-
_v$
|
|
1621
|
-
_v$
|
|
1622
|
-
_v$
|
|
3000
|
+
var _v$69 = `${layout.top}%`,
|
|
3001
|
+
_v$70 = `${layout.height}%`;
|
|
3002
|
+
_v$69 !== _p$.e && _$setStyleProperty(_el$194, "top", _p$.e = _v$69);
|
|
3003
|
+
_v$70 !== _p$.t && _$setStyleProperty(_el$194, "height", _p$.t = _v$70);
|
|
1623
3004
|
return _p$;
|
|
1624
3005
|
}, {
|
|
1625
3006
|
e: undefined,
|
|
1626
3007
|
t: undefined
|
|
1627
3008
|
});
|
|
1628
|
-
return _el$
|
|
3009
|
+
return _el$194;
|
|
1629
3010
|
})();
|
|
1630
3011
|
}
|
|
1631
|
-
}), _el$
|
|
1632
|
-
_$insert(_el$
|
|
3012
|
+
}), _el$188, _co$48);
|
|
3013
|
+
_$insert(_el$181, _$createComponent(For, {
|
|
1633
3014
|
get each() {
|
|
1634
3015
|
return layouts();
|
|
1635
3016
|
},
|
|
@@ -1672,13 +3053,13 @@ const TimeGridView = props => {
|
|
|
1672
3053
|
});
|
|
1673
3054
|
};
|
|
1674
3055
|
return (() => {
|
|
1675
|
-
var _el$
|
|
1676
|
-
_el$
|
|
1677
|
-
_el$
|
|
1678
|
-
[_el$
|
|
1679
|
-
_el$
|
|
1680
|
-
[_el$
|
|
1681
|
-
_$insert(_el$
|
|
3056
|
+
var _el$205 = _$getNextElement(_tmpl$56),
|
|
3057
|
+
_el$206 = _el$205.firstChild,
|
|
3058
|
+
_el$208 = _el$206.firstChild,
|
|
3059
|
+
[_el$209, _co$54] = _$getNextMarker(_el$208.nextSibling),
|
|
3060
|
+
_el$210 = _el$209.nextSibling,
|
|
3061
|
+
[_el$211, _co$55] = _$getNextMarker(_el$210.nextSibling);
|
|
3062
|
+
_$insert(_el$206, _$createComponent(EventChip, {
|
|
1682
3063
|
event: event,
|
|
1683
3064
|
get owner() {
|
|
1684
3065
|
return props.owner;
|
|
@@ -1693,32 +3074,32 @@ const TimeGridView = props => {
|
|
|
1693
3074
|
get onMovePointerDown() {
|
|
1694
3075
|
return props.owner.onEventDrop ? (pointerEvent, markDragged) => startTimedMove(pointerEvent, event, markDragged) : undefined;
|
|
1695
3076
|
}
|
|
1696
|
-
}), _el$
|
|
1697
|
-
_$insert(_el$
|
|
3077
|
+
}), _el$209, _co$54);
|
|
3078
|
+
_$insert(_el$206, _$createComponent(Show, {
|
|
1698
3079
|
get when() {
|
|
1699
3080
|
return props.owner.onEventResize;
|
|
1700
3081
|
},
|
|
1701
3082
|
get children() {
|
|
1702
|
-
var _el$
|
|
1703
|
-
_el$
|
|
1704
|
-
_el$
|
|
1705
|
-
_$setAttribute(_el$
|
|
1706
|
-
_$effect(() => _$setAttribute(_el$
|
|
3083
|
+
var _el$207 = _$getNextElement(_tmpl$55);
|
|
3084
|
+
_el$207.addEventListener("dragstart", event => event.preventDefault());
|
|
3085
|
+
_el$207.$$pointerdown = resizeStart;
|
|
3086
|
+
_$setAttribute(_el$207, "draggable", false);
|
|
3087
|
+
_$effect(() => _$setAttribute(_el$207, "aria-label", calendarMessages().resizeEvent));
|
|
1707
3088
|
_$runHydrationEvents();
|
|
1708
|
-
return _el$
|
|
3089
|
+
return _el$207;
|
|
1709
3090
|
}
|
|
1710
|
-
}), _el$
|
|
3091
|
+
}), _el$211, _co$55);
|
|
1711
3092
|
_$effect(_p$ => {
|
|
1712
|
-
var _v$
|
|
1713
|
-
_v$
|
|
1714
|
-
_v$
|
|
1715
|
-
_v$
|
|
1716
|
-
_v$
|
|
1717
|
-
_v$
|
|
1718
|
-
_v$
|
|
1719
|
-
_v$
|
|
1720
|
-
_v$
|
|
1721
|
-
_v$
|
|
3093
|
+
var _v$71 = `${layout.top}%`,
|
|
3094
|
+
_v$72 = `${layout.height}%`,
|
|
3095
|
+
_v$73 = position.left,
|
|
3096
|
+
_v$74 = position.width,
|
|
3097
|
+
_v$75 = String(20 + layoutItem.lane);
|
|
3098
|
+
_v$71 !== _p$.e && _$setStyleProperty(_el$205, "top", _p$.e = _v$71);
|
|
3099
|
+
_v$72 !== _p$.t && _$setStyleProperty(_el$205, "height", _p$.t = _v$72);
|
|
3100
|
+
_v$73 !== _p$.a && _$setStyleProperty(_el$205, "left", _p$.a = _v$73);
|
|
3101
|
+
_v$74 !== _p$.o && _$setStyleProperty(_el$205, "width", _p$.o = _v$74);
|
|
3102
|
+
_v$75 !== _p$.i && _$setStyleProperty(_el$205, "z-index", _p$.i = _v$75);
|
|
1722
3103
|
return _p$;
|
|
1723
3104
|
}, {
|
|
1724
3105
|
e: undefined,
|
|
@@ -1727,11 +3108,11 @@ const TimeGridView = props => {
|
|
|
1727
3108
|
o: undefined,
|
|
1728
3109
|
i: undefined
|
|
1729
3110
|
});
|
|
1730
|
-
return _el$
|
|
3111
|
+
return _el$205;
|
|
1731
3112
|
})();
|
|
1732
3113
|
}
|
|
1733
|
-
}), _el$
|
|
1734
|
-
_$insert(_el$
|
|
3114
|
+
}), _el$190, _co$49);
|
|
3115
|
+
_$insert(_el$181, _$createComponent(For, {
|
|
1735
3116
|
get each() {
|
|
1736
3117
|
return overflowLayouts(layouts());
|
|
1737
3118
|
},
|
|
@@ -1740,27 +3121,27 @@ const TimeGridView = props => {
|
|
|
1740
3121
|
const key = `${dayKey}-${overflow.groupId}`;
|
|
1741
3122
|
const hiddenTitle = () => overflow.hiddenEvents.map(event => `${formatTime(event.startDate, dateConfig())} ${event.title}`).join("\n");
|
|
1742
3123
|
return [(() => {
|
|
1743
|
-
var _el$
|
|
1744
|
-
_el$
|
|
1745
|
-
_el$
|
|
1746
|
-
_el$
|
|
1747
|
-
[_el$
|
|
1748
|
-
_el$
|
|
3124
|
+
var _el$212 = _$getNextElement(_tmpl$57),
|
|
3125
|
+
_el$213 = _el$212.firstChild,
|
|
3126
|
+
_el$214 = _el$213.firstChild,
|
|
3127
|
+
_el$215 = _el$214.nextSibling,
|
|
3128
|
+
[_el$216, _co$56] = _$getNextMarker(_el$215.nextSibling);
|
|
3129
|
+
_el$212.$$click = event => {
|
|
1749
3130
|
event.stopPropagation();
|
|
1750
3131
|
setExpandedOverflow(expandedOverflow() === key ? "" : key);
|
|
1751
3132
|
};
|
|
1752
|
-
_$insert(_el$
|
|
3133
|
+
_$insert(_el$213, () => overflow.hiddenEvents.length, _el$216, _co$56);
|
|
1753
3134
|
_$effect(_p$ => {
|
|
1754
|
-
var _v$
|
|
1755
|
-
_v$
|
|
1756
|
-
_v$
|
|
1757
|
-
_v$
|
|
3135
|
+
var _v$76 = `${layout.top}%`,
|
|
3136
|
+
_v$77 = `${layout.height}%`,
|
|
3137
|
+
_v$78 = hiddenTitle(),
|
|
3138
|
+
_v$79 = calendarMessages().hiddenOverlappingEvents({
|
|
1758
3139
|
count: overflow.hiddenEvents.length
|
|
1759
3140
|
});
|
|
1760
|
-
_v$
|
|
1761
|
-
_v$
|
|
1762
|
-
_v$
|
|
1763
|
-
_v$
|
|
3141
|
+
_v$76 !== _p$.e && _$setStyleProperty(_el$212, "top", _p$.e = _v$76);
|
|
3142
|
+
_v$77 !== _p$.t && _$setStyleProperty(_el$212, "height", _p$.t = _v$77);
|
|
3143
|
+
_v$78 !== _p$.a && _$setAttribute(_el$212, "title", _p$.a = _v$78);
|
|
3144
|
+
_v$79 !== _p$.o && _$setAttribute(_el$212, "aria-label", _p$.o = _v$79);
|
|
1764
3145
|
return _p$;
|
|
1765
3146
|
}, {
|
|
1766
3147
|
e: undefined,
|
|
@@ -1769,24 +3150,24 @@ const TimeGridView = props => {
|
|
|
1769
3150
|
o: undefined
|
|
1770
3151
|
});
|
|
1771
3152
|
_$runHydrationEvents();
|
|
1772
|
-
return _el$
|
|
3153
|
+
return _el$212;
|
|
1773
3154
|
})(), _$createComponent(Show, {
|
|
1774
3155
|
get when() {
|
|
1775
3156
|
return expandedOverflow() === key;
|
|
1776
3157
|
},
|
|
1777
3158
|
get children() {
|
|
1778
|
-
var _el$
|
|
1779
|
-
_el$
|
|
1780
|
-
_el$
|
|
1781
|
-
[_el$
|
|
1782
|
-
_el$
|
|
1783
|
-
_el$
|
|
1784
|
-
[_el$
|
|
1785
|
-
_el$
|
|
1786
|
-
[_el$
|
|
1787
|
-
_$insert(_el$
|
|
1788
|
-
_$insert(_el$
|
|
1789
|
-
_$insert(_el$
|
|
3159
|
+
var _el$217 = _$getNextElement(_tmpl$58),
|
|
3160
|
+
_el$218 = _el$217.firstChild,
|
|
3161
|
+
_el$220 = _el$218.firstChild,
|
|
3162
|
+
[_el$221, _co$57] = _$getNextMarker(_el$220.nextSibling),
|
|
3163
|
+
_el$219 = _el$221.nextSibling,
|
|
3164
|
+
_el$222 = _el$219.nextSibling,
|
|
3165
|
+
[_el$223, _co$58] = _$getNextMarker(_el$222.nextSibling),
|
|
3166
|
+
_el$224 = _el$218.nextSibling,
|
|
3167
|
+
[_el$225, _co$59] = _$getNextMarker(_el$224.nextSibling);
|
|
3168
|
+
_$insert(_el$218, () => formatTime(overflow.groupStartDate, dateConfig()), _el$221, _co$57);
|
|
3169
|
+
_$insert(_el$218, () => formatTime(overflow.groupEndDate, dateConfig()), _el$223, _co$58);
|
|
3170
|
+
_$insert(_el$217, _$createComponent(For, {
|
|
1790
3171
|
get each() {
|
|
1791
3172
|
return overflow.hiddenEvents;
|
|
1792
3173
|
},
|
|
@@ -1800,41 +3181,41 @@ const TimeGridView = props => {
|
|
|
1800
3181
|
},
|
|
1801
3182
|
compact: true
|
|
1802
3183
|
})
|
|
1803
|
-
}), _el$
|
|
1804
|
-
_$effect(_$p => _$setStyleProperty(_el$
|
|
1805
|
-
return _el$
|
|
3184
|
+
}), _el$225, _co$59);
|
|
3185
|
+
_$effect(_$p => _$setStyleProperty(_el$217, "top", `${layout.top}%`));
|
|
3186
|
+
return _el$217;
|
|
1806
3187
|
}
|
|
1807
3188
|
})];
|
|
1808
3189
|
}
|
|
1809
|
-
}), _el$
|
|
3190
|
+
}), _el$192, _co$50);
|
|
1810
3191
|
_$effect(_p$ => {
|
|
1811
|
-
var _v$
|
|
1812
|
-
_v$
|
|
1813
|
-
_v$
|
|
1814
|
-
_v$
|
|
3192
|
+
var _v$67 = dayColumnMinWidth(layouts()),
|
|
3193
|
+
_v$68 = `repeat(${hours().length}, minmax(4rem, 1fr))`;
|
|
3194
|
+
_v$67 !== _p$.e && _$setStyleProperty(_el$181, "min-width", _p$.e = _v$67);
|
|
3195
|
+
_v$68 !== _p$.t && _$setStyleProperty(_el$181, "grid-template-rows", _p$.t = _v$68);
|
|
1815
3196
|
return _p$;
|
|
1816
3197
|
}, {
|
|
1817
3198
|
e: undefined,
|
|
1818
3199
|
t: undefined
|
|
1819
3200
|
});
|
|
1820
|
-
return _el$
|
|
3201
|
+
return _el$181;
|
|
1821
3202
|
})();
|
|
1822
3203
|
}
|
|
1823
|
-
}), _el$
|
|
3204
|
+
}), _el$160, _co$39);
|
|
1824
3205
|
_$effect(_p$ => {
|
|
1825
|
-
var _v$
|
|
1826
|
-
_v$
|
|
1827
|
-
_v$
|
|
1828
|
-
_v$
|
|
1829
|
-
_v$
|
|
1830
|
-
_v$
|
|
3206
|
+
var _v$64 = `4rem repeat(${props.days.length}, minmax(0, 1fr))`,
|
|
3207
|
+
_v$65 = `4rem repeat(${props.days.length}, minmax(0, 1fr))`,
|
|
3208
|
+
_v$66 = `repeat(${hours().length}, minmax(4rem, 1fr))`;
|
|
3209
|
+
_v$64 !== _p$.e && _$setStyleProperty(_el$148, "grid-template-columns", _p$.e = _v$64);
|
|
3210
|
+
_v$65 !== _p$.t && _$setStyleProperty(_el$157, "grid-template-columns", _p$.t = _v$65);
|
|
3211
|
+
_v$66 !== _p$.a && _$setStyleProperty(_el$158, "grid-template-rows", _p$.a = _v$66);
|
|
1831
3212
|
return _p$;
|
|
1832
3213
|
}, {
|
|
1833
3214
|
e: undefined,
|
|
1834
3215
|
t: undefined,
|
|
1835
3216
|
a: undefined
|
|
1836
3217
|
});
|
|
1837
|
-
return _el$
|
|
3218
|
+
return _el$147;
|
|
1838
3219
|
})();
|
|
1839
3220
|
};
|
|
1840
3221
|
const YearView = props => {
|
|
@@ -1875,17 +3256,17 @@ const YearView = props => {
|
|
|
1875
3256
|
});
|
|
1876
3257
|
});
|
|
1877
3258
|
return (() => {
|
|
1878
|
-
var _el$
|
|
1879
|
-
_$insert(_el$
|
|
3259
|
+
var _el$226 = _$getNextElement(_tmpl$59);
|
|
3260
|
+
_$insert(_el$226, _$createComponent(For, {
|
|
1880
3261
|
get each() {
|
|
1881
3262
|
return months();
|
|
1882
3263
|
},
|
|
1883
3264
|
children: month => (() => {
|
|
1884
|
-
var _el$
|
|
1885
|
-
_el$
|
|
1886
|
-
_el$
|
|
1887
|
-
_$insert(_el$
|
|
1888
|
-
_$insert(_el$
|
|
3265
|
+
var _el$227 = _$getNextElement(_tmpl$60),
|
|
3266
|
+
_el$228 = _el$227.firstChild,
|
|
3267
|
+
_el$229 = _el$228.nextSibling;
|
|
3268
|
+
_$insert(_el$228, () => month.label);
|
|
3269
|
+
_$insert(_el$229, _$createComponent(For, {
|
|
1889
3270
|
get each() {
|
|
1890
3271
|
return month.days;
|
|
1891
3272
|
},
|
|
@@ -1909,32 +3290,32 @@ const YearView = props => {
|
|
|
1909
3290
|
return day.events[0];
|
|
1910
3291
|
},
|
|
1911
3292
|
children: event => (() => {
|
|
1912
|
-
var _el$
|
|
3293
|
+
var _el$230 = _$getNextElement(_tmpl$61);
|
|
1913
3294
|
_$effect(_p$ => {
|
|
1914
|
-
var _v$
|
|
1915
|
-
_v$
|
|
1916
|
-
_v$
|
|
3295
|
+
var _v$80 = event().colorHex ? undefined : event().color ?? "blue",
|
|
3296
|
+
_v$81 = day.isToday ? "true" : undefined,
|
|
3297
|
+
_v$82 = event().colorHex ? {
|
|
1917
3298
|
"background-color": day.isToday ? "white" : event().colorHex
|
|
1918
3299
|
} : undefined;
|
|
1919
|
-
_v$
|
|
1920
|
-
_v$
|
|
1921
|
-
_p$.a = _$style(_el$
|
|
3300
|
+
_v$80 !== _p$.e && _$setAttribute(_el$230, "data-color", _p$.e = _v$80);
|
|
3301
|
+
_v$81 !== _p$.t && _$setAttribute(_el$230, "data-today", _p$.t = _v$81);
|
|
3302
|
+
_p$.a = _$style(_el$230, _v$82, _p$.a);
|
|
1922
3303
|
return _p$;
|
|
1923
3304
|
}, {
|
|
1924
3305
|
e: undefined,
|
|
1925
3306
|
t: undefined,
|
|
1926
3307
|
a: undefined
|
|
1927
3308
|
});
|
|
1928
|
-
return _el$
|
|
3309
|
+
return _el$230;
|
|
1929
3310
|
})()
|
|
1930
3311
|
})];
|
|
1931
3312
|
}
|
|
1932
3313
|
})
|
|
1933
3314
|
}));
|
|
1934
|
-
return _el$
|
|
3315
|
+
return _el$227;
|
|
1935
3316
|
})()
|
|
1936
3317
|
}));
|
|
1937
|
-
return _el$
|
|
3318
|
+
return _el$226;
|
|
1938
3319
|
})();
|
|
1939
3320
|
};
|
|
1940
3321
|
const MobileMonthView = props => {
|
|
@@ -1942,14 +3323,14 @@ const MobileMonthView = props => {
|
|
|
1942
3323
|
const selectedDateKey = createMemo(() => calendar.formatDateKey(props.selectedDate, dateConfig()));
|
|
1943
3324
|
const selectedEvents = createMemo(() => props.events.filter(event => event.dayKey === selectedDateKey()));
|
|
1944
3325
|
return (() => {
|
|
1945
|
-
var _el$
|
|
1946
|
-
_el$
|
|
1947
|
-
[_el$
|
|
1948
|
-
_el$
|
|
1949
|
-
_el$
|
|
1950
|
-
_el$
|
|
1951
|
-
[_el$
|
|
1952
|
-
_$insert(_el$
|
|
3326
|
+
var _el$231 = _$getNextElement(_tmpl$63),
|
|
3327
|
+
_el$237 = _el$231.firstChild,
|
|
3328
|
+
[_el$238, _co$61] = _$getNextMarker(_el$237.nextSibling),
|
|
3329
|
+
_el$232 = _el$238.nextSibling,
|
|
3330
|
+
_el$233 = _el$232.firstChild,
|
|
3331
|
+
_el$235 = _el$233.nextSibling,
|
|
3332
|
+
[_el$236, _co$60] = _$getNextMarker(_el$235.nextSibling);
|
|
3333
|
+
_$insert(_el$231, _$createComponent(MonthPickerView, {
|
|
1953
3334
|
get owner() {
|
|
1954
3335
|
return {
|
|
1955
3336
|
...props.owner,
|
|
@@ -1969,27 +3350,27 @@ const MobileMonthView = props => {
|
|
|
1969
3350
|
return props.labels;
|
|
1970
3351
|
},
|
|
1971
3352
|
compact: true
|
|
1972
|
-
}), _el$
|
|
1973
|
-
_$insert(_el$
|
|
3353
|
+
}), _el$238, _co$61);
|
|
3354
|
+
_$insert(_el$233, () => props.selectedDate.toLocaleDateString(dateConfig().locale ?? "en", {
|
|
1974
3355
|
weekday: "long",
|
|
1975
3356
|
month: "long",
|
|
1976
3357
|
day: "numeric",
|
|
1977
3358
|
timeZone: dateConfig().timeZone
|
|
1978
3359
|
}));
|
|
1979
|
-
_$insert(_el$
|
|
3360
|
+
_$insert(_el$232, _$createComponent(Show, {
|
|
1980
3361
|
get when() {
|
|
1981
3362
|
return selectedEvents().length > 0;
|
|
1982
3363
|
},
|
|
1983
3364
|
get fallback() {
|
|
1984
3365
|
return (() => {
|
|
1985
|
-
var _el$
|
|
1986
|
-
_$insert(_el$
|
|
1987
|
-
return _el$
|
|
3366
|
+
var _el$239 = _$getNextElement(_tmpl$64);
|
|
3367
|
+
_$insert(_el$239, () => props.labels.noEvents);
|
|
3368
|
+
return _el$239;
|
|
1988
3369
|
})();
|
|
1989
3370
|
},
|
|
1990
3371
|
get children() {
|
|
1991
|
-
var _el$
|
|
1992
|
-
_$insert(_el$
|
|
3372
|
+
var _el$234 = _$getNextElement(_tmpl$62);
|
|
3373
|
+
_$insert(_el$234, _$createComponent(For, {
|
|
1993
3374
|
get each() {
|
|
1994
3375
|
return selectedEvents();
|
|
1995
3376
|
},
|
|
@@ -2003,19 +3384,20 @@ const MobileMonthView = props => {
|
|
|
2003
3384
|
}
|
|
2004
3385
|
})
|
|
2005
3386
|
}));
|
|
2006
|
-
return _el$
|
|
3387
|
+
return _el$234;
|
|
2007
3388
|
}
|
|
2008
|
-
}), _el$
|
|
2009
|
-
return _el$
|
|
3389
|
+
}), _el$236, _co$60);
|
|
3390
|
+
return _el$231;
|
|
2010
3391
|
})();
|
|
2011
3392
|
};
|
|
2012
3393
|
const CalendarBody = props => (() => {
|
|
2013
|
-
var _el$
|
|
2014
|
-
_$insert(_el$
|
|
2015
|
-
return _el$
|
|
3394
|
+
var _el$240 = _$getNextElement(_tmpl$65);
|
|
3395
|
+
_$insert(_el$240, () => props.children);
|
|
3396
|
+
return _el$240;
|
|
2016
3397
|
})();
|
|
2017
3398
|
const CalendarRoot = props => {
|
|
2018
3399
|
const messages = useUiMessages();
|
|
3400
|
+
const calendarMessages = useCalendarMessages();
|
|
2019
3401
|
// Subviews derive their date config from the owner props, so the inherited
|
|
2020
3402
|
// render locale is merged here once; an explicit dateConfig.locale wins.
|
|
2021
3403
|
const localizedConfig = useDateConfigLocale(() => props.dateConfig);
|
|
@@ -2034,6 +3416,8 @@ const CalendarRoot = props => {
|
|
|
2034
3416
|
const date = createMemo(() => safeDate(props.date));
|
|
2035
3417
|
const selectedDate = createMemo(() => safeDate(props.selectedDate ?? props.date));
|
|
2036
3418
|
const [now, setNow] = createSignal(new Date());
|
|
3419
|
+
/** The first day selected in the month view, so the view switcher opens the other views at it. */
|
|
3420
|
+
const [focusDay, setFocusDay] = createSignal(null);
|
|
2037
3421
|
const normalizedEvents = createMemo(() => normalizeEvents(props.events, dateConfig()));
|
|
2038
3422
|
const mergedLabels = createMemo(() => ({
|
|
2039
3423
|
today: messages().today,
|
|
@@ -2042,7 +3426,7 @@ const CalendarRoot = props => {
|
|
|
2042
3426
|
month: messages().month,
|
|
2043
3427
|
year: messages().year,
|
|
2044
3428
|
allDay: messages().allDay,
|
|
2045
|
-
noEvents:
|
|
3429
|
+
noEvents: calendarMessages().noEvents,
|
|
2046
3430
|
previous: messages().previous,
|
|
2047
3431
|
next: messages().next,
|
|
2048
3432
|
...props.labels
|
|
@@ -2061,14 +3445,12 @@ const CalendarRoot = props => {
|
|
|
2061
3445
|
});
|
|
2062
3446
|
});
|
|
2063
3447
|
return (() => {
|
|
2064
|
-
var _el$
|
|
2065
|
-
_el$
|
|
2066
|
-
[_el$
|
|
2067
|
-
_el$
|
|
2068
|
-
[_el$
|
|
2069
|
-
|
|
2070
|
-
[_el$178, _co$47] = _$getNextMarker(_el$177.nextSibling);
|
|
2071
|
-
_$insert(_el$172, _$createComponent(CalendarHeader, {
|
|
3448
|
+
var _el$241 = _$getNextElement(_tmpl$66),
|
|
3449
|
+
_el$242 = _el$241.firstChild,
|
|
3450
|
+
[_el$243, _co$62] = _$getNextMarker(_el$242.nextSibling),
|
|
3451
|
+
_el$244 = _el$243.nextSibling,
|
|
3452
|
+
[_el$245, _co$63] = _$getNextMarker(_el$244.nextSibling);
|
|
3453
|
+
_$insert(_el$241, _$createComponent(CalendarHeader, {
|
|
2072
3454
|
get date() {
|
|
2073
3455
|
return date();
|
|
2074
3456
|
},
|
|
@@ -2078,10 +3460,12 @@ const CalendarRoot = props => {
|
|
|
2078
3460
|
get labels() {
|
|
2079
3461
|
return mergedLabels();
|
|
2080
3462
|
},
|
|
2081
|
-
owner: owner
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
3463
|
+
owner: owner,
|
|
3464
|
+
get focusDay() {
|
|
3465
|
+
return _$memo(() => view() === "month")() ? focusDay() : null;
|
|
3466
|
+
}
|
|
3467
|
+
}), _el$243, _co$62);
|
|
3468
|
+
_$insert(_el$241, _$createComponent(Show, {
|
|
2085
3469
|
get when() {
|
|
2086
3470
|
return !custom();
|
|
2087
3471
|
},
|
|
@@ -2113,7 +3497,8 @@ const CalendarRoot = props => {
|
|
|
2113
3497
|
},
|
|
2114
3498
|
get labels() {
|
|
2115
3499
|
return mergedLabels();
|
|
2116
|
-
}
|
|
3500
|
+
},
|
|
3501
|
+
onFocusDay: setFocusDay
|
|
2117
3502
|
});
|
|
2118
3503
|
}
|
|
2119
3504
|
});
|
|
@@ -2196,18 +3581,18 @@ const CalendarRoot = props => {
|
|
|
2196
3581
|
}
|
|
2197
3582
|
});
|
|
2198
3583
|
}
|
|
2199
|
-
}), _el$
|
|
3584
|
+
}), _el$245, _co$63);
|
|
2200
3585
|
_$effect(_p$ => {
|
|
2201
|
-
var _v$
|
|
2202
|
-
_v$
|
|
2203
|
-
_v$
|
|
2204
|
-
_v$
|
|
3586
|
+
var _v$83 = `k2b-content-calendar ${props.class ?? ""}`,
|
|
3587
|
+
_v$84 = props.navigationPending ? "true" : undefined;
|
|
3588
|
+
_v$83 !== _p$.e && _$className(_el$241, _p$.e = _v$83);
|
|
3589
|
+
_v$84 !== _p$.t && _$setAttribute(_el$241, "aria-busy", _p$.t = _v$84);
|
|
2205
3590
|
return _p$;
|
|
2206
3591
|
}, {
|
|
2207
3592
|
e: undefined,
|
|
2208
3593
|
t: undefined
|
|
2209
3594
|
});
|
|
2210
|
-
return _el$
|
|
3595
|
+
return _el$241;
|
|
2211
3596
|
})();
|
|
2212
3597
|
};
|
|
2213
3598
|
|
|
@@ -2217,5 +3602,5 @@ function Calendar(props) {
|
|
|
2217
3602
|
return CalendarRoot(props);
|
|
2218
3603
|
}
|
|
2219
3604
|
export default Calendar;
|
|
2220
|
-
_$delegateEvents(["click", "dblclick", "pointerdown", "keydown"]);
|
|
3605
|
+
_$delegateEvents(["click", "dblclick", "pointerdown", "keydown", "contextmenu", "focusin"]);
|
|
2221
3606
|
//# sourceMappingURL=Calendar.js.map
|