snice 2.5.4 → 3.1.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 (323) hide show
  1. package/README.md +501 -882
  2. package/bin/templates/base/src/components/counter-button.ts +13 -26
  3. package/bin/templates/base/src/controllers/counter-controller.ts +3 -3
  4. package/dist/components/accordion/snice-accordion-item.d.ts +4 -5
  5. package/dist/components/accordion/snice-accordion-item.js +37 -39
  6. package/dist/components/accordion/snice-accordion-item.js.map +1 -1
  7. package/dist/components/accordion/snice-accordion.d.ts +5 -11
  8. package/dist/components/accordion/snice-accordion.js +51 -52
  9. package/dist/components/accordion/snice-accordion.js.map +1 -1
  10. package/dist/components/alert/snice-alert.d.ts +2 -6
  11. package/dist/components/alert/snice-alert.js +41 -56
  12. package/dist/components/alert/snice-alert.js.map +1 -1
  13. package/dist/components/avatar/snice-avatar.d.ts +2 -6
  14. package/dist/components/avatar/snice-avatar.js +64 -71
  15. package/dist/components/avatar/snice-avatar.js.map +1 -1
  16. package/dist/components/badge/snice-badge.d.ts +2 -3
  17. package/dist/components/badge/snice-badge.js +22 -23
  18. package/dist/components/badge/snice-badge.js.map +1 -1
  19. package/dist/components/breadcrumbs/snice-breadcrumbs.d.ts +5 -12
  20. package/dist/components/breadcrumbs/snice-breadcrumbs.js +88 -89
  21. package/dist/components/breadcrumbs/snice-breadcrumbs.js.map +1 -1
  22. package/dist/components/button/snice-button.d.ts +3 -7
  23. package/dist/components/button/snice-button.js +37 -58
  24. package/dist/components/button/snice-button.js.map +1 -1
  25. package/dist/components/card/snice-card.d.ts +5 -8
  26. package/dist/components/card/snice-card.js +71 -56
  27. package/dist/components/card/snice-card.js.map +1 -1
  28. package/dist/components/checkbox/snice-checkbox.d.ts +4 -13
  29. package/dist/components/checkbox/snice-checkbox.js +66 -137
  30. package/dist/components/checkbox/snice-checkbox.js.map +1 -1
  31. package/dist/components/chip/snice-chip.d.ts +5 -11
  32. package/dist/components/chip/snice-chip.js +44 -47
  33. package/dist/components/chip/snice-chip.js.map +1 -1
  34. package/dist/components/date-picker/snice-date-picker.d.ts +11 -11
  35. package/dist/components/date-picker/snice-date-picker.js +134 -133
  36. package/dist/components/date-picker/snice-date-picker.js.map +1 -1
  37. package/dist/components/divider/snice-divider.d.ts +2 -4
  38. package/dist/components/divider/snice-divider.js +14 -22
  39. package/dist/components/divider/snice-divider.js.map +1 -1
  40. package/dist/components/drawer/snice-drawer.d.ts +4 -4
  41. package/dist/components/drawer/snice-drawer.js +25 -19
  42. package/dist/components/drawer/snice-drawer.js.map +1 -1
  43. package/dist/components/input/snice-input.d.ts +8 -6
  44. package/dist/components/input/snice-input.js +122 -105
  45. package/dist/components/input/snice-input.js.map +1 -1
  46. package/dist/components/layout/snice-layout-blog.d.ts +4 -4
  47. package/dist/components/layout/snice-layout-blog.js +21 -19
  48. package/dist/components/layout/snice-layout-blog.js.map +1 -1
  49. package/dist/components/layout/snice-layout-card.d.ts +2 -2
  50. package/dist/components/layout/snice-layout-card.js +16 -9
  51. package/dist/components/layout/snice-layout-card.js.map +1 -1
  52. package/dist/components/layout/snice-layout-centered.d.ts +2 -2
  53. package/dist/components/layout/snice-layout-centered.js +14 -7
  54. package/dist/components/layout/snice-layout-centered.js.map +1 -1
  55. package/dist/components/layout/snice-layout-dashboard.d.ts +5 -5
  56. package/dist/components/layout/snice-layout-dashboard.js +38 -30
  57. package/dist/components/layout/snice-layout-dashboard.js.map +1 -1
  58. package/dist/components/layout/snice-layout-fullscreen.d.ts +2 -2
  59. package/dist/components/layout/snice-layout-fullscreen.js +17 -10
  60. package/dist/components/layout/snice-layout-fullscreen.js.map +1 -1
  61. package/dist/components/layout/snice-layout-landing.d.ts +4 -4
  62. package/dist/components/layout/snice-layout-landing.js +21 -19
  63. package/dist/components/layout/snice-layout-landing.js.map +1 -1
  64. package/dist/components/layout/snice-layout-minimal.d.ts +2 -2
  65. package/dist/components/layout/snice-layout-minimal.js +17 -6
  66. package/dist/components/layout/snice-layout-minimal.js.map +1 -1
  67. package/dist/components/layout/snice-layout-sidebar.d.ts +5 -4
  68. package/dist/components/layout/snice-layout-sidebar.js +42 -20
  69. package/dist/components/layout/snice-layout-sidebar.js.map +1 -1
  70. package/dist/components/layout/snice-layout-split.d.ts +2 -2
  71. package/dist/components/layout/snice-layout-split.js +14 -7
  72. package/dist/components/layout/snice-layout-split.js.map +1 -1
  73. package/dist/components/layout/snice-layout.d.ts +4 -4
  74. package/dist/components/layout/snice-layout.js +16 -10
  75. package/dist/components/layout/snice-layout.js.map +1 -1
  76. package/dist/components/login/snice-login.d.ts +6 -11
  77. package/dist/components/login/snice-login.js +97 -71
  78. package/dist/components/login/snice-login.js.map +1 -1
  79. package/dist/components/modal/snice-modal.d.ts +5 -9
  80. package/dist/components/modal/snice-modal.js +47 -78
  81. package/dist/components/modal/snice-modal.js.map +1 -1
  82. package/dist/components/nav/snice-nav.d.ts +13 -7
  83. package/dist/components/nav/snice-nav.js +191 -100
  84. package/dist/components/nav/snice-nav.js.map +1 -1
  85. package/dist/components/nav/snice-nav.types.d.ts +3 -3
  86. package/dist/components/pagination/snice-pagination.d.ts +6 -7
  87. package/dist/components/pagination/snice-pagination.js +94 -81
  88. package/dist/components/pagination/snice-pagination.js.map +1 -1
  89. package/dist/components/progress/snice-progress.d.ts +2 -7
  90. package/dist/components/progress/snice-progress.js +41 -98
  91. package/dist/components/progress/snice-progress.js.map +1 -1
  92. package/dist/components/radio/snice-radio.d.ts +4 -4
  93. package/dist/components/radio/snice-radio.js +52 -44
  94. package/dist/components/radio/snice-radio.js.map +1 -1
  95. package/dist/components/select/snice-option.d.ts +2 -1
  96. package/dist/components/select/snice-option.js +12 -5
  97. package/dist/components/select/snice-option.js.map +1 -1
  98. package/dist/components/select/snice-select.d.ts +9 -21
  99. package/dist/components/select/snice-select.js +98 -170
  100. package/dist/components/select/snice-select.js.map +1 -1
  101. package/dist/components/skeleton/snice-skeleton.d.ts +2 -6
  102. package/dist/components/skeleton/snice-skeleton.js +18 -49
  103. package/dist/components/skeleton/snice-skeleton.js.map +1 -1
  104. package/dist/components/snice-cell-BLFVdxPp.js +4 -0
  105. package/dist/components/snice-cell-BLFVdxPp.js.map +1 -0
  106. package/dist/components/switch/snice-switch.d.ts +2 -2
  107. package/dist/components/switch/snice-switch.js +38 -26
  108. package/dist/components/switch/snice-switch.js.map +1 -1
  109. package/dist/components/table/snice-cell-actions.d.ts +24 -0
  110. package/dist/components/table/snice-cell-actions.js +149 -0
  111. package/dist/components/table/snice-cell-actions.js.map +1 -0
  112. package/dist/components/table/snice-cell-boolean.d.ts +2 -2
  113. package/dist/components/table/snice-cell-boolean.js +13 -7
  114. package/dist/components/table/snice-cell-boolean.js.map +1 -1
  115. package/dist/components/table/snice-cell-color.d.ts +18 -0
  116. package/dist/components/table/snice-cell-color.js +149 -0
  117. package/dist/components/table/snice-cell-color.js.map +1 -0
  118. package/dist/components/table/snice-cell-currency.d.ts +24 -0
  119. package/dist/components/table/snice-cell-currency.js +235 -0
  120. package/dist/components/table/snice-cell-currency.js.map +1 -0
  121. package/dist/components/table/snice-cell-date.d.ts +2 -2
  122. package/dist/components/table/snice-cell-date.js +14 -8
  123. package/dist/components/table/snice-cell-date.js.map +1 -1
  124. package/dist/components/table/snice-cell-duration.d.ts +2 -2
  125. package/dist/components/table/snice-cell-duration.js +12 -6
  126. package/dist/components/table/snice-cell-duration.js.map +1 -1
  127. package/dist/components/table/snice-cell-email.d.ts +15 -0
  128. package/dist/components/table/snice-cell-email.js +125 -0
  129. package/dist/components/table/snice-cell-email.js.map +1 -0
  130. package/dist/components/table/snice-cell-filesize.d.ts +2 -2
  131. package/dist/components/table/snice-cell-filesize.js +12 -6
  132. package/dist/components/table/snice-cell-filesize.js.map +1 -1
  133. package/dist/components/table/snice-cell-image.d.ts +20 -0
  134. package/dist/components/table/snice-cell-image.js +162 -0
  135. package/dist/components/table/snice-cell-image.js.map +1 -0
  136. package/dist/components/table/snice-cell-json.d.ts +20 -0
  137. package/dist/components/table/snice-cell-json.js +186 -0
  138. package/dist/components/table/snice-cell-json.js.map +1 -0
  139. package/dist/components/table/snice-cell-link.d.ts +17 -0
  140. package/dist/components/table/snice-cell-link.js +142 -0
  141. package/dist/components/table/snice-cell-link.js.map +1 -0
  142. package/dist/components/table/snice-cell-location.d.ts +19 -0
  143. package/dist/components/table/snice-cell-location.js +185 -0
  144. package/dist/components/table/snice-cell-location.js.map +1 -0
  145. package/dist/components/table/snice-cell-number.d.ts +2 -2
  146. package/dist/components/table/snice-cell-number.js +12 -6
  147. package/dist/components/table/snice-cell-number.js.map +1 -1
  148. package/dist/components/table/snice-cell-percentage.d.ts +22 -0
  149. package/dist/components/table/snice-cell-percentage.js +208 -0
  150. package/dist/components/table/snice-cell-percentage.js.map +1 -0
  151. package/dist/components/table/snice-cell-phone.d.ts +18 -0
  152. package/dist/components/table/snice-cell-phone.js +153 -0
  153. package/dist/components/table/snice-cell-phone.js.map +1 -0
  154. package/dist/components/table/snice-cell-progress.d.ts +2 -2
  155. package/dist/components/table/snice-cell-progress.js +12 -6
  156. package/dist/components/table/snice-cell-progress.js.map +1 -1
  157. package/dist/components/table/snice-cell-rating.d.ts +2 -2
  158. package/dist/components/table/snice-cell-rating.js +12 -6
  159. package/dist/components/table/snice-cell-rating.js.map +1 -1
  160. package/dist/components/table/snice-cell-sparkline.d.ts +2 -2
  161. package/dist/components/table/snice-cell-sparkline.js +13 -7
  162. package/dist/components/table/snice-cell-sparkline.js.map +1 -1
  163. package/dist/components/table/snice-cell-status.d.ts +17 -0
  164. package/dist/components/table/snice-cell-status.js +144 -0
  165. package/dist/components/table/snice-cell-status.js.map +1 -0
  166. package/dist/components/table/snice-cell-tag.d.ts +16 -0
  167. package/dist/components/table/snice-cell-tag.js +131 -0
  168. package/dist/components/table/snice-cell-tag.js.map +1 -0
  169. package/dist/components/table/snice-cell-text.d.ts +2 -2
  170. package/dist/components/table/snice-cell-text.js +14 -8
  171. package/dist/components/table/snice-cell-text.js.map +1 -1
  172. package/dist/components/table/snice-cell.d.ts +2 -2
  173. package/dist/components/table/snice-cell.js +12 -6
  174. package/dist/components/table/snice-cell.js.map +1 -1
  175. package/dist/components/table/snice-column.d.ts +1 -1
  176. package/dist/components/table/snice-column.js +6 -3
  177. package/dist/components/table/snice-column.js.map +1 -1
  178. package/dist/components/table/snice-header.d.ts +5 -5
  179. package/dist/components/table/snice-header.js +60 -50
  180. package/dist/components/table/snice-header.js.map +1 -1
  181. package/dist/components/table/snice-progress.d.ts +2 -2
  182. package/dist/components/table/snice-progress.js +18 -11
  183. package/dist/components/table/snice-progress.js.map +1 -1
  184. package/dist/components/table/snice-rating.d.ts +2 -2
  185. package/dist/components/table/snice-rating.js +15 -8
  186. package/dist/components/table/snice-rating.js.map +1 -1
  187. package/dist/components/table/snice-row.d.ts +17 -6
  188. package/dist/components/table/snice-row.js +95 -44
  189. package/dist/components/table/snice-row.js.map +1 -1
  190. package/dist/components/table/snice-table.d.ts +18 -10
  191. package/dist/components/table/snice-table.js +355 -173
  192. package/dist/components/table/snice-table.js.map +1 -1
  193. package/dist/components/table/snice-table.types.d.ts +101 -2
  194. package/dist/components/tabs/snice-tab-panel.d.ts +2 -2
  195. package/dist/components/tabs/snice-tab-panel.js +12 -6
  196. package/dist/components/tabs/snice-tab-panel.js.map +1 -1
  197. package/dist/components/tabs/snice-tab.d.ts +6 -5
  198. package/dist/components/tabs/snice-tab.js +36 -19
  199. package/dist/components/tabs/snice-tab.js.map +1 -1
  200. package/dist/components/tabs/snice-tabs.d.ts +5 -5
  201. package/dist/components/tabs/snice-tabs.js +38 -28
  202. package/dist/components/tabs/snice-tabs.js.map +1 -1
  203. package/dist/components/toast/snice-toast-container.d.ts +7 -7
  204. package/dist/components/toast/snice-toast-container.js +19 -12
  205. package/dist/components/toast/snice-toast-container.js.map +1 -1
  206. package/dist/components/toast/snice-toast.d.ts +3 -15
  207. package/dist/components/toast/snice-toast.js +49 -108
  208. package/dist/components/toast/snice-toast.js.map +1 -1
  209. package/dist/components/tooltip/snice-tooltip.d.ts +2 -2
  210. package/dist/components/tooltip/snice-tooltip.js +14 -7
  211. package/dist/components/tooltip/snice-tooltip.js.map +1 -1
  212. package/dist/context.d.ts +44 -0
  213. package/dist/element-ready.d.ts +40 -0
  214. package/dist/{types/element.d.ts → element.d.ts} +2 -8
  215. package/dist/{types/events.d.ts → events.d.ts} +0 -4
  216. package/dist/index.cjs +2589 -605
  217. package/dist/index.cjs.map +1 -1
  218. package/dist/index.d.ts +21 -0
  219. package/dist/index.esm.js +2568 -604
  220. package/dist/index.esm.js.map +1 -1
  221. package/dist/index.iife.js +2589 -605
  222. package/dist/index.iife.js.map +1 -1
  223. package/dist/method-decorators.d.ts +121 -0
  224. package/dist/on.d.ts +59 -0
  225. package/dist/parts.d.ts +159 -0
  226. package/dist/render-debug.d.ts +27 -0
  227. package/dist/render-tracker.d.ts +14 -0
  228. package/dist/render.d.ts +96 -0
  229. package/dist/symbols.cjs +163 -0
  230. package/dist/symbols.cjs.map +1 -1
  231. package/dist/{types/symbols.d.ts → symbols.d.ts} +22 -0
  232. package/dist/symbols.esm.js +27 -3
  233. package/dist/symbols.esm.js.map +1 -1
  234. package/dist/template.d.ts +100 -0
  235. package/dist/transitions.cjs +219 -0
  236. package/dist/transitions.esm.js +2 -2
  237. package/dist/types/context.d.ts +48 -0
  238. package/dist/types/element-options.d.ts +26 -0
  239. package/dist/types/index.d.ts +25 -9
  240. package/dist/types/nav-context.d.ts +19 -0
  241. package/dist/types/{types/on-options.d.ts → on-options.d.ts} +2 -0
  242. package/dist/types/{types/placard.d.ts → placard.d.ts} +0 -1
  243. package/docs/ai/README.md +17 -0
  244. package/docs/ai/api.md +175 -0
  245. package/docs/ai/architecture.md +160 -0
  246. package/docs/ai/components/accordion.md +174 -0
  247. package/docs/ai/components/alert.md +77 -0
  248. package/docs/ai/components/avatar.md +61 -0
  249. package/docs/ai/components/badge.md +69 -0
  250. package/docs/ai/components/breadcrumbs.md +74 -0
  251. package/docs/ai/components/button.md +75 -0
  252. package/docs/ai/components/card.md +61 -0
  253. package/docs/ai/components/checkbox.md +74 -0
  254. package/docs/ai/components/chip.md +73 -0
  255. package/docs/ai/components/date-picker.md +75 -0
  256. package/docs/ai/components/divider.md +66 -0
  257. package/docs/ai/components/drawer.md +80 -0
  258. package/docs/ai/components/input.md +111 -0
  259. package/docs/ai/components/login.md +109 -0
  260. package/docs/ai/components/modal.md +67 -0
  261. package/docs/ai/components/nav.md +76 -0
  262. package/docs/ai/components/pagination.md +55 -0
  263. package/docs/ai/components/progress.md +72 -0
  264. package/docs/ai/components/radio.md +79 -0
  265. package/docs/ai/components/select.md +92 -0
  266. package/docs/ai/components/skeleton.md +57 -0
  267. package/docs/ai/components/switch.md +53 -0
  268. package/docs/ai/components/table.md +227 -0
  269. package/docs/ai/components/tabs.md +83 -0
  270. package/docs/ai/components/toast.md +140 -0
  271. package/docs/ai/components/tooltip.md +146 -0
  272. package/docs/ai/patterns.md +244 -0
  273. package/docs/components/accordion.md +558 -0
  274. package/docs/components/drawer.md +602 -0
  275. package/docs/components/modal.md +558 -0
  276. package/docs/components/nav.md +239 -0
  277. package/docs/components/pagination.md +289 -0
  278. package/docs/components/select.md +599 -0
  279. package/docs/components/switch.md +354 -0
  280. package/docs/components/tabs.md +546 -0
  281. package/docs/components/toast.md +506 -0
  282. package/docs/components/tooltip.md +523 -0
  283. package/docs/controllers.md +744 -0
  284. package/docs/elements.md +855 -0
  285. package/docs/events.md +807 -0
  286. package/docs/migration-v2-to-v3.md +569 -0
  287. package/docs/observe.md +588 -0
  288. package/docs/placards.md +401 -0
  289. package/docs/request-response.md +852 -0
  290. package/docs/routing.md +1186 -0
  291. package/package.json +10 -11
  292. package/dist/components/snice-cell-C9N6yGxQ.js +0 -4
  293. package/dist/components/snice-cell-C9N6yGxQ.js.map +0 -1
  294. package/dist/types/types/index.d.ts +0 -23
  295. /package/dist/{types/controller.d.ts → controller.d.ts} +0 -0
  296. /package/dist/{types/global.d.ts → global.d.ts} +0 -0
  297. /package/dist/{types/observe.d.ts → observe.d.ts} +0 -0
  298. /package/dist/{types/request-response.d.ts → request-response.d.ts} +0 -0
  299. /package/dist/{types/router.d.ts → router.d.ts} +0 -0
  300. /package/dist/{types/testing.d.ts → testing.d.ts} +0 -0
  301. /package/dist/{types/transitions.d.ts → transitions.d.ts} +0 -0
  302. /package/dist/types/{types/adopted-options.d.ts → adopted-options.d.ts} +0 -0
  303. /package/dist/types/{types/app-context.d.ts → app-context.d.ts} +0 -0
  304. /package/dist/types/{types/dispatch-options.d.ts → dispatch-options.d.ts} +0 -0
  305. /package/dist/types/{types/guard.d.ts → guard.d.ts} +0 -0
  306. /package/dist/types/{types/i-controller.d.ts → i-controller.d.ts} +0 -0
  307. /package/dist/types/{types/moved-options.d.ts → moved-options.d.ts} +0 -0
  308. /package/dist/types/{types/observe-options.d.ts → observe-options.d.ts} +0 -0
  309. /package/dist/types/{types/page-options.d.ts → page-options.d.ts} +0 -0
  310. /package/dist/types/{types/part-options.d.ts → part-options.d.ts} +0 -0
  311. /package/dist/types/{types/property-converter.d.ts → property-converter.d.ts} +0 -0
  312. /package/dist/types/{types/property-options.d.ts → property-options.d.ts} +0 -0
  313. /package/dist/types/{types/query-options.d.ts → query-options.d.ts} +0 -0
  314. /package/dist/types/{types/request-options.d.ts → request-options.d.ts} +0 -0
  315. /package/dist/types/{types/respond-options.d.ts → respond-options.d.ts} +0 -0
  316. /package/dist/types/{types/route-params.d.ts → route-params.d.ts} +0 -0
  317. /package/dist/types/{types/router-instance.d.ts → router-instance.d.ts} +0 -0
  318. /package/dist/types/{types/router-options.d.ts → router-options.d.ts} +0 -0
  319. /package/dist/types/{types/simple-array.d.ts → simple-array.d.ts} +0 -0
  320. /package/dist/types/{types/snice-element.d.ts → snice-element.d.ts} +0 -0
  321. /package/dist/types/{types/snice-global.d.ts → snice-global.d.ts} +0 -0
  322. /package/dist/types/{types/transition.d.ts → transition.d.ts} +0 -0
  323. /package/dist/{types/utils.d.ts → utils.d.ts} +0 -0
@@ -0,0 +1,186 @@
1
+ import { __esDecorate, __runInitializers } from 'tslib';
2
+ import { element, property, render, styles, ready, watch, on, html, unsafeHTML, css } from 'snice';
3
+
4
+ var cssContent = "/* JSON Cell Base */\n:host {\n display: flex;\n align-items: center;\n min-height: 2.5rem; /* 40px */\n height: auto;\n min-width: 6.25rem; /* 100px */\n flex: 1;\n font-size: 0.875rem; /* 14px */\n line-height: 1.25rem; /* 20px */\n}\n\n.cell-content {\n width: 100%;\n min-width: 6.25rem; /* 100px */\n min-height: 1.25rem; /* 20px */\n display: flex;\n align-items: flex-start;\n gap: 0.5rem; /* 8px */\n padding: 0.25rem 0;\n}\n\n.json-toggle {\n background: none;\n border: none;\n color: var(--snice-color-text-secondary, #6c757d);\n cursor: pointer;\n padding: 0.125rem 0.25rem;\n font-size: 0.75rem;\n line-height: 1;\n border-radius: 0.25rem;\n transition: background-color 0.2s ease;\n flex-shrink: 0;\n}\n\n.json-toggle:hover {\n background-color: var(--snice-color-gray-100, #f8f9fa);\n}\n\n.json-toggle:focus {\n outline: 2px solid var(--snice-color-primary, #007bff);\n outline-offset: 2px;\n}\n\n.json-viewer {\n font-family: 'Courier New', Consolas, monospace;\n font-size: 0.8125rem; /* 13px */\n overflow: hidden;\n flex: 1;\n}\n\n.json-viewer--collapsed {\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.json-viewer--expanded {\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.json-preview {\n color: var(--snice-color-text-secondary, #6c757d);\n font-style: italic;\n}\n\n.json-object {\n padding-left: 1rem;\n}\n\n.json-line {\n margin: 0.125rem 0;\n}\n\n.json-key {\n color: var(--snice-color-primary, #007bff);\n font-weight: 500;\n margin-right: 0.25rem;\n}\n\n.json-string {\n color: var(--snice-color-success, #28a745);\n}\n\n.json-number {\n color: var(--snice-color-info, #17a2b8);\n}\n\n.json-boolean {\n color: var(--snice-color-warning, #ffc107);\n}\n\n.json-null,\n.json-undefined {\n color: var(--snice-color-text-secondary, #6c757d);\n font-style: italic;\n}\n\n.json-empty {\n color: var(--snice-color-text-secondary, #6c757d);\n font-style: italic;\n}\n\n/* Text Alignment */\n:host([align=\"left\"]) .cell-content {\n justify-content: flex-start;\n}\n\n:host([align=\"center\"]) .cell-content {\n justify-content: center;\n}\n\n:host([align=\"right\"]) .cell-content {\n justify-content: flex-end;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n :host {\n font-size: 0.75rem; /* 12px */\n line-height: 1rem; /* 16px */\n }\n\n .json-viewer {\n font-size: 0.75rem; /* 12px */\n }\n\n .json-toggle {\n font-size: 0.625rem; /* 10px */\n }\n}\n\n/* Print Styles */\n@media print {\n .json-toggle {\n display: none;\n }\n\n .json-viewer--collapsed {\n white-space: normal;\n }\n\n .json-viewer {\n font-size: 0.625rem; /* 10px */\n }\n}\n";
5
+
6
+ let SniceCellJson = (() => {
7
+ let _classDecorators = [element('snice-cell-json')];
8
+ let _classDescriptor;
9
+ let _classExtraInitializers = [];
10
+ let _classThis;
11
+ let _classSuper = HTMLElement;
12
+ let _instanceExtraInitializers = [];
13
+ let _value_decorators;
14
+ let _value_initializers = [];
15
+ let _value_extraInitializers = [];
16
+ let _collapsed_decorators;
17
+ let _collapsed_initializers = [];
18
+ let _collapsed_extraInitializers = [];
19
+ let _maxDepth_decorators;
20
+ let _maxDepth_initializers = [];
21
+ let _maxDepth_extraInitializers = [];
22
+ let _showToggle_decorators;
23
+ let _showToggle_initializers = [];
24
+ let _showToggle_extraInitializers = [];
25
+ let _column_decorators;
26
+ let _column_initializers = [];
27
+ let _column_extraInitializers = [];
28
+ let _rowData_decorators;
29
+ let _rowData_initializers = [];
30
+ let _rowData_extraInitializers = [];
31
+ let _align_decorators;
32
+ let _align_initializers = [];
33
+ let _align_extraInitializers = [];
34
+ let _type_decorators;
35
+ let _type_initializers = [];
36
+ let _type_extraInitializers = [];
37
+ let _renderContent_decorators;
38
+ let _componentStyles_decorators;
39
+ let _init_decorators;
40
+ let _updateJsonAttributes_decorators;
41
+ let _handleToggle_decorators;
42
+ (class extends _classSuper {
43
+ static { _classThis = this; }
44
+ static {
45
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
46
+ _value_decorators = [property({ type: String })];
47
+ _collapsed_decorators = [property({ type: Boolean })];
48
+ _maxDepth_decorators = [property({ type: Number })];
49
+ _showToggle_decorators = [property({ type: Boolean })];
50
+ _column_decorators = [property({ type: Object })];
51
+ _rowData_decorators = [property({ type: Object })];
52
+ _align_decorators = [property({ type: String })];
53
+ _type_decorators = [property({ type: String })];
54
+ _renderContent_decorators = [render()];
55
+ _componentStyles_decorators = [styles()];
56
+ _init_decorators = [ready()];
57
+ _updateJsonAttributes_decorators = [watch('value', 'column')];
58
+ _handleToggle_decorators = [on('click', '.json-toggle')];
59
+ __esDecorate(this, null, _renderContent_decorators, { kind: "method", name: "renderContent", static: false, private: false, access: { has: obj => "renderContent" in obj, get: obj => obj.renderContent }, metadata: _metadata }, null, _instanceExtraInitializers);
60
+ __esDecorate(this, null, _componentStyles_decorators, { kind: "method", name: "componentStyles", static: false, private: false, access: { has: obj => "componentStyles" in obj, get: obj => obj.componentStyles }, metadata: _metadata }, null, _instanceExtraInitializers);
61
+ __esDecorate(this, null, _init_decorators, { kind: "method", name: "init", static: false, private: false, access: { has: obj => "init" in obj, get: obj => obj.init }, metadata: _metadata }, null, _instanceExtraInitializers);
62
+ __esDecorate(this, null, _updateJsonAttributes_decorators, { kind: "method", name: "updateJsonAttributes", static: false, private: false, access: { has: obj => "updateJsonAttributes" in obj, get: obj => obj.updateJsonAttributes }, metadata: _metadata }, null, _instanceExtraInitializers);
63
+ __esDecorate(this, null, _handleToggle_decorators, { kind: "method", name: "handleToggle", static: false, private: false, access: { has: obj => "handleToggle" in obj, get: obj => obj.handleToggle }, metadata: _metadata }, null, _instanceExtraInitializers);
64
+ __esDecorate(null, null, _value_decorators, { kind: "field", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
65
+ __esDecorate(null, null, _collapsed_decorators, { kind: "field", name: "collapsed", static: false, private: false, access: { has: obj => "collapsed" in obj, get: obj => obj.collapsed, set: (obj, value) => { obj.collapsed = value; } }, metadata: _metadata }, _collapsed_initializers, _collapsed_extraInitializers);
66
+ __esDecorate(null, null, _maxDepth_decorators, { kind: "field", name: "maxDepth", static: false, private: false, access: { has: obj => "maxDepth" in obj, get: obj => obj.maxDepth, set: (obj, value) => { obj.maxDepth = value; } }, metadata: _metadata }, _maxDepth_initializers, _maxDepth_extraInitializers);
67
+ __esDecorate(null, null, _showToggle_decorators, { kind: "field", name: "showToggle", static: false, private: false, access: { has: obj => "showToggle" in obj, get: obj => obj.showToggle, set: (obj, value) => { obj.showToggle = value; } }, metadata: _metadata }, _showToggle_initializers, _showToggle_extraInitializers);
68
+ __esDecorate(null, null, _column_decorators, { kind: "field", name: "column", static: false, private: false, access: { has: obj => "column" in obj, get: obj => obj.column, set: (obj, value) => { obj.column = value; } }, metadata: _metadata }, _column_initializers, _column_extraInitializers);
69
+ __esDecorate(null, null, _rowData_decorators, { kind: "field", name: "rowData", static: false, private: false, access: { has: obj => "rowData" in obj, get: obj => obj.rowData, set: (obj, value) => { obj.rowData = value; } }, metadata: _metadata }, _rowData_initializers, _rowData_extraInitializers);
70
+ __esDecorate(null, null, _align_decorators, { kind: "field", name: "align", static: false, private: false, access: { has: obj => "align" in obj, get: obj => obj.align, set: (obj, value) => { obj.align = value; } }, metadata: _metadata }, _align_initializers, _align_extraInitializers);
71
+ __esDecorate(null, null, _type_decorators, { kind: "field", name: "type", static: false, private: false, access: { has: obj => "type" in obj, get: obj => obj.type, set: (obj, value) => { obj.type = value; } }, metadata: _metadata }, _type_initializers, _type_extraInitializers);
72
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
73
+ _classThis = _classDescriptor.value;
74
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
75
+ __runInitializers(_classThis, _classExtraInitializers);
76
+ }
77
+ renderContent() {
78
+ const jsonValue = typeof this.value === 'string' ? this.tryParseJson(this.value) : this.value;
79
+ if (jsonValue === null || jsonValue === undefined) {
80
+ return html /*html*/ `
81
+ <div class="cell-content cell-content--json" part="content">
82
+ <span class="json-empty">null</span>
83
+ </div>
84
+ `;
85
+ }
86
+ const toggleHTML = this.showToggle
87
+ ? `<button class="json-toggle" part="toggle" aria-label="${this.collapsed ? 'Expand' : 'Collapse'}">${this.collapsed ? '▶' : '▼'}</button>`
88
+ : '';
89
+ const jsonHTML = this.collapsed
90
+ ? this.renderCollapsed(jsonValue)
91
+ : this.renderExpanded(jsonValue);
92
+ return html /*html*/ `
93
+ <div class="cell-content cell-content--json" part="content">
94
+ ${unsafeHTML(toggleHTML)}
95
+ <div class="json-viewer ${this.collapsed ? 'json-viewer--collapsed' : 'json-viewer--expanded'}">
96
+ ${unsafeHTML(jsonHTML)}
97
+ </div>
98
+ </div>
99
+ `;
100
+ }
101
+ componentStyles() {
102
+ return css /*css*/ `${cssContent}`;
103
+ }
104
+ init() {
105
+ this.updateJsonAttributes();
106
+ }
107
+ updateJsonAttributes() {
108
+ if (this.column?.jsonFormat) {
109
+ const format = this.column.jsonFormat;
110
+ this.collapsed = format.collapsed ?? true;
111
+ this.maxDepth = format.maxDepth ?? 3;
112
+ this.showToggle = format.showToggle ?? true;
113
+ }
114
+ }
115
+ handleToggle() {
116
+ this.collapsed = !this.collapsed;
117
+ }
118
+ tryParseJson(str) {
119
+ try {
120
+ return JSON.parse(str);
121
+ }
122
+ catch {
123
+ return str;
124
+ }
125
+ }
126
+ renderCollapsed(json) {
127
+ if (typeof json === 'object' && json !== null) {
128
+ if (Array.isArray(json)) {
129
+ return `<span class="json-preview">[${json.length} items]</span>`;
130
+ }
131
+ const keys = Object.keys(json);
132
+ return `<span class="json-preview">{${keys.length} keys}</span>`;
133
+ }
134
+ return this.renderValue(json);
135
+ }
136
+ renderExpanded(json, depth = 0) {
137
+ if (depth >= this.maxDepth) {
138
+ return this.renderCollapsed(json);
139
+ }
140
+ if (typeof json === 'object' && json !== null) {
141
+ if (Array.isArray(json)) {
142
+ const items = json.map((item, i) => {
143
+ const value = this.renderExpanded(item, depth + 1);
144
+ return `<div class="json-line"><span class="json-key">${i}:</span> ${value}</div>`;
145
+ }).join('');
146
+ return `<div class="json-object">[${items}]</div>`;
147
+ }
148
+ const entries = Object.entries(json).map(([key, value]) => {
149
+ const renderedValue = this.renderExpanded(value, depth + 1);
150
+ return `<div class="json-line"><span class="json-key">${key}:</span> ${renderedValue}</div>`;
151
+ }).join('');
152
+ return `<div class="json-object">{${entries}}</div>`;
153
+ }
154
+ return this.renderValue(json);
155
+ }
156
+ renderValue(value) {
157
+ if (value === null)
158
+ return '<span class="json-null">null</span>';
159
+ if (value === undefined)
160
+ return '<span class="json-undefined">undefined</span>';
161
+ if (typeof value === 'boolean')
162
+ return `<span class="json-boolean">${value}</span>`;
163
+ if (typeof value === 'number')
164
+ return `<span class="json-number">${value}</span>`;
165
+ if (typeof value === 'string')
166
+ return `<span class="json-string">"${value}"</span>`;
167
+ return String(value);
168
+ }
169
+ constructor() {
170
+ super(...arguments);
171
+ this.value = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _value_initializers, null));
172
+ this.collapsed = (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _collapsed_initializers, true));
173
+ this.maxDepth = (__runInitializers(this, _collapsed_extraInitializers), __runInitializers(this, _maxDepth_initializers, 3));
174
+ this.showToggle = (__runInitializers(this, _maxDepth_extraInitializers), __runInitializers(this, _showToggle_initializers, true));
175
+ this.column = (__runInitializers(this, _showToggle_extraInitializers), __runInitializers(this, _column_initializers, null));
176
+ this.rowData = (__runInitializers(this, _column_extraInitializers), __runInitializers(this, _rowData_initializers, null));
177
+ this.align = (__runInitializers(this, _rowData_extraInitializers), __runInitializers(this, _align_initializers, 'left'));
178
+ this.type = (__runInitializers(this, _align_extraInitializers), __runInitializers(this, _type_initializers, 'json'));
179
+ __runInitializers(this, _type_extraInitializers);
180
+ }
181
+ });
182
+ return _classThis;
183
+ })();
184
+
185
+ export { SniceCellJson };
186
+ //# sourceMappingURL=snice-cell-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snice-cell-json.js","sources":["../../../components/table/snice-cell-json.css?inline","../../../../components/table/snice-cell-json.ts"],"sourcesContent":["export default \"/* JSON Cell Base */\\n:host {\\n display: flex;\\n align-items: center;\\n min-height: 2.5rem; /* 40px */\\n height: auto;\\n min-width: 6.25rem; /* 100px */\\n flex: 1;\\n font-size: 0.875rem; /* 14px */\\n line-height: 1.25rem; /* 20px */\\n}\\n\\n.cell-content {\\n width: 100%;\\n min-width: 6.25rem; /* 100px */\\n min-height: 1.25rem; /* 20px */\\n display: flex;\\n align-items: flex-start;\\n gap: 0.5rem; /* 8px */\\n padding: 0.25rem 0;\\n}\\n\\n.json-toggle {\\n background: none;\\n border: none;\\n color: var(--snice-color-text-secondary, #6c757d);\\n cursor: pointer;\\n padding: 0.125rem 0.25rem;\\n font-size: 0.75rem;\\n line-height: 1;\\n border-radius: 0.25rem;\\n transition: background-color 0.2s ease;\\n flex-shrink: 0;\\n}\\n\\n.json-toggle:hover {\\n background-color: var(--snice-color-gray-100, #f8f9fa);\\n}\\n\\n.json-toggle:focus {\\n outline: 2px solid var(--snice-color-primary, #007bff);\\n outline-offset: 2px;\\n}\\n\\n.json-viewer {\\n font-family: 'Courier New', Consolas, monospace;\\n font-size: 0.8125rem; /* 13px */\\n overflow: hidden;\\n flex: 1;\\n}\\n\\n.json-viewer--collapsed {\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n\\n.json-viewer--expanded {\\n white-space: pre-wrap;\\n word-break: break-word;\\n}\\n\\n.json-preview {\\n color: var(--snice-color-text-secondary, #6c757d);\\n font-style: italic;\\n}\\n\\n.json-object {\\n padding-left: 1rem;\\n}\\n\\n.json-line {\\n margin: 0.125rem 0;\\n}\\n\\n.json-key {\\n color: var(--snice-color-primary, #007bff);\\n font-weight: 500;\\n margin-right: 0.25rem;\\n}\\n\\n.json-string {\\n color: var(--snice-color-success, #28a745);\\n}\\n\\n.json-number {\\n color: var(--snice-color-info, #17a2b8);\\n}\\n\\n.json-boolean {\\n color: var(--snice-color-warning, #ffc107);\\n}\\n\\n.json-null,\\n.json-undefined {\\n color: var(--snice-color-text-secondary, #6c757d);\\n font-style: italic;\\n}\\n\\n.json-empty {\\n color: var(--snice-color-text-secondary, #6c757d);\\n font-style: italic;\\n}\\n\\n/* Text Alignment */\\n:host([align=\\\"left\\\"]) .cell-content {\\n justify-content: flex-start;\\n}\\n\\n:host([align=\\\"center\\\"]) .cell-content {\\n justify-content: center;\\n}\\n\\n:host([align=\\\"right\\\"]) .cell-content {\\n justify-content: flex-end;\\n}\\n\\n/* Responsive Design */\\n@media (max-width: 768px) {\\n :host {\\n font-size: 0.75rem; /* 12px */\\n line-height: 1rem; /* 16px */\\n }\\n\\n .json-viewer {\\n font-size: 0.75rem; /* 12px */\\n }\\n\\n .json-toggle {\\n font-size: 0.625rem; /* 10px */\\n }\\n}\\n\\n/* Print Styles */\\n@media print {\\n .json-toggle {\\n display: none;\\n }\\n\\n .json-viewer--collapsed {\\n white-space: normal;\\n }\\n\\n .json-viewer {\\n font-size: 0.625rem; /* 10px */\\n }\\n}\\n\";",null],"names":[],"mappings":";;;AAAA,iBAAe,koFAAkoF;;ICKpoF,aAAa,GAAA,CAAA,MAAA;4BADzB,OAAO,CAAC,iBAAiB,CAAC,CAAA;;;;sBACQ,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAnB,KAAA,cAAQ,WAAW,CAAA;;;;AAC3C,YAAA,iBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAG1B,YAAA,qBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAG3B,YAAA,oBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAG1B,YAAA,sBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAG3B,YAAA,kBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAG1B,YAAA,mBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAG1B,YAAA,iBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAG1B,YAAA,gBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAG1B,YAAA,yBAAA,GAAA,CAAA,MAAM,EAAE,CAAA;AA8BR,YAAA,2BAAA,GAAA,CAAA,MAAM,EAAE,CAAA;AAKR,YAAA,gBAAA,GAAA,CAAA,KAAK,EAAE,CAAA;AAKP,YAAA,gCAAA,GAAA,CAAA,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAUxB,YAAA,wBAAA,GAAA,CAAA,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;AAjD5B,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,yBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,eAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,aAAa,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AA8Bb,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,iBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,eAAe,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAKf,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,MAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,IAAI,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAKJ,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,gCAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,sBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,oBAAoB,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAUpB,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,wBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,cAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,YAAY,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;YA1EZ,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,OAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,KAAK,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAL,KAAK,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,mBAAA,EAAA,wBAAA,CAAA;YAGL,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,WAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,WAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,SAAS,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAT,SAAS,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,uBAAA,EAAA,4BAAA,CAAA;YAGT,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,UAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,QAAQ,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAR,QAAQ,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,sBAAA,EAAA,2BAAA,CAAA;YAGR,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,YAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,UAAU,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAV,UAAU,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,wBAAA,EAAA,6BAAA,CAAA;YAGV,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,QAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,QAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,MAAM,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAN,MAAM,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,oBAAA,EAAA,yBAAA,CAAA;YAGN,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,SAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,OAAO,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAP,OAAO,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,qBAAA,EAAA,0BAAA,CAAA;YAGP,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,OAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,KAAK,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAL,KAAK,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,mBAAA,EAAA,wBAAA,CAAA;YAGL,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,MAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,IAAI,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAJ,IAAI,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,uBAAA,CAAA;YAvBN,YAAA,CAAA,IAAA,EAAA,gBAAA,GAAA,EAAA,KAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,uBAAA,CAAA;;;YAAa,iBAAA,CAAA,UAAA,EAAA,uBAAA,CAAA;;QA0BX,aAAa,GAAA;YACX,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK;YAE7F,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE;gBACjD,OAAO,IAAI,UAAQ;;;;OAIlB;YACH;AAEA,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC;kBACpB,CAAA,sDAAA,EAAyD,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,GAAG,CAAA,SAAA;kBAC9H,EAAE;AAEN,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC;AACpB,kBAAE,IAAI,CAAC,eAAe,CAAC,SAAS;AAChC,kBAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;YAElC,OAAO,IAAI,UAAQ;;UAEb,UAAU,CAAC,UAAU,CAAC;kCACE,IAAI,CAAC,SAAS,GAAG,wBAAwB,GAAG,uBAAuB,CAAA;YACzF,UAAU,CAAC,QAAQ,CAAC;;;KAG3B;QACH;QAGA,eAAe,GAAA;AACb,YAAA,OAAO,GAAG,SAAO,CAAA,EAAG,UAAU,EAAE;QAClC;QAGA,IAAI,GAAA;YACF,IAAI,CAAC,oBAAoB,EAAE;QAC7B;QAGA,oBAAoB,GAAA;AAClB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE;AAC3B,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;gBACrC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI;gBACzC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC;gBACpC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI;YAC7C;QACF;QAGA,YAAY,GAAA;AACV,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;QAClC;AAEQ,QAAA,YAAY,CAAC,GAAW,EAAA;AAC9B,YAAA,IAAI;AACF,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YACxB;AAAE,YAAA,MAAM;AACN,gBAAA,OAAO,GAAG;YACZ;QACF;AAEQ,QAAA,eAAe,CAAC,IAAS,EAAA;YAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AAC7C,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACvB,oBAAA,OAAO,CAAA,4BAAA,EAA+B,IAAI,CAAC,MAAM,gBAAgB;gBACnE;gBACA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,gBAAA,OAAO,CAAA,4BAAA,EAA+B,IAAI,CAAC,MAAM,eAAe;YAClE;AACA,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/B;AAEQ,QAAA,cAAc,CAAC,IAAS,EAAE,KAAA,GAAgB,CAAC,EAAA;AACjD,YAAA,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC1B,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACnC;YAEA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AAC7C,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;AACjC,wBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC;AAClD,wBAAA,OAAO,CAAA,8CAAA,EAAiD,CAAC,CAAA,SAAA,EAAY,KAAK,QAAQ;AACpF,oBAAA,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBACX,OAAO,CAAA,0BAAA,EAA6B,KAAK,CAAA,OAAA,CAAS;gBACpD;AAEA,gBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACxD,oBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AAC3D,oBAAA,OAAO,CAAA,8CAAA,EAAiD,GAAG,CAAA,SAAA,EAAY,aAAa,QAAQ;AAC9F,gBAAA,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBACX,OAAO,CAAA,0BAAA,EAA6B,OAAO,CAAA,OAAA,CAAS;YACtD;AAEA,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/B;AAEQ,QAAA,WAAW,CAAC,KAAU,EAAA;YAC5B,IAAI,KAAK,KAAK,IAAI;AAAE,gBAAA,OAAO,qCAAqC;YAChE,IAAI,KAAK,KAAK,SAAS;AAAE,gBAAA,OAAO,+CAA+C;YAC/E,IAAI,OAAO,KAAK,KAAK,SAAS;gBAAE,OAAO,CAAA,2BAAA,EAA8B,KAAK,CAAA,OAAA,CAAS;YACnF,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,CAAA,0BAAA,EAA6B,KAAK,CAAA,OAAA,CAAS;YACjF,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,CAAA,2BAAA,EAA8B,KAAK,CAAA,QAAA,CAAU;AACnF,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB;;;AAhIA,YAAA,IAAA,CAAA,KAAK,IAFM,iBAAA,CAAA,IAAA,EAAA,0BAAA,CAAa,EAAA,iBAAA,CAAA,IAAA,EAAA,mBAAA,EAEX,IAAI,CAAA,CAAA;YAGjB,IAAA,CAAA,SAAS,IAAA,iBAAA,CAAA,IAAA,EAAA,wBAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,uBAAA,EAAY,IAAI,CAAA,CAAA;YAGzB,IAAA,CAAA,QAAQ,IAAA,iBAAA,CAAA,IAAA,EAAA,4BAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,sBAAA,EAAW,CAAC,CAAA,CAAA;YAGpB,IAAA,CAAA,UAAU,IAAA,iBAAA,CAAA,IAAA,EAAA,2BAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,wBAAA,EAAY,IAAI,CAAA,CAAA;YAG1B,IAAA,CAAA,MAAM,IAAA,iBAAA,CAAA,IAAA,EAAA,6BAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,oBAAA,EAA4B,IAAI,CAAA,CAAA;YAGtC,IAAA,CAAA,OAAO,IAAA,iBAAA,CAAA,IAAA,EAAA,yBAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,qBAAA,EAAQ,IAAI,CAAA,CAAA;YAGnB,IAAA,CAAA,KAAK,IAAA,iBAAA,CAAA,IAAA,EAAA,0BAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,mBAAA,EAAgC,MAAM,CAAA,CAAA;YAG3C,IAAA,CAAA,IAAI,IAAA,iBAAA,CAAA,IAAA,EAAA,wBAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,kBAAA,EAAW,MAAM,CAAA,CAAA;;;;;;;;;"}
@@ -0,0 +1,17 @@
1
+ import type { SniceCellElement, ColumnDefinition } from './snice-table.types';
2
+ export declare class SniceCellLink extends HTMLElement implements SniceCellElement {
3
+ value: string;
4
+ href: string;
5
+ target: string;
6
+ external: boolean;
7
+ icon: string;
8
+ text: string;
9
+ column: ColumnDefinition | null;
10
+ rowData: any;
11
+ align: 'left' | 'center' | 'right';
12
+ type: string;
13
+ renderContent(): import("snice").TemplateResult;
14
+ componentStyles(): import("snice").CSSResult;
15
+ init(): void;
16
+ updateCellAttributes(): void;
17
+ }
@@ -0,0 +1,142 @@
1
+ import { __esDecorate, __runInitializers } from 'tslib';
2
+ import { element, property, render, styles, ready, watch, unsafeHTML, html, css } from 'snice';
3
+
4
+ var cssContent = "/* Link Cell Base */\n:host {\n display: flex;\n align-items: center;\n min-height: 2.5rem; /* 40px */\n height: 2.5rem; /* 40px */\n min-width: 6.25rem; /* 100px */\n flex: 1;\n font-size: 0.875rem; /* 14px */\n line-height: 1.25rem; /* 20px */\n}\n\n.cell-content {\n width: 100%;\n min-width: 6.25rem; /* 100px */\n min-height: 1.25rem; /* 20px */\n}\n\n.cell-link {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem; /* 4px */\n color: var(--snice-color-primary, #007bff);\n text-decoration: none;\n transition: color 0.2s ease;\n}\n\n.cell-link:hover {\n color: var(--snice-color-primary-dark, #0056b3);\n text-decoration: underline;\n}\n\n.cell-link:focus {\n outline: 2px solid var(--snice-color-primary, #007bff);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n.cell-link:visited {\n color: var(--snice-color-secondary, #6c757d);\n}\n\n.link-icon {\n display: inline-flex;\n align-items: center;\n font-size: 1rem; /* 16px */\n}\n\n.link-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.external-icon {\n display: inline-flex;\n align-items: center;\n font-size: 0.75rem; /* 12px */\n opacity: 0.7;\n}\n\n/* Text Alignment */\n:host([align=\"left\"]) {\n text-align: left;\n justify-content: flex-start;\n}\n\n:host([align=\"center\"]) {\n text-align: center;\n justify-content: center;\n}\n\n:host([align=\"right\"]) {\n text-align: right;\n justify-content: flex-end;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n :host {\n font-size: 0.75rem; /* 12px */\n line-height: 1rem; /* 16px */\n }\n}\n\n/* Print Styles */\n@media print {\n .cell-link {\n text-decoration: underline;\n }\n\n .cell-link::after {\n content: \" (\" attr(href) \")\";\n font-size: 0.75rem;\n color: #666;\n }\n}\n";
5
+
6
+ let SniceCellLink = (() => {
7
+ let _classDecorators = [element('snice-cell-link')];
8
+ let _classDescriptor;
9
+ let _classExtraInitializers = [];
10
+ let _classThis;
11
+ let _classSuper = HTMLElement;
12
+ let _instanceExtraInitializers = [];
13
+ let _value_decorators;
14
+ let _value_initializers = [];
15
+ let _value_extraInitializers = [];
16
+ let _href_decorators;
17
+ let _href_initializers = [];
18
+ let _href_extraInitializers = [];
19
+ let _target_decorators;
20
+ let _target_initializers = [];
21
+ let _target_extraInitializers = [];
22
+ let _external_decorators;
23
+ let _external_initializers = [];
24
+ let _external_extraInitializers = [];
25
+ let _icon_decorators;
26
+ let _icon_initializers = [];
27
+ let _icon_extraInitializers = [];
28
+ let _text_decorators;
29
+ let _text_initializers = [];
30
+ let _text_extraInitializers = [];
31
+ let _column_decorators;
32
+ let _column_initializers = [];
33
+ let _column_extraInitializers = [];
34
+ let _rowData_decorators;
35
+ let _rowData_initializers = [];
36
+ let _rowData_extraInitializers = [];
37
+ let _align_decorators;
38
+ let _align_initializers = [];
39
+ let _align_extraInitializers = [];
40
+ let _type_decorators;
41
+ let _type_initializers = [];
42
+ let _type_extraInitializers = [];
43
+ let _renderContent_decorators;
44
+ let _componentStyles_decorators;
45
+ let _init_decorators;
46
+ let _updateCellAttributes_decorators;
47
+ (class extends _classSuper {
48
+ static { _classThis = this; }
49
+ static {
50
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
51
+ _value_decorators = [property({ type: String })];
52
+ _href_decorators = [property({ type: String })];
53
+ _target_decorators = [property({ type: String })];
54
+ _external_decorators = [property({ type: Boolean, attribute: 'external' })];
55
+ _icon_decorators = [property({ type: String })];
56
+ _text_decorators = [property({ type: String })];
57
+ _column_decorators = [property({ type: Object })];
58
+ _rowData_decorators = [property({ type: Object })];
59
+ _align_decorators = [property({ type: String })];
60
+ _type_decorators = [property({ type: String })];
61
+ _renderContent_decorators = [render()];
62
+ _componentStyles_decorators = [styles()];
63
+ _init_decorators = [ready()];
64
+ _updateCellAttributes_decorators = [watch('value', 'column')];
65
+ __esDecorate(this, null, _renderContent_decorators, { kind: "method", name: "renderContent", static: false, private: false, access: { has: obj => "renderContent" in obj, get: obj => obj.renderContent }, metadata: _metadata }, null, _instanceExtraInitializers);
66
+ __esDecorate(this, null, _componentStyles_decorators, { kind: "method", name: "componentStyles", static: false, private: false, access: { has: obj => "componentStyles" in obj, get: obj => obj.componentStyles }, metadata: _metadata }, null, _instanceExtraInitializers);
67
+ __esDecorate(this, null, _init_decorators, { kind: "method", name: "init", static: false, private: false, access: { has: obj => "init" in obj, get: obj => obj.init }, metadata: _metadata }, null, _instanceExtraInitializers);
68
+ __esDecorate(this, null, _updateCellAttributes_decorators, { kind: "method", name: "updateCellAttributes", static: false, private: false, access: { has: obj => "updateCellAttributes" in obj, get: obj => obj.updateCellAttributes }, metadata: _metadata }, null, _instanceExtraInitializers);
69
+ __esDecorate(null, null, _value_decorators, { kind: "field", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
70
+ __esDecorate(null, null, _href_decorators, { kind: "field", name: "href", static: false, private: false, access: { has: obj => "href" in obj, get: obj => obj.href, set: (obj, value) => { obj.href = value; } }, metadata: _metadata }, _href_initializers, _href_extraInitializers);
71
+ __esDecorate(null, null, _target_decorators, { kind: "field", name: "target", static: false, private: false, access: { has: obj => "target" in obj, get: obj => obj.target, set: (obj, value) => { obj.target = value; } }, metadata: _metadata }, _target_initializers, _target_extraInitializers);
72
+ __esDecorate(null, null, _external_decorators, { kind: "field", name: "external", static: false, private: false, access: { has: obj => "external" in obj, get: obj => obj.external, set: (obj, value) => { obj.external = value; } }, metadata: _metadata }, _external_initializers, _external_extraInitializers);
73
+ __esDecorate(null, null, _icon_decorators, { kind: "field", name: "icon", static: false, private: false, access: { has: obj => "icon" in obj, get: obj => obj.icon, set: (obj, value) => { obj.icon = value; } }, metadata: _metadata }, _icon_initializers, _icon_extraInitializers);
74
+ __esDecorate(null, null, _text_decorators, { kind: "field", name: "text", static: false, private: false, access: { has: obj => "text" in obj, get: obj => obj.text, set: (obj, value) => { obj.text = value; } }, metadata: _metadata }, _text_initializers, _text_extraInitializers);
75
+ __esDecorate(null, null, _column_decorators, { kind: "field", name: "column", static: false, private: false, access: { has: obj => "column" in obj, get: obj => obj.column, set: (obj, value) => { obj.column = value; } }, metadata: _metadata }, _column_initializers, _column_extraInitializers);
76
+ __esDecorate(null, null, _rowData_decorators, { kind: "field", name: "rowData", static: false, private: false, access: { has: obj => "rowData" in obj, get: obj => obj.rowData, set: (obj, value) => { obj.rowData = value; } }, metadata: _metadata }, _rowData_initializers, _rowData_extraInitializers);
77
+ __esDecorate(null, null, _align_decorators, { kind: "field", name: "align", static: false, private: false, access: { has: obj => "align" in obj, get: obj => obj.align, set: (obj, value) => { obj.align = value; } }, metadata: _metadata }, _align_initializers, _align_extraInitializers);
78
+ __esDecorate(null, null, _type_decorators, { kind: "field", name: "type", static: false, private: false, access: { has: obj => "type" in obj, get: obj => obj.type, set: (obj, value) => { obj.type = value; } }, metadata: _metadata }, _type_initializers, _type_extraInitializers);
79
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
80
+ _classThis = _classDescriptor.value;
81
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
82
+ __runInitializers(_classThis, _classExtraInitializers);
83
+ }
84
+ renderContent() {
85
+ const linkHref = this.href || this.value;
86
+ const linkText = this.text || this.value;
87
+ const isExternal = this.external || this.target === '_blank' || linkHref.startsWith('http');
88
+ const iconHTML = this.icon ? `<span class="link-icon">${this.icon}</span>` : '';
89
+ const externalIcon = isExternal ? '<span class="external-icon">↗</span>' : '';
90
+ return html /*html*/ `
91
+ <div class="cell-content cell-content--link" part="content">
92
+ <a
93
+ href="${linkHref}"
94
+ target="${isExternal ? '_blank' : this.target}"
95
+ rel="${isExternal ? 'noopener noreferrer' : ''}"
96
+ class="cell-link"
97
+ part="link"
98
+ >
99
+ ${unsafeHTML(iconHTML)}
100
+ <span class="link-text">${linkText}</span>
101
+ ${unsafeHTML(externalIcon)}
102
+ </a>
103
+ </div>
104
+ `;
105
+ }
106
+ componentStyles() {
107
+ return css /*css*/ `${cssContent}`;
108
+ }
109
+ init() {
110
+ this.updateCellAttributes();
111
+ }
112
+ updateCellAttributes() {
113
+ // Extract link properties from column config
114
+ if (this.column?.linkFormat) {
115
+ const format = this.column.linkFormat;
116
+ this.href = format.href || this.value;
117
+ this.target = format.target || '_self';
118
+ this.external = format.external || false;
119
+ this.icon = format.icon || '';
120
+ this.text = format.text || this.value;
121
+ }
122
+ }
123
+ constructor() {
124
+ super(...arguments);
125
+ this.value = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _value_initializers, ''));
126
+ this.href = (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _href_initializers, ''));
127
+ this.target = (__runInitializers(this, _href_extraInitializers), __runInitializers(this, _target_initializers, '_self'));
128
+ this.external = (__runInitializers(this, _target_extraInitializers), __runInitializers(this, _external_initializers, false));
129
+ this.icon = (__runInitializers(this, _external_extraInitializers), __runInitializers(this, _icon_initializers, ''));
130
+ this.text = (__runInitializers(this, _icon_extraInitializers), __runInitializers(this, _text_initializers, ''));
131
+ this.column = (__runInitializers(this, _text_extraInitializers), __runInitializers(this, _column_initializers, null));
132
+ this.rowData = (__runInitializers(this, _column_extraInitializers), __runInitializers(this, _rowData_initializers, null));
133
+ this.align = (__runInitializers(this, _rowData_extraInitializers), __runInitializers(this, _align_initializers, 'left'));
134
+ this.type = (__runInitializers(this, _align_extraInitializers), __runInitializers(this, _type_initializers, 'link'));
135
+ __runInitializers(this, _type_extraInitializers);
136
+ }
137
+ });
138
+ return _classThis;
139
+ })();
140
+
141
+ export { SniceCellLink };
142
+ //# sourceMappingURL=snice-cell-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snice-cell-link.js","sources":["../../../components/table/snice-cell-link.css?inline","../../../../components/table/snice-cell-link.ts"],"sourcesContent":["export default \"/* Link Cell Base */\\n:host {\\n display: flex;\\n align-items: center;\\n min-height: 2.5rem; /* 40px */\\n height: 2.5rem; /* 40px */\\n min-width: 6.25rem; /* 100px */\\n flex: 1;\\n font-size: 0.875rem; /* 14px */\\n line-height: 1.25rem; /* 20px */\\n}\\n\\n.cell-content {\\n width: 100%;\\n min-width: 6.25rem; /* 100px */\\n min-height: 1.25rem; /* 20px */\\n}\\n\\n.cell-link {\\n display: inline-flex;\\n align-items: center;\\n gap: 0.25rem; /* 4px */\\n color: var(--snice-color-primary, #007bff);\\n text-decoration: none;\\n transition: color 0.2s ease;\\n}\\n\\n.cell-link:hover {\\n color: var(--snice-color-primary-dark, #0056b3);\\n text-decoration: underline;\\n}\\n\\n.cell-link:focus {\\n outline: 2px solid var(--snice-color-primary, #007bff);\\n outline-offset: 2px;\\n border-radius: 2px;\\n}\\n\\n.cell-link:visited {\\n color: var(--snice-color-secondary, #6c757d);\\n}\\n\\n.link-icon {\\n display: inline-flex;\\n align-items: center;\\n font-size: 1rem; /* 16px */\\n}\\n\\n.link-text {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\n.external-icon {\\n display: inline-flex;\\n align-items: center;\\n font-size: 0.75rem; /* 12px */\\n opacity: 0.7;\\n}\\n\\n/* Text Alignment */\\n:host([align=\\\"left\\\"]) {\\n text-align: left;\\n justify-content: flex-start;\\n}\\n\\n:host([align=\\\"center\\\"]) {\\n text-align: center;\\n justify-content: center;\\n}\\n\\n:host([align=\\\"right\\\"]) {\\n text-align: right;\\n justify-content: flex-end;\\n}\\n\\n/* Responsive Design */\\n@media (max-width: 768px) {\\n :host {\\n font-size: 0.75rem; /* 12px */\\n line-height: 1rem; /* 16px */\\n }\\n}\\n\\n/* Print Styles */\\n@media print {\\n .cell-link {\\n text-decoration: underline;\\n }\\n\\n .cell-link::after {\\n content: \\\" (\\\" attr(href) \\\")\\\";\\n font-size: 0.75rem;\\n color: #666;\\n }\\n}\\n\";",null],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { SniceCellElement, ColumnDefinition } from './snice-table.types';
2
+ export declare class SniceCellLocation extends HTMLElement implements SniceCellElement {
3
+ value: string;
4
+ address: string;
5
+ latitude: string;
6
+ longitude: string;
7
+ showMapLink: boolean;
8
+ mapProvider: 'google' | 'openstreetmap' | 'apple';
9
+ showIcon: boolean;
10
+ column: ColumnDefinition | null;
11
+ rowData: any;
12
+ align: 'left' | 'center' | 'right';
13
+ type: string;
14
+ renderContent(): import("snice").TemplateResult;
15
+ componentStyles(): import("snice").CSSResult;
16
+ init(): void;
17
+ updateLocationAttributes(): void;
18
+ private getMapLink;
19
+ }
@@ -0,0 +1,185 @@
1
+ import { __esDecorate, __runInitializers } from 'tslib';
2
+ import { element, property, render, styles, ready, watch, html, unsafeHTML, css } from 'snice';
3
+
4
+ var cssContent = "/* Location Cell Base */\n:host {\n display: flex;\n align-items: center;\n min-height: 2.5rem; /* 40px */\n height: 2.5rem; /* 40px */\n min-width: 6.25rem; /* 100px */\n flex: 1;\n font-size: 0.875rem; /* 14px */\n line-height: 1.25rem; /* 20px */\n}\n\n.cell-content {\n width: 100%;\n min-width: 6.25rem; /* 100px */\n min-height: 1.25rem; /* 20px */\n display: flex;\n align-items: center;\n gap: 0.375rem; /* 6px */\n}\n\n.location-icon {\n display: inline-flex;\n align-items: center;\n font-size: 0.875rem; /* 14px */\n opacity: 0.7;\n flex-shrink: 0;\n}\n\n.location-link {\n color: var(--snice-color-primary, #007bff);\n text-decoration: none;\n transition: color 0.2s ease;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.location-link:hover {\n color: var(--snice-color-primary-dark, #0056b3);\n text-decoration: underline;\n}\n\n.location-link:focus {\n outline: 2px solid var(--snice-color-primary, #007bff);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n.location-link:visited {\n color: var(--snice-color-secondary, #6c757d);\n}\n\n.location-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--snice-color-text, #212529);\n}\n\n.location-empty {\n color: var(--snice-color-text-secondary, #6c757d);\n font-style: italic;\n}\n\n/* Text Alignment */\n:host([align=\"left\"]) .cell-content {\n justify-content: flex-start;\n}\n\n:host([align=\"center\"]) .cell-content {\n justify-content: center;\n}\n\n:host([align=\"right\"]) .cell-content {\n justify-content: flex-end;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n :host {\n font-size: 0.75rem; /* 12px */\n line-height: 1rem; /* 16px */\n }\n\n .location-icon {\n font-size: 0.75rem; /* 12px */\n }\n}\n\n/* Print Styles */\n@media print {\n .location-link {\n text-decoration: underline;\n }\n\n .location-link::after {\n content: \" (\" attr(href) \")\";\n font-size: 0.75rem;\n color: #666;\n }\n\n .location-icon {\n display: none;\n }\n}\n";
5
+
6
+ let SniceCellLocation = (() => {
7
+ let _classDecorators = [element('snice-cell-location')];
8
+ let _classDescriptor;
9
+ let _classExtraInitializers = [];
10
+ let _classThis;
11
+ let _classSuper = HTMLElement;
12
+ let _instanceExtraInitializers = [];
13
+ let _value_decorators;
14
+ let _value_initializers = [];
15
+ let _value_extraInitializers = [];
16
+ let _address_decorators;
17
+ let _address_initializers = [];
18
+ let _address_extraInitializers = [];
19
+ let _latitude_decorators;
20
+ let _latitude_initializers = [];
21
+ let _latitude_extraInitializers = [];
22
+ let _longitude_decorators;
23
+ let _longitude_initializers = [];
24
+ let _longitude_extraInitializers = [];
25
+ let _showMapLink_decorators;
26
+ let _showMapLink_initializers = [];
27
+ let _showMapLink_extraInitializers = [];
28
+ let _mapProvider_decorators;
29
+ let _mapProvider_initializers = [];
30
+ let _mapProvider_extraInitializers = [];
31
+ let _showIcon_decorators;
32
+ let _showIcon_initializers = [];
33
+ let _showIcon_extraInitializers = [];
34
+ let _column_decorators;
35
+ let _column_initializers = [];
36
+ let _column_extraInitializers = [];
37
+ let _rowData_decorators;
38
+ let _rowData_initializers = [];
39
+ let _rowData_extraInitializers = [];
40
+ let _align_decorators;
41
+ let _align_initializers = [];
42
+ let _align_extraInitializers = [];
43
+ let _type_decorators;
44
+ let _type_initializers = [];
45
+ let _type_extraInitializers = [];
46
+ let _renderContent_decorators;
47
+ let _componentStyles_decorators;
48
+ let _init_decorators;
49
+ let _updateLocationAttributes_decorators;
50
+ (class extends _classSuper {
51
+ static { _classThis = this; }
52
+ static {
53
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
54
+ _value_decorators = [property({ type: String })];
55
+ _address_decorators = [property({ type: String })];
56
+ _latitude_decorators = [property({ type: String })];
57
+ _longitude_decorators = [property({ type: String })];
58
+ _showMapLink_decorators = [property({ type: Boolean })];
59
+ _mapProvider_decorators = [property({ type: String })];
60
+ _showIcon_decorators = [property({ type: Boolean })];
61
+ _column_decorators = [property({ type: Object })];
62
+ _rowData_decorators = [property({ type: Object })];
63
+ _align_decorators = [property({ type: String })];
64
+ _type_decorators = [property({ type: String })];
65
+ _renderContent_decorators = [render()];
66
+ _componentStyles_decorators = [styles()];
67
+ _init_decorators = [ready()];
68
+ _updateLocationAttributes_decorators = [watch('value', 'column')];
69
+ __esDecorate(this, null, _renderContent_decorators, { kind: "method", name: "renderContent", static: false, private: false, access: { has: obj => "renderContent" in obj, get: obj => obj.renderContent }, metadata: _metadata }, null, _instanceExtraInitializers);
70
+ __esDecorate(this, null, _componentStyles_decorators, { kind: "method", name: "componentStyles", static: false, private: false, access: { has: obj => "componentStyles" in obj, get: obj => obj.componentStyles }, metadata: _metadata }, null, _instanceExtraInitializers);
71
+ __esDecorate(this, null, _init_decorators, { kind: "method", name: "init", static: false, private: false, access: { has: obj => "init" in obj, get: obj => obj.init }, metadata: _metadata }, null, _instanceExtraInitializers);
72
+ __esDecorate(this, null, _updateLocationAttributes_decorators, { kind: "method", name: "updateLocationAttributes", static: false, private: false, access: { has: obj => "updateLocationAttributes" in obj, get: obj => obj.updateLocationAttributes }, metadata: _metadata }, null, _instanceExtraInitializers);
73
+ __esDecorate(null, null, _value_decorators, { kind: "field", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
74
+ __esDecorate(null, null, _address_decorators, { kind: "field", name: "address", static: false, private: false, access: { has: obj => "address" in obj, get: obj => obj.address, set: (obj, value) => { obj.address = value; } }, metadata: _metadata }, _address_initializers, _address_extraInitializers);
75
+ __esDecorate(null, null, _latitude_decorators, { kind: "field", name: "latitude", static: false, private: false, access: { has: obj => "latitude" in obj, get: obj => obj.latitude, set: (obj, value) => { obj.latitude = value; } }, metadata: _metadata }, _latitude_initializers, _latitude_extraInitializers);
76
+ __esDecorate(null, null, _longitude_decorators, { kind: "field", name: "longitude", static: false, private: false, access: { has: obj => "longitude" in obj, get: obj => obj.longitude, set: (obj, value) => { obj.longitude = value; } }, metadata: _metadata }, _longitude_initializers, _longitude_extraInitializers);
77
+ __esDecorate(null, null, _showMapLink_decorators, { kind: "field", name: "showMapLink", static: false, private: false, access: { has: obj => "showMapLink" in obj, get: obj => obj.showMapLink, set: (obj, value) => { obj.showMapLink = value; } }, metadata: _metadata }, _showMapLink_initializers, _showMapLink_extraInitializers);
78
+ __esDecorate(null, null, _mapProvider_decorators, { kind: "field", name: "mapProvider", static: false, private: false, access: { has: obj => "mapProvider" in obj, get: obj => obj.mapProvider, set: (obj, value) => { obj.mapProvider = value; } }, metadata: _metadata }, _mapProvider_initializers, _mapProvider_extraInitializers);
79
+ __esDecorate(null, null, _showIcon_decorators, { kind: "field", name: "showIcon", static: false, private: false, access: { has: obj => "showIcon" in obj, get: obj => obj.showIcon, set: (obj, value) => { obj.showIcon = value; } }, metadata: _metadata }, _showIcon_initializers, _showIcon_extraInitializers);
80
+ __esDecorate(null, null, _column_decorators, { kind: "field", name: "column", static: false, private: false, access: { has: obj => "column" in obj, get: obj => obj.column, set: (obj, value) => { obj.column = value; } }, metadata: _metadata }, _column_initializers, _column_extraInitializers);
81
+ __esDecorate(null, null, _rowData_decorators, { kind: "field", name: "rowData", static: false, private: false, access: { has: obj => "rowData" in obj, get: obj => obj.rowData, set: (obj, value) => { obj.rowData = value; } }, metadata: _metadata }, _rowData_initializers, _rowData_extraInitializers);
82
+ __esDecorate(null, null, _align_decorators, { kind: "field", name: "align", static: false, private: false, access: { has: obj => "align" in obj, get: obj => obj.align, set: (obj, value) => { obj.align = value; } }, metadata: _metadata }, _align_initializers, _align_extraInitializers);
83
+ __esDecorate(null, null, _type_decorators, { kind: "field", name: "type", static: false, private: false, access: { has: obj => "type" in obj, get: obj => obj.type, set: (obj, value) => { obj.type = value; } }, metadata: _metadata }, _type_initializers, _type_extraInitializers);
84
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
85
+ _classThis = _classDescriptor.value;
86
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
87
+ __runInitializers(_classThis, _classExtraInitializers);
88
+ }
89
+ renderContent() {
90
+ const locationValue = this.address || this.value;
91
+ const iconHTML = this.showIcon ? '<span class="location-icon">📍</span>' : '';
92
+ const mapLink = this.getMapLink();
93
+ if (!locationValue && !this.latitude && !this.longitude) {
94
+ return html /*html*/ `
95
+ <div class="cell-content cell-content--location" part="content">
96
+ <span class="location-empty"></span>
97
+ </div>
98
+ `;
99
+ }
100
+ const displayText = locationValue || `${this.latitude}, ${this.longitude}`;
101
+ return html /*html*/ `
102
+ <div class="cell-content cell-content--location" part="content">
103
+ ${unsafeHTML(iconHTML)}
104
+ ${this.showMapLink && mapLink
105
+ ? html `<a href="${mapLink}" target="_blank" rel="noopener noreferrer" class="location-link" part="link">
106
+ ${displayText}
107
+ </a>`
108
+ : html `<span class="location-text">${displayText}</span>`}
109
+ </div>
110
+ `;
111
+ }
112
+ componentStyles() {
113
+ return css /*css*/ `${cssContent}`;
114
+ }
115
+ init() {
116
+ this.updateLocationAttributes();
117
+ }
118
+ updateLocationAttributes() {
119
+ if (this.column?.locationFormat) {
120
+ const format = this.column.locationFormat;
121
+ this.address = format.address || this.value;
122
+ this.latitude = format.latitude ? String(format.latitude) : '';
123
+ this.longitude = format.longitude ? String(format.longitude) : '';
124
+ this.showMapLink = format.showMapLink ?? true;
125
+ this.mapProvider = format.mapProvider || 'google';
126
+ this.showIcon = format.showIcon ?? true;
127
+ }
128
+ }
129
+ getMapLink() {
130
+ if (!this.showMapLink) {
131
+ return '';
132
+ }
133
+ const address = this.address || this.value;
134
+ const lat = this.latitude;
135
+ const lon = this.longitude;
136
+ switch (this.mapProvider) {
137
+ case 'google':
138
+ if (lat && lon) {
139
+ return `https://www.google.com/maps?q=${lat},${lon}`;
140
+ }
141
+ if (address) {
142
+ return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(address)}`;
143
+ }
144
+ return '';
145
+ case 'openstreetmap':
146
+ if (lat && lon) {
147
+ return `https://www.openstreetmap.org/?mlat=${lat}&mlon=${lon}&zoom=15`;
148
+ }
149
+ if (address) {
150
+ return `https://www.openstreetmap.org/search?query=${encodeURIComponent(address)}`;
151
+ }
152
+ return '';
153
+ case 'apple':
154
+ if (lat && lon) {
155
+ return `https://maps.apple.com/?ll=${lat},${lon}`;
156
+ }
157
+ if (address) {
158
+ return `https://maps.apple.com/?address=${encodeURIComponent(address)}`;
159
+ }
160
+ return '';
161
+ default:
162
+ return '';
163
+ }
164
+ }
165
+ constructor() {
166
+ super(...arguments);
167
+ this.value = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _value_initializers, ''));
168
+ this.address = (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _address_initializers, ''));
169
+ this.latitude = (__runInitializers(this, _address_extraInitializers), __runInitializers(this, _latitude_initializers, ''));
170
+ this.longitude = (__runInitializers(this, _latitude_extraInitializers), __runInitializers(this, _longitude_initializers, ''));
171
+ this.showMapLink = (__runInitializers(this, _longitude_extraInitializers), __runInitializers(this, _showMapLink_initializers, true));
172
+ this.mapProvider = (__runInitializers(this, _showMapLink_extraInitializers), __runInitializers(this, _mapProvider_initializers, 'google'));
173
+ this.showIcon = (__runInitializers(this, _mapProvider_extraInitializers), __runInitializers(this, _showIcon_initializers, true));
174
+ this.column = (__runInitializers(this, _showIcon_extraInitializers), __runInitializers(this, _column_initializers, null));
175
+ this.rowData = (__runInitializers(this, _column_extraInitializers), __runInitializers(this, _rowData_initializers, null));
176
+ this.align = (__runInitializers(this, _rowData_extraInitializers), __runInitializers(this, _align_initializers, 'left'));
177
+ this.type = (__runInitializers(this, _align_extraInitializers), __runInitializers(this, _type_initializers, 'location'));
178
+ __runInitializers(this, _type_extraInitializers);
179
+ }
180
+ });
181
+ return _classThis;
182
+ })();
183
+
184
+ export { SniceCellLocation };
185
+ //# sourceMappingURL=snice-cell-location.js.map