@zanichelli/albe-web-components 13.0.0 → 13.1.0-rc2

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 (593) hide show
  1. package/CHANGELOG.md +3 -5
  2. package/dist/cjs/icons-be077181.js +864 -0
  3. package/dist/cjs/icons-be077181.js.map +1 -0
  4. package/dist/cjs/index-0a7baee3.js +24 -0
  5. package/dist/cjs/index-0a7baee3.js.map +1 -0
  6. package/dist/cjs/index-37180b8d.js +24 -0
  7. package/dist/cjs/index-37180b8d.js.map +1 -0
  8. package/dist/cjs/index-4468a6b7.js +24 -0
  9. package/dist/cjs/index-4468a6b7.js.map +1 -0
  10. package/dist/cjs/index-715aa3be.js +21 -0
  11. package/dist/cjs/index-715aa3be.js.map +1 -0
  12. package/dist/cjs/index-7a1c32d4.js +30 -0
  13. package/dist/cjs/index-7a1c32d4.js.map +1 -0
  14. package/dist/cjs/index-7f3e61f0.js +82 -0
  15. package/dist/cjs/index-7f3e61f0.js.map +1 -0
  16. package/dist/cjs/index-96c2bc8f.js +25 -0
  17. package/dist/cjs/index-96c2bc8f.js.map +1 -0
  18. package/dist/cjs/index-a30259f3.js +37 -0
  19. package/dist/cjs/index-a30259f3.js.map +1 -0
  20. package/dist/cjs/index-a7aedd7c.js +20 -0
  21. package/dist/cjs/index-a7aedd7c.js.map +1 -0
  22. package/dist/cjs/index-d669dfd0.js +43 -0
  23. package/dist/cjs/index-d669dfd0.js.map +1 -0
  24. package/dist/cjs/index-dc60bee7.js +56 -0
  25. package/dist/cjs/loader.cjs.js +1 -1
  26. package/dist/cjs/web-components-library.cjs.js +1 -1
  27. package/dist/cjs/z-alert.cjs.entry.js +1 -1
  28. package/dist/cjs/z-app-header_12.cjs.entry.js +20 -871
  29. package/dist/cjs/z-app-header_12.cjs.entry.js.map +1 -1
  30. package/dist/cjs/z-contextual-menu.cjs.entry.js +44 -0
  31. package/dist/cjs/z-contextual-menu.cjs.entry.js.map +1 -0
  32. package/dist/cjs/z-cover-hero.cjs.entry.js +2 -2
  33. package/dist/cjs/z-file-upload.cjs.entry.js +25 -14
  34. package/dist/cjs/z-file-upload.cjs.entry.js.map +1 -1
  35. package/dist/cjs/z-ghost-loading.cjs.entry.js +1 -1
  36. package/dist/cjs/z-info-reveal.cjs.entry.js +1 -1
  37. package/dist/cjs/z-link.cjs.entry.js +1 -1
  38. package/dist/cjs/z-messages-pocket.cjs.entry.js +1 -1
  39. package/dist/cjs/z-myz-card-alert.cjs.entry.js +1 -1
  40. package/dist/cjs/z-myz-card-dictionary.cjs.entry.js +1 -1
  41. package/dist/cjs/z-myz-card-footer-sections.cjs.entry.js +1 -1
  42. package/dist/cjs/z-myz-card-footer.cjs.entry.js +1 -1
  43. package/dist/cjs/z-myz-card-icon.cjs.entry.js +1 -1
  44. package/dist/cjs/z-myz-card-info.cjs.entry.js +1 -1
  45. package/dist/cjs/z-myz-card-list.cjs.entry.js +1 -1
  46. package/dist/cjs/z-myz-card_4.cjs.entry.js +4 -4
  47. package/dist/cjs/z-myz-list.cjs.entry.js +1 -1
  48. package/dist/cjs/z-navigation-tab-link.cjs.entry.js +72 -0
  49. package/dist/cjs/z-navigation-tab-link.cjs.entry.js.map +1 -0
  50. package/dist/cjs/z-navigation-tab.cjs.entry.js +69 -0
  51. package/dist/cjs/z-navigation-tab.cjs.entry.js.map +1 -0
  52. package/dist/cjs/z-otp.cjs.entry.js +2 -2
  53. package/dist/cjs/z-pocket-message.cjs.entry.js +1 -1
  54. package/dist/cjs/z-pocket_3.cjs.entry.js +3 -3
  55. package/dist/cjs/z-popover.cjs.entry.js +1 -1
  56. package/dist/cjs/z-section-title.cjs.entry.js +1 -1
  57. package/dist/cjs/z-skip-to-content.cjs.entry.js +1 -1
  58. package/dist/cjs/z-table-body.cjs.entry.js +12 -0
  59. package/dist/cjs/z-table-body.cjs.entry.js.map +1 -0
  60. package/dist/cjs/z-table-cell.cjs.entry.js +13 -0
  61. package/dist/cjs/z-table-cell.cjs.entry.js.map +1 -0
  62. package/dist/cjs/z-table-deprecated.cjs.entry.js +92 -0
  63. package/dist/cjs/z-table-deprecated.cjs.entry.js.map +1 -0
  64. package/dist/cjs/z-table-empty-box.cjs.entry.js +12 -0
  65. package/dist/cjs/z-table-empty-box.cjs.entry.js.map +1 -0
  66. package/dist/cjs/z-table-expanded-row.cjs.entry.js +12 -0
  67. package/dist/cjs/z-table-expanded-row.cjs.entry.js.map +1 -0
  68. package/dist/cjs/z-table-footer.cjs.entry.js +12 -0
  69. package/dist/cjs/z-table-footer.cjs.entry.js.map +1 -0
  70. package/dist/cjs/z-table-head.cjs.entry.js +12 -0
  71. package/dist/cjs/z-table-head.cjs.entry.js.map +1 -0
  72. package/dist/cjs/z-table-header-row.cjs.entry.js +12 -0
  73. package/dist/cjs/z-table-header-row.cjs.entry.js.map +1 -0
  74. package/dist/cjs/z-table-header.cjs.entry.js +15 -0
  75. package/dist/cjs/z-table-header.cjs.entry.js.map +1 -0
  76. package/dist/cjs/z-table-row.cjs.entry.js +13 -0
  77. package/dist/cjs/z-table-row.cjs.entry.js.map +1 -0
  78. package/dist/cjs/z-table-sticky-footer.cjs.entry.js +12 -0
  79. package/dist/cjs/z-table-sticky-footer.cjs.entry.js.map +1 -0
  80. package/dist/cjs/z-visually-hidden.cjs.entry.js +1 -1
  81. package/dist/collection/collection-manifest.json +14 -0
  82. package/dist/collection/components/file-upload/z-file-upload/index.js +63 -13
  83. package/dist/collection/components/file-upload/z-file-upload/index.js.map +1 -1
  84. package/dist/collection/components/file-upload/z-file-upload/styles.css +12 -0
  85. package/dist/collection/components/inputs/z-searchbar/index.js +1 -3
  86. package/dist/collection/components/inputs/z-searchbar/index.js.map +1 -1
  87. package/dist/collection/components/inputs/z-searchbar/styles.css +2 -5
  88. package/dist/collection/components/list/z-list-element/index.js +26 -1
  89. package/dist/collection/components/list/z-list-element/index.js.map +1 -1
  90. package/dist/collection/components/list/z-list-element/styles.css +37 -12
  91. package/dist/collection/components/z-contextual-menu/index.js +123 -0
  92. package/dist/collection/components/z-contextual-menu/index.js.map +1 -0
  93. package/dist/collection/components/z-contextual-menu/index.spec.js +74 -0
  94. package/dist/collection/components/z-contextual-menu/index.spec.js.map +1 -0
  95. package/dist/collection/components/z-contextual-menu/styles.css +60 -0
  96. package/dist/collection/components/z-contextual-menu/test.e2e.js +11 -0
  97. package/dist/collection/components/z-contextual-menu/test.e2e.js.map +1 -0
  98. package/dist/collection/components/z-cover-hero/index.js +2 -2
  99. package/dist/collection/components/z-divider/index.js +1 -1
  100. package/dist/collection/components/z-ghost-loading/index.js +1 -1
  101. package/dist/collection/components/z-info-reveal/index.js +1 -1
  102. package/dist/collection/components/z-offcanvas/index.js +1 -1
  103. package/dist/collection/components/z-offcanvas/styles.css +1 -1
  104. package/dist/collection/components/z-popover/index.js +1 -1
  105. package/dist/collection/components/z-section-title/index.js +1 -1
  106. package/dist/collection/components/z-skip-to-content/index.js +1 -1
  107. package/dist/collection/components/z-tag/index.js +2 -2
  108. package/dist/collection/components/z-visually-hidden/index.js +1 -1
  109. package/dist/collection/deprecated/navigation-tab.css +138 -0
  110. package/dist/collection/deprecated/z-link/index.js +1 -1
  111. package/dist/collection/deprecated/z-navigation-tab/index.js +286 -0
  112. package/dist/collection/deprecated/z-navigation-tab/index.js.map +1 -0
  113. package/dist/collection/deprecated/z-navigation-tab-link/index.js +321 -0
  114. package/dist/collection/deprecated/z-navigation-tab-link/index.js.map +1 -0
  115. package/dist/collection/deprecated/z-table-deprecated/z-table-body/index.js +27 -0
  116. package/dist/collection/deprecated/z-table-deprecated/z-table-body/index.js.map +1 -0
  117. package/dist/collection/deprecated/z-table-deprecated/z-table-body/index.spec.js +21 -0
  118. package/dist/collection/deprecated/z-table-deprecated/z-table-body/index.spec.js.map +1 -0
  119. package/dist/collection/deprecated/z-table-deprecated/z-table-body/styles.css +9 -0
  120. package/dist/collection/deprecated/z-table-deprecated/z-table-cell/index.js +85 -0
  121. package/dist/collection/deprecated/z-table-deprecated/z-table-cell/index.js.map +1 -0
  122. package/dist/collection/deprecated/z-table-deprecated/z-table-cell/index.spec.js +50 -0
  123. package/dist/collection/deprecated/z-table-deprecated/z-table-cell/index.spec.js.map +1 -0
  124. package/dist/collection/deprecated/z-table-deprecated/z-table-cell/styles.css +58 -0
  125. package/dist/collection/deprecated/z-table-deprecated/z-table-deprecated/index.js +362 -0
  126. package/dist/collection/deprecated/z-table-deprecated/z-table-deprecated/index.js.map +1 -0
  127. package/dist/collection/deprecated/z-table-deprecated/z-table-deprecated/styles.css +115 -0
  128. package/dist/collection/deprecated/z-table-deprecated/z-table-empty-box/index.js +74 -0
  129. package/dist/collection/deprecated/z-table-deprecated/z-table-empty-box/index.js.map +1 -0
  130. package/dist/collection/deprecated/z-table-deprecated/z-table-empty-box/index.spec.js +46 -0
  131. package/dist/collection/deprecated/z-table-deprecated/z-table-empty-box/index.spec.js.map +1 -0
  132. package/dist/collection/deprecated/z-table-deprecated/z-table-empty-box/styles.css +38 -0
  133. package/dist/collection/deprecated/z-table-deprecated/z-table-expanded-row/index.js +46 -0
  134. package/dist/collection/deprecated/z-table-deprecated/z-table-expanded-row/index.js.map +1 -0
  135. package/dist/collection/deprecated/z-table-deprecated/z-table-expanded-row/index.spec.js +13 -0
  136. package/dist/collection/deprecated/z-table-deprecated/z-table-expanded-row/index.spec.js.map +1 -0
  137. package/dist/collection/deprecated/z-table-deprecated/z-table-expanded-row/styles.css +9 -0
  138. package/dist/collection/deprecated/z-table-deprecated/z-table-footer/index.js +26 -0
  139. package/dist/collection/deprecated/z-table-deprecated/z-table-footer/index.js.map +1 -0
  140. package/dist/collection/deprecated/z-table-deprecated/z-table-footer/index.spec.js +23 -0
  141. package/dist/collection/deprecated/z-table-deprecated/z-table-footer/index.spec.js.map +1 -0
  142. package/dist/collection/deprecated/z-table-deprecated/z-table-footer/styles.css +5 -0
  143. package/dist/collection/deprecated/z-table-deprecated/z-table-head/index.js +26 -0
  144. package/dist/collection/deprecated/z-table-deprecated/z-table-head/index.js.map +1 -0
  145. package/dist/collection/deprecated/z-table-deprecated/z-table-head/index.spec.js +23 -0
  146. package/dist/collection/deprecated/z-table-deprecated/z-table-head/index.spec.js.map +1 -0
  147. package/dist/collection/deprecated/z-table-deprecated/z-table-head/styles.css +5 -0
  148. package/dist/collection/deprecated/z-table-deprecated/z-table-header/index.js +227 -0
  149. package/dist/collection/deprecated/z-table-deprecated/z-table-header/index.js.map +1 -0
  150. package/dist/collection/deprecated/z-table-deprecated/z-table-header/index.spec.js +227 -0
  151. package/dist/collection/deprecated/z-table-deprecated/z-table-header/index.spec.js.map +1 -0
  152. package/dist/collection/deprecated/z-table-deprecated/z-table-header/styles.css +71 -0
  153. package/dist/collection/deprecated/z-table-deprecated/z-table-header-row/index.js +48 -0
  154. package/dist/collection/deprecated/z-table-deprecated/z-table-header-row/index.js.map +1 -0
  155. package/dist/collection/deprecated/z-table-deprecated/z-table-header-row/index.spec.js +28 -0
  156. package/dist/collection/deprecated/z-table-deprecated/z-table-header-row/index.spec.js.map +1 -0
  157. package/dist/collection/deprecated/z-table-deprecated/z-table-header-row/styles.css +13 -0
  158. package/dist/collection/deprecated/z-table-deprecated/z-table-row/index.js +96 -0
  159. package/dist/collection/deprecated/z-table-deprecated/z-table-row/index.js.map +1 -0
  160. package/dist/collection/deprecated/z-table-deprecated/z-table-row/index.spec.js +23 -0
  161. package/dist/collection/deprecated/z-table-deprecated/z-table-row/index.spec.js.map +1 -0
  162. package/dist/collection/deprecated/z-table-deprecated/z-table-row/styles.css +45 -0
  163. package/dist/collection/deprecated/z-table-deprecated/z-table-sticky-footer/index.js +23 -0
  164. package/dist/collection/deprecated/z-table-deprecated/z-table-sticky-footer/index.js.map +1 -0
  165. package/dist/collection/deprecated/z-table-deprecated/z-table-sticky-footer/index.spec.js +16 -0
  166. package/dist/collection/deprecated/z-table-deprecated/z-table-sticky-footer/index.spec.js.map +1 -0
  167. package/dist/collection/deprecated/z-table-deprecated/z-table-sticky-footer/styles.css +11 -0
  168. package/dist/collection/snowflakes/myz/card/z-myz-card/index.js +1 -1
  169. package/dist/collection/snowflakes/myz/card/z-myz-card-alert/index.js +1 -1
  170. package/dist/collection/snowflakes/myz/card/z-myz-card-body/index.js +1 -1
  171. package/dist/collection/snowflakes/myz/card/z-myz-card-cover/index.js +1 -1
  172. package/dist/collection/snowflakes/myz/card/z-myz-card-dictionary/index.js +1 -1
  173. package/dist/collection/snowflakes/myz/card/z-myz-card-footer/index.js +1 -1
  174. package/dist/collection/snowflakes/myz/card/z-myz-card-footer-sections/index.js +1 -1
  175. package/dist/collection/snowflakes/myz/card/z-myz-card-header/index.js +1 -1
  176. package/dist/collection/snowflakes/myz/card/z-myz-card-icon/index.js +1 -1
  177. package/dist/collection/snowflakes/myz/card/z-myz-card-info/index.js +1 -1
  178. package/dist/collection/snowflakes/myz/card/z-myz-card-list/index.js +1 -1
  179. package/dist/collection/snowflakes/myz/list/z-myz-list/index.js +1 -1
  180. package/dist/collection/snowflakes/myz/pocket/z-messages-pocket/index.js +1 -1
  181. package/dist/collection/snowflakes/myz/pocket/z-pocket/index.js +1 -1
  182. package/dist/collection/snowflakes/myz/pocket/z-pocket-body/index.js +1 -1
  183. package/dist/collection/snowflakes/myz/pocket/z-pocket-header/index.js +1 -1
  184. package/dist/collection/snowflakes/myz/pocket/z-pocket-message/index.js +1 -1
  185. package/dist/collection/snowflakes/myz/z-alert/index.js +1 -1
  186. package/dist/collection/snowflakes/myz/z-otp/index.js +2 -2
  187. package/dist/components/index.d.ts +28 -0
  188. package/dist/components/index.js +14 -0
  189. package/dist/components/index.js.map +1 -1
  190. package/dist/components/index13.js +10 -2
  191. package/dist/components/index13.js.map +1 -1
  192. package/dist/components/index16.js +1 -1
  193. package/dist/components/index17.js +1 -1
  194. package/dist/components/index18.js +1 -1
  195. package/dist/components/index19.js +1 -1
  196. package/dist/components/index21.js +2 -2
  197. package/dist/components/index21.js.map +1 -1
  198. package/dist/components/index22.js +1 -1
  199. package/dist/components/index23.js +1 -1
  200. package/dist/components/index24.js +1 -1
  201. package/dist/components/index25.js +1 -1
  202. package/dist/components/index26.js +3 -3
  203. package/dist/components/index26.js.map +1 -1
  204. package/dist/components/index27.js +37 -17
  205. package/dist/components/index27.js.map +1 -1
  206. package/dist/components/index28.js +45 -0
  207. package/dist/components/index28.js.map +1 -0
  208. package/dist/components/index29.js +120 -0
  209. package/dist/components/index29.js.map +1 -0
  210. package/dist/components/index3.js +1 -1
  211. package/dist/components/index30.js +46 -0
  212. package/dist/components/index30.js.map +1 -0
  213. package/dist/components/index6.js +1 -1
  214. package/dist/components/index8.js +1 -1
  215. package/dist/components/z-app-header.js +1 -1
  216. package/dist/components/z-contextual-menu.d.ts +11 -0
  217. package/dist/components/z-contextual-menu.js +98 -0
  218. package/dist/components/z-contextual-menu.js.map +1 -0
  219. package/dist/components/z-cover-hero.js +2 -2
  220. package/dist/components/z-file-upload.js +28 -15
  221. package/dist/components/z-file-upload.js.map +1 -1
  222. package/dist/components/z-info-reveal.js +1 -1
  223. package/dist/components/z-link.js +1 -1
  224. package/dist/components/z-messages-pocket.js +1 -1
  225. package/dist/components/z-myz-card-alert.js +1 -1
  226. package/dist/components/z-myz-card-dictionary.js +1 -1
  227. package/dist/components/z-myz-card-footer-sections.js +1 -1
  228. package/dist/components/z-myz-card-footer.js +1 -1
  229. package/dist/components/z-myz-card-icon.js +1 -1
  230. package/dist/components/z-myz-card-info.js +1 -1
  231. package/dist/components/z-myz-card-list.js +1 -1
  232. package/dist/components/z-myz-list.js +1 -1
  233. package/dist/components/z-navigation-tab-link.d.ts +11 -0
  234. package/dist/components/z-navigation-tab-link.js +105 -0
  235. package/dist/components/z-navigation-tab-link.js.map +1 -0
  236. package/dist/components/z-navigation-tab.d.ts +11 -0
  237. package/dist/components/z-navigation-tab.js +100 -0
  238. package/dist/components/z-navigation-tab.js.map +1 -0
  239. package/dist/components/z-otp.js +2 -2
  240. package/dist/components/z-pocket-message.js +1 -1
  241. package/dist/components/z-section-title.js +1 -1
  242. package/dist/components/z-skip-to-content.js +1 -1
  243. package/dist/components/z-table-body.d.ts +11 -0
  244. package/dist/components/z-table-body.js +40 -0
  245. package/dist/components/z-table-body.js.map +1 -0
  246. package/dist/components/z-table-cell.d.ts +11 -0
  247. package/dist/components/z-table-cell.js +8 -0
  248. package/dist/components/z-table-cell.js.map +1 -0
  249. package/dist/components/z-table-deprecated.d.ts +11 -0
  250. package/dist/components/z-table-deprecated.js +127 -0
  251. package/dist/components/z-table-deprecated.js.map +1 -0
  252. package/dist/components/z-table-empty-box.d.ts +11 -0
  253. package/dist/components/z-table-empty-box.js +8 -0
  254. package/dist/components/z-table-empty-box.js.map +1 -0
  255. package/dist/components/z-table-expanded-row.d.ts +11 -0
  256. package/dist/components/z-table-expanded-row.js +39 -0
  257. package/dist/components/z-table-expanded-row.js.map +1 -0
  258. package/dist/components/z-table-footer.d.ts +11 -0
  259. package/dist/components/z-table-footer.js +39 -0
  260. package/dist/components/z-table-footer.js.map +1 -0
  261. package/dist/components/z-table-head.d.ts +11 -0
  262. package/dist/components/z-table-head.js +39 -0
  263. package/dist/components/z-table-head.js.map +1 -0
  264. package/dist/components/z-table-header-row.d.ts +11 -0
  265. package/dist/components/z-table-header-row.js +65 -0
  266. package/dist/components/z-table-header-row.js.map +1 -0
  267. package/dist/components/z-table-header.d.ts +11 -0
  268. package/dist/components/z-table-header.js +8 -0
  269. package/dist/components/z-table-header.js.map +1 -0
  270. package/dist/components/z-table-row.d.ts +11 -0
  271. package/dist/components/z-table-row.js +79 -0
  272. package/dist/components/z-table-row.js.map +1 -0
  273. package/dist/components/z-table-sticky-footer.d.ts +11 -0
  274. package/dist/components/z-table-sticky-footer.js +35 -0
  275. package/dist/components/z-table-sticky-footer.js.map +1 -0
  276. package/dist/components/z-tag.js +1 -1
  277. package/dist/components/z-visually-hidden.js +1 -1
  278. package/dist/esm/icons-f212e30c.js +862 -0
  279. package/dist/esm/icons-f212e30c.js.map +1 -0
  280. package/dist/esm/index-0c3f6c0f.js +80 -0
  281. package/dist/esm/index-0c3f6c0f.js.map +1 -0
  282. package/dist/esm/index-1ad3694a.js +19 -0
  283. package/dist/esm/index-1ad3694a.js.map +1 -0
  284. package/dist/esm/index-42dcef4f.js +41 -0
  285. package/dist/esm/index-42dcef4f.js.map +1 -0
  286. package/dist/esm/index-55b38815.js +18 -0
  287. package/dist/esm/index-55b38815.js.map +1 -0
  288. package/dist/esm/index-5b6bb2e2.js +28 -0
  289. package/dist/esm/index-5b6bb2e2.js.map +1 -0
  290. package/dist/esm/index-659b7228.js +35 -0
  291. package/dist/esm/index-659b7228.js.map +1 -0
  292. package/dist/esm/index-73ab3b9b.js +22 -0
  293. package/dist/esm/index-73ab3b9b.js.map +1 -0
  294. package/dist/esm/index-754a9620.js +22 -0
  295. package/dist/esm/index-754a9620.js.map +1 -0
  296. package/dist/esm/index-829d5a8b.js +23 -0
  297. package/dist/esm/index-829d5a8b.js.map +1 -0
  298. package/dist/esm/index-c3277075.js +22 -0
  299. package/dist/esm/index-c3277075.js.map +1 -0
  300. package/dist/esm/index-f16bc2ca.js +56 -0
  301. package/dist/esm/loader.js +1 -1
  302. package/dist/esm/web-components-library.js +1 -1
  303. package/dist/esm/z-alert.entry.js +1 -1
  304. package/dist/esm/z-app-header_12.entry.js +17 -868
  305. package/dist/esm/z-app-header_12.entry.js.map +1 -1
  306. package/dist/esm/z-contextual-menu.entry.js +40 -0
  307. package/dist/esm/z-contextual-menu.entry.js.map +1 -0
  308. package/dist/esm/z-cover-hero.entry.js +2 -2
  309. package/dist/esm/z-file-upload.entry.js +25 -14
  310. package/dist/esm/z-file-upload.entry.js.map +1 -1
  311. package/dist/esm/z-ghost-loading.entry.js +1 -1
  312. package/dist/esm/z-info-reveal.entry.js +1 -1
  313. package/dist/esm/z-link.entry.js +1 -1
  314. package/dist/esm/z-messages-pocket.entry.js +1 -1
  315. package/dist/esm/z-myz-card-alert.entry.js +1 -1
  316. package/dist/esm/z-myz-card-dictionary.entry.js +1 -1
  317. package/dist/esm/z-myz-card-footer-sections.entry.js +1 -1
  318. package/dist/esm/z-myz-card-footer.entry.js +1 -1
  319. package/dist/esm/z-myz-card-icon.entry.js +1 -1
  320. package/dist/esm/z-myz-card-info.entry.js +1 -1
  321. package/dist/esm/z-myz-card-list.entry.js +1 -1
  322. package/dist/esm/z-myz-card_4.entry.js +4 -4
  323. package/dist/esm/z-myz-list.entry.js +1 -1
  324. package/dist/esm/z-navigation-tab-link.entry.js +68 -0
  325. package/dist/esm/z-navigation-tab-link.entry.js.map +1 -0
  326. package/dist/esm/z-navigation-tab.entry.js +65 -0
  327. package/dist/esm/z-navigation-tab.entry.js.map +1 -0
  328. package/dist/esm/z-otp.entry.js +2 -2
  329. package/dist/esm/z-pocket-message.entry.js +1 -1
  330. package/dist/esm/z-pocket_3.entry.js +3 -3
  331. package/dist/esm/z-popover.entry.js +1 -1
  332. package/dist/esm/z-section-title.entry.js +1 -1
  333. package/dist/esm/z-skip-to-content.entry.js +1 -1
  334. package/dist/esm/z-table-body.entry.js +4 -0
  335. package/dist/esm/z-table-body.entry.js.map +1 -0
  336. package/dist/esm/z-table-cell.entry.js +5 -0
  337. package/dist/esm/z-table-cell.entry.js.map +1 -0
  338. package/dist/esm/z-table-deprecated.entry.js +88 -0
  339. package/dist/esm/z-table-deprecated.entry.js.map +1 -0
  340. package/dist/esm/z-table-empty-box.entry.js +4 -0
  341. package/dist/esm/z-table-empty-box.entry.js.map +1 -0
  342. package/dist/esm/z-table-expanded-row.entry.js +4 -0
  343. package/dist/esm/z-table-expanded-row.entry.js.map +1 -0
  344. package/dist/esm/z-table-footer.entry.js +4 -0
  345. package/dist/esm/z-table-footer.entry.js.map +1 -0
  346. package/dist/esm/z-table-head.entry.js +4 -0
  347. package/dist/esm/z-table-head.entry.js.map +1 -0
  348. package/dist/esm/z-table-header-row.entry.js +4 -0
  349. package/dist/esm/z-table-header-row.entry.js.map +1 -0
  350. package/dist/esm/z-table-header.entry.js +7 -0
  351. package/dist/esm/z-table-header.entry.js.map +1 -0
  352. package/dist/esm/z-table-row.entry.js +5 -0
  353. package/dist/esm/z-table-row.entry.js.map +1 -0
  354. package/dist/esm/z-table-sticky-footer.entry.js +4 -0
  355. package/dist/esm/z-table-sticky-footer.entry.js.map +1 -0
  356. package/dist/esm/z-visually-hidden.entry.js +1 -1
  357. package/dist/types/components/file-upload/z-file-upload/index.d.ts +5 -0
  358. package/dist/types/components/inputs/z-searchbar/index.d.ts +0 -2
  359. package/dist/types/components/list/z-list-element/index.d.ts +5 -0
  360. package/dist/types/components/z-contextual-menu/index.d.ts +26 -0
  361. package/dist/types/components.d.ts +897 -10
  362. package/dist/types/deprecated/z-navigation-tab/index.d.ts +69 -0
  363. package/dist/types/deprecated/z-navigation-tab-link/index.d.ts +77 -0
  364. package/dist/types/deprecated/z-table-deprecated/z-table-body/index.d.ts +8 -0
  365. package/dist/types/deprecated/z-table-deprecated/z-table-cell/index.d.ts +14 -0
  366. package/dist/types/deprecated/z-table-deprecated/z-table-deprecated/index.d.ts +59 -0
  367. package/dist/types/deprecated/z-table-deprecated/z-table-empty-box/index.d.ts +15 -0
  368. package/dist/types/deprecated/z-table-deprecated/z-table-expanded-row/index.d.ts +8 -0
  369. package/dist/types/deprecated/z-table-deprecated/z-table-footer/index.d.ts +8 -0
  370. package/dist/types/deprecated/z-table-deprecated/z-table-head/index.d.ts +8 -0
  371. package/dist/types/deprecated/z-table-deprecated/z-table-header/index.d.ts +31 -0
  372. package/dist/types/deprecated/z-table-deprecated/z-table-header-row/index.d.ts +9 -0
  373. package/dist/types/deprecated/z-table-deprecated/z-table-row/index.d.ts +16 -0
  374. package/dist/types/deprecated/z-table-deprecated/z-table-sticky-footer/index.d.ts +7 -0
  375. package/dist/web-components-library/p-011a7536.js +2 -0
  376. package/dist/web-components-library/p-011a7536.js.map +1 -0
  377. package/{www/build/p-04755b76.entry.js → dist/web-components-library/p-10c29fb4.entry.js} +2 -2
  378. package/dist/web-components-library/p-1ff016c2.entry.js +2 -0
  379. package/dist/web-components-library/p-1ff016c2.entry.js.map +1 -0
  380. package/dist/web-components-library/{p-942e5126.entry.js → p-210fbe0f.entry.js} +2 -2
  381. package/dist/web-components-library/p-2731d501.entry.js +2 -0
  382. package/dist/web-components-library/p-2731d501.entry.js.map +1 -0
  383. package/dist/web-components-library/p-28c6bb97.entry.js +2 -0
  384. package/dist/web-components-library/p-28c6bb97.entry.js.map +1 -0
  385. package/dist/web-components-library/{p-6edd5dbe.entry.js → p-2f72475d.entry.js} +2 -2
  386. package/dist/web-components-library/p-3441cb4e.entry.js +2 -0
  387. package/dist/web-components-library/p-3441cb4e.entry.js.map +1 -0
  388. package/dist/web-components-library/p-356aac96.js +2 -0
  389. package/dist/web-components-library/p-356aac96.js.map +1 -0
  390. package/dist/web-components-library/{p-24ab494d.entry.js → p-378b2bbf.entry.js} +2 -2
  391. package/{www/build/p-d1f8ca38.entry.js → dist/web-components-library/p-38c63f28.entry.js} +2 -2
  392. package/dist/web-components-library/{p-8d81a5c8.entry.js → p-402bd7f6.entry.js} +2 -2
  393. package/dist/web-components-library/p-40f68d35.entry.js +2 -0
  394. package/dist/web-components-library/p-40f68d35.entry.js.map +1 -0
  395. package/dist/web-components-library/p-4686b762.js +2 -0
  396. package/dist/web-components-library/p-4686b762.js.map +1 -0
  397. package/dist/web-components-library/p-472eb82d.entry.js +2 -0
  398. package/dist/web-components-library/p-472eb82d.entry.js.map +1 -0
  399. package/dist/web-components-library/p-4bc82510.js +2 -0
  400. package/dist/web-components-library/p-4bc82510.js.map +1 -0
  401. package/dist/web-components-library/p-55d22af2.js +2 -0
  402. package/dist/web-components-library/p-55d22af2.js.map +1 -0
  403. package/dist/web-components-library/{p-dbc437d8.entry.js → p-5d220bbc.entry.js} +2 -2
  404. package/dist/web-components-library/p-5e585fe9.js +2 -0
  405. package/dist/web-components-library/p-5e585fe9.js.map +1 -0
  406. package/dist/web-components-library/p-6087739d.js +2 -0
  407. package/dist/web-components-library/p-6087739d.js.map +1 -0
  408. package/dist/web-components-library/p-626a5bb1.entry.js +2 -0
  409. package/dist/web-components-library/p-626a5bb1.entry.js.map +1 -0
  410. package/dist/web-components-library/p-6790a3c1.js +2 -0
  411. package/dist/web-components-library/p-6790a3c1.js.map +1 -0
  412. package/dist/web-components-library/p-68a9a3dd.entry.js +2 -0
  413. package/dist/web-components-library/p-68a9a3dd.entry.js.map +1 -0
  414. package/dist/web-components-library/p-69697329.entry.js +2 -0
  415. package/dist/web-components-library/p-69697329.entry.js.map +1 -0
  416. package/dist/web-components-library/p-6aba107d.entry.js +2 -0
  417. package/dist/web-components-library/p-6aba107d.entry.js.map +1 -0
  418. package/dist/web-components-library/{p-00d7315a.entry.js → p-6d0bb567.entry.js} +2 -2
  419. package/dist/web-components-library/{p-05b39597.entry.js → p-7d4cd2e8.entry.js} +2 -2
  420. package/dist/web-components-library/p-820c2503.js +2 -0
  421. package/dist/web-components-library/p-820c2503.js.map +1 -0
  422. package/dist/web-components-library/{p-120a809e.entry.js → p-83657b33.entry.js} +2 -2
  423. package/dist/web-components-library/{p-b670ffa5.entry.js → p-97bba1f2.entry.js} +2 -2
  424. package/dist/web-components-library/{p-d251f105.entry.js → p-9882e8a5.entry.js} +2 -2
  425. package/dist/web-components-library/p-98e8d64f.entry.js +2 -0
  426. package/dist/web-components-library/p-98e8d64f.entry.js.map +1 -0
  427. package/dist/web-components-library/p-9bcb606c.entry.js +2 -0
  428. package/dist/web-components-library/p-9bcb606c.entry.js.map +1 -0
  429. package/dist/web-components-library/{p-996c1471.entry.js → p-9e71d6b3.entry.js} +2 -2
  430. package/dist/web-components-library/{p-b57362ef.entry.js → p-ac497c80.entry.js} +2 -2
  431. package/dist/web-components-library/{p-5eb0a064.entry.js → p-ae71256f.entry.js} +2 -2
  432. package/dist/web-components-library/{p-95104b91.entry.js → p-af27423a.entry.js} +2 -2
  433. package/dist/web-components-library/p-b1b69181.entry.js +2 -0
  434. package/dist/web-components-library/p-b1b69181.entry.js.map +1 -0
  435. package/dist/web-components-library/p-b99dd793.entry.js +2 -0
  436. package/dist/web-components-library/p-b99dd793.entry.js.map +1 -0
  437. package/{www/build/p-a53ab86e.entry.js → dist/web-components-library/p-bb8037c4.entry.js} +2 -2
  438. package/dist/web-components-library/p-c2555fef.entry.js +2 -0
  439. package/dist/web-components-library/p-c2555fef.entry.js.map +1 -0
  440. package/dist/web-components-library/p-ca5975a3.js +2 -0
  441. package/dist/web-components-library/p-ca5975a3.js.map +1 -0
  442. package/dist/web-components-library/p-cc46f0ce.js +2 -0
  443. package/dist/web-components-library/p-cc46f0ce.js.map +1 -0
  444. package/{www/build/p-d92765b6.entry.js → dist/web-components-library/p-e3e48e64.entry.js} +2 -2
  445. package/dist/web-components-library/p-ebcf6b4d.entry.js +2 -0
  446. package/dist/web-components-library/p-ed03b414.entry.js +2 -0
  447. package/dist/web-components-library/p-ed03b414.entry.js.map +1 -0
  448. package/{www/build/p-2637ab23.entry.js → dist/web-components-library/p-f97c093d.entry.js} +2 -2
  449. package/dist/web-components-library/{p-239fb968.entry.js → p-fa4a2862.entry.js} +2 -2
  450. package/dist/web-components-library/p-fe8d7642.entry.js +2 -0
  451. package/dist/web-components-library/web-components-library.esm.js +1 -1
  452. package/dist/web-components-library/web-components-library.esm.js.map +1 -1
  453. package/package.json +1 -1
  454. package/react/components.d.ts +14 -0
  455. package/react/components.js +16 -2
  456. package/react/components.js.map +1 -1
  457. package/www/build/p-011a7536.js +2 -0
  458. package/www/build/p-011a7536.js.map +1 -0
  459. package/{dist/web-components-library/p-04755b76.entry.js → www/build/p-10c29fb4.entry.js} +2 -2
  460. package/www/build/p-1ff016c2.entry.js +2 -0
  461. package/www/build/p-1ff016c2.entry.js.map +1 -0
  462. package/www/build/{p-942e5126.entry.js → p-210fbe0f.entry.js} +2 -2
  463. package/www/build/p-2731d501.entry.js +2 -0
  464. package/www/build/p-2731d501.entry.js.map +1 -0
  465. package/www/build/p-28c6bb97.entry.js +2 -0
  466. package/www/build/p-28c6bb97.entry.js.map +1 -0
  467. package/www/build/{p-6edd5dbe.entry.js → p-2f72475d.entry.js} +2 -2
  468. package/www/build/p-3441cb4e.entry.js +2 -0
  469. package/www/build/p-3441cb4e.entry.js.map +1 -0
  470. package/www/build/p-356aac96.js +2 -0
  471. package/www/build/p-356aac96.js.map +1 -0
  472. package/www/build/{p-24ab494d.entry.js → p-378b2bbf.entry.js} +2 -2
  473. package/{dist/web-components-library/p-d1f8ca38.entry.js → www/build/p-38c63f28.entry.js} +2 -2
  474. package/www/build/{p-8d81a5c8.entry.js → p-402bd7f6.entry.js} +2 -2
  475. package/www/build/p-40f68d35.entry.js +2 -0
  476. package/www/build/p-40f68d35.entry.js.map +1 -0
  477. package/www/build/p-4686b762.js +2 -0
  478. package/www/build/p-4686b762.js.map +1 -0
  479. package/www/build/p-472eb82d.entry.js +2 -0
  480. package/www/build/p-472eb82d.entry.js.map +1 -0
  481. package/www/build/p-4bc82510.js +2 -0
  482. package/www/build/p-4bc82510.js.map +1 -0
  483. package/www/build/p-55d22af2.js +2 -0
  484. package/www/build/p-55d22af2.js.map +1 -0
  485. package/www/build/{p-dbc437d8.entry.js → p-5d220bbc.entry.js} +2 -2
  486. package/www/build/p-5e585fe9.js +2 -0
  487. package/www/build/p-5e585fe9.js.map +1 -0
  488. package/www/build/p-6087739d.js +2 -0
  489. package/www/build/p-6087739d.js.map +1 -0
  490. package/www/build/p-626a5bb1.entry.js +2 -0
  491. package/www/build/p-626a5bb1.entry.js.map +1 -0
  492. package/www/build/p-6790a3c1.js +2 -0
  493. package/www/build/p-6790a3c1.js.map +1 -0
  494. package/www/build/p-68a9a3dd.entry.js +2 -0
  495. package/www/build/p-68a9a3dd.entry.js.map +1 -0
  496. package/www/build/p-69697329.entry.js +2 -0
  497. package/www/build/p-69697329.entry.js.map +1 -0
  498. package/www/build/p-6aba107d.entry.js +2 -0
  499. package/www/build/p-6aba107d.entry.js.map +1 -0
  500. package/www/build/{p-00d7315a.entry.js → p-6d0bb567.entry.js} +2 -2
  501. package/www/build/{p-05b39597.entry.js → p-7d4cd2e8.entry.js} +2 -2
  502. package/www/build/p-820c2503.js +2 -0
  503. package/www/build/p-820c2503.js.map +1 -0
  504. package/www/build/{p-120a809e.entry.js → p-83657b33.entry.js} +2 -2
  505. package/www/build/p-87a03b6d.js +2 -0
  506. package/www/build/{p-b670ffa5.entry.js → p-97bba1f2.entry.js} +2 -2
  507. package/www/build/{p-d251f105.entry.js → p-9882e8a5.entry.js} +2 -2
  508. package/www/build/p-98e8d64f.entry.js +2 -0
  509. package/www/build/p-98e8d64f.entry.js.map +1 -0
  510. package/www/build/p-9bcb606c.entry.js +2 -0
  511. package/www/build/p-9bcb606c.entry.js.map +1 -0
  512. package/www/build/{p-996c1471.entry.js → p-9e71d6b3.entry.js} +2 -2
  513. package/www/build/{p-b57362ef.entry.js → p-ac497c80.entry.js} +2 -2
  514. package/www/build/{p-5eb0a064.entry.js → p-ae71256f.entry.js} +2 -2
  515. package/www/build/{p-95104b91.entry.js → p-af27423a.entry.js} +2 -2
  516. package/www/build/p-b1b69181.entry.js +2 -0
  517. package/www/build/p-b1b69181.entry.js.map +1 -0
  518. package/www/build/p-b99dd793.entry.js +2 -0
  519. package/www/build/p-b99dd793.entry.js.map +1 -0
  520. package/{dist/web-components-library/p-a53ab86e.entry.js → www/build/p-bb8037c4.entry.js} +2 -2
  521. package/www/build/p-c2555fef.entry.js +2 -0
  522. package/www/build/p-c2555fef.entry.js.map +1 -0
  523. package/www/build/p-ca5975a3.js +2 -0
  524. package/www/build/p-ca5975a3.js.map +1 -0
  525. package/www/build/p-cc46f0ce.js +2 -0
  526. package/www/build/p-cc46f0ce.js.map +1 -0
  527. package/{dist/web-components-library/p-d92765b6.entry.js → www/build/p-e3e48e64.entry.js} +2 -2
  528. package/www/build/p-ebcf6b4d.entry.js +2 -0
  529. package/www/build/p-ed03b414.entry.js +2 -0
  530. package/www/build/p-ed03b414.entry.js.map +1 -0
  531. package/{dist/web-components-library/p-2637ab23.entry.js → www/build/p-f97c093d.entry.js} +2 -2
  532. package/www/build/{p-239fb968.entry.js → p-fa4a2862.entry.js} +2 -2
  533. package/www/build/p-fe8d7642.entry.js +2 -0
  534. package/www/build/web-components-library.esm.js +1 -1
  535. package/www/build/web-components-library.esm.js.map +1 -1
  536. package/www/index.html +1 -1
  537. package/dist/web-components-library/p-4c40561d.entry.js +0 -2
  538. package/dist/web-components-library/p-5023f7d5.entry.js +0 -2
  539. package/dist/web-components-library/p-5023f7d5.entry.js.map +0 -1
  540. package/dist/web-components-library/p-5d67d311.entry.js +0 -2
  541. package/dist/web-components-library/p-91a7c5a9.entry.js +0 -2
  542. package/dist/web-components-library/p-91a7c5a9.entry.js.map +0 -1
  543. package/www/build/p-4c40561d.entry.js +0 -2
  544. package/www/build/p-5023f7d5.entry.js +0 -2
  545. package/www/build/p-5023f7d5.entry.js.map +0 -1
  546. package/www/build/p-56810079.js +0 -2
  547. package/www/build/p-5d67d311.entry.js +0 -2
  548. package/www/build/p-91a7c5a9.entry.js +0 -2
  549. package/www/build/p-91a7c5a9.entry.js.map +0 -1
  550. /package/dist/web-components-library/{p-04755b76.entry.js.map → p-10c29fb4.entry.js.map} +0 -0
  551. /package/dist/web-components-library/{p-942e5126.entry.js.map → p-210fbe0f.entry.js.map} +0 -0
  552. /package/dist/web-components-library/{p-6edd5dbe.entry.js.map → p-2f72475d.entry.js.map} +0 -0
  553. /package/dist/web-components-library/{p-24ab494d.entry.js.map → p-378b2bbf.entry.js.map} +0 -0
  554. /package/dist/web-components-library/{p-d1f8ca38.entry.js.map → p-38c63f28.entry.js.map} +0 -0
  555. /package/dist/web-components-library/{p-8d81a5c8.entry.js.map → p-402bd7f6.entry.js.map} +0 -0
  556. /package/dist/web-components-library/{p-dbc437d8.entry.js.map → p-5d220bbc.entry.js.map} +0 -0
  557. /package/dist/web-components-library/{p-00d7315a.entry.js.map → p-6d0bb567.entry.js.map} +0 -0
  558. /package/dist/web-components-library/{p-05b39597.entry.js.map → p-7d4cd2e8.entry.js.map} +0 -0
  559. /package/dist/web-components-library/{p-120a809e.entry.js.map → p-83657b33.entry.js.map} +0 -0
  560. /package/dist/web-components-library/{p-b670ffa5.entry.js.map → p-97bba1f2.entry.js.map} +0 -0
  561. /package/dist/web-components-library/{p-d251f105.entry.js.map → p-9882e8a5.entry.js.map} +0 -0
  562. /package/dist/web-components-library/{p-996c1471.entry.js.map → p-9e71d6b3.entry.js.map} +0 -0
  563. /package/dist/web-components-library/{p-b57362ef.entry.js.map → p-ac497c80.entry.js.map} +0 -0
  564. /package/dist/web-components-library/{p-5eb0a064.entry.js.map → p-ae71256f.entry.js.map} +0 -0
  565. /package/dist/web-components-library/{p-95104b91.entry.js.map → p-af27423a.entry.js.map} +0 -0
  566. /package/dist/web-components-library/{p-a53ab86e.entry.js.map → p-bb8037c4.entry.js.map} +0 -0
  567. /package/dist/web-components-library/{p-d92765b6.entry.js.map → p-e3e48e64.entry.js.map} +0 -0
  568. /package/dist/web-components-library/{p-4c40561d.entry.js.map → p-ebcf6b4d.entry.js.map} +0 -0
  569. /package/dist/web-components-library/{p-2637ab23.entry.js.map → p-f97c093d.entry.js.map} +0 -0
  570. /package/dist/web-components-library/{p-239fb968.entry.js.map → p-fa4a2862.entry.js.map} +0 -0
  571. /package/dist/web-components-library/{p-5d67d311.entry.js.map → p-fe8d7642.entry.js.map} +0 -0
  572. /package/www/build/{p-04755b76.entry.js.map → p-10c29fb4.entry.js.map} +0 -0
  573. /package/www/build/{p-942e5126.entry.js.map → p-210fbe0f.entry.js.map} +0 -0
  574. /package/www/build/{p-6edd5dbe.entry.js.map → p-2f72475d.entry.js.map} +0 -0
  575. /package/www/build/{p-24ab494d.entry.js.map → p-378b2bbf.entry.js.map} +0 -0
  576. /package/www/build/{p-d1f8ca38.entry.js.map → p-38c63f28.entry.js.map} +0 -0
  577. /package/www/build/{p-8d81a5c8.entry.js.map → p-402bd7f6.entry.js.map} +0 -0
  578. /package/www/build/{p-dbc437d8.entry.js.map → p-5d220bbc.entry.js.map} +0 -0
  579. /package/www/build/{p-00d7315a.entry.js.map → p-6d0bb567.entry.js.map} +0 -0
  580. /package/www/build/{p-05b39597.entry.js.map → p-7d4cd2e8.entry.js.map} +0 -0
  581. /package/www/build/{p-120a809e.entry.js.map → p-83657b33.entry.js.map} +0 -0
  582. /package/www/build/{p-b670ffa5.entry.js.map → p-97bba1f2.entry.js.map} +0 -0
  583. /package/www/build/{p-d251f105.entry.js.map → p-9882e8a5.entry.js.map} +0 -0
  584. /package/www/build/{p-996c1471.entry.js.map → p-9e71d6b3.entry.js.map} +0 -0
  585. /package/www/build/{p-b57362ef.entry.js.map → p-ac497c80.entry.js.map} +0 -0
  586. /package/www/build/{p-5eb0a064.entry.js.map → p-ae71256f.entry.js.map} +0 -0
  587. /package/www/build/{p-95104b91.entry.js.map → p-af27423a.entry.js.map} +0 -0
  588. /package/www/build/{p-a53ab86e.entry.js.map → p-bb8037c4.entry.js.map} +0 -0
  589. /package/www/build/{p-d92765b6.entry.js.map → p-e3e48e64.entry.js.map} +0 -0
  590. /package/www/build/{p-4c40561d.entry.js.map → p-ebcf6b4d.entry.js.map} +0 -0
  591. /package/www/build/{p-2637ab23.entry.js.map → p-f97c093d.entry.js.map} +0 -0
  592. /package/www/build/{p-239fb968.entry.js.map → p-fa4a2862.entry.js.map} +0 -0
  593. /package/www/build/{p-5d67d311.entry.js.map → p-fe8d7642.entry.js.map} +0 -0
@@ -17,19 +17,12 @@ export class ZFileUpload {
17
17
  this.files = [];
18
18
  this.uploadBtnLabel = "allega";
19
19
  this.dragAndDropLabel = "Rilascia i file in questa area per allegarli.";
20
+ this.hasFileSection = true;
20
21
  this.invalidFiles = undefined;
21
22
  }
22
23
  /** Listen removeFile event sent from z-file component */
23
24
  removeFileListener(e) {
24
- const files = this.files;
25
- const file = files.find((file) => file.name === e.detail.fileName);
26
- if (file) {
27
- const index = files.indexOf(file);
28
- if (index >= 0) {
29
- files.splice(index, 1);
30
- this.files = [...files];
31
- }
32
- }
25
+ this.removeFiles(e.detail);
33
26
  }
34
27
  /** Listen fileDropped event sent from z-dragdrop-area component */
35
28
  fileDroppedListener(e) {
@@ -52,6 +45,21 @@ export class ZFileUpload {
52
45
  async getFiles() {
53
46
  return this.files;
54
47
  }
48
+ /** remove file from the array */
49
+ async removeFile(fileName) {
50
+ await this.removeFiles(fileName);
51
+ }
52
+ async removeFiles(fileName) {
53
+ const files = this.files;
54
+ const file = files.find((file) => file.name === fileName);
55
+ if (file) {
56
+ const index = files.indexOf(file);
57
+ if (index >= 0) {
58
+ files.splice(index, 1);
59
+ this.files = [...files];
60
+ }
61
+ }
62
+ }
55
63
  getType() {
56
64
  if (getDevice() !== Device.DESKTOP && getDevice() !== Device.DESKTOP_WIDE) {
57
65
  return ZFileUploadType.DEFAULT;
@@ -72,7 +80,7 @@ export class ZFileUpload {
72
80
  checkFiles(files) {
73
81
  const errors = new Map();
74
82
  const sizeErrorString = `supera il limite di ${this.fileMaxSize}MB`;
75
- const formatErrorString = " ha un'estensione non prevista";
83
+ const formatErrorString = " ha un formato non supportato";
76
84
  files.forEach((file) => {
77
85
  const fileSize = file.size / 1024 / 1024;
78
86
  const fileFormatOk = this.acceptedFormat
@@ -120,6 +128,9 @@ export class ZFileUpload {
120
128
  return h("span", { class: "body-3" }, fileFormatString || fileWeightString ? finalString : null);
121
129
  }
122
130
  renderFileSection() {
131
+ if (!this.hasFileSection) {
132
+ return;
133
+ }
123
134
  return (h("section", { class: `files-container ${!this.files.length ? "hidden" : ""}` }, h("span", { class: "heading-4-sb" }, "File appena caricati"), h("div", { class: "files-wrapper" }, h("slot", { name: "files" })), h("z-divider", { size: DividerSize.MEDIUM })));
124
135
  }
125
136
  renderInput() {
@@ -163,8 +174,8 @@ export class ZFileUpload {
163
174
  }
164
175
  formatErrorString(key, value) {
165
176
  var _a, _b;
166
- const bothErrors = value[0] && value[1] ? ", ed " : "";
167
- return `Il file ${key} ${(_a = value[0]) !== null && _a !== void 0 ? _a : ""}${bothErrors}${(_b = value[1]) !== null && _b !== void 0 ? _b : ""}.`;
177
+ const bothErrors = value[0] && value[1] ? " e " : "";
178
+ return (h("span", { class: "error-message" }, "Il file ", h("span", { class: "file-name" }, key), " ", (_a = value[1]) !== null && _a !== void 0 ? _a : "", bothErrors, (_b = value[0]) !== null && _b !== void 0 ? _b : "", "."));
168
179
  }
169
180
  handleErrorModalContent() {
170
181
  return (h("div", { slot: "modalContent" }, h("div", { class: "modal-wrapper" }, h("div", { class: "files" }, Array.from(this.invalidFiles).map(([key, value]) => {
@@ -172,7 +183,7 @@ export class ZFileUpload {
172
183
  })))));
173
184
  }
174
185
  render() {
175
- return (h(Host, { key: 'b098b42d074787675ee266cc25746d479c202c5b' }, h("div", { key: '642c0c1c5e470dcbb57ce9975fd89ca138c196f4', tabIndex: 0, class: `container ${this.getType()}` }, this.mainTitle && this.renderTitle(), this.getType() == ZFileUploadType.DEFAULT ? this.renderDefaultMode() : this.renderDragDropMode()), !!this.invalidFiles.size && (h("z-modal", { modalid: `file-upload-${this.type}-error-modal`, tabIndex: 0, ref: (val) => (this.errorModal = val), modaltitle: "Attenzione", onModalClose: () => (this.invalidFiles = new Map()), onModalBackgroundClick: () => (this.invalidFiles = new Map()) }, this.handleErrorModalContent()))));
186
+ return (h(Host, { key: '993674bad95a4e06fab44fab89194ca219e4faac' }, h("div", { key: '77ea47b582116ffbbccc66fe24d8a152150c20ff', tabIndex: 0, class: `container ${this.getType()}` }, this.mainTitle && this.renderTitle(), this.getType() == ZFileUploadType.DEFAULT ? this.renderDefaultMode() : this.renderDragDropMode()), !!this.invalidFiles.size && (h("z-modal", { modalid: `file-upload-${this.type}-error-modal`, tabIndex: 0, ref: (val) => (this.errorModal = val), modaltitle: "Errore di caricamento", onModalClose: () => (this.invalidFiles = new Map()), onModalBackgroundClick: () => (this.invalidFiles = new Map()) }, this.handleErrorModalContent()))));
176
187
  }
177
188
  static get is() { return "z-file-upload"; }
178
189
  static get encapsulation() { return "shadow"; }
@@ -338,6 +349,24 @@ export class ZFileUpload {
338
349
  "attribute": "drag-and-drop-label",
339
350
  "reflect": false,
340
351
  "defaultValue": "\"Rilascia i file in questa area per allegarli.\""
352
+ },
353
+ "hasFileSection": {
354
+ "type": "boolean",
355
+ "mutable": false,
356
+ "complexType": {
357
+ "original": "boolean",
358
+ "resolved": "boolean",
359
+ "references": {}
360
+ },
361
+ "required": false,
362
+ "optional": true,
363
+ "docs": {
364
+ "tags": [],
365
+ "text": "uploaded files history rendering"
366
+ },
367
+ "attribute": "has-file-section",
368
+ "reflect": false,
369
+ "defaultValue": "true"
341
370
  }
342
371
  };
343
372
  }
@@ -387,6 +416,27 @@ export class ZFileUpload {
387
416
  "text": "get array of uploaded files",
388
417
  "tags": []
389
418
  }
419
+ },
420
+ "removeFile": {
421
+ "complexType": {
422
+ "signature": "(fileName: string) => Promise<void>",
423
+ "parameters": [{
424
+ "name": "fileName",
425
+ "type": "string",
426
+ "docs": ""
427
+ }],
428
+ "references": {
429
+ "Promise": {
430
+ "location": "global",
431
+ "id": "global::Promise"
432
+ }
433
+ },
434
+ "return": "Promise<void>"
435
+ },
436
+ "docs": {
437
+ "text": "remove file from the array",
438
+ "tags": []
439
+ }
390
440
  }
391
441
  };
392
442
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/file-upload/z-file-upload/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Component, Prop, h, EventEmitter, Event, State, Listen, Element, Host, Method} from \"@stencil/core\";\nimport {ButtonVariant, Device, DividerSize, ZFileUploadType} from \"../../../beans\";\nimport {getDevice} from \"../../../utils/utils\";\n\n@Component({\n tag: \"z-file-upload\",\n styleUrl: \"styles.css\",\n shadow: true,\n})\nexport class ZFileUpload {\n /** Prop indicating the file upload type - can be default or dragdrop */\n @Prop({reflect: true})\n type: ZFileUploadType = ZFileUploadType.DEFAULT;\n\n /** Prop indicating the button variant*/\n @Prop()\n buttonVariant?: ButtonVariant;\n\n /** Prop indicating the accepted file type: ex \".pdf, .doc, .jpg\" */\n @Prop()\n acceptedFormat?: string;\n\n /** Max file dimension in Megabyte */\n @Prop()\n fileMaxSize?: number;\n\n /** Title */\n @Prop()\n mainTitle?: string;\n\n /** Description */\n @Prop()\n description?: string;\n\n /** Files added by the user */\n @State()\n files: File[] = [];\n\n /** upoload button label */\n @Prop()\n uploadBtnLabel?: string = \"allega\";\n\n /** drag & drop button label */\n @Prop()\n dragAndDropLabel?: string = \"Rilascia i file in questa area per allegarli.\";\n\n /** List of files not allowed to be uploaded */\n @State()\n invalidFiles: Map<string, string[]>;\n\n @Element() el: HTMLZFileUploadElement;\n\n private input: HTMLInputElement;\n\n private button: HTMLZButtonElement;\n\n private errorModal: HTMLZModalElement;\n\n private uploadLink: HTMLSpanElement;\n\n private inputAttributes = {\n type: \"file\",\n id: \"file-elem\",\n multiple: true,\n };\n\n /** Listen removeFile event sent from z-file component */\n @Listen(\"removeFile\")\n removeFileListener(e: CustomEvent): void {\n const files = this.files;\n const file = files.find((file) => file.name === e.detail.fileName);\n if (file) {\n const index = files.indexOf(file);\n if (index >= 0) {\n files.splice(index, 1);\n this.files = [...files];\n }\n }\n }\n\n /** Listen fileDropped event sent from z-dragdrop-area component */\n @Listen(\"fileDropped\")\n fileDroppedListener(e: CustomEvent): void {\n this.input.files = e.detail;\n this.fileInputHandler();\n }\n\n componentDidUpdate(): void {\n this.handleAccessibility();\n this.invalidFiles.size && this.errorModal.focus();\n }\n\n componentWillLoad(): void {\n this.invalidFiles = new Map<string, string[]>();\n }\n\n /** Emitted when user select one or more files */\n @Event()\n fileInput: EventEmitter;\n\n private fileInputHandler(): void {\n if (this.input.files.length) {\n this.invalidFiles = this.checkFiles(Array.from(this.input.files));\n }\n }\n\n /** get array of uploaded files */\n @Method()\n async getFiles(): Promise<File[]> {\n return this.files;\n }\n\n private getType(): ZFileUploadType {\n if (getDevice() !== Device.DESKTOP && getDevice() !== Device.DESKTOP_WIDE) {\n return ZFileUploadType.DEFAULT;\n }\n\n return this.type;\n }\n\n private handleAccessibility(): void {\n const lastFile = this.el.querySelector(\"z-file:last-child z-chip button\");\n if (this.files.length > 0 && lastFile) {\n (lastFile as HTMLElement).focus();\n } else {\n this.getType() === ZFileUploadType.DEFAULT\n ? this.button.querySelector(\"button\").focus()\n : this.uploadLink.focus();\n }\n }\n\n private checkFiles(files: File[]): Map<string, string[]> {\n const errors = new Map<string, string[]>();\n const sizeErrorString = `supera il limite di ${this.fileMaxSize}MB`;\n const formatErrorString = \" ha un'estensione non prevista\";\n files.forEach((file: File) => {\n const fileSize = file.size / 1024 / 1024;\n const fileFormatOk = this.acceptedFormat\n .split(\",\")\n .some((ext: string) => file.name.toLowerCase().endsWith(ext.trim()));\n const fileSizeOk = fileSize <= this.fileMaxSize;\n if (fileSizeOk && fileFormatOk) {\n if (!this.files.find((f) => f.name === file.name)) {\n this.files.push(file);\n this.fileInput.emit(file);\n this.input.value = \"\";\n }\n\n return;\n }\n errors.set(file.name, []);\n if (!fileSizeOk) {\n errors.get(file.name).push(sizeErrorString);\n }\n if (!fileFormatOk) {\n errors.get(file.name).push(formatErrorString);\n }\n });\n\n return errors;\n }\n\n private renderTitle(): HTMLElement {\n return <span id=\"title\">{this.mainTitle}</span>;\n }\n\n private renderDescription(cssClass): HTMLElement {\n return <span class={cssClass}>{this.description}</span>;\n }\n\n private renderAllowedFileExtensions(): HTMLElement {\n let fileFormatString = \"\";\n let fileWeightString = \"\";\n\n if (this.acceptedFormat) {\n const fileFormat = this.acceptedFormat\n .split(\", \")\n .map((string) => string.substring(1).toUpperCase())\n .join(\", \");\n fileFormatString = ` nei formati ${fileFormat}`;\n }\n\n if (this.fileMaxSize) {\n fileWeightString = ` per un massimo di ${this.fileMaxSize}MB di peso`;\n }\n\n const finalString = `Puoi allegare file${fileFormatString}${fileWeightString}.`;\n\n return <span class=\"body-3\">{fileFormatString || fileWeightString ? finalString : null}</span>;\n }\n\n private renderFileSection(): HTMLElement {\n return (\n <section class={`files-container ${!this.files.length ? \"hidden\" : \"\"}`}>\n <span class=\"heading-4-sb\">File appena caricati</span>\n <div class=\"files-wrapper\">\n <slot name=\"files\" />\n </div>\n <z-divider size={DividerSize.MEDIUM} />\n </section>\n );\n }\n\n private renderInput(): HTMLInputElement {\n return (\n <input\n {...this.inputAttributes}\n onChange={() => this.fileInputHandler()}\n accept={this.acceptedFormat}\n ref={(val) => (this.input = val)}\n />\n );\n }\n\n private renderUploadButton(): unknown[] {\n return [\n this.renderInput(),\n <z-button\n onClick={() => this.input.click()}\n onKeyPress={(e) => {\n if (e.code == \"Space\" || e.code == \"Enter\") {\n e.preventDefault();\n this.input.click();\n }\n }}\n id=\"fileSelect\"\n variant={this.buttonVariant}\n icon=\"upload\"\n ref={(val) => (this.button = val)}\n >\n {this.uploadBtnLabel}\n </z-button>,\n ];\n }\n\n private renderUploadLink(): unknown[] {\n return [\n this.renderInput(),\n <span class=\"body-1 upload-link-text\">\n Trascina o{\" \"}\n <span\n tabIndex={0}\n class=\"body-1-sb upload-link\"\n onClick={() => this.input.click()}\n onKeyPress={(e) => {\n if (e.code == \"Space\" || e.code == \"Enter\") {\n e.preventDefault();\n this.input.click();\n }\n }}\n ref={(val) => (this.uploadLink = val)}\n >\n carica\n </span>{\" \"}\n dal tuo computer\n </span>,\n ];\n }\n\n private renderDefaultMode(): unknown[] {\n return [\n this.renderDescription(\"body-3-sb\"),\n this.renderAllowedFileExtensions(),\n this.renderFileSection(),\n this.renderUploadButton(),\n ];\n }\n\n private renderDragDropMode(): unknown[] {\n return [\n this.renderFileSection(),\n <z-dragdrop-area drag-and-drop-label={this.dragAndDropLabel}>\n <div class=\"text-container\">\n {this.renderDescription(\"body-1\")}\n {this.renderUploadLink()}\n {this.renderAllowedFileExtensions()}\n </div>\n </z-dragdrop-area>,\n ];\n }\n\n private formatErrorString(key, value): string {\n const bothErrors = value[0] && value[1] ? \", ed \" : \"\";\n\n return `Il file ${key} ${value[0] ?? \"\"}${bothErrors}${value[1] ?? \"\"}.`;\n }\n\n private handleErrorModalContent(): HTMLDivElement {\n return (\n <div slot=\"modalContent\">\n <div class=\"modal-wrapper\">\n <div class=\"files\">\n {Array.from(this.invalidFiles).map(([key, value]) => {\n return <span class=\"body-3\">{this.formatErrorString(key, value)}</span>;\n })}\n </div>\n </div>\n </div>\n );\n }\n\n render(): HTMLZFileUploadElement {\n return (\n <Host>\n <div\n tabIndex={0}\n class={`container ${this.getType()}`}\n >\n {this.mainTitle && this.renderTitle()}\n {this.getType() == ZFileUploadType.DEFAULT ? this.renderDefaultMode() : this.renderDragDropMode()}\n </div>\n {!!this.invalidFiles.size && (\n <z-modal\n modalid={`file-upload-${this.type}-error-modal`}\n tabIndex={0}\n ref={(val) => (this.errorModal = val)}\n modaltitle=\"Attenzione\"\n onModalClose={() => (this.invalidFiles = new Map<string, string[]>())}\n onModalBackgroundClick={() => (this.invalidFiles = new Map<string, string[]>())}\n >\n {this.handleErrorModalContent()}\n </z-modal>\n )}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/file-upload/z-file-upload/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Component, Prop, h, EventEmitter, Event, State, Listen, Element, Host, Method} from \"@stencil/core\";\nimport {ButtonVariant, Device, DividerSize, ZFileUploadType} from \"../../../beans\";\nimport {getDevice} from \"../../../utils/utils\";\n\n@Component({\n tag: \"z-file-upload\",\n styleUrl: \"styles.css\",\n shadow: true,\n})\nexport class ZFileUpload {\n /** Prop indicating the file upload type - can be default or dragdrop */\n @Prop({reflect: true})\n type: ZFileUploadType = ZFileUploadType.DEFAULT;\n\n /** Prop indicating the button variant*/\n @Prop()\n buttonVariant?: ButtonVariant;\n\n /** Prop indicating the accepted file type: ex \".pdf, .doc, .jpg\" */\n @Prop()\n acceptedFormat?: string;\n\n /** Max file dimension in Megabyte */\n @Prop()\n fileMaxSize?: number;\n\n /** Title */\n @Prop()\n mainTitle?: string;\n\n /** Description */\n @Prop()\n description?: string;\n\n /** Files added by the user */\n @State()\n files: File[] = [];\n\n /** upoload button label */\n @Prop()\n uploadBtnLabel?: string = \"allega\";\n\n /** drag & drop button label */\n @Prop()\n dragAndDropLabel?: string = \"Rilascia i file in questa area per allegarli.\";\n\n /** uploaded files history rendering */\n @Prop()\n hasFileSection?: boolean = true;\n\n /** List of files not allowed to be uploaded */\n @State()\n invalidFiles: Map<string, string[]>;\n\n @Element() el: HTMLZFileUploadElement;\n\n private input: HTMLInputElement;\n\n private button: HTMLZButtonElement;\n\n private errorModal: HTMLZModalElement;\n\n private uploadLink: HTMLSpanElement;\n\n private inputAttributes = {\n type: \"file\",\n id: \"file-elem\",\n multiple: true,\n };\n\n /** Listen removeFile event sent from z-file component */\n @Listen(\"removeFile\")\n removeFileListener(e: CustomEvent): void {\n this.removeFiles(e.detail);\n }\n\n /** Listen fileDropped event sent from z-dragdrop-area component */\n @Listen(\"fileDropped\")\n fileDroppedListener(e: CustomEvent): void {\n this.input.files = e.detail;\n this.fileInputHandler();\n }\n\n componentDidUpdate(): void {\n this.handleAccessibility();\n this.invalidFiles.size && this.errorModal.focus();\n }\n\n componentWillLoad(): void {\n this.invalidFiles = new Map<string, string[]>();\n }\n\n /** Emitted when user select one or more files */\n @Event()\n fileInput: EventEmitter;\n\n private fileInputHandler(): void {\n if (this.input.files.length) {\n this.invalidFiles = this.checkFiles(Array.from(this.input.files));\n }\n }\n\n /** get array of uploaded files */\n @Method()\n async getFiles(): Promise<File[]> {\n return this.files;\n }\n\n /** remove file from the array */\n @Method()\n async removeFile(fileName: string): Promise<void> {\n await this.removeFiles(fileName);\n }\n\n private async removeFiles(fileName: string): Promise<void> {\n const files = this.files;\n const file = files.find((file) => file.name === fileName);\n if (file) {\n const index = files.indexOf(file);\n if (index >= 0) {\n files.splice(index, 1);\n this.files = [...files];\n }\n }\n }\n\n private getType(): ZFileUploadType {\n if (getDevice() !== Device.DESKTOP && getDevice() !== Device.DESKTOP_WIDE) {\n return ZFileUploadType.DEFAULT;\n }\n\n return this.type;\n }\n\n private handleAccessibility(): void {\n const lastFile = this.el.querySelector(\"z-file:last-child z-chip button\");\n if (this.files.length > 0 && lastFile) {\n (lastFile as HTMLElement).focus();\n } else {\n this.getType() === ZFileUploadType.DEFAULT\n ? this.button.querySelector(\"button\").focus()\n : this.uploadLink.focus();\n }\n }\n\n private checkFiles(files: File[]): Map<string, string[]> {\n const errors = new Map<string, string[]>();\n const sizeErrorString = `supera il limite di ${this.fileMaxSize}MB`;\n const formatErrorString = \" ha un formato non supportato\";\n files.forEach((file: File) => {\n const fileSize = file.size / 1024 / 1024;\n const fileFormatOk = this.acceptedFormat\n .split(\",\")\n .some((ext: string) => file.name.toLowerCase().endsWith(ext.trim()));\n const fileSizeOk = fileSize <= this.fileMaxSize;\n if (fileSizeOk && fileFormatOk) {\n if (!this.files.find((f) => f.name === file.name)) {\n this.files.push(file);\n this.fileInput.emit(file);\n this.input.value = \"\";\n }\n\n return;\n }\n errors.set(file.name, []);\n if (!fileSizeOk) {\n errors.get(file.name).push(sizeErrorString);\n }\n if (!fileFormatOk) {\n errors.get(file.name).push(formatErrorString);\n }\n });\n\n return errors;\n }\n\n private renderTitle(): HTMLElement {\n return <span id=\"title\">{this.mainTitle}</span>;\n }\n\n private renderDescription(cssClass): HTMLElement {\n return <span class={cssClass}>{this.description}</span>;\n }\n\n private renderAllowedFileExtensions(): HTMLElement {\n let fileFormatString = \"\";\n let fileWeightString = \"\";\n\n if (this.acceptedFormat) {\n const fileFormat = this.acceptedFormat\n .split(\", \")\n .map((string) => string.substring(1).toUpperCase())\n .join(\", \");\n fileFormatString = ` nei formati ${fileFormat}`;\n }\n\n if (this.fileMaxSize) {\n fileWeightString = ` per un massimo di ${this.fileMaxSize}MB di peso`;\n }\n\n const finalString = `Puoi allegare file${fileFormatString}${fileWeightString}.`;\n\n return <span class=\"body-3\">{fileFormatString || fileWeightString ? finalString : null}</span>;\n }\n\n private renderFileSection(): HTMLElement {\n if (!this.hasFileSection) {\n return;\n }\n\n return (\n <section class={`files-container ${!this.files.length ? \"hidden\" : \"\"}`}>\n <span class=\"heading-4-sb\">File appena caricati</span>\n <div class=\"files-wrapper\">\n <slot name=\"files\" />\n </div>\n <z-divider size={DividerSize.MEDIUM} />\n </section>\n );\n }\n\n private renderInput(): HTMLInputElement {\n return (\n <input\n {...this.inputAttributes}\n onChange={() => this.fileInputHandler()}\n accept={this.acceptedFormat}\n ref={(val) => (this.input = val)}\n />\n );\n }\n\n private renderUploadButton(): unknown[] {\n return [\n this.renderInput(),\n <z-button\n onClick={() => this.input.click()}\n onKeyPress={(e) => {\n if (e.code == \"Space\" || e.code == \"Enter\") {\n e.preventDefault();\n this.input.click();\n }\n }}\n id=\"fileSelect\"\n variant={this.buttonVariant}\n icon=\"upload\"\n ref={(val) => (this.button = val)}\n >\n {this.uploadBtnLabel}\n </z-button>,\n ];\n }\n\n private renderUploadLink(): unknown[] {\n return [\n this.renderInput(),\n <span class=\"body-1 upload-link-text\">\n Trascina o{\" \"}\n <span\n tabIndex={0}\n class=\"body-1-sb upload-link\"\n onClick={() => this.input.click()}\n onKeyPress={(e) => {\n if (e.code == \"Space\" || e.code == \"Enter\") {\n e.preventDefault();\n this.input.click();\n }\n }}\n ref={(val) => (this.uploadLink = val)}\n >\n carica\n </span>{\" \"}\n dal tuo computer\n </span>,\n ];\n }\n\n private renderDefaultMode(): unknown[] {\n return [\n this.renderDescription(\"body-3-sb\"),\n this.renderAllowedFileExtensions(),\n this.renderFileSection(),\n this.renderUploadButton(),\n ];\n }\n\n private renderDragDropMode(): unknown[] {\n return [\n this.renderFileSection(),\n <z-dragdrop-area drag-and-drop-label={this.dragAndDropLabel}>\n <div class=\"text-container\">\n {this.renderDescription(\"body-1\")}\n {this.renderUploadLink()}\n {this.renderAllowedFileExtensions()}\n </div>\n </z-dragdrop-area>,\n ];\n }\n\n private formatErrorString(key, value): string {\n const bothErrors = value[0] && value[1] ? \" e \" : \"\";\n\n return (\n <span class=\"error-message\">\n Il file <span class=\"file-name\">{key}</span> {value[1] ?? \"\"}\n {bothErrors}\n {value[0] ?? \"\"}.\n </span>\n );\n }\n\n private handleErrorModalContent(): HTMLDivElement {\n return (\n <div slot=\"modalContent\">\n <div class=\"modal-wrapper\">\n <div class=\"files\">\n {Array.from(this.invalidFiles).map(([key, value]) => {\n return <span class=\"body-3\">{this.formatErrorString(key, value)}</span>;\n })}\n </div>\n </div>\n </div>\n );\n }\n\n render(): HTMLZFileUploadElement {\n return (\n <Host>\n <div\n tabIndex={0}\n class={`container ${this.getType()}`}\n >\n {this.mainTitle && this.renderTitle()}\n {this.getType() == ZFileUploadType.DEFAULT ? this.renderDefaultMode() : this.renderDragDropMode()}\n </div>\n {!!this.invalidFiles.size && (\n <z-modal\n modalid={`file-upload-${this.type}-error-modal`}\n tabIndex={0}\n ref={(val) => (this.errorModal = val)}\n modaltitle=\"Errore di caricamento\"\n onModalClose={() => (this.invalidFiles = new Map<string, string[]>())}\n onModalBackgroundClick={() => (this.invalidFiles = new Map<string, string[]>())}\n >\n {this.handleErrorModalContent()}\n </z-modal>\n )}\n </Host>\n );\n }\n}\n"]}
@@ -90,6 +90,18 @@ input#file-elem {
90
90
  margin: calc(var(--space-unit) * 3) 0;
91
91
  }
92
92
 
93
+ :host .error-message {
94
+ font-size: 14px;
95
+ font-weight: 400;
96
+ letter-spacing: 0.16%;
97
+ line-height: 20px;
98
+ text-align: left;
99
+ }
100
+
101
+ :host .error-message > .file-name {
102
+ font-weight: 600;
103
+ }
104
+
93
105
  /* Tablet breakpoint */
94
106
  @media only screen and (min-width: 768px) {
95
107
  :host > .container > z-button {
@@ -3,8 +3,6 @@ import { ButtonVariant, ListDividerType, ControlSize, Device, } from "../../../b
3
3
  import { getDevice, handleEnterKeydSubmit, randomId } from "../../../utils/utils";
4
4
  /**
5
5
  * @cssprop --z-searchbar-results-height - Max height of the results container (default: 540px)
6
- * @cssprop --z-searchbar-tag-text-color - Color of tag's text (default --color-primary03);
7
- * @cssprop --z-searchbar-tag-bg - Color of tag's background (default --color-hover-primary);
8
6
  */
9
7
  export class ZSearchbar {
10
8
  constructor() {
@@ -223,7 +221,7 @@ export class ZSearchbar {
223
221
  return (h("z-list-element", { role: "option", tabindex: 0, clickable: true, id: `list-item-${this.htmlid}-show-all`, onClickItem: () => (this.currResultsCount = 0), color: "color-primary01" }, h("div", { class: "item-show-all" }, "Vedi tutti i risultati")));
224
222
  }
225
223
  render() {
226
- return (h(Host, { key: 'b198d39d33540acea446c870ae3d47776bfa1470', onFocus: () => (this.showResults = true), onClick: (e) => this.handleOutsideClick(e), class: { "has-submit": this.showSearchButton, "has-results": this.autocomplete } }, h("div", { key: 'cebdc4139bc155e30da8d90266289aa485406265', class: "input-container" }, this.renderInput(), this.renderResults()), this.renderButton()));
224
+ return (h(Host, { key: '49e7bb3d48c18519e07ac4952188f271895dd1a1', onFocus: () => (this.showResults = true), onClick: (e) => this.handleOutsideClick(e), class: { "has-submit": this.showSearchButton, "has-results": this.autocomplete } }, h("div", { key: '033d0ae0a35385e0d9d915e18887650b997c5688', class: "input-container" }, this.renderInput(), this.renderResults()), this.renderButton()));
227
225
  }
228
226
  static get is() { return "z-searchbar"; }
229
227
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/inputs/z-searchbar/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Component, Event, EventEmitter, h, Host, Listen, Prop, State, Watch, Element} from \"@stencil/core\";\nimport {\n ButtonVariant,\n ListDividerType,\n SearchbarGroup,\n SearchbarGroupedItem,\n SearchbarItem,\n ControlSize,\n Device,\n} from \"../../../beans\";\nimport {getDevice, handleEnterKeydSubmit, randomId} from \"../../../utils/utils\";\n\n/**\n * @cssprop --z-searchbar-results-height - Max height of the results container (default: 540px)\n * @cssprop --z-searchbar-tag-text-color - Color of tag's text (default --color-primary03);\n * @cssprop --z-searchbar-tag-bg - Color of tag's background (default --color-hover-primary);\n */\n@Component({\n tag: \"z-searchbar\",\n styleUrl: \"styles.css\",\n shadow: true,\n})\nexport class ZSearchbar {\n /** the id of the searchbar element */\n @Prop({reflect: true})\n htmlid = `searchbar-${randomId()}`;\n\n /** Prevent submit action */\n @Prop()\n preventSubmit?: boolean = false;\n\n /** Input search string */\n @Prop()\n value?: string;\n\n /** Search input placeholder */\n @Prop()\n placeholder?: string;\n\n /** Show autocomplete results */\n @Prop()\n autocomplete?: boolean = false;\n\n /** Minimun number of characters to dispatch typing event */\n @Prop()\n autocompleteMinChars?: number = 3;\n\n /** Number of results shown - default all */\n @Prop()\n resultsCount?: number;\n\n /** Truncate results to single row */\n @Prop()\n resultsEllipsis?: boolean = true;\n\n /** Search helper text */\n @Prop()\n searchHelperLabel?: string = \"Cerca {searchString}\";\n\n /** Autocomplete results items */\n @Prop()\n resultsItems?: SearchbarItem[] | string;\n\n /** Sort autocomplete results items */\n @Prop()\n sortResultsItems?: boolean = false;\n\n /** Show submit button */\n @Prop()\n showSearchButton?: boolean = false;\n\n /** Set button icon without label*/\n @Prop()\n searchButtonIconOnly?: boolean = false;\n\n /** Available sizes: `big`, `small` and `x-small`. Defaults to `big`. */\n @Prop()\n size?: ControlSize = ControlSize.BIG;\n\n /** Graphical variant: `primary`, `secondary`, `tertiary`. Defaults to `primary`. */\n @Prop()\n variant?: ButtonVariant = ButtonVariant.PRIMARY;\n\n @State()\n searchString = this.value;\n\n @State()\n currResultsCount = 0;\n\n @State()\n showResults = false;\n\n @State()\n isMobile = false;\n\n @Element() element: HTMLZSearchbarElement;\n\n private resultsItemsList: SearchbarItem[] | undefined = null;\n\n private inputRef: HTMLZInputElement;\n\n private resizeObserver: ResizeObserver;\n\n /** Emitted on search submit, return search string */\n @Event()\n searchSubmit: EventEmitter<string>;\n\n private emitSearchSubmit(): void {\n this.searchSubmit.emit(this.inputRef.value);\n }\n\n /** Emitted on search typing, return search string */\n @Event()\n searchTyping: EventEmitter<string>;\n\n private emitSearchTyping(search: string): void {\n this.searchTyping.emit(search);\n }\n\n /** Emitted on search result click, return item */\n @Event()\n searchItemClick: EventEmitter<SearchbarItem>;\n\n private emitSearchItemClick(item: SearchbarItem): void {\n this.searchItemClick.emit(item);\n }\n\n @Watch(\"resultsItems\")\n watchItems(): void {\n this.resultsItemsList = this.getResultsItemsList();\n }\n\n @Watch(\"resultsCount\")\n watchResultsCount(): void {\n this.currResultsCount = this.resultsCount;\n }\n\n @Watch(\"value\")\n watchValue(): void {\n this.searchString = this.value;\n }\n\n @Watch(\"searchString\")\n watchSearchString(): void {\n this.emitSearchTyping(this.searchString);\n if (!this.searchString) {\n this.currResultsCount = this.resultsCount;\n }\n }\n\n disconnectedCallback(): void {\n this.resizeObserver.disconnect();\n }\n\n componentDidLoad(): void {\n this.resizeObserver = new ResizeObserver(() => {\n if (getDevice() === Device.MOBILE && !this.isMobile) {\n this.isMobile = true;\n }\n if (getDevice() !== Device.MOBILE && this.isMobile) {\n this.isMobile = false;\n }\n });\n this.resizeObserver.observe(this.element);\n }\n\n componentWillLoad(): void {\n this.resultsItemsList = this.getResultsItemsList();\n this.currResultsCount = this.resultsCount;\n }\n\n private getResultsItemsList(): SearchbarItem[] | undefined {\n return typeof this.resultsItems === \"string\" ? JSON.parse(this.resultsItems) : this.resultsItems;\n }\n\n private getGroupedItems(items: SearchbarItem[]): SearchbarGroupedItem {\n const groupedItems = {};\n items.forEach((item: SearchbarItem) => {\n const key = `${item?.category}${item?.subcategory}`;\n groupedItems[key] = groupedItems[key] ?? {\n category: item?.category,\n subcategory: item?.subcategory,\n items: [],\n };\n groupedItems[key][\"items\"].push(item);\n });\n\n if (this.sortResultsItems) {\n return Object.keys(groupedItems)\n .sort()\n .reduce((obj, key) => {\n obj[key] = {\n ...groupedItems[key],\n items: groupedItems[key][\"items\"].sort((a: SearchbarItem, b: SearchbarItem) => {\n const nameA = a.label.toUpperCase();\n const nameB = b.label.toUpperCase();\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n\n return 0;\n }),\n };\n\n return obj;\n }, {});\n }\n\n return groupedItems;\n }\n\n private checkResultsCount(counter: number): boolean {\n if (!this.currResultsCount || counter < this.currResultsCount) {\n return true;\n }\n\n return false;\n }\n\n private handleStopTyping(e: CustomEvent): void {\n e.stopPropagation();\n this.searchString = e.detail.value;\n }\n\n private handleSubmit(): void {\n if (this.preventSubmit) {\n return;\n }\n\n this.emitSearchSubmit();\n }\n\n @Listen(\"click\", {target: \"document\"})\n private handleOutsideClick(e: MouseEvent): void {\n const cp = e.composedPath();\n\n const searchbar = cp.find((elem: HTMLElement) => elem.nodeName === \"Z-SEARCHBAR\");\n if (!searchbar || (searchbar as HTMLZSearchbarElement).htmlid !== this.htmlid) {\n this.showResults = false;\n\n return;\n }\n\n if (cp.find((elem: HTMLElement) => elem?.nodeName === \"Z-INPUT\" || elem?.classList?.contains(\"results\"))) {\n this.showResults = true;\n\n return;\n }\n\n this.showResults = false;\n }\n\n private renderInput(): HTMLZInputElement {\n return (\n <z-input\n ref={(val) => {\n this.inputRef = val;\n }}\n message={false}\n placeholder={this.placeholder}\n onStopTyping={(e: CustomEvent) => this.handleStopTyping(e)}\n onKeyUp={(e: KeyboardEvent) => handleEnterKeydSubmit(e, () => this.handleSubmit())}\n value={this.value}\n size={this.size}\n />\n );\n }\n\n private renderButton(): HTMLZButtonElement | null {\n if (!this.showSearchButton) {\n return null;\n }\n\n const iconProp = this.searchButtonIconOnly ? {icon: \"search\"} : null;\n const buttonLabel = this.searchButtonIconOnly ? \"\" : \"CERCA\";\n const defaultProps = {\n disabled: this.preventSubmit,\n variant: this.variant,\n size: this.size,\n onClick: () => this.handleSubmit(),\n ...iconProp,\n };\n\n return <z-button {...defaultProps}>{buttonLabel}</z-button>;\n }\n\n private renderResults(): HTMLDivElement | null {\n if (\n !this.showResults ||\n !this.autocomplete ||\n !this.searchString ||\n this.searchString.length < this.autocompleteMinChars ||\n !this.resultsItemsList\n ) {\n return null;\n }\n\n return (\n <div class=\"results-wrapper\">\n <div class=\"results\">{this.renderResultsList()}</div>\n </div>\n );\n }\n\n private renderResultsList(): HTMLZListElement | HTMLSpanElement {\n if (this.preventSubmit && !this.resultsItemsList?.length) {\n return (\n <span class=\"item item-no-results\">\n Non abbiamo trovato risultati per <b>{this.searchString}</b>\n <br />\n <br />\n Cosa puoi fare?\n <ul>\n <li>Verificare di aver scritto bene</li>\n <li>Provare a cercare un'altra parola</li>\n <li>Provare a cercare qualcosa di più generico</li>\n </ul>\n </span>\n );\n }\n\n return (\n <z-list\n role=\"listbox\"\n id={`list-${this.htmlid}`}\n >\n {this.renderSearchHelper(!!this.resultsItemsList?.length)}\n {this.renderItems()}\n {this.renderShowAllResults()}\n </z-list>\n );\n }\n\n private renderItems(): HTMLZListGroupElement[] {\n if (!this.resultsItemsList?.length) {\n return [];\n }\n\n const groupedItems = this.getGroupedItems(this.resultsItemsList);\n const listGroups: HTMLZListGroupElement[] = [];\n let counter = 0;\n\n Object.values(groupedItems).forEach((groupItem: SearchbarGroup, index: number, array) => {\n if (this.checkResultsCount(counter)) {\n const listGroupsElements: HTMLZListElement[] = [];\n groupItem.items.forEach((item: SearchbarItem, subindex: number, subarray) => {\n if (this.checkResultsCount(counter)) {\n const isLast = index === array.length - 1 && subindex === subarray.length - 1;\n listGroupsElements.push(this.renderItem(item, subindex, !isLast));\n }\n counter++;\n });\n\n if (listGroupsElements.length) {\n listGroups.push(\n <z-list-group divider-type={ListDividerType.ELEMENT}>\n {this.renderItemCategory(groupItem)}\n {listGroupsElements}\n </z-list-group>\n );\n }\n }\n });\n\n return listGroups;\n }\n\n private renderItem(item: SearchbarItem, key: number, divider: boolean): HTMLZListElementElement {\n return (\n <z-list-element\n id={`list-item-${this.htmlid}-${key}`}\n role=\"option\"\n tabindex={0}\n dividerType={divider ? ListDividerType.ELEMENT : undefined}\n clickable\n onClickItem={() => this.emitSearchItemClick(item)}\n >\n <div class=\"list-element\">\n <span class={{\"item\": true, \"ellipsis\": this.resultsEllipsis, \"has-category\": !!item.category}}>\n {item?.icon && (\n <z-icon\n class=\"item-icon\"\n name={item.icon}\n />\n )}\n <span\n class=\"item-label\"\n title={item.label}\n innerHTML={this.renderItemLabel(item.label)}\n />\n </span>\n {item?.tag && <z-tag icon={item.tag.icon}>{!this.isMobile ? item.tag.text : \"\"}</z-tag>}\n </div>\n </z-list-element>\n );\n }\n\n private renderItemLabel(label: string): string {\n if (!this.searchString) {\n return label;\n }\n\n return label.replace(\n new RegExp(this.searchString.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"), \"gmi\"),\n (found) => `<mark>${found}</mark>`\n );\n }\n\n private renderItemCategory(groupItem: SearchbarGroup): HTMLSpanElement | null {\n if (!groupItem?.category) {\n return null;\n }\n\n return (\n <span\n class=\"category-heading\"\n slot=\"header-title\"\n >\n <span class=\"category\">{groupItem.category}</span>\n {groupItem?.subcategory && <span class=\"subcategory\">{groupItem.subcategory}</span>}\n </span>\n );\n }\n\n private renderSearchHelper(hasDivider = true): HTMLZListElement | null {\n if (!this.autocomplete || this.preventSubmit || !this.searchString) {\n return null;\n }\n\n return (\n <z-list-element\n role=\"option\"\n tabindex={0}\n dividerType={hasDivider ? ListDividerType.ELEMENT : undefined}\n clickable\n id={`list-item-${this.htmlid}-search`}\n onClickItem={() => this.emitSearchSubmit()}\n >\n <span class=\"item item-search\">\n <z-icon\n class=\"search-icon\"\n name=\"left-magnifying-glass\"\n />\n <span\n class=\"item-label\"\n innerHTML={this.searchHelperLabel.replace(\"{searchString}\", `<mark>${this.searchString}</mark>`)}\n />\n </span>\n </z-list-element>\n );\n }\n\n private renderShowAllResults(): HTMLZListElement | null {\n if (\n !this.currResultsCount ||\n !this.searchString ||\n !this.resultsItemsList?.length ||\n this.currResultsCount >= this.resultsItemsList?.length\n ) {\n return null;\n }\n\n return (\n <z-list-element\n role=\"option\"\n tabindex={0}\n clickable\n id={`list-item-${this.htmlid}-show-all`}\n onClickItem={() => (this.currResultsCount = 0)}\n color=\"color-primary01\"\n >\n <div class=\"item-show-all\">Vedi tutti i risultati</div>\n </z-list-element>\n );\n }\n\n render(): HTMLZSearchbarElement {\n return (\n <Host\n onFocus={() => (this.showResults = true)}\n onClick={(e) => this.handleOutsideClick(e)}\n class={{\"has-submit\": this.showSearchButton, \"has-results\": this.autocomplete}}\n >\n <div class=\"input-container\">\n {this.renderInput()}\n {this.renderResults()}\n </div>\n {this.renderButton()}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/inputs/z-searchbar/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Component, Event, EventEmitter, h, Host, Listen, Prop, State, Watch, Element} from \"@stencil/core\";\nimport {\n ButtonVariant,\n ListDividerType,\n SearchbarGroup,\n SearchbarGroupedItem,\n SearchbarItem,\n ControlSize,\n Device,\n} from \"../../../beans\";\nimport {getDevice, handleEnterKeydSubmit, randomId} from \"../../../utils/utils\";\n\n/**\n * @cssprop --z-searchbar-results-height - Max height of the results container (default: 540px)\n */\n@Component({\n tag: \"z-searchbar\",\n styleUrl: \"styles.css\",\n shadow: true,\n})\nexport class ZSearchbar {\n /** the id of the searchbar element */\n @Prop({reflect: true})\n htmlid = `searchbar-${randomId()}`;\n\n /** Prevent submit action */\n @Prop()\n preventSubmit?: boolean = false;\n\n /** Input search string */\n @Prop()\n value?: string;\n\n /** Search input placeholder */\n @Prop()\n placeholder?: string;\n\n /** Show autocomplete results */\n @Prop()\n autocomplete?: boolean = false;\n\n /** Minimun number of characters to dispatch typing event */\n @Prop()\n autocompleteMinChars?: number = 3;\n\n /** Number of results shown - default all */\n @Prop()\n resultsCount?: number;\n\n /** Truncate results to single row */\n @Prop()\n resultsEllipsis?: boolean = true;\n\n /** Search helper text */\n @Prop()\n searchHelperLabel?: string = \"Cerca {searchString}\";\n\n /** Autocomplete results items */\n @Prop()\n resultsItems?: SearchbarItem[] | string;\n\n /** Sort autocomplete results items */\n @Prop()\n sortResultsItems?: boolean = false;\n\n /** Show submit button */\n @Prop()\n showSearchButton?: boolean = false;\n\n /** Set button icon without label*/\n @Prop()\n searchButtonIconOnly?: boolean = false;\n\n /** Available sizes: `big`, `small` and `x-small`. Defaults to `big`. */\n @Prop()\n size?: ControlSize = ControlSize.BIG;\n\n /** Graphical variant: `primary`, `secondary`, `tertiary`. Defaults to `primary`. */\n @Prop()\n variant?: ButtonVariant = ButtonVariant.PRIMARY;\n\n @State()\n searchString = this.value;\n\n @State()\n currResultsCount = 0;\n\n @State()\n showResults = false;\n\n @State()\n isMobile = false;\n\n @Element() element: HTMLZSearchbarElement;\n\n private resultsItemsList: SearchbarItem[] | undefined = null;\n\n private inputRef: HTMLZInputElement;\n\n private resizeObserver: ResizeObserver;\n\n /** Emitted on search submit, return search string */\n @Event()\n searchSubmit: EventEmitter<string>;\n\n private emitSearchSubmit(): void {\n this.searchSubmit.emit(this.inputRef.value);\n }\n\n /** Emitted on search typing, return search string */\n @Event()\n searchTyping: EventEmitter<string>;\n\n private emitSearchTyping(search: string): void {\n this.searchTyping.emit(search);\n }\n\n /** Emitted on search result click, return item */\n @Event()\n searchItemClick: EventEmitter<SearchbarItem>;\n\n private emitSearchItemClick(item: SearchbarItem): void {\n this.searchItemClick.emit(item);\n }\n\n @Watch(\"resultsItems\")\n watchItems(): void {\n this.resultsItemsList = this.getResultsItemsList();\n }\n\n @Watch(\"resultsCount\")\n watchResultsCount(): void {\n this.currResultsCount = this.resultsCount;\n }\n\n @Watch(\"value\")\n watchValue(): void {\n this.searchString = this.value;\n }\n\n @Watch(\"searchString\")\n watchSearchString(): void {\n this.emitSearchTyping(this.searchString);\n if (!this.searchString) {\n this.currResultsCount = this.resultsCount;\n }\n }\n\n disconnectedCallback(): void {\n this.resizeObserver.disconnect();\n }\n\n componentDidLoad(): void {\n this.resizeObserver = new ResizeObserver(() => {\n if (getDevice() === Device.MOBILE && !this.isMobile) {\n this.isMobile = true;\n }\n if (getDevice() !== Device.MOBILE && this.isMobile) {\n this.isMobile = false;\n }\n });\n this.resizeObserver.observe(this.element);\n }\n\n componentWillLoad(): void {\n this.resultsItemsList = this.getResultsItemsList();\n this.currResultsCount = this.resultsCount;\n }\n\n private getResultsItemsList(): SearchbarItem[] | undefined {\n return typeof this.resultsItems === \"string\" ? JSON.parse(this.resultsItems) : this.resultsItems;\n }\n\n private getGroupedItems(items: SearchbarItem[]): SearchbarGroupedItem {\n const groupedItems = {};\n items.forEach((item: SearchbarItem) => {\n const key = `${item?.category}${item?.subcategory}`;\n groupedItems[key] = groupedItems[key] ?? {\n category: item?.category,\n subcategory: item?.subcategory,\n items: [],\n };\n groupedItems[key][\"items\"].push(item);\n });\n\n if (this.sortResultsItems) {\n return Object.keys(groupedItems)\n .sort()\n .reduce((obj, key) => {\n obj[key] = {\n ...groupedItems[key],\n items: groupedItems[key][\"items\"].sort((a: SearchbarItem, b: SearchbarItem) => {\n const nameA = a.label.toUpperCase();\n const nameB = b.label.toUpperCase();\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n\n return 0;\n }),\n };\n\n return obj;\n }, {});\n }\n\n return groupedItems;\n }\n\n private checkResultsCount(counter: number): boolean {\n if (!this.currResultsCount || counter < this.currResultsCount) {\n return true;\n }\n\n return false;\n }\n\n private handleStopTyping(e: CustomEvent): void {\n e.stopPropagation();\n this.searchString = e.detail.value;\n }\n\n private handleSubmit(): void {\n if (this.preventSubmit) {\n return;\n }\n\n this.emitSearchSubmit();\n }\n\n @Listen(\"click\", {target: \"document\"})\n private handleOutsideClick(e: MouseEvent): void {\n const cp = e.composedPath();\n\n const searchbar = cp.find((elem: HTMLElement) => elem.nodeName === \"Z-SEARCHBAR\");\n if (!searchbar || (searchbar as HTMLZSearchbarElement).htmlid !== this.htmlid) {\n this.showResults = false;\n\n return;\n }\n\n if (cp.find((elem: HTMLElement) => elem?.nodeName === \"Z-INPUT\" || elem?.classList?.contains(\"results\"))) {\n this.showResults = true;\n\n return;\n }\n\n this.showResults = false;\n }\n\n private renderInput(): HTMLZInputElement {\n return (\n <z-input\n ref={(val) => {\n this.inputRef = val;\n }}\n message={false}\n placeholder={this.placeholder}\n onStopTyping={(e: CustomEvent) => this.handleStopTyping(e)}\n onKeyUp={(e: KeyboardEvent) => handleEnterKeydSubmit(e, () => this.handleSubmit())}\n value={this.value}\n size={this.size}\n />\n );\n }\n\n private renderButton(): HTMLZButtonElement | null {\n if (!this.showSearchButton) {\n return null;\n }\n\n const iconProp = this.searchButtonIconOnly ? {icon: \"search\"} : null;\n const buttonLabel = this.searchButtonIconOnly ? \"\" : \"CERCA\";\n const defaultProps = {\n disabled: this.preventSubmit,\n variant: this.variant,\n size: this.size,\n onClick: () => this.handleSubmit(),\n ...iconProp,\n };\n\n return <z-button {...defaultProps}>{buttonLabel}</z-button>;\n }\n\n private renderResults(): HTMLDivElement | null {\n if (\n !this.showResults ||\n !this.autocomplete ||\n !this.searchString ||\n this.searchString.length < this.autocompleteMinChars ||\n !this.resultsItemsList\n ) {\n return null;\n }\n\n return (\n <div class=\"results-wrapper\">\n <div class=\"results\">{this.renderResultsList()}</div>\n </div>\n );\n }\n\n private renderResultsList(): HTMLZListElement | HTMLSpanElement {\n if (this.preventSubmit && !this.resultsItemsList?.length) {\n return (\n <span class=\"item item-no-results\">\n Non abbiamo trovato risultati per <b>{this.searchString}</b>\n <br />\n <br />\n Cosa puoi fare?\n <ul>\n <li>Verificare di aver scritto bene</li>\n <li>Provare a cercare un'altra parola</li>\n <li>Provare a cercare qualcosa di più generico</li>\n </ul>\n </span>\n );\n }\n\n return (\n <z-list\n role=\"listbox\"\n id={`list-${this.htmlid}`}\n >\n {this.renderSearchHelper(!!this.resultsItemsList?.length)}\n {this.renderItems()}\n {this.renderShowAllResults()}\n </z-list>\n );\n }\n\n private renderItems(): HTMLZListGroupElement[] {\n if (!this.resultsItemsList?.length) {\n return [];\n }\n\n const groupedItems = this.getGroupedItems(this.resultsItemsList);\n const listGroups: HTMLZListGroupElement[] = [];\n let counter = 0;\n\n Object.values(groupedItems).forEach((groupItem: SearchbarGroup, index: number, array) => {\n if (this.checkResultsCount(counter)) {\n const listGroupsElements: HTMLZListElement[] = [];\n groupItem.items.forEach((item: SearchbarItem, subindex: number, subarray) => {\n if (this.checkResultsCount(counter)) {\n const isLast = index === array.length - 1 && subindex === subarray.length - 1;\n listGroupsElements.push(this.renderItem(item, subindex, !isLast));\n }\n counter++;\n });\n\n if (listGroupsElements.length) {\n listGroups.push(\n <z-list-group divider-type={ListDividerType.ELEMENT}>\n {this.renderItemCategory(groupItem)}\n {listGroupsElements}\n </z-list-group>\n );\n }\n }\n });\n\n return listGroups;\n }\n\n private renderItem(item: SearchbarItem, key: number, divider: boolean): HTMLZListElementElement {\n return (\n <z-list-element\n id={`list-item-${this.htmlid}-${key}`}\n role=\"option\"\n tabindex={0}\n dividerType={divider ? ListDividerType.ELEMENT : undefined}\n clickable\n onClickItem={() => this.emitSearchItemClick(item)}\n >\n <div class=\"list-element\">\n <span class={{\"item\": true, \"ellipsis\": this.resultsEllipsis, \"has-category\": !!item.category}}>\n {item?.icon && (\n <z-icon\n class=\"item-icon\"\n name={item.icon}\n />\n )}\n <span\n class=\"item-label\"\n title={item.label}\n innerHTML={this.renderItemLabel(item.label)}\n />\n </span>\n {item?.tag && <z-tag icon={item.tag.icon}>{!this.isMobile ? item.tag.text : \"\"}</z-tag>}\n </div>\n </z-list-element>\n );\n }\n\n private renderItemLabel(label: string): string {\n if (!this.searchString) {\n return label;\n }\n\n return label.replace(\n new RegExp(this.searchString.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"), \"gmi\"),\n (found) => `<mark>${found}</mark>`\n );\n }\n\n private renderItemCategory(groupItem: SearchbarGroup): HTMLSpanElement | null {\n if (!groupItem?.category) {\n return null;\n }\n\n return (\n <span\n class=\"category-heading\"\n slot=\"header-title\"\n >\n <span class=\"category\">{groupItem.category}</span>\n {groupItem?.subcategory && <span class=\"subcategory\">{groupItem.subcategory}</span>}\n </span>\n );\n }\n\n private renderSearchHelper(hasDivider = true): HTMLZListElement | null {\n if (!this.autocomplete || this.preventSubmit || !this.searchString) {\n return null;\n }\n\n return (\n <z-list-element\n role=\"option\"\n tabindex={0}\n dividerType={hasDivider ? ListDividerType.ELEMENT : undefined}\n clickable\n id={`list-item-${this.htmlid}-search`}\n onClickItem={() => this.emitSearchSubmit()}\n >\n <span class=\"item item-search\">\n <z-icon\n class=\"search-icon\"\n name=\"left-magnifying-glass\"\n />\n <span\n class=\"item-label\"\n innerHTML={this.searchHelperLabel.replace(\"{searchString}\", `<mark>${this.searchString}</mark>`)}\n />\n </span>\n </z-list-element>\n );\n }\n\n private renderShowAllResults(): HTMLZListElement | null {\n if (\n !this.currResultsCount ||\n !this.searchString ||\n !this.resultsItemsList?.length ||\n this.currResultsCount >= this.resultsItemsList?.length\n ) {\n return null;\n }\n\n return (\n <z-list-element\n role=\"option\"\n tabindex={0}\n clickable\n id={`list-item-${this.htmlid}-show-all`}\n onClickItem={() => (this.currResultsCount = 0)}\n color=\"color-primary01\"\n >\n <div class=\"item-show-all\">Vedi tutti i risultati</div>\n </z-list-element>\n );\n }\n\n render(): HTMLZSearchbarElement {\n return (\n <Host\n onFocus={() => (this.showResults = true)}\n onClick={(e) => this.handleOutsideClick(e)}\n class={{\"has-submit\": this.showSearchButton, \"has-results\": this.autocomplete}}\n >\n <div class=\"input-container\">\n {this.renderInput()}\n {this.renderResults()}\n </div>\n {this.renderButton()}\n </Host>\n );\n }\n}\n"]}
@@ -1,7 +1,4 @@
1
1
  :host {
2
- --z-searchbar-tag-text-color: var(--color-primary03);
3
- --z-searchbar-tag-bg: var(--color-hover-primary);
4
-
5
2
  z-index: 15;
6
3
  display: flex;
7
4
  column-gap: calc(var(--space-unit) * 2);
@@ -91,8 +88,8 @@
91
88
  font-size: var(--font-size-1);
92
89
  font-weight: var(--font-sb);
93
90
 
94
- --z-tag-bg: var(--z-searchbar-tag-bg);
95
- --z-tag-text-color: var(--z-searchbar-tag-text-color);
91
+ --z-tag-bg: white;
92
+ --z-tag-text-color: var(--color-text01);
96
93
  }
97
94
 
98
95
  .results .item {
@@ -32,6 +32,7 @@ export class ZListElement {
32
32
  this.size = ListSize.MEDIUM;
33
33
  this.color = "none";
34
34
  this.disabled = false;
35
+ this.isContextualMenu = false;
35
36
  this.listElementPosition = "0";
36
37
  this.listType = ListType.NONE;
37
38
  this.role = "listitem";
@@ -50,6 +51,12 @@ export class ZListElement {
50
51
  }
51
52
  this.showInnerContent = !this.showInnerContent;
52
53
  }
54
+ calculateClass() {
55
+ if (this.isContextualMenu) {
56
+ return "container-contextual-menu";
57
+ }
58
+ return "container";
59
+ }
53
60
  handleKeyDown(event) {
54
61
  const expandByKey = event.code === KeyboardCode.ENTER;
55
62
  switch (event.code) {
@@ -114,7 +121,7 @@ export class ZListElement {
114
121
  }
115
122
  }
116
123
  render() {
117
- return (h(Host, { key: 'b0dc00b8abad630739f30361dcb1abad5fa379e0', "aria-expanded": this.expandable ? this.showInnerContent : null, onClick: this.handleClick, onFocus: () => this.ariaDescendantFocus.emit(this.listElementId), onKeyDown: this.handleKeyDown, clickable: this.clickable && !this.disabled, tabIndex: "0" }, h("div", { key: '81f742ce528b757fb67feefc231ce78e7e76ba87', class: "container", style: { color: `var(--${this.color})` }, tabindex: "-1", id: `z-list-element-id-${this.listElementId}`, part: "list-item-container" }, h("div", { key: 'c2230431473ea5e8292b26c280c71a86d795a1de', class: "z-list-element-container" }, this.renderExpandableButton(), this.renderContent()), this.renderExpandedContent()), this.dividerType === ListDividerType.ELEMENT && (h("z-divider", { color: this.dividerColor, size: this.dividerSize }))));
124
+ return (h(Host, { key: '3c55ce5744a82e1b1871f658d0d63dc49a55fbba', "aria-expanded": this.expandable ? this.showInnerContent : null, onClick: this.handleClick, onFocus: () => this.ariaDescendantFocus.emit(this.listElementId), onKeyDown: this.handleKeyDown, clickable: this.clickable && !this.disabled, tabIndex: !this.isContextualMenu ? "0" : null }, h("div", { key: 'f9ccf0529e72d61ffed2f8da94461b6d0d904447', class: `${this.calculateClass()}`, style: { color: `var(--${this.color})` }, tabindex: this.isContextualMenu ? "0" : "-1", id: `z-list-element-id-${this.listElementId}`, part: "list-item-container" }, h("div", { key: '9747b70e158f1e0a50bd392bc11724df0951196e', class: "z-list-element-container" }, this.renderExpandableButton(), this.renderContent()), this.renderExpandedContent()), this.dividerType === ListDividerType.ELEMENT && (h("z-divider", { color: this.dividerColor, size: this.dividerSize }))));
118
125
  }
119
126
  static get is() { return "z-list-element"; }
120
127
  static get encapsulation() { return "shadow"; }
@@ -357,6 +364,24 @@ export class ZListElement {
357
364
  "reflect": true,
358
365
  "defaultValue": "false"
359
366
  },
367
+ "isContextualMenu": {
368
+ "type": "boolean",
369
+ "mutable": false,
370
+ "complexType": {
371
+ "original": "boolean",
372
+ "resolved": "boolean",
373
+ "references": {}
374
+ },
375
+ "required": false,
376
+ "optional": true,
377
+ "docs": {
378
+ "tags": [],
379
+ "text": "[optional] If is used in ZContextualMenu component"
380
+ },
381
+ "attribute": "is-contextual-menu",
382
+ "reflect": true,
383
+ "defaultValue": "false"
384
+ },
360
385
  "listElementPosition": {
361
386
  "type": "string",
362
387
  "mutable": false,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/list/z-list-element/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State} from \"@stencil/core\";\nimport {\n DividerSize,\n ExpandableListButtonAlign,\n ExpandableListStyle,\n KeyboardCode,\n ListDividerType,\n ListSize,\n ListType,\n} from \"../../../beans\";\n\n@Component({\n tag: \"z-list-element\",\n styleUrl: \"styles.css\",\n shadow: true,\n})\nexport class ZListElement {\n @Element() host: HTMLZListElementElement;\n\n /** remove filter click event, returns filterid */\n @Event({\n eventName: \"accessibleFocus\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n accessibleFocus: EventEmitter<number>;\n\n /** set parent aria-activedescendant on focus event, returns filterid */\n @Event({\n eventName: \"ariaDescendantFocus\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n ariaDescendantFocus: EventEmitter<number>;\n\n /** remove filter click event, returns filterid */\n @Event({\n eventName: \"clickItem\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n clickItem: EventEmitter;\n\n @Listen(\"accessibleFocus\", {target: \"document\"})\n accessibleFocusHandler(e: CustomEvent): void {\n if (this.listElementId === e.detail) {\n const toFocus = this.host.shadowRoot.getElementById(`z-list-element-id-${e.detail}`);\n toFocus.focus();\n }\n }\n\n /**\n * [optional] Align expandable button left or right.\n */\n @Prop({reflect: true})\n alignButton?: ExpandableListButtonAlign = ExpandableListButtonAlign.LEFT;\n\n /**\n * [optional] Sets element clickable.\n */\n @Prop({reflect: true})\n clickable?: boolean = false;\n\n /**\n * [optional] Sets the divider color.\n */\n @Prop()\n dividerColor?: string = \"color-surface03\";\n\n /**\n * [optional] Sets the position where to insert the divider.\n */\n @Prop()\n dividerType?: ListDividerType = ListDividerType.NONE;\n\n /**\n * [optional] Sets the divider size.\n */\n @Prop()\n dividerSize?: DividerSize = DividerSize.SMALL;\n\n /**\n * [optional] Sets element as expandable.\n */\n @Prop({reflect: true})\n expandable?: boolean = false;\n\n /**\n * [optional] Sets expandable style to element.\n */\n @Prop()\n expandableStyle?: ExpandableListStyle = ExpandableListStyle.ACCORDION;\n\n /**\n * [optional] List element id.\n */\n @Prop({reflect: true})\n listElementId?: number;\n\n /**\n * [optional] Sets size of inside elements.\n */\n @Prop({reflect: true})\n size?: ListSize = ListSize.MEDIUM;\n\n /**\n * [optional] Sets text color of the element.\n */\n @Prop({reflect: true})\n color?: string = \"none\";\n\n /**\n * [optional] Sets disabled style of the element.\n */\n @Prop({reflect: true})\n disabled?: boolean = false;\n\n /**\n * [optional] position of the list element inside the list or the group\n */\n @Prop({reflect: true})\n listElementPosition?: string = \"0\";\n\n /**\n * [optional] type of the list marker for each element\n */\n @Prop({reflect: true})\n listType?: ListType = ListType.NONE;\n\n /**\n * [optional] Sets element role.\n */\n @Prop({reflect: true})\n role?: string = \"listitem\";\n\n @State()\n showInnerContent = false;\n\n private openElementConfig = {\n accordion: {\n open: \"minus-circled\",\n close: \"plus-circled\",\n },\n menu: {\n open: \"chevron-up\",\n close: \"chevron-down\",\n },\n };\n\n /**\n * Constructor.\n */\n constructor() {\n this.handleClick = this.handleClick.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n /**\n * Handler for click on element. If element is expandable, change state.\n * @returns void\n */\n private handleClick(): void {\n this.clickItem.emit(this.listElementId);\n if (!this.expandable) {\n return;\n }\n this.showInnerContent = !this.showInnerContent;\n }\n\n private handleKeyDown(event): void {\n const expandByKey = event.code === KeyboardCode.ENTER;\n switch (event.code) {\n case KeyboardCode.ARROW_DOWN:\n event.preventDefault();\n this.accessibleFocus.emit(this.listElementId + 1);\n break;\n case KeyboardCode.ARROW_UP:\n event.preventDefault();\n this.accessibleFocus.emit(this.listElementId - 1);\n break;\n case KeyboardCode.ENTER:\n event.preventDefault();\n this.clickItem.emit(this.listElementId);\n break;\n default:\n break;\n }\n\n if (!this.expandable || !expandByKey) {\n return;\n }\n this.showInnerContent = !this.showInnerContent;\n }\n\n /**\n * Renders button to expand element.\n * @returns expadable button\n */\n private renderExpandableButton(): HTMLZIconElement {\n if (!this.expandable) {\n return null;\n }\n\n return (\n <z-icon\n name={\n this.showInnerContent\n ? this.openElementConfig[this.expandableStyle].open\n : this.openElementConfig[this.expandableStyle].close\n }\n />\n );\n }\n\n /**\n * Renders expanded content if element is expandable.\n * @returns expanded content\n */\n private renderExpandedContent(): HTMLDivElement {\n if (!this.expandable) {\n return null;\n }\n\n return (\n <div\n class={{\n \"z-list-element-inner-container\": true,\n \"expanded\": this.showInnerContent,\n }}\n >\n <slot name=\"inner-content\" />\n </div>\n );\n }\n\n /**\n * Renders content of the z-list-element\n * @returns list content\n */\n private renderContent(): HTMLDivElement {\n if (this.listType === ListType.NONE) {\n return <slot />;\n }\n\n if (this.listType === ListType.ORDERED) {\n return (\n <div class=\"z-list-content-container\">\n <div>{this.listElementPosition}.&emsp;</div>\n <slot />\n </div>\n );\n }\n\n if (this.listType === ListType.UNORDERED) {\n return (\n <div class=\"z-list-content-container\">\n <span>&bull;&emsp;</span>\n <slot />\n </div>\n );\n }\n }\n\n render(): HTMLZListElementElement {\n return (\n <Host\n aria-expanded={this.expandable ? this.showInnerContent : null}\n onClick={this.handleClick}\n onFocus={() => this.ariaDescendantFocus.emit(this.listElementId)}\n onKeyDown={this.handleKeyDown}\n clickable={this.clickable && !this.disabled}\n tabIndex=\"0\"\n >\n <div\n class=\"container\"\n style={{color: `var(--${this.color})`}}\n tabindex=\"-1\"\n id={`z-list-element-id-${this.listElementId}`}\n part=\"list-item-container\"\n >\n <div class=\"z-list-element-container\">\n {this.renderExpandableButton()}\n {this.renderContent()}\n </div>\n {this.renderExpandedContent()}\n </div>\n {this.dividerType === ListDividerType.ELEMENT && (\n <z-divider\n color={this.dividerColor}\n size={this.dividerSize}\n />\n )}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/list/z-list-element/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State} from \"@stencil/core\";\nimport {\n DividerSize,\n ExpandableListButtonAlign,\n ExpandableListStyle,\n KeyboardCode,\n ListDividerType,\n ListSize,\n ListType,\n} from \"../../../beans\";\n\n@Component({\n tag: \"z-list-element\",\n styleUrl: \"styles.css\",\n shadow: true,\n})\nexport class ZListElement {\n @Element() host: HTMLZListElementElement;\n\n /** remove filter click event, returns filterid */\n @Event({\n eventName: \"accessibleFocus\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n accessibleFocus: EventEmitter<number>;\n\n /** set parent aria-activedescendant on focus event, returns filterid */\n @Event({\n eventName: \"ariaDescendantFocus\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n ariaDescendantFocus: EventEmitter<number>;\n\n /** remove filter click event, returns filterid */\n @Event({\n eventName: \"clickItem\",\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n clickItem: EventEmitter;\n\n @Listen(\"accessibleFocus\", {target: \"document\"})\n accessibleFocusHandler(e: CustomEvent): void {\n if (this.listElementId === e.detail) {\n const toFocus = this.host.shadowRoot.getElementById(`z-list-element-id-${e.detail}`);\n toFocus.focus();\n }\n }\n\n /**\n * [optional] Align expandable button left or right.\n */\n @Prop({reflect: true})\n alignButton?: ExpandableListButtonAlign = ExpandableListButtonAlign.LEFT;\n\n /**\n * [optional] Sets element clickable.\n */\n @Prop({reflect: true})\n clickable?: boolean = false;\n\n /**\n * [optional] Sets the divider color.\n */\n @Prop()\n dividerColor?: string = \"color-surface03\";\n\n /**\n * [optional] Sets the position where to insert the divider.\n */\n @Prop()\n dividerType?: ListDividerType = ListDividerType.NONE;\n\n /**\n * [optional] Sets the divider size.\n */\n @Prop()\n dividerSize?: DividerSize = DividerSize.SMALL;\n\n /**\n * [optional] Sets element as expandable.\n */\n @Prop({reflect: true})\n expandable?: boolean = false;\n\n /**\n * [optional] Sets expandable style to element.\n */\n @Prop()\n expandableStyle?: ExpandableListStyle = ExpandableListStyle.ACCORDION;\n\n /**\n * [optional] List element id.\n */\n @Prop({reflect: true})\n listElementId?: number;\n\n /**\n * [optional] Sets size of inside elements.\n */\n @Prop({reflect: true})\n size?: ListSize = ListSize.MEDIUM;\n\n /**\n * [optional] Sets text color of the element.\n */\n @Prop({reflect: true})\n color?: string = \"none\";\n\n /**\n * [optional] Sets disabled style of the element.\n */\n @Prop({reflect: true})\n disabled?: boolean = false;\n\n /**\n * [optional] If is used in ZContextualMenu component\n */\n @Prop({reflect: true})\n isContextualMenu?: boolean = false;\n\n /**\n * [optional] position of the list element inside the list or the group\n */\n @Prop({reflect: true})\n listElementPosition?: string = \"0\";\n\n /**\n * [optional] type of the list marker for each element\n */\n @Prop({reflect: true})\n listType?: ListType = ListType.NONE;\n\n /**\n * [optional] Sets element role.\n */\n @Prop({reflect: true})\n role?: string = \"listitem\";\n\n @State()\n showInnerContent = false;\n\n private openElementConfig = {\n accordion: {\n open: \"minus-circled\",\n close: \"plus-circled\",\n },\n menu: {\n open: \"chevron-up\",\n close: \"chevron-down\",\n },\n };\n\n /**\n * Constructor.\n */\n constructor() {\n this.handleClick = this.handleClick.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n /**\n * Handler for click on element. If element is expandable, change state.\n * @returns void\n */\n private handleClick(): void {\n this.clickItem.emit(this.listElementId);\n if (!this.expandable) {\n return;\n }\n this.showInnerContent = !this.showInnerContent;\n }\n\n private calculateClass(): string {\n if (this.isContextualMenu) {\n return \"container-contextual-menu\";\n }\n\n return \"container\";\n }\n\n private handleKeyDown(event): void {\n const expandByKey = event.code === KeyboardCode.ENTER;\n switch (event.code) {\n case KeyboardCode.ARROW_DOWN:\n event.preventDefault();\n this.accessibleFocus.emit(this.listElementId + 1);\n break;\n case KeyboardCode.ARROW_UP:\n event.preventDefault();\n this.accessibleFocus.emit(this.listElementId - 1);\n break;\n case KeyboardCode.ENTER:\n event.preventDefault();\n this.clickItem.emit(this.listElementId);\n break;\n default:\n break;\n }\n\n if (!this.expandable || !expandByKey) {\n return;\n }\n this.showInnerContent = !this.showInnerContent;\n }\n\n /**\n * Renders button to expand element.\n * @returns expadable button\n */\n private renderExpandableButton(): HTMLZIconElement {\n if (!this.expandable) {\n return null;\n }\n\n return (\n <z-icon\n name={\n this.showInnerContent\n ? this.openElementConfig[this.expandableStyle].open\n : this.openElementConfig[this.expandableStyle].close\n }\n />\n );\n }\n\n /**\n * Renders expanded content if element is expandable.\n * @returns expanded content\n */\n private renderExpandedContent(): HTMLDivElement {\n if (!this.expandable) {\n return null;\n }\n\n return (\n <div\n class={{\n \"z-list-element-inner-container\": true,\n \"expanded\": this.showInnerContent,\n }}\n >\n <slot name=\"inner-content\" />\n </div>\n );\n }\n\n /**\n * Renders content of the z-list-element\n * @returns list content\n */\n private renderContent(): HTMLDivElement {\n if (this.listType === ListType.NONE) {\n return <slot />;\n }\n\n if (this.listType === ListType.ORDERED) {\n return (\n <div class=\"z-list-content-container\">\n <div>{this.listElementPosition}.&emsp;</div>\n <slot />\n </div>\n );\n }\n\n if (this.listType === ListType.UNORDERED) {\n return (\n <div class=\"z-list-content-container\">\n <span>&bull;&emsp;</span>\n <slot />\n </div>\n );\n }\n }\n\n render(): HTMLZListElementElement {\n return (\n <Host\n aria-expanded={this.expandable ? this.showInnerContent : null}\n onClick={this.handleClick}\n onFocus={() => this.ariaDescendantFocus.emit(this.listElementId)}\n onKeyDown={this.handleKeyDown}\n clickable={this.clickable && !this.disabled}\n tabIndex={!this.isContextualMenu ? \"0\" : null}\n >\n <div\n class={`${this.calculateClass()}`}\n style={{color: `var(--${this.color})`}}\n tabindex={this.isContextualMenu ? \"0\" : \"-1\"}\n id={`z-list-element-id-${this.listElementId}`}\n part=\"list-item-container\"\n >\n <div class=\"z-list-element-container\">\n {this.renderExpandableButton()}\n {this.renderContent()}\n </div>\n {this.renderExpandedContent()}\n </div>\n {this.dividerType === ListDividerType.ELEMENT && (\n <z-divider\n color={this.dividerColor}\n size={this.dividerSize}\n />\n )}\n </Host>\n );\n }\n}\n"]}
@@ -2,7 +2,8 @@
2
2
  outline: none;
3
3
  }
4
4
 
5
- :host > .container {
5
+ :host > .container,
6
+ :host > .container-contextual-menu {
6
7
  --background-color-list-element: var(--color-surface01);
7
8
  --background-hover-color-list-element: var(--color-surface02);
8
9
  --background-active-color-list-element: var(--color-surface02);
@@ -41,55 +42,79 @@
41
42
  /* ----------------- */
42
43
 
43
44
  :host([expandable]) > .container,
44
- :host([clickable]) > .container {
45
+ :host([expandable]) > .container-contextual-menu,
46
+ :host([clickable]) > .container,
47
+ :host([clickable]) > .container-contextual-menu {
45
48
  cursor: pointer;
46
49
  }
47
50
 
48
51
  :host([expandable]:hover) > .container,
49
- :host([clickable]:hover) > .container {
52
+ :host([expandable]:hover) > .container-contextual-menu,
53
+ :host([clickable]:hover) > .container,
54
+ :host([clickable]:hover) > .container-contextual-menu {
50
55
  background-color: var(--background-hover-color-list-element);
51
56
  }
52
57
 
53
58
  :host([expandable]:focus:focus-visible) > .container,
54
- :host([clickable]:focus:focus-visible) > .container {
59
+ :host([expandable]:focus:focus-visible) > .container-contextual-menu,
60
+ :host([clickable]:focus:focus-visible) > .container,
61
+ :host([clickable]:focus:focus-visible) > .container-contextual-menu {
55
62
  box-shadow: var(--shadow-focus-primary);
56
63
  }
57
64
 
58
- :host([clickable]:not([expandable])) > .container.clicked {
65
+ :host([clickable]:not([expandable])) > .container.clicked,
66
+ :host([clickable]:not([expandable])) > .container-contextual-menu.clicked {
59
67
  box-shadow: var(--shadow-focus-primary);
60
68
  }
61
69
 
62
70
  :host([expandable]:active) > .container,
63
- :host([clickable]:active) > .container {
71
+ :host([expandable]:active) > .container-contextual-menu,
72
+ :host([clickable]:active) > .container,
73
+ :host([clickable]:active) > .container-contextual-menu {
64
74
  background-color: var(--background-active-color-list-element);
65
75
  }
66
76
 
67
- :host([align-button="left"][expandable]) > .container > .z-list-element-container {
77
+ :host([align-button="left"][expandable]) > .container > .z-list-element-container,
78
+ :host([align-button="left"][expandable]) > .container-contextual-menu > .z-list-element-container {
68
79
  display: flex;
69
80
  }
70
81
 
71
- :host([align-button="right"][expandable]) > .container > .z-list-element-container {
82
+ :host([align-button="right"][expandable]) > .container > .z-list-element-container,
83
+ :host([align-button="right"][expandable]) > .container-contextual-menu > .z-list-element-container {
72
84
  display: flex;
73
85
  flex-direction: row-reverse;
74
86
  justify-content: space-between;
75
87
  }
76
88
 
77
- :host([align-button="left"][expandable]) > .container > .z-list-element-container > z-icon {
89
+ :host([align-button="left"][expandable]) > .container > .z-list-element-container > z-icon,
90
+ :host([align-button="left"][expandable]) > .container-contextual-menu > .z-list-element-container > z-icon {
78
91
  margin-right: var(--space-unit);
79
92
  }
80
93
 
81
- :host([align-button="right"][expandable]) > .container > .z-list-element-container > z-icon {
94
+ :host([align-button="right"][expandable]) > .container > .z-list-element-container > z-icon,
95
+ :host([align-button="right"][expandable]) > .container-contextual-menu > .z-list-element-container > z-icon {
82
96
  margin-left: var(--space-unit);
83
97
  }
84
98
 
85
- :host > .container > .z-list-element-inner-container {
99
+ :host > .container > .z-list-element-inner-container,
100
+ :host > .container-contextual-menu > .z-list-element-inner-container {
86
101
  display: none;
87
102
  }
88
103
 
89
- :host > .container > .z-list-element-inner-container.expanded {
104
+ :host > .container > .z-list-element-inner-container.expanded,
105
+ :host > .container-contextual-menu > .z-list-element-inner-container.expanded {
90
106
  display: block;
91
107
  }
92
108
 
109
+ :host([clickable]:hover) > .container-contextual-menu {
110
+ background-color: var(--color-surface03);
111
+ }
112
+
113
+ .container-contextual-menu:focus-visible {
114
+ box-shadow: var(--shadow-focus-primary);
115
+ outline: none;
116
+ }
117
+
93
118
  .z-list-content-container {
94
119
  display: flex;
95
120
  align-items: center;