@universal-material/web 3.7.2 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (453) hide show
  1. package/.claude-plugin/plugin.json +12 -0
  2. package/README.md +12 -0
  3. package/app-bar/top-app-bar.d.ts +20 -4
  4. package/app-bar/top-app-bar.d.ts.map +1 -1
  5. package/app-bar/top-app-bar.js +84 -33
  6. package/app-bar/top-app-bar.js.map +1 -1
  7. package/app-bar/top-app-bar.styles.d.ts.map +1 -1
  8. package/app-bar/top-app-bar.styles.js +18 -1
  9. package/app-bar/top-app-bar.styles.js.map +1 -1
  10. package/badge/badge.d.ts +5 -2
  11. package/badge/badge.d.ts.map +1 -1
  12. package/badge/badge.js +9 -6
  13. package/badge/badge.js.map +1 -1
  14. package/badge/badge.styles.d.ts.map +1 -1
  15. package/badge/badge.styles.js +1 -0
  16. package/badge/badge.styles.js.map +1 -1
  17. package/bundle.min.js +5480 -2170
  18. package/button/button-base.d.ts +9 -2
  19. package/button/button-base.d.ts.map +1 -1
  20. package/button/button-base.js +12 -5
  21. package/button/button-base.js.map +1 -1
  22. package/button/button-set.d.ts +3 -3
  23. package/button/button-set.d.ts.map +1 -1
  24. package/button/button-set.js +7 -7
  25. package/button/button-set.js.map +1 -1
  26. package/button/button.d.ts +10 -7
  27. package/button/button.d.ts.map +1 -1
  28. package/button/button.js +17 -14
  29. package/button/button.js.map +1 -1
  30. package/button/fab-menu-color-context.d.ts +2 -2
  31. package/button/fab-menu-color-context.d.ts.map +1 -1
  32. package/button/fab-menu-color-context.js.map +1 -1
  33. package/button/fab-menu-item.d.ts +3 -3
  34. package/button/fab-menu-item.d.ts.map +1 -1
  35. package/button/fab-menu-item.js +11 -11
  36. package/button/fab-menu-item.js.map +1 -1
  37. package/button/fab-menu.d.ts +20 -5
  38. package/button/fab-menu.d.ts.map +1 -1
  39. package/button/fab-menu.js +48 -11
  40. package/button/fab-menu.js.map +1 -1
  41. package/button/fab.d.ts +22 -7
  42. package/button/fab.d.ts.map +1 -1
  43. package/button/fab.js +49 -11
  44. package/button/fab.js.map +1 -1
  45. package/button/icon-button.d.ts +13 -7
  46. package/button/icon-button.d.ts.map +1 -1
  47. package/button/icon-button.js +14 -8
  48. package/button/icon-button.js.map +1 -1
  49. package/button/toggle-button.d.ts +6 -6
  50. package/button/toggle-button.d.ts.map +1 -1
  51. package/button/toggle-button.js +10 -10
  52. package/button/toggle-button.js.map +1 -1
  53. package/button-field/button-field.d.ts +6 -3
  54. package/button-field/button-field.d.ts.map +1 -1
  55. package/button-field/button-field.js +12 -9
  56. package/button-field/button-field.js.map +1 -1
  57. package/calendar/calendar-adapter.d.ts +3 -0
  58. package/calendar/calendar-adapter.d.ts.map +1 -1
  59. package/calendar/calendar-adapter.js.map +1 -1
  60. package/calendar/calendar-base.d.ts +18 -1
  61. package/calendar/calendar-base.d.ts.map +1 -1
  62. package/calendar/calendar-base.js +188 -25
  63. package/calendar/calendar-base.js.map +1 -1
  64. package/calendar/calendar.d.ts +6 -2
  65. package/calendar/calendar.d.ts.map +1 -1
  66. package/calendar/calendar.js +12 -8
  67. package/calendar/calendar.js.map +1 -1
  68. package/calendar/default-calendar-adapter.d.ts +3 -0
  69. package/calendar/default-calendar-adapter.d.ts.map +1 -1
  70. package/calendar/default-calendar-adapter.js +17 -5
  71. package/calendar/default-calendar-adapter.js.map +1 -1
  72. package/calendar/range-calendar.d.ts +2 -2
  73. package/calendar/range-calendar.d.ts.map +1 -1
  74. package/calendar/range-calendar.js +9 -9
  75. package/calendar/range-calendar.js.map +1 -1
  76. package/card/card-content.d.ts +7 -2
  77. package/card/card-content.d.ts.map +1 -1
  78. package/card/card-content.js +10 -5
  79. package/card/card-content.js.map +1 -1
  80. package/card/card-media.d.ts +5 -2
  81. package/card/card-media.d.ts.map +1 -1
  82. package/card/card-media.js +8 -5
  83. package/card/card-media.js.map +1 -1
  84. package/card/card.d.ts +4 -4
  85. package/card/card.d.ts.map +1 -1
  86. package/card/card.js +5 -5
  87. package/card/card.js.map +1 -1
  88. package/checkbox/checkbox-list-item.d.ts +4 -4
  89. package/checkbox/checkbox-list-item.d.ts.map +1 -1
  90. package/checkbox/checkbox-list-item.js +5 -5
  91. package/checkbox/checkbox-list-item.js.map +1 -1
  92. package/checkbox/checkbox.d.ts +10 -3
  93. package/checkbox/checkbox.d.ts.map +1 -1
  94. package/checkbox/checkbox.js +14 -7
  95. package/checkbox/checkbox.js.map +1 -1
  96. package/chip/chip-set.d.ts +3 -3
  97. package/chip/chip-set.d.ts.map +1 -1
  98. package/chip/chip-set.js +6 -6
  99. package/chip/chip-set.js.map +1 -1
  100. package/chip/chip.d.ts +8 -5
  101. package/chip/chip.d.ts.map +1 -1
  102. package/chip/chip.js +23 -20
  103. package/chip/chip.js.map +1 -1
  104. package/chip-field/chip-field.d.ts +6 -3
  105. package/chip-field/chip-field.d.ts.map +1 -1
  106. package/chip-field/chip-field.js +9 -9
  107. package/chip-field/chip-field.js.map +1 -1
  108. package/collapse/collapse.d.ts +26 -0
  109. package/collapse/collapse.d.ts.map +1 -0
  110. package/collapse/collapse.js +62 -0
  111. package/collapse/collapse.js.map +1 -0
  112. package/collapse/collapse.styles.d.ts +2 -0
  113. package/collapse/collapse.styles.d.ts.map +1 -0
  114. package/collapse/collapse.styles.js +8 -0
  115. package/collapse/collapse.styles.js.map +1 -0
  116. package/config.js.map +1 -1
  117. package/css/universal-material.css +2 -1
  118. package/css/universal-material.min.css +2 -1
  119. package/custom-elements.json +17175 -9684
  120. package/datepicker/datepicker.d.ts +54 -3
  121. package/datepicker/datepicker.d.ts.map +1 -1
  122. package/datepicker/datepicker.js +202 -6
  123. package/datepicker/datepicker.js.map +1 -1
  124. package/datepicker/datepicker.styles.d.ts.map +1 -1
  125. package/datepicker/datepicker.styles.js +25 -0
  126. package/datepicker/datepicker.styles.js.map +1 -1
  127. package/datepicker/format.d.ts +19 -0
  128. package/datepicker/format.d.ts.map +1 -0
  129. package/datepicker/format.js +47 -0
  130. package/datepicker/format.js.map +1 -0
  131. package/datepicker/range-datepicker.d.ts +58 -0
  132. package/datepicker/range-datepicker.d.ts.map +1 -0
  133. package/datepicker/range-datepicker.js +212 -0
  134. package/datepicker/range-datepicker.js.map +1 -0
  135. package/dialog/confirm-dialog-builder.d.ts +3 -3
  136. package/dialog/confirm-dialog-builder.d.ts.map +1 -1
  137. package/dialog/confirm-dialog-builder.js.map +1 -1
  138. package/dialog/dialog-builder.d.ts +5 -4
  139. package/dialog/dialog-builder.d.ts.map +1 -1
  140. package/dialog/dialog-builder.js +10 -3
  141. package/dialog/dialog-builder.js.map +1 -1
  142. package/dialog/dialog-button-def.d.ts +3 -3
  143. package/dialog/dialog-button-def.d.ts.map +1 -1
  144. package/dialog/dialog-button-def.js.map +1 -1
  145. package/dialog/dialog.d.ts +10 -2
  146. package/dialog/dialog.d.ts.map +1 -1
  147. package/dialog/dialog.js +22 -14
  148. package/dialog/dialog.js.map +1 -1
  149. package/dialog/message-dialog-builder.d.ts +2 -2
  150. package/dialog/message-dialog-builder.d.ts.map +1 -1
  151. package/dialog/message-dialog-builder.js.map +1 -1
  152. package/elevation/elevation.d.ts +2 -2
  153. package/elevation/elevation.d.ts.map +1 -1
  154. package/elevation/elevation.js +4 -4
  155. package/elevation/elevation.js.map +1 -1
  156. package/expansion-panel/expansion-panel-container.d.ts +24 -0
  157. package/expansion-panel/expansion-panel-container.d.ts.map +1 -0
  158. package/expansion-panel/expansion-panel-container.js +54 -0
  159. package/expansion-panel/expansion-panel-container.js.map +1 -0
  160. package/expansion-panel/expansion-panel-container.styles.d.ts +2 -0
  161. package/expansion-panel/expansion-panel-container.styles.d.ts.map +1 -0
  162. package/expansion-panel/expansion-panel-container.styles.js +9 -0
  163. package/expansion-panel/expansion-panel-container.styles.js.map +1 -0
  164. package/expansion-panel/expansion-panel.d.ts +37 -0
  165. package/expansion-panel/expansion-panel.d.ts.map +1 -0
  166. package/expansion-panel/expansion-panel.js +89 -0
  167. package/expansion-panel/expansion-panel.js.map +1 -0
  168. package/expansion-panel/expansion-panel.styles.d.ts +2 -0
  169. package/expansion-panel/expansion-panel.styles.d.ts.map +1 -0
  170. package/expansion-panel/expansion-panel.styles.js +66 -0
  171. package/expansion-panel/expansion-panel.styles.js.map +1 -0
  172. package/field/field-base.d.ts +17 -3
  173. package/field/field-base.d.ts.map +1 -1
  174. package/field/field-base.js +30 -20
  175. package/field/field-base.js.map +1 -1
  176. package/field/field-defaults-context.d.ts +2 -2
  177. package/field/field-defaults-context.d.ts.map +1 -1
  178. package/field/field-defaults-context.js.map +1 -1
  179. package/field/field-defaults.d.ts +3 -3
  180. package/field/field-defaults.d.ts.map +1 -1
  181. package/field/field-defaults.js.map +1 -1
  182. package/field/field-variant.d.ts +1 -1
  183. package/field/field-variant.d.ts.map +1 -1
  184. package/field/field-variant.js.map +1 -1
  185. package/field/field.d.ts +7 -3
  186. package/field/field.d.ts.map +1 -1
  187. package/field/field.js +10 -6
  188. package/field/field.js.map +1 -1
  189. package/icon/icon.d.ts +2 -2
  190. package/icon/icon.d.ts.map +1 -1
  191. package/icon/icon.js +4 -4
  192. package/icon/icon.js.map +1 -1
  193. package/index.d.ts +29 -1
  194. package/index.d.ts.map +1 -1
  195. package/index.js +29 -1
  196. package/index.js.map +1 -1
  197. package/list/list-item.d.ts +19 -2
  198. package/list/list-item.d.ts.map +1 -1
  199. package/list/list-item.js +29 -6
  200. package/list/list-item.js.map +1 -1
  201. package/list/list-item.styles.d.ts.map +1 -1
  202. package/list/list-item.styles.js +13 -0
  203. package/list/list-item.styles.js.map +1 -1
  204. package/list/list.d.ts +2 -2
  205. package/list/list.d.ts.map +1 -1
  206. package/list/list.js +4 -4
  207. package/list/list.js.map +1 -1
  208. package/menu/menu-item.d.ts +9 -3
  209. package/menu/menu-item.d.ts.map +1 -1
  210. package/menu/menu-item.js +16 -10
  211. package/menu/menu-item.js.map +1 -1
  212. package/menu/menu.d.ts +18 -2
  213. package/menu/menu.d.ts.map +1 -1
  214. package/menu/menu.js +37 -18
  215. package/menu/menu.js.map +1 -1
  216. package/menu/menu.styles.d.ts.map +1 -1
  217. package/menu/menu.styles.js +5 -0
  218. package/menu/menu.styles.js.map +1 -1
  219. package/navigation/drawer-headline.d.ts +2 -2
  220. package/navigation/drawer-headline.d.ts.map +1 -1
  221. package/navigation/drawer-headline.js +6 -6
  222. package/navigation/drawer-headline.js.map +1 -1
  223. package/navigation/drawer-headline.styles.js +1 -1
  224. package/navigation/drawer-headline.styles.js.map +1 -1
  225. package/navigation/drawer-item.d.ts +3 -3
  226. package/navigation/drawer-item.d.ts.map +1 -1
  227. package/navigation/drawer-item.js +17 -12
  228. package/navigation/drawer-item.js.map +1 -1
  229. package/navigation/drawer.d.ts +2 -2
  230. package/navigation/drawer.d.ts.map +1 -1
  231. package/navigation/drawer.js +4 -4
  232. package/navigation/drawer.js.map +1 -1
  233. package/navigation/side-navigation.d.ts +9 -2
  234. package/navigation/side-navigation.d.ts.map +1 -1
  235. package/navigation/side-navigation.js +15 -8
  236. package/navigation/side-navigation.js.map +1 -1
  237. package/navigation-bar/navigation-bar-item.d.ts +40 -0
  238. package/navigation-bar/navigation-bar-item.d.ts.map +1 -0
  239. package/navigation-bar/navigation-bar-item.js +113 -0
  240. package/navigation-bar/navigation-bar-item.js.map +1 -0
  241. package/navigation-bar/navigation-bar-item.styles.d.ts +2 -0
  242. package/navigation-bar/navigation-bar-item.styles.d.ts.map +1 -0
  243. package/navigation-bar/navigation-bar-item.styles.js +101 -0
  244. package/navigation-bar/navigation-bar-item.styles.js.map +1 -0
  245. package/navigation-bar/navigation-bar.d.ts +40 -0
  246. package/navigation-bar/navigation-bar.d.ts.map +1 -0
  247. package/navigation-bar/navigation-bar.js +85 -0
  248. package/navigation-bar/navigation-bar.js.map +1 -0
  249. package/navigation-bar/navigation-bar.styles.d.ts +2 -0
  250. package/navigation-bar/navigation-bar.styles.d.ts.map +1 -0
  251. package/navigation-bar/navigation-bar.styles.js +44 -0
  252. package/navigation-bar/navigation-bar.styles.js.map +1 -0
  253. package/navigation-rail/navigation-rail-headline.d.ts +23 -0
  254. package/navigation-rail/navigation-rail-headline.d.ts.map +1 -0
  255. package/navigation-rail/navigation-rail-headline.js +28 -0
  256. package/navigation-rail/navigation-rail-headline.js.map +1 -0
  257. package/navigation-rail/navigation-rail-headline.styles.d.ts +2 -0
  258. package/navigation-rail/navigation-rail-headline.styles.d.ts.map +1 -0
  259. package/navigation-rail/navigation-rail-headline.styles.js +19 -0
  260. package/navigation-rail/navigation-rail-headline.styles.js.map +1 -0
  261. package/navigation-rail/navigation-rail-item.d.ts +58 -0
  262. package/navigation-rail/navigation-rail-item.d.ts.map +1 -0
  263. package/navigation-rail/navigation-rail-item.js +160 -0
  264. package/navigation-rail/navigation-rail-item.js.map +1 -0
  265. package/navigation-rail/navigation-rail-item.styles.d.ts +2 -0
  266. package/navigation-rail/navigation-rail-item.styles.d.ts.map +1 -0
  267. package/navigation-rail/navigation-rail-item.styles.js +182 -0
  268. package/navigation-rail/navigation-rail-item.styles.js.map +1 -0
  269. package/navigation-rail/navigation-rail.d.ts +66 -0
  270. package/navigation-rail/navigation-rail.d.ts.map +1 -0
  271. package/navigation-rail/navigation-rail.js +223 -0
  272. package/navigation-rail/navigation-rail.js.map +1 -0
  273. package/navigation-rail/navigation-rail.styles.d.ts +2 -0
  274. package/navigation-rail/navigation-rail.styles.d.ts.map +1 -0
  275. package/navigation-rail/navigation-rail.styles.js +220 -0
  276. package/navigation-rail/navigation-rail.styles.js.map +1 -0
  277. package/overflow-menu/overflow-menu-item.d.ts +8 -0
  278. package/overflow-menu/overflow-menu-item.d.ts.map +1 -1
  279. package/overflow-menu/overflow-menu-item.js +8 -0
  280. package/overflow-menu/overflow-menu-item.js.map +1 -1
  281. package/overflow-menu/overflow-menu.d.ts +8 -2
  282. package/overflow-menu/overflow-menu.d.ts.map +1 -1
  283. package/overflow-menu/overflow-menu.js +10 -1
  284. package/overflow-menu/overflow-menu.js.map +1 -1
  285. package/package.json +21 -5
  286. package/progress/circular-progress.d.ts +9 -2
  287. package/progress/circular-progress.d.ts.map +1 -1
  288. package/progress/circular-progress.js +9 -6
  289. package/progress/circular-progress.js.map +1 -1
  290. package/progress/progress-bar.d.ts +9 -2
  291. package/progress/progress-bar.d.ts.map +1 -1
  292. package/progress/progress-bar.js +9 -6
  293. package/progress/progress-bar.js.map +1 -1
  294. package/radio/radio-list-item.d.ts +4 -4
  295. package/radio/radio-list-item.d.ts.map +1 -1
  296. package/radio/radio-list-item.js +5 -5
  297. package/radio/radio-list-item.js.map +1 -1
  298. package/radio/radio.d.ts +6 -3
  299. package/radio/radio.d.ts.map +1 -1
  300. package/radio/radio.js +9 -6
  301. package/radio/radio.js.map +1 -1
  302. package/ripple/ripple.d.ts +2 -2
  303. package/ripple/ripple.d.ts.map +1 -1
  304. package/ripple/ripple.js +9 -9
  305. package/ripple/ripple.js.map +1 -1
  306. package/scaffold/pane.d.ts +127 -0
  307. package/scaffold/pane.d.ts.map +1 -0
  308. package/scaffold/pane.js +220 -0
  309. package/scaffold/pane.js.map +1 -0
  310. package/scaffold/pane.styles.d.ts +2 -0
  311. package/scaffold/pane.styles.d.ts.map +1 -0
  312. package/scaffold/pane.styles.js +1909 -0
  313. package/scaffold/pane.styles.js.map +1 -0
  314. package/scaffold/scaffold.d.ts +45 -0
  315. package/scaffold/scaffold.d.ts.map +1 -0
  316. package/scaffold/scaffold.js +170 -0
  317. package/scaffold/scaffold.js.map +1 -0
  318. package/scaffold/scaffold.styles.d.ts +2 -0
  319. package/scaffold/scaffold.styles.d.ts.map +1 -0
  320. package/scaffold/scaffold.styles.js +69 -0
  321. package/scaffold/scaffold.styles.js.map +1 -0
  322. package/scaffold/scroll-container-context.d.ts +4 -0
  323. package/scaffold/scroll-container-context.d.ts.map +1 -0
  324. package/scaffold/scroll-container-context.js +3 -0
  325. package/scaffold/scroll-container-context.js.map +1 -0
  326. package/scss/utilities/_divider.scss +4 -0
  327. package/search/search.d.ts +6 -3
  328. package/search/search.d.ts.map +1 -1
  329. package/search/search.js +10 -7
  330. package/search/search.js.map +1 -1
  331. package/search/search.styles.d.ts.map +1 -1
  332. package/search/search.styles.js +7 -2
  333. package/search/search.styles.js.map +1 -1
  334. package/select/option.d.ts +9 -3
  335. package/select/option.d.ts.map +1 -1
  336. package/select/option.js +14 -8
  337. package/select/option.js.map +1 -1
  338. package/select/select-navigation-controller.d.ts +4 -4
  339. package/select/select-navigation-controller.d.ts.map +1 -1
  340. package/select/select-navigation-controller.js.map +1 -1
  341. package/select/select.d.ts +22 -12
  342. package/select/select.d.ts.map +1 -1
  343. package/select/select.js +81 -31
  344. package/select/select.js.map +1 -1
  345. package/shared/button-wrapper.d.ts +4 -1
  346. package/shared/button-wrapper.d.ts.map +1 -1
  347. package/shared/button-wrapper.js +8 -8
  348. package/shared/button-wrapper.js.map +1 -1
  349. package/shared/char-count-text-field/native-text-field-wrapper.d.ts +15 -2
  350. package/shared/char-count-text-field/native-text-field-wrapper.d.ts.map +1 -1
  351. package/shared/char-count-text-field/native-text-field-wrapper.js +16 -6
  352. package/shared/char-count-text-field/native-text-field-wrapper.js.map +1 -1
  353. package/shared/menu-field/menu-field-navigation-controller.d.ts +3 -3
  354. package/shared/menu-field/menu-field-navigation-controller.d.ts.map +1 -1
  355. package/shared/menu-field/menu-field-navigation-controller.js.map +1 -1
  356. package/shared/menu-field/menu-field.d.ts +5 -5
  357. package/shared/menu-field/menu-field.d.ts.map +1 -1
  358. package/shared/menu-field/menu-field.js.map +1 -1
  359. package/shared/selection-control/selection-control-list-item.d.ts +2 -2
  360. package/shared/selection-control/selection-control-list-item.d.ts.map +1 -1
  361. package/shared/selection-control/selection-control-list-item.js +14 -1
  362. package/shared/selection-control/selection-control-list-item.js.map +1 -1
  363. package/shared/selection-control/selection-control.d.ts +10 -1
  364. package/shared/selection-control/selection-control.d.ts.map +1 -1
  365. package/shared/selection-control/selection-control.js +24 -7
  366. package/shared/selection-control/selection-control.js.map +1 -1
  367. package/shared/sets/set-base.d.ts +1 -1
  368. package/shared/sets/set-base.d.ts.map +1 -1
  369. package/shared/sets/set-base.js +2 -2
  370. package/shared/sets/set-base.js.map +1 -1
  371. package/shared/text-field-base/text-field-base.d.ts +37 -2
  372. package/shared/text-field-base/text-field-base.d.ts.map +1 -1
  373. package/shared/text-field-base/text-field-base.js +66 -4
  374. package/shared/text-field-base/text-field-base.js.map +1 -1
  375. package/skills/badge/SKILL.md +43 -0
  376. package/skills/buttons/SKILL.md +115 -0
  377. package/skills/card/SKILL.md +162 -0
  378. package/skills/chips/SKILL.md +95 -0
  379. package/skills/collapse/SKILL.md +37 -0
  380. package/skills/datepicker/SKILL.md +110 -0
  381. package/skills/dialog/SKILL.md +92 -0
  382. package/skills/drawer/SKILL.md +94 -0
  383. package/skills/expansion-panel/SKILL.md +65 -0
  384. package/skills/fab/SKILL.md +79 -0
  385. package/skills/list/SKILL.md +105 -0
  386. package/skills/menu/SKILL.md +120 -0
  387. package/skills/navigation-bar/SKILL.md +87 -0
  388. package/skills/navigation-rail/SKILL.md +127 -0
  389. package/skills/overview/SKILL.md +44 -0
  390. package/skills/progress/SKILL.md +63 -0
  391. package/skills/scaffold/SKILL.md +392 -0
  392. package/skills/search/SKILL.md +65 -0
  393. package/skills/select/SKILL.md +120 -0
  394. package/skills/selection-controls/SKILL.md +88 -0
  395. package/skills/setup/SKILL.md +58 -0
  396. package/skills/slider/SKILL.md +119 -0
  397. package/skills/snackbar/SKILL.md +70 -0
  398. package/skills/tab-bar/SKILL.md +55 -0
  399. package/skills/text-field/SKILL.md +114 -0
  400. package/skills/theming/SKILL.md +80 -0
  401. package/skills/top-app-bar/SKILL.md +64 -0
  402. package/skills/typeahead/SKILL.md +113 -0
  403. package/slider/slider.d.ts +73 -0
  404. package/slider/slider.d.ts.map +1 -0
  405. package/slider/slider.js +506 -0
  406. package/slider/slider.js.map +1 -0
  407. package/slider/slider.styles.d.ts +2 -0
  408. package/slider/slider.styles.d.ts.map +1 -0
  409. package/slider/slider.styles.js +292 -0
  410. package/slider/slider.styles.js.map +1 -0
  411. package/snackbar/snackbar.d.ts +13 -4
  412. package/snackbar/snackbar.d.ts.map +1 -1
  413. package/snackbar/snackbar.js +37 -28
  414. package/snackbar/snackbar.js.map +1 -1
  415. package/snackbar/snackbar.styles.js +1 -1
  416. package/snackbar/snackbar.styles.js.map +1 -1
  417. package/switch/switch-list-item.d.ts +4 -4
  418. package/switch/switch-list-item.d.ts.map +1 -1
  419. package/switch/switch-list-item.js +5 -5
  420. package/switch/switch-list-item.js.map +1 -1
  421. package/switch/switch.d.ts +3 -3
  422. package/switch/switch.d.ts.map +1 -1
  423. package/switch/switch.js +5 -5
  424. package/switch/switch.js.map +1 -1
  425. package/tab-bar/tab-bar.d.ts +9 -6
  426. package/tab-bar/tab-bar.d.ts.map +1 -1
  427. package/tab-bar/tab-bar.js +43 -23
  428. package/tab-bar/tab-bar.js.map +1 -1
  429. package/tab-bar/tab.d.ts +10 -5
  430. package/tab-bar/tab.d.ts.map +1 -1
  431. package/tab-bar/tab.js +14 -9
  432. package/tab-bar/tab.js.map +1 -1
  433. package/text-area/text-area.d.ts +6 -3
  434. package/text-area/text-area.d.ts.map +1 -1
  435. package/text-area/text-area.js +12 -9
  436. package/text-area/text-area.js.map +1 -1
  437. package/text-field/text-field.d.ts +31 -3
  438. package/text-field/text-field.d.ts.map +1 -1
  439. package/text-field/text-field.js +53 -13
  440. package/text-field/text-field.js.map +1 -1
  441. package/typeahead/highlight.d.ts +2 -2
  442. package/typeahead/highlight.d.ts.map +1 -1
  443. package/typeahead/highlight.js +7 -7
  444. package/typeahead/highlight.js.map +1 -1
  445. package/typeahead/typeahead-template-render.d.ts +4 -0
  446. package/typeahead/typeahead-template-render.d.ts.map +1 -1
  447. package/typeahead/typeahead-template-render.js +4 -0
  448. package/typeahead/typeahead-template-render.js.map +1 -1
  449. package/typeahead/typeahead.d.ts +14 -7
  450. package/typeahead/typeahead.d.ts.map +1 -1
  451. package/typeahead/typeahead.js +29 -18
  452. package/typeahead/typeahead.js.map +1 -1
  453. package/vscode.html-custom-data.json +1146 -326
@@ -0,0 +1,223 @@
1
+ import { __decorate } from "tslib";
2
+ import { html, LitElement } from 'lit';
3
+ import { customElement, property, query, queryAssignedElements } from 'lit/decorators.js';
4
+ import { styles as baseStyles } from '../shared/base.styles.js';
5
+ import { styles } from './navigation-rail.styles.js';
6
+ import '../elevation/elevation.js';
7
+ import './navigation-rail-headline.js';
8
+ import './navigation-rail-item.js';
9
+ /**
10
+ * Material 3 navigation rail — a responsive primary navigation surface that
11
+ * adapts to the viewport with two independently configurable destination
12
+ * sets:
13
+ *
14
+ * - **Mobile (< 840px)**: rail is hidden. `toggleDrawer` slides the
15
+ * expanded rail in from the left as a **modal** over the content (with
16
+ * scrim).
17
+ * - **Medium (840–1199px)**: a permanent 96dp **collapsed** sidebar shows
18
+ * `slot="rail"` items. `toggleDrawer` slides the expanded rail in over
19
+ * it as a **modal** (with scrim).
20
+ * - **Large (≥ 1200px)**: the expanded rail is permanent (no modal,
21
+ * no scrim). `toggleDrawer` slides it back off the leading edge,
22
+ * revealing the collapsed bar underneath.
23
+ *
24
+ * The expanded panel animates exactly like the side-navigation drawer:
25
+ * `inset-inline-start` transitions 375ms with the project's awesome cubic
26
+ * bezier easing.
27
+ *
28
+ * Slots:
29
+ * - `rail`: primary destinations shown in the permanent collapsed bar
30
+ * (`u-navigation-rail-item`s, no headlines).
31
+ * - `expanded`: full destination list shown in the expanded panel —
32
+ * `u-navigation-rail-item`s grouped by optional
33
+ * `u-navigation-rail-headline`s.
34
+ * - `top`: optional area pinned to the top of the rail (menu button,
35
+ * brand mark, etc.).
36
+ * - `bottom`: optional area pinned to the bottom of the rail (FAB,
37
+ * secondary action, etc.).
38
+ * - default: page content.
39
+ */
40
+ let NavigationRail = class NavigationRail extends LitElement {
41
+ constructor() {
42
+ super(...arguments);
43
+ /**
44
+ * Toggle the rail's secondary state:
45
+ *
46
+ * - On mobile/medium: slides the expanded rail in from the left as a
47
+ * modal overlay (with scrim). Click on the scrim to close.
48
+ * - On large: slides the expanded rail off, revealing the collapsed
49
+ * 96dp bar underneath.
50
+ */
51
+ this.toggleDrawer = false;
52
+ this.#handleScrimClick = () => {
53
+ this.toggleDrawer = false;
54
+ };
55
+ this.#handleCollapsedSlotChange = () => {
56
+ if (this.assignedCollapsedItems.length > 0) {
57
+ this.setAttribute('has-rail-items', '');
58
+ }
59
+ else {
60
+ this.removeAttribute('has-rail-items');
61
+ }
62
+ for (const item of this.assignedCollapsedItems) {
63
+ if (this.#isRailItem(item)) {
64
+ item.variant = 'collapsed';
65
+ }
66
+ }
67
+ };
68
+ this.#handleExpandedSlotChange = () => {
69
+ if (this.assignedExpandedElements.length > 0) {
70
+ this.setAttribute('has-expanded-items', '');
71
+ }
72
+ else {
73
+ this.removeAttribute('has-expanded-items');
74
+ }
75
+ for (const el of this.assignedExpandedElements) {
76
+ if (this.#isRailItem(el)) {
77
+ el.variant = 'expanded';
78
+ }
79
+ }
80
+ };
81
+ this.#handleTopSlotChange = () => {
82
+ if (this.assignedTop.length > 0) {
83
+ this.setAttribute('has-top', '');
84
+ }
85
+ else {
86
+ this.removeAttribute('has-top');
87
+ }
88
+ };
89
+ this.#handleBottomSlotChange = () => {
90
+ if (this.assignedBottom.length > 0) {
91
+ this.setAttribute('has-bottom', '');
92
+ }
93
+ else {
94
+ this.removeAttribute('has-bottom');
95
+ }
96
+ };
97
+ }
98
+ static { this.styles = [baseStyles, styles]; }
99
+ render() {
100
+ return html `
101
+ <div class="grid">
102
+ <div class="rail-column"></div>
103
+ <div class="content">
104
+ <slot></slot>
105
+ </div>
106
+ </div>
107
+ <div class="scrim" part="scrim" @click=${this.#handleScrimClick}></div>
108
+ <aside class="rail" part="rail">
109
+ <div class="top" part="top">
110
+ <slot name="top" @slotchange=${this.#handleTopSlotChange}></slot>
111
+ </div>
112
+ <div class="rail-items" part="rail-items">
113
+ <slot name="rail" @slotchange=${this.#handleCollapsedSlotChange}></slot>
114
+ </div>
115
+ <div class="bottom" part="bottom">
116
+ <slot name="bottom" @slotchange=${this.#handleBottomSlotChange}></slot>
117
+ </div>
118
+ <div class="scroll-thumb" part="scroll-thumb" aria-hidden="true"></div>
119
+ </aside>
120
+ <aside class="rail-expanded" part="rail-expanded">
121
+ <div class="rail-items-expanded" part="rail-items-expanded">
122
+ <slot name="expanded" @slotchange=${this.#handleExpandedSlotChange}></slot>
123
+ </div>
124
+ <div class="scroll-thumb" part="scroll-thumb" aria-hidden="true"></div>
125
+ </aside>
126
+ `;
127
+ }
128
+ firstUpdated() {
129
+ this.#setupScrollThumb(this.railItemsEl, this.railThumbEl, this.railEl);
130
+ this.#setupScrollThumb(this.railItemsExpandedEl, this.railExpandedThumbEl, this.railExpandedEl);
131
+ }
132
+ // Builds the custom thumb behavior for one (container, thumb, parent) trio.
133
+ // Native scrollbar is hidden via CSS; this paints a thin overlay thumb
134
+ // whose top/height reflect the container's scroll metrics. Visible while
135
+ // the parent is hovered or has the `.scrolling` class (set briefly on
136
+ // every scroll event).
137
+ #setupScrollThumb(container, thumb, parent) {
138
+ const minThumbHeight = 24;
139
+ // Inset from the trailing rounded corners, matching the radius so the
140
+ // thumb visually sits inside the curve.
141
+ const trackInset = () => {
142
+ const v = getComputedStyle(parent).getPropertyValue('--_nav-rail-expanded-corner-shape').trim();
143
+ const n = parseFloat(v);
144
+ return Number.isFinite(n) ? n : 16;
145
+ };
146
+ const update = () => {
147
+ const ch = container.clientHeight;
148
+ const sh = container.scrollHeight;
149
+ if (sh <= ch + 1 || ch === 0) {
150
+ thumb.style.display = 'none';
151
+ return;
152
+ }
153
+ thumb.style.display = '';
154
+ const inset = trackInset();
155
+ const trackH = Math.max(0, ch - inset * 2);
156
+ const ratio = ch / sh;
157
+ const thumbH = Math.max(minThumbHeight, Math.floor(trackH * ratio));
158
+ const maxOffset = Math.max(0, trackH - thumbH);
159
+ const offset = ((sh - ch) <= 0 ? 0 : container.scrollTop / (sh - ch)) * maxOffset;
160
+ thumb.style.height = `${thumbH}px`;
161
+ thumb.style.top = `${inset + offset}px`;
162
+ };
163
+ let scrollTimer = 0;
164
+ container.addEventListener('scroll', () => {
165
+ update();
166
+ parent.classList.add('scrolling');
167
+ window.clearTimeout(scrollTimer);
168
+ scrollTimer = window.setTimeout(() => parent.classList.remove('scrolling'), 800);
169
+ }, { passive: true });
170
+ new ResizeObserver(update).observe(container);
171
+ update();
172
+ // Items added/removed by Lit changes scrollHeight without resizing the
173
+ // container, so we also refresh on slot mutations.
174
+ const slot = container.querySelector('slot');
175
+ slot?.addEventListener('slotchange', () => requestAnimationFrame(update));
176
+ }
177
+ #handleScrimClick;
178
+ #handleCollapsedSlotChange;
179
+ #handleExpandedSlotChange;
180
+ #handleTopSlotChange;
181
+ #handleBottomSlotChange;
182
+ #isRailItem(el) {
183
+ return el.tagName === 'U-NAVIGATION-RAIL-ITEM';
184
+ }
185
+ };
186
+ __decorate([
187
+ property({ type: Boolean, attribute: 'toggle-drawer', reflect: true })
188
+ ], NavigationRail.prototype, "toggleDrawer", void 0);
189
+ __decorate([
190
+ queryAssignedElements({ slot: 'rail', flatten: true })
191
+ ], NavigationRail.prototype, "assignedCollapsedItems", void 0);
192
+ __decorate([
193
+ queryAssignedElements({ slot: 'expanded', flatten: true })
194
+ ], NavigationRail.prototype, "assignedExpandedElements", void 0);
195
+ __decorate([
196
+ queryAssignedElements({ slot: 'top', flatten: true })
197
+ ], NavigationRail.prototype, "assignedTop", void 0);
198
+ __decorate([
199
+ queryAssignedElements({ slot: 'bottom', flatten: true })
200
+ ], NavigationRail.prototype, "assignedBottom", void 0);
201
+ __decorate([
202
+ query('.rail')
203
+ ], NavigationRail.prototype, "railEl", void 0);
204
+ __decorate([
205
+ query('.rail-expanded')
206
+ ], NavigationRail.prototype, "railExpandedEl", void 0);
207
+ __decorate([
208
+ query('.rail-items')
209
+ ], NavigationRail.prototype, "railItemsEl", void 0);
210
+ __decorate([
211
+ query('.rail-items-expanded')
212
+ ], NavigationRail.prototype, "railItemsExpandedEl", void 0);
213
+ __decorate([
214
+ query('.rail .scroll-thumb')
215
+ ], NavigationRail.prototype, "railThumbEl", void 0);
216
+ __decorate([
217
+ query('.rail-expanded .scroll-thumb')
218
+ ], NavigationRail.prototype, "railExpandedThumbEl", void 0);
219
+ NavigationRail = __decorate([
220
+ customElement('u-navigation-rail')
221
+ ], NavigationRail);
222
+ export { NavigationRail };
223
+ //# sourceMappingURL=navigation-rail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-rail.js","sourceRoot":"","sources":["../../src/navigation-rail/navigation-rail.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, HTMLTemplateResult, LitElement } from 'lit';\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js';\n\nimport { styles as baseStyles } from '../shared/base.styles.js';\nimport { styles } from './navigation-rail.styles.js';\n\nimport '../elevation/elevation.js';\nimport './navigation-rail-headline.js';\nimport './navigation-rail-item.js';\nimport type { NavigationRailItem } from './navigation-rail-item.js';\n\n/**\n * Material 3 navigation rail — a responsive primary navigation surface that\n * adapts to the viewport with two independently configurable destination\n * sets:\n *\n * - **Mobile (< 840px)**: rail is hidden. `toggleDrawer` slides the\n * expanded rail in from the left as a **modal** over the content (with\n * scrim).\n * - **Medium (840–1199px)**: a permanent 96dp **collapsed** sidebar shows\n * `slot=\"rail\"` items. `toggleDrawer` slides the expanded rail in over\n * it as a **modal** (with scrim).\n * - **Large (≥ 1200px)**: the expanded rail is permanent (no modal,\n * no scrim). `toggleDrawer` slides it back off the leading edge,\n * revealing the collapsed bar underneath.\n *\n * The expanded panel animates exactly like the side-navigation drawer:\n * `inset-inline-start` transitions 375ms with the project's awesome cubic\n * bezier easing.\n *\n * Slots:\n * - `rail`: primary destinations shown in the permanent collapsed bar\n * (`u-navigation-rail-item`s, no headlines).\n * - `expanded`: full destination list shown in the expanded panel —\n * `u-navigation-rail-item`s grouped by optional\n * `u-navigation-rail-headline`s.\n * - `top`: optional area pinned to the top of the rail (menu button,\n * brand mark, etc.).\n * - `bottom`: optional area pinned to the bottom of the rail (FAB,\n * secondary action, etc.).\n * - default: page content.\n */\n@customElement('u-navigation-rail')\nexport class NavigationRail extends LitElement {\n static override styles = [baseStyles, styles];\n\n /**\n * Toggle the rail's secondary state:\n *\n * - On mobile/medium: slides the expanded rail in from the left as a\n * modal overlay (with scrim). Click on the scrim to close.\n * - On large: slides the expanded rail off, revealing the collapsed\n * 96dp bar underneath.\n */\n @property({ type: Boolean, attribute: 'toggle-drawer', reflect: true }) toggleDrawer = false;\n\n @queryAssignedElements({ slot: 'rail', flatten: true })\n private readonly assignedCollapsedItems!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'expanded', flatten: true })\n private readonly assignedExpandedElements!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'top', flatten: true })\n private readonly assignedTop!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'bottom', flatten: true })\n private readonly assignedBottom!: HTMLElement[];\n\n @query('.rail') private readonly railEl!: HTMLElement;\n @query('.rail-expanded') private readonly railExpandedEl!: HTMLElement;\n @query('.rail-items') private readonly railItemsEl!: HTMLElement;\n @query('.rail-items-expanded') private readonly railItemsExpandedEl!: HTMLElement;\n @query('.rail .scroll-thumb') private readonly railThumbEl!: HTMLElement;\n @query('.rail-expanded .scroll-thumb') private readonly railExpandedThumbEl!: HTMLElement;\n\n override render(): HTMLTemplateResult {\n return html`\n <div class=\"grid\">\n <div class=\"rail-column\"></div>\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n <div class=\"scrim\" part=\"scrim\" @click=${this.#handleScrimClick}></div>\n <aside class=\"rail\" part=\"rail\">\n <div class=\"top\" part=\"top\">\n <slot name=\"top\" @slotchange=${this.#handleTopSlotChange}></slot>\n </div>\n <div class=\"rail-items\" part=\"rail-items\">\n <slot name=\"rail\" @slotchange=${this.#handleCollapsedSlotChange}></slot>\n </div>\n <div class=\"bottom\" part=\"bottom\">\n <slot name=\"bottom\" @slotchange=${this.#handleBottomSlotChange}></slot>\n </div>\n <div class=\"scroll-thumb\" part=\"scroll-thumb\" aria-hidden=\"true\"></div>\n </aside>\n <aside class=\"rail-expanded\" part=\"rail-expanded\">\n <div class=\"rail-items-expanded\" part=\"rail-items-expanded\">\n <slot name=\"expanded\" @slotchange=${this.#handleExpandedSlotChange}></slot>\n </div>\n <div class=\"scroll-thumb\" part=\"scroll-thumb\" aria-hidden=\"true\"></div>\n </aside>\n `;\n }\n\n override firstUpdated(): void {\n this.#setupScrollThumb(this.railItemsEl, this.railThumbEl, this.railEl);\n this.#setupScrollThumb(this.railItemsExpandedEl, this.railExpandedThumbEl, this.railExpandedEl);\n }\n\n // Builds the custom thumb behavior for one (container, thumb, parent) trio.\n // Native scrollbar is hidden via CSS; this paints a thin overlay thumb\n // whose top/height reflect the container's scroll metrics. Visible while\n // the parent is hovered or has the `.scrolling` class (set briefly on\n // every scroll event).\n #setupScrollThumb(container: HTMLElement, thumb: HTMLElement, parent: HTMLElement): void {\n const minThumbHeight = 24;\n // Inset from the trailing rounded corners, matching the radius so the\n // thumb visually sits inside the curve.\n const trackInset = (): number => {\n const v = getComputedStyle(parent).getPropertyValue('--_nav-rail-expanded-corner-shape').trim();\n const n = parseFloat(v);\n return Number.isFinite(n) ? n : 16;\n };\n\n const update = (): void => {\n const ch = container.clientHeight;\n const sh = container.scrollHeight;\n if (sh <= ch + 1 || ch === 0) {\n thumb.style.display = 'none';\n return;\n }\n thumb.style.display = '';\n const inset = trackInset();\n const trackH = Math.max(0, ch - inset * 2);\n const ratio = ch / sh;\n const thumbH = Math.max(minThumbHeight, Math.floor(trackH * ratio));\n const maxOffset = Math.max(0, trackH - thumbH);\n const offset = ((sh - ch) <= 0 ? 0 : container.scrollTop / (sh - ch)) * maxOffset;\n thumb.style.height = `${thumbH}px`;\n thumb.style.top = `${inset + offset}px`;\n };\n\n let scrollTimer = 0;\n container.addEventListener('scroll', () => {\n update();\n parent.classList.add('scrolling');\n window.clearTimeout(scrollTimer);\n scrollTimer = window.setTimeout(() => parent.classList.remove('scrolling'), 800);\n }, { passive: true });\n\n new ResizeObserver(update).observe(container);\n update();\n\n // Items added/removed by Lit changes scrollHeight without resizing the\n // container, so we also refresh on slot mutations.\n const slot = container.querySelector('slot');\n slot?.addEventListener('slotchange', () => requestAnimationFrame(update));\n }\n\n #handleScrimClick = (): void => {\n this.toggleDrawer = false;\n };\n\n #handleCollapsedSlotChange = (): void => {\n if (this.assignedCollapsedItems.length > 0) {\n this.setAttribute('has-rail-items', '');\n } else {\n this.removeAttribute('has-rail-items');\n }\n for (const item of this.assignedCollapsedItems) {\n if (this.#isRailItem(item)) {\n item.variant = 'collapsed';\n }\n }\n };\n\n #handleExpandedSlotChange = (): void => {\n if (this.assignedExpandedElements.length > 0) {\n this.setAttribute('has-expanded-items', '');\n } else {\n this.removeAttribute('has-expanded-items');\n }\n for (const el of this.assignedExpandedElements) {\n if (this.#isRailItem(el)) {\n el.variant = 'expanded';\n }\n }\n };\n\n #handleTopSlotChange = (): void => {\n if (this.assignedTop.length > 0) {\n this.setAttribute('has-top', '');\n } else {\n this.removeAttribute('has-top');\n }\n };\n\n #handleBottomSlotChange = (): void => {\n if (this.assignedBottom.length > 0) {\n this.setAttribute('has-bottom', '');\n } else {\n this.removeAttribute('has-bottom');\n }\n };\n\n #isRailItem(el: Element): el is NavigationRailItem {\n return el.tagName === 'U-NAVIGATION-RAIL-ITEM';\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-navigation-rail': NavigationRail;\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const styles: import("lit").CSSResult;
2
+ //# sourceMappingURL=navigation-rail.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-rail.styles.d.ts","sourceRoot":"","sources":["../../src/navigation-rail/navigation-rail.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAyNlB,CAAC"}
@@ -0,0 +1,220 @@
1
+ import { css } from 'lit';
2
+ export const styles = css `
3
+ :host {
4
+ --_nav-rail-width: var(--u-nav-rail-width, 96px);
5
+ --_nav-rail-expanded-width: clamp(
6
+ var(--u-nav-rail-expanded-width-minimum, 220px),
7
+ var(--u-nav-rail-expanded-width, 360px),
8
+ var(--u-nav-rail-expanded-width-maximum, 360px)
9
+ );
10
+ --_nav-rail-expanded-width-negative: calc(var(--_nav-rail-expanded-width) * -1);
11
+ --_nav-rail-expanded-corner-shape: var(--u-nav-rail-expanded-corner-shape, var(--u-shape-corner-large, 16px));
12
+ --_navigation-width: 0;
13
+ --_scrim-opacity: var(--u-drawer-scrim-opacity, .4);
14
+ display: block;
15
+ position: relative;
16
+ width: 100%;
17
+ height: 100%;
18
+ overflow: hidden;
19
+ --u-app-bar-offset: var(--_navigation-width);
20
+ }
21
+
22
+ :host(.disable-transition) * {
23
+ transition: none !important;
24
+ }
25
+
26
+ .grid {
27
+ display: grid;
28
+ grid-template-columns: var(--_navigation-width) minmax(0, 1fr);
29
+ grid-template-rows: minmax(0, 1fr);
30
+ transition: grid-template-columns 375ms cubic-bezier(0.19, 1, 0.22, 1);
31
+ width: 100%;
32
+ height: 100%;
33
+ min-height: 0;
34
+ --u-app-bar-offset: var(--_navigation-width);
35
+ }
36
+
37
+ .rail-column {
38
+ height: 100%;
39
+ }
40
+
41
+ .content {
42
+ height: 100%;
43
+ min-width: 0;
44
+ }
45
+
46
+ .rail {
47
+ display: none;
48
+ flex-direction: column;
49
+ position: absolute;
50
+ inset-inline-start: 0;
51
+ inset-block-start: 0;
52
+ width: var(--_nav-rail-width);
53
+ height: 100%;
54
+ background-color: var(--u-nav-rail-container-color, var(--u-color-surface, rgb(254, 247, 255)));
55
+ color: var(--u-nav-rail-text-color, var(--u-color-on-surface, rgb(29, 27, 32)));
56
+ overflow: hidden;
57
+ z-index: var(--u-nav-rail-z-index, 1030);
58
+ }
59
+
60
+ .rail-items {
61
+ display: flex;
62
+ flex: 1 1 auto;
63
+ flex-direction: column;
64
+ gap: var(--u-nav-rail-item-vertical-space, 4px);
65
+ padding-block: var(--u-nav-rail-vertical-trailing-space, 20px);
66
+ overflow-y: auto;
67
+ overflow-x: hidden;
68
+ }
69
+
70
+ .rail-expanded {
71
+ display: none;
72
+ flex-direction: column;
73
+ position: absolute;
74
+ inset-inline-start: var(--_nav-rail-expanded-width-negative);
75
+ inset-block-start: 0;
76
+ width: var(--_nav-rail-expanded-width);
77
+ height: 100%;
78
+ background-color: var(--u-nav-rail-container-color, var(--u-color-surface, rgb(254, 247, 255)));
79
+ color: var(--u-nav-rail-text-color, var(--u-color-on-surface, rgb(29, 27, 32)));
80
+ overflow: hidden;
81
+ z-index: calc(var(--u-nav-rail-z-index, 1030) + 1);
82
+ transition: inset 375ms cubic-bezier(0.19, 1, 0.22, 1);
83
+ border-start-end-radius: var(--_nav-rail-expanded-corner-shape);
84
+ border-end-end-radius: var(--_nav-rail-expanded-corner-shape);
85
+ }
86
+
87
+ .top,
88
+ .bottom {
89
+ display: none;
90
+ flex-direction: column;
91
+ align-items: center;
92
+ gap: var(--u-nav-rail-edge-gap, 4px);
93
+ }
94
+
95
+ :host([has-top]) .top {
96
+ display: flex;
97
+ padding-block-start: var(--u-nav-rail-top-space, 44px);
98
+ min-height: calc(var(--u-nav-rail-top-space, 44px) + var(--u-nav-rail-header-space-minimum, 40px));
99
+ }
100
+
101
+ :host([has-bottom]) .bottom {
102
+ display: flex;
103
+ padding-block-end: var(--u-nav-rail-vertical-trailing-space, 20px);
104
+ }
105
+
106
+ .rail-items-expanded {
107
+ display: flex;
108
+ flex: 1 1 auto;
109
+ flex-direction: column;
110
+ gap: var(--u-nav-rail-expanded-between-item-space, 0);
111
+ padding-block: var(--u-nav-rail-vertical-trailing-space, 20px);
112
+ overflow-y: auto;
113
+ overflow-x: hidden;
114
+ min-height: 0;
115
+ }
116
+
117
+ :host([has-bottom]) .rail-items-expanded {
118
+ padding-block-end: 0;
119
+ }
120
+
121
+ :host([has-bottom]) .bottom {
122
+ padding-block-end: var(--u-nav-rail-vertical-trailing-space, 20px);
123
+ }
124
+
125
+ .rail-items,
126
+ .rail-items-expanded {
127
+ scrollbar-width: none;
128
+ }
129
+ .rail-items::-webkit-scrollbar,
130
+ .rail-items-expanded::-webkit-scrollbar {
131
+ display: none;
132
+ width: 0;
133
+ height: 0;
134
+ }
135
+
136
+ .scroll-thumb {
137
+ position: absolute;
138
+ inset-inline-end: var(--u-nav-rail-scrollbar-inline-inset, 2px);
139
+ width: var(--u-nav-rail-scrollbar-width, 4px);
140
+ background: var(--u-nav-rail-scrollbar-thumb-color, var(--u-color-outline-variant, rgb(202, 196, 208)));
141
+ border-radius: 999px;
142
+ pointer-events: none;
143
+ opacity: 0;
144
+ transition: opacity 200ms;
145
+ }
146
+
147
+ .rail:hover .scroll-thumb,
148
+ .rail.scrolling .scroll-thumb,
149
+ .rail-expanded:hover .scroll-thumb,
150
+ .rail-expanded.scrolling .scroll-thumb {
151
+ opacity: 1;
152
+ }
153
+
154
+ .scrim {
155
+ --_modal-rail-open-progress: 0;
156
+ position: absolute;
157
+ inset: 0;
158
+ background: var(--u-drawer-scrim-color, var(--u-color-scrim, rgb(0, 0, 0)));
159
+ pointer-events: none;
160
+ opacity: calc(var(--_scrim-opacity) * var(--_modal-rail-open-progress));
161
+ transition: opacity 375ms linear;
162
+ z-index: var(--u-nav-rail-z-index, 1030);
163
+ }
164
+
165
+ :host([toggle-drawer][has-expanded-items]) .rail-expanded {
166
+ display: flex;
167
+ inset-inline-start: 0;
168
+ }
169
+ :host([toggle-drawer][has-expanded-items]) .scrim {
170
+ --_modal-rail-open-progress: 1;
171
+ pointer-events: auto;
172
+ }
173
+
174
+ :host([has-expanded-items]) .rail-expanded {
175
+ display: flex;
176
+ }
177
+
178
+ @media (min-width: 840px) and (max-width: 1200px) {
179
+ :host([has-rail-items]) {
180
+ --_navigation-width: var(--_nav-rail-width);
181
+ }
182
+ :host([has-rail-items]) .rail {
183
+ display: flex;
184
+ }
185
+ }
186
+ @media (min-width: 1200px) {
187
+ :host,
188
+ :host([has-rail-items]) {
189
+ --_navigation-width: var(--_nav-rail-expanded-width);
190
+ }
191
+ :host([has-rail-items]:not([has-expanded-items])) {
192
+ --_navigation-width: var(--_nav-rail-width);
193
+ }
194
+ :host([toggle-drawer][has-rail-items]) {
195
+ --_navigation-width: var(--_nav-rail-width);
196
+ }
197
+ :host([toggle-drawer]:not([has-rail-items])) {
198
+ --_navigation-width: 0;
199
+ }
200
+ :host([toggle-drawer][has-rail-items]) .rail,
201
+ :host([has-rail-items]:not([has-expanded-items])) .rail {
202
+ display: flex;
203
+ }
204
+ :host([has-expanded-items]) .rail-expanded {
205
+ display: flex;
206
+ inset-inline-start: 0;
207
+ border-start-end-radius: 0;
208
+ border-end-end-radius: 0;
209
+ }
210
+ :host([toggle-drawer][has-expanded-items]) .rail-expanded {
211
+ inset-inline-start: var(--_nav-rail-expanded-width-negative);
212
+ }
213
+ .scrim,
214
+ :host([toggle-drawer][has-expanded-items]) .scrim {
215
+ --_modal-rail-open-progress: 0;
216
+ pointer-events: none;
217
+ }
218
+ }
219
+ `;
220
+ //# sourceMappingURL=navigation-rail.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-rail.styles.js","sourceRoot":"","sources":["../../src/navigation-rail/navigation-rail.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyNzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n :host {\n --_nav-rail-width: var(--u-nav-rail-width, 96px);\n --_nav-rail-expanded-width: clamp(\n var(--u-nav-rail-expanded-width-minimum, 220px),\n var(--u-nav-rail-expanded-width, 360px),\n var(--u-nav-rail-expanded-width-maximum, 360px)\n );\n --_nav-rail-expanded-width-negative: calc(var(--_nav-rail-expanded-width) * -1);\n --_nav-rail-expanded-corner-shape: var(--u-nav-rail-expanded-corner-shape, var(--u-shape-corner-large, 16px));\n --_navigation-width: 0;\n --_scrim-opacity: var(--u-drawer-scrim-opacity, .4);\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n overflow: hidden;\n --u-app-bar-offset: var(--_navigation-width);\n }\n\n :host(.disable-transition) * {\n transition: none !important;\n }\n\n .grid {\n display: grid;\n grid-template-columns: var(--_navigation-width) minmax(0, 1fr);\n grid-template-rows: minmax(0, 1fr);\n transition: grid-template-columns 375ms cubic-bezier(0.19, 1, 0.22, 1);\n width: 100%;\n height: 100%;\n min-height: 0;\n --u-app-bar-offset: var(--_navigation-width);\n }\n\n .rail-column {\n height: 100%;\n }\n\n .content {\n height: 100%;\n min-width: 0;\n }\n\n .rail {\n display: none;\n flex-direction: column;\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n width: var(--_nav-rail-width);\n height: 100%;\n background-color: var(--u-nav-rail-container-color, var(--u-color-surface, rgb(254, 247, 255)));\n color: var(--u-nav-rail-text-color, var(--u-color-on-surface, rgb(29, 27, 32)));\n overflow: hidden;\n z-index: var(--u-nav-rail-z-index, 1030);\n }\n\n .rail-items {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n gap: var(--u-nav-rail-item-vertical-space, 4px);\n padding-block: var(--u-nav-rail-vertical-trailing-space, 20px);\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n .rail-expanded {\n display: none;\n flex-direction: column;\n position: absolute;\n inset-inline-start: var(--_nav-rail-expanded-width-negative);\n inset-block-start: 0;\n width: var(--_nav-rail-expanded-width);\n height: 100%;\n background-color: var(--u-nav-rail-container-color, var(--u-color-surface, rgb(254, 247, 255)));\n color: var(--u-nav-rail-text-color, var(--u-color-on-surface, rgb(29, 27, 32)));\n overflow: hidden;\n z-index: calc(var(--u-nav-rail-z-index, 1030) + 1);\n transition: inset 375ms cubic-bezier(0.19, 1, 0.22, 1);\n border-start-end-radius: var(--_nav-rail-expanded-corner-shape);\n border-end-end-radius: var(--_nav-rail-expanded-corner-shape);\n }\n\n .top,\n .bottom {\n display: none;\n flex-direction: column;\n align-items: center;\n gap: var(--u-nav-rail-edge-gap, 4px);\n }\n\n :host([has-top]) .top {\n display: flex;\n padding-block-start: var(--u-nav-rail-top-space, 44px);\n min-height: calc(var(--u-nav-rail-top-space, 44px) + var(--u-nav-rail-header-space-minimum, 40px));\n }\n\n :host([has-bottom]) .bottom {\n display: flex;\n padding-block-end: var(--u-nav-rail-vertical-trailing-space, 20px);\n }\n\n .rail-items-expanded {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n gap: var(--u-nav-rail-expanded-between-item-space, 0);\n padding-block: var(--u-nav-rail-vertical-trailing-space, 20px);\n overflow-y: auto;\n overflow-x: hidden;\n min-height: 0;\n }\n\n :host([has-bottom]) .rail-items-expanded {\n padding-block-end: 0;\n }\n\n :host([has-bottom]) .bottom {\n padding-block-end: var(--u-nav-rail-vertical-trailing-space, 20px);\n }\n\n .rail-items,\n .rail-items-expanded {\n scrollbar-width: none;\n }\n .rail-items::-webkit-scrollbar,\n .rail-items-expanded::-webkit-scrollbar {\n display: none;\n width: 0;\n height: 0;\n }\n\n .scroll-thumb {\n position: absolute;\n inset-inline-end: var(--u-nav-rail-scrollbar-inline-inset, 2px);\n width: var(--u-nav-rail-scrollbar-width, 4px);\n background: var(--u-nav-rail-scrollbar-thumb-color, var(--u-color-outline-variant, rgb(202, 196, 208)));\n border-radius: 999px;\n pointer-events: none;\n opacity: 0;\n transition: opacity 200ms;\n }\n\n .rail:hover .scroll-thumb,\n .rail.scrolling .scroll-thumb,\n .rail-expanded:hover .scroll-thumb,\n .rail-expanded.scrolling .scroll-thumb {\n opacity: 1;\n }\n\n .scrim {\n --_modal-rail-open-progress: 0;\n position: absolute;\n inset: 0;\n background: var(--u-drawer-scrim-color, var(--u-color-scrim, rgb(0, 0, 0)));\n pointer-events: none;\n opacity: calc(var(--_scrim-opacity) * var(--_modal-rail-open-progress));\n transition: opacity 375ms linear;\n z-index: var(--u-nav-rail-z-index, 1030);\n }\n\n :host([toggle-drawer][has-expanded-items]) .rail-expanded {\n display: flex;\n inset-inline-start: 0;\n }\n :host([toggle-drawer][has-expanded-items]) .scrim {\n --_modal-rail-open-progress: 1;\n pointer-events: auto;\n }\n\n :host([has-expanded-items]) .rail-expanded {\n display: flex;\n }\n\n @media (min-width: 840px) and (max-width: 1200px) {\n :host([has-rail-items]) {\n --_navigation-width: var(--_nav-rail-width);\n }\n :host([has-rail-items]) .rail {\n display: flex;\n }\n }\n @media (min-width: 1200px) {\n :host,\n :host([has-rail-items]) {\n --_navigation-width: var(--_nav-rail-expanded-width);\n }\n :host([has-rail-items]:not([has-expanded-items])) {\n --_navigation-width: var(--_nav-rail-width);\n }\n :host([toggle-drawer][has-rail-items]) {\n --_navigation-width: var(--_nav-rail-width);\n }\n :host([toggle-drawer]:not([has-rail-items])) {\n --_navigation-width: 0;\n }\n :host([toggle-drawer][has-rail-items]) .rail,\n :host([has-rail-items]:not([has-expanded-items])) .rail {\n display: flex;\n }\n :host([has-expanded-items]) .rail-expanded {\n display: flex;\n inset-inline-start: 0;\n border-start-end-radius: 0;\n border-end-end-radius: 0;\n }\n :host([toggle-drawer][has-expanded-items]) .rail-expanded {\n inset-inline-start: var(--_nav-rail-expanded-width-negative);\n }\n .scrim,\n :host([toggle-drawer][has-expanded-items]) .scrim {\n --_modal-rail-open-progress: 0;\n pointer-events: none;\n }\n }\n`;\n"]}
@@ -2,8 +2,16 @@ import { HTMLTemplateResult, LitElement } from 'lit';
2
2
  export declare class OverflowMenuItem extends LitElement {
3
3
  #private;
4
4
  static styles: import("lit").CSSResult;
5
+ /**
6
+ * The accessible label for the action, used as the icon button's title
7
+ */
5
8
  get label(): string;
6
9
  set label(label: string);
10
+ /**
11
+ * Controls how the item behaves when space is limited.
12
+ * `'auto'` allows the item to be moved into the overflow menu;
13
+ * `'always'` keeps it permanently hidden behind the overflow trigger.
14
+ */
7
15
  collapse: 'auto' | 'always';
8
16
  icons: HTMLElement[];
9
17
  connectedCallback(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"overflow-menu-item.d.ts","sourceRoot":"","sources":["../../src/overflow-menu/overflow-menu-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,kBAAkB,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAKhE,qBACa,gBAAiB,SAAQ,UAAU;;IAC9C,OAAgB,MAAM,0BAIpB;IASF,IACI,KAAK,WAER;IAED,IAAI,KAAK,CAAC,KAAK,QAAA,EAGd;IAE4B,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAU;IAEzC,KAAK,EAAG,WAAW,EAAE,CAAC;IAEtC,iBAAiB;IAUjB,oBAAoB;cAKV,MAAM,IAAI,kBAAkB;CAOhD"}
1
+ {"version":3,"file":"overflow-menu-item.d.ts","sourceRoot":"","sources":["../../src/overflow-menu/overflow-menu-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,kBAAkB,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAKhE,qBACa,gBAAiB,SAAQ,UAAU;;IAC9C,OAAgB,MAAM,0BAIpB;IASF;;OAEG;IACH,IACI,KAAK,WAER;IAED,IAAI,KAAK,CAAC,KAAK,QAAA,EAGd;IAED;;;;OAIG;IAC0B,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAU;IAEzC,KAAK,EAAG,WAAW,EAAE,CAAC;IAEtC,iBAAiB;IAUjB,oBAAoB;cAKV,MAAM,IAAI,kBAAkB;CAOhD"}
@@ -6,6 +6,11 @@ let OverflowMenuItem = class OverflowMenuItem extends LitElement {
6
6
  super(...arguments);
7
7
  this.#label = '';
8
8
  this.#mutationObserver = new MutationObserver(() => this.#parent?._renderMenuItems());
9
+ /**
10
+ * Controls how the item behaves when space is limited.
11
+ * `'auto'` allows the item to be moved into the overflow menu;
12
+ * `'always'` keeps it permanently hidden behind the overflow trigger.
13
+ */
9
14
  this.collapse = 'auto';
10
15
  }
11
16
  static { this.styles = css `
@@ -18,6 +23,9 @@ let OverflowMenuItem = class OverflowMenuItem extends LitElement {
18
23
  get #parent() {
19
24
  return this.parentElement;
20
25
  }
26
+ /**
27
+ * The accessible label for the action, used as the icon button's title
28
+ */
21
29
  get label() {
22
30
  return this.#label;
23
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"overflow-menu-item.js","sourceRoot":"","sources":["../../src/overflow-menu/overflow-menu-item.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAsB,UAAU,EAAE,MAAM,KAAK,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAK5E,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU;IAAzC;;QAOL,WAAM,GAAG,EAAE,CAAC;QACH,sBAAiB,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAgB7D,aAAQ,GAAsB,MAAM,CAAC;IA0BpE,CAAC;aAjDiB,WAAM,GAAG,GAAG,CAAA;;;;GAI3B,AAJqB,CAIpB;IAEF,MAAM,CAAM;IACH,iBAAiB,CAAgE;IAE1F,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,aAAoC,CAAC;IACnD,CAAC;IAGD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,KAAK;QACb,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IACnC,CAAC;IAMQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE;YACnC,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAEQ,oBAAoB;QAC3B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;IACtC,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA;8BACe,IAAI,CAAC,KAAK;;;KAGnC,CAAC;IACJ,CAAC;;AAlCD;IADC,QAAQ,EAAE;6CAGV;AAO4B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;kDAAsC;AAEzC;IAAxB,qBAAqB,EAAE;+CAAuB;AA1BpC,gBAAgB;IAD5B,aAAa,CAAC,sBAAsB,CAAC;GACzB,gBAAgB,CAkD5B","sourcesContent":["import { css, html, HTMLTemplateResult, LitElement } from 'lit';\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js';\n\nimport { type OverflowMenu } from './overflow-menu.js';\n\n@customElement('u-overflow-menu-item')\nexport class OverflowMenuItem extends LitElement {\n static override styles = css`\n :host([collapse=always]) {\n display: none;\n }\n `;\n\n #label = '';\n readonly #mutationObserver = new MutationObserver(() => this.#parent?._renderMenuItems());\n\n get #parent(): OverflowMenu | null {\n return this.parentElement as OverflowMenu | null;\n }\n\n @property()\n get label() {\n return this.#label;\n }\n\n set label(label) {\n this.#label = label;\n this.#parent?._renderMenuItems();\n }\n\n @property({ reflect: true }) collapse: 'auto' | 'always' = 'auto';\n\n @queryAssignedElements() icons!: HTMLElement[];\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.#mutationObserver.observe(this, {\n subtree: true,\n characterData: true,\n childList: true,\n });\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.#mutationObserver.disconnect();\n }\n\n protected override render(): HTMLTemplateResult {\n return html`\n <u-icon-button title=\"${this.label}\">\n <slot></slot>\n </u-icon-button>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"overflow-menu-item.js","sourceRoot":"","sources":["../../src/overflow-menu/overflow-menu-item.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAsB,UAAU,EAAE,MAAM,KAAK,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAK5E,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU;IAAzC;;QAOL,WAAM,GAAG,EAAE,CAAC;QACH,sBAAiB,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAmB1F;;;;WAIG;QAC0B,aAAQ,GAAsB,MAAM,CAAC;IA0BpE,CAAC;aAzDiB,WAAM,GAAG,GAAG,CAAA;;;;GAI3B,AAJqB,CAIpB;IAEF,MAAM,CAAM;IACH,iBAAiB,CAAgE;IAE1F,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,aAAoC,CAAC;IACnD,CAAC;IAED;;OAEG;IAEH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,KAAK;QACb,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IACnC,CAAC;IAWQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE;YACnC,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAEQ,oBAAoB;QAC3B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;IACtC,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA;8BACe,IAAI,CAAC,KAAK;;;KAGnC,CAAC;IACJ,CAAC;;AAvCD;IADC,QAAQ,EAAE;6CAGV;AAY4B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;kDAAsC;AAEzC;IAAxB,qBAAqB,EAAE;+CAAuB;AAlCpC,gBAAgB;IAD5B,aAAa,CAAC,sBAAsB,CAAC;GACzB,gBAAgB,CA0D5B","sourcesContent":["import { css, html, HTMLTemplateResult, LitElement } from 'lit';\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js';\n\nimport { type OverflowMenu } from './overflow-menu.js';\n\n@customElement('u-overflow-menu-item')\nexport class OverflowMenuItem extends LitElement {\n static override styles = css`\n :host([collapse=always]) {\n display: none;\n }\n `;\n\n #label = '';\n readonly #mutationObserver = new MutationObserver(() => this.#parent?._renderMenuItems());\n\n get #parent(): OverflowMenu | null {\n return this.parentElement as OverflowMenu | null;\n }\n\n /**\n * The accessible label for the action, used as the icon button's title\n */\n @property()\n get label() {\n return this.#label;\n }\n\n set label(label) {\n this.#label = label;\n this.#parent?._renderMenuItems();\n }\n\n /**\n * Controls how the item behaves when space is limited.\n * `'auto'` allows the item to be moved into the overflow menu;\n * `'always'` keeps it permanently hidden behind the overflow trigger.\n */\n @property({ reflect: true }) collapse: 'auto' | 'always' = 'auto';\n\n @queryAssignedElements() icons!: HTMLElement[];\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.#mutationObserver.observe(this, {\n subtree: true,\n characterData: true,\n childList: true,\n });\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.#mutationObserver.disconnect();\n }\n\n protected override render(): HTMLTemplateResult {\n return html`\n <u-icon-button title=\"${this.label}\">\n <slot></slot>\n </u-icon-button>\n `;\n }\n}\n"]}
@@ -1,10 +1,16 @@
1
1
  import { HTMLTemplateResult, LitElement } from 'lit';
2
- import { UmMenu } from '../menu/menu.js';
2
+ import { Menu } from '../menu/menu.js';
3
3
  export declare class OverflowMenu extends LitElement {
4
4
  #private;
5
5
  static styles: import("lit").CSSResult;
6
6
  _renderMenu: boolean;
7
- menu?: UmMenu;
7
+ /**
8
+ * The positioning strategy used by the collapsed-items popover. Use
9
+ * `'fixed'` when the overflow menu is rendered inside a clipped/scrollable
10
+ * container so the popover can escape its bounds.
11
+ */
12
+ menuPositioning: 'relative' | 'fixed';
13
+ menu?: Menu;
8
14
  set anchor(value: HTMLElement | null);
9
15
  get anchor(): HTMLElement | null;
10
16
  constructor();
@@ -1 +1 @@
1
- {"version":3,"file":"overflow-menu.d.ts","sourceRoot":"","sources":["../../src/overflow-menu/overflow-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAU,MAAM,KAAK,CAAC;AAMnE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAIzC,qBACa,YAAa,SAAQ,UAAU;;IAC1C,OAAgB,MAAM,0BAAU;IAMvB,WAAW,UAAS;IAEZ,IAAI,CAAC,EAAE,MAAM,CAAC;IAG/B,IACI,MAAM,CAAC,KAAK,EAQF,WAAW,GAAG,IAAI,AARhB,EAMf;IAED,IAAI,MAAM,IAAI,WAAW,GAAG,IAAI,CAE/B;;IAaQ,iBAAiB;IAMjB,oBAAoB;cA+EV,MAAM,IAAI,kBAAkB;IAiC/C,gBAAgB;CAoBjB"}
1
+ {"version":3,"file":"overflow-menu.d.ts","sourceRoot":"","sources":["../../src/overflow-menu/overflow-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAU,MAAM,KAAK,CAAC;AAMnE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAIvC,qBACa,YAAa,SAAQ,UAAU;;IAC1C,OAAgB,MAAM,0BAAU;IAMvB,WAAW,UAAS;IAE7B;;;;OAIG;IAC0B,eAAe,EAAE,UAAU,GAAG,OAAO,CAAc;IAE/D,IAAI,CAAC,EAAE,IAAI,CAAC;IAG7B,IACI,MAAM,CAAC,KAAK,EAQF,WAAW,GAAG,IAAI,AARhB,EAMf;IAED,IAAI,MAAM,IAAI,WAAW,GAAG,IAAI,CAE/B;;IAaQ,iBAAiB;IAMjB,oBAAoB;cA+EV,MAAM,IAAI,kBAAkB;IAiC/C,gBAAgB;CAoBjB"}
@@ -28,6 +28,12 @@ let OverflowMenu = class OverflowMenu extends LitElement {
28
28
  this.#items = [];
29
29
  this.#collapsedItems = [];
30
30
  this._renderMenu = false;
31
+ /**
32
+ * The positioning strategy used by the collapsed-items popover. Use
33
+ * `'fixed'` when the overflow menu is rendered inside a clipped/scrollable
34
+ * container so the popover can escape its bounds.
35
+ */
36
+ this.menuPositioning = 'relative';
31
37
  this.#anchor = null;
32
38
  this.#menuItemsContainer = document.createElement('div');
33
39
  this.#updateMenusTimeout = 0;
@@ -117,7 +123,7 @@ let OverflowMenu = class OverflowMenu extends LitElement {
117
123
  </svg>
118
124
  </slot>
119
125
  </u-icon-button>
120
- <u-menu anchor-corner="end-end">
126
+ <u-menu anchor-corner="end-end" positioning=${this.menuPositioning}>
121
127
  <slot name="menu-items"></slot>
122
128
  </u-menu>
123
129
  </div>
@@ -145,6 +151,9 @@ let OverflowMenu = class OverflowMenu extends LitElement {
145
151
  __decorate([
146
152
  state()
147
153
  ], OverflowMenu.prototype, "_renderMenu", void 0);
154
+ __decorate([
155
+ property({ reflect: true })
156
+ ], OverflowMenu.prototype, "menuPositioning", void 0);
148
157
  __decorate([
149
158
  query('u-menu')
150
159
  ], OverflowMenu.prototype, "menu", void 0);