@tylertech/forge 2.13.2 → 2.14.0-dev.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 (378) hide show
  1. package/custom-elements.json +1079 -233
  2. package/dist/esm/accordion/index.js +1 -1
  3. package/dist/esm/app-bar/help-button/index.js +1 -1
  4. package/dist/esm/app-bar/index.js +1 -1
  5. package/dist/esm/app-bar/menu-button/index.js +1 -1
  6. package/dist/esm/app-bar/notification-button/index.js +1 -1
  7. package/dist/esm/app-bar/profile-button/index.js +1 -1
  8. package/dist/esm/app-bar/search/index.js +1 -1
  9. package/dist/esm/autocomplete/index.js +1 -1
  10. package/dist/esm/banner/index.js +1 -1
  11. package/dist/esm/bottom-sheet/index.js +1 -1
  12. package/dist/esm/busy-indicator/index.js +1 -1
  13. package/dist/esm/button/index.js +1 -1
  14. package/dist/esm/button-toggle/button-toggle/index.js +1 -1
  15. package/dist/esm/button-toggle/button-toggle-group/index.js +1 -1
  16. package/dist/esm/button-toggle/index.js +1 -1
  17. package/dist/esm/calendar/calendar-dropdown/index.js +1 -1
  18. package/dist/esm/calendar/calendar-menu/index.js +1 -1
  19. package/dist/esm/calendar/index.js +1 -1
  20. package/dist/esm/checkbox/index.js +1 -1
  21. package/dist/esm/chip-field/index.js +1 -1
  22. package/dist/esm/chips/chip/index.js +1 -1
  23. package/dist/esm/chips/chip-set/index.js +1 -1
  24. package/dist/esm/chips/index.js +1 -1
  25. package/dist/esm/chunks/chunk.24X566SZ.js +7 -0
  26. package/dist/esm/chunks/chunk.24X566SZ.js.map +7 -0
  27. package/dist/esm/chunks/{chunk.N24NHF7Y.js → chunk.2D4IBAWP.js} +2 -2
  28. package/dist/esm/chunks/chunk.323FEQVK.js +7 -0
  29. package/dist/esm/chunks/chunk.323FEQVK.js.map +7 -0
  30. package/dist/esm/chunks/{chunk.Y4L7AVUS.js → chunk.3G237L6C.js} +2 -2
  31. package/dist/esm/chunks/chunk.3UB364WW.js +7 -0
  32. package/dist/esm/chunks/chunk.3UB364WW.js.map +7 -0
  33. package/dist/esm/chunks/chunk.4YH3GB4D.js +12 -0
  34. package/dist/esm/chunks/{chunk.BTI5I25G.js.map → chunk.4YH3GB4D.js.map} +1 -1
  35. package/dist/esm/chunks/{chunk.HPJ4AQIE.js → chunk.54RF4ZT6.js} +2 -2
  36. package/dist/esm/chunks/{chunk.ALJ3FDXL.js → chunk.5DKXUTFN.js} +2 -2
  37. package/dist/esm/chunks/{chunk.ALJ3FDXL.js.map → chunk.5DKXUTFN.js.map} +1 -1
  38. package/dist/esm/chunks/{chunk.5TVWDATE.js → chunk.5W5IPKAU.js} +2 -2
  39. package/dist/esm/chunks/{chunk.PBJEZJTY.js → chunk.65G33MJV.js} +2 -2
  40. package/dist/esm/chunks/{chunk.TLS4ALGU.js → chunk.6NBVXSNZ.js} +2 -2
  41. package/dist/esm/chunks/{chunk.Z4MN5NB5.js → chunk.73O3BMP2.js} +2 -2
  42. package/dist/esm/chunks/{chunk.WEUNLYMQ.js → chunk.7LBAA7TC.js} +2 -2
  43. package/dist/esm/chunks/chunk.AGEBZY4S.js +7 -0
  44. package/dist/esm/chunks/chunk.AGEBZY4S.js.map +7 -0
  45. package/dist/esm/chunks/chunk.B5HGV5EZ.js +7 -0
  46. package/dist/esm/chunks/chunk.B5HGV5EZ.js.map +7 -0
  47. package/dist/esm/chunks/chunk.C557PTJ5.js +7 -0
  48. package/dist/esm/chunks/chunk.C557PTJ5.js.map +7 -0
  49. package/dist/esm/chunks/{chunk.VW4JVRH7.js → chunk.CN7DHS4J.js} +2 -2
  50. package/dist/esm/chunks/chunk.CUT7V2KN.js +7 -0
  51. package/dist/esm/chunks/chunk.CUT7V2KN.js.map +7 -0
  52. package/dist/esm/chunks/chunk.CZIQTYFJ.js +7 -0
  53. package/dist/esm/chunks/chunk.CZIQTYFJ.js.map +7 -0
  54. package/dist/esm/chunks/{chunk.BYRJ7577.js → chunk.DRI2NLIB.js} +2 -2
  55. package/dist/esm/chunks/chunk.EE2LK23T.js +7 -0
  56. package/dist/esm/chunks/chunk.EE2LK23T.js.map +7 -0
  57. package/dist/esm/chunks/chunk.EXKBJEFL.js +7 -0
  58. package/dist/esm/chunks/{chunk.ZPBGKHHM.js.map → chunk.EXKBJEFL.js.map} +2 -2
  59. package/dist/esm/chunks/{chunk.7MVBJ37L.js → chunk.FBERE7AL.js} +2 -2
  60. package/dist/esm/chunks/{chunk.OJFI5I6O.js → chunk.FQEETXUQ.js} +2 -2
  61. package/dist/esm/chunks/{chunk.3STDLL5U.js → chunk.G5JTL66M.js} +2 -2
  62. package/dist/esm/chunks/chunk.GVZEMIA3.js +7 -0
  63. package/dist/esm/chunks/chunk.GVZEMIA3.js.map +7 -0
  64. package/dist/esm/chunks/{chunk.BCP2YATB.js → chunk.GZEWDHFJ.js} +2 -2
  65. package/dist/esm/chunks/chunk.HQJZRTOH.js +7 -0
  66. package/dist/esm/chunks/chunk.HQJZRTOH.js.map +7 -0
  67. package/dist/esm/chunks/{chunk.ZAGCOV55.js → chunk.HUX56BCR.js} +2 -2
  68. package/dist/esm/chunks/chunk.K5WLIDQK.js +7 -0
  69. package/dist/esm/chunks/chunk.K5WLIDQK.js.map +7 -0
  70. package/dist/esm/chunks/chunk.LGECRZFO.js +7 -0
  71. package/dist/esm/chunks/chunk.LGECRZFO.js.map +7 -0
  72. package/dist/esm/chunks/{chunk.MBS5VMYY.js → chunk.LYAS4FAN.js} +2 -2
  73. package/dist/esm/chunks/{chunk.MBS5VMYY.js.map → chunk.LYAS4FAN.js.map} +2 -2
  74. package/dist/esm/chunks/{chunk.YG2KLPHA.js.map → chunk.MU4FV57Q.js} +7 -7
  75. package/dist/esm/chunks/chunk.MU4FV57Q.js.map +7 -0
  76. package/dist/esm/chunks/chunk.N6QJ2RRG.js +7 -0
  77. package/dist/esm/chunks/chunk.N6QJ2RRG.js.map +7 -0
  78. package/dist/esm/chunks/{chunk.O5I3ZMDA.js → chunk.NG5EGZ5Y.js} +2 -2
  79. package/dist/esm/chunks/chunk.NXS7A7PO.js +7 -0
  80. package/dist/esm/chunks/{chunk.5BDTX7CR.js.map → chunk.NXS7A7PO.js.map} +2 -2
  81. package/dist/esm/chunks/{chunk.SLSVRMAS.js → chunk.NZTGBDRK.js} +2 -2
  82. package/dist/esm/chunks/{chunk.OLNFXF3V.js → chunk.O4LGKJY6.js} +2 -2
  83. package/dist/esm/chunks/{chunk.NV2HNCQH.js → chunk.OGZOXNGT.js} +2 -2
  84. package/dist/esm/chunks/chunk.OKIRZEUG.js +7 -0
  85. package/dist/esm/chunks/chunk.OKIRZEUG.js.map +7 -0
  86. package/dist/esm/chunks/{chunk.36VS7FMU.js → chunk.OTI6WL66.js} +2 -2
  87. package/dist/esm/chunks/chunk.P45HS252.js +7 -0
  88. package/dist/esm/chunks/chunk.P45HS252.js.map +7 -0
  89. package/dist/esm/chunks/{chunk.Y5GQ2BA7.js → chunk.P5GT5YBP.js} +2 -2
  90. package/dist/esm/chunks/chunk.P6IF3USM.js +7 -0
  91. package/dist/esm/chunks/chunk.P6IF3USM.js.map +7 -0
  92. package/dist/esm/chunks/chunk.PBL2N45I.js +7 -0
  93. package/dist/esm/chunks/chunk.PBL2N45I.js.map +7 -0
  94. package/dist/esm/chunks/{chunk.HWQEGQDD.js → chunk.PHJPLWFH.js} +2 -2
  95. package/dist/esm/chunks/chunk.PRO76W5D.js +7 -0
  96. package/dist/esm/chunks/{chunk.7TDB3VFH.js.map → chunk.PRO76W5D.js.map} +2 -2
  97. package/dist/esm/chunks/chunk.PV5MABYN.js +7 -0
  98. package/dist/esm/chunks/chunk.PV5MABYN.js.map +7 -0
  99. package/dist/esm/chunks/chunk.R2L3S3YD.js +7 -0
  100. package/dist/esm/chunks/chunk.R2L3S3YD.js.map +7 -0
  101. package/dist/esm/chunks/{chunk.QH4DLM3R.js → chunk.R4NZYUID.js} +2 -2
  102. package/dist/esm/chunks/chunk.RH2NL523.js +7 -0
  103. package/dist/esm/chunks/chunk.RH2NL523.js.map +7 -0
  104. package/dist/esm/chunks/{chunk.IMZ5PF4C.js → chunk.ROF42KJ3.js} +2 -2
  105. package/dist/esm/chunks/{chunk.B52LJRGH.js → chunk.RT4C67NK.js} +2 -2
  106. package/dist/esm/chunks/chunk.T2M2KVP7.js +29 -0
  107. package/dist/esm/chunks/chunk.T2M2KVP7.js.map +7 -0
  108. package/dist/esm/chunks/chunk.TMJBIAWC.js +7 -0
  109. package/dist/esm/chunks/chunk.TMJBIAWC.js.map +7 -0
  110. package/dist/esm/chunks/{chunk.HHJJJ73Y.js → chunk.UPFJ3PVE.js} +2 -2
  111. package/dist/esm/chunks/{chunk.HHJJJ73Y.js.map → chunk.UPFJ3PVE.js.map} +1 -1
  112. package/dist/esm/chunks/{chunk.DB2WESQC.js → chunk.XC76IHG4.js} +2 -2
  113. package/dist/esm/chunks/chunk.XCUYZZV4.js +7 -0
  114. package/dist/esm/chunks/chunk.XCUYZZV4.js.map +7 -0
  115. package/dist/esm/chunks/{chunk.YONRMJU5.js → chunk.XMI5RBZQ.js} +2 -2
  116. package/dist/esm/chunks/chunk.XMI5RBZQ.js.map +7 -0
  117. package/dist/esm/chunks/chunk.XY4N4TSH.js +7 -0
  118. package/dist/esm/chunks/chunk.XY4N4TSH.js.map +7 -0
  119. package/dist/esm/chunks/{chunk.N46G56GG.js → chunk.YKXCORJE.js} +2 -2
  120. package/dist/esm/chunks/{chunk.2ZQ3ZDPN.js → chunk.YPMN5U7C.js} +2 -2
  121. package/dist/esm/chunks/{chunk.X5JLUP7O.js → chunk.YW47QJVY.js} +2 -2
  122. package/dist/esm/chunks/{chunk.JXY6MTP3.js → chunk.ZAKLVVFO.js} +2 -2
  123. package/dist/esm/chunks/{chunk.YWRCWMNO.js → chunk.ZQCHS2PS.js} +2 -2
  124. package/dist/esm/color-picker/index.js +1 -1
  125. package/dist/esm/core/index.js +1 -1
  126. package/dist/esm/core/utils/index.js +1 -1
  127. package/dist/esm/date-picker/index.js +1 -1
  128. package/dist/esm/date-range-picker/index.js +1 -1
  129. package/dist/esm/dialog/index.js +1 -1
  130. package/dist/esm/expansion-panel/index.js +1 -1
  131. package/dist/esm/file-picker/index.js +1 -1
  132. package/dist/esm/floating-action-button/index.js +1 -1
  133. package/dist/esm/icon/index.js +1 -1
  134. package/dist/esm/icon-button/index.js +1 -1
  135. package/dist/esm/index.js +1 -1
  136. package/dist/esm/linear-progress/index.js +1 -1
  137. package/dist/esm/list/index.js +1 -1
  138. package/dist/esm/list/list/index.js +1 -1
  139. package/dist/esm/list/list-item/index.js +1 -1
  140. package/dist/esm/list-dropdown/index.js +1 -1
  141. package/dist/esm/menu/index.js +1 -1
  142. package/dist/esm/open-icon/index.js +1 -1
  143. package/dist/esm/paginator/index.js +1 -1
  144. package/dist/esm/popup/index.js +1 -1
  145. package/dist/esm/profile-card/index.js +1 -1
  146. package/dist/esm/quantity-field/index.js +1 -1
  147. package/dist/esm/radio/index.js +1 -1
  148. package/dist/esm/ripple/index.js +1 -1
  149. package/dist/esm/select/core/index.js +1 -1
  150. package/dist/esm/select/index.js +1 -1
  151. package/dist/esm/select/option-group/index.js +1 -1
  152. package/dist/esm/select/select/index.js +1 -1
  153. package/dist/esm/select/select-dropdown/index.js +1 -1
  154. package/dist/esm/slider/index.js +1 -1
  155. package/dist/esm/split-view/index.js +1 -1
  156. package/dist/esm/split-view/split-view/index.js +1 -1
  157. package/dist/esm/split-view/split-view-panel/index.js +1 -1
  158. package/dist/esm/stepper/index.js +1 -1
  159. package/dist/esm/stepper/step/index.js +1 -1
  160. package/dist/esm/stepper/stepper/index.js +1 -1
  161. package/dist/esm/switch/index.js +1 -1
  162. package/dist/esm/table/index.js +1 -1
  163. package/dist/esm/tabs/index.js +1 -1
  164. package/dist/esm/tabs/tab/index.js +1 -1
  165. package/dist/esm/tabs/tab-bar/index.js +1 -1
  166. package/dist/esm/text-field/index.js +1 -1
  167. package/dist/esm/time-picker/index.js +1 -1
  168. package/dist/esm/toast/index.js +1 -1
  169. package/dist/esm/toolbar/index.js +1 -1
  170. package/esm/app-bar/notification-button/app-bar-notification-button-adapter.d.ts +3 -0
  171. package/esm/app-bar/notification-button/app-bar-notification-button-adapter.js +5 -0
  172. package/esm/app-bar/notification-button/app-bar-notification-button-constants.d.ts +1 -0
  173. package/esm/app-bar/notification-button/app-bar-notification-button-constants.js +2 -1
  174. package/esm/app-bar/notification-button/app-bar-notification-button-foundation.d.ts +4 -0
  175. package/esm/app-bar/notification-button/app-bar-notification-button-foundation.js +14 -0
  176. package/esm/app-bar/notification-button/app-bar-notification-button.d.ts +2 -0
  177. package/esm/app-bar/notification-button/app-bar-notification-button.js +9 -2
  178. package/esm/autocomplete/autocomplete-adapter.d.ts +9 -10
  179. package/esm/autocomplete/autocomplete-adapter.js +1 -1
  180. package/esm/autocomplete/autocomplete-constants.d.ts +10 -12
  181. package/esm/autocomplete/autocomplete-foundation.d.ts +6 -7
  182. package/esm/autocomplete/autocomplete-foundation.js +5 -2
  183. package/esm/autocomplete/autocomplete-utils.d.ts +4 -5
  184. package/esm/autocomplete/autocomplete.d.ts +3 -4
  185. package/esm/autocomplete/autocomplete.js +2 -2
  186. package/esm/button/button-constants.d.ts +1 -0
  187. package/esm/button/button-constants.js +2 -1
  188. package/esm/button/button.d.ts +1 -1
  189. package/esm/button/button.js +6 -7
  190. package/esm/calendar/calendar-foundation.js +1 -0
  191. package/esm/checkbox/checkbox-adapter.d.ts +1 -2
  192. package/esm/checkbox/checkbox-adapter.js +12 -8
  193. package/esm/checkbox/checkbox-foundation.js +0 -3
  194. package/esm/chip-field/chip-field-adapter.d.ts +2 -0
  195. package/esm/chip-field/chip-field-adapter.js +8 -3
  196. package/esm/chip-field/chip-field-foundation.js +1 -0
  197. package/esm/chip-field/chip-field.js +1 -1
  198. package/esm/color-picker/color-picker-foundation.d.ts +1 -0
  199. package/esm/color-picker/color-picker-foundation.js +19 -8
  200. package/esm/core/utils/date-utils.js +2 -2
  201. package/esm/core/utils/utils.d.ts +0 -6
  202. package/esm/core/utils/utils.js +0 -10
  203. package/esm/date-picker/base/base-date-picker-foundation.js +2 -1
  204. package/esm/date-picker/base/base-date-picker.d.ts +2 -2
  205. package/esm/date-range-picker/date-range-picker-foundation.d.ts +2 -2
  206. package/esm/date-range-picker/date-range-picker-foundation.js +1 -1
  207. package/esm/dialog/dialog-adapter.d.ts +0 -2
  208. package/esm/dialog/dialog-adapter.js +1 -10
  209. package/esm/dialog/dialog-foundation.js +0 -1
  210. package/esm/file-picker/file-picker-adapter.js +3 -2
  211. package/esm/file-picker/file-picker-foundation.d.ts +2 -0
  212. package/esm/file-picker/file-picker-foundation.js +15 -38
  213. package/esm/file-picker/file-picker.d.ts +1 -0
  214. package/esm/file-picker/file-picker.js +3 -0
  215. package/esm/floating-action-button/floating-action-button-constants.js +1 -1
  216. package/esm/icon-button/icon-button-constants.js +1 -1
  217. package/esm/icon-button/icon-button.d.ts +1 -1
  218. package/esm/icon-button/icon-button.js +6 -6
  219. package/esm/linear-progress/linear-progress.js +1 -1
  220. package/esm/list/list-item/list-item-foundation.js +1 -2
  221. package/esm/list/list-item/list-item.js +1 -1
  222. package/esm/list-dropdown/cascading-list-dropdown-aware-foundation.d.ts +5 -2
  223. package/esm/list-dropdown/cascading-list-dropdown-aware-foundation.js +3 -1
  224. package/esm/list-dropdown/list-dropdown-aware-foundation.d.ts +8 -0
  225. package/esm/list-dropdown/list-dropdown-aware-foundation.js +14 -0
  226. package/esm/list-dropdown/list-dropdown-aware.d.ts +11 -2
  227. package/esm/list-dropdown/list-dropdown-aware.js +12 -0
  228. package/esm/list-dropdown/list-dropdown-constants.d.ts +9 -3
  229. package/esm/list-dropdown/list-dropdown-constants.js +2 -0
  230. package/esm/list-dropdown/list-dropdown-foundation.js +2 -6
  231. package/esm/list-dropdown/list-dropdown-utils.d.ts +1 -0
  232. package/esm/list-dropdown/list-dropdown-utils.js +39 -17
  233. package/esm/menu/menu-adapter.d.ts +2 -0
  234. package/esm/menu/menu-adapter.js +7 -0
  235. package/esm/menu/menu-constants.js +1 -1
  236. package/esm/menu/menu-foundation.d.ts +12 -3
  237. package/esm/menu/menu-foundation.js +28 -17
  238. package/esm/menu/menu.d.ts +6 -1
  239. package/esm/menu/menu.js +9 -3
  240. package/esm/popup/popup-adapter.js +9 -1
  241. package/esm/popup/popup-constants.d.ts +1 -0
  242. package/esm/popup/popup-constants.js +2 -1
  243. package/esm/popup/popup-foundation.d.ts +4 -0
  244. package/esm/popup/popup-foundation.js +7 -0
  245. package/esm/popup/popup.d.ts +2 -0
  246. package/esm/popup/popup.js +4 -1
  247. package/esm/quantity-field/quantity-field-adapter.d.ts +2 -0
  248. package/esm/quantity-field/quantity-field-adapter.js +8 -0
  249. package/esm/quantity-field/quantity-field-foundation.js +1 -0
  250. package/esm/quantity-field/quantity-field.js +6 -0
  251. package/esm/radio/radio-adapter.d.ts +3 -3
  252. package/esm/radio/radio-adapter.js +17 -15
  253. package/esm/radio/radio-foundation.js +1 -1
  254. package/esm/ripple/forge-ripple.d.ts +1 -0
  255. package/esm/ripple/forge-ripple.js +3 -0
  256. package/esm/ripple/ripple-constants.d.ts +1 -0
  257. package/esm/ripple/ripple-constants.js +2 -1
  258. package/esm/ripple/ripple-foundation.d.ts +4 -0
  259. package/esm/ripple/ripple-foundation.js +10 -0
  260. package/esm/ripple/ripple.d.ts +2 -0
  261. package/esm/ripple/ripple.js +8 -1
  262. package/esm/select/core/base-select-adapter.js +8 -6
  263. package/esm/select/core/base-select-constants.d.ts +2 -0
  264. package/esm/select/core/base-select-constants.js +3 -1
  265. package/esm/select/core/base-select-foundation.d.ts +0 -9
  266. package/esm/select/core/base-select-foundation.js +5 -26
  267. package/esm/select/core/select-utils.js +1 -1
  268. package/esm/select/option-group/option-group.d.ts +12 -1
  269. package/esm/select/option-group/option-group.js +7 -0
  270. package/esm/select/select/select.js +5 -3
  271. package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
  272. package/esm/switch/switch.js +37 -12
  273. package/esm/table/table-foundation.d.ts +7 -0
  274. package/esm/table/table-foundation.js +9 -0
  275. package/esm/table/table-utils.js +6 -3
  276. package/esm/table/table.d.ts +7 -0
  277. package/esm/table/table.js +8 -0
  278. package/esm/table/types.d.ts +8 -4
  279. package/esm/text-field/text-field.js +1 -1
  280. package/esm/time-picker/time-picker-foundation.js +1 -0
  281. package/esm/toolbar/toolbar.js +2 -2
  282. package/package.json +30 -3
  283. package/styles/chip-field/_selector.scss +12 -13
  284. package/styles/chip-field/chip-field.scss +1 -1
  285. package/styles/field/_base.scss +2 -2
  286. package/styles/field/_selector.scss +1 -1
  287. package/styles/list/list-item/_mixins.scss +28 -17
  288. package/styles/list/list-item/_variables.scss +13 -4
  289. package/styles/popup/popup.scss +4 -0
  290. package/styles/toolbar/_mixins.scss +1 -2
  291. package/styles/toolbar/toolbar.scss +13 -0
  292. package/dist/esm/chunks/chunk.3MP6OFVU.js +0 -7
  293. package/dist/esm/chunks/chunk.3MP6OFVU.js.map +0 -7
  294. package/dist/esm/chunks/chunk.4K3IV4GI.js +0 -7
  295. package/dist/esm/chunks/chunk.4K3IV4GI.js.map +0 -7
  296. package/dist/esm/chunks/chunk.5BDTX7CR.js +0 -7
  297. package/dist/esm/chunks/chunk.6LXDG4W5.js +0 -7
  298. package/dist/esm/chunks/chunk.6LXDG4W5.js.map +0 -7
  299. package/dist/esm/chunks/chunk.7R6TYPPS.js +0 -7
  300. package/dist/esm/chunks/chunk.7R6TYPPS.js.map +0 -7
  301. package/dist/esm/chunks/chunk.7TDB3VFH.js +0 -7
  302. package/dist/esm/chunks/chunk.BCD4AAI2.js +0 -7
  303. package/dist/esm/chunks/chunk.BCD4AAI2.js.map +0 -7
  304. package/dist/esm/chunks/chunk.BTI5I25G.js +0 -12
  305. package/dist/esm/chunks/chunk.DLAIQJHL.js +0 -7
  306. package/dist/esm/chunks/chunk.DLAIQJHL.js.map +0 -7
  307. package/dist/esm/chunks/chunk.DURRORXO.js +0 -29
  308. package/dist/esm/chunks/chunk.DURRORXO.js.map +0 -7
  309. package/dist/esm/chunks/chunk.EDU7RQD7.js +0 -7
  310. package/dist/esm/chunks/chunk.EDU7RQD7.js.map +0 -7
  311. package/dist/esm/chunks/chunk.ETIN6DEM.js +0 -7
  312. package/dist/esm/chunks/chunk.ETIN6DEM.js.map +0 -7
  313. package/dist/esm/chunks/chunk.F2GXZPID.js +0 -7
  314. package/dist/esm/chunks/chunk.F2GXZPID.js.map +0 -7
  315. package/dist/esm/chunks/chunk.F3Q62EMG.js +0 -7
  316. package/dist/esm/chunks/chunk.F3Q62EMG.js.map +0 -7
  317. package/dist/esm/chunks/chunk.GEMZPO6Z.js +0 -7
  318. package/dist/esm/chunks/chunk.GEMZPO6Z.js.map +0 -7
  319. package/dist/esm/chunks/chunk.JMXJXZTS.js +0 -7
  320. package/dist/esm/chunks/chunk.JMXJXZTS.js.map +0 -7
  321. package/dist/esm/chunks/chunk.M4KJNCLO.js +0 -7
  322. package/dist/esm/chunks/chunk.M4KJNCLO.js.map +0 -7
  323. package/dist/esm/chunks/chunk.MBWEYW6M.js +0 -7
  324. package/dist/esm/chunks/chunk.MBWEYW6M.js.map +0 -7
  325. package/dist/esm/chunks/chunk.O2R6MBT5.js +0 -7
  326. package/dist/esm/chunks/chunk.O2R6MBT5.js.map +0 -7
  327. package/dist/esm/chunks/chunk.ON6FJ2D6.js +0 -7
  328. package/dist/esm/chunks/chunk.ON6FJ2D6.js.map +0 -7
  329. package/dist/esm/chunks/chunk.PCSCKTFS.js +0 -7
  330. package/dist/esm/chunks/chunk.PCSCKTFS.js.map +0 -7
  331. package/dist/esm/chunks/chunk.Q3RRONZQ.js +0 -7
  332. package/dist/esm/chunks/chunk.Q3RRONZQ.js.map +0 -7
  333. package/dist/esm/chunks/chunk.QIJHHDYF.js +0 -7
  334. package/dist/esm/chunks/chunk.QIJHHDYF.js.map +0 -7
  335. package/dist/esm/chunks/chunk.QMRLSOAB.js +0 -7
  336. package/dist/esm/chunks/chunk.QMRLSOAB.js.map +0 -7
  337. package/dist/esm/chunks/chunk.UOWU5VVK.js +0 -7
  338. package/dist/esm/chunks/chunk.UOWU5VVK.js.map +0 -7
  339. package/dist/esm/chunks/chunk.WOHCW6KW.js +0 -7
  340. package/dist/esm/chunks/chunk.WOHCW6KW.js.map +0 -7
  341. package/dist/esm/chunks/chunk.WU24GAQY.js +0 -7
  342. package/dist/esm/chunks/chunk.WU24GAQY.js.map +0 -7
  343. package/dist/esm/chunks/chunk.XSZ4S77A.js +0 -7
  344. package/dist/esm/chunks/chunk.XSZ4S77A.js.map +0 -7
  345. package/dist/esm/chunks/chunk.YG2KLPHA.js +0 -7
  346. package/dist/esm/chunks/chunk.YONRMJU5.js.map +0 -7
  347. package/dist/esm/chunks/chunk.ZPBGKHHM.js +0 -7
  348. /package/dist/esm/chunks/{chunk.N24NHF7Y.js.map → chunk.2D4IBAWP.js.map} +0 -0
  349. /package/dist/esm/chunks/{chunk.Y4L7AVUS.js.map → chunk.3G237L6C.js.map} +0 -0
  350. /package/dist/esm/chunks/{chunk.HPJ4AQIE.js.map → chunk.54RF4ZT6.js.map} +0 -0
  351. /package/dist/esm/chunks/{chunk.5TVWDATE.js.map → chunk.5W5IPKAU.js.map} +0 -0
  352. /package/dist/esm/chunks/{chunk.PBJEZJTY.js.map → chunk.65G33MJV.js.map} +0 -0
  353. /package/dist/esm/chunks/{chunk.TLS4ALGU.js.map → chunk.6NBVXSNZ.js.map} +0 -0
  354. /package/dist/esm/chunks/{chunk.Z4MN5NB5.js.map → chunk.73O3BMP2.js.map} +0 -0
  355. /package/dist/esm/chunks/{chunk.WEUNLYMQ.js.map → chunk.7LBAA7TC.js.map} +0 -0
  356. /package/dist/esm/chunks/{chunk.VW4JVRH7.js.map → chunk.CN7DHS4J.js.map} +0 -0
  357. /package/dist/esm/chunks/{chunk.BYRJ7577.js.map → chunk.DRI2NLIB.js.map} +0 -0
  358. /package/dist/esm/chunks/{chunk.7MVBJ37L.js.map → chunk.FBERE7AL.js.map} +0 -0
  359. /package/dist/esm/chunks/{chunk.OJFI5I6O.js.map → chunk.FQEETXUQ.js.map} +0 -0
  360. /package/dist/esm/chunks/{chunk.3STDLL5U.js.map → chunk.G5JTL66M.js.map} +0 -0
  361. /package/dist/esm/chunks/{chunk.BCP2YATB.js.map → chunk.GZEWDHFJ.js.map} +0 -0
  362. /package/dist/esm/chunks/{chunk.ZAGCOV55.js.map → chunk.HUX56BCR.js.map} +0 -0
  363. /package/dist/esm/chunks/{chunk.O5I3ZMDA.js.map → chunk.NG5EGZ5Y.js.map} +0 -0
  364. /package/dist/esm/chunks/{chunk.SLSVRMAS.js.map → chunk.NZTGBDRK.js.map} +0 -0
  365. /package/dist/esm/chunks/{chunk.OLNFXF3V.js.map → chunk.O4LGKJY6.js.map} +0 -0
  366. /package/dist/esm/chunks/{chunk.NV2HNCQH.js.map → chunk.OGZOXNGT.js.map} +0 -0
  367. /package/dist/esm/chunks/{chunk.36VS7FMU.js.map → chunk.OTI6WL66.js.map} +0 -0
  368. /package/dist/esm/chunks/{chunk.Y5GQ2BA7.js.map → chunk.P5GT5YBP.js.map} +0 -0
  369. /package/dist/esm/chunks/{chunk.HWQEGQDD.js.map → chunk.PHJPLWFH.js.map} +0 -0
  370. /package/dist/esm/chunks/{chunk.QH4DLM3R.js.map → chunk.R4NZYUID.js.map} +0 -0
  371. /package/dist/esm/chunks/{chunk.IMZ5PF4C.js.map → chunk.ROF42KJ3.js.map} +0 -0
  372. /package/dist/esm/chunks/{chunk.B52LJRGH.js.map → chunk.RT4C67NK.js.map} +0 -0
  373. /package/dist/esm/chunks/{chunk.DB2WESQC.js.map → chunk.XC76IHG4.js.map} +0 -0
  374. /package/dist/esm/chunks/{chunk.N46G56GG.js.map → chunk.YKXCORJE.js.map} +0 -0
  375. /package/dist/esm/chunks/{chunk.2ZQ3ZDPN.js.map → chunk.YPMN5U7C.js.map} +0 -0
  376. /package/dist/esm/chunks/{chunk.X5JLUP7O.js.map → chunk.YW47QJVY.js.map} +0 -0
  377. /package/dist/esm/chunks/{chunk.JXY6MTP3.js.map → chunk.ZAKLVVFO.js.map} +0 -0
  378. /package/dist/esm/chunks/{chunk.YWRCWMNO.js.map → chunk.ZQCHS2PS.js.map} +0 -0
@@ -16,6 +16,7 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
16
16
  });
17
17
  this._adapter = _adapter;
18
18
  this._placement = 'bottom-start';
19
+ this._fallbackPlacements = [];
19
20
  this._dense = false;
20
21
  this._iconClass = ICON_CLASS_NAME;
21
22
  this._persistSelection = false;
@@ -38,6 +39,9 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
38
39
  }
39
40
  this._destroyInteractionListeners();
40
41
  }
42
+ activateFirstOption() {
43
+ this._adapter.activateFirstOption();
44
+ }
41
45
  _applyMode() {
42
46
  if (!this._adapter.hasTargetElement()) {
43
47
  return;
@@ -55,14 +59,14 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
55
59
  }
56
60
  this._applyMode();
57
61
  this._adapter.addTargetListener('keydown', this._keydownListener, true);
58
- this._adapter.addTargetListener('blur', this._blurListener);
62
+ this._adapter.addTargetListener('focusout', this._blurListener);
59
63
  }
60
64
  _destroyInteractionListeners() {
61
65
  if (!this._adapter.hasTargetElement()) {
62
66
  return;
63
67
  }
64
68
  this._adapter.removeTargetListener('keydown', this._clickListener);
65
- this._adapter.removeTargetListener('blur', this._blurListener);
69
+ this._adapter.removeTargetListener('focusout', this._blurListener);
66
70
  this._adapter.removeTargetListener('click', this._clickListener);
67
71
  this._detachCascadingListeners();
68
72
  }
@@ -113,13 +117,6 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
113
117
  onKeydown(evt) {
114
118
  // If we have any child menus open, we need to proxy the keyboard events to those and exit
115
119
  if (this._childOpen) {
116
- // If escape is pressed while other menus are open then we need to close everything
117
- if (evt.code === 'Escape') {
118
- evt.preventDefault();
119
- this._adapter.closeOtherChildMenus();
120
- this._closeDropdown();
121
- return;
122
- }
123
120
  this._adapter.proxyKeyboardEventToChild(evt, this._identifier);
124
121
  return;
125
122
  }
@@ -132,6 +129,7 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
132
129
  case 'Escape':
133
130
  if (this._open) {
134
131
  evt.preventDefault();
132
+ evt.stopPropagation();
135
133
  this._closeDropdown();
136
134
  }
137
135
  break;
@@ -141,7 +139,7 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
141
139
  this._closeDropdown();
142
140
  }
143
141
  else {
144
- this._openDropdown();
142
+ this._openDropdown({ fromKeyboard: true });
145
143
  }
146
144
  break;
147
145
  case 'Home':
@@ -152,11 +150,13 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
152
150
  }
153
151
  break;
154
152
  case 'Enter':
153
+ evt.preventDefault();
155
154
  if (!this._open) {
155
+ evt.preventDefault();
156
+ this._openDropdown({ fromKeyboard: true });
156
157
  return;
157
158
  }
158
159
  evt.stopImmediatePropagation();
159
- evt.preventDefault();
160
160
  this._adapter.propagateKey(evt.code);
161
161
  // Check if we need to toggle the child menu open state
162
162
  const activeIndex = this._adapter.getActiveOptionIndex();
@@ -172,7 +172,7 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
172
172
  }
173
173
  evt.preventDefault();
174
174
  if (!this._open && evt.code === 'ArrowDown') {
175
- this._openDropdown();
175
+ this._openDropdown({ fromKeyboard: true });
176
176
  this._adapter.activateFirstOption();
177
177
  return;
178
178
  }
@@ -202,7 +202,7 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
202
202
  break;
203
203
  }
204
204
  }
205
- async _openMenu() {
205
+ async _openMenu({ fromKeyboard } = {}) {
206
206
  this._open = true;
207
207
  let options = [];
208
208
  if (typeof this._optionsFactory === 'function') {
@@ -238,7 +238,8 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
238
238
  observeScroll: this._observeScroll,
239
239
  observeScrollThreshold: this._observeScrollThreshold,
240
240
  popupPlacement: this._placement,
241
- activeStartIndex: this._mode === 'cascade' ? 0 : undefined,
241
+ popupFallbackPlacements: this._fallbackPlacements,
242
+ activeStartIndex: fromKeyboard ? 0 : undefined,
242
243
  popupClasses: [
243
244
  MENU_CONSTANTS.classes.POPUP,
244
245
  MENU_CONSTANTS.classes.MENU,
@@ -355,14 +356,17 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
355
356
  this._adapter.setActiveOption(index);
356
357
  }
357
358
  /** Called when a child menu is closed off of one of our menu options. */
358
- _onCascadingChildClose() {
359
+ _onCascadingChildClose(index) {
359
360
  this._childOpen = false;
360
361
  }
361
362
  _closeDropdown() {
362
363
  this._closeMenu();
363
364
  }
364
- _openDropdown() {
365
- this._openMenu();
365
+ _openDropdown({ fromKeyboard } = {}) {
366
+ this._openMenu({ fromKeyboard });
367
+ }
368
+ _setCascadeTargetInactive() {
369
+ this._adapter.setCascadeTargetInactive();
366
370
  }
367
371
  _isOwnElement(element) {
368
372
  return this._adapter.isOwnElement(element);
@@ -373,6 +377,7 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
373
377
  menu.popupOffset = { x: 0, y: -8 };
374
378
  menu.dense = this._dense;
375
379
  menu.placement = 'right-start';
380
+ menu.fallbackPlacements = ['left-start', 'right-start']; // Cascading menus should only fallback to left or right placement if needed
376
381
  menu.persistSelection = this._persistSelection;
377
382
  if (this._persistSelection) {
378
383
  menu.selectedValue = this._selectedValue;
@@ -462,6 +467,12 @@ export class MenuFoundation extends CascadingListDropdownAwareFoundation {
462
467
  this._adapter.setHostAttribute(MENU_CONSTANTS.attributes.PLACEMENT, this._placement);
463
468
  }
464
469
  }
470
+ get fallbackPlacements() {
471
+ return this._fallbackPlacements;
472
+ }
473
+ set fallbackPlacements(value) {
474
+ this._fallbackPlacements = Array.isArray(value) ? value : [];
475
+ }
465
476
  get dense() {
466
477
  return this._dense;
467
478
  }
@@ -12,6 +12,7 @@ export interface IMenuComponent extends IListDropdownAware {
12
12
  selectedIndex: number;
13
13
  selectedValue: number;
14
14
  placement: PopupPlacement;
15
+ fallbackPlacements: PopupPlacement[];
15
16
  dense: boolean;
16
17
  iconClass: string;
17
18
  persistSelection: boolean;
@@ -20,6 +21,7 @@ export interface IMenuComponent extends IListDropdownAware {
20
21
  optionBuilder: MenuOptionBuilder | undefined;
21
22
  popupElement: HTMLElement | undefined;
22
23
  propagateKeyEvent(evt: KeyboardEvent): void;
24
+ activateFirstOption(): void;
23
25
  }
24
26
  declare global {
25
27
  interface HTMLElementTagNameMap {
@@ -54,6 +56,8 @@ export declare class MenuComponent extends ListDropdownAware implements IMenuCom
54
56
  selectedValue: any;
55
57
  /** Gets/sets the menu placement (default is bottom-left). */
56
58
  placement: `${PopupPlacement}`;
59
+ /** Gets/sets the fallback menu placement for overriding the default of any side. */
60
+ fallbackPlacements: `${PopupPlacement}`[];
57
61
  /** Gets/sets dense state of the list options used in the menu popup. */
58
62
  dense: boolean;
59
63
  /** Gets/sets the class name to use for option icons. */
@@ -65,7 +69,7 @@ export declare class MenuComponent extends ListDropdownAware implements IMenuCom
65
69
  persistSelection: boolean;
66
70
  /** Gets/sets the mode that this menu is using. */
67
71
  mode: MenuMode;
68
- /** Sets the position adustment on the internal popup element. */
72
+ /** Sets the position adjustment on the internal popup element. */
69
73
  popupOffset: IPopupPosition;
70
74
  /** Sets the callback that will be executed for each option in the dropdown for producing custom option templates. */
71
75
  optionBuilder: MenuOptionBuilder;
@@ -73,4 +77,5 @@ export declare class MenuComponent extends ListDropdownAware implements IMenuCom
73
77
  popupElement: HTMLElement | undefined;
74
78
  /** Force propagates the key event from another element this component. */
75
79
  propagateKeyEvent(evt: KeyboardEvent): void;
80
+ activateFirstOption(): void;
76
81
  }
package/esm/menu/menu.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * License: Apache-2.0
5
5
  */
6
6
  import { __decorate } from "tslib";
7
- import { attachShadowTemplate, coerceBoolean, CustomElement, ensureChildren, FoundationProperty, isDefined } from '@tylertech/forge-core';
7
+ import { attachShadowTemplate, coerceBoolean, CustomElement, ensureChild, FoundationProperty, isDefined } from '@tylertech/forge-core';
8
8
  import { tylIconArrowRight } from '@tylertech/tyler-icons/standard';
9
9
  import { CircularProgressComponent } from '../circular-progress';
10
10
  import { IconRegistry } from '../icon';
@@ -47,11 +47,11 @@ let MenuComponent = class MenuComponent extends ListDropdownAware {
47
47
  ];
48
48
  }
49
49
  connectedCallback() {
50
- if (this.children.length) {
50
+ if (this.querySelector(MENU_CONSTANTS.selectors.TOGGLE)) {
51
51
  this._foundation.initialize();
52
52
  }
53
53
  else {
54
- ensureChildren(this).then(() => this._foundation.initialize());
54
+ ensureChild(this, MENU_CONSTANTS.selectors.TOGGLE).then(() => this._foundation.initialize());
55
55
  }
56
56
  }
57
57
  attributeChangedCallback(name, oldValue, newValue) {
@@ -90,6 +90,9 @@ let MenuComponent = class MenuComponent extends ListDropdownAware {
90
90
  propagateKeyEvent(evt) {
91
91
  this._foundation.onKeydown(evt);
92
92
  }
93
+ activateFirstOption() {
94
+ this._foundation.activateFirstOption();
95
+ }
93
96
  };
94
97
  __decorate([
95
98
  FoundationProperty()
@@ -106,6 +109,9 @@ __decorate([
106
109
  __decorate([
107
110
  FoundationProperty()
108
111
  ], MenuComponent.prototype, "placement", void 0);
112
+ __decorate([
113
+ FoundationProperty()
114
+ ], MenuComponent.prototype, "fallbackPlacements", void 0);
109
115
  __decorate([
110
116
  FoundationProperty()
111
117
  ], MenuComponent.prototype, "dense", void 0);
@@ -32,8 +32,16 @@ export class PopupAdapter extends BaseAdapter {
32
32
  element: this._component,
33
33
  targetElement: this._component.targetElement,
34
34
  placement: this._component.placement,
35
- hide: this._component.hideWhenClipped
35
+ hide: this._component.hideWhenClipped,
36
+ flipOptions: {
37
+ fallbackPlacements: ['top-start', 'top', 'top-end', 'left-start', 'left', 'left-end', 'right-start', 'right', 'right-end'],
38
+ fallbackStrategy: 'initialPlacement'
39
+ }
36
40
  };
41
+ const fallbackPlacements = this._component.fallbackPlacements;
42
+ if (fallbackPlacements === null || fallbackPlacements === void 0 ? void 0 : fallbackPlacements.length) {
43
+ config.flipOptions = Object.assign(Object.assign({}, config.flipOptions), { fallbackPlacements });
44
+ }
37
45
  if (this._component.offset) {
38
46
  config.offset = this._component.offset;
39
47
  }
@@ -27,6 +27,7 @@ export declare const POPUP_CONSTANTS: {
27
27
  HIDE_WHEN_CLIPPED: string;
28
28
  HOST: string;
29
29
  INITIAL_FOCUS: string;
30
+ CONSTRAIN_VIEWPORT_WIDTH: string;
30
31
  };
31
32
  events: {
32
33
  OPEN: string;
@@ -14,7 +14,8 @@ const attributes = {
14
14
  STATIC: 'static',
15
15
  HIDE_WHEN_CLIPPED: 'hide-when-clipped',
16
16
  HOST: 'forge-popup-host',
17
- INITIAL_FOCUS: 'forge-popup-focus'
17
+ INITIAL_FOCUS: 'forge-popup-focus',
18
+ CONSTRAIN_VIEWPORT_WIDTH: 'constrain-viewport-width'
18
19
  };
19
20
  const classes = {
20
21
  OPEN: 'forge-popup--open',
@@ -9,6 +9,7 @@ import { IPopupPosition, PopupAnimationType, PopupPlacement, PopupStateCallback
9
9
  export interface IPopupFoundation extends ICustomElementFoundation {
10
10
  targetElement: HTMLElement;
11
11
  placement: PopupPlacement;
12
+ fallbackPlacements: PopupPlacement[];
12
13
  open: boolean;
13
14
  manageFocus: boolean;
14
15
  animationType: PopupAnimationType;
@@ -23,6 +24,7 @@ export declare class PopupFoundation implements IPopupFoundation {
23
24
  private _adapter;
24
25
  private _targetElement;
25
26
  private _placement;
27
+ private _fallbackPlacements;
26
28
  private _open;
27
29
  private _manageFocus;
28
30
  private _animationType;
@@ -48,6 +50,8 @@ export declare class PopupFoundation implements IPopupFoundation {
48
50
  set targetElement(element: HTMLElement);
49
51
  get placement(): PopupPlacement;
50
52
  set placement(value: PopupPlacement);
53
+ get fallbackPlacements(): PopupPlacement[];
54
+ set fallbackPlacements(value: PopupPlacement[]);
51
55
  get open(): boolean;
52
56
  set open(value: boolean);
53
57
  get manageFocus(): boolean;
@@ -9,6 +9,7 @@ export class PopupFoundation {
9
9
  constructor(_adapter) {
10
10
  this._adapter = _adapter;
11
11
  this._placement = 'bottom-start';
12
+ this._fallbackPlacements = [];
12
13
  this._open = false;
13
14
  this._manageFocus = false;
14
15
  this._animationType = PopupAnimationType.None;
@@ -166,6 +167,12 @@ export class PopupFoundation {
166
167
  this._adapter.setAttribute(POPUP_CONSTANTS.attributes.PLACEMENT, this._placement);
167
168
  }
168
169
  }
170
+ get fallbackPlacements() {
171
+ return this._fallbackPlacements;
172
+ }
173
+ set fallbackPlacements(value) {
174
+ this._fallbackPlacements = Array.isArray(value) ? value : [];
175
+ }
169
176
  get open() {
170
177
  return this._open;
171
178
  }
@@ -8,6 +8,7 @@ import { IPopupPosition, IPopupPositionEventData, PopupAnimationType, PopupPlace
8
8
  export interface IPopupComponent extends IBaseComponent {
9
9
  targetElement: HTMLElement;
10
10
  placement: PopupPlacement;
11
+ fallbackPlacements: PopupPlacement[];
11
12
  open: boolean;
12
13
  manageFocus: boolean;
13
14
  animationType: `${PopupAnimationType}`;
@@ -42,6 +43,7 @@ export declare class PopupComponent extends BaseComponent implements IPopupCompo
42
43
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
43
44
  targetElement: HTMLElement;
44
45
  placement: `${PopupPlacement}`;
46
+ fallbackPlacements: `${PopupPlacement}`[];
45
47
  open: boolean;
46
48
  manageFocus: boolean;
47
49
  animationType: `${PopupAnimationType}`;
@@ -10,7 +10,7 @@ import { PopupAdapter } from './popup-adapter';
10
10
  import { POPUP_CONSTANTS } from './popup-constants';
11
11
  import { PopupFoundation } from './popup-foundation';
12
12
  const template = '<template><div class=\"forge-popup\" part=\"root\"><slot></slot></div></template>';
13
- const styles = '.forge-popup{min-width:112px;min-width:var(--min-width,112px);background-color:#fff;background-color:var(--forge-theme-elevated-surface,#fff);-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);-webkit-box-shadow:var(--forge-theme-popup-elevation,0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12));box-shadow:var(--forge-theme-popup-elevation,0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12));color:#000;color:var(--mdc-theme-on-surface,#000);border-radius:4px;border-radius:var(--mdc-shape-medium,4px);display:none;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:100%;margin:0;padding:0;-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 24px 0;transform-origin:50% 24px 0;opacity:0;will-change:transform,opacity;-webkit-transition:opacity 120ms linear,-webkit-transform 120ms cubic-bezier(0, 0, .2, 1);transition:opacity 120ms linear,-webkit-transform 120ms cubic-bezier(0, 0, .2, 1);transition:opacity 120ms linear,transform 120ms cubic-bezier(0, 0, .2, 1);transition:opacity 120ms linear,transform 120ms cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms cubic-bezier(0, 0, .2, 1)}.forge-popup::-webkit-scrollbar{width:16px;width:var(--forge-scrollbar-width,16px);height:16px;height:var(--forge-scrollbar-height,16px)}.forge-popup::-webkit-scrollbar-corner{background-color:#f0f0f0;background-color:var(--forge-theme-scrollbar-track,#f0f0f0)}.forge-popup::-webkit-scrollbar-track{background-color:#f0f0f0;background-color:var(--forge-theme-scrollbar-track,#f0f0f0)}.forge-popup::-webkit-scrollbar-track:hover{background-color:#ececec;background-color:var(--forge-theme-scrollbar-track-hover,#ececec)}.forge-popup::-webkit-scrollbar-thumb{background-color:#bdbdbd;background-color:var(--forge-theme-scrollbar-thumb,#bdbdbd);height:32px;height:var(--forge-scrollbar-min-height,32px);width:32px;width:var(--forge-scrollbar-min-width,32px);border-radius:10px;border-radius:var(--forge-scrollbar-border-radius,10px);border-width:3px;border-width:var(--forge-scrollbar-border-width,3px);border-style:solid;border-color:transparent;background-clip:content-box}.forge-popup::-webkit-scrollbar-thumb:hover{background-color:#9e9e9e;background-color:var(--forge-theme-scrollbar-thumb-hover,#9e9e9e)}.forge-popup--opening{display:block;-webkit-transform:scale(.8);transform:scale(.8);opacity:0}.forge-popup--closed{display:block;opacity:0;-webkit-transition:opacity 120ms linear;transition:opacity 120ms linear}.forge-popup--open{display:block;-webkit-transform:scale(1);transform:scale(1);opacity:1}.forge-popup--select{border-top-left-radius:0;border-top-right-radius:0;max-height:256px;overflow-y:auto}:host{z-index:10;z-index:var(--forge-z-index-popup,10);border-radius:4px;border-radius:var(--mdc-shape-medium,4px);display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;position:absolute;overflow:visible}:host([hidden]){display:none}';
13
+ const styles = '.forge-popup{min-width:112px;min-width:var(--min-width,112px);background-color:#fff;background-color:var(--forge-theme-elevated-surface,#fff);-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);-webkit-box-shadow:var(--forge-theme-popup-elevation,0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12));box-shadow:var(--forge-theme-popup-elevation,0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12));color:#000;color:var(--mdc-theme-on-surface,#000);border-radius:4px;border-radius:var(--mdc-shape-medium,4px);display:none;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:100%;margin:0;padding:0;-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 24px 0;transform-origin:50% 24px 0;opacity:0;will-change:transform,opacity;-webkit-transition:opacity 120ms linear,-webkit-transform 120ms cubic-bezier(0, 0, .2, 1);transition:opacity 120ms linear,-webkit-transform 120ms cubic-bezier(0, 0, .2, 1);transition:opacity 120ms linear,transform 120ms cubic-bezier(0, 0, .2, 1);transition:opacity 120ms linear,transform 120ms cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms cubic-bezier(0, 0, .2, 1)}.forge-popup::-webkit-scrollbar{width:16px;width:var(--forge-scrollbar-width,16px);height:16px;height:var(--forge-scrollbar-height,16px)}.forge-popup::-webkit-scrollbar-corner{background-color:#f0f0f0;background-color:var(--forge-theme-scrollbar-track,#f0f0f0)}.forge-popup::-webkit-scrollbar-track{background-color:#f0f0f0;background-color:var(--forge-theme-scrollbar-track,#f0f0f0)}.forge-popup::-webkit-scrollbar-track:hover{background-color:#ececec;background-color:var(--forge-theme-scrollbar-track-hover,#ececec)}.forge-popup::-webkit-scrollbar-thumb{background-color:#bdbdbd;background-color:var(--forge-theme-scrollbar-thumb,#bdbdbd);height:32px;height:var(--forge-scrollbar-min-height,32px);width:32px;width:var(--forge-scrollbar-min-width,32px);border-radius:10px;border-radius:var(--forge-scrollbar-border-radius,10px);border-width:3px;border-width:var(--forge-scrollbar-border-width,3px);border-style:solid;border-color:transparent;background-clip:content-box}.forge-popup::-webkit-scrollbar-thumb:hover{background-color:#9e9e9e;background-color:var(--forge-theme-scrollbar-thumb-hover,#9e9e9e)}.forge-popup--opening{display:block;-webkit-transform:scale(.8);transform:scale(.8);opacity:0}.forge-popup--closed{display:block;opacity:0;-webkit-transition:opacity 120ms linear;transition:opacity 120ms linear}.forge-popup--open{display:block;-webkit-transform:scale(1);transform:scale(1);opacity:1}.forge-popup--select{border-top-left-radius:0;border-top-right-radius:0;max-height:256px;overflow-y:auto}:host{z-index:10;z-index:var(--forge-z-index-popup,10);border-radius:4px;border-radius:var(--mdc-shape-medium,4px);display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;position:absolute;overflow:visible}:host([hidden]){display:none}:host([constrain-viewport-width]){max-width:100vw}';
14
14
  /**
15
15
  * The web component class behind the `<forge-popup>` custom element.
16
16
  *
@@ -67,6 +67,9 @@ __decorate([
67
67
  __decorate([
68
68
  FoundationProperty()
69
69
  ], PopupComponent.prototype, "placement", void 0);
70
+ __decorate([
71
+ FoundationProperty()
72
+ ], PopupComponent.prototype, "fallbackPlacements", void 0);
70
73
  __decorate([
71
74
  FoundationProperty()
72
75
  ], PopupComponent.prototype, "open", void 0);
@@ -6,6 +6,7 @@
6
6
  import { BaseAdapter, IBaseAdapter } from '../core/base/base-adapter';
7
7
  import { IQuantityFieldComponent } from './quantity-field';
8
8
  export interface IQuantityFieldAdapter extends IBaseAdapter {
9
+ initializeButtons(): void;
9
10
  addRootClass(name: string): void;
10
11
  removeRootClass(name: string): void;
11
12
  inputHasAttribute(name: string): boolean;
@@ -38,6 +39,7 @@ export declare class QuantityFieldAdapter extends BaseAdapter<IQuantityFieldComp
38
39
  private _inputElement;
39
40
  private _inputAttributeMutationObserver;
40
41
  constructor(component: IQuantityFieldComponent);
42
+ initializeButtons(): void;
41
43
  addRootClass(name: string): void;
42
44
  removeRootClass(name: string): void;
43
45
  inputHasAttribute(name: string): boolean;
@@ -13,6 +13,14 @@ export class QuantityFieldAdapter extends BaseAdapter {
13
13
  this._incrementButtonSlot = getShadowElement(this._component, QUANTITY_FIELD_CONSTANTS.selectors.INCREMENT_BUTTON_SLOT);
14
14
  this._decrementButtonSlot = getShadowElement(this._component, QUANTITY_FIELD_CONSTANTS.selectors.DECREMENT_BUTTON_SLOT);
15
15
  }
16
+ initializeButtons() {
17
+ if (this._incrementButton && !this._incrementButton.hasAttribute('tabindex')) {
18
+ this._incrementButton.tabIndex = -1;
19
+ }
20
+ if (this._decrementButton && !this._decrementButton.hasAttribute('tabindex')) {
21
+ this._decrementButton.tabIndex = -1;
22
+ }
23
+ }
16
24
  addRootClass(name) {
17
25
  this._rootElement.classList.add(name);
18
26
  }
@@ -17,6 +17,7 @@ export class QuantityFieldFoundation {
17
17
  connect() {
18
18
  this._adapter.addInputDisabledAttributeChangeListener(() => this._syncDisabledStateOfButtons());
19
19
  this._syncDisabledStateOfButtons();
20
+ this._adapter.initializeButtons();
20
21
  }
21
22
  disconnect() {
22
23
  this._removeIncrementEventListener();
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { __decorate } from "tslib";
7
7
  import { CustomElement, attachShadowTemplate, coerceBoolean, FoundationProperty } from '@tylertech/forge-core';
8
+ import { tylIconRemoveCircleOutline, tylIconControlPoint } from '@tylertech/tyler-icons/standard';
8
9
  import { QuantityFieldAdapter } from './quantity-field-adapter';
9
10
  import { QuantityFieldFoundation } from './quantity-field-foundation';
10
11
  import { QUANTITY_FIELD_CONSTANTS } from './quantity-field-constants';
@@ -12,6 +13,7 @@ import { IconButtonComponent } from '../icon-button';
12
13
  import { BaseComponent } from '../core/base/base-component';
13
14
  const template = '<template><div class=\"forge-quantity-field\" part=\"root\"><slot name=\"label\"></slot><div class=\"forge-quantity-field__row\" part=\"row\"><slot name=\"decrement-button\"></slot><slot></slot><slot name=\"increment-button\"></slot></div><slot name=\"helper-text\"></slot></div></template>';
14
15
  const styles = '.forge-quantity-field ::slotted([slot=label]){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-quantity-field ::slotted([slot=helper-text]){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);height:1rem;color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-quantity-field ::slotted([slot=helper-text])::before{display:inline-block;width:0;height:16px;content:\"\";vertical-align:0}.forge-quantity-field__row{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center}.forge-quantity-field ::slotted(forge-icon-button:first-of-type){color:var(--mdc-theme-text-secondary-on-light);margin-right:4px}.forge-quantity-field ::slotted(forge-icon-button:last-of-type){color:var(--mdc-theme-text-secondary-on-light);margin-left:4px}.forge-quantity-field ::slotted(forge-text-field){--forge-text-field-margin-top:0;--forge-text-field-margin-bottom:0}.forge-quantity-field--required ::slotted([slot=label])::before{color:#b00020;color:var(--mdc-theme-error,#b00020);content:\"*\";margin-right:4px}.forge-quantity-field--invalid ::slotted([slot=label]){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-quantity-field--invalid ::slotted([slot=helper-text]){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);height:1rem;color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-quantity-field--invalid ::slotted([slot=helper-text])::before{display:inline-block;width:0;height:16px;content:\"\";vertical-align:0}:host{display:inline-block}:host([hidden]){display:none}';
16
+ import { IconRegistry } from '../icon';
15
17
  /**
16
18
  * The web component class behind the `<forge-quantity-field>` custom element.
17
19
  *
@@ -22,6 +24,10 @@ let QuantityFieldComponent = class QuantityFieldComponent extends BaseComponent
22
24
  super();
23
25
  attachShadowTemplate(this, template, styles);
24
26
  this._foundation = new QuantityFieldFoundation(new QuantityFieldAdapter(this));
27
+ IconRegistry.define([
28
+ tylIconRemoveCircleOutline,
29
+ tylIconControlPoint
30
+ ]);
25
31
  }
26
32
  static get observedAttributes() {
27
33
  return [
@@ -7,7 +7,7 @@ import { IRadioComponent } from './radio';
7
7
  import { ForgeRippleCapableSurface } from '../ripple';
8
8
  export interface IRadioAdapter {
9
9
  connect(): void;
10
- initializeRipple(): void;
10
+ deferRippleInitialization(): Promise<void>;
11
11
  destroyRipple(): void;
12
12
  setHostAttribute(name: string, value?: string): void;
13
13
  removeHostAttribute(name: string): void;
@@ -28,7 +28,7 @@ export interface IRadioAdapter {
28
28
  }
29
29
  export declare class RadioAdapter implements IRadioAdapter, ForgeRippleCapableSurface {
30
30
  private _component;
31
- private _shadowRoot;
31
+ private _rootElement;
32
32
  private _containerElement;
33
33
  private _nativeInputElement;
34
34
  private _inputAttributeMutationObserver?;
@@ -38,7 +38,7 @@ export declare class RadioAdapter implements IRadioAdapter, ForgeRippleCapableSu
38
38
  get unbounded(): boolean | undefined;
39
39
  get disabled(): boolean | undefined;
40
40
  connect(): void;
41
- initializeRipple(): void;
41
+ deferRippleInitialization(): Promise<void>;
42
42
  destroyRipple(): void;
43
43
  setHostAttribute(name: string, value?: string): void;
44
44
  removeHostAttribute(name: string): void;
@@ -6,15 +6,16 @@
6
6
  import { addClass, getShadowElement, removeClass, getActiveElement } from '@tylertech/forge-core';
7
7
  import { RADIO_CONSTANTS } from './radio-constants';
8
8
  import { ForgeRipple, ForgeRippleFoundation } from '../ripple';
9
+ import { userInteractionListener } from '../core/utils';
9
10
  export class RadioAdapter {
10
11
  constructor(_component) {
11
12
  this._component = _component;
12
- this._shadowRoot = getShadowElement(this._component, RADIO_CONSTANTS.selectors.RADIO);
13
+ this._rootElement = getShadowElement(this._component, RADIO_CONSTANTS.selectors.RADIO);
13
14
  this._containerElement = getShadowElement(this._component, RADIO_CONSTANTS.selectors.WRAPPER);
14
15
  }
15
16
  // ForgeRippleCapableSurface
16
17
  get root() {
17
- return this._shadowRoot;
18
+ return this._rootElement;
18
19
  }
19
20
  get unbounded() {
20
21
  return true;
@@ -28,18 +29,19 @@ export class RadioAdapter {
28
29
  labelElement.setAttribute(RADIO_CONSTANTS.attributes.SLOT, RADIO_CONSTANTS.selectors.LABEL);
29
30
  }
30
31
  }
31
- initializeRipple() {
32
- this._rippleInstance = this._createRipple();
33
- requestAnimationFrame(() => {
34
- if (this._rippleInstance) {
35
- this._rippleInstance.layout();
32
+ async deferRippleInitialization() {
33
+ const type = await userInteractionListener(this._rootElement);
34
+ if (!this._rippleInstance) {
35
+ this._rippleInstance = this._createRipple();
36
+ if (type === 'focusin') {
37
+ this._rippleInstance.handleFocus();
36
38
  }
37
- });
39
+ }
38
40
  }
39
41
  destroyRipple() {
40
- if (this._rippleInstance) {
41
- this._rippleInstance.destroy();
42
- }
42
+ var _a;
43
+ (_a = this._rippleInstance) === null || _a === void 0 ? void 0 : _a.destroy();
44
+ this._rippleInstance = undefined;
43
45
  }
44
46
  setHostAttribute(name, value = '') {
45
47
  this._component.setAttribute(name, value);
@@ -48,10 +50,10 @@ export class RadioAdapter {
48
50
  this._component.removeAttribute(name);
49
51
  }
50
52
  addRootClass(className) {
51
- this._shadowRoot.classList.add(className);
53
+ this._rootElement.classList.add(className);
52
54
  }
53
55
  removeRootClass(className) {
54
- this._shadowRoot.classList.remove(className);
56
+ this._rootElement.classList.remove(className);
55
57
  }
56
58
  addContainerClass(className) {
57
59
  this._containerElement.classList.add(className);
@@ -244,7 +246,7 @@ export class RadioAdapter {
244
246
  if (this._inputElement) {
245
247
  this._inputElement.addEventListener(evtType, handler, { passive: true });
246
248
  }
247
- }, isSurfaceDisabled: () => this._inputElement ? this._inputElement.disabled : false, addClass: (className) => addClass(className, this._shadowRoot), removeClass: (className) => removeClass(className, this._shadowRoot), updateCssVariable: (varName, value) => this._shadowRoot.style.setProperty(varName, value) });
248
- return new ForgeRipple(this._shadowRoot, new ForgeRippleFoundation(adapter));
249
+ }, isSurfaceDisabled: () => this._inputElement ? this._inputElement.disabled : false, addClass: (className) => addClass(className, this._rootElement), removeClass: (className) => removeClass(className, this._rootElement), updateCssVariable: (varName, value) => this._rootElement.style.setProperty(varName, value) });
250
+ return new ForgeRipple(this._rootElement, new ForgeRippleFoundation(adapter));
249
251
  }
250
252
  }
@@ -11,7 +11,7 @@ export class RadioFoundation {
11
11
  }
12
12
  connect() {
13
13
  this._adapter.connect();
14
- this._adapter.initializeRipple();
14
+ this._adapter.deferRippleInitialization();
15
15
  this._focusListenerCallback = () => this._adapter.syncFocusedStateWithInput();
16
16
  this._disabledListenerCallback = () => this._adapter.syncDisabledStateWithInput();
17
17
  this._syncRadiogroupCheckStyles = () => this._adapter.syncRadiogroupCheckStyles();
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { MDCRipple, type MDCRippleAdapter, MDCRippleFoundation, type MDCRippleCapableSurface } from '@material/ripple';
7
7
  export declare class ForgeRipple extends MDCRipple {
8
+ handleFocus(): void;
8
9
  }
9
10
  export declare class ForgeRippleFoundation extends MDCRippleFoundation {
10
11
  }
@@ -5,6 +5,9 @@
5
5
  */
6
6
  import { MDCRipple, MDCRippleFoundation } from '@material/ripple';
7
7
  export class ForgeRipple extends MDCRipple {
8
+ handleFocus() {
9
+ this.foundation.handleFocus();
10
+ }
8
11
  }
9
12
  export class ForgeRippleFoundation extends MDCRippleFoundation {
10
13
  }
@@ -11,5 +11,6 @@ export declare const RIPPLE_CONSTANTS: {
11
11
  attributes: {
12
12
  TARGET: string;
13
13
  UNBOUNDED: string;
14
+ SELECTED: string;
14
15
  };
15
16
  };
@@ -10,7 +10,8 @@ const classes = {
10
10
  };
11
11
  const attributes = {
12
12
  TARGET: 'target',
13
- UNBOUNDED: 'unbounded'
13
+ UNBOUNDED: 'unbounded',
14
+ SELECTED: 'selected'
14
15
  };
15
16
  export const RIPPLE_CONSTANTS = {
16
17
  elementName,
@@ -8,6 +8,7 @@ import { IRippleAdapter } from './ripple-adapter';
8
8
  export interface IRippleFoundation extends ICustomElementFoundation {
9
9
  target: string;
10
10
  unbounded: boolean;
11
+ selected: boolean;
11
12
  layout(): void;
12
13
  activate(): void;
13
14
  deactivate(): void;
@@ -16,6 +17,7 @@ export declare class RippleFoundation implements IRippleFoundation {
16
17
  private _adapter;
17
18
  private _target;
18
19
  private _unbounded;
20
+ private _selected;
19
21
  constructor(_adapter: IRippleAdapter);
20
22
  initialize(): void;
21
23
  disconnect(): void;
@@ -27,4 +29,6 @@ export declare class RippleFoundation implements IRippleFoundation {
27
29
  set target(value: string);
28
30
  get unbounded(): boolean;
29
31
  set unbounded(value: boolean);
32
+ get selected(): boolean;
33
+ set selected(value: boolean);
30
34
  }
@@ -7,6 +7,7 @@ export class RippleFoundation {
7
7
  constructor(_adapter) {
8
8
  this._adapter = _adapter;
9
9
  this._unbounded = false;
10
+ this._selected = false;
10
11
  }
11
12
  initialize() {
12
13
  this._adapter.initialize(this._target, this._unbounded);
@@ -45,4 +46,13 @@ export class RippleFoundation {
45
46
  this._applyTarget();
46
47
  }
47
48
  }
49
+ get selected() {
50
+ return this._selected;
51
+ }
52
+ set selected(value) {
53
+ if (this._selected !== value) {
54
+ this._selected = value;
55
+ // this._applySelected();
56
+ }
57
+ }
48
58
  }
@@ -7,6 +7,7 @@ import { BaseComponent, IBaseComponent } from '../core/base/base-component';
7
7
  export interface IRippleComponent extends IBaseComponent {
8
8
  target: string;
9
9
  unbounded: boolean;
10
+ selected: boolean;
10
11
  layout(): void;
11
12
  activate(): void;
12
13
  deactivate(): void;
@@ -33,4 +34,5 @@ export declare class RippleComponent extends BaseComponent implements IRippleCom
33
34
  deactivate(): void;
34
35
  target: string;
35
36
  unbounded: boolean;
37
+ selected: boolean;
36
38
  }