@prolibu-suite/cobalt-core 0.9.5 → 0.10.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 +750 -80
- package/dist/cjs/co-accordion.cjs.entry.js +1 -1
- package/dist/cjs/co-action-bar.cjs.entry.js +1 -1
- package/dist/cjs/co-app-shell.cjs.entry.js +4 -4
- package/dist/cjs/co-audio-player.cjs.entry.js +1 -1
- package/dist/cjs/co-autocomplete.cjs.entry.js +2 -2
- package/dist/cjs/co-avatar-group.cjs.entry.js +1 -1
- package/dist/cjs/co-avatar_2.cjs.entry.js +49 -17
- package/dist/cjs/co-badge.cjs.entry.js +11 -3
- package/dist/cjs/co-bottom-sheet.cjs.entry.js +1 -1
- package/dist/cjs/co-breadcrumb-item.cjs.entry.js +1 -1
- package/dist/cjs/co-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/co-button-group.cjs.entry.js +1 -1
- package/dist/cjs/co-button.cjs.entry.js +2 -2
- package/dist/cjs/co-calendar-month_2.cjs.entry.js +55 -20
- package/dist/cjs/co-calendar_3.cjs.entry.js +27 -15
- package/dist/cjs/co-card.cjs.entry.js +1 -1
- package/dist/cjs/co-carousel-item.cjs.entry.js +1 -1
- package/dist/cjs/co-carousel.cjs.entry.js +2 -2
- package/dist/cjs/co-checkbox-group.cjs.entry.js +2 -2
- package/dist/cjs/co-checkbox.cjs.entry.js +6 -6
- package/dist/cjs/co-chip_2.cjs.entry.js +8 -5
- package/dist/cjs/co-color-picker.cjs.entry.js +1048 -27
- package/dist/cjs/co-column-picker.cjs.entry.js +3 -3
- package/dist/cjs/co-combobox.cjs.entry.js +2 -2
- package/dist/cjs/co-command-search.cjs.entry.js +1 -1
- package/dist/cjs/co-data-table-pagination.cjs.entry.js +5 -5
- package/dist/cjs/co-data-table.cjs.entry.js +1 -1
- package/dist/cjs/co-date-picker.cjs.entry.js +3 -3
- package/dist/cjs/co-date-range-picker.cjs.entry.js +3 -3
- package/dist/cjs/co-date-range.cjs.entry.js +2 -2
- package/dist/cjs/co-date-time-picker.cjs.entry.js +101 -130
- package/dist/cjs/co-drive-card.cjs.entry.js +2 -2
- package/dist/cjs/co-drop-zone.cjs.entry.js +2 -2
- package/dist/cjs/co-emoji-picker.cjs.entry.js +4 -4
- package/dist/cjs/co-empty-state.cjs.entry.js +4 -4
- package/dist/cjs/co-event-calendar.cjs.entry.js +4 -4
- package/dist/cjs/co-event-popover.cjs.entry.js +3 -3
- package/dist/cjs/co-fab.cjs.entry.js +3 -3
- package/dist/cjs/co-file-field.cjs.entry.js +102 -106
- package/dist/cjs/co-file-type-tile.cjs.entry.js +3 -3
- package/dist/cjs/co-helper-text.cjs.entry.js +3 -3
- package/dist/cjs/co-icon-button.cjs.entry.js +6 -6
- package/dist/cjs/co-icon.cjs.entry.js +3 -3
- package/dist/cjs/co-input.cjs.entry.js +26 -4
- package/dist/cjs/co-json-field.cjs.entry.js +5 -5
- package/dist/cjs/co-lightbox.cjs.entry.js +204 -21
- package/dist/cjs/co-list-footer.cjs.entry.js +2 -2
- package/dist/cjs/co-list-item.cjs.entry.js +5 -5
- package/dist/cjs/co-loader.cjs.entry.js +1 -1
- package/dist/cjs/co-media-thumb.cjs.entry.js +3 -3
- package/dist/cjs/co-menu-divider.cjs.entry.js +2 -2
- package/dist/cjs/co-menu-item.cjs.entry.js +84 -3
- package/dist/cjs/co-menu.cjs.entry.js +2 -2
- package/dist/cjs/co-modal.cjs.entry.js +6 -4
- package/dist/cjs/co-navbar.cjs.entry.js +4 -4
- package/dist/cjs/co-number-field.cjs.entry.js +272 -9
- package/dist/cjs/co-overlay.cjs.entry.js +6 -4
- package/dist/cjs/co-page-header.cjs.entry.js +2 -2
- package/dist/cjs/co-phone-field.cjs.entry.js +3 -3
- package/dist/cjs/co-popover.cjs.entry.js +58 -21
- package/dist/cjs/co-progress-bar.cjs.entry.js +3 -3
- package/dist/cjs/co-progress-circle.cjs.entry.js +3 -3
- package/dist/cjs/co-provider-logo_2.cjs.entry.js +47 -3
- package/dist/cjs/co-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/co-radio.cjs.entry.js +4 -4
- package/dist/cjs/co-rating.cjs.entry.js +4 -4
- package/dist/cjs/co-ref-field.cjs.entry.js +4 -4
- package/dist/cjs/co-rich-text-editor.cjs.entry.js +11 -8
- package/dist/cjs/co-rich-text-toolbar.cjs.entry.js +7 -3
- package/dist/cjs/co-rich-text-viewer.cjs.entry.js +4 -3
- package/dist/cjs/co-row.cjs.entry.js +3 -3
- package/dist/cjs/co-segmented-bar.cjs.entry.js +1 -1
- package/dist/cjs/co-select.cjs.entry.js +2 -2
- package/dist/cjs/co-separator.cjs.entry.js +2 -2
- package/dist/cjs/co-sidebar-nav.cjs.entry.js +2 -2
- package/dist/cjs/co-sidebar.cjs.entry.js +3 -3
- package/dist/cjs/co-slider.cjs.entry.js +3 -3
- package/dist/cjs/co-switch.cjs.entry.js +6 -6
- package/dist/cjs/co-tab-group.cjs.entry.js +3 -3
- package/dist/cjs/co-tab.cjs.entry.js +3 -3
- package/dist/cjs/co-tags-field.cjs.entry.js +8 -8
- package/dist/cjs/co-textarea.cjs.entry.js +6 -6
- package/dist/cjs/co-time-field.cjs.entry.js +325 -0
- package/dist/cjs/co-toast.cjs.entry.js +2 -2
- package/dist/cjs/co-toggle-button-group.cjs.entry.js +4 -4
- package/dist/cjs/co-toggle-button.cjs.entry.js +4 -4
- package/dist/cjs/co-transfer-list.cjs.entry.js +1 -1
- package/dist/cjs/co-video.cjs.entry.js +32 -7
- package/dist/cjs/cobalt.cjs.js +2 -2
- package/dist/cjs/color-CML2Cfdh.js +142 -0
- package/dist/cjs/{dateI18n-wblvKRq_.js → dateI18n-BK2qHqoC.js} +36 -0
- package/dist/cjs/{fieldChip-BLzo9MEV.js → fieldChip-B6YIGU1V.js} +1 -1
- package/dist/cjs/fileI18n-6sdbKvo6.js +88 -0
- package/dist/cjs/{index-DFZ5YhIT.js → index-BYwrR87Z.js} +28 -10
- package/dist/cjs/{index-DK-2Lzmf.js → index-MDAnKsze.js} +25 -21
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{positioning-DCj_AJ2T.js → positioning-CyatXeT_.js} +32 -13
- package/dist/cjs/{requiredMark-C1xcrzSZ.js → requiredMark-D-t-IPN0.js} +1 -1
- package/dist/cjs/{toolbar-config-BQfWTW6P.js → toolbar-config-BSGas-Wl.js} +10 -0
- package/dist/cobalt/cobalt.css +1 -1
- package/dist/cobalt/cobalt.esm.js +1 -1
- package/dist/cobalt/{p-f83b48fd.entry.js → p-011dc80b.entry.js} +1 -1
- package/dist/cobalt/{p-316c62c0.entry.js → p-0678c797.entry.js} +1 -1
- package/dist/cobalt/{p-43bd298d.entry.js → p-08e42e00.entry.js} +1 -1
- package/dist/cobalt/{p-1c68bc41.entry.js → p-10b82207.entry.js} +1 -1
- package/dist/cobalt/{p-a8c64cc3.entry.js → p-15d59169.entry.js} +1 -1
- package/dist/cobalt/{p-07d570a6.entry.js → p-16954cea.entry.js} +1 -1
- package/dist/cobalt/{p-85a61e28.entry.js → p-17244412.entry.js} +1 -1
- package/dist/cobalt/p-1788aab5.entry.js +1 -0
- package/dist/cobalt/p-1a589c8e.entry.js +1 -0
- package/dist/cobalt/{p-da546d08.entry.js → p-1dc55e43.entry.js} +1 -1
- package/dist/cobalt/p-20a39218.entry.js +1 -0
- package/dist/cobalt/{p-4c7e3984.entry.js → p-23ab0cc5.entry.js} +1 -1
- package/dist/cobalt/{p-fabe5fb2.entry.js → p-2636b7eb.entry.js} +1 -1
- package/dist/cobalt/{p-88a0659f.entry.js → p-27a7e549.entry.js} +1 -1
- package/dist/cobalt/{p-18d34b01.entry.js → p-290066ef.entry.js} +1 -1
- package/dist/cobalt/{p-89e38c5e.entry.js → p-2f9cbbd5.entry.js} +1 -1
- package/dist/cobalt/{p-ef5e1167.entry.js → p-325b91b6.entry.js} +1 -1
- package/dist/cobalt/{p-60cb66f5.entry.js → p-37f5036b.entry.js} +1 -1
- package/dist/cobalt/p-3cc3ff93.entry.js +1 -0
- package/dist/cobalt/p-410bee4d.entry.js +1 -0
- package/dist/cobalt/{p-6795a258.entry.js → p-44c4e4a3.entry.js} +1 -1
- package/dist/cobalt/{p-4b083da4.entry.js → p-44ea675f.entry.js} +1 -1
- package/dist/cobalt/{p-2828ecf6.entry.js → p-4592ca00.entry.js} +1 -1
- package/dist/cobalt/p-4908f33f.entry.js +1 -0
- package/dist/cobalt/{p-342e1da4.entry.js → p-4d65e713.entry.js} +1 -1
- package/dist/cobalt/{p-dca4cd5f.entry.js → p-4d897896.entry.js} +1 -1
- package/dist/cobalt/{p-33ea4a90.entry.js → p-50bcc76f.entry.js} +1 -1
- package/dist/cobalt/{p-ac91259e.entry.js → p-5298c030.entry.js} +1 -1
- package/dist/cobalt/p-54c987d7.entry.js +1 -0
- package/dist/cobalt/p-56551580.entry.js +1 -0
- package/dist/cobalt/p-58137c9e.entry.js +1 -0
- package/dist/cobalt/{p-4f754c9a.entry.js → p-58d9b650.entry.js} +1 -1
- package/dist/cobalt/p-59963937.entry.js +1 -0
- package/dist/cobalt/{p-2d329ac8.entry.js → p-623cc195.entry.js} +1 -1
- package/dist/cobalt/p-63825d7f.entry.js +1 -0
- package/dist/cobalt/{p-8e667eb6.entry.js → p-66b11b38.entry.js} +1 -1
- package/dist/cobalt/{p-fb3a095b.entry.js → p-6bf6bc3e.entry.js} +1 -1
- package/dist/cobalt/p-6f700f0d.entry.js +1 -0
- package/dist/cobalt/p-73c6d735.entry.js +1 -0
- package/dist/cobalt/{p-a6357340.entry.js → p-76249983.entry.js} +1 -1
- package/dist/cobalt/{p-bfc2a849.entry.js → p-82266f11.entry.js} +1 -1
- package/dist/cobalt/{p-a9b29cc2.entry.js → p-826ee074.entry.js} +1 -1
- package/dist/cobalt/{p-23b3ff3f.entry.js → p-83a9a05a.entry.js} +1 -1
- package/dist/cobalt/{p-568cfe8d.entry.js → p-83ea631d.entry.js} +1 -1
- package/dist/cobalt/p-85501c6a.entry.js +1 -0
- package/dist/cobalt/{p-dfd25f1d.entry.js → p-88195a63.entry.js} +1 -1
- package/dist/cobalt/p-8fa5dc4a.entry.js +1 -0
- package/dist/cobalt/{p-c8dba82f.entry.js → p-91e73a92.entry.js} +1 -1
- package/dist/cobalt/{p-ac466658.entry.js → p-92b092db.entry.js} +1 -1
- package/dist/cobalt/{p-36197363.entry.js → p-996f4e38.entry.js} +1 -1
- package/dist/cobalt/p-BRbgGqLw.js +1 -0
- package/dist/cobalt/{p-BL0sCfMH.js → p-Bryf3-Js.js} +1 -1
- package/dist/cobalt/p-DFHRS9cJ.js +1 -0
- package/dist/cobalt/{p-CrtiywTB.js → p-DH5lfRNj.js} +1 -1
- package/dist/{components/p-WeuPA9Rw.js → cobalt/p-DOL2zACE.js} +1 -1
- package/dist/cobalt/p-D_zA1Pv4.js +1 -0
- package/dist/cobalt/{p-fef5db54.entry.js → p-a32b20eb.entry.js} +1 -1
- package/dist/cobalt/p-aa9400bf.entry.js +1 -0
- package/dist/cobalt/{p-8eb485c8.entry.js → p-aaca6dab.entry.js} +1 -1
- package/dist/cobalt/{p-e5495539.entry.js → p-aae86f96.entry.js} +1 -1
- package/dist/cobalt/{p-8f38e24d.entry.js → p-ad33c40e.entry.js} +1 -1
- package/dist/cobalt/p-b0c4fc71.entry.js +1 -0
- package/dist/cobalt/{p-da18b5f4.entry.js → p-b1e8d69e.entry.js} +1 -1
- package/dist/cobalt/p-b48917c9.entry.js +1 -0
- package/dist/cobalt/{p-7e53e9c8.entry.js → p-b565104d.entry.js} +1 -1
- package/dist/cobalt/{p-b0319a2d.entry.js → p-b90d41e4.entry.js} +1 -1
- package/dist/cobalt/{p-c5684c79.entry.js → p-bd683db3.entry.js} +1 -1
- package/dist/cobalt/{p-1ddbc48b.entry.js → p-c124e82b.entry.js} +1 -1
- package/dist/cobalt/{p-95efe661.entry.js → p-c2ebf0ec.entry.js} +1 -1
- package/dist/cobalt/{p-76420ac1.entry.js → p-c32c176a.entry.js} +1 -1
- package/dist/cobalt/{p-54ae807d.entry.js → p-c465d619.entry.js} +1 -1
- package/dist/cobalt/{p-ab45d9bd.entry.js → p-c91d4fc6.entry.js} +1 -1
- package/dist/cobalt/{p-ce35c898.entry.js → p-d29bb0fa.entry.js} +1 -1
- package/dist/cobalt/{p-7c5e846a.entry.js → p-db805569.entry.js} +1 -1
- package/dist/cobalt/p-e01f9b9a.entry.js +1 -0
- package/dist/cobalt/p-e3aae282.entry.js +1 -0
- package/dist/cobalt/{p-d15d3a97.entry.js → p-e4264532.entry.js} +1 -1
- package/dist/cobalt/{p-93c68029.entry.js → p-e48f4e45.entry.js} +1 -1
- package/dist/cobalt/{p-3f0eed59.entry.js → p-e49a564c.entry.js} +1 -1
- package/dist/cobalt/p-e8a2f993.entry.js +1 -0
- package/dist/cobalt/p-e8a4e6b0.entry.js +1 -0
- package/dist/cobalt/p-ea20f048.entry.js +1 -0
- package/dist/cobalt/{p-c1e7fb32.entry.js → p-eb063cc0.entry.js} +1 -1
- package/dist/cobalt/p-eb82358d.entry.js +1 -0
- package/dist/cobalt/{p-2114c036.entry.js → p-eb8691f2.entry.js} +1 -1
- package/dist/cobalt/{p-e8878cf9.entry.js → p-ee2023da.entry.js} +1 -1
- package/dist/cobalt/p-ee9a623d.entry.js +1 -0
- package/dist/cobalt/p-ef5ca521.entry.js +1 -0
- package/dist/cobalt/p-f4e1c3c3.entry.js +1 -0
- package/dist/cobalt/{p-e364b8a5.entry.js → p-f57dffca.entry.js} +1 -1
- package/dist/cobalt/p-f6691108.entry.js +1 -0
- package/dist/cobalt/p-f68dd124.entry.js +1 -0
- package/dist/cobalt/p-fMqVDypp.js +1 -0
- package/dist/cobalt/{p-0c463d9a.entry.js → p-fd150cc6.entry.js} +1 -1
- package/dist/cobalt/{p-0e91e5c4.entry.js → p-fe7e8813.entry.js} +1 -1
- package/dist/cobalt/p-gKnOhsd2.js +1 -0
- package/dist/cobalt/p-jYd9gu_c.js +1 -0
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/co-app-shell/co-app-shell.css +107 -41
- package/dist/collection/components/co-app-shell/co-app-shell.js +2 -2
- package/dist/collection/components/co-autocomplete/co-autocomplete.js +1 -1
- package/dist/collection/components/co-avatar-group/co-avatar-group.js +1 -1
- package/dist/collection/components/co-badge/co-badge.css +18 -0
- package/dist/collection/components/co-badge/co-badge.js +29 -1
- package/dist/collection/components/co-button/co-button.css +4 -4
- package/dist/collection/components/co-checkbox/co-checkbox.css +12 -3
- package/dist/collection/components/co-checkbox/co-checkbox.js +6 -6
- package/dist/collection/components/co-checkbox-group/co-checkbox-group.css +1 -3
- package/dist/collection/components/co-checkbox-group/co-checkbox-group.js +1 -1
- package/dist/collection/components/co-color-picker/co-color-picker.css +252 -5
- package/dist/collection/components/co-color-picker/co-color-picker.js +932 -15
- package/dist/collection/components/co-color-picker/presets.js +113 -15
- package/dist/collection/components/co-column-picker/co-column-picker.js +2 -2
- package/dist/collection/components/co-combobox/co-combobox.js +1 -1
- package/dist/collection/components/co-command-search/co-command-search.js +1 -1
- package/dist/collection/components/co-data-table/co-data-table.js +1 -1
- 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-range-picker/co-date-range-picker.js +2 -2
- package/dist/collection/components/co-date-time-picker/co-date-time-picker.css +128 -32
- package/dist/collection/components/co-date-time-picker/co-date-time-picker.js +142 -138
- package/dist/collection/components/co-drawer/co-drawer.css +99 -36
- package/dist/collection/components/co-drawer/co-drawer.js +19 -7
- 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-emoji-picker/co-emoji-picker.js +2 -2
- package/dist/collection/components/co-empty-state/co-empty-state.css +28 -0
- package/dist/collection/components/co-empty-state/co-empty-state.js +2 -2
- package/dist/collection/components/co-event-calendar/co-event-calendar.js +2 -2
- package/dist/collection/components/co-event-popover/co-event-popover.js +1 -1
- package/dist/collection/components/co-fab/co-fab.js +2 -2
- package/dist/collection/components/co-file-field/co-file-field.css +55 -2
- package/dist/collection/components/co-file-field/co-file-field.js +41 -13
- package/dist/collection/components/co-file-field/co-file-field.utils.js +51 -4
- 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.css +40 -2
- package/dist/collection/components/co-icon-button/co-icon-button.js +43 -4
- package/dist/collection/components/co-input/co-input.css +33 -0
- package/dist/collection/components/co-input/co-input.js +25 -2
- package/dist/collection/components/co-json-field/co-json-field.js +3 -3
- package/dist/collection/components/co-lightbox/co-lightbox.css +23 -0
- package/dist/collection/components/co-lightbox/co-lightbox.js +209 -20
- 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.js +67 -3
- package/dist/collection/components/co-modal/co-modal.css +106 -37
- package/dist/collection/components/co-modal/co-modal.js +4 -2
- package/dist/collection/components/co-navbar/co-navbar.css +4 -2
- package/dist/collection/components/co-navbar/co-navbar.js +2 -2
- package/dist/collection/components/co-number-field/co-number-field.css +22 -0
- package/dist/collection/components/co-number-field/co-number-field.js +216 -9
- package/dist/collection/components/co-option-list/co-option-list.css +25 -4
- package/dist/collection/components/co-option-list/co-option-list.js +26 -3
- package/dist/collection/components/co-overlay/co-overlay.js +5 -3
- 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-popover/co-popover.css +18 -3
- package/dist/collection/components/co-popover/co-popover.js +83 -20
- 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-radio/co-radio.js +3 -3
- package/dist/collection/components/co-radio-group/co-radio-group.js +1 -1
- package/dist/collection/components/co-rating/co-rating.js +3 -3
- package/dist/collection/components/co-ref-field/co-ref-field.js +3 -3
- package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.css +14 -1
- package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.js +9 -6
- package/dist/collection/components/co-rich-text-toolbar/co-rich-text-toolbar.js +7 -3
- package/dist/collection/components/co-rich-text-viewer/co-rich-text-viewer.js +3 -2
- package/dist/collection/components/co-row/co-row.js +2 -2
- package/dist/collection/components/co-segmented-bar/co-segmented-bar.js +1 -1
- 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.css +2 -2
- package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.js +1 -1
- package/dist/collection/components/co-skeleton/co-skeleton.css +18 -0
- package/dist/collection/components/co-skeleton/co-skeleton.js +83 -1
- package/dist/collection/components/co-slider/co-slider.js +2 -2
- package/dist/collection/components/co-switch/co-switch.css +3 -3
- 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.js +2 -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-time-field/co-time-field.css +111 -0
- package/dist/collection/components/co-time-field/co-time-field.js +536 -0
- package/dist/collection/components/co-toast/co-toast.css +13 -7
- package/dist/collection/components/co-toast/co-toast.js +2 -2
- package/dist/collection/components/co-toggle-button/co-toggle-button.css +16 -11
- 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.css +7 -1
- package/dist/collection/components/co-toggle-button-group/co-toggle-button-group.js +2 -2
- package/dist/collection/components/co-tooltip/co-tooltip.css +18 -1
- package/dist/collection/components/co-tooltip/co-tooltip.js +49 -16
- package/dist/collection/components/co-transfer-list/co-transfer-list.js +1 -1
- package/dist/collection/components/co-video/co-video.js +34 -9
- package/dist/collection/utils/amountText.js +95 -0
- package/dist/collection/utils/color.js +109 -3
- package/dist/collection/utils/colorPickerI18n.js +55 -0
- package/dist/collection/utils/dateI18n.js +36 -0
- package/dist/collection/utils/fileI18n.js +3 -0
- package/dist/collection/utils/positioning.js +37 -4
- package/dist/collection/utils/submenu.js +35 -0
- package/dist/components/co-accordion.js +1 -1
- package/dist/components/co-action-bar.js +1 -1
- package/dist/components/co-app-shell.js +1 -1
- package/dist/components/co-audio-player.js +1 -1
- 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-breadcrumb-item.js +1 -1
- package/dist/components/co-breadcrumb.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.js +1 -1
- package/dist/components/co-calendar.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.js +1 -1
- 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-emoji-picker.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.js +1 -1
- 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-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-rich-text-viewer.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-time-field.d.ts +11 -0
- package/dist/components/co-time-field.js +1 -0
- 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/index.js +1 -1
- package/dist/components/p-9ceBPSd1.js +1 -0
- package/dist/components/p-B1QFLcY9.js +1 -0
- package/dist/components/p-B2IsXte7.js +1 -0
- package/dist/components/p-B4NCaKrR.js +1 -0
- package/dist/components/p-BBP5__CY.js +1 -0
- package/dist/components/{p-Dabi98BI.js → p-BGDqldEg.js} +1 -1
- package/dist/components/p-BRbgGqLw.js +1 -0
- package/dist/components/p-Be_kyNRE.js +1 -0
- package/dist/components/{p-BL0sCfMH.js → p-Bryf3-Js.js} +1 -1
- package/dist/components/p-BsTO1uUA.js +1 -0
- package/dist/components/{p-CuZXTvDM.js → p-Bv6U5y3d.js} +1 -1
- package/dist/components/p-BxP8OBw6.js +1 -0
- package/dist/components/{p-P8wvwhM2.js → p-CFFDmGPS.js} +1 -1
- package/dist/components/{p-CA_JAK9s.js → p-CT2enQ6h.js} +1 -1
- package/dist/components/p-CXPRaTuo.js +1 -0
- package/dist/components/{p-D5EdMieb.js → p-Cl3AdEQJ.js} +1 -1
- package/dist/components/p-CnX3L8aF.js +1 -0
- package/dist/components/p-DFHRS9cJ.js +1 -0
- package/dist/components/p-DIo66nBr.js +1 -0
- package/dist/components/{p-Dj1EZ5qD.js → p-DNJAIVfI.js} +1 -1
- package/dist/{cobalt/p-WeuPA9Rw.js → components/p-DOL2zACE.js} +1 -1
- package/dist/components/p-DRP8D9ro.js +1 -0
- package/dist/components/p-DkDTmHCg.js +1 -0
- package/dist/components/{p-Bxk96Zgc.js → p-Du_CgT5E.js} +1 -1
- package/dist/components/{p-BHYtxTzM.js → p-HxVRXXXC.js} +1 -1
- package/dist/components/{p-B0Dc-I_C.js → p-NNxjElcX.js} +1 -1
- package/dist/components/p-gKnOhsd2.js +1 -0
- package/dist/components/p-jYd9gu_c.js +1 -0
- package/dist/components/{p-D4qzGifz.js → p-vby0ITbe.js} +1 -1
- package/dist/components/{p-D6OUW6oW.js → p-x4grh-eZ.js} +1 -1
- package/dist/esm/co-accordion.entry.js +1 -1
- package/dist/esm/co-action-bar.entry.js +1 -1
- package/dist/esm/co-app-shell.entry.js +4 -4
- package/dist/esm/co-audio-player.entry.js +1 -1
- package/dist/esm/co-autocomplete.entry.js +2 -2
- package/dist/esm/co-avatar-group.entry.js +1 -1
- package/dist/esm/co-avatar_2.entry.js +49 -17
- package/dist/esm/co-badge.entry.js +11 -3
- package/dist/esm/co-bottom-sheet.entry.js +1 -1
- package/dist/esm/co-breadcrumb-item.entry.js +1 -1
- package/dist/esm/co-breadcrumb.entry.js +1 -1
- package/dist/esm/co-button-group.entry.js +1 -1
- package/dist/esm/co-button.entry.js +2 -2
- package/dist/esm/co-calendar-month_2.entry.js +37 -2
- package/dist/esm/co-calendar_3.entry.js +27 -15
- package/dist/esm/co-card.entry.js +1 -1
- package/dist/esm/co-carousel-item.entry.js +1 -1
- package/dist/esm/co-carousel.entry.js +2 -2
- package/dist/esm/co-checkbox-group.entry.js +2 -2
- package/dist/esm/co-checkbox.entry.js +6 -6
- package/dist/esm/co-chip_2.entry.js +8 -5
- package/dist/esm/co-color-picker.entry.js +1048 -27
- package/dist/esm/co-column-picker.entry.js +3 -3
- package/dist/esm/co-combobox.entry.js +2 -2
- package/dist/esm/co-command-search.entry.js +1 -1
- package/dist/esm/co-data-table-pagination.entry.js +5 -5
- package/dist/esm/co-data-table.entry.js +1 -1
- package/dist/esm/co-date-picker.entry.js +3 -3
- package/dist/esm/co-date-range-picker.entry.js +3 -3
- package/dist/esm/co-date-range.entry.js +2 -2
- package/dist/esm/co-date-time-picker.entry.js +101 -130
- package/dist/esm/co-drive-card.entry.js +2 -2
- package/dist/esm/co-drop-zone.entry.js +2 -2
- package/dist/esm/co-emoji-picker.entry.js +4 -4
- package/dist/esm/co-empty-state.entry.js +4 -4
- package/dist/esm/co-event-calendar.entry.js +4 -4
- package/dist/esm/co-event-popover.entry.js +3 -3
- package/dist/esm/co-fab.entry.js +3 -3
- package/dist/esm/co-file-field.entry.js +95 -99
- package/dist/esm/co-file-type-tile.entry.js +3 -3
- package/dist/esm/co-helper-text.entry.js +3 -3
- package/dist/esm/co-icon-button.entry.js +6 -6
- package/dist/esm/co-icon.entry.js +3 -3
- package/dist/esm/co-input.entry.js +26 -4
- package/dist/esm/co-json-field.entry.js +5 -5
- package/dist/esm/co-lightbox.entry.js +204 -21
- package/dist/esm/co-list-footer.entry.js +2 -2
- package/dist/esm/co-list-item.entry.js +5 -5
- package/dist/esm/co-loader.entry.js +1 -1
- package/dist/esm/co-media-thumb.entry.js +3 -3
- package/dist/esm/co-menu-divider.entry.js +2 -2
- package/dist/esm/co-menu-item.entry.js +84 -3
- package/dist/esm/co-menu.entry.js +2 -2
- package/dist/esm/co-modal.entry.js +6 -4
- package/dist/esm/co-navbar.entry.js +4 -4
- package/dist/esm/co-number-field.entry.js +272 -9
- package/dist/esm/co-overlay.entry.js +6 -4
- package/dist/esm/co-page-header.entry.js +2 -2
- package/dist/esm/co-phone-field.entry.js +3 -3
- package/dist/esm/co-popover.entry.js +58 -21
- package/dist/esm/co-progress-bar.entry.js +3 -3
- package/dist/esm/co-progress-circle.entry.js +3 -3
- package/dist/esm/co-provider-logo_2.entry.js +47 -3
- package/dist/esm/co-radio-group.entry.js +1 -1
- package/dist/esm/co-radio.entry.js +4 -4
- package/dist/esm/co-rating.entry.js +4 -4
- package/dist/esm/co-ref-field.entry.js +4 -4
- package/dist/esm/co-rich-text-editor.entry.js +11 -8
- package/dist/esm/co-rich-text-toolbar.entry.js +7 -3
- package/dist/esm/co-rich-text-viewer.entry.js +4 -3
- package/dist/esm/co-row.entry.js +3 -3
- package/dist/esm/co-segmented-bar.entry.js +1 -1
- package/dist/esm/co-select.entry.js +2 -2
- package/dist/esm/co-separator.entry.js +2 -2
- package/dist/esm/co-sidebar-nav.entry.js +2 -2
- package/dist/esm/co-sidebar.entry.js +3 -3
- package/dist/esm/co-slider.entry.js +3 -3
- package/dist/esm/co-switch.entry.js +6 -6
- package/dist/esm/co-tab-group.entry.js +3 -3
- package/dist/esm/co-tab.entry.js +3 -3
- package/dist/esm/co-tags-field.entry.js +8 -8
- package/dist/esm/co-textarea.entry.js +6 -6
- package/dist/esm/co-time-field.entry.js +323 -0
- package/dist/esm/co-toast.entry.js +2 -2
- package/dist/esm/co-toggle-button-group.entry.js +4 -4
- package/dist/esm/co-toggle-button.entry.js +4 -4
- package/dist/esm/co-transfer-list.entry.js +1 -1
- package/dist/esm/co-video.entry.js +32 -7
- package/dist/esm/cobalt.js +3 -3
- package/dist/esm/color-BRbgGqLw.js +136 -0
- package/dist/esm/{dateI18n-CnNpoKwg.js → dateI18n-jYd9gu_c.js} +36 -0
- package/dist/esm/{fieldChip-DsAfq1e0.js → fieldChip-uyggU8VV.js} +1 -1
- package/dist/esm/fileI18n-gKnOhsd2.js +84 -0
- package/dist/esm/{index-RuXxdKzC.js → index-68iUQp5j.js} +28 -10
- package/dist/esm/{index-CrtiywTB.js → index-DH5lfRNj.js} +25 -21
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{positioning-BMdapAL8.js → positioning-DFHRS9cJ.js} +32 -13
- package/dist/esm/{requiredMark-DCD-ZA51.js → requiredMark-BCJUuZvC.js} +1 -1
- package/dist/esm/{toolbar-config-WeuPA9Rw.js → toolbar-config-DOL2zACE.js} +10 -0
- package/dist/types/components/co-badge/co-badge.d.ts +7 -0
- package/dist/types/components/co-checkbox/co-checkbox.d.ts +1 -1
- package/dist/types/components/co-color-picker/co-color-picker.d.ts +358 -4
- package/dist/types/components/co-color-picker/presets.d.ts +107 -4
- package/dist/types/components/co-date-time-picker/co-date-time-picker.d.ts +43 -21
- package/dist/types/components/co-drawer/co-drawer.d.ts +4 -3
- package/dist/types/components/co-file-field/co-file-field.d.ts +14 -0
- package/dist/types/components/co-file-field/co-file-field.utils.d.ts +18 -1
- package/dist/types/components/co-icon-button/co-icon-button.d.ts +9 -0
- package/dist/types/components/co-input/co-input.d.ts +4 -0
- package/dist/types/components/co-lightbox/co-lightbox.d.ts +60 -4
- package/dist/types/components/co-menu-item/co-menu-item.d.ts +16 -0
- package/dist/types/components/co-number-field/co-number-field.d.ts +42 -1
- package/dist/types/components/co-option-list/co-option-list.d.ts +3 -0
- package/dist/types/components/co-overlay/co-overlay.d.ts +4 -2
- package/dist/types/components/co-popover/co-popover.d.ts +16 -0
- package/dist/types/components/co-rich-text-toolbar/co-rich-text-toolbar.d.ts +1 -1
- package/dist/types/components/co-skeleton/co-skeleton.d.ts +13 -0
- package/dist/types/components/co-time-field/co-time-field.d.ts +60 -0
- package/dist/types/components/co-tooltip/co-tooltip.d.ts +5 -0
- package/dist/types/components/co-video/co-video.d.ts +4 -0
- package/dist/types/components.d.ts +451 -87
- package/dist/types/utils/amountText.d.ts +34 -0
- package/dist/types/utils/color.d.ts +44 -1
- package/dist/types/utils/colorPickerI18n.d.ts +26 -0
- package/dist/types/utils/dateI18n.d.ts +12 -0
- package/dist/types/utils/fileI18n.d.ts +1 -0
- package/dist/types/utils/positioning.d.ts +10 -0
- package/dist/types/utils/submenu.d.ts +44 -0
- package/package.json +3 -3
- package/dist/cjs/color-YhUkm10t.js +0 -32
- package/dist/cjs/time-LBHtzLHe.js +0 -42
- package/dist/cobalt/p-07904986.entry.js +0 -1
- package/dist/cobalt/p-09799193.entry.js +0 -1
- package/dist/cobalt/p-17ae943c.entry.js +0 -1
- package/dist/cobalt/p-23a103a0.entry.js +0 -1
- package/dist/cobalt/p-2f88d151.entry.js +0 -1
- package/dist/cobalt/p-3495fda1.entry.js +0 -1
- package/dist/cobalt/p-409f28bb.entry.js +0 -1
- package/dist/cobalt/p-682b3313.entry.js +0 -1
- package/dist/cobalt/p-6bf814f9.entry.js +0 -1
- package/dist/cobalt/p-7c88163e.entry.js +0 -1
- package/dist/cobalt/p-7cf4b4ae.entry.js +0 -1
- package/dist/cobalt/p-7ea87b75.entry.js +0 -1
- package/dist/cobalt/p-8183f56f.entry.js +0 -1
- package/dist/cobalt/p-8345b25f.entry.js +0 -1
- package/dist/cobalt/p-8b4b3589.entry.js +0 -1
- package/dist/cobalt/p-983af614.entry.js +0 -1
- package/dist/cobalt/p-BG4WRR22.js +0 -1
- package/dist/cobalt/p-BMdapAL8.js +0 -1
- package/dist/cobalt/p-CF8OB_TM.js +0 -1
- package/dist/cobalt/p-CnNpoKwg.js +0 -1
- package/dist/cobalt/p-T4la7ly_.js +0 -1
- package/dist/cobalt/p-a2d31248.entry.js +0 -1
- package/dist/cobalt/p-a6b5cadd.entry.js +0 -1
- package/dist/cobalt/p-b8581787.entry.js +0 -1
- package/dist/cobalt/p-bcedbd73.entry.js +0 -1
- package/dist/cobalt/p-d40a465f.entry.js +0 -1
- package/dist/cobalt/p-dea43204.entry.js +0 -1
- package/dist/cobalt/p-dfcf667d.entry.js +0 -1
- package/dist/cobalt/p-e6882ddd.entry.js +0 -1
- package/dist/cobalt/p-e84eda2e.entry.js +0 -1
- package/dist/cobalt/p-f25967fb.entry.js +0 -1
- package/dist/cobalt/p-f5f1b463.entry.js +0 -1
- package/dist/cobalt/p-fd39f410.entry.js +0 -1
- package/dist/cobalt/p-mAGnZXRn.js +0 -1
- package/dist/components/p-BMdapAL8.js +0 -1
- package/dist/components/p-BTQEg3UO.js +0 -1
- package/dist/components/p-BZIB4JDs.js +0 -1
- package/dist/components/p-Bbny3WUc.js +0 -1
- package/dist/components/p-C1Kv3zYZ.js +0 -1
- package/dist/components/p-CF8OB_TM.js +0 -1
- package/dist/components/p-CR0izsJC.js +0 -1
- package/dist/components/p-CnNpoKwg.js +0 -1
- package/dist/components/p-DP0bbhfN.js +0 -1
- package/dist/components/p-DbipMAyT.js +0 -1
- package/dist/components/p-DgUBcJIS.js +0 -1
- package/dist/components/p-DolCkNsL.js +0 -1
- package/dist/components/p-gI62K3Be.js +0 -1
- package/dist/components/p-hfGFsvaD.js +0 -1
- package/dist/esm/color-BG4WRR22.js +0 -30
- package/dist/esm/time-CF8OB_TM.js +0 -37
|
@@ -2,12 +2,19 @@ import { EventEmitter } from '../../stencil-public-runtime';
|
|
|
2
2
|
import { type ColorPreset } from './presets';
|
|
3
3
|
/**
|
|
4
4
|
* Color picker with preset swatches. Shows a trigger with the current color
|
|
5
|
-
* swatch + hex value, and opens a popover panel with a
|
|
5
|
+
* swatch + hex value, and opens a popover panel with a saturation/brightness
|
|
6
|
+
* area, a hue slider, a grid of preset colors and an editable hex field.
|
|
6
7
|
*
|
|
7
|
-
* The hex
|
|
8
|
-
*
|
|
8
|
+
* The hex field previews while typing (`coInput`) and commits on gesture end
|
|
9
|
+
* — blur, Enter or panel close — like every other control in the panel. A
|
|
10
|
+
* pasted CSS color commits immediately; a copy button copies the current value.
|
|
9
11
|
*
|
|
10
|
-
* @event
|
|
12
|
+
* @event coInput - Live hex while a gesture is in flight — dragging the area or
|
|
13
|
+
* the hue slider, and typing a valid hex in the field (preview only, never a
|
|
14
|
+
* commit).
|
|
15
|
+
* @event coChange - Emits the committed hex string (e.g. "#0066FF"): pointer
|
|
16
|
+
* release, arrow key, swatch click, paste, and the end of a hex-field edit
|
|
17
|
+
* (blur, Enter or panel close).
|
|
11
18
|
*/
|
|
12
19
|
export declare class CoColorPicker {
|
|
13
20
|
el: HTMLElement;
|
|
@@ -46,11 +53,178 @@ export declare class CoColorPicker {
|
|
|
46
53
|
* or plain hex strings. When set programmatically, accepts an actual array.
|
|
47
54
|
*/
|
|
48
55
|
presets: string | ColorPreset[] | string[];
|
|
56
|
+
/** Idioma de los textos accesibles. Misma prop que co-file-field/co-date-picker. */
|
|
57
|
+
locale: string;
|
|
49
58
|
/** Emits the selected hex color on change. */
|
|
50
59
|
coChange: EventEmitter<string>;
|
|
60
|
+
/**
|
|
61
|
+
* Hex en vivo mientras se arrastra el área o el matiz. El host lo usa para
|
|
62
|
+
* previsualizar si quiere.
|
|
63
|
+
*
|
|
64
|
+
* La partición con `coChange` es el contrato nuevo y existe por una razón
|
|
65
|
+
* concreta: un arrastre produce ~60 valores por segundo, y emitirlos todos
|
|
66
|
+
* como `coChange` ensucia la sesión del formulario en cada frame (un
|
|
67
|
+
* "cambios sin guardar" por píxel movido). `coChange` sigue significando
|
|
68
|
+
* exactamente lo que significaba —commit—, así que los consumidores actuales
|
|
69
|
+
* no cambian una línea.
|
|
70
|
+
*/
|
|
71
|
+
coInput: EventEmitter<string>;
|
|
51
72
|
private isOpen;
|
|
52
73
|
private copied;
|
|
74
|
+
/**
|
|
75
|
+
* El estado AUTORITATIVO del color mientras el picker está vivo: HSV en punto
|
|
76
|
+
* flotante. El hex es una derivación de presentación, no la fuente.
|
|
77
|
+
*
|
|
78
|
+
* ⛔ No redondear: el redondeo a entero rompe el round-trip (#02A270 vuelve
|
|
79
|
+
* como #02A370) y ése es el temblor del cursor al arrastrar. El redondeo va
|
|
80
|
+
* sólo en el borde (el `value` de los range y los aria-valuetext).
|
|
81
|
+
*/
|
|
82
|
+
private hsv;
|
|
83
|
+
/**
|
|
84
|
+
* El TEXTO del campo hex (sin `#`), que mientras se tipea puede no ser un
|
|
85
|
+
* color: `12` es un hex a medio escribir, no un error. El valor real sigue
|
|
86
|
+
* siendo `value`; esto es sólo lo que se ve en el campo.
|
|
87
|
+
*/
|
|
88
|
+
private hexDraft;
|
|
89
|
+
/**
|
|
90
|
+
* Si el usuario está tipeando en el campo hex. Mientras lo esté, el campo NO
|
|
91
|
+
* se re-espeja desde `value`: como el commit es en vivo, tipear `F00` emite
|
|
92
|
+
* `#FF0000` y espejarlo le reescribiría el texto bajo el cursor (react-colorful
|
|
93
|
+
* hace lo mismo, pero mirándole el foco al input; acá es un flag explícito
|
|
94
|
+
* porque el foco dentro de un shadow root no sale por `document.activeElement`
|
|
95
|
+
* y porque un flag es observable desde los tests).
|
|
96
|
+
*
|
|
97
|
+
* Se apaga en el blur y al reabrir el panel: un texto a medias abandonado por
|
|
98
|
+
* una vía que no entrega blur (Escape desmonta el panel entero) no puede
|
|
99
|
+
* dejar el espejo roto para siempre.
|
|
100
|
+
*/
|
|
101
|
+
private hexEditing;
|
|
102
|
+
/**
|
|
103
|
+
* Cuál de los dos ejes del área tiene el tab stop. El otro sale del tab order
|
|
104
|
+
* (`tabindex=-1`) y del árbol de accesibilidad (`aria-hidden`), así que el
|
|
105
|
+
* formulario lista UN control por campo y el lector anuncia uno solo — pero
|
|
106
|
+
* los dos siguen operables, porque la flecha del eje oculto le mueve el foco
|
|
107
|
+
* por código. Es @State porque de él dependen atributos pintados.
|
|
108
|
+
*/
|
|
109
|
+
private areaAxis;
|
|
110
|
+
/**
|
|
111
|
+
* Último hex que escribimos en `value`. Es el anti-drift de la capa de estado:
|
|
112
|
+
* si el host nos devuelve el mismo hex que acabamos de emitir, NO se
|
|
113
|
+
* re-convierte a HSV — un redondeo distinto movería el cursor solo.
|
|
114
|
+
* (El otro anti-drift está en color.ts: Hsv es float, nunca entero.)
|
|
115
|
+
*
|
|
116
|
+
* Guardaba también el HSV que produjo ese hex, y nadie lo leía nunca: los
|
|
117
|
+
* cuatro puntos que sellan el caché lo hacen inmediatamente después de
|
|
118
|
+
* asignar `this.hsv`, así que la copia era `this.hsv` por otro nombre —
|
|
119
|
+
* imposible de desincronizar y, por lo mismo, imposible de aprovechar. Un
|
|
120
|
+
* campo muerto dentro de un anti-drift es una invitación a "usarlo" y
|
|
121
|
+
* reintroducir justo el drift que esto evita.
|
|
122
|
+
*/
|
|
123
|
+
private emitted;
|
|
124
|
+
/**
|
|
125
|
+
* El último hex realmente COMMITEADO (`coChange`), que es cosa distinta de
|
|
126
|
+
* `emitted`: ése lo sella también cada frame de preview, así que no puede
|
|
127
|
+
* decir a qué color volver cuando un gesto termina sin commitear.
|
|
128
|
+
*
|
|
129
|
+
* Es la línea de base del deshacer: a él vuelve un texto que quedó a medias
|
|
130
|
+
* y —el agujero que esto además tapa— un arrastre abortado, que hoy dejaba
|
|
131
|
+
* `value` en el color previsualizado sin que el host se hubiera enterado
|
|
132
|
+
* nunca por `coChange`.
|
|
133
|
+
*/
|
|
134
|
+
private committed;
|
|
135
|
+
/**
|
|
136
|
+
* Índice del swatch enfocado, para la navegación por flechas (roving tabindex).
|
|
137
|
+
* Es @State y no un campo suelto porque el `tabIndex` de cada opción se pinta
|
|
138
|
+
* a partir de él: sin reactividad, las flechas moverían el foco pero el DOM
|
|
139
|
+
* quedaría con el tabbable original y salir/volver con Tab caería en el
|
|
140
|
+
* swatch equivocado.
|
|
141
|
+
*/
|
|
142
|
+
private focusedIndex;
|
|
143
|
+
private gridEl?;
|
|
144
|
+
private areaEl?;
|
|
145
|
+
/**
|
|
146
|
+
* Si hay un arrastre ABIERTO sobre el área (hubo `pointerdown` acá que sí
|
|
147
|
+
* pudo traducir el punto). Sin esto, cualquier `pointerup` que aterrice sobre
|
|
148
|
+
* el área commitea: un arrastre iniciado en otra parte del panel y soltado
|
|
149
|
+
* encima emitía un `coChange` que el usuario nunca pidió — y en suite-v2
|
|
150
|
+
* commit significa formulario sucio.
|
|
151
|
+
*/
|
|
152
|
+
private areaDragging;
|
|
153
|
+
private satEl?;
|
|
154
|
+
private valEl?;
|
|
155
|
+
/**
|
|
156
|
+
* Un valor entrante que YA es el que acabamos de emitir se descarta.
|
|
157
|
+
*
|
|
158
|
+
* Sin esto, un host controlado (el que guarda lo emitido y lo devuelve por la
|
|
159
|
+
* prop) reinyecta el hex derivado, que se re-convierte a HSV con otro
|
|
160
|
+
* redondeo y mueve el cursor solo en pleno arrastre. La comparación es
|
|
161
|
+
* case-insensitive porque el host normaliza el string —guardar en minúsculas
|
|
162
|
+
* es lo habitual— y el mismo color escrito distinto no es un cambio.
|
|
163
|
+
*/
|
|
164
|
+
syncFromValue(next: string): void;
|
|
165
|
+
/**
|
|
166
|
+
* Siembra del estado. Es OBLIGATORIA acá, no basta el initializer del campo:
|
|
167
|
+
* - los @Watch no corren para el valor inicial de la prop;
|
|
168
|
+
* - el initializer de un miembro DECORADO no sobrevive en el entorno de spec
|
|
169
|
+
* (@stencil/vitest define el accessor encima del campo ya inicializado, así
|
|
170
|
+
* que `this.hsv` llega `undefined` al primer render y el destructuring de
|
|
171
|
+
* `renderArea` tira). Los otros @State del componente lo toleraban porque
|
|
172
|
+
* `undefined` es falsy justo donde se usan.
|
|
173
|
+
* Sin hex válido el estado arranca en negro, que es lo que pinta el área
|
|
174
|
+
* mientras no hay color elegido.
|
|
175
|
+
*/
|
|
176
|
+
componentWillLoad(): void;
|
|
177
|
+
/**
|
|
178
|
+
* Movimiento en vivo: actualiza la UI y avisa, sin commitear.
|
|
179
|
+
*
|
|
180
|
+
* ⚠️ El caché se sella ANTES de tocar `this.value`: el setter de una @Prop
|
|
181
|
+
* corre sus @Watch de forma SÍNCRONA, así que con el caché todavía en el
|
|
182
|
+
* color anterior `syncFromValue` vería un color "nuevo", re-parsearía el hex
|
|
183
|
+
* y pisaría este HSV flotante con el redondeado — el temblor, en el mismo
|
|
184
|
+
* frame y sin que el host haya hecho nada. Guard: area.spec.
|
|
185
|
+
*/
|
|
186
|
+
private previewHsv;
|
|
187
|
+
/**
|
|
188
|
+
* Lo mismo, pero entrando por un hex ENTERO en vez de por un eje: es lo que
|
|
189
|
+
* produce el campo de texto, donde el color no llega como "más saturación"
|
|
190
|
+
* sino como un color completo. Comparte el sellado con `previewHsv` para que
|
|
191
|
+
* el orden crítico (sellar → asignar → avisar) exista en UN solo lugar.
|
|
192
|
+
*/
|
|
193
|
+
private previewHex;
|
|
194
|
+
private emitPreview;
|
|
195
|
+
/**
|
|
196
|
+
* Commit: lo que los consumidores ya escuchan hoy (soltar el arrastre,
|
|
197
|
+
* clickear un swatch).
|
|
198
|
+
*
|
|
199
|
+
* El HSV se re-deriva SÓLO si el hex viene de afuera —un swatch, un hex
|
|
200
|
+
* tipeado—, y eso se detecta preguntándole al propio estado si ese hex es el
|
|
201
|
+
* que produce. Re-derivar siempre tiene dos daños:
|
|
202
|
+
*
|
|
203
|
+
* 1. 🔴 En un color ACROMÁTICO el hex no lleva matiz: `#000000` es negro y
|
|
204
|
+
* punto, así que `hexToHsv` devuelve h=0 (rojo) y le BORRA al usuario el
|
|
205
|
+
* matiz que acababa de elegir. Con el campo vacío —el estado inicial de
|
|
206
|
+
* tres consumidores de suite-v2— el área se ponía azul al arrastrar el
|
|
207
|
+
* matiz y volvía a roja al soltar.
|
|
208
|
+
* 2. En un color cromático no lo borra pero lo REDONDEA (200 → 199.875):
|
|
209
|
+
* el estado interno pasando por la grilla del hex es justo lo que esta
|
|
210
|
+
* task existe para evitar.
|
|
211
|
+
*/
|
|
212
|
+
private commit;
|
|
213
|
+
private get strings();
|
|
53
214
|
private get parsedPresets();
|
|
215
|
+
/**
|
|
216
|
+
* Los grupos EN EL ORDEN EN QUE SE RENDERIZAN, cada uno con el índice plano
|
|
217
|
+
* de su primer swatch (`from`). La navegación por flechas se indexa contra
|
|
218
|
+
* este aplanado, no contra `parsedPresets`: si el orden del render y el del
|
|
219
|
+
* array divergieran, una flecha movería el foco a otro swatch.
|
|
220
|
+
*
|
|
221
|
+
* La frontera neutros/marca sale de `NEUTRAL_PRESET_KEYS` — la única fuente
|
|
222
|
+
* de la paleta. Nada de `slice(0, 5)`: ese `5` ya estaba duplicado en tres
|
|
223
|
+
* lugares y es lo que la task anterior vino a eliminar.
|
|
224
|
+
*/
|
|
225
|
+
private get presetGroups();
|
|
226
|
+
/** Los swatches aplanados en orden de render: la lista que recorren las flechas. */
|
|
227
|
+
private get flatPresets();
|
|
54
228
|
private handlePopoverOpen;
|
|
55
229
|
private handlePopoverClose;
|
|
56
230
|
private handleTriggerKeyDown;
|
|
@@ -59,7 +233,187 @@ export declare class CoColorPicker {
|
|
|
59
233
|
* otro elemento — en ese caso no robarlo. */
|
|
60
234
|
private restoreTriggerFocus;
|
|
61
235
|
private handleSwatchClick;
|
|
236
|
+
/**
|
|
237
|
+
* Coordenadas del puntero → saturación/brillo.
|
|
238
|
+
*
|
|
239
|
+
* ⚠️ Un `rect` degenerado NO se convierte en un color: con `rect.width === 0`
|
|
240
|
+
* (área todavía sin layout, o con `display:none`) la división da **Infinity**
|
|
241
|
+
* —no NaN: NaN sólo sale si el numerador es exactamente 0— y el clamp lo
|
|
242
|
+
* lleva a 1, así que un pointerdown escribiría `s=100, v=0`, o sea NEGRO, y
|
|
243
|
+
* lo emitiría como si el usuario lo hubiera elegido. Guard: area.spec.
|
|
244
|
+
*/
|
|
245
|
+
private pointerToHsv;
|
|
246
|
+
private handleAreaPointerDown;
|
|
247
|
+
private handleAreaPointerMove;
|
|
248
|
+
/**
|
|
249
|
+
* Un arrastre ABORTADO cierra el gesto sin commitear. Sin esto, el flag queda
|
|
250
|
+
* en `true` para siempre en esa instancia y el próximo `pointerup` suelto
|
|
251
|
+
* commitea — el mismo bug del gesto sin `pointerdown`, por otra puerta.
|
|
252
|
+
*/
|
|
253
|
+
private handleAreaPointerCancel;
|
|
254
|
+
private handleAreaPointerUp;
|
|
255
|
+
/**
|
|
256
|
+
* Qué eje mueve cada flecha DENTRO del área, y en qué sentido. Un range
|
|
257
|
+
* horizontal nativo también responde a ↑/↓ moviendo SU eje, así que sin esta
|
|
258
|
+
* tabla (y su `preventDefault`) la flecha de arriba subía la saturación.
|
|
259
|
+
*/
|
|
260
|
+
private static readonly AREA_KEYS;
|
|
261
|
+
/**
|
|
262
|
+
* Teclado del área: la flecha decide el eje, y ese eje pasa a ser el
|
|
263
|
+
* enfocado. El foco programático entra igual en el input con `tabindex=-1`
|
|
264
|
+
* —por eso el par tabindex-1 + aria-hidden no deja ningún eje inalcanzable—.
|
|
265
|
+
* SLDS: flecha = 1, Shift+flecha = 10.
|
|
266
|
+
*/
|
|
267
|
+
private handleAreaKeyDown;
|
|
268
|
+
/** Mueve el tab stop del área (y el foco) al eje pedido. */
|
|
269
|
+
private focusAxis;
|
|
270
|
+
/**
|
|
271
|
+
* El matiz es un slider 1D suelto: las cuatro flechas son SU eje, así que el
|
|
272
|
+
* range nativo ya resuelve el paso de 1 y acá sólo se intercepta Shift.
|
|
273
|
+
*/
|
|
274
|
+
private handleHueKeyDown;
|
|
275
|
+
private optionEls;
|
|
276
|
+
/**
|
|
277
|
+
* Vecino de arriba/abajo EN PANTALLA.
|
|
278
|
+
*
|
|
279
|
+
* La grilla no es una matriz única: son N grillas de 6 columnas apiladas, una
|
|
280
|
+
* por grupo, y la de neutros tiene 5 celdas. Por eso un stride plano de ±6
|
|
281
|
+
* sobre el índice global se corre una columna al cruzar la frontera (Black,
|
|
282
|
+
* columna 0, caía en Olive, columna 1). Fila y columna se calculan DENTRO del
|
|
283
|
+
* grupo; al cruzar al grupo vecino se conserva la columna, que es lo que
|
|
284
|
+
* "fila anterior / siguiente" significa visualmente.
|
|
285
|
+
*
|
|
286
|
+
* En el borde de la grilla el foco NO se mueve: colapsarlo al extremo mandaba
|
|
287
|
+
* cualquier neutro de la primera fila a Black.
|
|
288
|
+
*
|
|
289
|
+
* Asimetría DELIBERADA con las flechas horizontales, que sí wrappean (0↔16):
|
|
290
|
+
* el wrap cíclico en un eje y el tope duro en el otro es lo que hace APG para
|
|
291
|
+
* grillas, y es lo que deja claro dónde termina la paleta.
|
|
292
|
+
*/
|
|
293
|
+
private verticalNeighbor;
|
|
294
|
+
private handleGridKeyDown;
|
|
295
|
+
/**
|
|
296
|
+
* El área saturación×brillo.
|
|
297
|
+
*
|
|
298
|
+
* Es un `role="group"` con UN `<input type="range">` invisible por eje —el
|
|
299
|
+
* modelo de React Aria—, en vez de un `role="slider"` 2D a mano: así el eje
|
|
300
|
+
* lo maneja un control nativo (teclado, repetición de tecla, anuncio del
|
|
301
|
+
* lector de pantalla) y sólo el arrastre queda de nuestro lado.
|
|
302
|
+
*
|
|
303
|
+
* El matiz viaja al CSS por custom property: el gradiente es CSS puro, sin
|
|
304
|
+
* canvas y sin un hex literal en la hoja de estilos.
|
|
305
|
+
*/
|
|
306
|
+
private renderArea;
|
|
307
|
+
private renderHue;
|
|
308
|
+
private renderSwatches;
|
|
62
309
|
private get statusIcon();
|
|
310
|
+
/**
|
|
311
|
+
* Lo que se puede TIPEAR en el campo: dígitos hex, hasta 6. El 7º caracter y
|
|
312
|
+
* el `#` no entran, y con 8 dígitos (hex con alpha) se queda con los 6 de
|
|
313
|
+
* color — este picker no maneja alpha.
|
|
314
|
+
*/
|
|
315
|
+
private escapeHex;
|
|
316
|
+
/** `F00` → `#FF0000`: lo emitido es SIEMPRE de 6 dígitos. */
|
|
317
|
+
private expandHex;
|
|
318
|
+
/**
|
|
319
|
+
* Siembra el campo desde el valor REAL y cierra cualquier edición abierta.
|
|
320
|
+
*
|
|
321
|
+
* Con `value` vacío queda vacío: el estado interno arranca en EMPTY_HSV (rojo
|
|
322
|
+
* puro) para que el área tenga de dónde partir, pero eso es un seed de
|
|
323
|
+
* DISPLAY del área — espejarlo pondría `FF0000` escrito en un campo que el
|
|
324
|
+
* usuario nunca tocó, anunciando un color que nadie eligió.
|
|
325
|
+
*/
|
|
326
|
+
private resetHexDraft;
|
|
327
|
+
/**
|
|
328
|
+
* Espeja el valor real en el campo, salvo mientras el usuario lo está
|
|
329
|
+
* tipeando.
|
|
330
|
+
*
|
|
331
|
+
* Sólo espeja lo que YA es un color (o el vacío, que limpia). `escapeHex`
|
|
332
|
+
* sobre cualquier otra cosa fabrica un hex verosímil: un host que pase
|
|
333
|
+
* `rebeccapurple` o `var(--co-color-primary-verde)` vería el campo mostrando
|
|
334
|
+
* `EBECCA` / `ACCAED`. Es exactamente la falla que el pegado cancela unas
|
|
335
|
+
* líneas más abajo, y entraba igual por la puerta de la prop. Los frames de
|
|
336
|
+
* arrastre siempre escriben un hex de 6, así que no se pierde nada legítimo.
|
|
337
|
+
*/
|
|
338
|
+
private syncHexDraft;
|
|
339
|
+
/**
|
|
340
|
+
* Tipear PREVISUALIZA (`coInput`), no commitea.
|
|
341
|
+
*
|
|
342
|
+
* El campo es el único control del panel donde el gesto se estira en el
|
|
343
|
+
* tiempo, y tratarlo como commit por caracter tiene un costo que no se ve
|
|
344
|
+
* hasta que se mira de cerca: corregir un typo de `0263EB` a `026` emitiría
|
|
345
|
+
* `coChange('#002266')` — el usuario está BORRANDO y el componente commitea
|
|
346
|
+
* un color nuevo. Con el preview, el campo queda igual que sus tres hermanos
|
|
347
|
+
* (área, matiz, swatches): en vivo mientras dura el gesto, commit al
|
|
348
|
+
* soltarlo. El `#002266` que pinta al pasar por `026` es un frame intermedio
|
|
349
|
+
* de preview, ni más ni menos que cualquier frame de arrastre.
|
|
350
|
+
*/
|
|
351
|
+
private handleHexInput;
|
|
352
|
+
/**
|
|
353
|
+
* Fin del gesto del campo: blur, Enter, o el cierre del panel.
|
|
354
|
+
*
|
|
355
|
+
* Commitea SIEMPRE que haya un color tipeado, sin comparar contra `value`
|
|
356
|
+
* —que a esta altura ya vale el color previsualizado, así que "commitear si
|
|
357
|
+
* cambió" no dispararía nunca—. Es el precedente del `pointerup` del área: el
|
|
358
|
+
* fin de gesto commitea, y si el usuario retipeó el mismo color, el `coChange`
|
|
359
|
+
* redundante es el precio.
|
|
360
|
+
*
|
|
361
|
+
* ⚠️ Consecuencia documentada de esa regla: tipear un hex válido y después
|
|
362
|
+
* clickear un swatch emite DOS `coChange` — el blur commitea el color
|
|
363
|
+
* tipeado, y el swatch el suyo. Es el precio explícito de que el fin de gesto
|
|
364
|
+
* no adivine intenciones, no un bug.
|
|
365
|
+
*
|
|
366
|
+
* Y si no hay nada que commitear, se DESHACE el preview vivo. Eso cubre dos
|
|
367
|
+
* casos con el mismo movimiento: el texto que quedó a medias (`12`), y el
|
|
368
|
+
* arrastre abortado —que emitía `coInput`, escribía `value` y no commiteaba
|
|
369
|
+
* nunca, dejando al picker mostrando un color que el host jamás recibió—.
|
|
370
|
+
*/
|
|
371
|
+
private finishHexEdit;
|
|
372
|
+
/** Vuelve al último color commiteado y retira el preview que quedó colgado. */
|
|
373
|
+
private revertToCommitted;
|
|
374
|
+
private handleHexBlur;
|
|
375
|
+
/** Enter cierra el gesto sin salir del campo (y no submitea ningún form). */
|
|
376
|
+
private handleHexKeyDown;
|
|
377
|
+
/**
|
|
378
|
+
* Sin interceptar el pegado, el escape convierte `rgb(2, 99, 235)` en
|
|
379
|
+
* `299235` — basura silenciosa que ADEMÁS commitea sola, porque el `input` que
|
|
380
|
+
* sigue al pegado nativo ve 6 dígitos válidos.
|
|
381
|
+
*
|
|
382
|
+
* `parseCssColor` no cubre nombres CSS (ver color.ts): `rebeccapurple` escapa
|
|
383
|
+
* a `EBECCA`, un hex perfectamente válido que nadie eligió. Por eso lo que no
|
|
384
|
+
* es un color se CANCELA en vez de dejarse caer al escape; lo único que pasa
|
|
385
|
+
* de largo es un hex o el principio de uno, para poder pegar `02` y seguir
|
|
386
|
+
* tipeando.
|
|
387
|
+
*/
|
|
388
|
+
private handleHexPaste;
|
|
389
|
+
/**
|
|
390
|
+
* Chrome/Edge 95+ solamente (MDN, 2026-09-02): Firefox, Safari y Chrome
|
|
391
|
+
* Android no la tienen. Se resuelve en el render, no en una prop: si no está,
|
|
392
|
+
* el botón no existe. Un control deshabilitado sin explicar es peor que su
|
|
393
|
+
* ausencia — y una prop obligaría a cada host a repetir la detección.
|
|
394
|
+
*
|
|
395
|
+
* El `typeof window` es por el build de hydrate, donde no hay `window` y el
|
|
396
|
+
* `in` tiraría.
|
|
397
|
+
*/
|
|
398
|
+
private get hasEyeDropper();
|
|
399
|
+
/**
|
|
400
|
+
* El cuentagotas entrega un color COMPLETO en un acto atómico, igual que un
|
|
401
|
+
* swatch o un pegado: entra por `commit` —no se duplica ni la asignación ni
|
|
402
|
+
* el emit— y se normaliza con `parseCssColor`, porque la API devuelve el hex
|
|
403
|
+
* en minúscula (`#ff0000`) y el resto del picker trabaja en mayúscula.
|
|
404
|
+
*
|
|
405
|
+
* ⚠️ `finishHexEdit` va PRIMERO y SÍNCRONO, antes del `await`: clickear otro
|
|
406
|
+
* control del panel es el fin del gesto del campo hex, y ese gesto puede
|
|
407
|
+
* durar lo que el usuario tarde en recorrer la pantalla. Sin esto, un texto a
|
|
408
|
+
* medias (`12`) se queda escrito y `hexEditing` colgado durante todo el
|
|
409
|
+
* cuentagotas, y si el usuario CANCELA nadie lo deshace: el preview vivo
|
|
410
|
+
* sobrevive a un gesto que no commiteó nada. Es el mismo cierre que hace el
|
|
411
|
+
* pegado, por la misma razón. Correrlo dos veces es inocuo (el blur real del
|
|
412
|
+
* navegador lo dispara también): la segunda pasada ve `hexEditing` en false y
|
|
413
|
+
* `value === committed`, y sale sin emitir.
|
|
414
|
+
*/
|
|
415
|
+
private handleEyeDropper;
|
|
416
|
+
private renderHexRow;
|
|
63
417
|
private handleCopy;
|
|
64
418
|
render(): any;
|
|
65
419
|
}
|
|
@@ -1,10 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lo que acepta el HOST por la prop `presets`.
|
|
3
|
+
*
|
|
4
|
+
* `key` es OPCIONAL a propósito: este tipo es **superficie pública** — se
|
|
5
|
+
* re-exporta desde `components.d.ts` y tipa la prop `presets` del componente.
|
|
6
|
+
* Volverla requerida rompe la compilación de todo consumidor que hoy pasa
|
|
7
|
+
* `[{ name, value }]`, que es un breaking change de tipo fuera del spec.
|
|
8
|
+
*/
|
|
1
9
|
export interface ColorPreset {
|
|
10
|
+
/** Clave estable para traducir el nombre en el host (form-vue traduce por acá). */
|
|
11
|
+
key?: string;
|
|
12
|
+
name: string;
|
|
13
|
+
value: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Lo que circula puertas adentro, ya normalizado: acá la `key` SÍ está
|
|
17
|
+
* garantizada. `resolvePreset` la rellena cuando el host no la trae.
|
|
18
|
+
*
|
|
19
|
+
* Tipo INTERNO: no aparece en `components.d.ts`, así que agregarle campos no
|
|
20
|
+
* es un breaking change para ningún host (el público es `ColorPreset`).
|
|
21
|
+
*/
|
|
22
|
+
export interface ResolvedColorPreset {
|
|
23
|
+
key: string;
|
|
2
24
|
name: string;
|
|
3
25
|
value: string;
|
|
26
|
+
/**
|
|
27
|
+
* `true` cuando la `key` NO la declaró el host y se la inventamos nosotros.
|
|
28
|
+
*
|
|
29
|
+
* Es la diferencia entre "este host usa nuestra paleta" y "este host escribió
|
|
30
|
+
* colores sueltos". Importa porque DOCE de las diecisiete keys son nombres de
|
|
31
|
+
* color CSS (`black`, `green`, `red`…): sin la marca, un host que pasa
|
|
32
|
+
* `['black','green','red']` —la forma más fácil de escribir presets a mano—
|
|
33
|
+
* quedaría con dos grupos rotulados "Neutros"/"Colores de marca" para una
|
|
34
|
+
* paleta que no es la nuestra, o sea una frontera inventada para el lector de
|
|
35
|
+
* pantalla. Ausente (no `false`) cuando la key vino declarada, así que los
|
|
36
|
+
* literales de `DEFAULT_PRESETS` no tienen que repetirla.
|
|
37
|
+
*/
|
|
38
|
+
synthesizedKey?: true;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Normaliza lo que llega por la prop `presets` a la forma interna, dejando
|
|
42
|
+
* anotado si la `key` vino declarada o se sintetizó.
|
|
43
|
+
*
|
|
44
|
+
* `ColorPreset.key` es OPCIONAL porque el tipo es superficie pública (lo
|
|
45
|
+
* re-exporta `components.d.ts`): exigirla rompería a todo host que hoy pasa
|
|
46
|
+
* `[{ name, value }]`. Puertas adentro la damos por garantizada, así que se
|
|
47
|
+
* rellena acá. Un hex suelto no tiene identidad traducible: su propio hex
|
|
48
|
+
* ES su identidad.
|
|
49
|
+
*
|
|
50
|
+
* Vive acá y no en el componente porque es el ÚNICO lugar que sintetiza keys, y
|
|
51
|
+
* `splitPaletteGroups` —su consumidor— depende de esa marca: separarlos deja el
|
|
52
|
+
* invariante a un import de distancia de romperse en silencio.
|
|
53
|
+
*/
|
|
54
|
+
export declare const resolvePreset: (p: ColorPreset | string) => ResolvedColorPreset;
|
|
55
|
+
/**
|
|
56
|
+
* Paleta por default: 5 neutros + los 12 de marca (base.json).
|
|
57
|
+
* Los nombres vienen en inglés; el consumidor los traduce POR `key` — nunca
|
|
58
|
+
* duplicando la lista de valores, que fue lo que hizo derivar a FieldColor.vue.
|
|
59
|
+
*
|
|
60
|
+
* Sin blanco puro a propósito (spec §2): una etiqueta blanca desaparece sobre
|
|
61
|
+
* el fondo blanco. Los encabezados de documento lo pasan por la prop `presets`.
|
|
62
|
+
*
|
|
63
|
+
* Los hex son literales porque son DATA del picker, no estilo.
|
|
64
|
+
*/
|
|
65
|
+
export declare const DEFAULT_PRESETS: ResolvedColorPreset[];
|
|
66
|
+
/**
|
|
67
|
+
* Los 5 primeros son neutros. Frontera ÚNICA: la grilla agrupa por acá y el
|
|
68
|
+
* seed sortea del resto. No repetir el `5` a mano en ningún otro lado.
|
|
69
|
+
*/
|
|
70
|
+
export declare const NEUTRAL_PRESET_KEYS: readonly ["black", "gray", "silver", "smoke", "bone"];
|
|
71
|
+
/**
|
|
72
|
+
* Sólo las de marca, derivadas de la frontera. El seed aleatorio al CREAR un
|
|
73
|
+
* registro sortea de acá: nacer con una etiqueta gris es peor que el estado
|
|
74
|
+
* anterior.
|
|
75
|
+
*/
|
|
76
|
+
export declare const BRAND_PRESET_KEYS: string[];
|
|
77
|
+
/** Los dos lados de la paleta, en el orden en que se renderizan. */
|
|
78
|
+
export interface PaletteSplit {
|
|
79
|
+
neutrals: ResolvedColorPreset[];
|
|
80
|
+
brand: ResolvedColorPreset[];
|
|
4
81
|
}
|
|
5
82
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
83
|
+
* Parte una lista de presets en [neutros, marca], o devuelve `null` si no hay
|
|
84
|
+
* una partición que signifique algo.
|
|
85
|
+
*
|
|
86
|
+
* Se decide por MEMBRESÍA de `key`, nunca por identidad de referencia contra
|
|
87
|
+
* `DEFAULT_PRESETS`. La identidad es frágil por definición —dos arrays con el
|
|
88
|
+
* mismo contenido se comportan distinto— y ya costó un bug real: `FieldColor.vue`
|
|
89
|
+
* re-serializa la paleta para colgarle los nombres traducidos, así que llegaba
|
|
90
|
+
* como un array nuevo, caía en la rama "custom" y los `role="group"` +
|
|
91
|
+
* `aria-label` del spec §4 no se renderizaban NUNCA en la aplicación. La a11y
|
|
92
|
+
* existía sólo en los tests, que sí pasaban la paleta por identidad.
|
|
93
|
+
*
|
|
94
|
+
* Devuelve `null` en tres casos, y los tres terminan en un grupo único SIN
|
|
95
|
+
* rótulo:
|
|
96
|
+
* - alguna `key` la sintetizamos nosotros (`synthesizedKey`): el host no declaró
|
|
97
|
+
* nuestra paleta, y como doce de las keys son nombres de color CSS, mirar sólo
|
|
98
|
+
* el texto haría pasar por paleta nuestra a unos strings sueltos;
|
|
99
|
+
* - alguna `key` declarada es desconocida (paleta custom del host): no hay nada
|
|
100
|
+
* semántico que declarar;
|
|
101
|
+
* - falta alguno de los dos lados: un grupo solo no particiona nada, así que
|
|
102
|
+
* rotularlo anunciaría al lector de pantalla una frontera que no existe.
|
|
103
|
+
*
|
|
104
|
+
* ORDEN (decisión explícita): cuando la paleta se reconoce, se re-emite en orden
|
|
105
|
+
* canónico —neutros primero, marca después—, conservando el orden relativo del
|
|
106
|
+
* host DENTRO de cada lado. No es evitable: dos grupos contiguos no se pueden
|
|
107
|
+
* renderizar respetando un orden intercalado. Entre perder la agrupación
|
|
108
|
+
* semántica (spec §4) y perder un orden que el host no pudo curar sin adoptar
|
|
109
|
+
* antes nuestro vocabulario de keys, gana la agrupación. `flatPresets` y
|
|
110
|
+
* `focusedIndex` derivan de `presetGroups`, así que las flechas recorren el
|
|
111
|
+
* orden RENDERIZADO y no se desincronizan.
|
|
9
112
|
*/
|
|
10
|
-
export declare
|
|
113
|
+
export declare function splitPaletteGroups(presets: ResolvedColorPreset[]): PaletteSplit | null;
|
|
@@ -2,8 +2,10 @@ import { EventEmitter } from '../../stencil-public-runtime';
|
|
|
2
2
|
import type { Placement } from '../../utils/positioning';
|
|
3
3
|
/**
|
|
4
4
|
* Date + TIME picker: one field, one popover. Composes `co-popover` (floating
|
|
5
|
-
* panel, outside-click) + `co-calendar` (day grid) + a
|
|
6
|
-
*
|
|
5
|
+
* panel, outside-click) + `co-calendar` (day grid) + a side panel with
|
|
6
|
+
* shortcuts (`presetIds`: morning/noon/afternoon/endOfDay/now) and a segmented
|
|
7
|
+
* `co-time-field` (hh:mm, PageUp/PageDown stepping by `stepMinutes`) for the
|
|
8
|
+
* exact hour, plus a "Listo" button.
|
|
7
9
|
*
|
|
8
10
|
* VALUE CONTRACT — the committed `value` is a UTC ISO instant
|
|
9
11
|
* ("2026-07-25T21:30:00.000Z"), never a wall-clock string. The wall clock the
|
|
@@ -16,16 +18,26 @@ import type { Placement } from '../../utils/positioning';
|
|
|
16
18
|
* would shift the day west of UTC).
|
|
17
19
|
*
|
|
18
20
|
* INTERACTION (Google):
|
|
19
|
-
* - Click the field → opens. Picking a DAY commits
|
|
20
|
-
*
|
|
21
|
-
*
|
|
21
|
+
* - Click the field → opens. Picking a DAY commits (with the current DRAFT
|
|
22
|
+
* hour, not the previously committed one) and keeps the panel open — you
|
|
23
|
+
* almost always want to set the hour next.
|
|
24
|
+
* - The exact time is a DRAFT (`draftMinutes`) while `co-time-field` is
|
|
25
|
+
* edited (`coInput`) — editing alone never commits. It only commits (and
|
|
26
|
+
* closes) on: clicking a shortcut, Enter/`coCommit` from the time field,
|
|
27
|
+
* or the "Listo" button.
|
|
28
|
+
* - Outside click — and, on mobile, swiping the bottom sheet down — commits
|
|
29
|
+
* the draft if it changed, then closes: the same "apply on blur" model a
|
|
30
|
+
* text field uses.
|
|
31
|
+
* - Escape is the opposite: an explicit DISCARD. It closes WITHOUT applying
|
|
32
|
+
* the draft and returns focus to the trigger field.
|
|
22
33
|
* - ArrowDown on the field → moves focus into the calendar grid.
|
|
23
|
-
* -
|
|
24
|
-
*
|
|
25
|
-
*
|
|
34
|
+
* - Mobile (viewport ≤ `mobileBreakpoint`) renders the same panel as a
|
|
35
|
+
* bottom sheet (`co-drawer position="bottom"`) instead of the desktop
|
|
36
|
+
* popover; the draft/commit/discard model is identical.
|
|
26
37
|
*
|
|
27
|
-
* Escape is owned here (co-popover `closeOnEscape=false`) so focus can return
|
|
28
|
-
* the field; outside-click
|
|
38
|
+
* Escape is owned here (co-popover `closeOnEscape=false`) so focus can return
|
|
39
|
+
* to the field; outside-click/sheet-dismiss stay with co-popover/co-drawer and
|
|
40
|
+
* are handled by `closeApplyingDraft` (see its doc for the Escape asymmetry).
|
|
29
41
|
*
|
|
30
42
|
* @part field - The bordered trigger row
|
|
31
43
|
* @part label - The field label
|
|
@@ -39,8 +51,10 @@ export declare class CoDateTimePicker {
|
|
|
39
51
|
value: string | null;
|
|
40
52
|
/** IANA zone the wall clock is rendered in. Defaults to the browser zone. */
|
|
41
53
|
timeZone?: string;
|
|
42
|
-
/**
|
|
54
|
+
/** Paso de PageUp/PageDown del campo de hora (antes: paso de la lista). */
|
|
43
55
|
stepMinutes: number;
|
|
56
|
+
/** Atajos del panel, en orden. Ids del catálogo: morning|noon|afternoon|endOfDay|now. */
|
|
57
|
+
presetIds: string[] | string;
|
|
44
58
|
/** 12-hour clock (Google style). `false` renders a 24h clock. */
|
|
45
59
|
hour12: boolean;
|
|
46
60
|
/** Earliest selectable day. Date-only "YYYY-MM-DD" or an instant. */
|
|
@@ -77,8 +91,8 @@ export declare class CoDateTimePicker {
|
|
|
77
91
|
mobileBreakpoint: number;
|
|
78
92
|
/** True when the viewport is at/under `mobileBreakpoint`. */
|
|
79
93
|
isMobile: boolean;
|
|
80
|
-
/** Minutes-of-day
|
|
81
|
-
|
|
94
|
+
/** Minutes-of-day drafted in the exact-time field (co-time-field), not yet committed. */
|
|
95
|
+
draftMinutes: number;
|
|
82
96
|
/** Committed instant (UTC ISO) or null. */
|
|
83
97
|
coChange: EventEmitter<string | null>;
|
|
84
98
|
coClear: EventEmitter<void>;
|
|
@@ -89,15 +103,13 @@ export declare class CoDateTimePicker {
|
|
|
89
103
|
private popoverEl?;
|
|
90
104
|
private calendarEl?;
|
|
91
105
|
private triggerBtn?;
|
|
92
|
-
private listEl?;
|
|
93
106
|
private pendingFocusGrid;
|
|
94
107
|
private pendingFocusTrigger;
|
|
95
|
-
/** 'center' when the list is (re)opened, 'nearest' while arrowing through it. */
|
|
96
|
-
private pendingScroll;
|
|
97
108
|
private mql?;
|
|
98
109
|
private mqlHandler;
|
|
99
110
|
connectedCallback(): void;
|
|
100
111
|
disconnectedCallback(): void;
|
|
112
|
+
componentWillLoad(): void;
|
|
101
113
|
onOpenChange(next: boolean): void;
|
|
102
114
|
private get zone();
|
|
103
115
|
private get isInvalid();
|
|
@@ -112,17 +124,27 @@ export declare class CoDateTimePicker {
|
|
|
112
124
|
private onClearClick;
|
|
113
125
|
private onCalendarSelect;
|
|
114
126
|
private pickTime;
|
|
115
|
-
private
|
|
127
|
+
private static readonly PRESET_CATALOG;
|
|
128
|
+
private get presets();
|
|
129
|
+
private onTimeFieldInput;
|
|
130
|
+
private onTimeFieldCommit;
|
|
116
131
|
private onPopoverOpen;
|
|
132
|
+
/**
|
|
133
|
+
* Closes applying whatever is drafted (R7) — outside click / drawer
|
|
134
|
+
* swipe-down behave like a field's blur: what you typed sticks. This is
|
|
135
|
+
* the ONLY path that commits the draft on close; Escape is the opposite —
|
|
136
|
+
* an explicit discard — and it does NOT go through here: `onRootKeyDown`
|
|
137
|
+
* flips `this.open` to `false` via `setOpen()` FIRST, so by the time the
|
|
138
|
+
* real co-popover/co-drawer finish closing and bubble their own `coClose`
|
|
139
|
+
* back to `onPopoverClose`/this drawer's `onCoClose`, the guard below
|
|
140
|
+
* already reads `false` and no-ops — the draft is discarded, not applied.
|
|
141
|
+
*/
|
|
142
|
+
private closeApplyingDraft;
|
|
117
143
|
private onPopoverClose;
|
|
118
144
|
private onRootKeyDown;
|
|
119
145
|
private focusGridSoon;
|
|
120
|
-
private scrollActiveIntoView;
|
|
121
146
|
componentDidRender(): void;
|
|
122
147
|
private get step();
|
|
123
|
-
/** Grid of minutes-of-day, plus the committed hour when it falls off-grid
|
|
124
|
-
* (an imported 16:37 meeting must stay visible and selectable). */
|
|
125
|
-
private get options();
|
|
126
148
|
private renderTrigger;
|
|
127
149
|
private renderPanel;
|
|
128
150
|
private renderHelper;
|
|
@@ -71,9 +71,10 @@ export declare class CoDrawer {
|
|
|
71
71
|
private stopPropagation;
|
|
72
72
|
private handleTransitionEnd;
|
|
73
73
|
private asideEl?;
|
|
74
|
-
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
74
|
+
/** Ref del aside — SIEMPRE adjunto (handleTransitionEnd lo necesita como
|
|
75
|
+
* target). Modeless only: además mantiene el aside promovido al top layer
|
|
76
|
+
* para toda su vida (mirrors co-overlay's syncPopover; eviction on
|
|
77
|
+
* disconnect is automatic). */
|
|
77
78
|
private promoteModeless;
|
|
78
79
|
componentDidLoad(): void;
|
|
79
80
|
render(): any;
|