snice 7.6.0 → 7.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/adapters/react/SniceProvider.js +1 -1
  2. package/adapters/react/SniceRouter.js +1 -1
  3. package/adapters/react/calendar.d.ts +1 -0
  4. package/adapters/react/calendar.d.ts.map +1 -1
  5. package/adapters/react/calendar.js +1 -1
  6. package/adapters/react/calendar.js.map +1 -1
  7. package/adapters/react/calendar.tsx +2 -1
  8. package/adapters/react/matchRoute.js +1 -1
  9. package/adapters/react/useRequestHandler.js +1 -1
  10. package/bin/analyzer-contracts.js +8 -2
  11. package/custom-elements.json +15 -1
  12. package/dist/cdn/accordion/snice-accordion.js +1 -1
  13. package/dist/cdn/action-bar/snice-action-bar.js +1 -1
  14. package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
  15. package/dist/cdn/alert/snice-alert.js +1 -1
  16. package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
  17. package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
  18. package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
  19. package/dist/cdn/availability/snice-availability.js +1 -1
  20. package/dist/cdn/avatar/snice-avatar.js +1 -1
  21. package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
  22. package/dist/cdn/badge/snice-badge.js +1 -1
  23. package/dist/cdn/banner/snice-banner.js +1 -1
  24. package/dist/cdn/binpack/snice-binpack.js +1 -1
  25. package/dist/cdn/book/snice-book.js +1 -1
  26. package/dist/cdn/booking/snice-booking.js +1 -1
  27. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
  28. package/dist/cdn/button/snice-button.js +2 -2
  29. package/dist/cdn/button/snice-button.js.map +1 -1
  30. package/dist/cdn/button/snice-button.min.js +1 -1
  31. package/dist/cdn/button/snice-button.min.js.map +1 -1
  32. package/dist/cdn/calendar/README.md +2 -2
  33. package/dist/cdn/calendar/snice-calendar.js +26 -2
  34. package/dist/cdn/calendar/snice-calendar.js.map +1 -1
  35. package/dist/cdn/calendar/snice-calendar.min.js +2 -2
  36. package/dist/cdn/calendar/snice-calendar.min.js.map +1 -1
  37. package/dist/cdn/camera/snice-camera.js +1 -1
  38. package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
  39. package/dist/cdn/candlestick/snice-candlestick.js +1 -1
  40. package/dist/cdn/card/snice-card.js +1 -1
  41. package/dist/cdn/carousel/snice-carousel.js +1 -1
  42. package/dist/cdn/cart/snice-cart.js +1 -1
  43. package/dist/cdn/chart/snice-chart.js +1 -1
  44. package/dist/cdn/chat/snice-chat.js +1 -1
  45. package/dist/cdn/checkbox/snice-checkbox.js +1 -1
  46. package/dist/cdn/chip/snice-chip.js +1 -1
  47. package/dist/cdn/code-block/snice-code-block.js +1 -1
  48. package/dist/cdn/color-display/snice-color-display.js +1 -1
  49. package/dist/cdn/color-picker/snice-color-picker.js +1 -1
  50. package/dist/cdn/command-palette/snice-command-palette.js +1 -1
  51. package/dist/cdn/comments/snice-comments.js +1 -1
  52. package/dist/cdn/countdown/snice-countdown.js +1 -1
  53. package/dist/cdn/cropper/snice-cropper.js +1 -1
  54. package/dist/cdn/data-card/snice-data-card.js +1 -1
  55. package/dist/cdn/date-picker/snice-date-picker.js +1 -1
  56. package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
  57. package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
  58. package/dist/cdn/diff/snice-diff.js +1 -1
  59. package/dist/cdn/divider/snice-divider.js +1 -1
  60. package/dist/cdn/doc/snice-doc.js +1 -1
  61. package/dist/cdn/draw/snice-draw.js +1 -1
  62. package/dist/cdn/drawer/snice-drawer.js +1 -1
  63. package/dist/cdn/empty-state/snice-empty-state.js +1 -1
  64. package/dist/cdn/estimate/snice-estimate.js +1 -1
  65. package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
  66. package/dist/cdn/file-upload/snice-file-upload.js +1 -1
  67. package/dist/cdn/flip-card/snice-flip-card.js +1 -1
  68. package/dist/cdn/flow/snice-flow.js +1 -1
  69. package/dist/cdn/form-layout/snice-form-layout.js +1 -1
  70. package/dist/cdn/funnel/snice-funnel.js +1 -1
  71. package/dist/cdn/gantt/snice-gantt.js +1 -1
  72. package/dist/cdn/gauge/snice-gauge.js +1 -1
  73. package/dist/cdn/grid/snice-grid.js +1 -1
  74. package/dist/cdn/heatmap/snice-heatmap.js +1 -1
  75. package/dist/cdn/image/snice-image.js +1 -1
  76. package/dist/cdn/input/snice-input.js +1 -1
  77. package/dist/cdn/invoice/snice-invoice.js +1 -1
  78. package/dist/cdn/kanban/snice-kanban.js +1 -1
  79. package/dist/cdn/key-value/snice-key-value.js +1 -1
  80. package/dist/cdn/kpi/snice-kpi.js +1 -1
  81. package/dist/cdn/layout/snice-layout.js +1 -1
  82. package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
  83. package/dist/cdn/link/snice-link.js +1 -1
  84. package/dist/cdn/link-preview/snice-link-preview.js +1 -1
  85. package/dist/cdn/list/snice-list.js +1 -1
  86. package/dist/cdn/location/snice-location.js +1 -1
  87. package/dist/cdn/login/README.md +1 -1
  88. package/dist/cdn/login/snice-login.js +2 -2
  89. package/dist/cdn/login/snice-login.js.map +1 -1
  90. package/dist/cdn/login/snice-login.min.js +1 -1
  91. package/dist/cdn/login/snice-login.min.js.map +1 -1
  92. package/dist/cdn/map/snice-map.js +1 -1
  93. package/dist/cdn/markdown/snice-markdown.js +1 -1
  94. package/dist/cdn/masonry/snice-masonry.js +1 -1
  95. package/dist/cdn/menu/snice-menu.js +1 -1
  96. package/dist/cdn/message-strip/snice-message-strip.js +1 -1
  97. package/dist/cdn/modal/snice-modal.js +1 -1
  98. package/dist/cdn/music-player/snice-music-player.js +1 -1
  99. package/dist/cdn/nav/snice-nav.js +1 -1
  100. package/dist/cdn/network-graph/snice-network-graph.js +1 -1
  101. package/dist/cdn/notification-center/snice-notification-center.js +1 -1
  102. package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
  103. package/dist/cdn/org-chart/snice-org-chart.js +1 -1
  104. package/dist/cdn/pagination/snice-pagination.js +1 -1
  105. package/dist/cdn/paint/snice-paint.js +1 -1
  106. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
  107. package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
  108. package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
  109. package/dist/cdn/popover/snice-popover.js +1 -1
  110. package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
  111. package/dist/cdn/product-card/snice-product-card.js +1 -1
  112. package/dist/cdn/progress/snice-progress.js +1 -1
  113. package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
  114. package/dist/cdn/qr-code/snice-qr-code.js +1 -1
  115. package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
  116. package/dist/cdn/radio/snice-radio.js +1 -1
  117. package/dist/cdn/range-slider/snice-range-slider.js +1 -1
  118. package/dist/cdn/rating/snice-rating.js +1 -1
  119. package/dist/cdn/receipt/snice-receipt.js +1 -1
  120. package/dist/cdn/recipe/snice-recipe.js +1 -1
  121. package/dist/cdn/runtime/README.md +2 -2
  122. package/dist/cdn/runtime/snice-runtime.esm.js +130 -31
  123. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  124. package/dist/cdn/runtime/snice-runtime.esm.min.js +1 -1
  125. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  126. package/dist/cdn/runtime/snice-runtime.js +130 -31
  127. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  128. package/dist/cdn/runtime/snice-runtime.min.js +1 -1
  129. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  130. package/dist/cdn/sankey/snice-sankey.js +1 -1
  131. package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
  132. package/dist/cdn/select/snice-select.js +1 -1
  133. package/dist/cdn/skeleton/snice-skeleton.js +1 -1
  134. package/dist/cdn/slider/snice-slider.js +1 -1
  135. package/dist/cdn/sortable/snice-sortable.js +1 -1
  136. package/dist/cdn/sparkline/snice-sparkline.js +1 -1
  137. package/dist/cdn/spinner/snice-spinner.js +1 -1
  138. package/dist/cdn/split-button/snice-split-button.js +1 -1
  139. package/dist/cdn/split-pane/snice-split-pane.js +1 -1
  140. package/dist/cdn/spotlight/snice-spotlight.js +1 -1
  141. package/dist/cdn/stat-group/snice-stat-group.js +1 -1
  142. package/dist/cdn/step-input/snice-step-input.js +1 -1
  143. package/dist/cdn/stepper/snice-stepper.js +1 -1
  144. package/dist/cdn/switch/snice-switch.js +1 -1
  145. package/dist/cdn/table/README.md +2 -2
  146. package/dist/cdn/table/snice-table.esm.js +227 -36
  147. package/dist/cdn/table/snice-table.esm.js.map +1 -1
  148. package/dist/cdn/table/snice-table.esm.min.js +69 -48
  149. package/dist/cdn/table/snice-table.esm.min.js.map +1 -1
  150. package/dist/cdn/table/snice-table.js +226 -35
  151. package/dist/cdn/table/snice-table.js.map +1 -1
  152. package/dist/cdn/table/snice-table.min.js +47 -26
  153. package/dist/cdn/table/snice-table.min.js.map +1 -1
  154. package/dist/cdn/tabs/snice-tabs.js +1 -1
  155. package/dist/cdn/tag/snice-tag.js +1 -1
  156. package/dist/cdn/tag-input/README.md +2 -2
  157. package/dist/cdn/tag-input/snice-tag-input.js +10 -16
  158. package/dist/cdn/tag-input/snice-tag-input.js.map +1 -1
  159. package/dist/cdn/tag-input/snice-tag-input.min.js +2 -2
  160. package/dist/cdn/tag-input/snice-tag-input.min.js.map +1 -1
  161. package/dist/cdn/terminal/snice-terminal.js +1 -1
  162. package/dist/cdn/testimonial/snice-testimonial.js +1 -1
  163. package/dist/cdn/textarea/snice-textarea.js +1 -1
  164. package/dist/cdn/time-picker/snice-time-picker.js +1 -1
  165. package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
  166. package/dist/cdn/timeline/snice-timeline.js +1 -1
  167. package/dist/cdn/timer/snice-timer.js +1 -1
  168. package/dist/cdn/toast/snice-toast.js +1 -1
  169. package/dist/cdn/tooltip/snice-tooltip.js +1 -1
  170. package/dist/cdn/tree/snice-tree.js +1 -1
  171. package/dist/cdn/treemap/snice-treemap.js +1 -1
  172. package/dist/cdn/user-card/snice-user-card.js +1 -1
  173. package/dist/cdn/video-player/snice-video-player.js +1 -1
  174. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
  175. package/dist/cdn/waterfall/snice-waterfall.js +1 -1
  176. package/dist/cdn/weather/snice-weather.js +1 -1
  177. package/dist/cdn/work-order/snice-work-order.js +1 -1
  178. package/dist/components/button/snice-button.js +1 -1
  179. package/dist/components/button/snice-button.js.map +1 -1
  180. package/dist/components/calendar/snice-calendar.d.ts +2 -0
  181. package/dist/components/calendar/snice-calendar.js +25 -1
  182. package/dist/components/calendar/snice-calendar.js.map +1 -1
  183. package/dist/components/table/snice-row.d.ts +6 -0
  184. package/dist/components/table/snice-row.js +11 -3
  185. package/dist/components/table/snice-row.js.map +1 -1
  186. package/dist/components/table/snice-table.d.ts +40 -3
  187. package/dist/components/table/snice-table.js +157 -17
  188. package/dist/components/table/snice-table.js.map +1 -1
  189. package/dist/components/table/table-cell-presentation.d.ts +11 -0
  190. package/dist/components/table/table-cell-presentation.js +25 -8
  191. package/dist/components/table/table-cell-presentation.js.map +1 -1
  192. package/dist/components/table/table-export.d.ts +6 -0
  193. package/dist/components/table/table-export.js +11 -2
  194. package/dist/components/table/table-export.js.map +1 -1
  195. package/dist/components/table/table-keyboard.js +1 -1
  196. package/dist/components/table/table-keyboard.js.map +1 -1
  197. package/dist/components/table/table-master-detail.d.ts +11 -2
  198. package/dist/components/table/table-master-detail.js +20 -3
  199. package/dist/components/table/table-master-detail.js.map +1 -1
  200. package/dist/components/tag-input/snice-tag-input.d.ts +2 -2
  201. package/dist/components/tag-input/snice-tag-input.js +9 -15
  202. package/dist/components/tag-input/snice-tag-input.js.map +1 -1
  203. package/dist/index.cjs +127 -28
  204. package/dist/index.cjs.map +1 -1
  205. package/dist/index.esm.js +127 -28
  206. package/dist/index.esm.js.map +1 -1
  207. package/dist/index.iife.js +127 -28
  208. package/dist/index.iife.js.map +1 -1
  209. package/dist/react/SniceProvider.js +1 -1
  210. package/dist/react/SniceRouter.js +1 -1
  211. package/dist/react/index.js +1 -1
  212. package/dist/react/matchRoute.js +1 -1
  213. package/dist/react/useRequestHandler.js +1 -1
  214. package/dist/request-response.d.ts +24 -1
  215. package/dist/symbols.cjs +1 -1
  216. package/dist/symbols.esm.js +1 -1
  217. package/dist/testing-dom.cjs +1 -1
  218. package/dist/testing-dom.esm.js +1 -1
  219. package/dist/transitions.cjs +1 -1
  220. package/dist/transitions.esm.js +1 -1
  221. package/docs/ai/DEVELOPMENT.md +1 -1
  222. package/docs/ai/components/calendar.md +8 -0
  223. package/docs/ai/components/tag-input.md +4 -0
  224. package/docs/ai/controllers.md +22 -6
  225. package/docs/components/calendar.md +24 -0
  226. package/docs/components/tag-input.md +6 -1
  227. package/docs/controllers.md +57 -6
  228. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"snice-calendar.js","sources":["../../../components/calendar/snice-calendar.css?inline","../../../../components/calendar/snice-calendar.ts"],"sourcesContent":["export default \":host([hidden]){display:none}:host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style}.calendar{width:100%;max-width:37.5rem}.calendar__header{font-family:var(--snice-font-family-display, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);display:flex;align-items:center;justify-content:space-between;padding:var(--snice-spacing-md,1rem);background:var(--snice-color-surface,rgb(255 255 255));border-bottom:1px solid var(--snice-color-border,rgb(226 226 226))}.calendar__title{font-family:var(--snice-font-family-display, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);font-size:var(--snice-heading-md, 1.125rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--snice-color-text,rgb(23 23 23))}.calendar__nav{display:flex;gap:var(--snice-spacing-xs,.5rem)}.calendar__nav-button{padding:var(--snice-spacing-xs,.5rem) var(--snice-spacing-sm,.75rem);border:1px solid var(--snice-color-border,rgb(226 226 226));background:var(--snice-color-surface,rgb(255 255 255));border-radius:var(--snice-border-radius-md,.25rem);cursor:pointer;transition:background-color var(--snice-transition-fast, 150ms) ease,border-color var(--snice-transition-fast, 150ms) ease;font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text,rgb(23 23 23));font-family:inherit}.calendar__nav-button:hover{background:var(--snice-color-surface-container-low,rgb(250 250 250));border-color:var(--snice-color-border-hover,rgb(204 204 204))}.calendar__nav-button:focus-visible{outline:0;box-shadow:0 0 0 var(--snice-focus-ring-width,2px) var(--snice-focus-ring-color,rgb(59 130 246 / .5))}.calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);background:var(--snice-color-surface,rgb(255 255 255));container-type:inline-size}.calendar__weekday{padding:var(--snice-spacing-sm,.75rem);text-align:center;font-size:var(--snice-font-size-xs, .75rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--snice-color-text-secondary,rgb(82 82 82));text-transform:uppercase;letter-spacing:var(--snice-tracking-widest, .1em);border-bottom:1px solid var(--snice-color-border,rgb(226 226 226))}.calendar__day{box-sizing:border-box;min-width:0;min-height:max(calc(100cqw / 7),3rem,calc(2.125rem + var(--calendar-week-lanes,0) * 1.375rem + var(--calendar-week-more,0rem)));padding:var(--snice-spacing-xs,.5rem);border:1px solid var(--snice-color-border,rgb(226 226 226));border-top:none;border-left:none;cursor:pointer;transition:background-color var(--snice-transition-fast, 150ms) ease;position:relative;background:var(--snice-color-surface,rgb(255 255 255));color:var(--snice-color-text,rgb(23 23 23));overflow:hidden}.calendar__day:hover{background:var(--snice-color-surface-container-low,rgb(250 250 250))}.calendar__day:focus-visible{outline:0;box-shadow:inset 0 0 0 2px var(--snice-focus-ring-color,rgb(59 130 246 / .5))}.calendar__day:nth-child(7n+1){border-left:1px solid var(--snice-color-border,rgb(226 226 226))}.calendar__day--stretch{min-height:max(3rem,calc(2.125rem + var(--calendar-week-lanes,0) * 1.375rem + var(--calendar-week-more,0rem)))}.calendar__day--static{cursor:default}.calendar__day--static:hover{background:var(--snice-color-surface,rgb(255 255 255))}.calendar__day--static.calendar__day--today:hover{background:var(--snice-color-primary-subtle,rgb(239 246 255))}.calendar__day--other-month{background:var(--snice-color-surface,rgb(255 255 255));color:var(--snice-color-text-tertiary,rgb(115 115 115));opacity:.5}.calendar__day--other-month:hover{opacity:.7}.calendar__day--today{background:var(--snice-color-primary-subtle,rgb(239 246 255))}.calendar__day--today:hover{background:var(--snice-color-primary-subtle-hover,rgb(219 234 254))}.calendar__day--selected{background:var(--snice-color-primary,rgb(37 99 235));color:var(--snice-color-text-inverse,rgb(250 250 250))}.calendar__day--selected:hover{background:var(--snice-color-primary-hover,rgb(29 78 216))}.calendar__day--disabled{background:var(--snice-color-surface-container,rgb(241 241 241));color:var(--snice-color-text-tertiary,rgb(115 115 115));opacity:.5;cursor:not-allowed}.calendar__day--disabled:hover{background:var(--snice-color-surface-container,rgb(241 241 241))}.calendar__day-number{font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-medium,500);margin-bottom:var(--snice-spacing-2xs,.25rem)}.calendar__day--selected .calendar__day-number{color:var(--snice-color-text-inverse,rgb(250 250 250))}.calendar__event-bar{display:flex;align-items:center;gap:var(--snice-spacing-3xs,.125rem);align-self:start;margin-top:calc(1.875rem + var(--calendar-event-lane,0) * 1.375rem);margin-inline:var(--snice-spacing-3xs,0.125rem);height:1.125rem;line-height:1.125rem;font-size:var(--snice-font-size-2xs, .625rem);padding:0 var(--snice-spacing-2xs,.25rem);border-radius:var(--snice-border-radius-sm,.125rem);background:var(--snice-color-primary,rgb(37 99 235));color:var(--snice-color-text-inverse,rgb(250 250 250));white-space:nowrap;overflow:hidden;cursor:pointer;z-index:1;transition:opacity var(--snice-transition-fast, 150ms) ease}.calendar__event-title{overflow:hidden;text-overflow:ellipsis;min-width:0}.calendar__event-avatar{flex:none;--avatar-size:0.875rem;font-size:.375rem;border-radius:50%;overflow:hidden}.calendar__popover{position:fixed;z-index:var(--snice-z-floating,1000);min-width:14rem;max-width:22rem;padding:var(--snice-spacing-sm,.75rem);border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-md,.25rem);background:var(--snice-color-surface,rgb(255 255 255));color:var(--snice-color-text,rgb(23 23 23));font-size:var(--snice-font-size-sm, .875rem);line-height:1.5;box-shadow:var(--snice-shadow-lg,0 10px 15px -3px rgb(0 0 0 / .1))}.calendar__popover:focus-visible{outline:0;box-shadow:var(--snice-shadow-lg,0 10px 15px -3px rgb(0 0 0 / .1)),0 0 0 var(--snice-focus-ring-width,2px) var(--snice-focus-ring-color,rgb(59 130 246 / .5))}.calendar__popover-loading{color:var(--snice-color-text-secondary,rgb(82 82 82));font-size:var(--snice-font-size-xs, .75rem)}.calendar__tooltip{position:fixed;z-index:var(--snice-z-floating,1000);max-width:18rem;padding:var(--snice-spacing-2xs,.25rem) var(--snice-spacing-xs,.5rem);border-radius:var(--snice-border-radius-md,.25rem);background:var(--snice-tooltip-bg,rgb(51 51 51));color:var(--snice-color-text-inverse,rgb(250 250 250));font-size:var(--snice-font-size-xs, .75rem);line-height:1.4;box-shadow:var(--snice-shadow-md,0 4px 6px -1px rgb(0 0 0 / .1));pointer-events:none}.calendar__event-bar:hover{opacity:.8}.calendar__event-bar--continues-left{border-top-left-radius:0;border-bottom-left-radius:0;margin-inline-start:0}.calendar__event-bar--continues-right{border-top-right-radius:0;border-bottom-right-radius:0;margin-inline-end:0}.calendar__more{position:absolute;bottom:var(--snice-spacing-3xs,.125rem);left:var(--snice-spacing-2xs,.25rem);font-size:var(--snice-font-size-2xs, .625rem);color:var(--snice-color-text-secondary,rgb(82 82 82))}.calendar__week-number{padding:var(--snice-spacing-sm,.75rem) var(--snice-spacing-xs,.5rem);text-align:center;font-size:var(--snice-font-size-xs, .75rem);color:var(--snice-color-text-tertiary,rgb(115 115 115));background:var(--snice-color-surface-container-low,rgb(250 250 250));border-right:1px solid var(--snice-color-border,rgb(226 226 226))}.calendar--week .calendar__grid{grid-template-columns:repeat(7,1fr)}.calendar--week .calendar__day{min-height:7.5rem}.calendar--day .calendar__grid{grid-template-columns:1fr}.calendar--day .calendar__day{min-height:25rem}@media (prefers-reduced-motion:reduce){*{transition-duration:0s!important;animation-duration:0s!important}}\";","import { element, property, styles, dispatch, ready, watch, css, request, dispose } from 'snice';\nimport '../avatar/snice-avatar';\nimport type {\n SniceCalendarElement, CalendarView, CalendarEvent, CalendarEventTooltip,\n CalendarEventPopoverProvider,\n} from './snice-calendar.types';\nimport cssContent from './snice-calendar.css?inline';\n\n@element('snice-calendar')\nexport class SniceCalendar extends HTMLElement implements SniceCalendarElement {\n @property({ type: Date })\n value: Date | string = new Date();\n\n @property({ attribute: 'view' })\n view: CalendarView = 'month';\n\n @property({ type: Array, attribute: false })\n events: CalendarEvent[] = [];\n\n @property({ type: Date, attribute: 'min-date' })\n minDate: Date | string = '';\n\n @property({ type: Date, attribute: 'max-date' })\n maxDate: Date | string = '';\n\n @property({ type: Array, attribute: false })\n disabledDates: (Date | string)[] = [];\n\n @property({ type: Boolean, attribute: 'highlight-today' })\n highlightToday = true;\n\n @property({ type: Boolean, attribute: 'show-week-numbers' })\n showWeekNumbers = false;\n\n @property({ type: Number, attribute: 'first-day-of-week' })\n firstDayOfWeek = 0; // 0 = Sunday, 1 = Monday\n\n @property({ attribute: 'locale' })\n locale = 'en-US';\n\n @property({ type: Boolean, attribute: 'no-day-select' })\n noDaySelect = false;\n\n @property({ attribute: 'cell-sizing' })\n cellSizing: 'square' | 'stretch' = 'square';\n\n @property({ attribute: false })\n eventTooltip: CalendarEventTooltip | null = null;\n\n @property({ attribute: false })\n eventPopover: CalendarEventPopoverProvider | null = null;\n\n private displayDate = new Date();\n private tooltipEl!: HTMLElement;\n private tooltipToken = 0;\n private tooltipBar: HTMLElement | null = null;\n private popoverEl!: HTMLElement;\n private popoverToken = 0;\n private popoverBar: HTMLElement | null = null;\n private boundPopoverEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && this.popoverBar) this.closeEventPopover();\n };\n private boundPopoverOutside = (e: MouseEvent) => {\n if (!this.popoverBar) return;\n if (e.composedPath().includes(this.popoverEl)) return;\n this.closeEventPopover({ returnFocus: false });\n };\n private container!: HTMLElement;\n private header!: HTMLElement;\n private grid!: HTMLElement;\n private dayCells: HTMLElement[] = [];\n private focusedDate: Date | null = null;\n\n private computeRovingIndex(days: Date[]): number {\n // Prefer: focused → selected → today → first in-month day\n const same = (a: Date, b: Date) =>\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\n\n if (this.focusedDate) {\n const idx = days.findIndex(d => same(d, this.focusedDate!));\n if (idx >= 0) return idx;\n }\n if (this.value) {\n const s = this.value instanceof Date ? this.value : new Date(this.value);\n if (!isNaN(s.getTime())) {\n const idx = days.findIndex(d => same(d, s));\n if (idx >= 0) return idx;\n }\n }\n const today = new Date();\n const tIdx = days.findIndex(d => same(d, today));\n if (tIdx >= 0) return tIdx;\n return days.findIndex(d => d.getMonth() === this.displayDate.getMonth());\n }\n\n private handleGridKeydown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement;\n const currentDate = (target as any).__date as Date | undefined;\n if (!currentDate) return;\n\n let delta: number | null = null;\n let monthStep: 1 | -1 | null = null;\n switch (e.key) {\n case 'ArrowLeft': delta = -1; break;\n case 'ArrowRight': delta = 1; break;\n case 'ArrowUp': delta = -7; break;\n case 'ArrowDown': delta = 7; break;\n case 'Home': delta = -currentDate.getDay(); break;\n case 'End': delta = 6 - currentDate.getDay(); break;\n case 'PageUp': monthStep = -1; break;\n case 'PageDown': monthStep = 1; break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n this.handleDayClick(currentDate);\n return;\n default: return;\n }\n e.preventDefault();\n const next = new Date(currentDate);\n if (delta !== null) next.setDate(currentDate.getDate() + delta);\n if (monthStep !== null) next.setMonth(currentDate.getMonth() + monthStep);\n\n // If moved outside the displayed month, navigate.\n if (next.getMonth() !== this.displayDate.getMonth() ||\n next.getFullYear() !== this.displayDate.getFullYear()) {\n this.displayDate = new Date(next.getFullYear(), next.getMonth(), 1);\n }\n this.focusedDate = next;\n this.updateView();\n // Move focus to the newly-selected cell after DOM update.\n const sameAs = (d: Date, e2: Date) =>\n d.getFullYear() === e2.getFullYear() &&\n d.getMonth() === e2.getMonth() &&\n d.getDate() === e2.getDate();\n requestAnimationFrame(() => {\n const cell = this.dayCells.find(c => sameAs((c as any).__date, next));\n cell?.focus();\n });\n };\n\n @dispatch('calendar-change', { bubbles: true, composed: true })\n private dispatchChange() {\n return { value: this.value, calendar: this };\n }\n\n @dispatch('calendar-event-click', { bubbles: true, composed: true })\n private dispatchEventClick(event: CalendarEvent) {\n return { event, calendar: this };\n }\n\n @styles()\n styles() {\n return css/*css*/`${cssContent}`;\n }\n\n @ready()\n initialize() {\n this.createDOM();\n this.updateView();\n }\n\n private createDOM() {\n const shadow = this.shadowRoot!;\n\n // Create container\n this.container = document.createElement('div');\n this.container.className = `calendar calendar--${this.view}`;\n this.container.setAttribute('part', 'base');\n\n // Create header\n this.header = document.createElement('div');\n this.header.className = 'calendar__header';\n this.header.setAttribute('part', 'header');\n\n const title = document.createElement('div');\n title.className = 'calendar__title';\n\n const nav = document.createElement('div');\n nav.className = 'calendar__nav';\n\n const todayBtn = document.createElement('button');\n todayBtn.className = 'calendar__nav-button';\n todayBtn.textContent = 'Today';\n todayBtn.onclick = () => this.goToToday();\n\n const prevBtn = document.createElement('button');\n prevBtn.className = 'calendar__nav-button';\n prevBtn.textContent = '‹';\n prevBtn.onclick = () => this.previousMonth();\n\n const nextBtn = document.createElement('button');\n nextBtn.className = 'calendar__nav-button';\n nextBtn.textContent = '›';\n nextBtn.onclick = () => this.nextMonth();\n\n nav.appendChild(todayBtn);\n nav.appendChild(prevBtn);\n nav.appendChild(nextBtn);\n\n this.header.appendChild(title);\n this.header.appendChild(nav);\n\n // Create grid\n this.grid = document.createElement('div');\n this.grid.className = 'calendar__grid';\n this.grid.setAttribute('part', 'grid');\n\n // Add weekday headers. Every grid child gets an explicit position —\n // event stripe bars are placed explicitly, and mixing explicit items\n // with auto-flow would push auto-placed cells out of their slots.\n const weekdays = this.getWeekdays();\n weekdays.forEach((day, i) => {\n const weekdayEl = document.createElement('div');\n weekdayEl.className = 'calendar__weekday';\n weekdayEl.textContent = day;\n weekdayEl.style.gridRow = '1';\n weekdayEl.style.gridColumn = String(i + 1);\n this.grid.appendChild(weekdayEl);\n });\n\n // Mark grid for a11y\n this.grid.setAttribute('role', 'grid');\n this.grid.setAttribute('aria-label', 'Calendar');\n this.grid.addEventListener('keydown', this.handleGridKeydown);\n\n // Create 42 day cells\n for (let i = 0; i < 42; i++) {\n const dayCell = document.createElement('div');\n dayCell.className = 'calendar__day';\n dayCell.setAttribute('role', 'gridcell');\n // Roving tabindex: only one cell is tabbable at a time. Start by\n // making the first cell tabbable; updateView re-targets the focused\n // date so today/selected gets the 0.\n dayCell.setAttribute('tabindex', i === 0 ? '0' : '-1');\n\n dayCell.style.gridRow = String(Math.floor(i / 7) + 2);\n dayCell.style.gridColumn = String((i % 7) + 1);\n\n const dayNumber = document.createElement('div');\n dayNumber.className = 'calendar__day-number';\n dayCell.appendChild(dayNumber);\n\n this.grid.appendChild(dayCell);\n this.dayCells.push(dayCell);\n }\n\n // Shared tooltip overlay for event bars — one element, repositioned per\n // bar, so rich content can load lazily without a tooltip instance per bar.\n this.tooltipEl = document.createElement('div');\n this.tooltipEl.className = 'calendar__tooltip';\n this.tooltipEl.setAttribute('part', 'event-tooltip');\n this.tooltipEl.setAttribute('role', 'tooltip');\n this.tooltipEl.id = 'calendar-event-tooltip';\n this.tooltipEl.hidden = true;\n\n // Interactive click-to-open popover for event details. One shared panel,\n // anchored per bar; content may load lazily (provider or the\n // calendar/event-popover request channel).\n this.popoverEl = document.createElement('div');\n this.popoverEl.className = 'calendar__popover';\n this.popoverEl.setAttribute('part', 'event-popover');\n this.popoverEl.setAttribute('role', 'dialog');\n this.popoverEl.setAttribute('aria-label', 'Event details');\n this.popoverEl.tabIndex = -1;\n this.popoverEl.hidden = true;\n\n this.container.appendChild(this.header);\n this.container.appendChild(this.grid);\n this.container.appendChild(this.tooltipEl);\n this.container.appendChild(this.popoverEl);\n shadow.appendChild(this.container);\n }\n\n /**\n * Dynamic popover channel: yields `{ event }` so any\n * `@respond('calendar/event-popover')` controller can return the content.\n */\n @request('calendar/event-popover')\n private async *requestEventPopoverContent(event: CalendarEvent): any {\n return await (yield { event });\n }\n\n private async openEventPopover(bar: HTMLElement, event: CalendarEvent) {\n const token = ++this.popoverToken;\n this.hideEventTooltip();\n\n // Anchor + loading shell first, so slow content still feels responsive.\n this.popoverBar = bar;\n this.popoverEl.replaceChildren();\n const loading = document.createElement('div');\n loading.className = 'calendar__popover-loading';\n loading.textContent = 'Loading…';\n this.popoverEl.appendChild(loading);\n this.popoverEl.hidden = false;\n this.positionPopover(bar);\n document.addEventListener('keydown', this.boundPopoverEscape, true);\n document.addEventListener('mousedown', this.boundPopoverOutside, true);\n\n let content: string | Node | undefined;\n try {\n if (event.popover !== true && event.popover) {\n content = typeof event.popover === 'function' ? event.popover() : event.popover;\n } else if (this.eventPopover) {\n content = await this.eventPopover(event);\n } else {\n content = await this.requestEventPopoverContent(event);\n }\n } catch {\n // No responder discovered (or the provider failed) — close quietly.\n content = undefined;\n }\n\n if (token !== this.popoverToken) return; // closed (or replaced) meanwhile\n\n if (content == null) {\n console.warn(\n `[snice-calendar] event \"${String(event.id)}\" enables a popover but no content was provided — set eventPopover, event.popover content, or a @respond('calendar/event-popover') handler.`\n );\n this.closeEventPopover({ returnFocus: false });\n return;\n }\n\n if (typeof content === 'string') this.popoverEl.textContent = content;\n else this.popoverEl.replaceChildren(content);\n this.positionPopover(bar);\n this.popoverEl.focus();\n }\n\n private positionPopover(bar: HTMLElement) {\n const rect = bar.getBoundingClientRect();\n this.popoverEl.style.left = `${Math.max(4, rect.left)}px`;\n this.popoverEl.style.top = `${rect.bottom + 6}px`;\n }\n\n closeEventPopover(options: { returnFocus?: boolean } = {}): void {\n if (!this.popoverBar) return;\n this.popoverToken++;\n const bar = this.popoverBar;\n this.popoverBar = null;\n this.popoverEl.hidden = true;\n this.popoverEl.replaceChildren();\n document.removeEventListener('keydown', this.boundPopoverEscape, true);\n document.removeEventListener('mousedown', this.boundPopoverOutside, true);\n if (options.returnFocus !== false && bar.isConnected) bar.focus();\n }\n\n @dispose()\n cleanupPopover() {\n document.removeEventListener('keydown', this.boundPopoverEscape, true);\n document.removeEventListener('mousedown', this.boundPopoverOutside, true);\n }\n\n private async showEventTooltip(bar: HTMLElement, event: CalendarEvent) {\n const token = ++this.tooltipToken;\n const provider = this.eventTooltip;\n\n let content: string | Node | undefined;\n if (provider) {\n try {\n content = await provider(event);\n } catch {\n content = event.tooltip;\n }\n } else {\n content = event.tooltip;\n }\n\n // Pointer already left (or moved to another bar) while loading.\n if (token !== this.tooltipToken || content == null) return;\n\n if (typeof content === 'string') this.tooltipEl.textContent = content;\n else this.tooltipEl.replaceChildren(content);\n\n this.tooltipEl.hidden = false;\n this.tooltipBar = bar;\n bar.setAttribute('aria-describedby', this.tooltipEl.id);\n\n // Fixed positioning above the bar, clamped to the viewport.\n const rect = bar.getBoundingClientRect();\n this.tooltipEl.style.left = `${Math.max(4, rect.left)}px`;\n this.tooltipEl.style.top = `${Math.max(4, rect.top - this.tooltipEl.offsetHeight - 6)}px`;\n }\n\n private hideEventTooltip() {\n this.tooltipToken++;\n this.tooltipEl.hidden = true;\n this.tooltipBar?.removeAttribute('aria-describedby');\n this.tooltipBar = null;\n }\n\n private updateView() {\n // Update header title\n const monthName = this.displayDate.toLocaleDateString(this.locale, { month: 'long', year: 'numeric' });\n const titleEl = this.header.querySelector('.calendar__title') as HTMLElement;\n if (titleEl) titleEl.textContent = monthName;\n\n // Update day cells\n const days = this.getMonthDays();\n const currentMonth = this.displayDate.getMonth();\n\n // Resolve which cell should be tab-stoppable (roving tabindex).\n const rovingIndex = this.computeRovingIndex(days);\n\n days.forEach((date, i) => {\n const cell = this.dayCells[i];\n if (!cell) return;\n\n const isOtherMonth = date.getMonth() !== currentMonth;\n const isToday = this.highlightToday && this.isToday(date);\n // Display-only mode never shows a selection highlight.\n const isSelected = !this.noDaySelect && this.isSelected(date);\n const isDisabled = this.isDisabled(date);\n\n // Update classes (preserving role)\n cell.className = 'calendar__day';\n if (isOtherMonth) cell.classList.add('calendar__day--other-month');\n if (isToday) cell.classList.add('calendar__day--today');\n if (isSelected) cell.classList.add('calendar__day--selected');\n if (isDisabled) cell.classList.add('calendar__day--disabled');\n if (this.noDaySelect) cell.classList.add('calendar__day--static');\n if (this.cellSizing === 'stretch') cell.classList.add('calendar__day--stretch');\n\n cell.setAttribute('role', 'gridcell');\n cell.setAttribute('aria-selected', isSelected ? 'true' : 'false');\n cell.setAttribute('aria-disabled', isDisabled ? 'true' : 'false');\n cell.setAttribute('aria-current', isToday && !isOtherMonth ? 'date' : 'false');\n cell.setAttribute('tabindex', i === rovingIndex ? '0' : '-1');\n cell.setAttribute('aria-label', date.toLocaleDateString(this.locale, { dateStyle: 'full' }));\n (cell as any).__date = date;\n\n // Update day number\n const dayNumber = cell.querySelector('.calendar__day-number') as HTMLElement;\n if (dayNumber) dayNumber.textContent = String(date.getDate());\n\n // Update click handler\n cell.onclick = () => this.handleDayClick(date);\n });\n\n this.renderEventStripes(days);\n }\n\n /** Visible stacking depth for event stripes; deeper lanes collapse into a\n * per-day \"+N more\" chip. */\n private static readonly MAX_EVENT_LANES = 3;\n\n /**\n * Render events as continuous stripes: one bar per (event × week row),\n * spanning the event's days in that week and chopped at week boundaries\n * with continues-left/right styling. Overlapping events stack into lanes\n * per week — earlier start first, longer event first on ties — like\n * professional calendars.\n */\n private renderEventStripes(days: Date[]) {\n this.closeEventPopover({ returnFocus: false }); // anchors are re-created\n this.grid.querySelectorAll('.calendar__event-bar').forEach(el => el.remove());\n this.dayCells.forEach(cell => {\n cell.querySelector('.calendar__more')?.remove();\n cell.style.removeProperty('--calendar-week-lanes');\n cell.style.removeProperty('--calendar-week-more');\n });\n\n if (!this.events || this.events.length === 0) return;\n\n // Local-midnight timestamps for the visible grid; events normalize to the\n // same construction so lookups are exact (and DST-safe).\n const dayTimes = days.map(d => new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime());\n const dayIndex = new Map<number, number>(dayTimes.map((t, i) => [t, i]));\n const gridStart = dayTimes[0];\n const gridEnd = dayTimes[dayTimes.length - 1];\n\n const normalize = (d: Date | string): number => {\n const date = typeof d === 'string' ? new Date(d) : d;\n return new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();\n };\n\n type Segmentable = {\n event: CalendarEvent;\n startIdx: number;\n endIdx: number;\n startsBeforeGrid: boolean;\n endsAfterGrid: boolean;\n startTime: number;\n duration: number;\n order: number;\n };\n\n const resolved: Segmentable[] = [];\n this.events.forEach((event, order) => {\n if (!event.start) return;\n const startTime = normalize(event.start);\n if (isNaN(startTime)) return;\n const endTime = event.end ? Math.max(normalize(event.end), startTime) : startTime;\n if (isNaN(endTime) || endTime < gridStart || startTime > gridEnd) return;\n\n const startsBeforeGrid = startTime < gridStart;\n const endsAfterGrid = endTime > gridEnd;\n const startIdx = startsBeforeGrid ? 0 : dayIndex.get(startTime)!;\n const endIdx = endsAfterGrid ? dayTimes.length - 1 : dayIndex.get(endTime)!;\n resolved.push({\n event, startIdx, endIdx, startsBeforeGrid, endsAfterGrid,\n startTime, duration: endTime - startTime, order,\n });\n });\n\n resolved.sort((a, b) =>\n a.startTime - b.startTime || b.duration - a.duration || a.order - b.order);\n\n const hiddenPerDay = new Array(dayTimes.length).fill(0);\n const weekCount = Math.floor(dayTimes.length / 7);\n const weekLaneCounts = new Array(weekCount).fill(0);\n\n for (let week = 0; week < weekCount; week++) {\n const weekStart = week * 7;\n const weekEnd = weekStart + 6;\n // lanes[lane] holds the occupied [startCol, endCol] ranges in this week.\n const lanes: Array<Array<[number, number]>> = [];\n\n for (const item of resolved) {\n if (item.endIdx < weekStart || item.startIdx > weekEnd) continue;\n\n const segStart = Math.max(item.startIdx, weekStart);\n const segEnd = Math.min(item.endIdx, weekEnd);\n const startCol = segStart - weekStart;\n const endCol = segEnd - weekStart;\n\n let lane = 0;\n while (lanes[lane]?.some(([s, e]) => startCol <= e && endCol >= s)) lane++;\n (lanes[lane] ??= []).push([startCol, endCol]);\n weekLaneCounts[week] = Math.min(\n Math.max(weekLaneCounts[week], lane + 1), SniceCalendar.MAX_EVENT_LANES);\n\n if (lane >= SniceCalendar.MAX_EVENT_LANES) {\n for (let i = segStart; i <= segEnd; i++) hiddenPerDay[i]++;\n continue;\n }\n\n const continuesLeft = segStart > item.startIdx\n || (segStart === item.startIdx && item.startsBeforeGrid);\n const continuesRight = segEnd < item.endIdx\n || (segEnd === item.endIdx && item.endsAfterGrid);\n\n const bar = document.createElement('div');\n bar.className = 'calendar__event-bar';\n if (continuesLeft) bar.classList.add('calendar__event-bar--continues-left');\n if (continuesRight) bar.classList.add('calendar__event-bar--continues-right');\n\n // A custom className rides along on both the class list and the part\n // attribute, so events are styleable from outside via\n // ::part(<className>).\n const customClasses = item.event.className\n ? item.event.className.split(/\\s+/).filter(Boolean)\n : [];\n bar.classList.add(...customClasses);\n bar.setAttribute('part', ['event-bar', ...customClasses].join(' '));\n\n bar.setAttribute('data-event-id', String(item.event.id));\n bar.setAttribute('data-lane', String(lane));\n bar.style.gridRow = String(week + 2); // row 1 is the weekday header\n bar.style.gridColumn = `${startCol + 1} / ${endCol + 2}`;\n bar.style.setProperty('--calendar-event-lane', String(lane));\n if (item.event.color) bar.style.background = item.event.color;\n\n if (item.event.avatar) {\n const spec = typeof item.event.avatar === 'string'\n ? { src: item.event.avatar }\n : item.event.avatar;\n const avatar = document.createElement('snice-avatar') as any;\n avatar.className = 'calendar__event-avatar';\n avatar.setAttribute('part', 'event-avatar');\n // Attributes, not property assignments: the avatar's shape/size CSS\n // matches on :host([shape])/:host([size]) attribute selectors.\n avatar.setAttribute('size', 'xs');\n avatar.setAttribute('shape', 'circle');\n // Tiny thumbnail — eager: lazy-load buys nothing at this size and\n // stalls on very tall pages.\n avatar.setAttribute('loading', 'eager');\n if (spec.src) avatar.src = spec.src;\n if (spec.name) avatar.name = spec.name;\n if (spec.alt) avatar.alt = spec.alt;\n bar.appendChild(avatar);\n }\n const titleEl = document.createElement('span');\n titleEl.className = 'calendar__event-title';\n titleEl.textContent = item.event.title;\n bar.appendChild(titleEl);\n\n // Tooltip: static string, or lazy/rich content from eventTooltip.\n // The native title attribute stays only when no tooltip is configured.\n if (item.event.tooltip || this.eventTooltip) {\n bar.onmouseenter = () => this.showEventTooltip(bar, item.event);\n bar.onmouseleave = () => this.hideEventTooltip();\n } else {\n bar.title = item.event.title;\n }\n\n // Popover: strictly per-event opt-in — without `popover`, a click\n // only dispatches calendar-event-click and no request is issued.\n if (item.event.popover) {\n bar.setAttribute('role', 'button');\n bar.setAttribute('tabindex', '0');\n bar.setAttribute('aria-haspopup', 'dialog');\n bar.onkeydown = (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n this.openEventPopover(bar, item.event);\n }\n };\n bar.onclick = (e) => {\n this.handleEventClick(item.event, e);\n this.openEventPopover(bar, item.event);\n };\n } else {\n bar.onclick = (e) => this.handleEventClick(item.event, e);\n }\n this.grid.appendChild(bar);\n }\n }\n\n hiddenPerDay.forEach((count, i) => {\n if (count === 0) return;\n const cell = this.dayCells[i];\n if (!cell) return;\n const more = document.createElement('div');\n more.className = 'calendar__more';\n more.textContent = `+${count} more`;\n cell.appendChild(more);\n });\n\n // Reserve row height for the lane stack (and the \"+N more\" chip) so\n // stripes never spill past their week row — every cell in a week shares\n // the reservation, since the grid row is as tall as its tallest cell.\n for (let week = 0; week < weekCount; week++) {\n if (weekLaneCounts[week] === 0) continue;\n const weekHasMore = hiddenPerDay\n .slice(week * 7, week * 7 + 7).some(count => count > 0);\n for (let i = week * 7; i < week * 7 + 7; i++) {\n const cell = this.dayCells[i];\n if (!cell) continue;\n cell.style.setProperty('--calendar-week-lanes', String(weekLaneCounts[week]));\n if (weekHasMore) cell.style.setProperty('--calendar-week-more', '1rem');\n }\n }\n }\n\n goToToday(): void {\n this.displayDate = new Date();\n this.value = new Date();\n this.updateView();\n this.dispatchChange();\n }\n\n goToDate(date: Date | string): void {\n this.displayDate = typeof date === 'string' ? new Date(date) : date;\n this.value = this.displayDate;\n this.updateView();\n this.dispatchChange();\n }\n\n previousMonth(): void {\n this.displayDate = new Date(this.displayDate.getFullYear(), this.displayDate.getMonth() - 1);\n this.updateView();\n }\n\n nextMonth(): void {\n this.displayDate = new Date(this.displayDate.getFullYear(), this.displayDate.getMonth() + 1);\n this.updateView();\n }\n\n previousWeek(): void {\n this.displayDate = new Date(this.displayDate.getTime() - 7 * 24 * 60 * 60 * 1000);\n this.updateView();\n }\n\n nextWeek(): void {\n this.displayDate = new Date(this.displayDate.getTime() + 7 * 24 * 60 * 60 * 1000);\n this.updateView();\n }\n\n previousDay(): void {\n this.displayDate = new Date(this.displayDate.getTime() - 24 * 60 * 60 * 1000);\n this.updateView();\n }\n\n nextDay(): void {\n this.displayDate = new Date(this.displayDate.getTime() + 24 * 60 * 60 * 1000);\n this.updateView();\n }\n\n getDisplayedMonth(): { month: number; year: number } {\n return {\n month: this.displayDate.getMonth(),\n year: this.displayDate.getFullYear()\n };\n }\n\n getEventsForDate(date: Date | string): CalendarEvent[] {\n const targetDate = typeof date === 'string' ? new Date(date) : date;\n const targetTime = targetDate.getTime();\n\n return this.events.filter(event => {\n if (!event.start) return false;\n\n const startDate = typeof event.start === 'string' ? new Date(event.start) : event.start;\n const startTime = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate()).getTime();\n\n // If no end date, event is single day\n if (!event.end) {\n return this.isSameDay(targetDate, startDate);\n }\n\n // Multi-day event: check if target date falls between start and end\n const endDate = typeof event.end === 'string' ? new Date(event.end) : event.end;\n const endTime = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate()).getTime();\n\n return targetTime >= startTime && targetTime <= endTime;\n });\n }\n\n private formatDate(date: Date): string {\n return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n }\n\n private isSameDay(date1: Date, date2: Date): boolean {\n return this.formatDate(date1) === this.formatDate(date2);\n }\n\n private isToday(date: Date): boolean {\n return this.isSameDay(date, new Date());\n }\n\n private isSelected(date: Date): boolean {\n const valueDate = typeof this.value === 'string' ? new Date(this.value) : this.value;\n return this.isSameDay(date, valueDate);\n }\n\n private isDisabled(date: Date): boolean {\n if (this.minDate) {\n const min = typeof this.minDate === 'string' ? new Date(this.minDate) : this.minDate;\n if (date < min) return true;\n }\n\n if (this.maxDate) {\n const max = typeof this.maxDate === 'string' ? new Date(this.maxDate) : this.maxDate;\n if (date > max) return true;\n }\n\n return this.disabledDates.some(d => {\n const disabledDate = typeof d === 'string' ? new Date(d) : d;\n return this.isSameDay(date, disabledDate);\n });\n }\n\n private handleDayClick(date: Date) {\n // Display-only calendars: days are not selectable at all.\n if (this.noDaySelect) return;\n if (this.isDisabled(date)) return;\n\n this.value = date;\n this.updateView();\n this.dispatchChange();\n }\n\n private handleEventClick(event: CalendarEvent, e: Event) {\n e.stopPropagation();\n this.dispatchEventClick(event);\n }\n\n private getMonthDays(): Date[] {\n const year = this.displayDate.getFullYear();\n const month = this.displayDate.getMonth();\n\n // First day of the month\n const firstDay = new Date(year, month, 1);\n const firstDayOfWeek = firstDay.getDay();\n\n // Adjust for first day of week setting\n const daysToSubtract = (firstDayOfWeek - this.firstDayOfWeek + 7) % 7;\n const startDate = new Date(year, month, 1 - daysToSubtract);\n\n // Generate 42 days (6 weeks)\n const days: Date[] = [];\n for (let i = 0; i < 42; i++) {\n days.push(new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + i));\n }\n\n return days;\n }\n\n private getWeekdays(): string[] {\n const weekdays = [];\n const baseDate = new Date(2024, 0, this.firstDayOfWeek); // Start from a Sunday\n\n for (let i = 0; i < 7; i++) {\n const date = new Date(baseDate);\n date.setDate(baseDate.getDate() + i);\n weekdays.push(date.toLocaleDateString(this.locale, { weekday: 'short' }));\n }\n\n return weekdays;\n }\n\n @watch('value')\n @watch('events')\n @watch('eventTooltip')\n @watch('noDaySelect')\n @watch('cellSizing')\n handlePropertyChange() {\n if (this.grid) {\n this.updateView();\n }\n }\n\n @watch('locale')\n @watch('firstDayOfWeek')\n handleWeekdayInputsChange() {\n if (!this.grid) return;\n // Rebuild the weekday header row so the new locale / start-of-week is reflected.\n const existing = this.grid.querySelectorAll('.calendar__weekday');\n existing.forEach(el => el.remove());\n const weekdays = this.getWeekdays();\n weekdays.forEach((day, i) => {\n const weekdayEl = document.createElement('div');\n weekdayEl.className = 'calendar__weekday';\n weekdayEl.textContent = day;\n weekdayEl.style.gridRow = '1';\n weekdayEl.style.gridColumn = String(i + 1);\n // Insert before the first day cell so header row stays at the top\n this.grid.insertBefore(weekdayEl, this.grid.children[i] || null);\n });\n this.updateView();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'snice-calendar': SniceCalendar;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snice-calendar.js","sources":["../../../components/calendar/snice-calendar.css?inline","../../../../components/calendar/snice-calendar.ts"],"sourcesContent":["export default \":host([hidden]){display:none}:host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style}.calendar{width:100%;max-width:37.5rem}.calendar__header{font-family:var(--snice-font-family-display, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);display:flex;align-items:center;justify-content:space-between;padding:var(--snice-spacing-md,1rem);background:var(--snice-color-surface,rgb(255 255 255));border-bottom:1px solid var(--snice-color-border,rgb(226 226 226))}.calendar__title{font-family:var(--snice-font-family-display, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);font-size:var(--snice-heading-md, 1.125rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--snice-color-text,rgb(23 23 23))}.calendar__nav{display:flex;gap:var(--snice-spacing-xs,.5rem)}.calendar__nav-button{padding:var(--snice-spacing-xs,.5rem) var(--snice-spacing-sm,.75rem);border:1px solid var(--snice-color-border,rgb(226 226 226));background:var(--snice-color-surface,rgb(255 255 255));border-radius:var(--snice-border-radius-md,.25rem);cursor:pointer;transition:background-color var(--snice-transition-fast, 150ms) ease,border-color var(--snice-transition-fast, 150ms) ease;font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text,rgb(23 23 23));font-family:inherit}.calendar__nav-button:hover{background:var(--snice-color-surface-container-low,rgb(250 250 250));border-color:var(--snice-color-border-hover,rgb(204 204 204))}.calendar__nav-button:focus-visible{outline:0;box-shadow:0 0 0 var(--snice-focus-ring-width,2px) var(--snice-focus-ring-color,rgb(59 130 246 / .5))}.calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);background:var(--snice-color-surface,rgb(255 255 255));container-type:inline-size}.calendar__weekday{padding:var(--snice-spacing-sm,.75rem);text-align:center;font-size:var(--snice-font-size-xs, .75rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--snice-color-text-secondary,rgb(82 82 82));text-transform:uppercase;letter-spacing:var(--snice-tracking-widest, .1em);border-bottom:1px solid var(--snice-color-border,rgb(226 226 226))}.calendar__day{box-sizing:border-box;min-width:0;min-height:max(calc(100cqw / 7),3rem,calc(2.125rem + var(--calendar-week-lanes,0) * 1.375rem + var(--calendar-week-more,0rem)));padding:var(--snice-spacing-xs,.5rem);border:1px solid var(--snice-color-border,rgb(226 226 226));border-top:none;border-left:none;cursor:pointer;transition:background-color var(--snice-transition-fast, 150ms) ease;position:relative;background:var(--snice-color-surface,rgb(255 255 255));color:var(--snice-color-text,rgb(23 23 23));overflow:hidden}.calendar__day:hover{background:var(--snice-color-surface-container-low,rgb(250 250 250))}.calendar__day:focus-visible{outline:0;box-shadow:inset 0 0 0 2px var(--snice-focus-ring-color,rgb(59 130 246 / .5))}.calendar__day:nth-child(7n+1){border-left:1px solid var(--snice-color-border,rgb(226 226 226))}.calendar__day--stretch{min-height:max(3rem,calc(2.125rem + var(--calendar-week-lanes,0) * 1.375rem + var(--calendar-week-more,0rem)))}.calendar__day--static{cursor:default}.calendar__day--static:hover{background:var(--snice-color-surface,rgb(255 255 255))}.calendar__day--static.calendar__day--today:hover{background:var(--snice-color-primary-subtle,rgb(239 246 255))}.calendar__day--other-month{background:var(--snice-color-surface,rgb(255 255 255));color:var(--snice-color-text-tertiary,rgb(115 115 115));opacity:.5}.calendar__day--other-month:hover{opacity:.7}.calendar__day--today{background:var(--snice-color-primary-subtle,rgb(239 246 255))}.calendar__day--today:hover{background:var(--snice-color-primary-subtle-hover,rgb(219 234 254))}.calendar__day--selected{background:var(--snice-color-primary,rgb(37 99 235));color:var(--snice-color-text-inverse,rgb(250 250 250))}.calendar__day--selected:hover{background:var(--snice-color-primary-hover,rgb(29 78 216))}.calendar__day--disabled{background:var(--snice-color-surface-container,rgb(241 241 241));color:var(--snice-color-text-tertiary,rgb(115 115 115));opacity:.5;cursor:not-allowed}.calendar__day--disabled:hover{background:var(--snice-color-surface-container,rgb(241 241 241))}.calendar__day-number{font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-medium,500);margin-bottom:var(--snice-spacing-2xs,.25rem)}.calendar__day--selected .calendar__day-number{color:var(--snice-color-text-inverse,rgb(250 250 250))}.calendar__event-bar{display:flex;align-items:center;gap:var(--snice-spacing-3xs,.125rem);align-self:start;margin-top:calc(1.875rem + var(--calendar-event-lane,0) * 1.375rem);margin-inline:var(--snice-spacing-3xs,0.125rem);height:1.125rem;line-height:1.125rem;font-size:var(--snice-font-size-2xs, .625rem);padding:0 var(--snice-spacing-2xs,.25rem);border-radius:var(--snice-border-radius-sm,.125rem);background:var(--snice-color-primary,rgb(37 99 235));color:var(--snice-color-text-inverse,rgb(250 250 250));white-space:nowrap;overflow:hidden;cursor:pointer;z-index:1;transition:opacity var(--snice-transition-fast, 150ms) ease}.calendar__event-title{overflow:hidden;text-overflow:ellipsis;min-width:0}.calendar__event-avatar{flex:none;--avatar-size:0.875rem;font-size:.375rem;border-radius:50%;overflow:hidden}.calendar__popover{position:fixed;z-index:var(--snice-z-floating,1000);min-width:14rem;max-width:22rem;padding:var(--snice-spacing-sm,.75rem);border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-md,.25rem);background:var(--snice-color-surface,rgb(255 255 255));color:var(--snice-color-text,rgb(23 23 23));font-size:var(--snice-font-size-sm, .875rem);line-height:1.5;box-shadow:var(--snice-shadow-lg,0 10px 15px -3px rgb(0 0 0 / .1))}.calendar__popover:focus-visible{outline:0;box-shadow:var(--snice-shadow-lg,0 10px 15px -3px rgb(0 0 0 / .1)),0 0 0 var(--snice-focus-ring-width,2px) var(--snice-focus-ring-color,rgb(59 130 246 / .5))}.calendar__popover-loading{color:var(--snice-color-text-secondary,rgb(82 82 82));font-size:var(--snice-font-size-xs, .75rem)}.calendar__tooltip{position:fixed;z-index:var(--snice-z-floating,1000);max-width:18rem;padding:var(--snice-spacing-2xs,.25rem) var(--snice-spacing-xs,.5rem);border-radius:var(--snice-border-radius-md,.25rem);background:var(--snice-tooltip-bg,rgb(51 51 51));color:var(--snice-color-text-inverse,rgb(250 250 250));font-size:var(--snice-font-size-xs, .75rem);line-height:1.4;box-shadow:var(--snice-shadow-md,0 4px 6px -1px rgb(0 0 0 / .1));pointer-events:none}.calendar__event-bar:hover{opacity:.8}.calendar__event-bar--continues-left{border-top-left-radius:0;border-bottom-left-radius:0;margin-inline-start:0}.calendar__event-bar--continues-right{border-top-right-radius:0;border-bottom-right-radius:0;margin-inline-end:0}.calendar__more{position:absolute;bottom:var(--snice-spacing-3xs,.125rem);left:var(--snice-spacing-2xs,.25rem);font-size:var(--snice-font-size-xs, .75rem);font-weight:var(--snice-font-weight-medium,500);color:var(--snice-color-text,rgb(23 23 23));cursor:pointer}.calendar__more:hover{text-decoration:underline}.calendar__more:focus-visible{outline:0;box-shadow:0 0 0 var(--snice-focus-ring-width,2px) var(--snice-focus-ring-color,rgb(59 130 246 / .5))}.calendar__week-number{padding:var(--snice-spacing-sm,.75rem) var(--snice-spacing-xs,.5rem);text-align:center;font-size:var(--snice-font-size-xs, .75rem);color:var(--snice-color-text-tertiary,rgb(115 115 115));background:var(--snice-color-surface-container-low,rgb(250 250 250));border-right:1px solid var(--snice-color-border,rgb(226 226 226))}.calendar--week .calendar__grid{grid-template-columns:repeat(7,1fr)}.calendar--week .calendar__day{min-height:7.5rem}.calendar--day .calendar__grid{grid-template-columns:1fr}.calendar--day .calendar__day{min-height:25rem}@media (prefers-reduced-motion:reduce){*{transition-duration:0s!important;animation-duration:0s!important}}\";","import { element, property, styles, dispatch, ready, watch, css, request, dispose } from 'snice';\nimport '../avatar/snice-avatar';\nimport type {\n SniceCalendarElement, CalendarView, CalendarEvent, CalendarEventTooltip,\n CalendarEventPopoverProvider,\n} from './snice-calendar.types';\nimport cssContent from './snice-calendar.css?inline';\n\n@element('snice-calendar')\nexport class SniceCalendar extends HTMLElement implements SniceCalendarElement {\n @property({ type: Date })\n value: Date | string = new Date();\n\n @property({ attribute: 'view' })\n view: CalendarView = 'month';\n\n @property({ type: Array, attribute: false })\n events: CalendarEvent[] = [];\n\n @property({ type: Date, attribute: 'min-date' })\n minDate: Date | string = '';\n\n @property({ type: Date, attribute: 'max-date' })\n maxDate: Date | string = '';\n\n @property({ type: Array, attribute: false })\n disabledDates: (Date | string)[] = [];\n\n @property({ type: Boolean, attribute: 'highlight-today' })\n highlightToday = true;\n\n @property({ type: Boolean, attribute: 'show-week-numbers' })\n showWeekNumbers = false;\n\n @property({ type: Number, attribute: 'first-day-of-week' })\n firstDayOfWeek = 0; // 0 = Sunday, 1 = Monday\n\n @property({ attribute: 'locale' })\n locale = 'en-US';\n\n @property({ type: Boolean, attribute: 'no-day-select' })\n noDaySelect = false;\n\n @property({ attribute: 'cell-sizing' })\n cellSizing: 'square' | 'stretch' = 'square';\n\n @property({ attribute: false })\n eventTooltip: CalendarEventTooltip | null = null;\n\n @property({ attribute: false })\n eventPopover: CalendarEventPopoverProvider | null = null;\n\n private displayDate = new Date();\n private tooltipEl!: HTMLElement;\n private tooltipToken = 0;\n private tooltipBar: HTMLElement | null = null;\n private popoverEl!: HTMLElement;\n private popoverToken = 0;\n private popoverBar: HTMLElement | null = null;\n private boundPopoverEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && this.popoverBar) this.closeEventPopover();\n };\n private boundPopoverOutside = (e: MouseEvent) => {\n if (!this.popoverBar) return;\n if (e.composedPath().includes(this.popoverEl)) return;\n this.closeEventPopover({ returnFocus: false });\n };\n private container!: HTMLElement;\n private header!: HTMLElement;\n private grid!: HTMLElement;\n private dayCells: HTMLElement[] = [];\n private focusedDate: Date | null = null;\n\n private computeRovingIndex(days: Date[]): number {\n // Prefer: focused → selected → today → first in-month day\n const same = (a: Date, b: Date) =>\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\n\n if (this.focusedDate) {\n const idx = days.findIndex(d => same(d, this.focusedDate!));\n if (idx >= 0) return idx;\n }\n if (this.value) {\n const s = this.value instanceof Date ? this.value : new Date(this.value);\n if (!isNaN(s.getTime())) {\n const idx = days.findIndex(d => same(d, s));\n if (idx >= 0) return idx;\n }\n }\n const today = new Date();\n const tIdx = days.findIndex(d => same(d, today));\n if (tIdx >= 0) return tIdx;\n return days.findIndex(d => d.getMonth() === this.displayDate.getMonth());\n }\n\n private handleGridKeydown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement;\n const currentDate = (target as any).__date as Date | undefined;\n if (!currentDate) return;\n\n let delta: number | null = null;\n let monthStep: 1 | -1 | null = null;\n switch (e.key) {\n case 'ArrowLeft': delta = -1; break;\n case 'ArrowRight': delta = 1; break;\n case 'ArrowUp': delta = -7; break;\n case 'ArrowDown': delta = 7; break;\n case 'Home': delta = -currentDate.getDay(); break;\n case 'End': delta = 6 - currentDate.getDay(); break;\n case 'PageUp': monthStep = -1; break;\n case 'PageDown': monthStep = 1; break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n this.handleDayClick(currentDate);\n return;\n default: return;\n }\n e.preventDefault();\n const next = new Date(currentDate);\n if (delta !== null) next.setDate(currentDate.getDate() + delta);\n if (monthStep !== null) next.setMonth(currentDate.getMonth() + monthStep);\n\n // If moved outside the displayed month, navigate.\n if (next.getMonth() !== this.displayDate.getMonth() ||\n next.getFullYear() !== this.displayDate.getFullYear()) {\n this.displayDate = new Date(next.getFullYear(), next.getMonth(), 1);\n }\n this.focusedDate = next;\n this.updateView();\n // Move focus to the newly-selected cell after DOM update.\n const sameAs = (d: Date, e2: Date) =>\n d.getFullYear() === e2.getFullYear() &&\n d.getMonth() === e2.getMonth() &&\n d.getDate() === e2.getDate();\n requestAnimationFrame(() => {\n const cell = this.dayCells.find(c => sameAs((c as any).__date, next));\n cell?.focus();\n });\n };\n\n @dispatch('calendar-change', { bubbles: true, composed: true })\n private dispatchChange() {\n return { value: this.value, calendar: this };\n }\n\n @dispatch('calendar-event-click', { bubbles: true, composed: true })\n private dispatchEventClick(event: CalendarEvent) {\n return { event, calendar: this };\n }\n\n @dispatch('calendar-more-click', { bubbles: true, composed: true })\n private dispatchMoreClick(date: Date, count: number) {\n return { date, count, calendar: this };\n }\n\n @styles()\n styles() {\n return css/*css*/`${cssContent}`;\n }\n\n @ready()\n initialize() {\n this.createDOM();\n this.updateView();\n }\n\n private createDOM() {\n const shadow = this.shadowRoot!;\n\n // Create container\n this.container = document.createElement('div');\n this.container.className = `calendar calendar--${this.view}`;\n this.container.setAttribute('part', 'base');\n\n // Create header\n this.header = document.createElement('div');\n this.header.className = 'calendar__header';\n this.header.setAttribute('part', 'header');\n\n const title = document.createElement('div');\n title.className = 'calendar__title';\n\n const nav = document.createElement('div');\n nav.className = 'calendar__nav';\n\n const todayBtn = document.createElement('button');\n todayBtn.className = 'calendar__nav-button';\n todayBtn.textContent = 'Today';\n todayBtn.onclick = () => this.goToToday();\n\n const prevBtn = document.createElement('button');\n prevBtn.className = 'calendar__nav-button';\n prevBtn.textContent = '‹';\n prevBtn.onclick = () => this.previousMonth();\n\n const nextBtn = document.createElement('button');\n nextBtn.className = 'calendar__nav-button';\n nextBtn.textContent = '›';\n nextBtn.onclick = () => this.nextMonth();\n\n nav.appendChild(todayBtn);\n nav.appendChild(prevBtn);\n nav.appendChild(nextBtn);\n\n this.header.appendChild(title);\n this.header.appendChild(nav);\n\n // Create grid\n this.grid = document.createElement('div');\n this.grid.className = 'calendar__grid';\n this.grid.setAttribute('part', 'grid');\n\n // Add weekday headers. Every grid child gets an explicit position —\n // event stripe bars are placed explicitly, and mixing explicit items\n // with auto-flow would push auto-placed cells out of their slots.\n const weekdays = this.getWeekdays();\n weekdays.forEach((day, i) => {\n const weekdayEl = document.createElement('div');\n weekdayEl.className = 'calendar__weekday';\n weekdayEl.textContent = day;\n weekdayEl.style.gridRow = '1';\n weekdayEl.style.gridColumn = String(i + 1);\n this.grid.appendChild(weekdayEl);\n });\n\n // Mark grid for a11y\n this.grid.setAttribute('role', 'grid');\n this.grid.setAttribute('aria-label', 'Calendar');\n this.grid.addEventListener('keydown', this.handleGridKeydown);\n\n // Create 42 day cells\n for (let i = 0; i < 42; i++) {\n const dayCell = document.createElement('div');\n dayCell.className = 'calendar__day';\n dayCell.setAttribute('role', 'gridcell');\n // Roving tabindex: only one cell is tabbable at a time. Start by\n // making the first cell tabbable; updateView re-targets the focused\n // date so today/selected gets the 0.\n dayCell.setAttribute('tabindex', i === 0 ? '0' : '-1');\n\n dayCell.style.gridRow = String(Math.floor(i / 7) + 2);\n dayCell.style.gridColumn = String((i % 7) + 1);\n\n const dayNumber = document.createElement('div');\n dayNumber.className = 'calendar__day-number';\n dayCell.appendChild(dayNumber);\n\n this.grid.appendChild(dayCell);\n this.dayCells.push(dayCell);\n }\n\n // Shared tooltip overlay for event bars — one element, repositioned per\n // bar, so rich content can load lazily without a tooltip instance per bar.\n this.tooltipEl = document.createElement('div');\n this.tooltipEl.className = 'calendar__tooltip';\n this.tooltipEl.setAttribute('part', 'event-tooltip');\n this.tooltipEl.setAttribute('role', 'tooltip');\n this.tooltipEl.id = 'calendar-event-tooltip';\n this.tooltipEl.hidden = true;\n\n // Interactive click-to-open popover for event details. One shared panel,\n // anchored per bar; content may load lazily (provider or the\n // calendar/event-popover request channel).\n this.popoverEl = document.createElement('div');\n this.popoverEl.className = 'calendar__popover';\n this.popoverEl.setAttribute('part', 'event-popover');\n this.popoverEl.setAttribute('role', 'dialog');\n this.popoverEl.setAttribute('aria-label', 'Event details');\n this.popoverEl.tabIndex = -1;\n this.popoverEl.hidden = true;\n\n this.container.appendChild(this.header);\n this.container.appendChild(this.grid);\n this.container.appendChild(this.tooltipEl);\n this.container.appendChild(this.popoverEl);\n shadow.appendChild(this.container);\n }\n\n /**\n * Dynamic popover channel: yields `{ event }` so any\n * `@respond('calendar/event-popover')` controller can return the content.\n */\n @request('calendar/event-popover')\n private async *requestEventPopoverContent(event: CalendarEvent): any {\n return await (yield { event });\n }\n\n private async openEventPopover(bar: HTMLElement, event: CalendarEvent) {\n const token = ++this.popoverToken;\n this.hideEventTooltip();\n\n // Anchor + loading shell first, so slow content still feels responsive.\n this.popoverBar = bar;\n this.popoverEl.replaceChildren();\n const loading = document.createElement('div');\n loading.className = 'calendar__popover-loading';\n loading.textContent = 'Loading…';\n this.popoverEl.appendChild(loading);\n this.popoverEl.hidden = false;\n this.positionPopover(bar);\n document.addEventListener('keydown', this.boundPopoverEscape, true);\n document.addEventListener('mousedown', this.boundPopoverOutside, true);\n\n let content: string | Node | undefined;\n try {\n if (event.popover !== true && event.popover) {\n content = typeof event.popover === 'function' ? event.popover() : event.popover;\n } else if (this.eventPopover) {\n content = await this.eventPopover(event);\n } else {\n content = await this.requestEventPopoverContent(event);\n }\n } catch {\n // No responder discovered (or the provider failed) — close quietly.\n content = undefined;\n }\n\n if (token !== this.popoverToken) return; // closed (or replaced) meanwhile\n\n if (content == null) {\n console.warn(\n `[snice-calendar] event \"${String(event.id)}\" enables a popover but no content was provided — set eventPopover, event.popover content, or a @respond('calendar/event-popover') handler.`\n );\n this.closeEventPopover({ returnFocus: false });\n return;\n }\n\n if (typeof content === 'string') this.popoverEl.textContent = content;\n else this.popoverEl.replaceChildren(content);\n this.positionPopover(bar);\n this.popoverEl.focus();\n }\n\n private positionPopover(bar: HTMLElement) {\n const rect = bar.getBoundingClientRect();\n this.popoverEl.style.left = `${Math.max(4, rect.left)}px`;\n this.popoverEl.style.top = `${rect.bottom + 6}px`;\n }\n\n closeEventPopover(options: { returnFocus?: boolean } = {}): void {\n if (!this.popoverBar) return;\n this.popoverToken++;\n const bar = this.popoverBar;\n this.popoverBar = null;\n this.popoverEl.hidden = true;\n this.popoverEl.replaceChildren();\n document.removeEventListener('keydown', this.boundPopoverEscape, true);\n document.removeEventListener('mousedown', this.boundPopoverOutside, true);\n if (options.returnFocus !== false && bar.isConnected) bar.focus();\n }\n\n @dispose()\n cleanupPopover() {\n document.removeEventListener('keydown', this.boundPopoverEscape, true);\n document.removeEventListener('mousedown', this.boundPopoverOutside, true);\n }\n\n private async showEventTooltip(bar: HTMLElement, event: CalendarEvent) {\n const token = ++this.tooltipToken;\n const provider = this.eventTooltip;\n\n let content: string | Node | undefined;\n if (provider) {\n try {\n content = await provider(event);\n } catch {\n content = event.tooltip;\n }\n } else {\n content = event.tooltip;\n }\n\n // Pointer already left (or moved to another bar) while loading.\n if (token !== this.tooltipToken || content == null) return;\n\n if (typeof content === 'string') this.tooltipEl.textContent = content;\n else this.tooltipEl.replaceChildren(content);\n\n this.tooltipEl.hidden = false;\n this.tooltipBar = bar;\n bar.setAttribute('aria-describedby', this.tooltipEl.id);\n\n // Fixed positioning above the bar, clamped to the viewport.\n const rect = bar.getBoundingClientRect();\n this.tooltipEl.style.left = `${Math.max(4, rect.left)}px`;\n this.tooltipEl.style.top = `${Math.max(4, rect.top - this.tooltipEl.offsetHeight - 6)}px`;\n }\n\n private hideEventTooltip() {\n this.tooltipToken++;\n this.tooltipEl.hidden = true;\n this.tooltipBar?.removeAttribute('aria-describedby');\n this.tooltipBar = null;\n }\n\n private updateView() {\n // Update header title\n const monthName = this.displayDate.toLocaleDateString(this.locale, { month: 'long', year: 'numeric' });\n const titleEl = this.header.querySelector('.calendar__title') as HTMLElement;\n if (titleEl) titleEl.textContent = monthName;\n\n // Update day cells\n const days = this.getMonthDays();\n const currentMonth = this.displayDate.getMonth();\n\n // Resolve which cell should be tab-stoppable (roving tabindex).\n const rovingIndex = this.computeRovingIndex(days);\n\n days.forEach((date, i) => {\n const cell = this.dayCells[i];\n if (!cell) return;\n\n const isOtherMonth = date.getMonth() !== currentMonth;\n const isToday = this.highlightToday && this.isToday(date);\n // Display-only mode never shows a selection highlight.\n const isSelected = !this.noDaySelect && this.isSelected(date);\n const isDisabled = this.isDisabled(date);\n\n // Update classes (preserving role)\n cell.className = 'calendar__day';\n if (isOtherMonth) cell.classList.add('calendar__day--other-month');\n if (isToday) cell.classList.add('calendar__day--today');\n if (isSelected) cell.classList.add('calendar__day--selected');\n if (isDisabled) cell.classList.add('calendar__day--disabled');\n if (this.noDaySelect) cell.classList.add('calendar__day--static');\n if (this.cellSizing === 'stretch') cell.classList.add('calendar__day--stretch');\n\n cell.setAttribute('role', 'gridcell');\n cell.setAttribute('aria-selected', isSelected ? 'true' : 'false');\n cell.setAttribute('aria-disabled', isDisabled ? 'true' : 'false');\n cell.setAttribute('aria-current', isToday && !isOtherMonth ? 'date' : 'false');\n cell.setAttribute('tabindex', i === rovingIndex ? '0' : '-1');\n cell.setAttribute('aria-label', date.toLocaleDateString(this.locale, { dateStyle: 'full' }));\n (cell as any).__date = date;\n\n // Update day number\n const dayNumber = cell.querySelector('.calendar__day-number') as HTMLElement;\n if (dayNumber) dayNumber.textContent = String(date.getDate());\n\n // Update click handler\n cell.onclick = () => this.handleDayClick(date);\n });\n\n this.renderEventStripes(days);\n }\n\n /** Visible stacking depth for event stripes; deeper lanes collapse into a\n * per-day \"+N more\" chip. */\n private static readonly MAX_EVENT_LANES = 3;\n\n /**\n * Render events as continuous stripes: one bar per (event × week row),\n * spanning the event's days in that week and chopped at week boundaries\n * with continues-left/right styling. Overlapping events stack into lanes\n * per week — earlier start first, longer event first on ties — like\n * professional calendars.\n */\n private renderEventStripes(days: Date[]) {\n this.closeEventPopover({ returnFocus: false }); // anchors are re-created\n this.grid.querySelectorAll('.calendar__event-bar').forEach(el => el.remove());\n this.dayCells.forEach(cell => {\n cell.querySelector('.calendar__more')?.remove();\n cell.style.removeProperty('--calendar-week-lanes');\n cell.style.removeProperty('--calendar-week-more');\n });\n\n if (!this.events || this.events.length === 0) return;\n\n // Local-midnight timestamps for the visible grid; events normalize to the\n // same construction so lookups are exact (and DST-safe).\n const dayTimes = days.map(d => new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime());\n const dayIndex = new Map<number, number>(dayTimes.map((t, i) => [t, i]));\n const gridStart = dayTimes[0];\n const gridEnd = dayTimes[dayTimes.length - 1];\n\n const normalize = (d: Date | string): number => {\n const date = typeof d === 'string' ? new Date(d) : d;\n return new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();\n };\n\n type Segmentable = {\n event: CalendarEvent;\n startIdx: number;\n endIdx: number;\n startsBeforeGrid: boolean;\n endsAfterGrid: boolean;\n startTime: number;\n duration: number;\n order: number;\n };\n\n const resolved: Segmentable[] = [];\n this.events.forEach((event, order) => {\n if (!event.start) return;\n const startTime = normalize(event.start);\n if (isNaN(startTime)) return;\n const endTime = event.end ? Math.max(normalize(event.end), startTime) : startTime;\n if (isNaN(endTime) || endTime < gridStart || startTime > gridEnd) return;\n\n const startsBeforeGrid = startTime < gridStart;\n const endsAfterGrid = endTime > gridEnd;\n const startIdx = startsBeforeGrid ? 0 : dayIndex.get(startTime)!;\n const endIdx = endsAfterGrid ? dayTimes.length - 1 : dayIndex.get(endTime)!;\n resolved.push({\n event, startIdx, endIdx, startsBeforeGrid, endsAfterGrid,\n startTime, duration: endTime - startTime, order,\n });\n });\n\n resolved.sort((a, b) =>\n a.startTime - b.startTime || b.duration - a.duration || a.order - b.order);\n\n const hiddenPerDay = new Array(dayTimes.length).fill(0);\n const weekCount = Math.floor(dayTimes.length / 7);\n const weekLaneCounts = new Array(weekCount).fill(0);\n\n for (let week = 0; week < weekCount; week++) {\n const weekStart = week * 7;\n const weekEnd = weekStart + 6;\n // lanes[lane] holds the occupied [startCol, endCol] ranges in this week.\n const lanes: Array<Array<[number, number]>> = [];\n\n for (const item of resolved) {\n if (item.endIdx < weekStart || item.startIdx > weekEnd) continue;\n\n const segStart = Math.max(item.startIdx, weekStart);\n const segEnd = Math.min(item.endIdx, weekEnd);\n const startCol = segStart - weekStart;\n const endCol = segEnd - weekStart;\n\n let lane = 0;\n while (lanes[lane]?.some(([s, e]) => startCol <= e && endCol >= s)) lane++;\n (lanes[lane] ??= []).push([startCol, endCol]);\n weekLaneCounts[week] = Math.min(\n Math.max(weekLaneCounts[week], lane + 1), SniceCalendar.MAX_EVENT_LANES);\n\n if (lane >= SniceCalendar.MAX_EVENT_LANES) {\n for (let i = segStart; i <= segEnd; i++) hiddenPerDay[i]++;\n continue;\n }\n\n const continuesLeft = segStart > item.startIdx\n || (segStart === item.startIdx && item.startsBeforeGrid);\n const continuesRight = segEnd < item.endIdx\n || (segEnd === item.endIdx && item.endsAfterGrid);\n\n const bar = document.createElement('div');\n bar.className = 'calendar__event-bar';\n if (continuesLeft) bar.classList.add('calendar__event-bar--continues-left');\n if (continuesRight) bar.classList.add('calendar__event-bar--continues-right');\n\n // A custom className rides along on both the class list and the part\n // attribute, so events are styleable from outside via\n // ::part(<className>).\n const customClasses = item.event.className\n ? item.event.className.split(/\\s+/).filter(Boolean)\n : [];\n bar.classList.add(...customClasses);\n bar.setAttribute('part', ['event-bar', ...customClasses].join(' '));\n\n bar.setAttribute('data-event-id', String(item.event.id));\n bar.setAttribute('data-lane', String(lane));\n bar.style.gridRow = String(week + 2); // row 1 is the weekday header\n bar.style.gridColumn = `${startCol + 1} / ${endCol + 2}`;\n bar.style.setProperty('--calendar-event-lane', String(lane));\n if (item.event.color) bar.style.background = item.event.color;\n\n if (item.event.avatar) {\n const spec = typeof item.event.avatar === 'string'\n ? { src: item.event.avatar }\n : item.event.avatar;\n const avatar = document.createElement('snice-avatar') as any;\n avatar.className = 'calendar__event-avatar';\n avatar.setAttribute('part', 'event-avatar');\n // Attributes, not property assignments: the avatar's shape/size CSS\n // matches on :host([shape])/:host([size]) attribute selectors.\n avatar.setAttribute('size', 'xs');\n avatar.setAttribute('shape', 'circle');\n // Tiny thumbnail — eager: lazy-load buys nothing at this size and\n // stalls on very tall pages.\n avatar.setAttribute('loading', 'eager');\n if (spec.src) avatar.src = spec.src;\n if (spec.name) avatar.name = spec.name;\n if (spec.alt) avatar.alt = spec.alt;\n bar.appendChild(avatar);\n }\n const titleEl = document.createElement('span');\n titleEl.className = 'calendar__event-title';\n titleEl.textContent = item.event.title;\n bar.appendChild(titleEl);\n\n // Tooltip: static string, or lazy/rich content from eventTooltip.\n // The native title attribute stays only when no tooltip is configured.\n if (item.event.tooltip || this.eventTooltip) {\n bar.onmouseenter = () => this.showEventTooltip(bar, item.event);\n bar.onmouseleave = () => this.hideEventTooltip();\n } else {\n bar.title = item.event.title;\n }\n\n // Popover: strictly per-event opt-in — without `popover`, a click\n // only dispatches calendar-event-click and no request is issued.\n if (item.event.popover) {\n bar.setAttribute('role', 'button');\n bar.setAttribute('tabindex', '0');\n bar.setAttribute('aria-haspopup', 'dialog');\n bar.onkeydown = (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n this.openEventPopover(bar, item.event);\n }\n };\n bar.onclick = (e) => {\n this.handleEventClick(item.event, e);\n this.openEventPopover(bar, item.event);\n };\n } else {\n bar.onclick = (e) => this.handleEventClick(item.event, e);\n }\n this.grid.appendChild(bar);\n }\n }\n\n hiddenPerDay.forEach((count, i) => {\n if (count === 0) return;\n const cell = this.dayCells[i];\n if (!cell) return;\n const date = days[i];\n const more = document.createElement('div');\n more.className = 'calendar__more';\n more.setAttribute('part', 'more-chip');\n more.textContent = `+${count} more`;\n // The chip is its own control: it reports its day and hidden count, and\n // its clicks never fall through to the day cell's selection handler.\n more.setAttribute('role', 'button');\n more.setAttribute('tabindex', '0');\n more.setAttribute('aria-label',\n `${count} more event${count === 1 ? '' : 's'} on ${date.toLocaleDateString(this.locale, { dateStyle: 'full' })}`);\n more.onclick = (e) => this.handleMoreClick(date, count, e);\n more.onkeydown = (e) => {\n if (e.key !== 'Enter' && e.key !== ' ') return;\n e.preventDefault();\n this.handleMoreClick(date, count, e);\n };\n cell.appendChild(more);\n });\n\n // Reserve row height for the lane stack (and the \"+N more\" chip) so\n // stripes never spill past their week row — every cell in a week shares\n // the reservation, since the grid row is as tall as its tallest cell.\n for (let week = 0; week < weekCount; week++) {\n if (weekLaneCounts[week] === 0) continue;\n const weekHasMore = hiddenPerDay\n .slice(week * 7, week * 7 + 7).some(count => count > 0);\n for (let i = week * 7; i < week * 7 + 7; i++) {\n const cell = this.dayCells[i];\n if (!cell) continue;\n cell.style.setProperty('--calendar-week-lanes', String(weekLaneCounts[week]));\n if (weekHasMore) cell.style.setProperty('--calendar-week-more', '1rem');\n }\n }\n }\n\n goToToday(): void {\n this.displayDate = new Date();\n this.value = new Date();\n this.updateView();\n this.dispatchChange();\n }\n\n goToDate(date: Date | string): void {\n this.displayDate = typeof date === 'string' ? new Date(date) : date;\n this.value = this.displayDate;\n this.updateView();\n this.dispatchChange();\n }\n\n previousMonth(): void {\n this.displayDate = new Date(this.displayDate.getFullYear(), this.displayDate.getMonth() - 1);\n this.updateView();\n }\n\n nextMonth(): void {\n this.displayDate = new Date(this.displayDate.getFullYear(), this.displayDate.getMonth() + 1);\n this.updateView();\n }\n\n previousWeek(): void {\n this.displayDate = new Date(this.displayDate.getTime() - 7 * 24 * 60 * 60 * 1000);\n this.updateView();\n }\n\n nextWeek(): void {\n this.displayDate = new Date(this.displayDate.getTime() + 7 * 24 * 60 * 60 * 1000);\n this.updateView();\n }\n\n previousDay(): void {\n this.displayDate = new Date(this.displayDate.getTime() - 24 * 60 * 60 * 1000);\n this.updateView();\n }\n\n nextDay(): void {\n this.displayDate = new Date(this.displayDate.getTime() + 24 * 60 * 60 * 1000);\n this.updateView();\n }\n\n getDisplayedMonth(): { month: number; year: number } {\n return {\n month: this.displayDate.getMonth(),\n year: this.displayDate.getFullYear()\n };\n }\n\n getEventsForDate(date: Date | string): CalendarEvent[] {\n const targetDate = typeof date === 'string' ? new Date(date) : date;\n const targetTime = targetDate.getTime();\n\n return this.events.filter(event => {\n if (!event.start) return false;\n\n const startDate = typeof event.start === 'string' ? new Date(event.start) : event.start;\n const startTime = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate()).getTime();\n\n // If no end date, event is single day\n if (!event.end) {\n return this.isSameDay(targetDate, startDate);\n }\n\n // Multi-day event: check if target date falls between start and end\n const endDate = typeof event.end === 'string' ? new Date(event.end) : event.end;\n const endTime = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate()).getTime();\n\n return targetTime >= startTime && targetTime <= endTime;\n });\n }\n\n private formatDate(date: Date): string {\n return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n }\n\n private isSameDay(date1: Date, date2: Date): boolean {\n return this.formatDate(date1) === this.formatDate(date2);\n }\n\n private isToday(date: Date): boolean {\n return this.isSameDay(date, new Date());\n }\n\n private isSelected(date: Date): boolean {\n const valueDate = typeof this.value === 'string' ? new Date(this.value) : this.value;\n return this.isSameDay(date, valueDate);\n }\n\n private isDisabled(date: Date): boolean {\n if (this.minDate) {\n const min = typeof this.minDate === 'string' ? new Date(this.minDate) : this.minDate;\n if (date < min) return true;\n }\n\n if (this.maxDate) {\n const max = typeof this.maxDate === 'string' ? new Date(this.maxDate) : this.maxDate;\n if (date > max) return true;\n }\n\n return this.disabledDates.some(d => {\n const disabledDate = typeof d === 'string' ? new Date(d) : d;\n return this.isSameDay(date, disabledDate);\n });\n }\n\n private handleDayClick(date: Date) {\n // Display-only calendars: days are not selectable at all.\n if (this.noDaySelect) return;\n if (this.isDisabled(date)) return;\n\n this.value = date;\n this.updateView();\n this.dispatchChange();\n }\n\n private handleEventClick(event: CalendarEvent, e: Event) {\n e.stopPropagation();\n this.dispatchEventClick(event);\n }\n\n private handleMoreClick(date: Date, count: number, e: Event) {\n e.stopPropagation();\n this.dispatchMoreClick(date, count);\n }\n\n private getMonthDays(): Date[] {\n const year = this.displayDate.getFullYear();\n const month = this.displayDate.getMonth();\n\n // First day of the month\n const firstDay = new Date(year, month, 1);\n const firstDayOfWeek = firstDay.getDay();\n\n // Adjust for first day of week setting\n const daysToSubtract = (firstDayOfWeek - this.firstDayOfWeek + 7) % 7;\n const startDate = new Date(year, month, 1 - daysToSubtract);\n\n // Generate 42 days (6 weeks)\n const days: Date[] = [];\n for (let i = 0; i < 42; i++) {\n days.push(new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + i));\n }\n\n return days;\n }\n\n private getWeekdays(): string[] {\n const weekdays = [];\n const baseDate = new Date(2024, 0, this.firstDayOfWeek); // Start from a Sunday\n\n for (let i = 0; i < 7; i++) {\n const date = new Date(baseDate);\n date.setDate(baseDate.getDate() + i);\n weekdays.push(date.toLocaleDateString(this.locale, { weekday: 'short' }));\n }\n\n return weekdays;\n }\n\n @watch('value')\n @watch('events')\n @watch('eventTooltip')\n @watch('noDaySelect')\n @watch('cellSizing')\n handlePropertyChange() {\n if (this.grid) {\n this.updateView();\n }\n }\n\n @watch('locale')\n @watch('firstDayOfWeek')\n handleWeekdayInputsChange() {\n if (!this.grid) return;\n // Rebuild the weekday header row so the new locale / start-of-week is reflected.\n const existing = this.grid.querySelectorAll('.calendar__weekday');\n existing.forEach(el => el.remove());\n const weekdays = this.getWeekdays();\n weekdays.forEach((day, i) => {\n const weekdayEl = document.createElement('div');\n weekdayEl.className = 'calendar__weekday';\n weekdayEl.textContent = day;\n weekdayEl.style.gridRow = '1';\n weekdayEl.style.gridColumn = String(i + 1);\n // Insert before the first day cell so header row stays at the top\n this.grid.insertBefore(weekdayEl, this.grid.children[i] || null);\n });\n this.updateView();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'snice-calendar': SniceCalendar;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -36,6 +36,12 @@ export declare class SniceRow extends HTMLElement implements SniceRowElement {
36
36
  render(): import("snice").TemplateResult;
37
37
  styles(): import("snice").CSSResult;
38
38
  init(): void;
39
+ /**
40
+ * The column's working value for this row: `valueGetter` runs for display
41
+ * here exactly as it does on the table's own render path, so a column whose
42
+ * key names a server field rather than a row field still paints.
43
+ */
44
+ private cellValue;
39
45
  private configureCells;
40
46
  updateSelection(): void;
41
47
  updateRowAttributes(): void;
@@ -159,6 +159,15 @@ let SniceRow = (() => {
159
159
  this.updateRowAttributes();
160
160
  this.configureCells();
161
161
  }
162
+ /**
163
+ * The column's working value for this row: `valueGetter` runs for display
164
+ * here exactly as it does on the table's own render path, so a column whose
165
+ * key names a server field rather than a row field still paints.
166
+ */
167
+ cellValue(column) {
168
+ const raw = this.data?.[column.key];
169
+ return column.valueGetter ? column.valueGetter(raw, this.data) : raw;
170
+ }
162
171
  configureCells() {
163
172
  if (!this.columns) {
164
173
  return;
@@ -166,7 +175,7 @@ let SniceRow = (() => {
166
175
  this.columns.forEach((column, index) => {
167
176
  const cellElement = this.shadowRoot?.querySelector(`[data-column-index="${index}"]`);
168
177
  if (cellElement) {
169
- const value = this.data[column.key];
178
+ const value = this.cellValue(column);
170
179
  if (typeof column.renderCell === 'function') {
171
180
  const output = column.renderCell(value, this.data, column);
172
181
  const replacement = output instanceof HTMLElement ? output : document.createElement('span');
@@ -178,7 +187,7 @@ let SniceRow = (() => {
178
187
  return;
179
188
  }
180
189
  const formatter = column.formatter || column.valueFormatter;
181
- cellElement.value = formatter ? formatter(value, this.data) : value;
190
+ cellElement.value = formatter ? String(formatter(value, this.data) ?? '') : value;
182
191
  cellElement.column = formatter
183
192
  ? { ...column, type: 'text', formatter: undefined, valueFormatter: undefined }
184
193
  : column;
@@ -268,7 +277,6 @@ let SniceRow = (() => {
268
277
  `;
269
278
  }
270
279
  renderCell(column, columnIndex) {
271
- this.data[column.key];
272
280
  const cellComponent = this.getCellComponent(column.formatter || column.valueFormatter ? 'text' : column.type);
273
281
  return html /*html*/ `
274
282
  <div class="cell cell--${column.type}" part="cell" style="${this.getCellStyles(column)}">