@prolibu-suite/cobalt-core 0.10.0 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. package/custom-elements.json +481 -35
  2. package/dist/cjs/co-accordion.cjs.entry.js +33 -4
  3. package/dist/cjs/co-action-bar.cjs.entry.js +1 -1
  4. package/dist/cjs/co-audio-player.cjs.entry.js +82 -12
  5. package/dist/cjs/co-avatar.cjs.entry.js +72 -0
  6. package/dist/cjs/co-button.cjs.entry.js +1 -1
  7. package/dist/cjs/co-calendar_3.cjs.entry.js +7 -3
  8. package/dist/cjs/co-checkbox.cjs.entry.js +3 -3
  9. package/dist/cjs/co-chip_2.cjs.entry.js +68 -14
  10. package/dist/cjs/co-color-picker.cjs.entry.js +40 -10
  11. package/dist/cjs/co-column-picker.cjs.entry.js +1 -1
  12. package/dist/cjs/co-combobox.cjs.entry.js +1 -1
  13. package/dist/cjs/co-command-search.cjs.entry.js +1 -1
  14. package/dist/cjs/co-data-table.cjs.entry.js +82 -4
  15. package/dist/cjs/co-date-range-picker.cjs.entry.js +3 -1
  16. package/dist/cjs/co-emoji-picker.cjs.entry.js +1 -1
  17. package/dist/cjs/co-file-type-tile.cjs.entry.js +23 -7
  18. package/dist/cjs/co-input.cjs.entry.js +6 -2
  19. package/dist/cjs/co-menu-item.cjs.entry.js +1 -1
  20. package/dist/cjs/co-modal.cjs.entry.js +7 -3
  21. package/dist/cjs/co-navbar.cjs.entry.js +2 -2
  22. package/dist/cjs/co-number-field.cjs.entry.js +3 -3
  23. package/dist/cjs/co-overlay.cjs.entry.js +1 -1
  24. package/dist/cjs/co-page-header.cjs.entry.js +1 -1
  25. package/dist/cjs/co-phone-field.cjs.entry.js +5 -5
  26. package/dist/cjs/co-progress-bar.cjs.entry.js +2 -2
  27. package/dist/cjs/co-progress-circle.cjs.entry.js +2 -2
  28. package/dist/cjs/co-provider-logo_2.cjs.entry.js +1 -1
  29. package/dist/cjs/co-radio.cjs.entry.js +3 -3
  30. package/dist/cjs/co-rating.cjs.entry.js +3 -3
  31. package/dist/cjs/co-ref-field.cjs.entry.js +100 -9
  32. package/dist/cjs/co-rich-text-editor.cjs.entry.js +30 -10
  33. package/dist/cjs/co-rich-text-toolbar.cjs.entry.js +5 -2
  34. package/dist/cjs/co-rich-text-viewer.cjs.entry.js +19 -3
  35. package/dist/cjs/co-row.cjs.entry.js +2 -2
  36. package/dist/cjs/co-select.cjs.entry.js +8 -8
  37. package/dist/cjs/co-separator.cjs.entry.js +1 -1
  38. package/dist/cjs/co-sidebar-nav.cjs.entry.js +1 -1
  39. package/dist/cjs/co-sidebar.cjs.entry.js +2 -2
  40. package/dist/cjs/co-slider.cjs.entry.js +2 -2
  41. package/dist/cjs/co-switch.cjs.entry.js +3 -3
  42. package/dist/cjs/co-tab-group.cjs.entry.js +2 -2
  43. package/dist/cjs/co-tab.cjs.entry.js +2 -2
  44. package/dist/cjs/co-tags-field.cjs.entry.js +5 -5
  45. package/dist/cjs/co-textarea.cjs.entry.js +4 -4
  46. package/dist/cjs/co-time-field.cjs.entry.js +1 -1
  47. package/dist/cjs/co-toggle-button-group.cjs.entry.js +3 -3
  48. package/dist/cjs/co-toggle-button.cjs.entry.js +3 -3
  49. package/dist/cjs/{co-avatar_2.cjs.entry.js → co-tooltip.cjs.entry.js} +2 -70
  50. package/dist/cjs/co-video.cjs.entry.js +2 -2
  51. package/dist/cjs/cobalt.cjs.js +1 -1
  52. package/dist/cjs/{index-BYwrR87Z.js → index-2kMmd5-a.js} +6717 -6654
  53. package/dist/cjs/index-MDAnKsze.js +16 -12
  54. package/dist/cjs/loader.cjs.js +1 -1
  55. package/dist/cjs/{normalizeText-B-v-XPKf.js → normalizeText-D9rlJWZa.js} +29 -18
  56. package/dist/cjs/{toolbar-config-BSGas-Wl.js → toolbar-config-CYACt9hh.js} +13 -1
  57. package/dist/cobalt/cobalt.esm.js +1 -1
  58. package/dist/cobalt/{p-82266f11.entry.js → p-000a15b8.entry.js} +1 -1
  59. package/dist/cobalt/{p-e01f9b9a.entry.js → p-0c004735.entry.js} +1 -1
  60. package/dist/cobalt/{p-16954cea.entry.js → p-11c5ce78.entry.js} +1 -1
  61. package/dist/cobalt/{p-c465d619.entry.js → p-1861fe41.entry.js} +1 -1
  62. package/dist/cobalt/p-1cc818ca.entry.js +1 -0
  63. package/dist/cobalt/p-216a63ee.entry.js +1 -0
  64. package/dist/cobalt/p-24196410.entry.js +1 -0
  65. package/dist/cobalt/{p-4d897896.entry.js → p-28764b8e.entry.js} +1 -1
  66. package/dist/cobalt/{p-1a589c8e.entry.js → p-292b0389.entry.js} +1 -1
  67. package/dist/cobalt/{p-73c6d735.entry.js → p-2a30c143.entry.js} +1 -1
  68. package/dist/cobalt/{p-e8a4e6b0.entry.js → p-2c9dba2f.entry.js} +1 -1
  69. package/dist/cobalt/{p-83ea631d.entry.js → p-39a50e7f.entry.js} +1 -1
  70. package/dist/cobalt/p-39dc4ec8.entry.js +1 -0
  71. package/dist/cobalt/{p-325b91b6.entry.js → p-3d31c575.entry.js} +1 -1
  72. package/dist/cobalt/p-416795f5.entry.js +1 -0
  73. package/dist/cobalt/{p-37f5036b.entry.js → p-49834b8e.entry.js} +1 -1
  74. package/dist/cobalt/{p-54c987d7.entry.js → p-5a3e4c81.entry.js} +1 -1
  75. package/dist/cobalt/p-5c756787.entry.js +1 -0
  76. package/dist/cobalt/{p-27a7e549.entry.js → p-67f3b9d6.entry.js} +1 -1
  77. package/dist/cobalt/{p-bd683db3.entry.js → p-6a4f3179.entry.js} +1 -1
  78. package/dist/cobalt/{p-b565104d.entry.js → p-6dd220e0.entry.js} +1 -1
  79. package/dist/cobalt/{p-eb063cc0.entry.js → p-71cbc53c.entry.js} +1 -1
  80. package/dist/cobalt/p-72e52af7.entry.js +1 -0
  81. package/dist/cobalt/{p-50bcc76f.entry.js → p-7b5c555c.entry.js} +1 -1
  82. package/dist/cobalt/{p-10b82207.entry.js → p-8471abe2.entry.js} +1 -1
  83. package/dist/cobalt/{p-fe7e8813.entry.js → p-8530ad16.entry.js} +1 -1
  84. package/dist/cobalt/p-8a74bf7d.entry.js +1 -0
  85. package/dist/cobalt/{p-ea20f048.entry.js → p-8ebc0c12.entry.js} +1 -1
  86. package/dist/cobalt/p-8f2199ff.entry.js +1 -0
  87. package/dist/cobalt/p-9246e09c.entry.js +1 -0
  88. package/dist/cobalt/p-99a655f6.entry.js +1 -0
  89. package/dist/cobalt/{p-DOL2zACE.js → p-BAYo-RBt.js} +1 -1
  90. package/dist/cobalt/p-Ba_v-MzM.js +1 -0
  91. package/dist/cobalt/{p-Bryf3-Js.js → p-CJW9H3Gi.js} +1 -1
  92. package/dist/cobalt/p-a1b422ca.entry.js +1 -0
  93. package/dist/cobalt/p-a2462d7a.entry.js +1 -0
  94. package/dist/cobalt/p-ade07307.entry.js +1 -0
  95. package/dist/cobalt/{p-5298c030.entry.js → p-b437eff6.entry.js} +1 -1
  96. package/dist/cobalt/p-b698188c.entry.js +1 -0
  97. package/dist/cobalt/{p-6bf6bc3e.entry.js → p-b821d9de.entry.js} +1 -1
  98. package/dist/cobalt/p-bde32f8b.entry.js +1 -0
  99. package/dist/cobalt/{p-92b092db.entry.js → p-be34e447.entry.js} +1 -1
  100. package/dist/cobalt/{p-ad33c40e.entry.js → p-c30b4cb5.entry.js} +1 -1
  101. package/dist/cobalt/p-c7d7d7f7.entry.js +1 -0
  102. package/dist/cobalt/{p-aae86f96.entry.js → p-d0b2c418.entry.js} +1 -1
  103. package/dist/cobalt/p-d375014b.entry.js +1 -0
  104. package/dist/cobalt/p-eadfd661.entry.js +1 -0
  105. package/dist/cobalt/p-ee149fd2.entry.js +1 -0
  106. package/dist/cobalt/p-ef301976.entry.js +1 -0
  107. package/dist/cobalt/{p-fd150cc6.entry.js → p-f7eb1a40.entry.js} +1 -1
  108. package/dist/cobalt/p-f9a7b7c6.entry.js +1 -0
  109. package/dist/cobalt/{p-f68dd124.entry.js → p-fb2d1144.entry.js} +1 -1
  110. package/dist/collection/components/co-accordion/co-accordion.css +11 -4
  111. package/dist/collection/components/co-accordion/co-accordion.js +37 -6
  112. package/dist/collection/components/co-action-bar/co-action-bar.css +9 -2
  113. package/dist/collection/components/co-audio-player/co-audio-player.js +138 -12
  114. package/dist/collection/components/co-autocomplete/co-autocomplete.js +1 -1
  115. package/dist/collection/components/co-avatar/co-avatar.css +22 -1
  116. package/dist/collection/components/co-avatar-group/co-avatar-group.js +1 -1
  117. package/dist/collection/components/co-button/co-button.css +15 -3
  118. package/dist/collection/components/co-calendar/co-calendar.css +10 -4
  119. package/dist/collection/components/co-calendar/co-calendar.js +6 -2
  120. package/dist/collection/components/co-checkbox/co-checkbox.js +22 -3
  121. package/dist/collection/components/co-checkbox-group/co-checkbox-group.js +1 -1
  122. package/dist/collection/components/co-color-picker/co-color-picker.js +40 -10
  123. package/dist/collection/components/co-combobox/co-combobox.js +1 -1
  124. package/dist/collection/components/co-command-search/co-command-search.js +1 -1
  125. package/dist/collection/components/co-data-table/co-data-table.css +63 -2
  126. package/dist/collection/components/co-data-table/co-data-table.js +59 -4
  127. package/dist/collection/components/co-data-table/headerTruncationLogic.js +34 -0
  128. package/dist/collection/components/co-date-range-picker/co-date-range-picker.css +13 -0
  129. package/dist/collection/components/co-date-range-picker/co-date-range-picker.js +4 -2
  130. package/dist/collection/components/co-file-type-tile/co-file-type-tile.js +4 -43
  131. package/dist/collection/components/co-file-type-tile/co-file-type-tile.utils.js +55 -0
  132. package/dist/collection/components/co-input/co-input.js +17 -5
  133. package/dist/collection/components/co-menu-item/co-menu-item.css +9 -0
  134. package/dist/collection/components/co-modal/co-modal.css +6 -0
  135. package/dist/collection/components/co-modal/co-modal.js +33 -2
  136. package/dist/collection/components/co-navbar/co-navbar.js +2 -2
  137. package/dist/collection/components/co-number-field/co-number-field.js +3 -3
  138. package/dist/collection/components/co-option-list/co-option-list.js +38 -7
  139. package/dist/collection/components/co-option-list/optionListLogic.js +31 -8
  140. package/dist/collection/components/co-overlay/co-overlay.js +1 -1
  141. package/dist/collection/components/co-page-header/co-page-header.js +1 -1
  142. package/dist/collection/components/co-phone-field/co-phone-field.js +5 -5
  143. package/dist/collection/components/co-popover/co-popover.js +1 -1
  144. package/dist/collection/components/co-progress-bar/co-progress-bar.js +2 -2
  145. package/dist/collection/components/co-progress-circle/co-progress-circle.js +2 -2
  146. package/dist/collection/components/co-radio/co-radio.js +3 -3
  147. package/dist/collection/components/co-radio-group/co-radio-group.js +1 -1
  148. package/dist/collection/components/co-rating/co-rating.js +3 -3
  149. package/dist/collection/components/co-ref-field/co-ref-field.css +40 -0
  150. package/dist/collection/components/co-ref-field/co-ref-field.js +207 -11
  151. package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.css +22 -0
  152. package/dist/collection/components/co-rich-text-editor/co-rich-text-editor.js +48 -8
  153. package/dist/collection/components/co-rich-text-toolbar/co-rich-text-toolbar.css +52 -0
  154. package/dist/collection/components/co-rich-text-toolbar/co-rich-text-toolbar.js +25 -2
  155. package/dist/collection/components/co-rich-text-viewer/co-rich-text-viewer.css +5 -0
  156. package/dist/collection/components/co-rich-text-viewer/co-rich-text-viewer.js +17 -1
  157. package/dist/collection/components/co-row/co-row.js +2 -2
  158. package/dist/collection/components/co-segmented-bar/co-segmented-bar.js +1 -1
  159. package/dist/collection/components/co-select/co-select.js +28 -9
  160. package/dist/collection/components/co-separator/co-separator.js +1 -1
  161. package/dist/collection/components/co-sidebar/co-sidebar.js +2 -2
  162. package/dist/collection/components/co-sidebar-nav/co-sidebar-nav.js +1 -1
  163. package/dist/collection/components/co-skeleton/co-skeleton.js +1 -1
  164. package/dist/collection/components/co-slider/co-slider.js +2 -2
  165. package/dist/collection/components/co-switch/co-switch.js +3 -3
  166. package/dist/collection/components/co-tab/co-tab.js +2 -2
  167. package/dist/collection/components/co-tab-group/co-tab-group.js +2 -2
  168. package/dist/collection/components/co-tags-field/co-tags-field.js +5 -5
  169. package/dist/collection/components/co-textarea/co-textarea.js +4 -4
  170. package/dist/collection/components/co-time-field/co-time-field.js +1 -1
  171. package/dist/collection/components/co-toast/co-toast.js +2 -2
  172. package/dist/collection/components/co-toggle-button/co-toggle-button.css +6 -5
  173. package/dist/collection/components/co-toggle-button/co-toggle-button.js +2 -2
  174. package/dist/collection/components/co-toggle-button-group/co-toggle-button-group.css +9 -5
  175. package/dist/collection/components/co-toggle-button-group/co-toggle-button-group.js +2 -2
  176. package/dist/collection/components/co-tooltip/co-tooltip.js +2 -2
  177. package/dist/collection/components/co-transfer-list/co-transfer-list.js +1 -1
  178. package/dist/collection/components/co-video/co-video.js +2 -2
  179. package/dist/collection/utils/normalizeText.js +43 -0
  180. package/dist/components/co-accordion.js +1 -1
  181. package/dist/components/co-action-bar.js +1 -1
  182. package/dist/components/co-audio-player.js +1 -1
  183. package/dist/components/co-autocomplete.js +1 -1
  184. package/dist/components/co-avatar-group.js +1 -1
  185. package/dist/components/co-avatar.js +1 -1
  186. package/dist/components/co-button.js +1 -1
  187. package/dist/components/co-calendar-month.js +1 -1
  188. package/dist/components/co-calendar-timegrid.js +1 -1
  189. package/dist/components/co-calendar.js +1 -1
  190. package/dist/components/co-checkbox.js +1 -1
  191. package/dist/components/co-color-picker.js +1 -1
  192. package/dist/components/co-column-picker.js +1 -1
  193. package/dist/components/co-combobox.js +1 -1
  194. package/dist/components/co-command-search.js +1 -1
  195. package/dist/components/co-data-table.js +1 -1
  196. package/dist/components/co-date-picker.js +1 -1
  197. package/dist/components/co-date-range-picker.js +1 -1
  198. package/dist/components/co-date-range.js +1 -1
  199. package/dist/components/co-date-time-picker.js +1 -1
  200. package/dist/components/co-drawer.js +1 -1
  201. package/dist/components/co-drive-card.js +1 -1
  202. package/dist/components/co-emoji-picker.js +1 -1
  203. package/dist/components/co-event-calendar.js +1 -1
  204. package/dist/components/co-file-field.js +1 -1
  205. package/dist/components/co-file-type-tile.js +1 -1
  206. package/dist/components/co-input.js +1 -1
  207. package/dist/components/co-lightbox.js +1 -1
  208. package/dist/components/co-list-item.js +1 -1
  209. package/dist/components/co-menu-item.js +1 -1
  210. package/dist/components/co-modal.js +1 -1
  211. package/dist/components/co-navbar.js +1 -1
  212. package/dist/components/co-number-field.js +1 -1
  213. package/dist/components/co-option-list.js +1 -1
  214. package/dist/components/co-overlay.js +1 -1
  215. package/dist/components/co-page-header.js +1 -1
  216. package/dist/components/co-phone-field.js +1 -1
  217. package/dist/components/co-progress-bar.js +1 -1
  218. package/dist/components/co-progress-circle.js +1 -1
  219. package/dist/components/co-radio.js +1 -1
  220. package/dist/components/co-rating.js +1 -1
  221. package/dist/components/co-ref-field.js +1 -1
  222. package/dist/components/co-rich-text-editor.js +1 -1
  223. package/dist/components/co-rich-text-toolbar.js +1 -1
  224. package/dist/components/co-rich-text-viewer.js +1 -1
  225. package/dist/components/co-row.js +1 -1
  226. package/dist/components/co-select.js +1 -1
  227. package/dist/components/co-separator.js +1 -1
  228. package/dist/components/co-sidebar-nav.js +1 -1
  229. package/dist/components/co-sidebar.js +1 -1
  230. package/dist/components/co-skeleton.js +1 -1
  231. package/dist/components/co-slider.js +1 -1
  232. package/dist/components/co-switch.js +1 -1
  233. package/dist/components/co-tab-group.js +1 -1
  234. package/dist/components/co-tab.js +1 -1
  235. package/dist/components/co-tags-field.js +1 -1
  236. package/dist/components/co-textarea.js +1 -1
  237. package/dist/components/co-time-field.js +1 -1
  238. package/dist/components/co-toggle-button-group.js +1 -1
  239. package/dist/components/co-toggle-button.js +1 -1
  240. package/dist/components/co-tooltip.js +1 -1
  241. package/dist/components/co-video.js +1 -1
  242. package/dist/components/{p-CXPRaTuo.js → p-2EOI1nrz.js} +1 -1
  243. package/dist/components/p-7TncUlLN.js +1 -0
  244. package/dist/components/{p-DOL2zACE.js → p-BAYo-RBt.js} +1 -1
  245. package/dist/components/p-Ba_v-MzM.js +1 -0
  246. package/dist/components/p-BhCVadcA.js +1 -0
  247. package/dist/components/p-BrAFTkAn.js +1 -0
  248. package/dist/components/{p-DIo66nBr.js → p-Bsh0JMGf.js} +1 -1
  249. package/dist/components/{p-x4grh-eZ.js → p-CBTGN490.js} +1 -1
  250. package/dist/components/{p-Bryf3-Js.js → p-CJW9H3Gi.js} +1 -1
  251. package/dist/components/p-CWCYYQrF.js +1 -0
  252. package/dist/components/p-D7Lhxz7L.js +1 -0
  253. package/dist/components/{p-BxP8OBw6.js → p-DFlJMEJ-.js} +1 -1
  254. package/dist/components/p-DTPYZwaZ.js +1 -0
  255. package/dist/components/{p-Be_kyNRE.js → p-Dc_Kbari.js} +1 -1
  256. package/dist/components/{p-B1QFLcY9.js → p-Dcg4krSX.js} +1 -1
  257. package/dist/components/p-DrTRB8Ev.js +1 -0
  258. package/dist/components/{p-BBP5__CY.js → p-DvR45CLa.js} +1 -1
  259. package/dist/components/{p-CnX3L8aF.js → p-DxtNejr2.js} +1 -1
  260. package/dist/components/{p-DkDTmHCg.js → p-Nt4JJxbL.js} +1 -1
  261. package/dist/components/{p-Bv6U5y3d.js → p-uxdXViMV.js} +1 -1
  262. package/dist/esm/co-accordion.entry.js +33 -4
  263. package/dist/esm/co-action-bar.entry.js +1 -1
  264. package/dist/esm/co-audio-player.entry.js +82 -12
  265. package/dist/esm/co-avatar.entry.js +70 -0
  266. package/dist/esm/co-button.entry.js +1 -1
  267. package/dist/esm/co-calendar_3.entry.js +7 -3
  268. package/dist/esm/co-checkbox.entry.js +3 -3
  269. package/dist/esm/co-chip_2.entry.js +68 -14
  270. package/dist/esm/co-color-picker.entry.js +40 -10
  271. package/dist/esm/co-column-picker.entry.js +1 -1
  272. package/dist/esm/co-combobox.entry.js +1 -1
  273. package/dist/esm/co-command-search.entry.js +1 -1
  274. package/dist/esm/co-data-table.entry.js +82 -4
  275. package/dist/esm/co-date-range-picker.entry.js +3 -1
  276. package/dist/esm/co-emoji-picker.entry.js +1 -1
  277. package/dist/esm/co-file-type-tile.entry.js +23 -7
  278. package/dist/esm/co-input.entry.js +6 -2
  279. package/dist/esm/co-menu-item.entry.js +1 -1
  280. package/dist/esm/co-modal.entry.js +7 -3
  281. package/dist/esm/co-navbar.entry.js +2 -2
  282. package/dist/esm/co-number-field.entry.js +3 -3
  283. package/dist/esm/co-overlay.entry.js +1 -1
  284. package/dist/esm/co-page-header.entry.js +1 -1
  285. package/dist/esm/co-phone-field.entry.js +5 -5
  286. package/dist/esm/co-progress-bar.entry.js +2 -2
  287. package/dist/esm/co-progress-circle.entry.js +2 -2
  288. package/dist/esm/co-provider-logo_2.entry.js +1 -1
  289. package/dist/esm/co-radio.entry.js +3 -3
  290. package/dist/esm/co-rating.entry.js +3 -3
  291. package/dist/esm/co-ref-field.entry.js +100 -9
  292. package/dist/esm/co-rich-text-editor.entry.js +30 -10
  293. package/dist/esm/co-rich-text-toolbar.entry.js +5 -2
  294. package/dist/esm/co-rich-text-viewer.entry.js +19 -3
  295. package/dist/esm/co-row.entry.js +2 -2
  296. package/dist/esm/co-select.entry.js +8 -8
  297. package/dist/esm/co-separator.entry.js +1 -1
  298. package/dist/esm/co-sidebar-nav.entry.js +1 -1
  299. package/dist/esm/co-sidebar.entry.js +2 -2
  300. package/dist/esm/co-slider.entry.js +2 -2
  301. package/dist/esm/co-switch.entry.js +3 -3
  302. package/dist/esm/co-tab-group.entry.js +2 -2
  303. package/dist/esm/co-tab.entry.js +2 -2
  304. package/dist/esm/co-tags-field.entry.js +5 -5
  305. package/dist/esm/co-textarea.entry.js +4 -4
  306. package/dist/esm/co-time-field.entry.js +1 -1
  307. package/dist/esm/co-toggle-button-group.entry.js +3 -3
  308. package/dist/esm/co-toggle-button.entry.js +3 -3
  309. package/dist/esm/{co-avatar_2.entry.js → co-tooltip.entry.js} +3 -70
  310. package/dist/esm/co-video.entry.js +2 -2
  311. package/dist/esm/cobalt.js +1 -1
  312. package/dist/esm/{index-68iUQp5j.js → index-BBIYyvq-.js} +6717 -6654
  313. package/dist/esm/index-DH5lfRNj.js +16 -12
  314. package/dist/esm/loader.js +1 -1
  315. package/dist/esm/{normalizeText-CQY6Ul7q.js → normalizeText-Ba_v-MzM.js} +29 -18
  316. package/dist/esm/{toolbar-config-DOL2zACE.js → toolbar-config-BAYo-RBt.js} +13 -1
  317. package/dist/types/components/co-accordion/co-accordion.d.ts +17 -2
  318. package/dist/types/components/co-audio-player/co-audio-player.d.ts +25 -0
  319. package/dist/types/components/co-checkbox/co-checkbox.d.ts +4 -0
  320. package/dist/types/components/co-color-picker/co-color-picker.d.ts +4 -2
  321. package/dist/types/components/co-data-table/co-data-table.d.ts +15 -0
  322. package/dist/types/components/co-data-table/headerTruncationLogic.d.ts +24 -0
  323. package/dist/types/components/co-file-type-tile/co-file-type-tile.utils.d.ts +12 -0
  324. package/dist/types/components/co-input/co-input.d.ts +5 -1
  325. package/dist/types/components/co-modal/co-modal.d.ts +10 -0
  326. package/dist/types/components/co-option-list/co-option-list.d.ts +13 -0
  327. package/dist/types/components/co-option-list/optionListLogic.d.ts +23 -6
  328. package/dist/types/components/co-ref-field/co-ref-field.d.ts +38 -0
  329. package/dist/types/components/co-rich-text-editor/co-rich-text-editor.d.ts +7 -0
  330. package/dist/types/components/co-rich-text-toolbar/co-rich-text-toolbar.d.ts +4 -1
  331. package/dist/types/components/co-select/co-select.d.ts +6 -0
  332. package/dist/types/components.d.ts +120 -14
  333. package/dist/types/utils/normalizeText.d.ts +13 -0
  334. package/package.json +2 -2
  335. package/dist/cobalt/p-15d59169.entry.js +0 -1
  336. package/dist/cobalt/p-1788aab5.entry.js +0 -1
  337. package/dist/cobalt/p-20a39218.entry.js +0 -1
  338. package/dist/cobalt/p-3cc3ff93.entry.js +0 -1
  339. package/dist/cobalt/p-4908f33f.entry.js +0 -1
  340. package/dist/cobalt/p-63825d7f.entry.js +0 -1
  341. package/dist/cobalt/p-66b11b38.entry.js +0 -1
  342. package/dist/cobalt/p-6f700f0d.entry.js +0 -1
  343. package/dist/cobalt/p-83a9a05a.entry.js +0 -1
  344. package/dist/cobalt/p-85501c6a.entry.js +0 -1
  345. package/dist/cobalt/p-88195a63.entry.js +0 -1
  346. package/dist/cobalt/p-8fa5dc4a.entry.js +0 -1
  347. package/dist/cobalt/p-CQY6Ul7q.js +0 -1
  348. package/dist/cobalt/p-b0c4fc71.entry.js +0 -1
  349. package/dist/cobalt/p-b1e8d69e.entry.js +0 -1
  350. package/dist/cobalt/p-b48917c9.entry.js +0 -1
  351. package/dist/cobalt/p-c124e82b.entry.js +0 -1
  352. package/dist/cobalt/p-c32c176a.entry.js +0 -1
  353. package/dist/cobalt/p-e48f4e45.entry.js +0 -1
  354. package/dist/cobalt/p-e8a2f993.entry.js +0 -1
  355. package/dist/cobalt/p-eb8691f2.entry.js +0 -1
  356. package/dist/cobalt/p-ef5ca521.entry.js +0 -1
  357. package/dist/components/p-9ceBPSd1.js +0 -1
  358. package/dist/components/p-B2IsXte7.js +0 -1
  359. package/dist/components/p-BsTO1uUA.js +0 -1
  360. package/dist/components/p-CFFDmGPS.js +0 -1
  361. package/dist/components/p-CQY6Ul7q.js +0 -1
  362. package/dist/components/p-Cl3AdEQJ.js +0 -1
  363. package/dist/components/p-HxVRXXXC.js +0 -1
  364. package/dist/components/p-vby0ITbe.js +0 -1
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var index = require('./index-MDAnKsze.js');
4
- var normalizeText = require('./normalizeText-B-v-XPKf.js');
4
+ var normalizeText = require('./normalizeText-D9rlJWZa.js');
5
5
  var overlayScroll = require('./overlayScroll-ifzDNeyb.js');
6
6
  require('./overlayscrollbars-BlBHo2Xx.js');
7
7
 
@@ -121,12 +121,13 @@ function parseValue(raw) {
121
121
  * snapshotDisplay los que la página actual no contiene) + resto en orden de
122
122
  * server; buscando → solo resultados reales, seleccionados primero.
123
123
  *
124
- * Invariante: todo id en `snapshotIds` DEBE tener una entrada correspondiente
125
- * en `snapshotDisplay` (armado por el caller desde selectedItems ∪ items al
126
- * tomar el snapshot). Un id sin display-item asociado se cae silenciosamente
127
- * de la lista en modo idle (el `byId.get(d._id) ?? d` sintetiza desde el
128
- * display-item mismo, pero no hay nada que sintetizar si el id nunca entró a
129
- * snapshotDisplay en primer lugar).
124
+ * El bloque idle se recorre por `snapshotIds` (Set ordenado por selección, igual
125
+ * que `snapshotDisplay`) resolviendo cada id contra la página primero y contra el
126
+ * display después. Así un seleccionado AUSENTE de `snapshotDisplay` pero presente
127
+ * en `items` sigue en la lista: `rest` filtra todo id del snapshot, así que sin
128
+ * esa resolución desaparecía de la lista entera, no sólo del bloque de arriba.
129
+ * Un id que no está en ninguna de las dos fuentes no tiene nada que pintar y se
130
+ * ignora (no hay label que mostrar).
130
131
  */
131
132
  function orderItems(items, snapshotIds, snapshotDisplay, searching) {
132
133
  var _a;
@@ -135,8 +136,12 @@ function orderItems(items, snapshotIds, snapshotDisplay, searching) {
135
136
  const byId = new Map(items.map((i) => [i._id, i]));
136
137
  const selectedBlock = [];
137
138
  if (!searching) {
138
- for (const d of snapshotDisplay)
139
- selectedBlock.push((_a = byId.get(d._id)) !== null && _a !== void 0 ? _a : d);
139
+ const displayById = new Map(snapshotDisplay.map((d) => [d._id, d]));
140
+ for (const id of snapshotIds) {
141
+ const resolved = (_a = byId.get(id)) !== null && _a !== void 0 ? _a : displayById.get(id);
142
+ if (resolved)
143
+ selectedBlock.push(resolved);
144
+ }
140
145
  }
141
146
  else {
142
147
  for (const i of items)
@@ -146,6 +151,24 @@ function orderItems(items, snapshotIds, snapshotDisplay, searching) {
146
151
  const rest = items.filter((i) => !snapshotIds.has(i._id));
147
152
  return [...selectedBlock, ...rest];
148
153
  }
154
+ /**
155
+ * ¿Hay que re-tomar el snapshot selected-first por el cambio del término?
156
+ *
157
+ * Sólo en el flanco "había búsqueda → ya no": volver a la lista completa es un
158
+ * contexto de listado nuevo, y ahí el bloque de arriba tiene que incluir lo que
159
+ * se seleccionó DURANTE la sesión del panel. Sin esto, un panel abierto sin nada
160
+ * seleccionado se quedaba con el snapshot VACÍO para siempre (`orderItems`
161
+ * cortocircuita en `size === 0`): lo elegido mientras se buscaba desaparecía de
162
+ * la lista al limpiar el término, porque el servidor devuelve la página 1 y esos
163
+ * registros casi nunca están ahí. Se leía como "se deselecciona solo".
164
+ *
165
+ * El re-snapshot por SELECCIÓN no pasa por acá: vive en el componente
166
+ * (`@Watch('value')`, selected-first vivo desde 2026-09-14 — marcar sube la fila
167
+ * al instante). Esta función solo decide el flanco del TÉRMINO.
168
+ */
169
+ function shouldResnapshotOnTerm(prevTerm, nextTerm) {
170
+ return !!prevTerm && !nextTerm;
171
+ }
149
172
  /** Aplana a filas de render insertando un header cuando `group` cambia
150
173
  * (groupItems de co-command-search). `index` cuenta solo items. */
151
174
  function buildRows(items) {
@@ -335,10 +358,15 @@ const CoOptionList = class {
335
358
  };
336
359
  this.onSearchInput = (e) => {
337
360
  const v = e.target.value;
361
+ // Al volver a la lista completa el bloque selected-first se rearma con lo que
362
+ // se seleccionó durante la sesión del panel (ver shouldResnapshotOnTerm).
363
+ const resnapshot = shouldResnapshotOnTerm(this.term, v);
338
364
  this.term = v;
339
365
  this.activeIndex = -1;
340
366
  // Resultset nuevo: re-habilita fillViewport aunque venga del mismo largo.
341
367
  this.lastFillLen = -1;
368
+ if (resnapshot)
369
+ this.takeSnapshot();
342
370
  if (this.debounceTimer)
343
371
  clearTimeout(this.debounceTimer);
344
372
  this.debounceTimer = setTimeout(() => this.coSearch.emit(v), this.searchDebounce);
@@ -509,6 +537,27 @@ const CoOptionList = class {
509
537
  this.scrollTop = maxScrollTop;
510
538
  }
511
539
  }
540
+ /**
541
+ * Selected-first VIVO (decisión de producto 2026-09-14, campo Colaboradores):
542
+ * la partición sigue a `value` — marcar un ítem lo sube al bloque de
543
+ * seleccionados al instante y desmarcarlo lo devuelve a su lugar del orden del
544
+ * server. Reemplaza el snapshot congelado al abrir (evitaba saltos, pero se
545
+ * leía como "no pasó nada" al elegir). El reacomodo se anima con el mismo FLIP
546
+ * del reorder: tops capturados ANTES de re-particionar, runFlip corre en
547
+ * componentDidRender. El highlight de teclado se queda sobre el MISMO ítem
548
+ * (Enter sobre una fila la mueve; el índice viejo apuntaría a otra fila).
549
+ * Tras un drop del reorder el host manda el value en el orden del preview:
550
+ * mismo orden → deltas 0 → no-op visual.
551
+ */
552
+ onValueChange() {
553
+ var _a;
554
+ if (!this.selectedFirst)
555
+ return;
556
+ const activeId = this.activeIndex >= 0 ? (_a = this.orderedItems[this.activeIndex]) === null || _a === void 0 ? void 0 : _a._id : undefined;
557
+ this.pendingFlip = { tops: this.captureRowTops(), movedId: '', spring: false };
558
+ this.takeSnapshot();
559
+ this.activeIndex = activeId ? this.orderedItems.findIndex((i) => i._id === activeId) : -1;
560
+ }
512
561
  // ── Métodos públicos ───────────────────────────────────────
513
562
  /** Re-toma el snapshot selected-first. El host la llama al abrir su panel. */
514
563
  async snapshotOrder() {
@@ -897,10 +946,12 @@ const CoOptionList = class {
897
946
  }
898
947
  renderLabelText(label) {
899
948
  const term = this.effectiveHighlightTerm;
900
- const seg = term ? normalizeText.highlightMatch(label, term) : null;
901
- if (!seg)
949
+ // TODAS las ocurrencias (substring-anywhere): "PR" en "Producto (U.D) - PR Completa"
950
+ // marca el "Pr" de Producto Y el "PR" — antes solo la primera.
951
+ const segs = term ? normalizeText.highlightSegments(label, term) : null;
952
+ if (!segs)
902
953
  return label;
903
- return [seg.pre, index.h("span", { class: "co-option-list__match" }, seg.match), seg.post];
954
+ return segs.map((s) => (s.match ? index.h("span", { class: "co-option-list__match" }, s.text) : s.text));
904
955
  }
905
956
  /** Pill junto al label. Con `tooltip` va envuelto en un `co-tooltip` — el
906
957
  * label del badge se abrevia (3 letras en el de workspace) y sin el texto
@@ -940,16 +991,19 @@ const CoOptionList = class {
940
991
  const selectedIds = this.selectedIds;
941
992
  const { hasMore, remaining } = deriveMore(this.parsedItems.length, this.total, this.hasMore);
942
993
  const showClear = !!this.clearOptionLabel && selectedIds.length > 0;
943
- return (index.h("div", { key: 'fc7f56eb7837405c1c3c1addabb9748f4c955fed', class: "co-option-list", onKeyDown: this.onRootKeyDown }, this.searchable && (index.h("div", { key: '44a31021a6cd49ec0ddf169c2cf2a0cdd0088f1d', class: "co-option-list__search", part: "search" }, index.h("co-icon", { key: '4d375787abbc1dd93fda1200a8cfb76928775e6f', name: "magnifying-glass", size: 16 }), index.h("input", { key: 'ffcad867196edd9f8384eda74d215873f2b2f857', class: "co-option-list__search-input", type: "text", placeholder: this.searchPlaceholder, value: this.term, onInput: this.onSearchInput, ref: (el) => (this.searchInputEl = el), role: "combobox", "aria-expanded": "true", "aria-autocomplete": "list" }))), index.h("div", { key: 'a1d5b69d184accaf8ee4ff4b0674823cee4da659', class: "co-option-list__options", part: "options", role: "listbox", "aria-multiselectable": this.multiple ? 'true' : 'false', ref: (el) => (this.optionsEl = el), onScroll: this.onNativeScroll }, index.h("div", { key: '3b6761a9bd95bcdaea14dd13619024841e9b6e22', class: "co-option-list__inner" }, showClear && (index.h("button", { key: '0b9fce9a2439733e5a3bb0d74542eafcbb3754b9', class: "co-option-list__clear-row", type: "button", onClick: () => this.coClearSelection.emit() }, index.h("co-icon", { key: '6db442c304c7d36fa9e41befb78a1ee4ebe8a415', name: "x-circle", size: 14 }), index.h("span", { key: '12d6b290acc9789dea62cfd036f62eae2a28b33d' }, this.clearOptionLabel))), this.loading && items.length === 0 && (index.h("div", { key: 'cc358dc94a3db4208ef85f16f8dce2d0592d4193', class: "co-option-list__loading" }, index.h("co-loader", { key: '9373dbe39674b9e5b18d03cf540ffa83309ea3fe', size: "sm" }))), !this.loading && items.length === 0 && (index.h("div", { key: '732747e33e2ec29968eb7f19b050d89e4b2cca00', class: "co-option-list__empty" }, index.h("co-icon", { key: '6defcd47ad121509bea43da488382a47a846f728', name: "magnifying-glass", size: 20 }), index.h("span", { key: '73729f8c52962e522125b6c258b0f1fb04eff533' }, this.emptyMessage))), items.length > 0 && this.virtual
994
+ return (index.h("div", { key: '30f39e9cfe2472f1083768b6e974aa48672e63d0', class: "co-option-list", onKeyDown: this.onRootKeyDown }, this.searchable && (index.h("div", { key: 'f1c125c141ca8ceebae5c1ed0c786919c31805b3', class: "co-option-list__search", part: "search" }, index.h("co-icon", { key: 'd56810ca205984e7b2c56546930ce25ca70fda68', name: "magnifying-glass", size: 16 }), index.h("input", { key: 'a85b35debe7b14c604a3262c7c04ee3b9ca41a6a', class: "co-option-list__search-input", type: "text", placeholder: this.searchPlaceholder, value: this.term, onInput: this.onSearchInput, ref: (el) => (this.searchInputEl = el), role: "combobox", "aria-expanded": "true", "aria-autocomplete": "list" }))), index.h("div", { key: 'ea5eecc218a228e07dd05d8f963518b4a8e0039f', class: "co-option-list__options", part: "options", role: "listbox", "aria-multiselectable": this.multiple ? 'true' : 'false', ref: (el) => (this.optionsEl = el), onScroll: this.onNativeScroll }, index.h("div", { key: 'b27071cb3d629022fa6e926050fdc17b2051ef98', class: "co-option-list__inner" }, showClear && (index.h("button", { key: '443791f8ee2d1f05a16c4002573264acf0a8de1b', class: "co-option-list__clear-row", type: "button", onClick: () => this.coClearSelection.emit() }, index.h("co-icon", { key: 'ebe7e65669ff9eb76922ef76e21b9209658a444f', name: "x-circle", size: 14 }), index.h("span", { key: '82d2bcceb41ec5370e60ea9e25af91a2cbf11e70' }, this.clearOptionLabel))), this.loading && items.length === 0 && (index.h("div", { key: '9f60fedc78ee66d198623a5e3ac9b0f1569ddef4', class: "co-option-list__loading" }, index.h("co-loader", { key: 'ab7b1947e03af880cc608bef8639d7dc882a53b7', size: "sm" }))), !this.loading && items.length === 0 && (index.h("div", { key: '6b0870e6c5b2c25e2854431a28a2d6b56253ecf2', class: "co-option-list__empty" }, index.h("co-icon", { key: '302d71e23e0d56104dfd04948201630ddbb4b078', name: "magnifying-glass", size: 20 }), index.h("span", { key: 'fc580f9a50974ab22a7b648dbbe4ca17340094d8' }, this.emptyMessage))), items.length > 0 && this.virtual
944
995
  ? this.renderVirtual(items, selectedIds)
945
996
  : buildRows(items).map((row) => row.kind === 'header'
946
997
  ? index.h("div", { class: "co-option-list__group", role: "presentation" }, row.label)
947
- : this.renderRow(row.item, row.index, selectedIds)), this.loading && items.length > 0 && (index.h("div", { key: '915e9c5dd03a7f77a2d680137b962e0f100fa903', class: "co-option-list__loading-more" }, index.h("co-loader", { key: 'dea515b0c90e0fac1f16fd4140ed38bddcd0cda4', size: "sm" }))), !this.loading && hasMore && remaining > 0 && (index.h("div", { key: '9f3be3b39ccc00a380c3d88d30ac8695102e22a4', class: "co-option-list__more" }, remaining, " more results")))), index.h("slot", { key: '6b6a06ef1819241ef5f5ff5870e79ab8b0765ed8', name: "footer" })));
998
+ : this.renderRow(row.item, row.index, selectedIds)), this.loading && items.length > 0 && (index.h("div", { key: '606a674960e4d16198ef36de4686de91ad742dde', class: "co-option-list__loading-more" }, index.h("co-loader", { key: '933613b7b606399cd9eea3f877a4b2c77f269785', size: "sm" }))), !this.loading && hasMore && remaining > 0 && (index.h("div", { key: '6a6220513b6db222b57155c54afa805519e4b1b8', class: "co-option-list__more" }, remaining, " more results")))), index.h("slot", { key: '4d952742c39335d9f19c2e45f58ae6be3306857d', name: "footer" })));
948
999
  }
949
1000
  get el() { return index.getElement(this); }
950
1001
  static get watchers() { return {
951
1002
  "items": [{
952
1003
  "onItemsChange": 0
1004
+ }],
1005
+ "value": [{
1006
+ "onValueChange": 0
953
1007
  }]
954
1008
  }; }
955
1009
  };
@@ -467,6 +467,12 @@ const CoColorPicker = class {
467
467
  };
468
468
  this.handleGridKeyDown = (e) => {
469
469
  var _a;
470
+ // La grilla es el único control del panel que es un `<div>`: no hereda
471
+ // `disabled` del DOM como el range o el input, así que el guard tiene que
472
+ // ser explícito. Sin él, deshabilitar con el panel abierto dejaba la
473
+ // navegación por flechas viva y Enter commiteando sobre un campo apagado.
474
+ if (this.disabled)
475
+ return;
470
476
  // `presetGroups` re-parsea el JSON de `presets` y remapea en CADA lectura, y
471
477
  // todos los consumidores reales pasan presets custom por prop: se resuelve
472
478
  // UNA vez por tecla y se pasa por parámetro, no dos veces por getter.
@@ -692,8 +698,10 @@ const CoColorPicker = class {
692
698
  * que `this.hsv` llega `undefined` al primer render y el destructuring de
693
699
  * `renderArea` tira). Los otros @State del componente lo toleraban porque
694
700
  * `undefined` es falsy justo donde se usan.
695
- * Sin hex válido el estado arranca en negro, que es lo que pinta el área
696
- * mientras no hay color elegido.
701
+ * Sin hex válido el estado arranca en `EMPTY_HSV` —rojo puro, el vértice
702
+ * VIVO—, no en negro: ver su docstring, que explica por qué el vértice negro
703
+ * dejaría dos de los tres controles sin poder producir color. Es un seed de
704
+ * display; `value` sigue vacío y el trigger sigue mostrando el placeholder.
697
705
  */
698
706
  componentWillLoad() {
699
707
  const parsed = color.hexToHsv(this.value || '');
@@ -855,6 +863,11 @@ const CoColorPicker = class {
855
863
  }
856
864
  }
857
865
  handleSwatchClick(hex) {
866
+ // Mismo guard que el resto de los controles del panel: el host puede
867
+ // deshabilitar el campo CON EL PANEL ABIERTO, y un swatch deshabilitado no
868
+ // commitea. El `pointer-events:none` del CSS tapa el mouse, no el teclado.
869
+ if (this.disabled)
870
+ return;
858
871
  // Elegir un preset es un commit como cualquier otro: la asignación y el
859
872
  // emit viven en `commit`, no duplicados acá (si no, el swatch dejaría el
860
873
  // HSV del color anterior y el área abriría en el color equivocado).
@@ -960,7 +973,16 @@ const CoColorPicker = class {
960
973
  index.h("div", { class: "co-color-picker__grid-group", key: g.from, role: g.label ? 'group' : 'presentation', "aria-label": g.label }, g.items.map((preset, j) => {
961
974
  const i = g.from + j;
962
975
  const selected = preset.value.toUpperCase() === (this.value || '').toUpperCase();
963
- return (index.h("div", { key: preset.value, role: "option", "aria-selected": selected ? 'true' : 'false', "aria-label": preset.name, tabIndex: i === this.focusedIndex ? 0 : -1, class: {
976
+ return (index.h("div", { key: preset.value, role: "option", "aria-selected": selected ? 'true' : 'false', "aria-label": preset.name,
977
+ // El `aria-label` cubre al lector de pantalla; al usuario con
978
+ // mouse no le dice nada. Sin el `title`, la paleta por default
979
+ // deja dos grises contiguos ("Humo" y "Hueso") indistinguibles
980
+ // salvo por el pixel de color. El tooltip nativo es la
981
+ // convención de este design system para celdas de grilla
982
+ // —co-emoji-picker:419 hace exactamente esto, y el propio
983
+ // panel ya lo usa en gotero y copiar—; la regla que lo prohíbe
984
+ // es de suite-v2, no de cobalt core.
985
+ title: preset.name, tabIndex: i === this.focusedIndex ? 0 : -1, class: {
964
986
  'co-color-picker__grid-item': true,
965
987
  'co-color-picker__grid-item--selected': selected,
966
988
  // Un swatch claro se pierde contra el panel: se decide por
@@ -1083,12 +1105,20 @@ const CoColorPicker = class {
1083
1105
  this.hsv = EMPTY_HSV;
1084
1106
  if ((this.value || '').toUpperCase() === (target || '').toUpperCase())
1085
1107
  return;
1086
- // SIN sellar: acá el @Watch sí tiene que re-derivar el HSV, para que el área
1087
- // vuelva al color commiteado y no se quede en el que se abandonó.
1108
+ // SIN sellar a mano: el @Watch re-deriva el HSV —que es lo que hace volver
1109
+ // el área al color commiteado en vez de quedarse en el abandonado— y sella
1110
+ // `emitted` él mismo, ANTES del guard de parseo, así que también cubre el
1111
+ // caso en que `target` no es un hex (nunca se commiteó nada y el campo
1112
+ // vuelve a vacío).
1113
+ //
1114
+ // Acá vivía un `this.emitted = target` con un comentario que describía el
1115
+ // orden VIEJO de `syncFromValue` (sellado gateado por el parseo). Desde que
1116
+ // el sellado subió, la línea era muerta por dos vías: o el @Watch ya la
1117
+ // dejó idéntica, o entró por su guard de eco —que compara contra `emitted`—
1118
+ // y entonces `emitted` ya era `target` salvo por mayúsculas, que es el único
1119
+ // lector que tiene. Medido: una sonda en esa línea sobre la suite entera la
1120
+ // alcanza cuatro veces y las cuatro con `emitted === target` estricto.
1088
1121
  this.value = target;
1089
- // El @Watch no sella cuando `target` no es un hex (nunca se commiteó nada y
1090
- // el campo vuelve a vacío), así que se sella acá.
1091
- this.emitted = target;
1092
1122
  // El preview se anunció por `coInput`; retirarlo también. Un host que
1093
1123
  // previsualiza en vivo se quedaría si no con el color que nadie eligió.
1094
1124
  this.coInput.emit(target);
@@ -1126,12 +1156,12 @@ const CoColorPicker = class {
1126
1156
  render() {
1127
1157
  const hasValue = !!this.value;
1128
1158
  const statusClass = this.status !== 'default' ? `co-color-picker--${this.status}` : '';
1129
- return (index.h("div", { key: 'd0069249895cc3cf148c963f149ff7b3a15ab939', class: `co-color-picker co-color-picker--${this.size} ${statusClass} ${this.isOpen ? 'co-color-picker--open' : ''} ${this.disabled ? 'co-color-picker--disabled' : ''}` }, this.label && (index.h("label", { key: 'e28d265aefc19f7e86ed36bfbfe6b6ec537d1ca2', class: "co-color-picker__label" }, this.label, index.h(requiredMark.RequiredMark, { key: '0aff2dde3002e1c9a79f2c3a385b64d33dc3418c', required: this.required }))), index.h("co-popover", { key: 'edac2d09e0d15c2f09dfff2ea0a2b95f5384d8de', open: this.isOpen, placement: "bottom-start",
1159
+ return (index.h("div", { key: '5e4239ff9ef0dc3f15004898d2d891f8d231e95d', class: `co-color-picker co-color-picker--${this.size} ${statusClass} ${this.isOpen ? 'co-color-picker--open' : ''} ${this.disabled ? 'co-color-picker--disabled' : ''}` }, this.label && (index.h("label", { key: '003a893c3c840cd03d87c4291795499ac80b8b73', class: "co-color-picker__label" }, this.label, index.h(requiredMark.RequiredMark, { key: '4c14eaf668b0677b91b23a00f001ffaa4c21f5c5', required: this.required }))), index.h("co-popover", { key: 'f4a489f77c2d629ea1d9b69786cfad0f95d5422b', open: this.isOpen, placement: "bottom-start",
1130
1160
  // Sin `matchWidth`: el panel tiene ancho INTRÍNSECO (grilla de 8
1131
1161
  // swatches fijos de 32px). Copiar el ancho del trigger achica los
1132
1162
  // tracks bajo 32px con un campo angosto (media columna de un modal) y
1133
1163
  // los swatches desbordan el card — guard: panel-width.spec.
1134
- offset: 4, onCoOpen: this.handlePopoverOpen, onCoClose: this.handlePopoverClose }, index.h("div", { key: '98c2e3c5ed50f8cc869c1cf791ddce85e8887b8e', slot: "trigger", class: "co-color-picker__trigger", role: "combobox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "dialog", "aria-controls": this.isOpen ? CoColorPicker.PANEL_ID : undefined, "aria-label": this.label || undefined, "aria-disabled": this.disabled ? 'true' : undefined, tabIndex: this.disabled ? -1 : 0, ref: (el) => (this.triggerEl = el), onKeyDown: this.handleTriggerKeyDown }, index.h("span", { key: '65e49a6246c71b6366f7907c715c64259c30be46', class: "co-color-picker__swatch", style: { background: hasValue ? this.value : 'transparent' } }), index.h("span", { key: 'd8e6e852383ec925c4336f9b49a69e73d88e2234', class: `co-color-picker__value ${!hasValue ? 'co-color-picker__value--empty' : ''}` }, hasValue ? this.value : this.placeholder)), this.isOpen && (index.h("div", { key: '2893b57d82d7ac2edc4e3bd8eac266fdc6cbfba0', class: "co-color-picker__panel", id: CoColorPicker.PANEL_ID, role: "dialog", "aria-label": this.label || this.placeholder }, this.renderArea(), this.renderHue(), this.renderSwatches(), this.renderHexRow()))), this.helperText && (index.h("div", { key: 'ca583c8033afaafa5bdd59ccd63e711eaf02e6df', class: "co-color-picker__helper" }, this.statusIcon && (index.h("co-icon", { key: 'aca2fd8186658e7d4e13ab67dc7a6e93c2fd8b89', name: this.statusIcon, size: 14, weight: "fill", class: "co-color-picker__helper-icon" })), index.h("span", { key: 'e8e3cdf72353a1f5fb8b53fe725389386c7d75ea', class: "co-color-picker__helper-text" }, this.helperText)))));
1164
+ offset: 4, onCoOpen: this.handlePopoverOpen, onCoClose: this.handlePopoverClose }, index.h("div", { key: '229e0095d6b6a723e77cf0d001d780cf51116851', slot: "trigger", class: "co-color-picker__trigger", role: "combobox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "dialog", "aria-controls": this.isOpen ? CoColorPicker.PANEL_ID : undefined, "aria-label": this.label || undefined, "aria-disabled": this.disabled ? 'true' : undefined, tabIndex: this.disabled ? -1 : 0, ref: (el) => (this.triggerEl = el), onKeyDown: this.handleTriggerKeyDown }, index.h("span", { key: '9267f104b7f0542653038ef381fb81a7f7f0188e', class: "co-color-picker__swatch", style: { background: hasValue ? this.value : 'transparent' } }), index.h("span", { key: '64efb900a60576022b3f487db56380973d2934c9', class: `co-color-picker__value ${!hasValue ? 'co-color-picker__value--empty' : ''}` }, hasValue ? this.value : this.placeholder)), this.isOpen && (index.h("div", { key: '22abcb6c79531f41a6655fc48320e4c108a33049', class: "co-color-picker__panel", id: CoColorPicker.PANEL_ID, role: "dialog", "aria-label": this.label || this.placeholder }, this.renderArea(), this.renderHue(), this.renderSwatches(), this.renderHexRow()))), this.helperText && (index.h("div", { key: '901b7094f7da8c09ea25cad568eda8d5fcaf2d6e', class: "co-color-picker__helper" }, this.statusIcon && (index.h("co-icon", { key: 'fb341f791466f133f6a6c4bd04a8dd71c519c7c0', name: this.statusIcon, size: 14, weight: "fill", class: "co-color-picker__helper-icon" })), index.h("span", { key: '0ecfc7d46a07c741d42b59660979559fb78117df', class: "co-color-picker__helper-text" }, this.helperText)))));
1135
1165
  }
1136
1166
  get el() { return index.getElement(this); }
1137
1167
  static get watchers() { return {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var index = require('./index-MDAnKsze.js');
4
- var normalizeText = require('./normalizeText-B-v-XPKf.js');
4
+ var normalizeText = require('./normalizeText-D9rlJWZa.js');
5
5
 
6
6
  /**
7
7
  * Pure tree-building, filtering, and string utilities for co-column-picker.
@@ -2,7 +2,7 @@
2
2
 
3
3
  var index = require('./index-MDAnKsze.js');
4
4
  var requiredMark = require('./requiredMark-D-t-IPN0.js');
5
- var normalizeText = require('./normalizeText-B-v-XPKf.js');
5
+ var normalizeText = require('./normalizeText-D9rlJWZa.js');
6
6
 
7
7
  const coComboboxCss = () => `:host{display:block;font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14);letter-spacing:var(--co-font-letter-spacing-body);line-height:1;position:relative}.co-combobox{display:flex;flex-direction:column;gap:var(--co-spacing-sm2);position:relative}.co-combobox__labels{display:flex;align-items:center;justify-content:space-between;padding:0 var(--co-spacing-xs);gap:var(--co-spacing-sm2)}.co-combobox__label{color:var(--co-semantic-text-secondary);font-size:var(--co-font-size-14);font-weight:400;letter-spacing:var(--co-font-letter-spacing-body);line-height:1;white-space:nowrap;cursor:default}.co-combobox__secondary-label{color:var(--co-semantic-text-secondary);font-size:var(--co-font-size-14);font-weight:400;letter-spacing:var(--co-font-letter-spacing-body);line-height:1;white-space:nowrap;text-align:right}.co-combobox__trigger{display:flex;align-items:center;gap:var(--co-spacing-sm2);padding:var(--co-spacing-sm2) var(--co-spacing-md);background:var(--co-semantic-surface-page);border:1px solid var(--co-semantic-border-field);border-radius:var(--co-border-radius-xs);min-height:40px;box-sizing:border-box;cursor:pointer;transition:border-color var(--co-motion-duration-fast) var(--co-motion-ease-out), box-shadow var(--co-motion-duration-fast) var(--co-motion-ease-out);overflow:hidden}.co-combobox--s .co-combobox__trigger{min-height:28px;padding:var(--co-spacing-xxs) var(--co-spacing-sm);font-size:var(--co-font-size-12)}.co-combobox--sm .co-combobox__trigger{min-height:32px;padding:var(--co-spacing-xs) var(--co-spacing-sm);font-size:var(--co-font-size-14)}.co-combobox--lg .co-combobox__trigger{min-height:48px;padding:var(--co-spacing-sm) var(--co-spacing-lg);font-size:var(--co-font-size-16)}.co-combobox--open .co-combobox__trigger{border-color:var(--co-semantic-border-focus);box-shadow:0 0 0 2px var(--co-semantic-border-focus-ring)}.co-combobox__trigger:focus-visible{outline:none;border-color:var(--co-semantic-border-focus);box-shadow:0 0 0 2px var(--co-semantic-border-focus-ring)}.co-combobox--disabled .co-combobox__trigger{background:var(--co-semantic-surface-disabled);border-color:transparent;cursor:not-allowed}.co-combobox__icon{flex-shrink:0;color:var(--co-semantic-text-muted);display:flex;align-items:center}.co-combobox--disabled .co-combobox__icon{color:var(--co-semantic-text-disabled)}.co-combobox__input-wrapper{flex:1;display:flex;align-items:center;flex-wrap:nowrap;gap:4px;min-width:0;min-height:22px;padding:0;overflow:hidden}.co-combobox__input-wrapper co-chip{--co-chip-max-width:120px;--co-chip-bg:var(--co-semantic-surface-muted);--co-chip-color:var(--co-semantic-text-default);--co-chip-border:1px solid var(--co-semantic-border-subtle);flex-shrink:0}.co-combobox__overflow-badge{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 4px;border-radius:var(--co-border-radius-full);background:var(--co-semantic-status-info, #2d6cc5);color:var(--co-color-base-blanco, #fff);font-family:var(--co-font-family-primary);font-size:var(--co-font-size-10);font-weight:600;line-height:1;white-space:nowrap}.co-combobox__text{color:var(--co-semantic-text-default);font-family:inherit;font-size:inherit;font-weight:400;letter-spacing:inherit;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.co-combobox__text--placeholder{color:var(--co-semantic-text-muted)}.co-combobox--disabled .co-combobox__text{color:var(--co-semantic-text-disabled)}.co-combobox__clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:0;margin:0;border:none;background:transparent;cursor:pointer;color:var(--co-semantic-text-muted);transition:color var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-combobox__clear:hover{color:var(--co-semantic-text-default)}.co-combobox__caret{flex-shrink:0;color:var(--co-semantic-text-muted);display:flex;align-items:center}.co-combobox--disabled .co-combobox__caret{color:var(--co-semantic-text-disabled)}.co-combobox__dropdown{display:flex;flex-direction:column;gap:var(--co-spacing-sm2)}.co-combobox__helper{display:flex;align-items:center;gap:var(--co-spacing-xs);padding:0 var(--co-spacing-xs)}.co-combobox__helper-icon{flex-shrink:0;display:flex;align-items:center}.co-combobox__helper-text{color:var(--co-semantic-text-muted);font-size:var(--co-font-size-14);font-weight:400;line-height:1}.co-combobox__helper--error .co-combobox__helper-icon,.co-combobox__helper--error .co-combobox__helper-text{color:var(--co-semantic-status-error)}.co-combobox__helper--success .co-combobox__helper-icon,.co-combobox__helper--success .co-combobox__helper-text{color:var(--co-semantic-status-success)}.co-combobox__helper--warning .co-combobox__helper-icon,.co-combobox__helper--warning .co-combobox__helper-text{color:var(--co-color-status-review)}.co-combobox__helper--info .co-combobox__helper-icon,.co-combobox__helper--info .co-combobox__helper-text{color:var(--co-semantic-status-info)}:host([layout='horizontal']) .co-combobox{display:grid;grid-template-columns:var(--co-field-label-width, max-content) 1fr;align-items:start;column-gap:var(--co-spacing-md);row-gap:var(--co-spacing-sm2)}:host([layout='horizontal']) .co-combobox__labels{grid-column:1;grid-row:1;padding-top:var(--co-spacing-sm2);min-width:0}:host([layout='horizontal']) .co-combobox__label{white-space:normal}:host([layout='horizontal']) .co-combobox>:not(.co-combobox__labels){grid-column:2;min-width:0}.co-field-required{margin-left:2px;color:var(--co-color-status-error)}.co-field-required__caption{margin-left:4px;color:var(--co-semantic-text-muted);font-size:var(--co-font-size-12);font-weight:400}.co-field-required__caption::before{content:var(--co-field-required-text, ' (required)')}`;
8
8
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var index = require('./index-MDAnKsze.js');
4
- var normalizeText = require('./normalizeText-B-v-XPKf.js');
4
+ var normalizeText = require('./normalizeText-D9rlJWZa.js');
5
5
 
6
6
  /**
7
7
  * Pure: should the component keep open and emit coScopeChange
@@ -2,6 +2,31 @@
2
2
 
3
3
  var index = require('./index-MDAnKsze.js');
4
4
 
5
+ /**
6
+ * Lógica pura del tooltip de header truncado (sin DOM real: testeable en vitest).
7
+ * Misma regla que co-list-item y `useEllipsisTooltip` de suite-v2: +1px de
8
+ * tolerancia porque el navegador redondea a enteros y 1px de más NO es corte.
9
+ */
10
+ function isEllipsisTruncated(node) {
11
+ return !!node && node.scrollWidth > node.clientWidth + 1;
12
+ }
13
+ /**
14
+ * Mide TODOS los labels registrados (field → nodo) en una pasada y devuelve el
15
+ * próximo mapa; la MISMA referencia si ningún field cambió. Un field que ya no
16
+ * está registrado (columna quitada) desaparece del mapa.
17
+ */
18
+ function measureTruncatedHeaders(prev, labels) {
19
+ let changed = Object.keys(prev).some((field) => !labels.has(field));
20
+ const next = {};
21
+ labels.forEach((node, field) => {
22
+ const truncated = isEllipsisTruncated(node);
23
+ next[field] = truncated;
24
+ if (!!prev[field] !== truncated)
25
+ changed = true;
26
+ });
27
+ return changed ? next : prev;
28
+ }
29
+
5
30
  /**
6
31
  * Pure math for co-data-table's column-resize drag.
7
32
  *
@@ -40,7 +65,7 @@ function resizeWidth({ startWidth, minWidth, pointerDelta, autoScrollExtra }) {
40
65
  return Math.max(minWidth, startWidth + pointerDelta + autoScrollExtra);
41
66
  }
42
67
 
43
- const coDataTableCss = () => `co-data-table{display:block;flex:1;min-height:0;overflow:hidden;contain:layout}.co-data-table{position:relative;font-family:var(--co-font-family-primary);background:var(--co-color-base-blanco);display:flex;flex-direction:column;height:100%}.co-data-table--resizing{cursor:col-resize;user-select:none}.co-data-table__scroll{flex:1;overflow-x:auto;overflow-y:auto;min-height:0}.co-data-table__table{min-width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.co-data-table__head{position:sticky;top:0;z-index:2}.co-data-table__header-row{height:40px}.co-data-table__th{position:relative;height:40px;padding:0 var(--co-spacing-md);background:var(--co-color-base-blanco);border-bottom:1px solid color-mix(in srgb, var(--co-semantic-border-default) 75%, transparent);border-right:1px solid color-mix(in srgb, var(--co-semantic-border-default) 75%, transparent);text-align:left;vertical-align:middle;font-size:var(--co-font-size-14);font-weight:500;color:var(--co-semantic-text-default);letter-spacing:var(--co-font-letter-spacing-body);line-height:1;white-space:nowrap;overflow:hidden;box-sizing:border-box}.co-data-table__th:last-child{border-right:none}.co-data-table__th--sortable{cursor:pointer}.co-data-table__th--sortable:hover{background-image:linear-gradient(var(--co-semantic-surface-hover), var(--co-semantic-surface-hover))}.co-data-table__th-content{display:flex;align-items:center;justify-content:space-between;gap:var(--co-spacing-sm)}.co-data-table__pin-icon{display:flex;align-items:center;flex-shrink:0;color:var(--co-color-gray-300);cursor:pointer;opacity:0;transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out), color var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-data-table__pin-icon--active{opacity:1;color:var(--co-semantic-text-default)}.co-data-table__th:hover .co-data-table__pin-icon{opacity:1}.co-data-table__pin-icon:hover{color:var(--co-semantic-text-default)}.co-data-table__filter-icon{display:flex;align-items:center;flex-shrink:0;color:var(--co-color-gray-300);cursor:pointer;opacity:0;transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out), color var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-data-table__th:hover .co-data-table__filter-icon{opacity:1}.co-data-table__filter-icon:hover{color:var(--co-semantic-text-default)}.co-data-table__filter-icon--active{opacity:1;color:var(--co-color-primary-azul)}.co-data-table__filter-icon--indirect{opacity:0.45;color:var(--co-semantic-text-muted)}.co-data-table__th-label{flex:1;overflow:hidden;text-overflow:ellipsis}.co-data-table__sort-icon{display:flex;align-items:center;flex-shrink:0;color:var(--co-color-gray-400);transition:color var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-data-table__sort-icon--active{color:var(--co-semantic-text-default)}.co-data-table__sort-button{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:var(--co-spacing-sm);background:transparent;border:0;padding:0;margin:0;font:inherit;color:inherit;letter-spacing:inherit;text-align:left;cursor:pointer}.co-data-table__sort-button:focus-visible{outline:2px solid var(--co-semantic-border-focus, var(--co-color-primary-azul));outline-offset:-2px;border-radius:var(--co-border-radius-xxs)}.co-data-table__th--checkbox,.co-data-table__td--checkbox{width:48px;min-width:48px;max-width:48px;padding:0 var(--co-spacing-md);text-align:center;line-height:0;}.co-data-table__th--sticky,.co-data-table__td--sticky{position:sticky;z-index:1;background:var(--co-color-base-blanco)}.co-data-table__th--sticky{z-index:3}.co-data-table__th.co-data-table__th--sticky,.co-data-table__td.co-data-table__td--sticky{overflow:visible}.co-data-table__td--sticky::after,.co-data-table__th--sticky::after{content:'';position:absolute;top:0;right:-4px;bottom:0;width:4px;pointer-events:none;opacity:0;background:linear-gradient(to right, var(--co-color-opacity-negro-8), transparent);transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-data-table__resize-handle{position:absolute;top:0;right:-2px;width:5px;height:100%;cursor:col-resize;z-index:1}.co-data-table__resize-handle:hover{background:var(--co-color-primary-azul);opacity:0.3}.co-data-table__resize-handle--active{background:var(--co-color-primary-azul);opacity:0.3}.co-data-table__row{height:48px;transition:background-color var(--co-motion-duration-fast) var(--co-motion-ease-out);content-visibility:auto;contain-intrinsic-size:auto 48px}.co-data-table__row:hover{background:var(--co-semantic-surface-hover)}.co-data-table__row--selected{background:var(--co-color-opacity-negro-4)}.co-data-table__row--selected:hover{background:var(--co-color-opacity-negro-8)}.co-data-table__td{height:48px;padding:0 var(--co-spacing-md);background:inherit;border-bottom:1px solid color-mix(in srgb, var(--co-semantic-border-default) 75%, transparent);border-right:1px solid color-mix(in srgb, var(--co-semantic-border-default) 75%, transparent);vertical-align:middle;font-size:var(--co-font-size-12);font-weight:var(--co-font-weight-medium);color:var(--co-semantic-text-default);letter-spacing:var(--co-font-letter-spacing-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box}.co-data-table__td:last-child{border-right:none}.co-data-table__th--align-center,.co-data-table__td--align-center{text-align:center}.co-data-table__th--align-right,.co-data-table__td--align-right{text-align:right}.co-data-table__cell-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.co-data-table--empty .co-data-table__scroll{flex:0 0 auto;overflow:hidden}.co-data-table__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;flex:1;min-height:280px;padding:var(--co-spacing-3xl) var(--co-spacing-lg);gap:var(--co-spacing-lg) }.co-data-table__empty-icon{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:var(--co-border-radius-full);background:var(--co-semantic-surface-muted);color:var(--co-semantic-text-secondary);margin-bottom:var(--co-spacing-sm)}.co-data-table__empty-title{font-size:var(--co-font-size-24);font-weight:var(--co-font-weight-medium, 500);line-height:1.25;color:var(--co-semantic-text-default);letter-spacing:-0.03em}.co-data-table__empty-message{font-size:var(--co-font-size-14);font-weight:400;color:var(--co-semantic-text-secondary);margin:0;max-width:538px ;line-height:1.25}.co-data-table__empty-action{margin-top:var(--co-spacing-md);display:inline-flex}.co-data-table__empty-action:empty{display:none}.co-data-table__skeleton{height:14px;border-radius:var(--co-border-radius-xxs);background:linear-gradient( 90deg, var(--co-semantic-surface-secondary) 0%, var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.04)) 50%, var(--co-semantic-surface-secondary) 100% );background-size:200% 100%;animation:co-dt-shimmer 1.2s ease-in-out infinite;width:70%}.co-data-table__skeleton--checkbox{width:16px;height:16px;margin:0 auto}@keyframes co-dt-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){.co-data-table__skeleton{animation:none}}.co-data-table__row--skeleton{pointer-events:none;content-visibility:visible}.co-data-table__row--flash-create{animation:co-dt-flash-create 1s ease-out}.co-data-table__row--flash-update{animation:co-dt-flash-update 1s ease-out}.co-data-table__row--flash-delete{animation:co-dt-flash-delete 0.5s ease-out forwards}@keyframes co-dt-flash-create{0%{background-color:rgba(2, 162, 112, 0.15)}100%{background-color:transparent}}@keyframes co-dt-flash-update{0%{background-color:rgba(37, 99, 235, 0.15)}100%{background-color:transparent}}@keyframes co-dt-flash-delete{0%{opacity:1;background-color:rgba(170, 46, 27, 0.1)}100%{opacity:0;height:0;padding:0;overflow:hidden}}`;
68
+ const coDataTableCss = () => `co-data-table{display:block;flex:1;min-height:0;overflow:hidden;contain:layout}.co-data-table{position:relative;font-family:var(--co-font-family-primary);background:var(--co-color-base-blanco);display:flex;flex-direction:column;height:100%}.co-data-table--resizing{cursor:col-resize;user-select:none}.co-data-table__scroll{flex:1;overflow-x:auto;overflow-y:auto;min-height:0}.co-data-table__table{min-width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.co-data-table__head{position:sticky;top:0;z-index:2}.co-data-table__header-row{height:40px}.co-data-table__th{position:relative;height:40px;padding:0 var(--co-spacing-md);background:var(--co-color-base-blanco);border-bottom:1px solid color-mix(in srgb, var(--co-semantic-border-default) 75%, transparent);border-right:1px solid color-mix(in srgb, var(--co-semantic-border-default) 75%, transparent);text-align:left;vertical-align:middle;font-size:var(--co-font-size-14);font-weight:500;color:var(--co-semantic-text-default);letter-spacing:var(--co-font-letter-spacing-body);line-height:1;white-space:nowrap;overflow:hidden;box-sizing:border-box}.co-data-table__th:last-child{border-right:none}.co-data-table__th--sortable{cursor:pointer}.co-data-table__th--sortable:hover{background-image:linear-gradient(var(--co-semantic-surface-hover), var(--co-semantic-surface-hover))}.co-data-table__th-content{display:flex;align-items:center;justify-content:space-between;gap:var(--co-spacing-sm)}.co-data-table__pin-icon{display:flex;align-items:center;flex-shrink:0;color:var(--co-color-gray-300);cursor:pointer;opacity:0;transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out), color var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-data-table__pin-icon--active{opacity:1;color:var(--co-semantic-text-default)}.co-data-table__th:hover .co-data-table__pin-icon{opacity:1}.co-data-table__pin-icon:hover{color:var(--co-semantic-text-default)}.co-data-table__filter-icon{display:flex;align-items:center;flex-shrink:0;color:var(--co-color-gray-300);cursor:pointer;opacity:0;transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out), color var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-data-table__th:hover .co-data-table__filter-icon{opacity:1}.co-data-table__filter-icon:hover{color:var(--co-semantic-text-default)}.co-data-table__filter-icon--active{opacity:1;color:var(--co-color-primary-azul)}.co-data-table__filter-icon--indirect{opacity:0.45;color:var(--co-semantic-text-muted)}.co-data-table__th-tip{flex:1;min-width:0}.co-data-table__th-label{display:block;overflow:hidden;text-overflow:ellipsis}.co-data-table__sort-icon{display:flex;align-items:center;flex-shrink:0;color:var(--co-color-gray-400);transition:color var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-data-table__sort-icon--active{color:var(--co-semantic-text-default)}.co-data-table__sort-button{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:var(--co-spacing-sm);background:transparent;border:0;padding:0;margin:0;font:inherit;color:inherit;letter-spacing:inherit;text-align:left;cursor:pointer}.co-data-table__sort-button:focus-visible{outline:2px solid var(--co-semantic-border-focus, var(--co-color-primary-azul));outline-offset:-2px;border-radius:var(--co-border-radius-xxs)}.co-data-table__th--checkbox,.co-data-table__td--checkbox{width:48px;min-width:48px;max-width:48px;padding:0 var(--co-spacing-md);text-align:center;line-height:0;}.co-data-table__th.co-data-table__th--checkbox,.co-data-table__td.co-data-table__td--checkbox{border-right:none}.co-data-table__th--sticky,.co-data-table__td--sticky{position:sticky;z-index:1;background:var(--co-color-base-blanco)}.co-data-table__th--sticky{z-index:3}.co-data-table__th.co-data-table__th--sticky,.co-data-table__td.co-data-table__td--sticky{overflow:visible}.co-data-table__td--sticky::after,.co-data-table__th--sticky::after{content:'';position:absolute;top:0;right:-4px;bottom:0;width:4px;pointer-events:none;opacity:0;background:linear-gradient(to right, var(--co-color-opacity-negro-8), transparent);transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-data-table__td--sticky::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background-color:var(--co-semantic-surface-hover);opacity:0;transition:opacity var(--co-motion-duration-fast) var(--co-motion-ease-out), background-color var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-data-table__row:hover .co-data-table__td--sticky::before{opacity:1}.co-data-table__row--selected .co-data-table__td--sticky::before{opacity:1;background-color:var(--co-color-opacity-negro-4)}.co-data-table__row--selected:hover .co-data-table__td--sticky::before{background-color:var(--co-color-opacity-negro-8)}.co-data-table__resize-handle{position:absolute;top:0;right:-2px;width:5px;height:100%;cursor:col-resize;z-index:1}.co-data-table__resize-handle:hover{background:var(--co-color-primary-azul);opacity:0.3}.co-data-table__resize-handle--active{background:var(--co-color-primary-azul);opacity:0.3}.co-data-table__row{height:48px;transition:background-color var(--co-motion-duration-fast) var(--co-motion-ease-out);content-visibility:auto;contain-intrinsic-size:auto 48px}.co-data-table__row:hover{background:var(--co-semantic-surface-hover)}.co-data-table__row--selected{background:var(--co-color-opacity-negro-4)}.co-data-table__row--selected:hover{background:var(--co-color-opacity-negro-8)}.co-data-table__td{height:48px;padding:0 var(--co-spacing-md);background:transparent;border-bottom:1px solid color-mix(in srgb, var(--co-semantic-border-default) 75%, transparent);border-right:1px solid color-mix(in srgb, var(--co-semantic-border-default) 75%, transparent);vertical-align:middle;font-size:var(--co-font-size-12);font-weight:var(--co-font-weight-medium);color:var(--co-semantic-text-default);letter-spacing:var(--co-font-letter-spacing-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box}.co-data-table__td:last-child{border-right:none}.co-data-table__th--align-center,.co-data-table__td--align-center{text-align:center}.co-data-table__th--align-right,.co-data-table__td--align-right{text-align:right}.co-data-table__cell-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.co-data-table--empty .co-data-table__scroll{flex:0 0 auto;overflow:hidden}.co-data-table__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;flex:1;min-height:280px;padding:var(--co-spacing-3xl) var(--co-spacing-lg);gap:var(--co-spacing-lg) }.co-data-table__empty-icon{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:var(--co-border-radius-full);background:var(--co-semantic-surface-muted);color:var(--co-semantic-text-secondary);margin-bottom:var(--co-spacing-sm)}.co-data-table__empty-title{font-size:var(--co-font-size-24);font-weight:var(--co-font-weight-medium, 500);line-height:1.25;color:var(--co-semantic-text-default);letter-spacing:-0.03em}.co-data-table__empty-message{font-size:var(--co-font-size-14);font-weight:400;color:var(--co-semantic-text-secondary);margin:0;max-width:538px ;line-height:1.25}.co-data-table__empty-action{margin-top:var(--co-spacing-md);display:inline-flex}.co-data-table__empty-action:empty{display:none}.co-data-table__skeleton{height:14px;border-radius:var(--co-border-radius-xxs);background:linear-gradient( 90deg, var(--co-semantic-surface-secondary) 0%, var(--co-semantic-surface-hover, rgba(0, 0, 0, 0.04)) 50%, var(--co-semantic-surface-secondary) 100% );background-size:200% 100%;animation:co-dt-shimmer 1.2s ease-in-out infinite;width:70%}.co-data-table__skeleton--checkbox{width:16px;height:16px;margin:0 auto}@keyframes co-dt-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){.co-data-table__skeleton{animation:none}}.co-data-table__row--skeleton{pointer-events:none;content-visibility:visible}.co-data-table__row--flash-create{animation:co-dt-flash-create 1s ease-out}.co-data-table__row--flash-update{animation:co-dt-flash-update 1s ease-out}.co-data-table__row--flash-delete{animation:co-dt-flash-delete 0.5s ease-out forwards}@keyframes co-dt-flash-create{0%{background-color:rgba(2, 162, 112, 0.15)}100%{background-color:transparent}}@keyframes co-dt-flash-update{0%{background-color:rgba(37, 99, 235, 0.15)}100%{background-color:transparent}}@keyframes co-dt-flash-delete{0%{opacity:1;background-color:rgba(170, 46, 27, 0.1)}100%{opacity:0;height:0;padding:0;overflow:hidden}}`;
44
69
 
45
70
  const CoDataTable = class {
46
71
  constructor(hostRef) {
@@ -99,6 +124,9 @@ const CoDataTable = class {
99
124
  this.parsedFilteredFields = [];
100
125
  this.parsedIndirectFields = [];
101
126
  this.columnWidths = new Map();
127
+ /** Columnas cambiadas → re-medir tras el render (un cambio de texto con el
128
+ * mismo ancho no dispara el ResizeObserver). */
129
+ this.headerMeasurePending = false;
102
130
  this.resizingColumn = null;
103
131
  this.resizeStartX = 0;
104
132
  this.resizeStartWidth = 0;
@@ -120,6 +148,7 @@ const CoDataTable = class {
120
148
  }
121
149
  /* ─── WATCHERS ──────────────────────────────────────────── */
122
150
  parseColumns() {
151
+ this.headerMeasurePending = true;
123
152
  try {
124
153
  const cols = typeof this.columns === 'string' ? JSON.parse(this.columns) : this.columns;
125
154
  this.parsedColumns = cols;
@@ -168,13 +197,39 @@ const CoDataTable = class {
168
197
  }
169
198
  }
170
199
  componentWillLoad() {
200
+ // Recursos por instancia acá y no en inicializadores de campo: la instancia
201
+ // envuelta de @stencil/vitest los omite (ver nota en co-data-table.spec.tsx).
202
+ this.headerLabelEls = new Map();
203
+ this.truncatedHeaders = {};
171
204
  this.parseColumns();
172
205
  this.parseRows();
173
206
  this.parseSelectedKeys();
174
207
  this.parseFilteredFields();
175
208
  this.parseIndirectFields();
176
209
  }
210
+ componentDidLoad() {
211
+ // Tooltip del header SOLO cuando el label trunca (patrón co-list-item). El
212
+ // estado tiene que estar correcto ANTES del hover: Stencil re-renderiza en
213
+ // rAF, así que una medida en el pointerenter del <th> llega después de que
214
+ // co-tooltip leyó `disabled` al agendar su show (verificado headless
215
+ // 2026-09-07). Un ResizeObserver re-mide cuando el label cambia de ancho
216
+ // (resize de columna, panel que se muestra, viewport) — y en la carga.
217
+ if (typeof ResizeObserver !== 'undefined') {
218
+ this.headerResizeObserver = new ResizeObserver(() => this.measureHeaderTruncation());
219
+ this.headerLabelEls.forEach((el) => this.headerResizeObserver.observe(el));
220
+ }
221
+ this.measureHeaderTruncation();
222
+ }
223
+ disconnectedCallback() {
224
+ var _a;
225
+ (_a = this.headerResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
226
+ this.headerResizeObserver = undefined;
227
+ }
177
228
  componentDidRender() {
229
+ if (this.headerMeasurePending) {
230
+ this.headerMeasurePending = false;
231
+ this.measureHeaderTruncation();
232
+ }
178
233
  // Auto-scroll parity: the resize tick grew the column (async @State render)
179
234
  // and owes the container the same px of scroll. Here the DOM already has
180
235
  // the new table width, so the advance can't clamp — width and scroll land
@@ -326,6 +381,29 @@ const CoDataTable = class {
326
381
  handleRowDblClick(row, index) {
327
382
  this.coRowDblClick.emit({ row, index });
328
383
  }
384
+ /** Escritura guardada: misma referencia = sin re-render de la tabla. */
385
+ measureHeaderTruncation() {
386
+ const next = measureTruncatedHeaders(this.truncatedHeaders, this.headerLabelEls);
387
+ if (next !== this.truncatedHeaders)
388
+ this.truncatedHeaders = next;
389
+ }
390
+ /** ref del label: registra/observa al montar, limpia al desmontar (ref null). */
391
+ registerHeaderLabel(field, el) {
392
+ var _a, _b, _c;
393
+ const prev = this.headerLabelEls.get(field);
394
+ if (el) {
395
+ if (prev === el)
396
+ return;
397
+ if (prev)
398
+ (_a = this.headerResizeObserver) === null || _a === void 0 ? void 0 : _a.unobserve(prev);
399
+ this.headerLabelEls.set(field, el);
400
+ (_b = this.headerResizeObserver) === null || _b === void 0 ? void 0 : _b.observe(el);
401
+ }
402
+ else if (prev) {
403
+ (_c = this.headerResizeObserver) === null || _c === void 0 ? void 0 : _c.unobserve(prev);
404
+ this.headerLabelEls.delete(field);
405
+ }
406
+ }
329
407
  handleColumnPin(field, e) {
330
408
  e.stopPropagation();
331
409
  this.coColumnPin.emit({ field });
@@ -435,7 +513,7 @@ const CoDataTable = class {
435
513
  : undefined }, index.h("span", { class: "co-data-table__th-content" }, index.h("span", { class: {
436
514
  'co-data-table__pin-icon': true,
437
515
  'co-data-table__pin-icon--active': !!col.sticky,
438
- }, title: col.sticky ? 'Unpin column' : 'Pin column', onClick: (e) => this.handleColumnPin(col.field, e) }, index.h("co-icon", { name: "push-pin", size: 14, weight: col.sticky ? 'fill' : 'regular' })), col.sortable ? (index.h("button", { type: "button", class: "co-data-table__sort-button", "aria-label": `Sort by ${col.label}`, onClick: () => this.handleSort(col.field) }, index.h("span", { class: "co-data-table__th-label" }, col.label), this.renderSortIcon(col))) : (index.h("span", { class: "co-data-table__th-label" }, col.label)), col.filterable && (index.h("span", { class: {
516
+ }, title: col.sticky ? 'Unpin column' : 'Pin column', onClick: (e) => this.handleColumnPin(col.field, e) }, index.h("co-icon", { name: "push-pin", size: 14, weight: col.sticky ? 'fill' : 'regular' })), col.sortable ? (index.h("button", { type: "button", class: "co-data-table__sort-button", "aria-label": `Sort by ${col.label}`, onClick: () => this.handleSort(col.field) }, index.h("co-tooltip", { block: true, class: "co-data-table__th-tip", content: col.label, placement: "top", disabled: !this.truncatedHeaders[col.field] }, index.h("span", { class: "co-data-table__th-label", ref: (el) => this.registerHeaderLabel(col.field, el) }, col.label)), this.renderSortIcon(col))) : (index.h("co-tooltip", { block: true, class: "co-data-table__th-tip", content: col.label, placement: "top", disabled: !this.truncatedHeaders[col.field] }, index.h("span", { class: "co-data-table__th-label", ref: (el) => this.registerHeaderLabel(col.field, el) }, col.label))), col.filterable && (index.h("span", { class: {
439
517
  'co-data-table__filter-icon': true,
440
518
  'co-data-table__filter-icon--active': this.parsedFilteredFields.includes(col.field),
441
519
  'co-data-table__filter-icon--indirect': !this.parsedFilteredFields.includes(col.field) && this.parsedIndirectFields.includes(col.field),
@@ -470,12 +548,12 @@ const CoDataTable = class {
470
548
  : index.h("slot", { name: "empty-action" }))));
471
549
  }
472
550
  render() {
473
- return (index.h("div", { key: '6ba1f3bb555252c55246c8af73b8ce08610e93b0', class: {
551
+ return (index.h("div", { key: '6f71533676a2c66ae46b1ee9940b405744cef174', class: {
474
552
  'co-data-table': true,
475
553
  'co-data-table--resizing': this.resizingColumn !== null,
476
554
  'co-data-table--loading': this.loading,
477
555
  'co-data-table--empty': !this.loading && this.parsedRows.length === 0,
478
- } }, index.h("div", { key: '69bc61a98f48ac06006d9b5ab132abf15bbeeb64', class: "co-data-table__scroll" }, index.h("table", { key: 'bc7627b050900ca6c8887981e47368bfb7f181ea', class: "co-data-table__table", style: { width: `${this.getTableWidth()}px`, minWidth: '100%' } }, this.renderColgroup(), this.renderHeader(), index.h("slot", { key: 'fc98863e680b660844ec968af6ebc645160ee32e' }), this.loading ? this.renderSkeletonBody() : null)), this.renderEmpty()));
556
+ } }, index.h("div", { key: '8176dca34858e32ba2ce008ac44cf444ea952f08', class: "co-data-table__scroll" }, index.h("table", { key: 'f285815728244a7161d91dbed6ca87b158db4de6', class: "co-data-table__table", style: { width: `${this.getTableWidth()}px`, minWidth: '100%' } }, this.renderColgroup(), this.renderHeader(), index.h("slot", { key: '97f4ed9020a7bdb8b262313a10451e9aff754a8e' }), this.loading ? this.renderSkeletonBody() : null)), this.renderEmpty()));
479
557
  }
480
558
  get el() { return index.getElement(this); }
481
559
  static get watchers() { return {
@@ -5,7 +5,7 @@ var requiredMark = require('./requiredMark-D-t-IPN0.js');
5
5
  var dateI18n = require('./dateI18n-BK2qHqoC.js');
6
6
  var dates = require('./dates-TQLHlFd2.js');
7
7
 
8
- const coDateRangePickerCss = () => `:host{display:block;font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14)}.co-date-range-picker{display:flex;flex-direction:column;gap:var(--co-spacing-sm2)}.co-date-range-picker__label{font-size:var(--co-font-size-14);font-weight:400;color:var(--co-semantic-text-secondary);line-height:1;padding:0 var(--co-spacing-xs)}.co-date-range-picker co-popover{display:block;width:100%}.co-date-range-picker--s .co-date-range-picker__trigger{min-height:28px;padding:0 var(--co-spacing-sm)}.co-date-range-picker--sm .co-date-range-picker__trigger{min-height:32px;padding:0 var(--co-spacing-sm)}.co-date-range-picker--lg .co-date-range-picker__trigger{min-height:48px;padding:0 var(--co-spacing-lg)}.co-date-range-picker__trigger{display:inline-flex;align-items:center;gap:var(--co-spacing-sm2);width:100%;min-height:40px;padding:0 var(--co-spacing-md);background:var(--co-semantic-surface-page);border:1px solid var(--co-semantic-border-field);border-radius:var(--co-border-radius-xs);cursor:pointer;color:var(--co-semantic-text-default);box-sizing:border-box;transition:border-color var(--co-motion-duration-fast) var(--co-motion-ease-out), box-shadow var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-date-range-picker__trigger--flat{background:transparent;border-color:transparent}.co-date-range-picker__trigger--open{border-color:var(--co-semantic-border-focus);box-shadow:0 0 0 2px var(--co-semantic-border-focus-ring)}.co-date-range-picker__trigger--disabled{opacity:0.5;cursor:not-allowed}.co-date-range-picker--invalid .co-date-range-picker__trigger{border-color:var(--co-semantic-status-error)}.co-date-range-picker__icon,.co-date-range-picker__caret{color:var(--co-semantic-text-muted);flex-shrink:0}.co-date-range-picker__trigger-text{flex:1;min-width:0;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.co-date-range-picker__trigger-text--placeholder{color:var(--co-semantic-text-muted)}.co-date-range-picker__clear{background:none;border:0;padding:0;cursor:pointer;color:var(--co-semantic-text-muted);display:inline-flex;align-items:center;flex-shrink:0}.co-date-range-picker__clear:hover{color:var(--co-semantic-text-default)}.co-date-range-picker__panel{display:flex;flex-direction:column;gap:var(--co-spacing-md);padding:var(--co-spacing-md);min-width:280px}.co-date-range-picker__fields{display:grid;grid-template-columns:1fr 1fr;gap:var(--co-spacing-sm)}.co-date-range-picker__body{display:flex;gap:var(--co-spacing-md);align-items:flex-start}.co-date-range-picker__body--touch{flex-direction:column;align-items:stretch}.co-date-range-picker__body--touch .co-date-range-picker__presets{flex-direction:row;flex-wrap:wrap;min-width:0;border-right:0;padding-right:0;border-bottom:1px solid var(--co-semantic-border-subtle);padding-bottom:var(--co-spacing-sm)}.co-date-range-picker__body--touch co-calendar{align-self:center}.co-date-range-picker__presets{display:flex;flex-direction:column;gap:var(--co-spacing-xxs);min-width:120px;border-right:1px solid var(--co-semantic-border-subtle);padding-right:var(--co-spacing-md)}.co-date-range-picker__preset{text-align:left;background:none;border:0;padding:var(--co-spacing-xs) var(--co-spacing-sm);border-radius:var(--co-border-radius-xs);font-size:var(--co-font-size-14);font-family:inherit;color:var(--co-semantic-text-default);cursor:pointer;transition:background var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-date-range-picker__preset:hover{background:var(--co-semantic-surface-hover)}.co-date-range-picker__footer{display:flex;justify-content:flex-end;gap:var(--co-spacing-sm);padding-top:var(--co-spacing-sm);border-top:1px solid var(--co-semantic-border-subtle)}.co-date-range-picker__btn{padding:var(--co-spacing-xs) var(--co-spacing-md);border-radius:var(--co-border-radius-xs);font-size:var(--co-font-size-14);font-family:inherit;font-weight:500;cursor:pointer;border:0}.co-date-range-picker__btn--ghost{background:transparent;color:var(--co-semantic-text-default)}.co-date-range-picker__btn--ghost:hover{background:var(--co-semantic-surface-hover)}.co-date-range-picker__btn--primary{background:var(--co-semantic-surface-primary);color:var(--co-semantic-on-primary)}.co-date-range-picker__btn--primary:hover:not(:disabled){opacity:0.88}.co-date-range-picker__btn--primary:disabled{opacity:0.5;cursor:not-allowed}.co-date-range-picker__helper{display:inline-flex;align-items:center;gap:var(--co-spacing-xs);font-size:var(--co-font-size-14);color:var(--co-semantic-text-muted);padding:0 var(--co-spacing-xs)}.co-date-range-picker__helper--error{color:var(--co-semantic-status-error)}:host([layout='horizontal']) .co-date-range-picker{display:grid;grid-template-columns:var(--co-field-label-width, max-content) 1fr;align-items:start;column-gap:var(--co-spacing-md);row-gap:var(--co-spacing-sm2)}:host([layout='horizontal']) .co-date-range-picker__label{grid-column:1;grid-row:1;padding-top:var(--co-spacing-sm2);min-width:0}:host([layout='horizontal']) .co-date-range-picker__label{white-space:normal}:host([layout='horizontal']) .co-date-range-picker>:not(.co-date-range-picker__label){grid-column:2;min-width:0}.co-field-required{margin-left:2px;color:var(--co-color-status-error)}.co-field-required__caption{margin-left:4px;color:var(--co-semantic-text-muted);font-size:var(--co-font-size-12);font-weight:400}.co-field-required__caption::before{content:var(--co-field-required-text, ' (required)')}`;
8
+ const coDateRangePickerCss = () => `:host{display:block;font-family:var(--co-font-family-primary);font-size:var(--co-font-size-14)}.co-date-range-picker{display:flex;flex-direction:column;gap:var(--co-spacing-sm2)}.co-date-range-picker__label{font-size:var(--co-font-size-14);font-weight:400;color:var(--co-semantic-text-secondary);line-height:1;padding:0 var(--co-spacing-xs)}.co-date-range-picker co-popover{display:block;width:100%}.co-date-range-picker--s .co-date-range-picker__trigger{min-height:28px;padding:0 var(--co-spacing-sm)}.co-date-range-picker--sm .co-date-range-picker__trigger{min-height:32px;padding:0 var(--co-spacing-sm)}.co-date-range-picker--lg .co-date-range-picker__trigger{min-height:48px;padding:0 var(--co-spacing-lg)}.co-date-range-picker__trigger{display:inline-flex;align-items:center;gap:var(--co-spacing-sm2);width:100%;min-height:40px;padding:0 var(--co-spacing-md);background:var(--co-semantic-surface-page);border:1px solid var(--co-semantic-border-field);border-radius:var(--co-border-radius-xs);cursor:pointer;color:var(--co-semantic-text-default);box-sizing:border-box;transition:border-color var(--co-motion-duration-fast) var(--co-motion-ease-out), box-shadow var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-date-range-picker__trigger--flat{background:transparent;border-color:transparent}.co-date-range-picker__trigger--open{border-color:var(--co-semantic-border-focus);box-shadow:0 0 0 2px var(--co-semantic-border-focus-ring)}.co-date-range-picker__trigger--disabled{opacity:0.5;cursor:not-allowed}.co-date-range-picker--invalid .co-date-range-picker__trigger{border-color:var(--co-semantic-status-error)}.co-date-range-picker__icon,.co-date-range-picker__caret{color:var(--co-semantic-text-muted);flex-shrink:0}.co-date-range-picker__trigger-text{flex:1;min-width:0;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.co-date-range-picker__trigger-text--placeholder{color:var(--co-semantic-text-muted)}.co-date-range-picker__clear{background:none;border:0;padding:0;cursor:pointer;color:var(--co-semantic-text-muted);display:inline-flex;align-items:center;flex-shrink:0}.co-date-range-picker__clear:hover{color:var(--co-semantic-text-default)}.co-date-range-picker__panel{display:flex;flex-direction:column;gap:var(--co-spacing-md);padding:var(--co-spacing-md);min-width:280px}.co-date-range-picker__fields{display:grid;grid-template-columns:1fr 1fr;gap:var(--co-spacing-sm)}.co-date-range-picker__body{display:flex;gap:var(--co-spacing-md);align-items:flex-start}.co-date-range-picker__body:not(.co-date-range-picker__body--touch) co-calendar{flex:1;min-width:0;--co-calendar-width:100%;--co-calendar-col:minmax(var(--co-calendar-day-size), 1fr);--co-calendar-day-width:100%}.co-date-range-picker__body--touch{flex-direction:column;align-items:stretch}.co-date-range-picker__body--touch .co-date-range-picker__presets{flex-direction:row;flex-wrap:wrap;min-width:0;border-right:0;padding-right:0;border-bottom:1px solid var(--co-semantic-border-subtle);padding-bottom:var(--co-spacing-sm)}.co-date-range-picker__body--touch co-calendar{align-self:center}.co-date-range-picker__presets{display:flex;flex-direction:column;gap:var(--co-spacing-xxs);min-width:120px;border-right:1px solid var(--co-semantic-border-subtle);padding-right:var(--co-spacing-md)}.co-date-range-picker__preset{text-align:left;background:none;border:0;padding:var(--co-spacing-xs) var(--co-spacing-sm);border-radius:var(--co-border-radius-xs);font-size:var(--co-font-size-14);font-family:inherit;color:var(--co-semantic-text-default);cursor:pointer;transition:background var(--co-motion-duration-fast) var(--co-motion-ease-out)}.co-date-range-picker__preset:hover{background:var(--co-semantic-surface-hover)}.co-date-range-picker__footer{display:flex;justify-content:flex-end;gap:var(--co-spacing-sm);padding-top:var(--co-spacing-sm);border-top:1px solid var(--co-semantic-border-subtle)}.co-date-range-picker__btn{padding:var(--co-spacing-xs) var(--co-spacing-md);border-radius:var(--co-border-radius-xs);font-size:var(--co-font-size-14);font-family:inherit;font-weight:500;cursor:pointer;border:0}.co-date-range-picker__btn--ghost{background:transparent;color:var(--co-semantic-text-default)}.co-date-range-picker__btn--ghost:hover{background:var(--co-semantic-surface-hover)}.co-date-range-picker__btn--primary{background:var(--co-semantic-surface-primary);color:var(--co-semantic-on-primary)}.co-date-range-picker__btn--primary:hover:not(:disabled){opacity:0.88}.co-date-range-picker__btn--primary:disabled{opacity:0.5;cursor:not-allowed}.co-date-range-picker__helper{display:inline-flex;align-items:center;gap:var(--co-spacing-xs);font-size:var(--co-font-size-14);color:var(--co-semantic-text-muted);padding:0 var(--co-spacing-xs)}.co-date-range-picker__helper--error{color:var(--co-semantic-status-error)}:host([layout='horizontal']) .co-date-range-picker{display:grid;grid-template-columns:var(--co-field-label-width, max-content) 1fr;align-items:start;column-gap:var(--co-spacing-md);row-gap:var(--co-spacing-sm2)}:host([layout='horizontal']) .co-date-range-picker__label{grid-column:1;grid-row:1;padding-top:var(--co-spacing-sm2);min-width:0}:host([layout='horizontal']) .co-date-range-picker__label{white-space:normal}:host([layout='horizontal']) .co-date-range-picker>:not(.co-date-range-picker__label){grid-column:2;min-width:0}.co-field-required{margin-left:2px;color:var(--co-color-status-error)}.co-field-required__caption{margin-left:4px;color:var(--co-semantic-text-muted);font-size:var(--co-font-size-12);font-weight:400}.co-field-required__caption::before{content:var(--co-field-required-text, ' (required)')}`;
9
9
 
10
10
  const CoDateRangePicker = class {
11
11
  constructor(hostRef) {
@@ -276,6 +276,8 @@ const CoDateRangePicker = class {
276
276
  return `${f} → ${to}`;
277
277
  if (f)
278
278
  return `${f} → …`;
279
+ if (to)
280
+ return `… → ${to}`; // solo fin (p. ej. un ticket con vencimiento y sin inicio): no ocultar el dato
279
281
  return this.placeholder || t.setDate; // `||`: empty string → localized default
280
282
  }
281
283
  presetItems(t) {
@@ -2,7 +2,7 @@
2
2
 
3
3
  var index = require('./index-MDAnKsze.js');
4
4
  var dateI18n = require('./dateI18n-BK2qHqoC.js');
5
- var normalizeText = require('./normalizeText-B-v-XPKf.js');
5
+ var normalizeText = require('./normalizeText-D9rlJWZa.js');
6
6
 
7
7
  /**
8
8
  * Built-in UI string dictionary for co-emoji-picker (chrome + aria labels +