@prolibu-suite/cobalt-core 0.7.0 → 0.8.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/custom-elements.json +8266 -5138
- package/dist/cjs/co-action-bar.cjs.entry.js +89 -0
- package/dist/cjs/co-app-shell.cjs.entry.js +2 -2
- package/dist/cjs/co-audio-player.cjs.entry.js +279 -0
- package/dist/cjs/co-avatar_2.cjs.entry.js +3 -3
- package/dist/cjs/co-badge.cjs.entry.js +1 -1
- package/dist/cjs/co-bottom-sheet.cjs.entry.js +3 -3
- package/dist/cjs/co-breadcrumb-item.cjs.entry.js +2 -2
- package/dist/cjs/co-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/co-button-group.cjs.entry.js +2 -2
- package/dist/cjs/co-button.cjs.entry.js +12 -5
- package/dist/cjs/co-calendar-month_2.cjs.entry.js +1601 -0
- package/dist/cjs/co-calendar_3.cjs.entry.js +9 -9
- package/dist/cjs/co-card.cjs.entry.js +2 -2
- package/dist/cjs/co-carousel-item.cjs.entry.js +1 -1
- package/dist/cjs/co-carousel.cjs.entry.js +3 -3
- package/dist/cjs/co-checkbox.cjs.entry.js +4 -4
- package/dist/cjs/co-chip_2.cjs.entry.js +95 -6
- package/dist/cjs/co-color-picker.cjs.entry.js +2 -2
- package/dist/cjs/co-column-picker.cjs.entry.js +2 -2
- package/dist/cjs/co-data-table-pagination.cjs.entry.js +4 -4
- package/dist/cjs/co-data-table.cjs.entry.js +1 -1
- package/dist/cjs/co-date-picker.cjs.entry.js +1 -1
- package/dist/cjs/co-date-range-picker.cjs.entry.js +2 -2
- package/dist/cjs/co-date-range.cjs.entry.js +1 -1
- package/dist/cjs/co-date-time-picker.cjs.entry.js +409 -0
- package/dist/cjs/co-drive-card.cjs.entry.js +1 -1
- package/dist/cjs/co-drop-zone.cjs.entry.js +1 -1
- package/dist/cjs/co-empty-state.cjs.entry.js +2 -2
- package/dist/cjs/co-event-calendar.cjs.entry.js +118 -17
- package/dist/cjs/co-event-popover.cjs.entry.js +132 -0
- package/dist/cjs/co-fab.cjs.entry.js +2 -2
- package/dist/cjs/co-file-field.cjs.entry.js +5 -5
- package/dist/cjs/co-file-type-tile.cjs.entry.js +2 -2
- package/dist/cjs/co-helper-text.cjs.entry.js +2 -2
- package/dist/cjs/co-icon-button.cjs.entry.js +1 -1
- package/dist/cjs/co-icon.cjs.entry.js +2 -2
- package/dist/cjs/co-json-field.cjs.entry.js +3 -3
- package/dist/cjs/co-lightbox.cjs.entry.js +5 -5
- package/dist/cjs/co-list-footer.cjs.entry.js +1 -1
- package/dist/cjs/co-list-item.cjs.entry.js +4 -4
- package/dist/cjs/co-media-thumb.cjs.entry.js +2 -2
- package/dist/cjs/co-menu-divider.cjs.entry.js +1 -1
- package/dist/cjs/co-menu-item.cjs.entry.js +2 -2
- package/dist/cjs/co-menu.cjs.entry.js +1 -1
- package/dist/cjs/co-modal.cjs.entry.js +2 -2
- package/dist/cjs/co-navbar.cjs.entry.js +2 -2
- package/dist/cjs/co-number-field.cjs.entry.js +2 -2
- package/dist/cjs/co-overlay.cjs.entry.js +1 -1
- package/dist/cjs/co-page-header.cjs.entry.js +1 -1
- package/dist/cjs/co-phone-field.cjs.entry.js +1 -1
- package/dist/cjs/co-popover.cjs.entry.js +1 -1
- package/dist/cjs/co-progress-bar.cjs.entry.js +2 -2
- package/dist/cjs/co-progress-circle.cjs.entry.js +2 -2
- package/dist/cjs/co-provider-logo_2.cjs.entry.js +72 -0
- package/dist/cjs/co-radio.cjs.entry.js +3 -3
- package/dist/cjs/co-rating.cjs.entry.js +3 -3
- package/dist/cjs/co-ref-field.cjs.entry.js +6 -2
- package/dist/cjs/co-rich-text-editor.cjs.entry.js +4 -4
- package/dist/cjs/co-rich-text-toolbar.cjs.entry.js +1 -1
- package/dist/cjs/co-row.cjs.entry.js +2 -2
- package/dist/cjs/co-select.cjs.entry.js +1 -1
- package/dist/cjs/co-separator.cjs.entry.js +1 -1
- package/dist/cjs/co-sidebar-nav.cjs.entry.js +12 -2
- package/dist/cjs/co-sidebar.cjs.entry.js +2 -2
- package/dist/cjs/co-slider.cjs.entry.js +2 -2
- package/dist/cjs/co-switch.cjs.entry.js +3 -3
- package/dist/cjs/co-tab-group.cjs.entry.js +19 -3
- package/dist/cjs/co-tab.cjs.entry.js +2 -2
- package/dist/cjs/co-tags-field.cjs.entry.js +5 -5
- package/dist/cjs/co-textarea.cjs.entry.js +4 -4
- package/dist/cjs/co-toggle-button-group.cjs.entry.js +2 -2
- package/dist/cjs/co-toggle-button.cjs.entry.js +2 -2
- package/dist/cjs/co-video.cjs.entry.js +2 -2
- package/dist/cjs/cobalt.cjs.js +1 -1
- package/dist/cjs/{dateI18n-BdiNAl0_.js → dateI18n-wblvKRq_.js} +21 -0
- package/dist/cjs/{dates-D8D-aS5d.js → dates-TQLHlFd2.js} +64 -13
- package/dist/cjs/index-kBiXCEE7.js +28 -12
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{positioning-DwHW399W.js → positioning-DCj_AJ2T.js} +10 -0
- package/dist/cjs/time-LBHtzLHe.js +42 -0
- package/dist/cobalt/cobalt.esm.js +1 -1
- package/dist/cobalt/{p-616e4286.entry.js → p-00830b8c.entry.js} +1 -1
- package/dist/cobalt/{p-9994fcd8.entry.js → p-0769eee9.entry.js} +1 -1
- package/dist/cobalt/{p-9bf42bf4.entry.js → p-0f18c4d2.entry.js} +1 -1
- package/dist/cobalt/{p-cdedaa82.entry.js → p-0fc1edca.entry.js} +1 -1
- package/dist/cobalt/p-15852fec.entry.js +1 -0
- package/dist/cobalt/{p-eec1c44c.entry.js → p-195c67ee.entry.js} +1 -1
- package/dist/cobalt/{p-B6JZk8fL.js → p-1EK-COrb.js} +1 -1
- package/dist/cobalt/{p-2da09948.entry.js → p-1e9c9d46.entry.js} +1 -1
- package/dist/cobalt/{p-e1b468c1.entry.js → p-20bd3702.entry.js} +1 -1
- package/dist/cobalt/p-25f59046.entry.js +1 -0
- package/dist/cobalt/{p-b06af5c6.entry.js → p-260196cb.entry.js} +1 -1
- package/dist/cobalt/p-2bf44b2b.entry.js +1 -0
- package/dist/cobalt/{p-8155d781.entry.js → p-2c100914.entry.js} +1 -1
- package/dist/cobalt/p-2e1d930f.entry.js +1 -0
- package/dist/cobalt/{p-080f62e4.entry.js → p-35518aee.entry.js} +1 -1
- package/dist/cobalt/{p-28ab9cef.entry.js → p-38ae8bff.entry.js} +1 -1
- package/dist/cobalt/{p-f0a98453.entry.js → p-38cf47b6.entry.js} +1 -1
- package/dist/cobalt/p-39dea0c0.entry.js +1 -0
- package/dist/cobalt/{p-3c681e3a.entry.js → p-3a746267.entry.js} +1 -1
- package/dist/cobalt/p-3ae69426.entry.js +1 -0
- package/dist/cobalt/{p-9211e794.entry.js → p-3d4e697e.entry.js} +1 -1
- package/dist/cobalt/{p-264508ae.entry.js → p-445acc4c.entry.js} +1 -1
- package/dist/cobalt/p-4de9232a.entry.js +1 -0
- package/dist/cobalt/{p-7f78e45c.entry.js → p-50bbfad8.entry.js} +1 -1
- package/dist/cobalt/{p-54f8c68c.entry.js → p-51a1ad38.entry.js} +1 -1
- package/dist/cobalt/{p-75515a8e.entry.js → p-523aca9f.entry.js} +1 -1
- package/dist/cobalt/{p-2f6c7eb5.entry.js → p-52af222b.entry.js} +1 -1
- package/dist/cobalt/{p-0b7359bb.entry.js → p-59f7d44b.entry.js} +1 -1
- package/dist/cobalt/{p-4f615cbd.entry.js → p-5b984323.entry.js} +1 -1
- package/dist/cobalt/{p-8fe5b07e.entry.js → p-5bfaca70.entry.js} +1 -1
- package/dist/cobalt/p-5c1328ff.entry.js +1 -0
- package/dist/cobalt/p-5e21ca17.entry.js +1 -0
- package/dist/cobalt/p-61d5ca3c.entry.js +1 -0
- package/dist/cobalt/{p-64115d66.entry.js → p-6357d9dd.entry.js} +1 -1
- package/dist/cobalt/{p-0a294205.entry.js → p-6985a964.entry.js} +1 -1
- package/dist/cobalt/p-69b8d98e.entry.js +1 -0
- package/dist/cobalt/{p-532baca4.entry.js → p-6b089060.entry.js} +1 -1
- package/dist/cobalt/{p-ceb85838.entry.js → p-6b256d01.entry.js} +1 -1
- package/dist/cobalt/{p-c9528a5f.entry.js → p-7c6b3175.entry.js} +1 -1
- package/dist/cobalt/{p-431cec34.entry.js → p-7d077a7c.entry.js} +1 -1
- package/dist/cobalt/{p-cbac0a11.entry.js → p-7f4bf341.entry.js} +1 -1
- package/dist/cobalt/p-869c338a.entry.js +1 -0
- package/dist/cobalt/p-890296f9.entry.js +1 -0
- package/dist/cobalt/{p-7178113f.entry.js → p-8fe08257.entry.js} +1 -1
- package/dist/cobalt/p-913b2a14.entry.js +1 -0
- package/dist/cobalt/{p-5b84cf37.entry.js → p-959556f4.entry.js} +1 -1
- package/dist/cobalt/{p-331a0108.entry.js → p-99c1ff0f.entry.js} +1 -1
- package/dist/cobalt/p-BMdapAL8.js +1 -0
- package/dist/cobalt/p-BU7SQCje.js +1 -0
- package/dist/cobalt/p-CF8OB_TM.js +1 -0
- package/dist/cobalt/p-CnNpoKwg.js +1 -0
- package/dist/cobalt/{p-ba5c6aa7.entry.js → p-a04feb70.entry.js} +1 -1
- package/dist/cobalt/p-a4f39ba2.entry.js +1 -0
- package/dist/cobalt/{p-d3a1a604.entry.js → p-a7c23027.entry.js} +1 -1
- package/dist/cobalt/p-ab8e150e.entry.js +1 -0
- package/dist/cobalt/{p-69ce2269.entry.js → p-acdb68a7.entry.js} +1 -1
- package/dist/cobalt/{p-3b9be8a8.entry.js → p-afd957c0.entry.js} +1 -1
- package/dist/cobalt/{p-c3004e1c.entry.js → p-b45ea918.entry.js} +1 -1
- package/dist/cobalt/{p-eeed80ac.entry.js → p-bad7ce84.entry.js} +1 -1
- package/dist/cobalt/{p-bcd38114.entry.js → p-bebacee2.entry.js} +1 -1
- package/dist/cobalt/{p-ec9dd3a3.entry.js → p-c32949a5.entry.js} +1 -1
- package/dist/cobalt/p-cd5555d2.entry.js +1 -0
- package/dist/cobalt/p-cd96aabf.entry.js +1 -0
- package/dist/cobalt/{p-2661557c.entry.js → p-ce961fba.entry.js} +1 -1
- package/dist/cobalt/p-d56b8a1f.entry.js +1 -0
- package/dist/cobalt/{p-c7d9ff39.entry.js → p-d6fff135.entry.js} +1 -1
- package/dist/cobalt/{p-6b38e8fb.entry.js → p-d71b87d3.entry.js} +1 -1
- package/dist/cobalt/{p-ff581807.entry.js → p-d83e5189.entry.js} +1 -1
- package/dist/cobalt/{p-741cf623.entry.js → p-dc269096.entry.js} +1 -1
- package/dist/cobalt/{p-e4555fda.entry.js → p-dc8e88f4.entry.js} +1 -1
- package/dist/cobalt/p-de5a05fc.entry.js +1 -0
- package/dist/cobalt/{p-0110108f.entry.js → p-df63f23c.entry.js} +1 -1
- package/dist/cobalt/{p-9fab9c1f.entry.js → p-e2188319.entry.js} +1 -1
- package/dist/cobalt/p-f0c589ad.entry.js +1 -0
- package/dist/cobalt/p-f4370423.entry.js +1 -0
- package/dist/cobalt/{p-b87a2e7a.entry.js → p-f4e4bebf.entry.js} +1 -1
- package/dist/cobalt/p-f53b9536.entry.js +1 -0
- package/dist/cobalt/{p-bb00ae4a.entry.js → p-f7ae0228.entry.js} +1 -1
- package/dist/collection/collection-manifest.json +6 -0
- package/dist/collection/components/co-action-bar/co-action-bar.css +148 -0
- package/dist/collection/components/co-action-bar/co-action-bar.js +247 -0
- package/dist/collection/components/co-app-shell/co-app-shell.js +2 -2
- package/dist/collection/components/co-audio-player/co-audio-player.css +58 -0
- package/dist/collection/components/co-audio-player/co-audio-player.js +453 -0
- package/dist/collection/components/co-audio-player/co-audio-player.utils.js +44 -0
- package/dist/collection/components/co-badge/co-badge.js +1 -1
- package/dist/collection/components/co-bottom-sheet/co-bottom-sheet.js +3 -3
- package/dist/collection/components/co-breadcrumb/co-breadcrumb.js +1 -1
- package/dist/collection/components/co-breadcrumb-item/co-breadcrumb-item.js +2 -2
- package/dist/collection/components/co-button/co-button.css +19 -0
- package/dist/collection/components/co-button/co-button.js +31 -5
- package/dist/collection/components/co-button-group/co-button-group.js +2 -2
- package/dist/collection/components/co-calendar/co-calendar.js +1 -1
- package/dist/collection/components/co-calendar-month/co-calendar-month.css +52 -3
- package/dist/collection/components/co-calendar-month/co-calendar-month.js +238 -55
- package/dist/collection/components/co-calendar-timegrid/co-calendar-timegrid.css +265 -0
- package/dist/collection/components/co-calendar-timegrid/co-calendar-timegrid.js +1305 -0
- package/dist/collection/components/co-card/co-card.js +2 -2
- package/dist/collection/components/co-carousel/co-carousel.js +2 -2
- package/dist/collection/components/co-carousel-item/co-carousel-item.js +1 -1
- package/dist/collection/components/co-checkbox/co-checkbox.css +1 -1
- package/dist/collection/components/co-checkbox/co-checkbox.js +3 -3
- package/dist/collection/components/co-chip/co-chip.js +2 -2
- package/dist/collection/components/co-color-picker/co-color-picker.js +2 -2
- package/dist/collection/components/co-column-picker/co-column-picker.js +2 -2
- package/dist/collection/components/co-data-table/co-data-table.css +4 -4
- package/dist/collection/components/co-data-table-pagination/co-data-table-pagination.js +4 -4
- package/dist/collection/components/co-date-field/co-date-field.js +4 -4
- package/dist/collection/components/co-date-range/co-date-range.js +1 -1
- package/dist/collection/components/co-date-time-picker/co-date-time-picker.css +325 -0
- package/dist/collection/components/co-date-time-picker/co-date-time-picker.js +1079 -0
- package/dist/collection/components/co-drawer/co-drawer.css +46 -0
- package/dist/collection/components/co-drawer/co-drawer.js +1 -1
- package/dist/collection/components/co-drive-card/co-drive-card.js +1 -1
- package/dist/collection/components/co-drop-zone/co-drop-zone.js +1 -1
- package/dist/collection/components/co-empty-state/co-empty-state.js +2 -2
- package/dist/collection/components/co-event-calendar/co-event-calendar.css +19 -7
- package/dist/collection/components/co-event-calendar/co-event-calendar.js +342 -39
- package/dist/collection/components/co-event-popover/co-event-popover.css +26 -0
- package/dist/collection/components/co-event-popover/co-event-popover.js +326 -0
- package/dist/collection/components/co-fab/co-fab.js +2 -2
- package/dist/collection/components/co-file-field/co-file-field.js +5 -5
- package/dist/collection/components/co-file-type-tile/co-file-type-tile.js +2 -2
- package/dist/collection/components/co-helper-text/co-helper-text.js +2 -2
- package/dist/collection/components/co-icon/co-icon.js +2 -2
- package/dist/collection/components/co-icon-button/co-icon-button.js +1 -1
- package/dist/collection/components/co-json-field/co-json-field.js +3 -3
- package/dist/collection/components/co-lightbox/co-lightbox.js +4 -4
- package/dist/collection/components/co-list-footer/co-list-footer.js +1 -1
- package/dist/collection/components/co-list-item/co-list-item.js +4 -4
- package/dist/collection/components/co-media-thumb/co-media-thumb.js +2 -2
- package/dist/collection/components/co-menu/co-menu.js +1 -1
- package/dist/collection/components/co-menu-divider/co-menu-divider.js +1 -1
- package/dist/collection/components/co-menu-item/co-menu-item.css +21 -0
- package/dist/collection/components/co-menu-item/co-menu-item.js +20 -1
- package/dist/collection/components/co-modal/co-modal.js +2 -2
- package/dist/collection/components/co-navbar/co-navbar.js +2 -2
- package/dist/collection/components/co-number-field/co-number-field.js +2 -2
- package/dist/collection/components/co-option-list/co-option-list.css +18 -0
- package/dist/collection/components/co-option-list/co-option-list.js +127 -5
- package/dist/collection/components/co-option-list/optionListLogic.js +13 -0
- package/dist/collection/components/co-overlay/co-overlay.js +1 -1
- package/dist/collection/components/co-page-header/co-page-header.js +1 -1
- package/dist/collection/components/co-phone-field/co-phone-field.js +1 -1
- package/dist/collection/components/co-progress-bar/co-progress-bar.js +2 -2
- package/dist/collection/components/co-progress-circle/co-progress-circle.js +2 -2
- package/dist/collection/components/co-provider-logo/co-provider-logo.css +23 -0
- package/dist/collection/components/co-provider-logo/co-provider-logo.js +124 -0
- package/dist/collection/components/co-radio/co-radio.js +3 -3
- package/dist/collection/components/co-rating/co-rating.js +3 -3
- package/dist/collection/components/co-ref-field/co-ref-field.js +6 -2
- package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.css +11 -0
- package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.js +3 -3
- package/dist/collection/components/co-rich-text-toolbar/co-rich-text-toolbar.css +8 -0
- package/dist/collection/components/co-row/co-row.js +2 -2
- package/dist/collection/components/co-select/co-select.js +1 -1
- package/dist/collection/components/co-separator/co-separator.js +1 -1
- package/dist/collection/components/co-sidebar/co-sidebar.js +2 -2
- package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.js +12 -2
- package/dist/collection/components/co-skeleton/co-skeleton.js +1 -1
- package/dist/collection/components/co-slider/co-slider.js +2 -2
- package/dist/collection/components/co-switch/co-switch.js +3 -3
- package/dist/collection/components/co-tab/co-tab.js +2 -2
- package/dist/collection/components/co-tab-group/co-tab-group.css +25 -0
- package/dist/collection/components/co-tab-group/co-tab-group.js +18 -2
- package/dist/collection/components/co-tags-field/co-tags-field.js +5 -5
- package/dist/collection/components/co-textarea/co-textarea.js +4 -4
- package/dist/collection/components/co-toggle-button/co-toggle-button.js +2 -2
- package/dist/collection/components/co-toggle-button-group/co-toggle-button-group.js +2 -2
- package/dist/collection/components/co-tooltip/co-tooltip.js +2 -2
- package/dist/collection/components/co-video/co-video.js +2 -2
- package/dist/collection/utils/dateI18n.js +21 -0
- package/dist/collection/utils/eventColor.js +52 -0
- package/dist/collection/utils/positioning.js +10 -0
- package/dist/components/co-accordion.js +1 -1
- package/dist/components/co-action-bar.d.ts +11 -0
- package/dist/components/co-action-bar.js +1 -0
- package/dist/components/co-app-shell.js +1 -1
- package/dist/components/co-audio-player.d.ts +11 -0
- package/dist/components/co-audio-player.js +1 -0
- package/dist/components/co-autocomplete.js +1 -1
- package/dist/components/co-avatar-group.js +1 -1
- package/dist/components/co-avatar.js +1 -1
- package/dist/components/co-badge.js +1 -1
- package/dist/components/co-bottom-sheet.js +1 -1
- package/dist/components/co-breadcrumb-item.js +1 -1
- package/dist/components/co-breadcrumb.js +1 -1
- package/dist/components/co-button-group.js +1 -1
- package/dist/components/co-button.js +1 -1
- package/dist/components/co-calendar-month.js +1 -1
- package/dist/components/co-calendar-timegrid.d.ts +11 -0
- package/dist/components/co-calendar-timegrid.js +1 -0
- package/dist/components/co-calendar.js +1 -1
- package/dist/components/co-card.js +1 -1
- package/dist/components/co-carousel-item.js +1 -1
- package/dist/components/co-carousel.js +1 -1
- package/dist/components/co-checkbox-group.js +1 -1
- package/dist/components/co-checkbox.js +1 -1
- package/dist/components/co-chip.js +1 -1
- package/dist/components/co-color-picker.js +1 -1
- package/dist/components/co-column-picker.js +1 -1
- package/dist/components/co-combobox.js +1 -1
- package/dist/components/co-command-search.js +1 -1
- package/dist/components/co-data-table-pagination.js +1 -1
- package/dist/components/co-data-table.js +1 -1
- package/dist/components/co-date-field.js +1 -1
- package/dist/components/co-date-picker.js +1 -1
- package/dist/components/co-date-range-picker.js +1 -1
- package/dist/components/co-date-range.js +1 -1
- package/dist/components/co-date-time-picker.d.ts +11 -0
- package/dist/components/co-date-time-picker.js +1 -0
- package/dist/components/co-drawer.js +1 -1
- package/dist/components/co-drive-card.js +1 -1
- package/dist/components/co-drop-zone.js +1 -1
- package/dist/components/co-empty-state.js +1 -1
- package/dist/components/co-event-calendar.js +1 -1
- package/dist/components/co-event-popover.d.ts +11 -0
- package/dist/components/co-event-popover.js +1 -0
- package/dist/components/co-fab.js +1 -1
- package/dist/components/co-file-field.js +1 -1
- package/dist/components/co-file-type-tile.js +1 -1
- package/dist/components/co-helper-text.js +1 -1
- package/dist/components/co-icon-button.js +1 -1
- package/dist/components/co-icon.js +1 -1
- package/dist/components/co-input.js +1 -1
- package/dist/components/co-json-field.js +1 -1
- package/dist/components/co-lightbox.js +1 -1
- package/dist/components/co-list-footer.js +1 -1
- package/dist/components/co-list-item.js +1 -1
- package/dist/components/co-media-thumb.js +1 -1
- package/dist/components/co-menu-divider.js +1 -1
- package/dist/components/co-menu-item.js +1 -1
- package/dist/components/co-menu.js +1 -1
- package/dist/components/co-modal.js +1 -1
- package/dist/components/co-navbar.js +1 -1
- package/dist/components/co-number-field.js +1 -1
- package/dist/components/co-option-list.js +1 -1
- package/dist/components/co-overlay.js +1 -1
- package/dist/components/co-page-header.js +1 -1
- package/dist/components/co-phone-field.js +1 -1
- package/dist/components/co-popover.js +1 -1
- package/dist/components/co-progress-bar.js +1 -1
- package/dist/components/co-progress-circle.js +1 -1
- package/dist/components/co-provider-logo.d.ts +11 -0
- package/dist/components/co-provider-logo.js +1 -0
- package/dist/components/co-radio-group.js +1 -1
- package/dist/components/co-radio.js +1 -1
- package/dist/components/co-rating.js +1 -1
- package/dist/components/co-ref-field.js +1 -1
- package/dist/components/co-rich-text-editor.js +1 -1
- package/dist/components/co-rich-text-toolbar.js +1 -1
- package/dist/components/co-row.js +1 -1
- package/dist/components/co-select.js +1 -1
- package/dist/components/co-separator.js +1 -1
- package/dist/components/co-sidebar-nav.js +1 -1
- package/dist/components/co-sidebar.js +1 -1
- package/dist/components/co-skeleton.js +1 -1
- package/dist/components/co-slider.js +1 -1
- package/dist/components/co-switch.js +1 -1
- package/dist/components/co-tab-group.js +1 -1
- package/dist/components/co-tab.js +1 -1
- package/dist/components/co-tags-field.js +1 -1
- package/dist/components/co-textarea.js +1 -1
- package/dist/components/co-toast.js +1 -1
- package/dist/components/co-toggle-button-group.js +1 -1
- package/dist/components/co-toggle-button.js +1 -1
- package/dist/components/co-tooltip.js +1 -1
- package/dist/components/co-transfer-list.js +1 -1
- package/dist/components/co-video.js +1 -1
- package/dist/components/p-B21rOC2Y.js +1 -0
- package/dist/components/{p-Cd3inFSL.js → p-BC6sxVVr.js} +1 -1
- package/dist/components/p-BMdapAL8.js +1 -0
- package/dist/components/p-BQFperIX.js +1 -0
- package/dist/components/{p-CQ-8domm.js → p-BXtiFFM2.js} +1 -1
- package/dist/components/{p-CmCsm4L-.js → p-BdArvV6T.js} +1 -1
- package/dist/components/p-BnkGlFYy.js +1 -0
- package/dist/components/p-C-5cLeKr.js +1 -0
- package/dist/components/p-CDWXNRpo.js +1 -0
- package/dist/components/p-CF8OB_TM.js +1 -0
- package/dist/components/{p-oV_1MoAN.js → p-CIWoKlGj.js} +1 -1
- package/dist/components/{p-Bul6EdDX.js → p-CVCEiwOS.js} +1 -1
- package/dist/components/{p-B0b9Etx4.js → p-CfeNhAHW.js} +1 -1
- package/dist/components/p-Ch837Ggl.js +1 -0
- package/dist/components/p-ChLib-si.js +1 -0
- package/dist/components/{p-DfpOEXHC.js → p-ChPooamL.js} +1 -1
- package/dist/components/p-CnNpoKwg.js +1 -0
- package/dist/components/{p-B7Yv00g9.js → p-D-3BTFRs.js} +1 -1
- package/dist/components/p-D0wrmRH8.js +1 -0
- package/dist/components/p-DZX7cEqP.js +1 -0
- package/dist/components/{p-B3U63yZw.js → p-DbISGXT_.js} +1 -1
- package/dist/components/p-Dxa7c4Ap.js +1 -0
- package/dist/components/p-T0MdU7sb.js +1 -0
- package/dist/components/{p-DwwxS5bY.js → p-W8Y8ZuPs.js} +1 -1
- package/dist/components/{p-9aNhJfTT.js → p-cteJszd-.js} +1 -1
- package/dist/components/p-e5KibEs8.js +1 -0
- package/dist/components/{p-Bzg5FPSA.js → p-mUoTCiYa.js} +1 -1
- package/dist/components/p-uZ2D6ESV.js +1 -0
- package/dist/components/{p-BtpRnpaF.js → p-ySi6UG0O.js} +1 -1
- package/dist/esm/co-action-bar.entry.js +87 -0
- package/dist/esm/co-app-shell.entry.js +2 -2
- package/dist/esm/co-audio-player.entry.js +277 -0
- package/dist/esm/co-avatar_2.entry.js +3 -3
- package/dist/esm/co-badge.entry.js +1 -1
- package/dist/esm/co-bottom-sheet.entry.js +3 -3
- package/dist/esm/co-breadcrumb-item.entry.js +2 -2
- package/dist/esm/co-breadcrumb.entry.js +1 -1
- package/dist/esm/co-button-group.entry.js +2 -2
- package/dist/esm/co-button.entry.js +12 -5
- package/dist/esm/co-calendar-month_2.entry.js +1598 -0
- package/dist/esm/co-calendar_3.entry.js +9 -9
- package/dist/esm/co-card.entry.js +2 -2
- package/dist/esm/co-carousel-item.entry.js +1 -1
- package/dist/esm/co-carousel.entry.js +3 -3
- package/dist/esm/co-checkbox.entry.js +4 -4
- package/dist/esm/co-chip_2.entry.js +95 -6
- package/dist/esm/co-color-picker.entry.js +2 -2
- package/dist/esm/co-column-picker.entry.js +2 -2
- package/dist/esm/co-data-table-pagination.entry.js +4 -4
- package/dist/esm/co-data-table.entry.js +1 -1
- package/dist/esm/co-date-picker.entry.js +1 -1
- package/dist/esm/co-date-range-picker.entry.js +2 -2
- package/dist/esm/co-date-range.entry.js +1 -1
- package/dist/esm/co-date-time-picker.entry.js +407 -0
- package/dist/esm/co-drive-card.entry.js +1 -1
- package/dist/esm/co-drop-zone.entry.js +1 -1
- package/dist/esm/co-empty-state.entry.js +2 -2
- package/dist/esm/co-event-calendar.entry.js +120 -19
- package/dist/esm/co-event-popover.entry.js +130 -0
- package/dist/esm/co-fab.entry.js +2 -2
- package/dist/esm/co-file-field.entry.js +5 -5
- package/dist/esm/co-file-type-tile.entry.js +2 -2
- package/dist/esm/co-helper-text.entry.js +2 -2
- package/dist/esm/co-icon-button.entry.js +1 -1
- package/dist/esm/co-icon.entry.js +2 -2
- package/dist/esm/co-json-field.entry.js +3 -3
- package/dist/esm/co-lightbox.entry.js +5 -5
- package/dist/esm/co-list-footer.entry.js +1 -1
- package/dist/esm/co-list-item.entry.js +4 -4
- package/dist/esm/co-media-thumb.entry.js +2 -2
- package/dist/esm/co-menu-divider.entry.js +1 -1
- package/dist/esm/co-menu-item.entry.js +2 -2
- package/dist/esm/co-menu.entry.js +1 -1
- package/dist/esm/co-modal.entry.js +2 -2
- package/dist/esm/co-navbar.entry.js +2 -2
- package/dist/esm/co-number-field.entry.js +2 -2
- package/dist/esm/co-overlay.entry.js +1 -1
- package/dist/esm/co-page-header.entry.js +1 -1
- package/dist/esm/co-phone-field.entry.js +1 -1
- package/dist/esm/co-popover.entry.js +1 -1
- package/dist/esm/co-progress-bar.entry.js +2 -2
- package/dist/esm/co-progress-circle.entry.js +2 -2
- package/dist/esm/co-provider-logo_2.entry.js +69 -0
- package/dist/esm/co-radio.entry.js +3 -3
- package/dist/esm/co-rating.entry.js +3 -3
- package/dist/esm/co-ref-field.entry.js +6 -2
- package/dist/esm/co-rich-text-editor.entry.js +4 -4
- package/dist/esm/co-rich-text-toolbar.entry.js +1 -1
- package/dist/esm/co-row.entry.js +2 -2
- package/dist/esm/co-select.entry.js +1 -1
- package/dist/esm/co-separator.entry.js +1 -1
- package/dist/esm/co-sidebar-nav.entry.js +12 -2
- package/dist/esm/co-sidebar.entry.js +2 -2
- package/dist/esm/co-slider.entry.js +2 -2
- package/dist/esm/co-switch.entry.js +3 -3
- package/dist/esm/co-tab-group.entry.js +19 -3
- package/dist/esm/co-tab.entry.js +2 -2
- package/dist/esm/co-tags-field.entry.js +5 -5
- package/dist/esm/co-textarea.entry.js +4 -4
- package/dist/esm/co-toggle-button-group.entry.js +2 -2
- package/dist/esm/co-toggle-button.entry.js +2 -2
- package/dist/esm/co-video.entry.js +2 -2
- package/dist/esm/cobalt.js +1 -1
- package/dist/esm/{dateI18n-C1DCLOEl.js → dateI18n-CnNpoKwg.js} +21 -0
- package/dist/esm/{dates-tPYikBRJ.js → dates-BU7SQCje.js} +64 -13
- package/dist/esm/index-BCEz3S-z.js +28 -12
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{positioning-C2mZ7x_Y.js → positioning-BMdapAL8.js} +10 -0
- package/dist/esm/time-CF8OB_TM.js +37 -0
- package/dist/esm/{tz-B6JZk8fL.js → tz-1EK-COrb.js} +1 -1
- package/dist/types/components/co-action-bar/co-action-bar.d.ts +66 -0
- package/dist/types/components/co-audio-player/co-audio-player.d.ts +62 -0
- package/dist/types/components/co-audio-player/co-audio-player.utils.d.ts +11 -0
- package/dist/types/components/co-button/co-button.d.ts +18 -1
- package/dist/types/components/co-calendar-month/co-calendar-month.d.ts +33 -1
- package/dist/types/components/co-calendar-timegrid/co-calendar-timegrid.d.ts +178 -0
- package/dist/types/components/co-date-time-picker/co-date-time-picker.d.ts +131 -0
- package/dist/types/components/co-event-calendar/co-event-calendar.d.ts +61 -8
- package/dist/types/components/co-event-popover/co-event-popover.d.ts +45 -0
- package/dist/types/components/co-menu-item/co-menu-item.d.ts +3 -0
- package/dist/types/components/co-option-list/co-option-list.d.ts +23 -0
- package/dist/types/components/co-option-list/optionListLogic.d.ts +3 -0
- package/dist/types/components/co-provider-logo/co-provider-logo.d.ts +17 -0
- package/dist/types/components/co-ref-field/co-ref-field.d.ts +1 -0
- package/dist/types/components/co-tab-group/co-tab-group.d.ts +5 -0
- package/dist/types/components.d.ts +1245 -76
- package/dist/types/utils/dateI18n.d.ts +7 -0
- package/dist/types/utils/eventColor.d.ts +20 -0
- package/package.json +2 -2
- package/dist/cjs/co-calendar-month.cjs.entry.js +0 -381
- package/dist/cjs/co-skeleton.cjs.entry.js +0 -26
- package/dist/cobalt/p-037cc571.entry.js +0 -1
- package/dist/cobalt/p-0b92167a.entry.js +0 -1
- package/dist/cobalt/p-0bc5a962.entry.js +0 -1
- package/dist/cobalt/p-30c80e3a.entry.js +0 -1
- package/dist/cobalt/p-36ad3a96.entry.js +0 -1
- package/dist/cobalt/p-3ecbbe93.entry.js +0 -1
- package/dist/cobalt/p-3f1030fb.entry.js +0 -1
- package/dist/cobalt/p-3f7215e7.entry.js +0 -1
- package/dist/cobalt/p-54857f78.entry.js +0 -1
- package/dist/cobalt/p-585c132d.entry.js +0 -1
- package/dist/cobalt/p-59b114ab.entry.js +0 -1
- package/dist/cobalt/p-5d0510a5.entry.js +0 -1
- package/dist/cobalt/p-5e246304.entry.js +0 -1
- package/dist/cobalt/p-C1DCLOEl.js +0 -1
- package/dist/cobalt/p-C2mZ7x_Y.js +0 -1
- package/dist/cobalt/p-c589ae25.entry.js +0 -1
- package/dist/cobalt/p-c635417b.entry.js +0 -1
- package/dist/cobalt/p-cd28aa6d.entry.js +0 -1
- package/dist/cobalt/p-d71b800a.entry.js +0 -1
- package/dist/cobalt/p-df752f6e.entry.js +0 -1
- package/dist/cobalt/p-fffeb610.entry.js +0 -1
- package/dist/cobalt/p-tPYikBRJ.js +0 -1
- package/dist/components/p-BTa6ss5i.js +0 -1
- package/dist/components/p-C1DCLOEl.js +0 -1
- package/dist/components/p-C2mZ7x_Y.js +0 -1
- package/dist/components/p-CVeEoHr7.js +0 -1
- package/dist/components/p-CYi6V_Ss.js +0 -1
- package/dist/components/p-CuQjKAf5.js +0 -1
- package/dist/components/p-CyYF8IJE.js +0 -1
- package/dist/components/p-DKvTqEaf.js +0 -1
- package/dist/components/p-T0UfY6rA.js +0 -1
- package/dist/esm/co-calendar-month.entry.js +0 -379
- package/dist/esm/co-skeleton.entry.js +0 -24
|
@@ -10,12 +10,12 @@ export class CoButtonGroup {
|
|
|
10
10
|
this.disabled = false;
|
|
11
11
|
}
|
|
12
12
|
render() {
|
|
13
|
-
return (h("div", { key: '
|
|
13
|
+
return (h("div", { key: 'fe4b05941d1bf86586c7e4f2c93fe9644ea027d3', class: {
|
|
14
14
|
'co-button-group': true,
|
|
15
15
|
[`co-button-group--${this.direction}`]: true,
|
|
16
16
|
[`co-button-group--${this.variant}`]: true,
|
|
17
17
|
'co-button-group--disabled': this.disabled,
|
|
18
|
-
}, role: "group" }, h("slot", { key: '
|
|
18
|
+
}, role: "group" }, h("slot", { key: 'c583ee5dd23aceea08c3178b93b6f1227101e96e' })));
|
|
19
19
|
}
|
|
20
20
|
static get is() { return "co-button-group"; }
|
|
21
21
|
static get encapsulation() { return "shadow"; }
|
|
@@ -363,7 +363,7 @@ export class CoCalendar {
|
|
|
363
363
|
render() {
|
|
364
364
|
var _a, _b;
|
|
365
365
|
const t = getDateStrings(this.locale);
|
|
366
|
-
return (h("div", { key: '
|
|
366
|
+
return (h("div", { key: '795529e38ec7b72934d786b9dcaa5046e73fbde8', class: "co-calendar", part: "root" }, h("div", { key: 'f409d1670f4f649d8e91f21915e0008d9ed330ac', class: "co-calendar__header", part: "header" }, h("button", { key: '23a4f12ec30cd86e49661daf755a6d2e23b209ad', type: "button", class: "co-calendar__nav", onClick: this.handlePrev, "aria-label": (_a = this.prevMonthLabel) !== null && _a !== void 0 ? _a : t.prevMonth }, h("co-icon", { key: 'ce6b736011e3ed13781cac180fe4542ec38c75c3', name: "caret-left", size: 16 })), h("button", { key: 'b1fcbb3d09e33b0b462bc278b46e14a348f9f9a9', type: "button", class: "co-calendar__title", "aria-live": "polite", onClick: this.toggleView }, this.headerTitle(), h("co-icon", { key: 'dbe1800ed74e234dc8f334183e504d19d8ab9d74', name: "caret-down", size: 12, class: "co-calendar__title-caret" })), h("button", { key: 'bdbda5999d20cb799aeabe48ebad6e8a4d7d89ff', type: "button", class: "co-calendar__nav", onClick: this.handleNext, "aria-label": (_b = this.nextMonthLabel) !== null && _b !== void 0 ? _b : t.nextMonth }, h("co-icon", { key: 'ec2e268c38d04d1f298cfb12d29647b530b03a94', name: "caret-right", size: 16 }))), this.view === 'days' && this.renderDays(t), this.view === 'months' && this.renderMonths(), this.view === 'years' && this.renderYears()));
|
|
367
367
|
}
|
|
368
368
|
static get is() { return "co-calendar"; }
|
|
369
369
|
static get encapsulation() { return "shadow"; }
|
|
@@ -24,6 +24,8 @@
|
|
|
24
24
|
--co-cal-today-ring: var(--co-color-primary-azul);
|
|
25
25
|
|
|
26
26
|
/* Event chips */
|
|
27
|
+
--co-cal-event-radius: 6px;
|
|
28
|
+
--co-cal-elevation-hover: var(--co-shadow-lg);
|
|
27
29
|
--co-cal-event-bg: var(--co-color-primary-azul);
|
|
28
30
|
--co-cal-event-border: transparent;
|
|
29
31
|
--co-cal-event-text: var(--co-color-base-blanco, #fff);
|
|
@@ -34,7 +36,8 @@
|
|
|
34
36
|
.cal-month {
|
|
35
37
|
display: flex;
|
|
36
38
|
flex-direction: column;
|
|
37
|
-
|
|
39
|
+
height: 100%;
|
|
40
|
+
/* Sin borde exterior (Google-style: la grilla flota en la página del host). */
|
|
38
41
|
border-radius: var(--co-border-radius-xs);
|
|
39
42
|
overflow: hidden;
|
|
40
43
|
background: var(--co-cal-surface);
|
|
@@ -60,6 +63,8 @@
|
|
|
60
63
|
.cal-month__week {
|
|
61
64
|
position: relative;
|
|
62
65
|
min-height: var(--co-cal-min-week-h);
|
|
66
|
+
/* Crecer para llenar el alto del contenedor (min-height queda como piso). */
|
|
67
|
+
flex: 1 0 auto;
|
|
63
68
|
}
|
|
64
69
|
.cal-month__week:not(:last-child) {
|
|
65
70
|
border-bottom: 1px solid var(--co-cal-border);
|
|
@@ -100,6 +105,10 @@
|
|
|
100
105
|
background: color-mix(in srgb, var(--co-cal-today-ring) 14%, transparent);
|
|
101
106
|
box-shadow: inset 0 0 0 2px var(--co-cal-today-ring);
|
|
102
107
|
}
|
|
108
|
+
/* Día seleccionado persistente (referencia mientras el form de crear está abierto). */
|
|
109
|
+
.cal-month__day--selected {
|
|
110
|
+
background: color-mix(in srgb, var(--co-cal-today-ring) 10%, transparent);
|
|
111
|
+
}
|
|
103
112
|
|
|
104
113
|
.cal-month__daynum {
|
|
105
114
|
display: inline-flex;
|
|
@@ -138,7 +147,7 @@
|
|
|
138
147
|
margin: 0 3px;
|
|
139
148
|
padding: 0 var(--co-spacing-xs);
|
|
140
149
|
border: 1px solid var(--co-cal-event-border);
|
|
141
|
-
border-radius: var(--co-
|
|
150
|
+
border-radius: var(--co-cal-event-radius);
|
|
142
151
|
font-family: inherit;
|
|
143
152
|
font-size: var(--co-font-size-12, 12px);
|
|
144
153
|
line-height: 1;
|
|
@@ -151,9 +160,28 @@
|
|
|
151
160
|
.cal-chip {
|
|
152
161
|
background: var(--co-cal-event-bg);
|
|
153
162
|
color: var(--co-cal-event-text);
|
|
163
|
+
/* Ver la nota del timegrid: sustituyen al preventDefault del pointerdown. */
|
|
164
|
+
user-select: none;
|
|
165
|
+
-webkit-user-select: none;
|
|
166
|
+
touch-action: none;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/* Chip de carga: ocupa el mismo carril y la misma caja que un chip real, pero
|
|
170
|
+
con su PROPIA regla — NO se cuelga de la lista `.cal-chip, .cal-month__more`
|
|
171
|
+
(sumarse ahí le robaba a los chips reales su borde/padding/tipografía). */
|
|
172
|
+
.cal-month__chip-skeleton {
|
|
173
|
+
position: absolute;
|
|
174
|
+
height: calc(var(--co-cal-lane-h) - 3px);
|
|
175
|
+
box-sizing: border-box;
|
|
176
|
+
margin: 0 3px;
|
|
177
|
+
border-radius: var(--co-cal-event-radius);
|
|
178
|
+
overflow: hidden;
|
|
179
|
+
pointer-events: none;
|
|
154
180
|
}
|
|
155
|
-
.cal-
|
|
181
|
+
.cal-month__chip-skeleton co-skeleton { display: block; block-size: 100%; }
|
|
182
|
+
.cal-chip--all-day:hover {
|
|
156
183
|
filter: brightness(0.95);
|
|
184
|
+
box-shadow: var(--co-cal-elevation-hover);
|
|
157
185
|
}
|
|
158
186
|
.cal-chip:focus-visible {
|
|
159
187
|
outline: 2px solid var(--co-semantic-border-focus);
|
|
@@ -186,12 +214,17 @@
|
|
|
186
214
|
color: var(--co-cal-text-muted);
|
|
187
215
|
font-variant-numeric: tabular-nums;
|
|
188
216
|
}
|
|
217
|
+
/* Toma el espacio sobrante (con min-width:0 para poder truncar): así el badge
|
|
218
|
+
del provider queda pegado al FINAL del chip y no flotando pegado al texto. */
|
|
189
219
|
.cal-chip__title {
|
|
220
|
+
flex: 1 1 auto;
|
|
221
|
+
min-width: 0;
|
|
190
222
|
overflow: hidden;
|
|
191
223
|
text-overflow: ellipsis;
|
|
192
224
|
}
|
|
193
225
|
.cal-chip__ext {
|
|
194
226
|
flex: 0 0 auto;
|
|
227
|
+
margin-inline-start: auto; /* al final incluso si el título no crece */
|
|
195
228
|
opacity: 0.8;
|
|
196
229
|
}
|
|
197
230
|
|
|
@@ -207,6 +240,22 @@
|
|
|
207
240
|
.cal-chip--dragging {
|
|
208
241
|
opacity: 0.4;
|
|
209
242
|
}
|
|
243
|
+
/* Tanda 3 FIX D: durante el drag de una celda (dragId !== null) los chips no
|
|
244
|
+
deben responder a hover/hit-testing — el filter:brightness + box-shadow del
|
|
245
|
+
hover de las barras all-day (y su cálculo) se disparaban en cada celda
|
|
246
|
+
cruzada. El pointerenter de drag-over vive en `.cal-month__day`, no en el
|
|
247
|
+
chip, así que esto no rompe el drag-over. Clase puesta imperativamente
|
|
248
|
+
(classList sobre un ref), no @State: no dispara render. */
|
|
249
|
+
.cal-month--interacting .cal-chip {
|
|
250
|
+
pointer-events: none;
|
|
251
|
+
}
|
|
252
|
+
/* Response-state treatments. Hatch only on filled (all-day) bars; timed chips
|
|
253
|
+
are dot+text so a hatch would paint on the light surface — skip. */
|
|
254
|
+
.cal-chip--all-day.cal-chip--tentative {
|
|
255
|
+
background-image: repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.5) 0 4px, transparent 4px 8px);
|
|
256
|
+
}
|
|
257
|
+
.cal-chip--cancelled { opacity: 0.6; }
|
|
258
|
+
.cal-chip--cancelled .cal-chip__title { text-decoration: line-through; }
|
|
210
259
|
.cal-chip--continues-before {
|
|
211
260
|
border-top-left-radius: 0;
|
|
212
261
|
border-bottom-left-radius: 0;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { h, } from "@stencil/core";
|
|
2
2
|
import { addDays, compareYMD, getMonthMatrix, getWeekdayLabels, isDisabled, parseISO, todayYMD, } from "@prolibu-suite/cobalt-date-utils";
|
|
3
3
|
import { layoutMonth, getWallClock, wallClockToEpoch, toUtcISO, zonedDateKey, zonedMinutesOfDay, } from "@prolibu-suite/cobalt-calendar-utils";
|
|
4
|
+
import { readableTextToken } from "../../utils/eventColor";
|
|
4
5
|
/**
|
|
5
6
|
* Month grid for the event calendar. Forks the day grid, roving-tabindex and
|
|
6
7
|
* keyboard model from `co-calendar`, then overlays multi-day event bars laid out
|
|
@@ -27,11 +28,20 @@ export class CoCalendarMonth {
|
|
|
27
28
|
this.selectable = true;
|
|
28
29
|
/** Max event lanes per day before "+N more". */
|
|
29
30
|
this.maxLanes = 3;
|
|
31
|
+
/** Cargando: en vez de los chips pinta bloques skeleton en sus carriles. La
|
|
32
|
+
* grilla del mes (cabecera de días, celdas, números, bordes) no se toca. */
|
|
33
|
+
this.loading = false;
|
|
30
34
|
/** Day currently hovered while dragging an event. */
|
|
31
35
|
this.dragOverDate = null;
|
|
32
36
|
/** Id of the event being dragged. */
|
|
33
37
|
this.dragId = null;
|
|
38
|
+
/** Epoch ms of "now", refreshed on a 60s timer so `past` styling stays live. */
|
|
39
|
+
this.nowMs = 0;
|
|
34
40
|
this.onPointerUp = () => this.finishDrag();
|
|
41
|
+
// ── Selection / activation ──────────────────────────────────────────────
|
|
42
|
+
/** Día seleccionado que PERSISTE resaltado mientras el host tiene abierto su
|
|
43
|
+
* form/bubble de creación (referencia visual, paridad Google). */
|
|
44
|
+
this.selectedDate = null;
|
|
35
45
|
this.handleKeyDown = (e) => {
|
|
36
46
|
const cur = this.focused;
|
|
37
47
|
let handled = true;
|
|
@@ -63,12 +73,20 @@ export class CoCalendarMonth {
|
|
|
63
73
|
}
|
|
64
74
|
componentWillLoad() {
|
|
65
75
|
this.focused = this.defaultFocus();
|
|
76
|
+
this.nowMs = Date.now();
|
|
77
|
+
}
|
|
78
|
+
componentDidLoad() {
|
|
79
|
+
// setInterval acá (no en connectedCallback): componentDidLoad corre una sola
|
|
80
|
+
// vez por instancia → sin timer duplicado en reconexión (espeja co-calendar-timegrid).
|
|
81
|
+
this.nowTimer = window.setInterval(() => (this.nowMs = Date.now()), 60000);
|
|
66
82
|
}
|
|
67
83
|
connectedCallback() {
|
|
68
84
|
window.addEventListener('pointerup', this.onPointerUp);
|
|
69
85
|
}
|
|
70
86
|
disconnectedCallback() {
|
|
71
87
|
window.removeEventListener('pointerup', this.onPointerUp);
|
|
88
|
+
if (this.nowTimer)
|
|
89
|
+
window.clearInterval(this.nowTimer);
|
|
72
90
|
}
|
|
73
91
|
defaultFocus() {
|
|
74
92
|
const first = `${pad4(this.year)}-${pad2(this.month)}-01`;
|
|
@@ -76,23 +94,29 @@ export class CoCalendarMonth {
|
|
|
76
94
|
const t = parseISO(today);
|
|
77
95
|
return t.year === this.year && t.month === this.month ? today : first;
|
|
78
96
|
}
|
|
79
|
-
get matrix() {
|
|
80
|
-
return getMonthMatrix(this.year, this.month, this.firstDayOfWeek).map((row) => row.map((c) => c.value));
|
|
81
|
-
}
|
|
82
97
|
eventById(id) {
|
|
83
|
-
|
|
98
|
+
var _a, _b;
|
|
99
|
+
return (_b = (_a = this._layoutCache) === null || _a === void 0 ? void 0 : _a.byId.get(id)) !== null && _b !== void 0 ? _b : this.events.find((e) => e.id === id);
|
|
84
100
|
}
|
|
85
101
|
isDayInteractable(date) {
|
|
86
102
|
return !isDisabled(date, { min: this.minDate, max: this.maxDate });
|
|
87
103
|
}
|
|
88
|
-
|
|
89
|
-
selectDay(date) {
|
|
104
|
+
selectDay(date, rect) {
|
|
90
105
|
if (!this.selectable || !this.isDayInteractable(date))
|
|
91
106
|
return;
|
|
92
|
-
this.
|
|
107
|
+
this.selectedDate = date;
|
|
108
|
+
this.coDaySelect.emit({ date, rect });
|
|
93
109
|
}
|
|
94
|
-
|
|
95
|
-
|
|
110
|
+
/** Limpia el resaltado persistente (lo llama el host al cerrar su form). */
|
|
111
|
+
async clearSelection() {
|
|
112
|
+
this.selectedDate = null;
|
|
113
|
+
}
|
|
114
|
+
/** Un refetch (post-save) invalida la referencia visual. */
|
|
115
|
+
onEventsChange() {
|
|
116
|
+
this.selectedDate = null;
|
|
117
|
+
}
|
|
118
|
+
activateEvent(id, rect) {
|
|
119
|
+
this.coEventClick.emit({ id, rect });
|
|
96
120
|
}
|
|
97
121
|
// ── Keyboard (WAI-ARIA grid, forked from co-calendar) ───────────────────
|
|
98
122
|
moveFocus(next) {
|
|
@@ -104,20 +128,30 @@ export class CoCalendarMonth {
|
|
|
104
128
|
(_b = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`[data-date="${this.focused}"]`)) === null || _b === void 0 ? void 0 : _b.focus();
|
|
105
129
|
}
|
|
106
130
|
// ── Drag-move (day granularity) ─────────────────────────────────────────
|
|
131
|
+
/** Marca la interacción en el root (pointer-events:none en los chips durante el
|
|
132
|
+
* drag — mata el hover/hit-testing de las barras all-day barridas en cada
|
|
133
|
+
* celda cruzada). No es @State a propósito: no debe disparar un render. */
|
|
134
|
+
setInteracting(on) {
|
|
135
|
+
var _a;
|
|
136
|
+
(_a = this.rootEl) === null || _a === void 0 ? void 0 : _a.classList.toggle('cal-month--interacting', on);
|
|
137
|
+
}
|
|
107
138
|
startDrag(e, id) {
|
|
108
139
|
const ev = this.eventById(id);
|
|
109
140
|
if (!ev || !this.editable || ev.editable === false || ev.startEditable === false)
|
|
110
141
|
return;
|
|
111
|
-
|
|
142
|
+
// Ver la nota en co-calendar-timegrid#startMove: preventDefault en
|
|
143
|
+
// pointerdown mata el click y el chip arrastrable no podía activarse.
|
|
112
144
|
e.stopPropagation();
|
|
113
145
|
this.dragId = id;
|
|
114
146
|
this.dragOverDate = null;
|
|
147
|
+
this.setInteracting(true);
|
|
115
148
|
}
|
|
116
149
|
finishDrag() {
|
|
117
150
|
const id = this.dragId;
|
|
118
151
|
const target = this.dragOverDate;
|
|
119
152
|
this.dragId = null;
|
|
120
153
|
this.dragOverDate = null;
|
|
154
|
+
this.setInteracting(false);
|
|
121
155
|
if (!id || !target)
|
|
122
156
|
return;
|
|
123
157
|
const ev = this.eventById(id);
|
|
@@ -142,6 +176,46 @@ export class CoCalendarMonth {
|
|
|
142
176
|
});
|
|
143
177
|
}
|
|
144
178
|
// ── Render ──────────────────────────────────────────────────────────────
|
|
179
|
+
getLayouts() {
|
|
180
|
+
var _a;
|
|
181
|
+
const c = this._layoutCache;
|
|
182
|
+
if (c &&
|
|
183
|
+
c.events === this.events &&
|
|
184
|
+
c.year === this.year &&
|
|
185
|
+
c.month === this.month &&
|
|
186
|
+
c.firstDayOfWeek === this.firstDayOfWeek &&
|
|
187
|
+
c.timeZone === this.timeZone &&
|
|
188
|
+
c.maxLanes === this.maxLanes) {
|
|
189
|
+
return c;
|
|
190
|
+
}
|
|
191
|
+
const matrix = getMonthMatrix(this.year, this.month, this.firstDayOfWeek).map((row) => row.map((cell) => cell.value));
|
|
192
|
+
const layout = layoutMonth(this.events, matrix, {
|
|
193
|
+
maxLanes: this.maxLanes,
|
|
194
|
+
timeZone: this.timeZone,
|
|
195
|
+
});
|
|
196
|
+
const segByWeek = new Map();
|
|
197
|
+
for (const seg of layout.segments) {
|
|
198
|
+
if (seg.lane >= this.maxLanes)
|
|
199
|
+
continue;
|
|
200
|
+
const arr = (_a = segByWeek.get(seg.weekIndex)) !== null && _a !== void 0 ? _a : [];
|
|
201
|
+
arr.push(seg);
|
|
202
|
+
segByWeek.set(seg.weekIndex, arr);
|
|
203
|
+
}
|
|
204
|
+
const byId = new Map(this.events.map((e) => [e.id, e]));
|
|
205
|
+
this._layoutCache = {
|
|
206
|
+
events: this.events,
|
|
207
|
+
year: this.year,
|
|
208
|
+
month: this.month,
|
|
209
|
+
firstDayOfWeek: this.firstDayOfWeek,
|
|
210
|
+
timeZone: this.timeZone,
|
|
211
|
+
maxLanes: this.maxLanes,
|
|
212
|
+
matrix,
|
|
213
|
+
layout,
|
|
214
|
+
segByWeek,
|
|
215
|
+
byId,
|
|
216
|
+
};
|
|
217
|
+
return this._layoutCache;
|
|
218
|
+
}
|
|
145
219
|
renderChip(seg, weekDays) {
|
|
146
220
|
var _a;
|
|
147
221
|
const ev = this.eventById(seg.eventId);
|
|
@@ -150,7 +224,7 @@ export class CoCalendarMonth {
|
|
|
150
224
|
const cols = weekDays.length;
|
|
151
225
|
const left = (seg.startCol / cols) * 100;
|
|
152
226
|
const width = ((seg.endCol - seg.startCol + 1) / cols) * 100;
|
|
153
|
-
const isPast = ev.endMs <=
|
|
227
|
+
const isPast = ev.endMs <= this.nowMs;
|
|
154
228
|
const isExternal = ((_a = ev.extendedProps) === null || _a === void 0 ? void 0 : _a.isExternal) === true;
|
|
155
229
|
const locked = !this.editable || ev.editable === false;
|
|
156
230
|
const timeText = ev.allDay || !seg.isStart
|
|
@@ -163,7 +237,9 @@ export class CoCalendarMonth {
|
|
|
163
237
|
};
|
|
164
238
|
if (ev.backgroundColor) {
|
|
165
239
|
style['--co-cal-event-bg'] = ev.backgroundColor;
|
|
166
|
-
|
|
240
|
+
const textToken = readableTextToken(this.rootEl, ev.backgroundColor);
|
|
241
|
+
if (textToken)
|
|
242
|
+
style['--co-cal-event-text'] = textToken;
|
|
167
243
|
}
|
|
168
244
|
if (ev.borderColor)
|
|
169
245
|
style['--co-cal-event-border'] = ev.borderColor;
|
|
@@ -176,31 +252,24 @@ export class CoCalendarMonth {
|
|
|
176
252
|
'cal-chip--dragging': this.dragId === ev.id,
|
|
177
253
|
'cal-chip--continues-before': seg.continuesBefore,
|
|
178
254
|
'cal-chip--continues-after': seg.continuesAfter,
|
|
255
|
+
'cal-chip--tentative': ev.responseState === 'tentative',
|
|
256
|
+
'cal-chip--cancelled': ev.responseState === 'cancelled' || ev.responseState === 'declined',
|
|
179
257
|
}, style: style, title: ev.title, "aria-label": ev.title, onClick: (e) => {
|
|
180
258
|
e.stopPropagation();
|
|
181
|
-
this.activateEvent(ev.id);
|
|
182
|
-
},
|
|
259
|
+
this.activateEvent(ev.id, e.currentTarget.getBoundingClientRect());
|
|
260
|
+
}, onDblClick: (e) => {
|
|
261
|
+
e.stopPropagation();
|
|
262
|
+
this.coEventDblClick.emit({ id: ev.id, rect: e.currentTarget.getBoundingClientRect() });
|
|
263
|
+
}, onPointerDown: (e) => this.startDrag(e, ev.id) }, !ev.allDay && h("span", { class: "cal-chip__dot", "aria-hidden": "true" }), timeText && h("span", { class: "cal-chip__time" }, timeText), h("span", { class: "cal-chip__title" }, ev.title || '—'), isExternal && (providerBrand(ev)
|
|
264
|
+
? h("co-provider-logo", { provider: providerBrand(ev), size: 11, plated: true, class: "cal-chip__ext" })
|
|
265
|
+
: h("co-icon", { name: "link", size: 11, class: "cal-chip__ext" }))));
|
|
183
266
|
}
|
|
184
267
|
render() {
|
|
185
|
-
|
|
186
|
-
const matrix = this.matrix;
|
|
187
|
-
const normalized = this.events;
|
|
188
|
-
const layout = layoutMonth(normalized, matrix, {
|
|
189
|
-
maxLanes: this.maxLanes,
|
|
190
|
-
timeZone: this.timeZone,
|
|
191
|
-
});
|
|
192
|
-
const segByWeek = new Map();
|
|
193
|
-
for (const seg of layout.segments) {
|
|
194
|
-
if (seg.lane >= this.maxLanes)
|
|
195
|
-
continue;
|
|
196
|
-
const arr = (_a = segByWeek.get(seg.weekIndex)) !== null && _a !== void 0 ? _a : [];
|
|
197
|
-
arr.push(seg);
|
|
198
|
-
segByWeek.set(seg.weekIndex, arr);
|
|
199
|
-
}
|
|
268
|
+
const { matrix, layout, segByWeek } = this.getLayouts();
|
|
200
269
|
const short = getWeekdayLabels(this.locale, this.firstDayOfWeek, 'short');
|
|
201
270
|
const long = getWeekdayLabels(this.locale, this.firstDayOfWeek, 'long');
|
|
202
271
|
const today = todayYMD();
|
|
203
|
-
return (h("div", { key: '
|
|
272
|
+
return (h("div", { key: 'f8bcb53b7ef7c47a1ff59caee0305dfc1a3f1fc2', class: "cal-month", part: "grid", role: "grid", onKeyDown: this.handleKeyDown, ref: (el) => (this.rootEl = el) }, h("div", { key: '11acf9973a13ad661590a04dd934c86ceaa10f5d', class: "cal-month__dow", role: "row" }, short.map((lbl, i) => (h("span", { class: "cal-month__dow-cell", role: "columnheader", "aria-label": long[i] }, lbl)))), matrix.map((week, wi) => {
|
|
204
273
|
var _a;
|
|
205
274
|
return (h("div", { class: "cal-month__week", role: "row" }, h("div", { class: "cal-month__days" }, week.map((date) => {
|
|
206
275
|
const ymd = parseISO(date);
|
|
@@ -214,11 +283,16 @@ export class CoCalendarMonth {
|
|
|
214
283
|
'cal-month__day--today': isToday,
|
|
215
284
|
'cal-month__day--disabled': !interactable,
|
|
216
285
|
'cal-month__day--drag-over': this.dragId !== null && this.dragOverDate === date,
|
|
217
|
-
|
|
286
|
+
'cal-month__day--selected': this.selectedDate === date,
|
|
287
|
+
}, onClick: (e) => this.selectDay(date, e.currentTarget.getBoundingClientRect()), onPointerEnter: () => {
|
|
218
288
|
if (this.dragId)
|
|
219
289
|
this.dragOverDate = date;
|
|
220
290
|
} }, h("span", { class: "cal-month__daynum" }, ymd.day)));
|
|
221
|
-
})), h("div", { class: "cal-month__events" },
|
|
291
|
+
})), h("div", { class: "cal-month__events" }, this.loading && SKELETON_CHIPS[wi % SKELETON_CHIPS.length].map(([col, span, lane]) => (h("div", { class: "cal-month__chip-skeleton", "aria-hidden": "true", style: {
|
|
292
|
+
left: `${(col / week.length) * 100}%`,
|
|
293
|
+
width: `${(span / week.length) * 100}%`,
|
|
294
|
+
top: `calc(var(--co-cal-daynum-h) + ${lane} * var(--co-cal-lane-h))`,
|
|
295
|
+
} }, h("co-skeleton", { variant: "rect", width: "100%", height: "100%" })))), !this.loading && ((_a = segByWeek.get(wi)) !== null && _a !== void 0 ? _a : []).map((seg) => this.renderChip(seg, week)), !this.loading && week.map((date, col) => {
|
|
222
296
|
var _a;
|
|
223
297
|
const more = (_a = layout.overflow[date]) !== null && _a !== void 0 ? _a : 0;
|
|
224
298
|
if (more <= 0)
|
|
@@ -467,6 +541,26 @@ export class CoCalendarMonth {
|
|
|
467
541
|
"reflect": false,
|
|
468
542
|
"attribute": "max-lanes",
|
|
469
543
|
"defaultValue": "3"
|
|
544
|
+
},
|
|
545
|
+
"loading": {
|
|
546
|
+
"type": "boolean",
|
|
547
|
+
"mutable": false,
|
|
548
|
+
"complexType": {
|
|
549
|
+
"original": "boolean",
|
|
550
|
+
"resolved": "boolean",
|
|
551
|
+
"references": {}
|
|
552
|
+
},
|
|
553
|
+
"required": false,
|
|
554
|
+
"optional": false,
|
|
555
|
+
"docs": {
|
|
556
|
+
"tags": [],
|
|
557
|
+
"text": "Cargando: en vez de los chips pinta bloques skeleton en sus carriles. La\ngrilla del mes (cabecera de d\u00EDas, celdas, n\u00FAmeros, bordes) no se toca."
|
|
558
|
+
},
|
|
559
|
+
"getter": false,
|
|
560
|
+
"setter": false,
|
|
561
|
+
"reflect": false,
|
|
562
|
+
"attribute": "loading",
|
|
563
|
+
"defaultValue": "false"
|
|
470
564
|
}
|
|
471
565
|
};
|
|
472
566
|
}
|
|
@@ -474,7 +568,9 @@ export class CoCalendarMonth {
|
|
|
474
568
|
return {
|
|
475
569
|
"focused": {},
|
|
476
570
|
"dragOverDate": {},
|
|
477
|
-
"dragId": {}
|
|
571
|
+
"dragId": {},
|
|
572
|
+
"nowMs": {},
|
|
573
|
+
"selectedDate": {}
|
|
478
574
|
};
|
|
479
575
|
}
|
|
480
576
|
static get events() {
|
|
@@ -483,37 +579,47 @@ export class CoCalendarMonth {
|
|
|
483
579
|
"name": "coDaySelect",
|
|
484
580
|
"bubbles": false,
|
|
485
581
|
"cancelable": true,
|
|
486
|
-
"composed":
|
|
582
|
+
"composed": false,
|
|
487
583
|
"docs": {
|
|
488
584
|
"tags": [],
|
|
489
585
|
"text": "Emitted when an empty day is selected (create request). Detail = \"YYYY-MM-DD\"."
|
|
490
586
|
},
|
|
491
587
|
"complexType": {
|
|
492
|
-
"original": "{ date: string }",
|
|
493
|
-
"resolved": "{ date: string; }",
|
|
494
|
-
"references": {
|
|
588
|
+
"original": "{ date: string; rect?: DOMRect }",
|
|
589
|
+
"resolved": "{ date: string; rect?: DOMRect | undefined; }",
|
|
590
|
+
"references": {
|
|
591
|
+
"DOMRect": {
|
|
592
|
+
"location": "global",
|
|
593
|
+
"id": "global::DOMRect"
|
|
594
|
+
}
|
|
595
|
+
}
|
|
495
596
|
}
|
|
496
597
|
}, {
|
|
497
598
|
"method": "coEventClick",
|
|
498
599
|
"name": "coEventClick",
|
|
499
600
|
"bubbles": false,
|
|
500
601
|
"cancelable": true,
|
|
501
|
-
"composed":
|
|
602
|
+
"composed": false,
|
|
502
603
|
"docs": {
|
|
503
604
|
"tags": [],
|
|
504
605
|
"text": "Emitted when an event chip is activated."
|
|
505
606
|
},
|
|
506
607
|
"complexType": {
|
|
507
|
-
"original": "{ id: string }",
|
|
508
|
-
"resolved": "{ id: string; }",
|
|
509
|
-
"references": {
|
|
608
|
+
"original": "{ id: string; rect?: DOMRect }",
|
|
609
|
+
"resolved": "{ id: string; rect?: DOMRect | undefined; }",
|
|
610
|
+
"references": {
|
|
611
|
+
"DOMRect": {
|
|
612
|
+
"location": "global",
|
|
613
|
+
"id": "global::DOMRect"
|
|
614
|
+
}
|
|
615
|
+
}
|
|
510
616
|
}
|
|
511
617
|
}, {
|
|
512
618
|
"method": "coEventDrop",
|
|
513
619
|
"name": "coEventDrop",
|
|
514
620
|
"bubbles": false,
|
|
515
621
|
"cancelable": true,
|
|
516
|
-
"composed":
|
|
622
|
+
"composed": false,
|
|
517
623
|
"docs": {
|
|
518
624
|
"tags": [],
|
|
519
625
|
"text": "Emitted on a completed drag-move (day granularity)."
|
|
@@ -528,7 +634,7 @@ export class CoCalendarMonth {
|
|
|
528
634
|
"name": "coMoreClick",
|
|
529
635
|
"bubbles": false,
|
|
530
636
|
"cancelable": true,
|
|
531
|
-
"composed":
|
|
637
|
+
"composed": false,
|
|
532
638
|
"docs": {
|
|
533
639
|
"tags": [],
|
|
534
640
|
"text": "Emitted when the \"+N more\" affordance is activated."
|
|
@@ -538,11 +644,68 @@ export class CoCalendarMonth {
|
|
|
538
644
|
"resolved": "{ date: string; }",
|
|
539
645
|
"references": {}
|
|
540
646
|
}
|
|
647
|
+
}, {
|
|
648
|
+
"method": "coEventDblClick",
|
|
649
|
+
"name": "coEventDblClick",
|
|
650
|
+
"bubbles": false,
|
|
651
|
+
"cancelable": true,
|
|
652
|
+
"composed": false,
|
|
653
|
+
"docs": {
|
|
654
|
+
"tags": [],
|
|
655
|
+
"text": "Doble activaci\u00F3n de un chip (direct-edit request del host)."
|
|
656
|
+
},
|
|
657
|
+
"complexType": {
|
|
658
|
+
"original": "{ id: string; rect?: DOMRect }",
|
|
659
|
+
"resolved": "{ id: string; rect?: DOMRect | undefined; }",
|
|
660
|
+
"references": {
|
|
661
|
+
"DOMRect": {
|
|
662
|
+
"location": "global",
|
|
663
|
+
"id": "global::DOMRect"
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
}
|
|
541
667
|
}];
|
|
542
668
|
}
|
|
669
|
+
static get methods() {
|
|
670
|
+
return {
|
|
671
|
+
"clearSelection": {
|
|
672
|
+
"complexType": {
|
|
673
|
+
"signature": "() => Promise<void>",
|
|
674
|
+
"parameters": [],
|
|
675
|
+
"references": {
|
|
676
|
+
"Promise": {
|
|
677
|
+
"location": "global",
|
|
678
|
+
"id": "global::Promise"
|
|
679
|
+
}
|
|
680
|
+
},
|
|
681
|
+
"return": "Promise<void>"
|
|
682
|
+
},
|
|
683
|
+
"docs": {
|
|
684
|
+
"text": "Limpia el resaltado persistente (lo llama el host al cerrar su form).",
|
|
685
|
+
"tags": []
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
};
|
|
689
|
+
}
|
|
543
690
|
static get elementRef() { return "el"; }
|
|
691
|
+
static get watchers() {
|
|
692
|
+
return [{
|
|
693
|
+
"propName": "events",
|
|
694
|
+
"methodName": "onEventsChange"
|
|
695
|
+
}];
|
|
696
|
+
}
|
|
544
697
|
}
|
|
545
698
|
// ── helpers ─────────────────────────────────────────────────────────────────
|
|
699
|
+
/** Chips del skeleton por semana: `[columna, ancho en días, carril]`. Patrón
|
|
700
|
+
* FIJO (nada de random) y desparejo, como se ve un mes real. */
|
|
701
|
+
const SKELETON_CHIPS = [
|
|
702
|
+
[[0, 2, 0], [3, 1, 0], [5, 1, 1]],
|
|
703
|
+
[[1, 1, 0], [2, 3, 1]],
|
|
704
|
+
[[0, 1, 0], [2, 1, 0], [4, 2, 1], [6, 1, 0]],
|
|
705
|
+
[[1, 2, 0], [4, 1, 1]],
|
|
706
|
+
[[2, 1, 0], [3, 2, 1], [6, 1, 0]],
|
|
707
|
+
[[0, 3, 0], [5, 1, 1]],
|
|
708
|
+
];
|
|
546
709
|
function pad2(n) {
|
|
547
710
|
return String(n).padStart(2, '0');
|
|
548
711
|
}
|
|
@@ -574,21 +737,41 @@ function shiftInstant(ms, deltaDays, timeZone) {
|
|
|
574
737
|
const [y, m, d] = newDate.split('-').map(Number);
|
|
575
738
|
return wallClockToEpoch({ year: y, month: m, day: d, hour: wc.hour, minute: wc.minute, second: wc.second }, timeZone);
|
|
576
739
|
}
|
|
740
|
+
// Intl.DateTimeFormat es caro de construir y este label se recalcula por chip
|
|
741
|
+
// por render sobre un dominio ACOTADO (≤96 minutos distintos, 1-2 locales):
|
|
742
|
+
// cacheamos el RESULTADO (y el formatter, para el miss). Higiene: clear a las
|
|
743
|
+
// 2000 entradas — inalcanzable en uso normal, solo protege de iteración
|
|
744
|
+
// patológica. Mismo patrón que co-calendar-timegrid.tsx (duplicado a propósito:
|
|
745
|
+
// componentes Stencil separados, consistencia > DRY entre ellos).
|
|
746
|
+
const MINUTE_LABEL_CACHE = new Map();
|
|
747
|
+
const MINUTE_FMT_CACHE = new Map();
|
|
577
748
|
/** Short localized time label, e.g. "9:00 a. m." / "09:00". */
|
|
578
749
|
function minutesToLabel(minutes, locale) {
|
|
750
|
+
const key = `${locale}|${minutes}`;
|
|
751
|
+
const hit = MINUTE_LABEL_CACHE.get(key);
|
|
752
|
+
if (hit !== undefined)
|
|
753
|
+
return hit;
|
|
754
|
+
let fmt = MINUTE_FMT_CACHE.get(locale);
|
|
755
|
+
if (!fmt) {
|
|
756
|
+
fmt = new Intl.DateTimeFormat(locale, { hour: 'numeric', minute: '2-digit' });
|
|
757
|
+
MINUTE_FMT_CACHE.set(locale, fmt);
|
|
758
|
+
}
|
|
579
759
|
const h = Math.floor(minutes / 60);
|
|
580
760
|
const m = minutes % 60;
|
|
581
|
-
|
|
761
|
+
const out = fmt.format(new Date(2000, 0, 1, h, m));
|
|
762
|
+
if (MINUTE_LABEL_CACHE.size > 2000)
|
|
763
|
+
MINUTE_LABEL_CACHE.clear();
|
|
764
|
+
MINUTE_LABEL_CACHE.set(key, out);
|
|
765
|
+
return out;
|
|
582
766
|
}
|
|
583
|
-
/**
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
return yiq >= 150 ? 'var(--co-cal-event-text-dark)' : 'var(--co-cal-event-text-light)';
|
|
767
|
+
/** Marca del evento externo (`co-provider-logo`), o '' si no se reconoce — el
|
|
768
|
+
* llamador cae al ícono genérico de enlace. */
|
|
769
|
+
function providerBrand(ev) {
|
|
770
|
+
var _a, _b;
|
|
771
|
+
const p = String((_b = (_a = ev.extendedProps) === null || _a === void 0 ? void 0 : _a.provider) !== null && _b !== void 0 ? _b : '').toLowerCase();
|
|
772
|
+
if (p.includes('google'))
|
|
773
|
+
return 'google';
|
|
774
|
+
if (p.includes('microsoft') || p.includes('outlook'))
|
|
775
|
+
return 'microsoft';
|
|
776
|
+
return '';
|
|
594
777
|
}
|